自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 手把手教你实现通用状态机:以订单状态流转为例

本文介绍了一种通用的状态机引擎实现方法,用于解决业务开发中状态流转场景(如订单、工单等)的代码臃肿问题。文章首先阐述了状态机的核心概念(状态、事件、迁移、守卫和动作),然后详细展示了如何实现一个不依赖框架的通用状态机引擎,包括迁移规则定义(Transition)和核心引擎(StateMachine)的实现。最后,文章以订单状态流转为例,演示了如何在实际业务中应用该状态机引擎,包括定义订单状态和事件枚举、订单实体类等。通过这种实现方式,可以使状态流转逻辑更清晰、更易维护,提高代码的可扩展性。

2026-03-16 20:53:19 801

原创 注解深度解析:元注解、自定义注解与框架整合

本文从元注解入手,详解自定义注解的设计原则、实现方法,以及注解与 Jackson、AOP、Spring 的整合技巧,结合脱敏场景给出完整示例。

2026-03-16 13:03:16 685

原创 全面解析 AOP:从原理到实战(附完整示例)

AOP(面向切面编程)抽离日志、性能统计等横切逻辑,通过切面统一管理,降低耦合。Spring AOP基于AspectJ实现,仅支持方法级拦截,通过动态代理运行时织入逻辑。核心概念包含连接点、切点、通知、切面等;通知分5类,有固定执行顺序,多切面可通过@Order控制执行优先级。切点表达式支持execution、@annotation等语法,可复用。核心API可获取方法上下文,环绕通知还能控制方法执行、修改入参/返回值。实战中可通过自定义注解实现日志、性能统计、脱敏等能力,需注意切面生效问题及性能优化。

2026-03-15 11:37:37 605

原创 深度实战:自定义脱敏方案(从需求到落地)

本文针对多场景敏感字段脱敏需求,指出Hutool脱敏工具存在侵入式调用、适配性差等问题,设计了“注解+Jackson序列化+AOP”的自定义脱敏方案:通过字段注解`@Sensitive`声明脱敏规则,结合序列化器实现HTTP返回JSON自动脱敏,借助方法注解`@SensitiveResult`与AOP切面完成RPC、缓存等非JSON场景的对象脱敏,可复用Hutool规则且支持扩展;同时梳理了AOP核心概念、五种通知类型、常用切点表达式,详解了元注解、脱敏注解、AOP注解与Jackson序列化注解的用法及配合

2026-03-15 11:30:53 440

原创 实战复盘:审批流程缓存并发覆盖?从事务与MVCC视角拆解根因与修复

审批流程缓存并发覆盖问题分析与修复 在高并发场景下,审批流程保存接口出现缓存数据随机丢失问题。根因分析表明: 业务层:并发请求导致缓存刷新竞态,后执行的缓存写入会覆盖前者 事务层:Spring事务内的查询只能看到本事务变更,无法获取并发事务的未提交数据 数据库层:MySQL的MVCC机制使事务内查询只能读取事务启动时的快照数据 解决方案: 将缓存刷新移至事务提交后执行,确保读取已提交数据 使用Redisson分布式锁串行化缓存刷新过程 采用双Key切换策略缩短缓存空窗期 该方案有效解决了缓存并发覆盖问题,保

2026-03-11 21:38:55 548

原创 实战复盘:分页查询返回条数异常?一对多联表的经典陷阱

摘要: 本文复盘一个典型的分页查询陷阱——一对多联表导致返回条数异常。问题表现为某接口在分页查询时,实际返回主记录数(3条)少于预期(4条)。根因在于分页SQL直接联查明细表,导致LIMIT作用于联表后的明细行而非主表记录,经MyBatis合并后丢失数据。修复方案采用"分页查主表+批量补明细"模式:先准确分页查询主表,再通过当前页ID批量获取明细数据回填。该方案保证分页准确性,同时避免N+1查询问题。文章强调分页必须基于主表粒度,并给出三种通用解决方案,为类似一对多场景的分页实现提供最佳

2026-03-11 21:35:12 697

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除