这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记
并发和并行
多线程的角度: 并发指的是多线程程序在一个核运行 并行 多线程程序在多核的cpu上进行运行 go 可以充分发挥多核优势 实现并发:
协程和线程:
协程:用户态 轻量级
线程:内核态 可以跑多个协程
开启一个协程: 在函数前面加一个go关键字 为函数创建协程
快速打印:
协程之间通信 :提倡通过通信共享内存 不是通过共享内存而实现通县
通过通道:
通道是个引用类型: make(chan 元素类型, 缓冲大小)
无缓冲通道是一个同步通道
例子是 A 子协程 发送0-9 数字
B 计算输入数字的平方
在make chan 时 将b协程chan 做一个有缓冲的通道:考虑 b(消费者)的效率可能比a (生产)慢
建立有缓冲的通道使得消费者不会影响生产者的生产效率
带缓冲的通道可以均衡生产和消费不平衡的效率问题
测试
单元测试:输入 测试单元 输出 校对
通过输出和期望值校对 保证质量和提升效率
回归测试
集成测试:集成功能
单元测试: 开发者对功能模块测试
所有的测试文件都以_test.go 结尾
命名规则 fun TesXxx(*testing.T )
初始化逻辑放到testMain 中 :
fun TestMain(m * testing.M){
//测试前: 数据装载 配置初始化等前置工作
code:=m.Run()
//测试吼:释放资源等收尾工作
os.Exit(code)}
衡量代码是否通过了足够的测试:go test — cover