后端
PHP/NodeJS/数据库等后端技术
共 65 篇文章NestJS 邮箱验证码登录:一次性凭证、Redis 限流与邮件投递边界
从目的隔离、短码摘要、原子限流与并发消费,到 SMTP 不确定失败、账号枚举和验收矩阵。
Redis 深入:数据结构选型、缓存三大问题与分布式锁
Redis 在多数业务里同时扮演三个角色:缓存、计数器、协调原语(锁、轻量队列)。这三个角色对错误的容忍度完全不同——缓存错了大不了回源,锁错了可能重复扣款。混
消息队列基础:模型、选型与可靠投递
消息队列不是"把 HTTP 调用换成异步调用"这么简单。一旦业务链路经过 MQ,就要回答三件事:消息会不会丢、会不会重复、顺序还是不是我要的。这三件事的答案取决
服务端限流:算法、层级与降级预案
限流的本质不是"拒绝用户",而是**在流量超过容量时,由系统主动选择拒绝谁,而不是被雪崩随机选择**。没有限流的系统过载时会发生什么:请求排队 → 延迟上升 →
幂等设计:从接口到消息消费的防重体系
"这个接口重复调用两次会怎样?"——这是评审任何写接口时应该脱口而出的第一问。分布式系统里,重复不是异常场景而是常态:网络超时让调用方不知道结果、客户端重试、网
Node.js 事件循环深入:阶段、优先级与实战陷阱
Node.js 的并发模型一句话可以说完:**JS 执行是单线程的,靠事件循环驱动异步 I/O**。但这句话里的两个细节决定生产的生死:所有请求共享那一个 JS
RESTful API 设计指南:资源建模、状态码与版本演进
API 是服务端与消费方之间的契约:URL 怎么拼、状态码怎么用、错误怎么返回,直接决定消费方要写多少防御代码、网关能不能正确重试、监控能不能正确报警。这篇文章
OAuth 2.1 与 OIDC:授权流程、令牌类型与单点登录
OAuth 是"授权委托"协议,OIDC 是在它之上补出来的"认证层"。很多团队把两者当成一个黑盒:接了个第三方登录,复制示例代码,能跑就上线。结果是 redi
JWT 深入与安全:签名算法、生命周期与撤销权衡
JWT 经常被当成"比 session 更先进"的方案直接上生产,然后撞上它的三个固有约束:令牌一旦签发在有效期内基本无法作废、载荷只是 Base64URL 谁
WebSocket 服务端工程:连接管理、鉴权与水平扩展
把 WebSocket 接口做成"能收发消息"很容易,难的是把它放进生产环境:连接什么时候鉴权、怎么踢掉假在线的僵尸连接、广播怎么不被慢客户端拖垮、多进程部署时
PM2 与 Node.js 进程管理:守护、集群与日志实践
Node.js 服务直接用 `node app.js` 跑在生产上,意味着一次未捕获异常就让服务归零重启、单进程只能吃一个 CPU 核、日志靠 shell 重定
Nginx 生产实践:反向代理、缓存、限流与 TLS
Nginx 在多数项目里承担的是"流量第一道闸门"的角色:所有请求先进 Nginx,再由它决定转发给谁、缓存什么、拒绝什么。这篇文章按生产环境实际会用到的顺序讲
Docker 要点:镜像分层、容器网络与数据持久化
Docker 的日常使用不难,难的是理解它每一步背后的机制——为什么 Dockerfile 改一行要重新跑五分钟、为什么数据库容器删了数据也没了、为什么容器一启
CI/CD 流水线设计:从提交到部署的安全通道
流水线的目的不是"让部署变快",而是"让每一次变更都以同样的、可验证的路径到达生产环境"。速度快只是自动化的副产品,可靠才是目标。这篇文章按流水线的实际形态讲:
MySQL 索引优化:结构、最左前缀与执行计划分析
索引是 MySQL 调优的第一杠杆,也是被误解最多的部分——加一个索引能让查询快 100 倍,也能让写入慢 3 倍、让一条本可走索引的查询悄悄全表扫描。这篇文章
MySQL 事务与隔离级别:锁、MVCC 与死锁排查
事务是数据库区别于"带 SQL 接口的文件"的分水岭,但它的行为在隔离级别这一层开始变得反直觉:同一条 SELECT 在不同级别下看到的数据不一样,两个看似无害
服务端日志与监控:结构化日志、指标与告警体系
日志和监控不是"打点 console.log 再装个面板",而是两套分工明确又互相配合的系统:日志回答"这一次请求到底发生了什么",监控回答"服务现在的整体状态
Linux 运维实战:进程、磁盘、网络与排查命令清单
后端工程师迟早要在深夜登录一台"不太对劲"的服务器:服务响应慢、磁盘莫名其妙满了、连接数涨得离谱。这时候能救你的是一套固定的排查套路,而不是现场翻搜索引擎。这篇
数据备份与恢复:策略、验证与演练
备份这件事有个残酷的特性:**它平时完全无法证明自己有效,出事时却必须立刻有效**。多少团队的备份体系是"每晚一个 cron 脚本 + 从来没恢复过",直到误删
分库分表:什么时候做、怎么做、代价是什么
分库分表是数据库架构里代价最高的手术:做完之后,SQL 的表达能力直接退化到"单分片",跨片聚合、跨片事务、扩容迁移全都变成新问题。它解决的是"单实例容量和写入
PostgreSQL 运维要点:安装配置、备份与连接排障
应用侧怎么用连接池,本仓库已有[《Prisma 与 PostgreSQL 连接池容量规划》](/blog/backend/nodejs/postgres-con
Python asyncio 任务管理实战:取消、超时与结构化并发
用可运行测试说明取消清理、deadline、TaskGroup 异常收敛和有限批次的有界 worker。
Python 迭代器、生成器与上下文管理:让数据流和资源都有边界
用可运行示例讲清按需迭代、一次性生成器、异常安全清理与 ExitStack 动态资源管理。
Python SQLite 实战:参数化查询、事务回滚与数据边界
用内存数据库验证参数绑定、原子事务、排序白名单与 SQLite 并发边界。
Python HTTP 客户端实践:超时、有限重试与幂等边界
用可运行的标准库 GET 客户端验证有限重试、Retry-After、退避抖动、响应上限和非幂等请求边界。
本地浏览器代理安全:回环监听、Host 校验与 CORS 边界
从 loopback、真实 socket 对端与 Host/Origin 校验出发,区分 CORS、身份认证、浏览器调试口和无 shell 子进程启动。
Express API 权限设计:认证、角色授权与资源归属
区分身份认证、角色授权和资源归属检查,整理 Express 路由分组与权限回归矩阵。
Node.js Streams 实战:背压、pipeline 与大文件处理
用可运行示例讲清 Readable/Writable/Transform、背压传播、取消、HTTP 文件处理与内存边界。
现代 PHP 后端实践:PDO、会话安全与可靠发布
从 PHP 运行时、参数化数据访问和会话安全,走到文件上传、测试、日志与可回滚发布。
PHP 基础语法与模板:类型、数组和安全输出
把 PHP 语法、分层、SQL 参数化、密码与会话、CSRF、输出编码和安全上传串成一条可落地的请求链路。
PHP 文件读取与安全渲染:CSV 解析、UTF-8 与 HTML 输出
从受控路径读取文本和 CSV,检查失败/编码/体积边界,区分字节与字符,并安全渲染成 HTML。
PHP 基础、日期与表单请求
把列表/映射的键语义、空值判断、纯变换和时区显式化,避免数组与时间边界造成隐蔽错误。
PHP 表单提交与安全注册
从 GET/POST 区分开始,验证字段类型和范围,保护 Cookie 会话写请求,并用 303 重定向避免重复提交。
PHP 文件上传与 413:从浏览器到反向代理逐层排查
围绕上传错误码、字节/像素限制、MIME 检查、随机文件名、私有存储与受控下载建立完整防护链。
PHP 音乐资料 CRUD:数据库、媒体上传与安全删除
沿用音乐列表练习,梳理新增/编辑/删除/查询的校验、锁、原子替换、CSRF 与何时升级为数据库。
PHP 与浏览器 Ajax:从 JSONP 迁移到 Fetch
把旧 JSONP 练习拆成浏览器请求、PHP 参数化查询与安全 DOM 渲染,并明确同源、跨域和请求竞态。
Python 学习路线:从语法基础到可维护的小项目
从可复现环境、语言基础和小项目测试出发,逐步进入类型标注、异步 I/O 与后端 API。
Node.js AI 网关的真流式输出:SSE、背压与安全隔离
从脱敏静态审阅出发,拆解整段缓冲、增量透传、断连取消、SSE 解析、会话隔离与日志边界。
机车零售后端的库存账本:领域拆分、操作审计与并发一致性
从库存流水、事务锁、批量与扫码操作出发,梳理可审计的零售库存写入边界。
本地 AI API 适配器代码复盘:真实流式、重试与安全边界
从静态代码审阅提炼本地 API 适配器的真实流式、断连取消、重试上限与日志脱敏实践。
Express 登录与权限的生产安全边界:一次源码审阅清单
从一次脱敏源码审阅提炼默认管理员、JWT 密钥回退与 CORS 前缀匹配的风险和生产验收清单。
NestJS SSE 服务端实战:鉴权、断连取消与资源清理
实现受控 SSE 流,并沿断连路径释放资源、取消上游任务,评估代理缓冲与并发配额。
Node.js 服务优雅关停与数据库连接池:从 SIGTERM 到请求排空
把进程退出当作有序协议:停止接流量、排空 HTTP 与 WebSocket、完成有限在途任务、释放连接池,并按连接预算配置超时与告警。
PostgreSQL 与 Prisma 零停机迁移:兼容发布、分批回填与安全收缩
用 expand-and-contract 拆解线上 schema 变更,覆盖并发索引、约束验证、可恢复批量回填、Prisma migrate deploy、台账基线和代码回滚边界。
Webhook 接收端实战:原始请求验签、幂等收件箱与可靠处理
从反向代理保留原始请求体开始,构建常数时间 HMAC 验签、持久化收件箱、快速 ACK、幂等 worker、重试与密钥轮换;同时厘清 GitHub 签名不包含时间戳的重放边界。
NestJS WebSocket 实战:鉴权、房间授权与可靠消息
从协议选择、握手认证、逐事件授权到断线恢复和多实例扩容,搭建不把 WebSocket 当成“免鉴权长连接”的服务端设计。
Python 后端开发入门:从基础语法到可测试的服务
用 JavaScript 开发者熟悉的场景学习 Python:虚拟环境、数据结构、函数、运行时校验、异常和测试。
NestJS 大文件上传实战:从 413 到安全落盘
拆解 multipart 上传链路中的 413、内存峰值、鉴权、磁盘暂存、文件校验与失败清理。
NestJS JWT 密钥配置:让认证服务在启动时拒绝弱密钥
从一个真实的 NestJS 后端改动出发,拆解启动期密钥校验、签名与验签配置一致性、密钥强度、轮换和授权边界。
库存账本一致性:用事务、原子扣减与补偿流水守住库存
从个人电商后台的库存代码审阅出发,设计并发安全的库存变更、同事务流水、批量语义、幂等重试和可审计冲正。
MongoDB 实战地图:文档建模、索引、事务与备份
从访问模式设计 BSON 文档,落到 Schema 校验、复合索引、执行计划、事务一致性与可恢复备份。
MySQL/InnoDB 实战地图:事务、索引、锁与备份恢复
从表结构与复合索引出发,理解 InnoDB 事务、锁、执行计划、分页和可验证的备份恢复流程。
Node.js 后端工程实践:事件循环、流处理、退出与可观测性
从运行时版本和事件循环入手,串起 CPU/IO 边界、流式背压、请求上下文、优雅退出、错误处理与生产排障。
邮箱验证码登录的工程实现:有效期、限次校验与发信失败处理
从验证码生成、Redis 生命周期、错误尝试限制到 SMTP 失败恢复,拆解一条能上线的邮箱登录链路。
Node.js 后端工程全景:48 类资源的架构与落地指南
沿请求链拆解 Node.js 运行时、HTTP、流、数据库、队列、测试、性能和供应链,并重组上游全部 48 个能力目录。
Node.js 安全工程手册:服务端基线、供应链防护与事件复盘
把 Node.js 安全从扫描器清单落到请求边界、身份授权、上传与 SSRF、依赖发布链、生产日志和可演练的事件处置。
Node 后端服务整理:NestJS、Prisma、PM2 与可回滚部署
把进程名追溯到真实源码、构建物、环境和监听端口,再建立暂存、健康检查、备份和回滚闭环。
后台权限系统:RBAC、只读访客和接口保护
从角色权限矩阵到对象级授权、只读访客和隐藏资源隔离,建立默认拒绝、逐请求检查和完整负向测试。
数据库索引与查询优化:从慢查询到可解释的性能
用真实查询和 EXPLAIN 建立优化闭环,解释复合/部分索引、稳定分页、统计信息与上线风险。
后台任务与队列:定时抓取、重试、幂等和失败恢复
用至少一次投递的现实假设,设计任务状态机、租约、重试、死信、幂等键、outbox 与可恢复运维。
日志与监控:从 PM2 日志到业务可观测性
区分日志、指标、追踪和健康检查,建立关联 ID、RED/SLO 指标、脱敏规则与可执行告警。
数据库事务与一致性:Prisma 场景下的实战注意事项
辨析事务类型、隔离级别、条件更新、幂等和外部副作用,避免把单条原子更新误当成全链路事务。
接口限流与防爬:登录、图书、评论和上传场景怎么做
按身份、网络和资源成本分层限制登录、评论、下载与上传,兼顾代理可信边界、429 语义和滥用恢复。
后台审计日志:谁在什么时候改了什么
区分应用日志与审计轨迹,设计可归因事件、脱敏 before/after、事务 outbox、权限和保留策略。
Redis 缓存设计:Key 命名、过期策略、击穿和一致性
从 cache-aside 基线出发,梳理 Key 空间、TTL、失效竞态、热点保护、内存淘汰和可观测性。