-
Go语言进阶与依赖管理
课堂重点
-
重点 1 Waitgroup
- Add(delta int) 计数器+delta
- Done() 计数器-1
- Wait() 阻塞直到计数器为0
-
重点 2 Go依赖管理三要素
- 配置文件,描述依赖 go.mod
- 中心仓库管理依赖库 Proxy
- 本地工具 go get/mod
-
高质量编程与性能调优实践
课堂重点
- 重点 1 错误和异常处理
-
简单错误
- 优先使用errors.New创建匿名变量直接表示
- 如有格式化需求,使用fmt.Errorf
-
错误的Wrap和Unwrap
- 在 fmt.Errorf 中使用 %w 关键字将一个错误关联至错误链中
- errors.Is() 和 errors.As()
-
recover(?)
- 重点 2 性能优化建议
-
atomic 包
- 锁通过操作系统实现,atomict通过硬件实现。atomic效率比锁高。
-
网络交互之网络传输
课堂重点
- 重点 1 网络传输-UDP
- 发包每次发多少?怎么避免分片?
- 怎么知道没丢包?
- 怎么权衡传输效率和质量?
- 重点 2 网络传输-TCP
- 什么是Timewait
-
认识存储与数据库
课堂重点
- 重点 1 RAID技术
-
主流存储产品剖析
课堂重点
- 重点 1 Linux文件系统的两大数据结构:Index Node & Directory Entry
Index Node 是一个文件的唯一标识 1:1,储存在磁盘
Directory Entry 内存结构(不会持久化到磁盘),与innode的关系是N:1
-
重点 2 分布式存储=在单机存储基础上实现了分布式协议,涉及大量网络交互
- 分布式文件系统HDFS:
- 分布式对象存储:
-
走进消息队列
-
消息队列-Kafka
-
重点 1 Kafka架构
-
Git 的正确使用姿势与最佳实践
-
Git 对象(object)
- 数据对象(blob object)
- 树对象(tree object)
- 提交对象(commit object)
- tag object
Git
保护分支
MR/PR
版本控制
Git Config --globe --system --local 低级别的配置会覆盖高级别的配置