好记性不如烂笔头
记录一些知识点
pengge2013
这个作者很懒,什么都没留下…
展开
-
可重入锁最大可以重入多少次
在ReentrantLock的实现中,非公平锁加锁时会判断当前是否有人持有锁,如果有人持有锁,会再次判断当前持有锁的是否是自己,如果是自己,将加重入锁,将记录锁的重入次数的字段state加1,然后判断是否溢出。由于int类型占4个字节,为32bit,最高位为符号位,取值范围为-2^31~2^31-1,当达到最大值2147483647后再加1会变成-2147483648,所以ReentrantLock的最大重入次数是2147483647。原创 2022-10-14 17:28:09 · 276 阅读 · 1 评论 -
volatile实现原理
可见性实现主要借助汇编lock前缀指令来实现。lock前缀会发出LOCK#信号指令执行分为两种情况:变量所在内存缓存行(cache line)对齐:不加锁,直接修改主存值变量所在内存缓存行(cache line)没有对齐:锁缓存行,修改主存值MESI协议:当CPU写数据时,如果发现操作的变量是共享变量,即在其它 CPU 中也存在该变量的副本,会发出信号通知其它CPU将该内存变量的缓存行设置为无效。原创 2022-10-14 16:32:04 · 148 阅读 · 0 评论 -
MySQL索引失效的情况
13、当Mysql发现通过索引扫描的行记录数超过全表的10%-30%时,优化器可能会放弃走索引,自动变成全表扫描。11、not in和not exists。12、order by导致索引失效。1、联合索引不满足最左匹配原则。2、使用了select *5、like查询是以%开头。4、索引列参使用了函数。原创 2022-10-12 18:50:38 · 2015 阅读 · 1 评论