d2 依赖管理|青训营

90 阅读2分钟

1、并发:多线程程序在一个核的CPU上运行 协程、通道、锁、线程同步 2、并行:多线程程序在多个核的CPU上运行 Go可以充分发挥多核优势,高效运行

1.1Goroutine 协程创建由Go语言本身形成 线程可以并发跑不同协程 栈 KB 级别协程: 用户态,轻量级线程, 线程: 内核态,线程跑多个协程,栈 MB 级别

1.2CSP 遵循先入先出 共享内存数据交换 在一定程度上会影响效果 提倡通过通信共享内存而不是通过共享内存而实现通信 1.3Channel

make(chan 元素类型,[缓冲大小]) 无缓冲通道make(chan int) 有缓冲通道make(chan int,2)

此问题有概率引起错误

1.5 WautFroup

计数器 开启协程+1; 执行结束-1; 主协程阻塞直到计数器为0 实现程度 计数器为0即完成任务

02、依赖管理 1、工程项目你不可能基于标准库0-1编码搭建 2、管理依赖库

2.1 Go依赖管理演进 1、不同环境(项目)依赖版本不同 2、控制依赖库版本

2.1.1GOPATH弊端 无法实现多版本控制

V2无法做到前后兼容 无法实现多版本控制

vendor解决多个项目需要同一个package依赖的冲突问题 (引入副本)

2.1.2Go Vendor弊端 冲突

2.2依赖管理三要素 1、配置文件,描述依赖 2、中心仓库管理依赖库 3、本地工具

测试:回归测试-集成测试-单元测试

单元测试规则: 所有测试文件以_test.go结尾 func TestXxx(*testiing.T) 初始化逻辑放到TestMain中

一般覆盖率50-60%,较高覆盖率80%+ 测试分支相互独立,全面覆盖 测试单元颗粒足够小,函数单一职责

快速Mock函数 为一个函数打桩 为一个方法打桩

基准测试 : 优化代码,需要对当前代码分析 内置的测试框架提供了基准测试的能力