💭 RESTful API 设计规范:返回值、状态码与响应结构 💡 核心观点:HTTP 状态码表达协议层语义,不是业务层语义。理解”单资源 vs 集合”的区分,是正确设计 API 返回值的关键。 🔑 最关键的区分:单资源 vs...
电梯底层代码如何判断该停哪一层:从请求表到方向切换的思考
一句话定位:这篇笔记只关心一件事,电梯代码到底怎么判断该停哪一层。核心理念:电梯不是“算出一个终点再一路开过去”,而是在每一层都基于当前状态重新做一次局部决策。 3 分钟速览版 点击展开核心概念 代码视角里的决策循环graph...
MySQL 线上表结构优化实战:从字段长度分析到批量 DDL 变更
🎯 一句话定位:用两段 SQL,把「凭经验猜字段长度」变成「用数据说话」的线上表结构优化工作流。 💡 核心理念:先分析再变更,数据驱动 DDL,Review 后再执行。 📋 问题背景业务场景项目里有一套调度管理系统,dem...
手动实现 SFTP/FTP 连接池,引发的深思
🎯 一句话定位:从手写 SFTP/FTP 连接池到使用 Commons Pool2,一步步看清”对象池”模式的本质——创建昂贵的资源,池化复用才是正解。 💡 核心理念:连接池不是”缓存连接”这么简单。创建、验证、回收、...
MyBatis sql 标签实战:构建可复用 SQL 片段的最佳实践
🎯 一句话定位:用 <sql> + <include> 实现 Mapper XML 中的 DRY 原则,告别复制粘贴式的 SQL 维护。 💡 核心理念:重复的 SQL 片段不是小问题——当字段名变更时...
MyBatis Plus 手动注册 LocalDateTime TypeHandler:@PostConstruct 实战
🎯 一句话定位:当 MyBatis Plus 默认的 LocalDateTime 映射失效时,用 @PostConstruct 手动注册 TypeHandler 是最可靠的解法。 💡 核心理念:理解 TypeHandler ...
Redis ZSet 实现延时告警重推:从需求出发的架构选型思考
🎯 一句话定位:一个告警重推需求,三种方案对比,一次关于「只有最适合的架构,没有最好的架构」的实战思考。 💡 核心理念:架构设计不是秀技术栈,而是在约束条件下找到最小复杂度的解决方案。 📖 3分钟速览版 📊 点击展开...
数据库迁移实战:Oracle → MySQL → 国产化数据库完整方案
🎯 一句话定位:一篇覆盖 Oracle → MySQL → 国产化数据库的全链路迁移指南,从语法差异到灰度切流,帮你少踩 80% 的坑。 💡 核心理念:迁移不是翻译 SQL,而是重新理解业务在新引擎上的最优表达。 📖 ...
自定义 RedisTemplate 使用 StringRedisSerializer 避免双重引号问题
🎯 一句话定位:解决 Redis 存储值被 """" 双重双引号包裹的序列化陷阱。 💡 核心理念:让 RedisTemplate 只做纯字符串存取,序列化的活交给业务层自己控制。 📖...
float[][] 矩阵序列化:用 Base64 二进制编码替代 JSON 文本,避免 OOM
🎯 一句话定位:大矩阵序列化时,JSON 文本格式是内存杀手,Base64 二进制编码才是正解。 💡 核心理念:用二进制紧凑表示替代人类可读的 JSON 文本,在序列化/反序列化的每一步都减少内存分配。 📖 3 ...