From bd043a6dd4764a4bb331986073922d922b654026 Mon Sep 17 00:00:00 2001 From: 505051785 <505051785@qq.com> Date: Sun, 3 Nov 2019 11:10:04 +0800 Subject: [PATCH 001/214] =?UTF-8?q?//=E8=BF=AD=E4=BB=A3=E7=9A=84=E5=85=B3?= =?UTF-8?q?=E8=81=94=E5=85=B3=E7=B3=BB=E7=AE=AD=E5=A4=B4=E7=94=BB=E5=8F=8D?= =?UTF-8?q?=E4=BA=86=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit //迭代的关联关系箭头画反了。 --- ...0\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" | 2 ++ 1 file changed, 2 insertions(+) diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" index d742e5ffbe..35eacb1864 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" @@ -12,6 +12,8 @@

+//迭代的关联关系箭头画反了。 + ### Implementation ```java From 657e04299aed29185ac6b2ef6bc6f83f03e95cee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E6=84=BF=E9=80=8F=E9=9C=B2=E5=A7=93=E5=90=8D?= =?UTF-8?q?=E7=9A=84=E9=AB=98=E5=90=8C=E5=AD=A6?= <313561344@qq.com> Date: Wed, 6 Nov 2019 01:09:40 +0800 Subject: [PATCH 002/214] =?UTF-8?q?Update=20=E8=AE=A1=E7=AE=97=E6=9C=BA?= =?UTF-8?q?=E7=BD=91=E7=BB=9C=20-=20=E6=A6=82=E8=BF=B0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...4\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" index d6caeb5ef1..61cd7f481c 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" @@ -20,7 +20,7 @@ # 网络的网络 -网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。 +网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网(internet)是网络的网络。连接全球所有电脑的互连网,即为“互联网”(Internet)。

From 10663f6e3f9490eba1d6411843234ebda30a4f60 Mon Sep 17 00:00:00 2001 From: NoPainAnyMore Date: Wed, 13 Nov 2019 15:20:39 +0800 Subject: [PATCH 003/214] =?UTF-8?q?Update=20=E8=AE=BE=E8=AE=A1=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=20-=20=E5=A4=87=E5=BF=98=E5=BD=95.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" index 9f94a8841e..190b555045 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" @@ -8,7 +8,7 @@ - Originator:原始对象 - Caretaker:负责保存好备忘录 -- Menento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 +- Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。

From 4bb3120f1aa03b973f155625b524cb7e46b07922 Mon Sep 17 00:00:00 2001 From: NoPainAnyMore Date: Wed, 13 Nov 2019 15:21:53 +0800 Subject: [PATCH 004/214] =?UTF-8?q?Update=20=E8=AE=BE=E8=AE=A1=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=20-=20=E5=A4=87=E5=BF=98=E5=BD=95.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" index 9f94a8841e..190b555045 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" @@ -8,7 +8,7 @@ - Originator:原始对象 - Caretaker:负责保存好备忘录 -- Menento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 +- Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。

From 148105a8b85ba784773ddb7ab39ecce44e031ccb Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 14:55:15 +0800 Subject: [PATCH 005/214] auto commit --- desktop.ini | 6 ++++++ ...1\345\274\217 - \345\244\207\345\277\230\345\275\225.md" | 2 +- ...1\345\274\217 - \345\244\207\345\277\230\345\275\225.md" | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 desktop.ini diff --git a/desktop.ini b/desktop.ini new file mode 100644 index 0000000000..e93acf912a --- /dev/null +++ b/desktop.ini @@ -0,0 +1,6 @@ +[.ShellClassInfo] +IconResource=D:\ICO\folder.ico,0 +[ViewState] +Mode= +Vid= +FolderType=Generic diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" index 9f94a8841e..190b555045 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" @@ -8,7 +8,7 @@ - Originator:原始对象 - Caretaker:负责保存好备忘录 -- Menento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 +- Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。

diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" index 9f94a8841e..190b555045 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" @@ -8,7 +8,7 @@ - Originator:原始对象 - Caretaker:负责保存好备忘录 -- Menento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 +- Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。

From be2a196bc1300b618e29bcb07a258a0930a2ba5b Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 14:59:04 +0800 Subject: [PATCH 006/214] init --- .gitignore | 3 ++- desktop.ini | 6 ------ 2 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 desktop.ini diff --git a/.gitignore b/.gitignore index ba2c614449..1f6b8ccce0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_Store *.txt -!tencent13147342467085209222.txt \ No newline at end of file +!tencent13147342467085209222.txt +desktop.ini \ No newline at end of file diff --git a/desktop.ini b/desktop.ini deleted file mode 100644 index e93acf912a..0000000000 --- a/desktop.ini +++ /dev/null @@ -1,6 +0,0 @@ -[.ShellClassInfo] -IconResource=D:\ICO\folder.ico,0 -[ViewState] -Mode= -Vid= -FolderType=Generic From f487de98db1696a0bd7ea47dd8567b372ee4703b Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 14:59:17 +0800 Subject: [PATCH 007/214] Revert "init" This reverts commit be2a196bc1300b618e29bcb07a258a0930a2ba5b. --- .gitignore | 3 +-- desktop.ini | 6 ++++++ 2 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 desktop.ini diff --git a/.gitignore b/.gitignore index 1f6b8ccce0..ba2c614449 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ .DS_Store *.txt -!tencent13147342467085209222.txt -desktop.ini \ No newline at end of file +!tencent13147342467085209222.txt \ No newline at end of file diff --git a/desktop.ini b/desktop.ini new file mode 100644 index 0000000000..e93acf912a --- /dev/null +++ b/desktop.ini @@ -0,0 +1,6 @@ +[.ShellClassInfo] +IconResource=D:\ICO\folder.ico,0 +[ViewState] +Mode= +Vid= +FolderType=Generic From 38307f1cb07e7aa6451b38a0065d9ccb6c852692 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 14:59:57 +0800 Subject: [PATCH 008/214] auto commit --- .gitignore | 3 ++- desktop.ini | 6 ------ 2 files changed, 2 insertions(+), 7 deletions(-) delete mode 100644 desktop.ini diff --git a/.gitignore b/.gitignore index ba2c614449..1f6b8ccce0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .DS_Store *.txt -!tencent13147342467085209222.txt \ No newline at end of file +!tencent13147342467085209222.txt +desktop.ini \ No newline at end of file diff --git a/desktop.ini b/desktop.ini deleted file mode 100644 index e93acf912a..0000000000 --- a/desktop.ini +++ /dev/null @@ -1,6 +0,0 @@ -[.ShellClassInfo] -IconResource=D:\ICO\folder.ico,0 -[ViewState] -Mode= -Vid= -FolderType=Generic From dc16b3c57b1dc50fed620fe97cd866e1edf22337 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 15:06:24 +0800 Subject: [PATCH 009/214] auto commit --- ...4\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" | 2 +- ...4\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" index d6caeb5ef1..bdfe4f4ad3 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" @@ -20,7 +20,7 @@ # 网络的网络 -网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。 +网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。

diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" index d6caeb5ef1..bdfe4f4ad3 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" @@ -20,7 +20,7 @@ # 网络的网络 -网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。 +网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。

From 8620ad8834c722cd74d262b13f920426192f7b71 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 16:45:47 +0800 Subject: [PATCH 010/214] auto commit --- ...7 - \350\277\255\344\273\243\345\231\250.md" | 4 ++-- notes/pics/image-20191130164420139.png | Bin 0 -> 49972 bytes notes/pics/image-20191130164425351.png | Bin 0 -> 49972 bytes ...7 - \350\277\255\344\273\243\345\231\250.md" | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 notes/pics/image-20191130164420139.png create mode 100644 notes/pics/image-20191130164425351.png diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" index d742e5ffbe..c4beb94d9a 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" @@ -7,10 +7,10 @@ ### Class Diagram - Aggregate 是聚合类,其中 createIterator() 方法可以产生一个 Iterator; -- Iterator 主要定义了 hasNext() 和 next() 方法。 +- Iterator 主要定义了 hasNext() 和 next() 方法; - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -

+
image-20191130164425351

### Implementation diff --git a/notes/pics/image-20191130164420139.png b/notes/pics/image-20191130164420139.png new file mode 100644 index 0000000000000000000000000000000000000000..06acaeb6374a9e6515b8f3697dbb5e003bf1c89b GIT binary patch literal 49972 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
+

image-20191130164425351

### Implementation From 8e02d50ff97a6abefc3e3733858144caf8bdae07 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 16:46:22 +0800 Subject: [PATCH 011/214] auto commit --- ...0\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" | 2 -- 1 file changed, 2 deletions(-) diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" index 63c3a3effb..c4beb94d9a 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" @@ -12,8 +12,6 @@
image-20191130164425351

-//迭代的关联关系箭头画反了。 - ### Implementation ```java From 5a4a46ed0487f17343bbf70eb5b3111f7c513d89 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 17:22:55 +0800 Subject: [PATCH 012/214] auto commit --- ... - \345\212\250\346\200\201\350\247\204\345\210\222.md" | 7 +++++++ ... - \345\212\250\346\200\201\350\247\204\345\210\222.md" | 7 +++++++ 2 files changed, 14 insertions(+) diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index 6eaa2adc60..fb75ebc841 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -20,6 +20,7 @@ * [2. 一组整数对能够构成的最长链](#2-一组整数对能够构成的最长链) * [3. 最长摆动子序列](#3-最长摆动子序列) * [最长公共子序列](#最长公共子序列) + * [1. 最长公共子序列](#1-最长公共子序列) * [0-1 背包](#0-1-背包) * [1. 划分数组为和相等的两部分](#1-划分数组为和相等的两部分) * [2. 改变一组数的正负号使得它们的和为一给定数](#2-改变一组数的正负号使得它们的和为一给定数) @@ -625,6 +626,12 @@ public int wiggleMaxLength(int[] nums) { - 在最长递增子序列中,dp[i] 表示以 Si 为结尾的最长递增子序列长度,子序列必须包含 Si ;在最长公共子序列中,dp[i][j] 表示 S1 中前 i 个字符与 S2 中前 j 个字符的最长公共子序列长度,不一定包含 S1i 和 S2j。 - 在求最终解时,最长公共子序列中 dp[N][M] 就是最终解,而最长递增子序列中 dp[N] 不是最终解,因为以 SN 为结尾的最长递增子序列不一定是整个序列最长递增子序列,需要遍历一遍 dp 数组找到最大者。 +## 1. 最长公共子序列 + +1143\. Longest Common Subsequence + +[Leetcode](https://leetcode.com/problems/longest-common-subsequence/) / [力扣](https://leetcode-cn.com/problems/longest-common-subsequence/) + ```java public int lengthOfLCS(int[] nums1, int[] nums2) { int n1 = nums1.length, n2 = nums2.length; diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index 6eaa2adc60..fb75ebc841 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -20,6 +20,7 @@ * [2. 一组整数对能够构成的最长链](#2-一组整数对能够构成的最长链) * [3. 最长摆动子序列](#3-最长摆动子序列) * [最长公共子序列](#最长公共子序列) + * [1. 最长公共子序列](#1-最长公共子序列) * [0-1 背包](#0-1-背包) * [1. 划分数组为和相等的两部分](#1-划分数组为和相等的两部分) * [2. 改变一组数的正负号使得它们的和为一给定数](#2-改变一组数的正负号使得它们的和为一给定数) @@ -625,6 +626,12 @@ public int wiggleMaxLength(int[] nums) { - 在最长递增子序列中,dp[i] 表示以 Si 为结尾的最长递增子序列长度,子序列必须包含 Si ;在最长公共子序列中,dp[i][j] 表示 S1 中前 i 个字符与 S2 中前 j 个字符的最长公共子序列长度,不一定包含 S1i 和 S2j。 - 在求最终解时,最长公共子序列中 dp[N][M] 就是最终解,而最长递增子序列中 dp[N] 不是最终解,因为以 SN 为结尾的最长递增子序列不一定是整个序列最长递增子序列,需要遍历一遍 dp 数组找到最大者。 +## 1. 最长公共子序列 + +1143\. Longest Common Subsequence + +[Leetcode](https://leetcode.com/problems/longest-common-subsequence/) / [力扣](https://leetcode-cn.com/problems/longest-common-subsequence/) + ```java public int lengthOfLCS(int[] nums1, int[] nums2) { int n1 = nums1.length, n2 = nums2.length; From bd9a97cdb9fdd527964c5c421eaa6b735bce7832 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 17:31:04 +0800 Subject: [PATCH 013/214] auto commit --- ...50\346\200\201\350\247\204\345\210\222.md" | 22 +++++++++---------- ...50\346\200\201\350\247\204\345\210\222.md" | 22 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index fb75ebc841..305174beb3 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -633,20 +633,20 @@ public int wiggleMaxLength(int[] nums) { [Leetcode](https://leetcode.com/problems/longest-common-subsequence/) / [力扣](https://leetcode-cn.com/problems/longest-common-subsequence/) ```java -public int lengthOfLCS(int[] nums1, int[] nums2) { - int n1 = nums1.length, n2 = nums2.length; - int[][] dp = new int[n1 + 1][n2 + 1]; - for (int i = 1; i <= n1; i++) { - for (int j = 1; j <= n2; j++) { - if (nums1[i - 1] == nums2[j - 1]) { - dp[i][j] = dp[i - 1][j - 1] + 1; - } else { - dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); + public int longestCommonSubsequence(String text1, String text2) { + int n1 = text1.length(), n2 = text2.length(); + int[][] dp = new int[n1 + 1][n2 + 1]; + for (int i = 1; i <= n1; i++) { + for (int j = 1; j <= n2; j++) { + if (text1.charAt(i - 1) == text2.charAt(j - 1)) { + dp[i][j] = dp[i - 1][j - 1] + 1; + } else { + dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); + } } } + return dp[n1][n2]; } - return dp[n1][n2]; -} ``` # 0-1 背包 diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index fb75ebc841..305174beb3 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -633,20 +633,20 @@ public int wiggleMaxLength(int[] nums) { [Leetcode](https://leetcode.com/problems/longest-common-subsequence/) / [力扣](https://leetcode-cn.com/problems/longest-common-subsequence/) ```java -public int lengthOfLCS(int[] nums1, int[] nums2) { - int n1 = nums1.length, n2 = nums2.length; - int[][] dp = new int[n1 + 1][n2 + 1]; - for (int i = 1; i <= n1; i++) { - for (int j = 1; j <= n2; j++) { - if (nums1[i - 1] == nums2[j - 1]) { - dp[i][j] = dp[i - 1][j - 1] + 1; - } else { - dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); + public int longestCommonSubsequence(String text1, String text2) { + int n1 = text1.length(), n2 = text2.length(); + int[][] dp = new int[n1 + 1][n2 + 1]; + for (int i = 1; i <= n1; i++) { + for (int j = 1; j <= n2; j++) { + if (text1.charAt(i - 1) == text2.charAt(j - 1)) { + dp[i][j] = dp[i - 1][j - 1] + 1; + } else { + dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]); + } } } + return dp[n1][n2]; } - return dp[n1][n2]; -} ``` # 0-1 背包 From 8c40997b013469f3ebc28f7b6e7e1182a6153623 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 21:33:43 +0800 Subject: [PATCH 014/214] auto commit --- ...2\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" | 2 +- ...2\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" index b9cec81e38..b24ab780f6 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" @@ -72,7 +72,7 @@ Explanation: 1 * 1 + 2 * 2 = 5 本题的关键是右指针的初始化,实现剪枝,从而降低时间复杂度。设右指针为 x,左指针固定为 0,为了使 02 + x2 的值尽可能接近 target,我们可以将 x 取为 sqrt(target)。 -因为最多只需要遍历一次 0\~sqrt(target),所以时间复杂度为 O(log2N)。又因为只使用了两个额外的变量,因此空间复杂度为 O(1)。 +因为最多只需要遍历一次 0\~sqrt(target),所以时间复杂度为 O(sqrt(target))。又因为只使用了两个额外的变量,因此空间复杂度为 O(1)。 ```java public boolean judgeSquareSum(int target) { diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" "b/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" index b9cec81e38..b24ab780f6 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" @@ -72,7 +72,7 @@ Explanation: 1 * 1 + 2 * 2 = 5 本题的关键是右指针的初始化,实现剪枝,从而降低时间复杂度。设右指针为 x,左指针固定为 0,为了使 02 + x2 的值尽可能接近 target,我们可以将 x 取为 sqrt(target)。 -因为最多只需要遍历一次 0\~sqrt(target),所以时间复杂度为 O(log2N)。又因为只使用了两个额外的变量,因此空间复杂度为 O(1)。 +因为最多只需要遍历一次 0\~sqrt(target),所以时间复杂度为 O(sqrt(target))。又因为只使用了两个额外的变量,因此空间复杂度为 O(1)。 ```java public boolean judgeSquareSum(int target) { From 0d350f1fb63bf0a49d5115df5c3cd401f00a77d2 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 23:03:31 +0800 Subject: [PATCH 015/214] auto commit --- ...33\347\250\213\347\256\241\347\220\206.md" | 162 +++++++++--------- ...33\347\250\213\347\256\241\347\220\206.md" | 162 +++++++++--------- 2 files changed, 168 insertions(+), 156 deletions(-) diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" index 8db9f3facd..51a2badad0 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -14,8 +14,8 @@ * [3. 信号量](#3-信号量) * [4. 管程](#4-管程) * [经典同步问题](#经典同步问题) - * [1. 读者-写者问题](#1-读者-写者问题) - * [2. 哲学家进餐问题](#2-哲学家进餐问题) + * [1. 哲学家进餐问题](#1-哲学家进餐问题) + * [2. 读者-写者问题](#2-读者-写者问题) * [进程通信](#进程通信) * [1. 管道](#1-管道) * [2. FIFO](#2-fifo) @@ -306,7 +306,87 @@ end; 生产者和消费者问题前面已经讨论过了。 -## 1. 读者-写者问题 +## 1. 哲学家进餐问题 + +

+ +五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。 + +下面是一种错误的解法,如果所有哲学家同时拿起左手边的筷子,那么所有哲学家都在等待其它哲学家吃完并释放自己手中的筷子,导致死锁。 + +```c +#define N 5 + +void philosopher(int i) { + while(TRUE) { + think(); + take(i); // 拿起左边的筷子 + take((i+1)%N); // 拿起右边的筷子 + eat(); + put(i); + put((i+1)%N); + } +} +``` + +为了防止死锁的发生,可以设置两个条件: + +- 必须同时拿起左右两根筷子; +- 只有在两个邻居都没有进餐的情况下才允许进餐。 + +```c +#define N 5 +#define LEFT (i + N - 1) % N // 左邻居 +#define RIGHT (i + 1) % N // 右邻居 +#define THINKING 0 +#define HUNGRY 1 +#define EATING 2 +typedef int semaphore; +int state[N]; // 跟踪每个哲学家的状态 +semaphore mutex = 1; // 临界区的互斥,临界区是 state 数组,对其修改需要互斥 +semaphore s[N]; // 每个哲学家一个信号量 + +void philosopher(int i) { + while(TRUE) { + think(i); + take_two(i); + eat(i); + put_two(i); + } +} + +void take_two(int i) { + down(&mutex); + state[i] = HUNGRY; + check(i); + up(&mutex); + down(&s[i]); // 只有收到通知之后才可以开始吃,否则会一直等下去 +} + +void put_two(i) { + down(&mutex); + state[i] = THINKING; + check(LEFT); // 尝试通知左右邻居,自己吃完了,你们可以开始吃了 + check(RIGHT); + up(&mutex); +} + +void eat(int i) { + down(&mutex); + state[i] = EATING; + up(&mutex); +} + +// 检查两个邻居是否都没有用餐,如果是的话,就 up(&s[i]),使得 down(&s[i]) 能够得到通知并继续执行 +void check(i) { + if(state[i] == HUNGRY && state[LEFT] != EATING && state[RIGHT] !=EATING) { + state[i] = EATING; + up(&s[i]); + } +} +``` + +## 2. 读者-写者问题 允许多个进程同时对数据进行读操作,但是不允许读和写以及写和写操作同时发生。 @@ -345,7 +425,7 @@ void writer() { The first case may result Writer to starve. This case favous Writers i.e no writer, once added to the queue, shall be kept waiting longer than absolutely necessary(only when there are readers that entered the queue before the writer). -```source-c +```c int readcount, writecount; //(initial value = 0) semaphore rmutex, wmutex, readLock, resource; //(initial value = 1) @@ -450,80 +530,6 @@ void reader() ``` - -## 2. 哲学家进餐问题 - -

- -五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。 - -下面是一种错误的解法,考虑到如果所有哲学家同时拿起左手边的筷子,那么就无法拿起右手边的筷子,造成死锁。 - -```c -#define N 5 - -void philosopher(int i) { - while(TRUE) { - think(); - take(i); // 拿起左边的筷子 - take((i+1)%N); // 拿起右边的筷子 - eat(); - put(i); - put((i+1)%N); - } -} -``` - -为了防止死锁的发生,可以设置两个条件: - -- 必须同时拿起左右两根筷子; -- 只有在两个邻居都没有进餐的情况下才允许进餐。 - -```c -#define N 5 -#define LEFT (i + N - 1) % N // 左邻居 -#define RIGHT (i + 1) % N // 右邻居 -#define THINKING 0 -#define HUNGRY 1 -#define EATING 2 -typedef int semaphore; -int state[N]; // 跟踪每个哲学家的状态 -semaphore mutex = 1; // 临界区的互斥 -semaphore s[N]; // 每个哲学家一个信号量 - -void philosopher(int i) { - while(TRUE) { - think(); - take_two(i); - eat(); - put_two(i); - } -} - -void take_two(int i) { - down(&mutex); - state[i] = HUNGRY; - test(i); - up(&mutex); - down(&s[i]); -} - -void put_two(i) { - down(&mutex); - state[i] = THINKING; - test(LEFT); - test(RIGHT); - up(&mutex); -} - -void test(i) { // 尝试拿起两把筷子 - if(state[i] == HUNGRY && state[LEFT] != EATING && state[RIGHT] !=EATING) { - state[i] = EATING; - up(&s[i]); - } -} -``` - # 进程通信 进程同步与进程通信很容易混淆,它们的区别在于: diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" index 8db9f3facd..51a2badad0 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -14,8 +14,8 @@ * [3. 信号量](#3-信号量) * [4. 管程](#4-管程) * [经典同步问题](#经典同步问题) - * [1. 读者-写者问题](#1-读者-写者问题) - * [2. 哲学家进餐问题](#2-哲学家进餐问题) + * [1. 哲学家进餐问题](#1-哲学家进餐问题) + * [2. 读者-写者问题](#2-读者-写者问题) * [进程通信](#进程通信) * [1. 管道](#1-管道) * [2. FIFO](#2-fifo) @@ -306,7 +306,87 @@ end; 生产者和消费者问题前面已经讨论过了。 -## 1. 读者-写者问题 +## 1. 哲学家进餐问题 + +

+ +五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。 + +下面是一种错误的解法,如果所有哲学家同时拿起左手边的筷子,那么所有哲学家都在等待其它哲学家吃完并释放自己手中的筷子,导致死锁。 + +```c +#define N 5 + +void philosopher(int i) { + while(TRUE) { + think(); + take(i); // 拿起左边的筷子 + take((i+1)%N); // 拿起右边的筷子 + eat(); + put(i); + put((i+1)%N); + } +} +``` + +为了防止死锁的发生,可以设置两个条件: + +- 必须同时拿起左右两根筷子; +- 只有在两个邻居都没有进餐的情况下才允许进餐。 + +```c +#define N 5 +#define LEFT (i + N - 1) % N // 左邻居 +#define RIGHT (i + 1) % N // 右邻居 +#define THINKING 0 +#define HUNGRY 1 +#define EATING 2 +typedef int semaphore; +int state[N]; // 跟踪每个哲学家的状态 +semaphore mutex = 1; // 临界区的互斥,临界区是 state 数组,对其修改需要互斥 +semaphore s[N]; // 每个哲学家一个信号量 + +void philosopher(int i) { + while(TRUE) { + think(i); + take_two(i); + eat(i); + put_two(i); + } +} + +void take_two(int i) { + down(&mutex); + state[i] = HUNGRY; + check(i); + up(&mutex); + down(&s[i]); // 只有收到通知之后才可以开始吃,否则会一直等下去 +} + +void put_two(i) { + down(&mutex); + state[i] = THINKING; + check(LEFT); // 尝试通知左右邻居,自己吃完了,你们可以开始吃了 + check(RIGHT); + up(&mutex); +} + +void eat(int i) { + down(&mutex); + state[i] = EATING; + up(&mutex); +} + +// 检查两个邻居是否都没有用餐,如果是的话,就 up(&s[i]),使得 down(&s[i]) 能够得到通知并继续执行 +void check(i) { + if(state[i] == HUNGRY && state[LEFT] != EATING && state[RIGHT] !=EATING) { + state[i] = EATING; + up(&s[i]); + } +} +``` + +## 2. 读者-写者问题 允许多个进程同时对数据进行读操作,但是不允许读和写以及写和写操作同时发生。 @@ -345,7 +425,7 @@ void writer() { The first case may result Writer to starve. This case favous Writers i.e no writer, once added to the queue, shall be kept waiting longer than absolutely necessary(only when there are readers that entered the queue before the writer). -```source-c +```c int readcount, writecount; //(initial value = 0) semaphore rmutex, wmutex, readLock, resource; //(initial value = 1) @@ -450,80 +530,6 @@ void reader() ``` - -## 2. 哲学家进餐问题 - -

- -五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。 - -下面是一种错误的解法,考虑到如果所有哲学家同时拿起左手边的筷子,那么就无法拿起右手边的筷子,造成死锁。 - -```c -#define N 5 - -void philosopher(int i) { - while(TRUE) { - think(); - take(i); // 拿起左边的筷子 - take((i+1)%N); // 拿起右边的筷子 - eat(); - put(i); - put((i+1)%N); - } -} -``` - -为了防止死锁的发生,可以设置两个条件: - -- 必须同时拿起左右两根筷子; -- 只有在两个邻居都没有进餐的情况下才允许进餐。 - -```c -#define N 5 -#define LEFT (i + N - 1) % N // 左邻居 -#define RIGHT (i + 1) % N // 右邻居 -#define THINKING 0 -#define HUNGRY 1 -#define EATING 2 -typedef int semaphore; -int state[N]; // 跟踪每个哲学家的状态 -semaphore mutex = 1; // 临界区的互斥 -semaphore s[N]; // 每个哲学家一个信号量 - -void philosopher(int i) { - while(TRUE) { - think(); - take_two(i); - eat(); - put_two(i); - } -} - -void take_two(int i) { - down(&mutex); - state[i] = HUNGRY; - test(i); - up(&mutex); - down(&s[i]); -} - -void put_two(i) { - down(&mutex); - state[i] = THINKING; - test(LEFT); - test(RIGHT); - up(&mutex); -} - -void test(i) { // 尝试拿起两把筷子 - if(state[i] == HUNGRY && state[LEFT] != EATING && state[RIGHT] !=EATING) { - state[i] = EATING; - up(&s[i]); - } -} -``` - # 进程通信 进程同步与进程通信很容易混淆,它们的区别在于: From d3c8e9ae61bc7e1d142bf1fe278aef2608248b6a Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 23:19:13 +0800 Subject: [PATCH 016/214] auto commit --- .../\345\210\206\345\270\203\345\274\217.md" | 17 +++++++++-------- "notes/\345\210\206\345\270\203\345\274\217.md" | 17 +++++++++-------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" index 4a83aeaa32..dc5c069d4c 100644 --- "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" @@ -40,12 +40,12 @@ ## 数据库的唯一索引 -获得锁时向表中插入一条记录,释放锁时删除这条记录。唯一索引可以保证该记录只被插入一次,那么就可以用这个记录是否存在来判断是否存于锁定状态。 +获得锁时向表中插入一条记录,释放锁时删除这条记录。唯一索引可以保证该记录只被插入一次,那么就可以用这个记录是否存在来判断是否处于锁定状态。 存在以下几个问题: -- 锁没有失效时间,解锁失败的话其它进程无法再获得该锁。 -- 只能是非阻塞锁,插入失败直接就报错了,无法重试。 +- 锁没有失效时间,解锁失败的话其它进程无法再获得该锁; +- 只能是非阻塞锁,插入失败直接就报错了,无法重试; - 不可重入,已经获得锁的进程也必须重新获取锁。 ## Redis 的 SETNX 指令 @@ -61,8 +61,8 @@ EXPIRE 指令可以为一个键值对设置一个过期时间,从而避免了 使用了多个 Redis 实例来实现分布式锁,这是为了保证在发生单点故障时仍然可用。 - 尝试从 N 个互相独立 Redis 实例获取锁; -- 计算获取锁消耗的时间,只有当这个时间小于锁的过期时间,并且从大多数(N / 2 + 1)实例上获取了锁,那么就认为锁获取成功了; -- 如果锁获取失败,就到每个实例上释放锁。 +- 计算获取锁消耗的时间,只有时间小于锁的过期时间,并且从大多数(N / 2 + 1)实例上获取了锁,才认为获取锁成功; +- 如果获取锁失败,就到每个实例上释放锁。 ## Zookeeper 的有序节点 @@ -91,11 +91,11 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 ### 5. 会话超时 -如果一个已经获得锁的会话超时了,因为创建的是临时节点,所以该会话对应的临时节点会被删除,其它会话就可以获得锁了。可以看到,Zookeeper 分布式锁不会出现数据库的唯一索引实现的分布式锁释放锁失败问题。 +如果一个已经获得锁的会话超时了,因为创建的是临时节点,所以该会话对应的临时节点会被删除,其它会话就可以获得锁了。可以看到,这种实现方式不会出现数据库的唯一索引实现方式释放锁失败的问题。 ### 6. 羊群效应 -一个节点未获得锁,只需要监听自己的前一个子节点,这是因为如果监听所有的子节点,那么任意一个子节点状态改变,其它所有子节点都会收到通知(羊群效应),而我们只希望它的后一个子节点收到通知。 +一个节点未获得锁,只需要监听自己的前一个子节点,这是因为如果监听所有的子节点,那么任意一个子节点状态改变,其它所有子节点都会收到通知(羊群效应,一只羊动起来,其它羊也会一哄而上),而我们只希望它的后一个子节点收到通知。 # 二、分布式事务 @@ -278,6 +278,8 @@ Paxos 协议能够让 Proposer 发送的提议朝着能被大多数 Acceptor 接 Raft 也是分布式一致性协议,主要是用来竞选主节点。 +- [Raft: Understandable Distributed Consensus](http://thesecretlivesofdata.com/raft) + ## 单个 Candidate 的竞选 有三种节点:Follower、Candidate 和 Leader。Leader 会周期性的发送心跳包给 Follower。每个 Follower 都设置了一个随机的竞选超时时间,一般为 150ms\~300ms,如果在这个时间内没有收到 Leader 的心跳包,就会变成 Candidate,进入竞选阶段。 @@ -332,7 +334,6 @@ Raft 也是分布式一致性协议,主要是用来竞选主节点。 - [Distributed locks with Redis](https://redis.io/topics/distlock) - [浅谈分布式锁](http://www.linkedkeeper.com/detail/blog.action?bid=1023) - [基于 Zookeeper 的分布式锁](http://www.dengshenyu.com/java/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/2017/10/23/zookeeper-distributed-lock.html) -- [Raft: Understandable Distributed Consensus](http://thesecretlivesofdata.com/raft) - [聊聊分布式事务,再说说解决方案](https://www.cnblogs.com/savorboard/p/distributed-system-transaction-consistency.html) - [分布式系统的事务处理](https://coolshell.cn/articles/10910.html) - [深入理解分布式事务](https://juejin.im/entry/577c6f220a2b5800573492be) diff --git "a/notes/\345\210\206\345\270\203\345\274\217.md" "b/notes/\345\210\206\345\270\203\345\274\217.md" index 4a83aeaa32..dc5c069d4c 100644 --- "a/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/notes/\345\210\206\345\270\203\345\274\217.md" @@ -40,12 +40,12 @@ ## 数据库的唯一索引 -获得锁时向表中插入一条记录,释放锁时删除这条记录。唯一索引可以保证该记录只被插入一次,那么就可以用这个记录是否存在来判断是否存于锁定状态。 +获得锁时向表中插入一条记录,释放锁时删除这条记录。唯一索引可以保证该记录只被插入一次,那么就可以用这个记录是否存在来判断是否处于锁定状态。 存在以下几个问题: -- 锁没有失效时间,解锁失败的话其它进程无法再获得该锁。 -- 只能是非阻塞锁,插入失败直接就报错了,无法重试。 +- 锁没有失效时间,解锁失败的话其它进程无法再获得该锁; +- 只能是非阻塞锁,插入失败直接就报错了,无法重试; - 不可重入,已经获得锁的进程也必须重新获取锁。 ## Redis 的 SETNX 指令 @@ -61,8 +61,8 @@ EXPIRE 指令可以为一个键值对设置一个过期时间,从而避免了 使用了多个 Redis 实例来实现分布式锁,这是为了保证在发生单点故障时仍然可用。 - 尝试从 N 个互相独立 Redis 实例获取锁; -- 计算获取锁消耗的时间,只有当这个时间小于锁的过期时间,并且从大多数(N / 2 + 1)实例上获取了锁,那么就认为锁获取成功了; -- 如果锁获取失败,就到每个实例上释放锁。 +- 计算获取锁消耗的时间,只有时间小于锁的过期时间,并且从大多数(N / 2 + 1)实例上获取了锁,才认为获取锁成功; +- 如果获取锁失败,就到每个实例上释放锁。 ## Zookeeper 的有序节点 @@ -91,11 +91,11 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 ### 5. 会话超时 -如果一个已经获得锁的会话超时了,因为创建的是临时节点,所以该会话对应的临时节点会被删除,其它会话就可以获得锁了。可以看到,Zookeeper 分布式锁不会出现数据库的唯一索引实现的分布式锁释放锁失败问题。 +如果一个已经获得锁的会话超时了,因为创建的是临时节点,所以该会话对应的临时节点会被删除,其它会话就可以获得锁了。可以看到,这种实现方式不会出现数据库的唯一索引实现方式释放锁失败的问题。 ### 6. 羊群效应 -一个节点未获得锁,只需要监听自己的前一个子节点,这是因为如果监听所有的子节点,那么任意一个子节点状态改变,其它所有子节点都会收到通知(羊群效应),而我们只希望它的后一个子节点收到通知。 +一个节点未获得锁,只需要监听自己的前一个子节点,这是因为如果监听所有的子节点,那么任意一个子节点状态改变,其它所有子节点都会收到通知(羊群效应,一只羊动起来,其它羊也会一哄而上),而我们只希望它的后一个子节点收到通知。 # 二、分布式事务 @@ -278,6 +278,8 @@ Paxos 协议能够让 Proposer 发送的提议朝着能被大多数 Acceptor 接 Raft 也是分布式一致性协议,主要是用来竞选主节点。 +- [Raft: Understandable Distributed Consensus](http://thesecretlivesofdata.com/raft) + ## 单个 Candidate 的竞选 有三种节点:Follower、Candidate 和 Leader。Leader 会周期性的发送心跳包给 Follower。每个 Follower 都设置了一个随机的竞选超时时间,一般为 150ms\~300ms,如果在这个时间内没有收到 Leader 的心跳包,就会变成 Candidate,进入竞选阶段。 @@ -332,7 +334,6 @@ Raft 也是分布式一致性协议,主要是用来竞选主节点。 - [Distributed locks with Redis](https://redis.io/topics/distlock) - [浅谈分布式锁](http://www.linkedkeeper.com/detail/blog.action?bid=1023) - [基于 Zookeeper 的分布式锁](http://www.dengshenyu.com/java/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/2017/10/23/zookeeper-distributed-lock.html) -- [Raft: Understandable Distributed Consensus](http://thesecretlivesofdata.com/raft) - [聊聊分布式事务,再说说解决方案](https://www.cnblogs.com/savorboard/p/distributed-system-transaction-consistency.html) - [分布式系统的事务处理](https://coolshell.cn/articles/10910.html) - [深入理解分布式事务](https://juejin.im/entry/577c6f220a2b5800573492be) From 49abcd4b70d5d4fa65173dbbad2cc377cdb012ad Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 23:27:51 +0800 Subject: [PATCH 017/214] auto commit --- "docs/notes/\345\210\206\345\270\203\345\274\217.md" | 5 +++++ "notes/\345\210\206\345\270\203\345\274\217.md" | 5 +++++ 2 files changed, 10 insertions(+) diff --git "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" index dc5c069d4c..b7e7db8665 100644 --- "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" @@ -103,6 +103,11 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务。 +分布式锁和分布式事务区别: + +- 锁问题的关键在于进程操作的互斥关系,例如多个进程同时修改账户的余额,如果没有互斥关系则会导致该账户的余额不正确。 +- 而事务问题的关键则在于事务涉及的一系列操作需要满足 ACID 特性,例如要满足原子性操作则需要这些操作要么都执行,要么都不执行。 + ## 2PC 两阶段提交(Two-phase Commit,2PC),通过引入协调者(Coordinator)来协调参与者的行为,并最终决定这些参与者是否要真正执行事务。 diff --git "a/notes/\345\210\206\345\270\203\345\274\217.md" "b/notes/\345\210\206\345\270\203\345\274\217.md" index dc5c069d4c..b7e7db8665 100644 --- "a/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/notes/\345\210\206\345\270\203\345\274\217.md" @@ -103,6 +103,11 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 例如在下单场景下,库存和订单如果不在同一个节点上,就涉及分布式事务。 +分布式锁和分布式事务区别: + +- 锁问题的关键在于进程操作的互斥关系,例如多个进程同时修改账户的余额,如果没有互斥关系则会导致该账户的余额不正确。 +- 而事务问题的关键则在于事务涉及的一系列操作需要满足 ACID 特性,例如要满足原子性操作则需要这些操作要么都执行,要么都不执行。 + ## 2PC 两阶段提交(Two-phase Commit,2PC),通过引入协调者(Coordinator)来协调参与者的行为,并最终决定这些参与者是否要真正执行事务。 From 6c94e0abb920ce117ff40c32a5dd35699afb2d56 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 23:32:35 +0800 Subject: [PATCH 018/214] auto commit --- "docs/notes/\345\210\206\345\270\203\345\274\217.md" | 2 +- "notes/\345\210\206\345\270\203\345\274\217.md" | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" index b7e7db8665..d05de3e58a 100644 --- "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" @@ -116,7 +116,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 #### 1.1 准备阶段 -协调者询问参与者事务是否执行成功,参与者发回事务执行结果。 +协调者询问参与者事务是否执行成功,参与者发回事务执行结果。询问可以看成一种投票,需要参与者都同意才能执行。

diff --git "a/notes/\345\210\206\345\270\203\345\274\217.md" "b/notes/\345\210\206\345\270\203\345\274\217.md" index b7e7db8665..d05de3e58a 100644 --- "a/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/notes/\345\210\206\345\270\203\345\274\217.md" @@ -116,7 +116,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 #### 1.1 准备阶段 -协调者询问参与者事务是否执行成功,参与者发回事务执行结果。 +协调者询问参与者事务是否执行成功,参与者发回事务执行结果。询问可以看成一种投票,需要参与者都同意才能执行。

From cd4ac1034371b1e9e8e547124a20805a1e5964b1 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 23:33:58 +0800 Subject: [PATCH 019/214] auto commit --- "docs/notes/\345\210\206\345\270\203\345\274\217.md" | 6 +++--- "notes/\345\210\206\345\270\203\345\274\217.md" | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" index d05de3e58a..cee7f7056f 100644 --- "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" @@ -132,15 +132,15 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 #### 2.1 同步阻塞 -所有事务参与者在等待其它参与者响应的时候都处于同步阻塞状态,无法进行其它操作。 +所有事务参与者在等待其它参与者响应的时候都处于同步阻塞等待状态,无法进行其它操作。 #### 2.2 单点问题 -协调者在 2PC 中起到非常大的作用,发生故障将会造成很大影响。特别是在阶段二发生故障,所有参与者会一直等待,无法完成其它操作。 +协调者在 2PC 中起到非常大的作用,发生故障将会造成很大影响。特别是在提交阶段发生故障,所有参与者会一直同步阻塞等待,无法完成其它操作。 #### 2.3 数据不一致 -在阶段二,如果协调者只发送了部分 Commit 消息,此时网络发生异常,那么只有部分参与者接收到 Commit 消息,也就是说只有部分参与者提交了事务,使得系统数据不一致。 +在提交阶段,如果协调者只发送了部分 Commit 消息,此时网络发生异常,那么只有部分参与者接收到 Commit 消息,也就是说只有部分参与者提交了事务,使得系统数据不一致。 #### 2.4 太过保守 diff --git "a/notes/\345\210\206\345\270\203\345\274\217.md" "b/notes/\345\210\206\345\270\203\345\274\217.md" index d05de3e58a..cee7f7056f 100644 --- "a/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/notes/\345\210\206\345\270\203\345\274\217.md" @@ -132,15 +132,15 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 #### 2.1 同步阻塞 -所有事务参与者在等待其它参与者响应的时候都处于同步阻塞状态,无法进行其它操作。 +所有事务参与者在等待其它参与者响应的时候都处于同步阻塞等待状态,无法进行其它操作。 #### 2.2 单点问题 -协调者在 2PC 中起到非常大的作用,发生故障将会造成很大影响。特别是在阶段二发生故障,所有参与者会一直等待,无法完成其它操作。 +协调者在 2PC 中起到非常大的作用,发生故障将会造成很大影响。特别是在提交阶段发生故障,所有参与者会一直同步阻塞等待,无法完成其它操作。 #### 2.3 数据不一致 -在阶段二,如果协调者只发送了部分 Commit 消息,此时网络发生异常,那么只有部分参与者接收到 Commit 消息,也就是说只有部分参与者提交了事务,使得系统数据不一致。 +在提交阶段,如果协调者只发送了部分 Commit 消息,此时网络发生异常,那么只有部分参与者接收到 Commit 消息,也就是说只有部分参与者提交了事务,使得系统数据不一致。 #### 2.4 太过保守 From e800d0680718680ea0a1c914a89df17bbdb7305a Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 30 Nov 2019 23:44:22 +0800 Subject: [PATCH 020/214] auto commit --- ...14\345\210\206\346\237\245\346\211\276.md" | 6 +- ...350\247\243 - \347\233\256\345\275\225.md" | 152 +++++++++--------- ...50\247\243 - \347\233\256\345\275\2251.md" | 152 +++++++++--------- ...14\345\210\206\346\237\245\346\211\276.md" | 6 +- ...350\247\243 - \347\233\256\345\275\225.md" | 152 +++++++++--------- ...50\247\243 - \347\233\256\345\275\2251.md" | 152 +++++++++--------- 6 files changed, 314 insertions(+), 306 deletions(-) diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" index 4238de2634..b6039fb34d 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" @@ -8,7 +8,7 @@ -正常实现** +**正常实现** ```text Input : [1,2,3,4,5] @@ -276,6 +276,10 @@ Input: nums = [5,7,7,8,8,10], target = 6 Output: [-1,-1] ``` +题目描述:给定一个有序数组 nums 和一个目标 target,要求找到 target 在 nums 中的第一个位置和最后一个位置。 + + + ```java public int[] searchRange(int[] nums, int target) { int first = binarySearch(nums, target); diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\225.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\225.md" index 8999572d9a..a7c246bc19 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\225.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\225.md" @@ -1,82 +1,82 @@ # 目录 -- [3. 数组中重复的数字.md](3.%20数组中重复的数字.md) -- [4. 二维数组中的查找.md](4.%20二维数组中的查找.md) -- [5. 替换空格.md](5.%20替换空格.md) -- [6. 从尾到头打印链表.md](6.%20从尾到头打印链表.md) -- [7. 重建二叉树.md](7.%20重建二叉树.md) -- [8. 二叉树的下一个结点.md](8.%20二叉树的下一个结点.md) -- [9. 用两个栈实现队列.md](9.%20用两个栈实现队列.md) -- [10.1 斐波那契数列.md](10.1%20斐波那契数列.md) -- [10.2 矩形覆盖.md](10.2%20矩形覆盖.md) -- [10.3 跳台阶.md](10.3%20跳台阶.md) -- [10.4 变态跳台阶.md](10.4%20变态跳台阶.md) -- [11. 旋转数组的最小数字.md](11.%20旋转数组的最小数字.md) -- [12. 矩阵中的路径.md](12.%20矩阵中的路径.md) -- [13. 机器人的运动范围.md](13.%20机器人的运动范围.md) -- [14. 剪绳子.md](14.%20剪绳子.md) -- [15. 二进制中 1 的个数.md](15.%20二进制中%201%20的个数.md) -- [16. 数值的整数次方.md](16.%20数值的整数次方.md) -- [17. 打印从 1 到最大的 n 位数.md](17.%20打印从%201%20到最大的%20n%20位数.md) -- [18.1 在 O(1) 时间内删除链表节点.md](18.1%20在%20O(1)%20时间内删除链表节点.md) -- [18.2 删除链表中重复的结点.md](18.2%20删除链表中重复的结点.md) -- [19. 正则表达式匹配.md](19.%20正则表达式匹配.md) -- [20. 表示数值的字符串.md](20.%20表示数值的字符串.md) -- [21. 调整数组顺序使奇数位于偶数前面.md](21.%20调整数组顺序使奇数位于偶数前面.md) -- [22. 链表中倒数第 K 个结点.md](22.%20链表中倒数第%20K%20个结点.md) -- [23. 链表中环的入口结点.md](23.%20链表中环的入口结点.md) -- [24. 反转链表.md](24.%20反转链表.md) -- [25. 合并两个排序的链表.md](25.%20合并两个排序的链表.md) -- [26. 树的子结构.md](26.%20树的子结构.md) -- [27. 二叉树的镜像.md](27.%20二叉树的镜像.md) -- [28. 对称的二叉树.md](28.%20对称的二叉树.md) -- [29. 顺时针打印矩阵.md](29.%20顺时针打印矩阵.md) -- [30. 包含 min 函数的栈.md](30.%20包含%20min%20函数的栈.md) -- [31. 栈的压入、弹出序列.md](31.%20栈的压入、弹出序列.md) -- [32.1 从上往下打印二叉树.md](32.1%20从上往下打印二叉树.md) -- [32.2 把二叉树打印成多行.md](32.2%20把二叉树打印成多行.md) -- [32.3 按之字形顺序打印二叉树.md](32.3%20按之字形顺序打印二叉树.md) -- [33. 二叉搜索树的后序遍历序列.md](33.%20二叉搜索树的后序遍历序列.md) -- [34. 二叉树中和为某一值的路径.md](34.%20二叉树中和为某一值的路径.md) -- [35. 复杂链表的复制.md](35.%20复杂链表的复制.md) -- [36. 二叉搜索树与双向链表.md](36.%20二叉搜索树与双向链表.md) -- [37. 序列化二叉树.md](37.%20序列化二叉树.md) -- [38. 字符串的排列.md](38.%20字符串的排列.md) -- [39. 数组中出现次数超过一半的数字.md](39.%20数组中出现次数超过一半的数字.md) -- [40. 最小的 K 个数.md](40.%20最小的%20K%20个数.md) -- [41.1 数据流中的中位数.md](41.1%20数据流中的中位数.md) -- [41.2 字符流中第一个不重复的字符.md](41.2%20字符流中第一个不重复的字符.md) -- [42. 连续子数组的最大和.md](42.%20连续子数组的最大和.md) -- [43. 从 1 到 n 整数中 1 出现的次数.md](43.%20从%201%20到%20n%20整数中%201%20出现的次数.md) -- [44. 数字序列中的某一位数字.md](44.%20数字序列中的某一位数字.md) -- [45. 把数组排成最小的数.md](45.%20把数组排成最小的数.md) -- [46. 把数字翻译成字符串.md](46.%20把数字翻译成字符串.md) -- [47. 礼物的最大价值.md](47.%20礼物的最大价值.md) -- [48. 最长不含重复字符的子字符串.md](48.%20最长不含重复字符的子字符串.md) -- [49. 丑数.md](49.%20丑数.md) -- [50. 第一个只出现一次的字符位置.md](50.%20第一个只出现一次的字符位置.md) -- [51. 数组中的逆序对.md](51.%20数组中的逆序对.md) -- [52. 两个链表的第一个公共结点.md](52.%20两个链表的第一个公共结点.md) -- [53. 数字在排序数组中出现的次数.md](53.%20数字在排序数组中出现的次数.md) -- [54. 二叉查找树的第 K 个结点.md](54.%20二叉查找树的第%20K%20个结点.md) -- [55.1 二叉树的深度.md](55.1%20二叉树的深度.md) -- [55.2 平衡二叉树.md](55.2%20平衡二叉树.md) -- [56. 数组中只出现一次的数字.md](56.%20数组中只出现一次的数字.md) -- [57.1 和为 S 的两个数字.md](57.1%20和为%20S%20的两个数字.md) -- [57.2 和为 S 的连续正数序列.md](57.2%20和为%20S%20的连续正数序列.md) -- [58.1 翻转单词顺序列.md](58.1%20翻转单词顺序列.md) -- [58.2 左旋转字符串.md](58.2%20左旋转字符串.md) -- [59. 滑动窗口的最大值.md](59.%20滑动窗口的最大值.md) -- [60. n 个骰子的点数.md](60.%20n%20个骰子的点数.md) -- [61. 扑克牌顺子.md](61.%20扑克牌顺子.md) -- [62. 圆圈中最后剩下的数.md](62.%20圆圈中最后剩下的数.md) -- [63. 股票的最大利润.md](63.%20股票的最大利润.md) -- [64. 求 1+2+3+...+n.md](64.%20求%201+2+3+...+n.md) -- [65. 不用加减乘除做加法.md](65.%20不用加减乘除做加法.md) -- [66. 构建乘积数组.md](66.%20构建乘积数组.md) -- [67. 把字符串转换成整数.md](67.%20把字符串转换成整数.md) -- [68. 树中两个节点的最低公共祖先.md](68.%20树中两个节点的最低公共祖先.md) +- [3. 数组中重复的数字](3.%20数组中重复的数字.md) +- [4. 二维数组中的查找](4.%20二维数组中的查找.md) +- [5. 替换空格](5.%20替换空格.md) +- [6. 从尾到头打印链表](6.%20从尾到头打印链表.md) +- [7. 重建二叉树](7.%20重建二叉树.md) +- [8. 二叉树的下一个结点](8.%20二叉树的下一个结点.md) +- [9. 用两个栈实现队列](9.%20用两个栈实现队列.md) +- [10.1 斐波那契数列](10.1%20斐波那契数列.md) +- [10.2 矩形覆盖](10.2%20矩形覆盖.md) +- [10.3 跳台阶](10.3%20跳台阶.md) +- [10.4 变态跳台阶](10.4%20变态跳台阶.md) +- [11. 旋转数组的最小数字](11.%20旋转数组的最小数字.md) +- [12. 矩阵中的路径](12.%20矩阵中的路径.md) +- [13. 机器人的运动范围](13.%20机器人的运动范围.md) +- [14. 剪绳子](14.%20剪绳子.md) +- [15. 二进制中 1 的个数](15.%20二进制中%201%20的个数.md) +- [16. 数值的整数次方](16.%20数值的整数次方.md) +- [17. 打印从 1 到最大的 n 位数](17.%20打印从%201%20到最大的%20n%20位数.md) +- [18.1 在 O(1) 时间内删除链表节点](18.1%20在%20O(1)%20时间内删除链表节点.md) +- [18.2 删除链表中重复的结点](18.2%20删除链表中重复的结点.md) +- [19. 正则表达式匹配](19.%20正则表达式匹配.md) +- [20. 表示数值的字符串](20.%20表示数值的字符串.md) +- [21. 调整数组顺序使奇数位于偶数前面](21.%20调整数组顺序使奇数位于偶数前面.md) +- [22. 链表中倒数第 K 个结点](22.%20链表中倒数第%20K%20个结点.md) +- [23. 链表中环的入口结点](23.%20链表中环的入口结点.md) +- [24. 反转链表](24.%20反转链表.md) +- [25. 合并两个排序的链表](25.%20合并两个排序的链表.md) +- [26. 树的子结构](26.%20树的子结构.md) +- [27. 二叉树的镜像](27.%20二叉树的镜像.md) +- [28. 对称的二叉树](28.%20对称的二叉树.md) +- [29. 顺时针打印矩阵](29.%20顺时针打印矩阵.md) +- [30. 包含 min 函数的栈](30.%20包含%20min%20函数的栈.md) +- [31. 栈的压入、弹出序列](31.%20栈的压入、弹出序列.md) +- [32.1 从上往下打印二叉树](32.1%20从上往下打印二叉树.md) +- [32.2 把二叉树打印成多行](32.2%20把二叉树打印成多行.md) +- [32.3 按之字形顺序打印二叉树](32.3%20按之字形顺序打印二叉树.md) +- [33. 二叉搜索树的后序遍历序列](33.%20二叉搜索树的后序遍历序列.md) +- [34. 二叉树中和为某一值的路径](34.%20二叉树中和为某一值的路径.md) +- [35. 复杂链表的复制](35.%20复杂链表的复制.md) +- [36. 二叉搜索树与双向链表](36.%20二叉搜索树与双向链表.md) +- [37. 序列化二叉树](37.%20序列化二叉树.md) +- [38. 字符串的排列](38.%20字符串的排列.md) +- [39. 数组中出现次数超过一半的数字](39.%20数组中出现次数超过一半的数字.md) +- [40. 最小的 K 个数](40.%20最小的%20K%20个数.md) +- [41.1 数据流中的中位数](41.1%20数据流中的中位数.md) +- [41.2 字符流中第一个不重复的字符](41.2%20字符流中第一个不重复的字符.md) +- [42. 连续子数组的最大和](42.%20连续子数组的最大和.md) +- [43. 从 1 到 n 整数中 1 出现的次数](43.%20从%201%20到%20n%20整数中%201%20出现的次数) +- [44. 数字序列中的某一位数字](44.%20数字序列中的某一位数字.md) +- [45. 把数组排成最小的数](45.%20把数组排成最小的数.md) +- [46. 把数字翻译成字符串](46.%20把数字翻译成字符串.md) +- [47. 礼物的最大价值](47.%20礼物的最大价值.md) +- [48. 最长不含重复字符的子字符串](48.%20最长不含重复字符的子字符串.md) +- [49. 丑数](49.%20丑数.md) +- [50. 第一个只出现一次的字符位置](50.%20第一个只出现一次的字符位置.md) +- [51. 数组中的逆序对](51.%20数组中的逆序对.md) +- [52. 两个链表的第一个公共结点](52.%20两个链表的第一个公共结点.md) +- [53. 数字在排序数组中出现的次数](53.%20数字在排序数组中出现的次数.md) +- [54. 二叉查找树的第 K 个结点](54.%20二叉查找树的第%20K%20个结点.md) +- [55.1 二叉树的深度](55.1%20二叉树的深度.md) +- [55.2 平衡二叉树](55.2%20平衡二叉树.md) +- [56. 数组中只出现一次的数字](56.%20数组中只出现一次的数字.md) +- [57.1 和为 S 的两个数字](57.1%20和为%20S%20的两个数字.md) +- [57.2 和为 S 的连续正数序列](57.2%20和为%20S%20的连续正数序列.md) +- [58.1 翻转单词顺序列](58.1%20翻转单词顺序列.md) +- [58.2 左旋转字符串](58.2%20左旋转字符串.md) +- [59. 滑动窗口的最大值](59.%20滑动窗口的最大值.md) +- [60. n 个骰子的点数](60.%20n%20个骰子的点数.md) +- [61. 扑克牌顺子](61.%20扑克牌顺子.md) +- [62. 圆圈中最后剩下的数](62.%20圆圈中最后剩下的数.md) +- [63. 股票的最大利润](63.%20股票的最大利润.md) +- [64. 求 1+2+3+...+n](64.%20求%201+2+3+...+n.md) +- [65. 不用加减乘除做加法](65.%20不用加减乘除做加法.md) +- [66. 构建乘积数组](66.%20构建乘积数组.md) +- [67. 把字符串转换成整数](67.%20把字符串转换成整数.md) +- [68. 树中两个节点的最低公共祖先](68.%20树中两个节点的最低公共祖先.md) # 参考文献 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\2251.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\2251.md" index 31c4059166..11e35e73e6 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\2251.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\2251.md" @@ -1,81 +1,81 @@ # 目录 -- [3. 数组中重复的数字.md](notes/3.%20数组中重复的数字.md) -- [4. 二维数组中的查找.md](notes/4.%20二维数组中的查找.md) -- [5. 替换空格.md](notes/5.%20替换空格.md) -- [6. 从尾到头打印链表.md](notes/6.%20从尾到头打印链表.md) -- [7. 重建二叉树.md](notes/7.%20重建二叉树.md) -- [8. 二叉树的下一个结点.md](notes/8.%20二叉树的下一个结点.md) -- [9. 用两个栈实现队列.md](notes/9.%20用两个栈实现队列.md) -- [10.1 斐波那契数列.md](notes/10.1%20斐波那契数列.md) -- [10.2 矩形覆盖.md](notes/10.2%20矩形覆盖.md) -- [10.3 跳台阶.md](notes/10.3%20跳台阶.md) -- [10.4 变态跳台阶.md](notes/10.4%20变态跳台阶.md) -- [11. 旋转数组的最小数字.md](notes/11.%20旋转数组的最小数字.md) -- [12. 矩阵中的路径.md](notes/12.%20矩阵中的路径.md) -- [13. 机器人的运动范围.md](notes/13.%20机器人的运动范围.md) -- [14. 剪绳子.md](notes/14.%20剪绳子.md) -- [15. 二进制中 1 的个数.md](notes/15.%20二进制中%201%20的个数.md) -- [16. 数值的整数次方.md](notes/16.%20数值的整数次方.md) -- [17. 打印从 1 到最大的 n 位数.md](notes/17.%20打印从%201%20到最大的%20n%20位数.md) -- [18.1 在 O(1) 时间内删除链表节点.md](notes/18.1%20在%20O(1)%20时间内删除链表节点.md) -- [18.2 删除链表中重复的结点.md](notes/18.2%20删除链表中重复的结点.md) -- [19. 正则表达式匹配.md](notes/19.%20正则表达式匹配.md) -- [20. 表示数值的字符串.md](notes/20.%20表示数值的字符串.md) -- [21. 调整数组顺序使奇数位于偶数前面.md](notes/21.%20调整数组顺序使奇数位于偶数前面.md) -- [22. 链表中倒数第 K 个结点.md](notes/22.%20链表中倒数第%20K%20个结点.md) -- [23. 链表中环的入口结点.md](notes/23.%20链表中环的入口结点.md) -- [24. 反转链表.md](notes/24.%20反转链表.md) -- [25. 合并两个排序的链表.md](notes/25.%20合并两个排序的链表.md) -- [26. 树的子结构.md](notes/26.%20树的子结构.md) -- [27. 二叉树的镜像.md](notes/27.%20二叉树的镜像.md) -- [28. 对称的二叉树.md](notes/28.%20对称的二叉树.md) -- [29. 顺时针打印矩阵.md](notes/29.%20顺时针打印矩阵.md) -- [30. 包含 min 函数的栈.md](notes/30.%20包含%20min%20函数的栈.md) -- [31. 栈的压入、弹出序列.md](notes/31.%20栈的压入、弹出序列.md) -- [32.1 从上往下打印二叉树.md](notes/32.1%20从上往下打印二叉树.md) -- [32.2 把二叉树打印成多行.md](notes/32.2%20把二叉树打印成多行.md) -- [32.3 按之字形顺序打印二叉树.md](notes/32.3%20按之字形顺序打印二叉树.md) -- [33. 二叉搜索树的后序遍历序列.md](notes/33.%20二叉搜索树的后序遍历序列.md) -- [34. 二叉树中和为某一值的路径.md](notes/34.%20二叉树中和为某一值的路径.md) -- [35. 复杂链表的复制.md](notes/35.%20复杂链表的复制.md) -- [36. 二叉搜索树与双向链表.md](notes/36.%20二叉搜索树与双向链表.md) -- [37. 序列化二叉树.md](notes/37.%20序列化二叉树.md) -- [38. 字符串的排列.md](notes/38.%20字符串的排列.md) -- [39. 数组中出现次数超过一半的数字.md](notes/39.%20数组中出现次数超过一半的数字.md) -- [40. 最小的 K 个数.md](notes/40.%20最小的%20K%20个数.md) -- [41.1 数据流中的中位数.md](notes/41.1%20数据流中的中位数.md) -- [41.2 字符流中第一个不重复的字符.md](notes/41.2%20字符流中第一个不重复的字符.md) -- [42. 连续子数组的最大和.md](notes/42.%20连续子数组的最大和.md) -- [43. 从 1 到 n 整数中 1 出现的次数.md](notes/43.%20从%201%20到%20n%20整数中%201%20出现的次数.md) -- [44. 数字序列中的某一位数字.md](notes/44.%20数字序列中的某一位数字.md) -- [45. 把数组排成最小的数.md](notes/45.%20把数组排成最小的数.md) -- [46. 把数字翻译成字符串.md](notes/46.%20把数字翻译成字符串.md) -- [47. 礼物的最大价值.md](notes/47.%20礼物的最大价值.md) -- [48. 最长不含重复字符的子字符串.md](notes/48.%20最长不含重复字符的子字符串.md) -- [49. 丑数.md](notes/49.%20丑数.md) -- [50. 第一个只出现一次的字符位置.md](notes/50.%20第一个只出现一次的字符位置.md) -- [51. 数组中的逆序对.md](notes/51.%20数组中的逆序对.md) -- [52. 两个链表的第一个公共结点.md](notes/52.%20两个链表的第一个公共结点.md) -- [53. 数字在排序数组中出现的次数.md](notes/53.%20数字在排序数组中出现的次数.md) -- [54. 二叉查找树的第 K 个结点.md](notes/54.%20二叉查找树的第%20K%20个结点.md) -- [55.1 二叉树的深度.md](notes/55.1%20二叉树的深度.md) -- [55.2 平衡二叉树.md](notes/55.2%20平衡二叉树.md) -- [56. 数组中只出现一次的数字.md](notes/56.%20数组中只出现一次的数字.md) -- [57.1 和为 S 的两个数字.md](notes/57.1%20和为%20S%20的两个数字.md) -- [57.2 和为 S 的连续正数序列.md](notes/57.2%20和为%20S%20的连续正数序列.md) -- [58.1 翻转单词顺序列.md](notes/58.1%20翻转单词顺序列.md) -- [58.2 左旋转字符串.md](notes/58.2%20左旋转字符串.md) -- [59. 滑动窗口的最大值.md](notes/59.%20滑动窗口的最大值.md) -- [60. n 个骰子的点数.md](notes/60.%20n%20个骰子的点数.md) -- [61. 扑克牌顺子.md](notes/61.%20扑克牌顺子.md) -- [62. 圆圈中最后剩下的数.md](notes/62.%20圆圈中最后剩下的数.md) -- [63. 股票的最大利润.md](notes/63.%20股票的最大利润.md) -- [64. 求 1+2+3+...+n.md](notes/64.%20求%201+2+3+...+n.md) -- [65. 不用加减乘除做加法.md](notes/65.%20不用加减乘除做加法.md) -- [66. 构建乘积数组.md](notes/66.%20构建乘积数组.md) -- [67. 把字符串转换成整数.md](notes/67.%20把字符串转换成整数.md) -- [68. 树中两个节点的最低公共祖先.md](notes/68.%20树中两个节点的最低公共祖先.md) +- [3. 数组中重复的数字](notes/3.%20数组中重复的数字.md) +- [4. 二维数组中的查找](notes/4.%20二维数组中的查找.md) +- [5. 替换空格](notes/5.%20替换空格.md) +- [6. 从尾到头打印链表](notes/6.%20从尾到头打印链表.md) +- [7. 重建二叉树](notes/7.%20重建二叉树.md) +- [8. 二叉树的下一个结点](notes/8.%20二叉树的下一个结点.md) +- [9. 用两个栈实现队列](notes/9.%20用两个栈实现队列.md) +- [10.1 斐波那契数列](notes/10.1%20斐波那契数列.md) +- [10.2 矩形覆盖](notes/10.2%20矩形覆盖.md) +- [10.3 跳台阶](notes/10.3%20跳台阶.md) +- [10.4 变态跳台阶](notes/10.4%20变态跳台阶.md) +- [11. 旋转数组的最小数字](notes/11.%20旋转数组的最小数字.md) +- [12. 矩阵中的路径](notes/12.%20矩阵中的路径.md) +- [13. 机器人的运动范围](notes/13.%20机器人的运动范围.md) +- [14. 剪绳子](notes/14.%20剪绳子.md) +- [15. 二进制中 1 的个数](notes/15.%20二进制中%201%20的个数.md) +- [16. 数值的整数次方](notes/16.%20数值的整数次方.md) +- [17. 打印从 1 到最大的 n 位数](notes/17.%20打印从%201%20到最大的%20n%20位数.md) +- [18.1 在 O(1) 时间内删除链表节点](notes/18.1%20在%20O(1)%20时间内删除链表节点.md) +- [18.2 删除链表中重复的结点](notes/18.2%20删除链表中重复的结点.md) +- [19. 正则表达式匹配](notes/19.%20正则表达式匹配.md) +- [20. 表示数值的字符串](notes/20.%20表示数值的字符串.md) +- [21. 调整数组顺序使奇数位于偶数前面](notes/21.%20调整数组顺序使奇数位于偶数前面.md) +- [22. 链表中倒数第 K 个结点](notes/22.%20链表中倒数第%20K%20个结点.md) +- [23. 链表中环的入口结点](notes/23.%20链表中环的入口结点.md) +- [24. 反转链表](notes/24.%20反转链表.md) +- [25. 合并两个排序的链表](notes/25.%20合并两个排序的链表.md) +- [26. 树的子结构](notes/26.%20树的子结构.md) +- [27. 二叉树的镜像](notes/27.%20二叉树的镜像.md) +- [28. 对称的二叉树](notes/28.%20对称的二叉树.md) +- [29. 顺时针打印矩阵](notes/29.%20顺时针打印矩阵.md) +- [30. 包含 min 函数的栈](notes/30.%20包含%20min%20函数的栈.md) +- [31. 栈的压入、弹出序列](notes/31.%20栈的压入、弹出序列.md) +- [32.1 从上往下打印二叉树](notes/32.1%20从上往下打印二叉树.md) +- [32.2 把二叉树打印成多行](notes/32.2%20把二叉树打印成多行.md) +- [32.3 按之字形顺序打印二叉树](notes/32.3%20按之字形顺序打印二叉树.md) +- [33. 二叉搜索树的后序遍历序列](notes/33.%20二叉搜索树的后序遍历序列.md) +- [34. 二叉树中和为某一值的路径](notes/34.%20二叉树中和为某一值的路径.md) +- [35. 复杂链表的复制](notes/35.%20复杂链表的复制.md) +- [36. 二叉搜索树与双向链表](notes/36.%20二叉搜索树与双向链表.md) +- [37. 序列化二叉树](notes/37.%20序列化二叉树.md) +- [38. 字符串的排列](notes/38.%20字符串的排列.md) +- [39. 数组中出现次数超过一半的数字](notes/39.%20数组中出现次数超过一半的数字.md) +- [40. 最小的 K 个数](notes/40.%20最小的%20K%20个数.md) +- [41.1 数据流中的中位数](notes/41.1%20数据流中的中位数.md) +- [41.2 字符流中第一个不重复的字符](notes/41.2%20字符流中第一个不重复的字符.md) +- [42. 连续子数组的最大和](notes/42.%20连续子数组的最大和.md) +- [43. 从 1 到 n 整数中 1 出现的次数](notes/43.%20从%201%20到%20n%20整数中%201%20出现的次数.md) +- [44. 数字序列中的某一位数字](notes/44.%20数字序列中的某一位数字.md) +- [45. 把数组排成最小的数](notes/45.%20把数组排成最小的数.md) +- [46. 把数字翻译成字符串](notes/46.%20把数字翻译成字符串.md) +- [47. 礼物的最大价值](notes/47.%20礼物的最大价值.md) +- [48. 最长不含重复字符的子字符串](notes/48.%20最长不含重复字符的子字符串.md) +- [49. 丑数](notes/49.%20丑数.md) +- [50. 第一个只出现一次的字符位置](notes/50.%20第一个只出现一次的字符位置.md) +- [51. 数组中的逆序对](notes/51.%20数组中的逆序对.md) +- [52. 两个链表的第一个公共结点](notes/52.%20两个链表的第一个公共结点.md) +- [53. 数字在排序数组中出现的次数](notes/53.%20数字在排序数组中出现的次数.md) +- [54. 二叉查找树的第 K 个结点](notes/54.%20二叉查找树的第%20K%20个结点.md) +- [55.1 二叉树的深度](notes/55.1%20二叉树的深度.md) +- [55.2 平衡二叉树](notes/55.2%20平衡二叉树.md) +- [56. 数组中只出现一次的数字](notes/56.%20数组中只出现一次的数字.md) +- [57.1 和为 S 的两个数字](notes/57.1%20和为%20S%20的两个数字.md) +- [57.2 和为 S 的连续正数序列](notes/57.2%20和为%20S%20的连续正数序列.md) +- [58.1 翻转单词顺序列](notes/58.1%20翻转单词顺序列.md) +- [58.2 左旋转字符串](notes/58.2%20左旋转字符串.md) +- [59. 滑动窗口的最大值](notes/59.%20滑动窗口的最大值.md) +- [60. n 个骰子的点数](notes/60.%20n%20个骰子的点数.md) +- [61. 扑克牌顺子](notes/61.%20扑克牌顺子.md) +- [62. 圆圈中最后剩下的数](notes/62.%20圆圈中最后剩下的数.md) +- [63. 股票的最大利润](notes/63.%20股票的最大利润.md) +- [64. 求 1+2+3+...+n](notes/64.%20求%201+2+3+...+n.md) +- [65. 不用加减乘除做加法](notes/65.%20不用加减乘除做加法.md) +- [66. 构建乘积数组](notes/66.%20构建乘积数组.md) +- [67. 把字符串转换成整数](notes/67.%20把字符串转换成整数.md) +- [68. 树中两个节点的最低公共祖先](notes/68.%20树中两个节点的最低公共祖先.md) # 参考文献 diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" "b/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" index 4238de2634..b6039fb34d 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" @@ -8,7 +8,7 @@ -正常实现** +**正常实现** ```text Input : [1,2,3,4,5] @@ -276,6 +276,10 @@ Input: nums = [5,7,7,8,8,10], target = 6 Output: [-1,-1] ``` +题目描述:给定一个有序数组 nums 和一个目标 target,要求找到 target 在 nums 中的第一个位置和最后一个位置。 + + + ```java public int[] searchRange(int[] nums, int target) { int first = binarySearch(nums, target); diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\225.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\225.md" index 8999572d9a..a7c246bc19 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\225.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\225.md" @@ -1,82 +1,82 @@ # 目录 -- [3. 数组中重复的数字.md](3.%20数组中重复的数字.md) -- [4. 二维数组中的查找.md](4.%20二维数组中的查找.md) -- [5. 替换空格.md](5.%20替换空格.md) -- [6. 从尾到头打印链表.md](6.%20从尾到头打印链表.md) -- [7. 重建二叉树.md](7.%20重建二叉树.md) -- [8. 二叉树的下一个结点.md](8.%20二叉树的下一个结点.md) -- [9. 用两个栈实现队列.md](9.%20用两个栈实现队列.md) -- [10.1 斐波那契数列.md](10.1%20斐波那契数列.md) -- [10.2 矩形覆盖.md](10.2%20矩形覆盖.md) -- [10.3 跳台阶.md](10.3%20跳台阶.md) -- [10.4 变态跳台阶.md](10.4%20变态跳台阶.md) -- [11. 旋转数组的最小数字.md](11.%20旋转数组的最小数字.md) -- [12. 矩阵中的路径.md](12.%20矩阵中的路径.md) -- [13. 机器人的运动范围.md](13.%20机器人的运动范围.md) -- [14. 剪绳子.md](14.%20剪绳子.md) -- [15. 二进制中 1 的个数.md](15.%20二进制中%201%20的个数.md) -- [16. 数值的整数次方.md](16.%20数值的整数次方.md) -- [17. 打印从 1 到最大的 n 位数.md](17.%20打印从%201%20到最大的%20n%20位数.md) -- [18.1 在 O(1) 时间内删除链表节点.md](18.1%20在%20O(1)%20时间内删除链表节点.md) -- [18.2 删除链表中重复的结点.md](18.2%20删除链表中重复的结点.md) -- [19. 正则表达式匹配.md](19.%20正则表达式匹配.md) -- [20. 表示数值的字符串.md](20.%20表示数值的字符串.md) -- [21. 调整数组顺序使奇数位于偶数前面.md](21.%20调整数组顺序使奇数位于偶数前面.md) -- [22. 链表中倒数第 K 个结点.md](22.%20链表中倒数第%20K%20个结点.md) -- [23. 链表中环的入口结点.md](23.%20链表中环的入口结点.md) -- [24. 反转链表.md](24.%20反转链表.md) -- [25. 合并两个排序的链表.md](25.%20合并两个排序的链表.md) -- [26. 树的子结构.md](26.%20树的子结构.md) -- [27. 二叉树的镜像.md](27.%20二叉树的镜像.md) -- [28. 对称的二叉树.md](28.%20对称的二叉树.md) -- [29. 顺时针打印矩阵.md](29.%20顺时针打印矩阵.md) -- [30. 包含 min 函数的栈.md](30.%20包含%20min%20函数的栈.md) -- [31. 栈的压入、弹出序列.md](31.%20栈的压入、弹出序列.md) -- [32.1 从上往下打印二叉树.md](32.1%20从上往下打印二叉树.md) -- [32.2 把二叉树打印成多行.md](32.2%20把二叉树打印成多行.md) -- [32.3 按之字形顺序打印二叉树.md](32.3%20按之字形顺序打印二叉树.md) -- [33. 二叉搜索树的后序遍历序列.md](33.%20二叉搜索树的后序遍历序列.md) -- [34. 二叉树中和为某一值的路径.md](34.%20二叉树中和为某一值的路径.md) -- [35. 复杂链表的复制.md](35.%20复杂链表的复制.md) -- [36. 二叉搜索树与双向链表.md](36.%20二叉搜索树与双向链表.md) -- [37. 序列化二叉树.md](37.%20序列化二叉树.md) -- [38. 字符串的排列.md](38.%20字符串的排列.md) -- [39. 数组中出现次数超过一半的数字.md](39.%20数组中出现次数超过一半的数字.md) -- [40. 最小的 K 个数.md](40.%20最小的%20K%20个数.md) -- [41.1 数据流中的中位数.md](41.1%20数据流中的中位数.md) -- [41.2 字符流中第一个不重复的字符.md](41.2%20字符流中第一个不重复的字符.md) -- [42. 连续子数组的最大和.md](42.%20连续子数组的最大和.md) -- [43. 从 1 到 n 整数中 1 出现的次数.md](43.%20从%201%20到%20n%20整数中%201%20出现的次数.md) -- [44. 数字序列中的某一位数字.md](44.%20数字序列中的某一位数字.md) -- [45. 把数组排成最小的数.md](45.%20把数组排成最小的数.md) -- [46. 把数字翻译成字符串.md](46.%20把数字翻译成字符串.md) -- [47. 礼物的最大价值.md](47.%20礼物的最大价值.md) -- [48. 最长不含重复字符的子字符串.md](48.%20最长不含重复字符的子字符串.md) -- [49. 丑数.md](49.%20丑数.md) -- [50. 第一个只出现一次的字符位置.md](50.%20第一个只出现一次的字符位置.md) -- [51. 数组中的逆序对.md](51.%20数组中的逆序对.md) -- [52. 两个链表的第一个公共结点.md](52.%20两个链表的第一个公共结点.md) -- [53. 数字在排序数组中出现的次数.md](53.%20数字在排序数组中出现的次数.md) -- [54. 二叉查找树的第 K 个结点.md](54.%20二叉查找树的第%20K%20个结点.md) -- [55.1 二叉树的深度.md](55.1%20二叉树的深度.md) -- [55.2 平衡二叉树.md](55.2%20平衡二叉树.md) -- [56. 数组中只出现一次的数字.md](56.%20数组中只出现一次的数字.md) -- [57.1 和为 S 的两个数字.md](57.1%20和为%20S%20的两个数字.md) -- [57.2 和为 S 的连续正数序列.md](57.2%20和为%20S%20的连续正数序列.md) -- [58.1 翻转单词顺序列.md](58.1%20翻转单词顺序列.md) -- [58.2 左旋转字符串.md](58.2%20左旋转字符串.md) -- [59. 滑动窗口的最大值.md](59.%20滑动窗口的最大值.md) -- [60. n 个骰子的点数.md](60.%20n%20个骰子的点数.md) -- [61. 扑克牌顺子.md](61.%20扑克牌顺子.md) -- [62. 圆圈中最后剩下的数.md](62.%20圆圈中最后剩下的数.md) -- [63. 股票的最大利润.md](63.%20股票的最大利润.md) -- [64. 求 1+2+3+...+n.md](64.%20求%201+2+3+...+n.md) -- [65. 不用加减乘除做加法.md](65.%20不用加减乘除做加法.md) -- [66. 构建乘积数组.md](66.%20构建乘积数组.md) -- [67. 把字符串转换成整数.md](67.%20把字符串转换成整数.md) -- [68. 树中两个节点的最低公共祖先.md](68.%20树中两个节点的最低公共祖先.md) +- [3. 数组中重复的数字](3.%20数组中重复的数字.md) +- [4. 二维数组中的查找](4.%20二维数组中的查找.md) +- [5. 替换空格](5.%20替换空格.md) +- [6. 从尾到头打印链表](6.%20从尾到头打印链表.md) +- [7. 重建二叉树](7.%20重建二叉树.md) +- [8. 二叉树的下一个结点](8.%20二叉树的下一个结点.md) +- [9. 用两个栈实现队列](9.%20用两个栈实现队列.md) +- [10.1 斐波那契数列](10.1%20斐波那契数列.md) +- [10.2 矩形覆盖](10.2%20矩形覆盖.md) +- [10.3 跳台阶](10.3%20跳台阶.md) +- [10.4 变态跳台阶](10.4%20变态跳台阶.md) +- [11. 旋转数组的最小数字](11.%20旋转数组的最小数字.md) +- [12. 矩阵中的路径](12.%20矩阵中的路径.md) +- [13. 机器人的运动范围](13.%20机器人的运动范围.md) +- [14. 剪绳子](14.%20剪绳子.md) +- [15. 二进制中 1 的个数](15.%20二进制中%201%20的个数.md) +- [16. 数值的整数次方](16.%20数值的整数次方.md) +- [17. 打印从 1 到最大的 n 位数](17.%20打印从%201%20到最大的%20n%20位数.md) +- [18.1 在 O(1) 时间内删除链表节点](18.1%20在%20O(1)%20时间内删除链表节点.md) +- [18.2 删除链表中重复的结点](18.2%20删除链表中重复的结点.md) +- [19. 正则表达式匹配](19.%20正则表达式匹配.md) +- [20. 表示数值的字符串](20.%20表示数值的字符串.md) +- [21. 调整数组顺序使奇数位于偶数前面](21.%20调整数组顺序使奇数位于偶数前面.md) +- [22. 链表中倒数第 K 个结点](22.%20链表中倒数第%20K%20个结点.md) +- [23. 链表中环的入口结点](23.%20链表中环的入口结点.md) +- [24. 反转链表](24.%20反转链表.md) +- [25. 合并两个排序的链表](25.%20合并两个排序的链表.md) +- [26. 树的子结构](26.%20树的子结构.md) +- [27. 二叉树的镜像](27.%20二叉树的镜像.md) +- [28. 对称的二叉树](28.%20对称的二叉树.md) +- [29. 顺时针打印矩阵](29.%20顺时针打印矩阵.md) +- [30. 包含 min 函数的栈](30.%20包含%20min%20函数的栈.md) +- [31. 栈的压入、弹出序列](31.%20栈的压入、弹出序列.md) +- [32.1 从上往下打印二叉树](32.1%20从上往下打印二叉树.md) +- [32.2 把二叉树打印成多行](32.2%20把二叉树打印成多行.md) +- [32.3 按之字形顺序打印二叉树](32.3%20按之字形顺序打印二叉树.md) +- [33. 二叉搜索树的后序遍历序列](33.%20二叉搜索树的后序遍历序列.md) +- [34. 二叉树中和为某一值的路径](34.%20二叉树中和为某一值的路径.md) +- [35. 复杂链表的复制](35.%20复杂链表的复制.md) +- [36. 二叉搜索树与双向链表](36.%20二叉搜索树与双向链表.md) +- [37. 序列化二叉树](37.%20序列化二叉树.md) +- [38. 字符串的排列](38.%20字符串的排列.md) +- [39. 数组中出现次数超过一半的数字](39.%20数组中出现次数超过一半的数字.md) +- [40. 最小的 K 个数](40.%20最小的%20K%20个数.md) +- [41.1 数据流中的中位数](41.1%20数据流中的中位数.md) +- [41.2 字符流中第一个不重复的字符](41.2%20字符流中第一个不重复的字符.md) +- [42. 连续子数组的最大和](42.%20连续子数组的最大和.md) +- [43. 从 1 到 n 整数中 1 出现的次数](43.%20从%201%20到%20n%20整数中%201%20出现的次数) +- [44. 数字序列中的某一位数字](44.%20数字序列中的某一位数字.md) +- [45. 把数组排成最小的数](45.%20把数组排成最小的数.md) +- [46. 把数字翻译成字符串](46.%20把数字翻译成字符串.md) +- [47. 礼物的最大价值](47.%20礼物的最大价值.md) +- [48. 最长不含重复字符的子字符串](48.%20最长不含重复字符的子字符串.md) +- [49. 丑数](49.%20丑数.md) +- [50. 第一个只出现一次的字符位置](50.%20第一个只出现一次的字符位置.md) +- [51. 数组中的逆序对](51.%20数组中的逆序对.md) +- [52. 两个链表的第一个公共结点](52.%20两个链表的第一个公共结点.md) +- [53. 数字在排序数组中出现的次数](53.%20数字在排序数组中出现的次数.md) +- [54. 二叉查找树的第 K 个结点](54.%20二叉查找树的第%20K%20个结点.md) +- [55.1 二叉树的深度](55.1%20二叉树的深度.md) +- [55.2 平衡二叉树](55.2%20平衡二叉树.md) +- [56. 数组中只出现一次的数字](56.%20数组中只出现一次的数字.md) +- [57.1 和为 S 的两个数字](57.1%20和为%20S%20的两个数字.md) +- [57.2 和为 S 的连续正数序列](57.2%20和为%20S%20的连续正数序列.md) +- [58.1 翻转单词顺序列](58.1%20翻转单词顺序列.md) +- [58.2 左旋转字符串](58.2%20左旋转字符串.md) +- [59. 滑动窗口的最大值](59.%20滑动窗口的最大值.md) +- [60. n 个骰子的点数](60.%20n%20个骰子的点数.md) +- [61. 扑克牌顺子](61.%20扑克牌顺子.md) +- [62. 圆圈中最后剩下的数](62.%20圆圈中最后剩下的数.md) +- [63. 股票的最大利润](63.%20股票的最大利润.md) +- [64. 求 1+2+3+...+n](64.%20求%201+2+3+...+n.md) +- [65. 不用加减乘除做加法](65.%20不用加减乘除做加法.md) +- [66. 构建乘积数组](66.%20构建乘积数组.md) +- [67. 把字符串转换成整数](67.%20把字符串转换成整数.md) +- [68. 树中两个节点的最低公共祖先](68.%20树中两个节点的最低公共祖先.md) # 参考文献 diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\2251.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\2251.md" index 31c4059166..11e35e73e6 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\2251.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - \347\233\256\345\275\2251.md" @@ -1,81 +1,81 @@ # 目录 -- [3. 数组中重复的数字.md](notes/3.%20数组中重复的数字.md) -- [4. 二维数组中的查找.md](notes/4.%20二维数组中的查找.md) -- [5. 替换空格.md](notes/5.%20替换空格.md) -- [6. 从尾到头打印链表.md](notes/6.%20从尾到头打印链表.md) -- [7. 重建二叉树.md](notes/7.%20重建二叉树.md) -- [8. 二叉树的下一个结点.md](notes/8.%20二叉树的下一个结点.md) -- [9. 用两个栈实现队列.md](notes/9.%20用两个栈实现队列.md) -- [10.1 斐波那契数列.md](notes/10.1%20斐波那契数列.md) -- [10.2 矩形覆盖.md](notes/10.2%20矩形覆盖.md) -- [10.3 跳台阶.md](notes/10.3%20跳台阶.md) -- [10.4 变态跳台阶.md](notes/10.4%20变态跳台阶.md) -- [11. 旋转数组的最小数字.md](notes/11.%20旋转数组的最小数字.md) -- [12. 矩阵中的路径.md](notes/12.%20矩阵中的路径.md) -- [13. 机器人的运动范围.md](notes/13.%20机器人的运动范围.md) -- [14. 剪绳子.md](notes/14.%20剪绳子.md) -- [15. 二进制中 1 的个数.md](notes/15.%20二进制中%201%20的个数.md) -- [16. 数值的整数次方.md](notes/16.%20数值的整数次方.md) -- [17. 打印从 1 到最大的 n 位数.md](notes/17.%20打印从%201%20到最大的%20n%20位数.md) -- [18.1 在 O(1) 时间内删除链表节点.md](notes/18.1%20在%20O(1)%20时间内删除链表节点.md) -- [18.2 删除链表中重复的结点.md](notes/18.2%20删除链表中重复的结点.md) -- [19. 正则表达式匹配.md](notes/19.%20正则表达式匹配.md) -- [20. 表示数值的字符串.md](notes/20.%20表示数值的字符串.md) -- [21. 调整数组顺序使奇数位于偶数前面.md](notes/21.%20调整数组顺序使奇数位于偶数前面.md) -- [22. 链表中倒数第 K 个结点.md](notes/22.%20链表中倒数第%20K%20个结点.md) -- [23. 链表中环的入口结点.md](notes/23.%20链表中环的入口结点.md) -- [24. 反转链表.md](notes/24.%20反转链表.md) -- [25. 合并两个排序的链表.md](notes/25.%20合并两个排序的链表.md) -- [26. 树的子结构.md](notes/26.%20树的子结构.md) -- [27. 二叉树的镜像.md](notes/27.%20二叉树的镜像.md) -- [28. 对称的二叉树.md](notes/28.%20对称的二叉树.md) -- [29. 顺时针打印矩阵.md](notes/29.%20顺时针打印矩阵.md) -- [30. 包含 min 函数的栈.md](notes/30.%20包含%20min%20函数的栈.md) -- [31. 栈的压入、弹出序列.md](notes/31.%20栈的压入、弹出序列.md) -- [32.1 从上往下打印二叉树.md](notes/32.1%20从上往下打印二叉树.md) -- [32.2 把二叉树打印成多行.md](notes/32.2%20把二叉树打印成多行.md) -- [32.3 按之字形顺序打印二叉树.md](notes/32.3%20按之字形顺序打印二叉树.md) -- [33. 二叉搜索树的后序遍历序列.md](notes/33.%20二叉搜索树的后序遍历序列.md) -- [34. 二叉树中和为某一值的路径.md](notes/34.%20二叉树中和为某一值的路径.md) -- [35. 复杂链表的复制.md](notes/35.%20复杂链表的复制.md) -- [36. 二叉搜索树与双向链表.md](notes/36.%20二叉搜索树与双向链表.md) -- [37. 序列化二叉树.md](notes/37.%20序列化二叉树.md) -- [38. 字符串的排列.md](notes/38.%20字符串的排列.md) -- [39. 数组中出现次数超过一半的数字.md](notes/39.%20数组中出现次数超过一半的数字.md) -- [40. 最小的 K 个数.md](notes/40.%20最小的%20K%20个数.md) -- [41.1 数据流中的中位数.md](notes/41.1%20数据流中的中位数.md) -- [41.2 字符流中第一个不重复的字符.md](notes/41.2%20字符流中第一个不重复的字符.md) -- [42. 连续子数组的最大和.md](notes/42.%20连续子数组的最大和.md) -- [43. 从 1 到 n 整数中 1 出现的次数.md](notes/43.%20从%201%20到%20n%20整数中%201%20出现的次数.md) -- [44. 数字序列中的某一位数字.md](notes/44.%20数字序列中的某一位数字.md) -- [45. 把数组排成最小的数.md](notes/45.%20把数组排成最小的数.md) -- [46. 把数字翻译成字符串.md](notes/46.%20把数字翻译成字符串.md) -- [47. 礼物的最大价值.md](notes/47.%20礼物的最大价值.md) -- [48. 最长不含重复字符的子字符串.md](notes/48.%20最长不含重复字符的子字符串.md) -- [49. 丑数.md](notes/49.%20丑数.md) -- [50. 第一个只出现一次的字符位置.md](notes/50.%20第一个只出现一次的字符位置.md) -- [51. 数组中的逆序对.md](notes/51.%20数组中的逆序对.md) -- [52. 两个链表的第一个公共结点.md](notes/52.%20两个链表的第一个公共结点.md) -- [53. 数字在排序数组中出现的次数.md](notes/53.%20数字在排序数组中出现的次数.md) -- [54. 二叉查找树的第 K 个结点.md](notes/54.%20二叉查找树的第%20K%20个结点.md) -- [55.1 二叉树的深度.md](notes/55.1%20二叉树的深度.md) -- [55.2 平衡二叉树.md](notes/55.2%20平衡二叉树.md) -- [56. 数组中只出现一次的数字.md](notes/56.%20数组中只出现一次的数字.md) -- [57.1 和为 S 的两个数字.md](notes/57.1%20和为%20S%20的两个数字.md) -- [57.2 和为 S 的连续正数序列.md](notes/57.2%20和为%20S%20的连续正数序列.md) -- [58.1 翻转单词顺序列.md](notes/58.1%20翻转单词顺序列.md) -- [58.2 左旋转字符串.md](notes/58.2%20左旋转字符串.md) -- [59. 滑动窗口的最大值.md](notes/59.%20滑动窗口的最大值.md) -- [60. n 个骰子的点数.md](notes/60.%20n%20个骰子的点数.md) -- [61. 扑克牌顺子.md](notes/61.%20扑克牌顺子.md) -- [62. 圆圈中最后剩下的数.md](notes/62.%20圆圈中最后剩下的数.md) -- [63. 股票的最大利润.md](notes/63.%20股票的最大利润.md) -- [64. 求 1+2+3+...+n.md](notes/64.%20求%201+2+3+...+n.md) -- [65. 不用加减乘除做加法.md](notes/65.%20不用加减乘除做加法.md) -- [66. 构建乘积数组.md](notes/66.%20构建乘积数组.md) -- [67. 把字符串转换成整数.md](notes/67.%20把字符串转换成整数.md) -- [68. 树中两个节点的最低公共祖先.md](notes/68.%20树中两个节点的最低公共祖先.md) +- [3. 数组中重复的数字](notes/3.%20数组中重复的数字.md) +- [4. 二维数组中的查找](notes/4.%20二维数组中的查找.md) +- [5. 替换空格](notes/5.%20替换空格.md) +- [6. 从尾到头打印链表](notes/6.%20从尾到头打印链表.md) +- [7. 重建二叉树](notes/7.%20重建二叉树.md) +- [8. 二叉树的下一个结点](notes/8.%20二叉树的下一个结点.md) +- [9. 用两个栈实现队列](notes/9.%20用两个栈实现队列.md) +- [10.1 斐波那契数列](notes/10.1%20斐波那契数列.md) +- [10.2 矩形覆盖](notes/10.2%20矩形覆盖.md) +- [10.3 跳台阶](notes/10.3%20跳台阶.md) +- [10.4 变态跳台阶](notes/10.4%20变态跳台阶.md) +- [11. 旋转数组的最小数字](notes/11.%20旋转数组的最小数字.md) +- [12. 矩阵中的路径](notes/12.%20矩阵中的路径.md) +- [13. 机器人的运动范围](notes/13.%20机器人的运动范围.md) +- [14. 剪绳子](notes/14.%20剪绳子.md) +- [15. 二进制中 1 的个数](notes/15.%20二进制中%201%20的个数.md) +- [16. 数值的整数次方](notes/16.%20数值的整数次方.md) +- [17. 打印从 1 到最大的 n 位数](notes/17.%20打印从%201%20到最大的%20n%20位数.md) +- [18.1 在 O(1) 时间内删除链表节点](notes/18.1%20在%20O(1)%20时间内删除链表节点.md) +- [18.2 删除链表中重复的结点](notes/18.2%20删除链表中重复的结点.md) +- [19. 正则表达式匹配](notes/19.%20正则表达式匹配.md) +- [20. 表示数值的字符串](notes/20.%20表示数值的字符串.md) +- [21. 调整数组顺序使奇数位于偶数前面](notes/21.%20调整数组顺序使奇数位于偶数前面.md) +- [22. 链表中倒数第 K 个结点](notes/22.%20链表中倒数第%20K%20个结点.md) +- [23. 链表中环的入口结点](notes/23.%20链表中环的入口结点.md) +- [24. 反转链表](notes/24.%20反转链表.md) +- [25. 合并两个排序的链表](notes/25.%20合并两个排序的链表.md) +- [26. 树的子结构](notes/26.%20树的子结构.md) +- [27. 二叉树的镜像](notes/27.%20二叉树的镜像.md) +- [28. 对称的二叉树](notes/28.%20对称的二叉树.md) +- [29. 顺时针打印矩阵](notes/29.%20顺时针打印矩阵.md) +- [30. 包含 min 函数的栈](notes/30.%20包含%20min%20函数的栈.md) +- [31. 栈的压入、弹出序列](notes/31.%20栈的压入、弹出序列.md) +- [32.1 从上往下打印二叉树](notes/32.1%20从上往下打印二叉树.md) +- [32.2 把二叉树打印成多行](notes/32.2%20把二叉树打印成多行.md) +- [32.3 按之字形顺序打印二叉树](notes/32.3%20按之字形顺序打印二叉树.md) +- [33. 二叉搜索树的后序遍历序列](notes/33.%20二叉搜索树的后序遍历序列.md) +- [34. 二叉树中和为某一值的路径](notes/34.%20二叉树中和为某一值的路径.md) +- [35. 复杂链表的复制](notes/35.%20复杂链表的复制.md) +- [36. 二叉搜索树与双向链表](notes/36.%20二叉搜索树与双向链表.md) +- [37. 序列化二叉树](notes/37.%20序列化二叉树.md) +- [38. 字符串的排列](notes/38.%20字符串的排列.md) +- [39. 数组中出现次数超过一半的数字](notes/39.%20数组中出现次数超过一半的数字.md) +- [40. 最小的 K 个数](notes/40.%20最小的%20K%20个数.md) +- [41.1 数据流中的中位数](notes/41.1%20数据流中的中位数.md) +- [41.2 字符流中第一个不重复的字符](notes/41.2%20字符流中第一个不重复的字符.md) +- [42. 连续子数组的最大和](notes/42.%20连续子数组的最大和.md) +- [43. 从 1 到 n 整数中 1 出现的次数](notes/43.%20从%201%20到%20n%20整数中%201%20出现的次数.md) +- [44. 数字序列中的某一位数字](notes/44.%20数字序列中的某一位数字.md) +- [45. 把数组排成最小的数](notes/45.%20把数组排成最小的数.md) +- [46. 把数字翻译成字符串](notes/46.%20把数字翻译成字符串.md) +- [47. 礼物的最大价值](notes/47.%20礼物的最大价值.md) +- [48. 最长不含重复字符的子字符串](notes/48.%20最长不含重复字符的子字符串.md) +- [49. 丑数](notes/49.%20丑数.md) +- [50. 第一个只出现一次的字符位置](notes/50.%20第一个只出现一次的字符位置.md) +- [51. 数组中的逆序对](notes/51.%20数组中的逆序对.md) +- [52. 两个链表的第一个公共结点](notes/52.%20两个链表的第一个公共结点.md) +- [53. 数字在排序数组中出现的次数](notes/53.%20数字在排序数组中出现的次数.md) +- [54. 二叉查找树的第 K 个结点](notes/54.%20二叉查找树的第%20K%20个结点.md) +- [55.1 二叉树的深度](notes/55.1%20二叉树的深度.md) +- [55.2 平衡二叉树](notes/55.2%20平衡二叉树.md) +- [56. 数组中只出现一次的数字](notes/56.%20数组中只出现一次的数字.md) +- [57.1 和为 S 的两个数字](notes/57.1%20和为%20S%20的两个数字.md) +- [57.2 和为 S 的连续正数序列](notes/57.2%20和为%20S%20的连续正数序列.md) +- [58.1 翻转单词顺序列](notes/58.1%20翻转单词顺序列.md) +- [58.2 左旋转字符串](notes/58.2%20左旋转字符串.md) +- [59. 滑动窗口的最大值](notes/59.%20滑动窗口的最大值.md) +- [60. n 个骰子的点数](notes/60.%20n%20个骰子的点数.md) +- [61. 扑克牌顺子](notes/61.%20扑克牌顺子.md) +- [62. 圆圈中最后剩下的数](notes/62.%20圆圈中最后剩下的数.md) +- [63. 股票的最大利润](notes/63.%20股票的最大利润.md) +- [64. 求 1+2+3+...+n](notes/64.%20求%201+2+3+...+n.md) +- [65. 不用加减乘除做加法](notes/65.%20不用加减乘除做加法.md) +- [66. 构建乘积数组](notes/66.%20构建乘积数组.md) +- [67. 把字符串转换成整数](notes/67.%20把字符串转换成整数.md) +- [68. 树中两个节点的最低公共祖先](notes/68.%20树中两个节点的最低公共祖先.md) # 参考文献 From 40efa01bd67d168088fab9b492a5a8fda58630d4 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sun, 1 Dec 2019 00:20:52 +0800 Subject: [PATCH 021/214] auto commit --- ...72\214\345\210\206\346\237\245\346\211\276.md" | 15 +++++++++++---- ...72\214\345\210\206\346\237\245\346\211\276.md" | 15 +++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" index b6039fb34d..c93b3a4b5b 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" @@ -278,12 +278,12 @@ Output: [-1,-1] 题目描述:给定一个有序数组 nums 和一个目标 target,要求找到 target 在 nums 中的第一个位置和最后一个位置。 - +可以用二分查找找出第一个位置和最后一个位置,但是寻找的方法有所不同,需要实现两个二分查找。我们将寻找 target 最后一个位置,转换成寻找 target+1 第一个位置,再往前移动一个位置。这样我们只需要实现一个二分查找代码即可。 ```java public int[] searchRange(int[] nums, int target) { - int first = binarySearch(nums, target); - int last = binarySearch(nums, target + 1) - 1; + int first = findFirst(nums, target); + int last = findFirst(nums, target + 1) - 1; if (first == nums.length || nums[first] != target) { return new int[]{-1, -1}; } else { @@ -291,7 +291,7 @@ public int[] searchRange(int[] nums, int target) { } } -private int binarySearch(int[] nums, int target) { +private int findFirst(int[] nums, int target) { int l = 0, h = nums.length; // 注意 h 的初始值 while (l < h) { int m = l + (h - l) / 2; @@ -305,6 +305,13 @@ private int binarySearch(int[] nums, int target) { } ``` +在寻找第一个位置的二分查找代码中,需要注意 h 的取值为 nums.length,而不是 nums.length - 1。先看以下示例: + +``` +nums = [2,2], target = 2 +``` + +如果 h 的取值为 nums.length - 1,那么 last = findFirst(nums, target + 1) - 1 = 1 - 1 = 0。这是因为 findLeft 只会返回 [0, nums.length - 1] 范围的值,对于 findFirst([2,2], 3) ,我们希望返回 3 插入 nums 中的位置,也就是数组最后一个位置再往后一个位置,即 nums.length。所以我们需要将 h 取值为 nums.length,从而使得 findFirst返回的区间更大,能够覆盖 target 大于 nums 最后一个元素的情况。 diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" "b/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" index b6039fb34d..c93b3a4b5b 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \344\272\214\345\210\206\346\237\245\346\211\276.md" @@ -278,12 +278,12 @@ Output: [-1,-1] 题目描述:给定一个有序数组 nums 和一个目标 target,要求找到 target 在 nums 中的第一个位置和最后一个位置。 - +可以用二分查找找出第一个位置和最后一个位置,但是寻找的方法有所不同,需要实现两个二分查找。我们将寻找 target 最后一个位置,转换成寻找 target+1 第一个位置,再往前移动一个位置。这样我们只需要实现一个二分查找代码即可。 ```java public int[] searchRange(int[] nums, int target) { - int first = binarySearch(nums, target); - int last = binarySearch(nums, target + 1) - 1; + int first = findFirst(nums, target); + int last = findFirst(nums, target + 1) - 1; if (first == nums.length || nums[first] != target) { return new int[]{-1, -1}; } else { @@ -291,7 +291,7 @@ public int[] searchRange(int[] nums, int target) { } } -private int binarySearch(int[] nums, int target) { +private int findFirst(int[] nums, int target) { int l = 0, h = nums.length; // 注意 h 的初始值 while (l < h) { int m = l + (h - l) / 2; @@ -305,6 +305,13 @@ private int binarySearch(int[] nums, int target) { } ``` +在寻找第一个位置的二分查找代码中,需要注意 h 的取值为 nums.length,而不是 nums.length - 1。先看以下示例: + +``` +nums = [2,2], target = 2 +``` + +如果 h 的取值为 nums.length - 1,那么 last = findFirst(nums, target + 1) - 1 = 1 - 1 = 0。这是因为 findLeft 只会返回 [0, nums.length - 1] 范围的值,对于 findFirst([2,2], 3) ,我们希望返回 3 插入 nums 中的位置,也就是数组最后一个位置再往后一个位置,即 nums.length。所以我们需要将 h 取值为 nums.length,从而使得 findFirst返回的区间更大,能够覆盖 target 大于 nums 最后一个元素的情况。 From 9df182e62eeb3e9ec3b1d8d95d7212f6888785dc Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Mon, 2 Dec 2019 01:32:08 +0800 Subject: [PATCH 022/214] auto commit --- docs/notes/Linux.md | 20 ++++++++++---------- notes/Linux.md | 20 ++++++++++---------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/notes/Linux.md b/docs/notes/Linux.md index 9e2c7eac5a..c7fb483095 100644 --- a/docs/notes/Linux.md +++ b/docs/notes/Linux.md @@ -95,7 +95,7 @@ man 是 manual 的缩写,将指令的具体信息显示出来。 ### 3. info -info 与 man 类似,但是 info 将文档分成一个个页面,每个页面可以进行跳转。 +info 与 man 类似,但是 info 将文档分成一个个页面,每个页面可以跳转。 ### 4. doc @@ -109,7 +109,7 @@ info 与 man 类似,但是 info 将文档分成一个个页面,每个页面 ### 2. sync -为了加快对磁盘文件的读写速度,位于内存中的文件数据不会立即同步到磁盘上,因此关机之前需要先进行 sync 同步操作。 +为了加快对磁盘文件的读写速度,位于内存中的文件数据不会立即同步到磁盘,因此关机之前需要先进行 sync 同步操作。 ### 3. shutdown @@ -118,7 +118,7 @@ info 与 man 类似,但是 info 将文档分成一个个页面,每个页面 -k : 不会关机,只是发送警告信息,通知所有在线的用户 -r : 将系统的服务停掉后就重新启动 -h : 将系统的服务停掉后就立即关机 --c : 取消已经在进行的 shutdown 指令内容 +-c : 取消已经在进行的 shutdown ``` ## PATH @@ -1027,10 +1027,10 @@ $ grep -n 'the' regular_express.txt 18:google is the best tools for search keyword ``` -因为 { 和 } 在 shell 是有特殊意义的,因此必须要使用转义字符进行转义。 +示例:正则表达式 a{m,n} 用来匹配字符 a m\~n 次,这里需要将 { 和 } 进行转移,因为它们在 shell 是有特殊意义的。 ```html -$ grep -n 'go\{2,5\}g' regular_express.txt +$ grep -n 'a\{2,5\}' regular_express.txt ``` ## printf @@ -1046,11 +1046,11 @@ $ printf '%10s %5i %5i %5i %8.2f \n' $(cat printf.txt) ## awk -是由 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 创造,awk 这个名字就是这三个创始人名字的首字母。 +是由 Alfred Aho,Peter Weinberger 和 Brian Kernighan 创造,awk 这个名字就是这三个创始人名字的首字母。 awk 每次处理一行,处理的最小单位是字段,每个字段的命名方式为:\$n,n 为字段号,从 1 开始,\$0 表示一整行。 -示例:取出最近五个登录用户的用户名和 IP +示例:取出最近五个登录用户的用户名和 IP。首先用 last -n 5 取出用最近五个登录用户的所有信息,可以看到用户名和 IP 分别在第 1 列和第 3 列,我们用 \$1 和 \$3 就能取出这两个字段,然后用 print 进行打印。 ```html $ last -n 5 @@ -1107,19 +1107,19 @@ dmtsai lines: 5 columns: 9 查看某个时间点的进程信息。 -示例一:查看自己的进程 +示例:查看自己的进程 ```sh # ps -l ``` -示例二:查看系统所有进程 +示例:查看系统所有进程 ```sh # ps aux ``` -示例三:查看特定的进程 +示例:查看特定的进程 ```sh # ps aux | grep threadx diff --git a/notes/Linux.md b/notes/Linux.md index 9e2c7eac5a..c7fb483095 100644 --- a/notes/Linux.md +++ b/notes/Linux.md @@ -95,7 +95,7 @@ man 是 manual 的缩写,将指令的具体信息显示出来。 ### 3. info -info 与 man 类似,但是 info 将文档分成一个个页面,每个页面可以进行跳转。 +info 与 man 类似,但是 info 将文档分成一个个页面,每个页面可以跳转。 ### 4. doc @@ -109,7 +109,7 @@ info 与 man 类似,但是 info 将文档分成一个个页面,每个页面 ### 2. sync -为了加快对磁盘文件的读写速度,位于内存中的文件数据不会立即同步到磁盘上,因此关机之前需要先进行 sync 同步操作。 +为了加快对磁盘文件的读写速度,位于内存中的文件数据不会立即同步到磁盘,因此关机之前需要先进行 sync 同步操作。 ### 3. shutdown @@ -118,7 +118,7 @@ info 与 man 类似,但是 info 将文档分成一个个页面,每个页面 -k : 不会关机,只是发送警告信息,通知所有在线的用户 -r : 将系统的服务停掉后就重新启动 -h : 将系统的服务停掉后就立即关机 --c : 取消已经在进行的 shutdown 指令内容 +-c : 取消已经在进行的 shutdown ``` ## PATH @@ -1027,10 +1027,10 @@ $ grep -n 'the' regular_express.txt 18:google is the best tools for search keyword ``` -因为 { 和 } 在 shell 是有特殊意义的,因此必须要使用转义字符进行转义。 +示例:正则表达式 a{m,n} 用来匹配字符 a m\~n 次,这里需要将 { 和 } 进行转移,因为它们在 shell 是有特殊意义的。 ```html -$ grep -n 'go\{2,5\}g' regular_express.txt +$ grep -n 'a\{2,5\}' regular_express.txt ``` ## printf @@ -1046,11 +1046,11 @@ $ printf '%10s %5i %5i %5i %8.2f \n' $(cat printf.txt) ## awk -是由 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 创造,awk 这个名字就是这三个创始人名字的首字母。 +是由 Alfred Aho,Peter Weinberger 和 Brian Kernighan 创造,awk 这个名字就是这三个创始人名字的首字母。 awk 每次处理一行,处理的最小单位是字段,每个字段的命名方式为:\$n,n 为字段号,从 1 开始,\$0 表示一整行。 -示例:取出最近五个登录用户的用户名和 IP +示例:取出最近五个登录用户的用户名和 IP。首先用 last -n 5 取出用最近五个登录用户的所有信息,可以看到用户名和 IP 分别在第 1 列和第 3 列,我们用 \$1 和 \$3 就能取出这两个字段,然后用 print 进行打印。 ```html $ last -n 5 @@ -1107,19 +1107,19 @@ dmtsai lines: 5 columns: 9 查看某个时间点的进程信息。 -示例一:查看自己的进程 +示例:查看自己的进程 ```sh # ps -l ``` -示例二:查看系统所有进程 +示例:查看系统所有进程 ```sh # ps aux ``` -示例三:查看特定的进程 +示例:查看特定的进程 ```sh # ps aux | grep threadx From 9aca94dcd335a4b5e461b5c212d87c24fb70e05a Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Tue, 3 Dec 2019 01:48:04 +0800 Subject: [PATCH 023/214] auto commit --- ...205\245\345\217\243\347\273\223\347\202\271.md" | 14 ++++++++++++-- ...205\245\345\217\243\347\273\223\347\202\271.md" | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git "a/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" "b/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" index 732c547e56..aea40f9a71 100644 --- "a/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" +++ "b/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" @@ -8,9 +8,19 @@ ## 解题思路 -使用双指针,一个指针 fast 每次移动两个节点,一个指针 slow 每次移动一个节点。因为存在环,所以两个指针必定相遇在环中的某个节点上。假设相遇点在下图的 z1 位置,此时 fast 移动的节点数为 x+2y+z,slow 为 x+y,由于 fast 速度比 slow 快一倍,因此 x+2y+z=2(x+y),得到 x=z。 +使用双指针,一个快指针 fast 每次移动两个节点,一个慢指针 slow 每次移动一个节点。因为存在环,所以两个指针必定相遇在环中的某个节点上。 -在相遇点,slow 要到环的入口点还需要移动 z 个节点,如果让 fast 重新从头开始移动,并且速度变为每次移动一个节点,那么它到环入口点还需要移动 x 个节点。在上面已经推导出 x=z,因此 fast 和 slow 将在环入口点相遇。 +假设环入口节点为 y1,相遇所在节点为 z1。 + +假设快指针 fast 在圈内绕了 N 圈,则总路径长度为 x+Ny+(N-1)z。z 为 (N-1) 倍是因为快慢指针最后已经在 z1 节点相遇了,后面就不需要再走了。 + +而慢指针 slow 总路径长度为 x+y。 + +因为快指针是慢指针的两倍,因此 x+Ny+(N-1)z = 2(x+y)。 + +我们要找的是环入口节点 y1,也可以看成寻找长度 x 的值,因此我们先将上面的等值分解为和 x 有关:x=(N-2)y+(N-1)z。 + +上面的等值没有很强的规律,但是我们可以发现 y+z 就是圆环的总长度,因此我们将上面的等式再分解:x=(N-2)(y+z)+z。这个等式左边是从起点x1 到环入口节点 y1 的长度,而右边是在圆环中走过 (N-2) 圈,再从相遇点 z1 再走过长度为 z 的长度。此时我们可以发现如果让两个指针同时从起点 x1 和相遇点 z1 开始,每次只走过一个距离,那么最后他们会在环入口节点相遇。

diff --git "a/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" "b/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" index 732c547e56..aea40f9a71 100644 --- "a/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" +++ "b/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" @@ -8,9 +8,19 @@ ## 解题思路 -使用双指针,一个指针 fast 每次移动两个节点,一个指针 slow 每次移动一个节点。因为存在环,所以两个指针必定相遇在环中的某个节点上。假设相遇点在下图的 z1 位置,此时 fast 移动的节点数为 x+2y+z,slow 为 x+y,由于 fast 速度比 slow 快一倍,因此 x+2y+z=2(x+y),得到 x=z。 +使用双指针,一个快指针 fast 每次移动两个节点,一个慢指针 slow 每次移动一个节点。因为存在环,所以两个指针必定相遇在环中的某个节点上。 -在相遇点,slow 要到环的入口点还需要移动 z 个节点,如果让 fast 重新从头开始移动,并且速度变为每次移动一个节点,那么它到环入口点还需要移动 x 个节点。在上面已经推导出 x=z,因此 fast 和 slow 将在环入口点相遇。 +假设环入口节点为 y1,相遇所在节点为 z1。 + +假设快指针 fast 在圈内绕了 N 圈,则总路径长度为 x+Ny+(N-1)z。z 为 (N-1) 倍是因为快慢指针最后已经在 z1 节点相遇了,后面就不需要再走了。 + +而慢指针 slow 总路径长度为 x+y。 + +因为快指针是慢指针的两倍,因此 x+Ny+(N-1)z = 2(x+y)。 + +我们要找的是环入口节点 y1,也可以看成寻找长度 x 的值,因此我们先将上面的等值分解为和 x 有关:x=(N-2)y+(N-1)z。 + +上面的等值没有很强的规律,但是我们可以发现 y+z 就是圆环的总长度,因此我们将上面的等式再分解:x=(N-2)(y+z)+z。这个等式左边是从起点x1 到环入口节点 y1 的长度,而右边是在圆环中走过 (N-2) 圈,再从相遇点 z1 再走过长度为 z 的长度。此时我们可以发现如果让两个指针同时从起点 x1 和相遇点 z1 开始,每次只走过一个距离,那么最后他们会在环入口节点相遇。

From 2c02b3472d691bbc48f9a919d91f5f4b63a65f91 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Tue, 3 Dec 2019 09:51:51 +0800 Subject: [PATCH 024/214] auto commit --- ...43\345\245\221\346\225\260\345\210\227.md" | 4 +- ...51\345\275\242\350\246\206\347\233\226.md" | 8 +-- ...3 \350\267\263\345\217\260\351\230\266.md" | 8 +-- ...01\350\267\263\345\217\260\351\230\266.md" | 2 +- ...00\345\260\217\346\225\260\345\255\227.md" | 4 +- ...55\347\232\204\350\267\257\345\276\204.md" | 4 +- ...64\346\225\260\346\254\241\346\226\271.md" | 2 +- ...76\350\241\250\350\212\202\347\202\271.md" | 4 +- ...15\347\232\204\347\273\223\347\202\271.md" | 2 +- ...66\346\225\260\345\211\215\351\235\242.md" | 2 +- ...K \344\270\252\347\273\223\347\202\271.md" | 2 +- ...45\345\217\243\347\273\223\347\202\271.md" | 2 +- ...17\347\232\204\351\223\276\350\241\250.md" | 2 +- ...04\345\255\220\347\273\223\346\236\204.md" | 2 +- ...21\347\232\204\351\225\234\345\203\217.md" | 2 +- ...04\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\347\237\251\351\230\265.md" | 2 +- ...15\347\232\204\346\225\260\345\255\227.md" | 2 +- ...60\344\272\214\345\217\211\346\240\221.md" | 2 +- ...15\345\216\206\345\272\217\345\210\227.md" | 2 +- ...74\347\232\204\350\267\257\345\276\204.md" | 2 +- ...50\347\232\204\345\244\215\345\210\266.md" | 8 +-- ...14\345\220\221\351\223\276\350\241\250.md" | 2 +- ...55\347\232\204\346\237\245\346\211\276.md" | 2 +- ...77\346\215\242\347\251\272\346\240\274.md" | 2 +- ...54\345\205\261\347\273\223\347\202\271.md" | 2 +- ...21\347\232\204\346\267\261\345\272\246.md" | 2 +- ...41\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\351\223\276\350\241\250.md" | 8 +-- ...20\347\232\204\347\202\271\346\225\260.md" | 2 +- ...13\347\211\214\351\241\272\345\255\220.md" | 2 +- ...00\345\244\247\345\210\251\346\266\246.md" | 2 +- ...30\347\247\257\346\225\260\347\273\204.md" | 2 +- ...54\345\205\261\347\245\226\345\205\210.md" | 4 +- ...72\344\272\214\345\217\211\346\240\221.md" | 4 +- ...00\344\270\252\347\273\223\347\202\271.md" | 6 +- ...36\347\216\260\351\230\237\345\210\227.md" | 2 +- docs/notes/Docker.md | 6 +- docs/notes/Git.md | 24 +++---- docs/notes/HTTP.md | 32 ++++----- docs/notes/Java IO.md | 16 ++--- "docs/notes/Java \345\237\272\347\241\200.md" | 4 +- "docs/notes/Java \345\256\271\345\231\250.md" | 16 ++--- "docs/notes/Java \345\271\266\345\217\221.md" | 38 +++++------ ...a \350\231\232\346\213\237\346\234\272.md" | 36 +++++----- ...50\346\200\201\350\247\204\345\210\222.md" | 22 +++--- ...- \345\217\214\346\214\207\351\222\210.md" | 10 +-- ...350\247\243 - \346\216\222\345\272\217.md" | 2 +- ...350\247\243 - \346\220\234\347\264\242.md" | 14 ++-- ...351\242\230\350\247\243 - \346\240\221.md" | 2 +- ...52\345\277\203\346\200\235\346\203\263.md" | 2 +- docs/notes/Linux.md | 34 +++++----- docs/notes/MySQL.md | 14 ++-- docs/notes/Redis.md | 26 +++---- docs/notes/Socket.md | 12 ++-- ...01\345\217\257\350\257\273\346\200\247.md" | 4 +- .../\345\210\206\345\270\203\345\274\217.md" | 42 ++++++------ ...Offer \351\242\230\350\247\243 - 10~19.md" | 38 +++++------ ...Offer \351\242\230\350\247\243 - 20~29.md" | 16 ++--- ...Offer \351\242\230\350\247\243 - 30~39.md" | 16 ++--- ...7 Offer \351\242\230\350\247\243 - 3~9.md" | 22 +++--- ...Offer \351\242\230\350\247\243 - 50~59.md" | 6 +- ...Offer \351\242\230\350\247\243 - 60~68.md" | 12 ++-- ...73\347\273\237\345\216\237\347\220\206.md" | 22 +++--- ...04\345\273\272\345\267\245\345\205\267.md" | 2 +- ...31\350\241\250\350\276\276\345\274\217.md" | 2 +- ...10\346\201\257\351\230\237\345\210\227.md" | 6 +- ...346\263\225 - \345\205\266\345\256\203.md" | 10 +-- ...- \345\271\266\346\237\245\351\233\206.md" | 10 +-- ...346\263\225 - \346\216\222\345\272\217.md" | 24 +++---- ...- \347\254\246\345\217\267\350\241\250.md" | 38 +++++------ "docs/notes/\347\274\223\345\255\230.md" | 6 +- ...05\345\255\230\347\256\241\347\220\206.md" | 14 ++-- ...347\273\237 - \346\246\202\350\277\260.md" | 4 +- ...347\273\237 - \346\255\273\351\224\201.md" | 12 ++-- ...76\345\244\207\347\256\241\347\220\206.md" | 6 +- ...33\347\250\213\347\256\241\347\220\206.md" | 16 ++--- ...347\273\237 - \351\223\276\346\216\245.md" | 6 +- ...- \344\274\240\350\276\223\345\261\202.md" | 16 ++--- ...- \345\272\224\347\224\250\345\261\202.md" | 12 ++-- ...347\273\234 - \346\246\202\350\277\260.md" | 20 +++--- ...- \347\211\251\347\220\206\345\261\202.md" | 2 +- ...- \347\275\221\347\273\234\345\261\202.md" | 28 ++++---- ...- \351\223\276\350\267\257\345\261\202.md" | 32 ++++----- ...45\274\217 - \345\215\225\344\276\213.md" | 2 +- ...- \344\270\255\344\273\213\350\200\205.md" | 6 +- ...345\274\217 - \344\272\253\345\205\203.md" | 2 +- ...345\274\217 - \344\273\243\347\220\206.md" | 2 +- ...37\345\236\213\346\250\241\345\274\217.md" | 2 +- ...345\274\217 - \345\221\275\344\273\244.md" | 4 +- ...- \345\244\207\345\277\230\345\275\225.md" | 2 +- ...345\274\217 - \345\244\226\350\247\202.md" | 2 +- ...45\345\216\202\346\226\271\346\263\225.md" | 2 +- ...75\350\261\241\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \346\241\245\346\216\245.md" | 2 +- ...41\346\235\277\346\226\271\346\263\225.md" | 4 +- ...345\274\217 - \347\212\266\346\200\201.md" | 4 +- ...- \347\224\237\346\210\220\345\231\250.md" | 2 +- ...- \347\251\272\345\257\271\350\261\241.md" | 2 +- ...345\274\217 - \347\255\226\347\225\245.md" | 2 +- ...00\345\215\225\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \347\273\204\345\220\210.md" | 2 +- ...345\274\217 - \350\243\205\351\245\260.md" | 4 +- ...- \350\247\202\345\257\237\350\200\205.md" | 6 +- ...- \350\247\243\351\207\212\345\231\250.md" | 2 +- ...- \350\256\277\351\227\256\350\200\205.md" | 2 +- ...- \350\264\243\344\273\273\351\223\276.md" | 2 +- ...- \350\277\255\344\273\243\345\231\250.md" | 2 +- ...- \351\200\202\351\205\215\345\231\250.md" | 4 +- ...76\350\256\241\346\250\241\345\274\217.md" | 68 +++++++++---------- "docs/notes/\351\233\206\347\276\244.md" | 24 +++---- ...71\350\261\241\346\200\235\346\203\263.md" | 12 ++-- 112 files changed, 520 insertions(+), 520 deletions(-) diff --git "a/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" "b/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" index 2d4326fe97..c73402d597 100644 --- "a/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" +++ "b/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" @@ -10,13 +10,13 @@ -

+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 diff --git "a/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" "b/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" index ecc7a64651..2bd056c1bb 100644 --- "a/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" +++ "b/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" @@ -8,23 +8,23 @@ 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { diff --git "a/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" "b/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" index bd89c6fd9b..3db7579d57 100644 --- "a/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" +++ "b/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" @@ -8,21 +8,21 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { diff --git "a/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" "b/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" index 0e779d0011..760ff568bf 100644 --- "a/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" +++ "b/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" @@ -8,7 +8,7 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 diff --git "a/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" "b/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" index ca34fed587..be40966933 100644 --- "a/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" +++ "b/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" @@ -6,13 +6,13 @@ 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 diff --git "a/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" "b/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" index 217f56967e..4363131950 100644 --- "a/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" +++ "b/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" @@ -8,13 +8,13 @@ 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 diff --git "a/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" "b/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" index 1cddc018a3..207b235f44 100644 --- "a/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" +++ "b/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" @@ -12,7 +12,7 @@ -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 diff --git "a/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" "b/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" index 8cd0a5eee6..f14a83f90f 100644 --- "a/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" +++ "b/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" @@ -4,11 +4,11 @@ ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 diff --git "a/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" "b/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" index 555a075436..b7ba929a4e 100644 --- "a/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" +++ "b/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题描述 diff --git "a/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" "b/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" index f6b913234b..7bfed6141e 100644 --- "a/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" +++ "b/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" @@ -6,7 +6,7 @@ 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 diff --git "a/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" "b/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" index 209dc0e98e..3a6226f9cb 100644 --- "a/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" +++ "b/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" @@ -6,7 +6,7 @@ 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { diff --git "a/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" "b/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" index aea40f9a71..ec5658947a 100644 --- "a/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" +++ "b/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" @@ -22,7 +22,7 @@ 上面的等值没有很强的规律,但是我们可以发现 y+z 就是圆环的总长度,因此我们将上面的等式再分解:x=(N-2)(y+z)+z。这个等式左边是从起点x1 到环入口节点 y1 的长度,而右边是在圆环中走过 (N-2) 圈,再从相遇点 z1 再走过长度为 z 的长度。此时我们可以发现如果让两个指针同时从起点 x1 和相遇点 z1 开始,每次只走过一个距离,那么最后他们会在环入口节点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { diff --git "a/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" "b/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" index b3b5b4df99..37b6e2f903 100644 --- "a/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" +++ "b/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" "b/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" index 7fd34ab3d1..e4772db926 100644 --- "a/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" +++ "b/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" "b/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" index abe1c39540..4d137e2cea 100644 --- "a/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" +++ "b/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" index 94d658aafb..80f49f571c 100644 --- "a/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" "b/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" index 1d5435d8a8..32636dd827 100644 --- "a/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" +++ "b/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" @@ -6,7 +6,7 @@ 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" "b/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" index d249e72b5c..4d0031d651 100644 --- "a/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" +++ "b/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" @@ -24,7 +24,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java diff --git "a/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" index 6c963b1591..4f9714e29d 100644 --- "a/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" @@ -8,7 +8,7 @@ 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 diff --git "a/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" "b/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" index 6741f31e22..bc9ca61cb6 100644 --- "a/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" +++ "b/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" @@ -8,7 +8,7 @@ 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 diff --git "a/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" "b/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" index 95629ac442..2304a2540a 100644 --- "a/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" +++ "b/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" @@ -8,7 +8,7 @@ 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 diff --git "a/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" "b/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" index 1f382d6b05..908c90c3bd 100644 --- "a/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" +++ "b/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" @@ -18,21 +18,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { diff --git "a/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" index 5ab2372adb..b68fba1417 100644 --- "a/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ "b/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" @@ -6,7 +6,7 @@ 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" "b/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" index ff28bd87f9..9f567a5b3d 100644 --- "a/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" +++ "b/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" @@ -28,7 +28,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { diff --git "a/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" "b/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" index efe83db60c..452652e964 100644 --- "a/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" +++ "b/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" @@ -27,7 +27,7 @@ Output: -

+

```java public String replaceSpace(StringBuffer str) { diff --git "a/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" "b/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" index 371e83419d..b7e0cbdc75 100644 --- "a/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" +++ "b/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" "b/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" index 0aeb411e27..8c49c2dc27 100644 --- "a/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" +++ "b/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" @@ -6,7 +6,7 @@ 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 diff --git "a/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" index d2cdf538f8..56f8797f86 100644 --- "a/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" @@ -6,7 +6,7 @@ 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" "b/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" index fb78ed03b9..d7bbb3b0d4 100644 --- "a/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" +++ "b/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" @@ -8,7 +8,7 @@ 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -39,13 +39,13 @@ node2.next = node3; node1.next = node2; ``` -

+

为了能将一个节点插入头部,我们引入了一个叫头结点的辅助节点,该节点不存储值,只是为了方便进行插入操作。不要将头结点与第一个节点混起来,第一个节点是链表中第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -72,7 +72,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { diff --git "a/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" "b/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" index d298cc9af6..aaa42b6642 100644 --- "a/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" +++ "b/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" @@ -8,7 +8,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 diff --git "a/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" "b/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" index 9fde275c1f..d71becc99e 100644 --- "a/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" +++ "b/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" @@ -8,7 +8,7 @@ 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 diff --git "a/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" "b/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" index 499319a5e5..a467388d97 100644 --- "a/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" +++ "b/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" @@ -8,7 +8,7 @@ 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 diff --git "a/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" "b/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" index 8317ca2a0d..4829a10f8c 100644 --- "a/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" +++ "b/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" @@ -8,7 +8,7 @@ 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 diff --git "a/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" index e77c9665f0..c31d43484a 100644 --- "a/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ "b/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" @@ -11,7 +11,7 @@ 在二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -35,7 +35,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" index b557ea0ba0..ff82f2aaa7 100644 --- "a/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" @@ -10,13 +10,13 @@ -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。然后分别对左右子树递归地求解。 -

+

```java // 缓存中序遍历数组每个值对应的索引 diff --git "a/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" "b/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" index 38d2641420..92bfe9a9bf 100644 --- "a/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" +++ "b/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" @@ -35,17 +35,17 @@ void traverse(TreeNode root) { } ``` -

+

① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { diff --git "a/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" "b/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" index 7d1f24ec38..bf9fd343ad 100644 --- "a/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" +++ "b/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" @@ -12,7 +12,7 @@ in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git a/docs/notes/Docker.md b/docs/notes/Docker.md index 7647d26c91..3df19303c2 100644 --- a/docs/notes/Docker.md +++ b/docs/notes/Docker.md @@ -14,13 +14,13 @@ Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。 -

+

# 二、与虚拟机的比较 虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。 -

+

## 启动速度 @@ -74,7 +74,7 @@ Docker 轻量级的特点使得它很适合用于部署、维护、组合微服 构建容器时,通过在镜像的基础上添加一个可写层(writable layer),用来保存着容器运行过程中的修改。 -

+

# 参考资料 diff --git a/docs/notes/Git.md b/docs/notes/Git.md index c0939994cc..b449764823 100644 --- a/docs/notes/Git.md +++ b/docs/notes/Git.md @@ -18,7 +18,7 @@ Git 属于分布式版本控制系统,而 SVN 属于集中式。 -

+

集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 @@ -40,45 +40,45 @@ Github 就是一个中心服务器。 Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 存储所有分支信息,使用一个 HEAD 指针指向当前分支。 -

+

- git add files 把文件的修改添加到暂存区 - git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了 - git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files - git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改 -

+

可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。 - git commit -a 直接把所有文件的修改添加到暂存区然后执行提交 - git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作 -

+

# 分支实现 使用指针将每个提交连接成一条时间线,HEAD 指针指向当前分支指针。 -

+

新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支,表示新分支成为当前分支。 -

+

每次提交只会让当前分支指针向前移动,而其它分支指针不会移动。 -

+

合并分支也只需要改变指针即可。 -

+

# 冲突 当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。 -

+

Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。 @@ -100,7 +100,7 @@ Creating a new branch is quick AND simple. $ git merge --no-ff -m "merge with no-ff" dev ``` -

+

# 分支管理策略 @@ -108,7 +108,7 @@ master 分支应该是非常稳定的,只用来发布新版本; 日常开发在开发分支 dev 上进行。 -

+

# 储藏(Stashing) @@ -148,7 +148,7 @@ $ ssh-keygen -t rsa -C "youremail@example.com" # Git 命令一览 -

+

比较详细的地址:http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf diff --git a/docs/notes/HTTP.md b/docs/notes/HTTP.md index 268f22519a..ac3d32f16a 100644 --- a/docs/notes/HTTP.md +++ b/docs/notes/HTTP.md @@ -62,17 +62,17 @@ URI 包含 URL 和 URN。 -

+

## 请求和响应报文 ### 1. 请求报文 -

+

### 2. 响应报文 -

+

# 二、HTTP 方法 @@ -159,7 +159,7 @@ DELETE /file.html HTTP/1.1 CONNECT www.example.com:443 HTTP/1.1 ``` -

+

## TRACE @@ -302,7 +302,7 @@ CONNECT www.example.com:443 HTTP/1.1 ## 连接管理 -

+

### 1. 短连接与长连接 @@ -631,11 +631,11 @@ HTTP/1.1 使用虚拟主机技术,使得一台服务器拥有多个域名, - 用户察觉得到正向代理的存在。 -

+

- 而反向代理一般位于内部网络中,用户察觉不到。 -

+

### 2. 网关 @@ -657,7 +657,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) 通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。 -

+

## 加密 @@ -668,7 +668,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:运算速度快; - 缺点:无法安全地将密钥传输给通信方。 -

+

### 2.非对称密钥加密 @@ -681,13 +681,13 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:可以更安全地将公开密钥传输给通信发送方; - 缺点:运算速度慢。 -

+

### 3. HTTPS 采用的加密方式 HTTPS 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率。(下图中的 Session Key 就是对称密钥) -

+

## 认证 @@ -699,7 +699,7 @@ HTTPS 采用混合的加密机制,使用非对称密钥加密用于传输对 进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。 -

+

## 完整性保护 @@ -728,7 +728,7 @@ HTTP/1.x 实现简单是以牺牲性能为代价的: HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式的。 -

+

在通信过程中,只会有一个 TCP 连接存在,它承载了任意数量的双向数据流(Stream)。 @@ -736,13 +736,13 @@ HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式 - 消息(Message)是与逻辑请求或响应对应的完整的一系列帧。 - 帧(Frame)是最小的通信单位,来自不同数据流的帧可以交错发送,然后再根据每个帧头的数据流标识符重新组装。 -

+

## 服务端推送 HTTP/2.0 在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了。例如客户端请求 page.html 页面,服务端就把 script.js 和 style.css 等与之相关的资源一起发给客户端。 -

+

## 首部压缩 @@ -752,7 +752,7 @@ HTTP/2.0 要求客户端和服务器同时维护和更新一个包含之前见 不仅如此,HTTP/2.0 也使用 Huffman 编码对首部字段进行压缩。 -

+

# 八、HTTP/1.1 新特性 diff --git a/docs/notes/Java IO.md b/docs/notes/Java IO.md index 41b4ed3ec5..4af023377e 100644 --- a/docs/notes/Java IO.md +++ b/docs/notes/Java IO.md @@ -97,7 +97,7 @@ Java I/O 使用了装饰者模式来实现。以 InputStream 为例, - FileInputStream 是 InputStream 的子类,属于具体组件,提供了字节流的输入操作; - FilterInputStream 属于抽象装饰者,装饰者用于装饰组件,为组件提供额外的功能。例如 BufferedInputStream 为 FileInputStream 提供缓存的功能。 -

+

实例化一个具有缓存功能的字节流对象时,只需要在 FileInputStream 对象上再套一层 BufferedInputStream 对象即可。 @@ -277,7 +277,7 @@ public static void main(String[] args) throws IOException { - Socket:客户端类 - 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。 -

+

## Datagram @@ -339,23 +339,23 @@ I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重 ① 新建一个大小为 8 个字节的缓冲区,此时 position 为 0,而 limit = capacity = 8。capacity 变量不会改变,下面的讨论会忽略它。 -

+

② 从输入通道中读取 5 个字节数据写入缓冲区中,此时 position 为 5,limit 保持不变。 -

+

③ 在将缓冲区的数据写到输出通道之前,需要先调用 flip() 方法,这个方法将 limit 设置为当前 position,并将 position 设置为 0。 -

+

④ 从缓冲区中取 4 个字节到输出缓冲中,此时 position 设为 4。 -

+

⑤ 最后需要调用 clear() 方法来清空缓冲区,此时 position 和 limit 都被设置为最初位置。 -

+

## 文件 NIO 实例 @@ -413,7 +413,7 @@ NIO 实现了 IO 多路复用中的 Reactor 模型,一个线程 Thread 使用 应该注意的是,只有套接字 Channel 才能配置为非阻塞,而 FileChannel 不能,为 FileChannel 配置非阻塞也没有意义。 -

+

### 1. 创建选择器 diff --git "a/docs/notes/Java \345\237\272\347\241\200.md" "b/docs/notes/Java \345\237\272\347\241\200.md" index c504623430..d0d43b3b5e 100644 --- "a/docs/notes/Java \345\237\272\347\241\200.md" +++ "b/docs/notes/Java \345\237\272\347\241\200.md" @@ -193,7 +193,7 @@ value 数组被声明为 final,这意味着 value 数组初始化之后就不 如果一个 String 对象已经被创建过了,那么就会从 String Pool 中取得引用。只有 String 是不可变的,才可能使用 String Pool。 -

+

**3. 安全性** @@ -1356,7 +1356,7 @@ Throwable 可以用来表示任何可以作为异常抛出的类,分为两种 - **受检异常** :需要用 try...catch... 语句捕获并进行处理,并且可以从异常中恢复; - **非受检异常** :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序崩溃并且无法恢复。 -

+

- [Java 入门之异常处理](https://www.tianmaying.com/tutorial/Java-Exception) - [Java 异常的面试问题及答案 -Part 1](http://www.importnew.com/7383.html) diff --git "a/docs/notes/Java \345\256\271\345\231\250.md" "b/docs/notes/Java \345\256\271\345\231\250.md" index 50b21fbcc2..23537532cb 100644 --- "a/docs/notes/Java \345\256\271\345\231\250.md" +++ "b/docs/notes/Java \345\256\271\345\231\250.md" @@ -24,7 +24,7 @@ ## Collection -

+

### 1. Set @@ -50,7 +50,7 @@ ## Map -

+

- TreeMap:基于红黑树实现。 @@ -65,7 +65,7 @@ ## 迭代器模式 -

+

Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。 @@ -126,7 +126,7 @@ public class ArrayList extends AbstractList private static final int DEFAULT_CAPACITY = 10; ``` -

+

### 2. 扩容 @@ -430,7 +430,7 @@ transient Node first; transient Node last; ``` -

+

### 2. 与 ArrayList 的比较 @@ -452,7 +452,7 @@ transient Entry[] table; Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶取模运算结果相同的 Entry。 -

+

```java static class Entry implements Map.Entry { @@ -528,7 +528,7 @@ map.put("K3", "V3"); - 计算键值对所在的桶; - 在链表上顺序查找,时间复杂度显然和链表的长度成正比。 -

+

### 3. put 操作 @@ -864,7 +864,7 @@ final Segment[] segments; static final int DEFAULT_CONCURRENCY_LEVEL = 16; ``` -

+

### 2. size 操作 diff --git "a/docs/notes/Java \345\271\266\345\217\221.md" "b/docs/notes/Java \345\271\266\345\217\221.md" index ee8a6fd5b9..dc7e314dc9 100644 --- "a/docs/notes/Java \345\271\266\345\217\221.md" +++ "b/docs/notes/Java \345\271\266\345\217\221.md" @@ -61,7 +61,7 @@ # 一、线程状态转换 -

+

## 新建(New) @@ -736,7 +736,7 @@ java.util.concurrent(J.U.C)大大提高了并发性能,AQS 被认为是 J. 维护了一个计数器 cnt,每次调用 countDown() 方法会让计数器的值减 1,减到 0 的时候,那些因为调用 await() 方法而在等待的线程就会被唤醒。 -

+

```java public class CountdownLatchExample { @@ -785,7 +785,7 @@ public CyclicBarrier(int parties) { } ``` -

+

```java public class CyclicBarrierExample { @@ -1022,7 +1022,7 @@ public class ForkJoinPool extends AbstractExecutorService ForkJoinPool 实现了工作窃取算法来提高 CPU 的利用率。每个线程都维护了一个双端队列,用来存储需要执行的任务。工作窃取算法允许空闲的线程从其它线程的双端队列中窃取一个任务来执行。窃取的任务必须是最晚的任务,避免和队列所属线程发生竞争。例如下图中,Thread2 从 Thread1 的队列中拿出最晚的 Task1 任务,Thread1 会拿出 Task2 来执行,这样就避免发生竞争。但是如果队列中只有一个任务时还是会发生竞争。 -

+

# 九、线程不安全示例 @@ -1077,19 +1077,19 @@ Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异, 加入高速缓存带来了一个新的问题:缓存一致性。如果多个缓存共享同一块主内存区域,那么多个缓存的数据可能会不一致,需要一些协议来解决这个问题。 -

+

所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存或者寄存器中,保存了该线程使用的变量的主内存副本拷贝。 线程只能直接操作工作内存中的变量,不同线程之间的变量值传递需要通过主内存来完成。 -

+

## 内存间交互操作 Java 内存模型定义了 8 个操作来完成主内存和工作内存的交互操作。 -

+

- read:把一个变量的值从主内存传输到工作内存中 - load:在 read 之后执行,把 read 得到的值放入工作内存的变量副本中 @@ -1112,11 +1112,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 重写之前线程不安全的代码之后得到以下线程安全实现: @@ -1224,7 +1224,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 在一个线程内,在程序前面的操作先行发生于后面的操作。 -

+

### 2. 管程锁定规则 @@ -1232,7 +1232,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 一个 unlock 操作先行发生于后面对同一个锁的 lock 操作。 -

+

### 3. volatile 变量规则 @@ -1240,7 +1240,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作。 -

+

### 4. 线程启动规则 @@ -1248,7 +1248,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 Thread 对象的 start() 方法调用先行发生于此线程的每一个动作。 -

+

### 5. 线程加入规则 @@ -1256,7 +1256,7 @@ Thread 对象的 start() 方法调用先行发生于此线程的每一个动作 Thread 对象的结束先行发生于 join() 方法返回。 -

+

### 6. 线程中断规则 @@ -1474,7 +1474,7 @@ public class ThreadLocalExample1 { 它所对应的底层结构图为: -

+

每个 Thread 都有一个 ThreadLocal.ThreadLocalMap 对象。 @@ -1577,17 +1577,17 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 以下是 HotSpot 虚拟机对象头的内存布局,这些数据被称为 Mark Word。其中 tag bits 对应了五个状态,这些状态在右侧的 state 表格中给出。除了 marked for gc 状态,其它四个状态已经在前面介绍过了。 -

+

下图左侧是一个线程的虚拟机栈,其中有一部分称为 Lock Record 的区域,这是在轻量级锁运行过程创建的,用于存放锁对象的 Mark Word。而右侧就是一个锁对象,包含了 Mark Word 和其它信息。 -

+

轻量级锁是相对于传统的重量级锁而言,它使用 CAS 操作来避免重量级锁使用互斥量的开销。对于绝大部分的锁,在整个同步周期内都是不存在竞争的,因此也就不需要都使用互斥量进行同步,可以先采用 CAS 操作进行同步,如果 CAS 失败了再改用互斥量进行同步。 当尝试获取一个锁对象时,如果锁对象标记为 0 01,说明锁对象的锁未锁定(unlocked)状态。此时虚拟机在当前线程的虚拟机栈中创建 Lock Record,然后使用 CAS 操作将对象的 Mark Word 更新为 Lock Record 指针。如果 CAS 操作成功了,那么线程就获取了该对象上的锁,并且对象的 Mark Word 的锁标记变为 00,表示该对象处于轻量级锁状态。 -

+

如果 CAS 操作失败了,虚拟机首先会检查对象的 Mark Word 是否指向当前线程的虚拟机栈,如果是的话说明当前线程已经拥有了这个锁对象,那就可以直接进入同步块继续执行,否则说明这个锁对象已经被其他线程线程抢占了。如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁。 @@ -1599,7 +1599,7 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 当有另外一个线程去尝试获取这个锁对象时,偏向状态就宣告结束,此时撤销偏向(Revoke Bias)后恢复到未锁定状态或者轻量级锁状态。 -

+

# 十三、多线程开发良好的实践 diff --git "a/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" "b/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" index 1a6e0cff26..e2a2bff1b3 100644 --- "a/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" +++ "b/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" @@ -32,7 +32,7 @@ # 一、运行时数据区域 -

+

## 程序计数器 @@ -42,7 +42,7 @@ 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 -

+

可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小,在 JDK 1.4 中默认为 256K,而在 JDK 1.5+ 默认为 1M: @@ -61,7 +61,7 @@ java -Xss2M HackTheJava 本地方法一般是用其它语言(C、C++ 或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序,对待这些方法需要特别处理。 -

+

## 堆 @@ -146,7 +146,7 @@ Java 虚拟机使用该算法来判断对象是否可被回收,GC Roots 一般 - 方法区中类静态属性引用的对象 - 方法区中的常量引用的对象 -

+

### 3. 方法区的回收 @@ -227,7 +227,7 @@ obj = null; ### 1. 标记 - 清除 -

+

在标记阶段,程序会检查每个对象是否为活动对象,如果是活动对象,则程序会在对象头部打上标记。 @@ -242,7 +242,7 @@ obj = null; ### 2. 标记 - 整理 -

+

让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。 @@ -256,7 +256,7 @@ obj = null; ### 3. 复制 -

+

将内存划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了就将还存活的对象复制到另一块上面,然后再把使用过的内存空间进行一次清理。 @@ -277,7 +277,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ## 垃圾收集器 -

+

以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 @@ -286,7 +286,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ### 1. Serial 收集器 -

+

Serial 翻译为串行,也就是说它以串行的方式执行。 @@ -298,7 +298,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 2. ParNew 收集器 -

+

它是 Serial 收集器的多线程版本。 @@ -318,7 +318,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 4. Serial Old 收集器 -

+

是 Serial 收集器的老年代版本,也是给 Client 场景下的虚拟机使用。如果用在 Server 场景下,它有两大用途: @@ -327,7 +327,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 5. Parallel Old 收集器 -

+

是 Parallel Scavenge 收集器的老年代版本。 @@ -335,7 +335,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 6. CMS 收集器 -

+

CMS(Concurrent Mark Sweep),Mark Sweep 指的是标记 - 清除算法。 @@ -360,17 +360,17 @@ G1(Garbage-First),它是一款面向服务端应用的垃圾收集器, 堆被分为新生代和老年代,其它收集器进行收集的范围都是整个新生代或者老年代,而 G1 可以直接对新生代和老年代一起回收。 -

+

G1 把堆划分成多个大小相等的独立区域(Region),新生代和老年代不再物理隔离。 -

+

通过引入 Region 的概念,从而将原来的一整块内存空间划分成多个的小空间,使得每个小空间可以单独进行垃圾回收。这种划分方法带来了很大的灵活性,使得可预测的停顿时间模型成为可能。通过记录每个 Region 垃圾回收时间以及回收所获得的空间(这两个值是通过过去回收的经验获得),并维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的 Region。 每个 Region 都有一个 Remembered Set,用来记录该 Region 对象的引用对象所在的 Region。通过使用 Remembered Set,在做可达性分析的时候就可以避免全堆扫描。 -

+

如果不计算维护 Remembered Set 的操作,G1 收集器的运作大致可划分为以下几个步骤: @@ -458,7 +458,7 @@ G1 把堆划分成多个大小相等的独立区域(Region),新生代和 ## 类的生命周期 -

+

包括以下 7 个阶段: @@ -628,7 +628,7 @@ System.out.println(ConstClass.HELLOWORLD); 下图展示了类加载器之间的层次关系,称为双亲委派模型(Parents Delegation Model)。该模型要求除了顶层的启动类加载器外,其它的类加载器都要有自己的父类加载器。这里的父子关系一般通过组合关系(Composition)来实现,而不是继承关系(Inheritance)。 -

+

### 1. 工作过程 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index 305174beb3..eb3ce48b4a 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -61,7 +61,7 @@ -

+

考虑到 dp[i] 只与 dp[i - 1] 和 dp[i - 2] 有关,因此可以只用两个变量来存储 dp[i - 1] 和 dp[i - 2],使得原来的 O(N) 空间复杂度优化为 O(1) 复杂度。 @@ -94,7 +94,7 @@ public int climbStairs(int n) { -

+

```java public int rob(int[] nums) { @@ -150,7 +150,7 @@ private int rob(int[] nums, int first, int last) { -

+

## 5. 母牛生产 @@ -162,7 +162,7 @@ private int rob(int[] nums, int first, int last) { -

+

# 矩阵路径 @@ -212,7 +212,7 @@ public int minPathSum(int[][] grid) { 题目描述:统计从矩阵左上角到右下角的路径总数,每次只能向右或者向下移动。 -

+

```java public int uniquePaths(int m, int n) { @@ -443,7 +443,7 @@ public int numDecodings(String s) { -

+

对于一个长度为 N 的序列,最长递增子序列并不一定会以 SN 为结尾,因此 dp[N] 不是序列的最长递增子序列的长度,需要遍历 dp 数组找出最大值才是所要的结果,max{ dp[i] | 1 <= i <= N} 即为所求。 @@ -616,7 +616,7 @@ public int wiggleMaxLength(int[] nums) { -

+

对于长度为 N 的序列 S1 和长度为 M 的序列 S2,dp[N][M] 就是序列 S1 和序列 S2 的最长公共子序列长度。 @@ -662,7 +662,7 @@ public int wiggleMaxLength(int[] nums) { -

+

```java // W 为背包总体积 @@ -691,7 +691,7 @@ public int knapsack(int W, int N, int[] weights, int[] values) { -

+

因为 dp[j-w] 表示 dp[i-1][j-w],因此不能先求 dp[i][j-w],防止将 dp[i-1][j-w] 覆盖。也就是说要先计算 dp[i][j] 再计算 dp[i][j-w],在程序实现时需要按倒序来循环求解。 @@ -1055,7 +1055,7 @@ public int combinationSum4(int[] nums, int target) { 题目描述:交易之后需要有一天的冷却时间。 -

+

```java public int maxProfit(int[] prices) { @@ -1098,7 +1098,7 @@ The total profit is ((8 - 1) - 2) + ((9 - 4) - 2) = 8. 题目描述:每交易一次,都要支付一定的费用。 -

+

```java public int maxProfit(int[] prices, int fee) { diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" index b24ab780f6..5db6895dec 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" @@ -32,7 +32,7 @@ Output: index1=1, index2=2 数组中的元素最多遍历一次,时间复杂度为 O(N)。只使用了两个额外变量,空间复杂度为 O(1)。 -

+

```java public int[] twoSum(int[] numbers, int target) { @@ -102,7 +102,7 @@ Explanation: 1 * 1 + 2 * 2 = 5 Given s = "leetcode", return "leotcede". ``` -

+

使用双指针,一个指针从头向尾遍历,一个指针从尾到头遍历,当两个指针都遍历到元音字符时,交换这两个元音字符。 @@ -111,7 +111,7 @@ Given s = "leetcode", return "leotcede". - 时间复杂度为 O(N):只需要遍历所有元素一次 - 空间复杂度 O(1):只需要使用两个额外变量 -

+

```java private final static HashSet vowels = new HashSet<>( @@ -155,7 +155,7 @@ Explanation: You could delete the character 'c'. 使用双指针可以很容易判断一个字符串是否是回文字符串:令一个指针从左到右遍历,一个指针从右到左遍历,这两个指针同时移动一个位置,每次都判断两个指针指向的字符是否相同,如果都相同,字符串才是具有左右对称性质的回文字符串。 -

+

本题的关键是处理删除一个字符。在使用双指针遍历字符串时,如果出现两个指针指向的字符不相等的情况,我们就试着删除一个字符,再判断删除完之后的字符串是否是回文字符串。 @@ -163,7 +163,7 @@ Explanation: You could delete the character 'c'. 在试着删除字符时,我们既可以删除左指针指向的字符,也可以删除右指针指向的字符。 -

+

```java public boolean validPalindrome(String s) { diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" index 09fdc70d43..b5155262c5 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" @@ -200,7 +200,7 @@ public String frequencySort(String s) { 有三种颜色的球,算法的目标是将这三种球按颜色顺序正确地排列。它其实是三向切分快速排序的一种变种,在三向切分快速排序中,每次切分都将数组分成三个区间:小于切分元素、等于切分元素、大于切分元素,而该算法是将数组分成三个区间:等于红色、等于白色、等于蓝色。 -

+

## 1. 按颜色进行排序 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" index 9f14efbd0c..6f3735d9cd 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" @@ -32,7 +32,7 @@ # BFS -

+

广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 @@ -269,7 +269,7 @@ private int getShortestPath(List[] graphic, int start, int end) { # DFS -

+

广度优先搜索一层一层遍历,每一层得到的所有新节点,要用队列存储起来以备下一层遍历的时候再遍历。 @@ -591,7 +591,7 @@ Backtracking(回溯)属于 DFS。 [Leetcode](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) / [力扣](https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/description/) -

+

```html Input:Digit string "23" @@ -1194,7 +1194,7 @@ private boolean isPalindrome(String s, int begin, int end) { [Leetcode](https://leetcode.com/problems/sudoku-solver/description/) / [力扣](https://leetcode-cn.com/problems/sudoku-solver/description/) -

+

```java private boolean[][] rowsUsed = new boolean[9][10]; @@ -1253,7 +1253,7 @@ private int cubeNum(int i, int j) { [Leetcode](https://leetcode.com/problems/n-queens/description/) / [力扣](https://leetcode-cn.com/problems/n-queens/description/) -

+

在 n\*n 的矩阵中摆放 n 个皇后,并且每个皇后不能在同一行,同一列,同一对角线上,求所有的 n 皇后的解。 @@ -1261,12 +1261,12 @@ private int cubeNum(int i, int j) { 45 度对角线标记数组的长度为 2 \* n - 1,通过下图可以明确 (r, c) 的位置所在的数组下标为 r + c。 -

+

135 度对角线标记数组的长度也是 2 \* n - 1,(r, c) 的位置所在的数组下标为 n - 1 - (r - c)。 -

+

```java private List> solutions; diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" index e21daeeabb..7083450342 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" @@ -1045,7 +1045,7 @@ private void inOrder(TreeNode node, List nums) { # Trie -

+

Trie,又称前缀树或字典树,用于判断字符串是否存在或者是否具有某种字符串前缀。 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" index f75bddc980..9a9a20fd99 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" @@ -35,7 +35,7 @@ Output: 2 证明:假设在某次选择中,贪心策略选择给当前满足度最小的孩子分配第 m 个饼干,第 m 个饼干为可以满足该孩子的最小饼干。假设存在一种最优策略,可以给该孩子分配第 n 个饼干,并且 m < n。我们可以发现,经过这一轮分配,贪心策略分配后剩下的饼干一定有一个比最优策略来得大。因此在后续的分配中,贪心策略一定能满足更多的孩子。也就是说不存在比贪心策略更优的策略,即贪心策略就是最优策略。 -

+

```java public int findContentChildren(int[] grid, int[] size) { diff --git a/docs/notes/Linux.md b/docs/notes/Linux.md index c7fb483095..106b347d6d 100644 --- a/docs/notes/Linux.md +++ b/docs/notes/Linux.md @@ -155,7 +155,7 @@ Linux 发行版是 Linux 内核及各种应用软件的集成版本。 - 编辑模式(Insert mode):按下 "i" 等按键之后进入,可以对文本进行编辑; - 指令列模式(Bottom-line mode):按下 ":" 按键之后进入,用于保存退出等操作。 -

+

在指令列模式下,有以下命令用于离开或者保存文件。 @@ -189,25 +189,25 @@ GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操 IDE(ATA)全称 Advanced Technology Attachment,接口速度最大为 133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。 -

+

### 2. SATA SATA 全称 Serial ATA,也就是使用串口的 ATA 接口,抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能。SATA-II 的接口速度为 300MiB/s,而 SATA-III 标准可达到 600MiB/s 的传输速度。SATA 的数据线也比 ATA 的细得多,有利于机箱内的空气流通,整理线材也比较方便。 -

+

### 3. SCSI SCSI 全称是 Small Computer System Interface(小型机系统接口),SCSI 硬盘广为工作站以及个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速 15000rpm 的高转速,且传输时 CPU 占用率较低,但是单价也比相同容量的 ATA 及 SATA 硬盘更加昂贵。 -

+

### 4. SAS SAS(Serial Attached SCSI)是新一代的 SCSI 技术,和 SATA 硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s。此外也通过缩小连接线改善系统内部空间等。 -

+

## 磁盘的文件名 @@ -242,7 +242,7 @@ GPT 没有扩展分区概念,都是主分区,每个 LBA 可以分 4 个分 MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB = 8 ZB。 -

+

## 开机检测程序 @@ -250,7 +250,7 @@ MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB BIOS(Basic Input/Output System,基本输入输出系统),它是一个固件(嵌入在硬件中的软件),BIOS 程序存放在断电后内容不会丢失的只读内存中。 -

+

BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可以开机的磁盘,并读取磁盘第一个扇区的主要开机记录(MBR),由主要开机记录(MBR)执行其中的开机管理程序,这个开机管理程序会加载操作系统的核心文件。 @@ -258,7 +258,7 @@ BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可 下图中,第一扇区的主要开机记录(MBR)中的开机管理程序提供了两个选单:M1、M2,M1 指向了 Windows 操作系统,而 M2 指向其它分区的启动扇区,里面包含了另外一个开机管理程序,提供了一个指向 Linux 的选单。 -

+

安装多重引导,最好先安装 Windows 再安装 Linux。因为安装 Windows 时会覆盖掉主要开机记录(MBR),而 Linux 可以选择将开机管理程序安装在主要开机记录(MBR)或者其它分区的启动扇区,并且可以设置开机管理程序的选单。 @@ -284,17 +284,17 @@ BIOS 不可以读取 GPT 分区表,而 UEFI 可以。 - superblock:记录文件系统的整体信息,包括 inode 和 block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等; - block bitmap:记录 block 是否被使用的位图。 -

+

## 文件读取 对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中查找文件内容所在的所有 block,然后把所有 block 的内容读出来。 -

+

而对于 FAT 文件系统,它没有 inode,每个 block 中存储着下一个 block 的编号。 -

+

## 磁盘碎片 @@ -331,7 +331,7 @@ inode 具有以下特点: inode 中记录了文件内容所在的 block 编号,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block 编号。因此引入了间接、双间接、三间接引用。间接引用让 inode 记录的引用 block 块记录引用信息。 -

+

## 目录 @@ -357,7 +357,7 @@ ext3/ext4 文件系统引入了日志功能,可以利用日志来修复文件 - /usr (unix software resource):所有系统默认软件都会安装到这个目录; - /var (variable):存放系统或程序运行过程中的数据文件。 -

+

# 五、文件 @@ -524,7 +524,7 @@ cp [-adfilprsu] source destination ## 链接 -

+

```html @@ -652,7 +652,7 @@ example: find . -name "shadow*" +4、4 和 -4 的指示的时间范围如下: -

+

**② 与文件拥有者和所属群组有关的选项** @@ -1166,7 +1166,7 @@ dmtsai lines: 5 columns: 9 | T | stopped (either by a job control signal or because it is being traced)
结束,进程既可以被作业控制信号结束,也可能是正在被追踪。|
-

+

## SIGCHLD @@ -1179,7 +1179,7 @@ dmtsai lines: 5 columns: 9 在子进程退出时,它的进程描述符不会立即释放,这是为了让父进程得到子进程信息,父进程通过 wait() 和 waitpid() 来获得一个已经退出的子进程的信息。 -

+

## wait() diff --git a/docs/notes/MySQL.md b/docs/notes/MySQL.md index 2239d48a72..14da320107 100644 --- a/docs/notes/MySQL.md +++ b/docs/notes/MySQL.md @@ -42,7 +42,7 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且小于等于 keyi+1。 -

+

### 2. 操作 @@ -84,11 +84,11 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 InnoDB 的 B+Tree 索引分为主索引和辅助索引。主索引的叶子节点 data 域记录着完整的数据记录,这种索引方式被称为聚簇索引。因为无法把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。 -

+

辅助索引的叶子节点的 data 域记录着主键的值,因此在使用辅助索引进行查找时,需要先查找到主键值,然后再到主索引中进行查找。 -

+

### 2. 哈希索引 @@ -350,7 +350,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 当一个表的数据不断增多时,Sharding 是必然的选择,它可以将数据分布到集群的不同节点上,从而缓存单个数据库的压力。 -

+

## 垂直切分 @@ -358,7 +358,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 在数据库的层面使用垂直切分将按数据库中表的密集程度部署到不同的库中,例如将原来的电商数据库垂直切分成商品数据库、用户数据库等。 -

+

## Sharding 策略 @@ -392,7 +392,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 - **I/O 线程** :负责从主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log)。 - **SQL 线程** :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中重放(Replay)。 -

+

## 读写分离 @@ -406,7 +406,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 读写分离常用代理方式来实现,代理服务器接收应用层传来的读写请求,然后决定转发到哪个服务器。 -

+

# 参考资料 diff --git a/docs/notes/Redis.md b/docs/notes/Redis.md index a8b71352fd..38901f41b7 100644 --- a/docs/notes/Redis.md +++ b/docs/notes/Redis.md @@ -67,7 +67,7 @@ Redis 支持很多特性,例如将内存中的数据持久化到硬盘中, ## STRING -

+

```html > set hello world @@ -82,7 +82,7 @@ OK ## LIST -

+

```html > rpush list-key item @@ -110,7 +110,7 @@ OK ## SET -

+

```html > sadd set-key item @@ -144,7 +144,7 @@ OK ## HASH -

+

```html > hset hash-key sub-key1 value1 @@ -175,7 +175,7 @@ OK ## ZSET -

+

```html > zadd zset-key 728 member1 @@ -317,11 +317,11 @@ int dictRehash(dict *d, int n) { 跳跃表是基于多指针有序链表实现的,可以看成多个有序链表。 -

+

在查找时,从上层指针开始查找,找到对应的区间之后再到下一层去查找。下图演示了查找 22 的过程。 -

+

与红黑树等平衡树相比,跳跃表具有以下优点: @@ -472,7 +472,7 @@ Redis 服务器是一个事件驱动程序。 Redis 基于 Reactor 模式开发了自己的网络事件处理器,使用 I/O 多路复用程序来同时监听多个套接字,并将到达的事件传送给文件事件分派器,分派器会根据套接字产生的事件类型调用相应的事件处理器。 -

+

## 时间事件 @@ -525,7 +525,7 @@ def main(): 从事件处理的角度来看,服务器运行流程如下: -

+

# 十一、复制 @@ -545,7 +545,7 @@ def main(): 随着负载不断上升,主服务器可能无法很快地更新所有从服务器,或者重新连接和重新同步从服务器将导致系统超载。为了解决这个问题,可以创建一个中间层来分担主服务器的复制工作。中间层的服务器是最上层服务器的从服务器,又是最下层服务器的主服务器。 -

+

# 十二、Sentinel @@ -580,7 +580,7 @@ Sentinel(哨兵)可以监听集群中的服务器,并在主服务器进入 Redis 没有关系型数据库中的表这一概念来将同种类型的数据存放在一起,而是使用命名空间的方式来实现这一功能。键名的前面部分存储命名空间,后面部分的内容存储 ID,通常使用 : 来进行分隔。例如下面的 HASH 的键名为 article:92617,其中 article 为命名空间,ID 为 92617。 -

+

## 点赞功能 @@ -588,13 +588,13 @@ Redis 没有关系型数据库中的表这一概念来将同种类型的数据 为了节约内存,规定一篇文章发布满一周之后,就不能再对它进行投票,而文章的已投票集合也会被删除,可以为文章的已投票集合设置一个一周的过期时间就能实现这个规定。 -

+

## 对文章进行排序 为了按发布时间和点赞数进行排序,可以建立一个文章发布时间的有序集合和一个文章点赞数的有序集合。(下图中的 score 就是这里所说的点赞数;下面所示的有序集合分值并不直接是时间和点赞数,而是根据时间和点赞数间接计算出来的) -

+

# 参考资料 diff --git a/docs/notes/Socket.md b/docs/notes/Socket.md index 64fc63008c..5dc40ed8b9 100644 --- a/docs/notes/Socket.md +++ b/docs/notes/Socket.md @@ -46,7 +46,7 @@ Unix 有五种 I/O 模型: ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); ``` -

+

## 非阻塞式 I/O @@ -54,7 +54,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 由于 CPU 要处理更多的系统调用,因此这种模型的 CPU 利用率比较低。 -

+

## I/O 复用 @@ -64,7 +64,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时有几万个连接,那么就需要创建相同数量的线程。相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。 -

+

## 信号驱动 I/O @@ -72,7 +72,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 相比于非阻塞式 I/O 的轮询方式,信号驱动 I/O 的 CPU 利用率更高。 -

+

## 异步 I/O @@ -80,7 +80,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 异步 I/O 与信号驱动 I/O 的区别在于,异步 I/O 的信号是通知应用进程 I/O 完成,而信号驱动 I/O 的信号是通知应用进程可以开始 I/O。 -

+

## 五大 I/O 模型比较 @@ -91,7 +91,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 非阻塞式 I/O 、信号驱动 I/O 和异步 I/O 在第一阶段不会阻塞。 -

+

# 二、I/O 复用 diff --git "a/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" "b/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" index 09a932d7cc..475bbc560c 100644 --- "a/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" +++ "b/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" @@ -48,11 +48,11 @@ - 用 min、max 表示数量范围; - 用 first、last 表示访问空间的包含范围; -

+

- begin、end 表示访问空间的排除范围,即 end 不包含尾部。 -

+

# 四、良好的代码风格 diff --git "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" index cee7f7056f..bf23703c05 100644 --- "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" @@ -70,7 +70,7 @@ EXPIRE 指令可以为一个键值对设置一个过期时间,从而避免了 Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节点为 /app1。 -

+

### 2. 节点类型 @@ -118,7 +118,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 协调者询问参与者事务是否执行成功,参与者发回事务执行结果。询问可以看成一种投票,需要参与者都同意才能执行。 -

+

#### 1.2 提交阶段 @@ -126,7 +126,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 需要注意的是,在准备阶段,参与者执行了事务,但是还未提交。只有在提交阶段接收到协调者发来的通知后,才进行提交或者回滚。 -

+

### 2. 存在的问题 @@ -154,14 +154,14 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 2. 之后将本地消息表中的消息转发到消息队列中,如果转发成功则将消息从本地消息表中删除,否则继续重新转发。 3. 在分布式事务操作的另一方从消息队列中读取一个消息,并执行消息中的操作。 -

+

# 三、CAP 分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition Tolerance),最多只能同时满足其中两项。 -

+

## 一致性 @@ -225,7 +225,7 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE - 接受者(Acceptor):对每个提议进行投票; - 告知者(Learner):被告知投票的结果,不参与投票过程。 -

+

## 执行过程 @@ -235,19 +235,19 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE 下图演示了两个 Proposer 和三个 Acceptor 的系统中运行该算法的初始过程,每个 Proposer 都会向所有 Acceptor 发送 Prepare 请求。 -

+

当 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n1, v1],并且之前还未接收过 Prepare 请求,那么发送一个 Prepare 响应,设置当前接收到的提议为 [n1, v1],并且保证以后不会再接受序号小于 n1 的提议。 如下图,Acceptor X 在收到 [n=2, v=8] 的 Prepare 请求时,由于之前没有接收过提议,因此就发送一个 [no previous] 的 Prepare 响应,设置当前接收到的提议为 [n=2, v=8],并且保证以后不会再接受序号小于 2 的提议。其它的 Acceptor 类似。 -

+

如果 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n2, v2],并且之前已经接收过提议 [n1, v1]。如果 n1 > n2,那么就丢弃该提议请求;否则,发送 Prepare 响应,该 Prepare 响应包含之前已经接收过的提议 [n1, v1],设置当前接收到的提议为 [n2, v2],并且保证以后不会再接受序号小于 n2 的提议。 如下图,Acceptor Z 收到 Proposer A 发来的 [n=2, v=8] 的 Prepare 请求,由于之前已经接收过 [n=4, v=5] 的提议,并且 n > 2,因此就抛弃该提议请求;Acceptor X 收到 Proposer B 发来的 [n=4, v=5] 的 Prepare 请求,因为之前接收到的提议为 [n=2, v=8],并且 2 <= 4,因此就发送 [n=2, v=8] 的 Prepare 响应,设置当前接收到的提议为 [n=4, v=5],并且保证以后不会再接受序号小于 4 的提议。Acceptor Y 类似。 -

+

### 2. Accept 阶段 @@ -257,13 +257,13 @@ Proposer A 接收到两个 Prepare 响应之后,就发送 [n=2, v=8] Accept Proposer B 过后也收到了两个 Prepare 响应,因此也开始发送 Accept 请求。需要注意的是,Accept 请求的 v 需要取它收到的最大提议编号对应的 v 值,也就是 8。因此它发送 [n=4, v=8] 的 Accept 请求。 -

+

### 3. Learn 阶段 Acceptor 接收到 Accept 请求时,如果序号大于等于该 Acceptor 承诺的最小序号,那么就发送 Learn 提议给所有的 Learner。当 Learner 发现有大多数的 Acceptor 接收了某个提议,那么该提议的提议值就被 Paxos 选择出来。 -

+

## 约束条件 @@ -291,47 +291,47 @@ Raft 也是分布式一致性协议,主要是用来竞选主节点。 - 下图展示一个分布式系统的最初阶段,此时只有 Follower 没有 Leader。Node A 等待一个随机的竞选超时时间之后,没收到 Leader 发来的心跳包,因此进入竞选阶段。 -

+

- 此时 Node A 发送投票请求给其它所有节点。 -

+

- 其它节点会对请求进行回复,如果超过一半的节点回复了,那么该 Candidate 就会变成 Leader。 -

+

- 之后 Leader 会周期性地发送心跳包给 Follower,Follower 接收到心跳包,会重新开始计时。 -

+

## 多个 Candidate 竞选 - 如果有多个 Follower 成为 Candidate,并且所获得票数相同,那么就需要重新开始投票。例如下图中 Node B 和 Node D 都获得两票,需要重新开始投票。 -

+

- 由于每个节点设置的随机竞选超时时间不同,因此下一次再次出现多个 Candidate 并获得同样票数的概率很低。 -

+

## 数据同步 - 来自客户端的修改都会被传入 Leader。注意该修改还未被提交,只是写入日志中。 -

+

- Leader 会把修改复制到所有 Follower。 -

+

- Leader 会等待大多数的 Follower 也进行了修改,然后才将修改提交。 -

+

- 此时 Leader 会通知的所有 Follower 让它们也提交修改,此时所有节点的值达成一致。 -

+

# 参考 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" index 1b40238cb0..46931b58e9 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" @@ -26,13 +26,13 @@ -

+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 @@ -92,23 +92,23 @@ public class Solution { 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { @@ -133,21 +133,21 @@ public int RectCover(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { @@ -172,7 +172,7 @@ public int JumpFloor(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 @@ -232,13 +232,13 @@ public int JumpFloorII(int target) { 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 @@ -300,13 +300,13 @@ private int minNumber(int[] nums, int l, int h) { 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 @@ -522,7 +522,7 @@ public int NumberOf1(int n) { -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 @@ -592,11 +592,11 @@ private void printNumber(char[] number) { ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 @@ -630,7 +630,7 @@ public ListNode deleteNode(ListNode head, ListNode tobeDelete) { ## 题目描述 -

+

## 解题描述 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" index 854388270d..aff1be3cbb 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" @@ -70,7 +70,7 @@ public boolean isNumeric(char[] str) { 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 @@ -131,7 +131,7 @@ private void swap(int[] nums, int i, int j) { 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { @@ -165,7 +165,7 @@ public ListNode FindKthToTail(ListNode head, int k) { 在相遇点,slow 要到环的入口点还需要移动 z 个节点,如果让 fast 重新从头开始移动,并且速度变为每次移动一个节点,那么它到环入口点还需要移动 x 个节点。在上面已经推导出 x=z,因此 fast 和 slow 将在环入口点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { @@ -228,7 +228,7 @@ public ListNode ReverseList(ListNode head) { ## 题目描述 -

+

## 解题思路 @@ -280,7 +280,7 @@ public ListNode Merge(ListNode list1, ListNode list2) { ## 题目描述 -

+

## 解题思路 @@ -308,7 +308,7 @@ private boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) { ## 题目描述 -

+

## 解题思路 @@ -334,7 +334,7 @@ private void swap(TreeNode root) { ## 题目描述 -

+

## 解题思路 @@ -364,7 +364,7 @@ boolean isSymmetrical(TreeNode t1, TreeNode t2) { 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" index f8853033b1..d897d973a1 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" @@ -87,7 +87,7 @@ public boolean IsPopOrder(int[] pushSequence, int[] popSequence) { 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 @@ -195,7 +195,7 @@ public ArrayList> Print(TreeNode pRoot) { 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 @@ -230,7 +230,7 @@ private boolean verify(int[] sequence, int first, int last) { 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 @@ -277,21 +277,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { @@ -333,7 +333,7 @@ public RandomListNode Clone(RandomListNode pHead) { 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" index c0d701f7dc..2bcc5e842f 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" @@ -33,7 +33,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java @@ -87,7 +87,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { @@ -132,7 +132,7 @@ Output: 从后向前遍是为了在改变 P2 所指向的内容时,不会影响到 P1 遍历原来字符串的内容。 -

+

```java public String replaceSpace(StringBuffer str) { @@ -164,7 +164,7 @@ public String replaceSpace(StringBuffer str) { 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -192,7 +192,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { - 头结点是在头插法中使用的一个额外节点,这个节点不存储值; - 第一个节点就是链表的第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -219,7 +219,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -244,13 +244,13 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。 -

+

```java // 缓存中序遍历数组每个值对应的索引 @@ -300,11 +300,11 @@ public class TreeLinkNode { ① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { @@ -337,7 +337,7 @@ public TreeLinkNode GetNext(TreeLinkNode pNode) { in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" index ed3d610d1d..ab34a6d003 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" @@ -120,7 +120,7 @@ private void merge(int[] nums, int l, int m, int h) { ## 题目描述 -

+

## 解题思路 @@ -212,7 +212,7 @@ private void inOrder(TreeNode root, int k) { 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 @@ -230,7 +230,7 @@ public int TreeDepth(TreeNode root) { 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" index 1e9f9c310f..053d412920 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" @@ -19,7 +19,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 @@ -92,7 +92,7 @@ public List> dicesSum(int n) { 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 @@ -152,7 +152,7 @@ public int LastRemaining_Solution(int n, int m) { 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 @@ -224,7 +224,7 @@ public int Add(int a, int b) { 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 @@ -289,7 +289,7 @@ public int StrToInt(String str) { 二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -309,7 +309,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 949dddc121..328090001e 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -80,7 +80,7 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT @@ -94,25 +94,25 @@ MySQL 默认采用自动提交模式。也就是说,如果不显式使用`STAR T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 -

+

## 读脏数据 T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 -

+

## 不可重复读 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。 -

+

## 幻影读 T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。 -

+

---- @@ -322,7 +322,7 @@ MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行(Record)的所有快照连接起来。 -

+

## 实现过程 @@ -536,7 +536,7 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图的 Course 和 Student 是一对多的关系。 -

+

## 表示出现多次的关系 @@ -544,19 +544,19 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。 -

+

## 联系的多向性 虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。 -

+

## 表示子类 用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。 -

+

# 参考资料 diff --git "a/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" "b/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" index 4df876d8cb..15384384ae 100644 --- "a/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" +++ "b/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" @@ -35,7 +35,7 @@ Ant 具有编译、测试和打包功能,其后出现的 Maven 在 Ant 的功能基础上又新增了依赖管理功能,而最新的 Gradle 又在 Maven 的功能基础上新增了对 Groovy 语言的支持。 -

+

Gradle 和 Maven 的区别是,它使用 Groovy 这种特定领域语言(DSL)来管理构建脚本,而不再使用 XML 这种标记性语言。因为项目如果庞大的话,XML 很容易就变得臃肿。 diff --git "a/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" "b/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" index c4d38ede79..9d453df9f2 100644 --- "a/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" +++ "b/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" @@ -173,7 +173,7 @@ a.+c ^\s*\/\/.*$ ``` -

+

**匹配结果** diff --git "a/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" "b/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" index 485e25bb56..7ed64fdfeb 100644 --- "a/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" +++ "b/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" @@ -19,20 +19,20 @@ 消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。 -

+

## 发布/订阅 消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。 -

+

发布与订阅模式和观察者模式有以下不同: - 观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,生产者与消费者不知道对方的存在,它们之间通过频道进行通信。 - 观察者模式是同步的,当事件触发时,主题会调用观察者的方法,然后等待方法返回;而发布与订阅模式是异步的,生产者向频道发送一个消息之后,就不需要关心消费者何时去订阅这个消息,可以立即返回。 -

+

# 二、使用场景 diff --git "a/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" "b/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" index 7969ca1f51..aad5fbdcfe 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" @@ -1,6 +1,6 @@ # 汉诺塔 -

+

有三个柱子,分别为 from、buffer、to。需要将 from 上的圆盘全部移动到 to 上,并且要保证小圆盘始终在大圆盘上。 @@ -8,15 +8,15 @@ ① 将 n-1 个圆盘从 from -> buffer -

+

② 将 1 个圆盘从 from -> to -

+

③ 将 n-1 个圆盘从 buffer -> to -

+

如果只有一个圆盘,那么只需要进行一次移动操作。 @@ -67,7 +67,7 @@ from H1 to H3 生成编码时,从根节点出发,向左遍历则添加二进制位 0,向右则添加二进制位 1,直到遍历到叶子节点,叶子节点代表的字符的编码就是这个路径编码。 -

+

```java public class Huffman { diff --git "a/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" "b/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" index e999528279..ca293d147f 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" @@ -12,7 +12,7 @@ 用于解决动态连通性问题,能动态连接两个点,并且判断两个点是否连通。 -

+

| 方法 | 描述 | | :---: | :---: | @@ -51,7 +51,7 @@ public abstract class UF { 但是 union 操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 -

+

```java public class QuickFindUF extends UF { @@ -91,7 +91,7 @@ public class QuickFindUF extends UF { 但是 find 操作开销很大,因为同一个连通分量的节点 id 值不同,id 值只是用来指向另一个节点。因此需要一直向上查找操作,直到找到最上层的节点。 -

+

```java public class QuickUnionUF extends UF { @@ -124,7 +124,7 @@ public class QuickUnionUF extends UF { 这种方法可以快速进行 union 操作,但是 find 操作和树高成正比,最坏的情况下树的高度为节点的数目。 -

+

# 加权 Quick Union @@ -132,7 +132,7 @@ public class QuickUnionUF extends UF { 理论研究证明,加权 quick-union 算法构造的树深度最多不超过 logN。 -

+

```java public class WeightedQuickUnionUF extends UF { diff --git "a/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" "b/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" index b520d1f763..2d89334d2d 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" @@ -29,7 +29,7 @@ public abstract class Sort> { 选择排序需要 \~N2/2 次比较和 \~N 次交换,它的运行时间与输入无关,这个特点使得它对一个已经排序的数组也需要这么多的比较和交换操作。 -

+

```java public class Selection> extends Sort { @@ -56,7 +56,7 @@ public class Selection> extends Sort { 在一轮循环中,如果没有发生交换,那么说明数组已经是有序的,此时可以直接退出。 -

+

```java public class Bubble> extends Sort { @@ -90,7 +90,7 @@ public class Bubble> extends Sort { - 最坏的情况下需要 \~N2/2 比较以及 \~N2/2 次交换,最坏的情况是数组是倒序的; - 最好的情况下需要 N-1 次比较和 0 次交换,最好的情况就是数组已经有序了。 -

+

```java public class Insertion> extends Sort { @@ -113,7 +113,7 @@ public class Insertion> extends Sort { 希尔排序使用插入排序对间隔 h 的序列进行排序。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。 -

+

```java public class Shell> extends Sort { @@ -147,7 +147,7 @@ public class Shell> extends Sort { 归并排序的思想是将数组分成两部分,分别进行排序,然后归并起来。 -

+

## 1. 归并方法 @@ -243,7 +243,7 @@ public class Down2UpMergeSort> extends MergeSort { - 归并排序将数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序; - 快速排序通过一个切分元素将数组分为两个子数组,左子数组小于等于切分元素,右子数组大于等于切分元素,将这两个子数组排序也就将整个数组排序了。 -

+

```java public class QuickSort> extends Sort { @@ -274,7 +274,7 @@ public class QuickSort> extends Sort { 取 a[l] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于它的元素,交换这两个元素。不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[l] 和 a[j] 交换位置。 -

+

```java private int partition(T[] nums, int l, int h) { @@ -378,7 +378,7 @@ public T select(T[] nums, int k) { 堆可以用数组来表示,这是因为堆是完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里不使用数组索引为 0 的位置,是为了更清晰地描述节点的位置关系。 -

+

```java public class Heap> { @@ -414,7 +414,7 @@ public class Heap> { 在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作,把这种操作称为上浮。 -

+

```java private void swim(int k) { @@ -427,7 +427,7 @@ private void swim(int k) { 类似地,当一个节点比子节点来得小,也需要不断地向下进行比较和交换操作,把这种操作称为下沉。一个节点如果有两个子节点,应当与两个子节点中最大那个节点进行交换。 -

+

```java private void sink(int k) { @@ -476,13 +476,13 @@ public T delMax() { 无序数组建立堆最直接的方法是从左到右遍历数组进行上浮操作。一个更高效的方法是从右至左进行下沉操作,如果一个节点的两个节点都已经是堆有序,那么进行下沉操作可以使得这个节点为根节点的堆有序。叶子节点不需要进行下沉操作,可以忽略叶子节点的元素,因此只需要遍历一半的元素即可。 -

+

#### 5.2 交换堆顶元素与最后一个元素 交换之后需要进行下沉操作维持堆的有序状态。 -

+

```java public class HeapSort> extends Sort { diff --git "a/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" "b/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" index c2b23ca57c..133ed8af42 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" @@ -245,13 +245,13 @@ public class BinarySearchOrderedST, Value> implement **二叉树** 是一个空链接,或者是一个有左右两个链接的节点,每个链接都指向一颗子二叉树。 -

+

**二叉查找树** (BST)是一颗二叉树,并且每个节点的值都大于等于其左子树中的所有节点的值而小于等于右子树的所有节点的值。 BST 有一个重要性质,就是它的中序遍历结果递增排序。 -

+

基本数据结构: @@ -325,7 +325,7 @@ private Value get(Node x, Key key) { 当插入的键不存在于树中,需要创建一个新节点,并且更新上层节点的链接指向该节点,使得该节点正确地链接到树中。 -

+

```java @Override @@ -354,11 +354,11 @@ private Node put(Node x, Key key, Value value) { 最好的情况下树是完全平衡的,每条空链接和根节点的距离都为 logN。 -

+

在最坏的情况下,树的高度为 N。 -

+

## 4. floor() @@ -436,7 +436,7 @@ private Node min(Node x) { 令指向最小节点的链接指向最小节点的右子树。 -

+

```java public void deleteMin() { @@ -457,7 +457,7 @@ public Node deleteMin(Node x) { - 如果待删除的节点只有一个子树, 那么只需要让指向待删除节点的链接指向唯一的子树即可; - 否则,让右子树的最小节点替换该节点。 -

+

```java public void delete(Key key) { @@ -520,7 +520,7 @@ private List keys(Node x, Key l, Key h) { 2-3 查找树引入了 2- 节点和 3- 节点,目的是为了让树平衡。一颗完美平衡的 2-3 查找树的所有空链接到根节点的距离应该是相同的。 -

+

## 1. 插入操作 @@ -530,11 +530,11 @@ private List keys(Node x, Key l, Key h) { - 如果插入到 2- 节点上,那么直接将新节点和原来的节点组成 3- 节点即可。 -

+

- 如果是插入到 3- 节点上,就会产生一个临时 4- 节点时,需要将 4- 节点分裂成 3 个 2- 节点,并将中间的 2- 节点移到上层节点中。如果上移操作继续产生临时 4- 节点则一直进行分裂上移,直到不存在临时 4- 节点。 -

+

## 2. 性质 @@ -546,7 +546,7 @@ private List keys(Node x, Key l, Key h) { 红黑树是 2-3 查找树,但它不需要分别定义 2- 节点和 3- 节点,而是在普通的二叉查找树之上,为节点添加颜色。指向一个节点的链接颜色如果为红色,那么这个节点和上层节点表示的是一个 3- 节点,而黑色则是普通链接。 -

+

红黑树具有以下性质: @@ -555,7 +555,7 @@ private List keys(Node x, Key l, Key h) { 画红黑树时可以将红链接画平。 -

+

```java public class RedBlackBST, Value> extends BST { @@ -575,7 +575,7 @@ public class RedBlackBST, Value> extends BST
+

```java public Node rotateLeft(Node h) { @@ -594,7 +594,7 @@ public Node rotateLeft(Node h) { 进行右旋转是为了转换两个连续的左红链接,这会在之后的插入过程中探讨。 -

+

```java public Node rotateRight(Node h) { @@ -613,7 +613,7 @@ public Node rotateRight(Node h) { 一个 4- 节点在红黑树中表现为一个节点的左右子节点都是红色的。分裂 4- 节点除了需要将子节点的颜色由红变黑之外,同时需要将父节点的颜色由黑变红,从 2-3 树的角度看就是将中间节点移到上层节点。 -

+

```java void flipColors(Node h) { @@ -631,7 +631,7 @@ void flipColors(Node h) { - 如果左子节点是红色的,而且左子节点的左子节点也是红色的,进行右旋转; - 如果左右子节点均为红色的,进行颜色转换。 -

+

```java @Override @@ -756,7 +756,7 @@ public class Transaction { 对于 N 个键,M 条链表 (N>M),如果哈希函数能够满足均匀性的条件,每条链表的大小趋向于 N/M,因此未命中的查找和插入操作所需要的比较次数为 \~N/M。 -

+

## 3. 线性探测法 @@ -765,7 +765,7 @@ public class Transaction { 使用线性探测法,数组的大小 M 应当大于键的个数 N(M>N)。 -

+

```java public class LinearProbingHashST implements UnorderedST { @@ -867,7 +867,7 @@ public void delete(Key key) { 线性探测法的成本取决于连续条目的长度,连续条目也叫聚簇。当聚簇很长时,在查找和插入时也需要进行很多次探测。例如下图中 2\~4 位置就是一个聚簇。 -

+

α = N/M,把 α 称为使用率。理论证明,当 α 小于 1/2 时探测的预计次数只在 1.5 到 2.5 之间。为了保证散列表的性能,应当调整数组的大小,使得 α 在 [1/4, 1/2] 之间。 diff --git "a/docs/notes/\347\274\223\345\255\230.md" "b/docs/notes/\347\274\223\345\255\230.md" index f52d9c1aa8..347088d06f 100644 --- "a/docs/notes/\347\274\223\345\255\230.md" +++ "b/docs/notes/\347\274\223\345\255\230.md" @@ -211,7 +211,7 @@ CDN 主要有以下优点: - 通过部署多台服务器,从而提高系统整体的带宽性能; - 多台服务器可以看成是一种冗余机制,从而具有高可用性。 -

+

# 五、缓存问题 @@ -285,11 +285,11 @@ Distributed Hash Table(DHT) 是一种哈希分布方式,其目的是为了 将哈希空间 [0, 2n-1] 看成一个哈希环,每个服务器节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。 -

+

一致性哈希在增加或者删除节点时只会影响到哈希环中相邻的节点,例如下图中新增节点 X,只需要将它前一个节点 C 上的数据重新进行分布即可,对于节点 A、B、D 都没有影响。 -

+

## 虚拟节点 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" index ae31fdaf5e..c4c5b71341 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" @@ -22,7 +22,7 @@ 从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0\~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。 -

+

# 分页系统地址映射 @@ -32,7 +32,7 @@ 下图的页表存放着 16 个页,这 16 个页需要用 4 个比特位来进行索引定位。例如对于虚拟地址(0010 000000000100),前 4 位是存储页面号 2,读取表项内容为(110 1),页表项最后一位表示是否存在于内存中,1 表示存在。后 12 位存储偏移量。这个页对应的页框的地址为 (110 000000000100)。 -

+

# 页面置换算法 @@ -72,7 +72,7 @@ 4,7,0,7,1,0,1,2,1,2,6 ``` -

+

## 3. 最近未使用 > NRU, Not Recently Used @@ -102,7 +102,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 当页面被访问 (读或写) 时设置该页面的 R 位为 1。需要替换的时候,检查最老页面的 R 位。如果 R 位是 0,那么这个页面既老又没有被使用,可以立刻置换掉;如果是 1,就将 R 位清 0,并把该页面放到链表的尾端,修改它的装入时间使它就像刚装入的一样,然后继续从链表的头部开始搜索。 -

+

## 6. 时钟 @@ -110,7 +110,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 第二次机会算法需要在链表中移动页面,降低了效率。时钟算法使用环形链表将页面连接起来,再使用一个指针指向最老的页面。 -

+

# 分段 @@ -118,11 +118,11 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 下图为一个编译器在编译过程中建立的多个表,有 4 个表是动态增长的,如果使用分页系统的一维地址空间,动态增长的特点会导致覆盖问题的出现。 -

+

分段的做法是把每个表分成段,一个段构成一个独立的地址空间。每个段的长度可以不同,并且可以动态增长。 -

+

# 段页式 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" index e27a1f3c51..2569d201fc 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" @@ -76,7 +76,7 @@ 如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。 -

+

Linux 的系统调用主要有以下这些: @@ -105,7 +105,7 @@ Linux 的系统调用主要有以下这些: 因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。 -

+

# 中断分类 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" index 53ad4abfd5..8dc385a469 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" @@ -20,7 +20,7 @@ # 必要条件 -

+

- 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。 - 占有和等待:已经得到了某个资源的进程可以再请求新的资源。 @@ -52,7 +52,7 @@ ## 1. 每种类型一个资源的死锁检测 -

+

上图为资源分配图,其中方框表示资源,圆圈表示进程。资源指向进程表示该资源已经分配给该进程,进程指向资源表示进程请求获取该资源。 @@ -62,7 +62,7 @@ ## 2. 每种类型多个资源的死锁检测 -

+

上图中,有三个进程四个资源,每个数据代表的含义如下: @@ -111,7 +111,7 @@ ## 1. 安全状态 -

+

图 a 的第二列 Has 表示已拥有的资源数,第三列 Max 表示总共需要的资源数,Free 表示还有可以使用的资源数。从图 a 开始出发,先让 B 拥有所需的所有资源(图 b),运行结束后释放 B,此时 Free 变为 5(图 c);接着以同样的方式运行 C 和 A,使得所有进程都能成功运行,因此可以称图 a 所示的状态时安全的。 @@ -123,13 +123,13 @@ 一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。 -

+

上图 c 为不安全状态,因此算法会拒绝之前的请求,从而避免进入图 c 中的状态。 ## 3. 多个资源的银行家算法 -

+

上图中有五个进程,四个资源。左边的图表示已经分配的资源,右边的图表示还需要分配的资源。最右边的 E、P 以及 A 分别表示:总资源、已分配资源以及可用资源,注意这三个为向量,而不是具体数值,例如 A=(1020),表示 4 个资源分别还剩下 1/0/2/0。 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" index 9def71159b..3a035ba9d8 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" @@ -16,7 +16,7 @@ - 制动手臂(Actuator arm):用于在磁道之间移动磁头; - 主轴(Spindle):使整个盘面转动。 -

+

# 磁盘调度算法 @@ -44,7 +44,7 @@ 虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。 -

+

## 3. 电梯算法 @@ -56,7 +56,7 @@ 因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了 SSTF 的饥饿问题。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" index 51a2badad0..d2b4634b08 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -36,7 +36,7 @@ 下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 -

+

## 2. 线程 @@ -46,7 +46,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 -

+

## 3. 区别 @@ -68,7 +68,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H # 进程状态的切换 -

+

- 就绪状态(ready):等待被调度 - 运行状态(running) @@ -116,7 +116,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H - 因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。 - 而如果时间片过长,那么实时性就不能得到保证。 -

+

**2.2 优先级调度** @@ -134,7 +134,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H 可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。 -

+

## 3. 实时系统 @@ -308,7 +308,7 @@ end; ## 1. 哲学家进餐问题 -

+

五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。 @@ -553,7 +553,7 @@ int pipe(int fd[2]); - 只支持半双工通信(单向交替传输); - 只能在父子进程或者兄弟进程中使用。 -

+

## 2. FIFO @@ -567,7 +567,7 @@ int mkfifoat(int fd, const char *path, mode_t mode); FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户进程和服务器进程之间传递数据。 -

+

## 3. 消息队列 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" index dfce4295aa..061f39a083 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" @@ -29,7 +29,7 @@ gcc -o hello hello.c 这个过程大致如下: -

+

- 预处理阶段:处理以 # 开头的预处理命令; - 编译阶段:翻译成汇编文件; @@ -43,7 +43,7 @@ gcc -o hello hello.c - 符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用与一个符号定义关联起来。 - 重定位:链接器通过把每个符号定义与一个内存位置关联起来,然后修改所有对这些符号的引用,使得它们指向这个内存位置。 -

+

# 目标文件 @@ -63,7 +63,7 @@ gcc -o hello hello.c - 在给定的文件系统中一个库只有一个文件,所有引用该库的可执行目标文件都共享这个文件,它不会被复制到引用它的可执行文件中; - 在内存中,一个共享库的 .text 节(已编译程序的机器代码)的一个副本可以被不同的正在运行的进程共享。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" index f2f3411778..d81ae2ec7c 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" @@ -23,13 +23,13 @@ # UDP 首部格式 -

+

首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。 # TCP 首部格式 -

+

- **序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。 @@ -47,7 +47,7 @@ # TCP 的三次握手 -

+

假设 A 为客户端,B 为服务器端。 @@ -69,7 +69,7 @@ # TCP 的四次挥手 -

+

以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。 @@ -117,7 +117,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。 -

+

# TCP 流量控制 @@ -129,7 +129,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。 -

+

TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。 @@ -140,7 +140,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 - 接收方有足够大的接收缓存,因此不会发生流量控制; - 虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。 -

+

## 1. 慢开始与拥塞避免 @@ -160,7 +160,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" index 5a8d348683..2d9d4c6e05 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" @@ -22,7 +22,7 @@ DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转 域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。 -

+

DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在两种情况下会使用 TCP 进行传输: @@ -40,11 +40,11 @@ FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件: - 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为 20,客户端的端口号随机,但是必须大于 1024,因为 0\~1023 是熟知端口号。 -

+

- 被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机。 -

+

主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙。被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙。但是被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号。 @@ -61,7 +61,7 @@ DHCP 工作过程如下: 3. 如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送 Request 报文给该 DHCP 服务器。 4. DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息。 -

+

# 远程登录协议 @@ -75,13 +75,13 @@ TELNET 可以适应许多计算机和操作系统的差异,例如不同操作 邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。 -

+

## 1. SMTP SMTP 只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。MIME 并没有改动或者取代 SMTP,而是增加邮件主体的结构,定义了非 ASCII 码的编码规则。 -

+

## 2. POP3 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" index bdfe4f4ad3..d6e2e19e33 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" @@ -22,27 +22,27 @@ 网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。 -

+

# ISP 互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。 -

+

目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。 -

+

# 主机之间的通信方式 - 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。 -

+

- 对等(P2P):不区分客户和服务器。 -

+

# 电路交换与分组交换 @@ -60,7 +60,7 @@ 总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延 -

+

## 1. 排队时延 @@ -76,7 +76,7 @@ -

+

其中 l 表示数据帧的长度,v 表示传输速率。 @@ -87,13 +87,13 @@ -

+

其中 l 表示信道长度,v 表示电磁波在信道上的传播速度。 # 计算机网络体系结构 -

+

## 1. 五层协议 @@ -123,7 +123,7 @@ TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。 -

+

## 4. 数据在各层之间的传递过程 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" index a748b50bc6..3d98ca9406 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" @@ -16,7 +16,7 @@ 模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" index 69d106d5be..563ea8c3bf 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" @@ -26,7 +26,7 @@ 使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。 -

+

与 IP 协议配套使用的还有三个协议: @@ -36,7 +36,7 @@ # IP 数据报格式 -

+

- **版本** : 有 4(IPv4)和 6(IPv6)两个值; @@ -56,7 +56,7 @@ - **片偏移** : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。 -

+

# IP 地址编址方式 @@ -72,7 +72,7 @@ IP 地址的编址方式经历了三个历史阶段: IP 地址 ::= {< 网络号 >, < 主机号 >} -

+

## 2. 子网划分 @@ -102,27 +102,27 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为 网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。 -

+

ARP 实现由 IP 地址得到 MAC 地址。 -

+

每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。 如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。 -

+

# 网际控制报文协议 ICMP ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。 -

+

ICMP 报文分为差错报告报文和询问报文。 -

+

## 1. Ping @@ -155,7 +155,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。 -

+

# 网络地址转换 NAT @@ -163,7 +163,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。 -

+

# 路由器的结构 @@ -171,7 +171,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。 -

+

# 路由器分组转发流程 @@ -182,7 +182,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 - 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器; - 报告转发分组出错。 -

+

# 路由选择协议 @@ -239,7 +239,7 @@ BGP 只能寻找一条比较好的路由,而不是最佳路由。 每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" index 7d7d88ae37..c08ef7970e 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" @@ -28,7 +28,7 @@ 将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。 -

+

## 2. 透明传输 @@ -36,7 +36,7 @@ 帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。 -

+

## 3. 差错检测 @@ -64,13 +64,13 @@ 频分复用的所有主机在相同的时间占用不同的频率带宽资源。 -

+

## 2. 时分复用 时分复用的所有主机在不同的时间占用相同的频率带宽资源。 -

+

使用频分复用和时分复用进行通信,在通信的过程中主机会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。 @@ -78,7 +78,7 @@ 是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。 -

+

## 4. 波分复用 @@ -90,7 +90,7 @@ -

+

为了讨论方便,取 m=8,设码片 为 00011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100。 @@ -100,9 +100,9 @@ -

+

-

+

其中 的反码。 @@ -110,7 +110,7 @@ 码分复用需要发送的数据量为原先的 m 倍。 -

+

# CSMA/CD 协议 @@ -125,13 +125,13 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。 当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。 -

+

# PPP 协议 互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。 -

+

PPP 的帧格式: @@ -140,7 +140,7 @@ PPP 的帧格式: - FCS 字段是使用 CRC 的检验序列 - 信息部分的长度不超过 1500 -

+

# MAC 地址 @@ -156,7 +156,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 可以按照网络拓扑结构对局域网进行分类: -

+

# 以太网 @@ -172,7 +172,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 - **数据** :长度在 46-1500 之间,如果太小则需要填充; - **FCS** :帧检验序列,使用的是 CRC 检验方法; -

+

# 交换机 @@ -182,7 +182,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。 -

+

# 虚拟局域网 @@ -192,7 +192,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。 -

+

diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" index 136b0f0eaf..2d60600ca5 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" @@ -10,7 +10,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" index 94b8c65dc9..333a21be46 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" @@ -11,17 +11,17 @@ - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" index 3e4c0d5d82..7bc210881f 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" @@ -12,7 +12,7 @@ - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" index 215681a8ff..9ff95ceb6e 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" @@ -13,7 +13,7 @@ - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" index b07d1efe57..f1bb2ad195 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" index 7ad1d0134a..08b7db2088 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" @@ -16,13 +16,13 @@ - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" index 190b555045..d88cac721c 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" @@ -10,7 +10,7 @@ - Caretaker:负责保存好备忘录 - Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" index d89db0da65..fda230b709 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" index 152e975a2f..3b33d97d4b 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" @@ -10,7 +10,7 @@ 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" index 7e113588e3..e6b0af9d73 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" @@ -14,7 +14,7 @@ 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" index dc49b3fd00..268f8cf715 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" @@ -11,7 +11,7 @@ - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" index ba13406bdf..f2604abdee 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" @@ -8,13 +8,13 @@ ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" index dd3c7e795a..8ae809372d 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" @@ -6,13 +6,13 @@ ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" index bee164a38d..c757678279 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" index 2416e9ce72..0b34c2adc8 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" @@ -10,7 +10,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" index f3ec662754..8f5b492d43 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" @@ -11,7 +11,7 @@ - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" index e03ad311ae..7192b7384b 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" @@ -10,7 +10,7 @@ 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" index f87de5a15f..18b4b3de39 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" @@ -10,7 +10,7 @@ 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" index 039a359083..1e15a921d7 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" @@ -8,7 +8,7 @@ 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -16,7 +16,7 @@ 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" index 1b505d74ea..06d4513270 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" @@ -6,7 +6,7 @@ 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -14,13 +14,13 @@ 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" index 3a34d05508..98f7974ebb 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" @@ -9,7 +9,7 @@ - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" index 810fde860d..17b9af2bd4 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" @@ -10,7 +10,7 @@ - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" index 10b13515cc..8b1ac10ea9 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" @@ -8,7 +8,7 @@ - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" index c4beb94d9a..0596ace9b3 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" @@ -10,7 +10,7 @@ - Iterator 主要定义了 hasNext() 和 next() 方法; - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -
image-20191130164425351

+
image-20191130164425351

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" index 102ff5f02e..dd1ebf2d32 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" @@ -4,11 +4,11 @@ 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" index 2d69e88f24..88f65599e4 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" @@ -52,7 +52,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation @@ -253,7 +253,7 @@ secondName 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation @@ -336,7 +336,7 @@ public class Client { 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation @@ -400,7 +400,7 @@ public class ConcreteFactory2 extends Factory { 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation @@ -490,7 +490,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -580,7 +580,7 @@ abcdefghijklmnopqrstuvwxyz ### Class Diagram -

+

### Implementation @@ -641,7 +641,7 @@ abc - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation @@ -779,13 +779,13 @@ request2 is handle by ConcreteHandler2 - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { @@ -900,7 +900,7 @@ public class Client { - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation @@ -1025,7 +1025,7 @@ false - Iterator 主要定义了 hasNext() 和 next() 方法。 - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -

+

### Implementation @@ -1114,17 +1114,17 @@ public class Client { - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { @@ -1284,7 +1284,7 @@ doSprinkler() - Caretaker:负责保存好备忘录 - Menento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation @@ -1457,7 +1457,7 @@ public class Client { 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -1465,13 +1465,13 @@ public class Client { 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { @@ -1592,13 +1592,13 @@ StatisticsDisplay.update: 1.0 1.0 1.0 ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { @@ -1899,7 +1899,7 @@ No gumball dispensed - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 @@ -1986,13 +1986,13 @@ quack! ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { @@ -2089,7 +2089,7 @@ Tea.addCondiments - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation @@ -2294,7 +2294,7 @@ Number of items: 6 ### Class Diagram -

+

### Implementation @@ -2346,11 +2346,11 @@ public class Client { 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation @@ -2422,7 +2422,7 @@ public class Client { - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation @@ -2580,7 +2580,7 @@ public class Client { 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation @@ -2712,7 +2712,7 @@ Composite:root 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -2720,7 +2720,7 @@ Composite:root 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { @@ -2818,7 +2818,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -2877,7 +2877,7 @@ public class Client { - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation @@ -2966,7 +2966,7 @@ Java 利用缓存来加速大量小对象的访问时间。 - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/docs/notes/\351\233\206\347\276\244.md" "b/docs/notes/\351\233\206\347\276\244.md" index e92c828c05..f10aee7fc3 100644 --- "a/docs/notes/\351\233\206\347\276\244.md" +++ "b/docs/notes/\351\233\206\347\276\244.md" @@ -33,12 +33,12 @@ 下图中,一共有 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,13 +54,13 @@ 例如下图中,(1, 3, 5) 请求会被发送到服务器 1,但是 (1, 3) 很快就断开连接,此时只有 (5) 请求连接服务器 1;(2, 4, 6) 请求被发送到服务器 2,只有 (2) 的连接断开,此时 (6, 4) 请求连接服务器 2。该系统继续运行时,服务器 2 会承担过大的负载。 -

+

最少连接算法就是将请求发送给当前最少连接数的服务器上。 例如下图中,服务器 1 当前连接数最小,那么新到来的请求 6 就会被发送到服务器 1 上。 -

+

### 4. 加权最少连接(Weighted Least Connection) @@ -72,7 +72,7 @@ 和轮询算法类似,该算法比较适合服务器性能差不多的场景。 -

+

### 6. 源地址哈希法 (IP Hash) @@ -80,7 +80,7 @@ 可以保证同一 IP 的客户端的请求会转发到同一台服务器上,用来实现会话粘滞(Sticky Session) -

+

## 转发实现 @@ -95,7 +95,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 该负载均衡转发的缺点比较明显,实际场景中很少使用它。 -

+

### 2. DNS 域名解析 @@ -111,7 +111,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 大型网站基本使用了 DNS 做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。也就是说,域名解析的结果为内部的负载均衡服务器 IP 地址。 -

+

### 3. 反向代理服务器 @@ -168,7 +168,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 当服务器宕机时,将丢失该服务器上的所有 Session。 -

+

## Session Replication @@ -179,7 +179,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 占用过多内存; - 同步过程占用网络带宽以及服务器处理器时间。 -

+

## Session Server @@ -193,7 +193,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 需要去实现存取 Session 的代码。 -

+

参考: diff --git "a/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" "b/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" index fff09bca4c..f731445141 100644 --- "a/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" +++ "b/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" @@ -141,7 +141,7 @@ Percussion is playing... 用来描述继承关系,在 Java 中使用 extends 关键字。 -

+

```text @startuml @@ -162,7 +162,7 @@ Vihical <|-- Trunck 用来实现一个接口,在 Java 中使用 implements 关键字。 -

+

```text @startuml @@ -183,7 +183,7 @@ MoveBehavior <|.. Run 表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。 -

+

```text @startuml @@ -206,7 +206,7 @@ Computer o-- Screen 和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。 -

+

```text @startuml @@ -227,7 +227,7 @@ Company *-- DepartmentB 表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。 -

+

```text @startuml @@ -250,7 +250,7 @@ School "1" - "n" Student - A 类是 B 类方法当中的一个参数; - A 类向 B 类发送消息,从而影响 B 类发生变化。 -

+

```text @startuml From a11ee70e210dde7c58981d366cdb1c0c1c514be0 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Thu, 5 Dec 2019 01:47:57 +0800 Subject: [PATCH 025/214] auto commit --- ...43\345\245\221\346\225\260\345\210\227.md" | 4 +- ...51\345\275\242\350\246\206\347\233\226.md" | 8 +-- ...3 \350\267\263\345\217\260\351\230\266.md" | 8 +-- ...01\350\267\263\345\217\260\351\230\266.md" | 2 +- ...00\345\260\217\346\225\260\345\255\227.md" | 4 +- ...55\347\232\204\350\267\257\345\276\204.md" | 4 +- ...64\346\225\260\346\254\241\346\226\271.md" | 2 +- ...76\350\241\250\350\212\202\347\202\271.md" | 4 +- ...15\347\232\204\347\273\223\347\202\271.md" | 2 +- ...66\346\225\260\345\211\215\351\235\242.md" | 2 +- ...K \344\270\252\347\273\223\347\202\271.md" | 2 +- ...45\345\217\243\347\273\223\347\202\271.md" | 2 +- ...17\347\232\204\351\223\276\350\241\250.md" | 2 +- ...04\345\255\220\347\273\223\346\236\204.md" | 2 +- ...21\347\232\204\351\225\234\345\203\217.md" | 2 +- ...04\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\347\237\251\351\230\265.md" | 2 +- ...15\347\232\204\346\225\260\345\255\227.md" | 2 +- ...60\344\272\214\345\217\211\346\240\221.md" | 2 +- ...15\345\216\206\345\272\217\345\210\227.md" | 2 +- ...74\347\232\204\350\267\257\345\276\204.md" | 2 +- ...50\347\232\204\345\244\215\345\210\266.md" | 8 +-- ...14\345\220\221\351\223\276\350\241\250.md" | 2 +- ...55\347\232\204\346\237\245\346\211\276.md" | 2 +- ...77\346\215\242\347\251\272\346\240\274.md" | 2 +- ...54\345\205\261\347\273\223\347\202\271.md" | 2 +- ...21\347\232\204\346\267\261\345\272\246.md" | 2 +- ...41\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\351\223\276\350\241\250.md" | 8 +-- ...20\347\232\204\347\202\271\346\225\260.md" | 2 +- ...13\347\211\214\351\241\272\345\255\220.md" | 2 +- ...00\345\244\247\345\210\251\346\266\246.md" | 2 +- ...30\347\247\257\346\225\260\347\273\204.md" | 2 +- ...54\345\205\261\347\245\226\345\205\210.md" | 4 +- ...72\344\272\214\345\217\211\346\240\221.md" | 4 +- ...00\344\270\252\347\273\223\347\202\271.md" | 6 +- ...36\347\216\260\351\230\237\345\210\227.md" | 2 +- docs/notes/Docker.md | 6 +- docs/notes/Git.md | 24 +++---- docs/notes/HTTP.md | 37 +++++----- docs/notes/Java IO.md | 16 ++--- "docs/notes/Java \345\237\272\347\241\200.md" | 4 +- "docs/notes/Java \345\256\271\345\231\250.md" | 16 ++--- "docs/notes/Java \345\271\266\345\217\221.md" | 38 +++++------ ...a \350\231\232\346\213\237\346\234\272.md" | 36 +++++----- ...50\346\200\201\350\247\204\345\210\222.md" | 22 +++--- ...- \345\217\214\346\214\207\351\222\210.md" | 10 +-- ...350\247\243 - \346\216\222\345\272\217.md" | 2 +- ...350\247\243 - \346\220\234\347\264\242.md" | 14 ++-- ...351\242\230\350\247\243 - \346\240\221.md" | 2 +- ...52\345\277\203\346\200\235\346\203\263.md" | 2 +- docs/notes/Linux.md | 34 +++++----- docs/notes/MySQL.md | 14 ++-- docs/notes/Redis.md | 26 +++---- docs/notes/Socket.md | 12 ++-- ...01\345\217\257\350\257\273\346\200\247.md" | 4 +- .../\345\210\206\345\270\203\345\274\217.md" | 42 ++++++------ ...Offer \351\242\230\350\247\243 - 10~19.md" | 38 +++++------ ...Offer \351\242\230\350\247\243 - 20~29.md" | 16 ++--- ...Offer \351\242\230\350\247\243 - 30~39.md" | 16 ++--- ...7 Offer \351\242\230\350\247\243 - 3~9.md" | 22 +++--- ...Offer \351\242\230\350\247\243 - 50~59.md" | 6 +- ...Offer \351\242\230\350\247\243 - 60~68.md" | 12 ++-- ...73\347\273\237\345\216\237\347\220\206.md" | 22 +++--- ...04\345\273\272\345\267\245\345\205\267.md" | 2 +- ...31\350\241\250\350\276\276\345\274\217.md" | 2 +- ...10\346\201\257\351\230\237\345\210\227.md" | 6 +- ...346\263\225 - \345\205\266\345\256\203.md" | 10 +-- ...- \345\271\266\346\237\245\351\233\206.md" | 10 +-- ...346\263\225 - \346\216\222\345\272\217.md" | 24 +++---- ...- \347\254\246\345\217\267\350\241\250.md" | 38 +++++------ "docs/notes/\347\274\223\345\255\230.md" | 6 +- ...05\345\255\230\347\256\241\347\220\206.md" | 14 ++-- ...347\273\237 - \346\246\202\350\277\260.md" | 4 +- ...347\273\237 - \346\255\273\351\224\201.md" | 12 ++-- ...76\345\244\207\347\256\241\347\220\206.md" | 6 +- ...33\347\250\213\347\256\241\347\220\206.md" | 16 ++--- ...347\273\237 - \351\223\276\346\216\245.md" | 6 +- ...- \344\274\240\350\276\223\345\261\202.md" | 16 ++--- ...- \345\272\224\347\224\250\345\261\202.md" | 12 ++-- ...347\273\234 - \346\246\202\350\277\260.md" | 20 +++--- ...- \347\211\251\347\220\206\345\261\202.md" | 2 +- ...- \347\275\221\347\273\234\345\261\202.md" | 28 ++++---- ...- \351\223\276\350\267\257\345\261\202.md" | 32 ++++----- ...45\274\217 - \345\215\225\344\276\213.md" | 2 +- ...- \344\270\255\344\273\213\350\200\205.md" | 6 +- ...345\274\217 - \344\272\253\345\205\203.md" | 2 +- ...345\274\217 - \344\273\243\347\220\206.md" | 2 +- ...37\345\236\213\346\250\241\345\274\217.md" | 2 +- ...345\274\217 - \345\221\275\344\273\244.md" | 4 +- ...- \345\244\207\345\277\230\345\275\225.md" | 2 +- ...345\274\217 - \345\244\226\350\247\202.md" | 2 +- ...45\345\216\202\346\226\271\346\263\225.md" | 2 +- ...75\350\261\241\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \346\241\245\346\216\245.md" | 2 +- ...41\346\235\277\346\226\271\346\263\225.md" | 4 +- ...345\274\217 - \347\212\266\346\200\201.md" | 4 +- ...- \347\224\237\346\210\220\345\231\250.md" | 2 +- ...- \347\251\272\345\257\271\350\261\241.md" | 2 +- ...345\274\217 - \347\255\226\347\225\245.md" | 2 +- ...00\345\215\225\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \347\273\204\345\220\210.md" | 2 +- ...345\274\217 - \350\243\205\351\245\260.md" | 4 +- ...- \350\247\202\345\257\237\350\200\205.md" | 6 +- ...- \350\247\243\351\207\212\345\231\250.md" | 2 +- ...- \350\256\277\351\227\256\350\200\205.md" | 2 +- ...- \350\264\243\344\273\273\351\223\276.md" | 2 +- ...- \350\277\255\344\273\243\345\231\250.md" | 2 +- ...- \351\200\202\351\205\215\345\231\250.md" | 4 +- ...76\350\256\241\346\250\241\345\274\217.md" | 68 +++++++++---------- "docs/notes/\351\233\206\347\276\244.md" | 24 +++---- ...71\350\261\241\346\200\235\346\203\263.md" | 12 ++-- notes/HTTP.md | 5 +- 113 files changed, 528 insertions(+), 522 deletions(-) diff --git "a/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" "b/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" index c73402d597..2d4326fe97 100644 --- "a/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" +++ "b/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" @@ -10,13 +10,13 @@ -

+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 diff --git "a/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" "b/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" index 2bd056c1bb..ecc7a64651 100644 --- "a/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" +++ "b/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" @@ -8,23 +8,23 @@ 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { diff --git "a/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" "b/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" index 3db7579d57..bd89c6fd9b 100644 --- "a/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" +++ "b/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" @@ -8,21 +8,21 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { diff --git "a/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" "b/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" index 760ff568bf..0e779d0011 100644 --- "a/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" +++ "b/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" @@ -8,7 +8,7 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 diff --git "a/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" "b/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" index be40966933..ca34fed587 100644 --- "a/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" +++ "b/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" @@ -6,13 +6,13 @@ 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 diff --git "a/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" "b/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" index 4363131950..217f56967e 100644 --- "a/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" +++ "b/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" @@ -8,13 +8,13 @@ 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 diff --git "a/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" "b/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" index 207b235f44..1cddc018a3 100644 --- "a/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" +++ "b/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" @@ -12,7 +12,7 @@ -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 diff --git "a/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" "b/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" index f14a83f90f..8cd0a5eee6 100644 --- "a/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" +++ "b/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" @@ -4,11 +4,11 @@ ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 diff --git "a/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" "b/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" index b7ba929a4e..555a075436 100644 --- "a/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" +++ "b/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题描述 diff --git "a/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" "b/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" index 7bfed6141e..f6b913234b 100644 --- "a/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" +++ "b/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" @@ -6,7 +6,7 @@ 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 diff --git "a/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" "b/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" index 3a6226f9cb..209dc0e98e 100644 --- "a/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" +++ "b/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" @@ -6,7 +6,7 @@ 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { diff --git "a/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" "b/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" index ec5658947a..aea40f9a71 100644 --- "a/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" +++ "b/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" @@ -22,7 +22,7 @@ 上面的等值没有很强的规律,但是我们可以发现 y+z 就是圆环的总长度,因此我们将上面的等式再分解:x=(N-2)(y+z)+z。这个等式左边是从起点x1 到环入口节点 y1 的长度,而右边是在圆环中走过 (N-2) 圈,再从相遇点 z1 再走过长度为 z 的长度。此时我们可以发现如果让两个指针同时从起点 x1 和相遇点 z1 开始,每次只走过一个距离,那么最后他们会在环入口节点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { diff --git "a/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" "b/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" index 37b6e2f903..b3b5b4df99 100644 --- "a/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" +++ "b/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" "b/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" index e4772db926..7fd34ab3d1 100644 --- "a/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" +++ "b/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" "b/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" index 4d137e2cea..abe1c39540 100644 --- "a/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" +++ "b/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" index 80f49f571c..94d658aafb 100644 --- "a/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" "b/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" index 32636dd827..1d5435d8a8 100644 --- "a/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" +++ "b/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" @@ -6,7 +6,7 @@ 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" "b/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" index 4d0031d651..d249e72b5c 100644 --- "a/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" +++ "b/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" @@ -24,7 +24,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java diff --git "a/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" index 4f9714e29d..6c963b1591 100644 --- "a/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" @@ -8,7 +8,7 @@ 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 diff --git "a/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" "b/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" index bc9ca61cb6..6741f31e22 100644 --- "a/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" +++ "b/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" @@ -8,7 +8,7 @@ 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 diff --git "a/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" "b/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" index 2304a2540a..95629ac442 100644 --- "a/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" +++ "b/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" @@ -8,7 +8,7 @@ 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 diff --git "a/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" "b/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" index 908c90c3bd..1f382d6b05 100644 --- "a/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" +++ "b/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" @@ -18,21 +18,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { diff --git "a/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" index b68fba1417..5ab2372adb 100644 --- "a/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ "b/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" @@ -6,7 +6,7 @@ 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" "b/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" index 9f567a5b3d..ff28bd87f9 100644 --- "a/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" +++ "b/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" @@ -28,7 +28,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { diff --git "a/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" "b/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" index 452652e964..efe83db60c 100644 --- "a/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" +++ "b/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" @@ -27,7 +27,7 @@ Output: -

+

```java public String replaceSpace(StringBuffer str) { diff --git "a/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" "b/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" index b7e0cbdc75..371e83419d 100644 --- "a/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" +++ "b/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" "b/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" index 8c49c2dc27..0aeb411e27 100644 --- "a/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" +++ "b/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" @@ -6,7 +6,7 @@ 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 diff --git "a/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" index 56f8797f86..d2cdf538f8 100644 --- "a/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" @@ -6,7 +6,7 @@ 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" "b/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" index d7bbb3b0d4..fb78ed03b9 100644 --- "a/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" +++ "b/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" @@ -8,7 +8,7 @@ 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -39,13 +39,13 @@ node2.next = node3; node1.next = node2; ``` -

+

为了能将一个节点插入头部,我们引入了一个叫头结点的辅助节点,该节点不存储值,只是为了方便进行插入操作。不要将头结点与第一个节点混起来,第一个节点是链表中第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -72,7 +72,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { diff --git "a/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" "b/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" index aaa42b6642..d298cc9af6 100644 --- "a/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" +++ "b/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" @@ -8,7 +8,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 diff --git "a/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" "b/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" index d71becc99e..9fde275c1f 100644 --- "a/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" +++ "b/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" @@ -8,7 +8,7 @@ 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 diff --git "a/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" "b/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" index a467388d97..499319a5e5 100644 --- "a/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" +++ "b/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" @@ -8,7 +8,7 @@ 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 diff --git "a/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" "b/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" index 4829a10f8c..8317ca2a0d 100644 --- "a/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" +++ "b/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" @@ -8,7 +8,7 @@ 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 diff --git "a/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" index c31d43484a..e77c9665f0 100644 --- "a/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ "b/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" @@ -11,7 +11,7 @@ 在二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -35,7 +35,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" index ff82f2aaa7..b557ea0ba0 100644 --- "a/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" @@ -10,13 +10,13 @@ -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。然后分别对左右子树递归地求解。 -

+

```java // 缓存中序遍历数组每个值对应的索引 diff --git "a/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" "b/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" index 92bfe9a9bf..38d2641420 100644 --- "a/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" +++ "b/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" @@ -35,17 +35,17 @@ void traverse(TreeNode root) { } ``` -

+

① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { diff --git "a/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" "b/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" index bf9fd343ad..7d1f24ec38 100644 --- "a/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" +++ "b/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" @@ -12,7 +12,7 @@ in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git a/docs/notes/Docker.md b/docs/notes/Docker.md index 3df19303c2..7647d26c91 100644 --- a/docs/notes/Docker.md +++ b/docs/notes/Docker.md @@ -14,13 +14,13 @@ Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。 -

+

# 二、与虚拟机的比较 虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。 -

+

## 启动速度 @@ -74,7 +74,7 @@ Docker 轻量级的特点使得它很适合用于部署、维护、组合微服 构建容器时,通过在镜像的基础上添加一个可写层(writable layer),用来保存着容器运行过程中的修改。 -

+

# 参考资料 diff --git a/docs/notes/Git.md b/docs/notes/Git.md index b449764823..c0939994cc 100644 --- a/docs/notes/Git.md +++ b/docs/notes/Git.md @@ -18,7 +18,7 @@ Git 属于分布式版本控制系统,而 SVN 属于集中式。 -

+

集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 @@ -40,45 +40,45 @@ Github 就是一个中心服务器。 Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 存储所有分支信息,使用一个 HEAD 指针指向当前分支。 -

+

- git add files 把文件的修改添加到暂存区 - git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了 - git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files - git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改 -

+

可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。 - git commit -a 直接把所有文件的修改添加到暂存区然后执行提交 - git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作 -

+

# 分支实现 使用指针将每个提交连接成一条时间线,HEAD 指针指向当前分支指针。 -

+

新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支,表示新分支成为当前分支。 -

+

每次提交只会让当前分支指针向前移动,而其它分支指针不会移动。 -

+

合并分支也只需要改变指针即可。 -

+

# 冲突 当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。 -

+

Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。 @@ -100,7 +100,7 @@ Creating a new branch is quick AND simple. $ git merge --no-ff -m "merge with no-ff" dev ``` -

+

# 分支管理策略 @@ -108,7 +108,7 @@ master 分支应该是非常稳定的,只用来发布新版本; 日常开发在开发分支 dev 上进行。 -

+

# 储藏(Stashing) @@ -148,7 +148,7 @@ $ ssh-keygen -t rsa -C "youremail@example.com" # Git 命令一览 -

+

比较详细的地址:http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf diff --git a/docs/notes/HTTP.md b/docs/notes/HTTP.md index ac3d32f16a..8501eff542 100644 --- a/docs/notes/HTTP.md +++ b/docs/notes/HTTP.md @@ -62,17 +62,17 @@ URI 包含 URL 和 URN。 -

+

## 请求和响应报文 ### 1. 请求报文 -

+

### 2. 响应报文 -

+

# 二、HTTP 方法 @@ -159,7 +159,7 @@ DELETE /file.html HTTP/1.1 CONNECT www.example.com:443 HTTP/1.1 ``` -

+

## TRACE @@ -302,7 +302,7 @@ CONNECT www.example.com:443 HTTP/1.1 ## 连接管理 -

+

### 1. 短连接与长连接 @@ -631,11 +631,11 @@ HTTP/1.1 使用虚拟主机技术,使得一台服务器拥有多个域名, - 用户察觉得到正向代理的存在。 -

+

- 而反向代理一般位于内部网络中,用户察觉不到。 -

+

### 2. 网关 @@ -657,7 +657,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) 通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。 -

+

## 加密 @@ -668,7 +668,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:运算速度快; - 缺点:无法安全地将密钥传输给通信方。 -

+

### 2.非对称密钥加密 @@ -681,13 +681,16 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:可以更安全地将公开密钥传输给通信发送方; - 缺点:运算速度慢。 -

+

### 3. HTTPS 采用的加密方式 -HTTPS 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率。(下图中的 Session Key 就是对称密钥) +上面提到对称密钥加密方式的传输效率更高,但是无法安全地将密钥 Secret Key 传输给通信方。而非对称密钥加密方式可以保证传输的安全性,因此我们可以利用非对称密钥加密方式将 Secret Key 传输给通信方。HTTPS 采用混合的加密机制,正是利用了上面提到的方案: -

+- 使用非对称密钥加密方式,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性; +- 获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。(下图中的 Session Key 就是 Secret Key) + +

## 认证 @@ -699,7 +702,7 @@ HTTPS 采用混合的加密机制,使用非对称密钥加密用于传输对 进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。 -

+

## 完整性保护 @@ -728,7 +731,7 @@ HTTP/1.x 实现简单是以牺牲性能为代价的: HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式的。 -

+

在通信过程中,只会有一个 TCP 连接存在,它承载了任意数量的双向数据流(Stream)。 @@ -736,13 +739,13 @@ HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式 - 消息(Message)是与逻辑请求或响应对应的完整的一系列帧。 - 帧(Frame)是最小的通信单位,来自不同数据流的帧可以交错发送,然后再根据每个帧头的数据流标识符重新组装。 -

+

## 服务端推送 HTTP/2.0 在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了。例如客户端请求 page.html 页面,服务端就把 script.js 和 style.css 等与之相关的资源一起发给客户端。 -

+

## 首部压缩 @@ -752,7 +755,7 @@ HTTP/2.0 要求客户端和服务器同时维护和更新一个包含之前见 不仅如此,HTTP/2.0 也使用 Huffman 编码对首部字段进行压缩。 -

+

# 八、HTTP/1.1 新特性 diff --git a/docs/notes/Java IO.md b/docs/notes/Java IO.md index 4af023377e..41b4ed3ec5 100644 --- a/docs/notes/Java IO.md +++ b/docs/notes/Java IO.md @@ -97,7 +97,7 @@ Java I/O 使用了装饰者模式来实现。以 InputStream 为例, - FileInputStream 是 InputStream 的子类,属于具体组件,提供了字节流的输入操作; - FilterInputStream 属于抽象装饰者,装饰者用于装饰组件,为组件提供额外的功能。例如 BufferedInputStream 为 FileInputStream 提供缓存的功能。 -

+

实例化一个具有缓存功能的字节流对象时,只需要在 FileInputStream 对象上再套一层 BufferedInputStream 对象即可。 @@ -277,7 +277,7 @@ public static void main(String[] args) throws IOException { - Socket:客户端类 - 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。 -

+

## Datagram @@ -339,23 +339,23 @@ I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重 ① 新建一个大小为 8 个字节的缓冲区,此时 position 为 0,而 limit = capacity = 8。capacity 变量不会改变,下面的讨论会忽略它。 -

+

② 从输入通道中读取 5 个字节数据写入缓冲区中,此时 position 为 5,limit 保持不变。 -

+

③ 在将缓冲区的数据写到输出通道之前,需要先调用 flip() 方法,这个方法将 limit 设置为当前 position,并将 position 设置为 0。 -

+

④ 从缓冲区中取 4 个字节到输出缓冲中,此时 position 设为 4。 -

+

⑤ 最后需要调用 clear() 方法来清空缓冲区,此时 position 和 limit 都被设置为最初位置。 -

+

## 文件 NIO 实例 @@ -413,7 +413,7 @@ NIO 实现了 IO 多路复用中的 Reactor 模型,一个线程 Thread 使用 应该注意的是,只有套接字 Channel 才能配置为非阻塞,而 FileChannel 不能,为 FileChannel 配置非阻塞也没有意义。 -

+

### 1. 创建选择器 diff --git "a/docs/notes/Java \345\237\272\347\241\200.md" "b/docs/notes/Java \345\237\272\347\241\200.md" index d0d43b3b5e..c504623430 100644 --- "a/docs/notes/Java \345\237\272\347\241\200.md" +++ "b/docs/notes/Java \345\237\272\347\241\200.md" @@ -193,7 +193,7 @@ value 数组被声明为 final,这意味着 value 数组初始化之后就不 如果一个 String 对象已经被创建过了,那么就会从 String Pool 中取得引用。只有 String 是不可变的,才可能使用 String Pool。 -

+

**3. 安全性** @@ -1356,7 +1356,7 @@ Throwable 可以用来表示任何可以作为异常抛出的类,分为两种 - **受检异常** :需要用 try...catch... 语句捕获并进行处理,并且可以从异常中恢复; - **非受检异常** :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序崩溃并且无法恢复。 -

+

- [Java 入门之异常处理](https://www.tianmaying.com/tutorial/Java-Exception) - [Java 异常的面试问题及答案 -Part 1](http://www.importnew.com/7383.html) diff --git "a/docs/notes/Java \345\256\271\345\231\250.md" "b/docs/notes/Java \345\256\271\345\231\250.md" index 23537532cb..50b21fbcc2 100644 --- "a/docs/notes/Java \345\256\271\345\231\250.md" +++ "b/docs/notes/Java \345\256\271\345\231\250.md" @@ -24,7 +24,7 @@ ## Collection -

+

### 1. Set @@ -50,7 +50,7 @@ ## Map -

+

- TreeMap:基于红黑树实现。 @@ -65,7 +65,7 @@ ## 迭代器模式 -

+

Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。 @@ -126,7 +126,7 @@ public class ArrayList extends AbstractList private static final int DEFAULT_CAPACITY = 10; ``` -

+

### 2. 扩容 @@ -430,7 +430,7 @@ transient Node first; transient Node last; ``` -

+

### 2. 与 ArrayList 的比较 @@ -452,7 +452,7 @@ transient Entry[] table; Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶取模运算结果相同的 Entry。 -

+

```java static class Entry implements Map.Entry { @@ -528,7 +528,7 @@ map.put("K3", "V3"); - 计算键值对所在的桶; - 在链表上顺序查找,时间复杂度显然和链表的长度成正比。 -

+

### 3. put 操作 @@ -864,7 +864,7 @@ final Segment[] segments; static final int DEFAULT_CONCURRENCY_LEVEL = 16; ``` -

+

### 2. size 操作 diff --git "a/docs/notes/Java \345\271\266\345\217\221.md" "b/docs/notes/Java \345\271\266\345\217\221.md" index dc7e314dc9..ee8a6fd5b9 100644 --- "a/docs/notes/Java \345\271\266\345\217\221.md" +++ "b/docs/notes/Java \345\271\266\345\217\221.md" @@ -61,7 +61,7 @@ # 一、线程状态转换 -

+

## 新建(New) @@ -736,7 +736,7 @@ java.util.concurrent(J.U.C)大大提高了并发性能,AQS 被认为是 J. 维护了一个计数器 cnt,每次调用 countDown() 方法会让计数器的值减 1,减到 0 的时候,那些因为调用 await() 方法而在等待的线程就会被唤醒。 -

+

```java public class CountdownLatchExample { @@ -785,7 +785,7 @@ public CyclicBarrier(int parties) { } ``` -

+

```java public class CyclicBarrierExample { @@ -1022,7 +1022,7 @@ public class ForkJoinPool extends AbstractExecutorService ForkJoinPool 实现了工作窃取算法来提高 CPU 的利用率。每个线程都维护了一个双端队列,用来存储需要执行的任务。工作窃取算法允许空闲的线程从其它线程的双端队列中窃取一个任务来执行。窃取的任务必须是最晚的任务,避免和队列所属线程发生竞争。例如下图中,Thread2 从 Thread1 的队列中拿出最晚的 Task1 任务,Thread1 会拿出 Task2 来执行,这样就避免发生竞争。但是如果队列中只有一个任务时还是会发生竞争。 -

+

# 九、线程不安全示例 @@ -1077,19 +1077,19 @@ Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异, 加入高速缓存带来了一个新的问题:缓存一致性。如果多个缓存共享同一块主内存区域,那么多个缓存的数据可能会不一致,需要一些协议来解决这个问题。 -

+

所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存或者寄存器中,保存了该线程使用的变量的主内存副本拷贝。 线程只能直接操作工作内存中的变量,不同线程之间的变量值传递需要通过主内存来完成。 -

+

## 内存间交互操作 Java 内存模型定义了 8 个操作来完成主内存和工作内存的交互操作。 -

+

- read:把一个变量的值从主内存传输到工作内存中 - load:在 read 之后执行,把 read 得到的值放入工作内存的变量副本中 @@ -1112,11 +1112,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 重写之前线程不安全的代码之后得到以下线程安全实现: @@ -1224,7 +1224,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 在一个线程内,在程序前面的操作先行发生于后面的操作。 -

+

### 2. 管程锁定规则 @@ -1232,7 +1232,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 一个 unlock 操作先行发生于后面对同一个锁的 lock 操作。 -

+

### 3. volatile 变量规则 @@ -1240,7 +1240,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作。 -

+

### 4. 线程启动规则 @@ -1248,7 +1248,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 Thread 对象的 start() 方法调用先行发生于此线程的每一个动作。 -

+

### 5. 线程加入规则 @@ -1256,7 +1256,7 @@ Thread 对象的 start() 方法调用先行发生于此线程的每一个动作 Thread 对象的结束先行发生于 join() 方法返回。 -

+

### 6. 线程中断规则 @@ -1474,7 +1474,7 @@ public class ThreadLocalExample1 { 它所对应的底层结构图为: -

+

每个 Thread 都有一个 ThreadLocal.ThreadLocalMap 对象。 @@ -1577,17 +1577,17 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 以下是 HotSpot 虚拟机对象头的内存布局,这些数据被称为 Mark Word。其中 tag bits 对应了五个状态,这些状态在右侧的 state 表格中给出。除了 marked for gc 状态,其它四个状态已经在前面介绍过了。 -

+

下图左侧是一个线程的虚拟机栈,其中有一部分称为 Lock Record 的区域,这是在轻量级锁运行过程创建的,用于存放锁对象的 Mark Word。而右侧就是一个锁对象,包含了 Mark Word 和其它信息。 -

+

轻量级锁是相对于传统的重量级锁而言,它使用 CAS 操作来避免重量级锁使用互斥量的开销。对于绝大部分的锁,在整个同步周期内都是不存在竞争的,因此也就不需要都使用互斥量进行同步,可以先采用 CAS 操作进行同步,如果 CAS 失败了再改用互斥量进行同步。 当尝试获取一个锁对象时,如果锁对象标记为 0 01,说明锁对象的锁未锁定(unlocked)状态。此时虚拟机在当前线程的虚拟机栈中创建 Lock Record,然后使用 CAS 操作将对象的 Mark Word 更新为 Lock Record 指针。如果 CAS 操作成功了,那么线程就获取了该对象上的锁,并且对象的 Mark Word 的锁标记变为 00,表示该对象处于轻量级锁状态。 -

+

如果 CAS 操作失败了,虚拟机首先会检查对象的 Mark Word 是否指向当前线程的虚拟机栈,如果是的话说明当前线程已经拥有了这个锁对象,那就可以直接进入同步块继续执行,否则说明这个锁对象已经被其他线程线程抢占了。如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁。 @@ -1599,7 +1599,7 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 当有另外一个线程去尝试获取这个锁对象时,偏向状态就宣告结束,此时撤销偏向(Revoke Bias)后恢复到未锁定状态或者轻量级锁状态。 -

+

# 十三、多线程开发良好的实践 diff --git "a/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" "b/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" index e2a2bff1b3..1a6e0cff26 100644 --- "a/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" +++ "b/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" @@ -32,7 +32,7 @@ # 一、运行时数据区域 -

+

## 程序计数器 @@ -42,7 +42,7 @@ 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 -

+

可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小,在 JDK 1.4 中默认为 256K,而在 JDK 1.5+ 默认为 1M: @@ -61,7 +61,7 @@ java -Xss2M HackTheJava 本地方法一般是用其它语言(C、C++ 或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序,对待这些方法需要特别处理。 -

+

## 堆 @@ -146,7 +146,7 @@ Java 虚拟机使用该算法来判断对象是否可被回收,GC Roots 一般 - 方法区中类静态属性引用的对象 - 方法区中的常量引用的对象 -

+

### 3. 方法区的回收 @@ -227,7 +227,7 @@ obj = null; ### 1. 标记 - 清除 -

+

在标记阶段,程序会检查每个对象是否为活动对象,如果是活动对象,则程序会在对象头部打上标记。 @@ -242,7 +242,7 @@ obj = null; ### 2. 标记 - 整理 -

+

让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。 @@ -256,7 +256,7 @@ obj = null; ### 3. 复制 -

+

将内存划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了就将还存活的对象复制到另一块上面,然后再把使用过的内存空间进行一次清理。 @@ -277,7 +277,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ## 垃圾收集器 -

+

以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 @@ -286,7 +286,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ### 1. Serial 收集器 -

+

Serial 翻译为串行,也就是说它以串行的方式执行。 @@ -298,7 +298,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 2. ParNew 收集器 -

+

它是 Serial 收集器的多线程版本。 @@ -318,7 +318,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 4. Serial Old 收集器 -

+

是 Serial 收集器的老年代版本,也是给 Client 场景下的虚拟机使用。如果用在 Server 场景下,它有两大用途: @@ -327,7 +327,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 5. Parallel Old 收集器 -

+

是 Parallel Scavenge 收集器的老年代版本。 @@ -335,7 +335,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 6. CMS 收集器 -

+

CMS(Concurrent Mark Sweep),Mark Sweep 指的是标记 - 清除算法。 @@ -360,17 +360,17 @@ G1(Garbage-First),它是一款面向服务端应用的垃圾收集器, 堆被分为新生代和老年代,其它收集器进行收集的范围都是整个新生代或者老年代,而 G1 可以直接对新生代和老年代一起回收。 -

+

G1 把堆划分成多个大小相等的独立区域(Region),新生代和老年代不再物理隔离。 -

+

通过引入 Region 的概念,从而将原来的一整块内存空间划分成多个的小空间,使得每个小空间可以单独进行垃圾回收。这种划分方法带来了很大的灵活性,使得可预测的停顿时间模型成为可能。通过记录每个 Region 垃圾回收时间以及回收所获得的空间(这两个值是通过过去回收的经验获得),并维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的 Region。 每个 Region 都有一个 Remembered Set,用来记录该 Region 对象的引用对象所在的 Region。通过使用 Remembered Set,在做可达性分析的时候就可以避免全堆扫描。 -

+

如果不计算维护 Remembered Set 的操作,G1 收集器的运作大致可划分为以下几个步骤: @@ -458,7 +458,7 @@ G1 把堆划分成多个大小相等的独立区域(Region),新生代和 ## 类的生命周期 -

+

包括以下 7 个阶段: @@ -628,7 +628,7 @@ System.out.println(ConstClass.HELLOWORLD); 下图展示了类加载器之间的层次关系,称为双亲委派模型(Parents Delegation Model)。该模型要求除了顶层的启动类加载器外,其它的类加载器都要有自己的父类加载器。这里的父子关系一般通过组合关系(Composition)来实现,而不是继承关系(Inheritance)。 -

+

### 1. 工作过程 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index eb3ce48b4a..305174beb3 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -61,7 +61,7 @@ -

+

考虑到 dp[i] 只与 dp[i - 1] 和 dp[i - 2] 有关,因此可以只用两个变量来存储 dp[i - 1] 和 dp[i - 2],使得原来的 O(N) 空间复杂度优化为 O(1) 复杂度。 @@ -94,7 +94,7 @@ public int climbStairs(int n) { -

+

```java public int rob(int[] nums) { @@ -150,7 +150,7 @@ private int rob(int[] nums, int first, int last) { -

+

## 5. 母牛生产 @@ -162,7 +162,7 @@ private int rob(int[] nums, int first, int last) { -

+

# 矩阵路径 @@ -212,7 +212,7 @@ public int minPathSum(int[][] grid) { 题目描述:统计从矩阵左上角到右下角的路径总数,每次只能向右或者向下移动。 -

+

```java public int uniquePaths(int m, int n) { @@ -443,7 +443,7 @@ public int numDecodings(String s) { -

+

对于一个长度为 N 的序列,最长递增子序列并不一定会以 SN 为结尾,因此 dp[N] 不是序列的最长递增子序列的长度,需要遍历 dp 数组找出最大值才是所要的结果,max{ dp[i] | 1 <= i <= N} 即为所求。 @@ -616,7 +616,7 @@ public int wiggleMaxLength(int[] nums) { -

+

对于长度为 N 的序列 S1 和长度为 M 的序列 S2,dp[N][M] 就是序列 S1 和序列 S2 的最长公共子序列长度。 @@ -662,7 +662,7 @@ public int wiggleMaxLength(int[] nums) { -

+

```java // W 为背包总体积 @@ -691,7 +691,7 @@ public int knapsack(int W, int N, int[] weights, int[] values) { -

+

因为 dp[j-w] 表示 dp[i-1][j-w],因此不能先求 dp[i][j-w],防止将 dp[i-1][j-w] 覆盖。也就是说要先计算 dp[i][j] 再计算 dp[i][j-w],在程序实现时需要按倒序来循环求解。 @@ -1055,7 +1055,7 @@ public int combinationSum4(int[] nums, int target) { 题目描述:交易之后需要有一天的冷却时间。 -

+

```java public int maxProfit(int[] prices) { @@ -1098,7 +1098,7 @@ The total profit is ((8 - 1) - 2) + ((9 - 4) - 2) = 8. 题目描述:每交易一次,都要支付一定的费用。 -

+

```java public int maxProfit(int[] prices, int fee) { diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" index 5db6895dec..b24ab780f6 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" @@ -32,7 +32,7 @@ Output: index1=1, index2=2 数组中的元素最多遍历一次,时间复杂度为 O(N)。只使用了两个额外变量,空间复杂度为 O(1)。 -

+

```java public int[] twoSum(int[] numbers, int target) { @@ -102,7 +102,7 @@ Explanation: 1 * 1 + 2 * 2 = 5 Given s = "leetcode", return "leotcede". ``` -

+

使用双指针,一个指针从头向尾遍历,一个指针从尾到头遍历,当两个指针都遍历到元音字符时,交换这两个元音字符。 @@ -111,7 +111,7 @@ Given s = "leetcode", return "leotcede". - 时间复杂度为 O(N):只需要遍历所有元素一次 - 空间复杂度 O(1):只需要使用两个额外变量 -

+

```java private final static HashSet vowels = new HashSet<>( @@ -155,7 +155,7 @@ Explanation: You could delete the character 'c'. 使用双指针可以很容易判断一个字符串是否是回文字符串:令一个指针从左到右遍历,一个指针从右到左遍历,这两个指针同时移动一个位置,每次都判断两个指针指向的字符是否相同,如果都相同,字符串才是具有左右对称性质的回文字符串。 -

+

本题的关键是处理删除一个字符。在使用双指针遍历字符串时,如果出现两个指针指向的字符不相等的情况,我们就试着删除一个字符,再判断删除完之后的字符串是否是回文字符串。 @@ -163,7 +163,7 @@ Explanation: You could delete the character 'c'. 在试着删除字符时,我们既可以删除左指针指向的字符,也可以删除右指针指向的字符。 -

+

```java public boolean validPalindrome(String s) { diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" index b5155262c5..09fdc70d43 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" @@ -200,7 +200,7 @@ public String frequencySort(String s) { 有三种颜色的球,算法的目标是将这三种球按颜色顺序正确地排列。它其实是三向切分快速排序的一种变种,在三向切分快速排序中,每次切分都将数组分成三个区间:小于切分元素、等于切分元素、大于切分元素,而该算法是将数组分成三个区间:等于红色、等于白色、等于蓝色。 -

+

## 1. 按颜色进行排序 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" index 6f3735d9cd..9f14efbd0c 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" @@ -32,7 +32,7 @@ # BFS -

+

广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 @@ -269,7 +269,7 @@ private int getShortestPath(List[] graphic, int start, int end) { # DFS -

+

广度优先搜索一层一层遍历,每一层得到的所有新节点,要用队列存储起来以备下一层遍历的时候再遍历。 @@ -591,7 +591,7 @@ Backtracking(回溯)属于 DFS。 [Leetcode](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) / [力扣](https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/description/) -

+

```html Input:Digit string "23" @@ -1194,7 +1194,7 @@ private boolean isPalindrome(String s, int begin, int end) { [Leetcode](https://leetcode.com/problems/sudoku-solver/description/) / [力扣](https://leetcode-cn.com/problems/sudoku-solver/description/) -

+

```java private boolean[][] rowsUsed = new boolean[9][10]; @@ -1253,7 +1253,7 @@ private int cubeNum(int i, int j) { [Leetcode](https://leetcode.com/problems/n-queens/description/) / [力扣](https://leetcode-cn.com/problems/n-queens/description/) -

+

在 n\*n 的矩阵中摆放 n 个皇后,并且每个皇后不能在同一行,同一列,同一对角线上,求所有的 n 皇后的解。 @@ -1261,12 +1261,12 @@ private int cubeNum(int i, int j) { 45 度对角线标记数组的长度为 2 \* n - 1,通过下图可以明确 (r, c) 的位置所在的数组下标为 r + c。 -

+

135 度对角线标记数组的长度也是 2 \* n - 1,(r, c) 的位置所在的数组下标为 n - 1 - (r - c)。 -

+

```java private List> solutions; diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" index 7083450342..e21daeeabb 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" @@ -1045,7 +1045,7 @@ private void inOrder(TreeNode node, List nums) { # Trie -

+

Trie,又称前缀树或字典树,用于判断字符串是否存在或者是否具有某种字符串前缀。 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" index 9a9a20fd99..f75bddc980 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" @@ -35,7 +35,7 @@ Output: 2 证明:假设在某次选择中,贪心策略选择给当前满足度最小的孩子分配第 m 个饼干,第 m 个饼干为可以满足该孩子的最小饼干。假设存在一种最优策略,可以给该孩子分配第 n 个饼干,并且 m < n。我们可以发现,经过这一轮分配,贪心策略分配后剩下的饼干一定有一个比最优策略来得大。因此在后续的分配中,贪心策略一定能满足更多的孩子。也就是说不存在比贪心策略更优的策略,即贪心策略就是最优策略。 -

+

```java public int findContentChildren(int[] grid, int[] size) { diff --git a/docs/notes/Linux.md b/docs/notes/Linux.md index 106b347d6d..c7fb483095 100644 --- a/docs/notes/Linux.md +++ b/docs/notes/Linux.md @@ -155,7 +155,7 @@ Linux 发行版是 Linux 内核及各种应用软件的集成版本。 - 编辑模式(Insert mode):按下 "i" 等按键之后进入,可以对文本进行编辑; - 指令列模式(Bottom-line mode):按下 ":" 按键之后进入,用于保存退出等操作。 -

+

在指令列模式下,有以下命令用于离开或者保存文件。 @@ -189,25 +189,25 @@ GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操 IDE(ATA)全称 Advanced Technology Attachment,接口速度最大为 133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。 -

+

### 2. SATA SATA 全称 Serial ATA,也就是使用串口的 ATA 接口,抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能。SATA-II 的接口速度为 300MiB/s,而 SATA-III 标准可达到 600MiB/s 的传输速度。SATA 的数据线也比 ATA 的细得多,有利于机箱内的空气流通,整理线材也比较方便。 -

+

### 3. SCSI SCSI 全称是 Small Computer System Interface(小型机系统接口),SCSI 硬盘广为工作站以及个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速 15000rpm 的高转速,且传输时 CPU 占用率较低,但是单价也比相同容量的 ATA 及 SATA 硬盘更加昂贵。 -

+

### 4. SAS SAS(Serial Attached SCSI)是新一代的 SCSI 技术,和 SATA 硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s。此外也通过缩小连接线改善系统内部空间等。 -

+

## 磁盘的文件名 @@ -242,7 +242,7 @@ GPT 没有扩展分区概念,都是主分区,每个 LBA 可以分 4 个分 MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB = 8 ZB。 -

+

## 开机检测程序 @@ -250,7 +250,7 @@ MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB BIOS(Basic Input/Output System,基本输入输出系统),它是一个固件(嵌入在硬件中的软件),BIOS 程序存放在断电后内容不会丢失的只读内存中。 -

+

BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可以开机的磁盘,并读取磁盘第一个扇区的主要开机记录(MBR),由主要开机记录(MBR)执行其中的开机管理程序,这个开机管理程序会加载操作系统的核心文件。 @@ -258,7 +258,7 @@ BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可 下图中,第一扇区的主要开机记录(MBR)中的开机管理程序提供了两个选单:M1、M2,M1 指向了 Windows 操作系统,而 M2 指向其它分区的启动扇区,里面包含了另外一个开机管理程序,提供了一个指向 Linux 的选单。 -

+

安装多重引导,最好先安装 Windows 再安装 Linux。因为安装 Windows 时会覆盖掉主要开机记录(MBR),而 Linux 可以选择将开机管理程序安装在主要开机记录(MBR)或者其它分区的启动扇区,并且可以设置开机管理程序的选单。 @@ -284,17 +284,17 @@ BIOS 不可以读取 GPT 分区表,而 UEFI 可以。 - superblock:记录文件系统的整体信息,包括 inode 和 block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等; - block bitmap:记录 block 是否被使用的位图。 -

+

## 文件读取 对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中查找文件内容所在的所有 block,然后把所有 block 的内容读出来。 -

+

而对于 FAT 文件系统,它没有 inode,每个 block 中存储着下一个 block 的编号。 -

+

## 磁盘碎片 @@ -331,7 +331,7 @@ inode 具有以下特点: inode 中记录了文件内容所在的 block 编号,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block 编号。因此引入了间接、双间接、三间接引用。间接引用让 inode 记录的引用 block 块记录引用信息。 -

+

## 目录 @@ -357,7 +357,7 @@ ext3/ext4 文件系统引入了日志功能,可以利用日志来修复文件 - /usr (unix software resource):所有系统默认软件都会安装到这个目录; - /var (variable):存放系统或程序运行过程中的数据文件。 -

+

# 五、文件 @@ -524,7 +524,7 @@ cp [-adfilprsu] source destination ## 链接 -

+

```html @@ -652,7 +652,7 @@ example: find . -name "shadow*" +4、4 和 -4 的指示的时间范围如下: -

+

**② 与文件拥有者和所属群组有关的选项** @@ -1166,7 +1166,7 @@ dmtsai lines: 5 columns: 9 | T | stopped (either by a job control signal or because it is being traced)
结束,进程既可以被作业控制信号结束,也可能是正在被追踪。|
-

+

## SIGCHLD @@ -1179,7 +1179,7 @@ dmtsai lines: 5 columns: 9 在子进程退出时,它的进程描述符不会立即释放,这是为了让父进程得到子进程信息,父进程通过 wait() 和 waitpid() 来获得一个已经退出的子进程的信息。 -

+

## wait() diff --git a/docs/notes/MySQL.md b/docs/notes/MySQL.md index 14da320107..2239d48a72 100644 --- a/docs/notes/MySQL.md +++ b/docs/notes/MySQL.md @@ -42,7 +42,7 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且小于等于 keyi+1。 -

+

### 2. 操作 @@ -84,11 +84,11 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 InnoDB 的 B+Tree 索引分为主索引和辅助索引。主索引的叶子节点 data 域记录着完整的数据记录,这种索引方式被称为聚簇索引。因为无法把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。 -

+

辅助索引的叶子节点的 data 域记录着主键的值,因此在使用辅助索引进行查找时,需要先查找到主键值,然后再到主索引中进行查找。 -

+

### 2. 哈希索引 @@ -350,7 +350,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 当一个表的数据不断增多时,Sharding 是必然的选择,它可以将数据分布到集群的不同节点上,从而缓存单个数据库的压力。 -

+

## 垂直切分 @@ -358,7 +358,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 在数据库的层面使用垂直切分将按数据库中表的密集程度部署到不同的库中,例如将原来的电商数据库垂直切分成商品数据库、用户数据库等。 -

+

## Sharding 策略 @@ -392,7 +392,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 - **I/O 线程** :负责从主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log)。 - **SQL 线程** :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中重放(Replay)。 -

+

## 读写分离 @@ -406,7 +406,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 读写分离常用代理方式来实现,代理服务器接收应用层传来的读写请求,然后决定转发到哪个服务器。 -

+

# 参考资料 diff --git a/docs/notes/Redis.md b/docs/notes/Redis.md index 38901f41b7..a8b71352fd 100644 --- a/docs/notes/Redis.md +++ b/docs/notes/Redis.md @@ -67,7 +67,7 @@ Redis 支持很多特性,例如将内存中的数据持久化到硬盘中, ## STRING -

+

```html > set hello world @@ -82,7 +82,7 @@ OK ## LIST -

+

```html > rpush list-key item @@ -110,7 +110,7 @@ OK ## SET -

+

```html > sadd set-key item @@ -144,7 +144,7 @@ OK ## HASH -

+

```html > hset hash-key sub-key1 value1 @@ -175,7 +175,7 @@ OK ## ZSET -

+

```html > zadd zset-key 728 member1 @@ -317,11 +317,11 @@ int dictRehash(dict *d, int n) { 跳跃表是基于多指针有序链表实现的,可以看成多个有序链表。 -

+

在查找时,从上层指针开始查找,找到对应的区间之后再到下一层去查找。下图演示了查找 22 的过程。 -

+

与红黑树等平衡树相比,跳跃表具有以下优点: @@ -472,7 +472,7 @@ Redis 服务器是一个事件驱动程序。 Redis 基于 Reactor 模式开发了自己的网络事件处理器,使用 I/O 多路复用程序来同时监听多个套接字,并将到达的事件传送给文件事件分派器,分派器会根据套接字产生的事件类型调用相应的事件处理器。 -

+

## 时间事件 @@ -525,7 +525,7 @@ def main(): 从事件处理的角度来看,服务器运行流程如下: -

+

# 十一、复制 @@ -545,7 +545,7 @@ def main(): 随着负载不断上升,主服务器可能无法很快地更新所有从服务器,或者重新连接和重新同步从服务器将导致系统超载。为了解决这个问题,可以创建一个中间层来分担主服务器的复制工作。中间层的服务器是最上层服务器的从服务器,又是最下层服务器的主服务器。 -

+

# 十二、Sentinel @@ -580,7 +580,7 @@ Sentinel(哨兵)可以监听集群中的服务器,并在主服务器进入 Redis 没有关系型数据库中的表这一概念来将同种类型的数据存放在一起,而是使用命名空间的方式来实现这一功能。键名的前面部分存储命名空间,后面部分的内容存储 ID,通常使用 : 来进行分隔。例如下面的 HASH 的键名为 article:92617,其中 article 为命名空间,ID 为 92617。 -

+

## 点赞功能 @@ -588,13 +588,13 @@ Redis 没有关系型数据库中的表这一概念来将同种类型的数据 为了节约内存,规定一篇文章发布满一周之后,就不能再对它进行投票,而文章的已投票集合也会被删除,可以为文章的已投票集合设置一个一周的过期时间就能实现这个规定。 -

+

## 对文章进行排序 为了按发布时间和点赞数进行排序,可以建立一个文章发布时间的有序集合和一个文章点赞数的有序集合。(下图中的 score 就是这里所说的点赞数;下面所示的有序集合分值并不直接是时间和点赞数,而是根据时间和点赞数间接计算出来的) -

+

# 参考资料 diff --git a/docs/notes/Socket.md b/docs/notes/Socket.md index 5dc40ed8b9..64fc63008c 100644 --- a/docs/notes/Socket.md +++ b/docs/notes/Socket.md @@ -46,7 +46,7 @@ Unix 有五种 I/O 模型: ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); ``` -

+

## 非阻塞式 I/O @@ -54,7 +54,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 由于 CPU 要处理更多的系统调用,因此这种模型的 CPU 利用率比较低。 -

+

## I/O 复用 @@ -64,7 +64,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时有几万个连接,那么就需要创建相同数量的线程。相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。 -

+

## 信号驱动 I/O @@ -72,7 +72,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 相比于非阻塞式 I/O 的轮询方式,信号驱动 I/O 的 CPU 利用率更高。 -

+

## 异步 I/O @@ -80,7 +80,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 异步 I/O 与信号驱动 I/O 的区别在于,异步 I/O 的信号是通知应用进程 I/O 完成,而信号驱动 I/O 的信号是通知应用进程可以开始 I/O。 -

+

## 五大 I/O 模型比较 @@ -91,7 +91,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 非阻塞式 I/O 、信号驱动 I/O 和异步 I/O 在第一阶段不会阻塞。 -

+

# 二、I/O 复用 diff --git "a/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" "b/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" index 475bbc560c..09a932d7cc 100644 --- "a/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" +++ "b/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" @@ -48,11 +48,11 @@ - 用 min、max 表示数量范围; - 用 first、last 表示访问空间的包含范围; -

+

- begin、end 表示访问空间的排除范围,即 end 不包含尾部。 -

+

# 四、良好的代码风格 diff --git "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" index bf23703c05..cee7f7056f 100644 --- "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" @@ -70,7 +70,7 @@ EXPIRE 指令可以为一个键值对设置一个过期时间,从而避免了 Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节点为 /app1。 -

+

### 2. 节点类型 @@ -118,7 +118,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 协调者询问参与者事务是否执行成功,参与者发回事务执行结果。询问可以看成一种投票,需要参与者都同意才能执行。 -

+

#### 1.2 提交阶段 @@ -126,7 +126,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 需要注意的是,在准备阶段,参与者执行了事务,但是还未提交。只有在提交阶段接收到协调者发来的通知后,才进行提交或者回滚。 -

+

### 2. 存在的问题 @@ -154,14 +154,14 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 2. 之后将本地消息表中的消息转发到消息队列中,如果转发成功则将消息从本地消息表中删除,否则继续重新转发。 3. 在分布式事务操作的另一方从消息队列中读取一个消息,并执行消息中的操作。 -

+

# 三、CAP 分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition Tolerance),最多只能同时满足其中两项。 -

+

## 一致性 @@ -225,7 +225,7 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE - 接受者(Acceptor):对每个提议进行投票; - 告知者(Learner):被告知投票的结果,不参与投票过程。 -

+

## 执行过程 @@ -235,19 +235,19 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE 下图演示了两个 Proposer 和三个 Acceptor 的系统中运行该算法的初始过程,每个 Proposer 都会向所有 Acceptor 发送 Prepare 请求。 -

+

当 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n1, v1],并且之前还未接收过 Prepare 请求,那么发送一个 Prepare 响应,设置当前接收到的提议为 [n1, v1],并且保证以后不会再接受序号小于 n1 的提议。 如下图,Acceptor X 在收到 [n=2, v=8] 的 Prepare 请求时,由于之前没有接收过提议,因此就发送一个 [no previous] 的 Prepare 响应,设置当前接收到的提议为 [n=2, v=8],并且保证以后不会再接受序号小于 2 的提议。其它的 Acceptor 类似。 -

+

如果 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n2, v2],并且之前已经接收过提议 [n1, v1]。如果 n1 > n2,那么就丢弃该提议请求;否则,发送 Prepare 响应,该 Prepare 响应包含之前已经接收过的提议 [n1, v1],设置当前接收到的提议为 [n2, v2],并且保证以后不会再接受序号小于 n2 的提议。 如下图,Acceptor Z 收到 Proposer A 发来的 [n=2, v=8] 的 Prepare 请求,由于之前已经接收过 [n=4, v=5] 的提议,并且 n > 2,因此就抛弃该提议请求;Acceptor X 收到 Proposer B 发来的 [n=4, v=5] 的 Prepare 请求,因为之前接收到的提议为 [n=2, v=8],并且 2 <= 4,因此就发送 [n=2, v=8] 的 Prepare 响应,设置当前接收到的提议为 [n=4, v=5],并且保证以后不会再接受序号小于 4 的提议。Acceptor Y 类似。 -

+

### 2. Accept 阶段 @@ -257,13 +257,13 @@ Proposer A 接收到两个 Prepare 响应之后,就发送 [n=2, v=8] Accept Proposer B 过后也收到了两个 Prepare 响应,因此也开始发送 Accept 请求。需要注意的是,Accept 请求的 v 需要取它收到的最大提议编号对应的 v 值,也就是 8。因此它发送 [n=4, v=8] 的 Accept 请求。 -

+

### 3. Learn 阶段 Acceptor 接收到 Accept 请求时,如果序号大于等于该 Acceptor 承诺的最小序号,那么就发送 Learn 提议给所有的 Learner。当 Learner 发现有大多数的 Acceptor 接收了某个提议,那么该提议的提议值就被 Paxos 选择出来。 -

+

## 约束条件 @@ -291,47 +291,47 @@ Raft 也是分布式一致性协议,主要是用来竞选主节点。 - 下图展示一个分布式系统的最初阶段,此时只有 Follower 没有 Leader。Node A 等待一个随机的竞选超时时间之后,没收到 Leader 发来的心跳包,因此进入竞选阶段。 -

+

- 此时 Node A 发送投票请求给其它所有节点。 -

+

- 其它节点会对请求进行回复,如果超过一半的节点回复了,那么该 Candidate 就会变成 Leader。 -

+

- 之后 Leader 会周期性地发送心跳包给 Follower,Follower 接收到心跳包,会重新开始计时。 -

+

## 多个 Candidate 竞选 - 如果有多个 Follower 成为 Candidate,并且所获得票数相同,那么就需要重新开始投票。例如下图中 Node B 和 Node D 都获得两票,需要重新开始投票。 -

+

- 由于每个节点设置的随机竞选超时时间不同,因此下一次再次出现多个 Candidate 并获得同样票数的概率很低。 -

+

## 数据同步 - 来自客户端的修改都会被传入 Leader。注意该修改还未被提交,只是写入日志中。 -

+

- Leader 会把修改复制到所有 Follower。 -

+

- Leader 会等待大多数的 Follower 也进行了修改,然后才将修改提交。 -

+

- 此时 Leader 会通知的所有 Follower 让它们也提交修改,此时所有节点的值达成一致。 -

+

# 参考 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" index 46931b58e9..1b40238cb0 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" @@ -26,13 +26,13 @@ -

+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 @@ -92,23 +92,23 @@ public class Solution { 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { @@ -133,21 +133,21 @@ public int RectCover(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { @@ -172,7 +172,7 @@ public int JumpFloor(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 @@ -232,13 +232,13 @@ public int JumpFloorII(int target) { 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 @@ -300,13 +300,13 @@ private int minNumber(int[] nums, int l, int h) { 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 @@ -522,7 +522,7 @@ public int NumberOf1(int n) { -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 @@ -592,11 +592,11 @@ private void printNumber(char[] number) { ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 @@ -630,7 +630,7 @@ public ListNode deleteNode(ListNode head, ListNode tobeDelete) { ## 题目描述 -

+

## 解题描述 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" index aff1be3cbb..854388270d 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" @@ -70,7 +70,7 @@ public boolean isNumeric(char[] str) { 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 @@ -131,7 +131,7 @@ private void swap(int[] nums, int i, int j) { 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { @@ -165,7 +165,7 @@ public ListNode FindKthToTail(ListNode head, int k) { 在相遇点,slow 要到环的入口点还需要移动 z 个节点,如果让 fast 重新从头开始移动,并且速度变为每次移动一个节点,那么它到环入口点还需要移动 x 个节点。在上面已经推导出 x=z,因此 fast 和 slow 将在环入口点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { @@ -228,7 +228,7 @@ public ListNode ReverseList(ListNode head) { ## 题目描述 -

+

## 解题思路 @@ -280,7 +280,7 @@ public ListNode Merge(ListNode list1, ListNode list2) { ## 题目描述 -

+

## 解题思路 @@ -308,7 +308,7 @@ private boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) { ## 题目描述 -

+

## 解题思路 @@ -334,7 +334,7 @@ private void swap(TreeNode root) { ## 题目描述 -

+

## 解题思路 @@ -364,7 +364,7 @@ boolean isSymmetrical(TreeNode t1, TreeNode t2) { 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" index d897d973a1..f8853033b1 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" @@ -87,7 +87,7 @@ public boolean IsPopOrder(int[] pushSequence, int[] popSequence) { 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 @@ -195,7 +195,7 @@ public ArrayList> Print(TreeNode pRoot) { 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 @@ -230,7 +230,7 @@ private boolean verify(int[] sequence, int first, int last) { 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 @@ -277,21 +277,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { @@ -333,7 +333,7 @@ public RandomListNode Clone(RandomListNode pHead) { 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" index 2bcc5e842f..c0d701f7dc 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" @@ -33,7 +33,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java @@ -87,7 +87,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { @@ -132,7 +132,7 @@ Output: 从后向前遍是为了在改变 P2 所指向的内容时,不会影响到 P1 遍历原来字符串的内容。 -

+

```java public String replaceSpace(StringBuffer str) { @@ -164,7 +164,7 @@ public String replaceSpace(StringBuffer str) { 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -192,7 +192,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { - 头结点是在头插法中使用的一个额外节点,这个节点不存储值; - 第一个节点就是链表的第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -219,7 +219,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -244,13 +244,13 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。 -

+

```java // 缓存中序遍历数组每个值对应的索引 @@ -300,11 +300,11 @@ public class TreeLinkNode { ① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { @@ -337,7 +337,7 @@ public TreeLinkNode GetNext(TreeLinkNode pNode) { in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" index ab34a6d003..ed3d610d1d 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" @@ -120,7 +120,7 @@ private void merge(int[] nums, int l, int m, int h) { ## 题目描述 -

+

## 解题思路 @@ -212,7 +212,7 @@ private void inOrder(TreeNode root, int k) { 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 @@ -230,7 +230,7 @@ public int TreeDepth(TreeNode root) { 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" index 053d412920..1e9f9c310f 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" @@ -19,7 +19,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 @@ -92,7 +92,7 @@ public List> dicesSum(int n) { 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 @@ -152,7 +152,7 @@ public int LastRemaining_Solution(int n, int m) { 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 @@ -224,7 +224,7 @@ public int Add(int a, int b) { 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 @@ -289,7 +289,7 @@ public int StrToInt(String str) { 二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -309,7 +309,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 328090001e..949dddc121 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -80,7 +80,7 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT @@ -94,25 +94,25 @@ MySQL 默认采用自动提交模式。也就是说,如果不显式使用`STAR T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 -

+

## 读脏数据 T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 -

+

## 不可重复读 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。 -

+

## 幻影读 T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。 -

+

---- @@ -322,7 +322,7 @@ MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行(Record)的所有快照连接起来。 -

+

## 实现过程 @@ -536,7 +536,7 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图的 Course 和 Student 是一对多的关系。 -

+

## 表示出现多次的关系 @@ -544,19 +544,19 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。 -

+

## 联系的多向性 虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。 -

+

## 表示子类 用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。 -

+

# 参考资料 diff --git "a/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" "b/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" index 15384384ae..4df876d8cb 100644 --- "a/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" +++ "b/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" @@ -35,7 +35,7 @@ Ant 具有编译、测试和打包功能,其后出现的 Maven 在 Ant 的功能基础上又新增了依赖管理功能,而最新的 Gradle 又在 Maven 的功能基础上新增了对 Groovy 语言的支持。 -

+

Gradle 和 Maven 的区别是,它使用 Groovy 这种特定领域语言(DSL)来管理构建脚本,而不再使用 XML 这种标记性语言。因为项目如果庞大的话,XML 很容易就变得臃肿。 diff --git "a/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" "b/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" index 9d453df9f2..c4d38ede79 100644 --- "a/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" +++ "b/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" @@ -173,7 +173,7 @@ a.+c ^\s*\/\/.*$ ``` -

+

**匹配结果** diff --git "a/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" "b/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" index 7ed64fdfeb..485e25bb56 100644 --- "a/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" +++ "b/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" @@ -19,20 +19,20 @@ 消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。 -

+

## 发布/订阅 消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。 -

+

发布与订阅模式和观察者模式有以下不同: - 观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,生产者与消费者不知道对方的存在,它们之间通过频道进行通信。 - 观察者模式是同步的,当事件触发时,主题会调用观察者的方法,然后等待方法返回;而发布与订阅模式是异步的,生产者向频道发送一个消息之后,就不需要关心消费者何时去订阅这个消息,可以立即返回。 -

+

# 二、使用场景 diff --git "a/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" "b/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" index aad5fbdcfe..7969ca1f51 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" @@ -1,6 +1,6 @@ # 汉诺塔 -

+

有三个柱子,分别为 from、buffer、to。需要将 from 上的圆盘全部移动到 to 上,并且要保证小圆盘始终在大圆盘上。 @@ -8,15 +8,15 @@ ① 将 n-1 个圆盘从 from -> buffer -

+

② 将 1 个圆盘从 from -> to -

+

③ 将 n-1 个圆盘从 buffer -> to -

+

如果只有一个圆盘,那么只需要进行一次移动操作。 @@ -67,7 +67,7 @@ from H1 to H3 生成编码时,从根节点出发,向左遍历则添加二进制位 0,向右则添加二进制位 1,直到遍历到叶子节点,叶子节点代表的字符的编码就是这个路径编码。 -

+

```java public class Huffman { diff --git "a/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" "b/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" index ca293d147f..e999528279 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" @@ -12,7 +12,7 @@ 用于解决动态连通性问题,能动态连接两个点,并且判断两个点是否连通。 -

+

| 方法 | 描述 | | :---: | :---: | @@ -51,7 +51,7 @@ public abstract class UF { 但是 union 操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 -

+

```java public class QuickFindUF extends UF { @@ -91,7 +91,7 @@ public class QuickFindUF extends UF { 但是 find 操作开销很大,因为同一个连通分量的节点 id 值不同,id 值只是用来指向另一个节点。因此需要一直向上查找操作,直到找到最上层的节点。 -

+

```java public class QuickUnionUF extends UF { @@ -124,7 +124,7 @@ public class QuickUnionUF extends UF { 这种方法可以快速进行 union 操作,但是 find 操作和树高成正比,最坏的情况下树的高度为节点的数目。 -

+

# 加权 Quick Union @@ -132,7 +132,7 @@ public class QuickUnionUF extends UF { 理论研究证明,加权 quick-union 算法构造的树深度最多不超过 logN。 -

+

```java public class WeightedQuickUnionUF extends UF { diff --git "a/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" "b/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" index 2d89334d2d..b520d1f763 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" @@ -29,7 +29,7 @@ public abstract class Sort> { 选择排序需要 \~N2/2 次比较和 \~N 次交换,它的运行时间与输入无关,这个特点使得它对一个已经排序的数组也需要这么多的比较和交换操作。 -

+

```java public class Selection> extends Sort { @@ -56,7 +56,7 @@ public class Selection> extends Sort { 在一轮循环中,如果没有发生交换,那么说明数组已经是有序的,此时可以直接退出。 -

+

```java public class Bubble> extends Sort { @@ -90,7 +90,7 @@ public class Bubble> extends Sort { - 最坏的情况下需要 \~N2/2 比较以及 \~N2/2 次交换,最坏的情况是数组是倒序的; - 最好的情况下需要 N-1 次比较和 0 次交换,最好的情况就是数组已经有序了。 -

+

```java public class Insertion> extends Sort { @@ -113,7 +113,7 @@ public class Insertion> extends Sort { 希尔排序使用插入排序对间隔 h 的序列进行排序。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。 -

+

```java public class Shell> extends Sort { @@ -147,7 +147,7 @@ public class Shell> extends Sort { 归并排序的思想是将数组分成两部分,分别进行排序,然后归并起来。 -

+

## 1. 归并方法 @@ -243,7 +243,7 @@ public class Down2UpMergeSort> extends MergeSort { - 归并排序将数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序; - 快速排序通过一个切分元素将数组分为两个子数组,左子数组小于等于切分元素,右子数组大于等于切分元素,将这两个子数组排序也就将整个数组排序了。 -

+

```java public class QuickSort> extends Sort { @@ -274,7 +274,7 @@ public class QuickSort> extends Sort { 取 a[l] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于它的元素,交换这两个元素。不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[l] 和 a[j] 交换位置。 -

+

```java private int partition(T[] nums, int l, int h) { @@ -378,7 +378,7 @@ public T select(T[] nums, int k) { 堆可以用数组来表示,这是因为堆是完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里不使用数组索引为 0 的位置,是为了更清晰地描述节点的位置关系。 -

+

```java public class Heap> { @@ -414,7 +414,7 @@ public class Heap> { 在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作,把这种操作称为上浮。 -

+

```java private void swim(int k) { @@ -427,7 +427,7 @@ private void swim(int k) { 类似地,当一个节点比子节点来得小,也需要不断地向下进行比较和交换操作,把这种操作称为下沉。一个节点如果有两个子节点,应当与两个子节点中最大那个节点进行交换。 -

+

```java private void sink(int k) { @@ -476,13 +476,13 @@ public T delMax() { 无序数组建立堆最直接的方法是从左到右遍历数组进行上浮操作。一个更高效的方法是从右至左进行下沉操作,如果一个节点的两个节点都已经是堆有序,那么进行下沉操作可以使得这个节点为根节点的堆有序。叶子节点不需要进行下沉操作,可以忽略叶子节点的元素,因此只需要遍历一半的元素即可。 -

+

#### 5.2 交换堆顶元素与最后一个元素 交换之后需要进行下沉操作维持堆的有序状态。 -

+

```java public class HeapSort> extends Sort { diff --git "a/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" "b/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" index 133ed8af42..c2b23ca57c 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" @@ -245,13 +245,13 @@ public class BinarySearchOrderedST, Value> implement **二叉树** 是一个空链接,或者是一个有左右两个链接的节点,每个链接都指向一颗子二叉树。 -

+

**二叉查找树** (BST)是一颗二叉树,并且每个节点的值都大于等于其左子树中的所有节点的值而小于等于右子树的所有节点的值。 BST 有一个重要性质,就是它的中序遍历结果递增排序。 -

+

基本数据结构: @@ -325,7 +325,7 @@ private Value get(Node x, Key key) { 当插入的键不存在于树中,需要创建一个新节点,并且更新上层节点的链接指向该节点,使得该节点正确地链接到树中。 -

+

```java @Override @@ -354,11 +354,11 @@ private Node put(Node x, Key key, Value value) { 最好的情况下树是完全平衡的,每条空链接和根节点的距离都为 logN。 -

+

在最坏的情况下,树的高度为 N。 -

+

## 4. floor() @@ -436,7 +436,7 @@ private Node min(Node x) { 令指向最小节点的链接指向最小节点的右子树。 -

+

```java public void deleteMin() { @@ -457,7 +457,7 @@ public Node deleteMin(Node x) { - 如果待删除的节点只有一个子树, 那么只需要让指向待删除节点的链接指向唯一的子树即可; - 否则,让右子树的最小节点替换该节点。 -

+

```java public void delete(Key key) { @@ -520,7 +520,7 @@ private List keys(Node x, Key l, Key h) { 2-3 查找树引入了 2- 节点和 3- 节点,目的是为了让树平衡。一颗完美平衡的 2-3 查找树的所有空链接到根节点的距离应该是相同的。 -

+

## 1. 插入操作 @@ -530,11 +530,11 @@ private List keys(Node x, Key l, Key h) { - 如果插入到 2- 节点上,那么直接将新节点和原来的节点组成 3- 节点即可。 -

+

- 如果是插入到 3- 节点上,就会产生一个临时 4- 节点时,需要将 4- 节点分裂成 3 个 2- 节点,并将中间的 2- 节点移到上层节点中。如果上移操作继续产生临时 4- 节点则一直进行分裂上移,直到不存在临时 4- 节点。 -

+

## 2. 性质 @@ -546,7 +546,7 @@ private List keys(Node x, Key l, Key h) { 红黑树是 2-3 查找树,但它不需要分别定义 2- 节点和 3- 节点,而是在普通的二叉查找树之上,为节点添加颜色。指向一个节点的链接颜色如果为红色,那么这个节点和上层节点表示的是一个 3- 节点,而黑色则是普通链接。 -

+

红黑树具有以下性质: @@ -555,7 +555,7 @@ private List keys(Node x, Key l, Key h) { 画红黑树时可以将红链接画平。 -

+

```java public class RedBlackBST, Value> extends BST { @@ -575,7 +575,7 @@ public class RedBlackBST, Value> extends BST
+

```java public Node rotateLeft(Node h) { @@ -594,7 +594,7 @@ public Node rotateLeft(Node h) { 进行右旋转是为了转换两个连续的左红链接,这会在之后的插入过程中探讨。 -

+

```java public Node rotateRight(Node h) { @@ -613,7 +613,7 @@ public Node rotateRight(Node h) { 一个 4- 节点在红黑树中表现为一个节点的左右子节点都是红色的。分裂 4- 节点除了需要将子节点的颜色由红变黑之外,同时需要将父节点的颜色由黑变红,从 2-3 树的角度看就是将中间节点移到上层节点。 -

+

```java void flipColors(Node h) { @@ -631,7 +631,7 @@ void flipColors(Node h) { - 如果左子节点是红色的,而且左子节点的左子节点也是红色的,进行右旋转; - 如果左右子节点均为红色的,进行颜色转换。 -

+

```java @Override @@ -756,7 +756,7 @@ public class Transaction { 对于 N 个键,M 条链表 (N>M),如果哈希函数能够满足均匀性的条件,每条链表的大小趋向于 N/M,因此未命中的查找和插入操作所需要的比较次数为 \~N/M。 -

+

## 3. 线性探测法 @@ -765,7 +765,7 @@ public class Transaction { 使用线性探测法,数组的大小 M 应当大于键的个数 N(M>N)。 -

+

```java public class LinearProbingHashST implements UnorderedST { @@ -867,7 +867,7 @@ public void delete(Key key) { 线性探测法的成本取决于连续条目的长度,连续条目也叫聚簇。当聚簇很长时,在查找和插入时也需要进行很多次探测。例如下图中 2\~4 位置就是一个聚簇。 -

+

α = N/M,把 α 称为使用率。理论证明,当 α 小于 1/2 时探测的预计次数只在 1.5 到 2.5 之间。为了保证散列表的性能,应当调整数组的大小,使得 α 在 [1/4, 1/2] 之间。 diff --git "a/docs/notes/\347\274\223\345\255\230.md" "b/docs/notes/\347\274\223\345\255\230.md" index 347088d06f..f52d9c1aa8 100644 --- "a/docs/notes/\347\274\223\345\255\230.md" +++ "b/docs/notes/\347\274\223\345\255\230.md" @@ -211,7 +211,7 @@ CDN 主要有以下优点: - 通过部署多台服务器,从而提高系统整体的带宽性能; - 多台服务器可以看成是一种冗余机制,从而具有高可用性。 -

+

# 五、缓存问题 @@ -285,11 +285,11 @@ Distributed Hash Table(DHT) 是一种哈希分布方式,其目的是为了 将哈希空间 [0, 2n-1] 看成一个哈希环,每个服务器节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。 -

+

一致性哈希在增加或者删除节点时只会影响到哈希环中相邻的节点,例如下图中新增节点 X,只需要将它前一个节点 C 上的数据重新进行分布即可,对于节点 A、B、D 都没有影响。 -

+

## 虚拟节点 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" index c4c5b71341..ae31fdaf5e 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" @@ -22,7 +22,7 @@ 从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0\~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。 -

+

# 分页系统地址映射 @@ -32,7 +32,7 @@ 下图的页表存放着 16 个页,这 16 个页需要用 4 个比特位来进行索引定位。例如对于虚拟地址(0010 000000000100),前 4 位是存储页面号 2,读取表项内容为(110 1),页表项最后一位表示是否存在于内存中,1 表示存在。后 12 位存储偏移量。这个页对应的页框的地址为 (110 000000000100)。 -

+

# 页面置换算法 @@ -72,7 +72,7 @@ 4,7,0,7,1,0,1,2,1,2,6 ``` -

+

## 3. 最近未使用 > NRU, Not Recently Used @@ -102,7 +102,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 当页面被访问 (读或写) 时设置该页面的 R 位为 1。需要替换的时候,检查最老页面的 R 位。如果 R 位是 0,那么这个页面既老又没有被使用,可以立刻置换掉;如果是 1,就将 R 位清 0,并把该页面放到链表的尾端,修改它的装入时间使它就像刚装入的一样,然后继续从链表的头部开始搜索。 -

+

## 6. 时钟 @@ -110,7 +110,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 第二次机会算法需要在链表中移动页面,降低了效率。时钟算法使用环形链表将页面连接起来,再使用一个指针指向最老的页面。 -

+

# 分段 @@ -118,11 +118,11 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 下图为一个编译器在编译过程中建立的多个表,有 4 个表是动态增长的,如果使用分页系统的一维地址空间,动态增长的特点会导致覆盖问题的出现。 -

+

分段的做法是把每个表分成段,一个段构成一个独立的地址空间。每个段的长度可以不同,并且可以动态增长。 -

+

# 段页式 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" index 2569d201fc..e27a1f3c51 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" @@ -76,7 +76,7 @@ 如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。 -

+

Linux 的系统调用主要有以下这些: @@ -105,7 +105,7 @@ Linux 的系统调用主要有以下这些: 因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。 -

+

# 中断分类 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" index 8dc385a469..53ad4abfd5 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" @@ -20,7 +20,7 @@ # 必要条件 -

+

- 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。 - 占有和等待:已经得到了某个资源的进程可以再请求新的资源。 @@ -52,7 +52,7 @@ ## 1. 每种类型一个资源的死锁检测 -

+

上图为资源分配图,其中方框表示资源,圆圈表示进程。资源指向进程表示该资源已经分配给该进程,进程指向资源表示进程请求获取该资源。 @@ -62,7 +62,7 @@ ## 2. 每种类型多个资源的死锁检测 -

+

上图中,有三个进程四个资源,每个数据代表的含义如下: @@ -111,7 +111,7 @@ ## 1. 安全状态 -

+

图 a 的第二列 Has 表示已拥有的资源数,第三列 Max 表示总共需要的资源数,Free 表示还有可以使用的资源数。从图 a 开始出发,先让 B 拥有所需的所有资源(图 b),运行结束后释放 B,此时 Free 变为 5(图 c);接着以同样的方式运行 C 和 A,使得所有进程都能成功运行,因此可以称图 a 所示的状态时安全的。 @@ -123,13 +123,13 @@ 一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。 -

+

上图 c 为不安全状态,因此算法会拒绝之前的请求,从而避免进入图 c 中的状态。 ## 3. 多个资源的银行家算法 -

+

上图中有五个进程,四个资源。左边的图表示已经分配的资源,右边的图表示还需要分配的资源。最右边的 E、P 以及 A 分别表示:总资源、已分配资源以及可用资源,注意这三个为向量,而不是具体数值,例如 A=(1020),表示 4 个资源分别还剩下 1/0/2/0。 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" index 3a035ba9d8..9def71159b 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" @@ -16,7 +16,7 @@ - 制动手臂(Actuator arm):用于在磁道之间移动磁头; - 主轴(Spindle):使整个盘面转动。 -

+

# 磁盘调度算法 @@ -44,7 +44,7 @@ 虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。 -

+

## 3. 电梯算法 @@ -56,7 +56,7 @@ 因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了 SSTF 的饥饿问题。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" index d2b4634b08..51a2badad0 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -36,7 +36,7 @@ 下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 -

+

## 2. 线程 @@ -46,7 +46,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 -

+

## 3. 区别 @@ -68,7 +68,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H # 进程状态的切换 -

+

- 就绪状态(ready):等待被调度 - 运行状态(running) @@ -116,7 +116,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H - 因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。 - 而如果时间片过长,那么实时性就不能得到保证。 -

+

**2.2 优先级调度** @@ -134,7 +134,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H 可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。 -

+

## 3. 实时系统 @@ -308,7 +308,7 @@ end; ## 1. 哲学家进餐问题 -

+

五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。 @@ -553,7 +553,7 @@ int pipe(int fd[2]); - 只支持半双工通信(单向交替传输); - 只能在父子进程或者兄弟进程中使用。 -

+

## 2. FIFO @@ -567,7 +567,7 @@ int mkfifoat(int fd, const char *path, mode_t mode); FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户进程和服务器进程之间传递数据。 -

+

## 3. 消息队列 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" index 061f39a083..dfce4295aa 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" @@ -29,7 +29,7 @@ gcc -o hello hello.c 这个过程大致如下: -

+

- 预处理阶段:处理以 # 开头的预处理命令; - 编译阶段:翻译成汇编文件; @@ -43,7 +43,7 @@ gcc -o hello hello.c - 符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用与一个符号定义关联起来。 - 重定位:链接器通过把每个符号定义与一个内存位置关联起来,然后修改所有对这些符号的引用,使得它们指向这个内存位置。 -

+

# 目标文件 @@ -63,7 +63,7 @@ gcc -o hello hello.c - 在给定的文件系统中一个库只有一个文件,所有引用该库的可执行目标文件都共享这个文件,它不会被复制到引用它的可执行文件中; - 在内存中,一个共享库的 .text 节(已编译程序的机器代码)的一个副本可以被不同的正在运行的进程共享。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" index d81ae2ec7c..f2f3411778 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" @@ -23,13 +23,13 @@ # UDP 首部格式 -

+

首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。 # TCP 首部格式 -

+

- **序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。 @@ -47,7 +47,7 @@ # TCP 的三次握手 -

+

假设 A 为客户端,B 为服务器端。 @@ -69,7 +69,7 @@ # TCP 的四次挥手 -

+

以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。 @@ -117,7 +117,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。 -

+

# TCP 流量控制 @@ -129,7 +129,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。 -

+

TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。 @@ -140,7 +140,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 - 接收方有足够大的接收缓存,因此不会发生流量控制; - 虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。 -

+

## 1. 慢开始与拥塞避免 @@ -160,7 +160,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" index 2d9d4c6e05..5a8d348683 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" @@ -22,7 +22,7 @@ DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转 域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。 -

+

DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在两种情况下会使用 TCP 进行传输: @@ -40,11 +40,11 @@ FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件: - 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为 20,客户端的端口号随机,但是必须大于 1024,因为 0\~1023 是熟知端口号。 -

+

- 被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机。 -

+

主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙。被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙。但是被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号。 @@ -61,7 +61,7 @@ DHCP 工作过程如下: 3. 如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送 Request 报文给该 DHCP 服务器。 4. DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息。 -

+

# 远程登录协议 @@ -75,13 +75,13 @@ TELNET 可以适应许多计算机和操作系统的差异,例如不同操作 邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。 -

+

## 1. SMTP SMTP 只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。MIME 并没有改动或者取代 SMTP,而是增加邮件主体的结构,定义了非 ASCII 码的编码规则。 -

+

## 2. POP3 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" index d6e2e19e33..bdfe4f4ad3 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" @@ -22,27 +22,27 @@ 网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。 -

+

# ISP 互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。 -

+

目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。 -

+

# 主机之间的通信方式 - 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。 -

+

- 对等(P2P):不区分客户和服务器。 -

+

# 电路交换与分组交换 @@ -60,7 +60,7 @@ 总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延 -

+

## 1. 排队时延 @@ -76,7 +76,7 @@ -

+

其中 l 表示数据帧的长度,v 表示传输速率。 @@ -87,13 +87,13 @@ -

+

其中 l 表示信道长度,v 表示电磁波在信道上的传播速度。 # 计算机网络体系结构 -

+

## 1. 五层协议 @@ -123,7 +123,7 @@ TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。 -

+

## 4. 数据在各层之间的传递过程 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" index 3d98ca9406..a748b50bc6 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" @@ -16,7 +16,7 @@ 模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" index 563ea8c3bf..69d106d5be 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" @@ -26,7 +26,7 @@ 使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。 -

+

与 IP 协议配套使用的还有三个协议: @@ -36,7 +36,7 @@ # IP 数据报格式 -

+

- **版本** : 有 4(IPv4)和 6(IPv6)两个值; @@ -56,7 +56,7 @@ - **片偏移** : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。 -

+

# IP 地址编址方式 @@ -72,7 +72,7 @@ IP 地址的编址方式经历了三个历史阶段: IP 地址 ::= {< 网络号 >, < 主机号 >} -

+

## 2. 子网划分 @@ -102,27 +102,27 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为 网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。 -

+

ARP 实现由 IP 地址得到 MAC 地址。 -

+

每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。 如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。 -

+

# 网际控制报文协议 ICMP ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。 -

+

ICMP 报文分为差错报告报文和询问报文。 -

+

## 1. Ping @@ -155,7 +155,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。 -

+

# 网络地址转换 NAT @@ -163,7 +163,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。 -

+

# 路由器的结构 @@ -171,7 +171,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。 -

+

# 路由器分组转发流程 @@ -182,7 +182,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 - 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器; - 报告转发分组出错。 -

+

# 路由选择协议 @@ -239,7 +239,7 @@ BGP 只能寻找一条比较好的路由,而不是最佳路由。 每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" index c08ef7970e..7d7d88ae37 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" @@ -28,7 +28,7 @@ 将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。 -

+

## 2. 透明传输 @@ -36,7 +36,7 @@ 帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。 -

+

## 3. 差错检测 @@ -64,13 +64,13 @@ 频分复用的所有主机在相同的时间占用不同的频率带宽资源。 -

+

## 2. 时分复用 时分复用的所有主机在不同的时间占用相同的频率带宽资源。 -

+

使用频分复用和时分复用进行通信,在通信的过程中主机会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。 @@ -78,7 +78,7 @@ 是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。 -

+

## 4. 波分复用 @@ -90,7 +90,7 @@ -

+

为了讨论方便,取 m=8,设码片 为 00011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100。 @@ -100,9 +100,9 @@ -

+

-

+

其中 的反码。 @@ -110,7 +110,7 @@ 码分复用需要发送的数据量为原先的 m 倍。 -

+

# CSMA/CD 协议 @@ -125,13 +125,13 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。 当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。 -

+

# PPP 协议 互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。 -

+

PPP 的帧格式: @@ -140,7 +140,7 @@ PPP 的帧格式: - FCS 字段是使用 CRC 的检验序列 - 信息部分的长度不超过 1500 -

+

# MAC 地址 @@ -156,7 +156,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 可以按照网络拓扑结构对局域网进行分类: -

+

# 以太网 @@ -172,7 +172,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 - **数据** :长度在 46-1500 之间,如果太小则需要填充; - **FCS** :帧检验序列,使用的是 CRC 检验方法; -

+

# 交换机 @@ -182,7 +182,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。 -

+

# 虚拟局域网 @@ -192,7 +192,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。 -

+

diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" index 2d60600ca5..136b0f0eaf 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" @@ -10,7 +10,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" index 333a21be46..94b8c65dc9 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" @@ -11,17 +11,17 @@ - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" index 7bc210881f..3e4c0d5d82 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" @@ -12,7 +12,7 @@ - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" index 9ff95ceb6e..215681a8ff 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" @@ -13,7 +13,7 @@ - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" index f1bb2ad195..b07d1efe57 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" index 08b7db2088..7ad1d0134a 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" @@ -16,13 +16,13 @@ - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" index d88cac721c..190b555045 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" @@ -10,7 +10,7 @@ - Caretaker:负责保存好备忘录 - Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" index fda230b709..d89db0da65 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" index 3b33d97d4b..152e975a2f 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" @@ -10,7 +10,7 @@ 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" index e6b0af9d73..7e113588e3 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" @@ -14,7 +14,7 @@ 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" index 268f8cf715..dc49b3fd00 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" @@ -11,7 +11,7 @@ - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" index f2604abdee..ba13406bdf 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" @@ -8,13 +8,13 @@ ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" index 8ae809372d..dd3c7e795a 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" @@ -6,13 +6,13 @@ ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" index c757678279..bee164a38d 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" index 0b34c2adc8..2416e9ce72 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" @@ -10,7 +10,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" index 8f5b492d43..f3ec662754 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" @@ -11,7 +11,7 @@ - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" index 7192b7384b..e03ad311ae 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" @@ -10,7 +10,7 @@ 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" index 18b4b3de39..f87de5a15f 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" @@ -10,7 +10,7 @@ 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" index 1e15a921d7..039a359083 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" @@ -8,7 +8,7 @@ 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -16,7 +16,7 @@ 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" index 06d4513270..1b505d74ea 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" @@ -6,7 +6,7 @@ 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -14,13 +14,13 @@ 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" index 98f7974ebb..3a34d05508 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" @@ -9,7 +9,7 @@ - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" index 17b9af2bd4..810fde860d 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" @@ -10,7 +10,7 @@ - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" index 8b1ac10ea9..10b13515cc 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" @@ -8,7 +8,7 @@ - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" index 0596ace9b3..c4beb94d9a 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" @@ -10,7 +10,7 @@ - Iterator 主要定义了 hasNext() 和 next() 方法; - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -
image-20191130164425351

+
image-20191130164425351

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" index dd1ebf2d32..102ff5f02e 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" @@ -4,11 +4,11 @@ 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" index 88f65599e4..2d69e88f24 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" @@ -52,7 +52,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation @@ -253,7 +253,7 @@ secondName 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation @@ -336,7 +336,7 @@ public class Client { 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation @@ -400,7 +400,7 @@ public class ConcreteFactory2 extends Factory { 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation @@ -490,7 +490,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -580,7 +580,7 @@ abcdefghijklmnopqrstuvwxyz ### Class Diagram -

+

### Implementation @@ -641,7 +641,7 @@ abc - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation @@ -779,13 +779,13 @@ request2 is handle by ConcreteHandler2 - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { @@ -900,7 +900,7 @@ public class Client { - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation @@ -1025,7 +1025,7 @@ false - Iterator 主要定义了 hasNext() 和 next() 方法。 - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -

+

### Implementation @@ -1114,17 +1114,17 @@ public class Client { - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { @@ -1284,7 +1284,7 @@ doSprinkler() - Caretaker:负责保存好备忘录 - Menento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation @@ -1457,7 +1457,7 @@ public class Client { 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -1465,13 +1465,13 @@ public class Client { 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { @@ -1592,13 +1592,13 @@ StatisticsDisplay.update: 1.0 1.0 1.0 ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { @@ -1899,7 +1899,7 @@ No gumball dispensed - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 @@ -1986,13 +1986,13 @@ quack! ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { @@ -2089,7 +2089,7 @@ Tea.addCondiments - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation @@ -2294,7 +2294,7 @@ Number of items: 6 ### Class Diagram -

+

### Implementation @@ -2346,11 +2346,11 @@ public class Client { 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation @@ -2422,7 +2422,7 @@ public class Client { - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation @@ -2580,7 +2580,7 @@ public class Client { 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation @@ -2712,7 +2712,7 @@ Composite:root 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -2720,7 +2720,7 @@ Composite:root 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { @@ -2818,7 +2818,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -2877,7 +2877,7 @@ public class Client { - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation @@ -2966,7 +2966,7 @@ Java 利用缓存来加速大量小对象的访问时间。 - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/docs/notes/\351\233\206\347\276\244.md" "b/docs/notes/\351\233\206\347\276\244.md" index f10aee7fc3..e92c828c05 100644 --- "a/docs/notes/\351\233\206\347\276\244.md" +++ "b/docs/notes/\351\233\206\347\276\244.md" @@ -33,12 +33,12 @@ 下图中,一共有 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,13 +54,13 @@ 例如下图中,(1, 3, 5) 请求会被发送到服务器 1,但是 (1, 3) 很快就断开连接,此时只有 (5) 请求连接服务器 1;(2, 4, 6) 请求被发送到服务器 2,只有 (2) 的连接断开,此时 (6, 4) 请求连接服务器 2。该系统继续运行时,服务器 2 会承担过大的负载。 -

+

最少连接算法就是将请求发送给当前最少连接数的服务器上。 例如下图中,服务器 1 当前连接数最小,那么新到来的请求 6 就会被发送到服务器 1 上。 -

+

### 4. 加权最少连接(Weighted Least Connection) @@ -72,7 +72,7 @@ 和轮询算法类似,该算法比较适合服务器性能差不多的场景。 -

+

### 6. 源地址哈希法 (IP Hash) @@ -80,7 +80,7 @@ 可以保证同一 IP 的客户端的请求会转发到同一台服务器上,用来实现会话粘滞(Sticky Session) -

+

## 转发实现 @@ -95,7 +95,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 该负载均衡转发的缺点比较明显,实际场景中很少使用它。 -

+

### 2. DNS 域名解析 @@ -111,7 +111,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 大型网站基本使用了 DNS 做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。也就是说,域名解析的结果为内部的负载均衡服务器 IP 地址。 -

+

### 3. 反向代理服务器 @@ -168,7 +168,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 当服务器宕机时,将丢失该服务器上的所有 Session。 -

+

## Session Replication @@ -179,7 +179,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 占用过多内存; - 同步过程占用网络带宽以及服务器处理器时间。 -

+

## Session Server @@ -193,7 +193,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 需要去实现存取 Session 的代码。 -

+

参考: diff --git "a/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" "b/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" index f731445141..fff09bca4c 100644 --- "a/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" +++ "b/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" @@ -141,7 +141,7 @@ Percussion is playing... 用来描述继承关系,在 Java 中使用 extends 关键字。 -

+

```text @startuml @@ -162,7 +162,7 @@ Vihical <|-- Trunck 用来实现一个接口,在 Java 中使用 implements 关键字。 -

+

```text @startuml @@ -183,7 +183,7 @@ MoveBehavior <|.. Run 表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。 -

+

```text @startuml @@ -206,7 +206,7 @@ Computer o-- Screen 和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。 -

+

```text @startuml @@ -227,7 +227,7 @@ Company *-- DepartmentB 表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。 -

+

```text @startuml @@ -250,7 +250,7 @@ School "1" - "n" Student - A 类是 B 类方法当中的一个参数; - A 类向 B 类发送消息,从而影响 B 类发生变化。 -

+

```text @startuml diff --git a/notes/HTTP.md b/notes/HTTP.md index 268f22519a..8501eff542 100644 --- a/notes/HTTP.md +++ b/notes/HTTP.md @@ -685,7 +685,10 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) ### 3. HTTPS 采用的加密方式 -HTTPS 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率。(下图中的 Session Key 就是对称密钥) +上面提到对称密钥加密方式的传输效率更高,但是无法安全地将密钥 Secret Key 传输给通信方。而非对称密钥加密方式可以保证传输的安全性,因此我们可以利用非对称密钥加密方式将 Secret Key 传输给通信方。HTTPS 采用混合的加密机制,正是利用了上面提到的方案: + +- 使用非对称密钥加密方式,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性; +- 获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。(下图中的 Session Key 就是 Secret Key)

From 06199c5364950593638d8e95be8175ecd878a5c4 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Thu, 5 Dec 2019 02:03:18 +0800 Subject: [PATCH 026/214] auto commit --- docs/notes/Linux.md | 10 ++++++++++ notes/Linux.md | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/docs/notes/Linux.md b/docs/notes/Linux.md index c7fb483095..b1ba8c58c2 100644 --- a/docs/notes/Linux.md +++ b/docs/notes/Linux.md @@ -1,4 +1,5 @@ +* [前言](#前言) * [一、常用操作以及概念](#一常用操作以及概念) * [快捷键](#快捷键) * [求助](#求助) @@ -67,6 +68,15 @@ +# 前言 + +为了便于理解,本文从常用操作和概念开始讲起。虽然已经尽量做到简化,但是涉及到的内容还是有点多。在面试中,Linux 知识点相对于网络和操作系统等知识点而言不是那么重要,只需要重点掌握一些原理和命令即可。为了方便大家准备面试,在此先将一些比较重要的知识点列出来: + +- 能简单使用 cat,grep,cut 等命令进行一些操作; +- 文件系统相关的原理,inode 和 block 等概念,数据恢复; +- 硬链接与软链接; +- 进程管理相关,僵尸进程与孤儿进程,SIGCHLD 。 + # 一、常用操作以及概念 ## 快捷键 diff --git a/notes/Linux.md b/notes/Linux.md index c7fb483095..b1ba8c58c2 100644 --- a/notes/Linux.md +++ b/notes/Linux.md @@ -1,4 +1,5 @@ +* [前言](#前言) * [一、常用操作以及概念](#一常用操作以及概念) * [快捷键](#快捷键) * [求助](#求助) @@ -67,6 +68,15 @@ +# 前言 + +为了便于理解,本文从常用操作和概念开始讲起。虽然已经尽量做到简化,但是涉及到的内容还是有点多。在面试中,Linux 知识点相对于网络和操作系统等知识点而言不是那么重要,只需要重点掌握一些原理和命令即可。为了方便大家准备面试,在此先将一些比较重要的知识点列出来: + +- 能简单使用 cat,grep,cut 等命令进行一些操作; +- 文件系统相关的原理,inode 和 block 等概念,数据恢复; +- 硬链接与软链接; +- 进程管理相关,僵尸进程与孤儿进程,SIGCHLD 。 + # 一、常用操作以及概念 ## 快捷键 From 8ca2b6426f3ef52033fce47976224dd257d0fffd Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 6 Dec 2019 00:29:51 +0800 Subject: [PATCH 027/214] auto commit --- README.md | 4 +- assets/LogoMakr_0zpEzN (1).png | Bin 0 -> 34067 bytes ...344\272\214\347\273\264\347\240\201-2.png" | Bin 0 -> 66522 bytes ...43\345\245\221\346\225\260\345\210\227.md" | 4 +- ...51\345\275\242\350\246\206\347\233\226.md" | 8 +-- ...3 \350\267\263\345\217\260\351\230\266.md" | 8 +-- ...01\350\267\263\345\217\260\351\230\266.md" | 2 +- ...00\345\260\217\346\225\260\345\255\227.md" | 4 +- ...55\347\232\204\350\267\257\345\276\204.md" | 4 +- ...64\346\225\260\346\254\241\346\226\271.md" | 2 +- ...76\350\241\250\350\212\202\347\202\271.md" | 4 +- ...15\347\232\204\347\273\223\347\202\271.md" | 2 +- ...66\346\225\260\345\211\215\351\235\242.md" | 2 +- ...K \344\270\252\347\273\223\347\202\271.md" | 2 +- ...45\345\217\243\347\273\223\347\202\271.md" | 2 +- ...17\347\232\204\351\223\276\350\241\250.md" | 2 +- ...04\345\255\220\347\273\223\346\236\204.md" | 2 +- ...21\347\232\204\351\225\234\345\203\217.md" | 2 +- ...04\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\347\237\251\351\230\265.md" | 2 +- ...15\347\232\204\346\225\260\345\255\227.md" | 2 +- ...60\344\272\214\345\217\211\346\240\221.md" | 2 +- ...15\345\216\206\345\272\217\345\210\227.md" | 2 +- ...74\347\232\204\350\267\257\345\276\204.md" | 2 +- ...50\347\232\204\345\244\215\345\210\266.md" | 8 +-- ...14\345\220\221\351\223\276\350\241\250.md" | 2 +- ...55\347\232\204\346\237\245\346\211\276.md" | 2 +- ...77\346\215\242\347\251\272\346\240\274.md" | 2 +- ...54\345\205\261\347\273\223\347\202\271.md" | 2 +- ...21\347\232\204\346\267\261\345\272\246.md" | 2 +- ...41\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\351\223\276\350\241\250.md" | 8 +-- ...20\347\232\204\347\202\271\346\225\260.md" | 2 +- ...13\347\211\214\351\241\272\345\255\220.md" | 2 +- ...00\345\244\247\345\210\251\346\266\246.md" | 2 +- ...30\347\247\257\346\225\260\347\273\204.md" | 2 +- ...54\345\205\261\347\245\226\345\205\210.md" | 4 +- ...72\344\272\214\345\217\211\346\240\221.md" | 4 +- ...00\344\270\252\347\273\223\347\202\271.md" | 6 +- ...36\347\216\260\351\230\237\345\210\227.md" | 2 +- docs/notes/Docker.md | 6 +- docs/notes/Git.md | 24 +++---- docs/notes/HTTP.md | 32 ++++----- docs/notes/Java IO.md | 16 ++--- "docs/notes/Java \345\237\272\347\241\200.md" | 4 +- "docs/notes/Java \345\256\271\345\231\250.md" | 16 ++--- "docs/notes/Java \345\271\266\345\217\221.md" | 38 +++++----- ...a \350\231\232\346\213\237\346\234\272.md" | 36 +++++----- ...50\346\200\201\350\247\204\345\210\222.md" | 22 +++--- ...- \345\217\214\346\214\207\351\222\210.md" | 10 +-- ...350\247\243 - \346\216\222\345\272\217.md" | 2 +- ...350\247\243 - \346\220\234\347\264\242.md" | 14 ++-- ...351\242\230\350\247\243 - \346\240\221.md" | 2 +- ...52\345\277\203\346\200\235\346\203\263.md" | 2 +- docs/notes/Linux.md | 34 ++++----- docs/notes/MySQL.md | 14 ++-- docs/notes/Redis.md | 26 +++---- docs/notes/Socket.md | 12 ++-- ...01\345\217\257\350\257\273\346\200\247.md" | 4 +- .../\345\210\206\345\270\203\345\274\217.md" | 42 +++++------ ...Offer \351\242\230\350\247\243 - 10~19.md" | 38 +++++----- ...Offer \351\242\230\350\247\243 - 20~29.md" | 16 ++--- ...Offer \351\242\230\350\247\243 - 30~39.md" | 16 ++--- ...7 Offer \351\242\230\350\247\243 - 3~9.md" | 22 +++--- ...Offer \351\242\230\350\247\243 - 50~59.md" | 6 +- ...Offer \351\242\230\350\247\243 - 60~68.md" | 12 ++-- ...73\347\273\237\345\216\237\347\220\206.md" | 22 +++--- ...04\345\273\272\345\267\245\345\205\267.md" | 2 +- ...31\350\241\250\350\276\276\345\274\217.md" | 2 +- ...10\346\201\257\351\230\237\345\210\227.md" | 6 +- ...346\263\225 - \345\205\266\345\256\203.md" | 10 +-- ...- \345\271\266\346\237\245\351\233\206.md" | 10 +-- ...346\263\225 - \346\216\222\345\272\217.md" | 24 +++---- ...- \347\254\246\345\217\267\350\241\250.md" | 38 +++++----- "docs/notes/\347\274\223\345\255\230.md" | 6 +- ...05\345\255\230\347\256\241\347\220\206.md" | 14 ++-- ...347\273\237 - \346\246\202\350\277\260.md" | 4 +- ...347\273\237 - \346\255\273\351\224\201.md" | 12 ++-- ...76\345\244\207\347\256\241\347\220\206.md" | 6 +- ...33\347\250\213\347\256\241\347\220\206.md" | 16 ++--- ...347\273\237 - \351\223\276\346\216\245.md" | 6 +- ...- \344\274\240\350\276\223\345\261\202.md" | 16 ++--- ...- \345\272\224\347\224\250\345\261\202.md" | 12 ++-- ...347\273\234 - \346\246\202\350\277\260.md" | 20 +++--- ...- \347\211\251\347\220\206\345\261\202.md" | 2 +- ...- \347\275\221\347\273\234\345\261\202.md" | 28 ++++---- ...- \351\223\276\350\267\257\345\261\202.md" | 32 ++++----- ...45\274\217 - \345\215\225\344\276\213.md" | 2 +- ...- \344\270\255\344\273\213\350\200\205.md" | 6 +- ...345\274\217 - \344\272\253\345\205\203.md" | 2 +- ...345\274\217 - \344\273\243\347\220\206.md" | 2 +- ...37\345\236\213\346\250\241\345\274\217.md" | 2 +- ...345\274\217 - \345\221\275\344\273\244.md" | 4 +- ...- \345\244\207\345\277\230\345\275\225.md" | 2 +- ...345\274\217 - \345\244\226\350\247\202.md" | 2 +- ...45\345\216\202\346\226\271\346\263\225.md" | 2 +- ...75\350\261\241\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \346\241\245\346\216\245.md" | 2 +- ...41\346\235\277\346\226\271\346\263\225.md" | 4 +- ...345\274\217 - \347\212\266\346\200\201.md" | 4 +- ...- \347\224\237\346\210\220\345\231\250.md" | 2 +- ...- \347\251\272\345\257\271\350\261\241.md" | 2 +- ...345\274\217 - \347\255\226\347\225\245.md" | 2 +- ...00\345\215\225\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \347\273\204\345\220\210.md" | 2 +- ...345\274\217 - \350\243\205\351\245\260.md" | 4 +- ...- \350\247\202\345\257\237\350\200\205.md" | 6 +- ...- \350\247\243\351\207\212\345\231\250.md" | 2 +- ...- \350\256\277\351\227\256\350\200\205.md" | 2 +- ...- \350\264\243\344\273\273\351\223\276.md" | 2 +- ...- \350\277\255\344\273\243\345\231\250.md" | 2 +- ...- \351\200\202\351\205\215\345\231\250.md" | 4 +- ...76\350\256\241\346\250\241\345\274\217.md" | 68 +++++++++--------- "docs/notes/\351\233\206\347\276\244.md" | 24 +++---- ...71\350\261\241\346\200\235\346\203\263.md" | 12 ++-- 115 files changed, 522 insertions(+), 522 deletions(-) create mode 100644 assets/LogoMakr_0zpEzN (1).png create mode 100644 "assets/\345\205\254\344\274\227\345\217\267\344\272\214\347\273\264\347\240\201-2.png" diff --git a/README.md b/README.md index 6779a69e3f..df299e02d0 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@
- +
@@ -85,7 +85,7 @@ diff --git a/assets/LogoMakr_0zpEzN (1).png b/assets/LogoMakr_0zpEzN (1).png new file mode 100644 index 0000000000000000000000000000000000000000..b1d1b238d11e256796df50498400a28c50a372de GIT binary patch literal 34067 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 IC5?mrA1|K>=>Px# literal 0 HcmV?d00001 diff --git "a/assets/\345\205\254\344\274\227\345\217\267\344\272\214\347\273\264\347\240\201-2.png" "b/assets/\345\205\254\344\274\227\345\217\267\344\272\214\347\273\264\347\240\201-2.png" new file mode 100644 index 0000000000000000000000000000000000000000..fec66b80ca2bced7c6c9a3c4887f776b781b7956 GIT binary patch literal 66522 zcmeFZRZv`A7qy!}@Zbc3ySqCC3pCPLaCetR12pjB?u`Wt1PKZ5?ydc2VH=kioRRaa9D^xA8$Ip!G8>?k#`JSI8``m0y3FhL5k8n0d*k95^O;SeC%DW3R6eQmswnlgo3tGI6Xq(sixX zXxhrd9b6K)Vt42~p= zsZnb~sX=3Wsrt9#r$+R5Ec1ajkOKrQ0(y_-?zfqdV~Y(=S$d7mIeM*L<$BfT%}*Dj zoSn+UUE|F3R*ia{0p$zL?&+o4a5L_Y7Rc@efx;1`BR%+vqcdv2=*Q#=^*uq$z{K@$2)Rn;G)5!~wj;ZcfCe}DoK>-xXpa#`g3}RjM6PaXGTMTAkOFnX4z1U=7k_r&C@;>drS(#51QG`Hz zF00FzC;mEz%_kebytb0$znrZ2WiY6GneW8D`lU^xzD*awwV>w;{7GJy_N!uI-W|kR#|56& zSK0Uu4X!aMJi<~Qr>iS($v$fw5d0oroeOte3Gsw)M7-GL2HZ2ZauoSF}=PkzndyS}Z_@lX8sp7#Qkc!RVG610`Budi% z-h&r<`*SD9d$pR8;>M-9iN=+XjBxvh*3U6gmo~G3xQF@6gFmC$ZX>0$Gf~osO1xa2 zeG75-!>|-`>)!CIC|0f8Cp9bt);HUsD&$DhB`cpuQDg*Ah9AF`^E=F*m+1v9)X=eU(HFzWR&zfwwLJMahMn<&>G6$j$U9dbXzxp{rg=^mEZvvw3s zvP)B^=Xoa|2ceH=gFC?(99&QLSB-OY&0J3AMe8hVZhK3DqTbGv(d+A>O2QkuU@yXk zrPEK!Px}VLQ8^G(i3f_d()7Ama?yq*9_i4I0%uUHpkihvZ`p(ReS_n|r8)UebH0G) z>g=kGi-W(w-OR<=#xvb@*knKLv zOhf%KHYAPRK-Vni6M3oTw~uj}ic4XB{$6gF7Se1HELuOJmsD1K6n(B2b|ZJ_t!64s zCPlOqN4t{yZ*x3ng=aT-$sK%!Cbe;gV^8f!l!~+ z7|}Kem*pw_ZNst1&5KpCoK<7)+HlBERwTJKD%#E!r#oLD*L+Frk}w=3*T_whA8;J_ zZ9nxsH>Zj}>0MQM<6Q5{(`n#Xi|1j;87nh$lFKJz((sK%hf4l(gGO~p*xRooAcQ8( zcatHfoi72TvP@B7x{tXRt)XMyNRFd#*t)*(JLpToE+$$(jDLwPfFfdXv>}l4SVsCB z*X!U{Qv{0t+GB) zQ-75yi^WBdve9cYx);+>i2~k4(TjX5ErC}#D30w#Mga$~5dkR!kWJp>34)zCg3CZ_o zE^GtQ?^qX*f_t?I0xiCc%LiRqPh<-VsA31Ls_AyM4>6;0=;C@;{P@ZgjWA(;KG(Tw zkt5HW|Artz*QnlJ3pkubSw^0A+(3*5dOEp~P%TRJvcHApQu`_^~rB0GwiUHXo zz(og1S1?rM5@U4f97XGBDw8FqzGpK#lYDUeakrI{;G{MNRLeyfBM_|ztqUMpY$`gR z?>`x}9(sDe1!N_TvUSho8f5VJdOTp+re{JU82-D$NYwqP`boLcxZO#}O*svRvHV5{ z-!iqDn=X>~zu@x;QI{-G3d2HZ2)(dy)hnNlXw7+Io9xWS5fEzreJ6P6%vBLFpt1!$ zcqpHMWlWQ;F?8x>?Im~R!5iZ0fVHV=M&U;& zYkzru5Qsi1XG&3F?=i;PhjW4N~`gg_r1sJ`}i-6**DCiu>B%Hvsj zQsQ9^RwKZjF^|#bAjNcZDoG_&#JpyPIhG|j*+G-^M(f*4HBN5eGtza}S4McH^viGg zvV0UuGJF43xUOZ+b_SVD1Z6;zO1@MsJ(lD|bnpqIRcCPcz9#MCXau*L^Z}Lx=6B$43k`B=Dvr_<5#y&(br$r|L(B}#$-WytV@%N zopDF>*J?=g?p4&)0VV-=^nQz~f@?+^9h>o@0WLVwMX2z!Sc<0(A9&Q@4TT#N(*3r1 zK;mZkqHGO$PWaJZ12-h*p~f{1+#EqZJ30|FXA-z_KhbB0(aGz3xz|&LA&F;$rt?Xd z8JCTU5JOK}K7rz$!?{TRR#h(+FOdnfbR2mMVX_!4QKafMh3f}T_bCwLl5$7g{&u=a zgZ4XgMM5gJ_Wp^7c@pYK+RTe^!ZN~lr6 zvI5AE8HSwb58Q#=s*+Ez`j&xeD)(QTf5w3~YX;~Io760(1np}GiolLco`ipy^5a}5 z1ven&%uh!tn3?!=llHPguqB2>Ms`y8g>}BW;iWLO{-tr~=u4WpfvsyyV3Y6-?eumn z@WbeAX5ywd09j%7jv!ZVGK1R)rZ(0M?^k{v8J4&wKtzw3!K1<^>B z>3{Vz-(l9NfZC5aln6*K)MKS}P2sKZrL60!t`85H%}>_IcGA#Rv>cE;;0==FxW)M` zOt<;CyFXoZ*68>oh+pd}F3ca5e+4?xQL(ET&7GFR0J|TbN()fp`M%3ID(gZM#Llap zATR9n8p`%x94eoph=u+Zw#R4WZzLO&bs=oL z{@TZrso3ugUFpJ^ry377I7>)sq>Ng9orCO8Z4Mvjr$pQsB2Ix$pbQ?>8k+n><0IC9Ye5!~>_ zSsL^s-hQC=?zGUDNLAt`hhQSUAW(XUMSm!6KOY&r78#rqj9%+6*(B<`Ey64&{9%s3 zaYDdZucik4yYl6#xpm`@Sb2eG{bsX`i8^uAx)IVvjt8=S?iH*_s;*ylCa9{e-z@3h_(p;inWBY>#yXHXg0=}7%g zUJT8W7S-r`>w6yRC#K2uq2pD;6O z@u-geWAc1XRO@w2auyXdsgfhoA4_u8;nWJ45vm?)OJ=K|H$Af`dUd!W8y*BncuAkX5+3;)}31uj{zUd5v938cT z59M()h0Zj210FvgevfwRd16eFP&^^>C&bLF0oKE&lFgp37{xfz1m=n9a?JxS#)SmHuYqpE^5Uhr2zXPg6mGXKVUnIdXhh z#t!`4>_2|HUxMF;<)E9j>US!hbs}@;1-vDy=(V%vyT85I?c}D-gw01alwZOzNqyIT zwoJcP93Dz?$r4n`=l9@Hg{xknYCTjt8dGypQrD+*0R=j$JgE26_VD*9Lnlr6?7yk zhMb-S)!fDpr!X!dVpC&OQMrG<_f6Y?H}@M#ke88D28vCzT~5Um``u7nt0TN#s}guH zWTzI*5^%ETXx`EwT?;#O21&|Rt9lh%-ihwqZmL#EM6zIa0*Xm`Ih1CRGLzjOj0R2n zD!rxmw_Ru3TUf8{<=Jniv?RBVw9O!N-*^IQWM>Ki=ZO5t<@*>v3UvoM`h~Z- zQ~evpBu1Y%rfjShxX5%Kw-4uu%Ui%zX2gZ>1?8zus^4d&9zq<+L0o*G`LbePSBn=H$lnDoN zP@ozk*us5xf<2b4`E-)@;x93cKHZLG6i#7my~Et1*TvbT)lv06+$W8A%3WtM$fc*o z$|QOKJ4LJmq3#H3_VOdjq&GS^Il$`1odHIQ9nX`>S=X7(=OaIlYOQtFJY+qYT>SUHPmg8t$~|ou zpSUV){m62tm?~_uM$iI>R=ww@t$AM*oIE^$?6H$+lLhSN&+H!w$qB!pP&BRGH#I5u zXa3jl*XVGrQt$;h)5ntOmBzJnjGV-W=+Q&)(X$DwLceY)5L&`M`q#HFb~n!wjX-Z! zyvLqy*3uPl*cRo;T{`X(iUVJs3-(|$QLGK5&bReUf-$Wwoew8|$|YbPB@(Nz%B#MI z>;+84(D1|F){~Y&iOIM0x8(jxif;(?hl_)YuxlU4z29One2lOCDslNsjn{sL>9<%R z`5XPVla@oxm(&;4#GH39`PYxkMloZfdur~%-l(4~IjGTq9pwD;Jx?G{QI)x;nX<&g zk^4o7Y#hK{}{7p1($K;iO;uvHw$Ml^|9z+fd7?cx_+nj+7dck+O z$|wpRC<0KO#8#KKv+%jo>5fzXQzp(B9INvmw(!2F*A;)3zl}uw$K<|`et1gV-_Iv} zzxVAp#kf@asHX#8KFl$rKc_XBN+gwFzF$F&dL#{%Y*$IJ zYjc}z5%t(Z)TT~Oi-0oPbH#T&#$UD&_Im=(kE85CVg-lHhf2>k>*^AK5m4*8AzjHz zu6$rgdR_a4AOq;%_yDux!Z%k3Z+SR-ER)@!fu|&gAx5s}H1T^3YzKpo4JWl@jg;!eKml?Fo-)POf-+vq%Ld#!IR8%fwlxVWbwu$TYmV>sj7>)yq#CcrPp8AH4is-J&vtL}$`c_@l8UtCG+N5@#ZX@17Lk zTWeP8(uu`=jOWm=Q+QN+RfHjjy{*D5or?dOje&4*XFRJfD183?JoI;Q5q{S2nE%1F z>dT-pCB45QQ+$lv`53S2lIvCI1(;DSr?f$*a&`8QeDIgY2&}dC1<>M0nl`zocWnd* zv*i)vAXwXA^IKB$Ej;GNnp;H&**`p_P_@;d-rk9${St*HEabGmI}<8K zy<#yPPa%#~|6)SZbSDNboJz56FpYQ3SpfP+h^TAy?mcIrS6@(r`%_F_D#4B^&;&bX z_}(iOd>0PHM#w&s=2_B4nq}G`dcNs=S+ERkvsD)Ka_)fZ^h#+X97}U&^6p~zWoSjK zZPQ`?2ATbAkEYtokQFxLhId8$dE;c_YY%tl?6@^ol*-J}>hF`vWRh=tk$>GKPnGk6 z2l#GrG#%S}R3NDB3rT(H8aIi}jdcn8L!BG$*c<9o7U}AI(MIrY{ynV=V z0V|B4d2U=PTPibih(MUKS~N|ges9#8g(q7z7XI4V>;J<8Y#7*~*D=;*&6mFjSQtEM zC5A&XRQK%p*lIuMBlxpdk{)P3w$Y1}{Q_5bB(@r&G0Op#2J%g83KDa>pmj3*QmzBF zRL%1@;hNv+3f@e^)~}BTUA$)J#)bIb>ngR&7fa(VOi5+r5HOOvT!r#}t4f5v=M0um z5HZt>JdO`ZfD`c)6_G>MM}lptG!mJ~MLepgH~nGC!LT!^#D3GqwXhV;-U#eQAJ>ue z%EX4}M^SYfpF0Jz_rtl}EyX#y$<_0r1(CZXS6v`Pe2=RGEn`l-48y+a?*=;7E#4B8 zlu#~xvKcmJTiOzu;0`&6=#+`3DLMSpWS)jR7g1?-oiI9!q8)N(S1Qs-ljSiDc4U2s z8%;CGYa&~x%RO}(Vi+AvmNPE+pp17bV(4l=qs5ix@pdzzFD6U?PcP{|J&kfoo1P-2^zF9x=z<~Fi7LR^ zy;k%IvPvD-zZZptbVjHumll3~+#c1*K*MLq*!$wQCS(=c6{H~-GKp)Nf>_1E_`kIm zP-TeYtBQ}Ah{8rr`aoax>hm#Pk2%|qN$D(ErTen?D5|;2N~zrU_|%Ne=|F~cQw47J zT}O)Z7^aboYEZ6GEp`0Bp!|hz*m0poc(;Z+S?hlW=urqN$p3EwbzAUdbogoC3zmaA z>bWFA9piP-lI)pa(kdq}u@AF)X8>Ylt4!Nk^~9DhHv&dzKab0*VYT!}I>XXeZmvcQ zQ9txG_>hO6<)qT!6Lc!JPOfv+w`K}us3+b)xI~9FNfAb(>$06c%9QO;&`Yuqza2y? zTy}=1{v+EI^pWC+n?|TeUvbcIJrL+rX3#1t5`Ode#u1Q^#aek;8Nw5;Iy8~PQxq$Z zVx$=zJ(S?Kaj&UEnnFL%=OVgfa2$V=h3)5K=Tgm@gri8TK4_()^N{AVFe*UsDvqeKJ+_bG+s_ zC7c?R?J_9&a)-?u*uhp!aZE+2{PK*5=O-uI9vMcbvax{|Y!13s2Lmy-X=Qw}^2xr; z%t^VxOk3Sbou0ig^JDpp&CTST$yyi-quo3ZrOxfI8bLmlYW!h67P$GDA2iEJ?EI+`v;RQ|uC&360Q>3Bo!zPzr@@R>>E&P8WfV#Q(Vz>Kqq3Y^ye0xb&v+*zd z<#M_tr)b-Z_l`m%!xK58ecCv##0f=frv;jYYEo4CnRuUPvSl*d)n82?vdL6^A4VwGC?x03@+5-ROy1#2PW0sz z2?bnQLz>`9Uh57lGy-&b$s!phl6=0R?0do_6A~FOQKGnpDd=mpZon$JXAn#S`IENl zhIcoy&P%6NmrWl^gr*Mfyp&)x6trZGT6jjCL#1=DV4LnvWrqk!hZ0e8G^&XxB)%_r zYes&@kWY7o;t=Wp!x3<792nNxz7X|&#Z3Go`zT~D46N6>xBc2P7W25xZW>v$)r%d( zJZmrAw3(>2Xv z^QcwUH`Uk|x?s|q#~7C7M`U#A?><0m6O}{6s#8JN(lSOkrbV!2@^ld1Q#O{&Uo-gW zr`HF#d$h0C57=t@pj6(uY?>!cbByx2ozpF^2?bM~?Ee2RPELb{I=VmOsBKK8nk5}t8MiO{k+~Ai^_ALNR`0X?B5mqH916ReNputT zg`rY*iplRubioRm)HVq#-0(cMqW8}9;BMDimCRcGB7bbK1$lzM83;b46lW913?F=;d-%HxV9D_;9%fd z(R+2uAm~UxjcVq8QmAkAome8p1FpmCPSi&!DEPK5icvLwW;$2Sq+DOi9k6KKa(R}7 z9VsAvxU<|U1=+Hhv7L1#NTqH)yr6UJjiV9_4fUSEyIlZo&;iP@_6@&RZQ1}9O}rv- z&76ua3=I;P@(RP=9Hi(c`Mj-m-9V^>F&fIap>kjnb}HwOfJibDfgY|JTrF`^R%<<8 z7hkQBk<#vaRYMqK2>vzHU7PbSd9Pf1fX6HdtY`8?b97HY{iO)xhS_zK^%^BQ2rLEj zcx~dF-db{;HvmnMfT{5dO1wB)dtlOU!+IKs<0yMo!nlFHbY% z#mo4m3vOE6phwYTpH8nG-En#^^jEg^w^BJrW}lu4GM3mdI#m><9KoVb?HwQ_+p||) z_51eO`%(}Pg!-CzCHj2C`{(Z@$Zy8uww4;luuTFf7S}gFQIy0werUs{jDXlVrYCp# zx-8TbU5O`&j<%2B${umM4k&z<;N!YaO zY^N7nlINRzr^~5OEm}-9;3yWGbOyjx#*Ov?>SKEJb(8wHkJ|efxL|S1g0wIBy|g2^ zGx;*|e*BE}x9oZ~be=s=(lgHBMzPAHnbH&;``c#s-9@@|9t?v^H^hsM1ZlwTjGeh< z$7dZe)Fk_C>UVZygLrVYU$Tk8n>xA}6f3=@& z&#D-*ft+C$T_vE_W1o>H%5TDdR&RIy&?e8O8_4kM6A%lv@n=v27T|X%H#mI+E-0}ZGd>!l!nHyPz~#(U>YhXo(8_)J=iO> zDA*nrf>O{ASyWH{)L5}rt130PZr;OVddDs%CG#35T4L#SlDt=a(pNmrf)r8Qp-1!F zJGp)*g!Nf>-3}FL3Bxo%4S<0AQA{74Qf_ypI>h-%>mh{WgSb%ELR;jeS7` zd-0yWK!`L3AQIFWeStF}Hs58!#S$0yBx;}a_P>(TrL+Nt7DG!nH?rq}Z1;wmH9b02 zo)q=dkjm|5J7cCa0#QgSkH+Hcg-^Vk?`Tig( z1vf-_Tq*a?qnc4C0pmO};X24-ot^bmVU%$U?(|7FiZ?18cJCx>c6ITUUK0koMs}vpr`Q zO67dYuf~V!g5hKgQPMu+{F2-@xjx0|dRf;H5&zvBTy*;bG-V>ecY3H}CQ7XezGL2FZRnX@JFIqsuA1yB%c$)j<4HmqM!7z@N)aWAhr7=RS8Bi%eWMK6IOVo_42Z7K+GO7?no zlke`#QKUxkmC4YHq_Zc_c;JkZcOZL?LKp9?GX36SuS9gM5uwMws{+Ldg)ZNS95MT` z8c(7(GA!*|bmhiNgIJ*N9 zdwfwpM5h9Fpe3$iVOW#y9*E1T*LfrK5}oDJF&s<6uXu!lhjeD=?A&^MJ!7}|;S@77 zY7)V)$~4I5`EIwY$o%g7ogXdpeOn?VIEJmg4@c;@j#oK`aQxVA_Vf*z@FNz5*nHdd zA}hSZmHU%(r+<|ZtQo87(x_>-;*N#ueO|H{ecIr~0+7rMlw z(i&(b0`f3|_5 zYXnzsTeIAaqM%(l_X{u|Z%%#{9`$e8yng>s2|`vHmYA?6DsjK-I`4L|4LU=ym?>c* zw`9+?LxLo@WFMy#NMs{4XeXMrqN-XMZaEMKE8?-<8uA{~R2AR1Dkw7U6Y0W`u!LvM z^xmBfN0KzIJophWeEs}HcRX~xquuW7`5>FIyCE?*8(QlE;1PB}mGoX~WjzJh8oe0K zz;p5~o?hm)D;vQLNFvb{mfNN&Gh#BT}xvGclisL^M=_eEDA;@j0 zsP~Yihb2@5#XZXS@Ut6WepE8mS3n*DFMa6-!!; zSUwczwt|gu^Q(lc5b04h>5KhCUvf{Uxo}WX(C4V z0EY7o2hUh46Qht}HPgx;C6MwwY;<~Okm8|HYXX`B^}9K-Lels?Ck%KF8}^}Jfn?B2 zkr^4k@BF_>Gpi3$-5Ys*z7PRh8#L+|Zo=(}oYoA0%h4t7es8rNCggoSr00^3dW@CMgg zL!_3!YRG=J%qp)SNHZ;4Z#q**=?6~JY5%F!?cWXKk~c)hkoB&Va?@Y^-u)9k8KKuTr9AAfqT*;^0NFvD})2Wc^Ka30)c<3V5;4 zn3!iPfH&|NTB-Y~j@$+g;E~_|SW

gQKOOO;bS>pk<5`)$j24I-jpN-LL-W7{q)8 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

DtJKt8ysv}&Z(u6&-*rG2yi#^KN^+BC`dcX2 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
--> -


+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 diff --git "a/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" "b/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" index ecc7a64651..2bd056c1bb 100644 --- "a/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" +++ "b/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" @@ -8,23 +8,23 @@ 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { diff --git "a/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" "b/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" index bd89c6fd9b..3db7579d57 100644 --- "a/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" +++ "b/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" @@ -8,21 +8,21 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { diff --git "a/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" "b/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" index 0e779d0011..760ff568bf 100644 --- "a/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" +++ "b/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" @@ -8,7 +8,7 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 diff --git "a/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" "b/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" index ca34fed587..be40966933 100644 --- "a/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" +++ "b/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" @@ -6,13 +6,13 @@ 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 diff --git "a/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" "b/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" index 217f56967e..4363131950 100644 --- "a/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" +++ "b/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" @@ -8,13 +8,13 @@ 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 diff --git "a/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" "b/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" index 1cddc018a3..207b235f44 100644 --- "a/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" +++ "b/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" @@ -12,7 +12,7 @@ -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 diff --git "a/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" "b/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" index 8cd0a5eee6..f14a83f90f 100644 --- "a/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" +++ "b/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" @@ -4,11 +4,11 @@ ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 diff --git "a/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" "b/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" index 555a075436..b7ba929a4e 100644 --- "a/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" +++ "b/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题描述 diff --git "a/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" "b/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" index f6b913234b..7bfed6141e 100644 --- "a/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" +++ "b/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" @@ -6,7 +6,7 @@ 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 diff --git "a/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" "b/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" index 209dc0e98e..3a6226f9cb 100644 --- "a/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" +++ "b/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" @@ -6,7 +6,7 @@ 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { diff --git "a/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" "b/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" index aea40f9a71..ec5658947a 100644 --- "a/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" +++ "b/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" @@ -22,7 +22,7 @@ 上面的等值没有很强的规律,但是我们可以发现 y+z 就是圆环的总长度,因此我们将上面的等式再分解:x=(N-2)(y+z)+z。这个等式左边是从起点x1 到环入口节点 y1 的长度,而右边是在圆环中走过 (N-2) 圈,再从相遇点 z1 再走过长度为 z 的长度。此时我们可以发现如果让两个指针同时从起点 x1 和相遇点 z1 开始,每次只走过一个距离,那么最后他们会在环入口节点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { diff --git "a/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" "b/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" index b3b5b4df99..37b6e2f903 100644 --- "a/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" +++ "b/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" "b/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" index 7fd34ab3d1..e4772db926 100644 --- "a/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" +++ "b/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" "b/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" index abe1c39540..4d137e2cea 100644 --- "a/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" +++ "b/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" index 94d658aafb..80f49f571c 100644 --- "a/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" "b/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" index 1d5435d8a8..32636dd827 100644 --- "a/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" +++ "b/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" @@ -6,7 +6,7 @@ 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" "b/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" index d249e72b5c..4d0031d651 100644 --- "a/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" +++ "b/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" @@ -24,7 +24,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java diff --git "a/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" index 6c963b1591..4f9714e29d 100644 --- "a/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" @@ -8,7 +8,7 @@ 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 diff --git "a/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" "b/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" index 6741f31e22..bc9ca61cb6 100644 --- "a/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" +++ "b/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" @@ -8,7 +8,7 @@ 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 diff --git "a/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" "b/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" index 95629ac442..2304a2540a 100644 --- "a/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" +++ "b/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" @@ -8,7 +8,7 @@ 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 diff --git "a/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" "b/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" index 1f382d6b05..908c90c3bd 100644 --- "a/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" +++ "b/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" @@ -18,21 +18,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { diff --git "a/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" index 5ab2372adb..b68fba1417 100644 --- "a/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ "b/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" @@ -6,7 +6,7 @@ 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" "b/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" index ff28bd87f9..9f567a5b3d 100644 --- "a/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" +++ "b/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" @@ -28,7 +28,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { diff --git "a/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" "b/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" index efe83db60c..452652e964 100644 --- "a/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" +++ "b/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" @@ -27,7 +27,7 @@ Output: -

+

```java public String replaceSpace(StringBuffer str) { diff --git "a/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" "b/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" index 371e83419d..b7e0cbdc75 100644 --- "a/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" +++ "b/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" "b/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" index 0aeb411e27..8c49c2dc27 100644 --- "a/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" +++ "b/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" @@ -6,7 +6,7 @@ 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 diff --git "a/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" index d2cdf538f8..56f8797f86 100644 --- "a/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" @@ -6,7 +6,7 @@ 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" "b/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" index fb78ed03b9..d7bbb3b0d4 100644 --- "a/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" +++ "b/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" @@ -8,7 +8,7 @@ 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -39,13 +39,13 @@ node2.next = node3; node1.next = node2; ``` -

+

为了能将一个节点插入头部,我们引入了一个叫头结点的辅助节点,该节点不存储值,只是为了方便进行插入操作。不要将头结点与第一个节点混起来,第一个节点是链表中第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -72,7 +72,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { diff --git "a/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" "b/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" index d298cc9af6..aaa42b6642 100644 --- "a/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" +++ "b/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" @@ -8,7 +8,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 diff --git "a/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" "b/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" index 9fde275c1f..d71becc99e 100644 --- "a/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" +++ "b/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" @@ -8,7 +8,7 @@ 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 diff --git "a/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" "b/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" index 499319a5e5..a467388d97 100644 --- "a/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" +++ "b/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" @@ -8,7 +8,7 @@ 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 diff --git "a/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" "b/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" index 8317ca2a0d..4829a10f8c 100644 --- "a/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" +++ "b/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" @@ -8,7 +8,7 @@ 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 diff --git "a/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" index e77c9665f0..c31d43484a 100644 --- "a/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ "b/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" @@ -11,7 +11,7 @@ 在二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -35,7 +35,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" index b557ea0ba0..ff82f2aaa7 100644 --- "a/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" @@ -10,13 +10,13 @@ -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。然后分别对左右子树递归地求解。 -

+

```java // 缓存中序遍历数组每个值对应的索引 diff --git "a/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" "b/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" index 38d2641420..92bfe9a9bf 100644 --- "a/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" +++ "b/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" @@ -35,17 +35,17 @@ void traverse(TreeNode root) { } ``` -

+

① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { diff --git "a/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" "b/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" index 7d1f24ec38..bf9fd343ad 100644 --- "a/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" +++ "b/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" @@ -12,7 +12,7 @@ in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git a/docs/notes/Docker.md b/docs/notes/Docker.md index 7647d26c91..3df19303c2 100644 --- a/docs/notes/Docker.md +++ b/docs/notes/Docker.md @@ -14,13 +14,13 @@ Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。 -

+

# 二、与虚拟机的比较 虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。 -

+

## 启动速度 @@ -74,7 +74,7 @@ Docker 轻量级的特点使得它很适合用于部署、维护、组合微服 构建容器时,通过在镜像的基础上添加一个可写层(writable layer),用来保存着容器运行过程中的修改。 -

+

# 参考资料 diff --git a/docs/notes/Git.md b/docs/notes/Git.md index c0939994cc..b449764823 100644 --- a/docs/notes/Git.md +++ b/docs/notes/Git.md @@ -18,7 +18,7 @@ Git 属于分布式版本控制系统,而 SVN 属于集中式。 -

+

集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 @@ -40,45 +40,45 @@ Github 就是一个中心服务器。 Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 存储所有分支信息,使用一个 HEAD 指针指向当前分支。 -

+

- git add files 把文件的修改添加到暂存区 - git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了 - git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files - git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改 -

+

可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。 - git commit -a 直接把所有文件的修改添加到暂存区然后执行提交 - git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作 -

+

# 分支实现 使用指针将每个提交连接成一条时间线,HEAD 指针指向当前分支指针。 -

+

新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支,表示新分支成为当前分支。 -

+

每次提交只会让当前分支指针向前移动,而其它分支指针不会移动。 -

+

合并分支也只需要改变指针即可。 -

+

# 冲突 当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。 -

+

Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。 @@ -100,7 +100,7 @@ Creating a new branch is quick AND simple. $ git merge --no-ff -m "merge with no-ff" dev ``` -

+

# 分支管理策略 @@ -108,7 +108,7 @@ master 分支应该是非常稳定的,只用来发布新版本; 日常开发在开发分支 dev 上进行。 -

+

# 储藏(Stashing) @@ -148,7 +148,7 @@ $ ssh-keygen -t rsa -C "youremail@example.com" # Git 命令一览 -

+

比较详细的地址:http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf diff --git a/docs/notes/HTTP.md b/docs/notes/HTTP.md index 8501eff542..228951a159 100644 --- a/docs/notes/HTTP.md +++ b/docs/notes/HTTP.md @@ -62,17 +62,17 @@ URI 包含 URL 和 URN。 -

+

## 请求和响应报文 ### 1. 请求报文 -

+

### 2. 响应报文 -

+

# 二、HTTP 方法 @@ -159,7 +159,7 @@ DELETE /file.html HTTP/1.1 CONNECT www.example.com:443 HTTP/1.1 ``` -

+

## TRACE @@ -302,7 +302,7 @@ CONNECT www.example.com:443 HTTP/1.1 ## 连接管理 -

+

### 1. 短连接与长连接 @@ -631,11 +631,11 @@ HTTP/1.1 使用虚拟主机技术,使得一台服务器拥有多个域名, - 用户察觉得到正向代理的存在。 -

+

- 而反向代理一般位于内部网络中,用户察觉不到。 -

+

### 2. 网关 @@ -657,7 +657,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) 通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。 -

+

## 加密 @@ -668,7 +668,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:运算速度快; - 缺点:无法安全地将密钥传输给通信方。 -

+

### 2.非对称密钥加密 @@ -681,7 +681,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:可以更安全地将公开密钥传输给通信发送方; - 缺点:运算速度慢。 -

+

### 3. HTTPS 采用的加密方式 @@ -690,7 +690,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 使用非对称密钥加密方式,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性; - 获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。(下图中的 Session Key 就是 Secret Key) -

+

## 认证 @@ -702,7 +702,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) 进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。 -

+

## 完整性保护 @@ -731,7 +731,7 @@ HTTP/1.x 实现简单是以牺牲性能为代价的: HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式的。 -

+

在通信过程中,只会有一个 TCP 连接存在,它承载了任意数量的双向数据流(Stream)。 @@ -739,13 +739,13 @@ HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式 - 消息(Message)是与逻辑请求或响应对应的完整的一系列帧。 - 帧(Frame)是最小的通信单位,来自不同数据流的帧可以交错发送,然后再根据每个帧头的数据流标识符重新组装。 -

+

## 服务端推送 HTTP/2.0 在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了。例如客户端请求 page.html 页面,服务端就把 script.js 和 style.css 等与之相关的资源一起发给客户端。 -

+

## 首部压缩 @@ -755,7 +755,7 @@ HTTP/2.0 要求客户端和服务器同时维护和更新一个包含之前见 不仅如此,HTTP/2.0 也使用 Huffman 编码对首部字段进行压缩。 -

+

# 八、HTTP/1.1 新特性 diff --git a/docs/notes/Java IO.md b/docs/notes/Java IO.md index 41b4ed3ec5..4af023377e 100644 --- a/docs/notes/Java IO.md +++ b/docs/notes/Java IO.md @@ -97,7 +97,7 @@ Java I/O 使用了装饰者模式来实现。以 InputStream 为例, - FileInputStream 是 InputStream 的子类,属于具体组件,提供了字节流的输入操作; - FilterInputStream 属于抽象装饰者,装饰者用于装饰组件,为组件提供额外的功能。例如 BufferedInputStream 为 FileInputStream 提供缓存的功能。 -

+

实例化一个具有缓存功能的字节流对象时,只需要在 FileInputStream 对象上再套一层 BufferedInputStream 对象即可。 @@ -277,7 +277,7 @@ public static void main(String[] args) throws IOException { - Socket:客户端类 - 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。 -

+

## Datagram @@ -339,23 +339,23 @@ I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重 ① 新建一个大小为 8 个字节的缓冲区,此时 position 为 0,而 limit = capacity = 8。capacity 变量不会改变,下面的讨论会忽略它。 -

+

② 从输入通道中读取 5 个字节数据写入缓冲区中,此时 position 为 5,limit 保持不变。 -

+

③ 在将缓冲区的数据写到输出通道之前,需要先调用 flip() 方法,这个方法将 limit 设置为当前 position,并将 position 设置为 0。 -

+

④ 从缓冲区中取 4 个字节到输出缓冲中,此时 position 设为 4。 -

+

⑤ 最后需要调用 clear() 方法来清空缓冲区,此时 position 和 limit 都被设置为最初位置。 -

+

## 文件 NIO 实例 @@ -413,7 +413,7 @@ NIO 实现了 IO 多路复用中的 Reactor 模型,一个线程 Thread 使用 应该注意的是,只有套接字 Channel 才能配置为非阻塞,而 FileChannel 不能,为 FileChannel 配置非阻塞也没有意义。 -

+

### 1. 创建选择器 diff --git "a/docs/notes/Java \345\237\272\347\241\200.md" "b/docs/notes/Java \345\237\272\347\241\200.md" index c504623430..d0d43b3b5e 100644 --- "a/docs/notes/Java \345\237\272\347\241\200.md" +++ "b/docs/notes/Java \345\237\272\347\241\200.md" @@ -193,7 +193,7 @@ value 数组被声明为 final,这意味着 value 数组初始化之后就不 如果一个 String 对象已经被创建过了,那么就会从 String Pool 中取得引用。只有 String 是不可变的,才可能使用 String Pool。 -

+

**3. 安全性** @@ -1356,7 +1356,7 @@ Throwable 可以用来表示任何可以作为异常抛出的类,分为两种 - **受检异常** :需要用 try...catch... 语句捕获并进行处理,并且可以从异常中恢复; - **非受检异常** :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序崩溃并且无法恢复。 -

+

- [Java 入门之异常处理](https://www.tianmaying.com/tutorial/Java-Exception) - [Java 异常的面试问题及答案 -Part 1](http://www.importnew.com/7383.html) diff --git "a/docs/notes/Java \345\256\271\345\231\250.md" "b/docs/notes/Java \345\256\271\345\231\250.md" index 50b21fbcc2..23537532cb 100644 --- "a/docs/notes/Java \345\256\271\345\231\250.md" +++ "b/docs/notes/Java \345\256\271\345\231\250.md" @@ -24,7 +24,7 @@ ## Collection -

+

### 1. Set @@ -50,7 +50,7 @@ ## Map -

+

- TreeMap:基于红黑树实现。 @@ -65,7 +65,7 @@ ## 迭代器模式 -

+

Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。 @@ -126,7 +126,7 @@ public class ArrayList extends AbstractList private static final int DEFAULT_CAPACITY = 10; ``` -

+

### 2. 扩容 @@ -430,7 +430,7 @@ transient Node first; transient Node last; ``` -

+

### 2. 与 ArrayList 的比较 @@ -452,7 +452,7 @@ transient Entry[] table; Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶取模运算结果相同的 Entry。 -

+

```java static class Entry implements Map.Entry { @@ -528,7 +528,7 @@ map.put("K3", "V3"); - 计算键值对所在的桶; - 在链表上顺序查找,时间复杂度显然和链表的长度成正比。 -

+

### 3. put 操作 @@ -864,7 +864,7 @@ final Segment[] segments; static final int DEFAULT_CONCURRENCY_LEVEL = 16; ``` -

+

### 2. size 操作 diff --git "a/docs/notes/Java \345\271\266\345\217\221.md" "b/docs/notes/Java \345\271\266\345\217\221.md" index ee8a6fd5b9..dc7e314dc9 100644 --- "a/docs/notes/Java \345\271\266\345\217\221.md" +++ "b/docs/notes/Java \345\271\266\345\217\221.md" @@ -61,7 +61,7 @@ # 一、线程状态转换 -

+

## 新建(New) @@ -736,7 +736,7 @@ java.util.concurrent(J.U.C)大大提高了并发性能,AQS 被认为是 J. 维护了一个计数器 cnt,每次调用 countDown() 方法会让计数器的值减 1,减到 0 的时候,那些因为调用 await() 方法而在等待的线程就会被唤醒。 -

+

```java public class CountdownLatchExample { @@ -785,7 +785,7 @@ public CyclicBarrier(int parties) { } ``` -

+

```java public class CyclicBarrierExample { @@ -1022,7 +1022,7 @@ public class ForkJoinPool extends AbstractExecutorService ForkJoinPool 实现了工作窃取算法来提高 CPU 的利用率。每个线程都维护了一个双端队列,用来存储需要执行的任务。工作窃取算法允许空闲的线程从其它线程的双端队列中窃取一个任务来执行。窃取的任务必须是最晚的任务,避免和队列所属线程发生竞争。例如下图中,Thread2 从 Thread1 的队列中拿出最晚的 Task1 任务,Thread1 会拿出 Task2 来执行,这样就避免发生竞争。但是如果队列中只有一个任务时还是会发生竞争。 -

+

# 九、线程不安全示例 @@ -1077,19 +1077,19 @@ Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异, 加入高速缓存带来了一个新的问题:缓存一致性。如果多个缓存共享同一块主内存区域,那么多个缓存的数据可能会不一致,需要一些协议来解决这个问题。 -

+

所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存或者寄存器中,保存了该线程使用的变量的主内存副本拷贝。 线程只能直接操作工作内存中的变量,不同线程之间的变量值传递需要通过主内存来完成。 -

+

## 内存间交互操作 Java 内存模型定义了 8 个操作来完成主内存和工作内存的交互操作。 -

+

- read:把一个变量的值从主内存传输到工作内存中 - load:在 read 之后执行,把 read 得到的值放入工作内存的变量副本中 @@ -1112,11 +1112,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 重写之前线程不安全的代码之后得到以下线程安全实现: @@ -1224,7 +1224,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 在一个线程内,在程序前面的操作先行发生于后面的操作。 -

+

### 2. 管程锁定规则 @@ -1232,7 +1232,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 一个 unlock 操作先行发生于后面对同一个锁的 lock 操作。 -

+

### 3. volatile 变量规则 @@ -1240,7 +1240,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作。 -

+

### 4. 线程启动规则 @@ -1248,7 +1248,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 Thread 对象的 start() 方法调用先行发生于此线程的每一个动作。 -

+

### 5. 线程加入规则 @@ -1256,7 +1256,7 @@ Thread 对象的 start() 方法调用先行发生于此线程的每一个动作 Thread 对象的结束先行发生于 join() 方法返回。 -

+

### 6. 线程中断规则 @@ -1474,7 +1474,7 @@ public class ThreadLocalExample1 { 它所对应的底层结构图为: -

+

每个 Thread 都有一个 ThreadLocal.ThreadLocalMap 对象。 @@ -1577,17 +1577,17 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 以下是 HotSpot 虚拟机对象头的内存布局,这些数据被称为 Mark Word。其中 tag bits 对应了五个状态,这些状态在右侧的 state 表格中给出。除了 marked for gc 状态,其它四个状态已经在前面介绍过了。 -

+

下图左侧是一个线程的虚拟机栈,其中有一部分称为 Lock Record 的区域,这是在轻量级锁运行过程创建的,用于存放锁对象的 Mark Word。而右侧就是一个锁对象,包含了 Mark Word 和其它信息。 -

+

轻量级锁是相对于传统的重量级锁而言,它使用 CAS 操作来避免重量级锁使用互斥量的开销。对于绝大部分的锁,在整个同步周期内都是不存在竞争的,因此也就不需要都使用互斥量进行同步,可以先采用 CAS 操作进行同步,如果 CAS 失败了再改用互斥量进行同步。 当尝试获取一个锁对象时,如果锁对象标记为 0 01,说明锁对象的锁未锁定(unlocked)状态。此时虚拟机在当前线程的虚拟机栈中创建 Lock Record,然后使用 CAS 操作将对象的 Mark Word 更新为 Lock Record 指针。如果 CAS 操作成功了,那么线程就获取了该对象上的锁,并且对象的 Mark Word 的锁标记变为 00,表示该对象处于轻量级锁状态。 -

+

如果 CAS 操作失败了,虚拟机首先会检查对象的 Mark Word 是否指向当前线程的虚拟机栈,如果是的话说明当前线程已经拥有了这个锁对象,那就可以直接进入同步块继续执行,否则说明这个锁对象已经被其他线程线程抢占了。如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁。 @@ -1599,7 +1599,7 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 当有另外一个线程去尝试获取这个锁对象时,偏向状态就宣告结束,此时撤销偏向(Revoke Bias)后恢复到未锁定状态或者轻量级锁状态。 -

+

# 十三、多线程开发良好的实践 diff --git "a/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" "b/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" index 1a6e0cff26..e2a2bff1b3 100644 --- "a/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" +++ "b/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" @@ -32,7 +32,7 @@ # 一、运行时数据区域 -

+

## 程序计数器 @@ -42,7 +42,7 @@ 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 -

+

可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小,在 JDK 1.4 中默认为 256K,而在 JDK 1.5+ 默认为 1M: @@ -61,7 +61,7 @@ java -Xss2M HackTheJava 本地方法一般是用其它语言(C、C++ 或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序,对待这些方法需要特别处理。 -

+

## 堆 @@ -146,7 +146,7 @@ Java 虚拟机使用该算法来判断对象是否可被回收,GC Roots 一般 - 方法区中类静态属性引用的对象 - 方法区中的常量引用的对象 -

+

### 3. 方法区的回收 @@ -227,7 +227,7 @@ obj = null; ### 1. 标记 - 清除 -

+

在标记阶段,程序会检查每个对象是否为活动对象,如果是活动对象,则程序会在对象头部打上标记。 @@ -242,7 +242,7 @@ obj = null; ### 2. 标记 - 整理 -

+

让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。 @@ -256,7 +256,7 @@ obj = null; ### 3. 复制 -

+

将内存划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了就将还存活的对象复制到另一块上面,然后再把使用过的内存空间进行一次清理。 @@ -277,7 +277,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ## 垃圾收集器 -

+

以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 @@ -286,7 +286,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ### 1. Serial 收集器 -

+

Serial 翻译为串行,也就是说它以串行的方式执行。 @@ -298,7 +298,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 2. ParNew 收集器 -

+

它是 Serial 收集器的多线程版本。 @@ -318,7 +318,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 4. Serial Old 收集器 -

+

是 Serial 收集器的老年代版本,也是给 Client 场景下的虚拟机使用。如果用在 Server 场景下,它有两大用途: @@ -327,7 +327,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 5. Parallel Old 收集器 -

+

是 Parallel Scavenge 收集器的老年代版本。 @@ -335,7 +335,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 6. CMS 收集器 -

+

CMS(Concurrent Mark Sweep),Mark Sweep 指的是标记 - 清除算法。 @@ -360,17 +360,17 @@ G1(Garbage-First),它是一款面向服务端应用的垃圾收集器, 堆被分为新生代和老年代,其它收集器进行收集的范围都是整个新生代或者老年代,而 G1 可以直接对新生代和老年代一起回收。 -

+

G1 把堆划分成多个大小相等的独立区域(Region),新生代和老年代不再物理隔离。 -

+

通过引入 Region 的概念,从而将原来的一整块内存空间划分成多个的小空间,使得每个小空间可以单独进行垃圾回收。这种划分方法带来了很大的灵活性,使得可预测的停顿时间模型成为可能。通过记录每个 Region 垃圾回收时间以及回收所获得的空间(这两个值是通过过去回收的经验获得),并维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的 Region。 每个 Region 都有一个 Remembered Set,用来记录该 Region 对象的引用对象所在的 Region。通过使用 Remembered Set,在做可达性分析的时候就可以避免全堆扫描。 -

+

如果不计算维护 Remembered Set 的操作,G1 收集器的运作大致可划分为以下几个步骤: @@ -458,7 +458,7 @@ G1 把堆划分成多个大小相等的独立区域(Region),新生代和 ## 类的生命周期 -

+

包括以下 7 个阶段: @@ -628,7 +628,7 @@ System.out.println(ConstClass.HELLOWORLD); 下图展示了类加载器之间的层次关系,称为双亲委派模型(Parents Delegation Model)。该模型要求除了顶层的启动类加载器外,其它的类加载器都要有自己的父类加载器。这里的父子关系一般通过组合关系(Composition)来实现,而不是继承关系(Inheritance)。 -

+

### 1. 工作过程 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index 305174beb3..eb3ce48b4a 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -61,7 +61,7 @@ -

+

考虑到 dp[i] 只与 dp[i - 1] 和 dp[i - 2] 有关,因此可以只用两个变量来存储 dp[i - 1] 和 dp[i - 2],使得原来的 O(N) 空间复杂度优化为 O(1) 复杂度。 @@ -94,7 +94,7 @@ public int climbStairs(int n) { -

+

```java public int rob(int[] nums) { @@ -150,7 +150,7 @@ private int rob(int[] nums, int first, int last) { -

+

## 5. 母牛生产 @@ -162,7 +162,7 @@ private int rob(int[] nums, int first, int last) { -

+

# 矩阵路径 @@ -212,7 +212,7 @@ public int minPathSum(int[][] grid) { 题目描述:统计从矩阵左上角到右下角的路径总数,每次只能向右或者向下移动。 -

+

```java public int uniquePaths(int m, int n) { @@ -443,7 +443,7 @@ public int numDecodings(String s) { -

+

对于一个长度为 N 的序列,最长递增子序列并不一定会以 SN 为结尾,因此 dp[N] 不是序列的最长递增子序列的长度,需要遍历 dp 数组找出最大值才是所要的结果,max{ dp[i] | 1 <= i <= N} 即为所求。 @@ -616,7 +616,7 @@ public int wiggleMaxLength(int[] nums) { -

+

对于长度为 N 的序列 S1 和长度为 M 的序列 S2,dp[N][M] 就是序列 S1 和序列 S2 的最长公共子序列长度。 @@ -662,7 +662,7 @@ public int wiggleMaxLength(int[] nums) { -

+

```java // W 为背包总体积 @@ -691,7 +691,7 @@ public int knapsack(int W, int N, int[] weights, int[] values) { -

+

因为 dp[j-w] 表示 dp[i-1][j-w],因此不能先求 dp[i][j-w],防止将 dp[i-1][j-w] 覆盖。也就是说要先计算 dp[i][j] 再计算 dp[i][j-w],在程序实现时需要按倒序来循环求解。 @@ -1055,7 +1055,7 @@ public int combinationSum4(int[] nums, int target) { 题目描述:交易之后需要有一天的冷却时间。 -

+

```java public int maxProfit(int[] prices) { @@ -1098,7 +1098,7 @@ The total profit is ((8 - 1) - 2) + ((9 - 4) - 2) = 8. 题目描述:每交易一次,都要支付一定的费用。 -

+

```java public int maxProfit(int[] prices, int fee) { diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" index b24ab780f6..5db6895dec 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" @@ -32,7 +32,7 @@ Output: index1=1, index2=2 数组中的元素最多遍历一次,时间复杂度为 O(N)。只使用了两个额外变量,空间复杂度为 O(1)。 -

+

```java public int[] twoSum(int[] numbers, int target) { @@ -102,7 +102,7 @@ Explanation: 1 * 1 + 2 * 2 = 5 Given s = "leetcode", return "leotcede". ``` -

+

使用双指针,一个指针从头向尾遍历,一个指针从尾到头遍历,当两个指针都遍历到元音字符时,交换这两个元音字符。 @@ -111,7 +111,7 @@ Given s = "leetcode", return "leotcede". - 时间复杂度为 O(N):只需要遍历所有元素一次 - 空间复杂度 O(1):只需要使用两个额外变量 -

+

```java private final static HashSet vowels = new HashSet<>( @@ -155,7 +155,7 @@ Explanation: You could delete the character 'c'. 使用双指针可以很容易判断一个字符串是否是回文字符串:令一个指针从左到右遍历,一个指针从右到左遍历,这两个指针同时移动一个位置,每次都判断两个指针指向的字符是否相同,如果都相同,字符串才是具有左右对称性质的回文字符串。 -

+

本题的关键是处理删除一个字符。在使用双指针遍历字符串时,如果出现两个指针指向的字符不相等的情况,我们就试着删除一个字符,再判断删除完之后的字符串是否是回文字符串。 @@ -163,7 +163,7 @@ Explanation: You could delete the character 'c'. 在试着删除字符时,我们既可以删除左指针指向的字符,也可以删除右指针指向的字符。 -

+

```java public boolean validPalindrome(String s) { diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" index 09fdc70d43..b5155262c5 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" @@ -200,7 +200,7 @@ public String frequencySort(String s) { 有三种颜色的球,算法的目标是将这三种球按颜色顺序正确地排列。它其实是三向切分快速排序的一种变种,在三向切分快速排序中,每次切分都将数组分成三个区间:小于切分元素、等于切分元素、大于切分元素,而该算法是将数组分成三个区间:等于红色、等于白色、等于蓝色。 -

+

## 1. 按颜色进行排序 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" index 9f14efbd0c..6f3735d9cd 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" @@ -32,7 +32,7 @@ # BFS -

+

广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 @@ -269,7 +269,7 @@ private int getShortestPath(List[] graphic, int start, int end) { # DFS -

+

广度优先搜索一层一层遍历,每一层得到的所有新节点,要用队列存储起来以备下一层遍历的时候再遍历。 @@ -591,7 +591,7 @@ Backtracking(回溯)属于 DFS。 [Leetcode](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) / [力扣](https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/description/) -

+

```html Input:Digit string "23" @@ -1194,7 +1194,7 @@ private boolean isPalindrome(String s, int begin, int end) { [Leetcode](https://leetcode.com/problems/sudoku-solver/description/) / [力扣](https://leetcode-cn.com/problems/sudoku-solver/description/) -

+

```java private boolean[][] rowsUsed = new boolean[9][10]; @@ -1253,7 +1253,7 @@ private int cubeNum(int i, int j) { [Leetcode](https://leetcode.com/problems/n-queens/description/) / [力扣](https://leetcode-cn.com/problems/n-queens/description/) -

+

在 n\*n 的矩阵中摆放 n 个皇后,并且每个皇后不能在同一行,同一列,同一对角线上,求所有的 n 皇后的解。 @@ -1261,12 +1261,12 @@ private int cubeNum(int i, int j) { 45 度对角线标记数组的长度为 2 \* n - 1,通过下图可以明确 (r, c) 的位置所在的数组下标为 r + c。 -

+

135 度对角线标记数组的长度也是 2 \* n - 1,(r, c) 的位置所在的数组下标为 n - 1 - (r - c)。 -

+

```java private List> solutions; diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" index e21daeeabb..7083450342 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" @@ -1045,7 +1045,7 @@ private void inOrder(TreeNode node, List nums) { # Trie -

+

Trie,又称前缀树或字典树,用于判断字符串是否存在或者是否具有某种字符串前缀。 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" index f75bddc980..9a9a20fd99 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" @@ -35,7 +35,7 @@ Output: 2 证明:假设在某次选择中,贪心策略选择给当前满足度最小的孩子分配第 m 个饼干,第 m 个饼干为可以满足该孩子的最小饼干。假设存在一种最优策略,可以给该孩子分配第 n 个饼干,并且 m < n。我们可以发现,经过这一轮分配,贪心策略分配后剩下的饼干一定有一个比最优策略来得大。因此在后续的分配中,贪心策略一定能满足更多的孩子。也就是说不存在比贪心策略更优的策略,即贪心策略就是最优策略。 -

+

```java public int findContentChildren(int[] grid, int[] size) { diff --git a/docs/notes/Linux.md b/docs/notes/Linux.md index b1ba8c58c2..924d87c493 100644 --- a/docs/notes/Linux.md +++ b/docs/notes/Linux.md @@ -165,7 +165,7 @@ Linux 发行版是 Linux 内核及各种应用软件的集成版本。 - 编辑模式(Insert mode):按下 "i" 等按键之后进入,可以对文本进行编辑; - 指令列模式(Bottom-line mode):按下 ":" 按键之后进入,用于保存退出等操作。 -

+

在指令列模式下,有以下命令用于离开或者保存文件。 @@ -199,25 +199,25 @@ GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操 IDE(ATA)全称 Advanced Technology Attachment,接口速度最大为 133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。 -

+

### 2. SATA SATA 全称 Serial ATA,也就是使用串口的 ATA 接口,抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能。SATA-II 的接口速度为 300MiB/s,而 SATA-III 标准可达到 600MiB/s 的传输速度。SATA 的数据线也比 ATA 的细得多,有利于机箱内的空气流通,整理线材也比较方便。 -

+

### 3. SCSI SCSI 全称是 Small Computer System Interface(小型机系统接口),SCSI 硬盘广为工作站以及个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速 15000rpm 的高转速,且传输时 CPU 占用率较低,但是单价也比相同容量的 ATA 及 SATA 硬盘更加昂贵。 -

+

### 4. SAS SAS(Serial Attached SCSI)是新一代的 SCSI 技术,和 SATA 硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s。此外也通过缩小连接线改善系统内部空间等。 -

+

## 磁盘的文件名 @@ -252,7 +252,7 @@ GPT 没有扩展分区概念,都是主分区,每个 LBA 可以分 4 个分 MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB = 8 ZB。 -

+

## 开机检测程序 @@ -260,7 +260,7 @@ MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB BIOS(Basic Input/Output System,基本输入输出系统),它是一个固件(嵌入在硬件中的软件),BIOS 程序存放在断电后内容不会丢失的只读内存中。 -

+

BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可以开机的磁盘,并读取磁盘第一个扇区的主要开机记录(MBR),由主要开机记录(MBR)执行其中的开机管理程序,这个开机管理程序会加载操作系统的核心文件。 @@ -268,7 +268,7 @@ BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可 下图中,第一扇区的主要开机记录(MBR)中的开机管理程序提供了两个选单:M1、M2,M1 指向了 Windows 操作系统,而 M2 指向其它分区的启动扇区,里面包含了另外一个开机管理程序,提供了一个指向 Linux 的选单。 -

+

安装多重引导,最好先安装 Windows 再安装 Linux。因为安装 Windows 时会覆盖掉主要开机记录(MBR),而 Linux 可以选择将开机管理程序安装在主要开机记录(MBR)或者其它分区的启动扇区,并且可以设置开机管理程序的选单。 @@ -294,17 +294,17 @@ BIOS 不可以读取 GPT 分区表,而 UEFI 可以。 - superblock:记录文件系统的整体信息,包括 inode 和 block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等; - block bitmap:记录 block 是否被使用的位图。 -

+

## 文件读取 对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中查找文件内容所在的所有 block,然后把所有 block 的内容读出来。 -

+

而对于 FAT 文件系统,它没有 inode,每个 block 中存储着下一个 block 的编号。 -

+

## 磁盘碎片 @@ -341,7 +341,7 @@ inode 具有以下特点: inode 中记录了文件内容所在的 block 编号,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block 编号。因此引入了间接、双间接、三间接引用。间接引用让 inode 记录的引用 block 块记录引用信息。 -

+

## 目录 @@ -367,7 +367,7 @@ ext3/ext4 文件系统引入了日志功能,可以利用日志来修复文件 - /usr (unix software resource):所有系统默认软件都会安装到这个目录; - /var (variable):存放系统或程序运行过程中的数据文件。 -

+

# 五、文件 @@ -534,7 +534,7 @@ cp [-adfilprsu] source destination ## 链接 -

+

```html @@ -662,7 +662,7 @@ example: find . -name "shadow*" +4、4 和 -4 的指示的时间范围如下: -

+

**② 与文件拥有者和所属群组有关的选项** @@ -1176,7 +1176,7 @@ dmtsai lines: 5 columns: 9 | T | stopped (either by a job control signal or because it is being traced)
结束,进程既可以被作业控制信号结束,也可能是正在被追踪。|
-

+

## SIGCHLD @@ -1189,7 +1189,7 @@ dmtsai lines: 5 columns: 9 在子进程退出时,它的进程描述符不会立即释放,这是为了让父进程得到子进程信息,父进程通过 wait() 和 waitpid() 来获得一个已经退出的子进程的信息。 -

+

## wait() diff --git a/docs/notes/MySQL.md b/docs/notes/MySQL.md index 2239d48a72..14da320107 100644 --- a/docs/notes/MySQL.md +++ b/docs/notes/MySQL.md @@ -42,7 +42,7 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且小于等于 keyi+1。 -

+

### 2. 操作 @@ -84,11 +84,11 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 InnoDB 的 B+Tree 索引分为主索引和辅助索引。主索引的叶子节点 data 域记录着完整的数据记录,这种索引方式被称为聚簇索引。因为无法把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。 -

+

辅助索引的叶子节点的 data 域记录着主键的值,因此在使用辅助索引进行查找时,需要先查找到主键值,然后再到主索引中进行查找。 -

+

### 2. 哈希索引 @@ -350,7 +350,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 当一个表的数据不断增多时,Sharding 是必然的选择,它可以将数据分布到集群的不同节点上,从而缓存单个数据库的压力。 -

+

## 垂直切分 @@ -358,7 +358,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 在数据库的层面使用垂直切分将按数据库中表的密集程度部署到不同的库中,例如将原来的电商数据库垂直切分成商品数据库、用户数据库等。 -

+

## Sharding 策略 @@ -392,7 +392,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 - **I/O 线程** :负责从主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log)。 - **SQL 线程** :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中重放(Replay)。 -

+

## 读写分离 @@ -406,7 +406,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 读写分离常用代理方式来实现,代理服务器接收应用层传来的读写请求,然后决定转发到哪个服务器。 -

+

# 参考资料 diff --git a/docs/notes/Redis.md b/docs/notes/Redis.md index a8b71352fd..38901f41b7 100644 --- a/docs/notes/Redis.md +++ b/docs/notes/Redis.md @@ -67,7 +67,7 @@ Redis 支持很多特性,例如将内存中的数据持久化到硬盘中, ## STRING -

+

```html > set hello world @@ -82,7 +82,7 @@ OK ## LIST -

+

```html > rpush list-key item @@ -110,7 +110,7 @@ OK ## SET -

+

```html > sadd set-key item @@ -144,7 +144,7 @@ OK ## HASH -

+

```html > hset hash-key sub-key1 value1 @@ -175,7 +175,7 @@ OK ## ZSET -

+

```html > zadd zset-key 728 member1 @@ -317,11 +317,11 @@ int dictRehash(dict *d, int n) { 跳跃表是基于多指针有序链表实现的,可以看成多个有序链表。 -

+

在查找时,从上层指针开始查找,找到对应的区间之后再到下一层去查找。下图演示了查找 22 的过程。 -

+

与红黑树等平衡树相比,跳跃表具有以下优点: @@ -472,7 +472,7 @@ Redis 服务器是一个事件驱动程序。 Redis 基于 Reactor 模式开发了自己的网络事件处理器,使用 I/O 多路复用程序来同时监听多个套接字,并将到达的事件传送给文件事件分派器,分派器会根据套接字产生的事件类型调用相应的事件处理器。 -

+

## 时间事件 @@ -525,7 +525,7 @@ def main(): 从事件处理的角度来看,服务器运行流程如下: -

+

# 十一、复制 @@ -545,7 +545,7 @@ def main(): 随着负载不断上升,主服务器可能无法很快地更新所有从服务器,或者重新连接和重新同步从服务器将导致系统超载。为了解决这个问题,可以创建一个中间层来分担主服务器的复制工作。中间层的服务器是最上层服务器的从服务器,又是最下层服务器的主服务器。 -

+

# 十二、Sentinel @@ -580,7 +580,7 @@ Sentinel(哨兵)可以监听集群中的服务器,并在主服务器进入 Redis 没有关系型数据库中的表这一概念来将同种类型的数据存放在一起,而是使用命名空间的方式来实现这一功能。键名的前面部分存储命名空间,后面部分的内容存储 ID,通常使用 : 来进行分隔。例如下面的 HASH 的键名为 article:92617,其中 article 为命名空间,ID 为 92617。 -

+

## 点赞功能 @@ -588,13 +588,13 @@ Redis 没有关系型数据库中的表这一概念来将同种类型的数据 为了节约内存,规定一篇文章发布满一周之后,就不能再对它进行投票,而文章的已投票集合也会被删除,可以为文章的已投票集合设置一个一周的过期时间就能实现这个规定。 -

+

## 对文章进行排序 为了按发布时间和点赞数进行排序,可以建立一个文章发布时间的有序集合和一个文章点赞数的有序集合。(下图中的 score 就是这里所说的点赞数;下面所示的有序集合分值并不直接是时间和点赞数,而是根据时间和点赞数间接计算出来的) -

+

# 参考资料 diff --git a/docs/notes/Socket.md b/docs/notes/Socket.md index 64fc63008c..5dc40ed8b9 100644 --- a/docs/notes/Socket.md +++ b/docs/notes/Socket.md @@ -46,7 +46,7 @@ Unix 有五种 I/O 模型: ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); ``` -

+

## 非阻塞式 I/O @@ -54,7 +54,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 由于 CPU 要处理更多的系统调用,因此这种模型的 CPU 利用率比较低。 -

+

## I/O 复用 @@ -64,7 +64,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时有几万个连接,那么就需要创建相同数量的线程。相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。 -

+

## 信号驱动 I/O @@ -72,7 +72,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 相比于非阻塞式 I/O 的轮询方式,信号驱动 I/O 的 CPU 利用率更高。 -

+

## 异步 I/O @@ -80,7 +80,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 异步 I/O 与信号驱动 I/O 的区别在于,异步 I/O 的信号是通知应用进程 I/O 完成,而信号驱动 I/O 的信号是通知应用进程可以开始 I/O。 -

+

## 五大 I/O 模型比较 @@ -91,7 +91,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 非阻塞式 I/O 、信号驱动 I/O 和异步 I/O 在第一阶段不会阻塞。 -

+

# 二、I/O 复用 diff --git "a/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" "b/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" index 09a932d7cc..475bbc560c 100644 --- "a/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" +++ "b/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" @@ -48,11 +48,11 @@ - 用 min、max 表示数量范围; - 用 first、last 表示访问空间的包含范围; -

+

- begin、end 表示访问空间的排除范围,即 end 不包含尾部。 -

+

# 四、良好的代码风格 diff --git "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" index cee7f7056f..bf23703c05 100644 --- "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" @@ -70,7 +70,7 @@ EXPIRE 指令可以为一个键值对设置一个过期时间,从而避免了 Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节点为 /app1。 -

+

### 2. 节点类型 @@ -118,7 +118,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 协调者询问参与者事务是否执行成功,参与者发回事务执行结果。询问可以看成一种投票,需要参与者都同意才能执行。 -

+

#### 1.2 提交阶段 @@ -126,7 +126,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 需要注意的是,在准备阶段,参与者执行了事务,但是还未提交。只有在提交阶段接收到协调者发来的通知后,才进行提交或者回滚。 -

+

### 2. 存在的问题 @@ -154,14 +154,14 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 2. 之后将本地消息表中的消息转发到消息队列中,如果转发成功则将消息从本地消息表中删除,否则继续重新转发。 3. 在分布式事务操作的另一方从消息队列中读取一个消息,并执行消息中的操作。 -

+

# 三、CAP 分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition Tolerance),最多只能同时满足其中两项。 -

+

## 一致性 @@ -225,7 +225,7 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE - 接受者(Acceptor):对每个提议进行投票; - 告知者(Learner):被告知投票的结果,不参与投票过程。 -

+

## 执行过程 @@ -235,19 +235,19 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE 下图演示了两个 Proposer 和三个 Acceptor 的系统中运行该算法的初始过程,每个 Proposer 都会向所有 Acceptor 发送 Prepare 请求。 -

+

当 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n1, v1],并且之前还未接收过 Prepare 请求,那么发送一个 Prepare 响应,设置当前接收到的提议为 [n1, v1],并且保证以后不会再接受序号小于 n1 的提议。 如下图,Acceptor X 在收到 [n=2, v=8] 的 Prepare 请求时,由于之前没有接收过提议,因此就发送一个 [no previous] 的 Prepare 响应,设置当前接收到的提议为 [n=2, v=8],并且保证以后不会再接受序号小于 2 的提议。其它的 Acceptor 类似。 -

+

如果 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n2, v2],并且之前已经接收过提议 [n1, v1]。如果 n1 > n2,那么就丢弃该提议请求;否则,发送 Prepare 响应,该 Prepare 响应包含之前已经接收过的提议 [n1, v1],设置当前接收到的提议为 [n2, v2],并且保证以后不会再接受序号小于 n2 的提议。 如下图,Acceptor Z 收到 Proposer A 发来的 [n=2, v=8] 的 Prepare 请求,由于之前已经接收过 [n=4, v=5] 的提议,并且 n > 2,因此就抛弃该提议请求;Acceptor X 收到 Proposer B 发来的 [n=4, v=5] 的 Prepare 请求,因为之前接收到的提议为 [n=2, v=8],并且 2 <= 4,因此就发送 [n=2, v=8] 的 Prepare 响应,设置当前接收到的提议为 [n=4, v=5],并且保证以后不会再接受序号小于 4 的提议。Acceptor Y 类似。 -

+

### 2. Accept 阶段 @@ -257,13 +257,13 @@ Proposer A 接收到两个 Prepare 响应之后,就发送 [n=2, v=8] Accept Proposer B 过后也收到了两个 Prepare 响应,因此也开始发送 Accept 请求。需要注意的是,Accept 请求的 v 需要取它收到的最大提议编号对应的 v 值,也就是 8。因此它发送 [n=4, v=8] 的 Accept 请求。 -

+

### 3. Learn 阶段 Acceptor 接收到 Accept 请求时,如果序号大于等于该 Acceptor 承诺的最小序号,那么就发送 Learn 提议给所有的 Learner。当 Learner 发现有大多数的 Acceptor 接收了某个提议,那么该提议的提议值就被 Paxos 选择出来。 -

+

## 约束条件 @@ -291,47 +291,47 @@ Raft 也是分布式一致性协议,主要是用来竞选主节点。 - 下图展示一个分布式系统的最初阶段,此时只有 Follower 没有 Leader。Node A 等待一个随机的竞选超时时间之后,没收到 Leader 发来的心跳包,因此进入竞选阶段。 -

+

- 此时 Node A 发送投票请求给其它所有节点。 -

+

- 其它节点会对请求进行回复,如果超过一半的节点回复了,那么该 Candidate 就会变成 Leader。 -

+

- 之后 Leader 会周期性地发送心跳包给 Follower,Follower 接收到心跳包,会重新开始计时。 -

+

## 多个 Candidate 竞选 - 如果有多个 Follower 成为 Candidate,并且所获得票数相同,那么就需要重新开始投票。例如下图中 Node B 和 Node D 都获得两票,需要重新开始投票。 -

+

- 由于每个节点设置的随机竞选超时时间不同,因此下一次再次出现多个 Candidate 并获得同样票数的概率很低。 -

+

## 数据同步 - 来自客户端的修改都会被传入 Leader。注意该修改还未被提交,只是写入日志中。 -

+

- Leader 会把修改复制到所有 Follower。 -

+

- Leader 会等待大多数的 Follower 也进行了修改,然后才将修改提交。 -

+

- 此时 Leader 会通知的所有 Follower 让它们也提交修改,此时所有节点的值达成一致。 -

+

# 参考 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" index 1b40238cb0..46931b58e9 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" @@ -26,13 +26,13 @@ -

+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 @@ -92,23 +92,23 @@ public class Solution { 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { @@ -133,21 +133,21 @@ public int RectCover(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { @@ -172,7 +172,7 @@ public int JumpFloor(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 @@ -232,13 +232,13 @@ public int JumpFloorII(int target) { 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 @@ -300,13 +300,13 @@ private int minNumber(int[] nums, int l, int h) { 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 @@ -522,7 +522,7 @@ public int NumberOf1(int n) { -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 @@ -592,11 +592,11 @@ private void printNumber(char[] number) { ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 @@ -630,7 +630,7 @@ public ListNode deleteNode(ListNode head, ListNode tobeDelete) { ## 题目描述 -

+

## 解题描述 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" index 854388270d..aff1be3cbb 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" @@ -70,7 +70,7 @@ public boolean isNumeric(char[] str) { 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 @@ -131,7 +131,7 @@ private void swap(int[] nums, int i, int j) { 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { @@ -165,7 +165,7 @@ public ListNode FindKthToTail(ListNode head, int k) { 在相遇点,slow 要到环的入口点还需要移动 z 个节点,如果让 fast 重新从头开始移动,并且速度变为每次移动一个节点,那么它到环入口点还需要移动 x 个节点。在上面已经推导出 x=z,因此 fast 和 slow 将在环入口点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { @@ -228,7 +228,7 @@ public ListNode ReverseList(ListNode head) { ## 题目描述 -

+

## 解题思路 @@ -280,7 +280,7 @@ public ListNode Merge(ListNode list1, ListNode list2) { ## 题目描述 -

+

## 解题思路 @@ -308,7 +308,7 @@ private boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) { ## 题目描述 -

+

## 解题思路 @@ -334,7 +334,7 @@ private void swap(TreeNode root) { ## 题目描述 -

+

## 解题思路 @@ -364,7 +364,7 @@ boolean isSymmetrical(TreeNode t1, TreeNode t2) { 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" index f8853033b1..d897d973a1 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" @@ -87,7 +87,7 @@ public boolean IsPopOrder(int[] pushSequence, int[] popSequence) { 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 @@ -195,7 +195,7 @@ public ArrayList> Print(TreeNode pRoot) { 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 @@ -230,7 +230,7 @@ private boolean verify(int[] sequence, int first, int last) { 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 @@ -277,21 +277,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { @@ -333,7 +333,7 @@ public RandomListNode Clone(RandomListNode pHead) { 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" index c0d701f7dc..2bcc5e842f 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" @@ -33,7 +33,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java @@ -87,7 +87,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { @@ -132,7 +132,7 @@ Output: 从后向前遍是为了在改变 P2 所指向的内容时,不会影响到 P1 遍历原来字符串的内容。 -

+

```java public String replaceSpace(StringBuffer str) { @@ -164,7 +164,7 @@ public String replaceSpace(StringBuffer str) { 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -192,7 +192,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { - 头结点是在头插法中使用的一个额外节点,这个节点不存储值; - 第一个节点就是链表的第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -219,7 +219,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -244,13 +244,13 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。 -

+

```java // 缓存中序遍历数组每个值对应的索引 @@ -300,11 +300,11 @@ public class TreeLinkNode { ① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { @@ -337,7 +337,7 @@ public TreeLinkNode GetNext(TreeLinkNode pNode) { in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" index ed3d610d1d..ab34a6d003 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" @@ -120,7 +120,7 @@ private void merge(int[] nums, int l, int m, int h) { ## 题目描述 -

+

## 解题思路 @@ -212,7 +212,7 @@ private void inOrder(TreeNode root, int k) { 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 @@ -230,7 +230,7 @@ public int TreeDepth(TreeNode root) { 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" index 1e9f9c310f..053d412920 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" @@ -19,7 +19,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 @@ -92,7 +92,7 @@ public List> dicesSum(int n) { 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 @@ -152,7 +152,7 @@ public int LastRemaining_Solution(int n, int m) { 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 @@ -224,7 +224,7 @@ public int Add(int a, int b) { 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 @@ -289,7 +289,7 @@ public int StrToInt(String str) { 二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -309,7 +309,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 949dddc121..328090001e 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -80,7 +80,7 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT @@ -94,25 +94,25 @@ MySQL 默认采用自动提交模式。也就是说,如果不显式使用`STAR T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 -

+

## 读脏数据 T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 -

+

## 不可重复读 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。 -

+

## 幻影读 T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。 -

+

---- @@ -322,7 +322,7 @@ MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行(Record)的所有快照连接起来。 -

+

## 实现过程 @@ -536,7 +536,7 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图的 Course 和 Student 是一对多的关系。 -

+

## 表示出现多次的关系 @@ -544,19 +544,19 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。 -

+

## 联系的多向性 虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。 -

+

## 表示子类 用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。 -

+

# 参考资料 diff --git "a/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" "b/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" index 4df876d8cb..15384384ae 100644 --- "a/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" +++ "b/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" @@ -35,7 +35,7 @@ Ant 具有编译、测试和打包功能,其后出现的 Maven 在 Ant 的功能基础上又新增了依赖管理功能,而最新的 Gradle 又在 Maven 的功能基础上新增了对 Groovy 语言的支持。 -

+

Gradle 和 Maven 的区别是,它使用 Groovy 这种特定领域语言(DSL)来管理构建脚本,而不再使用 XML 这种标记性语言。因为项目如果庞大的话,XML 很容易就变得臃肿。 diff --git "a/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" "b/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" index c4d38ede79..9d453df9f2 100644 --- "a/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" +++ "b/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" @@ -173,7 +173,7 @@ a.+c ^\s*\/\/.*$ ``` -

+

**匹配结果** diff --git "a/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" "b/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" index 485e25bb56..7ed64fdfeb 100644 --- "a/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" +++ "b/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" @@ -19,20 +19,20 @@ 消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。 -

+

## 发布/订阅 消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。 -

+

发布与订阅模式和观察者模式有以下不同: - 观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,生产者与消费者不知道对方的存在,它们之间通过频道进行通信。 - 观察者模式是同步的,当事件触发时,主题会调用观察者的方法,然后等待方法返回;而发布与订阅模式是异步的,生产者向频道发送一个消息之后,就不需要关心消费者何时去订阅这个消息,可以立即返回。 -

+

# 二、使用场景 diff --git "a/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" "b/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" index 7969ca1f51..aad5fbdcfe 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" @@ -1,6 +1,6 @@ # 汉诺塔 -

+

有三个柱子,分别为 from、buffer、to。需要将 from 上的圆盘全部移动到 to 上,并且要保证小圆盘始终在大圆盘上。 @@ -8,15 +8,15 @@ ① 将 n-1 个圆盘从 from -> buffer -

+

② 将 1 个圆盘从 from -> to -

+

③ 将 n-1 个圆盘从 buffer -> to -

+

如果只有一个圆盘,那么只需要进行一次移动操作。 @@ -67,7 +67,7 @@ from H1 to H3 生成编码时,从根节点出发,向左遍历则添加二进制位 0,向右则添加二进制位 1,直到遍历到叶子节点,叶子节点代表的字符的编码就是这个路径编码。 -

+

```java public class Huffman { diff --git "a/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" "b/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" index e999528279..ca293d147f 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" @@ -12,7 +12,7 @@ 用于解决动态连通性问题,能动态连接两个点,并且判断两个点是否连通。 -

+

| 方法 | 描述 | | :---: | :---: | @@ -51,7 +51,7 @@ public abstract class UF { 但是 union 操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 -

+

```java public class QuickFindUF extends UF { @@ -91,7 +91,7 @@ public class QuickFindUF extends UF { 但是 find 操作开销很大,因为同一个连通分量的节点 id 值不同,id 值只是用来指向另一个节点。因此需要一直向上查找操作,直到找到最上层的节点。 -

+

```java public class QuickUnionUF extends UF { @@ -124,7 +124,7 @@ public class QuickUnionUF extends UF { 这种方法可以快速进行 union 操作,但是 find 操作和树高成正比,最坏的情况下树的高度为节点的数目。 -

+

# 加权 Quick Union @@ -132,7 +132,7 @@ public class QuickUnionUF extends UF { 理论研究证明,加权 quick-union 算法构造的树深度最多不超过 logN。 -

+

```java public class WeightedQuickUnionUF extends UF { diff --git "a/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" "b/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" index b520d1f763..2d89334d2d 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" @@ -29,7 +29,7 @@ public abstract class Sort> { 选择排序需要 \~N2/2 次比较和 \~N 次交换,它的运行时间与输入无关,这个特点使得它对一个已经排序的数组也需要这么多的比较和交换操作。 -

+

```java public class Selection> extends Sort { @@ -56,7 +56,7 @@ public class Selection> extends Sort { 在一轮循环中,如果没有发生交换,那么说明数组已经是有序的,此时可以直接退出。 -

+

```java public class Bubble> extends Sort { @@ -90,7 +90,7 @@ public class Bubble> extends Sort { - 最坏的情况下需要 \~N2/2 比较以及 \~N2/2 次交换,最坏的情况是数组是倒序的; - 最好的情况下需要 N-1 次比较和 0 次交换,最好的情况就是数组已经有序了。 -

+

```java public class Insertion> extends Sort { @@ -113,7 +113,7 @@ public class Insertion> extends Sort { 希尔排序使用插入排序对间隔 h 的序列进行排序。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。 -

+

```java public class Shell> extends Sort { @@ -147,7 +147,7 @@ public class Shell> extends Sort { 归并排序的思想是将数组分成两部分,分别进行排序,然后归并起来。 -

+

## 1. 归并方法 @@ -243,7 +243,7 @@ public class Down2UpMergeSort> extends MergeSort { - 归并排序将数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序; - 快速排序通过一个切分元素将数组分为两个子数组,左子数组小于等于切分元素,右子数组大于等于切分元素,将这两个子数组排序也就将整个数组排序了。 -

+

```java public class QuickSort> extends Sort { @@ -274,7 +274,7 @@ public class QuickSort> extends Sort { 取 a[l] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于它的元素,交换这两个元素。不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[l] 和 a[j] 交换位置。 -

+

```java private int partition(T[] nums, int l, int h) { @@ -378,7 +378,7 @@ public T select(T[] nums, int k) { 堆可以用数组来表示,这是因为堆是完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里不使用数组索引为 0 的位置,是为了更清晰地描述节点的位置关系。 -

+

```java public class Heap> { @@ -414,7 +414,7 @@ public class Heap> { 在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作,把这种操作称为上浮。 -

+

```java private void swim(int k) { @@ -427,7 +427,7 @@ private void swim(int k) { 类似地,当一个节点比子节点来得小,也需要不断地向下进行比较和交换操作,把这种操作称为下沉。一个节点如果有两个子节点,应当与两个子节点中最大那个节点进行交换。 -

+

```java private void sink(int k) { @@ -476,13 +476,13 @@ public T delMax() { 无序数组建立堆最直接的方法是从左到右遍历数组进行上浮操作。一个更高效的方法是从右至左进行下沉操作,如果一个节点的两个节点都已经是堆有序,那么进行下沉操作可以使得这个节点为根节点的堆有序。叶子节点不需要进行下沉操作,可以忽略叶子节点的元素,因此只需要遍历一半的元素即可。 -

+

#### 5.2 交换堆顶元素与最后一个元素 交换之后需要进行下沉操作维持堆的有序状态。 -

+

```java public class HeapSort> extends Sort { diff --git "a/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" "b/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" index c2b23ca57c..133ed8af42 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" @@ -245,13 +245,13 @@ public class BinarySearchOrderedST, Value> implement **二叉树** 是一个空链接,或者是一个有左右两个链接的节点,每个链接都指向一颗子二叉树。 -

+

**二叉查找树** (BST)是一颗二叉树,并且每个节点的值都大于等于其左子树中的所有节点的值而小于等于右子树的所有节点的值。 BST 有一个重要性质,就是它的中序遍历结果递增排序。 -

+

基本数据结构: @@ -325,7 +325,7 @@ private Value get(Node x, Key key) { 当插入的键不存在于树中,需要创建一个新节点,并且更新上层节点的链接指向该节点,使得该节点正确地链接到树中。 -

+

```java @Override @@ -354,11 +354,11 @@ private Node put(Node x, Key key, Value value) { 最好的情况下树是完全平衡的,每条空链接和根节点的距离都为 logN。 -

+

在最坏的情况下,树的高度为 N。 -

+

## 4. floor() @@ -436,7 +436,7 @@ private Node min(Node x) { 令指向最小节点的链接指向最小节点的右子树。 -

+

```java public void deleteMin() { @@ -457,7 +457,7 @@ public Node deleteMin(Node x) { - 如果待删除的节点只有一个子树, 那么只需要让指向待删除节点的链接指向唯一的子树即可; - 否则,让右子树的最小节点替换该节点。 -

+

```java public void delete(Key key) { @@ -520,7 +520,7 @@ private List keys(Node x, Key l, Key h) { 2-3 查找树引入了 2- 节点和 3- 节点,目的是为了让树平衡。一颗完美平衡的 2-3 查找树的所有空链接到根节点的距离应该是相同的。 -

+

## 1. 插入操作 @@ -530,11 +530,11 @@ private List keys(Node x, Key l, Key h) { - 如果插入到 2- 节点上,那么直接将新节点和原来的节点组成 3- 节点即可。 -

+

- 如果是插入到 3- 节点上,就会产生一个临时 4- 节点时,需要将 4- 节点分裂成 3 个 2- 节点,并将中间的 2- 节点移到上层节点中。如果上移操作继续产生临时 4- 节点则一直进行分裂上移,直到不存在临时 4- 节点。 -

+

## 2. 性质 @@ -546,7 +546,7 @@ private List keys(Node x, Key l, Key h) { 红黑树是 2-3 查找树,但它不需要分别定义 2- 节点和 3- 节点,而是在普通的二叉查找树之上,为节点添加颜色。指向一个节点的链接颜色如果为红色,那么这个节点和上层节点表示的是一个 3- 节点,而黑色则是普通链接。 -

+

红黑树具有以下性质: @@ -555,7 +555,7 @@ private List keys(Node x, Key l, Key h) { 画红黑树时可以将红链接画平。 -

+

```java public class RedBlackBST, Value> extends BST { @@ -575,7 +575,7 @@ public class RedBlackBST, Value> extends BST
+

```java public Node rotateLeft(Node h) { @@ -594,7 +594,7 @@ public Node rotateLeft(Node h) { 进行右旋转是为了转换两个连续的左红链接,这会在之后的插入过程中探讨。 -

+

```java public Node rotateRight(Node h) { @@ -613,7 +613,7 @@ public Node rotateRight(Node h) { 一个 4- 节点在红黑树中表现为一个节点的左右子节点都是红色的。分裂 4- 节点除了需要将子节点的颜色由红变黑之外,同时需要将父节点的颜色由黑变红,从 2-3 树的角度看就是将中间节点移到上层节点。 -

+

```java void flipColors(Node h) { @@ -631,7 +631,7 @@ void flipColors(Node h) { - 如果左子节点是红色的,而且左子节点的左子节点也是红色的,进行右旋转; - 如果左右子节点均为红色的,进行颜色转换。 -

+

```java @Override @@ -756,7 +756,7 @@ public class Transaction { 对于 N 个键,M 条链表 (N>M),如果哈希函数能够满足均匀性的条件,每条链表的大小趋向于 N/M,因此未命中的查找和插入操作所需要的比较次数为 \~N/M。 -

+

## 3. 线性探测法 @@ -765,7 +765,7 @@ public class Transaction { 使用线性探测法,数组的大小 M 应当大于键的个数 N(M>N)。 -

+

```java public class LinearProbingHashST implements UnorderedST { @@ -867,7 +867,7 @@ public void delete(Key key) { 线性探测法的成本取决于连续条目的长度,连续条目也叫聚簇。当聚簇很长时,在查找和插入时也需要进行很多次探测。例如下图中 2\~4 位置就是一个聚簇。 -

+

α = N/M,把 α 称为使用率。理论证明,当 α 小于 1/2 时探测的预计次数只在 1.5 到 2.5 之间。为了保证散列表的性能,应当调整数组的大小,使得 α 在 [1/4, 1/2] 之间。 diff --git "a/docs/notes/\347\274\223\345\255\230.md" "b/docs/notes/\347\274\223\345\255\230.md" index f52d9c1aa8..347088d06f 100644 --- "a/docs/notes/\347\274\223\345\255\230.md" +++ "b/docs/notes/\347\274\223\345\255\230.md" @@ -211,7 +211,7 @@ CDN 主要有以下优点: - 通过部署多台服务器,从而提高系统整体的带宽性能; - 多台服务器可以看成是一种冗余机制,从而具有高可用性。 -

+

# 五、缓存问题 @@ -285,11 +285,11 @@ Distributed Hash Table(DHT) 是一种哈希分布方式,其目的是为了 将哈希空间 [0, 2n-1] 看成一个哈希环,每个服务器节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。 -

+

一致性哈希在增加或者删除节点时只会影响到哈希环中相邻的节点,例如下图中新增节点 X,只需要将它前一个节点 C 上的数据重新进行分布即可,对于节点 A、B、D 都没有影响。 -

+

## 虚拟节点 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" index ae31fdaf5e..c4c5b71341 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" @@ -22,7 +22,7 @@ 从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0\~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。 -

+

# 分页系统地址映射 @@ -32,7 +32,7 @@ 下图的页表存放着 16 个页,这 16 个页需要用 4 个比特位来进行索引定位。例如对于虚拟地址(0010 000000000100),前 4 位是存储页面号 2,读取表项内容为(110 1),页表项最后一位表示是否存在于内存中,1 表示存在。后 12 位存储偏移量。这个页对应的页框的地址为 (110 000000000100)。 -

+

# 页面置换算法 @@ -72,7 +72,7 @@ 4,7,0,7,1,0,1,2,1,2,6 ``` -

+

## 3. 最近未使用 > NRU, Not Recently Used @@ -102,7 +102,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 当页面被访问 (读或写) 时设置该页面的 R 位为 1。需要替换的时候,检查最老页面的 R 位。如果 R 位是 0,那么这个页面既老又没有被使用,可以立刻置换掉;如果是 1,就将 R 位清 0,并把该页面放到链表的尾端,修改它的装入时间使它就像刚装入的一样,然后继续从链表的头部开始搜索。 -

+

## 6. 时钟 @@ -110,7 +110,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 第二次机会算法需要在链表中移动页面,降低了效率。时钟算法使用环形链表将页面连接起来,再使用一个指针指向最老的页面。 -

+

# 分段 @@ -118,11 +118,11 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 下图为一个编译器在编译过程中建立的多个表,有 4 个表是动态增长的,如果使用分页系统的一维地址空间,动态增长的特点会导致覆盖问题的出现。 -

+

分段的做法是把每个表分成段,一个段构成一个独立的地址空间。每个段的长度可以不同,并且可以动态增长。 -

+

# 段页式 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" index e27a1f3c51..2569d201fc 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" @@ -76,7 +76,7 @@ 如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。 -

+

Linux 的系统调用主要有以下这些: @@ -105,7 +105,7 @@ Linux 的系统调用主要有以下这些: 因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。 -

+

# 中断分类 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" index 53ad4abfd5..8dc385a469 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" @@ -20,7 +20,7 @@ # 必要条件 -

+

- 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。 - 占有和等待:已经得到了某个资源的进程可以再请求新的资源。 @@ -52,7 +52,7 @@ ## 1. 每种类型一个资源的死锁检测 -

+

上图为资源分配图,其中方框表示资源,圆圈表示进程。资源指向进程表示该资源已经分配给该进程,进程指向资源表示进程请求获取该资源。 @@ -62,7 +62,7 @@ ## 2. 每种类型多个资源的死锁检测 -

+

上图中,有三个进程四个资源,每个数据代表的含义如下: @@ -111,7 +111,7 @@ ## 1. 安全状态 -

+

图 a 的第二列 Has 表示已拥有的资源数,第三列 Max 表示总共需要的资源数,Free 表示还有可以使用的资源数。从图 a 开始出发,先让 B 拥有所需的所有资源(图 b),运行结束后释放 B,此时 Free 变为 5(图 c);接着以同样的方式运行 C 和 A,使得所有进程都能成功运行,因此可以称图 a 所示的状态时安全的。 @@ -123,13 +123,13 @@ 一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。 -

+

上图 c 为不安全状态,因此算法会拒绝之前的请求,从而避免进入图 c 中的状态。 ## 3. 多个资源的银行家算法 -

+

上图中有五个进程,四个资源。左边的图表示已经分配的资源,右边的图表示还需要分配的资源。最右边的 E、P 以及 A 分别表示:总资源、已分配资源以及可用资源,注意这三个为向量,而不是具体数值,例如 A=(1020),表示 4 个资源分别还剩下 1/0/2/0。 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" index 9def71159b..3a035ba9d8 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" @@ -16,7 +16,7 @@ - 制动手臂(Actuator arm):用于在磁道之间移动磁头; - 主轴(Spindle):使整个盘面转动。 -

+

# 磁盘调度算法 @@ -44,7 +44,7 @@ 虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。 -

+

## 3. 电梯算法 @@ -56,7 +56,7 @@ 因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了 SSTF 的饥饿问题。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" index 51a2badad0..d2b4634b08 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -36,7 +36,7 @@ 下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 -

+

## 2. 线程 @@ -46,7 +46,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 -

+

## 3. 区别 @@ -68,7 +68,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H # 进程状态的切换 -

+

- 就绪状态(ready):等待被调度 - 运行状态(running) @@ -116,7 +116,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H - 因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。 - 而如果时间片过长,那么实时性就不能得到保证。 -

+

**2.2 优先级调度** @@ -134,7 +134,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H 可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。 -

+

## 3. 实时系统 @@ -308,7 +308,7 @@ end; ## 1. 哲学家进餐问题 -

+

五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。 @@ -553,7 +553,7 @@ int pipe(int fd[2]); - 只支持半双工通信(单向交替传输); - 只能在父子进程或者兄弟进程中使用。 -

+

## 2. FIFO @@ -567,7 +567,7 @@ int mkfifoat(int fd, const char *path, mode_t mode); FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户进程和服务器进程之间传递数据。 -

+

## 3. 消息队列 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" index dfce4295aa..061f39a083 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" @@ -29,7 +29,7 @@ gcc -o hello hello.c 这个过程大致如下: -

+

- 预处理阶段:处理以 # 开头的预处理命令; - 编译阶段:翻译成汇编文件; @@ -43,7 +43,7 @@ gcc -o hello hello.c - 符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用与一个符号定义关联起来。 - 重定位:链接器通过把每个符号定义与一个内存位置关联起来,然后修改所有对这些符号的引用,使得它们指向这个内存位置。 -

+

# 目标文件 @@ -63,7 +63,7 @@ gcc -o hello hello.c - 在给定的文件系统中一个库只有一个文件,所有引用该库的可执行目标文件都共享这个文件,它不会被复制到引用它的可执行文件中; - 在内存中,一个共享库的 .text 节(已编译程序的机器代码)的一个副本可以被不同的正在运行的进程共享。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" index f2f3411778..d81ae2ec7c 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" @@ -23,13 +23,13 @@ # UDP 首部格式 -

+

首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。 # TCP 首部格式 -

+

- **序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。 @@ -47,7 +47,7 @@ # TCP 的三次握手 -

+

假设 A 为客户端,B 为服务器端。 @@ -69,7 +69,7 @@ # TCP 的四次挥手 -

+

以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。 @@ -117,7 +117,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。 -

+

# TCP 流量控制 @@ -129,7 +129,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。 -

+

TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。 @@ -140,7 +140,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 - 接收方有足够大的接收缓存,因此不会发生流量控制; - 虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。 -

+

## 1. 慢开始与拥塞避免 @@ -160,7 +160,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" index 5a8d348683..2d9d4c6e05 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" @@ -22,7 +22,7 @@ DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转 域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。 -

+

DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在两种情况下会使用 TCP 进行传输: @@ -40,11 +40,11 @@ FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件: - 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为 20,客户端的端口号随机,但是必须大于 1024,因为 0\~1023 是熟知端口号。 -

+

- 被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机。 -

+

主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙。被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙。但是被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号。 @@ -61,7 +61,7 @@ DHCP 工作过程如下: 3. 如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送 Request 报文给该 DHCP 服务器。 4. DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息。 -

+

# 远程登录协议 @@ -75,13 +75,13 @@ TELNET 可以适应许多计算机和操作系统的差异,例如不同操作 邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。 -

+

## 1. SMTP SMTP 只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。MIME 并没有改动或者取代 SMTP,而是增加邮件主体的结构,定义了非 ASCII 码的编码规则。 -

+

## 2. POP3 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" index bdfe4f4ad3..d6e2e19e33 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" @@ -22,27 +22,27 @@ 网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。 -

+

# ISP 互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。 -

+

目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。 -

+

# 主机之间的通信方式 - 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。 -

+

- 对等(P2P):不区分客户和服务器。 -

+

# 电路交换与分组交换 @@ -60,7 +60,7 @@ 总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延 -

+

## 1. 排队时延 @@ -76,7 +76,7 @@ -

+

其中 l 表示数据帧的长度,v 表示传输速率。 @@ -87,13 +87,13 @@ -

+

其中 l 表示信道长度,v 表示电磁波在信道上的传播速度。 # 计算机网络体系结构 -

+

## 1. 五层协议 @@ -123,7 +123,7 @@ TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。 -

+

## 4. 数据在各层之间的传递过程 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" index a748b50bc6..3d98ca9406 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" @@ -16,7 +16,7 @@ 模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" index 69d106d5be..563ea8c3bf 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" @@ -26,7 +26,7 @@ 使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。 -

+

与 IP 协议配套使用的还有三个协议: @@ -36,7 +36,7 @@ # IP 数据报格式 -

+

- **版本** : 有 4(IPv4)和 6(IPv6)两个值; @@ -56,7 +56,7 @@ - **片偏移** : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。 -

+

# IP 地址编址方式 @@ -72,7 +72,7 @@ IP 地址的编址方式经历了三个历史阶段: IP 地址 ::= {< 网络号 >, < 主机号 >} -

+

## 2. 子网划分 @@ -102,27 +102,27 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为 网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。 -

+

ARP 实现由 IP 地址得到 MAC 地址。 -

+

每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。 如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。 -

+

# 网际控制报文协议 ICMP ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。 -

+

ICMP 报文分为差错报告报文和询问报文。 -

+

## 1. Ping @@ -155,7 +155,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。 -

+

# 网络地址转换 NAT @@ -163,7 +163,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。 -

+

# 路由器的结构 @@ -171,7 +171,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。 -

+

# 路由器分组转发流程 @@ -182,7 +182,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 - 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器; - 报告转发分组出错。 -

+

# 路由选择协议 @@ -239,7 +239,7 @@ BGP 只能寻找一条比较好的路由,而不是最佳路由。 每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" index 7d7d88ae37..c08ef7970e 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" @@ -28,7 +28,7 @@ 将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。 -

+

## 2. 透明传输 @@ -36,7 +36,7 @@ 帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。 -

+

## 3. 差错检测 @@ -64,13 +64,13 @@ 频分复用的所有主机在相同的时间占用不同的频率带宽资源。 -

+

## 2. 时分复用 时分复用的所有主机在不同的时间占用相同的频率带宽资源。 -

+

使用频分复用和时分复用进行通信,在通信的过程中主机会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。 @@ -78,7 +78,7 @@ 是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。 -

+

## 4. 波分复用 @@ -90,7 +90,7 @@ -

+

为了讨论方便,取 m=8,设码片 为 00011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100。 @@ -100,9 +100,9 @@ -

+

-

+

其中 的反码。 @@ -110,7 +110,7 @@ 码分复用需要发送的数据量为原先的 m 倍。 -

+

# CSMA/CD 协议 @@ -125,13 +125,13 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。 当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。 -

+

# PPP 协议 互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。 -

+

PPP 的帧格式: @@ -140,7 +140,7 @@ PPP 的帧格式: - FCS 字段是使用 CRC 的检验序列 - 信息部分的长度不超过 1500 -

+

# MAC 地址 @@ -156,7 +156,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 可以按照网络拓扑结构对局域网进行分类: -

+

# 以太网 @@ -172,7 +172,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 - **数据** :长度在 46-1500 之间,如果太小则需要填充; - **FCS** :帧检验序列,使用的是 CRC 检验方法; -

+

# 交换机 @@ -182,7 +182,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。 -

+

# 虚拟局域网 @@ -192,7 +192,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。 -

+

diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" index 136b0f0eaf..2d60600ca5 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" @@ -10,7 +10,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" index 94b8c65dc9..333a21be46 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" @@ -11,17 +11,17 @@ - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" index 3e4c0d5d82..7bc210881f 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" @@ -12,7 +12,7 @@ - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" index 215681a8ff..9ff95ceb6e 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" @@ -13,7 +13,7 @@ - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" index b07d1efe57..f1bb2ad195 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" index 7ad1d0134a..08b7db2088 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" @@ -16,13 +16,13 @@ - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" index 190b555045..d88cac721c 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" @@ -10,7 +10,7 @@ - Caretaker:负责保存好备忘录 - Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" index d89db0da65..fda230b709 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" index 152e975a2f..3b33d97d4b 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" @@ -10,7 +10,7 @@ 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" index 7e113588e3..e6b0af9d73 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" @@ -14,7 +14,7 @@ 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" index dc49b3fd00..268f8cf715 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" @@ -11,7 +11,7 @@ - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" index ba13406bdf..f2604abdee 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" @@ -8,13 +8,13 @@ ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" index dd3c7e795a..8ae809372d 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" @@ -6,13 +6,13 @@ ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" index bee164a38d..c757678279 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" index 2416e9ce72..0b34c2adc8 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" @@ -10,7 +10,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" index f3ec662754..8f5b492d43 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" @@ -11,7 +11,7 @@ - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" index e03ad311ae..7192b7384b 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" @@ -10,7 +10,7 @@ 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" index f87de5a15f..18b4b3de39 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" @@ -10,7 +10,7 @@ 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" index 039a359083..1e15a921d7 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" @@ -8,7 +8,7 @@ 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -16,7 +16,7 @@ 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" index 1b505d74ea..06d4513270 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" @@ -6,7 +6,7 @@ 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -14,13 +14,13 @@ 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" index 3a34d05508..98f7974ebb 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" @@ -9,7 +9,7 @@ - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" index 810fde860d..17b9af2bd4 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" @@ -10,7 +10,7 @@ - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" index 10b13515cc..8b1ac10ea9 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" @@ -8,7 +8,7 @@ - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" index c4beb94d9a..0596ace9b3 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" @@ -10,7 +10,7 @@ - Iterator 主要定义了 hasNext() 和 next() 方法; - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -
image-20191130164425351

+
image-20191130164425351

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" index 102ff5f02e..dd1ebf2d32 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" @@ -4,11 +4,11 @@ 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" index 2d69e88f24..88f65599e4 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" @@ -52,7 +52,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation @@ -253,7 +253,7 @@ secondName 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation @@ -336,7 +336,7 @@ public class Client { 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation @@ -400,7 +400,7 @@ public class ConcreteFactory2 extends Factory { 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation @@ -490,7 +490,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -580,7 +580,7 @@ abcdefghijklmnopqrstuvwxyz ### Class Diagram -

+

### Implementation @@ -641,7 +641,7 @@ abc - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation @@ -779,13 +779,13 @@ request2 is handle by ConcreteHandler2 - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { @@ -900,7 +900,7 @@ public class Client { - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation @@ -1025,7 +1025,7 @@ false - Iterator 主要定义了 hasNext() 和 next() 方法。 - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -

+

### Implementation @@ -1114,17 +1114,17 @@ public class Client { - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { @@ -1284,7 +1284,7 @@ doSprinkler() - Caretaker:负责保存好备忘录 - Menento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation @@ -1457,7 +1457,7 @@ public class Client { 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -1465,13 +1465,13 @@ public class Client { 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { @@ -1592,13 +1592,13 @@ StatisticsDisplay.update: 1.0 1.0 1.0 ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { @@ -1899,7 +1899,7 @@ No gumball dispensed - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 @@ -1986,13 +1986,13 @@ quack! ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { @@ -2089,7 +2089,7 @@ Tea.addCondiments - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation @@ -2294,7 +2294,7 @@ Number of items: 6 ### Class Diagram -

+

### Implementation @@ -2346,11 +2346,11 @@ public class Client { 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation @@ -2422,7 +2422,7 @@ public class Client { - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation @@ -2580,7 +2580,7 @@ public class Client { 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation @@ -2712,7 +2712,7 @@ Composite:root 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -2720,7 +2720,7 @@ Composite:root 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { @@ -2818,7 +2818,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -2877,7 +2877,7 @@ public class Client { - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation @@ -2966,7 +2966,7 @@ Java 利用缓存来加速大量小对象的访问时间。 - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/docs/notes/\351\233\206\347\276\244.md" "b/docs/notes/\351\233\206\347\276\244.md" index e92c828c05..f10aee7fc3 100644 --- "a/docs/notes/\351\233\206\347\276\244.md" +++ "b/docs/notes/\351\233\206\347\276\244.md" @@ -33,12 +33,12 @@ 下图中,一共有 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,13 +54,13 @@ 例如下图中,(1, 3, 5) 请求会被发送到服务器 1,但是 (1, 3) 很快就断开连接,此时只有 (5) 请求连接服务器 1;(2, 4, 6) 请求被发送到服务器 2,只有 (2) 的连接断开,此时 (6, 4) 请求连接服务器 2。该系统继续运行时,服务器 2 会承担过大的负载。 -

+

最少连接算法就是将请求发送给当前最少连接数的服务器上。 例如下图中,服务器 1 当前连接数最小,那么新到来的请求 6 就会被发送到服务器 1 上。 -

+

### 4. 加权最少连接(Weighted Least Connection) @@ -72,7 +72,7 @@ 和轮询算法类似,该算法比较适合服务器性能差不多的场景。 -

+

### 6. 源地址哈希法 (IP Hash) @@ -80,7 +80,7 @@ 可以保证同一 IP 的客户端的请求会转发到同一台服务器上,用来实现会话粘滞(Sticky Session) -

+

## 转发实现 @@ -95,7 +95,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 该负载均衡转发的缺点比较明显,实际场景中很少使用它。 -

+

### 2. DNS 域名解析 @@ -111,7 +111,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 大型网站基本使用了 DNS 做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。也就是说,域名解析的结果为内部的负载均衡服务器 IP 地址。 -

+

### 3. 反向代理服务器 @@ -168,7 +168,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 当服务器宕机时,将丢失该服务器上的所有 Session。 -

+

## Session Replication @@ -179,7 +179,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 占用过多内存; - 同步过程占用网络带宽以及服务器处理器时间。 -

+

## Session Server @@ -193,7 +193,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 需要去实现存取 Session 的代码。 -

+

参考: diff --git "a/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" "b/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" index fff09bca4c..f731445141 100644 --- "a/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" +++ "b/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" @@ -141,7 +141,7 @@ Percussion is playing... 用来描述继承关系,在 Java 中使用 extends 关键字。 -

+

```text @startuml @@ -162,7 +162,7 @@ Vihical <|-- Trunck 用来实现一个接口,在 Java 中使用 implements 关键字。 -

+

```text @startuml @@ -183,7 +183,7 @@ MoveBehavior <|.. Run 表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。 -

+

```text @startuml @@ -206,7 +206,7 @@ Computer o-- Screen 和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。 -

+

```text @startuml @@ -227,7 +227,7 @@ Company *-- DepartmentB 表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。 -

+

```text @startuml @@ -250,7 +250,7 @@ School "1" - "n" Student - A 类是 B 类方法当中的一个参数; - A 类向 B 类发送消息,从而影响 B 类发生变化。 -

+

```text @startuml From 26c914a66239934fbe4979f5c879b68aefb37827 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 6 Dec 2019 00:33:05 +0800 Subject: [PATCH 028/214] auto commit --- README.md | 2 +- assets/LogoMakr_0zpEzN (1).png | Bin 34067 -> 0 bytes ...\344\272\214\347\273\264\347\240\201-1.png" | Bin 66522 -> 0 bytes ...67\344\272\214\347\273\264\347\240\201.png" | Bin 96859 -> 0 bytes .../\345\260\217\344\270\223\346\240\217.jpg" | Bin 643205 -> 0 bytes 5 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 assets/LogoMakr_0zpEzN (1).png delete mode 100644 "assets/\345\205\254\344\274\227\345\217\267\344\272\214\347\273\264\347\240\201-1.png" delete mode 100644 "assets/\345\205\254\344\274\227\345\217\267\344\272\214\347\273\264\347\240\201.png" delete mode 100644 "assets/\345\260\217\344\270\223\346\240\217.jpg" diff --git a/README.md b/README.md index df299e02d0..ff479eb199 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@
- +
diff --git a/assets/LogoMakr_0zpEzN (1).png b/assets/LogoMakr_0zpEzN (1).png deleted file mode 100644 index b1d1b238d11e256796df50498400a28c50a372de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34067 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 IC5?mrA1|K>=>Px# diff --git "a/assets/\345\205\254\344\274\227\345\217\267\344\272\214\347\273\264\347\240\201-1.png" "b/assets/\345\205\254\344\274\227\345\217\267\344\272\214\347\273\264\347\240\201-1.png" deleted file mode 100644 index fec66b80ca2bced7c6c9a3c4887f776b781b7956..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66522 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

gQKOOO;bS>pk<5`)$j24I-jpN-LL-W7{q)8 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

DtJKt8ysv}&Z(u6&-*rG2yi#^KN^+BC`dcX2 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

8rV){3i^GJSo0A++Knzyc22QPL23NZ0|gxj~7} zh}LH#gmg@>a;4FDcf;K4gvEKd(yhtNj2I0}Hj}eCzNg{0Tl{ogp}m&}BWW1Y>I7Y> zRK2dwl4H|%@?S=cOC1OU7YS@rGhngFiqbp#lts4SS*i|(--1zY6Yxz;TN{26MA&q? z@9Bb?>T~%&M;FqE4I_-tO67Y#{kW>I`M%GU2;Xa_w%i{dw(PO2-kU6n(^%(kF?pGl z7QYhNyYl5;8q)XBSBMT7)A2x@mX_B2dt%PYkaJBfNa9>I=)mM7C_~+Mcd{JYAAZ{f z(pGZE+InZ@Ys0pmf=taj|Bgl|vL*)Jn1l19abXFJKwe;?UEbN>9-5X4hDEV?iprW3 zmL+6ZLh}a!)a;W^q4O=;*RM}RiZ2GhZ$-d|*;tRjsM~JC5sQm-?h=dT2dQ0Mn(tSd zUEzJ&jJ&4?*$KCXaxE4wP!8#of<`DzH-?fr5@PjqcNZEpR6$e4 zSgWeMyjd?DMq_=Js} zy~wBm3zmT8sc*Q4a!NIiVbcHjY7K@9en|0E<%_rw2&h)Jp)n)~-X&o|`jup-)(|oU zSy-kJthWU1;HtWt#&2#q?k!js88=;~8-(xU7@d|DiHL0Qj>_Fv~Vs~Iu4{l9rW@)O8SvRq9QkBCkz(}gDgQx$)#6*0h<-pD+K5@1bKpK zMPSzKX>Q1128PE|R=m>cuh+G;ReOsvUnHq%0l+@6LCtr3)2iWlyw%zZrA0Q` z$lsGBMEb_G!S)BOKP5;{-`TQPtUgstHa0f$P~O4F0;`MI=O>zHww}LQAtAtmZay>U z;2A{R%iyxI|1|oT85agSbYKSyIETFgp$Iw!$j&tf-36O|$@i^3v9rnm{bX6mz75Go zW;SYQJmOw|M6Mh&=JdRN$_ZDw_s$#K(UM8{H8b(?=buTDDUeIOGZngpbg*i$3QTSJ zzs!YKfS%kYbuL{!-V7<6FfcIO#{&&uHT)yn%OnccM(6@YdbD7I%UW4k)h~Llxer0w z7x*8%y$3v&eg8k)6xk~yn?ezlQHX3Rq>@oqc1e_#nQSsEq7WISVMdwRmCCAYLS;qC z-p~8cb=|M~f8W3H{GR9cJm>3r-S>65a$e_o9LM+j{e0f*1KX4EJ!xI)@?P(gE6>0% zKpfsh>A03i!kK z!$P;;&gJWJ!Tt2qR0g=>$Pq*Vw_2s&!G|!<5p^`Wxrl+fh~)C})%1d3IKlcOR_C<( zy$pl^nQt0&E}nS1Tg0rh;3=x@;z!<{CZdEp36E+eHp9K1Zo=SU#9jP-QUuUzfnKPM z+n?bu)F_|-{CW4(;`0+HPv%^mhgZL~j}|PLAzD85*mz&+^q*KZ$}x0#AW`?-d|i93h+GK|J!I^aePgWjp9>>SHGH&h+(zfwR^VAL*mB=NKBF_HqCza%<_+MT^l`W z2Pppd8R?DixT(M!0SOw~2D`Viw}3)HnuBYI;&T$ME(aQN+l^g%v(6D8xJtW~PDUM(ZaQIj(~DwU!JmjfG)*bYfs7@x7Gr zQDN34?4Y0>^<)xauwBV?{Gju(rVQjdXR z6MJ(?M;YoduZ0%Q0a$*jmae?uvARAmLGjZE$u!Gm$0W0C`&_fjvQL z=+KZ9O0pC*572qV%WMX*(I0ch zu7Y06!>62rjy5XYw-O$6eVp#r`yzm(!CwRR{9Mk`+bn;iF1-70+-=5$dojBRQ!-7c zARy$%=g;rLx#?xwk6`OB@(f2Cf6qOlD{P4

PS>&Lx=o#(kKa^v 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 u{{Q!k#0FtKg&alUReVrbzhae&%s3@Rf zVT&RbHgFes&iT$4_qq3ZZv1ry)>`w%Z|0p@GqdKM8Cbrv{1}k8J!W$Z5CDUgfEEBO zzXN0~0wVnafdBvug3EJj#~jW_LLy_&M@DVa*VX|JSlZYN3$F-)OxPf|Bx_QMan4zN#f}v_2dcowpSKxhlIvTXgr)Rhh}EYzn-~gO|W6B^4DD z5&=0C2Z@St^CIZSOR<*6{Jx=_trGqO;2<`=M|0?5}zm@S+6eJ`v zA{LadU(vLRf<*jjHeeOz7xNe46dY^+7hx3>Vf8N}0`f1y&Mz$XFUiSZNc>;K(eSV% ze-U8K{VQop|Ipw+ivGJ^0H@=YR-iRPD<(MwY}*zP8RvI6^6?6}8jiXTg&IDs}|r0_!qr(HPuh6w8ZKi zya}wLcCNHdu%-XeEx-o5s=KhtwFdSD1%Z+<@GiQ_5%`0XpPum-M-P+;0B6AapE?Gs zoRyaU2WK_SZy*f-QQ#=^KZDS#74iQRE&o4}t=7d#(kp|Mz$yg}R$%yT+wZ#5S>*_U z>%btML@j*6?gn^s7nqu}k2JXUCd&%ZA~ z90&sVc-fK5f`>H2CfuV)GsnFA|UoZ zdb&SE7nH4mli>!0j@SC{e&wu%gkjQLyTD*R60^7vnZl{!8d8L?8=5|GF!@Z%jD`1dhR zG7KCH|BEZ_w>o(K7hei|#pnN1eYHpJTFD5I1}{PL_p9;W{dDbWe5DBsuj;L608$y? zZKZQ0{=Njx13+0H$VUPj0DMX~{${w8K{AA|@&>A|$O33KfKex3AF^v2gTN+!2k@6J5*BueVfH zQ*yfKr@uc2d(%oxo#Xs|=7WE%!McJ5oW_w9mw==Fg%HE_DbQH zB0>}Q((PxTi<<{0o-eot#S?iYEte->d@(xi7MwszD{UQ`dihlW5EKNh6<)PTOjN{R z)r9T3YlJ}yqIW2Y=waAvS1h>bbo0Hwn%_(emSg3ty~rdw{giYMu&!Inczh(Ml_Gf()w_@3iCCIzcX>)%Zf3F6y~fvbUt1s6er6Ki6;rrT@l%uW{>;J0QYy2k z?bGRJAikRNz?ccC3ag3Ny-9D`0WSYRp(>hz|JJb@*kUz#X5Uz zDB^(GsBvsj%Qsrm)p#dvYp1JmoL+Nm)YS)j-`;h3#@>;+>8rpn@N*e>r9Hi`2+~t* z4XX^hW2C>MOz!rHv(uYDF9WS_y^e19zR~cr}+l*3sVgnO{&-sdaOsuZ_QF@7y2;O?hoLbht`%KIk-S@v{Fi zVEU`$PWi(9tV$Ew+?68#fbmJ}B>{o+7+!mjT=|P`zW9grn*-FSmQZ{D!BFUH+hg>a{)znVENfGijZR57$jiOx^w=A%r$O!_=d1OWmylF0m&~v-LL<6 z@{EW^TZ<)22)zSmKt_kc65?c_XeRZj%v}DUN09{G0C?PY7;3o^tZLcfSGij&@=Eh=7nIIkx4Cv{ zy>H-|Co^+RytY&C?z&DQRK{vQ$7|(ea^A5fmH~I{q~b{n-}{E0q20$6e%6Gl{QPM? zBVTjrb?U-F-Q47_eiZ+PGr(Td$G-d1v*iy*P?^g>-|dgk^^QY8LvGWJ8G{E*qvp{= z%8akAONC1chf<32Wj7w4^-Ju1QGZD?Rqwez(fx<0_0O1cZyBw-2Q1_2ugj1=RSnW`ApOd&^XM9JLI-@Yp}|`4gHP=3XYF;bCpnp zji}M{2(Q=Q*FKq^*zEd?=GiF0ykW)qbbaw&&Rp*Tbs0F`JK@@3qPzhiX3*K~l{OjC zyZw>PyzkHBUpCGfz1n*Nkl!zaZjY=oMNHD55vGwR8Cbs6 z#DR>c&ni9%dOmaLE-j>d?B)#tVOb-CnbCxC*BFzpZo^d*LB}Q!SP{adcm53jx(x8k zG>)7+?7$Xkt~yYE)$5poo=TCQbk76;VDh$z_$!(pl=`9muDsOgqHMr2FxVTb6c<_Y z`F>6@`_;|4Q2&WGN~pjxP|^5xkL@AX1Cg}iJ=;kF#(U7A+I#(8&BXasW!o+Tjs9Mf z>}no$S~}#{*LUEk;u-w1`u>Tsfw4%N%$h5R>p6#bzP7yn~-|p8NU?Q5}J+M@FiDG%em~OaD%fWy@byWwOLs1;@O1nyLJd z^gzTGOx-SjbF)w&G_q z*=1l~j&VJOAv?}`H*9ljr(KYT8VBrjxBvVGnFOS^O}9m;=^cA=M_VR0zHdHavG-_# zvg)1!x~t=@xpSdOzPbUqMQ=7NwnQe(Yj4~!*_kXiXhYMy90r8fUi&z3=!o65(AJTq zwLX@^v+f(vS#+YCN`{vdYr)<0oxAZP&j$ygh;8V&miLFvCyI+}mu@`*>(%Q{sAr$h zV-Ea#`H02qj}J)e2ciZ%6qCRG@L$^V2$EAUR*b)&{D8$7@z8Ic`(cSn_;jzPCU!P7 z`&D4;r=twjC+<6!iXj&sYHswWGoO#Vh^8l%ivP-cy|ADel^t7x92+yJJ7(H<_jvL$ zAmO$cGPHE>^HhAJS>4K46f*Tz5us9CdWpAavJAZ8zVnOJWidCwZ{F66F9_q07s-U zamavKb2l^-P@X^?m_#mAZVwIsPFkudK%Kj>PP|8Wu(tcaJzvQf0II<24j9$?P5*wbdK}ySwVG;W zwM|b)*J#@=dtZNWjR{<0)dW@;COQX9^mVuC9x%}}GSORETmgjg1b*kgybJ(&f`8^C z@HtQDU-1=1Fo+5W{b4Iu_J5T}K;vKK5zzj7c?1RiO2bg_ue3p5X*K+N8UFE|{_&mu z@tywho&NEi{_&mu@tywho&NEi{_&mu@tywv@|~8SEHB$wS@}3PojPV?cN7qi0L0Nz z7Dp_P3WD2yQ8AF1mBR;izJA-p#sP^{PXu%UeEnmiEF2u{R;KeSy1(c3f4_g3{H=Ry z@BfznUH8A@k^zCS{vh`kc*XdGMu1taxNLh8AWOB zZSsaw+RGI_FOxoCM$g`;csDQ;dXw02JE-n!xSZ5xU=rfkA) zj^5&{?6mcWis3fR?aDh8R7F*Ps=Zf#p>cobtzB0&`*(NlY1XRUTcKUNFJC7^m!n73 z$L&WLBp5~;g&znp4m9yUcTPoHqJ z^RV|kdG?f_L$G7G6T}(rLO9KG&2TGmZ}jLnGweCxHRC;hcIlj~uZo|p|B(Rq!0;ek zaK`!CkV_ZthQ1FMi%^L)igJt&jUmPsKzict#eYjwO45OzfCa%Zh-_p#Y6ATcD~sEM zwoX$tT}Y_iuW+&Ds?3PTFdCj*yHP;Z;Fm@ytVtb$%M_M+f=}v z$h%4Ru+!B0><4KNvmWI>&Y#JD!hgzmhJGIX;@r!VuZ&--&PvYCzZrkqFqix;a{kuk7=hx<6Hx>~~s!Nxa{Z>4F@NC7XK%n3{ z!6~6^;qxMfqGF==#TvzF5&@ECQtPE&fo*^;>m#QxFE0N;p=J$6(QU1cl9bZRb-nBP z8)7!vZQ8Y2c=ODbKIPo4D3x>DEVird5ZUokby%%hovjhS(|gwuO|9KZyO;OOYEAC# z)h^k`(23Xe(X-Vz+^=e&U?^bt!RYCMN#m;~?FY*arJK^sQ0B3RLoCi&x?4FNu|H~a z?D+8`)}}TGZ1qp**zL35cT(q+o`a#|K_?4mYZu4U?yjD0KJEb?7tX|ZLcMU_%(Lk} z#pfD*FZ$i^e;n{S@MF-g^Wq_EFKiFp7iJcIGQuY^Itmw^7E={_5pq55LHu08Qj#2W z2h0F&i#UgjM={Z*n2Xr^xNihSq9)0l>`IBCl4$w#ZpK~am*ll@sa>_*BRwzs1TSvwHyLof6g`N)oHkT>rFVGz>Wh&dqjF=a*Ntx2 z-Si!gzeT&9KhZilHud7p(!KT5I`?fK1Uy7ON`G8FQ}?9pY45W^a53`6%iFJ}UQf@y ze=9P#>7Dkx#e0_zK_3%7kw0fFRDS9DI{fYC_uD^i{2cgIxky>^S=L#7|E|D@K!~84 z;G9sWFkR%VsJ@tl*o=6)1Y0s#>VUMQ^nICHS*)C^{BHRrh3jhy6cg7vDrv40TsOVG zc>`->$fhHkw{8Bl<*st;R;~(Uo6~mP9SS=>sE(^Osq-|F!1r&Vsj*vX_q#newOaOO zYNPiB>zvdz)Kk%y(Eqgmk->;zi&4P=rZL>)!aS}6=i@vj`74s;_&!%LLG64^pO0ODo@)@Kf>@~!dSfITJ{yrlaycF^*p^a zdwxhdA)_F(Cu=(Ud+xft{rQdsk%f$+isGS?r)5C7a)oiFYgJ4&v!+rYXZa&Ud5k(WZ0nH$Axe@bRNBGty6XJT-cD;`!MZQ7 zK7T7aXY|fzp7g%v!^Fp*pLZQfrUJLABy zKuPn(?$$jNEw8=%v<0;%_f_hkbx-T<(HGReyT8tWZ0KubazOFGobeTt!h^^|XH1RE z)|!1Zzj?UMBH1zu91--7DjofH?EdjS>tY+4ZS)BbI}3ZwlZq!7PrY`y?Re3t#yQJ{ zb{ggy>gMf!%ERi6k>_47Rqst_*Z4@C6F#@(``vHB|5L#G!1Z0gnYj6HS}jV z5Fs2X86_XRE@o@224r8HalBQ6eWFKFAT%0=gwqij$Wl}@dH{11`xrNmUn0tqRLJ`% zhpA4q0D1z0%FJffCl9jkapqG+xSPRtVZ--Lhi0T?)?^K5KhG7+Q^_|gI9rG+$}hfD z@~TX>e1C;kC9bNfda_oqPP^W_fzjC0^r1zg)vGO~{aUA3msK~qr?(HdXwi=!xH2en z*<~o}%8RRdBhYJuV+z-OZq(ddzU6qkXyV(H-JSfqU#3so&w23vk;UWWnFmj`pEbTP zdD-{+=`gYm-DF0=&dQj!na0WIjg5q$+6Vs;VJgE8LdiNA|i|HVN(qVt~|M$A)} zhbE9~DcRMoNCz^MQ;94ku@Z7nTZp$jyHUMFXVcHw$v$Es0k@Ad}XX=oXbiAoIT8a*A62ksupNv z)5=qq6N7Jl@7a|&J=|DSpM>i_MDv6?b;6>r!7Q4K+#2AH^R|%?~``3hHq^fJIF%N%Z_dqMk{fS zyaj6?DSca$Y>N2N8AS3%iWIhZ7n}$$4zTPGSWKhQCZ$4F7>=6VT3;_&kE8kukxOP_Ia$93>0A z5+^kBoUTve7gB0kUGQhvE;-G(_pDIDQ(QIUa#$^nOF!pShwG)e7}nt#G#kZb@&UTY z3mJTD0dw>^?q*J3a~RGx(=F>W_8tEuJ{o(8+Yw5__NPQSKE^Jyiwuw9?y_Ci29ul^ zBhTz`=$Z%D)?;VOKQ`XP#umdesaUmqI8F~Ml>PVu2fH?-*U<#)&9^gHz*+LQtnDVU znW9g+vDZ6~T&=(!YPN1bVn%95GJG+liaXeYn8=bdA(t_P0)K}#%)MNwK^Jx~=bVx- z;Um*W<;g>23d3)&XKer3s^yFpw%rcO}Tf@w7vDUI2#bg||PEPMO9Z({ZIb z69i=V%s^tzB$)+G;q{p?ZnAfmC(&J4@|-}LIwJ}uPu)Xb<8MznPhGI>CNEPD?)yMN zP%C9M8Mc&^+mD%+xt2YV^!Ci&(k7Z0zdCu0x}PVQG)Os-GU#Vb=CSYE3XzSIVf!-3 z-N_$iOX%*Dm$&>Go)z<5Z)nd;!b&WuX$5{PEF~%DW?~UJIkV6=jP#oS%_f?}N!zf` zo4g?{Qcjjer)rPO)0QidSjra5e{m706>R^{j(H;u2#fDKp4yzYWSVv-2d7aZE&XyspYrvyt z7xrx+spQ^~tE75T`PaYGo{b^eUrYEs(sn?FXS~HmGM}TadV|ePwl?0N^87#v)zKKJKj<-O@1+gp@)%f5AKMUB>w81@;OWN>$qpV zo~TgQqkW5*np-X}OUa;450_@y!_G7vPp^W7=3GhBhw&+Lso!BAVm_t_!(+X)+2;`J zk9a5BAf9PfB)6ed#qv{bVy1`S8Q@W$h9SNRVS9EQcMyMyG?dbWyBOWhevJ$B+>{)I zv$evrf^m_WcC2Ci1#uq^nSdRvPN%Z>)=Tg{vqUo=rj{`@i0+&k+Qlen@;7S6nGGy5 zrPFehnM$$Ilwi(MO(jIxfy7Oh-1(=nJZfp&C+WK~&Zac+-0PU^kR1e zV>vCz;xa>tw{=$s!-scLQihdDyw<;-H`G9?KAM_PP2+2FJj%tf3(0ZCQsMc`k$k4x zQ$}b`hsAk1HXFUGfIgh@Su&dWjwE+cgXh#;UKN!p*m^(hEcKQ1#<*QKonK zs9QLFsie_jJ6)>i&8}3sU1pTzMW#RLSf2||_{wbMKuS%&E3cQ$>I%Y?u&P^C!|+VW zhE_K*dPD8#;it6rio3h;wE4_HDFMc3Qgm+`clvfzrCthbbQjN*?S6Rxqs@xFcqD8S zW3*e!wT>RwT6s8~hOMmLv1!dIg^jGU1<`q?3~y#vwhFBp%FhU) zh6Sxn`$dU!_`!WczGCtq6-(xBUr2pR-6+gVeTiG!6kbr5em#GC?pfXoMtGKUYH-qp zbUx=$plaH_WRAlz?snD@llYV-X4m#lslu$sB70M2ap=aJ{Q9D>JnbB0UI{%ilahTR z5y8KcaW>!#?_AoeQ*EhUytO8JoOy1{4xyBNsU0GXDeG|e8b!h0_IgDr<|D@&})gvRr% zs!l^gaKmNxP;As}Q4Vy%n~?7S^R#i!A;3lTZ)bJGM>ipI)*)U10RIXaC_PYn0>6!m ztayo2#z~cY!=8`YQW%9<_G->Mj+wH~%ud0)&_9(qjy=2ym-P$>o)_SMLjxu1HMGGH_#UH51$ZZ8M%305cxn5-Y@o!mmWGTJ*jF;r~n+h_!D0HAB?G+kX>{_jn zb~nYNY>BIeep9@Qb34Kyzcl%o=gu4|EAn_k<}@=*uQ5ZE>AvY^Mk$jd5X^gp{!~;` zbvnO|!!0|KV~*A+f@bQ6qw{|7^UiRyM|kna*JW5GfOwu;ZW*@XR0*AXt@u{;ytcqH5R8Hqo#i;+N`?>lvg~=6~Gmoi@(F z2yILC!YUUORWuFDCy$hr_J2o46+G(x5c(q5yF<%kf0lL&=9pA^Os$vha#}?G*k=1Q z0w-R`J5>;SEM1_}9!etbZ!v~CCdk!CKu-n6R*OMXovq5(z~m2W7Z1Q{_M{h1z(FUa z#2;Y_0Nf5Vz_)JyhD#%jG>u{@@%*|im|Fo)D(_;VoyyCEF{jNdiY{Yf_E;C(z&uz} zT{MdW*Jyd*Og=5WZHoSoxX^fsCK)$SyOu%^P^oxCCOe6h%9Ezd4;0=aq4#XgA12*U zlqp1#!Ieaw8Hn24dW&a7Jkszer5v(UW68$*L&}#}1CG>^eN4RBT)`}3bkCZ+E6fv$ z&;m_59z;RV0I##B0!%8#UJIvN%Sa8H}{6>Ltuutz!fY3hjL z^SosS_{ST(JP>uR#l5VJ5LS;Znt-TRz0Z&It1GL@$#M8nG?4D05r!(%^G`Ick+&}AwmCmg1V4i-t9rGn=#`}Q2kL1kO4 zP0KyRcnhMQq5Tg3vGB^t_P2gYrIeN@4l#u}4bRN1@(x#Q+#{KN zH+vI^as*NCyhQXNs`q7o=q>1-J{&aY!pn|tQ1dg<%@3dvHtzMuq4$gqSCe1?s%I<9 zU~i?gs@o9Y`Jfa7G(a`H^cHs#I@&9V)ws~!o{0%Qv%M)FBVqlkP6NGQ__Znmvq|+t z1q8#9YOIpN+JY!18lZd_Xs63SPjGsmdsm zVp>T*C4DkY&iVj6rxyqcA2*zUjTWGZK^?J5(>9~*uuWft#LyHNCu zpDUYQe2DT0L=B?>^3UEky%tF>9mX9ZAr?(HTlTuYtnFzGwKl0#sns=nS-P)SMeR%x zk)JACQ*@a!2cjOM0r-)d)37VyLnEHhrL&WRI?$|BLA}w?5_5-+W6)39N-g>@*G+j% z!!VwRRAV~A1pwHRAgb-gZd`7J+HgPC+y@wFzyzNP>XF9?n47l!K)=yeYnvk>n(MYO7|Ggh4epGL%}sTt z46>Mh4GI4c065AZO8Z(<*5L@%%jeSF&W`sv^A=87cjR-m&BL0bQx&!A>$Ow8wj8T@ z$Wah`R;@>H1yMdA%5>y&k#5A1L4Mwlk6a4sx5>r5XA#gW+VQU?;?CI{VEgl(doHc^y1V&`-Xyk^M%HH`4{(j)yC!wE9+I= zOX(J0s5B+Yf~bBFrFC_wF)kwf618@Nk6Vv-<>gaf+EU7I9NyjNQfj=9Tk|$gOBq&m zAZ1>{p@KsMcceHkz&c#KI@mE15pd~ni>yyXk7&ashb?UewYLsCHGHgu?CYw*lPlLXq`y-TK%ouw_9o*9G zI5HX`X8Z+}f%vK{^EI#~&}8fsWxisdyL?cRH#TZiACK zy^JuzzA@g9#N#xTAQ)%-r?+7V${f_KO9^AiXFFyS3C!U9<)q{EA@U4#E6pR)6{bMl zS>&Y;w})i-`)p+?T*1j$?vqCw)O%&Bmr zq@(;!XB3pm+hjBiSLBMV3qoR8>MtT=FSKQh9fr6zyl;LNcf7hbJ0sq%>>)uj;X+Yp zm|J2|p1;$}r0?0PMhqA|^YglF#5BwH*{7Jc!SHMIv86qwO&ySeHt#G#TvG!ZZx#Qf z`e0~L;;yntr;sF4(SXrOm`Z;0x~m8m*7>KcF$Uv4Bh#_!SILcC5cPrMnOSj%ySO-L zd{RqXs93^Cy@umrl5VxL(OT$8vDvyg_$&+kq%Qj5BmC7LF(Z?84Xj^Pg^8r0pz^(D@v8{_(soYb78F~F(L)6;L%l-Z+LH_ayL5ffj8ukv2`+?YF)@!&YW&(8fY?&=q>P8qsMy7B zK%6Wdhc+N`^6&dQA-Ck5K5-IxBlC*x9@Ni_Yx48hR$A=sLU>f)mL7X}VuwU&3Y^;H zn>+~buHBvV4zal+%&!}fUt(oDkMt-^))ht(b8jo`!S14E-lD;NUUTUVg$oSYl=Q(j z^ju{v!JXPhk}TkDjpzIf5H>Y$ZPSs$l`x&hsJ;2p3TH4aw9fHtSlylau0~k>jlL2E z*tOwQ)@iuZfM8+`Jic4Uw+|uN#<4X<4ApaWN|Ez<&lOM@Z`$oK7p8c;d0QL3K7P62 zIV~!oj(&^kkr*9+mJ*v}=VL)0hMFE%A){bsTH7f{;XV@XbOU7Bwez%hnBvx5)HaM} zeh{S)eT8<4+=r$^o{^=|2=93k9i4Jajue2ty@yNQhapHTQXgaAT}`2GW$bG9r6|xy zx&34%syyWy$%*_TmQL&=efAnB`jL!|S`poe7xx?@X_8bWS(GMXSk&-4ikP?S{Nd-ll8Vrd; zd9bXjgm2kuBwd1ShDx+QempI}Qw`7OZaK06Uz&p5-A6#CT$73;-6Qp0mLg8oGV5iC z0+nK!t%O4*BgBLF%!0WnE`E1z)ENx!LspDcBVIg%zdHy2INd<%8fho#$E7z!(@u#x z6~g)EoQ!+;vN}2;5-(r*Jn{{$ytLyCfQu`#vI@Xa3u1PY@IF}=rPmO7WX*vE!p+Ov z+Ozm?eJ3(B@rOE~_$#>b=ADslIP1Cu4=QeJ)mN*{INkE2yCZQ+S@qJkL{;*sfvp7A z_=%bxeBFq4Iv2Na=`!8~7uYKtF^v=L*z2K=eb9W{@(T7-_0HWExUMXYbR1!r9M(-t zW5qd^6S=|hvRtba|M)(1EjulN7+RVvo)~ue33DhZ#B7=INsDmGafWq%=rS&Q;=xyaz6lFbz9i>P;MP{wU^kBABL26lZ% zXv!z*(~^FUI0engO132*LT+VVAz6o*GjK$r^C%rlSTyyg{UlseGo@c5qD3At@^RnV zm(bN*I%T;x|)qlR%7a9AYiZQ7t_XqBWNscq*ExhCWU&4Of}@hsjZ>Tb6BF!Xao4N zme%C1N?xHBOQ96aI>o`88ie$7NGNdG@m#PU<52qaxJ4Tbm zziIAI)@}(Y2xMaG2}~?~q3Sa3q%`nPi}9#% z!uFIcekzP;E4 zRh)35Nr#no?Qs49#)HATj4--m-|nQd)P+uiz=M<F6IQs#gM*d7RGOcjHau{Py24>eMsoHOXI30_85+*Zb|A?cI3jL zIl!@$G{m#2-MOL2SLt7~D999&a{6bad+c~xInwr=BDWYBcA_ZdC$hy*CPf0Js;rc1 ziTWv^#5siStazRMlA_M9%G^zwA%h+u83jHEbf2{nHKiUu7lo z?}$X6e};~rcfW{=92*&e4QpR<4;} z6ZdNqGy0R(C>doNCo#bDI!{qkSu^DYNIAMt@fSoJG_jx%fju9cTY^BJewDS1sI^Sb zxQ-Os`#HS`8Lf0E^C}8FDZ>WPK<4K%15yV~u&A6!O(N%?Bani5IdS+~r?oPt@t&6A z>8<#!dvo~|you6u@2{FsEmoSQjLft{I8Gt-<0(k;_H zEY#AJ(iZlHa<8YQt+Pp!WGR3s2M~3*sH?`09GD+jVHy83$EJi4crw$o(8D>9-jo*CcCjT_n$mwFhuZzJfl;?<%^`Iz$%A-`FS_pOgK$=6S$}Op(fPXBqza za)HC?JhKw!-aV-kIn;Gn?l9{BP>}45j^LXV9lf}XRFpT@`7r)y_T^T506$}*Nyn*! zuUo(KunP~UL}`6YW##ylXwXLnC57J>DHu&2u7CI4j_ah94njQ*S+J)#NfB= zB#JH~B#k=@HY3id-^qK4=$9!eJd5OksAx36=xex6q#?f6AP52BWfie_h}U$<4cy%m zl)@Ao!q`9WJg%eA<1O!dD;7flPx2-fPT^9zF+7({*3@^;fm$YT% zIpuCWu#`>BQPt4Ne3L#d*O`5oS_lBFHE4j=Tl2LM4_{yLuvRT}uw=dx<+-cyU|ET+ zZSKpGPY14K?=BqG*qn(-za%%4RZIoFHkK-gI#+YM3xJJRw6q$95=sUeQDS2Di92 z%hnq2_$Xb|N{0kh<JrjIHVJ^mV*6e zd7!cu+pP1htOQ%9JX%V@trc4;#bO6RR5FNK(}iFji{9Ugp+kM&H4M-Moa}4PQl>07 zS70gIbrwrQ$unEGmu#aj#IuWk5Wu!U2j4R4RcAc!d9+XqB^B=5SAUZe<+QUpBzfFY zsT|HK)!kHbmKCryspvIJMPgr34H5jGHS~8NYM`So*DmUH^Jtc{Z&CgF^eawsRW)gY zmNI3nyhvT$Vm!}oYk%Q~lxm66!a^bm02tu=LKSsvC`CoxZ8j+aeA#uRdZ#=TGU{Z@f*s#i7MAE+ zd@rpis?;?HSK(i)>?z=L6(xNNR7pZ0>L`eEYY%VT71iCuY8dtnsl8WQ=h$EATU}^z zv(&vpN_TgWbiSF&rUD(Vm?R`Wp9GFJ3~;q4hIZ|291t*cIUVxTwe;fFxV_dQT~cv5 z2Xb1|<8^l4X$p@oUVFT$I6h3^RPEiQNC2Sfp@G;vR}t{xK>tevaCJ9@UQgIPYm<(1 zuzLrZTL8G^&Yum};FfEv8d~Azf|Au!h-DCk2T}IJBKS{%7Y0t@I^5QFKg3R0TeUsK zdLI~TLSgspGOj;>HC8gK8^x9gUaJzvJOfdqAj*5Fg<%+YpL%C4r3zcSwvxy{ zjDbdFa_lZ%Z4Vit^r2>n>?1_4h{FZ}08JW1!7p>Uc7epcH=IvyI-O9qoHe{9h*fE9 zRsV{4YuC@3MAr6oIn@!2&B6!EcVNMjqqM^yDs!+YTPd)%Pd>xU&AlTx?W1*BGl^$w z46pmig=#uiM{t$aYgO%KRSI7%lf!}Qy|ge8)i@|t#16dG83-HX z-XX#%q2Rz#lm@Pt#Wr5DYlsj0+*4b_bIWZvsgkpP-L$4c z(s-~oy2MVix3VY8Wc~XJndE&UJte}pCm^a14Ll7^kcl}xGL_IBThyeHcmeV#>qwGn zyewWQ=~IG9s5`4;SKmef!EtIcCb;7)7EWKZ1IVWhy7B7Bn;9Vq z>ycB~6N#WN8&Z&T2&Lh$4jPR*zuyKngSxJuj&ws0Kdg;@LCYP=h+Rw7sxyZekni!! z<6KB%=*#g0;_P|9gzH3&QyNKo2o(JxXbZtvfr;2csJNdLCC1-Am>hkM8($M1la(Tu zCKvlKc?K03XT$=69peia_9ufAm1z(31Cu&vS_&`WvXndbFcI7$-oV8u@x0-x;b^~X zdv0+|TgDEgF+?*>Kj>^+V`_$dU&0a21^qRNZ`tTIdN3`z{hgt3MBVp(-H4^C?Un9P z7fN$eJ)`dyCLngjdgf*aq9LENRP1-h^V1#mh7ynSUDiZFqv#1!r^AZ7-TPidXt!c3 z)FMk7BvLG*)vM;=CNUjl2Ldibd<%crRmIEa_3BX)26DvL6eQiHr%$Sci42$bPKLAl z-Hoq+CQf^`11HLsHd>BHkJ)Te0i zt{l{hn9vd^>P~EJ@&?p>$m^t2XdqtG_deP-A=D-aeKoN{TL<$rX+%mEp9R}-gO9L6 zZ0eXt#3FVUO(3!n`& zie%dxSS;yPp)l+c@h<%iT!XL_?*T6+*!wsmZ18=@Baj>MXZP+zx#MG`H)9s@uxrpH zkJQ;#(WLvFhI|L8RdNx{8`{O}joS+IW^6y}0pCh%J=TK|rSi2Vk&aYfX)=1AeCTRx z!g5}B^M%B;Y;5jy(uRyA>V~Aev`UCH)QPL;jfH7*?i|yC?_#gl;vo`}=cS*brO7SB zd*i=Wp_|qwWR{)IDNNKV@+2=OUd=0x-JV3rHt`yQMr7z7t%D_|Eoz;E52tOH(MCCv zUk^Qv-_vH=uoOShsF_`u5L07MR!meW?~ZX#oG)g1?MZr=|N5vc^ldIh%K&bgr7RPQ zY^SWbJQl|t_}s81-m*s^>t_7Rwlk!Y2|10D(dCIrHAbFUNpTfNkGz4BN=>z-VB^_C zGMPvVivHkCoX+*4`hd6xS6*eQ#*_MUiA4!VyZWN#6E#}Np2|r(8&OBFP}6F?J)yr4CXC$ySWDTB*j@n z8+U<{E!Iu2Asp&-1&`wDm4;ygGeS~KFp6ni$ZO~uT+<6{(3d!$T}IL0*otPgm|)gr z4KXY_Sw?&(K8S#8UqqLdd6hVz$ zRDX>b`PA(zl2jH%(c#-{CgNh%_!Y=%j6E^QquuA1o@;Ec3uYgweq;L3CgT&muWMq zy;xYi6Wx=J6aR(HBr3LwqU46ti#8+g4v>>~A}hK-z@8ve+b#t&kX22dP7}z_b$O#gh^F6x96yyq`x%#G zoK7o?pHcb55J?yo$fl1#-_;E!3nabG*}}|(>QnDAPC-Kw4C#BIE&jV`Ca_&6BdHWv z%Yj^~EBvGio>l<=Am~a9LVl{%VQ$AWv&i&kxQCPwS_5uR+&gL!w%AXCGKRIW$5KqN z8;m|uwqVz(oTQ${76|^J?!gLG_tA+g*GvUk6r+Q@mTFJm4Y^IRp!WHyk%^QHyGgP* zxzUJ8`a#xKv7xAw=Y@zAWvpLSJk2hBDSeiDER9Bzr08?^#y%yRaDJZiC!yG4c2*=s z7Sd=hNrIWLa)7MCtP=V~Ho-Pjo}>m9QTg8~f%%TaedMz_TCrP5v6+W_x`;je+!I5@ zQ#`EUQ{oA3zKSl%Bjud1HwlIPRN+Ets}7JN);$$JqXD@M2UeF0| zLT~n>VL72WYd}SZ*u-5YTt$3|(=10&%-bPpxn$#}7W@a2S>1u?H$=ZGg|oGU?lP+F zN5YvBN5k_3+kzw&4WbcOPI#6WiE}RNCVv~aleUrcrY8s=OZ?Ct6&*?3@P80>*I`v` z-^0KU(jp*=f{iGmB8VU&2&jl6A|Q%%_v!BL?%)LHz@Zxi!M=9qRj+yNj%#~ueaEl< z?)%KYe4agLn3=uS-fQpK`mJ~+AG?LQ&cgTVZCMh)`_^Kb;mE(K`{+DX;KRi=CDnT& z_Ny+Nwxh-{$JepYp|FQ~Dkdj?mUaiWeho=ehsAvYMuPOF0v6RWYa)e%Cb=>P0}MGI5Pbb$2;8 z6>s!6ILY)t?Hl$8ersv{%{2b_t)XjAPI6yQp?&9|07QwKa?~&}HxB zJvyUQM*XT8mc)VIseXtZb8t$XXj0NL1xE;7cu6r?IN$Gsa+h!ypcb=0HfR0Py1BAF zTCnZ|HBfET{0&~Je6D(w{S>Ifj$3t8PF1)s+#&aqxA-qq=wy39g+N4YXwhx|-6ulathk3!P8Yx7h20^9gib7g_``3noB{pNH2*|Ik(yu(yU9BZGYUYoIX zK=M*e9{`i_%AGxkntH{wj%%A4vIA`ni6^CdTcQ`vldfp!^e>iGsVEL*;zO(#=1}(AG07Ei%DT(s&vU7DX%v$8ee*oZFrfNaAoa;6 z7dD(d(y)y65Iv(_$AXrQF-Ndwq+^Z1Tw$D>fyZ*0yFmYuwQ%e-BT&=>sBJ8e>Plmm zBLHiAxHM{|Z@YFAUEF2bT@$vjyws`s(%ylE4O$(8 z`KkV$hK*F1OI5AK$Ll^RL1}XReYtrVMVBMnGk2nPtL)a;6Z#`R$5O;VJ%F;x)@=R6 zB-DFbGLYj;T;s{&oVr;Caay$AN7ubAUA?Z;8I_SuY~714SpBT&E{3*vY2zWRI6%;d#?5v++O!te2`t|#1(dvR4sklZ zql-Z-t`2DTC$?peZ*d@budcDDk?JCMHmoHF21MFkk}>Z7jhPe_pqMNW_kE9u6^M7} z_{6kVNm}ce(VG=bVx~jVr-oaMkCABWZKij?94nd`?Jl(On8yHR0n~=>F!5sChW2eD zhsvid1%h{*r`Zz)Ine%9B>rAJV*xTw(6gWCgUE{!v$tzHL?rfn8#SmjLC~!D?>7CbiCQY^Zo) zzh`}(wbXXj(wa22eyVwN(QmRFQYKn($H9oYtFJgvPvG?f9) zuk9bj@JNMpuctp*wztEd{%Zc)){6{JzlW{Q88e)wG>>6U0MrdYAxGSWqFUURlY+|p zalM0lOzMix=e)sXBW>Gx$sztNRlH#T+?EwQh0`88oC_#{1E3wK!M2&ad4Ng>)cL`Y_M5fdeVr`>d5v9N zO|#dXXuI8*vy9&?Z%7O&u)Ec}PtrGrs@JqdyJlH-^Wv7~kmN>-b=4$M!=QSVi>Cf>9tKcQ7O3{$BLfKkf)D$*A`YaRcE3Zi zSM+W-pb8dU+4>Y6KC@)-6uR5XW#|cd4G7dem$(=N;yz-5z}pWg@mC6m_Zsl`GG_0* zO_;tCG-4odB0L8_5#G&g9ymc<30{6+PPF)mmwS` zsV}cIZyBx9M0)o|E8osa?@}rM^jX{`lr}j)o1m=sfC8Rn$c#TWSRISz?O>Ym8BJS{ z7_lpR26F2BBIou{4MVf|ojY|0e40Bc(tjMT+GXq&fO-w6s6B_8|1Mg)1Jw8}V`yud z?eWUN{;Sr5kqf#%)Z=DpIzx?~J~ul4kok@ZZoJ0E1NXcOpknr5yP}J-x9@6S0H`so z$tzp>HO)UFXLL6;-kYWBIBfLrx!bW^<~J&}aSa=oci{W6K!33@Tqt)h1uKV(I}>mc zWQ}G7uSN$`w-fp>S1R3zcX5=|0`g3POZX@XgP1(#Abl)Rd0_)`H7RP30M$j>(~dyD zC8w%>U}MO4DbsOU3a{LX|3M917e+)J@U>c8uP7{xO-L3FdbyJq2&zw=uQgcbZEJ++%(I(j z!7AzsWyOd9-37uT1HI18P=xE*hBt&S{No z9D>H#QBp7X1nX=3B*a(qmSPj?b=}_Ne9RR+IP@uwuIuzN5%J=i$A_zz4^Q8ErnYb( zx`6@N&@C6gg2lJb!OcR%Hv1G^K`n2nUULnzsJ=P02YcDP!Rs{PFUhE5yej&>YeNTW zY`f;z=-~R{A<;Leet?Zlfj4z;DVl}c-Y#2HgdS|^2t{DCY}>p(5H?GuA7xd(KNUat zu*UE36KflI^48KU^$QPKp0 zsvkuyd0aXuTyeM$U>?T65ljp)(+0`;UPP%Ff^c8p?1V&}H_Ld>|zM$%>mew#IWc|Fm~vN<@9RA9^+?M}4|j_-6p zJl!Q~>qkY62s9(;;w_yFI7ZSt3j7HBSI5z;NBHR0{N+msnx=EXp~OpO`si5dEWy(q z6A|De%+^oH?fXt?+)$5q<7XjuDo0nCCntqRksdmr?c! zokkpauHYk0XSmy;N0hnTQn-{V=T1b%*CcRWqTX+u!TF5oSayk84Va6^23JJq0DEbgP8)yyZ<&|FkY%XiS=3V3=s-Cg!MW)l6R^z%$_<|tXb za|kve#6eVMf|1T9EeZ((SZ&n(YB^88g&P z&Rmv&yR+vk*}wa|*-qAWLW3y zhGDLY0~5;g?sg=8+IP#8P9p6(A+VEfkG#Z+$r}a>N|%ry^#-Ws*chMNycTh4M{_6FZ|1M1B(cV3$qq zl03!&d5XxNWNxKM^03|73t~M^$+n43<5Q5%qDchzg4aS7;ojQG!X)B}NKYY(WSP8P zJdf-KM0z)A>zi+i0vK~OD})lp6jr3*HvI$quwWJae*WM5EA-dNOZk0_DG^BiOGeh@ zV4;}N2`UzjVV-Hq7bJ>~s1ES|5?*H9=SK*xz;^SD{5$zhyfl8mntEP5&k!-2r{Zmx zyizch_c!P<|2@lUcjKMZMk=j5oSI6%%YC5S3O&ayl7G(2;7*Vs*No*(m9ANIfJ>Bg zOpf5)khD7#@jY128*Xs>t$4){x7gxH_u||!(xF})xM6f|4`-qF#_C4SV$GCAbdFJt zn;g!4q^xlGgO|b%wcX)dYOj-j;Rst`v>J}DeF+4~?zc_N4PY}YRjZe>#imV*lG#s< zsL2uBK=sI|G29+@xotFO*%qa|n*FSIfO>bwJf%node%V}eMZVpH~#rC!@S>()y z*~U%|<;c{7qf)rxY?*Z(`^K(~vWIN($SG_KDRbgj_U^(YDr>kSCHyek zv+?uf@tnzO`zQ+M47;~ZXHeE|6Z+|HLUe=_Z3Jw7mAASTzJ1eT)h1;AiX3Gv>TSpy zWi}>$oKcgFNdbEE8tN>=HSHlxlR%(J#)|L~)g|1@$|*`A-eKb$1ss2Kd4ar_a5!X+ ze2~Z*2T?(YTtKBTs`V1}7MhB`L{&i3;mVaD8n41vevrn`Tq)a6>q=;pO`$!R-y#d4 z&mD(UG|=+_wU7nUMX5XlRPG(cCH^+-QaOwFygW>n#0%V@ly2r469OcAxpDK$BD2e@d(n@0yfHv3|Jpy2J~J#H8Z+>O=7aQHu&Qf3j$|s&L$U ziCI<;#8K~oae!*sw&r@aUE17u42Tu5)_0{j;ylaRjEN$q$vu9S@ME2R-baz60X}}5 zc(?2UpdJGm{Z?5>&l7gA)VC9l+9!V2HnZfB=wh>5`hf69qb%;Ikl8SI-ccdTvUGf) zc)aWtpl$-nS9)#uU)CV*rAbSjU%RbNNDa&7>AR@O$vbqDsjR4PT2JcnK$CVZ^`l3g?lR2; zC~p=>ATp2Tv5AF7KklWPvj%T&XwFq#1V@=1qv_*>M)j#X*dGD~>Jj!wkACeOHt@T+ zqgfz+yK%q#6hUjaDkIhe>TXGca@J}c#jn=fRg*=JqG&3HC_PZAVv1_Vj8^XvYz7n% z!ScS;wbYFwc(?k%T;=Jg3MEBxC$L>fR9qNStf~_g0?H9k z<%Sy#ckx~N(bnwhwb~ixTiHZ)n$famiSn%BeAFDpF@sZ}O);STF-D{86tMsWVu85V z4f!2({05!4wWjK&rU}@%cZ%xIhVQFyD>vGL7hhGR*Y63WDQ4AWju}+E6zM@A&UZi+ z872%I!F|@P?2WH7X$ra)Y~HUDwOdvzl%Uq0#TNM+`=5as@{zj8FnlxU+bAiwrs`!_R&lCSIP{pn`u1n`)bajG0_#JB93b>ayNI0e2KTj5&jH zy!|oiBy3yjD0D;7_oh{tlJs2-`?2#9j#%wDhtN)7)ykg9S@n-`kDXmDJc1oiaX?$s z+dRlaFxTd2^06XlBZYiDJ>L4A;+jxqc}htOg_!je{p4(mAI0EIGofhX0F}Z5ktYnZZdt+jXICG4DE{Ab@IW+}E-k z;$(}p(+iXqON0OVF4K7H#P}@3Tg$UhUp>q8@09s^h^E-JNK4>-1{4BNDUGb|{ov!) z?;V{5>n){i5$lVL7h6i>Jq>M5m<2cWvu!J;xar<#l3ih%%Y0`*VOSt|&~S8(snlsp z9oSWFR)K76ny~%+=YOW4DLprE5-H) zqqG~hcOOJ&CRKL~V5USRwavvmn7y;*2o~d$)mDl12f5ik5rB8p|5WtAeNuAi?NW30H1 zGdpsb$CLb9qnPlhMNNIofl1 zuIaPvM%2Q_T-msw9NU1*fBb}o3h|3ktBu2KF`ztIAlR(#@5aL=(H$d(-I@KZmAZGU zdYclpq9~sRtL9Kpsr8m-&UlEeKprrvt?n=ONkB~o)R^u~jk8K3J0@GVXWCjWSPrbx z*ays6i@!9uo0@{stZ9aS$2VFH^3|h0*UjPpwIZz9ED-cY_t>`kCG*>#v@FUbwlp?v zT(#L=Wsg~W*4AMA5|mVb+!Qh1R{vGL%5j2$&6xtfbY(tLJyH-803d?;-k{dqCe2%w!PAY^MbLRu#J$g!fsqwB?iWP z8c-3dL+riVh+R`uJvw5y`(Hg}B;fB&Z|J}8sM7SEN0_6t#*c^?{AB1LoDmco(YKR+ zJLGHk75b^E!CeCS?$L&>b&MH+60ktO+uF1vQE(?~_OLJiS~7Qw1K%+=uXi=CY{7=E zH16lA?H$*7V?9=MD7do$75|@tZ6Bk^%}O5nD7%|%?SCunj)nEaNDeO`cZNtdOml9R zN-{l;wucB;0m|V&#RoRqsm+271!{H4L;dqLGh*@GX!Z03;*NaPgK05sMrF;Iu(t7{ zIAHDPh5wXggkbrWB^lJ1?j`T(Yc&?fqPrf~2^O&1j~fn5i*5a?tsPU+nkoXul#JH@ zlzn7ElS`Iqa81LJmp=u5C@ECri@fE2#L4WqcL%LxG(?EHU;RoHv(sgxmH!r?l| z6m-s(Ea*dwtbPD4#%>qZA!p-mpkJZR5=Is1F`$=*zdEj7r z^#giK|C-wGbc6XW0$Ti786YIGd&IODwHkhHiT0Hf>cMvihrf6L%DNwi1Gv04z~7@l8Vi zJ-kwrJ*D$~#S&Yf!J*1v31Dxjxounr`vh62Z_83@mCdMXdDDy^QI5ASp-3J9a;VsW^Zeq8w!75 zneQ=zT_$|Cy@QZbIi|Ie=vO_UzE0c^_NBifp`ck{JUIr=&zeV>hHQ%8L-j?=XZzBU zFc+PS%#FB`k>{9g$Pdl0uvgLRRA}5u43Wmi@5I*EP9f~ao!R)6c$?r9ca7{!oHeVL z5<`6Gynud++`07}a+q3Y|A?MQJ)+o-Sw($Fb->opCRU%sHPDJO@8Vz3wl4cfjHY|c ziX&CibDaBudG*}E)9^Jyug39+Yl0}b8)_cEifl%sc;+fA<`VbIhIcq1&s~;@@8t#t zejxnCo$WG%n$9WM;sMRnTuzb2JY!!{t+pe-ej)_h@=9C^^R7V`*Ws&fj2 zVJ$j_s|V>m?_h6KP3O=k%QCR8@4840P3qc%=fR$|?JEyNv^58&FGN8am&Y*C-)%{O ziI|sl^IhXfrMw3{X*G^})|!R2AGTA34W6`4K z+cUpoz=p4`mBdfHADyol|5Qlo9y5Ka{rMK=^x6{4Kg>lCQAroG0@k0(VeUs9Tr!ze zj51Aq$Uct-3az*p+|`a6DhpvT=%}Ai4!pIrWOO`QL$hFz#o6@H*xq$nbQ|tP)Eq_` z!F?*3xtm~i@M6CvH?`?V7ILTVAvuHM%sEd!O<9XdqO7LKiVRckyOYzP&l7Fos+TFK>o@BMLwsz zW}lntPn*GU7&VsSSYK3KOkI@f(lZI-QuC-2c!nfi1!9v24n_fZt}^w&pb9sKFF* zhWMAhf667&Hq9uP%sqxPbVRIvhTqwG zB4Q5Vc;k~PY9d|J;wYg-a;hva;g$-2iB%X^r6P+3Lp8fhy&BTf9X42NGem0ftziAtrNmj3T%HB=! zU+^bqGezjTofk#{atGEA#va30CXcgNAZ2c4-^3qfwy_ggBjk)|^+Dp|)ridP@bX~rQ-Yg#q zxy#6rC-`1vHcD3liU8#1WNK>TSZ+6UtJRE+r{1!-l;_f1jjRn{X}N~fglDwBbZsI1 zbgs_B_aUQQF%wWZKyKbaVRUM_zLb}31k4b1PIE@tC2DTt$_+y5u(dORO-rZ`2tm;v zo0Ptf=uZ@ZfLadZ=5NR!1`l%d6j;9}CZ5vOjV-I7-0N`N5JXLEU7N6kdaCJjNCXXS zjq*K9FHrb^<}jbLCd)pmo|JdcOO+R^oZ$?`mKxup5P3b=d;KigZm4(64_OlI)tni! zA;d<{b;?M@CZH`4Wvpzfd=OSc+atRSzXJP1`U2@)xJEh=wIX$q1de9J%#zH+3Vu8eY;yC6DijSy|xetOAK4y~hYlQQdb5dFbTbZEfj{+Uz)|&DcBe%1XY(&a5Ay@~>t-M3ckmZ@J`pa^~pjOnr<4;#U$eY9?DdN{|<&Be_kB0Evq~~W_cxvfwFIWBvQR^=y zVDl%`#}H5P4w)y`!g=9!*K-YAv%Y8Ta_%ba<>*P=rJC;9OzyDyk=I<_WwGX$;-BXg zw2mWY@w}S~YQAy>4ehz}IsaNmC*S0>nqMs0%V{w^o1Mv>XlVCZ&YLQ3`mL65pY#d| z&$#xk^)-6#)b=$w2RVusc(R1Ev?+6mfD_ShaP|U@-iY^F#TANwpCRMCxwJeJRb?Ei zl$Es@zE?9g*62%XOA{+}9+1RE{@TsZx6_(*!LU0n-MYna?a#Jo%NfOW>!1`=u>LUY zc3G@05ivINsOE2E%*rnHP82L0sSZYSr-i9MVq9GAtJ^Wa{3B2=zJ|U+?}FQl9ILh9 zb4#-{f%x;8j;h0iw3RN(VZz@F-zp=Cl~Z3TKM+-}3zY=Y)nC607(1Ry{| zQmQJT4{gX*{GbEV1PTW_YGJcnM5j*uTM()!nu}B+neR4V>cHp!Qsj3^f1?DpRN-ytD*97)Tz4$}tyG}- zvRoq3sbvcnNT#ZuPIHnpDhu37BtHDk-wL4sH|~JmkOMhZ5m6ReKRMkfd2R+Rj~0J6 z;=^u=1$E-755(`Z2sfU1GylLZMS7!f>YzZya*x(6MKh)6o8!`#OB8mmgr{O%gDR{` z>|4*DdQ@Di#k*-md-%WeO0-`~QQ75+Kbrh1o@F~VT&g;ryvw?~#;Ao7317j&H5MvzL!48AqD^4~fKu>MHXPpWAnp|UvM9f(lXzD_y2J=jg zs71aD%%@OO90>Z|*x+Ahh>B?dwq>nwvChE$y*b4)3Rk)2nQ0>KW%S{?Iy@(MgW)ay zo$o561V8NXN?T7F{H2gkYcb8ee2FE8`Yo&86ia=whF!OodOn)1|BHGvI6)smed$X# zD5%>;LDX02xL*o!!m^iVD{C|T$^DiUSa+D4yJm*|GG}jezOIO~I(V6Om@~n5pYAbd z)~IVL7#s0hrJ4z{CuPaT2I-+q#|_Pr#?>cv`^5U_>DolmvEWnfn-Pf`)btY~8Cb_;(eR{Q0`4p z^v1z@LFwH(S2KB2wtj}OYxPELWS!5F{lI6urUd(_9_o%vSf}2isB%0aZ|BH=t2kqJ zv%a*=Fk)Z2$w&8RL*{BH&28(SOK9r#^_)3(R2Y-XgvIKKifqT5au1I6m#Wy-KelXU zPI*sw#h7)b&YH@<;zQbQRLjE#T3**qo1WDo1N(VE+9rX4-b9~+>i(&i+Dgx!dElg+ zqn+6h@w(G(P0*3}(3YjJ>tWU=Aj+AZXa9kqd5ko#|M`Jw9S9GMN3npT!rtYGZpq1O z567%nCul)q&c}~x0%2>yG>swHchi{-eYnMAW;GthO$GKz08yfTt63eBDbCqfTJtC_ z>t;9UDDH808YfUZ!i=^=O3?H_tlgA3W14J6N)oUq!+M6(FI9fJ4aN!1Rx}@G+fyFf zeb|9Am*Cj0vXk z>Os#hrdly@-~L=n`1=ffn{L@oWG6PZ)SpeMumxHOaXuEgxiu`_gfh*X5ooN{dwO{o zTf|JzD3y-o@JnR}?L1$azV5`ff^xTnt6Qg43`I=cl2Wy1_Jn?PHE%q9V0rbhT-`mBaW8Ue$4o|jkg3gyQ9jYJ^$H`wMb+%XI1Q|5JN19pF#E

x!2dPic@#cM!mlNBXgT<#@k&Wei7eJ-|r@r@Lbm6J{yNQ}Z%Xf4X zsSiZXY%NzW4%*f1r@A$@PW8XG4B7X-Y=$isVBN;7%P`|c8sgzM0{)Y zs#_LR-_)b8o~X7zRVKOuBho*WeDMF&j+?dbi=MW-LR!i)v^!z(m9@-k@M|@R&~&62 z{C@KjbOMaO9ECZAxEk~TyB$S!Sxss|mv8$~X@KBbW2+CsHfcb$2M|*jF_5juGvE`j z0W>~Ki|D}mB;=q1l$#d0|Bkaj9x?RUh#$nyKaqiBek$ znMIzr2?on1UymmvmQonAZy+a7KDZ{}>uCW)O+_6Xggva3#r{`OQ89+CqfV^ivKQ4% zs`=!0L2u##ONfw~Q3bQaCk0io;|o+1}EZ(#7PK3W@kd z)w}BXqM=M$?RMc{Tp;9<;Qs6+s9dna^#itqCmwLgn`cV5-Y?u__*a@;5~Uj=<(7TY zh%2vEZUd$^yK4#*!^^Z_mAr7a10+(u%qRU|+!bMjk>6O%`M# zZ^0d~4d{7@&eB|r0JV92GWHevYxFdH43;?ELh#0I9wng;6J0wz!L_)P1~GIs-o!J( z?hw*3QxIUHbBP=B2k}&D2--@jTM~*bhNWIkNQB7dE>Y8db%uAdH zkX&XnYCFt}SzYuu{2DWL-Ew3DGbKuop2gfS?KyggNpxgWe3|cB)>n>|x@+C5^ThAj zsM-wC4I~^gOL(U6I?PLOIt2y)CUB1$jnwh!({>@h@w*&vlQEozrjzBt`lIR{l`8FB zR(y54`W<3ZZHsDr!4pWQB4_PESexwXVgn*WdT*K<(IDOH6i)hw^Os##+Ss^O)m;&2 zwK7*#Z8SfILu+8hq=G46x&HdvnNX|t{NiYMil%KE1};@KIw47HE~t@RLg+#$|15WJ zAI%_DrZu<1daFr|+4+dtK5JnzAM&TgBk~-KZEBsC4%?uxR;YW%!Q88kcf{x2s2$yMC3!3)s!0%84ea#hH_a2~r)_aML43@Ox85h4i`L4= zQ|6SGQr}TD6+w_P%8#l;xj|H6ZC=t#S`_4Lcp=>t_SBEZsDK~*`98$f*O%gDwUN?e z1O{XdrH8l_dLKN2_yVrVzDL@LT)FBz*^YX=kV4U8()|`t2QVjoD$)eA5HktuBbkWJ z!hy)KxV5;`HD~d2@XF0+2?2!4#1F(J#Kf?tq$J{ZzX{|BQuI$nb2Dy5rqQ>H3Q+s# zhlt(izvw%wm6)q^d)9uO6TLGr0KbfWGAxadOMfx(E-`{J?x$ix>H^`;qF}*GM1!!J zP>H-HkX0d2Klp>29%5GV9k=J(lT9H6}qk9?e*(;&!A%S z1e_Y~Sa+aeAEHuE+=xJ4(n431qm$LALK83qb=1Ti*h~cobd8~6X|=~|&8-i4Q4mJ6 z6ZR?0qtT~gHk@G%&Ag3tG`B9lh2k3@ECBA?I^x7`j9R(LVH{%-YlqgM=3KuEw*h>h zTZAow7Ilm-x593;?8t;6p!S=~`N%ho{tL|LY4za~=@>U$g1Q_ zF8P2eV1Fw&mfU3Dt(uhH&3;m&jjQA=0za9{;yi^O@NVKgf`0vZ4GBuc4aWSMWz1p* z7aWGnWDG#=6(3_) zz~Qf`@3Cn`23kBWc)ga^jrWSR(Npm6f)_Dn0!8mk=1oHVPsIT87E&fvNlPUAQIEhH z$r9?dLNoaR^=|4h3Yq2->q%WqTQTPmZ9EO(-Aunp1A1o`a7ZEvQ~4OGH_@B-3aTbH z^HK{MNmIFvsotdhT-O*1+05ygBc_l!eD6-$Mh^Lx5|73eD#ueM;lc9zkgbHNGG+cH z!gguQx=JEa;t}IbS|^@8XFWMY^w@hRb)s10{v0!Ixe#^AHWL&U)ZHg;? zbc18`d;B*mCa9fo$mHdHlyph*zi1h#7)MI}E*!)jlN6TlD*qJ!QSP$2SUkHDx_Xvq zXZ4ZDe$md_e*$8~U62B|UWp2F`)6C^05(xLsd^1|oZv=nROMI!9eh7aESLf1B&G6S zzyl**3;Ym`Glqntkz%*A!e^-eJzumomIE&sc^5sx^F@6rf6l#xe!NM-)nZPq!f{#H zoe|00gE-@iwY)yOr`rd92mXHJh-Y%~SB z=m`5TWn_jMr-gFSeF66vb^oucLB}!~oae|5%zYev=_Td>XIkbXrh;uq+{`qxXD;Hg z+*vPYxU%lB9=cOG%UF+pDd4*(C#2sII!3tEvowqmE&iC9#+WaZfX^|%14JEWSb)G9;)A)K+xPL z{V_8~@H?-hkSV8H7r@6+Ax$mC$EhuiF&W>eyR9!*v`|0QuMW?l0mDtxnRG{8gZp#F zF~P{Mws8A&%M0Uc!nF&EALb=#T+33{olw25&@Mx(f~tG4~x-d&3sHKI&` z{BMkix)C>1)lwBxeOh^_W^(Rn#o5~Z>z2u%Lvmto$kU+@<}Z}5he!FjDel2dj=r)H zBrrD(Je4HOTlpPCR@D~yR3tLzv1}QtI)y5<ARVl3d5c&pRM_gms*FPnL_F=!lST z@xWXs3pmhcq-3-x-W*a)>iBjy=VDn$BSZ_r`JXcX-rBCL-2zcJ}*l+i#c`T7tuzhw^NWXmTCK~ z!h~I-j}@W9JW=%KU4mg@aq>BVgMbNC{dGoX%muk6(GzaG1i&x1_{iP6E-tETN^6|XO zwkcUQUSa+6H9NQiX717yZlbAt?so2)x=_CW9`JE%r!U;o+~QxV25K8!(47CW9#%Xn z?YsF{Y1ImdX-&Cu(Pd+FrC}!5m{RTU6=#-KuLJTF0nF>Cq6gQkFbgZE=f5#|R6S3- zS|_g&te9a~3?8$Hr(X>r&)lFdgfhKK>NZ1(Ks^5(J^iO*eyz@_dj&g@?`7b?@1}+8 z9TC@-+qJF81B=2myHK{7^EIc?;a)Nw1N9wP(Pk%9{W`-cg5HitJZJpzTWwH3$DYZXe)Q&6B}0n6`~s(7Pf$eVLsDa|r-YNi4qtxt%MM@zcHb7dvs zFEe9gi^P9>8|ABn91uyI%*y<&G)k-PubjP#o7(DBANg+0{P=e=wAvwjk(8%On&~91 zP?EgmvW*fRs6(V=VScM9C9u~>4o!hJ{ju(_JjYlSZT19T{4F`H-Qq2g zawQzlabWF?=$Fdh++oWfO25_yFLFyf(Xy!|JnC%|vn($7p}o4o(NETtSnV3n;8cy&NTT<;Izk{}K;Poy~fm$*k zf|9^+|5GebzE_hG>XL42TFo}q^KkH?Fh%RHyl_i3Bv64qNHp{R^2*%1 z^*GMiG@1Dzr)uSp@ge(j)cU&VY<=(t{R8$||10`$?0IhOIuq*wP?b9TpX#^F5Pwa> znsnmum8!b4B1%+%!CQDO_>AtFkmr9*cS)G*_DY-1djcrPe@bkgq}r2KZtPcDR-z0) z6gw7w(63au2M_36fB{3-6v}{2!N48VeEe@&15xPOiMQw>5(hr3|n>T#k+N9 zbk4yhZJ9R2|FU+W^1OSDx?B(ktev^_e`@`Wt>ipPV(FHlf`;hH{ZU12^Dp)$mN2J& z=rNXF7<0b&aM@~L6^vIU(EE!ru`7RGL*|FHu7NjYb62_ctuNmT+_YCJ6GB2dA5@v9 zRd-IS7J8Dprd4kRNt=#|A@O&glBVcO1^Xr5?KVSZMC&>|p_4)?+CD@7op!y= z5ytVF-*yFtc39WYfD`~{Xs5RP`hTSrb)QFlN!;2w7tM(lwP`UfA+0U7n40OC&G{IM z*Yy?;Or^tD>lnNSP*a%hztyHr9Z8nBwcUf%9BpWkkamZhZptQ|n7+q8k2L5Fu^%JR zN2$zTDNljw&5{4R8fgXXN0@zyCtIP+s_5osS7u1ag~l6p4-5BcpCC2N;jy-T6-ywEU&< zPkh<*Q9U+V*myyu4UyVxD%121>kMUu_Y><>$pJ@>A&yf5DE|Mc9&SZ_PNXHY%2u#K zoKzz&ensd4*^~;R~Su2WzN+z zgzSo%S~lLXY8zyK+0j}z*z>e4kQGSBr6TB8)V+WVm?LJ6(-P8MTxJI^?Hw}N8Z;~lkHCp)UVIO zQA@d33t7}2^z{-H^F-F?qN6-Y9V44<4fEeW@?^_&Q_xTW;2p4OMR3Q8PAFP2dJOLkX8TIZa155Y^cl z=d4)eVb+zLLB(?9oC0Urp~73mE2O0<7t3NKbEA$_l!-UZ7*}Bx%bbS@#oTN5taOy+ zqw2uM4JI{n>*gnQv50ATrMiC$-WTrE+)D8;xuEun$|`qM-kN@|9IG7d{2c#{=g{c4 z{_nP6<@ODKHvP*uki}}a2T#iNu76PwSpbw0uLTzm89f(YFMVRTKYg%FrY&%pjPK_K zG&rYj>2Fh9&)C|%i~ea7ro$a3%kgOuMdun^7T1vAui$tC;YtMUuj;%bprVrCvvpZro_B>?Mq%F8v(Er73 zNWIliZ7bg=Util;wTe~>DX5V`?!jEa+j4io_dsv2?nlDl9~a?Kdy!`*vC%%L{h$;k zA9vWoDNl$0kglujMS>~K)%#Gx;DXw1==V7_kbZ1jk`h*jV}vUaqwxAk6A&W8G|*W_ z6S?2SE$$`#5SNw}kkO>46>a33HJ__4Q6jSAYP~7eRjrUfs^7wAP#cx!|2GUtJ?W50 zzfFHoceJ3JyHj|ySjXK!B$Q3z+^FuaAaJ0YS5;kNe@Ohh){i~1uo7%z>-`5I``Hg1 zn(1-uDTb81c*RTsxp0H*IbltSv$VU)RHl(2va%|D#i@z0)zzZhu#YvLh3Ea1V5IPc z!&}-gJ5%qOv)UNXhvicZN%)OL8+EHHx0gC;Qa4GMMId3>hjHz@3&Ri?NEjWdl_;$9*iFYdob@Z!3UxB zxj=l1_}|zvu~^XsIRT?EQ7|?91M)ax6f&cPgWQ19q)Sl!=sR&%%sA}4dHL8NT%^w> zd^N80XIoUT>{87J!ee?rxQr-5EQWj|jVn%s(Mg;%3c`=K4eW_HU+L_xzEi&w6i>XTF{qR z1;5_&;!ovcCGV&Kz}Beaq4%o=;)#V}wS}SysaGN4!thu#^s#^*{2lgPkl71%qytlWZtASzl+bMr4(jTrt}*HUv(?+~K_TeSOvQIH1BGoL2J1?lr&XDD1% z)X=tw^tu$>TnfHjzPHhupH+F^`eI#7^>+)f&sFUWGch;_{8ydShk?kH{;rVZeWFdw zeoe@sN%D(pifEULFgbtIrYGsmSNq|6qBL zm)LGx2Mk!bhZn)`Zf+s0Mn;>KBa66%`+Kg9_5i$4^$-~X4OVuPzJ;|a zGB(D--^t!5UP2~I&qlCN9I1PN9UUee?SUaI6DohTMVnc3#6(A^z}Ms< zALpRwzRn%yJu~mQckbNDeHhoz+*~jm=*f&IEOG=gCqU}6N6gC-i zhq@fF4nm|B6jE|I7)*jQ86tUY0)B`{Q`=8oM>?}e!T&)8F`t8Oq0vlw z1{UMY_#M@NIlzGVey#@6zuKE(?dYRxow3j9SJa*oU(^5E=I|8=tSAq(33*vqn*JCy zEXa>qj?Uz#_~I}IJe=KG%zd8PT8nBF_n5jq;WN{CQCC$ld_z5`Xb(azdzB7F3Tvw( z+fk7bB2MUDl&|wbOfUMOu!)pP7pxmR2fB{8slYgIjHd*IB{pz7ix^vOawChW z9*$g(l0x$@+!Lh_b!PcTAhwE?xod?YDqArsPnF(eoi1IL%VO<;bS4b2&}A#OtY$fv z1KpchP8EITjjUs^E}i?FQdpz& z6}=0kZXUt#K=F0%GNq_|CB^m$HfoUq@1vUIc-bT>26s2^5fy=76Lf%@fe&*#O0B{d zo3E#7;rTjW=;8PhrT6qt#3zeX@o&;C+UKnMWDspCE?p7thYX4)vuH+cDDn{Xym=7C zj@qIdMukuZl;df~sY8FMVxkf6aaI-a7SAd6C20*8x%nl@gfrr1PDwv}KDF=q~s=)N6X9Hp5pnyFAyoFr;Q z|J`5C84}LGP9}N^BP$PurU~d(t=>2J7vY(9HvDFUicz~D2N9#$ELep&uQ(Ibj$epO zQ`qLe`EHm`33a@i)u515JpbxRZ!otBt6`_g1!8@SdUC0YVf5-&zLB_{jyHxZuT36{N(>p5ll~6eS8+Pqc(3#HM6uv z=(U+~TzcI$i%}rO869J67Xy|JGwyLVDJVs*iA7yWnqB)-)51}m4jC)_*0xV&37k&0 zjpW=jRc~YEoz-dW5ai2LyqdFs*@~72!5Zc%(vzf+Hgaxc_(-c|ewm*|^9?|@(}|{; z!i}c3O^roj-Bm5=pd~8zut@o)3Zbt<-4htnsZ2IeX>A%R z%c|V2d%SLIrD(|mX#)JELLNm_cmozFS=}HiFZ8u+C+e}!gIWeU-6^mJfbKViNaxUJ zR_WB5qB*L;Vt4G4d3nm$D!Rd6AIpQ&cX12C}vO@;Ig_a=|~>TKtyZFa64n8}cv zQ~DodZ8hKy?8$zlVc$QMOIMu52rC*^P%Q|xd6wc9S~ifI4e)L0Bj*-4AMClE?`nRg z`$oZ0L!+K-z<|c9?quLQMFi2i(gpA9e3me(;t6%^H7@k?jp`088h7s5$}C=H{-rAc zY+=~bMFo#7?dq&7=~6@xEvrbIm&dm*QXwC<{)VdiF7I+FQ+MWe;L6@x__y1ZH?4MV zcPpRKjA^s3P}H!t9&vkKo^17(n(Z`!<9yZIX$T!>S?dc#lLe%u7V+=ukrou%?x zGLoW*eyPN2EXx0-UbkJqVtw^nE3iAA8=8M%Us-^g_TiSUzS4xkzFrpIn1Jh6M8D98 zA^%IYs!~*ZO`GqMUpUt{NyxJn$&H!hXRD_gSCH>71Ix!K4hsM9SXM8B^~if>hk}lI!@+E5_=@~3g*(%DPe^^S*;b1K;%4j zPCxh<&?~Z{^eJe}V+l03oDNouxl#Ii2_7$%Za4v(sseav@B>Np*C}*1tU<^(D>!Lnl6Or|x#S#9POp*q1l?`pGsDBiTMSVL zqeB{xgCy~ta!E>G@`1Yg;MsI1nYMF!#^c)RwV!f-NOmvzfeWXP)f#SgS7g{N47J%7 zgZvgb)0tBAEH1XKK4o1JrNudznEI!Q>@=6&)|j()JQr94RNa7EN&r*e z##sD3pUe-;k8!%WOPCP9ulcP^C0lVpFXOr1R`3?4m(nWABkBsCa?FUd1TRZCDKRRW zNzk)A#~8kaAz&4>6KH$s z3h)GY6!JcUUrH*Qh^U2zS5UmDWzQ;|&F9JotEgI$h+_D{oP&QtE6JOw@yYvMosw2}CSbq#j+rSCA(m(*lwIciT}Kf8^-=!*>Xn($M2G6B zoD)I&u>1lw=eIZv@aOuK_%e{8`ZLn);)NY>v^Mr$WqbDZvS#?Iypwt32p<4E!4Vl= zq`dhoD!-WOY>CE}oHAx%LLdnmY6KJLf{zI2Q@t8`3e*O9T`mWYdHkba(-l=g6@r~KI_?F?BIo>r#KqL7XQc^}8;D%&Nv~rQMSjTTG=$pvM!4M1( zPOVcexhGW8xQRHxN?4?-#?}grd(fOZ#WV`L*Ya zE|wTderx=LILV4$q$(yz+Y)a8SCK6gTc ziI>9GD}t8IQ-u67ZDd(dbp9FC_TrpmRdi!XU?>xl3(@deRqX~nY-NqLEO*iy!pY0K zmA{eKSN@!*$h{DGWnOt@URu@LinECa5h|6-L%I+zsw_MK$R}_=%W>2U!c32Yks=~h zHWN3YUoHM#rB!7EXl$-u1qb7la2$3Ub7sp-<!JsS;XgFL_B$1@to6JYi{h9@%M&Wkmzo-U9?XLUy$Dt=viW)ng$d$tfzw2`Lo# zA_d+L_Fy|@A1#%$rs5&cWL8YDq--zqiu;}N-%PZ{?TTm23_V8G9cG})7yK`}@?T01 zlq|ZD?G1h?oQ->0dQ7MpybiiW;OdSpYvIc*D#}UxHoc6>``pJ%jPaB71)l>|shC>$ zr|x#v!Q!1VQXH&gxHc|m7bKv@-Q5A&EUmVPDnm%u>3LV02|-IN@MH9ii@JcO?4-o< zv`ThK%EKrZc4o#3e^+*Dwyu*7yEFIR`ahhB0+r=>?md8>!nzqRIWSM*?f^2Wb6Ezd zcWL09tC8Kbj{G#gQQAL%-HwCwu)=5SFEUak^vdIx-Amyq-h>L;aT@qG>OVefXEf8s<%7z zx1ntv!muIe;q}XL>o7{oUlHD7^5^9Ve^F&sO~utJ}STPl^s2mmu7PZ&x^C-f{i@ zn@X*d>`ahF-H>D^-v|VYKc?MwQx_k|9I*(O80T2(y{U1^rKv`UC-W7Sk-}4^@FC2% zNvZ=Mn{hgd$46wt0(JO7xi?&=_%;P=EbRGW;8J}{VRoUi>NLLxv|!g%o|&h}2U1Mf zet->;barl`Wk4)Dvgo(#CbmcMkogmKP04C~NAB8^VKqz6Cdk6M547fDJ(I2J*`?qJ z9(@nwnm>+yu*}ZoF#T|OoOvU|rou*tXu*pR}pv2E2zQ9EPZ<#7@4cqLr+A5=jBPAi&WwR!Yiz5csg+gi}lMVMPVN} zpC<8e9_DLFA8=6pLh@N$irQOhEx~C~{x5~bfhg(WO87cTzMlrck5cYTAT(0oW)F$W zC`f%g@eBp6oc+Qqk5375;lReW_9?E;$E;SokQ^stYEV{cm~T=KaP;eTB4pv zc48p^n@W&lxI%-lY^=8++czG!jQ`8&87`DRWmb=4@~`T9;G=mi>N%uBroxLwRXmGj z#G7V^c%wk;rY%XH?iG!KR2^$lV`BQYwR@XlGHaJ@Zgx|+LzJYff(3sFZ2de%@{jmc z_cQHlpm7}}lkOfTyPkc;x?0wj`*iJ(I&eO8*+2D41qubChoGo=dBj2wq5O`Bkxu7* z4k(aj6uftvmiz;pwDys(i;|6Wr5ixd<-Sr-v9lr~r2(SY0auL5fyEkz_X=MWKlC3L z_LOA01q(e&N3FF4FCk}*jD^)u{Bog?3jL#Gz-xj%pO+_`{7ZTA02LJfNM0d~?)rph zQCV&^&3#d2XXMSxtzs@e&#S0^2*M+Uxg+y$_x0+REOEzHh~0 z%P_G|>|%RtlZR;V-f)1E75 zF$C1v|E5BJ(F{5Depq@SXQj(!dMjt8U~e#lh#CxwE-sd@RTPxB>N=oj93 zCuPDdrsHP1iS?Hb<4kYk*bcj_7us{3S=nEf#I!*2o+$j@StWt<@@R$Ef~t6Y@3kJv z!Mh%Ana%@Pk2n7)&@?V@J`6}$No|n;RaG_Q2Z|&Lzc;RYVWi+j{!-12-9?VBosweGpO%uH!9kz}X-6s7p=7<`}p*m%vW8`KvJfB8MQBVf| z(ejttDBQ--cHJm)qaU&QD)OSgFm@8oFcNjVg~JS6H5?B^XDIxQfd8dr)by*-fy@h8 z%mf@7kZX||UTm9xG;>#~E-)?kVeqq}X24}90_Y$pY4s}beK28OR~f1%J^oL+75!i` zC+i&&o_05nRs_k?1Kdew$6Z|8AlRvc@ zL!1g0V4Yzr!V9r;`DdfQxSk?AX>|@by1Fu{w;R+Q;VloZK zGIz3WE2;kEQQ3S3s^^Pu`M0*06MNU3?MKZ9pl>lT>I<&H{tP=8Io%4;ISjYL%7_$CHbQ;ex(T*!CP2AD85LZ-bPJ% zFhBp!20y^V;0N_pDN5lNWLHB&VwTr3Ju2e1*E}*$PgbhQ*Zu?U<6A7&kPr=C8GQq0 zS8^kP0$@U_QYMqlpg%K?Y&lWR%V~DguXs{my@3OZ0?uh#qC<*?<|#N8H<{m<=3RaQ zxFPdkfqhY8?$X5D#R`{paC1p)p`Yv8(i_FvCYK;KCEl85h^o?~^Aski`f#V(0=bdR^vZf(Pv?Kcbmb6$CS#r|?M3+T@iGD#R+S zz04<9HFI0}+xYyPQW#}(P2Oyks&h?2D;%-@9xxJt*9@;pMc$jI$SY9t*q2E6lF`K5 zD4Xn|)EKl$oJ&SFW?A5sY*WlFr>{AWs<*Fa<#%9XG_$JQaf%t0s(6rTkz67b%#A%q zJebv)C?_q64NO%bMFpy*eN8K0uCI^Hm63fkVO1+B*^3k+G4vJ-T-+7~V!q3q zj>9qQW9UiF%+P?G)D)(=lVQ3EKmUBmdjUUVJ}CVahYUlJTvqn|x2r#>z8n;-apqvzrgr2ZF*vyJX@FVbsQ2 zw`g?S7U@raR^o_M!!bJH%|2=S53(m;ZFL|@46s~MNiZqWpVx)L!3@Ea)a}66rMyg?wDr)y9G{5B zvg!O_pH&rMKnL5kFhtQY!*i9Ni*uLs;I5Z0_&2b7%QFDZ`5^%J!ZE;wlo8NOkxw`T z+*{1uWLlb7GG$W?sfO${1ea?;&o8-wqg8az>mpV|C$kGnX7X$Eav=@LVFjnk;=_o* zd*#o(;YE|MQtLmU>y=Z6nWej{;Hp;GpUBdAiZTSLN(+Ol=S61@Aqh)$|ySnhvzMoQ3ek#x@-cv2+oM?z-mPTKt~moo-v)1JWW zrL+@P{W&qT`v&KV)agm8jo1LX%Azjt-smE}TK1{IC3D?SFHscXz z+R7{o%(-j8E7auFsP4jQGaUa?hLNE)I@unvosu*0wuw;jjo`~Ehr~-gn$lB5Xv-g& z7NV^NdB9WwTXiQ^_diq-1AR35Q^q^Yz67rRS1A}r+mp!uky_Bjs5{gW`_p4AtZSYE(yqig4vD3sKG*OZ3K2* z(Uy7n(r5D}{vKeal$ocRMuAca*irk+*8!gd*jKyO7{rS@-p#|>z@7e}X1FpLgiQ-62U8FJ~WaDT?>|XLnd}eSa zWn_2x_B?zA9ybWVNr2x2mS`Q}dKZ9u;J z0o0*FzLgxk4TM|mi&5kZ(nu%BN*3w{Us%Ud_NFc`yAINif>aC@&jylVze`5lzE`b+ zL|duBHK8MhZxP5coJJY;NcqBQ8FP5?_exmRn??-H>kM5>f6#wuJVPjK z`v0a98QCh_qv31w%DEf;vI|~wp1DK=$2c<<9)&wOKMnOt-f;G4+((SD6zg-U;#n+X z0y&mZqF@XsCCa9o(EJmWPqe4?E$@iKtB-icXFw8Mt3TYLyq- zd`8}`;2G~iwZam#^{_FpA(fTHR)qh&{C`elL_o{l!R-S`6`v4V?je;R#9N!nsv_iG z<3zX?DnL6IJ%kdf00}>^nu}T%%kY0oy|FO?`cMgWzuS%S09>%mii&*PVPkce2Y!`y z5poodSD7T_5_kO%g(yalkNOXlI*=#bDxpdgRqIP-YbfdK=F0Uco!YAqdDNvUBZO*d z;eS(MPm5SgxxYJ@#B_H3RtjMTS{FfZOyat&&>rR+t#9xQrnAZf0Yba>-&Ek;nk^B} zz0_({Vv6lQ*DQ(WZOp6bO$u8@kR4B1tL9r%l&-3F-ud6u{%@DaZ$VYlaH z{;lLT`$2(rTENCgK}QCA)pb!)mWtX_L3fTwVe2UsEqLY;8|NtsJ#Y8KxS%9)u{iX*LuU7A+|0r3A1b{7_rwA7FrQ&v~PxvD6CHHOurPSZ{8POji-cUk3 z4ei!5Cfz7ot^SbmuKfDEBywS$O#W+|`-?G}6_4D*tJ$zewp=W?^7;lXoJUprsyBFg z)hi8a5(%;JrmzcZ^8bt!e|H1~#c}(F3PPLNZbIYH(n0NX#W zi}-i!FV@iSX(b+i%i6&f(%*I3qWoV9SkXs~ zbjz)Bqw3f&;l0!}6JLZC_0lS-A|HLIMg-1;_IGaoZ^{+gmJ*h1OK%;D+_m9D>*1JM z{dMhtxNS?7+72fwzKpWB>0SyC_L;)qd8%r`i%9z8`dK~@r()YHrzf1=a8JG`*-}5M zacRnpr4918>3WK|h)+2SV+wqFoRM@;;-}a@P#id@zY;jQLO7laGMr39Q1U914j*Pq2I@u0e{e(<#?C6DD7s0%FfM8 zV(5$VeA5E^Jhqi2`JZ_r}cl>6zkn9Aj6HUDLNt@x$9jJXWHux6O|a!?h|UrLR1 zxJqsVr0BvUOrBA-;2-o;sgDtvn%8LpWV^BnJ*YZmUXrW;{y)m)7(oeBZsS7i!yGml zARVdp(qBuaRo7|uQI0BRqz}~Jgx&uwzxcCDHqMPOVSSrmPUtm>B}NfG>P-^A5J8%B zGL|%{^qKON{C9NxFZ<_@lG1Jr72q}V(8pFjUU|5p5$ib95?Y@z&6 zWqgTDwOTD#JygSKsgb6J=I3Qkm;bY3pH`lMhv)(%WCHij+ZW*3gy?0H| zTA2}j9o!hWKG`I6gV#n|)AeS$=IZ7@EaohqS>3Vz$L6fAGPJDhsVPZ*AMKUUdn953%q&H{uX70*5oP8$eYVO0lclo~o+Q1Eku0^4s%;E|# zqolcX1acgDvuv(H1Gb^kyDAA@hF~MNq7I{PVZLGwa4z^50$6e0xsAM!a+UgluFbG# zMzV_8bWR8NAn!VVPPj~DF7}tCNntgd+D_TNx-0cB8_ujs*2lNj* zABs5)o}^E;AK8EO+OZEOv`^Ze3Ok*526dJ{-F0ry`RNM}E`GYKer4@Hb~CT=iMvI=&A(G~x8Yvv{f-A+54#>UJ{CQpK7~I6Jdc0jGi&~G*~@pYuDss)M*6n$ z9bhi;z5fTxkIO&4{dE4{!OzSud0#!gX?(l-z3oTA&vid9{UZG~|9$*V;e5|g%2qnB zT&!ZKa(zjgYN?u+x`z54ja^FxnxJKY%U3Udq38ob?Shr=I!kr#>h4%Y)639zF<5T! z+;DPr;~K=;SRtJVK_s9OF z!!^fAr(S1~3&yp;E!y47!`xHXOWEta_v201e9rpr^XvC-3J?TRHY0-|!GJB9A<3a} zVNu}`5uuR*QJbROV_agL>w{G#`z z*vr5xn12K_T~{ZrUAX@2#_wCJZ@b)yz6-iXzTfm<;Nj?_y^klKoOn9@?9%g@7uRQR zznpum_QvR~)4Slg)c4>I)gQT^n*ZJY`QVo`UoU@~`F`ogv7g(2@qQQlaanl(=}Obe z5EToRH%ktv3f1z}-8D2d9xmOdS+lHU`KA@iR@~7V(Wb9V*Rj+2t$T6RRz0kKl7X$E zis9|myVpq8LX1M!ZCv-$_~v>=YU&NBjmf62X1ZqY&97LDTgt6)iuWIEYh}0G?ydc0 zhdquhPE_X-mv~n%w+-%^?jJqwdro`p@!q;g>_ha0`epe?1^5KoZ(bjy6RaBiZOiMB zhoRTP&V?V3I2gG*Y9x9frYE*5t|PuJp(U{~sUcaOB2Sg4HKaFXv}Sf>ZOiV<8Oj~Y z+mpY)U=nZwI9+(9=qBi4@k{W>lAjQDsBW2YxlM%|ETA&7DisbuR3Hf`9=Z|JS3Q9} zjk}3|Mfgq9C7V+`sS&gsdL@I&Y+{YFPjT*XzwmVgcEV6mf#UvAxpbuFbnPSA&-&GJ zw}!YzNE54hYs=x*+il-E3_Cr#lD1ZE6Lk;voa%ktuQafJ&}V!45Mo%oV{qie=)e7w4UP5D~4wO@@U*RhS`*Bh?CZ_>X3u`$4Osp*Var+I~ipXE}^ z>sCG1XvJJ$VEfE&!k*`l>*(yH;&jbwos3+G8=XOfO2 z??`D)6{Hc;%QEsZ6S6|Gy>lFM&GU@%S1CNgs(|0XZ-xIBeFV)FzXQK3nJaw{`2_t^ z_M<`xrdqkIN(XL;FhN?OoY6j*km@*W7Oof%Cy;=}lLa7QwTLfnlZ;7E)ZD6lSEp9LPSG!-8i7stW?9RQ)-!ESJ5)M1bOmnB-$v=~ z>N(!~qF;N!V=#9+V`ymj+K9@i(^%e4(XPYe@Ap_u*nX%F?ZVU&fO1wAboiE zvD1@X&wQUx&4#@^^E&p;g?I6D7e6F^y!vnY=jpF*-?-n;{CNBG-LFf(8~-H!QFMU$ zmCI8b%45pu>3GU@O79p_@pErOBXud|ByykL`7RYP; zY>0a~_Rk$Ee$!CiF;jeBpZ}m1VbfM*jUQpI?Fn{_c&3Q~0FX}A8%8EmR!PM!zo<_I zhd)K*+z%JtdWNGIE5WJ`}w9E`{n4hDJl+ez_srfe#5Sxl0y84p+D8Wgy%g!3*aQR_L+$1WOzfi zt34GUiGR<=MqL-*U}9^}|Cr?AbWSYqeTqAJuui-k-!UGK*+b~q{-t08@x-?Dh$*sP zbBwDW)m1t^N5*PDvAN!hO}x46@L}xv3)8*!IK~N0@p63efkKQIp?s`9{|K?U4;djL z8?-)jjij!qx%0+>r%E=M`Nh>Hs~^10u_5bqpI{e}LxsCoN67W4t*l_mlH6YA3rcP1 zZstvDv7<37i+1K^Bgc{V@ybhf1edn|J&VUl+4_e0iCx71!(_3#k*-V+mU>PzQ7=eBE6k`jI z8#2uxbC)=_GQHRX&nV2iuALXoF!r@wm{`ehX%6i`(JwVkdsBE zuaKpN1kec*H^=V`Apg$eAo`JgdD9bg$6Z$AKD2|wNv*$V)qS_vD`?qUWtAB;P+LmY z3R+X6X2>e~x>~x^dWNpB>)~g5(24bD8)(}P?c3!_3)pk0Rgb1LYRpQcz8UC+ouesl zv&@{J1+6PtFN7xxp7G?t0y1hw4{`b+qmIvZ+Rc^a+#Bpt3& z#gX4y%Fmw@7I+%VcB^1A#?tR9dG+0dF=!BHC^25ZW(b4 z2ivi~#Dd+?{4ANwnv-h;ZeekxAMGPpB*E6p*97k;TMsHCefHk!E#g`2giB|*szd37 zHjY+r9(X(3w=*r-n$HsRAahI1olWSQpT*4yZ_`iunhRX$kE{{AdyJfuw;Eqb2X|hQhlp|QP}yA} zhxfW>pI`}^ESci<1N}vhxRr4^!VR1lpU-?2JKFj(&xeISA!*p%QZklb@7-w9`n~pT zy%o1hdZw0xLWrMAJppLZTG6N2SpigV*yj%KIZt9^#vSIA9j}mI>iKunp$^>D-Ez6s zwrv-uMrzc&23aF^l@AqM7NTT%u`K>Ysk+Y*UcRu?MzOuavp$w5cOT6dnZH|mRrB4N z=3aC50g1GWg}5&oYSSu+61-|`jP>Cs)*1PXao zi6OnZr<_F*Ul=(6zbX7Upr6kbY~Gq0bDr1L0`O_&Ce&@RdCiFzX->VZkGkMCY*%~h zq;ivnwBxWfOIuvOryPzI?%UCx?=MjA?TxABRkdS%7+f>?dfTNO6VdGcsGczVwLZ75 zVf@QFqjq1yM(Vfb-vnO8^@i6(i|nIypNX>(ziT&;u6c?iXv#{9AdxBc=-#Gnv&{3o z#+^Ql(=xNx#|%xXO4B8}uzXhjj2@cxtxlJ29)YMyp__Ta#G~{ai=)CM`ilwAtrOyz z?)@F+!ZS4wTCNM!$&VUu^SaBv%T>7OtWeozPH}{)RLU;%ED(KT$t>LkEzFmD)^trY zp4(R49$tT1+SQ^hTTeROs4X2W+gR@}Zpa+0r3*#jyCiq{63={5D!0v2CQxP{+MU>W zXzTf{;?$QCE!>xPtu3sA*neRbP1U24wNG=-BT9%6xKsc=$&vV6>^akIx6 zo$H5)UFTXa_tlHvH|^Z|hZroMY#)c*lf7$}WSpwmEUyd?5s%bHd4hzI;$>DA{58B| zyUukC?S9#1+gdbgBF<_GA8aE`$kTdqAmuV%r$+`_db4Fo_-b)j{eDl7;JGx_DvNiV z|8bX92WWCdXIJa$z3HO6jbF#!5JKhZ+jm1WW&S;!3|nbkM@ZN^(T~O(o`r(;+GHyR zk0yAxliv|^>P)9y%gZTS5vuXj-uw8c^_R!SODANigZT6p(wuF^VFyH~TjZXJf{HpN zt8QMLaQ`50#1!A#v|_Lq-@~Ezrr|H3pKkRfc!DC@!w56UN1MUK&fso&J4xp9tM)zl zqUml4hYA}=9iCx)YfKslqJL#y>d~Z!pl!MgXxEBFZQ-=8WSb@$tu8pYewxfQC)|n*?yybhkQh8nwC8lFKQ)*jmWJCUrD!XLEzT*ZpA)yXw|t zGC!JK6y0JL_A$3BZj_RT_2tT5FfVS~TvLiH=}40}7CN*vi2RZ~8lDRBgD%u<<_TQw zrQMuU=7Azt_S)V@gR>oT_59wR)sN>*~sbdSy$b z4X$7bN4VGgnb4j4vggIX?y=#z)*kwh55uwx*QW=6&?et%5BSz}wM`MeA-8Q51&M0w zWW%l~iK+Ocg}LB5e@PE?pnTu^I*&aA{jq-yOhM6L+ggqIdn{)|4Q4 zZKS-?6)*lr%CksO20m!D*UUZ^b{ZPkf zP*kmM<3Fx&ack`o3#=eb(A6@u&j&vx*s<#dzJ(y)u@yg3Ryxo@(8}4|y^pXx#;@Z( z5$iY6vWf(CI4_SScWgk^?4xdM{xLDjfC*xDR?|TQo8cVV81!jBffk>=Z`%aTI{I?^ z2bzr^rP+lR=J2V$m{zxOz4S2MusLPVd7&?#ItJ%w;|qr}xTm3>eQZu^w&T`mc5gJM zU59na573m#(sHz@6EaITj!B*}o;BUseZKA+@8+naHVU_WJ4f;c(%d^Jx}J5U>yvP4 zv`iG9I7O!~ZVzUNr)8HlfO^9pHXW7RrY?nuk zTeM*-Q!MubHe42bca+FXd0YO^rk+k*6xT4Zv z*Yf(MfS6&g+W4e9eK5(skjq`eqG&H}%N_m$JAb(nm$l)#G=ZHioI9Mq^#$qc-qiMM zuwOe%T66$`L$wW(q+7jb>Rdw}cBx7qcMQuLjh>RT9HQ{zp__vmq{kCi zdfZ^|#~ybM1H6Y;wn7zDOk;S++fG)Uxz~l}Dd|$X(YkL!osCpU0k=}P=MZRgf^>Hx zZ~Hpf=P`KC9YFB*w$9s0PkSD;ybt-^Y2C2g>s2$b*39lsU7HBD@qlDG&s7LL3NP!6IXJ?-xQ&G;i!X;Xwd;@CC8KRcG5tQn@9$RY-=f8>;6~>Zte6 zl`(+Gj1%Q_o#N)h99nS3?8FH5PBeb>9Q9xTYTzt&%GG7-4(d(Imn|@wzA>?`hz6!< zPMh=RkXw$s^Oh8sA4=xnGmh?IvrD3jMuu790Al|h<`q|9R~OU5D!sXsAzbewD`9BU z9L_GSMIbjHGm$(fPCgha8qFBn4HKM-uG-PYcL?b28{zi34tDl%9IZ|?ky)qKpQ@EH zS+uw_MooRljH52{(&DNEDKdJ-#c_&sHo9ZDUyKQO(tAqi;QFiMEboQ2ed7e@kV$CG z6V_Q;&gsI=awPf)qLp0SvR~TxEOY6u1NDv3H;10p!UC;()g|d}ksWJE)bVlpK6fv zADR4+KH(gp#hyYAL6OZ<$i6kj&-XF6x?~pb9BPxqY})>)X=Na{N2jjMZKT~w>Sg_- z!9%FO!CxxiqG=mX`Hod1Yp3kDlZ$`u^Xyg1Wbe%GJQtI>UD`4p*xfxTA9Op}cC%); zjj{ZtNM{2~8pcz8Pa<^UB5!;ryvN;}q7!5A=zas@1i?_!OY$e2tac>bC35nQkhhWm z;R%#6a*2}(Esiqt&Hxw4+I#IdZkl=bFa%$~wC*(~C^6)s`-B4wYxD@Qj(#Dpi&RVJ zhwUTZrk6UUQHSV^*OS$ewZ=0|)qf-(4i;e#i{5p|;RHe-VKN@hA3(tg)jXHnDPj-j zSeWAGK{m*VMKxg=zN|$bYDZkD#niPd*!_ryJGLZn9{D1uDEJQTN7^@D{dMKxOY5To0-lREV=OyFazLB{x5zIC-s~wt{n_o(u?%Ce;~?kX>hgXF{Qog@ zmJLy~Q5ZH}yIbjQ0Rcfu0V(NFNkQp`h3%f5o!Qy$f@SIM77Ro|#qLh*?yi>~@O(e# ze(rN!i}5#V=O;3Vg%uS4?c_*Vy~Av313&ul=2GgpPiG#K5stSE6rhpAhqbntp`leQ zH{9YbY6%4oH(f|HCt6h9@Lxw>sRSL?P>Tge9yym<-)cHDr_AJ{U4IqY<)lt!AtrBh zGc3lQ7z{1`ir>-Ul5m9ZvF_aVN2Dj^^Bhd6{=)YU^q6(Hw#js+K0dRz2CN~hub2Y2 z5pF^zjNinrqCJdTBu(5f;|{sOR~NLPOxgScKhU^$e>3)hvJ;Jr*^C$6AAn&-e7Oz4 z2i}4-fC2Ot`~sAKeD?%!0TB6gGQxpg+hA}zL+AEAI!Cx`LPC${7j!MAJ967q2;GX~ z!Z4z5N1o@uX0`GOxi37 zf&PTHRkSAW9j$^tzAKt;%*FZ4rN3cY+m14<;IlWjP<}PGA6-KEQ;Tl9Nu8;s%SWkt z<)>)Zs98$aJag(p>DbOoG@8hN+ZB2?uf_HaFoN8?wx43ryYa{&ievk|)<%j?(*;=% zrMUJV^%v#1HawR^4O5rzETI0AJ=)eu`z?HLw-VUPX}gLhLx(t{9c0OnQA<0yt^2$5 zJo#zcJnD8zc!NXE7s}l#|DAf&3iZ})5?YhwwcRFQ9nb4Z8hO>puEUqe24j}Z56Rxc zFQhBU^xn&qTJp!XlQ~3+u)Z$#3Uy~?&^8<`TQ0WSLBGf6UnY=FU4{-Dk}jNj(7c88 z`KVNaB72X-Q#O$Mdl%%apv1LIYZ<8~)pxdq(>#=y?UL!;g1Yk|`~fU}#E-WNx2?g3 zI|uhmw2XZNf13Caxj;CSd71T$csA-K%Z&8LYYkjOneP3;Vw%s{JZ>XUvHvh92QaD| znP#1i3967NI+Gw{k?Ca_jqo@fj9LJ1q<4AtL+5}+R>{y+pyzZA`#$f?&>Z9p*Rd7ftyag|Bt77IRyvko5rx*%(tMz_xIX~_2YsGtvx{WXE$L>>Y zkVtVROr=PJ`-560I7yhf2jQlSOxU+0fIZASTTb zlqe2Z$~!IaEBwk$<7Fi+=d9#tgBy|i$bHvitg9?5i)hwjh%lTb`dwArm?HGl%#gbB zIjS+bKKF-wpwNXQkxV8|yQG9)gJY0Qe0|qG)>h6I3kA$)ZQmay@@)|{6bV=jE|LV^ z{px?T1a5-n>-6ILLp?WfDRO8!_g=|r5*xa^`2c3zWnVhPOWvJ|wMmQt;K}UK1v_hT7VxqeW9cYE%^{YAvTx z)j=)B%M}}_xmhA<1696rKAHPVkfT*g0f4d+^{M3}`6@N4J$vJN|8xGu22=>v8G^JeQ*d9Nl<9iUpF4q)-+ z3`Gd$v2?YRkWnNW6`hN95mX3#{kS|fx5tUgk+F5nHX#>asCA+GSHoSEM44K18J?0| zt9*wEmK2n4Nq;M{P?X2q6imCC{F1rfg=tPg&MI!F83svZ{b~tU@>cYEa z@eMKPnQkCVt#OU<;rmsH{8n<^=fZ^v#YE_9Pj3ZsxL?El#3M+!&rzY zo$UQm_DP)CPD(o=G;eqn{f9rd%ER|Q=Z`AS31(Z0C1&4P5O-zu%$9HHFT%mbxfl&C zwAK?FS~RJxz*(jERBXU|gr8P667b%~Wx>Q-_O9YtWP;Ip{!i+@s`O@Ss;Mxfeh1|$ zb)veJ(pF?t=|LIV!&g71d<);CkWo{-Q>0PUDSLO(Dw@iuhd-ANXlaedSZRXYb+h4( zl*d&ikV#>JW(_kr`Gx8tI39LDt^h;5O(YqNC-zZ7H%7IwE6pT!87P`BvYpuHucxbQ{6Mu{B|j-y{#+d!dRB5;zS8TJa9ni4{tE9pk6st5P+uPdq8#Te~_mQL??_n^%+2MLubNjTa>BGI`2oa~6sR`!1sY zFebZZW1zCp)?}=CMs>qY?4MmgO+J2kAXGV%5V>WUs)pEW<17m#hwFb38B+Dc^xhQ| z7Ne&lmf}~MA-y4ZZ(Alj&owX_;J#$> zgbUk0bvn{_Gz(jnqipM4>fO>dRz0tx#!4y%%TEPlDwT>ATmF;M#nHAbA(q!+^opxO z3I$#5=lXl-^P96e@07f+U)U1A?^D%C-HX^g6@a!Nz+0KDnsR$4^_K3kMTAcLuf}V* z@oYn8z@cXtb8N+acMOtqv$q|)CTUTJ2li?Bj;3?CZ`%&kCJ@}5CN&R;e+<~->!B=Ztqv|S?igs*C3QC4h|)YwoIPU970R2Pef3Sa7X zy>p`Xv@6VQBa@IlmNwweoS!4^x(ym9*0!n{g0QKEM27t~M)hLgwbQ-wZs35WhkPs0 zpkF5Z4b(Ab53Bjxur~cR+{7G@&eQDuiFqw_BqHooeHhDp8^3BkyvljGdKg+_DVHTO zH|YNr+JoD`JNwJ!3ow8BJSAB@#FW+(1w*6{C!P1L1xZ)~g4+OfYl`>S3c>n)#4 zHE@^#N&qn%!Qr7>ntaUTURb>>`+J9r{6nHk(_87nu+iE+k>9qyN)jJ(E>`(*u3Onj zXCqz)=lMUO+n{DBs4fn3wdZG*fA+KX_KMO(+2**FHx#-zm6AE{>x81vY1Rw5f2ZNcSc|9%Oq0+;yPxMAG`ZB5-5cm zKUCeME;MaW>r%&cZ6$Ry7G7s!K2w;#_i!7SoFdyF%OFJG>s<(Z4ajTj1Df6Q8oU6k zy@$3Ph%qxz%>ev$?~AJdf4udv6TBt)dk>XztW$(T28b&9P4{_LP=L4h+)? zds$^AGsR4yTnMuDu%ZdZIefs;eyMXl@nDWfo6#UK} z_OCU=EJO1d3NMJO_ffQ*X@*Z5yQ{vPuRTzq(4?Fnh?cg;ICaev{R?>Cd_aKqu&mAG z{%~;B%wmhpHe6>e* zO}^OQK~k}h515~qb#i9vzZA5?fAIJtP^(Y=-I17vEvZZU7gnodayt%aECQ{Yij^ZC zs2V-#P6ti-h;WYi3)x=oe+GJj43^^2E1XxU;>;b~$FkQ0m+{RQN9`FxA-0G$OpL&F zm#9cl_}>X4GM1R^2T`7r?%IB&-KDfV)SxM}6{jv@Xw;W|Z?Sml?aDbgBK0w>gICe! z6uS~`(A?tz(l#2!_ZRsS?T(#2&4QkNKd97&n|$&>SpoZT?_zWX!mWtMoM)k!9XNd$ zTeK1{f%tKKLX+&$~T6T%j&TcQGPICDzN{Cf;oqech6~9&3vILcw5sdyI z_bu?o_DdG-rsJyw$9z{4Z*r6E1}QLW@FuAY%#GlsUx!FSA$gPS<0%J1q7ov zYxwzS>=Mrn_P~v`h3gM2I_gr?)BmE~qQs|bmckzOpe2N! zTUJ-sn0Fc@sC>Umj%!q{_UR%n7JssPOTNi1x%RApdOUs1u1I%ubDMo}-+mAI4%FVB zL|R>$b1N-x6UMO)+2w@Wr3v?85RS`^ZJb4};61zgtYFQ>tw(ki_DpVQO)ZWbGn9d- z|Aq~ypGqHg|IMvMKX2~ZIgVRjy}>7#AW=GRTuIIs=wB|NeL^K1UPOCVI?-H7yNO;a zwWZy|WKg=MTh(JZHuUXy$Cyj>R>H710wj>~tUfVll#+`8C6;1)FoyzDyqe}y`Y91& z73C8JOLn8iP)4&}Q7=)=qTkT)RIRreJ&opR?FSs9FFjvKaz@ULl#vvymWE)`TUa7m zO^%1!iEqh|m`^hwQ>4r-(RS2)P~ml!#sTM9vw)Qh{#g=%DU04;Nn9+MU)L}l7EB4+ zNwfJk36rD&-t5f($Q+Jml$ydpuwF9iWw_h=C>>zlIX#YduId_Eg1@ARsoh3MRd3)E z2;UWRr;~tD>AVd8X&S3>lo9zVf0I`>)th5w{fRyg{(QAL)*mnkJj6lLQ@i{|8?_>8%8gw}TpD;rr_wG$W8 z*Uh<#U)PZ^z2&TE{Ff#pZmDKRt|PJ3x4h<3j3iHOcGH$~Cr&KE5KkTMv&1?d3)8k^ z-yL|zaluXWGq4NrC)&TJnGwD=_(Y76!Yd;^ZwEh>+38BE;smNCqD9P*qo#$asm24^xnEzW>S#>&H?jPv5u)+q)!jqOii ztmpH~gO*jBQ4~(YRF)^z)4ElMchKk?q?g>T(vJ)JE!%(*cF{13mOb*Y@deF&V2N~s zwy?{CUPb-VvZru@wychnS=y@ga%S zoqAyKEPXAtz3WwBH1%}zo5cIH^)=^$|Izs6EVm|lpme$AW5Ac&+t)3ATRcz$ingQ7 zg`R?%(n9hSU#Dy=kIL=EY>U_7WMUr$&SSgdTU^YM?ZigYy{u;Pw_d&wB{kqQPAu|(v1E4`>pgJ7e~hII$eoYEB>-&Z3C{!6U9~(z!I8>F&QJad zu82L(%_TrcCHqb`#Og&TyN2OMtj+#t*a`aSJPNfj&zMP|G_a{NgY!mpSHorBR`_w` z$dI%P-@s}RJ7(R0#{?&KdBKZ$B!3&Il(W%!0Gh|TWp;~s6QXtma+cN(SJbm-R(Y}~ zSg$HZaIfK)s=zEic!g|g=VfT0n6~{R^OnHCxrfQ*)S0hgX0!C#cd|3vBg@|)2~98A zMy${}5-t{wt6H9U6ylV3?j$lFE4;TKXQqn}Id?Pl_=e^I%*6<~jfuP+;FKq@9(21Q zYWPO$ee7lEMFTA}8nUQfzjJzQD%Wn8F_+0_JGX*og@NYz;5fUs^$gN-I8=R;CEvdQ zF@=Ra=dpXC`ZjXLTjo^5(%7ra9a_fr6!4<*nzI~~idUN>Ade%i7gnq(j+H)Cm6!B` zs}+u@ucgk?hh^dW0>vHZ%TcL9J{H_|m(RxUcIe@D5YvrradgT1>n^G$2uq{^3Opf) zv0D~QIE;#vxDcK9#*5sD*CU03U{d|IAYKt!=pg2FQ96y&*><#s7sPW=K-fwuHYU0OT?$?7RvRl&$&7Da}EObN%{-pTSzisR#PNz;iZV~N*g#& z=ni5Pn_LVC>k;FW=ltvNp9q*|0=?Nf$N`xz9IBCj;CGX)tTu2>HAz+|{~`P-p-Z*2 zbP-D&QglsFBb=L3JiW2rkMQJf<=og>%RYcyb~ud0!sksSto6+ERVt~n%2pUI?ymSj zoe&;YjTZ&*AIPireB)V4_~EZPVj*oSiLKAWI-FpgWT%>3hpXUd?N!N-<^_U-;+1v( zsJ=q0s&|Da`LPv`_XxT5%17aioK?~rTT_u*;W39xtVC|D=~8$rOQp4y2)n5Qe^Gs# zigH;z4YEPSy!z5&2YA{P zR6@kXRenVEX5TNrTsA*GRe2mO3H~UX!0vGWBfgF|u?2;*h|UIFULKhwZ>jac`@*;? zeY_U?RI>s9FWX1Gi2%oSDdLFRg5#xhl8L)QG)OkFW%IvMVhk<0In*}UWVHrJh6I%r z^c&c<cTE+00r^ z274)HyPCv0o%u@93RmxLmi~ZRgWANg%+v1Cf&<_;+lxGV(A~(GeTKo4>S*1i+rZZq znd0^61{GU4BQsZifInyVF6kn!UJzA8VDEB|;eTd{ZU1p8&^04E+kt5(0j7@t9)qZI zMD-T!q#Tt0%bYFyBsJZ=ND?Ya4B9I^z*oB`@xwV!?5sJj5J#hPNGBv0f6?^SF9cVs z-&F^dT~``uxET$yRMo9rhr~zZu0ak$cQM~Rig$)TW#`AialDL|AVKhi7^8`5>tP&J zbDGS{K*eZnQ$~#Ruhx1OO1w|q6!=l_K(6QR#zTpic99$d?oZ>btgoyiqF)-L-ouO> z^{$SRvP}whvv>MG>51B3yR5{fl{J9}1zOc+_mw@2Wtc#dMEEUbA|dNcA>ref@aXhN*7BCs zNF`xm!wyz*-s>7X?3sM0av1W6cv`-eS>hX@C;<<3YSS^8FER${a<5?;PorMCei{$`uf-&3XSgkRiYxhd)6s z4KF&Pa9y=Q%>}tCt*~w|Nl|`D`y>3fa$~uL&uwXye1{8LWFRWFw&o3R&l$F}0ah2u zb?8H}K~aA1pAwgS%FY$2gq=rPtV(->zSeI+`+M%K^1%M*kYDbOdt~M+cO<;i84{(D z7mQ%PWCLo?btWk?u{GW+1EtD=Lemy?I(nL`c+;h?sh1d?uFvb_|os>Bf2=D z7j-o$wm*^jr-;(UrSkTHtz*>fJE6wKRQI6%nqAZsPk)V&TJNA#9;W^_dn36|E7j8z zY^8lB&FY&8e=0KV41y;1xwU}I@tu3?C&5=i9n~gasAoz=A>+8iWknAo!aP#^26(I2 z%+Cd?iKlw*3p9oAJKT6f`<66QIX`y#*PUSJ1a(&#vp#zg%BgUj;}ZELD9OB0Y{sjZrl65X+(5xr&Zm20T|S*-N%deJ#{?{mzM$vI35E72U* zIsFOl0F*&2={i??yzoR@xc2tmOO5RnCb55N{wXOztjbjBEl-~6xX8niDzoENSR@Fm z*{%jNxry*LqF+~Kvqj-Zn`vF`-mb=JRAcPvn!^=#L1~qX756=jk6t?lk89rM}P+J=tZJgc6KU11~8#^IhB z{ZK6@Ol{DS=#j1$ha9oNR;LR_%CL9hdin=&387Cq-{RN$#I`IX%-?KRH=Af+b5Zl0 z6l_dX43mW$UWy)3E*7U9E~gr$Yxhr4+Tzai=~GZ)^E&oW03V=T|Go)=EPm>ISA6jY}b?s@o&*VpJ9LM}A9f(=QJci~8f|b{!Mo!}hf<;uZO>tdHUVu5MaB(rD+Z znt&ge`bcL%UV7{J_27l#=8>&x%k(e()LXq0ntgc@$*EO;7BbQ=V zq_StvHH9SvcuX&sZ_7Mad~kR~OU_u)A6b4U-mY^%$qd6Z|CNRMTGj=KbzRdcVg468 zu5y%f$8^7B8S5W9 zww*wk$4fIkCqBepqIa7Iz&_W)N-yWXK60t-dExK2VD#7Gm-1HZD%4ThJ6u$mBF_ll zhbh^KBYNSIw_YQ!CZt(UQL{+RSFDQL@cRx=8%6Q&T98r_0g}xtyGOL5mSFZ0@8sOT zEhJUN67hG)Wn1G(GbpJxW)u~*?Bd_w-u zW|yG^F3~E?U9QNRi`OETY(_}Op~q)zvfng~4fW-%t&`U+DbTBu3icJ5R}2!yOJbC- zGQCSXW%|*&7;n*b?>M|J&)wz@DUtQ&)XA(5z2671xt1N1HBa)lHSg!g6sFc4#y==- z)Sk}}m+Gj`MfIQ$%i6tdaecxVn{TAq?C!~`EVo1B1Eo2oLp9ZJ^AtTIUO~a}HY$Ey zv2jCI`g>Gcl~dFXbgJs8*FRjkWTovA;$g1+$(qc86VLm#*&mO*sW!^fAO6CvFNp8G zj>{-I+$Ky){4u@P; z@&p@A{#JTAZ4pI_J{ta)nvcEUv6Kc9{6MnXGz@*<$nUZnd}RlW{>YoF{(yPNVZq_p zyX^I)jre)2OQ{i)8DKp9tO%8Jf z`he<1$yMw+IcCoxT(kIZ=z2oF0NnDPMB+TM@}b;i=^W&in04y5G@(c>QbkGWV8d+C zsqAkxrep)Atm4fcN8CE)&XD8y*OJ;TS4b=P<5uYu5IJ-JC`RoMX}(Z$vG=^ZrF4Bq z00UoE+|*u-MSrbbl-!Q()Wn3K@nS{Jmi@#rQJ58#;>9r-sVw?B_Pp7sB;f!gpN(o6 zSO(lEThxgvdXCmK^(1>@Q>)K}=;0&OLtA)6mIQ4jqx{G99jXDJ=Os3*2IU2X5)9}% zy~&?oJSwp)oX==4)k*YY$kA3o#~C%)*v&-7M|_7_AXra|9yA7)VM6MT0dug{VsrWv z>_=)D{R(b8e}aAwKa^k(%p*(&{sLl&UpH?A?vo?UIv8V=d;J;I7W&3obLtJ+XW=0A z5v`lDk@}NH&FiMQ&`RRtX$l%W5Jxwl)o)%ze@uH}J{R~!-_hGbzQ}n{&7_#K8wLK9 z5G0>GgF<4tN9@y3c?P6~ z>fJ;`Qh~xQXDjK4bkS}ud06-|Ac4}#JL7VMdWS7HKTeN=Lpz5FyIV+=9)w#B05^f? zTa!h|BMwz=&8{aUs@Lz{G;D%LrvYb} z(B85Je}(8!_b%I*_)vRfR~KnqP4~Y?J}=X8si*1-Bo-@Z&Fr=9fAD?>|Eu_lKRf8c z*+dBH_Q%H%F1K1{brJb>uXn|h@Rc(E3NlZr>w-`oieL*{S|P`zd5m{F_p-8u+ns+G zrg9{OT^N5ht(ckq6Jet0F`caXvRdC!_zC98rnPViKGnDzwj-G|HL`!9S1X3uR+#w^ z9tp$TMq98**u!b};Ulb?LqrkTcab>L2qcHP5GlSxg;sJU5+{`ItzVd9(-h4e(qfS9%r_vWgkc znNx6j=@OXQLxfNLG^fF%ru$s2G#@Ut$JsgZ<92ASTXGT} z(TeBNhZ^ps4AJ@3W)TPJ^77&a(SF;>BW46cu)MP zFf4zm$e>s+$w`om(hE)Ib(Mv9e&On4D(qgchwzq$I}jD|gSt}kxy*{QUL1!uC2kZB zqyOe@5?El~BnIp_)Pvk-5wva|1C+P5h zl8@$Y=KU#SuW44W)4K;{Hi>SwPbgf z7iOJBiWUFjrVnAH<-up+43VRU3R3e>X-N6v_Pd3K`2e}IyH##si+;HO|rX|Z!YQ>G{mN9ENCT(Mw6y#y! zjjV;N=9;nHe_^FY5*z{bDdRk1m~SPkH(D{{c#n*4fzOatycF%h+IG66F98;etOD?um z?m-9cg=9Z5VbR|t)mU(QgD3>|Z1YFKEJD835AHdVx&8qAEM*3FWqA}SiF`#hn?x+y zD{m*sQ?E-?N#~;T#3p3t?b`(($%i*j@Gel&to1o#)J+E4kcYH&oDHf8=2p@@g#r{7 z@?}AchpE1j*$nUK8Nz8g^7eWB(*S<+F!v;|**c7U8(3!0hv?9Mu>+I(H0YqnvllNoxvQ59~5r%|bJpkvc_@JcQUJOP8)H zph=uXr&IQc<_e&wGX6JSq~Ceo9FFlVq!-tod=`#eOy1GQoeFC)r)o?y?ieTx5-5Elh`Yv7~Z`dLrSQbW`=o z{2SsWmGk$E2%f8*A|LXe%Xj-_bC-w-oBP-ye3kVLRwMg@;T6~#j%Vr1UbUGMnkBCr z$MQL%Q?+q>@&$F3CnL2yt=hJ zUt3gKlhIdYS5_VuSMdrx5Tc`M!p`=#k|*P+j!z|P2vcU$p@*Zy2r$I zsI2NCqJM^CC6$QZ{i-~IczMSur70=d>$mhLd6DBY(KYf#^P~Lzlp}gYoQu>$l%ut& zjM9>!s!-r|x>mCRh~6zyy{6yZA(P*vtGwPwCh3?>GlfU#=@yH56ZB%eckF+3F2$ur zmjjk~YIWI8>2BrUSub|`DlftPJ5aJoNa6KDe1TcD$wcq~?6ZjG{$bqHPhdwejLAo< zjU*1m&ng{7c4;rmHwdhD{Z{BAJb3 zL+xbs;$l(77fov#TlHEUwM!~LFMk&NS#nWA^g1H^BwVp+58syCWpS5-MX(0;tj~~& zbXLo0cvGBMaiHcyTDYoDJ7-snT%!IJd{DxX-|#9IHi-K+h48NOD=eOJ%-M$x5?GyZ zQfXn&iCm*ButSu0BT>;3R3MG$sDD|6^SfM4DiOKaSNtlyVdtbIVZ4ohN`B%lY(NW+ z5VJ}ryHF)BvYxg@qNWm$H<_2dj%cm@j5hWg()MCFZU*Iha0YgPikbMcCQ0IYVuQ}~ z!6cbhO6};t-_BCB$O)?wMGXan^a!{nh%n{XQmIE2x!J0ok}~XYvJP^D$uSXzlB{!^ z$D$UN>b4ux2eURc>(gBm{p-HdE=1&2U7@l3S}Mk97`HHGJ&j?vUy9IbO|67wwEMc* z+!nee>RRi0#540-<3rY>#I?0&pbrt@+D_&dzn=0M=4!VBMJ1SI_eG*&^q2yIDu#*f zZO%ua71hu(DGbiM)$pEQmhi3SCATBOq4FyGuV1tJG?L}Ul%IwlZnP5Lf=W$K@xL;S z^gKApjBhBQ`LFz9=II7^X>!8DnysQQ5i2Vl1R6iF+J+b7#*uI2EZrC*_GjHOo5wGK zuIRz+C(I?Ng65=()0rpgn^hwTm#g>7kB0x&v`bF=(N*ojOKud|0p9(Mg`!LB4`!bH zIV>N&qimS@9_7=#q556sXg#5FXF_*1qJ9*9N|T}31s1c_ z;JN$=?!>w`qGFNL#r73~tty{~wJc0TtjPs@)RTj(U7aV03dSVU_2>Iy=JCO^V9%#5-1j zsvOc2!++9wlm#15f^}4rtnootnrYJK9vA9Bv`za`YFQw)@d0(0=kJ<+Dr(bfO&PVr zsz*6JtsBwBUugSu=JV}or?V#eCt;oBSzULbdC^;2Pcn4_H4QajoR@1gozd&$Qjx%L zwO*#M1162$iB|&z9f(&1cxT=3YvQqzjXQ60Zbk2Gxz3IWY^xt(z4nT&Qo~hF`Q>;h z$2vit$_z0M5~YISIf$%)@wyqa<7YJl8=-sFkB`0^tWap!cnmZ((fn9ZSVZT>`7SG=_{VIhs zY~3ykLZXaEg{iQ)E`{@vnUKA_=aObla!yC2>PmD@bBX+FU`1WD1g>#8l7W z9kXtezGh!Hz9O8@a@OtQG(dAsjua(i?&zN?KAE$k`aWu7UIVYWw61V1emitTsc0GH-zfyTVJ3oeP88Vlz_J7>XaB`a>!@fNZH4&ArGnLQD$Q!|Tz>MKI*N zw-#m0ObPcbdj;}5!f`7YqgDe%1@PtwKV3)md|D|zI^FWM%W)Rv!6)*xg1E9Bg|58N z)C(nZISFBh%Vr__JanRIz8c^UY z^-5h)Y$DPR3n&fd{c?YW8DkGy&m#!n@I$=4X{{GpN7JYMa>~}sJGEg>t)uYuoO>fq*xHN(O=4V8Hd=NAZI!lG$mnVKeNoFB&*RD9g8|4rD2lF7SOw} z`RItkOSo!GXVR?cw8S=8O622@x|WgiiF9)bwT+A##Fu!JhU)`SJ*2ndyQRO#>u3S! zVDhel8q5K5SK<=fK8kVBLxMAYQ}izKoftmsM1lW44}8VjiERQ_<$76n2Y zDgGwy&z(R$5j~H4hh8Gk50qewxw|(XA($XU3xuo-ak@=%^BZ?+tMl_}Yj~#$J+)Ve z_lnn*|IS^AGF4i|Wt3$~g9H6B_k{7ATkvh%NQ(~AewIs@UJk!|ZsobW^0p%0+yZiA zKhdfvujXD(ZVA6~#_s#2FH|c6K4H+3KbwX4DE=vnQ>0u()9ID{VR&(+N#5MPa&AWc zm(JM)PT_}U_w4&6#98x|nnFN?{XMM*}Vja5@;VDtTIsFQdLCmq^N;wsZQfERgl^C12q;i2*fp^6v; zmlHPr)(KD#+jo-1I%tVC|P6M8V ztneYA4cZ+4m%&P3NqE6n6k|%73AFkSk^_O=n;ucF1A3;tv<~`*hBEXUflxMq`N>}k ze#4&UB4q}+D)#rZP<#_o5-lXWWi9gEOWFgqZn{j_z>G2dOk2hHU2jpwQK6@ev|S1V za5kn&T370im5L4aDRF~>n&>rzRXl579bzMUWYcjn!16bsFSQ*3Oh%FKgDG zVfdgsD{@g1%t7V5z5lSkWQ3?De6i@K&lGVDAHC@?c>(*e*>0)>9A9gLs%~2&u`Zoz znhn&J{ir>Jnt|D%jonMb7O1D9yl~&;Sw0Pf4$=8dy`&DFtr>xGkJV6uF@n93qf3SC|`%Ecmm* z@5SBZXJ7+rdBF%6Q%X!0fostV!&r=Om~pRvj2}3y{Ty&Jq1Q+Y4wAlCcmZ8_GcF9Y z;fF|-08FsU*8=f`uB193oVY9WGLS#)}zOsL|>}G&Vzrqet5h z93y7Y+JKn60h*M4H}M^9m@W!Uq|c>idL`0H^ho=8z(#taaSme*9j7Xx+~E!*f2g(` z9-)M~h3%btlj_5ImKaH;!c`$ps9zz9*E*VnnPvYUJs;d_JOE%A>B?v_S3VQjKz<{g zgKwg&5#7qQqIe6c6GkZ#UU3MIs>ccPd_ld1INHyrU4ZqCztBH2S1Zy<%*t1+EYg<> zL;NDLgGwi-oLnUPnGi(2BfcN9g+de@@jOo5!L7AlO52UFO)TjM1j#kTqm6O!4U$*w zFpfupv{O0eq)X*f@l)g&#qAxBD03tiJ^G>6ojZ{iWw8P6tREO_Hx1rw0G1D z#E>>#{E_8DWA0+-_X67R_1Qz8Gi}*4Serr0SdMzygkse*&nBNC(mvLyNzW>%3F|JiNr*35UXhNg61GkkowzmNt(rnjppjGh4rVF^v={3SKOyCK|b=AxC9!$RC zPnK!+ciH=#j6}NRYTiKj9MR!I&u!I${^HM0$9bcr7cDTHcbIp&qwGBd7e=1^X8{xA zB=ag-ldY2E7DEYNMMBiVup+^5>G(Et-Wzm}6NBr5J!+v~R}xm}?M1ed=s=3}JZ2x- zQR0YQmvu^1f<2TFE@;EyLtpTI;?uUC=B5ycPATjg#2$;I2!?E=_nH+*si*G}|D+n0 zS&OLD#hLE}lazPyBm7mAOQ8%dM0vSY!dXVOa*9RzsdS4^EHZ7Tej1FXNoiD3J}fOQ z5H5x$GNbq?=A(G`X;#(jP#;bxxOr5ubF^@49P|omyN`I6u zFS&eAh9~E}GBM7bjgoB&!65qL*<0tpKl%5a;-NpBF-sO?!kREZn7Pm@N<81FPEhih zH>-M9`df}hleYT}TVKTwabr!$s=e>SHKIYMAgGRa%Tma^z_vH&W|}}RvCC@yrn7SI zR)uFy?P<`EbIhU()sj3Qz+F*QxY~WAw7vM|#!=CD>8QzH{wK_X4Ntl0gcX>dRj&Et zxi2)$g}e5!%V!teh_+Nll@R=&%9N$yTRw>Ipm%QU7209Rra?S0{*I2CvzZi(@vAgN z>*czYH>0Qa%u+4IG)9fe3$ZMJt>g+$wdI^B0Do=cVg50qlc}7WL>kp~W;;@LqnQ

EQU`iF~5fT1m8{2M^h#$Q}5u)@re4bY$K8MCzX3uPpg zjN6gjpeW=dC-uqZBmW{Vie;=ue?y@woU-LK?;~VsZ@{_9TyB<*TnE?a5m@sXTgohz zY{@`&v79J6m_(CW3x*=KqH$i!_P+umr*_LE&ll0!2XeN+gJ#oAC+1hZQCJLSmtIjk zSI^20k$q6)Cq+scrRO6HM4QEHx8LAD6~t|6;2z`F+xxJ`k$+~xtVb}S_YHPp?k!~~ zgj!|xYFR@?Y0_#*iYh$PPWVFhXL}uAES7G8xVZvH`_1eO&O@`4EH3N3z6taKvd+EU zR+R3Ua-->GCNuU*y>Ir};LFwMJTLFZ8bQI7v%N}Pyx-bF)?C_V_(XIRb8&qb-yZ)i z&#ZYQ?|teti?)Cf`>*CikzVjst#$Do?`!2))J5k_iovpP)=`r0Sa+jc!VrAhhNavO zq&2z68hc95r(CRyC~JrvubM=&gZngFFjDVxsygg>=OFoFyqh&wOeTyNjSFUzayATb z?o*cMM%OH$ly(jAX|TFnK(hC~q})JicP^0DlVhweh`cDvjBR-zD4%rv z*gvS(a%b0t0`F1`s`Y__*ln6Y`ln!`+Ji3ez9+vz4{+v77<3z(r9yYQi7~`mPWRRs zWP8#xa?aK+M9%N|qy5e5jy0%ghvmVEDqjfpz9gGs@}1knDzM$gPf);kYJ85H!tm2w zi&O(6ISv0abdJ$+tN|FVnHsTe+qRuecC*OZ_Uz28k!-96P1>ez$`rS@du!Xqt#$Kz z&it7(XXc#ud*1h1KEKJm?sdPTiB&qS=Ye5=R$M2jpBKNo&0k9m9W}pDU-qG!POFMt z=IH;0f7xQRuFwslelVx)N!{Zehb4&Co$JRkzGXXDZeZ zTvGJ)Dw=J-<{*5SSUd2k`(oX#zSz$BCFgtQwc#^AcXTy(#W%MGHI9a^Zu(-lGK7^7~7 zx+Lt4_LEwvybDWjHeM8-L&~=7AqSTAZ6s0t$>~`0oW@LAu`-2G9`SZi$fElX_qKAj zx_fo3=g+ZU)_hB-w_ImZi=QCHqw82*WnJq_+2WjyBYz+M{hOVdiYh88%*f75pD=0W z1&$)=!f-fuEHbcP!*}xk-hD=}#l5S2si?-m->i^0TOo}^>3L+$#-qY}W%9Kmk$uj_ zl|Mz&q`%8)qHmGx@jlmvfYPo!iPmF!>p>~sVYCS;gRMRrgmNXaV#88kPnl}tQGBw$~{}-%`Jkg_tZUtQJaDwtYHZ}hXUUL+fwt`CQ>-za%7LvPmt6_iH&Q+K7 zIXO3n2DNXJJ^Eub%OcNppH)`}yl*F~JUpI_lSnfi_nGWq8=G+lF;sRd#Mw zT;r{rJ44o{8Oe@)TMS{5N4qn1n1EMpZ#4ZLf6c2@&mG?xS1BnrWStKjfdtnW+8xTS ztbEgQH0Q$dD`rFTls$X3^4Sx#Jj_94#0@%n{SFh#h*LnGEm7L5_mxA`|$ zvd1TD)vXx>8)1mz5NU<*HGMI)T(k>;Wh98ZvlpZLMNe7RZ{X7?-(ouPCUVQ-!Y;#I1r_u?brK zFKWASLep=|KYFw5Ps2Ytf65)=JI$%;?Np3fnKhX?S(OxVi91<2$umNj5AEN4rKYbd zbr4bav;Ab_Dzr~)mGmU8*8GNim$180TRo9dZgkCTVfg6|My%!_H07R1!Aa%yQGT`S z(DDKI+U|i!lOFZ7_q60VHm<9VJPCiK?R^!3tZEiyhSKGxcM)p#MSYp4T!2!q*_2;3 zc|EP)6QNseZ|q0D96ly~kEtF&k}~lVdtO!UCq3;TWc*9})x0+X%O)AWdUgqBX+t*_ zREBNG_LbKh8BH?WK!&VaERIHRS$UYarhztCT$xHD_8iEd)4JMcMFg>Jo5DTU^H1o+ z8~$M(LyDJa*`Lw>8UnZraL+}ncyWYBgb#c(`B866yt??u3u#S z;^%9f$yq$_?jmYBe~LDfKA(S%|Cez`Fx0S|bxqh(R>-vw4WzR89Py#hrJ^Y5Lbohw zo=mqogdkN+?*vHufa~h@l)b0CSy&FxHl2GsE>6DdFS3-?)%}`1{nsZa>6W zrQ7gb^q+oB>lkiJ?=m=r5ZKks-ay*kF2J}@IW6eogA8U5fzwC9RMJc6=$=pI)>0?@ZqLu6p^Lii-@Zpv_ zFIJopTJ}HV{UuFkS}2%6nJ@n=xJdm<-!5EFzlS7=)-azJ1c@(mtP;3VZyqTyLiVrV zi?b3qEZ)=S%pT*IOakrZF&fWG@7?Um-RUd$L#e-?jb*{CfjIJR2lfH=bqRz~C{^F3i%YWMvrVAZ$5H^l`Ztc-~rG{9J)#yd(cxY_D4C zvSU0y;B_{UFZZamt<-Z}vqc$nO?y4*E;FsAuSUa;Zn~G-z@?g;;_mRT>oEa8M4g)T zE{~)l)r^i&(#c^j&2!3)fm_0Lw6)7>NF@xQYio@KtEqiv&M(e`W@OwjA7dH}_#_I^ zy>Oi_bx|YQKal3Go3BAo{8xP!dei0)Z6sc&f9(&f9${H__vLKk2-~N`k@*&8bii%l z3&U|&H_06hvo#d_gG^Nxfj`hV9tOOMOUKuPqXehQY;XnHIV%GEhn64R4gO&E`w}3K z8{#kqmk6gckGBelVQ`JShn&l$%1=|n8;J66bngljkjzZWlg(kh>d2XB$quIyeWCW@!@z$bGbpd3h4+hxm+O&;0rP?%AN?WN9~p$6;=9{0dFM> z9M^ya(szxwgu5ii6-<#yI)n8|Y$*-E^2A-zqO!}9YH4={T3R5R8Ksl4Wo^C$`9pcW z(+mX&IG9@aBPw^GM6h1j#r!Em!7nhKqM2|=S(NB4q)UG%v4v(w;(1;%2Yb=S`Nr+n9TQOSjIx-T;AtMEbNx5#^9gJF{|EEQ`d zPG98;m0TadwpjUBx{X60LeWRKhJIr`%v;d|mq7gY9i+6wLP<+OtVq3>De~-B9p&2E zsZ~1!Z&fAgQG!75NR1-3kv&xpDVkb@s*a{9Xj49CY)|^BY-TSF{j03u_IYkm)(J@V z*2>OtX~ie_IdhCZ1RrC4Bss!D&O(F?cHk!DKZ5S_I+NtkX@Onne(0v~kmm{5RlL%^ z8}5@1L;Ya4=qwKft`tkwMCN@5)+=5nzEezBYz*yEs1;hTMPQ;r=`h~B zQ=1j+)MBme_Xu1F z8-XIpp&lH2ue7T3QNs~wZ+mFfe(AXuMD7h)SQC&KExT-77mAb*=&pGc0n0V6jtdk! zl%w)v63^w+*$Bzmz8eihseKPrMUhr_{FmD+J=$8FxL8JS+8UZEPc_)`uQO5`c zUDYRIwLC}8rv7T~sQ+CLnr*R1OMf>S@dKFx<6qK-*!c#C`aUpG@5rojTcCZ;onfQX zyc1j%-fM#KTd6~hbmE12D^oD}e5um#g!(9RvVJ+kJ7%wr#ab2Us;%K>y5(xvf&g28 z^SJ~2t-WZLAwIVzLnyW4J+v&`8p zRQW(&&bz1Gqevm$(>g1b)?FXZ(8gr}>O#Pr{!t|dP%+-h4*)LEP6?0WSf7+>z)`yn zrH^6>FG{mi8%U~AuhtaT;Z;x6<;8No?!sCce4#^B)DACdC8ke?ROZC!{ZNd_B`^?j)7!Z7pd?MEy$WJ0 z&(lJBN9%5*e|E2^-&wJ}lZ=(*Qrj2c>yrFhHjsqjR^|fgX`gkC6PQU(&ka{NKdg@H z-U;^6W_OVqzM_A3n23uj+S@c_$K1dc3N6860@kd^4O*XYgp<(#3<=l`^p zXt#+cQX|{H)5FlAZJ`Wf#nhGr=G~lA<_LCH;%H+W=SkQ@BZ9Zf=Zd~nu*tbk`%Co5 z#!|CFYE7ZEp6BP+6IufKZ_69Z*#c7zr?Em9oG3TyM6<(g=&y;F_0Y2G*6^` zHa+V7vR~vY%@5^MQ4h^D*`Knnjq7D^bDWHqWDgVZ1}EA3u$#Jmd6@5FZM3}EC0H{F zu(F-5o(QZW*PAO;DJVnJOl5D`h=~F}&Ax6Jg#!~K^$Q_w*jsHc_{}#;g9XhlRCNKE zV_UCk04>QDP1B9DQRSuw`lDqGBSy!~UZLNoU7WaB7o*-8_DXY2h4)3Pw=2V4R;c#D zfwm*c=TIJLdt+qF5|ocA(i~G3Z8+Lkm(9^z8fz22X`A##VW%}&+G^igb(C7*a#)qG zJY;)MsfKe&Xw%+KJo3HqQv2l6?*?+q%Isj>F7wiaqgp=`Eo_VWf&O3L8r3;%q04pU zJM|2^*~)08HJY>Ha-FD>wfw*OjQr~U7uY4KvAsL+^P)q#h@`YYV*5PmCXdqQ1I!5f zzl}!DSIhB!tY8&-bot5#tID1I?+H=){AF`U$kh1m*_3tB;q71Ofq|-)yUbS}Jx!N6 zM;$=p2mW=dDSEQ#8aiwsnfjO~)BlZFE@cZH`yqD)V=qm&e0K zKS7qmw{hckuhn{8q2x~e_P#}2ZN>f`EiXIoV&`7|($tA<_xK;8V_R&5lLF5-5kzU8 z-p2FdAxDg!CJnHT(V}G=>T$h}lEW3kt^<;1dCNMi$IrhWw3bLSqI1owrJaEv8(n4g zo_NEU>>tNHI#3Q;Z_+FS(&~M>n;=0&*?4n$dLF;+7TA@twIz?NNovW}fICFT1!Hr36}pR{%#>TH_bs-u|E*npwlhEpM!{tS|X z_si}p)M1y?A{Elv|H*U`7cHutqL*0*tr}yW%+DP5<*ZL*4iLE;V)yqNc!xv% zI=2fJ`21~sCN#M&Glz@q?dKU!NG@3Z)!mZeDqL4=5b5(Xm*dl;!?S_i`PBpW04Pnl3=h=C-s{>8 zWQ0QP^MG_;RWk_GxurC^0L}K74YPnJRu8pAMNCEL@)N4kd}{wWWp|pPmkWQ2z1evK zE(-v(#uc7IHdep7S$X7);V032qz4c0sH}qyB1Gk|nuJ0iJT5W@I6Y*z#f+U&} zgS|r%(AE)G%H)h0oCx}su&sOlTsfy?g}JePV#QeFW98nOAyX_j z9ocPY#%{$N(LE~-AcSa>Q>`iY)oVignJ-kisCNA+YFP9S%#1W$SNiHhMAyHHRLhNSxaAPk%jp-(T zLmXzA>7OanITMh#X@gut!5JpNk4lW=v+r@Gu0pO;22^RCYqWg1UmqeMq# z#SOQ`$+T@mqj*!@Rf=2^S71TkB6*o`jO{Gl5M;yqBI|ec5dD#l_5gL`qZNkC`cc?P z@&&sLT0_;~HBeCPZ_-Y1M?QfT2VxT%nE!!JL6doN6~A3^q9VoX?nQ`H6G1;4xx#2A zzKuSvAEOv>A9eY)e#C0ci@e8F3w2Y1C3A`@EARuiT)EJ-LwEps+4-cJ*Ktlar}lT- zkm!4TZc8nBKX$cwIzmoJHSNg5Qrr!=`0I>x-IBm3oCE5MuKR_#%E68oRr3eBv?++O zWv!wllxH`WY>OG`h_88vC$~<{eMaUt9glCO?=ngPuW|}>;jZ@t@6?Mr7FEt3F=%>g zP7m)Ajv&hiE|Qwi?|P5d$QsUcZpdvVeQY(v=hKUukbz_D--dA4?}8CcTKg0(tBR&h z;)!ab1qglvYA>-sP=^hywiYVzd$MndZjh<5^Cf6{s^1D(78~Wb3lQ@UwYD*CVqU3c zvhWR!{2=yz;&g&9*M$sJ&EsvM*<_C|2r(YSKq3zNoS#~9l0VVOUyc+pn$J_-(XwDF z?H>IR_ZFjx*?^zRieWvi^yfHmnzFFGEFLDtPq0={?WYyfL@iD&GQ8xwdC_=WSq2^> ze-%#U;HeLVBe-|;i=x&!5=jbeJVkherJ-H$G$DFU4XB@Yx769Ri%UjU%- zExIyRCh?m#2D_Ak(kv=_NS~zooN=D{S@|qFh3gBy_oE56!;75Bl0qoUSc!3Hb&(r! zzniO=Izm$u2}31&m>SATs6P#a3=-2yM~k-Ra5PdsrodG-W}x<$R1&j zbsc5A$4fhAp`Vb#TZ2pQP=m}B8Iu@X6BzZF{YJmskIvt!x#GNEELBD8Pow@FIxMTi zyc}RK7!A97zoS`1Q&(jvOc`h!Nk2;eVg44ig>5ut`XTr@-8$#n;!t&oc2HVaWfZ@b zo~jL@xyzhTov2iq2=l!-OZEv5rIyHh$#LO#04CkZ>z<;MU1-mPCi4H$5Cr!zg`&^G z^SF=H2vH+}h(w5UNzaQo5`SuI%35hMgB8w~L2RMdeP9Xil>HCI9Z|mO5I2wVLCE46 zXluw{`0b3;x?({y^J(F7;X(G6lttnI?uKwT$vOU6uNSg|q96x4a96TR8PD?ODFhSQ zyZAMv{hUt%yIL{NRdBs<0>59lCwY^wMszlOg1Aup$9t-@M@n|M08EvAfWFh4<-@#( zOoDtH@i6O-d^MtrlP>QlAaXy;TauIbKjeGEj*0^1f4wavI{>Pqv%Cm+3qGexG!@)m zbV$8|@Rb>;I#=_Aby@j3|2k*0a!Jw`-fg%zY=tlzTH|da{tG!f;$(Zk4d6`jxuzCw zHudkgy11Ht&8V!YX0Fj+&d0L1>wJ?|^QLKZVU2=T)n{*CF;%H>?2)CyzKUX!rZbeY zhjOERGX4hbQp<+w7mOq3i2Nz6Pp17zWn8kMD2ybSuf6RZCik~im5BM_Fw-(<+~_7|_**4J#VqtL z#$rV!4uRn*Somw@hZGPAlRa0lk?Itu2B$EV1Py@-cBnf8O5^p}euN`LKH`beHRRK@ zGqNaZ8=59-p{JF-l-*-a$|A~3SnuMN%71d_1u=mO{1W$O#arP`J027$5ewId&T>Yn zYVmUJrur(0D{rvOS2DoYWZssR3zo+olBElu29?Ph#5wL`z&Xh?yGLM=tV6I&5G}=0 z%)$cc5K1Gmke)16ipHc*GmYX7nO$tBuB9(J;3m~DR)fFK2r!bY}wldf=n zHCNRA<%KulN__a0rm_r@VAPNl^F&mjiwyFSSZRVhf@DsrBKyyPGrXGnh-K_1kr8#bF~^11jZQ(9;%z#DN0{`q`i6sz{ED)hnQIhRb>Z$9 zj?_-6M(H1-3i2=MUSc+;q-lTP(<5$ZUC4|5=4nWD3+H$0r|d#&p1PMm!dRi@p{;QY z?IP@+s`nZxJ~h8VeTDci`I$P7G8QqUI!r(6H%~=o{d9>}<@3Zgb}F=JIvr4DlSZ&u zl{H0C<*M9H%gH;gOk{W_3*o1%h=>MwH%II@3*N?i=mNm+ghre7$|6YujRI-dvoN(# zE61}k6DsG%hIWVT`u#+n8z}Imt?G{zlHC3%W zh)qS4ntvgGr1zOqF~r#9MiqWhu(k1D(l^f`LpXhs!!z9xc9G=?Z3n*_m(v_nUs@Ar zo{srac(!p(gE^gO3Mb~qIvNgB5`*pacskwly3T`j$PuBn<5gM7HHE?_SZ1Rykywp2 zd67#CV+|juvFX$F!}NrhmpU?&AG}0c$$sKBQPaTVJML9)5vEz&slz1GFhd3@v$SfN zek03VuuRv*KA*Nx%jGVP*`*Qknu6!4R|sOf+*Dsglbz*5zSAlP;V4%iWyYh5#xgwsnR4xUb)Ki(h?_xvRx*#nX3fl!)TMnS^lPS zv--UJef~wYv;1Y+JXMkWQH(&@FMkyrtF!@Tdr9F3K%P?{d>PnmLxk@sY|(KlhN`8K zt13`_%kNa4QzBCDC|%(#F*R@xY!RFT2SX&Ue_$){h0{Ga0_?Ea1lNHT_4kx01Ew-V zDbt7N*C`k1EK_&G<(kVeNa(0q6&wj^RXJW`kXh;OJOSDd``A2(zCwt47~X9bRgROE zjmPqrz{^a&sXXX`0UzTB73!41uFxXQsMkKoPW8pv7D6bQwu_+=*uT1@?_TAzqT1em zL`Y^xcQ_J`|J1PtGcD{)+l+?OzR#Pnq%*Du8qd*Q+T|K??5w5b`cl53TG=xXMK3aS zSz?xE#oHFjVMo_%s&zQf`io%{Z9%YRBl^VCRbKDgA)4XZ+Se>unr{y8dZSmzQOdCXB zSBPu5z?_jGGGAn|KWIqb~XgtK#`vLloe3IKqU4f8be@^p7++kI$ekxsGHNRyZ z??|Dwc^TiBk>ABs~>RF=%D8!oKNl$`Ip?&U)D~_ef2!yxf7Rjs~V#d#Jd;=E|W) zHI!d)#ncG?PJeIo1jpjj^fHhXc2)ZZboD!@F)3cSBh^C1F^83^e#IGUj`E%2cBR0C z(2N%BGq$L&r=Kz8sh7q(>9(lS!wzUeloY?M>JMdDw2vpvK1Us=8XW-`%JpC>0K0mAhb;^*v=6)KxHd zB)hUS1Gi#v%|HTm@BnglL`7dZdV2t>d!%8|<3Rgo(hLfO$Mshi_T2|x?-41BhIz^v5p5uw)k^KJ-;>O@=iMojNO9ow!``qagL?C zwoXbdNb4=*bY>vB?r~ca)E!>D6%nsmlleyj#b%!1uUFc*5`yG>(NHITW;ailD1|JC zGzQs^f{gA0(Z&pXr-Rr%LD$wN9*ub3d{2@QXlnA2yzx>Qhooy=tn~FV$PTMz$~jgu z)c1j+f{f06Kwt)|{XF2FplKBV5fQh|SAm>BxN&^d&#S|51TeVd>w17gb|acI3Tvwx zb)|w{5Zf`LoRz_Ddk3o%ge}`)_lT2b8|ZK#*Q9}Jy#PZ1G{L1tX92FYyQ;|p`Bpuu zS723veaB2~R0gUI&?F_4wUns^5ra(|RciukO|z9}y=3~0;~QvbZ7UpX_d)#_YO*?` z>Vg&x`Jn8IKezmc-c@k|PQ{fYk~y}7g(xAWpFA7eTQZTBML3;&oVkl?6?~C9#2j`l z5Z>j%gZ0(Pb?=+~YCF*Jpb2#eM_?JSE(8HO3BR7KD|$*Er%{vs(qY!*U@iL>x6^f% zV5gAZUs`5MA~$(g{-wx((}>h4t8edOS9d= zcvodFdw{&9z+^*L(K%p_w5c2i*wcz@rU4#x50S3`mx3~!9gv(@LxKTr&>u!NaLJ9r zvsDy!UCOr8E!KM#*l5Ef1tq^VWz_J>uWD-T=Q>}NB7fhwx~@0j2N4IK47x|>!HeCx zxC)5diOpEwvQhgb_o4ZbIJ0<4lMSV~BGr^p8;sa*VCMUv0bOUp27*L$DCi{Zr0S2` zKinzG!VZtLeZ2#kZ#m9guSE1hZbuTir|em46QZMLnfZF&^7^huyM!A2Nkd`K7FwEC z=XQfLsCwAGAT@hSFBm`lEu4cpCN!@i1u-{#Nx`%2(3&oEC;FEh+X7TgTks ze}!Mq#XF~q*+P7aq1KC-tsEacA=CLYF&ZjBsA*VDH&p?osm!tL)zmGVDY3Q8WjwC` z5ci|d$9YghlUSNZD!;RLKrM)EoO@g<%9}R>?}XXRx35&-Awgl*J93|JWz1{(H}MjG z9cQ=Xkn$@mr9a3tB|Fc>m&g5Ry~UmCEZ|1@XVoZsQjM+30yhO&q(qg!!W@COXFee4Vau2zYAe+2 zPiMUwXAdxf81R;nS(w;VEx%iO!}OHpUX^IXV^eE)>2H*0pt-ujOcGwCIUZw6*{#m> zC$Vys4_%D>y>O>Nm{0E9FJD{|+RkTkD$cZeVAdkU=A>>Zy(Bj86?~41c3qlSJ|hHQRASF!krZi>od2kIBOdZM zG6_DmqO;sY$4Rm!!cz4wTs$E_bRGYOgrzo;5EKacb6mIDSDZs}PA@psY_EKAZ*dmC?*oGaWz`X-G^QPB=dFNS|( z9g!)0?DPyQfTT4;p-T0 zl-GQGxMT1ICyA&UdaSruF}?K;x2Ptn`5R#vX=k2V^At19^t-?cA8PoNOd_w>y$csJ z$~Dh?{J9CLUrs~9FUmxPd)dLBo17!nOS|F;E_E*LJv9P!Sj&z46Adc!?Bpo2gDEk* znEqTZ@Nwik)0}oXAY84glPmcir4w0y1pbu)4G7^}gmqP$@GELk?mDprc4@*1Ni6{x z!jj&lT=wXa|HB-xt5clit&n9fFV=RkCbQ|NV>l+~3g&d>E?#`Yt(;fu(80>dMIl%K`= zC-|=LBvj%@1noc7P1q|UoadvJ=ta!z_W?3;rjE> z1|JjH2!}l$iP7SJ><`LTOWz4^HAD%ksE>*BMN{g(k>#R+@+s8Y;)tw2488b9+*@|H zWPPxicT?Ky@lHgM?Q>WxeIfrSxP(zD&QN|ej3{>2dlPXAb6Ek!Qi0B5&}S&(<2JDh z75>2j?sY|s=Op0@1;e3Qnx`1!|Ew?5?xSR4w`<;@wD>KWS*3?atJGGRKd3iU{&84l zg)%po#I=Bho>s!C&}j#=_+w$(8^q~ut%S6czH1t)K@F8M?_)^sGZmXc#a$G&DP zF-!{f;mp;p^K=%3tA!4CB(_Q=`;+WSX&iwkFRx5S+?TIGEG`O`e?xvwV**6%tf<3^ z83cs?X2oU7P1i8+4ReD{4IIK-#dRV|faeov; zRzc13?~<=z{C1@)61kIYK7pTw?o60#Zdlkr;(a6#YkUNjq;&;{gaMR4sih)59gLbS znaqmz=SUB5tzCQMX9Ov>0>uNdjN!}tL_3YMV~;VA)$_Ox%ohbScv3bk<*dMo>k@fD zG?PEgA1(0~TDTsQwTX*tp8;Q`19V5)CVno~nQ>m=S{1`G2;StQIYGkF6fJMDNFO;U zs1tYi(?yph2VH+ln`Dl5=|GrVO-rX($b&Fsno?d_+0D?&8F?33Lb)Pk9%o2C5Xs^@ z%CGv@3vU3vZq|}hz=&P5yiE~AZ6>}|nbDUht5h>97tmfQ`FYh$Yxqj?TDAg?jSS=Y zLmT{2!ue33TeQR%ykU1vz8LJG{2&w=v(Z)LID>7)Aa#rGS?*7Ug|V-KU%Or{oSoxT&aq+cax#uJp@R#wY0d-RW(o?blq z?t|Z`3%zq85#x>%4Nl;EvJO%@3N0G?q|a~*5k^@DUQk>spGLfxIY*A6q{JPSKczhl z83jg|hrG)at(?P7yTGG@8PLm`T127d*2u&x+Rq}f#EG#sLoPYSLd0RE!<_gK zSoROE*t-gtB7mK~DjLUECF7w*(lYE?eihfNdQ>pR3oJY-+{q74e)0`^MaHp%krM>29)C*(jf*6&1 zh_fhMnd03hse}p6W3nM=i!B4#2RWftjJb^#l^(ONsZbi#oRtCj(n*P^ad&KX1Rk2k z9{5liJe zCCmKJ0t6|}W16BumgP7dWXbcan;{vHR&`Na4bTgJj}yY8OgCvhU`*gi?*iT7A7zce zi2rpt5!mCA3c$c)$1KGeMX2=+@T)>q#T7nLEh#)8#wnXJ?o0BNE(!UPhwxDNJLwR- z)c=rdJ=E%vB!2}tI8qdO;7OZB1#9vN~b{Mu0oJcAe7B!V#zwz#8%Q?e|(x9w&HCAqTIr6x1#b#ocAI;gox zj2ZO;O(TR%=ODu?%5R&M`da3*B|4oYucvsp`Blw=>{j!>y42*vrm}if)CV9t8|>0ln?xCwT9sLHvB*nvi}4}LNdvKvN#W`n>}yd1^(=0E z&@~l~_uIQp`BiYrWmvgUw8m~wxmvQq@{e+#Oi*}NRmDeTK2uc-Qj#Vpe+UDka+D;I zd(ct%z1Y{=2yc{Ry4-=+NV#^e;A^s7R!HSS`J=)ixI~(qxfdRm_9b40LD}>uci2(J z30enTmOb%qgU00bt_z@>@`v_*a4-N^t%G%nMTH`8C)l3397+QTiJPGkusmuSv=B@V z>IGke?%on;0yx(-9Ewu>XHSP#E52JjhwZ^Rg&vBh>P49{@QA89kqW+0K8}0?@|2jM z3!n#l(E9}#0=u}5GsjSyeG3!=d0JaRC&6nOM+TtcH%Vd3ewCky_Ufsx-W~j)b7S3G zpB-%vF*MhwEwc&U_BWbxDPOJF#)Hhai*xm>d99fhz0<4bCxKmGYD=OMI+mlhgiL7j zz!vzmtxBr+jz2ZyaRQJG$z3uy0yF(gpGPOD<|>icV*oZ~aZcCf;c&Aeo}xn;R(q zhQv3P(H(sIjkU}H_jG+br_`}iHcC3ZCjKl6)BeYluAWU22*bVRVA*{y#&8U zwd*Xwd%^ECd%$zP+tfsGqx%6B4Kz6MmD@my?Whs~BCQrE{lS_JaiBlxxPHB17@hDeLI6fY;1F>{BixK1V=mNzDZ@CzZ4!uLeDz zQFe})Oq^2POnz2ffo!Jr<@8`5FP0KOQ^Wsex%Ogw8#)+94go8dXMu)kitqh1DZ&0_m?qM%h{--?|?$bL_N{uV* za%1$R8rnfjea@Sf|H}R?QJ4vtNj2G~%Q5+wNJCtJEjdxU#`O~GpgLWDxL%)!m+ipX z6gM%88rD?cF?u2vv7}5uX+WLKD4>tw`l5!|>7*WC3_pYZ((%B!%*3GctCm#ar1`aP z5%KhKiU|1{U4vbVF_!`a6h1e7kU}7bM&&cs)6;!P+y?fjlb9;q!+r6HyG*)mQX!}aLFm! zXUdk!e8vUje#B>1XECP!Ift7z7w^RrM;1_43kG}xS&(>^)6MZS$K~*$Y#r~7U`D|n z{w;ES=~=?Qf;>&2wX(9ZUJw)_QDpS}kO;$6zE z08&X6MRx&A?T!j1AT4}diw8PWT`_II-iXu0|A61VZVZ!x>|Dk>uXqnerOJq-<&$~ zyyBPm&(!%9hMF{bD8eegoY{*ykW|en#&w21=BJXDc|H^^r~kBvWUk!haw~LPr2~5j z&ZXvY!vXwVq`umRv=tMSho+ut_>nls3?h9F6>u)noje~1uCtfh|B*Zu)Jba*#b`Sw z4S5&)2uHz0<5yJKHFS}%xqYORamv@3mc>AXrm>9dUeBNW2!42J;>nMDMAbjA>F@A#N8qdd%FL#E>sqy3Kv@N?7@^AzNpP`w2N>-nd zPkvmGXYfbKOK<6?m)Td#wfC~xQRSM=@rxS>YIR5nrCC+&<;ps*%yV2LFv3LMiHuvV z7Uasjz0LEHzf1H@>80DN=q7$v5fU(T#C^aW)NKz5p;&6JdD*hq>ZOh+1hGmj*T}%- zYe>n=pCyrXXW9IUbtN9$=?JHc65dtRp%_5$2GjI)z!vTnP7d)_ z#T#N2C8B0|?JZgZGP<~sF^ImOKESqY*cLO9dxLZ+aEjnx+F!So5*K!x?SFEnpoBGw zEvt{hug9lhEf9UAsSVePN+}13qiIj*hbUX4HEbLDi-7aIb?jWXBO){Jw;fGZAv(>B zK~|Co4Uy=(6haNAVF8U=*hEZWFw>BfbF7Z&RK`ZmyMPm%6MUN6f5K2vnB8S5UOJyK zvt}yW5w{4rm{U_-g+9d{C|K1X;Jr${L=p*-qVCXc3J(Nyv2o&h_o)IOX@tFxq+f1D zpH)E?mt(zZo{0agQlb_}5czMgagx`msf1yvI%*9SAqxu7vQlNA-5vO4@~8Gp@ekl3 zEw+>aO~BBrGQk6tcWbYL-T6o~0pzBf#Rq^TQ7B3T7!d$6QJ|-LG;j4dd$3x}14-1T zVq5K3^tFmO?bOOrgsmnj?;Yx=nw-LEn4@Zonn6Y=4+YdScENAmvw7}tg8gN&1+vwm}ruE@F~;eU3}E(_T9F$urrFHj5SK z1!;tMN)n1(7ffr%WRzMmwlz3qU1psn&P$MRT_}NJiTvYqmCt6;GWJyGOVXXZ^ESP} zsA#C+GrpPd9r2jNCNC}iM)^Zc%5tQu>6G~2tUBi5(7#*-C)a0<;0o`v%M1xoc;D7S z{*UAo?mtW}Gppul!zgQGu|07Q$0<`t*~V>;KSBS(pJWs##%Iw&Bvzs0%}?nRpD|vlY^DoNB$G$l z?vmvIcq|QZAF!-e*E<4Eh4-<4fV7Ny!Wn=XcZYHo=nRFKGl3I6ySZ4!G#8EVqJn7q zReDr$33Iu6K&7pog!EIsEyQE0m6G&7c$RWTTqAiWYz&QHM8b=FR&e%1Jub_I1yHh` zmlOd_!Q@oUG&oo3YR~EZEBJyA)Ba3f*`Uz;jH@AiR6h-Mqj#y!`gCwIlzUu81n=SF zb_LQI&`;z&d1Zlp`GEXki73wx$f-D((gf^4_(wfaq@!*IqQPmn(;hnT9qENbHEhMG zwj5LDbB`h2g*6q$W{gr#OgX@ioZmL&WRe8_BEshqGVr5GLJ)mn0DXc44A-f zvcf<=1>v;HT2{jWu$PwoS<)@vssi z+HP1Q4xAXcJ%ix>ywi3ga_Rm^hs{XeFTZs@gS`LAv|BvNdFwY`U%}5Ce8V>jty$}W zYQX$*;i~ms+~+4yw>Du1f3n;aVXO9Ev}?eoelhKI1S|i<ebjRXa!r-3m_6VJ@CcKiYw5zi{&)4*Til75i3T9j$tI8?Z$;7k`AoUA+6p z2e0Cn+uvJv5I^O@S=B}8_S}4Wr7!I==a*>&+KT(bJ>=)tm0yP-Yi||rCZIxWzW9iZ zPOz`~;1p)anYS(uciEk?nuJgAK6C0v&-FJy`(=}t-)+$kA9{z_y!!R8KFM~R-DeRm zIv)Cni)6Tb_yGp}h5P1r-@v}=_3PWqaY??%PKLT}uyZ~_cYoF4o9{IqTBo&pd%Zqz zd1?1P?|W{`J`(sAczphW4q55t_O2EBkx#|j2y74XrIQ~znq7AsdCO&s+x73ia@*-1 zv6tzw+ViE|&v~u)a{4IQ=ahH%2MvfQU%PjM&>N61zkLt859N0v*RIps?dNnylh0cR zdR;d7RP8n=Z+`Gy3Jv4Jyp?e_O@{z#n3TDZsS9~{MzFYqivJ>OC<^tvrrs21)yH5Dz zpI^7@#eZ|)kYhIf#jomJj^pZgsoeT;;*ThvX55KQD|}?QW$QO05!iccNa$g#>6abM zEyu|Rk1&p%tlc;1ckTDjKD$YG`NOiko<_YIwpmJzx>5b!8p?#tdux8BTyvDHtRc_1 z75=h|B0DpDa3kf~`M`adfbcwn9I*=Bt4t<^i;#+&aNw;aUx+aot@BQS6mzSND*(j<94h>e&)GnODc-! zHMXG_J?WG9P8b%0V6KkDRiJkN{JJ~agZup=Po^i~>$kk$_wwIk@THUvR=H` zOrE$=vL}Ij`F7lnZc?O8__nu5TkUH$l86P)AHORjirlbkwh?unt#9QLOME)_XAw@{ z!S6K?Y;B76gcE+V|8&PN;T1>iwv+flmk&1<;OE@R-<=?Q=;^aYNTB;{UUi6YAA#O) z#4dL5-7CS0oW9#5#df>Ax1$NS)a}h}=W#ndR(!A+NAp^}{ww@qpLf^v;kAhOSLq4+ zkuCeVs4K3mdx_|4?(gj(U|#ef?a0A6dCqP73De;1`@w5id!LE*wz$=Z8*4wsjUY=` zJ;EE&FYLEQ-1XA$y@9lNTko+#MfjZE5rRJGdu7{pbR**W#`~B6r1g4FtS#!-wO4S~ z=+9Pvi~kNiwSSfGHbmLpj}awEXwQepdL(`a0_BU^vTZebBPwI#1bP;Idc7y68(q8B z1v`T|v)U2Yg-L`U0RBJhZ@KM);J@dVybnQ(9{=k<{{H{|zi9DuOO`(W!i&pZdU^RP zufF#BiZ|X|`PQn{Z?9SV&boKkzqjH2jUQ~)l0 ze!cITZ@=4r;QJpA9{Ta{Pd^{|<>;~Fzy5aOGGAUR@bbr-?(|} z_MN*nws!Uoj!w=lu5Rugo?hNQz6c}=jltsZ1R{w{q0;Dn3?_@s;qv$bp~zn>k;>!> zrAi&32@DF>>Ow;GhOlsBL}XNSj43uQJ|QtFIVCmCoSu=Hm7SBDXUQ)pEGjN3Ei136 ztg60OQ(ITx(Ad=6(%RPE(b?7A)7#fSFgP?kGCFpDeB#06)bz~k!$)%fTC`~K;^&@Q z0%!323opF*;xaggmzOVp1&-pi*I!=&r}5@WIFD7U;Y8M~g)@Oefm4BFfpdX_d7R9X zX#ULRe}wZS8#tO{$A3F<>h#%j=l{5L#mf4|tvfdMj?Qi#-Ut*HPomP9Y_32gmdcfC zO^{X>Y6vq%L`B1cd@{!WF~mQ|_+*feM+pxT9w$6dc%<-9;jwmh!K3Zzg~!`J0FQWR zcz6UJ^w|CT6RmC-yu z=OGIV*Kgr+x(fvU?Zsk6ONlhFu}B$GSEw;o7wAmomhhzF?AT08T6*EX<(b2u89vM5 zSq}fXmY&UrXY=9NeE8qrFVEJ+vvu*m)$-!SgGW-{R4FuCN*BNn>TU_KMmSHNO* z7js1&WkOj?l{lcjQlYCV3k)wQ(#7Ok!jiJHqcY4HNqPSkkZ^JFL)hUV>@b~)JaRve zbZI1?>M&5~hwd$6FuKZEg4TOHNqwDESy`pl7MBGXEk!z0R=y!IEjJ=9AuB%X-vSaY z!4CE-ADZ2FO=Y2e9LlvoN_B{(EYO%$tc^)4 z2#rt73r~s3F`54@PaM+zbePOR|1_FUyf9cuw&^LQdbd~7hz*T2Mr9LQTwE*FSSr<_ zS!Eidxi~mFsW2oqHa{#eGA}yi-vSaZEuMuPX45@(P2^$^j}#Ek^%s+Gca~G!o9Zd3 zs%8qixRE2vuaO02SE@qIWdY$yB|(vK@SKP$G{lAHM<)JTo;a8to;Zx>;SLQI63+CL zlCHPjBRSSIlhCED6kdJDIOLz2tYhPcu|V|0l&%2=c~=?f#`{w;HG4l}UB zOor#KF$?a8fg-}m&I;m{`bNT?@>UYIpq0wcsTU|SV29)?r7pfgt&b_!ghiAFM;J;% zqe6UQt84f142V9g7ms_U06_=A^hL+Fy->1sZ6Ig@8=;u z?k~oC-U9djRc>$dXVMv=14wjb5|MaqkBz=FN-_S7jk-uuI4@lA)$lKj&A1r8yo!P`Z}39 zq*kHP-ctt!RcnGZRl!su=?LJm2L%%T0CFtsPI}|(c-xw zzZ>y=#vuMu(g@WtYLx05IzS@?_AsdGE-pjSA!N(j{khUMDNoWW7x=fTgrb%J(Z6LP z>l)No?76hM(c#6yF0U<_gUEx)ql61lllVI!4~VV-qhuf15DhIJVBtmmT%xc~K<4*~ zD7+pCmD?kuak>@sf6HjDHPl>n7bOj;q@>Iwi>Zxf*U_{2@N7Ojn-Bl{dj&-N^_>+De`h6md^3}d z{`El?*=j6@=`@r6&tbyQqTr7=CBD6}9s zM^~8mPx)^S$sYTrGcd;=Uq2Yj^>ZA_Wg~}jd9>afA-^+6ENRP@s+!Z)!40WeLrqe6 zWJRngzBn>1B`*x#$?FS}{wYr!;^6P@1c%LYDV|?XW@3-s&!t=*&7<27TbRCs77nG) z!sB-3i^S~({>r92MNmyvprI^PA6=Lbm5>{gn3@rpXHE{!Px+^SNcdR9-FV{gDAn`p z2U)nIV|kQI!xp;TU_Sgnw?a0tw}{K?DCP^B%S5u;BDtnCPopo$&_(4W8xzcNaj7Y> zIqC6H`KkYu|8#hm=CyYs8~@8_9_8XtKFy}Tkm1==%))h+vFWWObX)Lp+>AqQmA{v-elyxr8Gl77D!or`_o-_H*kj zW1?DX*u=&b9<8!bC@QL!1mu(`L(}tvB9n6T@v-SKDN$+Z=7?lV>OTcUo`k?(4m0WA zU*69n{4|_TKG$DFz1dwxcWSFiN* zYvt;cN>xZ4T#tz=3W*8Jk4y-$q$KMs`Tv+F4hc730ZERVCo_FNAF&V)^%s#&b(K*r zH`h^b)U+@i%i3AE{B{mIt5GCPtCefwtCS(p@cuu%L>CoWWQ+|iNQe(C$V&L9{HMc% zY~*Ld`GoI#i;2IsRgurtHPbFvwE4Leb~1@M?QE{O!C#j6c>fL8AtEX?27Rd(-us6~ z1s27c0*X@qF(4W~7Kt~P&!sqR8qY=V8Z5+r*HuRNxv`#fysDLIUED$Q%k=Z!xUw);r|p6 za}t_My0v^d-F3roKIX%&GVD&c2C}EDjc_u*n`D#OM@OdguxYVvTz*88NMfj$Dj)Cv zgW>(ZrYh*k-d|A}9xAJd*8fw0=@j%R<@WN4Y>##QMd*z!_fQ+*8pz(lF8uG=ePsL8 z0R}Rzhe0q}^vrZZG>lYHaePR-)S4v^`DyXa;HI3P= zq5o56QqMqrg?FIJrrS_{m;1_$LBx)P3B*C;EaFTsKv^jtV(<7*6CC&tD6X7wh6n3D z+lw*A^Y$AR`p`%HeQ6^S1a(-Bqz)@l|CEW$lTcmlQK+!P?zyZ1&sB*N9@~wN+`kJ3 zp2rlx=XVi6UFHCsHFJ)9i~f*)hc?T!q0F%D$kRM~(zL*VI3;oX+jRI*oK~DwXc^Acc(_NrcanvHqOy zD20EAF-X=1|9orFMQNIY6M~xp&ANtw{LmUzrJ+bsX(&)s=@$yn!VX6GT>aP~*6Gu^ zWS{*rY1k8!>13-1>2!w)Gs|~0l}GAN60*AEq@s@K09l(cMBS{92x<(84`~QaH`E0d zg_o+!Bl1)g;W?_xu!RD2e>p_mUI*fwKY5hm^W9WB?zf3d%9ZW3p?TzvexKeb)zv{TdR-NSL#xYWx@GT`I^$`%z*NU^ni-+h4SAV;+;R4P4)fu zK?eT#{cP&x(Hy4jNDjwyD4UP#%@oo*%>MkAWVxg+E>K+=rPsk*i?Bj{Vx&cv9i0_i zVoD7xi%bqIk60*A93n2g0HW@!0|_oWX3`MfOk@#`jpouWj^r}#4&|}k`*V5du3Q17 zHCx24PnY{wBnGI9Ogfz<(ioN#78jYJPdBB76vrlL%cA0g%OV#F2!W5qV~1$iA<<>~ zv>CB)JezoQB$sw!$ilcikk4}I$>$*23;4vQd?BMMOX6RgqEhF@2kWw;!@|uGF;OYu zsiwrRqBv7%X>?3TS=2)LpAJ*$$gjt8NJobAXy*p={ciLXG99~$+1{~AqE)mce_y0ln*cv5s!RD48ItSKTtE-I`fCelzEwNRcoME;dSlIzEl8K}LZx#XXR z@~LP03;nEnikWsDxL$VO;r;eQCP#GWt9qqDfv=me6}h$Iz8B6Obv_FC&$L!_ffZEWznaIb}Vx3rbvo7cdi znJf8%gc7kLI$s$So*SeO&C(mS=`qoP=@}+XYDtVHxiosA{Ow@6`_7EnW9w)he$PN5 z@w={4@=wjR)Z?`+>{I1!>^lV=Y@f_lHYKT^&yT6}mm5nJfuTi#A;I~fVF7v35vttu zC}mD*lrpny!2mscETS*J0OD-cPNjQp9=70i_7)TNwp9}M*EQ1*RJ1YA6?L#}a=SS` zX`NhhTq~a&(daJ;t&yvPDmB6C^3YI4X>^#hG~FmEDK|!;~%boQHSTsoIcd2X~Vd~rU#gF zhFR>*z$v_ge4OMi8m0O0hgm4@AP>tP5aC(<5(2YNPGt0{$@Jbp3auxEO6v)wEfiq- z37W{f1hrP&fJ)jNmgM$&uQ3m!cbO)A4;kisPip}3s_YT=ws3}M&z+K z-+h4>ZA|1%9hLY{M&-Wb5fy?o9Ec(g2Q3&7{}a?#a2)P|xB%sKJHKEa_Ffk|>9JD} z+zx2q8iW+CK?nf)G7I3X{pKh)X^;HwP-a;+q{@r=DtdDEv*ZqFZ3+OYky*eQp1^uXcc0N}V+0$dOBfY(t5K%Afg>{&7(o+kq8 zA9&z*39dg}hU*Vk{;U3g0{+*KKx&NuvISF7_B@o``vsITdKNNGSufLro2%8}_9lN| z^C<^7en|&z-;sd#K|DYm#sd5iG$0*C0qQXXpda@Ij9+~K>o*_3IpGa>C%l00q$d!a zS|~vA4FrNuKL>lC#9pkP*S zKp4MU6(j0WBuYAEW?6?cSKclzRxf*UtZm`Jnvk z{1AHWO%P_g8N|4L2I71V&BbF*&&3n1AH~ufr=nQi_lBS%k`7;7 zN>$VbErh=v46sAA-Nv~@kDb$LsP7)66OP@_r2a9M$+$I`4)49wxQLEqKCwAY%BYJ{ z3n~mcS+UNjE(nSX%F~#2IROQs8LBFMimF|cN_;kvQ z{&qZ*cyu(IettNcd80p@-YO$F7sMXF59j>m+Rh?%|%zG zis;30azS2{MwS&88ek5M)TZbXLz9BD4GF=OVWz;U&}hv)-9q@=A4p}G%`wM8tyNmsPZ!c$FsjnbAmKOS;T3ImA1xpE7%YIGRiNd@!GUptp#6q@#>} zviTnEV)Z?OLs1DGm2KhDQZxN|@u_lYOoArB7#k97h=~jhfm<=OQI_!Fh)RPtyef1d z{D;FEAi?q72N^!whVux!`wK|lbd^#LwN%rN)HM?SD61#hTgqw3^g=c@F;~co$&g8m zsR3$zk}g=6UD{ll?F{zRp>$h8u(b~;bReD{l;99TsECwO7A3Yoz>Ub2i1nE&rPizs)TD;%R4H+KMRK-5 zkyL3=##e1z)rm7RL&cfZq0-dqkc9vO;T#NS7K7;Pug|19 zzde$Ney_I(x4E?nx3#93x~;s;Z+}52G< zN&hjYhjAgTk7*Ov&GZWIVBoZ^T)MhR#E~_~MgH}H5<#tA&aE*i*)^GJR!yCnQ(7Oe z5I_)|LpbaZe{=bGmfP#SMW{EM?;&2VY{9-;)Is_@w}*Nxy`O$1VTkTv9H4n?`{+1T z51T6M6teu=WIREuM#yUp@n<(hN?46aGDd?%?$=PgAb=KjFrHofDCyR+kvz|rJIj2Q zRX2GrFK)+d%IhY6lQBR!nK(kVjvOaD>c+_4D!2|IeZ2qg7SaTrQYNoM&E~WRb6IT$ zKBF~8NN-6M(OPmB1kk|_k-smVPP@Iduh45rL#-23+UE0yr5p26#sJ~_q!H4Y$VvS5 z5ct}^dYt4T8KEJBa9xPsFCcPyC1h5QlKQykz^_ZkpmiFV)Q&hdr6XlQfKb>W=6C3R z)=j9r%mFHIc3P6(<@0uCKjzcqQT(B(DfF3;IrKI4EY3zcNpu#BQ$4t&EFabgAITW< zN7DyoSlWOJPwfvRko!Z4q`n9;vDZXd2q5emXb$cL8OXl~RW)3N3OZe1%PE%Nv1P>g6l>d7kW_ci#j5{~4;S{R-|uxB+GNxxbt|>h)gKjK?k=a6h1eYY<}iUJM>UUt|Kj z6&+A+P#^i-B0pr`AF=`J1w)vOsO2vQ$bFsNuBdT0I^>{9VMHf{Eq!l zX1_I*G-m%w)QrP=9dP_a37ozb0k?x3xCTLoYY-HGJ3|7ba|A%UfCG$+7{I=S2D~dM zAiRnM{#J19;hHZ{TKj;21u>HKCj9v;p|qhNpoH;@iy|N1cts0ttyO@#TLr*w7YjJ= zr2_Z;MBsA}2hfKxfN%r_$VU-?b_}jR9Ea-NvA|^)3V42w0EjPr0A{Zj!0+<} zq;K2-t{Qw;kr#KWxnI`And3lj5zEcLm3h#(+Bw(i~(LgtDjrW?&CCZ zI=C&I23{Mtir+qOo;m!P)w3M_kL4i$dtJN(^zgbcK3NxspR5Z5ye@Qf+u1;PU8tn+ zx(LLMN)3~}jF#lW^6`WpfGpCK)!mWeXMFqc|H(!7dUYm~{0^qf&z4;CZ zbJzwV-M;|Qh#x@|_B4nfU40lvx0%+l-6jJ?i2EuvZbTkJ9+F1U2mBM6{lW}(pP-Q2 z%dg>g@S6n<{8mA^piNLDY!l9xCk~3g9CSC=0;A(r5aR*YNf8Ivf^1ylOvM!#NZJiFUJo!2ES5OfG?giV5GQH7{gR48io&l9zX=L-<55j$1&i=blIL$nPJ<<9?fpBV8Piq1_&dWI7KTcs_kPDXu$EL+MZ% z7;SPBw^@=RX!OtXuNPH_t3=I`BL8MduDDs6xd5IxDF1TM-+CMFncEEFJ$KJ0qV`WG z;g3%wk}r(L({2u$7>>P>9Pdtp7~85YMHm?UYFe7*pG_*kgm93DG_-&ze!P8%O4 zd3`#SivDK8O!#@kOgYn^Mz`upVc4`Ku-zJBgs7@;Ii*Aw$SMfZ3-Z*_;%sHIEK{DN zOqZ9dQe+LP1X-gpPTnM+FMm4(!4Ae-tKfc=_h*v5cRVm-_TJAR9v;f1p6t!=yVQ}+ zxYd-xa;c8vqe>#AlzhFKm7~=OG6EwcY3c-diYil;q%2k^DCz@DiUwtjqERtl{+mO@ z?NuP&dBb$7&-U>Q?3bfikA3jO0%g> zmNYgpGeJmBiIK4qi~&NEAw(J(8mTnuk^;iCIU2pTIxsY-J|HxxK{a3gcF@8O(YN1x znC$ZIcm`t2P%d$2Uq1P(u43wemQwQZ>SC-_Q69x9C!K{zOBRq5;v_6nv|12h)Jns` zjLJ|$e1J}$8K~7)1O|uH1!%Pms`&yW@UaMhkA?2yOK=~?8#5`c@7&KqZW^=@xAzp0 z_OzE%_BK|dkCl~Su38Gnjv3huL{b`$WJ(eR8sM)=3X#bZqm+__WVJYKaQ3Wx8P(&YImgG!j#pqwv22Imk6=MaABg@;LZmyc$9zTQ)WdZW1-`Fd3|{_T=B(x>pVC=RE$ zlP<(J6YfUTQ9MGb7#K|%kE|#bGbM#8o-ki4OWtA0(J<79bzsmd5~_iw71ZENn?%c zqVg8Ra`;&o8*+NcpQjB_e~ufZTnOtU-3scVI4ipRyu}?{G{4=Sz;07g7;V9HdTTh7 z(i+bqx8|^ktqmMXUHiNNO4vaMJH%aFG?smLQAepWd=G;2;=&HZiku$YR`UR9U;HTX zc=#CpV(o-9a0l7G%t0ZVJ|M@z`+g$1PY>_;qp5_R6dJC(kdEtWnm0fV zJA@vE9wwcK1}xX0n))kHahvPX+#clW^a0%V_%ZB$;}rT=?G*Z=ateDxG)c7Mz&!}e zah5xMOaS*DNPWq}Y9w(;i^dOzVR3^d9A?0bNB8Fw<_plk4#uCM2j-JdYx!}gr1d7; zgW$0&eE|7x!hPgUA3DAl44ihr_hIZ60QVnQum=?&e6o5PwDj>My>)@0d4W9rps< zUp;}~ga;6xgzFBcT!H$u3kW_lUrJLKLm6dDpty;TpooWup-}Mqa{=J;atW|r#Ra$C zqXV0*MBuOk16+3@f%oUW0Qr?Sz<%usi2MGl{@@Cj`&|J0fHUAdsXaIV=|Ov-I5b}} zau-1{HH#rV*aiiH?;r&@zDNYlzQ6_-U!wr4RXA|-9R#r1-~}8vc>uR9ZovCP7l8c8 z8DO?M0{jjKK>WlWP(HN-v`=jTW2X&Z@45?kyYIjom-zx{A472Y1Omd-&jabzH$cFh z_dt--b`b2j7X%>>1NePlKta6(B;4~lU#UCir_gZgXg5??s}kg`WWco zIjKed2mx%(10Qw}pLrfW)xQox@4f?!&RapG z=Vx<~$OF?x?C}Q%()qCv`t{*Jj@^Jt;@T(Ecz28S=uTk_zJs4aYUAcoS~%sjMs_Q` zn$txu=63t#aeElqyzY7Nw}S+B2()?)81AkGkMX%Z^mPBKM%(c&-6!7uXY<)ciXi>mu8K^yIvWLsg{P5 z%KhVLr9v~KNKn8kzhQM~JWQ^`Ibj-{ga45Z<|>rNvbX-%b^sf(vwFOOt96&gf7xmpD- zQxiln!?m##g^80WOXI~$^96B|TA@kWCXAA{2_mKK{Q2;=g93I4g&m@8Rz6I0efL4C z&z6yN%+9_{!q**{vA_|sKMlC~p&n%i9F=;faF?&Or$~=&fD`F*a|^B)PpaZuZ?Yl!e{ilSBNxEtj;v zE(>$2G=*$!iDNisMe)5;!z8%G5EUghSj&vo7`YJv34(A{mdKzg_1CLf{q@RLQK+&_ zI3EBTJ{FH1RA-g|gVjqQ)^^2Iirbp848;2bIk;_I7Shh$@W;j)6qKltAVzp_7}pRKD+mcp7wI&`Vy&h{tc9D=wE=Cy`S8TSA9hf~4&heI z=HhH$pGYb}+C*Qy&_HWk;oew|a{eLSTIb2-*RvWdv@ za}Q1DqJmQViRvT;T^=9AlEj7cM6vM#fhkMGH&u!R(QQIeM4MnfJaLe~4%*X;L5$VX z$u!#+2J<{$>?rklv9{jz)v{*K4=hcdU!~W2A5ADnUyLdy-qq*RU4wEt2zVLbW$AK? ze_9|zkYZqSQ(}4S_bZ0B=h=Lg`yIY?oLkW-65?A7PSGi;ai7J4jcs&-ja z(d@OnunqBkc01~eB!Yc8%g3G8*s$!P6v_OCnS!6_Bu7=9a(K8s?CKf$A zokPnm<%y*2@4@d$ z=)nGHY(<~dHQ}w*byR!lJ*K;`lJCncmtvS@0R(!fo=hz<(a0rcI_;1j3@*hw?y#KGSxeV{Wofla;k*{R-;@?XdAnlIn!ynZ5;7@5f30Gw8 z)Z3yqrX#n7@6K$N`p}vJP~@gi46(_C!#A12LaZ^3`+gMm!1wFG2fjbaCr~E^6W9x^aiSG{oPLus&bdPv7un&)6%Od}AZO%w zxQp+2oSXM}rn}d8xrgUir{{bC(rxfu_!4@M`Xy9d_ZDR7{0ZKJ--1$xU6z|B+}9aq z-M0rm^4u$X?0mfMb;GXjVq6=O?e$f*ITy_T`SKL6vRTq$O%>|@e&j+A; z2dYV10_Bx0g~$F06gzPYik!K+Boy3wEdbnICjoX_c);mXKj8Ky33z>j1IX{u0Cxxh zNI&@i`VlX{I_d#<$J~McudYD;n+pgy;RJN29D(t)1Bg8{A8Mi?C^vgClvuq4ikjX9 z8Rm{aT5x`e3S51~AKX~Y0e9Y`0lTdP;Jh6J+;<^>&u2aW{iP?s?{x>{eXfB1tutVK z=LC5B9f9b8J$$mU1FD0zAo!3CF#I?lEXfd*RI~^RpM3-V>`x&zI0#9>$;AS2VHp!# zd7TWdug1bP83eH3;0;{h8ieOoH{koBGeCdr2yol&0cnRFpnhrt{C3`jYY%q-fA?+p z;?ON1|Lg_`m=`HI5M-=`APrarN#HsNAMAx#;3tR*PAtKLb1x#n-3Yk>Z~6<}_>3V0t}0isRw0bsU3 zfVdX|wBw5b=Z}|w`1(p9v)cgVuG@jk=PMw_90UULF~DJ;0Zi#dKo7D4)bJZ~Eui_zL@JT#LgLw%2hSH{>*gA93y_j5@ay$DCV8Pv@D#pBeq1%7G5g2i}F3 zfCQco3fm1p3C{+;1^{(K}&KNr)E0cCl|SllIq-siJk5P z#6kBi(y)6AWyHOfGU{1DeL4UKJCI=q2J9e$9hBGK0D-pef*_XiKHrOKn1(&pJk9`I_V4tv#7hrP>a zBR)m*;J-PDFT4oU*Wp@>?K+@y*$Q-CduD@?`=>PcUnZ2)Gh_u4fTiu`t5i~D(0Lq0vIU|s5yif;6XR5o3Fol`p}(yf)1=-I-^ z@@eubM%2@rkoV|4$TGhnQ~_fMox>PLXEH~g$`c1F?7%*@7|74R0D`W+2K2UTK$y!1 zGvQvJPJ|)89@S$H4{Av#do_$dIu(NJZBn^Svna^9fgkQs%Zc-@Vwn*Y%mP#yqYhKd z=)x8-2eCQKA#6Hp2$#kh!afZ^fOB~4z&W-EC}0Qe^;hA0gH}I^aCv_+(rf!zB;w0K zBj#X_p7?8r*6)0ahG*TNkl5an1h|xoLOo0P(Y{68WOM;L2Ww%K<8xVU_$>Ay!3>kk z86+ff2Juhhi31IG;K2^6^Us42_<5K{+qY(;UEZ6B@%nH$2Ju;MG-iKi1mTw!1MT;^ zV2*XA+TXTBu5>LBYrXPBMr4j49+Sz-z-Mrah-OYBDV5ttO5*mD;&=n3Sl$5fX#gUe z108nYA6*30=i$A#^~)gA_RVRN%et{RuPp=dh@D+=n0>7#+~Im76e5&+np`_U*d# z9)CI~ifUyJW7{T$2wmfXWIoXW8gzt8PY6@QkoEF3T8ON`PbX`H>7i?7y)><~m-;lG zI56NG#J|ATd(S<-2jYe4c-xmpQ(af|W_qt`&qcgjm*cv#)a-N6l88N(VWLwPU>R}Qlkx;5JHGLiW00!rUfZ2ei~&RL!<2R(8`JI=XkGZ$@f@SWpVnnFw^^oZ1@>IY4PN%2{DYjF-D$?(IEELhbYn7 z;9x>vkdYD)m`GP?a{QEj&{gVQ+S7RAz=R#7N8o+$@9^IH+LDQ6n->N$ zU0&+U_jF5(l$;2zBIKR6Q(Hs|jgveVPra)^#g9xgSFtS`1 zPm^l1{3P0Ph9tO)Ar0!G%L038PXkck93DH!V29ANi{?yL&)rYGyRXFF+QgkG8`8A@r?;ALTYve;mvi45s}0(~h= zyPqhem+r6Yr9F)&4lLL~@$=(*L7>^VtBXd`Z!hl7cUat1Zu3I%uKzdOJO={68RpAI0-^xQe#EYAw+&uG=&?PMq@`7(b+%3J4e$SZa({p-8}`7T ze-6s&a$aQa^?5bE$9F?Sm+vlZhwlMZEBd&knQ)HZM7zprVBezG3vJ1D3P(b1uq&=M z!W~nS?1`!=@Iu{d_Ci$+d7(;2eVztjz7MZUxCbKaYiKm}E2yz@4OGzf4V2Y$2}B_r}lxpIrfci0>r5=p%f%9s^%8xXg2y2sMGQ`RM`3sl-YX-N*T0*;zu2pMc#K^ z9dh4&bHJGAZpoO>x4cp0Va6!#ICYeAnl!>Zha2Hv#EeLQ~(cl(0%|7r@jFdl`MtQ`?f)eBfmhg<5r6!rfimnOgpSm&p2<9 z%((61&3Jvym_d9`nZX_=%#e;^XZ?Od&2mop&ibG6o>iRloDIIIDr5x{2<8XSOp zVGmC@4;OG@sUx`hf*rWA%m&2Y7G&4uq?o2JnD?%Xz?koW6(QeJ6YkgL!2+;KIGVe8&xd>-jNYqdo(4 z(zk%ZJ_Jb8UjQNKH-HO21u$`E0or_S4rRIU=>M_zR$*;5Vf*hCs6oBd{jImuy`@5t zdeK60cL~8lAR$451qcLpcXxL!l+sdp>q04o;_l4<>HF<#pZtOEbRX=4-xYe&xif3l zT65p?%!K+%ewy-CVamEwal&dqY0PR|Y0!F7sfRkH^xI}y`4??*{(lYs(?9?90|~AL z1+IlNTnkSn9_*vN3H!md@U=LG+0^scgK-_ZvV^g7-~-Hv7MrtAk(#y3m6@TJ$xhSi zlmBuL@%A=Him0`-5N*{GnrHeMD@{=~D`hz~DwiuWMlr4S57f4!T7@?RQC5>~+pj>2WMo?`G6#{&9Gz)oK4tyWPG^ zr_Fvy=bQbw?mLHZy%xrVe)InVCPP11fd)I!-~}3jpuRXfZ zF=CDLII+rQasJal0S%6z!B>m}hrzj^F&b;;;`KLAB$(_Sjwc=Oi=|%t6KN;V5$byX zXCPbhn{SZ(XLgk8dsdRx8~1FzR%VG|i))?n3zt@6lS`Y)GnZb|dY4htD%UZyGUk|B zDRbO(F|akvC#j&pSrBRv#2|x^Uxwo}R!t}A^Nywvcl9S*9Ql)IeXb*pe*H(3%iS-b zo|69t`YW{hhN-u(<8+>TrWrJP zrhs6L2H$AiTJL0|YOidQ3RbCknMVVu)cu`hvHLG_p~oOO-($owhc#lE{lD;^1{>%H zCTIu}1^+M0HJ7ZuVk|>%ZGV>W=B{k>JwLO_N57;|FTYK+zta-Klxz%VE7S!CYE%V8 z=#~4$6H0tCOpDls76o24&RdRvBKyR_R{Dm*t#ERa-uirMs#(kFc>L-)zVCJoCfvv#c(?OtBMbjCYZ!jq+5e4D-_{4Gz^W z3XCz%_fIj)@y)f&@~*JT^lql4v%gZ)ynCpr-b0jR?;&fzYBBy_4IZ$*81e|_mQOjR z(p8rZm19A&(rC`bxBSVm9ZWQB~d;a1!2MZxgk-;SwTtW z=>b{fRKHT|WZ!4hB;QXqiN0Mn34Vjrc)uYEV7(aF2Ks>x{lEeZVGsZM|0NTdDqQ{f z+RHmj40(Q(6E?mtH9FXmPrBHUMH8w@brdg6bdxWLWozU_2I^;qhZ9pnn zMU=RJI-A&lx3rjm-@t%POu!%&pezQq0gv-ngV#-{M}aIRNg9o1DRcA|YAyW*>+fHy z^ftUMH$2c(WO2SWmnvA6;UHF+!j#WR@KVo+_18;{3N=oQh&7K3OC`sI=2N3WYG@I` zt@McCc3=Sh9;8MDEe@uE23yd;1`U7rX(dacksQS(-6a|vKdW@OKGvzPe_3VlPeZBs zxyk~{?c!{E(Y$mQxy)pidP;(?USe#Bacp$7Ih=@L6&{gG4GpiPg@m`zgTvc^0a{4d zfK5o~AaybR(_ja6-rhIB>)b=Lsgh_YPY!jKsi5z5YMgHyRMtJO)!$cJVRp8x*jgYz z-|jJ3eA(1=54FS;AKlo*AmhmRNb|7RL~?LUHZ?H1oaP_hO!tfaPWO-Qrv*d~*aSoj zQWpc$p&#r)gD;N%59`i5V21gc2Ked?TG5{}t$^dB+Y?ePR~pKMjo2 z;CtchfmmTQk@*O97enoRtr&XO@_0$}3&qv7O**?v>xrlGsx5D1l+zw0l`y1Z3z^Ch zd0yHf+5UzBnV}}W8L=dGTACFrt%&N8+F;|J`pL#UrQ3#;G)QG74pJ5a+k)qHIt97h zRk$w&(Ma}P^t=2X`tfQm&_q+*Yw4~cA&xaBs?1~p}C}+ zs6Sr-`rrzB-Fg-^zPpF2|CQq|extc9=atd1)EDMg;+rVKkqvfYA$88O{?#6;-jzPu ztcqX*W?2-`xirPhu{59LP*Q7YU-FJ@U)*KsP&i`A$X^_64;uc~afY8qlWCVxSLr$Q z{v|JZ{{9rI`FszReo;yre($Z+3jbe(t8=(dez_`YcG> zsUcF|p+1>lTc1ay)zz5T)V(vM)pnWEs>e-fmE&fM0n4-SY&Zhr@gy3~=0o4>H=`GC zc~H&Q^QiQ@I4WqORqKkNaa1?ca=k~uJGTaV*wr37ufCeo9^w7A}&AO9x>Y35_WBYGPEC& za?~HmidH}Jl*vD8R4sqJQMLTmscQLURE_jyQhhP7%WfD8JJ4vxI@D6hg=!#!DEf5} zt>nHBwW&zwCB65Y1g2vY3KN&V6UxcDwZ3)%;P{cbsVVh%`%kLa}uQv z+(n7Qa!X=HHMm2^^mzTpjCOmDnI3i>C!KU0r=GVPx4S|ccfL*;_qatK_YowG2aA}E zN8dG>NO?e<$bU$fsD5lT@k-QiyhF@ztanjx5D$8ticnqI5>)h@1Eu%!qJ)uiC}!dw zikN=N5j?BP?K7vn!2=uYaKXm=?6LV_I=1GcV)|(-%s5BFt{2U*=VcS@chwk&@*CmU z8wNNXGKfL}U0f@ugWn11;BSlaAqHwN@}LIdZwiy{Lv87o{;Bp^|chGMb?V;^Pu%dkx&gRtGDhZ>xbD@$tbH2T=N~m3d_WaP9aP3ihZJ${VFg@tWHHJL z5z1^pD5e#mfXS7}1Mh-%k0Cp##jwG`kU@wpAz>L#Q>?hm7^|-^#5&yi*l?9DCa%`T z=4&-Ed7V0@u2;pj8&n{BP{OXf3YfJ?4*PDF#lc%-aP(Gb9KR?zkORd*9|S-S=HGs#G!)KIhC=Jr`Ted zG$t>9f^AkvV!IU**m0#8W^zBqY`}+SF|ZzZ99?*C>cTwA66TZkvP-eE`YP;Vun9Yx z?ZynsVQlAk64O1;W1FBWm=bdxTcrwMa-JZzEEmS4`a5$LFYnG;e7-kr-f@4@tpCBd z+1P_Iv)KnDX81wB1%B{{gdZ-(|0gu)|Lq5Ock4kvSizju0s6rO`hf}k;0pcVY<(Cz zIGn_GtP7YHcokElZeU9CZETezG)FEKnYFCDJ7f9c-ZbgsgGr0_hvVkG4@b>M9}Sz& zJQ_5|k9tY?(Qixqcrma6XwU-<1~8YS!kpF#);QhNR$&i)UhHnN8#ApAV<)>)*um{0 zw)49-OOLoUW0NQ}P0bXUvM#zeX>Jx-ntvHxA9KwMLIa+K|49cbh~(#N5p;XRKKjm( zUGn`wdd{N(T8U`CO|5tzwMC+b@#;v!$BeJVfeAMC#Ha`3;xLnSeb6O9u-`G_Zm&ba z!*2Ub(Lc6@5?%BvsZQGSCmpnp(m!oFWWLk-Wxm=>$bPoLa&Kr@{skQ?ECwck1|!fw zg88HqtnGO{fhy`p)S|Zd%vAxAOB*c zO8j)ld(viKF7w^)nd~>)cXFR>+vVTe_R7DZk14j&=ain?&MDX1;YGp5Fs~+n2CHi@ z7GQ198_szPg7fY}wbo3A8Ezg4HQhT9L_XHzZ+pJe+lBv^CtK*Jd(i#wu2EuNos*XJ4oI+WwW&OS>P+FYLQjp4*SAHrmgq)!EOfRXQxre;SNI0|hiNVQtS( zatUNHOJ^c9R*gmJ^A1E3cXfwb9{wFnJM%NZ>Do6Rme6NU{|EoNhe^C<#>u>NNt1u! zl&|#Mu~Max@m%d0N8%bnVFN}UFDik+u)3Y}+l@?7S$7XzDs1|n#n!}=l%ad%nh4@x2STyYe#FMd-P|=c5Ln0I6E9aJed0oN|SGx_YTw zfmSiIN~g%RMX$j1yMCT)uYRuUgnl-2MlX{&tGgK36f~HC20K_^^b&-5-D5Np{dCE2 zqRP^q6m4!;CR_h4#dzoY1k&-B(ex`#VNODIK^~8){C%I4`-I4su%lIqJd-u@SvlId z?qzz}ZcPSRZl4V^-2ND*yN?;BxlbFUxX1~!Gcy(wsLxCFlUHq=@_LX)x5XdqdM zvnyS5d0Up=s!!>LJ6e-1jy1*ET&{~^2v&xO(`5t3QI2}!IGLZauCQG(~RAz-i&*bFq7oq${p);Ry}6$Af29xsLZ(iE0- zWUFy~%hlw0o29?~MVi^s`b5g5s#tr$(n!}wg`u8La)bQkvjW0Y)BR$#Qhn0&lD!KI z6WKL{cy_CC9J`$u%N{h2Wls`f*i%M}@t+0@K6o}<0N)Gmt%!SQG*KMZ*`A`Gc}hz@ z6{v8(%GKM}m}z>XCdK+%rIa1wBTUXGE`d%oD-W4ly zzbMezTAyQbxFVf=p*Wc?kQeXtAT!2YDmBtuJ}E3vH9jOlD<(KmFETL8C_JEy7#8r{ zB-H<#X-GhyNl3s1G1PyOuo(YoAcNO)h3r1yI+~6VMgyr2P)DvP`cfi}T1ypHHWq7d zsm?P#RGMXZK0l3iD=Ud{KP}!(GAYJOE-orSH98_pDK*>a z#3y{5=o>m|ycn1Sev^6>-c|7K47q~F5^kWbECKYjs2!%WKp(6jU1Q%PKQFl~QEQ zAD?e45|!g58kXfQ6O`et=$96#?wt~;yC%LSx+ZoIT@yx(-Qp$* zi-9enAMBv!p3Mi($1`wGo<-k_kD^z#e5j#85LGok;VN!WU6)g*zbCEQ^h82A`AT#t zT_~)G@hGT(Ddm^vCC|DU#N>(L8Z^y&HS`t-aZecPNFy~V)R;Qd|T zc^$YPjU?_xZG}AOMcoQi(|iz>yyQpuuSJ(+zEp-DbFHroqb5|rt~ySIR+Xtvtt!``RJCYQD%&+F6+@boGOV>2m;xHyfw1kU zJDmr$lrBZJjc^WP>t2-m?`4$n@exY?q_86PqZV)Yd!v1U@67pp-dJB`wc6fbzH%0J zdg<}Np~Y8>{vuS$=0)67>*h>(a&x(&W%ElV%jdt8$W23vme1yt7X#bvgn7$0G#bN$ zUgdD1x+)G-@`4Lxf7*%CzFk8}Kg3a7o66FNHl4MBZALqMewZI*eYZa4`px#D<5#Ea z_Fp`1)4urLp?(f|VD&lfvE}DXF^kXT66T*@N}7Lcmo)z{C~5X?=E-7U=PmGDSdHE! zbD)MI4pa)~AY{E>hLYP3qxcR16y5m*g?Fhg4f>zBUSSk6@C5k}sw`s}c?0?Z@IQ+8lNa9taksN-*k;)qeBP}=eM}FSY9~@njt^kCZlMt#XLMW#m zY7kmEQAFQP6f}Ge`Hcx9?+K|TtVzXXu2UMT7}I(i=re>Zlo|6KRCZ)-)Ws=K2ayl^Fsfl6#;fz1a~&5n=YB89%V>nEa-aqR{C5)g z@6Zn%$Zvcv@|-z~+~x%T?!!O~s0p#fDk~^hYn3H7SZjfa8%;536A@Fk60q%d1MCQO z5KPD**pNX4LIx4JUkxW8RKd+26ot>hFvzQU>2_u z)I2EQuq|>pZtGK=u}ub-ZkNGj3sP8sP--ng5iby8e?Z6y^FaN@PGkvtQcR&1!x-O0 zhM+?aiz96;1382ehX&*iYFLL$1siZFW8QBCmup$`~e5TZa1Vv4swyZ=C&d`Jy+C}Dmi4_U}ld>=`}wRwV{ zASo<|B(M?^$7)CvYoW(j4?V;L^Z=VJxrfP1?qZuIBG{fo7`t!?VlU3cz)J9(mWK>P z7QCJg_zQC>c$X_L#Z=u@m};^STU&3(WXHXj^%N%Np25V@bJ)1< zJSM!jFh}@sahCA&(zH?UrAeca%i~5fmq(58Q7$D#)3xSnEg92!f2d}3G8Z0E? zT@D&(I;${^xDivVwqt9?UQA{k#H7Gu*gWb4HcdW_O>)j+lalk8SaV^H`26Cm@w-dY z#%-4;2|ZWF2_siV3DZ}Gq1_>1kbtlD8RKgUft4YDP=vXI68J1b@Hk}9KvPar{*jY&(4}>o}V!*yf|%Id1>0T@ye7*>(vR9?^nl& zf36J^hpr70r>^xAp8?#vQOz2qM;{d#@KwDWqu z>EMlC)5#m%X88IaQ+%`26yN$~iUk$|tNzshep3T{mWdE}KJa=Bc`od%$&H;1H(*DL z?byy{-wfUP$dnEH!~`Yy%(!**g)wrq?18+?`p_$*sdSbvw}!c28;$fVZKxtML6 zcBJf^a9|u6vtykcp#_{9vWd7fNJ+ffZ=K2CXH|Hkmt1+PhukF4ZTbFor)9g~FUvl` zpO)i-KS*=J-$_{HGYQ}Q*K%R7I?NqZU>>IjK8p+<$Kf&fZ&^<4p|%pU^wv$en`|9t zlJ^cf+Z`EXxSi~`_dVZZ8+y5$7R%pdlX|n0nkUdfDHHr<-5}I%{YLnQRh!6H>mHF$ zR-<=6Sk2yhN5&6Yt?+{vR`}sUU=7fq1{w^(<50lkI6)@m0kz(2*z4`Bvu2EKym^R4 z+SBJoKiuu&a z)ZvFOC^L_nDOj`-sHbAFg}|CHw^s)Z#^7;ikc+uO9_008$*ix^vT;AHRYQJ8yuCi= zySlun2Y-1uo@isTE_`$LzxIU@cI%^koX|VF^t-QZ^Y6c+S3Y`4d;a)^%_p%YTBq1E z+K_lXZAzk+h9#?kibeQOgC_V*Q}8&p@SJjkJjh29O$I1%4F_qg>RMGoDv1rFn~ z`3_h%7s!E^??Pa0(4Yri&k~*yj_{1|5<=5~kI`_L%#!XXWv*Y*THN0v4L80IHQ)O( z(1!21uj9oAw)>45mXC0yd+_~oW|U}&OOj-fbGCGWQ>kpe<1_hO#}5kGj-3iwjw1@0 zPFNws3CpJ~0@i`Ky#aVVYq&q1;r{f#jV6L0p#DfH)EO(!@grVs`Nvqj4X+|i_cVo4 zj@Jj;U##+Ty;1J%C0ybe@SxBmTrA%`PAZ3){xr+AP(H(@Rx#b>wNk3fFXa@MAz)T1 z*%d1$EdtgB4Mw1W3gglh?oaUlqoH?EPqY|nPmn=hk`$M{PS9TeJchWtKEmpFRfz3{ zvOwn>MSd*dd~e@}IbI>+nV!*4(mhgSQ{8hFlHDqm6PYb43CuRtc(;CFS|!d6E62KF zrG@xUgE9C`8jMS~3uw;&IvNfaMqO|Q;Sbn<|2|c2X-l%!x@YmmyQ-rtkClbf&KHF^ z-pC7d7tZqcewgkPB%bOWDV^k%D3{=wr5ML5Q;G3tQj7NZrXJ8H|a1g-Or(!fNN+VQUG3>{{G?#eqqvaK5_EV-Wf`f>|)gjuV?CEUY|9>yt;vLwNN%z1ymN| zKMiJw;XMW8l63}623l7Lfxq$w}T}I#1VBI}i2sPzC;jGP8TV0l6u)Q$F>`->1_1W||yKBkO z&Vum~9`|Fye8eL{f~3QOqvV4Fla&Jl^3?nTsx^H5-)Q>!{{}`hd;_qWpFdVz2y6fv zEMXqw2-m}#4~>MKM!yr!pifyRQA-}2{g*GrQJJT@syJJ3TW*HQ!Hg8E)5(eStMT!U zg3&Q<_ama%VxbX%(m~-7a{i%-N4VB~T1Gvx?+lY0y`72HBKMG{NO3YB>Z@^!alWfKpiW>}s|NTpqgPG$&1 zBrxxV#CeGZ#`-_;jSiDzN5w07MrNscM3k$$MZC~-3;ziWYPg5bskw(^)rG)@&<}s> z)tCp+tp5Sj8?zsM&D@S!3J#;X;_IlQRBTC6sp86Ma7kmP;RCCii~otjY*|Odt!^sk3|$v&Ijk& zUH8v%67tS+f8d$nBj%PK{KO?KTFxmoP0=BxSlK?MN!2d-yQ+P1zlwd*41kpv0uy(^ zJpp~;wF`}eZ-(c=GW4PV&Oof#i;Al+p}gArD6>v>S#qt$y4Wg%oe>qLhl9(k&iI$m zuXq@?l243kDT*@#2L9!(ssG2vh9;)RY{+WRq^ywauHq-Y_$!> z!WMW>a--G+PE?-@{=X9Z@3T!PwfO`}e0dwiwn}nDv?_B4ztZ9LZ86^M^@4QRt(kh# z`MLcCMw9C`yGGAjw8j7-%CpG3dZ&L(J-xdj(yloOTdGkZq5`-G4ZzrE9y&bN zEq3kJyJ_vV`zh_tN676gK2p2iDYN$Qb0+Oc7l`fomyFx%uMpZlUm>*hULpLLxMK7j zUt5S7))Lejj?iEKT?qRiQXzwgddZ1`+O{Cyj#J31>o#I_iz8-_0;f~2#tOS${WUgy z#EsT{mRrevHaji)9QK&?G54GFvkw{f2OTl$k2!A8pK(HepzM_1K=Wzcfwt4SeM6^p zduA5oBlJOi0@PsSLk$LG5Yf+}2H+hh^6J@x+y>4d=b_ukaYPi^kIHe-##EPCkL#?o z95-5RK4G@bbi!&Qagx57FzL9>VA6eu-jvTSovF}0T2t}+G^exoYfM)hP@iczs5brc zklIw=f;2)7R0=szW*I`UkU<2zLdc_s8##^cL$;Hrkn=CKgp~%^oJS8^K?XsG41xg}gd1cKKD;V8WRnt(-=c`KwkqJVZSuHjyBz+sVns?8z;S19+rx)GA4wvRVQctP#hRYZoFHYGD%L8U#ZI z;SRMR^v?+L4<1B>9K--0hW5@Nb$k^mLv4xzWFc~pKgeQf$Rgw+i%@|qLK8_s_8#HtdS8xA=>0x2rZ;e8L~r8ApdLOlpbzNb zqy2jLc)#xaU@6cb2L9#=%P&~}_cK4u{+#_`Hgfix>CE{rrugC~ z6MX3dJZKgI%fNj03HUs97?(!iH_4Dm(f`YXIA8iGD#8rP)zmw_49tL%Lr@iCe4qMit zpEUntKd9j+zft1Oe6dbD|H&%<;stJT&vXZyWh8O+0< z?7aEj(}T~vp+#MIMNPWgLdm+;Oewzp+`8^&qt&Zh4OVReb=G|XHP#citE{nLr8O2R zUj!@%b82Pqn}2I!EFllFhjHn84~?-T(EwY4^AB5N#V;?zHQ!mJEuWaQy>FeJj=XYY zoqXZof3C?c?D8|)xNG&av>UawJb@aU3c)JsbD;|A7m+gRACVI3*qvf3zEcPk*enc| z2MucQtR%wqu!b?g;78N$!f1#sin@KDF8SrJy7Zf$-l`AYrkh(?l)cSv4o4bY-A>gz zd0(hu1YNCih`do@pD0jfmnBqUTP#vUufJPJe|tZl-f=&dKKvkuKKCG-j_+sLE(}(H zOiUA=Q>Nf~ZD35mIV}^c+o;d?0s0*%iM|IbaDE8X=6U5u-2B|zYHz)#-H{r1m(!I@ z&x>U){@03~!fq8h#tP;$(nN9{^6%x?S3StGd-*8CuI+KU{lMci`{~E2_V`hX1Ae#= zSP?Yn!2M|fW5O1$hwDW&!oGpJ14K|8)P#Hrd&N-*QitH|Xgn&PjLE9kU;#IhH+6VLTU0W_%S(Wb}$BI8KTsIAYOwNBnpp zuo7s{gZtAG#)SO|H0yQ_4fq8BBtAZ?cm-$nV6!|!u z&huhk%4T`-XSxRnq`8HQq%h;}C%I%iN^mI_i+662h;{xX8RPs%GTM1uBH9Iu17Zt- zmB3^Dt=qGLF~K;FrdX#@pZ^8)GxQqz5G9CS#z-xB7OlFnCPIH>S*Y2rq9E(TdH!~% zvV2`Grn6c6DPF#}lUN}l2_7-`W8G38M>7k=qnNdl5zMzz;mpn_;mlF^#1dg{SbQO{ zGHCc)uSS9E;dB&@d-0*}z|-h^#Ch~4<`#M$CxPl>l~+_m>uxBHFxizCYIP_ph<++9 z!0BSLpF4kokN533c92N4SJZ<@R{SG;fKEc{|OZ*MgkSK<#5|oyg#_6ojk0$QOj<7tK9!fiz z9L%^7AIRj7@%Ivl@(mCP_lbBA>YX4O%+8hw^s0E`@6{sh=lN5{&ud89&udo7&kIWe z67zvo|7JnZ7j)TYG|0pt)NgJ5&z(j2fjfuqU^wQ3D1DyCmsQfG9CfnWIX))r9A?s;on$t zA+RQRUJ~eV*n?&~ccX6Dd;bY)-=C-agR0XnqteX#s3238D=R}|b!w`?mc(SUeK85v z$0Fiv&xXc0T?veKyXhC{E$kf;bl)>9>aj;?iiBHep_FS#gS1P?7a5n3UTN2msVA-> zSaKn-4tQ=d__(>B-2g@CNeJhCNOWXp78Vj>>8L??+kMdeE}qUxSFM1Fe0i0lC-q!!r4)+A;aNUYV{MVs(kxS9@WG+;hy%QDXokckX!YIA)2}cstNyX;tZj8(& z?h45!9SX>#p7cq#zu=YTa?K;fQ@}OZU)U)r{5~Tw@v&V(uDESNjRZa6gCsq^TY?@x zE@2yo#TNn-w!*s-@Yskx2XUeov7D$joddkz7L-$T5~Y<0prkVREyz-(<&h=Y>q3eN z+XD(M_WR^hj(O(UopH-`zT}eaaosV?_qKgzs0ckX{=Q8{&Lc`j^<(RdccRwme?%#1 z1G%U8_}@Wa?~2ef$9^Npt5YpABs1i)be8}q3Sw{seX(iYUG!ORBNvG zuQJ^1U17GHRc>{NSw`n`Ds?>TP~v{cw%CW?rYPhVr6^8_T$p{wvasqNsqo!BQo)~l zr2O%Fq&$3oA+Y5Jcu#SokA4U>!TNgz`0u>G>(3P{QC#f-6xnbYg+9BFf*PN4`ZcPp z^lH>!@BYkWn@fY`UdMXcA-g&TAFa;qG^N)2f>llM6;e$czj;m8P1Bkx0n?gyw@s_M z1xzb(8^-qp1(n4lL`CjB6h@pYCvKZoV8MmJHaw`u9if&GgsKxE5r9-89aiOIV24QP z^Ia&gq;2$9)ZNrq4*RWMx*oB7$>uX}2|jJw z5_^u=l68U5QhkZg^5HV!MfYXn=CMnJCVU0BIv<$9f&TS@L;!lF7*2=C1Va~yf zHShr8Ys_K8Z<$98zEvF8|MrGY|4SF2!ROKA`k(O0h4{{ds{(ycmJE&@Qi%jeWxRKc6Y&Et?p<0w7S3V)9UKqr}cXl!1MCb7gC`(7!@!wlOdG|hh)YZ zQURy;oXDtm)^+xEcbVeN4 zXpMTT(-`&Npf(oCt2&mpNoBlbi}LvMtx6N$wfQ;0Zm4H->}AcHAUq&qExbY_&1_N>+t%~=Bu^*IwRwK>vK z6>I~k1OrkD_m%S4k6RW;^2p%SRnoX2PO6Ln`45r*t?& zGGqM_Qh~`eh%mbck`O*f1};J>aT8Jr5u^wyfC8j6a*#;KVpT{cv>=%c9M5$hXD+>u%Yo`;^O2bgsSusxaxBx(e;wf_8);0l5opJcKsHApLj(>4z*jkCo9GtbtBpeRKl)<~SrH#~>Lwf}PP} z%$yf20xLQK;DGNyA|Vb=Tn1dQGE|3Xs35Fmz=^d<%dnQ+O04O&3TybT!Rle_uzLIk zte&vwf9@5)qZZ7RPEg|raHD|L~VAxa3J7#qo>meWwtIvwy#5E;g_N@etP=^y6m@UKlHr!axc{SE$uba~e-Y}~j%{!x= zym?wXYs-{Y;nqp5%54)`&$f+gwQe8P`mudTt9$!^*2wl=t(omTT6jmd7T)8abf~-IX0qj&lx(dnK59kpVANDoz#oi zJg%3pWlT4H+o*2-_7UCk9mBfyJBD;$?i|$lwzE&CYiGC4(9SO1>7BoI@$L>Cy!V$5 z-uFuz|1%%>9%#4=j!O!hpAw`2nu0L)Z^2KW3lnA+Q>kN^3u zj}Ls)!w0|W;Y0I*AAr+%2&=wNL5Dh|0eS+^KBQEC6Cz7Bj%kwqvT+M@o)L5U+95NS zjRU6a&3z_8+j@vmJGzY%cXb(O?(QTM?)^=u+S@^RzOS9|ao-O@$G)$Gfqy<5O&<7Q zgb%+n#7Ev5;-jw(@v-^955awk!o8sg&QBZ0rV)%wbGSFG;N&-oGRGK2XW5Xo33s0r zWo?h8BX1Xpwe`2T|Bhc~VY_~s#qDV`P22a~ByayWlkx*!h|dmwCcZoLFR}gbYm>gi zuZZJEUl8%}W@CJ!>3=v0pZ^#55onNv>!AvLp$}ui1jYne1kFIT&KO;O$)K&~(jGct zWv2~!?JuewZ<{r9>o>CZt}m9sdq0w*_P@7CI{4N+>+ox{;-jz3YLB;=zT|5*`+lO) ztmj07+1SZCv$@l?X825vDLzweiqFmmehiLF26SkG6DL4oX93R%svsJ-eS`)bo}zAs zDrbj-!HPC}i#1LQw^-$cWVd#Kx468&;j zrE~84m+OPGWRvoybsn>gO1ixBKfMV6HZlGWuC3DDmq_AuDwu7 zZoO1YZogbe9=x1Sp1G1o##eH!@Rghez+%w861ZS}7@HQ5j8M;^ar>*N&shj{xIIGO zJ!H`bca3GQn1t2ME|!~~InsC5IXM4QZO=MfVe5Cij2?QbgcftQ$R_1NAvO0>KBeMH zE~WWe4&@tv7NwUzlQPMlLBag#RLq~Y09YI}sDcAEg6r{jHvs)K8iw5&U2Zqf57r&@ z!AlCg@={yc#4=c2?{2ZF+SO)fxie#biKE+*A_w+~0{g%-d3F)!b8HhXWzjRQX3$Fb z(`nCcq|!d!Oria`l}sDInMA`k6Y2kP13v#Rup~H74RC%$&|-ZQ%|I$K;Bp52VqHd` zVW&!~j|6(|qs&$3t+%Sm)0DT&!+K|to8A6=SC^x?&YmZ;9R1E_FhVb;ImBK`u}|Yq zvMacmXjdzcVEg8Fob7MHSi8~Nv36J>#{NHU!RP-4mWKAVz=4{A7Mnw8((x$japOZj z*k{mN-y5jeUli5*D{@u&>F|{L5P1u|$UE~`^!-`xjz=???k7`Se9k312VF{Zin|+g*Rx{yYB6X%T-W76ydo1IvT^GyolB(BZHf4Y=<@ zKYX{LS3&zxL+B+`8Ga9yM96UDhpVs54mDVx7G$<9IlyXPyr1pi7$2t-k>2iS!@Ybi zg?I+@2eG1W1$d+i`gs(J__#OR^>+Vq&)dBhKBw+@dthNeXg;vwHh4CH4(pw07FNQ0 zSXsSmSn`LEKiBnU7HX|+!7N`+7l6Kb1*c-fiEb? z^^AX@=S3fX|7&c&@SC2#iGm)!xgu^pHFudl|K4-;`E!ryGk%BZgGB)0`M_#h;GO^- z^et$dxgLG=Sqi=nPD6;^flA^|qrCXrC^Jz4r6wpXON`fE9TQ8~6cKH)D>RC7ATYx2 zm|vLlY41>v3!WjqS3QD5Z!&}8Z@UC$3p)i?-EjphG#wKg6icB)(4NWlH5g2Fvk8iB) zQFgS`DOQyGdACTPE3OeC*PX&+1sGwOLiS-5B6eY~?%0L?21Z5fLb0%YC>ELztji1I zaU)bk@Su;L9H==6PDF@?6A2P|QC8|Pl$w4WC1yNAv6*t5ks0dTA?XI|15!=5`KFNf zdL_{gc_cFUmo`_ zfU+9i51jB!1n(OLtI_e0NTjYtsac0me9jdVoeQTTnMK;= zo=M&Bl3{SSJ4xASVqAkQ4E(g@8hO z7z@kMCpYlEf#5yCf9HeuO3hl1;_~;Q$ifRKv{)Dgl}I7K5~Zc=5^Ww3wUt&$-$ki#`p2rm;}EIb@0fXc#7WcglrzNgqI1UO&F78Few{Zi9XV%Qf-e{s z&kv?7L7!X^dKLiJ08WRi}>fBDsHL|*krko&W%$hGl4a&D4AjOVIccF%QJ z(4G@lQ<_NYt(t5$lbRUY%^Tfzn>70FGj0q&VAPm=*r2iKsD5MfG5u%1ju|wJ95bk& zJFZ`cPt3<3TgYIb4=SNDBM+`Y3i!{+5@;WC5N6YI@nSMKMgI+Mw1^y-}^> z6R+y8US74IlN(ik;!X3>2=_t>jKfUGf#TqVil9oU%7DrMJE#n>{J@3Ge(grY-=~mK z7eCVfa|h`{rHXcsEYj*#Lz=z1NTbh~L%om0sn$>9Qt5YGrZnKWTyZdHrNUr5x7<)J zkK9oGD%s)Bt7M1zR?7}d%}Y64gPc?t1CT+4Kn}#JhpG(NB|~}(9=wMK84T=2IzuOr z=ExPKHhLQ=kKRX$W8z3*To%bqs36%1E%bEK5XnrMA?Ya!lA3l{B025BAwCnxDK-@g%a zcMdWLe#jsMp#tMRR7Z%xPLL=BtL?YM>@&PJTNjO19z=leRaL5Ug zfqcj$YUU*ka;U#!&>M0f2IMd#IIUD4cFCxABFI}-Lc3cbgV+xl1Ru0@4l;S=pD|)3RT< zCuKXi$7Bb&M`S0thh#DLpd98Nkj1O|W%26yz*j-TCGeRyA%D0BK2KB_ydSK9%Yg5e z(}tC46M)Kr6`Z)Rg4Z&v5V#!6N3NKYPh2@GpRsaAKA(F=zMOknzK&-~zJ+H({xi>* z{BNFN`2n6m`AMFB19o4r@=0~ymE&q5++%7nJfmvKt47qaRu8KctsYXVS~IBDxMo20 z{hD6Y_O*Z1`qunb8(-6*hS#;L;tfAl@y0e)%sU_WI%p68&;1a*zch>q1<1uz!24@R z{g+A2>F6z))-mUr(4j9I)pl7itj*>g(h6KPpcT2gUn^lvpJw{n9?kr<-J0d={%AI= z>(YF)zC*KZ{ZFmlbw9MmHhj~ZE>)`*Dcxb zQ@3v858YQAzv}+r{iNH?`(Af+^BbMnt*ttE`%4|XqeTbroDX~x+P?>0QyM;%!TW2$ zn9ze0*Nq;b3FD_|n5e#_pJ>F{O(ZYxG`8dJFlMf5CwQ-IGYVSw-6(3qSHnc!&jy*B zJ{c5l{$NnO^_~8Ut*;HfZhL9awY}M3ct?}L%&un!cu#{q-czrS_twn=768xx2z<9Z zP^~izyV!aylu;*1kF(vveAy3k8uwQ-r!}8US?k{u{dwOI!#1}X z$8LRToVxu5A$LbJp=?(Z;o0s+qks3*6FT z5A*?i>cI6NoJX@}*U$(_2=$Uh(Qj)x)JDo%N;(yX#Cd_STpb?yEMb-d}0*@<6%CkAtNqeFuw8rVbaH;KKzb_(=W&;5*O< ze|@hy`0l?uGfYpT3Cl~U-})x{ZF3)er%9uabajr`G^1rNY)Gq`D75wehpw}Xt|D8z z_1t^Mg+`L#NpN>}cMXIPBtR14?(XjH?rso40>Oei4X1H;cc<>8zjNPY5Y<+<=&lD{lX~oT$<%0ZDd@G=xuS2gQ+@wkPJ0LJbUHDp$?4kQ z2B#;3>zzIh+2$k+sr!kuFr@Z32uoOh9W$>nbGHr0!euDla`)KBK9h0Ve-17OXyIJo zX3@z2bD1Olj!K7oJv;382~^wb716!fGfsV%M{2Jf?m2y%+)4&CxYZ8Y?z(HpHrK<$ zYF#f5uW@}iyvp_6h)P#sM1|Ym3@>*R{)MoN^*1tWn(R4cSo0aycu2W@qKi$r!cDMe;CQve;};v!MQ+wt_E=GjZdC^@r0}K zZw3#+`LHQC5wQe^BiCbpgpu@~a2v&)p)MU7gS|U%4+`p07Z9OY;~(F*$}e?bg>UYV zGN01nCEnXc7JKg# z@XkjQ4}vstIjlcUMNY)w=tbBcvlh+KhSEEtEEO9foI2End3LS|_3u#`9NMcqD5hU& zVDg~ifUKc~{zW75{c1+%`t2T@<9BR)w%_#$S$@waWcqy>pXo1*BV&Jupv|ngmD$^t z$Kl=`ul>8>PH0zL;FA%K#f-;+xcS%HnkKL&df=3*yTku}gs)g_q9SH;=2FOPLqD~a~*UKkaq znI93}FDE>1P*zy#u#C{$QE4INV^cyJCnSd)nv@uFadKkt@s&zI{Sm`2NYU;peBsggu-R6aImJ3lqtN z-yv*Z<~8SWxTxThA6LPLNaI|zG!7?r!=9AkXiA%jZQRkfI(>t zgtiEJ%-mMQtvz1)%i?0V1SjL9a3G~KcBT)-_RMLh=1w*hS?k0lS%$I&85YWXuz07; zRJX2aDL(2c$w7S*lOhMkCB_enNk|_R6<;_uBCcj)Slph;p>e0Dgv8z>ZzqSw3X?+P zgo$KATZAng_}N4}6mUIIgtJlX21w*;gme`&WDP=1&J74gwa8vhAl_Kp>C40zu)t37J-`lF&?B8m$aqM(R7A{1_x z&MY)lNX@rtpOojU7N6_cBPPecS7df*zp$*B!6BI`!viyNNBd_~jPp(3IngKm_$2T2 z+mn3KUX$+=ebR&pWPDo$V@1wKIo$IF&PH%Y#-F(>gV{Gv0To5PQCu<(d8PA^O&^p| zrYA`$GnPv%wQ3hv;;0f;?A|q^$X7kIFr-gVLDWG1{G_42dD$bq^UB6}<~EIU&pkT9 zJ@@7W_ncSc+jx&`VchQ!%;h*2#JI}*e%wAP|N=0#*I&v#VA+u^0()bkF zJdY2^(^eD|7>Q-7Z!lkrfv~$Uk zF-|2n#yA(hBwxok7YRQZ-4?+{3eP>j&t+y`j=`=h`Ug6IV&<=$nl4DM8;Ydu(-2?3 z1ThV35!IkC#RvY$h1A<#&;ju~`XhSR1Vrqf zkI?4T2yWIB1vDE=`!!q1dpA2Odo+7=aNF&t>ashutK+WN9`?J^G;Mbk^|9Wyy`SZ- zL;WpxT^nGv<3)eVrmq7m8-;4X|}-UR$=RfKMrZTdZ#`Gr z(cs*HP6p?$su-Mo-pTOHCl!O!f~vtOL9H!kI1hf#!v@ZQa(bW~)=yyl5Z3pk2XQzn z2b(`NV0CFEEdH7fv&)NNdSwkvu5N#BInJKGx zt6Xm5t=;k)Z=aRlaPyJ;#vAYDH(VDKf5)K&UV}Wo59lEB=>U>hKaBOgn1St?fzAGs zhVktlFuXGq`u8Sb^ZmKdV_(XK2ke1(s7H*j?vWLAA3I^~V=w4D3Bj7D@gnV~+2YmD zswAtPw@9seet|rZ(t7fleE%1_=;CVWp^EA`2UtJi@9}5-(|{>Gi2g%)YVCyvj!{PY{0U&23Y#e42$2{VbOaxEc_6F1s`HC|6?ZReX1bM znEUx8xr@199{r1LrJMtF5E;Aapy+{o>0un`VN5Onde;EmcM8z{*d1D*`(yc+ky!F| zA{Ks|fd${^Vcz#8nDavmvwp0l7tmwRg(0Re?@!{JZ35lHcp;4a5Xq!~KBAVMU>|Ay z7v*%3*>n)G`vAYgtWOVPLJzayDzNGy*zX}r$D&5JqCw{|khMn8L5!n=n8Ln`nXEI9 z|Ndh7jurGBYv?*Qvgg8(Jr|bfCpe>z;71P;iC#hqG=+Rp{4a9pq2k$#5=al^bb|HI zvHlfc#Vv3=!MY-P7Dd+V%z7HE*N@I)2%X1BI*+k*9+S|YJF4{I3Z7ncA?jRB)SWx3 zcBLayrh50y#6pMtVRb;#9$Fg0b@5>H|zb!j1{<`df`17*c;*ZOoiQg@IFMhM^ zyZF^|LHu&LAo3YXf10RvX%|ApgULb1d=E^ zl4O!4`mv%=^nGQ8_}j{D;;$=riodMfC;q(hsQA;$bCM4$Z%N*+d@6ah@}2mF)_3u9 zEkW{3OOSf1B}hN{4Z;W>!x%D&*?;y#p7$))UCg>`SWBN?$dao@T!^SDt9?fDM*F7ZrS@aVQ|-5s$7{YxJz673 zKU^coJXj;h-v154NY)K>AMu6tVgneKJzN9!I*-(UAe>fXAq zGI!PqvbWa>ayQor@OwRBRtE0_V-qp_eK3Os_!tsb0DC6TLd=M|wMD9_k&Cd7yVv=DyxlncI2~Wo~SG zEqiU#7x~M2g2E*|LFpp-Q%_KCi!henVLEf>VjjoORWj>1CpL0UY+8!1oA@MxEe3d_ zZ-tizuA*lK{^BPF;gUxN@lp>A(xmSj0g$= zWbi=#g25|=vj$(3P8$gAP8tY*oS+vv{u_izyx%{Yd3ObmLziQ+iPytmI=&e$#QUwQ z@XAOJPmRs+$iz`}&%|4D$0S(lrb)ESb>n2&tHxP!myHYMFBw%T{AsjZ@w`#9(mA6e z%4du&v^!~hx7~5$m+g)if9lX`EOb0%EOa_(ET|m#4Z>7r{sp|ptIbzEj)~!D{4kk} z4`y@l(rg(XTdc!9OC#K}vK3vkbeH^P86fkgMTFcri+F`I=4pzj%yX4bnwPXYZdTL& zm|0VYBWC+M9yUAG>5$otPW#QDsepShb3 z;;T(RymT0hd(IgWKT%PvJclktwetE7!-`^oDVea0* z%xld2Z_|w~t{d*Tb;l*IJ~-h!4u|~aqs3nvy92g}n*7bA>;3HI>wMjmYkYh=RCx!h zR(M5qDf3L|UgD9VUgS~GtI)l&PriFozdZNW0XgoM24=fI8kpt&VPKYrFd)-I=>I!} z<;Re>(b<^EnB zO8o*=i+#hp6#B&V$oEOr$o0D34g>67hn2}UvsFhq< zh?8=0ut$f&K!4TzfY7eF0nt6O{gX5@{j&O``xf_4_1!iw#kXZ}lJA+JiN5#9+aZa* z!r%lyVGtSE7GZUJekSoatlHzVvjVPpNa4JnG>!y!!``rAXo{GQZIMe+6S)o*k%p4e z2n)HQa0jLQFt_%(p*||vA;DcTf+KsR1tn;v24?h04lL}S7*I1PKA?F>T)@d;u>p6; zn_)2lKZe8v3WLd@wg_vK>4MsEE-2!;i!?5IOK>Vc3J2K>u`6;2>Z7NiCT1}z=%h+x z^d&{nX0rKFc8WQXuI)1;yj9Y}1G}V#h4)AfjnhmFN$V3Il0P6exN2~8@UEdz!N-S1 z2HzSU8T^W`--kv93q#1@wg_vLI3JmN?PU30;5}zQ?nD?Y#@+}OG{y`>EuWlP5w{Sf z@!BYi-z?6HGnL7XwNcE7asDGM+Otz~lz->M$j~0~kujRF5h;D5!*d5jhF1&@58E*` zEbQp;(6AfiCHXcqG)x#m2De36ufX{zkB<%#T=4`>GW#A1WA8z92W*S)hswn9C{3D& z!lYHmOVSf(CmBm;Bw8t?COEcBig)jn5a-)DHa4VtbWD^+WK2?@@aXITp;2XngQFUU z21Xqo9vF3PctF$(zJ47R7$poLgWDqL$#Xu+;3;$G1s~vO2+$J6>>a0w>ZIN%O&N>A z)H%paTZyc+4Wjh4t#62748~0_XZ>%tc3~r0CMV4+-f}1YDX@8DEIJ0*wb6=7y%F;AY zm_7yVsfAeE45E*qO^rxcap(mo>HOC>Zdplfhic+Y^;xL$rK>3w}t ziUxWmZyW5Hd|;?Y@+IV9(zm7)s%bEpVCn|5z}`fcd+D4xlnsg2Jrs z$jKRo^xSDk$yzE)Zx%=Ao5)1wSu2F)I<*VV_2?LwqOcMpsgM#&xxf+!MgL;AKYWUOJ9!laclIcZ?(SNc zqV8Of*W0n6y01gQ-v0Il=lk2|Kk9Fv_mK$w?Q{PPfBxeJ^Z$t;jsdShJ@an`^IvX0 zvtLO&#FzI)bj4VNSI$Og)d~bxuR}n!f!MFwT-vAFR?f4^MajL&`w!Quz)sGUk!lW= zN!{!!a(dcSRBBjP?CE7yakiIL`J-M|Wgm#p+p6^6ytM)T^!}eQ*hvRb!}>+c;AzZ& zvD`H!ypB(&*fs(IbTPj5i{ag{2A++Z;L&I-c5Aefc4>5!b!zlbuy62JwrvP+Z{3j4 z$+96^&Ag$ai&?|&Zl(=qx|`NN>~6aKLwD0{LJ!lre{T=g`9> z&_jf5Xa3uv2CrQM;l6tUT$<;?dCy8X?p+6my#}yrF&Ejk*h#EgT%|2r*aOiLqF~w* zr)1KS`G-+USqHYH3nJvdtWjCEDme)JcsIc+G35AWv?M+Bv|91G<-oMg^JI*6Yh zEQ1+1hW$7J&FleS4!7jat;Q!+u=R957@Qf4EoWz9^SQ;?#5F=2FKony3x-(#rv=tu zbi}%gUeLW1g0+9ei*)|V6|cEmC(*ugShD)^Es6GDFD2TSzDTq$3Q}!p`FRcK0?SxG zdmHmFGjPxz_5jdBSRVxp=^@r%l!4CGu2^$@5VUWM$EusNpmmEq5Vuxg#qIT2e#ZdI z?r>MkyAD`#*Aq+bg<$dhL@atxfQ1hlu<+q=EO>Yi3+}(ef_vZpMI+yXm7IThJpUxt z4`F?G_T&8D`s@A#wC>7a#l!Ac_L%E1o{YxAr<1YZ>1@nyDX)Vt`E@)dy~)SKx7*2KOn7&VJpC8dCG>EtpThd#tnbPCHvc_;UDjWI z4OsMA7W3bB!JPNKG4sO^O#e6rQ$J0{`m3j8u?gP>0D(1$s5AQ{f=KZemwFC-7z3C48KE zAMd8V#OtY_@N$}f7t;kipYeMH4IaY)=KrB&4729Mnf$luAEwejOx;2(h%*l!_&jSTKF!*XkF$>B!>m8?cGf+-n)L$DXMM!e*#e%- z5%74ffJeVU=uQ7Ig#KY9v;QRagG{G?m`VRIYZbFF{ljcC;y^#-h3|8M@pW!AKF>|Y zr+Jz9IIjR7=9S_7yjr}Q--NgGTkv}RQM{Ue0Wap?!ISyV@o2$EJXk2;{vrYQ$lXPP z=uR7i0nFONdCz}5v;Pc^$=oUQQ1lNA=pPoYCr0>2C-r%eJ3cN7!287!c)K_OZx*NH z^^#n?TvCD;ORDjFNdulO-Giq~599ID^LV)QHtsHchTF?O;O25cbbW;&y0$_PUs)kY z+9C{L?J>;UQ<-%goLEZ#u$*&Z`C5EgZh#NVt?+h*3tp}C#fz1pc(yVYPqb3- zSSuTkvqgUXRra@kx6X-fHXNrM4-au5rL49WOl43BtX#QMj`<5x3T6 z;O5#qTwhxzy0*4fbVYZk=r7%a;)}Yc#piWziqEWjB00JKz0~pbKctVY7i5mC7i15U z);0)ZnE9tN?=Ix)N?wySe1GV2M}~EC@MhgIJX@!WhwHcE?gks&+USPs8~t!aFAV?D zixd5+mm)r|mn}J~S0p*3S1EN$uR-dh-d^eBddH=YZMrOTc=IEfgPY&U?%(`fu4S_z zzjw2su;(`j6L_zE7W3|MP4+=>EH?0o^P9%v&F1NNvUwryZPCWfEn9F|-vWOcIN_{; zH%=P{iBB3tN{$;ONF6mump)>UC(~+BDtpMFR`!6wPPzRCt@14f=jHbp-c#7U^|j(o z!*5DWhJtbnh5NtWGfk}1E(q(EV}Nu}a0lLn<7Ci|3|Ois0HFuB=o zyXlKR>P)}1uQe6g*O&?&s(*tpowI~CcNsTSJT zch0xp*Co&XY}Z`-d)>0_-*(G(5V~bK2wh2+%r*!Mm^XEJ9K7fJ-LyTPTPoqYwE|8# zs^gH$NbGf;i5+gs(cr!gb?#eH<8CFXba#{~ck_@db@fv$b`5P;egk?wT6XPWb?9;wdXiO`*NYm2a$d3PO;!%z{Q%;j;zS_*&K z%iyR>H?+79!%oj>sP|feTJN=}^43SWx4ER$%U-6)(^am((?>DiBdA@jdqjt9_xMhk zZs}?nZUtS^+^V{#xb5nh?0QT+$?b+lqT37gM7M7}6WoNJ3GPCVwg}7Q`F>>XHIlL zcUXsXuUM5-uhh=Tp1EBUJu7-7cv>Hx*7Lb$jOQ1P7*9bx#!Kkg7GZ@P z=Ykx)s5EX`F>g7EaE$k!Tf9`za zifMkn?Na)Y~Gg zV&>f^_k^aR!!~M5wg!v!n73zPncZmNJ@~Kydzo0?X z+ahR7^F1lS6LaP*=FVfxzWe9^ngWzi6Ve-Hp<_@KHVb*-%aI+fi;M^ZQChf}RC1WD zY+{&;LVT!~a%^Zo`{lGMup?5&gBl3}d3z|fu zEy7wUx**^dbLUy+|5j$6<^cZQ50*n^xCV+NMc|@Hd_j`Lpz3=52DQFT6 zqW&wqEs57WhD(lgFdTzD{MlI_&il?$A{6jxommNkk(xLONlEh&pQMGD&U5UJ{&kl4jDA*Z{0d__;!_+1(<@uxIh;_qp?#JwYe z22poygRlj-Yr*Tlxp>f@z5l%bUBjQgMRDB!AV~$ODgBXx@JI{q=$4kC=8~G#)hV^CyJPB(o(`!e)a_I5khkg% z$v=8JBnv<3@hd;)!VO-B<6i84;5Ddc{c?JcTxQUeG$q7m_Ci$lD1_(CKuGQq1m>=R zf8Hkem>luG}Q!T$Rk`iJ};2re9ofTGFpEuIhW zVl8-#V)0GQcfiqGnor zOU zv*FC0bR4U7;83#(_BF<^t+5i>)H+J6YCWVaY64`~>B!LU;J7neB~Tlrqx5yKu3o_`TDcsgrGvmeB_lKHz<0Z!XBU|&BR zHVso?)wlqbO)FvEv<_xF^kKTg6ec@tVZ75-v~{Pi#BgVrl>W{HnJqhWiAk=NUG zfLxQ;+woFfuj#9TUZbGcmQ$Pud+5Tp@%opseoiqR3_VB)bEx}v=HDIMhoM;wCVTqB zXzy4Uw#l~_(tZCg# zE=krLd?s0Q;EU9n{epB`4u;T&CNlqX{0o@DQ>y4-=pnqBL+y9*9()V;VK^j<4M)0T z-7)S?d3-$99G?m86N|C>#44;hxgJ_44Y2Z*IaZvq$MVyjSav1^OV1=?$=O0IKG%dr z=T2kM*+*D><{cKF68^<5z6Wcv=wMhsqng)%=kCXIcWh=42tCZE!+`cl5tg2l$KpSG zVBy6U)e1R!9zL0PKU>oOu8OJ}H_2cU4fOgVB?dAA0hi^W@`pn^r&(i^1kzmFhHB7(P z8&mHO!{qzpFzLZ`Onf*G6CN(ZxJTL;`)DJ^JT}ItC$<>*)Dt6~hGF=#Gz@!QfuS#2 zFyzHW@{GLt2Nj%ud90tv`oSD~SJt;U$oljEt66{11v-GMz@*1wOnBK5<6iZ|=-2%* zl52E^za5LAZ>M1JyIC0cej)n5UxB_KbkX~xJ~TgCLj98~dVUT@k1xsS{-p%nzBZxj zw`1hgKPX`R6xI)8eRp1a%R{WsexTK-*@N*XFpc%c(nE~=01W%4K)0fb0Y7@O$D=QO z#~^63FQg}3NO$&ybYUNc8h0=4#HY%%V-JP`-GeOGp~winkfw8x;(8bK~-D zekALAvA#9yZ~0mO3^4y9Fy%Th>JBjI8R%KSnqoQ@c{-L(bRJz)>X58GHzzhn&L4A=mJ3@FTn){01+E ze8uyj0-g;M@O1dU5jrz#_oRE!9KwHl3|$C&4~8!w^bf=JAPh4l^bf;4Nf3SvkHq)k z3HUlZ9bZP|;`4}Nd>T=Sk0ZC^!^mBDKk@+HjXa4rBd_A+$cK13@--fh`ie)R1w0%h z-~q)_TZHbc-U-GD8=k8#7-G5+{GHXI+v#^J-b z6ucjog?Hl$@Me5DUXQQEtMNPVa{NBL7=Ikk#$U$c@ego+!fV`}_!W013Ai;`z|AQF zZnQzr{8^t_cPJgeSdPi033NepQd5?awfHf`0AD6s;^SmzyqoNUH&a6JdP+22PEEv% zsTp`SH4jgxmf*>>YCN9Sh=VJ59b!V!kL9%aFQPA#9{%*$+0#FgP65P z@V@`#pB{uRWlT8>u>*Wu~Ht$4W5nm)+|cNY2L=Hd`sUmT6Ai<5A9 zaRx3e$;Y2d%5Z*39nLM?g)>WAacbE)oLGJbM_0T=>&nkKxKh9YEkU%O?9&p&zak7% zXI~Pt|17>Pq!U^?6yKMR#rqZ0@qGD0JY24gJ1aKh#tL&>S?Pd_D?M>uD*$J;!f|?4 z98RuE!HLz`IJUY7M^{(jh;}1dwfEr=KVbK-xq%j)XQF1EPvYHc1<6jbW33?77GYF3 zdKhN^1wTCq$70n0eAFI+=h_o-fAwtKShE8ES+gGJbc}Fntqo4-y5gv=4-T&jM(esL z99)-x1MAbVZ+)JqWqp}w&-!iR<_*o_T^o){c5b*VY25f&Qor$o)b@>nblpZl<|nmn z5XLcY&r+d-VD?|t1K+qN<(2M0+}9n6YwM=s{D#Fixlsp4_4LuY$pQy9Ibz>tPwd?s zfac9%qTQQg#XC1Ai+60vk~D59l4{seB~`y=hxE2Bhh*xuT#%{Jzb{**|5mm_Uyv*R zFJ*lF6=5PX_xz6k;~>^@*ZK9`@pz*Kz0&}k+dLk}xo=LZ!7A)C)We>wCfK#r7CVew z(P-o&YA^~CZ#RmRY%_|Ns@<9sD-;=j zS1dFZ6bpWXFqL_CG4FY6^H|n*#OqC+aA&hBF6h%g7>&k3lUdkfx&k{**Q3#FE9%WG zvCZ5OwdNk;YBPUHm074%g;|VDxml8Isacj>iCM9Hv01HRp;@z1f!PV=JhPk1x#lmF zbIiXgXPXPkS-(M;$;`W)$FWuc-+0gW$rd?W(U-$X}t)zQWP_6bClC<%l=5UZD^ljd#FRQ z-KCC6c8@zH+I{SpU?+6=FYWpI{}ARg^D_5-*AwHGKJR&(h;YJOg8kO2bWa1Y&2a*% zo#vsOKB&ZL0}7qDBH!6klgpwv>>41K~sXqVbfQ7$bikuGOdBV6vQMYz6G4R;k(NGH7FJ?^|Tfzdpb!adV0vjd-%!4d4wv&c*H74 zd8Gak>7L&)+`U>Q%)MDP)cv$ti2J?H!5(kbf;|LPqCz_T3b$&b3j%H%FmwJK1J>W; z#JuAwk19_Mlz5LozRxsd`z%6+k2X?$^^ojqghU@palDVcRIHDibhM9;T$FdPLWFm; za+r5=`%v%Pj=|oQDnZ`6)B?Rvb`J2qL*A$bc>hoh@D^0s!k=CEx{*Eiybh;01_xMw zryF|@JY-Pj(*p&5Ly_%21?m0^kis=Iq2}W!s1lW5`T29}4d=pNX1op@ zgT1WZ!0cDWzL+BauE+@-g!G_^NTv@;2ws7>;B|-z(MME>sVE}EMiLh6Bpnj$DH{|V zpb!uguH+vS|A%i-W=HR!QWdYDCN+mWR0GeRSbMIjMZlAv%$>40!| zS-)^Ud7to5C9kl!KRmlb#f=XMsG#s~? z|4%dj@8=jav3_+R?|BBZ_dl!yk|X;dE^0KQqGupHn)@%rXd^ggBLZW#!av4B>=$D% z=K>Y-Z{Fkqhs`T6^H0Us`k-WRqdl*s5(S_RdI+Ee$wez zzHvS>9^sfH=b|?~6zi9TGI!F&q(mtoE|yQFh#!v7_$dfVSb%^8E%+s_gHNJ9yb?`C zo{2UR_e5tY*F-N_m&8DMr^F~Fhs5M|b_x0IZ4&A_S|=RnWSwxilXd(v@}-k?oY1i? zPdCv&Sh4?sW3ZF?yC#g;JDUC>hPf+V8sSOZ5S%g?{;3n-lQsulY0Kb|t^>F9O>j*& zf^)i+$SK`H;*jnxZI|vZYnvV+Z=If~Xqld?Y@S~Ihgtf*_Gal9+nc35ZEu$PxxHD6 z@GtK2I-GK#fAHb^k>_8|+PMk5_nydm&#BCQ87lD3>I;wT(Qu`Uapu#u9dlQ~K6gFr z@(f^`X9k-*Tai_stJpHnN6I`eRK_$fUd|*hOTj3wQgLhE9wo!P^Gb%fkChB_J`q9L zF#Dfe{rQ>T&M^r3uZK!v_GRtp4Em33?!%a`0Ovw=I1~+oZSf>nm&}D_$#Phf>cG5I z52mF?Fe$TyahW5G$~;9|%Yq~Zi}P$uVI4T-Hv?;Xai4tj{cJ&)s9KD%D_K-5(}3V_;M>9fq|FVNkmg z`gOY4Qnv-0>P(=w%?2B{xnKj|RO`1#h}LaS5$kR*66@4ANp$K@N_4j0m*~{Jm*~_A zQf)cR_u@|%SIx06%H$ZZb~JOie;M<471vwh?yVz7uw>6|ENy;+rMrI+;UDbf zHP{x<&jZ%aDWHQXW&UPu_gd!9de+~;9)LYu2eGdMRvgg8@`FRM^w0z>IW!ZCS{Gqq zs}>d<*2Vn8TQKj48Rj0b$DE^Hn0+)Hv$)yH%wy%4al8f7k6*>~qc1Vz$QR5wEc}B; zM$bx)e|{m~i{+e$HO#-;*@M7-1f$*T0cqhnh(o}mO$Q6TsB7bO0A67=BF&!*2Az(3=A=CqxXGZ^m-5r&4&fhc(eoRkIs;X==tF7KPYAW zEc&-NUiW}Tt^=V5`01cF(1WZv3d}tPOg>Ks@E0Axbzr~~dGveQ8GZOfonFreK;y-5 z^n5}8@Nycuy_$#4ua-ge^;&d#V~7rHzH0Z*8%pn@q4+)*3LmyZ{zEI|KVJ9;xvZbK zjeR&Adl!zq**?~9W&LBo9D0z6e*z<}(m&h;G@k(KA0_DiSqWXgs6p*Z4|Mw42kpNN zg3|X9kpDgbGC!t6!u2Q&3Pg|a&CgyCZdXmx2*sDcg1?Z${~5;m?#*;S9D6;E{R)o# zY>xeeOTbW`d!O4txBEcn51{h^*S1Kwwnd)KqXV6X8l6WE{+qqYKr(_%AhXC4qDzbj zKLiAR8F4KPA2az61Ub47CAtS?-v3u&_U|$ULf83({-F!~Ll^po&i2HEe+QBX5=YpF z(IpGtx)k7R=Q4chQiIQ38t|#h9(?R_7$3Tv#oI2o@v`$XJnQlSPr9-Pqx=8xs0Vv7 zenC)T*6zfttHS)wX{uB>2Kj3~Z_F(j84@MsWcl!PlL52RI z3$tzyI*2|Tlm7G%1Lz+H&_DEFOAPR%pC!KbbH?X>-uT!r81MT<;$6RZyy=&U*Zs2b zs$U^q_Akft{&jfPeA5bQrsV2gL}i9aA){_+!}rg*N5N0<&jTtanyU9rw2Mi4|JNG8uw2Gb^3?i^bbQc z>4A7X#?wDcpbr{97oW$kpzB$WS7W#0*;s2l9_xaKV|{RcTrlpAi^T15@whoI6*tD^ z;M({iTp3@5zs5J<;`kO^m~aATCtky;Nsn=S%6lB0`U8jAAJj??wL$33o`V6*+@twA zi7sX;$71?8e40K3ucs}h=UIb?Q@7ymRCC;%>VRugJ#cxNKQ2uR!-eTFI5#~BXQyZ2 z^o)F*no))mGwX0{=58FFc?5@NUBtoJ53q0UTkM_p1AFEP*!`3F|3v7|`XiYCC(%R9 z;8@HVz`mamcr|At9?hPMJF{2d`kW28G{*?%=UU^;JZGGo?~UX0195bI1dc3-L+gSR z99o!-0}G3=e_<6`7Byk-qJwB&d=|Tw+{KQiuhF>lJL;DS*iN>!K^V+?{^OYaXRzmg zUU&Rh*b8qK4a6hvS$lKgG+bJ=2xpe);Kb4`IJ(Rnt;_6jV7WW?E%!ys@(}D<5ryUz z3D~_d9XnU%VaLicG-_=}gH{XbSDnJPRku*P`UR@BzoJrG5dEa04Z?6mx-e${xjc@= zYWTRU8=frF#LcAxabd*-oYb0!!>hD#VD(0{Xd9zh+ZwypIAg~ePc-TTpg|`L^*S-w zrjv}iwOOcLTZ|gr8dT}-7FFsV6P2&KCMsR`R9v$Dv$$xzAo)pQ8-&p^baC=r8^>c= zu8h}Qhj52I8Go*#e^^8RpgR+L*Db>??%mV0-T?I*%&~2QJ?b{Np=P5Gsy7Cqa$_Va z^x{#jmo6&P%NLjERf>x@HA#v#wMq&$U6RV%{8%b?^9QM%&4N@m$!dczfw_Awk7JoE zK55CY&q)TCSJOY}_Q1i7!_d5GDw;Mg!uHMDsNJ#&)mw~Fsc(&PeJ7OZd!j_&AH@ct zq9TJBQGr3SINu;gl4npVm19sZoo#qPI?M39OorhDne?siWYV?@GO52om?EK%BP+#t zu$p;mtr%x?rO~R_1$c8E^;RvE8*MS zXYRbdmbsT-bw@X`_rQR?2S)u-XEF|zrn6CMwj4!fx+pN)f;@9mCJWeXvJWVFaB40MaqFOHAVz+#p#Yu%&i`xn@mai3}Ex*f0TMF_~mV(@` z@RkGT0ej6k2HZLhC-iy0*O2|@#_j2ydZW@}G)gRIpwMaw@~qY%+e#0a)<#ITwnUn> z15&KrM9J2^;za8ZsRZk2={W0TnON&wxoGPO`6!#63XwL)6eDbIDuvs;R1CBEMg#>S z|0}{g9>YrJJ&wV-E&QF&ui3pOyw7H?fNCoZl-i6yf$db}&-BH7Ly ziT1XLw|5c6*?Wm&>;t8u?IWe5>=R`p?6c*=?aLHG?VA)s?2jk~+h11>a(JN>+W*wgY0W*#Pe|BuMl0~^)4;0!DMULZSWH`=4s^dx|JFP>4(-y=z znIP858qrQpq9`X1afFkMB) zDET=HKT-UZpSN3H@;Y2*<~zpoZ(;6hwBc`kTPYMfc15o9AY`~qK#J=eB)Tp`ysHjk zTsI-g)d&%;mI!yX7lpdIi9_6crGni;r32k!Wdq#O<^9}>6n)*cEBm+|Z0GIvS357a zr{uG;mz$tO6n}+nxZrYe`bb^}b7p^A=3f5fDR&eh-$f0XZvBz!J{E}{GZE{t1ks+_ zi16HqFi%5-dYU8H(+)wNF5&=BZz+GzU};~^Xjvc6RCzDY0!2^HI%N;f{q5X6FOnzZ zld`*~phOgZMOeY!gLT~Zkn`YxH9ZvT*EsWjrwi{lx_3e<*NP>0k3x*kbVT|rM7Yl? zg!rsSkgq-heNEx-YXd)DXR(j3r^MSgP}DYzPtn!4M#;surJb|y1@f4D zQg-$cl!)T5eCK?;$@k+4&Vv>^IvCcj71#68eo+BGm-#w9RO&M7cQ!7;E($sur$vVGt=WxK$K z%Ju;th@eCif8{NI{$AmAIKp|b+v%r=V&?MZ?|mQUPJcPX1oc2T_YMjUnTUXpIq(hT z{tKaN;1#L|kI=1f53_)4n7zm)%uVbZ<}2kG7Aj*O7B6cTmL+c!R-tGewp+<6>*!b+%jgU_i|8_Wv*?`)rqL%AO{4EA zm`1%Lf`VD(KVdAwNxm2Nat>_gxt9kqcZSeEgfjO+ znDAE4F#ZP-{=qeVCLG}y?DXVZ4CGu4=R9Bph>T+WIQHKsD!?VVCmd3Tz?Lq?I&Bs# z)0V&@oog`C*TXbjA0`>5FwU@rQHCqFX84H=GQ!3BnaPsPnFUgtGV7)FGLJ~>W!#e1 zOMfk`m-dYaGQV<;@5g7q7uj4^__>F`j@kQ9^+tACdVL$*MPO{in#`$ocXg#1f5zw3!|<#wD^?m zmD?v``Sw{@R=)^K>$R}BUKfiRwqRj{DHb%?VSb}0<~4?3ZetQ=Hx*%4(@xB6I*VD2 zk1?y^BWBeL|6nKQKsCp|i1jmaIR*tBgA$HG1$!W>*@IC>|Ixr6gq_luzq>Q$Huu5o zJ;O0;?*z=;I}_9QF2uB!m6+P1iz)lIVDdgQOxn*qDE9M-qz9rg?m#xi9^8g82ajRQ zf%_P<{~gBc6aGP6G(QhmKPQj#fVG2J+l{rYws9X0)?TxdJs5k~1F@eOxK$cskE&wy zF-?qOU&_eiV=&^xR17~c7eh}h#gLP0F!F9v!&>Bb{~45 zy@5VwUZBtEFX(gXf2rWL&*!+Ol=8h;#cROxw)w9E(rE^k>;q;VV*R54qZ9g{lR)#L z0@VNNf}WRqqsNt@=ze7!x?P=)uGbcz%XKYuzP=G^H_V`V(*-KGLeS}UIy&60Mf*EP z(eBP2DBpaGcE3=>`srnKFg$mk?VJORoCCY)p!Tx<0oFePj5|RGa0cj07t!Mi_-~7# z@<16KA9g|eN19N6#QulJqagoe5@eswf%Ma5kUU!t(Q^~v1wZ^>@WbW>C;9VQa*$jj zlnVbPi*qivhI4@D?zn>vi07`$b6?WR@jpiYa~c?Y0qAuZ=*s_FhueVSGeG{G6lC5j zLGnQr_|OCR*oO=uW5{%}h(Anp2)_(JIgwz(H~S|J_$OZAUr6Mk1+l&h|FbEt`+A=H z5}y0?lfdY6z`*~|y|A|G&)W9@sV9KwBlzR%Cn6$4ln9UIZx_;+ufxbhGMDfRNzf;D z#FuaavL^*X=Kn(g-G_)-7tG%hW`F64{AcMOWauBH=pQ8X4-y;VN_&v#u1gzao7|d#;CRPyf)4{y~ZULD2w$f+b&_@mF zJ;*?g$q-(TA>-KRGZP;MEy1gSI(Rl<3my$H$Nd2gbUW_2HNX!y287_+fGAuUkbu7i zrs3ki99$S!jB|skab{2xP7OYQ6NAs-=#blJ9rgkTM|{Elkpf!C-k*&6UxXga{JogD z2mkaC9E(u{@O|`1yc;zc&qvP3!x37zGhzd-k1)dJ5!U!~q%+Qq^un1@0XQ`(3@1m& z;P~hy92=8?BV+P$cx*Wijopp|3BvxV z5!g314tuAjV9&H{?4DMHUDIo@WBN`s%{YRF8Gm8>tVgJw^#L{P$EhY&?8&M81)(qR zw-4ui{|P*nsjB!qts9xDa02IH@(6L4n6Jh~k%w9eXq1GA0LGRF#g<~U;aTzBl8 z>xUh4gV8uI5)JbbP(Lpn+vew^Zhi%77Br%I!9i3lJdg54_ffj|9ZD7pC?-X15C%xG zCrOs|=^$n*;`OW!xHq#iF3swVlXFMY^UTD)MN8>*)?(-4EofX~iuxtC*tWzObxXZa zvorwJOT$pLEC!X!l2N`a8)eH&P`Y9pidVFtXvJw1th|dnt=Gua`hgrR0oiR3hVg#) zBxe6vQg}aCioHhCxI9N5Cl~g_p{2vHXZck69X^FoYc=Y$Hlk+LR#dIBM8zrxl&x|@ z>1rR8tPVoa>PQr7C!jz(9rjyN|8caD$te|-qMzOODRy8e+XHdJ?HFo_CD9m4}ESS=y8*v+bs^A?y2Z-&&D?QLbQ8Spw*)REgqd{ z_S}s|&taJcuS+uZUZ2a4ZfwQ_pL*npk1a` zutTO=FeF>$cV4d2?^C&QzlU;V{!a+0T&cfQ_DwL=ka`^BJqyO1oL(-ua=({2;ywxc zyq92??*{Yz0$XIu z1N&slf)2=)1f3mI9Q4tcBH?#q3Wbjesa(PTV5A)$^B%rn+gp)*huZ9#nJ0c*7ygIrN3^hK>uh-zUNDupqq2u?zIa3;!v3s4eLAyXXEBwG~H zBUd2WHzr?nT0T#7Q$APpKt4D0Px+is>6jeRe?zJV{9wk|-;w$5o{TvKjJG(|?)6uo z_B0n=!K=|0qJ}1s0qR9os1Z4%O5}x#&;XQ$hN3hy62+kjC=#cmP@IPXahYshSc6<{ zSm&6Wus!nG;U^Wc!rxcO4F5(UBm9wkM!0kYW8Q?+kg>ld_nYa13%;zq2&4~!7;6Y+ z(Ic9LcJWFyg{h)0To={h=BNmFKxw!Kio^X-6dsI%@Cf8b#3C;u1-X(OnQTdkY?h=> zE;F)YOh)8@d|Kpjh1AGvV^bsVk4=gELm?$nD*wM2?F(#&>mFmF zY&vzPWvG*=pej-uWs#;RiLygslpFG+e32U!gq$cbvZJDr6`h34=q#D^m?GJRj% znD#NrF}viGVvi~$#$Fkl7<+GQLhSDf2{A7Ssr;Mxn|@eS|c}>wFj|Y$czm@Mw|%gagj)iPe5vX29o0oWRnuA z4%7q7a+#-q_fLuZiFI{e?noyj1>8{La2`o6EjS>;uO`sY6Madl1RB zKG7J%+=KW9C{0+4Lh3r^&a)2;)Be3NjCW!g z?+`T!V^Nkg7lkQ`$W2j2R;n)2Q_Yc@YLDbJHzcO{A|XwP__T1urpF>CJq6L}xiV21 zWwMbOjbkD*dga424k?6XTqM3!2uuHk_**_KT`C`z_AkD%qb|yJI71%{aoNdm5uJ%V z`;aJ4kwszJOyp!NM@FU!QZu(ADa!;2SvH8vazSjiH=?rx5S1N@$ebuha*_~{lZCLH z5?OI>yrVbRq9FPdMLp)=y6lyT3 z+;b%g84G7;PodVc7)g122S&aoV)G3UU0{jG0!Ks?cp#klIbj7M5En`iT9|+k{!(yJ zk&LjYRyL@pQ!b!raEyP^IpVW1{)In|@h^BvNdF7BIVN1-Gce3H*h~Iy@-}h_UYte# zT*h4m2XH5lJm3yi^zBQd5MM*&?LO6~SdZhq5dXLFHixD367Ic`E!W@*$|G zf^S8;j8DaYtars}S+9y)a$e;RWxdM&lJzQ;{ugerFP>pPJe0&SfxPYHt;u7|Q9%8n zn0wDLTG;mjsWxY`E8z z!L7a-uJt?NQhx%@^*7;M_Z^&TAImt`NdF6$>4RfzgF)KgN8YAF#(m_@Dr4ML$=J7+ z``>(rQ$XVa2%6Twr&$$VEjsXMF@bxF4cuCs;nL~_=hi?twTj``8ViTEbl9~O!M3d) zHtl_|Za)I6_G_?eeE_SLN3d?8{?Pm{MzpX)Y4id4J4zXQGYl#ucPhCf8>oM@F#d0s zgL}sexO6RrQUJ1;4lVH-93*)|O81;3+ zu?>!jw{0@We=Y;e%jH9u%H&^pnAa^#o6UZ&z#u|if#{Ydh2Vw_n zKz7ZA+3poE*{uxY0Sy=q=)+*Z4ElTQptpzTVD1q>d#?yv`G9NfO^4=SDKrLKpgy<< zYWvP%^Wc|I+xrXD_B?~yfb=yE=1_wne`h^4m?rw5l|Ja856B(V54i8*IhcEx1F)ZU z5C?e<<|wk2(C(IY`k<5jpqKq{2Xhbxm;*4#b2tt#2V;mi z5J#BB%U z2EV`@hRWacM9lZ5{8ODF;h_N3Dpzu)y8 z%*U0G`=kdlpByFL2R{CW`0+Km==TP;cQJjQx|ex40A!E#i85f23e1ZEBObX;f_n#^*5@_f* zH0+y81n=b)n%U-MyQ#tKqXu*6Wgd{zaq^!gKe?63y@K5H$vy2BwU686{sQD7?h*Ip zd96v@jGE14)WyK}Yk-HFxj@zD#)u8@i#H1+!JM-u0*G)Tj!47b z$i-6><1bX=Pt@TLG~+jH!!PLN?d-x&U=9SB0|Dkh;3~ew9el%Y_whU3_BY)p9mQRK z{)3m?jCC=B)x<`E`U9vxz?l#bB0NVlo*|jsS>!GtcNu;~HF+E8jy7_3(KXx2xfc&` zn65fa&iBZ78(;FLpYu*{^D3Y6Y9AA~-oQ(4)*Q$(_h2mbpmEGc8Ats=!G!vZJ)X;X z;i;?;e^L+nLoNZo$))2Lxm^4tSBxLzn1>-(i*Mzc@r_&u?#cGyYqOs@=@ob7U z{+#TJUnlwDr%7TwoW!#*CMB~AX5#)N=3z`?9>%09d^xEBUrcJlok`vJbkZ)|nsfjk zPCkhnlP}}i+n?dRY2V?}%s+8q7V|G=OL2}k%N(75Ae}hEPyJyI^@oLQk44PSS*U_1 z^S9!+d8YV*`9Tlnc;o&YA@0tJz~^(~@!6bId@?5oAI>er&AH`xe{Kz~&uhZfc^!Cf zem^eHAH<~vM{!}n1-!HHBb-_M4Nflo1IL$1ag-QlPR@}xAf3vXfA&P`AgsYyLH%Ln zQao9?7QZZ4!?#QI@%0ib+*#s^TTA_LW0?romPg^ribPyye$J(pxwx>h2-Cpt`qu+8K=+D$)3tLb-WHhYXFGwKijgV7YXO&rqHIRsMP zy`{yNYYX!qbmvg>S&hTS>ez2;h&^UD*k$I59p=91Hy5JUJRCjdG3c^j4ul1BAT09G zZdr;p%Nn#=wW8Uo4^7qw&}e-I^)@$AXZrv(wvSM4D@E1+U{qQr|AQ^u=j0H7)rf0c zL%wstg!+R8^#`ks*k!GY?KbArbsW)U>xm9qf3(|*&}Jt=i(MR=?NZQWpN$6lLe$$= zqRycSHICh=b{s^N(@9i1T}Qd|e^BQ9J4&6UDES{qRe-0o|0_M_9x&#*$l?8z1!He3 z);`!R#!d$%>O5NLaxy`?lPy}EUD539i$-T5>Yc+-=Ms%tmqb*%WT47550$QED0izz znOi4H-3L(Oehft(S5fHkH3~d_L%zogLW;aMz@xbFBmIBdgmDI^xij`$=M(!J#$l)P zeDu1mL5G_zaY!^IUz;n8yJ!JALugPqx}~h80)xlkIjX32QJJ#aG#A1 z)=0H@tD?bM7qvd-sPf^t13vC3^YKNAj}XPaVJP&CMuBe<@&%d56BHuXuL{|It;q7< zj?93=$OyP3lOFJ;Oj^Lt#NS8_kp35V969c>54>;7*q{8vo?PP++dXB_$@5xU1j|wH zr-Ev~t*G!fL8-qjiv3+s=hGbDA5<`1r5<(Bi#D|`j zjT7INjSKyecq$VcDjfm-0aI~t$BH>1^uY=89tdFUPjpZZX$qQvn&1T}4_S+1ks9(v zddL--BTHnD4CV->iFo#*hf{W8%J=VYTJ zK9!A%_(3)*{E19dxb(m9J)g&0c6=V`gQMi-F#=$yg4Q6e^+T9@5IPsdVT#D39+b_q zoHN2rkrr-?lyKG_gnJ<|A^`EM8;gsGM64tcF_D>wjx0u0R4pQ-I%OnLgR&9PXNX&} z;ZYBXzhuHArT>Ko#(XB7m;*u|947Z}5%(HH8TazDGK{qk5wnmdS%Iub6{JULAtlNP zNqpaX0&B+NqCF5B?T6^-5Jbg9ATlN%l9+Tv#1aP%4o@Ui36%#wgTuA|YuFVv{!`I$0Ny zDW-@>u|-&l3&bhj5HUX|g!wtasnHOoB_k*;7lCQz2uN>%fBH`Nr5}?Kq+cf<$OzIN zL6FK7;v4vs?Qq_Yx-6Hy1JUe@vFrzN%(*7A5}9|MG7fQRbE)yHgd}4l!ZNiGnrVcP zOe+LuIU*>_1A$or1Z0K4KU)Gpb^?5}v*43c3h$goc;)oNlZOa+7JzeuM3kj6ECCiRD$=@92GMF_PRVZJ&7^LYkDff)om zJIA-c1wIAd@G1y|XJHsT3gh5jm=3q1BDfaS!MUghPDMk+WjGezgJZ#Oa4Ps4PWjT; zxGZ2hu>A+g-%Z|zRG$Bk&hsBK$)7|0A)kA%MH3NNG9P}Wits7j1h2BK@F+8ad$}dt z${pascfLC_H^zy%F^(0i!Kg@qT?K0}Dym^q*$L~){jjQJ4MxRXSe5?*tFmVVqlZ^` zhdvl$yYHgS?HSaevbgt8?qqUD6fy28W9(Nc56|kEaI0Agm)iAk;`zZ2b-J+QnK8C? zHn6GZyFlx`U|Amsi~2B_*T=)OAqyrA4v5wClmR-3*59 zwlHXSf&Mlh=xyUUnA@VDy)6}6JBqNSqY;`NJD|~V66zhdpx*uiG};~$($^Sb`|qON z+X|TrRLp0AcBha#lH5U!-2ZOnyFj-w{_c{2e$N!>_AY>S-zsSJ^If3*n$YamgZg$e zsBO2!=Iw4!-7dh!9idR!5f9}ZIZ)ckcaZMv#@d}nux96VtljY~)^2}oCARVAfR@DXHX0=2V$5S!0`!~e_}S~o>+o8 zC)Z&1$&HwGN((bi8DaWqYfL-shAC$PF`0#+6VGPht+O>4f3_cE&z>M|VeFajFz)oD z*XUsg+}uJRv~xV_;A<#^VNum;-Wz{KpuBpJE-xSzzjUY5V zwo`+lzs2PCCbu2A4QaFbapr)W<{230r~zDL{l{hMA6LNz2XRxL8&H$E`7xUl-x4MS zujXdVCN9c!I2l_|7vW_5B`2XT`QS4r1$UbX-p5^D^e!*-3Jtx~V0KW0q0b}su@8{j zo^~7ZpQ)33?K{+eE>VBE!W@k2fZPY<{)D(qd`>Vg1$W1BQ9g}}p?TCMmUCgI1bnxJ zT8JqZip~W6@e}XkXWqxpe8_$w=`SREg)-WnLEEF)-u{QF0nz71^tn3iUPJDMUo4nnx`QMND5>IFX^Dl@yZ$OHL{1ancPy+z#Q9%6xT7)U# zKzLJkq5c2~Ie8W*wV0of!z;251m)zbAzvd^jyCEoUF6(B&Oy3rn4IUxcb)G0lA6bl z_z;hIN6fz<-hTrx`DgGaBlp325Kw;r>tSF(*znHXX}3SQ#pH}3Uo!2>Bp=V?q$YF^ z73AZYoM@trtOY?IIS0r&gb#3rd{=Ode{+RO&1J9_gjc;tTzCUgjPNu5mz_o3h5Ex7 zwuda=1wuXOG4&wMatc8)(IKnQmN_*@^dL z4&q&zlej4J9?r{tj&n>XI<4>+r^Yh(f;d4<<{wC9$uG~`gGsEzm`W{X$}&8kxE_z* z(!fvS4Dsz)8{8Y~j?c&XPR^^q z@%eQ)Hoq0a3wm&5!5$1P9LB+g7qNfQr`WsXdkidnjNQ~>cK#2fZ!zwl&D?{9BU;Er zJYF;d-!E8zyK@!s;k?bby2t>RmRRH5QdgW_Ccug1!8o=e0>dj}ab#sOhE`_a(5gHf zSXGSutE#Y1u@QR}JFsW<4(z5DvvbWk>|ml<-?|6rS^o&#>!s+T7Ss6#q|(~LroW&*l3 zQ_;008y#DUuuZEH?OKg!-P(ngt$WaCov1QCf=c5{s4)2gWu`x&)btrjOrH-R_ZzJFO2jp2lL9Vs*zaU-9;a-JpK>l|P z8S9vkpF{kh5%mYNdFZiNjct}{)OYmIXk~$VYX{U?yQA7#fJ$p2Dr~|~W)qE4n?#h@ zW}wJ6ABA=mD6nfno_#NJd5&?8!#QL-evC}V?~&p77a>LZ2pnEQN*~-;=QM1Ml(<-;(3S69bah9bs{lE!LS(y!A=51y8E#2P zch5qadofZyYLV>Ofh5m8Nc1{|1g{&2_j*A5i8wFr0(kz5A2)Kjq0e@p{UdHK4cgCD< z)Ia#W-hDhOz2>3BTM-35n~>|HjVvD%WcXSmmGxRFz8*;O6(G?!7zu(1#0%mO=a+^U z|9nLIS0XB)6_EkEAPGE%h`?*ae-Iw{2f_nh5Zo1cg$G*f3vB(6#fS=wL1a)0Btf}| z5LO^OxCLRsJ0K1oMrg;*}103t#{5grnSFi{f3qHKhQmO&KS zgb;B*g2hK56u(D&jUe%F2nu~pF!mR{#9cm*m)Q@G(+7io)S>*@4~Qy$FXHkmM>qxP zAq%N5twDU~W@<<}hzd1Q&QJ4fF;Ry&1&w?$-D5Ad zs}LQr5fTZ{f0P(PEU|!0H23o#{MGqgHW#Z`I!;M^}a*_u~D-S8ND3g zG0F&y)j&wB9)xjb2#m8uK%5KwjDS3&_i6Kdd**a`Q<{cuY> z57)#m;F|C=T;rd@HBR~(*B#gw=!5;Vxkt>nm%L>WjQNP9DAxYRvi>4|8bT8mQ`cFG zz$8`pCu>8HYz*IID|n~yJs2q-@J#W8M@k6XQX}D-nhclJTsWsy!YOSV9Mkr~A?+OO z({95)^+(vJJRzj8PkxEZ?2AX)27AceAz{1|$$k*ccq4}V@zfuZnE#M6fx6B-2r^c} zCvyY5GBx3msSmd-bGT;N!I`-+PFdb?%npJ>b~x;)#n@7dvB@cebxsSca(2Tq=QJ#G zK88j1Ls(?}1&d6cL-`8t&<8{G{SMmPLf(ov_JaiG9*{dcmAUU3jQ_Lc;gvfB?)gjL zlE02R%4RqeXv4nH2)2cmuqkwaRiOtg3;keG6bkdA7?>8N!=$Jf#ynKSkU^9|@o^Xw z-Go8mcQ7dUli;fP6;87M?IV9Tx$6=cb0xDMkUNIlA=%{5XY5>>7*;yNpwb)ql|j(0lt8B{3EEZp(5kA%mZ~0TRvm#x)ir2T zK7dBWAJ8a&PEdm&jP@atYx2eBCJ{C@#bRSq7B)0jK)JaCO3eqbzWFlN zH{Hkj#^12M;cw!_DE6_G zsvV24v2!&xbgDqPQv*s}dRW(GhP7RGSkvVW#qI#C>W;vQ?i4KVDZEbjUli#wkZe~)4}xkqw=stTw>(e7k&OUNBaZg+Cqv@!ne;2wMr&%x|x4#bYJ zSg~t5mhD=IrMp*RG4oOu?N-CW0bR@=FvUDhx^wn;VD=s%X6}i>^u5`bwzmdT2KzC2 z@FXVf{TP$?JjB}rkBKLv=p%1K3CE;z_Jb<=ppN~3;V8F2;Lyb!gg)kA>|_qa0Qm=j zMbrgm9g@YA!;>)i$Q(>OvJ?}JtikxOOopy#Az&oq~xdcu!#Cx*TT;AdWXgVjp z`P5aGb5W|qiCBZ$h#@zJ?6@%SWzGo)o=-BlV5}xc@)o>4zUjB2>FjQ2jvuVK+drS<|1=2MtH9hH;502Tg0ctZFw$)CQ_T2$wk>B>LIJS zKvd;oU5~jTT#$Xs`}i)B$Y$;ao&J!d59#EGBqNIH^VHqcVCZvS-ku$~^~t^IG;5G( z^IY0I=?Z=SKDj<5J|XBr2EH$~ko)}n5AlHbj`#AA?epUtYAnmCgKVG8Gg;jO1b5;Vpm9TYtoFFBq@$EDYk4 zSCC>3zj4nW%sl{WQAYI#4SpIjYr~e@9{kM!Y5-z##*iEe`b7~RH!64pyg_r!yJs8y?Ml_ibJxG;z zt4q5rXstk%WVJbUE$aMG(NJ0GpjQeFK zQ-7iUfJOXQt7*F`?bW4UEoq}OIeo|{q;28kiXm4bxzfm$O-l=CTNzuw8mDBMa6+a7 z$7FV3SoQ!8%bvoJ+%+7O{|fsRe#YRqXV^;(W)JgX{(+R;St>{U;Vs_Bgtzf*+-&?j zW(n@etixw=8n_{EgewZRxHQ%c=f?|h?yX>)o)CeP6Jl{DRDp#@EsR#6eu3WEQuMq59zp!F%xt<0UQCx~ zn$<+yAI}<)@yl>^vI;Iv*TLDD<~TXq5l82E;>cWo49ykc;5-TT&x^&r`Nko{zU`mU3?VXi!Y;V2^F)YKcQ{eGqh5NX<g5Fh`=vK@}mtq+@SJz?N>UOlP*@4!zLug)m0Zr>ZL;d<6P`CaGYN^505Y?~n zPnq3=g&gjdy&P^YE*V4JXC{UfSKz>!jo7nJ2fNnu-IGf8=v8({x3Vv~l!fTnAjY;0 zQD|eWQmaZTT2!*pw6O?{8>>*yI;FZzeW+oLQuXGusNDP!%GJI@nfhatQiCaZ10y=j zuN+?Qa>^MQ>Mtl$e^}3$Yu($}r?MEkHmyhhW=(Xf8KQ%EG41M3)N?%1tl@`7jbJor zgriO~2DO^ZfzV_Q#Fl(iZYf8(Rs+hY#guFvM6vcM6zbeSfeuwo-ABl!1~Y;jotKc3 z|JzlZR#X`Gs*|77%@98aH&cJmr2e3_8Xa3z(WBuOZX;J~E7dN4oI~r17kpfAH55 zPBFCqI=Rp3(tcvE4%fI_<Ws8dZDd4U#|mY}jwmr^{e!Upg(gB2 zn1mtEBpSJ-yVcv!`i=9ZdJc<;{D@eBd8cCMFA<^!@zVafUJTYx&t@z%?e%jA=Aoj2iQG)OgfUYN3x}3v(1$+9A)<1-X{q$hP!H z7VD)ltRzUcibtAt8d9wDk!(|eB-<7w*ltHWC&DOGG&TOgtkP`@g~iPOmrV zgR|s4#3^=%4P$?PHd`^@+-5Aw?PjCMVFmIWH&9dBLM_PvX-*bMcCtf~lPeOOyb;9-kxB{U_onMDC3J-Cp9}W-fsY z8SjyEpB*(I#(r(~jC=XL!hz==IL$z=%Ti>zuBWb~j$~I|B)XX*-pvNFZcd1HAr~i(i$Xss!~VNMvSKsqC71j@v=v_mn*`&d?04c zR;YIvL_Vdmi4JFuN4rG5C6a__yul*AZRaqgU-Mw=o9z^K7@DRU+|_5^bc;a|G&c}-w-+b$=T}3 zb+#AdUJu6J-rV!`9fx?o+0>VoLlU5bFuqqSG*A~Ifu;}!S|cdP34uW#@DK8XpD+Xh zVI+Kmli?Gb3-6Fhc!jjVQ#1e%(P_AgK7xD5_izt>Oh{kjh6y!6`h7n+d&t@7!+djJ zwgErW{22QNj6qb;3`7JkL1^$=goLOfC`20pA|v>VEFlo_9TcH%@Co&Wcc>7a;s|(% z6X4F=9JjD?xQ4gDC43j0!%xB~`~x_JeMkHWC-Dn{`3J;Rw!;bfU=R5_1dRRt*$)D^ z*5_wp5cm5+n0FpJg}TxL1Ti4mT(Pb@!!BK?hoQQ%wnaZILCf?h&K0BkT*-rm@ka{ zT#5%#4-v$Tp{_HXdd?!aFfYb2c_SQ>x4@w!UI&%dqvy`Z%sKG2-8z$MtFwVAwQMMxtay+1)69B!OFzDpO zLpwJcTDg_jlG_2zT)qc1_YyR6zJf;fuh7VPN>G0wj?n)*$lXltvMA=g$FLueJB-}^ zJxrPv0V98ffheV|qnjLjv{ z*uBpTukGbltDd|cE^xAgxucb zcBrEMP{;VciRVDHG6!HAb0E4H1NXj#IejxRt8Woz_N~J7eq~JSSI3loUHo6aIVNs* z#DwiW7{6VNvD=d&zr7e^c<8F^_Cd&OzW|y3FCg3hkoavBt+cr!hhtJc`vJMb$?acF z{h^+1(9HO|ojD-nUDrqc9gKl@GX~!SjNLa5a{H%2X8(K+aLbAHgc=hMxd=L7PB;_( z1UvWv#<>S*(19L`;z#&-h4_N_W)yXW9Ft1ugK~}sw^CU>sr&1~0=Ph8WMuZaOiK1Kl!WEf+$noP>2a_;Mj~+Jy*Wf-D>S3>|!i7eBL$ z3xyNJd&CE$sA5~^*3bw1>o9V2nuB9M+kp0J?Ir(y@((cwWSBKD$Eg9FBL7+99pXH3 zVJs)TDb!PDb3wY8lkjS4BO9qxXmf!`e_VItVwn&BjYKX~iisA27r%Lw;Dv}1wsm?N zeL#N)ZKno9n=NQFU-Js(!^}ZBM*Zm|m{;?P^AbO40z*h%o47%IAWLn6KDjlGnh1Sz zdj<6nWiHmWxM|A!xbIGlf`i{TDMTp)nHGYEKA@3AUN@fwa*KIuUgWkSw>EvPe2o0G zdFDClKNrdK5ARKW|CsoU_?);)d_~+N{zE+Ay?i%=h02SVf3l8&gC?~Q-p3yv+{6@9 z6G>&A4E^z#o&7N#PrTG0M)D7sdoZd$tmo&5{$NDdv3kV=PZ@JRMi_O780sHMjNmh< zMX(NpI>?WVb$_4^@;zhj@2G=30MF!PJ<5I7#EeARcNrOf!R&-PyunZT+qbAHe8ek% z_y(k4&cSH>KXM-<`ol;)j4HYH7=K$)190JQ3dk8kJ_)s!IC7;>6UZdjNFGKJT~J0> z@JvqD#e9x->I1#h2L{M>nEJq3HraK?>tE58KT}G3%9x$!V7vh-c-|sL;(xyP;Z;7$ zbLv5lu$A_j(pCrB=t=tm$tR|5QRGS>S1P%($dyN~VoGG?>>9OXYbIYO`F4;^(| zh10GWcF9EQ9%;OK7P<22@e)2JmDD}zsd}`LtCu``*&4(A?;<_&F%_x@I7sUbus!yZ z=^sehjiitzMzokI^c2s)q&9Y+zW9Q^xJ6&wfIV&Vpb!0cwGi4BLAzpTS0cI6$dyf- z3UHJf*)ZGWFg2k=^u+<}Vy_rthR!=w$v&Vm^MF73ogVs|kh0gj#LIj5=RU^M|5Mp= z^XcO?^ef*30)5(NN!y(0RWEV{kV`~8M}i@lSR9f`!U5TI?3c~KKDk2dm8-y>G4?rz z+ytIMF>MuwW~yTUY+dY`V~$;O?XhE?8~W$_qIZ4}x)+3^Ye6JB7sO%P!W6VG%tG6u z0<JwZaM=E1b~2(gUq41!!3%MAIrU8Wp2ZuNaRy#Wd8c z<~b0nOHjF{78PsTQMPs$O4c1k@%r~rsPq*Ilzv5?(sP0u#4AY2|6neMSx$Wy6*>K^ z=K69K*LTauW2fRg^sZfv&ULD2Td#v=zE7%A$rkm>E~r&z4aNr6U~C9R#fET{t1t&b zB?%=PGf}j$5QUqnkgwW;Jk{;U**t`7wM)oU`vMuPPfAyRhBWFhX=*R=8;8}emT`*V z)O$*W{KUWp<~gq)gYFH~A2u#Wv#K)cH*Y}=wU|nt7gMgz^B2_JP^|8QB8>nPXo!%n zAweE%m2#LHlf5Munbcx3m=}|_wHK+{2a%$E9!Wa4k*M<{5_Fy*o*GQN_DlRQpF{sz zPJ5hkht(NpXfWR5XV+$~uhdxkpt%S&T5D0URSl)oVv4j)QJ`&uJRR0Q=&=4lM}SNn zAu@EskggkzRJ|mm=w%~GzXXW}^++)2LY(0~#2TGLjL|2EHhPFCqrVVoBz=ts^uY(T z{T!#bgPd-6aO&^kXX{qR-r79(KzA<6^jD$CU?cJkwUA?Ih%7@3WEk2b&CnGoM&3v^ z;=31(L`X1}Al^6uaV8mvF)c*2X$_*xIv_FMiwN^G2)FnMVHV#Lk0CafzQ#Sa|5e(3 zQkNQ#0pkoq#{T@Q*Jtc)pnwu1<{p?VqsF6zOjC8Fndu?L%oIsx)<`gOLcF;K~?z{rOo`%1b>GYgme_QH*qPX$GDr^ z+d0j*S#phQ!F4vj7w~(w^(3U(%%`@rin@{twIoeM+3Q1MZ-#JtzI(ym38D5p`_O@B zA3E~vLr0!{=#+#&=WGNxm&4zs1%56&A#gngU)SsKas389E`Jcu;qAispSZ<#IA_GA zC3$<+{^FDTo%W=%R=HY6=JW22=P*+mZX9JZ%z35=)u>=6y848@M3
`eG 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'ao!egK_Qcpq2sB3{9Z_>`ghGeej<40r*a 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಺y0g zt`N4H0Wb%+qB{#o`UrMxg?;D&9GjAA|)L7EwWc83lA!IfCh%_F%i#7F^!30grVyKwobStPNJc z*=Py;cP&Bmt_8^6GY94SW)QULbx?x+w$d7~H5TA)F|dt@(FgH{-w6#46IaZoIKric zHlVTC67-gsgXuC;uwHHg4l9hnWu+mwA*ibifU!y+Sa0Y9=M6pZS*;7A*8;F{ulB}$ z(i^{7e5_&QXH+0qbty#XuZ2jf%@E=8?R1#eo~dBLk%=J1`SHLA^)dfs-BD$p(Wqa! z`G{}5)rhRoc3AS%p-GIulIOF%p5TB#tL4Fs;0>d>%1CsPd{Bul36lIpr z<#jg0vIq7qR}W>b0B>Ba99*p&tnP$ZX)7^x9gZAgb=N|i z#m7^zPT!A5)Ao%dg-(6)O4nZ5EzcfFGp$|l#Oo2~ zDf1SqgHg-s_M9vJhXWTmh>=6UDHVvkvIG)z)=npxeLSA%@WW_==Yio^@3VtZ;%oik z{wBR4k+$7|Nt8}y4)vM5#H(Fa>-|*H$ZHZb3mQ1Bf@)5?cR8nvF;@TwD=RKmH7__w zu+k1XH4kDi!IrH3)?}*b$D^tCJBCx-{~SnUUFeMy>UKpdEIY!(T%HES(OQ*h-p%qn zpGVRPaih3Fc3arwTg`8ll=0hmh5To%x#E8~@Q{NHEA5bzm=3wTcqUEjt?^8gkDq7S z?HI^#`>Qw2>r!X3k3oB!+^#hu$fGGZlKsFxQEBcvxxsB8RYlr9-ANudNx)G5&Zc*Y?N09Lk}tEXI}gbe?fbg2d@z zl#+fYER1tAC{9@GpDw+wD3DjmuPZ8i?7fy?2Je41)&Cdc$)vdHCjoPu5-5yHJ55-q9-OqP}U=lB&X z%KZx!Hv@8HjREP>W@(D_iO*c|k^>*d;ROc;a)>;RO8C;EiCoP$hl`9h_mx=x*jeiQ zcUuuvttp3X{!hBlr9MGUuZj-jmW4-%ibE27^8+ßui+5WYG>3$D_lI4$m6MS0* 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%0DZnJe{DH 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 Ct>w`G From 9d5a28cdc048f220163de8f0316b3fe6e0bf544f Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 6 Dec 2019 01:04:29 +0800 Subject: [PATCH 029/214] auto commit --- ...43\345\245\221\346\225\260\345\210\227.md" | 4 +- ...51\345\275\242\350\246\206\347\233\226.md" | 8 +-- ...3 \350\267\263\345\217\260\351\230\266.md" | 8 +-- ...01\350\267\263\345\217\260\351\230\266.md" | 2 +- ...00\345\260\217\346\225\260\345\255\227.md" | 4 +- ...55\347\232\204\350\267\257\345\276\204.md" | 4 +- ...64\346\225\260\346\254\241\346\226\271.md" | 2 +- ...76\350\241\250\350\212\202\347\202\271.md" | 4 +- ...15\347\232\204\347\273\223\347\202\271.md" | 2 +- ...66\346\225\260\345\211\215\351\235\242.md" | 2 +- ...K \344\270\252\347\273\223\347\202\271.md" | 2 +- ...45\345\217\243\347\273\223\347\202\271.md" | 2 +- ...17\347\232\204\351\223\276\350\241\250.md" | 2 +- ...04\345\255\220\347\273\223\346\236\204.md" | 2 +- ...21\347\232\204\351\225\234\345\203\217.md" | 2 +- ...04\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\347\237\251\351\230\265.md" | 2 +- ...15\347\232\204\346\225\260\345\255\227.md" | 2 +- ...60\344\272\214\345\217\211\346\240\221.md" | 2 +- ...15\345\216\206\345\272\217\345\210\227.md" | 2 +- ...74\347\232\204\350\267\257\345\276\204.md" | 2 +- ...50\347\232\204\345\244\215\345\210\266.md" | 8 +-- ...14\345\220\221\351\223\276\350\241\250.md" | 2 +- ...55\347\232\204\346\237\245\346\211\276.md" | 2 +- ...77\346\215\242\347\251\272\346\240\274.md" | 2 +- ...54\345\205\261\347\273\223\347\202\271.md" | 2 +- ...21\347\232\204\346\267\261\345\272\246.md" | 2 +- ...41\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\351\223\276\350\241\250.md" | 8 +-- ...20\347\232\204\347\202\271\346\225\260.md" | 2 +- ...13\347\211\214\351\241\272\345\255\220.md" | 2 +- ...00\345\244\247\345\210\251\346\266\246.md" | 2 +- ...30\347\247\257\346\225\260\347\273\204.md" | 2 +- ...54\345\205\261\347\245\226\345\205\210.md" | 4 +- ...72\344\272\214\345\217\211\346\240\221.md" | 4 +- ...00\344\270\252\347\273\223\347\202\271.md" | 6 +- ...36\347\216\260\351\230\237\345\210\227.md" | 2 +- docs/notes/Docker.md | 6 +- docs/notes/Git.md | 24 +++---- docs/notes/HTTP.md | 32 ++++----- docs/notes/Java IO.md | 16 ++--- "docs/notes/Java \345\237\272\347\241\200.md" | 4 +- "docs/notes/Java \345\256\271\345\231\250.md" | 16 ++--- "docs/notes/Java \345\271\266\345\217\221.md" | 38 +++++------ ...a \350\231\232\346\213\237\346\234\272.md" | 36 +++++----- ...50\346\200\201\350\247\204\345\210\222.md" | 22 +++--- ...- \345\217\214\346\214\207\351\222\210.md" | 10 +-- ...350\247\243 - \346\216\222\345\272\217.md" | 2 +- ...350\247\243 - \346\220\234\347\264\242.md" | 14 ++-- ...351\242\230\350\247\243 - \346\240\221.md" | 2 +- ...52\345\277\203\346\200\235\346\203\263.md" | 2 +- docs/notes/Linux.md | 34 +++++----- docs/notes/MySQL.md | 14 ++-- docs/notes/Redis.md | 26 +++---- docs/notes/Socket.md | 12 ++-- ...01\345\217\257\350\257\273\346\200\247.md" | 4 +- .../\345\210\206\345\270\203\345\274\217.md" | 42 ++++++------ ...Offer \351\242\230\350\247\243 - 10~19.md" | 38 +++++------ ...Offer \351\242\230\350\247\243 - 20~29.md" | 16 ++--- ...Offer \351\242\230\350\247\243 - 30~39.md" | 16 ++--- ...7 Offer \351\242\230\350\247\243 - 3~9.md" | 22 +++--- ...Offer \351\242\230\350\247\243 - 50~59.md" | 6 +- ...Offer \351\242\230\350\247\243 - 60~68.md" | 12 ++-- ...73\347\273\237\345\216\237\347\220\206.md" | 22 +++--- ...04\345\273\272\345\267\245\345\205\267.md" | 2 +- ...31\350\241\250\350\276\276\345\274\217.md" | 2 +- ...10\346\201\257\351\230\237\345\210\227.md" | 6 +- ...346\263\225 - \345\205\266\345\256\203.md" | 10 +-- ...- \345\271\266\346\237\245\351\233\206.md" | 10 +-- ...346\263\225 - \346\216\222\345\272\217.md" | 24 +++---- ...- \347\254\246\345\217\267\350\241\250.md" | 38 +++++------ "docs/notes/\347\274\223\345\255\230.md" | 6 +- ...05\345\255\230\347\256\241\347\220\206.md" | 14 ++-- ...347\273\237 - \346\246\202\350\277\260.md" | 4 +- ...347\273\237 - \346\255\273\351\224\201.md" | 12 ++-- ...76\345\244\207\347\256\241\347\220\206.md" | 6 +- ...33\347\250\213\347\256\241\347\220\206.md" | 16 ++--- ...347\273\237 - \351\223\276\346\216\245.md" | 6 +- ...- \344\274\240\350\276\223\345\261\202.md" | 16 ++--- ...- \345\272\224\347\224\250\345\261\202.md" | 12 ++-- ...347\273\234 - \346\246\202\350\277\260.md" | 20 +++--- ...- \347\211\251\347\220\206\345\261\202.md" | 2 +- ...- \347\275\221\347\273\234\345\261\202.md" | 28 ++++---- ...- \351\223\276\350\267\257\345\261\202.md" | 32 ++++----- ...45\274\217 - \345\215\225\344\276\213.md" | 2 +- ...- \344\270\255\344\273\213\350\200\205.md" | 6 +- ...345\274\217 - \344\272\253\345\205\203.md" | 2 +- ...345\274\217 - \344\273\243\347\220\206.md" | 2 +- ...37\345\236\213\346\250\241\345\274\217.md" | 2 +- ...345\274\217 - \345\221\275\344\273\244.md" | 4 +- ...- \345\244\207\345\277\230\345\275\225.md" | 2 +- ...345\274\217 - \345\244\226\350\247\202.md" | 2 +- ...45\345\216\202\346\226\271\346\263\225.md" | 2 +- ...75\350\261\241\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \346\241\245\346\216\245.md" | 2 +- ...41\346\235\277\346\226\271\346\263\225.md" | 4 +- ...345\274\217 - \347\212\266\346\200\201.md" | 4 +- ...- \347\224\237\346\210\220\345\231\250.md" | 2 +- ...- \347\251\272\345\257\271\350\261\241.md" | 2 +- ...345\274\217 - \347\255\226\347\225\245.md" | 2 +- ...00\345\215\225\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \347\273\204\345\220\210.md" | 2 +- ...345\274\217 - \350\243\205\351\245\260.md" | 4 +- ...- \350\247\202\345\257\237\350\200\205.md" | 6 +- ...- \350\247\243\351\207\212\345\231\250.md" | 2 +- ...- \350\256\277\351\227\256\350\200\205.md" | 2 +- ...- \350\264\243\344\273\273\351\223\276.md" | 2 +- ...- \350\277\255\344\273\243\345\231\250.md" | 2 +- ...- \351\200\202\351\205\215\345\231\250.md" | 4 +- ...76\350\256\241\346\250\241\345\274\217.md" | 68 +++++++++---------- "docs/notes/\351\233\206\347\276\244.md" | 24 +++---- ...71\350\261\241\346\200\235\346\203\263.md" | 12 ++-- ...43\345\245\221\346\225\260\345\210\227.md" | 4 +- ...51\345\275\242\350\246\206\347\233\226.md" | 8 +-- ...3 \350\267\263\345\217\260\351\230\266.md" | 8 +-- ...01\350\267\263\345\217\260\351\230\266.md" | 2 +- ...00\345\260\217\346\225\260\345\255\227.md" | 4 +- ...55\347\232\204\350\267\257\345\276\204.md" | 4 +- ...64\346\225\260\346\254\241\346\226\271.md" | 2 +- ...76\350\241\250\350\212\202\347\202\271.md" | 4 +- ...15\347\232\204\347\273\223\347\202\271.md" | 2 +- ...66\346\225\260\345\211\215\351\235\242.md" | 2 +- ...K \344\270\252\347\273\223\347\202\271.md" | 2 +- ...45\345\217\243\347\273\223\347\202\271.md" | 2 +- ...17\347\232\204\351\223\276\350\241\250.md" | 2 +- ...04\345\255\220\347\273\223\346\236\204.md" | 2 +- ...21\347\232\204\351\225\234\345\203\217.md" | 2 +- ...04\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\347\237\251\351\230\265.md" | 2 +- ...15\347\232\204\346\225\260\345\255\227.md" | 2 +- ...60\344\272\214\345\217\211\346\240\221.md" | 2 +- ...15\345\216\206\345\272\217\345\210\227.md" | 2 +- ...74\347\232\204\350\267\257\345\276\204.md" | 2 +- ...50\347\232\204\345\244\215\345\210\266.md" | 8 +-- ...14\345\220\221\351\223\276\350\241\250.md" | 2 +- ...55\347\232\204\346\237\245\346\211\276.md" | 2 +- ...77\346\215\242\347\251\272\346\240\274.md" | 2 +- ...54\345\205\261\347\273\223\347\202\271.md" | 2 +- ...21\347\232\204\346\267\261\345\272\246.md" | 2 +- ...41\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\351\223\276\350\241\250.md" | 8 +-- ...20\347\232\204\347\202\271\346\225\260.md" | 2 +- ...13\347\211\214\351\241\272\345\255\220.md" | 2 +- ...00\345\244\247\345\210\251\346\266\246.md" | 2 +- ...30\347\247\257\346\225\260\347\273\204.md" | 2 +- ...54\345\205\261\347\245\226\345\205\210.md" | 4 +- ...72\344\272\214\345\217\211\346\240\221.md" | 4 +- ...00\344\270\252\347\273\223\347\202\271.md" | 6 +- ...36\347\216\260\351\230\237\345\210\227.md" | 2 +- notes/Docker.md | 6 +- notes/Git.md | 24 +++---- notes/HTTP.md | 32 ++++----- notes/Java IO.md | 16 ++--- "notes/Java \345\237\272\347\241\200.md" | 4 +- "notes/Java \345\256\271\345\231\250.md" | 16 ++--- "notes/Java \345\271\266\345\217\221.md" | 38 +++++------ ...a \350\231\232\346\213\237\346\234\272.md" | 36 +++++----- ...50\346\200\201\350\247\204\345\210\222.md" | 22 +++--- ...- \345\217\214\346\214\207\351\222\210.md" | 10 +-- ...350\247\243 - \346\216\222\345\272\217.md" | 2 +- ...350\247\243 - \346\220\234\347\264\242.md" | 14 ++-- ...351\242\230\350\247\243 - \346\240\221.md" | 2 +- ...52\345\277\203\346\200\235\346\203\263.md" | 2 +- notes/Linux.md | 34 +++++----- notes/MySQL.md | 14 ++-- notes/Redis.md | 26 +++---- notes/Socket.md | 12 ++-- ...01\345\217\257\350\257\273\346\200\247.md" | 4 +- .../\345\210\206\345\270\203\345\274\217.md" | 42 ++++++------ ...Offer \351\242\230\350\247\243 - 10~19.md" | 38 +++++------ ...Offer \351\242\230\350\247\243 - 20~29.md" | 16 ++--- ...Offer \351\242\230\350\247\243 - 30~39.md" | 16 ++--- ...7 Offer \351\242\230\350\247\243 - 3~9.md" | 22 +++--- ...Offer \351\242\230\350\247\243 - 50~59.md" | 6 +- ...Offer \351\242\230\350\247\243 - 60~68.md" | 12 ++-- ...73\347\273\237\345\216\237\347\220\206.md" | 22 +++--- ...04\345\273\272\345\267\245\345\205\267.md" | 2 +- ...31\350\241\250\350\276\276\345\274\217.md" | 2 +- ...10\346\201\257\351\230\237\345\210\227.md" | 6 +- ...346\263\225 - \345\205\266\345\256\203.md" | 10 +-- ...- \345\271\266\346\237\245\351\233\206.md" | 10 +-- ...346\263\225 - \346\216\222\345\272\217.md" | 24 +++---- ...- \347\254\246\345\217\267\350\241\250.md" | 38 +++++------ "notes/\347\274\223\345\255\230.md" | 6 +- ...05\345\255\230\347\256\241\347\220\206.md" | 14 ++-- ...347\273\237 - \346\246\202\350\277\260.md" | 4 +- ...347\273\237 - \346\255\273\351\224\201.md" | 12 ++-- ...76\345\244\207\347\256\241\347\220\206.md" | 6 +- ...33\347\250\213\347\256\241\347\220\206.md" | 16 ++--- ...347\273\237 - \351\223\276\346\216\245.md" | 6 +- ...- \344\274\240\350\276\223\345\261\202.md" | 16 ++--- ...- \345\272\224\347\224\250\345\261\202.md" | 12 ++-- ...347\273\234 - \346\246\202\350\277\260.md" | 20 +++--- ...- \347\211\251\347\220\206\345\261\202.md" | 2 +- ...- \347\275\221\347\273\234\345\261\202.md" | 28 ++++---- ...- \351\223\276\350\267\257\345\261\202.md" | 32 ++++----- ...45\274\217 - \345\215\225\344\276\213.md" | 2 +- ...- \344\270\255\344\273\213\350\200\205.md" | 6 +- ...345\274\217 - \344\272\253\345\205\203.md" | 2 +- ...345\274\217 - \344\273\243\347\220\206.md" | 2 +- ...37\345\236\213\346\250\241\345\274\217.md" | 2 +- ...345\274\217 - \345\221\275\344\273\244.md" | 4 +- ...- \345\244\207\345\277\230\345\275\225.md" | 2 +- ...345\274\217 - \345\244\226\350\247\202.md" | 2 +- ...45\345\216\202\346\226\271\346\263\225.md" | 2 +- ...75\350\261\241\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \346\241\245\346\216\245.md" | 2 +- ...41\346\235\277\346\226\271\346\263\225.md" | 4 +- ...345\274\217 - \347\212\266\346\200\201.md" | 4 +- ...- \347\224\237\346\210\220\345\231\250.md" | 2 +- ...- \347\251\272\345\257\271\350\261\241.md" | 2 +- ...345\274\217 - \347\255\226\347\225\245.md" | 2 +- ...00\345\215\225\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \347\273\204\345\220\210.md" | 2 +- ...345\274\217 - \350\243\205\351\245\260.md" | 4 +- ...- \350\247\202\345\257\237\350\200\205.md" | 6 +- ...- \350\247\243\351\207\212\345\231\250.md" | 2 +- ...- \350\256\277\351\227\256\350\200\205.md" | 2 +- ...- \350\264\243\344\273\273\351\223\276.md" | 2 +- ...- \350\277\255\344\273\243\345\231\250.md" | 2 +- ...- \351\200\202\351\205\215\345\231\250.md" | 4 +- ...76\350\256\241\346\250\241\345\274\217.md" | 68 +++++++++---------- "notes/\351\233\206\347\276\244.md" | 24 +++---- ...71\350\261\241\346\200\235\346\203\263.md" | 12 ++-- 224 files changed, 1040 insertions(+), 1040 deletions(-) diff --git "a/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" "b/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" index c73402d597..2d4326fe97 100644 --- "a/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" +++ "b/docs/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" @@ -10,13 +10,13 @@ -


+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 diff --git "a/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" "b/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" index 2bd056c1bb..ecc7a64651 100644 --- "a/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" +++ "b/docs/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" @@ -8,23 +8,23 @@ 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { diff --git "a/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" "b/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" index 3db7579d57..bd89c6fd9b 100644 --- "a/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" +++ "b/docs/notes/10.3 \350\267\263\345\217\260\351\230\266.md" @@ -8,21 +8,21 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { diff --git "a/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" "b/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" index 760ff568bf..0e779d0011 100644 --- "a/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" +++ "b/docs/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" @@ -8,7 +8,7 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 diff --git "a/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" "b/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" index be40966933..ca34fed587 100644 --- "a/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" +++ "b/docs/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" @@ -6,13 +6,13 @@ 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 diff --git "a/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" "b/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" index 4363131950..217f56967e 100644 --- "a/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" +++ "b/docs/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" @@ -8,13 +8,13 @@ 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 diff --git "a/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" "b/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" index 207b235f44..1cddc018a3 100644 --- "a/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" +++ "b/docs/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" @@ -12,7 +12,7 @@ -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 diff --git "a/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" "b/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" index f14a83f90f..8cd0a5eee6 100644 --- "a/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" +++ "b/docs/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" @@ -4,11 +4,11 @@ ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 diff --git "a/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" "b/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" index b7ba929a4e..555a075436 100644 --- "a/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" +++ "b/docs/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题描述 diff --git "a/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" "b/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" index 7bfed6141e..f6b913234b 100644 --- "a/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" +++ "b/docs/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" @@ -6,7 +6,7 @@ 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 diff --git "a/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" "b/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" index 3a6226f9cb..209dc0e98e 100644 --- "a/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" +++ "b/docs/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" @@ -6,7 +6,7 @@ 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { diff --git "a/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" "b/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" index ec5658947a..aea40f9a71 100644 --- "a/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" +++ "b/docs/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" @@ -22,7 +22,7 @@ 上面的等值没有很强的规律,但是我们可以发现 y+z 就是圆环的总长度,因此我们将上面的等式再分解:x=(N-2)(y+z)+z。这个等式左边是从起点x1 到环入口节点 y1 的长度,而右边是在圆环中走过 (N-2) 圈,再从相遇点 z1 再走过长度为 z 的长度。此时我们可以发现如果让两个指针同时从起点 x1 和相遇点 z1 开始,每次只走过一个距离,那么最后他们会在环入口节点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { diff --git "a/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" "b/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" index 37b6e2f903..b3b5b4df99 100644 --- "a/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" +++ "b/docs/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" "b/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" index e4772db926..7fd34ab3d1 100644 --- "a/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" +++ "b/docs/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" "b/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" index 4d137e2cea..abe1c39540 100644 --- "a/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" +++ "b/docs/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" index 80f49f571c..94d658aafb 100644 --- "a/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" "b/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" index 32636dd827..1d5435d8a8 100644 --- "a/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" +++ "b/docs/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" @@ -6,7 +6,7 @@ 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" "b/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" index 4d0031d651..d249e72b5c 100644 --- "a/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" +++ "b/docs/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" @@ -24,7 +24,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java diff --git "a/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" index 4f9714e29d..6c963b1591 100644 --- "a/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" @@ -8,7 +8,7 @@ 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 diff --git "a/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" "b/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" index bc9ca61cb6..6741f31e22 100644 --- "a/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" +++ "b/docs/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" @@ -8,7 +8,7 @@ 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 diff --git "a/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" "b/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" index 2304a2540a..95629ac442 100644 --- "a/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" +++ "b/docs/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" @@ -8,7 +8,7 @@ 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 diff --git "a/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" "b/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" index 908c90c3bd..1f382d6b05 100644 --- "a/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" +++ "b/docs/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" @@ -18,21 +18,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { diff --git "a/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" index b68fba1417..5ab2372adb 100644 --- "a/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ "b/docs/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" @@ -6,7 +6,7 @@ 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" "b/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" index 9f567a5b3d..ff28bd87f9 100644 --- "a/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" +++ "b/docs/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" @@ -28,7 +28,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { diff --git "a/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" "b/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" index 452652e964..efe83db60c 100644 --- "a/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" +++ "b/docs/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" @@ -27,7 +27,7 @@ Output: -

+

```java public String replaceSpace(StringBuffer str) { diff --git "a/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" "b/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" index b7e0cbdc75..371e83419d 100644 --- "a/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" +++ "b/docs/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" "b/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" index 8c49c2dc27..0aeb411e27 100644 --- "a/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" +++ "b/docs/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" @@ -6,7 +6,7 @@ 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 diff --git "a/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" index 56f8797f86..d2cdf538f8 100644 --- "a/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" @@ -6,7 +6,7 @@ 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" "b/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" index d7bbb3b0d4..fb78ed03b9 100644 --- "a/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" +++ "b/docs/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" @@ -8,7 +8,7 @@ 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -39,13 +39,13 @@ node2.next = node3; node1.next = node2; ``` -

+

为了能将一个节点插入头部,我们引入了一个叫头结点的辅助节点,该节点不存储值,只是为了方便进行插入操作。不要将头结点与第一个节点混起来,第一个节点是链表中第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -72,7 +72,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { diff --git "a/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" "b/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" index aaa42b6642..d298cc9af6 100644 --- "a/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" +++ "b/docs/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" @@ -8,7 +8,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 diff --git "a/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" "b/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" index d71becc99e..9fde275c1f 100644 --- "a/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" +++ "b/docs/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" @@ -8,7 +8,7 @@ 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 diff --git "a/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" "b/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" index a467388d97..499319a5e5 100644 --- "a/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" +++ "b/docs/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" @@ -8,7 +8,7 @@ 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 diff --git "a/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" "b/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" index 4829a10f8c..8317ca2a0d 100644 --- "a/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" +++ "b/docs/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" @@ -8,7 +8,7 @@ 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 diff --git "a/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" index c31d43484a..e77c9665f0 100644 --- "a/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ "b/docs/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" @@ -11,7 +11,7 @@ 在二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -35,7 +35,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" "b/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" index ff82f2aaa7..b557ea0ba0 100644 --- "a/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" +++ "b/docs/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" @@ -10,13 +10,13 @@ -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。然后分别对左右子树递归地求解。 -

+

```java // 缓存中序遍历数组每个值对应的索引 diff --git "a/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" "b/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" index 92bfe9a9bf..38d2641420 100644 --- "a/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" +++ "b/docs/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" @@ -35,17 +35,17 @@ void traverse(TreeNode root) { } ``` -

+

① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { diff --git "a/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" "b/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" index bf9fd343ad..7d1f24ec38 100644 --- "a/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" +++ "b/docs/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" @@ -12,7 +12,7 @@ in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git a/docs/notes/Docker.md b/docs/notes/Docker.md index 3df19303c2..7647d26c91 100644 --- a/docs/notes/Docker.md +++ b/docs/notes/Docker.md @@ -14,13 +14,13 @@ Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。 -

+

# 二、与虚拟机的比较 虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。 -

+

## 启动速度 @@ -74,7 +74,7 @@ Docker 轻量级的特点使得它很适合用于部署、维护、组合微服 构建容器时,通过在镜像的基础上添加一个可写层(writable layer),用来保存着容器运行过程中的修改。 -

+

# 参考资料 diff --git a/docs/notes/Git.md b/docs/notes/Git.md index b449764823..c0939994cc 100644 --- a/docs/notes/Git.md +++ b/docs/notes/Git.md @@ -18,7 +18,7 @@ Git 属于分布式版本控制系统,而 SVN 属于集中式。 -

+

集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 @@ -40,45 +40,45 @@ Github 就是一个中心服务器。 Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 存储所有分支信息,使用一个 HEAD 指针指向当前分支。 -

+

- git add files 把文件的修改添加到暂存区 - git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了 - git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files - git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改 -

+

可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。 - git commit -a 直接把所有文件的修改添加到暂存区然后执行提交 - git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作 -

+

# 分支实现 使用指针将每个提交连接成一条时间线,HEAD 指针指向当前分支指针。 -

+

新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支,表示新分支成为当前分支。 -

+

每次提交只会让当前分支指针向前移动,而其它分支指针不会移动。 -

+

合并分支也只需要改变指针即可。 -

+

# 冲突 当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。 -

+

Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。 @@ -100,7 +100,7 @@ Creating a new branch is quick AND simple. $ git merge --no-ff -m "merge with no-ff" dev ``` -

+

# 分支管理策略 @@ -108,7 +108,7 @@ master 分支应该是非常稳定的,只用来发布新版本; 日常开发在开发分支 dev 上进行。 -

+

# 储藏(Stashing) @@ -148,7 +148,7 @@ $ ssh-keygen -t rsa -C "youremail@example.com" # Git 命令一览 -

+

比较详细的地址:http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf diff --git a/docs/notes/HTTP.md b/docs/notes/HTTP.md index 228951a159..8501eff542 100644 --- a/docs/notes/HTTP.md +++ b/docs/notes/HTTP.md @@ -62,17 +62,17 @@ URI 包含 URL 和 URN。 -

+

## 请求和响应报文 ### 1. 请求报文 -

+

### 2. 响应报文 -

+

# 二、HTTP 方法 @@ -159,7 +159,7 @@ DELETE /file.html HTTP/1.1 CONNECT www.example.com:443 HTTP/1.1 ``` -

+

## TRACE @@ -302,7 +302,7 @@ CONNECT www.example.com:443 HTTP/1.1 ## 连接管理 -

+

### 1. 短连接与长连接 @@ -631,11 +631,11 @@ HTTP/1.1 使用虚拟主机技术,使得一台服务器拥有多个域名, - 用户察觉得到正向代理的存在。 -

+

- 而反向代理一般位于内部网络中,用户察觉不到。 -

+

### 2. 网关 @@ -657,7 +657,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) 通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。 -

+

## 加密 @@ -668,7 +668,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:运算速度快; - 缺点:无法安全地将密钥传输给通信方。 -

+

### 2.非对称密钥加密 @@ -681,7 +681,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:可以更安全地将公开密钥传输给通信发送方; - 缺点:运算速度慢。 -

+

### 3. HTTPS 采用的加密方式 @@ -690,7 +690,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 使用非对称密钥加密方式,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性; - 获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。(下图中的 Session Key 就是 Secret Key) -

+

## 认证 @@ -702,7 +702,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) 进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。 -

+

## 完整性保护 @@ -731,7 +731,7 @@ HTTP/1.x 实现简单是以牺牲性能为代价的: HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式的。 -

+

在通信过程中,只会有一个 TCP 连接存在,它承载了任意数量的双向数据流(Stream)。 @@ -739,13 +739,13 @@ HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式 - 消息(Message)是与逻辑请求或响应对应的完整的一系列帧。 - 帧(Frame)是最小的通信单位,来自不同数据流的帧可以交错发送,然后再根据每个帧头的数据流标识符重新组装。 -

+

## 服务端推送 HTTP/2.0 在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了。例如客户端请求 page.html 页面,服务端就把 script.js 和 style.css 等与之相关的资源一起发给客户端。 -

+

## 首部压缩 @@ -755,7 +755,7 @@ HTTP/2.0 要求客户端和服务器同时维护和更新一个包含之前见 不仅如此,HTTP/2.0 也使用 Huffman 编码对首部字段进行压缩。 -

+

# 八、HTTP/1.1 新特性 diff --git a/docs/notes/Java IO.md b/docs/notes/Java IO.md index 4af023377e..41b4ed3ec5 100644 --- a/docs/notes/Java IO.md +++ b/docs/notes/Java IO.md @@ -97,7 +97,7 @@ Java I/O 使用了装饰者模式来实现。以 InputStream 为例, - FileInputStream 是 InputStream 的子类,属于具体组件,提供了字节流的输入操作; - FilterInputStream 属于抽象装饰者,装饰者用于装饰组件,为组件提供额外的功能。例如 BufferedInputStream 为 FileInputStream 提供缓存的功能。 -

+

实例化一个具有缓存功能的字节流对象时,只需要在 FileInputStream 对象上再套一层 BufferedInputStream 对象即可。 @@ -277,7 +277,7 @@ public static void main(String[] args) throws IOException { - Socket:客户端类 - 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。 -

+

## Datagram @@ -339,23 +339,23 @@ I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重 ① 新建一个大小为 8 个字节的缓冲区,此时 position 为 0,而 limit = capacity = 8。capacity 变量不会改变,下面的讨论会忽略它。 -

+

② 从输入通道中读取 5 个字节数据写入缓冲区中,此时 position 为 5,limit 保持不变。 -

+

③ 在将缓冲区的数据写到输出通道之前,需要先调用 flip() 方法,这个方法将 limit 设置为当前 position,并将 position 设置为 0。 -

+

④ 从缓冲区中取 4 个字节到输出缓冲中,此时 position 设为 4。 -

+

⑤ 最后需要调用 clear() 方法来清空缓冲区,此时 position 和 limit 都被设置为最初位置。 -

+

## 文件 NIO 实例 @@ -413,7 +413,7 @@ NIO 实现了 IO 多路复用中的 Reactor 模型,一个线程 Thread 使用 应该注意的是,只有套接字 Channel 才能配置为非阻塞,而 FileChannel 不能,为 FileChannel 配置非阻塞也没有意义。 -

+

### 1. 创建选择器 diff --git "a/docs/notes/Java \345\237\272\347\241\200.md" "b/docs/notes/Java \345\237\272\347\241\200.md" index d0d43b3b5e..c504623430 100644 --- "a/docs/notes/Java \345\237\272\347\241\200.md" +++ "b/docs/notes/Java \345\237\272\347\241\200.md" @@ -193,7 +193,7 @@ value 数组被声明为 final,这意味着 value 数组初始化之后就不 如果一个 String 对象已经被创建过了,那么就会从 String Pool 中取得引用。只有 String 是不可变的,才可能使用 String Pool。 -

+

**3. 安全性** @@ -1356,7 +1356,7 @@ Throwable 可以用来表示任何可以作为异常抛出的类,分为两种 - **受检异常** :需要用 try...catch... 语句捕获并进行处理,并且可以从异常中恢复; - **非受检异常** :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序崩溃并且无法恢复。 -

+

- [Java 入门之异常处理](https://www.tianmaying.com/tutorial/Java-Exception) - [Java 异常的面试问题及答案 -Part 1](http://www.importnew.com/7383.html) diff --git "a/docs/notes/Java \345\256\271\345\231\250.md" "b/docs/notes/Java \345\256\271\345\231\250.md" index 23537532cb..50b21fbcc2 100644 --- "a/docs/notes/Java \345\256\271\345\231\250.md" +++ "b/docs/notes/Java \345\256\271\345\231\250.md" @@ -24,7 +24,7 @@ ## Collection -

+

### 1. Set @@ -50,7 +50,7 @@ ## Map -

+

- TreeMap:基于红黑树实现。 @@ -65,7 +65,7 @@ ## 迭代器模式 -

+

Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。 @@ -126,7 +126,7 @@ public class ArrayList extends AbstractList private static final int DEFAULT_CAPACITY = 10; ``` -

+

### 2. 扩容 @@ -430,7 +430,7 @@ transient Node first; transient Node last; ``` -

+

### 2. 与 ArrayList 的比较 @@ -452,7 +452,7 @@ transient Entry[] table; Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶取模运算结果相同的 Entry。 -

+

```java static class Entry implements Map.Entry { @@ -528,7 +528,7 @@ map.put("K3", "V3"); - 计算键值对所在的桶; - 在链表上顺序查找,时间复杂度显然和链表的长度成正比。 -

+

### 3. put 操作 @@ -864,7 +864,7 @@ final Segment[] segments; static final int DEFAULT_CONCURRENCY_LEVEL = 16; ``` -

+

### 2. size 操作 diff --git "a/docs/notes/Java \345\271\266\345\217\221.md" "b/docs/notes/Java \345\271\266\345\217\221.md" index dc7e314dc9..ee8a6fd5b9 100644 --- "a/docs/notes/Java \345\271\266\345\217\221.md" +++ "b/docs/notes/Java \345\271\266\345\217\221.md" @@ -61,7 +61,7 @@ # 一、线程状态转换 -

+

## 新建(New) @@ -736,7 +736,7 @@ java.util.concurrent(J.U.C)大大提高了并发性能,AQS 被认为是 J. 维护了一个计数器 cnt,每次调用 countDown() 方法会让计数器的值减 1,减到 0 的时候,那些因为调用 await() 方法而在等待的线程就会被唤醒。 -

+

```java public class CountdownLatchExample { @@ -785,7 +785,7 @@ public CyclicBarrier(int parties) { } ``` -

+

```java public class CyclicBarrierExample { @@ -1022,7 +1022,7 @@ public class ForkJoinPool extends AbstractExecutorService ForkJoinPool 实现了工作窃取算法来提高 CPU 的利用率。每个线程都维护了一个双端队列,用来存储需要执行的任务。工作窃取算法允许空闲的线程从其它线程的双端队列中窃取一个任务来执行。窃取的任务必须是最晚的任务,避免和队列所属线程发生竞争。例如下图中,Thread2 从 Thread1 的队列中拿出最晚的 Task1 任务,Thread1 会拿出 Task2 来执行,这样就避免发生竞争。但是如果队列中只有一个任务时还是会发生竞争。 -

+

# 九、线程不安全示例 @@ -1077,19 +1077,19 @@ Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异, 加入高速缓存带来了一个新的问题:缓存一致性。如果多个缓存共享同一块主内存区域,那么多个缓存的数据可能会不一致,需要一些协议来解决这个问题。 -

+

所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存或者寄存器中,保存了该线程使用的变量的主内存副本拷贝。 线程只能直接操作工作内存中的变量,不同线程之间的变量值传递需要通过主内存来完成。 -

+

## 内存间交互操作 Java 内存模型定义了 8 个操作来完成主内存和工作内存的交互操作。 -

+

- read:把一个变量的值从主内存传输到工作内存中 - load:在 read 之后执行,把 read 得到的值放入工作内存的变量副本中 @@ -1112,11 +1112,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 重写之前线程不安全的代码之后得到以下线程安全实现: @@ -1224,7 +1224,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 在一个线程内,在程序前面的操作先行发生于后面的操作。 -

+

### 2. 管程锁定规则 @@ -1232,7 +1232,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 一个 unlock 操作先行发生于后面对同一个锁的 lock 操作。 -

+

### 3. volatile 变量规则 @@ -1240,7 +1240,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作。 -

+

### 4. 线程启动规则 @@ -1248,7 +1248,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 Thread 对象的 start() 方法调用先行发生于此线程的每一个动作。 -

+

### 5. 线程加入规则 @@ -1256,7 +1256,7 @@ Thread 对象的 start() 方法调用先行发生于此线程的每一个动作 Thread 对象的结束先行发生于 join() 方法返回。 -

+

### 6. 线程中断规则 @@ -1474,7 +1474,7 @@ public class ThreadLocalExample1 { 它所对应的底层结构图为: -

+

每个 Thread 都有一个 ThreadLocal.ThreadLocalMap 对象。 @@ -1577,17 +1577,17 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 以下是 HotSpot 虚拟机对象头的内存布局,这些数据被称为 Mark Word。其中 tag bits 对应了五个状态,这些状态在右侧的 state 表格中给出。除了 marked for gc 状态,其它四个状态已经在前面介绍过了。 -

+

下图左侧是一个线程的虚拟机栈,其中有一部分称为 Lock Record 的区域,这是在轻量级锁运行过程创建的,用于存放锁对象的 Mark Word。而右侧就是一个锁对象,包含了 Mark Word 和其它信息。 -

+

轻量级锁是相对于传统的重量级锁而言,它使用 CAS 操作来避免重量级锁使用互斥量的开销。对于绝大部分的锁,在整个同步周期内都是不存在竞争的,因此也就不需要都使用互斥量进行同步,可以先采用 CAS 操作进行同步,如果 CAS 失败了再改用互斥量进行同步。 当尝试获取一个锁对象时,如果锁对象标记为 0 01,说明锁对象的锁未锁定(unlocked)状态。此时虚拟机在当前线程的虚拟机栈中创建 Lock Record,然后使用 CAS 操作将对象的 Mark Word 更新为 Lock Record 指针。如果 CAS 操作成功了,那么线程就获取了该对象上的锁,并且对象的 Mark Word 的锁标记变为 00,表示该对象处于轻量级锁状态。 -

+

如果 CAS 操作失败了,虚拟机首先会检查对象的 Mark Word 是否指向当前线程的虚拟机栈,如果是的话说明当前线程已经拥有了这个锁对象,那就可以直接进入同步块继续执行,否则说明这个锁对象已经被其他线程线程抢占了。如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁。 @@ -1599,7 +1599,7 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 当有另外一个线程去尝试获取这个锁对象时,偏向状态就宣告结束,此时撤销偏向(Revoke Bias)后恢复到未锁定状态或者轻量级锁状态。 -

+

# 十三、多线程开发良好的实践 diff --git "a/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" "b/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" index e2a2bff1b3..1a6e0cff26 100644 --- "a/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" +++ "b/docs/notes/Java \350\231\232\346\213\237\346\234\272.md" @@ -32,7 +32,7 @@ # 一、运行时数据区域 -

+

## 程序计数器 @@ -42,7 +42,7 @@ 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 -

+

可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小,在 JDK 1.4 中默认为 256K,而在 JDK 1.5+ 默认为 1M: @@ -61,7 +61,7 @@ java -Xss2M HackTheJava 本地方法一般是用其它语言(C、C++ 或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序,对待这些方法需要特别处理。 -

+

## 堆 @@ -146,7 +146,7 @@ Java 虚拟机使用该算法来判断对象是否可被回收,GC Roots 一般 - 方法区中类静态属性引用的对象 - 方法区中的常量引用的对象 -

+

### 3. 方法区的回收 @@ -227,7 +227,7 @@ obj = null; ### 1. 标记 - 清除 -

+

在标记阶段,程序会检查每个对象是否为活动对象,如果是活动对象,则程序会在对象头部打上标记。 @@ -242,7 +242,7 @@ obj = null; ### 2. 标记 - 整理 -

+

让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。 @@ -256,7 +256,7 @@ obj = null; ### 3. 复制 -

+

将内存划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了就将还存活的对象复制到另一块上面,然后再把使用过的内存空间进行一次清理。 @@ -277,7 +277,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ## 垃圾收集器 -

+

以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 @@ -286,7 +286,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ### 1. Serial 收集器 -

+

Serial 翻译为串行,也就是说它以串行的方式执行。 @@ -298,7 +298,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 2. ParNew 收集器 -

+

它是 Serial 收集器的多线程版本。 @@ -318,7 +318,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 4. Serial Old 收集器 -

+

是 Serial 收集器的老年代版本,也是给 Client 场景下的虚拟机使用。如果用在 Server 场景下,它有两大用途: @@ -327,7 +327,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 5. Parallel Old 收集器 -

+

是 Parallel Scavenge 收集器的老年代版本。 @@ -335,7 +335,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 6. CMS 收集器 -

+

CMS(Concurrent Mark Sweep),Mark Sweep 指的是标记 - 清除算法。 @@ -360,17 +360,17 @@ G1(Garbage-First),它是一款面向服务端应用的垃圾收集器, 堆被分为新生代和老年代,其它收集器进行收集的范围都是整个新生代或者老年代,而 G1 可以直接对新生代和老年代一起回收。 -

+

G1 把堆划分成多个大小相等的独立区域(Region),新生代和老年代不再物理隔离。 -

+

通过引入 Region 的概念,从而将原来的一整块内存空间划分成多个的小空间,使得每个小空间可以单独进行垃圾回收。这种划分方法带来了很大的灵活性,使得可预测的停顿时间模型成为可能。通过记录每个 Region 垃圾回收时间以及回收所获得的空间(这两个值是通过过去回收的经验获得),并维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的 Region。 每个 Region 都有一个 Remembered Set,用来记录该 Region 对象的引用对象所在的 Region。通过使用 Remembered Set,在做可达性分析的时候就可以避免全堆扫描。 -

+

如果不计算维护 Remembered Set 的操作,G1 收集器的运作大致可划分为以下几个步骤: @@ -458,7 +458,7 @@ G1 把堆划分成多个大小相等的独立区域(Region),新生代和 ## 类的生命周期 -

+

包括以下 7 个阶段: @@ -628,7 +628,7 @@ System.out.println(ConstClass.HELLOWORLD); 下图展示了类加载器之间的层次关系,称为双亲委派模型(Parents Delegation Model)。该模型要求除了顶层的启动类加载器外,其它的类加载器都要有自己的父类加载器。这里的父子关系一般通过组合关系(Composition)来实现,而不是继承关系(Inheritance)。 -

+

### 1. 工作过程 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index eb3ce48b4a..305174beb3 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -61,7 +61,7 @@ -

+

考虑到 dp[i] 只与 dp[i - 1] 和 dp[i - 2] 有关,因此可以只用两个变量来存储 dp[i - 1] 和 dp[i - 2],使得原来的 O(N) 空间复杂度优化为 O(1) 复杂度。 @@ -94,7 +94,7 @@ public int climbStairs(int n) { -

+

```java public int rob(int[] nums) { @@ -150,7 +150,7 @@ private int rob(int[] nums, int first, int last) { -

+

## 5. 母牛生产 @@ -162,7 +162,7 @@ private int rob(int[] nums, int first, int last) { -

+

# 矩阵路径 @@ -212,7 +212,7 @@ public int minPathSum(int[][] grid) { 题目描述:统计从矩阵左上角到右下角的路径总数,每次只能向右或者向下移动。 -

+

```java public int uniquePaths(int m, int n) { @@ -443,7 +443,7 @@ public int numDecodings(String s) { -

+

对于一个长度为 N 的序列,最长递增子序列并不一定会以 SN 为结尾,因此 dp[N] 不是序列的最长递增子序列的长度,需要遍历 dp 数组找出最大值才是所要的结果,max{ dp[i] | 1 <= i <= N} 即为所求。 @@ -616,7 +616,7 @@ public int wiggleMaxLength(int[] nums) { -

+

对于长度为 N 的序列 S1 和长度为 M 的序列 S2,dp[N][M] 就是序列 S1 和序列 S2 的最长公共子序列长度。 @@ -662,7 +662,7 @@ public int wiggleMaxLength(int[] nums) { -

+

```java // W 为背包总体积 @@ -691,7 +691,7 @@ public int knapsack(int W, int N, int[] weights, int[] values) { -

+

因为 dp[j-w] 表示 dp[i-1][j-w],因此不能先求 dp[i][j-w],防止将 dp[i-1][j-w] 覆盖。也就是说要先计算 dp[i][j] 再计算 dp[i][j-w],在程序实现时需要按倒序来循环求解。 @@ -1055,7 +1055,7 @@ public int combinationSum4(int[] nums, int target) { 题目描述:交易之后需要有一天的冷却时间。 -

+

```java public int maxProfit(int[] prices) { @@ -1098,7 +1098,7 @@ The total profit is ((8 - 1) - 2) + ((9 - 4) - 2) = 8. 题目描述:每交易一次,都要支付一定的费用。 -

+

```java public int maxProfit(int[] prices, int fee) { diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" index 5db6895dec..b24ab780f6 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" @@ -32,7 +32,7 @@ Output: index1=1, index2=2 数组中的元素最多遍历一次,时间复杂度为 O(N)。只使用了两个额外变量,空间复杂度为 O(1)。 -

+

```java public int[] twoSum(int[] numbers, int target) { @@ -102,7 +102,7 @@ Explanation: 1 * 1 + 2 * 2 = 5 Given s = "leetcode", return "leotcede". ``` -

+

使用双指针,一个指针从头向尾遍历,一个指针从尾到头遍历,当两个指针都遍历到元音字符时,交换这两个元音字符。 @@ -111,7 +111,7 @@ Given s = "leetcode", return "leotcede". - 时间复杂度为 O(N):只需要遍历所有元素一次 - 空间复杂度 O(1):只需要使用两个额外变量 -

+

```java private final static HashSet vowels = new HashSet<>( @@ -155,7 +155,7 @@ Explanation: You could delete the character 'c'. 使用双指针可以很容易判断一个字符串是否是回文字符串:令一个指针从左到右遍历,一个指针从右到左遍历,这两个指针同时移动一个位置,每次都判断两个指针指向的字符是否相同,如果都相同,字符串才是具有左右对称性质的回文字符串。 -

+

本题的关键是处理删除一个字符。在使用双指针遍历字符串时,如果出现两个指针指向的字符不相等的情况,我们就试着删除一个字符,再判断删除完之后的字符串是否是回文字符串。 @@ -163,7 +163,7 @@ Explanation: You could delete the character 'c'. 在试着删除字符时,我们既可以删除左指针指向的字符,也可以删除右指针指向的字符。 -

+

```java public boolean validPalindrome(String s) { diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" index b5155262c5..09fdc70d43 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" @@ -200,7 +200,7 @@ public String frequencySort(String s) { 有三种颜色的球,算法的目标是将这三种球按颜色顺序正确地排列。它其实是三向切分快速排序的一种变种,在三向切分快速排序中,每次切分都将数组分成三个区间:小于切分元素、等于切分元素、大于切分元素,而该算法是将数组分成三个区间:等于红色、等于白色、等于蓝色。 -

+

## 1. 按颜色进行排序 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" index 6f3735d9cd..9f14efbd0c 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" @@ -32,7 +32,7 @@ # BFS -

+

广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 @@ -269,7 +269,7 @@ private int getShortestPath(List[] graphic, int start, int end) { # DFS -

+

广度优先搜索一层一层遍历,每一层得到的所有新节点,要用队列存储起来以备下一层遍历的时候再遍历。 @@ -591,7 +591,7 @@ Backtracking(回溯)属于 DFS。 [Leetcode](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) / [力扣](https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/description/) -

+

```html Input:Digit string "23" @@ -1194,7 +1194,7 @@ private boolean isPalindrome(String s, int begin, int end) { [Leetcode](https://leetcode.com/problems/sudoku-solver/description/) / [力扣](https://leetcode-cn.com/problems/sudoku-solver/description/) -

+

```java private boolean[][] rowsUsed = new boolean[9][10]; @@ -1253,7 +1253,7 @@ private int cubeNum(int i, int j) { [Leetcode](https://leetcode.com/problems/n-queens/description/) / [力扣](https://leetcode-cn.com/problems/n-queens/description/) -

+

在 n\*n 的矩阵中摆放 n 个皇后,并且每个皇后不能在同一行,同一列,同一对角线上,求所有的 n 皇后的解。 @@ -1261,12 +1261,12 @@ private int cubeNum(int i, int j) { 45 度对角线标记数组的长度为 2 \* n - 1,通过下图可以明确 (r, c) 的位置所在的数组下标为 r + c。 -

+

135 度对角线标记数组的长度也是 2 \* n - 1,(r, c) 的位置所在的数组下标为 n - 1 - (r - c)。 -

+

```java private List> solutions; diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" index 7083450342..e21daeeabb 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" @@ -1045,7 +1045,7 @@ private void inOrder(TreeNode node, List nums) { # Trie -

+

Trie,又称前缀树或字典树,用于判断字符串是否存在或者是否具有某种字符串前缀。 diff --git "a/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" "b/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" index 9a9a20fd99..f75bddc980 100644 --- "a/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" +++ "b/docs/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" @@ -35,7 +35,7 @@ Output: 2 证明:假设在某次选择中,贪心策略选择给当前满足度最小的孩子分配第 m 个饼干,第 m 个饼干为可以满足该孩子的最小饼干。假设存在一种最优策略,可以给该孩子分配第 n 个饼干,并且 m < n。我们可以发现,经过这一轮分配,贪心策略分配后剩下的饼干一定有一个比最优策略来得大。因此在后续的分配中,贪心策略一定能满足更多的孩子。也就是说不存在比贪心策略更优的策略,即贪心策略就是最优策略。 -

+

```java public int findContentChildren(int[] grid, int[] size) { diff --git a/docs/notes/Linux.md b/docs/notes/Linux.md index 924d87c493..b1ba8c58c2 100644 --- a/docs/notes/Linux.md +++ b/docs/notes/Linux.md @@ -165,7 +165,7 @@ Linux 发行版是 Linux 内核及各种应用软件的集成版本。 - 编辑模式(Insert mode):按下 "i" 等按键之后进入,可以对文本进行编辑; - 指令列模式(Bottom-line mode):按下 ":" 按键之后进入,用于保存退出等操作。 -

+

在指令列模式下,有以下命令用于离开或者保存文件。 @@ -199,25 +199,25 @@ GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操 IDE(ATA)全称 Advanced Technology Attachment,接口速度最大为 133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。 -

+

### 2. SATA SATA 全称 Serial ATA,也就是使用串口的 ATA 接口,抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能。SATA-II 的接口速度为 300MiB/s,而 SATA-III 标准可达到 600MiB/s 的传输速度。SATA 的数据线也比 ATA 的细得多,有利于机箱内的空气流通,整理线材也比较方便。 -

+

### 3. SCSI SCSI 全称是 Small Computer System Interface(小型机系统接口),SCSI 硬盘广为工作站以及个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速 15000rpm 的高转速,且传输时 CPU 占用率较低,但是单价也比相同容量的 ATA 及 SATA 硬盘更加昂贵。 -

+

### 4. SAS SAS(Serial Attached SCSI)是新一代的 SCSI 技术,和 SATA 硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s。此外也通过缩小连接线改善系统内部空间等。 -

+

## 磁盘的文件名 @@ -252,7 +252,7 @@ GPT 没有扩展分区概念,都是主分区,每个 LBA 可以分 4 个分 MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB = 8 ZB。 -

+

## 开机检测程序 @@ -260,7 +260,7 @@ MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB BIOS(Basic Input/Output System,基本输入输出系统),它是一个固件(嵌入在硬件中的软件),BIOS 程序存放在断电后内容不会丢失的只读内存中。 -

+

BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可以开机的磁盘,并读取磁盘第一个扇区的主要开机记录(MBR),由主要开机记录(MBR)执行其中的开机管理程序,这个开机管理程序会加载操作系统的核心文件。 @@ -268,7 +268,7 @@ BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可 下图中,第一扇区的主要开机记录(MBR)中的开机管理程序提供了两个选单:M1、M2,M1 指向了 Windows 操作系统,而 M2 指向其它分区的启动扇区,里面包含了另外一个开机管理程序,提供了一个指向 Linux 的选单。 -

+

安装多重引导,最好先安装 Windows 再安装 Linux。因为安装 Windows 时会覆盖掉主要开机记录(MBR),而 Linux 可以选择将开机管理程序安装在主要开机记录(MBR)或者其它分区的启动扇区,并且可以设置开机管理程序的选单。 @@ -294,17 +294,17 @@ BIOS 不可以读取 GPT 分区表,而 UEFI 可以。 - superblock:记录文件系统的整体信息,包括 inode 和 block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等; - block bitmap:记录 block 是否被使用的位图。 -

+

## 文件读取 对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中查找文件内容所在的所有 block,然后把所有 block 的内容读出来。 -

+

而对于 FAT 文件系统,它没有 inode,每个 block 中存储着下一个 block 的编号。 -

+

## 磁盘碎片 @@ -341,7 +341,7 @@ inode 具有以下特点: inode 中记录了文件内容所在的 block 编号,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block 编号。因此引入了间接、双间接、三间接引用。间接引用让 inode 记录的引用 block 块记录引用信息。 -

+

## 目录 @@ -367,7 +367,7 @@ ext3/ext4 文件系统引入了日志功能,可以利用日志来修复文件 - /usr (unix software resource):所有系统默认软件都会安装到这个目录; - /var (variable):存放系统或程序运行过程中的数据文件。 -

+

# 五、文件 @@ -534,7 +534,7 @@ cp [-adfilprsu] source destination ## 链接 -

+

```html @@ -662,7 +662,7 @@ example: find . -name "shadow*" +4、4 和 -4 的指示的时间范围如下: -

+

**② 与文件拥有者和所属群组有关的选项** @@ -1176,7 +1176,7 @@ dmtsai lines: 5 columns: 9 | T | stopped (either by a job control signal or because it is being traced)
结束,进程既可以被作业控制信号结束,也可能是正在被追踪。|
-

+

## SIGCHLD @@ -1189,7 +1189,7 @@ dmtsai lines: 5 columns: 9 在子进程退出时,它的进程描述符不会立即释放,这是为了让父进程得到子进程信息,父进程通过 wait() 和 waitpid() 来获得一个已经退出的子进程的信息。 -

+

## wait() diff --git a/docs/notes/MySQL.md b/docs/notes/MySQL.md index 14da320107..2239d48a72 100644 --- a/docs/notes/MySQL.md +++ b/docs/notes/MySQL.md @@ -42,7 +42,7 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且小于等于 keyi+1。 -

+

### 2. 操作 @@ -84,11 +84,11 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 InnoDB 的 B+Tree 索引分为主索引和辅助索引。主索引的叶子节点 data 域记录着完整的数据记录,这种索引方式被称为聚簇索引。因为无法把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。 -

+

辅助索引的叶子节点的 data 域记录着主键的值,因此在使用辅助索引进行查找时,需要先查找到主键值,然后再到主索引中进行查找。 -

+

### 2. 哈希索引 @@ -350,7 +350,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 当一个表的数据不断增多时,Sharding 是必然的选择,它可以将数据分布到集群的不同节点上,从而缓存单个数据库的压力。 -

+

## 垂直切分 @@ -358,7 +358,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 在数据库的层面使用垂直切分将按数据库中表的密集程度部署到不同的库中,例如将原来的电商数据库垂直切分成商品数据库、用户数据库等。 -

+

## Sharding 策略 @@ -392,7 +392,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 - **I/O 线程** :负责从主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log)。 - **SQL 线程** :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中重放(Replay)。 -

+

## 读写分离 @@ -406,7 +406,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 读写分离常用代理方式来实现,代理服务器接收应用层传来的读写请求,然后决定转发到哪个服务器。 -

+

# 参考资料 diff --git a/docs/notes/Redis.md b/docs/notes/Redis.md index 38901f41b7..a8b71352fd 100644 --- a/docs/notes/Redis.md +++ b/docs/notes/Redis.md @@ -67,7 +67,7 @@ Redis 支持很多特性,例如将内存中的数据持久化到硬盘中, ## STRING -

+

```html > set hello world @@ -82,7 +82,7 @@ OK ## LIST -

+

```html > rpush list-key item @@ -110,7 +110,7 @@ OK ## SET -

+

```html > sadd set-key item @@ -144,7 +144,7 @@ OK ## HASH -

+

```html > hset hash-key sub-key1 value1 @@ -175,7 +175,7 @@ OK ## ZSET -

+

```html > zadd zset-key 728 member1 @@ -317,11 +317,11 @@ int dictRehash(dict *d, int n) { 跳跃表是基于多指针有序链表实现的,可以看成多个有序链表。 -

+

在查找时,从上层指针开始查找,找到对应的区间之后再到下一层去查找。下图演示了查找 22 的过程。 -

+

与红黑树等平衡树相比,跳跃表具有以下优点: @@ -472,7 +472,7 @@ Redis 服务器是一个事件驱动程序。 Redis 基于 Reactor 模式开发了自己的网络事件处理器,使用 I/O 多路复用程序来同时监听多个套接字,并将到达的事件传送给文件事件分派器,分派器会根据套接字产生的事件类型调用相应的事件处理器。 -

+

## 时间事件 @@ -525,7 +525,7 @@ def main(): 从事件处理的角度来看,服务器运行流程如下: -

+

# 十一、复制 @@ -545,7 +545,7 @@ def main(): 随着负载不断上升,主服务器可能无法很快地更新所有从服务器,或者重新连接和重新同步从服务器将导致系统超载。为了解决这个问题,可以创建一个中间层来分担主服务器的复制工作。中间层的服务器是最上层服务器的从服务器,又是最下层服务器的主服务器。 -

+

# 十二、Sentinel @@ -580,7 +580,7 @@ Sentinel(哨兵)可以监听集群中的服务器,并在主服务器进入 Redis 没有关系型数据库中的表这一概念来将同种类型的数据存放在一起,而是使用命名空间的方式来实现这一功能。键名的前面部分存储命名空间,后面部分的内容存储 ID,通常使用 : 来进行分隔。例如下面的 HASH 的键名为 article:92617,其中 article 为命名空间,ID 为 92617。 -

+

## 点赞功能 @@ -588,13 +588,13 @@ Redis 没有关系型数据库中的表这一概念来将同种类型的数据 为了节约内存,规定一篇文章发布满一周之后,就不能再对它进行投票,而文章的已投票集合也会被删除,可以为文章的已投票集合设置一个一周的过期时间就能实现这个规定。 -

+

## 对文章进行排序 为了按发布时间和点赞数进行排序,可以建立一个文章发布时间的有序集合和一个文章点赞数的有序集合。(下图中的 score 就是这里所说的点赞数;下面所示的有序集合分值并不直接是时间和点赞数,而是根据时间和点赞数间接计算出来的) -

+

# 参考资料 diff --git a/docs/notes/Socket.md b/docs/notes/Socket.md index 5dc40ed8b9..64fc63008c 100644 --- a/docs/notes/Socket.md +++ b/docs/notes/Socket.md @@ -46,7 +46,7 @@ Unix 有五种 I/O 模型: ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); ``` -

+

## 非阻塞式 I/O @@ -54,7 +54,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 由于 CPU 要处理更多的系统调用,因此这种模型的 CPU 利用率比较低。 -

+

## I/O 复用 @@ -64,7 +64,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时有几万个连接,那么就需要创建相同数量的线程。相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。 -

+

## 信号驱动 I/O @@ -72,7 +72,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 相比于非阻塞式 I/O 的轮询方式,信号驱动 I/O 的 CPU 利用率更高。 -

+

## 异步 I/O @@ -80,7 +80,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 异步 I/O 与信号驱动 I/O 的区别在于,异步 I/O 的信号是通知应用进程 I/O 完成,而信号驱动 I/O 的信号是通知应用进程可以开始 I/O。 -

+

## 五大 I/O 模型比较 @@ -91,7 +91,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 非阻塞式 I/O 、信号驱动 I/O 和异步 I/O 在第一阶段不会阻塞。 -

+

# 二、I/O 复用 diff --git "a/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" "b/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" index 475bbc560c..09a932d7cc 100644 --- "a/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" +++ "b/docs/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" @@ -48,11 +48,11 @@ - 用 min、max 表示数量范围; - 用 first、last 表示访问空间的包含范围; -

+

- begin、end 表示访问空间的排除范围,即 end 不包含尾部。 -

+

# 四、良好的代码风格 diff --git "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" index bf23703c05..cee7f7056f 100644 --- "a/docs/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/docs/notes/\345\210\206\345\270\203\345\274\217.md" @@ -70,7 +70,7 @@ EXPIRE 指令可以为一个键值对设置一个过期时间,从而避免了 Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节点为 /app1。 -

+

### 2. 节点类型 @@ -118,7 +118,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 协调者询问参与者事务是否执行成功,参与者发回事务执行结果。询问可以看成一种投票,需要参与者都同意才能执行。 -

+

#### 1.2 提交阶段 @@ -126,7 +126,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 需要注意的是,在准备阶段,参与者执行了事务,但是还未提交。只有在提交阶段接收到协调者发来的通知后,才进行提交或者回滚。 -

+

### 2. 存在的问题 @@ -154,14 +154,14 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 2. 之后将本地消息表中的消息转发到消息队列中,如果转发成功则将消息从本地消息表中删除,否则继续重新转发。 3. 在分布式事务操作的另一方从消息队列中读取一个消息,并执行消息中的操作。 -

+

# 三、CAP 分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition Tolerance),最多只能同时满足其中两项。 -

+

## 一致性 @@ -225,7 +225,7 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE - 接受者(Acceptor):对每个提议进行投票; - 告知者(Learner):被告知投票的结果,不参与投票过程。 -

+

## 执行过程 @@ -235,19 +235,19 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE 下图演示了两个 Proposer 和三个 Acceptor 的系统中运行该算法的初始过程,每个 Proposer 都会向所有 Acceptor 发送 Prepare 请求。 -

+

当 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n1, v1],并且之前还未接收过 Prepare 请求,那么发送一个 Prepare 响应,设置当前接收到的提议为 [n1, v1],并且保证以后不会再接受序号小于 n1 的提议。 如下图,Acceptor X 在收到 [n=2, v=8] 的 Prepare 请求时,由于之前没有接收过提议,因此就发送一个 [no previous] 的 Prepare 响应,设置当前接收到的提议为 [n=2, v=8],并且保证以后不会再接受序号小于 2 的提议。其它的 Acceptor 类似。 -

+

如果 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n2, v2],并且之前已经接收过提议 [n1, v1]。如果 n1 > n2,那么就丢弃该提议请求;否则,发送 Prepare 响应,该 Prepare 响应包含之前已经接收过的提议 [n1, v1],设置当前接收到的提议为 [n2, v2],并且保证以后不会再接受序号小于 n2 的提议。 如下图,Acceptor Z 收到 Proposer A 发来的 [n=2, v=8] 的 Prepare 请求,由于之前已经接收过 [n=4, v=5] 的提议,并且 n > 2,因此就抛弃该提议请求;Acceptor X 收到 Proposer B 发来的 [n=4, v=5] 的 Prepare 请求,因为之前接收到的提议为 [n=2, v=8],并且 2 <= 4,因此就发送 [n=2, v=8] 的 Prepare 响应,设置当前接收到的提议为 [n=4, v=5],并且保证以后不会再接受序号小于 4 的提议。Acceptor Y 类似。 -

+

### 2. Accept 阶段 @@ -257,13 +257,13 @@ Proposer A 接收到两个 Prepare 响应之后,就发送 [n=2, v=8] Accept Proposer B 过后也收到了两个 Prepare 响应,因此也开始发送 Accept 请求。需要注意的是,Accept 请求的 v 需要取它收到的最大提议编号对应的 v 值,也就是 8。因此它发送 [n=4, v=8] 的 Accept 请求。 -

+

### 3. Learn 阶段 Acceptor 接收到 Accept 请求时,如果序号大于等于该 Acceptor 承诺的最小序号,那么就发送 Learn 提议给所有的 Learner。当 Learner 发现有大多数的 Acceptor 接收了某个提议,那么该提议的提议值就被 Paxos 选择出来。 -

+

## 约束条件 @@ -291,47 +291,47 @@ Raft 也是分布式一致性协议,主要是用来竞选主节点。 - 下图展示一个分布式系统的最初阶段,此时只有 Follower 没有 Leader。Node A 等待一个随机的竞选超时时间之后,没收到 Leader 发来的心跳包,因此进入竞选阶段。 -

+

- 此时 Node A 发送投票请求给其它所有节点。 -

+

- 其它节点会对请求进行回复,如果超过一半的节点回复了,那么该 Candidate 就会变成 Leader。 -

+

- 之后 Leader 会周期性地发送心跳包给 Follower,Follower 接收到心跳包,会重新开始计时。 -

+

## 多个 Candidate 竞选 - 如果有多个 Follower 成为 Candidate,并且所获得票数相同,那么就需要重新开始投票。例如下图中 Node B 和 Node D 都获得两票,需要重新开始投票。 -

+

- 由于每个节点设置的随机竞选超时时间不同,因此下一次再次出现多个 Candidate 并获得同样票数的概率很低。 -

+

## 数据同步 - 来自客户端的修改都会被传入 Leader。注意该修改还未被提交,只是写入日志中。 -

+

- Leader 会把修改复制到所有 Follower。 -

+

- Leader 会等待大多数的 Follower 也进行了修改,然后才将修改提交。 -

+

- 此时 Leader 会通知的所有 Follower 让它们也提交修改,此时所有节点的值达成一致。 -

+

# 参考 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" index 46931b58e9..1b40238cb0 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" @@ -26,13 +26,13 @@ -

+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 @@ -92,23 +92,23 @@ public class Solution { 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { @@ -133,21 +133,21 @@ public int RectCover(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { @@ -172,7 +172,7 @@ public int JumpFloor(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 @@ -232,13 +232,13 @@ public int JumpFloorII(int target) { 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 @@ -300,13 +300,13 @@ private int minNumber(int[] nums, int l, int h) { 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 @@ -522,7 +522,7 @@ public int NumberOf1(int n) { -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 @@ -592,11 +592,11 @@ private void printNumber(char[] number) { ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 @@ -630,7 +630,7 @@ public ListNode deleteNode(ListNode head, ListNode tobeDelete) { ## 题目描述 -

+

## 解题描述 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" index aff1be3cbb..854388270d 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" @@ -70,7 +70,7 @@ public boolean isNumeric(char[] str) { 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 @@ -131,7 +131,7 @@ private void swap(int[] nums, int i, int j) { 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { @@ -165,7 +165,7 @@ public ListNode FindKthToTail(ListNode head, int k) { 在相遇点,slow 要到环的入口点还需要移动 z 个节点,如果让 fast 重新从头开始移动,并且速度变为每次移动一个节点,那么它到环入口点还需要移动 x 个节点。在上面已经推导出 x=z,因此 fast 和 slow 将在环入口点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { @@ -228,7 +228,7 @@ public ListNode ReverseList(ListNode head) { ## 题目描述 -

+

## 解题思路 @@ -280,7 +280,7 @@ public ListNode Merge(ListNode list1, ListNode list2) { ## 题目描述 -

+

## 解题思路 @@ -308,7 +308,7 @@ private boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) { ## 题目描述 -

+

## 解题思路 @@ -334,7 +334,7 @@ private void swap(TreeNode root) { ## 题目描述 -

+

## 解题思路 @@ -364,7 +364,7 @@ boolean isSymmetrical(TreeNode t1, TreeNode t2) { 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" index d897d973a1..f8853033b1 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" @@ -87,7 +87,7 @@ public boolean IsPopOrder(int[] pushSequence, int[] popSequence) { 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 @@ -195,7 +195,7 @@ public ArrayList> Print(TreeNode pRoot) { 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 @@ -230,7 +230,7 @@ private boolean verify(int[] sequence, int first, int last) { 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 @@ -277,21 +277,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { @@ -333,7 +333,7 @@ public RandomListNode Clone(RandomListNode pHead) { 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" index 2bcc5e842f..c0d701f7dc 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" @@ -33,7 +33,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java @@ -87,7 +87,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { @@ -132,7 +132,7 @@ Output: 从后向前遍是为了在改变 P2 所指向的内容时,不会影响到 P1 遍历原来字符串的内容。 -

+

```java public String replaceSpace(StringBuffer str) { @@ -164,7 +164,7 @@ public String replaceSpace(StringBuffer str) { 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -192,7 +192,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { - 头结点是在头插法中使用的一个额外节点,这个节点不存储值; - 第一个节点就是链表的第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -219,7 +219,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -244,13 +244,13 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。 -

+

```java // 缓存中序遍历数组每个值对应的索引 @@ -300,11 +300,11 @@ public class TreeLinkNode { ① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { @@ -337,7 +337,7 @@ public TreeLinkNode GetNext(TreeLinkNode pNode) { in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" index ab34a6d003..ed3d610d1d 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" @@ -120,7 +120,7 @@ private void merge(int[] nums, int l, int m, int h) { ## 题目描述 -

+

## 解题思路 @@ -212,7 +212,7 @@ private void inOrder(TreeNode root, int k) { 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 @@ -230,7 +230,7 @@ public int TreeDepth(TreeNode root) { 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" index 053d412920..1e9f9c310f 100644 --- "a/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" +++ "b/docs/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" @@ -19,7 +19,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 @@ -92,7 +92,7 @@ public List> dicesSum(int n) { 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 @@ -152,7 +152,7 @@ public int LastRemaining_Solution(int n, int m) { 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 @@ -224,7 +224,7 @@ public int Add(int a, int b) { 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 @@ -289,7 +289,7 @@ public int StrToInt(String str) { 二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -309,7 +309,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 328090001e..949dddc121 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -80,7 +80,7 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT @@ -94,25 +94,25 @@ MySQL 默认采用自动提交模式。也就是说,如果不显式使用`STAR T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 -

+

## 读脏数据 T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 -

+

## 不可重复读 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。 -

+

## 幻影读 T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。 -

+

---- @@ -322,7 +322,7 @@ MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行(Record)的所有快照连接起来。 -

+

## 实现过程 @@ -536,7 +536,7 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图的 Course 和 Student 是一对多的关系。 -

+

## 表示出现多次的关系 @@ -544,19 +544,19 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。 -

+

## 联系的多向性 虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。 -

+

## 表示子类 用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。 -

+

# 参考资料 diff --git "a/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" "b/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" index 15384384ae..4df876d8cb 100644 --- "a/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" +++ "b/docs/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" @@ -35,7 +35,7 @@ Ant 具有编译、测试和打包功能,其后出现的 Maven 在 Ant 的功能基础上又新增了依赖管理功能,而最新的 Gradle 又在 Maven 的功能基础上新增了对 Groovy 语言的支持。 -

+

Gradle 和 Maven 的区别是,它使用 Groovy 这种特定领域语言(DSL)来管理构建脚本,而不再使用 XML 这种标记性语言。因为项目如果庞大的话,XML 很容易就变得臃肿。 diff --git "a/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" "b/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" index 9d453df9f2..c4d38ede79 100644 --- "a/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" +++ "b/docs/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" @@ -173,7 +173,7 @@ a.+c ^\s*\/\/.*$ ``` -

+

**匹配结果** diff --git "a/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" "b/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" index 7ed64fdfeb..485e25bb56 100644 --- "a/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" +++ "b/docs/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" @@ -19,20 +19,20 @@ 消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。 -

+

## 发布/订阅 消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。 -

+

发布与订阅模式和观察者模式有以下不同: - 观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,生产者与消费者不知道对方的存在,它们之间通过频道进行通信。 - 观察者模式是同步的,当事件触发时,主题会调用观察者的方法,然后等待方法返回;而发布与订阅模式是异步的,生产者向频道发送一个消息之后,就不需要关心消费者何时去订阅这个消息,可以立即返回。 -

+

# 二、使用场景 diff --git "a/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" "b/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" index aad5fbdcfe..7969ca1f51 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" @@ -1,6 +1,6 @@ # 汉诺塔 -

+

有三个柱子,分别为 from、buffer、to。需要将 from 上的圆盘全部移动到 to 上,并且要保证小圆盘始终在大圆盘上。 @@ -8,15 +8,15 @@ ① 将 n-1 个圆盘从 from -> buffer -

+

② 将 1 个圆盘从 from -> to -

+

③ 将 n-1 个圆盘从 buffer -> to -

+

如果只有一个圆盘,那么只需要进行一次移动操作。 @@ -67,7 +67,7 @@ from H1 to H3 生成编码时,从根节点出发,向左遍历则添加二进制位 0,向右则添加二进制位 1,直到遍历到叶子节点,叶子节点代表的字符的编码就是这个路径编码。 -

+

```java public class Huffman { diff --git "a/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" "b/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" index ca293d147f..e999528279 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" @@ -12,7 +12,7 @@ 用于解决动态连通性问题,能动态连接两个点,并且判断两个点是否连通。 -

+

| 方法 | 描述 | | :---: | :---: | @@ -51,7 +51,7 @@ public abstract class UF { 但是 union 操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 -

+

```java public class QuickFindUF extends UF { @@ -91,7 +91,7 @@ public class QuickFindUF extends UF { 但是 find 操作开销很大,因为同一个连通分量的节点 id 值不同,id 值只是用来指向另一个节点。因此需要一直向上查找操作,直到找到最上层的节点。 -

+

```java public class QuickUnionUF extends UF { @@ -124,7 +124,7 @@ public class QuickUnionUF extends UF { 这种方法可以快速进行 union 操作,但是 find 操作和树高成正比,最坏的情况下树的高度为节点的数目。 -

+

# 加权 Quick Union @@ -132,7 +132,7 @@ public class QuickUnionUF extends UF { 理论研究证明,加权 quick-union 算法构造的树深度最多不超过 logN。 -

+

```java public class WeightedQuickUnionUF extends UF { diff --git "a/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" "b/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" index 2d89334d2d..b520d1f763 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" @@ -29,7 +29,7 @@ public abstract class Sort> { 选择排序需要 \~N2/2 次比较和 \~N 次交换,它的运行时间与输入无关,这个特点使得它对一个已经排序的数组也需要这么多的比较和交换操作。 -

+

```java public class Selection> extends Sort { @@ -56,7 +56,7 @@ public class Selection> extends Sort { 在一轮循环中,如果没有发生交换,那么说明数组已经是有序的,此时可以直接退出。 -

+

```java public class Bubble> extends Sort { @@ -90,7 +90,7 @@ public class Bubble> extends Sort { - 最坏的情况下需要 \~N2/2 比较以及 \~N2/2 次交换,最坏的情况是数组是倒序的; - 最好的情况下需要 N-1 次比较和 0 次交换,最好的情况就是数组已经有序了。 -

+

```java public class Insertion> extends Sort { @@ -113,7 +113,7 @@ public class Insertion> extends Sort { 希尔排序使用插入排序对间隔 h 的序列进行排序。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。 -

+

```java public class Shell> extends Sort { @@ -147,7 +147,7 @@ public class Shell> extends Sort { 归并排序的思想是将数组分成两部分,分别进行排序,然后归并起来。 -

+

## 1. 归并方法 @@ -243,7 +243,7 @@ public class Down2UpMergeSort> extends MergeSort { - 归并排序将数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序; - 快速排序通过一个切分元素将数组分为两个子数组,左子数组小于等于切分元素,右子数组大于等于切分元素,将这两个子数组排序也就将整个数组排序了。 -

+

```java public class QuickSort> extends Sort { @@ -274,7 +274,7 @@ public class QuickSort> extends Sort { 取 a[l] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于它的元素,交换这两个元素。不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[l] 和 a[j] 交换位置。 -

+

```java private int partition(T[] nums, int l, int h) { @@ -378,7 +378,7 @@ public T select(T[] nums, int k) { 堆可以用数组来表示,这是因为堆是完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里不使用数组索引为 0 的位置,是为了更清晰地描述节点的位置关系。 -

+

```java public class Heap> { @@ -414,7 +414,7 @@ public class Heap> { 在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作,把这种操作称为上浮。 -

+

```java private void swim(int k) { @@ -427,7 +427,7 @@ private void swim(int k) { 类似地,当一个节点比子节点来得小,也需要不断地向下进行比较和交换操作,把这种操作称为下沉。一个节点如果有两个子节点,应当与两个子节点中最大那个节点进行交换。 -

+

```java private void sink(int k) { @@ -476,13 +476,13 @@ public T delMax() { 无序数组建立堆最直接的方法是从左到右遍历数组进行上浮操作。一个更高效的方法是从右至左进行下沉操作,如果一个节点的两个节点都已经是堆有序,那么进行下沉操作可以使得这个节点为根节点的堆有序。叶子节点不需要进行下沉操作,可以忽略叶子节点的元素,因此只需要遍历一半的元素即可。 -

+

#### 5.2 交换堆顶元素与最后一个元素 交换之后需要进行下沉操作维持堆的有序状态。 -

+

```java public class HeapSort> extends Sort { diff --git "a/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" "b/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" index 133ed8af42..c2b23ca57c 100644 --- "a/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" +++ "b/docs/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" @@ -245,13 +245,13 @@ public class BinarySearchOrderedST, Value> implement **二叉树** 是一个空链接,或者是一个有左右两个链接的节点,每个链接都指向一颗子二叉树。 -

+

**二叉查找树** (BST)是一颗二叉树,并且每个节点的值都大于等于其左子树中的所有节点的值而小于等于右子树的所有节点的值。 BST 有一个重要性质,就是它的中序遍历结果递增排序。 -

+

基本数据结构: @@ -325,7 +325,7 @@ private Value get(Node x, Key key) { 当插入的键不存在于树中,需要创建一个新节点,并且更新上层节点的链接指向该节点,使得该节点正确地链接到树中。 -

+

```java @Override @@ -354,11 +354,11 @@ private Node put(Node x, Key key, Value value) { 最好的情况下树是完全平衡的,每条空链接和根节点的距离都为 logN。 -

+

在最坏的情况下,树的高度为 N。 -

+

## 4. floor() @@ -436,7 +436,7 @@ private Node min(Node x) { 令指向最小节点的链接指向最小节点的右子树。 -

+

```java public void deleteMin() { @@ -457,7 +457,7 @@ public Node deleteMin(Node x) { - 如果待删除的节点只有一个子树, 那么只需要让指向待删除节点的链接指向唯一的子树即可; - 否则,让右子树的最小节点替换该节点。 -

+

```java public void delete(Key key) { @@ -520,7 +520,7 @@ private List keys(Node x, Key l, Key h) { 2-3 查找树引入了 2- 节点和 3- 节点,目的是为了让树平衡。一颗完美平衡的 2-3 查找树的所有空链接到根节点的距离应该是相同的。 -

+

## 1. 插入操作 @@ -530,11 +530,11 @@ private List keys(Node x, Key l, Key h) { - 如果插入到 2- 节点上,那么直接将新节点和原来的节点组成 3- 节点即可。 -

+

- 如果是插入到 3- 节点上,就会产生一个临时 4- 节点时,需要将 4- 节点分裂成 3 个 2- 节点,并将中间的 2- 节点移到上层节点中。如果上移操作继续产生临时 4- 节点则一直进行分裂上移,直到不存在临时 4- 节点。 -

+

## 2. 性质 @@ -546,7 +546,7 @@ private List keys(Node x, Key l, Key h) { 红黑树是 2-3 查找树,但它不需要分别定义 2- 节点和 3- 节点,而是在普通的二叉查找树之上,为节点添加颜色。指向一个节点的链接颜色如果为红色,那么这个节点和上层节点表示的是一个 3- 节点,而黑色则是普通链接。 -

+

红黑树具有以下性质: @@ -555,7 +555,7 @@ private List keys(Node x, Key l, Key h) { 画红黑树时可以将红链接画平。 -

+

```java public class RedBlackBST, Value> extends BST { @@ -575,7 +575,7 @@ public class RedBlackBST, Value> extends BST
+

```java public Node rotateLeft(Node h) { @@ -594,7 +594,7 @@ public Node rotateLeft(Node h) { 进行右旋转是为了转换两个连续的左红链接,这会在之后的插入过程中探讨。 -

+

```java public Node rotateRight(Node h) { @@ -613,7 +613,7 @@ public Node rotateRight(Node h) { 一个 4- 节点在红黑树中表现为一个节点的左右子节点都是红色的。分裂 4- 节点除了需要将子节点的颜色由红变黑之外,同时需要将父节点的颜色由黑变红,从 2-3 树的角度看就是将中间节点移到上层节点。 -

+

```java void flipColors(Node h) { @@ -631,7 +631,7 @@ void flipColors(Node h) { - 如果左子节点是红色的,而且左子节点的左子节点也是红色的,进行右旋转; - 如果左右子节点均为红色的,进行颜色转换。 -

+

```java @Override @@ -756,7 +756,7 @@ public class Transaction { 对于 N 个键,M 条链表 (N>M),如果哈希函数能够满足均匀性的条件,每条链表的大小趋向于 N/M,因此未命中的查找和插入操作所需要的比较次数为 \~N/M。 -

+

## 3. 线性探测法 @@ -765,7 +765,7 @@ public class Transaction { 使用线性探测法,数组的大小 M 应当大于键的个数 N(M>N)。 -

+

```java public class LinearProbingHashST implements UnorderedST { @@ -867,7 +867,7 @@ public void delete(Key key) { 线性探测法的成本取决于连续条目的长度,连续条目也叫聚簇。当聚簇很长时,在查找和插入时也需要进行很多次探测。例如下图中 2\~4 位置就是一个聚簇。 -

+

α = N/M,把 α 称为使用率。理论证明,当 α 小于 1/2 时探测的预计次数只在 1.5 到 2.5 之间。为了保证散列表的性能,应当调整数组的大小,使得 α 在 [1/4, 1/2] 之间。 diff --git "a/docs/notes/\347\274\223\345\255\230.md" "b/docs/notes/\347\274\223\345\255\230.md" index 347088d06f..f52d9c1aa8 100644 --- "a/docs/notes/\347\274\223\345\255\230.md" +++ "b/docs/notes/\347\274\223\345\255\230.md" @@ -211,7 +211,7 @@ CDN 主要有以下优点: - 通过部署多台服务器,从而提高系统整体的带宽性能; - 多台服务器可以看成是一种冗余机制,从而具有高可用性。 -

+

# 五、缓存问题 @@ -285,11 +285,11 @@ Distributed Hash Table(DHT) 是一种哈希分布方式,其目的是为了 将哈希空间 [0, 2n-1] 看成一个哈希环,每个服务器节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。 -

+

一致性哈希在增加或者删除节点时只会影响到哈希环中相邻的节点,例如下图中新增节点 X,只需要将它前一个节点 C 上的数据重新进行分布即可,对于节点 A、B、D 都没有影响。 -

+

## 虚拟节点 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" index c4c5b71341..ae31fdaf5e 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" @@ -22,7 +22,7 @@ 从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0\~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。 -

+

# 分页系统地址映射 @@ -32,7 +32,7 @@ 下图的页表存放着 16 个页,这 16 个页需要用 4 个比特位来进行索引定位。例如对于虚拟地址(0010 000000000100),前 4 位是存储页面号 2,读取表项内容为(110 1),页表项最后一位表示是否存在于内存中,1 表示存在。后 12 位存储偏移量。这个页对应的页框的地址为 (110 000000000100)。 -

+

# 页面置换算法 @@ -72,7 +72,7 @@ 4,7,0,7,1,0,1,2,1,2,6 ``` -

+

## 3. 最近未使用 > NRU, Not Recently Used @@ -102,7 +102,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 当页面被访问 (读或写) 时设置该页面的 R 位为 1。需要替换的时候,检查最老页面的 R 位。如果 R 位是 0,那么这个页面既老又没有被使用,可以立刻置换掉;如果是 1,就将 R 位清 0,并把该页面放到链表的尾端,修改它的装入时间使它就像刚装入的一样,然后继续从链表的头部开始搜索。 -

+

## 6. 时钟 @@ -110,7 +110,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 第二次机会算法需要在链表中移动页面,降低了效率。时钟算法使用环形链表将页面连接起来,再使用一个指针指向最老的页面。 -

+

# 分段 @@ -118,11 +118,11 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 下图为一个编译器在编译过程中建立的多个表,有 4 个表是动态增长的,如果使用分页系统的一维地址空间,动态增长的特点会导致覆盖问题的出现。 -

+

分段的做法是把每个表分成段,一个段构成一个独立的地址空间。每个段的长度可以不同,并且可以动态增长。 -

+

# 段页式 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" index 2569d201fc..e27a1f3c51 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" @@ -76,7 +76,7 @@ 如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。 -

+

Linux 的系统调用主要有以下这些: @@ -105,7 +105,7 @@ Linux 的系统调用主要有以下这些: 因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。 -

+

# 中断分类 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" index 8dc385a469..53ad4abfd5 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" @@ -20,7 +20,7 @@ # 必要条件 -

+

- 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。 - 占有和等待:已经得到了某个资源的进程可以再请求新的资源。 @@ -52,7 +52,7 @@ ## 1. 每种类型一个资源的死锁检测 -

+

上图为资源分配图,其中方框表示资源,圆圈表示进程。资源指向进程表示该资源已经分配给该进程,进程指向资源表示进程请求获取该资源。 @@ -62,7 +62,7 @@ ## 2. 每种类型多个资源的死锁检测 -

+

上图中,有三个进程四个资源,每个数据代表的含义如下: @@ -111,7 +111,7 @@ ## 1. 安全状态 -

+

图 a 的第二列 Has 表示已拥有的资源数,第三列 Max 表示总共需要的资源数,Free 表示还有可以使用的资源数。从图 a 开始出发,先让 B 拥有所需的所有资源(图 b),运行结束后释放 B,此时 Free 变为 5(图 c);接着以同样的方式运行 C 和 A,使得所有进程都能成功运行,因此可以称图 a 所示的状态时安全的。 @@ -123,13 +123,13 @@ 一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。 -

+

上图 c 为不安全状态,因此算法会拒绝之前的请求,从而避免进入图 c 中的状态。 ## 3. 多个资源的银行家算法 -

+

上图中有五个进程,四个资源。左边的图表示已经分配的资源,右边的图表示还需要分配的资源。最右边的 E、P 以及 A 分别表示:总资源、已分配资源以及可用资源,注意这三个为向量,而不是具体数值,例如 A=(1020),表示 4 个资源分别还剩下 1/0/2/0。 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" index 3a035ba9d8..9def71159b 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" @@ -16,7 +16,7 @@ - 制动手臂(Actuator arm):用于在磁道之间移动磁头; - 主轴(Spindle):使整个盘面转动。 -

+

# 磁盘调度算法 @@ -44,7 +44,7 @@ 虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。 -

+

## 3. 电梯算法 @@ -56,7 +56,7 @@ 因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了 SSTF 的饥饿问题。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" index d2b4634b08..51a2badad0 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -36,7 +36,7 @@ 下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 -

+

## 2. 线程 @@ -46,7 +46,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 -

+

## 3. 区别 @@ -68,7 +68,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H # 进程状态的切换 -

+

- 就绪状态(ready):等待被调度 - 运行状态(running) @@ -116,7 +116,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H - 因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。 - 而如果时间片过长,那么实时性就不能得到保证。 -

+

**2.2 优先级调度** @@ -134,7 +134,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H 可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。 -

+

## 3. 实时系统 @@ -308,7 +308,7 @@ end; ## 1. 哲学家进餐问题 -

+

五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。 @@ -553,7 +553,7 @@ int pipe(int fd[2]); - 只支持半双工通信(单向交替传输); - 只能在父子进程或者兄弟进程中使用。 -

+

## 2. FIFO @@ -567,7 +567,7 @@ int mkfifoat(int fd, const char *path, mode_t mode); FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户进程和服务器进程之间传递数据。 -

+

## 3. 消息队列 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" index 061f39a083..dfce4295aa 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" @@ -29,7 +29,7 @@ gcc -o hello hello.c 这个过程大致如下: -

+

- 预处理阶段:处理以 # 开头的预处理命令; - 编译阶段:翻译成汇编文件; @@ -43,7 +43,7 @@ gcc -o hello hello.c - 符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用与一个符号定义关联起来。 - 重定位:链接器通过把每个符号定义与一个内存位置关联起来,然后修改所有对这些符号的引用,使得它们指向这个内存位置。 -

+

# 目标文件 @@ -63,7 +63,7 @@ gcc -o hello hello.c - 在给定的文件系统中一个库只有一个文件,所有引用该库的可执行目标文件都共享这个文件,它不会被复制到引用它的可执行文件中; - 在内存中,一个共享库的 .text 节(已编译程序的机器代码)的一个副本可以被不同的正在运行的进程共享。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" index d81ae2ec7c..f2f3411778 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" @@ -23,13 +23,13 @@ # UDP 首部格式 -

+

首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。 # TCP 首部格式 -

+

- **序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。 @@ -47,7 +47,7 @@ # TCP 的三次握手 -

+

假设 A 为客户端,B 为服务器端。 @@ -69,7 +69,7 @@ # TCP 的四次挥手 -

+

以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。 @@ -117,7 +117,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。 -

+

# TCP 流量控制 @@ -129,7 +129,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。 -

+

TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。 @@ -140,7 +140,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 - 接收方有足够大的接收缓存,因此不会发生流量控制; - 虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。 -

+

## 1. 慢开始与拥塞避免 @@ -160,7 +160,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" index 2d9d4c6e05..5a8d348683 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" @@ -22,7 +22,7 @@ DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转 域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。 -

+

DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在两种情况下会使用 TCP 进行传输: @@ -40,11 +40,11 @@ FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件: - 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为 20,客户端的端口号随机,但是必须大于 1024,因为 0\~1023 是熟知端口号。 -

+

- 被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机。 -

+

主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙。被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙。但是被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号。 @@ -61,7 +61,7 @@ DHCP 工作过程如下: 3. 如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送 Request 报文给该 DHCP 服务器。 4. DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息。 -

+

# 远程登录协议 @@ -75,13 +75,13 @@ TELNET 可以适应许多计算机和操作系统的差异,例如不同操作 邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。 -

+

## 1. SMTP SMTP 只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。MIME 并没有改动或者取代 SMTP,而是增加邮件主体的结构,定义了非 ASCII 码的编码规则。 -

+

## 2. POP3 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" index d6e2e19e33..bdfe4f4ad3 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" @@ -22,27 +22,27 @@ 网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。 -

+

# ISP 互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。 -

+

目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。 -

+

# 主机之间的通信方式 - 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。 -

+

- 对等(P2P):不区分客户和服务器。 -

+

# 电路交换与分组交换 @@ -60,7 +60,7 @@ 总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延 -

+

## 1. 排队时延 @@ -76,7 +76,7 @@ -

+

其中 l 表示数据帧的长度,v 表示传输速率。 @@ -87,13 +87,13 @@ -

+

其中 l 表示信道长度,v 表示电磁波在信道上的传播速度。 # 计算机网络体系结构 -

+

## 1. 五层协议 @@ -123,7 +123,7 @@ TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。 -

+

## 4. 数据在各层之间的传递过程 diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" index 3d98ca9406..a748b50bc6 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" @@ -16,7 +16,7 @@ 模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" index 563ea8c3bf..69d106d5be 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" @@ -26,7 +26,7 @@ 使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。 -

+

与 IP 协议配套使用的还有三个协议: @@ -36,7 +36,7 @@ # IP 数据报格式 -

+

- **版本** : 有 4(IPv4)和 6(IPv6)两个值; @@ -56,7 +56,7 @@ - **片偏移** : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。 -

+

# IP 地址编址方式 @@ -72,7 +72,7 @@ IP 地址的编址方式经历了三个历史阶段: IP 地址 ::= {< 网络号 >, < 主机号 >} -

+

## 2. 子网划分 @@ -102,27 +102,27 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为 网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。 -

+

ARP 实现由 IP 地址得到 MAC 地址。 -

+

每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。 如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。 -

+

# 网际控制报文协议 ICMP ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。 -

+

ICMP 报文分为差错报告报文和询问报文。 -

+

## 1. Ping @@ -155,7 +155,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。 -

+

# 网络地址转换 NAT @@ -163,7 +163,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。 -

+

# 路由器的结构 @@ -171,7 +171,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。 -

+

# 路由器分组转发流程 @@ -182,7 +182,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 - 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器; - 报告转发分组出错。 -

+

# 路由选择协议 @@ -239,7 +239,7 @@ BGP 只能寻找一条比较好的路由,而不是最佳路由。 每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。 -

+

diff --git "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" index c08ef7970e..7d7d88ae37 100644 --- "a/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" +++ "b/docs/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" @@ -28,7 +28,7 @@ 将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。 -

+

## 2. 透明传输 @@ -36,7 +36,7 @@ 帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。 -

+

## 3. 差错检测 @@ -64,13 +64,13 @@ 频分复用的所有主机在相同的时间占用不同的频率带宽资源。 -

+

## 2. 时分复用 时分复用的所有主机在不同的时间占用相同的频率带宽资源。 -

+

使用频分复用和时分复用进行通信,在通信的过程中主机会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。 @@ -78,7 +78,7 @@ 是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。 -

+

## 4. 波分复用 @@ -90,7 +90,7 @@ -

+

为了讨论方便,取 m=8,设码片 为 00011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100。 @@ -100,9 +100,9 @@ -

+

-

+

其中 的反码。 @@ -110,7 +110,7 @@ 码分复用需要发送的数据量为原先的 m 倍。 -

+

# CSMA/CD 协议 @@ -125,13 +125,13 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。 当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。 -

+

# PPP 协议 互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。 -

+

PPP 的帧格式: @@ -140,7 +140,7 @@ PPP 的帧格式: - FCS 字段是使用 CRC 的检验序列 - 信息部分的长度不超过 1500 -

+

# MAC 地址 @@ -156,7 +156,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 可以按照网络拓扑结构对局域网进行分类: -

+

# 以太网 @@ -172,7 +172,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 - **数据** :长度在 46-1500 之间,如果太小则需要填充; - **FCS** :帧检验序列,使用的是 CRC 检验方法; -

+

# 交换机 @@ -182,7 +182,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。 -

+

# 虚拟局域网 @@ -192,7 +192,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。 -

+

diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" index 2d60600ca5..136b0f0eaf 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" @@ -10,7 +10,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" index 333a21be46..94b8c65dc9 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" @@ -11,17 +11,17 @@ - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" index 7bc210881f..3e4c0d5d82 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" @@ -12,7 +12,7 @@ - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" index 9ff95ceb6e..215681a8ff 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" @@ -13,7 +13,7 @@ - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" index f1bb2ad195..b07d1efe57 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" index 08b7db2088..7ad1d0134a 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" @@ -16,13 +16,13 @@ - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" index d88cac721c..190b555045 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" @@ -10,7 +10,7 @@ - Caretaker:负责保存好备忘录 - Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" index fda230b709..d89db0da65 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" index 3b33d97d4b..152e975a2f 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" @@ -10,7 +10,7 @@ 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" index e6b0af9d73..7e113588e3 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" @@ -14,7 +14,7 @@ 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" index 268f8cf715..dc49b3fd00 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" @@ -11,7 +11,7 @@ - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" index f2604abdee..ba13406bdf 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" @@ -8,13 +8,13 @@ ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" index 8ae809372d..dd3c7e795a 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" @@ -6,13 +6,13 @@ ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" index c757678279..bee164a38d 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" index 0b34c2adc8..2416e9ce72 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" @@ -10,7 +10,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" index 8f5b492d43..f3ec662754 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" @@ -11,7 +11,7 @@ - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" index 7192b7384b..e03ad311ae 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" @@ -10,7 +10,7 @@ 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" index 18b4b3de39..f87de5a15f 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" @@ -10,7 +10,7 @@ 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" index 1e15a921d7..039a359083 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" @@ -8,7 +8,7 @@ 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -16,7 +16,7 @@ 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" index 06d4513270..1b505d74ea 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" @@ -6,7 +6,7 @@ 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -14,13 +14,13 @@ 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" index 98f7974ebb..3a34d05508 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" @@ -9,7 +9,7 @@ - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" index 17b9af2bd4..810fde860d 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" @@ -10,7 +10,7 @@ - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" index 8b1ac10ea9..10b13515cc 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" @@ -8,7 +8,7 @@ - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" index 0596ace9b3..c4beb94d9a 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" @@ -10,7 +10,7 @@ - Iterator 主要定义了 hasNext() 和 next() 方法; - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -
image-20191130164425351

+
image-20191130164425351

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" index dd1ebf2d32..102ff5f02e 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" @@ -4,11 +4,11 @@ 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation diff --git "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" index 88f65599e4..2d69e88f24 100644 --- "a/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" +++ "b/docs/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" @@ -52,7 +52,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation @@ -253,7 +253,7 @@ secondName 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation @@ -336,7 +336,7 @@ public class Client { 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation @@ -400,7 +400,7 @@ public class ConcreteFactory2 extends Factory { 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation @@ -490,7 +490,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -580,7 +580,7 @@ abcdefghijklmnopqrstuvwxyz ### Class Diagram -

+

### Implementation @@ -641,7 +641,7 @@ abc - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation @@ -779,13 +779,13 @@ request2 is handle by ConcreteHandler2 - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { @@ -900,7 +900,7 @@ public class Client { - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation @@ -1025,7 +1025,7 @@ false - Iterator 主要定义了 hasNext() 和 next() 方法。 - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -

+

### Implementation @@ -1114,17 +1114,17 @@ public class Client { - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { @@ -1284,7 +1284,7 @@ doSprinkler() - Caretaker:负责保存好备忘录 - Menento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation @@ -1457,7 +1457,7 @@ public class Client { 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -1465,13 +1465,13 @@ public class Client { 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { @@ -1592,13 +1592,13 @@ StatisticsDisplay.update: 1.0 1.0 1.0 ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { @@ -1899,7 +1899,7 @@ No gumball dispensed - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 @@ -1986,13 +1986,13 @@ quack! ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { @@ -2089,7 +2089,7 @@ Tea.addCondiments - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation @@ -2294,7 +2294,7 @@ Number of items: 6 ### Class Diagram -

+

### Implementation @@ -2346,11 +2346,11 @@ public class Client { 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation @@ -2422,7 +2422,7 @@ public class Client { - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation @@ -2580,7 +2580,7 @@ public class Client { 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation @@ -2712,7 +2712,7 @@ Composite:root 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -2720,7 +2720,7 @@ Composite:root 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { @@ -2818,7 +2818,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -2877,7 +2877,7 @@ public class Client { - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation @@ -2966,7 +2966,7 @@ Java 利用缓存来加速大量小对象的访问时间。 - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/docs/notes/\351\233\206\347\276\244.md" "b/docs/notes/\351\233\206\347\276\244.md" index f10aee7fc3..e92c828c05 100644 --- "a/docs/notes/\351\233\206\347\276\244.md" +++ "b/docs/notes/\351\233\206\347\276\244.md" @@ -33,12 +33,12 @@ 下图中,一共有 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,13 +54,13 @@ 例如下图中,(1, 3, 5) 请求会被发送到服务器 1,但是 (1, 3) 很快就断开连接,此时只有 (5) 请求连接服务器 1;(2, 4, 6) 请求被发送到服务器 2,只有 (2) 的连接断开,此时 (6, 4) 请求连接服务器 2。该系统继续运行时,服务器 2 会承担过大的负载。 -

+

最少连接算法就是将请求发送给当前最少连接数的服务器上。 例如下图中,服务器 1 当前连接数最小,那么新到来的请求 6 就会被发送到服务器 1 上。 -

+

### 4. 加权最少连接(Weighted Least Connection) @@ -72,7 +72,7 @@ 和轮询算法类似,该算法比较适合服务器性能差不多的场景。 -

+

### 6. 源地址哈希法 (IP Hash) @@ -80,7 +80,7 @@ 可以保证同一 IP 的客户端的请求会转发到同一台服务器上,用来实现会话粘滞(Sticky Session) -

+

## 转发实现 @@ -95,7 +95,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 该负载均衡转发的缺点比较明显,实际场景中很少使用它。 -

+

### 2. DNS 域名解析 @@ -111,7 +111,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 大型网站基本使用了 DNS 做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。也就是说,域名解析的结果为内部的负载均衡服务器 IP 地址。 -

+

### 3. 反向代理服务器 @@ -168,7 +168,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 当服务器宕机时,将丢失该服务器上的所有 Session。 -

+

## Session Replication @@ -179,7 +179,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 占用过多内存; - 同步过程占用网络带宽以及服务器处理器时间。 -

+

## Session Server @@ -193,7 +193,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 需要去实现存取 Session 的代码。 -

+

参考: diff --git "a/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" "b/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" index f731445141..fff09bca4c 100644 --- "a/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" +++ "b/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" @@ -141,7 +141,7 @@ Percussion is playing... 用来描述继承关系,在 Java 中使用 extends 关键字。 -

+

```text @startuml @@ -162,7 +162,7 @@ Vihical <|-- Trunck 用来实现一个接口,在 Java 中使用 implements 关键字。 -

+

```text @startuml @@ -183,7 +183,7 @@ MoveBehavior <|.. Run 表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。 -

+

```text @startuml @@ -206,7 +206,7 @@ Computer o-- Screen 和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。 -

+

```text @startuml @@ -227,7 +227,7 @@ Company *-- DepartmentB 表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。 -

+

```text @startuml @@ -250,7 +250,7 @@ School "1" - "n" Student - A 类是 B 类方法当中的一个参数; - A 类向 B 类发送消息,从而影响 B 类发生变化。 -

+

```text @startuml diff --git "a/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" "b/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" index 2d4326fe97..c73402d597 100644 --- "a/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" +++ "b/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" @@ -10,13 +10,13 @@ -

+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 diff --git "a/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" "b/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" index ecc7a64651..2bd056c1bb 100644 --- "a/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" +++ "b/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" @@ -8,23 +8,23 @@ 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { diff --git "a/notes/10.3 \350\267\263\345\217\260\351\230\266.md" "b/notes/10.3 \350\267\263\345\217\260\351\230\266.md" index bd89c6fd9b..3db7579d57 100644 --- "a/notes/10.3 \350\267\263\345\217\260\351\230\266.md" +++ "b/notes/10.3 \350\267\263\345\217\260\351\230\266.md" @@ -8,21 +8,21 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { diff --git "a/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" "b/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" index 0e779d0011..760ff568bf 100644 --- "a/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" +++ "b/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" @@ -8,7 +8,7 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 diff --git "a/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" "b/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" index ca34fed587..be40966933 100644 --- "a/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" +++ "b/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" @@ -6,13 +6,13 @@ 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 diff --git "a/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" "b/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" index 217f56967e..4363131950 100644 --- "a/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" +++ "b/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" @@ -8,13 +8,13 @@ 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 diff --git "a/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" "b/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" index 1cddc018a3..207b235f44 100644 --- "a/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" +++ "b/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" @@ -12,7 +12,7 @@ -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 diff --git "a/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" "b/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" index 8cd0a5eee6..f14a83f90f 100644 --- "a/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" +++ "b/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" @@ -4,11 +4,11 @@ ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 diff --git "a/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" "b/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" index 555a075436..b7ba929a4e 100644 --- "a/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" +++ "b/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题描述 diff --git "a/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" "b/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" index f6b913234b..7bfed6141e 100644 --- "a/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" +++ "b/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" @@ -6,7 +6,7 @@ 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 diff --git "a/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" "b/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" index 209dc0e98e..3a6226f9cb 100644 --- "a/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" +++ "b/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" @@ -6,7 +6,7 @@ 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { diff --git "a/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" "b/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" index aea40f9a71..ec5658947a 100644 --- "a/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" +++ "b/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" @@ -22,7 +22,7 @@ 上面的等值没有很强的规律,但是我们可以发现 y+z 就是圆环的总长度,因此我们将上面的等式再分解:x=(N-2)(y+z)+z。这个等式左边是从起点x1 到环入口节点 y1 的长度,而右边是在圆环中走过 (N-2) 圈,再从相遇点 z1 再走过长度为 z 的长度。此时我们可以发现如果让两个指针同时从起点 x1 和相遇点 z1 开始,每次只走过一个距离,那么最后他们会在环入口节点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { diff --git "a/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" "b/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" index b3b5b4df99..37b6e2f903 100644 --- "a/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" +++ "b/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" "b/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" index 7fd34ab3d1..e4772db926 100644 --- "a/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" +++ "b/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" "b/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" index abe1c39540..4d137e2cea 100644 --- "a/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" +++ "b/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" "b/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" index 94d658aafb..80f49f571c 100644 --- "a/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" +++ "b/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" "b/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" index 1d5435d8a8..32636dd827 100644 --- "a/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" +++ "b/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" @@ -6,7 +6,7 @@ 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" "b/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" index d249e72b5c..4d0031d651 100644 --- "a/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" +++ "b/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" @@ -24,7 +24,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java diff --git "a/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" "b/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" index 6c963b1591..4f9714e29d 100644 --- "a/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" +++ "b/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" @@ -8,7 +8,7 @@ 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 diff --git "a/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" "b/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" index 6741f31e22..bc9ca61cb6 100644 --- "a/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" +++ "b/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" @@ -8,7 +8,7 @@ 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 diff --git "a/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" "b/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" index 95629ac442..2304a2540a 100644 --- "a/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" +++ "b/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" @@ -8,7 +8,7 @@ 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 diff --git "a/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" "b/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" index 1f382d6b05..908c90c3bd 100644 --- "a/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" +++ "b/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" @@ -18,21 +18,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { diff --git "a/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" index 5ab2372adb..b68fba1417 100644 --- "a/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ "b/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" @@ -6,7 +6,7 @@ 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" "b/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" index ff28bd87f9..9f567a5b3d 100644 --- "a/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" +++ "b/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" @@ -28,7 +28,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { diff --git "a/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" "b/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" index efe83db60c..452652e964 100644 --- "a/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" +++ "b/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" @@ -27,7 +27,7 @@ Output: -

+

```java public String replaceSpace(StringBuffer str) { diff --git "a/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" "b/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" index 371e83419d..b7e0cbdc75 100644 --- "a/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" +++ "b/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" "b/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" index 0aeb411e27..8c49c2dc27 100644 --- "a/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" +++ "b/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" @@ -6,7 +6,7 @@ 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 diff --git "a/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" "b/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" index d2cdf538f8..56f8797f86 100644 --- "a/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" +++ "b/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" @@ -6,7 +6,7 @@ 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" "b/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" index fb78ed03b9..d7bbb3b0d4 100644 --- "a/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" +++ "b/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" @@ -8,7 +8,7 @@ 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -39,13 +39,13 @@ node2.next = node3; node1.next = node2; ``` -

+

为了能将一个节点插入头部,我们引入了一个叫头结点的辅助节点,该节点不存储值,只是为了方便进行插入操作。不要将头结点与第一个节点混起来,第一个节点是链表中第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -72,7 +72,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { diff --git "a/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" "b/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" index d298cc9af6..aaa42b6642 100644 --- "a/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" +++ "b/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" @@ -8,7 +8,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 diff --git "a/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" "b/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" index 9fde275c1f..d71becc99e 100644 --- "a/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" +++ "b/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" @@ -8,7 +8,7 @@ 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 diff --git "a/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" "b/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" index 499319a5e5..a467388d97 100644 --- "a/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" +++ "b/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" @@ -8,7 +8,7 @@ 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 diff --git "a/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" "b/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" index 8317ca2a0d..4829a10f8c 100644 --- "a/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" +++ "b/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" @@ -8,7 +8,7 @@ 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 diff --git "a/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" index e77c9665f0..c31d43484a 100644 --- "a/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ "b/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" @@ -11,7 +11,7 @@ 在二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -35,7 +35,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" "b/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" index b557ea0ba0..ff82f2aaa7 100644 --- "a/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" +++ "b/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" @@ -10,13 +10,13 @@ -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。然后分别对左右子树递归地求解。 -

+

```java // 缓存中序遍历数组每个值对应的索引 diff --git "a/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" "b/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" index 38d2641420..92bfe9a9bf 100644 --- "a/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" +++ "b/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" @@ -35,17 +35,17 @@ void traverse(TreeNode root) { } ``` -

+

① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { diff --git "a/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" "b/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" index 7d1f24ec38..bf9fd343ad 100644 --- "a/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" +++ "b/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" @@ -12,7 +12,7 @@ in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git a/notes/Docker.md b/notes/Docker.md index 7647d26c91..3df19303c2 100644 --- a/notes/Docker.md +++ b/notes/Docker.md @@ -14,13 +14,13 @@ Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。 -

+

# 二、与虚拟机的比较 虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。 -

+

## 启动速度 @@ -74,7 +74,7 @@ Docker 轻量级的特点使得它很适合用于部署、维护、组合微服 构建容器时,通过在镜像的基础上添加一个可写层(writable layer),用来保存着容器运行过程中的修改。 -

+

# 参考资料 diff --git a/notes/Git.md b/notes/Git.md index c0939994cc..b449764823 100644 --- a/notes/Git.md +++ b/notes/Git.md @@ -18,7 +18,7 @@ Git 属于分布式版本控制系统,而 SVN 属于集中式。 -

+

集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 @@ -40,45 +40,45 @@ Github 就是一个中心服务器。 Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 存储所有分支信息,使用一个 HEAD 指针指向当前分支。 -

+

- git add files 把文件的修改添加到暂存区 - git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了 - git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files - git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改 -

+

可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。 - git commit -a 直接把所有文件的修改添加到暂存区然后执行提交 - git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作 -

+

# 分支实现 使用指针将每个提交连接成一条时间线,HEAD 指针指向当前分支指针。 -

+

新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支,表示新分支成为当前分支。 -

+

每次提交只会让当前分支指针向前移动,而其它分支指针不会移动。 -

+

合并分支也只需要改变指针即可。 -

+

# 冲突 当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。 -

+

Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。 @@ -100,7 +100,7 @@ Creating a new branch is quick AND simple. $ git merge --no-ff -m "merge with no-ff" dev ``` -

+

# 分支管理策略 @@ -108,7 +108,7 @@ master 分支应该是非常稳定的,只用来发布新版本; 日常开发在开发分支 dev 上进行。 -

+

# 储藏(Stashing) @@ -148,7 +148,7 @@ $ ssh-keygen -t rsa -C "youremail@example.com" # Git 命令一览 -

+

比较详细的地址:http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf diff --git a/notes/HTTP.md b/notes/HTTP.md index 8501eff542..228951a159 100644 --- a/notes/HTTP.md +++ b/notes/HTTP.md @@ -62,17 +62,17 @@ URI 包含 URL 和 URN。 -

+

## 请求和响应报文 ### 1. 请求报文 -

+

### 2. 响应报文 -

+

# 二、HTTP 方法 @@ -159,7 +159,7 @@ DELETE /file.html HTTP/1.1 CONNECT www.example.com:443 HTTP/1.1 ``` -

+

## TRACE @@ -302,7 +302,7 @@ CONNECT www.example.com:443 HTTP/1.1 ## 连接管理 -

+

### 1. 短连接与长连接 @@ -631,11 +631,11 @@ HTTP/1.1 使用虚拟主机技术,使得一台服务器拥有多个域名, - 用户察觉得到正向代理的存在。 -

+

- 而反向代理一般位于内部网络中,用户察觉不到。 -

+

### 2. 网关 @@ -657,7 +657,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) 通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。 -

+

## 加密 @@ -668,7 +668,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:运算速度快; - 缺点:无法安全地将密钥传输给通信方。 -

+

### 2.非对称密钥加密 @@ -681,7 +681,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:可以更安全地将公开密钥传输给通信发送方; - 缺点:运算速度慢。 -

+

### 3. HTTPS 采用的加密方式 @@ -690,7 +690,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 使用非对称密钥加密方式,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性; - 获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。(下图中的 Session Key 就是 Secret Key) -

+

## 认证 @@ -702,7 +702,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) 进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。 -

+

## 完整性保护 @@ -731,7 +731,7 @@ HTTP/1.x 实现简单是以牺牲性能为代价的: HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式的。 -

+

在通信过程中,只会有一个 TCP 连接存在,它承载了任意数量的双向数据流(Stream)。 @@ -739,13 +739,13 @@ HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式 - 消息(Message)是与逻辑请求或响应对应的完整的一系列帧。 - 帧(Frame)是最小的通信单位,来自不同数据流的帧可以交错发送,然后再根据每个帧头的数据流标识符重新组装。 -

+

## 服务端推送 HTTP/2.0 在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了。例如客户端请求 page.html 页面,服务端就把 script.js 和 style.css 等与之相关的资源一起发给客户端。 -

+

## 首部压缩 @@ -755,7 +755,7 @@ HTTP/2.0 要求客户端和服务器同时维护和更新一个包含之前见 不仅如此,HTTP/2.0 也使用 Huffman 编码对首部字段进行压缩。 -

+

# 八、HTTP/1.1 新特性 diff --git a/notes/Java IO.md b/notes/Java IO.md index 41b4ed3ec5..4af023377e 100644 --- a/notes/Java IO.md +++ b/notes/Java IO.md @@ -97,7 +97,7 @@ Java I/O 使用了装饰者模式来实现。以 InputStream 为例, - FileInputStream 是 InputStream 的子类,属于具体组件,提供了字节流的输入操作; - FilterInputStream 属于抽象装饰者,装饰者用于装饰组件,为组件提供额外的功能。例如 BufferedInputStream 为 FileInputStream 提供缓存的功能。 -

+

实例化一个具有缓存功能的字节流对象时,只需要在 FileInputStream 对象上再套一层 BufferedInputStream 对象即可。 @@ -277,7 +277,7 @@ public static void main(String[] args) throws IOException { - Socket:客户端类 - 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。 -

+

## Datagram @@ -339,23 +339,23 @@ I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重 ① 新建一个大小为 8 个字节的缓冲区,此时 position 为 0,而 limit = capacity = 8。capacity 变量不会改变,下面的讨论会忽略它。 -

+

② 从输入通道中读取 5 个字节数据写入缓冲区中,此时 position 为 5,limit 保持不变。 -

+

③ 在将缓冲区的数据写到输出通道之前,需要先调用 flip() 方法,这个方法将 limit 设置为当前 position,并将 position 设置为 0。 -

+

④ 从缓冲区中取 4 个字节到输出缓冲中,此时 position 设为 4。 -

+

⑤ 最后需要调用 clear() 方法来清空缓冲区,此时 position 和 limit 都被设置为最初位置。 -

+

## 文件 NIO 实例 @@ -413,7 +413,7 @@ NIO 实现了 IO 多路复用中的 Reactor 模型,一个线程 Thread 使用 应该注意的是,只有套接字 Channel 才能配置为非阻塞,而 FileChannel 不能,为 FileChannel 配置非阻塞也没有意义。 -

+

### 1. 创建选择器 diff --git "a/notes/Java \345\237\272\347\241\200.md" "b/notes/Java \345\237\272\347\241\200.md" index c504623430..d0d43b3b5e 100644 --- "a/notes/Java \345\237\272\347\241\200.md" +++ "b/notes/Java \345\237\272\347\241\200.md" @@ -193,7 +193,7 @@ value 数组被声明为 final,这意味着 value 数组初始化之后就不 如果一个 String 对象已经被创建过了,那么就会从 String Pool 中取得引用。只有 String 是不可变的,才可能使用 String Pool。 -

+

**3. 安全性** @@ -1356,7 +1356,7 @@ Throwable 可以用来表示任何可以作为异常抛出的类,分为两种 - **受检异常** :需要用 try...catch... 语句捕获并进行处理,并且可以从异常中恢复; - **非受检异常** :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序崩溃并且无法恢复。 -

+

- [Java 入门之异常处理](https://www.tianmaying.com/tutorial/Java-Exception) - [Java 异常的面试问题及答案 -Part 1](http://www.importnew.com/7383.html) diff --git "a/notes/Java \345\256\271\345\231\250.md" "b/notes/Java \345\256\271\345\231\250.md" index 50b21fbcc2..23537532cb 100644 --- "a/notes/Java \345\256\271\345\231\250.md" +++ "b/notes/Java \345\256\271\345\231\250.md" @@ -24,7 +24,7 @@ ## Collection -

+

### 1. Set @@ -50,7 +50,7 @@ ## Map -

+

- TreeMap:基于红黑树实现。 @@ -65,7 +65,7 @@ ## 迭代器模式 -

+

Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。 @@ -126,7 +126,7 @@ public class ArrayList extends AbstractList private static final int DEFAULT_CAPACITY = 10; ``` -

+

### 2. 扩容 @@ -430,7 +430,7 @@ transient Node first; transient Node last; ``` -

+

### 2. 与 ArrayList 的比较 @@ -452,7 +452,7 @@ transient Entry[] table; Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶取模运算结果相同的 Entry。 -

+

```java static class Entry implements Map.Entry { @@ -528,7 +528,7 @@ map.put("K3", "V3"); - 计算键值对所在的桶; - 在链表上顺序查找,时间复杂度显然和链表的长度成正比。 -

+

### 3. put 操作 @@ -864,7 +864,7 @@ final Segment[] segments; static final int DEFAULT_CONCURRENCY_LEVEL = 16; ``` -

+

### 2. size 操作 diff --git "a/notes/Java \345\271\266\345\217\221.md" "b/notes/Java \345\271\266\345\217\221.md" index ee8a6fd5b9..dc7e314dc9 100644 --- "a/notes/Java \345\271\266\345\217\221.md" +++ "b/notes/Java \345\271\266\345\217\221.md" @@ -61,7 +61,7 @@ # 一、线程状态转换 -

+

## 新建(New) @@ -736,7 +736,7 @@ java.util.concurrent(J.U.C)大大提高了并发性能,AQS 被认为是 J. 维护了一个计数器 cnt,每次调用 countDown() 方法会让计数器的值减 1,减到 0 的时候,那些因为调用 await() 方法而在等待的线程就会被唤醒。 -

+

```java public class CountdownLatchExample { @@ -785,7 +785,7 @@ public CyclicBarrier(int parties) { } ``` -

+

```java public class CyclicBarrierExample { @@ -1022,7 +1022,7 @@ public class ForkJoinPool extends AbstractExecutorService ForkJoinPool 实现了工作窃取算法来提高 CPU 的利用率。每个线程都维护了一个双端队列,用来存储需要执行的任务。工作窃取算法允许空闲的线程从其它线程的双端队列中窃取一个任务来执行。窃取的任务必须是最晚的任务,避免和队列所属线程发生竞争。例如下图中,Thread2 从 Thread1 的队列中拿出最晚的 Task1 任务,Thread1 会拿出 Task2 来执行,这样就避免发生竞争。但是如果队列中只有一个任务时还是会发生竞争。 -

+

# 九、线程不安全示例 @@ -1077,19 +1077,19 @@ Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异, 加入高速缓存带来了一个新的问题:缓存一致性。如果多个缓存共享同一块主内存区域,那么多个缓存的数据可能会不一致,需要一些协议来解决这个问题。 -

+

所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存或者寄存器中,保存了该线程使用的变量的主内存副本拷贝。 线程只能直接操作工作内存中的变量,不同线程之间的变量值传递需要通过主内存来完成。 -

+

## 内存间交互操作 Java 内存模型定义了 8 个操作来完成主内存和工作内存的交互操作。 -

+

- read:把一个变量的值从主内存传输到工作内存中 - load:在 read 之后执行,把 read 得到的值放入工作内存的变量副本中 @@ -1112,11 +1112,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 重写之前线程不安全的代码之后得到以下线程安全实现: @@ -1224,7 +1224,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 在一个线程内,在程序前面的操作先行发生于后面的操作。 -

+

### 2. 管程锁定规则 @@ -1232,7 +1232,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 一个 unlock 操作先行发生于后面对同一个锁的 lock 操作。 -

+

### 3. volatile 变量规则 @@ -1240,7 +1240,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作。 -

+

### 4. 线程启动规则 @@ -1248,7 +1248,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 Thread 对象的 start() 方法调用先行发生于此线程的每一个动作。 -

+

### 5. 线程加入规则 @@ -1256,7 +1256,7 @@ Thread 对象的 start() 方法调用先行发生于此线程的每一个动作 Thread 对象的结束先行发生于 join() 方法返回。 -

+

### 6. 线程中断规则 @@ -1474,7 +1474,7 @@ public class ThreadLocalExample1 { 它所对应的底层结构图为: -

+

每个 Thread 都有一个 ThreadLocal.ThreadLocalMap 对象。 @@ -1577,17 +1577,17 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 以下是 HotSpot 虚拟机对象头的内存布局,这些数据被称为 Mark Word。其中 tag bits 对应了五个状态,这些状态在右侧的 state 表格中给出。除了 marked for gc 状态,其它四个状态已经在前面介绍过了。 -

+

下图左侧是一个线程的虚拟机栈,其中有一部分称为 Lock Record 的区域,这是在轻量级锁运行过程创建的,用于存放锁对象的 Mark Word。而右侧就是一个锁对象,包含了 Mark Word 和其它信息。 -

+

轻量级锁是相对于传统的重量级锁而言,它使用 CAS 操作来避免重量级锁使用互斥量的开销。对于绝大部分的锁,在整个同步周期内都是不存在竞争的,因此也就不需要都使用互斥量进行同步,可以先采用 CAS 操作进行同步,如果 CAS 失败了再改用互斥量进行同步。 当尝试获取一个锁对象时,如果锁对象标记为 0 01,说明锁对象的锁未锁定(unlocked)状态。此时虚拟机在当前线程的虚拟机栈中创建 Lock Record,然后使用 CAS 操作将对象的 Mark Word 更新为 Lock Record 指针。如果 CAS 操作成功了,那么线程就获取了该对象上的锁,并且对象的 Mark Word 的锁标记变为 00,表示该对象处于轻量级锁状态。 -

+

如果 CAS 操作失败了,虚拟机首先会检查对象的 Mark Word 是否指向当前线程的虚拟机栈,如果是的话说明当前线程已经拥有了这个锁对象,那就可以直接进入同步块继续执行,否则说明这个锁对象已经被其他线程线程抢占了。如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁。 @@ -1599,7 +1599,7 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 当有另外一个线程去尝试获取这个锁对象时,偏向状态就宣告结束,此时撤销偏向(Revoke Bias)后恢复到未锁定状态或者轻量级锁状态。 -

+

# 十三、多线程开发良好的实践 diff --git "a/notes/Java \350\231\232\346\213\237\346\234\272.md" "b/notes/Java \350\231\232\346\213\237\346\234\272.md" index 1a6e0cff26..e2a2bff1b3 100644 --- "a/notes/Java \350\231\232\346\213\237\346\234\272.md" +++ "b/notes/Java \350\231\232\346\213\237\346\234\272.md" @@ -32,7 +32,7 @@ # 一、运行时数据区域 -

+

## 程序计数器 @@ -42,7 +42,7 @@ 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 -

+

可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小,在 JDK 1.4 中默认为 256K,而在 JDK 1.5+ 默认为 1M: @@ -61,7 +61,7 @@ java -Xss2M HackTheJava 本地方法一般是用其它语言(C、C++ 或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序,对待这些方法需要特别处理。 -

+

## 堆 @@ -146,7 +146,7 @@ Java 虚拟机使用该算法来判断对象是否可被回收,GC Roots 一般 - 方法区中类静态属性引用的对象 - 方法区中的常量引用的对象 -

+

### 3. 方法区的回收 @@ -227,7 +227,7 @@ obj = null; ### 1. 标记 - 清除 -

+

在标记阶段,程序会检查每个对象是否为活动对象,如果是活动对象,则程序会在对象头部打上标记。 @@ -242,7 +242,7 @@ obj = null; ### 2. 标记 - 整理 -

+

让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。 @@ -256,7 +256,7 @@ obj = null; ### 3. 复制 -

+

将内存划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了就将还存活的对象复制到另一块上面,然后再把使用过的内存空间进行一次清理。 @@ -277,7 +277,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ## 垃圾收集器 -

+

以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 @@ -286,7 +286,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ### 1. Serial 收集器 -

+

Serial 翻译为串行,也就是说它以串行的方式执行。 @@ -298,7 +298,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 2. ParNew 收集器 -

+

它是 Serial 收集器的多线程版本。 @@ -318,7 +318,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 4. Serial Old 收集器 -

+

是 Serial 收集器的老年代版本,也是给 Client 场景下的虚拟机使用。如果用在 Server 场景下,它有两大用途: @@ -327,7 +327,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 5. Parallel Old 收集器 -

+

是 Parallel Scavenge 收集器的老年代版本。 @@ -335,7 +335,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 6. CMS 收集器 -

+

CMS(Concurrent Mark Sweep),Mark Sweep 指的是标记 - 清除算法。 @@ -360,17 +360,17 @@ G1(Garbage-First),它是一款面向服务端应用的垃圾收集器, 堆被分为新生代和老年代,其它收集器进行收集的范围都是整个新生代或者老年代,而 G1 可以直接对新生代和老年代一起回收。 -

+

G1 把堆划分成多个大小相等的独立区域(Region),新生代和老年代不再物理隔离。 -

+

通过引入 Region 的概念,从而将原来的一整块内存空间划分成多个的小空间,使得每个小空间可以单独进行垃圾回收。这种划分方法带来了很大的灵活性,使得可预测的停顿时间模型成为可能。通过记录每个 Region 垃圾回收时间以及回收所获得的空间(这两个值是通过过去回收的经验获得),并维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的 Region。 每个 Region 都有一个 Remembered Set,用来记录该 Region 对象的引用对象所在的 Region。通过使用 Remembered Set,在做可达性分析的时候就可以避免全堆扫描。 -

+

如果不计算维护 Remembered Set 的操作,G1 收集器的运作大致可划分为以下几个步骤: @@ -458,7 +458,7 @@ G1 把堆划分成多个大小相等的独立区域(Region),新生代和 ## 类的生命周期 -

+

包括以下 7 个阶段: @@ -628,7 +628,7 @@ System.out.println(ConstClass.HELLOWORLD); 下图展示了类加载器之间的层次关系,称为双亲委派模型(Parents Delegation Model)。该模型要求除了顶层的启动类加载器外,其它的类加载器都要有自己的父类加载器。这里的父子关系一般通过组合关系(Composition)来实现,而不是继承关系(Inheritance)。 -

+

### 1. 工作过程 diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index 305174beb3..eb3ce48b4a 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -61,7 +61,7 @@ -

+

考虑到 dp[i] 只与 dp[i - 1] 和 dp[i - 2] 有关,因此可以只用两个变量来存储 dp[i - 1] 和 dp[i - 2],使得原来的 O(N) 空间复杂度优化为 O(1) 复杂度。 @@ -94,7 +94,7 @@ public int climbStairs(int n) { -

+

```java public int rob(int[] nums) { @@ -150,7 +150,7 @@ private int rob(int[] nums, int first, int last) { -

+

## 5. 母牛生产 @@ -162,7 +162,7 @@ private int rob(int[] nums, int first, int last) { -

+

# 矩阵路径 @@ -212,7 +212,7 @@ public int minPathSum(int[][] grid) { 题目描述:统计从矩阵左上角到右下角的路径总数,每次只能向右或者向下移动。 -

+

```java public int uniquePaths(int m, int n) { @@ -443,7 +443,7 @@ public int numDecodings(String s) { -

+

对于一个长度为 N 的序列,最长递增子序列并不一定会以 SN 为结尾,因此 dp[N] 不是序列的最长递增子序列的长度,需要遍历 dp 数组找出最大值才是所要的结果,max{ dp[i] | 1 <= i <= N} 即为所求。 @@ -616,7 +616,7 @@ public int wiggleMaxLength(int[] nums) { -

+

对于长度为 N 的序列 S1 和长度为 M 的序列 S2,dp[N][M] 就是序列 S1 和序列 S2 的最长公共子序列长度。 @@ -662,7 +662,7 @@ public int wiggleMaxLength(int[] nums) { -

+

```java // W 为背包总体积 @@ -691,7 +691,7 @@ public int knapsack(int W, int N, int[] weights, int[] values) { -

+

因为 dp[j-w] 表示 dp[i-1][j-w],因此不能先求 dp[i][j-w],防止将 dp[i-1][j-w] 覆盖。也就是说要先计算 dp[i][j] 再计算 dp[i][j-w],在程序实现时需要按倒序来循环求解。 @@ -1055,7 +1055,7 @@ public int combinationSum4(int[] nums, int target) { 题目描述:交易之后需要有一天的冷却时间。 -

+

```java public int maxProfit(int[] prices) { @@ -1098,7 +1098,7 @@ The total profit is ((8 - 1) - 2) + ((9 - 4) - 2) = 8. 题目描述:每交易一次,都要支付一定的费用。 -

+

```java public int maxProfit(int[] prices, int fee) { diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" "b/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" index b24ab780f6..5db6895dec 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" @@ -32,7 +32,7 @@ Output: index1=1, index2=2 数组中的元素最多遍历一次,时间复杂度为 O(N)。只使用了两个额外变量,空间复杂度为 O(1)。 -

+

```java public int[] twoSum(int[] numbers, int target) { @@ -102,7 +102,7 @@ Explanation: 1 * 1 + 2 * 2 = 5 Given s = "leetcode", return "leotcede". ``` -

+

使用双指针,一个指针从头向尾遍历,一个指针从尾到头遍历,当两个指针都遍历到元音字符时,交换这两个元音字符。 @@ -111,7 +111,7 @@ Given s = "leetcode", return "leotcede". - 时间复杂度为 O(N):只需要遍历所有元素一次 - 空间复杂度 O(1):只需要使用两个额外变量 -

+

```java private final static HashSet vowels = new HashSet<>( @@ -155,7 +155,7 @@ Explanation: You could delete the character 'c'. 使用双指针可以很容易判断一个字符串是否是回文字符串:令一个指针从左到右遍历,一个指针从右到左遍历,这两个指针同时移动一个位置,每次都判断两个指针指向的字符是否相同,如果都相同,字符串才是具有左右对称性质的回文字符串。 -

+

本题的关键是处理删除一个字符。在使用双指针遍历字符串时,如果出现两个指针指向的字符不相等的情况,我们就试着删除一个字符,再判断删除完之后的字符串是否是回文字符串。 @@ -163,7 +163,7 @@ Explanation: You could delete the character 'c'. 在试着删除字符时,我们既可以删除左指针指向的字符,也可以删除右指针指向的字符。 -

+

```java public boolean validPalindrome(String s) { diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" "b/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" index 09fdc70d43..b5155262c5 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" @@ -200,7 +200,7 @@ public String frequencySort(String s) { 有三种颜色的球,算法的目标是将这三种球按颜色顺序正确地排列。它其实是三向切分快速排序的一种变种,在三向切分快速排序中,每次切分都将数组分成三个区间:小于切分元素、等于切分元素、大于切分元素,而该算法是将数组分成三个区间:等于红色、等于白色、等于蓝色。 -

+

## 1. 按颜色进行排序 diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" "b/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" index 9f14efbd0c..6f3735d9cd 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" @@ -32,7 +32,7 @@ # BFS -

+

广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 @@ -269,7 +269,7 @@ private int getShortestPath(List[] graphic, int start, int end) { # DFS -

+

广度优先搜索一层一层遍历,每一层得到的所有新节点,要用队列存储起来以备下一层遍历的时候再遍历。 @@ -591,7 +591,7 @@ Backtracking(回溯)属于 DFS。 [Leetcode](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) / [力扣](https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/description/) -

+

```html Input:Digit string "23" @@ -1194,7 +1194,7 @@ private boolean isPalindrome(String s, int begin, int end) { [Leetcode](https://leetcode.com/problems/sudoku-solver/description/) / [力扣](https://leetcode-cn.com/problems/sudoku-solver/description/) -

+

```java private boolean[][] rowsUsed = new boolean[9][10]; @@ -1253,7 +1253,7 @@ private int cubeNum(int i, int j) { [Leetcode](https://leetcode.com/problems/n-queens/description/) / [力扣](https://leetcode-cn.com/problems/n-queens/description/) -

+

在 n\*n 的矩阵中摆放 n 个皇后,并且每个皇后不能在同一行,同一列,同一对角线上,求所有的 n 皇后的解。 @@ -1261,12 +1261,12 @@ private int cubeNum(int i, int j) { 45 度对角线标记数组的长度为 2 \* n - 1,通过下图可以明确 (r, c) 的位置所在的数组下标为 r + c。 -

+

135 度对角线标记数组的长度也是 2 \* n - 1,(r, c) 的位置所在的数组下标为 n - 1 - (r - c)。 -

+

```java private List> solutions; diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" "b/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" index e21daeeabb..7083450342 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" @@ -1045,7 +1045,7 @@ private void inOrder(TreeNode node, List nums) { # Trie -

+

Trie,又称前缀树或字典树,用于判断字符串是否存在或者是否具有某种字符串前缀。 diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" "b/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" index f75bddc980..9a9a20fd99 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" @@ -35,7 +35,7 @@ Output: 2 证明:假设在某次选择中,贪心策略选择给当前满足度最小的孩子分配第 m 个饼干,第 m 个饼干为可以满足该孩子的最小饼干。假设存在一种最优策略,可以给该孩子分配第 n 个饼干,并且 m < n。我们可以发现,经过这一轮分配,贪心策略分配后剩下的饼干一定有一个比最优策略来得大。因此在后续的分配中,贪心策略一定能满足更多的孩子。也就是说不存在比贪心策略更优的策略,即贪心策略就是最优策略。 -

+

```java public int findContentChildren(int[] grid, int[] size) { diff --git a/notes/Linux.md b/notes/Linux.md index b1ba8c58c2..924d87c493 100644 --- a/notes/Linux.md +++ b/notes/Linux.md @@ -165,7 +165,7 @@ Linux 发行版是 Linux 内核及各种应用软件的集成版本。 - 编辑模式(Insert mode):按下 "i" 等按键之后进入,可以对文本进行编辑; - 指令列模式(Bottom-line mode):按下 ":" 按键之后进入,用于保存退出等操作。 -

+

在指令列模式下,有以下命令用于离开或者保存文件。 @@ -199,25 +199,25 @@ GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操 IDE(ATA)全称 Advanced Technology Attachment,接口速度最大为 133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。 -

+

### 2. SATA SATA 全称 Serial ATA,也就是使用串口的 ATA 接口,抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能。SATA-II 的接口速度为 300MiB/s,而 SATA-III 标准可达到 600MiB/s 的传输速度。SATA 的数据线也比 ATA 的细得多,有利于机箱内的空气流通,整理线材也比较方便。 -

+

### 3. SCSI SCSI 全称是 Small Computer System Interface(小型机系统接口),SCSI 硬盘广为工作站以及个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速 15000rpm 的高转速,且传输时 CPU 占用率较低,但是单价也比相同容量的 ATA 及 SATA 硬盘更加昂贵。 -

+

### 4. SAS SAS(Serial Attached SCSI)是新一代的 SCSI 技术,和 SATA 硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s。此外也通过缩小连接线改善系统内部空间等。 -

+

## 磁盘的文件名 @@ -252,7 +252,7 @@ GPT 没有扩展分区概念,都是主分区,每个 LBA 可以分 4 个分 MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB = 8 ZB。 -

+

## 开机检测程序 @@ -260,7 +260,7 @@ MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB BIOS(Basic Input/Output System,基本输入输出系统),它是一个固件(嵌入在硬件中的软件),BIOS 程序存放在断电后内容不会丢失的只读内存中。 -

+

BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可以开机的磁盘,并读取磁盘第一个扇区的主要开机记录(MBR),由主要开机记录(MBR)执行其中的开机管理程序,这个开机管理程序会加载操作系统的核心文件。 @@ -268,7 +268,7 @@ BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可 下图中,第一扇区的主要开机记录(MBR)中的开机管理程序提供了两个选单:M1、M2,M1 指向了 Windows 操作系统,而 M2 指向其它分区的启动扇区,里面包含了另外一个开机管理程序,提供了一个指向 Linux 的选单。 -

+

安装多重引导,最好先安装 Windows 再安装 Linux。因为安装 Windows 时会覆盖掉主要开机记录(MBR),而 Linux 可以选择将开机管理程序安装在主要开机记录(MBR)或者其它分区的启动扇区,并且可以设置开机管理程序的选单。 @@ -294,17 +294,17 @@ BIOS 不可以读取 GPT 分区表,而 UEFI 可以。 - superblock:记录文件系统的整体信息,包括 inode 和 block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等; - block bitmap:记录 block 是否被使用的位图。 -

+

## 文件读取 对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中查找文件内容所在的所有 block,然后把所有 block 的内容读出来。 -

+

而对于 FAT 文件系统,它没有 inode,每个 block 中存储着下一个 block 的编号。 -

+

## 磁盘碎片 @@ -341,7 +341,7 @@ inode 具有以下特点: inode 中记录了文件内容所在的 block 编号,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block 编号。因此引入了间接、双间接、三间接引用。间接引用让 inode 记录的引用 block 块记录引用信息。 -

+

## 目录 @@ -367,7 +367,7 @@ ext3/ext4 文件系统引入了日志功能,可以利用日志来修复文件 - /usr (unix software resource):所有系统默认软件都会安装到这个目录; - /var (variable):存放系统或程序运行过程中的数据文件。 -

+

# 五、文件 @@ -534,7 +534,7 @@ cp [-adfilprsu] source destination ## 链接 -

+

```html @@ -662,7 +662,7 @@ example: find . -name "shadow*" +4、4 和 -4 的指示的时间范围如下: -

+

**② 与文件拥有者和所属群组有关的选项** @@ -1176,7 +1176,7 @@ dmtsai lines: 5 columns: 9 | T | stopped (either by a job control signal or because it is being traced)
结束,进程既可以被作业控制信号结束,也可能是正在被追踪。|
-

+

## SIGCHLD @@ -1189,7 +1189,7 @@ dmtsai lines: 5 columns: 9 在子进程退出时,它的进程描述符不会立即释放,这是为了让父进程得到子进程信息,父进程通过 wait() 和 waitpid() 来获得一个已经退出的子进程的信息。 -

+

## wait() diff --git a/notes/MySQL.md b/notes/MySQL.md index 2239d48a72..14da320107 100644 --- a/notes/MySQL.md +++ b/notes/MySQL.md @@ -42,7 +42,7 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且小于等于 keyi+1。 -

+

### 2. 操作 @@ -84,11 +84,11 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 InnoDB 的 B+Tree 索引分为主索引和辅助索引。主索引的叶子节点 data 域记录着完整的数据记录,这种索引方式被称为聚簇索引。因为无法把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。 -

+

辅助索引的叶子节点的 data 域记录着主键的值,因此在使用辅助索引进行查找时,需要先查找到主键值,然后再到主索引中进行查找。 -

+

### 2. 哈希索引 @@ -350,7 +350,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 当一个表的数据不断增多时,Sharding 是必然的选择,它可以将数据分布到集群的不同节点上,从而缓存单个数据库的压力。 -

+

## 垂直切分 @@ -358,7 +358,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 在数据库的层面使用垂直切分将按数据库中表的密集程度部署到不同的库中,例如将原来的电商数据库垂直切分成商品数据库、用户数据库等。 -

+

## Sharding 策略 @@ -392,7 +392,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 - **I/O 线程** :负责从主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log)。 - **SQL 线程** :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中重放(Replay)。 -

+

## 读写分离 @@ -406,7 +406,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 读写分离常用代理方式来实现,代理服务器接收应用层传来的读写请求,然后决定转发到哪个服务器。 -

+

# 参考资料 diff --git a/notes/Redis.md b/notes/Redis.md index a8b71352fd..38901f41b7 100644 --- a/notes/Redis.md +++ b/notes/Redis.md @@ -67,7 +67,7 @@ Redis 支持很多特性,例如将内存中的数据持久化到硬盘中, ## STRING -

+

```html > set hello world @@ -82,7 +82,7 @@ OK ## LIST -

+

```html > rpush list-key item @@ -110,7 +110,7 @@ OK ## SET -

+

```html > sadd set-key item @@ -144,7 +144,7 @@ OK ## HASH -

+

```html > hset hash-key sub-key1 value1 @@ -175,7 +175,7 @@ OK ## ZSET -

+

```html > zadd zset-key 728 member1 @@ -317,11 +317,11 @@ int dictRehash(dict *d, int n) { 跳跃表是基于多指针有序链表实现的,可以看成多个有序链表。 -

+

在查找时,从上层指针开始查找,找到对应的区间之后再到下一层去查找。下图演示了查找 22 的过程。 -

+

与红黑树等平衡树相比,跳跃表具有以下优点: @@ -472,7 +472,7 @@ Redis 服务器是一个事件驱动程序。 Redis 基于 Reactor 模式开发了自己的网络事件处理器,使用 I/O 多路复用程序来同时监听多个套接字,并将到达的事件传送给文件事件分派器,分派器会根据套接字产生的事件类型调用相应的事件处理器。 -

+

## 时间事件 @@ -525,7 +525,7 @@ def main(): 从事件处理的角度来看,服务器运行流程如下: -

+

# 十一、复制 @@ -545,7 +545,7 @@ def main(): 随着负载不断上升,主服务器可能无法很快地更新所有从服务器,或者重新连接和重新同步从服务器将导致系统超载。为了解决这个问题,可以创建一个中间层来分担主服务器的复制工作。中间层的服务器是最上层服务器的从服务器,又是最下层服务器的主服务器。 -

+

# 十二、Sentinel @@ -580,7 +580,7 @@ Sentinel(哨兵)可以监听集群中的服务器,并在主服务器进入 Redis 没有关系型数据库中的表这一概念来将同种类型的数据存放在一起,而是使用命名空间的方式来实现这一功能。键名的前面部分存储命名空间,后面部分的内容存储 ID,通常使用 : 来进行分隔。例如下面的 HASH 的键名为 article:92617,其中 article 为命名空间,ID 为 92617。 -

+

## 点赞功能 @@ -588,13 +588,13 @@ Redis 没有关系型数据库中的表这一概念来将同种类型的数据 为了节约内存,规定一篇文章发布满一周之后,就不能再对它进行投票,而文章的已投票集合也会被删除,可以为文章的已投票集合设置一个一周的过期时间就能实现这个规定。 -

+

## 对文章进行排序 为了按发布时间和点赞数进行排序,可以建立一个文章发布时间的有序集合和一个文章点赞数的有序集合。(下图中的 score 就是这里所说的点赞数;下面所示的有序集合分值并不直接是时间和点赞数,而是根据时间和点赞数间接计算出来的) -

+

# 参考资料 diff --git a/notes/Socket.md b/notes/Socket.md index 64fc63008c..5dc40ed8b9 100644 --- a/notes/Socket.md +++ b/notes/Socket.md @@ -46,7 +46,7 @@ Unix 有五种 I/O 模型: ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); ``` -

+

## 非阻塞式 I/O @@ -54,7 +54,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 由于 CPU 要处理更多的系统调用,因此这种模型的 CPU 利用率比较低。 -

+

## I/O 复用 @@ -64,7 +64,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时有几万个连接,那么就需要创建相同数量的线程。相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。 -

+

## 信号驱动 I/O @@ -72,7 +72,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 相比于非阻塞式 I/O 的轮询方式,信号驱动 I/O 的 CPU 利用率更高。 -

+

## 异步 I/O @@ -80,7 +80,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 异步 I/O 与信号驱动 I/O 的区别在于,异步 I/O 的信号是通知应用进程 I/O 完成,而信号驱动 I/O 的信号是通知应用进程可以开始 I/O。 -

+

## 五大 I/O 模型比较 @@ -91,7 +91,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 非阻塞式 I/O 、信号驱动 I/O 和异步 I/O 在第一阶段不会阻塞。 -

+

# 二、I/O 复用 diff --git "a/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" "b/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" index 09a932d7cc..475bbc560c 100644 --- "a/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" +++ "b/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" @@ -48,11 +48,11 @@ - 用 min、max 表示数量范围; - 用 first、last 表示访问空间的包含范围; -

+

- begin、end 表示访问空间的排除范围,即 end 不包含尾部。 -

+

# 四、良好的代码风格 diff --git "a/notes/\345\210\206\345\270\203\345\274\217.md" "b/notes/\345\210\206\345\270\203\345\274\217.md" index cee7f7056f..bf23703c05 100644 --- "a/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/notes/\345\210\206\345\270\203\345\274\217.md" @@ -70,7 +70,7 @@ EXPIRE 指令可以为一个键值对设置一个过期时间,从而避免了 Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节点为 /app1。 -

+

### 2. 节点类型 @@ -118,7 +118,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 协调者询问参与者事务是否执行成功,参与者发回事务执行结果。询问可以看成一种投票,需要参与者都同意才能执行。 -

+

#### 1.2 提交阶段 @@ -126,7 +126,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 需要注意的是,在准备阶段,参与者执行了事务,但是还未提交。只有在提交阶段接收到协调者发来的通知后,才进行提交或者回滚。 -

+

### 2. 存在的问题 @@ -154,14 +154,14 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 2. 之后将本地消息表中的消息转发到消息队列中,如果转发成功则将消息从本地消息表中删除,否则继续重新转发。 3. 在分布式事务操作的另一方从消息队列中读取一个消息,并执行消息中的操作。 -

+

# 三、CAP 分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition Tolerance),最多只能同时满足其中两项。 -

+

## 一致性 @@ -225,7 +225,7 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE - 接受者(Acceptor):对每个提议进行投票; - 告知者(Learner):被告知投票的结果,不参与投票过程。 -

+

## 执行过程 @@ -235,19 +235,19 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE 下图演示了两个 Proposer 和三个 Acceptor 的系统中运行该算法的初始过程,每个 Proposer 都会向所有 Acceptor 发送 Prepare 请求。 -

+

当 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n1, v1],并且之前还未接收过 Prepare 请求,那么发送一个 Prepare 响应,设置当前接收到的提议为 [n1, v1],并且保证以后不会再接受序号小于 n1 的提议。 如下图,Acceptor X 在收到 [n=2, v=8] 的 Prepare 请求时,由于之前没有接收过提议,因此就发送一个 [no previous] 的 Prepare 响应,设置当前接收到的提议为 [n=2, v=8],并且保证以后不会再接受序号小于 2 的提议。其它的 Acceptor 类似。 -

+

如果 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n2, v2],并且之前已经接收过提议 [n1, v1]。如果 n1 > n2,那么就丢弃该提议请求;否则,发送 Prepare 响应,该 Prepare 响应包含之前已经接收过的提议 [n1, v1],设置当前接收到的提议为 [n2, v2],并且保证以后不会再接受序号小于 n2 的提议。 如下图,Acceptor Z 收到 Proposer A 发来的 [n=2, v=8] 的 Prepare 请求,由于之前已经接收过 [n=4, v=5] 的提议,并且 n > 2,因此就抛弃该提议请求;Acceptor X 收到 Proposer B 发来的 [n=4, v=5] 的 Prepare 请求,因为之前接收到的提议为 [n=2, v=8],并且 2 <= 4,因此就发送 [n=2, v=8] 的 Prepare 响应,设置当前接收到的提议为 [n=4, v=5],并且保证以后不会再接受序号小于 4 的提议。Acceptor Y 类似。 -

+

### 2. Accept 阶段 @@ -257,13 +257,13 @@ Proposer A 接收到两个 Prepare 响应之后,就发送 [n=2, v=8] Accept Proposer B 过后也收到了两个 Prepare 响应,因此也开始发送 Accept 请求。需要注意的是,Accept 请求的 v 需要取它收到的最大提议编号对应的 v 值,也就是 8。因此它发送 [n=4, v=8] 的 Accept 请求。 -

+

### 3. Learn 阶段 Acceptor 接收到 Accept 请求时,如果序号大于等于该 Acceptor 承诺的最小序号,那么就发送 Learn 提议给所有的 Learner。当 Learner 发现有大多数的 Acceptor 接收了某个提议,那么该提议的提议值就被 Paxos 选择出来。 -

+

## 约束条件 @@ -291,47 +291,47 @@ Raft 也是分布式一致性协议,主要是用来竞选主节点。 - 下图展示一个分布式系统的最初阶段,此时只有 Follower 没有 Leader。Node A 等待一个随机的竞选超时时间之后,没收到 Leader 发来的心跳包,因此进入竞选阶段。 -

+

- 此时 Node A 发送投票请求给其它所有节点。 -

+

- 其它节点会对请求进行回复,如果超过一半的节点回复了,那么该 Candidate 就会变成 Leader。 -

+

- 之后 Leader 会周期性地发送心跳包给 Follower,Follower 接收到心跳包,会重新开始计时。 -

+

## 多个 Candidate 竞选 - 如果有多个 Follower 成为 Candidate,并且所获得票数相同,那么就需要重新开始投票。例如下图中 Node B 和 Node D 都获得两票,需要重新开始投票。 -

+

- 由于每个节点设置的随机竞选超时时间不同,因此下一次再次出现多个 Candidate 并获得同样票数的概率很低。 -

+

## 数据同步 - 来自客户端的修改都会被传入 Leader。注意该修改还未被提交,只是写入日志中。 -

+

- Leader 会把修改复制到所有 Follower。 -

+

- Leader 会等待大多数的 Follower 也进行了修改,然后才将修改提交。 -

+

- 此时 Leader 会通知的所有 Follower 让它们也提交修改,此时所有节点的值达成一致。 -

+

# 参考 diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" index 1b40238cb0..46931b58e9 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" @@ -26,13 +26,13 @@ -

+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 @@ -92,23 +92,23 @@ public class Solution { 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { @@ -133,21 +133,21 @@ public int RectCover(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { @@ -172,7 +172,7 @@ public int JumpFloor(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 @@ -232,13 +232,13 @@ public int JumpFloorII(int target) { 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 @@ -300,13 +300,13 @@ private int minNumber(int[] nums, int l, int h) { 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 @@ -522,7 +522,7 @@ public int NumberOf1(int n) { -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 @@ -592,11 +592,11 @@ private void printNumber(char[] number) { ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 @@ -630,7 +630,7 @@ public ListNode deleteNode(ListNode head, ListNode tobeDelete) { ## 题目描述 -

+

## 解题描述 diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" index 854388270d..aff1be3cbb 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" @@ -70,7 +70,7 @@ public boolean isNumeric(char[] str) { 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 @@ -131,7 +131,7 @@ private void swap(int[] nums, int i, int j) { 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { @@ -165,7 +165,7 @@ public ListNode FindKthToTail(ListNode head, int k) { 在相遇点,slow 要到环的入口点还需要移动 z 个节点,如果让 fast 重新从头开始移动,并且速度变为每次移动一个节点,那么它到环入口点还需要移动 x 个节点。在上面已经推导出 x=z,因此 fast 和 slow 将在环入口点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { @@ -228,7 +228,7 @@ public ListNode ReverseList(ListNode head) { ## 题目描述 -

+

## 解题思路 @@ -280,7 +280,7 @@ public ListNode Merge(ListNode list1, ListNode list2) { ## 题目描述 -

+

## 解题思路 @@ -308,7 +308,7 @@ private boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) { ## 题目描述 -

+

## 解题思路 @@ -334,7 +334,7 @@ private void swap(TreeNode root) { ## 题目描述 -

+

## 解题思路 @@ -364,7 +364,7 @@ boolean isSymmetrical(TreeNode t1, TreeNode t2) { 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" index f8853033b1..d897d973a1 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" @@ -87,7 +87,7 @@ public boolean IsPopOrder(int[] pushSequence, int[] popSequence) { 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 @@ -195,7 +195,7 @@ public ArrayList> Print(TreeNode pRoot) { 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 @@ -230,7 +230,7 @@ private boolean verify(int[] sequence, int first, int last) { 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 @@ -277,21 +277,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { @@ -333,7 +333,7 @@ public RandomListNode Clone(RandomListNode pHead) { 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" index c0d701f7dc..2bcc5e842f 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" @@ -33,7 +33,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java @@ -87,7 +87,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { @@ -132,7 +132,7 @@ Output: 从后向前遍是为了在改变 P2 所指向的内容时,不会影响到 P1 遍历原来字符串的内容。 -

+

```java public String replaceSpace(StringBuffer str) { @@ -164,7 +164,7 @@ public String replaceSpace(StringBuffer str) { 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -192,7 +192,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { - 头结点是在头插法中使用的一个额外节点,这个节点不存储值; - 第一个节点就是链表的第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -219,7 +219,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -244,13 +244,13 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。 -

+

```java // 缓存中序遍历数组每个值对应的索引 @@ -300,11 +300,11 @@ public class TreeLinkNode { ① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { @@ -337,7 +337,7 @@ public TreeLinkNode GetNext(TreeLinkNode pNode) { in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" index ed3d610d1d..ab34a6d003 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" @@ -120,7 +120,7 @@ private void merge(int[] nums, int l, int m, int h) { ## 题目描述 -

+

## 解题思路 @@ -212,7 +212,7 @@ private void inOrder(TreeNode root, int k) { 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 @@ -230,7 +230,7 @@ public int TreeDepth(TreeNode root) { 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" index 1e9f9c310f..053d412920 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" @@ -19,7 +19,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 @@ -92,7 +92,7 @@ public List> dicesSum(int n) { 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 @@ -152,7 +152,7 @@ public int LastRemaining_Solution(int n, int m) { 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 @@ -224,7 +224,7 @@ public int Add(int a, int b) { 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 @@ -289,7 +289,7 @@ public int StrToInt(String str) { 二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -309,7 +309,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 949dddc121..328090001e 100644 --- "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -80,7 +80,7 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT @@ -94,25 +94,25 @@ MySQL 默认采用自动提交模式。也就是说,如果不显式使用`STAR T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 -

+

## 读脏数据 T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 -

+

## 不可重复读 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。 -

+

## 幻影读 T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。 -

+

---- @@ -322,7 +322,7 @@ MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行(Record)的所有快照连接起来。 -

+

## 实现过程 @@ -536,7 +536,7 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图的 Course 和 Student 是一对多的关系。 -

+

## 表示出现多次的关系 @@ -544,19 +544,19 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。 -

+

## 联系的多向性 虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。 -

+

## 表示子类 用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。 -

+

# 参考资料 diff --git "a/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" "b/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" index 4df876d8cb..15384384ae 100644 --- "a/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" +++ "b/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" @@ -35,7 +35,7 @@ Ant 具有编译、测试和打包功能,其后出现的 Maven 在 Ant 的功能基础上又新增了依赖管理功能,而最新的 Gradle 又在 Maven 的功能基础上新增了对 Groovy 语言的支持。 -

+

Gradle 和 Maven 的区别是,它使用 Groovy 这种特定领域语言(DSL)来管理构建脚本,而不再使用 XML 这种标记性语言。因为项目如果庞大的话,XML 很容易就变得臃肿。 diff --git "a/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" "b/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" index c4d38ede79..9d453df9f2 100644 --- "a/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" +++ "b/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" @@ -173,7 +173,7 @@ a.+c ^\s*\/\/.*$ ``` -

+

**匹配结果** diff --git "a/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" "b/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" index 485e25bb56..7ed64fdfeb 100644 --- "a/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" +++ "b/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" @@ -19,20 +19,20 @@ 消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。 -

+

## 发布/订阅 消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。 -

+

发布与订阅模式和观察者模式有以下不同: - 观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,生产者与消费者不知道对方的存在,它们之间通过频道进行通信。 - 观察者模式是同步的,当事件触发时,主题会调用观察者的方法,然后等待方法返回;而发布与订阅模式是异步的,生产者向频道发送一个消息之后,就不需要关心消费者何时去订阅这个消息,可以立即返回。 -

+

# 二、使用场景 diff --git "a/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" "b/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" index 7969ca1f51..aad5fbdcfe 100644 --- "a/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" +++ "b/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" @@ -1,6 +1,6 @@ # 汉诺塔 -

+

有三个柱子,分别为 from、buffer、to。需要将 from 上的圆盘全部移动到 to 上,并且要保证小圆盘始终在大圆盘上。 @@ -8,15 +8,15 @@ ① 将 n-1 个圆盘从 from -> buffer -

+

② 将 1 个圆盘从 from -> to -

+

③ 将 n-1 个圆盘从 buffer -> to -

+

如果只有一个圆盘,那么只需要进行一次移动操作。 @@ -67,7 +67,7 @@ from H1 to H3 生成编码时,从根节点出发,向左遍历则添加二进制位 0,向右则添加二进制位 1,直到遍历到叶子节点,叶子节点代表的字符的编码就是这个路径编码。 -

+

```java public class Huffman { diff --git "a/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" "b/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" index e999528279..ca293d147f 100644 --- "a/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" +++ "b/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" @@ -12,7 +12,7 @@ 用于解决动态连通性问题,能动态连接两个点,并且判断两个点是否连通。 -

+

| 方法 | 描述 | | :---: | :---: | @@ -51,7 +51,7 @@ public abstract class UF { 但是 union 操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 -

+

```java public class QuickFindUF extends UF { @@ -91,7 +91,7 @@ public class QuickFindUF extends UF { 但是 find 操作开销很大,因为同一个连通分量的节点 id 值不同,id 值只是用来指向另一个节点。因此需要一直向上查找操作,直到找到最上层的节点。 -

+

```java public class QuickUnionUF extends UF { @@ -124,7 +124,7 @@ public class QuickUnionUF extends UF { 这种方法可以快速进行 union 操作,但是 find 操作和树高成正比,最坏的情况下树的高度为节点的数目。 -

+

# 加权 Quick Union @@ -132,7 +132,7 @@ public class QuickUnionUF extends UF { 理论研究证明,加权 quick-union 算法构造的树深度最多不超过 logN。 -

+

```java public class WeightedQuickUnionUF extends UF { diff --git "a/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" "b/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" index b520d1f763..2d89334d2d 100644 --- "a/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" +++ "b/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" @@ -29,7 +29,7 @@ public abstract class Sort> { 选择排序需要 \~N2/2 次比较和 \~N 次交换,它的运行时间与输入无关,这个特点使得它对一个已经排序的数组也需要这么多的比较和交换操作。 -

+

```java public class Selection> extends Sort { @@ -56,7 +56,7 @@ public class Selection> extends Sort { 在一轮循环中,如果没有发生交换,那么说明数组已经是有序的,此时可以直接退出。 -

+

```java public class Bubble> extends Sort { @@ -90,7 +90,7 @@ public class Bubble> extends Sort { - 最坏的情况下需要 \~N2/2 比较以及 \~N2/2 次交换,最坏的情况是数组是倒序的; - 最好的情况下需要 N-1 次比较和 0 次交换,最好的情况就是数组已经有序了。 -

+

```java public class Insertion> extends Sort { @@ -113,7 +113,7 @@ public class Insertion> extends Sort { 希尔排序使用插入排序对间隔 h 的序列进行排序。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。 -

+

```java public class Shell> extends Sort { @@ -147,7 +147,7 @@ public class Shell> extends Sort { 归并排序的思想是将数组分成两部分,分别进行排序,然后归并起来。 -

+

## 1. 归并方法 @@ -243,7 +243,7 @@ public class Down2UpMergeSort> extends MergeSort { - 归并排序将数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序; - 快速排序通过一个切分元素将数组分为两个子数组,左子数组小于等于切分元素,右子数组大于等于切分元素,将这两个子数组排序也就将整个数组排序了。 -

+

```java public class QuickSort> extends Sort { @@ -274,7 +274,7 @@ public class QuickSort> extends Sort { 取 a[l] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于它的元素,交换这两个元素。不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[l] 和 a[j] 交换位置。 -

+

```java private int partition(T[] nums, int l, int h) { @@ -378,7 +378,7 @@ public T select(T[] nums, int k) { 堆可以用数组来表示,这是因为堆是完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里不使用数组索引为 0 的位置,是为了更清晰地描述节点的位置关系。 -

+

```java public class Heap> { @@ -414,7 +414,7 @@ public class Heap> { 在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作,把这种操作称为上浮。 -

+

```java private void swim(int k) { @@ -427,7 +427,7 @@ private void swim(int k) { 类似地,当一个节点比子节点来得小,也需要不断地向下进行比较和交换操作,把这种操作称为下沉。一个节点如果有两个子节点,应当与两个子节点中最大那个节点进行交换。 -

+

```java private void sink(int k) { @@ -476,13 +476,13 @@ public T delMax() { 无序数组建立堆最直接的方法是从左到右遍历数组进行上浮操作。一个更高效的方法是从右至左进行下沉操作,如果一个节点的两个节点都已经是堆有序,那么进行下沉操作可以使得这个节点为根节点的堆有序。叶子节点不需要进行下沉操作,可以忽略叶子节点的元素,因此只需要遍历一半的元素即可。 -

+

#### 5.2 交换堆顶元素与最后一个元素 交换之后需要进行下沉操作维持堆的有序状态。 -

+

```java public class HeapSort> extends Sort { diff --git "a/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" "b/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" index c2b23ca57c..133ed8af42 100644 --- "a/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" +++ "b/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" @@ -245,13 +245,13 @@ public class BinarySearchOrderedST, Value> implement **二叉树** 是一个空链接,或者是一个有左右两个链接的节点,每个链接都指向一颗子二叉树。 -

+

**二叉查找树** (BST)是一颗二叉树,并且每个节点的值都大于等于其左子树中的所有节点的值而小于等于右子树的所有节点的值。 BST 有一个重要性质,就是它的中序遍历结果递增排序。 -

+

基本数据结构: @@ -325,7 +325,7 @@ private Value get(Node x, Key key) { 当插入的键不存在于树中,需要创建一个新节点,并且更新上层节点的链接指向该节点,使得该节点正确地链接到树中。 -

+

```java @Override @@ -354,11 +354,11 @@ private Node put(Node x, Key key, Value value) { 最好的情况下树是完全平衡的,每条空链接和根节点的距离都为 logN。 -

+

在最坏的情况下,树的高度为 N。 -

+

## 4. floor() @@ -436,7 +436,7 @@ private Node min(Node x) { 令指向最小节点的链接指向最小节点的右子树。 -

+

```java public void deleteMin() { @@ -457,7 +457,7 @@ public Node deleteMin(Node x) { - 如果待删除的节点只有一个子树, 那么只需要让指向待删除节点的链接指向唯一的子树即可; - 否则,让右子树的最小节点替换该节点。 -

+

```java public void delete(Key key) { @@ -520,7 +520,7 @@ private List keys(Node x, Key l, Key h) { 2-3 查找树引入了 2- 节点和 3- 节点,目的是为了让树平衡。一颗完美平衡的 2-3 查找树的所有空链接到根节点的距离应该是相同的。 -

+

## 1. 插入操作 @@ -530,11 +530,11 @@ private List keys(Node x, Key l, Key h) { - 如果插入到 2- 节点上,那么直接将新节点和原来的节点组成 3- 节点即可。 -

+

- 如果是插入到 3- 节点上,就会产生一个临时 4- 节点时,需要将 4- 节点分裂成 3 个 2- 节点,并将中间的 2- 节点移到上层节点中。如果上移操作继续产生临时 4- 节点则一直进行分裂上移,直到不存在临时 4- 节点。 -

+

## 2. 性质 @@ -546,7 +546,7 @@ private List keys(Node x, Key l, Key h) { 红黑树是 2-3 查找树,但它不需要分别定义 2- 节点和 3- 节点,而是在普通的二叉查找树之上,为节点添加颜色。指向一个节点的链接颜色如果为红色,那么这个节点和上层节点表示的是一个 3- 节点,而黑色则是普通链接。 -

+

红黑树具有以下性质: @@ -555,7 +555,7 @@ private List keys(Node x, Key l, Key h) { 画红黑树时可以将红链接画平。 -

+

```java public class RedBlackBST, Value> extends BST { @@ -575,7 +575,7 @@ public class RedBlackBST, Value> extends BST
+

```java public Node rotateLeft(Node h) { @@ -594,7 +594,7 @@ public Node rotateLeft(Node h) { 进行右旋转是为了转换两个连续的左红链接,这会在之后的插入过程中探讨。 -

+

```java public Node rotateRight(Node h) { @@ -613,7 +613,7 @@ public Node rotateRight(Node h) { 一个 4- 节点在红黑树中表现为一个节点的左右子节点都是红色的。分裂 4- 节点除了需要将子节点的颜色由红变黑之外,同时需要将父节点的颜色由黑变红,从 2-3 树的角度看就是将中间节点移到上层节点。 -

+

```java void flipColors(Node h) { @@ -631,7 +631,7 @@ void flipColors(Node h) { - 如果左子节点是红色的,而且左子节点的左子节点也是红色的,进行右旋转; - 如果左右子节点均为红色的,进行颜色转换。 -

+

```java @Override @@ -756,7 +756,7 @@ public class Transaction { 对于 N 个键,M 条链表 (N>M),如果哈希函数能够满足均匀性的条件,每条链表的大小趋向于 N/M,因此未命中的查找和插入操作所需要的比较次数为 \~N/M。 -

+

## 3. 线性探测法 @@ -765,7 +765,7 @@ public class Transaction { 使用线性探测法,数组的大小 M 应当大于键的个数 N(M>N)。 -

+

```java public class LinearProbingHashST implements UnorderedST { @@ -867,7 +867,7 @@ public void delete(Key key) { 线性探测法的成本取决于连续条目的长度,连续条目也叫聚簇。当聚簇很长时,在查找和插入时也需要进行很多次探测。例如下图中 2\~4 位置就是一个聚簇。 -

+

α = N/M,把 α 称为使用率。理论证明,当 α 小于 1/2 时探测的预计次数只在 1.5 到 2.5 之间。为了保证散列表的性能,应当调整数组的大小,使得 α 在 [1/4, 1/2] 之间。 diff --git "a/notes/\347\274\223\345\255\230.md" "b/notes/\347\274\223\345\255\230.md" index f52d9c1aa8..347088d06f 100644 --- "a/notes/\347\274\223\345\255\230.md" +++ "b/notes/\347\274\223\345\255\230.md" @@ -211,7 +211,7 @@ CDN 主要有以下优点: - 通过部署多台服务器,从而提高系统整体的带宽性能; - 多台服务器可以看成是一种冗余机制,从而具有高可用性。 -

+

# 五、缓存问题 @@ -285,11 +285,11 @@ Distributed Hash Table(DHT) 是一种哈希分布方式,其目的是为了 将哈希空间 [0, 2n-1] 看成一个哈希环,每个服务器节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。 -

+

一致性哈希在增加或者删除节点时只会影响到哈希环中相邻的节点,例如下图中新增节点 X,只需要将它前一个节点 C 上的数据重新进行分布即可,对于节点 A、B、D 都没有影响。 -

+

## 虚拟节点 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" index ae31fdaf5e..c4c5b71341 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" @@ -22,7 +22,7 @@ 从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0\~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。 -

+

# 分页系统地址映射 @@ -32,7 +32,7 @@ 下图的页表存放着 16 个页,这 16 个页需要用 4 个比特位来进行索引定位。例如对于虚拟地址(0010 000000000100),前 4 位是存储页面号 2,读取表项内容为(110 1),页表项最后一位表示是否存在于内存中,1 表示存在。后 12 位存储偏移量。这个页对应的页框的地址为 (110 000000000100)。 -

+

# 页面置换算法 @@ -72,7 +72,7 @@ 4,7,0,7,1,0,1,2,1,2,6 ``` -

+

## 3. 最近未使用 > NRU, Not Recently Used @@ -102,7 +102,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 当页面被访问 (读或写) 时设置该页面的 R 位为 1。需要替换的时候,检查最老页面的 R 位。如果 R 位是 0,那么这个页面既老又没有被使用,可以立刻置换掉;如果是 1,就将 R 位清 0,并把该页面放到链表的尾端,修改它的装入时间使它就像刚装入的一样,然后继续从链表的头部开始搜索。 -

+

## 6. 时钟 @@ -110,7 +110,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 第二次机会算法需要在链表中移动页面,降低了效率。时钟算法使用环形链表将页面连接起来,再使用一个指针指向最老的页面。 -

+

# 分段 @@ -118,11 +118,11 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 下图为一个编译器在编译过程中建立的多个表,有 4 个表是动态增长的,如果使用分页系统的一维地址空间,动态增长的特点会导致覆盖问题的出现。 -

+

分段的做法是把每个表分成段,一个段构成一个独立的地址空间。每个段的长度可以不同,并且可以动态增长。 -

+

# 段页式 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" index e27a1f3c51..2569d201fc 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" @@ -76,7 +76,7 @@ 如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。 -

+

Linux 的系统调用主要有以下这些: @@ -105,7 +105,7 @@ Linux 的系统调用主要有以下这些: 因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。 -

+

# 中断分类 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" index 53ad4abfd5..8dc385a469 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" @@ -20,7 +20,7 @@ # 必要条件 -

+

- 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。 - 占有和等待:已经得到了某个资源的进程可以再请求新的资源。 @@ -52,7 +52,7 @@ ## 1. 每种类型一个资源的死锁检测 -

+

上图为资源分配图,其中方框表示资源,圆圈表示进程。资源指向进程表示该资源已经分配给该进程,进程指向资源表示进程请求获取该资源。 @@ -62,7 +62,7 @@ ## 2. 每种类型多个资源的死锁检测 -

+

上图中,有三个进程四个资源,每个数据代表的含义如下: @@ -111,7 +111,7 @@ ## 1. 安全状态 -

+

图 a 的第二列 Has 表示已拥有的资源数,第三列 Max 表示总共需要的资源数,Free 表示还有可以使用的资源数。从图 a 开始出发,先让 B 拥有所需的所有资源(图 b),运行结束后释放 B,此时 Free 变为 5(图 c);接着以同样的方式运行 C 和 A,使得所有进程都能成功运行,因此可以称图 a 所示的状态时安全的。 @@ -123,13 +123,13 @@ 一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。 -

+

上图 c 为不安全状态,因此算法会拒绝之前的请求,从而避免进入图 c 中的状态。 ## 3. 多个资源的银行家算法 -

+

上图中有五个进程,四个资源。左边的图表示已经分配的资源,右边的图表示还需要分配的资源。最右边的 E、P 以及 A 分别表示:总资源、已分配资源以及可用资源,注意这三个为向量,而不是具体数值,例如 A=(1020),表示 4 个资源分别还剩下 1/0/2/0。 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" index 9def71159b..3a035ba9d8 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" @@ -16,7 +16,7 @@ - 制动手臂(Actuator arm):用于在磁道之间移动磁头; - 主轴(Spindle):使整个盘面转动。 -

+

# 磁盘调度算法 @@ -44,7 +44,7 @@ 虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。 -

+

## 3. 电梯算法 @@ -56,7 +56,7 @@ 因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了 SSTF 的饥饿问题。 -

+

diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" index 51a2badad0..d2b4634b08 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -36,7 +36,7 @@ 下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 -

+

## 2. 线程 @@ -46,7 +46,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 -

+

## 3. 区别 @@ -68,7 +68,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H # 进程状态的切换 -

+

- 就绪状态(ready):等待被调度 - 运行状态(running) @@ -116,7 +116,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H - 因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。 - 而如果时间片过长,那么实时性就不能得到保证。 -

+

**2.2 优先级调度** @@ -134,7 +134,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H 可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。 -

+

## 3. 实时系统 @@ -308,7 +308,7 @@ end; ## 1. 哲学家进餐问题 -

+

五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。 @@ -553,7 +553,7 @@ int pipe(int fd[2]); - 只支持半双工通信(单向交替传输); - 只能在父子进程或者兄弟进程中使用。 -

+

## 2. FIFO @@ -567,7 +567,7 @@ int mkfifoat(int fd, const char *path, mode_t mode); FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户进程和服务器进程之间传递数据。 -

+

## 3. 消息队列 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" index dfce4295aa..061f39a083 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" @@ -29,7 +29,7 @@ gcc -o hello hello.c 这个过程大致如下: -

+

- 预处理阶段:处理以 # 开头的预处理命令; - 编译阶段:翻译成汇编文件; @@ -43,7 +43,7 @@ gcc -o hello hello.c - 符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用与一个符号定义关联起来。 - 重定位:链接器通过把每个符号定义与一个内存位置关联起来,然后修改所有对这些符号的引用,使得它们指向这个内存位置。 -

+

# 目标文件 @@ -63,7 +63,7 @@ gcc -o hello hello.c - 在给定的文件系统中一个库只有一个文件,所有引用该库的可执行目标文件都共享这个文件,它不会被复制到引用它的可执行文件中; - 在内存中,一个共享库的 .text 节(已编译程序的机器代码)的一个副本可以被不同的正在运行的进程共享。 -

+

diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" index f2f3411778..d81ae2ec7c 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" @@ -23,13 +23,13 @@ # UDP 首部格式 -

+

首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。 # TCP 首部格式 -

+

- **序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。 @@ -47,7 +47,7 @@ # TCP 的三次握手 -

+

假设 A 为客户端,B 为服务器端。 @@ -69,7 +69,7 @@ # TCP 的四次挥手 -

+

以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。 @@ -117,7 +117,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。 -

+

# TCP 流量控制 @@ -129,7 +129,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。 -

+

TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。 @@ -140,7 +140,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 - 接收方有足够大的接收缓存,因此不会发生流量控制; - 虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。 -

+

## 1. 慢开始与拥塞避免 @@ -160,7 +160,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。 -

+

diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" index 5a8d348683..2d9d4c6e05 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" @@ -22,7 +22,7 @@ DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转 域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。 -

+

DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在两种情况下会使用 TCP 进行传输: @@ -40,11 +40,11 @@ FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件: - 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为 20,客户端的端口号随机,但是必须大于 1024,因为 0\~1023 是熟知端口号。 -

+

- 被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机。 -

+

主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙。被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙。但是被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号。 @@ -61,7 +61,7 @@ DHCP 工作过程如下: 3. 如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送 Request 报文给该 DHCP 服务器。 4. DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息。 -

+

# 远程登录协议 @@ -75,13 +75,13 @@ TELNET 可以适应许多计算机和操作系统的差异,例如不同操作 邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。 -

+

## 1. SMTP SMTP 只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。MIME 并没有改动或者取代 SMTP,而是增加邮件主体的结构,定义了非 ASCII 码的编码规则。 -

+

## 2. POP3 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" index bdfe4f4ad3..d6e2e19e33 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" @@ -22,27 +22,27 @@ 网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。 -

+

# ISP 互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。 -

+

目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。 -

+

# 主机之间的通信方式 - 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。 -

+

- 对等(P2P):不区分客户和服务器。 -

+

# 电路交换与分组交换 @@ -60,7 +60,7 @@ 总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延 -

+

## 1. 排队时延 @@ -76,7 +76,7 @@ -

+

其中 l 表示数据帧的长度,v 表示传输速率。 @@ -87,13 +87,13 @@ -

+

其中 l 表示信道长度,v 表示电磁波在信道上的传播速度。 # 计算机网络体系结构 -

+

## 1. 五层协议 @@ -123,7 +123,7 @@ TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。 -

+

## 4. 数据在各层之间的传递过程 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" index a748b50bc6..3d98ca9406 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" @@ -16,7 +16,7 @@ 模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。 -

+

diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" index 69d106d5be..563ea8c3bf 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" @@ -26,7 +26,7 @@ 使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。 -

+

与 IP 协议配套使用的还有三个协议: @@ -36,7 +36,7 @@ # IP 数据报格式 -

+

- **版本** : 有 4(IPv4)和 6(IPv6)两个值; @@ -56,7 +56,7 @@ - **片偏移** : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。 -

+

# IP 地址编址方式 @@ -72,7 +72,7 @@ IP 地址的编址方式经历了三个历史阶段: IP 地址 ::= {< 网络号 >, < 主机号 >} -

+

## 2. 子网划分 @@ -102,27 +102,27 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为 网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。 -

+

ARP 实现由 IP 地址得到 MAC 地址。 -

+

每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。 如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。 -

+

# 网际控制报文协议 ICMP ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。 -

+

ICMP 报文分为差错报告报文和询问报文。 -

+

## 1. Ping @@ -155,7 +155,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。 -

+

# 网络地址转换 NAT @@ -163,7 +163,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。 -

+

# 路由器的结构 @@ -171,7 +171,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。 -

+

# 路由器分组转发流程 @@ -182,7 +182,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 - 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器; - 报告转发分组出错。 -

+

# 路由选择协议 @@ -239,7 +239,7 @@ BGP 只能寻找一条比较好的路由,而不是最佳路由。 每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。 -

+

diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" index 7d7d88ae37..c08ef7970e 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" @@ -28,7 +28,7 @@ 将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。 -

+

## 2. 透明传输 @@ -36,7 +36,7 @@ 帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。 -

+

## 3. 差错检测 @@ -64,13 +64,13 @@ 频分复用的所有主机在相同的时间占用不同的频率带宽资源。 -

+

## 2. 时分复用 时分复用的所有主机在不同的时间占用相同的频率带宽资源。 -

+

使用频分复用和时分复用进行通信,在通信的过程中主机会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。 @@ -78,7 +78,7 @@ 是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。 -

+

## 4. 波分复用 @@ -90,7 +90,7 @@ -

+

为了讨论方便,取 m=8,设码片 为 00011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100。 @@ -100,9 +100,9 @@ -

+

-

+

其中 的反码。 @@ -110,7 +110,7 @@ 码分复用需要发送的数据量为原先的 m 倍。 -

+

# CSMA/CD 协议 @@ -125,13 +125,13 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。 当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。 -

+

# PPP 协议 互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。 -

+

PPP 的帧格式: @@ -140,7 +140,7 @@ PPP 的帧格式: - FCS 字段是使用 CRC 的检验序列 - 信息部分的长度不超过 1500 -

+

# MAC 地址 @@ -156,7 +156,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 可以按照网络拓扑结构对局域网进行分类: -

+

# 以太网 @@ -172,7 +172,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 - **数据** :长度在 46-1500 之间,如果太小则需要填充; - **FCS** :帧检验序列,使用的是 CRC 检验方法; -

+

# 交换机 @@ -182,7 +182,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。 -

+

# 虚拟局域网 @@ -192,7 +192,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。 -

+

diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" index 136b0f0eaf..2d60600ca5 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" @@ -10,7 +10,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" index 94b8c65dc9..333a21be46 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" @@ -11,17 +11,17 @@ - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" index 3e4c0d5d82..7bc210881f 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" @@ -12,7 +12,7 @@ - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" index 215681a8ff..9ff95ceb6e 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" @@ -13,7 +13,7 @@ - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" index b07d1efe57..f1bb2ad195 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" index 7ad1d0134a..08b7db2088 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" @@ -16,13 +16,13 @@ - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" index 190b555045..d88cac721c 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" @@ -10,7 +10,7 @@ - Caretaker:负责保存好备忘录 - Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" index d89db0da65..fda230b709 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" index 152e975a2f..3b33d97d4b 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" @@ -10,7 +10,7 @@ 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" index 7e113588e3..e6b0af9d73 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" @@ -14,7 +14,7 @@ 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" index dc49b3fd00..268f8cf715 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" @@ -11,7 +11,7 @@ - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" index ba13406bdf..f2604abdee 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" @@ -8,13 +8,13 @@ ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" index dd3c7e795a..8ae809372d 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" @@ -6,13 +6,13 @@ ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" index bee164a38d..c757678279 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" index 2416e9ce72..0b34c2adc8 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" @@ -10,7 +10,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" index f3ec662754..8f5b492d43 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" @@ -11,7 +11,7 @@ - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" index e03ad311ae..7192b7384b 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" @@ -10,7 +10,7 @@ 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" index f87de5a15f..18b4b3de39 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" @@ -10,7 +10,7 @@ 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" index 039a359083..1e15a921d7 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" @@ -8,7 +8,7 @@ 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -16,7 +16,7 @@ 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" index 1b505d74ea..06d4513270 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" @@ -6,7 +6,7 @@ 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -14,13 +14,13 @@ 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" index 3a34d05508..98f7974ebb 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" @@ -9,7 +9,7 @@ - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" index 810fde860d..17b9af2bd4 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" @@ -10,7 +10,7 @@ - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" index 10b13515cc..8b1ac10ea9 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" @@ -8,7 +8,7 @@ - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" index c4beb94d9a..0596ace9b3 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" @@ -10,7 +10,7 @@ - Iterator 主要定义了 hasNext() 和 next() 方法; - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -
image-20191130164425351

+
image-20191130164425351

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" index 102ff5f02e..dd1ebf2d32 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" @@ -4,11 +4,11 @@ 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" index 2d69e88f24..88f65599e4 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" @@ -52,7 +52,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation @@ -253,7 +253,7 @@ secondName 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation @@ -336,7 +336,7 @@ public class Client { 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation @@ -400,7 +400,7 @@ public class ConcreteFactory2 extends Factory { 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation @@ -490,7 +490,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -580,7 +580,7 @@ abcdefghijklmnopqrstuvwxyz ### Class Diagram -

+

### Implementation @@ -641,7 +641,7 @@ abc - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation @@ -779,13 +779,13 @@ request2 is handle by ConcreteHandler2 - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { @@ -900,7 +900,7 @@ public class Client { - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation @@ -1025,7 +1025,7 @@ false - Iterator 主要定义了 hasNext() 和 next() 方法。 - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -

+

### Implementation @@ -1114,17 +1114,17 @@ public class Client { - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { @@ -1284,7 +1284,7 @@ doSprinkler() - Caretaker:负责保存好备忘录 - Menento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation @@ -1457,7 +1457,7 @@ public class Client { 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -1465,13 +1465,13 @@ public class Client { 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { @@ -1592,13 +1592,13 @@ StatisticsDisplay.update: 1.0 1.0 1.0 ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { @@ -1899,7 +1899,7 @@ No gumball dispensed - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 @@ -1986,13 +1986,13 @@ quack! ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { @@ -2089,7 +2089,7 @@ Tea.addCondiments - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation @@ -2294,7 +2294,7 @@ Number of items: 6 ### Class Diagram -

+

### Implementation @@ -2346,11 +2346,11 @@ public class Client { 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation @@ -2422,7 +2422,7 @@ public class Client { - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation @@ -2580,7 +2580,7 @@ public class Client { 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation @@ -2712,7 +2712,7 @@ Composite:root 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -2720,7 +2720,7 @@ Composite:root 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { @@ -2818,7 +2818,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -2877,7 +2877,7 @@ public class Client { - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation @@ -2966,7 +2966,7 @@ Java 利用缓存来加速大量小对象的访问时间。 - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/notes/\351\233\206\347\276\244.md" "b/notes/\351\233\206\347\276\244.md" index e92c828c05..f10aee7fc3 100644 --- "a/notes/\351\233\206\347\276\244.md" +++ "b/notes/\351\233\206\347\276\244.md" @@ -33,12 +33,12 @@ 下图中,一共有 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,13 +54,13 @@ 例如下图中,(1, 3, 5) 请求会被发送到服务器 1,但是 (1, 3) 很快就断开连接,此时只有 (5) 请求连接服务器 1;(2, 4, 6) 请求被发送到服务器 2,只有 (2) 的连接断开,此时 (6, 4) 请求连接服务器 2。该系统继续运行时,服务器 2 会承担过大的负载。 -

+

最少连接算法就是将请求发送给当前最少连接数的服务器上。 例如下图中,服务器 1 当前连接数最小,那么新到来的请求 6 就会被发送到服务器 1 上。 -

+

### 4. 加权最少连接(Weighted Least Connection) @@ -72,7 +72,7 @@ 和轮询算法类似,该算法比较适合服务器性能差不多的场景。 -

+

### 6. 源地址哈希法 (IP Hash) @@ -80,7 +80,7 @@ 可以保证同一 IP 的客户端的请求会转发到同一台服务器上,用来实现会话粘滞(Sticky Session) -

+

## 转发实现 @@ -95,7 +95,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 该负载均衡转发的缺点比较明显,实际场景中很少使用它。 -

+

### 2. DNS 域名解析 @@ -111,7 +111,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 大型网站基本使用了 DNS 做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。也就是说,域名解析的结果为内部的负载均衡服务器 IP 地址。 -

+

### 3. 反向代理服务器 @@ -168,7 +168,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 当服务器宕机时,将丢失该服务器上的所有 Session。 -

+

## Session Replication @@ -179,7 +179,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 占用过多内存; - 同步过程占用网络带宽以及服务器处理器时间。 -

+

## Session Server @@ -193,7 +193,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 需要去实现存取 Session 的代码。 -

+

参考: diff --git "a/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" "b/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" index fff09bca4c..f731445141 100644 --- "a/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" +++ "b/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" @@ -141,7 +141,7 @@ Percussion is playing... 用来描述继承关系,在 Java 中使用 extends 关键字。 -

+

```text @startuml @@ -162,7 +162,7 @@ Vihical <|-- Trunck 用来实现一个接口,在 Java 中使用 implements 关键字。 -

+

```text @startuml @@ -183,7 +183,7 @@ MoveBehavior <|.. Run 表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。 -

+

```text @startuml @@ -206,7 +206,7 @@ Computer o-- Screen 和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。 -

+

```text @startuml @@ -227,7 +227,7 @@ Company *-- DepartmentB 表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。 -

+

```text @startuml @@ -250,7 +250,7 @@ School "1" - "n" Student - A 类是 B 类方法当中的一个参数; - A 类向 B 类发送消息,从而影响 B 类发生变化。 -

+

```text @startuml From 532e1f64d3ff0a9e2e33e2ebd034bad502003a2a Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 6 Dec 2019 01:07:25 +0800 Subject: [PATCH 030/214] auto commit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ff479eb199..df299e02d0 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@
- +
From 7c2454cf8e571db65f06872af27df40d83c66804 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Fri, 6 Dec 2019 10:11:23 +0800 Subject: [PATCH 031/214] auto commit --- README.md | 4 +- ...73\347\273\237\345\216\237\347\220\206.md" | 12 ++-- ...43\345\245\221\346\225\260\345\210\227.md" | 4 +- ...51\345\275\242\350\246\206\347\233\226.md" | 8 +-- ...3 \350\267\263\345\217\260\351\230\266.md" | 8 +-- ...01\350\267\263\345\217\260\351\230\266.md" | 2 +- ...00\345\260\217\346\225\260\345\255\227.md" | 4 +- ...55\347\232\204\350\267\257\345\276\204.md" | 4 +- ...64\346\225\260\346\254\241\346\226\271.md" | 2 +- ...76\350\241\250\350\212\202\347\202\271.md" | 4 +- ...15\347\232\204\347\273\223\347\202\271.md" | 2 +- ...66\346\225\260\345\211\215\351\235\242.md" | 2 +- ...K \344\270\252\347\273\223\347\202\271.md" | 2 +- ...45\345\217\243\347\273\223\347\202\271.md" | 2 +- ...17\347\232\204\351\223\276\350\241\250.md" | 2 +- ...04\345\255\220\347\273\223\346\236\204.md" | 2 +- ...21\347\232\204\351\225\234\345\203\217.md" | 2 +- ...04\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\347\237\251\351\230\265.md" | 2 +- ...15\347\232\204\346\225\260\345\255\227.md" | 2 +- ...60\344\272\214\345\217\211\346\240\221.md" | 2 +- ...15\345\216\206\345\272\217\345\210\227.md" | 2 +- ...74\347\232\204\350\267\257\345\276\204.md" | 2 +- ...50\347\232\204\345\244\215\345\210\266.md" | 8 +-- ...14\345\220\221\351\223\276\350\241\250.md" | 2 +- ...55\347\232\204\346\237\245\346\211\276.md" | 2 +- ...77\346\215\242\347\251\272\346\240\274.md" | 2 +- ...54\345\205\261\347\273\223\347\202\271.md" | 2 +- ...21\347\232\204\346\267\261\345\272\246.md" | 2 +- ...41\344\272\214\345\217\211\346\240\221.md" | 2 +- ...23\345\215\260\351\223\276\350\241\250.md" | 8 +-- ...20\347\232\204\347\202\271\346\225\260.md" | 2 +- ...13\347\211\214\351\241\272\345\255\220.md" | 2 +- ...00\345\244\247\345\210\251\346\266\246.md" | 2 +- ...30\347\247\257\346\225\260\347\273\204.md" | 2 +- ...54\345\205\261\347\245\226\345\205\210.md" | 4 +- ...72\344\272\214\345\217\211\346\240\221.md" | 4 +- ...00\344\270\252\347\273\223\347\202\271.md" | 6 +- ...36\347\216\260\351\230\237\345\210\227.md" | 2 +- notes/Docker.md | 6 +- notes/Git.md | 24 +++---- notes/HTTP.md | 32 ++++----- notes/Java IO.md | 16 ++--- "notes/Java \345\237\272\347\241\200.md" | 4 +- "notes/Java \345\256\271\345\231\250.md" | 16 ++--- "notes/Java \345\271\266\345\217\221.md" | 38 +++++------ ...a \350\231\232\346\213\237\346\234\272.md" | 36 +++++----- ...50\346\200\201\350\247\204\345\210\222.md" | 22 +++--- ...- \345\217\214\346\214\207\351\222\210.md" | 10 +-- ...350\247\243 - \346\216\222\345\272\217.md" | 2 +- ...350\247\243 - \346\220\234\347\264\242.md" | 14 ++-- ...351\242\230\350\247\243 - \346\240\221.md" | 2 +- ...52\345\277\203\346\200\235\346\203\263.md" | 2 +- notes/Linux.md | 34 +++++----- notes/MySQL.md | 14 ++-- notes/Redis.md | 26 +++---- notes/Socket.md | 12 ++-- ...01\345\217\257\350\257\273\346\200\247.md" | 4 +- .../\345\210\206\345\270\203\345\274\217.md" | 42 ++++++------ ...Offer \351\242\230\350\247\243 - 10~19.md" | 38 +++++------ ...Offer \351\242\230\350\247\243 - 20~29.md" | 16 ++--- ...Offer \351\242\230\350\247\243 - 30~39.md" | 16 ++--- ...7 Offer \351\242\230\350\247\243 - 3~9.md" | 22 +++--- ...Offer \351\242\230\350\247\243 - 50~59.md" | 6 +- ...Offer \351\242\230\350\247\243 - 60~68.md" | 12 ++-- ...73\347\273\237\345\216\237\347\220\206.md" | 34 +++++----- ...04\345\273\272\345\267\245\345\205\267.md" | 2 +- ...31\350\241\250\350\276\276\345\274\217.md" | 2 +- ...10\346\201\257\351\230\237\345\210\227.md" | 6 +- ...346\263\225 - \345\205\266\345\256\203.md" | 10 +-- ...- \345\271\266\346\237\245\351\233\206.md" | 10 +-- ...346\263\225 - \346\216\222\345\272\217.md" | 24 +++---- ...- \347\254\246\345\217\267\350\241\250.md" | 38 +++++------ "notes/\347\274\223\345\255\230.md" | 6 +- ...05\345\255\230\347\256\241\347\220\206.md" | 14 ++-- ...347\273\237 - \346\246\202\350\277\260.md" | 4 +- ...347\273\237 - \346\255\273\351\224\201.md" | 12 ++-- ...76\345\244\207\347\256\241\347\220\206.md" | 6 +- ...33\347\250\213\347\256\241\347\220\206.md" | 16 ++--- ...347\273\237 - \351\223\276\346\216\245.md" | 6 +- ...- \344\274\240\350\276\223\345\261\202.md" | 16 ++--- ...- \345\272\224\347\224\250\345\261\202.md" | 12 ++-- ...347\273\234 - \346\246\202\350\277\260.md" | 20 +++--- ...- \347\211\251\347\220\206\345\261\202.md" | 2 +- ...- \347\275\221\347\273\234\345\261\202.md" | 28 ++++---- ...- \351\223\276\350\267\257\345\261\202.md" | 32 ++++----- ...45\274\217 - \345\215\225\344\276\213.md" | 2 +- ...- \344\270\255\344\273\213\350\200\205.md" | 6 +- ...345\274\217 - \344\272\253\345\205\203.md" | 2 +- ...345\274\217 - \344\273\243\347\220\206.md" | 2 +- ...37\345\236\213\346\250\241\345\274\217.md" | 2 +- ...345\274\217 - \345\221\275\344\273\244.md" | 4 +- ...- \345\244\207\345\277\230\345\275\225.md" | 2 +- ...345\274\217 - \345\244\226\350\247\202.md" | 2 +- ...45\345\216\202\346\226\271\346\263\225.md" | 2 +- ...75\350\261\241\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \346\241\245\346\216\245.md" | 2 +- ...41\346\235\277\346\226\271\346\263\225.md" | 4 +- ...345\274\217 - \347\212\266\346\200\201.md" | 4 +- ...- \347\224\237\346\210\220\345\231\250.md" | 2 +- ...- \347\251\272\345\257\271\350\261\241.md" | 2 +- ...345\274\217 - \347\255\226\347\225\245.md" | 2 +- ...00\345\215\225\345\267\245\345\216\202.md" | 2 +- ...345\274\217 - \347\273\204\345\220\210.md" | 2 +- ...345\274\217 - \350\243\205\351\245\260.md" | 4 +- ...- \350\247\202\345\257\237\350\200\205.md" | 6 +- ...- \350\247\243\351\207\212\345\231\250.md" | 2 +- ...- \350\256\277\351\227\256\350\200\205.md" | 2 +- ...- \350\264\243\344\273\273\351\223\276.md" | 2 +- ...- \350\277\255\344\273\243\345\231\250.md" | 2 +- ...- \351\200\202\351\205\215\345\231\250.md" | 4 +- ...76\350\256\241\346\250\241\345\274\217.md" | 68 +++++++++---------- "notes/\351\233\206\347\276\244.md" | 24 +++---- ...71\350\261\241\346\200\235\346\203\263.md" | 12 ++-- 114 files changed, 536 insertions(+), 532 deletions(-) diff --git a/README.md b/README.md index df299e02d0..6779a69e3f 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@
- +
@@ -85,7 +85,7 @@
diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 949dddc121..6182a30dfd 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -285,17 +285,17 @@ SELECT ... FOR UPDATE; ## 可重复读(REPEATABLE READ) -保证在同一个事务中多次读取同样数据的结果是一样的。 +保证在同一个事务中多次读取同一数据的结果是一样的。 ## 可串行化(SERIALIZABLE) -强制事务串行执行。 +强制事务串行执行,这样多个事务互不干扰,不会出现并发一致性问题。 -需要加锁实现,而其它隔离级别通常不需要。 +该隔离级别需要加锁实现,因为要使用加锁机制保证同一时间只有一个事务执行,也就是保证事务串行执行。 ---- -| 隔离级别 | 脏读 | 不可重复读 | 幻影读 | +| | 脏读 | 不可重复读 | 幻影读 | | :---: | :---: | :---:| :---: | | 未提交读 | √ | √ | √ | | 提交读 | × | √ | √ | @@ -304,10 +304,12 @@ SELECT ... FOR UPDATE; # 五、多版本并发控制 -多版本并发控制(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,无需使用 MVCC。可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。 +多版本并发控制(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,要求很低,无需使用 MVCC。可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。 ## 版本号 +在封锁一节中提到,加锁能解决多个事务同时执行时出现的并发一致性问题。但是封锁操作代价很高,而多版本并发控制采用无锁机制,而是利用“版本”来解决并发一致性问题。它的基本思想是为每个数据行维护创建 + - 系统版本号:是一个递增的数字,每开始一个新的事务,系统版本号就会自动递增。 - 事务版本号:事务开始时的系统版本号。 diff --git "a/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" "b/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" index c73402d597..2d4326fe97 100644 --- "a/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" +++ "b/notes/10.1 \346\226\220\346\263\242\351\202\243\345\245\221\346\225\260\345\210\227.md" @@ -10,13 +10,13 @@ -

+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 diff --git "a/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" "b/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" index 2bd056c1bb..ecc7a64651 100644 --- "a/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" +++ "b/notes/10.2 \347\237\251\345\275\242\350\246\206\347\233\226.md" @@ -8,23 +8,23 @@ 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { diff --git "a/notes/10.3 \350\267\263\345\217\260\351\230\266.md" "b/notes/10.3 \350\267\263\345\217\260\351\230\266.md" index 3db7579d57..bd89c6fd9b 100644 --- "a/notes/10.3 \350\267\263\345\217\260\351\230\266.md" +++ "b/notes/10.3 \350\267\263\345\217\260\351\230\266.md" @@ -8,21 +8,21 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { diff --git "a/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" "b/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" index 760ff568bf..0e779d0011 100644 --- "a/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" +++ "b/notes/10.4 \345\217\230\346\200\201\350\267\263\345\217\260\351\230\266.md" @@ -8,7 +8,7 @@ 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 diff --git "a/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" "b/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" index be40966933..ca34fed587 100644 --- "a/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" +++ "b/notes/11. \346\227\213\350\275\254\346\225\260\347\273\204\347\232\204\346\234\200\345\260\217\346\225\260\345\255\227.md" @@ -6,13 +6,13 @@ 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 diff --git "a/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" "b/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" index 4363131950..217f56967e 100644 --- "a/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" +++ "b/notes/12. \347\237\251\351\230\265\344\270\255\347\232\204\350\267\257\345\276\204.md" @@ -8,13 +8,13 @@ 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 diff --git "a/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" "b/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" index 207b235f44..1cddc018a3 100644 --- "a/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" +++ "b/notes/16. \346\225\260\345\200\274\347\232\204\346\225\264\346\225\260\346\254\241\346\226\271.md" @@ -12,7 +12,7 @@ -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 diff --git "a/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" "b/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" index f14a83f90f..8cd0a5eee6 100644 --- "a/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" +++ "b/notes/18.1 \345\234\250 O(1) \346\227\266\351\227\264\345\206\205\345\210\240\351\231\244\351\223\276\350\241\250\350\212\202\347\202\271.md" @@ -4,11 +4,11 @@ ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 diff --git "a/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" "b/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" index b7ba929a4e..555a075436 100644 --- "a/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" +++ "b/notes/18.2 \345\210\240\351\231\244\351\223\276\350\241\250\344\270\255\351\207\215\345\244\215\347\232\204\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题描述 diff --git "a/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" "b/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" index 7bfed6141e..f6b913234b 100644 --- "a/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" +++ "b/notes/21. \350\260\203\346\225\264\346\225\260\347\273\204\351\241\272\345\272\217\344\275\277\345\245\207\346\225\260\344\275\215\344\272\216\345\201\266\346\225\260\345\211\215\351\235\242.md" @@ -6,7 +6,7 @@ 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 diff --git "a/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" "b/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" index 3a6226f9cb..209dc0e98e 100644 --- "a/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" +++ "b/notes/22. \351\223\276\350\241\250\344\270\255\345\200\222\346\225\260\347\254\254 K \344\270\252\347\273\223\347\202\271.md" @@ -6,7 +6,7 @@ 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { diff --git "a/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" "b/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" index ec5658947a..aea40f9a71 100644 --- "a/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" +++ "b/notes/23. \351\223\276\350\241\250\344\270\255\347\216\257\347\232\204\345\205\245\345\217\243\347\273\223\347\202\271.md" @@ -22,7 +22,7 @@ 上面的等值没有很强的规律,但是我们可以发现 y+z 就是圆环的总长度,因此我们将上面的等式再分解:x=(N-2)(y+z)+z。这个等式左边是从起点x1 到环入口节点 y1 的长度,而右边是在圆环中走过 (N-2) 圈,再从相遇点 z1 再走过长度为 z 的长度。此时我们可以发现如果让两个指针同时从起点 x1 和相遇点 z1 开始,每次只走过一个距离,那么最后他们会在环入口节点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { diff --git "a/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" "b/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" index 37b6e2f903..b3b5b4df99 100644 --- "a/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" +++ "b/notes/25. \345\220\210\345\271\266\344\270\244\344\270\252\346\216\222\345\272\217\347\232\204\351\223\276\350\241\250.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" "b/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" index e4772db926..7fd34ab3d1 100644 --- "a/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" +++ "b/notes/26. \346\240\221\347\232\204\345\255\220\347\273\223\346\236\204.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" "b/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" index 4d137e2cea..abe1c39540 100644 --- "a/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" +++ "b/notes/27. \344\272\214\345\217\211\346\240\221\347\232\204\351\225\234\345\203\217.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" "b/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" index 80f49f571c..94d658aafb 100644 --- "a/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" +++ "b/notes/28. \345\257\271\347\247\260\347\232\204\344\272\214\345\217\211\346\240\221.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" "b/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" index 32636dd827..1d5435d8a8 100644 --- "a/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" +++ "b/notes/29. \351\241\272\346\227\266\351\222\210\346\211\223\345\215\260\347\237\251\351\230\265.md" @@ -6,7 +6,7 @@ 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" "b/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" index 4d0031d651..d249e72b5c 100644 --- "a/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" +++ "b/notes/3. \346\225\260\347\273\204\344\270\255\351\207\215\345\244\215\347\232\204\346\225\260\345\255\227.md" @@ -24,7 +24,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java diff --git "a/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" "b/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" index 4f9714e29d..6c963b1591 100644 --- "a/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" +++ "b/notes/32.1 \344\273\216\344\270\212\345\276\200\344\270\213\346\211\223\345\215\260\344\272\214\345\217\211\346\240\221.md" @@ -8,7 +8,7 @@ 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 diff --git "a/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" "b/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" index bc9ca61cb6..6741f31e22 100644 --- "a/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" +++ "b/notes/33. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\347\232\204\345\220\216\345\272\217\351\201\215\345\216\206\345\272\217\345\210\227.md" @@ -8,7 +8,7 @@ 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 diff --git "a/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" "b/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" index 2304a2540a..95629ac442 100644 --- "a/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" +++ "b/notes/34. \344\272\214\345\217\211\346\240\221\344\270\255\345\222\214\344\270\272\346\237\220\344\270\200\345\200\274\347\232\204\350\267\257\345\276\204.md" @@ -8,7 +8,7 @@ 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 diff --git "a/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" "b/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" index 908c90c3bd..1f382d6b05 100644 --- "a/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" +++ "b/notes/35. \345\244\215\346\235\202\351\223\276\350\241\250\347\232\204\345\244\215\345\210\266.md" @@ -18,21 +18,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { diff --git "a/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" "b/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" index b68fba1417..5ab2372adb 100644 --- "a/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" +++ "b/notes/36. \344\272\214\345\217\211\346\220\234\347\264\242\346\240\221\344\270\216\345\217\214\345\220\221\351\223\276\350\241\250.md" @@ -6,7 +6,7 @@ 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" "b/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" index 9f567a5b3d..ff28bd87f9 100644 --- "a/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" +++ "b/notes/4. \344\272\214\347\273\264\346\225\260\347\273\204\344\270\255\347\232\204\346\237\245\346\211\276.md" @@ -28,7 +28,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { diff --git "a/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" "b/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" index 452652e964..efe83db60c 100644 --- "a/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" +++ "b/notes/5. \346\233\277\346\215\242\347\251\272\346\240\274.md" @@ -27,7 +27,7 @@ Output: -

+

```java public String replaceSpace(StringBuffer str) { diff --git "a/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" "b/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" index b7e0cbdc75..371e83419d 100644 --- "a/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" +++ "b/notes/52. \344\270\244\344\270\252\351\223\276\350\241\250\347\232\204\347\254\254\344\270\200\344\270\252\345\205\254\345\205\261\347\273\223\347\202\271.md" @@ -4,7 +4,7 @@ ## 题目描述 -

+

## 解题思路 diff --git "a/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" "b/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" index 8c49c2dc27..0aeb411e27 100644 --- "a/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" +++ "b/notes/55.1 \344\272\214\345\217\211\346\240\221\347\232\204\346\267\261\345\272\246.md" @@ -6,7 +6,7 @@ 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 diff --git "a/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" "b/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" index 56f8797f86..d2cdf538f8 100644 --- "a/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" +++ "b/notes/55.2 \345\271\263\350\241\241\344\272\214\345\217\211\346\240\221.md" @@ -6,7 +6,7 @@ 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" "b/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" index d7bbb3b0d4..fb78ed03b9 100644 --- "a/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" +++ "b/notes/6. \344\273\216\345\260\276\345\210\260\345\244\264\346\211\223\345\215\260\351\223\276\350\241\250.md" @@ -8,7 +8,7 @@ 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -39,13 +39,13 @@ node2.next = node3; node1.next = node2; ``` -

+

为了能将一个节点插入头部,我们引入了一个叫头结点的辅助节点,该节点不存储值,只是为了方便进行插入操作。不要将头结点与第一个节点混起来,第一个节点是链表中第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -72,7 +72,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { diff --git "a/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" "b/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" index aaa42b6642..d298cc9af6 100644 --- "a/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" +++ "b/notes/60. n \344\270\252\351\252\260\345\255\220\347\232\204\347\202\271\346\225\260.md" @@ -8,7 +8,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 diff --git "a/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" "b/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" index d71becc99e..9fde275c1f 100644 --- "a/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" +++ "b/notes/61. \346\211\221\345\205\213\347\211\214\351\241\272\345\255\220.md" @@ -8,7 +8,7 @@ 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 diff --git "a/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" "b/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" index a467388d97..499319a5e5 100644 --- "a/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" +++ "b/notes/63. \350\202\241\347\245\250\347\232\204\346\234\200\345\244\247\345\210\251\346\266\246.md" @@ -8,7 +8,7 @@ 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 diff --git "a/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" "b/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" index 4829a10f8c..8317ca2a0d 100644 --- "a/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" +++ "b/notes/66. \346\236\204\345\273\272\344\271\230\347\247\257\346\225\260\347\273\204.md" @@ -8,7 +8,7 @@ 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 diff --git "a/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" "b/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" index c31d43484a..e77c9665f0 100644 --- "a/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" +++ "b/notes/68. \346\240\221\344\270\255\344\270\244\344\270\252\350\212\202\347\202\271\347\232\204\346\234\200\344\275\216\345\205\254\345\205\261\347\245\226\345\205\210.md" @@ -11,7 +11,7 @@ 在二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -35,7 +35,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" "b/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" index ff82f2aaa7..b557ea0ba0 100644 --- "a/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" +++ "b/notes/7. \351\207\215\345\273\272\344\272\214\345\217\211\346\240\221.md" @@ -10,13 +10,13 @@ -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。然后分别对左右子树递归地求解。 -

+

```java // 缓存中序遍历数组每个值对应的索引 diff --git "a/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" "b/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" index 92bfe9a9bf..38d2641420 100644 --- "a/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" +++ "b/notes/8. \344\272\214\345\217\211\346\240\221\347\232\204\344\270\213\344\270\200\344\270\252\347\273\223\347\202\271.md" @@ -35,17 +35,17 @@ void traverse(TreeNode root) { } ``` -

+

① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { diff --git "a/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" "b/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" index bf9fd343ad..7d1f24ec38 100644 --- "a/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" +++ "b/notes/9. \347\224\250\344\270\244\344\270\252\346\240\210\345\256\236\347\216\260\351\230\237\345\210\227.md" @@ -12,7 +12,7 @@ in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git a/notes/Docker.md b/notes/Docker.md index 3df19303c2..7647d26c91 100644 --- a/notes/Docker.md +++ b/notes/Docker.md @@ -14,13 +14,13 @@ Docker 主要解决环境配置问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主操作系统和其它隔离的进程。使用 Docker 可以不修改应用程序代码,不需要开发人员学习特定环境下的技术,就能够将现有的应用程序部署在其它机器上。 -

+

# 二、与虚拟机的比较 虚拟机也是一种虚拟化技术,它与 Docker 最大的区别在于它是通过模拟硬件,并在硬件上安装操作系统来实现。 -

+

## 启动速度 @@ -74,7 +74,7 @@ Docker 轻量级的特点使得它很适合用于部署、维护、组合微服 构建容器时,通过在镜像的基础上添加一个可写层(writable layer),用来保存着容器运行过程中的修改。 -

+

# 参考资料 diff --git a/notes/Git.md b/notes/Git.md index b449764823..c0939994cc 100644 --- a/notes/Git.md +++ b/notes/Git.md @@ -18,7 +18,7 @@ Git 属于分布式版本控制系统,而 SVN 属于集中式。 -

+

集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 @@ -40,45 +40,45 @@ Github 就是一个中心服务器。 Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 存储所有分支信息,使用一个 HEAD 指针指向当前分支。 -

+

- git add files 把文件的修改添加到暂存区 - git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了 - git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files - git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改 -

+

可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。 - git commit -a 直接把所有文件的修改添加到暂存区然后执行提交 - git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作 -

+

# 分支实现 使用指针将每个提交连接成一条时间线,HEAD 指针指向当前分支指针。 -

+

新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支,表示新分支成为当前分支。 -

+

每次提交只会让当前分支指针向前移动,而其它分支指针不会移动。 -

+

合并分支也只需要改变指针即可。 -

+

# 冲突 当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。 -

+

Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。 @@ -100,7 +100,7 @@ Creating a new branch is quick AND simple. $ git merge --no-ff -m "merge with no-ff" dev ``` -

+

# 分支管理策略 @@ -108,7 +108,7 @@ master 分支应该是非常稳定的,只用来发布新版本; 日常开发在开发分支 dev 上进行。 -

+

# 储藏(Stashing) @@ -148,7 +148,7 @@ $ ssh-keygen -t rsa -C "youremail@example.com" # Git 命令一览 -

+

比较详细的地址:http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf diff --git a/notes/HTTP.md b/notes/HTTP.md index 228951a159..8501eff542 100644 --- a/notes/HTTP.md +++ b/notes/HTTP.md @@ -62,17 +62,17 @@ URI 包含 URL 和 URN。 -

+

## 请求和响应报文 ### 1. 请求报文 -

+

### 2. 响应报文 -

+

# 二、HTTP 方法 @@ -159,7 +159,7 @@ DELETE /file.html HTTP/1.1 CONNECT www.example.com:443 HTTP/1.1 ``` -

+

## TRACE @@ -302,7 +302,7 @@ CONNECT www.example.com:443 HTTP/1.1 ## 连接管理 -

+

### 1. 短连接与长连接 @@ -631,11 +631,11 @@ HTTP/1.1 使用虚拟主机技术,使得一台服务器拥有多个域名, - 用户察觉得到正向代理的存在。 -

+

- 而反向代理一般位于内部网络中,用户察觉不到。 -

+

### 2. 网关 @@ -657,7 +657,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) 通过使用 SSL,HTTPS 具有了加密(防窃听)、认证(防伪装)和完整性保护(防篡改)。 -

+

## 加密 @@ -668,7 +668,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:运算速度快; - 缺点:无法安全地将密钥传输给通信方。 -

+

### 2.非对称密钥加密 @@ -681,7 +681,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 优点:可以更安全地将公开密钥传输给通信发送方; - 缺点:运算速度慢。 -

+

### 3. HTTPS 采用的加密方式 @@ -690,7 +690,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) - 使用非对称密钥加密方式,传输对称密钥加密方式所需要的 Secret Key,从而保证安全性; - 获取到 Secret Key 后,再使用对称密钥加密方式进行通信,从而保证效率。(下图中的 Session Key 就是 Secret Key) -

+

## 认证 @@ -702,7 +702,7 @@ HTTPS 并不是新协议,而是让 HTTP 先和 SSL(Secure Sockets Layer) 进行 HTTPS 通信时,服务器会把证书发送给客户端。客户端取得其中的公开密钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了。 -

+

## 完整性保护 @@ -731,7 +731,7 @@ HTTP/1.x 实现简单是以牺牲性能为代价的: HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式的。 -

+

在通信过程中,只会有一个 TCP 连接存在,它承载了任意数量的双向数据流(Stream)。 @@ -739,13 +739,13 @@ HTTP/2.0 将报文分成 HEADERS 帧和 DATA 帧,它们都是二进制格式 - 消息(Message)是与逻辑请求或响应对应的完整的一系列帧。 - 帧(Frame)是最小的通信单位,来自不同数据流的帧可以交错发送,然后再根据每个帧头的数据流标识符重新组装。 -

+

## 服务端推送 HTTP/2.0 在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了。例如客户端请求 page.html 页面,服务端就把 script.js 和 style.css 等与之相关的资源一起发给客户端。 -

+

## 首部压缩 @@ -755,7 +755,7 @@ HTTP/2.0 要求客户端和服务器同时维护和更新一个包含之前见 不仅如此,HTTP/2.0 也使用 Huffman 编码对首部字段进行压缩。 -

+

# 八、HTTP/1.1 新特性 diff --git a/notes/Java IO.md b/notes/Java IO.md index 4af023377e..41b4ed3ec5 100644 --- a/notes/Java IO.md +++ b/notes/Java IO.md @@ -97,7 +97,7 @@ Java I/O 使用了装饰者模式来实现。以 InputStream 为例, - FileInputStream 是 InputStream 的子类,属于具体组件,提供了字节流的输入操作; - FilterInputStream 属于抽象装饰者,装饰者用于装饰组件,为组件提供额外的功能。例如 BufferedInputStream 为 FileInputStream 提供缓存的功能。 -

+

实例化一个具有缓存功能的字节流对象时,只需要在 FileInputStream 对象上再套一层 BufferedInputStream 对象即可。 @@ -277,7 +277,7 @@ public static void main(String[] args) throws IOException { - Socket:客户端类 - 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。 -

+

## Datagram @@ -339,23 +339,23 @@ I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重 ① 新建一个大小为 8 个字节的缓冲区,此时 position 为 0,而 limit = capacity = 8。capacity 变量不会改变,下面的讨论会忽略它。 -

+

② 从输入通道中读取 5 个字节数据写入缓冲区中,此时 position 为 5,limit 保持不变。 -

+

③ 在将缓冲区的数据写到输出通道之前,需要先调用 flip() 方法,这个方法将 limit 设置为当前 position,并将 position 设置为 0。 -

+

④ 从缓冲区中取 4 个字节到输出缓冲中,此时 position 设为 4。 -

+

⑤ 最后需要调用 clear() 方法来清空缓冲区,此时 position 和 limit 都被设置为最初位置。 -

+

## 文件 NIO 实例 @@ -413,7 +413,7 @@ NIO 实现了 IO 多路复用中的 Reactor 模型,一个线程 Thread 使用 应该注意的是,只有套接字 Channel 才能配置为非阻塞,而 FileChannel 不能,为 FileChannel 配置非阻塞也没有意义。 -

+

### 1. 创建选择器 diff --git "a/notes/Java \345\237\272\347\241\200.md" "b/notes/Java \345\237\272\347\241\200.md" index d0d43b3b5e..c504623430 100644 --- "a/notes/Java \345\237\272\347\241\200.md" +++ "b/notes/Java \345\237\272\347\241\200.md" @@ -193,7 +193,7 @@ value 数组被声明为 final,这意味着 value 数组初始化之后就不 如果一个 String 对象已经被创建过了,那么就会从 String Pool 中取得引用。只有 String 是不可变的,才可能使用 String Pool。 -

+

**3. 安全性** @@ -1356,7 +1356,7 @@ Throwable 可以用来表示任何可以作为异常抛出的类,分为两种 - **受检异常** :需要用 try...catch... 语句捕获并进行处理,并且可以从异常中恢复; - **非受检异常** :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序崩溃并且无法恢复。 -

+

- [Java 入门之异常处理](https://www.tianmaying.com/tutorial/Java-Exception) - [Java 异常的面试问题及答案 -Part 1](http://www.importnew.com/7383.html) diff --git "a/notes/Java \345\256\271\345\231\250.md" "b/notes/Java \345\256\271\345\231\250.md" index 23537532cb..50b21fbcc2 100644 --- "a/notes/Java \345\256\271\345\231\250.md" +++ "b/notes/Java \345\256\271\345\231\250.md" @@ -24,7 +24,7 @@ ## Collection -

+

### 1. Set @@ -50,7 +50,7 @@ ## Map -

+

- TreeMap:基于红黑树实现。 @@ -65,7 +65,7 @@ ## 迭代器模式 -

+

Collection 继承了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。 @@ -126,7 +126,7 @@ public class ArrayList extends AbstractList private static final int DEFAULT_CAPACITY = 10; ``` -

+

### 2. 扩容 @@ -430,7 +430,7 @@ transient Node first; transient Node last; ``` -

+

### 2. 与 ArrayList 的比较 @@ -452,7 +452,7 @@ transient Entry[] table; Entry 存储着键值对。它包含了四个字段,从 next 字段我们可以看出 Entry 是一个链表。即数组中的每个位置被当成一个桶,一个桶存放一个链表。HashMap 使用拉链法来解决冲突,同一个链表中存放哈希值和散列桶取模运算结果相同的 Entry。 -

+

```java static class Entry implements Map.Entry { @@ -528,7 +528,7 @@ map.put("K3", "V3"); - 计算键值对所在的桶; - 在链表上顺序查找,时间复杂度显然和链表的长度成正比。 -

+

### 3. put 操作 @@ -864,7 +864,7 @@ final Segment[] segments; static final int DEFAULT_CONCURRENCY_LEVEL = 16; ``` -

+

### 2. size 操作 diff --git "a/notes/Java \345\271\266\345\217\221.md" "b/notes/Java \345\271\266\345\217\221.md" index dc7e314dc9..ee8a6fd5b9 100644 --- "a/notes/Java \345\271\266\345\217\221.md" +++ "b/notes/Java \345\271\266\345\217\221.md" @@ -61,7 +61,7 @@ # 一、线程状态转换 -

+

## 新建(New) @@ -736,7 +736,7 @@ java.util.concurrent(J.U.C)大大提高了并发性能,AQS 被认为是 J. 维护了一个计数器 cnt,每次调用 countDown() 方法会让计数器的值减 1,减到 0 的时候,那些因为调用 await() 方法而在等待的线程就会被唤醒。 -

+

```java public class CountdownLatchExample { @@ -785,7 +785,7 @@ public CyclicBarrier(int parties) { } ``` -

+

```java public class CyclicBarrierExample { @@ -1022,7 +1022,7 @@ public class ForkJoinPool extends AbstractExecutorService ForkJoinPool 实现了工作窃取算法来提高 CPU 的利用率。每个线程都维护了一个双端队列,用来存储需要执行的任务。工作窃取算法允许空闲的线程从其它线程的双端队列中窃取一个任务来执行。窃取的任务必须是最晚的任务,避免和队列所属线程发生竞争。例如下图中,Thread2 从 Thread1 的队列中拿出最晚的 Task1 任务,Thread1 会拿出 Task2 来执行,这样就避免发生竞争。但是如果队列中只有一个任务时还是会发生竞争。 -

+

# 九、线程不安全示例 @@ -1077,19 +1077,19 @@ Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异, 加入高速缓存带来了一个新的问题:缓存一致性。如果多个缓存共享同一块主内存区域,那么多个缓存的数据可能会不一致,需要一些协议来解决这个问题。 -

+

所有的变量都存储在主内存中,每个线程还有自己的工作内存,工作内存存储在高速缓存或者寄存器中,保存了该线程使用的变量的主内存副本拷贝。 线程只能直接操作工作内存中的变量,不同线程之间的变量值传递需要通过主内存来完成。 -

+

## 内存间交互操作 Java 内存模型定义了 8 个操作来完成主内存和工作内存的交互操作。 -

+

- read:把一个变量的值从主内存传输到工作内存中 - load:在 read 之后执行,把 read 得到的值放入工作内存的变量副本中 @@ -1112,11 +1112,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 重写之前线程不安全的代码之后得到以下线程安全实现: @@ -1224,7 +1224,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 在一个线程内,在程序前面的操作先行发生于后面的操作。 -

+

### 2. 管程锁定规则 @@ -1232,7 +1232,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 一个 unlock 操作先行发生于后面对同一个锁的 lock 操作。 -

+

### 3. volatile 变量规则 @@ -1240,7 +1240,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作。 -

+

### 4. 线程启动规则 @@ -1248,7 +1248,7 @@ volatile 关键字通过添加内存屏障的方式来禁止指令重排,即 Thread 对象的 start() 方法调用先行发生于此线程的每一个动作。 -

+

### 5. 线程加入规则 @@ -1256,7 +1256,7 @@ Thread 对象的 start() 方法调用先行发生于此线程的每一个动作 Thread 对象的结束先行发生于 join() 方法返回。 -

+

### 6. 线程中断规则 @@ -1474,7 +1474,7 @@ public class ThreadLocalExample1 { 它所对应的底层结构图为: -

+

每个 Thread 都有一个 ThreadLocal.ThreadLocalMap 对象。 @@ -1577,17 +1577,17 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 以下是 HotSpot 虚拟机对象头的内存布局,这些数据被称为 Mark Word。其中 tag bits 对应了五个状态,这些状态在右侧的 state 表格中给出。除了 marked for gc 状态,其它四个状态已经在前面介绍过了。 -

+

下图左侧是一个线程的虚拟机栈,其中有一部分称为 Lock Record 的区域,这是在轻量级锁运行过程创建的,用于存放锁对象的 Mark Word。而右侧就是一个锁对象,包含了 Mark Word 和其它信息。 -

+

轻量级锁是相对于传统的重量级锁而言,它使用 CAS 操作来避免重量级锁使用互斥量的开销。对于绝大部分的锁,在整个同步周期内都是不存在竞争的,因此也就不需要都使用互斥量进行同步,可以先采用 CAS 操作进行同步,如果 CAS 失败了再改用互斥量进行同步。 当尝试获取一个锁对象时,如果锁对象标记为 0 01,说明锁对象的锁未锁定(unlocked)状态。此时虚拟机在当前线程的虚拟机栈中创建 Lock Record,然后使用 CAS 操作将对象的 Mark Word 更新为 Lock Record 指针。如果 CAS 操作成功了,那么线程就获取了该对象上的锁,并且对象的 Mark Word 的锁标记变为 00,表示该对象处于轻量级锁状态。 -

+

如果 CAS 操作失败了,虚拟机首先会检查对象的 Mark Word 是否指向当前线程的虚拟机栈,如果是的话说明当前线程已经拥有了这个锁对象,那就可以直接进入同步块继续执行,否则说明这个锁对象已经被其他线程线程抢占了。如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁。 @@ -1599,7 +1599,7 @@ JDK 1.6 引入了偏向锁和轻量级锁,从而让锁拥有了四个状态: 当有另外一个线程去尝试获取这个锁对象时,偏向状态就宣告结束,此时撤销偏向(Revoke Bias)后恢复到未锁定状态或者轻量级锁状态。 -

+

# 十三、多线程开发良好的实践 diff --git "a/notes/Java \350\231\232\346\213\237\346\234\272.md" "b/notes/Java \350\231\232\346\213\237\346\234\272.md" index e2a2bff1b3..1a6e0cff26 100644 --- "a/notes/Java \350\231\232\346\213\237\346\234\272.md" +++ "b/notes/Java \350\231\232\346\213\237\346\234\272.md" @@ -32,7 +32,7 @@ # 一、运行时数据区域 -

+

## 程序计数器 @@ -42,7 +42,7 @@ 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 -

+

可以通过 -Xss 这个虚拟机参数来指定每个线程的 Java 虚拟机栈内存大小,在 JDK 1.4 中默认为 256K,而在 JDK 1.5+ 默认为 1M: @@ -61,7 +61,7 @@ java -Xss2M HackTheJava 本地方法一般是用其它语言(C、C++ 或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序,对待这些方法需要特别处理。 -

+

## 堆 @@ -146,7 +146,7 @@ Java 虚拟机使用该算法来判断对象是否可被回收,GC Roots 一般 - 方法区中类静态属性引用的对象 - 方法区中的常量引用的对象 -

+

### 3. 方法区的回收 @@ -227,7 +227,7 @@ obj = null; ### 1. 标记 - 清除 -

+

在标记阶段,程序会检查每个对象是否为活动对象,如果是活动对象,则程序会在对象头部打上标记。 @@ -242,7 +242,7 @@ obj = null; ### 2. 标记 - 整理 -

+

让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。 @@ -256,7 +256,7 @@ obj = null; ### 3. 复制 -

+

将内存划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了就将还存活的对象复制到另一块上面,然后再把使用过的内存空间进行一次清理。 @@ -277,7 +277,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ## 垃圾收集器 -

+

以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 @@ -286,7 +286,7 @@ HotSpot 虚拟机的 Eden 和 Survivor 大小比例默认为 8:1,保证了内 ### 1. Serial 收集器 -

+

Serial 翻译为串行,也就是说它以串行的方式执行。 @@ -298,7 +298,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 2. ParNew 收集器 -

+

它是 Serial 收集器的多线程版本。 @@ -318,7 +318,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 4. Serial Old 收集器 -

+

是 Serial 收集器的老年代版本,也是给 Client 场景下的虚拟机使用。如果用在 Server 场景下,它有两大用途: @@ -327,7 +327,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 5. Parallel Old 收集器 -

+

是 Parallel Scavenge 收集器的老年代版本。 @@ -335,7 +335,7 @@ Serial 翻译为串行,也就是说它以串行的方式执行。 ### 6. CMS 收集器 -

+

CMS(Concurrent Mark Sweep),Mark Sweep 指的是标记 - 清除算法。 @@ -360,17 +360,17 @@ G1(Garbage-First),它是一款面向服务端应用的垃圾收集器, 堆被分为新生代和老年代,其它收集器进行收集的范围都是整个新生代或者老年代,而 G1 可以直接对新生代和老年代一起回收。 -

+

G1 把堆划分成多个大小相等的独立区域(Region),新生代和老年代不再物理隔离。 -

+

通过引入 Region 的概念,从而将原来的一整块内存空间划分成多个的小空间,使得每个小空间可以单独进行垃圾回收。这种划分方法带来了很大的灵活性,使得可预测的停顿时间模型成为可能。通过记录每个 Region 垃圾回收时间以及回收所获得的空间(这两个值是通过过去回收的经验获得),并维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的 Region。 每个 Region 都有一个 Remembered Set,用来记录该 Region 对象的引用对象所在的 Region。通过使用 Remembered Set,在做可达性分析的时候就可以避免全堆扫描。 -

+

如果不计算维护 Remembered Set 的操作,G1 收集器的运作大致可划分为以下几个步骤: @@ -458,7 +458,7 @@ G1 把堆划分成多个大小相等的独立区域(Region),新生代和 ## 类的生命周期 -

+

包括以下 7 个阶段: @@ -628,7 +628,7 @@ System.out.println(ConstClass.HELLOWORLD); 下图展示了类加载器之间的层次关系,称为双亲委派模型(Parents Delegation Model)。该模型要求除了顶层的启动类加载器外,其它的类加载器都要有自己的父类加载器。这里的父子关系一般通过组合关系(Composition)来实现,而不是继承关系(Inheritance)。 -

+

### 1. 工作过程 diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" "b/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" index eb3ce48b4a..305174beb3 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \345\212\250\346\200\201\350\247\204\345\210\222.md" @@ -61,7 +61,7 @@ -

+

考虑到 dp[i] 只与 dp[i - 1] 和 dp[i - 2] 有关,因此可以只用两个变量来存储 dp[i - 1] 和 dp[i - 2],使得原来的 O(N) 空间复杂度优化为 O(1) 复杂度。 @@ -94,7 +94,7 @@ public int climbStairs(int n) { -

+

```java public int rob(int[] nums) { @@ -150,7 +150,7 @@ private int rob(int[] nums, int first, int last) { -

+

## 5. 母牛生产 @@ -162,7 +162,7 @@ private int rob(int[] nums, int first, int last) { -

+

# 矩阵路径 @@ -212,7 +212,7 @@ public int minPathSum(int[][] grid) { 题目描述:统计从矩阵左上角到右下角的路径总数,每次只能向右或者向下移动。 -

+

```java public int uniquePaths(int m, int n) { @@ -443,7 +443,7 @@ public int numDecodings(String s) { -

+

对于一个长度为 N 的序列,最长递增子序列并不一定会以 SN 为结尾,因此 dp[N] 不是序列的最长递增子序列的长度,需要遍历 dp 数组找出最大值才是所要的结果,max{ dp[i] | 1 <= i <= N} 即为所求。 @@ -616,7 +616,7 @@ public int wiggleMaxLength(int[] nums) { -

+

对于长度为 N 的序列 S1 和长度为 M 的序列 S2,dp[N][M] 就是序列 S1 和序列 S2 的最长公共子序列长度。 @@ -662,7 +662,7 @@ public int wiggleMaxLength(int[] nums) { -

+

```java // W 为背包总体积 @@ -691,7 +691,7 @@ public int knapsack(int W, int N, int[] weights, int[] values) { -

+

因为 dp[j-w] 表示 dp[i-1][j-w],因此不能先求 dp[i][j-w],防止将 dp[i-1][j-w] 覆盖。也就是说要先计算 dp[i][j] 再计算 dp[i][j-w],在程序实现时需要按倒序来循环求解。 @@ -1055,7 +1055,7 @@ public int combinationSum4(int[] nums, int target) { 题目描述:交易之后需要有一天的冷却时间。 -

+

```java public int maxProfit(int[] prices) { @@ -1098,7 +1098,7 @@ The total profit is ((8 - 1) - 2) + ((9 - 4) - 2) = 8. 题目描述:每交易一次,都要支付一定的费用。 -

+

```java public int maxProfit(int[] prices, int fee) { diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" "b/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" index 5db6895dec..b24ab780f6 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \345\217\214\346\214\207\351\222\210.md" @@ -32,7 +32,7 @@ Output: index1=1, index2=2 数组中的元素最多遍历一次,时间复杂度为 O(N)。只使用了两个额外变量,空间复杂度为 O(1)。 -

+

```java public int[] twoSum(int[] numbers, int target) { @@ -102,7 +102,7 @@ Explanation: 1 * 1 + 2 * 2 = 5 Given s = "leetcode", return "leotcede". ``` -

+

使用双指针,一个指针从头向尾遍历,一个指针从尾到头遍历,当两个指针都遍历到元音字符时,交换这两个元音字符。 @@ -111,7 +111,7 @@ Given s = "leetcode", return "leotcede". - 时间复杂度为 O(N):只需要遍历所有元素一次 - 空间复杂度 O(1):只需要使用两个额外变量 -

+

```java private final static HashSet vowels = new HashSet<>( @@ -155,7 +155,7 @@ Explanation: You could delete the character 'c'. 使用双指针可以很容易判断一个字符串是否是回文字符串:令一个指针从左到右遍历,一个指针从右到左遍历,这两个指针同时移动一个位置,每次都判断两个指针指向的字符是否相同,如果都相同,字符串才是具有左右对称性质的回文字符串。 -

+

本题的关键是处理删除一个字符。在使用双指针遍历字符串时,如果出现两个指针指向的字符不相等的情况,我们就试着删除一个字符,再判断删除完之后的字符串是否是回文字符串。 @@ -163,7 +163,7 @@ Explanation: You could delete the character 'c'. 在试着删除字符时,我们既可以删除左指针指向的字符,也可以删除右指针指向的字符。 -

+

```java public boolean validPalindrome(String s) { diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" "b/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" index b5155262c5..09fdc70d43 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \346\216\222\345\272\217.md" @@ -200,7 +200,7 @@ public String frequencySort(String s) { 有三种颜色的球,算法的目标是将这三种球按颜色顺序正确地排列。它其实是三向切分快速排序的一种变种,在三向切分快速排序中,每次切分都将数组分成三个区间:小于切分元素、等于切分元素、大于切分元素,而该算法是将数组分成三个区间:等于红色、等于白色、等于蓝色。 -

+

## 1. 按颜色进行排序 diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" "b/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" index 6f3735d9cd..9f14efbd0c 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \346\220\234\347\264\242.md" @@ -32,7 +32,7 @@ # BFS -

+

广度优先搜索一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点。需要注意的是,遍历过的节点不能再次被遍历。 @@ -269,7 +269,7 @@ private int getShortestPath(List[] graphic, int start, int end) { # DFS -

+

广度优先搜索一层一层遍历,每一层得到的所有新节点,要用队列存储起来以备下一层遍历的时候再遍历。 @@ -591,7 +591,7 @@ Backtracking(回溯)属于 DFS。 [Leetcode](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) / [力扣](https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/description/) -

+

```html Input:Digit string "23" @@ -1194,7 +1194,7 @@ private boolean isPalindrome(String s, int begin, int end) { [Leetcode](https://leetcode.com/problems/sudoku-solver/description/) / [力扣](https://leetcode-cn.com/problems/sudoku-solver/description/) -

+

```java private boolean[][] rowsUsed = new boolean[9][10]; @@ -1253,7 +1253,7 @@ private int cubeNum(int i, int j) { [Leetcode](https://leetcode.com/problems/n-queens/description/) / [力扣](https://leetcode-cn.com/problems/n-queens/description/) -

+

在 n\*n 的矩阵中摆放 n 个皇后,并且每个皇后不能在同一行,同一列,同一对角线上,求所有的 n 皇后的解。 @@ -1261,12 +1261,12 @@ private int cubeNum(int i, int j) { 45 度对角线标记数组的长度为 2 \* n - 1,通过下图可以明确 (r, c) 的位置所在的数组下标为 r + c。 -

+

135 度对角线标记数组的长度也是 2 \* n - 1,(r, c) 的位置所在的数组下标为 n - 1 - (r - c)。 -

+

```java private List> solutions; diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" "b/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" index 7083450342..e21daeeabb 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \346\240\221.md" @@ -1045,7 +1045,7 @@ private void inOrder(TreeNode node, List nums) { # Trie -

+

Trie,又称前缀树或字典树,用于判断字符串是否存在或者是否具有某种字符串前缀。 diff --git "a/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" "b/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" index 9a9a20fd99..f75bddc980 100644 --- "a/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" +++ "b/notes/Leetcode \351\242\230\350\247\243 - \350\264\252\345\277\203\346\200\235\346\203\263.md" @@ -35,7 +35,7 @@ Output: 2 证明:假设在某次选择中,贪心策略选择给当前满足度最小的孩子分配第 m 个饼干,第 m 个饼干为可以满足该孩子的最小饼干。假设存在一种最优策略,可以给该孩子分配第 n 个饼干,并且 m < n。我们可以发现,经过这一轮分配,贪心策略分配后剩下的饼干一定有一个比最优策略来得大。因此在后续的分配中,贪心策略一定能满足更多的孩子。也就是说不存在比贪心策略更优的策略,即贪心策略就是最优策略。 -

+

```java public int findContentChildren(int[] grid, int[] size) { diff --git a/notes/Linux.md b/notes/Linux.md index 924d87c493..b1ba8c58c2 100644 --- a/notes/Linux.md +++ b/notes/Linux.md @@ -165,7 +165,7 @@ Linux 发行版是 Linux 内核及各种应用软件的集成版本。 - 编辑模式(Insert mode):按下 "i" 等按键之后进入,可以对文本进行编辑; - 指令列模式(Bottom-line mode):按下 ":" 按键之后进入,用于保存退出等操作。 -

+

在指令列模式下,有以下命令用于离开或者保存文件。 @@ -199,25 +199,25 @@ GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操 IDE(ATA)全称 Advanced Technology Attachment,接口速度最大为 133MB/s,因为并口线的抗干扰性太差,且排线占用空间较大,不利电脑内部散热,已逐渐被 SATA 所取代。 -

+

### 2. SATA SATA 全称 Serial ATA,也就是使用串口的 ATA 接口,抗干扰性强,且对数据线的长度要求比 ATA 低很多,支持热插拔等功能。SATA-II 的接口速度为 300MiB/s,而 SATA-III 标准可达到 600MiB/s 的传输速度。SATA 的数据线也比 ATA 的细得多,有利于机箱内的空气流通,整理线材也比较方便。 -

+

### 3. SCSI SCSI 全称是 Small Computer System Interface(小型机系统接口),SCSI 硬盘广为工作站以及个人电脑以及服务器所使用,因此会使用较为先进的技术,如碟片转速 15000rpm 的高转速,且传输时 CPU 占用率较低,但是单价也比相同容量的 ATA 及 SATA 硬盘更加昂贵。 -

+

### 4. SAS SAS(Serial Attached SCSI)是新一代的 SCSI 技术,和 SATA 硬盘相同,都是采取序列式技术以获得更高的传输速度,可达到 6Gb/s。此外也通过缩小连接线改善系统内部空间等。 -

+

## 磁盘的文件名 @@ -252,7 +252,7 @@ GPT 没有扩展分区概念,都是主分区,每个 LBA 可以分 4 个分 MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB = 8 ZB。 -

+

## 开机检测程序 @@ -260,7 +260,7 @@ MBR 不支持 2.2 TB 以上的硬盘,GPT 则最多支持到 233 TB BIOS(Basic Input/Output System,基本输入输出系统),它是一个固件(嵌入在硬件中的软件),BIOS 程序存放在断电后内容不会丢失的只读内存中。 -

+

BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可以开机的磁盘,并读取磁盘第一个扇区的主要开机记录(MBR),由主要开机记录(MBR)执行其中的开机管理程序,这个开机管理程序会加载操作系统的核心文件。 @@ -268,7 +268,7 @@ BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可 下图中,第一扇区的主要开机记录(MBR)中的开机管理程序提供了两个选单:M1、M2,M1 指向了 Windows 操作系统,而 M2 指向其它分区的启动扇区,里面包含了另外一个开机管理程序,提供了一个指向 Linux 的选单。 -

+

安装多重引导,最好先安装 Windows 再安装 Linux。因为安装 Windows 时会覆盖掉主要开机记录(MBR),而 Linux 可以选择将开机管理程序安装在主要开机记录(MBR)或者其它分区的启动扇区,并且可以设置开机管理程序的选单。 @@ -294,17 +294,17 @@ BIOS 不可以读取 GPT 分区表,而 UEFI 可以。 - superblock:记录文件系统的整体信息,包括 inode 和 block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等; - block bitmap:记录 block 是否被使用的位图。 -

+

## 文件读取 对于 Ext2 文件系统,当要读取一个文件的内容时,先在 inode 中查找文件内容所在的所有 block,然后把所有 block 的内容读出来。 -

+

而对于 FAT 文件系统,它没有 inode,每个 block 中存储着下一个 block 的编号。 -

+

## 磁盘碎片 @@ -341,7 +341,7 @@ inode 具有以下特点: inode 中记录了文件内容所在的 block 编号,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block 编号。因此引入了间接、双间接、三间接引用。间接引用让 inode 记录的引用 block 块记录引用信息。 -

+

## 目录 @@ -367,7 +367,7 @@ ext3/ext4 文件系统引入了日志功能,可以利用日志来修复文件 - /usr (unix software resource):所有系统默认软件都会安装到这个目录; - /var (variable):存放系统或程序运行过程中的数据文件。 -

+

# 五、文件 @@ -534,7 +534,7 @@ cp [-adfilprsu] source destination ## 链接 -

+

```html @@ -662,7 +662,7 @@ example: find . -name "shadow*" +4、4 和 -4 的指示的时间范围如下: -

+

**② 与文件拥有者和所属群组有关的选项** @@ -1176,7 +1176,7 @@ dmtsai lines: 5 columns: 9 | T | stopped (either by a job control signal or because it is being traced)
结束,进程既可以被作业控制信号结束,也可能是正在被追踪。|
-

+

## SIGCHLD @@ -1189,7 +1189,7 @@ dmtsai lines: 5 columns: 9 在子进程退出时,它的进程描述符不会立即释放,这是为了让父进程得到子进程信息,父进程通过 wait() 和 waitpid() 来获得一个已经退出的子进程的信息。 -

+

## wait() diff --git a/notes/MySQL.md b/notes/MySQL.md index 14da320107..2239d48a72 100644 --- a/notes/MySQL.md +++ b/notes/MySQL.md @@ -42,7 +42,7 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且小于等于 keyi+1。 -

+

### 2. 操作 @@ -84,11 +84,11 @@ B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具 InnoDB 的 B+Tree 索引分为主索引和辅助索引。主索引的叶子节点 data 域记录着完整的数据记录,这种索引方式被称为聚簇索引。因为无法把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。 -

+

辅助索引的叶子节点的 data 域记录着主键的值,因此在使用辅助索引进行查找时,需要先查找到主键值,然后再到主索引中进行查找。 -

+

### 2. 哈希索引 @@ -350,7 +350,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 当一个表的数据不断增多时,Sharding 是必然的选择,它可以将数据分布到集群的不同节点上,从而缓存单个数据库的压力。 -

+

## 垂直切分 @@ -358,7 +358,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 在数据库的层面使用垂直切分将按数据库中表的密集程度部署到不同的库中,例如将原来的电商数据库垂直切分成商品数据库、用户数据库等。 -

+

## Sharding 策略 @@ -392,7 +392,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 - **I/O 线程** :负责从主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log)。 - **SQL 线程** :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中重放(Replay)。 -

+

## 读写分离 @@ -406,7 +406,7 @@ MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提 读写分离常用代理方式来实现,代理服务器接收应用层传来的读写请求,然后决定转发到哪个服务器。 -

+

# 参考资料 diff --git a/notes/Redis.md b/notes/Redis.md index 38901f41b7..a8b71352fd 100644 --- a/notes/Redis.md +++ b/notes/Redis.md @@ -67,7 +67,7 @@ Redis 支持很多特性,例如将内存中的数据持久化到硬盘中, ## STRING -

+

```html > set hello world @@ -82,7 +82,7 @@ OK ## LIST -

+

```html > rpush list-key item @@ -110,7 +110,7 @@ OK ## SET -

+

```html > sadd set-key item @@ -144,7 +144,7 @@ OK ## HASH -

+

```html > hset hash-key sub-key1 value1 @@ -175,7 +175,7 @@ OK ## ZSET -

+

```html > zadd zset-key 728 member1 @@ -317,11 +317,11 @@ int dictRehash(dict *d, int n) { 跳跃表是基于多指针有序链表实现的,可以看成多个有序链表。 -

+

在查找时,从上层指针开始查找,找到对应的区间之后再到下一层去查找。下图演示了查找 22 的过程。 -

+

与红黑树等平衡树相比,跳跃表具有以下优点: @@ -472,7 +472,7 @@ Redis 服务器是一个事件驱动程序。 Redis 基于 Reactor 模式开发了自己的网络事件处理器,使用 I/O 多路复用程序来同时监听多个套接字,并将到达的事件传送给文件事件分派器,分派器会根据套接字产生的事件类型调用相应的事件处理器。 -

+

## 时间事件 @@ -525,7 +525,7 @@ def main(): 从事件处理的角度来看,服务器运行流程如下: -

+

# 十一、复制 @@ -545,7 +545,7 @@ def main(): 随着负载不断上升,主服务器可能无法很快地更新所有从服务器,或者重新连接和重新同步从服务器将导致系统超载。为了解决这个问题,可以创建一个中间层来分担主服务器的复制工作。中间层的服务器是最上层服务器的从服务器,又是最下层服务器的主服务器。 -

+

# 十二、Sentinel @@ -580,7 +580,7 @@ Sentinel(哨兵)可以监听集群中的服务器,并在主服务器进入 Redis 没有关系型数据库中的表这一概念来将同种类型的数据存放在一起,而是使用命名空间的方式来实现这一功能。键名的前面部分存储命名空间,后面部分的内容存储 ID,通常使用 : 来进行分隔。例如下面的 HASH 的键名为 article:92617,其中 article 为命名空间,ID 为 92617。 -

+

## 点赞功能 @@ -588,13 +588,13 @@ Redis 没有关系型数据库中的表这一概念来将同种类型的数据 为了节约内存,规定一篇文章发布满一周之后,就不能再对它进行投票,而文章的已投票集合也会被删除,可以为文章的已投票集合设置一个一周的过期时间就能实现这个规定。 -

+

## 对文章进行排序 为了按发布时间和点赞数进行排序,可以建立一个文章发布时间的有序集合和一个文章点赞数的有序集合。(下图中的 score 就是这里所说的点赞数;下面所示的有序集合分值并不直接是时间和点赞数,而是根据时间和点赞数间接计算出来的) -

+

# 参考资料 diff --git a/notes/Socket.md b/notes/Socket.md index 5dc40ed8b9..64fc63008c 100644 --- a/notes/Socket.md +++ b/notes/Socket.md @@ -46,7 +46,7 @@ Unix 有五种 I/O 模型: ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); ``` -

+

## 非阻塞式 I/O @@ -54,7 +54,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 由于 CPU 要处理更多的系统调用,因此这种模型的 CPU 利用率比较低。 -

+

## I/O 复用 @@ -64,7 +64,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时有几万个连接,那么就需要创建相同数量的线程。相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。 -

+

## 信号驱动 I/O @@ -72,7 +72,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 相比于非阻塞式 I/O 的轮询方式,信号驱动 I/O 的 CPU 利用率更高。 -

+

## 异步 I/O @@ -80,7 +80,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 异步 I/O 与信号驱动 I/O 的区别在于,异步 I/O 的信号是通知应用进程 I/O 完成,而信号驱动 I/O 的信号是通知应用进程可以开始 I/O。 -

+

## 五大 I/O 模型比较 @@ -91,7 +91,7 @@ ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * 非阻塞式 I/O 、信号驱动 I/O 和异步 I/O 在第一阶段不会阻塞。 -

+

# 二、I/O 复用 diff --git "a/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" "b/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" index 475bbc560c..09a932d7cc 100644 --- "a/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" +++ "b/notes/\344\273\243\347\240\201\345\217\257\350\257\273\346\200\247.md" @@ -48,11 +48,11 @@ - 用 min、max 表示数量范围; - 用 first、last 表示访问空间的包含范围; -

+

- begin、end 表示访问空间的排除范围,即 end 不包含尾部。 -

+

# 四、良好的代码风格 diff --git "a/notes/\345\210\206\345\270\203\345\274\217.md" "b/notes/\345\210\206\345\270\203\345\274\217.md" index bf23703c05..cee7f7056f 100644 --- "a/notes/\345\210\206\345\270\203\345\274\217.md" +++ "b/notes/\345\210\206\345\270\203\345\274\217.md" @@ -70,7 +70,7 @@ EXPIRE 指令可以为一个键值对设置一个过期时间,从而避免了 Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节点为 /app1。 -

+

### 2. 节点类型 @@ -118,7 +118,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 协调者询问参与者事务是否执行成功,参与者发回事务执行结果。询问可以看成一种投票,需要参与者都同意才能执行。 -

+

#### 1.2 提交阶段 @@ -126,7 +126,7 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 需要注意的是,在准备阶段,参与者执行了事务,但是还未提交。只有在提交阶段接收到协调者发来的通知后,才进行提交或者回滚。 -

+

### 2. 存在的问题 @@ -154,14 +154,14 @@ Zookeeper 提供了一种树形结构的命名空间,/app1/p_1 节点的父节 2. 之后将本地消息表中的消息转发到消息队列中,如果转发成功则将消息从本地消息表中删除,否则继续重新转发。 3. 在分布式事务操作的另一方从消息队列中读取一个消息,并执行消息中的操作。 -

+

# 三、CAP 分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition Tolerance),最多只能同时满足其中两项。 -

+

## 一致性 @@ -225,7 +225,7 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE - 接受者(Acceptor):对每个提议进行投票; - 告知者(Learner):被告知投票的结果,不参与投票过程。 -

+

## 执行过程 @@ -235,19 +235,19 @@ ACID 要求强一致性,通常运用在传统的数据库系统上。而 BASE 下图演示了两个 Proposer 和三个 Acceptor 的系统中运行该算法的初始过程,每个 Proposer 都会向所有 Acceptor 发送 Prepare 请求。 -

+

当 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n1, v1],并且之前还未接收过 Prepare 请求,那么发送一个 Prepare 响应,设置当前接收到的提议为 [n1, v1],并且保证以后不会再接受序号小于 n1 的提议。 如下图,Acceptor X 在收到 [n=2, v=8] 的 Prepare 请求时,由于之前没有接收过提议,因此就发送一个 [no previous] 的 Prepare 响应,设置当前接收到的提议为 [n=2, v=8],并且保证以后不会再接受序号小于 2 的提议。其它的 Acceptor 类似。 -

+

如果 Acceptor 接收到一个 Prepare 请求,包含的提议为 [n2, v2],并且之前已经接收过提议 [n1, v1]。如果 n1 > n2,那么就丢弃该提议请求;否则,发送 Prepare 响应,该 Prepare 响应包含之前已经接收过的提议 [n1, v1],设置当前接收到的提议为 [n2, v2],并且保证以后不会再接受序号小于 n2 的提议。 如下图,Acceptor Z 收到 Proposer A 发来的 [n=2, v=8] 的 Prepare 请求,由于之前已经接收过 [n=4, v=5] 的提议,并且 n > 2,因此就抛弃该提议请求;Acceptor X 收到 Proposer B 发来的 [n=4, v=5] 的 Prepare 请求,因为之前接收到的提议为 [n=2, v=8],并且 2 <= 4,因此就发送 [n=2, v=8] 的 Prepare 响应,设置当前接收到的提议为 [n=4, v=5],并且保证以后不会再接受序号小于 4 的提议。Acceptor Y 类似。 -

+

### 2. Accept 阶段 @@ -257,13 +257,13 @@ Proposer A 接收到两个 Prepare 响应之后,就发送 [n=2, v=8] Accept Proposer B 过后也收到了两个 Prepare 响应,因此也开始发送 Accept 请求。需要注意的是,Accept 请求的 v 需要取它收到的最大提议编号对应的 v 值,也就是 8。因此它发送 [n=4, v=8] 的 Accept 请求。 -

+

### 3. Learn 阶段 Acceptor 接收到 Accept 请求时,如果序号大于等于该 Acceptor 承诺的最小序号,那么就发送 Learn 提议给所有的 Learner。当 Learner 发现有大多数的 Acceptor 接收了某个提议,那么该提议的提议值就被 Paxos 选择出来。 -

+

## 约束条件 @@ -291,47 +291,47 @@ Raft 也是分布式一致性协议,主要是用来竞选主节点。 - 下图展示一个分布式系统的最初阶段,此时只有 Follower 没有 Leader。Node A 等待一个随机的竞选超时时间之后,没收到 Leader 发来的心跳包,因此进入竞选阶段。 -

+

- 此时 Node A 发送投票请求给其它所有节点。 -

+

- 其它节点会对请求进行回复,如果超过一半的节点回复了,那么该 Candidate 就会变成 Leader。 -

+

- 之后 Leader 会周期性地发送心跳包给 Follower,Follower 接收到心跳包,会重新开始计时。 -

+

## 多个 Candidate 竞选 - 如果有多个 Follower 成为 Candidate,并且所获得票数相同,那么就需要重新开始投票。例如下图中 Node B 和 Node D 都获得两票,需要重新开始投票。 -

+

- 由于每个节点设置的随机竞选超时时间不同,因此下一次再次出现多个 Candidate 并获得同样票数的概率很低。 -

+

## 数据同步 - 来自客户端的修改都会被传入 Leader。注意该修改还未被提交,只是写入日志中。 -

+

- Leader 会把修改复制到所有 Follower。 -

+

- Leader 会等待大多数的 Follower 也进行了修改,然后才将修改提交。 -

+

- 此时 Leader 会通知的所有 Follower 让它们也提交修改,此时所有节点的值达成一致。 -

+

# 参考 diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" index 46931b58e9..1b40238cb0 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 10~19.md" @@ -26,13 +26,13 @@ -

+

## 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算 f(4) 需要计算 f(3) 和 f(2),计算 f(3) 需要计算 f(2) 和 f(1),可以看到 f(2) 被重复计算了。 -

+

递归是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,从而避免重复求解子问题。 @@ -92,23 +92,23 @@ public class Solution { 我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? -

+

## 解题思路 当 n 为 1 时,只有一种覆盖方法: -

+

当 n 为 2 时,有两种覆盖方法: -

+

要覆盖 2\*n 的大矩形,可以先覆盖 2\*1 的矩形,再覆盖 2\*(n-1) 的矩形;或者先覆盖 2\*2 的矩形,再覆盖 2\*(n-2) 的矩形。而覆盖 2\*(n-1) 和 2\*(n-2) 的矩形可以看成子问题。该问题的递推公式如下: -

+

```java public int RectCover(int n) { @@ -133,21 +133,21 @@ public int RectCover(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 当 n = 1 时,只有一种跳法: -

+

当 n = 2 时,有两种跳法: -

+

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的跳法可以看成子问题,该问题的递推公式为: -

+

```java public int JumpFloor(int n) { @@ -172,7 +172,7 @@ public int JumpFloor(int n) { 一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级... 它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 -

+

## 解题思路 @@ -232,13 +232,13 @@ public int JumpFloorII(int target) { 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 -

+

## 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半性质的算法的时间复杂度为 O(logN)(为了方便,这里将 log2N 写为 logN)。 -

+

此时问题的关键在于确定对半分得到的两个数组哪一个是旋转数组,哪一个是非递减数组。我们很容易知道非递减数组的第一个元素一定小于等于最后一个元素。 @@ -300,13 +300,13 @@ private int minNumber(int[] nums, int l, int h) { 例如下面的矩阵包含了一条 bfce 路径。 -

+

## 解题思路 使用回溯法(backtracking)进行求解,它是一种暴力搜索方法,通过搜索所有可能的结果来求解问题。回溯法在一次搜索结束时需要进行回溯(回退),将这一次搜索过程中设置的状态进行清除,从而开始一次新的搜索过程。例如下图示例中,从 f 开始,下一步有 4 种搜索可能,如果先搜索 b,需要将 b 标记为已经使用,防止重复使用。在这一次搜索结束之后,需要将 b 的已经使用状态清除,并搜索 c。 -

+

本题的输入是数组而不是矩阵(二维数组),因此需要先将数组转换成矩阵。 @@ -522,7 +522,7 @@ public int NumberOf1(int n) { -

+

因为 (x\*x)n/2 可以通过递归求解,并且每次递归 n 都减小一半,因此整个算法的时间复杂度为 O(logN)。 @@ -592,11 +592,11 @@ private void printNumber(char[] number) { ① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。 -

+

② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。 -

+

综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。(2N-1)/N \~ 2,因此该算法的平均时间复杂度为 O(1)。 @@ -630,7 +630,7 @@ public ListNode deleteNode(ListNode head, ListNode tobeDelete) { ## 题目描述 -

+

## 解题描述 diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" index aff1be3cbb..854388270d 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 20~29.md" @@ -70,7 +70,7 @@ public boolean isNumeric(char[] str) { 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 -

+

## 解题思路 @@ -131,7 +131,7 @@ private void swap(int[] nums, int i, int j) { 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K 个节点处,该位置就是倒数第 K 个节点。 -

+

```java public ListNode FindKthToTail(ListNode head, int k) { @@ -165,7 +165,7 @@ public ListNode FindKthToTail(ListNode head, int k) { 在相遇点,slow 要到环的入口点还需要移动 z 个节点,如果让 fast 重新从头开始移动,并且速度变为每次移动一个节点,那么它到环入口点还需要移动 x 个节点。在上面已经推导出 x=z,因此 fast 和 slow 将在环入口点相遇。 -

+

```java public ListNode EntryNodeOfLoop(ListNode pHead) { @@ -228,7 +228,7 @@ public ListNode ReverseList(ListNode head) { ## 题目描述 -

+

## 解题思路 @@ -280,7 +280,7 @@ public ListNode Merge(ListNode list1, ListNode list2) { ## 题目描述 -

+

## 解题思路 @@ -308,7 +308,7 @@ private boolean isSubtreeWithRoot(TreeNode root1, TreeNode root2) { ## 题目描述 -

+

## 解题思路 @@ -334,7 +334,7 @@ private void swap(TreeNode root) { ## 题目描述 -

+

## 解题思路 @@ -364,7 +364,7 @@ boolean isSymmetrical(TreeNode t1, TreeNode t2) { 下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 -

+

## 解题思路 diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" index d897d973a1..f8853033b1 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 30~39.md" @@ -87,7 +87,7 @@ public boolean IsPopOrder(int[] pushSequence, int[] popSequence) { 例如,以下二叉树层次遍历的结果为:1,2,3,4,5,6,7 -

+

## 解题思路 @@ -195,7 +195,7 @@ public ArrayList> Print(TreeNode pRoot) { 例如,下图是后序遍历序列 1,3,2 所对应的二叉搜索树。 -

+

## 解题思路 @@ -230,7 +230,7 @@ private boolean verify(int[] sequence, int first, int last) { 下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 -

+

## 解题思路 @@ -277,21 +277,21 @@ public class RandomListNode { } ``` -

+

## 解题思路 第一步,在每个节点的后面插入复制的节点。 -

+

第二步,对复制节点的 random 链接进行赋值。 -

+

第三步,拆分。 -

+

```java public RandomListNode Clone(RandomListNode pHead) { @@ -333,7 +333,7 @@ public RandomListNode Clone(RandomListNode pHead) { 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 -

+

## 解题思路 diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" index 2bcc5e842f..c0d701f7dc 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 3~9.md" @@ -33,7 +33,7 @@ Output: 以 (2, 3, 1, 0, 2, 5) 为例,遍历到位置 4 时,该位置上的数为 2,但是第 2 个位置上已经有一个 2 的值了,因此可以知道 2 重复: -

+

```java @@ -87,7 +87,7 @@ Given target = 20, return false. 该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间,当前元素的查找区间为左下角的所有元素。 -

+

```java public boolean Find(int target, int[][] matrix) { @@ -132,7 +132,7 @@ Output: 从后向前遍是为了在改变 P2 所指向的内容时,不会影响到 P1 遍历原来字符串的内容。 -

+

```java public String replaceSpace(StringBuffer str) { @@ -164,7 +164,7 @@ public String replaceSpace(StringBuffer str) { 从尾到头反过来打印出每个结点的值。 -

+

## 解题思路 @@ -192,7 +192,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { - 头结点是在头插法中使用的一个额外节点,这个节点不存储值; - 第一个节点就是链表的第一个真正存储值的节点。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -219,7 +219,7 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 栈具有后进先出的特点,在遍历链表时将值按顺序放入栈中,最后出栈的顺序即为逆序。 -

+

```java public ArrayList printListFromTailToHead(ListNode listNode) { @@ -244,13 +244,13 @@ public ArrayList printListFromTailToHead(ListNode listNode) { 根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 -

+

## 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。 -

+

```java // 缓存中序遍历数组每个值对应的索引 @@ -300,11 +300,11 @@ public class TreeLinkNode { ① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点; -

+

② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。 -

+

```java public TreeLinkNode GetNext(TreeLinkNode pNode) { @@ -337,7 +337,7 @@ public TreeLinkNode GetNext(TreeLinkNode pNode) { in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先进入的元素先退出,这就是队列的顺序。 -

+

```java Stack in = new Stack(); diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" index ab34a6d003..ed3d610d1d 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 50~59.md" @@ -120,7 +120,7 @@ private void merge(int[] nums, int l, int m, int h) { ## 题目描述 -

+

## 解题思路 @@ -212,7 +212,7 @@ private void inOrder(TreeNode root, int k) { 从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 -

+

## 解题思路 @@ -230,7 +230,7 @@ public int TreeDepth(TreeNode root) { 平衡二叉树左右子树高度差不超过 1。 -

+

## 解题思路 diff --git "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" index 053d412920..1e9f9c310f 100644 --- "a/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" +++ "b/notes/\345\211\221\346\214\207 Offer \351\242\230\350\247\243 - 60~68.md" @@ -19,7 +19,7 @@ 把 n 个骰子扔在地上,求点数和为 s 的概率。 -

+

## 解题思路 @@ -92,7 +92,7 @@ public List> dicesSum(int n) { 五张牌,其中大小鬼为癞子,牌面为 0。判断这五张牌是否能组成顺子。 -

+

## 解题思路 @@ -152,7 +152,7 @@ public int LastRemaining_Solution(int n, int m) { 可以有一次买入和一次卖出,买入必须在前。求最大收益。 -

+

## 解题思路 @@ -224,7 +224,7 @@ public int Add(int a, int b) { 给定一个数组 A[0, 1,..., n-1],请构建一个数组 B[0, 1,..., n-1],其中 B 中的元素 B[i]=A[0]\*A[1]\*...\*A[i-1]\*A[i+1]\*...\*A[n-1]。要求不能使用除法。 -

+

## 解题思路 @@ -289,7 +289,7 @@ public int StrToInt(String str) { 二叉查找树中,两个节点 p, q 的公共祖先 root 满足 root.val >= p.val && root.val <= q.val。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { @@ -309,7 +309,7 @@ public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { 在左右子树中查找是否存在 p 或者 q,如果 p 和 q 分别在两个子树中,那么就说明根节点就是最低公共祖先。 -

+

```java public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { diff --git "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 328090001e..6182a30dfd 100644 --- "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -80,7 +80,7 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT @@ -94,25 +94,25 @@ MySQL 默认采用自动提交模式。也就是说,如果不显式使用`STAR T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 -

+

## 读脏数据 T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 -

+

## 不可重复读 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。 -

+

## 幻影读 T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。 -

+

---- @@ -285,17 +285,17 @@ SELECT ... FOR UPDATE; ## 可重复读(REPEATABLE READ) -保证在同一个事务中多次读取同样数据的结果是一样的。 +保证在同一个事务中多次读取同一数据的结果是一样的。 ## 可串行化(SERIALIZABLE) -强制事务串行执行。 +强制事务串行执行,这样多个事务互不干扰,不会出现并发一致性问题。 -需要加锁实现,而其它隔离级别通常不需要。 +该隔离级别需要加锁实现,因为要使用加锁机制保证同一时间只有一个事务执行,也就是保证事务串行执行。 ---- -| 隔离级别 | 脏读 | 不可重复读 | 幻影读 | +| | 脏读 | 不可重复读 | 幻影读 | | :---: | :---: | :---:| :---: | | 未提交读 | √ | √ | √ | | 提交读 | × | √ | √ | @@ -304,10 +304,12 @@ SELECT ... FOR UPDATE; # 五、多版本并发控制 -多版本并发控制(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,无需使用 MVCC。可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。 +多版本并发控制(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,要求很低,无需使用 MVCC。可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。 ## 版本号 +在封锁一节中提到,加锁能解决多个事务同时执行时出现的并发一致性问题。但是封锁操作代价很高,而多版本并发控制采用无锁机制,而是利用“版本”来解决并发一致性问题。它的基本思想是为每个数据行维护创建 + - 系统版本号:是一个递增的数字,每开始一个新的事务,系统版本号就会自动递增。 - 事务版本号:事务开始时的系统版本号。 @@ -322,7 +324,7 @@ MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行(Record)的所有快照连接起来。 -

+

## 实现过程 @@ -536,7 +538,7 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图的 Course 和 Student 是一对多的关系。 -

+

## 表示出现多次的关系 @@ -544,19 +546,19 @@ Entity-Relationship,有三个组成部分:实体、属性、联系。 下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。 -

+

## 联系的多向性 虽然老师可以开设多门课,并且可以教授多名学生,但是对于特定的学生和课程,只有一个老师教授,这就构成了一个三元联系。 -

+

## 表示子类 用一个三角形和两条线来连接类和子类,与子类有关的属性和联系都连到子类上,而与父类和子类都有关的连到父类上。 -

+

# 参考资料 diff --git "a/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" "b/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" index 15384384ae..4df876d8cb 100644 --- "a/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" +++ "b/notes/\346\236\204\345\273\272\345\267\245\345\205\267.md" @@ -35,7 +35,7 @@ Ant 具有编译、测试和打包功能,其后出现的 Maven 在 Ant 的功能基础上又新增了依赖管理功能,而最新的 Gradle 又在 Maven 的功能基础上新增了对 Groovy 语言的支持。 -

+

Gradle 和 Maven 的区别是,它使用 Groovy 这种特定领域语言(DSL)来管理构建脚本,而不再使用 XML 这种标记性语言。因为项目如果庞大的话,XML 很容易就变得臃肿。 diff --git "a/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" "b/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" index 9d453df9f2..c4d38ede79 100644 --- "a/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" +++ "b/notes/\346\255\243\345\210\231\350\241\250\350\276\276\345\274\217.md" @@ -173,7 +173,7 @@ a.+c ^\s*\/\/.*$ ``` -

+

**匹配结果** diff --git "a/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" "b/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" index 7ed64fdfeb..485e25bb56 100644 --- "a/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" +++ "b/notes/\346\266\210\346\201\257\351\230\237\345\210\227.md" @@ -19,20 +19,20 @@ 消息生产者向消息队列中发送了一个消息之后,只能被一个消费者消费一次。 -

+

## 发布/订阅 消息生产者向频道发送一个消息之后,多个消费者可以从该频道订阅到这条消息并消费。 -

+

发布与订阅模式和观察者模式有以下不同: - 观察者模式中,观察者和主题都知道对方的存在;而在发布与订阅模式中,生产者与消费者不知道对方的存在,它们之间通过频道进行通信。 - 观察者模式是同步的,当事件触发时,主题会调用观察者的方法,然后等待方法返回;而发布与订阅模式是异步的,生产者向频道发送一个消息之后,就不需要关心消费者何时去订阅这个消息,可以立即返回。 -

+

# 二、使用场景 diff --git "a/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" "b/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" index aad5fbdcfe..7969ca1f51 100644 --- "a/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" +++ "b/notes/\347\256\227\346\263\225 - \345\205\266\345\256\203.md" @@ -1,6 +1,6 @@ # 汉诺塔 -

+

有三个柱子,分别为 from、buffer、to。需要将 from 上的圆盘全部移动到 to 上,并且要保证小圆盘始终在大圆盘上。 @@ -8,15 +8,15 @@ ① 将 n-1 个圆盘从 from -> buffer -

+

② 将 1 个圆盘从 from -> to -

+

③ 将 n-1 个圆盘从 buffer -> to -

+

如果只有一个圆盘,那么只需要进行一次移动操作。 @@ -67,7 +67,7 @@ from H1 to H3 生成编码时,从根节点出发,向左遍历则添加二进制位 0,向右则添加二进制位 1,直到遍历到叶子节点,叶子节点代表的字符的编码就是这个路径编码。 -

+

```java public class Huffman { diff --git "a/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" "b/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" index ca293d147f..e999528279 100644 --- "a/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" +++ "b/notes/\347\256\227\346\263\225 - \345\271\266\346\237\245\351\233\206.md" @@ -12,7 +12,7 @@ 用于解决动态连通性问题,能动态连接两个点,并且判断两个点是否连通。 -

+

| 方法 | 描述 | | :---: | :---: | @@ -51,7 +51,7 @@ public abstract class UF { 但是 union 操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 -

+

```java public class QuickFindUF extends UF { @@ -91,7 +91,7 @@ public class QuickFindUF extends UF { 但是 find 操作开销很大,因为同一个连通分量的节点 id 值不同,id 值只是用来指向另一个节点。因此需要一直向上查找操作,直到找到最上层的节点。 -

+

```java public class QuickUnionUF extends UF { @@ -124,7 +124,7 @@ public class QuickUnionUF extends UF { 这种方法可以快速进行 union 操作,但是 find 操作和树高成正比,最坏的情况下树的高度为节点的数目。 -

+

# 加权 Quick Union @@ -132,7 +132,7 @@ public class QuickUnionUF extends UF { 理论研究证明,加权 quick-union 算法构造的树深度最多不超过 logN。 -

+

```java public class WeightedQuickUnionUF extends UF { diff --git "a/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" "b/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" index 2d89334d2d..b520d1f763 100644 --- "a/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" +++ "b/notes/\347\256\227\346\263\225 - \346\216\222\345\272\217.md" @@ -29,7 +29,7 @@ public abstract class Sort> { 选择排序需要 \~N2/2 次比较和 \~N 次交换,它的运行时间与输入无关,这个特点使得它对一个已经排序的数组也需要这么多的比较和交换操作。 -

+

```java public class Selection> extends Sort { @@ -56,7 +56,7 @@ public class Selection> extends Sort { 在一轮循环中,如果没有发生交换,那么说明数组已经是有序的,此时可以直接退出。 -

+

```java public class Bubble> extends Sort { @@ -90,7 +90,7 @@ public class Bubble> extends Sort { - 最坏的情况下需要 \~N2/2 比较以及 \~N2/2 次交换,最坏的情况是数组是倒序的; - 最好的情况下需要 N-1 次比较和 0 次交换,最好的情况就是数组已经有序了。 -

+

```java public class Insertion> extends Sort { @@ -113,7 +113,7 @@ public class Insertion> extends Sort { 希尔排序使用插入排序对间隔 h 的序列进行排序。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。 -

+

```java public class Shell> extends Sort { @@ -147,7 +147,7 @@ public class Shell> extends Sort { 归并排序的思想是将数组分成两部分,分别进行排序,然后归并起来。 -

+

## 1. 归并方法 @@ -243,7 +243,7 @@ public class Down2UpMergeSort> extends MergeSort { - 归并排序将数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序; - 快速排序通过一个切分元素将数组分为两个子数组,左子数组小于等于切分元素,右子数组大于等于切分元素,将这两个子数组排序也就将整个数组排序了。 -

+

```java public class QuickSort> extends Sort { @@ -274,7 +274,7 @@ public class QuickSort> extends Sort { 取 a[l] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于它的元素,交换这两个元素。不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[l] 和 a[j] 交换位置。 -

+

```java private int partition(T[] nums, int l, int h) { @@ -378,7 +378,7 @@ public T select(T[] nums, int k) { 堆可以用数组来表示,这是因为堆是完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里不使用数组索引为 0 的位置,是为了更清晰地描述节点的位置关系。 -

+

```java public class Heap> { @@ -414,7 +414,7 @@ public class Heap> { 在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作,把这种操作称为上浮。 -

+

```java private void swim(int k) { @@ -427,7 +427,7 @@ private void swim(int k) { 类似地,当一个节点比子节点来得小,也需要不断地向下进行比较和交换操作,把这种操作称为下沉。一个节点如果有两个子节点,应当与两个子节点中最大那个节点进行交换。 -

+

```java private void sink(int k) { @@ -476,13 +476,13 @@ public T delMax() { 无序数组建立堆最直接的方法是从左到右遍历数组进行上浮操作。一个更高效的方法是从右至左进行下沉操作,如果一个节点的两个节点都已经是堆有序,那么进行下沉操作可以使得这个节点为根节点的堆有序。叶子节点不需要进行下沉操作,可以忽略叶子节点的元素,因此只需要遍历一半的元素即可。 -

+

#### 5.2 交换堆顶元素与最后一个元素 交换之后需要进行下沉操作维持堆的有序状态。 -

+

```java public class HeapSort> extends Sort { diff --git "a/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" "b/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" index 133ed8af42..c2b23ca57c 100644 --- "a/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" +++ "b/notes/\347\256\227\346\263\225 - \347\254\246\345\217\267\350\241\250.md" @@ -245,13 +245,13 @@ public class BinarySearchOrderedST, Value> implement **二叉树** 是一个空链接,或者是一个有左右两个链接的节点,每个链接都指向一颗子二叉树。 -

+

**二叉查找树** (BST)是一颗二叉树,并且每个节点的值都大于等于其左子树中的所有节点的值而小于等于右子树的所有节点的值。 BST 有一个重要性质,就是它的中序遍历结果递增排序。 -

+

基本数据结构: @@ -325,7 +325,7 @@ private Value get(Node x, Key key) { 当插入的键不存在于树中,需要创建一个新节点,并且更新上层节点的链接指向该节点,使得该节点正确地链接到树中。 -

+

```java @Override @@ -354,11 +354,11 @@ private Node put(Node x, Key key, Value value) { 最好的情况下树是完全平衡的,每条空链接和根节点的距离都为 logN。 -

+

在最坏的情况下,树的高度为 N。 -

+

## 4. floor() @@ -436,7 +436,7 @@ private Node min(Node x) { 令指向最小节点的链接指向最小节点的右子树。 -

+

```java public void deleteMin() { @@ -457,7 +457,7 @@ public Node deleteMin(Node x) { - 如果待删除的节点只有一个子树, 那么只需要让指向待删除节点的链接指向唯一的子树即可; - 否则,让右子树的最小节点替换该节点。 -

+

```java public void delete(Key key) { @@ -520,7 +520,7 @@ private List keys(Node x, Key l, Key h) { 2-3 查找树引入了 2- 节点和 3- 节点,目的是为了让树平衡。一颗完美平衡的 2-3 查找树的所有空链接到根节点的距离应该是相同的。 -

+

## 1. 插入操作 @@ -530,11 +530,11 @@ private List keys(Node x, Key l, Key h) { - 如果插入到 2- 节点上,那么直接将新节点和原来的节点组成 3- 节点即可。 -

+

- 如果是插入到 3- 节点上,就会产生一个临时 4- 节点时,需要将 4- 节点分裂成 3 个 2- 节点,并将中间的 2- 节点移到上层节点中。如果上移操作继续产生临时 4- 节点则一直进行分裂上移,直到不存在临时 4- 节点。 -

+

## 2. 性质 @@ -546,7 +546,7 @@ private List keys(Node x, Key l, Key h) { 红黑树是 2-3 查找树,但它不需要分别定义 2- 节点和 3- 节点,而是在普通的二叉查找树之上,为节点添加颜色。指向一个节点的链接颜色如果为红色,那么这个节点和上层节点表示的是一个 3- 节点,而黑色则是普通链接。 -

+

红黑树具有以下性质: @@ -555,7 +555,7 @@ private List keys(Node x, Key l, Key h) { 画红黑树时可以将红链接画平。 -

+

```java public class RedBlackBST, Value> extends BST { @@ -575,7 +575,7 @@ public class RedBlackBST, Value> extends BST
+

```java public Node rotateLeft(Node h) { @@ -594,7 +594,7 @@ public Node rotateLeft(Node h) { 进行右旋转是为了转换两个连续的左红链接,这会在之后的插入过程中探讨。 -

+

```java public Node rotateRight(Node h) { @@ -613,7 +613,7 @@ public Node rotateRight(Node h) { 一个 4- 节点在红黑树中表现为一个节点的左右子节点都是红色的。分裂 4- 节点除了需要将子节点的颜色由红变黑之外,同时需要将父节点的颜色由黑变红,从 2-3 树的角度看就是将中间节点移到上层节点。 -

+

```java void flipColors(Node h) { @@ -631,7 +631,7 @@ void flipColors(Node h) { - 如果左子节点是红色的,而且左子节点的左子节点也是红色的,进行右旋转; - 如果左右子节点均为红色的,进行颜色转换。 -

+

```java @Override @@ -756,7 +756,7 @@ public class Transaction { 对于 N 个键,M 条链表 (N>M),如果哈希函数能够满足均匀性的条件,每条链表的大小趋向于 N/M,因此未命中的查找和插入操作所需要的比较次数为 \~N/M。 -

+

## 3. 线性探测法 @@ -765,7 +765,7 @@ public class Transaction { 使用线性探测法,数组的大小 M 应当大于键的个数 N(M>N)。 -

+

```java public class LinearProbingHashST implements UnorderedST { @@ -867,7 +867,7 @@ public void delete(Key key) { 线性探测法的成本取决于连续条目的长度,连续条目也叫聚簇。当聚簇很长时,在查找和插入时也需要进行很多次探测。例如下图中 2\~4 位置就是一个聚簇。 -

+

α = N/M,把 α 称为使用率。理论证明,当 α 小于 1/2 时探测的预计次数只在 1.5 到 2.5 之间。为了保证散列表的性能,应当调整数组的大小,使得 α 在 [1/4, 1/2] 之间。 diff --git "a/notes/\347\274\223\345\255\230.md" "b/notes/\347\274\223\345\255\230.md" index 347088d06f..f52d9c1aa8 100644 --- "a/notes/\347\274\223\345\255\230.md" +++ "b/notes/\347\274\223\345\255\230.md" @@ -211,7 +211,7 @@ CDN 主要有以下优点: - 通过部署多台服务器,从而提高系统整体的带宽性能; - 多台服务器可以看成是一种冗余机制,从而具有高可用性。 -

+

# 五、缓存问题 @@ -285,11 +285,11 @@ Distributed Hash Table(DHT) 是一种哈希分布方式,其目的是为了 将哈希空间 [0, 2n-1] 看成一个哈希环,每个服务器节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。 -

+

一致性哈希在增加或者删除节点时只会影响到哈希环中相邻的节点,例如下图中新增节点 X,只需要将它前一个节点 C 上的数据重新进行分布即可,对于节点 A、B、D 都没有影响。 -

+

## 虚拟节点 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" index c4c5b71341..ae31fdaf5e 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \345\206\205\345\255\230\347\256\241\347\220\206.md" @@ -22,7 +22,7 @@ 从上面的描述中可以看出,虚拟内存允许程序不用将地址空间中的每一页都映射到物理内存,也就是说一个程序不需要全部调入内存就可以运行,这使得有限的内存运行大程序成为可能。例如有一台计算机可以产生 16 位地址,那么一个程序的地址空间范围是 0\~64K。该计算机只有 32KB 的物理内存,虚拟内存技术允许该计算机运行一个 64K 大小的程序。 -

+

# 分页系统地址映射 @@ -32,7 +32,7 @@ 下图的页表存放着 16 个页,这 16 个页需要用 4 个比特位来进行索引定位。例如对于虚拟地址(0010 000000000100),前 4 位是存储页面号 2,读取表项内容为(110 1),页表项最后一位表示是否存在于内存中,1 表示存在。后 12 位存储偏移量。这个页对应的页框的地址为 (110 000000000100)。 -

+

# 页面置换算法 @@ -72,7 +72,7 @@ 4,7,0,7,1,0,1,2,1,2,6 ``` -

+

## 3. 最近未使用 > NRU, Not Recently Used @@ -102,7 +102,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 当页面被访问 (读或写) 时设置该页面的 R 位为 1。需要替换的时候,检查最老页面的 R 位。如果 R 位是 0,那么这个页面既老又没有被使用,可以立刻置换掉;如果是 1,就将 R 位清 0,并把该页面放到链表的尾端,修改它的装入时间使它就像刚装入的一样,然后继续从链表的头部开始搜索。 -

+

## 6. 时钟 @@ -110,7 +110,7 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 第二次机会算法需要在链表中移动页面,降低了效率。时钟算法使用环形链表将页面连接起来,再使用一个指针指向最老的页面。 -

+

# 分段 @@ -118,11 +118,11 @@ FIFO 算法可能会把经常使用的页面置换出去,为了避免这一问 下图为一个编译器在编译过程中建立的多个表,有 4 个表是动态增长的,如果使用分页系统的一维地址空间,动态增长的特点会导致覆盖问题的出现。 -

+

分段的做法是把每个表分成段,一个段构成一个独立的地址空间。每个段的长度可以不同,并且可以动态增长。 -

+

# 段页式 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" index 2569d201fc..e27a1f3c51 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\246\202\350\277\260.md" @@ -76,7 +76,7 @@ 如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。 -

+

Linux 的系统调用主要有以下这些: @@ -105,7 +105,7 @@ Linux 的系统调用主要有以下这些: 因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。 -

+

# 中断分类 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" index 8dc385a469..53ad4abfd5 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \346\255\273\351\224\201.md" @@ -20,7 +20,7 @@ # 必要条件 -

+

- 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。 - 占有和等待:已经得到了某个资源的进程可以再请求新的资源。 @@ -52,7 +52,7 @@ ## 1. 每种类型一个资源的死锁检测 -

+

上图为资源分配图,其中方框表示资源,圆圈表示进程。资源指向进程表示该资源已经分配给该进程,进程指向资源表示进程请求获取该资源。 @@ -62,7 +62,7 @@ ## 2. 每种类型多个资源的死锁检测 -

+

上图中,有三个进程四个资源,每个数据代表的含义如下: @@ -111,7 +111,7 @@ ## 1. 安全状态 -

+

图 a 的第二列 Has 表示已拥有的资源数,第三列 Max 表示总共需要的资源数,Free 表示还有可以使用的资源数。从图 a 开始出发,先让 B 拥有所需的所有资源(图 b),运行结束后释放 B,此时 Free 变为 5(图 c);接着以同样的方式运行 C 和 A,使得所有进程都能成功运行,因此可以称图 a 所示的状态时安全的。 @@ -123,13 +123,13 @@ 一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。 -

+

上图 c 为不安全状态,因此算法会拒绝之前的请求,从而避免进入图 c 中的状态。 ## 3. 多个资源的银行家算法 -

+

上图中有五个进程,四个资源。左边的图表示已经分配的资源,右边的图表示还需要分配的资源。最右边的 E、P 以及 A 分别表示:总资源、已分配资源以及可用资源,注意这三个为向量,而不是具体数值,例如 A=(1020),表示 4 个资源分别还剩下 1/0/2/0。 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" index 3a035ba9d8..9def71159b 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\256\276\345\244\207\347\256\241\347\220\206.md" @@ -16,7 +16,7 @@ - 制动手臂(Actuator arm):用于在磁道之间移动磁头; - 主轴(Spindle):使整个盘面转动。 -

+

# 磁盘调度算法 @@ -44,7 +44,7 @@ 虽然平均寻道时间比较低,但是不够公平。如果新到达的磁道请求总是比一个在等待的磁道请求近,那么在等待的磁道请求会一直等待下去,也就是出现饥饿现象。具体来说,两端的磁道请求更容易出现饥饿现象。 -

+

## 3. 电梯算法 @@ -56,7 +56,7 @@ 因为考虑了移动方向,因此所有的磁盘请求都会被满足,解决了 SSTF 的饥饿问题。 -

+

diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" index d2b4634b08..51a2badad0 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -36,7 +36,7 @@ 下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 -

+

## 2. 线程 @@ -46,7 +46,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 -

+

## 3. 区别 @@ -68,7 +68,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H # 进程状态的切换 -

+

- 就绪状态(ready):等待被调度 - 运行状态(running) @@ -116,7 +116,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H - 因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。 - 而如果时间片过长,那么实时性就不能得到保证。 -

+

**2.2 优先级调度** @@ -134,7 +134,7 @@ QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 H 可以将这种调度算法看成是时间片轮转调度算法和优先级调度算法的结合。 -

+

## 3. 实时系统 @@ -308,7 +308,7 @@ end; ## 1. 哲学家进餐问题 -

+

五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。 @@ -553,7 +553,7 @@ int pipe(int fd[2]); - 只支持半双工通信(单向交替传输); - 只能在父子进程或者兄弟进程中使用。 -

+

## 2. FIFO @@ -567,7 +567,7 @@ int mkfifoat(int fd, const char *path, mode_t mode); FIFO 常用于客户-服务器应用程序中,FIFO 用作汇聚点,在客户进程和服务器进程之间传递数据。 -

+

## 3. 消息队列 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" index 061f39a083..dfce4295aa 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\346\223\215\344\275\234\347\263\273\347\273\237 - \351\223\276\346\216\245.md" @@ -29,7 +29,7 @@ gcc -o hello hello.c 这个过程大致如下: -

+

- 预处理阶段:处理以 # 开头的预处理命令; - 编译阶段:翻译成汇编文件; @@ -43,7 +43,7 @@ gcc -o hello hello.c - 符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用与一个符号定义关联起来。 - 重定位:链接器通过把每个符号定义与一个内存位置关联起来,然后修改所有对这些符号的引用,使得它们指向这个内存位置。 -

+

# 目标文件 @@ -63,7 +63,7 @@ gcc -o hello hello.c - 在给定的文件系统中一个库只有一个文件,所有引用该库的可执行目标文件都共享这个文件,它不会被复制到引用它的可执行文件中; - 在内存中,一个共享库的 .text 节(已编译程序的机器代码)的一个副本可以被不同的正在运行的进程共享。 -

+

diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" index d81ae2ec7c..f2f3411778 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \344\274\240\350\276\223\345\261\202.md" @@ -23,13 +23,13 @@ # UDP 首部格式 -

+

首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。12 字节的伪首部是为了计算检验和临时添加的。 # TCP 首部格式 -

+

- **序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。 @@ -47,7 +47,7 @@ # TCP 的三次握手 -

+

假设 A 为客户端,B 为服务器端。 @@ -69,7 +69,7 @@ # TCP 的四次挥手 -

+

以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。 @@ -117,7 +117,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 34, 35},其中 {31} 按序到达,而 {34, 35} 就不是,因此只对字节 31 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。 -

+

# TCP 流量控制 @@ -129,7 +129,7 @@ TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文 如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接收,而拥塞控制是为了降低整个网络的拥塞程度。 -

+

TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。 @@ -140,7 +140,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 - 接收方有足够大的接收缓存,因此不会发生流量控制; - 虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。 -

+

## 1. 慢开始与拥塞避免 @@ -160,7 +160,7 @@ TCP 主要通过四个算法来进行拥塞控制:慢开始、拥塞避免、 慢开始和快恢复的快慢指的是 cwnd 的设定值,而不是 cwnd 的增长速率。慢开始 cwnd 设定为 1,而快恢复 cwnd 设定为 ssthresh。 -

+

diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" index 2d9d4c6e05..5a8d348683 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \345\272\224\347\224\250\345\261\202.md" @@ -22,7 +22,7 @@ DNS 是一个分布式数据库,提供了主机名和 IP 地址之间相互转 域名具有层次结构,从上到下依次为:根域名、顶级域名、二级域名。 -

+

DNS 可以使用 UDP 或者 TCP 进行传输,使用的端口号都为 53。大多数情况下 DNS 使用 UDP 进行传输,这就要求域名解析器和域名服务器都必须自己处理超时和重传从而保证可靠性。在两种情况下会使用 TCP 进行传输: @@ -40,11 +40,11 @@ FTP 使用 TCP 进行连接,它需要两个连接来传送一个文件: - 主动模式:服务器端主动建立数据连接,其中服务器端的端口号为 20,客户端的端口号随机,但是必须大于 1024,因为 0\~1023 是熟知端口号。 -

+

- 被动模式:客户端主动建立数据连接,其中客户端的端口号由客户端自己指定,服务器端的端口号随机。 -

+

主动模式要求客户端开放端口号给服务器端,需要去配置客户端的防火墙。被动模式只需要服务器端开放端口号即可,无需客户端配置防火墙。但是被动模式会导致服务器端的安全性减弱,因为开放了过多的端口号。 @@ -61,7 +61,7 @@ DHCP 工作过程如下: 3. 如果客户端选择了某个 DHCP 服务器提供的信息,那么就发送 Request 报文给该 DHCP 服务器。 4. DHCP 服务器发送 Ack 报文,表示客户端此时可以使用提供给它的信息。 -

+

# 远程登录协议 @@ -75,13 +75,13 @@ TELNET 可以适应许多计算机和操作系统的差异,例如不同操作 邮件协议包含发送协议和读取协议,发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。 -

+

## 1. SMTP SMTP 只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。MIME 并没有改动或者取代 SMTP,而是增加邮件主体的结构,定义了非 ASCII 码的编码规则。 -

+

## 2. POP3 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" index d6e2e19e33..bdfe4f4ad3 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \346\246\202\350\277\260.md" @@ -22,27 +22,27 @@ 网络把主机连接起来,而互连网(internet)是把多种不同的网络连接起来,因此互连网是网络的网络。而互联网(Internet)是全球范围的互连网。 -

+

# ISP 互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。 -

+

目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为第一层 ISP、区域 ISP 和接入 ISP。互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。 -

+

# 主机之间的通信方式 - 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。 -

+

- 对等(P2P):不区分客户和服务器。 -

+

# 电路交换与分组交换 @@ -60,7 +60,7 @@ 总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延 -

+

## 1. 排队时延 @@ -76,7 +76,7 @@ -

+

其中 l 表示数据帧的长度,v 表示传输速率。 @@ -87,13 +87,13 @@ -

+

其中 l 表示信道长度,v 表示电磁波在信道上的传播速度。 # 计算机网络体系结构 -

+

## 1. 五层协议 @@ -123,7 +123,7 @@ TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。 -

+

## 4. 数据在各层之间的传递过程 diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" index 3d98ca9406..a748b50bc6 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\211\251\347\220\206\345\261\202.md" @@ -16,7 +16,7 @@ 模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。 -

+

diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" index 563ea8c3bf..69d106d5be 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \347\275\221\347\273\234\345\261\202.md" @@ -26,7 +26,7 @@ 使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。 -

+

与 IP 协议配套使用的还有三个协议: @@ -36,7 +36,7 @@ # IP 数据报格式 -

+

- **版本** : 有 4(IPv4)和 6(IPv6)两个值; @@ -56,7 +56,7 @@ - **片偏移** : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。 -

+

# IP 地址编址方式 @@ -72,7 +72,7 @@ IP 地址的编址方式经历了三个历史阶段: IP 地址 ::= {< 网络号 >, < 主机号 >} -

+

## 2. 子网划分 @@ -102,27 +102,27 @@ CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为 网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。 -

+

ARP 实现由 IP 地址得到 MAC 地址。 -

+

每个主机都有一个 ARP 高速缓存,里面有本局域网上的各主机和路由器的 IP 地址到 MAC 地址的映射表。 如果主机 A 知道主机 B 的 IP 地址,但是 ARP 高速缓存中没有该 IP 地址到 MAC 地址的映射,此时主机 A 通过广播的方式发送 ARP 请求分组,主机 B 收到该请求后会发送 ARP 响应分组给主机 A 告知其 MAC 地址,随后主机 A 向其高速缓存中写入主机 B 的 IP 地址到 MAC 地址的映射。 -

+

# 网际控制报文协议 ICMP ICMP 是为了更有效地转发 IP 数据报和提高交付成功的机会。它封装在 IP 数据报中,但是不属于高层协议。 -

+

ICMP 报文分为差错报告报文和询问报文。 -

+

## 1. Ping @@ -155,7 +155,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 下图中,场所 A 和 B 的通信经过互联网,如果场所 A 的主机 X 要和另一个场所 B 的主机 Y 通信,IP 数据报的源地址是 10.1.0.1,目的地址是 10.2.0.3。数据报先发送到与互联网相连的路由器 R1,R1 对内部数据进行加密,然后重新加上数据报的首部,源地址是路由器 R1 的全球地址 125.1.2.3,目的地址是路由器 R2 的全球地址 194.4.5.6。路由器 R2 收到数据报后将数据部分进行解密,恢复原来的数据报,此时目的地址为 10.2.0.3,就交付给 Y。 -

+

# 网络地址转换 NAT @@ -163,7 +163,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把传输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。 -

+

# 路由器的结构 @@ -171,7 +171,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 分组转发结构由三个部分组成:交换结构、一组输入端口和一组输出端口。 -

+

# 路由器分组转发流程 @@ -182,7 +182,7 @@ VPN 使用公用的互联网作为本机构各专用网之间的通信载体。 - 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器; - 报告转发分组出错。 -

+

# 路由选择协议 @@ -239,7 +239,7 @@ BGP 只能寻找一条比较好的路由,而不是最佳路由。 每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。 -

+

diff --git "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" index c08ef7970e..7d7d88ae37 100644 --- "a/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" +++ "b/notes/\350\256\241\347\256\227\346\234\272\347\275\221\347\273\234 - \351\223\276\350\267\257\345\261\202.md" @@ -28,7 +28,7 @@ 将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。 -

+

## 2. 透明传输 @@ -36,7 +36,7 @@ 帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符。如果数据部分出现转义字符,那么就在转义字符前面再加个转义字符。在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。 -

+

## 3. 差错检测 @@ -64,13 +64,13 @@ 频分复用的所有主机在相同的时间占用不同的频率带宽资源。 -

+

## 2. 时分复用 时分复用的所有主机在不同的时间占用相同的频率带宽资源。 -

+

使用频分复用和时分复用进行通信,在通信的过程中主机会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。 @@ -78,7 +78,7 @@ 是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。 -

+

## 4. 波分复用 @@ -90,7 +90,7 @@ -

+

为了讨论方便,取 m=8,设码片 为 00011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100。 @@ -100,9 +100,9 @@ -

+

-

+

其中 的反码。 @@ -110,7 +110,7 @@ 码分复用需要发送的数据量为原先的 m 倍。 -

+

# CSMA/CD 协议 @@ -125,13 +125,13 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。 当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定。从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。 -

+

# PPP 协议 互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议是用户计算机和 ISP 进行通信时所使用的数据链路层协议。 -

+

PPP 的帧格式: @@ -140,7 +140,7 @@ PPP 的帧格式: - FCS 字段是使用 CRC 的检验序列 - 信息部分的长度不超过 1500 -

+

# MAC 地址 @@ -156,7 +156,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 可以按照网络拓扑结构对局域网进行分类: -

+

# 以太网 @@ -172,7 +172,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 - **数据** :长度在 46-1500 之间,如果太小则需要填充; - **FCS** :帧检验序列,使用的是 CRC 检验方法; -

+

# 交换机 @@ -182,7 +182,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 回应该帧向主机 A 发送数据包时,交换机查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 2 的映射。 -

+

# 虚拟局域网 @@ -192,7 +192,7 @@ MAC 地址是链路层地址,长度为 6 字节(48 位),用于唯一标 使用 VLAN 干线连接来建立虚拟局域网,每台交换机上的一个特殊接口被设置为干线接口,以互连 VLAN 交换机。IEEE 定义了一种扩展的以太网帧格式 802.1Q,它在标准以太网帧上加进了 4 字节首部 VLAN 标签,用于表示该帧属于哪一个虚拟局域网。 -

+

diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" index 2d60600ca5..136b0f0eaf 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\215\225\344\276\213.md" @@ -10,7 +10,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" index 333a21be46..94b8c65dc9 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\270\255\344\273\213\350\200\205.md" @@ -11,17 +11,17 @@ - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" index 7bc210881f..3e4c0d5d82 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\272\253\345\205\203.md" @@ -12,7 +12,7 @@ - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" index 9ff95ceb6e..215681a8ff 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \344\273\243\347\220\206.md" @@ -13,7 +13,7 @@ - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" index f1bb2ad195..b07d1efe57 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\216\237\345\236\213\346\250\241\345\274\217.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" index 08b7db2088..7ad1d0134a 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\221\275\344\273\244.md" @@ -16,13 +16,13 @@ - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" index d88cac721c..190b555045 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\207\345\277\230\345\275\225.md" @@ -10,7 +10,7 @@ - Caretaker:负责保存好备忘录 - Memento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" index fda230b709..d89db0da65 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\244\226\350\247\202.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" index 3b33d97d4b..152e975a2f 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \345\267\245\345\216\202\346\226\271\346\263\225.md" @@ -10,7 +10,7 @@ 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" index e6b0af9d73..7e113588e3 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\212\275\350\261\241\345\267\245\345\216\202.md" @@ -14,7 +14,7 @@ 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" index 268f8cf715..dc49b3fd00 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\241\245\346\216\245.md" @@ -11,7 +11,7 @@ - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" index f2604abdee..ba13406bdf 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \346\250\241\346\235\277\346\226\271\346\263\225.md" @@ -8,13 +8,13 @@ ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" index 8ae809372d..dd3c7e795a 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\212\266\346\200\201.md" @@ -6,13 +6,13 @@ ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" index c757678279..bee164a38d 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\224\237\346\210\220\345\231\250.md" @@ -6,7 +6,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" index 0b34c2adc8..2416e9ce72 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\251\272\345\257\271\350\261\241.md" @@ -10,7 +10,7 @@ ### Class Diagram -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" index 8f5b492d43..f3ec662754 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\255\226\347\225\245.md" @@ -11,7 +11,7 @@ - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" index 7192b7384b..e03ad311ae 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\256\200\345\215\225\345\267\245\345\216\202.md" @@ -10,7 +10,7 @@ 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" index 18b4b3de39..f87de5a15f 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \347\273\204\345\220\210.md" @@ -10,7 +10,7 @@ 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" index 1e15a921d7..039a359083 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\243\205\351\245\260.md" @@ -8,7 +8,7 @@ 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -16,7 +16,7 @@ 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" index 06d4513270..1b505d74ea 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\202\345\257\237\350\200\205.md" @@ -6,7 +6,7 @@ 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -14,13 +14,13 @@ 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" index 98f7974ebb..3a34d05508 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\247\243\351\207\212\345\231\250.md" @@ -9,7 +9,7 @@ - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" index 17b9af2bd4..810fde860d 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\256\277\351\227\256\350\200\205.md" @@ -10,7 +10,7 @@ - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" index 8b1ac10ea9..10b13515cc 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\264\243\344\273\273\351\223\276.md" @@ -8,7 +8,7 @@ - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" index 0596ace9b3..c4beb94d9a 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \350\277\255\344\273\243\345\231\250.md" @@ -10,7 +10,7 @@ - Iterator 主要定义了 hasNext() 和 next() 方法; - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -
image-20191130164425351

+
image-20191130164425351

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" index dd1ebf2d32..102ff5f02e 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217 - \351\200\202\351\205\215\345\231\250.md" @@ -4,11 +4,11 @@ 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation diff --git "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" index 88f65599e4..2d69e88f24 100644 --- "a/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" +++ "b/notes/\350\256\276\350\256\241\346\250\241\345\274\217.md" @@ -52,7 +52,7 @@ 私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 -

+

### Implementation @@ -253,7 +253,7 @@ secondName 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用简单工厂,那么所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 -

+

### Implementation @@ -336,7 +336,7 @@ public class Client { 下图中,Factory 有一个 doSomething() 方法,这个方法需要用到一个产品对象,这个产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 -

+

### Implementation @@ -400,7 +400,7 @@ public class ConcreteFactory2 extends Factory { 从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂方法模式使用了继承。 -

+

### Implementation @@ -490,7 +490,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -580,7 +580,7 @@ abcdefghijklmnopqrstuvwxyz ### Class Diagram -

+

### Implementation @@ -641,7 +641,7 @@ abc - Handler:定义处理请求的接口,并且实现后继链(successor) -

+

### Implementation @@ -779,13 +779,13 @@ request2 is handle by ConcreteHandler2 - Invoker:通过它来调用命令 - Client:可以设置命令与命令的接收者 -

+

### Implementation 设计一个遥控器,可以控制电灯开关。 -

+

```java public interface Command { @@ -900,7 +900,7 @@ public class Client { - TerminalExpression:终结符表达式,每个终结符都需要一个 TerminalExpression。 - Context:上下文,包含解释器之外的一些全局信息。 -

+

### Implementation @@ -1025,7 +1025,7 @@ false - Iterator 主要定义了 hasNext() 和 next() 方法。 - Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 -

+

### Implementation @@ -1114,17 +1114,17 @@ public class Client { - Mediator:中介者,定义一个接口用于与各同事(Colleague)对象通信。 - Colleague:同事,相关对象 -

+

### Implementation Alarm(闹钟)、CoffeePot(咖啡壶)、Calendar(日历)、Sprinkler(喷头)是一组相关的对象,在某个对象的事件产生时需要去操作其它对象,形成了下面这种依赖结构: -

+

使用中介者模式可以将复杂的依赖结构变成星形结构: -

+

```java public abstract class Colleague { @@ -1284,7 +1284,7 @@ doSprinkler() - Caretaker:负责保存好备忘录 - Menento:备忘录,存储原始对象的的状态。备忘录实际上有两个接口,一个是提供给 Caretaker 的窄接口:它只能将备忘录传递给其它对象;一个是提供给 Originator 的宽接口,允许它访问到先前状态所需的所有数据。理想情况是只允许 Originator 访问本备忘录的内部状态。 -

+

### Implementation @@ -1457,7 +1457,7 @@ public class Client { 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 -

+

### Class Diagram @@ -1465,13 +1465,13 @@ public class Client { 观察者(Observer)的注册功能需要调用主题的 registerObserver() 方法。 -

+

### Implementation 天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 -

+

```java public interface Subject { @@ -1592,13 +1592,13 @@ StatisticsDisplay.update: 1.0 1.0 1.0 ### Class Diagram -

+

### Implementation 糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 -

+

```java public interface State { @@ -1899,7 +1899,7 @@ No gumball dispensed - Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 - Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 strategy 对象,也就是说能动态地改变 Context 所使用的算法。 -

+

### 与状态模式的比较 @@ -1986,13 +1986,13 @@ quack! ### Class Diagram -

+

### Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 -

+

```java public abstract class CaffeineBeverage { @@ -2089,7 +2089,7 @@ Tea.addCondiments - ConcreteVisitor:具体访问者,存储遍历过程中的累计结果 - ObjectStructure:对象结构,可以是组合结构,或者是一个集合。 -

+

### Implementation @@ -2294,7 +2294,7 @@ Number of items: 6 ### Class Diagram -

+

### Implementation @@ -2346,11 +2346,11 @@ public class Client { 把一个类接口转换成另一个用户需要的接口。 -

+

### Class Diagram -

+

### Implementation @@ -2422,7 +2422,7 @@ public class Client { - Abstraction:定义抽象类的接口 - Implementor:定义实现类接口 -

+

### Implementation @@ -2580,7 +2580,7 @@ public class Client { 组合对象拥有一个或者多个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 -

+

### Implementation @@ -2712,7 +2712,7 @@ Composite:root 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能,然后调用被装饰者的方法实现,从而也保留了被装饰者的功能。可以看到,具体组件应当是装饰层次的最低层,因为只有具体组件的方法实现不需要依赖于其它对象。 -

+

### Implementation @@ -2720,7 +2720,7 @@ Composite:root 下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 -

+

```java public interface Beverage { @@ -2818,7 +2818,7 @@ public class Client { ### Class Diagram -

+

### Implementation @@ -2877,7 +2877,7 @@ public class Client { - IntrinsicState:内部状态,享元对象共享内部状态 - ExtrinsicState:外部状态,每个享元对象的外部状态不同 -

+

### Implementation @@ -2966,7 +2966,7 @@ Java 利用缓存来加速大量小对象的访问时间。 - 保护代理(Protection Proxy):按权限控制对象的访问,它负责检查调用者是否具有实现一个请求所必须的访问权限。 - 智能代理(Smart Reference):取代了简单的指针,它在访问对象时执行一些附加操作:记录对象的引用次数;当第一次引用一个对象时,将它装入内存;在访问一个实际对象前,检查是否已经锁定了它,以确保其它对象不能改变它。 -

+

### Implementation diff --git "a/notes/\351\233\206\347\276\244.md" "b/notes/\351\233\206\347\276\244.md" index f10aee7fc3..e92c828c05 100644 --- "a/notes/\351\233\206\347\276\244.md" +++ "b/notes/\351\233\206\347\276\244.md" @@ -33,12 +33,12 @@ 下图中,一共有 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,13 +54,13 @@ 例如下图中,(1, 3, 5) 请求会被发送到服务器 1,但是 (1, 3) 很快就断开连接,此时只有 (5) 请求连接服务器 1;(2, 4, 6) 请求被发送到服务器 2,只有 (2) 的连接断开,此时 (6, 4) 请求连接服务器 2。该系统继续运行时,服务器 2 会承担过大的负载。 -

+

最少连接算法就是将请求发送给当前最少连接数的服务器上。 例如下图中,服务器 1 当前连接数最小,那么新到来的请求 6 就会被发送到服务器 1 上。 -

+

### 4. 加权最少连接(Weighted Least Connection) @@ -72,7 +72,7 @@ 和轮询算法类似,该算法比较适合服务器性能差不多的场景。 -

+

### 6. 源地址哈希法 (IP Hash) @@ -80,7 +80,7 @@ 可以保证同一 IP 的客户端的请求会转发到同一台服务器上,用来实现会话粘滞(Sticky Session) -

+

## 转发实现 @@ -95,7 +95,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 该负载均衡转发的缺点比较明显,实际场景中很少使用它。 -

+

### 2. DNS 域名解析 @@ -111,7 +111,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 大型网站基本使用了 DNS 做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。也就是说,域名解析的结果为内部的负载均衡服务器 IP 地址。 -

+

### 3. 反向代理服务器 @@ -168,7 +168,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 当服务器宕机时,将丢失该服务器上的所有 Session。 -

+

## Session Replication @@ -179,7 +179,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 占用过多内存; - 同步过程占用网络带宽以及服务器处理器时间。 -

+

## Session Server @@ -193,7 +193,7 @@ HTTP 重定向负载均衡服务器使用某种负载均衡算法计算得到服 - 需要去实现存取 Session 的代码。 -

+

参考: diff --git "a/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" "b/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" index f731445141..fff09bca4c 100644 --- "a/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" +++ "b/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" @@ -141,7 +141,7 @@ Percussion is playing... 用来描述继承关系,在 Java 中使用 extends 关键字。 -

+

```text @startuml @@ -162,7 +162,7 @@ Vihical <|-- Trunck 用来实现一个接口,在 Java 中使用 implements 关键字。 -

+

```text @startuml @@ -183,7 +183,7 @@ MoveBehavior <|.. Run 表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。 -

+

```text @startuml @@ -206,7 +206,7 @@ Computer o-- Screen 和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。 -

+

```text @startuml @@ -227,7 +227,7 @@ Company *-- DepartmentB 表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。 -

+

```text @startuml @@ -250,7 +250,7 @@ School "1" - "n" Student - A 类是 B 类方法当中的一个参数; - A 类向 B 类发送消息,从而影响 B 类发生变化。 -

+

```text @startuml From 82790baf297615faa20133f59cfc33a0dc60dffb Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 7 Dec 2019 14:57:54 +0800 Subject: [PATCH 032/214] auto commit --- ...7\263\273\347\273\237\345\216\237\347\220\206.md" | 12 ++++++------ ...7\263\273\347\273\237\345\216\237\347\220\206.md" | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 6182a30dfd..7f566a73e3 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -55,11 +55,11 @@ 事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。 -回滚可以用回滚日志来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。 +回滚可以用回滚日志(Undo Log)来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。 ### 2. 一致性(Consistency) -数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。 +数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对同一个数据的读取结果都是相同的。 ### 3. 隔离性(Isolation) @@ -69,7 +69,7 @@ 一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。 -使用重做日志来保证持久性。 +系统发生奔溃可以用重做日志(Redo Log)进行恢复,从而实现持久性。与回滚日志记录数据的逻辑修改不同,重做日志记录的是数据页的物理修改。 ---- @@ -80,11 +80,11 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT -MySQL 默认采用自动提交模式。也就是说,如果不显式使用`START TRANSACTION`语句来开始一个事务,那么每个查询都会被当做一个事务自动提交。 +MySQL 默认采用自动提交模式。也就是说,如果不显式使用`START TRANSACTION`语句来开始一个事务,那么每个查询操作都会被当做一个事务并自动提交。 # 二、并发一致性问题 diff --git "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 6182a30dfd..7f566a73e3 100644 --- "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -55,11 +55,11 @@ 事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。 -回滚可以用回滚日志来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。 +回滚可以用回滚日志(Undo Log)来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。 ### 2. 一致性(Consistency) -数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。 +数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对同一个数据的读取结果都是相同的。 ### 3. 隔离性(Isolation) @@ -69,7 +69,7 @@ 一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。 -使用重做日志来保证持久性。 +系统发生奔溃可以用重做日志(Redo Log)进行恢复,从而实现持久性。与回滚日志记录数据的逻辑修改不同,重做日志记录的是数据页的物理修改。 ---- @@ -80,11 +80,11 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT -MySQL 默认采用自动提交模式。也就是说,如果不显式使用`START TRANSACTION`语句来开始一个事务,那么每个查询都会被当做一个事务自动提交。 +MySQL 默认采用自动提交模式。也就是说,如果不显式使用`START TRANSACTION`语句来开始一个事务,那么每个查询操作都会被当做一个事务并自动提交。 # 二、并发一致性问题 From 579c6b671b791c9b75f01e0e9f8dc28d53b558f4 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 7 Dec 2019 17:46:25 +0800 Subject: [PATCH 033/214] auto commit --- ...\273\347\273\237\345\216\237\347\220\206.md" | 4 ++-- notes/pics/image-20191207165524880.png | Bin 0 -> 48256 bytes notes/pics/image-20191207170731112.png | Bin 0 -> 49208 bytes notes/pics/image-20191207171141210.png | Bin 0 -> 51310 bytes notes/pics/image-20191207171449820.png | Bin 0 -> 48977 bytes notes/pics/image-20191207171510150.png | Bin 0 -> 48977 bytes notes/pics/image-20191207171512045.png | Bin 0 -> 48977 bytes notes/pics/image-20191207171554083.png | Bin 0 -> 48985 bytes notes/pics/image-20191207171734324.png | Bin 0 -> 51642 bytes notes/pics/image-20191207173012642.png | Bin 0 -> 51088 bytes notes/pics/image-20191207174600729.png | Bin 0 -> 49455 bytes ...\273\347\273\237\345\216\237\347\220\206.md" | 4 ++-- 12 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 notes/pics/image-20191207165524880.png create mode 100644 notes/pics/image-20191207170731112.png create mode 100644 notes/pics/image-20191207171141210.png create mode 100644 notes/pics/image-20191207171449820.png create mode 100644 notes/pics/image-20191207171510150.png create mode 100644 notes/pics/image-20191207171512045.png create mode 100644 notes/pics/image-20191207171554083.png create mode 100644 notes/pics/image-20191207171734324.png create mode 100644 notes/pics/image-20191207173012642.png create mode 100644 notes/pics/image-20191207174600729.png diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 7f566a73e3..b12867a977 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -80,7 +80,7 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT diff --git a/notes/pics/image-20191207165524880.png b/notes/pics/image-20191207165524880.png new file mode 100644 index 0000000000000000000000000000000000000000..38ad6d29f78e205e05e7844e252a57ca63c52a6e GIT binary patch literal 48256 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

!yo+=_y`!9}o=BCnufy2jMc%ziWDZl)$emm{ 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207171141210.png b/notes/pics/image-20191207171141210.png new file mode 100644 index 0000000000000000000000000000000000000000..a5a1b6e8b2ab2508c493ca4b8fcd640087312a92 GIT binary patch literal 51310 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207171449820.png b/notes/pics/image-20191207171449820.png new file mode 100644 index 0000000000000000000000000000000000000000..e8abfe1b782c54aedd58a7b6d9b48d2bddb26aad GIT binary patch literal 48977 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207171510150.png b/notes/pics/image-20191207171510150.png new file mode 100644 index 0000000000000000000000000000000000000000..e8abfe1b782c54aedd58a7b6d9b48d2bddb26aad GIT binary patch literal 48977 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207171512045.png b/notes/pics/image-20191207171512045.png new file mode 100644 index 0000000000000000000000000000000000000000..e8abfe1b782c54aedd58a7b6d9b48d2bddb26aad GIT binary patch literal 48977 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207171554083.png b/notes/pics/image-20191207171554083.png new file mode 100644 index 0000000000000000000000000000000000000000..39bd7fc0ebd38f87442765607a48695a5a55739d GIT binary patch literal 48985 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 z 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207173012642.png b/notes/pics/image-20191207173012642.png new file mode 100644 index 0000000000000000000000000000000000000000..15c0a34a0b0f41c44068b93c0e6a1b26d7cc86c0 GIT binary patch literal 51088 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øUf!L|r#LSuTX>uBF1%tO!XdeN*RdZz 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
+


## ACID @@ -80,7 +80,7 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT From d7920b50bdbec7ac3627c6f6d428ff4fa30704b7 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 7 Dec 2019 17:51:22 +0800 Subject: [PATCH 034/214] auto commit --- ...\273\347\273\237\345\216\237\347\220\206.md" | 4 ++-- notes/pics/image-20191207175048914.png | Bin 0 -> 49713 bytes notes/pics/image-20191207175109320.png | Bin 0 -> 50532 bytes ...\273\347\273\237\345\216\237\347\220\206.md" | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 notes/pics/image-20191207175048914.png create mode 100644 notes/pics/image-20191207175109320.png diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index b12867a977..16cbac7218 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -80,7 +80,7 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT diff --git a/notes/pics/image-20191207175048914.png b/notes/pics/image-20191207175048914.png new file mode 100644 index 0000000000000000000000000000000000000000..fc69c68f8c3b303a9e3c3d70ae97d7f03ac29621 GIT binary patch literal 49713 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 tD`Er%V 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 ZQ)*T9*-mf8k)1BAI+|xR%GK>6{tI60(^mih literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207175109320.png b/notes/pics/image-20191207175109320.png new file mode 100644 index 0000000000000000000000000000000000000000..21c9305dc7a55c77ce71387d6ebbb8d1222073cd GIT binary patch literal 50532 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
+


## ACID @@ -80,7 +80,7 @@ - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 - 事务满足持久化是为了能应对数据库崩溃的情况。 -

+

## AUTOCOMMIT @@ -94,13 +94,13 @@ MySQL 默认采用自动提交模式。也就是说,如果不显式使用`STAR T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 -

+

## 读脏数据 T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 -

+

## 不可重复读 From 8fcb417c0423d2755b0917e7452e0770652ce776 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 7 Dec 2019 21:15:30 +0800 Subject: [PATCH 036/214] auto commit --- ...\273\347\273\237\345\216\237\347\220\206.md" | 8 ++++---- notes/pics/image-20191207210118304.png | Bin 0 -> 48576 bytes notes/pics/image-20191207210437023.png | Bin 0 -> 48569 bytes notes/pics/image-20191207210802815.png | Bin 0 -> 47616 bytes ...\273\347\273\237\345\216\237\347\220\206.md" | 8 ++++---- 5 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 notes/pics/image-20191207210118304.png create mode 100644 notes/pics/image-20191207210437023.png create mode 100644 notes/pics/image-20191207210802815.png diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index b26cec88e7..e2b89c75e5 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -78,9 +78,9 @@ - 只有满足一致性,事务的执行结果才是正确的。 - 在无并发的情况下,事务串行执行,隔离性一定能够满足。此时只要能满足原子性,就一定能满足一致性。 - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 -- 事务满足持久化是为了能应对数据库崩溃的情况。 +- 事务满足持久化是为了能应对系统崩溃的情况。 -

+

## AUTOCOMMIT @@ -106,13 +106,13 @@ T1 修改一个数据,T2 随后读取这个数据。如 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。 -

+

## 幻影读 T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。 -

+

---- diff --git a/notes/pics/image-20191207210118304.png b/notes/pics/image-20191207210118304.png new file mode 100644 index 0000000000000000000000000000000000000000..957aaf22475c1ac174bcd5ad404531353b1d3a91 GIT binary patch literal 48576 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
+

## AUTOCOMMIT @@ -106,13 +106,13 @@ T1 修改一个数据,T2 随后读取这个数据。如 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。 -

+

## 幻影读 T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。 -

+

---- From 1e6dad5d07d9535c723426a4218128872e1c2409 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 7 Dec 2019 21:19:19 +0800 Subject: [PATCH 037/214] auto commit --- ...\273\347\273\237\345\216\237\347\220\206.md" | 6 +++--- notes/pics/image-20191207211851299.png | Bin 0 -> 47217 bytes ...\273\347\273\237\345\216\237\347\220\206.md" | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) create mode 100644 notes/pics/image-20191207211851299.png diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index e2b89c75e5..bd2fe0f630 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -116,7 +116,7 @@ T1 读取某个范围的数据,T2 在这个范围内插 ---- -产生并发不一致性问题主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作需要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。 +产生并发不一致性问题的主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作需要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。 # 三、封锁 @@ -135,7 +135,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 ### 1. 读写锁 -- 排它锁(Exclusive),简写为 X 锁,又称写锁。 +- 互斥锁(Exclusive),简写为 X 锁,又称写锁。 - 共享锁(Shared),简写为 S 锁,又称读锁。 有以下两个规定: diff --git a/notes/pics/image-20191207211851299.png b/notes/pics/image-20191207211851299.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a2346f57cdaadb6886fce42c972759b9407ead GIT binary patch literal 47217 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 literal 0 HcmV?d00001 diff --git "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index e2b89c75e5..bd2fe0f630 100644 --- "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -116,7 +116,7 @@ T1 读取某个范围的数据,T2 在这个范围内插 ---- -产生并发不一致性问题主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作需要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。 +产生并发不一致性问题的主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。并发控制可以通过封锁来实现,但是封锁操作需要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。 # 三、封锁 @@ -135,7 +135,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 ### 1. 读写锁 -- 排它锁(Exclusive),简写为 X 锁,又称写锁。 +- 互斥锁(Exclusive),简写为 X 锁,又称写锁。 - 共享锁(Shared),简写为 S 锁,又称读锁。 有以下两个规定: From 3348b201d17d71d544ec96f3e5a664ac978390ab Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 7 Dec 2019 21:37:23 +0800 Subject: [PATCH 038/214] auto commit --- ...\273\347\273\237\345\216\237\347\220\206.md" | 5 +---- notes/pics/image-20191207213523777.png | Bin 0 -> 26254 bytes ...\273\347\273\237\345\216\237\347\220\206.md" | 5 +---- 3 files changed, 2 insertions(+), 8 deletions(-) create mode 100644 notes/pics/image-20191207213523777.png diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index bd2fe0f630..7b84e8972c 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -145,10 +145,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 锁的兼容关系如下: -| - | X | S | -| :--: | :--: | :--: | -| **X** |×|×| -| **S** |×|√| +

### 2. 意向锁 diff --git a/notes/pics/image-20191207213523777.png b/notes/pics/image-20191207213523777.png new file mode 100644 index 0000000000000000000000000000000000000000..7a44bb21a673cd866f706db2c8797a2e61205eaa GIT binary patch literal 26254 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 WXwC!qZ~R4nVr_1JuI8-o&Hn;Ow^+LX literal 0 HcmV?d00001 diff --git "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index bd2fe0f630..7b84e8972c 100644 --- "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -145,10 +145,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 锁的兼容关系如下: -| - | X | S | -| :--: | :--: | :--: | -| **X** |×|×| -| **S** |×|√| +

### 2. 意向锁 From 67e70462afd9a9e157902160f8ab89d705036b92 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sat, 7 Dec 2019 22:23:08 +0800 Subject: [PATCH 039/214] auto commit --- ...73\347\273\237\345\216\237\347\220\206.md" | 71 ++++-------------- notes/pics/image-20191207214442687.png | Bin 0 -> 36063 bytes notes/pics/image-20191207220440451.png | Bin 0 -> 58315 bytes notes/pics/image-20191207220831843.png | Bin 0 -> 59686 bytes notes/pics/image-20191207221128997.png | Bin 0 -> 58904 bytes notes/pics/image-20191207221313819.png | Bin 0 -> 59367 bytes notes/pics/image-20191207221744244.png | Bin 0 -> 35113 bytes notes/pics/image-20191207221920368.png | Bin 0 -> 42498 bytes notes/pics/image-20191207222102010.png | Bin 0 -> 37517 bytes notes/pics/image-20191207222134306.png | Bin 0 -> 45923 bytes notes/pics/image-20191207222237925.png | Bin 0 -> 46837 bytes ...73\347\273\237\345\216\237\347\220\206.md" | 71 ++++-------------- 12 files changed, 28 insertions(+), 114 deletions(-) create mode 100644 notes/pics/image-20191207214442687.png create mode 100644 notes/pics/image-20191207220440451.png create mode 100644 notes/pics/image-20191207220831843.png create mode 100644 notes/pics/image-20191207221128997.png create mode 100644 notes/pics/image-20191207221313819.png create mode 100644 notes/pics/image-20191207221744244.png create mode 100644 notes/pics/image-20191207221920368.png create mode 100644 notes/pics/image-20191207222102010.png create mode 100644 notes/pics/image-20191207222134306.png create mode 100644 notes/pics/image-20191207222237925.png diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 7b84e8972c..8531af9793 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

+

## ACID @@ -94,25 +94,25 @@ MySQL 默认采用自动提交模式。也就是说,如果不显式使用`STAR T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 -

+

## 读脏数据 T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 -

+

## 不可重复读 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。 -

+

## 幻影读 T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。 -

+

---- @@ -162,17 +162,12 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 各种锁的兼容关系如下: -| - | X | IX | S | IS | -| :--: | :--: | :--: | :--: | :--: | -| **X** |× |× |× | ×| -| **IX** |× |√ |× | √| -| **S** |× |× |√ | √| -| **IS** |× |√ |√ | √| +

解释如下: -- 任意 IS/IX 锁之间都是兼容的,因为它们只是表示想要对表加锁,而不是真正加锁; -- 这里的 X/IX/S/IS 锁都是表级锁,IX 锁和行级的 X 锁兼容,两个事务可以对两个数据行加 X 锁。(事务 T1 想要对数据行 R1 加 X 锁,事务 T2 想要对同一个表的数据行 R2 加 X 锁,两个事务都需要对该表加 IX 锁,但是 IX 锁是兼容的,并且 IX 锁与行级的 X 锁也是兼容的,因此两个事务都能加锁成功,对同一个表中的两个数据行做修改。) +- 任意 IS/IX 锁之间都是兼容的,因为它们只表示想要对表加锁,而不是真正加锁; +- 这里兼容关系针对的是表级锁,而表级的 IX 锁和行级的 X 锁兼容,两个事务可以对两个数据行加 X 锁。(事务 T1 想要对数据行 R1 加 X 锁,事务 T2 想要对同一个表的数据行 R2 加 X 锁,两个事务都需要对该表加 IX 锁,但是 IX 锁是兼容的,并且 IX 锁与行级的 X 锁也是兼容的,因此两个事务都能加锁成功,对同一个表中的两个数据行做修改。) ## 封锁协议 @@ -184,20 +179,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 可以解决丢失修改问题,因为不能同时有两个事务对同一个数据进行修改,那么事务的修改就不会被覆盖。 -| T1 | T2 | -| :--: | :--: | -| lock-x(A) | | -| read A=20 | | -| | lock-x(A) | -| | wait | -| write A=19 |. | -| commit |. | -| unlock-x(A) |. | -| | obtain | -| | read A=19 | -| | write A=21 | -| | commit | -| | unlock-x(A)| +

**二级封锁协议** @@ -205,20 +187,8 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 可以解决读脏数据问题,因为如果一个事务在对数据 A 进行修改,根据 1 级封锁协议,会加 X 锁,那么就不能再加 S 锁了,也就是不会读入数据。 -| T1 | T2 | -| :--: | :--: | -| lock-x(A) | | -| read A=20 | | -| write A=19 | | -| | lock-s(A) | -| | wait | -| rollback | .| -| A=20 |. | -| unlock-x(A) |. | -| | obtain | -| | read A=20 | -| | unlock-s(A)| -| | commit | +

+ **三级封锁协议** @@ -226,26 +196,13 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 可以解决不可重复读的问题,因为读 A 时,其它事务不能对 A 加 X 锁,从而避免了在读的期间数据发生改变。 -| T1 | T2 | -| :--: | :--: | -| lock-s(A) | | -| read A=20 | | -| |lock-x(A) | -| | wait | -| read A=20| . | -| commit | .| -| unlock-s(A) |. | -| | obtain | -| | read A=20 | -| | write A=19| -| | commit | -| | unlock-X(A)| +

### 2. 两段锁协议 加锁和解锁分为两个阶段进行。 -可串行化调度是指,通过并发控制,使得并发执行的事务结果与某个串行执行的事务结果相同。 +可串行化调度是指,通过并发控制,使得并发执行的事务结果与某个串行执行的事务结果相同。串行执行的事务互不干扰,不会出现并发一致性问题。 事务遵循两段锁协议是保证可串行化调度的充分条件。例如以下操作满足两段锁协议,它是可串行化调度。 @@ -253,7 +210,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 lock-x(A)...lock-s(B)...lock-s(C)...unlock(A)...unlock(C)...unlock(B) ``` -但不是必要条件,例如以下操作不满足两段锁协议,但是它还是可串行化调度。 +但不是必要条件,例如以下操作不满足两段锁协议,但它还是可串行化调度。 ```html lock-x(A)...unlock(A)...lock-s(B)...unlock(B)...lock-s(C)...unlock(C) diff --git a/notes/pics/image-20191207214442687.png b/notes/pics/image-20191207214442687.png new file mode 100644 index 0000000000000000000000000000000000000000..d4babb566d859ed7054300cbff02a197363ee5eb GIT binary patch literal 36063 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®=&=JATe~~pFe-nM#^16otMUFaEiWe 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�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 W!Tgy_q4fmml&p->oxIx*p8S8y*2Sy< literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207221128997.png b/notes/pics/image-20191207221128997.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b256ca2261ed3cb8809794d6c5db10de7f27bf GIT binary patch literal 58904 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 Y*n#78_Xx>g57I*Zw(_m~o5qj-50u5RLjV8( literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207221313819.png b/notes/pics/image-20191207221313819.png new file mode 100644 index 0000000000000000000000000000000000000000..38fd7d695e6b7f1ee873e014dc981d368b346d4c GIT binary patch literal 59367 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

9MBqNb^v@qDZ* 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207221920368.png b/notes/pics/image-20191207221920368.png new file mode 100644 index 0000000000000000000000000000000000000000..c1df6edb941110ec50c593f9862a1329be8ccca3 GIT binary patch literal 42498 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 V@?WPkc}c$Exz%S&$tLcZe*nR()wuuw literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207222102010.png b/notes/pics/image-20191207222102010.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d37b6940f2ea267269cf3ff65f42fe6a889fa5 GIT binary patch literal 37517 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


+

## ACID @@ -94,25 +94,25 @@ MySQL 默认采用自动提交模式。也就是说,如果不显式使用`STAR T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 -

+

## 读脏数据 T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 -

+

## 不可重复读 T2 读取一个数据,T1 对该数据做了修改。如果 T2 再次读取这个数据,此时读取的结果和第一次读取的结果不同。 -

+

## 幻影读 T1 读取某个范围的数据,T2 在这个范围内插入新的数据,T1 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。 -

+

---- @@ -162,17 +162,12 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 各种锁的兼容关系如下: -| - | X | IX | S | IS | -| :--: | :--: | :--: | :--: | :--: | -| **X** |× |× |× | ×| -| **IX** |× |√ |× | √| -| **S** |× |× |√ | √| -| **IS** |× |√ |√ | √| +

解释如下: -- 任意 IS/IX 锁之间都是兼容的,因为它们只是表示想要对表加锁,而不是真正加锁; -- 这里的 X/IX/S/IS 锁都是表级锁,IX 锁和行级的 X 锁兼容,两个事务可以对两个数据行加 X 锁。(事务 T1 想要对数据行 R1 加 X 锁,事务 T2 想要对同一个表的数据行 R2 加 X 锁,两个事务都需要对该表加 IX 锁,但是 IX 锁是兼容的,并且 IX 锁与行级的 X 锁也是兼容的,因此两个事务都能加锁成功,对同一个表中的两个数据行做修改。) +- 任意 IS/IX 锁之间都是兼容的,因为它们只表示想要对表加锁,而不是真正加锁; +- 这里兼容关系针对的是表级锁,而表级的 IX 锁和行级的 X 锁兼容,两个事务可以对两个数据行加 X 锁。(事务 T1 想要对数据行 R1 加 X 锁,事务 T2 想要对同一个表的数据行 R2 加 X 锁,两个事务都需要对该表加 IX 锁,但是 IX 锁是兼容的,并且 IX 锁与行级的 X 锁也是兼容的,因此两个事务都能加锁成功,对同一个表中的两个数据行做修改。) ## 封锁协议 @@ -184,20 +179,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 可以解决丢失修改问题,因为不能同时有两个事务对同一个数据进行修改,那么事务的修改就不会被覆盖。 -| T1 | T2 | -| :--: | :--: | -| lock-x(A) | | -| read A=20 | | -| | lock-x(A) | -| | wait | -| write A=19 |. | -| commit |. | -| unlock-x(A) |. | -| | obtain | -| | read A=19 | -| | write A=21 | -| | commit | -| | unlock-x(A)| +

**二级封锁协议** @@ -205,20 +187,8 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 可以解决读脏数据问题,因为如果一个事务在对数据 A 进行修改,根据 1 级封锁协议,会加 X 锁,那么就不能再加 S 锁了,也就是不会读入数据。 -| T1 | T2 | -| :--: | :--: | -| lock-x(A) | | -| read A=20 | | -| write A=19 | | -| | lock-s(A) | -| | wait | -| rollback | .| -| A=20 |. | -| unlock-x(A) |. | -| | obtain | -| | read A=20 | -| | unlock-s(A)| -| | commit | +

+ **三级封锁协议** @@ -226,26 +196,13 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 可以解决不可重复读的问题,因为读 A 时,其它事务不能对 A 加 X 锁,从而避免了在读的期间数据发生改变。 -| T1 | T2 | -| :--: | :--: | -| lock-s(A) | | -| read A=20 | | -| |lock-x(A) | -| | wait | -| read A=20| . | -| commit | .| -| unlock-s(A) |. | -| | obtain | -| | read A=20 | -| | write A=19| -| | commit | -| | unlock-X(A)| +

### 2. 两段锁协议 加锁和解锁分为两个阶段进行。 -可串行化调度是指,通过并发控制,使得并发执行的事务结果与某个串行执行的事务结果相同。 +可串行化调度是指,通过并发控制,使得并发执行的事务结果与某个串行执行的事务结果相同。串行执行的事务互不干扰,不会出现并发一致性问题。 事务遵循两段锁协议是保证可串行化调度的充分条件。例如以下操作满足两段锁协议,它是可串行化调度。 @@ -253,7 +210,7 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 lock-x(A)...lock-s(B)...lock-s(C)...unlock(A)...unlock(C)...unlock(B) ``` -但不是必要条件,例如以下操作不满足两段锁协议,但是它还是可串行化调度。 +但不是必要条件,例如以下操作不满足两段锁协议,但它还是可串行化调度。 ```html lock-x(A)...unlock(A)...lock-s(B)...unlock(B)...lock-s(C)...unlock(C) From b71985e21ed346f8cf41dc9c3b660347c88a58d9 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sun, 8 Dec 2019 01:26:22 +0800 Subject: [PATCH 040/214] auto commit --- ...73\347\273\237\345\216\237\347\220\206.md" | 70 +++++++++++------- notes/pics/image-20191207223334985.png | Bin 0 -> 57939 bytes notes/pics/image-20191207223400787.png | Bin 0 -> 58453 bytes notes/pics/image-20191208012527591.png | Bin 0 -> 31299 bytes ...73\347\273\237\345\216\237\347\220\206.md" | 70 +++++++++++------- 5 files changed, 90 insertions(+), 50 deletions(-) create mode 100644 notes/pics/image-20191207223334985.png create mode 100644 notes/pics/image-20191207223400787.png create mode 100644 notes/pics/image-20191208012527591.png diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 8531af9793..fabee3960b 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -19,9 +19,10 @@ * [可重复读(REPEATABLE READ)](#可重复读repeatable-read) * [可串行化(SERIALIZABLE)](#可串行化serializable) * [五、多版本并发控制](#五多版本并发控制) + * [基本思想](#基本思想) + * [Undo 日志](#undo-日志) * [版本号](#版本号) * [隐藏的列](#隐藏的列) - * [Undo 日志](#undo-日志) * [实现过程](#实现过程) * [快照读与当前读](#快照读与当前读) * [六、Next-Key Locks](#六next-key-locks) @@ -189,7 +190,6 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。

- **三级封锁协议** 在二级的基础上,要求读取数据 A 时必须加 S 锁,直到事务结束了才能释放 S 锁。 @@ -249,20 +249,39 @@ SELECT ... FOR UPDATE; ---- -| | 脏读 | 不可重复读 | 幻影读 | -| :---: | :---: | :---:| :---: | -| 未提交读 | √ | √ | √ | -| 提交读 | × | √ | √ | -| 可重复读 | × | × | √ | -| 可串行化 | × | × | × | +

# 五、多版本并发控制 多版本并发控制(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,要求很低,无需使用 MVCC。可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。 -## 版本号 +## 基本思想 + +在封锁一节中提到,加锁能解决多个事务同时执行时出现的并发一致性问题。但是加锁操作代价很高,并且在实际场景中读多写少,所有事务都是只是进行读操作的话就没必要进行加锁。 + +MVCC 的读操作不需要进行加锁,并且在可重复读隔离级别下能解决脏读和不可重复读问题。它的基本思想是为每个数据行维护多个版本的快照,多个事务可以同时去操作这个数据行。 + +事务的修改操作(DELETE、INSERT、UPDATE)会去修改该事务对应版本的快照。 + +脏读和不可重复读最根本的原因是事务读取到其它事务未提交的修改。在事务在进行读取操作时,为了解决脏读和不可重复读问题,读取的快照需要满足以下条件:快照在该事务开始之后没有被其它事务修改,否则会读取到其它事务的未提交的修改操作。 + +## Undo 日志 + +MVCC 的多版本指的是多个版本的快照,这个快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行的所有快照连接起来。 + +例如我们在 MySQL 创建一个表 t,包含主键 id 和一个字段 x。我们先插入一个数据行,然后对该数据行执行两次操作。 -在封锁一节中提到,加锁能解决多个事务同时执行时出现的并发一致性问题。但是封锁操作代价很高,而多版本并发控制采用无锁机制,而是利用“版本”来解决并发一致性问题。它的基本思想是为每个数据行维护创建 +```sql +INSERT INTO t(id, x) VALUES(1, "a"); +UPDATE t SET x="b" WHERE id=1; +UPDATE t SET x="c" WHERE id=1; +``` + +因为我们没有使用 `START TRANSACTION` 将上面的操作当成一个事务来执行,根据 MySQL 的 AUTOCOMMIT 机制,每个操作都会被当成一个事务来执行,所以上面总共涉及到三个事务。 + +

+ +## 版本号 - 系统版本号:是一个递增的数字,每开始一个新的事务,系统版本号就会自动递增。 - 事务版本号:事务开始时的系统版本号。 @@ -274,17 +293,13 @@ MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版 - 创建版本号:指示创建一个数据行的快照时的系统版本号; - 删除版本号:如果该快照的删除版本未定义或删除版本号大于当前事务版本号表示该快照有效 -## Undo 日志 - -MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行(Record)的所有快照连接起来。 -

## 实现过程 以下实现过程针对可重复读隔离级别。 -当开始一个事务时,该事务的版本号肯定大于当前所有数据行快照的创建版本号,理解这一点很关键。数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,因此新创建一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比所有数据行快照的创建版本号都大。 +当开始一个事务时,该事务的版本号肯定大于当前所有数据行快照的创建版本号。数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,因此新创建一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比所有数据行快照的创建版本号都大。 ### 1. SELECT @@ -308,22 +323,27 @@ MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把 ### 1. 快照读 -使用 MVCC 读取的是快照中的数据,这样可以减少加锁所带来的开销。 +MVCC 的 SELECT 操作是快照中的数据,不需要进行加锁操作。 ```sql -select * from table ...; +SELECT * FROM table ...; ``` ### 2. 当前读 -读取的是最新的数据,需要加锁。以下第一个语句需要加 S 锁,其它都需要加 X 锁。 +MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要加锁操作,从而读取最新的数据。 + +```sql +INSERT; +UPDATE; +DELETE; +``` + +在进行 SELECT 操作时,可以强制指定进行加锁操作。以下第一个语句需要加 S 锁,第二个需要加 X 锁。 ```sql -select * from table where ? lock in share mode; -select * from table where ? for update; -insert; -update; -delete; +SELECT * FROM table WHERE ? lock in share mode; +SELECT * FROM table WHERE ? for update; ``` # 六、Next-Key Locks @@ -348,14 +368,14 @@ SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE; ## Next-Key Locks -它是 Record Locks 和 Gap Locks 的结合,不仅锁定一个记录上的索引,也锁定索引之间的间隙,是一个前开后闭区间。例如一个索引包含以下值:10, 11, 13, and 20,那么就需要锁定以下区间: +它是 Record Locks 和 Gap Locks 的结合,不仅锁定一个记录上的索引,也锁定索引之间的间隙。它锁定一个前开后闭区间,例如一个索引包含以下值:10, 11, 13, and 20,那么就需要锁定以下区间: ```sql (-∞, 10] (10, 11] (11, 13] (13, 20] -(20, +supremum) +(20, +∞) ``` # 七、关系数据库设计理论 diff --git a/notes/pics/image-20191207223334985.png b/notes/pics/image-20191207223334985.png new file mode 100644 index 0000000000000000000000000000000000000000..74377d93f627f59969a3a9911b0af879d7149bb8 GIT binary patch literal 57939 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207223400787.png b/notes/pics/image-20191207223400787.png new file mode 100644 index 0000000000000000000000000000000000000000..b716c84e33be6a4cbcabd9b76b842df86c77c94b GIT binary patch literal 58453 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 UC97B}Nbr#smlw+u(S7@W0c>HNNdN!< literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208012527591.png b/notes/pics/image-20191208012527591.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b369267c3679114143c547436061c7d8e6a732 GIT binary patch literal 31299 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
- **三级封锁协议** 在二级的基础上,要求读取数据 A 时必须加 S 锁,直到事务结束了才能释放 S 锁。 @@ -249,20 +249,39 @@ SELECT ... FOR UPDATE; ---- -| | 脏读 | 不可重复读 | 幻影读 | -| :---: | :---: | :---:| :---: | -| 未提交读 | √ | √ | √ | -| 提交读 | × | √ | √ | -| 可重复读 | × | × | √ | -| 可串行化 | × | × | × | +

# 五、多版本并发控制 多版本并发控制(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,要求很低,无需使用 MVCC。可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。 -## 版本号 +## 基本思想 + +在封锁一节中提到,加锁能解决多个事务同时执行时出现的并发一致性问题。但是加锁操作代价很高,并且在实际场景中读多写少,所有事务都是只是进行读操作的话就没必要进行加锁。 + +MVCC 的读操作不需要进行加锁,并且在可重复读隔离级别下能解决脏读和不可重复读问题。它的基本思想是为每个数据行维护多个版本的快照,多个事务可以同时去操作这个数据行。 + +事务的修改操作(DELETE、INSERT、UPDATE)会去修改该事务对应版本的快照。 + +脏读和不可重复读最根本的原因是事务读取到其它事务未提交的修改。在事务在进行读取操作时,为了解决脏读和不可重复读问题,读取的快照需要满足以下条件:快照在该事务开始之后没有被其它事务修改,否则会读取到其它事务的未提交的修改操作。 + +## Undo 日志 + +MVCC 的多版本指的是多个版本的快照,这个快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行的所有快照连接起来。 + +例如我们在 MySQL 创建一个表 t,包含主键 id 和一个字段 x。我们先插入一个数据行,然后对该数据行执行两次操作。 -在封锁一节中提到,加锁能解决多个事务同时执行时出现的并发一致性问题。但是封锁操作代价很高,而多版本并发控制采用无锁机制,而是利用“版本”来解决并发一致性问题。它的基本思想是为每个数据行维护创建 +```sql +INSERT INTO t(id, x) VALUES(1, "a"); +UPDATE t SET x="b" WHERE id=1; +UPDATE t SET x="c" WHERE id=1; +``` + +因为我们没有使用 `START TRANSACTION` 将上面的操作当成一个事务来执行,根据 MySQL 的 AUTOCOMMIT 机制,每个操作都会被当成一个事务来执行,所以上面总共涉及到三个事务。 + +

+ +## 版本号 - 系统版本号:是一个递增的数字,每开始一个新的事务,系统版本号就会自动递增。 - 事务版本号:事务开始时的系统版本号。 @@ -274,17 +293,13 @@ MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版 - 创建版本号:指示创建一个数据行的快照时的系统版本号; - 删除版本号:如果该快照的删除版本未定义或删除版本号大于当前事务版本号表示该快照有效 -## Undo 日志 - -MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行(Record)的所有快照连接起来。 -

## 实现过程 以下实现过程针对可重复读隔离级别。 -当开始一个事务时,该事务的版本号肯定大于当前所有数据行快照的创建版本号,理解这一点很关键。数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,因此新创建一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比所有数据行快照的创建版本号都大。 +当开始一个事务时,该事务的版本号肯定大于当前所有数据行快照的创建版本号。数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,因此新创建一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比所有数据行快照的创建版本号都大。 ### 1. SELECT @@ -308,22 +323,27 @@ MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把 ### 1. 快照读 -使用 MVCC 读取的是快照中的数据,这样可以减少加锁所带来的开销。 +MVCC 的 SELECT 操作是快照中的数据,不需要进行加锁操作。 ```sql -select * from table ...; +SELECT * FROM table ...; ``` ### 2. 当前读 -读取的是最新的数据,需要加锁。以下第一个语句需要加 S 锁,其它都需要加 X 锁。 +MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要加锁操作,从而读取最新的数据。 + +```sql +INSERT; +UPDATE; +DELETE; +``` + +在进行 SELECT 操作时,可以强制指定进行加锁操作。以下第一个语句需要加 S 锁,第二个需要加 X 锁。 ```sql -select * from table where ? lock in share mode; -select * from table where ? for update; -insert; -update; -delete; +SELECT * FROM table WHERE ? lock in share mode; +SELECT * FROM table WHERE ? for update; ``` # 六、Next-Key Locks @@ -348,14 +368,14 @@ SELECT c FROM t WHERE c BETWEEN 10 and 20 FOR UPDATE; ## Next-Key Locks -它是 Record Locks 和 Gap Locks 的结合,不仅锁定一个记录上的索引,也锁定索引之间的间隙,是一个前开后闭区间。例如一个索引包含以下值:10, 11, 13, and 20,那么就需要锁定以下区间: +它是 Record Locks 和 Gap Locks 的结合,不仅锁定一个记录上的索引,也锁定索引之间的间隙。它锁定一个前开后闭区间,例如一个索引包含以下值:10, 11, 13, and 20,那么就需要锁定以下区间: ```sql (-∞, 10] (10, 11] (11, 13] (13, 20] -(20, +supremum) +(20, +∞) ``` # 七、关系数据库设计理论 From eb1186936a09f38f25152874c206870b89af4f5a Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sun, 8 Dec 2019 01:45:21 +0800 Subject: [PATCH 041/214] auto commit --- ...347\263\273\347\273\237\345\216\237\347\220\206.md" | 10 ++++------ ...347\263\273\347\273\237\345\216\237\347\220\206.md" | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index fabee3960b..a38ae975aa 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -288,18 +288,16 @@ UPDATE t SET x="c" WHERE id=1; ## 隐藏的列 -MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版本号: +MVCC 在每个数据行后面都保存着两个隐藏的列,用来存储两个版本号: - 创建版本号:指示创建一个数据行的快照时的系统版本号; -- 删除版本号:如果该快照的删除版本未定义或删除版本号大于当前事务版本号表示该快照有效 - - +- 删除版本号:如果该快照的删除版本号未定义或删除版本号大于当前事务版本号表示该快照有效。 ## 实现过程 以下实现过程针对可重复读隔离级别。 -当开始一个事务时,该事务的版本号肯定大于当前所有数据行快照的创建版本号。数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,因此新创建一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比所有数据行快照的创建版本号都大。 +因为数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,所以新开始一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比当前所有数据行快照的创建版本号都大。 ### 1. SELECT @@ -331,7 +329,7 @@ SELECT * FROM table ...; ### 2. 当前读 -MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要加锁操作,从而读取最新的数据。 +MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要进行加锁操作,从而读取最新的数据。 ```sql INSERT; diff --git "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index fabee3960b..a38ae975aa 100644 --- "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -288,18 +288,16 @@ UPDATE t SET x="c" WHERE id=1; ## 隐藏的列 -MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版本号: +MVCC 在每个数据行后面都保存着两个隐藏的列,用来存储两个版本号: - 创建版本号:指示创建一个数据行的快照时的系统版本号; -- 删除版本号:如果该快照的删除版本未定义或删除版本号大于当前事务版本号表示该快照有效 - - +- 删除版本号:如果该快照的删除版本号未定义或删除版本号大于当前事务版本号表示该快照有效。 ## 实现过程 以下实现过程针对可重复读隔离级别。 -当开始一个事务时,该事务的版本号肯定大于当前所有数据行快照的创建版本号。数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,因此新创建一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比所有数据行快照的创建版本号都大。 +因为数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,所以新开始一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比当前所有数据行快照的创建版本号都大。 ### 1. SELECT @@ -331,7 +329,7 @@ SELECT * FROM table ...; ### 2. 当前读 -MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要加锁操作,从而读取最新的数据。 +MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要进行加锁操作,从而读取最新的数据。 ```sql INSERT; From 827725da95403fafb7e2fce90dbc0bdfbe0bd3ec Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sun, 8 Dec 2019 17:26:50 +0800 Subject: [PATCH 042/214] auto commit --- ...73\347\273\237\345\216\237\347\220\206.md" | 65 +++++++----------- notes/pics/image-20191208164808217.png | Bin 0 -> 35592 bytes notes/pics/image-20191208171445674.png | Bin 0 -> 28130 bytes ...73\347\273\237\345\216\237\347\220\206.md" | 65 +++++++----------- 4 files changed, 50 insertions(+), 80 deletions(-) create mode 100644 notes/pics/image-20191208164808217.png create mode 100644 notes/pics/image-20191208171445674.png diff --git "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index a38ae975aa..e97faa9064 100644 --- "a/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/docs/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -20,10 +20,9 @@ * [可串行化(SERIALIZABLE)](#可串行化serializable) * [五、多版本并发控制](#五多版本并发控制) * [基本思想](#基本思想) - * [Undo 日志](#undo-日志) * [版本号](#版本号) - * [隐藏的列](#隐藏的列) - * [实现过程](#实现过程) + * [Undo 日志](#undo-日志) + * [ReadView](#readview) * [快照读与当前读](#快照读与当前读) * [六、Next-Key Locks](#六next-key-locks) * [Record Locks](#record-locks) @@ -257,19 +256,22 @@ SELECT ... FOR UPDATE; ## 基本思想 -在封锁一节中提到,加锁能解决多个事务同时执行时出现的并发一致性问题。但是加锁操作代价很高,并且在实际场景中读多写少,所有事务都是只是进行读操作的话就没必要进行加锁。 +在封锁一节中提到,加锁能解决多个事务同时执行时出现的并发一致性问题。在实际场景中读操作往往多于写操作,因此又引入了读写锁来避免不必要的加锁操作,例如读和读没有互斥关系。读写锁中读和写操作仍然是互斥的,而 MVCC 利用了多版本的思想,写操作更新最新的版本快照,而读操作去读旧版本快照,没有互斥关系,这一点和 CopyOnWrite 类似。 -MVCC 的读操作不需要进行加锁,并且在可重复读隔离级别下能解决脏读和不可重复读问题。它的基本思想是为每个数据行维护多个版本的快照,多个事务可以同时去操作这个数据行。 +在 MVCC 中事务的修改操作(DELETE、INSERT、UPDATE)会为数据行新增一个版本快照。 -事务的修改操作(DELETE、INSERT、UPDATE)会去修改该事务对应版本的快照。 +脏读和不可重复读最根本的原因是事务读取到其它事务未提交的修改。在事务进行读取操作时,为了解决脏读和不可重复读问题,MVCC 规定只能读取已经提交的快照。当然一个事务可以读取自身未提交的快照,这不算是脏读。 + +## 版本号 -脏读和不可重复读最根本的原因是事务读取到其它事务未提交的修改。在事务在进行读取操作时,为了解决脏读和不可重复读问题,读取的快照需要满足以下条件:快照在该事务开始之后没有被其它事务修改,否则会读取到其它事务的未提交的修改操作。 +- 系统版本号 SYS_ID:是一个递增的数字,每开始一个新的事务,系统版本号就会自动递增。 +- 事务版本号 TRX_ID :事务开始时的系统版本号。 ## Undo 日志 -MVCC 的多版本指的是多个版本的快照,这个快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行的所有快照连接起来。 +MVCC 的多版本指的是多个版本的快照,快照存储在 Undo 日志中,该日志通过回滚指针 ROLL_PTR 把一个数据行的所有快照连接起来。 -例如我们在 MySQL 创建一个表 t,包含主键 id 和一个字段 x。我们先插入一个数据行,然后对该数据行执行两次操作。 +例如在 MySQL 创建一个表 t,包含主键 id 和一个字段 x。我们先插入一个数据行,然后对该数据行执行两次更新操作。 ```sql INSERT INTO t(id, x) VALUES(1, "a"); @@ -277,45 +279,28 @@ UPDATE t SET x="b" WHERE id=1; UPDATE t SET x="c" WHERE id=1; ``` -因为我们没有使用 `START TRANSACTION` 将上面的操作当成一个事务来执行,根据 MySQL 的 AUTOCOMMIT 机制,每个操作都会被当成一个事务来执行,所以上面总共涉及到三个事务。 - -

- -## 版本号 - -- 系统版本号:是一个递增的数字,每开始一个新的事务,系统版本号就会自动递增。 -- 事务版本号:事务开始时的系统版本号。 - -## 隐藏的列 - -MVCC 在每个数据行后面都保存着两个隐藏的列,用来存储两个版本号: - -- 创建版本号:指示创建一个数据行的快照时的系统版本号; -- 删除版本号:如果该快照的删除版本号未定义或删除版本号大于当前事务版本号表示该快照有效。 - -## 实现过程 - -以下实现过程针对可重复读隔离级别。 - -因为数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,所以新开始一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比当前所有数据行快照的创建版本号都大。 +因为没有使用 `START TRANSACTION` 将上面的操作当成一个事务来执行,根据 MySQL 的 AUTOCOMMIT 机制,每个操作都会被当成一个事务来执行,所以上面的操作总共涉及到三个事务。快照中除了记录事务版本号 TRX_ID 和操作之外,还记录了一个 bit 的 DEL 字段,用于标记是否被删除。 -### 1. SELECT +

-多个事务必须读取到同一个数据行的快照,并且这个快照是距离现在最近的一个有效快照。但是也有例外,如果有一个事务正在修改该数据行,那么它可以读取事务本身所做的修改,而不用和其它事务的读取结果一致。 +INSERT、UPDATE、DELETE 操作会创建一个日志,并将事务版本号 TRX_ID 写入。DELETE 可以看成是一个特殊的 UPDATE,还会额外将 DEL 字段设置为 1。 -把没有对一个数据行做修改的事务称为 T,T 所要读取的数据行快照的创建版本号必须小于等于 T 的版本号,因为如果大于 T 的版本号,那么表示该数据行快照是其它事务的最新修改,因此不能去读取它。除此之外,T 所要读取的数据行快照的删除版本号必须是未定义或者大于 T 的版本号,因为如果小于等于 T 的版本号,那么表示该数据行快照是已经被删除的,不应该去读取它。 +## ReadView -### 2. INSERT +MVCC 维护了一个 ReadView 结构,主要包含了当前系统未提交的事务列表 TRX_IDs {TRX_ID_1, TRX_ID_2, ...},还有该列表的最小值 TRX_ID_MIN 和 TRX_ID_MAX。 -将当前系统版本号作为数据行快照的创建版本号。 +

-### 3. DELETE +在进行 SELECT 操作时,根据数据行快照的 TRX_ID 与 TRX_ID_MIN 和 TRX_ID_MAX 之间的关系,从而判断数据行快照是否可以使用: -将当前系统版本号作为数据行快照的删除版本号。 +- TRX_ID < TRX_ID_MIN,表示该数据行快照时在当前所有未提交事务之前进行更改的,因此可以使用。 -### 4. UPDATE +- TRX_ID > TRX_ID_MAX,表示该数据行快照是在事务启动之后被更改的,因此不可使用。 +- TRX_ID_MIN <= TRX_ID <= TRX_ID_MAX,需要根据隔离级别再进行判断: + - 提交读:如果 TRX_ID 在 TRX_IDs 列表中,表示该数据行快照对应的事务还未提交,则该快照不可使用。否则表示已经提交,可以使用。 + - 可重复读:都不可以使用。因为如果可以使用的话,那么其它事务也可以读到这个数据行快照并进行修改,那么当前事务再去读这个数据行得到的值就会发生改变,也就是出现了不可重复读问题。 -将当前系统版本号作为更新前的数据行快照的删除版本号,并将当前系统版本号作为更新后的数据行快照的创建版本号。可以理解为先执行 DELETE 后执行 INSERT。 +在数据行快照不可使用的情况下,需要沿着 Undo Log 的回滚指针 ROLL_PTR 找到下一个快照,再进行上面的判断。 ## 快照读与当前读 @@ -329,7 +314,7 @@ SELECT * FROM table ...; ### 2. 当前读 -MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要进行加锁操作,从而读取最新的数据。 +MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要进行加锁操作,从而读取最新的数据。可以看到 MVCC 并不是完全不用加锁,而只是避免了 SELECT 的加锁操作。 ```sql INSERT; diff --git a/notes/pics/image-20191208164808217.png b/notes/pics/image-20191208164808217.png new file mode 100644 index 0000000000000000000000000000000000000000..36d86012834c4783b56d658e80b1927672b035ed GIT binary patch literal 35592 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

-多个事务必须读取到同一个数据行的快照,并且这个快照是距离现在最近的一个有效快照。但是也有例外,如果有一个事务正在修改该数据行,那么它可以读取事务本身所做的修改,而不用和其它事务的读取结果一致。 +INSERT、UPDATE、DELETE 操作会创建一个日志,并将事务版本号 TRX_ID 写入。DELETE 可以看成是一个特殊的 UPDATE,还会额外将 DEL 字段设置为 1。 -把没有对一个数据行做修改的事务称为 T,T 所要读取的数据行快照的创建版本号必须小于等于 T 的版本号,因为如果大于 T 的版本号,那么表示该数据行快照是其它事务的最新修改,因此不能去读取它。除此之外,T 所要读取的数据行快照的删除版本号必须是未定义或者大于 T 的版本号,因为如果小于等于 T 的版本号,那么表示该数据行快照是已经被删除的,不应该去读取它。 +## ReadView -### 2. INSERT +MVCC 维护了一个 ReadView 结构,主要包含了当前系统未提交的事务列表 TRX_IDs {TRX_ID_1, TRX_ID_2, ...},还有该列表的最小值 TRX_ID_MIN 和 TRX_ID_MAX。 -将当前系统版本号作为数据行快照的创建版本号。 +

-### 3. DELETE +在进行 SELECT 操作时,根据数据行快照的 TRX_ID 与 TRX_ID_MIN 和 TRX_ID_MAX 之间的关系,从而判断数据行快照是否可以使用: -将当前系统版本号作为数据行快照的删除版本号。 +- TRX_ID < TRX_ID_MIN,表示该数据行快照时在当前所有未提交事务之前进行更改的,因此可以使用。 -### 4. UPDATE +- TRX_ID > TRX_ID_MAX,表示该数据行快照是在事务启动之后被更改的,因此不可使用。 +- TRX_ID_MIN <= TRX_ID <= TRX_ID_MAX,需要根据隔离级别再进行判断: + - 提交读:如果 TRX_ID 在 TRX_IDs 列表中,表示该数据行快照对应的事务还未提交,则该快照不可使用。否则表示已经提交,可以使用。 + - 可重复读:都不可以使用。因为如果可以使用的话,那么其它事务也可以读到这个数据行快照并进行修改,那么当前事务再去读这个数据行得到的值就会发生改变,也就是出现了不可重复读问题。 -将当前系统版本号作为更新前的数据行快照的删除版本号,并将当前系统版本号作为更新后的数据行快照的创建版本号。可以理解为先执行 DELETE 后执行 INSERT。 +在数据行快照不可使用的情况下,需要沿着 Undo Log 的回滚指针 ROLL_PTR 找到下一个快照,再进行上面的判断。 ## 快照读与当前读 @@ -329,7 +314,7 @@ SELECT * FROM table ...; ### 2. 当前读 -MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要进行加锁操作,从而读取最新的数据。 +MVCC 其它会对数据库进行修改的操作(INSERT、UPDATE、DELETE)需要进行加锁操作,从而读取最新的数据。可以看到 MVCC 并不是完全不用加锁,而只是避免了 SELECT 的加锁操作。 ```sql INSERT; From 2f984f3bda3945371cfc0ab291e1992941695dd4 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sun, 8 Dec 2019 20:07:31 +0800 Subject: [PATCH 043/214] auto commit --- README.md | 2 +- docs/notes/Git.md | 8 ++++---- ...\271\350\261\241\346\200\235\346\203\263.md" | 4 ++-- notes/Git.md | 8 ++++---- notes/pics/image-20191208194906798.png | Bin 0 -> 59522 bytes notes/pics/image-20191208195354093.png | Bin 0 -> 64676 bytes notes/pics/image-20191208195715031.png | Bin 0 -> 36541 bytes notes/pics/image-20191208195718396.png | Bin 0 -> 36541 bytes notes/pics/image-20191208195941661.png | Bin 0 -> 64017 bytes notes/pics/image-20191208200014395.png | Bin 0 -> 34117 bytes notes/pics/image-20191208200543923.png | Bin 0 -> 31001 bytes notes/pics/image-20191208200656794.png | Bin 0 -> 60221 bytes ...\271\350\261\241\346\200\235\346\203\263.md" | 4 ++-- 13 files changed, 13 insertions(+), 13 deletions(-) create mode 100644 notes/pics/image-20191208194906798.png create mode 100644 notes/pics/image-20191208195354093.png create mode 100644 notes/pics/image-20191208195715031.png create mode 100644 notes/pics/image-20191208195718396.png create mode 100644 notes/pics/image-20191208195941661.png create mode 100644 notes/pics/image-20191208200014395.png create mode 100644 notes/pics/image-20191208200543923.png create mode 100644 notes/pics/image-20191208200656794.png diff --git a/README.md b/README.md index 6779a69e3f..86d247ae7d 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,8 @@ ## :art: 面向对象 -- [设计模式](https://github.com/CyC2018/CS-Notes/blob/master/notes/设计模式%20-%20目录.md) - [面向对象思想](https://github.com/CyC2018/CS-Notes/blob/master/notes/面向对象思想.md) +- [设计模式](https://github.com/CyC2018/CS-Notes/blob/master/notes/设计模式%20-%20目录.md) ## :floppy_disk: 数据库 diff --git a/docs/notes/Git.md b/docs/notes/Git.md index c0939994cc..dba55f674d 100644 --- a/docs/notes/Git.md +++ b/docs/notes/Git.md @@ -18,7 +18,7 @@ Git 属于分布式版本控制系统,而 SVN 属于集中式。 -

+

集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 @@ -40,21 +40,21 @@ Github 就是一个中心服务器。 Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 存储所有分支信息,使用一个 HEAD 指针指向当前分支。 -

+

- git add files 把文件的修改添加到暂存区 - git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了 - git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files - git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改 -

+

可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。 - git commit -a 直接把所有文件的修改添加到暂存区然后执行提交 - git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作 -

+

# 分支实现 diff --git "a/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" "b/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" index fff09bca4c..ae923bdbb3 100644 --- "a/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" +++ "b/docs/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" @@ -26,7 +26,7 @@ 优点: - 减少耦合:可以独立地开发、测试、优化、使用、理解和修改 -- 减轻维护的负担:可以更容易被程序员理解,并且在调试的时候可以不影响其他模块 +- 减轻维护的负担:可以更容易被理解,并且在调试的时候可以不影响其他模块 - 有效地调节性能:可以通过剖析来确定哪些模块影响了系统的性能 - 提高软件的可重用性 - 降低了构建大型系统的风险:即使整个系统不可用,但是这些独立的模块却有可能是可用的 @@ -247,7 +247,7 @@ School "1" - "n" Student 和关联关系不同的是,依赖关系是在运行过程中起作用的。A 类和 B 类是依赖关系主要有三种形式: - A 类是 B 类方法的局部变量; -- A 类是 B 类方法当中的一个参数; +- A 类是 B 类方法的参数; - A 类向 B 类发送消息,从而影响 B 类发生变化。

diff --git a/notes/Git.md b/notes/Git.md index c0939994cc..dba55f674d 100644 --- a/notes/Git.md +++ b/notes/Git.md @@ -18,7 +18,7 @@ Git 属于分布式版本控制系统,而 SVN 属于集中式。 -

+

集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 @@ -40,21 +40,21 @@ Github 就是一个中心服务器。 Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本库,History 存储所有分支信息,使用一个 HEAD 指针指向当前分支。 -

+

- git add files 把文件的修改添加到暂存区 - git commit 把暂存区的修改提交到当前分支,提交之后暂存区就被清空了 - git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files - git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改 -

+

可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。 - git commit -a 直接把所有文件的修改添加到暂存区然后执行提交 - git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作 -

+

# 分支实现 diff --git a/notes/pics/image-20191208194906798.png b/notes/pics/image-20191208194906798.png new file mode 100644 index 0000000000000000000000000000000000000000..cf9905305530cd27368fce5482793ac481a4e3f8 GIT binary patch literal 59522 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�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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208195715031.png b/notes/pics/image-20191208195715031.png new file mode 100644 index 0000000000000000000000000000000000000000..68f43ca2715eff687b8409af87161793f25350a1 GIT binary patch literal 36541 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208195718396.png b/notes/pics/image-20191208195718396.png new file mode 100644 index 0000000000000000000000000000000000000000..68f43ca2715eff687b8409af87161793f25350a1 GIT binary patch literal 36541 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208195941661.png b/notes/pics/image-20191208195941661.png new file mode 100644 index 0000000000000000000000000000000000000000..e949e9ac21ec51a4b0fdde3cb3368a4522bfa93c GIT binary patch literal 64017 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
From 1a8546e1f5401fc758035b25cf240f7519dbbd47 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Sun, 8 Dec 2019 20:32:43 +0800 Subject: [PATCH 044/214] auto commit --- docs/notes/Git.md | 10 +++++----- notes/Git.md | 10 +++++----- notes/pics/image-20191208201230411.png | Bin 0 -> 31763 bytes notes/pics/image-20191208201554687.png | Bin 0 -> 32308 bytes notes/pics/image-20191208201611499.png | Bin 0 -> 31618 bytes notes/pics/image-20191208201718073.png | Bin 0 -> 31318 bytes notes/pics/image-20191208201812357.png | Bin 0 -> 30358 bytes notes/pics/image-20191208202110976.png | Bin 0 -> 36344 bytes notes/pics/image-20191208202151457.png | Bin 0 -> 29923 bytes notes/pics/image-20191208202707905.png | Bin 0 -> 18495 bytes notes/pics/image-20191208202753553.png | Bin 0 -> 25843 bytes notes/pics/image-20191208202926584.png | Bin 0 -> 23948 bytes notes/pics/image-20191208203010540.png | Bin 0 -> 30479 bytes notes/pics/image-20191208203034705.png | Bin 0 -> 36964 bytes notes/pics/image-20191208203112400.png | Bin 0 -> 31792 bytes notes/pics/image-20191208203142527.png | Bin 0 -> 31824 bytes notes/pics/image-20191208203219927.png | Bin 0 -> 32796 bytes 17 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 notes/pics/image-20191208201230411.png create mode 100644 notes/pics/image-20191208201554687.png create mode 100644 notes/pics/image-20191208201611499.png create mode 100644 notes/pics/image-20191208201718073.png create mode 100644 notes/pics/image-20191208201812357.png create mode 100644 notes/pics/image-20191208202110976.png create mode 100644 notes/pics/image-20191208202151457.png create mode 100644 notes/pics/image-20191208202707905.png create mode 100644 notes/pics/image-20191208202753553.png create mode 100644 notes/pics/image-20191208202926584.png create mode 100644 notes/pics/image-20191208203010540.png create mode 100644 notes/pics/image-20191208203034705.png create mode 100644 notes/pics/image-20191208203112400.png create mode 100644 notes/pics/image-20191208203142527.png create mode 100644 notes/pics/image-20191208203219927.png diff --git a/docs/notes/Git.md b/docs/notes/Git.md index dba55f674d..5fd3435272 100644 --- a/docs/notes/Git.md +++ b/docs/notes/Git.md @@ -60,25 +60,25 @@ Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本 使用指针将每个提交连接成一条时间线,HEAD 指针指向当前分支指针。 -

+

新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支,表示新分支成为当前分支。 -

+

每次提交只会让当前分支指针向前移动,而其它分支指针不会移动。 -

+

合并分支也只需要改变指针即可。 -

+

# 冲突 当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。 -

+

Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。 diff --git a/notes/Git.md b/notes/Git.md index dba55f674d..5fd3435272 100644 --- a/notes/Git.md +++ b/notes/Git.md @@ -60,25 +60,25 @@ Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本 使用指针将每个提交连接成一条时间线,HEAD 指针指向当前分支指针。 -

+

新建分支是新建一个指针指向时间线的最后一个节点,并让 HEAD 指针指向新分支,表示新分支成为当前分支。 -

+

每次提交只会让当前分支指针向前移动,而其它分支指针不会移动。 -

+

合并分支也只需要改变指针即可。 -

+

# 冲突 当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。 -

+

Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。 diff --git a/notes/pics/image-20191208201230411.png b/notes/pics/image-20191208201230411.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d9a936f7522ee5674f4d8a4cab31f2b5db0b46 GIT binary patch literal 31763 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ℜ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 z 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 NO*LJ7fr?e|{{eCSUjzUE literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208201812357.png b/notes/pics/image-20191208201812357.png new file mode 100644 index 0000000000000000000000000000000000000000..f16da575ba6337b5c2b5550ef66b87d2fb62c331 GIT binary patch literal 30358 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

l zdK{_=BfS(w#5k<1)wCchvgt|DNRuo$aM1Vw79}IaT41prVzb}k@o_-UmRLva33t;T zMY8;HC*8UBU3{~L+QTBoLgyzp*d>va0IXog5Am@K@#zoyQX8h=O;`XT-)d}}KDai= zfi3HaZk-f;GKj7EsQQ-(gls@MB=uX_sDWDN%j>~P2&HaHiv5A4g!t>emDxsh=aYoc z5tdYmyvj-rnB8{Mql%6E^Ry=H_3)cF^Yb&;rsqhZh0O~nBqablz~-ZKB#2Q%AxKfq zcmD@abamc%?8fnb2cyN;*Y{zFJz^>FC~zyl7Yt�E*y59K79-;A}wv0;Ulpa>O)l zf5!D~kd`_gvk*XX^YW?*umTPwhx#4k5NtufjH@nV*}l1|=Z4`_le@16{*w&iYMFHV z1t0p1No45|wIfs&?F#>qW_sKv6joFOf7bLQEy%mZnq`g`f)W7Y7})FQK78^!F zr^;~b*<2xO(nZ;OUs$NW%#xIAt)oJ<-#Is$?Nk?t1O~r|p0CetEgzgCP0y7SqxQ&% zW#OaOdOCV0e3Cx9?qjr%mZy2zx{sWdR#IXiNPACyvmmQwi7w16WIbMK@FIn&nVAD1 zpwSkZ`{!=@_h4Gb#nZKsB_$3(AprWO0n+GRgoqY5&*A3vuOjlc3lEOVzfIkz-`INT zIg!-fqho3iN=isdI^ObR#-YYQA`PZe-}jhh|7o%i7x?JQmoI~#gA)a9U+LLhkZ#-wt7PdY|84|4=3lFd`cX2(Q*4JO^n#U8wLnWks!8*f-MP2Nd$hRyzl32 zJz#qR3x@{iWRp(_ z&ueI_$}_83p$uhs literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208202110976.png b/notes/pics/image-20191208202110976.png new file mode 100644 index 0000000000000000000000000000000000000000..1af266d5254a802478aa1ed32014cf0b44c6c3f8 GIT binary patch literal 36344 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 RCkBBYl@-*l6v$bG{9jEKMu7kT literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208202151457.png b/notes/pics/image-20191208202151457.png new file mode 100644 index 0000000000000000000000000000000000000000..c31e956c10dae73d1cf56add383d18683d98b63e GIT binary patch literal 29923 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 u?~^J^4SgQ^H~Z literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208202753553.png b/notes/pics/image-20191208202753553.png new file mode 100644 index 0000000000000000000000000000000000000000..332fb56204fe730098cc2877feb6d3ac9941991f GIT binary patch literal 25843 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 y2GSz+C$^q6odew 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�qoS9Psif^7pn4@1WQGX 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208203034705.png b/notes/pics/image-20191208203034705.png new file mode 100644 index 0000000000000000000000000000000000000000..d679257fe973bd88763a5b30f17d355a01a75eda GIT binary patch literal 36964 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 literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208200014395.png b/notes/pics/image-20191208200014395.png new file mode 100644 index 0000000000000000000000000000000000000000..7c34ae425b82565b5d64f9f835c4b082cb452973 GIT binary patch literal 34117 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 OsjKQ-DZFfR|Gxmf(*7L) literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208200543923.png b/notes/pics/image-20191208200543923.png new file mode 100644 index 0000000000000000000000000000000000000000..d3ec329ec83f9b78020ac829643f8f4fdcbac476 GIT binary patch literal 31001 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 literal 0 HcmV?d00001 diff --git "a/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" "b/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" index fff09bca4c..ae923bdbb3 100644 --- "a/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" +++ "b/notes/\351\235\242\345\220\221\345\257\271\350\261\241\346\200\235\346\203\263.md" @@ -26,7 +26,7 @@ 优点: - 减少耦合:可以独立地开发、测试、优化、使用、理解和修改 -- 减轻维护的负担:可以更容易被程序员理解,并且在调试的时候可以不影响其他模块 +- 减轻维护的负担:可以更容易被理解,并且在调试的时候可以不影响其他模块 - 有效地调节性能:可以通过剖析来确定哪些模块影响了系统的性能 - 提高软件的可重用性 - 降低了构建大型系统的风险:即使整个系统不可用,但是这些独立的模块却有可能是可用的 @@ -247,7 +247,7 @@ School "1" - "n" Student 和关联关系不同的是,依赖关系是在运行过程中起作用的。A 类和 B 类是依赖关系主要有三种形式: - A 类是 B 类方法的局部变量; -- A 类是 B 类方法当中的一个参数; +- A 类是 B 类方法的参数; - A 类向 B 类发送消息,从而影响 B 类发生变化。

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̕lXQ>^t&^mo{_vS?-2MsF-4J&58G^OQQ zJY55AT{wE&iFDQqzaUacf)SS@oT^xjaUTOon}q=U2mZwTas$*sO4G(kzrfBJkxDR` zIdJ~DU^7FC(RVs9em%H8kUKtt4hL)lFs>}oNa0z+&_Gf>*7RX&tZ3@gw=fVA1v+h; z*Pynq%d3e_XBw1RW_%<9zcMv8r5Ovyj9vBWRZ@D27{eFeXKfn}na$a7I(Z81 z>ldQ2KS+DO4{ud8RQiLfZ6^m`Mqvc<@iJVpv!lU{UO34q${Sc1zyJdV4jF*j&liN^ zE{d3QbMu&sa6$iy&nWFTM984%A!63HU zZiu?LaQYk_WoToH2zD)tLbz6g0vT3CRf0B7gdZOc9!9X0ypqYt+6ixcIL*Mo216?o zA`=VV0*w4x1!3$75AZj7K0+i4W(Bbwobog{&-lrSJI}(N{dixnc8d*f{O%?An|VW& zU%SXpfi!D8!dwfglzx4C1DH4*91Ts~V5Wg`%@X9=S{qb4M;$3gFVb}*qomX{NfFgd zjS_IzJ1Qu^Vi%~O1ea!K7oq;5>_Gn?Nu*H@Y_g}){pc{uWNK#0CdeDE!GxGH7_6^O z;OQ-dTZH#?Ze)-OKcd~Ts(r`dKx?*~xRVVUA$f8)`|2+Rd699>YQz9@^q`ec721y*7q!dRcXo_%tW33Z6nDDswvp_%<44aZaM{y9E;L6P`^oGvIUeYqThB&+(O2 z@nj<+lG2hzSrWy5Hj`%Bfg_*|O`j*@@xUe8ckF~Kv<#|dbswx8-V~RWJndfuDr%@i zw$ho~Pi+?c5T5}#-pJV;dSQ_yY72*R@{nw6h(yylDW z&!t>git@{(4D2wNvE~kqg$JtFZyYnc0hYj^W)>`+f63Ek1sk;OJ;4kSD0~+c79i*Q zfh5Gr(5%^4SJx)^N2)Lc#c!B^BPp)Ux@c(VnP(F(K}mexyv}Z8MN@TPf<6?eJg$U! zaxhrD&jMcI@i{NH8!%vIxB`LV0NuT|Ehz-sHS(IxxAxLmIu;&4Pq29PvzkE6jK?fo zy#)W24wXhQ`jMSmFe)b}2M3iKJnjAh$(GX+mZ#xt<&77mfI{G5f+Ang0)@Cf5RGJtEf^2Vf`Thp{6W)=bH%pnS8X;DiyvV80H@ z$sqdh@;;6(`DS*o_^Qej0}d7u3xj<9JUXTCsK>Nf>dIbFM@23gO{uG6MR&73>^}$Q zk^}>3N=+RrQhddZ2WkTb*6ax!bKv^^SD9n1SVF|9VC2UOPyaMt%z^DoE)*T-OoGrv zAe;&YfFZ9K>C2dni&2gYLB{+TT_Ol;($2DpH`Ag0*#04yjD z#8^01s$HBrdJc4-^6;P>AYtRo4fLxa z4L}EG7sLVAa4;GrQ}5`@Kd@qeTdwPci|Fwm2U@#u6>rrPMIWw&ix5jAGPtEo zj~h-IZXnEvt51kXqxScyUQlaPGKPZi`|QT>Rlht4W`@!PBBpgcN+ul7%F%Rs!Qz2| zi_xGHIe3egfWlt$;3x!wk}e}Iq5_owu*t&6ttTQk@m7YvCFSs8V$ zJXfiyB8PzpA{)w3PH1q(LU^A2yEGuoJM$%-}rfIm4!1>kbe&o8q8 z3IK!Txh)rGf+S;U`tS!b6SCRLQ$ z0WdE6iP~_z+r|QlC@ZU^6(DkcbYp&S20KkeRCCGxXe9o$z+#xZR0H7y; zw73%kXk?CEn*o>5ZBLH^gvdV=3bfc^*6QS*+z?g&Uuhi;Qz};DA;ACxumKd2o-QUb5r{`5UMZ8Px1>!Q2hS%2Ap$Q0fTD+)Dm6b z`GQehP4PvVB7HbfA>XA?)UH7rykKZ;g3vDx%P1>*e0z`V;wU^jHuG-UDT#QJ1Z;DI zHVeEMWw8xspUUe(K^htV`Msb)8&(7ifP@b&I`+;e>#?%HqT#w|%wo$W1)n_DxtPgY zXItR-(XIA3V8KGT87U!nnaa0&m)7TBA7!Ml88cWE<}nvq@rUGOY;diF-^Z z_dBi(G}KzwxRBY>hri^$MC+UhgkmO`xFz<*55=Y+dB8)U@INg648r#h8~*1oy!ddI z3IlMhz>Cw!aO;(kcbQc^M+|^5tsNmRA2bD@D0rxRxI7WHw1%Qg} z$B$KRKYq~XPw(Zc74hs`v8NBlz#P}sDwR!_kye0$?^N`j9D0TjZ7!EDT^^O1;-I=zM!ZFW53E4NBq=pfA~Ma{H%_VG%iEK5}t;N7-r zrk`mcC+1(5tER=UdjTk;yBDNgXUA0yT5oV$ISCCzmr2OPe++RWS--m@ac+&49S)#C zPEw%d;o}qgsog=JsLYZ`j{D=k2E+_FZmW3!)HN0zx~QYp2T@cqwmmgU4wL??U3wOfr-}N2sD|Wo4$8nW$ z4e)~L69=T@XoM;=_uTCC=Z|aa*js+K8FPrpDC?^;lt*xtsTU*%FRGy`6Rr&$wHooJ z8nUOaYm8?QVBRDqCL(u2?PK-pCjCt`fr%g3zKt5aXL{P3oIA! z?JfNq3~?F%Qi~Z2?z3AG($(W(A$vg*SO^F+fr3^|iW<2PG~_N`>3QBi#0F|LN2M<6 zz_&!7twIMVd@bg|3i=%xv8Pz;=B>M39Zp03i?Lp@%i+|xlZF>kA^Y35w5EY!N2l*` zyPJ^DVTgHc5J?+KJ6Y7g{KZ%ru#uVbLAe$w{SiCHu$eOnR4A}uLp0@rk=1pN+)WP3 zbwkME*}|<~zJC4HY6+*atw;eWym0OM7@8e{DsB*JGRh3F9?&@ewj#1A_u{K#X>?Mk z+9S)Qal85H-^LDNK`W4nb?^T$zJmmKlgIVLLox~(i1_$s_8eDuFn%1#DHf~O6-r!Z z(*G)nV+%IOXs$zo@a$f&u{MZLO^-N{HkROny~=)9vgARH@?RD#O{PFaH0Pa2&AWC( z!H}a{!syM-kjokI z951hwKat4M;eaJZbMq@Sna_VSl>LYQzgt{oPl8lJz{*Ax$(Az6mZGqFE66n9PcL)5 zu^|hbMQ5kjge8|FZ|Y#r*A)Kg?%S)QGYT#SXf!vi6ZUny`uodxM+$~ z!q>oSLmf^fH{frOEFA}LPeLv89=VTvcjKMKt9C4w#2fgx36xqTb`GAOBhEhMORyQv zU1Bye02Z^Z2BFvK%mYu#3UHQ811V!8H5VrdA+fSAfVwxVQ$!gd_ray6rzUBTzbcsA z6S|vqYJ10xw!eS4nW9&T7Rw~o(kpP()N*utRYvmSA6m0v)hs%~^ZpOsWCr}dwe>{__UfOlZOjkqS3u!|EX$qS4-PkUA(;tT_;3BLb^WfB?tOsyWAqttm`vD zcWn{7^7}VDxsbPb>vBl0#kOe!ajt!vvGn01d^~L+(O~E9o_xhh zarC{M2^FX_IGCC1R-(-jPW9K;CwLLa@>PWf698$xp08vY7kgTlS|qYZf2s?gLNya8 zWw3w9z-DfDx%PR8VE&gNOzSct+nhE@@0F4wL_;KuluR1lN-1CSz?BfmdFQv+U|y?b z&Yi+0A2*KuNcTT?wel7Ao|LTaebC>q8x$Mc{@ZjUH1wh3-}hmS3QhUIT+LV(QDz;# Re`;1FBcUK(Dyr}Qe*mkQYrFse literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191208171445674.png b/notes/pics/image-20191208171445674.png new file mode 100644 index 0000000000000000000000000000000000000000..e1ad39a85d0f053481ba8531188276b0a17c94ff GIT binary patch literal 28130 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 ME*R>RoWB
- -## 版本号 - -- 系统版本号:是一个递增的数字,每开始一个新的事务,系统版本号就会自动递增。 -- 事务版本号:事务开始时的系统版本号。 - -## 隐藏的列 - -MVCC 在每个数据行后面都保存着两个隐藏的列,用来存储两个版本号: - -- 创建版本号:指示创建一个数据行的快照时的系统版本号; -- 删除版本号:如果该快照的删除版本号未定义或删除版本号大于当前事务版本号表示该快照有效。 - -## 实现过程 - -以下实现过程针对可重复读隔离级别。 - -因为数据行快照的创建版本号是创建数据行快照时的系统版本号,系统版本号随着创建事务而递增,所以新开始一个事务时,这个事务的系统版本号比之前的系统版本号都大,也就是比当前所有数据行快照的创建版本号都大。 +因为没有使用 `START TRANSACTION` 将上面的操作当成一个事务来执行,根据 MySQL 的 AUTOCOMMIT 机制,每个操作都会被当成一个事务来执行,所以上面的操作总共涉及到三个事务。快照中除了记录事务版本号 TRX_ID 和操作之外,还记录了一个 bit 的 DEL 字段,用于标记是否被删除。 -### 1. SELECT +

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 Y};GV$-r=)1e4RE8U=o{3NBjq`Ny60cnX1(n>ed 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�!6 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�VC84=l#vO&GHh!OR#ZC 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 Lbg`?k@#X#>{g{Tb literal 0 HcmV?d00001 diff --git "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index 7b84e8972c..8531af9793 100644 --- "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -47,7 +47,7 @@ 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 -

1JF^PD%cA6P;ZB>H$*(> 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 OexQdl)+*Jo5BeXG?tf_j literal 0 HcmV?d00001 diff --git a/notes/pics/image-20191207210802815.png b/notes/pics/image-20191207210802815.png new file mode 100644 index 0000000000000000000000000000000000000000..873bf35b587428c8b4802a787d1019ab22ada9e4 GIT binary patch literal 47616 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 Y0lVHq)$ literal 0 HcmV?d00001 diff --git "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" index b26cec88e7..e2b89c75e5 100644 --- "a/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" +++ "b/notes/\346\225\260\346\215\256\345\272\223\347\263\273\347\273\237\345\216\237\347\220\206.md" @@ -78,9 +78,9 @@ - 只有满足一致性,事务的执行结果才是正确的。 - 在无并发的情况下,事务串行执行,隔离性一定能够满足。此时只要能满足原子性,就一定能满足一致性。 - 在并发的情况下,多个事务并行执行,事务不仅要满足原子性,还需要满足隔离性,才能满足一致性。 -- 事务满足持久化是为了能应对数据库崩溃的情况。 +- 事务满足持久化是为了能应对系统崩溃的情况。 -

$agZCO%Pd znJ`$<-<^MAyluVxyjOa6o(lia@5Z8?R1VPC3>I5I+qFOy1~Kthi&yzWIS)75aO4HD ztIYwLN02=g^!|@zkB+Ssdt%sBS#jP)Io@m5GYTe8q&Fr{PgnF@wM{8>%z8cA>Z|L_ z_|6_XBco_Do~Ui4k^BVtwh^Vu`K=E*{CZ+aBk~>*K($^i+5L6BWxux|qoSAz4bh2e9`x4fHCYH8(2kcoNSN2pBstO0rJj&gV zXM+MIE4P5i2?h(mI*Y=>XGnw4I9J~*ryliE1hJN1msWi>r!rPrDwmE+Pf=xr8PUB5 z7%Ut4oIn&>5MXGVQBIEtmlquU&VO*fsBP^rd#YM?eLWqdJIe170U0$+`M{J9N|QU* z9(Szn!A5A|;X!FyMg!{`GNNUT+XNu7y)A>%^xuA&ow*2#Xn?rdPq{<;2V8I(=Kb=9 zF61D&Hsa&rpx_PdLPGr2Lr^aSTNWIW$-+Ql$2ic)oazJn>c{(~ji~OfwZ}ah+8h)w z96@>g!?@Evh~%cAj@SSE`2-P$$#-`|E0m0PP!Ydl@-sU#dm}L86!b)bI|ka`s$uXi3u1_$AUmh$cJgX zM3(L{`6$K3Y5Xl^nO(wceC@QK`F=O{kNu%X64bog3WGi>;+--ZXmK=}@4G{R>qL{! zT_#06P~=o{b#(>eOaXcqokLSLR#v{=Fjz8zbQ)wxf4}JoQTi9R*szFdMoIsfZjp6O zcWpTq16ez2VmEMeKni7h%B~K`(7!;C4C;n$E8A=<-&R-a%P7lDh~pRqHJ0MIFLKL}yMBNJ$g#qb@-zl4N5->|rjW`K^^ ze`D1Z!bvph9#3kYeY5NfR59YQx33=O$1f8@usR@#Of(L$=|h+pUejn&kx2Wphg{icPxVzX#&2kn z&P>v;y2Xs(t~u`O6@QS6S9ebuAxM2RT?%rFR^~Hbs7av!2%eM=HX?f!;LBrI(*dEI z`@l`YcrA%!sfUlY`RJP3u&5iOAI4Cy-^V9gQbg3ebSS1zt)Z0>IF)w~2sG5qXO6-Z zrBQmP>DdRj>*AUbz~e!dEh1-lxG%FP4&^wZv(>?@MUnOSLo}WnUD}3*7h;vLiiV>= z$J_#zXSB>`bHVP}0n2BqEMzxD=oAHML%5>y3ksg41jk=;&sSW(G7d zH7)x7$2<95Pn}Qzh23&_LvKOmW5yE-$M_uPC1CY{0Dhee%%V|KAL7=If{2}tdNr-2 zx*9Sd*NHa0I78H6_xf+Zi1i#q1H*~ig?Fizr__Wqw4ZJen*(MB`v$GEK6vyuP~NXp zOTv`$@bqr}Z~OF!e~+iTBh-acZ6p&$Nfxj4-1~#~ln(48ZBxyBt0}JbS}yNOue}}w zdWTn9R#}Jw8%AGnK^WX*Cq&9H-x;h^)Hs2nIObGSJY(y>58OmZ(L%N9?=_h2Pw0#R z905TO_c%z$HQu5OY(#x?s5Z3te&pBy%qic!n*h6jf=U0@^74aS6sqUYzeRSDj)n0R z3|1EKh8B;%;A3N^q^BoN)2k#voUmQ0R10;TKqvakkd~3b&lB~5mnL#tfVQ$; z!HKzoscH}yDdO?}3*tgV^wUeDHOSI(*s zK~p>gR7~-C`6$D(Q5psdC@7APjEu~7AXg-Ztaq=EOS!)h+M82wynyyMplS?-mX&*A~#81lxub+}AEGc{NcAhUVfdH{NH2vu$_D>pudd>SZ zXJMS`nR7z^olOK+ULpqU`Q%94w$T+S>AM*3e0U$kDj~Qzem&%{EHC!I<4{tQzqmz8 zYT^BX^y%Qzgro>!L+ix!`inZl3BOYjF(y9?L(@4UmZ)s0$uliV^*)jD}7+z%gEC(lBDQ ze4FK~VI`7%+-iXc%v;p`DBF-Q?8;3|(C*{9h1)~b?+sowzJ{hPBaNpwezwunz;0X= z?!pXx9qL}0UH&TjzH<1ZxGTBgO?kiGvbY@0iW?I5Vq`%y_r_G0*Tz5MRapQsCyDpS zFrJ!lLP5LtC;J_hP^Dn>kdi0zoVgR#N|nErrohREbwUQr(@j+}#e4!aVO_`SF}Hm# z>{}s5InPq;IBtX6A7e+kUX%&*3nx+aW_Oy)OfdyEzG9r)i)`|`MSWKAI<~a97N4>) z@vhuBb6Fy|=;4`-v>~~(Yc8wv<(+SFyEf@9ll`vvx9#;y(#JXS`2XIMZ`+iyy+_h# z37Glro(JCK+~_m{pJcTXVaXTl5+r_3H3bmT%C*SADIIxFobS?Sg5y%qt1p_;=+3*E zGGZ@xyxugJm`LLp{~jwGx!L=y%iF(NY3E-2*|y5&{i8tct(NLCTg1|rqrT~**v2MQ zz)6`+Q!QmAORCz$>Iy!y*i>|N? zcVIEI9b9olE8uj4QyCZpptk}QuFM7kEf9GUCpVPejo*Q&Y@(TF<)dr{Nt)==@9nR^}hsNn| z-x54cOAN{$tNeGLaZt)0iLQy7*WZ(y;@-_Xyg3_X&w7Him}u}YopN<{?pvY3LEr{k zRQH?>GMf>)fK*ihC@syn|3zVPTPL4Xr#e?#n4&f8MPUJAabPFxPl)&CSiBa|K|taY2#X;C0j6dkTJOP|s`P*)*SQ!(<$vaZRgBt(Cn!J~STd`2PLXHyi1_DkDA+ zW{2v%grQ>JW+2__7Z-X!Ye*=XJi>!qQZuy8>>)m0ypyZ*6rO$tbqJl0e6b+0h_gY1 zk4+Y<^mb_3Tqre5N18zq)nj%-0csRbum)VZc2FG01iuvlTv6zdeM?>*3qr37rt|y) z`gJ7r%*z4KNLTkFs1O141_UHBB3wuz=x~!n-6sxWxmh-v)7Z#hP~?eRO-oCQu8*tO zJ3jq0`M}K>%vwsW6Uxw7H$t^eiYZ~eRS zEgnMu21(b#YjkCY-lbRdiR{>VU6hR5`BY@xljN*YWfT45cGMv*1>yqP;iDuJRyQ*z zf9n6Z0PJ$u+zAQzs`dWD&Tb@u!SrO+Gux-lr&w6~Uo`!L+^!SdBFlO}*Swurc9rlQ z1PKqJ|6g}S3>u3EO@#gJu+=p{lQ=N1%lWfllVtwj4X(yGs2|ha19bYoSZ< z1CnLRq}f8LME;=jGYkJB!#=A7d#Nd7C`fx|`s(j)nRO{V;fC}Bq^<7PJ;H%9IB+lE zZFKTS8$b*Y4-uMW@!u3~lLgaS7b zqSc<#JT3w_Yi^rAre$OlMPvH(7HJYVil(^7t-{-wQr`#9ja~nEGxhqQ^y6 zTu3Mg`ji;&yPRL#iNRdMBR(ZHwe8aNUXDk3Wz9{|EkN?ern zHltU$x!cg46rfz|jcfoDbVE5MRv!Xmv-#qEMQLb5xTMh`CY|krwkU96D83Mc!XJAP$aodh zUPZ25!4Hxl`nmQvr?}Y3FyfXmx(V1~VXh8$BXpL)fihCrc(l$@k?AVBrJSn(t|=@C z^l422eqCbH)zN9k7(cf^dLm9hCCHXE1*$Y!dJcH4SP0Mtk4B4m_b`b|NJKFo&EP?C z9a!J}O4&nU$guPKOhB>Lo;z0Z@y^O5iA|(}2WyUZy`CEUUhOGpMuv zr<)BLfA)O5_9GOO=I7I+71+>e&)qp_fa41jlJ7bq9esZh24_{)_QW!We}u6yL865# z3MLWY%oDFOj6v7Bc9rSO&1*VSO+XSuzS9?)mL6!i>+3_VbW2qB6q-8NqRahYk2ote zo74s_DI}cUaz*(=7hg8&=;f}rTKJj%2g?UtQE{=r&Mfadg=p=DaSOT5vq)v}^ym(9CYMhYDfc$)0cQ-zSbs+gt zeka=p67c}gL8J=}b|j&3V&9~59K&2Qoh%EA2grS4JJ-c)0oN(lojC+44 zkVtJ9KX9ztt%YXc)hSt7%~f0&Xvk4L|Oj8aA8| zD~K65cPqNupXJ4E7V79(5cm4((>(0Zi5BGb>x2~1WHyM+$e#WixF#cG`bQ_i1KeCl zQj$!0Eiy_$vnsSlQOA>NAAQD=cp_q$gq)l#!Bd8p2ff+pn@s}(WYIa;72Y@4w_2f- zUl4FGj<10oJ*&?~m%}f6NNhkCIL2wnE&>Ooe3mXEq9z+HQj0F}*zUg&6qv-wm;azp zNyYF&uYqulW#ub_KbT8NI#f92|E>dRBgTZW>rZd7|1@;GiiFyaBk1sS0~9L^KJi4_ zpCy}?;vVm<=mYk)(giwEz<`1~gE?Jnz*{kX6>h987;g*OEXb2#+rP#I)&UF^J#^`S zPNF>-%<)}Y(1m1U3BXBcvN{MfnH=QDS#P+@pflG5mej6Q<#0@JJY(y+yosQ3uVQh` zx{YKx7D7|kjbvNQ+icKF*p*F<>cEo$c=vcE$o}sag$#PpeJM`3DErME* z_LJj7R+VpIWy@Pnfm$33K^62OW`-Q6RQs$Ty8pH>ylijD8J%n{xgilh&!nq8AKhj# zp~M$T%0aheaBwgX_%oKUlM>~@MBVOSJ`og%_|g1?p2=^W{NCCKn}MQ-x}PKCit(!3 z{C$C`f5Q*0g$?ryqtG+q6B@oOea`j+4ak!t8M$eRezidB5I`h$-Ql%?(s7r%2@uw^ zA$SB7AGD0GqD7k*h?UL0nhQb`Bdn*;j~#8=(d&$snR!&6n?;<+&)=U3UAPG@O)wW* zeGXceu@ffq?i_m9Uf415SSl*;u1?f4=IZC}_r;sZTk~V;>uHb55YOrAnT3dE`|2S4Iv4!EFN6n@ZB#IXLBipl~fN~K9+CEj#-{pZjhf4QFRQbbp+*(%1<5N~jb$8aO?Q_XmKQ30J#nUjO^6xp7zj3$mxO zEjPtph7K%t00w^1chz{B=kWuDsxxt;diJ&H7G_`qeL`0(gFMqr{K-;0yoC=d?r<}J zsRFDFgnpv1_5fmj;wr#L$^qAbxtLvDO$CY=ia>2@TOSL zg8D+FLQvWrGI)b`hD5lcDl9*E@LE?IBFv*1$tQ&Yx7th&_?LXJb@$|t7Zk}+m9u5< z`Ruir4TZmEhH|}tgS-Hv-;iE@aqkZ%SY?+m7W`V#2+T*Ul<3!&?7NFpK3H2=Qzyz^ zimTcn^x69fJ=edcE#Fq?L?}Y~-H-?|=sX`h91`mve=B)c-lxg`5ae|gfnShx#(IREuO5)I{6YeRo0rLl zA0>*V5%zODP<`@KCbKL8_)|LP-ay1{nn;D+pCmL-Fmff+I{en`o-PlFkyD*%Mu3O^ z?Mp@RG&IkHLna$@Wjms>Da$F?j8^`-$fCDb4;pA=3R}lS>N1JBSQ=VLEV@$%3?GE7 z=h@|KQJB+RFw`+%X+Bw&TPDk|LMy5ubcOfZa3-F|+;AEcnr;9e@y)NiWiya5>EsV~ zX$L+U6y9t?E#M5e{X)PY$RpV>Q(Vkrsb6KP z${E~xli8O>Cism8*4ZZC0h>zm;X3alPxPHKoh(YhxMX9ZyBvaptSIYp-Hp~cUaE~{ zg@hwjE&m5HG~Mh#{yIp_?+!fY}u>O6-a(a1QD3ih&kNwm$HtnUZ2QT zc;zqCV7x5!x#Eh_`GlTE>(b|AQ#u4aUZ?pT!KkY)J>C?nZmswr!IQ2rx4$*#y^oF; zYyYEqud1o3E!9qndcy2+p;5M}_V;mcAb{zmSR4jB_f-4Y^t8XAK12qNGXfM9te>DS z&!{HW;4hih*S>+Wa&ak*KxbzsCD9fK$h9vcz;nQpOe~E0G{-a{O=D&WYL{bCYWGMP0mV7;D0bn(JYDjWl=8?pI` z3z6l}<)Zg^-Ds;^_%6TY!6T6QFg1!xVvmR1?C74iJ9{wg4L<^lghpP!lLBQy$K%_JfoBCYm3M~N#2P00=FAhXmUkQu^)pI=mUTf{K`%0RpeoaADT#iD3FX_{VqL z-mLdYJkr{p1hbt??zgM0M3)QTxezd6$*bk8Xd~bS8-7Igl&1B5e zKF^xz^QtAiRTS2?lY2i;cq#Vb?OSi>NeM;ui=vqRd?PNj*_ z?U!*9iBPzff_nNS6)!^w#aEOVQFC7NqF|izzVP`_L1U}R7u%in0nV3RiyS%R3COBn zqU=Mu5eIpDR?$N^uDU&ZrAM#-eR-&6){H>d`|V!~(@wKDH%EYIZYRIh&^z5rzMCuD z*qoqOtUmNS;xntA4M+BcH+~KD;~sx;?|$K~di|j42~mLp|Lv_;K7-%KpRP`Sa(=Gy z{@M@mngvudHQaJK$`uc>8}Qh3m~5>(nJK96K}VvdH;9PlWRl`7K0JsO?qQnVn?Wnm zJ-Kl{IgRgG^5@sKP*ITLy3LNZbW7G6{Y*>fYkjh{(>TnUs=$yOfLf(;d>+GD#o$FL z=DPgaA!&#k`@lzgyzXKGGDMFf+pNplj;z`c-9n0ph^TdS?-zKhA6MlIZgWMEno5Uu z-&c@b+`aC$pDO=BqWHGLMRCt#`|DvZrtb5Wa78UiePFaLx-_mveZ|b5`B}kC)PTCe z#r?gOQ`_->+pmQfj)TK3MEG1QOE&VA{fwQbR?TF5aH5J^okXohXVV3ZOGEpQGtCs; z9RAu){c;xlAsKeZj=#+3@)h#Q^z%hWrDEwqEuS|Pn$UMsBX4hKC|Q8Tt(qpIUg=eJ z&GffXB9dKp>dnP;U7Jgn3{AIgByba|^G!@$Bt2lIQ`btaI?b<$Dadf&G?9qk{=0Tt zaS@CW7Yh>+%Ow(djojU?D{}5Bj7;4PrIp!qoRW*(6EUEYaU5U<1A^A`fc{z{#Up*` z#+2LPo3O54^mRWM9yM4{BUb-4eEO7lN>!jS@iOhwrI5n>=fZWFoz_<)#ZRYeldI#I zq#nx_rWNh<|5JL8etidpm(knm^@BsRz>ajnn|%htbhVIh zBluoDBB!r6BWA;!AtX*$Yi8^vx|#+h)P7plI0?7p{ESVe3QHo}xDlZpT-p>C?)P5s zk$Lmw^6-57QpH4@TC&hMV9uS^QF!`;;i<3eU&hJcX7}Td+bRMG^R6}xk3V0I|IKG^ z<{a+l)eR8d)U{(@m#i=j@OR^h7;?=BeUoTW^ICgY%PS{7JYwDLd|!xC(514b*s>|g zptig5Wto!5matL1Wbl=vg*KZ=_^12pck+;yp_TQx*-xEcS{tj(QmGYmOZg`EW7WFZ zwC~OnrqDAg?e$OgtY5^&unot01eCkyLl0s+0~-H4e2cUQQ3~JbuV$3SecALcY1m5u zxab{F47oQ4>MFkgXn6|q#+#cRq^?F>@SGIozbmM(-6*=*&uRYT$8!~%q>}sJM2NrK zdo;fHd$s*t_kC=;DXBCXg~Z`kzq)CdzY;n!FaayFAwYhEl>y&sNoU>eJIp{-u!)vF z6?*1w*<-?_tmk-R=sO+V20Y#mV|+b9qLt47>J{d8lJ8ZRLYymK|AUvyTR8HqXk} z^3(ET!BqFQdrmT8J9*wLb~X_S5y$cC@`mc;#AYue)}77=yGF2bDD=I&@^-)a-kYHg zu1ek~rw+o|ffG&zTbctbX&?WFPMaFUMLA2dM*K4i6OO#@E1kI-{2fO-gp2RgE{DhN zg*qqerC32D=L4^oeR11y8t-z*BXHS&_kJ}?SpMq;t+jVRDII_rw1(Cebm*O(X$wY+ zIRWe91y7^seN&phOq0Pd9iA2D=R22lzRhC}bR7$CwML*A$BA>i{2J8x;YIL2F++Bg z{*`v#H1I+`DP_JjeN{v~c--N0#{ko_+La%6bs}Ts62+@i>H;tO*(%#(@)CpUEu)kv z@NwD^h=v}LCk6DW9@HJl;d_85A6>*aS~+dJze!h^{VQkMFDBj}buGr0o#{9@hpWWY z*hi3j((pf{5ZPxOR=U`XsXip=y&xab<-TKI_;_8(W|6DEnKW= ze|eUOB(&k*_2g5KU(fVuj$S0s_$X#RW?qxEH6#BaIZ>eDWOqKJk@0v!)bqnf=^my$ zG_)9sU=8pLXUQrq!QxC~3}${as3}=gXi+1XRmhXw%x$gvC3N5|Wlh4-%@Fy1*No9s zMaVtl;wGIEU4E&8);R$BZ6mnlm#HrAH_3Y84n80KtpC#}8Y_MyoGX${k^CphRlb|K zUAaXv)`^qQHIXJf^9D9ze}8W%B`w2vOO&owoP{n9EWsa%s*CQzP;5Hse*4N$3d8Gm zEKSAmr`JCpe8%`~a7g@y`O{#h#XAaazu}=8KSr-x-%GS~)}Q4a{n%*m5Q<$! zUIM2+7#X;-;6R&n)Qr-^CNr~9Zcxl*IHi0kuZsx$kwiCfx_@G<ZnrwFE=qtflSd)@dcO3p$<39v++L>ct^AcGn4vdFQR&_e$Szj z)5XUbmwXotQ;2YTiAgP2+U-Vv>|kT)OV$(MYL8oEK07fzz9&MfHHExjp+Y~yrl0ge zorA>`-kLTilX7q7&l`7yQngw(SpL{hX;oa>We$)h%~7R$ZNTtRLwpepsDNzZu|9L< zSaa=1ofU(Nm&px$_?LuIO8t(X6X{H;vgV9O>?asVt58~08}I%UuK+gzQAee?sJX|I z-dobGYmHM_JTu{w$@-F~k-Sw^jr!usj}`NZl-;C;+_gZ2mg(KN?H`Yh*1O8s)9R={ zPUM&L+Y8NX3WsayXzOfNul`uwMPdIoFv58sq&36?hyRtW5Z~B2+&uMfd@sn;^zO1y zQ~!X~<)~uw{p|=DM+YzkSkl3Wz=OXMfBf^&)v8JosbP~g%8Dj8^z=J>QHzr+-pDIEJs(|0d}D{j|zCXNOz*&n{^qW;R-a^sG%~ACG=- z(>BoFEPq`nr>h^KWYzY8M@TwSjSV$F_Q$RL&%|rvYO`kFOJ}t)5TDW#{X11~0UHaw zyVHXPq(PC;)N4Lbw5cD9R4UNbca9!sL(+YL$p3iNj6JpS;p(u%Uh$&D9X=Co{ku=* zF5RlVBb1~dru$LUnXlr~rAgN(9kS$z=f+>Ym)A08JR+@+52#;f+;h^Pm-zcTLsmG6 z&_Gc;r2YeaF4%@CfeAeIA%gx+BR%w(iY-)^nQR#J$Nb1w%9BRaD~Umq)YyfGu*VhF?= z07FKgONoY-dm9449sFWlVNU-O6x>ISBp|cY2AI9Ro02XxMSqR;?%6Yp-oC!cT~7lc z5fP6$yh+SRdj=X!v!J25n^Flk-FQ-JRc{N?Z3ku2Yg18WX6#d19nT%qg*oqyJ=%>=1%j4Png0Hcx5F#_`4{!K+`Hl>9B7L zHTq@bqzA~+V~JO43r3C^eWlZ`0({C{R+@7w4X*PBkqn1sf@U-|h&slj&$7~3H~iLm ztUCWP;u!ye#jfTeDO4}6e^J+3TUD< zyv0GO2;RzV>pM`jT z^RS6v4BaYy$Gz!$Q+2I+WG%i0n_BK{^^)h5eVzn0wy^T`_&xnQqjwb9(ShOXitU+c zCmtOA{z-v6UE0+X+JrVlnVCx2Z}AFCJT0-Y4VY&0l}MyKkRji^I0EgDfp zFL`UGL$PLqD&I`xmWrClroDLhx1`dGH@o!8B@S>|sT&0@-T9@8s=o1HzIs02)oiNp zY29HI)8iY`Bw+9Exav0OuLt;^MqzcjK7P{tGq1(4GY6p>r&U`!@@s#3Yx{kVXvcXkb@T?#@OAp3y2fSJyrJhVTRf>H-B4IN z+r74(+-G}DHZv`iD!z-g=ijX?s003KvR|o|tFw7X82)H<2dZ+5KUkSV#%f|>qGFW) zx6&TE^tK3B8#3%L8fYiT!O`8K4{BpZHc3V_22agoUUr6r#d%k)x!^pfZ*BUxf{(xz zAbMN;Ud=4GD#487kp6Z~+*@ zjHA!jAXMG;|B;NEB2>9Dq*YNj?wYEHo7s#qoO1CF{a!sMr~d+&aWLc1>-K7=|*{4iOG$iK>&jRiMV$rMtY#1MB%%P_`0RGAC; zQ`Nkj{S%Pbx9%U``CIY|q*o+f8*e3OcLc*ccE4h-Nl=?hGmKe;#;McV89^l!zz~P_@&sPxE~DgMWm%xSYbiBL%O?LQt1#8P*hTKB_%|p zV@0F{L{UJbLqhLay}bU<^YXs;g&*_-r<~_G#~gFa{N_89XN)hGcYUvJwHeHhK;%=4DYaLy(+BdTC+A$O-vmm*+QFvXq(VnByPDY634MWk>r>rma( z(tZ6klbV*L-d7+RBub$V2i#)%cTw*SX|t%VHO~G(D;6{43`nMX-RQC!3_75Ebx?Pq zEOu7E!e*4%MeHVW_lRplN$H55_SLBpD7#slC@BI8A|(EggYLo6kA@h**g*Vp=bwQV z6XBBjMN5AZv$5x{5byfmwi&a&vJ|qrvi(;JkgdQ20(wmb?yzvk`M@!eTG9t$J-yic z*fgcXQAQzvIDhtYX(1sAHf^nSTiOYV8AivbJ%M&c>xSLHR*WJlw)?LHtjWQT`H zNp3WUy)yVoWnwAdfV7*63`t)38rB;ocMMKh=%{85XQdxgFqr@p@Mj?b_}LY7%m{?N z=tSkrv&u@>j-~3_+P1khj@0@!Dl@i3>kbXOtE1-y1Ps?MLnYp)6DpYPpf8?vt=s(K zNFqaHf-3u2bCxbX`{sV{wyE5>9pRawrkFZjM+w35AxvLAHN;WnJ>e+f5&rmahO7ag4kN{ zc2VR|a|L#S#xARP=tb#~&=-xTh7IR+NB1X@GBhV@%>-3mC++n<_vTKR?OAKw*Stfo z=+}ATYHIZNf0O04C^&>g9*c6>YQp86KM^W-40UA+5_?`#qc<&?A)f*H8n=M25>VOI zcsCvbCqF<^pQe_I&P%*8KmJvi(ycvADN@cxVjXFJu6SUj?xb>3IFQ&7fXz7z#vV9Fkdx(p6c-;#*Kx(ZYO#NV_;Vv-{0#-$y}a2u=)n%}tIStlOfog}0SDG&Ryn zT;WoCjm1f>)RLdspahnA@uiekab=#YF*C!*MPz;h8%X#dZ7tAmsGpcs)|4Un>pTU| z$&v?jhf-+#`s<4f;J~;vPcmKIryU+r`k50NyqME~Y4{QtP?L(QV|Zpml>Ft|i2iO; zo`k{AsdCJ_@r3#&Am%$A^oThm9B1=JEH5vE3L$$q0f*6Sm!dFa8BQ$DE}Gf=6xo3L zW>0eWOj485J%--nZgTU>H_lLqT`VVi(`P*VHZ|zvxqLD;DzvF1PdM0@yl{xSP|m1t z?aIBasP+hCWoTF4c>_plLBJjqA5-t@{%yG>6W7m`-QQ+bHIsKiDq1}uDCX|9a2rUd z1?|)Fi;~01?xCd)`Q&3k(oh5zbMMCEt!w|JoZGvrjnq~0jp_$k@-NXTc$SUp8P zqufqY?RAp)&tFa1UV^6+76dX_{jLmF7VEN`JWzQw1G%}G_lJ830#(WD+MflhkpGPL z;cX2p@z~pL<6Xo<-_ZaN?K~E6K#i3zw~1a8IdV?l8+R3Q^K9%LpMI#{qYz;47C22| z12u`y(2_8vQ{{I73bvoV&Zb0mwEG&V|oFzDS!|o~frImGe701q466ESkmmHSd(|_UezUNL+&4npqr*m0F zX1?yHr5!!er7@)0?aNtnVvPJq{}j{Z zEkU!8$-5?K%!Vv$^3(&dQDulm+&-JNa&*rN$iZPGWW=!YTeHH5p`VFM-Nl2oeT}j+ z;miEx22k=tps{zAU!`B&@m1l`oVj>Z7%i~tU0-E^*S){{+0VCOj7x%V?o-doShV z69@r3SwE0%$Szr2&TQ?#rz1YKz3#v|jqZPXB>^eWg-)oC*SD5j!W5<_;ux_oNeA!b;tuW z*-;mHy2}`tu5R5t7vJ~XTawBDm%QLxI-DtgyXP=y>4$oQ#ADbTD@34|lnA&SYI;G-Fp4L3AeN6H|$m@ed z*bpLplsL98v@%O51?z{oi8;EIgw<8m9|I^OYy?PwX+sS5t))O9;<`_sl=VMY-KC&goLDsR_@pgz zgK~d!XQ`Aw6;~ufmOa(OR&+puH4^}%$rx#LB2CeVZ zVh|l6Bq@}j&q&ncOL>`^R&fNpg<_(*<^KiR zVuXJ)8^~)jMwmHrwXpRBo8x2Amrh!hSy}DmBcK341ptUgV%J*pvIG+?u|k%-$6vSY z?lJ5Tt`}fUf4X+! zd3LbI#=~QDehsK?Lync`ag_5u*{R-+P_VY#-SwG(+d?B^cRnIKdsM(Ut-wj#!Y!{i z_M5$gnx|fPg|J@ez#4m{?C!=D5fR=445Z9&kKIKx#Bh8xK7ZG6`PNz-!v$)m7=gci zec1z`)d^+^S-H5yTKtk1RbTCnIzu7>>?ybq!px;s1NAm}`5w4+fDi>UNKx~vMjMv}_Am!DRI(gXGay?xZwCw@CLNZz^s=Ys|>&$DZ8l5)% zaJ;uuo2O)P*KK`ag8Q>~vXc;&--9(%^}w@T=~J08&3k6!o*Ok_wSK4}*4OJur*s73 zH)ukVmG5>S!M*+$3_sWc!3&5qJDCI&t#$>DKk_0dZWs_5GK4GlgD8hp7=R&5&5hW9 z^`uFF1r|Zk*NaxHcchfabC#4T_fhx76P=theh zCbZ5fXjAR6oQ4q5esoDdWa0G zPC6iA*f3OD`Z{EB*b-Co`QAur%ZdXet0s1Kl2+fH#WOlTXcp!-PWNXdaeo1&A|q3Y zj2^(xRk*t<)a=i07~BZvBPqplpVAwyG>SPseFXVpnw$w_REag~Ngf-m(*X_9r&y~q z8)ZAi0{eXSj`mH4MF`<4xb(%s-%hQ{`K^)Rp0p6p6A!bfa`VCjw z&gwnS))cfkNTaKc#wkJgGrNR}S`5SQ;m&l7XM9w8yQ5mGv%pbY#(=^|OU+hfdV2cK zc*9=INyi-y&7}BvB~Z+PGkIVIrs;Qgmt(FirgoU&k`9ZPtC+~${(5|K`~LmGQWhrbP^$6I{$LB*gY$X#%z zd*G%8$68|HW0uNKpH}hjjTT`j9PMmryM24qJ)g{z)G1<`4diN&9)lmM-@MBn+p z(R^wX>8Kp$-?1+~JYn<{3%;@Ac-*l9pUh>`{}P<2{1!Ov31MaCE?FLhr7^tqg8`Yr zo~;YRM{C-uCD2ZV$s0lfFSajPS-r_8&7|Y@$#&ei)u$KSt!J|+GE1nw7$tc;y4@lv zCB3BFs5Nl3=J^r!iX1jy8MNb2hy3>N*w$~SKIU|%dg&XYjxbuWzAAi=>k!joWugDm zQ&RZ?ZnBuxOi_~I3^Vsj6%M)DN4u;2?^o0jRpH=YcFX%qhwYiAJDC|+iyMu*0Mdiz zBSIskyZUe9=J~gRDk|ol#u>Aw4@?{fL$x(0$!+Q}-|653&`?@jHXeA0?V%y6t;uD4 z0MAiu+vqT~!VXIm*<7awX)$XDqa@Bw$s_^=+6*!B3wCPW1Ag0!eiz!T?j4qKa}Uqj zaP9omJA$ftZbU{09glC%!tY|Ulfy}gv#jRK1^W}rr6toH(wc)EMberPn?Gh;YoJ z6_UX`i?6YrY&UhXjF33*Kj|Cj6APc(cnc0izJ}|dgeoI_XH)w9VwJ=iL@S`pWO7tO zvNBxGM_a5xT9HY54AaTQmfK_0u^7xD{fI>Rc{qTOza74y=|AL zqOPo5xw|?Pb$l*S?vk0!^0~eS?8J6)g>zy zKCsmH0DDb+gCJ~3wd!=P+1`(N&y0Rv(L9# zm)P&ysh&L&0`Y4sg=uN3(x7)d+})ism+ss4NInp3Pv&=X4_9Uc2|OY}a@KKnPccaC5NqSFtrn)tD`e%y~aopTZ;#G=tg0SvPCk&2>53 z?55!v^3|TSM;sjgDQXd zlfj{#2MVa1+B%z|X}xKQbaK#71EadwzrJEX8c$108-0A7c;V;r=!aYWpWUj{9>}jY z3QdnU{QC8@kdD@N!Y~;-5TEF5b!5-0rL`q`n^9HFo{Y?|p4@~V6(65ep0AdjeaXe{ zte*D8Nx8hDK^kw;!9<9GYW#I+`Vk{bhAf3gl3@jrPG@`eD_9+N2}QHEVwxYR+Hk1D(QZ{#F=WVoc*wRt+)V4?en^zRC2snteh zi=S6u;WtM~!6EsYOUlMmsi7%V_O0PKIp7XD-j}p}OaA&bG)#+m$YE=)U~1#QGX`|Z z4QhHIzQ|gvr?Cau5BC#qu6#&cM@fOwf+~1Is!^Wh*rD~iG1*P>MFz`l=H;;>iFrni zULK=Pv%S2Ptjuc=nk@Wzm?ZNks)a75%5@%V$b2jNw&p@rNsef{2pc==-#w3cOqZSc z8aX|^D*oLWJ)6pT@A%A28cnye!tTuN@JyD(6^r5F9?Im-?1#ymWThj;%VkeFEEk81 zJ@~f&jJJu)Aras`_Z>FAGOG}W<-tb@79I`hpYC$(z$Z5~8!LPnY;`*KZCI@o5{Hig zn>OHSPF>mgJ@%?3AWZ;;TRA3`Tt@eeB8lkMyd&$&IUrSIJ3le@du`QnwOFIXZjZ8v zV`{k^bGX#8ba+H<)_QQKsUG_gQJ_I|tH<(>dMIs^GLU*aHR{xCYH@}je-#PHtx3TF zJXKeV?;Gnw>gI6j+ekW+-%7e|s&6Nmf3gT?%!f1w*;xvTs+o*#s|D5T<@IsN$=C*Y zdCtv$UBA*v_&<}YbbzWg1|{^@+0UQo-C5$GFcE8#lfT`Ye9WP(si6Fbg`QePGjZrN zBKcJEG)o+o5z;y2>!pyt@E;vl=gLSb_hHe%s@gof*=~2Vl6&9(AxP2mR-_3_^Pc|I zjIs0B%9RJBYIgPjyLr|o3k>hsSn_FCxI09wTAo{2 zg?8{vf90j`^+KE(JM<9b8epxPX-z`XHFF2aF0DzG;=92bs`~Li7D!uIE_d8XJe#li zyFFsW#>bbcU|Q`g!E9n;ZmyAkIu&y`K5<57M*1Z}OrnO@0b06EH0AV1h^N_Y^%tDZ zHs;e^qx0D8NnYT1C~XF4aIg;WjerYXS2Yp;)W(`~csMNCbQ?C|6!xiVqxAPofByox z%wE6w=VpdfDacCQJ3S?hrZcFDznx!``RVSK1gL2;@NKSFyYA*5lq!3qpBx7F@fSy|aPI%|jgsjl@o-8;em>Au-EjVL`tz5YnT@50 zl6d?^GH@I2d&9$H<@yO@9qP{^!t$xfg0yt+U_L2oU>ZsDLrF#}T~(*Gp>!^uy(MdSOS}G z|3~2p1d0%NUU>vnLCy_jJd_M`(&5aL2EE6LZbvzm6C`Y!SfL=_8M3=FRBT#50ni{~ z5c(2)g%n~UBcZ3=mz=h2_4)^kq-A+PTcR}qnAydk?95ChSF=Eu3Lb-^-0#u=+<@~W zOUz5Ck4?zPiHig87P21-F{$94@Xwi4JB?erS_}Exr z-^)VR3GVh}(MS?V%pfp^%3=KRMO5emsDYe+`3|19o`b*3WFa?4zWzU#Vm!ag|M{~1 zfALH|P2dRc$8Z~ncu>(d+=`xxPE+8f7duz-u(07F-mLflka7Leq3g;};6v%q!)GVM zPU|)a?i9g`PwdfWO>Z{VP{K zr8!aDr^SzmdM6RSjFqv>5c8p$**QCF=9)sQvit)_XP-$>OKGzDuS%}YcvD-BrBwT0 zAln%}lVnG8Ct*`m%*xEtc)?Soav`UEyZvrF(egm=Z~OM^6T`nB^Lo@gN+@lb=x6X0 z%^+rQjLt?weJp^LC`j@*IktCa{oDPGpXo`BmPMItGMT%AQ7xl+Qhay3>TqvJ8!w*( zVz{qY16Na3z@xonC2Oc!;&k_Y4(VN#mk`oJ^vVrM$ptlIxv%=n^Yg3dhkc4GF(V62 z2jv%LlH*3|iMSj^rb#tAnh#nQ7yAm<$op0Yqar|HDl{Jk?1$HHjqNk5wdyz1+?|!L z&!mUO@4geayM;!B@Bc_4mD=ABw~@$%IIu+YTU6M+kqAN~-iU-CBj#o)s&fD7gr8#i zH>Nq$&DCCor80yaKa&XfiShb|k1-~l7yV%M{0F|-%E5-m_*IN3{u;t|^pTFrz)A8> z&*VL4YcpQow`9@w_jnsq`sSZhHLCX8;|R5gN>VXxHaET-{jL=~J#rE6OU0gtQ@mP> zjhhfU`R7sUSn{`__WgM8CmrZyR}CV+6sUjAuDcreIv(w|%|pT}x0|)t0$wEne7VuB zrKvaUvH38(+m%++aNylb0dEL}&{ZF%Jm33GvjZjNYo>#W zlc~8k7Gkl(417(+O9r7+1o;sfoV#zaGAiawU9=Bh(bH*II=VLLX{*$#vn* zn*`d(3toBaXfCN6HjLglg#o{~^UULAuAuI7CGYLp-MZK#jb_U^~CWmkAtq13ir>RDSQ^5}1I3JuSvgw5K5E+FXJ#@!Q! zUq-3A=!F`q1~@{|vCICgyFZFu}phv<;(f`%f#ar}`gj zMq9~Xij;0#W`R)nPAamsytzGg4iIu(vesBjcE z_*Q!iiwHJ};4Uo)F%Z%0G50t8Y+s6v9ZWQff$I0a9sw2ZRdBCSuJaMYyJcV?u@@cp zLXRLQz35%T%ULZ9a{c)A;tqJ=v4RbPL(5U>f3t#jzH*d|x3Mq`sG6xTf!Njp3%Cil z?k8IK(@XGCDsGAT;#{{}@!*EfUcz5Jib?i1w4LEYbF}NVr5BIm!-9U|_&@uzchp+- zL0DE1?|QwLZmh5Xe?+sOqGACZW#EVvRp*ll5$AjFc0=`b&iHh4c!?}7 z%B#=Rr&fpBS&|{fn?el4Mu)CPG=KY2%xISr^&NkxY|5Q)R;#XJ`qnEn?0madYhd6i$_WsR1y&Q) z;f){o-HD*L_Z8G}7wO4Oz#;eoN%-0Qo4};H6j)6b?~&6ya9>^G`~Fc?1XDR(q$CmW znW4YCW`v&PiLDdpg1W7kX{&c{8K{bgie3f8t{>EizOUC|4i=j!i|G^+*!olh6TJ~o zTNiZtw>o>bdS=R@MarZ%HvbQhH@Jz8hJT`!PGa_H>pqM?!@qeZV|X{KB{W2R<-ybj zr(7m3F;-&*$q_)h4jXEPs4j(sh22E?gubM?bHB$V-dFo{Glt;q-KPl9>oReC`ebhD zc-@Fq%?+uZ&=(o6w*PhsE2E?uUX2pvghoc($9V4J+gcS=s3U*vt6~s7U1o)U#gJ4Z#Uh}KxbU$SM)!4YPkdcfGCcYd0M7Xw}!H_|sCoJZ+ zXXge(P$;ye>TRK{^8*ywE&m)>rXmHH=#vI9xhvimATK&!0FRlO-<+O$e3ql(J(!7* zaH*ziZRKXDX9CE|)s7@S%qKYOpq%()ZEqTINFqi?4}p@$J#ULA`~(`Vc~;vm;X{}? z$2VT>epCP|h6cG&IW^mn6KjdSVi{!U7gM_a7GCr%W^zCJ19YUWo}NojaF}>`gFrnH z9T3>GF79IC(RkfXyd-e=|I*Ekc+#2xNaJ;ZjMebjq0fA1bK4k)g`1nknWrr7M#99g z;dl#QLc1?OigJyQ?!eBy_HXAt_jj~pN?rHypbmSE791RGpw)iN9C!VGSRJ} zW9Q?Evy+LSMkts~Px_H2y>jIxX_R2BdW(oLqoZAX*Eo$rm5x;X#Y{D34d}^`p59#< z+3$|2ep}_b$8g}z%F6l&nyET%wR4cSGHbc6uz{F`u9FkN9R>}R?WOH)y3xR&YkTrc zMgE@~MO$Iyb!~l;9)>;FZ?0{7S#o=J>mdA0n&Osie%hcTR0(3tNqJvQp+Ptt9C(MZ zPKOCvsMP8({ef}rKN@JGA_<8(c2-ox1Ci7V;!vQi8-xNg1SpRGY!7f0k%pp)BzV^ zx98>Mg?li95hA!gl@_B_hwxQBQ%5HzLJ%=VzZ7bmhPslHPoKz->jjRVHZSq-4(b_O zSv3w05^Nsu0!+jUFy-_I?kv~68%bQRL!)D`vz)J{eg>2ngylZC6Ab3jp#I%`0!3kp zTeV;SqQ6xcnw~{9{9RstW;8$gp!wlZUTphZ_z2hg`mR*buOQ0$t+@F0JmwkN8B7=J z+6JsqwOefkbb(I1AY%F&4i%IyGDLOG*8_Jt5ZVY&b%~NTz+1yw$Kp=9A?A4SKh0bd zqm_D#(x+F%1i~Ws!<GBw_DD=lgdesX7E#L_Ah-2~L{p#@#*8v|8XAFmBmPwql5D?_&t`qn}%Sr#!IwEYtg;6G1x zr%9k+@y4{IjL$19yd|jnsBNI;)E@Pl@f1EYyHS1u%-|#tD?$xa*XUEJF>;h>lRQrk z3@$&@pT2o}!-w>n&*O0PVgfZM-Xt4FBPF1GJmn<*g{ahjhlA*(@ z5QMJFDFc5%_jXG}UHxwL*~wb{q_vkW0YR_`D1#ig=XAEt+U#$Hcm{zEBg%*VQ^b7j z$2iA-*mZDI&V?&AI#iF{QyAWt4_W> zuX*QD+fKf}3ky%~hyAErs}A%d^&kMfjw>iw#NPp8c8D9sV$|_xv>cl8%qO{G0iCpQ zp(jI^Jz)}_P!D9RKXAUfNZdHNQaYj4??UKXJ6`4b>R{7Azep8^K4vsol4_%#^t6DY zH;z~W6PK#~_;8?x!TEi&ex3jAhcfc=EK84FVOuO_=P$ZjfIfjNX!RnlWyl;KSeQS1 zqy>UOCZelpMCt`yeR6H^+vfQTMFzsP*Xx-IMpjtj^^A&!!e0$3Wf#w!y73EGX-8+` zSFTuB=e`9fDI8b{X={^0GgQ7*qka$}Uxx*?Ai${5brt2hyBudLmk7RXr%!oD=GUyv zBoH^aPv<>Puh#0|0CxTfI7#K2Lq#CpU7olLE++2Wf*Hv5HYnhrgYiteZ&?B=Z7f&jt2`8}J|kCkxW#=odjw_&q?nNJLU) zJy&Nqn!zu?rN9=ll*nghL7(i$sl$fd=65^{i=6un>)w$4Ssp5KTC3XIJ_1xCcrsan z>sP=zec-aa5>7E0Q*%tof4Z+nEZ{*5nwV8@;u zrVE^InwSk0#tgHYih;$rs%Hlre=2qL>n(;}X4sf|G z4Ix!VPi9Thka>T$X*#LnCKqgPnEs3POq6%Hi5qJd>^g>V2bXqI($lYOI1$H58umR6 zRiX1mSRIG#eqs?LU-*yLp8|3Ffzx7U2AshouBghhL*S%G;1g_oc*I|@xHDDfsZtnh zy9bo&aI^0W@K9*^!(4s(9MdOvF$oMN5}m|8er3VdR2T$?=KD^+IssHgN?$Wy_jX;Y zx}&M72`!jF7l;j!ZJC~p(H7w)K_V=0SFb?S6^8f@I9+N$Vt*kD!4bm$7c8@57^Zt% zc|-OC0J{Q#Desa`mW>FAi8cBjz~a8AyP z>S5yM4&Za$g@Z+M{J;y;+nNwo9&)rRW!v|MibWf!(BVT*8cGhr%NU>9^+Nc3K@JxK z?B&@8>Dg<2=4&4d+803xm!x;wgl0tfCiz zfOUT&FMqq^1J@x+%*)n@6~`5L7cbr+Fzj^x;L`$Aqx4sxcKOr9pIOPKzCtDK)b^3 z8mMMi?Iec~bII8V$PA_cyxkul!Y_f0FG5Muxy5Ps7Y7C?802=`4i_@Y&Q6auKr>{T z@pOvOdUHmsDqaQ$&26*!AtF8f1J;@1a%`;j zpO-%?JYq8vJF#)*B>|0B#M55@Q>2!QNLnKki24Dc>_!8l$4y`d?Zf{s)J%i`d+ez! z?#z}m1o+1BzJT|ya``pCRcp@vAfdg^w7AZkz4I^21r*T1>t0{Fx_)}JmYSAkpt_Xo zHm=|4Cq~yA%_}}xLu9y89RyZqg&gHd>_{VsfETuJ9Mi5Riyy>7pShW zB(ziFxkgN`eO95nlF`HUK*fPO5#2|KMF>=X{SfnidWOPKfoQ$-?P8#|4jUlAN`FNAef>dTPvjGlwA`u@V|>x@4c2L$q319^e-`=bo zdk+Mb7-GE=(>SqkigxwOtOI4sV&HbpV0sh_Z1HU5X0$bqNS`3>I9t6TX#E1byiQwKnVMWEh?@JHvUac?uBS}TwlU1-v zeZ~8ztheT*Amo$%ApyaX;CTw>)o1N@m8FGr{Ajy{+`ASL2G47Ll@BSD z5$Aoe@YCRf-b`T-2!~8wm_4B(-}A)mWEXTp6%-V5nz=Lbmmv0Z+8cAc^WC~_*2cve z_7wDb4*(ACbu27s5P}ZJ!jvIK1XrYaH_*I<7}14ge~*j=+Hv1V?Lr6p0Bntg+Zqar z4S@gO_7d%3-QL@qhA@*2%Iq6yjPCvn>Fk85W3NZ=5w{s1lfH>NcoPsjgJeft$BvI{ z+nSotJq~-48L}3vKo-B+ps2VQ@2kpnnCE1-&1*0ahHrnr7DQ3hNhVA$z_Tm~Yy$hZG=lwIi*dDlo@BJb9y5h{3g{l7gBO4EgGRL* zp}^TeXV>rFURO!oaOOLcMIox=CBc62f%7#4OV24Tf~%QJu$lrFv|l7}!~#Ji;$edpU(BbUk+ ze84A$TgV0u-NFlOSYJCkU8C%r=Cl;CzbAw4EpW0e&&N7Z<0$|gQhi`S0zo3^{du^_-Xj^e|`KnCXmVgMlL^D&i z4mghx*+7)&Hu%>sU%vc+Of^rV{0&kng5>eQ{OF2g)PUYwGac9}iFB3J;gP_2!G)T_b5d&rbE6*OcF zms@Z6OHtj{a@!CFF~yisIA%UZJFg?be!hz=Q1Mmmme{3CQ1j8IJK$2v#si_QwTJd# zqCaJ3UW1}T{Kg;{jH=;=6^B$<=TIa;c6;Fv-MHtOyW1?SHqB5TE0jw>+VEWpq`?d) z$JYb}#u2v+q4^&GxuP)UW16?lkj=IZid}ag*slc}Q!{h!x&D?H`YYpc=d z$97Na=7MbFsQcd7VJBdpu?>MY*6bc(Q%(#~^mMpYbk727c(Z9Lq#zm2 z511nz_JkcVIeGWvjYb!ForvbQpb!MfJd85hlOM38&Y%OjcJI;8pD!Pua9Nh#1v_y# z|JYxbfSA__2i)yGcvnA0w@J*V`K|pJ&x1Ro_5+%OrBydN9C-2kw$zRu<)xRXNEU0l^{<=+5vpu2(>MN%1ymnGb+RI3bN)U0tss=8yTn$iu_4lcdSxxcWi%9_zue75HpU z$5mohsh)>@AliQkC`I*<#0DYihrd~G7=)6&=h7upWzT`Q2NXk}%kXq;oBYz@+IJrEXvl3ZiXUTfj`SU`30k_;z@ z0Pw^9aAJAXkOC|EM;wb08I-0#WeGy><>6w?X8l`G>KsV!ft;Q>@kL^Z{SK6{P#^aa z79cs7mc~Y^Pe5RY@DXu!Fwj5YCius^=ur0;Id@^96NU{kysE1PIkY0OKjzMu!lQL# zof#>V)S(y%6~aJcRt#C(u-4h_BcQTM{E|_p!$&$r>A%gJSQCXDgsv4}xtz|M6d*6< zW0d4K2wn}i}5G_Mk*!$)dE5>&rJ zgWGk!)|KSmiu>B-L;Ahp%Wn7A&byQpNgy+G1B-+g9Rv$pglm^6ALk6@x@13VR zcJ}tV#>U3uI)s38T(uQF&v1|tpMJ9BlwquM{+s}We+xbzwY${Wb} z!aW`bI8A6fa)Ld7`QJz#Sm3MNxT3#x08=V#Ewr#5x`Sm1Rwzh}0=zAj-zBJHKus5> z7OB`lP0SWV5}|5}gp?tCy96rH4Umvt$sY)W{sWhxs)4XRFlfOCDzL$rPy%WdQnn$)_DT0 z_tOQCO@Kdk6}utd{7ZlL@J~+WQyZr*qY|ndSp(XeTOy{+OV*s*D_((_f-vgqE>+K| zB6L*oVM2L3Q>&{Ys_J}~14mi$vDf@fqnu`F$q&LoIG8nYCI247-iJUbdXP-1Gg z^0b2Ly&^pKSJ|JN=dW~HuJmM) zC&a%>m{?1m4SO4ElllEf2RYDG$iQs*W+Dj|eHmZi>TS4H{9h|ZC}B}vc`qDjwdA4R zDp41dUPIT~!PD>#r||URimOicpb|VKO?isxFAF<{`*1JSfA{)QyY!}~jIDHspvRxE z6!Zlc2AN{uO{OGH1#n2p5>Rt7E7$H2LX4C}KGD z?(k5;HLEp7?*17ot{iPuv5&7sFV8akwF1>p1C<-d;WqbqG_N?vMA)U1?B2U!_!Cog zeP}yq1c2Z3#0!$>G&SiDq~F+^=cdotSn#oyd=n3u=EU&724~5p=ewH7I6L$0(?nI> z!l44^YjeFI-^ca-DI|)7O3%<$>3j`jJ@?@>U$3ueBeqD+#%v&A__K8!6VnFIld8Wy8<&F9#R)HNq2cT zkv7lj@j2cd8kiUyEbGXIrw~#iJs&_{VCKsApl06|jP2?K`VN&6ZlLB8BBONuEpP#+Jw3f+9B1tyTBfZo;gZ z{VVqAfoTNwPbPy~Oled+36um`M(*51o>mncE_7h}xN+sV1BZTU z<|xpUm;x^9absz+$zr$KXb`?s}dNOTw>;@i3 z^wIJ07wWO_B3~hGIjr+l!3~Y_pmxKJ5-b@eSH1VUWxu_cJjVBN1e$_g(mQ8&lpE_7JEap2BAq7!sRJWldr5ByOCB6UUe$E+T{ zPJFgt8xf0(YZ!iQw_}Gq$8=oK1a^^NNH#yM5Z95X?*z2q;oN-=oaCE08$nRv$r>Es z_GnZ_Sh**!=fs|Tw{itMW}TcTLqb=?oUt?ot zb`3}Lqek5&ITliMPv6UyWjzu1-rlv*nm%Oh!(uQYH$iWc!oyAw5RK%5?Kdq;n;N&E z@Bsrx5*xBqpuegNl?3LrhqT3M*Jpb$#wzhGP&llKrrB?xg^t)xH} z3k7Uy-h~UHMKfZy9@O2pQD083Nrws0QfnYKCkNsw)d1<5aLS!{^;d9#B0>)IY6ZkYO_AfVsrhC)sW?V+@&)0`FH}p1L6QiF3Isy zp6bhz14*po1u7_rjIycqXTxRrub5m@f-i9@zh|_R^D| zm2GfAluGbi+nE#SRQ0byy(?Hsi4$~h0#p}nQC9!%B-~HAotvFSL83nYUhRIv!I?<$ zp0ugLyqTSyI%KgFzP5A#fcd=D%4<&)Q-l&((_+1XNtUt31aI~;EwZH)Bo5Db7c~CD z3ak>_TujY*os}M!5nO=)N)`-FDNhgHy#o`0NHQJ)t%ptRVo`uw7qY2^2R|LpalQ*$ z6)Z9690VVRS_`fcCuz9eN#>X0lM}$7GZ4&s5|$#Gsh-P+Klqu!=;Kp#Pn3kdOTYLK zYBf8z2j2(UJ^9seOigrjnF~I%=V*ITT6HQ*C&9@=0nz-J(`-o~ z!+Qf&7s^#=30g9)EVbY^wdA8&X9WhWCFr~~ROA@R-I>?VffH!QpG@f=-LvDzqJ@qd zxNoi1@)|aM7A7T5Ypso4KW@LQ=isVB`;7^TI1CDte6P>}G>sDj!8y$a!*!stE7>758wjW3to{{X0IC$Pmg?7BRS4mwhK}S?4I8P5c zywvdP0gyP;*eb}cU-7Hetcm#vwIMK2^Pj%f)i?EC5(t96mo2N_Vtbq^uX9__60EvT zmWdi#5ncIPyDHokpTwInhq95*$W^B45s6yQBV!8sBYA2xH%umd=-@0ak;m(siDart zU++XD`)fJCTk}ZD3+5f<@K~$Kqnf$l_|3a_<7K6_UoJu^585sUrS~l2w6ZKneLb~A z&;6!1@@T`<(|HaPfBexi_tcMd|8>`w06c3r1b)}YPkd2`Ge31#4NC@7M$v!{4Cl?K zei_-B2``TpI}<X10Zk`%S}ogM~s4Me6ZR_fu!i)16+ zQ_I@`0)_Z_C9{G$Re8rV>3uU~s(EU;PdgAdP@7LRH71QuC%{(-$(VziZcRrN-wB33 zzDEsryr>ZvJX^Ku@{@;2Ro{-m?Q?(6-bRz+xU2*3+NnV}4Q_)$U7iSwkImB&_3cpR zL|Mii+d84S(!3Blv!jxE)_SXC(JK`?=c2?*f5S0Z7%jT3Hv0WvwiuNAE=E;#t1<$k zsbL!(N3i|+wb`qYjBEceTal@yrJlw-1mQJT>DD@;R$4%na(veBL8keg_c{NS7%jQ4Fr9Y-`#ENknpc?qmr_7?LfrYJMd{?cLMP`~O z8YB$MKEN$@x=N@O(mD2e%!}Sb_Z}RFj&1NbH@b{BIKXJSZd3rO34(@t8mP;jjk{o0 z^5oPV@^YMr+AktuWrbh%1svL^Vt6po*0xVXF{l^Zn|RFU-*)u86WmN#L35M)sw5== zv5?rN2AgY*4A8iB0=c4IB*d^}e@u3F&ZPZ>Wc2+Jg3vE^-RMLn3dd~!p(33