前面五天出去比赛了,因此没有时间整理笔记,今天开始梳理之前的知识点。
第二节课讲的是go语言的进阶知识与依赖管理,依赖在之前学习java中maven模块的时候学过,现在也还大概有些印象,引入程序打包运行所需要的模块,格式跟前端的http有一点点像。
首先是并发和并行的概念,因为最近在复习操作系统,所以对这一块还比较熟悉,常考的点就是区分并发和并行,并行就是多个事件一起进行,而并发只是在宏观上同时处理,而微观上分段完成。而go语言则可以发挥多核优势,高效运行。用户态与核心态则是操作系统在执行指令时为了保障系统安全做出的划分,操作系统调度计算机的软硬件资源,将涉及到关键资源的指令规定只有核心态才能使用。
与之对应,协程与线程在go语言中也有出现,程序执行的时候往往是单协程的,之前在使用java语言构建前后端交互网站时,写的程序就需要做到两端程序交替执行,其中也用到协程,线程的知识,要使用sync函数及其功能,
在讲解依赖的时候,老师又重新演示了一遍配置环境与参数的过程,我一般都是直接网上搜攻略v,然后一步步按部就班的来,但是go.mod一直不对,于是我放弃了vs code,直接使用goland,引入依赖是为了在完成大型复杂项目的时候更方便协作,提高开发的效率。、
老师分别介绍了三种依赖管理,GOPATH Go Vendor Go Moudle,Go Moudle通过go.mod管理依赖包的版本,用 go get go mod 指令工具管理依赖包,依赖管理的三要素分别是:
1.配置文件 描述依赖 go.mod
2.中心仓库管理依赖库 Proxy
3.本地工具 go get/mod
其中go mod的用法尤为重要,主要有三方面:
1.init 初始化 创建go.mod文件 2.download 下载模块本地缓存 3.tidy 增加需要的依赖,删除不需要的依赖