1.课程目录
2.语言进阶之-并发编程
2.1 并发 VS 并行
并发:多线程程序在一个核的cpu上运行
并行:多线程程序在多个核的cpu上运行
go可以充分发挥多核优势,高效运行。(可以说go语言就是为并发而生的)
2.2 协程 VS 线程
协程:轻量级的线程,一个线程可以拥有多个协程
线程:线程跑多个协程
如何开启协程?
实现快速打印hello 5次,那么就要用协程去处理
开启协程:在函数面前加个go关键字即可
2.3 通道的使用
首先通道分为:无缓冲通道和有缓冲通道
两者的区别:
无缓存通道:同步通道,生产一个消费一个
有缓存通道:通道容量就可以代表存放多少,那么效率也提高了
实现协程之间的通信,并且能够保证并发的安全性
1.4 并发安全Lock
对共享内存进行并发测试
1.5 利用WaitGroup去优化代码
首先wg.Add(5)开启5个协程,每次执行结束后wg,Done()方法对计数器进行减1.
最后通过wg.Wait()进行阻塞
3.依赖管理
依赖管理三要素
4.测试
不做好测试会发生哪些事故
测试分类:分为三大类型
1.回归测试,比如说刷下抖音,打开评论等,属于回归测试
2.集成测试:系统功能的测试验证,自动化的接口测试
3.单元测试:开发者对单独的函数模块进行测试
单元测试的规则
单元测试-覆盖率
需要注意的小tips
单元测试-mock
5.项目实践
1.需求背景
2.需求描述
3.需求用例 抽出两个 实体,一个话题Topic,然后就是回帖的集合PostList
定义两个实体的结构体的-ER图
分层结构
组件工具
Gin高性能 go web 框架
两个查询操作
首先定义两个索引
初始化话题数据索引
建立索引之后,我们进行一个查询操作
Service层
执行的流程:参数校验-准备数据-组装实体
两个流程没有前后的相互依赖,所以用并行去执行,提高执行效率
Controller 层
Router逻辑
课后作业
go里面更加关注协程的使用与通信