工程实践 | 青训营笔记

162 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第二天

主要从工程实践角度介绍go语言开发实践过程中的一些技术

1.语言进阶

1.并发和运行

image.png

1.1 goruntine

线程,比较更深入系统,属于内核态,线程里面可以跑很多个协程,他的栈在mb级 协程,用户态,在go语言里面实现,是轻量级线程,栈在kb级别

开启协程

image.png 开启协程只需要在调用函数的前面加一个go关键字

csp协程通信

协程通过通信共享内存,而不是通过共性内存来实现通信

image.png

channel具体操作

image.png

区别: 无缓冲通道:发送接受数据同步化

并发安全

image.png

不加锁可能会导致函数运行出现错误结果 共性内存需要进行保护

waitgroup

这是一个管理协程的一个方法,里面有一个计数器,来判断协程完成数量

2.依赖管理

工程项目不仅仅基于基本库 目前来说广泛应用的依赖为gomodule gopath依赖

image.png 新版本默认开启gomodule

image.png

依赖管理三要素

image.png 1.gomod 多个依赖,选择最低兼容版本 2.依赖分发-proxy 3.go mod和go get工具

3.测试

三种类型

image.png 1.回归测试 2.集成测试 3.单元测试

单元测试

image.png 一些测试规则

image.png

覆盖率没听懂。。。 单元测试的两个目标

  1. 幂等性 2. 稳定性

mock测试(测试依赖)

打桩测试

基本测试

本地测试??? 讲的就很梦幻

项目实战

1.定义实体,对应出来文章和帖子的结构体 2.初始化数据索引 3.初始化

总体来说,今天没好好预习所以学的很吃力