We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 47f25d9 commit 2bb1d62Copy full SHA for 2bb1d62
2 files changed
DB.md
@@ -7416,7 +7416,7 @@ InnoDB 加锁的基本单位是 next-key lock,该锁是行锁和 gap lock 的
7416
* 范围查询无论是否是唯一索引,都需要访问到不满足条件的第一个值为止
7417
* 对于联合索引且是唯一索引,如果 where 条件只包括联合索引的一部分,那么会加间隙锁
7418
7419
-间隙锁优点:RR 级别下间隙锁可以解决事务的一部分的**幻读问题**,通过对间隙加锁,可以防止读取过程中数据条目发生变化。一部分的意思是不会对全部间隙加锁,只能加锁一部分的间隙
+间隙锁优点:RR 级别下间隙锁可以**解决事务的一部分的幻读问题**,通过对间隙加锁,可以防止读取过程中数据条目发生变化。一部分的意思是不会对全部间隙加锁,只能加锁一部分的间隙
7420
7421
间隙锁危害:
7422
Prog.md
@@ -2921,7 +2921,7 @@ CAS 特点:
2921
2922
CAS 缺点:
2923
2924
-- 循环时间长,开销大,因为执行的是循环操作,如果比较不成功一直在循环,最差的情况某个线程一直取到的值和预期值都不一样,就会无限循环导致饥饿,**使用 CAS 线程数不要超过 CPU 的核心数**
+- 执行的是循环操作,如果比较不成功一直在循环,最差的情况某个线程一直取到的值和预期值都不一样,就会无限循环导致饥饿,**使用 CAS 线程数不要超过 CPU 的核心数**,采用分段 CAS 和自动迁移机制
2925
- 只能保证一个共享变量的原子操作
2926
- 对于一个共享变量执行操作时,可以通过循环 CAS 的方式来保证原子操作
2927
- 对于多个共享变量操作时,循环 CAS 就无法保证操作的原子性,这个时候**只能用锁来保证原子性**
@@ -3470,7 +3470,7 @@ ABA 问题:当进行获取主内存值时,该内存值在写入主内存时
3470
* `public AtomicStampedReference(V initialRef, int initialStamp)`:初始值和初始版本号
3471
3472
* 常用API:
3473
- * ` public boolean compareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)`:期望引用和期望版本号都一致才进行 CAS 修改数据
+ * ` public boolean compareAndSet(V expectedReference, V newReference, int expectedStamp, int newStamp)`:**期望引用和期望版本号都一致**才进行 CAS 修改数据
3474
* `public void set(V newReference, int newStamp)`:设置值和版本号
3475
* `public V getReference()`:返回引用的值
3476
* `public int getStamp()`:返回当前版本号
0 commit comments