容器

泛型算法(3)——迭代器

ぃ、小莉子 提交于 2020-03-04 05:27:32
迭代器 除了为每个容器定义的迭代器之外,标准库在头文件iterator中还定义了额为几种迭代器,包括以下几种 插入迭代器 绑定到一个容器上,可用来向容器插入元素 流迭代器 绑定到输入或输出流上,可用来遍历所关联的IO流 反向迭代器 向后而不是向前移动,除了forward_list之外的标准库都有反向迭代器 移动迭代器 不是拷贝其中的元素,而是移动它们 1、插入迭代器 back_inserter front_inserter inserter 只有在容器支持push_front的情况下,才可以使用front_inserter。同理, 只有在容器支持push_back的情况下,才可以使用back_inserter。 插入迭代器操作 it=t 在it指定的当前位置插入值t *it,++it,it++ 不会对it做任何事情 2、iostream迭代器 标准库定义了可以用于IO类型对象的迭代器 istream_iterator读取输入流;ostream_iterator向一个输出流写入数据。 通过使用流迭代器,可以用泛型算法从流对象读取数据以及向其写入数据. istream_iterator操作 istream_iterator<T> in(is) in从输入流is读取类型为T的值 istream_iterator<T> end 读取类型为T的值的istream_iterator迭代器

web.xml的简单解释以及Hello1中web.xml的简单分析

蹲街弑〆低调 提交于 2020-03-03 23:23:53
一、web.xml的加载过程 ① 当我们启动一个WEB项目容器时,容器包括(JBoss,Tomcat等)。首先会去读取web.xml配置文件里的配置,当这一步骤没有出错并且完成之后,项目才能正常的被启动起来。 ②启动WEB项目的时候,容器首先会去读取web.xml配置文件中的两个节点:<listener> </listener>和<context-param> </context-param>。 ③ 紧接着,容器创建一个ServletContext(application),这个web项目的所有部分都将共享这个上下文。 容器以 <context-param></context-param>的 name作为键, value作为值,将其转化为键值对,存入 ServletContext。    ④ 在容器创建 <listener></listener>中的类实例,根据配置的 class类路径 <listener-class>来创建监听, ⑤ 接着,容器会读取 <filter></filter>,根据指定的类路径来实例化过滤器。 ⑥ 如果系统中有 Servlet,则 Servlet是在第一次发起请求的时候被实例化的,而且一般不会被容器销毁,它可以服务于多个用户的请求。所以, Servlet的初始化都要比上面提到的那几个要迟。 二、标签 ① <web-app></web-app> <web

架构师成长系列 | 云原生时代的 DevOps 之道

删除回忆录丶 提交于 2020-03-03 17:12:58
作者 | 郝树伟(花名:流生) 阿里云高级研发工程师 本文整理自架构师成长系列 2 月17 日直播课程。 关注“阿里巴巴云原生”公众号,回复 “217” ,即可获取对应直播回放链接及 PPT 下载链接。 导读:DevOps 是一种软件开发人员和 IT人员之间的合作过程,目标是高效地自动执行软件交付和基础架构更改流程。在云原生时代,企业又如何借助 DevOps 实现产品快速、稳定、高效和安全地迭代,释放业务价值呢? 什么是云原生 为了解决传统应用升级缓慢、架构臃肿、不能快速迭代、故障不能快速定位、问题无法快速解决等问题,云原生这一概念横空出世。 Pivotal 是云原生应用的提出者,并推出了 Pivotal Cloud Foundry 云原生应用平台和 Spring 开源 Java 开发框架,成为云原生应用架构中先驱者和探路者。 早在 2015 年 Pivotal 公司的 Matt Stine 就写了一本叫做迁移到云原生应用架构的小册子,其中探讨了云原生应用架构的几个主要特征: 符合 12 因素应用 面向微服务架构 自服务敏捷架构 基于 API 的协作 抗脆弱性 后来 Pivotal 对云原生的定义做过几次更新, 最新的 Pivotal 官网上对云原生应用的最新介绍是关注以下四点: 集成 DevOps 持续交付 微服务 容器化 DevOps 是软件开发人员和 IT 运营之间的合作

从零开始入门 K8s | Kubernetes 网络模型进阶

坚强是说给别人听的谎言 提交于 2020-03-03 16:49:34
作者 | 叶磊(稻农)阿里巴巴高级技术专家 本文整理自《CNCF x Alibaba 云原生技术公开课》第 25 讲, 点击直达课程页面 。 关注“阿里巴巴云原生”公众号,回复关键词 “入门” ,即可下载从零入门 K8s 系列文章 PPT。 导读 :本文将基于之前介绍的 基本网络模型 ,进行更深入的一些了解,希望给予读者一个更广更深的认知。首先简单回顾一下容器网络的历史沿革,剖析一下 Kubernetes 网络模型的由来;其次会剖析一个实际的实现(Flannel Hostgw),展现了数据包从容器到宿主机的变换过程;最后对于和网络息息相关的 Servcie 做了比较深入的机制和使用介绍,通过一个简单的例子说明了 Service 的工作原理。 Kubernetes 网络模型来龙去脉 容器网络发端于 Docker 的网络。Docker 使用了一个比较简单的网络模型,即内部的网桥加内部的保留 IP。这种设计的好处在于容器的网络和外部世界是解耦的,无需占用宿主机的 IP 或者宿主机的资源,完全是虚拟的。它的设计初衷是:当需要访问外部世界时,会采用 SNAT 这种方法来借用 Node 的 IP 去访问外面的服务。比如容器需要对外提供服务的时候,所用的是 DNAT 技术,也就是在 Node 上开一个端口,然后通过 iptable 或者别的某些机制,把流导入到容器的进程上以达到目的。

从零开始入门 K8s | Kubernetes 网络模型进阶

倾然丶 夕夏残阳落幕 提交于 2020-03-03 13:46:23
作者 | 叶磊(稻农)阿里巴巴高级技术专家 本文整理自《CNCF x Alibaba 云原生技术公开课》第 25 讲, 点击直达课程页面 。 关注“阿里巴巴云原生”公众号,回复关键词 “入门” ,即可下载从零入门 K8s 系列文章 PPT。 导读 :本文将基于之前介绍的 基本网络模型 ,进行更深入的一些了解,希望给予读者一个更广更深的认知。首先简单回顾一下容器网络的历史沿革,剖析一下 Kubernetes 网络模型的由来;其次会剖析一个实际的实现(Flannel Hostgw),展现了数据包从容器到宿主机的变换过程;最后对于和网络息息相关的 Servcie 做了比较深入的机制和使用介绍,通过一个简单的例子说明了 Service 的工作原理。 Kubernetes 网络模型来龙去脉 容器网络发端于 Docker 的网络。Docker 使用了一个比较简单的网络模型,即内部的网桥加内部的保留 IP。这种设计的好处在于容器的网络和外部世界是解耦的,无需占用宿主机的 IP 或者宿主机的资源,完全是虚拟的。它的设计初衷是:当需要访问外部世界时,会采用 SNAT 这种方法来借用 Node 的 IP 去访问外面的服务。比如容器需要对外提供服务的时候,所用的是 DNAT 技术,也就是在 Node 上开一个端口,然后通过 iptable 或者别的某些机制,把流导入到容器的进程上以达到目的。

C++序列式容器(STL序列式容器)介绍

◇◆丶佛笑我妖孽 提交于 2020-03-03 08:36:23
所谓序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。 1.array<T,N> (数组容器) :是一个长度固定的序列,有 N 个 T 类型的对象,不能增加或删除元素。 2.vector (向量容器) :是一个长度可变的序列,用来存放T类型的对象。是一个长度可变的序列容器,即在存储空间不足时,会自动申请更多的内存。使用此容器,在尾部增加或删除元素的效率最高(时间复杂度为 O(1) 常数阶),在其它位置插入或删除元素效率较差(时间复杂度为 O(n) 线性阶,其中 n 为容器中元素的个数); 3.deque (双向队列容器) :和 vector 非常相似,区别在于使用该容器不仅尾部插入和删除元素高效,在头部插入或删除元素也同样高效,时间复杂度都是 O(1) 常数阶,但是在容器中某一位置处插入或删除元素,时间复杂度为 O(n) 线性阶; 4.list (链表容器) 是一个长度可变的、由 T 类型对象组成的序列,它以双向链表的形式组织元素,在这个序列的任何地方都可以高效地增加或删除元素。访问容器中任意元素的速度要比前三种容器慢,这是因为 list 必须从第一个元素或最后一个元素开始访问,需要沿着链表移动,直到到达想要的元素。 5.forward list

Docker 学习总结

廉价感情. 提交于 2020-03-03 08:25:16
问题一: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers) 解决方案: 修改docker镜像源: docker默认的源为国外官方源,下载速度较慢,可改为国内,加速 方案一 修改或新增 /etc/docker/daemon.json # vi /etc/docker/daemon.json { "registry-mirrors": ["http://hub-mirror.c.163.com"] } systemctl restart docker.service 问题二: redis 由于目标计算机积极拒绝,无法连接 解决方案: https://blog.csdn.net/weixin_42456466/article/details/87270959 命令总结: 检查当前 CentOS 系统内核版本 uname -r 检查当前 CentOS 系统版本 cat /etc/redhat-release Linux安装 CentOS安装命令 sudo yum update sudo yum install docker Ubuntu sudo apt

Docker基础(3) 数据卷

爷,独闯天下 提交于 2020-03-03 05:52:26
创建数据卷 挂载Host目录作为数据卷 挂载Host的文件作为数据卷 数据卷容器 数据卷的备份和恢复 Docker容器一旦被删除,容器本身对应的rootfs文件系统就会被删除,容器中的所有数据也将随之消失。 Docker提供了数据卷的方式来持久化容器产生的数据,通过数据卷,还可以在容器之间共享数据。 创建容器时,通过-v参数可以数据卷,-v参数的格式为 [host-dir]:[container-dir]:[rw|ro] 其中 host-dir表示Host机器上的目录或文件,如果目录不存在Docker会自动在Host上创建 container-dir表示容器内部与host-dir对应的目录或文件,如果不存在Docker同样会自动创建 rw|ro用于控制数据卷的读写权限,默认rw(可读写) 创建数据卷 如果不指定host-dir,Docker也会在容器内部创建目录 $ docker run -it --rm -v /volume1 --name testbox busybox 在另一个终端执行inspect命令可以看到这种方式下,Docker会在Host的/var/lib/docker/volumes/目录生成一个随机的目录来挂载/volume1。 $ docker inspect -f {{.Mounts}} busybox "Mounts": [ { "Type":

STL容器通用操作及涉及类型

二次信任 提交于 2020-03-03 03:52:16
类型 操作 解释 iterator 此容器类型的迭代器类型 const_iterator 可以读取元素但不能修改元素的迭代器类型 size_type 无符号整数类型,足够保存此种容器类型最大可能的大小 difference_type 带符号整数类型,足够保存两个迭代器之间的距离 value_type 元素类型 reference 元素的左值类型;和 value_type & 含义相同 const_reference 元素的 const 左值类型,即 const value_type & 构造函数 操作 解释 C c; 默认构造函数,构造空容器 C c1(c2); 或 C c1=c2; 构造 c2 的拷贝 c1 C c(b, e) 构造 c ,将迭代器 b 和 e 指定范围内的所有元素拷贝到 c C c(a, b, c...) 列表初始化 c C c(n) 只支持顺序容器,且不包括 array ,包含 n 个元素,这些元素进行了值初始化 C c(n, t) 包含 n 个初始值为 t 的元素 · 和其他容器不同,默认构造的 array 是非空的 · 直接复制:将一个容器复制给另一个容器时,类型必须匹配:容器类型和元素类型都必须相同 · 使用迭代器复制:不要求容器类型相同,容器内的元素类型也可以不同 · 只有顺序容器的构造函数才接受大小参数,关联容器并不支持 来源: https:/