Go语言上手-工程实践 | 青训营笔记

143 阅读4分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第 2 篇笔记。

一、本堂课重点内容:

  1. 语言进阶
  2. 依赖管理
  3. 测试
  4. 项目实战

二、详细知识点介绍:

1. 并发与并行

image.png

1.1 Groutine

image.png

image.png

1.2 CSP

image.png

1.3 Channel

image.png

image.png

1.4 并发安全Lock

image.png

1.5 WaitGroup

image.png

小结

image.png

以上就是go并发编程相关性的介绍。这里简单捡个小结,整个章节要涉股个方面,一个是协程,通过高效的调度瞾里实现高并发操作,一个是通道值channel,通过通信实现共享内存,最后sync相关关键字,实现并发安全操作和协程间的同步,

2. 依赖管理

image.png

2.1 Go依赖管理演进

image.png

image.png

image.png

image.png

image.png

image.png

2.2 依赖管理三要素

image.png

2.3 依赖配置

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

小结

image.png

以上就是对社区话题页面需求得到整个实现流程,这样我们从项目拆解,代码设计落地,最后测试运行就跑通了整个项目流程,为大家后期实现项目提供了一定的开发思路,当然实际项目较我们实现的需求会复杂很多,不过大家不必担心,可以通过大拆小的思路,将大需求拆解为小需求的思路来分析解决,遇到问题,各个击破,同时做好充分的测试。

3. 测试

image.png

image.png

  1. 营销配置错误,导致非预期用户享受权益,资金损失10w+
  2. 用户提现,幂等失效,短时间可以多次提现,资金损失20w+
  3. 代码逻辑错误,广告位被占,无法出广告,收入损失500w+
  4. 代码指针使用错误,导致APP不可用、损失卜kwss7274

image.png

image.png

3.1 单元测试

image.png

image.png image.png

image.png

image.png

image.png

  • 如何衡量代码是否经过了足够的测试?
  • 如何评价项目的测试水准?
  • 如何评估项目是否达到了高水准测试等级?

image.png

image.png

image.png

  • 一般覆盖率:50%~60%,·较高覆盖率80%+。
  • 测试分支相互独立、全面覆盖。
  • 测试单元粒度足够小,函数单一职责。

3.2 依赖

image.png

3.3 文件处理

image.png

3.4 Mock

image.png

image.png

3.5 基准测试

image.png

image.png

image.png

image.png

以上就是对社区话题页面需求得到整个实现流程,这样我们从项目拆解,代码设计落地,最后测试运行就跑通了整个项目流程,为大家后期实现项目提供了一定的开发思路,当然实际项目较我们实现的需求会复杂很多,不过大家不必担心,可以通过大拆小的思路,将大需求拆解为小需求的思路来分析解决,遇到问题,各个击破,同时做好充分的测试。

4. 项目实战

4.1 需求描述

image.png

  • 展示话题(标题,文字描述)和回帖列表
  • 暂不考虑前端页面实现,仅仅实现一个本地web服务
  • 话题和回帖数据用文件存储

4.2 需求用例

image.png

4.3 ER图

image.png

4.4 分层结构

image.png

4.5 组件工具

image.png

4.5 Repository

image.png

4.6 Repository_index

image.png image.png

image.png

4.7 Service

image.png

image.png

image.png

4.8 Controller

image.png

4.10 运行

image.png

小结

  • 项目拆解
  • 代码设计
  • 测试运行

以上就是对社区话题页面需求得到整个实现流程,这样我们从项目拆解,代码设计落地,最后测试运行就跑通了整个项目流程,为大家后期实现项目提供了一定的开发思路,当然实际项目较我们实现的需求会复杂很多,不过大家不必担心,可以通过大拆小的思路,将大需求拆解为小需求的思路来分析解决,遇到问题,各个击破,同时做好充分的测试。

三、课后个人总结:

学习了Go语言实际项目中开发的流程

以上就是对社区话题页面需求得到整个实现流程,这样我们从项目拆解,代码设计落地,最后测试运行就跑通了整个项目流程,为大家后期实现项目提供了一定的开发思路,当然实际项目较我们实现的需求会复杂很多,不过大家不必担心,可以通过大拆小的思路,将大需求拆解为小需求的思路来分析解决,遇到问题,各个击破,同时做好充分的测试。