这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
课程内容
语言进阶、依赖管理、测试、项目实战。
Go语言进阶
并发与并行:
并发:单核多线程
并行:多核多线程
线程与协程:
协程:用户态,栈是kb级
线程:内核态,栈是mb级
Channel通道通信共享内存:
make(chan int, 2) # 有缓冲
make(chan int) # 无缓冲,阻塞
并发安全Lock:
加锁为了让输出稳定,否则输出结果未知。
在共享内存时,不要使用不安全语法的读写操作。
WaitGroup:
add计数器+1,done计数器-1,在计数器为0之前始终wait阻塞
依赖管理
Gopath
缺点:项目直接依赖src包下的代码;不能对package进行多版本控制
Go Vendor
缺点:不能控制依赖的版本,更新项目可能出现依赖不兼容,编译出错。
Go Module
用go.mod 文件管理依赖包的版本,用go get/go mod指令工具管理依赖包
依赖管理三要素
配置文件,描述依赖:go.mod;
中心仓库管理依赖库:Proxy;
本地工具:go get/mod
测试
回归测试
回归特定的场景
集成测试
针对具体的某个功能
单元测试
对单个函数模块进行测试
项目实战
需求分析
需求描述;需求用例;ER图
组件工具
Gin:高性能Web框架
Go Mod:go mod init 、go get
Repository
index数据索引、查询
Service
参数校验、准备数据、组装实体
Controller
构建View对象、业务错误码
Router
初始化数据索引、初始化引擎配置、构建路由、启动服务。
测试运行
分层结构
数据层 Model
外部数据的增删查改
逻辑层 Entity
处理核心业务逻辑的输出
视图层 view
处理与外部的交互逻辑
SpringMVC特点
SpringMVC是一个Web层/控制层的框架,主要用来负责与客户端/浏览器端的交互,以及业务逻辑的调用。
Spring是Service层/业务访问层的框架。
SpringMVC的特点是简单,性能更好。替代了之前的Struts2框架。
总结
学习了Go语言开发项目的细节跟注意事项。类似JavaWeb开发项目的逻辑。还有Spring框架等方面的内容。