第六届字节跳动青训营笔记篇(一) | 青训营

81 阅读3分钟

青训营知识点及感悟笔记篇(一) 1.Go语言系统学习结构:

Go语言上手-基础语言;

Go语言上手-工程实践;

高质量编程与性能调优时间;

高性能Go语言发行版优化与落地实践

2.Go语言的学习要点:开发环境,基础语法,标准库

3.Go语言特点:高性能、高并发,语法简单、学习曲线平缓,丰富的标准库,完善的工具链,静态链接,快速编译,跨平台,垃圾回收;

总结:易学且方便,适用性强

4.studygolang.com/dl: Golang的国内下载网站

goproxy.cn/: 配置快速下载第三方库网站,方便使用github网页

5.go语言的hello world程序,变量和c语言的语法相似,if else也与c相似,但条件语句无括号

6.for循环,switch语句同样与c类似,但switch无穿透现象,且类型可以为任意的,并且switch可以无循环变量直接取代if else语句

7.数组,map与其他语言的哈希和字典类似

8.其余的go语法知识点如range,指针,结构体,错误处理,字符串相关操作及格式化,json处理,时间处理,数字解析,进程信息等需要单独练习掌握

9.猜谜游戏代码构成:代码块1-先导入fmt包和math包生成随机数

代码块2-读取用户输入

代码块3-实现判断逻辑

10.代码生成网站:curlconverter.com/#go

11.请求的发出和相应共四步:创建请求,设置请求头,发起请求,读取相应; 即生成和解析response body

12.解析json的网站:oktools.net/json2go

13.代理服务器建立链接的四个阶段:协商阶段,认证阶段,请求阶段,relay阶段

14.并发:多线程程序在一个核的cpu上运行;并行:多线程程序在多个核的cpu上运行;go可以充分发挥多核优势,高效运行

15.协程:用户态,轻量级线程,栈KB级别;线程:内核态,线程跑多个协程,栈MB级别

16.提倡通过通信共享内存而不是通过共享内存而实现通信

17.go依赖管理演进:GOPATH -> Go Vendor -> Go Module

18.GOPATH:环境变量GOPATH, 项目代码直接依赖src下的代码, go get下载最新版本的包到src目录下;

弊端:无法实现package的多版本控制

19.Go Vendor:项目目录下增加vendor文件,所有依赖包副本形式放在$ProjectRoot/Vendor,依赖寻址方式:vendor=>GOPATH; 即通过每个项目引入一份依赖的副本,解决了多个项目需要同一个package依赖的冲突问题;

弊端:无法控制依赖的版本,更新项目有可能出现依赖冲突,导致编译出错

20.Go Module:通过go.mod文件管理依赖包版本,通过go get/go mod指令工具管理依赖包,最终实现定义版本规则和管理项目依赖关系

21.依赖管理三要素:配置文件,描述依赖-go.mod;中心仓库管理依赖库-Proxy;本地工具-go get/mod

22.go get example .org/pkg包括: @update-默认, @none-删除依赖, @v1.1.2-tag版本, 语义版本,@23dfdd5-特定的commit, @master-分支的最新commit

23.go mod包括init-初始化,创建go.mod文件;download-下载模块到本地缓存,tidy-增加需要的依赖,删除不需要的依赖