Go 语言入门- 工程实践 | 青训营笔记

102 阅读2分钟

1.课程目录

image.png

2.语言进阶之-并发编程

2.1 并发 VS 并行

并发:多线程程序在一个核的cpu上运行

并行:多线程程序在多个核的cpu上运行

go可以充分发挥多核优势,高效运行。(可以说go语言就是为并发而生的)

2.2 协程 VS 线程

协程:轻量级的线程,一个线程可以拥有多个协程

线程:线程跑多个协程

如何开启协程?

实现快速打印hello 5次,那么就要用协程去处理

开启协程:在函数面前加个go关键字即可

image.png

2.3 通道的使用

image.png

首先通道分为:无缓冲通道和有缓冲通道

两者的区别:

无缓存通道:同步通道,生产一个消费一个

有缓存通道:通道容量就可以代表存放多少,那么效率也提高了

image.png

实现协程之间的通信,并且能够保证并发的安全性

1.4 并发安全Lock

对共享内存进行并发测试

image.png

1.5 利用WaitGroup去优化代码

image.png

首先wg.Add(5)开启5个协程,每次执行结束后wg,Done()方法对计数器进行减1.

最后通过wg.Wait()进行阻塞

image.png

3.依赖管理

依赖管理三要素

image.png

4.测试

不做好测试会发生哪些事故

image.png

测试分类:分为三大类型

1.回归测试,比如说刷下抖音,打开评论等,属于回归测试

2.集成测试:系统功能的测试验证,自动化的接口测试

3.单元测试:开发者对单独的函数模块进行测试

image.png

单元测试的规则

image.png

单元测试-覆盖率

image.png

需要注意的小tips

单元测试-mock

image.png

5.项目实践

1.需求背景

image.png

2.需求描述

image.png

3.需求用例 抽出两个 实体,一个话题Topic,然后就是回帖的集合PostList

image.png

定义两个实体的结构体的-ER图

image.png

分层结构

image.png

组件工具

Gin高性能 go web 框架

两个查询操作

image.png

首先定义两个索引

image.png 初始化话题数据索引

image.png

建立索引之后,我们进行一个查询操作

image.png

Service层

执行的流程:参数校验-准备数据-组装实体

image.png

image.png

两个流程没有前后的相互依赖,所以用并行去执行,提高执行效率

image.png Controller 层

image.png

Router逻辑

image.png

课后作业

image.png go里面更加关注协程的使用与通信