CSP(communicating sequential process)——通道
go语言使用通信来共享内存,而不是通过共享内存来通信
1.无缓冲通道 make(chan int) 可以理解为数量为1的有缓冲通道 2.有缓冲通道 make(chan int,num)
并发安全问题——锁
lock.Lock() lock.Unlock()
waitgroup
Go 依赖管理
GOPATH——项目工作区
1.目录结构
- bin——项目编译的二进制文件
- pkg——项目编译的中间产物,加速编译
- src——项目源码 -- go get下载最新版本的包到src目录
2.弊端:无法实现package的多版本控制
Go Vendor
1.项目目录下增加vendor文件,所有的依赖包副本形式放在vendor 2.依赖寻址方式:vendor=>GOPATH 3.弊端:无法控制依赖的版本、更新项目又可能出现依赖冲突,导致编译出错
Go Module
1.通过go.mod文件管理依赖包版本 2.通过 go get/go.mod指令工具管理依赖包
依赖管理三要素
- 配置文件,描述依赖——go.mod 2.中心仓库管理依赖库——Proxy 3.本地工具——go get/go.mod
go程序
CSP(communicating sequential process)——通道
go语言使用通信来共享内存,而不是通过共享内存来通信
1.无缓冲通道 make(chan int) 可以理解为数量为1的有缓冲通道 2.有缓冲通道 make(chan int,num)
并发安全问题——锁
lock.Lock() lock.Unlock()
#waitgroup
Go 依赖管理
GOPATH——项目工作区
- bin——项目编译的二进制文件
- pkg——项目编译的中间产物,加速编译
- src——项目源码 -- go get下载最新版本的包到src目录 2.弊端:无法实现package的多版本控制
Go Vendor
1.项目目录下增加vendor文件,所有的依赖包副本形式放在vendor 2.依赖寻址方式:vendor=>GOPATH 3.弊端:无法控制依赖的版本、更新项目又可能出现依赖冲突,导致编译出错
Go Module
1.通过go.mod文件管理依赖包版本 2.通过 go get/go.mod指令工具管理依赖包
依赖管理三要素
- 配置文件,描述依赖——go.mod 2.中心仓库管理依赖库——Proxy 3.本地工具——go get/go.mod
依赖配置-version
语义化版本 基于commit伪版本
测试
1.测试的目的是为了避免事故
测试分类
回归测试
1.手动通过中断回归一些固定的主流程场景
集成测试
1.对系统功能维度做一些测试验证
单元测试
1.开发阶段,开发者对单独的函数、模块做功能验证