容器

Java同步容器和并发容器

穿精又带淫゛_ 提交于 2020-04-06 21:28:57
同步容器 Java常用的容器有ArrayList、LinkedList、HashMap等等,这些容器都是非线程安全的。 如果有多个线程并发地访问这些容器时,就会出现问题。 因此,在编写程序时,必须要求程序员手动地在任何访问到这些容器的地方进行同步处理,这样导致在使用这些容器的时候非常地不方便。 所以,Java提供了同步容器供用户使用。 在Java中,同步容器主要包括2类: 1)Vector、Stack、HashTable Vector实现了List接口,Vector实际上就是一个数组,和ArrayList类似,但是Vector中的方法都是synchronized方法,即进行了同步措施。 Stack也是一个同步容器,它的方法也用synchronized进行了同步,它实际上是继承于Vector类。 HashTable实现了Map接口,它和HashMap很相似,但是HashTable进行了同步处理,而HashMap没有。 2)Collections类中提供的静态工厂方法创建的类 Collections类是一个工具提供类。在Collections类中提供了大量的方法,比如对集合或者容器进行排序、查找等操作。更重要的是,在它里面提供了几个静态工厂方法来创建同步容器类,如下图所示: 从同步容器的具体实现源码可知,同步容器中的方法采用了synchronized进行了同步

<context-param>配置

∥☆過路亽.° 提交于 2020-04-06 17:21:24
Web.xml配置详解之context-param < context-param > < param-name > contextConfigLocation </ param-name > < param-value > contextConfigLocationValue> </ param-value > </ context-param > 作用:该元素用来声明应用范围(整个WEB项目)内的上下文初始化参数。 param-name 设定上下文的参数名称。必须是唯一名称 param-value 设定的参数名称的值 初始化过程: 在启动Web项目时,容器(比如Tomcat)会读web.xml配置文件中的两个节点<listener>和<contex-param>。 接着容器会创建一个ServletContext(上下文),应用范围内即整个WEB项目都能使用这个上下文。 接着容器会将读取到<context-param>转化为键值对,并交给ServletContext。 容器创建<listener></listener>中的类实例,即创建监听(备注:listener定义的类可以是自定义的类但必须需要继承ServletContextListener)。 在监听的类中会有一个contextInitialized(ServletContextEvent event)初始化方法

Docker入门笔记(一)

江枫思渺然 提交于 2020-04-06 13:37:30
为什么用docker? 一句话总结:平台的伸缩和弹性部署。 开发人员消除协作编码时“在我的机器上可正常工作”的问题(开发环境/测试环境/生产环境部署切换) 运维人员在隔离容器中并行运行和管理应用,获得更好的计算密度 docker是怎么做到的? docker的两大技术 linux虚拟化 linux操作系统=linux开源内核+文件系统 linux虚拟化=复用内核+自己定制的文件系统 docker镜像技术 docker镜像技术=虚拟化的操作系统+服务包+容器文件=整包(集装箱),也可称作沙箱环境 docker的结构 Host,主机 Container,容器,独立运行的一套虚拟化linux系统 Image,镜像,服务组件的镜像文件 Registry,镜像仓库 Client,客户端,使用api与docker交互 Machine,docker的命令行工具 docker 仓库 存放镜像文件的仓库,类似maven仓库的概念。 分为中央仓库和私服仓库。 镜像查找顺序:私服仓库-->中央仓库 官方仓库的命名规则:docker中央仓库可以注册,然后import上传的仓库是在个人的私有仓库中,以用户名/镜像名为格式存储 docker 镜像 docker的可运行镜像是通过一层层的镜像文件包装,再加上最顶层的容器文件组成的。 每一层镜像文件都有一个唯一id,镜像文件在不同的可运行镜像中可复用

docker容器虚拟化

白昼怎懂夜的黑 提交于 2020-04-06 11:21:54
目录 1.虚拟化网络 2.单节点容器间通信 3.不同节点容器间通信 1.虚拟化网络 Network Namespace 是 Linux 内核提供的功能,是实现网络虚拟化的重要功能,它能创建多个隔离的网络空间,它们有独自网络栈信息。不管是虚拟机还是容器,运行的时候仿佛自己都在独立的网络中。而且不同Network Namespace的资源相互不可见,彼此之间无法通信。 假如我们的物理机有4块物理网卡,我们要创建4个名称空间,而这些设备是可以单独关联至某个单独的名称空间使用的 如上图所示,把第一块网卡分配给第一个名称空间,第二块分给第二个名称空间,第三块分给第三个名称空间,第四块分给第四个名称空间。此时其它名称空间都是看不见当前所在名称空间的,因为一个设备只能属于一个名称空间。 这种方式使得每一个名称空间都能配置IP地址,并且与外部网络直接通信,因为它们使用的是物理网卡。 但如果我们所拥有的名称空间数量超过物理网卡数量呢?此时我们可以使用虚拟网卡设备,用纯软件的方式来模拟一组设备来使用。Linux内核级支持2种级别设备的模拟,一种是二层设备,一种是三层设备。 Linux内核模拟的二层设备,每个网络接口设备是成对出现的,可以模拟为一根网线的两端,其中一端模拟主机的虚拟网卡,另一端模拟虚拟交换机,就相当于让一个主机连到一个交换机上去。Linux内核原生支持二层虚拟网桥设备

docker容器网络

荒凉一梦 提交于 2020-04-06 11:03:54
目录 1.docker容器网络 2.docker的4种网络模式 2.1bridge模式 2.2container模式 2.3host模式 2.4none模式 1.docker容器网络 Docker在安装后自动提供3种网络,可以使用docker network ls命令查看 [root@localhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 07573ce9f60f bridge bridge local 6dc26f122a07 host host local 16b57e624a73 none null local Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。 2.docker的4种网络模式 网络模式 配置 说明 host --network host 容器和宿主机共享Network namespace container --network container:NAME_OR_ID 容器和另外一个容器共享Network

动态生成DOM元素的高度及行数获取与计算方法

流过昼夜 提交于 2020-04-06 10:03:08
背景 在开发IM的项目过程中,经常会有出现一些需要计算DOM高度,然后超出若干行隐藏等需求。很多时候,需要计算高度的DOM元素都是动态生成的,我们无法在数据渲染前获取到它的高度。 但是,如果我们需要获取到这段在内存中未渲染的动态文本,也能够通过如下几个方法。 技术方案 根据前端的基本常识,在内存中未渲染的DOM元素是无法获取到高度的,因此我们有两个方向来解决这个难题: 通过字数对行数进行估算 将元素渲染后进行高度测算 实现方案 以下的实现方案将根据上面所选择的技术方案来进行实现。 通过字数进行估算 方案 此方案无需多言,就是通过字数和每一行能够容下的字的个数进行估算等。在项目最开始时,我采用的就是这个方案。具体实现代码太过简单,因此也不在此添加了。 优点 此方案实现简单,基本不需要任何成本,适用于只有等宽文字的情况下。 缺点 这个方案缺点也比较明显,基本无法用于纯文本之外的任何情况。如果字体为非等宽字体或者存在 \n 之类的换行符或者是 \t 之类的制表符时,估算的准确度也会大大下降。 在DOM渲染后进行操作 方案 顾名思义,此方案就是先不考虑DOM元素行数逻辑,直接将所有的DOM节点全部渲染到页面中,渲染完成后再对进行后续逻辑判断。获取高度后页面行数计算将在后面统一讲解。 优点 此方案通过直接在实际场景的页面上渲染后进行高度计算,因此计算精准,不存在任何偏差。同时

Gartner 容器报告:阿里云与 AWS 并列第一,领先微软、谷歌

生来就可爱ヽ(ⅴ<●) 提交于 2020-04-06 08:54:41
近日,国际知名调研机构 Gartner 发布 2020 年容器公有云竞争格局报告,阿里云再度成为国内唯一入选厂商。Gartner 报告显示,阿里云容器服务在中国市场表现强劲,产品形态丰富,在如 Serverless 容器、服务网格、安全沙箱容器、混合云和边缘等领域,具备良好的技术发展策略。 2020 年 3 月,Gartner 第二次公开《竞争格局:公共云容器服务》年度调研报告,报告针对 Serverless Kubernetes、服务网格、容器镜像等十项功能维度进行对比,阿里云和 AWS 覆盖九项产品能力,产品丰富度领先 Google、微软、IBM 和 Oracle 四家厂商。 阿里云连续两年入选 Gartner 容器报告,一方面是因为阿里云拥有全球第三的市场份额,另一方面是因为其已经拥有近十年的容器技术储备。 目前,阿里云容器服务(ACK)已在中国及海外 19 个公有云可用区开服,同时也支持客户在自有机房和边缘端的部署使用 Kubernetes。同时,阿里云还提供了丰富的差异化产品:兼容 Istio 的托管版服务网格、基于弹性容器实例的无服务器 Kubernetes(ASK)、提供镜像扫描的独享版容器镜像服务 (ACR)、基于轻量虚拟机技术的安全沙箱容器运行时和托管服务网格(ASM)等等。在此前的 Forrester 公共云容器服务评测中,阿里云作为 Strong

docker整理

自闭症网瘾萝莉.ら 提交于 2020-04-06 02:44:51
声明: 我用的是mac,以下不做说明一般都是在mac上做的操作。 一. docker简介---docker初使用 Docker 查看版本 docker version docker查找 tutorial镜像 docker search tutorial 下载仓库镜像到本地 docker pull learn/tutorial 运行镜像 docker run learn/tutorial echo ‘hello world’ 向learn/tutorial容器中安装ping命令 docker run learn/tutorial apt-get install -y ping docker ps -l 提交镜像,相当于新创建了个镜像learn/ping是起的名字 docker commit id号 learn/ping 用新镜像运行个容器 docker run learn/ping ping www.baidu.com 查看当前运行的容器 docker ps 查看运行中的容器 docker inspect 容器id 查看有哪些镜像 docker images 将新创建的镜像保存到github中 push命令保存镜像到github上 docker push learn/ping 注意: 1. docker images命令可以列出所有安装过的镜像。 2. docker

从零开始入门 K8s | Kata Containers 创始人带你入门安全容器技术

安稳与你 提交于 2020-04-06 01:51:19
作者 | 王旭 蚂蚁金服资深技术专家 本文整理自《CNCF x Alibaba 云原生技术公开课》第 28 讲, 点击直达课程页面 。 关注“阿里巴巴云原生”公众号,回复关键词**“入门”**,即可下载从零入门 K8s 系列文章 PPT。 一、缘起:安全容器的命名 Phil Karlton 有一句名言:“计算机科学界只有两个真正的难题——缓存失效和命名。” 对我们容器圈而言,我相信「命名」绝对配得上这句话。这毫无疑问是一件让老开发者沉默、让新人落泪的事情。仅就系统软件而言,我们当今比较通行地称为**「Linux 容器技术」**这个概念,它曾经用过的名字还有 Jail, Zone, Virtual Server, Sandbox 等。同样,在早期虚拟化的技术栈里也把一类虚拟机叫做容器,毕竟这个词本身就指代那些用来包容、封装和隔离的器物。它实在太过常见了,以至于以严谨著称的 Wikipedia,它的词条叫做「OS-Level Virtualization」(系统级虚拟化) ,从而回避了「什么是容器」这个问题。 在 2013 年,Docker 问世之后,容器这个概念伴随着不可变基础设施、云原生这一系列概念在随后的几年间以摧枯拉朽之势颠覆了基于“软件包+配置”这种细粒度组合的应用部署,用简单的声明式策略和不可变的容器就清爽地定义了软件栈。应用怎么部署,在这儿似乎有点离题了

总结Docker的存储和网络相关

亡梦爱人 提交于 2020-04-05 23:02:03
一、Docker概述 LXC所实现的隔离性主要是来自kernel的namespace, 其中pid, net, ipc, mnt, uts 等namespace将container的进程, 网络, 消息, 文件系统和hostname 隔离开。 cgroups 实现了对资源的配额和度量。 cgroups 的使用非常简单,提供类似文件的接口,在 /cgroup目录下新建一个文件夹即可新建一个group,在此文件夹中新建task文件,并将pid写入该文件,即可实现对该进程的资源控制。 二、网络 (1)网络模型 bridge:网桥网络 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。 host:主机网络 如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。 none:禁用容器网络 container:容器网络 这个模式指定新创建的容器和已经存在的一个容器共享一个 Network