1. 拦截器&过滤器
Java三大器之拦截器(Interceptor)的实现原理及代码示例_春秋战国程序猿-GitCode 开源社区
JAVA中的拦截器、过滤器_java_message丶小和尚-GitCode 开源社区
2. xxl-job定时任务
3. JWT技术
4. austin项目——消息推送平台588元
5. Git上开源项目:如CHATGPT- 插件,等等
6. idea中文字符替换插件: idea环境下自动替换中文逗号、分号、句号、引号等字符,再也不用反复切换输入法
5. 接口幂等性设计方案
GitCode平台的答案:
接口幂等性可以通过多种方式实现,以下是几种常见的设计方案:
基于幂等表思想:
- 当请求到达时,先查询幂等表,检查是否存在相同的请求(依据全局唯一ID判断)。
- 若不存在,执行业务逻辑并记录请求到幂等表。
- 若存在,直接返回之前的操作结果。
利用主键/唯一索引:
- 尝试插入包含全局唯一ID的数据,主键或唯一索引冲突时说明已处理过,直接返回。
状态机幂等:
- 给每个事务分配一个状态,每次操作根据当前状态决定是否继续执行。
抽取防重表:
- 类似于幂等表,但更专注于防止重复操作,适用于特定场景。
token令牌:
- 发送请求时附带一次性token,服务器验证后删除或标记为已使用,不允许重复使用。
悲观锁(如SELECT FOR UPDATE):
- 请求开始时锁定相关数据,处理期间其他人无法修改,避免重复执行。
乐观锁:
- 更新数据时检查版本号或时间戳,若有冲突则视为重复操作。
分布式锁:
- 使用Redis或Zookeeper等实现分布式锁,同一时刻仅允许一个线程执行业务逻辑。
每种方法都有适用的场景和局限性,选择时需结合系统特性进行权衡。
SpringBoot幂等性防重token令牌实现方案(redis+annoation+interceptor实现)_防重 token 令牌-优快云博客
接口幂等性解决方案:基于token实现接口幂等的落地实现_用token机制解决幂等性问题-优快云博客
Spring Boot + Token 实现接口幂等性 | 防止表单重复提交_防止表单重复提交之幂等性-优快云博客
讲的最明白的一个:21_接口幂等性校验-token防重令牌方案流程详解_哔哩哔哩_bilibili
token+Redis机制:(如下图所示)
- 用户已进入表单页面,还没做任何事情的时候,vue钩子函数就回调获取token的接口,返回一个UUID,在前台进行存储,这个UUID也会作为Redis的key保存在Redis数据库;(此时,已经完成了上面图片中的1/2/3步);
- 当用户填好表单点击提交时,在请求头中就能携带这个唯一的token了。
- 后端接收到请求后,让这些请求都经过一个拦截器,在拦截器中解析请求头中的token,并删除Redis中的key(即token),删除成功时再放行去执行业务代码;若删除失败则说明已经有请求进行了删除操作,这已经不是第一次提交了,所以直接返回告诉用户“属于重复提交”即可。(拦截器的目的是为了防止用户快速点了多次同时进行删除Redis的key)
6. 留白,待补充。
7.单点登录: