- 博客(8)
- 收藏
- 关注
原创 接口重复提交、防抖与幂等性:全方位解决方案实践
本文系统分析了重复提交、接口防抖和幂等性三类常见问题的区别与解决方案。针对重复提交问题,提出了前后端配合的防护方案,包括前端按钮禁用、令牌机制及后端校验;对于接口防抖,介绍了前端延迟请求和后端请求合并的实现方法;幂等性问题则通过唯一标识与状态校验确保多次调用结果一致。文章结合代码示例,给出了可落地的技术实现方案,帮助开发者有效解决业务中的重复操作问题。
2025-07-20 19:36:07
628
原创 Java锁全解析:从基础到进阶的面试必备指南
本文系统梳理了Java中的锁机制,涵盖synchronized隐式锁、Lock显式锁及其实现类。首先从获取方式、竞争策略等维度对锁进行分类,详细解析了synchronized的实现原理和锁升级过程。随后深入分析ReentrantLock、读写锁等显式锁的特性与使用场景,并介绍自旋锁、分段锁等特殊锁的实现。最后探讨了CountDownLatch、CyclicBarrier等并发工具类中的锁机制应用,为Java多线程开发提供了全面的锁技术参考。
2025-07-20 14:00:00
335
原创 AQS 原理与源码深度解析:从面试问到实践
本文深入解析了Java并发编程核心组件AQS(AbstractQueuedSynchronizer)的实现原理。AQS通过CLH队列锁机制管理线程竞争,使用volatile变量state表示同步状态,支持独占(如ReentrantLock)和共享(如Semaphore)两种模式。文章详细剖析了AQS的核心数据结构、状态变量、加锁/释放锁流程,并通过ReentrantLock的公平锁与非公平锁实现进行源码级分析。此外还介绍了条件变量实现和应用场景,帮助读者全面理解AQS作为Java并发包基础框架的设计思想,掌
2025-07-20 10:00:00
397
原创 慎用 @Async:从 ThreadLocal 失效到 Cookie 丢失的连环坑
摘要: 线上导出接口因@Async异步调用导致Cookie丢失,触发文件中心鉴权失败。问题根源在于异步线程无法继承主线程的HttpServletRequest上下文,且请求对象在主线程结束后失效。解决方案包括:提取必要参数(如Cookie)而非传递Request、使用InheritableThreadLocal传递上下文,或重构逻辑避免跨服务异步调用。此外,@Async还存在异常处理黑洞(需实现AsyncUncaughtExceptionHandler)、事务失效(需分离异步与事务方法)及线程池耗尽(需自定
2025-07-19 14:00:00
448
原创 字段加密的设计与实践:远离 getter 加密的陷阱
摘要 本文探讨了字段加密的合理设计方式。作者通过实际案例指出,在实体类getter中直接实现加密逻辑存在严重问题,包括破坏代码一致性、引发二次加密、导致序列化失败等隐患。文章提出三个加密方案:1)在API层通过拦截器处理;2)在业务层显式调用加密工具;3)在持久层使用MyBatis类型处理器。强调加密设计应遵循单一职责原则,保持处理逻辑可见且一致,并给出加密工具类实现要点。最后总结加密设计的核心原则:避免在getter/setter中加密、确保加解密成对出现、密钥独立管理、优先框架层实现,实现安全性与可维护
2025-07-18 17:27:09
733
原创 # 新手入门 RocketMQ 实战指南:从搭建到代码实现全流程
用发送消息写个类实现接收消息通过控制台查看消息状态和消费情况遇到问题先看控制台的堆积数和错误日志RocketMQ 还有很多高级功能,比如事务消息、延时消息,等熟练了再慢慢学。刚开始不用追求面面俱到,先在实际项目中用起来,遇到问题再查文档,进步会更快~如果有哪里没看懂,可以评论区问我,我会尽量用新手能听懂的话解答~
2025-07-17 11:44:03
923
原创 Spring 缓存优化:不用花大钱也能让接口飞起来
不用换数据库、不用升服务器,加个 Spring 缓存就能让接口快不少。但缓存不是银弹,像权限这类动态变化的数据就需要特别处理。先从简单的内存缓存试试水,再过渡到 Redis,注意避开那些常见的坑,再整个监控体系,接口响应时间降个 80%-90%,QPS 提个 3-5 倍不是问题,数据库压力也能大减。亲测有效的低成本方案,赶紧试试吧!
2025-07-16 16:37:13
817
原创 Redis 实现消息队列解决服务数据一致性问题
摘要 本文提出利用Redis实现消息队列,解决服务A(公共系统)与服务B(业务子系统)间的数据一致性问题。对比定时任务全量更新(时效性差、负载高)与Redis消息队列增量更新后,推荐采用Redis Stream(支持持久化、消费者组、消息确认)作为核心方案。通过Redisson实现生产者(服务A)与消费者(服务B)的交互,确保消息可靠传递与处理:生产者通过LPUSH发送消息,消费者使用阻塞式读取及ack机制保障消息不丢失。方案支持多消费者、失败重试及延迟消息(结合SortedSet),并强调Redis St
2025-07-15 16:13:31
716
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人