› 技术方案记录 & 项目案例

$ echo "专注于应用开发·接口设计·前后端代码实现"

本站纯属个人编码自留地,记录各种技术方案、乱七八糟的项目案例,以及从后端到前端的代码实现。不接广告,不卖课,只是自己折腾的笔记 + 代码存档。

目前正在填坑: 轻量级API网关 + 自己的组件库 _

🔧 技术方案 · 瞎琢磨系列

接口设计: 幂等性实战

分布式环境下基于Redis+token的幂等方案,防止重复下单。附带压力测试对比。

SpringBootRedisLua脚本

前后端代码分离架构

Vue3 + TS + Axios封装,后端JWT无状态鉴权,接口签名防篡改。

Vue3Spring SecurityJWT

数据库分页优化(偏门)

千万级数据场景下,游标分页 vs offset,实测SQL优化笔记。

MySQL索引性能

📁 项目案例 · 自己造的轮子

短链接服务 · klink

高并发短链生成,布隆过滤器防穿透,支持自定义过期。日活百万? 梦里可以

NettyRedisRocksDB

个人博客系统 · 全栈手写

从0撸的markdown博客,支持动态渲染,无任何第三方框架,但丑是丑了点。

原生JSNode.jsSQLite

APi 测试小工具 (cli版)

命令行接口测试,支持断言与批量运行,为了调试接口写的小玩具。

GoCobraJSON

💻 代码实现 · 手撕片段

// 后端接口设计: 限流注解 + 拦截器 (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