docker多阶段构建

多阶段的构建对于那些努力优化 Dockerfiles 的开发者来说非常有用,同时也使 Dockerfiles 更易于阅读和维护。 1.多阶段 build 之前的 build build镜像 最具挑战性的事情之一是使镜像变得更小。Dockerfile 中的每条指令都会为镜像添加一层,需要记住的是要清理任何不需要的内容,然后再进入下一层。为了编写一个非常有效的 Dockerfile,传统上需要采用shell技巧和其他逻辑来保持每一层尽可能小,并确保每一层都具有上一层中所需的内容,而没有其他多余内容。 实际上,一个用于生产环境的 Dockerfile(其中包含构建应用程序所需的一切),其中仅包...

中间件,CI/CD,容器 2022/06/22 156℃ 0条

基于docker搭建的gitlab实现CI/CD

在开发过程中,提起CI/CD就会想到使用gitlab来实现。本文使用docker搭建gitlab环境,基于官方文档说明并尝试对常见CI/CD操作做讲解说明。 1.gitlab 所需硬件配置 目前,gitlab对内存要求最小是4G。本文使用服务器配置:阿里云ECS,4核8G 配置低的话,容易把系统搞死,gitlab 比较占资源 2.安装docker 卸载老版本docker yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docke...

中间件,CI/CD 2022/06/21 129℃ 0条

go中slice append扩容的一些细节

1.问题与事件 事件:一个朋友面试某家公司 问题:对容量为4的int切片追加5个元素,最终切片的容量是多少? 针对该问题,朋友回答:16 该问题考察slice扩容: ①在容量小于1024时,在原基础上2倍扩容 ②大于1024时,在原基础上1/4的扩容 面试官回答说:10 让回去自己试一下,看看具体是多少? 事后分析了一下,能确定的是:面试官提出的问题,有4种写法。 2.同一个问题不同写法的不同结果 在4种写法执行之前,你觉得最终的容量cap分别会是多少? func TestSliceAppend(t *testing.T) { SliceAppend0() Sl...

Golang,编程原理 2022/06/14 138℃ 0条

利用质数随机遍历集合的一种实现

有个随机遍历数据集合的需求,描述如下: ① 从集合的某个随机位置开始遍历 ② 随机获取集合中剩余数据 ③ 重复步骤②,直到遍历完整个集合 当看到这个需求时,不知道你是否会想到什么实现方式? 最近在追溯go底层源码时发现,在调度器从其他 P 中 steal 可用 goroutine 时利用质数的特性,采用了一种特殊算法随机遍历 allp 数组。觉得很是经典,特此记录一下。 例如:通过下标随机遍历数组中的 8 个元素,则最终遍历数组的下标可能是 [0,1,2,3,4,5,6,7] 中的任意一种随机排列。 遍历步骤: ① 计算小于等于 count (这里是8) 的所有质数,得到数组 [1,3...

Golang,算法技巧 2022/05/10 229℃ 0条

Innodb引擎可重复读的幻读现象

关于幻读 众所周知,MySQL不同的隔离级别可能会出现不同的问题。其中,有一问题就是在可重复读隔离级别会出现幻读问题。可能会有人说:不是说MySQL的可重复读隔离级不会出现幻读吗?怎么会出现幻读? 这里有2个问题需要明确: ① MySQL官方并未说明可重复读隔离级别不会出现幻读 ② 什么是幻读 问题① 查看MySQL官方相关资料,官方也会标明可重复读隔离级别可能会出现幻读 问题② 要理解幻读是可见与不可见的一种权衡。如果用一句话说明,那就是:幻读是看不到数据,却能感受到它存在的一种现象 产生幻读的本质是不同读的方式:当前读 or 快照读,这两种方式的选择 数据库中数据操作方式,一般分...

数据库 2022/05/08 193℃ 0条

go字符串无拷贝转换切片的一个问题

1.字符串无拷贝转换切片 提起 字符串无拷贝转换切片 这个话题,可能很多人会想到下面一段代码: func string2Slice(s string) []byte { return *(*[]byte)(unsafe.Pointer(&s)) } 这段代码利用了指针进行强转,并且在实现过程中不会出现数据拷贝,简单、强大! 2.同一切片多次获取容量结果不相同 来看一个测试用例: package test import ( "fmt" "testing" "unsafe" ) func string2Slice(s string) []byte ...

Golang,编程原理 2022/04/22 236℃ 0条

认识智能语音呼叫系统

1. 什么是智能语音系统 现实生活中,会遇到下面一些场景: 1.对着iPhone说"hey, siri" 2.对着智能音响说"天猫精灵","小爱同学","小度小度" 3.对着导航说""要到XXX,请帮我规划路线" 4.接到阿里云打来的服务报警电话 5.接到银行、通讯服务商、电商平台的推销电话 6.机器人在线客服 ... 对于上面的场景,不知道你遇到过或用过多少。他们有一个共同的特点:人机交互;他们有一个通用的叫法:智能语音系统。 说起智能语音系统,很多人可能第一次听说。不理解没关系,在这里跟随我的步伐一起来看看这是个什么东西。 如果对 智能语音系统 这个专业名词进行拆解,大概可以拆分为...

系统架构 2022/04/12 216℃ 0条