Go语言进阶与依赖管理和测试|青训营笔记

51 阅读2分钟

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

18.jpg

并发vs并行

  1. 并行是指两个或者多个事件在同一时刻发生(无论从微观还是从宏观来看,二者都是一起执行的。);而并发是指两个或多个事件在同一时间间隔发生(在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。)。
  2. 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。
  3. 并行是在多台处理器上同时处理多个任务。如 hadoop 分布式集群,并发是在一台处理器上“同时”处理多个任务。

所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能

GoPath模式 VS GoModules模式

  • GOPATH 模式:项目文件夹和包文件都需要都放在 “$GOPATH/src” 目录下,不方便控制依赖包版本,一次包升级,所有依赖的项目都升级;
  • GoModules 模式:项目可以放在任意位置,新版本的 go 默认就可以把项目放在任意位置,通过 go mod 来管理依赖包,允许多个包版本存在,每个项目都维护自己的一份包版本,互不影响。

初识govendor

govendor 是一个基于 vendor 机制实现的 Go 包依赖管理命令行工具。与原生 vendor 无侵入性融合,也支持从其他依赖管理工具迁移,可以很方便的实现同一个包在不同项目中不同版本、以及无相互侵入的开发和管理。

什么是go.mod?

Modules是相关Go包的集合,是源代码交换和版本控制的单元。go命令直接支持使用Modules,包括记录和解析对其他模块的依赖性。Modules替换旧的基于GOPATH的方法,来指定使用哪些源文件。

Modules和传统的GOPATH不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至是空目录都可以作为Modules,只要其中包含有go.mod文件。