🔧

后端

PHP/NodeJS/数据库等后端技术

共 65 篇文章

NestJS 邮箱验证码登录:一次性凭证、Redis 限流与邮件投递边界

从目的隔离、短码摘要、原子限流与并发消费,到 SMTP 不确定失败、账号枚举和验收矩阵。

2026/10/22
NestJSNode.js身份认证

Redis 深入:数据结构选型、缓存三大问题与分布式锁

Redis 在多数业务里同时扮演三个角色:缓存、计数器、协调原语(锁、轻量队列)。这三个角色对错误的容忍度完全不同——缓存错了大不了回源,锁错了可能重复扣款。混

2026/10/22
Redis缓存分布式锁

消息队列基础:模型、选型与可靠投递

消息队列不是"把 HTTP 调用换成异步调用"这么简单。一旦业务链路经过 MQ,就要回答三件事:消息会不会丢、会不会重复、顺序还是不是我要的。这三件事的答案取决

2026/10/22
消息队列RabbitMQKafka

服务端限流:算法、层级与降级预案

限流的本质不是"拒绝用户",而是**在流量超过容量时,由系统主动选择拒绝谁,而不是被雪崩随机选择**。没有限流的系统过载时会发生什么:请求排队 → 延迟上升 →

2026/10/22
限流RedisLua

幂等设计:从接口到消息消费的防重体系

"这个接口重复调用两次会怎样?"——这是评审任何写接口时应该脱口而出的第一问。分布式系统里,重复不是异常场景而是常态:网络超时让调用方不知道结果、客户端重试、网

2026/10/22
幂等分布式数据库

Node.js 事件循环深入:阶段、优先级与实战陷阱

Node.js 的并发模型一句话可以说完:**JS 执行是单线程的,靠事件循环驱动异步 I/O**。但这句话里的两个细节决定生产的生死:所有请求共享那一个 JS

2026/10/22
Node.js事件循环性能

RESTful API 设计指南:资源建模、状态码与版本演进

API 是服务端与消费方之间的契约:URL 怎么拼、状态码怎么用、错误怎么返回,直接决定消费方要写多少防御代码、网关能不能正确重试、监控能不能正确报警。这篇文章

2026/10/22
RESTfulAPI 设计HTTP

OAuth 2.1 与 OIDC:授权流程、令牌类型与单点登录

OAuth 是"授权委托"协议,OIDC 是在它之上补出来的"认证层"。很多团队把两者当成一个黑盒:接了个第三方登录,复制示例代码,能跑就上线。结果是 redi

2026/10/22
OAuth 2.1OIDC单点登录

JWT 深入与安全:签名算法、生命周期与撤销权衡

JWT 经常被当成"比 session 更先进"的方案直接上生产,然后撞上它的三个固有约束:令牌一旦签发在有效期内基本无法作废、载荷只是 Base64URL 谁

2026/10/22
JWT认证Node.js

WebSocket 服务端工程:连接管理、鉴权与水平扩展

把 WebSocket 接口做成"能收发消息"很容易,难的是把它放进生产环境:连接什么时候鉴权、怎么踢掉假在线的僵尸连接、广播怎么不被慢客户端拖垮、多进程部署时

2026/10/22
WebSocketNode.js实时通信

PM2 与 Node.js 进程管理:守护、集群与日志实践

Node.js 服务直接用 `node app.js` 跑在生产上,意味着一次未捕获异常就让服务归零重启、单进程只能吃一个 CPU 核、日志靠 shell 重定

2026/10/22
PM2Node.js进程管理

Nginx 生产实践:反向代理、缓存、限流与 TLS

Nginx 在多数项目里承担的是"流量第一道闸门"的角色:所有请求先进 Nginx,再由它决定转发给谁、缓存什么、拒绝什么。这篇文章按生产环境实际会用到的顺序讲

2026/10/22
Nginx反向代理限流

Docker 要点:镜像分层、容器网络与数据持久化

Docker 的日常使用不难,难的是理解它每一步背后的机制——为什么 Dockerfile 改一行要重新跑五分钟、为什么数据库容器删了数据也没了、为什么容器一启

2026/10/22
Docker容器化CI/CD

CI/CD 流水线设计:从提交到部署的安全通道

流水线的目的不是"让部署变快",而是"让每一次变更都以同样的、可验证的路径到达生产环境"。速度快只是自动化的副产品,可靠才是目标。这篇文章按流水线的实际形态讲:

2026/10/22
CI/CDDevOps部署策略

MySQL 索引优化:结构、最左前缀与执行计划分析

索引是 MySQL 调优的第一杠杆,也是被误解最多的部分——加一个索引能让查询快 100 倍,也能让写入慢 3 倍、让一条本可走索引的查询悄悄全表扫描。这篇文章

2026/10/22
MySQL索引优化EXPLAIN

MySQL 事务与隔离级别:锁、MVCC 与死锁排查

事务是数据库区别于"带 SQL 接口的文件"的分水岭,但它的行为在隔离级别这一层开始变得反直觉:同一条 SELECT 在不同级别下看到的数据不一样,两个看似无害

2026/10/22
MySQL事务MVCC

服务端日志与监控:结构化日志、指标与告警体系

日志和监控不是"打点 console.log 再装个面板",而是两套分工明确又互相配合的系统:日志回答"这一次请求到底发生了什么",监控回答"服务现在的整体状态

2026/10/22
结构化日志监控告警

Linux 运维实战:进程、磁盘、网络与排查命令清单

后端工程师迟早要在深夜登录一台"不太对劲"的服务器:服务响应慢、磁盘莫名其妙满了、连接数涨得离谱。这时候能救你的是一套固定的排查套路,而不是现场翻搜索引擎。这篇

2026/10/22
Linux运维排查

数据备份与恢复:策略、验证与演练

备份这件事有个残酷的特性:**它平时完全无法证明自己有效,出事时却必须立刻有效**。多少团队的备份体系是"每晚一个 cron 脚本 + 从来没恢复过",直到误删

2026/10/22
备份恢复容灾

分库分表:什么时候做、怎么做、代价是什么

分库分表是数据库架构里代价最高的手术:做完之后,SQL 的表达能力直接退化到"单分片",跨片聚合、跨片事务、扩容迁移全都变成新问题。它解决的是"单实例容量和写入

2026/10/22
MySQL分库分表架构

PostgreSQL 运维要点:安装配置、备份与连接排障

应用侧怎么用连接池,本仓库已有[《Prisma 与 PostgreSQL 连接池容量规划》](/blog/backend/nodejs/postgres-con

2026/10/22
PostgreSQL数据库运维PITR

Python asyncio 任务管理实战:取消、超时与结构化并发

用可运行测试说明取消清理、deadline、TaskGroup 异常收敛和有限批次的有界 worker。

2026/10/21
PythonasyncioTaskGroup

Python 迭代器、生成器与上下文管理:让数据流和资源都有边界

用可运行示例讲清按需迭代、一次性生成器、异常安全清理与 ExitStack 动态资源管理。

2026/10/21
Python迭代器生成器

Python SQLite 实战:参数化查询、事务回滚与数据边界

用内存数据库验证参数绑定、原子事务、排序白名单与 SQLite 并发边界。

2026/10/21
PythonSQLiteSQL 注入

Python HTTP 客户端实践:超时、有限重试与幂等边界

用可运行的标准库 GET 客户端验证有限重试、Retry-After、退避抖动、响应上限和非幂等请求边界。

2026/10/21
PythonHTTPurllib

本地浏览器代理安全:回环监听、Host 校验与 CORS 边界

从 loopback、真实 socket 对端与 Host/Origin 校验出发,区分 CORS、身份认证、浏览器调试口和无 shell 子进程启动。

2026/10/20
Node.js浏览器自动化Web 安全

Express API 权限设计:认证、角色授权与资源归属

区分身份认证、角色授权和资源归属检查,整理 Express 路由分组与权限回归矩阵。

2026/10/19
Node.jsExpressJWT

Node.js Streams 实战:背压、pipeline 与大文件处理

用可运行示例讲清 Readable/Writable/Transform、背压传播、取消、HTTP 文件处理与内存边界。

2026/10/19
Node.jsStreams背压

现代 PHP 后端实践:PDO、会话安全与可靠发布

从 PHP 运行时、参数化数据访问和会话安全,走到文件上传、测试、日志与可回滚发布。

2026/10/18
PHP后端PDO

PHP 基础语法与模板:类型、数组和安全输出

把 PHP 语法、分层、SQL 参数化、密码与会话、CSRF、输出编码和安全上传串成一条可落地的请求链路。

2018/7/2
PHP基础语法数组

PHP 文件读取与安全渲染:CSV 解析、UTF-8 与 HTML 输出

从受控路径读取文本和 CSV,检查失败/编码/体积边界,区分字节与字符,并安全渲染成 HTML。

2018/7/4
PHP文件读写CSV

PHP 基础、日期与表单请求

把列表/映射的键语义、空值判断、纯变换和时区显式化,避免数组与时间边界造成隐蔽错误。

2018/7/6
PHP表单基础语法

PHP 表单提交与安全注册

从 GET/POST 区分开始,验证字段类型和范围,保护 Cookie 会话写请求,并用 303 重定向避免重复提交。

2018/7/8
PHP表单身份认证

PHP 文件上传与 413:从浏览器到反向代理逐层排查

围绕上传错误码、字节/像素限制、MIME 检查、随机文件名、私有存储与受控下载建立完整防护链。

2018/7/10
PHP文件上传Nginx

PHP 音乐资料 CRUD:数据库、媒体上传与安全删除

沿用音乐列表练习,梳理新增/编辑/删除/查询的校验、锁、原子替换、CSRF 与何时升级为数据库。

2018/7/15
PHPCRUDPDO

PHP 与浏览器 Ajax:从 JSONP 迁移到 Fetch

把旧 JSONP 练习拆成浏览器请求、PHP 参数化查询与安全 DOM 渲染,并明确同源、跨域和请求竞态。

2018/7/20
PHPAjaxFetch

Python 学习路线:从语法基础到可维护的小项目

从可复现环境、语言基础和小项目测试出发,逐步进入类型标注、异步 I/O 与后端 API。

2026/10/18
PythonJavaScript学习路线

Node.js AI 网关的真流式输出:SSE、背压与安全隔离

从脱敏静态审阅出发,拆解整段缓冲、增量透传、断连取消、SSE 解析、会话隔离与日志边界。

2026/10/16
Node.jsSSE流式响应

机车零售后端的库存账本:领域拆分、操作审计与并发一致性

从库存流水、事务锁、批量与扫码操作出发,梳理可审计的零售库存写入边界。

2026/10/16
Node.jsTypeScriptExpress

本地 AI API 适配器代码复盘:真实流式、重试与安全边界

从静态代码审阅提炼本地 API 适配器的真实流式、断连取消、重试上限与日志脱敏实践。

2026/10/15
Node.jsAI APISSE

Express 登录与权限的生产安全边界:一次源码审阅清单

从一次脱敏源码审阅提炼默认管理员、JWT 密钥回退与 CORS 前缀匹配的风险和生产验收清单。

2026/10/15
ExpressJWTCORS

NestJS SSE 服务端实战:鉴权、断连取消与资源清理

实现受控 SSE 流,并沿断连路径释放资源、取消上游任务,评估代理缓冲与并发配额。

2026/10/15
NestJSNode.jsSSE

Node.js 服务优雅关停与数据库连接池:从 SIGTERM 到请求排空

把进程退出当作有序协议:停止接流量、排空 HTTP 与 WebSocket、完成有限在途任务、释放连接池,并按连接预算配置超时与告警。

2026/10/14
Node.jsNestJSPrisma

PostgreSQL 与 Prisma 零停机迁移:兼容发布、分批回填与安全收缩

用 expand-and-contract 拆解线上 schema 变更,覆盖并发索引、约束验证、可恢复批量回填、Prisma migrate deploy、台账基线和代码回滚边界。

2026/10/14
PostgreSQLPrisma数据库迁移

Webhook 接收端实战:原始请求验签、幂等收件箱与可靠处理

从反向代理保留原始请求体开始,构建常数时间 HMAC 验签、持久化收件箱、快速 ACK、幂等 worker、重试与密钥轮换;同时厘清 GitHub 签名不包含时间戳的重放边界。

2026/10/14
WebhookNode.jsHMAC

NestJS WebSocket 实战:鉴权、房间授权与可靠消息

从协议选择、握手认证、逐事件授权到断线恢复和多实例扩容,搭建不把 WebSocket 当成“免鉴权长连接”的服务端设计。

2026/10/14
Node.jsNestJSWebSocket

Python 后端开发入门:从基础语法到可测试的服务

用 JavaScript 开发者熟悉的场景学习 Python:虚拟环境、数据结构、函数、运行时校验、异常和测试。

2026/10/14
Python后端pytest

NestJS 大文件上传实战:从 413 到安全落盘

拆解 multipart 上传链路中的 413、内存峰值、鉴权、磁盘暂存、文件校验与失败清理。

2026/10/14
Node.jsNestJS文件上传

NestJS JWT 密钥配置:让认证服务在启动时拒绝弱密钥

从一个真实的 NestJS 后端改动出发,拆解启动期密钥校验、签名与验签配置一致性、密钥强度、轮换和授权边界。

2026/10/14
NestJSJWT密钥管理

库存账本一致性:用事务、原子扣减与补偿流水守住库存

从个人电商后台的库存代码审阅出发,设计并发安全的库存变更、同事务流水、批量语义、幂等重试和可审计冲正。

2026/10/14
PostgreSQLSequelize数据库事务

MongoDB 实战地图:文档建模、索引、事务与备份

从访问模式设计 BSON 文档,落到 Schema 校验、复合索引、执行计划、事务一致性与可恢复备份。

2026/10/9
MongoDB数据库文档建模

MySQL/InnoDB 实战地图:事务、索引、锁与备份恢复

从表结构与复合索引出发,理解 InnoDB 事务、锁、执行计划、分页和可验证的备份恢复流程。

2026/10/9
MySQLInnoDB数据库

Node.js 后端工程实践:事件循环、流处理、退出与可观测性

从运行时版本和事件循环入手,串起 CPU/IO 边界、流式背压、请求上下文、优雅退出、错误处理与生产排障。

2026/10/9
Node.js后端工程事件循环

邮箱验证码登录的工程实现:有效期、限次校验与发信失败处理

从验证码生成、Redis 生命周期、错误尝试限制到 SMTP 失败恢复,拆解一条能上线的邮箱登录链路。

2026/10/9
身份认证Redis邮件

Node.js 后端工程全景:48 类资源的架构与落地指南

沿请求链拆解 Node.js 运行时、HTTP、流、数据库、队列、测试、性能和供应链,并重组上游全部 48 个能力目录。

2026/10/9
开源导读后端

Node.js 安全工程手册:服务端基线、供应链防护与事件复盘

把 Node.js 安全从扫描器清单落到请求边界、身份授权、上传与 SSRF、依赖发布链、生产日志和可演练的事件处置。

2026/10/9
开源导读后端

Node 后端服务整理:NestJS、Prisma、PM2 与可回滚部署

把进程名追溯到真实源码、构建物、环境和监听端口,再建立暂存、健康检查、备份和回滚闭环。

2026/10/8
Node.jsNestJSPrisma

后台权限系统:RBAC、只读访客和接口保护

从角色权限矩阵到对象级授权、只读访客和隐藏资源隔离,建立默认拒绝、逐请求检查和完整负向测试。

2026/10/8
RBAC授权API 安全

数据库索引与查询优化:从慢查询到可解释的性能

用真实查询和 EXPLAIN 建立优化闭环,解释复合/部分索引、稳定分页、统计信息与上线风险。

2026/10/8
PostgreSQL数据库索引SQL

后台任务与队列:定时抓取、重试、幂等和失败恢复

用至少一次投递的现实假设,设计任务状态机、租约、重试、死信、幂等键、outbox 与可恢复运维。

2026/10/8
队列任务调度幂等

日志与监控:从 PM2 日志到业务可观测性

区分日志、指标、追踪和健康检查,建立关联 ID、RED/SLO 指标、脱敏规则与可执行告警。

2026/10/8
可观测性OpenTelemetry日志

数据库事务与一致性:Prisma 场景下的实战注意事项

辨析事务类型、隔离级别、条件更新、幂等和外部副作用,避免把单条原子更新误当成全链路事务。

2026/10/8
Prisma数据库事务幂等

接口限流与防爬:登录、图书、评论和上传场景怎么做

按身份、网络和资源成本分层限制登录、评论、下载与上传,兼顾代理可信边界、429 语义和滥用恢复。

2026/10/8
限流API 安全电子书

后台审计日志:谁在什么时候改了什么

区分应用日志与审计轨迹,设计可归因事件、脱敏 before/after、事务 outbox、权限和保留策略。

2026/10/8
审计日志后台管理安全

Redis 缓存设计:Key 命名、过期策略、击穿和一致性

从 cache-aside 基线出发,梳理 Key 空间、TTL、失效竞态、热点保护、内存淘汰和可观测性。

2026/10/8
Redis缓存一致性