day2 | 青训营

109 阅读2分钟

CSP(communicating sequential process)——通道

go语言使用通信来共享内存,而不是通过共享内存来通信

1.无缓冲通道 make(chan int) 可以理解为数量为1的有缓冲通道 2.有缓冲通道 make(chan int,num)

并发安全问题——锁

lock.Lock() lock.Unlock()

waitgroup

Go 依赖管理

GOPATH——项目工作区

1.目录结构

  • bin——项目编译的二进制文件
  • pkg——项目编译的中间产物,加速编译
  • src——项目源码 -- go get下载最新版本的包到src目录

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

Go Vendor

1.项目目录下增加vendor文件,所有的依赖包副本形式放在vendor 2.依赖寻址方式:vendor=>GOPATH 3.弊端:无法控制依赖的版本、更新项目又可能出现依赖冲突,导致编译出错

Go Module

1.通过go.mod文件管理依赖包版本 2.通过 go get/go.mod指令工具管理依赖包

依赖管理三要素

  1. 配置文件,描述依赖——go.mod 2.中心仓库管理依赖库——Proxy 3.本地工具——go get/go.mod

go程序

CSP(communicating sequential process)——通道

go语言使用通信来共享内存,而不是通过共享内存来通信

1.无缓冲通道 make(chan int) 可以理解为数量为1的有缓冲通道 2.有缓冲通道 make(chan int,num)

并发安全问题——锁

lock.Lock() lock.Unlock()

#waitgroup

Go 依赖管理

GOPATH——项目工作区

  • bin——项目编译的二进制文件
  • pkg——项目编译的中间产物,加速编译
  • src——项目源码 -- go get下载最新版本的包到src目录 2.弊端:无法实现package的多版本控制

Go Vendor

1.项目目录下增加vendor文件,所有的依赖包副本形式放在vendor 2.依赖寻址方式:vendor=>GOPATH 3.弊端:无法控制依赖的版本、更新项目又可能出现依赖冲突,导致编译出错

Go Module

1.通过go.mod文件管理依赖包版本 2.通过 go get/go.mod指令工具管理依赖包

依赖管理三要素

  1. 配置文件,描述依赖——go.mod 2.中心仓库管理依赖库——Proxy 3.本地工具——go get/go.mod

依赖配置-version

语义化版本 基于commit伪版本

测试

1.测试的目的是为了避免事故

测试分类

回归测试

1.手动通过中断回归一些固定的主流程场景

集成测试

1.对系统功能维度做一些测试验证

单元测试

1.开发阶段,开发者对单独的函数、模块做功能验证