这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
一、本堂课重点内容:
- 本节课介绍了并发编程的内容:goroutinue, channel, sync,go依赖管理演进和go Module依赖管理方案。
二、详细知识点介绍:
- 本堂课介绍了:
-
-
1,并发编程
-
线程:内核态,轻量级线程 MB级别
-
协程:用户态,线程跑多个协程,KB级别
-
开启协程:只需要再调用函数的时候前面加上一个go,这就可以为一个函数来创建一个协程来运行
-
协程之间的通信:提倡通过通信(channel)来共享内存
- channel创建:make(chan 元素类型, [缓冲大小])
-
并发安全Lock:
lock sync。Mutex lock.lock() XXX lock.unlock() -
waitGroup add(int)计数器个数 Done() 完成计数器-1 Wait()阻塞直到完成
-
- 2,依赖管理---三要素
- 配置文件,描述依赖 go.mod
- 依赖管理基本单元,原生库,单元依赖:每个依赖单的模块路径+版本的唯一标识
- 中心仓库管理依赖库 Proxy
- 解决了依赖分发中的下载问题:GOPROXY="proxy1.cn,https://proxy2.cn,…" direct 表示源站
- 本地工具 go get/mod
- go get example.org/pkg
- @update 下载默认版本
- @none 删除依赖
- @v1.1.2 指定tag版本,语义版本
- @23dfdd5 指定特定的commit版本
- @master 下载该指定分支的最新的commit版本
- go mod
- init 初始化项目,创建go.mod文件
- download 下载go.mod文件中的模块到本地缓存
- tidy 将go.mod文件中增加需要的依赖,删除不需要的依赖
- go get example.org/pkg
- 配置文件,描述依赖 go.mod
三、实践练习例子:
- 本节课主要是介绍内容没有什么代码,所以暂时没有代码。大概有的就是并发安全所介绍的两种方法 lock()和waitGroup。
四、课后个人总结:
- 本节课主要是对所教内容的了解,需要记住go get/mod 的一些命令。