Skip to content

Commit 838ece4

Browse files
committed
Update Java Notes
1 parent 4e6a884 commit 838ece4

File tree

6 files changed

+730
-314
lines changed

6 files changed

+730
-314
lines changed

DB.md

Lines changed: 32 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ mysqlshow -uroot -p1234 test book --count
449449
CREATE DATABASE db1; -- 创建db1数据库
450450
```
451451

452-
* 创建数据库(判断,如果不存在则创建)
452+
* 创建数据库判断,如果不存在则创建
453453

454454
```mysql
455455
CREATE DATABASE IF NOT EXISTS 数据库名称;
@@ -1633,7 +1633,7 @@ INSERT INTO stu_course VALUES (NULL,1,1),(NULL,1,2),(NULL,2,1),(NULL,2,2);
16331633
* 子查询
16341634
* 自关联查询
16351635

1636-
多表查询格式:
1636+
多表查询格式:(笛卡儿积)
16371637

16381638
```mysql
16391639
SELECT
@@ -1650,7 +1650,7 @@ WHERE
16501650

16511651

16521652

1653-
#### 内连接查询
1653+
#### 内连接
16541654

16551655
查询原理:内连接查询的是两张表有交集的部分数据
16561656

@@ -1673,7 +1673,7 @@ WHERE
16731673

16741674

16751675

1676-
#### 外连接查询
1676+
#### 外连接
16771677

16781678
* 左外连接:查询左表的全部数据,和左右两张表有交集部分的数据
16791679

@@ -1732,7 +1732,7 @@ WHERE
17321732

17331733

17341734

1735-
#### 自关联查询
1735+
#### 自关联
17361736

17371737
自关联查询:同一张表中有数据关联。可以多次查询这同一个表!
17381738

@@ -5493,11 +5493,11 @@ MySQL 的主从复制原理图:
54935493

54945494
* 从库的查询压力大
54955495
* 大事务的执行,主库必须要等到事务完成之后才会写入 binlog,导致从节点出现应用 binlog 延迟
5496-
* 主库的DDL,从库与主库的 DDL 同步是串行进行,DDL 在主库执行时间很长,那么从库也会消耗同样的时间
5496+
* 主库的 DDL,从库与主库的 DDL 同步是串行进行,DDL 在主库执行时间很长,那么从库也会消耗同样的时间
54975497
* 锁冲突问题也可能导致从节点的 SQL 线程执行慢
54985498
* 从库的机器性能比主库的差,导致从库的复制能力弱
54995499

5500-
主从同步问题永远都是一致性和性能的权衡,需要根据实际的应用场景,可以采取下面的办法:
5500+
主从同步问题永远都是**一致性和性能的权衡**,需要根据实际的应用场景,可以采取下面的办法:
55015501

55025502
* 二次查询,如果从库查不到数据,则再去主库查一遍,由 API 封装,比较简单,但导致主库压力大
55035503
* 降低多线程大事务并发的概率,优化业务逻辑
@@ -5875,7 +5875,7 @@ InnoDB 实现了以下两种类型的行锁:
58755875
- 排他锁和排他锁 冲突
58765876
- 排他锁和共享锁 冲突
58775877

5878-
可以通过以下语句显示给数据集加共享锁或排他锁
5878+
可以通过以下语句显式给数据集加共享锁或排他锁
58795879

58805880
```mysql
58815881
SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE -- 共享锁
@@ -5983,7 +5983,7 @@ SELECT * FROM table_name WHERE ... FOR UPDATE -- 排他锁
59835983

59845984
#### 锁升级
59855985

5986-
无索引行锁升级为表锁:不通过索引检索数据,那么 InnoDB 将对表中的所有记录加锁,实际效果和加表锁一样
5986+
无索引行锁升级为表锁:不通过索引检索数据,InnoDB 会将对表中的所有记录加锁,实际效果和**表锁**一样
59875987

59885988
索引失效会造成锁升级,实际开发过程应避免出现索引失效的状况
59895989

@@ -10399,7 +10399,7 @@ slave 与 master 连接断开
1039910399
1040010400
1040110401
10402-
#### 缓存不一致
10402+
#### 一致性
1040310403
1040410404
网络信息不同步,数据发送有延迟,导致多个 slave 获取相同数据不同步
1040510405
@@ -10842,19 +10842,6 @@ Cache Aside Pattern 中服务端需要同时维系 DB 和 cache,并且是以 D
1084210842
* 写操作比较频繁的话导致 cache 中的数据会被频繁被删除,影响缓存命中率
1084310843
1084410844
10845-
缓存不一致的方法:
10846-
10847-
* 数据库和缓存数据**强一致**场景 :
10848-
* 更新 DB 时同样更新 cache,加一个锁来保证更新 cache 时不存在线程安全问题,这样可以增加命中率
10849-
* 延迟双删:先淘汰缓存再写数据库,休眠1秒再次淘汰缓存,可以将1秒内造成的缓存脏数据再次删除
10850-
* CDC 同步:通过 canal 订阅 MySQL binlog 的变更上报给 Kafka,系统监听 Kafka 消息触发缓存失效
10851-
* 可以短暂地允许数据库和缓存数据**不一致**场景:更新 DB 的时候同样更新 cache,但是给缓存加一个比较短的过期时间,这样就可以保证即使数据不一致影响也比较小
10852-
10853-
10854-
10855-
参考文章:http://cccboke.com/archives/2020-09-30-21-29-56
10856-
10857-
1085810845
1085910846
****
1086010847
@@ -10900,6 +10887,28 @@ Read-Through Pattern 也存在首次不命中的问题,采用缓存预热解
1090010887
1090110888
1090210889
10890+
### 缓存一致
10891+
10892+
使用缓存代表不需要强一致性,只需要最终一致性
10893+
10894+
缓存不一致的方法:
10895+
10896+
* 数据库和缓存数据**强一致**场景 :
10897+
* 更新 DB 时同样更新 cache,加一个锁来保证更新 cache 时不存在线程安全问题,这样可以增加命中率
10898+
* 延迟双删:先淘汰缓存再写数据库,休眠1秒再次淘汰缓存,可以将1秒内造成的缓存脏数据再次删除
10899+
* CDC 同步:通过 canal 订阅 MySQL binlog 的变更上报给 Kafka,系统监听 Kafka 消息触发缓存失效
10900+
* 可以短暂地允许数据库和缓存数据**不一致**场景:更新 DB 的时候同样更新 cache,但是给缓存加一个比较短的过期时间,这样就可以保证即使数据不一致影响也比较小
10901+
10902+
10903+
10904+
参考文章:http://cccboke.com/archives/2020-09-30-21-29-56
10905+
10906+
10907+
10908+
***
10909+
10910+
10911+
1090310912
### 企业方案
1090410913
1090510914
#### 缓存预热

Issue.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
1-
# 计算机基础
1+
# Base
22

3-
## 计算机网络
3+
## Structure
4+
5+
6+
7+
8+
9+
****
10+
11+
12+
13+
## Network
414

515
### 传输层
616

@@ -90,7 +100,7 @@
90100

91101

92102

93-
## 操作系统
103+
## System
94104

95105
### 进程线程
96106

0 commit comments

Comments
 (0)