这是我参与「第五届青训营 」笔记创作活动的第2天
Go 语言进阶 - 工程进阶
一、本堂课重点内容:
- 语言进阶
- 依赖管理
- 测试
- 项目实战
二、详细知识点介绍:
-
并发编程
- 协程 : 用户态 , 轻量级线程 , 栈 MB 级别 。
- 线程 : 内核态 , 线程跑多个协程 , 栈 KB 级别 。
- 提倡通过通信共享内存
- Chanel
make(chan int) make(chan int,2)分别为无缓冲通道和有缓存通道
-
依赖管理
- 通过go.mod管理依赖包的版本
- 通过
go get / go mod指令工具管理依赖包 - 选择最低兼容版本
- 依赖分发-Proxy
-
测试
-
单元测试
-
覆盖率
JudgePassLine(number)- 一般覆盖率 50-60 较高覆盖率 80+
-
外部依赖=>稳定&幂等
-
Mock
-
基准测试
-
三、实践练习例子:
社区话题页面
-
需求描述
- 展示话题和回帖列表
- 不考虑前端实现,仅实现一个本地web服务
- 话题和回帖数据用文件存储
-
需求分析
- 需求用例
- ER图
-
分层结构
- 数据层:数据model,外部数据的增删改查
- 逻辑层:业务Entity,处理核心业务逻辑输出
- 视图层:视图View,处理和外部的交互逻辑
-
组件工具 四、课后个人总结:
-
本章有什么知识点不容易掌握?
- 并发编程
- 协程Goroutine
- 通道Channel
- 锁Lock
- 并发编程
-
线程同步WaitGroup
- 测试
- Mock
- 基准测试
- 测试
-
什么地方容易与其他内容混淆?
- 覆盖率
- 实战项目
- 支持对话题发布回帖。
- 回帖id生成需要保证不重复、唯一性。
- 新加回帖追加到本地文件,同时需要更新索引,注意Map的并发安全问题
五、引用参考:
- 我参考了哪些外部博客/笔记/文章?
- 文章中有什么地方是我参考引用了外部博客/笔记/文章的?