› 技术方案记录 & 项目案例
$ echo "专注于应用开发·接口设计·前后端代码实现"
本站纯属个人编码自留地,记录各种技术方案、乱七八糟的项目案例,以及从后端到前端的代码实现。不接广告,不卖课,只是自己折腾的笔记 + 代码存档。
目前正在填坑: 轻量级API网关 + 自己的组件库 _
🔧 技术方案 · 瞎琢磨系列
接口设计: 幂等性实战
分布式环境下基于Redis+token的幂等方案,防止重复下单。附带压力测试对比。
前后端代码分离架构
Vue3 + TS + Axios封装,后端JWT无状态鉴权,接口签名防篡改。
数据库分页优化(偏门)
千万级数据场景下,游标分页 vs offset,实测SQL优化笔记。
📁 项目案例 · 自己造的轮子
短链接服务 · klink
高并发短链生成,布隆过滤器防穿透,支持自定义过期。日活百万? 梦里可以
个人博客系统 · 全栈手写
从0撸的markdown博客,支持动态渲染,无任何第三方框架,但丑是丑了点。
APi 测试小工具 (cli版)
命令行接口测试,支持断言与批量运行,为了调试接口写的小玩具。
💻 代码实现 · 手撕片段
// 后端接口设计: 限流注解 + 拦截器 (Java 朴实无华版)
@Retention(RetentionPolicy.RUNTIME)
public @interface RateLimit {
int value() default 10;
int timeWindow() default 60; // seconds
}
// 拦截器里用 Redis + Lua 实现滑动窗口
String luaScript =
"local key = KEYS[1] " +
"local limit = tonumber(ARGV[1]) " +
"local window = tonumber(ARGV[2]) " +
"local current = redis.call('INCR', key) " +
"if current == 1 then redis.call('EXPIRE', key, window) end " +
"return current <= limit";
// 前端调用示例(react-query 抽取)
const useApi = <T>(url: string) => {
return useQuery({
queryKey: [url],
queryFn: () => fetch(url).then(res => res.json()),
staleTime: 5_000,
});
};
↑ 随手贴的代码,写注释比写代码认真
📌 最近沉迷:
- 折腾Rust写CLI工具,编译报错30次
- 用WebSocket做一个简易协作画板(半成品)
- 整理《接口设计防坑手册》自用
damn