2023.1.16 青训营笔记

106 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天

一、本堂课重点内容:

  • 本堂课的知识要点有哪些?

GO语言进阶:1.并发:多线程程序在一个核的cpu上运行

2.多线程程序在多个核的cpu上运行

Goroutine 1.协程:用户态,轻量级线程,栈MB级别。

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

快速打印hello goroutine:0~hellogoroutine:4

CSP:Communicating Sequential Processes

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

无缓冲通道make(chan int)

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

Channel A子协程发送0~9数字

B子协程计算输入数字的平方 主协程输出最后的平方数

并发安全Lock 对变量执行2000次+1操作,5个协程并发执行

WaitGroup:计数器:开启协程+1;执行结束-1;主协程阻塞直到计数器为0

快速打印hello goroutine:0~hello goroutine : 4

依赖管理:工程项目不可能基于标准库0~1编码搭建

管理依赖库

依赖管理演进:不同环境依赖的版本不同

控制依赖库的版本

环境变量GOPATH

项目代码直接依赖src下的代码

go get 下载最新版本的包到src目录下

GOPATH-弊端

场景:A和B依赖于某一package的不同版本

问题:无法实现package的多版本控制

GOVENDOR 项目目录下增加vendor文件,所有依赖包副本形式放在ProjectRoot/vendor

依赖寻址方式:vendor GOPATH

通过每个项目引入一份依赖的副本,解决了多个项目需要同一个package依赖的冲突问题。

定义版本规则和管理项目依赖关系

依赖配置-go.mod - indirect -incompatible

依赖分发-回源

无法保证构建稳定性:增加/修改/删除软件版本

无法保证依赖可用性:删除软件

增加第三方压力:代码托管平台负载问题

依赖分发-变量 GOPORXY 服务器站点URL列表,”direct“表示源站

GO语言工程实践之测试

go test

单元测试-覆盖率

如何衡量代码是否经过了足够的测试?

如何评价项目的测试水准?

如何评估项目是否达到了高水准测试等级?

单元测试-依赖:外部依赖:稳定&幂等