自定义博客皮肤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)
  • 收藏
  • 关注

原创 innodb为什么不用跳表,redis为什么不用b+树

MySQL采用B+树作为存储结构,因其顺序访问特性适合磁盘IO,能减少读取次数;而Redis基于内存存储,采用跳表更简单高效,便于频繁的插入删除操作。两种数据结构各适应不同存储介质的特点。

2025-10-14 14:22:06 270

原创 重复消费or幂等问题

摘要:RabbitMQ消息消费需解决幂等问题,防止因网络问题导致重复消费。建议采用"一锁二判三更新"方案:1)使用Redis分布式锁处理高并发场景;2)通过业务流水或状态机判断重复消费;3)数据库唯一约束作兜底。不推荐仅依赖数据库唯一约束,因其存在insert依赖、异常处理不合理及高并发性能问题。该方案兼顾效率与可靠性,适用于不同规模系统。

2025-08-14 17:57:51 292

原创 详解JMM——java内存模型

摘要: CPU缓存通过三级结构(一二级私有、三级共享)解决CPU与内存速度不匹配问题,内存则缓解磁盘访问慢的问题。Java内存模型(JMM)抽象了线程与主内存的关系,定义主内存(存储共享数据)和本地内存(线程私有副本),通过8种操作(如read/write、lock/unlock)实现交互。JMM还提出happens-before原则确保指令顺序性和可见性,包括程序顺序、volatile变量、线程启动等规则,允许重排序但需保持结果一致性,以支持跨平台并发安全。

2025-07-19 15:16:02 1479

原创 spring事务传播行为详解

事务传播行为定义了方法间调用时的事务处理方式。常见的有:REQUIRED(默认)——加入当前事务或新建事务;REQUIRES_NEW——创建独立新事务;NESTED——作为嵌套子事务。其他包括SUPPORTS(共享事务)、NOT_SUPPORTED(非事务执行)和MANDATORY(强制要求事务)。不同传播级别决定了事务的独立性、回滚影响范围等特性,需根据业务需求选择合适的行为。理解这些机制对处理复杂业务逻辑中的事务一致性至关重要。

2025-07-10 00:10:31 420

原创 Spring@Transactional事务注解

Spring事务实现原理是通过AOP动态代理,为@Transactional方法创建代理对象,在调用时织入事务管理逻辑。事务可能失效的场景包括:未捕获异常、抛出检查异常、传播属性不当、多数据源配置问题、跨方法调用、非public方法等。失效原因包括代理无法作用于非public方法、异常未传播导致事务管理器无法感知、自调用时代理对象无法拦截等。Spring支持编程式(手动管理)和声明式(注解)两种事务管理方式。AspectJ可在编译期解决自调用问题。

2025-07-08 23:36:09 969

原创 详解synchronized

synchronized是jvm层面的内置锁,又被成为监视器锁。使用synchronized之后,会在编译之后在同步的代码块前后加上monitorenter和monitorexit字节码指令,依赖操作系统底层互斥锁实现。执行monitorenter指令时会尝试获取对象锁,如果对象没有被锁定或者已经获得了锁,锁的计数器+1。此时其他竞争锁的线程则会进入等待队列中。执行monitorexit指令时则会把计数器-1,当计数器值为0时,则锁释放,处于等待队列中的线程再继续竞争锁。

2025-07-07 21:16:35 1855 1

空空如也

空空如也

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

TA关注的人

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