01-Go的高性能:并发编程
-
协程:用户态,轻量级线程,Go可以多核并行;
-
通道channel,通过通信实现内存共享。
无缓冲通道 make(chan int)、有缓冲通道 make(chan int,2);
- Sync关键字,实现并发安全操作和协程间的同步;
02-Go的依赖管理
1.Go依赖演进
Go的依赖管理主要经历3个阶段:GOPATH -> Go vendor -> Go Module。
GOPATH是go语言的一个环境变量,下有bin(项目编译的二进制文件),pkg(中间产物,加速编译),src(项目源码)三个文件夹。
pkg改变版本,src只能存在一个版本,所以不保证能通过编译。为了解决这个问题,Go vendor出现。
vendor每个项目引入一个依赖副本,解决依赖冲突。可是不能很好的控制依赖版本,更新项目有可能出现依赖冲突,导致编译出错。Go Module 应运而生。
2.Go module 实践
通过 go.mod 文件管理依赖包版本,通过 go get/go mod指令工具管理依赖包。
go mod init 初始化,创建go.mod文件
go mod download 下载模块到本地缓存
go mod tidy 增加需要的依赖,删除不需要的依赖
管理依赖三要素:1.配置文件,描述依赖。(go.mod) 2.中央仓库管理依赖库。(Proxy) 3.本地工具。(go get/mod)
03-测试
工作中复杂的项目,要每一部分都能测试稳定运行。这就要求不依赖外部,要求稳定幂等。实现这一目的需要mock机制。
Go语言还提供了基准测试框架。