计划调整为 16 周:以 Python/Agent 为主线,新增 RAG 项目、Redis/消息队列/Docker、LangGraph、MCP、记忆、评测和岗位要求对照
This commit is contained in:
1 parent
f8a25cb765
commit
1e6315bb40
11 files changed
+1205
-629
No files matched your search
@@ -1,12 +1,14 @@
|
||||
# 转岗计划 · 第 3 周学习计划(PostgreSQL + SQL + sqlc)
|
||||
|
||||
> 所属阶段:第 1 个月 Go 全栈基础。总纲见同目录 `README.md`,上周计划 `week02-gin-api.md`,下周计划 `week04-auth-project1.md`。
|
||||
> 所属阶段:第一段 Go 全栈基础(第 1~5 周)。总纲见同目录 `README.md`,上周计划 `week02-gin-api.md`,下周计划 `week04-auth-project1.md`。
|
||||
|
||||
目标:把第 2 周任务清单里的 `MemoryStore` 换成 PostgreSQL。学会表结构设计、常用 SQL、索引、事务和数据库迁移,用 sqlc 生成类型安全的数据访问代码。因为上周用接口隔离了存储层,本周主要是新写一个 `PgStore`,接口代码基本不用动。
|
||||
|
||||
前置条件:第 2 周的 `todo-api` 已完成,`go test ./... -race` 能通过,前端能联调。
|
||||
|
||||
要求:SQL 自己写,AI 只帮你检查和解释。本周是你在 Agent 项目里设计状态表的基础,表结构设计这一块一定要自己想清楚。
|
||||
要求:SQL 自己写,AI 只帮你检查和解释。表结构设计、索引、事务是所有后端岗位的基本功,后面 RAG 和 Agent 项目设计状态表也靠它。
|
||||
|
||||
**为什么学 PostgreSQL 而招聘里 MySQL 更多**:招聘里写 MySQL 的明显更多,但两者的常用 SQL 大部分相同。本周用 PostgreSQL 学(它的 pgvector 扩展在 RAG 里也能用),文末附“MySQL 差异速查”和一个半天的小练习,面试时能说清差异就够了。
|
||||
|
||||
参考资料:
|
||||
- PostgreSQL 官方文档(中文):http://www.postgres.cn/docs/current/
|
||||
@@ -289,5 +291,29 @@ docker compose exec postgres psql -U todo -d todo # 进入交互模式
|
||||
- [ ] 会用 `ON CONFLICT` 做“存在就跳过或更新”
|
||||
- [ ] 写了能自动跳过的集成测试
|
||||
- [ ] 会做游标分页
|
||||
- [ ] 看过文末 MySQL 差异速查,能说出 3 个以上的差异
|
||||
|
||||
## 附:MySQL 差异速查(第 7 天有余力时做,或放到第 5 周的缓冲时间)
|
||||
|
||||
招聘里 MySQL 出现得多,会 PostgreSQL 后只需要知道这些差异:
|
||||
|
||||
| 方面 | PostgreSQL | MySQL 8 |
|
||||
| --- | --- | --- |
|
||||
| 自增主键 | `BIGSERIAL` 或 `GENERATED ... AS IDENTITY` | `BIGINT AUTO_INCREMENT` |
|
||||
| 插入后拿回数据 | `INSERT ... RETURNING *` | 不支持 `RETURNING`,用 `LAST_INSERT_ID()` 再查一次 |
|
||||
| 存在就更新 | `ON CONFLICT (...) DO UPDATE` | `ON DUPLICATE KEY UPDATE` |
|
||||
| 布尔 | `BOOLEAN` | `TINYINT(1)`(`BOOLEAN` 是它的别名) |
|
||||
| 时间 | `TIMESTAMPTZ` 带时区 | `DATETIME` 不带时区,`TIMESTAMP` 有范围限制;一般统一存 UTC |
|
||||
| JSON | `JSONB`,可建索引 | `JSON`,索引要借助生成列 |
|
||||
| 字符集 | 默认 UTF-8 | 建库时指定 `utf8mb4`,否则存不了表情符号 |
|
||||
| 字符串比较 | 默认区分大小写 | 默认排序规则一般不区分大小写 |
|
||||
| 存储引擎 | 只有一种 | 用 InnoDB(支持事务和外键) |
|
||||
| 占位符(Go 驱动) | `$1, $2` | `?` |
|
||||
|
||||
**小练习(半天)**
|
||||
- 在 `docker-compose.yml` 里加一个 `mysql:8` 服务(端口 `3306`)。
|
||||
- `sql/practice/mysql_schema.sql`:把 `000001` 和 `000003` 迁移改写成 MySQL 语法,跑通。
|
||||
- `sql/practice/mysql_notes.md`:记下改写时遇到的每一处差异。
|
||||
- 了解即可:sqlc 也支持 MySQL(`engine: mysql`),GORM 两种数据库都支持,换库主要改的是 SQL 方言和驱动。
|
||||
|
||||
下周预告:第 4 周在这套基础上做项目一“团队任务看板”:注册登录、JWT、看板成员权限、按状态分列的任务,前后端完整联调。
|
||||
Reference in new issue
Block a user