自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JUC中的CAS、ABA问题

首先介绍一下Unsafe类,它是调用硬件层面的一个原子类,而CAS在该类中则有实现,类中 有使用native修饰的开头的方法,使用的就是CAS技术,该方法调用C++中的cmpxchg的指令,C++的cmpxchg又回去调用CPU的cmpxchg指令,所以CAS是CPU支持的一种指令,CPU会进行判断如果是多核操作情况下还会加上lock指令,lock指令是CPU层面的锁,一般锁的粒度是缓存行级别。

2023-03-26 02:28:13 86 1

原创 RabbitMQ惰性队列

使用场景:消费者宕机、维护关闭 导致 消息堆积时默认情况下,消息是存储在内存中,使用惰性队列(lazy)可以将消息保存在磁盘中,减少内存开销,防止消息丢失,避免因消费者宕机,消息堆积,在3.6.0之前的版本无序做任何更改。惰性队列会把消息缓存在磁盘中,内存中保留对应的索引,需要消费这些消息的时候再通过索引到磁盘中读取惰性队列比较慢,需要根据内存中的索引到磁盘读取消息可以通过调用cannel.queueDeclare方法的时候在参数中设置,也可以通过policy的方式设置。

2022-11-06 02:50:52 627

原创 Redis实现分布式锁

实现分布式锁原则:为了确保分布式锁可用性,锁实现的同时至少同时需要满足以下四个条件:1.互斥性:在任意时刻,只有一个客户端能持有锁,使用SET NX实现2.避免死锁:即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端加锁,设置TLL过期时间实现3.解铃还须系铃人: 解锁和解锁必须是同一个客户端,客户端不能出现把别人加的锁解了的情况,使用UUID实现4. 原子性: 加锁解锁必须具有原子性,使用lua脚本实现。

2022-10-21 02:07:35 276 1

空空如也

空空如也

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

TA关注的人

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