Golang后端学习笔记
文章平均质量分 94
国外Golang后端大师的学习笔记,以一个简单的银行系统为例,包括设计数据库,数据库隔离级别、事务以及如何避免死锁,Golang 与数据库交互,使用 `Gin` 框架开发 `RESTful` 后端 Web 服务,使用JWT` 和 PASETO 保护 API,单元测试,构建Docker映像,K8S部署
宝码
这个作者很懒,什么都没留下…
展开
-
Golang后端学习笔记 — 7. Golang如何处理数据库事务锁
上一节,学习了如何实现一个简单的转账事务,但是,我们还没做更新账户余额的操作,因为,它稍复杂一些,需要小心处理并发事务以避免死锁。本节,将实现这个功能,顺便学习一下数据库锁,以及如何调试死锁的情况。测试驱动开发(TDD)这次,将使用一种不同的实现方式,即测试驱动开发(TDD)。思路是:首先编写测试,然后逐渐改进功能代码直到测试通过。接着上一节的store_test.go,需要TODO的地方,检查更新后的账户余额 // 3. 为`ToAccount`创建一个账目记录,金额为`+10` res原创 2022-04-18 08:46:40 · 1215 阅读 · 0 评论 -
Golang后端学习笔记 — 6. Golang操作数据库事务的方法
之前,学习了对数据库的每个表执行CRUD操作。真实的场景中,我们经常需要执行一个事务,它组合了多个表的相关操作。本节学习如何在Golang中实现它。在开始之前,先聊一下事务。什么是数据库事务?它是一个单一的工作单元,通常由多个表操作组成。比如:在我们的小银行项目中,我们要从张三的账户中向李四的账户中转账10元。该交易就包括5个操作,涉及到accounts表、entries表和transfers表:创建一个金额等于10的转账记录(transfers表)为张三创建一个账目记录,金额为-10(ent原创 2022-04-12 08:54:33 · 2080 阅读 · 0 评论 -
Golang后端学习笔记 — 5. 使用Golang为数据库CRUD写单元测试
在上一节中,学习了如何生成自动Golang CRUD代码,本节将学习如何为这些CRUD操作编写单元测试。1. 测试 CreateAccount从account.sql.go里面的CreateAccount开始,在项目的db/sqlc目录下新建一个文件account_test.go在 Golang 中有个约定,就是把测试文件和代码放在同一个文件夹内,并且测试文件的命名要以 test 后缀结尾。这个测试文件的包名是 db, 在文件里定义个函数 TestCreateAccount。Go中的每个单原创 2022-04-11 08:09:02 · 1720 阅读 · 1 评论 -
Golang后端大师班学习笔记 — 4.从SQL中生成Golang CRUD代码
本节将学习使用Golang来做CRUD操作。这里的CRUD指的是什么?C 是 Create,代表新建或向数据库插入新记录R 是 Read, 从数据库中检索记录U 是 Update,改变数据库中记录的内容D 是 Delete,从数据库中删除记录。在Golang中,有几种实现 CRUD 操作的方法。1. 使用 low-level 标准库 database/sql在官方文档 https://pkg.go.dev/database/sql#DB.QueryContext 中,可以看到如下代码示例原创 2022-04-08 10:19:17 · 2149 阅读 · 0 评论 -
3、如何使用Golang编写和执行数据库迁移
在我们使用数据库的时候,迁移模式是我们在整个应用程序生命周期中经常必须完成的一项重要任务,以适应新的业务需求,在本章中,将学习如何使用Golang编写和运行数据库迁移(DB Migration)。所以,这里需要使用一个Golang库,https://github.com/golang-migrate/migrate,这个库适用于许多不同的数据库引擎,包括:PostgreSQL、SQLite、MySQL/ MariaDB、MongoDB等等,具体可以参考官方文档。1、安装migrate库打开文档,htt原创 2022-04-07 12:13:00 · 2580 阅读 · 0 评论 -
2、安装Docker和Postgres
本章将学习如何安装 Docker Desktop下载并启动一个 Postgres 容器使用Navicat连接并管理 Postgres 数据库使用上一章生成的SQL脚本,创建 Database Schema1、安装 Docker Desktop打开Docker的官方网站,下载对应操作系统的版本,安装并启动它。打开终端,查看正在运行的Docker容器,输入 docker ps 命令目前是个空列表,因为我们还没运行任何容器。输入 docker images,可以看到镜像列表也是空的,我们原创 2022-04-06 15:41:44 · 3900 阅读 · 0 评论 -
1. 设计数据库结构
这个Golang后端大师班中,我们将学习如何使用Golang、PostgreSQL和Docker从头开始设计、开发和部署一个完整的后端。原版的课程包括:设计数据库模式并从中自动生成 SQL 代码深入了解数据库隔离级别、事务以及如何避免死锁自动生成 Golang 代码与数据库交互使用 Gin 框架开发 RESTful 后端 Web 服务使用用户身份验证、JWT 和 PASETO 保护 API使用接口和模拟编写具有高覆盖率的更强大的测试集构建用于部署的最小 Docker 映像并使用 Docke原创 2022-04-06 15:28:17 · 1989 阅读 · 0 评论