待做事情哦

本文介绍了Java中的拦截器和过滤器,XXL-JOB定时任务,JWT技术的应用,以及接口幂等性的多种实现方案,包括基于token、状态机、分布式锁等,并探讨了如何在SpringBoot中通过Redis和annoation实现防重token。还提到了单点登录(SSO)的SpringBoot+JWT实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 拦截器&过滤器

Java三大器之拦截器(Interceptor)的实现原理及代码示例_春秋战国程序猿-GitCode 开源社区

JAVA中的拦截器、过滤器_java_message丶小和尚-GitCode 开源社区

2. xxl-job定时任务

3. JWT技术

4. austin项目——消息推送平台588元

5. Git上开源项目:如CHATGPT- 插件,等等

6. idea中文字符替换插件: idea环境下自动替换中文逗号、分号、句号、引号等字符,再也不用反复切换输入法

5. 接口幂等性设计方案

GitCode平台的答案:

接口幂等性可以通过多种方式实现,以下是几种常见的设计方案:

  1. 基于幂等表思想

    • 当请求到达时,先查询幂等表,检查是否存在相同的请求(依据全局唯一ID判断)。
    • 若不存在,执行业务逻辑并记录请求到幂等表。
    • 若存在,直接返回之前的操作结果。
  2. 利用主键/唯一索引

    • 尝试插入包含全局唯一ID的数据,主键或唯一索引冲突时说明已处理过,直接返回。
  3. 状态机幂等

    • 给每个事务分配一个状态,每次操作根据当前状态决定是否继续执行。
  4. 抽取防重表

    • 类似于幂等表,但更专注于防止重复操作,适用于特定场景。
  5. token令牌

    • 发送请求时附带一次性token,服务器验证后删除或标记为已使用,不允许重复使用。
  6. 悲观锁(如SELECT FOR UPDATE)

    • 请求开始时锁定相关数据,处理期间其他人无法修改,避免重复执行。
  7. 乐观锁

    • 更新数据时检查版本号或时间戳,若有冲突则视为重复操作。
  8. 分布式锁

    • 使用Redis或Zookeeper等实现分布式锁,同一时刻仅允许一个线程执行业务逻辑。

每种方法都有适用的场景和局限性,选择时需结合系统特性进行权衡。

api幂等性设计_哔哩哔哩_bilibili     

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.单点登录:

搞懂单点登录SSO,基于SpringBoot+JWT实现单点登录解决方案-阿里云开发者社区 (aliyun.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值