目录

后端笔记 | go语言进阶与依赖管理

GO语言进阶与依赖

并发和并行:

  1. 并发

    • 多个任务在同一时间段内交替执行,但不一定同时执行。在单核CPU上,操作系统通过时间片轮转等方式让多个任务看起来是同时进行的。

    • 示例

  2. 并行

    • 多个任务在多个核的CPU上同时执行,真正实现了同时性。

    • 示例

线程和协程:

协程:用户级,轻量态,kb级别

线程:内核级,线程跑多个协程,栈MB级别

实现线程协程:

go中提倡通过共享内存来实现通信

解决生产者消费者不均匀的问题

因为生产者的任务一般都比较简单,做得快,而消费者的任务比较复杂,久而久之,就会浪费生产者的效率

这样有缓存通道的话生产者的就可以生产完先放在哪里去干别的事

go也可以通过共享内存来实现多线程

go的依赖管理分类:

gopath:

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

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

弊端:

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

gopath无法实现多版本的控制

goVender:

他就是创建一个文件夹,里面保存了所有依赖的副本,每当你要用到哪个依赖的时候,他会优先从vender文件夹里面找里面没有的话就会子啊去从gopath中寻找

弊端:

如果依赖的一个文件v1和v2版本有冲突的话,他有不能正常工作了

go mould:

通过go.mod文件管理依赖包版本

通过go get 、go mod指令工具管理工具依赖包

最终目的就是通过定义版本规则和管理项目依赖关系

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

go.mod依赖配置方法

版本定义的两种规则:

会选择最新的版本,也就是c 1.4

版本定义规则
  1. 语义化版本

    • 版本号格式为 MAJOR.MINOR.PATCH

    • 规则

      • MAJOR:不兼容的API变更。
      • MINOR:向后兼容的功能添加。
      • PATCH:向后兼容的bug修复。
  2. 版本约束

    • ^:允许次版本和补丁版本的升级。

    • ~:允许补丁版本的升级。

    • 示例

      lua 复制代码
      require (
          github.com/some/package ^1.0.0
          github.com/another/package ~2.1.3
      )
本文是转载文章,点击查看原文
如有侵权,请联系 xyy@jishuzhan.net 删除
相关推荐
幻64 小时前
小S的倒排索引 | 豆包MarsCode AI刷题
青训营笔记
用户826014428301 天前
469. 环形数组最大子数组和问题
青训营笔记
用户605721920982 天前
奇妙货币交易问题 | 豆包MarsCode AI刷题
青训营笔记
我明天再来学Web渗透3 天前
“抖音互联网架构分析及高可用系统构建思考”(方向三)| 豆包MarsCode AI刷题
青训营笔记
用户302133066204 天前
第三次刷题 | 豆包MarsCode AI刷题
青训营笔记
用户9105973027709 天前
CSS详解| 豆包MarsCode AI刷题
青训营笔记
huyck9 天前
伴学笔记1|豆包MarsCode AI 刷题
青训营笔记
用户197009008153814 天前
实现一个TodoList | 青训营 x 豆包MarsCode技术训练营
青训营笔记
幻614 天前
小U的相似字符串 | 豆包MarsCode AI刷题
青训营笔记
Grin1 个月前
寻找最大葫芦 | 豆包MarsCode AI刷题
青训营笔记