容器

线程与操作系统 vs 容器与K8s

别等时光非礼了梦想. 提交于 2020-02-02 07:29:19
本篇作为上一篇 mysql指引(三):mysql线程处理模型 的一个短篇补充,站在某种角度简要来说明下线程与操作系统的联系,以及和容器与K8S的联系做对比看下。 图中,直接忽略了进程,认为线程是操作系统调度的最小单位。 站在设计者的角度,当编写好程序后,不论是否显示的创建线程,我们的所有代码肯定是运行在同一个线程或者多个线程上的(视代码如何编写)。当程序运行起来后,就和我们无关了。 站在线程的角度,设计者对于线程的作用就是声明了线程的功能,即给这个线程指派了任务。但是这个线程具体如何执行,如何完成这些任务,就需要操作系统的管理。 站在操作系统的角度,线程就是系统要管理的最小工作单元。操作系统要尽力保证利用目前的硬件资源(CPU、内存等)来执行这些线程,也就是通过硬件资源的调度,来让线程认为它是独立运行的,即认为是独享这些硬件资源。 站在这样的角度,再回顾上文提到的 One-Thread-Per-Connection 模型,每个连接都创建一个线程来管理。那么操作系统需要管理这么多的线程,但是硬件资源就这么点,线程单元却有这么多个,操作系统需要耗费非常大的精力来保证管理和调度的正常运行。 但是采用了其他并发模型,线程数大大减少,操作系统的管理和调度压力也会变小,线程工作单元也会更加高效。 同理,对于近三年大热的K8S 和 Docker 容器来说,他俩之间的关系也可以套用到这张图中

Docker容器互联

时间秒杀一切 提交于 2020-02-02 05:44:03
使用–link可以使容器之间安全的交互 # 创建一个postgres 数据库容器 docker run -d --name db postgres # 创建数据库db容器时,没有使用-p -P ,避免了暴露数据库端口 # 创建一个web容器并将它连到db容器 docker run -d -P --name web --link db:db webapp python app.py # 两个容器之间相当于创建了一个虚拟通道,而不用映射他们的端口到宿主机上 来源: CSDN 作者: lishunxi0519 链接: https://blog.csdn.net/lishunxi0519/article/details/104132184

C++|vector容器相关基本

ε祈祈猫儿з 提交于 2020-02-02 05:04:48
标准库类型vector 标准库类型vector表示对象的集合,其中所有对象的类型都相同。因为vector“容纳着”其他对象,所以它也被称作容器。 1、vector的使用 头文件: #include <vector> vector是一个类模板 :编译器根据模板创建类或函数的过程称为实例化,当使用模板时,需要指出编译器应把类或函数实例化成何种类型。 例如: vector < int > ivec ; //ivec中保存了int类型的对象 vector < Sales_item > Sales_vec ; //Sales_vec中保存了Sales_item类型的对象 vector < vector < string >> file ; //file中保存的是vector对象 ***备注:* 某些编译器可能仍需要以老式的声明语句来处理元素为vector的vector对象。 例如: vector < vector < int > > 2、vector对象的定义和初始化 vector < T > v1 //v1是一个空vetor,执行默认初始化 vector < T > v2 ( v1 ) //v2中包含v1所有元素的副本,即是使用v1对v2进行初始化 vector < T > v2 = v1 //等价于v2(v1) vector < T > v3 ( n , val ) /

Docker容器常用命令

半城伤御伤魂 提交于 2020-02-02 03:56:59
1、创建并启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 例如: docker run -it --name mycentos centos --name="容器新名字":为容器指定一个名称; -i:以交互模式运行容器,通常与-t或者-d同时使用; -t:为容器重新分配一个伪输入终端,通常与-i同时使用; -d: 后台运行容器,并返回容器ID; -P: 随机端口映射,容器内部端口随机映射到主机的端口 -p: 指定端口映射,格式为:主机(宿主)端口:容器端口 1、启动普通容器: docker run --name 别名 镜像ID 2、启动交互式容器: docker run -it --name 别名 镜像ID 来运行一个容器,取别名,交互模式运行,以及分配一个伪终端 3、守护式方式创建并启动容器:docker run -di --name 别名 镜像ID 4、启动容器,并执行/bin/bash命令:docker run -it --name 别名 镜像ID /bin/bash命令 5、端口映射: docker run -it -p 8888:8080 tomcat docker run -it -P tomcat 2、列出容器 docker ps [OPTIONS] -a :显示所有的容器,包括未运行的。 -f

spring框架的学习

亡梦爱人 提交于 2020-02-02 02:58:14
什么是spring? spring是一个一站式轻量级开源框架,目的是解决企业级应用开发中业务逻辑层与其他各层之间的耦合问题。 组成spring框架的七大模块:核心容器(Core Container),数据访问/集成(Data Access/Integration),Web层,Aop(面向切面编程)模块,植入(Instrumentation)模块,消息传递(messaging)模块和Test(测试)模块。 什么是springIoC? IoC即控制反转,是spring框架的核心,用来削减计算机程序的耦合问题。 怎样理解控制反转? 当某个java对象(调用者,例如我们程序员)调用另一个java对象(被调用者)时,在传统模式下,调用者会采用"new"被调用者的方式来创建对象,而在spring框架中,对象的实例化不在由调用者来执行,而是交由spring容器来创建,spring容器会负责控制程序之间的关系,而不是由调用者的程序直接控制,这样创建对象的控制权由调用者转移到spring容器,控制权发生反转,这就是所谓的控制反转。这样能够减少调用者和被调用者之间的耦合性,有利于后期代码的维护。 现实生活也可以理解为当你饿的时候你自己可以做饭吃,而饭是你自己做的,饭相当于被调用者对象,而现在饭店盛行,甚至还有外卖,当你饿的时候,你可以选择点外卖,而外卖的饭是饭店做的,饭店相当于spring容器。

java并发编程之五、工具类

断了今生、忘了曾经 提交于 2020-02-01 23:58:06
java在线程同步和互斥方面在语言和工具方面都提供了相应的支撑,与此同时,java还提供了一系列的并发容器和原子类,来使得并发编程更容易。 一。并发容器 (一)。同步容器 同步容器指的是容器本身使用synchronized关键字来同步访问,包括我们都知道的HashTable,也包括Vector和Stack。另外,也可以通过工具类Collections. synchronizedList ( List <T> list)这个方法将线程不安全的ArrayList转成线程安全的包装类,其他的set,map等等,都有类似的包装类。 通常都任务同步容器的性能较差,但不足以导致问题,会导致问题的是对同步容易的迭代遍历。在迭代遍历的时候,依然需要对同步容器本身进行加锁才能保证线程安全。 1 List list = Collections.synchronizedList(new ArrayList()); 2 synchronized (list) { 3 Iterator i = list.iterator(); 4 while (i.hasNext()) 5 foo(i.next()); 6 } (二)。并发容器 同步容器的线程安全的保证主要是通过对所有的访问路径添加synchronized保护,往往造成性能不佳,所以在java 1.5之后,提供了更多的性能比较优秀的容器,这里称之为并发容器

docker容器互访

梦想的初衷 提交于 2020-02-01 23:15:57
1、创建bridge网络 docker network create mytest docker network ls --列举network列表 2、运行容器连接到mytest网络。 docker run -it --name <容器名> ---network <bridge> --network-alias <网络别名> <镜像名> 3、从一个容器ping另外一个容器,进入docker容器后ping: docker -it exec 容器名 /bin/bash 4、若访问容器中服务,可以使用这用方式访问 <网络别名>:<服务端口号> 推荐使用这种方法,自定义网络,因为使用的是网络别名,可以不用顾虑ip是否变动,只要连接到docker内部bright网络即可互访。bridge也可以建立多个,隔离在不同的网段。 来源: CSDN 作者: colan_liang 链接: https://blog.csdn.net/colan_liang/article/details/104138565

bean scope scoped-proxy

两盒软妹~` 提交于 2020-02-01 18:03:47
1. singleton 配置中的bean定义可以看作是一个模板,容器会根据这个模板来构造对象。但是要根据这个模板构造多少对象实例,又该让这些构造完的对象实例存活多久,则由容器根据bean定义的scope语意来决定。标记为拥有singleton scope的对象定义,在Spring的IoC容器中只存在一个实例,所有对该对象的引用将共享这个实例。该实例从容器启动,并因为第一次被请求而初始化之后,将一直存活到容器退出,也就是说,它与IoC容器"几乎"拥有相同的"寿命"。 需要注意的一点是,不要因为名字的原因而与GoF 所提出的Singleton模式相混淆,二者的语意是不同的: 标记为singleton的bean是由容器来保证这种类型的bean在同一个容器中只存在一个共享实例; 而Singleton模式则是保证在同一个Classloader中只存在一个这种类型的实例。 可以从两个方面来看待singleton的bean所具有的特性。 对象实例数量。singleton类型的bean定义,在一个容器中只存在一个共享实例,所有对该类型bean的依赖都引用这一单一实例。这就好像每个幼儿园都会有一个滑梯一样,这个幼儿园的小朋友共同使用这一个滑梯。而对于该幼儿园容器来说,滑梯实际上就是一个singleton的bean。 对象存活时间。singleton类型bean定义,从容器启动

Spring中bean的scope

為{幸葍}努か 提交于 2020-02-01 18:03:35
Spring容器中的bean具备不同的scope,最开始只有singleton和prototype,但是在2.0之后,又引入了三种类型:request、session和global session,不过这三种类型只能在Web应用中使用。 在定义bean的时候,可以通过指定<bean>的singleton或者scope属性来指定相应对象的scope,例如: 或者 一、Singleton 配置中的bean定义可以看作是一个模板,容器会根据这个模板来构造对象。bean定义中的scope语义会决定:容器将根据这个模板构造多少对象实例,又该让这个对象实例存活多久。标记为拥有singleton scope的对象定义,在Spring的IoC容器中只存在一个对象实例,所有该对象的引用都共享这个实例。该实例从容器启动,并因为第一次被请求而初始化之后,将一直存活到容器退出,也就是说,它与IoC容器“几乎”拥有相同的“寿命”。 下图是Spring参考文档中给出的singleton的bean的实例化和注入语义示意图,或许更能形象得说明问题 二、Prototype 针对声明为拥有prototype scope的bean定义,容器在接到该类型对象的请求的时候,会每次都重新生成一个新的实例对象给请求方。虽然这种类型的对象的实例化以及属性设置等工作都是由容器负责的,但是只要准备完毕,并且对象实例返回请求方之后

Spring IOC 和 AOP

人走茶凉 提交于 2020-02-01 15:26:24
一.  IOC   1. 概念及原理   IOC: Inversion of Control(控制反转)是一种设计思想,就是容器控制应用程序所需要的外部资源的创建和管理,然后将其反转给应用程序.对象及其依赖对象的创建及维护都不需要在应用程序中实现,将其交给IOC容器去管理.传统的开发中,我们自己在对象内部创建依赖对象注入当前对象,完成依赖关系的维护;对于IOC而言,他强调是将主动变为被动,由IOC容器来负责依赖对象的创建和查找,由IOC容器来进行注入组合对象,我们只需要在相关的配置文件中维护对象的依赖关系即可.   DI: Dependency Injecton,即"依赖注入".其实IOC和DI本就是同一个概念的两种不同的表述,应用程序依赖容器提供的外部对象,容器将其依赖的外部资源在运行期注入到应用程序中;某个对象被调用时,其所依赖的对象由容器注入;   2. 优点   第一: 资源集中管理,实现资源的可配置和易管理,降低对象关系维护的复杂度.   第二: 降低了使用资源双方的依赖程度,也就是我们说的耦合度. 二.  AOP   1. 概念   AOP面向切面,是一种编程思想,AOP将软件系统分为两个部分,核心业务和扩展业务,在不改变原有代码的基础上,给核心业务添加扩展功能,即OCP原则.   2. 实现方式   实现AOP的技术,主要分为两大类:   一 是采用动态代理技术