这是我参与「第五届青训营 」笔记创作活动的第2天
1.语言进阶
1.1并发编程
(1)并发与并行
- 并发:多线程程序在一个核的CPU上运行
- 并行:多线程程序在多个核的CPU上运行
Go语言可以充分发挥多核优势,高效运行
(2)相关技术
- Goroutine
- CSP
- Channel
- 并发安全Lock
- WaitGroup
2.依赖管理
2.1背景
- 对于像helloworld以及类似的单体函数只需要依赖原生SDK,而实际工程会相对复杂,我们不能基于标准库0 ~ 1编码搭建,而更多的关注业务逻辑的实现,而其他的涉及框架、日志、driver. 以及cllection等一 系列依赖都会通过sdk的方式引入,这样对依赖包的管理就显得尤为重要
2.2背景
- Go的依赖管理主要经历了3个阶段,分别是GOPATH,GO Vendor,到目前被广泛应用的Go Module,整个演进路线主要围绕实现两个目标来迭代发展的,分别是GOPATH,GO Vendor。
2.3三要素
- 配置环境,描述依赖 go.mod
- 中心仓库管理依赖库 proxy
- 本地工具 go get/mod
2.4工具
- go get example.org/pkg
- @update---------默认
- @none-----------删除依赖
- @v1.1.2----------tag版本,语义版本
- @23dfdd5-------特定的commit
- @master---------分支的最新commit
- go mod
- init---------------初始化,创建go.mod文件
- download-------下载模块到本地缓存
- tidy--------------增加需要的依赖,删除不需要的依赖
3.测试
3.1事故
(1)可能发生的错误
- 营销配置错误,导致非预期用户享受权益,资金损失10w+
- 用户提现,幕等失效,短时间可以多次提现,资金损失20w+
- 代码逻辑错误,广告位被占,无法出广告,收入损失600w+
- 代码指针使用错误,导致APP不可用,损失i kw+.
3.2测试
测试是避免损失的最后一道屏障