第二天的课程 GO语言进阶与依赖管理
课程
01.语言进阶
从并发编程的视角了解Go高性能的本质。
01.并发VS并行
并发:指一个多线程在一个核的CPU 上的运行。 并行:指多线程程序在多个核的CPU上运行。
Go语言实现了并发提供实现的高效模型,准确的调度,可以最大限制的利用计算资源充分发挥多核优势,高效运行。(Go语言就是为并发而生的)
1.1 Goroutine
协程:用户态,轻量级线程,栈KB级别。 线程:内核态,线程跑多个协程,栈MB级别。
协程的使用:
Go语言中开启一个协程,只需要在调用函数的时候,在函数前面加上一个go关键字,这样就为一个函数加上一个协程来运行。
1.2 CSP
协程中的通信: 提倡通过通信共享内存而不是通过共享内存而实现通信。
1.3 Channel
make关键字
- 无缓冲通道(同步通道):发送的goroutine和接收的goroutine同步化。
- 有缓冲通道
1.4 并发安全Lock
1.5 WaitGroup
3个语法
- Add(dalta int):计数器+delta
- Done():计数器-1
- Wait():阻塞直到计数器为0
计数器
开启协程+1;执行结束-1;主协程阻塞直到计数器为0;
02.依赖管理
了解Go语言依赖管理的演出路线。
02.背景
- 工程项目不可能基于标准库0~1编码搭建。
- 管理依赖库。
2.1 Go依赖管理演进
3个阶段:GOPATHG > Go Vendor > Go Module
- 不同环境(项目)依赖的版本不同
- 控制依赖库的版本
2.2 依赖管理三要素
- 配置文件,描述依赖:go.mod
- 中心仓库管理依赖库:Proxy
- 本地工具:go get/mod
总结
第二天难免还有一些不懂的问题,总之还是进一步了解到了Go语言,日后也要坚持下去吖~