Python
接口错误响应应该怎么设计
以前联调接口,后端 500 只回一段文本,前端 res.json 直接抛 SyntaxError,真正的错误被吞掉,只能弹未知错误。我后来花一个小时定了统一错误格式,前后端省下的调试时间远超十倍。
Redis 缓存常见使用方式
改完首页布局传上服务器,无痕窗口和清缓存都试过,页面还是老的。文件名带 hash 也没用,问题出在 Nginx 给 HTML 设了缓存头。这篇顺便记了缓存失效为什么比加缓存难,以及什么情况下才真该上 Redis。
数据库索引的基础理解
一个 200 万行的表,按 author_id 查详情要 8 秒,EXPLAIN 出来是全表扫描。对方说应该有索引吧,指的却是主键。这篇从那次翻车讲起:索引是什么、哪些字段该建、为什么不是越多越好、联合索引的最左前缀。
Git 分支工作流的基本习惯
这个博客项目到现在都没建 git 仓库,但分支工作流我在上一家用得很多,踩过坑。这篇记分支命名、提交粒度、rebase 和 merge 怎么选、合并前的四个动作,以及怎么避免直接 push 到 main。
Python 项目为什么要使用虚拟环境
三年前我电脑里两个项目共用全局 Python,装一个 httpx 0.22 直接把 Django 那边搞崩。从那天起每个项目必须有自己的环境。这篇是我现在的工作流,外加几个真实翻车:语法版本差异、python 命令找不到、rebuild 后忘装依赖。
FastAPI 路由拆分和依赖注入实践
后端最早只有一个 main.py,九个接口不到一百行看着很顺,接口一多就找不着了。我按功能拆成 routes 子文件,拆完跑不起来,因为 include_router 要 import 和注册两步都做。后面讲依赖注入除了拿数据库还能干什么。
Python 装饰器:把重复逻辑收起来
第一次写装饰器我漏了 wraps,函数的名字和文档字符串全变成 wrapper 的。后面记计时、权限校验、缓存、重试四个真在用的装饰器,以及它们各自在哪儿翻过车。
第一篇笔记:把知识写下来
搭这个博客前我给自己定了条规矩:没有多人同时写、没有事务需求,就不上数据库。13 张表全用 JSON 文件,读写加起来不到五十行。代价是第二天就丢过一次数据,而脚本当时还打印了成功。