Go语言进阶Part1 | 青训营笔记

68 阅读2分钟

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

课程内容

语言进阶、依赖管理、测试、项目实战。

Go语言进阶

并发与并行:

并发:单核多线程

并行:多核多线程

image.png

线程与协程:

协程:用户态,栈是kb级

线程:内核态,栈是mb级

Channel通道通信共享内存:

make(chan int, 2) # 有缓冲
make(chan int) # 无缓冲,阻塞 

并发安全Lock:

加锁为了让输出稳定,否则输出结果未知。

在共享内存时,不要使用不安全语法的读写操作。

WaitGroup:

add计数器+1,done计数器-1,在计数器为0之前始终wait阻塞

依赖管理

Gopath

缺点:项目直接依赖src包下的代码;不能对package进行多版本控制

Go Vendor

缺点:不能控制依赖的版本,更新项目可能出现依赖不兼容,编译出错。

Go Module

用go.mod 文件管理依赖包的版本,用go get/go mod指令工具管理依赖包

依赖管理三要素

配置文件,描述依赖:go.mod;

中心仓库管理依赖库:Proxy;

本地工具:go get/mod

测试

回归测试

回归特定的场景

集成测试

针对具体的某个功能

单元测试

对单个函数模块进行测试

项目实战

需求分析

需求描述;需求用例;ER图

组件工具

Gin:高性能Web框架

Go Mod:go mod init 、go get

Repository

index数据索引、查询

Service

参数校验、准备数据、组装实体

Controller

构建View对象、业务错误码

Router

初始化数据索引、初始化引擎配置、构建路由、启动服务。

测试运行

分层结构

数据层 Model

外部数据的增删查改

逻辑层 Entity

处理核心业务逻辑的输出

视图层 view

处理与外部的交互逻辑

image.png

SpringMVC特点

SpringMVC是一个Web层/控制层的框架,主要用来负责与客户端/浏览器端的交互,以及业务逻辑的调用。

Spring是Service层/业务访问层的框架。

SpringMVC的特点是简单,性能更好。替代了之前的Struts2框架。

总结

学习了Go语言开发项目的细节跟注意事项。类似JavaWeb开发项目的逻辑。还有Spring框架等方面的内容。