这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
课程 PPT:飞书 - 登录
Gorm
ORM 框架 updates 更新非零值(非人为初始化的默认值)需要使用结构体的 map 模型定义 | GORM - The fantastic ORM library for Golang, aims to be developer friendly. 连接数据库用到 DSN:ppt 更多使用 Find, 因为 First 找不到的时候会返回错误,如果找不到返回空数组
表达式更新(高级用法):ppt SQL 表达式更新
- 物理删除:
- 软删除:结构体增加一个 gorm. DeletedAt 字段
可防 SQL 注入
要固化链接,db. Begin () 。因为 golang 使用链接池
推荐 transaction 避免漏写 commit、rollback
Hook 操作很有用
性能提高可以使用的 2 个方法
悲观锁 redis, 乐观锁 gorm 提供了
链接状态,时长,可使用 OpenTelemetry 扩展
Kitex
RPC 框架
handler. go 写 IDL 的 Echo 内容
MVC :软工中模型分层架构
log. Fatal (err) 程序退出,不往下走了
扩展
- XDS:多流量路由、多泳道、多环境(多个测试环境)
- opentelemetry:可观测性
Hertz
HTTP 框架(赫兹) 分了 2 个 ctx 上下文
h.Use () 注册中间件
全局中间件和路由组中间件的区别:提示考虑 404 请求
dst:结构体复用-->为了高性能
biz:
- handler 函数逻辑
- model:IDL 部分
- router:路由注册等
什么场景用什么网络库,看文档 Hertz 支持切换网络标准库
实战案例
推荐看 biz_examples github
mux 连接复用