Skip to content

主题文章

后端

系统学习网络、Linux、API、MySQL、事务、安全、缓存、消息、测试、性能、部署与企业项目。68 篇文章

后端基础

后端学习地图先看清请求、应用、数据、异步任务和运行环境怎样连接,再按依赖顺序学习网络、数据库、安全、性能、部署与三种后端语言。客户端与服务器:B/S、C/S、进程和职责边界从浏览器、桌面客户端和服务器进程的连接方式开始,解释请求由谁发起、谁保存状态、谁负责业务规则。输入 URL 到页面显示:浏览器、网络与服务器的完整过程按一次导航的真实顺序,解释 URL 解析、缓存、DNS、TCP/QUIC、TLS、HTTP、代理、后端处理以及 HTML、CSS、JavaScript 的解析和渲染。

Linux 运行基础

Linux 文件、用户、组与权限:服务为什么读不到文件从 permission denied 和错误的属主开始,解释 inode、路径搜索、用户组、mode bits、ACL、umask 和 Secret 文件。Linux 进程、端口、资源与排障顺序从服务启动后立刻退出开始,沿 PID、信号、文件描述符、CPU、内存、磁盘和端口占用建立证据链。

网络与请求链

HTTPS、TLS 与证书:浏览器怎样确认连到正确的服务从证书错误和握手报文切入,解释 CA、域名校验、密钥协商、SNI、ALPN 与证书轮换。HTTP 报文、状态码与缓存语义通过请求头、响应头和重复请求结果,理解方法、状态码、内容协商、条件请求、幂等和缓存控制。Cookie、Session、Token 与浏览器状态从登录后刷新页面仍保持身份开始,拆开 Cookie 属性、服务端 Session、Bearer Token、跨站请求和退出清理。Nginx 反向代理、TLS 终止与请求路由从 502、超时和路径错配日志进入监听、upstream、Header 转发、负载均衡、静态文件和优雅 reload。

API 设计

REST 资源建模与接口边界从项目列表和单个项目请求开始,区分资源、动作、子资源、方法语义和状态转换。请求校验、错误结构与游标分页从一条 422 和一页重复数据开始,解释边界校验、字段错误、requestId、排序稳定性和游标编码。OpenAPI 契约、类型生成与兼容变更从前端类型和后端响应漂移开始,解释 OpenAPI 3.1、Schema、生成客户端、契约测试和破坏性变更。Controller、Service、Repository 的边界与事务归属从一个控制器塞满 SQL 和权限判断的故障开始,拆开协议适配、业务规则、数据访问和事务所有权。Node.js、Python、Go 的并发运行时用同一个慢 IO 接口比较事件循环、协程、线程和 goroutine,解释并发、并行、取消与资源上限。

MySQL 基础

数据库是什么:关系、表、记录与持久化从进程重启后内存数据消失开始,解释数据库服务器、存储引擎、关系表、行列和持久化读写路径。MySQL 类型、约束、主键与索引键从一条被拒绝的 INSERT 观察 NOT NULL、UNIQUE、外键、CHECK、UUID、时间精度和键的选择。

MySQL 与数据

MySQL 入门:数据库、表、SQL 与 CRUD从数据为什么需要长期保存开始,认识数据库和 MySQL,理解库、表、行、列、类型与约束,再完成连接、建表和增删改查。MySQL 事务、隔离级别与 MVCC:两个请求同时修改时发生了什么使用两个 MySQL 会话复现未提交数据不可见、快照读、当前读和丢失更新,再把 ACID 与事务代码落实到并发状态变化。

MySQL 查询

MySQL 连表、聚合与子查询:从多张表得到一个列表从项目列表需要负责人和任务数量开始,推演 JOIN、NULL、GROUP BY、HAVING、子查询和重复行。索引、EXPLAIN 与慢查询从一个 p95 变慢的列表接口开始,阅读执行计划、选择性、回表、覆盖索引和慢查询日志。

MySQL 运行

连接池、MySQL 上限与连接耗尽从 Too many connections 和线程池排队开始,建立请求并发、应用池、代理池和 MySQL max_connections 的预算关系。MySQL 备份、恢复与数据操作纪律从误删记录后的恢复窗口开始,比较逻辑备份、物理备份、binlog、恢复演练和权限隔离。

ORM 与演进

ORM、Unit of Work 与 N+1 查询从列表页发出几十条 SQL 开始,解释 ORM 映射、身份映射、Unit of Work、懒加载和预加载。迁移、种子数据与 Schema 演进从线上新增必填列失败开始,设计可重复迁移、回填、双写、切换和回滚边界。

事务与一致性

MySQL 锁、死锁与并发顺序用两个事务更新同一批项目复现等待和死锁,解释记录锁、间隙锁、索引范围和重试边界。幂等、Outbox 与 Saga:跨数据库和消息的可靠变更从支付回调重复到消息发布失败,推演幂等键、Outbox 状态、补偿动作和最终一致性。

Redis

Redis 数据结构、TTL、持久化与内存淘汰从一个 key 到期或 Redis 重启后的结果开始,比较 String、Hash、List、Set、Sorted Set、Stream 及 RDB/AOF。Cache-aside、一致性与缓存击穿从数据库已经更新但页面仍显示旧值开始,推演读旁路、失效顺序、击穿、穿透、雪崩和热 key。Redis Session、限流与租约锁用登录会话、令牌桶和短任务互斥三个例子,解释原子脚本、过期时间、租约续期和锁释放。

消息与任务

RabbitMQ 路由、ACK、重试与死信从消息在 Worker 重启后重复投递开始,解释 Exchange、Queue、Binding、确认、预取、退避和 DLQ。Kafka 分区、Consumer Group 与 Offset从一个消费者扩容却没有加速开始,解释分区顺序、Group 再均衡、Offset 提交和重复消费。RabbitMQ 与 Kafka:按消息语义和运行责任选型从后台任务、事件流和审计日志三个场景比较队列、日志、顺序、回放、运维和团队成本。Worker、定时任务与故障恢复从定时任务重复执行和 Worker 被杀开始,设计任务状态、租约、心跳、幂等、副作用记录和停机排空。

文件与对象

本地文件、S3 与 MinIO:对象存储的路径和边界从上传一个头像开始,比较本地磁盘、S3 兼容对象存储和 MinIO 的对象键、元数据、权限和生命周期。安全上传、下载与文件生命周期从伪造 MIME 和超大文件开始,覆盖大小、Magic Number、病毒扫描、预签名 URL、权限复核和删除。

认证与安全

密码、Cookie、Session 与登录流程从登录失败和会话被盗的日志开始,解释 Argon2id、验证码边界、Session 存储、Cookie 属性和退出。RBAC:角色、权限与授权判断从一个按钮隐藏却接口仍可调用开始,建立用户、角色、权限、继承和授权检查的服务端模型。ACL、多租户与数据范围隔离从用户猜测项目 ID 访问到跨租户 404,解释租户上下文、部门范围、行级过滤和查询默认条件。API 安全、Secret 管理与审计日志从泄露的环境变量和无法解释的管理员操作开始,覆盖输入边界、限流、CORS、密钥轮换、脱敏和审计不可抵赖。

认证与项目

JWT 登录不是签一个 Token:Access、Refresh、轮换与撤销从浏览器登录会话进入 JWT 签名、短时 Access Token、HttpOnly Refresh Cookie、数据库会话、轮换、重放检测和退出。

测试

后端测试金字塔、Fixture 与隔离数据库从一个通过单测却在生产失败的规则开始,安排单元、集成、契约、端到端测试和可重复 Fixture。OpenAPI、Bruno 与 API 安全测试从接口文档和实际响应不一致开始,用 Bruno/契约测试验证状态码、Schema、鉴权、租户隔离和错误结构。k6 压测:QPS、TPS、并发与 P99 延迟从平均延迟看不出用户卡顿开始,解释负载模型、到达率、并发、吞吐、P50/P95/P99 和错误预算。

性能

MySQL 查询、连接与事务性能把慢 SQL、锁等待、连接建立和事务持有时间放到一次请求的时间线中,建立可测量的优化顺序。缓存、异步任务与连接池性能从缓存命中率下降和队列堆积开始,解释缓存热度、批量、背压、Worker 并发和池化资源争用。Profiling、容量、超时预算与优雅停机从发布时请求被截断开始,串起 CPU/内存 Profiling、容量模型、分层 timeout、取消传播和 drain。

观测与治理

日志、指标、Trace 与 OpenTelemetry从一次 requestId 无法串起前后端开始,建立结构化日志、RED 指标、Trace Context、采样和敏感字段脱敏。告警、SLO、错误预算与 Runbook从告警太多导致没人处理开始,用可用性、延迟和新鲜度定义 SLI/SLO,再把告警连接到操作手册。企业工具、环境配置与权限治理从开发机能跑而候选环境失败开始,梳理密钥、配置、制品、数据库、队列、对象存储、权限、审计和 Runbook 的责任归属。

容器

OCI 镜像、容器网络与卷从容器里 localhost 指向错误服务开始,解释镜像层、容器进程、网络命名空间、服务发现、卷和 PID 1。Dockerfile 与 Compose:搭建可重复的 MySQL 后端栈从镜像在另一台机器启动失败开始,解释构建上下文、多阶段构建、环境变量、健康检查、依赖就绪和数据卷。

交付

Git 分支、Review 与环境工作流从一个无法回滚的混合提交开始,设计分支、提交粒度、Pull Request、预览环境和配置差异。CI、测试、镜像制品与供应链从 CI 通过但线上镜像不同开始,串起三语言矩阵、锁文件、SBOM、签名、不可变制品和依赖漏洞门禁。迁移、滚动发布、回滚与 Runbook从数据库迁移和应用版本不兼容开始,安排 expand/contract、候选验证、滚动发布、回滚条件和人工操作手册。

Kubernetes

Kubernetes Pod、Deployment、Service 与 Ingress从 Pod 重启和服务访问失败开始,建立工作负载、稳定服务地址、入口路由和滚动更新的对象关系。Kubernetes 探针、资源、HPA 与排障从 CrashLoopBackOff 和 OOMKilled 开始,解释 startup/readiness/liveness、requests/limits、HPA 信号和 kubectl 证据。

Node.js

Node.js 与 NestJS:运行时、模块和请求生命周期从一个 NestJS 请求进入 Node 事件循环、模块装配、Guard、Pipe、Interceptor、Exception Filter 和优雅停机。React、NestJS 与 Prisma:打通登录和项目 CRUD用一个可运行垂直切片把 React Router、TanStack Query、NestJS Controller/Service、Prisma、MySQL、租户范围和乐观版本串成完整请求链。Node.js 接入 Redis、RabbitMQ、MinIO 与质量门禁把缓存、后台任务、对象上传和 Jest/契约测试接入 NestJS 项目,解释连接关闭、重试和本地环境管理。

Python

Python 与 FastAPI:ASGI、依赖注入和异步边界从阻塞函数拖慢所有请求开始,解释 ASGI、事件循环、依赖注入、后台任务和同步代码隔离。SQLAlchemy 2、MySQL 与认证会话从 SQLAlchemy 生成的查询开始,解释 Session、Unit of Work、事务、异步驱动、Argon2id 和 Refresh Token。Python 接入 Redis、Celery、MinIO 与测试质量把 Celery 任务、Redis 状态、MinIO 预签名和 pytest/ruff/mypy 接入同一项目,处理任务重试和连接回收。

Go

Go 与 Gin:Context、并发和请求生命周期从 goroutine 泄漏和请求取消没有传播开始,解释 Gin Handler、context.Context、goroutine、channel 和 pprof 钩子。GORM、MySQL 与 Go 认证授权从 GORM 生成 SQL 和事务回调进入模型标签、预加载、乐观版本、Argon2id、JWT 和租户过滤。Go 接入 Redis、RabbitMQ、MinIO 与测试把 context-aware Redis、RabbitMQ 消费、MinIO 上传和标准测试、go vet、pprof 接入同一项目。

综合项目

企业后台综合项目:租户、权限、文件、审计与任务把三套后端和 React 管理端连接到同一契约,完成企业后台的核心资源、数据范围、上传、审计和异步进度。电商扩展:商品、库存、订单与支付回调在企业后台基础上加入库存锁、订单事务、模拟支付回调、幂等和 Outbox,追踪状态变化和补偿。AI 应用平台扩展:知识库、解析任务与聊天运行在企业后台基础设施上加入知识库、文档解析、向量写入、聊天运行和 SSE 流式输出,模型使用可替换的本地模拟适配器。