diff --git a/README.md b/README.md
index 73b80318..5ce7c1d3 100644
--- a/README.md
+++ b/README.md
@@ -4,16 +4,16 @@
| 算法 | 操作系统 | 网络 | 面向对象 | 数据库 | Java | 系统设计 | 工具 | 编码实践 | 后记 |
| :--------: | :---------: | :---------: | :---------: | :---------: | :---------:| :---------: | :-------: | :-------:| :------:|
-| [:pencil2:](#pencil2-算法) | [:computer:](#computer-操作系统)|[:cloud:](#cloud-网络) | [:art:](#art-面向对象) |[:floppy_disk:](#floppy_disk-数据库)| [:coffee:](#coffee-java)| [:bulb:](#bulb-系统设计)| [:wrench:](#wrench-工具)| [:watermelon:](#watermelon-编码实践)| [:memo:](#memo-后记) |
+| [:pencil2:](#pencil2-算法) | [:computer:](#computer-操作系统)|[:cloud:](#cloud-网络) | [:art:](#art-面向对象) |[:floppy_disk:](#floppy_disk-数据库)| [:coffee:](#coffee-java)| [:bulb:](#bulb-系统设计)| [:wrench:](#wrench-工具)| [:watermelon:](#watermelon-编码实践)| [:memo:](#memo-后记) |
-

+
- 本项目包含了技术面试必备的基础知识,浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。你也可以订阅
面试进阶专栏,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。
+ 本项目包含了技术面试必备的基础知识,浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。你也可以阅读
面试进阶指南,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。
@@ -83,21 +83,23 @@
[Job-Recommend](https://github.com/CyC2018/Job-Recommend)
-### 专栏
-
-[面试进阶指南](https://xiaozhuanlan.com/CyC2018)
-
-### 知识星球
-
-想要向我提问关于学习和求职方面的建议?来知识星球,你的每个提问我都会认真回答。
-
-[知识星球](other/Planet.md)
-
### QQ 群
为大家提供一个学习交流平台,在这里你可以自由地讨论技术问题。
-
+
+
+### 关于我
+
+
+
+
+
+
+
+
+
+
### 排版
@@ -113,18 +115,17 @@
### License
-学习笔记不是从网上到处拼凑而来,除了少部分引用书上和技术文档的原文,其余都是笔者的原创。在您引用本仓库内容或者对内容进行修改演绎时,请署名并以相同方式共享,谢谢。
+学习笔记不是从网上到处拼凑而来,除了少部分引用书上和技术文档的原文,其余都是我的原创。在您引用本仓库内容或者对内容进行修改演绎时,请署名并以相同方式共享,谢谢。
-
### Logo
Power by [logomakr](https://logomakr.com/).
### 致谢
-感谢以下人员对本仓库做出的贡献,当然不仅仅只有这些贡献者,这里就不一一列举了。如果你希望被添加到这个名单中,并且提交过 Issue 或者 PR,请与笔者联系。
+感谢以下人员对本仓库做出的贡献,当然不仅仅只有这些贡献者,这里就不一一列举了。如果你希望被添加到这个名单中,并且提交过 Issue 或者 PR,请与我联系。
@@ -154,19 +155,3 @@ Power by [logomakr](https://logomakr.com/).
-
-
-
-
-
-
-
diff --git a/other/LogoMakr_0zpEzN.png b/assets/LogoMakr_0zpEzN.png
similarity index 100%
rename from other/LogoMakr_0zpEzN.png
rename to assets/LogoMakr_0zpEzN.png
diff --git a/other/column.png b/assets/column.png
similarity index 100%
rename from other/column.png
rename to assets/column.png
diff --git a/other/group1.png b/assets/group1.png
similarity index 100%
rename from other/group1.png
rename to assets/group1.png
diff --git a/assets/小专栏.jpg b/assets/小专栏.jpg
new file mode 100644
index 00000000..5c1c880f
Binary files /dev/null and b/assets/小专栏.jpg differ
diff --git a/assets/牛客网.png b/assets/牛客网.png
new file mode 100644
index 00000000..02f81997
Binary files /dev/null and b/assets/牛客网.png differ
diff --git a/assets/知乎.jpg b/assets/知乎.jpg
new file mode 100644
index 00000000..92cc8459
Binary files /dev/null and b/assets/知乎.jpg differ
diff --git a/assets/知识星球.png b/assets/知识星球.png
new file mode 100644
index 00000000..097f6a1c
Binary files /dev/null and b/assets/知识星球.png differ
diff --git a/docs/README.md b/docs/README.md
index 3e9f9793..c2fca50d 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,5 +1,5 @@
-> [🍉 点击订阅面试进阶专栏](https://xiaozhuanlan.com/CyC2018)
+> [🍉 点击阅读面试进阶指南](https://github.com/CyC2018/Backend-Interview-Guide)
## ✏️ 算法
diff --git a/docs/_coverpage.md b/docs/_coverpage.md
index 36dcdb8b..07dc56c6 100644
--- a/docs/_coverpage.md
+++ b/docs/_coverpage.md
@@ -2,7 +2,7 @@
# CS-Notes
-- 本项目包含了技术面试必备的基础知识,浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。你也可以订阅 面试进阶专栏,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。
+- 本项目包含了技术面试必备的基础知识,浅显易懂,你不需要花很长的时间去阅读和理解成堆的技术书籍就可以快速掌握这些知识,从而节省宝贵的面试复习时间。你也可以阅读 面试进阶指南,包含了学习指导和面试技巧,让你更轻松拿到满意的 Offer。
Site View :
diff --git a/docs/_style/style.css b/docs/_style/style.css
index 06068dcd..4d25398d 100644
--- a/docs/_style/style.css
+++ b/docs/_style/style.css
@@ -48,4 +48,28 @@ section.cover h1 {
body>section>div.cover-main>ul>li>a {
color: #42b983;
+}
+
+.markdown-section img {
+ box-shadow: 7px 9px 10px #aaa !important;
+}
+
+
+pre {
+ background-color: #f3f2ee !important;
+}
+
+@media (min-width:600px) {
+ pre code {
+ box-shadow: 2px 1px 20px 2px #aaa;
+ /*border-radius: 10px !important;*/
+ padding-left: 20px !important;
+ }
+}
+
+@media (max-width:600px) {
+ pre {
+ padding-left: 0px !important;
+ padding-right: 0px !important;
+ }
}
\ No newline at end of file
diff --git a/docs/notes/Docker.md b/docs/notes/Docker.md
index 8d307a32..9e8e86c5 100644
--- a/docs/notes/Docker.md
+++ b/docs/notes/Docker.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、解决的问题](#一解决的问题)
* [二、与虚拟机的比较](#二与虚拟机的比较)
diff --git a/docs/notes/Git.md b/docs/notes/Git.md
index 1b932ea9..aaf943bf 100644
--- a/docs/notes/Git.md
+++ b/docs/notes/Git.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [集中式与分布式](#集中式与分布式)
* [中心服务器](#中心服务器)
diff --git a/docs/notes/HTTP.md b/docs/notes/HTTP.md
index 0b1e7f45..e68b3733 100644
--- a/docs/notes/HTTP.md
+++ b/docs/notes/HTTP.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一 、基础概念](#一-基础概念)
* [URI](#uri)
diff --git a/docs/notes/Java IO.md b/docs/notes/Java IO.md
index 5cd2c164..2cec5b5e 100644
--- a/docs/notes/Java IO.md
+++ b/docs/notes/Java IO.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、概览](#一概览)
* [二、磁盘操作](#二磁盘操作)
@@ -98,7 +98,7 @@ Java I/O 使用了装饰者模式来实现。以 InputStream 为例,
- FileInputStream 是 InputStream 的子类,属于具体组件,提供了字节流的输入操作;
- FilterInputStream 属于抽象装饰者,装饰者用于装饰组件,为组件提供额外的功能。例如 BufferedInputStream 为 FileInputStream 提供缓存的功能。
-
+
实例化一个具有缓存功能的字节流对象时,只需要在 FileInputStream 对象上再套一层 BufferedInputStream 对象即可。
@@ -278,7 +278,7 @@ public static void main(String[] args) throws IOException {
- Socket:客户端类
- 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。
-
+
## Datagram
@@ -414,7 +414,7 @@ NIO 实现了 IO 多路复用中的 Reactor 模型,一个线程 Thread 使用
应该注意的是,只有套接字 Channel 才能配置为非阻塞,而 FileChannel 不能,为 FileChannel 配置非阻塞也没有意义。
-
+
### 1. 创建选择器
diff --git a/docs/notes/Java 基础.md b/docs/notes/Java 基础.md
index d057f460..83ef04bc 100644
--- a/docs/notes/Java 基础.md
+++ b/docs/notes/Java 基础.md
@@ -1,6 +1,7 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、数据类型](#一数据类型)
+ * [基本类型](#基本类型)
* [包装类型](#包装类型)
* [缓存池](#缓存池)
* [二、String](#二string)
@@ -42,11 +43,8 @@
# 一、数据类型
-## 包装类型
+## 基本类型
-八个基本类型:
-
-- boolean/1
- byte/8
- char/16
- short/16
@@ -54,6 +52,14 @@
- float/32
- long/64
- double/64
+- boolean/\~
+
+boolean 只有两个值:true、false,可以使用 1 bit 来存储,但是具体大小没有明确规定。JVM 会在编译时期将 boolean 类型的数据转换为 int,使用 1 来表示 true,0 表示 false。JVM 并不支持 boolean 数组,而是使用 byte 数组来表示 int 数组来表示。
+
+- [Primitive Data Types](https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html)
+- [The Java® Virtual Machine Specification](https://docs.oracle.com/javase/specs/jvms/se8/jvms8.pdf)
+
+## 包装类型
基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。
@@ -184,7 +190,7 @@ value 数组被声明为 final,这意味着 value 数组初始化之后就不
如果一个 String 对象已经被创建过了,那么就会从 String Pool 中取得引用。只有 String 是不可变的,才可能使用 String Pool。
-
+
**3. 安全性**
@@ -676,6 +682,65 @@ SuperExtendExample.func()
应该注意的是,返回值不同,其它都相同不算是重载。
+**3. 实例**
+
+```java
+class A {
+ public String show(D obj) {
+ return ("A and D");
+ }
+
+ public String show(A obj) {
+ return ("A and A");
+ }
+}
+
+class B extends A {
+ public String show(B obj) {
+ return ("B and B");
+ }
+
+ public String show(A obj) {
+ return ("B and A");
+ }
+}
+
+class C extends B {
+}
+
+class D extends B {
+}
+```
+
+```java
+public class Test {
+
+ public static void main(String[] args) {
+ A a1 = new A();
+ A a2 = new B();
+ B b = new B();
+ C c = new C();
+ D d = new D();
+ System.out.println(a1.show(b)); // A and A
+ System.out.println(a1.show(c)); // A and A
+ System.out.println(a1.show(d)); // A and D
+ System.out.println(a2.show(b)); // B and A
+ System.out.println(a2.show(c)); // B and A
+ System.out.println(a2.show(d)); // A and D
+ System.out.println(b.show(b)); // B and B
+ System.out.println(b.show(c)); // B and B
+ System.out.println(b.show(d)); // A and D
+ }
+}
+```
+
+涉及到重写时,方法调用的优先级为:
+
+- this.show(O)
+- super.show(O)
+- this.show((super)O)
+- super.show((super)O)
+
# 五、Object 通用方法
## 概览
diff --git a/docs/notes/Java 容器.md b/docs/notes/Java 容器.md
index b8d63ee5..04ab70c7 100644
--- a/docs/notes/Java 容器.md
+++ b/docs/notes/Java 容器.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、概览](#一概览)
* [Collection](#collection)
@@ -26,7 +26,7 @@
## Collection
-
+
### 1. Set
@@ -52,7 +52,7 @@
## Map
-
+
- TreeMap:基于红黑树实现。
@@ -67,7 +67,7 @@
## 迭代器模式
-
+
Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。
@@ -112,6 +112,7 @@ List list = Arrays.asList(1, 2, 3);
## ArrayList
+
### 1. 概览
实现了 RandomAccess 接口,因此支持随机访问。这是理所当然的,因为 ArrayList 是基于数组实现的。
@@ -127,6 +128,9 @@ public class ArrayList extends AbstractList
private static final int DEFAULT_CAPACITY = 10;
```
+
+
+
### 2. 扩容
添加元素时使用 ensureCapacityInternal() 方法来保证容量足够,如果不够时,需要使用 grow() 方法进行扩容,新容量的大小为 `oldCapacity + (oldCapacity >> 1)`,也就是旧容量的 1.5 倍。
@@ -388,7 +392,7 @@ transient Node first;
transient Node last;
```
-
+
### 2. 与 ArrayList 的比较
@@ -410,7 +414,7 @@ transient Entry[] table;
Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值相同的 Entry。
-
+
```java
static class Entry implements Map.Entry {
@@ -486,7 +490,7 @@ map.put("K3", "V3");
- 计算键值对所在的桶;
- 在链表上顺序查找,时间复杂度显然和链表的长度成正比。
-
+
### 3. put 操作
@@ -822,7 +826,7 @@ final Segment[] segments;
static final int DEFAULT_CONCURRENCY_LEVEL = 16;
```
-
+
### 2. size 操作
diff --git a/docs/notes/Java 并发.md b/docs/notes/Java 并发.md
index 1fb8c09d..2cc387a4 100644
--- a/docs/notes/Java 并发.md
+++ b/docs/notes/Java 并发.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、线程状态转换](#一线程状态转换)
* [新建(New)](#新建new)
@@ -31,7 +31,7 @@
* [wait() notify() notifyAll()](#wait-notify-notifyall)
* [await() signal() signalAll()](#await-signal-signalall)
* [七、J.U.C - AQS](#七juc---aqs)
- * [CountdownLatch](#countdownlatch)
+ * [CountDownLatch](#countdownlatch)
* [CyclicBarrier](#cyclicbarrier)
* [Semaphore](#semaphore)
* [八、J.U.C - 其它组件](#八juc---其它组件)
@@ -62,7 +62,7 @@
# 一、线程状态转换
-
+
## 新建(New)
@@ -86,7 +86,7 @@
| --- | --- |
| 没有设置 Timeout 参数的 Object.wait() 方法 | Object.notify() / Object.notifyAll() |
| 没有设置 Timeout 参数的 Thread.join() 方法 | 被调用的线程执行完毕 |
-| LockSupport.park() 方法 | - |
+| LockSupport.park() 方法 | LockSupport.unpark(Thread) |
## 限期等待(Timed Waiting)
@@ -105,8 +105,8 @@
| Thread.sleep() 方法 | 时间结束 |
| 设置了 Timeout 参数的 Object.wait() 方法 | 时间结束 / Object.notify() / Object.notifyAll() |
| 设置了 Timeout 参数的 Thread.join() 方法 | 时间结束 / 被调用的线程执行完毕 |
-| LockSupport.parkNanos() 方法 | - |
-| LockSupport.parkUntil() 方法 | - |
+| LockSupport.parkNanos() 方法 | LockSupport.unpark(Thread) |
+| LockSupport.parkUntil() 方法 | LockSupport.unpark(Thread) |
## 死亡(Terminated)
@@ -731,13 +731,13 @@ after
java.util.concurrent(J.U.C)大大提高了并发性能,AQS 被认为是 J.U.C 的核心。
-## CountdownLatch
+## CountDownLatch
用来控制一个线程等待多个线程。
维护了一个计数器 cnt,每次调用 countDown() 方法会让计数器的值减 1,减到 0 的时候,那些因为调用 await() 方法而在等待的线程就会被唤醒。
-
+
```java
public class CountdownLatchExample {
@@ -786,7 +786,7 @@ public CyclicBarrier(int parties) {
}
```
-
+
```java
public class CyclicBarrierExample {
@@ -819,8 +819,6 @@ before..before..before..before..before..before..before..before..before..before..
Semaphore 类似于操作系统中的信号量,可以控制对互斥资源的访问线程数。
-
-
以下代码模拟了对某个服务的并发请求,每次只能有 3 个客户端同时访问,请求总数为 10。
```java
@@ -1025,7 +1023,7 @@ public class ForkJoinPool extends AbstractExecutorService
ForkJoinPool 实现了工作窃取算法来提高 CPU 的利用率。每个线程都维护了一个双端队列,用来存储需要执行的任务。工作窃取算法允许空闲的线程从其它线程的双端队列中窃取一个任务来执行。窃取的任务必须是最晚的任务,避免和队列所属线程发生竞争。例如下图中,Thread2 从 Thread1 的队列中拿出最晚的 Task1 任务,Thread1 会拿出 Task2 来执行,这样就避免发生竞争。但是如果队列中只有一个任务时还是会发生竞争。
-
+
# 九、线程不安全示例
@@ -1080,19 +1078,19 @@ Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异,
加入高速缓存带来了一个新的问题:缓存一致性。如果多个缓存共享同一块主内存区域,那么多个缓存的数据可能会不一致,需要一些协议来解决这个问题。
-
+
所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存或者寄存器中,保存了该线程使用的变量的主内存副本拷贝。
线程只能直接操作工作内存中的变量,不同线程之间的变量值传递需要通过主内存来完成。
-
+
## 内存间交互操作
Java 内存模型定义了 8 个操作来完成主内存和工作内存的交互操作。
-
+
- read:把一个变量的值从主内存传输到工作内存中
- load:在 read 之后执行,把 read 得到的值放入工作内存的变量副本中
@@ -1115,11 +1113,11 @@ Java 内存模型保证了 read、load、use、assign、store、write、lock 和
下图演示了两个线程同时对 cnt 进行操作,load、assign、store 这一系列操作整体上看不具备原子性,那么在 T1 修改 cnt 并且还没有将修改后的值写入主内存,T2 依然可以读入旧值。可以看出,这两个线程虽然执行了两次自增运算,但是主内存中 cnt 的值最后为 1 而不是 2。因此对 int 类型读写操作满足原子性只是说明 load、assign、store 这些单个操作具备原子性。
-
+
AtomicInteger 能保证多个线程修改的原子性。
-
+
使用 AtomicInteger 重写之前线程不安全的代码之后得到以下线程安全实现:
@@ -1227,7 +1225,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即
在一个线程内,在程序前面的操作先行发生于后面的操作。
-
+
### 2. 管程锁定规则
@@ -1235,7 +1233,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即
一个 unlock 操作先行发生于后面对同一个锁的 lock 操作。
-
+
### 3. volatile 变量规则
@@ -1243,7 +1241,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即
对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作。
-
+
### 4. 线程启动规则
@@ -1251,7 +1249,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即
Thread 对象的 start() 方法调用先行发生于此线程的每一个动作。
-
+
### 5. 线程加入规则
@@ -1259,7 +1257,7 @@ Thread 对象的 start() 方法调用先行发生于此线程的每一个动作
Thread 对象的结束先行发生于 join() 方法返回。
-
+
### 6. 线程中断规则
@@ -1477,7 +1475,7 @@ public class ThreadLocalExample1 {
它所对应的底层结构图为:
-
+
每个 Thread 都有一个 ThreadLocal.ThreadLocalMap 对象。
diff --git a/docs/notes/Java 虚拟机.md b/docs/notes/Java 虚拟机.md
index 2e84b2d0..1178cabe 100644
--- a/docs/notes/Java 虚拟机.md
+++ b/docs/notes/Java 虚拟机.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、运行时数据区域](#一运行时数据区域)
* [程序计数器](#程序计数器)
@@ -31,7 +31,7 @@
# 一、运行时数据区域
-
+
## 程序计数器
@@ -41,7 +41,7 @@
每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。
-
+
可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小:
@@ -60,8 +60,7 @@ java -Xss512M HackTheJava
本地方法一般是用其它语言(C、C++ 或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序,对待这些方法需要特别处理。
-
-
+
## 堆
@@ -141,7 +140,7 @@ Java 虚拟机使用该算法来判断对象是否可被回收,在 Java 中 GC
- 方法区中类静态属性引用的对象
- 方法区中的常量引用的对象
-
+
### 3. 方法区的回收
@@ -221,7 +220,7 @@ obj = null;
### 1. 标记 - 清除
-
+
标记要回收的对象,然后清除。
@@ -232,13 +231,13 @@ obj = null;
### 2. 标记 - 整理
-
+
让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。
### 3. 复制
-
+
将内存划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了就将还存活的对象复制到另一块上面,然后再把使用过的内存空间进行一次清理。
@@ -440,7 +439,7 @@ G1 把堆划分成多个大小相等的独立区域(Region),新生代和
## 类的生命周期
-
+
包括以下 7 个阶段:
diff --git a/docs/notes/Leetcode 题解.md b/docs/notes/Leetcode 题解.md
index 333d26ab..9065e7e1 100644
--- a/docs/notes/Leetcode 题解.md
+++ b/docs/notes/Leetcode 题解.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [算法思想](#算法思想)
* [双指针](#双指针)
diff --git a/docs/notes/Leetcode-Database 题解.md b/docs/notes/Leetcode-Database 题解.md
index 771f4097..d608c2fb 100644
--- a/docs/notes/Leetcode-Database 题解.md
+++ b/docs/notes/Leetcode-Database 题解.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [595. Big Countries](#595-big-countries)
* [627. Swap Salary](#627-swap-salary)
diff --git a/docs/notes/Linux.md b/docs/notes/Linux.md
index 53b42aa0..3c08ae55 100644
--- a/docs/notes/Linux.md
+++ b/docs/notes/Linux.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、常用操作以及概念](#一常用操作以及概念)
* [快捷键](#快捷键)
diff --git a/docs/notes/MySQL.md b/docs/notes/MySQL.md
index 2e02dd13..c9914a0b 100644
--- a/docs/notes/MySQL.md
+++ b/docs/notes/MySQL.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、索引](#一索引)
* [B+ Tree 原理](#b-tree-原理)
@@ -43,7 +43,7 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具
在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且小于等于 keyi+1。
-
+
### 2. 操作
@@ -85,11 +85,11 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具
InnoDB 的 B+Tree 索引分为主索引和辅助索引。主索引的叶子节点 data 域记录着完整的数据记录,这种索引方式被称为聚簇索引。因为无法把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。
-
+
辅助索引的叶子节点的 data 域记录着主键的值,因此在使用辅助索引进行查找时,需要先查找到主键值,然后再到主索引中进行查找。
-
+
### 2. 哈希索引
diff --git a/docs/notes/Redis.md b/docs/notes/Redis.md
index 5bc45b1a..340455a2 100644
--- a/docs/notes/Redis.md
+++ b/docs/notes/Redis.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、概述](#一概述)
* [二、数据类型](#二数据类型)
diff --git a/docs/notes/SQL.md b/docs/notes/SQL.md
index 6c91b614..e7ed9b90 100644
--- a/docs/notes/SQL.md
+++ b/docs/notes/SQL.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、基础](#一基础)
* [二、创建表](#二创建表)
diff --git a/docs/notes/Socket.md b/docs/notes/Socket.md
index eb719e59..e08d04b3 100644
--- a/docs/notes/Socket.md
+++ b/docs/notes/Socket.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、I/O 模型](#一io-模型)
* [阻塞式 I/O](#阻塞式-io)
diff --git a/docs/notes/pics/066f9c11-0154-42c3-8685-301a70e9bd39.jpg b/docs/notes/pics/066f9c11-0154-42c3-8685-301a70e9bd39.jpg
new file mode 100644
index 00000000..84d371b8
Binary files /dev/null and b/docs/notes/pics/066f9c11-0154-42c3-8685-301a70e9bd39.jpg differ
diff --git a/docs/notes/pics/09184175-9bf2-40ff-8a68-3b467c77216a.png b/docs/notes/pics/09184175-9bf2-40ff-8a68-3b467c77216a.png
new file mode 100644
index 00000000..17f4d5b7
Binary files /dev/null and b/docs/notes/pics/09184175-9bf2-40ff-8a68-3b467c77216a.png differ
diff --git a/docs/notes/pics/10a6d3ee-04b2-46b4-b171-d596e5ab0f84.jpg b/docs/notes/pics/10a6d3ee-04b2-46b4-b171-d596e5ab0f84.jpg
new file mode 100644
index 00000000..043964ae
Binary files /dev/null and b/docs/notes/pics/10a6d3ee-04b2-46b4-b171-d596e5ab0f84.jpg differ
diff --git a/docs/notes/pics/181edd46-e640-472a-9119-a697de0d2a82.jpg b/docs/notes/pics/181edd46-e640-472a-9119-a697de0d2a82.jpg
new file mode 100644
index 00000000..306d1c66
Binary files /dev/null and b/docs/notes/pics/181edd46-e640-472a-9119-a697de0d2a82.jpg differ
diff --git a/docs/notes/pics/1_200.png b/docs/notes/pics/1_200.png
new file mode 100644
index 00000000..c6dc2bb5
Binary files /dev/null and b/docs/notes/pics/1_200.png differ
diff --git a/docs/notes/pics/1b718cd5-7b1e-496c-9133-2bfd12bb5f89.jpg b/docs/notes/pics/1b718cd5-7b1e-496c-9133-2bfd12bb5f89.jpg
new file mode 100644
index 00000000..60edac95
Binary files /dev/null and b/docs/notes/pics/1b718cd5-7b1e-496c-9133-2bfd12bb5f89.jpg differ
diff --git a/docs/notes/pics/1d2719d5-8d60-4c9b-a4ad-b2df7c7615af.jpg b/docs/notes/pics/1d2719d5-8d60-4c9b-a4ad-b2df7c7615af.jpg
new file mode 100644
index 00000000..a9effcf7
Binary files /dev/null and b/docs/notes/pics/1d2719d5-8d60-4c9b-a4ad-b2df7c7615af.jpg differ
diff --git a/docs/notes/pics/20e61b68-effe-4a70-a7fd-58be23f9343a.png b/docs/notes/pics/20e61b68-effe-4a70-a7fd-58be23f9343a.png
new file mode 100644
index 00000000..7da1a21f
Binary files /dev/null and b/docs/notes/pics/20e61b68-effe-4a70-a7fd-58be23f9343a.png differ
diff --git a/docs/notes/pics/21550397584141.gif b/docs/notes/pics/21550397584141.gif
new file mode 100644
index 00000000..df5c1792
Binary files /dev/null and b/docs/notes/pics/21550397584141.gif differ
diff --git a/docs/notes/pics/26a7c9df-22f6-4df4-845a-745c053ab2e5.jpg b/docs/notes/pics/26a7c9df-22f6-4df4-845a-745c053ab2e5.jpg
new file mode 100644
index 00000000..cf6ab009
Binary files /dev/null and b/docs/notes/pics/26a7c9df-22f6-4df4-845a-745c053ab2e5.jpg differ
diff --git a/docs/notes/pics/27fce0c6-8262-4d11-abb4-243faa2a2eef.jpg b/docs/notes/pics/27fce0c6-8262-4d11-abb4-243faa2a2eef.jpg
new file mode 100644
index 00000000..72177f77
Binary files /dev/null and b/docs/notes/pics/27fce0c6-8262-4d11-abb4-243faa2a2eef.jpg differ
diff --git a/docs/notes/pics/2959e455-e6cb-4461-aeb3-e319fe5c41db.jpg b/docs/notes/pics/2959e455-e6cb-4461-aeb3-e319fe5c41db.jpg
new file mode 100644
index 00000000..09ad339e
Binary files /dev/null and b/docs/notes/pics/2959e455-e6cb-4461-aeb3-e319fe5c41db.jpg differ
diff --git a/docs/notes/pics/2_200.png b/docs/notes/pics/2_200.png
new file mode 100644
index 00000000..c292d4ef
Binary files /dev/null and b/docs/notes/pics/2_200.png differ
diff --git a/docs/notes/pics/3034859c-eb5a-402b-b65a-974dcc0c4a46.png b/docs/notes/pics/3034859c-eb5a-402b-b65a-974dcc0c4a46.png
new file mode 100644
index 00000000..3dea1b9f
Binary files /dev/null and b/docs/notes/pics/3034859c-eb5a-402b-b65a-974dcc0c4a46.png differ
diff --git a/docs/notes/pics/303873db-0d11-4683-a43c-f319b7aef2b6.jpg b/docs/notes/pics/303873db-0d11-4683-a43c-f319b7aef2b6.jpg
new file mode 100644
index 00000000..0983229b
Binary files /dev/null and b/docs/notes/pics/303873db-0d11-4683-a43c-f319b7aef2b6.jpg differ
diff --git a/docs/notes/pics/3144015c-dcfb-47ac-94a5-bab3b78b0f14.jpg b/docs/notes/pics/3144015c-dcfb-47ac-94a5-bab3b78b0f14.jpg
new file mode 100644
index 00000000..a805e7f9
Binary files /dev/null and b/docs/notes/pics/3144015c-dcfb-47ac-94a5-bab3b78b0f14.jpg differ
diff --git a/docs/notes/pics/31550398353573.gif b/docs/notes/pics/31550398353573.gif
new file mode 100644
index 00000000..f9008efe
Binary files /dev/null and b/docs/notes/pics/31550398353573.gif differ
diff --git a/docs/notes/pics/3_200.png b/docs/notes/pics/3_200.png
new file mode 100644
index 00000000..a35b29e4
Binary files /dev/null and b/docs/notes/pics/3_200.png differ
diff --git a/docs/notes/pics/3f04455c-f4ac-4038-a69f-21df133389e1.png b/docs/notes/pics/3f04455c-f4ac-4038-a69f-21df133389e1.png
new file mode 100644
index 00000000..be86b978
Binary files /dev/null and b/docs/notes/pics/3f04455c-f4ac-4038-a69f-21df133389e1.png differ
diff --git a/docs/notes/pics/3fa0a6cb-a0a4-490a-9a80-7f4888f2500c.png b/docs/notes/pics/3fa0a6cb-a0a4-490a-9a80-7f4888f2500c.png
new file mode 100644
index 00000000..65bb211c
Binary files /dev/null and b/docs/notes/pics/3fa0a6cb-a0a4-490a-9a80-7f4888f2500c.png differ
diff --git a/docs/notes/pics/3fb6e997-0fc9-4178-a691-5907b67bbeae.png b/docs/notes/pics/3fb6e997-0fc9-4178-a691-5907b67bbeae.png
new file mode 100644
index 00000000..63751152
Binary files /dev/null and b/docs/notes/pics/3fb6e997-0fc9-4178-a691-5907b67bbeae.png differ
diff --git a/docs/notes/pics/40f29839-fd56-4ed0-9353-39dfe6f0bba5.jpg b/docs/notes/pics/40f29839-fd56-4ed0-9353-39dfe6f0bba5.jpg
new file mode 100644
index 00000000..355cdf57
Binary files /dev/null and b/docs/notes/pics/40f29839-fd56-4ed0-9353-39dfe6f0bba5.jpg differ
diff --git a/docs/notes/pics/43bf0957-0386-4c09-9ad7-e163c5b62559.jpg b/docs/notes/pics/43bf0957-0386-4c09-9ad7-e163c5b62559.jpg
new file mode 100644
index 00000000..556c01dd
Binary files /dev/null and b/docs/notes/pics/43bf0957-0386-4c09-9ad7-e163c5b62559.jpg differ
diff --git a/docs/notes/pics/45b69b1c-8e1d-40ec-a1dd-dd8f7d383f01.jpg b/docs/notes/pics/45b69b1c-8e1d-40ec-a1dd-dd8f7d383f01.jpg
new file mode 100644
index 00000000..3c1c8175
Binary files /dev/null and b/docs/notes/pics/45b69b1c-8e1d-40ec-a1dd-dd8f7d383f01.jpg differ
diff --git a/docs/notes/pics/474e5579-38b1-47d2-8f76-a13ae086b039.jpg b/docs/notes/pics/474e5579-38b1-47d2-8f76-a13ae086b039.jpg
new file mode 100644
index 00000000..9af7bc09
Binary files /dev/null and b/docs/notes/pics/474e5579-38b1-47d2-8f76-a13ae086b039.jpg differ
diff --git a/docs/notes/pics/4f151e62-6160-47f1-9eff-47b1f4dea4e9.jpg b/docs/notes/pics/4f151e62-6160-47f1-9eff-47b1f4dea4e9.jpg
new file mode 100644
index 00000000..febf7a17
Binary files /dev/null and b/docs/notes/pics/4f151e62-6160-47f1-9eff-47b1f4dea4e9.jpg differ
diff --git a/docs/notes/pics/51550399426594.gif b/docs/notes/pics/51550399426594.gif
new file mode 100644
index 00000000..6e931791
Binary files /dev/null and b/docs/notes/pics/51550399426594.gif differ
diff --git a/docs/notes/pics/54e6d499-80df-488e-aa7e-081766c41538.jpg b/docs/notes/pics/54e6d499-80df-488e-aa7e-081766c41538.jpg
new file mode 100644
index 00000000..0ffa2a5b
Binary files /dev/null and b/docs/notes/pics/54e6d499-80df-488e-aa7e-081766c41538.jpg differ
diff --git a/docs/notes/pics/5_200.png b/docs/notes/pics/5_200.png
new file mode 100644
index 00000000..dd90699b
Binary files /dev/null and b/docs/notes/pics/5_200.png differ
diff --git a/docs/notes/pics/5d0cb407-f1cc-4b89-ad4a-ec4e9b327c34.jpg b/docs/notes/pics/5d0cb407-f1cc-4b89-ad4a-ec4e9b327c34.jpg
new file mode 100644
index 00000000..4b977538
Binary files /dev/null and b/docs/notes/pics/5d0cb407-f1cc-4b89-ad4a-ec4e9b327c34.jpg differ
diff --git a/docs/notes/pics/5e6e05d6-1028-4f5c-b9bd-1a40b90d6070.jpg b/docs/notes/pics/5e6e05d6-1028-4f5c-b9bd-1a40b90d6070.jpg
new file mode 100644
index 00000000..f2a6c03a
Binary files /dev/null and b/docs/notes/pics/5e6e05d6-1028-4f5c-b9bd-1a40b90d6070.jpg differ
diff --git a/docs/notes/pics/61550402057509.gif b/docs/notes/pics/61550402057509.gif
new file mode 100644
index 00000000..7ba6f280
Binary files /dev/null and b/docs/notes/pics/61550402057509.gif differ
diff --git a/docs/notes/pics/67173c9f-ac87-496a-bd0a-0b1a5cfa735a.jpg b/docs/notes/pics/67173c9f-ac87-496a-bd0a-0b1a5cfa735a.jpg
new file mode 100644
index 00000000..48f3136c
Binary files /dev/null and b/docs/notes/pics/67173c9f-ac87-496a-bd0a-0b1a5cfa735a.jpg differ
diff --git a/docs/notes/pics/6_200.png b/docs/notes/pics/6_200.png
new file mode 100644
index 00000000..bbf8dfd2
Binary files /dev/null and b/docs/notes/pics/6_200.png differ
diff --git a/docs/notes/pics/6aee49d3-f6c6-4d14-a81a-080c290de875.jpg b/docs/notes/pics/6aee49d3-f6c6-4d14-a81a-080c290de875.jpg
new file mode 100644
index 00000000..48b1bd5d
Binary files /dev/null and b/docs/notes/pics/6aee49d3-f6c6-4d14-a81a-080c290de875.jpg differ
diff --git a/docs/notes/pics/6dd28bfc-6ef7-47cb-af50-a681ebc1bbaa.png b/docs/notes/pics/6dd28bfc-6ef7-47cb-af50-a681ebc1bbaa.png
new file mode 100644
index 00000000..c951760f
Binary files /dev/null and b/docs/notes/pics/6dd28bfc-6ef7-47cb-af50-a681ebc1bbaa.png differ
diff --git a/docs/notes/pics/731a5e8f-a2c2-43ff-b8dd-6aeb9fffbe26.jpg b/docs/notes/pics/731a5e8f-a2c2-43ff-b8dd-6aeb9fffbe26.jpg
new file mode 100644
index 00000000..dda05f94
Binary files /dev/null and b/docs/notes/pics/731a5e8f-a2c2-43ff-b8dd-6aeb9fffbe26.jpg differ
diff --git a/docs/notes/pics/73846795-675b-496b-88b0-d44233fdcfba.jpg b/docs/notes/pics/73846795-675b-496b-88b0-d44233fdcfba.jpg
new file mode 100644
index 00000000..b045287d
Binary files /dev/null and b/docs/notes/pics/73846795-675b-496b-88b0-d44233fdcfba.jpg differ
diff --git a/docs/notes/pics/73c72e75-193c-4092-aa43-b9c6703c4a22.jpg b/docs/notes/pics/73c72e75-193c-4092-aa43-b9c6703c4a22.jpg
new file mode 100644
index 00000000..5b905db1
Binary files /dev/null and b/docs/notes/pics/73c72e75-193c-4092-aa43-b9c6703c4a22.jpg differ
diff --git a/docs/notes/pics/74727fa5-d971-4480-a9f1-eb12455a0f85.png b/docs/notes/pics/74727fa5-d971-4480-a9f1-eb12455a0f85.png
new file mode 100644
index 00000000..e8956c5d
Binary files /dev/null and b/docs/notes/pics/74727fa5-d971-4480-a9f1-eb12455a0f85.png differ
diff --git a/docs/notes/pics/76c7597a-8316-460d-b8fb-9752c4c43947.jpg b/docs/notes/pics/76c7597a-8316-460d-b8fb-9752c4c43947.jpg
new file mode 100644
index 00000000..598ed2ed
Binary files /dev/null and b/docs/notes/pics/76c7597a-8316-460d-b8fb-9752c4c43947.jpg differ
diff --git a/docs/notes/pics/7935be3d-c2b3-4213-90c9-1e68ec4ac4e7.png b/docs/notes/pics/7935be3d-c2b3-4213-90c9-1e68ec4ac4e7.png
new file mode 100644
index 00000000..d146ec06
Binary files /dev/null and b/docs/notes/pics/7935be3d-c2b3-4213-90c9-1e68ec4ac4e7.png differ
diff --git a/docs/notes/pics/7_200.png b/docs/notes/pics/7_200.png
new file mode 100644
index 00000000..4fca7656
Binary files /dev/null and b/docs/notes/pics/7_200.png differ
diff --git a/docs/notes/pics/7f403a7a-5228-42c0-af1c-b21635c77016.jpg b/docs/notes/pics/7f403a7a-5228-42c0-af1c-b21635c77016.jpg
new file mode 100644
index 00000000..aad341fd
Binary files /dev/null and b/docs/notes/pics/7f403a7a-5228-42c0-af1c-b21635c77016.jpg differ
diff --git a/docs/notes/pics/8036ba3d-8de9-44aa-bf5d-1f8ca18ae89b.jpg b/docs/notes/pics/8036ba3d-8de9-44aa-bf5d-1f8ca18ae89b.jpg
new file mode 100644
index 00000000..7491217d
Binary files /dev/null and b/docs/notes/pics/8036ba3d-8de9-44aa-bf5d-1f8ca18ae89b.jpg differ
diff --git a/docs/notes/pics/8089a19a-6239-47a0-bf69-54203117d4dc.jpg b/docs/notes/pics/8089a19a-6239-47a0-bf69-54203117d4dc.jpg
new file mode 100644
index 00000000..5f34004b
Binary files /dev/null and b/docs/notes/pics/8089a19a-6239-47a0-bf69-54203117d4dc.jpg differ
diff --git a/docs/notes/pics/8162aebb-8fd2-4620-b771-e65751ba7e41.png b/docs/notes/pics/8162aebb-8fd2-4620-b771-e65751ba7e41.png
new file mode 100644
index 00000000..2fa69582
Binary files /dev/null and b/docs/notes/pics/8162aebb-8fd2-4620-b771-e65751ba7e41.png differ
diff --git a/docs/notes/pics/82a6981a-17aa-4370-b645-8704f44fc4a9.jpg b/docs/notes/pics/82a6981a-17aa-4370-b645-8704f44fc4a9.jpg
new file mode 100644
index 00000000..df6e3092
Binary files /dev/null and b/docs/notes/pics/82a6981a-17aa-4370-b645-8704f44fc4a9.jpg differ
diff --git a/docs/notes/pics/847b9ba1-b3cd-4e52-aa72-dee0222ae09f.jpg b/docs/notes/pics/847b9ba1-b3cd-4e52-aa72-dee0222ae09f.jpg
new file mode 100644
index 00000000..c68fd3ef
Binary files /dev/null and b/docs/notes/pics/847b9ba1-b3cd-4e52-aa72-dee0222ae09f.jpg differ
diff --git a/docs/notes/pics/88c37fb1-c619-47b0-8345-b1e5b442f50b.png b/docs/notes/pics/88c37fb1-c619-47b0-8345-b1e5b442f50b.png
new file mode 100644
index 00000000..e8956c5d
Binary files /dev/null and b/docs/notes/pics/88c37fb1-c619-47b0-8345-b1e5b442f50b.png differ
diff --git a/docs/notes/pics/8c4def9c-0523-4beb-abe3-46fdb6ae9657.png b/docs/notes/pics/8c4def9c-0523-4beb-abe3-46fdb6ae9657.png
new file mode 100644
index 00000000..ad36e323
Binary files /dev/null and b/docs/notes/pics/8c4def9c-0523-4beb-abe3-46fdb6ae9657.png differ
diff --git a/docs/notes/pics/8fdbb8f5-2cf8-41dc-b5f1-99d98abb52d9.jpg b/docs/notes/pics/8fdbb8f5-2cf8-41dc-b5f1-99d98abb52d9.jpg
new file mode 100644
index 00000000..a9e33df4
Binary files /dev/null and b/docs/notes/pics/8fdbb8f5-2cf8-41dc-b5f1-99d98abb52d9.jpg differ
diff --git a/docs/notes/pics/912a7886-fb1d-4a05-902d-ab17ea17007f.jpg b/docs/notes/pics/912a7886-fb1d-4a05-902d-ab17ea17007f.jpg
new file mode 100644
index 00000000..e30c6908
Binary files /dev/null and b/docs/notes/pics/912a7886-fb1d-4a05-902d-ab17ea17007f.jpg differ
diff --git a/docs/notes/pics/92691356-4f7a-46ec-9921-13055d3dcb12.jpg b/docs/notes/pics/92691356-4f7a-46ec-9921-13055d3dcb12.jpg
new file mode 100644
index 00000000..2a736557
Binary files /dev/null and b/docs/notes/pics/92691356-4f7a-46ec-9921-13055d3dcb12.jpg differ
diff --git a/docs/notes/pics/938fc386-0340-47b5-aeaa-6993e3bb4fc0.png b/docs/notes/pics/938fc386-0340-47b5-aeaa-6993e3bb4fc0.png
new file mode 100644
index 00000000..9064fe0e
Binary files /dev/null and b/docs/notes/pics/938fc386-0340-47b5-aeaa-6993e3bb4fc0.png differ
diff --git a/docs/notes/pics/94414cd3-5db9-4aca-a2af-539140955c62.jpg b/docs/notes/pics/94414cd3-5db9-4aca-a2af-539140955c62.jpg
new file mode 100644
index 00000000..5c53d38b
Binary files /dev/null and b/docs/notes/pics/94414cd3-5db9-4aca-a2af-539140955c62.jpg differ
diff --git a/docs/notes/pics/963fac12-4eac-4922-8a5f-f262c11f80fb.jpg b/docs/notes/pics/963fac12-4eac-4922-8a5f-f262c11f80fb.jpg
new file mode 100644
index 00000000..97104ded
Binary files /dev/null and b/docs/notes/pics/963fac12-4eac-4922-8a5f-f262c11f80fb.jpg differ
diff --git a/docs/notes/pics/96706658-b3f8-4f32-8eb3-dcb7fc8d5381.jpg b/docs/notes/pics/96706658-b3f8-4f32-8eb3-dcb7fc8d5381.jpg
new file mode 100644
index 00000000..c4e77ba1
Binary files /dev/null and b/docs/notes/pics/96706658-b3f8-4f32-8eb3-dcb7fc8d5381.jpg differ
diff --git a/docs/notes/pics/9bae24e9-d2f5-4e1d-af42-1a868a5847cf.jpg b/docs/notes/pics/9bae24e9-d2f5-4e1d-af42-1a868a5847cf.jpg
new file mode 100644
index 00000000..b985fdd8
Binary files /dev/null and b/docs/notes/pics/9bae24e9-d2f5-4e1d-af42-1a868a5847cf.jpg differ
diff --git a/docs/notes/pics/9d3c6bfb-4c4c-4b77-9410-56b3f82106d1.jpg b/docs/notes/pics/9d3c6bfb-4c4c-4b77-9410-56b3f82106d1.jpg
new file mode 100644
index 00000000..9f4f5f04
Binary files /dev/null and b/docs/notes/pics/9d3c6bfb-4c4c-4b77-9410-56b3f82106d1.jpg differ
diff --git a/docs/notes/pics/9ffb82ad-9b7f-44df-b93f-fc8b3f4093a6.jpg b/docs/notes/pics/9ffb82ad-9b7f-44df-b93f-fc8b3f4093a6.jpg
new file mode 100644
index 00000000..2ab8530a
Binary files /dev/null and b/docs/notes/pics/9ffb82ad-9b7f-44df-b93f-fc8b3f4093a6.jpg differ
diff --git a/docs/notes/pics/a30a06e1-3c6b-4a71-aa03-8aad7fc44b4e.png b/docs/notes/pics/a30a06e1-3c6b-4a71-aa03-8aad7fc44b4e.png
new file mode 100644
index 00000000..1f6db87f
Binary files /dev/null and b/docs/notes/pics/a30a06e1-3c6b-4a71-aa03-8aad7fc44b4e.png differ
diff --git a/docs/notes/pics/a6ebcd0a-a44d-48c8-b29a-dfacece83301.png b/docs/notes/pics/a6ebcd0a-a44d-48c8-b29a-dfacece83301.png
new file mode 100644
index 00000000..9b6bcee2
Binary files /dev/null and b/docs/notes/pics/a6ebcd0a-a44d-48c8-b29a-dfacece83301.png differ
diff --git a/docs/notes/pics/b01e12b7-6cfc-485b-a03e-a575e6f7b773.jpg b/docs/notes/pics/b01e12b7-6cfc-485b-a03e-a575e6f7b773.jpg
new file mode 100644
index 00000000..cfb2586d
Binary files /dev/null and b/docs/notes/pics/b01e12b7-6cfc-485b-a03e-a575e6f7b773.jpg differ
diff --git a/docs/notes/pics/b02fcffd-ed09-4ef9-bc5f-8f0e0383eb1a.jpg b/docs/notes/pics/b02fcffd-ed09-4ef9-bc5f-8f0e0383eb1a.jpg
new file mode 100644
index 00000000..a0df23c8
Binary files /dev/null and b/docs/notes/pics/b02fcffd-ed09-4ef9-bc5f-8f0e0383eb1a.jpg differ
diff --git a/docs/notes/pics/b28a7b1e-bf5a-4e23-8be7-701eacef0111.jpg b/docs/notes/pics/b28a7b1e-bf5a-4e23-8be7-701eacef0111.jpg
new file mode 100644
index 00000000..d8085fa0
Binary files /dev/null and b/docs/notes/pics/b28a7b1e-bf5a-4e23-8be7-701eacef0111.jpg differ
diff --git a/docs/notes/pics/b3a421e3-41b4-4e99-b612-bc695a7f622f.jpg b/docs/notes/pics/b3a421e3-41b4-4e99-b612-bc695a7f622f.jpg
new file mode 100644
index 00000000..eb46d412
Binary files /dev/null and b/docs/notes/pics/b3a421e3-41b4-4e99-b612-bc695a7f622f.jpg differ
diff --git a/docs/notes/pics/b6a7e8af-91bf-44b2-8874-ccc6d9d52afc.jpg b/docs/notes/pics/b6a7e8af-91bf-44b2-8874-ccc6d9d52afc.jpg
new file mode 100644
index 00000000..96b80deb
Binary files /dev/null and b/docs/notes/pics/b6a7e8af-91bf-44b2-8874-ccc6d9d52afc.jpg differ
diff --git a/docs/notes/pics/bab0fba6-38e4-45f7-b34d-3edaad43810f.jpg b/docs/notes/pics/bab0fba6-38e4-45f7-b34d-3edaad43810f.jpg
new file mode 100644
index 00000000..c3815f20
Binary files /dev/null and b/docs/notes/pics/bab0fba6-38e4-45f7-b34d-3edaad43810f.jpg differ
diff --git a/docs/notes/pics/bc5826f5-014d-47b4-9a76-d86b80968643.jpg b/docs/notes/pics/bc5826f5-014d-47b4-9a76-d86b80968643.jpg
new file mode 100644
index 00000000..b27cd02f
Binary files /dev/null and b/docs/notes/pics/bc5826f5-014d-47b4-9a76-d86b80968643.jpg differ
diff --git a/docs/notes/pics/c26e7ce3-dd9e-47e2-a208-367b5b2cddf6.png b/docs/notes/pics/c26e7ce3-dd9e-47e2-a208-367b5b2cddf6.png
new file mode 100644
index 00000000..cf8d36dc
Binary files /dev/null and b/docs/notes/pics/c26e7ce3-dd9e-47e2-a208-367b5b2cddf6.png differ
diff --git a/docs/notes/pics/c443e38f-ef06-4944-9ce4-aaf3b348b2e8.png b/docs/notes/pics/c443e38f-ef06-4944-9ce4-aaf3b348b2e8.png
new file mode 100644
index 00000000..16563b57
Binary files /dev/null and b/docs/notes/pics/c443e38f-ef06-4944-9ce4-aaf3b348b2e8.png differ
diff --git a/docs/notes/pics/c6fdb958-578d-4685-a5fa-400857be91d5.jpg b/docs/notes/pics/c6fdb958-578d-4685-a5fa-400857be91d5.jpg
new file mode 100644
index 00000000..895d1ed5
Binary files /dev/null and b/docs/notes/pics/c6fdb958-578d-4685-a5fa-400857be91d5.jpg differ
diff --git a/docs/notes/pics/cf779e26-0382-4495-8463-f1e19e2e38a0.jpg b/docs/notes/pics/cf779e26-0382-4495-8463-f1e19e2e38a0.jpg
new file mode 100644
index 00000000..b3699644
Binary files /dev/null and b/docs/notes/pics/cf779e26-0382-4495-8463-f1e19e2e38a0.jpg differ
diff --git a/docs/notes/pics/d011c697-2551-4968-ac51-e5e01a954204.jpg b/docs/notes/pics/d011c697-2551-4968-ac51-e5e01a954204.jpg
new file mode 100644
index 00000000..4e723087
Binary files /dev/null and b/docs/notes/pics/d011c697-2551-4968-ac51-e5e01a954204.jpg differ
diff --git a/docs/notes/pics/d2a12961-2b36-4463-b017-ca46a3308b8e.png b/docs/notes/pics/d2a12961-2b36-4463-b017-ca46a3308b8e.png
new file mode 100644
index 00000000..ce6663bc
Binary files /dev/null and b/docs/notes/pics/d2a12961-2b36-4463-b017-ca46a3308b8e.png differ
diff --git a/docs/notes/pics/de9d8133-4c98-4e07-b39c-302e162784ea.jpg b/docs/notes/pics/de9d8133-4c98-4e07-b39c-302e162784ea.jpg
new file mode 100644
index 00000000..4a923dd8
Binary files /dev/null and b/docs/notes/pics/de9d8133-4c98-4e07-b39c-302e162784ea.jpg differ
diff --git a/docs/notes/pics/deb18bdb-b3b3-4660-b778-b0823a48db12.jpg b/docs/notes/pics/deb18bdb-b3b3-4660-b778-b0823a48db12.jpg
new file mode 100644
index 00000000..7746a715
Binary files /dev/null and b/docs/notes/pics/deb18bdb-b3b3-4660-b778-b0823a48db12.jpg differ
diff --git a/docs/notes/pics/df247180-4d5c-4d4b-ab0f-1aec61d13d45.png b/docs/notes/pics/df247180-4d5c-4d4b-ab0f-1aec61d13d45.png
new file mode 100644
index 00000000..ef5b780f
Binary files /dev/null and b/docs/notes/pics/df247180-4d5c-4d4b-ab0f-1aec61d13d45.png differ
diff --git a/docs/notes/pics/e19452dd-220a-4a6b-bcb0-91ad5e5c4706.png b/docs/notes/pics/e19452dd-220a-4a6b-bcb0-91ad5e5c4706.png
new file mode 100644
index 00000000..c21e9af2
Binary files /dev/null and b/docs/notes/pics/e19452dd-220a-4a6b-bcb0-91ad5e5c4706.png differ
diff --git a/docs/notes/pics/e89848b7-5dc3-419d-ae88-4c930da13306.png b/docs/notes/pics/e89848b7-5dc3-419d-ae88-4c930da13306.png
new file mode 100644
index 00000000..23645c21
Binary files /dev/null and b/docs/notes/pics/e89848b7-5dc3-419d-ae88-4c930da13306.png differ
diff --git a/docs/notes/pics/f77f06b6-7359-4066-b85d-3f6c09ddf425.jpg b/docs/notes/pics/f77f06b6-7359-4066-b85d-3f6c09ddf425.jpg
new file mode 100644
index 00000000..9fc2a271
Binary files /dev/null and b/docs/notes/pics/f77f06b6-7359-4066-b85d-3f6c09ddf425.jpg differ
diff --git a/docs/notes/pics/f944fac3-482b-4ca3-9447-17aec4a3cca0.png b/docs/notes/pics/f944fac3-482b-4ca3-9447-17aec4a3cca0.png
new file mode 100644
index 00000000..56f05611
Binary files /dev/null and b/docs/notes/pics/f944fac3-482b-4ca3-9447-17aec4a3cca0.png differ
diff --git a/docs/notes/pics/fb14b808-734c-4634-9c87-e598b1937996.png b/docs/notes/pics/fb14b808-734c-4634-9c87-e598b1937996.png
new file mode 100644
index 00000000..89918e6d
Binary files /dev/null and b/docs/notes/pics/fb14b808-734c-4634-9c87-e598b1937996.png differ
diff --git a/docs/notes/pics/ff5b89ac-798e-4fbc-b0ce-da2fc2358570.jpg b/docs/notes/pics/ff5b89ac-798e-4fbc-b0ce-da2fc2358570.jpg
new file mode 100644
index 00000000..1fa40320
Binary files /dev/null and b/docs/notes/pics/ff5b89ac-798e-4fbc-b0ce-da2fc2358570.jpg differ
diff --git a/docs/notes/代码可读性.md b/docs/notes/代码可读性.md
index 7762ae13..d11e8086 100644
--- a/docs/notes/代码可读性.md
+++ b/docs/notes/代码可读性.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、可读性的重要性](#一可读性的重要性)
* [二、用名字表达代码含义](#二用名字表达代码含义)
@@ -48,9 +48,12 @@
- 用 min、max 表示数量范围;
- 用 first、last 表示访问空间的包含范围;
+
+
+
- begin、end 表示访问空间的排除范围,即 end 不包含尾部。
-
+
# 四、良好的代码风格
diff --git a/docs/notes/代码风格规范.md b/docs/notes/代码风格规范.md
index 18bb44a0..90ee45a2 100644
--- a/docs/notes/代码风格规范.md
+++ b/docs/notes/代码风格规范.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
diff --git a/docs/notes/分布式.md b/docs/notes/分布式.md
index 564149e9..bbbb7dd0 100644
--- a/docs/notes/分布式.md
+++ b/docs/notes/分布式.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、分布式锁](#一分布式锁)
* [数据库的唯一索引](#数据库的唯一索引)
@@ -71,7 +71,7 @@ EXPIRE 指令可以为一个键值对设置一个过期时间,从而避免了
Zookeeper 提供了一种树形结构级的命名空间,/app1/p_1 节点的父节点为 /app1。
-
+
### 2. 节点类型
@@ -112,7 +112,7 @@ Zookeeper 提供了一种树形结构级的命名空间,/app1/p_1 节点的父
2. 之后将本地消息表中的消息转发到 Kafka 等消息队列中,如果转发成功则将消息从本地消息表中删除,否则继续重新转发。
3. 在分布式事务操作的另一方从消息队列中读取一个消息,并执行消息中的操作。
-
+
## 2PC
@@ -124,7 +124,7 @@ Zookeeper 提供了一种树形结构级的命名空间,/app1/p_1 节点的父
协调者询问参与者事务是否执行成功,参与者发回事务执行结果。
-
+
#### 1.2 提交阶段
@@ -132,7 +132,7 @@ Zookeeper 提供了一种树形结构级的命名空间,/app1/p_1 节点的父
需要注意的是,在准备阶段,参与者执行了事务,但是还未提交。只有在提交阶段接收到协调者发来的通知后,才进行提交或者回滚。
-
+
### 2. 存在的问题
@@ -156,7 +156,7 @@ Zookeeper 提供了一种树形结构级的命名空间,/app1/p_1 节点的父
分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition Tolerance),最多只能同时满足其中两项。
-
+
## 一致性
@@ -193,7 +193,6 @@ BASE 是基本可用(Basically Available)、软状态(Soft State)和最
BASE 理论是对 CAP 中一致性和可用性权衡的结果,它的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。
-
## 基本可用
diff --git a/docs/notes/剑指 offer 题解.md b/docs/notes/剑指 offer 题解.md
index c6047bba..ab457739 100644
--- a/docs/notes/剑指 offer 题解.md
+++ b/docs/notes/剑指 offer 题解.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [3. 数组中重复的数字](#3-数组中重复的数字)
* [4. 二维数组中的查找](#4-二维数组中的查找)
@@ -80,6 +80,8 @@
+部分绘图文件可以在这里免费下载:[剑指 Offer](https://www.processon.com/view/5a3e4c7be4b0909c1aa18b49),后续会慢慢把所有题目都配上 GIF 演示图。
+
# 3. 数组中重复的数字
[NowCoder](https://www.nowcoder.com/practice/623a5ac0ea5b4e5f95552655361ae0a8?tpId=13&tqId=11203&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking)
diff --git a/docs/notes/攻击技术.md b/docs/notes/攻击技术.md
index 6194c626..49ed6b4b 100644
--- a/docs/notes/攻击技术.md
+++ b/docs/notes/攻击技术.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、跨站脚本攻击](#一跨站脚本攻击)
* [二、跨站请求伪造](#二跨站请求伪造)
diff --git a/docs/notes/数据库系统原理.md b/docs/notes/数据库系统原理.md
index 75f53220..c6f5437e 100644
--- a/docs/notes/数据库系统原理.md
+++ b/docs/notes/数据库系统原理.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、事务](#一事务)
* [概念](#概念)
@@ -48,7 +48,7 @@
事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。
-
+
## ACID
@@ -81,7 +81,7 @@
- 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。
- 事务满足持久化是为了能应对数据库崩溃的情况。
-
+
## AUTOCOMMIT
@@ -95,26 +95,26 @@ MySQL 默认采用自动提交模式。也就是说,如果不显式使用`STAR
T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。
-
+
## 读脏数据
T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。
-
+
## 不可重复读
T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。
-
+
## 幻影读
T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。
-
+
----
diff --git a/docs/notes/构建工具.md b/docs/notes/构建工具.md
index 3e47514f..5730c27d 100644
--- a/docs/notes/构建工具.md
+++ b/docs/notes/构建工具.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、构建工具的作用](#一构建工具的作用)
* [二、Java 主流构建工具](#二java-主流构建工具)
@@ -35,7 +35,7 @@
主要包括 Ant、Maven 和 Gradle。
-
+
Gradle 和 Maven 的区别是,它使用 Groovy 这种特定领域语言(DSL)来管理构建脚本,而不再使用 XML 这种标记性语言。因为项目如果庞大的话,XML 很容易就变得臃肿。
diff --git a/docs/notes/正则表达式.md b/docs/notes/正则表达式.md
index 27e265e7..9b55f63d 100644
--- a/docs/notes/正则表达式.md
+++ b/docs/notes/正则表达式.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、概述](#一概述)
* [二、匹配单个字符](#二匹配单个字符)
diff --git a/docs/notes/消息队列.md b/docs/notes/消息队列.md
index 9b4125cb..9e13abb7 100644
--- a/docs/notes/消息队列.md
+++ b/docs/notes/消息队列.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、消息模型](#一消息模型)
* [点对点](#点对点)
@@ -20,20 +20,21 @@
消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。
-
+
## 发布/订阅
消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。
-
+
发布与订阅模式和观察者模式有以下不同:
- 观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,发布者与订阅者不知道对方的存在,它们之间通过频道进行通信。
- 观察者模式是同步的,当事件触发时,主题会调用观察者的方法,然后等待方法返回;而发布与订阅模式是异步的,发布者向频道发送一个消息之后,就不需要关心订阅者何时去订阅这个消息,可以立即返回。
-
+
+
# 二、使用场景
diff --git a/docs/notes/算法.md b/docs/notes/算法.md
index e9e497f0..40b6cd5d 100644
--- a/docs/notes/算法.md
+++ b/docs/notes/算法.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、前言](#一前言)
* [二、算法分析](#二算法分析)
@@ -294,7 +294,7 @@ public abstract class Sort> {
选择排序需要 \~N2/2 次比较和 \~N 次交换,它的运行时间与输入无关,这个特点使得它对一个已经排序的数组也需要这么多的比较和交换操作。
-
+
```java
public class Selection> extends Sort {
@@ -321,9 +321,7 @@ public class Selection> extends Sort {
在一轮循环中,如果没有发生交换,就说明数组已经是有序的,此时可以直接退出。
-以下演示了在一轮循环中,将最大的元素 5 上浮到最右侧。
-
-
+
```java
public class Bubble> extends Sort {
@@ -359,7 +357,7 @@ public class Bubble> extends Sort {
以下演示了在一轮循环中,将元素 2 插入到左侧已经排序的数组中。
-
+
```java
public class Insertion> extends Sort {
@@ -384,7 +382,7 @@ public class Insertion> extends Sort {
希尔排序使用插入排序对间隔 h 的序列进行排序。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。
-
+
```java
public class Shell> extends Sort {
@@ -418,7 +416,7 @@ public class Shell> extends Sort {
归并排序的思想是将数组分成两部分,分别进行排序,然后归并起来。
-
+
### 1. 归并方法
@@ -513,7 +511,7 @@ public class Down2UpMergeSort> extends MergeSort {
- 归并排序将数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序;
- 快速排序通过一个切分元素将数组分为两个子数组,左子数组小于等于切分元素,右子数组大于等于切分元素,将这两个子数组排序也就将整个数组排序了。
-
+
```java
public class QuickSort> extends Sort {
@@ -544,7 +542,7 @@ public class QuickSort> extends Sort {
取 a[l] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于它的元素,交换这两个元素。不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[l] 和 a[j] 交换位置。
-
+
```java
private int partition(T[] nums, int l, int h) {
diff --git a/docs/notes/系统设计基础.md b/docs/notes/系统设计基础.md
index 06681eaa..2d4d5aa1 100644
--- a/docs/notes/系统设计基础.md
+++ b/docs/notes/系统设计基础.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、性能](#一性能)
* [二、伸缩性](#二伸缩性)
diff --git a/docs/notes/缓存.md b/docs/notes/缓存.md
index 4b8c91d6..a2b975dd 100644
--- a/docs/notes/缓存.md
+++ b/docs/notes/缓存.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、缓存特征](#一缓存特征)
* [二、LRU](#二lru)
diff --git a/docs/notes/计算机操作系统.md b/docs/notes/计算机操作系统.md
index 079d6dc9..01cea91a 100644
--- a/docs/notes/计算机操作系统.md
+++ b/docs/notes/计算机操作系统.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、概述](#一概述)
* [基本特征](#基本特征)
diff --git a/docs/notes/计算机网络.md b/docs/notes/计算机网络.md
index 27a342cf..2920d424 100644
--- a/docs/notes/计算机网络.md
+++ b/docs/notes/计算机网络.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、概述](#一概述)
* [网络的网络](#网络的网络)
@@ -331,7 +331,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标
正是由于这种自学习能力,因此交换机是一种即插即用设备,不需要网络管理员手动配置交换表内容。
-下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧。主机 B 向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 3 的映射。
+下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。
diff --git a/docs/notes/设计模式.md b/docs/notes/设计模式.md
index 4f28cdbf..47f0522d 100644
--- a/docs/notes/设计模式.md
+++ b/docs/notes/设计模式.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、概述](#一概述)
* [二、创建型](#二创建型)
diff --git a/docs/notes/集群.md b/docs/notes/集群.md
index 2c6e29ec..c094315e 100644
--- a/docs/notes/集群.md
+++ b/docs/notes/集群.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、负载均衡](#一负载均衡)
* [负载均衡算法](#负载均衡算法)
@@ -34,11 +34,11 @@
下图中,一共有 6 个客户端产生了 6 个请求,这 6 个请求按 (1, 2, 3, 4, 5, 6) 的顺序发送。(1, 3, 5) 的请求会被发送到服务器 1,(2, 4, 6) 的请求会被发送到服务器 2。
-
+
该算法比较适合每个服务器的性能差不多的场景,如果有性能存在差异的情况下,那么性能较差的服务器可能无法承担过大的负载(下图的 Server 2)。
-
+
### 2. 加权轮询(Weighted Round Robbin)
@@ -46,7 +46,7 @@
例如下图中,服务器 1 被赋予的权值为 5,服务器 2 被赋予的权值为 1,那么 (1, 2, 3, 4, 5) 请求会被发送到服务器 1,(6) 请求会被发送到服务器 2。
-
+
### 3. 最少连接(least Connections)
@@ -54,27 +54,25 @@
例如下图中,(1, 3, 5) 请求会被发送到服务器 1,但是 (1, 3) 很快就断开连接,此时只有 (5) 请求连接服务器 1;(2, 4, 6) 请求被发送到服务器 2,只有 (2) 的连接断开,此时 (6, 4) 请求连接服务器 2。该系统继续运行时,服务器 2 会承担过大的负载。
-
+
最少连接算法就是将请求发送给当前最少连接数的服务器上。
例如下图中,服务器 1 当前连接数最小,那么新到来的请求 6 就会被发送到服务器 1 上。
-
+
### 4. 加权最少连接(Weighted Least Connection)
在最少连接的基础上,根据服务器的性能为每台服务器分配权重,再根据权重计算出每台服务器能处理的连接数。
-
-
### 5. 随机算法(Random)
把请求随机发送到服务器上。
和轮询算法类似,该算法比较适合服务器性能差不多的场景。
-
+
### 6. 源地址哈希法 (IP Hash)
@@ -82,7 +80,7 @@
可以保证同一 IP 的客户端的请求会转发到同一台服务器上,用来实现会话粘滞(Sticky Session)
-
+
## 转发实现
@@ -97,7 +95,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服
该负载均衡转发的缺点比较明显,实际场景中很少使用它。
-
+
### 2. DNS 域名解析
@@ -113,7 +111,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服
大型网站基本使用了 DNS 做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。也就是说,域名解析的结果为内部的负载均衡服务器 IP 地址。
-
+
### 3. 反向代理服务器
@@ -170,7 +168,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服
- 当服务器宕机时,将丢失该服务器上的所有 Session。
-
+
## Session Replication
@@ -181,7 +179,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服
- 占用过多内存;
- 同步过程占用网络带宽以及服务器处理器时间。
-
+
## Session Server
@@ -195,7 +193,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服
- 需要去实现存取 Session 的代码。
-
+
参考:
diff --git a/docs/notes/面向对象思想.md b/docs/notes/面向对象思想.md
index 46fd2596..acef2475 100644
--- a/docs/notes/面向对象思想.md
+++ b/docs/notes/面向对象思想.md
@@ -1,4 +1,4 @@
-[🍉 点击订阅面试进阶专栏 ](https://xiaozhuanlan.com/CyC2018)
+[🍉 点击阅读面试进阶指南 ](https://github.com/CyC2018/Backend-Interview-Guide)
* [一、三大特性](#一三大特性)
* [封装](#封装)
diff --git a/docs/pics/066f9c11-0154-42c3-8685-301a70e9bd39.jpg b/docs/pics/066f9c11-0154-42c3-8685-301a70e9bd39.jpg
new file mode 100644
index 00000000..84d371b8
Binary files /dev/null and b/docs/pics/066f9c11-0154-42c3-8685-301a70e9bd39.jpg differ
diff --git a/docs/pics/09184175-9bf2-40ff-8a68-3b467c77216a.png b/docs/pics/09184175-9bf2-40ff-8a68-3b467c77216a.png
new file mode 100644
index 00000000..17f4d5b7
Binary files /dev/null and b/docs/pics/09184175-9bf2-40ff-8a68-3b467c77216a.png differ
diff --git a/docs/pics/10a6d3ee-04b2-46b4-b171-d596e5ab0f84.jpg b/docs/pics/10a6d3ee-04b2-46b4-b171-d596e5ab0f84.jpg
new file mode 100644
index 00000000..043964ae
Binary files /dev/null and b/docs/pics/10a6d3ee-04b2-46b4-b171-d596e5ab0f84.jpg differ
diff --git a/docs/pics/181edd46-e640-472a-9119-a697de0d2a82.jpg b/docs/pics/181edd46-e640-472a-9119-a697de0d2a82.jpg
new file mode 100644
index 00000000..306d1c66
Binary files /dev/null and b/docs/pics/181edd46-e640-472a-9119-a697de0d2a82.jpg differ
diff --git a/docs/pics/1_200.png b/docs/pics/1_200.png
new file mode 100644
index 00000000..c6dc2bb5
Binary files /dev/null and b/docs/pics/1_200.png differ
diff --git a/docs/pics/1b718cd5-7b1e-496c-9133-2bfd12bb5f89.jpg b/docs/pics/1b718cd5-7b1e-496c-9133-2bfd12bb5f89.jpg
new file mode 100644
index 00000000..60edac95
Binary files /dev/null and b/docs/pics/1b718cd5-7b1e-496c-9133-2bfd12bb5f89.jpg differ
diff --git a/docs/pics/1d2719d5-8d60-4c9b-a4ad-b2df7c7615af.jpg b/docs/pics/1d2719d5-8d60-4c9b-a4ad-b2df7c7615af.jpg
new file mode 100644
index 00000000..a9effcf7
Binary files /dev/null and b/docs/pics/1d2719d5-8d60-4c9b-a4ad-b2df7c7615af.jpg differ
diff --git a/docs/pics/20e61b68-effe-4a70-a7fd-58be23f9343a.png b/docs/pics/20e61b68-effe-4a70-a7fd-58be23f9343a.png
new file mode 100644
index 00000000..7da1a21f
Binary files /dev/null and b/docs/pics/20e61b68-effe-4a70-a7fd-58be23f9343a.png differ
diff --git a/docs/pics/21550397584141.gif b/docs/pics/21550397584141.gif
new file mode 100644
index 00000000..df5c1792
Binary files /dev/null and b/docs/pics/21550397584141.gif differ
diff --git a/docs/pics/26a7c9df-22f6-4df4-845a-745c053ab2e5.jpg b/docs/pics/26a7c9df-22f6-4df4-845a-745c053ab2e5.jpg
new file mode 100644
index 00000000..cf6ab009
Binary files /dev/null and b/docs/pics/26a7c9df-22f6-4df4-845a-745c053ab2e5.jpg differ
diff --git a/docs/pics/27fce0c6-8262-4d11-abb4-243faa2a2eef.jpg b/docs/pics/27fce0c6-8262-4d11-abb4-243faa2a2eef.jpg
new file mode 100644
index 00000000..72177f77
Binary files /dev/null and b/docs/pics/27fce0c6-8262-4d11-abb4-243faa2a2eef.jpg differ
diff --git a/docs/pics/2959e455-e6cb-4461-aeb3-e319fe5c41db.jpg b/docs/pics/2959e455-e6cb-4461-aeb3-e319fe5c41db.jpg
new file mode 100644
index 00000000..09ad339e
Binary files /dev/null and b/docs/pics/2959e455-e6cb-4461-aeb3-e319fe5c41db.jpg differ
diff --git a/docs/pics/2_200.png b/docs/pics/2_200.png
new file mode 100644
index 00000000..c292d4ef
Binary files /dev/null and b/docs/pics/2_200.png differ
diff --git a/docs/pics/3034859c-eb5a-402b-b65a-974dcc0c4a46.png b/docs/pics/3034859c-eb5a-402b-b65a-974dcc0c4a46.png
new file mode 100644
index 00000000..3dea1b9f
Binary files /dev/null and b/docs/pics/3034859c-eb5a-402b-b65a-974dcc0c4a46.png differ
diff --git a/docs/pics/303873db-0d11-4683-a43c-f319b7aef2b6.jpg b/docs/pics/303873db-0d11-4683-a43c-f319b7aef2b6.jpg
new file mode 100644
index 00000000..0983229b
Binary files /dev/null and b/docs/pics/303873db-0d11-4683-a43c-f319b7aef2b6.jpg differ
diff --git a/docs/pics/3144015c-dcfb-47ac-94a5-bab3b78b0f14.jpg b/docs/pics/3144015c-dcfb-47ac-94a5-bab3b78b0f14.jpg
new file mode 100644
index 00000000..a805e7f9
Binary files /dev/null and b/docs/pics/3144015c-dcfb-47ac-94a5-bab3b78b0f14.jpg differ
diff --git a/docs/pics/31550398353573.gif b/docs/pics/31550398353573.gif
new file mode 100644
index 00000000..f9008efe
Binary files /dev/null and b/docs/pics/31550398353573.gif differ
diff --git a/docs/pics/3_200.png b/docs/pics/3_200.png
new file mode 100644
index 00000000..a35b29e4
Binary files /dev/null and b/docs/pics/3_200.png differ
diff --git a/docs/pics/3f04455c-f4ac-4038-a69f-21df133389e1.png b/docs/pics/3f04455c-f4ac-4038-a69f-21df133389e1.png
new file mode 100644
index 00000000..be86b978
Binary files /dev/null and b/docs/pics/3f04455c-f4ac-4038-a69f-21df133389e1.png differ
diff --git a/docs/pics/3fa0a6cb-a0a4-490a-9a80-7f4888f2500c.png b/docs/pics/3fa0a6cb-a0a4-490a-9a80-7f4888f2500c.png
new file mode 100644
index 00000000..65bb211c
Binary files /dev/null and b/docs/pics/3fa0a6cb-a0a4-490a-9a80-7f4888f2500c.png differ
diff --git a/docs/pics/3fb6e997-0fc9-4178-a691-5907b67bbeae.png b/docs/pics/3fb6e997-0fc9-4178-a691-5907b67bbeae.png
new file mode 100644
index 00000000..63751152
Binary files /dev/null and b/docs/pics/3fb6e997-0fc9-4178-a691-5907b67bbeae.png differ
diff --git a/docs/pics/40f29839-fd56-4ed0-9353-39dfe6f0bba5.jpg b/docs/pics/40f29839-fd56-4ed0-9353-39dfe6f0bba5.jpg
new file mode 100644
index 00000000..355cdf57
Binary files /dev/null and b/docs/pics/40f29839-fd56-4ed0-9353-39dfe6f0bba5.jpg differ
diff --git a/docs/pics/43bf0957-0386-4c09-9ad7-e163c5b62559.jpg b/docs/pics/43bf0957-0386-4c09-9ad7-e163c5b62559.jpg
new file mode 100644
index 00000000..556c01dd
Binary files /dev/null and b/docs/pics/43bf0957-0386-4c09-9ad7-e163c5b62559.jpg differ
diff --git a/docs/pics/45b69b1c-8e1d-40ec-a1dd-dd8f7d383f01.jpg b/docs/pics/45b69b1c-8e1d-40ec-a1dd-dd8f7d383f01.jpg
new file mode 100644
index 00000000..3c1c8175
Binary files /dev/null and b/docs/pics/45b69b1c-8e1d-40ec-a1dd-dd8f7d383f01.jpg differ
diff --git a/docs/pics/474e5579-38b1-47d2-8f76-a13ae086b039.jpg b/docs/pics/474e5579-38b1-47d2-8f76-a13ae086b039.jpg
new file mode 100644
index 00000000..9af7bc09
Binary files /dev/null and b/docs/pics/474e5579-38b1-47d2-8f76-a13ae086b039.jpg differ
diff --git a/docs/pics/4f151e62-6160-47f1-9eff-47b1f4dea4e9.jpg b/docs/pics/4f151e62-6160-47f1-9eff-47b1f4dea4e9.jpg
new file mode 100644
index 00000000..febf7a17
Binary files /dev/null and b/docs/pics/4f151e62-6160-47f1-9eff-47b1f4dea4e9.jpg differ
diff --git a/docs/pics/51550399426594.gif b/docs/pics/51550399426594.gif
new file mode 100644
index 00000000..6e931791
Binary files /dev/null and b/docs/pics/51550399426594.gif differ
diff --git a/docs/pics/54e6d499-80df-488e-aa7e-081766c41538.jpg b/docs/pics/54e6d499-80df-488e-aa7e-081766c41538.jpg
new file mode 100644
index 00000000..0ffa2a5b
Binary files /dev/null and b/docs/pics/54e6d499-80df-488e-aa7e-081766c41538.jpg differ
diff --git a/docs/pics/5_200.png b/docs/pics/5_200.png
new file mode 100644
index 00000000..dd90699b
Binary files /dev/null and b/docs/pics/5_200.png differ
diff --git a/docs/pics/5d0cb407-f1cc-4b89-ad4a-ec4e9b327c34.jpg b/docs/pics/5d0cb407-f1cc-4b89-ad4a-ec4e9b327c34.jpg
new file mode 100644
index 00000000..4b977538
Binary files /dev/null and b/docs/pics/5d0cb407-f1cc-4b89-ad4a-ec4e9b327c34.jpg differ
diff --git a/docs/pics/5e6e05d6-1028-4f5c-b9bd-1a40b90d6070.jpg b/docs/pics/5e6e05d6-1028-4f5c-b9bd-1a40b90d6070.jpg
new file mode 100644
index 00000000..f2a6c03a
Binary files /dev/null and b/docs/pics/5e6e05d6-1028-4f5c-b9bd-1a40b90d6070.jpg differ
diff --git a/docs/pics/61550402057509.gif b/docs/pics/61550402057509.gif
new file mode 100644
index 00000000..7ba6f280
Binary files /dev/null and b/docs/pics/61550402057509.gif differ
diff --git a/docs/pics/67173c9f-ac87-496a-bd0a-0b1a5cfa735a.jpg b/docs/pics/67173c9f-ac87-496a-bd0a-0b1a5cfa735a.jpg
new file mode 100644
index 00000000..48f3136c
Binary files /dev/null and b/docs/pics/67173c9f-ac87-496a-bd0a-0b1a5cfa735a.jpg differ
diff --git a/docs/pics/6_200.png b/docs/pics/6_200.png
new file mode 100644
index 00000000..bbf8dfd2
Binary files /dev/null and b/docs/pics/6_200.png differ
diff --git a/docs/pics/6aee49d3-f6c6-4d14-a81a-080c290de875.jpg b/docs/pics/6aee49d3-f6c6-4d14-a81a-080c290de875.jpg
new file mode 100644
index 00000000..48b1bd5d
Binary files /dev/null and b/docs/pics/6aee49d3-f6c6-4d14-a81a-080c290de875.jpg differ
diff --git a/docs/pics/6dd28bfc-6ef7-47cb-af50-a681ebc1bbaa.png b/docs/pics/6dd28bfc-6ef7-47cb-af50-a681ebc1bbaa.png
new file mode 100644
index 00000000..c951760f
Binary files /dev/null and b/docs/pics/6dd28bfc-6ef7-47cb-af50-a681ebc1bbaa.png differ
diff --git a/docs/pics/731a5e8f-a2c2-43ff-b8dd-6aeb9fffbe26.jpg b/docs/pics/731a5e8f-a2c2-43ff-b8dd-6aeb9fffbe26.jpg
new file mode 100644
index 00000000..dda05f94
Binary files /dev/null and b/docs/pics/731a5e8f-a2c2-43ff-b8dd-6aeb9fffbe26.jpg differ
diff --git a/docs/pics/73846795-675b-496b-88b0-d44233fdcfba.jpg b/docs/pics/73846795-675b-496b-88b0-d44233fdcfba.jpg
new file mode 100644
index 00000000..b045287d
Binary files /dev/null and b/docs/pics/73846795-675b-496b-88b0-d44233fdcfba.jpg differ
diff --git a/docs/pics/73c72e75-193c-4092-aa43-b9c6703c4a22.jpg b/docs/pics/73c72e75-193c-4092-aa43-b9c6703c4a22.jpg
new file mode 100644
index 00000000..5b905db1
Binary files /dev/null and b/docs/pics/73c72e75-193c-4092-aa43-b9c6703c4a22.jpg differ
diff --git a/docs/pics/74727fa5-d971-4480-a9f1-eb12455a0f85.png b/docs/pics/74727fa5-d971-4480-a9f1-eb12455a0f85.png
new file mode 100644
index 00000000..e8956c5d
Binary files /dev/null and b/docs/pics/74727fa5-d971-4480-a9f1-eb12455a0f85.png differ
diff --git a/docs/pics/76c7597a-8316-460d-b8fb-9752c4c43947.jpg b/docs/pics/76c7597a-8316-460d-b8fb-9752c4c43947.jpg
new file mode 100644
index 00000000..598ed2ed
Binary files /dev/null and b/docs/pics/76c7597a-8316-460d-b8fb-9752c4c43947.jpg differ
diff --git a/docs/pics/7935be3d-c2b3-4213-90c9-1e68ec4ac4e7.png b/docs/pics/7935be3d-c2b3-4213-90c9-1e68ec4ac4e7.png
new file mode 100644
index 00000000..d146ec06
Binary files /dev/null and b/docs/pics/7935be3d-c2b3-4213-90c9-1e68ec4ac4e7.png differ
diff --git a/docs/pics/7_200.png b/docs/pics/7_200.png
new file mode 100644
index 00000000..4fca7656
Binary files /dev/null and b/docs/pics/7_200.png differ
diff --git a/docs/pics/7f403a7a-5228-42c0-af1c-b21635c77016.jpg b/docs/pics/7f403a7a-5228-42c0-af1c-b21635c77016.jpg
new file mode 100644
index 00000000..aad341fd
Binary files /dev/null and b/docs/pics/7f403a7a-5228-42c0-af1c-b21635c77016.jpg differ
diff --git a/docs/pics/8036ba3d-8de9-44aa-bf5d-1f8ca18ae89b.jpg b/docs/pics/8036ba3d-8de9-44aa-bf5d-1f8ca18ae89b.jpg
new file mode 100644
index 00000000..7491217d
Binary files /dev/null and b/docs/pics/8036ba3d-8de9-44aa-bf5d-1f8ca18ae89b.jpg differ
diff --git a/docs/pics/8089a19a-6239-47a0-bf69-54203117d4dc.jpg b/docs/pics/8089a19a-6239-47a0-bf69-54203117d4dc.jpg
new file mode 100644
index 00000000..5f34004b
Binary files /dev/null and b/docs/pics/8089a19a-6239-47a0-bf69-54203117d4dc.jpg differ
diff --git a/docs/pics/8162aebb-8fd2-4620-b771-e65751ba7e41.png b/docs/pics/8162aebb-8fd2-4620-b771-e65751ba7e41.png
new file mode 100644
index 00000000..2fa69582
Binary files /dev/null and b/docs/pics/8162aebb-8fd2-4620-b771-e65751ba7e41.png differ
diff --git a/docs/pics/82a6981a-17aa-4370-b645-8704f44fc4a9.jpg b/docs/pics/82a6981a-17aa-4370-b645-8704f44fc4a9.jpg
new file mode 100644
index 00000000..df6e3092
Binary files /dev/null and b/docs/pics/82a6981a-17aa-4370-b645-8704f44fc4a9.jpg differ
diff --git a/docs/pics/847b9ba1-b3cd-4e52-aa72-dee0222ae09f.jpg b/docs/pics/847b9ba1-b3cd-4e52-aa72-dee0222ae09f.jpg
new file mode 100644
index 00000000..c68fd3ef
Binary files /dev/null and b/docs/pics/847b9ba1-b3cd-4e52-aa72-dee0222ae09f.jpg differ
diff --git a/docs/pics/88c37fb1-c619-47b0-8345-b1e5b442f50b.png b/docs/pics/88c37fb1-c619-47b0-8345-b1e5b442f50b.png
new file mode 100644
index 00000000..e8956c5d
Binary files /dev/null and b/docs/pics/88c37fb1-c619-47b0-8345-b1e5b442f50b.png differ
diff --git a/docs/pics/8c4def9c-0523-4beb-abe3-46fdb6ae9657.png b/docs/pics/8c4def9c-0523-4beb-abe3-46fdb6ae9657.png
new file mode 100644
index 00000000..ad36e323
Binary files /dev/null and b/docs/pics/8c4def9c-0523-4beb-abe3-46fdb6ae9657.png differ
diff --git a/docs/pics/8fdbb8f5-2cf8-41dc-b5f1-99d98abb52d9.jpg b/docs/pics/8fdbb8f5-2cf8-41dc-b5f1-99d98abb52d9.jpg
new file mode 100644
index 00000000..a9e33df4
Binary files /dev/null and b/docs/pics/8fdbb8f5-2cf8-41dc-b5f1-99d98abb52d9.jpg differ
diff --git a/docs/pics/912a7886-fb1d-4a05-902d-ab17ea17007f.jpg b/docs/pics/912a7886-fb1d-4a05-902d-ab17ea17007f.jpg
new file mode 100644
index 00000000..e30c6908
Binary files /dev/null and b/docs/pics/912a7886-fb1d-4a05-902d-ab17ea17007f.jpg differ
diff --git a/docs/pics/92691356-4f7a-46ec-9921-13055d3dcb12.jpg b/docs/pics/92691356-4f7a-46ec-9921-13055d3dcb12.jpg
new file mode 100644
index 00000000..2a736557
Binary files /dev/null and b/docs/pics/92691356-4f7a-46ec-9921-13055d3dcb12.jpg differ
diff --git a/docs/pics/938fc386-0340-47b5-aeaa-6993e3bb4fc0.png b/docs/pics/938fc386-0340-47b5-aeaa-6993e3bb4fc0.png
new file mode 100644
index 00000000..9064fe0e
Binary files /dev/null and b/docs/pics/938fc386-0340-47b5-aeaa-6993e3bb4fc0.png differ
diff --git a/docs/pics/94414cd3-5db9-4aca-a2af-539140955c62.jpg b/docs/pics/94414cd3-5db9-4aca-a2af-539140955c62.jpg
new file mode 100644
index 00000000..5c53d38b
Binary files /dev/null and b/docs/pics/94414cd3-5db9-4aca-a2af-539140955c62.jpg differ
diff --git a/docs/pics/963fac12-4eac-4922-8a5f-f262c11f80fb.jpg b/docs/pics/963fac12-4eac-4922-8a5f-f262c11f80fb.jpg
new file mode 100644
index 00000000..97104ded
Binary files /dev/null and b/docs/pics/963fac12-4eac-4922-8a5f-f262c11f80fb.jpg differ
diff --git a/docs/pics/96706658-b3f8-4f32-8eb3-dcb7fc8d5381.jpg b/docs/pics/96706658-b3f8-4f32-8eb3-dcb7fc8d5381.jpg
new file mode 100644
index 00000000..c4e77ba1
Binary files /dev/null and b/docs/pics/96706658-b3f8-4f32-8eb3-dcb7fc8d5381.jpg differ
diff --git a/docs/pics/9bae24e9-d2f5-4e1d-af42-1a868a5847cf.jpg b/docs/pics/9bae24e9-d2f5-4e1d-af42-1a868a5847cf.jpg
new file mode 100644
index 00000000..b985fdd8
Binary files /dev/null and b/docs/pics/9bae24e9-d2f5-4e1d-af42-1a868a5847cf.jpg differ
diff --git a/docs/pics/9d3c6bfb-4c4c-4b77-9410-56b3f82106d1.jpg b/docs/pics/9d3c6bfb-4c4c-4b77-9410-56b3f82106d1.jpg
new file mode 100644
index 00000000..9f4f5f04
Binary files /dev/null and b/docs/pics/9d3c6bfb-4c4c-4b77-9410-56b3f82106d1.jpg differ
diff --git a/docs/pics/9ffb82ad-9b7f-44df-b93f-fc8b3f4093a6.jpg b/docs/pics/9ffb82ad-9b7f-44df-b93f-fc8b3f4093a6.jpg
new file mode 100644
index 00000000..2ab8530a
Binary files /dev/null and b/docs/pics/9ffb82ad-9b7f-44df-b93f-fc8b3f4093a6.jpg differ
diff --git a/docs/pics/a30a06e1-3c6b-4a71-aa03-8aad7fc44b4e.png b/docs/pics/a30a06e1-3c6b-4a71-aa03-8aad7fc44b4e.png
new file mode 100644
index 00000000..1f6db87f
Binary files /dev/null and b/docs/pics/a30a06e1-3c6b-4a71-aa03-8aad7fc44b4e.png differ
diff --git a/docs/pics/a6ebcd0a-a44d-48c8-b29a-dfacece83301.png b/docs/pics/a6ebcd0a-a44d-48c8-b29a-dfacece83301.png
new file mode 100644
index 00000000..9b6bcee2
Binary files /dev/null and b/docs/pics/a6ebcd0a-a44d-48c8-b29a-dfacece83301.png differ
diff --git a/docs/pics/b01e12b7-6cfc-485b-a03e-a575e6f7b773.jpg b/docs/pics/b01e12b7-6cfc-485b-a03e-a575e6f7b773.jpg
new file mode 100644
index 00000000..cfb2586d
Binary files /dev/null and b/docs/pics/b01e12b7-6cfc-485b-a03e-a575e6f7b773.jpg differ
diff --git a/docs/pics/b02fcffd-ed09-4ef9-bc5f-8f0e0383eb1a.jpg b/docs/pics/b02fcffd-ed09-4ef9-bc5f-8f0e0383eb1a.jpg
new file mode 100644
index 00000000..a0df23c8
Binary files /dev/null and b/docs/pics/b02fcffd-ed09-4ef9-bc5f-8f0e0383eb1a.jpg differ
diff --git a/docs/pics/b28a7b1e-bf5a-4e23-8be7-701eacef0111.jpg b/docs/pics/b28a7b1e-bf5a-4e23-8be7-701eacef0111.jpg
new file mode 100644
index 00000000..d8085fa0
Binary files /dev/null and b/docs/pics/b28a7b1e-bf5a-4e23-8be7-701eacef0111.jpg differ
diff --git a/docs/pics/b3a421e3-41b4-4e99-b612-bc695a7f622f.jpg b/docs/pics/b3a421e3-41b4-4e99-b612-bc695a7f622f.jpg
new file mode 100644
index 00000000..eb46d412
Binary files /dev/null and b/docs/pics/b3a421e3-41b4-4e99-b612-bc695a7f622f.jpg differ
diff --git a/docs/pics/b6a7e8af-91bf-44b2-8874-ccc6d9d52afc.jpg b/docs/pics/b6a7e8af-91bf-44b2-8874-ccc6d9d52afc.jpg
new file mode 100644
index 00000000..96b80deb
Binary files /dev/null and b/docs/pics/b6a7e8af-91bf-44b2-8874-ccc6d9d52afc.jpg differ
diff --git a/docs/pics/bab0fba6-38e4-45f7-b34d-3edaad43810f.jpg b/docs/pics/bab0fba6-38e4-45f7-b34d-3edaad43810f.jpg
new file mode 100644
index 00000000..c3815f20
Binary files /dev/null and b/docs/pics/bab0fba6-38e4-45f7-b34d-3edaad43810f.jpg differ
diff --git a/docs/pics/bc5826f5-014d-47b4-9a76-d86b80968643.jpg b/docs/pics/bc5826f5-014d-47b4-9a76-d86b80968643.jpg
new file mode 100644
index 00000000..b27cd02f
Binary files /dev/null and b/docs/pics/bc5826f5-014d-47b4-9a76-d86b80968643.jpg differ
diff --git a/docs/pics/c26e7ce3-dd9e-47e2-a208-367b5b2cddf6.png b/docs/pics/c26e7ce3-dd9e-47e2-a208-367b5b2cddf6.png
new file mode 100644
index 00000000..cf8d36dc
Binary files /dev/null and b/docs/pics/c26e7ce3-dd9e-47e2-a208-367b5b2cddf6.png differ
diff --git a/docs/pics/c443e38f-ef06-4944-9ce4-aaf3b348b2e8.png b/docs/pics/c443e38f-ef06-4944-9ce4-aaf3b348b2e8.png
new file mode 100644
index 00000000..16563b57
Binary files /dev/null and b/docs/pics/c443e38f-ef06-4944-9ce4-aaf3b348b2e8.png differ
diff --git a/docs/pics/c6fdb958-578d-4685-a5fa-400857be91d5.jpg b/docs/pics/c6fdb958-578d-4685-a5fa-400857be91d5.jpg
new file mode 100644
index 00000000..895d1ed5
Binary files /dev/null and b/docs/pics/c6fdb958-578d-4685-a5fa-400857be91d5.jpg differ
diff --git a/docs/pics/cf779e26-0382-4495-8463-f1e19e2e38a0.jpg b/docs/pics/cf779e26-0382-4495-8463-f1e19e2e38a0.jpg
new file mode 100644
index 00000000..b3699644
Binary files /dev/null and b/docs/pics/cf779e26-0382-4495-8463-f1e19e2e38a0.jpg differ
diff --git a/docs/pics/d011c697-2551-4968-ac51-e5e01a954204.jpg b/docs/pics/d011c697-2551-4968-ac51-e5e01a954204.jpg
new file mode 100644
index 00000000..4e723087
Binary files /dev/null and b/docs/pics/d011c697-2551-4968-ac51-e5e01a954204.jpg differ
diff --git a/docs/pics/d2a12961-2b36-4463-b017-ca46a3308b8e.png b/docs/pics/d2a12961-2b36-4463-b017-ca46a3308b8e.png
new file mode 100644
index 00000000..ce6663bc
Binary files /dev/null and b/docs/pics/d2a12961-2b36-4463-b017-ca46a3308b8e.png differ
diff --git a/docs/pics/de9d8133-4c98-4e07-b39c-302e162784ea.jpg b/docs/pics/de9d8133-4c98-4e07-b39c-302e162784ea.jpg
new file mode 100644
index 00000000..4a923dd8
Binary files /dev/null and b/docs/pics/de9d8133-4c98-4e07-b39c-302e162784ea.jpg differ
diff --git a/docs/pics/deb18bdb-b3b3-4660-b778-b0823a48db12.jpg b/docs/pics/deb18bdb-b3b3-4660-b778-b0823a48db12.jpg
new file mode 100644
index 00000000..7746a715
Binary files /dev/null and b/docs/pics/deb18bdb-b3b3-4660-b778-b0823a48db12.jpg differ
diff --git a/docs/pics/df247180-4d5c-4d4b-ab0f-1aec61d13d45.png b/docs/pics/df247180-4d5c-4d4b-ab0f-1aec61d13d45.png
new file mode 100644
index 00000000..ef5b780f
Binary files /dev/null and b/docs/pics/df247180-4d5c-4d4b-ab0f-1aec61d13d45.png differ
diff --git a/docs/pics/e19452dd-220a-4a6b-bcb0-91ad5e5c4706.png b/docs/pics/e19452dd-220a-4a6b-bcb0-91ad5e5c4706.png
new file mode 100644
index 00000000..c21e9af2
Binary files /dev/null and b/docs/pics/e19452dd-220a-4a6b-bcb0-91ad5e5c4706.png differ
diff --git a/docs/pics/e89848b7-5dc3-419d-ae88-4c930da13306.png b/docs/pics/e89848b7-5dc3-419d-ae88-4c930da13306.png
new file mode 100644
index 00000000..23645c21
Binary files /dev/null and b/docs/pics/e89848b7-5dc3-419d-ae88-4c930da13306.png differ
diff --git a/docs/pics/f77f06b6-7359-4066-b85d-3f6c09ddf425.jpg b/docs/pics/f77f06b6-7359-4066-b85d-3f6c09ddf425.jpg
new file mode 100644
index 00000000..9fc2a271
Binary files /dev/null and b/docs/pics/f77f06b6-7359-4066-b85d-3f6c09ddf425.jpg differ
diff --git a/docs/pics/f944fac3-482b-4ca3-9447-17aec4a3cca0.png b/docs/pics/f944fac3-482b-4ca3-9447-17aec4a3cca0.png
new file mode 100644
index 00000000..56f05611
Binary files /dev/null and b/docs/pics/f944fac3-482b-4ca3-9447-17aec4a3cca0.png differ
diff --git a/docs/pics/fb14b808-734c-4634-9c87-e598b1937996.png b/docs/pics/fb14b808-734c-4634-9c87-e598b1937996.png
new file mode 100644
index 00000000..89918e6d
Binary files /dev/null and b/docs/pics/fb14b808-734c-4634-9c87-e598b1937996.png differ
diff --git a/docs/pics/ff5b89ac-798e-4fbc-b0ce-da2fc2358570.jpg b/docs/pics/ff5b89ac-798e-4fbc-b0ce-da2fc2358570.jpg
new file mode 100644
index 00000000..1fa40320
Binary files /dev/null and b/docs/pics/ff5b89ac-798e-4fbc-b0ce-da2fc2358570.jpg differ
diff --git a/other/6.gif b/other/6.gif
deleted file mode 100644
index 378640f5..00000000
Binary files a/other/6.gif and /dev/null differ
diff --git a/other/Planet.md b/other/Planet.md
deleted file mode 100644
index 16044df4..00000000
--- a/other/Planet.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# 👩💻 面向用户
-
-该星球主要面向正在找工作,以及已经工作并且想持续学习的小伙伴。
-
-# 🍉 你能得到什么
-
-该星球为大家提供一个高质量的学习交流平台,这个平台旨在建立一个一起努力和成长的氛围。在这里你可以提问在学习或求职过程中遇到的疑惑,能够得到星主以及不同人的回答以及建议。
-
-# ⭐️ 加入方式
-
-可以用微信直接扫下面的二维码直接加入,或者订阅专栏 https://xiaozhuanlan.com/CyC2018 ,加微信 zhengyochuan,备注 “已订阅专栏加星球”。
-
-
-
-# 🔎 预览
-
-
-
-
-
-
diff --git a/other/planet1.png b/other/planet1.png
deleted file mode 100644
index 96d80a7c..00000000
Binary files a/other/planet1.png and /dev/null differ
diff --git a/other/planet2.jpg b/other/planet2.jpg
deleted file mode 100644
index 9aeefc5b..00000000
Binary files a/other/planet2.jpg and /dev/null differ
diff --git a/other/planet3.jpg b/other/planet3.jpg
deleted file mode 100644
index f6dd43d8..00000000
Binary files a/other/planet3.jpg and /dev/null differ
diff --git a/other/剑指 Offer 题解小程序.md b/other/剑指 Offer 题解小程序.md
deleted file mode 100644
index 6485a19b..00000000
--- a/other/剑指 Offer 题解小程序.md
+++ /dev/null
@@ -1,3 +0,0 @@
-
-

-
diff --git a/数据库原理.xml b/数据库原理.xml
new file mode 100644
index 00000000..235ff5e3
--- /dev/null
+++ b/数据库原理.xml
@@ -0,0 +1 @@
+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
\ No newline at end of file