Container、Injection

Container:

  容器技术是Linux Container的直译。Container有集装箱、容器的含义。集装箱的特色,在于格式划一,并且可以层层重叠,所以可以大量放置在特别设计的远洋轮船中,这样大大提高了输出效率,有了集装箱,就可以更快恶的为生产商提供廉价的运输服务。

  Linux Container容器技术的诞生(2008年)就解决了IT世界里“集装箱运输”的问题。Linux Container(简称LXC)它是一种内核轻量级的操作系统层虚拟化技术。Linux Container主要由Namespace和Cgroup两大机制来保证实现。那么Namespace和Cgroup是什么呢?刚才我们上面提到了集装箱,集装箱的作用当然是可以对货物进行打包隔离了,不让A公司的货跟B公司的货混在一起,不然卸货就分不清楚了。那么Namespace也是一样的作用,做隔离。光有隔离还没用,我们还需要对货物进行资源的管理。同样的,航运码头也有这样的管理机制:货物用什么样规格大小的集装箱,货物用多少个集装箱,货物哪些优先运走,遇到极端天气怎么暂停运输服务怎么改航道等等... 通用的,与此对应的Cgroup就负责资源管理控制作用,比如进程组使用CPU/MEM的限制,进程组的优先级控制,进程组的挂起和恢复等等。

Java容器: 

  相似的,docker容器中如果装的是app,java容器中装载的就是组件 ,而容器之外的程序需要和这些组件交互必须通过容器 。

  举个例子,IE发送了一个请求给容器,容器通过调用其中的一个组件进行相关处理之后将结果反馈给IE,这种与客户端软件交互的组件就叫做servlet

组件:

  组件其实就是一个应用程序块 。但是它们不是完整的应用程序,不能单独运行 。就有如一辆汽车,车门是一个组件,车灯也是一个组件 。但是光有车灯车门没有用,它们不能跑上公路 。在java中这些组件就叫做javabean,有点像微软以前的com组件 。

  要特别说明的是,由于任何一个java文件编译以后都是以类的形式存在 。所以javabean肯定也是一个类,这是毫无疑问的。

Injection:

  

Java的依赖注入:依赖注入,出自spring的IOC和DI,是Spring的两大特性之一(另一个AOP面向切面编程)

  以前对象使我们手动实例化,比如:Service层调用Dao层,需要Dao d = new Dao;但是这样会导致两个层之间的耦合性大大增强。而spring的IOC,反转控制,会在我们需要实例对象的时候,由spring容器为我们提供,并通过DI依赖注入来实现目标对象的获得,完成解耦操作。

  可以通过setter方法注入、构造注入、注解注入。  依赖注入是Spring的思想,在使用Spring进行开发时,可以将对象交给spring进行管理,在初始化时spring创建一批对象,当你需要用的时候只要从spring的容器中获取对象,而不用自己去new,当然在对象创建的时候可以注入另一个对象。比如A,B两个对象都由spring管理,A中持有对B的引用,那么spring在生成A对象的时候就已经吧B对象的一个实例给到A了,当你在A中用到B的时候直接使用就可以了。

  

对于未来技术的预测:

  容器技术应该会越来越强大,并且能够适应更多的环境,做出相应的选择,即更加的智能化。可能会根据人工智能的发展做出更加智能的Container Master?

原文地址:https://www.cnblogs.com/Teay/p/10549783.html

时间: 2024-11-14 19:50:56

Container、Injection的相关文章

为什么会出现container、injection技术?发展历史及未来发展趋势

container 原因: 随着软件开发的发展,相比于早期的集中式应用部署方式,现在的应用基本都是采用分布式的部署方式,一个应用可能包含多种服务或多个模块,因此多种服务可能部署在多种环境中,如虚拟服务器.公有云.私有云等,由于多种服务之间存在一些依赖关系,所以可能存在应用在运行过程中的动态迁移问题,那这时如何保证不同服务在不同环境中都能平滑的适配,不需要根据环境的不同而去进行相应的定制,就显得尤为重要.而container技术和虚拟机一样,容器技术也是一种资源隔离的虚拟化技术,容器概念始于 19

Container and Injection

Container 广义上讲容器是用来包装或装载物品的贮存器(如箱.罐.坛)或者成形或柔软不成形的包覆材料.在编程领域中,容器提供组件运行的环境,容器本身可以提供一组服务,让组件按标准方式利用. Spring 提供容器功能,容器可以管理对象的生命周期.对象与对象之间的依赖关系,您可以使用一个配置文件(通常是XML),在上面定义好对象的名称.如何产生(Prototype 方式或Singleton 方式).哪个对象产生之后必须设定成为某个对象的属性等,在启动容器之后,所有的对象都可以直接取用,不用编

Analysis of container and Injection in Java, their history and future.

Container: 发展历程: 2000 年的时候 FreeBSD 开发了一个类似于 chroot 的容器技术 Jails,这是最早期,也是功能最多的容器技术.Jails 英译过来是监狱的意思,这个“监狱”(用沙盒更为准确)包含了文件系统.用户.网络.进程等的隔离. 2001 Linux 也发布自己的容器技术 Linux VServer,2004 Solaris 也发布了 Solaris Containers,两者都将资源进行划分,形成一个个 zones,又叫做虚拟服务器. 2005 年推出

bootstrap :row、container、container-fluid

在使用bootstrap的过程中发现单独使用row类布局时,整个页面宽度总是大于100%,导致浏览器出现滚动条,这是大多数情况不想看到的效果,而且半天找不出原因,如果习惯写完整个页面结构才检查bug的"坏习惯" 之后发现 控件或者container控件下面,则不会出现滚动条 为此, 查看了bootstrap对row 和 container-fluid.container 的栅栏系统的解释 来自为知笔记(Wiz)

Bootstrap《第一篇》,关于container、jumbotron、row、col、text-center等的学习

一.关于引入bootstrap文件 <!-- 为了确保适当的绘制和触屏缩放,需要在 <head> 之中添加 viewport 元数据标签. --> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- 新 Bootstrap 核心 CSS 文件 --> <link rel="stylesheet"

container和injection

1.容器的历史 容器概念始于 1979 年提出的 UNIX chroot,它是一个 UNIX 操作系统的系统调用,将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到这个新的位置,从而达到了进程隔离的目的. 2000 年的时候 FreeBSD 开发了一个类似于 chroot 的容器技术 Jails,这是最早期,也是功能最多的容器技术.Jails 英译过来是监狱的意思,这个“监狱”(用沙盒更为准确)包含了文件系统.用户.网络.进程等的隔离. 2001 Linux 也发布自

Java 图形用户界面之javax.swing包(四) Container、JComponent、JApplet

Class Container 实现的接口有ImageObserver , MenuContainer , Serializable 已知直接子类BasicSplitPaneDivider , CellRendererPane , DefaultTreeCellEditor.EditorContainer , JComponent , Panel , ScrollPane , Window 继承Component 该类是在java.awt包中的 通用抽象窗口工具包(AWT)容器对象是可以包含其他

反射机制、依赖注入、控制反转

反射机制 正向: 代码->dll, 先编码, 定义好类,通过实例化对象来调用之. 反向: dll->类[方法,属性]. 从已经有的dll文件反编译得到其中的一些可用的方法. 审查元数据并收集关于它的类型信息的能力.元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等. System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码. 反射是.Net中获取 运行时类型信息的方式,.Ne

Python 迭代对象、迭代器、生成器详解

在了解Python的数据结构时,容器(container).可迭代对象(iterable).迭代器(iterator).生成器(generator).列表/集合/字典推导式(list,set,dict comprehension)众多概念参杂在一起,难免让初学者一头雾水,本文将一一为大家进行介绍,希望对大家学习python有所帮助. 容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用 in ,  not in 关键字判断元素是否包含在容器