这是我参与「第三届青训营 -后端场」笔记创作活动的的第二篇笔记
一、语言进阶
-
并行 VS 并发
-
Go可以充分发挥多核优势,高效运行
-
多线程程序在一个核的cpu上面运行
-
多线程程序在多个核的cpu运行..
-
-
Gotoutine
-
协程(用户态)
-
轻量级线程
-
栈MB级别
-
-
线程(内核态)
-
线程跑多个程序
-
栈KB级别
-
-
-
CSP
- 提倡通过通信共享内存而不是通过共享内存而实现通信
-
Channel
-
make(chan 元素类型 , [缓冲大小])
-
无缓冲通道 make(chan int)
-
有缓冲通道 make(chan int, 2)
-
-
并发安全 Lock
-
WaitGroup
二、依赖管理
-
依赖管理演变进程
-
GOPATH、GO Vendor、Go Moudle
-
GOPATH 环境变量
-
bin 项目编译的二进制文件
-
pkg 项目编译产生的中间产物,加速编译
-
src 项目源码(项目代码直接依赖src中的代码)
-
go get下载最新版本的包到src目录下面
-
弊端 无法实现package的多版本控制
-
-
Go Vendor
-
README.md
-
dao
-
handle
-
main.go
-
service
-
vendor 项目中的所有依赖包放到此位置,每个项目引入一份依赖的副本,解决了多个项目需要同一个package依赖的冲突问题。
-
问题:无法控制依赖的版本,更新项目时可能出现依赖冲突的问题,导致编译出错。
-
-
Go Moudule
-
通过go.mod文件管理依赖包版本
-
通过 go get/go mod指令命令管理依赖包
-
配置文件,描述依赖 go.mod
-
中心仓库管理依赖库 Proxy
-
本地工具 go get/mod
-
go get
-
@update 默认
-
@none 删除依赖
-
@1.1.2 tag版本,语义版本
-
@23dfdd5 特定的commit
-
-
go mod
-
go init 初始化,创建go.mod文件
-
download 下载模块到本地缓存
-
tidy 增加需要的依赖,删除不需要的依赖
-
-
依赖管理三要素
-
配置文件,描述依赖 go.mod
-
中心仓库管理依赖库 Proxy
-
本地工具 go get/mod
-
-
-
三、测试
-
回归测试
-
集成测试
-
单元测试
-
所有测试文件以_test.go结尾
-
func TestXxx(*testing.T)
-
初始化逻辑放到TestMain中
-
-
基准测试
四、项目实践
-
需求分析
-
需求用例
-
ER 图
-
分层结构
-
数据层:数据Model,外部数据的增删改查
-
逻辑层:业务Enity,处理核心业务逻辑输出
-
视图层:视图view,处理和外部的交互逻辑
-
-
组件工具
-
Gin 高性能 go web框架
-
Go Mod
-
go mod init
-
go get
-
-
-
Repository
-
Repository-index
-
Repository-查询
-
Service
-
Controller
-
Router
-
运行