容器

Tomcat 组件

落爺英雄遲暮 提交于 2019-12-27 17:00:44
首先,从tomcat官网下载9.0.27的源码包,然后再在对应目录里执行 ant 命令,会下载到所需的依赖。将源码导入的 eclipse 里,将 ant 下载的依赖 jar 包添加到 buildPath 里,再将 jre/lib/jce.jar 也添加进去,执行 Bootstrap 的 main 方法启动 tomcat 。 组件 Server接口是“服务器组件”,它负责服务器的启动、终止。 Service接口是“服务组件”,它负责load连接器,把连接器组件连接容器中。 Engine接口是servlet引擎,它负责初始化/启动下属容器,以及初始化/启动连接器组件。 Host接口是虚拟主机组件,它负责拦截过滤请求,它的生命周期监听器HostConfig会对war文件等进行部署。 Context代表一个具体的Web应用程序,它的生命周期监听器ContextListener会对属性进行配置。 Wrapper代表一个具体的Servlet,它负责管理对应Servlet的声明周期。 组件详情 Server 代表整个Catalina Servlet容器。Server并不是一个Container,它没有实现Container接口或者继承ContainerBase类,但它有生命周期。Server用来启动、停止Catalina,它的address属性指明了监听命令的地址, port

nginx-consul-template

懵懂的女人 提交于 2019-12-27 16:45:59
概述 Consul-template 是 HashiCorp 基于 Consul 所提供的可扩展的工具,通过监听 Consul中的数据变化,动态地修改一些配置文件中地模板。常用于在 Nginx、HAProxy上动态 配置健康状态下的客户端反向代理信息。 Consul-template 和 nginx 必须安装在同一台机器上,因为 Consul-template 需要动态修改 nginx 的配置文件 nginx.conf,然后执行 nginx -s reload命令进行路由更新,达到动态负载均衡的目的。 nginx-ingress是我自己命名的(实现原理跟k8s的ingress一样),因为此nginx主要是负责访问calico网络内的负载均衡,且calico不支持http协议的穿透,所以外部需要跟inress,通讯的话必须在中间再创建一个nginx-host作为转发,后面会介绍。 原理 通过 Nginx 自身实现负载均衡和请求转发; 通过 Consul-template 的 config 功能实时监控 Consul 集群节点的服务和数据的变化; 实时的用 Consul 节点的信息替换 Nginx 配置文件的模板,并重新加载配置文件; 下载nginx镜像 docker pull docker.io/nginx:latest    创建nginx脚本 官方及网上大部分的启动nginx

docker的安装/容器及镜像操作

谁说胖子不能爱 提交于 2019-12-27 13:56:30
docker的安装 Centos7.6 #step 1: 安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2 #Step 2: 添加软件源信息 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum makecache fast yum -y install docker-ce #Step 4: 开启Docker服务 systemctl restart docker 1. 配置docker的yum源,可以使用阿里云的 2. 安装docker-ce yum -y install docker-ce 3.关闭防火墙 systemctl stop firewalld setenforce 4.启动Docker systemctl start docker systemctl enable docker 镜像的操作 docker pull 拉取镜像 docker images 查看本地的镜像 docker rmi 删除镜像 容器的操作 docker run 下载、创建、运行一个容器 docker ps 查看正在运行的容器 docker start 启动容器

Spring容器的refresh()介绍

让人想犯罪 __ 提交于 2019-12-27 10:53:36
  Spring容器的refresh()【创建刷新】;   1、prepareRefresh()刷新前的预处理;   1)、initPropertySources()初始化一些属性设置;子类自定义个性化的属性设置方法;   2)、getEnvironment().validateRequiredProperties();检验属性的合法等   3)、earlyApplicationEvents= new LinkedHashSet();保存容器中的一些早期的事件;   2、obtainFreshBeanFactory();获取BeanFactory;   1)、refreshBeanFactory();刷新【创建】BeanFactory;   创建了一个this.beanFactory = new DefaultListableBeanFactory();   设置id;   2)、getBeanFactory();返回刚才GenericApplicationContext创建的BeanFactory对象;   3)、将创建的BeanFactory【DefaultListableBeanFactory】返回;   3、prepareBeanFactory(beanFactory);BeanFactory的预准备工作(BeanFactory进行一些设置);   1)

k8s存储卷

試著忘記壹切 提交于 2019-12-27 10:21:00
1.emptyDir存储卷 apiVersion: v1 kind: Pod metadata: name: cunchujuan spec: containers: - name: myapp #定义第一容器用于显示index.html文件内容 image: ikubernetes/myapp:v1 imagePullPolicy: IfNotPresent volumeMounts: #调用存储卷 - name: html #使用存储卷的名称要和下面定义的一样 mountPath: /usr/share/nginx/html/ #在容器内部挂载的路径 - name: busybox #定义第二个容器用于产生index.html内容 image: busybox:latest imagePullPolicy: IfNotPresent volumeMounts: - name: html mountPath: /data/ command: ['/bin/sh','-c','while true;do echo $(date) >> /data/index.html;sleep 2;done'] #该命令会不停向,存储卷的index.html文件追加时间 volumes: #定义存储卷 - name: html #定义存储卷名称 emptyDir: {} #定义存储卷类型 在上面

Docker(七):Docker容器卷管理

三世轮回 提交于 2019-12-27 06:22:11
1、使用容器卷的原因:Docker容器产生的数据,如果不通过commit生成新的镜像,数据会在容器删除后丢失。为了能持久化保存和共享容器的数据,Docker提出了两种管理数据的方式:数据卷和数据卷容器。 2、数据卷操作   2.1 增加新数据卷     docker run -d -v /tmpd/busyboxtest --name busyboxtest busybox     -v参数会在容器的/tmp/busybox下创建一个新的容器卷     通过docker inspect命令查看数据卷的位置     docker inspect busyboxtest | grep volumes       "/tmp/busyboxtest": "/var/lib/docker/volumes/577784c9e8aa3fba15ebf56ee680b6fea50aafe60bd753b64c3699e461fa3e39/_data"   2.2 将主机目录挂载为数据卷     docker run -tid -v /tmp/volumetest:/data:ro --name busyboxtest2 busybox     将宿主机的/tmp/volumetest以ro的方式挂载在/data下        2.3 创建数据卷容器    

Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例?

房东的猫 提交于 2019-12-27 05:32:08
这里是修真院后端小课堂,每篇分享文从 【背景介绍】【知识剖析】【常见问题】【解决方案】【编码实战】【扩展思考】【更多讨论】【参考文献】 八个方面深度解析后端知识/技能,本篇分享的是: Spring中的IOC是什么意思,为什么要用IOC而不是New来创建实例? 一.背景介绍 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring的核心是控制反转(IoC)和面向切面(AOP)。 二.知识剖析 什么是反转控制(IOC)? 是一种是面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度。其基本思想是:借助于“ 第三方”实现具有依赖关系的对象之间的解耦。 通过控制反转客户端不需要再主动创建对象,只需要通过IOC,由IOC去创建就可以了 由应用程序创建对象转变为由IOC容器来创建,用于控制创建对象的主体发生了改变,这是控制反转 应用程序需要的对象信息由IOC容器创建后注入,也就是说依赖于容器来注入,这是依赖注入 表达的是一个东西,只是描述的角度不同。 IOC,从容器的角度出发,容器反向控制应用程序对象的创建。 DI,从应用程序的角度出发,应用程序需要依赖容器注入对象。 三

[iOS面试] 理解 copy

牧云@^-^@ 提交于 2019-12-27 05:27:02
前言 NSObject 有 copy 和 mutableCopy 两个成员。这两个函数是分别直接返回 copyWithZone 和 mutableCopyWithZone 的返回值。 因此,如果调用者没有实现 copyWithZone 或 mutableCopyWithZone,肯定会报错:unrecognized selector。 这两个函数,就分别是 NSCopying,NSMutableCopying 协议的成员。 (注意,不是这个: + (id)copyWithZone:(struct _NSZone *)zone OBJC_ARC_UNAVAILABLE; 这个是 MRC 项目可用,ARC 下直接无视该函数,涉及到 Zone 都用 null) 基础框架里的类,很多都实现了 NSCopying,NSMutableCopying,例如 NSString 可以调用 copy 而不报错。那么,这些基础框架是具体怎么实现的这两个协议,才导致了所谓的 “深浅拷贝” ?数组的 [[NSArray alloc] initWithArray: copyItems: ] 到底是干什么的? strong 与 copy 到底用哪个?这些是本文将要回答的。 copy 和 mutableCopy 不可变对象的 copy:指针复制 指针到底是什么?指针本质上是一个 size_t 大小的一个数

kubernetes_pod

坚强是说给别人听的谎言 提交于 2019-12-27 05:05:08
Kubernetes Pod Kubernetes中调度的最基本单位Pod。 kube-controller-manager用来控制Pod的状态和生命周期。 Pod代表着集群中运行的进程。 Pod组成 每个pod都有一个根容器,Pause容器。 Pause容器,又叫Infra容器,官方使用的是 gcr.io/google_containers/pause-amd64:3.0 容器,也可以自己定义。kubernetes中的pause容器主要为每个业务容器提供以下功能: 在pod中担任Linux命名空间共享的基础; 启用pid命名空间,开启init进程。 Pause容器对应的镜像属于Kubernetes平台的一部分,除了Pasuse容器,每个Pod还包含一个或多个紧密相关的用户业务容器。用户业务容器可以只有一个也可以有多个: 一个Pod中运行一个容器 。“每个Pod中一个容器”的模式是最常见的用法;在这种使用方式中,你可以把Pod想象成是单个容器的封装,kuberentes管理的是Pod而不是直接管理容器。 在一个Pod中同时运行多个容器 。一个Pod中也可以同时封装几个需要紧密耦合互相协作的容器,它们之间共享资源。 Kubernetes为每个Pod都分配了IP,为Pod IP,一个Pod里的多个容器共享Pod IP地址

Thinking in Java:容器深入研究

て烟熏妆下的殇ゞ 提交于 2019-12-27 04:56:07
1.虚线框表示Abstract类,图中大量的类的名字都是以Abstract开头的,它们仅仅是部分实现了特定接口的工具,因此创建时能够选择从Abstract继承。 Collections中的实用方法:挑几个经常使用的: 1. reverse(List):逆转次序 2. rotate(List,int distance)全部元素向后移动distance个位置,将末尾元素循环到前面来(用了三次reverse) 3.sort(List,Comparator) 排序,可依照自己的Comparator 4.copy(List dest,List src) 复制元素(引用) 5.fill(List,T x)同Arrays一样。复制的是同一引用 6.disjoint(Collection。Collection) 两个集合没有不论什么元素时返回ture 7.frequency(Collection, Object x)返回Collection中等于x的元素个数 8.binarySearch()折半查找(要求有序) Collection的功能方法: boolean add(T) 可选方法 。若没将參数加入进容器,则false boolean addAll(Collection ) 可选方法 ,仅仅要加入了随意元素就true void clear() 可选方法 boolean contains(T)