这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
一、本堂课重点内容:
- 语言进阶
- 依赖管理
- 测试
- 项目实战
二、详细知识点介绍:
- Go可以充分发挥多核优势,高效运行
- 线程:用户态,轻量级线程,栈MB级别
- 协程:内核态,线程跑多个协程,栈KB级别
- 提倡通过通信共享内存而不是通过共享内存实现通信
- 无缓冲通道 make(chan int)
- 有缓冲通道 make(chan int,2)
- 协程通过高效的调度模型实现高并发操作
- channel通过通信实现共享内存
- sync实现并发安全操作和协程间同步
- GOPATH是Go语言支持的一个环境变量
- 如果存在Vender目录,会优先使用该目录下的依赖
- Go Module解决了之前依赖管理系统存在的诸如无法依赖同一个库的多个版本问题。
- 依赖管理三要素
- 1、配置文件,描述依赖 go.mod
- 2、中心仓库管理依赖库 Proxy
- 3、本地工具 go get/mod
- 测试需要保证稳定性和幂等性
- MVC分层结构 数据层、逻辑层、视图层
- 在做项目的过程中,需要考虑流程是否可以并行执行,通过压榨CPU,降低接口耗时
三、实践练习例子:
- 项目拆解
- 代码设计
- 测试运行
- 先进行需求分析,确定实体类、数据结构、逻辑结构等
- 在框架的支持下,只需要关注业务本身,基于gin搭建web服务器,通过go mod管理配置文件
- 执行go run本地启动web服务,通过curl命令请求服务暴露的接口进行测试
四、课后个人总结:
- 虽然Go是一种面向过程的编程语言,但是在实际业务开发中的框架、流程、思想等和JAVA有很多相似的地方。Go语言最大的优势就是快,尤其是Gorutine带来的高并发下的高性能,在项目开发中要体现出这种优势。