Go语言工程实践|青训营

72 阅读2分钟

第二天的课程 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 依赖管理三要素

  1. 配置文件,描述依赖:go.mod
  2. 中心仓库管理依赖库:Proxy
  3. 本地工具:go get/mod

总结

第二天难免还有一些不懂的问题,总之还是进一步了解到了Go语言,日后也要坚持下去吖~