我们知道真正的docker的最正确的使用姿势是每一个应用起一个容器。而不是在一个容器中将Nginx、mysql都堆积其中。 因此每次启动一个项目要启动许多单独的容器,还需要做端口映射,实属费劲。docker-compose 帮我们做了很多事儿。 先编辑一个 docker-compose.yml 文件…
前言 由于我的电脑内存太小,不想多装台虚拟机来做实验,只能租了台华为云的服务器。可惜镜像市场中的CPU 架构是aarch64的。初期下载docker-compose时,我发现官方提供的二进制包时基于amd64的。因此官方提供的二进制包不能兼容我的aarch64。 另寻他法 下载 首先安装docker…
简介 Go 的内建 map 是不支持并发写操作的,原因是 map 写操作不是并发安全的,当你尝试多个 Goroutine 操作同一个 map,会产生报错:fatal error: concurrent map writes。 因此官方另外引入了&nb…
unsafe 虽然我们程序中引入 unsafe import "unsafe" 像是引入其他使用 go 实现的包一样,unsafe 包下的功能是不是通过 go 代码实现的,而是通过编译器实现的。 unsafe 中的功能暴露了 Go 底层的实现细节,虽然 Go 是跨平台的,但是每个…
先说说官话。 线程,有时被称为轻量级进程,是操作系统调度与CPU执行的最小单位。 协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开…