Day 2

127 阅读1分钟

Day 2

1 并发 VS 并行

1.1 协程

协程:用户,轻量级线程,栈MB级别

线程:内核态,线程跑多个协程,栈KB级别

1.2 CSP(communicating Sequential Processes)

提倡通过通信共享内存而不是通过共享内存而实现通信。

1.3 Channel

make(chan 元素类型,[缓冲大小])

  • 无缓冲通道 make(chan int)

  • 有缓冲通道 make(chan int,2)

2 依赖管理

关注业务逻辑

环境变量 $GOPATH

2.1 Go Moudule

会选择最低的兼容版本

通过 go.mod 文件管理依赖包版本

通过 go get / go mod 指令工具管理依赖包

  1. 配置文件 描述依赖 go.mod

2.中心仓库管理依赖库 Proxy

3.本地工具 go get/mod

 依赖管理基本单元
 
 原生库
 
 单元依赖


2.2 依赖分发 Proxy

环境变量 $GOPROXY

导入第三方网站的包 例如:github

2.3 工具 go get

2.4 工具 go mod

go mod init 初始化

go mod download 下载模块到本地缓存

go mod tidy 增加需要的依赖 删除不需要的依赖

3 测试

3.1 单元测试

测试单元与期望值的比较

  • 所有测试文件以_test.go 结尾

  • func TestXxx(*testing.T)

  • 初始化逻辑放到TestMain中

3.2 代码覆盖率

3.3 依赖

外部依赖=》 稳定&幂等

3.3 文件处理

3.4 Mock 函数

3.5 基准测试

3.6 优化

4 小项目

4.1 ER 图

话题 帖子

4.2 分层结构

  1. 数据层 :数据model 外部数据的增删改查
  2. 逻辑层: 业务Entity 处理核心业务逻辑输出
  3. 视图层: 视图View 处理和外部的逻辑交互