这是我参与「第三届青训营 -后端场」笔记创作活动的第7篇笔记
应用实践
并发编程
并发 vs 并行
并发:多线程程序在一个单核通过时间片运行
并行:多线程程序在多个核的cpu上运行
- 线程:用户态,轻量级线程,栈MB级别
- 协程:内核态,线程跑多个协程,栈KB级别
通过通信共享内存
使用WaitGroup
依赖管理
测试
质量就是生命!
测试是避免事故的屏障
- 回归测试
- 集成测试
- 单元测试
从上到下,覆盖率逐层变大,成本却逐层降低
Rules:
- 所有测试文件以 _test.go结尾
- func TestXxx(t *testing.T)
- 初始化逻辑放到TestMain中
func TestMain(m *testing.M) {
//测试前:数据装载、配置初始化等前置工作
code := m.Run()
//测试后:释放资源等收尾工作
os.Exit(code)
}
评估——代码覆盖率
assert.Equal(t,true,isPass)
Tips:
- 一般覆盖率:50% ~60%
- 测试分支相互独立、全面覆盖
- 测试单元粒度足够小,函数单一职责
单元测试-Mock
基准测试
- 优化代码,需要对当前代码分析
- 内置的测试框架提供了基准测试的能力
项目实践
ER图 Entity-Relationship Diagram
分层结构