- 博客(44)
- 收藏
- 关注
原创 Mac通过Vagrant + VirtualBox 安装Docker
文章目录安装vagrant安装VirtualBox通过Vagrant 安装一台centos虚拟机Vagrantfile安装vagrant下载链接:https://www.vagrantup.com/downloads安装VirtualBox略通过Vagrant 安装一台centos虚拟机安装完vagrant和VirtualBox之后通过 下面命令完成centos虚拟机安装。vagrant init centos/7安装完成之后会自动生成Vagrantfile文件启动VirtualBox可
2020-07-14 23:57:14
457
原创 Go资源管理与出错处理
defer 调用确保调用在函数结束时发生参数在defer语句时计算defer列表为后进先出何时使用defer调用Open/CloseLock/UnlockPrintHeader/PrintFooter如何统一处理errpanic停止当前函数执行一直向上返回,执行每一层的defer如果没有遇到recover,程序退出recover仅在defer调用中使用获...
2020-03-15 12:18:27
402
原创 GO:select 使用
selectselect 使用定时器使用在select中使用Nil Channelpackage mainimport ( "fmt" "time" "math/rand")func generator() chan int { out := make(chan int) go func() { i := 0 for { time.Sleep( ...
2020-03-10 11:47:05
198
原创 Go:Goroutine 和 Channel
协程 Coroutine轻量级 “线程”非抢占式多任务处理,由协程主动交出控制权编译器、解释器、虚拟机层面的多任务多个协程可能在一个或多个线程上运行非抢占式任务处理实例package mainimport ( "fmt" "time")func main() { for i:= 0; i < 10; i++ { go func(i int) { fo...
2020-03-08 22:59:22
149
原创 Go 函数式编程
函数式编程 vs 函数指针函数是一等公民:参数、变量,返回值都可以是函数高阶函数函数->闭包“正统”函数编程不可变性:不能有状态,只有常量和函数函数只能有一个参数闭包package mainimport "fmt"func adder() func (int) int { sum := 0 return func (v int) int { sum ...
2020-03-08 15:22:15
168
原创 Go:面向接口
接口type Traversal interface { Traverse()}func main() { traversal := getTraversal() traversal .Traverse()}接口的概念强类型语言:熟悉接口概念弱类型语言:没(少)有接口的概念接口的详细:使用Google Guice实现依赖注入duck tying大黄鸭是鸭子吗?...
2020-03-08 11:40:10
171
原创 Go:面向对象
结构和方法go 语言仅支持封装,不支持继承和多态go语言没有class,只有struct结构定义typedef TreeNode struct { value int left,right *treeNode}结构的创建无论地址还是结构本身,一律用.来访问成员root := TreeNode{value:3}root.left = &TreeNode{}...
2020-03-07 14:33:57
120
转载 用GDB调试程序(一)
用GDB调试程序GDB概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。一般来说,GDB主要帮忙你完成下面四个方面的功能:1、启动你的程序,可以按照你的...
2020-03-03 22:16:50
332
原创 Go接口学习
强类型语言:熟悉接口概念弱类型语言:没(少)有接口概念接口的详细讲解:使用Google Guice实现依赖注入curl https://www.imooc.comduck typing-“像鸭子走路,像鸭子叫(长得像鸭子),那就是鸭子”-描述事物的外部行为而非内部结构-严格说go属于结构化类型系统,类似duck typing接口的定义-接口由使用者定义接口变量里有什...
2020-02-29 23:15:32
149
1
原创 go mod、govendor
在Go中名字一般用CamelCase首字母大写:public首字母小写:private包每个目录一个包main包包含可执行入口为结构定义得方法必须放在同一个包内可以时不同得文件如何扩充系统类型或者别人得类型定义别名使用组合使用内嵌来扩展已有类型Go语言的依赖管理依赖的概念依赖第三方的库依赖管理的三个阶段 GOPATH, GOVENDOR, go mo...
2020-02-28 22:30:43
530
原创 K8s ”控制器“模型
文章目录[声明] 本篇文章为极客时间 专栏”深入剖析Kubernetes“ 学习笔记Pod 这个看似复杂的 API 对象,实际上就是对容器的进一步抽象和封装而已。Pod 对象,其实就是容器的升级版。它对容器进行了组合,添加了更多的属性和字段。这就好比给集装箱四面安装了吊环,使得 Kubernetes 这架“吊车”,可以更轻松地操作它。而 Kubernetes 操作这些“集装箱”的逻辑,都由控制...
2020-02-23 16:27:45
256
原创 深入解析Pod对象
文章目录Projected Volume容器的健康检查和恢复机制PodPresetProjected Volume在k8s中有集中较为特殊的Volume,他们存在的意义不是为了存放容器里得数据,也不是用来进行容器和宿主机之间得 数据交换。这些特殊 Volume 的作用,是为容器提供预先定义好的数据。所以,从容器的角度来看,这些 Volume 里的信息就是仿佛是被 Kubernetes“投射”(...
2020-02-21 18:47:56
249
原创 Pod基本概念
文章目录声明 该系列文章属于极客时间专栏 ”深入剖析Kubernetes“学习笔记pod 是k8s中最小的编排单位,从API的角度看,容器(Container)就是pod属性里的一个普通字段,那么那些属性是属于pod,哪些属性又是属于container呢?凡是调度、网络、存储以及安全相关的属性,基本是属于pod的属性。接下来我们需要了解一些pod中重要的字段。** NodeSelecto...
2020-02-20 22:59:04
1674
原创 为什么需要Pod
文章目录为什么需要PodPod的实现原理为什么需要Podpod 是K8s种最小的API对象,更专业的说Pod是K8s项目中最小的原子调度单元。容器的本质是进程,那么K8s的本质可以理解为操作系统。在linux操作系统中执行$ pstree -g这条命令可以看到系统中正在运行的进程的树状结构:systemd(1)-+-accounts-daemon(1984)-+-{gdbus}(19...
2020-02-11 16:06:05
366
原创 集群服务见通信之Routing Mesh
文章目录创建一个overlay的网络docker network create -d overlay demo创建whoami servicedocker service create --name whoami -p 8080:8080 --network demo -d jwilder/whoami创建client servicedocker service create ...
2019-10-23 11:50:13
367
原创 在Swarm集群中通过Service部署wordpress
文章目录两个service之间可以通过overlay网络进行通信创建overlay网络$ docker network create -d overlay demoi5zo4pvcd7h327gsozyw2vwpr$ docker network lsNETWORK ID NAME DRIVER SCOPE2b...
2019-10-20 17:25:46
205
原创 容器编排Docker Swarm
文章目录创建一个三个节点的swarm集群Sevice的创建维护和水平扩展 scale内置于docker内部容器编排工具创建一个三个节点的swarm集群创建swarm managerdocker swarm init --advertise-addr=192.168.0.12Swarm initialized: current node (dkf6zqn0rdxvf7jb7aj...
2019-10-20 17:07:18
258
原创 Docker Compose
文章目录多容器的APP太恶心Docker Compose “批处理”Docker Compose file versionyml文件ServicesNetworksdocker-compose 安装docker-compose 常用命令水平扩展和负载均衡多容器的APP太恶心要从Dockerfile build image或者Dockerhub拉取image要创建多个container要管...
2019-10-20 15:46:49
137
原创 Docker部署一个wordpress
文章目录下载 mysql 和 wordpress镜像docker pull mysqldocker pull wordpress创建mysql的容器 $ docker run -d --name mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysq...
2019-10-19 17:05:19
140
原创 Docker 的持久化存储和数据共享
文章目录数据持久化:Data VolumeVolume 的类型数据持久化:Bind Mounting数据持久化:Data VolumeVolume 的类型受管理的data Valume,由docker后台自动创建绑定挂载的volume,具体挂载位置可以由用户指定安装插件,将本地文件拷贝到vagrant hostvagrant plugin install vagrant-scp...
2019-10-18 10:42:48
207
1
原创 容器的端口映射
文章目录-p :端口映射,80:80 容器里的80端口映射到本地的80端口$ sudo docker run --name web -d -p 80:80 nginxf48c4bc0d5969e43fa34ef42589d3d395989476d439c84c626da1813b786eea8...
2019-10-09 17:18:53
208
原创 4-5 容器间的通信
文章目录两个容器如何实现通信单个容器如何访问外网容器之间的link创建容器连接到新建的bridge上创建网络新建容器连接到新建的网络上将已连接的网络的容器连接到另一个网络上两个容器如何实现通信在docker中两个container是如何通信的?列举当前docker有哪几种网络[vagrant@docker-hello ~]$ sudo docker network lsNETWORK I...
2019-10-09 15:16:09
136
原创 Docker Network Namespace
文章目录创建Network Namespace$ sudo docker run -d --name test1 busybox /bin/sh -c "while true;do sleep 3600;done"Unable to find image 'busybox:latest' locallylatest: Pulling from library/busybox7c9d20b...
2019-10-09 13:48:02
197
原创 docker 容器的资源限制
文章目录通过memory限制容器运行的内存设置CPU权重通过memory限制容器运行的内存设置CPU权重起两个容器,一个cpu shares=10,一个等于5
2019-10-09 10:59:41
146
原创 Dockerfile实战之:将stress打包成docker image
文章目录安装ubuntu stress工具编写Dockerfiledocker build安装ubuntu stress工具$ sudo docker pull ubuntu:14.04$ sudo docker run -it ubunturoot@bbcbdcefdf8a:/# apt-get update && apt-get install -y stressr...
2019-09-27 17:15:25
216
原创 Docker 容器操作
文章目录进入到运行中的容器删除所有退出的容器创建容器指定名字docker inspect查看容器详细信息进入到运行中的容器$ sudo docker exec -it 8893f14032ce /bin/bashroot@8893f14032ce:/app# lsapp.pyroot@8893f14032ce:/app# ps -ef | grep pythonroot ...
2019-09-27 16:50:22
202
原创 paython程序打包成一个镜像
文章目录编写app.py编写Dockerfiledocker build创建container后台运行container -dbuild image 失败如何调试$ mkdir flask-hello-world编写app.py$ more app.py from flask import Flaskapp = Flask(__name__)@app.route('/')def h...
2019-09-27 15:06:06
230
原创 Docker 镜像发布
文章目录登入docker hub登入docker hub$ sudo docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one....
2019-09-27 14:51:45
214
原创 Dockfile语法梳理
文章目录FROMLABELRUNWORKDIRADD和COPYENVDockerfile官方文档FROM尽量使用官方的image作为base imageLABEL很像代码里的注释,Metadata不可少RUN注意每运行一次RUN在image里面都会生成一个新层,为了美观,复杂的RUN请用反斜线换行!避免无用分层,合并多条命令成一行!WORKDIR用WORKDIR,不要用RUN...
2019-09-27 10:48:44
187
原创 Docker之什么是Container
文章目录什么是Container运行容器交互式运行容器Docker 命令构建自己的Docker镜像docker commitdockerfile build image什么是Container通过Image创建(copy)在Image layer之上建立一个container layer(可读写)类比面向对象:类和实例Image负责app的存储和分布,Container负责运行app...
2019-09-27 10:27:26
723
原创 Docker中如何制作Base Image
文章目录添加docker用户编写hello-world程序安装gcc编译hello.c编写Dockfiledocker build查看image的分层运行docker Image添加docker用户sudo groupadd dockersudo gpasswd -a vagrant dockersudo service docker restart退出docker,重新登录docker...
2019-09-26 16:11:25
606
原创 Docker Image
文章目录什么是imageImage的获取build from Dockerfilepull from Registry什么是image文件和meta data的集合(root filesystem)分层的,并且每一层都可以添加改变删除文件,成为一个新的image不同的image可以共享相同的layerImage本身是read-only的Image的获取build from Do...
2019-09-26 15:35:40
117
原创 Docker的架构和底层技术
文章目录Docker PlatformDocker EngineDocker Architecture底层技术支持Docker Platform- Docker 提供了一个开发,打包,运行app的平台- 把app和底层infrastructure隔离开来Docker Engine- 后台进程(dockerd)- REST API Sever- CLI接口(docker)Do...
2019-09-26 15:10:25
173
原创 在Centos上安装Docker
文章目录先准备centos的虚拟机启动centos虚拟机登入虚拟机uninstall old versionsInstall using the repositoryset up the stable repository.Install the latest version of Docker Engine - CommunityStart Docker查看docker version验证doc...
2019-09-26 11:19:57
115
原创 windows下通过Vagrant&VitruaBox创建Centos 虚拟机
文章目录vagrant 创建centos虚拟机创建vagrantfile下载base box创建虚拟机ssh进入虚拟机vagrant 常用命令查看vagrant状态停止虚拟机删除虚拟机vagrantfileubuntu/xenial64 Vagrant box varantfilevagrant 创建centos虚拟机创建vagrantfilevagrant init centos/7下...
2019-09-26 10:41:25
223
原创 浮点型的内存表示级数据类型转化
文章目录二进制如何表示负数浮点数如何计算数据类型转化字符转化为shortshort型转化为char型int型转化为short负数赋值int 型转化为floatC/C++typelenbool1bytechar1byteshort1byteint4bytelong4bytefloat4bytedouble8byte一个字...
2019-08-03 20:43:36
359
原创 排序(上):插入排序、冒泡排序和选择排序
文章目录如何分析一个“排序算法”排序算法的执行效率排序算法的内存消耗排序算法的稳定性冒泡排序(Bubble Sort)插入排序(Insertion Sort)选择排序(Selection Sort)小节排序算法有很多,最经典的、最常用的:冒泡排序、选择排序、归并排序、快速排序、计数排序、基数排序、桶排序。按照时间复杂度把他们分成三类。思考题:插入排序和冒泡排序的时间复杂度相同,都是O(n2)...
2019-07-30 13:40:24
163
原创 C语言 联合体
文章目录联合体的作用联合体-变体记录联合的初始化联合体的声明和结构体类似,但他的行为却和结构体不同。联合体所有成员引用的是内存中相同位置。当你想在不同时刻把不同东西存在同一个位置时可以使用联合体。看一个简单的例子。union { float f; int i;}fi;fi.f = 3.14159;printf("fi.i = %d\n", fi.i);在一个浮点型和整形都是3...
2019-07-27 16:59:06
3029
原创 单链表、双向链表、循环链表
常见链表学习三种常见的链表结构,他们分别是:单链表、双向链表和循环链表。单链表单链表有两个较特殊节点,头结点和尾节点。头结点用来记录链表的基地址,可以用来遍历整条链表。尾结点的指针不是指向下一个节点而是指向一个空地址NULL,表示链表上的最后一个节点。和数组一样,链表也支持数据的查找、插入和删除操作。但相对于数据的插入删除需要做大量的搬移操作,链表的插入,删除的时间复杂度为O(1)。但是链...
2019-07-26 14:26:09
7488
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人