namespace

Kubernetes学习之pause容器

允我心安 提交于 2019-12-05 06:15:17
根据代码看到,pause容器运行着一个非常简单的进程,它不执行任何功能,一启动就永远把自己阻塞住了, 它的作用就是扮演PID1的角色,并在子进程称为"孤儿进程"的时候,通过调用wait()收割这个子进程,这样就不用担心我们的Pod的PID namespace里会堆满僵尸进程了,这也是为什么kubernetes不随便找个容器,例如Nginx作为父容器,让其他容器加入的原因 共享namespace的意思就是父进程先创建一个namespace,然后其他进程加入到该namespace就共享namespace了 使用pause容器和共享namespace创建Pod 使用docker启动pause进程,以便可以将其他容器添加到Pod中 docker run -d --name pause gcr.io/google_containers/pause-amd64:3.0 然后,在Pod中运行其他容器,分别是Nginx代理和ghost博客应用 Nginx代理的后端配置成http://127.0.0.1:2368,也就是ghost进程监听的地址 ##创建nginx配置文件 vim nginx.conf error_log stderr; events { worker_connections 1024; } http { access_log /dev/stdout combined; server

Docker-----四种网络模式

﹥>﹥吖頭↗ 提交于 2019-12-05 00:41:42
我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: · host模式,使用--net=host指定。 · container模式,使用--net=container:NAME_or_ID指定。 · none模式,使用--net=none指定。 · bridge模式,使用--net=bridge指定,默认设置。 1 host模式 Docker使用的网络实际上和宿主机一样,在容器内看到的网卡ip是宿主机上的ip。 众所周知,Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。一个Docker容器一般会分配一个独立的Network Namespace。但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。 2 container模式

using namespace的故事

旧街凉风 提交于 2019-12-05 00:05:21
1、问题起因(使用boost.asio库时为什么如下图所示using后面不接namespace)       图上的using boost::asio::ip::tcp 在using后面没有namespace,这样是正确的。那么如果加上namespace会是什么结果呢?         加上之后如上图所示,出错。为什么?在之前我也一直不能明白原因,查了using的用法但也没有弄清楚。   其实答案很简单:因为boost::asio::ip 是namespace,而tcp不是,他应该是一个类。 1 namespace boost{ 2 namespace asio{ 3 namespace ip{ 4 class tcp{ 5 ... 6 } 7 ... 8 } 9 .... 10 } 11 ..... 12 }    如上面代码所示,我们就可以写using boost::asio::ip::tcp了,这是using了一个命令空间中的tcp类的作用域。   这个问题算是解决了。 2、问题又来了(为什么可以如下图使用)       acceptor是一个(类类型)class_type,然后他又在tcp这个作用域下面,而tcp它是一个类,为什么在这个类中还有类型,其实就是boost::asio::ip::tcp::acceptor (本人的知识在这不够用了,感觉卡在这了)  

PHP命名空间(Namespace)的使用详解

点点圈 提交于 2019-12-04 22:56:38
对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结。 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。这种情况下只要避免命名重复就可以解决,最常见的一种做法是约定一个前缀。 例:项目中有两个模块:article和message board,它们各自有一个处理用户留言的类Comment。之后我可能想要增加对所有用户留言的一些信息统计功能,比如说我想得到所有留言的数量。这时候调用它们Comment提供的方法是很好的做法,但是同时引入各自的Comment类显然是不行的,代码会出错,在另一个地方重写任何一个Comment也会降低维护性。那这时只能重构类名,我约定了一个命名规则,在类名前面加上模块名,像这样:Article_Comment、MessageBoard_Comment 可以看到,名字变得很长,那意味着以后使用Comment的时候会写上更多的代码(至少字符多了)。并且,以后如果要对各个模块增加更多的一些整合功能,或者是互相调用,发生重名的时候就需要重构名字。当然在项目开始的时候就注意到这个问题,并规定命名规则就能很好的避免这个问题。另一个解决方法可以考虑使用命名空间。 注明: 本文提到的常量:PHP5.3开始const关键字可以用在类的外部。const和define都是用来声明常量的

对冒泡、直接插入、快速、归并四种排序方式的理解,以及实际应用时的感受。

蓝咒 提交于 2019-12-04 22:35:03
以下所有程序的运行环境均为Code::Block,代码在不同编译器下运行,结果可能会有有所不同 如,以下定义变量的位置并非全在程序开头,在VC上,可能会报错。改正方法:将程序里定义变量的语句放在程序的开头即可。 ************************************************************************************************************************************************************************************************ 话不多说,直接进入正题: 一):直接插入排序(插入排序有多种类型,这次讲平时应用最多的) 代码实现如下:(以正序输出为例,倒序输出,仅需对代码进行适当修改即可) #include<bits/stdc++.h> #include<algorithm> using namespace std; int a[100055]; int main() { int n,i; cin>>n; for(i=1;i<=n;i++) { cin>>a[i]; } int head; head = 2; while(head<=n) { i = head; while(i>=2&&a[i]<a[i-1]) { if

tp5博客项目实战1

删除回忆录丶 提交于 2019-12-04 19:13:05
tp5博客项目实战 开发准备:环境wamp,windows系统为例。看实战博客,默认会搭建开发环境并且tp5框架已经至少有一定的基础。 tp5的下载与安装 方法一:直接在官网下载拷贝到wamp你的项目目录。 方法二:下载安装 composer,打开cmd 打开到你项目的根目录 更换阿里云的镜像(下载速度快) composer config -g repo.packagist composer https://packagist.phpcomposer.com 下载 composer create-project topthink/think=5.0.* tp5 --prefer-dist 此时你所在项目的根目录下就出现了tp5的文件夹 在浏览器打开localhost/你的站点/tp5/public 出现 十年磨一剑...就说明安装成功。 命名空间 同一个php里面不能出现相同的两个函数这个时候就需要用到namespace例如这样两个相同名称的函数因为放到了两个不同的命名空间所以不会报错。这就像同一个文件夹里不能出现两个一样名称的文件,我们在这个文件夹里面建两个子文件夹把文件分别放进去就可以了。 命名空间只对函数,类,以及常量起作用且常量不是define定义的。 const定义的常量一般在类里面,命名空间可以使其在类外面 引入了namespace的php前面

mybatis源码分析之02配置文件解析

痞子三分冷 提交于 2019-12-04 19:06:47
该篇正式开始学习mybatis的源码,本篇主要学习mybatis是如何加载配置文件mybatis-config.xml的, 先从测试代码入手。 public class V1Test { public static void main(String[] args) { try (InputStream is = Resources.getResourceAsStream("mybatis-config.xml")) { SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession sqlSession = sqlSessionFactory.openSession(true); FemaleMapper femaleMapper = sqlSession.getMapper(FemaleMapper.class); Female female = femaleMapper.getFemaleById(1); System.out.println(female); } catch (Exception e) { e.printStackTrace(); } } } 1. 加载mybatis配置文件mybatis-config.xml InputStream is =

从零开始入门 K8s | 深入剖析 Linux 容器

不问归期 提交于 2019-12-04 17:51:54
作者 | 唐华敏(华敏) 阿里云容器平台技术专家 本文整理自《CNCF x Alibaba 云原生技术公开课》第 15 讲。 关注“阿里巴巴云原生”公众号,回复关键词“ 入门 ”,即可下载从零入门 K8s 系列文章 PPT。 导读 :Linux 容器是一种轻量级的虚拟化技术,在共享内核的基础上,基于 namespace 和 cgroup 技术做到进程的资源隔离和限制。本文将会以 docker 为例,介绍容器镜像和容器引擎的基本知识。 容器 容器是一种轻量级的虚拟化技术,因为它跟虚拟机比起来,它少了一层 hypervisor 层。先看一下下面这张图,这张图简单描述了一个容器的启动过程。 最下面是一个磁盘,容器的镜像是存储在磁盘上面的。上层是一个容器引擎,容器引擎可以是 docker,也可以是其它的容器引擎。引擎向下发一个请求,比如说创建容器,这时候它就把磁盘上面的容器镜像运行成在宿主机上的一个进程。 对于容器来说,最重要的是怎么保证这个进程所用到的资源是被隔离和被限制住的,在 Linux 内核上面是由 cgroup 和 namespace 这两个技术来保证的。接下来以 docker 为例,详细介绍一下资源隔离和容器镜像两部分的内容。 一、资源隔离和限制 namespace namespace 是用来做资源隔离的,在 Linux 内核上有七种 namespace,docker

Docker 底层技术与端口映射

梦想的初衷 提交于 2019-12-04 17:47:19
容器底层实现技术     1.cgroup 实现了资源的限额:CPU,内存,硬盘     cgroup使用     docker run -d -m 100M httpd   2.namespace 实现了资源隔离     namespace 实现了容器间资源的隔离   3.unionfs 联合文件系统 Linux 使用了六种 namespace,分别对应六种资源:Mount、UTS、IPC、PID、Network 和 User    Mount namespace   Mount namespace 让容器拥有整个文件系统。   UTS namespace   简单的说,UTS namespace 让容器有自己的 hostname。 默认情况下,容器的 hostname 是它的短ID,可以通过 -h 或 --hostname 参数设置。   IPC namespace   IPC namespace 让容器拥有自己的共享内存和信号量(semaphore)来实现进程间通信,而不会与 host 和其他容器的 IPC 混在一起   PID namespace   容器在 host 中以进程的形式运行。容器内进程的 PID 不同于 host 中对应进程的 PID,容器中 PID=1 的进程当然也不是 host 的systemd进程。也就是说:容器拥有自己独立的 PID,这就是 PID

C++入门

元气小坏坏 提交于 2019-12-04 16:07:58
目录 一、容器 1.vector数组 2.Set集合 3.map映射 4.stack栈 5.queue队列 二、算法 1.bitset位运算 2.sort排序 三、C11特性 1.auto声明 2.to_string 3.stoi、stod... 一、容器 1.vector数组 主要内容: ①定义方式 ②输出单个元素 ③遍历输出 主要函数: ①获取大小v.size() ②获取首指针,获取尾指针v.begin()/v.end() #include <iostream> #include <vector> using namespace std; int main(void){ //定义方式 vector<int> v1; vector<int> v2(10); vector<int> v3(10,4); //输出单个元素 cout << v2[0] << endl;//默认为0 cout << v3[0] << endl;//输出4 //获取大小 cout << v2.size() << endl; cout << v3.size() << endl; //遍历方式 for(int i = 0; i < v3.size(); i++){ cout << v3[i] << " "; } cout << endl; //常用遍历方式:迭代器 for(auto it = v3.begin(