Skip to content

Commit 0612966

Browse files
author
javamaker
committed
更新集合文章
1 parent aacfc6f commit 0612966

File tree

3 files changed

+16
-15
lines changed

3 files changed

+16
-15
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,9 @@
155155

156156
#### 基础容器
157157

158-
- ArrayList源码分析及真实大厂面试题精讲
159-
- LinkedList源码分析及真实大厂面试题精讲
160-
- HashMap源码分析及真实大厂面试题精讲
158+
- [ArrayList源码分析及真实大厂面试题精讲](https://blog.csdn.net/sihai12345/article/details/138413307?spm=1001.2014.3001.5501)
159+
- [LinkedList源码分析及真实大厂面试题精讲](https://blog.csdn.net/sihai12345/article/details/138413722?spm=1001.2014.3001.5501)
160+
- [HashMap源码分析及真实大厂面试题精讲](https://blog.csdn.net/sihai12345/article/details/138416578?spm=1001.2014.3001.5501)
161161
- TreeMap源码分析及真实大厂面试题精讲
162162
- TreeSet源码分析及真实大厂面试题精讲
163163
- LinkedHashMap源码分析及真实大厂面试题精讲

docs/database/MySQL面试题一.md

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -310,12 +310,12 @@ InnoDB存储引擎中存在着不同类型的锁,下面一一介绍一下。
310310

311311
- S or X (共享锁、排他锁)的兼容性
312312

313-
![](http://image.ouyangsihai.cn/Fvr5OSfX9nP2Ip30O088kVx-Pdza)
313+
![](https://img-blog.csdnimg.cn/20191022121422475.png)
314314

315315

316316
- IS or IX (共享、排他)意向锁的兼容性
317317

318-
![](http://image.ouyangsihai.cn/Fgf-Pg6JPVJ7CmPyrdcow_5q-VZm)
318+
![](https://img-blog.csdnimg.cn/20191022121422644.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpaGFpMTIzNDU=,size_16,color_FFFFFF,t_70)
319319

320320
**注意:** 任意 IS/IX 锁之间都是兼容的,因为它们只表示想要对表加锁,而不是真正加锁。
321321

@@ -353,7 +353,7 @@ InnoDB存储引擎中存在着不同类型的锁,下面一一介绍一下。
353353

354354
##### MySQL 不同引擎支持的锁的粒度
355355

356-
![](http://image.ouyangsihai.cn/FvpMs-9FmTS7IKUBEv3WCm0IFJJH)
356+
![](https://img-blog.csdnimg.cn/20191022121422292.png)
357357

358358
> 了解一致性非锁定读和一致性锁定读吗?
359359
@@ -372,7 +372,7 @@ InnoDB存储引擎中存在着不同类型的锁,下面一一介绍一下。
372372

373373
**一致性非锁定读(consistent nonlocking read)** 是指InnoDB存储引擎通过多版本控制(MVVC)读取当前数据库中行数据的方式。如果读取的行正在执行DELETE或UPDATE操作,这时读取操作不会因此去等待行上锁的释放。相反地,InnoDB会去读取行的一个快照。所以,非锁定读机制大大提高了数据库的并发性。
374374

375-
![来自网络:侵权删](http://image.ouyangsihai.cn/FhF001C8JBPwaEXPgJ9TEzFT8C6X)
375+
![来自网络:侵权删](https://img-blog.csdnimg.cn/2019102212142395.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpaGFpMTIzNDU=,size_16,color_FFFFFF,t_70)
376376

377377
一致性非锁定读是InnoDB默认的读取方式,即读取不会占用和等待行上的锁。在事务隔离级别`READ COMMITTED``REPEATABLE READ`下,InnoDB使用一致性非锁定读。
378378

@@ -382,7 +382,7 @@ InnoDB存储引擎中存在着不同类型的锁,下面一一介绍一下。
382382

383383
首先创建一张表;
384384

385-
![](http://image.ouyangsihai.cn/FqzGMzTgnaAxaSX2Ko9YVUjnmFWt)
385+
![](https://img-blog.csdnimg.cn/20191022121423315.png)
386386

387387
插入一条数据;
388388

@@ -396,19 +396,19 @@ insert into lock_test values(1);
396396
select @@tx_isolation;
397397
```
398398

399-
![](http://image.ouyangsihai.cn/Fn3A5-fYhDs8rb0VvNMC1OL6B9sW)
399+
![](https://img-blog.csdnimg.cn/20191022121423531.png)
400400

401401
下面分为两种事务进行操作。
402402

403403
`REPEATABLE READ`事务隔离级别下;
404404

405-
![](http://image.ouyangsihai.cn/FhE1WGAeSkZGAq90Cx1alh3dZTVa)
405+
![](https://img-blog.csdnimg.cn/20191022121423748.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpaGFpMTIzNDU=,size_16,color_FFFFFF,t_70)
406406

407407
`REPEATABLE READ`事务隔离级别下,读取事务开始时的行数据,所以当会话B修改了数据之后,通过以前的查询,还是可以查询到数据的。
408408

409409
`READ COMMITTED`事务隔离级别下;
410410

411-
![](http://image.ouyangsihai.cn/FrdXfAw47rFAzRks4-4Y9IoWKtl4)
411+
![](https://img-blog.csdnimg.cn/20191022121423939.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpaGFpMTIzNDU=,size_16,color_FFFFFF,t_70)
412412

413413
`READ COMMITTED`事务隔离级别下,读取该行版本最新的一个快照数据,所以,由于B会话修改了数据,并且提交了事务,所以,A读取不到数据了。
414414

@@ -423,10 +423,10 @@ InnoDB存储引擎有3种行锁的算法,其分别是:
423423
**Record Lock**:总是会去锁住索引记录,如果InnoDB存储引擎表在建立的时候没有设置任何一个索引,那么这时InnoDB存储引擎会使用隐式的主键来进行锁定。
424424

425425
**Next-Key Lock**:结合了Gap Lock和Record Lock的一种锁定算法,在Next-Key Lock算法下,InnoDB对于行的查询都是采用这种锁定算法。举个例子10,20,30,那么该索引可能被Next-Key Locking的区间为:
426-
![](http://image.ouyangsihai.cn/FrOLmJtKBxs70A0QHAc35CccZg2Y)
426+
![](https://img-blog.csdnimg.cn/20191022121424137.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpaGFpMTIzNDU=,size_16,color_FFFFFF,t_70)
427427

428428
除了Next-Key Locking,还有**Previous-Key Locking**技术,这种技术跟Next-Key Lock正好相反,锁定的区间是区间范围和前一个值。同样上述的值,使用Previous-Key Locking技术,那么可锁定的区间为:
429-
![](http://image.ouyangsihai.cn/Fr-S9vxXpA--rHGiPkWMpCdhEKxT)
429+
![](https://img-blog.csdnimg.cn/20191022121424338.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpaGFpMTIzNDU=,size_16,color_FFFFFF,t_70)
430430

431431
不是所有索引都会加上Next-key Lock的,这里有一种**特殊的情况**,在查询的列是唯一索引(包含主键索引)的情况下,`Next-key Lock`会降级为`Record Lock`
432432

@@ -452,12 +452,12 @@ SELECT * FROM test WHERE y = 3 FOR UPDATE
452452

453453
- 对于主键x
454454

455-
![](http://image.ouyangsihai.cn/Fo3ptcBFShRMwLAC1guVV4mUO-93)
455+
![](https://img-blog.csdnimg.cn/20191022121424525.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpaGFpMTIzNDU=,size_16,color_FFFFFF,t_70)
456456

457457

458458
- 辅助索引y
459459

460-
![](http://image.ouyangsihai.cn/Fj8hUM6slurRWb5SImLWWDM2YDu0)
460+
![](https://img-blog.csdnimg.cn/20191022121424732.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NpaGFpMTIzNDU=,size_16,color_FFFFFF,t_70)
461461

462462

463463
用户可以通过以下两种方式来显示的关闭Gap Lock:

docs/golang/面试题/golang面试题整理-微信完整.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,7 @@ slices maps functions
409409
#### 1、channel 是否线程安全?锁用在什么地方?
410410
411411
![图片](data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==)
412+
412413
#### 2、go channel 的底层实现原理 (数据结构)
413414
414415
![图片](https://mmbiz.qpic.cn/mmbiz_png/3wgqfEribn6fXH7I19WrA9zDKjjmfnh6uAhBkuiacRMG4zqoayxUrPtUZQHoNxic9GOvXljTCre35EUTwzrp88LaQ/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1)

0 commit comments

Comments
 (0)