mxllcf

导航

随笔分类 -  JAVA学习

MESI缓存一致性协议以及Volatile
摘要:MESI(Modified, Exclusive, Shared, Invalid)是一种缓存一致性协议,用于解决多处理器系统中,多个处理器对同一块内存的并发读写可能导致的数据不一致性问题。MESI协议维护了每个缓存行的四种状态: Modified(M): 表示缓存行已被修改,并且是唯一的拷贝。当其 阅读全文

posted @ 2023-10-18 10:29 mxllcf 阅读(116) 评论(0) 推荐(0)

Redis如何实现自动续期
摘要:在Redis中,可以使用Lua脚本结合SET命令和EXPIRE命令来实现自动续期和加锁的操作。可以在给定的超时时间内自动续期锁。 local lockKey = KEYS[1] -- 锁的键名 local lockValue = ARGV[1] -- 锁的值 local lockTimeout = 阅读全文

posted @ 2023-10-17 14:53 mxllcf 阅读(1127) 评论(0) 推荐(0)

redis中的zest
摘要:Zset也就是sortset,它的底层数据结构包括ziplist或skiplist,在同时满足下列两个条件的时候使用ziplist: 有序集合保存的元素数量小于128个 有序集合保存的所有元素的长度小于64字节 其他时候使用skiplist,主要用在比如成绩排序啊,比如点赞数量,排行榜等。 阅读全文

posted @ 2022-07-25 21:20 mxllcf 阅读(240) 评论(0) 推荐(0)

LongAdder
摘要:事情的开头是因为在阿里巴巴开发手册上看见了这个,建议在jdk8 的环境下,使用LongADDer对象,会比AtomicLong效率高。 实践得出。。。。的确高了一个位,在这里记录一哈。。 保证i++的操作: volatile不能保证原子性和线程安全,加同步锁可以,但是过于复杂,,杀鸡焉用牛刀?? 可 阅读全文

posted @ 2022-07-02 11:09 mxllcf 阅读(49) 评论(0) 推荐(0)

快速排序JAVA实现
摘要:快排的原理是: 选择一个关键值作为基准值,(可以选择第一个,也可以选择最后一个,或者随便选一个,我习惯选第一个)。 将比基准值大的都放在右边的序列中,将比基准值小的都放在左边的序列中。 具体循环过程:从后向前比较,用基准值和最后一个值进行比较。如果比基准值小,则换位,如果比基准值大,则继续比较下一个 阅读全文

posted @ 2022-01-08 13:41 mxllcf 阅读(221) 评论(0) 推荐(0)

Java读写锁代码实现
摘要:读写锁的代码实现。使用到了juc下的一个接口,ReentrantReadWriteLock。可重入的读写锁。 package deadlock; import java.util.HashMap; import java.util.Map; import java.util.concurrent.T 阅读全文

posted @ 2021-12-12 14:08 mxllcf 阅读(174) 评论(0) 推荐(0)

必然死锁——模拟两个人转账
摘要:使用syn锁对from和to进行资源的加锁。如果转账者和被转账的人都获取了相应的锁而不释放,则会造成必然的死锁。 package deadlock; /** * @author leon * @描述 转账时候遇到死锁,一旦打开注释。便会发生死锁。 */ public class TransferMo 阅读全文

posted @ 2021-11-01 10:00 mxllcf 阅读(64) 评论(0) 推荐(0)