From 63745167d944b081fadf022684bcaee4d8fbdc39 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 25 Mar 2018 09:47:02 +0800 Subject: [PATCH 01/17] auto commit --- notes/算法.md | 52 ++++++++++-------- pics/5144a411-0e46-4a84-a179-c9ad3240418f.png | Bin 0 -> 75776 bytes pics/750501be-6b8a-4cb5-a807-371a218ee612.png | Bin 0 -> 474112 bytes pics/d5659bcf-5ddf-4692-bfe5-f6b480479120.png | Bin 0 -> 116736 bytes pics/df648536-a107-48cd-a615-77b7a9b4025f.png | Bin 0 -> 176128 bytes 5 files changed, 28 insertions(+), 24 deletions(-) create mode 100644 pics/5144a411-0e46-4a84-a179-c9ad3240418f.png create mode 100644 pics/750501be-6b8a-4cb5-a807-371a218ee612.png create mode 100644 pics/d5659bcf-5ddf-4692-bfe5-f6b480479120.png create mode 100644 pics/df648536-a107-48cd-a615-77b7a9b4025f.png diff --git a/notes/算法.md b/notes/算法.md index df40054a..54902c28 100644 --- a/notes/算法.md +++ b/notes/算法.md @@ -44,7 +44,7 @@

-

+

## 数学模型 @@ -52,13 +52,13 @@ 使用 \~f(N) 来表示所有随着 N 的增大除以 f(N) 的结果趋近于 1 的函数,例如 N3/6-N2/2+N/3 \~ N3/6。 -

+

### 2. 增长数量级 增长数量级将算法与它的实现隔离开来,一个算法的增长数量级为 N3 与它是否用 Java 实现,是否运行于特定计算机上无关。 -

+

### 3. 内循环 @@ -157,7 +157,7 @@ public class ThreeSumFast { first-in-last-out(FILO) -

+

**1. 数组实现**
@@ -269,7 +269,7 @@ public class Stack { first-in-first-out(FIFO) -

+

下面是队列的链表实现,需要维护 first 和 last 节点指针,分别指向队首和队尾。 @@ -324,11 +324,11 @@ public class Queue { 用于解决动态连通性问题,能动态连接两个点,并且判断两个点是否连通。 -

+

**API**
-

+

**基本数据结构**
@@ -375,7 +375,7 @@ public class UF { 在 union 时只将节点的 id 值指向另一个节点 id 值,不直接用 id 来存储所属的连通分量。这样就构成一个倒置的树形结构,应该注意的是根节点需要指向自己。查找一个节点所属的连通分量时,要一直向上查找直到根节点,并使用根节点的 id 值作为本连通分量的 id 值。 -

+

```java public int find(int p) { @@ -448,7 +448,7 @@ public class WeightedQuickUnionUF { ## 各种 union-find 算法的比较 -

+

# 四、排序 @@ -476,7 +476,7 @@ private void exch(Comparable[] a, int i, int j){ 找到数组中的最小元素,将它与数组的第一个元素交换位置。再从剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。不断进行这样的操作,直到将整个数组排序。 -

+

```java public class Selection { @@ -499,7 +499,7 @@ public class Selection { 插入排序从左到右进行,每次都将当前元素插入到左部已经排序的数组中,使得插入之后左部数组依然有序。 -

+

```java public class Insertion { @@ -530,9 +530,9 @@ public class Insertion { 希尔排序使用插入排序对间隔 h 的序列进行排序,如果 h 很大,那么元素就能很快的移到很远的地方。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。 -

+

-

+

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

+


@@ -591,7 +591,7 @@ public class MergeSort { ### 2. 自顶向下归并排序 -

+

```java public static void sort(Comparable[] a) { @@ -616,7 +616,7 @@ private static void sort(Comparable[] a, int lo, int hi) { 先归并那些微型数组,然后成对归并得到的子数组。 -

+

```java public static void busort(Comparable[] a) { @@ -729,7 +729,7 @@ public class Quick3Way { 堆可以用数组来表示,因为堆是一种完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里我们不使用数组索引为 0 的位置,是为了更清晰地理解节点的关系。 -

+

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

+ ```java private void swim(int k) { while (k > 1 && less(k / 2, k)) { @@ -775,6 +777,8 @@ private void swim(int k) { 类似地,当一个节点比子节点来得小,也需要不断的向下比较和交换操作,把这种操作称为下沉。一个节点有两个子节点,应当与两个子节点中最大那么节点进行交换。 +

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

+

```java public static void sort(Comparable[] a){ @@ -849,9 +853,9 @@ public static void sort(Comparable[] a){ ### 1. 排序算法的比较 -

+

-快速排序时最快的通用排序算法,它的内循环的指令很少,而且它还能利用缓存,因为它总是顺序地访问数据。它的运行时间增长数量级为 \~cNlogN,这里的 c 比其他线性对数级别的排序算法都要小。使用三向切分之后,实际应用中可能出现的某些分布的输入能够达到线性级别,而其它排序算法仍然需要线性对数时间。 +快速排序时最快的通用排序算法,它的内循环的指令很少,而且它还能利用缓存,因为它总是顺序地访问数据。它的运行时间近似为 \~cNlogN,这里的 c 比其他线性对数级别的排序算法都要小。使用三向切分之后,实际应用中可能出现的某些分布的输入能够达到线性级别,而其它排序算法仍然需要线性对数时间。 ### 2. Java 的排序算法实现 @@ -886,11 +890,11 @@ public static Comparable select(Comparable[] a, int k) { ### 1. 无序符号表 -

+

### 2. 有序符号表 -

+

有序指的是支持 min() max() 等根据键的大小关系来实现的操作。 @@ -969,11 +973,11 @@ public class BinarySearchST, Value> { **二叉查找树** (BST)是一颗二叉树,并且每个节点的值都大于其左子树中的所有节点的值而小于右子树的所有节点的值。 -

+

BST 有一个重要性质,就是它的前序遍历结果递增排序。 -

+

基本数据结构: diff --git a/pics/5144a411-0e46-4a84-a179-c9ad3240418f.png b/pics/5144a411-0e46-4a84-a179-c9ad3240418f.png new file mode 100644 index 0000000000000000000000000000000000000000..a0a9b6cef37e70ad59548e580e3659028c9f8508 GIT binary patch literal 75776 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%0D=DnxGD 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 z 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 literal 0 HcmV?d00001 diff --git a/pics/d5659bcf-5ddf-4692-bfe5-f6b480479120.png b/pics/d5659bcf-5ddf-4692-bfe5-f6b480479120.png new file mode 100644 index 0000000000000000000000000000000000000000..e3190ede05c73b55b2157f19ae36bc7c81a9b8e3 GIT binary patch literal 116736 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

  • tq^R-^r0&C$vFX#$v4QCrj? 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%0DL-@sW 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

    Zh|+Wfn$i?R$)w{2N%37prL7Gm;G0 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

    ?#h%IhTT9k) zNh5g70OS^8q~D3BW9^!sPW-T07wvnL=7nRP10MwRv#8VeZ}=ALm`|R5oX^J+o1j4E zZM?we5F^*!g|O4qDul6er}X)Rs_}P)${d>I+i+w%8h=E*iTap=*S0Em%k4F_Kx8JT zm&EB_l=N)5%>RZ&1*`@+IX}{SHeBB36Y1wz$5lY<+Tu!EhRf(#ZCS^=l&#ciGjq3Y zclutHh$W-I$la0cZ0vVQvIUOx(X)(GneVG27+Duq6+Lv74UP|p7tke=NDaOV!Hok zPp37;VU%A5b~nT0$C?gR*rVu7?jgFaEX<&CE~Q{UA2NN6!6~3QR%AF0K}gEBhjfUs zam7{PX>s@8t-Bw`o{v7^JzYmRr2oX8nET20XK6SK0_8&rmcH;TAh+Me<|3Ekg`Gen zxi9EUudumY$Nmm4Yjhplhf z3UHV?0ewlIw@+6M{abA!Jre&cYYa4oy@7HsTymzQ!DK$6tJZc^|=GltyZhH+(Z<1QsP@mPD`-$v@#jaHdZ<&!^lt3G{%{b8W9SF-x;hf0zF1MrpD< zD&e-Tl+T+fokvw3s|?aW^HF4mUmKH=|HqG1R6%A+ydme#bmf6*^>6~)sXUt=Ya0nma={oy<`j7lpG2G3WS3E3ZBsRde5l@*%u|-t(Nm?O4;15^99b_rLcTt zfUC&@cRT0(hql|b_FL$}+GSuFEfT{6v01s8>U85a!E3Cv=5kGW!nu+?wox3Y)hFLL zrFBiQXo@fhI+F&9`O2`bLl9%8{oh*~-3Gm2lP_X^nIeP!GIn&dFlgOwSmoZNU+&q; ze2jwF>+gRU;CPzM@TwN&_r4Gg{->GuM}We3o0sU+!1>H)yhK&v!Ife0>CgCO{}# zRNAJy7iqSbteBq{AUWXV?BFZ5l+1V{kPrPuk|ae9VRZn2HpDt;8D*9a0;8z@Y(gD`2v-_&3pDsvhj2coj|JH z_YANtmFbO&gRNAtPL^>5A&RcHZ&*d*W4>WHhbv3kFO|joq z8r^I%F!QH{TxQN$|B72cC{AnimiP&nR@Q8N=IJ$Uu%o9ukNWAOWr0xc+k~bd3YId6IrozvIf_nI)B)GkZkpS$OMEE z;+BJu4nJylGv!j>4FPaXAkRoSWYd9E+w~lq!EWHDs%UAJ?0o60!02~c11=+TnV(T~ zSw;`!><)?o*kugqy|W6P_6)5}t5dfgvyDKKfw|JW3;A9T7xMUDti}vcW=e=NhGy}V z?(x#;Jls>u`sfwSEd;B~UG$na>sA*^>&i%^f!F7n>6R6GfTQV+0=LxYmEncYF|4k( zoqs`2>=hon1qFD)E`VTCgsy|1PYPmY2&o&}GZkjp0g@eIzL?Sk8=2eOnp1DbK*}C5 zIVC?-6G1sl%tVYG!M}#%>!QQXG&YULt|k;eY$)D3S0&t18%L&*s_V)1bnhj8vhHnL zRxnjOKUZ?5VKp1_L=;%hC(On0Z+&9k8pS1#jdlv{xa?E{)JQ>p?elG~(Zrr8t}Sy( zjetBEgFVtv;;aPu9#Ev_r@(X-UJlsEi~s?ST6nC$M5=#Zt8|qAW~+3x|CMHHmb}%i z^IQr=5Fi-xTm$S#A%?xbxAz5m#MjI5O3sMP;ta*CD8Lz|f-@a|U#?JY>C>A((eKtC z_{f>%|3+2s=0nsjV1fZGrt#}7wMECQDl?PtA*qKT8Po6rShSZS%3vGG{vsH9&#vK7^CfxBy-NO6IAkw#n_;>;=CDuEs~Qy1g+Z_in2Hy!8SPz8~!j zAWT#*OMn*VQ=y+M%Ntx#5oicc%&N=*3yXp>_>pFHfLNyDzKDLHP*}WlA9cRwOO}i{ z9wCE^jE{*s9o9d&cB6gLmHj|4NVYcuLb{||bs&wd@y$t8G?gY%RA*Y=`m0~sI zg3rIE0!;lQn0>%cXwpF!z1bTsmZtmJ^+CN6UK>^rYko9)SKB$=;i^zU=g}u zN8|bZiO2WGV0J~oBCON`P*4D4$Mbc({WrVWd=2or0BzsQ_))ttO!gd(2Ks<6JpdpP z{0qKLhCmkt`Z~*^EdQVXaX*6Y6!i7-<^TTR|6ZQsrSQLt;(s57|JS3CK2qmn>7<*lQP?&J{kqI7S(XE0tR!^CqgU77wq>fW9HU(*?mR1 zDSTD2Ta#&CJ@+aP0*|bV3UzFO0n~AZ-1Vi-h`s$ZH4Cd7dDKe3Etq44j1kxkcdf9-AE> z-@Zy4U)Ny#_^AHi(u{=@)cl~QTDbuB%X^Ch^`kY{b$0>@A1kS2SoJM5$S*e10;^; zcN#$YoDWrl`p+f+7ZXDeaK!3;pM*3=R-m{HNDzlg`TuYi0DpRTRi@y)vK?5OzX2Ay zgzkfCEMq*gtFlM)3HJLuU5X7Yst!UyX$^;{o;~8s5i5Ur^`I2NKi$<%Znb4q9)= z1@xZREg2qHuVVtxqd8pYu?Hor9JA*sIpyiIuE5Mu(ogkr1N_;GAl`u*lu+JO2T8Ig z_xMbJ)Y_ngHAT0G=Wd!KR~Ck978Ef)L9(jeK*SafS+1QX=cj+9V;7y^9Wf^xdh?8Q zp{aY_p$90B`hIuEn}f>2tn`~}qgm;Hfgg0WG*OIHx5B1$14II$?+h=H0B!aATf+;$ zSJ4%qQRP_%Dx@2PzAM1XLcX=I83S;Z z8k5&Uup#lRF+lSQk2-pgSPUMgm9xKTC0Z>#&ZDh!Wfi=kqcej-W-404=hV20Kc%un%=Y$rr>%n!v1E^`GbE?H4}L8r|h`Lr-8aD#7m9Fwo7~u?Nrr;J-_7o~C>Q zuz`Y>s*J*0$UP6OEAF0C(NaOa&%m<=-DX=YqOByMUzy^&Y!0keF1vU~qV>vxBqxPU zQ(7_DS204uAc+jdEr5Pa&OcdKU*@c;y-1iWhQ+lke2m8BBR6GWjfKHM|hqS)ef9Vs_Kb zfi}7$>4VM1VSE3Q-~ynV`ztM(5w2%{`^<53gdJ33A?ig;GPG>_w!`D zSv!cP1C|3Y4#CO)JUn0mD`~%hpfcP9&oiIi{kOhuT{oAPefk1204fKt*?hlSw`?m~ z$$6Q53psBJs)S@qes#nR-P9XjEg)S#>K5m1Z$pR=KHqc~sI56VaO&{|W?qpK4`0}} zBUt$0?|%bJz9DDEQl^s$?vJ;X+tnP{o4Vqa6TQZqb6U?NK-G<6HZE%lJku6$g5D|; zf$rK`Z)j~a)J4AI3@h(M{OtbQxv24vf29dAT#9)InxvOos}?r`>s=L%Kx?3=e^;F5 zj_$lRP;x7mOm6@?PoFEQf3xd|GgRIL)Zt9I>h{usOUa4WrmE(p+%3a6@C{BVP(E~s-vfnCcYa2%+Qb)A8u*M+IU8|aJKAy>Ne zE#>W^G_bLho!Nc}S{Ps^NS`HNKZN*#2y`c=^vXiUhCj#ng31mB6hru&MTBV7Y}{Zw zsfita*jeKm%@D;3j@FME{zfmhzbehYNY1y&ICb0|b;B6mOVH7gy>(`D1~%zd4wzSz ztui2nA*k(7Elck2476@+J$ux!?zedCkgixvOwx`hah_R23%NV_9SKY1MO3=Vw?7@K8%A zM3pK=cA==02EoQ1EoBQh+oKC#-zb3NaQv}jF?DumTkZyx1dh{2Dc3`0nAe zdB6P0jvGP1Yt6b9Ut;(}QZi>h`o^M)_Q`W4d_6aUhq5r-*HVKX=XvJx6_v{Yv-sQ~ zq1M&PSnCo0g#P{LN8=kDImghGzQBC|%rpCJi!fKXQWtGzucCM$#oPA05a?mm=#Q*d zA$j`(uw=`gam>STeI%tmeh@ICljP!CqXZkfVXn#I zIFu1b{rowAX}(^u2+Wx1%{nlq3HAdn(yvtwhFC<>k6pTVl@KSB>A5-Jpj6#4SsP6X z^<$HfS`s%|+l^I2W0J0_G#09oW;Sxd7;)^}c`urTs#z&B3xmD}c5YTSLoz1tSQinu z*hYL>kL<%hT>owqXq#9DD&~3W!TRaRPh^m!vyfVC(YKv9Fe9&1Zsb>#q6Au8_S^|> ztN%RgLB4KxITkg1?!Xk2e>>;G%0{u9Fc|KMGVl^wKZX6yW$P;}f%-#RQ{v=v?Tbwa zJcNBdq6xup%xTHOXift~z|X1%?*fSUXO%HR=PkDxMMo1^_l_w}9+bF{t)t*VM(mx9 z4?lfbKj0CzFCN2%;(@xqaw73Uf%DF07t@^}^s+*I&kVpe^c&56cy%gbKBz?}Up8>; zj&La4dAVGj?nr&Pon0L0F@MH(cH;GmFou@OY2;`#6nVD|A6Np*@LSzq)IsSuiaHIM z^TK$H?^wObP04apG}_FhtW12ngj=gi@Xw22mor-?u`34oDx*IqCA`%>8RuPVU*k!e z(8(Xuc|F;sf%UOJ2hB$Yp1UhRyyH0Xv7Zf?wS8Uea_K32Qc}(WFq~%a$VJYLiMN+T zV+jyHw+Dz>aR=U}Lxu+Ell`C`UgeyhlbeIzpzsdee1Bmi!+U_1Di?&k+>QXlNV=dg zYi2v-k_{W3%+U!kC)>8;xjuC&k=9NL#=N)k(_-PpQSYk;=q9D3?(|O8@0or)-@%d? zER@c*Nw%%tQPGRo)50&+l%>y)?gD24TP1ybkOoqdTX6Yqw}LVZ*I35_I5fmX729*4 zZ8z1sYmCSkRn1KEPAW`_I_^{f1_NPcz=rO-4fW0@rkK3yp%qE- z;>pUOUJS$YUnnt5`W^gGnP3qZn}q<3p7LVz4-H3SRT+j_@8@kW#U*)7VINO>hI&lL zcQ)Z0yjw*76>`oO5PhgOtQFj-TbY7D!@j2Di?#}+veNyDE#+9pT0;^g0U*tJ$Ug@0 zTsy_FuBIorIgghxm?S{6kt3Jsn2{@5ts-nCSvT-GfZ)nyL}t)yr0xEqs!e%g=l)~yg_B3 zxR{G5cgX5@!(_JL>p>A0W`!X?ZfIS~U$}n#4)YzgEOIx_Bl89>e?q&YyB+^*M!N#1*&^Ggez` zfiutTHMleCJlcY)Gy*|Oqv%5X>eO!@m9t5kj0J;|lgsLyI{4z;)yNbf8-K0t`rm>( zbndhf+U#>$`RE~i?M4Y!fquNm7-m_sL{?gxagLsSx7wB6k3^s0-8_>H9)#5jW$KqU zAZ&`3`gD#`SJ4^El?Uhf0a#mQHE&2PQhAg{9kB%4m#(sM6)v)9ahT!?rb~1H2`9b9 z=V^abeceK)zKc|rpLKFziyJl}8~yolRUWq$=( z3oXBX=PfQ$K(E7h@$U$+o0f}~q>m6xs)*6{NQE0~6(*X5Ny}tXBgGq5vR&_c123dq zdy?aWapY+2bK}XTh%&^XwvIlliXL$pFg=BQGMeq*rP!puwdkFD`JD+3O%xk?z z3c5_rH3;z5`O7OR@J)d3ocL_^-|2rE!nquVkcee%RCY%QT`B)UG;;zR8`dA)-dcs= z?HdRtrwwc@hb7?8ZNN+4W+=<=xOCsndiRmGIJ}x=zDygkOuGOvHlp7j~jLC}(Zb;1AEdk8YEU3)sm z6l*t^9)xs|+m4VLk#6mdwp`P%J`(#iVq0M83w!IPslk6^>`jbOq) z^Lc{p9a6--NoY`Tj(=`o(7CApc`uqIQ;AZ`O#y+X{TD9`-^7KC+byXh^jUl@lZ_V;LAQVl|R>H7f($4lm ztQkTHAi$D93&0f5SjQ;!;jO&2{&FrZKLw_ozP*3(X@n`CyhdP_3Xi&in<8AdmTSq8 zTYK|t`W;i>1*7h9R8d2hI{ng@nkUt+w0t9H9Jbizv~AN#Ah^>BP^Cv zASx4z$c!Stbg&|RdqMe;m|i;{(oFY#t=h@=fglZnkIG|mI^=B}wPh(WJ}y%q&G6kR zj9IAq9)k{V7V;(yr`~Xgw(^sb5&pK7q0^NhFJY;?5TBTGeKnd?tQ%#WLH&c)QJ!T! z?{)twL$2BfyrGvdI64&sbceCpuX`MD*RF_J{2JmlKb~&#{_k&k%G4iptp=B5G2qlc z@S<(Dj$z)&J0PxCo}eOu$syd17|uD;wtC({kT$|WQ; zX<~38|)o>;|EuUK&r2#fNhBKaDXlU*M zFI7ZkiuD~E;?r*Hke1e)g=DpHJdQAx7uWAvk$qZg)3->Eolt=t2X7KAagVR@Tb@N` zFD}B;-CfTPsx_cK)WQs(>50uoH2^1A%0{vLe#cq`VmhA;-nb2KhWdz;82>NO%HDT*Rt!^7~$1;&Dol+c&mJ) zRfQN7Q@6Di_vI)H$v-+ivvyabz@>wmym6HCBUxl2-|Sg1-qa$k@S%UxP;!DZ9n(Mr zv+iAgDmzT(e6D}ODW%&`Eh5b-9J;RjvPUcN9 z-dD2RDfVBrlgTTAiB!@^kvu2A}^yF%_XUw~q1Cfc3j$E6Vz8KP*=E?)sb@ z_7?@sUTUhmm%bX|zAo4Y`t zUICbs5PECJ^o|XOYPa?GVR?2cOz`o>D%lgObxwEhEHt&F6GgNKdMM(-F-pX@T@x@Y zWYE?ns>FuaM_P7E(u?9IaKXFxV`^8>jMtm_E{8p1e=B5`KO>X!xBp>HWwC_o{7Ft6 zZ85cC>B&Tg84<)hy`vVJb5S~EHpQhqiTF5UyW(AGDBf2U&5u6uX?WW;Yz6r5xDQt$ z{uL-Jko6Q}mI6wN(Xqd-v4I~P<0?Rps$1*r^Dr8L80H;wKof(oYBck!tS~PI*yJK< zJRW~1At47omeKaFu&AhB6swT9>{**T=HQT81B#BDG?5@Bk57H$u+K7At(P>>ce;}D z4HrJF<%4zLzvSlLvEhxjn*OGx$zEt%7>C~u7r6c&)|-|7fa}Nl;LLNzyTlleNmx(p z%w?33*iM@}`=0DoawB=;COm+bD(BSyJjhp^pO+eH-Ap_yE;*pizCQ;1P4CxLf3RKA z6B_!pp65A}b7E{0v<-q5UuBDN>o>{p~sS z?{|>W0BWRV6swEY*2C^Yu*96CNYNBJ=8j^Kbq z+6C#U;vbpvTZEe9*`+67ljxSB-)L((B4!Tk8EX-V!y;YiuY^QHgTp_1tvOTcl3fiy z9Hwq2U)2$cVOO9sM1Zm>h93;~dvN(jO_?}s;sI}tXT0TBUOB4Gt9=yky24_wSBhza zptKux8`~FA*$7QHs{-5U7vPUzxt;eSL;hk`oExK`Z=LY{x9QIeVFt!@-kfd$Ux z!z#SuK3uqOz^GK2pjrcFplv0%J_I-FOl!`~Jc{vskTds0T}`3hg$E=ivf2>hbWctZ zMSFBS7Q`yCrMXO=c!~CXHn7fEct)-CvOV47Fey4+c79@_-ANyfkoNQC!&Q&p%v*fk z#5`uS!F;x`TKk~onJ>@;L*^~Z`BfjJRR#N!d1d-2*&MMpu`9hB7Dl-=wkNpn{r7q$ z0y*FLo~OLloY+m)0tai8>R{heJ8jQNnN5BC(xc;*1}szX;wwT}E3tcMtJZ9=5iN_d zihqxx*>&VF(+o{hFyMYs6Dtw=A z^#!WD$u0_;px^u!XcX;1biW$o0S^ zVdPP$8p4e<9_cttj!P`9A5kWd+dj`eHx@=Dq8dVcdHaG`*KXOIQ?W^+@7^^c|CTb% zeqo^1x}X})CHu2Vu@b{vw;FzWuF0?j)CAeKn1m_^=fI-CJ|5aw&ca|@7zs2SdiYYc zX*n(`GSqA#^9lF3@7?3^`m6H|N9%xRr8Q=qt3G&?z@^InpQrCstRI#Yo~)`uun_&7 z!$5;x7^yi6S!zmH1^X-}7BvH=3J?T^bJ5hFJ z`CI9$Yw$8hxQ;?>_Nq?4z!4gu7%vS9x4T`}NPH5dk$R3opv8gjgD*;&%=}D#a}{{H z(YUT}ma8qR?|TaZAX{7e)O+U3euVo^7*G`(7Lb9Y<68v4WzFPHE#G1-8w*iQp;G1l z_vHU%E+pu@(uy~u%bk!pwFK%?lw^G{8*zlVi-PQJd9jY8-ohi$RK@vVpo*LDZQllI zP<4B@0AOi{cyviE%9>cpXk4H?DSt|rQKwRKHn|Ui%^+0{{QMgviWv{z%mF`3#JpB3 zHEZe^t+IR>IlL)B^T%%KLZYF#Sz?)qDSl~)tSz0cWbpH2-Gv;>a%wKPx?|B|H|JdS zi>qoWSpywe>BB*+6IRb`*UonP8Zr1L{MoLFVRp-Fis;oFqow&Y%Fp=D3~9$J(DNP% zUr_qetar29x_L|RzgwtTzQ7x{l!^DPAaG{IVUJ~ z*Q}b|tW5AF|K`3I7UJ7gQybLM`tN3Gm1hI}@~#sE;h&T-vbya_Mya{@FdU9lI*+oI zM#eowEk6%%`KC^!-1gdEwyxpnk<{6E>y;hs5G){g6I%Q-^2n;XB8`2Mv{e9OBPB7xuYQQ?@8b&NJ^?_uAw-oQ@fFtCc;;p+;6+x+X_y_=+6OODq`cIy zcXjePe9XY%^?Qe}xc!S|u{1ZbPv6R7egiaI(qf62SKkP{J(BM!DjPA(qPV^~QjtYj z-7c)>eXpCg_E=M1zgaTe6Z>AeI~S^{6)p412GCQ0Vc>S$ zG0`)}rf@ZoBIv)c9z7jc@CwzUp`RJI2ur}Z*M$)g{DoV{M|#V&r# z{kH){Sjg(Xnh-^x~ZzzNiK3i#6B2_kC)2=CK1#f*v zEuJ@Xv4A`hu>_o|&=L^sseN`>=la4=i?&0xDuRh0S202dylaycMp-kI>CfWftuPUq zEl~R)dP01W@&^cxqy!zUUo%Wu>4Wd(ec85P@y&}swJ zIT^wfNn7i9<|qDTL6X(FL0|~EHVAfnfb#)uST3>V?*zI>Zn=YkURLsm zhn9>ZjabQO>q2`Mai0ldvlw26NYH&rt$Cixuzv1b`L|smUD1Q%|1F@wL1;%30b01# zxypxu(xCiI{w)OJ9fN==Si!x6GsG7mPKR}WPZ0%xX?^MI$8bj`@#^SeU^Q_KgyIGo z@Y^}Tk9ifmx8x@em8YjQ7Jw}xVpu!4#@)+dT;U0pS|$&hYOkMhskGPxu;PoRyG|-& z%cZXd0la%;iOKXDQ@EsO-n)m&@|WfhFmqxtzdOIaAvT>ibzpWBH{zV*gd8=j8IT}& zZAHoP1@KUj!g=D|9T;~zSz(NWDpO?XEP>)Z=~X9tOeHoiP*I0;>9SLsem z$4qUucV28v0vj| zb#OBgEsqAxIrM3fyhU5X0GcJ;H{Uhbb@XcX5^AUWLMgCcm&7UlJWsGDb&6(ZDQ(&1 zJv8y*;^t=im*?aUY&Njzz!L1GEg*goh;iWx&-0JDNZnRNt~;1ZbI{})a5ZX|-^s6k z8A*D_fA)C41L|JJ^4ua1oeBe?IH5HkPUkkc>Q}Ma3~XkAzBFmAL-KN$0w@Hmon8VD zgYJBYcH}bT`ea^>Nr~+mW8Ykwq%ur6E~$bQ;YedQ^p^1CU|TBYkqBaip#T(`=gP17 zfIO(zyv{~ly}MqS$r%%F0u?{QJ76Yov}v7ncU5_P+&d<);lC8VGDOA*T!jZ@J3h?9 zaK(TrzrCm?X3-l7Uwge4r8@p{6rRrWD3f%)Ci*h_!0=tA=SA>b^cI?1pSb{M_Y|s` zz-|lnuq&cdT~iFT{w8QMd``J4YeM^{qaQ`&|7uiJ90{5mHv7^vdy_ohw39ZOglMio z^49*y%Rz<)-;-~spmkOKIs~k<&y@gFhn@d<^1BqNAvSjwH(#qtI-g8`Ow@{&els13ML|MFA6dibE0C z94LlX|JuBr7aJ-qgUDxaUcJYLo-xusle;+t*Qm)%-n@h)YhO!le68HSREy(6PgkRC zfWE#MG+0Kh2-`2nHj@eve|5plELU006bwDBjN}7jc3rN)qKtt+{nC+`)$8AC`B&2L z*-{|m0az--5-b8VZ*xw6nk8Hj@=++Ydnbl-U}Onundg&0TWx?9qNOE^F3CBKC~D9U z#5!D0$PDr=PG4HUmTg=$5+AC{;Z2Ui3e2t4XgqvM_RFWq5d=A%^-G1A?1XN_ZP)+=kE}(K| zj_0D|FXd;rQEue1_v$LH+zJ0|7vd&c`f7lW9<-i!0BW6h^%M(%``{6w!G;Zk{C!H& zd9$b|NPLnQDXn0a50cviv==%<1H>pfw1mV`h3PUCv}V%g;}Q!|lA0mdTu_a4#-ySK zH|vi@sRDy-%^|#vSBI327snv?5p(Ms6NPd1PRIk#stx z0q~PzX1g3UKB{6W$U1KLTF$SZk><4Rhy+cs?yzbhMCFrD(t7z@=2K`~8($J2$yB=C z281$yh1@vUF_K)Nng5P!W!K$(XbILj`4-@_M^^P{9if9kc7a&W(2gVSj(z^c2U|MHR0{r=XdL(q-kLZ8xqYYqY0Kb-MW zYzLTZim*|7d#hyA zUYD%&XY7_8NH-NV^iNH5SuBsaG7WaZ^tBjkrO5uD5RdsNwMN6e-8{^yDD2C#Z#9<nd#0A7fp>W&CxhoT|&uJk>i4d;V0f)2@CQKO9&EmdzFTU#yi%? zW7Dm9VRzrQVH^?sFvVweEE4(<<-lu6a#yESvAe?U8*zTSkt+J! zaUN<4c$Q{n$R^u$#M)%n{L?TfHv}oS#6LTm2r{M($L@3=L2&XkQZ{uIjLpd4az7ad zNbK_(o&r}U@?ON{+1&X~#-EM(tin&cu{exWjBw?$*J)nGn1Q^0K}IfBL(~w$ZIl{s{)gPSX?hoSS}0Lt4X2@u>PCqek+DQ$rYmW#S_QEb|rESyoYh^ zTg@tAi*<|Bg{1V?tzY^o=o5td@QKzvIXLSj%-Sj#Q`%+Z3`+aC=R{zgv{rRqKoT)| z+i3MXLLNnItE$l;3OUldK_Io6?>;oQ^*LmtPB@ZtjRht_iEJp9QR33E`zz3`pLn(q@ZXw4}L)Fjn59WojJfYN6MvGR-Ul)deVD zK({oawJy%%Al&QEI{3)S=n(8xa4_PPY7loxH*32P1+_0ibj;grUdWPWBEy?z!Fs$c zKHkcZO7vCeLh~0{m8pa2G_!Y)8{?c{Uq8@aO5h)IQb&9xUEpHPyn_Vgq)y+}3gG70 znrf;TK8?N&glV9sjw-^K*}2u{{J0+)F7ALZZ)u&nG$97SnY;C?A@erZyR-wOv~MPf ztp7Q5_D?k=S%j@VV{gz!aKPRfiYu(CSP|{l;ia!EN%l#=lt%2xLWZWEnq^B0XC}ax zQWKebz+83Xs7hzlhz1^$qHHO1WPeABhR^y%RI|5#Dfs*hs-(7GNd9RWai5NsEzP>u zEOQXKVsbJ_+b&D*Bao`FWhDBGHSxas1(18*S7p0Q+z4>UqlSGz;O==Zw$;L90M_%i zy&ISmHo3cIb+O~S;Qy>?^)pckT-Um^?Lu`EAbLS+)^ler&jTJoQAq$__9*6rJXtdDcYKE7k8ayrsr#Ce zi^kdr6Qa%`QE%^@>2*V`JlZQ_EL_4SkfsVL=>wd599}f}gr9~YiicC)fq=G-x_QDU z!y6h{F*%Ppo}beySLr_G$w0-3wNP!0d>*CnN3borV+k0}DrABHjA!|9J$fB_3X_B?jQfvWBs&mo^ey}?<$s64JXTK! zGeRg{mzQny$c?=oKb5EZvUOj(K}Xd6y-8SXBNS6s-(!DI-J7?l%w*7UW~W|u@f(s{ z_y{KXdf7VXm z%B0)K^tO&L-%giMmTi?QeOumO^Tg zKKoeR9zNV8`Bt}2O_iR=Wn8bxeat%VH_xQ>hrHI~hcmv9$|-}~fmhZJ1Ou;-f9n=Y zFwCmG?7=ixVh8W+@9QY}fszNX%I5&7E|qtj0}y#Pi+}@VTb!mfCzmigprs`&-!QU` zK^NxDY(qF}dK);+nBL5ItEvW-Av4H4{=Ej2vM;%NgaPPs41TrJ5P}>M@)T85%F_}M zSUm(s3cq{IW2@I=!zY#gfL1zH6!u^V*;|>LXJnoDZOiut(YN|V!!A<~DGww-NbV)}tQbm*U^wOO6ub%B~Pm!f04?1t; z-;2Ca0#yCm#ne>XVbJ{qzdAZb@Pmw_J)o56i2a93=^O~aj~y&jCxC4CKmVgX_GLl; zzjy<>KhT%bzyJG#|9g3km%{%y7DeWD%F(HKR~oU8oesxqR7*`?wOIMl>;L~h|Nj^C Ck1s3$ literal 0 HcmV?d00001 From 387374c244d3ff618b437d8f6089e8e969266b2c Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 25 Mar 2018 09:50:11 +0800 Subject: [PATCH 02/17] auto commit --- notes/算法.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/notes/算法.md b/notes/算法.md index 54902c28..9377a9ab 100644 --- a/notes/算法.md +++ b/notes/算法.md @@ -44,7 +44,7 @@


    -

    +

    ## 数学模型 @@ -52,13 +52,13 @@ 使用 \~f(N) 来表示所有随着 N 的增大除以 f(N) 的结果趋近于 1 的函数,例如 N3/6-N2/2+N/3 \~ N3/6。 -

    +

    ### 2. 增长数量级 增长数量级将算法与它的实现隔离开来,一个算法的增长数量级为 N3 与它是否用 Java 实现,是否运行于特定计算机上无关。 -

    +

    ### 3. 内循环 @@ -328,7 +328,7 @@ public class Queue { **API**
    -

    +

    **基本数据结构**
    From 0719a73a039f1cc9ac228e1b180d01021c678080 Mon Sep 17 00:00:00 2001 From: CyC2018 <36260787+CyC2018@users.noreply.github.com> Date: Sun, 25 Mar 2018 09:57:11 +0800 Subject: [PATCH 03/17] auto commit --- README.md | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7ae8492f..085c5e66 100644 --- a/README.md +++ b/README.md @@ -133,15 +133,39 @@ Google 开源项目的代码风格规范。 > [Download](https://github.com/CyC2018/Interview-Notebook/blob/master/other/download.md) +一些 PDF 书籍。 + ## 后记 :memo: -> [Postface](https://github.com/CyC2018/Interview-Notebook/blob/master/other/postface.md) +**(一)关于仓库** - +因为大部分内容是笔者一个字一个字打上去的,所有难免会有一些笔误。如果发现,可以直接在相应的文档上编辑修改。 + +笔者能力有限,很多内容还不够完善。如果您希望和笔者一起完善这个仓库,可以在发表一个 Issue,表明您想要添加的内容,笔者会及时查看。 + +因为不打算将这个仓库做成一个大而全的面试宝典,因此只希望添加一些比较通用的基础知识,或者是和 Java 与分布式相关的内容,但是不添加 Java Web 相关的内容。 + +您也可以在 Issues 中发表一些关于改进本仓库的反馈意见。 + +**(三)关于上传** + +笔者在本地使用为知笔记软件进行书写,为了方便将本地笔记内容上传到 Github 上,实现了一整套自动化上传方案,包括文本文件的导出、提取图片、Markdown 文档转换、Git 同步。 + +进行 Markdown 文档转换的原因是 Github 使用的 GFM 不支持 MathJax 公式,也不支持 TOC 标记,因此需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。这里提供了笔者实现的 GFM 文档转换工具的下载:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)。 + +**(四)关于排版** + +笔记内容按照 [中文文案排版指北](http://mazhuang.org/wiki/chinese-copywriting-guidelines/#%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%9C%B0%E9%81%93%E7%9A%84%E7%BC%A9%E5%86%99) 进行排版,以保证内容的可读性。这里提供了笔者实现的中英混排文档在线工具:[Text-Typesetting](https://github.com/CyC2018/Markdown-Typesetting),目前实现了加空格的功能,之后打算实现对英文专有名词提示首字母大写的功能。 + +不使用 `![]()` 这种方式来引用图片的原因是为了能够控制图片以合适的大小显示,并且在 GFM 中无法使用 `
    ![]()
    ` 让图片居中显示,只能使用 `
    ` 达到此目的。 + +**(五)关于转载** + +本仓库内容使用到的资料都会在最后面的参考资料中给出引用链接,希望您在使用本仓库的内容时也能给出相应的引用链接。 ## License From c5083e6abf3072fca774ad7775565c8cbf5f45ca Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 25 Mar 2018 10:17:58 +0800 Subject: [PATCH 04/17] auto commit --- notes/Leetcode 题解.md | 8 ++++---- notes/分布式问题分析.md | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/notes/Leetcode 题解.md b/notes/Leetcode 题解.md index cf67cdca..59c369db 100644 --- a/notes/Leetcode 题解.md +++ b/notes/Leetcode 题解.md @@ -420,7 +420,7 @@ public int[][] reconstructQueue(int[][] people) { 双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。 -**从一个已经排序的数组中查找出两个数,使它们的和为 0** +**从一个已经排序的数组中找出两个数,使它们的和为 0** [Leetcode :167. Two Sum II - Input array is sorted (Easy)](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/description/) @@ -518,7 +518,7 @@ Output: True Explanation: You could delete the character 'c'. ``` -题目描述:字符串可以删除一个字符,判断是否能构成回文字符串。 +题目描述:可以删除一个字符,判断是否能构成回文字符串。 ```java public boolean validPalindrome(String s) { @@ -548,7 +548,7 @@ private boolean isPalindrome(String s, int l, int r){ [Leetcode : 88. Merge Sorted Array (Easy)](https://leetcode.com/problems/merge-sorted-array/description/) -题目描述:把归并结果存到第一个数组上 +题目描述:把归并结果存到第一个数组上。 ```java public void merge(int[] nums1, int m, int[] nums2, int n) { @@ -596,7 +596,7 @@ Output: "apple" ``` -题目描述:可以删除 s 中的一些字符,使得它成为字符串列表 d 中的一个字符串。要求在 d 中找到满足条件的最长字符串。 +题目描述:删除 s 中的一些字符,使得它构成字符串列表 d 中的一个字符串,找出能构成的最长字符串。 ```java public String findLongestWord(String s, List d) { diff --git a/notes/分布式问题分析.md b/notes/分布式问题分析.md index 228d3fb6..cb029c03 100644 --- a/notes/分布式问题分析.md +++ b/notes/分布式问题分析.md @@ -28,7 +28,7 @@ 分布式主要是为了提供可扩展性以及高可用性,业务中使用分布式的场景主要有分布式存储以及分布式计算。 -分布式存储中可以将数据分片到多个节点上,不仅可以提高性能(可扩展性),同时也可以使用多个节点对同一份数据进行备份。 +分布式存储中可以将数据分片到多个节点上,不仅可以提高性能(可扩展性),同时也可以使用多个节点对同一份数据进行备份(高可用性)。 至于分布式计算,就是将一个大的计算任务分解成小任务分配到多台节点上去执行,再汇总每个小任务的执行结果得到最终结果。MapReduce 是分布式计算的最好例子。 @@ -43,7 +43,7 @@ ## 应用场景 -- 下单:减少库存、更新订单状态。库存和订单不在不同一个数据库,因此涉及分布式事务。 +- 下单:减少库存、更新订单状态。库存和订单不在同一个数据库,因此涉及分布式事务。 - 支付:买家账户扣款、卖家账户入账。买家和卖家账户信息不在同一个数据库,因此涉及分布式事务。 ## 解决方案 From 512b50383774f06d9f406fbfe040482d510f42af Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 25 Mar 2018 11:06:02 +0800 Subject: [PATCH 05/17] auto commit --- notes/Leetcode 题解.md | 60 ++++++++++++++++++++++++++--------------- notes/分布式问题分析.md | 2 +- 2 files changed, 39 insertions(+), 23 deletions(-) diff --git a/notes/Leetcode 题解.md b/notes/Leetcode 题解.md index 59c369db..68bd61b3 100644 --- a/notes/Leetcode 题解.md +++ b/notes/Leetcode 题解.md @@ -596,7 +596,7 @@ Output: "apple" ``` -题目描述:删除 s 中的一些字符,使得它构成字符串列表 d 中的一个字符串,找出能构成的最长字符串。 +题目描述:删除 s 中的一些字符,使得它构成字符串列表 d 中的一个字符串,找出能构成的最长字符串。如果有多个相同长度的结果,返回按字典序排序的最大字符串。 ```java public String findLongestWord(String s, List d) { @@ -632,7 +632,7 @@ public String findLongestWord(String s, List d) { [Leetocde : 215. Kth Largest Element in an Array (Medium)](https://leetcode.com/problems/kth-largest-element-in-an-array/description/) -**排序** :时间复杂度 O(nlgn),空间复杂度 O(1) 解法 +**排序** :时间复杂度 O(nlgn),空间复杂度 O(1) ```java public int findKthLargest(int[] nums, int k) { @@ -706,7 +706,7 @@ public int findKthLargest(int[] nums, int k) { ### 桶排序 -**找出出现频率最多的 k 个数** +**出现频率最多的 k 个数** [Leetcode : 347. Top K Frequent Elements (Medium)](https://leetcode.com/problems/top-k-frequent-elements/description/) @@ -714,6 +714,8 @@ public int findKthLargest(int[] nums, int k) { Given [1,1,1,2,2,3] and k = 2, return [1,2]. ``` +设置若干个桶,每个桶存储出现频率相同的数,并且桶的下标代表桶中数出现的频率,即第 i 个桶中存储的数出现的频率为 i。把数都放到桶之后,从后向前遍历桶,最先得到的 k 个数就是出现频率最多的的 k 个数。 + ```java public List topKFrequent(int[] nums, int k) { List ret = new ArrayList<>(); @@ -747,28 +749,42 @@ public List topKFrequent(int[] nums, int k) {

    -广度优先搜索的搜索过程有点像一层一层地进行遍历:从节点 0 出发,遍历到 6、2、1 和 5 这四个新节点。 +广度优先搜索的搜索过程有点像一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个长度。需要注意的是,遍历过的节点不能再次被遍历。 -继续从 6 开始遍历,得到节点 4 ;从 2 开始遍历,没有下一个节点;从 1 开始遍历,没有下一个节点;从 5 开始遍历,得到 3 和 4 节点。这一轮总共得到两个新节点:4 和 3 。 +第一层: -反复从新节点出发进行上述的遍历操作。 +- 0 -> {6,2,1,5}; -可以看到,每一轮遍历的节点都与根节点路径长度相同。设 di 表示第 i 个节点与根节点的路径长度,推导出一个结论:对于先遍历的节点 i 与后遍历的节点 j,有 di<=dj。利用这个结论,可以求解最短路径 **最优解** 问题:第一次遍历到目的节点,其所经过的路径为最短路径,如果继续遍历,之后再遍历到目的节点,所经过的路径就不是最短路径。 +第二层: + +- 6 -> {4} +- 2 -> {} +- 1 -> {} +- 5 -> {4,3} + +第三层: + +- 4 -> {} +- 3 -> {} + +可以看到,每一轮遍历的节点都与根节点路径长度相同。设 di 表示第 i 个节点与根节点的路径长度,推导出一个结论:对于先遍历的节点 i 与后遍历的节点 j,有 di<=dj。利用这个结论,可以求解最短路径等 **最优解** 问题:第一次遍历到目的节点,其所经过的路径为最短路径,如果继续遍历,之后再遍历到目的节点,所经过的路径就不是最短路径。 在程序实现 BFS 时需要考虑以下问题: -- 队列:用来存储每一轮遍历的节点 -- 标记:对于遍历过得节点,应该将它标记,防止重复遍历; +- 队列:用来存储每一轮遍历的节点; +- 标记:对于遍历过的节点,应该将它标记,防止重复遍历。 **计算在网格中从原点到特定点的最短路径长度** ```html [[1,1,0,1], -[1,0,1,0], -[1,1,1,1], -[1,0,1,1]] + [1,0,1,0], + [1,1,1,1], + [1,0,1,1]] ``` +1 表示可以经过某个位置。 + ```java public int minPathLength(int[][] grids, int tr, int tc) { int[][] next = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; @@ -803,14 +819,14 @@ private class Position {

    -广度优先搜索一层一层遍历,每一层遍历到的所有新节点,要用队列先存储起来以备下一层遍历的时候再遍历;而深度优先搜索在遍历到一个新节点时立马对新节点进行遍历:从节点 0 出发开始遍历,得到到新节点 6 时,立马对新节点 6 进行遍历,得到新节点 4;如此反复以这种方式遍历新节点,直到没有新节点了,此时返回。返回到根节点 0 的情况是,继续对根节点 0 进行遍历,得到新节点 2,然后继续以上步骤。 +广度优先搜索一层一层遍历,每一层得到到的所有新节点,要用队列先存储起来以备下一层遍历的时候再遍历;而深度优先搜索在得到到一个新节点时立马对新节点进行遍历:从节点 0 出发开始遍历,得到到新节点 6 时,立马对新节点 6 进行遍历,得到新节点 4;如此反复以这种方式遍历新节点,直到没有新节点了,此时返回。返回到根节点 0 的情况是,继续对根节点 0 进行遍历,得到新节点 2,然后继续以上步骤。 从一个节点出发,使用 DFS 对一个图进行遍历时,能够遍历到的节点都是从初始节点可达的,DFS 常用来求解这种 **可达性** 问题。 在程序实现 DFS 时需要考虑以下问题: -- 栈:用栈来保存当前节点信息,当遍历新节点返回时能够继续遍历当前节点。也可以使用递归栈。 -- 标记:和 BFS 一样同样需要对已经遍历过得节点进行标记。 +- 栈:用栈来保存当前节点信息,当遍历新节点返回时能够继续遍历当前节点。可以使用递归栈。 +- 标记:和 BFS 一样同样需要对已经遍历过的节点进行标记。 **查找最大的连通面积** @@ -818,13 +834,13 @@ private class Position { ```html [[0,0,1,0,0,0,0,1,0,0,0,0,0], -[0,0,0,0,0,0,0,1,1,1,0,0,0], -[0,1,1,0,1,0,0,0,0,0,0,0,0], -[0,1,0,0,1,1,0,0,1,0,1,0,0], -[0,1,0,0,1,1,0,0,1,1,1,0,0], -[0,0,0,0,0,0,0,0,0,0,1,0,0], -[0,0,0,0,0,0,0,1,1,1,0,0,0], -[0,0,0,0,0,0,0,1,1,0,0,0,0]] + [0,0,0,0,0,0,0,1,1,1,0,0,0], + [0,1,1,0,1,0,0,0,0,0,0,0,0], + [0,1,0,0,1,1,0,0,1,0,1,0,0], + [0,1,0,0,1,1,0,0,1,1,1,0,0], + [0,0,0,0,0,0,0,0,0,0,1,0,0], + [0,0,0,0,0,0,0,1,1,1,0,0,0], + [0,0,0,0,0,0,0,1,1,0,0,0,0]] ``` ```java diff --git a/notes/分布式问题分析.md b/notes/分布式问题分析.md index cb029c03..5862ca48 100644 --- a/notes/分布式问题分析.md +++ b/notes/分布式问题分析.md @@ -194,7 +194,7 @@ EXPIRE 可以为一个键值对设置一个过期时间,从而避免了死锁 **(二)RedLock 算法** -ReadLock 算法使用了多个 Redis 实例来实现分布式锁,这是为了保证在发生单点故障时还可用。 +RedLock 算法使用了多个 Redis 实例来实现分布式锁,这是为了保证在发生单点故障时还可用。 1. 尝试从 N 个相互独立 Redis 实例获取锁,如果一个实例不可用,应该尽快尝试下一个。 2. 计算获取锁消耗的时间,只有当这个时间小于锁的过期时间,并且从大多数(N/2+1)实例上获取了锁,那么就认为锁获取成功了。 From 82be64f16a36715a90e0943fc7f423807bc68fd9 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 25 Mar 2018 12:13:30 +0800 Subject: [PATCH 06/17] auto commit --- notes/分布式问题分析.md | 61 +++++++++++------- pics/10bdf7bf-0daa-4a26-b927-f142b3f8e72b.png | Bin 0 -> 89088 bytes pics/265a355d-aead-48aa-b455-f33b62fe729f.png | Bin 0 -> 50176 bytes pics/52e1af6f-3a7a-4bee-aa8f-fcb5dacebe40.jpg | Bin 0 -> 68608 bytes pics/f0e35b7a-2948-488a-a5a9-97d3f6b5e2d7.png | Bin 0 -> 46080 bytes pics/f8b16d1e-7363-4544-94d6-4939fdf849dc.png | Bin 0 -> 82944 bytes 6 files changed, 37 insertions(+), 24 deletions(-) create mode 100644 pics/10bdf7bf-0daa-4a26-b927-f142b3f8e72b.png create mode 100644 pics/265a355d-aead-48aa-b455-f33b62fe729f.png create mode 100644 pics/52e1af6f-3a7a-4bee-aa8f-fcb5dacebe40.jpg create mode 100644 pics/f0e35b7a-2948-488a-a5a9-97d3f6b5e2d7.png create mode 100644 pics/f8b16d1e-7363-4544-94d6-4939fdf849dc.png diff --git a/notes/分布式问题分析.md b/notes/分布式问题分析.md index 5862ca48..15e9f80e 100644 --- a/notes/分布式问题分析.md +++ b/notes/分布式问题分析.md @@ -128,37 +128,49 @@ ## 实现 -### 1. DNS 解析 - -使用 DNS 作为负载均衡器,根据负载情况返回不同服务器的 IP 地址。大型网站基本使用了这种方式最为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。 - -

    - -### 2. 修改 MAC 地址 - -使用 LVS(Linux Virtual Server)这种链路层负载均衡器,根据负载情况修改请求的 MAC 地址。 - -

    - -### 3. 修改 IP 地址 - -在网络层修改请求的目的 IP 地址。 - -

    - -### 4. HTTP 重定向 +### 1. HTTP 重定向 HTTP 重定向负载均衡服务器收到 HTTP 请求之后会返回服务器的地址,并将该地址写入 HTTP 重定向响应中返回给浏览器,浏览器收到后需要再次发送请求。 -

    +缺点: -### 5. 反向代理 +- 用户访问的延迟会增加; +- 如果负载均衡器宕机,就无法访问该站点。 -正向代理:发生在客户端,是由用户主动发起的。比如翻墙,客户端通过主动访问代理服务器,让代理服务器获得需要的外网数据,然后转发回客户端。 +

    -反向代理:发生在服务器端,用户不知道代理的存在。 +### 2. DNS 重定向 -

    +使用 DNS 作为负载均衡器,根据负载情况返回不同服务器的 IP 地址。大型网站基本使用了这种方式做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。 + +缺点: + +- DNS 查找表可能会被客户端缓存起来,那么之后的所有请求都会被重定向到同一个服务器。 + +

    + +### 3. 修改 MAC 地址 + +使用 LVS(Linux Virtual Server)这种链路层负载均衡器,根据负载情况修改请求的 MAC 地址。 + +

    + +### 4. 修改 IP 地址 + +在网络层修改请求的目的 IP 地址。 + +

    + +### 5. 代理自动配置 + +正向代理与反向代理的区别: + +- 正向代理:发生在客户端,是由用户主动发起的。比如翻墙,客户端通过主动访问代理服务器,让代理服务器获得需要的外网数据,然后转发回客户端。 +- 反向代理:发生在服务器端,用户不知道代理的存在。 + +PAC 服务器是用来判断一个请求是否要经过代理。 + +

    # 四、分布式锁 @@ -353,6 +365,7 @@ Terracotta 的基本原理是对于集群间共享的数据,当在一个节点 - [Comparing Load Balancing Algorithms](http://www.jscape.com/blog/load-balancing-algorithms) - [负载均衡算法及手段](https://segmentfault.com/a/1190000004492447) +- [Redirection and Load Balancing](http://slideplayer.com/slide/6599069/#) - [集群/分布式环境下 5 种 Session 处理策略](http://blog.csdn.net/u010028869/article/details/50773174?ref=myread) - [浅谈分布式锁](http://www.linkedkeeper.com/detail/blog.action?bid=1023) - [深入理解分布式事务](https://juejin.im/entry/577c6f220a2b5800573492be) diff --git a/pics/10bdf7bf-0daa-4a26-b927-f142b3f8e72b.png b/pics/10bdf7bf-0daa-4a26-b927-f142b3f8e72b.png new file mode 100644 index 0000000000000000000000000000000000000000..cb78d85661fb848a39f0f3046d3665fb25e446d8 GIT binary patch literal 89088 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
    diff --git a/notes/分布式问题分析.md b/notes/分布式问题分析.md index 15e9f80e..81d7f9e0 100644 --- a/notes/分布式问题分析.md +++ b/notes/分布式问题分析.md @@ -11,11 +11,10 @@ * [使用场景](#使用场景) * [实现方式](#实现方式) * [五、分布式 Session](#五分布式-session) - * [1. 粘性 Session](#1-粘性-session) - * [2. 服务器 Session 复制](#2-服务器-session-复制) - * [3. Session 共享机制](#3-session-共享机制) - * [4. Session 持久化到数据库](#4-session-持久化到数据库) - * [5. Terracotta 实现 Session 复制](#5-terracotta-实现-session-复制) + * [1. Sticky Sessions](#1-sticky-sessions) + * [2. Session Replication](#2-session-replication) + * [3. Persistent DataStore](#3-persistent-datastore) + * [4. In-Memory DataStore](#4-in-memory-datastore) * [六、分库与分表带来的分布式困境与应对之策](#六分库与分表带来的分布式困境与应对之策) * [事务问题](#事务问题) * [查询问题](#查询问题) @@ -249,99 +248,37 @@ Zookeeper 提供了一种树形结构级的命名空间,/app1/p_1 节点表示 # 五、分布式 Session -如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在 A、B 两台服务器,用户在第一次访问网站时,Nginx 通过其负载均衡机制将用户请求转发到 A 服务器,这时 A 服务器就会给用户创建一个 Session。当用户第二次发送请求时,Nginx 将其负载均衡到 B 服务器,而这时候 B 服务器并不存在 Session,所以就会将用户踢到登录页面。这将大大降低用户体验度,导致用户的流失,这种情况是项目绝不应该出现的。 +在分布式场景下,一个用户的 Session 如果只存储在一个服务器上,那么当负载均衡器把用户的下一个请求转发到另一个服务器上,该服务器没有保存用户的 Session,就可能导致用户需要重新进行登录等操作。 -## 1. 粘性 Session +

    -### 原理 +## 1. Sticky Sessions -粘性 Session 是指将用户锁定到某一个服务器上,比如上面说的例子,用户第一次请求时,负载均衡器将用户的请求转发到了 A 服务器上,如果负载均衡器设置了粘性 Session 的话,那么用户以后的每次请求都会转发到 A 服务器上,相当于把用户和 A 服务器粘到了一块,这就是粘性 Session 机制。 +需要配置负载均衡器,使得一个用户的所有请求都路由到一个服务器节点上,这样就可以把用户的 Session 存放在该服务器节点中。 -### 优点 +缺点:当服务器节点宕机时,将丢失该服务器节点上的所有 Session。 -简单,不需要对 Session 做任何处理。 +

    -### 缺点 +## 2. Session Replication -缺乏容错性,如果当前访问的服务器发生故障,用户被转移到第二个服务器上时,他的 Session 信息都将失效。 +在服务器节点之间进行 Session 同步操作,这样的话用户可以访问任何一个服务器节点。 -### 适用场景 +缺点:需要更好的服务器硬件条件;需要对服务器进行配置。 -- 发生故障对客户产生的影响较小; -- 服务器发生故障是低概率事件。 +

    -## 2. 服务器 Session 复制 +## 3. Persistent DataStore -### 原理 +将 Session 信息持久化到一个数据库中。 -任何一个服务器上的 Session 发生改变,该节点会把这个 Session 的所有内容序列化,然后广播给所有其它节点,不管其他服务器需不需要 Session,以此来保证 Session 同步。 +缺点:有可能需要去实现存取 Session 的代码。 -### 优点 +

    -可容错,各个服务器间 Session 能够实时响应。 +## 4. In-Memory DataStore -### 缺点 - -会对网络负荷造成一定压力,如果 Session 量大的话可能会造成网络堵塞,拖慢服务器性能。 - -### 实现方式 - -1. 设置 Tomcat 的 server.xml 开启 tomcat 集群功能。 -2. 在应用里增加信息:通知应用当前处于集群环境中,支持分布式,即在 web.xml 中添加<distributable/> 选项。 - -## 3. Session 共享机制 - -使用分布式缓存方案比如 Memcached、Redis,但是要求 Memcached 或 Redis 必须是集群。 - -使用 Session 共享也分两种机制,两种情况如下: - -### 3.1 粘性 Session 共享机制 - -和粘性 Session 一样,一个用户的 Session 会绑定到一个 Tomcat 上。Memcached 只是起到备份作用。 - -

    - -### 3.2 非粘性 Session 共享机制 - -#### 原理 - -Tomcat 本身不存储 Session,而是存入 Memcached 中。Memcached 集群构建主从复制架构。 - -

    - -#### 优点 - -可容错,Session 实时响应。 - -#### 实现方式 - -用开源的 msm 插件解决 Tomcat 之间的 Session 共享:Memcached_Session_Manager(MSM) - -## 4. Session 持久化到数据库 - -### 原理 - -拿出一个数据库,专门用来存储 Session 信息。保证 Session 的持久化。 - -### 优点 - -服务器出现问题,Session 不会丢失 - -### 缺点 - -如果网站的访问量很大,把 Session 存储到数据库中,会对数据库造成很大压力,还需要增加额外的开销维护数据库。 - -## 5. Terracotta 实现 Session 复制 - -### 原理 - -Terracotta 的基本原理是对于集群间共享的数据,当在一个节点发生变化的时候,Terracotta 只把变化的部分发送给 Terracotta 服务器,然后由服务器把它转发给真正需要这个数据的节点。它是服务器 Session 复制的优化。 - -

    - -### 优点 - -这样对网络的压力就非常小,各个节点也不必浪费 CPU 时间和内存进行大量的序列化操作。把这种集群间数据共享的机制应用在 Session 同步上,既避免了对数据库的依赖,又能达到负载均衡和灾难恢复的效果。 +可以使用 Redis 和 Memcached 这种内存型数据库对 Session 进行存储,可以大大提高 Session 的读写效率。内存型数据库同样可以持久化数据到磁盘中来保证数据的安全性。 # 六、分库与分表带来的分布式困境与应对之策 @@ -366,6 +303,8 @@ Terracotta 的基本原理是对于集群间共享的数据,当在一个节点 - [Comparing Load Balancing Algorithms](http://www.jscape.com/blog/load-balancing-algorithms) - [负载均衡算法及手段](https://segmentfault.com/a/1190000004492447) - [Redirection and Load Balancing](http://slideplayer.com/slide/6599069/#) +- [Session Management using Spring Session with JDBC DataStore](https://sivalabs.in/2018/02/session-management-using-spring-session-jdbc-datastore/) +- [Apache Wicket User Guide - Reference Documentation](# Apache Wicket User Guide - Reference Documentation) - [集群/分布式环境下 5 种 Session 处理策略](http://blog.csdn.net/u010028869/article/details/50773174?ref=myread) - [浅谈分布式锁](http://www.linkedkeeper.com/detail/blog.action?bid=1023) - [深入理解分布式事务](https://juejin.im/entry/577c6f220a2b5800573492be) diff --git a/notes/数据库系统原理.md b/notes/数据库系统原理.md index cd13daa5..867c849f 100644 --- a/notes/数据库系统原理.md +++ b/notes/数据库系统原理.md @@ -258,9 +258,7 @@ lock-x(A)...unlock(A)...lock-s(B)...unlock(B)...lock-s(c)...unlock(C)... # 五、多版本并发控制 -(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,它的基本思想是通过保存每个数据行的多个版本,一个事务对数据行做修改时,其它事务可以读取之前的一个版本,并且都是读取相同的版本,从而保证多个事务对同一个数据行读取的结果是一致的。 - -用于实现提交读和可重复读这两种隔离级别。而对于未提交读隔离级别,它总是读取最新的数据行,无需使用 MVCC;可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。 +(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,无需使用 MVCC;可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。 ## 版本号 @@ -280,9 +278,11 @@ InnoDB 的 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回 ## 实现过程 +以下过程针对可重复读隔离级别。 + ### 1. SELECT -该操作必须保证多个事务读取到同一个数据行的快照。但是也有例外,如果有一个事务正在修改该数据行,那么它可以读取事务本身所做的修改,而不用和其它事务的读取结果一致。 +该操作必须保证多个事务读取到同一个数据行的快照,这个快照是最近的一个有效快照。但是也有例外,如果有一个事务正在修改该数据行,那么它可以读取事务本身所做的修改,而不用和其它事务的读取结果一致。 当开始新一个事务时,该事务的版本号肯定会大于所有数据行快照的创建版本号,理解这一点很关键。 diff --git a/pics/MultiNode-SessionReplication.jpg b/pics/MultiNode-SessionReplication.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0223bd80a63714135367ee95162852bf1541e2c9 GIT binary patch literal 38912 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 I|4{z_7ynFy+yDRo literal 0 HcmV?d00001 diff --git a/pics/MultiNode-SpringSession.jpg b/pics/MultiNode-SpringSession.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38d56e2c178718fc66b7826e56a91648d91d2f41 GIT binary patch literal 32768 zcmeFZ1ymecv>@8J26uONcMI-~TX1&`PJrO<5(w@DcXtmC!5xAV0t5&NWEzs2EAP&q z_tyORYrVgwx>wciQ>V_^zW3Ru;K$;RO#q6lq>Lm03=9k)4f+6ntN@+^Ai*IZAiyC( zCrHo%1qTfUIuKxCq2Zn(JbU&G0TB@i1p^fc866oB5e)|o9TN*18yg7~7atc34+9Gu z>v0gU$0wnn;Gv=6v5*mwvHr`)k6r*OELb5V00N8*0FDX@6?|<#^UxiU4Da_(=O(nHa zQ^fyI0=r)ZYyXNH7~XpulD{~e_2mqkI`+po73_rGw&FAf>TZ^xjyl8&kIthHUx>$+lPjZay zznNvW)(gY2@wo>1jbW}eZKbUC$0Y6=%%{k-#)&Tm!b{Ex| z1AwNt;rZUQ)V6DC_K+)(K3z%V4}f4U8GGaZNB{o?(|&d{`-1B$0s_HiXS|7&MBhJ- z-cs_%5dRe6lOWK^`!q(;%gvxGlJFW;5*RvtA5nyCG0#oK3(>R2bt*9%{0XAj007Vi zz|=X={adHxp?6zjZSfz!9vut1vR^5A;QC7HJ>L3x{FBs2UI_CvA$?@3_Vn@xCmhi% z`qb8UwmJmr{z&N2(_>>tY`gC7O9bl)QXZJns*V}uDB7LoUXot3fx56unrh=^wq{Kt{C;YA6UXesG z0wKDpshog#4Z+uOfOEy`U8N~i+H}39BLbxn&xcB3ikdr;?>_)nLWBVqa9bZ99PUK_ zVQ^2<@^f$|e6Qemc?EzhtF3sE{m8;WI3Zu0@ho<8fDmrb`?aK zlSy~?4$(c8iHXI9xboj-wztPh8EB$^>I!B*coH1Ag7h_#2)KiRh4%H!G;@z5Xq%W! zb6zV+lawTLrn`_wx&NCAQh&S=OnV^eAm=K)idvjuH<3Y}ENF1eip}=E?S?>Is>As( zZ1RfaA$|;pd8yW``w=--?ENFyF59qGyYQsGU$Tdp%pac?@eq8G^T=PlIdBOBVM45s&MIHgn(Px|?vM-wa^nKw!{@{*F86`=#fK z{Hf0!Sn8ZHa|)_o3a~k4_EBU%`_RJ39?BIlhh^?P${{N`IZeInzEUy=RcD%O2_b zL}@d$&pNcvlCEevak;j2W9b$Ia-+#=W(~Z)A~4%or%fe&Zl4}-9x86)2K}=6(tawP zkT1%aRJB>>_q$(%?hVBke!D!xn)3z#6vFLE!@hXC+<(1VC%STP6@(embo#utkF1}f zp3Ur_2ok}^<9`(-OO3szaI9R5>{VN+T(j#?$65XI)%S0+XP{ZAqTa|(A&6CZ|10d zMmU@^uWgg%9rv*rdk{Y7H~)$c@A-K}ZV#u-;XbFdf(knCRJyKT{$$_T_%r}9RcSmo z+BSsyeDX;D_2-RcXOL3^9Y0+?9Ol-GpAbmrcMfik&M`q^P3+hwc@*Wx9F#NZN&w_~ znJ2p;=ozpN=3j8`1OC+)0Cg1X
    $7BJVhSy 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 literal 0 HcmV?d00001 diff --git a/pics/cookiedata.png b/pics/cookiedata.png new file mode 100644 index 0000000000000000000000000000000000000000..a425fca6a879fc981a548a109af4d296e12967b8 GIT binary patch literal 16384 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 wbtfx#FH=`b7-v%(M|U Date: Sun, 25 Mar 2018 16:32:29 +0800 Subject: [PATCH 08/17] auto commit --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 085c5e66..cd7f59cf 100644 --- a/README.md +++ b/README.md @@ -137,11 +137,11 @@ Google 开源项目的代码风格规范。 ## 后记 :memo: -**(一)关于仓库** +**关于仓库** 本仓库是笔者在准备 2018 年春招实习过程中的学习总结,内容以计算机书籍的学习笔记为主,在整理重点知识的同时会尽量保证知识的系统性。 -**(二)关于贡献** +**关于贡献** 因为大部分内容是笔者一个字一个字打上去的,所有难免会有一些笔误。如果发现,可以直接在相应的文档上编辑修改。 @@ -151,19 +151,19 @@ Google 开源项目的代码风格规范。 您也可以在 Issues 中发表一些关于改进本仓库的反馈意见。 -**(三)关于上传** +**关于上传** 笔者在本地使用为知笔记软件进行书写,为了方便将本地笔记内容上传到 Github 上,实现了一整套自动化上传方案,包括文本文件的导出、提取图片、Markdown 文档转换、Git 同步。 进行 Markdown 文档转换的原因是 Github 使用的 GFM 不支持 MathJax 公式,也不支持 TOC 标记,因此需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。这里提供了笔者实现的 GFM 文档转换工具的下载:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)。 -**(四)关于排版** +**关于排版** 笔记内容按照 [中文文案排版指北](http://mazhuang.org/wiki/chinese-copywriting-guidelines/#%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%9C%B0%E9%81%93%E7%9A%84%E7%BC%A9%E5%86%99) 进行排版,以保证内容的可读性。这里提供了笔者实现的中英混排文档在线工具:[Text-Typesetting](https://github.com/CyC2018/Markdown-Typesetting),目前实现了加空格的功能,之后打算实现对英文专有名词提示首字母大写的功能。 不使用 `![]()` 这种方式来引用图片的原因是为了能够控制图片以合适的大小显示,并且在 GFM 中无法使用 `
    ![]()
    ` 让图片居中显示,只能使用 `
    ` 达到此目的。 -**(五)关于转载** +**关于转载** 本仓库内容使用到的资料都会在最后面的参考资料中给出引用链接,希望您在使用本仓库的内容时也能给出相应的引用链接。 From 3ae88e89bb5ae6fa048a5bb3334ecacc0b7d12c4 Mon Sep 17 00:00:00 2001 From: CyC2018 <36260787+CyC2018@users.noreply.github.com> Date: Sun, 25 Mar 2018 16:36:32 +0800 Subject: [PATCH 09/17] auto commit --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index cd7f59cf..f16b8eb5 100644 --- a/README.md +++ b/README.md @@ -147,21 +147,21 @@ Google 开源项目的代码风格规范。 笔者能力有限,很多内容还不够完善。如果您希望和笔者一起完善这个仓库,可以在发表一个 Issue,表明您想要添加的内容,笔者会及时查看。 -因为不打算将这个仓库做成一个大而全的面试宝典,因此只希望添加一些比较通用的基础知识,或者是和 Java 与分布式相关的内容,但是不添加 Java Web 相关的内容。 +因为不打算将这个仓库做成一个大而全的面试宝典,只希望添加一些比较通用的基础知识,或者是与 Java 和分布式相关的内容,但是不添加 Java Web 相关的内容。 -您也可以在 Issues 中发表一些关于改进本仓库的反馈意见。 +您也可以在 Issues 中发表关于改进本仓库的建议。 **关于上传** 笔者在本地使用为知笔记软件进行书写,为了方便将本地笔记内容上传到 Github 上,实现了一整套自动化上传方案,包括文本文件的导出、提取图片、Markdown 文档转换、Git 同步。 -进行 Markdown 文档转换的原因是 Github 使用的 GFM 不支持 MathJax 公式,也不支持 TOC 标记,因此需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。这里提供了笔者实现的 GFM 文档转换工具的下载:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)。 +进行 Markdown 文档转换是因为 Github 使用的 GFM 不支持 MathJax 公式和 TOC 标记,所以需要替换 MathJax 公式为 CodeCogs 的云服务和重新生成 TOC 目录。这里提供了笔者实现的 GFM 文档转换工具的下载:[GFM-Converter](https://github.com/CyC2018/GFM-Converter)。 **关于排版** -笔记内容按照 [中文文案排版指北](http://mazhuang.org/wiki/chinese-copywriting-guidelines/#%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%9C%B0%E9%81%93%E7%9A%84%E7%BC%A9%E5%86%99) 进行排版,以保证内容的可读性。这里提供了笔者实现的中英混排文档在线工具:[Text-Typesetting](https://github.com/CyC2018/Markdown-Typesetting),目前实现了加空格的功能,之后打算实现对英文专有名词提示首字母大写的功能。 +笔记内容按照 [中文文案排版指北](http://mazhuang.org/wiki/chinese-copywriting-guidelines/#%E4%B8%8D%E8%A6%81%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%9C%B0%E9%81%93%E7%9A%84%E7%BC%A9%E5%86%99) 进行排版,以保证内容的可读性。这里提供了笔者实现的中英混排文档在线排版工具:[Text-Typesetting](https://github.com/CyC2018/Markdown-Typesetting),目前实现了加空格的功能,之后打算实现对英文专有名词提示首字母大写的功能。 -不使用 `![]()` 这种方式来引用图片的原因是为了能够控制图片以合适的大小显示,并且在 GFM 中无法使用 `
    ![]()
    ` 让图片居中显示,只能使用 `
    ` 达到此目的。 +不使用 `![]()` 这种方式来引用图片是为了能够控制图片以合适的大小显示。而且 GFM 不支持 `
    ![]()
    ` 让图片居中显示,只能使用 `
    ` ,所以只能使用 img 标签来引用图片。 **关于转载** From 3f1469ab746c2d7a48fce074dc09cf2ecade3152 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 25 Mar 2018 19:43:09 +0800 Subject: [PATCH 10/17] auto commit --- notes/Leetcode 题解.md | 173 +++++++++++++++++++++-------------------- 1 file changed, 87 insertions(+), 86 deletions(-) diff --git a/notes/Leetcode 题解.md b/notes/Leetcode 题解.md index 68bd61b3..984bc13a 100644 --- a/notes/Leetcode 题解.md +++ b/notes/Leetcode 题解.md @@ -188,7 +188,7 @@ Input: [1,2], [1,2,3] Output: 2 Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2. -You have 3 cookies and their sizes are big enough to gratify all of the children, +You have 3 cookies and their sizes are big enough to gratify all of the children, You need to output 2. ``` @@ -1099,74 +1099,11 @@ private void dfs(int r, int c, boolean[][] canReach) { } ``` -**N 皇后** - -[Leetcode : 51. N-Queens (Hard)](https://leetcode.com/problems/n-queens/description/) - -

    - -题目描述:在 n\*n 的矩阵中摆放 n 个皇后,并且每个皇后不能在同一行,同一列,同一对角线上,要求解所有的 n 皇后解。 - -一行一行地摆放,在确定一行中的那个皇后应该摆在哪一列时,需要用三个标记数组来确定某一列是否合法,这三个标记数组分别为:列标记数组、45 度对角线标记数组和 135 度对角线标记数组。 - -45 度对角线标记数组的维度为 2\*n - 1,通过下图可以明确 (r,c) 的位置所在的数组下标为 r + c。 - -

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

    - -```java -private List> ret; -private char[][] nQueens; -private boolean[] colUsed; -private boolean[] diagonals45Used; -private boolean[] diagonals135Used; -private int n; - -public List> solveNQueens(int n) { - ret = new ArrayList<>(); - nQueens = new char[n][n]; - Arrays.fill(nQueens, '.'); - colUsed = new boolean[n]; - diagonals45Used = new boolean[2 * n - 1]; - diagonals135Used = new boolean[2 * n - 1]; - this.n = n; - backstracking(0); - return ret; -} - -private void backstracking(int row) { - if (row == n) { - List list = new ArrayList<>(); - for (char[] chars : nQueens) { - list.add(new String(chars)); - } - ret.add(list); - return; - } - - for (int col = 0; col < n; col++) { - int diagonals45Idx = row + col; - int diagonals135Idx = n - 1 - (row - col); - if (colUsed[col] || diagonals45Used[diagonals45Idx] || diagonals135Used[diagonals135Idx]) { - continue; - } - nQueens[row][col] = 'Q'; - colUsed[col] = diagonals45Used[diagonals45Idx] = diagonals135Used[diagonals135Idx] = true; - backstracking(row + 1); - colUsed[col] = diagonals45Used[diagonals45Idx] = diagonals135Used[diagonals135Idx] = false; - nQueens[row][col] = '.'; - } -} -``` - ### Backtracking 回溯是 DFS 的一种,它不是用在遍历图的节点上,而是用于求解 **排列组合** 问题,例如有 { 'a','b','c' } 三个字符,求解所有由这三个字符排列得到的字符串。 -在程序实现时,回溯需要注意对元素进行标记的问题。使用递归实现的回溯,在访问一个新元素进入新的递归调用,此时需要将新元素标记为已经访问,这样才能在继续递归调用时不用重复访问该元素;但是在递归返回时,需要将该元素标记为未访问,因为只需要保证在一个递归链中不同时访问一个元素,而在不同的递归链是可以访问已经访问过但是不在当前递归链中的元素。 +在程序实现时,回溯需要注意对元素进行标记的问题。使用递归实现的回溯,在访问一个新元素进入新的递归调用时,需要将新元素标记为已经访问,这样才能在继续递归调用时不用重复访问该元素;但是在递归返回时,需要将该元素标记为未访问,因为只需要保证在一个递归链中不同时访问一个元素,可以访问已经访问过但是不在当前递归链中的元素。 **数字键盘组合** @@ -1343,7 +1280,7 @@ private void backtracking(List permuteList, boolean[] visited, int[] nu [[1,1,2], [1,2,1], [2,1,1]] ``` -题目描述:数组元素可能含有相同的元素,进行排列时就有可能出先重复的排列,要求重复的排列只返回一个。 +题目描述:数组元素可能含有相同的元素,进行排列时就有可能出现 重复的排列,要求重复的排列只返回一个。 在实现上,和 Permutations 不同的是要先排序,然后在添加一个元素时,判断这个元素是否等于前一个元素,如果等于,并且前一个元素还未访问,那么就跳过这个元素。 @@ -1405,8 +1342,7 @@ private void backtracking(int start, int n, int k, List combineList, Li return; } - for(int i = start; i <= n - k + 1; i++){ // 剪枝 - + for(int i = start; i <= n - k + 1; i++) { // 剪枝 combineList.add(i); // 把 i 标记为已访问 backtracking(i + 1, n, k - 1, combineList, ret); combineList.remove(combineList.size() - 1); // 把 i 标记为未访问 @@ -1518,7 +1454,7 @@ private void backtracking(int startIdx, int size, int[] nums) { for (int i = startIdx; i < nums.length; i++) { subsetList.add(nums[i]); - backtracking(i + 1, size, nums); // startIdx 设为下一个元素,使 subset 中的元素都递增排序 + backtracking(i + 1, size, nums); subsetList.remove(subsetList.size() - 1); } } @@ -1575,10 +1511,20 @@ private void backtracking(int startIdx, int size, int[] nums) { } ``` -**分割字符串使得每部分都是回文数** +**分割字符串使得每个部分都是回文数** [Leetcode : 131. Palindrome Partitioning (Medium)](https://leetcode.com/problems/palindrome-partitioning/description/) +```html +For example, given s = "aab", +Return + +[ + ["aa","b"], + ["a","a","b"] +] +``` + ```java private List> ret; @@ -1666,6 +1612,69 @@ private int cubeNum(int i, int j) { } ``` +**N 皇后** + +[Leetcode : 51. N-Queens (Hard)](https://leetcode.com/problems/n-queens/description/) + +

    + +题目描述:在 n\*n 的矩阵中摆放 n 个皇后,并且每个皇后不能在同一行,同一列,同一对角线上,要求解所有的 n 皇后解。 + +一行一行地摆放,在确定一行中的那个皇后应该摆在哪一列时,需要用三个标记数组来确定某一列是否合法,这三个标记数组分别为:列标记数组、45 度对角线标记数组和 135 度对角线标记数组。 + +45 度对角线标记数组的维度为 2\*n - 1,通过下图可以明确 (r,c) 的位置所在的数组下标为 r + c。 + +

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

    + +```java +private List> ret; +private char[][] nQueens; +private boolean[] colUsed; +private boolean[] diagonals45Used; +private boolean[] diagonals135Used; +private int n; + +public List> solveNQueens(int n) { + ret = new ArrayList<>(); + nQueens = new char[n][n]; + Arrays.fill(nQueens, '.'); + colUsed = new boolean[n]; + diagonals45Used = new boolean[2 * n - 1]; + diagonals135Used = new boolean[2 * n - 1]; + this.n = n; + backstracking(0); + return ret; +} + +private void backstracking(int row) { + if (row == n) { + List list = new ArrayList<>(); + for (char[] chars : nQueens) { + list.add(new String(chars)); + } + ret.add(list); + return; + } + + for (int col = 0; col < n; col++) { + int diagonals45Idx = row + col; + int diagonals135Idx = n - 1 - (row - col); + if (colUsed[col] || diagonals45Used[diagonals45Idx] || diagonals135Used[diagonals135Idx]) { + continue; + } + nQueens[row][col] = 'Q'; + colUsed[col] = diagonals45Used[diagonals45Idx] = diagonals135Used[diagonals135Idx] = true; + backstracking(row + 1); + colUsed[col] = diagonals45Used[diagonals45Idx] = diagonals135Used[diagonals135Idx] = false; + nQueens[row][col] = '.'; + } +} +``` + ## 分治 **给表达式加括号** @@ -4947,7 +4956,7 @@ class MapSum { **1. 基本原理** -0s 表示 一串 0 ,1s 表示一串 1。 +0s 表示一串 0 ,1s 表示一串 1。 ``` x ^ 0s = x x & 0s = 0 x | 0s = x @@ -4957,7 +4966,7 @@ x ^ x = 0 x & x = x x | x = x ① 利用 x ^ 1s = \~x 的特点,可以将位级表示翻转;利用 x ^ x = 0 的特点,可以将三个数中重复的两个数去除,只留下另一个数; ② 利用 x & 0s = 0 和 x & 1s = x 的特点,可以实现掩码操作。一个数 num 与 mask :00111100 进行位与操作,只保留 num 中与 mask 的 1 部分相对应的位; -③ 利用 x | 0s = x 和 x | 1s = 1s 的特点,可以实现设置操作。一个数 num 与 mask:00111100 进行位或操作,将 num 中与 mask 的 1 部分相对应的位都设置为 1 。 +③ 利用 x | 0s = x 和 x | 1s = 1s 的特点,可以实现设值操作。一个数 num 与 mask:00111100 进行位或操作,将 num 中与 mask 的 1 部分相对应的位都设置为 1 。 \>\> n 为算术右移,相当于除以 2n; \>\>\> n 为无符号右移,左边会补上 0。 @@ -4965,7 +4974,7 @@ x ^ x = 0 x & x = x x | x = x n&(n-1) 该位运算是去除 n 的位级表示中最低的那一位。例如对于二进制表示 10110 **100** ,减去 1 得到 10110**011**,这两个数相与得到 10110**000**。 -n-n&(\~n+1) 概运算是去除 n 的位级表示中最高的那一位。 +n-n&(\~n+1) 运算是去除 n 的位级表示中最高的那一位。 n&(-n) 该运算得到 n 的位级表示中最低的那一位。-n 得到 n 的反码加 1,对于二进制表示 10110 **100** ,-n 得到 01001**100**,相与得到 00000**100** @@ -5032,9 +5041,9 @@ num & (~((1 << (i+1)) - 1)); **4. Java 中的位操作** ```html -static int Integer.bitCount() // 统计 1 的数量 -static int Integer.highestOneBit() // 获得最高位 -static String toBinaryString(int i) // 转换位二进制表示的字符串 +static int Integer.bitCount(); // 统计 1 的数量 +static int Integer.highestOneBit(); // 获得最高位 +static String toBinaryString(int i); // 转换为二进制表示的字符串 ``` **统计两个数的二进制表示有多少位不同** @@ -5089,13 +5098,13 @@ b = a ^ b; a = a ^ b; ``` -将 c = a ^ b,那么 b ^ c = b ^ b ^ a = a,a ^ c = a ^ a ^ b = b。 +令 c = a ^ b,那么 b ^ c = b ^ b ^ a = a,a ^ c = a ^ a ^ b = b。 **判断一个数是不是 4 的 n 次方** [Leetcode : 342. Power of Four (Easy)](https://leetcode.com/problems/power-of-four/) -该数二进制表示有且只有一个奇数位为 1 ,其余的都为 0 ,例如 16 : 10000。可以每次把 1 向左移动 2 位,就能构造出这种数字,然后比较构造出来的数与要判断的数是否相同。 +该数二进制表示有且只有一个奇数位为 1 ,其余的都为 0 ,例如 16 :10000。可以每次把 1 向左移动 2 位,就能构造出这种数字,然后比较构造出来的数与要判断的数是否相同。 ```java public boolean isPowerOfFour(int num) { @@ -5108,14 +5117,6 @@ public boolean isPowerOfFour(int num) { } ``` -也可以用 Java 的 Integer.toString() 方法将该数转换为 4 进制形式的字符串,然后判断字符串是否以 1 开头。 - -```java -public boolean isPowerOfFour(int num) { - return Integer.toString(num, 4).matches("10*"); -} -``` - **判断一个数是不是 2 的 n 次方** [Leetcode : 231. Power of Two (Easy)](https://leetcode.com/problems/power-of-two/description/) From c1af551c35737567b56085de060a49586e388c2a Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 25 Mar 2018 21:32:01 +0800 Subject: [PATCH 11/17] auto commit --- notes/Leetcode 题解.md | 9 ++++----- notes/数据库系统原理.md | 4 ++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/notes/Leetcode 题解.md b/notes/Leetcode 题解.md index 984bc13a..7e5916ec 100644 --- a/notes/Leetcode 题解.md +++ b/notes/Leetcode 题解.md @@ -3592,9 +3592,9 @@ Input: nums = [1,2,2,4] Output: [2,3] ``` -最直接的方法是先对数组进行排序,这种方法时间复杂度为 O(nlogn).本题可以以 O(n) 的时间复杂度、O(1) 空间复杂度来求解。 +最直接的方法是先对数组进行排序,这种方法时间复杂度为 O(nlogn)。本题可以以 O(n) 的时间复杂度、O(1) 空间复杂度来求解。 -主要思想是让通过交换数组元素,使得数组上的元素在正确的位置上 +主要思想是让通过交换数组元素,使得数组上的元素在正确的位置上。 遍历数组,如果第 i 位上的元素不是 i + 1 ,那么就交换第 i 位 和 nums[i] - 1 位上的元素,使得 num[i] - 1 的元素为 nums[i] ,也就是该位的元素是正确的。交换操作需要循环进行,因为一次交换没办法使得第 i 位上的元素是正确的。但是要交换的两个元素可能就是重复元素,那么循环就可能永远进行下去,终止循环的方法是加上 nums[i] != nums[nums[i] - 1 条件。 @@ -4260,9 +4260,10 @@ private TreeNode toBST(int[] nums, int sIdx, int eIdx){ **两节点的最长路径** +[Leetcode : 543. Diameter of Binary Tree (Easy)](https://leetcode.com/problems/diameter-of-binary-tree/description/) + ```html Input: - 1 / \ 2 3 @@ -4272,8 +4273,6 @@ Input: Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3]. ``` -[Leetcode : 543. Diameter of Binary Tree (Easy)](https://leetcode.com/problems/diameter-of-binary-tree/description/) - ```java private int max = 0; diff --git a/notes/数据库系统原理.md b/notes/数据库系统原理.md index 867c849f..d7246a79 100644 --- a/notes/数据库系统原理.md +++ b/notes/数据库系统原理.md @@ -125,8 +125,8 @@ MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 | - | X | S | | :--: | :--: | :--: | -|X|Yes|No| -|S|No|No| +|X|NO|No| +|S|No|Yes| ### 2. 意向锁 From b590858f29b2dd678dafb7ee359410058589f661 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 25 Mar 2018 21:47:00 +0800 Subject: [PATCH 12/17] auto commit --- notes/2016 校招真题题解.md | 742 ----- notes/Git.md | 158 -- notes/HTTP.md | 717 ----- notes/JDK 中的设计模式.md | 283 -- notes/Java IO.md | 404 --- notes/Java 基础.md | 632 ----- notes/Java 容器.md | 755 ----- notes/Java 并发.md | 930 ------- notes/Java 虚拟机.md | 686 ----- notes/Leetcode 题解.md | 5291 ------------------------------------ notes/Linux.md | 1398 ---------- notes/MySQL.md | 400 --- notes/Redis.md | 460 ---- notes/SQL.md | 732 ----- notes/一致性协议.md | 155 -- notes/代码可读性.md | 342 --- notes/代码风格规范.md | 14 - notes/分布式基础.md | 206 -- notes/分布式问题分析.md | 316 --- notes/剑指 offer 题解.md | 2581 ------------------ notes/数据库系统原理.md | 611 ----- notes/正则表达式.md | 400 --- notes/算法.md | 1621 ----------- notes/计算机操作系统.md | 889 ------ notes/计算机网络.md | 888 ------ notes/设计模式.md | 1800 ------------ notes/重构.md | 1252 --------- notes/面向对象思想.md | 370 ++- 28 files changed, 153 insertions(+), 24880 deletions(-) delete mode 100644 notes/2016 校招真题题解.md delete mode 100644 notes/Git.md delete mode 100644 notes/HTTP.md delete mode 100644 notes/JDK 中的设计模式.md delete mode 100644 notes/Java IO.md delete mode 100644 notes/Java 基础.md delete mode 100644 notes/Java 容器.md delete mode 100644 notes/Java 并发.md delete mode 100644 notes/Java 虚拟机.md delete mode 100644 notes/Leetcode 题解.md delete mode 100644 notes/Linux.md delete mode 100644 notes/MySQL.md delete mode 100644 notes/Redis.md delete mode 100644 notes/SQL.md delete mode 100644 notes/一致性协议.md delete mode 100644 notes/代码可读性.md delete mode 100644 notes/代码风格规范.md delete mode 100644 notes/分布式基础.md delete mode 100644 notes/分布式问题分析.md delete mode 100644 notes/剑指 offer 题解.md delete mode 100644 notes/数据库系统原理.md delete mode 100644 notes/正则表达式.md delete mode 100644 notes/算法.md delete mode 100644 notes/计算机操作系统.md delete mode 100644 notes/计算机网络.md delete mode 100644 notes/设计模式.md delete mode 100644 notes/重构.md diff --git a/notes/2016 校招真题题解.md b/notes/2016 校招真题题解.md deleted file mode 100644 index da6709ab..00000000 --- a/notes/2016 校招真题题解.md +++ /dev/null @@ -1,742 +0,0 @@ - -* [前言](#前言) -* [1. 小米-小米Git](#1-小米-小米git) -* [2. 小米-懂二进制](#2-小米-懂二进制) -* [3. 小米-中国牛市](#3-小米-中国牛市) -* [4. 微软-LUCKY STRING](#4-微软-lucky-string) -* [5. 微软-Numeric Keypad](#5-微软-numeric-keypad) -* [6. 微软-Spring Outing](#6-微软-spring-outing) -* [7. 微软-S-expression](#7-微软-s-expression) -* [8. 华为-最高分是多少](#8-华为-最高分是多少) -* [9. 华为-简单错误记录](#9-华为-简单错误记录) -* [10. 华为-扑克牌大小](#10-华为-扑克牌大小) -* [11. 去哪儿-二分查找](#11-去哪儿-二分查找) -* [12. 去哪儿-首个重复字符](#12-去哪儿-首个重复字符) -* [13. 去哪儿-寻找Coder](#13-去哪儿-寻找coder) -* [14. 美团-最大差值](#14-美团-最大差值) -* [15. 美团-棋子翻转](#15-美团-棋子翻转) -* [16. 美团-拜访](#16-美团-拜访) -* [17. 美团-直方图内最大矩形](#17-美团-直方图内最大矩形) -* [18. 美团-字符串计数](#18-美团-字符串计数) -* [19. 美团-平均年龄](#19-美团-平均年龄) -* [20. 百度-罪犯转移](#20-百度-罪犯转移) -* [22. 百度-裁减网格纸](#22-百度-裁减网格纸) -* [23. 百度-钓鱼比赛](#23-百度-钓鱼比赛) -* [24. 百度-蘑菇阵](#24-百度-蘑菇阵) - - - -# 前言 - -省略的代码: - -```java -import java.util.*; -``` - -```java -public class Solution { -} -``` - -```java -public class Main { - public static void main(String[] args) { - Scanner in = new Scanner(System.in); - while (in.hasNext()) { - } - } -} -``` - -# 1. 小米-小米Git - -- 重建多叉树 -- 使用 LCA - -```java -private class TreeNode { - int id; - List childs = new ArrayList<>(); - - TreeNode(int id) { - this.id = id; - } -} - -public int getSplitNode(String[] matrix, int indexA, int indexB) { - int n = matrix.length; - boolean[][] linked = new boolean[n][n]; // 重建邻接矩阵 - for (int i = 0; i < n; i++) { - for (int j = 0; j < n; j++) { - linked[i][j] = matrix[i].charAt(j) == '1'; - } - } - TreeNode tree = constructTree(linked, 0); - TreeNode ancestor = LCA(tree, new TreeNode(indexA), new TreeNode(indexB)); - return ancestor.id; -} - -private TreeNode constructTree(boolean[][] linked, int root) { - TreeNode tree = new TreeNode(root); - for (int i = 0; i < linked[root].length; i++) { - if (linked[root][i]) { - linked[i][root] = false; // 因为题目给的邻接矩阵是双向的,在这里需要把它转为单向的 - tree.childs.add(constructTree(links, i)); - } - } - return tree; -} - -private TreeNode LCA(TreeNode root, TreeNode p, TreeNode q) { - if (root == null || root.id == p.id || root.id == q.id) return root; - TreeNode ancestor = null; - int cnt = 0; - for (int i = 0; i < root.childs.size(); i++) { - TreeNode tmp = LCA(root.childs.get(i), p, q); - if (tmp != null) { - ancestor = tmp; - cnt++; - } - } - return cnt == 2 ? root : ancestor; -} -``` - -# 2. 小米-懂二进制 - -对两个数进行异或,结果的二进制表示为 1 的那一位就是两个数不同的位。 - -```java -public int countBitDiff(int m, int n) { - return Integer.bitCount(m ^ n); -} -``` - -# 3. 小米-中国牛市 - -背包问题,可以设一个大小为 2 的背包。 - -状态转移方程如下: - -```html -dp[i, j] = max(dp[i, j-1], prices[j] - prices[jj] + dp[i-1, jj]) { jj in range of [0, j-1] } = max(dp[i, j-1], prices[j] + max(dp[i-1, jj] - prices[jj])) -``` - -```java -public int calculateMax(int[] prices) { - int n = prices.length; - int[][] dp = new int[3][n]; - for (int i = 1; i <= 2; i++) { - int localMax = dp[i - 1][0] - prices[0]; - for (int j = 1; j < n; j++) { - dp[i][j] = Math.max(dp[i][j - 1], prices[j] + localMax); - localMax = Math.max(localMax, dp[i - 1][j] - prices[j]); - } - } - return dp[2][n - 1]; -} -``` - -# 4. 微软-LUCKY STRING - -- 斐波那契数列可以预计算; -- 从头到尾遍历字符串的过程,每一轮循环都使用一个 Set 来保存从 i 到 j 出现的字符,并且 Set 保证了字符都不同,因此 Set 的大小就是不同字符的个数。 - -```java -Set fibSet = new HashSet<>(Arrays.asList(1, 2, 3, 5, 8, 13, 21, 34, 55, 89)); -Scanner in = new Scanner(System.in); -String str = in.nextLine(); -int n = str.length(); -Set ret = new HashSet<>(); -for (int i = 0; i < n; i++) { - Set set = new HashSet<>(); - for (int j = i; j < n; j++) { - set.add(str.charAt(j)); - int cnt = set.size(); - if (fibSet.contains(cnt)) { - ret.add(str.substring(i, j + 1)); - } - } -} -String[] arr = ret.toArray(new String[ret.size()]); -Arrays.sort(arr); -for (String s : arr) { - System.out.println(s); -} -``` - -# 5. 微软-Numeric Keypad - -```java -private static int[][] canReach = { - {1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // 0 - {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 1 - {1, 0, 1, 1, 0, 1, 1, 0, 1, 1}, // 2 - {0, 0, 0, 1, 0, 0, 1, 0, 0, 1}, // 3 - {1, 0, 0, 0, 1, 1, 1, 1, 1, 1}, // 4 - {1, 0, 0, 0, 0, 1, 1, 0, 1, 1}, // 5 - {0, 0, 0, 0, 0, 0, 1, 0, 0, 1}, // 6 - {1, 0, 0, 0, 0, 0, 0, 1, 1, 1}, // 7 - {1, 0, 0, 0, 0, 0, 0, 0, 1, 1}, // 8 - {0, 0, 0, 0, 0, 0, 0, 0, 0, 1} // 9 -}; - -private static boolean isLegal(char[] chars, int idx) { - if (idx >= chars.length || idx < 0) return true; - int cur = chars[idx] - '0'; - int next = chars[idx + 1] - '0'; - return canReach[cur][next] == 1; -} - -public static void main(String[] args) { - Scanner in = new Scanner(System.in); - int T = Integer.valueOf(in.nextLine()); - for (int i = 0; i < T; i++) { - String line = in.nextLine(); - char[] chars = line.toCharArray(); - for (int j = 0; j < chars.length - 1; j++) { - while (!isLegal(chars, j)) { - if (--chars[j + 1] < '0') { - chars[j--]--; - } - for (int k = j + 2; k < chars.length; k++) { - chars[k] = '9'; - } - } - } - System.out.println(new String(chars)); - } -} -``` - -# 6. 微软-Spring Outing - -下面以 N = 3,K = 4 来进行讨论。 - -初始时,令第 0 个地方成为待定地点,也就是呆在家里。 - -从第 4 个地点开始投票,每个人只需要比较第 4 个地方和第 0 个地方的优先级,里,如果超过半数的人选择了第 4 个地方,那么更新第 4 个地方成为待定地点。 - -从后往前不断重复以上步骤,不断更新待定地点,直到所有地方都已经投票。 - -上面的讨论中,先令第 0 个地点成为待定地点,是因为这样的话第 4 个地点就只需要和这个地点进行比较,而不用考虑其它情况。如果最开始先令第 1 个地点成为待定地点,那么在对第 2 个地点进行投票时,每个人不仅要考虑第 2 个地点与第 1 个地点的优先级,也要考虑与其后投票地点的优先级。 - -```java -int N = in.nextInt(); -int K = in.nextInt(); -int[][] votes = new int[N][K + 1]; -for (int i = 0; i < N; i++) { - for (int j = 0; j < K + 1; j++) { - int place = in.nextInt(); - votes[i][place] = j; - } -} -int ret = 0; -for (int place = K; place > 0; place--) { - int cnt = 0; - for (int i = 0; i < N; i++) { - if (votes[i][place] < votes[i][ret]) { - cnt++; - } - } - if (cnt > N / 2) { - ret = place; - } -} -System.out.println(ret == 0 ? "otaku" : ret); -``` - -# 7. 微软-S-expression - -# 8. 华为-最高分是多少 - -```java -int N = in.nextInt(); -int M = in.nextInt(); -int[] scores = new int[N]; -for (int i = 0; i < N; i++) { - scores[i] = in.nextInt(); -} -for (int i = 0; i < M; i++) { - String str = in.next(); - if (str.equals("U")) { - int id = in.nextInt() - 1; - int newScore = in.nextInt(); - scores[id] = newScore; - } else { - int idBegin = in.nextInt() - 1; - int idEnd = in.nextInt() - 1; - int ret = 0; - if (idBegin > idEnd) { - int t = idBegin; - idBegin = idEnd; - idEnd = t; - } - for (int j = idBegin; j <= idEnd; j++) { - ret = Math.max(ret, scores[j]); - } - System.out.println(ret); - } -} -``` - -# 9. 华为-简单错误记录 - -```java -HashMap map = new LinkedHashMap<>(); -while (in.hasNextLine()) { - String s = in.nextLine(); - String key = s.substring(s.lastIndexOf('\\') + 1); - map.put(key, map.containsKey(key) ? map.get(key) + 1 : 1); -} -List> list = new LinkedList<>(map.entrySet()); -Collections.sort(list, (o1, o2) -> o2.getValue() - o1.getValue()); -for (int i = 0; i < 8 && i < list.size(); i++) { - String[] token = list.get(i).getKey().split(" "); - String filename = token[0]; - String line = token[1]; - if (filename.length() > 16) filename = filename.substring(filename.length() - 16); - System.out.println(filename + " " + line + " " + list.get(i).getValue()); -} -``` - -# 10. 华为-扑克牌大小 - -```java -public class Main { - - private Map map = new HashMap<>(); - - public Main() { - map.put("3", 0); - map.put("4", 1); - map.put("5", 2); - map.put("6", 3); - map.put("7", 4); - map.put("8", 5); - map.put("9", 6); - map.put("10", 7); - map.put("J", 8); - map.put("Q", 9); - map.put("K", 10); - map.put("A", 11); - map.put("2", 12); - map.put("joker", 13); - map.put("JOKER ", 14); - } - - private String play(String s1, String s2) { - String[] token1 = s1.split(" "); - String[] token2 = s2.split(" "); - CardType type1 = computeCardType(token1); - CardType type2 = computeCardType(token2); - if (type1 == CardType.DoubleJoker) return s1; - if (type2 == CardType.DoubleJoker) return s2; - if (type1 == CardType.Bomb && type2 != CardType.Bomb) return s1; - if (type2 == CardType.Bomb && type1 != CardType.Bomb) return s2; - if (type1 != type2 || token1.length != token2.length) return "ERROR"; - for (int i = 0; i < token1.length; i++) { - int val1 = map.get(token1[i]); - int val2 = map.get(token2[i]); - if (val1 != val2) return val1 > val2 ? s1 : s2; - } - return "ERROR"; - } - - private CardType computeCardType(String[] token) { - boolean hasjoker = false, hasJOKER = false; - for (int i = 0; i < token.length; i++) { - if (token[i].equals("joker")) hasjoker = true; - else if (token[i].equals("JOKER")) hasJOKER = true; - } - if (hasjoker && hasJOKER) return CardType.DoubleJoker; - int maxContinueLen = 1; - int curContinueLen = 1; - String curValue = token[0]; - for (int i = 1; i < token.length; i++) { - if (token[i].equals(curValue)) curContinueLen++; - else { - curContinueLen = 1; - curValue = token[i]; - } - maxContinueLen = Math.max(maxContinueLen, curContinueLen); - } - if (maxContinueLen == 4) return CardType.Bomb; - if (maxContinueLen == 3) return CardType.Triple; - if (maxContinueLen == 2) return CardType.Double; - boolean isStraight = true; - for (int i = 1; i < token.length; i++) { - if (map.get(token[i]) - map.get(token[i - 1]) != 1) { - isStraight = false; - break; - } - } - if (isStraight && token.length == 5) return CardType.Straight; - return CardType.Sigal; - } - - private enum CardType { - DoubleJoker, Bomb, Sigal, Double, Triple, Straight; - } - - public static void main(String[] args) { - Main main = new Main(); - Scanner in = new Scanner(System.in); - while (in.hasNextLine()) { - String s = in.nextLine(); - String[] token = s.split("-"); - System.out.println(main.play(token[0], token[1])); - } - } -} -``` - -# 11. 去哪儿-二分查找 - -对于有重复元素的有序数组,二分查找需要注意以下要点: - -- if (val <= A[m]) h = m; -- 因为 h 的赋值为 m 而不是 m - 1,因此 while 循环的条件也就为 l < h。(如果是 m - 1 循环条件为 l <= h) - -```java -public int getPos(int[] A, int n, int val) { - int l = 0, h = n - 1; - while (l < h) { - int m = l + (h - l) / 2; - if (val <= A[m]) h = m; - else l = m + 1; - } - return A[h] == val ? h : -1; -} -``` - -# 12. 去哪儿-首个重复字符 - -```java -public char findFirstRepeat(String A, int n) { - boolean[] hasAppear = new boolean[256]; - for (int i = 0; i < n; i++) { - char c = A.charAt(i); - if(hasAppear[c]) return c; - hasAppear[c] = true; - } - return ' '; -} -``` - -# 13. 去哪儿-寻找Coder - -```java -public String[] findCoder(String[] A, int n) { - List> list = new ArrayList<>(); - for (String s : A) { - int cnt = 0; - String t = s.toLowerCase(); - int idx = -1; - while (true) { - idx = t.indexOf("coder", idx + 1); - if (idx == -1) break; - cnt++; - } - if (cnt != 0) { - list.add(new Pair<>(s, cnt)); - } - } - Collections.sort(list, (o1, o2) -> (o2.getValue() - o1.getValue())); - String[] ret = new String[list.size()]; - for (int i = 0; i < list.size(); i++) { - ret[i] = list.get(i).getKey(); - } - return ret; -} - -// 牛客网无法导入 javafx.util.Pair,这里就自己实现一下 Pair 类 -private class Pair { - T t; - K k; - - Pair(T t, K k) { - this.t = t; - this.k = k; - } - - T getKey() { - return t; - } - - K getValue() { - return k; - } -} -``` - -# 14. 美团-最大差值 - -贪心策略。 - -```java -public int getDis(int[] A, int n) { - int max = 0; - int soFarMin = A[0]; - for (int i = 1; i < n; i++) { - if(soFarMin > A[i]) soFarMin = A[i]; - else max = Math.max(max, A[i]- soFarMin); - } - return max; -} -``` - -# 15. 美团-棋子翻转 - -```java -public int[][] flipChess(int[][] A, int[][] f) { - int[][] direction = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; - for (int[] ff : f) { - for (int[] dd : direction) { - int r = ff[0] + dd[0] - 1, c = ff[1] + dd[1] - 1; - if(r < 0 || r > 3 || c < 0 || c > 3) continue; - A[r][c] ^= 1; - } - } - return A; -} -``` - -# 16. 美团-拜访 - -```java -private Set paths; -private List curPath; - -public int countPath(int[][] map, int n, int m) { - paths = new HashSet<>(); - curPath = new ArrayList<>(); - for (int i = 0; i < n; i++) { - for (int j = 0; j < m; j++) { - if (map[i][j] == 1) { - map[i][j] = -1; - int[][] leftRightDirection = {{1, 0}, {-1, 0}}; - int[][] topDownDirection = {{0, 1}, {0, -1}}; - for (int[] lr : leftRightDirection) { - for (int[] td : topDownDirection) { - int[][] directions = {lr, td}; - backtracking(map, n, m, i, j, directions); - } - } - return paths.size(); - } - } - } - return 0; -} - -private void backtracking(int[][] map, int n, int m, int r, int c, int[][] directions) { - if (map[r][c] == 2) { - String path = ""; - for (int num : curPath) { - path += num; - } - paths.add(path); - return; - } - for (int i = 0; i < directions.length; i++) { - int nextR = r + directions[i][0]; - int nextC = c + directions[i][1]; - if (nextR < 0 || nextR >= n || nextC < 0 || nextC >= m || map[nextR][nextC] == -1) continue; - map[nextR][nextC] = map[nextR][nextC] == 2 ? 2 : -1; - curPath.add(nextR); - curPath.add(nextC); - backtracking(map, n, m, nextR, nextC, directions); - curPath.remove(curPath.size() - 1); - curPath.remove(curPath.size() - 1); - map[nextR][nextC] = map[nextR][nextC] == 2 ? 2 : 0; - } -} -``` - -# 17. 美团-直方图内最大矩形 - -```java -public int countArea(int[] A, int n) { - int max = 0; - for (int i = 0; i < n; i++) { - int min = A[i]; - for (int j = i; j < n; j++) { - min = Math.min(min, A[j]); - max = Math.max(max, min * (j - i + 1)); - } - } - return max; -} -``` - -# 18. 美团-字符串计数 - -字符串都是小写字符,可以把字符串当成是 26 进制。但是字典序的比较和普通的整数比较不同,是从左往右进行比较,例如 "ac" 和 "abc",字典序的比较结果为 "ac" > "abc",如果按照整数方法比较,因为 "abc" 是三位数,显然更大。 - -由于两个字符串的长度可能不想等,在 s1 空白部分和 s2 对应部分进行比较时,应该把 s1 的空白部分看成是 'a' 字符进行填充的。 - -还有一点要注意的是,s1 到 s2 长度为 leni 的字符串个数只比较前面 i 个字符。例如 'aaa' 和 'bbb' ,长度为 2 的个数为 'aa' 到 'bb' 的字符串个数,不需要考虑后面部分的字符。 - -在统计个数时,从 len1 开始一直遍历到最大合法长度,每次循环都统计长度为 i 的子字符串个数。 - -```java -String s1 = in.next(); -String s2 = in.next(); -int len1 = in.nextInt(); -int len2 = in.nextInt(); -int len = Math.min(s2.length(), len2); -int[] subtractArr = new int[len]; -for (int i = 0; i < len; i++) { - char c1 = i < s1.length() ? s1.charAt(i) : 'a'; - char c2 = s2.charAt(i); - subtractArr[i] = c2 - c1; -} -int ret = 0; -for (int i = len1; i <= len; i++) { - for (int j = 0; j < i; j++) { - ret += subtractArr[j] * Math.pow(26, i - j - 1); - } -} -System.out.println(ret - 1); -``` - -# 19. 美团-平均年龄 - -```java -int W = in.nextInt(); -double Y = in.nextDouble(); -double x = in.nextDouble(); -int N = in.nextInt(); -while (N-- > 0) { - Y++; // 老员工每年年龄都要加 1 - Y += (21 - Y) * x; -} -System.out.println((int) Math.ceil(Y)); -``` - -# 20. 百度-罪犯转移 - -部分和问题,将每次求的部分和缓存起来。 - -```java -int n = in.nextInt(); -int t = in.nextInt(); -int c = in.nextInt(); -int[] values = new int[n]; -for (int i = 0; i < n; i++) { - values[i] = in.nextInt(); -} -int cnt = 0; -int totalValue = 0; -for (int s = 0, e = c - 1; e < n; s++, e++) { - if (s == 0) { - for (int j = 0; j < c; j++) totalValue += values[j]; - } else { - totalValue = totalValue - values[s - 1] + values[e]; - } - if (totalValue <= t) cnt++; -} -System.out.println(cnt); -``` - -# 22. 百度-裁减网格纸 - -```java -int n = in.nextInt(); -int minX, minY, maxX, maxY; -minX = minY = Integer.MAX_VALUE; -maxX = maxY = Integer.MIN_VALUE; -for (int i = 0; i < n; i++) { - int x = in.nextInt(); - int y = in.nextInt(); - minX = Math.min(minX, x); - minY = Math.min(minY, y); - maxX = Math.max(maxX, x); - maxY = Math.max(maxY, y); -} -System.out.println((int) Math.pow(Math.max(maxX - minX, maxY - minY), 2)); -``` - -# 23. 百度-钓鱼比赛 - -P ( 至少钓一条鱼 ) = 1 - P ( 一条也钓不到 ) - -坑:读取概率矩阵的时候,需要一行一行进行读取,而不能直接用 in.nextDouble()。 - -```java -public static void main(String[] args) { - Scanner in = new Scanner(System.in); - while (in.hasNext()) { - int n = in.nextInt(); - int m = in.nextInt(); - int x = in.nextInt(); - int y = in.nextInt(); - int t = in.nextInt(); - in.nextLine(); // 坑 - double pcc = 0.0; - double sum = 0.0; - for (int i = 1; i <= n; i++) { - String[] token = in.nextLine().split(" "); // 坑 - for (int j = 1; j <= m; j++) { - double p = Double.parseDouble(token[j - 1]); - // double p = in.nextDouble(); - sum += p; - if (i == x && j == y) { - pcc = p; - } - } - } - double pss = sum / (n * m); - pcc = computePOfIRT(pcc, t); - pss = computePOfIRT(pss, t); - System.out.println(pcc > pss ? "cc" : pss > pcc ? "ss" : "equal"); - System.out.printf("%.2f\n", Math.max(pcc, pss)); - } -} - -// compute probability of independent repeated trials -private static double computePOfIRT(double p, int t) { - return 1 - Math.pow((1 - p), t); -} -``` - -# 24. 百度-蘑菇阵 - -这题用回溯会超时,需要用 DP。 - -dp[i][j] 表示到达 (i,j) 位置不会触碰蘑菇的概率。对于 N\*M 矩阵,如果 i == N || j == M,那么 (i,j) 只能有一个移动方向;其它情况下能有两个移动方向。 - -考虑以下矩阵,其中第 3 行和第 3 列只能往一个方向移动,而其它位置可以有两个方向移动。 - - -```java -int N = in.nextInt(); -int M = in.nextInt(); -int K = in.nextInt(); -boolean[][] mushroom = new boolean[N][M]; -while (K-- > 0) { - int x = in.nextInt(); - int y = in.nextInt(); - mushroom[x - 1][y - 1] = true; -} -double[][] dp = new double[N][M]; -dp[0][0] = 1; -for (int i = 0; i < N; i++) { - for (int j = 0; j < M; j++) { - if (mushroom[i][j]) dp[i][j] = 0; - else { - double cur = dp[i][j]; - if (i == N - 1 && j == M - 1) break; - if (i == N - 1) dp[i][j + 1] += cur; - else if (j == M - 1) dp[i + 1][j] += cur; - else { - dp[i][j + 1] += cur / 2; - dp[i + 1][j] += cur / 2; - } - } - } -} -System.out.printf("%.2f\n", dp[N - 1][M - 1]); -``` diff --git a/notes/Git.md b/notes/Git.md deleted file mode 100644 index 1695faad..00000000 --- a/notes/Git.md +++ /dev/null @@ -1,158 +0,0 @@ - -* [学习资料](#学习资料) -* [集中式与分布式](#集中式与分布式) -* [Git 的中心服务器](#git-的中心服务器) -* [Git 工作流](#git-工作流) -* [分支实现](#分支实现) -* [冲突](#冲突) -* [Fast forward](#fast-forward) -* [分支管理策略](#分支管理策略) -* [储藏(Stashing)](#储藏stashing) -* [SSH 传输设置](#ssh-传输设置) -* [.gitignore 文件](#gitignore-文件) -* [Git 命令一览](#git-命令一览) - - - -# 学习资料 - -- [Git - 简明指南](http://rogerdudler.github.io/git-guide/index.zh.html) -- [图解 Git](http://marklodato.github.io/visual-git-guide/index-zh-cn.html) -- [廖雪峰 : Git 教程](https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000) -- [Learn Git Branching](https://learngitbranching.js.org/) - -# 集中式与分布式 - -Git 属于分布式版本控制系统,而 SVN 属于集中式。 - -集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 - -集中式版本控制有安全性问题,当中心服务器挂了所有人都没办法工作了。 - -集中式版本控制需要连网才能工作,如果网速过慢,那么提交一个文件的会慢的无法让人忍受。而分布式版本控制不需要连网就能工作。 - -分布式版本控制新建分支、合并分支操作速度非常快,而集中式版本控制新建一个分支相当于复制一份完整代码。 - -# Git 的中心服务器 - -Git 的中心服务器用来交换每个用户的修改。没有中心服务器也能工作,但是中心服务器能够 24 小时保持开机状态,这样就能更方便的交换修改。Github 就是一种 Git 中心服务器。 - -# Git 工作流 - -

    - -新建一个仓库之后,当前目录就成为了工作区,工作区下有一个隐藏目录 .git,它属于 Git 的版本库。 - -Git 版本库有一个称为 stage 的暂存区,还有自动创建的 master 分支以及指向分支的 HEAD 指针。 - -

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

    - -可以跳过暂存区域直接从分支中取出修改或者直接提交修改到分支中 - -- git commit -a 直接把所有文件的修改添加到暂缓区然后执行提交 -- git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作 - -# 分支实现 - -Git 把每次提交都连成一条时间线。分支使用指针来实现,例如 master 分支指针指向时间线的最后一个节点,也就是最后一次提交。HEAD 指针指向的是当前分支。 - -

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

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

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

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

    - -Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。 - -``` -<<<<<<< HEAD -Creating a new branch is quick & simple. -======= -Creating a new branch is quick AND simple. ->>>>>>> feature1 -``` - -# Fast forward - -"快进式合并"(fast-farward merge),会直接将 master 分支指向合并的分支,这种模式下进行分支合并会丢失分支信息,也就不能在分支历史上看出分支信息。 - -可以在合并时加上 --no-ff 参数来禁用 Fast forward 模式,并且加上 -m 参数让合并时产生一个新的 commit。 - -``` -$ git merge --no-ff -m "merge with no-ff" dev -``` - -

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

    - -# 储藏(Stashing) - -在一个分支上操作之后,如果还没有将修改提交到分支上,此时进行切换分支,那么另一个分支上也能看到新的修改。这是因为所有分支都共用一个工作区的缘故。 - -可以使用 git stash 将当前分支的修改储藏起来,此时当前工作区的所有修改都会被存到栈上,也就是说当前工作区是干净的,没有任何未提交的修改。此时就可以安全的切换到其它分支上了。 - -``` -$ git stash -Saved working directory and index state \ "WIP on master: 049d078 added the index file" -HEAD is now at 049d078 added the index file (To restore them type "git stash apply") -``` - -该功能可以用于 bug 分支的实现。如果当前正在 dev 分支上进行开发,但是此时 master 上有个 bug 需要修复,但是 dev 分支上的开发还未完成,不想立即提交。在新建 bug 分支并切换到 bug 分支之前就需要使用 git stash 将 dev 分支的未提交修改储藏起来。 - -# SSH 传输设置 - -Git 仓库和 Github 中心仓库之间是通过 SSH 加密。 - -如果工作区下没有 .ssh 目录,或者该目录下没有 id_rsa 和 id_rsa.pub 这两个文件,可以通过以下命令来创建 SSH Key: - -``` -$ ssh-keygen -t rsa -C "youremail@example.com" -``` - -然后把公钥 id_rsa.pub 的内容复制到 Github "Account settings" 的 SSH Keys 中。 - -# .gitignore 文件 - -忽略以下文件: - -1. 操作系统自动生成的文件,比如缩略图; -2. 编译生成的中间文件,比如 Java 编译产生的 .class 文件; -3. 自己的敏感信息,比如存放口令的配置文件。 - -不需要全部自己编写,可以到 [https://github.com/github/gitignore](https://github.com/github/gitignore) 中进行查询。 - -# Git 命令一览 - -

    - -比较详细的地址:http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf - - diff --git a/notes/HTTP.md b/notes/HTTP.md deleted file mode 100644 index a20cc03c..00000000 --- a/notes/HTTP.md +++ /dev/null @@ -1,717 +0,0 @@ - -* [一 、基础概念](#一-基础概念) - * [Web 基础](#web-基础) - * [URL](#url) - * [请求和响应报文](#请求和响应报文) -* [二、HTTP 方法](#二http-方法) - * [GET](#get) - * [POST](#post) - * [HEAD](#head) - * [PUT](#put) - * [PATCH](#patch) - * [DELETE](#delete) - * [OPTIONS](#options) - * [CONNECT](#connect) - * [TRACE](#trace) -* [三、HTTP 状态码](#三http-状态码) - * [2XX 成功](#2xx-成功) - * [3XX 重定向](#3xx-重定向) - * [4XX 客户端错误](#4xx-客户端错误) - * [5XX 服务器错误](#5xx-服务器错误) -* [四、HTTP 首部](#四http-首部) - * [通用首部字段](#通用首部字段) - * [请求首部字段](#请求首部字段) - * [响应首部字段](#响应首部字段) - * [实体首部字段](#实体首部字段) -* [五、具体应用](#五具体应用) - * [Cookie](#cookie) - * [缓存](#缓存) - * [持久连接](#持久连接) - * [编码](#编码) - * [分块传输](#分块传输) - * [多部分对象集合](#多部分对象集合) - * [范围请求](#范围请求) - * [内容协商](#内容协商) - * [虚拟主机](#虚拟主机) - * [通信数据转发](#通信数据转发) -* [六、HTTPs](#六https) - * [加密](#加密) - * [认证](#认证) - * [完整性](#完整性) -* [七、Web 攻击技术](#七web-攻击技术) - * [攻击模式](#攻击模式) - * [跨站脚本攻击](#跨站脚本攻击) - * [SQL 注入攻击](#sql-注入攻击) - * [跨站点请求伪造](#跨站点请求伪造) - * [拒绝服务攻击](#拒绝服务攻击) -* [八、各版本比较](#八各版本比较) - * [HTTP/1.0 与 HTTP/1.1 的区别](#http10-与-http11-的区别) - * [HTTP/1.1 与 HTTP/2.0 的区别](#http11-与-http20-的区别) -* [参考资料](#参考资料) - - - -# 一 、基础概念 - -## Web 基础 - -- HTTP(HyperText Transfer Protocol,超文本传输协议)。 -- WWW(World Wide Web)的三种技术:HTML、HTTP、URL。 -- RFC(Request for Comments,征求修正意见书),互联网的设计文档。 - -## URL - -- URI(Uniform Resource Indentifier,统一资源标识符) -- URL(Uniform Resource Locator,统一资源定位符) -- URN(Uniform Resource Name,统一资源名称),例如 urn:isbn:0-486-27557-4 。 - -URI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基本都是 URL。 - -

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

    - -### 2. 响应报文 - -

    - -# 二、HTTP 方法 - -客户端发送的 **请求报文** 第一行为请求行,包含了方法字段。 - -## GET - -> 获取资源 - -当前网络请求中,绝大部分使用的是 GET 方法。 - -## POST - -> 传输实体主体 - -POST 主要目的不是获取资源,而是传输存储在内容实体中的数据。 - -GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而 POST 的参数存储在内容实体。 - -``` -GET /test/demo_form.asp?name1=value1&name2=value2 HTTP/1.1 -``` - -``` -POST /test/demo_form.asp HTTP/1.1 -Host: w3schools.com -name1=value1&name2=value2 -``` - -GET 的传参方式相比于 POST 安全性较差,因为 GET 传的参数在 URL 中是可见的,可能会泄露私密信息。并且 GET 只支持 ASCII 字符,如果参数为中文则可能会出现乱码,而 POST 支持标准字符集。 - -GET 和 POST 的另一个区别是,使用 GET 方法,浏览器会把 HTTP Header 和 Data 一并发送出去,服务器响应 200(OK)并返回数据。而使用 POST 方法,浏览器先发送 Header,服务器响应 100(Continue)之后,浏览器再发送 Data,最后服务器响应 200(OK)并返回数据。 - -## HEAD - -> 获取报文首部 - -和 GET 方法一样,但是不返回报文实体主体部分。 - -主要用于确认 URL 的有效性以及资源更新的日期时间等。 - -## PUT - -> 上传文件 - -由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。 - -```html -PUT /new.html HTTP/1.1 -Host: example.com -Content-type: text/html -Content-length: 16 - -

    New File

    -``` - -## PATCH - -> 对资源进行部分修改 - -PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改。 - -```html -PATCH /file.txt HTTP/1.1 -Host: www.example.com -Content-Type: application/example -If-Match: "e0023aa4e" -Content-Length: 100 - -[description of changes] -``` - -## DELETE - -> 删除文件 - -与 PUT 功能相反,并且同样不带验证机制。 - -```html -DELETE /file.html HTTP/1.1 -``` - -## OPTIONS - -> 查询支持的方法 - -查询指定的 URL 能够支持的方法。 - -会返回 Allow: GET, POST, HEAD, OPTIONS 这样的内容。 - -## CONNECT - -> 要求用隧道协议连接代理 - -要求在于代理服务器通信时建立隧道,使用 SSL(Secure Sokets Layer,安全套接字)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。 - -```html -CONNECT www.example.com:443 HTTP/1.1 -``` - -

    - -## TRACE - -> 追踪路径 - -服务器会将通信路径返回给客户端。 - -发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服务器就会减 1,当数值为 0 时就停止传输。 - -通常不会使用 TRACE,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪),因此更不会去使用它。 - -

    - -# 三、HTTP 状态码 - -服务器返回的 **响应报文** 中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。 - -| 状态码 | 类别 | 原因短语 | -| :---: | :---: | :---: | -| 1XX | Informational(信息性状态码) | 接收的请求正在处理 | -| 2XX | Success(成功状态码) | 请求正常处理完毕 | -| 3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 | -| 4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 | -| 5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 | - -## 2XX 成功 - -- **200 OK** - -- **204 No Content** :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。 - -- **206 Partial Content** :表示客户端进行了范围请求。响应报文包含由 Content-Range 指定范围的实体内容。 - -## 3XX 重定向 - -- **301 Moved Permanently** :永久性重定向 - -- **302 Found** :临时性重定向 - -- **303 See Other** :和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。 - -- 注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会 在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。 - -- **304 Not Modified** :如果请求报文首部包含一些条件,例如:If-Match,If-ModifiedSince,If-None-Match,If-Range,If-Unmodified-Since,但是不满足条件,则服务器会返回 304 状态码。 - -- **307 Temporary Redirect** :临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。 - -## 4XX 客户端错误 - -- **400 Bad Request** :请求报文中存在语法错误。 - -- **401 Unauthorized** :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。 - -

    - -- **403 Forbidden** :请求被拒绝,服务器端没有必要给出拒绝的详细理由。 - -- **404 Not Found** - -## 5XX 服务器错误 - -- **500 Internal Server Error** :服务器正在执行请求时发生错误。 - -- **503 Service Unavilable** :服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。 - -# 四、HTTP 首部 - -有 4 种类型的首部字段:通用首部字段、请求首部字段、响应首部字段和实体首部字段。 - -各种首部字段及其含义如下(不需要全记,仅供查阅): - -## 通用首部字段 - -| 首部字段名 | 说明 | -| :--: | :--: | -| Cache-Control | 控制缓存的行为 | -| Connection | 控制不再转发给代理的首部字段、管理持久连接| -| Date | 创建报文的日期时间 | -| Pragma | 报文指令 | -| Trailer | 报文末端的首部一览 | -| Transfer-Encoding | 指定报文主体的传输编码方式 | -| Upgrade | 升级为其他协议 | -| Via | 代理服务器的相关信息 | -| Warning | 错误通知 | - -## 请求首部字段 - -| 首部字段名 | 说明 | -| :--: | :--: | -| Accept | 用户代理可处理的媒体类型 | -| Accept-Charset | 优先的字符集 | -| Accept-Encoding | 优先的内容编码 | -| Accept-Language | 优先的语言(自然语言) | -| Authorization | Web 认证信息 | -| Expect | 期待服务器的特定行为 | -| From | 用户的电子邮箱地址 | -| Host | 请求资源所在服务器 | -| If-Match | 比较实体标记(ETag) | -| If-Modified-Since | 比较资源的更新时间 | -| If-None-Match | 比较实体标记(与 If-Match 相反) | -| If-Range | 资源未更新时发送实体 Byte 的范围请求 | -| If-Unmodified-Since | 比较资源的更新时间(与 If-Modified-Since 相反) | -| Max-Forwards | 最大传输逐跳数 | -| Proxy-Authorization | 代理服务器要求客户端的认证信息 | -| Range | 实体的字节范围请求 | -| Referer | 对请求中 URI 的原始获取方 | -| TE | 传输编码的优先级 | -| User-Agent | HTTP 客户端程序的信息 | - -## 响应首部字段 - -| 首部字段名 | 说明 | -| :--: | :--: | -| Accept-Ranges | 是否接受字节范围请求 | -| Age | 推算资源创建经过时间 | -| ETag | 资源的匹配信息 | -| Location | 令客户端重定向至指定 URI | -| Proxy-Authenticate | 代理服务器对客户端的认证信息 | -| Retry-After | 对再次发起请求的时机要求 | -| Server | HTTP 服务器的安装信息 | -| Vary | 代理服务器缓存的管理信息 | -| WWW-Authenticate | 服务器对客户端的认证信息 | - -## 实体首部字段 - -| 首部字段名 | 说明 | -| :--: | :--: | -| Allow | 资源可支持的 HTTP 方法 | -| Content-Encoding | 实体主体适用的编码方式 | -| Content-Language | 实体主体的自然语言 | -| Content-Length | 实体主体的大小 | -| Content-Location | 替代对应资源的 URI | -| Content-MD5 | 实体主体的报文摘要 | -| Content-Range | 实体主体的位置范围 | -| Content-Type | 实体主体的媒体类型 | -| Expires | 实体主体过期的日期时间 | -| Last-Modified | 资源的最后修改日期时间 | - -# 五、具体应用 - -## Cookie - -HTTP 协议是无状态的,主要是为了让 HTTP 协议尽可能简单,使得它能够处理大量事务。HTTP/1.1 引入 Cookie 来保存状态信息。 - -Cookie 是服务器发送给客户端的数据,该数据会被保存在浏览器中,并且在下一次发送请求时包含该数据。通过 Cookie 可以让服务器知道两个请求是否来自于同一个客户端,从而实现保持登录状态等功能。 - -### 1. 创建过程 - -服务器发送的响应报文包含 Set-Cookie 字段,客户端得到响应报文后把 Cookie 内容保存到浏览器中。 - -```html -HTTP/1.0 200 OK -Content-type: text/html -Set-Cookie: yummy_cookie=choco -Set-Cookie: tasty_cookie=strawberry - -[page content] -``` - -客户端之后发送请求时,会从浏览器中读出 Cookie 值,在请求报文中包含 Cookie 字段。 - -```html -GET /sample_page.html HTTP/1.1 -Host: www.example.org -Cookie: yummy_cookie=choco; tasty_cookie=strawberry -``` - -### 2. Set-Cookie - -| 属性 | 说明 | -| :--: | -- | -| NAME=VALUE | 赋予 Cookie 的名称和其值(必需项) | -| expires=DATE | Cookie 的有效期(若不明确指定则默认为浏览器关闭前为止) | -| path=PATH | 将服务器上的文件目录作为 Cookie 的适用对象(若不指定则默认为文档所在的文件目录) | -| domain=域名 | 作为 Cookie 适用对象的域名(若不指定则默认为创建 Cookie 的服务器的域名) | -| Secure | 仅在 HTTPS 安全通信时才会发送 Cookie | -| HttpOnly | 加以限制,使 Cookie 不能被 JavaScript 脚本访问 | - -### 3. Session 和 Cookie 区别 - -Session 是服务器用来跟踪用户的一种手段,每个 Session 都有一个唯一标识:Session ID。当服务器创建了一个 Session 时,给客户端发送的响应报文就包含了 Set-Cookie 字段,其中有一个名为 sid 的键值对,这个键值对就是 Session ID。客户端收到后就把 Cookie 保存在浏览器中,并且之后发送的请求报文都包含 Session ID。HTTP 就是通过 Session 和 Cookie 这两种方式一起合作来实现跟踪用户状态的,Session 用于服务器端,Cookie 用于客户端。 - -### 4. 浏览器禁用 Cookie 的情况 - -会使用 URL 重写技术,在 URL 后面加上 sid=xxx 。 - -### 5. 使用 Cookie 实现用户名和密码的自动填写 - -网站脚本会自动从保存在浏览器中的 Cookie 读取用户名和密码,从而实现自动填写。 - -## 缓存 - -### 1. 优点 - -1. 降低服务器的负担; -2. 提高响应速度(缓存资源比服务器上的资源离客户端更近)。 - -### 2. 实现方法 - -1. 让代理服务器进行缓存; -2. 让客户端浏览器进行缓存。 - -### 3. Cache-Control 字段 - -HTTP 通过 Cache-Control 首部字段来控制缓存。 - -```html -Cache-Control: private, max-age=0, no-cache -``` - -### 4. no-cache 指令 - -该指令出现在请求报文的 Cache-Control 字段中,表示缓存服务器需要先向原服务器验证缓存资源是否过期; - -该指令出现在响应报文的 Cache-Control 字段中,表示缓存服务器在进行缓存之前需要先验证缓存资源的有效性。 - -### 5. no-store 指令 - -该指令表示缓存服务器不能对请求或响应的任何一部分进行缓存。 - -no-cache 不表示不缓存,而是缓存之前需要先进行验证,no-store 才是不进行缓存。 - -### 6. max-age 指令 - -该指令出现在请求报文的 Cache-Control 字段中,如果缓存资源的缓存时间小于该指令指定的时间,那么就能接受该缓存。 - -该指令出现在响应报文的 Cache-Control 字段中,表示缓存资源在缓存服务器中保存的时间。 - -Expires 字段也可以用于告知缓存服务器该资源什么时候会过期。在 HTTP/1.1 中,会优先处理 Cache-Control : max-age 指令;而在 HTTP/1.0 中,Cache-Control : max-age 指令会被忽略掉。 - -## 持久连接 - -当浏览器访问一个包含多张图片的 HTML 页面时,除了请求访问 HTML 页面资源,还会请求图片资源,如果每进行一次 HTTP 通信就要断开一次 TCP 连接,连接建立和断开的开销会很大。持久连接只需要建立一次 TCP 连接就能进行多次 HTTP 通信。 - -

    - -持久连接需要使用 Connection 首部字段进行管理。HTTP/1.1 开始 HTTP 默认是持久化连接的,如果要断开 TCP 连接,需要由客户端或者服务器端提出断开,使用 Connection : close;而在 HTTP/1.1 之前默认是非持久化连接的,如果要维持持续连接,需要使用 Connection : Keep-Alive。 - -**管线化方式** 可以同时发送多个请求和响应,而不需要发送一个请求然后等待响应之后再发下一个请求。 - -

    - -## 编码 - -编码(Encoding)主要是为了对实体进行压缩。常用的编码有:gzip、compress、deflate、identity,其中 identity 表示不执行压缩的编码格式。 - -## 分块传输 - -分块传输(Chunked Transfer Coding)可以把数据分割成多块,让浏览器逐步显示页面。 - -## 多部分对象集合 - -一份报文主体内可含有多种类型的实体同时发送,每个部分之间用 boundary 字段定义的分隔符进行分隔,每个部分都可以有首部字段。 - -例如,上传多个表单时可以使用如下方式: - -```html -Content-Type: multipart/form-data; boundary=AaB03x - ---AaB03x -Content-Disposition: form-data; name="submit-name" - -Larry ---AaB03x -Content-Disposition: form-data; name="files"; filename="file1.txt" -Content-Type: text/plain - -... contents of file1.txt ... ---AaB03x-- -``` - -## 范围请求 - -如果网络出现中断,服务器只发送了一部分数据,范围请求使得客户端能够只请求未发送的那部分数据,从而避免服务器端重新发送所有数据。 - -在请求报文首部中添加 Range 字段,然后指定请求的范围,例如 Range:bytes=5001-10000。请求成功的话服务器发送 206 Partial Content 状态。 - -```html -GET /z4d4kWk.jpg HTTP/1.1 -Host: i.imgur.com -Range: bytes=0-1023 -``` - -```html -HTTP/1.1 206 Partial Content -Content-Range: bytes 0-1023/146515 -Content-Length: 1024 -... -(binary content) -``` - -## 内容协商 - -通过内容协商返回最合适的内容,例如根据浏览器的默认语言选择返回中文界面还是英文界面。 - -涉及以下首部字段:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。 - -## 虚拟主机 - -使用虚拟主机技术,使得一台服务器拥有多个域名,并且在逻辑上可以看成多个服务器。 - -## 通信数据转发 - -### 1. 代理 - -代理服务器接受客户端的请求,并且转发给其它服务器。 - -代理服务器一般是透明的,不会改变 URL。 - -使用代理的主要目的是:缓存、网络访问控制以及访问日志记录。 - -

    - -### 2. 网关 - -与代理服务器不同的是,网关服务器会将 HTTP 转化为其它协议进行通信,从而请求其它非 HTTP 服务器的服务。 - -

    - -### 3. 隧道 - -使用 SSL 等加密手段,为客户端和服务器之间建立一条安全的通信线路。 - -

    - -# 六、HTTPs - -HTTP 有以下安全性问题: - -1. 使用明文进行通信,内容可能会被窃听; -2. 不验证通信方的身份,通信方的身份有可能遭遇伪装; -3. 无法证明报文的完整性,报文有可能遭篡改。 - -HTTPs 并不是新协议,而是 HTTP 先和 SSL(Secure Socket Layer)通信,再由 SSL 和 TCP 通信。通过使用 SSL,HTTPs 提供了加密、认证和完整性保护。 - -## 加密 - -有两种加密方式:对称密钥加密和公开密钥加密。对称密钥加密的加密和解密使用同一密钥,而公开密钥加密使用一对密钥用于加密和解密,分别为公开密钥和私有密钥。公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。 - -对称密钥加密的缺点:无法安全传输密钥;公开密钥加密的缺点:相对来说更耗时。 - -HTTPs 采用 **混合的加密机制** ,使用公开密钥加密用于传输对称密钥,之后使用对称密钥加密进行通信。(下图中,共享密钥即对称密钥) - -

    - -## 认证 - -通过使用 **证书** 来对通信方进行认证。 - -数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。 - -进行 HTTPs 通信时,服务器会把证书发送给客户端,客户端取得其中的公开密钥之后,先进行验证,如果验证通过,就可以开始通信。 - -除了上诉提到的服务器端证书之外,还有客户端证书,客户端证书的目的就是让服务器对客户端进行验证。客户端证书需要用户自行安装,只有在业务需要非常高的安全性时才使用客户端证书,例如网上银行。 - -使用 OpenSSL 这套开源程序,每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书。浏览器在访问该服务器时,会显示“无法确认连接安全性”或“该网站的安全证书存在问题”等警告消息。 - -## 完整性 - -SSL 提供摘要功能来验证完整性。 - -# 七、Web 攻击技术 - -Web 攻击的主要目标是使用 HTTP 协议的 Web 应用。 - -## 攻击模式 - -### 1. 主动攻击 - -直接攻击服务器,具有代表性的有 SQL 注入和 OS 命令注入。 - -### 2. 被动攻击 - -设下圈套,让用户发送有攻击代码的 HTTP 请求,那么用户发送了该 HTTP 请求之后就会泄露 Cookie 等个人信息,具有代表性的有跨站脚本攻击和跨站请求伪造。 - -## 跨站脚本攻击 - -### 1. 概念 - -(Cross-Site Scripting, XSS),可以将代码注入到用户浏览的网页上,这种代码包含 HTML 和 JavaScript。通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和 Cookie 等各种内容。 - -### 2. 危害 - -- 伪造虚假的输入表单骗取个人信息 -- 窃取用户的 Cookie 值 -- 显示伪造的文章或者图片 - -### 3. 防范手段 - -**(一)过滤特殊字符** - -许多语言都提供了对 HTML 的过滤: - -- PHP 的 htmlentities() 或是 htmlspecialchars()。 -- Python 的 cgi.escape()。 -- Java 的 xssprotect (Open Source Library)。 -- Node.js 的 node-validator。 - -**(二)指定 HTTP 的 Content-Type** - -通过这种方式,可以避免内容被当成 HTML 解析,比如 PHP 语言可以使用以下代码: - -```php - -``` - -## SQL 注入攻击 - -### 1. 概念 - -服务器上的数据库运行非法的 SQL 语句。 - -### 2. 攻击原理 - -例如一个网站登录验证的 SQL 查询代码为: - -```sql -strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');" -``` - -如果填入以下内容: - -```sql -userName = "1' OR '1'='1"; -passWord = "1' OR '1'='1"; -``` - -那么 SQL 查询字符串为: - -```sql -strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1');" -``` - -此时无需验证通过就能执行以下查询: - -```sql -strSQL = "SELECT * FROM users;" -``` - -### 3. 危害 - -- 数据表中的数据外泄,例如个人机密数据,账户数据,密码等。 -- 数据结构被黑客探知,得以做进一步攻击(例如 SELECT * FROM sys.tables)。 -- 数据库服务器被攻击,系统管理员账户被窜改(例如 ALTER LOGIN sa WITH PASSWORD='xxxxxx')。 -- 获取系统较高权限后,有可能得以在网页加入恶意链接、恶意代码以及 XSS 等。 -- 经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如 xp_cmdshell "net stop iisadmin" 可停止服务器的 IIS 服务)。 -- 破坏硬盘数据,瘫痪全系统(例如 xp_cmdshell "FORMAT C:")。 - -### 4. 防范手段 - -- 在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。 -- 在组合 SQL 字符串时,先针对所传入的参数作字符取代(将单引号字符取代为连续 2 个单引号字符)。 -- 如果使用 PHP 开发网页程序的话,亦可打开 PHP 的魔术引号(Magic quote)功能(自动将所有的网页传入参数,将单引号字符取代为连续 2 个单引号字符)。 -- 其他,使用其他更安全的方式连接 SQL 数据库。例如已修正过 SQL 注入问题的数据库连接组件,例如 ASP.NET 的 SqlDataSource 对象或是 LINQ to SQL。 -- 使用 SQL 防注入系统。 - -## 跨站点请求伪造 - -### 1. 概念 - -(Cross-site request forgery,XSRF),是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了 Web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。 - -XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。 - -假如一家银行用以执行转账操作的 URL 地址如下:`http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName`。 - -
    那么,一个恶意攻击者可以在另一个网站上放置如下代码:``。

    - -如果有账户名为 Alice 的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失 1000 资金。 - -这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛,博客等任何用户生成内容的网站中。这意味着如果服务器端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。 - -透过例子能够看出,攻击者并不能通过 CSRF 攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义执行操作。 - -### 2. 防范手段 - -**(一)检查 Referer 字段** - -HTTP 头中有一个 Referer 字段,这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时,通常来说,Referer 字段应和请求的地址位于同一域名下。 - -这种办法简单易行,工作量低,仅需要在关键访问处增加一步校验。但这种办法也有其局限性,因其完全依赖浏览器发送正确的 Referer 字段。虽然 HTTP 协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,亦无法保证浏览器没有安全漏洞影响到此字段。并且也存在攻击者攻击某些浏览器,篡改其 Referer 字段的可能。 - -**(二)添加校验 Token** - -由于 CSRF 的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在 cookie 中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再执行 CSRF 攻击。这种数据通常是表单中的一个数据项。服务器将其生成并附加在表单中,其内容是一个伪乱数。当客户端通过表单提交请求时,这个伪乱数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪乱数,而通过 CSRF 传来的欺骗性攻击中,攻击者无从事先得知这个伪乱数的值,服务器端就会因为校验 token 的值为空或者错误,拒绝这个可疑请求。 - -## 拒绝服务攻击 - -### 1. 概念 - -(denial-of-service attack,DoS),亦称洪水攻击,其目的在于使目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。 - -(distributed denial-of-service attack,DDoS),指攻击者使用网络上两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动“拒绝服务”式攻击。 - -> [维基百科:拒绝服务攻击](https://zh.wikipedia.org/wiki/%E9%98%BB%E6%96%B7%E6%9C%8D%E5%8B%99%E6%94%BB%E6%93%8A) - -# 八、各版本比较 - -## HTTP/1.0 与 HTTP/1.1 的区别 - -HTTP/1.1 新增了以下内容: - -- 默认为长连接; -- 提供了范围请求功能; -- 提供了虚拟主机的功能; -- 多了一些缓存处理字段; -- 多了一些状态码。 - -## HTTP/1.1 与 HTTP/2.0 的区别 - -### 1. 多路复用 - -HTTP/2.0 使用多路复用技术,使用同一个 TCP 连接来处理多个请求。 - -### 2. 首部压缩 - -HTTP/1.1 的首部带有大量信息,而且每次都要重复发送。HTTP/2.0 要求通讯双方各自缓存一份首部字段表,从而避免了重复传输。 - -### 3. 服务端推送 - -在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了。例如客户端请求 index.html 页面,服务端就把 index.js 一起发给客户端。 - -### 4. 二进制格式 - -HTTP/1.1 的解析是基于文本的,而 HTTP/2.0 采用二进制格式。 - -# 参考资料 - -- [图解 HTTP](https://pan.baidu.com/s/1M0AHXqG9sP9Bxne6u0JK8A) -- [MDN : HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP) -- [维基百科:跨站脚本](https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC) -- [维基百科:SQL 注入攻击](https://zh.wikipedia.org/wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A) -- [维基百科:跨站点请求伪造](https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0) -- [维基百科:拒绝服务攻击](https://zh.wikipedia.org/wiki/%E9%98%BB%E6%96%B7%E6%9C%8D%E5%8B%99%E6%94%BB%E6%93%8A) diff --git a/notes/JDK 中的设计模式.md b/notes/JDK 中的设计模式.md deleted file mode 100644 index daaa90ae..00000000 --- a/notes/JDK 中的设计模式.md +++ /dev/null @@ -1,283 +0,0 @@ - -* [一、创建型](#一创建型) - * [1. 单例模式](#1-单例模式) - * [2. 简单工厂模式](#2-简单工厂模式) - * [3. 工厂方法模式](#3-工厂方法模式) - * [4. 抽象工厂](#4-抽象工厂) - * [5. 生成器模式](#5-生成器模式) - * [6. 原型模式](#6-原型模式) -* [二、行为型](#二行为型) - * [1. 责任链](#1-责任链) - * [2. 命令模式](#2-命令模式) - * [3. 解释器模式](#3-解释器模式) - * [4. 迭代器](#4-迭代器) - * [5. 中间人模式](#5-中间人模式) - * [6. 备忘录模式](#6-备忘录模式) - * [7. 观察者模式](#7-观察者模式) - * [8. 策略模式](#8-策略模式) - * [9. 模板方法](#9-模板方法) - * [10. 访问者模式](#10-访问者模式) - * [11. 空对象模式](#11-空对象模式) -* [三、结构型](#三结构型) - * [1. 适配器](#1-适配器) - * [2. 桥接模式](#2-桥接模式) - * [3. 组合模式](#3-组合模式) - * [4. 装饰者模式](#4-装饰者模式) - * [5. 蝇量模式](#5-蝇量模式) - * [6. 动态代理](#6-动态代理) -* [参考资料](#参考资料) - - - -# 一、创建型 - -## 1. 单例模式 - -确保只实例化一个对象,并提供一个对象的全局访问点。 - -```java -java.lang.Runtime#getRuntime() -java.awt.Toolkit#getDefaultToolkit() -java.awt.GraphicsEnvironment#getLocalGraphicsEnvironment() -java.awt.Desktop#getDesktop() -``` - -## 2. 简单工厂模式 - -在不对用户暴露对象内部逻辑的前提下创建对象;使用通用的接口来创建对象; - -## 3. 工厂方法模式 - -定义创建对象的接口,但是让子类来决定应该使用哪个类来创建;使用通用的接口来创建对象; - -```java -java.lang.Proxy#newProxyInstance() -java.lang.Object#toString() -java.lang.Class#newInstance() -java.lang.reflect.Array#newInstance() -java.lang.reflect.Constructor#newInstance() -java.lang.Boolean#valueOf(String) -java.lang.Class#forName() -``` - -## 4. 抽象工厂 - -提供一个创建相关对象家族的接口,而没有明确指明它们的类。 - -```java -java.util.Calendar#getInstance() -java.util.Arrays#asList() -java.util.ResourceBundle#getBundle() -java.sql.DriverManager#getConnection() -java.sql.Connection#createStatement() -java.sql.Statement#executeQuery() -java.text.NumberFormat#getInstance() -javax.xml.transform.TransformerFactory#newInstance() -``` - -## 5. 生成器模式 - -定义一个新的类来构造另一个类的实例,以创建一个复杂的对象。 - -它可以封装一个对象的构造过程,并允许按步骤构造。 - -```java -java.lang.StringBuilder#append() -java.lang.StringBuffer#append() -java.sql.PreparedStatement -javax.swing.GroupLayout.Group#addComponent() -``` - -## 6. 原型模式 - -使用原型实例指定要创建对象的类型;通过复制这个原型来创建新对象。 - -```java -java.lang.Object#clone() -java.lang.Cloneable -``` - -# 二、行为型 - -## 1. 责任链 - -避免将请求的发送者附加到其接受者,从而使其它对象也可以处理请求;将请求以对象的方式把发送到链上直到请求被处理完毕。 - -```java -java.util.logging.Logger#log() -javax.servlet.Filter#doFilter() -``` - -## 2. 命令模式 - -将命令封装进对象中;允许使用命令对象对客户对象进行参数化;允许将命令对象存放到队列中。 - -```java -java.lang.Runnable -javax.swing.Action -``` - -## 3. 解释器模式 - -为语言创建解释器,通常由语言的语法和语法分析来定义。 - -```java -java.util.Pattern -java.text.Normalizer -java.text.Format -``` - -## 4. 迭代器 - -提供一种一致的访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。 - -```java -java.util.Iterator -java.util.Enumeration -``` - -## 5. 中间人模式 - -使用中间人对象来封装对象之间的交互。中间人模式可以让降低交互对象之间的耦合程度。 - -```java -java.util.Timer -java.util.concurrent.Executor#execute() -java.util.concurrent.ExecutorService#submit() -java.lang.reflect.Method#invoke() -``` - -## 6. 备忘录模式 - -在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到最初状态。 - -```java -java.util.Date -java.io.Serializable -``` - -## 7. 观察者模式 - -定义对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态。 - -```java -java.util.EventListener -javax.servlet.http.HttpSessionBindingListener -javax.servlet.http.HttpSessionAttributeListener -javax.faces.event.PhaseListener -``` - -## 8. 策略模式 - -定义一系列算法,封装每个算法,并使它们可以互换。策略可以让算法独立于使用它的客户端。 - -```java -java.util.Comparator#compare() -javax.servlet.http.HttpServlet -javax.servlet.Filter#doFilter() -``` - -## 9. 模板方法 - -定义算法框架,并将一些步骤的实现延迟到子类。通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。 - -```java -java.util.Collections#sort() -java.io.InputStream#skip() -java.io.InputStream#read() -java.util.AbstractList#indexOf() -``` - -## 10. 访问者模式 - -提供便捷的维护方式来操作一组对象。它使你在不改变操作对象的前提下,可以修改或扩展对象的行为。 - -例如集合,它可以包含不同类型的元素,访问者模式允许在不知道具体元素类型的前提下对集合元素进行一些操作。 - -```java -javax.lang.model.element.Element and javax.lang.model.element.ElementVisitor -javax.lang.model.type.TypeMirror and javax.lang.model.type.TypeVisitor -``` - -## 11. 空对象模式 - -使用什么都不做的空对象来替代 NULL。 - -# 三、结构型 - -## 1. 适配器 - -把一个类接口转换成另一个用户需要的接口。 - -```java -java.util.Arrays#asList() -javax.swing.JTable(TableModel) -java.io.InputStreamReader(InputStream) -java.io.OutputStreamWriter(OutputStream) -javax.xml.bind.annotation.adapters.XmlAdapter#marshal() -javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal() -``` - -## 2. 桥接模式 - -将抽象与实现分离开来,使它们可以独立变化。 - -```java -AWT (It provides an abstraction layer which maps onto the native OS the windowing support.) -JDBC -``` - -## 3. 组合模式 - -将对象组合成树形结构来表示整理-部分层次关系,允许用户以相同的方式处理单独对象和组合对象。 - -```java -javax.swing.JComponent#add(Component) -java.awt.Container#add(Component) -java.util.Map#putAll(Map) -java.util.List#addAll(Collection) -java.util.Set#addAll(Collection) -``` - -## 4. 装饰者模式 - -为对象动态添加功能。 - -```java -java.io.BufferedInputStream(InputStream) -java.io.DataInputStream(InputStream) -java.io.BufferedOutputStream(OutputStream) -java.util.zip.ZipOutputStream(OutputStream) -java.util.Collections#checked[List|Map|Set|SortedSet|SortedMap]() -``` - -## 5. 蝇量模式 - -利用共享的方式来支持大量的对象,这些对象一部分内部状态时相同的,而另一份状态可以变化。 - -Java 利用缓存来加速大量小对象的访问时间。 - -```java -java.lang.Integer#valueOf(int) -java.lang.Boolean#valueOf(boolean) -java.lang.Byte#valueOf(byte) -java.lang.Character#valueOf(char) -``` - -## 6. 动态代理 - -提供一个占位符来控制对象的访问。 - -代理可以是一些轻量级的对象,它控制者对重量级对象的访问,只有在真正实例化这些重量级对象时才会去实例化它。 - -```java -java.lang.reflect.Proxy -RMI -``` - -# 参考资料 - -- [The breakdown of design patterns in JDK](http://www.programering.com/a/MTNxAzMwATY.html) -- [Design Patterns](http://www.oodesign.com/) - - diff --git a/notes/Java IO.md b/notes/Java IO.md deleted file mode 100644 index 6e91761b..00000000 --- a/notes/Java IO.md +++ /dev/null @@ -1,404 +0,0 @@ - -* [一、概览](#一概览) -* [二、磁盘操作](#二磁盘操作) -* [三、字节操作](#三字节操作) -* [四、字符操作](#四字符操作) -* [五、对象操作](#五对象操作) -* [六、网络操作](#六网络操作) - * [InetAddress](#inetaddress) - * [URL](#url) - * [Sockets](#sockets) - * [Datagram](#datagram) -* [七、NIO](#七nio) - * [流与块](#流与块) - * [通道与缓冲区](#通道与缓冲区) - * [缓冲区状态变量](#缓冲区状态变量) - * [文件 NIO 实例](#文件-nio-实例) - * [套接字 NIO 实例](#套接字-nio-实例) - * [内存映射文件](#内存映射文件) - * [对比](#对比) -* [八、参考资料](#八参考资料) - - - -# 一、概览 - -Java 的 I/O 大概可以分成以下几类: - -1. 磁盘操作:File -2. 字节操作:InputStream 和 OutputStream -3. 字符操作:Reader 和 Writer -4. 对象操作:Serializable -5. 网络操作:Socket -6. 新的输入/输出:NIO - -# 二、磁盘操作 - -File 类可以用于表示文件和目录,但是它只用于表示文件的信息,而不表示文件的内容。 - -# 三、字节操作 - -

    - -Java I/O 使用了装饰者模式来实现。以 InputStream 为例,InputStream 是抽象组件,FileInputStream 是 InputStream 的子类,属于具体组件,提供了字节流的输入操作。FilterInputStream 属于抽象装饰者,装饰者用于装饰组件,为组件提供额外的功能,例如 BufferedInputStream 为 FileInputStream 提供缓存的功能。 - -实例化一个具有缓存功能的字节流对象时,只需要在 FileInputStream 对象上再套一层 BufferedInputStream 对象即可。 - -```java -BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); -``` - -DataInputStream 装饰者提供了对更多数据类型进行输入的操作,比如 int、double 等基本类型。 - -批量读入文件内容到字节数组: - -```java -byte[] buf = new byte[20*1024]; -int bytes = 0; -// 最多读取 buf.length 个字节,返回的是实际读取的个数,返回 -1 的时候表示读到 eof,即文件尾 -while((bytes = in.read(buf, 0 , buf.length)) != -1) { - // ... -} -``` - -# 四、字符操作 - -不管是磁盘还是网络传输,最小的存储单元都是字节,而不是字符,所以 I/O 操作的都是字节而不是字符。但是在程序中操作的通常是字符形式的数据,因此需要提供对字符进行操作的方法。 - -InputStreamReader 实现从文本文件的字节流解码成字符流;OutputStreamWriter 实现字符流编码成为文本文件的字节流。它们继承自 Reader 和 Writer。 - -编码就是把字符转换为字节,而解码是把字节重新组合成字符。 - -```java -byte[] bytes = str.getBytes(encoding); // 编码 -String str = new String(bytes, encoding); // 解码 -``` - -GBK 编码中,中文占 2 个字节,英文占 1 个字节;UTF-8 编码中,中文占 3 个字节,英文占 1 个字节;Java 使用双字节编码 UTF-16be,中文和英文都占 2 个字节。 - -如果编码和解码过程使用不同的编码方式那么就出现了乱码。 - -# 五、对象操作 - -序列化就是将一个对象转换成字节序列,方便存储和传输。 - -序列化:ObjectOutputStream.writeObject() - -反序列化:ObjectInputStream.readObject() - -序列化的类需要实现 Serializable 接口,它只是一个标准,没有任何方法需要实现。 - -transient 关键字可以使一些属性不会被序列化。 - -**ArrayList 序列化和反序列化的实现** :ArrayList 中存储数据的数组是用 transient 修饰的,因为这个数组是动态扩展的,并不是所有的空间都被使用,因此就不需要所有的内容都被序列化。通过重写序列化和反序列化方法,使得可以只序列化数组中有内容的那部分数据。 - -```java -private transient Object[] elementData; -``` - -# 六、网络操作 - -Java 中的网络支持: - -1. InetAddress:用于表示网络上的硬件资源,即 IP 地址; -2. URL:统一资源定位符,通过 URL 可以直接读取或者写入网络上的数据; -3. Sockets:使用 TCP 协议实现网络通信; -4. Datagram:使用 UDP 协议实现网络通信。 - -## InetAddress - -没有公有构造函数,只能通过静态方法来创建实例。 - -```java -InetAddress.getByName(String host); -InetAddress.getByAddress(byte[] addr); -``` - -## URL - -可以直接从 URL 中读取字节流数据 - -```java -URL url = new URL("http://www.baidu.com"); -InputStream is = url.openStream(); // 字节流 -InputStreamReader isr = new InputStreamReader(is, "utf-8"); // 字符流 -BufferedReader br = new BufferedReader(isr); -String line = br.readLine(); -while (line != null) { - System.out.println(line); - line = br.readLine(); -} -br.close(); -isr.close(); -is.close(); -``` - -## Sockets - -- ServerSocket:服务器端类 -- Socket:客户端类 -- 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。 - -

    - -## Datagram - -- DatagramPacket:数据包类 -- DatagramSocket:通信类 - -# 七、NIO - -新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的。NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。 - -## 流与块 - -I/O 与 NIO 最重要的区别是数据打包和传输的方式,I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。 - -面向流的 I/O 一次处理一个字节数据,一个输入流产生一个字节数据,一个输出流消费一个字节数据。为流式数据创建过滤器非常容易,链接几个过滤器,以便每个过滤器只负责单个复杂处理机制的一部分,这样也是相对简单的。不利的一面是,面向流的 I/O 通常相当慢。 - -一个面向块的 I/O 系统以块的形式处理数据,一次处理数据块。按块处理数据比按流处理数据要快得多。但是面向块的 I/O 缺少一些面向流的 I/O 所具有的优雅性和简单性。 - -I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重新实现了,所以现在它可以利用 NIO 的一些特性。例如,java.io.\* 包中的一些类包含以块的形式读写数据的方法,这使得即使在面向流的系统中,处理速度也会更快。 - -## 通道与缓冲区 - -### 1. 通道 - -通道 Channel 是对原 I/O 包中的流的模拟,可以通过它读取和写入数据。 - -通道与流的不同之处在于,流只能在一个方向上移动,(一个流必须是 InputStream 或者 OutputStream 的子类),而通道是双向的,可以用于读、写或者同时用于读写。 - -通道包括以下类型: - -- FileChannel:从文件中读写数据; -- DatagramChannel:通过 UDP 读写网络中数据; -- SocketChannel:通过 TCP 读写网络中数据; -- ServerSocketChannel:可以监听新进来的 TCP 连接,对每一个新进来的连接都会创建一个 SocketChannel。 - -### 2. 缓冲区 - -发送给一个通道的所有对象都必须首先放到缓冲区中,同样地,从通道中读取的任何数据都要读到缓冲区中。也就是说,不会直接对通道进行读写数据,而是要先经过缓冲区。 - -缓冲区实质上是一个数组,但它不仅仅是一个数组。缓冲区提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程。 - -缓冲区包括以下类型: - -- ByteBuffer -- CharBuffer -- ShortBuffer -- IntBuffer -- LongBuffer -- FloatBuffer -- DoubleBuffer - -## 缓冲区状态变量 - -- capacity:最大容量; -- position:当前已经读写的字节数; -- limit:还可以读写的字节数。 - -状态变量的改变过程举例: - -① 新建一个大小为 8 个字节的缓冲区,此时 position 为 0,而 limit = capacity = 9。capacity 变量不会改变,下面的讨论会忽略它。 - -

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

    - -③ 以下图例为已经从输入通道读取了 5 个字节数据写入缓冲区中。在将缓冲区的数据写到输出通道之前,需要先调用 flip() 方法,这个方法将 limit 设置为当前 position,并将 position 设置为 0。 - -

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

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

    - -## 文件 NIO 实例 - -① 为要读取的文件创建 FileInputStream,之后通过 FileInputStream 获取输入 FileChannel; - -```java -FileInputStream fin = new FileInputStream("readandshow.txt"); -FileChannel fic = fin.getChannel(); -``` - -② 创建一个容量为 1024 的 Buffer; - -```java -ByteBuffer buffer = ByteBuffer.allocate(1024); -``` - -③ 将数据从输入 FileChannel 写入到 Buffer 中,如果没有数据的话,read() 方法会返回 -1; - -```java -int r = fcin.read(buffer); -if (r == -1) { - break; -} -``` - -④ 为要写入的文件创建 FileOutputStream,之后通过 FileOutputStream 获取输出 FileChannel - -```java -FileOutputStream fout = new FileOutputStream("writesomebytes.txt"); -FileChannel foc = fout.getChannel(); -``` - -⑤ 调用 flip() 切换读写 - -```java -buffer.flip(); -``` - -⑥ 把 Buffer 中的数据读取到输出 FileChannel 中 - -```java -foc.write(buffer); -``` - -⑦ 最后调用 clear() 重置缓冲区 - -```java -buffer.clear(); -``` - -## 套接字 NIO 实例 - -### 1. ServerSocketChannel - -每一个监听端口都需要有一个 ServerSocketChannel 用来监听连接。 - -```java -ServerSocketChannel ssc = ServerSocketChannel.open(); -ssc.configureBlocking(false); // 设置为非阻塞 - -ServerSocket ss = ssc.socket(); -InetSocketAddress address = new InetSocketAddress(ports[i]); -ss.bind(address); // 绑定端口号 -``` - -### 2. Selectors - -异步 I/O 通过 Selector 注册对特定 I/O 事件的兴趣 ― 可读的数据的到达、新的套接字连接等等,在发生这样的事件时,系统将会发送通知。 - -创建 Selectors 之后,就可以对不同的通道对象调用 register() 方法。register() 的第一个参数总是这个 Selector。第二个参数是 OP_ACCEPT,这里它指定我们想要监听 ACCEPT 事件,也就是在新的连接建立时所发生的事件。 - -SelectionKey 代表这个通道在此 Selector 上的这个注册。当某个 Selector 通知您某个传入事件时,它是通过提供对应于该事件的 SelectionKey 来进行的。SelectionKey 还可以用于取消通道的注册。 - -```java -Selector selector = Selector.open(); -SelectionKey key = ssc.register(selector, SelectionKey.OP_ACCEPT); -``` - -### 3. 主循环 - -首先,我们调用 Selector 的 select() 方法。这个方法会阻塞,直到至少有一个已注册的事件发生。当一个或者更多的事件发生时,select() 方法将返回所发生的事件的数量。 - -接下来,我们调用 Selector 的 selectedKeys() 方法,它返回发生了事件的 SelectionKey 对象的一个集合。 - -我们通过迭代 SelectionKeys 并依次处理每个 SelectionKey 来处理事件。对于每一个 SelectionKey,您必须确定发生的是什么 I/O 事件,以及这个事件影响哪些 I/O 对象。 - -```java -int num = selector.select(); - -Set selectedKeys = selector.selectedKeys(); -Iterator it = selectedKeys.iterator(); - -while (it.hasNext()) { - SelectionKey key = (SelectionKey)it.next(); - // ... deal with I/O event ... -} -``` - -### 4. 监听新连接 - -程序执行到这里,我们仅注册了 ServerSocketChannel,并且仅注册它们“接收”事件。为确认这一点,我们对 SelectionKey 调用 readyOps() 方法,并检查发生了什么类型的事件: - -```java -if ((key.readyOps() & SelectionKey.OP_ACCEPT) - == SelectionKey.OP_ACCEPT) { - // Accept the new connection - // ... -} -``` - -可以肯定地说,readOps() 方法告诉我们该事件是新的连接。 - -### 5. 接受新的连接 - -因为我们知道这个服务器套接字上有一个传入连接在等待,所以可以安全地接受它;也就是说,不用担心 accept() 操作会阻塞: - -```java -ServerSocketChannel ssc = (ServerSocketChannel)key.channel(); -SocketChannel sc = ssc.accept(); -``` - -下一步是将新连接的 SocketChannel 配置为非阻塞的。而且由于接受这个连接的目的是为了读取来自套接字的数据,所以我们还必须将 SocketChannel 注册到 Selector 上,如下所示: - -```java -sc.configureBlocking(false); -SelectionKey newKey = sc.register(selector, SelectionKey.OP_READ); -``` - -注意我们使用 register() 的 OP_READ 参数,将 SocketChannel 注册用于读取而不是接受新连接。 - -### 6. 删除处理过的 SelectionKey - -在处理 SelectionKey 之后,我们几乎可以返回主循环了。但是我们必须首先将处理过的 SelectionKey 从选定的键集合中删除。如果我们没有删除处理过的键,那么它仍然会在主集合中以一个激活的键出现,这会导致我们尝试再次处理它。我们调用迭代器的 remove() 方法来删除处理过的 SelectionKey: - -```java -it.remove(); -``` - -现在我们可以返回主循环并接受从一个套接字中传入的数据 (或者一个传入的 I/O 事件) 了。 - -### 7. 传入的 I/O - -当来自一个套接字的数据到达时,它会触发一个 I/O 事件。这会导致在主循环中调用 Selector.select(),并返回一个或者多个 I/O 事件。这一次, SelectionKey 将被标记为 OP_READ 事件,如下所示: - -```java -} else if ((key.readyOps() & SelectionKey.OP_READ) - == SelectionKey.OP_READ) { - // Read the data - SocketChannel sc = (SocketChannel)key.channel(); - // ... -} -``` - -## 内存映射文件 - -内存映射文件 I/O 是一种读和写文件数据的方法,它可以比常规的基于流或者基于通道的 I/O 快得多。 - -只有文件中实际读取或者写入的部分才会映射到内存中。 - -现代操作系统一般会根据需要将文件的部分映射为内存的部分,从而实现文件系统。Java 内存映射机制只不过是在底层操作系统中可以采用这种机制时,提供了对该机制的访问。 - -向内存映射文件写入可能是危险的,仅只是改变数组的单个元素这样的简单操作,就可能会直接修改磁盘上的文件。修改数据与将数据保存到磁盘是没有分开的。 - -下面代码行将文件的前 1024 个字节映射到内存中,map() 方法返回一个 MappedByteBuffer,它是 ByteBuffer 的子类。因此,您可以像使用其他任何 ByteBuffer 一样使用新映射的缓冲区,操作系统会在需要时负责执行映射。 - -```java -MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, 0, 1024); -``` - -## 对比 - -NIO 与普通 I/O 的区别主要有以下两点: - -- NIO 是非阻塞的。应当注意,FileChannel 不能切换到非阻塞模式,套接字 Channel 可以。 -- NIO 面向流,I/O 面向块。 - -# 八、参考资料 - -- Eckel B, 埃克尔, 昊鹏, 等. Java 编程思想 [M]. 机械工业出版社, 2002. -- [IBM: NIO 入门](https://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html) -- [深入分析 Java I/O 的工作机制](https://www.ibm.com/developerworks/cn/java/j-lo-javaio/index.html) -- [NIO 与传统 IO 的区别](http://blog.csdn.net/shimiso/article/details/24990499) -- [Decorator Design Pattern](http://stg-tud.github.io/sedc/Lecture/ws13-14/5.3-Decorator.html#mode=document) -- [Socket Multicast](http://labojava.blogspot.com/2012/12/socket-multicast.html) diff --git a/notes/Java 基础.md b/notes/Java 基础.md deleted file mode 100644 index f2cc4eb6..00000000 --- a/notes/Java 基础.md +++ /dev/null @@ -1,632 +0,0 @@ - -* [一、关键字](#一关键字) - * [final](#final) - * [static](#static) -* [二、Object 通用方法](#二object-通用方法) - * [概览](#概览) - * [clone()](#clone) - * [equals()](#equals) -* [四、继承](#四继承) - * [访问权限](#访问权限) - * [抽象类与接口](#抽象类与接口) - * [super](#super) - * [重载与重写](#重载与重写) -* [五、String](#五string) - * [String, StringBuffer and StringBuilder](#string,-stringbuffer-and-stringbuilder) - * [String 不可变的原因](#string-不可变的原因) - * [String.intern()](#stringintern) -* [六、基本类型与运算](#六基本类型与运算) - * [包装类型](#包装类型) - * [switch](#switch) -* [七、反射](#七反射) -* [八、异常](#八异常) -* [九、泛型](#九泛型) -* [十、注解](#十注解) -* [十一、特性](#十一特性) - * [面向对象三大特性](#面向对象三大特性) - * [Java 各版本的新特性](#java-各版本的新特性) - * [Java 与 C++ 的区别](#java-与-c++-的区别) - * [JRE or JDK](#jre-or-jdk) -* [参考资料](#参考资料) - - - -# 一、关键字 - -## final - -**1. 数据** - -声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。 - -- 对于基本类型,final 使数值不变; -- 对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。 - -```java -final int x = 1; -x = 2; // cannot assign value to final variable 'x' -final A y = new A(); -y.a = 1; -``` - -**2. 方法**
    - -声明方法不能被子类覆盖。 - -private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是覆盖基类方法,而是重载了。 - -**3. 类** - -声明类不允许被继承。 - -## static - -**1. 静态变量** - -静态变量在内存中只存在一份,只在类第一次实例化时初始化一次。 - -- 静态变量:类所有的实例都共享静态变量,可以直接通过类名来访问它; -- 实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。 - -```java -public class A { - private int x; // 实例变量 - public static int y; // 静态变量 -} -``` - -**2. 静态方法** - -静态方法在类加载的时候就存在了,它不依赖于任何实例,所以 static 方法必须实现,也就是说它不能是抽象方法(abstract)。 - -**3. 静态语句块** - -静态语句块和静态变量一样在类第一次实例化时运行一次。 - -**4. 初始化顺序** - -静态数据优先于其它数据的初始化,静态变量和静态语句块哪个先运行取决于它们在代码中的顺序。 - -```java -public static String staticField = "静态变量"; -``` - -```java -static { - System.out.println("静态语句块"); -} -``` - -实例变量和普通语句块的初始化在静态变量和静态语句块初始化结束之后。 - -```java -public String field = "实例变量"; -``` - -```java -{ - System.out.println("普通语句块"); -} -``` - -最后才是构造函数中的数据进行初始化 - -```java -public InitialOrderTest() { - System.out.println("构造函数"); -} -``` - -存在继承的情况下,初始化顺序为: - -1. 父类(静态变量、静态语句块块) -2. 子类(静态变量、静态语句块) -3. 父类(实例变量、普通语句块) -4. 父类(构造函数) -5. 子类(实例变量、普通语句块) -6. 子类(构造函数) - -# 二、Object 通用方法 - -## 概览 - -```java -public final native Class getClass() - -public native int hashCode() - -public boolean equals(Object obj) - -protected native Object clone() throws CloneNotSupportedException - -public String toString() - -public final native void notify() - -public final native void notifyAll() - -public final native void wait(long timeout) throws InterruptedException - -public final void wait(long timeout, int nanos) throws InterruptedException - -public final void wait() throws InterruptedException - -protected void finalize() throws Throwable {} -``` - -## clone() - -**1. cloneable** - -clone() 是 Object 的受保护方法,这意味着,如果一个类不显式去重载 clone() 就没有这个方法。 - -```java -public class CloneTest { - private int a; - private int b; -} -``` - -```java -CloneTest x = new CloneTest(); -CloneTest y = x.clone(); // 'clone()' has protected access in 'java.lang.Object' -``` - -接下来重载 Object 的 clone() 得到以下实现: - -```java -public class CloneTest{ - private int a; - private int b; - - @Override - protected Object clone() throws CloneNotSupportedException { - return super.clone(); - } -} -``` - -```java -CloneTest x = new CloneTest(); -try { - CloneTest y = (CloneTest) x.clone(); -} catch (CloneNotSupportedException e) { - e.printStackTrace(); -} -``` - -```html -java.lang.CloneNotSupportedException: CloneTest -``` - -以上抛出了 CloneNotSupportedException,这是因为 CloneTest 没有实现 Cloneable 接口。应该注意的是,clone() 方法并不是 Cloneable 接口的方法,而是 Object 的一个 protect 方法。Cloneable 接口只是规定,如果一个类没有实现 Cloneable 接口又调用了 clone() 方法,就会抛出 CloneNotSupportedException。 - -**2. 深拷贝与浅拷贝** - -

    - -- 浅拷贝:拷贝对象和原对象的引用类型引用同一个对象; -- 深拷贝:引用不同对象。 - -实现深拷贝的方法: - -- [Defensive copying](http://www.javapractices.com/topic/TopicAction.do?Id=15) -- [copy constructors](http://www.javapractices.com/topic/TopicAction.do?Id=12) -- [static factory methods](http://www.javapractices.com/topic/TopicAction.do?Id=21). - -> [How do I copy an object in Java?](https://stackoverflow.com/questions/869033/how-do-i-copy-an-object-in-java) - -## equals() - -**1. == 与 equals() 区别** - -- 对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。 -- 对于引用类型,== 判断两个引用是否引用同一个对象,而 equals() 判断引用的对象是否等价。 - -**2. 等价性** - -> [散列](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/Java%20%E5%AE%B9%E5%99%A8.md#%E4%B8%89%E6%95%A3%E5%88%977) - -# 四、继承 - -## 访问权限 - -Java 中有三个访问权限修饰符:private、protected 以及 public,如果不加访问修饰符,表示包级可见。 - -可以对类或类中的成员(字段以及方法)加上访问修饰符。 - -- 成员可见表示其它类可以用成员所在类的对象访问到该成员; -- 类可见表示其它类可以用这个类创建对象。 - -在理解类的可见性时,可以把类当做包中的一个成员,然后包表示一个类,那么就可以类比成员的可见性。 - -protected 用于修饰成员,表示在继承体系中成员对于子类可见。但是这个访问修饰符对于类没有意义,因为包没有继承体系。 - -> [浅析 Java 中的访问权限控制](http://www.importnew.com/18097.html) - -## 抽象类与接口 - -**1. 抽象类** - -抽象类和抽象方法都使用 abstract 进行声明。抽象类一般会包含抽象方法,抽象方法一定位于抽象类中。抽象类和普通类最大的区别是,抽象类不能被实例化,需要继承抽象类才能实例化其子类。 - -```java -public abstract class GenericServlet implements Servlet, ServletConfig, Serializable { - // abstract method - abstract void service(ServletRequest req, ServletResponse res); - - void init() { - // Its implementation - } - // other method related to Servlet -} -``` - -> [深入理解 abstract class 和 interface](https://www.ibm.com/developerworks/cn/java/l-javainterface-abstract/) - -**2. 接口** - -接口是抽象类的延伸。Java 为了安全性而不支持多重继承,一个类只能有一个父类。但是接口不同,一个类可以同时实现多个接口,不管这些接口之间有没有关系,所以接口弥补不支持多重继承的缺陷。 - -```java -public interface Externalizable extends Serializable { - - void writeExternal(ObjectOutput out) throws IOException; - - void readExternal(ObjectInput in) throws IOException, ClassNotFoundException; -} -``` - -从 Java 8 开始,接口也可以拥有默认的方法实现,这是因为不支持默认方法的接口的维护成本太高了。在 Java 8 之前,如果一个接口想要添加新的方法,那么要修改所有实现了该接口的类。 - -```java -public interface InterfaceDefaultTest { - default void func() { - System.out.println("default method in interface!"); - } -} -``` - -**3. 比较** - -- 从设计层面上看,抽象类提供了一种 IS-A 关系,那么就必须满足里式替换原则,即子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE-A 关系,它只是提供一种方法实现契约,并不要求子类和父类具有 IS-A 关系; -- 从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。 - -**4. 使用选择** - -使用抽象类: - -- 需要在几个相关的类中共享代码; -- 需要能控制继承来的方法和字段的访问权限,而不是都为 public。 -- 需要继承非静态(non-static)和非常量(non-final)字段。 - -使用接口: - -- 需要让不相关的类都实现一个方法,例如不相关的类都可以实现 Compareable 接口中的 compareTo() 方法; -- 需要使用多重继承。 - -> [When to Use Abstract Class and Interface](https://dzone.com/articles/when-to-use-abstract-class-and-intreface) - -## super - -**1. 访问父类的成员** - -如果子类覆盖了父类的中某个方法的实现,可以通过使用 super 关键字来引用父类的方法实现。 - -```java -public class Superclass { - public void printMethod() { - System.out.println("Printed in Superclass."); - } -} -``` - -```java -public class Subclass extends Superclass { - // Overrides printMethod in Superclass - public void printMethod() { - super.printMethod(); - System.out.println("Printed in Subclass"); - } - - public static void main(String[] args) { - Subclass s = new Subclass(); - s.printMethod(); - } -} -``` - -**2. 访问父类的构造函数** - -可以使用 super() 函数访问父类的构造函数,从而完成一些初始化的工作。 - -```java -public MountainBike(int startHeight, int startCadence, int startSpeed, int startGear) { - super(startCadence, startSpeed, startGear); - seatHeight = startHeight; -} -``` - -> [Using the Keyword super](https://docs.oracle.com/javase/tutorial/java/IandI/super.html) - -## 重载与重写 - -- 重写存在于继承体系中,指子类实现了一个与父类在方法声明上完全相同的一个方法; - -- 重载即存在于继承体系中,也存在于同一个类中,指一个方法与已经存在的方法或者父类的方法名称上相同,但是参数类型、个数、顺序至少有一个不同。应该注意的是,返回值不同,其它都相同不算是重载。 - -# 五、String - -## String, StringBuffer and StringBuilder - -**1. 是否可变** - -- String 不可变 -- StringBuffer 和 StringBuilder 可变 - -**2. 是否线程安全** - -- String 不可变,因此是线程安全的 -- StringBuilder 不是线程安全的 -- StringBuffer 是线程安全的,内部使用 synchronized 来同步 - -> [String, StringBuffer, and StringBuilder](https://stackoverflow.com/questions/2971315/string-stringbuffer-and-stringbuilder) - -## String 不可变的原因 - -**1. 可以缓存 hash 值** - -因为 String 的 hash 值经常被使用,例如 String 用做 HashMap 等情况。不可变的特性可以使得 hash 值也不可变,因此只需要进行一次计算。 - -**2. String Pool 的需要** - -如果一个 String 对象已经被创建过了,那么就会从 String Pool 中取得引用。只有 String 是不可变的,才可能使用 String Pool。 - -

    - -**3. 安全性** - -String 经常作为参数,String 不可变性可以保证参数不可变。例如在作为网络连接参数的情况下如果 String 是可变的,那么在网络连接过程中,String 被改变,改变 String 对象的那一方以为现在连接的是其它主机,而实际情况却不一定是。 - -**4. 线程安全** - -String 不可变性天生具备线程安全,可以在多个线程中使用。 - -> [Why String is immutable in Java?](https://www.programcreek.com/2013/04/why-string-is-immutable-in-java/) - -## String.intern() - -使用 String.intern() 可以保证所有相同内容的字符串变量引用相同的内存对象。 - -> [揭开 String.intern() 那神秘的面纱](https://www.jianshu.com/p/95f516cb75ef) - -# 六、基本类型与运算 - -## 包装类型 - -八个基本类型:boolean/1 byte/8 char/16 short/16 int/32 float/32 long/64 double/64 - -基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。 - -```java -Integer x = 2; // 装箱 -int y = x; // 拆箱 -``` - -new Integer(123) 与 Integer.valueOf(123) 的区别在于,Integer.valueOf(123) 可能会使用缓存对象,因此多次使用 Integer.valueOf(123) 会取得同一个对象的引用。 - -```java -public static void main(String[] args) { - Integer a = new Integer(1); - Integer b = new Integer(1); - System.out.println("a==b? " + (a == b)); - - Integer c = Integer.valueOf(1); - Integer d = Integer.valueOf(1); - System.out.println("c==d? " + (c == d)); -} -``` - -```html -a==b? false -c==d? true -``` - -valueOf() 方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就直接使用缓存池的内容。 - -```java -public static Integer valueOf(int i) { - final int offset = 128; - if (i >= -128 && i <= 127) { - return IntegerCache.cache[i + offset]; - } - return new Integer(i); -} -``` - -基本类型中可以使用缓存池的值如下: - -- boolean values true and false -- all byte values -- short values between -128 and 127 -- int values between -128 and 127 -- char in the range \u0000 to \u007F - -自动装箱过程编译器会调用 valueOf() 方法,因此多个 Integer 对象使用装箱来创建并且值相同,那么就会引用相同的对象。这样做很显然是为了节省内存开销。 - -```java -Integer x = 1; -Integer y = 1; -System.out.println(c == d); // true -``` - -> [Differences between new Integer(123), Integer.valueOf(123) and just 123 -](https://stackoverflow.com/questions/9030817/differences-between-new-integer123-integer-valueof123-and-just-123) - -## switch - -A switch works with the byte, short, char, and int primitive data types. It also works with enumerated types and a few special classes that "wrap" certain primitive types: Character, Byte, Short, and Integer. - -In the JDK 7 release, you can use a String object in the expression of a switch statement. - -switch 不支持 long,是因为 swicth 的设计初衷是为那些只需要对少数的几个值进行等值判断,如果值过于复杂,那么还是用 if 比较合适。 - -> [Why can't your switch statement data type be long, Java?](https://stackoverflow.com/questions/2676210/why-cant-your-switch-statement-data-type-be-long-java) - -switch 使用查找表的方式来实现,JVM 中使用的指令是 lookupswitch。 - -```java -public static void main(String... args) { - switch (1) { - case 1: - break; - case 2: - break; - } -} - -public static void main(java.lang.String[]); - Code: - Stack=1, Locals=1, Args_size=1 - 0: iconst_1 - 1: lookupswitch{ //2 - 1: 28; - 2: 31; - default: 31 } - 28: goto 31 - 31: return -``` - -> [How does Java's switch work under the hood?](https://stackoverflow.com/questions/12020048/how-does-javas-switch-work-under-the-hood) - -# 七、反射 - -每个类都有一个 **Class** 对象,包含了与类有关的信息。当编译一个新类时,会产生一个同名的 .class 文件,该文件内容保存着 Class 对象。 - -类加载相当于 Class 对象的加载。类在第一次使用时才动态加载到 JVM 中,可以使用 Class.forName('com.mysql.jdbc.Driver.class') 这种方式来控制类的加载,该方法会返回一个 Class 对象。 - -反射可以提供运行时的类信息,并且这个类可以在运行时才加载进来,甚至在编译时期该类的 .class 不存在也可以加载进来。 - -Class 和 java.lang.reflect 一起对反射提供了支持,java.lang.reflect 类库主要包含了以下三个类: - -1. **Field** :可以使用 get() 和 set() 方法读取和修改 Field 对象关联的字; -2. **Method** :可以使用 invoke() 方法调用与 Method 对象关联的方法; -3. **Constructor** :可以用 Constructor 创建新的对象。 - -IDE 使用反射机制获取类的信息,在使用一个类的对象时,能够把类的字段、方法和构造函数等信息列出来供用户选择。 - -> [深入解析 Java 反射(1)- 基础](http://www.sczyh30.com/posts/Java/java-reflection-1/) - -**Advantages of Using Reflection:** - -- **Extensibility Features** : An application may make use of external, user-defined classes by creating instances of extensibility objects using their fully-qualified names. -- **Class Browsers and Visual Development Environments** : A class browser needs to be able to enumerate the members of classes. Visual development environments can benefit from making use of type information available in reflection to aid the developer in writing correct code. -- **Debuggers and Test Tools** : Debuggers need to be able to examine private members on classes. Test harnesses can make use of reflection to systematically call a discoverable set APIs defined on a class, to insure a high level of code coverage in a test suite. - -**Drawbacks of Reflection:** - -Reflection is powerful, but should not be used indiscriminately. If it is possible to perform an operation without using reflection, then it is preferable to avoid using it. The following concerns should be kept in mind when accessing code via reflection. - -- **Performance Overhead** : Because reflection involves types that are dynamically resolved, certain Java virtual machine optimizations can not be performed. Consequently, reflective operations have slower performance than their non-reflective counterparts, and should be avoided in sections of code which are called frequently in performance-sensitive applications. -- **Security Restrictions** : Reflection requires a runtime permission which may not be present when running under a security manager. This is in an important consideration for code which has to run in a restricted security context, such as in an Applet. -- **Exposure of Internals** :Since reflection allows code to perform operations that would be illegal in non-reflective code, such as accessing private fields and methods, the use of reflection can result in unexpected side-effects, which may render code dysfunctional and may destroy portability. Reflective code breaks abstractions and therefore may change behavior with upgrades of the platform. - -> [Trail: The Reflection API](https://docs.oracle.com/javase/tutorial/reflect/index.html) - -# 八、异常 - -Throwable 可以用来表示任何可以作为异常抛出的类,分为两种: **Error** 和 **Exception**,其中 Error 用来表示编译时系统错误。 - -Exception 分为两种: - -1. **受检异常** :需要用 try...catch... 语句捕获并进行处理,并且可以从异常中恢复; -2. **非受检异常** :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序奔溃并且无法恢复。 - -

    - -> - [Java 入门之异常处理](https://www.tianmaying.com/tutorial/Java-Exception) -> - [Java 异常的面试问题及答案 -Part 1](http://www.importnew.com/7383.html) - -# 九、泛型 - -```java -public class Box { - // T stands for "Type" - private T t; - public void set(T t) { this.t = t; } - public T get() { return t; } -} -``` - -> - [Java 泛型详解](https://www.ziwenxie.site/2017/03/01/java-generic/) -> - [10 道 Java 泛型面试题](https://cloud.tencent.com/developer/article/1033693) - -# 十、注解 - -Java 注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。 - -> [注解 Annotation 实现原理与自定义注解例子](https://www.cnblogs.com/acm-bingzi/p/javaAnnotation.html) - -# 十一、特性 - -## 面向对象三大特性 - -> [封装、继承、多态](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E6%80%9D%E6%83%B3.md#%E5%B0%81%E8%A3%85%E7%BB%A7%E6%89%BF%E5%A4%9A%E6%80%81) - -## Java 各版本的新特性 - -**New highlights in Java SE 8** - -1. Lambda Expressions -2. Pipelines and Streams -3. Date and Time API -4. Default Methods -5. Type Annotations -6. Nashhorn JavaScript Engine -7. Concurrent Accumulators -8. Parallel operations -9. PermGen Error Removed - -**New highlights in Java SE 7** - -1. Strings in Switch Statement -2. Type Inference for Generic Instance Creation -3. Multiple Exception Handling -4. Support for Dynamic Languages -5. Try with Resources -6. Java nio Package -7. Binary Literals, Underscore in literals -8. Diamond Syntax - -> - [Difference between Java 1.8 and Java 1.7?](http://www.selfgrowth.com/articles/difference-between-java-18-and-java-17) -> - [Java 8 特性 ](http://www.importnew.com/19345.html) - -## Java 与 C++ 的区别 - -Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,C++ 为了兼容 C 即支持面向对象也支持面向过程。 - -| Java | C++ | -| -- | -- | -| Java does not support pointers, templates, unions, operator overloading, structures etc. The Java language promoters initially said "No pointers!", but when many programmers questioned how you can work without pointers, the promoters began saying "Restricted pointers." Java supports what it calls "references". References act a lot like pointers in C++ languages but you cannot perform arithmetic on pointers in Java. References have types, and they're type-safe. These references cannot be interpreted as raw address and unsafe conversion is not allowed. | C++ supports structures, unions, templates, operator overloading, pointers and pointer arithmetic.| -| Java support automatic garbage collection. It does not support destructors as C++ does. | C++ support destructors, which is automatically invoked when the object is destroyed. | -| Java does not support conditional compilation and inclusion. | Conditional inclusion (#ifdef #ifndef type) is one of the main features of C++. | -| Java has built in support for threads. In Java, there is a `Thread` class that you inherit to create a new thread and override the `run()` method. | C++ has no built in support for threads. C++ relies on non-standard third-party libraries for thread support. | -| Java does not support default arguments. There is no scope resolution operator (::) in Java. The method definitions must always occur within a class, so there is no need for scope resolution there either. | C++ supports default arguments. C++ has scope resolution operator (::) which is used to to define a method outside a class and to access a global variable within from the scope where a local variable also exists with the same name. | -| There is no _goto_ statement in Java. The keywords `const` and `goto` are reserved, even though they are not used. | C++ has _goto_ statement. However, it is not considered good practice to use of _goto_ statement. | -| Java doesn't provide multiple inheritance, at least not in the same sense that C++ does. | C++ does support multiple inheritance. The keyword `virtual` is used to resolve ambiguities during multiple inheritance if there is any. | -| Exception handling in Java is different because there are no destructors. Also, in Java, try/catch must be defined if the function declares that it may throw an exception. | While in C++, you may not include the try/catch even if the function throws an exception. | -| Java has method overloading, but no operator overloading. The `String` class does use the `+` and `+=` operators to concatenate strings and `String`expressions use automatic type conversion, but that's a special built-in case. | C++ supports both method overloading and operator overloading. | -| Java has built-in support for documentation comments (`/** ... */`); therefore, Java source files can contain their own documentation, which is read by a separate tool usually `javadoc` and reformatted into HTML. This helps keeping documentation maintained in easy way. | C++ does not support documentation comments. | -| Java is interpreted for the most part and hence platform independent. | C++ generates object code and the same code may not run on different platforms. | - -> [What are the main differences between Java and C++?](http://cs-fundamentals.com/tech-interview/java/differences-between-java-and-cpp.php) - -## JRE or JDK - -- JRE is the JVM program, Java application need to run on JRE. -- JDK is a superset of JRE, JRE + tools for developing java programs. e.g, it provides the compiler "javac" - -# 参考资料 - -- Eckel B. Java 编程思想[M]. 机械工业出版社, 2002. -- Bloch J. Effective java[M]. Addison-Wesley Professional, 2017. diff --git a/notes/Java 容器.md b/notes/Java 容器.md deleted file mode 100644 index bb0a9265..00000000 --- a/notes/Java 容器.md +++ /dev/null @@ -1,755 +0,0 @@ - -* [一、概览](#一概览) - * [Collection](#collection) - * [Map](#map) -* [二、容器中的设计模式](#二容器中的设计模式) - * [迭代器模式](#迭代器模式) - * [适配器模式](#适配器模式) -* [三、散列](#三散列) -* [四、源码分析](#四源码分析) - * [ArrayList](#arraylist) - * [Vector](#vector) - * [LinkedList](#linkedlist) - * [TreeMap](#treemap) - * [HashMap](#hashmap) - * [LinkedHashMap](#linkedhashmap) - * [ConcurrentHashMap - JDK 1.7](#concurrenthashmap---jdk-17) - * [ConcurrentHashMap - JDK 1.8](#concurrenthashmap---jdk-18) -* [五、参考资料](#五参考资料) - - - -# 一、概览 - -容器主要包括 Collection 和 Map 两种,Collection 又包含了 List、Set 以及 Queue。 - -## Collection - -

    - -### 1. Set - -- HashSet:基于哈希实现,支持快速查找,但不支持有序性操作,例如根据一个范围查找元素的操作。并且失去了元素的插入顺序信息,也就是说使用 Iterator 遍历 HashSet 得到的结果是不确定的。 - -- TreeSet:基于红黑树实现,支持有序性操作,但是查找效率不如 HashSet,HashSet 查找时间复杂度为 O(1),TreeSet 则为 O(logn); - -- LinkedHashSet:具有 HashSet 的查找效率,且内部使用链表维护元素的插入顺序。 - -### 2. List - -- ArrayList:基于动态数组实现,支持随机访问; - -- Vector:和 ArrayList 类似,但它是线程安全的; - -- LinkedList:基于双向循环链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedList 还可以用作栈、队列和双端队列。 - -### 3. Queue - -- LinkedList:可以用它来支持双向队列; - -- PriorityQueue 是基于堆结构实现,可以用它来实现优先级队列。 - -## Map - -

    - -- HashMap:基于哈希实现; - -- HashTable:和 HashMap 类似,但它是线程安全的,这意味着同一时刻多个线程可以同时写入 HashTable 并且不会导致数据不一致。它是遗留类,不应该去使用它。现在可以使用 ConcurrentHashMap 来支持线程安全,并且 ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁。 - -- LinkedHashMap:使用链表来维护元素的顺序,顺序为插入顺序或者最近最少使用(LRU)顺序。 - -- TreeMap:基于红黑树实现。 - -# 二、容器中的设计模式 - -## 迭代器模式 - -

    - -Collection 实现了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。 - -从 JDK 1.5 之后可以使用 foreach 方法来遍历实现了 Iterable 接口的聚合对象。 - -```java -List list = new ArrayList<>(); -list.add("a"); -list.add("b"); -for (String item : list) { - System.out.println(item); -} -``` - -> [迭代器模式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#%E5%8D%81%E4%BA%8C%E8%BF%AD%E4%BB%A3%E5%99%A8%E6%A8%A1%E5%BC%8F) - -## 适配器模式 - -java.util.Arrays#asList() 可以把数组类型转换为 List 类型。 - -```java - List list = Arrays.asList(1, 2, 3); - int[] arr = {1, 2, 3}; - list = Arrays.asList(arr); -``` - -> [适配器模式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#%E5%8D%81%E9%80%82%E9%85%8D%E5%99%A8%E6%A8%A1%E5%BC%8F) - -# 三、散列 - -hasCode() 返回散列值,使用的是对象的地址。 - -而 equals() 是用来判断两个对象是否相等的,相等的两个对象散列值一定要相同,但是散列值相同的两个对象不一定相等。 - -相等必须满足以下五个性质: - -**1. 自反性** - -```java -x.equals(x); // true -``` - -**2. 对称性** - -```java -x.equals(y) == y.equals(x) // true -``` - -**3. 传递性** - -```java -if(x.equals(y) && y.equals(z)) { - x.equals(z); // true; -} -``` - -**4. 一致性** - -多次调用 equals() 方法结果不变 - -```java -x.equals(y) == x.equals(y); // true -``` - -**5. 与 null 的比较** - -对任何不是 null 的对象 x 调用 x.equals(null) 结果都为 false - -```java -x.euqals(null); // false; -``` - -# 四、源码分析 - -建议先阅读 [算法-查找](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E7%AE%97%E6%B3%95.md#%E6%9F%A5%E6%89%BE) 部分,对容器类源码的理解有很大帮助。 - -至于 ConcurrentHashMap 的理解,需要有并发方面的知识,建议先阅读:[Java 并发](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/Java%20%E5%B9%B6%E5%8F%91.md) - -以下源码从 JDK 1.8 提取而来,下载地址:[JDK-Source-Code](https://github.com/CyC2018/JDK-Source-Code)。 - -## ArrayList - -[ArraList.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/ArrayList.java) - -### 1. 概览 - -实现了 RandomAccess 接口,因此支持随机访问,这是理所当然的,因为 ArrayList 是基于数组实现的。 - -```java -public class ArrayList extends AbstractList - implements List, RandomAccess, Cloneable, java.io.Serializable -``` - -基于数组实现,保存元素的数组使用 transient 修饰,该关键字声明数组默认不会被序列化。这是 ArrayList 具有动态扩容特性,因此保存元素的数组不一定都会被使用,那么就没必要全部进行序列化。ArrayList 重写了 writeObject() 和 readObject() 来控制只序列化数组中有元素填充那么部分内容。 - -```java -transient Object[] elementData; // non-private to simplify nested class access -``` - -数组的默认大小为 10。 - -```java -private static final int DEFAULT_CAPACITY = 10; -``` - -删除元素时需要调用 System.arraycopy() 对元素进行复制,因此删除操作成本很高。 - -```java -public E remove(int index) { - rangeCheck(index); - - modCount++; - E oldValue = elementData(index); - - int numMoved = size - index - 1; - if (numMoved > 0) - System.arraycopy(elementData, index+1, elementData, index, numMoved); - elementData[--size] = null; // clear to let GC do its work - - return oldValue; -} -``` - -添加元素时使用 ensureCapacity() 方法来保证容量足够,如果不够时,需要使用 grow() 方法进行扩容,使得新容量为旧容量的 1.5 倍(oldCapacity + (oldCapacity >> 1))。扩容操作需要把原数组整个复制到新数组中,因此最好在创建 ArrayList 对象时就指定大概的容量大小,减少扩容操作的次数。 - -```java -private void ensureExplicitCapacity(int minCapacity) { - modCount++; - - // overflow-conscious code - if (minCapacity - elementData.length > 0) - grow(minCapacity); -} - -private void grow(int minCapacity) { - // overflow-conscious code - int oldCapacity = elementData.length; - int newCapacity = oldCapacity + (oldCapacity >> 1); - if (newCapacity - minCapacity < 0) - newCapacity = minCapacity; - if (newCapacity - MAX_ARRAY_SIZE > 0) - newCapacity = hugeCapacity(minCapacity); - // minCapacity is usually close to size, so this is a win: - elementData = Arrays.copyOf(elementData, newCapacity); -} -``` - -### 2. Fail-Fast - -modCount 用来记录 ArrayList 结构发生变化的次数。结构发生变化是指添加或者删除至少一个元素的所有操作,或者是调整内部数组的大小,仅仅只是设置元素的值不算结构发生变化。 - -在进行序列化或者迭代等操作时,需要比较操作前后 modCount 是否改变,如果改变了需要抛出 ConcurrentModificationException。 - -```java -private void writeObject(java.io.ObjectOutputStream s) - throws java.io.IOException{ - // Write out element count, and any hidden stuff - int expectedModCount = modCount; - s.defaultWriteObject(); - - // Write out size as capacity for behavioural compatibility with clone() - s.writeInt(size); - - // Write out all elements in the proper order. - for (int i=0; i()); 返回一个线程安全的 ArrayList,也可以使用 concurrent 并发包下的 CopyOnWriteArrayList 类; - -### 4. 和 LinkedList 的区别 - -- ArrayList 基于动态数组实现,LinkedList 基于双向循环链表实现; -- ArrayList 支持随机访问,LinkedList 不支持; -- LinkedList 在任意位置添加删除元素更快。 - -## Vector - -[Vector.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/Vector.java) - -## LinkedList - -[LinkedList.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/LinkedList.java) - -## TreeMap - -[TreeMap.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/TreeMap.java) - -## HashMap - -[HashMap.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/HashMap.java) - -### 1. 存储结构 - -使用拉链法来解决冲突,内部包含了一个 Entry 类型的数组 table,数组中的每个位置被当成一个桶。 - -```java -transient Entry[] table; -``` - -其中,Entry 就是存储数据的键值对,它包含了四个字段。从 next 字段我们可以看出 Entry 是一个链表,即每个桶会存放一个链表。 - -

    - -JDK 1.8 使用 Node 类型存储一个键值对,它依然继承自 Entry,因此可以按照上面的存储结构来理解。 - -需要注意的是,Key 类型为 final,这意味着它不可改变,因此每个桶的链表采用头插法实现,也就是说新节点需要只能在链表头部插入。 - -```java -static class Node implements Map.Entry { - final int hash; - final K key; - V value; - Node next; - - Node(int hash, K key, V value, Node next) { - this.hash = hash; - this.key = key; - this.value = value; - this.next = next; - } - - public final K getKey() { return key; } - public final V getValue() { return value; } - public final String toString() { return key + "=" + value; } - - public final int hashCode() { - return Objects.hashCode(key) ^ Objects.hashCode(value); - } - - public final V setValue(V newValue) { - V oldValue = value; - value = newValue; - return oldValue; - } - - public final boolean equals(Object o) { - if (o == this) - return true; - if (o instanceof Map.Entry) { - Map.Entry e = (Map.Entry)o; - if (Objects.equals(key, e.getKey()) && - Objects.equals(value, e.getValue())) - return true; - } - return false; - } -} -``` - -### 2. 拉链法的工作原理 - -```java -HashMap map = new HashMap<>(); // 默认大小为 16 -map.put("sachin", 30); -map.put("vishal", 20); -map.put("vaibhav", 20); -``` - -- 计算 "sachin" 的 hashcode 为 115,使用除留余数法得到 115 % 16 = 3,因此 ("sachin", 30) 键值对放到第 3 个桶上。 -- 同样得到 ("vishal", 20) 和 ("vaibhav", 20) 都应该放到第 6 个桶上。("vishal", 20) 先放入, ("vaibhav", 20) 链接到 ("vishal", 20) 之后。 - -

    - -当进行查找时,需要分成两步进行,第一步是先根据 hashcode 计算出所在的桶,第二步是在链表上顺序查找。由于 table 是数组形式的,具有随机读取的特性,因此第一步的时间复杂度为 O(1),而第二步需要在链表上顺序查找,时间复杂度显然和链表的长度成正比。 - -### 3. 链表转红黑树 - -应该注意到,从 JDK 1.8 开始,一个桶存储的链表长度大于 8 时会将链表转换为红黑树。 - -

    - -### 4. 扩容 - -因为从 JDK 1.8 开始引入了红黑树,因此扩容操作较为复杂,为了便于理解,以下内容使用 JDK 1.7 的内容。 - -设 HashMap 的 table 长度为 M,需要存储的键值对数量为 N,如果哈希函数满足均匀性的要求,那么每条链表的长度大约为 N/M,因此平均查找次数的数量级为 O(N/M)。 - -为了让查找的成本降低,应该尽可能使得 N/M 尽可能小,因此需要保证 M 尽可能大,可就是说 table 要尽可能大。HashMap 采用动态扩容来根据当前的 N 值来调整 M 值,使得空间效率和时间效率都能得到保证。 - -和扩容相关的参数主要有:capacity、size、threshold 和 load_factor。 - -| 参数 | 含义 | -| :--: | :-- | -| capacity | table 的容量大小,默认为 16,需要注意的是 capacity 必须保证为 2 的次方。| -| size | table 的实际使用量。 | -| threshold | size 的临界值,size 必须小于 threshold,如果大于等于,就必须进行扩容操作。 | -| load_factor | table 能够使用的比例,threshold = capacity * load_factor。| - -```java -static final int DEFAULT_INITIAL_CAPACITY = 16; - -static final int MAXIMUM_CAPACITY = 1 << 30; - -static final float DEFAULT_LOAD_FACTOR = 0.75f; - -transient Entry[] table; - -transient int size; - -int threshold; - -final float loadFactor; - -transient int modCount; -``` - -从下面的添加元素代码中可以看出,当需要扩容时,令 capacity 为原来的两倍。 - -```java -void addEntry(int hash, K key, V value, int bucketIndex) { - Entry e = table[bucketIndex]; - table[bucketIndex] = new Entry<>(hash, key, value, e); - if (size++ >= threshold) - resize(2 * table.length); -} -``` - -扩容使用 resize() 实现,需要注意的是,扩容操作同样需要把旧 table 的所有键值对重新插入新的 table 中,因此这一步是很费时的。 - -```java -void resize(int newCapacity) { - Entry[] oldTable = table; - int oldCapacity = oldTable.length; - if (oldCapacity == MAXIMUM_CAPACITY) { - threshold = Integer.MAX_VALUE; - return; - } - - Entry[] newTable = new Entry[newCapacity]; - transfer(newTable); - table = newTable; - threshold = (int)(newCapacity * loadFactor); -} - -void transfer(Entry[] newTable) { - Entry[] src = table; - int newCapacity = newTable.length; - for (int j = 0; j < src.length; j++) { - Entry e = src[j]; - if (e != null) { - src[j] = null; - do { - Entry next = e.next; - int i = indexFor(e.hash, newCapacity); - e.next = newTable[i]; - newTable[i] = e; - e = next; - } while (e != null); - } - } -} -``` - -### 5. 确定桶下标 - -需要三步操作:计算 Key 的 hashCode、高位运算、除留余数法取模。 - -

    - -**(一)hashcode()** - -```java -public final int hashCode() { - return Objects.hashCode(key) ^ Objects.hashCode(value); -} -``` - -**(二)高位运算** - -通过 hashCode() 的高 16 位异或低 16 位,使得数组比较小时,也能保证高低位都参与到了哈希计算中。 - -```java -static final int hash(Object key) { - int h; - return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); -} -``` - -**(三)除留余数** - -令 x = 1<<4,即 x 为 2 的 4 次方,它具有以下性质: - -``` -x : 00010000 -x-1 : 00001111 -``` - -令一个数 y 与 x-1 做与运算,可以去除 y 位级表示的第 4 位及以上数: - -``` -y : 10110010 -x-1 : 00001111 -y&(x-1) : 00000010 -``` - -这个性质和 y 对 x 取模效果是一样的: - -``` -x : 00010000 -y : 10110010 -y%x : 00000010 -``` - -我们知道,位运算的代价比求模运算小的多,因此在进行这种计算时能用位运算的话能带来更高的性能。 - -拉链法需要使用除留余数法来得到桶下标,也就是需要进行以下计算:hash%capacity,如果能保证 capacity 为 2 的幂次方,那么就可以将这个操作转换位位运算。 - -以下操作在 Java 8 中没有,但是原理上相同。 - -```java -static int indexFor(int h, int length) { - return h & (length-1); -} -``` - -### 6. 扩容-重新计算桶下标 - -在进行扩容时,需要把 Node 重新放到对应的桶上。HashMap 使用了一个特殊的机制,可以降低重新计算桶下标的操作。 - -假设原数组长度 capacity 为 8,扩容之后 new capacity 为 16: - -```html -capacity : 00010000 -new capacity : 00100000 -``` - -对于一个 Key,它的 hashCode 如果在第 6 位上为 0,那么除留余数得到的结果和之前一样;如果为 1,那么得到的结果为原来的结果 + 8。 - -### 7. 扩容-计算数组容量 - -先考虑如何求一个数的补码,对于 10100000,它的补码为 11111111,可以使用以下方法得到: - -``` -mask |= mask >> 1 11000000 -mask |= mask >> 2 11110000 -mask |= mask >> 4 11111111 -``` - -如果最后令 mask+1,得到就是大于原始数字的最小的 2 次方。 - -以下是 HashMap 中计算一个大小所需要的数组容量的代码: - -```java -static final int tableSizeFor(int cap) { - int n = cap - 1; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1; -} -``` - -### 7. null 值 - -HashMap 允许有一个 Node 的 Key 为 null,该 Node 一定会放在第 0 个桶的位置,因为这个 Key 无法计算 hashCode(),因此只能规定一个桶让它存放。 - -### 8. 与 HashTable 的区别 - -- HashTable 是同步的,它使用了 synchronized 来进行同步。它也是线程安全的,多个线程可以共享同一个 HashTable。HashMap 不是同步的,但是可以使用 ConcurrentHashMap,它是 HashTable 的替代,而且比 HashTable 可扩展性更好。 -- HashMap 可以插入键为 null 的 Entry。 -- HashMap 的迭代器是 fail-fast 迭代器,而 Hashtable 的 enumerator 迭代器不是 fail-fast 的。 -- 由于 Hashtable 是线程安全的也是 synchronized,所以在单线程环境下它比 HashMap 要慢。 -- HashMap 不能保证随着时间的推移 Map 中的元素次序是不变的。 - -## LinkedHashMap - -[LinkedHashMap.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/HashMap.java) - -## ConcurrentHashMap - JDK 1.7 - -[ConcurrentHashMap.java](https://github.com/CyC2018/JDK-Source-Code/blob/master/src/1.7/ConcurrentHashMap.java) - -ConcurrentHashMap 和 HashMap 实现上类似,最主要的差别是 ConcurrentHashMap 采用了了分段锁,每个分段锁维护着几个桶,多个线程可以同时访问不同分段锁上的桶。 - -相比于 HashTable 和用同步包装器包装的 HashMap(Collections.synchronizedMap(new HashMap())),ConcurrentHashMap 拥有更高的并发性。在 HashTable 和由同步包装器包装的 HashMap 中,使用一个全局的锁来同步不同线程间的并发访问。同一时间点,只能有一个线程持有锁,也就是说在同一时间点,只能有一个线程能访问容器。这虽然保证多线程间的安全并发访问,但同时也导致对容器的访问变成串行化的了。 - -### 1. 存储结构 - -和 HashMap 类似。 - -```java -static final class HashEntry { - final int hash; - final K key; - volatile V value; - volatile HashEntry next; -} -``` - -继承自 ReentrantLock,每个 Segment 维护着多个 HashEntry。 - -```java -static final class Segment extends ReentrantLock implements Serializable { - - private static final long serialVersionUID = 2249069246763182397L; - - static final int MAX_SCAN_RETRIES = - Runtime.getRuntime().availableProcessors() > 1 ? 64 : 1; - - transient volatile HashEntry[] table; - - transient int count; - - transient int modCount; - - transient int threshold; - - final float loadFactor; -} -``` - -```java -final Segment[] segments; -``` - -默认的并发级别为 16,也就是说默认创建 16 个 Segment。 - -```java -static final int DEFAULT_CONCURRENCY_LEVEL = 16; -``` - -

    - -### 2. HashEntery 的不可变性 - -HashEntry 中的 key,hash,next 都声明为 final 型。这意味着,不能把节点添加到链接的中间和尾部,也不能在链接的中间和尾部删除节点。这个特性可以保证:在访问某个节点时,这个节点之后的链接不会被改变。这个特性可以大大降低处理链表时的复杂性。 - -同时,HashEntry 类的 value 域被声明为 Volatile 型,Java 的内存模型可以保证:某个写线程对 value 域的写入马上可以被后续的某个读线程 “看” 到。在 ConcurrentHashMap 中,不允许用 null 作为键和值,当读线程读到某个 HashEntry 的 value 域的值为 null 时,便知道产生了冲突——发生了重排序现象,需要加锁后重新读入这个 value 值。这些特性互相配合,使得读线程即使在不加锁状态下,也能正确访问 ConcurrentHashMap。 - -```java -final V remove(Object key, int hash, Object value) { - if (!tryLock()) - scanAndLock(key, hash); - V oldValue = null; - try { - HashEntry[] tab = table; - int index = (tab.length - 1) & hash; - HashEntry e = entryAt(tab, index); - HashEntry pred = null; - while (e != null) { - K k; - HashEntry next = e.next; - if ((k = e.key) == key || - (e.hash == hash && key.equals(k))) { - V v = e.value; - if (value == null || value == v || value.equals(v)) { - if (pred == null) - setEntryAt(tab, index, next); - else - pred.setNext(next); - ++modCount; - --count; - oldValue = v; - } - break; - } - pred = e; - e = next; - } - } finally { - unlock(); - } - return oldValue; -} -``` - -在以下链表中删除 C 节点,C 节点之后的所有节点都原样保留,C 节点之前的所有节点都被克隆到新的链表中,并且顺序被反转。可以注意到,在执行 remove 操作时,原始链表并没有被修改,也就是说,读线程不会受到执行 remove 操作的并发写线程的干扰。 - -

    - -

    - -除了 remove 操作,其它操作也类似。可以得出一个结论:写线程对某个链表的结构性修改不会影响其他的并发读线程对这个链表的遍历访问。 - -### 3. Volatile 变量 - -```java -static final class HashEntry { - final int hash; - final K key; - volatile V value; - volatile HashEntry next; -} -``` - -由于内存可见性问题,未正确同步的情况下,写线程写入的值可能并不为后续的读线程可见。 - -下面以写线程 M 和读线程 N 来说明 ConcurrentHashMap 如何协调读 / 写线程间的内存可见性问题。 - -

    - -假设线程 M 在写入了 volatile 型变量 count 后,线程 N 读取了这个 volatile 型变量 count。 - -根据 happens-before 关系法则中的程序次序法则,A appens-before 于 B,C happens-before D。 - -根据 Volatile 变量法则,B happens-before C。 - -根据传递性,连接上面三个 happens-before 关系得到:A appens-before 于 B; B appens-before C;C happens-before D。也就是说:写线程 M 对链表做的结构性修改,在读线程 N 读取了同一个 volatile 变量后,对线程 N 也是可见的了。 - -虽然线程 N 是在未加锁的情况下访问链表。Java 的内存模型可以保证:只要之前对链表做结构性修改操作的写线程 M 在退出写方法前写 volatile 型变量 count,读线程 N 在读取这个 volatile 型变量 count 后,就一定能 “看到” 这些修改。 - -ConcurrentHashMap 中,每个 Segment 都有一个变量 count。它用来统计 Segment 中的 HashEntry 的个数。这个变量被声明为 volatile。 - -```java -transient volatile int count; -``` - -所有不加锁读方法,在进入读方法时,首先都会去读这个 count 变量。比如下面的 get 方法: - -```java -V get(Object key, int hash) { - if(count != 0) { // 首先读 count 变量 - HashEntry e = getFirst(hash); - while(e != null) { - if(e.hash == hash && key.equals(e.key)) { - V v = e.value; - if(v != null) - return v; - // 如果读到 value 域为 null,说明发生了重排序,加锁后重新读取 - return readValueUnderLock(e); - } - e = e.next; - } - } - return null; -} -``` - -在 ConcurrentHashMap 中,所有执行写操作的方法(put, remove, clear),在对链表做结构性修改之后,在退出写方法前都会去写这个 count 变量。所有未加锁的读操作(get, contains, containsKey)在读方法中,都会首先去读取这个 count 变量。 - -根据 Java 内存模型,对 同一个 volatile 变量的写 / 读操作可以确保:写线程写入的值,能够被之后未加锁的读线程 “看到”。 - -这个特性和前面介绍的 HashEntry 对象的不变性相结合,使得在 ConcurrentHashMap 中,读线程在读取散列表时,基本不需要加锁就能成功获得需要的值。这两个特性相配合,不仅减少了请求同一个锁的频率(读操作一般不需要加锁就能够成功获得值),也减少了持有同一个锁的时间(只有读到 value 域的值为 null 时 ,读线程才需要加锁后重读)。 - -### 4. 小结 - -ConcurrentHashMap 的高并发性主要来自于三个方面: - -- 用分离锁实现多个线程间的更深层次的共享访问。 -- 用 HashEntery 对象的不变性来降低执行读操作的线程在遍历链表期间对加锁的需求。 -- 通过对同一个 Volatile 变量的写 / 读访问,协调不同线程间读 / 写操作的内存可见性。 - -## ConcurrentHashMap - JDK 1.8 - -[ConcurrentHashMap.java](https://github.com/CyC2018/JDK-Source-Code/blob/master/src/ConcurrentHashMap.java) - -

    - - -JDK 1.7 分段锁机制来实现并发更新操作,核心类为 Segment,它继承自重入锁 ReentrantLock。 - -

    - -JDK 1.8 的实现不是用了 Segment,Segment 属于重入锁 ReentrantLock。而是使用了内置锁 synchronized,主要是出于以下考虑: - -1. synchronized 的锁粒度更低; -2. synchronized 优化空间更大; -3. 在大量数据操作的情况下,ReentrantLock 会开销更多的内存。 - -并且 JDK 1.8 的实现也在链表过长时会转换为红黑树。 - -# 五、参考资料 - -- Java 编程思想 -- [Java Collection Framework](https://www.w3resource.com/java-tutorial/java-collections.php) -- [Iterator 模式](https://openhome.cc/Gossip/DesignPattern/IteratorPattern.htm) -- [Java 8 系列之重新认识 HashMap](https://tech.meituan.com/java-hashmap.html) -- [What is difference between HashMap and Hashtable in Java?](http://javarevisited.blogspot.hk/2010/10/difference-between-hashmap-and.html) -- [Java 集合之 HashMap](http://www.zhangchangle.com/2018/02/07/Java%E9%9B%86%E5%90%88%E4%B9%8BHashMap/) -- [The principle of ConcurrentHashMap analysis](http://www.programering.com/a/MDO3QDNwATM.html) -- [探索 ConcurrentHashMap 高并发性的实现机制](https://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/) -- [HashMap 相关面试题及其解答](https://www.jianshu.com/p/75adf47958a7) - diff --git a/notes/Java 并发.md b/notes/Java 并发.md deleted file mode 100644 index 59813682..00000000 --- a/notes/Java 并发.md +++ /dev/null @@ -1,930 +0,0 @@ - -* [一、使用线程](#一使用线程) - * [实现 Runnable 接口](#实现-runnable-接口) - * [实现 Callable 接口](#实现-callable-接口) - * [继承 Thread 类](#继承-thread-类) - * [实现接口 VS 继承 Thread](#实现接口-vs-继承-thread) -* [二、基础线程机制](#二基础线程机制) - * [sleep()](#sleep) - * [yield()](#yield) - * [join()](#join) - * [deamon](#deamon) -* [三、结束线程](#三结束线程) - * [阻塞](#阻塞) - * [中断](#中断) -* [四、线程之间的协作](#四线程之间的协作) - * [同步与通信的概念理解](#同步与通信的概念理解) - * [线程同步](#线程同步) - * [线程通信](#线程通信) -* [五、线程状态转换](#五线程状态转换) -* [六、Executor](#六executor) -* [七、volatile](#七volatile) - * [保证内存可见性](#保证内存可见性) - * [禁止指令重排](#禁止指令重排) -* [八、内存模型](#八内存模型) - * [1. 硬件的效率与一致性](#1-硬件的效率与一致性) - * [2. Java 内存模型](#2-java-内存模型) - * [3. 主内存与工作内存](#3-主内存与工作内存) - * [4. 内存间交互操作](#4-内存间交互操作) - * [5. 内存模型三大特性](#5-内存模型三大特性) - * [6. 先行发生原则](#6-先行发生原则) -* [九、线程安全](#九线程安全) - * [1. Java 语言中的线程安全](#1-java-语言中的线程安全) - * [2. 线程安全的实现方法](#2-线程安全的实现方法) -* [十、锁优化](#十锁优化) - * [1. 自旋锁与自适应自旋](#1-自旋锁与自适应自旋) - * [2. 锁消除](#2-锁消除) - * [3. 锁粗化](#3-锁粗化) - * [4. 轻量级锁](#4-轻量级锁) - * [5. 偏向锁](#5-偏向锁) -* [十一、多线程开发良好的实践](#十一多线程开发良好的实践) -* [参考资料](#参考资料) - - - -# 一、使用线程 - -有三种使用线程的方法: - -1. 实现 Runnable 接口; -2. 实现 Callable 接口; -3. 继承 Thread 类。 - -实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以说任务是通过线程驱动从而执行的。 - -## 实现 Runnable 接口 - -需要实现 run() 方法。 - -通过 Thread 调用 start() 方法来启动线程。 - -```java -public class MyRunnable implements Runnable { - public void run() { - // ... - } - public static void main(String[] args) { - MyRunnable instance = new MyRunnable(); - Tread thread = new Thread(instance); - thread.start(); - } -} -``` - -## 实现 Callable 接口 - -与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。 - -```java -public class MyCallable implements Callable { - public Integer call() { - // ... - } - public static void main(String[] args) { - MyCallable mc = new MyCallable(); - FutureTask ft = new FutureTask<>(mc); - Thread thread = new Thread(ft); - thread.start(); - System.out.println(ft.get()); - } -} -``` - -## 继承 Thread 类 - -同样也是需要实现 run() 方法,并且最后也是调用 start() 方法来启动线程。 - -```java -public class MyThread extends Thread { - public void run() { - // ... - } - public static void main(String[] args) { - MyThread mt = new MyThread(); - mt.start(); - } -} -``` - -## 实现接口 VS 继承 Thread - -实现接口会更好一些,因为: - -1. Java 不支持多重继承,因此继承了 Thread 类就无法继承其它类,但是可以实现多个接口; -2. 类可能只要求可执行即可,继承整个 Thread 类开销会过大。 - - -# 二、基础线程机制 - -## sleep() - -Thread.sleep(millisec) 方法会休眠当前正在执行的线程,millisec 单位为毫秒。也可以使用 TimeUnit.TILLISECONDS.sleep(millisec)。 - -sleep() 可能会抛出 InterruptedException。因为异常不能跨线程传播回 main() 中,因此必须在本地进行处理。线程中抛出的其它异常也同样需要在本地进行处理。 - -```java -public void run() { - try { - // ... - Thread.sleep(1000); - // ... - } catch (InterruptedException e) { - System.err.println(e); - } -} -``` - -## yield() - -对静态方法 Thread.yield() 的调用声明了当前线程已经完成了生命周期中最重要的部分,可以切换给其它线程来执行。 - -```java -public void run() { - // ... - Thread.yield(); -} -``` - -## join() - -在线程中调用另一个线程的 join() 方法,会将当前线程挂起,直到目标线程结束。 - -可以加一个超时参数。 - -## deamon - -守护线程(deamon)是程序运行时在后台提供服务的线程,并不属于程序中不可或缺的部分。 - -当所有非后台线程结束时,程序也就终止,同时会杀死所有后台线程。 - -main() 属于非后台线程。 - -使用 setDaemon() 方法将一个线程设置为后台线程。 - -# 三、结束线程 - -## 阻塞 - -一个线程进入阻塞状态可能有以下原因: - -1. 调用 Thread.sleep() 方法进入休眠状态; -2. 通过 wait() 使线程挂起,直到线程得到 notify() 或 notifyAll() 消息(或者 java.util.concurrent 类库中等价的 signal() 或 signalAll() 消息; -3. 等待某个 I/O 的完成; -4. 试图在某个对象上调用其同步控制方法,但是对象锁不可用,因为另一个线程已经获得了这个锁。 - -## 中断 - -使用中断机制即可终止阻塞的线程。 - -使用 **interrupt()** 方法来中断某个线程,它会设置线程的中断状态。Object.wait(), Thread.join() 和 Thread.sleep() 三种方法在收到中断请求的时候会清除中断状态,并抛出 InterruptedException。 - -应当捕获这个 InterruptedException 异常,从而做一些清理资源的操作。 - -**1. 不可中断的阻塞** - -不能中断 I/O 阻塞和 synchronized 锁阻塞。 - -**2. Executor 的中断操作** - -Executor 避免对 Thread 对象的直接操作,但是使用 interrupt() 方法必须持有 Thread 对象。Executor 使用 shutdownNow() 方法来中断它里面的所有线程,shutdownNow() 方法会发送 interrupt() 调用给所有线程。 - -如果只想中断一个线程,那么使用 Executor 的 submit() 而不是 executor() 来启动线程,就可以持有线程的上下文。submit() 将返回一个泛型 Futrue,可以在它之上调用 cancel(),如果将 true 传递给 cancel(),那么它将会发送 interrupt() 调用给特定的线程。 - -**3. 检查中断** - -通过中断的方法来终止线程,需要线程进入阻塞状态才能终止。如果编写的 run() 方法循环条件为 true,但是该线程不发生阻塞,那么线程就永远无法终止。 - -interrupt() 方法会设置中断状态,可以通过 interrupted() 方法来检查中断状,从而判断一个线程是否已经被中断。 - -interrupted() 方法在检查完中断状态之后会清除中断状态,这样做是为了确保一次中断操作只会产生一次影响。 - -# 四、线程之间的协作 - -## 同步与通信的概念理解 - -在操作系统中,有三个概念用来描述进程间的协作关系: - -1. 互斥:多个进程在同一时刻只有一个进程能进入临界区; -2. 同步:多个进程按一定顺序执行; -3. 通信:多个进程间的信息传递。 - -通信是一种手段,它可以用来实现同步。也就是说,通过在多个进程间传递信息,可以控制多个进程以一定顺序执行。 - -而同步又可以保证互斥。即进程按一定顺序执行,可以保证在同一时刻只有一个进程能访问临界资源。但是同步不止用来实现互斥,例如生成者消费者问题,生产者和消费者进程之间的同步不是用来控制对临界资源的访问。 - -总结起来就是:通信 --> 同步 --> 互斥。 - -进程和线程在一定程度上类似,也可以用这些概念来描述。 - -在 Java 语言中,这些概念描述有些差别: - -1. 同步:可以和操作系统的互斥等同; -2. 通信:可以和操作系统的同步等同。 - -## 线程同步 - -给定一个进程内的所有线程,都共享同一存储空间,这样有好处又有坏处。这些线程就可以共享数据,非常有用。不过,在两个线程同时修改某一资源时,这也会造成一些问题。Java 提供了同步机制,以控制对共享资源的互斥访问。 - -### 1. synchronized - -**同步一个方法** - -使多个线程不能同时访问该方法。 - -```java -public synchronized void func(String name) { - // ... -} -``` - -**同步一个代码块** - -```java -public void func(String name) { - synchronized(this) { - // ... - } -} -``` - -### 2. Lock - -实现更细粒度的控制。 - -```java -private Lock lock; -public int func(int value) { - try { - lock.lock(); - // ... - } finally { - lock.unlock(); - } -} -``` - -## 线程通信 - -### 1. wait() notify() notifyAll() - -它们都属于 Object 的一部分,而不属于 Thread。 - -wait() 会在等待时将线程挂起,而不是忙等待,并且只有在 notify() 或者 notifyAll() 到达时才唤醒。 - -sleep() 和 yield() 并没有释放锁,但是 wait() 会释放锁。 - -实际上,只有在同步控制方法或同步控制块里才能调用 wait() 、notify() 和 notifyAll()。 - -```java -private boolean flag = false; - -public synchronized void after() { - while(flag == false) { - wait(); - // ... - } -} - -public synchronized void before() { - flag = true; - notifyAll(); -} -``` - -**wait() 和 sleep() 的区别** - -1. wait() 是 Object 类的方法,而 sleep() 是 Thread 的静态方法; -2. wait() 会放弃锁,而 sleep() 不会。 - -### 2. BlockingQueue - -java.util.concurrent.BlockingQueue 接口有以下阻塞队列的实现: - -- **FIFO 队列** :LinkedBlockingQueue、ArrayListBlockingQueue(固定长度) -- **优先级队列** :PriorityBlockingQueue - -提供了阻塞的 take() 和 put() 方法:如果队列为空 take() 将一直阻塞到队列中有内容,如果队列为满 put() 将阻塞到队列有空闲位置。它们响应中断,当收到中断请求的时候会抛出 InterruptedException,从而提前结束阻塞状态。 - -阻塞队列的 take() 和 put() 方法是线程安全的。 - -**使用 BlockingQueue 实现生产者消费者问题** - -```java -// 生产者 -import java.util.concurrent.BlockingQueue; - -public class Producer implements Runnable { - private BlockingQueue queue; - - public Producer(BlockingQueue queue) { - this.queue = queue; - } - - @Override - public void run() { - System.out.println(Thread.currentThread().getName() + " is making product..."); - String product = "made by " + Thread.currentThread().getName(); - try { - queue.put(product); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } -} -``` - -```java -// 消费者 -import java.util.concurrent.BlockingQueue; - -public class Consumer implements Runnable { - private BlockingQueue queue; - - public Consumer(BlockingQueue queue) { - this.queue = queue; - } - - @Override - public void run() { - try { - String product = queue.take(); - System.out.println(Thread.currentThread().getName() + " is consuming product " + product + "..."); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } -} -``` - -```java -// 客户端 -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; - -public class Client { - public static void main(String[] args) { - BlockingQueue queue = new LinkedBlockingQueue<>(5); - for (int i = 0; i < 2; i++) { - new Thread(new Consumer(queue), "Consumer" + i).start(); - } - for (int i = 0; i < 5; i++) { - // 只有两个 Product,因此只能消费两个,其它三个消费者被阻塞 - new Thread(new Producer(queue), "Producer" + i).start(); - } - for (int i = 2; i < 5; i++) { - new Thread(new Consumer(queue), "Consumer" + i).start(); - } - } -} -``` - -```html -// 运行结果 -Producer0 is making product... -Consumer0 is consuming product made by Consumer0... -Producer1 is making product... -Consumer1 is consuming product made by Consumer1... -Producer2 is making product... -Producer3 is making product... -Producer4 is making product... -Consumer2 is consuming product made by Consumer2... -Consumer3 is consuming product made by Consumer3... -Consumer4 is consuming product made by Consumer4... -``` - -# 五、线程状态转换 - -

    - -1. 新建(New):创建后尚未启动; -2. 可运行(Runnale):可能正在运行,也可能正在等待 CPU 时间片; -3. 无限期等待(Waiting):等待其它线程显示地唤醒,否则不会被分配 CPU 时间片; -4. 限期等待(Timed Waiting):无序等待其它线程显示地唤醒,在一定时间之后会被系统自动唤醒; -5. 阻塞(Blocking):等待获取一个排它锁,如果其线程释放了锁就会结束此状态; -6. 死亡(Terminated) - -# 六、Executor - -Executor 管理多个异步任务的执行,而无需程序员显示地管理线程的生命周期。 - -主要有三种 Executor: - -1. CachedTreadPool:一个任务创建一个线程; -2. FixedThreadPool:所有任务只能使用固定大小的线程; -3. SingleThreadExecutor:相当于大小为 1 的 FixedThreadPool。 - -```java -ExecutorService exec = Executors.newCachedThreadPool(); -for(int i = 0; i < 5; i++) { - exec.execute(new MyRunnable()); -} -``` - -# 七、volatile - -保证了内存可见性和禁止指令重排,没法保证原子性。 - -## 保证内存可见性 - -普通共享变量被修改之后,什么时候被写入主存是不确定的。 - -volatile 关键字会保证每次修改共享变量之后该值会立即更新到内存中,并且在读取时会从内存中读取值。 - -synchronized 和 Lock 也能够保证内存可见性。它们能保证同一时刻只有一个线程获取锁然后执行同步代码,并且在释放锁之前会将对变量的修改刷新到主存当中。不过只有对共享变量的 set() 和 get() 方法都加上 synchronized 才能保证可见性,如果只有 set() 方法加了 synchronized,那么 get() 方法并不能保证会从内存中读取最新的数据。 - -## 禁止指令重排 - -在 Java 内存模型中,允许编译器和处理器对指令进行重排序,重排序过程不会影响到单线程程序的执行,却会影响到多线程并发执行的正确性。 - -volatile 关键字通过添加内存屏障的方式来进制指令重排,即重排序时不能把后面的指令放到内存屏障之前。 - -可以通过 synchronized 和 Lock 来保证有序性,它们保证每个时刻只有一个线程执行同步代码,相当于是让线程顺序执行同步代码,自然就保证了有序性。 - -# 八、内存模型 - -## 1. 硬件的效率与一致性 - -对处理器上的寄存器进行读写的速度比内存快几个数量级,为了解决这种速度矛盾,在它们之间加入了高速缓存。 - -每个处理器都有一个高速缓存,但是所有处理器共用一个主内存,因此高速缓存引入了一个新问题:缓存一致性。当多个处理器的运算都涉及同一块主内存区域时,将可能导致各自的缓存数据不一致。缓存不一致问题通常需要使用一些协议来解决。 - -

    - -除了增加高速缓存之外,为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执行(Out-Of-Order Execution)优化,处理器会在计算之后将乱序执行的结果重组,保证该结果与顺序执行的结果是一致的,但并不保证程序中各个语句计算的先后顺序与输入代码中的顺序一致,因此,如果存在一个计算任务依赖另外一个计算任务的中间结果,那么其顺序性并不能靠代码的先后顺序来保证。与处理器的乱序执行优化类似,Java 虚拟机的即时编译器中也有类似的指令重排序(Instruction Reorder)优化。 - -## 2. Java 内存模型 - -Java 虚拟机规范中试图定义一种 Java 内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如 C/C++等)直接使用物理硬件和操作系统的内存模型,但由于不同平台上内存模型的差异,有可能导致程序在一套平台上并发完全正常,而在另外一套平台上并发访问却经常出错,因此在某些场景就必须针对不同的平台来编写程序。 - -## 3. 主内存与工作内存 - -Java 内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量(Variables)与 Java 编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有的,不会被共享,自然就不会存在竞争问题。 - -Java 内存模型规定了所有的变量都存储在主内存(Main Memory)中。每条线程还有自己的工作内存,线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成,线程、主内存、工作内存三者的交互关系如图所示。 - -

    - -## 4. 内存间交互操作 - -Java 内存模型定义了 8 种操作来完成工作内存与主内存之间的交互:一个变量从主内存拷贝到工作内存、从工作内存同步回主内存。虚拟机实现时必须保证下面提及的每一种操作都是原子的、不可再分的。 - -- lock(锁定):作用于主内存的变量,它把一个变量标识为一条线程独占的状态。 -- unlock(解锁):作用于主内存的变量,它把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。 -- read(读取):作用于主内存的变量,它把一个变量的值从主内存传输到线程的工作内存中,以便随后的 load 动作使用。 -- load(载入):作用于工作内存的变量,它把 read 操作从主内存中得到的变量值放入工作内存的变量副本中。 -- use(使用):作用于工作内存的变量,它把工作内存中一个变量的值传递给执行引擎,每当虚拟机遇到一个需要使用到变量的值的字节码指令时将会执行这个操作。 -- assign(赋值):作用于工作内存的变量,它把一个从执行引擎接收到的值赋给工作内存的变量,每当虚拟机遇到一个给变量赋值的字节码指令时执行这个操作。 -- store(存储):作用于工作内存的变量,它把工作内存中一个变量的值传送到主内存中,以便随后的 write 操作使用。 -- write(写入):作用于主内存的变量,它把 store 操作从工作内存中得到的变量的值放入主内存的变量中。 - -## 5. 内存模型三大特性 - -### 5.1 原子性 - -除了 long 和 double 之外的基本数据类型的访问读写是具备原子性的。 - -Java 内存模型允许虚拟机将没有被 volatile 修饰的 64 位数据的读写操作划分为两次 32 位的操作来进行,即虚拟机可以不保证 64 位数据类型的 load、store、read 和 write 这 4 个操作的原子性。但是目前各种平台下的商用虚拟机几乎都选择把 64 位数据的读写操作作为原子操作来对待。 - -AtomicInteger、AtomicLong、AtomicReference 等特殊的原子性变量类提供了下面形式的原子性条件更新语句,使得比较和更新这两个操作能够不可分割地执行。 - -```java -boolean compareAndSet(expectedValue, updateValue); -``` - -AtomicInteger 使用举例: - -```java -private AtomicInteger ai = new AtomicInteger(0); - -public int next() { - return ai.addAndGet(2) -} -``` - -如果应用场景需要一个更大范围的原子性保证,Java 内存模型还提供了 lock 和 unlock 操作来满足这种需求,尽管虚拟机未把 lock 和 unlock 操作直接开放给用户使用,但是却提供了更高层次的字节码指令 monitorenter 和 monitorexit 来隐式地使用这两个操作,这两个字节码指令反映到 Java 代码中就是同步块——synchronized 关键字,因此在 synchronized 块之间的操作也具备原子性。 - -### 5.2 可见性 - -可见性是指当一个线程修改了共享变量的值,其他线程能立即得知这个修改。 - -Java 内存模型是通过在变量修改后将新值同步回主内存,在变量读取前从主内存刷新变量值这种依赖主内存作为传递媒介的方式来实现可见性的,无论是普通变量还是 volatile 变量都是如此,普通变量与 volatile 变量的区别是,volatile 的特殊规则保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。因此,可以说 volatile 保证了多线程操作时变量的可见性,而普通变量则不能保证这一点。 - -除了 volatile 之外,Java 还有两个关键字能实现可见性,即 synchronized 和 final。同步块的可见性是由“对一个变量执行 unlock 操作之前,必须先把此变量同步回主内存中(执行 store、write 操作)”这条规则获得的,而 final 关键字的可见性是指:被 final 修饰的字段在构造器中一旦初始化完成,并且构造器没有把“this”的引用传递出去(this 引用逃逸是一件很危险的事情,其他线程有可能通过这个引用访问到“初始化了一半”的对象),那在其他线程中就能看见 final 字段的值。 - -### 5.3 有序性 - -本线程内观察,所有的操作都是有序的;如果在一个线程中观察另一个线程,所有的操作都是无序的。前半句是指线程内表现为串行的语义,后半句是指指令重排和工作内存和主内存存在同步延迟的现象。 - -Java 语言提供了 volatile 和 synchronized 两个关键字来保证线程之间操作的有序性,volatile 关键字本身就包含了禁止指令重排序的语义,而 synchronized 则是由“一个变量在同一个时刻只允许一条线程对其进行 lock 操作”这条规则获得的,这条规则决定了持有同一个锁的两个同步块只能串行地进入。 - -synchronized 关键字在需要这 3 种特性的时候都可以作为其中一种的解决方案,看起来很“万能”。的确,大部分的并发控制操作都能使用 synchronized 来完成。synchronized 的“万能”也间接造就了它被程序员滥用的局面,越“万能”的并发控制,通常会伴随着越大的性能影响。 - -## 6. 先行发生原则 - -如果 Java 内存模型中所有的有序性都只靠 volatile 和 synchronized 来完成,那么有一些操作将会变得很繁琐,但是我们在编写 Java 并发代码的时候并没有感觉到这一点,这是因为 Java 语言中有一个“先行发生”(Happen-Before) 的原则。这个原则非常重要,它是判断数据是否存在竞争,线程是否安全的主要依据。依靠这个原则,我们可以通过几条规则一次性地解决并发环境下两个操作之间是否可能存在冲突的所有问题。 - -先行发生是 Java 内存模型中定义的两项操作之间的偏序关系,如果说操作 A 先行发生于操作 B,其实就是说在发生操作 B 之前,操作 A 产生的影响能被操作 B 观察到,“影响”包括修改了内存中共享变量的值、发送了消息、调用了方法等。 - -```java -// 以下操作在线程 A 中执行 -k = 1; -// 以下操作在线程 B 中执行 -j = k; -// 以下操作在线程 C 中执行 -k = 2; -``` - -假设线程 A 中的操作“k=1”先行发生于线程 B 的操作“j=k”,那么可以确定在线程 B 的操作执行后,变量 j 的值一定等于 1,得出这个结论的依据有两个:一是根据先行发生原则,“k=1”的结果可以被观察到;二是线程 C 还没“登场”,线程 A 操作结束之后没有其他线程会修改变量 k 的值。现在再来考虑线程 C,我们依然保持线程 A 和线程 B 之间的先行发生关系,而线程 C 出现在线程 A 和线程 B 的操作之间,但是线程 C 与线程 B 没有先行发生关系,那 j 的值会是多少呢?答案是不确定!1 和 2 都有可能,因为线程 C 对变量 k 的影响可能会被线程 B 观察到,也可能不会,这时候线程 B 就存在读取到过期数据的风险,不具备多线程安全性。 - -下面是 Java 内存模型下一些“天然的”先行发生关系,这些先行发生关系无须任何同步器协助就已经存在,可以在编码中直接使用。如果两个操作之间的关系不在此列,并且无法从下列规则推导出来的话,它们就没有顺序性保障,虚拟机可以对它们随意地进行重排序。 - -- 程序次序规则(Program Order Rule):在一个线程内,按照程序代码顺序,书写在前面的操作先行发生于书写在后面的操作。准确地说,应该是控制流顺序而不是程序代码顺序,因为要考虑分支、循环等结构。 -- 管程锁定规则(Monitor Lock Rule):一个 unlock 操作先行发生于后面对同一个锁的 lock 操作。这里必须强调的是同一个锁,而“后面”是指时间上的先后顺序。 -- volatile 变量规则(Volatile Variable Rule):对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作,这里的“后面”同样是指时间上的先后顺序。 -- 线程启动规则(Thread Start Rule):Thread 对象的 start() 方法先行发生于此线程的每一个动作。 -- 线程终止规则(Thread Termination Rule):线程中的所有操作都先行发生于对此线程的终止检测,我们可以通过 Thread.join() 方法结束、Thread.isAlive() 的返回值等手段检测到线程已经终止执行。 -- 线程中断规则(Thread Interruption Rule):对线程 interrupt() 方法的调用先行发生于被中断线程的代码检测到中断事件的发生,可以通过 Thread.interrupted() 方法检测到是否有中断发生。 -- 对象终结规则(Finalizer Rule):一个对象的初始化完成(构造函数执行结束)先行发生于它的 finalize() 方法的开始。 -- 传递性(Transitivity):如果操作 A 先行发生于操作 B,操作 B 先行发生于操作 C,那就可以得出操作 A 先行发生于操作 C 的结论。 - -```java -private int value = 0; -pubilc void setValue(int value) { - this.value = value; -} -public int getValue() { - return value; -} -``` -上述代码显示的是一组再普通不过的 getter/setter 方法,假设存在线程 A 和 B,线程 A 先(时间上的先后)调用了“setValue(1)”,然后线程 B 调用了同一个对象的“getValue()”,那么线程 B 收到的返回值是什么? - -我们依次分析一下先行发生原则中的各项规则,由于两个方法分别由线程 A 和线程 B 调用,不在一个线程中,所以程序次序规则在这里不适用;由于没有同步块,自然就不会发生 lock 和 unlock 操作,所以管程锁定规则不适用;由于 value 变量没有被 volatile 关键字修饰,所以 volatile 变量规则不适用;后面的线程启动、终止、中断规则和对象终结规则也和这里完全没有关系。因为没有一个适用的先行发生规则,所以最后一条传递性也无从谈起,因此我们可以判定尽管线程 A 在操作时间上先于线程 B,但是无法确定线程 B 中“getValue()”方法的返回结果,换句话说,这里面的操作不是线程安全的。 - -那怎么修复这个问题呢?我们至少有两种比较简单的方案可以选择:要么把 getter/setter 方法都定义为 synchronized 方法,这样就可以套用管程锁定规则;要么把 value 定义为 volatile 变量,由于 setter 方法对 value 的修改不依赖 value 的原值,满足 volatile 关键字使用场景,这样就可以套用 volatile 变量规则来实现先行发生关系。 - -通过上面的例子,我们可以得出结论:一个操作“时间上的先发生”不代表这个操作会是“先行发生”,那如果一个操作“先行发生”是否就能推导出这个操作必定是“时间上的先发生”呢?很遗憾,这个推论也是不成立的,一个典型的例子就是多次提到的“指令重排序”。 - -```java -// 以下操作在同一个线程中执行 -int i = 1; -int j = 2; -``` - -代码清单的两条赋值语句在同一个线程之中,根据程序次序规则,“int i=1”的操作先行发生于“int j=2”,但是“int j=2”的代码完全可能先被处理器执行,这并不影响先行发生原则的正确性,因为我们在这条线程之中没有办法感知到这点。 - -上面两个例子综合起来证明了一个结论:时间先后顺序与先行发生原则之间基本没有太大的关系,所以我们衡量并发安全问题的时候不要受到时间顺序的干扰,一切必须以先行发生原则为准。 - -# 九、线程安全 - -《Java Concurrency In Practice》的作者 Brian Goetz 对“线程安全”有一个比较恰当的定义:“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的”。 - -这个定义比较严谨,它要求线程安全的代码都必须具备一个特征:代码本身封装了所有必要的正确性保障手段(如互斥同步等),令调用者无须关心多线程的问题,更无须自己采取任何措施来保证多线程的正确调用。这点听起来简单,但其实并不容易做到,在大多数场景中,我们都会将这个定义弱化一些,如果把“调用这个对象的行为”限定为“单次调用”,这个定义的其他描述也能够成立的话,我们就可以称它是线程安全了,为什么要弱化这个定义,现在暂且放下,稍后再详细探讨。 - -## 1. Java 语言中的线程安全 - -我们这里讨论的线程安全,就限定于多个线程之间存在共享数据访问这个前提,因为如果一段代码根本不会与其他线程共享数据,那么从线程安全的角度来看,程序是串行执行还是多线程执行对它来说是完全没有区别的。 - -为了更加深入地理解线程安全,在这里我们可以不把线程安全当做一个非真即假的二元排他选项来看待,按照线程安全的“安全程度”由强至弱来排序,我们可以将 Java 语言中各种操作共享的数据分为以下 5 类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。 - -### 1.1 不可变 - -在 Java 语言中(特指 JDK 1.5 以后,即 Java 内存模型被修正之后的 Java 语言),不可变(Immutable)的对象一定是线程安全的,无论是对象的方法实现还是方法的调用者,都不需要再采取任何的线程安全保障措施,只要一个不可变的对象被正确地构建出来(没有发生 this 引用逃逸的情况),那其外部的可见状态永远也不会改变,永远也不会看到它在多个线程之中处于不一致的状态。“不可变”带来的安全性是最简单和最纯粹的。 - -Java 语言中,如果共享数据是一个基本数据类型,那么只要在定义时使用 final 关键字修饰它就可以保证它是不可变的。如果共享数据是一个对象,那就需要保证对象的行为不会对其状态产生任何影响才行,不妨想一想 java.lang.String 类的对象,它是一个典型的不可变对象,我们调用它的 substring()、replace() 和 concat() 这些方法都不会影响它原来的值,只会返回一个新构造的字符串对象。 - -保证对象行为不影响自己状态的途径有很多种,其中最简单的就是把对象中带有状态的变量都声明为 final,这样在构造函数结束之后,它就是不可变的。 - -在 Java API 中符合不可变要求的类型,除了上面提到的 String 之外,常用的还有枚举类型,以及 java.lang.Number 的部分子类,如 Long 和 Double 等数值包装类型,BigInteger 和 BigDecimal 等大数据类型;但同为 Number 的子类型的原子类 AtomicInteger 和 AtomicLong 则并非不可变的。 - -### 1.2 绝对线程安全 - -绝对的线程安全完全满足 Brian Goetz 给出的线程安全的定义,这个定义其实是很严格的,一个类要达到“不管运行时环境如何,调用者都不需要任何额外的同步措施”通常需要付出很大的,甚至有时候是不切实际的代价。在 Java API 中标注自己是线程安全的类,大多数都不是绝对的线程安全。我们可以通过 Java API 中一个不是“绝对线程安全”的线程安全类来看看这里的“绝对”是什么意思。 - -如果说 java.util.Vector 是一个线程安全的容器,相信所有的 Java 程序员对此都不会有异议,因为它的 add()、get() 和 size() 这类方法都是被 synchronized 修饰的,尽管这样效率很低,但确实是安全的。但是,即使它所有的方法都被修饰成同步,也不意味着调用它的时候永远都不再需要同步手段了。 - -```java -private static Vector vector = new Vector(); - -public static void main(String[] args) { - while (true) { - for (int i = 0; i < 10; i++) { - vector.add(i); - } - - Thread removeThread = new Thread(new Runnable() { - @Override - public void run() { - for (int i = 0; i < vector.size(); i++) { - vector.remove(i); - } - } - }); - - Thread printThread = new Thread(new Runnable() { - @Override - public void run() { - for (int i = 0; i < vector.size(); i++) { - System.out.println((vector.get(i))); - } - } - }); - - removeThread.start(); - printThread.start(); - - // 不要同时产生过多的线程,否则会导致操作系统假死 - while (Thread.activeCount() > 20); - } -} -``` - -```html -Exception in thread"Thread-132"java.lang.ArrayIndexOutOfBoundsException: -Array index out of range:17 -at java.util.Vector.remove(Vector.java:777) -at org.fenixsoft.mulithread.VectorTest$1.run(VectorTest.java:21) -at java.lang.Thread.run(Thread.java:662) -``` - -很明显,尽管这里使用到的 Vector 的 get()、remove() 和 size() 方法都是同步的,但是在多线程的环境中,如果不在方法调用端做额外的同步措施的话,使用这段代码仍然是不安全的,因为如果另一个线程恰好在错误的时间里删除了一个元素,导致序号 i 已经不再可用的话,再用 i 访问数组就会抛出一个 ArrayIndexOutOfBoundsException。如果要保证这段代码能正确执行下去,我们不得不把 removeThread 和 printThread 的定义改成如下所示的样子: - -```java - Thread removeThread = new Thread(new Runnable() { - @Override - public void run() { - synchronized (vector) { - for (int i = 0; i < vector.size(); i++) { - vector.remove(i); - } - } - } -}); - -Thread printThread = new Thread(new Runnable() { - @Override - public void run() { - synchronized (vector) { - for (int i = 0; i < vector.size(); i++) { - System.out.println((vector.get(i))); - } - } - } -}); -``` - -### 1.3 相对线程安全 - -相对的线程安全就是我们通常意义上所讲的线程安全,它需要保证对这个对象单独的操作是线程安全的,我们在调用的时候不需要做额外的保障措施,但是对于一些特定顺序的连续调用,就可能需要在调用端使用额外的同步手段来保证调用的正确性。 - -在 Java 语言中,大部分的线程安全类都属于这种类型,例如 Vector、HashTable、Collections 的 synchronizedCollection() 方法包装的集合等。 - -### 1.4 线程兼容 - -线程兼容是指对象本身并不是线程安全的,但是可以通过在调用端正确地使用同步手段来保证对象在并发环境中可以安全地使用,我们平常说一个类不是线程安全的,绝大多数时候指的是这一种情况。Java API 中大部分的类都是属于线程兼容的,如与前面的 Vector 和 HashTable 相对应的集合类 ArrayList 和 HashMap 等。 - -### 1.5 线程对立 - -线程对立是指无论调用端是否采取了同步措施,都无法在多线程环境中并发使用的代码。由于 Java 语言天生就具备多线程特性,线程对立这种排斥多线程的代码是很少出现的,而且通常都是有害的,应当尽量避免。 - -一个线程对立的例子是 Thread 类的 suspend() 和 resume() 方法,如果有两个线程同时持有一个线程对象,一个尝试去中断线程,另一个尝试去恢复线程,如果并发进行的话,无论调用时是否进行了同步,目标线程都是存在死锁风险的,如果 suspend() 中断的线程就是即将要执行 resume() 的那个线程,那就肯定要产生死锁了。也正是由于这个原因,suspend() 和 resume() 方法已经被 JDK 声明废弃(@Deprecated)了。常见的线程对立的操作还有 System.setIn()、Sytem.setOut() 和 System.runFinalizersOnExit() 等。 - -## 2. 线程安全的实现方法 - -如何实现线程安全与代码编写有很大的关系,但虚拟机提供的同步和锁机制也起到了非常重要的作用。本节中,代码编写如何实现线程安全和虚拟机如何实现同步与锁这两者都会有所涉及,相对而言更偏重后者一些,只要读者了解了虚拟机线程安全手段的运作过程,自己去思考代码如何编写并不是一件困难的事情。 - -### 2.1 互斥同步 - -互斥同步(Mutual Exclusion&Synchronization)是常见的一种并发正确性保障手段。同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一个(或者是一些,使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critical Section)、互斥量(Mutex)和信号量(Semaphore)都是主要的互斥实现方式。因此,在这 4 个字里面,互斥是因,同步是果;互斥是方法,同步是目的。 - -在 Java 中,最基本的互斥同步手段就是 synchronized 关键字,synchronized 关键字经过编译之后,会在同步块的前后分别形成 monitorenter 和 monitorexit 这两个字节码指令,这两个字节码都需要一个 reference 类型的参数来指明要锁定和解锁的对象。如果 Java 程序中的 synchronized 明确指定了对象参数,那就是这个对象的 reference;如果没有明确指定,那就根据 synchronized 修饰的是实例方法还是类方法,去取对应的对象实例或 Class 对象来作为锁对象。 - -根据虚拟机规范的要求,在执行 monitorenter 指令时,首先要尝试获取对象的锁。如果这个对象没被锁定,或者当前线程已经拥有了那个对象的锁,把锁的计数器加 1,相应的,在执行 monitorexit 指令时会将锁计数器减 1,当计数器为 0 时,锁就被释放。如果获取对象锁失败,那当前线程就要阻塞等待,直到对象锁被另外一个线程释放为止。 - -在虚拟机规范对 monitorenter 和 monitorexit 的行为描述中,有两点是需要特别注意的。首先,synchronized 同步块对同一条线程来说是可重入的,不会出现自己把自己锁死的问题。其次,同步块在已进入的线程执行完之前,会阻塞后面其他线程的进入。Java 的线程是映射到操作系统的原生线程之上的,如果要阻塞或唤醒一个线程,都需要操作系统来帮忙完成,这就需要从用户态转换到核心态中,因此状态转换需要耗费很多的处理器时间。对于代码简单的同步块(如被 synchronized 修饰的 getter() 或 setter() 方法),状态转换消耗的时间有可能比用户代码执行的时间还要长。所以 synchronized 是 Java 语言中一个重量级(Heavyweight)的操作,有经验的程序员都会在确实必要的情况下才使用这种操作。而虚拟机本身也会进行一些优化,譬如在通知操作系统阻塞线程之前加入一段自旋等待过程,避免频繁地切入到核心态之中。 - -除了 synchronized 之外,我们还可以使用 java.util.concurrent(下文称 J.U.C)包中的重入锁(ReentrantLock)来实现同步,在基本用法上,ReentrantLock 与 synchronized 很相似,他们都具备一样的线程重入特性,只是代码写法上有点区别,一个表现为 API 层面的互斥锁(lock() 和 unlock() 方法配合 try/finally 语句块来完成),另一个表现为原生语法层面的互斥锁。不过,相比 synchronized,ReentrantLock 增加了一些高级功能,主要有以下 3 项:等待可中断、可实现公平锁,以及锁可以绑定多个条件。 - -- 等待可中断是指当持有锁的线程长期不释放锁的时候,正在等待的线程可以选择放弃等待,改为处理其他事情,可中断特性对处理执行时间非常长的同步块很有帮助。 - -- 公平锁是指多个线程在等待同一个锁时,必须按照申请锁的时间顺序来依次获得锁;而非公平锁则不保证这一点,在锁被释放时,任何一个等待锁的线程都有机会获得锁。synchronized 中的锁是非公平的,ReentrantLock 默认情况下也是非公平的,但可以通过带布尔值的构造函数要求使用公平锁。 - -- 锁绑定多个条件是指一个 ReentrantLock 对象可以同时绑定多个 Condition 对象,而在 synchronized 中,锁对象的 wait() 和 notify() 或 notifyAll() 方法可以实现一个隐含的条件,如果要和多于一个的条件关联的时候,就不得不额外地添加一个锁,而 ReentrantLock 则无须这样做,只需要多次调用 newCondition() 方法即可。 - -如果需要使用上述功能,选用 ReentrantLock 是一个很好的选择,那如果是基于性能考虑呢?关于 synchronized 和 ReentrantLock 的性能问题,Brian Goetz 对这两种锁在 JDK 1.5 与单核处理器,以及 JDK 1.5 与双 Xeon 处理器环境下做了一组吞吐量对比的实验,实验结果如图 13-1 和图 13-2 所示。 - -

    -
    JDK 1.5、单核处理器下两种锁的吞吐量对比

    - -

    -
    JDK 1.5、双 Xeon 处理器下两种锁的吞吐量对比

    - -多线程环境下 synchronized 的吞吐量下降得非常严重,而 ReentrantLock 则能基本保持在同一个比较稳定的水平上。与其说 ReentrantLock 性能好,还不如说 synchronized 还有非常大的优化余地。后续的技术发展也证明了这一点,JDK 1.6 中加入了很多针对锁的优化措施,JDK 1.6 发布之后,人们就发现 synchronized 与 ReentrantLock 的性能基本上是完全持平了。因此,如果读者的程序是使用 JDK 1.6 或以上部署的话,性能因素就不再是选择 ReentrantLock 的理由了,虚拟机在未来的性能改进中肯定也会更加偏向于原生的 synchronized,所以还是提倡在 synchronized 能实现需求的情况下,优先考虑使用 synchronized 来进行同步。 - -### 2.2 非阻塞同步 - -互斥同步最主要的问题就是进行线程阻塞和唤醒所带来的性能问题,因此这种同步也称为阻塞同步(Blocking Synchronization)。从处理问题的方式上说,互斥同步属于一种悲观的并发策略,总是认为只要不去做正确的同步措施(例如加锁),那就肯定会出现问题,无论共享数据是否真的会出现竞争,它都要进行加锁(这里讨论的是概念模型,实际上虚拟机会优化掉很大一部分不必要的加锁)、用户态核心态转换、维护锁计数器和检查是否有被阻塞的线程需要唤醒等操作。随着硬件指令集的发展,我们有了另外一个选择:基于冲突检测的乐观并发策略,通俗地说,就是先进行操作,如果没有其他线程争用共享数据,那操作就成功了;如果共享数据有争用,产生了冲突,那就再采取其他的补偿措施(最常见的补偿措施就是不断地重试,直到成功为止),这种乐观的并发策略的许多实现都不需要把线程挂起,因此这种同步操作称为非阻塞同步(Non-Blocking Synchronization)。 - -为什么笔者说使用乐观并发策略需要“硬件指令集的发展”才能进行呢?因为我们需要操作和冲突检测这两个步骤具备原子性,靠什么来保证呢?如果这里再使用互斥同步来保证就失去意义了,所以我们只能靠硬件来完成这件事情,硬件保证一个从语义上看起来需要多次操作的行为只通过一条处理器指令就能完成,这类指令常用的有: - -- 测试并设置(Test-and-Set) -- 获取并增加(Fetch-and-Increment) -- 交换(Swap) -- 比较并交换(Compare-and-Swap,下文称 CAS) -- 加载链接/条件存储(Load-Linked/Store-Conditional,下文称 LL/SC) - -其中,前面的 3 条是 20 世纪就已经存在于大多数指令集之中的处理器指令,后面的两条是现代处理器新增的,而且这两条指令的目的和功能是类似的。在 IA64、x86 指令集中有 cmpxchg 指令完成 CAS 功能,在 sparc-TSO 也有 casa 指令实现,而在 ARM 和 PowerPC 架构下,则需要使用一对 ldrex/strex 指令来完成 LL/SC 的功能。 - -**CAS** 指令需要有 3 个操作数,分别是内存位置(在 Java 中可以简单理解为变量的内存地址,用 V 表示)、旧的预期值(用 A 表示)和新值(用 B 表示)。CAS 指令执行时,当且仅当 V 符合旧预期值 A 时,处理器用新值 B 更新 V 的值,否则它就不执行更新,但是无论是否更新了 V 的值,都会返回 V 的旧值,上述的处理过程是一个原子操作。 - -在 JDK 1.5 之后,Java 程序中才可以使用 CAS 操作,该操作由 sun.misc.Unsafe 类里面的 compareAndSwapInt() 和 compareAndSwapLong() 等几个方法包装提供,虚拟机在内部对这些方法做了特殊处理,即时编译出来的结果就是一条平台相关的处理器 CAS 指令,没有方法调用的过程,或者可以认为是无条件内联进去了。 - -由于 Unsafe 类不是提供给用户程序调用的类(Unsafe.getUnsafe() 的代码中限制了只有启动类加载器(Bootstrap ClassLoader)加载的 Class 才能访问它),因此,如果不采用反射手段,我们只能通过其他的 Java API 来间接使用它,如 J.U.C 包里面的整数原子类,其中的 compareAndSet() 和 getAndIncrement() 等方法都使用了 Unsafe 类的 CAS 操作。 - -这段 20 个线程自增 10000 次的代码使用了 AtomicInteger 之后程序输出了正确结果,一切都要归功于 incrementAndGet() 方法的原子性。 - -代码清单 4:Atomic 的原子自增运算 - -```java -/** - * Atomic 变量自增运算测试 - * - * @author zzm -*/ -public class AtomicTest { - - public static AtomicInteger race = new AtomicInteger(0); - - public static void increase() { - race.incrementAndGet(); - } - - private static final int THREADS_COUNT = 20; - - public static void main(String[] args) throws Exception { - Thread[] threads = new Thread[THREADS_COUNT]; - for (int i = 0; i < THREADS_COUNT; i++) { - threads[i] = new Thread(new Runnable() { - @Override - public void run() { - for (int i = 0; i < 10000; i++) { - increase(); - } - } - }); - threads[i].start(); - } - - while (Thread.activeCount() > 1) - Thread.yield(); - - System.out.println(race); - } -} -``` - -``` -200000 -``` - -incrementAndGet() 的实现其实非常简单。 - -代码清单 5:incrementAndGet() 方法的 JDK 源码 - -```java -/** - * Atomically increment by one the current value. - * @return the updated value - */ -public final int incrementAndGet() { - for (;;) { - int current = get(); - int next = current + 1; - if (compareAndSet(current, next)) - return next; - } -} -``` - -incrementAndGet() 方法在一个无限循环中,不断尝试将一个比当前值大 1 的新值赋给自己。如果失败了,那说明在执行“获取-设置”操作的时候值已经有了修改,于是再次循环进行下一次操作,直到设置成功为止。 - -尽管 CAS 看起来很美,但显然这种操作无法涵盖互斥同步的所有使用场景,并且 CAS 从语义上来说并不是完美的,存在这样的一个逻辑漏洞:如果一个变量 V 初次读取的时候是 A 值,并且在准备赋值的时候检查到它仍然为 A 值,那我们就能说它的值没有被其他线程改变过了吗?如果在这段期间它的值曾经被改成了 B,后来又被改回为 A,那 CAS 操作就会误认为它从来没有被改变过。这个漏洞称为 CAS 操作的“ABA”问题。J.U.C 包为了解决这个问题,提供了一个带有标记的原子引用类“AtomicStampedReference”,它可以通过控制变量值的版本来保证 CAS 的正确性。不过目前来说这个类比较“鸡肋”,大部分情况下 ABA 问题不会影响程序并发的正确性,如果需要解决 ABA 问题,改用传统的互斥同步可能会比原子类更高效。 - -### 2.3 无同步方案 - -要保证线程安全,并不是一定就要进行同步,两者没有因果关系。同步只是保证共享数据争用时的正确性的手段,如果一个方法本来就不涉及共享数据,那它自然就无须任何同步措施去保证正确性,因此会有一些代码天生就是线程安全的,笔者简单地介绍其中的两类。 - -**可重入代码** (Reentrant Code):这种代码也叫做纯代码(Pure Code),可以在代码执行的任何时刻中断它,转而去执行另外一段代码(包括递归调用它本身),而在控制权返回后,原来的程序不会出现任何错误。相对线程安全来说,可重入性是更基本的特性,它可以保证线程安全,即所有的可重入的代码都是线程安全的,但是并非所有的线程安全的代码都是可重入的。 - -可重入代码有一些共同的特征,例如不依赖存储在堆上的数据和公用的系统资源、用到的状态量都由参数中传入、不调用非可重入的方法等。我们可以通过一个简单的原则来判断代码是否具备可重入性:如果一个方法,它的返回结果是可以预测的,只要输入了相同的数据,就都能返回相同的结果,那它就满足可重入性的要求,当然也就是线程安全的。 - -**线程本地存储** (Thread Local Storage):如果一段代码中所需要的数据必须与其他代码共享,那就看看这些共享数据的代码是否能保证在同一个线程中执行?如果能保证,我们就可以把共享数据的可见范围限制在同一个线程之内,这样,无须同步也能保证线程之间不出现数据争用的问题。 - -符合这种特点的应用并不少见,大部分使用消费队列的架构模式(如“生产者-消费者”模式)都会将产品的消费过程尽量在一个线程中消费完,其中最重要的一个应用实例就是经典 Web 交互模型中的“一个请求对应一个服务器线程”(Thread-per-Request)的处理方式,这种处理方式的广泛应用使得很多 Web 服务端应用都可以使用线程本地存储来解决线程安全问题。 - -Java 语言中,如果一个变量要被多线程访问,可以使用 volatile 关键字声明它为“易变的”;如果一个变量要被某个线程独享,Java 中就没有类似 C++中 \_\_declspec(thread)这样的关键字,不过还是可以通过 java.lang.ThreadLocal 类来实现线程本地存储的功能。每一个线程的 Thread 对象中都有一个 ThreadLocalMap 对象,这个对象存储了一组以 ThreadLocal.threadLocalHashCode 为键,以本地线程变量为值的 K-V 值对,ThreadLocal 对象就是当前线程的 ThreadLocalMap 的访问入口,每一个 ThreadLocal 对象都包含了一个独一无二的 threadLocalHashCode 值,使用这个值就可以在线程 K-V 值对中找回对应的本地线程变量。 - -# 十、锁优化 - -高效并发是从 JDK 1.5 到 JDK 1.6 的一个重要改进,HotSpot 虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)等。这些技术都是为了在线程之间更高效地共享数据,以及解决竞争问题,从而提高程序的执行效率。 - -## 1. 自旋锁与自适应自旋 - -前面我们讨论互斥同步的时候,提到了互斥同步对性能最大的营销阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态完成,这些操作给系统的并发性能带来了很大的压力。同时,虚拟机的开发团队也注意到在许多应用上,共享数据的锁定状态只会持续很短的一段时间,为了这段时间去挂起和恢复线程并不值得。如果物理机器有一个以上的处理器,能让两个或以上的线程同时并行执行,我们就可以让后面请求锁的那个线程 “稍等一下”,但不放弃处理器的执行时间,看看持有锁的线程是否很快就会释放锁。为了让线程等待,我们只需让线程执行一个忙循环(自旋),这项技术就是所谓的自旋锁。 - -自旋锁在 JDK 1.4.2 中就已经引入,只不过默认是关闭的,可以使用 -XX:+UseSpinning 参数来开启,在 JDK 1.6 就已经改为默认开启了。自旋等待不能代替阻塞,且先不说对处理器数量的要求,自旋等待本身虽然避免了线程切换的开销,但它是要占用处理器时间的,因此,如果锁被占用的时间很短,自旋等待的效果就会非常好,反之,如果锁被占用的时候很长,那么自旋的线程只会白白消耗处理器资源,而不会做任何有用的工作,反而会带来性能上的浪费。因此,自旋等待的时间必须要有一定的限度,如果自旋超过了限定的次数仍然没有成功获得锁,就应当使用传统的方式去挂起线程了。自旋次数的默认值是 10 次,用户可以使用参数 -XX:PreBlockSpin 来更改。 - -在 JDK 1.6 中引入了自适应的自旋锁。自适应意味着自旋的时间不再固定了,而是由前一次在同一个锁上的自旋时间及锁的拥有者的状态来决定。如果在同一个锁对象上,自旋等待刚刚成功获得过锁,并且持有锁的线程正在运行中,那么虚拟机就会认为这次自旋也很有可能再次成功,进而它将允许自旋等待持续相对更长的时间,比如 100 个循环。另外,如果对于某个锁,自旋很少成功获得过,那在以后要获取这个锁时将可能省略掉自旋过程,以避免浪费处理器资源。有了自适应自旋,随着程序运行和性能监控信息的不断完善,虚拟机对程序锁的状况预测就会越来越准确,虚拟机就会变得越来越 “聪明” 了。 - -## 2. 锁消除 - -锁消除是指虚拟机即时编译器在运行时,对一些代码上要求同步,但是被检测到不可能存在共享数据竞争的锁进行消除。锁消除的主要判定依据来源于逃逸分析的数据支持,如果判定在一段代码中,堆上的所有数据都不会逃逸出去从而被其他线程访问到,那就可以把他们当做栈上数据对待,认为它们是线程私有的,同步加锁自然就无须进行。 - -也许读者会有疑问,变量是否逃逸,对于虚拟机来说需要使用数据流分析来确定,但是程序自己应该是很清楚的,怎么会在明知道不存在数据争用的情况下要求同步呢?答案是有许多同步措施并不是程序员自己加入的。同步的代码在 Java 程序中的普遍程度也许超过了大部分读者的想象。下面段非常简单的代码仅仅是输出 3 个字符串相加的结果,无论是源码字面上还是程序语义上都没有同步。 - -代码清单 6:一段看起来没有同步的代码 - -```java -public static String concatString(String s1, String s2, String s3) { - return s1 + s2 + s3; -} -``` - -我们也知道,由于 String 是一个不可变的类,对字符串的连接操作总是通过生成新的 String 对象来进行的,因此 Javac 编译器会对 String 连接做自动优化。在 JDK 1.5 之前,会转化为 StringBuffer 对象的连续 append() 操作,在 JDK 1.5 及以后的版本中,会转化为 StringBuilder 对象的连续 append() 操作,即上面的代码可能会变成下面的样子: - -代码清单 7:Javac 转化后的字符串连接操作 - -```java -public static String concatString(String s1, String s2, String s3) { - StringBuffer sb = new StringBuffer(); - sb.append(s1); - sb.append(s2); - sb.append(s3); - return sb.toString(); -} -``` -每个 StringBuffer.append() 方法中都有一个同步块,锁就是 sb 对象。虚拟机观察变量 sb,很快就会发现它的动态作用域被限制在 concatString() 方法内部。也就是说,sb 的所有引用永远不会 “逃逸” 到 concatString() 方法之外,其他线程无法访问到它,因此,虽然这里有锁,但是可以被安全地消除掉,在即时编译之后,这段代码就会忽略掉所有的同步而直接执行了。 - -## 3. 锁粗化 - -原则上,我们在编写代码的时候,总是推荐将同步块的作用范围限制得尽量小——只在共享数据的实际作用域中才进行同步,这样是为了使得需要同步的操作数量尽可能变小,如果存在锁竞争,那等待锁的线程也能尽快拿到锁。 - -大部分情况下,上面的原则都是正确的,但是如果一系列的连续操作都对同一个对象反复加锁和解锁,甚至加锁操作是出现在循环体中,那即使没有线程竞争,频繁地进行互斥同步操作也会导致不必要的性能损耗。 - -代码清单 7 中连续的 append() 方法就属于这类情况。如果虚拟机探测到由这样的一串零碎的操作都对同一个对象加锁,将会把加锁同步的范围扩展(粗化)到整个操作序列的外部,以代码清单 7 为例,就是扩展到第一个 append() 操作之前直至最后一个 append() 操作之后,这样只需要加锁一次就可以了。 - -## 4. 轻量级锁 - -轻量级锁是 JDK 1.6 之中加入的新型锁机制,它名字中的 “轻量级” 是相对于使用操作系统互斥量来实现的传统锁而言的,因此传统的锁机制就称为 “重量级” 锁。首先需要强调一点的是,轻量级锁并不是用来代替重要级锁的,它的本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。 - -要理解轻量级锁,以及后面会讲到的偏向锁的原理和运作过程,必须从 HotSpot 虚拟机的对象(对象头部分)的内存布局开始介绍。HotSpot 虚拟机的对象头(Object Header)分为两部分信息,第一部分用于存储对象自身的运行时数据,如哈希码(HashCode)、GC 分代年龄(Generational GC Age)等,这部分数据是长度在 32 位和 64 位的虚拟机中分别为 32 bit 和 64 bit,官方称它为 “Mark Word”,它是实现轻量级锁和偏向锁的关键。另外一部分用于存储指向方法区对象类型数据的指针,如果是数组对象的话,还会有一个额外的部分用于存储数组长度。 - -对象头信息是与对象自身定义的数据无关的额外存储成本,考虑到虚拟机的空间效率,Mark Work 被设计成一个非固定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用自己的存储空间。例如,在 32 位的 HotSpot 虚拟机中对象未被锁定的状态下,Mark Word 的 32bit 空间中的 25bit 用于存储对象哈希码(HashCode),4bit 用于存储对象分代年龄,2bit 用于存储锁标志位,1bit 固定为 0,在其他状态(轻量级锁定、重量级锁定、GC 标记、可偏向)下对象的存储内容见表 13-1。 - -

    - -简单地介绍了对象的内存布局后,我们把话题返回到轻量级锁的执行过程上。在代码进入同步块的时候,如果此同步对象没有被锁定(锁标志位为 “01” 状态)虚拟机首先将在当前线程的栈帧中建立一个名为锁记录(Lock Record)的空间,用于存储锁对象目前的 Mark Word 的拷贝(官方把这份拷贝加上了一个 Displaced 前缀,即 Displaced Mark Word),这时候线程堆栈与对象头的状态如图 13-3 所示。 - -

    - -然后,虚拟机将使用 CAS 操作尝试将对象的 Mark Word 更新为指向 Lock Record 的指针。如果这个更新动作成功了,那么这个线程就拥有了该对象的锁,并且对象 Mark Word 的锁标志位 (Mark Word 的最后 2bit)将转变为 “00”,即表示此对象处于轻量级锁定状态,这时候线程堆栈与对象头的状态如图 12-4 所示。 - -

    - -如果这个更新操作失败了,虚拟机首先会检查对象的 Mark Word 是否指向当前线程的栈帧,如果只说明当前线程已经拥有了这个对象的锁,那就可以直接进入同步块继续执行,否则说明这个锁对象以及被其他线程线程抢占了。如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁,所标志的状态变为 “10”,Mark Word 中存储的就是指向重量级锁(互斥量)的指针,后面等待锁的线程也要进入阻塞状态。 - -上面描述的是轻量级锁的加锁过程,它的解锁过程也是通过 CAS 操作来进行的,如果对象的 Mark Word 仍然指向着线程的锁记录,那就用 CAS 操作把对象当前的 Mark Word 和线程中复制的 Displaced Mark Word 替换回来,如果替换成功,整个同步过程就完成了。如果替换失败,说明有其他线程尝试过获取该锁,那就要释放锁的同时,唤醒被挂起的线程。 - -轻量级锁能提升程序同步性能的依据是 “对于绝大部分的锁,在整个同步周期内都是不存在竞争的”,这是一个经验数据。如果没有竞争,轻量级锁使用 CAS 操作避免了使用互斥量的开销,但如果存在锁竞争,除了互斥量的开销外,还额外发生了 CAS 操作,因此在有竞争的情况下,轻量级锁会比传统的重量级锁更慢。 - -## 5. 偏向锁 - -偏向锁也是 JDK 1.6 中引入的一项锁优化,它的目的是消除数据在无竞争情况下的同步原语,进一步提高程序的运行性能。如果说轻量级锁是在无竞争的情况下使用 CAS 操作去消除同步使用的互斥量,那偏向锁就是在无竞争的情况下把整个同步都消除掉,连 CAS 操作都不做了。 - -偏向锁的 “偏”,就是偏心的 “偏”、偏袒的 “偏”,它的意思是这个锁会偏向于第一个获得它的线程,如果在接下来的执行过程中,该锁没有被其他的线程获取,则持有偏向锁的线程将永远不需要再进行同步。 - -如果读者读懂了前面轻量级锁中关于对象头 Mark Word 与线程之间的操作过程,那偏向锁的原理理解起来就会很简单。假设当前虚拟机启用了偏向锁(启用参数 -XX:+UseBiasedLocking,这是 JDK 1.6 的默认值),那么,当锁对象第一次被线程获取的时候,虚拟机将会把对象头中的标志位设为 “01”,即偏向模式。同时使用 CAS 操作把获取到这个锁的线程 ID 记录在对象的 Mark Word 之中,如果 CAS 操作成功,持有偏向锁的线程以后每次进入这个锁相关的同步块时,虚拟机都可以不再进行如何同步操作(例如 Locking、Unlocking 及对 Mark Word 的 Update 等)。 - -当有另外一个线程去尝试获取这个锁时,偏向模式就宣告结束。根据锁对象目前是否处于被锁定的状态,撤销偏向(Revoke Bias)后恢复到未锁定(标志位为 “01”)或轻量级锁定(标志位为 “00”)的状态,后续的同步操作就如上面介绍的轻量级锁那样执行。偏向锁、轻量级锁的状态转换及对象 Mark Word 的关系如图 13-5 所示。 - -

    - -偏向锁可以提高带有同步但无竞争的程序性能。它同样是一个带有效益权衡(Trade Off)性质的优化,也就是说,它并不一定总是对程序运行有利,如果程序中大多数的锁总是被多个不同的线程访问,那偏向模式就是多余的。在具体问题具体分析的前提下,有时候使用参数 -XX:-UseBiasedLocking 来禁止偏向锁优化反而可以提升性能。 - -# 十一、多线程开发良好的实践 - -- 给线程命名。 -- 最小化同步范围。 -- 优先使用 volatile。 -- 尽可能使用更高层次的并发工具而非 wait 和 notify() 来实现线程通信,如 BlockingQueue, Semeaphore。 -- 多用并发容器,少用同步容器,并发容器比同步容器的可扩展性更好。 -- 考虑使用线程池。 -- 最低限度的使用同步和锁,缩小临界区。因此相对于同步方法,同步块会更好。 - -# 参考资料 - -- Java 编程思想 -- 深入理解 Java 虚拟机 -- [线程通信](http://ifeve.com/thread-signaling/#missed_signal) -- [Java 线程面试题 Top 50](http://www.importnew.com/12773.html) -- [BlockingQueue](http://tutorials.jenkov.com/java-util-concurrent/blockingqueue.html) -- [thread state java](https://stackoverflow.com/questions/11265289/thread-state-java) diff --git a/notes/Java 虚拟机.md b/notes/Java 虚拟机.md deleted file mode 100644 index 52ab99b6..00000000 --- a/notes/Java 虚拟机.md +++ /dev/null @@ -1,686 +0,0 @@ - -* [一、运行时数据区域](#一运行时数据区域) - * [程序计数器](#程序计数器) - * [Java 虚拟机栈](#java-虚拟机栈) - * [本地方法栈](#本地方法栈) - * [Java 堆](#java-堆) - * [方法区](#方法区) - * [运行时常量池](#运行时常量池) - * [直接内存](#直接内存) -* [二、垃圾收集](#二垃圾收集) - * [判断一个对象是否可回收](#判断一个对象是否可回收) - * [垃圾收集算法](#垃圾收集算法) - * [垃圾收集器](#垃圾收集器) - * [内存分配与回收策略](#内存分配与回收策略) - * [Full GC 的触发条件](#full-gc-的触发条件) -* [三、类加载机制](#三类加载机制) - * [类的生命周期](#类的生命周期) - * [类初始化时机](#类初始化时机) - * [类加载过程](#类加载过程) - * [类加载器](#类加载器) -* [四、JVM 参数](#四jvm-参数) - * [GC 优化配置](#gc-优化配置) - * [GC 类型设置](#gc-类型设置) -* [参考资料](#参考资料) - - - -# 一、运行时数据区域 - -

    - -注:白色区域为线程私有,蓝色区域为线程共享。 - -## 程序计数器 - -记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。 - -## Java 虚拟机栈 - -每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 - -可以通过 -Xss 这个虚拟机参数来指定一个程序的 Java 虚拟机栈内存大小: - -```java -java -Xss=512M HackTheJava -``` - -该区域可能抛出以下异常: - -1. 当线程请求的栈深度超过最大值,会抛出 StackOverflowError 异常; -2. 栈进行动态扩展时如果无法申请到足够内存,会抛出 OutOfMemoryError 异常。 - -## 本地方法栈 - -本地方法不是用 Java 实现,对待这些方法需要特别处理。 - -与 Java 虚拟机栈类似,它们之间的区别只不过是本地方法栈为本地方法服务。 - -## Java 堆 - -所有对象实例都在这里分配内存。 - -是垃圾收集的主要区域("GC 堆 "),现代的垃圾收集器基本都是采用分代收集算法,该算法的思想是针对不同的对象采取不同的垃圾回收算法,因此虚拟机把 Java 堆分成以下三块: - -- 新生代(Young Generation) -- 老年代(Old Generation) -- 永久代(Permanent Generation) - -当一个对象被创建时,它首先进入新生代,之后有可能被转移到老年代中。新生代存放着大量的生命很短的对象,因此新生代在三个区域中垃圾回收的频率最高。为了更高效地进行垃圾回收,把新生代继续划分成以下三个空间: - -- Eden -- From Survivor -- To Survivor - -

    - -Java 堆不需要连续内存,并且可以通过动态增加其内存,增加失败会抛出 OutOfMemoryError 异常。 - -可以通过 -Xms 和 -Xmx 两个虚拟机参数来指定一个程序的 Java 堆内存大小,第一个参数设置最小值,第二个参数设置最大值。 - -```java -java -Xms=1M -XmX=2M HackTheJava -``` - -## 方法区 - -用于存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 - -和 Java 堆一样不需要连续的内存,并且可以动态扩展,动态扩展失败一样会抛出 OutOfMemoryError 异常。 - -对这块区域进行垃圾回收的主要目标是对常量池的回收和对类的卸载,但是一般比较难实现,HotSpot 虚拟机把它当成永久代来进行垃圾回收。 - -## 运行时常量池 - -运行时常量池是方法区的一部分。 - -Class 文件中的常量池(编译器生成的各种字面量和符号引用)会在类加载后被放入这个区域。 - -除了在编译期生成的常量,还允许动态生成,例如 String 类的 intern()。这部分常量也会被放入运行时常量池。 - -## 直接内存 - -在 JDK 1.4 中新加入了 NIO 类,引入了一种基于通道(Channel)与缓冲区(Buffer)的 I/O 方式,它可以使用 Native 函数库直接分配堆外内存,然后通过一个存储在 Java 堆里的 DirectByteBuffer 对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在 Java 堆和 Native 堆中来回复制数据。 - -# 二、垃圾收集 - -程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。垃圾回收主要是针对 Java 堆和方法区进行。 - -## 判断一个对象是否可回收 - -### 1. 引用计数 - -给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。 - -两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。 - -```java -objA.instance = objB; -objB.instance = objA; -``` - -### 2. 可达性 - -通过 GC Roots 作为起始点进行搜索,能够到达到的对象都是都是可用的,不可达的对象可被回收。 - -GC Roots 一般包含以下内容: - -1. 虚拟机栈中引用的对象 -2. 方法区中类静态属性引用的对象 -3. 方法区中的常量引用的对象 -4. 本地方法栈中引用的对象 - -### 3. 引用类型 - -无论是通过引用计算算法判断对象的引用数量,还是通过可达性分析算法判断对象的引用链是否可达,判定对象是否存活都与“引用”有关。 - -Java 对引用的概念进行了扩充,引入四种强度不同的引用类型。 - -**(一)强引用** - -只要强引用存在,垃圾回收器永远不会回收调掉被引用的对象。 - -使用 new 一个新对象的方式来创建强引用。 - -```java -Object obj = new Object(); -``` - -**(二)软引用** - -用来描述一些还有用但是并非必需的对象。 - -在系统将要发生内存溢出异常之前,将会对这些对象列进回收范围之中进行第二次回收。如果这次回收还没有足够的内存,才会抛出溢出异常。 - -软引用主要用来实现类似缓存的功能,在内存足够的情况下直接通过软引用取值,无需从繁忙的真实来源获取数据,提升速度;当内存不足时,自动删除这部分缓存数据,从真正的来源获取这些数据。 - -使用 SoftReference 类来实现软引用。 - -```java -Object obj = new Object(); -SoftReference sf = new SoftReference(obj); -``` - -**(三)弱引用** - -只能生存到下一次垃圾收集发生之前,当垃圾收集器工作时,无论当前内存是否足够,都会被回收。 - -使用 WeakReference 类来实现弱引用。 - -```java -Object obj = new Object(); -WeakReference wf = new WeakReference(obj); -``` - -**(四)虚引用** - -又称为幽灵引用或者幻影引用。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用取得一个对象实例。 - -为一个对象设置虚引用关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通知。 - -使用 PhantomReference 来实现虚引用。 - -```java -Object obj = new Object(); -PhantomReference pf = new PhantomReference(obj); -``` - -### 4. 方法区的回收 - -因为方法区主要存放永久代对象,而永久代对象的回收率比新生代差很多,因此在方法区上进行回收性价比不高。 - -主要是对常量池的回收和对类的卸载。 - -类的卸载条件很多,需要满足以下三个条件,并且满足了也不一定会被卸载: - -1. 该类所有的实例都已经被回收,也就是 Java 堆中不存在该类的任何实例。 -2. 加载该类的 ClassLoader 已经被回收。 -3. 该类对应的 java.lang.Class 对象没有在任何地方被引用,也就无法在任何地方通过反射访问该类方法。 - -可以通过 -Xnoclassgc 参数来控制是否对类进行卸载。 - -在大量使用反射、动态代理、CGLib 等 ByteCode 框架、动态生成 JSP 以及 OSGo 这类频繁自定义 ClassLoader 的场景都需要虚拟机具备类卸载功能,以保证不会出现内存溢出。 - -### 5. finalize() - -finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。但是 try-finally 等方式可以做的更好,并且该方法运行代价高昂,不确定性大,无法保证各个对象的调用顺序,因此最好不要使用。 - -当一个对象可被回收时,如果需要执行该对象的 finalize() 方法,那么就有可能通过在该方法中让对象重新被引用,从而实现自救。 - -## 垃圾收集算法 - -### 1. 标记 - 清除 - -

    - -将需要回收的对象进行标记,然后清除。 - -不足: - -1. 标记和清除过程效率都不高 -2. 会产生大量碎片,内存碎片过多可能导致无法给大对象分配内存 - -之后的算法都是基于该算法进行改进。 - -### 2. 复制 - -

    - -将内存划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了就将还存活的对象复制到另一块上面,然后再把使用过的内存空间进行一次清理。 - -主要不足是只使用了内存的一半。 - -现在的商业虚拟机都采用这种收集算法来回收新生代,但是并不是将内存划分为大小相等的两块,而是分为一块较大的 Eden 空间和两块较小的 Survior 空间,每次使用 Eden 空间和其中一块 Survivor。在回收时,将 Eden 和 Survivor 中还存活着的对象一次性复制到另一块 Survivor 空间上,最后清理 Eden 和 使用过的那一块 Survivor。HotSpot 虚拟机的 Eden 和 Survivor 的大小比例默认为 8:1,保证了内存的利用率达到 90 %。如果每次回收有多于 10% 的对象存活,那么一块 Survivor 空间就不够用了,此时需要依赖于老年代进行分配担保,也就是借用老年代的空间。 - -### 3. 标记 - 整理 - -

    - -让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。 - -### 4. 分代收集 - -现在的商业虚拟机采用分代收集算法,它根据对象存活周期将内存划分为几块,不同块采用适当的收集算法。 - -一般将 Java 堆分为新生代和老年代。 - -1. 新生代使用:复制算法 -2. 老年代使用:标记 - 清理 或者 标记 - 整理 算法 - -## 垃圾收集器 - -

    - -以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 - -### 1. Serial 收集器 - -

    - -它是单线程的收集器,不仅意味着只会使用一个线程进行垃圾收集工作,更重要的是它在进行垃圾收集时,必须暂停所有其他工作线程,往往造成过长的等待时间。 - -它的优点是简单高效,对于单个 CPU 环境来说,由于没有线程交互的开销,因此拥有最高的单线程收集效率。 - -在 Client 应用场景中,分配给虚拟机管理的内存一般来说不会很大,该收集器收集几十兆甚至一两百兆的新生代停顿时间可以控制在一百多毫秒以内,只要不是太频繁,这点停顿是可以接受的。 - -### 2. ParNew 收集器 - -

    - -它是 Serial 收集器的多线程版本。 - -是 Server 模式下的虚拟机首选新生代收集器,除了性能原因外,主要是因为除了 Serial 收集器,只有它能与 CMS 收集器配合工作。 - -默认开始的线程数量与 CPU 数量相同,可以使用 -XX:ParallelGCThreads 参数来设置线程数。 - -### 3. Parallel Scavenge 收集器 - -是并行的多线程收集器。 - -其它收集器关注点是尽可能缩短垃圾收集时用户线程的停顿时间,而它的目标是达到一个可控制的吞吐量,它被称为“吞吐量优先”收集器。这里的吞吐量指 CPU 用于运行用户代码的时间占总时间的比值。 - -停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户体验。而高吞吐量则可以高效率地利用 CPU 时间,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。 - -提供了两个参数用于精确控制吞吐量,分别是控制最大垃圾收集停顿时间 -XX:MaxGCPauseMillis 参数以及直接设置吞吐量大小的 -XX:GCTimeRatio 参数(值为大于 0 且小于 100 的整数)。缩短停顿时间是以牺牲吞吐量和新生代空间来换取的:新生代空间变小,垃圾回收变得频繁,导致吞吐量下降。 - -还提供了一个参数 -XX:+UseAdaptiveSizePolicy,这是一个开关参数,打开参数后,就不需要手工指定新生代的大小(-Xmn)、Eden 和 Survivor 区的比例(-XX:SurvivorRatio)、晋升老年代对象年龄(-XX:PretenureSizeThreshold)等细节参数了,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或者最大的吞吐量,这种方式称为 GC 自适应的调节策略(GC Ergonomics)。自适应调节策略也是它与 ParNew 收集器的一个重要区别。 - -### 4. Serial Old 收集器 - -

    - -Serial Old 是 Serial 收集器的老年代版本,也是给 Client 模式下的虚拟机使用。如果用在 Server 模式下,它有两大用途: - -1. 在 JDK 1.5 以及之前版本(Parallel Old 诞生以前)中与 Parallel Scavenge 收集器搭配使用。 -2. 作为 CMS 收集器的后备预案,在并发收集发生 Concurrent Mode Failure 时使用。 - -### 5. Parallel Old 收集器 - -

    - -是 Parallel Scavenge 收集器的老年代版本。 - -在注重吞吐量以及 CPU 资源敏感的场合,都可以优先考虑 Parallel Scavenge 加 Parallel Old 收集器。 - -### 6. CMS 收集器 - -

    - -CMS(Concurrent Mark Sweep),从 Mark Sweep 可以知道它是基于标记 - 清除算法实现的。 - -特点:并发收集、低停顿。 - -分为以下四个流程: - -1. 初始标记:仅仅只是标记一下 GC Roots 能直接关联到的对象,速度很快,需要停顿。 -2. 并发标记:进行 GC Roots Tracing 的过程,它在整个回收过程中耗时最长,不需要停顿。 -3. 重新标记:为了修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,需要停顿。 -4. 并发清除:不需要停顿。 - -在整个过程中耗时最长的并发标记和并发清除过程中,收集器线程都可以与用户线程一起工作,不需要进行停顿。 - -具有以下缺点: - -1. 对 CPU 资源敏感。CMS 默认启动的回收线程数是 (CPU 数量 + 3) / 4,当 CPU 不足 4 个时,CMS 对用户程序的影响就可能变得很大,如果本来 CPU 负载就比较大,还要分出一半的运算能力去执行收集器线程,就可能导致用户程序的执行速度忽然降低了 50%,其实也让人无法接受。并且低停顿时间是以牺牲吞吐量为代价的,导致 CPU 利用率变低。 - -2. 无法处理浮动垃圾。由于并发清理阶段用户线程还在运行着,伴随程序运行自然就还会有新的垃圾不断产生。这一部分垃圾出现在标记过程之后,CMS 无法在当次收集中处理掉它们,只好留到下一次 GC 时再清理掉,这一部分垃圾就被称为“浮动垃圾”。也是由于在垃圾收集阶段用户线程还需要运行,那也就还需要预留有足够的内存空间给用户线程使用,因此它不能像其他收集器那样等到老年代几乎完全被填满了再进行收集,需要预留一部分空间提供并发收集时的程序运作使用。可以使用 -XX:CMSInitiatingOccupancyFraction 的值来改变触发收集器工作的内存占用百分比,JDK 1.5 默认设置下该值为 68,也就是当老年代使用了 68% 的空间之后会触发收集器工作。如果该值设置的太高,导致浮动垃圾无法保存,那么就会出现 Concurrent Mode Failure,此时虚拟机将启动后备预案:临时启用 Serial Old 收集器来重新进行老年代的垃圾收集。 - -3. 标记 - 清除算法导致的空间碎片,给大对象分配带来很大麻烦,往往出现老年代空间剩余,但无法找到足够大连续空间来分配当前对象,不得不提前触发一次 Full GC。 - -### 7. G1 收集器 - -

    - -G1(Garbage-First)收集器是当今收集器技术发展最前沿的成果之一,它是一款面向服务端应用的垃圾收集器,HotSpot 开发团队赋予它的使命是(在比较长期的)未来可以替换掉 JDK 1.5 中发布的 CMS 收集器。 - -具备如下特点: - -- 并行与并发:能充分利用多 CPU 环境下的硬件优势,使用多个 CPU 来缩短停顿时间。 -- 分代收集:分代概念依然得以保留,虽然它不需要其它收集器配合就能独立管理整个 GC 堆,但它能够采用不同方式去处理新创建的对象和已存活一段时间、熬过多次 GC 的旧对象来获取更好的收集效果。 -- 空间整合:整体来看是基于“标记 - 整理”算法实现的收集器,从局部(两个 Region 之间)上来看是基于“复制”算法实现的,这意味着运行期间不会产生内存空间碎片。 -- 可预测的停顿:这是它相对 CMS 的一大优势,降低停顿时间是 G1 和 CMS 共同的关注点,但 G1 除了降低停顿外,还能建立可预测的停顿时间模型,能让使用者明确指定在一个长度为 M 毫秒的时间片段内,消耗在 GC 上的时间不得超过 N 毫秒,这几乎已经是实时 Java(RTSJ)的垃圾收集器的特征了。 - -在 G1 之前的其他收集器进行收集的范围都是整个新生代或者老生代,而 G1 不再是这样,Java 堆的内存布局与其他收集器有很大区别,将整个 Java 堆划分为多个大小相等的独立区域(Region)。虽然还保留新生代和老年代的概念,但新生代和老年代不再是物理隔离的了,而都是一部分 Region(不需要连续)的集合。 - -之所以能建立可预测的停顿时间模型,是因为它可以有计划地避免在整个 Java 堆中进行全区域的垃圾收集。它跟踪各个 Region 里面的垃圾堆积的价值大小(回收所获得的空间大小以及回收所需时间的经验值),在后台维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的 Region(这也就是 Garbage-First 名称的来由)。这种使用 Region 划分内存空间以及有优先级的区域回收方式,保证了它在有限的时间内可以获取尽可能高的收集效率。 - -Region 不可能是孤立的,一个对象分配在某个 Region 中,可以与整个 Java 堆任意的对象发生引用关系。在做可达性分析确定对象是否存活的时候,需要扫描整个 Java 堆才能保证准确性,这显然是对 GC 效率的极大伤害。为了避免全堆扫描的发生,每个 Region 都维护了一个与之对应的 Remembered Set。虚拟机发现程序在对 Reference 类型的数据进行写操作时,会产生一个 Write Barrier 暂时中断写操作,检查 Reference 引用的对象是否处于不同的 Region 之中,如果是,便通过 CardTable 把相关引用信息记录到被引用对象所属的 Region 的 Remembered Set 之中。当进行内存回收时,在 GC 根节点的枚举范围中加入 Remembered Set 即可保证不对全堆扫描也不会有遗漏。 - -如果不计算维护 Remembered Set 的操作,G1 收集器的运作大致可划分为以下几个步骤: - -1. 初始标记 -2. 并发标记 -3. 最终标记:为了修正在并发标记期间因用户程序继续运作而导致标记产生变动的那一部分标记记录,虚拟机将这段时间对象变化记录在线程的 Remembered Set Logs 里面,最终标记阶段需要把 Remembered Set Logs 的数据合并到 Remembered Set 中。这阶段需要停顿线程,但是可并行执行。 -4. 筛选回收:首先对各个 Region 中的回收价值和成本进行排序,根据用户所期望的 GC 停顿是时间来制定回收计划。此阶段其实也可以做到与用户程序一起并发执行,但是因为只回收一部分 Region,时间是用户可控制的,而且停顿用户线程将大幅度提高收集效率。 - -### 8. 七种垃圾收集器的比较 - -| 收集器 | 串行、并行 or 并发 | 新生代 / 老年代 | 算法 | 目标 | 适用场景 | -| :---: | :---: | :---: | :---: | :---: | :---: | -| **Serial** | 串行 | 新生代 | 复制算法 | 响应速度优先 | 单 CPU 环境下的 Client 模式 | -| **Serial Old** | 串行 | 老年代 | 标记-整理 | 响应速度优先 | 单 CPU 环境下的 Client 模式、CMS 的后备预案 | -| **ParNew** | 并行 | 新生代 | 复制算法 | 响应速度优先 | 多 CPU 环境时在 Server 模式下与 CMS 配合 | -| **Parallel Scavenge** | 并行 | 新生代 | 复制算法 | 吞吐量优先 | 在后台运算而不需要太多交互的任务 | -| **Parallel Old** | 并行 | 老年代 | 标记-整理 | 吞吐量优先 | 在后台运算而不需要太多交互的任务 | -| **CMS** | 并发 | 老年代 | 标记-清除 | 响应速度优先 | 集中在互联网站或 B/S 系统服务端上的 Java 应用 | -| **G1** | 并发 | both | 标记-整理 + 复制算法 | 响应速度优先 | 面向服务端应用,将来替换 CMS | - -## 内存分配与回收策略 - -对象的内存分配,也就是在堆上分配。主要分配在新生代的 Eden 区上,少数情况下也可能直接分配在老年代中。 - -### 1. 优先在 Eden 分配 - -大多数情况下,对象在新生代 Eden 区分配,当 Eden 区空间不够时,发起 Minor GC。 - -关于 Minor GC 和 Full GC: - -- Minor GC:发生在新生代上,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行,执行的速度一般也会比较快。 -- Full GC:发生在老年代上,老年代对象和新生代的相反,其存活时间长,因此 Full GC 很少执行,而且执行速度会比 Minor GC 慢很多。 - -### 2. 大对象直接进入老年代 - -大对象是指需要连续内存空间的对象,最典型的大对象是那种很长的字符串以及数组。经常出现大对象会提前触发垃圾收集以获取足够的连续空间分配给大对象。 - -提供 -XX:PretenureSizeThreshold 参数,大于此值的对象直接在老年代分配,避免在 Eden 区和 Survivor 区之间的大量内存复制。 - -### 3. 长期存活的对象进入老年代 - -JVM 为对象定义年龄计数器,经过 Minor GC 依然存活,并且能被 Survivor 区容纳的,移被移到 Survivor 区,年龄就增加 1 岁,增加到一定年龄则移动到老年代中(默认 15 岁,通过 -XX:MaxTenuringThreshold 设置)。 - -### 4. 动态对象年龄判定 - -JVM 并不是永远地要求对象的年龄必须达到 MaxTenuringThreshold 才能晋升老年代,如果在 Survivor 区中相同年龄所有对象大小的总和大于 Survivor 空间的一半,则年龄大于或等于该年龄的对象可以直接进入老年代,无序等待 MaxTenuringThreshold 中要求的年龄。 - -### 5. 空间分配担保 - -在发生 Minor GC 之前,JVM 先检查老年代最大可用的连续空间是否大于新生代所有对象总空间,如果条件成立的话,那么 Minor GC 可以确认是安全的;如果不成立的话 JVM 会查看 HandlePromotionFailure 设置值是否允许担保失败,如果允许那么就会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果大于,将尝试着进行一次 Minor GC,尽管这次 Minor GC 是有风险的;如果小于,或者 HandlePromotionFailure 设置不允许冒险,那这时也要改为进行一次 Full GC。 - -## Full GC 的触发条件 - -对于 Minor GC,其触发条件非常简单,当 Eden 区空间满时,就将触发一次 Minor GC。而 Full GC 则相对复杂,有以下条件: - -### 1. 调用 System.gc() - -此方法的调用是建议 JVM 进行 Full GC,虽然只是建议而非一定,但很多情况下它会触发 Full GC,从而增加 Full GC 的频率,也即增加了间歇性停顿的次数。因此强烈建议能不使用此方法就不要使用,让虚拟机自己去管理它的内存。可通过 -XX:+ DisableExplicitGC 来禁止 RMI 调用 System.gc()。 - -### 2. 老年代空间不足 - -老年代空间不足的常见场景为前文所讲的大对象直接进入老年代、长期存活的对象进入老年代等,当执行 Full GC 后空间仍然不足,则抛出 Java.lang.OutOfMemoryError。为避免以上原因引起的 Full GC,调优时应尽量做到让对象在 Minor GC 阶段被回收、让对象在新生代多存活一段时间以及不要创建过大的对象及数组。 - -### 3. 空间分配担保失败 - -使用复制算法的 Minor GC 需要老年代的内存空间作担保,如果出现了 HandlePromotionFailure 担保失败,则会触发 Full GC。 - -### 4. JDK 1.7 及以前的永久代空间不足 - -在 JDK 1.7 及以前,HotSpot 虚拟机中的方法区是用永久代实现的,永久代中存放的为一些 class 的信息、常量、静态变量等数据,当系统中要加载的类、反射的类和调用的方法较多时,永久代可能会被占满,在未配置为采用 CMS GC 的情况下也会执行 Full GC。如果经过 Full GC 仍然回收不了,那么 JVM 会抛出 java.lang.OutOfMemoryError,为避免以上原因引起的 Full GC,可采用的方法为增大永久代空间或转为使用 CMS GC。 - -### 5. Concurrent Mode Failure - -执行 CMS GC 的过程中同时有对象要放入老年代,而此时老年代空间不足(有时候“空间不足”是 CMS GC 时当前的浮动垃圾过多导致暂时性的空间不足触发 Full GC),便会报 Concurrent Mode Failure 错误,并触发 Full GC。 - -# 三、类加载机制 - -类是在运行期间动态加载的。 - -## 类的生命周期 - -

    - -包括以下 7 个阶段: - -- **加载(Loading)** -- **验证(Verification)** -- **准备(Preparation)** -- **解析(Resolution)** -- **初始化(Initialization)** -- 使用(Using) -- 卸载(Unloading) - -其中解析过程在某些情况下可以在初始化阶段之后再开始,这是为了支持 Java 的动态绑定。 - -## 类初始化时机 - -虚拟机规范中并没有强制约束何时进行加载,但是规范严格规定了有且只有下列五种情况必须对类进行初始化(加载、验证、准备都会随着发生): - -1. 遇到 new、getstatic、putstatic、invokestatic 这四条字节码指令时,如果类没有进行过初始化,则必须先触发其初始化。最常见的生成这 4 条指令的场景是:使用 new 关键字实例化对象的时候;读取或设置一个类的静态字段(被 final 修饰、已在编译器把结果放入常量池的静态字段除外)的时候;以及调用一个类的静态方法的时候。 - -2. 使用 java.lang.reflect 包的方法对类进行反射调用的时候,如果类没有进行初始化,则需要先触发其初始化。 - -3. 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化。 - -4. 当虚拟机启动时,用户需要指定一个要执行的主类(包含 main() 方法的那个类),虚拟机会先初始化这个主类; - -5. 当使用 JDK.7 的动态语言支持时,如果一个 java.lang.invoke.MethodHandle 实例最后的解析结果为 REF_getStatic, REF_putStatic, REF_invokeStatic 的方法句柄,并且这个方法句柄所对应的类没有进行过初始化,则需要先触发其初始化; - -以上 5 种场景中的行为称为对一个类进行主动引用。除此之外,所有引用类的方式都不会触发初始化,称为被动引用。被动引用的常见例子包括: - -- 通过子类引用父类的静态字段,不会导致子类初始化。 - -```java -System.out.println(SubClass.value); // value 字段在 SuperClass 中定义 -``` - -- 通过数组定义来引用类,不会触发此类的初始化。该过程会对数组类进行初始化,数组类是一个由虚拟机自动生成的、直接继承自 Object 的子类,其中包含了数组的属性和方法。 - -```java -SuperClass[] sca = new SuperClass[10]; -``` - -- 常量在编译阶段会存入调用类的常量池中,本质上并没有直接引用到定义常量的类,因此不会触发定义常量的类的初始化。 - -```java -System.out.println(ConstClass.HELLOWORLD); -``` - -## 类加载过程 - -包含了加载、验证、准备、解析和初始化这 5 个阶段。 - -### 1. 加载 - -加载是类加载的一个阶段,注意不要混淆。 - -加载过程完成以下三件事: - -1. 通过一个类的全限定名来获取定义此类的二进制字节流。 -2. 将这个字节流所代表的静态存储结构转化为方法区的运行时存储结构。 -3. 在内存中生成一个代表这个类的 Class 对象,作为方法区这个类的各种数据的访问入口。 - -其中二进制字节流可以从以下方式中获取: - -- 从 ZIP 包读取,这很常见,最终成为日后 JAR、EAR、WAR 格式的基础。 -- 从网络中获取,这种场景最典型的应用是 Applet。 -- 运行时计算生成,这种场景使用得最多得就是动态代理技术,在 java.lang.reflect.Proxy 中,就是用了 ProxyGenerator.generateProxyClass 的代理类的二进制字节流。 -- 由其他文件生成,典型场景是 JSP 应用,即由 JSP 文件生成对应的 Class 类。 -- 从数据库读取,这种场景相对少见,例如有些中间件服务器(如 SAP Netweaver)可以选择把程序安装到数据库中来完成程序代码在集群间的分发。 -... - -### 2. 验证 - -确保 Class 文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。 - -主要有以下 4 个阶段: - -**(一)文件格式验证** - -验证字节流是否符合 Class 文件格式的规范,并且能被当前版本的虚拟机处理。 - -**(二)元数据验证** - -对字节码描述的信息进行语义分析,以保证其描述的信息符合 Java 语言规范的要求。 - -**(三)字节码验证** - -通过数据流和控制流分析,确保程序语义是合法、符合逻辑的。 - -**(四)符号引用验证** - -发生在虚拟机将符号引用转换为直接引用的时候,对类自身以外(常量池中的各种符号引用)的信息进行匹配性校验。 - -### 3. 准备 - -类变量是被 static 修饰的变量,准备阶段为类变量分配内存并设置初始值,使用的是方法区的内存。 - -实例变量不会在这阶段分配内存,它将会在对象实例化时随着对象一起分配在 Java 堆中。 - -初始值一般为 0 值,例如下面的类变量 value 被初始化为 0 而不是 123。 - -```java -public static int value = 123; -``` - -如果类变量是常量,那么会按照表达式来进行初始化,而不是赋值为 0。 - -```java -public static final int value = 123; -``` - -### 4. 解析 - -将常量池的符号引用替换为直接引用的过程。 - -### 5. 初始化 - -初始化阶段才真正开始执行类中的定义的 Java 程序代码。初始化阶段即虚拟机执行类构造器 <clinit>() 方法的过程。 - -在准备阶段,类变量已经赋过一次系统要求的初始值,而在初始化阶段,根据程序员通过程序制定的主观计划去初始化类变量和其它资源。 - -<clinit>() 方法具有以下特点: - -- 是由编译器自动收集类中所有类变量的赋值动作和静态语句块(static{} 块)中的语句合并产生的,编译器收集的顺序由语句在源文件中出现的顺序决定。特别注意的是,静态语句块只能访问到定义在它之前的类变量,定义在它之后的类变量只能赋值,不能访问。例如以下代码: - -```java -public class Test { - static { - i = 0; // 给变量赋值可以正常编译通过 - System.out.print(i); // 这句编译器会提示“非法向前引用” - } - static int i = 1; -} -``` - -- 与类的构造函数(或者说实例构造器 <init>())不同,不需要显式的调用父类的构造器。虚拟机会自动保证在子类的 <clinit>() 方法运行之前,父类的 <clinit>() 方法已经执行结束。因此虚拟机中第一个执行 <clinit>() 方法的类肯定为 java.lang.Object。 - -- 由于父类的 <clinit>() 方法先执行,也就意味着父类中定义的静态语句块要优于子类的变量赋值操作。例如以下代码: - -```java -static class Parent { - public static int A = 1; - static { - A = 2; - } -} - -static class Sub extends Parent { - public static int B = A; -} - -public static void main(String[] args) { - System.out.println(Sub.B); // 输出结果是父类中的静态变量 A 的值 ,也就是 2。 -} -``` - -- <clinit>() 方法对于类或接口不是必须的,如果一个类中不包含静态语句块,也没有对类变量的赋值操作,编译器可以不为该类生成 <clinit>() 方法。 - -- 接口中不可以使用静态语句块,但仍然有类变量初始化的赋值操作,因此接口与类一样都会生成 <clinit>() 方法。但接口与类不同的是,执行接口的 <clinit>() 方法不需要先执行父接口的 <clinit>() 方法。只有当父接口中定义的变量使用时,父接口才会初始化。另外,接口的实现类在初始化时也一样不会执行接口的 <clinit>() 方法。 - -- 虚拟机会保证一个类的 <clinit>() 方法在多线程环境下被正确的加锁和同步,如果多个线程同时初始化一个类,只会有一个线程执行这个类的 <clinit>() 方法,其它线程都会阻塞等待,直到活动线程执行 <clinit>() 方法完毕。如果在一个类的 <clinit>() 方法中有耗时的操作,就可能造成多个进程阻塞,在实际过程中此种阻塞很隐蔽。 - -## 类加载器 - -虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流 ( 即字节码 )”这个动作放到 Java 虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 - -### 1. 类与类加载器 - -对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在 Java 虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。通俗而言:比较两个类是否“相等”(这里所指的“相等”,包括类的 Class 对象的 equals() 方法、isAssignableFrom() 方法、isInstance() 方法的返回结果,也包括使用 instanceof() 关键字做对象所属关系判定等情况),只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个 Class 文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等。 - -### 2. 类加载器分类 - -从 Java 虚拟机的角度来讲,只存在以下两种不同的类加载器: - -- 启动类加载器(Bootstrap ClassLoader),这个类加载器用 C++ 实现,是虚拟机自身的一部分; - -- 所有其他类的加载器,这些类由 Java 实现,独立于虚拟机外部,并且全都继承自抽象类 java.lang.ClassLoader。 - -从 Java 开发人员的角度看,类加载器可以划分得更细致一些: - -- 启动类加载器(Bootstrap ClassLoader) 此类加载器负责将存放在 <JAVA_HOME>\lib 目录中的,或者被 -Xbootclasspath 参数所指定的路径中的,并且是虚拟机识别的(仅按照文件名识别,如 rt.jar,名字不符合的类库即使放在 lib 目录中也不会被加载)类库加载到虚拟机内存中。 启动类加载器无法被 Java 程序直接引用,用户在编写自定义类加载器时,如果需要把加载请求委派给启动类加载器,直接使用 null 代替即可。 - -- 扩展类加载器(Extension ClassLoader) 这个类加载器是由 ExtClassLoader(sun.misc.Launcher$ExtClassLoader)实现的。它负责将 <JAVA_HOME>/lib/ext 或者被 java.ext.dir 系统变量所指定路径中的所有类库加载到内存中,开发者可以直接使用扩展类加载器。 - -- 应用程序类加载器(Application ClassLoader) 这个类加载器是由 AppClassLoader(sun.misc.Launcher$AppClassLoader)实现的。由于这个类加载器是 ClassLoader 中的 getSystemClassLoader() 方法的返回值,因此一般称为系统类加载器。它负责加载用户类路径(ClassPath)上所指定的类库,开发者可以直接使用这个类加载器,如果应用程序中没有自定义过自己的类加载器,一般情况下这个就是程序中默认的类加载器。 - -### 3. 双亲委派模型 - -应用程序都是由三种类加载器相互配合进行加载的,如果有必要,还可以加入自己定义的类加载器。下图展示的类加载器之间的层次关系,称为类加载器的双亲委派模型(Parents Delegation Model)。该模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器,这里类加载器之间的父子关系一般通过组合(Composition)关系来实现,而不是通过继承(Inheritance)的关系实现。 - -

    - -**(一)工作过程** - -如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载,而是把这个请求委派给父类加载器,每一个层次的加载器都是如此,依次递归。因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成此加载请求(它搜索范围中没有找到所需类)时,子加载器才会尝试自己加载。 - -**(二)好处** - -使用双亲委派模型来组织类加载器之间的关系,使得 Java 类随着它的类加载器一起具备了一种带有优先级的层次关系。例如类 java.lang.Object,它存放在 rt.jar 中,无论哪个类加载器要加载这个类,最终都是委派给处于模型最顶端的启动类加载器进行加载,因此 Object 类在程序的各种类加载器环境中都是同一个类。相反,如果没有双亲委派模型,由各个类加载器自行加载的话,如果用户编写了一个称为java.lang.Object 的类,并放在程序的 ClassPath 中,那系统中将会出现多个不同的 Object 类,程序将变得一片混乱。如果开发者尝试编写一个与 rt.jar 类库中已有类重名的 Java 类,将会发现可以正常编译,但是永远无法被加载运行。 - -**(三)实现** - -```java -protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException{ - //check the class has been loaded or not - Class c = findLoadedClass(name); - if(c == null) { - try{ - if(parent != null) { - c = parent.loadClass(name, false); - } else{ - c = findBootstrapClassOrNull(name); - } - } catch(ClassNotFoundException e) { - //if throws the exception , the father can not complete the load - } - if(c == null) { - c = findClass(name); - } - } - if(resolve) { - resolveClass(c); - } - return c; -} -``` - -# 四、JVM 参数 - -## GC 优化配置 - -| 配置 | 描述 | -| --- | --- | -| -Xms | 初始化堆内存大小 | -| -Xmx | 堆内存最大值 | -| -Xmn | 新生代大小 | -| -XX:PermSize | 初始化永久代大小 | -| -XX:MaxPermSize | 永久代最大容量 | - -## GC 类型设置 - -| 配置 | 描述 | -| --- | --- | -| -XX:+UseSerialGC | 串行垃圾回收器 | -| -XX:+UseParallelGC | 并行垃圾回收器 | -| -XX:+UseConcMarkSweepGC | 并发标记扫描垃圾回收器 | -| -XX:ParallelCMSThreads= | 并发标记扫描垃圾回收器 = 为使用的线程数量 | -| -XX:+UseG1GC | G1 垃圾回收器 | - -```java -java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m -XX:+UseSerialGC -jar java-application.jar -``` - -# 参考资料 - -- 深入理解 Java 虚拟机 -- [Jvm memory](https://www.slideshare.net/benewu/jvm-memory) -- [Memory Architecture Of JVM(Runtime Data Areas)](https://hackthejava.wordpress.com/2015/01/09/memory-architecture-by-jvmruntime-data-areas/) diff --git a/notes/Leetcode 题解.md b/notes/Leetcode 题解.md deleted file mode 100644 index 7e5916ec..00000000 --- a/notes/Leetcode 题解.md +++ /dev/null @@ -1,5291 +0,0 @@ - -* [算法思想](#算法思想) - * [二分查找](#二分查找) - * [贪心思想](#贪心思想) - * [双指针](#双指针) - * [排序](#排序) - * [快速选择](#快速选择) - * [堆排序](#堆排序) - * [桶排序](#桶排序) - * [搜索](#搜索) - * [BFS](#bfs) - * [DFS](#dfs) - * [Backtracking](#backtracking) - * [分治](#分治) - * [动态规划](#动态规划) - * [分割整数](#分割整数) - * [矩阵路径](#矩阵路径) - * [斐波那契数列](#斐波那契数列) - * [最长递增子序列](#最长递增子序列) - * [最长公共子系列](#最长公共子系列) - * [0-1 背包](#0-1-背包) - * [数组区间](#数组区间) - * [字符串编辑](#字符串编辑) - * [其它问题](#其它问题) - * [数学](#数学) - * [素数](#素数) - * [最大公约数](#最大公约数) - * [进制转换](#进制转换) - * [阶乘](#阶乘) - * [字符串加法减法](#字符串加法减法) - * [相遇问题](#相遇问题) - * [多数投票问题](#多数投票问题) - * [其它](#其它) -* [数据结构相关](#数据结构相关) - * [栈和队列](#栈和队列) - * [哈希表](#哈希表) - * [字符串](#字符串) - * [数组与矩阵](#数组与矩阵) - * [1-n 分布](#1-n-分布) - * [有序矩阵](#有序矩阵) - * [链表](#链表) - * [树](#树) - * [递归](#递归) - * [层次遍历](#层次遍历) - * [前中后序遍历](#前中后序遍历) - * [BST](#bst) - * [Trie](#trie) - * [图](#图) - * [位运算](#位运算) -* [参考资料](#参考资料) - - - -# 算法思想 - -## 二分查找 - -```java -public int search(int key, int[] array) { - int l = 0, h = array.length - 1; - while (l <= h) { - int mid = l + (h - l) / 2; - if (key == array[mid]) return mid; - if (key < array[mid]) h = mid - 1; - else l = mid + 1; - } - return -1; -} -``` - -实现时需要注意以下细节: - -1. 在计算 mid 时不能使用 mid = (l + h) / 2 这种方式,因为 l + h 可能会导致加法溢出,应该使用 mid = l + (h - l) / 2。 - -2. 对 h 的赋值和循环条件有关,当循环条件为 l <= h 时,h = mid - 1;当循环条件为 l < h 时,h = mid。解释如下:在循环条件为 l <= h 时,如果 h = mid,会出现循环无法退出的情况,例如 l = 1,h = 1,此时 mid 也等于 1,如果此时继续执行 h = mid,那么就会无限循环;在循环条件为 l < h,如果 h = mid - 1,会错误跳过查找的数,例如对于数组 [1,2,3],要查找 1,最开始 l = 0,h = 2,mid = 1,判断 key < arr[mid] 执行 h = mid - 1 = 0,此时循环退出,直接把查找的数跳过了。 - -3. l 的赋值一般都为 l = mid + 1。 - -**求开方** - -[Leetcode : 69. Sqrt(x) (Easy)](https://leetcode.com/problems/sqrtx/description/) - -```html -Input: 4 -Output: 2 - -Input: 8 -Output: 2 -Explanation: The square root of 8 is 2.82842..., and since we want to return an integer, the decimal part will be truncated. -``` - -一个数 x 的开方 sqrt 一定在 0 \~ x 之间,并且满足 sqrt == x / sqrt 。可以利用二分查找在 0 \~ x 之间查找 sqrt。 - -```java -public int mySqrt(int x) { - if(x <= 1) return x; - int l = 1, h = x; - while(l <= h){ - int mid = l + (h - l) / 2; - int sqrt = x / mid; - if(sqrt == mid) return mid; - else if(sqrt < mid) h = mid - 1; - else l = mid + 1; - } - return h; -} -``` - -**摆硬币** - -[Leetcode : 441. Arranging Coins (Easy)](https://leetcode.com/problems/arranging-coins/description/) - -```html -n = 8 -The coins can form the following rows: -¤ -¤ ¤ -¤ ¤ ¤ -¤ ¤ -Because the 4th row is incomplete, we return 3. -``` - -题目描述:第 i 行摆 i 个,统计能够摆的行数。 - -返回 h 而不是 l,因为摆的硬币最后一行不能算进去。 - -```java -public int arrangeCoins(int n) { - int l = 0, h = n; - while(l <= h){ - int m = l + (h - l) / 2; - long x = m * (m + 1L) / 2; - if(x == n) return m; - else if(x < n) l = m + 1; - else h = m - 1; - } - return h; -} -``` - -可以不用二分查找,更直观的解法如下: - -```java -public int arrangeCoins(int n) { - int level = 1; - while (n > 0) { - n -= level; - level++; - } - return n == 0 ? level - 1 : level - 2; -} -``` - -**有序数组的 Single Element** - -[Leetcode : 540. Single Element in a Sorted Array (Medium)](https://leetcode.com/problems/single-element-in-a-sorted-array/description/) - -```html -Input: [1,1,2,3,3,4,4,8,8] -Output: 2 -``` - -题目描述:一个有序数组只有一个数不出现两次,找出这个数。 - -```java -public int singleNonDuplicate(int[] nums) { - int l = 0, h = nums.length - 1; - while(l < h) { - int m = l + (h - l) / 2; - if(m % 2 == 1) m--; // 保证 l/h/m 都在偶数位,使得查找区间大小一直都是奇数 - if(nums[m] == nums[m + 1]) l = m + 2; - else h = m; - } - return nums[l]; -} -``` - -## 贪心思想 - -贪心思想保证每次操作都是局部最优的,并且最后得到的结果是全局最优的。 - -**分配饼干** - -[Leetcode : 455. Assign Cookies (Easy)](https://leetcode.com/problems/assign-cookies/description/) - -```html -Input: [1,2], [1,2,3] -Output: 2 - -Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2. -You have 3 cookies and their sizes are big enough to gratify all of the children, -You need to output 2. -``` - -题目描述:每个孩子都有一个满足度,每个饼干都有一个大小,只有饼干的大小大于一个孩子的满足度,该孩子才会获得满足。求解最多可以获得满足的孩子数量。 - -因为最小的孩子最容易得到满足,因此先满足最小孩子。给一个孩子的饼干应当尽量小又能满足该孩子,这样大饼干就能拿来给满足度比较大的孩子。 - -证明:假设在某次选择中,贪心策略选择给第 i 个孩子分配第 m 个饼干,并且第 i 个孩子满足度最小,第 m 个饼干为可以满足第 i 个孩子的最小饼干,利用贪心策略最终可以满足 k 个孩子。假设最优策略在这次选择中给 i 个孩子分配第 n 个饼干,并且这个饼干大于第 m 个饼干。我们发现使用第 m 个饼干去替代第 n 个饼干完全不影响后续的结果,因此不存在比贪心策略更优的策略,即贪心策略就是最优策略。 - -```java -public int findContentChildren(int[] g, int[] s) { - Arrays.sort(g); - Arrays.sort(s); - int i = 0, j = 0; - while(i < g.length && j < s.length){ - if(g[i] <= s[j]) i++; - j++; - } - return i; -} -``` - -**投飞镖刺破气球** - -[Leetcode : 452. Minimum Number of Arrows to Burst Balloons (Medium)](https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/description/) - -``` -Input: -[[10,16], [2,8], [1,6], [7,12]] - -Output: -2 -``` - -题目描述:气球在一个水平数轴上摆放,可以重叠,飞镖垂直射向坐标轴,使得路径上的气球都会刺破。求解最小的投飞镖次数使所有气球都被刺破。 - -从左往右投飞镖,并且在每次投飞镖时满足以下条件: - -1. 左边已经没有气球了; -2. 本次投飞镖能够刺破最多的气球。 - -```java -public int findMinArrowShots(int[][] points) { - if(points.length == 0) return 0; - Arrays.sort(points,(a,b) -> (a[1] - b[1])); - int curPos = points[0][1]; - int ret = 1; - for (int i = 1; i < points.length; i++) { - if(points[i][0] <= curPos) { - continue; - } - curPos = points[i][1]; - ret++; - } - return ret; - } -``` - -**股票的最大收益** - -[Leetcode : 122. Best Time to Buy and Sell Stock II (Easy)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/description/) - -题目描述:一次交易包含买入和卖出,多个交易之间不能交叉进行。 - -对于 [a, b, c, d],如果有 a <= b <= c <= d ,那么最大收益为 d - a。而 d - a = (d - c) + (c - b) + (b - a) ,因此当访问到一个 prices[i] 且 prices[i] - prices[i-1] > 0,那么就把 prices[i] - prices[i-1] 添加加到收益中,从而在局部最优的情况下也保证全局最优。 - -```java -public int maxProfit(int[] prices) { - int profit = 0; - for(int i = 1; i < prices.length; i++){ - if(prices[i] > prices[i-1]) profit += (prices[i] - prices[i-1]); - } - return profit; -} -``` - -**种植花朵** - -[Leetcode : 605. Can Place Flowers (Easy)](https://leetcode.com/problems/can-place-flowers/description/) - -```html -Input: flowerbed = [1,0,0,0,1], n = 1 -Output: True -``` - -题目描述:花朵之间至少需要一个单位的间隔。 - -```java -public boolean canPlaceFlowers(int[] flowerbed, int n) { - int cnt = 0; - for(int i = 0; i < flowerbed.length; i++){ - if(flowerbed[i] == 1) continue; - int pre = i == 0 ? 0 : flowerbed[i - 1]; - int next = i == flowerbed.length - 1 ? 0 : flowerbed[i + 1]; - if(pre == 0 && next == 0) { - cnt++; - flowerbed[i] = 1; - } - } - return cnt >= n; -} -``` - -**修改一个数成为非递减数组** - -[Leetcode : 665. Non-decreasing Array (Easy)](https://leetcode.com/problems/non-decreasing-array/description/) - -```html -Input: [4,2,3] -Output: True -Explanation: You could modify the first 4 to 1 to get a non-decreasing array. -``` - -题目描述:判断一个数组能不能只修改一个数就成为非递减数组。 - -在出现 nums[i] < nums[i - 1] 时,需要考虑的是应该修改数组的哪个数,使得本次修改能使 i 之前的数组成为非递减数组,并且 **不影响后续的操作** 。优先考虑令 nums[i - 1] = nums[i],因为如果修改 nums[i] = nums[i - 1] 的话,那么 nums[i] 这个数会变大,那么就有可能比 nums[i + 1] 大,从而影响了后续操作。还有一个比较特别的情况就是 nums[i] < nums[i - 2],只修改 nums[i - 1] = nums[i] 不能令数组成为非递减,只能通过修改 nums[i] = nums[i - 1] 才行。 - -```java -public boolean checkPossibility(int[] nums) { - int cnt = 0; - for(int i = 1; i < nums.length; i++){ - if(nums[i] < nums[i - 1]){ - cnt++; - if(i - 2 >= 0 && nums[i - 2] > nums[i]) nums[i] = nums[i-1]; - else nums[i - 1] = nums[i]; - } - } - return cnt <= 1; -} -``` - -**判断是否为子串** - -[Leetcode : 392. Is Subsequence (Medium)](https://leetcode.com/problems/is-subsequence/description/) - -```html -s = "abc", t = "ahbgdc" -Return true. -``` - -```java -public boolean isSubsequence(String s, String t) { - for (int i = 0, pos = 0; i < s.length(); i++, pos++) { - pos = t.indexOf(s.charAt(i), pos); - if(pos == -1) return false; - } - return true; -} -``` - -**分隔字符串使同种字符出现在一起** - -[Leetcode : 763. Partition Labels (Medium)](https://leetcode.com/problems/partition-labels/description/) - -```html -Input: S = "ababcbacadefegdehijhklij" -Output: [9,7,8] -Explanation: -The partition is "ababcbaca", "defegde", "hijhklij". -This is a partition so that each letter appears in at most one part. -A partition like "ababcbacadefegde", "hijhklij" is incorrect, because it splits S into less parts. -``` - -```java -public List partitionLabels(String S) { - List ret = new ArrayList<>(); - int[] lastIdxs = new int[26]; - for(int i = 0; i < S.length(); i++) lastIdxs[S.charAt(i) - 'a'] = i; - int startIdx = 0; - while(startIdx < S.length()) { - int endIdx = startIdx; - for(int i = startIdx; i < S.length() && i <= endIdx; i++) { - int lastIdx = lastIdxs[S.charAt(i) - 'a']; - if(lastIdx == i) continue; - if(lastIdx > endIdx) endIdx = lastIdx; - } - ret.add(endIdx - startIdx + 1); - startIdx = endIdx + 1; - } - return ret; -} -``` - -**根据身高和序号重组队列** - -[Leetcode : 406. Queue Reconstruction by Height(Medium)](https://leetcode.com/problems/queue-reconstruction-by-height/description/) - -```html -Input: -[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] - -Output: -[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] -``` - -题目描述:一个学生用两个分量 (h, k) 描述,h 表示身高,k 表示排在前面的有 k 个学生的身高比他高或者和他一样高。 - -为了在每次插入操作时不影响后续的操作,身高较高的学生应该先做插入操作,否则身高较小的学生原先正确插入第 k 个位置可能会变成第 k+1 个位置。 - -身高降序、k 值升序,然后按排好序的顺序插入队列的第 k 个位置中。 - -```java -public int[][] reconstructQueue(int[][] people) { - if(people == null || people.length == 0 || people[0].length == 0) return new int[0][0]; - - Arrays.sort(people, new Comparator() { - public int compare(int[] a, int[] b) { - if(a[0] == b[0]) return a[1] - b[1]; - return b[0] - a[0]; - } - }); - - int n = people.length; - List tmp = new ArrayList<>(); - for(int i = 0; i < n; i++) { - tmp.add(people[i][1], new int[]{people[i][0], people[i][1]}); - } - - int[][] ret = new int[n][2]; - for(int i = 0; i < n; i++) { - ret[i][0] = tmp.get(i)[0]; - ret[i][1] = tmp.get(i)[1]; - } - return ret; -} -``` - -## 双指针 - -双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。 - -**从一个已经排序的数组中找出两个数,使它们的和为 0** - -[Leetcode :167. Two Sum II - Input array is sorted (Easy)](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/description/) - -```html -Input: numbers={2, 7, 11, 15}, target=9 -Output: index1=1, index2=2 -``` - -使用双指针,一个指针指向元素较小的值,一个指针指向元素较大的值。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。 - -如果两个指针指向元素的和 sum == target,那么得到要求的结果;如果 sum > target,移动较大的元素,使 sum 变小一些;如果 sum < target,移动较小的元素,使 sum 变大一些。 - -```java -public int[] twoSum(int[] numbers, int target) { - int i = 0, j = numbers.length - 1; - while (i < j) { - int sum = numbers[i] + numbers[j]; - if (sum == target) return new int[]{i + 1, j + 1}; - else if (sum < target) i++; - else j--; - } - return null; -} -``` - -**反转字符串中的元音字符** - -[Leetcode : 345. Reverse Vowels of a String (Easy)](https://leetcode.com/problems/reverse-vowels-of-a-string/description/) - -```html -Given s = "leetcode", return "leotcede". -``` - -使用双指针,指向待反转的两个元音字符,一个指针从头向尾遍历,一个指针从尾到头遍历。 - -```java -private HashSet vowels = new HashSet<>(Arrays.asList('a','e','i','o','u','A','E','I','O','U')); - -public String reverseVowels(String s) { - if(s.length() == 0) return s; - int i = 0, j = s.length() - 1; - char[] result = new char[s.length()]; - while(i <= j){ - char ci = s.charAt(i); - char cj = s.charAt(j); - if(!vowels.contains(ci)){ - result[i] = ci; - i++; - } else if(!vowels.contains(cj)){ - result[j] = cj; - j--; - } else{ - result[i] = cj; - result[j] = ci; - i++; - j--; - } - } - return new String(result); -} -``` - -**两数平方和** - -[Leetcode : 633. Sum of Square Numbers (Easy)](https://leetcode.com/problems/sum-of-square-numbers/description/) - -```html -Input: 5 -Output: True -Explanation: 1 * 1 + 2 * 2 = 5 -``` - -题目描述:判断一个数是否为两个数的平方和,例如 5 = 12 + 22。 - -```java -public boolean judgeSquareSum(int c) { - int left = 0, right = (int) Math.sqrt(c); - while(left <= right){ - int powSum = left * left + right * right; - if(powSum == c) return true; - else if(powSum > c) right--; - else left++; - } - return false; -} -``` - -**回文字符串** - -[Leetcode : 680. Valid Palindrome II (Easy)](https://leetcode.com/problems/valid-palindrome-ii/description/) - -```html -Input: "abca" -Output: True -Explanation: You could delete the character 'c'. -``` - -题目描述:可以删除一个字符,判断是否能构成回文字符串。 - -```java -public boolean validPalindrome(String s) { - int i = 0, j = s.length() -1; - while(i < j){ - if(s.charAt(i) != s.charAt(j)){ - return isPalindrome(s, i, j - 1) || isPalindrome(s, i + 1, j); - } - i++; - j--; - } - return true; -} - -private boolean isPalindrome(String s, int l, int r){ - while(l < r){ - if(s.charAt(l) != s.charAt(r)) - return false; - l++; - r--; - } - return true; -} -``` - -**归并两个有序数组** - -[Leetcode : 88. Merge Sorted Array (Easy)](https://leetcode.com/problems/merge-sorted-array/description/) - -题目描述:把归并结果存到第一个数组上。 - -```java -public void merge(int[] nums1, int m, int[] nums2, int n) { - int i = m - 1, j = n - 1; // 需要从尾开始遍历,否则在 nums1 上归并得到的值会覆盖还未进行归并比较的值 - int idx = m + n - 1; - while(i >= 0 || j >= 0){ - if(i < 0) nums1[idx] = nums2[j--]; - else if(j < 0) nums1[idx] = nums1[i--]; - else if(nums1[i] > nums2[j]) nums1[idx] = nums1[i--]; - else nums1[idx] = nums2[j--]; - idx--; - } -} -``` - -**判断链表是否存在环** - -[Leetcode : 141. Linked List Cycle (Easy)](https://leetcode.com/problems/linked-list-cycle/description/) - -使用双指针,一个指针每次移动一个节点,一个指针每次移动两个节点,如果存在环,那么这两个指针一定会相遇。 - -```java -public boolean hasCycle(ListNode head) { - if(head == null) return false; - ListNode l1 = head, l2 = head.next; - while(l1 != null && l2 != null){ - if(l1 == l2) return true; - l1 = l1.next; - if(l2.next == null) break; - l2 = l2.next.next; - } - return false; -} -``` - -**最长子序列** - -[Leetcode : 524. Longest Word in Dictionary through Deleting (Medium)](https://leetcode.com/problems/longest-word-in-dictionary-through-deleting/description/) - -``` -Input: -s = "abpcplea", d = ["ale","apple","monkey","plea"] - -Output: -"apple" -``` - -题目描述:删除 s 中的一些字符,使得它构成字符串列表 d 中的一个字符串,找出能构成的最长字符串。如果有多个相同长度的结果,返回按字典序排序的最大字符串。 - -```java -public String findLongestWord(String s, List d) { - String ret = ""; - for (String str : d) { - for (int i = 0, j = 0; i < s.length() && j < str.length(); i++) { - if (s.charAt(i) == str.charAt(j)) j++; - if (j == str.length()) { - if (ret.length() < str.length() - || (ret.length() == str.length() && ret.compareTo(str) > 0)) { - ret = str; - } - } - } - } - return ret; -} -``` - -## 排序 - -### 快速选择 - -一般用于求解 **Kth Element** 问题,可以在 O(n) 时间复杂度,O(1) 空间复杂度完成求解工作。 - -与快速排序一样,快速选择一般需要先打乱数组,否则最坏情况下时间复杂度为 O(n2)。 - -### 堆排序 - -堆排序用于求解 **TopK Elements** 问题,通过维护一个大小为 K 的堆,堆中的元素就是 TopK Elements。当然它也可以用于求解 Kth Element 问题,因为最后出堆的那个元素就是 Kth Element。快速选择也可以求解 TopK Elements 问题,因为找到 Kth Element 之后,再遍历一次数组,所有小于等于 Kth Element 的元素都是 TopK Elements。可以看到,快速选择和堆排序都可以求解 Kth Element 和 TopK Elements 问题。 - -**Kth Element** - -[Leetocde : 215. Kth Largest Element in an Array (Medium)](https://leetcode.com/problems/kth-largest-element-in-an-array/description/) - -**排序** :时间复杂度 O(nlgn),空间复杂度 O(1) - -```java -public int findKthLargest(int[] nums, int k) { - int N = nums.length; - Arrays.sort(nums); - return nums[N - k]; -} -``` - -**堆排序** :时间复杂度 O(nlgk),空间复杂度 O(k) - -```java -public int findKthLargest(int[] nums, int k) { - PriorityQueue pq = new PriorityQueue<>(); - for(int val : nums) { - pq.offer(val); - if(pq.size() > k) { - pq.poll(); - } - } - return pq.peek(); -} -``` - -**快速选择** :时间复杂度 O(n),空间复杂度 O(1) - -```java -public int findKthLargest(int[] nums, int k) { - k = nums.length - k; - int lo = 0; - int hi = nums.length - 1; - while (lo < hi) { - final int j = partition(nums, lo, hi); - if(j < k) { - lo = j + 1; - } else if (j > k) { - hi = j - 1; - } else { - break; - } - } - return nums[k]; - } - - private int partition(int[] a, int lo, int hi) { - int i = lo; - int j = hi + 1; - while(true) { - while(i < hi && less(a[++i], a[lo])); - while(j > lo && less(a[lo], a[--j])); - if(i >= j) { - break; - } - exch(a, i, j); - } - exch(a, lo, j); - return j; - } - - private void exch(int[] a, int i, int j) { - final int tmp = a[i]; - a[i] = a[j]; - a[j] = tmp; - } - - private boolean less(int v, int w) { - return v < w; - } -} -``` - -### 桶排序 - -**出现频率最多的 k 个数** - -[Leetcode : 347. Top K Frequent Elements (Medium)](https://leetcode.com/problems/top-k-frequent-elements/description/) - -```html -Given [1,1,1,2,2,3] and k = 2, return [1,2]. -``` - -设置若干个桶,每个桶存储出现频率相同的数,并且桶的下标代表桶中数出现的频率,即第 i 个桶中存储的数出现的频率为 i。把数都放到桶之后,从后向前遍历桶,最先得到的 k 个数就是出现频率最多的的 k 个数。 - -```java -public List topKFrequent(int[] nums, int k) { - List ret = new ArrayList<>(); - Map map = new HashMap<>(); - for(int num : nums) { - map.put(num, map.getOrDefault(num, 0) + 1); - } - List[] bucket = new List[nums.length + 1]; - for(int key : map.keySet()) { - int frequency = map.get(key); - if(bucket[frequency] == null) { - bucket[frequency] = new ArrayList<>(); - } - bucket[frequency].add(key); - } - - for(int i = bucket.length - 1; i >= 0 && ret.size() < k; i--) { - if(bucket[i] != null) { - ret.addAll(bucket[i]); - } - } - return ret; -} -``` - -## 搜索 - -深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此。 - -### BFS - -

    - -广度优先搜索的搜索过程有点像一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个长度。需要注意的是,遍历过的节点不能再次被遍历。 - -第一层: - -- 0 -> {6,2,1,5}; - -第二层: - -- 6 -> {4} -- 2 -> {} -- 1 -> {} -- 5 -> {4,3} - -第三层: - -- 4 -> {} -- 3 -> {} - -可以看到,每一轮遍历的节点都与根节点路径长度相同。设 di 表示第 i 个节点与根节点的路径长度,推导出一个结论:对于先遍历的节点 i 与后遍历的节点 j,有 di<=dj。利用这个结论,可以求解最短路径等 **最优解** 问题:第一次遍历到目的节点,其所经过的路径为最短路径,如果继续遍历,之后再遍历到目的节点,所经过的路径就不是最短路径。 - -在程序实现 BFS 时需要考虑以下问题: - -- 队列:用来存储每一轮遍历的节点; -- 标记:对于遍历过的节点,应该将它标记,防止重复遍历。 - -**计算在网格中从原点到特定点的最短路径长度** - -```html -[[1,1,0,1], - [1,0,1,0], - [1,1,1,1], - [1,0,1,1]] -``` - -1 表示可以经过某个位置。 - -```java -public int minPathLength(int[][] grids, int tr, int tc) { - int[][] next = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; - int m = grids.length, n = grids[0].length; - Queue queue = new LinkedList<>(); - queue.add(new Position(0, 0, 1)); - while (!queue.isEmpty()) { - Position pos = queue.poll(); - for (int i = 0; i < 4; i++) { - Position nextPos = new Position(pos.r + next[i][0], pos.c + next[i][1], pos.length + 1); - if (nextPos.r < 0 || nextPos.r >= m || nextPos.c < 0 || nextPos.c >= n) continue; - if (grids[nextPos.r][nextPos.c] != 1) continue; - grids[nextPos.r][nextPos.c] = 0; - if (nextPos.r == tr && nextPos.c == tc) return nextPos.length; - queue.add(nextPos); - } - } - return -1; -} - -private class Position { - int r, c, length; - public Position(int r, int c, int length) { - this.r = r; - this.c = c; - this.length = length; - } -} -``` - -### DFS - -

    - -广度优先搜索一层一层遍历,每一层得到到的所有新节点,要用队列先存储起来以备下一层遍历的时候再遍历;而深度优先搜索在得到到一个新节点时立马对新节点进行遍历:从节点 0 出发开始遍历,得到到新节点 6 时,立马对新节点 6 进行遍历,得到新节点 4;如此反复以这种方式遍历新节点,直到没有新节点了,此时返回。返回到根节点 0 的情况是,继续对根节点 0 进行遍历,得到新节点 2,然后继续以上步骤。 - -从一个节点出发,使用 DFS 对一个图进行遍历时,能够遍历到的节点都是从初始节点可达的,DFS 常用来求解这种 **可达性** 问题。 - -在程序实现 DFS 时需要考虑以下问题: - -- 栈:用栈来保存当前节点信息,当遍历新节点返回时能够继续遍历当前节点。可以使用递归栈。 -- 标记:和 BFS 一样同样需要对已经遍历过的节点进行标记。 - -**查找最大的连通面积** - -[Leetcode : 695. Max Area of Island (Easy)](https://leetcode.com/problems/max-area-of-island/description/) - -```html -[[0,0,1,0,0,0,0,1,0,0,0,0,0], - [0,0,0,0,0,0,0,1,1,1,0,0,0], - [0,1,1,0,1,0,0,0,0,0,0,0,0], - [0,1,0,0,1,1,0,0,1,0,1,0,0], - [0,1,0,0,1,1,0,0,1,1,1,0,0], - [0,0,0,0,0,0,0,0,0,0,1,0,0], - [0,0,0,0,0,0,0,1,1,1,0,0,0], - [0,0,0,0,0,0,0,1,1,0,0,0,0]] -``` - -```java -public int maxAreaOfIsland(int[][] grid) { - int m = grid.length, n = grid[0].length; - int max = 0; - for(int i = 0; i < m; i++){ - for(int j = 0; j < n; j++){ - if(grid[i][j] == 1) max = Math.max(max, dfs(grid, i, j)); - } - } - return max; -} - -private int dfs(int[][] grid, int i, int j){ - int m = grid.length, n = grid[0].length; - if(i < 0 || i >= m || j < 0 || j >= n) return 0; - if(grid[i][j] == 0) return 0; - grid[i][j] = 0; - return dfs(grid, i + 1, j) + dfs(grid, i - 1, j) + dfs(grid, i, j + 1) + dfs(grid, i, j - 1) + 1; -} -``` - -**图的连通分量** - -[Leetcode : 547. Friend Circles (Medium)](https://leetcode.com/problems/friend-circles/description/) - -```html -Input: -[[1,1,0], - [1,1,0], - [0,0,1]] -Output: 2 -Explanation:The 0th and 1st students are direct friends, so they are in a friend circle. -The 2nd student himself is in a friend circle. So return 2. -``` - -```java -public int findCircleNum(int[][] M) { - int n = M.length; - int ret = 0; - boolean[] hasFind = new boolean[n]; - for(int i = 0; i < n; i++) { - if(!hasFind[i]) { - dfs(M, i, hasFind); - ret++; - } - } - return ret; -} - -private void dfs(int[][] M, int i, boolean[] hasFind) { - hasFind[i] = true; - int n = M.length; - for(int k = 0; k < n; k++) { - if(M[i][k] == 1 && !hasFind[k]) { - dfs(M, k, hasFind); - } - } -} -``` - -**矩阵中的连通区域数量** - -[Leetcode : 200. Number of Islands (Medium)](https://leetcode.com/problems/number-of-islands/description/) - -```html -11110 -11010 -11000 -00000 -Answer: 1 -``` - -```java -private int m, n; -private int[][] direction = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; - -public int numIslands(char[][] grid) { - if (grid == null || grid.length == 0) return 0; - m = grid.length; - n = grid[0].length; - int ret = 0; - for (int i = 0; i < m; i++) { - for (int j = 0; j < n; j++) { - if (grid[i][j] == '1') { - dfs(grid, i, j); - ret++; - } - } - } - return ret; -} - -private void dfs(char[][] grid, int i, int j) { - if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] == '0') return; - grid[i][j] = '0'; - for (int k = 0; k < direction.length; k++) { - dfs(grid, i + direction[k][0], j + direction[k][1]); - } -} -``` - -**输出二叉树中所有从根到叶子的路径** - -[Leetcode : 257. Binary Tree Paths (Easy)](https://leetcode.com/problems/binary-tree-paths/description/) - -```html - 1 -/ \ -2 3 -\ - 5 -``` -```html -["1->2->5", "1->3"] -``` - -```java -public List binaryTreePaths(TreeNode root) { - List ret = new ArrayList(); - if(root == null) return ret; - dfs(root, "", ret); - return ret; -} - -private void dfs(TreeNode root, String prefix, List ret){ - if(root == null) return; - if(root.left == null && root.right == null){ - ret.add(prefix + root.val); - return; - } - prefix += (root.val + "->"); - dfs(root.left, prefix, ret); - dfs(root.right, prefix, ret); -} -``` - -**填充封闭区域** - -[Leetcode : 130. Surrounded Regions (Medium)](https://leetcode.com/problems/surrounded-regions/description/) - -```html -For example, -X X X X -X O O X -X X O X -X O X X - -After running your function, the board should be: -X X X X -X X X X -X X X X -X O X X -``` - -题目描述:使得被 'X' 的 'O' 转换为 'X'。 - -先填充最外侧,剩下的就是里侧了。 - -```java -private int[][] direction = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; -private int m, n; - -public void solve(char[][] board) { - if (board == null || board.length == 0) return; - m = board.length; - n = board[0].length; - for (int i = 0; i < m; i++) { - dfs(board, i, 0); - dfs(board, i, n - 1); - } - for (int i = 0; i < n; i++) { - dfs(board, 0, i); - dfs(board, m - 1, i); - } - for (int i = 0; i < m; i++) { - for (int j = 0; j < n; j++) { - if (board[i][j] == 'T') board[i][j] = 'O'; - else if (board[i][j] == 'O') board[i][j] = 'X'; - } - } -} - -private void dfs(char[][] board, int r, int c) { - if (r < 0 || r >= m || c < 0 || c >= n || board[r][c] != 'O') return; - board[r][c] = 'T'; - for (int i = 0; i < direction.length; i++) { - dfs(board, r + direction[i][0], c + direction[i][1]); - } -} -``` - -**从两个方向都能到达的区域** - -[Leetcode : 417. Pacific Atlantic Water Flow (Medium)](https://leetcode.com/problems/pacific-atlantic-water-flow/description/) - -```html -Given the following 5x5 matrix: - - Pacific ~ ~ ~ ~ ~ - ~ 1 2 2 3 (5) * - ~ 3 2 3 (4) (4) * - ~ 2 4 (5) 3 1 * - ~ (6) (7) 1 4 5 * - ~ (5) 1 1 2 4 * - * * * * * Atlantic - -Return: -[[0, 4], [1, 3], [1, 4], [2, 2], [3, 0], [3, 1], [4, 0]] (positions with parentheses in above matrix). -``` - -题目描述:左边和上边是太平洋,右边和下边是大西洋,内部的数字代表海拔,海拔高的地方的水能够流到低的地方,求解水能够流到太平洋和大西洋的所有位置。 - -```java -private int m, n; -private int[][] matrix; -private int[][] direction = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; - -public List pacificAtlantic(int[][] matrix) { - List ret = new ArrayList<>(); - if (matrix == null || matrix.length == 0) return ret; - this.m = matrix.length; - this.n = matrix[0].length; - this.matrix = matrix; - boolean[][] canReachP = new boolean[m][n]; - boolean[][] canReachA = new boolean[m][n]; - for (int i = 0; i < m; i++) { - dfs(i, 0, canReachP); - dfs(i, n - 1, canReachA); - } - for (int i = 0; i < n; i++) { - dfs(0, i, canReachP); - dfs(m - 1, i, canReachA); - } - for (int i = 0; i < m; i++) { - for (int j = 0; j < n; j++) { - if (canReachP[i][j] && canReachA[i][j]) { - ret.add(new int[]{i, j}); - } - } - } - return ret; -} - -private void dfs(int r, int c, boolean[][] canReach) { - if(canReach[r][c]) return; - canReach[r][c] = true; - for (int i = 0; i < direction.length; i++) { - int nextR = direction[i][0] + r; - int nextC = direction[i][1] + c; - if (nextR < 0 || nextR >= m || nextC < 0 || nextC >= n - || matrix[r][c] > matrix[nextR][nextC]) continue; - dfs(nextR, nextC, canReach); - } -} -``` - -### Backtracking - -回溯是 DFS 的一种,它不是用在遍历图的节点上,而是用于求解 **排列组合** 问题,例如有 { 'a','b','c' } 三个字符,求解所有由这三个字符排列得到的字符串。 - -在程序实现时,回溯需要注意对元素进行标记的问题。使用递归实现的回溯,在访问一个新元素进入新的递归调用时,需要将新元素标记为已经访问,这样才能在继续递归调用时不用重复访问该元素;但是在递归返回时,需要将该元素标记为未访问,因为只需要保证在一个递归链中不同时访问一个元素,可以访问已经访问过但是不在当前递归链中的元素。 - -**数字键盘组合** - -[Leetcode : 17. Letter Combinations of a Phone Number (Medium)](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) - -

    - -```html -Input:Digit string "23" -Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. -``` - -```java -private static final String[] KEYS = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; - -public List letterCombinations(String digits) { - List ret = new ArrayList<>(); - if (digits != null && digits.length() != 0) { - combination("", digits, 0, ret); - } - return ret; -} - -private void combination(String prefix, String digits, int offset, List ret) { - if (offset == digits.length()) { - ret.add(prefix); - return; - } - String letters = KEYS[digits.charAt(offset) - '0']; - for (char c : letters.toCharArray()) { - combination(prefix + c, digits, offset + 1, ret); - } -} -``` - -**在矩阵中寻找字符串** - -[Leetcode : 79. Word Search (Medium)](https://leetcode.com/problems/word-search/description/) - -```html -For example, -Given board = -[ - ['A','B','C','E'], - ['S','F','C','S'], - ['A','D','E','E'] -] -word = "ABCCED", -> returns true, -word = "SEE", -> returns true, -word = "ABCB", -> returns false. -``` - -```java -private static int[][] shift = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; -private static boolean[][] visited; -private int m; -private int n; - -public boolean exist(char[][] board, String word) { - if (word == null || word.length() == 0) return true; - if (board == null || board.length == 0 || board[0].length == 0) return false; - m = board.length; - n = board[0].length; - visited = new boolean[m][n]; - for (int i = 0; i < m; i++) { - for (int j = 0; j < n; j++) { - if (dfs(board, word, 0, i, j)) return true; - } - } - return false; -} - -private boolean dfs(char[][] board, String word, int start, int r, int c) { - if (start == word.length()) { - return true; - } - if (r < 0 || r >= m || c < 0 || c >= n || board[r][c] != word.charAt(start) || visited[r][c] ) { - return false; - } - visited[r][c] = true; - for (int i = 0; i < shift.length; i++) { - int nextR = r + shift[i][0]; - int nextC = c + shift[i][1]; - if (dfs(board, word, start + 1, nextR, nextC)) return true; - } - visited[r][c] = false; - return false; -} -``` - -**IP 地址划分** - -[Leetcode : 93. Restore IP Addresses(Medium)](https://leetcode.com/problems/restore-ip-addresses/description/) - -```html -Given "25525511135", -return ["255.255.11.135", "255.255.111.35"]. -``` - -```java -private List ret; - -public List restoreIpAddresses(String s) { - ret = new ArrayList<>(); - doRestore(0, "", s); - return ret; -} - -private void doRestore(int k, String path, String s) { - if (k == 4 || s.length() == 0) { - if (k == 4 && s.length() == 0) { - ret.add(path); - } - return; - } - for (int i = 0; i < s.length() && i <= 2; i++) { - if (i != 0 && s.charAt(0) == '0') break; - String part = s.substring(0, i + 1); - if (Integer.valueOf(part) <= 255) { - doRestore(k + 1, path.length() != 0 ? path + "." + part : part, s.substring(i + 1)); - } - } -} -``` - -**排列** - -[Leetcode : 46. Permutations (Medium)](https://leetcode.com/problems/permutations/description/) - -```html -[1,2,3] have the following permutations: -[ - [1,2,3], - [1,3,2], - [2,1,3], - [2,3,1], - [3,1,2], - [3,2,1] -] -``` - -```java -public List> permute(int[] nums) { - List> ret = new ArrayList<>(); - List permuteList = new ArrayList<>(); - boolean[] visited = new boolean[nums.length]; - backtracking(permuteList, visited, nums, ret); - return ret; -} - -private void backtracking(List permuteList, boolean[] visited, int[] nums, List> ret){ - if(permuteList.size() == nums.length){ - ret.add(new ArrayList(permuteList)); - return; - } - - for(int i = 0; i < visited.length; i++){ - if(visited[i]) continue; - visited[i] = true; - permuteList.add(nums[i]); - backtracking(permuteList, visited, nums, ret); - permuteList.remove(permuteList.size() - 1); - visited[i] = false; - } -} -``` - -**含有相同元素求排列** - -[Leetcode : 47. Permutations II (Medium)](https://leetcode.com/problems/permutations-ii/description/) - -```html -[1,1,2] have the following unique permutations: -[[1,1,2], [1,2,1], [2,1,1]] -``` - -题目描述:数组元素可能含有相同的元素,进行排列时就有可能出现 重复的排列,要求重复的排列只返回一个。 - -在实现上,和 Permutations 不同的是要先排序,然后在添加一个元素时,判断这个元素是否等于前一个元素,如果等于,并且前一个元素还未访问,那么就跳过这个元素。 - -```java -public List> permuteUnique(int[] nums) { - List> ret = new ArrayList<>(); - List permuteList = new ArrayList<>(); - Arrays.sort(nums); - boolean[] visited = new boolean[nums.length]; - backtracking(permuteList, visited, nums, ret); - return ret; -} - -private void backtracking(List permuteList, boolean[] visited, int[] nums, List> ret) { - if (permuteList.size() == nums.length) { - ret.add(new ArrayList(permuteList)); - return; - } - - for (int i = 0; i < visited.length; i++) { - if (i != 0 && nums[i] == nums[i - 1] && !visited[i - 1]) continue; - if (visited[i]) continue; - visited[i] = true; - permuteList.add(nums[i]); - backtracking(permuteList, visited, nums, ret); - permuteList.remove(permuteList.size() - 1); - visited[i] = false; - } -} -``` - -**组合** - -[Leetcode : 77. Combinations (Medium)](https://leetcode.com/problems/combinations/description/) - -```html -If n = 4 and k = 2, a solution is: -[ - [2,4], - [3,4], - [2,3], - [1,2], - [1,3], - [1,4], -] -``` - -```java -public List> combine(int n, int k) { - List> ret = new ArrayList<>(); - List combineList = new ArrayList<>(); - backtracking(1, n, k, combineList, ret); - return ret; -} - -private void backtracking(int start, int n, int k, List combineList, List> ret){ - if(k == 0){ - ret.add(new ArrayList(combineList)); // 这里要重新构造一个 List - return; - } - - for(int i = start; i <= n - k + 1; i++) { // 剪枝 - combineList.add(i); // 把 i 标记为已访问 - backtracking(i + 1, n, k - 1, combineList, ret); - combineList.remove(combineList.size() - 1); // 把 i 标记为未访问 - } -} -``` - -**组合求和** - -[Leetcode : 39. Combination Sum (Medium)](https://leetcode.com/problems/combination-sum/description/) - -```html -given candidate set [2, 3, 6, 7] and target 7, -A solution set is: -[[7],[2, 2, 3]] -``` - -```java - private List> ret; - - public List> combinationSum(int[] candidates, int target) { - ret = new ArrayList<>(); - doCombination(candidates, target, 0, new ArrayList<>()); - return ret; - } - - private void doCombination(int[] candidates, int target, int start, List list) { - if (target == 0) { - ret.add(new ArrayList<>(list)); - return; - } - for (int i = start; i < candidates.length; i++) { - if (candidates[i] <= target) { - list.add(candidates[i]); - doCombination(candidates, target - candidates[i], i, list); - list.remove(list.size() - 1); - } - } - } -``` - -**含有相同元素的求组合求和** - -[Leetcode : 40. Combination Sum II (Medium)](https://leetcode.com/problems/combination-sum-ii/description/) - -```html -For example, given candidate set [10, 1, 2, 7, 6, 1, 5] and target 8, -A solution set is: -[ - [1, 7], - [1, 2, 5], - [2, 6], - [1, 1, 6] -] -``` - -```java -private List> ret; - -public List> combinationSum2(int[] candidates, int target) { - ret = new ArrayList<>(); - Arrays.sort(candidates); - doCombination(candidates, target, 0, new ArrayList<>(), new boolean[candidates.length]); - return ret; -} - -private void doCombination(int[] candidates, int target, int start, List list, boolean[] visited) { - if (target == 0) { - ret.add(new ArrayList<>(list)); - return; - } - for (int i = start; i < candidates.length; i++) { - if (i != 0 && candidates[i] == candidates[i - 1] && !visited[i - 1]) continue; - if (candidates[i] <= target) { - list.add(candidates[i]); - visited[i] = true; - doCombination(candidates, target - candidates[i], i + 1, list, visited); - visited[i] = false; - list.remove(list.size() - 1); - } - } -} -``` - -**子集** - -[Leetcode : 78. Subsets (Medium)](https://leetcode.com/problems/subsets/description/) - -题目描述:找出集合的所有子集,子集不能重复,[1, 2] 和 [2, 1] 这种子集算重复 - -```java -private List> ret; -private List subsetList; - -public List> subsets(int[] nums) { - ret = new ArrayList<>(); - subsetList = new ArrayList<>(); - for (int i = 0; i <= nums.length; i++) { - backtracking(0, i, nums); - } - return ret; -} - -private void backtracking(int startIdx, int size, int[] nums) { - if (subsetList.size() == size) { - ret.add(new ArrayList(subsetList)); - return; - } - - for (int i = startIdx; i < nums.length; i++) { - subsetList.add(nums[i]); - backtracking(i + 1, size, nums); - subsetList.remove(subsetList.size() - 1); - } -} -``` - -**含有相同元素求子集** - -[Leetcode : 90. Subsets II (Medium)](https://leetcode.com/problems/subsets-ii/description/) - -```html -For example, -If nums = [1,2,2], a solution is: - -[ - [2], - [1], - [1,2,2], - [2,2], - [1,2], - [] -] -``` - -```java -private List> ret; -private List subsetList; -private boolean[] visited; - -public List> subsetsWithDup(int[] nums) { - ret = new ArrayList<>(); - subsetList = new ArrayList<>(); - visited = new boolean[nums.length]; - Arrays.sort(nums); - for (int i = 0; i <= nums.length; i++) { - backtracking(0, i, nums); - } - return ret; -} - -private void backtracking(int startIdx, int size, int[] nums) { - if (subsetList.size() == size) { - ret.add(new ArrayList(subsetList)); - return; - } - - for (int i = startIdx; i < nums.length; i++) { - if (i != 0 && nums[i] == nums[i - 1] && !visited[i - 1]) continue; - subsetList.add(nums[i]); - visited[i] = true; - backtracking(i + 1, size, nums); - visited[i] = false; - subsetList.remove(subsetList.size() - 1); - } -} -``` - -**分割字符串使得每个部分都是回文数** - -[Leetcode : 131. Palindrome Partitioning (Medium)](https://leetcode.com/problems/palindrome-partitioning/description/) - -```html -For example, given s = "aab", -Return - -[ - ["aa","b"], - ["a","a","b"] -] -``` - -```java -private List> ret; - -public List> partition(String s) { - ret = new ArrayList<>(); - doPartion(new ArrayList<>(), s); - return ret; -} - -private void doPartion(List list, String s) { - if (s.length() == 0) { - ret.add(new ArrayList<>(list)); - return; - } - for (int i = 0; i < s.length(); i++) { - if (isPalindrome(s, 0, i)) { - list.add(s.substring(0, i + 1)); - doPartion(list, s.substring(i + 1)); - list.remove(list.size() - 1); - } - } -} - -private boolean isPalindrome(String s, int begin, int end) { - while (begin < end) { - if (s.charAt(begin++) != s.charAt(end--)) return false; - } - return true; -} -``` - -**数独** - -[Leetcode : 37. Sudoku Solver (Hard)](https://leetcode.com/problems/sudoku-solver/description/) - -

    - -```java -private boolean[][] rowsUsed = new boolean[9][10]; -private boolean[][] colsUsed = new boolean[9][10]; -private boolean[][] cubesUsed = new boolean[9][10]; -private char[][] board; - -public void solveSudoku(char[][] board) { - this.board = board; - for (int i = 0; i < 9; i++) { - for (int j = 0; j < 9; j++) { - if (board[i][j] == '.') continue; - int num = board[i][j] - '0'; - rowsUsed[i][num] = true; - colsUsed[j][num] = true; - cubesUsed[cubeNum(i, j)][num] = true; - } - } - for (int i = 0; i < 9; i++) { - for (int j = 0; j < 9; j++) { - backtracking(i, j); - } - } -} - -private boolean backtracking(int row, int col) { - while (row < 9 && board[row][col] != '.') { - row = col == 8 ? row + 1 : row; - col = col == 8 ? 0 : col + 1; - } - if (row == 9) { - return true; - } - for (int num = 1; num <= 9; num++) { - if (rowsUsed[row][num] || colsUsed[col][num] || cubesUsed[cubeNum(row, col)][num]) continue; - rowsUsed[row][num] = colsUsed[col][num] = cubesUsed[cubeNum(row, col)][num] = true; - board[row][col] = (char) (num + '0'); - if (backtracking(row, col)) return true; - board[row][col] = '.'; - rowsUsed[row][num] = colsUsed[col][num] = cubesUsed[cubeNum(row, col)][num] = false; - } - return false; -} - -private int cubeNum(int i, int j) { - int r = i / 3; - int c = j / 3; - return r * 3 + c; -} -``` - -**N 皇后** - -[Leetcode : 51. N-Queens (Hard)](https://leetcode.com/problems/n-queens/description/) - -

    - -题目描述:在 n\*n 的矩阵中摆放 n 个皇后,并且每个皇后不能在同一行,同一列,同一对角线上,要求解所有的 n 皇后解。 - -一行一行地摆放,在确定一行中的那个皇后应该摆在哪一列时,需要用三个标记数组来确定某一列是否合法,这三个标记数组分别为:列标记数组、45 度对角线标记数组和 135 度对角线标记数组。 - -45 度对角线标记数组的维度为 2\*n - 1,通过下图可以明确 (r,c) 的位置所在的数组下标为 r + c。 - -

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

    - -```java -private List> ret; -private char[][] nQueens; -private boolean[] colUsed; -private boolean[] diagonals45Used; -private boolean[] diagonals135Used; -private int n; - -public List> solveNQueens(int n) { - ret = new ArrayList<>(); - nQueens = new char[n][n]; - Arrays.fill(nQueens, '.'); - colUsed = new boolean[n]; - diagonals45Used = new boolean[2 * n - 1]; - diagonals135Used = new boolean[2 * n - 1]; - this.n = n; - backstracking(0); - return ret; -} - -private void backstracking(int row) { - if (row == n) { - List list = new ArrayList<>(); - for (char[] chars : nQueens) { - list.add(new String(chars)); - } - ret.add(list); - return; - } - - for (int col = 0; col < n; col++) { - int diagonals45Idx = row + col; - int diagonals135Idx = n - 1 - (row - col); - if (colUsed[col] || diagonals45Used[diagonals45Idx] || diagonals135Used[diagonals135Idx]) { - continue; - } - nQueens[row][col] = 'Q'; - colUsed[col] = diagonals45Used[diagonals45Idx] = diagonals135Used[diagonals135Idx] = true; - backstracking(row + 1); - colUsed[col] = diagonals45Used[diagonals45Idx] = diagonals135Used[diagonals135Idx] = false; - nQueens[row][col] = '.'; - } -} -``` - -## 分治 - -**给表达式加括号** - -[Leetcode : 241. Different Ways to Add Parentheses (Medium)](https://leetcode.com/problems/different-ways-to-add-parentheses/description/) - -```html -Input: "2-1-1". - -((2-1)-1) = 0 -(2-(1-1)) = 2 - -Output : [0, 2] -``` - -```java -public List diffWaysToCompute(String input) { - int n = input.length(); - List ret = new ArrayList<>(); - for (int i = 0; i < n; i++) { - char c = input.charAt(i); - if (c == '+' || c == '-' || c == '*') { - List left = diffWaysToCompute(input.substring(0, i)); - List right = diffWaysToCompute(input.substring(i + 1)); - for (int l : left) { - for (int r : right) { - switch (c) { - case '+': ret.add(l + r); break; - case '-': ret.add(l - r); break; - case '*': ret.add(l * r); break; - } - } - } - } - } - if (ret.size() == 0) ret.add(Integer.valueOf(input)); - return ret; -} -``` - -## 动态规划 - -递归和动态规划都是将原问题拆成多个子问题然后求解,他们之间最本质的区别是,动态规划保存了子问题的解。 - -### 分割整数 - -**分割整数的最大乘积** - -[Leetcode : 343. Integer Break (Medim)](https://leetcode.com/problems/integer-break/description/) - -题目描述:For example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 + 3 + 4). - -```java -public int integerBreak(int n) { - int[] dp = new int[n + 1]; - dp[1] = 1; - for(int i = 2; i <= n; i++) { - for(int j = 1; j <= i - 1; j++) { - dp[i] = Math.max(dp[i], Math.max(j * dp[i - j], j * (i - j))); - } - } - return dp[n]; -} -``` - -**按平方数来分割整数** - -[Leetcode : 279. Perfect Squares(Medium)](https://leetcode.com/problems/perfect-squares/description/) - -题目描述:For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9. - -```java -public int numSquares(int n) { - List squares = new ArrayList<>(); // 存储小于 n 的平方数 - int diff = 3; - while(square <= n) { - squares.add(square); - square += diff; - diff += 2; - } - int[] dp = new int[n + 1]; - for(int i = 1; i <= n; i++) { - int max = Integer.MAX_VALUE; - for(int s : squares) { - if(s > i) break; - max = Math.min(max, dp[i - s] + 1); - } - dp[i] = max; - } - return dp[n]; -} -``` - -**分割整数构成字母字符串** - -[Leetcode : 91. Decode Ways (Medium)](https://leetcode.com/problems/decode-ways/description/) - -题目描述:Given encoded message "12", it could be decoded as "AB" (1 2) or "L" (12). - -```java -public int numDecodings(String s) { - if(s == null || s.length() == 0) return 0; - int n = s.length(); - int[] dp = new int[n + 1]; - dp[0] = 1; - dp[1] = s.charAt(0) == '0' ? 0 : 1; - for(int i = 2; i <= n; i++) { - int one = Integer.valueOf(s.substring(i - 1, i)); - if(one != 0) dp[i] += dp[i - 1]; - if(s.charAt(i - 2) == '0') continue; - int two = Integer.valueOf(s.substring(i - 2, i)); - if(two <= 26) dp[i] += dp[i - 2]; - } - return dp[n]; -} -``` - -### 矩阵路径 - -**矩阵的总路径数** - -[Leetcode : 62. Unique Paths (Medium)](https://leetcode.com/problems/unique-paths/description/) - -题目描述:统计从矩阵左上角到右下角的路径总数,每次只能向左和向下移动。 - -```java -public int uniquePaths(int m, int n) { - int[] dp = new int[n]; - for (int i = 0; i < m; i++) { - for (int j = 0; j < n; j++) { - if(i == 0) dp[j] = 1; - else if(j != 0) dp[j] = dp[j] + dp[j - 1]; - } - } - return dp[n - 1]; -} -``` - -**矩阵的最小路径和** - -[Leetcode : 64. Minimum Path Sum (Medium)](https://leetcode.com/problems/minimum-path-sum/description/) - -题目描述:求从矩阵的左上角到右下角的最小路径和,每次只能向左和向下移动。 - -```java -public int minPathSum(int[][] grid) { - if(grid.length == 0 || grid[0].length == 0) return 0; - int m = grid.length, n = grid[0].length; - int[] dp = new int[n]; - for(int i = 0; i < m; i++) { - for(int j = 0; j < n; j++) { - if(j == 0) dp[0] = dp[0] + grid[i][0]; - else if(i == 0) dp[j] = dp[j - 1] + grid[0][j]; - else dp[j] = Math.min(dp[j - 1], dp[j]) + grid[i][j]; - } - } - return dp[n - 1]; -} -``` - -### 斐波那契数列 - -**爬楼梯** - -[Leetcode : 70. Climbing Stairs (Easy)](https://leetcode.com/problems/climbing-stairs/description/) - -题目描述:有 N 阶楼梯,每次可以上一阶或者两阶,求有多少种上楼梯的方法。 - -定义一个数组 dp 存储上楼梯的方法数(为了方便讨论,数组下标从 1 开始),dp[i] 表示走到第 i 个楼梯的方法数目。第 i 个楼梯可以从第 i-1 和 i-2 个楼梯再走一步到达,走到第 i 个楼梯的方法数为走到第 i-1 和第 i-2 个楼梯的方法数之和。 - -

    - -dp[N] 即为所求。 - -考虑到 dp[i] 只与 dp[i - 1] 和 dp[i - 2] 有关,因此可以只用两个变量来存储 dp[i - 1] 和 dp[i - 2] 即可,使得原来的 O(n) 空间复杂度优化为 O(1) 复杂度。 - -```java -public int climbStairs(int n) { - if(n == 1) return 1; - if(n == 2) return 2; - // 前一个楼梯、后一个楼梯 - int pre1 = 2, pre2 = 1; - for(int i = 2; i < n; i++){ - int cur = pre1 + pre2; - pre2 = pre1; - pre1 = cur; - } - return pre1; -} -``` - -**母牛生产** - -[程序员代码面试指南-P181](#) - -题目描述:假设农场中成熟的母牛每年都会生 1 头小母牛,并且永远不会死。第一年有 1 只小母牛,从第二年开始,母牛开始生小母牛。每只小母牛 3 年之后成熟又可以生小母牛。给定整数 N,求 N 年后牛的数量。 - -第 i 年成熟的牛的数量为: - -

    - -**强盗抢劫** - -[Leetcode : 198. House Robber (Easy)](https://leetcode.com/problems/house-robber/description/) - -题目描述:抢劫一排住户,但是不能抢邻近的住户,求最大抢劫量。 - -定义 dp 数组用来存储最大的抢劫量,其中 dp[i] 表示抢到第 i 个住户时的最大抢劫量。由于不能抢劫邻近住户,因此如果抢劫了第 i 个住户那么只能抢劫 i - 2 和 i - 3 的住户,所以 - -

    - -O(n) 空间复杂度实现方法: - -```java -public int rob(int[] nums) { - int n = nums.length; - if(n == 0) return 0; - if(n == 1) return nums[0]; - if(n == 2) return Math.max(nums[0], nums[1]); - int[] dp = new int[n]; - dp[0] = nums[0]; - dp[1] = nums[1]; - dp[2] = nums[0] + nums[2]; - for(int i = 3; i < n; i++){ - dp[i] = Math.max(dp[i -2], dp[i - 3]) + nums[i]; - } - return Math.max(dp[n - 1], dp[n - 2]); -} -``` - -O(1) 空间复杂度实现方法: - -```java -public int rob(int[] nums) { - int n = nums.length; - if(n == 0) return 0; - if(n == 1) return nums[0]; - if(n == 2) return Math.max(nums[0], nums[1]); - int pre3 = nums[0], pre2 = nums[1], pre1 = nums[2] + nums[0]; - for(int i = 3; i < n; i++){ - int cur = Math.max(pre2, pre3) + nums[i]; - pre3 = pre2; - pre2 = pre1; - pre1 = cur; - } - return Math.max(pre1, pre2); -} -``` - -**强盗在环形街区抢劫** - -[Leetcode : 213. House Robber II (Medium)](https://leetcode.com/problems/house-robber-ii/description/) - -```java -public int rob(int[] nums) { - if(nums == null || nums.length == 0) return 0; - int n = nums.length; - if(n == 1) return nums[0]; - return Math.max(rob(nums, 0, n - 2), rob(nums, 1, n - 1)); -} - -private int rob(int[] nums, int s, int e) { - int n = nums.length; - if(e - s == 0) return nums[s]; - if(e - s == 1) return Math.max(nums[s], nums[s + 1]); - int[] dp = new int[n]; - dp[s] = nums[s]; - dp[s + 1] = nums[s + 1]; - dp[s + 2] = nums[s] + nums[s + 2]; - for (int i = s + 3; i <= e; i++) { - dp[i] = Math.max(dp[i - 2], dp[i - 3]) + nums[i]; - } - return Math.max(dp[e], dp[e - 1]); -} -``` - -**信件错排** - -题目描述:有 N 个 信 和 信封,它们被打乱,求错误装信的方式数量。 - -定义一个数组 dp 存储错误方式数量,dp[i] 表示前 i 个信和信封的错误方式数量。假设第 i 个信装到第 j 个信封里面,而第 j 个信装到第 k 个信封里面。根据 i 和 k 是否相等,有两种情况: - -① i==k,交换 i 和 k 的信后,它们的信和信封在正确的位置,但是其余 i-2 封信有 dp[i-2] 种错误装信的方式。由于 j 有 i-1 种取值,因此共有 (i-1)\*dp[i-2] 种错误装信方式。 - -② i != k,交换 i 和 j 的信后,第 i 个信和信封在正确的位置,其余 i-1 封信有 dp[i-1] 种错误装信方式。由于 j 有 i-1 种取值,因此共有 (n-1)\*dp[i-1] 种错误装信方式。 - -综上所述,错误装信数量方式数量为: - -

    - -dp[N] 即为所求。 - -和上楼梯问题一样,dp[i] 只与 dp[i-1] 和 dp[i-2] 有关,因此也可以只用两个变量来存储 dp[i-1] 和 dp[i-2]。 - -### 最长递增子序列 - -已知一个序列 {S1, S2,...,Sn} ,取出若干数组成新的序列 {Si1, Si2,..., Sim},其中 i1、i2 ... im 保持递增,即新序列中各个数仍然保持原数列中的先后顺序,称新序列为原序列的一个 **子序列** 。 - -如果在子序列中,当下标 ix > iy 时,Six > Siy,称子序列为原序列的一个 **递增子序列** 。 - -定义一个数组 dp 存储最长递增子序列的长度,dp[n] 表示以 Sn 结尾的序列的最长递增子序列长度。对于一个递增子序列 {Si1, Si2,...,Sim},如果 im < n 并且 Sim < Sn ,此时 {Si1, Si2,..., Sim, Sn} 为一个递增子序列,递增子序列的长度增加 1。满足上述条件的递增子序列中,长度最长的那个递增子序列就是要找的,在长度最长的递增子序列上加上 Sn 就构成了以 Sn 为结尾的最长递增子序列。因此 dp[n] = max{ dp[i]+1 | Si < Sn && i < n} 。 - -因为在求 dp[n] 时可能无法找到一个满足条件的递增子序列,此时 {Sn} 就构成了递增子序列,因此需要对前面的求解方程做修改,令 dp[n] 最小为 1,即: - -

    - -对于一个长度为 N 的序列,最长子序列并不一定会以 SN 为结尾,因此 dp[N] 不是序列的最长递增子序列的长度,需要遍历 dp 数组找出最大值才是所要的结果,即 max{ dp[i] | 1 <= i <= N} 即为所求。 - -**最长递增子序列** - -[Leetcode : 300. Longest Increasing Subsequence (Medium)](https://leetcode.com/problems/longest-increasing-subsequence/description/) - -```java -public int lengthOfLIS(int[] nums) { - int n = nums.length; - int[] dp = new int[n]; - for(int i = 0; i < n; i++){ - int max = 1; - for(int j = 0; j < i; j++){ - if(nums[i] > nums[j]) max = Math.max(max, dp[j] + 1); - } - dp[i] = max; - } - int ret = 0; - for(int i = 0; i < n; i++){ - ret = Math.max(ret, dp[i]); - } - return ret; -} -``` - -以上解法的时间复杂度为 O(n2) ,可以使用二分查找使得时间复杂度降低为 O(nlogn)。定义一个 tails 数组,其中 tails[i] 存储长度为 i + 1 的最长递增子序列的最后一个元素,例如对于数组 [4,5,6,3],有 - -```html -len = 1 : [4], [5], [6], [3] => tails[0] = 3 -len = 2 : [4, 5], [5, 6] => tails[1] = 5 -len = 3 : [4, 5, 6] => tails[2] = 6 -``` - -对于一个元素 x,如果它大于 tails 数组所有的值,那么把它添加到 tails 后面;如果 tails[i-1] < x <= tails[i],那么更新 tails[i] = x 。 - -可以看出 tails 数组保持有序,因此在查找 Si 位于 tails 数组的位置时就可以使用二分查找。 - -```java -public int lengthOfLIS(int[] nums) { - int n = nums.length; - int[] tails = new int[n]; - int size = 0; - for(int i = 0; i < n; i++){ - int idx = binarySearch(tails, 0, size, nums[i]); - tails[idx] = nums[i]; - if(idx == size) size++; - } - return size; -} - -private int binarySearch(int[] nums, int sIdx, int eIdx, int key){ - while(sIdx < eIdx){ - int mIdx = sIdx + (eIdx - sIdx) / 2; - if(nums[mIdx] == key) return mIdx; - else if(nums[mIdx] > key) eIdx = mIdx; - else sIdx = mIdx + 1; - } - return sIdx; -} -``` - -**最长摆动子序列** - -[Leetcode : 376. Wiggle Subsequence (Medium)](https://leetcode.com/problems/wiggle-subsequence/description/) - -要求:使用 O(n) 时间复杂度求解。 - -使用两个状态 up 和 down。 - -```java -public int wiggleMaxLength(int[] nums) { - int len = nums.length; - if (len == 0) return 0; - int up = 1, down = 1; - for (int i = 1; i < len; i++) { - if (nums[i] > nums[i - 1]) up = down + 1; - else if (nums[i] < nums[i - 1]) down = up + 1; - } - return Math.max(up, down); -} -``` - -### 最长公共子系列 - -对于两个子序列 S1 和 S2,找出它们最长的公共子序列。 - -定义一个二维数组 dp 用来存储最长公共子序列的长度,其中 dp[i][j] 表示 S1 的前 i 个字符与 S2 的前 j 个字符最长公共子序列的长度。考虑 S1i 与 S2j 值是否相等,分为两种情况: - -① 当 S1i==S2j 时,那么就能在 S1 的前 i-1 个字符与 S2 的前 j-1 个字符最长公共子序列的基础上再加上 S1i 这个值,最长公共子序列长度加 1 ,即 dp[i][j] = dp[i-1][j-1] + 1。 - -② 当 S1i != S2j 时,此时最长公共子序列为 S1 的前 i-1 个字符和 S2 的前 j 个字符最长公共子序列,与 S1 的前 i 个字符和 S2 的前 j-1 个字符最长公共子序列,它们的最大者,即 dp[i][j] = max{ dp[i-1][j], dp[i][j-1] }。 - -综上,最长公共子系列的状态转移方程为: - -

    - -对于长度为 N 的序列 S1 和 长度为 M 的序列 S2,dp[N][M] 就是序列 S1 和序列 S2 的最长公共子序列长度。 - -与最长递增子序列相比,最长公共子序列有以下不同点: - -① 针对的是两个序列,求它们的最长公共子序列。 -② 在最长递增子序列中,dp[i] 表示以 Si 为结尾的最长递增子序列长度,子序列必须包含 Si ;在最长公共子序列中,dp[i][j] 表示 S1 中前 i 个字符与 S2 中前 j 个字符的最长公共子序列长度,不一定包含 S1i 和 S2j 。 -③ 由于 2 ,在求最终解时,最长公共子序列中 dp[N][M] 就是最终解,而最长递增子序列中 dp[N] 不是最终解,因为以 SN 为结尾的最长递增子序列不一定是整个序列最长递增子序列,需要遍历一遍 dp 数组找到最大者。 - -```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]); - } - } - return dp[n1][n2]; -} -``` - -### 0-1 背包 - -有一个容量为 N 的背包,要用这个背包装下物品的价值最大,这些物品有两个属性:体积 w 和价值 v。 - -定义一个二维数组 dp 存储最大价值,其中 dp[i][j] 表示体积不超过 j 的情况下,前 i 件物品能达到的最大价值。设第 i 件物品体积为 w,价值为 v,根据第 i 件物品是否添加到背包中,可以分两种情况讨论: - -① 第 i 件物品没添加到背包,总体积不超过 j 的前 i 件物品的最大价值就是总体积不超过 j 的前 i-1 件物品的最大价值,dp[i][j] = dp[i-1][j]。 -② 第 i 件物品添加到背包中,dp[i][j] = dp[i-1][j-w] + v。 - -第 i 件物品可添加也可以不添加,取决于哪种情况下最大价值更大。 - -综上,0-1 背包的状态转移方程为: - -

    - -```java -public int knapsack(int W, int N, int[] weights, int[] values) { - int[][] dp = new int[N][W]; - for (int i = W - 1; i >= 0; i--) { - dp[0][i] = i > weights[0] ? values[0] : 0; - } - for (int i = 1; i < N; i++) { - for (int j = W - 1; j >= weights[i]; j--) { - dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weights[i]] + values[i]); - } - for (int j = weights[i - 1] - 1; j >= 0; j--) { - dp[i][j] = dp[i - 1][j]; - } - } - return dp[N - 1][W - 1]; -} -``` - -**空间优化** - -在程序实现时可以对 0-1 背包做优化。观察状态转移方程可以知道,前 i 件物品的状态仅由前 i-1 件物品的状态有关,因此可以将 dp 定义为一维数组,其中 dp[j] 既可以表示 dp[i-1][j] 也可以表示 dp[i][j]。此时, - -

    - -因为 dp[j-w] 表示 dp[i-1][j-w],因此不能先求 dp[i][j-w] 防止将 dp[i-1][j-w] 覆盖。也就是说要先计算 dp[i][j] 再计算 dp[i][j-w],在程序实现时需要按倒序来循环求解。 - -**无法使用贪心算法的解释** - -0-1 背包问题无法使用贪心算法来求解,也就是说不能按照先添加性价比最高的物品来达到最优,这是因为这种方式可能造成背包空间的浪费,从而无法达到最优。考虑下面的物品和一个容量为 5 的背包,如果先添加物品 0 再添加物品 1,那么只能存放的价值为 16,浪费了大小为 2 的空间。最优的方式是存放物品 1 和物品 2,价值为 22. - -| id | w | v | v/w | -| --- | --- | --- | --- | -| 0 | 1 | 6 | 6 | -| 1 | 2 | 10 | 5 | -| 2 | 3 | 12 | 4 | - -**变种** - -完全背包:物品可以无限个,可以转换为 0-1 背包,令每种物品的体积和价值变为 1/2/4... 倍数,把它们都当成一个新物品,然后一种物品只能添加一次。 - -多重背包:物品数量有限制,同样可以转换为 0-1 背包。 - -多维费用背包:物品不仅有重量,还有体积,同时考虑这两种限制。 - -其它:物品之间相互约束或者依赖。 - -**划分数组为和相等的两部分** - -[Leetcode : 416. Partition Equal Subset Sum (Medium)](https://leetcode.com/problems/partition-equal-subset-sum/description/) - -可以看成一个背包大小为 sum/2 的 0-1 背包问题,但是也有不同的地方,这里没有价值属性,并且背包必须被填满。 - -以下实现使用了空间优化。 - -```java -public boolean canPartition(int[] nums) { - int sum = 0; - for (int num : nums) { - sum += num; - } - if (sum % 2 != 0) { - return false; - } - int W = sum / 2; - boolean[] dp = new boolean[W + 1]; - int n = nums.length; - for(int i = 0; i <= W; i++) { - if(nums[0] == i) dp[i] = true; - } - for(int i = 1; i < n; i++) { - for(int j = W; j >= nums[i]; j--) { - dp[j] = dp[j] || dp[j - nums[i]]; - } - } - - return dp[W]; -} -``` - -**字符串按单词列表分割** - -[Leetcode : 139. Word Break (Medium)](https://leetcode.com/problems/word-break/description/) - -```html -s = "leetcode", -dict = ["leet", "code"]. -Return true because "leetcode" can be segmented as "leet code". -``` - -```java -public boolean wordBreak(String s, List wordDict) { - int n = s.length(); - boolean[] dp = new boolean[n + 1]; - dp[0] = true; - for (int i = 1; i <= n; i++) { - for (String word : wordDict) { - if (word.length() <= i - && word.equals(s.substring(i - word.length(), i))) { - dp[i] = dp[i] || dp[i - word.length()]; - } - } - } - return dp[n]; -} -``` - -**改变一组数的正负号使得它们的和为一给定数** - -[Leetcode : 494. Target Sum (Medium)](https://leetcode.com/problems/target-sum/description/) - -```html -Input: nums is [1, 1, 1, 1, 1], S is 3. -Output: 5 -Explanation: - --1+1+1+1+1 = 3 -+1-1+1+1+1 = 3 -+1+1-1+1+1 = 3 -+1+1+1-1+1 = 3 -+1+1+1+1-1 = 3 - -There are 5 ways to assign symbols to make the sum of nums be target 3. -``` - -该问题可以转换为 subset sum 问题,从而使用 0-1 背包的方法来求解。可以将这组数看成两部分,P 和 N,其中 P 使用正号,N 使用负号,有以下推导: - -```html - sum(P) - sum(N) = target -sum(P) + sum(N) + sum(P) - sum(N) = target + sum(P) + sum(N) - 2 * sum(P) = target + sum(nums) -``` - -因此只要找到一个子集,令它们都取正号,并且和等于 (target + sum(nums))/2,就证明存在解。 - -```java -public int findTargetSumWays(int[] nums, int S) { - int sum = 0; - for (int num : nums) { - sum += num; - } - if (sum < S || (sum + S) % 2 == 1) { - return 0; - } - return subsetSum(nums, (sum + S) >>> 1); -} - -private int subsetSum(int[] nums, int targetSum) { - Arrays.sort(nums); - int[] dp = new int[targetSum + 1]; - dp[0] = 1; - for (int i = 0; i < nums.length; i++) { - int num = nums[i]; - for (int j = targetSum; j >= num; j--) { - dp[j] = dp[j] + dp[j - num]; - } - } - return dp[targetSum]; -} -``` - -**01 字符构成最多的字符串** - -[Leetcode : 474. Ones and Zeroes (Medium)](https://leetcode.com/problems/ones-and-zeroes/description/) - -```html -Input: Array = {"10", "0001", "111001", "1", "0"}, m = 5, n = 3 -Output: 4 - -Explanation: This are totally 4 strings can be formed by the using of 5 0s and 3 1s, which are “10,”0001”,”1”,”0” -``` - -这是一个多维费用的 0-1 背包问题,有两个背包大小,0 的数量和 1 的数量。 - -```java -public int findMaxForm(String[] strs, int m, int n) { - if (strs == null || strs.length == 0) return 0; - int l = strs.length; - int[][] dp = new int[m + 1][n + 1]; - for (int i = 0; i < l; i++) { - String s = strs[i]; - int ones = 0, zeros = 0; - for (char c : s.toCharArray()) { - if (c == '0') zeros++; - else if (c == '1') ones++; - } - for (int j = m; j >= zeros; j--) { - for (int k = n; k >= ones; k--) { - if (zeros <= j && ones <= k) { - dp[j][k] = Math.max(dp[j][k], dp[j - zeros][k - ones] + 1); - } - } - } - } - return dp[m][n]; -} -``` - -**找零钱** - -[Leetcode : 322. Coin Change (Medium)](https://leetcode.com/problems/coin-change/description/) - -题目描述:给一些面额的硬币,要求用这些硬币来组成给定面额的钱数,并且使得硬币数量最少。硬币可以重复使用。 - -这是一个完全背包问题,完全背包问题和 0-1 背包问题在实现上唯一的不同是,第二层循环是从 0 开始的,而不是从尾部开始。 - -```java -public int coinChange(int[] coins, int amount) { - int[] dp = new int[amount + 1]; - Arrays.fill(dp, amount + 1); - dp[0] = 0; - for (int i = 1; i <= amount; i++) { - for (int j = 0; j < coins.length; j++) { - if (coins[j] <= i) { - dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1); - } - } - } - return dp[amount] > amount ? -1 : dp[amount]; -} -``` - -**组合总和** - -[Leetcode : 377. Combination Sum IV (Medium)](https://leetcode.com/problems/combination-sum-iv/description/) - -```html -nums = [1, 2, 3] -target = 4 - -The possible combination ways are: -(1, 1, 1, 1) -(1, 1, 2) -(1, 2, 1) -(1, 3) -(2, 1, 1) -(2, 2) -(3, 1) - -Note that different sequences are counted as different combinations. - -Therefore the output is 7. -``` - -```java -public int combinationSum4(int[] nums, int target) { - int[] dp = new int[target + 1]; - dp[0] = 1; - for (int i = 1; i <= target; i++) { - for (int j = 0; j < nums.length; j++) { - if(nums[j] <= i) { - dp[i] += dp[i - nums[j]]; - } - } - } - return dp[target]; -} -``` - -**只能进行两次的股票交易** - -[Leetcode : 123. Best Time to Buy and Sell Stock III (Hard)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/description/) - -```java -public int maxProfit(int[] prices) { - int firstBuy = Integer.MIN_VALUE, firstSell = 0; - int secondBuy = Integer.MIN_VALUE, secondSell = 0; - for (int curPrice : prices) { - if (firstBuy < -curPrice) firstBuy = -curPrice; - if (firstSell < firstBuy + curPrice) firstSell = firstBuy + curPrice; - if (secondBuy < firstSell - curPrice) secondBuy = firstSell - curPrice; - if (secondSell < secondBuy + curPrice) secondSell = secondBuy + curPrice; - } - return secondSell; -} -``` - -**只能进行 k 次的股票交易** - -[Leetcode : 188. Best Time to Buy and Sell Stock IV (Hard)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iv/description/) - -```html -dp[i, j] = max(dp[i, j-1], prices[j] - prices[jj] + dp[i-1, jj]) { jj in range of [0, j-1] } = max(dp[i, j-1], prices[j] + max(dp[i-1, jj] - prices[jj])) -``` - -```java -public int maxProfit(int k, int[] prices) { - int n = prices.length; - if (k >= n/2) { - int maxPro = 0; - for (int i = 1; i < n; i++) { - if (prices[i] > prices[i-1]) - maxPro += prices[i] - prices[i-1]; - } - return maxPro; - } - int[][] dp = new int[k + 1][n]; - for (int i = 1; i <= k; i++) { - int localMax = dp[i - 1][0] - prices[0]; - for (int j = 1; j < n; j++) { - dp[i][j] = Math.max(dp[i][j - 1], prices[j] + localMax); - localMax = Math.max(localMax, dp[i - 1][j] - prices[j]); - } - } - return dp[k][n - 1]; -} -``` - -### 数组区间 - -**数组区间和** - -[Leetcode : 303. Range Sum Query - Immutable (Easy)](https://leetcode.com/problems/range-sum-query-immutable/description/) - -求区间 i \~ j 的和,可以转换为 sum[j] - sum[i-1],其中 sum[i] 为 0 \~ j 的和。 - -```java -class NumArray { - - int[] nums; - - public NumArray(int[] nums) { - for(int i = 1; i < nums.length; i++) - nums[i] += nums[i - 1]; - this.nums = nums; - } - - public int sumRange(int i, int j) { - return i == 0 ? nums[j] : nums[j] - nums[i - 1]; - } -} -``` - -**子数组最大的和** - -[Leetcode : 53. Maximum Subarray (Easy)](https://leetcode.com/problems/maximum-subarray/description/) - -令 sum[i] 为以 num[i] 为结尾的子数组最大的和,可以由 sum[i-1] 得到 sum[i] 的值,如果 sum[i-1] 小于 0,那么以 num[i] 为结尾的子数组不能包含前面的内容,因为加上前面的部分,那么和一定会比 num[i] 还小。 - -```java -public int maxSubArray(int[] nums) { - int n = nums.length; - int[] sum = new int[n]; - sum[0] = nums[0]; - int max = sum[0]; - for(int i = 1; i < n; i++){ - sum[i] = (sum[i-1] > 0 ? sum[i-1] : 0) + nums[i]; - max = Math.max(max, sum[i]); - } - return max; -} -``` - -空间复杂度可以优化成 O(1) 空间复杂度 - -```java -public int maxSubArray(int[] nums) { - int max = nums[0]; - int oldsum = nums[0]; - for (int i = 1; i < nums.length; i++) { - oldsum = (oldsum > 0 ? oldsum: 0) + nums[i]; - max = Math.max(max, oldsum); - } - return max; -} -``` - -**数组中等差递增子区间的个数** - -[Leetcode : 413. Arithmetic Slices (Medium)](https://leetcode.com/problems/arithmetic-slices/description/) - -```html -A = [1, 2, 3, 4] - -return: 3, for 3 arithmetic slices in A: [1, 2, 3], [2, 3, 4] and [1, 2, 3, 4] itself. -``` - -对于 (1,2,3,4),它有三种组成递增子区间的方式,而对于 (1,2,3,4,5),它组成递增子区间的方式除了 (1,2,3,4) 的三种外还多了一种,即 (1,2,3,4,5),因此 dp[i] = dp[i - 1] + 1。 - -```java -public int numberOfArithmeticSlices(int[] A) { - int n = A.length; - int[] dp = new int[n]; - for(int i = 2; i < n; i++) { - if(A[i] - A[i - 1] == A[i - 1] - A[i - 2]) { - dp[i] = dp[i - 1] + 1; - } - } - int ret = 0; - for(int cnt : dp) { - ret += cnt; - } - return ret; -} -``` - -### 字符串编辑 - -**删除两个字符串的字符使它们相等** - -[Leetcode : 583. Delete Operation for Two Strings (Medium)](https://leetcode.com/problems/delete-operation-for-two-strings/description/) - -可以转换为求两个字符串的最长公共子序列问题。 - -```java -public int minDistance(String word1, String word2) { - int m = word1.length(), n = word2.length(); - int[][] dp = new int[m + 1][n + 1]; - for (int i = 0; i <= m; i++) { - for (int j = 0; j <= n; j++) { - if (i == 0 || j == 0) continue; - dp[i][j] = word1.charAt(i - 1) == word2.charAt(j - 1) ? dp[i - 1][j - 1] + 1 - : Math.max(dp[i][j - 1], dp[i - 1][j]); - } - } - return m + n - 2 * dp[m][n]; -} -``` - -**修改一个字符串称为另一个字符串** // TODO - -[Leetcode : 72. Edit Distance (Hard)](https://leetcode.com/problems/edit-distance/description/) - -### 其它问题 - -**需要冷却期的股票交易** - -[Leetcode : 309. Best Time to Buy and Sell Stock with Cooldown(Medium)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/) - -题目描述:交易之后需要有一天的冷却时间。 - -

    - -```html -s0[i] = max(s0[i - 1], s2[i - 1]); // Stay at s0, or rest from s2 -s1[i] = max(s1[i - 1], s0[i - 1] - prices[i]); // Stay at s1, or buy from s0 -s2[i] = s1[i - 1] + prices[i]; // Only one way from s1 -``` - -```java -public int maxProfit(int[] prices) { - if (prices == null || prices.length == 0) return 0; - int n = prices.length; - int[] s0 = new int[n]; - int[] s1 = new int[n]; - int[] s2 = new int[n]; - s0[0] = 0; - s1[0] = -prices[0]; - s2[0] = Integer.MIN_VALUE; - for (int i = 1; i < n; i++) { - s0[i] = Math.max(s0[i - 1], s2[i - 1]); - s1[i] = Math.max(s1[i - 1], s0[i - 1] - prices[i]); - s2[i] = Math.max(s2[i - 1], s1[i - 1] + prices[i]); - } - return Math.max(s0[n - 1], s2[n - 1]); -} -``` - -**统计从 0 \~ n 每个数的二进制表示中 1 的个数** - -[Leetcode : 338. Counting Bits (Medium)](https://leetcode.com/problems/counting-bits/description/) - -对于数字 6(110),它可以看成是数字 2(10) 前面加上一个 1 ,因此 dp[i] = dp[i&(i-1)] + 1; - -```java - public int[] countBits(int num) { - int[] ret = new int[num + 1]; - for(int i = 1; i <= num; i++){ - ret[i] = ret[i&(i-1)] + 1; - } - return ret; - } -``` - -**一组整数对能够构成的最长链** - -[Leetcode : 646. Maximum Length of Pair Chain (Medium)](https://leetcode.com/problems/maximum-length-of-pair-chain/description/) - -对于 (a, b) 和 (c, d) ,如果 b < c,则它们可以构成一条链。 - -```java -public int findLongestChain(int[][] pairs) { - if(pairs == null || pairs.length == 0) { - return 0; - } - Arrays.sort(pairs, (a, b) -> (a[0] - b[0])); - int n = pairs.length; - int[] dp = new int[n]; - Arrays.fill(dp, 1); - for(int i = 0; i < n; i++) { - for(int j = 0; j < i; j++) { - if(pairs[i][0] > pairs[j][1]){ - dp[i] = Math.max(dp[i], dp[j] + 1); - } - } - } - - int ret = 0; - for(int num : dp) { - ret = Math.max(ret, num); - } - return ret; -} -``` - -**买入和售出股票最大的收益** - -[Leetcode : 121. Best Time to Buy and Sell Stock (Easy)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/) - -只进行一次交易。 - -只要记录前面的最小价格,将这个最小价格作为买入价格,然后将当前的价格作为售出价格,查看这个价格是否是当前的最大价格。 - -```java -public int maxProfit(int[] prices) { - int n = prices.length; - if(n == 0) return 0; - int soFarMin = prices[0]; - int max = 0; - for(int i = 1; i < n; i++){ - if(soFarMin > prices[i]) soFarMin = prices[i]; - else max = Math.max(max, prices[i] - soFarMin); - } - return max; -} -``` - -**复制粘贴字符** - -[Leetcode : 650. 2 Keys Keyboard (Medium)](https://leetcode.com/problems/2-keys-keyboard/description/) - -```java -public int minSteps(int n) { - int[] dp = new int[n + 1]; - for (int i = 2; i <= n; i++) { - dp[i] = i; - for (int j = i - 1; j >= 0; j--) { - if (i % j == 0) { - dp[i] = dp[j] + dp[i / j]; - break; - } - } - } - return dp[n]; -} -``` - -```java -public int minSteps(int n) { - if (n == 1) return 0; - for (int i = 2; i <= Math.sqrt(n); i++) { - if (n % i == 0) return i + minSteps(n / i); - } - return n; -} -``` - -## 数学 - -### 素数 - -**素数分解** - -每一个数都可以分解成素数的乘积,例如 84 = 22 \* 31 \* 50 \* 71 \* 110 \* 130 \* 170 \* … - -**整除** - -令 x = 2m0 \* 3m1 \* 5m2 \* 7m3 \* 11m4 \* … -令 y = 2n0 \* 3n1 \* 5n2 \* 7n3 \* 11n4 \* … - -如果 x 整除 y(y mod x == 0),则对于所有 i,mi <= ni。 - -x 和 y 的 **最大公约数** 为:gcd(x,y) = 2min(m0,n0) \* 3min(m1,n1) \* 5min(m2,n2) \* ... - -x 和 y 的 **最小公倍数** 为:lcm(x,y) = 2max(m0,n0) \* 3max(m1,n1) \* 5max(m2,n2) \* ... - -**生成素数序列** - -[Leetcode : 204. Count Primes (Easy)](https://leetcode.com/problems/count-primes/description/) - -埃拉托斯特尼筛法在每次找到一个素数时,将能被素数整除的数排除掉。 - -```java -public int countPrimes(int n) { - boolean[] notPrimes = new boolean[n + 1]; - int cnt = 0; - for(int i = 2; i < n; i++){ - if(notPrimes[i]) continue; - cnt++; - // 从 i * i 开始,因为如果 k < i,那么 k * i 在之前就已经被去除过了 - for(long j = (long) i * i; j < n; j += i){ - notPrimes[(int) j] = true; - } - } - return cnt; -} -``` - -### 最大公约数 - -```java -int gcd(int a, int b) { - if (b == 0) return a; - return gcd(b, a % b); -} -``` - -最大公倍数为两数的乘积除以最大公约数。 - -```java -int lcm(int a, int b){ - return a * b / gcd(a, b); -} -``` - -对于最大公约数问题,因为需要计算 a % b ,而这个操作是比较耗时的,可以使用 [编程之美:2.7]() 的方法,利用减法和移位操作来替换它。 - -对于 a 和 b 的最大公约数 f(a, b),有: - -1\. 如果 a 和 b 均为偶数,f(a, b) = 2\*f(a/2, b/2); -2\. 如果 a 是偶数 b 是奇数,f(a, b) = f(a/2, b); -3\. 如果 b 是偶数 a 是奇数,f(a, b) = f(a, b/2); -4\. 如果 a 和 b 均为奇数,f(a, b) = f(a, a-b); - -乘 2 和除 2 都可以转换为移位操作。 - -### 进制转换 - -Java 中 static String toString(int num, int radix) 可以将一个整数装换为 redix 进制表示的字符串。 - -**7 进制** - -[Leetcode : 504. Base 7 (Easy)](https://leetcode.com/problems/base-7/description/) - -```java -public String convertToBase7(int num) { - if (num < 0) { - return '-' + convertToBase7(-num); - } - if (num < 7) { - return num + ""; - } - return convertToBase7(num / 7) + num % 7; -} -``` - -**16 进制** - -[Leetcode : 405. Convert a Number to Hexadecimal (Easy)](https://leetcode.com/problems/convert-a-number-to-hexadecimal/description/) - -```java -public String toHex(int num) { - char[] map = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; - if(num == 0) return "0"; - String ret = ""; - while(num != 0){ - ret = map[(num & 0b1111)] + ret; - num >>>= 4; - } - return ret; -} -``` - -### 阶乘 - -**统计阶乘尾部有多少个 0** - -[Leetcode : 172. Factorial Trailing Zeroes (Easy)](https://leetcode.com/problems/factorial-trailing-zeroes/description/) - -尾部的 0 由 2 * 5 得来,2 的数量明显多于 5 的数量,因此只要统计有多少个 5 即可。 - -对于一个数 N,它所包含 5 的个数为:N/5 + N/52 + N/53 + ...,其中 N/5 表示不大于 N 的数中 5 的倍数贡献一个 5,N/52 表示不大于 N 的数中 52 的倍数再贡献一个 5 ...。 - -```java -public int trailingZeroes(int n) { - return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5); -} -``` - -如果统计的是 N! 的二进制表示中最低位 1 的位置,只要统计有多少个 2 即可,该题目出自 [编程之美:2.2](#) 。和求解有多少个 5 一样,2 的个数为 N/2 + N/22 + N/23 + ... - -### 字符串加法减法 - -**二进制加法** - -[Leetcode : 67. Add Binary (Easy)](https://leetcode.com/problems/add-binary/description/) - -```html -a = "11" -b = "1" -Return "100". -``` - -```java -public String addBinary(String a, String b) { - int i = a.length() - 1, j = b.length() - 1, carry = 0; - String str = ""; - while(i >= 0 || j >= 0){ - if(i >= 0 && a.charAt(i--) == '1') carry++; - if(j >= 0 && b.charAt(j--) == '1') carry++; - str = (carry % 2) + str; - carry /= 2; - } - if(carry == 1) str = "1" + str; - return str; -} -``` - -**字符串加法** - -[Leetcode : 415. Add Strings (Easy)](https://leetcode.com/problems/add-strings/description/) - -字符串的值为非负整数 - -```java -public String addStrings(String num1, String num2) { - StringBuilder sb = new StringBuilder(); - int carry = 0; - for(int i = num1.length() - 1, j = num2.length() - 1; i >= 0 || j >= 0 || carry == 1; i--, j--){ - int x = i < 0 ? 0 : num1.charAt(i) - '0'; - int y = j < 0 ? 0 : num2.charAt(j) - '0'; - sb.append((x + y + carry) % 10); - carry = (x + y + carry) / 10; - } - return sb.reverse().toString(); -} -``` - -### 相遇问题 - -**改变数组元素使所有的数组元素都相等** - -[Leetcode : 462. Minimum Moves to Equal Array Elements II (Medium)](https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/description/) - -```html -Input: -[1,2,3] - -Output: -2 - -Explanation: -Only two moves are needed (remember each move increments or decrements one element): - -[1,2,3] => [2,2,3] => [2,2,2] -``` - -每次可以对一个数组元素加一或者减一,求最小的改变次数。 - -这是个典型的相遇问题,移动距离最小的方式是所有元素都移动到中位数。理由如下: - -设 m 为中位数。a 和 b 是 m 两边的两个元素,且 b > a。要使 a 和 b 相等,它们总共移动的次数为 b - a,这个值等于 (b - m) + (m - a),也就是把这两个数移动到中位数的移动次数。 - -设数组长度为 N,则可以找到 N/2 对 a 和 b 的组合,使它们都移动到 m 的位置。 - -**解法 1** - -先排序,时间复杂度:O(NlgN) - -```java -public int minMoves2(int[] nums) { - Arrays.sort(nums); - int ret = 0; - int l = 0, h = nums.length - 1; - while(l <= h) { - ret += nums[h] - nums[l]; - l++; - h--; - } - return ret; -} -``` - -**解法 2** - -使用快速排序找到中位数,时间复杂度 O(N) - -```java -public int minMoves2(int[] nums) { - int ret = 0; - int n = nums.length; - int median = quickSelect(nums, 0, n - 1, n / 2 + 1); - for(int num : nums) ret += Math.abs(num - median); - return ret; -} - -private int quickSelect(int[] nums, int start, int end, int k) { - int l = start, r = end, privot = nums[(l + r) / 2]; - while(l <= r) { - while(nums[l] < privot) l++; - while(nums[r] > privot) r--; - if(l >= r) break; - swap(nums, l, r); - l++; r--; - } - int left = l - start + 1; - if(left > k) return quickSelect(nums, start, l - 1, k); - if(left == k && l == r) return nums[l]; - int right = r - start + 1; - return quickSelect(nums, r + 1, end, k - right); -} - -private void swap(int[] nums, int i, int j) { - int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; -} -``` - -### 多数投票问题 - -**数组中出现次数多于 n / 2 的元素** - -[Leetcode : 169. Majority Element (Easy)](https://leetcode.com/problems/majority-element/description/) - -先对数组排序,最中间那个数出现次数一定多于 n / 2 - -```java -public int majorityElement(int[] nums) { - Arrays.sort(nums); - return nums[nums.length / 2]; -} -``` - -可以利用 Boyer-Moore Majority Vote Algorithm 来解决这个问题,使得时间复杂度为 O(n)。可以这么理解该算法:使用 cnt 来统计一个元素出现的次数,当遍历到的元素和统计元素不想等时,令 cnt--。如果前面查找了 i 个元素,且 cnt == 0 ,说明前 i 个元素没有 majority,或者有 majority,但是出现的次数少于 i / 2 ,因为如果多于 i / 2 的话 cnt 就一定不会为 0 。此时剩下的 n - i 个元素中,majority 的数目依然多于 (n - i) / 2,因此继续查找就能找出 majority。 - -```java -public int majorityElement(int[] nums) { - int cnt = 0, majority = 0; - for(int i = 0; i < nums.length; i++){ - if(cnt == 0) { - majority = nums[i]; - cnt++; - } - else if(majority == nums[i]) cnt++; - else cnt--; - } - return majority; -} -``` - -### 其它 - -**平方数** - -[Leetcode : 367. Valid Perfect Square (Easy)](https://leetcode.com/problems/valid-perfect-square/description/) - -```html -Input: 16 -Returns: True -``` - -平方序列:1,4,9,16,.. -间隔:3,5,7,... - -间隔为等差数列,使用这个特性可以得到从 1 开始的平方序列。 - -```java -public boolean isPerfectSquare(int num) { - int subNum = 1; - while (num > 0) { - num -= subNum; - subNum += 2; - } - return num == 0; -} -``` - -**3 的 n 次方** - -[Leetcode : 326. Power of Three (Easy)](https://leetcode.com/problems/power-of-three/description/) - -```java -public boolean isPowerOfThree(int n) { - return n > 0 && (1162261467 % n == 0); -} -``` - -**找出数组中的乘积最大的三个数** - -[Leetcode : 628. Maximum Product of Three Numbers (Easy)](https://leetcode.com/problems/maximum-product-of-three-numbers/description/) - -```html -Input: [1,2,3,4] -Output: 24 -``` - -```java -public int maximumProduct(int[] nums) { - int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE, min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE; - for (int n : nums) { - if (n > max1) { - max3 = max2; - max2 = max1; - max1 = n; - } else if (n > max2) { - max3 = max2; - max2 = n; - } else if (n > max3) { - max3 = n; - } - - if (n < min1) { - min2 = min1; - min1 = n; - } else if (n < min2) { - min2 = n; - } - } - return Math.max(max1*max2*max3, max1*min1*min2); -} -``` - -**乘积数组** - -[Leetcode : 238. Product of Array Except Self (Medium)](https://leetcode.com/problems/product-of-array-except-self/description/) - -```html -For example, given [1,2,3,4], return [24,12,8,6]. -``` - -题目描述:给定一个数组,创建一个新数组,新数组的每个元素为原始数组中除了该位置上的元素之外所有元素的乘积。 - -题目要求:时间复杂度为 O(n),并且不能使用除法。 - -```java -public int[] productExceptSelf(int[] nums) { - int n = nums.length; - int[] ret = new int[n]; - ret[0] = 1; - for(int i = 1; i < n; i++) { - ret[i] = ret[i - 1] * nums[i - 1]; - } - int right = 1; - for(int i = n - 1; i >= 0; i--) { - ret[i] *= right; - right *= nums[i]; - } - return ret; -} -``` - -# 数据结构相关 - -## 栈和队列 - -**用栈实现队列** - -[Leetcode : 232. Implement Queue using Stacks (Easy)](https://leetcode.com/problems/implement-queue-using-stacks/description/) - -一个栈实现: - -```java -class MyQueue { - private Stack st = new Stack(); - - public void push(int x) { - Stack temp = new Stack(); - while(!st.isEmpty()){ - temp.push(st.pop()); - } - st.push(x); - while(!temp.isEmpty()){ - st.push(temp.pop()); - } - } - - public int pop() { - return st.pop(); - } - - public int peek() { - return st.peek(); - } - - public boolean empty() { - return st.isEmpty(); - } -} -``` - -两个栈实现: - -```java -class MyQueue { - private Stack in = new Stack(); - private Stack out = new Stack(); - - public void push(int x) { - in.push(x); - } - - public int pop() { - in2out(); - return out.pop(); - } - - public int peek() { - in2out(); - return out.peek(); - } - - private void in2out(){ - if(out.isEmpty()){ - while(!in.isEmpty()){ - out.push(in.pop()); - } - } - } - - public boolean empty() { - return in.isEmpty() && out.isEmpty(); - } -} -``` - -**用队列实现栈** - -[Leetcode : 225. Implement Stack using Queues (Easy)](https://leetcode.com/problems/implement-stack-using-queues/description/) - -```java -class MyStack { - - private Queue queue; - - public MyStack() { - queue = new LinkedList<>(); - } - - public void push(int x) { - queue.add(x); - for(int i = 1; i < queue.size(); i++){ // 翻转 - queue.add(queue.remove()); - } - } - - public int pop() { - return queue.remove(); - } - - public int top() { - return queue.peek(); - } - - public boolean empty() { - return queue.isEmpty(); - } -} -``` - -**最小值栈** - -[Leetcode : 155. Min Stack (Easy)](https://leetcode.com/problems/min-stack/description/) - -用两个栈实现,一个存储数据,一个存储最小值。 - -```java -class MinStack { - - private Stack dataStack; - private Stack minStack; - private int min; - - public MinStack() { - dataStack = new Stack<>(); - minStack = new Stack<>(); - min = Integer.MAX_VALUE; - } - - public void push(int x) { - dataStack.add(x); - if(x < min) { - min = x; - } - minStack.add(min); - } - - public void pop() { - dataStack.pop(); - minStack.pop(); - if(!minStack.isEmpty()) { - min = minStack.peek(); - } else{ - min = Integer.MAX_VALUE; - } - } - - public int top() { - return dataStack.peek(); - } - - public int getMin() { - return min; - } -} -``` - -对于实现最小值队列问题,可以先将队列使用栈来实现,然后就将问题转换为最小值栈,这个问题出现在 编程之美:3.7。 - -**用栈实现括号匹配** - -[Leetcode : 20. Valid Parentheses (Easy)](https://leetcode.com/problems/valid-parentheses/description/) - -```html -"()[]{}" - -Output : true -``` - -```java -public boolean isValid(String s) { - Stack stack = new Stack<>(); - for(int i = 0; i < s.length(); i++){ - char c = s.charAt(i); - if(c == '(' || c == '{' || c == '[') stack.push(c); - else{ - if(stack.isEmpty()) return false; - char cStack = stack.pop(); - if(c == ')' && cStack != '(' || - c == ']' && cStack != '[' || - c == '}' && cStack != '{' ) { - return false; - } - } - } - return stack.isEmpty(); -} -``` - -**数组中元素与下一个比它大的元素之间的距离** - -```html -Input: [73, 74, 75, 71, 69, 72, 76, 73] -Output: [1, 1, 4, 2, 1, 1, 0, 0] -``` - -[Leetcode : 739. Daily Temperatures (Medium)](https://leetcode.com/problems/daily-temperatures/description/) - -在遍历数组时用 Stack 把数组中的数存起来,如果当前遍历的数比栈顶元素来的大,说明栈顶元素的下一个比它大的数就是当前元素。 - -```java -public int[] dailyTemperatures(int[] temperatures) { - int n = temperatures.length; - int[] ret = new int[n]; - Stack stack = new Stack<>(); - for(int i = 0; i < n; i++) { - while(!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) { - int idx = stack.pop(); - ret[idx] = i - idx; - } - stack.add(i); - } - return ret; -} -``` - -**在另一个数组中比当前元素大的下一个元素** - -[Leetcode : 496. Next Greater Element I (Easy)](https://leetcode.com/problems/next-greater-element-i/description/) - -```html -Input: nums1 = [4,1,2], nums2 = [1,3,4,2]. -Output: [-1,3,-1] -``` - -```java -public int[] nextGreaterElement(int[] nums1, int[] nums2) { - Map map = new HashMap<>(); - Stack stack = new Stack<>(); - for(int num : nums2){ - while(!stack.isEmpty() && num > stack.peek()){ - map.put(stack.pop(), num); - } - stack.add(num); - } - int[] ret = new int[nums1.length]; - for(int i = 0; i < nums1.length; i++){ - if(map.containsKey(nums1[i])) ret[i] = map.get(nums1[i]); - else ret[i] = -1; - } - return ret; -} -``` - -**循环数组中比当前元素大的下一个元素** - -[Leetcode : 503. Next Greater Element II (Medium)](https://leetcode.com/problems/next-greater-element-ii/description/) - -```java -public int[] nextGreaterElements(int[] nums) { - int n = nums.length, next[] = new int[n]; - Arrays.fill(next, -1); - Stack stack = new Stack<>(); - for (int i = 0; i < n * 2; i++) { - int num = nums[i % n]; - while (!stack.isEmpty() && nums[stack.peek()] < num) - next[stack.pop()] = num; - if (i < n) stack.push(i); - } - return next; -} -``` - -## 哈希表 - -利用 Hash Table 可以快速查找一个元素是否存在等问题,但是需要一定的空间来存储。在优先考虑时间复杂度的情况下,可以利用 Hash Table 这种空间换取时间的做法。 - -Java 中的 **HashSet** 用于存储一个集合,并以 O(1) 的时间复杂度查找元素是否在集合中。 - -如果元素有穷,并且范围不大,那么可以用一个布尔数组来存储一个元素是否存在,例如对于只有小写字符的元素,就可以用一个长度为 26 的布尔数组来存储一个字符集合,使得空间复杂度降低为 O(1)。 - -Java 中的 **HashMap** 主要用于映射关系,从而把两个元素联系起来。 - -在对一个内容进行压缩或者其它转换时,利用 HashMap 可以把原始内容和转换后的内容联系起来。例如在一个简化 url 的系统中([Leetcdoe : 535. Encode and Decode TinyURL (Medium)](https://leetcode.com/problems/encode-and-decode-tinyurl/description/)),利用 HashMap 就可以存储精简后的 url 到原始 url 的映射,使得不仅可以显示简化的 url,也可以根据简化的 url 得到原始 url 从而定位到正确的资源。 - -HashMap 也可以用来对元素进行计数统计,此时键为元素,值为计数。和 HashSet 类似,如果元素有穷并且范围不大,可以用整型数组来进行统计。 - -**数组中的两个数和为给定值** - -[Leetcode : 1. Two Sum (Easy)](https://leetcode.com/problems/two-sum/description/) - -可以先对数组进行排序,然后使用双指针方法或者二分查找方法。这样做的时间复杂度为 O(nlgn),空间复杂度为 O(1)。 - -用 HashMap 存储数组元素和索引的映射,在访问到 nums[i] 时,判断 HashMap 中是否存在 target - nums[i] ,如果存在说明 target - nums[i] 所在的索引和 i 就是要找的两个数。该方法的时间复杂度为 O(n),空间复杂度为 O(n),使用空间来换取时间。 - -```java -public int[] twoSum(int[] nums, int target) { - HashMap map = new HashMap<>(); - for(int i = 0; i < nums.length; i++){ - if(map.containsKey(target - nums[i])) return new int[]{map.get(target - nums[i]), i}; - else map.put(nums[i], i); - } - return null; -} -``` - -**最长和谐序列** - -[Leetcode : 594. Longest Harmonious Subsequence (Easy)](https://leetcode.com/problems/longest-harmonious-subsequence/description/) - -```html -Input: [1,3,2,2,5,2,3,7] -Output: 5 -Explanation: The longest harmonious subsequence is [3,2,2,2,3]. -``` - -和谐序列中最大数和最小数只差正好为 1。 - -```java -public int findLHS(int[] nums) { - Map map = new HashMap<>(); - for (long num : nums) { - map.put(num, map.getOrDefault(num, 0) + 1); - } - int result = 0; - for (long key : map.keySet()) { - if (map.containsKey(key + 1)) { - result = Math.max(result, map.get(key + 1) + map.get(key)); - } - } - return result; -} -``` - -## 字符串 - -**两个字符串包含的字符是否完全相同** - -[Leetcode : 242. Valid Anagram (Easy)](https://leetcode.com/problems/valid-anagram/description/) - -```html -s = "anagram", t = "nagaram", return true. -s = "rat", t = "car", return false. -``` - -字符串只包含小写字符,总共有 26 个小写字符。可以用 Hash Table 来映射字符与出现次数,因为键值范围很小,因此可以使用长度为 26 的整型数组对字符串出现的字符进行统计,比较两个字符串出现的字符数量是否相同。 - -```java -public boolean isAnagram(String s, String t) { - int[] cnts = new int[26]; - for(int i = 0; i < s.length(); i++) cnts[s.charAt(i) - 'a'] ++; - for(int i = 0; i < t.length(); i++) cnts[t.charAt(i) - 'a'] --; - for(int i = 0; i < 26; i++) if(cnts[i] != 0) return false; - return true; -} -``` - -**字符串同构** - -[Leetcode : 205. Isomorphic Strings (Easy)](https://leetcode.com/problems/isomorphic-strings/description/) - -```html -Given "egg", "add", return true. -Given "foo", "bar", return false. -Given "paper", "title", return true. -``` - -记录一个字符上次出现的位置,如果两个字符串中某个字符上次出现的位置一样,那么就属于同构。 - -```java -public boolean isIsomorphic(String s, String t) { - int[] m1 = new int[256]; - int[] m2 = new int[256]; - for(int i = 0; i < s.length(); i++){ - if(m1[s.charAt(i)] != m2[t.charAt(i)]) { - return false; - } - m1[s.charAt(i)] = i + 1; - m2[t.charAt(i)] = i + 1; - } - return true; -} -``` - -**计算一组字符集合可以组成的回文字符串的最大长度** - -[Leetcode : 409. Longest Palindrome (Easy)](https://leetcode.com/problems/longest-palindrome/description/) - -```html -Input : "abccccdd" -Output : 7 -Explanation : One longest palindrome that can be built is "dccaccd", whose length is 7. -``` - -使用长度为 128 的整型数组来统计每个字符出现的个数,每个字符有偶数个可以用来构成回文字符串。因为回文字符串最中间的那个字符可以单独出现,所以如果有单独的字符就把它放到最中间。 - -```java -public int longestPalindrome(String s) { - int[] cnts = new int[128]; // ascii 码总共 128 个 - for(char c : s.toCharArray()) cnts[c]++; - int ret = 0; - for(int cnt : cnts) ret += (cnt / 2) * 2; - if(ret < s.length()) ret++; // 这个条件下 s 中一定有单个未使用的字符存在,可以把这个字符放到回文的最中间 - return ret; -} -``` - -**判断一个整数是否是回文数** - -[Leetcode : 9. Palindrome Number (Easy)](https://leetcode.com/problems/palindrome-number/description/) - -要求不能使用额外空间,也就不能将整数转换为字符串进行判断。 - -将整数分成左右两部分,右边那部分需要转置,然后判断这两部分是否相等。 - -```java -public boolean isPalindrome(int x) { - if(x == 0) return true; - if(x < 0) return false; - if(x % 10 == 0) return false; - int right = 0; - while(x > right){ - right = right * 10 + x % 10; - x /= 10; - } - return x == right || x == right / 10; -} -``` - -**回文子字符串** - -[Leetcode : 647. Palindromic Substrings (Medium)](https://leetcode.com/problems/palindromic-substrings/description/) - -```html -Input: "aaa" -Output: 6 -Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa". -``` - -解决方案是从字符串的某一位开始,尝试着去扩展子字符串。 - -```java -private int cnt = 0; -public int countSubstrings(String s) { - for(int i = 0; i < s.length(); i++) { - extendSubstrings(s, i, i); // 奇数长度 - extendSubstrings(s, i, i + 1); // 偶数长度 - } - return cnt; -} - -private void extendSubstrings(String s, int start, int end) { - while(start >= 0 && end < s.length() && s.charAt(start) == s.charAt(end)) { - start--; - end++; - cnt++; - } -} -``` - -**统计二进制字符串中连续 1 和连续 0 数量相同的子字符串个数** - -[Leetcode : 696. Count Binary Substrings (Easy)](https://leetcode.com/problems/count-binary-substrings/description/) - -```html -Input: "00110011" -Output: 6 -Explanation: There are 6 substrings that have equal number of consecutive 1's and 0's: "0011", "01", "1100", "10", "0011", and "01". -``` - -```java -public int countBinarySubstrings(String s) { - int preLen = 0, curLen = 1, ret = 0; - for(int i = 1; i < s.length(); i++){ - if(s.charAt(i) == s.charAt(i-1)) curLen++; - else{ - preLen = curLen; - curLen = 1; - } - - if(preLen >= curLen) ret++; - } - return ret; -} -``` - -**字符串循环移位包含** - -[ 编程之美:3.1](#) - -```html -s1 = AABCD, s2 = CDAA -Return : true -``` - -给定两个字符串 s1 和 s2 ,要求判定 s2 是否能够被 s1 做循环移位得到的字符串包含。 - -s1 进行循环移位的结果是 s1s1 的子字符串,因此只要判断 s2 是否是 s1s1 的子字符串即可。 - -**字符串循环移位** - -[ 编程之美:2.17](#) - -将字符串向右循环移动 k 位。 - -例如 abcd123 向右移动 3 位 得到 123abcd - -将 abcd123 中的 abcd 和 123 单独逆序,得到 dcba321,然后对整个字符串进行逆序,得到 123abcd。 - -**字符串中单词的翻转** - -[程序员代码面试指南](#) - -例如将 "I am a student" 翻转成 "student a am I" - -将每个单词逆序,然后将整个字符串逆序。 - -## 数组与矩阵 - -**把数组中的 0 移到末尾** - -[Leetcode : 283. Move Zeroes (Easy)](https://leetcode.com/problems/move-zeroes/description/) - -```html -For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0]. -``` - -```java -public void moveZeroes(int[] nums) { - int n = nums.length; - int idx = 0; - for(int i = 0; i < n; i++){ - if(nums[i] != 0) nums[idx++] = nums[i]; - } - while(idx < n){ - nums[idx++] = 0; - } -} -``` - -### 1-n 分布 - -**一个数组元素在 [1, n] 之间,其中一个数被替换为另一个数,找出丢失的数和重复的数** - -[Leetcode : 645. Set Mismatch (Easy)](https://leetcode.com/problems/set-mismatch/description/) - -```html -Input: nums = [1,2,2,4] -Output: [2,3] -``` - -最直接的方法是先对数组进行排序,这种方法时间复杂度为 O(nlogn)。本题可以以 O(n) 的时间复杂度、O(1) 空间复杂度来求解。 - -主要思想是让通过交换数组元素,使得数组上的元素在正确的位置上。 - -遍历数组,如果第 i 位上的元素不是 i + 1 ,那么就交换第 i 位 和 nums[i] - 1 位上的元素,使得 num[i] - 1 的元素为 nums[i] ,也就是该位的元素是正确的。交换操作需要循环进行,因为一次交换没办法使得第 i 位上的元素是正确的。但是要交换的两个元素可能就是重复元素,那么循环就可能永远进行下去,终止循环的方法是加上 nums[i] != nums[nums[i] - 1 条件。 - -类似题目: - -- [Leetcode :448. Find All Numbers Disappeared in an Array (Easy)](https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/description/),寻找所有丢失的元素 -- [Leetcode : 442. Find All Duplicates in an Array (Medium)](https://leetcode.com/problems/find-all-duplicates-in-an-array/description/),寻找所有重复的元素。 - -```java -public int[] findErrorNums(int[] nums) { - for(int i = 0; i < nums.length; i++){ - while(nums[i] != i + 1 && nums[i] != nums[nums[i] - 1]) { - swap(nums, i, nums[i] - 1); - } - } - - for(int i = 0; i < nums.length; i++){ - if(i + 1 != nums[i]) { - return new int[]{nums[i], i + 1}; - } - } - - return null; -} - -private void swap(int[] nums, int i, int j){ - int tmp = nums[i]; - nums[i] = nums[j]; - nums[j] = tmp; -} -``` - -**找出数组中重复的数,数组值在 [0, n-1] 之间** - -[Leetcode : 287. Find the Duplicate Number (Medium)](https://leetcode.com/problems/find-the-duplicate-number/description/) - -二分查找解法: - -```java -public int findDuplicate(int[] nums) { - int l = 1, h = nums.length - 1; - while (l <= h) { - int mid = l + (h - l) / 2; - int cnt = 0; - for (int i = 0; i < nums.length; i++) { - if (nums[i] <= mid) cnt++; - } - if (cnt > mid) h = mid - 1; - else l = mid + 1; - } - return l; -} -``` - -双指针解法,类似于有环链表中找出环的入口: - -```java -public int findDuplicate(int[] nums) { - int slow = nums[0], fast = nums[nums[0]]; - while (slow != fast) { - slow = nums[slow]; - fast = nums[nums[fast]]; - } - - fast = 0; - while (slow != fast) { - slow = nums[slow]; - fast = nums[fast]; - } - return slow; -} -``` - -### 有序矩阵 - -有序矩阵指的是行和列分别有序的矩阵。一般可以利用有序性使用二分查找方法。 - -```html -[ - [ 1, 5, 9], - [10, 11, 13], - [12, 13, 15] -] -``` - -**有序矩阵查找** - -[Leetocde : 240. Search a 2D Matrix II (Medium)](https://leetcode.com/problems/search-a-2d-matrix-ii/description/) - -```java -public boolean searchMatrix(int[][] matrix, int target) { - if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return false; - int m = matrix.length, n = matrix[0].length; - int row = 0, col = n - 1; - while (row < m && col >= 0) { - if (target == matrix[row][col]) return true; - else if (target < matrix[row][col]) col--; - else row++; - } - return false; -} -``` - -**有序矩阵的 Kth Element** - -[Leetcode : 378. Kth Smallest Element in a Sorted Matrix ((Medium))](https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/description/) - -```html -matrix = [ - [ 1, 5, 9], - [10, 11, 13], - [12, 13, 15] -], -k = 8, - -return 13. -``` - -解题参考:[Share my thoughts and Clean Java Code](https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/discuss/85173) - -二分查找解法: - -```java -public int kthSmallest(int[][] matrix, int k) { - int m = matrix.length, n = matrix[0].length; - int lo = matrix[0][0], hi = matrix[m - 1][n - 1]; - while(lo <= hi) { - int mid = lo + (hi - lo) / 2; - int cnt = 0; - for(int i = 0; i < m; i++) { - for(int j = 0; j < n && matrix[i][j] <= mid; j++) { - cnt++; - } - } - if(cnt < k) lo = mid + 1; - else hi = mid - 1; - } - return lo; -} -``` - -堆解法: - -```java -public int kthSmallest(int[][] matrix, int k) { - int m = matrix.length, n = matrix[0].length; - PriorityQueue pq = new PriorityQueue(); - for(int j = 0; j < n; j++) pq.offer(new Tuple(0, j, matrix[0][j])); - for(int i = 0; i < k - 1; i++) { // 小根堆,去掉 k - 1 个堆顶元素,此时堆顶元素就是第 k 的数 - Tuple t = pq.poll(); - if(t.x == m - 1) continue; - pq.offer(new Tuple(t.x + 1, t.y, matrix[t.x + 1][t.y])); - } - return pq.poll().val; -} - -class Tuple implements Comparable { - int x, y, val; - public Tuple(int x, int y, int val) { - this.x = x; this.y = y; this.val = val; - } - - @Override - public int compareTo(Tuple that) { - return this.val - that.val; - } -} -``` - -## 链表 - -**判断两个链表的交点** - -[Leetcode : 160. Intersection of Two Linked Lists (Easy)](https://leetcode.com/problems/intersection-of-two-linked-lists/description/) - -```html -A: a1 → a2 - ↘ - c1 → c2 → c3 - ↗ -B: b1 → b2 → b3 -``` - -要求:时间复杂度为 O(n) 空间复杂度为 O(1) - -设 A 的长度为 a + c,B 的长度为 b + c,其中 c 为尾部公共部分长度,可知 a + c + b = b + c + a。 - -当访问 A 链表的指针访问到链表尾部时,令它从链表 B 的头部开始访问链表 B;同样地,当访问 B 链表的指针访问到链表尾部时,令它从链表 A 的头部开始访问链表 A。这样就能控制访问 A 和 B 两个链表的指针能同时访问到交点。 - -```java -public ListNode getIntersectionNode(ListNode headA, ListNode headB) { - if(headA == null || headB == null) return null; - ListNode l1 = headA, l2 = headB; - while(l1 != l2){ - l1 = (l1 == null) ? headB : l1.next; - l2 = (l2 == null) ? headA : l2.next; - } - return l1; -} -``` - -如果只是判断是否存在交点,那么就是另一个问题,即 [编程之美:3.6]() 的问题。有两种解法:把第一个链表的结尾连接到第二个链表的开头,看第二个链表是否存在环;或者直接比较第一个链表最后一个节点和第二个链表最后一个节点是否相同。 - -**链表反转** - -[Leetcode : 206. Reverse Linked List (Easy)](https://leetcode.com/problems/reverse-linked-list/description/) - -头插法能够按逆序构建链表。 - -```java -public ListNode reverseList(ListNode head) { - ListNode newHead = null; // 设为 null,作为新链表的结尾 - while(head != null){ - ListNode nextNode = head.next; - head.next = newHead; - newHead = head; - head = nextNode; - } - return newHead; -} -``` - -**归并两个有序的链表** - -[Leetcode : 21. Merge Two Sorted Lists (Easy)](https://leetcode.com/problems/merge-two-sorted-lists/description/) - -链表和树一样,可以用递归方式来定义:链表是空节点,或者有一个值和一个指向下一个链表的指针。因此很多链表问题可以用递归来处理。 - -```java -public ListNode mergeTwoLists(ListNode l1, ListNode l2) { - if(l1 == null) return l2; - if(l2 == null) return l1; - ListNode newHead = null; - if(l1.val < l2.val){ - newHead = l1; - newHead.next = mergeTwoLists(l1.next, l2); - } else{ - newHead = l2; - newHead.next = mergeTwoLists(l1, l2.next); - } - return newHead; -} -``` - -**从有序链表中删除重复节点** - -[Leetcode : 83. Remove Duplicates from Sorted List (Easy)](https://leetcode.com/problems/remove-duplicates-from-sorted-list/description/) - -```java -public ListNode deleteDuplicates(ListNode head) { - if(head == null || head.next == null) return head; - head.next = deleteDuplicates(head.next); - return head.next != null && head.val == head.next.val ? head.next : head; -} -``` - -**回文链表** - -[Leetcode : 234. Palindrome Linked List (Easy)](https://leetcode.com/problems/palindrome-linked-list/description/) - -切成两半,把后半段反转,然后比较两半是否相等。 - -```java -public boolean isPalindrome(ListNode head) { - if(head == null || head.next == null) return true; - ListNode slow = head, fast = head.next; - while(fast != null && fast.next != null){ - slow = slow.next; - fast = fast.next.next; - } - - if(fast != null){ // 偶数节点,让 slow 指向下一个节点 - slow = slow.next; - } - - cut(head, slow); // 切成两个链表 - ListNode l1 = head, l2 = slow; - l2 = reverse(l2); - return isEqual(l1, l2); -} - -private void cut(ListNode head, ListNode cutNode){ - while( head.next != cutNode ) head = head.next; - head.next = null; -} - -private ListNode reverse(ListNode head){ - ListNode newHead = null; - while(head != null){ - ListNode nextNode = head.next; - head.next = newHead; - newHead = head; - head = nextNode; - } - return newHead; -} - -private boolean isEqual(ListNode l1, ListNode l2){ - while(l1 != null && l2 != null){ - if(l1.val != l2.val) return false; - l1 = l1.next; - l2 = l2.next; - } - return true; -} -``` - -**链表元素按奇偶聚集** - -[Leetcode : 328. Odd Even Linked List (Medium)](https://leetcode.com/problems/odd-even-linked-list/description/) - -```html -Example: -Given 1->2->3->4->5->NULL, -return 1->3->5->2->4->NULL. -``` - -```java -public ListNode oddEvenList(ListNode head) { - if (head == null) { - return head; - } - ListNode odd = head, even = head.next, evenHead = even; - while (even != null && even.next != null) { - odd.next = odd.next.next; - odd = odd.next; - even.next = even.next.next; - even = even.next; - } - odd.next = evenHead; - return head; -} -``` - -## 树 - -### 递归 - -一棵树要么是空树,要么有两个指针,每个指针指向一棵树。树是一种递归结构,很多树的问题可以使用递归来处理。 - -**树的高度** - -[Leetcode : 104. Maximum Depth of Binary Tree (Easy)](https://leetcode.com/problems/maximum-depth-of-binary-tree/description/) - -```java -public int maxDepth(TreeNode root) { - if(root == null) return 0; - return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; -} -``` - -**翻转树** - -[Leetcode : 226. Invert Binary Tree (Easy)](https://leetcode.com/problems/invert-binary-tree/description/) - -```java -public TreeNode invertTree(TreeNode root) { - if(root == null) return null; - TreeNode left = root.left; // 后面的操作会改变 left 指针,因此先保存下来 - root.left = invertTree(root.right); - root.right = invertTree(left); - return root; -} -``` - -**归并两棵树** - -[Leetcode : 617. Merge Two Binary Trees (Easy)](https://leetcode.com/problems/merge-two-binary-trees/description/) - -```html -Input: - Tree 1 Tree 2 - 1 2 - / \ / \ - 3 2 1 3 - / \ \ - 5 4 7 -Output: -Merged tree: - 3 - / \ - 4 5 - / \ \ - 5 4 7 -``` - -```java -public TreeNode mergeTrees(TreeNode t1, TreeNode t2) { - if(t1 == null && t2 == null) return null; - if(t1 == null) return t2; - if(t2 == null) return t1; - TreeNode root = new TreeNode(t1.val + t2.val); - root.left = mergeTrees(t1.left, t2.left); - root.right = mergeTrees(t1.right, t2.right); - return root; -} -``` - -**判断路径和是否等于一个数** - -[Leetcdoe : 112. Path Sum (Easy)](https://leetcode.com/problems/path-sum/description/) - -```html -Given the below binary tree and sum = 22, - 5 - / \ - 4 8 - / / \ - 11 13 4 - / \ \ - 7 2 1 -return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22. -``` - -路径和定义为从 root 到 leaf 的所有节点的和 - -```java -public boolean hasPathSum(TreeNode root, int sum) { - if(root == null) return false; - if(root.left == null && root.right == null && root.val == sum) return true; - return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val); -} -``` - -**统计路径和等于一个数的路径数量** - -[Leetcode : 437. Path Sum III (Easy)](https://leetcode.com/problems/path-sum-iii/description/) - -```html -root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 - - 10 - / \ - 5 -3 - / \ \ - 3 2 11 - / \ \ -3 -2 1 - -Return 3. The paths that sum to 8 are: - -1. 5 -> 3 -2. 5 -> 2 -> 1 -3. -3 -> 11 -``` - -路径不一定以 root 开头并以 leaf 结尾,但是必须连续 - -```java -public int pathSum(TreeNode root, int sum) { - if(root == null) return 0; - int ret = pathSumStartWithRoot(root, sum) + pathSum(root.left, sum) + pathSum(root.right, sum); - return ret; -} - -private int pathSumStartWithRoot(TreeNode root, int sum){ - if(root == null) return 0; - int ret = 0; - if(root.val == sum) ret++; - ret += pathSumStartWithRoot(root.left, sum - root.val) + pathSumStartWithRoot(root.right, sum - root.val); - return ret; -} -``` - -**树的对称** - -[Leetcode : 101. Symmetric Tree (Easy)](https://leetcode.com/problems/symmetric-tree/description/) - -```html - 1 - / \ - 2 2 - / \ / \ -3 4 4 3 -``` - -```java -public boolean isSymmetric(TreeNode root) { - if(root == null) return true; - return isSymmetric(root.left, root.right); -} - -private boolean isSymmetric(TreeNode t1, TreeNode t2){ - if(t1 == null && t2 == null) return true; - if(t1 == null || t2 == null) return false; - if(t1.val != t2.val) return false; - return isSymmetric(t1.left, t2.right) && isSymmetric(t1.right, t2.left); -} -``` - -**平衡树** - -[Leetcode : 110. Balanced Binary Tree (Easy)](https://leetcode.com/problems/balanced-binary-tree/description/) - -```html - 3 - / \ - 9 20 - / \ - 15 7 -``` - -平衡树左右子树高度差都小于等于 1 - -```java -private boolean result = true; - -public boolean isBalanced(TreeNode root) { - maxDepth(root); - return result; -} - -public int maxDepth(TreeNode root) { - if (root == null) return 0; - int l = maxDepth(root.left); - int r = maxDepth(root.right); - if (Math.abs(l - r) > 1) result = false; - return 1 + Math.max(l, r); -} -``` - -**最小路径** - -[Leetcode : 111. Minimum Depth of Binary Tree (Easy)](https://leetcode.com/problems/minimum-depth-of-binary-tree/description/) - -树的根节点到叶子节点的最小路径长度 - -```java -public int minDepth(TreeNode root) { - if(root == null) return 0; - int left = minDepth(root.left); - int right = minDepth(root.right); - if(left == 0 || right == 0) return left + right + 1; - return Math.min(left, right) + 1; -} -``` - -**统计左叶子节点的和** - -[Leetcode : 404. Sum of Left Leaves (Easy)](https://leetcode.com/problems/sum-of-left-leaves/description/) - -```html - 3 - / \ - 9 20 - / \ - 15 7 - -There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24. -``` - -```java -public int sumOfLeftLeaves(TreeNode root) { - if(root == null) { - return 0; - } - if(isLeaf(root.left)) { - return root.left.val + sumOfLeftLeaves(root.right); - } - return sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right); -} - -private boolean isLeaf(TreeNode node){ - if(node == null) { - return false; - } - return node.left == null && node.right == null; -} -``` - -**修剪二叉查找树** - -[Leetcode : 669. Trim a Binary Search Tree (Easy)](https://leetcode.com/problems/trim-a-binary-search-tree/description/) - -```html -Input: - 3 - / \ - 0 4 - \ - 2 - / - 1 - - L = 1 - R = 3 - -Output: - 3 - / - 2 - / - 1 -``` - -二叉查找树(BST):根节点大于等于左子树所有节点,小于等于右子树所有节点。 - -只保留值在 L \~ R 之间的节点 - -```java -public TreeNode trimBST(TreeNode root, int L, int R) { - if(root == null) return null; - if(root.val > R) return trimBST(root.left, L, R); - if(root.val < L) return trimBST(root.right, L, R); - root.left = trimBST(root.left, L, R); - root.right = trimBST(root.right, L, R); - return root; -} -``` - -**子树** - -[Leetcode : 572. Subtree of Another Tree (Easy)](https://leetcode.com/problems/subtree-of-another-tree/description/) - -```html -Given tree s: - 3 - / \ - 4 5 - / \ - 1 2 -Given tree t: - 4 - / \ - 1 2 -Return true, because t has the same structure and node values with a subtree of s. -``` - -```java -public boolean isSubtree(TreeNode s, TreeNode t) { - if(s == null && t == null) return true; - if(s == null || t == null) return false; - if(s.val == t.val && isSame(s, t)) return true; - return isSubtree(s.left, t) || isSubtree(s.right, t); -} - -private boolean isSame(TreeNode s, TreeNode t){ - if(s == null && t == null) return true; - if(s == null || t == null) return false; - if(s.val != t.val) return false; - return isSame(s.left, t.left) && isSame(s.right, t.right); -} -``` - -**从有序数组中构造二叉查找树** - -[Leetcode : 108. Convert Sorted Array to Binary Search Tree (Easy)](https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/description/) - -```java -public TreeNode sortedArrayToBST(int[] nums) { - return toBST(nums, 0, nums.length - 1); -} - -private TreeNode toBST(int[] nums, int sIdx, int eIdx){ - if(sIdx > eIdx) return null; - int mIdx = (sIdx + eIdx) / 2; - TreeNode root = new TreeNode(nums[mIdx]); - root.left = toBST(nums, sIdx, mIdx - 1); - root.right = toBST(nums, mIdx + 1, eIdx); - return root; -} -``` - -**两节点的最长路径** - -[Leetcode : 543. Diameter of Binary Tree (Easy)](https://leetcode.com/problems/diameter-of-binary-tree/description/) - -```html -Input: - 1 - / \ - 2 3 - / \ - 4 5 - -Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3]. -``` - -```java -private int max = 0; - -public int diameterOfBinaryTree(TreeNode root) { - depth(root); - return max; -} - -private int depth(TreeNode root) { - if (root == null) return 0; - int leftDepth = depth(root.left); - int rightDepth = depth(root.right); - max = Math.max(max, leftDepth + rightDepth); - return Math.max(leftDepth, rightDepth) + 1; -} -``` - -**找出二叉树中第二小的节点** - -[Leetcode : 671. Second Minimum Node In a Binary Tree (Easy)](https://leetcode.com/problems/second-minimum-node-in-a-binary-tree/description/) - -```html -Input: - 2 - / \ - 2 5 - / \ - 5 7 - -Output: 5 -``` - -一个节点要么具有 0 个或 2 个子节点,如果有子节点,那么根节点是最小的节点。 - -```java -public int findSecondMinimumValue(TreeNode root) { - if(root == null) return -1; - if(root.left == null && root.right == null) return -1; - int leftVal = root.left.val; - int rightVal = root.right.val; - if(leftVal == root.val) leftVal = findSecondMinimumValue(root.left); - if(rightVal == root.val) rightVal = findSecondMinimumValue(root.right); - if(leftVal != -1 && rightVal != -1) return Math.min(leftVal, rightVal); - if(leftVal != -1) return leftVal; - return rightVal; -} -``` - -**二叉查找树的最近公共祖先** - -[Leetcode : 235. Lowest Common Ancestor of a Binary Search Tree (Easy)](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/description/) - -```html - _______6______ - / \ - ___2__ ___8__ - / \ / \ - 0 _4 7 9 - / \ - 3 5 -For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition. -``` - -```java -public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { - if(root.val > p.val && root.val > q.val) return lowestCommonAncestor(root.left, p, q); - if(root.val < p.val && root.val < q.val) return lowestCommonAncestor(root.right, p, q); - return root; -} -``` - -**二叉树的最近公共祖先** - -[Leetcode : 236. Lowest Common Ancestor of a Binary Tree (Medium) ](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/description/) - -```html - _______3______ - / \ - ___5__ ___1__ - / \ / \ - 6 _2 0 8 - / \ - 7 4 -For example, the lowest common ancestor (LCA) of nodes 5 and 1 is 3. Another example is LCA of nodes 5 and 4 is 5, since a node can be a descendant of itself according to the LCA definition. -``` - -```java -public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { - if (root == null || root == p || root == q) return root; - TreeNode left = lowestCommonAncestor(root.left, p, q); - TreeNode right = lowestCommonAncestor(root.right, p, q); - return left == null ? right : right == null ? left : root; -} -``` - -**相同节点值的最大路径长度** - -[Leetcode : 687. Longest Univalue Path (Easy)](https://leetcode.com/problems/longest-univalue-path/) - -```html - 1 - / \ - 4 5 - / \ \ - 4 4 5 - -Output : 2 -``` - -```java -private int path = 0; -public int longestUnivaluePath(TreeNode root) { - dfs(root); - return path; -} - -private int dfs(TreeNode root){ - if(root == null) return 0; - int left = dfs(root.left); - int right = dfs(root.right); - int leftPath = root.left != null && root.left.val == root.val ? left + 1 : 0; - int rightPath = root.right != null && root.right.val == root.val ? right + 1 : 0; - path = Math.max(path, leftPath + rightPath); - return Math.max(leftPath, rightPath); -} -``` - -**间隔遍历** - -[Leetcode : 337. House Robber III (Medium)](https://leetcode.com/problems/house-robber-iii/description/) - -```html - 3 - / \ - 2 3 - \ \ - 3 1 -Maximum amount of money the thief can rob = 3 + 3 + 1 = 7. -``` - -```java -public int rob(TreeNode root) { - if (root == null) return 0; - int val1 = root.val; - if (root.left != null) { - val1 += rob(root.left.left) + rob(root.left.right); - } - if (root.right != null) { - val1 += rob(root.right.left) + rob(root.right.right); - } - int val2 = rob(root.left) + rob(root.right); - return Math.max(val1, val2); -} -``` - -### 层次遍历 - -使用 BFS 进行层次遍历。不需要使用两个队列来分别存储当前层的节点和下一层的节点,因为在开始遍历一层的节点时,当前队列中的节点数就是当前层的节点数,只要控制遍历这么多节点数,就能保证这次遍历的都是当前层的节点。 - -**一棵树每层节点的平均数** - -[637. Average of Levels in Binary Tree (Easy)](https://leetcode.com/problems/average-of-levels-in-binary-tree/description/) - -```java -public List averageOfLevels(TreeNode root) { - List ret = new ArrayList<>(); - if(root == null) return ret; - Queue queue = new LinkedList<>(); - queue.add(root); - while(!queue.isEmpty()){ - int cnt = queue.size(); - double sum = 0; - for(int i = 0; i < cnt; i++){ - TreeNode node = queue.poll(); - sum += node.val; - if(node.left != null) queue.add(node.left); - if(node.right != null) queue.add(node.right); - } - ret.add(sum / cnt); - } - return ret; -} -``` - -**得到左下角的节点** - -[Leetcode : 513. Find Bottom Left Tree Value (Easy)](https://leetcode.com/problems/find-bottom-left-tree-value/description/) - -```html -Input: - - 1 - / \ - 2 3 - / / \ - 4 5 6 - / - 7 - -Output: -7 -``` - -```java -public int findBottomLeftValue(TreeNode root) { - Queue queue = new LinkedList<>(); - queue.add(root); - while(!queue.isEmpty()){ - root = queue.poll(); - if(root.right != null) queue.add(root.right); - if(root.left != null) queue.add(root.left); - } - return root.val; -} -``` - -### 前中后序遍历 - -```html - 1 - / \ - 2 3 - / \ \ -4 5 6 -``` - -层次遍历顺序:[1 2 3 4 5 6] -前序遍历顺序:[1 2 4 5 3 6] -中序遍历顺序:[4 2 5 1 3 6] -后序遍历顺序:[4 5 2 6 3 1] - -层次遍历使用 BFS 实现,利用的就是 BFS 一层一层遍历的特性;而前序、中序、后序遍历利用了 DFS 实现。 - -前序、中序、后序遍只是在对节点访问的顺序有一点不同,其它都相同。 - -① 前序 - -```java -void dfs(TreeNode root){ - visit(root); - dfs(root.left); - dfs(root.right); -} -``` - -② 中序 - -```java -void dfs(TreeNode root){ - dfs(root.left); - visit(root); - dfs(root.right); -} -``` - -③ 后序 - -```java -void dfs(TreeNode root){ - dfs(root.left); - dfs(root.right); - visit(root); -} -``` - -**非递归实现二叉树的前序遍历** - -[Leetcode : 144. Binary Tree Preorder Traversal (Medium)](https://leetcode.com/problems/binary-tree-preorder-traversal/description/) - -```java -public List preorderTraversal(TreeNode root) { - List ret = new ArrayList<>(); - if (root == null) return ret; - Stack stack = new Stack<>(); - stack.push(root); - while (!stack.isEmpty()) { - TreeNode node = stack.pop(); - ret.add(node.val); - if (node.right != null) stack.push(node.right); - if (node.left != null) stack.push(node.left); // 先添加右子树再添加左子树,这样是为了让左子树在栈顶 - } - return ret; -} -``` - -**非递归实现二叉树的后序遍历** - -[Leetcode : 145. Binary Tree Postorder Traversal (Medium)](https://leetcode.com/problems/binary-tree-postorder-traversal/description/) - -前序遍历为 root -> left -> right,后序遍历为 left -> right -> root,可以修改前序遍历成为 root -> right -> left,那么这个顺序就和后序遍历正好相反。 - -```java -public List postorderTraversal(TreeNode root) { - List ret = new ArrayList<>(); - if (root == null) return ret; - Stack stack = new Stack<>(); - stack.push(root); - while (!stack.isEmpty()) { - TreeNode node = stack.pop(); - ret.add(node.val); - if (node.left != null) stack.push(node.left); - if (node.right != null) stack.push(node.right); - } - Collections.reverse(ret); - return ret; -} -``` - -**非递归实现二叉树的中序遍历** - -[Leetcode : 94. Binary Tree Inorder Traversal (Medium)](https://leetcode.com/problems/binary-tree-inorder-traversal/description/) - -```java -public List inorderTraversal(TreeNode root) { - List ret = new ArrayList<>(); - Stack stack = new Stack<>(); - TreeNode cur = root; - while(cur != null || !stack.isEmpty()) { - while(cur != null) { // 模拟递归栈的不断深入 - stack.add(cur); - cur = cur.left; - } - TreeNode node = stack.pop(); - ret.add(node.val); - cur = node.right; - } - return ret; -} -``` - -### BST - -主要利用 BST 中序遍历有序的特点。 - -**在 BST 中寻找两个节点,使它们的和为一个给定值** - -[653. Two Sum IV - Input is a BST (Easy)](https://leetcode.com/problems/two-sum-iv-input-is-a-bst/description/) - -```html -Input: - 5 - / \ - 3 6 - / \ \ -2 4 7 - -Target = 9 - -Output: True -``` - -使用中序遍历得到有序数组之后,再利用双指针对数组进行查找。 - -应该注意到,这一题不能用分别在左右子树两部分来处理这种思想,因为两个待求的节点可能分别在左右子树中。 - -```java -public boolean findTarget(TreeNode root, int k) { - List nums = new ArrayList<>(); - inOrder(root, nums); - int i = 0, j = nums.size() - 1; - while(i < j){ - int sum = nums.get(i) + nums.get(j); - if(sum == k) return true; - if(sum < k) i++; - else j--; - } - return false; -} - -private void inOrder(TreeNode root, List nums){ - if(root == null) return; - inOrder(root.left, nums); - nums.add(root.val); - inOrder(root.right, nums); -} -``` - -**在 BST 中查找两个节点之差的最小绝对值** - -[Leetcode : 530. Minimum Absolute Difference in BST (Easy)](https://leetcode.com/problems/minimum-absolute-difference-in-bst/description/) - -```html -Input: - 1 - \ - 3 - / - 2 - -Output: -1 -``` - -利用 BST 的中序遍历为有序的性质,计算中序遍历中临近的两个节点之差的绝对值,取最小值。 - -```java -private int minDiff = Integer.MAX_VALUE; -private int preVal = -1; - -public int getMinimumDifference(TreeNode root) { - inorder(root); - return minDiff; -} - -private void inorder(TreeNode node){ - if(node == null) return; - inorder(node.left); - if(preVal != -1) minDiff = Math.min(minDiff, Math.abs(node.val - preVal)); - preVal = node.val; - inorder(node.right); -} -``` - -**把 BST 每个节点的值都加上比它大的节点的值** - -[Leetcode : Convert BST to Greater Tree (Easy)](https://leetcode.com/problems/convert-bst-to-greater-tree/description/) - -```html -Input: The root of a Binary Search Tree like this: - 5 - / \ - 2 13 - -Output: The root of a Greater Tree like this: - 18 - / \ - 20 13 -``` - -先遍历右子树。 - -```java -private int sum = 0; - -public TreeNode convertBST(TreeNode root) { - traver(root); - return root; -} - -private void traver(TreeNode root) { - if (root == null) { - return; - } - if (root.right != null) { - traver(root.right); - } - sum += root.val; - root.val = sum; - if (root.left != null) { - traver(root.left); - } -} -``` - -**寻找 BST 中出现次数最多的节点** - -[Leetcode : 501. Find Mode in Binary Search Tree (Easy)](https://leetcode.com/problems/find-mode-in-binary-search-tree/description/) - -```html - 1 - \ - 2 - / - 2 -return [2]. -``` - -```java -private int cnt = 1; -private int maxCnt = 1; -private TreeNode preNode = null; -private List list; - -public int[] findMode(TreeNode root) { - list = new ArrayList<>(); - inorder(root); - int[] ret = new int[list.size()]; - int idx = 0; - for(int num : list){ - ret[idx++] = num; - } - return ret; -} - -private void inorder(TreeNode node){ - if(node == null) return; - inorder(node.left); - if(preNode != null){ - if(preNode.val == node.val) cnt++; - else cnt = 1; - } - if(cnt > maxCnt){ - maxCnt = cnt; - list.clear(); - list.add(node.val); - } else if(cnt == maxCnt){ - list.add(node.val); - } - preNode = node; - inorder(node.right); -} -``` - -**寻找 BST 的第 k 个元素** - -[Leetcode : 230. Kth Smallest Element in a BST (Medium)](https://leetcode.com/problems/kth-smallest-element-in-a-bst/description/) - -递归解法: - -```java -public int kthSmallest(TreeNode root, int k) { - int leftCnt = count(root.left); - if(leftCnt == k - 1) return root.val; - if(leftCnt > k - 1) return kthSmallest(root.left, k); - return kthSmallest(root.right, k - leftCnt - 1); -} - -private int count(TreeNode node) { - if(node == null) return 0; - return 1 + count(node.left) + count(node.right); -} -``` - -中序遍历解法: - -```java -private int cnt = 0; -private int val; - -public int kthSmallest(TreeNode root, int k) { - inorder(root, k); - return val; -} - -private void inorder(TreeNode node, int k) { - if(node == null) return; - inorder(node.left, k); - cnt++; - if(cnt == k) { - val = node.val; - return; - } - inorder(node.right, k); -} -``` - -### Trie - -

    - -Trie,又称前缀树或字典树,用于判断字符串是否存在或者是否具有某种字符串前缀。 - -**实现一个 Trie** - -[Leetcode : 208. Implement Trie (Prefix Tree) (Medium)](https://leetcode.com/problems/implement-trie-prefix-tree/description/) - -```java -class Trie { - - private class Node{ - Node[] childs = new Node[26]; - boolean isLeaf; - } - - private Node root = new Node(); - - /** Initialize your data structure here. */ - public Trie() { - } - - /** Inserts a word into the trie. */ - public void insert(String word) { - int idx = word.charAt(0) - 'a'; - insert(word, root); - } - - private void insert(String word, Node node){ - int idx = word.charAt(0) - 'a'; - if(node.childs[idx] == null){ - node.childs[idx] = new Node(); - } - if(word.length() == 1) node.childs[idx].isLeaf = true; - else insert(word.substring(1), node.childs[idx]); - } - - /** Returns if the word is in the trie. */ - public boolean search(String word) { - return search(word, root); - } - - private boolean search(String word, Node node){ - if(node == null) return false; - int idx = word.charAt(0) - 'a'; - if(node.childs[idx] == null) return false; - if(word.length() == 1) return node.childs[idx].isLeaf; - return search(word.substring(1), node.childs[idx]); - } - - /** Returns if there is any word in the trie that starts with the given prefix. */ - public boolean startsWith(String prefix) { - return startWith(prefix, root); - } - - private boolean startWith(String prefix, Node node){ - if(node == null) return false; - if(prefix.length() == 0) return true; - int idx = prefix.charAt(0) - 'a'; - return startWith(prefix.substring(1), node.childs[idx]); - } -} -``` - -**实现一个 Trie,用来求前缀和** - -[Leetcode : 677. Map Sum Pairs (Medium)](https://leetcode.com/problems/map-sum-pairs/description/) - -```html -Input: insert("apple", 3), Output: Null -Input: sum("ap"), Output: 3 -Input: insert("app", 2), Output: Null -Input: sum("ap"), Output: 5 -``` - -```java -class MapSum { - private class Trie { - int val; - Map childs; - boolean isWord; - - Trie() { - childs = new HashMap<>(); - } - } - - private Trie root; - - public MapSum() { - root = new Trie(); - } - - public void insert(String key, int val) { - Trie cur = root; - for(char c : key.toCharArray()) { - if(!cur.childs.containsKey(c)) { - Trie next = new Trie(); - cur.childs.put(c, next); - } - cur = cur.childs.get(c); - } - cur.val = val; - cur.isWord = true; - } - - public int sum(String prefix) { - Trie cur = root; - for(char c : prefix.toCharArray()) { - if(!cur.childs.containsKey(c)) return 0; - cur = cur.childs.get(c); - } - return dfs(cur); - } - - private int dfs(Trie cur) { - int sum = 0; - if(cur.isWord) { - sum += cur.val; - } - for(Trie next : cur.childs.values()) { - sum += dfs(next); - } - return sum; - } -} -``` - -## 图 - -## 位运算 - -**1. 基本原理** - -0s 表示一串 0 ,1s 表示一串 1。 - -``` -x ^ 0s = x x & 0s = 0 x | 0s = x -x ^ 1s = ~x x & 1s = x x | 1s = 1s -x ^ x = 0 x & x = x x | x = x -``` - -① 利用 x ^ 1s = \~x 的特点,可以将位级表示翻转;利用 x ^ x = 0 的特点,可以将三个数中重复的两个数去除,只留下另一个数; -② 利用 x & 0s = 0 和 x & 1s = x 的特点,可以实现掩码操作。一个数 num 与 mask :00111100 进行位与操作,只保留 num 中与 mask 的 1 部分相对应的位; -③ 利用 x | 0s = x 和 x | 1s = 1s 的特点,可以实现设值操作。一个数 num 与 mask:00111100 进行位或操作,将 num 中与 mask 的 1 部分相对应的位都设置为 1 。 - -\>\> n 为算术右移,相当于除以 2n; -\>\>\> n 为无符号右移,左边会补上 0。 -<< n 为算术左移,相当于乘以 2n。 - -n&(n-1) 该位运算是去除 n 的位级表示中最低的那一位。例如对于二进制表示 10110 **100** ,减去 1 得到 10110**011**,这两个数相与得到 10110**000**。 - -n-n&(\~n+1) 运算是去除 n 的位级表示中最高的那一位。 - -n&(-n) 该运算得到 n 的位级表示中最低的那一位。-n 得到 n 的反码加 1,对于二进制表示 10110 **100** ,-n 得到 01001**100**,相与得到 00000**100** - -**2. mask 计算** - -要获取 111111111,将 0 取反即可,\~0。 - -要得到只有第 i 位为 1 的 mask,将 1 向左移动 i 位即可,1<<i 。例如 1<<5 得到只有第 5 位为 1 的 mask :00010000。 - -要得到 1 到 i 位为 1 的 mask,1<<(i+1)-1 即可,例如将 1<<(4+1)-1 = 00010000-1 = 00001111。 - -要得到 1 到 i 位为 0 的 mask,只需将 1 到 i 位为 1 的 mask 取反,即 \~(1<<(i+1)-1)。 - -**3. 位操作举例** - -① 获取第 i 位 - -num & 00010000 != 0 - -```java -(num & (1 << i)) != 0; -``` - -② 将第 i 位设置为 1 - -num | 00010000 - -```java -num | (1 << i); -``` - -③ 将第 i 位清除为 0 - -num & 11101111 - -```java -num & (~(1 << i)) -``` - -④ 将最高位到第 i 位清除为 0 - -num & 00001111 - -```java -num & ((1 << i) - 1); -``` - -⑤ 将第 0 位到第 i 位清除为 0 - -num & 11110000 - -```java -num & (~((1 << (i+1)) - 1)); -``` - -⑥ 将第 i 位设置为 0 或者 1 - -先将第 i 位清零,然后将 v 左移 i 位,执行“位或”运算。 - -```java -(num & (1 << i)) | (v << i); -``` - -**4. Java 中的位操作** - -```html -static int Integer.bitCount(); // 统计 1 的数量 -static int Integer.highestOneBit(); // 获得最高位 -static String toBinaryString(int i); // 转换为二进制表示的字符串 -``` - -**统计两个数的二进制表示有多少位不同** - -[Leetcode : 461. Hamming Distance (Easy)](https://leetcode.com/problems/hamming-distance/) - -对两个数进行异或操作,不同的那一位结果为 1 ,统计有多少个 1 即可。 - -```java -public int hammingDistance(int x, int y) { - int z = x ^ y; - int cnt = 0; - while(z != 0){ - if((z & 1) == 1) cnt++; - z = z >> 1; - } - return cnt; -} -``` - -可以使用 Integer.bitcount() 来统计 1 个的个数。 - -```java -public int hammingDistance(int x, int y) { - return Integer.bitCount(x ^ y); -} -``` - -**翻转一个数的比特位** - -[Leetcode : 190. Reverse Bits (Easy)](https://leetcode.com/problems/reverse-bits/description/) - -```java -public int reverseBits(int n) { - int ret = 0; - for(int i = 0; i < 32; i++){ - ret <<= 1; - ret |= (n & 1); - n >>>= 1; - } - return ret; -} -``` - -**不用额外变量交换两个整数** - -[程序员代码面试指南 :P317](#) - -```java -a = a ^ b; -b = a ^ b; -a = a ^ b; -``` - -令 c = a ^ b,那么 b ^ c = b ^ b ^ a = a,a ^ c = a ^ a ^ b = b。 - -**判断一个数是不是 4 的 n 次方** - -[Leetcode : 342. Power of Four (Easy)](https://leetcode.com/problems/power-of-four/) - -该数二进制表示有且只有一个奇数位为 1 ,其余的都为 0 ,例如 16 :10000。可以每次把 1 向左移动 2 位,就能构造出这种数字,然后比较构造出来的数与要判断的数是否相同。 - -```java -public boolean isPowerOfFour(int num) { - int i = 1; - while(i > 0){ - if(i == num) return true; - i = i << 2; - } - return false; -} -``` - -**判断一个数是不是 2 的 n 次方** - -[Leetcode : 231. Power of Two (Easy)](https://leetcode.com/problems/power-of-two/description/) - -同样可以用 Power of Four 的方法,但是 2 的 n 次方更特殊,它的二进制表示只有一个 1 存在。 - -```java -public boolean isPowerOfTwo(int n) { - return n > 0 && Integer.bitCount(n) == 1; -} -``` - -利用 1000 & 0111 == 0 这种性质,得到以下解法: - -```java -public boolean isPowerOfTwo(int n) { - return n > 0 && (n & (n - 1)) == 0; -} -``` - -**数组中唯一一个不重复的元素** - -[Leetcode : 136. Single Number (Easy)](https://leetcode.com/problems/single-number/description/) - -两个相同的数异或的结果为 0,对所有数进行异或操作,最后的结果就是单独出现的那个数。 - -类似的有:[Leetcode : 389. Find the Difference (Easy)](https://leetcode.com/problems/find-the-difference/description/),两个字符串仅有一个字符不相同,使用异或操作可以以 O(1) 的空间复杂度来求解,而不需要使用 HashSet。 - -```java -public int singleNumber(int[] nums) { - int ret = 0; - for(int n : nums) ret = ret ^ n; - return ret; -} -``` - -**数组中不重复的两个元素** - -[Leetcode : 260. Single Number III (Medium)](https://leetcode.com/problems/single-number-iii/description/) - -两个不相等的元素在位级表示上必定会有一位存在不同。 - -将数组的所有元素异或得到的结果为不存在重复的两个元素异或的结果。 - -diff &= -diff 得到出 diff 最右侧不为 0 的位,也就是不存在重复的两个元素在位级表示上最右侧不同的那一位,利用这一位就可以将两个元素区分开来。 - -```java -public int[] singleNumber(int[] nums) { - int diff = 0; - for(int num : nums) diff ^= num; - // 得到最右一位 - diff &= -diff; - int[] ret = new int[2]; - for(int num : nums) { - if((num & diff) == 0) ret[0] ^= num; - else ret[1] ^= num; - } - return ret; -} -``` - -**判断一个数的位级表示是否不会出现连续的 0 和 1** - -[Leetcode : 693. Binary Number with Alternating Bits (Easy)](https://leetcode.com/problems/binary-number-with-alternating-bits/description/) - -对于 10101 这种位级表示的数,把它向右移动 1 位得到 1010 ,这两个数每个位都不同,因此异或得到的结果为 11111。 - -```java -public boolean hasAlternatingBits(int n) { - int a = (n ^ (n >> 1)); - return (a & (a + 1)) == 0; -} -``` - -**求一个数的补码** - -[Leetcode : 476. Number Complement (Easy)](https://leetcode.com/problems/number-complement/description/) - -不考虑二进制表示中的首 0 部分 - -对于 00000101,要求补码可以将它与 00000111 进行异或操作。那么问题就转换为求掩码 00000111。 - -```java -public int findComplement(int num) { - if(num == 0) return 1; - int mask = 1 << 30; - while((num & mask) == 0) mask >>= 1; - mask = (mask << 1) - 1; - return num ^ mask; -} -``` - -可以利用 Java 的 Integer.highestOneBit() 方法来获得含有首 1 的数。 - -```java -public int findComplement(int num) { - if(num == 0) return 1; - int mask = Integer.highestOneBit(num); - mask = (mask << 1) - 1; - return num ^ mask; -} -``` - -对于 10000000 这样的数要扩展成 11111111,可以利用以下方法: - -```html -mask |= mask >> 1 11000000 -mask |= mask >> 2 11110000 -mask |= mask >> 4 11111111 -``` - -```java -public int findComplement(int num) { - int mask = num; - mask |= mask >> 1; - mask |= mask >> 2; - mask |= mask >> 4; - mask |= mask >> 8; - mask |= mask >> 16; - return (mask ^ num); -} -``` - -**实现整数的加法** - -[Leetcode : 371. Sum of Two Integers (Easy)](https://leetcode.com/problems/sum-of-two-integers/description/) - -a ^ b 表示没有考虑进位的情况下两数的和,(a & b) << 1 就是进位。递归会终止的原因是 (a & b) << 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。 - -```java -public int getSum(int a, int b) { - return b == 0 ? a : getSum((a ^ b), (a & b) << 1); -} -``` - -**字符串数组最大乘积** - -[Leetcode : 318. Maximum Product of Word Lengths (Medium)](https://leetcode.com/problems/maximum-product-of-word-lengths/description/) - -题目描述:字符串数组的字符串只含有小写字符。求解字符串数组中两个字符串长度的最大乘积,要求这两个字符串不能含有相同字符。 - -解题思路:本题主要问题是判断两个字符串是否含相同字符,由于字符串只含有小写字符,总共 26 位,因此可以用一个 32 位的整数来存储每个字符是否出现过。 - -```java -public int maxProduct(String[] words) { - int n = words.length; - if (n == 0) return 0; - int[] val = new int[n]; - for (int i = 0; i < n; i++) { - for (char c : words[i].toCharArray()) { - val[i] |= 1 << (c - 'a'); - } - } - int ret = 0; - for (int i = 0; i < n; i++) { - for (int j = i + 1; j < n; j++) { - if ((val[i] & val[j]) == 0) { - ret = Math.max(ret, words[i].length() * words[j].length()); - } - } - } - return ret; -} -``` - -# 参考资料 - -- [Leetcode](https://leetcode.com/problemset/algorithms/?status=Todo) -- Weiss M A, 冯舜玺. 数据结构与算法分析——C 语言描述[J]. 2004. -- Sedgewick R. Algorithms[M]. Pearson Education India, 1988. -- 何海涛, 软件工程师. 剑指 Offer: 名企面试官精讲典型编程题[M]. 电子工业出版社, 2014. -- 《编程之美》小组. 编程之美[M]. 电子工业出版社, 2008. -- 左程云. 程序员代码面试指南[M]. 电子工业出版社, 2015. diff --git a/notes/Linux.md b/notes/Linux.md deleted file mode 100644 index c592bf24..00000000 --- a/notes/Linux.md +++ /dev/null @@ -1,1398 +0,0 @@ - -* [一、常用操作以及概念](#一常用操作以及概念) - * [求助](#求助) - * [关机](#关机) - * [PATH](#path) - * [运行等级](#运行等级) - * [sudo](#sudo) - * [GNU](#gnu) - * [包管理工具](#包管理工具) - * [发行版](#发行版) - * [VIM 三个模式](#vim-三个模式) -* [二、分区](#二分区) - * [磁盘的文件名](#磁盘的文件名) - * [分区表](#分区表) - * [开机检测程序](#开机检测程序) - * [挂载](#挂载) -* [三、文件](#三文件) - * [文件权限概念](#文件权限概念) - * [文件属性以及权限的修改](#文件属性以及权限的修改) - * [目录的权限](#目录的权限) - * [文件默认权限](#文件默认权限) - * [目录配置](#目录配置) - * [文件时间](#文件时间) - * [文件与目录的基本操作](#文件与目录的基本操作) - * [获取文件内容](#获取文件内容) - * [指令与文件搜索](#指令与文件搜索) -* [四、磁盘与文件系统](#四磁盘与文件系统) - * [文件系统的组成](#文件系统的组成) - * [inode](#inode) - * [目录的 inode 与 block](#目录的-inode-与-block) - * [实体链接与符号链接](#实体链接与符号链接) -* [五、压缩与打包](#五压缩与打包) - * [压缩](#压缩) - * [打包](#打包) -* [六、Bash](#六bash) - * [特性](#特性) - * [变量操作](#变量操作) - * [指令搜索顺序](#指令搜索顺序) - * [数据流重定向](#数据流重定向) -* [七、管线指令](#七管线指令) - * [提取指令](#提取指令) - * [排序指令](#排序指令) - * [双向输出重定向](#双向输出重定向) - * [字符转换指令](#字符转换指令) - * [分区指令](#分区指令) -* [八、正则表达式](#八正则表达式) - * [grep](#grep) - * [printf](#printf) - * [awk](#awk) -* [九、进程管理](#九进程管理) - * [查看进程](#查看进程) - * [进程状态](#进程状态) - * [SIGCHILD](#sigchild) - * [孤儿进程和僵死进程](#孤儿进程和僵死进程) -* [十、I/O 复用](#十io-复用) - * [概念理解](#概念理解) - * [I/O 模型](#io-模型) - * [select poll epoll](#select-poll-epoll) - * [select 和 poll 比较](#select-和-poll-比较) - * [eopll 工作模式](#eopll-工作模式) - * [select poll epoll 应用场景](#select-poll-epoll-应用场景) -* [参考资料](#参考资料) - - - -# 一、常用操作以及概念 - -## 求助 - -### 1. --help - -指令的基本用法与选项介绍。 - -### 2. man - -man 是 manual 的缩写,将指令的具体信息显示出来。 - -当执行 man date 时,有 DATE(1) 出现,其中的数字代表指令的类型,常用的数字及其类型如下: - -| 代号 | 类型 | -| :--: | -- | -| 1 | 用户在 shell 环境中可以操作的指令或者可执行文件 | -| 5 | 配置文件 | -| 8 | 系统管理员可以使用的管理指令 | - -### 3. info - -info 与 man 类似,但是 info 将文档分成一个个页面,每个页面可以进行跳转。 - -## 关机 - -### 1. sync - -为了加快对磁盘文件的读写速度,位于内存中的文件数据不会立即同步到磁盘上,因此关机之前需要先进行 sync 同步操作。 - -### 2. shutdown - -```html -# /sbin/shutdown [-krhc] [时间] [警告讯息] --k : 不会关机,只是发送警告讯息,通知所有在线的用户 --r : 将系统的服务停掉后就重新启动 --h : 将系统的服务停掉后就立即关机 --c : 取消已经在进行的 shutdown 指令内容 -``` - -### 3. 其它关机指令 - -reboot、halt、poweroff。 - -## PATH - -可以在环境变量 PATH 中声明可执行文件的路径,路径之间用 : 分隔。 - -```html -/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin -``` - -## 运行等级 - -- 0:关机模式 -- 1:单用户模式(可用于破解 root 密码) -- 2:无网络支持的多用户模式 -- 3:有网络支持的多用户模式(文本模式,工作中最常用的模式) -- 4:保留,未使用 -- 5:有网络支持的 X-windows 多用户模式(桌面) -- 6:重新引导系统,即重启 - -## sudo - -使用 sudo 允许一般用户使用 root 可执行的命令,只有在 /etc/sudoers 配置文件中添加的用户才能使用该指令。 - -## GNU - -GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操作系统,称为 GNU,其内容软件完全以 GPL 方式发布。其中 GPL 全称为 GNU 通用公共许可协议,包含了以下内容: - -- 以任何目的运行此程序的自由; -- 再复制的自由; -- 改进此程序,并公开发布改进的自由。 - -## 包管理工具 - -RPM 和 DPKG 为最常见的两类软件包管理工具。RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。与 RPM 进行竞争的是基于 Debian 操作系统 (UBUNTU) 的 DEB 软件包管理工具- DPKG,全称为 Debian Package,功能方面与 RPM 相似。 - -YUM 基于 RPM 包管理工具,具有依赖管理功能,并具有软件升级的功能。 - -## 发行版 - -Linux 发行版是 Linux 内核及各种应用软件的集成版本。 - -| 基于的包管理工具 | 商业发行版 | 社区发行版 | -| --- | --- | --- | -| DPKG | Ubuntu | Debian | -| RPM | Red Hat | Fedora / CentOS | - -## VIM 三个模式 - -

    - -- 一般指令模式:进入 VIM 的默认模式,可以用于移动游标查看内容; -- 编辑模式:按下 "i" 等按键之后进入,可以对文本进行编辑; -- 指令列模式:按下 ":" 按键之后进入,用于保存退出等操作。 - -在指令列模式下,有以下命令用于离开或者保存文件。 - -| 命令 | 作用 | -| -- | -- | -| :w | 写入磁盘| -| :w! | 当文件为只读时,强制写入磁盘。到底能不能写入,与用户对该文件的权限有关 | -| :q | 离开 | -| :q! | 强制离开不保存 | -| :wq | 写入磁盘后离开 | -| :wq!| 强制写入磁盘后离开 | - -# 二、分区 - -## 磁盘的文件名 - -Linux 中每个硬件都被当做一个文件,包括磁盘。常见磁盘的文件名如下: - -- SCSI/SATA/USB 磁盘:/dev/sd[a-p] -- IDE 磁盘:/dev/hd[a-d] - -其中文件名后面的序号的确定与磁盘插入的顺序有关,而与磁盘所插入的插槽位置无关。 - -## 分区表 - -磁盘分区表主要有两种格式,一种是限制较多的 MBR 分区表,一种是较新且限制较少的 GPT 分区表。 - -### 1. MBR - -MBR 中,第一个扇区最重要,里面有主要开机记录(Master boot record, MBR)及分区表(partition table),其中 MBR 占 446 bytes,分区表占 64 bytes。 - -分区表只有 64 bytes,最多只能存储 4 个分区,这 4 个分区为主分区(Primary)和扩展分区(Extended)。其中扩展分区只有一个,它将其它空间用来记录分区表,因此通过扩展分区可以分出更多分区,这些分区称为逻辑分区。 - -Linux 也把分区当成文件,分区文件的命名方式为:磁盘文件名 + 编号,例如 /dev/sda1。注意,逻辑分区的编号从 5 开始。 - -### 2. GPT - -不同的磁盘有不同的扇区大小,例如 512 bytes 和最新磁盘的 4 k。GPT 为了兼容所有磁盘,在定义扇区上使用逻辑区块地址(Logical Block Address, LBA)。 - -GPT 第 1 个区块记录了 MBR,紧接着是 33 个区块记录分区信息,并把最后的 33 个区块用于对分区信息进行备份。 - -GPT 没有扩展分区概念,都是主分区,最多可以分 128 个分区。 - -

    - -## 开机检测程序 - -### 1. BIOS - -BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可以开机的磁盘,并读取磁盘第一个扇区的 MBR,由 MBR 执行其中的开机管理程序,这个开机管理程序会加载操作系统的核心文件。 - -MBR 中的开机管理程序提供以下功能:选单、载入核心文件以及转交其它开机管理程序。转交这个功能可以用来实现了多重引导,只需要将另一个操作系统的开机管理程序安装在其它分区的启动扇区上,在启动 MBR 中的开机管理程序时,就可以选择启动当前的操作系统或者转交给其它开机管理程序从而启动另一个操作系统。 - -安装多重引导,最好先安装 Windows 再安装 Linux。因为安装 Windows 时会覆盖掉 MBR,而 Linux 可以选择将开机管理程序安装在 MBR 或者其它分区的启动扇区,并且可以设置开机管理程序的选单。 - -

    - -### 2. UEFI - -UEFI 相比于 BIOS 来说功能更为全面,也更为安全。 - -## 挂载 - -挂载利用目录作为分区的进入点,也就是说,进入目录之后就可以读取分区的数据。 - -

    - -# 三、文件 - -## 文件权限概念 - -把用户分为三种:文件拥有者、群组以及其它人,对不同的用户有不同的文件权限。 - -使用 ls 查看一个文件时,会显示一个文件的信息,例如 `drwxr-xr-x. 3 root root 17 May 6 00:14 .config`,对这个信息的解释如下: - -- drwxr-xr-x:文件类型以及权限,第 1 位为文件类型字段,后 9 位为文件权限字段。 -- 3:链接数; -- root:文件拥有者; -- root:所属群组; -- 17:文件大小; -- May 6 00:14:文件最后被修改的时间; -- .config:文件名。 - -常见的文件类型及其含义有: - -- d:目录; -- -:文件; -- l:链接文件; - -9 位的文件权限字段中,每 3 个为一组,共 3 组,每一组分别代表对文件拥有者、所属群组以及其它人的文件权限。一组权限中的 3 位分别为 r、w、x 权限,表示可读、可写、可执行。 - -## 文件属性以及权限的修改 - -### 1. 修改文件所属群组 - -```html -# chgrp [-R] groupname dirname/filename --R:递归修改 -``` - -### 2. 修改文件拥有者 - -不仅可以修改文件拥有者,也可以修改文件所属群组。 - -```html -# chown [-R] 用户名:群组名 dirname/filename -``` - -### 3. 修改权限 - -可以将一组权限用数字来表示,此时一组权限的 3 个位当做二进制数字的位,从左到右每个位的权值为 4、2、1,即每个权限对应的数字权值为 r : 4、w : 2、x : 1。 - -```html -# chmod [-R] xyz dirname/filename -``` - -范例:将 .bashrc 文件的权限修改为 -rwxr-xr--。 - -```html -# chmod 754 .bashrc -``` - -也可以使用符号来设定权限。 - -```html -# chmod [ugoa] [+-=] [rwx] dirname/filename -- u:拥有者 -- g:所属群组 -- o:其他人 -- a:所有人 -- +:添加权限 -- -:移除权限 -- =:设定权限 -``` - -范例:为 .bashrc 文件的所有用户添加写权限。 - -```html -# chmod a+w .bashrc -``` - -## 目录的权限 - -文件名不是存储在一个文件的内容中,而是存储在一个文件所在的目录中。因此,拥有文件的 w 权限并不能对文件名进行修改。 - -目录存储文件列表,一个目录的权限也就是对其文件列表的权限。因此,目录的 r 权限表示可以读取文件列表;w 权限表示可以修改文件列表,具体来说,就是添加删除文件,对文件名进行修改;x 权限可以让该目录成为工作目录,x 权限是 r 和 w 权限的基础,如果不能使一个目录成为工作目录,也就没办法读取文件列表以及对文件列表进行修改了。 - -## 文件默认权限 - -- 文件默认权限:文件默认没有可执行权限,因此为 666,也就是 -rw-rw-rw- 。 -- 目录默认权限:目录必须要能够进入,也就是必须拥有可执行权限,因此为 777 ,也就是 drwxrwxrwx。 - -可以通过 umask 设置或者查看文件的默认权限,通常以掩码的形式来表示,例如 002 表示其它用户的权限去除了一个 2 的权限,也就是写权限,因此建立新文件时默认的权限为 -rw-rw-r-- 。 - -## 目录配置 - -为了使不同 Linux 发行版本的目录结构保持一致性,Filesystem Hierarchy Standard (FHS) 规定了 Linux 的目录结构。最基础的三个目录如下: - -- / (root, 根目录) -- /usr (unix software resource):所有系统默认软件都会安装到这个目录; -- /var (variable):存放系统或程序运行过程中的数据文件。 - -

    - -## 文件时间 - -1. modification time (mtime):文件的内容更新就会更新; -2. status time (ctime):文件的状态(权限、属性)更新就会更新; -3. access time (atime):读取文件时就会更新。 - -## 文件与目录的基本操作 - -### 1. ls - -列出文件或者目录的信息,目录的信息就是其中包含的文件。 - -```html -# ls [-aAdfFhilnrRSt] file|dir --a :列出全部的文件 --d :仅列出目录本身 --l :以长数据串行列出,包含文件的属性与权限等等数据 -``` - -### 2. cp - -复制操作。 - -如果源文件有两个以上,则目的文件一定要是目录才行。 - -```html -cp [-adfilprsu] source destination --a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明 --d :若来源文件为链接文件,则复制链接文件属性而非文件本身 --i :若目标文件已经存在时,在覆盖前会先询问 --p :连同文件的属性一起复制过去 --r :递归持续复制 --u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制 ---preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了 -``` - -### 3. rm - -移除操作。 - -```html -# rm [-fir] 文件或目录 --r :递归删除 -``` - -### 4. mv - -移动操作。 - -```html -# mv [-fiu] source destination -# mv [options] source1 source2 source3 .... directory --f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖 -``` - -## 获取文件内容 - -### 1. cat - -取得文件内容。 - -```html -# cat [-AbEnTv] filename --n :打印出行号,连同空白行也会有行号,-b 不会 -``` - -### 2. tac - -是 cat 的反向操作,从最后一行开始打印。 - -### 3. more - -可以一页一页查看文件内容,和文本编辑器类似。 - -### 4. less - -和 more 类似。 - -### 5. head - -可以取得文件前几行。 - -```html -# head [-n number] filename --n :后面接数字,代表显示几行的意思 -``` - -### 6. tail - -是 head 的反向操作,只是取得是后几行。 - -### 7. od - -可以以字符或者十六进制的形式显示二进制文件。 - -### 8. touch - -修改文件时间或者建立新文件。 - -```html -# touch [-acdmt] filename --a : 更新 atime --c : 更新 ctime,若该文件不存在则不建立新文件 --m : 更新 mtime --d : 后面可以接更新日期而不使用当前日期,也可以使用 --date="日期或时间" --t : 后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm] -``` - -## 指令与文件搜索 - -### 1. which - -指令搜索。 - -```html -# which [-a] command --a :将所有指令列出,而不是只列第一个 -``` - -### 2. whereis - -whereis 搜索文件的速度比较快,因为它只搜索几个特定的目录。 - -```html -# whereis [-bmsu] dirname/filename -``` - -### 3. locate - -locate 可以用关键字或者正则表达式进行搜索。 - -locate 使用 /var/lib/mlocate/ 这个数据库来进行搜索,它存储在内存中,并且每天更新一次,所以无法用 locate 搜索新建的文件。可以使用 updatedb 来立即更新数据库。 - -```html -# locate [-ir] keyword --r:接正则表达式 -``` - -### 4. find - -find 可以使用文件的属性和权限进行搜索。 - -```html -# find filename [option] -``` - -**(一)与时间有关的选项** - -```html --mtime n :列出在 n 天前的那一天修改过内容的文件 --mtime +n :列出在 n 天之前 (不含 n 天本身) 修改过内容的文件 --mtime -n :列出在 n 天之内 (含 n 天本身) 修改过内容的文件 --newer file : 列出比 file 更新的文件 -``` - -+4、4 和 -4 的指示的时间范围如下: - -

    - -**(二)与文件拥有者和所属群组有关的选项** - -```html --uid n --gid n --user name --group name --nouser :搜索拥有者不存在 /etc/passwd 的文件 --nogroup:搜索所属群组不存在于 /etc/group 的文件 -``` - -**(三)与文件权限和名称有关的选项** - -```html --name filename --size [+-]SIZE:搜寻比 SIZE 还要大 (+) 或小 (-) 的文件。这个 SIZE 的规格有:c: 代表 byte,k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是 -size +50k --type TYPE --perm mode :搜索权限等于 mode 的文件 --perm -mode :搜索权限包含 mode 的文件 --perm /mode :搜索权限包含任一 mode 的文件 -``` - -# 四、磁盘与文件系统 - -## 文件系统的组成 - -对分区进行格式化是为了在分区上建立文件系统。一个分区通常只能格式化为一个文件系统,但是磁盘阵列等技术可以将一个分区格式化为多个文件系统,因此只有文件系统能被挂载,而分区不能被挂载。 - -文件系统有以下三个结构: - -1. superblock:记录文件系统的整体信息,包括 inode 和 block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等; -2. inode:一个文件占用一个 inode,记录文件的属性,同时记录此文件的内容所在的 block 号码; -3. block:记录文件的内容,文件太大时,会占用多个 block。 - -当要读取一个文件的内容时,先在 inode 中去查找文件内容所在的所有 block,然后把所有 block 的内容读出来。 - -磁盘碎片是指一个文件内容所在的 block 过于分散。 - -Ext2 文件系统使用了上述的文件结构,并在此之上加入了 block 群组的概念,也就是将一个文件系统划分为多个 block 群组,方便管理。 - -

    - -## inode - -Ext2 文件系统支持的 block 大小有 1k、2k 和 4k 三种,不同的 block 大小限制了单一文件的大小。而每个 inode 大小是固定为 128 bytes。 - -inode 中记录了文件内容所在的 block,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block。因此引入了间接、双间接、三间接引用。间接引用是指,让 inode 记录的引用 block 块当成 inode 用来记录引用信息。 - -

    - -inode 具体包含以下信息: - -- 该文件的存取模式 (read/write/excute); -- 该文件的拥有者与群组 (owner/group); -- 该文件的容量; -- 该文件建立或状态改变的时间 (ctime); -- 最近一次的读取时间 (atime); -- 最近修改的时间 (mtime); -- 定义文件特性的旗标 (flag),如 SetUID...; -- 该文件真正内容的指向 (pointer)。 - -## 目录的 inode 与 block - -建立一个目录时,会分配一个 inode 与至少一个 block。block 记录的内容是目录下所有文件的 inode 编号以及文件名。可以看出文件的 inode 本身不记录文件名,文件名记录在目录中,因此新增文件、删除文件、更改文件名这些操作与目录的 w 权限有关。 - -## 实体链接与符号链接 - -```html -# ln [-sf] source_filename dist_filename --s :默认是 hard link,加 -s 为 symbolic link --f :如果目标文件存在时,先删除目标文件 -``` - -### 1. 实体链接 - -它和普通文件类似,实体链接文件的 inode 都指向源文件所在的 block 上,也就是说读取文件直接从源文件的 block 上读取。 - -删除任意一个条目,文件还是存在,只要引用数量不为 0。 - -有以下限制:不能跨越 File System;不能对目录进行链接。 - -```html -# ln /etc/crontab . -# ll -i /etc/crontab crontab -34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 crontab -34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab -``` - -### 2. 符号链接 - -符号链接文件保存着源文件所在的绝对路径,在读取时会定位到源文件上,可以理解为 Windows 的快捷方式。 - -当源文件被删除了,链接文件就打不开了。 - -可以为目录建立链接。 - -```html -# ll -i /etc/crontab /root/crontab2 -34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab -53745909 lrwxrwxrwx. 1 root root 12 Jun 23 22:31 /root/crontab2 -> /etc/crontab -``` - -# 五、压缩与打包 - -## 压缩 - -Linux 底下有很多压缩文件的扩展名,常见的如下: - -| 扩展名 | 压缩程序 | -| -- | -- | -| \*.Z | compress | -|\*.zip | zip | -|\*.gz | gzip| -|\*.bz2 | bzip2 | -|\*.xz | xz | -|\*.tar | tar 程序打包的数据,没有经过压缩 | -|\*.tar.gz | tar 程序打包的文件,经过 gzip 的压缩 | -|\*.tar.bz2 | tar 程序打包的文件,经过 bzip2 的压缩 | -|\*.tar.xz | tar 程序打包的文件,经过 xz 的压缩 | - -### 1. gzip - -gzip 是 Linux 使用最广的压缩指令,可以解开 compress、zip 与 gzip 所压缩的文件。 - -经过 gzip 压缩过,源文件就不存在了。 - -有 9 个不同的压缩等级可以使用。 - -可以使用 zcat、zmore、zless 来读取压缩文件的内容。 - -```html -$ gzip [-cdtv#] filename --c :将压缩的数据输出到屏幕上 --d :解压缩 --t :检验压缩文件是否出错 --v :显示压缩比等信息 --# : # 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6 -``` - -### 2. bzip2 - -提供比 gzip 更高的压缩比。 - -查看命令:bzcat、bzmore、bzless、bzgrep。 - -```html -$ bzip2 [-cdkzv#] filename --k :保留源文件 -``` - -### 3. xz - -提供比 bzip2 更佳的压缩比。 - -可以看到,gzip、bzip2、xz 的压缩比不断优化。不过要注意,压缩比越高,压缩的时间也越长。 - -查看命令:xzcat、xzmore、xzless、xzgrep。 - -```html -$ xz [-dtlkc#] filename -``` - -## 打包 - -压缩指令只能对一个文件进行压缩,而打包能够将多个文件打包成一个大文件。tar 不仅可以用于打包,也可以使用 gip、bzip2、xz 将打包文件进行压缩。 - -```html -$ tar [-z|-j|-J] [cv] [-f 新建的 tar 文件] filename... ==打包压缩 -$ tar [-z|-j|-J] [tv] [-f 已有的 tar 文件] ==查看 -$ tar [-z|-j|-J] [xv] [-f 已有的 tar 文件] [-C 目录] ==解压缩 --z :使用 zip; --j :使用 bzip2; --J :使用 xz; --c :新建打包文件; --t :查看打包文件里面有哪些文件; --x :解打包或解压缩的功能; --v :在压缩/解压缩的过程中,显示正在处理的文件名; --f : filename:要处理的文件; --C 目录 : 在特定目录解压缩。 -``` - -| 使用方式 | 命令 | -| --- | --- | -| 打包压缩 | tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 | -| 查 看 | tar -jtv -f filename.tar.bz2 | -| 解压缩 | tar -jxv -f filename.tar.bz2 -C 要解压缩的目录 | - -# 六、Bash - -可以通过 Shell 请求内核提供服务,Bash 正是 Shell 的一种。 - -## 特性 - -1. 命令历史:记录使用过的命令。本次登录所执行的命令都会暂时存放到内存中,\~/.bash_history 文件中记录的是前一次登录所执行过的命令。 - -2. 命令与文件补全:快捷键:tab。 - -3. 命名别名:例如 lm 是 ls -al 的别名。 - -4. shell scripts。 - -5. 通配符:例如 ls -l /usr/bin/X\* 列出 /usr/bin 下面所有以 X 开头的文件。 - -## 变量操作 - -- 对一个变量赋值直接使用 = ; -- 对变量取用需要在变量前加上 \$ ,也可以用 \${} 的形式; -- 输出变量使用 echo 命令。 - -```bash -$ var=abc -$ echo $var -$ echo ${var} -``` - -变量内容如果有空格,必须需要使用双引号或者单引号。 - -- 双引号内的特殊字符可以保留原本特性,例如 var="lang is \$LANG",则 var 的值为 lang is zh_TW.UTF-8; -- 单引号内的特殊字符就是特殊字符本身,例如 var='lang is \$LANG',则 var 的值为 lang is \$LANG。 - -可以使用 \`指令\` 或者 \$(指令) 的方式将指令的执行结果赋值给变量。例如 version=\$(uname -r),则 version 的值为 3.10.0-229.el7.x86_64。 - -可以使用 export 命令将自定义变量转成环境变量,环境变量可以在子程序中使用,所谓子程序就是由当前 Bash 而产生的子 Bash。 - -Bash 的变量可以声明为数组和整数数字。注意数字类型没有浮点数。如果不进行声明,默认是字符串类型。变量的声明使用 declare 命令: - -```html -$ declare [-aixr] variable --a : 定义为数组类型 --i : 定义为整数类型 --x : 定义为环境变量 --r : 定义为 readonly 类型 -``` - -使用 [ ] 来对数组进行索引操作: - -```bash -$ array[1]=a -$ array[2]=b -$ echo ${array[1]} -``` - -## 指令搜索顺序 - -1. 以绝对或相对路径来执行指令,例如 /bin/ls 或者 ./ls ; -2. 由别名找到该指令来执行; -3. 由 Bash 内建的指令来执行; -4. 按 \$PATH 变量指定的搜索路径的顺序找到第一个指令来执行。 - -## 数据流重定向 - -重定向指的是使用文件代替标准输入、标准输出和标准错误输出。 - -| 1 | 代码 | 运算符 | -| :---: | :---: | :---:| -| 标准输入 (stdin) | 0 | < 或 << | -| 标准输出 (stdout) | 1 | > 或 >> | -| 标准错误输出 (stderr) | 2 | 2> 或 2>> | - -其中,有一个箭头的表示以覆盖的方式重定向,而有两个箭头的表示以追加的方式重定向。 - -可以将不需要的标准输出以及标准错误输出重定向到 /dev/null,相当于扔进垃圾箱。 - -如果需要将标准输出以及标准错误输出同时重定向到一个文件,需要将某个输出转换为另一个输出,例如 2>&1 表示将标准错误输出转换为标准输出。 - -```bash -$ find /home -name .bashrc > list 2>&1 -``` - -# 七、管线指令 - -管线是将一个命令的标准输出作为另一个命令的标准输入,在数据需要经过多个步骤的处理之后才能得到我们想要的内容时就可以使用管线。在命令之间使用 | 分隔各个管线命令。 - -```bash -$ ls -al /etc | less -``` - -## 提取指令 - -cut 对数据进行切分,取出想要的部分。提取过程一行一行地进行。 - -```html -$ cut --d :分隔符 --f :经过 -d 分隔后,使用 -f n 取出第 n 个区间 --c :以字符为单位取出区间 -``` - -范例 1:last 将显示的登入者的信息,要求仅显示用户名。 - -```html -$ last -root pts/1 192.168.201.101 Sat Feb 7 12:35 still logged in -root pts/1 192.168.201.101 Fri Feb 6 12:13 - 18:46 (06:33) -root pts/1 192.168.201.254 Thu Feb 5 22:37 - 23:53 (01:16) - -$ last | cut -d ' ' -f 1 -``` - -范例 2:将 export 输出的讯息,取得第 12 字符以后的所有字符串。 - -```html -$ export -declare -x HISTCONTROL="ignoredups" -declare -x HISTSIZE="1000" -declare -x HOME="/home/dmtsai" -declare -x HOSTNAME="study.centos.vbird" -.....(其他省略)..... - -$ export | cut -c 12 -``` - -## 排序指令 - -**sort** 进行排序。 - -```html -$ sort [-fbMnrtuk] [file or stdin] --f :忽略大小写 --b :忽略最前面的空格 --M :以月份的名字来排序,例如 JAN,DEC --n :使用数字 --r :反向排序 --u :相当于 unique,重复的内容只出现一次 --t :分隔符,默认为 tab --k :指定排序的区间 -``` - -范例:/etc/passwd 内容是以 : 来分隔的,以第三栏来排序。 - -```html -$ cat /etc/passwd | sort -t ':' -k 3 -root:x:0:0:root:/root:/bin/bash -dmtsai:x:1000:1000:dmtsai:/home/dmtsai:/bin/bash -alex:x:1001:1002::/home/alex:/bin/bash -arod:x:1002:1003::/home/arod:/bin/bash -``` - -**uniq** 可以将重复的数据只取一个。 - -```html -$ uniq [-ic] --i :忽略大小写 --c :进行计数 -``` - -范例:取得每个人的登录总次数 - -```html -$ last | cut -d ' ' -f 1 | sort | uniq -c -1 -6 (unknown -47 dmtsai -4 reboot -7 root -1 wtmp -``` - -## 双向输出重定向 - -输出重定向会将输出内容重定向到文件中,而 **tee** 不仅能够完成这个功能,还能保留屏幕上的输出。也就是说,使用 tee 指令,一个输出会同时传送到文件和屏幕上。 - -```html -$ tee [-a] file -``` - -## 字符转换指令 - -**tr** 用来删除一行中的字符,或者对字符进行替换。 - -```html -$ tr [-ds] SET1 ... --d : 删除行中 SET1 这个字符串 -``` - -范例,将 last 输出的信息所有小写转换为大写。 - -```html -$ last | tr '[a-z]' '[A-Z]' -``` - - **col** 将 tab 字符转为空格字符。 - -```html -$ col [-xb] --x : 将 tab 键转换成对等的空格键 -``` - -**expand** 将 tab 转换一定数量的空格,默认是 8 个。 - -```html -$ expand [-t] file --t :tab 转为空格的数量 -``` - -**join** 将有相同数据的那一行合并在一起。 - -```html -$ join [-ti12] file1 file2 --t :分隔符,默认为空格 --i :忽略大小写的差异 --1 :第一个文件所用的比较字段 --2 :第二个文件所用的比较字段 -``` - -**paste** 直接将两行粘贴在一起。 - -```html -$ paste [-d] file1 file2 --d :分隔符,默认为 tab -``` - -## 分区指令 - -**split** 将一个文件划分成多个文件。 - -```html -$ split [-bl] file PREFIX --b :以大小来进行分区,可加单位,例如 b, k, m 等 --l :以行数来进行分区。 -- PREFIX :分区文件的前导名称 -``` - -# 八、正则表达式 - -## grep - -使用正则表示式把匹配的行提取出来。 - -```html -$ grep [-acinv] [--color=auto] 搜寻字符串 filename --a : 将 binary 文件以 text 文件的方式进行搜寻 --c : 计算找到个数 --i : 忽略大小写 --n : 输出行号 --v : 反向选择,亦即显示出没有 搜寻字符串 内容的那一行 ---color=auto :找到的关键字加颜色显示 -``` - -范例:把含有 the 字符串的行提取出来(注意默认会有 --color=auto 选项,因此以下内容在 Linux 中有颜色显示 the 字符串) - -```html -$ grep -n 'the' regular_express.txt -8:I can't finish the test. -12:the symbol '*' is represented as start. -15:You are the best is mean you are the no. 1. -16:The world Happy is the same with "glad". -18:google is the best tools for search keyword -``` - -因为 { 与 } 的符号在 shell 是有特殊意义的,因此必须要使用转义字符进行转义。 - -```html -$ grep -n 'go\{2,5\}g' regular_express.txt -``` - -## printf - -用于格式化输出。 - -它不属于管道命令,在给 printf 传数据时需要使用 $( ) 形式。 - -```html -$ printf '%10s %5i %5i %5i %8.2f \n' $(cat printf.txt) - DmTsai 80 60 92 77.33 - VBird 75 55 80 70.00 - Ken 60 90 70 73.33 -``` - -## awk - -可以根据字段的某些条件进行匹配,例如匹配字段小于某个值的那一行数据。 - -```html -$ awk ' 条件类型 1 {动作 1} 条件类型 2 {动作 2} ...' filename -``` - -awk 每次处理一行,处理的最小单位是字段,每个字段的命名方式为:\$n,n 为字段号,从 1 开始,\$0 表示一整行。 - -范例 1:取出登录用户的用户名和 ip - -```html -$ last -n 5 -dmtsai pts/0 192.168.1.100 Tue Jul 14 17:32 still logged in -dmtsai pts/0 192.168.1.100 Thu Jul 9 23:36 - 02:58 (03:22) -dmtsai pts/0 192.168.1.100 Thu Jul 9 17:23 - 23:36 (06:12) -dmtsai pts/0 192.168.1.100 Thu Jul 9 08:02 - 08:17 (00:14) -dmtsai tty1 Fri May 29 11:55 - 12:11 (00:15) - -$ last -n 5 | awk '{print $1 "\t" $3} -``` - -awk 变量: - -| 变量名称 | 代表意义 | -| -- | -- | -| NF | 每一行拥有的字段总数 | -| NR | 目前所处理的是第几行数据 | -| FS | 目前的分隔字符,默认是空格键 | - -范例 2:输出正在处理的行号,并显示每一行有多少字段 - -```html -$ last -n 5 | awk '{print $1 "\t lines: " NR "\t columns: " NF}' -dmtsai lines: 1 columns: 10 -dmtsai lines: 2 columns: 10 -dmtsai lines: 3 columns: 10 -dmtsai lines: 4 columns: 10 -dmtsai lines: 5 columns: 9 -``` - -可以使用条件,其中等于使用 ==。 - -范例 3:/etc/passwd 文件第三个字段为 UID,对 UID 小于 10 的数据进行处理。 - -```text -$ cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}' -root 0 -bin 1 -daemon 2 -``` - -# 九、进程管理 - -## 查看进程 - -### 1. ps - -查看某个时间点的进程信息 - -示例一:查看自己的进程 - -``` -# ps -l -``` - -示例二:查看系统所有进程 - -``` -# ps aux -``` - -示例三:查看特定的进程 - -```html -# ps aux | grep threadx -``` - -### 2. top - -实时显示进程信息 - -示例:两秒钟刷新一次 - -``` -# top -d 2 -``` - -### 3. pstree - -查看进程树 - -示例:查看所有进程树 - -``` -# pstree -A -``` - -### 4. netstat - -查看占用端口的进程 - -``` -# netstat -anp | grep port -``` - -## 进程状态 - -| 状态 | 说明 | -| :---: | --- | -| R | running or runnable (on run queue) | -| D | uninterruptible sleep (usually IO) | -| S | interruptible sleep (waiting for an event to complete) | -| Z | defunct/zombie, terminated but not reaped by its parent | -| T | stopped, either by a job control signal or because it is being traced| - -

    - -## SIGCHILD - -当一个子进程改变了它的状态时:停止运行,继续运行或者退出,有两件事会发生在父进程中: - -- 得到 SIGCHLD 信号; -- 阻塞的 waitpid(2)(或者 wait)调用会返回。 - -

    - -## 孤儿进程和僵死进程 - -### 1. 孤儿进程 - -一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被 init 进程(进程号为 1)所收养,并由 init 进程对它们完成状态收集工作。 - -由于孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。 - -### 2. 僵死进程 - -一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过 wait 或 waitpid 获取了子进程信息后才会释放。如果子进程退出,而父进程并没有调用 wait 或 waitpid,那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵死进程。 - -僵死进程通过 ps 命令显示出来的状态为 Z。 - -系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程。 - -要消灭系统中大量的僵死进程,只需要将其父进程杀死,此时所有的僵死进程就会变成孤儿进程,从而被 init 所收养,这样 init 就会释放所有的僵死进程所占有的资源,从而结束僵死进程。 - -# 十、I/O 复用 - -## 概念理解 - -I/O Multiplexing 又被称为 Event Driven I/O,它可以让单个进程具有处理多个 I/O 事件的能力。 - -当某个 I/O 事件条件满足时,进程会收到通知。 - -如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时连接几万个连接,那么就需要创建相同数量的线程。并且相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。 - -## I/O 模型 - -- 阻塞(Blocking) -- 非阻塞(Non-blocking) -- 同步(Synchronous) -- 异步(Asynchronous) - -阻塞非阻塞是等待 I/O 完成的方式,阻塞要求用户程序停止执行,直到 I/O 完成,而非阻塞在 I/O 完成之前还可以继续执行。 - -同步异步是获知 I/O 完成的方式,同步需要时刻关心 I/O 是否已经完成,异步无需主动关心,在 I/O 完成时它会收到通知。 - -

    - -### 1. 同步-阻塞 - -这是最常见的一种模型,用户程序在使用 read() 时会执行系统调用从而陷入内核,之后就被阻塞直到系统调用完成。 - -应该注意到,在阻塞的过程中,其他程序还可以执行,因此阻塞不意味着整个操作系统都被阻塞。因为其他程序还可以执行,因此不消耗 CPU 时间,这种模型的执行效率会比较高。 - -

    - -### 2. 同步-非阻塞 - -非阻塞意味着用户程序在执行系统调用后还可以执行,内核并不是马上执行完 I/O,而是以一个错误码来告知用户程序 I/O 还未完成。为了获得 I/O 完成事件,用户程序必须调用多次系统调用去询问内核,甚至是忙等,也就是在一个循环里面一直询问并等待。 - -由于 CPU 要处理更多的用户程序的询问,因此这种模型的效率是比较低的。 - -

    - -### 3. 异步-阻塞 - -这是 I/O 复用使用的一种模式,通过使用 select,它可以监听多个 I/O 事件,当这些事件至少有一个发生时,用户程序会收到通知。 - -

    - -### 4. 异步-非阻塞 - -该模式下,I/O 操作会立即返回,之后可以处理其它操作,并且在 I/O 完成时会收到一个通知,此时会中断正在处理的操作,然后完成 I/O 事务。 - -

    - -## select poll epoll - -这三个都是 I/O 多路复用的具体实现,select 出现的最早,之后是 poll,再是 epoll。可以说,新出现的实现是为了修复旧实现的不足。 - -### 1. select - -```c -int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); -``` - -- fd_set 表示描述符集合; -- readset、writeset 和 exceptset 这三个参数指定让操作系统内核测试读、写和异常条件的描述符; -- timeout 参数告知内核等待所指定描述符中的任何一个就绪可花多少时间; -- 成功调用返回结果大于 0;出错返回结果为 -1;超时返回结果为 0。 - -```c -fd_set fd_in, fd_out; -struct timeval tv; - -// Reset the sets -FD_ZERO( &fd_in ); -FD_ZERO( &fd_out ); - -// Monitor sock1 for input events -FD_SET( sock1, &fd_in ); - -// Monitor sock2 for output events -FD_SET( sock2, &fd_out ); - -// Find out which socket has the largest numeric value as select requires it -int largest_sock = sock1 > sock2 ? sock1 : sock2; - -// Wait up to 10 seconds -tv.tv_sec = 10; -tv.tv_usec = 0; - -// Call the select -int ret = select( largest_sock + 1, &fd_in, &fd_out, NULL, &tv ); - -// Check if select actually succeed -if ( ret == -1 ) - // report error and abort -else if ( ret == 0 ) - // timeout; no event detected -else -{ - if ( FD_ISSET( sock1, &fd_in ) ) - // input event on sock1 - - if ( FD_ISSET( sock2, &fd_out ) ) - // output event on sock2 -} -``` - -每次调用 select() 都需要将 fd_set \*readfds, fd_set \*writefds, fd_set \*exceptfds 链表内容全部从用户进程内存中复制到操作系统内核中,内核需要将所有 fd_set 遍历一遍,这个过程非常低效。 - -返回结果中内核并没有声明哪些 fd_set 已经准备好了,所以如果返回值大于 0 时,程序需要遍历所有的 fd_set 判断哪个 I/O 已经准备好。 - -在 Linux 中 select 最多支持 1024 个 fd_set 同时轮询,其中 1024 由 Linux 内核的 FD_SETSIZE 决定。如果需要打破该限制可以修改 FD_SETSIZE,然后重新编译内核。 - -### 2. poll - -```c -int poll (struct pollfd *fds, unsigned int nfds, int timeout); -``` - -```c -struct pollfd { - int fd; //文件描述符 - short events; //监视的请求事件 - short revents; //已发生的事件 -}; -``` - -```c -// The structure for two events -struct pollfd fds[2]; - -// Monitor sock1 for input -fds[0].fd = sock1; -fds[0].events = POLLIN; - -// Monitor sock2 for output -fds[1].fd = sock2; -fds[1].events = POLLOUT; - -// Wait 10 seconds -int ret = poll( &fds, 2, 10000 ); -// Check if poll actually succeed -if ( ret == -1 ) - // report error and abort -else if ( ret == 0 ) - // timeout; no event detected -else -{ - // If we detect the event, zero it out so we can reuse the structure - if ( pfd[0].revents & POLLIN ) - pfd[0].revents = 0; - // input event on sock1 - - if ( pfd[1].revents & POLLOUT ) - pfd[1].revents = 0; - // output event on sock2 -} -``` - -它和 select() 功能基本相同。同样需要每次将 struct pollfd \*fds 复制到内核,返回后同样需要进行轮询每一个 pollfd 是否已经 I/O 准备好。poll() 取消了 1024 个描述符数量上限,但是数量太大以后不能保证执行效率,因为复制大量内存到内核十分低效,所需时间与描述符数量成正比。poll() 在 pollfd 的重复利用上比 select() 的 fd_set 会更好。 - -如果在多线程下,如果一个线程对某个描述符调用了 poll() 系统调用,但是另一个线程关闭了该描述符,会导致 poll() 调用结果不确定,该问题同样出现在 select() 中。 - -### 3. epoll - -```c -int epoll_create(int size); -int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); -int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout); -``` - -```c -// Create the epoll descriptor. Only one is needed per app, and is used to monitor all sockets. -// The function argument is ignored (it was not before, but now it is), so put your favorite number here -int pollingfd = epoll_create( 0xCAFE ); - -if ( pollingfd < 0 ) - // report error - -// Initialize the epoll structure in case more members are added in future -struct epoll_event ev = { 0 }; - -// Associate the connection class instance with the event. You can associate anything -// you want, epoll does not use this information. We store a connection class pointer, pConnection1 -ev.data.ptr = pConnection1; - -// Monitor for input, and do not automatically rearm the descriptor after the event -ev.events = EPOLLIN | EPOLLONESHOT; -// Add the descriptor into the monitoring list. We can do it even if another thread is -// waiting in epoll_wait - the descriptor will be properly added -if ( epoll_ctl( epollfd, EPOLL_CTL_ADD, pConnection1->getSocket(), &ev ) != 0 ) - // report error - -// Wait for up to 20 events (assuming we have added maybe 200 sockets before that it may happen) -struct epoll_event pevents[ 20 ]; - -// Wait for 10 seconds, and retrieve less than 20 epoll_event and store them into epoll_event array -int ready = epoll_wait( pollingfd, pevents, 20, 10000 ); -// Check if epoll actually succeed -if ( ret == -1 ) - // report error and abort -else if ( ret == 0 ) - // timeout; no event detected -else -{ - // Check if any events detected - for ( int i = 0; i < ret; i++ ) - { - if ( pevents[i].events & EPOLLIN ) - { - // Get back our connection pointer - Connection * c = (Connection*) pevents[i].data.ptr; - c->handleReadEvent(); - } - } -} -``` - -epoll 仅仅适用于 Linux OS。 - -它是 select 和 poll 的增强版,更加灵活而且没有描述符限制。它将用户关心的描述符放到内核的一个事件表中,从而只需要在用户空间和内核空间拷贝一次。 - -select 和 poll 方式中,进程只有在调用一定的方法后,内核才对所有监视的描述符进行扫描。而 epoll 事先通过 epoll_ctl() 来注册描述符,一旦基于某个描述符就绪时,内核会采用类似 callback 的回调机制,迅速激活这个描述符,当进程调用 epoll_wait() 时便得到通知。 - -新版本的 epoll_create(int size) 参数 size 不起任何作用,在旧版本的 epoll 中如果描述符的数量大于 size,不保证服务质量。 - -epoll_ct() 执行一次系统调用,用于向内核注册新的描述符或者是改变某个文件描述符的状态。已注册的描述符在内核中会被维护在一棵红黑树上,通过回调函数内核会将 I/O 准备好的描述符加入到一个链表中管理。 - -epoll_wait() 取出在内核中通过链表维护的 I/O 准备好的描述符,将他们从内核复制到程序中,不需要像 select/poll 对注册的所有描述符遍历一遍。 - -epoll 对多线程编程更有友好,同时多个线程对同一个描述符调用了 epoll_wait 也不会产生像 select/poll 的不确定情况。或者一个线程调用了 epoll_wait 另一个线程关闭了同一个描述符也不会产生不确定情况。 - -## select 和 poll 比较 - -### 1. 功能 - -它们提供了几乎相同的功能,但是在一些细节上有所不同: - -- select 会修改 fd_set 参数,而 poll 不会; -- select 默认只能监听 1024 个描述符,如果要监听更多的话,需要修改 FD_SETSIZE 之后重新编译; -- poll 提供了更多的事件类型。 - -### 2. 速度 - -poll 和 select 在速度上都很慢。 - -- 它们都采取轮询的方式来找到 I/O 完成的描述符,如果描述符很多,那么速度就会很慢; -- select 只使用每个描述符的 3 位,而 poll 通常需要使用 64 位,因此 poll 需要复制更多的内核空间。 - -### 3. 可移植性 - -几乎所有的系统都支持 select,但是只有比较新的系统支持 poll。 - -## eopll 工作模式 - -epoll_event 有两种触发模式:LT(level trigger)和 ET(edge trigger)。 - -### 1. LT 模式 - -当 epoll_wait() 检测到描述符事件发生并将此事件通知应用程序,应用程序可以不立即处理该事件。下次调用 epoll_wait() 时,会再次响应应用程序并通知此事件。是默认的一种模式,并且同时支持 Blocking 和 No-Blocking。 - -### 2. ET 模式 - -当 epoll_wait() 检测到描述符事件发生并将此事件通知应用程序,应用程序必须立即处理该事件。如果不处理,下次调用 epoll_wait() 时,不会再次响应应用程序并通知此事件。很大程度上减少了 epoll 事件被重复触发的次数,因此效率要比 LT 模式高。只支持 No-Blocking,以避免由于一个文件句柄的阻塞读/阻塞写操作把处理多个文件描述符的任务饿死。 - -## select poll epoll 应用场景 - -很容易产生一种错觉认为只要用 epoll 就可以了,select poll 都是历史遗留问题,并没有什么应用场景,其实并不是这样的。 - -### 1. select 应用场景 - -select() poll() epoll_wait() 都有一个 timeout 参数,在 select() 中 timeout 的精确度为 1ns,而 poll() 和 epoll_wait() 中则为 1ms。所以 select 更加适用于实时要求更高的场景,比如核反应堆的控制。 - -select 历史更加悠久,它的可移植性更好,几乎被所有主流平台所支持。 - -### 2. poll 应用场景 - -poll 没有最大描述符数量的限制,如果平台支持应该采用 poll 且对实时性要求并不是十分严格,而不是 select。 - -需要同时监控小于 1000 个描述符。那么也没有必要使用 epoll,因为这个应用场景下并不能体现 epoll 的优势。 - -需要监控的描述符状态变化多,而且都是非常短暂的。因为 epoll 中的所有描述符都存储在内核中,造成每次需要对描述符的状态改变都需要通过 epoll_ctl() 进行系统调用,频繁系统调用降低效率。epoll 的描述符存储在内核,不容易调试。 - -### 3. epoll 应用场景 - -程序只需要运行在 Linux 平台上,有非常大量的描述符需要同时轮询,而且这些连接最好是长连接。 - -### 4. 性能对比 - -> [epoll Scalability Web Page](http://lse.sourceforge.net/epoll/index.html) - -# 参考资料 - -- 鸟哥. 鸟 哥 的 Linux 私 房 菜 基 础 篇 第 三 版[J]. 2009. -- [Linux 平台上的软件包管理](https://www.ibm.com/developerworks/cn/linux/l-cn-rpmdpkg/index.html) -- [Boost application performance using asynchronous I/O](https://www.ibm.com/developerworks/linux/library/l-async/) -- [Synchronous and Asynchronous I/O](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365683(v=vs.85).aspx) -- [Linux IO 模式及 select、poll、epoll 详解](https://segmentfault.com/a/1190000003063859) -- [poll vs select vs event-based](https://daniel.haxx.se/docs/poll-vs-select.html) -- [Linux 之守护进程、僵死进程与孤儿进程](http://liubigbin.github.io/2016/03/11/Linux-%E4%B9%8B%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%E3%80%81%E5%83%B5%E6%AD%BB%E8%BF%9B%E7%A8%8B%E4%B8%8E%E5%AD%A4%E5%84%BF%E8%BF%9B%E7%A8%8B/) -- [Linux process states](https://idea.popcount.org/2012-12-11-linux-process-states/) diff --git a/notes/MySQL.md b/notes/MySQL.md deleted file mode 100644 index fca2798f..00000000 --- a/notes/MySQL.md +++ /dev/null @@ -1,400 +0,0 @@ - -* [一、存储引擎](#一存储引擎) - * [InnoDB](#innodb) - * [MyISAM](#myisam) - * [比较](#比较) -* [二、数据类型](#二数据类型) - * [整型](#整型) - * [浮点数](#浮点数) - * [字符串](#字符串) - * [时间和日期](#时间和日期) -* [三、索引](#三索引) - * [索引分类](#索引分类) - * [索引的优点](#索引的优点) - * [索引优化](#索引优化) - * [B-Tree 和 B+Tree 原理](#b-tree-和-b+tree-原理) -* [四、查询性能优化](#四查询性能优化) -* [五、分库与分表](#五分库与分表) - * [原因](#原因) - * [实现方式](#实现方式) - * [Merge 存储引擎](#merge-存储引擎) - * [存在的问题](#存在的问题) - * [分表与分区的不同](#分表与分区的不同) -* [六、故障转移和故障恢复](#六故障转移和故障恢复) -* [参考资料](#参考资料) - - - -# 一、存储引擎 - -## InnoDB - -InnoDB 是 MySQL 默认的事务型存储引擎,只有在需要 InnoDB 不支持的特性时,才考虑使用其它存储引擎。 - -采用 MVCC 来支持高并发,并且实现了四个标准的隔离级别,默认级别是可重复读。 - -表是基于聚簇索引建立的,它对主键的查询性能有很高的提升。 - -内部做了很多优化,包括从磁盘读取数据时采用的可预测性读、能够自动在内存中创建哈希索引以加速读操作的自适应哈希索引、能够加速插入操作的插入缓冲区等。 - -通过一些机制和工具支持真正的热备份。 - -## MyISAM - -MyISAM 提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等。但 MyISAM 不支持事务和行级锁,而且崩溃后无法安全恢复。 - -只能对整张表加锁,而不是针对行。 - -可以手工或者自动执行检查和修复操作,但是和事务恢复以及崩溃恢复不同,可能导致一些数据丢失,而且修复操作是非常慢的。 - -可以包含动态或者静态的行。 - -如果指定了 DELAY_KEY_WRITE 选项,在每次修改执行完成时,不会立即将修改的索引数据写入磁盘,而是会写到内存中的键缓冲区,只有在清理键缓冲区或者关闭表的时候才会将对应的索引块写入磁盘。这种方式可以极大的提升写入性能,但是在数据库或者主机崩溃时会造成索引损坏,需要执行修复操作。 - -如果表在创建并导入数据以后,不会再进行修改操作,那么这样的表适合采用 MyISAM 压缩表。 - -对于只读数据,或者表比较小、可以容忍修复操作,则依然可以继续使用 MyISAM。 - -MyISAM 设计简单,数据以紧密格式存储,所以在某些场景下性能很好。 - -## 比较 - -1. 事务:InnoDB 是事务型的。 -2. 备份:InnoDB 支持在线热备份。 -3. 崩溃恢复:MyISAM 崩溃后发生损坏的概率比 InnoDB 高很多,而且恢复的速度也更慢。 -4. 并发:MyISAM 只支持表级锁,而 InnoDB 还支持行级锁。 -5. 其它特性:MyISAM 支持全文索引,地理空间索引。 - -# 二、数据类型 - -## 整型 - -TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 分别使用 8, 16, 24, 32, 64 位存储空间,一般情况下越小的列越好。 - -INT(11) 中的数字只是规定了交互工具显示字符的个数,对于存储和计算来说是没有意义的。 - -## 浮点数 - -FLOAT 和 DOUBLE 为浮点类型,DECIMAL 为高精度小数类型。CPU 原生支持浮点运算,但是不支持 DECIMAl 类型的计算,因此 DECIMAL 的计算比浮点类型需要更高的代价。 - -FLOAT、DOUBLE 和 DECIMAL 都可以指定列宽,例如 DECIMAL(18, 9) 表示总共 18 位,取 9 位存储小数部分,剩下 9 位存储整数部分。 - -## 字符串 - -主要有 CHAR 和 VARCHAR 两种类型,一种是定长的,一种是变长的。 - -VARCHAR 这种变长类型能够节省空间,因为只需要存储必要的内容。但是在执行 UPDATE 时可能会使行变得比原来长,当超出一个页所能容纳的大小时,就要执行额外的操作。MyISAM 会将行拆成不同的片段存储,而 InnoDB 则需要分裂页来使行放进页内。 - -VARCHAR 会保留字符串末尾的空格,而 CHAR 会删除。 - -## 时间和日期 - -MySQL 提供了两种相似的日期时间类型:DATATIME 和 TIMESTAMP。 - -### 1. DATATIME - -能够保存从 1001 年到 9999 年的日期和时间,精度为秒,使用 8 字节的存储空间。 - -它与时区无关。 - -默认情况下,MySQL 以一种可排序的、无歧义的格式显示 DATATIME 值,例如“2008-01-16 22:37:08”,这是 ANSI 标准定义的日期和时间表示方法。 - -### 2. TIMESTAMP - -和 UNIX 时间戳相同,保存从 1970 年 1 月 1 日午夜(格林威治时间)以来的秒数,使用 4 个字节,只能表示从 1970 年 到 2038 年。 - -它和时区有关。 - -MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提供了 UNIX_TIMESTAMP() 函数把日期转换为 UNIX 时间戳。 - -默认情况下,如果插入时没有指定 TIMESTAMP 列的值,会将这个值设置为当前时间。 - -应该尽量使用 TIMESTAMP,因为它比 DATETIME 空间效率更高。 - -# 三、索引 - -索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现。 - -索引能够轻易将查询性能提升几个数量级。 - -对于非常小的表、大部分情况下简单的全表扫描比建立索引更高效。对于中到大型的表,索引就非常有效。但是对于特大型的表,建立和使用索引的代价将会随之增长。这种情况下,需要用到一种技术可以直接区分出需要查询的一组数据,而不是一条记录一条记录地匹配,例如可以使用分区技术。 - -## 索引分类 - -### 1. B-Tree 索引 - -B-Tree 索引是大多数 MySQL 存储引擎的默认索引类型。 - -因为不再需要进行全表扫描,只需要对树进行搜索即可,因此查找速度快很多。 - -可以指定多个列作为索引列,多个索引列共同组成键。B-Tree 索引适用于全键值、键值范围和键前缀查找,其中键前缀查找只适用于最左前缀查找。 - -除了用于查找,还可以用于排序和分组。 - -如果不是按照索引列的顺序进行查找,则无法使用索引。 - -### 2. 哈希索引 - -基于哈希表实现,优点是查找非常快。 - -在 MySQL 中只有 Memory 引擎显式支持哈希索引。 - -InnoDB 引擎有一个特殊的功能叫“自适应哈希索引”,当某个索引值被使用的非常频繁时,会在 B-Tree 索引之上再创建一个哈希索引,这样就让 B-Tree 索引具有哈希索引的一些优点,比如快速的哈希查找。 - -限制:哈希索引只包含哈希值和行指针,而不存储字段值,所以不能使用索引中的值来避免读取行。不过,访问内存中的行的速度很快,所以大部分情况下这一点对性能影响并不明显;无法用于分组与排序;只支持精确查找,无法用于部分查找和范围查找;如果哈希冲突很多,查找速度会变得很慢。 - -### 3. 空间索引(R-Tree) - -MyISAM 存储引擎支持空间索引,可以用于地理数据存储。 - -空间索引会从所有维度来索引数据,可以有效地使用任意维度来进行组合查询。 - -### 4. 全文索引 - -MyISAM 存储引擎支持全文索引,用于查找文本中的关键词,而不是直接比较索引中的值。 - -使用 MATCH AGAINST,而不是普通的 WHERE。 - -## 索引的优点 - -- 大大减少了服务器需要扫描的数据量; - -- 帮助服务器避免进行排序和创建临时表; - -- 将随机 I/O 变为顺序 I/O。 - -## 索引优化 - -### 1. 独立的列 - -在进行查询时,索引列不能是表达式的一部分,也不能是函数的参数,否则无法使用索引。 - -例如下面的查询不能使用 actor_id 列的索引: - -```sql -SELECT actor_id FROM sakila.actor WHERE actor_id + 1 = 5; -``` - -### 2. 前缀索引 - -对于 BLOB、TEXT 和 VARCHAR 类型的列,必须使用前缀索引,只索引开始的部分字符。 - -对于前缀长度的选取需要根据 **索引选择性** 来确定:不重复的索引值和记录总数的比值。选择性越高,查询效率也越高。最大值为 1 ,此时每个记录都有唯一的索引与其对应。 - -### 3. 多列索引 - -在需要使用多个列作为条件进行查询时,使用多列索引比使用多个单列索引性能更好。例如下面的语句中,最好把 actor_id 和 film_id 设置为多列索引。 - -```sql -SELECT film_id, actor_ id FROM sakila.film_actor -WhERE actor_id = 1 AND film_id = 1; -``` - -### 4. 索引列的顺序 - -让选择性最强的索引列放在前面,例如下面显示的结果中 customer_id 的选择性比 staff_id 更高,因此最好把 customer_id 列放在多列索引的前面。 - -```sql -SELECT COUNT(DISTINCT staff_id)/COUNT(*) AS staff_id_selectivity, -COUNT(DISTINCT customer_id)/COUNT(*) AS customer_id_selectivity, -COUNT(*) -FROM payment; -``` - -```html - staff_id_selectivity: 0.0001 -customer_id_selectivity: 0.0373 - COUNT(*): 16049 -``` - -### 5. 聚簇索引 - -

    - -聚簇索引并不是一种索引类型,而是一种数据存储方式。 - -术语“聚簇”表示数据行和相邻的键值紧密地存储在一起,InnoDB 的聚簇索引的数据行存放在 B-Tree 的叶子页中。 - -因为无法把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。 - -#### 优点 - -1. 可以把相关数据保存在一起,减少 I/O 操作; -2. 因为数据保存在 B-Tree 中,因此数据访问更快。 - -#### 缺点 - -1. 聚簇索引最大限度提高了 I/O 密集型应用的性能,但是如果数据全部放在内存,就没必要用聚簇索引。 -2. 插入速度严重依赖于插入顺序,按主键的顺序插入是最快的。 -3. 更新操作代价很高,因为每个被更新的行都会移动到新的位置。 -4. 当插入到某个已满的页中,存储引擎会将该页分裂成两个页面来容纳该行,页分裂会导致表占用更多的磁盘空间。 -5. 如果行比较稀疏,或者由于页分裂导致数据存储不连续时,聚簇索引可能导致全表扫描速度变慢。 - -### 6. 覆盖索引 - -索引包含所有需要查询的字段的值。 - -#### 优点 - -1. 因为索引条目通常远小于数据行的大小,所以若只读取索引,能大大减少数据访问量。 -2. 一些存储引擎(例如 MyISAM)在内存中只缓存索引,而数据依赖于操作系统来缓存。因此,只访问索引可以不使用系统调用(通常比较费时)。 -3. 对于 InnoDB 引擎,若二级索引能够覆盖查询,则无需访问聚簇索引。 - -## B-Tree 和 B+Tree 原理 - -### 1. B-Tree - -

    - -为了描述 B-Tree,首先定义一条数据记录为一个二元组 [key, data],key 为记录的键,data 为数据记录除 key 外的数据。 - -B-Tree 是满足下列条件的数据结构: - -- 所有叶节点具有相同的深度,也就是说 B-Tree 是平衡的; -- 一个节点中的 key 从左到右非递减排列; -- 如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于 keyi 且小于 keyi+1。 - -在 B-Tree 中按 key 检索数据的算法非常直观:首先从根节点进行二分查找,如果找到则返回对应节点的 data,否则对相应区间的指针指向的节点递归进行查找,直到找到节点或找到 null 指针,前者查找成功,后者查找失败。 - -由于插入删除新的数据记录会破坏 B-Tree 的性质,因此在插入删除时,需要对树进行一个分裂、合并、转移等操作以保持 B-Tree 性质。 - -### 2. B+Tree - -

    - -与 B-Tree 相比,B+Tree 有以下不同点: - -- 每个节点的指针上限为 2d 而不是 2d+1; -- 内节点不存储 data,只存储 key,叶子节点不存储指针。 - -### 3. 带有顺序访问指针的 B+Tree - -

    - -一般在数据库系统或文件系统中使用的 B+Tree 结构都在经典 B+Tree 基础上进行了优化,在叶子节点增加了顺序访问指针,做这个优化的目的是为了提高区间访问的性能。 - -### 4. 为什么使用 B-Tree 和 B+Tree - -红黑树等数据结构也可以用来实现索引,但是文件系统及数据库系统普遍采用 B-/+Tree 作为索引结构。 - -页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每个存储块称为一页(在许多操作系统中,页得大小通常为 4k),主存和磁盘以页为单位交换数据。 - -一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。为了减少磁盘 I/O,磁盘往往不是严格按需读取,而是每次都会预读。这样做的理论依据是计算机科学中著名的局部性原理:当一个数据被用到时,其附近的数据也通常会马上被使用。数据库系统的设计者巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次 I/O 就可以完全载入。B-Tree 中一次检索最多需要 h-1 次 I/O(根节点常驻内存),渐进复杂度为 O(h)=O(logdN)。一般实际应用中,出度 d 是非常大的数字,通常超过 100,因此 h 非常小(通常不超过 3)。而红黑树这种结构,h 明显要深的多。并且于逻辑上很近的节点(父子)物理上可能很远,无法利用局部性,效率明显比 B-Tree 差很多。 - -B+Tree 更适合外存索引,原因和内节点出度 d 有关。由于 B+Tree 内节点去掉了 data 域,因此可以拥有更大的出度,拥有更好的性能。 - -# 四、查询性能优化 - -### Explain - -用来分析 SQL 语句,分析结果中比较重要的字段有: - -- select_type : 查询类型,有简单查询、联合查询和子查询 - -- key : 使用的索引 - -- rows : 扫描的行数 - -### 减少返回的列 - -慢查询主要是因为访问了过多数据,除了访问过多行之外,也包括访问过多列。 - -最好不要使用 SELECT * 语句,要根据需要选择查询的列。 - -### 减少返回的行 - -最好使用 LIMIT 语句来取出想要的那些行。 - -还可以建立索引来减少条件语句的全表扫描。例如对于下面的语句,不使用索引的情况下需要进行全表扫描,而使用索引只需要扫描几行记录即可,使用 Explain 语句可以通过观察 rows 字段来看出这种差异。 - -```sql -SELECT * FROM sakila.film_actor WHERE film_id = 1; -``` - -### 拆分大的 DELETE 或 INSERT 语句 - -如果一次性执行的话,可能一次锁住很多数据、占满整个事务日志、耗尽系统资源、阻塞很多小的但重要的查询。 - -```sql -DELEFT FROM messages WHERE create < DATE_SUB(NOW(), INTERVAL 3 MONTH); -``` -```sql -rows_affected = 0 -do { - rows_affected = do_query( - "DELETE FROM messages WHERE create < DATE_SUB(NOW(), INTERVAL 3 MONTH) LIMIT 10000") -} while rows_affected > 0 -``` - -# 五、分库与分表 - -## 原因 - -随着时间和业务的发展,数据库中的表会越来越多,并且表中的数据量也会越来越大,那么读写操作的开销也会随着增大。 - -## 实现方式 - -### 1. 垂直切分 - -将表按功能模块、关系密切程度划分出来,部署到不同的库上。例如,我们会建立商品数据库 payDB、用户数据库 userDB 等,分别用来存储项目与商品有关的表和与用户有关的表。 - -### 2. 水平切分 - -把表中的数据按照某种规则存储到多个结构相同的表中,例如按 id 的散列值、性别等进行划分。 - -### 3. 切分的选择 - -如果数据库中的表太多,并且项目各项业务逻辑清晰,那么垂直切分是首选。 - -如果数据库的表不多,但是单表的数据量很大,应该选择水平切分。 - -## Merge 存储引擎 - -该存储引擎支持分表。 - -## 存在的问题 - -### 1. 事务问题 - -在执行分库分表之后,由于数据存储到了不同的库上,数据库事务管理出现了困难。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。 - -### 2. 跨库跨表连接问题 - -在执行了分库分表之后,难以避免会将原本逻辑关联性很强的数据划分到不同的表、不同的库上。这时,表的连接操作将受到限制,我们无法连接位于不同分库的表,也无法连接分表粒度不同的表,导致原本只需要一次查询就能够完成的业务需要进行多次才能完成。 - -### 3. 额外的数据管理负担和数据运算压力 - -最显而易见的就是数据的定位问题和数据的增删改查的重复执行问题,这些都可以通过应用程序解决,但必然引起额外的逻辑运算。 - -## 分表与分区的不同 - -分表,就是将一张表分成多个小表,这些小表拥有不同的表名;而分区是将一张表的数据分为多个区块,这些区块可以存储在同一个磁盘上,也可以存储在不同的磁盘上,这种方式下表仍然只有一个。 - -# 六、故障转移和故障恢复 - -故障转移也叫做切换,当主库出现故障时就切换到备库,使备库成为主库。故障恢复顾名思义就是从故障中恢复过来,并且保证数据的正确性。 - -### 提升备库或切换角色 - -提升一台备库为主库,或者在一个主-主复制结构中调整主动和被动角色。 - -### 虚拟 IP 地址和 IP 托管 - -为 MySQL 实例指定一个逻辑 IP 地址,当 MySQL 实例失效时,可以将 IP 地址转移到另一台 MySQL 服务器上。 - -### 中间件解决方案 - -通过代理,可以路由流量到可以使用的服务器上。 - -

    - -### 在应用中处理故障转移 - -将故障转移整合到应用中可能导致应用变得太过笨拙。 - -# 参考资料 - -- 高性能 MySQL -- [MySQL 索引背后的数据结构及算法原理 ](http://blog.codinglabs.org/articles/theory-of-mysql-index.html) -- [20+ 条 MySQL 性能优化的最佳经验 ](https://www.jfox.info/20-tiao-mysql-xing-nen-you-hua-de-zui-jia-jing-yan.html) -- [数据库为什么分库分表?mysql的分库分表方案](https://www.i3geek.com/archives/1108) diff --git a/notes/Redis.md b/notes/Redis.md deleted file mode 100644 index b882428b..00000000 --- a/notes/Redis.md +++ /dev/null @@ -1,460 +0,0 @@ - -* [一、Redis 是什么](#一redis-是什么) -* [二、五种基本类型](#二五种基本类型) - * [1. STRING](#1-string) - * [2. LIST](#2-list) - * [3. SET](#3-set) - * [4. HASH](#4-hash) - * [5. ZSET](#5-zset) -* [三、键的过期时间](#三键的过期时间) -* [四、发布与订阅](#四发布与订阅) -* [五、事务](#五事务) -* [六、持久化](#六持久化) - * [1. 快照持久化](#1-快照持久化) - * [2. AOF 持久化](#2-aof-持久化) -* [七、复制](#七复制) - * [从服务器连接主服务器的过程](#从服务器连接主服务器的过程) - * [主从链](#主从链) -* [八、处理故障](#八处理故障) -* [九、分片](#九分片) - * [1. 客户端分片](#1-客户端分片) - * [2. 代理分片](#2-代理分片) - * [3. 服务器分片](#3-服务器分片) -* [十、事件](#十事件) - * [事件类型](#事件类型) - * [事件的调度与执行](#事件的调度与执行) -* [十一、Redis 与 Memcached 的区别](#十一redis-与-memcached-的区别) - * [数据类型](#数据类型) - * [数据持久化](#数据持久化) - * [分布式](#分布式) - * [内存管理机制](#内存管理机制) -* [十二、Redis 适用场景](#十二redis-适用场景) - * [缓存](#缓存) - * [消息队列](#消息队列) - * [计数器](#计数器) - * [好友关系](#好友关系) -* [十三、数据淘汰策略](#十三数据淘汰策略) -* [十四、一个简单的论坛系统分析](#十四一个简单的论坛系统分析) - * [文章信息](#文章信息) - * [点赞功能](#点赞功能) - * [对文章进行排序](#对文章进行排序) -* [参考资料](#参考资料) - - - -# 一、Redis 是什么 - -Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。 - -五种类型数据类型为:字符串、列表、集合、有序集合、散列表。 - -Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。 - -# 二、五种基本类型 - -| 数据类型 | 可以存储的值 | 操作 | -| -- | -- | -- | -| STRING | 字符串、整数或者浮点数 | 对整个字符串或者字符串的其中一部分执行操作
    对整数和浮点数执行自增或者自减操作 | -| LIST | 链表 | 从两端压入或者弹出元素
    读取单个或者多个元素
    进行修剪,只保留一个范围内的元素 | -| SET | 无序集合 | 添加、获取、移除单个元素
    检查一个元素是否存在于集合中
    计算交集、并集、差集
    从集合里面随机获取元素 | -| HASH | 包含键值对的无序散列表 | 添加、获取、移除单个键值对
    获取所有键值对
    检查某个键是否存在| -| ZSET | 有序集合 | 添加、获取、删除元素个元素
    根据分值范围或者成员来获取元素
    计算一个键的排名 | - -> [What Redis data structures look like](https://redislabs.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/) - -## 1. STRING - -

    - -```html -> set hello world -OK -> get hello -"world" -> del hello -(integer) 1 -> get hello -(nil) -``` - -## 2. LIST - -

    - -```html -> rpush list-key item -(integer) 1 -> rpush list-key item2 -(integer) 2 -> rpush list-key item -(integer) 3 - -> lrange list-key 0 -1 -1) "item" -2) "item2" -3) "item" - -> lindex list-key 1 -"item2" - -> lpop list-key -"item" - -> lrange list-key 0 -1 -1) "item2" -2) "item" -``` - -## 3. SET - -

    - -```html -> sadd set-key item -(integer) 1 -> sadd set-key item2 -(integer) 1 -> sadd set-key item3 -(integer) 1 -> sadd set-key item -(integer) 0 - -> smembers set-key -1) "item" -2) "item2" -3) "item3" - -> sismember set-key item4 -(integer) 0 -> sismember set-key item -(integer) 1 - -> srem set-key item2 -(integer) 1 -> srem set-key item2 -(integer) 0 - -> smembers set-key -1) "item" -2) "item3" -``` - -## 4. HASH - -

    - -```html -> hset hash-key sub-key1 value1 -(integer) 1 -> hset hash-key sub-key2 value2 -(integer) 1 -> hset hash-key sub-key1 value1 -(integer) 0 - -> hgetall hash-key -1) "sub-key1" -2) "value1" -3) "sub-key2" -4) "value2" - -> hdel hash-key sub-key2 -(integer) 1 -> hdel hash-key sub-key2 -(integer) 0 - -> hget hash-key sub-key1 -"value1" - -> hgetall hash-key -1) "sub-key1" -2) "value1" -``` - -## 5. ZSET - -

    - -```html -> zadd zset-key 728 member1 -(integer) 1 -> zadd zset-key 982 member0 -(integer) 1 -> zadd zset-key 982 member0 -(integer) 0 - -> zrange zset-key 0 -1 withscores -1) "member1" -2) "728" -3) "member0" -4) "982" - -> zrangebyscore zset-key 0 800 withscores -1) "member1" -2) "728" - -> zrem zset-key member1 -(integer) 1 -> zrem zset-key member1 -(integer) 0 - -> zrange zset-key 0 -1 withscores -1) "member0" -2) "982" -``` - -# 三、键的过期时间 - -Redis 可以为每个键设置过期时间,当键过期时,会自动删除该键。 - -对于散列表这种容器,只能为整个键设置过期时间(整个散列表),而不能为键里面的单个元素设置过期时间。 - -过期时间对于清理缓存数据非常有用。 - -# 四、发布与订阅 - -发布与订阅实际上是观察者模式,订阅者订阅了频道之后,发布者向频道发送字符串消息会被所有订阅者接收到。 - -发布与订阅有一些问题,很少使用它,而是使用替代的解决方案。问题如下: - -1. 如果订阅者读取消息的速度很慢,会使得消息不断积压在发布者的输出缓存区中,造成内存占用过多; -2. 如果订阅者在执行订阅的过程中网络出现问题,那么就会丢失断线期间发送的所有消息。 - -# 五、事务 - -Redis 最简单的事务实现方式是使用 MULTI 和 EXEC 命令将事务操作包围起来。 - -MULTI 和 EXEC 中的操作将会一次性发送给服务器,而不是一条一条发送,这种方式称为流水线,它可以减少客户端与服务器之间的网络通信次数从而提升性能。 - -# 六、持久化 - -Redis 是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上。 - -## 1. 快照持久化 - -将某个时间点的所有数据都存放到硬盘上。 - -可以将快照复制到其它服务器从而创建具有相同数据的服务器副本。 - -如果系统发生故障,将会丢失最后一次创建快照之后的数据。并且如果数据量很大,保存快照的时间也会很长。 - -## 2. AOF 持久化 - -AOF 持久化将写命令添加到 AOF 文件(Append Only File)的末尾。 - -对硬盘的文件进行写入时,写入的内容首先会被存储到缓冲区,然后由操作系统决定什么时候将该内容同步到硬盘,用户可以调用 file.flush() 方法请求操作系统尽快将缓冲区存储的数据同步到硬盘。因此将写命令添加到 AOF 文件时,要根据需求来保证何时将添加的数据同步到硬盘上,有以下同步选项: - -| 选项 | 同步频率 | -| -- | -- | -| always | 每个写命令都同步 | -| everysec | 每秒同步一次 | -| no | 让操作系统来决定何时同步 | - -always 选项会严重减低服务器的性能;everysec 选项比较合适,可以保证系统奔溃时只会丢失一秒左右的数据,并且 Redis 每秒执行一次同步对服务器性能几乎没有任何影响;no 选项并不能给服务器性能带来多大的提升,而且也会增加系统奔溃时数据丢失的数量。 - -随着服务器写请求的增多,AOF 文件会越来越大;Redis 提供了一种将 AOF 重写的特性,能够去除 AOF 文件中的冗余写命令。 - -# 七、复制 - -通过使用 slaveof host port 命令来让一个服务器成为另一个服务器的从服务器。 - -一个从服务器只能有一个主服务器,并且不支持主主复制。 - -## 从服务器连接主服务器的过程 - -1. 主服务器创建快照文件,发送给从服务器,并在发送期间使用缓冲区记录执行的写命令。快照文件发送完毕之后,开始向从服务器发送存储在缓冲区中的写命令; - -2. 从服务器丢弃所有旧数据,载入主服务器发来的快照文件,之后从服务器开始接受主服务器发来的写命令; - -3. 主服务器每执行一次写命令,就向从服务器发送相同的写命令。 - -## 主从链 - -随着负载不断上升,主服务器可能无法很快地更新所有从服务器,或者重新连接和重新同步从服务器将导致系统超载。为了解决这个问题,可以创建一个中间层来分担主服务器的复制工作。中间层的服务器是最上层服务器的从服务器,又是最下层服务器的主服务器。 - -

    - -# 八、处理故障 - -要用到持久化文件来恢复服务器的数据。 - -持久化文件可能因为服务器出错也有错误,因此要先对持久化文件进行验证和修复。对 AOF 文件就行验证和修复很容易,修复操作将第一个出错命令和其后的所有命令都删除;但是只能验证快照文件,无法对快照文件进行修复,因为快照文件进行了压缩,出现在快照文件中间的错误可能会导致整个快照文件的剩余部分无法读取。 - -当主服务器出现故障时,Redis 常用的做法是新开一台服务器作为主服务器,具体步骤如下:假设 A 为主服务器,B 为从服务器,当 A 出现故障时,让 B 生成一个快照文件,将快照文件发送给 C,并让 C 恢复快照文件的数据。最后,让 B 成为 C 的从服务器。 - -# 九、分片 - -Redis 中的分片类似于 MySQL 的分表操作,分片是将数据划分为多个部分的方法,对数据的划分可以基于键包含的 ID、基于键的哈希值,或者基于以上两者的某种组合。通过对数据进行分片,用户可以将数据存储到多台机器里面,也可以从多台机器里面获取数据,这种方法在解决某些问题时可以获得线性级别的性能提升。 - -假设有 4 个 Reids 实例 R0,R1,R2,R3,还有很多表示用户的键 user:1,user:2,... 等等,有不同的方式来选择一个指定的键存储在哪个实例中。最简单的方式是范围分片,例如用户 id 从 0\~1000 的存储到实例 R0 中,用户 id 从 1001\~2000 的存储到实例 R1 中,等等。但是这样需要维护一张映射范围表,维护操作代价很高。还有一种方式是哈希分片,使用 CRC32 哈希函数将键转换为一个数字,再对实例数量求模就能知道应该存储的实例。 - -## 1. 客户端分片 - -客户端使用一致性哈希等算法决定键应当分布到哪个节点。 - -## 2. 代理分片 - -将客户端请求发送到代理上,由代理转发请求到正确的节点上。 - -## 3. 服务器分片 - -Redis Cluster。 - -# 十、事件 - -## 事件类型 - -### 1. 文件事件 - -服务器有许多套接字,事件产生时会对这些套接字进行操作,服务器通过监听套接字来处理事件。常见的文件事件有:客户端的连接事件;客户端的命令请求事件;服务器向客户端返回命令结果的事件; - -### 2. 时间事件 - -又分为两类:定时事件是让一段程序在指定的时间之内执行一次;周期性时间是让一段程序每隔指定时间就执行一次。 - -## 事件的调度与执行 - -服务器需要不断监听文件事件的套接字才能得到待处理的文件事件,但是不能监听太久,否则时间事件无法在规定的时间内执行,因此监听时间应该根据距离现在最近的时间事件来决定。 - -事件调度与执行由 aeProcessEvents 函数负责,伪代码如下: - -```python -def aeProcessEvents(): - - # 获取到达时间离当前时间最接近的时间事件 - time_event = aeSearchNearestTimer() - - # 计算最接近的时间事件距离到达还有多少毫秒 - remaind_ms = time_event.when - unix_ts_now() - - # 如果事件已到达,那么 remaind_ms 的值可能为负数,将它设为 0 - if remaind_ms < 0: - remaind_ms = 0 - - # 根据 remaind_ms 的值,创建 timeval - timeval = create_timeval_with_ms(remaind_ms) - - # 阻塞并等待文件事件产生,最大阻塞时间由传入的 timeval 决定 - aeApiPoll(timeval) - - # 处理所有已产生的文件事件 - procesFileEvents() - - # 处理所有已到达的时间事件 - processTimeEvents() -``` - -将 aeProcessEvents 函数置于一个循环里面,加上初始化和清理函数,就构成了 Redis 服务器的主函数,伪代码如下: - -```python -def main(): - - # 初始化服务器 - init_server() - - # 一直处理事件,直到服务器关闭为止 - while server_is_not_shutdown(): - aeProcessEvents() - - # 服务器关闭,执行清理操作 - clean_server() -``` - -从事件处理的角度来看,服务器运行流程如下: - -

    - -# 十一、Redis 与 Memcached 的区别 - -两者都是非关系型内存键值数据库。有以下主要不同: - -## 数据类型 - -Memcached 仅支持字符串类型,而 Redis 支持五种不同种类的数据类型,使得它可以更灵活地解决问题。 - -## 数据持久化 - -Redis 支持两种持久化策略:RDB 快照和 AOF 日志,而 Memcached 不支持持久化。 - -## 分布式 - -Memcached 不支持分布式,只能通过在客户端使用像一致性哈希这样的分布式算法来实现分布式存储,这种方式在存储和查询时都需要先在客户端计算一次数据所在的节点。 - -Redis Cluster 实现了分布式的支持。 - -## 内存管理机制 - -在 Redis 中,并不是所有数据都一直存储在内存中,可以将一些很久没用的 value 交换到磁盘。而 Memcached 的数据则会一直在内存中。 - -Memcached 将内存分割成特定长度的块来存储数据,以完全解决内存碎片的问题,但是这种方式会使得内存的利用率不高,例如块的大小为 128 bytes,只存储 100 bytes 的数据,那么剩下的 28 bytes 就浪费掉了。 - -# 十二、Redis 适用场景 - -## 缓存 - -适用 Redis 作为缓存,将热点数据放到内存中。 - -## 消息队列 - -Redis 的 List 类型是双向链表,很适合用于消息队列。 - -## 计数器 - -Redis 这种内存数据库才能支持计数器的频繁读写操作。 - -## 好友关系 - -使用 set 类型的交集很容易就可以知道两个用户的共同好友。 - -# 十三、数据淘汰策略 - -可以设置内存最大使用量,当内存使用量超过时施行淘汰策略,具体有 6 种淘汰策略。 - -| 策略 | 描述 | -| -- | -- | -| volatile-lru | 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰 | -| volatile-ttl | 从已设置过期时间的数据集中挑选将要过期的数据淘汰 | -|volatile-random | 从已设置过期时间的数据集中任意选择数据淘汰 | -| allkeys-lru | 从所有数据集中挑选最近最少使用的数据淘汰 | -| allkeys-random | 从所有数据集中任意选择数据进行淘汰 | -| no-envicition | 禁止驱逐数据 | - -如果使用 Redis 来缓存数据时,要保证所有数据都是热点数据,可以将内存最大使用量设置为热点数据占用的内存量,然后启用 allkeys-lru 淘汰策略,将最近最少使用的数据淘汰。 - -# 十四、一个简单的论坛系统分析 - -该论坛系统功能如下: - -- 可以发布文章; -- 可以对文章进行点赞; -- 在首页可以按文章的发布时间或者文章的点赞数进行排序显示; - -## 文章信息 - -文章包括标题、作者、赞数等信息,在关系型数据库中很容易构建一张表来存储这些信息,在 Redis 中可以使用 HASH 来存储每种信息以及其对应的值的映射。 - -Redis 没有关系型数据库中的表这一概念来将同类型的数据存放在一起,而是使用命名空间的方式来实现这一功能。键名的前面部分存储命名空间,后面部分的内容存储 ID,通常使用 : 来进行分隔。例如下面的 HASH 的键名为 article:92617,其中 article 为命名空间,ID 为 92617。 - -

    - -## 点赞功能 - -当有用户为一篇文章点赞时,除了要对该文章的 votes 字段进行加 1 操作,还必须记录该用户已经对该文章进行了点赞,防止用户点赞次数超过 1。可以建立文章的已投票用户集合来进行记录。 - -为了节约内存,规定一篇文章发布满一周之后,就不能再对它进行投票,而文章的已投票集合也会被删除,可以为文章的已投票集合设置一个一周的过期时间就能实现这个规定。 - -

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

    - -# 参考资料 - -- Redis 实战 -- Reids 设计与实现 -- [REDIS IN ACTION](https://redislabs.com/ebook/foreword/) -- [论述 Redis 和 Memcached 的差异](http://www.cnblogs.com/loveincode/p/7411911.html) -- [Redis 3.0 中文版- 分片](http://wiki.jikexueyuan.com/project/redis-guide) -- [Redis 应用场景](http://www.scienjus.com/redis-use-case/) diff --git a/notes/SQL.md b/notes/SQL.md deleted file mode 100644 index 651c784a..00000000 --- a/notes/SQL.md +++ /dev/null @@ -1,732 +0,0 @@ - -* [一、基础](#一基础) -* [二、创建表](#二创建表) -* [三、修改表](#三修改表) -* [四、插入](#四插入) -* [五、更新](#五更新) -* [六、删除](#六删除) -* [七、查询](#七查询) -* [八、排序](#八排序) -* [九、过滤](#九过滤) -* [十、通配符](#十通配符) -* [十一、计算字段](#十一计算字段) -* [十二、函数](#十二函数) -* [十三、分组](#十三分组) -* [十四、子查询](#十四子查询) -* [十五、连接](#十五连接) -* [十六、组合查询](#十六组合查询) -* [十七、视图](#十七视图) -* [十八、存储过程](#十八存储过程) -* [十九、游标](#十九游标) -* [二十、触发器](#二十触发器) -* [二十一、事务处理](#二十一事务处理) -* [二十二、字符集](#二十二字符集) -* [二十三、权限管理](#二十三权限管理) - - - -# 一、基础 - -模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。 - -主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。 - -SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。 - -SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。 - -SQL 支持以下三种注释: - -```sql -# 注释 -SELECT * -FROM mytable; -- 注释 -/* 注释1 - 注释2 */ -``` - -# 二、创建表 - -```sql -CREATE TABLE mytable ( - id INT NOT NULL AUTO_INCREMENT, - col1 INT NOT NULL DEFAULT 1, - col2 VARCHAR(45) NULL, - col3 DATE NULL, - PRIMARY KEY (`id`)); -``` - -# 三、修改表 - -添加列 - -```sql -ALTER TABLE mytable -ADD col CHAR(20); -``` - -删除列 - -```sql -ALTER TABLE mytable -DROP COLUMN col; -``` - -删除表 - -```sql -DROP TABLE mytable; -``` - -# 四、插入 - -普通插入 - -```sql -INSERT INTO mytable(col1, col2) -VALUES(val1, val2); -``` - -插入检索出来的数据 - -```sql -INSERT INTO mytable1(col1, col2) -SELECT col1, col2 -FROM mytable2; -``` - -将一个表的内容插入到一个新表 - -```sql -CREATE TABLE newtable AS -SELECT * FROM mytable; -``` - -# 五、更新 - -```sql -UPDATE mytable -SET col = val -WHERE id = 1; -``` - -# 六、删除 - -```sql -DELETE FROM mytable -WHERE id = 1; -``` - -**TRUNCATE TABLE** 可以清空表,也就是删除所有行。 - -使用更新和删除操作时一定要用 WHERE 子句,不然会把整张表的数据都破坏。可以先用 SELECT 语句进行测试,防止错误删除。 - -# 七、查询 - -## DISTINCT - -相同值只会出现一次。它作用于所有列,也就是说所有列的值都相同才算相同。 - -```sql -SELECT DISTINCT col1, col2 -FROM mytable; -``` - -## LIMIT - -限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。 - -返回前 5 行: - -```sql -SELECT * -FROM mytable -LIMIT 5; -``` - -```sql -SELECT * -FROM mytable -LIMIT 0, 5; -``` - -返回第 3 \~ 5 行: - -```sql -SELECT * -FROM mytable -LIMIT 2, 3; -``` - - -# 八、排序 - -- **ASC** :升序(默认) -- **DESC** :降序 - -可以按多个列进行排序,并且为每个列指定不同的排序方式: - -```sql -SELECT * -FROM mytable -ORDER BY col1 DESC, col2 ASC; -``` - -# 九、过滤 - -不进行过滤的数据非常大,导致通过网络传输了很多多余的数据,从而浪费了网络带宽。因此尽量使用 SQL 语句来过滤不必要的数据,而不是传输所有的数据到客户端中然后由客户端进行过滤。 - -```sql -SELECT * -FROM mytable -WHERE col IS NULL; -``` - -下表显示了 WHERE 子句可用的操作符 - -| 操作符 | 说明 | -| ------------ | ------------ | -| = < > | 等于 小于 大于 | -| <> != | 不等于 | -| <= !> | 小于等于 | -| >= !< | 大于等于 | -| BETWEEN | 在两个值之间 | -| IS NULL | 为NULL值 | - -应该注意到,NULL 与 0 、空字符串都不同。 - -**AND OR** 用于连接多个过滤条件。优先处理 AND,因此当一个过滤表达式涉及到多个 AND 和 OR 时,应当使用 () 来决定优先级。 - -**IN** 操作符用于匹配一组值,其后也可以接一个 SELECT 子句,从而匹配子查询得到的一组值。 - -**NOT** 操作符用于否定一个条件。 - -# 十、通配符 - -通配符也是用在过滤语句中,但它只能用于文本字段。 - -- **%** 匹配 >=0 个任意字符,类似于 \*; - -- **\_** 匹配 ==1 个任意字符,类似于 \.; - -- **[ ]** 可以匹配集合内的字符,例如 [ab] 将匹配字符 a 或者 b。用脱字符 ^ 可以对其进行否定,也就是不匹配集合内的字符。 - -使用 Like 来进行通配符匹配。 - -```sql -SELECT * -FROM mytable -WHERE col LIKE '[^AB]%' -- 不以 A 和 B 开头的任意文本 -``` -不要滥用通配符,通配符位于开头处匹配会非常慢。 - -# 十一、计算字段 - -在数据库服务器上完成数据的转换和格式化的工作往往比客户端上快得多,并且转换和格式化后的数据量更少的话可以减少网络通信量。 - -计算字段通常需要使用 **AS** 来取别名,否则输出的时候字段名为计算表达式。 - -```sql -SELECT col1*col2 AS alias -FROM mytable -``` - -**CONCAT()** 用于连接两个字段。许多数据库会使用空格把一个值填充为列宽,因此连接的结果会出现一些不必要的空格,使用 **TRIM()** 可以去除首尾空格。 - -```sql -SELECT CONCAT(TRIM(col1), ' (', TRIM(col2), ')') -FROM mytable -``` - -# 十二、函数 - -各个 DBMS 的函数都是不相同的,因此不可移植。 - -## 文本处理 - -| 函数 | 说明 | -| ------------ | ------------ | -| LEFT() RIGHT() | 左边或者右边的字符 | -| LOWER() UPPER() | 转换为小写或者大写 | -| LTRIM() RTIM() | 去除左边或者右边的空格 | -| LENGTH() | 长度 | -| SUNDEX() | 转换为语音值 | - -其中, **SOUNDEX()** 是将一个字符串转换为描述其语音表示的字母数字模式的算法,它是根据发音而不是字母比较。 - -```sql -SELECT * -FROM mytable -WHERE SOUNDEX(col1) = SOUNDEX('apple') -``` - -## 日期和时间处理 - -- 日期格式:YYYY-MM-DD -- 时间格式:HH:MM:SS - -|函 数 | 说 明| -| --- | --- | -| AddDate() | 增加一个日期(天、周等)| -| AddTime() | 增加一个时间(时、分等)| -| CurDate() | 返回当前日期 | -| CurTime() | 返回当前时间 | -| Date() |返回日期时间的日期部分| -| DateDiff() |计算两个日期之差| -| Date_Add() |高度灵活的日期运算函数| -| Date_Format() |返回一个格式化的日期或时间串| -| Day()| 返回一个日期的天数部分| -| DayOfWeek() |对于一个日期,返回对应的星期几| -| Hour() |返回一个时间的小时部分| -| Minute() |返回一个时间的分钟部分| -| Month() |返回一个日期的月份部分| -| Now() |返回当前日期和时间| -| Second() |返回一个时间的秒部分| -| Time() |返回一个日期时间的时间部分| -| Year() |返回一个日期的年份部分| - -```sql -mysql> SELECT NOW(); - -> '2017-06-28 14:01:52' -``` - -## 数值处理 - -| 函数 | 说明 | -| --- | --- | -| SIN() | 正弦 | -| COS() | 余弦 | -| TAN() | 正切 | -| ABS() | 绝对值 | -| SQRT() | 平方根 | -| MOD() | 余数 | -| EXP() | 指数 | -| PI() | 圆周率 | -| RAND() | 随机数 | - -## 汇总 - -|函 数 |说 明| -| --- | --- | -| AVG() | 返回某列的平均值 | -| COUNT() | 返回某列的行数 | -| MAX() | 返回某列的最大值 | -| MIN() | 返回某列的最小值 | -| SUM() |返回某列值之和 | - -AVG() 会忽略 NULL 行。 - -使用 DISTINCT 可以汇总函数值汇总不同的值。 - -```sql -SELECT AVG(DISTINCT col1) AS avg_col -FROM mytable -``` - -# 十三、分组 - -分组就是把具有相同的数据值的行放在同一组中。 - -可以对同一分组数据使用汇总函数进行处理,例如求分组数据的平均值等。 - -指定的分组字段除了能让数组按该字段进行分组,也可以按该字段进行排序,例如按 col 字段排序并分组数据: - -```sql -SELECT col, COUNT(*) AS num -FROM mytable -GROUP BY col; -``` - -WHERE 过滤行,HAVING 过滤分组。行过滤应当先与分组过滤; - -```sql -SELECT col, COUNT(*) AS num -FROM mytable -WHERE col > 2 -GROUP BY col -HAVING COUNT(*) >= 2; -``` - -GROUP BY 的排序结果为分组字段,而 ORDER BY 也可以以聚集字段来进行排序。 - -```sql -SELECT col, COUNT(*) AS num -FROM mytable -GROUP BY col -ORDER BY num; -``` - -分组规定: - -1. GROUP BY 子句出现在 WHERE 子句之后,ORDER BY 子句之前; -2. 除了汇总计算语句的字段外,SELECT 语句中的每一字段都必须在 GROUP BY 子句中给出; -3. NULL 的行会单独分为一组; -4. 大多数 SQL 实现不支持 GROUP BY 列具有可变长度的数据类型。 - -# 十四、子查询 - -子查询中只能返回一个字段的数据。 - -可以将子查询的结果作为 WHRER 语句的过滤条件: - -``` -SELECT * -FROM mytable1 -WHERE col1 IN (SELECT col2 - FROM mytable2); -``` - -下面的语句可以检索出客户的订单数量,子查询语句会对第一个查询检索出的每个客户执行一次: - -```sql -SELECT cust_name, (SELECT COUNT(*) - FROM Orders - WHERE Orders.cust_id = Customers.cust_id) - AS orders_num -FROM Customers -ORDER BY cust_name; -``` - -# 十五、连接 - -连接用于连接多个表,使用 JOIN 关键字,并且条件语句使用 ON 而不是 Where。 - -连接可以替换子查询,并且比子查询的效率一般会更快。 - -可以用 AS 给列名、计算字段和表名取别名,给表名取别名是为了简化 SQL 语句以及连接相同表。 - -## 内连接 - -内连接又称等值连接,使用 INNER JOIN 关键字。 - -```sql -select a, b, c -from A inner join B -on A.key = B.key -``` - -可以不明确使用 INNER JOIN,而使用普通查询并在 WHERE 中将两个表中要连接的列用等值方法连接起来。 - -```sql -select a, b, c -from A, B -where A.key = B.key -``` - -在没有条件语句的情况下返回笛卡尔积。 - -## 自连接 - -自连接可以看成内连接的一种,只是连接的表是自身而已。 - -一张员工表,包含员工姓名和员工所属部门,要找出与 Jim 处在同一部门的所有员工姓名。 - -子查询版本 - -```sql -select name -from employee -where department = ( - select department - from employee - where name = "Jim"); -``` - -自连接版本 - -```sql -select name -from employee as e1, employee as e2 -where e1.department = e2.department - and e1.name = "Jim"; -``` - -连接一般比子查询的效率高。 - -## 自然连接 - -自然连接是把同名列通过等值测试连接起来的,同名列可以有多个。 - -内连接和自然连接的区别:内连接提供连接的列,而自然连接自动连接所有同名列。 - -```sql -select * -from employee natural join department; -``` - -## 外连接 - -外连接保留了没有关联的那些行。分为左外连接,右外连接以及全外连接,左外连接就是保留左表没有关联的行。 - -检索所有顾客的订单信息,包括还没有订单信息的顾客。 - -```sql -select Customers.cust_id, Orders.order_num - from Customers left outer join Orders - on Customers.cust_id = Orders.curt_id; -``` - -如果需要统计顾客的订单数,使用聚集函数。 - -```sql -select Customers.cust_id, - COUNT(Orders.order_num) as num_ord -from Customers left outer join Orders -on Customers.cust_id = Orders.curt_id -group by Customers.cust_id; -``` - -# 十六、组合查询 - -使用 **UNION** 来组合两个查询,如果第一个查询返回 M 行,第二个查询返回 N 行,那么组合查询的结果为 M+N 行。 - -每个查询必须包含相同的列、表达式或者聚集函数。 - -默认会去除相同行,如果需要保留相同行,使用 UNION ALL。 - -只能包含一个 ORDER BY 子句,并且必须位于语句的最后。 - -```sql -SELECT col -FROM mytable -WHERE col = 1 -UNION -SELECT col -FROM mytable -WHERE col =2; -``` - -# 十七、视图 - -视图是虚拟的表,本身不包含数据,也就不能对其进行索引操作。对视图的操作和对普通表的操作一样。 - -视图具有如下好处: - -1. 简化复杂的 SQL 操作,比如复杂的联结; -2. 只使用实际表的一部分数据; -3. 通过只给用户访问视图的权限,保证数据的安全性; -4. 更改数据格式和表示。 - -```sql -CREATE VIEW myview AS -SELECT Concat(col1, col2) AS concat_col, col3*col4 AS count_col -FROM mytable -WHERE col5 = val; -``` - -# 十八、存储过程 - -存储过程可以看成是对一系列 SQL 操作的批处理; - -## 使用存储过程的好处 - -1. 代码封装,保证了一定的安全性; - -2. 代码复用; - -3. 由于是预先编译,因此具有很高的性能。 - -## 创建存储过程 - -命令行中创建存储过程需要自定义分隔符,因为命令行是以 ; 为结束符,而存储过程中也包含了分号,因此会错误把这部分分号当成是结束符,造成语法错误。 - -包含 in、out 和 inout 三种参数。 - -给变量赋值都需要用 select into 语句。 - -每次只能给一个变量赋值,不支持集合的操作。 - -```sql -delimiter // - -create procedure myprocedure( out ret int ) - begin - declare y int; - select sum(col1) - from mytable - into y; - select y*y into ret; - end // -delimiter ; -``` - -```sql -call myprocedure(@ret); -select @ret; -``` - -# 十九、游标 - -在存储过程中使用游标可以对一个结果集进行移动遍历。 - -游标主要用于交互式应用,其中用户需要对数据集中的任意行进行浏览和修改。 - -使用游标的四个步骤: - -1. 声明游标,这个过程没有实际检索出数据; -2. 打开游标; -3. 取出数据; -4. 关闭游标; - -```sql -delimiter // -create procedure myprocedure(out ret int) - begin - declare done boolean default 0; - - declare mycursor cursor for - select col1 from mytable; - # 定义了一个continue handler,当 sqlstate '02000' 这个条件出现时,会执行 set done = 1 - declare continue handler for sqlstate '02000' set done = 1; - - open mycursor; - - repeat - fetch mycursor into ret; - select ret; - until done end repeat; - - close mycursor; - end // - delimiter ; -``` - -# 二十、触发器 - -触发器会在某个表执行以下语句时而自动执行:DELETE、INSERT、UPDATE - -触发器必须指定在语句执行之前还是之后自动执行,之前执行使用 BEFORE 关键字,之后执行使用 AFTER 关键字。BEFORE 用于数据验证和净化。 - -INSERT 触发器包含一个名为 NEW 的虚拟表。 - -```sql -CREATE TRIGGER mytrigger AFTER INSERT ON mytable -FOR EACH ROW SELECT NEW.col; -``` - -DELETE 触发器包含一个名为 OLD 的虚拟表,并且是只读的。 - -UPDATE 触发器包含一个名为 NEW 和一个名为 OLD 的虚拟表,其中 NEW 是可以被修改地,而 OLD 是只读的。 - -可以使用触发器来进行审计跟踪,把修改记录到另外一张表中。 - -MySQL 不允许在触发器中使用 CALL 语句 ,也就是不能调用存储过程。 - -# 二十一、事务处理 - -基本术语: - -1. 事务(transaction)指一组 SQL 语句; -2. 回退(rollback)指撤销指定 SQL 语句的过程; -3. 提交(commit)指将未存储的 SQL 语句结果写入数据库表; -4. 保留点(savepoint)指事务处理中设置的临时占位符(placeholder),你可以对它发布回退(与回退整个事务处理不同)。 - -不能回退 SELECT 语句,回退 SELECT 语句也没意义;也不能回退 CRETE 和 DROP 语句。 - -MySQL 的事务提交默认是隐式提交,也就是每执行一条语句就把这条语句当成一个事务然后进行提交。当出现 START TRANSACTION 语句时,会关闭隐式提交;当 COMMIT 或 ROLLBACK 语句执行后,事务会自动关闭,重新恢复隐式提交。 - -通过设置 autocommit 为 0 可以取消自动提交,直到 autocommit 被设置为 1 才会提交;autocommit 标记是针对每个连接而不是针对服务器的。 - -如果没有设置保留点,ROLLBACK 会回退到 START TRANSACTION 语句处;如果设置了保留点,并且在 ROLLBACK 中指定该保留点,则会回退到该保留点。 - -```sql -START TRANSACTION -// ... -SAVEPOINT delete1 -// ... -ROLLBACK TO delete1 -// ... -COMMIT -``` - -# 二十二、字符集 - -基本术语: - -1. 字符集为字母和符号的集合; -2. 编码为某个字符集成员的内部表示; -3. 校对字符指定如何比较,主要用于排序和分组。 - -除了给表指定字符集和校对外,也可以给列指定: - -```sql -CREATE TABLE mytable -(col VARCHAR(10) CHARACTER SET latin COLLATE latin1_general_ci ) -DEFAULT CHARACTER SET hebrew COLLATE hebrew_general_ci; -``` - -可以在排序、分组时指定校对: - -```sql -SELECT * -FROM mytable -ORDER BY col COLLATE latin1_general_ci; -``` - -# 二十三、权限管理 - -MySQL 的账户信息保存在 mysql 这个数据库中。 - -```sql -USE mysql; -SELECT user FROM user; -``` - -## 创建账户 - -```sql -CREATE USER myuser IDENTIFIED BY 'mypassword'; -``` - -新创建的账户没有任何权限。 - -## 修改账户名 - -```sql -RENAME myuser TO newuser; -``` - -## 删除账户 - -```sql -DROP USER myuser; -``` - -## 查看权限 - -```sql -SHOW GRANTS FOR myuser; -``` - -## 授予权限 - -```sql -GRANT SELECT, INSERT ON mydatabase.* TO myuser; -``` - -

    - -账户用 username@host 的形式定义,username@% 使用的是默认主机名。 - -## 删除权限 - -```sql -REVOKE SELECT, INSERT ON mydatabase.* FROM myuser; -``` - -GRANT 和 REVOKE 可在几个层次上控制访问权限: - -- 整个服务器,使用 GRANT ALL 和 REVOKE ALL; -- 整个数据库,使用 ON database.\*; -- 特定的表,使用 ON database.table; -- 特定的列; -- 特定的存储过程。 - -## 更改密码 - -必须使用 Password() 函数 - -```sql -SET PASSWROD FOR myuser = Password('newpassword'); -``` - diff --git a/notes/一致性协议.md b/notes/一致性协议.md deleted file mode 100644 index e2b2486d..00000000 --- a/notes/一致性协议.md +++ /dev/null @@ -1,155 +0,0 @@ - -* [一、两阶段提交协议](#一两阶段提交协议) -* [二、Paxos 协议](#二paxos-协议) -* [三、Raft 协议](#三raft-协议) -* [四、拜占庭将军问题](#四拜占庭将军问题) -* [五、参考资料](#五参考资料) - - - -# 一、两阶段提交协议 - -Two-phase Commit(2PC)。 - -可以保证一个事务跨越多个节点时保持 ACID 特性。 - -两类节点:协调者(Coordinator)和参与者(Participants),协调者只有一个,参与者可以有多个。 - -## 运行过程 - -1. 准备阶段:协调者询问参与者事务是否执行成功; - -2. 提交阶段:如果事务在每个参与者上都执行成功,协调者发送通知让参与者提交事务;否则,协调者发送通知让参与者回滚事务。 - -

    - - -需要注意的是,在准备阶段,参与者执行了事务,但是还未提交。只有在提交阶段协接收到协调者发来的通知后,才进行提交或者回滚。 - -## 存在的问题 - -- 参与者发生故障。解决方案:可以给事务设置一个超时时间,如果某个参与者一直不响应,那么认为事务执行失败。 - -- 协调者发生故障。解决方案:将操作日志同步到备用协调者,让备用协调者接替后续工作。 - -# 二、Paxos 协议 - -用于达成共识性问题,即对多个节点产生的值,该算法能保证只选出唯一一个值。 - -主要有三类节点: - -1. 提议者(Proposer):提议一个值; -2. 接受者(Acceptor):对每个提议进行投票; -3. 告知者(Learner):被告知投票的结果,不参与投票的过程。 - -

    - -## 执行过程 - -规定一个提议包含两个字段:[n, v],其中 n 为序号(具有唯一性),v 为提议值。 - -下图演示了两个 Proposer 和三个 Acceptor 的系统中运行该算法的初始过程,每个 Proposer 都会向每个 Acceptor 发送提议请求。 - -

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

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

    - -当一个 Proposer 接收到超过一半 Acceptor 的提议响应时,就可以发送接受请求。 - -如下图,Proposer A 接受到两个提议响应之后,就发送 [n=2, v=8] 接受请求。该接受请求会被所有 Acceptor 丢弃,因为此时所有 Acceptor 都保证不接受提议值小于 4 的提议。Proposer B 过后也收到了两个提议响应,因此也开始发送接受请求。需要注意的是,接受请求的 v 需要取它收到的最大 v 值,也就是 8。因此它发送 [n=4, v=8] 的接受请求。 - -

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

    - -## 约束条件 - -### 1. 正确性 - -只有一个提议值会生效。 - -因为 Paxos 协议要求每个生效的提议被多数 Acceptor 接收,并且 Acceptor 不会接受两个不同的提议,因此可以保证正确性。 - -### 2. 可终止性 - -最后总会有一个提议生效。 - -Paxos 协议能够让 Proposer 发送的提议朝着能被大多数 Acceptor 接受的那个提议靠拢,因此能够保证可终止性。 - -# 三、Raft 协议 - -Raft 和 Poxas 类似,但是更容易理解,也更容易实现。 - -Raft 主要是用来竞选主节点。 - -## 单个 Candidate 的竞选 - -有三种节点:Follower、Candidate 和 Leader。Leader 会周期性的发送心跳包给 Follower。每个 Follower 都设置了一个随机的竞选超时时间,一般为 150ms\~300ms,如果在这个时间内没有收到 Leader 的心跳包,就会变成 Candidate,进入竞选阶段。 - -① 下图表示一个分布式系统的最初阶段,此时只有 Follower,没有 Leader。Follower A 等待一个随机的竞选超时时间之后,没收到 Leader 发来的心跳包,因此进入竞选阶段。 - -

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

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

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

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

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

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

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

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

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

    - -# 四、拜占庭将军问题 - -> [拜占庭将军问题深入探讨](http://www.8btc.com/baizhantingjiangjun) - -# 五、参考资料 - -- 杨传辉. 大规模分布式存储系统: 原理解析与架构实战[M]. 机械工业出版社, 2013. -- [区块链技术指南](https://www.gitbook.com/book/yeasy/blockchain_guide/details) -- [NEAT ALGORITHMS - PAXOS](http://harry.me/blog/2014/12/27/neat-algorithms-paxos/) -- [Raft: Understandable Distributed Consensus](http://thesecretlivesofdata.com/raft) -- [Paxos By Example](https://angus.nyc/2012/paxos-by-example/) diff --git a/notes/代码可读性.md b/notes/代码可读性.md deleted file mode 100644 index 5d40b41b..00000000 --- a/notes/代码可读性.md +++ /dev/null @@ -1,342 +0,0 @@ - -* [一、可读性的重要性](#一可读性的重要性) -* [二、用名字表达代码含义](#二用名字表达代码含义) -* [三、名字不能带来歧义](#三名字不能带来歧义) -* [四、良好的代码风格](#四良好的代码风格) -* [五、编写注释](#五编写注释) -* [六、如何编写注释](#六如何编写注释) -* [七、提高控制流的可读性](#七提高控制流的可读性) -* [八、拆分长表达式](#八拆分长表达式) -* [九、变量与可读性](#九变量与可读性) -* [十、抽取函数](#十抽取函数) -* [十一、一次只做一件事](#十一一次只做一件事) -* [十二、用自然语言表述代码](#十二用自然语言表述代码) -* [十三、减少代码量](#十三减少代码量) - - - -# 一、可读性的重要性 - -编程有很大一部分时间是在阅读代码,不仅要阅读自己的代码,而且要阅读别人的代码。因此,可读性良好的代码能够大大提高编程效率。 - -可读性良好的代码往往会让代码架构更好,因为程序员更愿意去修改这部分代码,而且也更容易修改。 - -只有在核心领域为了效率才可以放弃可读性,否则可读性是第一位。 - -# 二、用名字表达代码含义 - -一些比较有表达力的单词: - -| 单词 | 可替代单词 | -| --- | --- | -| send | deliver、dispatch、announce、distribute、route | -| find | search、extract、locate、recover | -| start| launch、create、begin、open| -| make | create、set up、build、generate、compose、add、new | - -使用 i、j、k 作为循环迭代器的名字过于简单,user_i、member_i 这种名字会更有表达力。因为循环层次越多,代码越难理解,有表达力的迭代器名字可读性会更高 - -为名字添加形容词等信息能让名字更具有表达力,但是名字也会变长。名字长短的准则是:作用域越大,名字越长。因此只有在短作用域才能使用一些简单名字。 - -# 三、名字不能带来歧义 - -起完名字要思考一下别人会对这个名字有何解读,会不会误解了原本想表达的含义。 - -用 min、max 表示数量范围;用 first、last 表示访问空间的包含范围,begin、end 表示访问空间的排除范围,即 end 不包含尾部。 - -

    - -布尔相关的命名加上 is、can、should、has 等前缀。 - -# 四、良好的代码风格 - -适当的空行和缩进。 - -排列整齐的注释: - -```java -int a = 1; // 注释 -int b = 11; // 注释 -int c = 111; // 注释 -``` - -语句顺序不能随意,比如与 html 表单相关联的变量的赋值应该和表单在 html 中的顺序一致; - -把相关的代码按块组织起来放在一起。 - -# 五、编写注释 - -阅读代码首先会注意到注释,如果注释没太大作用,那么就会浪费代码阅读的时间。那些能直接看出含义的代码不需要写注释,特别是并不需要为每个方法都加上注释,比如那些简单的 getter 和 setter 方法,为这些方法写注释反而让代码可读性更差。 - -不能因为有注释就随便起个名字,而是争取起个好名字而不写注释。 - -可以用注释来记录采用当前解决办法的思考过程,从而让读者更容易理解代码。 - -注释用来提醒一些特殊情况。 - -用 TODO 等做标记: - -| 标记 | 用法 | -|---|---| -|TODO| 待做 | -|FIXME| 待修复 | -|HACH| 粗糙的解决方案 | -|XXX| 危险!这里有重要的问题 | - -# 六、如何编写注释 - -尽量简洁明了: - -```java -// The first String is student's name -// The Second Integer is student's score -Map scoreMap = new HashMap<>(); -``` - -```java -// Student' name -> Student's score -Map scoreMap = new HashMap<>(); -``` - -添加测试用例来说明: - -```java -//... -// Example: add(1, 2), return 3 -int add(int x, int y) { - return x + y; -} -``` - -在很复杂的函数调用中对每个参数标上名字: - -```java -int a = 1; -int b = 2; -int num = add(\* x = *\ a, \* y = *\ b); -``` - -使用专业名词来缩短概念上的解释,比如用设计模式名来说明代码。 - -# 七、提高控制流的可读性 - -条件表达式中,左侧是变量,右侧是常数。比如下面第一个语句正确: - -```java -if(len < 10) -if(10 > len) -``` - -if / else 条件语句,逻辑的处理顺序为:① 正逻辑;② 关键逻辑;③ 简单逻辑。 - -```java -if(a == b) { - // 正逻辑 -} else{ - // 反逻辑 -} -``` - -只有在逻辑简单的情况下使用 ? : 三目运算符来使代码更紧凑,否则应该拆分成 if / else; - -do / while 的条件放在后面,不够简单明了,并且会有一些迷惑的地方,最好使用 while 来代替。 - -如果只有一个 goto 目标,那么 goto 尚且还能接受,但是过于复杂的 goto 会让代码可读性特别差,应该避免使用 goto。 - -在嵌套的循环中,用一些 return 语句往往能减少嵌套的层数。 - -# 八、拆分长表达式 - -长表达式的可读性很差,可以引入一些解释变量从而拆分表达式: - -```python -if line.split(':')[0].strip() == "root": - ... -``` -```python -username = line.split(':')[0].strip() -if username == "root": - ... -``` - -使用摩根定理简化一些逻辑表达式: - -```java -if(!a && !b) { - ... -} -``` -```java -if(!(a || b)) { - ... -} -``` - -# 九、变量与可读性 - -**去除控制流变量** 。在循环中通过使用 break 或者 return 可以减少控制流变量的使用。 - -```java -boolean done = false; -while(/* condition */ && !done) { - ... - if(...) { - done = true; - continue; - } -} -``` -``` -while(/* condition */) { - ... - if(...) { - break; - } -} -``` - -**减小变量作用域** 。作用域越小,越容易定位到变量所有使用的地方。 - -JavaScript 可以用闭包减小作用域。以下代码中 submit_form 是函数变量,submitted 变量控制函数不会被提交两次。第一个实现中 submitted 是全局变量,第二个实现把 submitted 放到匿名函数中,从而限制了起作用域范围。 - -```js -submitted = false; -var submit_form = function(form_name) { - if(submitted) { - return; - } - submitted = true; -}; -``` - -```js -var submit_form = (function() { - var submitted = false; - return function(form_name) { - if(submitted) { - return; - } - submitted = true; - } -}()); // () 使得外层匿名函数立即执行 -``` - -JavaScript 中没有用 var 声明的变量都是全局变量,而全局变量很容易造成迷惑,因此应当总是用 var 来声明变量。 - -变量定义的位置应当离它使用的位置最近。 - -**实例解析** - -在一个网页中有以下文本输入字段: - -```html - - - - -``` - -现在要接受一个字符串并把它放到第一个空的 input 字段中,初始实现如下: - -```js -var setFirstEmptyInput = function(new_alue) { - var found = false; - var i = 1; - var elem = document.getElementById('input' + i); - while(elem != null) { - if(elem.value === '') { - found = true; - break; - } - i++; - elem = document.getElementById('input' + i); - } - if(found) elem.value = new_value; - return elem; -} -``` - -以上实现有以下问题: - -- found 可以去除; -- elem 作用域过大; -- 可以用 for 循环代替 while 循环; - -```js -var setFirstEmptyInput = function(new_value) { - for(var i = 1; true; i++) { - var elem = document.getElementById('input' + i); - if(elem === null) { - return null; - } - if(elem.value === '') { - elem.value = new_value; - return elem; - } - } -}; -``` - -# 十、抽取函数 - -工程学就是把大问题拆分成小问题再把这些问题的解决方案放回一起。 - -首先应该明确一个函数的高层次目标,然后对于不是直接为了这个目标工作的代码,抽取出来放到独立的函数中。 - -介绍性的代码: - -```java -int findClostElement(int[] arr) { - int clostIdx; - int clostDist = Interger.MAX_VALUE; - for(int i = 0; i < arr.length; i++) { - int x = ...; - int y = ...; - int z = ...; - int value = x * y * z; - int dist = Math.sqrt(Math.pow(value, 2), Math.pow(arr[i], 2)); - if(dist < clostDist) { - clostIdx = i; - clostDist = value; - } - } - return clostIdx; -} -``` - -以上代码中循环部分主要计算距离,这部分不属于代码高层次目标,高层次目标是寻找最小距离的值,因此可以把这部分代替提取到独立的函数中。这样做也带来一个额外的好处有:可以单独进行测试、可以快速找到程序错误并修改。 - -```java -public int findClostElement(int[] arr) { - int clostIdx; - int clostDist = Interger.MAX_VALUE; - for(int i = 0; i < arr.length; i++) { - int dist = computDist(arr, i); - if(dist < clostDist) { - clostIdx = i; - clostDist = value; - } - } - return clostIdx; -} -``` - -并不是函数抽取的越多越好,如果抽取过多,在阅读代码的时候可能需要不断跳来跳去。只有在当前函数不需要去了解某一块代码细节而能够表达其内容时,把这块代码抽取成子函数才是好的。 - -函数抽取也用于减小代码的冗余。 - -# 十一、一次只做一件事 - -只做一件事的代码很容易让人知道其要做的事; - -基本流程:列出代码所做的所有任务;把每个任务拆分到不同的函数,或者不同的段落。 - -# 十二、用自然语言表述代码 - -先用自然语言书写代码逻辑,也就是伪代码,然后再写代码,这样代码逻辑会更清晰。 - -# 十三、减少代码量 - -不要过度设计,编码过程会有很多变化,过度设计的内容到最后往往是无用的。 - -多用标准库实现。 diff --git a/notes/代码风格规范.md b/notes/代码风格规范.md deleted file mode 100644 index 6724fa14..00000000 --- a/notes/代码风格规范.md +++ /dev/null @@ -1,14 +0,0 @@ -# Google Java Style Guide - -- http://www.hawstein.com/posts/google-java-style.html -- http://google.github.io/styleguide/javaguide.html - -# Google C++ Style Guide - -- http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/ -- http://google.github.io/styleguide/cppguide.html - -# Google Python Style Guide - -- http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/contents/ -- http://google.github.io/styleguide/pyguide.html diff --git a/notes/分布式基础.md b/notes/分布式基础.md deleted file mode 100644 index 2b1a696d..00000000 --- a/notes/分布式基础.md +++ /dev/null @@ -1,206 +0,0 @@ - -* [一、基本概念](#一基本概念) - * [异常](#异常) - * [超时](#超时) - * [衡量指标](#衡量指标) -* [二、数据分布](#二数据分布) - * [哈希分布](#哈希分布) - * [顺序分布](#顺序分布) -* [三、负载均衡](#三负载均衡) -* [四、复制](#四复制) - * [强同步复制协议](#强同步复制协议) - * [异步复制协议](#异步复制协议) -* [五、CAP](#五cap) -* [六、BASE](#六base) - * [基本可用](#基本可用) - * [软状态](#软状态) - * [最终一致性](#最终一致性) -* [七、容错](#七容错) - * [故障检测](#故障检测) - * [故障恢复](#故障恢复) -* [八、CDN 架构](#八cdn-架构) -* [参考资料](#参考资料) - - - -# 一、基本概念 - -## 异常 - -### 1. 服务器宕机 - -内存错误、服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用。 - -服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上。 - -### 2. 网络异常 - -有一种特殊的网络异常称为 **网络分区** ,即集群的所有节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信。 - -### 3. 磁盘故障 - -磁盘故障是一种发生概率很高的异常。 - -使用冗余机制,将数据存储到多台服务器。 - -## 超时 - -在分布式系统中,一个请求除了成功和失败两种状态,还存在着超时状态。 - -

    - -可以将服务器的操作设计为具有 **幂等性** ,即执行多次的结果与执行一次的结果相同。如果使用这种方式,当出现超时的时候,可以不断地重新请求直到成功。 - -## 衡量指标 - -### 1. 性能 - -常见的性能指标有:吞吐量、响应时间。 - -其中,吞吐量指系统在某一段时间可以处理的请求总数,通常为每秒的读操作数或者写操作数;响应时间指从某个请求发出到接收到返回结果消耗的时间。 - -这两个指标往往是矛盾的,追求高吞吐的系统,往往很难做到低响应时间,解释如下: - -- 在无并发的系统中,吞吐量为响应时间的倒数,例如响应时间为 10 ms,那么吞吐量为 100 req/s,因此高吞吐也就意味着低响应时间。 - -- 但是在并发的系统中,由于一个请求在调用 I/O 资源的时候,需要进行等待。服务器端一般使用的是异步等待方式,即等待的请求被阻塞之后不需要一直占用 CPU 资源。这种方式能大大提高 CPU 资源的利用率,例如上面的例子中,单个请求在无并发的系统中响应时间为 10 ms,如果在并发的系统中,那么吞吐量将大于 100 req/s。因此为了追求高吞吐量,通常会提高并发程度。但是并发程度的增加,会导致请求的平均响应时间也增加,因为请求不能马上被处理,需要和其它请求一起进行并发处理,响应时间自然就会增高。 - -### 2. 可用性 - -可用性指系统在面对各种异常时可以提供正常服务的能力。可以用系统可用时间占总时间的比值来衡量,4 个 9 的可用性表示系统 99.99% 的时间是可用的。 - -### 3. 一致性 - -可以从两个角度理解一致性:从客户端的角度,读写操作是否满足某种特性;从服务器的角度,多个数据副本之间是否一致。 - -有以下三种一致性模型: - -1. 强一致性:新数据写入之后,在任何数据副本上都能读取到最新值; -2. 弱一致性:新数据写入之后,不能保证在数据副本上能读取到最新值; -3. 最终一致性:新数据写入之后,只能保证过一了一个时间窗口才能读取到最新值; - -### 4. 可扩展性 - -指系统通过扩展集群服务器规模来提高性能的能力。理想的分布式系统需要实现“线性可扩展”,即随着集群规模的增加,系统的整体性能也会线程增加。 - -# 二、数据分布 - -分布式系统的数据分布在多个节点中,常用的数据分布方式有哈希分布和顺序分布。 - -## 哈希分布 - -哈希分布就是将数据计算哈希值之后,按照哈希值分配到不同的节点上。例如有 N 个节点,数据的主键为 key,则将该数据分配的节点序号为:hash(key)%N。 - -传统的哈希分布算法存在一个问题:当节点数量变化时,也就是 N 值变化,那么几乎所有的数据都需要重新分布,将导致大量的数据迁移。 - -#### 一致性哈希 - -Distributed Hash Table(DHT):对于哈希空间 0\~2n,将该哈希空间看成一个哈希环,将每个节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。 - -

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

    - -## 顺序分布 - -哈希分布式破坏了数据的有序性,顺序分布则不会。 - -顺序分布的数据划分为多个连续的部分,按一定策略分布到不同节点上。例如下图中,User 表的主键范围为 1 \~ 7000,使用顺序分布可以将其划分成多个子表,对应的主键范围为 1 \~ 1000,1001 \~ 2000,...,6001 \~ 7000。 - -其中 Meta 表是为了支持更大的集群规模,它将原来的一层索引结分成两层,使用 Meta 表来维护 User 子表所在的节点,从而减轻 Root 节点的负担。 - -

    - -# 三、负载均衡 - -衡量负载的因素很多,如 CPU、内存、磁盘等资源使用情况、读写请求数等。分布式系统应当能够自动负载均衡,当某个节点的负载较高,将它的部分数据迁移到其它节点。 - -每个集群都有一个总控节点,其它节点为工作节点,由总控节点根据全局负载信息进行整体调度,工作节点定时发送心跳包(Heartbeat)将节点负载相关的信息发送给总控节点。 - -一个新上线的工作节点,由于其负载较低,如果不加控制,总控节点会将大量数据同时迁移到该节点上,造成该节点一段时间内无法工作。因此负载均衡操作需要平滑进行,新加入的节点需要较长的一段时间来达到比较均衡的状态。 - -# 四、复制 - -复制是保证分布式系统高可用的基础,让一个数据存储多个副本,当某个副本所在的节点出现故障时,能够自动切换到其它副本上,从而实现故障恢复。 - -多个副本通常有一个为主副本,其它为备副本。主副本用来处理写请求,备副本主要用来处理读请求,实现读写分离。主副本将同步操作日志发送给备副本,备副本通过回放操作日志获取最新修改。 - -

    - -主备副本之间有两种复制协议,一种是强同步复制协议,一种是异步复制协议。 - -## 强同步复制协议 - -要求主副本将同步操作日志发给备副本之后进行等待,要求至少一个备副本返回成功后,才开始修改主副本,修改完成之后通知客户端操作成功。 - -优点:至少有一个备副本拥有完整的数据,出现故障时可以安全地切换到该备副本,因此一致性好。 - -缺点:可用性差,因为主副本需要等待,那么整个分布式系统的可用时间就会降低。 - -## 异步复制协议 - -主副本将同步操作日志发给备副本之后不需要进行等待,直接修改主副本并通知客户端操作成功。 - -优点:可用性好。 - -缺点:一致性差。 - -# 五、CAP - -分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition tolerance),最多只能同时满足其中两项。这三个概念上文中已经提到。 - -在设计分布式系统时,需要根据实际需求弱化某一要求。因此就有了下图中的三种设计:CA、CP 和 AP。 - -

    - -需要注意的是,分区容忍性必不可少,因为需要总是假设网络是不可靠的。因此实际上设计分布式系统需要在一致性和可用性之间做权衡。 - -# 六、BASE - -BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的缩写。BASE 理论是对 CAP 中一致性和可用性权衡的结果,是基于 CAP 定理逐步演化而来的。BASE 理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。 - -## 基本可用 - -指分布式系统在出现故障的时候,保证核心可用,允许损失部分可用性。 - -例如,电商在做促销时,服务层可能只提供降级服务,部分用户可能会被引导到降级页面上。 - -## 软状态 - -指允许系统存在中间状态,而该中间状态不会影响系统整体可用性,即不同节点的数据副本之间进行同步的过程允许存在延时。 - -## 最终一致性 - -指所有的数据副本,在经过一段时间的同步之后,最终都能够达到一致的状态。 - -强一致性需要保证数据副本实时一致,而最终一致性只需要保证过一段时间是一致的。 - -ACID 是传统数据库系统常用的设计理论,追求强一致性模型。BASE 常用于大型分布式系统,只需要保证最终一致性。在实际的分布式场景中,不同业务单元和组件对一致性的要求是不同的,因此 ACID 和 BASE 往往会结合在一起使用。 - -# 七、容错 - -分布式系统故障发生的概率很大,为了实现高可用以及减少人工运维成本,需要实现自动化容错。 - -## 故障检测 - -通过 **租约机制** 来对故障进行检测。假设节点 A 为主控节点,节点 A 向节点 B 发送租约,节点 B 在租约规定的期限内才能提供服务。期限快到达时,节点 B 需要向 A 重新申请租约。 - -如果过期,那么 B 不再提供服务,并且 A 也能知道 B 此时可能发生故障并已经停止服务。可以看到,通过这种机制,A 和 B 都能对 B 发生故障这一事实达成一致。 - -## 故障恢复 - -当某个节点故障时,就将它上面的服务迁移到其它节点。 - -# 八、CDN 架构 - -CND 通过将内容发布到靠近用户的边缘节点,使不同地域的用户在访问相同网页时可以就近获取。不仅可以减轻服务器的负担,也可以提高用户的访问速度。 - -从下图可以看出,DNS 在对域名解析时不再向用户返回源服务器的 IP 地址,而是返回边缘节点的 IP 地址,所以用户最终访问的是边缘节点。边缘节点会先从源服务器中获取用户所需的数据,如果请求成功,边缘节点会将页面缓存下来,下次用户访问时可以直接读取。 - -

    - -# 参考资料 - -- 杨传辉. 大规模分布式存储系统: 原理解析与架构实战[M]. 机械工业出版社, 2013. diff --git a/notes/分布式问题分析.md b/notes/分布式问题分析.md deleted file mode 100644 index 81d7f9e0..00000000 --- a/notes/分布式问题分析.md +++ /dev/null @@ -1,316 +0,0 @@ - -* [一、谈谈业务中使用分布式的场景](#一谈谈业务中使用分布式的场景) -* [二、分布式事务](#二分布式事务) - * [产生原因](#产生原因) - * [应用场景](#应用场景) - * [解决方案](#解决方案) -* [三、负载均衡的算法与实现](#三负载均衡的算法与实现) - * [算法](#算法) - * [实现](#实现) -* [四、分布式锁](#四分布式锁) - * [使用场景](#使用场景) - * [实现方式](#实现方式) -* [五、分布式 Session](#五分布式-session) - * [1. Sticky Sessions](#1-sticky-sessions) - * [2. Session Replication](#2-session-replication) - * [3. Persistent DataStore](#3-persistent-datastore) - * [4. In-Memory DataStore](#4-in-memory-datastore) -* [六、分库与分表带来的分布式困境与应对之策](#六分库与分表带来的分布式困境与应对之策) - * [事务问题](#事务问题) - * [查询问题](#查询问题) - * [ID 唯一性](#id-唯一性) -* [参考资料](#参考资料) - - - -# 一、谈谈业务中使用分布式的场景 - -分布式主要是为了提供可扩展性以及高可用性,业务中使用分布式的场景主要有分布式存储以及分布式计算。 - -分布式存储中可以将数据分片到多个节点上,不仅可以提高性能(可扩展性),同时也可以使用多个节点对同一份数据进行备份(高可用性)。 - -至于分布式计算,就是将一个大的计算任务分解成小任务分配到多台节点上去执行,再汇总每个小任务的执行结果得到最终结果。MapReduce 是分布式计算的最好例子。 - -# 二、分布式事务 - -指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。 - -## 产生原因 - -- 数据库分库分表; -- SOA 架构,比如一个电商网站将订单业务和库存业务分离出来放到不同的节点上。 - -## 应用场景 - -- 下单:减少库存、更新订单状态。库存和订单不在同一个数据库,因此涉及分布式事务。 -- 支付:买家账户扣款、卖家账户入账。买家和卖家账户信息不在同一个数据库,因此涉及分布式事务。 - -## 解决方案 - -### 1. 两阶段提交协议 - -[两阶段提交](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E4%B8%80%E8%87%B4%E6%80%A7%E5%8D%8F%E8%AE%AE.md#%E4%B8%A4%E9%98%B6%E6%AE%B5%E6%8F%90%E4%BA%A4%E5%8D%8F%E8%AE%AE) - -两阶段提交协议可以很好得解决分布式事务问题,它可以使用 XA 来实现,XA 它包含两个部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如 Oracle、DB2 这些商业数据库都实现了 XA 接口;而事务管理器作为全局的协调者,负责各个本地资源的提交和回滚。 - -### 2. 消息中间件 - -消息中间件也可称作消息系统 (MQ),它本质上是一个暂存转发消息的一个中间件。在分布式应用当中,我们可以把一个业务操作转换成一个消息,比如支付宝的余额转入余额宝操作,支付宝系统执行减少余额操作之后向消息系统发送一个消息,余额宝系统订阅这条消息然后进行增加余额宝操作。 - -**(一)消息处理模型** - - **点对点**
    - -

    - - **发布/订阅**
    - -

    - -**(二)消息的可靠性** - -消息的发送端的可靠性:发送端完成操作后一定能将消息成功发送到消息系统。 - -消息的接收端的可靠性:接收端仅且能够从消息中间件成功消费一次消息。 - - **发送端的可靠性**
    - -在本地数据建一张消息表,将消息数据与业务数据保存在同一数据库实例里,这样就可以利用本地数据库的事务机制。事务提交成功后,将消息表中的消息转移到消息中间件,若转移消息成功则删除消息表中的数据,否则继续重传。 - - **接收端的可靠性**
    - -保证接收端处理消息的业务逻辑具有幂等性:只要具有幂等性,那么消费多少次消息,最后处理的结果都是一样的。 - -保证消息具有唯一编号,并使用一张日志表来记录已经消费的消息编号。 - -# 三、负载均衡的算法与实现 - -## 算法 - -### 1. 轮询(Round Robin) - -轮询算法把每个请求轮流发送到每个服务器上。下图中,一共有 6 个客户端产生了 6 个请求,这 6 个请求按 (1, 2, 3, 4, 5, 6) 的顺序发送。最后,(1, 3, 5) 的请求会被发送到服务器 1,(2, 4, 6) 的请求会被发送到服务器 2。 - -

    - -该算法比较适合每个服务器的性能差不多的场景,如果有性能存在差异的情况下,那么性能较差的服务器可能无法承担多大的负载。下图中,服务器 2 的性能比服务器 1 差,那么服务器 2 可能无法承担多大的负载。 - -

    - -### 2. 加权轮询(Weighted Round Robbin) - -加权轮询是在轮询的基础上,根据服务器的性能差异,为服务器赋予一定的权值。例如下图中,服务器 1 被赋予的权值为 5,服务器 2 被赋予的权值为 1,那么 (1, 2, 3, 4, 5) 请求会被发送到服务器 1,(6) 请求会被发送到服务器 2。 - -

    - -### 3. 最少连接(least Connections) - -由于每个请求的连接时间不一样,使用轮询或者加权轮询算法的话,可能会让一台服务器当前连接数多大,而另一台服务器的连接多小,造成负载不均衡。例如下图中,(1, 3, 5) 请求会被发送到服务器 1,但是 (1, 3) 很快就断开连接,此时只有 (5) 请求连接服务器 1;(2, 4, 6) 请求被发送到服务器 2,只有 (2) 的连接断开。该系统继续运行时,服务器 2 会承担多大的负载。 - -

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

    - -### 4. 加权最小连接(Weighted Least Connection) - -在最小连接的基础上,根据服务器的性能为每台服务器分配权重,根据权重计算出每台服务器能处理的连接数。 - -

    - -### 5. 随机算法(Random) - -把请求随机发送到服务器上。和轮询算法类似,该算法比较适合服务器性能差不多的场景。 - -

    - -## 实现 - -### 1. HTTP 重定向 - -HTTP 重定向负载均衡服务器收到 HTTP 请求之后会返回服务器的地址,并将该地址写入 HTTP 重定向响应中返回给浏览器,浏览器收到后需要再次发送请求。 - -缺点: - -- 用户访问的延迟会增加; -- 如果负载均衡器宕机,就无法访问该站点。 - -

    - -### 2. DNS 重定向 - -使用 DNS 作为负载均衡器,根据负载情况返回不同服务器的 IP 地址。大型网站基本使用了这种方式做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。 - -缺点: - -- DNS 查找表可能会被客户端缓存起来,那么之后的所有请求都会被重定向到同一个服务器。 - -

    - -### 3. 修改 MAC 地址 - -使用 LVS(Linux Virtual Server)这种链路层负载均衡器,根据负载情况修改请求的 MAC 地址。 - -

    - -### 4. 修改 IP 地址 - -在网络层修改请求的目的 IP 地址。 - -

    - -### 5. 代理自动配置 - -正向代理与反向代理的区别: - -- 正向代理:发生在客户端,是由用户主动发起的。比如翻墙,客户端通过主动访问代理服务器,让代理服务器获得需要的外网数据,然后转发回客户端。 -- 反向代理:发生在服务器端,用户不知道代理的存在。 - -PAC 服务器是用来判断一个请求是否要经过代理。 - -

    - -# 四、分布式锁 - -Java 提供了两种内置的锁的实现,一种是由 JVM 实现的 synchronized 和 JDK 提供的 Lock,当你的应用是单机或者说单进程应用时,可以使用 synchronized 或 Lock 来实现锁。当应用涉及到多机、多进程共同完成时,那么这时候就需要一个全局锁来实现多个进程之间的同步。 - -## 使用场景 - -在服务器端使用分布式部署的情况下,一个服务可能分布在不同的节点撒花姑娘,比如订单服务分布式在节点 A 和节点 B 上。如果多个客户端同时对一个服务进行请求时,就需要使用分布式锁。例如当 APP 端的请求路由到了节点 A,WEB 端被路由到了 B 服务,这时对共享资源进行使用时需要使用分布式锁。 - -## 实现方式 - -### 1. 数据库分布式锁 - -**(一)基于 MySQL 锁表** - -该实现方式完全依靠数据库唯一索引来实现。当想要获得锁时,就向数据库中插入一条记录,释放锁时就删除这条记录。如果记录具有唯一索引,就不会同时插入同一条记录。这种方式存在以下几个问题: - -1. 锁没有失效时间,解锁失败会导致死锁,其他线程无法再获得锁。 -2. 只能是非阻塞锁,插入失败直接就报错了,无法重试。 -3. 不可重入,同一线程在没有释放锁之前无法再获得锁。 - -**(二)采用乐观锁增加版本号** - -根据版本号来判断更新之前有没有其他线程更新过,如果被更新过,则获取锁失败。 - -### 2. Redis 分布式锁 - -**(一)基于 SETNX、EXPIRE** - -使用 SETNX(set if not exist)命令插入一个键值对时,如果 Key 已经存在,那么会返回 False,否则插入成功并返回 True。因此客户端在尝试获得锁时,先使用 SETNX 向 Redis 中插入一个记录,如果返回 True 表示获得锁,返回 False 表示已经有客户端占用锁。 - -EXPIRE 可以为一个键值对设置一个过期时间,从而避免了死锁的发生。 - -**(二)RedLock 算法** - -RedLock 算法使用了多个 Redis 实例来实现分布式锁,这是为了保证在发生单点故障时还可用。 - -1. 尝试从 N 个相互独立 Redis 实例获取锁,如果一个实例不可用,应该尽快尝试下一个。 -2. 计算获取锁消耗的时间,只有当这个时间小于锁的过期时间,并且从大多数(N/2+1)实例上获取了锁,那么就认为锁获取成功了。 -3. 如果锁获取失败,会到每个实例上释放锁。 - -### 3. Zookeeper 分布式锁 - -Zookeeper 是一个为分布式应用提供一致性服务的软件,例如配置管理、分布式协同以及命名的中心化等,这些都是分布式系统中非常底层而且是必不可少的基本功能,但是如果自己实现这些功能而且要达到高吞吐、低延迟同时还要保持一致性和可用性,实际上非常困难。 - -**(一)抽象模型** - -Zookeeper 提供了一种树形结构级的命名空间,/app1/p_1 节点表示它的父节点为 /app1。 - -

    - -**(二)节点类型** - -- 永久节点:不会因为会话结束或者超时而消失; -- 临时节点:如果会话结束或者超时就会消失; -- 有序节点:会在节点名的后面加一个数字后缀,并且是有序的,例如生成的有序节点为 /lock/node-0000000000,它的下一个有序节点则为 /lock/node-0000000001,依次类推。 - -**(三)监听器** - -为一个节点注册监听器,在节点状态发生改变时,会给客户端发送消息。 - -**(四)分布式锁实现** - -1. 创建一个锁目录 /lock。 -1. 在 /lock 下创建临时的且有序的子节点,第一个客户端对应的子节点为 /lock/lock-0000000000,第二个为 /lock/lock-0000000001,以此类推。 -2. 客户端获取 /lock 下的子节点列表,判断自己创建的子节点是否为当前子节点列表中序号最小的子节点,如果是则认为获得锁,否则监听自己的前一个子节点,获得子节点的变更通知后重复此步骤直至获得锁; -3. 执行业务代码,完成后,删除对应的子节点。 - -**(五)会话超时** - -如果一个已经获得锁的会话超时了,因为创建的是临时节点,因此该会话对应的临时节点会被删除,其它会话就可以获得锁了。可以看到,Zookeeper 分布式锁不会出现数据库分布式锁的死锁问题。 - -**(六)羊群效应** - -在步骤二,一个节点未获得锁,需要监听监听自己的前一个子节点,这是因为如果监听所有的子节点,那么任意一个子节点状态改变,其它所有子节点都会收到通知,而我们只希望它的下一个子节点收到通知。 - -# 五、分布式 Session - -在分布式场景下,一个用户的 Session 如果只存储在一个服务器上,那么当负载均衡器把用户的下一个请求转发到另一个服务器上,该服务器没有保存用户的 Session,就可能导致用户需要重新进行登录等操作。 - -

    - -## 1. Sticky Sessions - -需要配置负载均衡器,使得一个用户的所有请求都路由到一个服务器节点上,这样就可以把用户的 Session 存放在该服务器节点中。 - -缺点:当服务器节点宕机时,将丢失该服务器节点上的所有 Session。 - -

    - -## 2. Session Replication - -在服务器节点之间进行 Session 同步操作,这样的话用户可以访问任何一个服务器节点。 - -缺点:需要更好的服务器硬件条件;需要对服务器进行配置。 - -

    - -## 3. Persistent DataStore - -将 Session 信息持久化到一个数据库中。 - -缺点:有可能需要去实现存取 Session 的代码。 - -

    - -## 4. In-Memory DataStore - -可以使用 Redis 和 Memcached 这种内存型数据库对 Session 进行存储,可以大大提高 Session 的读写效率。内存型数据库同样可以持久化数据到磁盘中来保证数据的安全性。 - -# 六、分库与分表带来的分布式困境与应对之策 - -

    - -## 事务问题 - -使用分布式事务。 - -## 查询问题 - -使用汇总表。 - -## ID 唯一性 - -- 使用全局唯一 ID:GUID。 -- 为每个分片指定一个 ID 范围。 -- 分布式 ID 生成器 (如 Twitter 的 [Snowflake](https://twitter.github.io/twitter-server/) 算法)。 - -# 参考资料 - -- [Comparing Load Balancing Algorithms](http://www.jscape.com/blog/load-balancing-algorithms) -- [负载均衡算法及手段](https://segmentfault.com/a/1190000004492447) -- [Redirection and Load Balancing](http://slideplayer.com/slide/6599069/#) -- [Session Management using Spring Session with JDBC DataStore](https://sivalabs.in/2018/02/session-management-using-spring-session-jdbc-datastore/) -- [Apache Wicket User Guide - Reference Documentation](# Apache Wicket User Guide - Reference Documentation) -- [集群/分布式环境下 5 种 Session 处理策略](http://blog.csdn.net/u010028869/article/details/50773174?ref=myread) -- [浅谈分布式锁](http://www.linkedkeeper.com/detail/blog.action?bid=1023) -- [深入理解分布式事务](https://juejin.im/entry/577c6f220a2b5800573492be) -- [分布式系统的事务处理](https://coolshell.cn/articles/10910.html) -- [关于分布式事务](http://blog.csdn.net/suifeng3051/article/details/52691210) -- [基于 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) -- [How Sharding Works](https://medium.com/@jeeyoungk/how-sharding-works-b4dec46b3f6) -- [服务端指南 数据存储篇 | MySQL(09) 分库与分表带来的分布式困境与应对之策](http://blog.720ui.com/2017/mysql_core_09_multi_db_table2/ "服务端指南 数据存储篇 | MySQL(09) 分库与分表带来的分布式困境与应对之策") -- [How to create unique row ID in sharded databases?](https://stackoverflow.com/questions/788829/how-to-create-unique-row-id-in-sharded-databases) diff --git a/notes/剑指 offer 题解.md b/notes/剑指 offer 题解.md deleted file mode 100644 index b367d103..00000000 --- a/notes/剑指 offer 题解.md +++ /dev/null @@ -1,2581 +0,0 @@ - -* [前言](#前言) -* [2. 实现 Singleton](#2-实现-singleton) -* [3. 数组中重复的数字](#3-数组中重复的数字) -* [4. 二维数组中的查找](#4-二维数组中的查找) -* [5. 替换空格](#5-替换空格) -* [6. 从尾到头打印链表](#6-从尾到头打印链表) -* [7. 重建二叉树](#7-重建二叉树) -* [8. 二叉树的下一个结点](#8-二叉树的下一个结点) -* [9. 用两个栈实现队列](#9-用两个栈实现队列) -* [10.1 斐波那契数列](#101-斐波那契数列) -* [10.2 跳台阶](#102-跳台阶) -* [10.3 变态跳台阶](#103-变态跳台阶) -* [10.4 矩形覆盖](#104-矩形覆盖) -* [11. 旋转数组的最小数字](#11-旋转数组的最小数字) -* [12. 矩阵中的路径](#12-矩阵中的路径) -* [13. 机器人的运动范围](#13-机器人的运动范围) -* [14. 剪绳子](#14-剪绳子) -* [15. 二进制中 1 的个数](#15-二进制中-1-的个数) -* [16. 数值的整数次方](#16-数值的整数次方) -* [17. 打印从 1 到最大的 n 位数](#17-打印从-1-到最大的-n-位数) -* [18.1 在 O(1) 时间内删除链表节点](#181-在-o1-时间内删除链表节点) -* [18.2 删除链表中重复的结点](#182-删除链表中重复的结点) -* [19. 正则表达式匹配](#19-正则表达式匹配) -* [20. 表示数值的字符串](#20-表示数值的字符串) -* [21. 调整数组顺序使奇数位于偶数前面](#21-调整数组顺序使奇数位于偶数前面) -* [22. 链表中倒数第 K 个结点](#22-链表中倒数第-k-个结点) -* [23. 链表中环的入口结点](#23-链表中环的入口结点) -* [24. 反转链表](#24-反转链表) -* [25. 合并两个排序的链表](#25-合并两个排序的链表) -* [26. 树的子结构](#26-树的子结构) -* [27. 二叉树的镜像](#27-二叉树的镜像) -* [28.1 对称的二叉树](#281-对称的二叉树) -* [28.2 平衡二叉树](#282-平衡二叉树) -* [29. 顺时针打印矩阵](#29-顺时针打印矩阵) -* [30. 包含 min 函数的栈](#30-包含-min-函数的栈) -* [31. 栈的压入、弹出序列](#31-栈的压入弹出序列) -* [32.1 从上往下打印二叉树](#321-从上往下打印二叉树) -* [32.2 把二叉树打印成多行](#322-把二叉树打印成多行) -* [32.3 按之字形顺序打印二叉树](#323-按之字形顺序打印二叉树) -* [33. 二叉搜索树的后序遍历序列](#33-二叉搜索树的后序遍历序列) -* [34. 二叉树中和为某一值的路径](#34-二叉树中和为某一值的路径) -* [35. 复杂链表的复制](#35-复杂链表的复制) -* [36. 二叉搜索树与双向链表](#36-二叉搜索树与双向链表) -* [37. 序列化二叉树](#37-序列化二叉树) -* [38. 字符串的排列](#38-字符串的排列) -* [39. 数组中出现次数超过一半的数字](#39-数组中出现次数超过一半的数字) -* [40. 最小的 K 个数](#40-最小的-k-个数) -* [41.1 数据流中的中位数](#411-数据流中的中位数) -* [41.2 字符流中第一个不重复的字符](#412-字符流中第一个不重复的字符) -* [42. 连续子数组的最大和](#42-连续子数组的最大和) -* [43. 从 1 到 n 整数中 1 出现的次数](#43-从-1-到-n-整数中-1-出现的次数) -* [44. 数字序列中的某一位数字](#44-数字序列中的某一位数字) -* [45. 把数组排成最小的数](#45-把数组排成最小的数) -* [46. 把数字翻译成字符串](#46-把数字翻译成字符串) -* [47. 礼物的最大价值](#47-礼物的最大价值) -* [48. 最长不含重复字符的子字符串](#48-最长不含重复字符的子字符串) -* [49. 丑数](#49-丑数) -* [50. 第一个只出现一次的字符位置](#50-第一个只出现一次的字符位置) -* [51. 数组中的逆序对](#51-数组中的逆序对) -* [52. 两个链表的第一个公共结点](#52-两个链表的第一个公共结点) -* [53 数字在排序数组中出现的次数](#53-数字在排序数组中出现的次数) -* [54. 二叉搜索树的第 k 个结点](#54-二叉搜索树的第-k-个结点) -* [55 二叉树的深度](#55-二叉树的深度) -* [56. 数组中只出现一次的数字](#56-数组中只出现一次的数字) -* [57.1 和为 S 的两个数字](#571-和为-s-的两个数字) -* [57.2 和为 S 的连续正数序列](#572-和为-s-的连续正数序列) -* [58.1 翻转单词顺序列](#581-翻转单词顺序列) -* [58.2 左旋转字符串](#582-左旋转字符串) -* [59. 滑动窗口的最大值](#59-滑动窗口的最大值) -* [60. n 个骰子的点数](#60-n-个骰子的点数) -* [61. 扑克牌顺子](#61-扑克牌顺子) -* [62. 圆圈中最后剩下的数](#62-圆圈中最后剩下的数) -* [63. 股票的最大利润](#63-股票的最大利润) -* [64. 求 1+2+3+...+n](#64-求-1+2+3++n) -* [65. 不用加减乘除做加法](#65-不用加减乘除做加法) -* [66. 构建乘积数组](#66-构建乘积数组) -* [67. 把字符串转换成整数](#67-把字符串转换成整数) -* [68. 树中两个节点的最低公共祖先](#68-树中两个节点的最低公共祖先) - - - -# 前言 - -## 变量命名约定 - -- nums 表示数字数组,array 表示通用数组,matrix 表示矩阵; -- n 表示数组长度、字符串长度、树节点个数,以及其它具有一维性质的数据结构的元素个数; -- m, n 表示矩阵的行数和列数; -- first, last 表示闭区间,在需要作为函数参数时使用:[first, last]; -- l, h 也表示闭区间,在只作为局部变量时使用:[l, h]; -- begin, end 表示左闭右开区间:[begin, end); -- ret 表示结果相关的变量; -- dp 表示动态规划保存子问题的数组; - -## 复杂度简写说明 - -O(nlogn) + O(n2),第一个指时间复杂度,第二个指空间复杂度。 - -# 2. 实现 Singleton - -> [单例模式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#%E5%85%AB%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F) - -# 3. 数组中重复的数字 - -## 题目描述 - -在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为 7 的数组 {2, 3, 1, 0, 2, 5, 3},那么对应的输出是第一个重复的数字 2。 - -## 解题思路 - -这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素放到第 i 个位置上。 - -以 (2, 3, 1, 0, 2, 5) 为例,以下代码的运行过程为: - -```html -position-0 : (2,3,1,0,2,5) // 2 <-> 1 - (1,3,2,0,2,5) // 1 <-> 3 - (3,1,1,0,2,5) // 3 <-> 0 - (0,1,1,3,2,5) // already in position -position-1 : (0,1,1,3,2,5) // already in position -position-2 : (0,1,1,3,2,5) // nums[i] == nums[nums[i]], exit -``` - -遍历到位置 2 时,该位置上的数为 1,但是第 1 个位置上已经有一个 1 的值了,因此可以知道 1 重复。 - -复杂度:O(n) + O(1) - -```java -public boolean duplicate(int[] nums, int length, int[] duplication) { - if (nums == null || length <= 0) return false; - for (int i = 0; i < length; i++) { - while (nums[i] != i && nums[i] != nums[nums[i]]) { - swap(nums, i, nums[i]); - } - if (nums[i] != i && nums[i] == nums[nums[i]]) { - duplication[0] = nums[i]; - return true; - } - } - return false; -} - -private void swap(int[] nums, int i, int j) { - int t = nums[i]; nums[i] = nums[j]; nums[j] = t; -} -``` - -# 4. 二维数组中的查找 - -## 题目描述 - -在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 - -```html -Consider the following matrix: -[ - [1, 4, 7, 11, 15], - [2, 5, 8, 12, 19], - [3, 6, 9, 16, 22], - [10, 13, 14, 17, 24], - [18, 21, 23, 26, 30] -] - -Given target = 5, return true. -Given target = 20, return false. -``` - -## 解题思路 - -从右上角开始查找。因为矩阵中的一个数,它左边的数都比它小,下边的数都比它大。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间。 - -复杂度:O(m + n) + O(1) - -```java -public boolean Find(int target, int[][] matrix) { - if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return false; - int m = matrix.length, n = matrix[0].length; - int r = 0, c = n - 1; // 从右上角开始 - while (r <= m - 1 && c >= 0) { - if (target == matrix[r][c]) return true; - else if (target > matrix[r][c]) r++; - else c--; - } - return false; -} -``` - -# 5. 替换空格 - -## 题目描述 - -请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为 We Are Happy. 则经过替换之后的字符串为 We%20Are%20Happy。 - -## 解题思路 - -在字符串尾部填充任意字符,使得字符串的长度等于字符串替换之后的长度。因为一个空格要替换成三个字符(%20),因此当遍历到一个空格时,需要在尾部填充两个任意字符。 - -令 P1 指向字符串原来的末尾位置,P2 指向字符串现在的末尾位置。P1 和 P2 从后向前遍历,当 P1 遍历到一个空格时,就需要令 P2 指向的位置依次填充 02%(注意是逆序的),否则就填充上 P1 指向字符的值。 - -从后向前遍是为了在改变 P2 所指向的内容时,不会影响到 P1 遍历原来字符串的内容。 - -复杂度:O(n) + O(1) - -

    - -```java -public String replaceSpace(StringBuffer str) { - int oldLen = str.length(); - for (int i = 0; i < oldLen; i++) { - if (str.charAt(i) == ' ') { - str.append(" "); - } - } - int idxOfOld = oldLen - 1; - int idxOfNew = str.length() - 1; - while (idxOfOld >= 0 && idxOfNew > idxOfOld) { - char c = str.charAt(idxOfOld--); - if (c == ' ') { - str.setCharAt(idxOfNew--, '0'); - str.setCharAt(idxOfNew--, '2'); - str.setCharAt(idxOfNew--, '%'); - } else { - str.setCharAt(idxOfNew--, c); - } - } - return str.toString(); -} -``` - -# 6. 从尾到头打印链表 - -## 题目描述 - -输入链表的第一个节点,从尾到头反过来打印出每个结点的值。 - -## 解题思路 - -### 使用栈 - -```java -public ArrayList printListFromTailToHead(ListNode listNode) { - Stack stack = new Stack<>(); - while (listNode != null) { - stack.add(listNode.val); - listNode = listNode.next; - } - ArrayList ret = new ArrayList<>(); - while (!stack.isEmpty()) { - ret.add(stack.pop()); - } - return ret; -} -``` - -### 使用递归 - -```java -public ArrayList printListFromTailToHead(ListNode listNode) { - ArrayList ret = new ArrayList<>(); - if(listNode != null) { - ret.addAll(printListFromTailToHead(listNode.next)); - ret.add(listNode.val); - } - return ret; -} -``` - -### 使用 Collections.reverse() - -```java -public ArrayList printListFromTailToHead(ListNode listNode) { - ArrayList ret = new ArrayList<>(); - while (listNode != null) { - ret.add(listNode.val); - listNode = listNode.next; - } - Collections.reverse(ret); - return ret; -} -``` - -### 使用头插法 - -利用链表头插法为逆序的特点。 - -头结点和第一个节点的区别:头结点是在头插法中使用的一个额外节点,这个节点不存储值;第一个节点就是链表的第一个真正存储值的节点。 - -```java -public ArrayList printListFromTailToHead(ListNode listNode) { - // 头插法构建逆序链表 - ListNode head = new ListNode(-1); - while (listNode != null) { - ListNode memo = listNode.next; - listNode.next = head.next; - head.next = listNode; - listNode = memo; - } - // 构建 ArrayList - ArrayList ret = new ArrayList<>(); - head = head.next; - while (head != null) { - ret.add(head.val); - head = head.next; - } - return ret; -} -``` - -# 7. 重建二叉树 - -## 题目描述 - -根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。 - -```html -For example, given - -preorder = [3,9,20,15,7] -inorder = [9,3,15,20,7] - -Return the following binary tree: - - 3 - / \ - 9 20 - / \ - 15 7 -``` - -## 解题思路 - -前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。 - -```java -private Map inOrderNumsIdx = new HashMap<>(); // 缓存中序遍历数组的每个值对应的索引 - -public TreeNode reConstructBinaryTree(int[] pre, int[] in) { - for (int i = 0; i < in.length; i++) { - inOrderNumsIdx.put(in[i], i); - } - return reConstructBinaryTree(pre, 0, pre.length - 1, in, 0, in.length - 1); -} - -private TreeNode reConstructBinaryTree(int[] pre, int preL, int preR, int[] in, int inL, int inR) { - if (preL == preR) return new TreeNode(pre[preL]); - if (preL > preR || inL > inR) return null; - TreeNode root = new TreeNode(pre[preL]); - int inIdx = inOrderNumsIdx.get(root.val); - int leftTreeSize = inIdx - inL; - root.left = reConstructBinaryTree(pre, preL + 1, preL + leftTreeSize, in, inL, inL + leftTreeSize - 1); - root.right = reConstructBinaryTree(pre, preL + leftTreeSize + 1, preR, in, inL + leftTreeSize + 1, inR); - return root; -} -``` - -# 8. 二叉树的下一个结点 - -## 题目描述 - -给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 - -## 解题思路 - -① 如果一个节点有右子树不为空,那么该节点的下一个节点是右子树的最左节点; - -

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

    - -```java -public class TreeLinkNode { - int val; - TreeLinkNode left = null; - TreeLinkNode right = null; - TreeLinkNode next = null; - - TreeLinkNode(int val) { - this.val = val; - } -} -``` - -```java -public TreeLinkNode GetNext(TreeLinkNode pNode) { - if (pNode.right != null) { - TreeLinkNode node = pNode.right; - while (node.left != null) node = node.left; - return node; - } else { - while (pNode.next != null) { - TreeLinkNode parent = pNode.next; - if (parent.left == pNode) return parent; - pNode = pNode.next; - } - } - return null; -} -``` - -# 9. 用两个栈实现队列 - -## 解题思路 - -in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,此时先进入的元素先退出,这就是队列的顺序。 - -```java -Stack in = new Stack(); -Stack out = new Stack(); - -public void push(int node) { - in.push(node); -} - -public int pop() { - if (out.isEmpty()) { - while (!in.isEmpty()) { - out.push(in.pop()); - } - } - return out.pop(); -} -``` - -# 10.1 斐波那契数列 - -## 题目描述 - -以 O(1) 的时间复杂度求菲波那切数列。 - -

    - -## 解题思路 - -如果使用递归求解,那么会重复计算一些子问题。例如,求 f(10) 需要计算 f(9) 和 f(8),计算 f(9) 需要计算 f(8) 和 f(7),可以看到 f(8) 被重复计算了。 - -

    - -递归方法是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,避免重复求解子问题。 - -```java -public class Solution { - private int[] fib = new int[40]; - public Solution() { - fib[1] = 1; - fib[2] = 2; - for(int i = 2; i < fib.length; i++) { - fib[i] = fib[i - 1] + fib[i - 2]; - } - } - public int Fibonacci(int n) { - return fib[n]; - } -} -``` - -# 10.2 跳台阶 - -## 题目描述 - -一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 - -## 解题思路 - -```java -public int JumpFloor(int n) { - if (n == 1) return 1; - int[] dp = new int[n]; - dp[0] = 1; - dp[1] = 2; - for (int i = 2; i < n; i++) { - dp[i] = dp[i - 1] + dp[i - 2]; - } - return dp[n - 1]; -} -``` - -# 10.3 变态跳台阶 - -## 题目描述 - -一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级……它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 - -## 解题思路 - -```java -public int JumpFloorII(int n) { - int[] dp = new int[n]; - Arrays.fill(dp, 1); - for(int i = 1; i < n; i++) { - for(int j = 0; j < i; j++) { - dp[i] += dp[j]; - } - } - return dp[n - 1]; -} -``` - -# 10.4 矩形覆盖 - -## 题目描述 - -我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? - -## 解题思路 - -```java -public int RectCover(int n) { - if (n < 2) return n; - int[] dp = new int[n]; - dp[0] = 1; - dp[1] = 2; - for (int i = 2; i < n; i++) { - dp[i] = dp[i - 1] + dp[i - 2]; - } - return dp[n - 1]; -} -``` - -# 11. 旋转数组的最小数字 - -## 题目描述 - -把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组 {3, 4, 5, 1, 2} 为 {1, 2, 3, 4, 5} 的一个旋转,该数组的最小值为 1。NOTE:给出的所有元素都大于 0,若数组大小为 0,请返回 0。 - -## 解题思路 - -### 分治 - -复杂度:O(logn) + O(1),其实空间复杂度不止 O(1),因为分治使用了递归栈,用到了额外的空间,如果对空间有要求就不能用这种方法。 - -```java -public int minNumberInRotateArray(int[] nums) { - return minNumberInRotateArray(nums, 0, nums.length - 1); -} - -private int minNumberInRotateArray(int[] nums, int first, int last) { - if (nums[first] < nums[last]) return nums[first]; - if (first == last) return nums[first]; - int mid = first + (last - first) / 2; - return Math.min(minNumberInRotateArray(nums, first, mid), minNumberInRotateArray(nums, mid + 1, last)); -} -``` - -### 双指针 - -复杂度:O(logn) + O(1) - -```java -public int minNumberInRotateArray(int[] nums) { - if (nums.length == 0) return 0; - int l = 0, h = nums.length - 1; - while (nums[l] >= nums[h]) { - if (h - l == 1) return nums[h]; - int mid = l + (h - l) / 2; - if (nums[mid] >= nums[l]) l = mid; - else if (nums[mid] <= nums[h]) h = mid; - } - return nums[l]; -} -``` - -# 12. 矩阵中的路径 - -## 题目描述 - -请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。例如 a b c e s f c s a d e e 矩阵中包含一条字符串 "bcced" 的路径,但是矩阵中不包含 "abcb" 路径,因为字符串的第一个字符 b 占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。 - -## 解题思路 - -```java -private int[][] next = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}}; -private int rows; -private int cols; - -public boolean hasPath(char[] array, int rows, int cols, char[] str) { - if (rows == 0 || cols == 0) return false; - this.rows = rows; - this.cols = cols; - boolean[][] hasUsed = new boolean[rows][cols]; - char[][] matrix = buildMatrix(array); - for (int i = 0; i < rows; i++) { - for (int j = 0; j < cols; j++) { - if (backtracking(matrix, str, hasUsed, 0, i, j)) return true; - } - } - return false; -} - -private boolean backtracking(char[][] matrix, char[] str, boolean[][] hasUsed, int pathLen, int row, int col) { - if (pathLen == str.length) return true; - if (row < 0 || row >= rows || col < 0 || col >= cols) return false; - if (matrix[row][col] != str[pathLen]) return false; - if (hasUsed[row][col]) return false; - hasUsed[row][col] = true; - for (int i = 0; i < next.length; i++) { - if (backtracking(matrix, str, hasUsed, pathLen + 1, row + next[i][0], col + next[i][1])) - return true; - } - hasUsed[row][col] = false; - return false; -} - -private char[][] buildMatrix(char[] array) { - char[][] matrix = new char[rows][cols]; - for (int i = 0, idx = 0; i < rows; i++) { - for (int j = 0; j < cols; j++) { - matrix[i][j] = array[idx++]; - } - } - return matrix; -} -``` - -# 13. 机器人的运动范围 - -## 题目描述 - -地上有一个 m 行和 n 列的方格。一个机器人从坐标 (0, 0) 的格子开始移动,每一次只能向左右上下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 k 的格子。例如,当 k 为 18 时,机器人能够进入方格(35, 37),因为 3+5+3+7=18。但是,它不能进入方格(35, 38),因为 3+5+3+8=19。请问该机器人能够达到多少个格子? - -## 解题思路 - -```java -private int cnt = 0; -private int[][] next = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}}; -private int rows; -private int cols; -private int threshold; -private int[][] digitSum; - -public int movingCount(int threshold, int rows, int cols) { - this.rows = rows; - this.cols = cols; - this.threshold = threshold; - initDigitSum(); - boolean[][] hasVisited = new boolean[rows][cols]; - dfs(hasVisited, 0, 0); - return cnt; -} - -private void dfs(boolean[][] hasVisited, int r, int c) { - if (r < 0 || r >= this.rows || c < 0 || c >= this.cols) return; - if (hasVisited[r][c]) return; - hasVisited[r][c] = true; - if (this.digitSum[r][c] > this.threshold) return; - this.cnt++; - for (int i = 0; i < this.next.length; i++) { - dfs(hasVisited, r + next[i][0], c + next[i][1]); - } -} - -private void initDigitSum() { - int[] digitSumOne = new int[Math.max(rows, cols)]; - for (int i = 0; i < digitSumOne.length; i++) { - int n = i; - while (n > 0) { - digitSumOne[i] += n % 10; - n /= 10; - } - } - this.digitSum = new int[rows][cols]; - for (int i = 0; i < this.rows; i++) { - for (int j = 0; j < this.cols; j++) { - this.digitSum[i][j] = digitSumOne[i] + digitSumOne[j]; - } - } -} -``` - -# 14. 剪绳子 - -## 题目描述 - -把一根绳子剪成多段,并且使得每段的长度乘积最大。 - -## 解题思路 - -### 动态规划解法 - -```java -public int maxProductAfterCutting(int n) { - int[] dp = new int[n + 1]; - dp[1] = 1; - for (int i = 2; i <= n; i++) { - for (int j = 1; j < i; j++) { - dp[i] = Math.max(dp[i], Math.max(j * (i - j), dp[j] * (i - j))); - } - } - return dp[n]; -} -``` - -### 贪心解法 - -尽可能多得剪长度为 3 的绳子,并且不允许有长度为 1 的绳子出现,如果出现了,就从已经切好长度为 3 的绳子中拿出一段与长度为 1 的绳子重新组合,把它们切成两段长度为 2 的绳子。 - -证明:当 n >= 5 时,3(n - 3) - 2(n - 2) = n - 5 >= 0。因此把长度大于 5 的绳子切成两段,令其中一段长度为 3 可以使得两段的乘积最大。 - -```java -public int maxProductAfterCutting(int n) { - if (n < 2) return 0; - if (n == 2) return 1; - if (n == 3) return 2; - int timesOf3 = n / 3; - if (n - timesOf3 * 3 == 1) timesOf3--; - int timesOf2 = (n - timesOf3 * 3) / 2; - return (int) (Math.pow(3, timesOf3)) * (int) (Math.pow(2, timesOf2)); -} -``` - -# 15. 二进制中 1 的个数 - -## 题目描述 - -输入一个整数,输出该数二进制表示中 1 的个数。 - -### Integer.bitCount() - -```java -public int NumberOf1(int n) { - return Integer.bitCount(n); -} -``` - -### n&(n-1) - -O(logM) 时间复杂度解法,其中 m 表示 1 的个数。 - -该位运算是去除 n 的位级表示中最低的那一位。 - -``` -n : 10110100 -n-1 : 10110011 -n&(n-1) : 10110000 -``` - -```java -public int NumberOf1(int n) { - int cnt = 0; - while (n != 0) { - cnt++; - n &= (n - 1); - } - return cnt; -} -``` - -# 16. 数值的整数次方 - -## 题目描述 - -给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent。求 base 的 exponent 次方。 - -## 解题思路 - -下面的讨论中 x 代表 base,n 代表 exponent。 - -

    - -因为 (x\*x)n/2 可以通过递归求解,并且每递归一次,n 都减小一半,因此整个算法的时间复杂度为 O(logn)。 - -```java -public double Power(double base, int exponent) { - if (exponent == 0) return 1; - if (exponent == 1) return base; - boolean isNegative = false; - if (exponent < 0) { - exponent = -exponent; - isNegative = true; - } - double pow = Power(base * base, exponent / 2); - if (exponent % 2 != 0) pow = pow * base; - return isNegative ? 1 / pow : pow; -} -``` - -# 17. 打印从 1 到最大的 n 位数 - -## 题目描述 - -输入数字 n,按顺序打印出从 1 最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数即 999。 - -## 解题思路 - -由于 n 可能会非常大,因此不能直接用 int 表示数字,而是用 char 数组进行存储。 - -使用回溯法得到所有的数。 - -```java -public void print1ToMaxOfNDigits(int n) { - if (n < 0) return; - char[] number = new char[n]; - print1ToMaxOfNDigits(number, -1); -} - -private void print1ToMaxOfNDigits(char[] number, int digit) { - if (digit == number.length - 1) { - printNumber(number); - return; - } - for (int i = 0; i < 10; i++) { - number[digit + 1] = (char) (i + '0'); - print1ToMaxOfNDigits(number, digit + 1); - } -} -``` - -# 18.1 在 O(1) 时间内删除链表节点 - -## 解题思路 - -① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,令该节点指向下下个节点,然后删除下一个节点,时间复杂度为 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)。 - -```java -public ListNode deleteNode(ListNode head, ListNode tobeDelete) { - if (head == null || head.next == null || tobeDelete == null) return null; - if (tobeDelete.next != null) { - // 要删除的节点不是尾节点 - ListNode next = tobeDelete.next; - tobeDelete.val = next.val; - tobeDelete.next = next.next; - } else { - ListNode cur = head; - while (cur.next != tobeDelete) cur = cur.next; - cur.next = null; - } - return head; -} -``` - -# 18.2 删除链表中重复的结点 - -## 题目描述 - -```html -Input : 1->2->3->3->4->4->5 -Output : 1->2->5 -``` - -## 解题描述 - -```java -public ListNode deleteDuplication(ListNode pHead) { - if (pHead == null) return null; - ListNode next = pHead.next; - if (next == null) return pHead; - if (pHead.val == next.val) { - while (next != null && pHead.val == next.val) next = next.next; - return deleteDuplication(next); - } - pHead.next = deleteDuplication(pHead.next); - return pHead; -} -``` - -# 19. 正则表达式匹配 - -## 题目描述 - -请实现一个函数用来匹配包括 '.' 和 '\*' 的正则表达式。模式中的字符 '.' 表示任意一个字符,而 '\*' 表示它前面的字符可以出现任意次(包含 0 次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串 "aaa" 与模式 "a.a" 和 "ab\*ac\*a" 匹配,但是与 "aa.a" 和 "ab\*a" 均不匹配。 - -## 解题思路 - -应该注意到,'.' 是用来代替一个任意字符,而 '\*' 是用来重复前面的字符。这两个的作用不同,不能把 '.' 的作用和 '\*' 进行类比,从而它当成重复前面字符一次。 - -```html -p.charAt(j) == s.charAt(i) : dp[i][j] = dp[i-1][j-1]; -p.charAt(j) == '.' : dp[i][j] = dp[i-1][j-1]; -p.charAt(j) == '*' : - p.charAt(j-1) != s.charAt(i) : dp[i][j] = dp[i][j-2] // in this case, a* only counts as empty - p.charAt(j-1) == s.charAt(i) or p.charAt(i-1) == '.': - dp[i][j] = dp[i-1][j] // in this case, a* counts as multiple a - or dp[i][j] = dp[i][j-1] // in this case, a* counts as single a - or dp[i][j] = dp[i][j-2] // in this case, a* counts as empty -``` - -```java -public boolean match(char[] str, char[] pattern) { - int m = str.length, n = pattern.length; - boolean[][] dp = new boolean[m + 1][n + 1]; - dp[0][0] = true; - for (int i = 1; i <= n; i++) { - if (pattern[i - 1] == '*') { - dp[0][i] = dp[0][i - 2]; - } - } - for (int i = 1; i <= m; i++) { - for (int j = 1; j <= n; j++) { - if (str[i - 1] == pattern[j - 1] || pattern[j - 1] == '.') { - dp[i][j] = dp[i - 1][j - 1]; - } else if (pattern[j - 1] == '*') { - if (pattern[j - 2] == str[i - 1] || pattern[j - 2] == '.') { - dp[i][j] = dp[i][j - 1] || dp[i][j - 2] || dp[i - 1][j]; - } else { - dp[i][j] = dp[i][j - 2]; - } - } - } - } - return dp[m][n]; -} -``` - -# 20. 表示数值的字符串 - -## 题目描述 - -请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串 "+100","5e2","-123","3.1416" 和 "-1E-16" 都表示数值。 但是 "12e","1a3.14","1.2.3","+-5" 和 "12e+4.3" 都不是。 - -## 解题思路 - -```java -public boolean isNumeric(char[] str) { - return new String(str).matches("[+-]?\\d*(\\.\\d+)?([eE][+-]?\\d+)?"); -} -``` - -# 21. 调整数组顺序使奇数位于偶数前面 - -## 题目描述 - -保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 - -## 解题思路 - -复杂度:O(n2) + O(1) - -```java -public void reOrderArray(int[] nums) { - int n = nums.length; - for (int i = 0; i < n; i++) { - if (nums[i] % 2 == 0) { - int nextOddIdx = i + 1; - while (nextOddIdx < n && nums[nextOddIdx] % 2 == 0) nextOddIdx++; - if (nextOddIdx == n) break; - int nextOddVal = nums[nextOddIdx]; - for (int j = nextOddIdx; j > i; j--) { - nums[j] = nums[j - 1]; - } - nums[i] = nextOddVal; - } - } -} -``` - -复杂度:O(n) + O(n) - -```java -public void reOrderArray(int[] nums) { - int oddCnt = 0; - for (int val : nums) if (val % 2 == 1) oddCnt++; - int[] copy = nums.clone(); - int i = 0, j = oddCnt; - for (int num : copy) { - if (num % 2 == 1) nums[i++] = num; - else nums[j++] = num; - } -} -``` - -# 22. 链表中倒数第 K 个结点 - -## 解题思路 - -设链表的长度为 N。设两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到 N - K 个节点处,该位置就是倒数第 K 个节点。 - -## 解题思路 - -

    - -```java -public ListNode FindKthToTail(ListNode head, int k) { - if (head == null) return null; - ListNode P1, P2; - P1 = P2 = head; - while (P1 != null && k-- > 0) P1 = P1.next; - if (k > 0) return null; - while (P1 != null) { - P1 = P1.next; - P2 = P2.next; - } - return P2; -} -``` - -# 23. 链表中环的入口结点 - -## 解题思路 - -使用双指针,一个指针 fast 每次移动两个节点,一个指针 slow 每次移动一个节点。因为存在环,所以两个指针必定相遇在环中的某个节点上。此时 fast 移动的节点数为 x+2y+z,slow 为 x+y,由于 fast 速度比 slow 快一倍,因此 x+2y+z=2(x+y),得到 x=z。 - -在相遇点,slow 要到环的入口点还需要移动 z 个节点,如果让 fast 重新从头开始移动,并且速度变为每次移动一个节点,那么它到环入口点还需要移动 x 个节点。在上面已经推导出 x=z,因此 fast 和 slow 将在环入口点相遇。 - -

    - -```java -public ListNode EntryNodeOfLoop(ListNode pHead) { - if (pHead == null) return null; - ListNode slow = pHead, fast = pHead; - while (fast != null && fast.next != null) { - fast = fast.next.next; - slow = slow.next; - if (slow == fast) { - fast = pHead; - while (slow != fast) { - slow = slow.next; - fast = fast.next; - } - return slow; - } - } - return null; -} -``` - -# 24. 反转链表 - -## 解题思路 - -### 递归 - -```java -public ListNode ReverseList(ListNode head) { - if (head == null || head.next == null) return head; - ListNode next = head.next; - head.next = null; - ListNode newHead = ReverseList(next); - next.next = head; - return newHead; -} -``` - -### 迭代 - -```java -public ListNode ReverseList(ListNode head) { - ListNode newList = new ListNode(-1); - while (head != null) { - ListNode next = head.next; - head.next = newList.next; - newList.next = head; - head = next; - } - return newList.next; -} -``` - -# 25. 合并两个排序的链表 - -## 题目描述 - -

    - -## 解题思路 - -### 递归 - -```java -public ListNode Merge(ListNode list1, ListNode list2) { - if (list1 == null) return list2; - if (list2 == null) return list1; - if (list1.val <= list2.val) { - list1.next = Merge(list1.next, list2); - return list1; - } else { - list2.next = Merge(list1, list2.next); - return list2; - } -} -``` - -### 迭代 - -```java -public ListNode Merge(ListNode list1, ListNode list2) { - ListNode head = new ListNode(-1); - ListNode cur = head; - while (list1 != null && list2 != null) { - if (list1.val < list2.val) { - cur.next = list1; - list1 = list1.next; - } else { - cur.next = list2; - list2 = list2.next; - } - cur = cur.next; - } - if (list1 != null) cur.next = list1; - if (list2 != null) cur.next = list2; - return head.next; -} -``` - -# 26. 树的子结构 - -## 题目描述 - -

    - -## 解题思路 - -```java -public boolean HasSubtree(TreeNode root1, TreeNode root2) { - if (root1 == null || root2 == null) return false; - return isSubtree(root1, root2) || HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2); -} - -private boolean isSubtree(TreeNode root1, TreeNode root2) { - if (root1 == null && root2 == null) return true; - if (root1 == null) return false; - if (root2 == null) return true; - if (root1.val != root2.val) return false; - return isSubtree(root1.left, root2.left) && isSubtree(root1.right, root2.right); -} -``` - -# 27. 二叉树的镜像 - -## 题目描述 - -

    - -## 解题思路 - -```java -public void Mirror(TreeNode root) { - if (root == null) return; - swap(root); - Mirror(root.left); - Mirror(root.right); -} - -private void swap(TreeNode root) { - TreeNode t = root.left; - root.left = root.right; - root.right = t; -} -``` - -# 28.1 对称的二叉树 - -## 题目描述 - -```html - 1 - / \ - 2 2 - / \ / \ -3 4 4 3 -``` - -## 解题思路 - -```java -boolean isSymmetrical(TreeNode pRoot) { - if (pRoot == null) return true; - return isSymmetrical(pRoot.left, pRoot.right); -} - -boolean isSymmetrical(TreeNode t1, TreeNode t2) { - if (t1 == null && t2 == null) return true; - if (t1 == null || t2 == null) return false; - if (t1.val != t2.val) return false; - return isSymmetrical(t1.left, t2.right) && isSymmetrical(t1.right, t2.left); -} -``` - -# 28.2 平衡二叉树 - -## 题目描述 - -```html - 3 - / \ - 9 20 - / \ - 15 7 -``` - -平衡二叉树左右子树高度差不超过 1。 - -## 解题思路 - -```java -private boolean isBalanced = true; - -public boolean IsBalanced_Solution(TreeNode root) { - height(root); - return isBalanced; -} - -private int height(TreeNode root) { - if (root == null) return 0; - int left = height(root.left); - int right = height(root.right); - if (Math.abs(left - right) > 1) isBalanced = false; - return 1 + Math.max(left, right); -} -``` - -# 29. 顺时针打印矩阵 - -## 题目描述 - -下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 - -

    - -

    - -## 解题思路 - -```java -public ArrayList printMatrix(int[][] matrix) { - ArrayList ret = new ArrayList<>(); - int r1 = 0, r2 = matrix.length - 1, c1 = 0, c2 = matrix[0].length - 1; - while (r1 <= r2 && c1 <= c2) { - for (int i = c1; i <= c2; i++) ret.add(matrix[r1][i]); - for (int i = r1 + 1; i <= r2; i++) ret.add(matrix[i][c2]); - if (r1 != r2) for (int i = c2 - 1; i >= c1; i--) ret.add(matrix[r2][i]); - if (c1 != c2) for (int i = r2 - 1; i > r1; i--) ret.add(matrix[i][c1]); - r1++; r2--; c1++; c2--; - } - return ret; -} -``` - -# 30. 包含 min 函数的栈 - -## 题目描述 - -定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的 min 函数。 - -## 解题思路 - -```java -private Stack stack = new Stack<>(); -private Stack minStack = new Stack<>(); -private int min = Integer.MAX_VALUE; - -public void push(int node) { - stack.push(node); - if (min > node) min = node; - minStack.push(min); -} - -public void pop() { - stack.pop(); - minStack.pop(); - min = minStack.peek(); -} - -public int top() { - return stack.peek(); -} - -public int min() { - return minStack.peek(); -} -``` - -# 31. 栈的压入、弹出序列 - -## 题目描述 - -输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。 - -## 解题思路 - -```java -public boolean IsPopOrder(int[] pushA, int[] popA) { - int n = pushA.length; - Stack stack = new Stack<>(); - for (int pushIndex = 0, popIndex = 0; pushIndex < n; pushIndex++) { - stack.push(pushA[pushIndex]); - while (popIndex < n && stack.peek() == popA[popIndex]) { - stack.pop(); - popIndex++; - } - } - return stack.isEmpty(); -} -``` - -# 32.1 从上往下打印二叉树 - -## 题目描述 - -从上往下打印出二叉树的每个节点,同层节点从左至右打印。 - -例如,以下二叉树层次遍历的结果为 8, 6, 10, 5, 7, 9, 11 - -

    - -## 解题思路 - -使用队列来进行层次遍历。 - -不需要使用两个队列分别存储当前层的节点和下一层的节点,因为在开始遍历一层的节点时,当前队列中的节点数就是当前层的节点数,只要控制遍历这么多节点数,就能保证这次遍历的都是当前层的节点。 - -```java -public ArrayList PrintFromTopToBottom(TreeNode root) { - Queue queue = new LinkedList<>(); - ArrayList ret = new ArrayList<>(); - if (root == null) return ret; - queue.add(root); - while (!queue.isEmpty()) { - int cnt = queue.size(); - for (int i = 0; i < cnt; i++) { - TreeNode t = queue.poll(); - if (t.left != null) queue.add(t.left); - if (t.right != null) queue.add(t.right); - ret.add(t.val); - } - } - return ret; -} -``` - -# 32.2 把二叉树打印成多行 - -## 题目描述 - -和上题几乎一样。 - -## 解题思路 - -```java -ArrayList> Print(TreeNode pRoot) { - ArrayList> ret = new ArrayList<>(); - if (pRoot == null) return ret; - Queue queue = new LinkedList<>(); - queue.add(pRoot); - while (!queue.isEmpty()) { - int cnt = queue.size(); - ArrayList list = new ArrayList<>(); - for (int i = 0; i < cnt; i++) { - TreeNode node = queue.poll(); - list.add(node.val); - if (node.left != null) queue.add(node.left); - if (node.right != null) queue.add(node.right); - } - ret.add(list); - } - return ret; -} -``` - -# 32.3 按之字形顺序打印二叉树 - -## 题目描述 - -请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 - -## 解题思路 - -```java -public ArrayList> Print(TreeNode pRoot) { - ArrayList> ret = new ArrayList<>(); - if (pRoot == null) return ret; - Queue queue = new LinkedList<>(); - queue.add(pRoot); - boolean reverse = false; - while (!queue.isEmpty()) { - int cnt = queue.size(); - ArrayList list = new ArrayList<>(); - for (int i = 0; i < cnt; i++) { - TreeNode node = queue.poll(); - list.add(node.val); - if (node.left != null) queue.add(node.left); - if (node.right != null) queue.add(node.right); - } - if (reverse) Collections.reverse(list); - reverse = !reverse; - ret.add(list); - } - return ret; -} -``` - -# 33. 二叉搜索树的后序遍历序列 - -## 题目描述 - -输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 - -例如,下图中后序遍历序列 5, 7, 6, 9, 11, 10, 8 所对应的二叉搜索树。 - -

    - -## 解题思路 - -```java -public boolean VerifySquenceOfBST(int[] sequence) { - if (sequence == null || sequence.length == 0) return false; - return verify(sequence, 0, sequence.length - 1); -} - -private boolean verify(int[] sequence, int first, int last) { - if (last - first <= 1) return true; - int rootVal = sequence[last]; - int cutIndex = first; - while (cutIndex < last && sequence[cutIndex] <= rootVal) cutIndex++; - for (int i = cutIndex + 1; i < last; i++) { - if (sequence[i] < rootVal) return false; - } - return verify(sequence, first, cutIndex - 1) && verify(sequence, cutIndex, last - 1); -} -``` - -# 34. 二叉树中和为某一值的路径 - -## 题目描述 - -输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 - -下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 - -

    - -## 解题思路 - -```java -private ArrayList> ret = new ArrayList<>(); - -public ArrayList> FindPath(TreeNode root, int target) { - dfs(root, target, new ArrayList<>()); - return ret; -} - -private void dfs(TreeNode node, int target, ArrayList path) { - if (node == null) return; - path.add(node.val); - target -= node.val; - if (target == 0 && node.left == null && node.right == null) { - ret.add(new ArrayList(path)); - } else { - dfs(node.left, target, path); - dfs(node.right, target, path); - } - path.remove(path.size() - 1); -} -``` - -# 35. 复杂链表的复制 - -## 题目描述 - -输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的 head。 - -

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

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

    - -第三步,拆分。 - -

    - -```java -public RandomListNode Clone(RandomListNode pHead) { - if (pHead == null) { - return null; - } - // 插入新节点 - RandomListNode cur = pHead; - while (cur != null) { - RandomListNode clone = new RandomListNode(cur.label); - clone.next = cur.next; - cur.next = clone; - cur = clone.next; - } - // 建立 random 链接 - cur = pHead; - while (cur != null) { - RandomListNode clone = cur.next; - if (cur.random != null) { - clone.random = cur.random.next; - } - cur = clone.next; - } - // 拆分 - cur = pHead; - RandomListNode pCloneHead = pHead.next; - while (cur.next != null) { - RandomListNode next = cur.next; - cur.next = next.next; - cur = next; - } - return pCloneHead; -} -``` - -# 36. 二叉搜索树与双向链表 - -## 题目描述 - -输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 - -

    - -## 解题思路 - -```java -private TreeNode pre = null; -private TreeNode head = null; - -public TreeNode Convert(TreeNode root) { - if (root == null) return null; - inOrder(root); - return head; -} - -private void inOrder(TreeNode node) { - if (node == null) return; - inOrder(node.left); - node.left = pre; - if (pre != null) pre.right = node; - pre = node; - if (head == null) head = node; - inOrder(node.right); -} -``` - -# 37. 序列化二叉树 - -## 题目描述 - -请实现两个函数,分别用来序列化和反序列化二叉树。 - -## 解题思路 - -```java -public class Solution { - - private String deserializeStr; - - public String Serialize(TreeNode root) { - if (root == null) return "#"; - return root.val + " " + Serialize(root.left) + " " + Serialize(root.right); - } - - public TreeNode Deserialize(String str) { - deserializeStr = str; - return Deserialize(); - } - - private TreeNode Deserialize() { - if (deserializeStr.length() == 0) return null; - int index = deserializeStr.indexOf(" "); - String node = index == -1 ? deserializeStr : deserializeStr.substring(0, index); - deserializeStr = index == -1 ? "" : deserializeStr.substring(index + 1); - if (node.equals("#")) return null; - int val = Integer.valueOf(node); - TreeNode t = new TreeNode(val); - t.left = Deserialize(); - t.right = Deserialize(); - return t; - } -} -``` - -# 38. 字符串的排列 - -## 题目描述 - -输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串 abc,则打印出由字符 a, b, c 所能排列出来的所有字符串 abc, acb, bac, bca, cab 和 cba。 - -## 解题思路 - -```java -private ArrayList ret = new ArrayList<>(); - -public ArrayList Permutation(String str) { - if (str.length() == 0) return ret; - char[] chars = str.toCharArray(); - Arrays.sort(chars); - backtracking(chars, new boolean[chars.length], new StringBuffer()); - return ret; -} - -private void backtracking(char[] chars, boolean[] hasUsed, StringBuffer s) { - if (s.length() == chars.length) { - ret.add(s.toString()); - return; - } - for (int i = 0; i < chars.length; i++) { - if (hasUsed[i]) continue; - if (i != 0 && chars[i] == chars[i - 1] && !hasUsed[i - 1]) continue; // 保证不重复 - hasUsed[i] = true; - s.append(chars[i]); - backtracking(chars, hasUsed, s); - s.deleteCharAt(s.length() - 1); - hasUsed[i] = false; - } -} -``` - -# 39. 数组中出现次数超过一半的数字 - -## 解题思路 - -多数投票问题,可以利用 Boyer-Moore Majority Vote Algorithm 来解决这个问题,使得时间复杂度为 O(n)。 - -使用 cnt 来统计一个元素出现的次数,当遍历到的元素和统计元素不相等时,令 cnt--。如果前面查找了 i 个元素,且 cnt == 0 ,说明前 i 个元素没有 majority,或者有 majority,但是出现的次数少于 i / 2 ,因为如果多于 i / 2 的话 cnt 就一定不会为 0 。此时剩下的 n - i 个元素中,majority 的数目依然多于 (n - i) / 2,因此继续查找就能找出 majority。 - -```java -public int MoreThanHalfNum_Solution(int[] nums) { - int majority = nums[0]; - for (int i = 1, cnt = 1; i < nums.length; i++) { - cnt = nums[i] == majority ? cnt + 1 : cnt - 1; - if (cnt == 0) { - majority = nums[i]; - cnt = 1; - } - } - int cnt = 0; - for (int val : nums) if (val == majority) cnt++; - return cnt > nums.length / 2 ? majority : 0; -} -``` - -# 40. 最小的 K 个数 - -## 解题思路 - -### 快速选择 - -- 复杂度:O(N) + O(1) -- 只有当允许修改数组元素时才可以使用 - -快速排序的 partition() 方法,会返回一个整数 j 使得 a[l..j-1] 小于等于 a[j],且 a[j+1..h] 大于等于 a[j],此时 a[j] 就是数组的第 j 大元素。可以利用这个特性找出数组的第 K 个元素,这种找第 K 个元素的算法称为快速选择算法。 - -找到第 K 个元素之后,就可以再遍历一次数组,所有小于等于该元素的数组元素都是最小的 K 个数。 - -```java -public ArrayList GetLeastNumbers_Solution(int[] nums, int k) { - if (k > nums.length || k <= 0) return new ArrayList<>(); - int kthSmallest = findKthSmallest(nums, k - 1); - ArrayList ret = new ArrayList<>(); - for (int val : nums) { - if (val <= kthSmallest && ret.size() < k) ret.add(val); - } - return ret; -} - -public int findKthSmallest(int[] nums, int k) { - int l = 0; - int h = nums.length - 1; - while (l < h) { - int j = partition(nums, l, h); - if (j < k) { - l = j + 1; - } else if (j > k) { - h = j - 1; - } else { - break; - } - } - return nums[k]; -} - -private int partition(int[] nums, int l, int h) { - int i = l; - int j = h + 1; - while (true) { - while (i < h && nums[++i] < nums[l]) ; - while (j > l && nums[l] < nums[--j]) ; - if (i >= j) { - break; - } - swap(nums, i, j); - } - swap(nums, l, j); - return j; -} - -private void swap(int[] nums, int i, int j) { - int t = nums[i]; - nums[i] = nums[j]; - nums[j] = t; -} -``` - -### 大小为 K 的最小堆 - -- 复杂度:O(NlogK) + O(K) -- 特别适合处理海量数据 - -应该使用大顶堆来维护最小堆,而不能直接创建一个小顶堆并设置一个大小,企图让小顶堆中的元素都是最小元素。 - -维护一个大小为 K 的最小堆过程如下:在添加一个元素之后,如果大顶堆的大小大于 K,那么需要将大顶堆的堆顶元素去除。 - -```java -public ArrayList GetLeastNumbers_Solution(int[] nums, int k) { - if (k > nums.length || k <= 0) return new ArrayList<>(); - PriorityQueue maxHeap = new PriorityQueue<>((o1, o2) -> o2 - o1); - for (int num : nums) { - maxHeap.add(num); - if (maxHeap.size() > k) { - maxHeap.poll(); - } - } - ArrayList ret = new ArrayList<>(maxHeap); - return ret; -} -``` - -# 41.1 数据流中的中位数 - -## 题目描述 - -如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 - -## 解题思路 - -```java -public class Solution { - // 大顶堆,存储左半边元素 - private PriorityQueue left = new PriorityQueue<>((o1, o2) -> o2 - o1); - // 小顶堆,存储右半边元素,并且右半边元素都大于左半边 - private PriorityQueue right = new PriorityQueue<>(); - // 当前数据流读入的元素个数 - private int N = 0; - - public void Insert(Integer val) { - // 插入要保证两个堆存于平衡状态 - if (N % 2 == 0) { - // N 为偶数的情况下插入到右半边。 - // 因为右半边元素都要大于左半边,但是新插入的元素不一定比左半边元素来的大, - // 因此需要先将元素插入左半边,然后利用左半边为大顶堆的特点,取出堆顶元素即为最大元素,此时插入右半边 - left.add(val); - right.add(left.poll()); - } else { - right.add(val); - left.add(right.poll()); - } - N++; - } - - public Double GetMedian() { - if (N % 2 == 0) { - return (left.peek() + right.peek()) / 2.0; - } else { - return (double) right.peek(); - } - } -} -``` - -# 41.2 字符流中第一个不重复的字符 - -## 题目描述 - -请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 "go" 时,第一个只出现一次的字符是 "g"。当从该字符流中读出前六个字符“google" 时,第一个只出现一次的字符是 "l"。 - -## 解题思路 - -```java -public class Solution { - private int[] cnts = new int[256]; - private Queue queue = new LinkedList<>(); - - public void Insert(char ch) { - cnts[ch]++; - queue.add(ch); - while (!queue.isEmpty() && cnts[queue.peek()] > 1) { - queue.poll(); - } - } - - public char FirstAppearingOnce() { - if (queue.isEmpty()) return '#'; - return queue.peek(); - } -} -``` - -# 42. 连续子数组的最大和 - -## 题目描述 - -{6,-3,-2,7,-15,1,2,2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。 - -## 解题思路 - -```java -public int FindGreatestSumOfSubArray(int[] nums) { - if (nums.length == 0) return 0; - int ret = Integer.MIN_VALUE; - int sum = 0; - for (int val : nums) { - if (sum <= 0) sum = val; - else sum += val; - ret = Math.max(ret, sum); - } - return ret; -} -``` - -# 43. 从 1 到 n 整数中 1 出现的次数 - -## 解题思路 - -> [Leetcode : 233. Number of Digit One](https://leetcode.com/problems/number-of-digit-one/discuss/64381/4+-lines-O(log-n)-C++JavaPython) - -```java -public int NumberOf1Between1AndN_Solution(int n) { - int cnt = 0; - for (int m = 1; m <= n; m *= 10) { - int a = n / m, b = n % m; - cnt += (a + 8) / 10 * m + (a % 10 == 1 ? b + 1 : 0); - } - return cnt; -} -``` - -# 44. 数字序列中的某一位数字 - -## 题目描述 - -数字以 0123456789101112131415... 的格式序列化到一个字符串中,求这个字符串的第 index 位。 - -## 解题思路 - -```java -public int digitAtIndex(int index) { - if (index < 0) return -1; - int digit = 1; - while (true) { - int amount = getAmountOfDigit(digit); - int totalAmount = amount * digit; - if (index < totalAmount) { - return digitAtIndex(index, digit); - } - index -= totalAmount; - digit++; - } -} - -/** - * digit 位数的数字组成的字符串长度 - * 例如 digit = 2,return 90 - */ -private int getAmountOfDigit(int digit) { - if (digit == 1) return 10; - return (int) Math.pow(10, digit - 1) * 9; -} - -/** - * 在 digit 位数组成的字符串中,第 index 为的数 - */ -private int digitAtIndex(int index, int digit) { - int number = beginNumber(digit) + index / digit; - int remain = index % digit; - return (number + "").charAt(remain) - '0'; -} - -/** - * digit 位数的起始数字 - * 例如 digit = 2 return 10 - */ -private int beginNumber(int digit) { - if (digit == 1) return 0; - return (int) Math.pow(10, digit - 1); -} -``` - -# 45. 把数组排成最小的数 - -## 题目描述 - -输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组 {3,32,321},则打印出这三个数字能排成的最小数字为 321323。 - -## 解题思路 - -可以看成是一个排序问题,在比较两个字符串 S1 和 S2 的大小时,应该比较的是 S1+S2 和 S2+S1 的大小,如果 S1+S2 < S2+S1,那么应该把 S1 排在前面,否则应该把 S2 排在前面。 - -```java -public String PrintMinNumber(int[] numbers) { - int n = numbers.length; - String[] nums = new String[n]; - for (int i = 0; i < n; i++) nums[i] = numbers[i] + ""; - Arrays.sort(nums, (s1, s2) -> (s1 + s2).compareTo(s2 + s1)); - String ret = ""; - for (String str : nums) ret += str; - return ret; -} -``` - -# 46. 把数字翻译成字符串 - -## 题目描述 - -给定一个数字,按照如下规则翻译成字符串:0 翻译成“a”,1 翻译成“b”... 25 翻译成“z”。一个数字有多种翻译可能,例如 12258 一共有 5 种,分别是 bccfi,bwfi,bczi,mcfi,mzi。实现一个函数,用来计算一个数字有多少种不同的翻译方法。 - -## 解题思路 - -```java -public int getTranslationCount(String number) { - int n = number.length(); - int[] counts = new int[n + 1]; - counts[n - 1] = counts[n] = 1; - for (int i = n - 2; i >= 0; i--) { - counts[i] = counts[i + 1]; - int converted = Integer.valueOf(number.substring(i, i + 2)); - if (converted >= 10 && converted <= 25) { - counts[i] += counts[i + 2]; - } - } - return counts[0]; -} -``` - -# 47. 礼物的最大价值 - -## 题目描述 - -在一个 m\*n 的棋盘的每一个格都放有一个礼物,每个礼物都有一定价值(大于 0)。从左上角开始拿礼物,每次向右或向下移动一格,直到右下角结束。给定一个棋盘,求拿到礼物的最大价值。例如,对于如下棋盘 - -``` -1 10 3 8 -12 2 9 6 -5 7 4 11 -3 7 16 5 -``` - -礼物的最大价值为 1+12+5+7+7+16+5=53。 - -## 解题思路 - -应该用动态规划求解,而不是深度优先搜索,深度优先搜索过于复杂,不是最优解。 - -```java -public int getMaxValue(int[][] values) { - if (values == null || values.length == 0 || values[0].length == 0) return 0; - int m = values.length; - int n = values[0].length; - int[] dp = new int[n]; - for (int i = 0; i < m; i++) { - dp[0] += values[i][0]; - for (int j = 1; j < n; j++) { - dp[j] = Math.max(dp[j], dp[j - 1]) + values[i][j]; - } - } - return dp[n - 1]; -} -``` - -# 48. 最长不含重复字符的子字符串 - -## 题目描述 - -输入一个字符串(只包含 a\~z 的字符),求其最长不含重复字符的子字符串的长度。例如对于 arabcacfr,最长不含重复字符的子字符串为 acfr,长度为 4。 - -## 解题思路 - -```java -public int longestSubStringWithoutDuplication(String str) { - int curLen = 0; - int maxLen = 0; - int[] indexs = new int[26]; - for (int i = 0; i < str.length(); i++) { - int c = str.charAt(i) - 'a'; - int preIndex = indexs[c]; - if (preIndex == -1 || i - preIndex > curLen) curLen++; - else { - maxLen = Math.max(maxLen, curLen); - curLen = i - preIndex; - } - indexs[c] = i; - } - maxLen = Math.max(maxLen, curLen); - return maxLen; -} -``` - -# 49. 丑数 - -## 题目描述 - -把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。例如 6、8 都是丑数,但 14 不是,因为它包含因子 7。 习惯上我们把 1 当做是第一个丑数。求按从小到大的顺序的第 N 个丑数。 - -## 解题思路 - -```java -public int GetUglyNumber_Solution(int N) { - if (N <= 6) return N; - int i2 = 0, i3 = 0, i5 = 0; - int cnt = 1; - int[] dp = new int[N]; - dp[0] = 1; - while (cnt < N) { - int n2 = dp[i2] * 2, n3 = dp[i3] * 3, n5 = dp[i5] * 5; - int min = Math.min(n2, Math.min(n3, n5)); - dp[cnt++] = min; - if (min == n2) i2++; - if (min == n3) i3++; - if (min == n5) i5++; - } - return dp[N - 1]; -} -``` - -# 50. 第一个只出现一次的字符位置 - -## 题目描述 - -在一个字符串 (1<=字符串长度 <=10000,全部由字母组成) 中找到第一个只出现一次的字符,并返回它的位置。 - -## 解题思路 - -```java -public int FirstNotRepeatingChar(String str) { - int[] cnts = new int[256]; - for (int i = 0; i < str.length(); i++) cnts[str.charAt(i)]++; - for (int i = 0; i < str.length(); i++) if (cnts[str.charAt(i)] == 1) return i; - return -1; -} -``` - -# 51. 数组中的逆序对 - -## 题目描述 - -在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数 P。 - -## 解题思路 - -```java -private long cnt = 0; -private int[] tmp; // 在这里创建辅助数组,而不是在 merge() 递归函数中创建 - -public int InversePairs(int[] nums) { - tmp = new int[nums.length]; - mergeSortUp2Down(nums, 0, nums.length - 1); - return (int) (cnt % 1000000007); -} - -private void mergeSortUp2Down(int[] nums, int first, int last) { - if (last - first < 1) return; - int mid = first + (last - first) / 2; - mergeSortUp2Down(nums, first, mid); - mergeSortUp2Down(nums, mid + 1, last); - merge(nums, first, mid, last); -} - -private void merge(int[] nums, int first, int mid, int last) { - int i = first, j = mid + 1, k = first; - while (i <= mid || j <= last) { - if (i > mid) tmp[k] = nums[j++]; - else if (j > last) tmp[k] = nums[i++]; - else if (nums[i] < nums[j]) tmp[k] = nums[i++]; - else { - tmp[k] = nums[j++]; - this.cnt += mid - i + 1; // a[i] > a[j],说明 a[i...mid] 都大于 a[j] - } - k++; - } - for (k = first; k <= last; k++) { - nums[k] = tmp[k]; - } -} -``` - -# 52. 两个链表的第一个公共结点 - -## 题目描述 - -```html -A: a1 → a2 - ↘ - c1 → c2 → c3 - ↗ -B: b1 → b2 → b3 -``` - -## 解题思路 - -设 A 的长度为 a + c,B 的长度为 b + c,其中 c 为尾部公共部分长度,可知 a + c + b = b + c + a。 - -当访问 A 链表的指针访问到链表尾部时,令它从链表 B 的头部开始访问链表 B;同样地,当访问 B 链表的指针访问到链表尾部时,令它从链表 A 的头部开始访问链表 A。这样就能控制访问 A 和 B 两个链表的指针能同时访问到交点。 - -```java -public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { - ListNode l1 = pHead1, l2 = pHead2; - while (l1 != l2) { - l1 = (l1 == null) ? pHead2 : l1.next; - l2 = (l2 == null) ? pHead1 : l2.next; - } - return l1; -} -``` - -# 53 数字在排序数组中出现的次数 - -## 题目描述 - -```html -Input: -1, 2, 3, 3, 3, 3, 4, 6 -3 -Output: -4 -``` - -## 解题思路 - -可以用二分查找找出数字在数组的最左端和最右端。 - -```java -public int GetNumberOfK(int[] nums, int K) { - int first = getFirstK(nums, K); - int last = getLastK(nums, K); - return first == -1 || last == -1 ? 0 : last - first + 1; -} - -private int getFirstK(int[] nums, int K) { - int l = 0, h = nums.length - 1; - while (l <= h) { - int m = l + (h - l) / 2; - if (nums[m] >= K) h = m - 1; - else l = m + 1; - } - if (l > nums.length - 1 || nums[l] != K) return -1; - return l; -} - -private int getLastK(int[] nums, int K) { - int l = 0, h = nums.length - 1; - while (l <= h) { - int m = l + (h - l) / 2; - if (nums[m] > K) h = m - 1; - else l = m + 1; - } - if (h < 0 || nums[h] != K) return -1; - return h; -} -``` - -# 54. 二叉搜索树的第 k 个结点 - -## 解题思路 - -利用二叉搜索数中序遍历有序的特点。 - -```java -private TreeNode ret; -private int cnt = 0; - -public TreeNode KthNode(TreeNode pRoot, int k) { - inOrder(pRoot, k); - return ret; -} - -private void inOrder(TreeNode root, int k) { - if (root == null) return; - if (cnt > k) return; - inOrder(root.left, k); - cnt++; - if (cnt == k) ret = root; - inOrder(root.right, k); -} -``` - -# 55 二叉树的深度 - -```java -public int TreeDepth(TreeNode root) { - if (root == null) return 0; - return 1 + Math.max(TreeDepth(root.left), TreeDepth(root.right)); -} -``` - -# 56. 数组中只出现一次的数字 - -## 题目描述 - -一个整型数组里除了两个数字之外,其他的数字都出现了两次,找出这两个数。 - -## 解题思路 - -两个不相等的元素在位级表示上必定会有一位存在不同。 - -将数组的所有元素异或得到的结果为不存在重复的两个元素异或的结果。 - -diff &= -diff 得到出 diff 最右侧不为 0 的位,也就是不存在重复的两个元素在位级表示上最右侧不同的那一位,利用这一位就可以将两个元素区分开来。 - -```java -public void FindNumsAppearOnce(int[] array, int num1[], int num2[]) { - int diff = 0; - for (int num : array) diff ^= num; - // 得到最右一位 - diff &= -diff; - for (int num : array) { - if ((num & diff) == 0) num1[0] ^= num; - else num2[0] ^= num; - } -} -``` - -# 57.1 和为 S 的两个数字 - -## 题目描述 - -输入一个递增排序的数组和一个数字 S,在数组中查找两个数,是的他们的和正好是 S,如果有多对数字的和等于 S,输出两个数的乘积最小的。 - -## 解题思路 - -使用双指针,一个指针指向元素较小的值,一个指针指向元素较大的值。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。 - -如果两个指针指向元素的和 sum == target,那么得到要求的结果;如果 sum > target,移动较大的元素,使 sum 变小一些;如果 sum < target,移动较小的元素,使 sum 变大一些。 - -```java -public ArrayList FindNumbersWithSum(int[] array, int sum) { - int i = 0, j = array.length - 1; - while (i < j) { - int cur = array[i] + array[j]; - if (cur == sum) return new ArrayList(Arrays.asList(array[i], array[j])); - else if (cur < sum) i++; - else j--; - } - return new ArrayList(); -} -``` - -# 57.2 和为 S 的连续正数序列 - -## 题目描述 - -和为 100 的连续序列有 18, 19, 20, 21, 22。 - -## 解题思路 - -```java -public ArrayList> FindContinuousSequence(int sum) { - ArrayList> ret = new ArrayList<>(); - int start = 1, end = 2; - int mid = sum / 2; - int curSum = 3; - while (start <= mid && end < sum) { - if (curSum > sum) { - curSum -= start; - start++; - } else if (curSum < sum) { - end++; - curSum += end; - } else { - ArrayList list = new ArrayList<>(); - for (int i = start; i <= end; i++) { - list.add(i); - } - ret.add(list); - curSum -= start; - start++; - end++; - curSum += end; - } - } - return ret; -} -``` - -# 58.1 翻转单词顺序列 - -## 题目描述 - -输入:"I am a student." - -输出:"student. a am I" - -## 解题思路 - -题目应该有一个隐含条件,就是不能用额外的空间。虽然 Java 的题目输入参数为 String 类型,需要先创建一个字符数组使得空间复杂度为 O(n),但是正确的参数类型应该和原书一样,为字符数组,并且只能使用该字符数组的空间。任何使用了额外空间的解法在面试时都会大打折扣,包括递归解法。正确的解法应该是和书上一样,先旋转每个单词,再旋转整个字符串。 - -```java -public String ReverseSentence(String str) { - if (str.length() == 0) return str; - int n = str.length(); - char[] chars = str.toCharArray(); - int start = 0, end = 0; - while (end <= n) { - if (end == n || chars[end] == ' ') { - reverse(chars, start, end - 1); - start = end + 1; - } - end++; - } - reverse(chars, 0, n - 1); - return new String(chars); -} - -private void reverse(char[] c, int start, int end) { - while (start < end) { - char t = c[start]; - c[start] = c[end]; - c[end] = t; - start++; - end--; - } -} -``` - -# 58.2 左旋转字符串 - -## 题目描述 - -对于一个给定的字符序列 S,请你把其循环左移 K 位后的序列输出。例如,字符序列 S=”abcXYZdef”, 要求输出循环左移 3 位后的结果,即“XYZdefabc”。 - -## 解题思路 - -```java -public String LeftRotateString(String str, int k) { - if (str.length() == 0) return ""; - char[] c = str.toCharArray(); - reverse(c, 0, k - 1); - reverse(c, k, c.length - 1); - reverse(c, 0, c.length - 1); - return new String(c); -} - -private void reverse(char[] c, int i, int j) { - while (i < j) { - char t = c[i]; - c[i] = c[j]; - c[j] = t; - i++; - j--; - } -} -``` - -# 59. 滑动窗口的最大值 - -## 题目描述 - -给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组 {2, 3, 4, 2, 6, 2, 5, 1} 及滑动窗口的大小 3,那么一共存在 6 个滑动窗口,他们的最大值分别为 {4, 4, 6, 6, 6, 5}。 - -## 解题思路 - -```java -public ArrayList maxInWindows(int[] num, int size) { - ArrayList ret = new ArrayList<>(); - if (size > num.length || size < 1) return ret; - // 构建最大堆,即堆顶元素是堆的最大值。 - PriorityQueue heap = new PriorityQueue((o1, o2) -> o2 - o1); - for (int i = 0; i < size; i++) heap.add(num[i]); - ret.add(heap.peek()); - for (int i = 1; i + size - 1 < num.length; i++) { - heap.remove(num[i - 1]); - heap.add(num[i + size - 1]); - ret.add(heap.peek()); - } - return ret; -} -``` - -# 60. n 个骰子的点数 - -## 题目描述 - -把 n 个骰子仍在地上,求点数和为 s 的概率。 - -## 解题思路 - -### 动态规划解法 - -空间复杂度:O(n2) - -```java -private static int face = 6; - -public double countProbability(int n, int s) { - if (n < 1 || s < n) return 0.0; - int pointNum = face * n; - int[][] dp = new int[n][pointNum]; - for (int i = 0; i < face; i++) { - dp[0][i] = 1; - } - for (int i = 1; i < n; i++) { - for (int j = i; j < pointNum; j++) { // 使用 i 个骰子最小点数为 i - for (int k = 1; k <= face; k++) { - if (j - k >= 0) { - dp[i][j] += dp[i - 1][j - k]; - } - } - } - } - int totalNum = (int) Math.pow(6, n); - return (double) dp[n - 1][s - 1] / totalNum; -} -``` - -### 动态规划解法 + 旋转数组 - -空间复杂度:O(n) - -```java -private static int face = 6; - -public double countProbability(int n, int s) { - if (n < 1 || s < n) return 0.0; - int pointNum = face * n; - int[][] dp = new int[2][pointNum]; - for (int i = 0; i < face; i++) { - dp[0][i] = 1; - } - int flag = 1; - for (int i = 1; i < n; i++) { - for (int j = i; j < pointNum; j++) { // 使用 i 个骰子最小点数为 i - for (int k = 1; k <= face; k++) { - if (j - k >= 0) { - dp[flag][j] += dp[1 - flag][j - k]; - } - } - } - flag = 1 - flag; - } - int totalNum = (int) Math.pow(6, n); - return (double) dp[n - 1][s - 1] / totalNum; -} -``` - -# 61. 扑克牌顺子 - -## 题目描述 - -五张牌,其中大小鬼为癞子,牌面大小为 0。判断是否能组成顺子。 - -## 解题思路 - -```java -public boolean isContinuous(int [] numbers) { - if(numbers.length < 5) return false; - Arrays.sort(numbers); - int cnt = 0; - for(int num : numbers) if(num == 0) cnt++; - for(int i = cnt; i < numbers.length - 1; i++) { - if(numbers[i + 1] == numbers[i]) return false; - int interval = numbers[i + 1] - numbers[i] - 1; - if(interval > cnt) return false; - cnt -= interval; - } - return true; -} -``` - -# 62. 圆圈中最后剩下的数 - -## 题目描述 - -让小朋友们围成一个大圈。然后 , 他随机指定一个数 m, 让编号为 0 的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌 , 然后可以在礼品箱中任意的挑选礼物 , 并且不再回到圈中 , 从他的下一个小朋友开始 , 继续 0...m-1 报数 .... 这样下去 .... 直到剩下最后一个小朋友 , 可以不用表演。 - -## 解题思路 - -约瑟夫环 - -```java -public int LastRemaining_Solution(int n, int m) { - if (n == 0) return -1; - if (n == 1) return 0; - return (LastRemaining_Solution(n - 1, m) + m) % n; -} -``` - -# 63. 股票的最大利润 - -## 题目描述 - -可以有一次买入和一次卖出,买入必须在前。求最大收益。 - -## 解题思路 - -```java -public int maxProfit(int[] prices) { - int n = prices.length; - if(n == 0) return 0; - int soFarMin = prices[0]; - int max = 0; - for(int i = 1; i < n; i++) { - if(soFarMin > prices[i]) soFarMin = prices[i]; - else max = Math.max(max, prices[i] - soFarMin); - } - return max; -} -``` - -# 64. 求 1+2+3+...+n - -## 题目描述 - -求 1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句(A?B:C)。 - -## 解题思路 - -```java -public int Sum_Solution(int n) { - int sum = n; - boolean b = (n > 0) && ((sum += Sum_Solution(n - 1)) > 0); - return sum; -} -``` - -# 65. 不用加减乘除做加法 - -a ^ b 表示没有考虑进位的情况下两数的和,(a & b) << 1 就是进位。递归会终止的原因是 (a & b) << 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。 - -```java -public int Add(int num1, int num2) { - if(num2 == 0) return num1; - return Add(num1 ^ num2, (num1 & num2) << 1); -} -``` - -# 66. 构建乘积数组 - -## 题目描述 - -给定一个数组 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]。不能使用除法。 - -## 解题思路 - -```java -public int[] multiply(int[] A) { - int n = A.length; - int[] B = new int[n]; - for (int i = 0, product = 1; i < n; product *= A[i], i++) { - B[i] = product; - } - for (int i = n - 1, product = 1; i >= 0; product *= A[i], i--) { - B[i] *= product; - } - return B; -} -``` - -# 67. 把字符串转换成整数 - -```java -public int StrToInt(String str) { - if (str.length() == 0) return 0; - char[] chars = str.toCharArray(); - boolean isNegative = chars[0] == '-'; - int ret = 0; - for (int i = 0; i < chars.length; i++) { - if (i == 0 && (chars[i] == '+' || chars[i] == '-')) continue; - if (chars[i] < '0' || chars[i] > '9') return 0; - ret = ret * 10 + (chars[i] - '0'); - } - return isNegative ? -ret : ret; -} -``` - -# 68. 树中两个节点的最低公共祖先 - -树是二叉查找树的最低公共祖先问题: - -```java -public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { - if(root.val > p.val && root.val > q.val) return lowestCommonAncestor(root.left, p, q); - if(root.val < p.val && root.val < q.val) return lowestCommonAncestor(root.right, p, q); - return root; -} -``` diff --git a/notes/数据库系统原理.md b/notes/数据库系统原理.md deleted file mode 100644 index d7246a79..00000000 --- a/notes/数据库系统原理.md +++ /dev/null @@ -1,611 +0,0 @@ - -* [一、事务](#一事务) - * [概念](#概念) - * [四大特性](#四大特性) -* [二、并发一致性问题](#二并发一致性问题) - * [问题](#问题) - * [解决方法](#解决方法) -* [三、封锁](#三封锁) - * [封锁粒度](#封锁粒度) - * [封锁类型](#封锁类型) - * [封锁协议](#封锁协议) -* [四、隔离级别](#四隔离级别) -* [五、多版本并发控制](#五多版本并发控制) - * [版本号](#版本号) - * [Undo 日志](#undo-日志) - * [实现过程](#实现过程) - * [快照读与当前读](#快照读与当前读) -* [六、Next-Key Locks](#六next-key-locks) - * [Record Locks](#record-locks) - * [Grap Locks](#grap-locks) - * [Next-Key Locks](#next-key-locks) -* [七、关系数据库设计理论](#七关系数据库设计理论) - * [函数依赖](#函数依赖) - * [异常](#异常) - * [范式](#范式) -* [八、数据库系统概述](#八数据库系统概述) - * [基本术语](#基本术语) - * [数据库的三层模式和两层映像](#数据库的三层模式和两层映像) -* [九、关系数据库建模](#九关系数据库建模) - * [ER 图](#er-图) - * [十、约束](#十约束) -* [参考资料](#参考资料) - - - -# 一、事务 - -## 概念 - -

    - -事务指的是满足 ACID 特性的一系列操作。在数据库中,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 - -## 四大特性 - -

    - -### 1. 原子性(Atomicity) - -事务被视为不可分割的最小单元,要么全部提交成功,要么全部失败回滚。 - -### 2. 一致性(Consistency) - -事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。 - -### 3. 隔离性(Isolation) - -一个事务所做的修改在最终提交以前,对其它事务是不可见的。 - -### 4. 持久性(Durability) - -一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。可以通过数据库备份和恢复来保证持久性。 - -# 二、并发一致性问题 - -在并发环境下,一个事务如果受到另一个事务的影响,那么事务操作就无法满足一致性条件。 - -## 问题 - -### 1. 丢失修改 - -T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 - -### 2. 读脏数据 - -T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 - -

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

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

    - -## 解决方法 - -产生并发不一致性问题主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。 - -在没有并发的情况下,事务以串行的方式执行,互不干扰,因此可以保证隔离性。在并发的情况下,如果能通过并发控制,让事务的执行结果和某一个串行执行的结果相同,就认为事务的执行结果满足隔离性要求,也就是说是正确的。把这种事务执行方式称为 **可串行化调度** 。 - -**并发控制可以通过封锁来实现,但是封锁操作都要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。** - -# 三、封锁 - -## 封锁粒度 - -

    - -应该尽量只锁定需要修改的那部分数据,而不是所有的资源。锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高。 - -但是加锁需要消耗资源,锁的各种操作,包括获取锁,检查锁是否已经解除、释放锁,都会增加系统开销。因此封锁粒度越小,系统开销就越大。需要在锁开销以及数据安全性之间做一个权衡。 - -MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 - -## 封锁类型 - -### 1. 排它锁与共享锁 - -- 排它锁(Exclusive),简写为 X 锁,又称写锁。 -- 共享锁(Shared),简写为 S 锁,又称读锁。 - -有以下两个规定: - -1. 一个事务对数据对象 A 加了 X 锁,就可以对 A 进行读取和更新。加锁期间其它事务不能对 A 加任何锁。 -2. 一个事务对数据对象 A 加了 S 锁,可以对 A 进行读取操作,但是不能进行更新操作。加锁期间其它事务能对 A 加 S 锁,但是不能加 X 锁。 - -锁的兼容关系如下: - -| - | X | S | -| :--: | :--: | :--: | -|X|NO|No| -|S|No|Yes| - -### 2. 意向锁 - -意向锁(Intention Locks)可以支持多粒度封锁。它本身是一个表锁,通过在原来的 X/S 锁之上引入了 IX/IS,用来表示一个事务想要在某个数据行上加 X 锁或 S 锁。 - -有以下两个规定: - -1. 一个事务在获得某个数据行对象的 S 锁之前,必须先获得 IS 锁或者更强的锁; -2. 一个事务在获得某个数据行对象的 X 锁之前,必须先获得 IX 锁。 - -各种锁的兼容关系如下: - -| - | X | IX | S | IS | -| :--: | :--: | :--: | :--: | :--: | -|X |No |No |No | No| -|IX |No |YES|No | Yes| -|S |No |No |Yes| Yes| -|IS |No |Yes|Yes| Yes| - -## 封锁协议 - -### 1. 三级封锁协议 - -**一级封锁协议** - -事务 T 要修改数据 A 时必须加 X 锁,直到事务结束才释放锁。 - -可以解决丢失修改问题,因为不能同时有两个事务对同一个数据进行修改,那么一个事务的修改就不会被覆盖。 - -| T1 | T1 | -| :--: | :--: | -| 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)| - -**二级封锁协议** - -在一级的基础上,要求读取数据 A 时必须加 S 锁,读取完马上释放 S 锁。 - -可以解决读脏数据问题,因为如果一个事务在对数据 A 进行修改,根据 1 级封锁协议,会加 X 锁,那么就不能再加 S 锁了,也就是不会读入数据。 - -| T1 | T1 | -| :--: | :--: | -| lock-x(A) | | -| read A=20 | | -| write A=19 | | -| | lock-s(A) | -| | wait | -| rollback | | -| A=20 | | -| unlock-x(A) | | -| | obtain | -| | read A=20 | -| | commit | -| | unlock-s(A)| - -**三级封锁协议** - -在二级的基础上,要求读取数据 A 时必须加 S 锁,直到事务结束了才能释放 S 锁。 - -可以解决不可重复读的问题,因为读 A 时,其它事务不能对 A 加 X 锁,从而避免了在读的期间数据发生改变。 - -| T1 | T1 | -| :--: | :--: | -| 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. 两段锁协议 - -加锁和解锁分为两个阶段进行,事务 T 对数据 A 进行读或者写操作之前,必须先获得对 A 的封锁,并且在释放一个封锁之前,T 不能再获得任何的其它锁。 - -事务遵循两段锁协议是保证并发操作可串行化调度的充分条件。例如以下操作满足两段锁协议,它是可串行化调度。 - -```html -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)... -``` - -# 四、隔离级别 - - **1. 未提交读(READ UNCOMMITTED)**
    - -事务中的修改,即使没有提交,对其它事务也是可见的。 - - **2. 提交读(READ COMMITTED)**
    - -一个事务只能读取已经提交的事务所做的修改。换句话说,一个事务所做的修改在提交之前对其它事务是不可见的。 - - **3. 可重复读(REPEATABLE READ)**
    - -保证在同一个事务中多次读取同样数据的结果是一样的。 - - **4. 可串行化(SERIALIXABLE)**
    - -强制事务串行执行。 - - **四个隔离级别的对比**
    - -| 隔离级别 | 脏读 | 不可重复读 | 幻影读 | -| :---: | :---: | :---:| :---: | -| 未提交读 | YES | YES | YES | -| 提交读 | NO | YES | YES | -| 可重复读 | NO | NO | YES | -| 可串行化 | NO | NO | NO | - -# 五、多版本并发控制 - -(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,无需使用 MVCC;可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。 - -## 版本号 - -- 系统版本号:是一个递增的数字,每开始一个新的事务,系统版本号就会自动递增。 -- 事务版本号:事务开始时的系统版本号。 - -InooDB 的 MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版本号: - -- 创建版本号:指示创建一个数据行的快照时的系统版本号; -- 删除版本号:如果该快照的删除版本号大于当前事务版本号表示该快照有效,否则表示该快照已经被删除了。 - -## Undo 日志 - -InnoDB 的 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行(Record)的所有快照连接起来。 - -

    - -## 实现过程 - -以下过程针对可重复读隔离级别。 - -### 1. SELECT - -该操作必须保证多个事务读取到同一个数据行的快照,这个快照是最近的一个有效快照。但是也有例外,如果有一个事务正在修改该数据行,那么它可以读取事务本身所做的修改,而不用和其它事务的读取结果一致。 - -当开始新一个事务时,该事务的版本号肯定会大于所有数据行快照的创建版本号,理解这一点很关键。 - -把没对一个数据行做修改的事务称为 T1,T1 所要读取的数据行快照的创建版本号必须小于当前事务的版本号,因为如果大于或者等于当前事务的版本号,那么表示该数据行快照是其它事务的最新修改,因此不能去读取它。 - -除了上面的要求,T1 所要读取的数据行快照的删除版本号必须小于当前事务版本号,因为如果大于或者等于当前事务版本号,那么表示该数据行快照是已经被删除的,不应该去读取它。 - -### 2. INSERT - -将系统版本号作为数据行快照的创建版本号。 - -### 3. DELETE - -将系统版本号作为数据行快照的删除版本号。 - -### 4. UPDATE - -将系统版本号作为更新后的数据行快照的创建版本号,同时将系统版本号作为作为更新前的数据行快照的删除版本号。可以理解为新执行 DELETE 后执行 INSERT。 - -## 快照读与当前读 - -快照读读指的是读取快照中的数据,而当前读指的是读取最新的数据。 - -当前读: - -```sql -select * from table ....; -``` - -快照读: - -```sql -select * from table where ? lock in share mode; -select * from table where ? for update; -insert; -update ; -delete; -``` - -引入当前读的目的主要是为了免去加锁操作带来的性能开销,但是快照读需要加锁。 - -# 六、Next-Key Locks - -Next-Key Locks 也是 MySQL 的 InnoDB 存储引擎的一种实现。MVCC 不能解决幻读的问题,Next-Key Locks 就是为了解决这个问题而存在的。在可重复读隔离级别下,MVCC + Next-Key Locks,就可以防止幻读的出现。 - -## Record Locks - -锁定的对象时索引,而不是数据。如果表没有设置索引,InnoDB 会自动在主键上创建隐藏的聚集索引,因此 Record Lock 依然可以使用。 - -## Grap Locks - -锁定一个范围内的索引,例如当一个事务执行以下语句,其它事务就不能在 t.c1 中插入 15。 - -```sql -SELECT c1 FROM t WHERE c1 BETWEEN 10 and 20 FOR UPDATE; -``` - -## Next-Key Locks - -它是 Record Locks 和 Gap Locks 的结合。在 user 中有以下记录: - -```sql -| id | last_name | first_name | age | -|------|-------------|--------------|-------| -| 4 | stark | tony | 21 | -| 1 | tom | hiddleston | 30 | -| 3 | morgan | freeman | 40 | -| 5 | jeff | dean | 50 | -| 2 | donald | trump | 80 | -+------|-------------|--------------|-------+ -``` - -那么就需要锁定以下范围: - -```sql -(-∞, 21] -(21, 30] -(30, 40] -(40, 50] -(50, 80] -(80, ∞) -``` - -# 七、关系数据库设计理论 - -## 函数依赖 - -记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A。 - -如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合决定了关系的其它所有属性并且是最小的,那么该集合就称为键码。 - -对于 W->A,如果能找到 W 的真子集 W',使得 W'-> A,那么 W->A 就是部分函数依赖,否则就是完全函数依赖; - -## 异常 - -以下的学生课程关系的函数依赖为 Sno, Cname -> Sname, Sdept, Mname, Grade,键码为 {Sno, Cname}。也就是说,确定学生和课程之后,就能确定其它信息。 - -| Sno | Sname | Sdept | Mname | Cname | Grade | -| :---: | :---: | :---: | :---: | :---: |:---:| -| 1 | 学生-1 | 学院-1 | 院长-1 | 课程-1 | 90 | -| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-2 | 80 | -| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-1 | 100 | - -不符合范式的关系,会产生很多异常,主要有以下四种异常: - -1. 冗余数据,例如学生-2 出现了两次。 -2. 修改异常,修改了一个记录中的信息,但是另一个记录中相同的信息却没有被修改。 -3. 删除异常,删除一个信息,那么也会丢失其它信息。例如如果删除了课程-1,需要删除第二行和第三行,那么学生-1 的信息就会丢失。 -4. 插入异常,例如想要插入一个学生的信息,如果这个学生还没选课,那么就无法插入。 - -## 范式 - -范式理论是为了解决以上提到四种异常。高级别范式的依赖于低级别的范式。 - -

    - -### 1. 第一范式 (1NF) - -属性不可分; - -### 2. 第二范式 (2NF) - -每个非主属性完全函数依赖于键码。 - -可以通过分解来满足。 - - **分解前**
    - -| Sno | Sname | Sdept | Mname | Cname | Grade | -| :---: | :---: | :---: | :---: | :---: |:---:| -| 1 | 学生-1 | 学院-1 | 院长-1 | 课程-1 | 90 | -| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-2 | 80 | -| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-1 | 100 | - -以上学生课程关系中,{Sno, Cname} 为键码,有如下函数依赖: - -- Sno, Cname -> Sname, Sdept, Mname -- Son -> Sname, Sdept -- Sdept -> Mname -- Sno -> Manme -- Sno, Cname-> Grade - -Grade 完全函数依赖于键码,它没有任何冗余数据,每个学生的每门课都有特定的成绩。 - -Sname, Sdept 和 Manme 都函数依赖于 Sno,而部分依赖于键码。当一个学生选修了多门课时,这些数据就会出现多次,造成大量冗余数据。 - - **分解后**
    - -关系-1 - -| Sno | Sname | Sdept | Mname | -| :---: | :---: | :---: | :---: | -| 1 | 学生-1 | 学院-1 | 院长-1 | -| 2 | 学生-2 | 学院-2 | 院长-2 | - -有以下函数依赖: - -- Sno -> Sname, Sdept, Mname -- Sdept -> Mname - -关系-2 - -| Sno | Cname | Grade | -| :---: | :---: |:---:| -| 1 | 课程-1 | 90 | -| 2 | 课程-2 | 80 | -| 2 | 课程-1 | 100 | - -有以下函数依赖: - -- Sno, Cname -> Grade - -### 3. 第三范式 (3NF) - -非主属性不传递依赖于键码。 - -上面的关系-1 中存在以下传递依赖:Sno -> Sdept -> Mname,可以进行以下分解: - -关系-11 - -| Sno | Sname | Sdept | -| :---: | :---: | :---: | -| 1 | 学生-1 | 学院-1 | -| 2 | 学生-2 | 学院-2 | - -关系-12 - -| Sdept | Mname | -| :---: | :---: | -| 学院-1 | 院长-1 | -| 学院-2 | 院长-2 | - -### 4. BC 范式(BCNF) - -所有属性不传递依赖于键码。 - -关系 STC(Sname, Tname, Cname, Grade) 的四个属性分别为学生姓名、教师姓名、课程名和成绩,它的键码为 (Sname, Cname, Tname),有以下函数依赖: - -- Sname, Cname -> Tname -- Sname, Cname -> Grade -- Sname, Tname -> Cname -- Sname, Tname -> Grade -- Tname -> Cname - -存在着以下函数传递依赖: - -- Sname -> Tname -> Cname - -可以分解成 SC(Sname, Cname, Grade) 和 ST(Sname, Tname),对于 ST,属性之间是多对多关系,无函数依赖。 - -# 八、数据库系统概述 - -## 基本术语 - -### 1. 数据模型 - -由数据结构、数据操作和完整性三个要素组成。 - -### 2. 数据库系统 - -数据库系统包含所有与数据库相关的内容,包括数据库、数据库管理系统、应用程序以及数据库管理员和用户,还包括相关的硬件和软件。 - -## 数据库的三层模式和两层映像 - -- 外模式:局部逻辑结构 -- 模式:全局逻辑结构 -- 内模式:物理结构 - -

    - -### 1. 外模式 - -又称用户模式,是用户和数据库系统的接口,特定的用户只能访问数据库系统提供给他的外模式中的数据。例如不同的用户创建了不同数据库,那么一个用户只能访问他有权限访问的数据库。 - -一个数据库可以有多个外模式,一个用户只能有一个外模式,但是一个外模式可以给多个用户使用。 - -### 2. 模式 - -可以分为概念模式和逻辑模式,概念模式可以用概念-关系来描述;逻辑模式使用特定的数据模式(比如关系模型)来描述数据的逻辑结构,这种逻辑结构包括数据的组成、数据项的名称、类型、取值范围。不仅如此,逻辑模式还要描述数据之间的关系、数据的完整性与安全性要求。 - -### 3. 内模式 - -又称为存储模式,描述记录的存储方式,例如索引的组织方式、数据是否压缩以及是否加密等等。 - -### 4. 外模式/模式映像 - -把外模式的局部逻辑结构和模式的全局逻辑结构联系起来。该映像可以保证数据和应用程序的逻辑独立性。 - -### 5. 模式/内模式映像 - -把模式的全局逻辑结构和内模式的物理结构联系起来,该映像可以保证数据和应用程序的物理独立性。 - -# 九、关系数据库建模 - -## ER 图 - -Entity-Relationship,有三个组成部分:实体、属性、联系。 - -### 1. 实体的三种联系 - -联系包含一对一,一对多,多对多三种。 - -如果 A 到 B 是一对多关系,那么画个带箭头的线段指向 B;如果是一对一,画两个带箭头的线段;如果是多对多,画两个不带箭头的线段。下图的 Course 和 Student 是一对多的关系。 - -

    - -### 2. 表示出现多次的关系 - -一个实体在联系出现几次,就要用几条线连接。下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。 - -

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

    - -一般只使用二元联系,可以把多元关系转换为二元关系。 - -

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

    - -## 十、约束 - -### 1. 键码 - -用于唯一表示一个实体。 - -键码可以由多个属性构成,每个构成键码的属性称为码。 - -### 2. 单值约束 - -某个属性的值是唯一的。 - -### 3. 引用完整性约束 - -一个实体的属性引用的值在另一个实体的某个属性中存在。 - -### 4. 域约束 - -某个属性的值在特定范围之内。 - -### 5. 一般约束 - -比如大小约束,数量约束。 - -# 参考资料 - -- 史嘉权. 数据库系统概论[M]. 清华大学出版社有限公司, 2006. -- 施瓦茨. 高性能MYSQL(第3版)[M]. 电子工业出版社, 2013. -- [The InnoDB Storage Engine](https://dev.mysql.com/doc/refman/5.7/en/innodb-storage-engine.html) -- [Transaction isolation levels](https://www.slideshare.net/ErnestoHernandezRodriguez/transaction-isolation-levels) -- [Concurrency Control](http://scanftree.com/dbms/2-phase-locking-protocol) -- [The Nightmare of Locking, Blocking and Isolation Levels!](https://www.slideshare.net/brshristov/the-nightmare-of-locking-blocking-and-isolation-levels-46391666) -- [三级模式与两级映像](http://blog.csdn.net/d2457638978/article/details/48783923) -- [Database Normalization and Normal Forms with an Example](https://aksakalli.github.io/2012/03/12/database-normalization-and-normal-forms-with-an-example.html) -- [The basics of the InnoDB undo logging and history system](https://blog.jcole.us/2014/04/16/the-basics-of-the-innodb-undo-logging-and-history-system/) -- [MySQL locking for the busy web developer](https://www.brightbox.com/blog/2013/10/31/on-mysql-locks/) -- [浅入浅出 MySQL 和 InnoDB](https://draveness.me/mysql-innodb) -- [fd945daf-4a6c-4f20-b9c2-5390f5955ce5.jpg](https://tech.meituan.com/innodb-lock.html) diff --git a/notes/正则表达式.md b/notes/正则表达式.md deleted file mode 100644 index 74c20087..00000000 --- a/notes/正则表达式.md +++ /dev/null @@ -1,400 +0,0 @@ - -* [一、概述](#一概述) -* [二、匹配单个字符](#二匹配单个字符) -* [三、匹配一组字符](#三匹配一组字符) -* [四、使用元字符](#四使用元字符) -* [五、重复匹配](#五重复匹配) -* [六、位置匹配](#六位置匹配) -* [七、使用子表达式](#七使用子表达式) -* [八、回溯引用](#八回溯引用) -* [九、前后查找](#九前后查找) -* [十、嵌入条件](#十嵌入条件) - - - -# 一、概述 - -正则表达式用于文本内容的查找和替换。 - -正则表达式内置于其它语言或者软件产品中,它本身不是一种语言或者软件。 - -一个问题往往可以用多种正则表达式方案来解决。 - -[正则表达式在线工具](http://tool.chinaz.com/regex) - -# 二、匹配单个字符 - -正则表达式一般是区分大小写的,但是也有些实现是不区分。 - -**.** 可以用来匹配任何的单个字符,但是在绝大多数实现里面,不能匹配换行符; - -**\\** 是元字符,表示它有特殊的含义,而不是字符本身的含义。如果需要匹配 . ,那么要用 \ 进行转义,即在 . 前面加上 \ 。 - -**正则表达式** - -``` -nam. -``` - -**匹配结果** - -My **name** is Zheng. - -# 三、匹配一组字符 - -**[ ]** 定义一个字符集合; - -0-9、a-z 定义了一个字符区间,区间使用 ASCII 码来确定。字符区间只能用在 [ ] 之间,因此 **-** 元字符只有在 [ ] 之间才是元字符,在 [ ] 之外就是一个普通字符; - -**^** 是取非操作,必须在 [ ] 字符集合中使用; - -**应用** - -匹配以 abc 为开头,并且最后一个字母不为数字的字符串: - -**正则表达式** - -``` -abc[^0-9] -``` - -**匹配结果** - -1. **abcd** -2. abc1 -3. abc2 - -# 四、使用元字符 - -## 匹配空白字符 - -| 元字符 | 说明 | -| ------------ | ------------ | -| [\b] | 回退(删除)一个字符 | -| \f | 换页符 | -| \n | 换行符 | -| \r | 回车符 | -| \t | 制表符 | -| \v | 垂直制表符 | - -\r\n 是 Windows 中的文本行结束标签,在 Unix/Linux 则是 \n ;\r\n\r\n 可以匹配 Windows 下的空白行,因为它将匹配两个连续的行尾标签,而这正是两条记录之间的空白行; - -. 是元字符,前提是没有对它们进行转义; f 和 n 也是元字符,但是前提是对他们进行了转义。 - -## 匹配特定的字符类别 - -### 1. 数字元字符 - -| 元字符 | 说明 | -| ------------ | ------------ | -| \d | 数字字符,等价于 [0-9] | -| \D | 非数字字符,等价于 [^0-9] | - -### 2. 字母数字元字符 - -| 元字符 | 说明 | -| ------------ | ------------ | -| \w | 大小写字母,下划线和数字,等价于 [a-zA-Z0-9\_] | -| \W | 对 \w 取非 | - -### 3. 空白字符元字符 - -| 元字符 | 说明 | -| ------------ | ------------ | -| \s | 任何一个空白字符,等价于 [\f\n\r\t\v] | -| \S | 对 \s 取非 | - -\x 匹配十六进制字符,\0 匹配八进制,例如 \x0A 对应 ASCII 字符 10 ,等价于 \n,也就是它会匹配 \n 。 - -## 使用 POSIX 字符类 - -| 字符类 | 说明 | -| --- | --- | -| [:alnum:] | 字母数字字符 | -| [:alpha:] | 字母字符 | -| [:cntrl:] | 控制字符 | -| [:digit:] | 数字字符 | -| [:graph:] | 非空白字符 ( 非空格、控制字符等 ) | -| [:lower:] | 小写字母 | -| [:print:] | 与 [:graph:] 相似,但是包含空格字符 | -| [:punct:] | 标点字符 | -| [:space:] | 所有的空白字符 ( 换行符、空格、制表符 ) | -| [:upper:] | 大写字母 | -| [:xdigit:] | 允许十六进制的数字 (0-9a-fA-F) | - -并不是所有正则表达式实现都支持 POSIX 字符类,也不一定使用它。 - -使用时需要用两对方括号,例如 [[:alpha:]]。 - -# 五、重复匹配 - -**\+** 匹配 1 个或者多个字符, **\*** 匹配 0 个或者多个,**?** 匹配 0 个或者 1 个。 - -**应用** - -匹配邮箱地址。 - -**正则表达式** - -``` -[\w.]+@\w+.\w+ -``` - -[\w.] 匹配的是字母数字或者 . ,在其后面加上 + ,表示匹配多次。在字符集合 [ ] 里,. 不是元字符; - -**匹配结果** - -**abc.def@qq.com** - -为了可读性,常常把转义的字符放到字符集合 [ ] 中,但是含义是相同的。 - -``` -\w+@\w+.\w+ -[\w]+@[\w]+.[\w]+ -``` - -**{n}** 匹配 n 个字符,**{m, n}** 匹配 m\~n 个字符,**{m,}** 至少匹配 m 个字符; - -\* 和 + 都是贪婪型元字符,会匹配最多的内容,在元字符后面加 ? 可以转换为懒惰型元字符,例如 \*?、+? 和 {m, n}? 。 - -**正则表达式** - -``` -a.+c -``` - -由于 + 是贪婪型的,因此 .+ 会匹配更可能多的内容,所以会把整个 abcabcabc 文本都匹配,而不是只匹配前面的 abc 文本。用懒惰型可以实现匹配前面的。 - -**匹配结果** - -**abcabcabc** - -# 六、位置匹配 - -## 单词边界 - -**\b** 可以匹配一个单词的边界,边界是指位于 \w 和 \W 之间的位置;**\B** 匹配一个不是单词边界的位置。 - -\b 只匹配位置,不匹配字符,因此 \babc\b 匹配出来的结果为 3 个字符。 - -## 字符串边界 - -**^** 匹配整个字符串的开头,**$** 匹配结尾。 - -^ 元字符在字符集合中用作求非,在字符集合外用作匹配字符串的开头。 - -使用 (?m) 来打开分行匹配模式,在该模式下,换行被当做字符串的边界。 - -**应用** - -匹配代码中以 // 开始的注释行 - -**正则表达式** - -``` -(?m)^\s*//.*$ -``` - -如果没用 (?m),则只会匹配 // 注释 1 以及之后的所有内容,因为 * 是贪婪型的。用了分行匹配模式之后,换行符被当成是字符串分隔符,因此能正确匹配出两个注释内容。 - -**匹配结果** - -1. public void fun() { -2.      **// 注释 1** -3.      int a = 1; -4.      int b = 2; -5.      **// 注释 2** -6.      int c = a + b; -7. } - -# 七、使用子表达式 - -使用 **( )** 定义一个子表达式。子表达式的内容可以当成一个独立元素,即可以将它看成一个字符,并且使用 * 等元字符。 - -子表达式可以嵌套,但是嵌套层次过深会变得很难理解。 - -**正则表达式** - -``` -(ab) {2,} -``` - -**匹配结果** - -**ababab** - -**|** 是或元字符,它把左边和右边所有的部分都看成单独的两个部分,两个部分只要有一个匹配就行。 - -``` -(19|20)\d{2} -``` - -**匹配结果** - -1. **1900** -2. **2010** -3. 1020 - -**应用** - -匹配 IP 地址。IP 地址中每部分都是 0-255 的数字,用正则表达式匹配时以下情况是合法的: - -1. 一位或者两位的数字 -2. 1 开头的三位数 -3. 2 开头,第 2 位是 0-4 的三位数 -4. 25 开头,第 3 位是 0-5 的三位数 - -**正则表达式** - -``` -(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.) {3}(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))) -``` - -**匹配结果** - -1. **192.168.0.1** -2. 555.555.555.555 - -# 八、回溯引用 - -回溯引用使用 **\n** 来引用某个子表达式,其中 n 代表的是子表达式的序号,从 1 开始。它和子表达式匹配的内容一致,比如子表达式匹配到 abc ,那么回溯引用部分也需要匹配 abc 。 - -**应用** - -匹配 HTML 中合法的标题元素。 - -**正则表达式** - -\1 将回溯引用子表达式 (h[1-6]) 匹配的内容,也就是说必须和子表达式匹配的内容一致。 - -``` -<(h[1-6])>\w*? -``` - -**匹配结果** - -1. **<h1>x</h1>** -2. **<h2>x</h2>** -3. <h3>x</h1> - -## 替换 - -需要用到两个正则表达式。 - -**应用** - -修改电话号码格式。 - -**文本** - -313-555-1234 - -**查找正则表达式** - -``` -(\d{3})(-)(\d{3})(-)(\d{4}) -``` - -**替换正则表达式** - -在第一个子表达式查找的结果加上 () ,然后加一个空格,在第三个和第五个字表达式查找的结果中间加上 - 进行分隔。 - -``` -($1) $3-$5 -``` - -**结果** - -(313) 555-1234 - -## 大小写转换 - -| 元字符 | 说明 | -| ---| ---| -| \l | 把下个字符转换为小写 | -| \u| 把下个字符转换为大写 | -| \L | 把\L 和\E 之间的字符全部转换为小写 | -| \U | 把\U 和\E 之间的字符全部转换为大写 | -| \E | 结束\L 或者\U | - -**应用** - -把文本的第二个和第三个字符转换为大写。 - -**文本** - -abcd - -**查找** - -``` -(\w)(\w{2})(\w) -``` - -**替换** - -``` -$1\U$2\E$3 -``` - -**结果** - -aBCd - -# 九、前后查找 - -前后查找规定了匹配的内容首尾应该匹配的内容,但是又不包含首尾匹配的内容。向前查找用 **?=** 来定义,它规定了尾部匹配的内容,这个匹配的内容在 ?= 之后定义。所谓向前查找,就是规定了一个匹配的内容,然后以这个内容为尾部向前面查找需要匹配的内容。向后匹配用 ?<= 定义。 - -**应用** - -查找出邮件地址 @ 字符前面的部分。 - -**正则表达式** - -``` -\w+(?=@) -``` - -**结果** - -**abc** @qq.com - -对向前和向后查找取非,只要把 = 替换成 ! 即可,比如 (?=) 替换成 (?!) 。取非操作使得匹配那些首尾不符合要求的内容。 - -# 十、嵌入条件 - -## 回溯引用条件 - -条件判断为某个子表达式是否匹配,如果匹配则需要继续匹配条件表达式后面的内容。 - -**正则表达式** - -子表达式 (\\() 匹配一个左括号,其后的 ? 表示匹配 0 个或者 1 个。 ?(1) 为条件,当子表达式 1 匹配时条件成立,需要执行 \) 匹配,也就是匹配右括号。 - -``` -(\()?abc(?(1)\)) -``` - -**结果** - -1. **(abc)** -2. **abc** -3. (abc - -## 前后查找条件 - -条件为定义的首尾是否匹配,如果匹配,则继续执行后面的匹配。注意,首尾不包含在匹配的内容中。 - -**正则表达式** - - ?(?=-) 为前向查找条件,只有在以 - 为前向查找的结尾能匹配 \d{5} ,才继续匹配 -\d{4} 。 - -``` -\d{5}(?(?=-)-\d{4}) -``` - -**结果** - -1. **11111** -2. 22222- -3. **33333-4444** diff --git a/notes/算法.md b/notes/算法.md deleted file mode 100644 index 9377a9ab..00000000 --- a/notes/算法.md +++ /dev/null @@ -1,1621 +0,0 @@ - -* [一、算法分析](#一算法分析) - * [函数转换](#函数转换) - * [数学模型](#数学模型) - * [ThreeSum](#threesum) - * [倍率实验](#倍率实验) - * [注意事项](#注意事项) -* [二、栈和队列](#二栈和队列) - * [栈](#栈) - * [队列](#队列) -* [三、union-find](#三union-find) - * [quick-find](#quick-find) - * [quick-union](#quick-union) - * [加权 quick-union](#加权-quick-union) - * [路径压缩的加权 quick-union](#路径压缩的加权-quick-union) - * [各种 union-find 算法的比较](#各种-union-find-算法的比较) -* [四、排序](#四排序) - * [选择排序](#选择排序) - * [插入排序](#插入排序) - * [希尔排序](#希尔排序) - * [归并排序](#归并排序) - * [快速排序](#快速排序) - * [优先队列](#优先队列) - * [应用](#应用) -* [五、查找](#五查找) - * [符号表](#符号表) - * [二叉查找树](#二叉查找树) - * [2-3 查找树](#2-3-查找树) - * [红黑二叉查找树](#红黑二叉查找树) - * [散列表](#散列表) - * [应用](#应用) - - - -# 一、算法分析 - -## 函数转换 - -指数函数可以转换为线性函数,从而在函数图像上显示的更直观。例如 - -

    - -可以在其两端同时取对数,得到: - -

    - -

    - -## 数学模型 - -### 1. 近似 - -使用 \~f(N) 来表示所有随着 N 的增大除以 f(N) 的结果趋近于 1 的函数,例如 N3/6-N2/2+N/3 \~ N3/6。 - -

    - -### 2. 增长数量级 - -增长数量级将算法与它的实现隔离开来,一个算法的增长数量级为 N3 与它是否用 Java 实现,是否运行于特定计算机上无关。 - -

    - -### 3. 内循环 - -执行最频繁的指令决定了程序执行的总时间,把这些指令称为程序的内循环。 - -### 4. 成本模型 - -使用成本模型来评估算法,例如数组的访问次数就是一种成本模型。 - -## ThreeSum - -ThreeSum 用于统计一个数组中三元组的和为 0 的数量。 - -```java -public class ThreeSum { - public static int count(int[] a) { - int N = a.length; - int cnt = 0; - for (int i = 0; i < N; i++) { - for (int j = i + 1; j < N; j++) { - for (int k = j + 1; k < N; k++) { - if (a[i] + a[j] + a[k] == 0) { - cnt++; - } - } - } - } - return cnt; - } -} -``` - -该算法的内循环为`if (a[i] + a[j] + a[k] == 0)`语句,总共执行的次数为 N(N-1)(N-2) = N3/6 - N2/2 + N/3,因此它的近似执行次数为 \~N3/6,增长数量级为 N3。 - - **改进**
    - -通过将数组先排序,对两个元素求和,并用二分查找方法查找是否存在该和的相反数,如果存在,就说明存在三元组的和为 0。 - -该方法可以将 ThreeSum 算法增长数量级降低为 N2logN。 - -```java -public class ThreeSumFast { - public static int count(int[] a) { - Arrays.sort(a); - int N = a.length; - int cnt = 0; - for (int i = 0; i < N; i++) { - for (int j = i + 1; j < N; j++) { - // rank() 方法返回元素在数组中的下标,如果元素不存在,这里会返回 -1。 - // 应该注意这里的下标必须大于 j,否则会重复统计。 - if (BinarySearch.rank(-a[i] - a[j], a) > j) { - cnt++; - } - } - } - return cnt; - } -} -``` - -## 倍率实验 - -如果 T(N) \~ aNblogN,那么 T(2N)/T(N) \~ 2b。 - -例如对于暴力方法的 ThreeSum 算法,近似时间为 \~N3/6。进行如下实验:多次运行该算法,每次取的 N 值为前一次的两倍,统计每次执行的时间,并统计本次运行时间与前一次运行时间的比值,得到如下结果: - -

    - -可以看到,T(2N)/T(N) \~ 23,因此可以确定 T(N) \~ aN2logN。 - -## 注意事项 - -### 1. 大常数 - -在求近似时,如果低级项的常数系数很大,那么近似的结果就是错误的。 - -### 2. 缓存 - -计算机系统会使用缓存技术来组织内存,访问数组相邻的元素会比访问不相邻的元素快很多。 - -### 3. 对最坏情况下的性能的保证 - -在核反应堆、心脏起搏器或者刹车控制器中的软件,最坏情况下的性能是十分重要的。 - -### 4. 随机化算法 - -通过打乱输入,去除算法对输入的依赖。 - -### 5. 均摊分析 - -将所有操作的总成本除于操作总数来将成本均摊。例如对一个空栈进行 N 次连续的 push() 调用需要访问数组的元素为 N+4+8+16+...+2N=5N-4(N 是向数组写入元素,其余的都是调整数组大小时进行复制需要的访问数组操作),均摊后每次操作访问数组的平均次数为常数。 - -# 二、栈和队列 - -## 栈 - -first-in-last-out(FILO) - -

    - - **1. 数组实现**
    - -```java -public class ResizeArrayStack implements Iterable { - private Item[] a = (Item[]) new Object[1]; - private int N = 0; - - public void push(Item item) { - if (N >= a.length) { - resize(2 * a.length); - } - a[N++] = item; - } - - public Item pop() { - Item item = a[--N]; - if (N <= a.length / 4) { - resize(a.length / 2); - } - return item; - } - - // 调整数组大小,使得栈具有伸缩性 - private void resize(int size) { - Item[] tmp = (Item[]) new Object[size]; - for (int i = 0; i < N; i++) { - tmp[i] = a[i]; - } - a = tmp; - } - - public boolean isEmpty() { - return N == 0; - } - - public int size() { - return N; - } - - @Override - public Iterator iterator() { - // 需要返回逆序遍历的迭代器 - return new ReverseArrayIterator(); - } - - private class ReverseArrayIterator implements Iterator { - private int i = N; - - @Override - public boolean hasNext() { - return i > 0; - } - - @Override - public Item next() { - return a[--i]; - } - } -} -``` - -上面实现使用了泛型,Java 不能直接创建泛型数组,只能使用转型来创建。 - -```java -Item[] arr = (Item[]) new Object[N]; -``` - - **2. 链表实现**
    - -需要使用链表的头插法来实现,因为头插法中最后压入栈的元素在链表的开头,它的 next 指针指向前一个压入栈的元素,在弹出元素使就可以通过 next 指针遍历到前一个压入栈的元素从而让这个元素称为新的栈顶元素。 - -```java -public class Stack { - - private Node top = null; - private int N = 0; - - private class Node { - Item item; - Node next; - } - - public boolean isEmpty() { - return N == 0; - } - - public int size() { - return N; - } - - public void push(Item item) { - Node newTop = new Node(); - newTop.item = item; - newTop.next = top; - top = newTop; - N++; - } - - public Item pop() { - Item item = top.item; - top = top.next; - N--; - return item; - } -} -``` -## 队列 - -first-in-first-out(FIFO) - -

    - -下面是队列的链表实现,需要维护 first 和 last 节点指针,分别指向队首和队尾。 - -这里需要考虑 first 和 last 指针哪个作为链表的开头。因为出队列操作需要让队首元素的下一个元素成为队首,所以需要容易获取下一个元素,而链表的头部节点的 next 指针指向下一个元素,因此可以让 first 指针链表的开头。 - -```java -public class Queue { - private Node first; - private Node last; - int N = 0; - private class Node{ - Item item; - Node next; - } - - public boolean isEmpty(){ - return N == 0; - } - - public int size(){ - return N; - } - - // 入队列 - public void enqueue(Item item){ - Node newNode = new Node(); - newNode.item = item; - newNode.next = null; - if(isEmpty()){ - last = newNode; - first = newNode; - } else{ - last.next = newNode; - last = newNode; - } - N++; - } - - // 出队列 - public Item dequeue(){ - Node node = first; - first = first.next; - N--; - return node.item; - } -} -``` - -# 三、union-find - - **概览**
    - -用于解决动态连通性问题,能动态连接两个点,并且判断两个点是否连通。 - -

    - - **API**
    - -

    - - **基本数据结构**
    - -```java -public class UF { - // 使用 id 数组来保存点的连通信息 - private int[] id; - - public UF(int N) { - id = new int[N]; - for (int i = 0; i < N; i++) { - id[i] = i; - } - } - - public boolean connected(int p, int q) { - return find(p) == find(q); - } -} -``` - -## quick-find - -保证在同一连通分量的所有节点的 id 值相等。 - -这种方法可以快速取得一个节点的 id 值,并且判断两个节点是否连通。但是 union 的操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 - -```java - public int find(int p) { - return id[p]; - } - public void union(int p, int q) { - int pID = find(p); - int qID = find(q); - - if (pID == qID) return; - for (int i = 0; i < id.length; i++) { - if (id[i] == pID) id[i] = qID; - } - } -``` - -## quick-union - -在 union 时只将节点的 id 值指向另一个节点 id 值,不直接用 id 来存储所属的连通分量。这样就构成一个倒置的树形结构,应该注意的是根节点需要指向自己。查找一个节点所属的连通分量时,要一直向上查找直到根节点,并使用根节点的 id 值作为本连通分量的 id 值。 - -

    - -```java - public int find(int p) { - while (p != id[p]) p = id[p]; - return p; - } - - public void union(int p, int q) { - int pRoot = find(p); - int qRoot = find(q); - if (pRoot == qRoot) return; - id[pRoot] = qRoot; - } -``` - -这种方法可以快速进行 union 操作,但是 find 操作和树高成正比,最坏的情况下树的高度为触点的数目。 - -

    - -## 加权 quick-union - -为了解决 quick-union 的树通常会很高的问题,加权 quick-union 在 union 操作时会让较小的树连接较大的树上面。 - -理论研究证明,加权 quick-union 算法构造的树深度最多不超过 logN。 - -

    - -```java -public class WeightedQuickUnionUF { - private int[] id; - // 保存节点的数量信息 - private int[] sz; - - public WeightedQuickUnionUF(int N) { - id = new int[N]; - sz = new int[N]; - for (int i = 0; i < N; i++) { - id[i] = i; - sz[i] = 1; - } - } - - public boolean connected(int p, int q) { - return find(p) == find(q); - } - - public int find(int p) { - while (p != id[p]) p = id[p]; - return p; - } - - public void union(int p, int q) { - int i = find(p); - int j = find(q); - if (i == j) return; - if (sz[i] < sz[j]) { - id[i] = j; - sz[j] += sz[i]; - } else { - id[j] = i; - sz[i] += sz[j]; - } - } -} -``` - -## 路径压缩的加权 quick-union - -在检查节点的同时将它们直接链接到根节点,只需要在 find 中添加一个循环即可。 - -## 各种 union-find 算法的比较 - -

    - -# 四、排序 - - **约定**
    - -待排序的元素需要实现 Java 的 Comparable 接口,该接口有 compareTo() 方法,可以用它来判断两个元素的大小关系。 - -研究排序算法的成本模型时,计算的是比较和交换的次数。 - -使用辅助函数 less() 和 exch() 来进行比较和交换的操作,使得代码的可读性和可移植性更好。 - -```java -private boolean less(Comparable v, Comparable w){ - return v.compareTo(w) < 0; -} - -private void exch(Comparable[] a, int i, int j){ - Comparable t = a[i]; - a[i] = a[j]; - a[j] = t; -} -``` - -## 选择排序 - -找到数组中的最小元素,将它与数组的第一个元素交换位置。再从剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。不断进行这样的操作,直到将整个数组排序。 - -

    - -```java -public class Selection { - public static void sort(Comparable[] a) { - int N = a.length; - for (int i = 0; i < N; i++) { - int min = i; - for (int j = i + 1; j < N; j++) { - if (less(a[j], a[min])) min = j; - } - exch(a, i, min); - } - } -} -``` - -选择排序需要 \~N2/2 次比较和 \~N 次交换,它的运行时间与输入无关,这个特点使得它对一个已经排序的数组也需要这么多的比较和交换操作。 - -## 插入排序 - -插入排序从左到右进行,每次都将当前元素插入到左部已经排序的数组中,使得插入之后左部数组依然有序。 - -

    - -```java -public class Insertion { - public static void sort(Comparable[] a) { - int N = a.length; - for (int i = 1; i < N; i++) { - for (int j = i; j > 0 && less(a[j], a[j - 1]); j--) { - exch(a, j, j - 1); - } - } - } -} -``` - -插入排序的复杂度取决于数组的初始顺序,如果数组已经部分有序了,那么插入排序会很快。平均情况下插入排序需要 \~N2/4 比较以及 \~N2/4 次交换,最坏的情况下需要 \~N2/2 比较以及 \~N2/2 次交换,最坏的情况是数组是逆序的;而最好的情况下需要 N-1 次比较和 0 次交换,最好的情况就是数组已经有序了。 - -插入排序对于部分有序数组和小规模数组特别高效。 - - **选择排序和插入排序的比较**
    - -对于随机排列的无重复主键的数组,插入排序和选择排序的运行时间是平方级别的,两者之比是一个较小的常数。 - -## 希尔排序 - -对于大规模的数组,插入排序很慢,因为它只能交换相邻的元素,如果要把元素从一端移到另一端,就需要很多次操作。 - -希尔排序的出现就是为了改进插入排序的这种局限性,它通过交换不相邻的元素,使得元素更快的移到正确的位置上。 - -希尔排序使用插入排序对间隔 h 的序列进行排序,如果 h 很大,那么元素就能很快的移到很远的地方。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。 - -

    - -

    - -```java -public class Shell { - public static void sort(Comparable[] a) { - int N = a.length; - int h = 1; - while (h < N / 3) { - h = 3 * h + 1; // 1, 4, 13, 40, ... - } - while (h >= 1) { - for (int i = h; i < N; i++) { - for (int j = i; j >= h && less(a[j], a[j - h]); j -= h) { - exch(a, j, j - h); - } - } - h = h / 3; - } - } -} -``` - -希尔排序的运行时间达不到平方级别,使用递增序列 1, 4, 13, 40, ... 的希尔排序所需要的比较次数不会超过 N 的若干倍乘于递增序列的长度。后面介绍的高级排序算法只会比希尔排序快两倍左右。 - -## 归并排序 - -归并排序的思想是将数组分成两部分,分别进行排序,然后归并起来。 - -

    - -

    - -### 1. 归并方法 - -归并方法将数组中两个已经排序的部分归并成一个。 - -```java -public class MergeSort { - private static Comparable[] aux; - - private static void merge(Comparable[] a, int lo, int mid, int hi) { - int i = lo, j = mid + 1; - - for (int k = lo; k <= hi; k++) { - aux[k] = a[k]; // 将数据复制到辅助数组 - } - - for (int k = lo; k <= hi; k++) { - if (i > mid) a[k] = aux[j++]; - else if (j > hi) a[k] = aux[i++]; - else if (aux[i].compareTo(a[j]) < 0) a[k] = aux[i++]; // 先进行这一步,保证稳定性 - else a[k] = aux[j++]; - } - } -} -``` - -### 2. 自顶向下归并排序 - -

    - -```java -public static void sort(Comparable[] a) { - aux = new Comparable[a.length]; - sort(a, 0, a.length - 1); -} - -private static void sort(Comparable[] a, int lo, int hi) { - if (hi <= lo) return; - int mid = lo + (hi - lo) / 2; - sort(a, lo, mid); - sort(a, mid + 1, hi); - merge(a, lo, mid, hi); -} -``` - -因为每次都将问题对半分成两个子问题,而这种对半分的算法复杂度一般为 O(NlogN),因此该归并排序方法的时间复杂度也为 O(NlogN)。 - -因为小数组的递归操作会过于频繁,因此可以在数组过小时切换到插入排序来提高性能。 - -### 3. 自底向上归并排序 - -先归并那些微型数组,然后成对归并得到的子数组。 - -

    - -```java -public static void busort(Comparable[] a) { - int N = a.length; - aux = new Comparable[N]; - for (int sz = 1; sz < N; sz += sz) { - for (int lo = 0; lo < N - sz; lo += sz + sz) { - merge(a, lo, lo + sz - 1, Math.min(lo + sz + sz - 1, N - 1)); - } - } -} -``` - -## 快速排序 - -### 1. 基本算法 - -归并排序将数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序;快速排序通过一个切分元素将数组分为两个子数组,左子数组小于等于切分元素,右子数组大于等于切分元素,将这两个子数组排序也就将整个数组排序了。 - -

    - -```java -public class QuickSort { - public static void sort(Comparable[] a) { - shuffle(a); - sort(a, 0, a.length - 1); - } - - private static void sort(Comparable[] a, int lo, int hi) { - if (hi <= lo) return; - int j = partition(a, lo, hi); - sort(a, lo, j - 1); - sort(a, j + 1, hi); - } -} -``` - -### 2. 切分 - -取 a[lo] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于等于它的元素,交换这两个元素,并不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[lo] 和左子数组最右侧的元素 a[j] 交换然后返回 j 即可。 - -

    - -```java -private static int partition(Comparable[] a, int lo, int hi) { - int i = lo, j = hi + 1; - Comparable v = a[lo]; - while (true) { - while (less(a[++i], v)) if (i == hi) break; - while (less(v, a[--j])) if (j == lo) break; - if (i >= j) break; - exch(a, i, j); - } - exch(a, lo, j); - return j; -} -``` - -### 3. 性能分析 - -快速排序是原地排序,不需要辅助数组,但是递归调用需要辅助栈。 - -快速排序最好的情况下是每次都正好能将数组对半分,这样递归调用次数才是最少的。这种情况下比较次数为 CN=2CN/2+N,复杂度为 O(NlogN)。 - -最坏的情况下,第一次从最小的元素切分,第二次从第二小的元素切分,如此这般。因此最坏的情况下需要比较 N2/2。为了防止数组最开始就是有序的,在进行快速排序时需要随机打乱数组。 - -### 4. 算法改进 - -**(一)切换到插入排序** - -因为快速排序在小数组中也会调用自己,对于小数组,插入排序比快速排序的性能更好,因此在小数组中可以切换到插入排序。 - -**(二)三取样** - -最好的情况下是每次都能取数组的中位数作为切分元素,但是计算中位数的代价很高。人们发现取 3 个元素并将大小居中的元素作为切分元素的效果最好。 - -**(三)三向切分** - -对于有大量重复元素的数组,可以将数组切分为三部分,分别对应小于、等于和大于切分元素。 - -三向切分快速排序对于只有若干不同主键的随机数组可以在线性时间内完成排序。 - -

    - -```java -public class Quick3Way { - public static void sort(Comparable[] a, int lo, int hi) { - if (hi <= lo) return; - int lt = lo, i = lo + 1, gt = hi; - Comparable v = a[lo]; - while (i <= gt) { - int cmp = a[i].compareTo(v); - if (cmp < 0) exch(a, lt++, i++); - else if (cmp > 0) exch(a, i, gt--); - else i++; - } - sort(a, lo, lt - 1); - sort(a, gt + 1, hi); - } -} -``` - -## 优先队列 - -优先队列主要用于处理最大元素。 - -### 1. 堆 - -定义:一颗二叉树的每个节点都大于等于它的两个子节点。 - -堆可以用数组来表示,因为堆是一种完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里我们不使用数组索引为 0 的位置,是为了更清晰地理解节点的关系。 - -

    - -```java -public class MaxPQ { - private Key[] pq; - private int N = 0; - - public MaxPQ(int maxN) { - pq = (Key[]) new Comparable[maxN + 1]; - } - - public boolean isEmpty() { - return N == 0; - } - - public int size() { - return N; - } - - private boolean less(int i, int j) { - return pq[i].compareTo(pq[j]) < 0; - } - - private void exch(int i, int j) { - Key t = pq[i]; - pq[i] = pq[j]; - pq[j] = t; - } -} -``` - -### 2. 上浮和下沉 - -在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作。把这种操作称为上浮。 - -

    - -```java -private void swim(int k) { - while (k > 1 && less(k / 2, k)) { - exch(k / 2, k); - k = k / 2; - } -} -``` - -类似地,当一个节点比子节点来得小,也需要不断的向下比较和交换操作,把这种操作称为下沉。一个节点有两个子节点,应当与两个子节点中最大那么节点进行交换。 - -

    - -```java -private void sink(int k) { - while (2 * k <= N) { - int j = 2 * k; - if (j < N && less(j, j + 1)) j++; - if (!less(k, j)) break; - exch(k, j); - k = j; - } -} -``` - -### 3. 插入元素 - -将新元素放到数组末尾,然后上浮到合适的位置。 - -```java -public void insert(Key v) { - pq[++N] = v; - swim(N); -} -``` - -### 4. 删除最大元素 - -从数组顶端删除最大的元素,并将数组的最后一个元素放到顶端,并让这个元素下沉到合适的位置。 - -```java -public Key delMax() { - Key max = pq[1]; - exch(1, N--); - pq[N + 1] = null; - sink(1); - return max; -} -``` - -### 5. 堆排序 - -由于堆可以很容易得到最大的元素并删除它,不断地进行这种操作可以得到一个递减序列。如果把最大元素和当前堆中数组的最后一个元素交换位置,并且不删除它,那么就可以得到一个从尾到头的递减序列,从正向来看就是一个递增序列。因此很容易使用堆来进行排序,并且堆排序是原地排序,不占用额外空间。 - -堆排序要分两个阶段,第一个阶段是把无序数组建立一个堆;第二个阶段是交换最大元素和当前堆的数组最后一个元素,并且进行下沉操作维持堆的有序状态。 - -无序数组建立堆最直接的方法是从左到右遍历数组,然后进行上浮操作。一个更高效的方法是从右至左进行下沉操作,如果一个节点的两个节点都已经是堆有序,那么进行下沉操作可以使得这个节点为根节点的堆有序。叶子节点不需要进行下沉操作,因此可以忽略叶子节点的元素,因此只需要遍历一半的元素即可。 - -

    - -```java -public static void sort(Comparable[] a){ - int N = a.length; - for(int k = N/2; k >= 1; k--){ - sink(a, k, N); - } - while(N > 1){ - exch(a, 1, N--); - sink(a, 1, N); - } -} -``` - -### 6. 分析 - -一个堆的高度为 logN,因此在堆中插入元素和删除最大元素的复杂度都为 logN。 - -对于堆排序,由于要对 N 个节点进行下沉操作,因此复杂度为 NlogN。 - -堆排序时一种原地排序,没有利用额外的空间。 - -现代操作系统很少使用堆排序,因为它无法利用缓存,也就是数组元素很少和相邻的元素进行比较。 - -## 应用 - -### 1. 排序算法的比较 - -

    - -快速排序时最快的通用排序算法,它的内循环的指令很少,而且它还能利用缓存,因为它总是顺序地访问数据。它的运行时间近似为 \~cNlogN,这里的 c 比其他线性对数级别的排序算法都要小。使用三向切分之后,实际应用中可能出现的某些分布的输入能够达到线性级别,而其它排序算法仍然需要线性对数时间。 - -### 2. Java 的排序算法实现 - -Java 系统库中的主要排序方法为 java.util.Arrays.sort(),对于原始数据类型使用三向切分的快速排序,对于引用类型使用归并排序。 - -### 3. 基于切分的快速选择算法 - -快速排序的 partition() 方法,会返回一个整数 j 使得 a[lo..j-1] 小于等于 a[j],且 a[j+1..hi] 大于等于 a[j],此时 a[j] 就是数组的第 j 大元素。 - -可以利用这个特性找出数组的第 k 个元素。 - -```java -public static Comparable select(Comparable[] a, int k) { - int lo = 0, hi = a.length - 1; - while (hi > lo) { - int j = partion(a, lo, hi); - if (j == k) return a[k]; - else if (j > k) hi = j - 1; - else lo = j + 1; - } - return a[k]; -} -``` - -该算法是线性级别的,因为每次正好将数组二分,那么比较的总次数为 (N+N/2+N/4+..),直到找到第 k 个元素,这个和显然小于 2N。 - -# 五、查找 - -符号表是一种存储键值对的数据结构,支持两种操作:插入一个新的键值对;根据给定键得到值。 - -## 符号表 - -### 1. 无序符号表 - -

    - -### 2. 有序符号表 - -

    - -有序指的是支持 min() max() 等根据键的大小关系来实现的操作。 - -有序符号表的键需要实现 Comparable 接口。 - -### 3. 二分查找实现有序符号表 - -使用一对平行数组,一个存储键一个存储值。其中键的数组为 Comparable 数组,值的数字为 Object 数组。 - -rank() 方法至关重要,当键在表中时,它能够知道该键的位置;当键不在表中时,它也能知道在何处插入新键。 - -复杂度:二分查找最多需要 logN+1 次比较,使用二分查找实现的符号表的查找操作所需要的时间最多是对数级别的。但是插入操作需要移动数组元素,是线性级别的。 - -```java -public class BinarySearchST, Value> { - private Key[] keys; - private Value[] values; - private int N; - - public BinarySearchST(int capacity) { - keys = (Key[]) new Comparable[capacity]; - values = (Value[]) new Object[capacity]; - } - - public int size() { - return N; - } - - public Value get(Key key) { - int i = rank(key); - if (i < N && keys[i].compareTo(key) == 0) { - return values[i]; - } - return null; - } - - public int rank(Key key) { - int lo = 0, hi = N - 1; - while (lo <= hi) { - int mid = lo + (hi - lo) / 2; - int cmp = key.compareTo(keys[mid]); - if (cmp == 0) return mid; - else if (cmp < 0) hi = mid - 1; - else lo = mid + 1; - } - return lo; - } - - public void put(Key key, Value value) { - int i = rank(key); - if (i < N && keys[i].compareTo(key) == 0) { - values[i] = value; - return; - } - for (int j = N; j > i; j--) { - keys[j] = keys[j - 1]; - values[j] = values[j - 1]; - } - keys[i] = key; - values[i] = value; - N++; - } - - public Key ceiling(Key key){ - int i = rank(key); - return keys[i]; - } -} -``` - -## 二叉查找树 - -**二叉树** 定义为一个空链接,或者是一个有左右两个链接的节点,每个链接都指向一颗子二叉树。 - -

    - -**二叉查找树** (BST)是一颗二叉树,并且每个节点的值都大于其左子树中的所有节点的值而小于右子树的所有节点的值。 - -

    - -BST 有一个重要性质,就是它的前序遍历结果递增排序。 - -

    - -基本数据结构: - -```java -public class BST, Value> { - private Node root; - - private class Node { - private Key key; - private Value val; - private Node left, right; - // 以该节点为根的子树中节点总数 - private int N; - - public Node(Key key, Value val, int N) { - this.key = key; - this.val = val; - this.N = N; - } - } - - public int size() { - return size(root); - } - - private int size(Node x) { - if (x == null) return 0; - return x.N; - } -} -``` - -### 1. get() - -- 如果树是空的,则查找未命中; -- 如果被查找的键和根节点的键相等,查找命中; -- 否则递归地在子树中查找:如果被查找的键较小就在左子树中查找,较大就在右子树中查找。 - -BST 的查找操作每次递归都会让区间减少一半,和二分查找类似,因此查找的复杂度为 O(logn)。 - -```java -public Value get(Key key) { - return get(root, key); -} -private Value get(Node x, Key key) { - if (x == null) return null; - int cmp = key.compareTo(x.key); - if (cmp == 0) return x.val; - else if (cmp < 0) return get(x.left, key); - else return get(x.right, key); -} -``` - -### 2. put() - -当插入的键不存在于树中,需要创建一个新节点,并且更新上层节点的链接使得该节点正确链接到树中。 - -

    - -```java -public void put(Key key, Value val) { - root = put(root, key, val); -} -private Node put(Node x, Key key, Value val) { - if (x == null) return new Node(key, val, 1); - int cmp = key.compareTo(x.key); - if (cmp == 0) x.val = val; - else if (cmp < 0) x.left = put(x.left, key, val); - else x.right = put(x.right, key, val); - x.N = size(x.left) + size(x.right) + 1; - return x; -} -``` - -### 3. 分析 - -二叉查找树的算法运行时间取决于树的形状,而树的形状又取决于键被插入的先后顺序。最好的情况下树是完全平衡的,每条空链接和根节点的距离都为 logN。在最坏的情况下,树的高度为 N。 - -

    - -### 4. floor() - -floor(key):小于等于键的最大键 - -- 如果键小于根节点的键,那么 floor(key) 一定在左子树中; -- 如果键大于根节点的键,需要先判断右子树中是否存在 floor(key),如果存在就找到,否则根节点就是 floor(key)。 - -

    - -```java -public Key floor(Key key) { - Node x = floor(root, key); - if (x == null) return null; - return x.key; -} -private Node floor(Node x, Key key) { - if (x == null) return null; - int cmp = key.compareTo(x.key); - if (cmp == 0) return x; - if (cmp < 0) return floor(x.left, key); - Node t = floor(x.right, key); - if (t != null) { - return t; - } else { - return x; - } -} -``` - -### 5. rank() - -rank(key) 返回 key 的排名。 - -- 如果键和根节点的键相等,返回左子树的节点数; -- 如果小于,递归计算在左子树中的排名; -- 如果大于,递归计算在右子树中的排名,并加上左子树的节点数,再加上 1(根节点)。 - -```java -public int rank(Key key) { - return rank(key, root); -} -private int rank(Key key, Node x) { - if (x == null) return 0; - int cmp = key.compareTo(x.key); - if (cmp == 0) return size(x.left); - else if (cmp < 0) return rank(key, x.left); - else return 1 + size(x.left) + rank(key, x.right); -} -``` - -### 6. min() - -```java -private Node min(Node x) { - if (x.left == null) return x; - return min(x.left); -} -``` - -### 7. deleteMin() - -令指向最小节点的链接指向最小节点的右子树。 - -

    - -```java -public void deleteMin() { - root = deleteMin(root); -} -public Node deleteMin(Node x) { - if (x.left == null) return x.right; - x.left = deleteMin(x.left); - x.N = size(x.left) + size(x.right) + 1; - return x; -} -``` - -### 8. delete() - -- 如果待删除的节点只有一个子树,那么只需要让指向待删除节点的链接指向唯一的子树即可; -- 否则,让右子树的最小节点替换该节点。 - -

    - -```java -public void delete(Key key) { - root = delete(root, key); -} -private Node delete(Node x, Key key) { - if (x == null) return null; - int cmp = key.compareTo(x.key); - if (cmp < 0) x.left = delete(x.left, key); - else if (cmp > 0) x.right = delete(x.right, key); - else { - if (x.right == null) return x.left; - if (x.left == null) return x.right; - Node t = x; - x = min(t.right); - x.right = deleteMin(t.right); - x.left = t.left; - } - x.N = size(x.left) + size(x.right) + 1; - return x; -} -``` - -### 9. keys() - -利用二叉查找树中序遍历的结果为递增的特点。 - -```java -public Iterable keys(Key lo, Key hi) { - Queue queue = new LinkedList<>(); - keys(root, queue, lo, hi); - return queue; -} -private void keys(Node x, Queue queue, Key lo, Key hi) { - if (x == null) return; - int cmpLo = lo.compareTo(x.key); - int cmpHi = hi.compareTo(x.key); - if (cmpLo < 0) keys(x.left, queue, lo, hi); - if (cmpLo <= 0 && cmpHi >= 0) queue.add(x.key); - if (cmpHi > 0) keys(x.right, queue, lo, hi); -} -``` - -### 10. 性能分析 - -复杂度:二叉查找树所有操作在最坏的情况下所需要的时间都和树的高度成正比。 - -## 2-3 查找树 - -

    - -2-3 查找树引入了 2- 节点和 3- 节点,目的是为了让树更平衡。一颗完美平衡的 2-3 查找树的所有空链接到根节点的距离应该是相同的。 - -### 1. 插入操作 - -插入操作和 BST 的插入操作有很大区别,BST 的插入操作是先进行一次未命中的查找,然后再将节点插入到对应的空链接上。但是 2-3 查找树如果也这么做的话,那么就会破坏了平衡性。它是将新节点插入到叶子节点上。 - -根据叶子节点的类型不同,有不同的处理方式。 - -插入到 2- 节点上,那么直接将新节点和原来的节点组成 3- 节点即可。 - -

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

    - -### 2. 性质 - -2-3 查找树插入操作的变换都是局部的,除了相关的节点和链接之外不必修改或者检查树的其它部分,而这些局部变换不会影响树的全局有序性和平衡性。 - -2-3 查找树的查找和插入操作复杂度和插入顺序无关,在最坏的情况下查找和插入操作访问的节点必然不超过 logN 个,含有 10 亿个节点的 2-3 查找树最多只需要访问 30 个节点就能进行任意的查找和插入操作。 - -

    - -## 红黑二叉查找树 - -2-3 查找树需要用到 2- 节点和 3- 节点,红黑树使用红链接来实现 3- 节点。指向一个节点的链接颜色如果为红色,那么这个节点和上层节点表示的是一个 3- 节点,而黑色则是普通链接。 - -

    - -红黑树具有以下性质: - -1. 红链接都为左链接; -2. 完美黑色平衡,即任意空链接到根节点的路径上的黑链接数量相同。 - -画红黑树时可以将红链接画平。 - -

    - -```java -public class RedBlackBST, Value> { - private Node root; - private static final boolean RED = true; - private static final boolean BLACK = false; - - private class Node { - Key key; - Value val; - Node left, right; - int N; - boolean color; - - Node(Key key, Value val, int n, boolean color) { - this.key = key; - this.val = val; - N = n; - this.color = color; - } - } - - private boolean isRed(Node x) { - if (x == null) return false; - return x.color == RED; - } -} -``` - -### 1. 左旋转 - -因为合法的红链接都为左链接,如果出现右链接为红链接,那么就需要进行左旋转操作。 - -

    - -

    - -```java -public Node rotateLeft(Node h) { - Node x = h.right; - h.right = x.left; - x.left = h; - x.color = h.color; - h.color = RED; - x.N = h.N; - h.N = 1 + size(h.left) + size(h.right); - return x; -} -``` - -### 2. 右旋转 - -进行右旋转是为了转换两个连续的左红链接,这会在之后的插入过程中探讨。 - -

    - -

    - -```java -public Node rotateRight(Node h) { - Node x = h.left; - h.left = x.right; - x.color = h.color; - h.color = RED; - x.N = h.N; - h.N = 1 + size(h.left) + size(h.right); - return x; -} -``` - -### 3. 颜色转换 - -一个 4- 节点在红黑树中表现为一个节点的左右子节点都是红色的。分裂 4- 节点除了需要将子节点的颜色由红变黑之外,同时需要将父节点的颜色由黑变红,从 2-3 树的角度看就是将中间节点移到上层节点。 - -

    - -

    - -```java -void flipColors(Node h){ - h.color = RED; - h.left.color = BLACK; - h.right.color = BLACK; -} -``` - -### 4. 插入 - -先将一个节点按二叉查找树的方法插入到正确位置,然后再进行如下颜色操作: - -- 如果右子节点是红色的而左子节点是黑色的,进行左旋转; -- 如果左子节点是红色的,而且左子节点的左子节点也是红色的,进行右旋转; -- 如果左右子节点均为红色的,进行颜色转换。 - -

    - -```java -public void put(Key key, Value val) { - root = put(root, key, val); - root.color = BLACK; -} - -private Node put(Node x, Key key, Value val) { - if (x == null) return new Node(key, val, 1, RED); - int cmp = key.compareTo(x.key); - if (cmp == 0) x.val = val; - else if (cmp < 0) x.left = put(x.left, key, val); - else x.right = put(x.right, key, val); - - if (isRed(x.right) && !isRed(x.left)) x = rotateLeft(x); - if (isRed(x.left) && isRed(x.left.left)) x = rotateRight(x); - if (isRed(x.left) && isRed(x.right)) flipColors(x); - - x.N = size(x.left) + size(x.right) + 1; - return x; -} -``` - -可以看到该插入操作和二叉查找树的插入操作类似,只是在最后加入了旋转和颜色变换操作即可。 - -根节点一定为黑色,因为根节点没有上层节点,也就没有上层节点的左链接指向根节点。flipColors() 有可能会使得根节点的颜色变为红色,每当根节点由红色变成黑色时树的黑链接高度加 1. - -### 5. 删除最小键 - -如果最小键在一个 2- 节点中,那么删除该键会留下一个空链接,就破坏了平衡性,因此要确保最小键不在 2- 节点中。 - -将 2- 节点转换成 3- 节点或者 4- 节点有两种方法,一种是向上层节点拿一个 key,一种是向兄弟节点拿一个 key。如果上层节点是 2- 节点,那么就没办法从上层节点拿 key 了,因此要保证删除路径上的所有节点都不是 2- 节点。在向下删除的过程中,保证以下情况之一发生: - -1. 如果当前节点的左子节点不是 2- 节点,完成; -2. 如果当前节点的左子节点是 2- 节点而它的兄弟节点不是 2- 节点,向兄弟节点拿一个 key 过来; -3. 如果当前节点的左子节点和它的兄弟节点都是 2- 节点,将左子节点、父节点中的最小键和最近的兄弟节点合并为一个 4- 节点。 - -

    - -最后得到一个含有最小键的 3- 节点或者 4- 节点,直接从中删除。然后再从头分解所有临时的 4- 节点。 - -

    - -### 6. 分析 - -一颗大小为 N 的红黑树的高度不会超过 2logN。最坏的情况下是它所对应的 2-3 树,构成最左边的路径节点全部都是 3- 节点而其余都是 2- 节点。 - -红黑树大多数的操作所需要的时间都是对数级别的。 - -## 散列表 - -散列表类似于数组,可以把散列表的散列值看成数组的索引值。访问散列表和访问数组元素一样快速,它可以在常数时间内实现查找和插入操作。 - -由于无法通过散列值知道键的大小关系,因此散列表无法实现有序性操作。 - -### 1. 散列函数 - -对于一个大小为 M 的散列表,散列函数能够把任意键转换为 [0, M-1] 内的正整数,该正整数即为 hash 值。 - -散列表有冲突的存在,也就是两个不同的键可能有相同的 hash 值。 - -散列函数应该满足以下三个条件: - -1. 一致性:相等的键应当有相等的 hash 值,两个键相等表示调用 equals() 返回的值相等。 -2. 高效性:计算应当简便,有必要的话可以把 hash 值缓存起来,在调用 hash 函数时直接返回。 -3. 均匀性:所有键的 hash 值应当均匀地分布到 [0, M-1] 之间,这个条件至关重要,直接影响到散列表的性能。 - -除留余数法可以将整数散列到 [0, M-1] 之间,例如一个正整数 k,计算 k%M 既可得到一个 [0, M-1] 之间的 hash 值。注意 M 必须是一个素数,否则无法利用键包含的所有信息。例如 M 为 10k,那么只能利用键的后 k 位。 - -对于其它数,可以将其转换成整数的形式,然后利用除留余数法。例如对于浮点数,可以将其表示成二进制形式,然后使用二进制形式的整数值进行除留余数法。 - -对于有多部分组合的键,每部分都需要计算 hash 值,并且最后合并时需要让每部分 hash 值都具有同等重要的地位。可以将该键看成 R 进制的整数,键中每部分都具有不同的权值。 - -例如,字符串的散列函数实现如下 - -```java -int hash = 0; -for(int i = 0; i < s.length(); i++) - hash = (R * hash + s.charAt(i)) % M; -``` - -再比如,拥有多个成员的自定义类的哈希函数如下: - -```java -int hash = (((day * R + month) % M) * R + year) % M; -``` - -R 通常取 31。 - -Java 中的 hashCode() 实现了 hash 函数,但是默认使用对象的内存地址值。在使用 hashCode() 函数时,应当结合除留余数法来使用。因为内存地址是 32 位整数,我们只需要 31 位的非负整数,因此应当屏蔽符号位之后再使用除留余数法。 - -```java -int hash = (x.hashCode() & 0x7fffffff) % M; -``` - -使用 Java 自带的 HashMap 等自带的哈希表实现时,只需要去实现 Key 类型的 hashCode() 函数即可。Java 规定 hashCode() 能够将键均匀分布于所有的 32 位整数,Java 中的 String、Integer 等对象的 hashCode() 都能实现这一点。以下展示了自定义类型如何实现 hashCode()。 - -```java -public class Transaction{ - private final String who; - private final Date when; - private final double amount; - - public int hashCode(){ - int hash = 17; - hash = 31 * hash + who.hashCode(); - hash = 31 * hash + when.hashCode(); - hash = 31 * hash + ((Double) amount).hashCode(); - return hash; - } -} -``` - -### 2. 基于拉链法的散列表 - -拉链法使用链表来存储 hash 值相同的键,从而解决冲突。此时查找需要分两步,首先查找 Key 所在的链表,然后在链表中顺序查找。 - -

    - -对于 N 个键,M 条链表 (N>M),如果哈希函数能够满足均匀性的条件,每条链表的大小趋向于 N/M,因此未命中的查找和插入操作所需要的比较次数为 \~N/M。 - -### 3. 基于线性探测法的散列表 - -线性探测法使用空位来解决冲突,当冲突发生时,向前探测一个空位来存储冲突的键。使用线程探测法,数组的大小 M 应当大于键的个数 N(M>N)。 - -

    - -```java -public class LinearProbingHashST { - private int N; - private int M = 16; - private Key[] keys; - private Value[] vals; - - public LinearProbingHashST() { - init(); - } - - public LinearProbingHashST(int M) { - this.M = M; - init(); - } - - private void init() { - keys = (Key[]) new Object[M]; - vals = (Value[]) new Object[M]; - } - - private int hash(Key key) { - return (key.hashCode() & 0x7fffffff) % M; - } -} -``` - -**(一)查找** - -```java -public Value get(Key key) { - for (int i = hash(key); keys[i] != null; i = (i + 1) % M) { - if (keys[i].equals(key)) { - return vals[i]; - } - } - return null; -} -``` - -**(二)插入** - -```java -public void put(Key key, Value val) { - int i; - for (i = hash(key); keys[i] != null; i = (i + 1) % M) { - if (keys[i].equals(key)) { - vals[i] = val; - return; - } - } - keys[i] = key; - vals[i] = val; - N++; - resize(); -} -``` - -**(三)删除** - -删除操作应当将右侧所有相邻的键值对重新插入散列表中。 - -```java -public void delete(Key key) { - if (!contains(key)) return; - int i = hash(key); - while (!key.equals(keys[i])) { - i = (i + 1) % M; - } - keys[i] = null; - vals[i] = null; - i = (i + 1) % M; - while (keys[i] != null) { - Key keyToRedo = keys[i]; - Value valToRedo = vals[i]; - keys[i] = null; - vals[i] = null; - N--; - put(keyToRedo, valToRedo); - i = (i + 1) % M; - } - N--; - resize(); -} -``` - -**(四)调整数组大小** - -线性探测法的成本取决于连续条目的长度,连续条目也叫聚簇。当聚簇很长时,在查找和插入时也需要进行很多次探测。 - -α = N/M,把 α 称为利用率。理论证明,当 α 小于 1/2 时探测的预计次数只在 1.5 到 2.5 之间。 - -

    - -为了保证散列表的性能,应当调整数组的大小,使得 α 在 [1/4, 1/2] 之间。 - -```java -private void resize() { - if (N >= M / 2) resize(2 * M); - else if (N <= M / 8) resize(M / 2); -} - -private void resize(int cap) { - LinearProbingHashST t = new LinearProbingHashST<>(cap); - for (int i = 0; i < M; i++) { - if (keys[i] != null) { - t.put(keys[i], vals[i]); - } - } - keys = t.keys; - vals = t.vals; - M = t.M; -} -``` - -虽然每次重新调整数组都需要重新把每个键值对插入到散列表,但是从摊还分析的角度来看,所需要的代价却是很小的。从下图可以看出,每次数组长度加倍后,累计平均值都会增加 1,因为表中每个键都需要重新计算散列值,但是随后平均值会下降。 - -

    - -## 应用 - -### 1. 各种符号表实现的比较 - -

    - -应当优先考虑散列表,当需要有序性操作时使用红黑树。 - -### 2. Java 的符号表实现 - -- java.util.TreeMap:红黑树 -- java.util.HashMap:拉链法的散列表 - -### 3. 集合类型 - -除了符号表,集合类型也经常使用,它只有键没有值,可以用集合类型来存储一系列的键然后判断一个键是否在集合中。 - -### 4. 稀疏向量乘法 - -当向量为稀疏向量时,可以使用符号表来存储向量中的非 0 索引和值,使得乘法运算只需要对那些非 0 元素进行即可。 - -```java -public class SparseVector { - private HashMap hashMap; - - public SparseVector(double[] vector) { - hashMap = new HashMap<>(); - for (int i = 0; i < vector.length; i++) { - if (vector[i] != 0) { - hashMap.put(i, vector[i]); - } - } - } - - public double get(int i) { - return hashMap.getOrDefault(i, 0.0); - } - - public double dot(SparseVector other) { - double sum = 0; - for (int i : hashMap.keySet()) { - sum += this.get(i) * other.get(i); - } - return sum; - } -} -``` - diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md deleted file mode 100644 index 5ac1d886..00000000 --- a/notes/计算机操作系统.md +++ /dev/null @@ -1,889 +0,0 @@ - -* [一、 概述](#一-概述) - * [操作系统基本特征](#操作系统基本特征) - * [操作系统基本功能](#操作系统基本功能) - * [系统调用](#系统调用) - * [大内核和微内核](#大内核和微内核) - * [中断分类](#中断分类) -* [二、进程管理](#二进程管理) - * [进程与线程](#进程与线程) - * [进程状态的切换](#进程状态的切换) - * [调度算法](#调度算法) - * [进程同步](#进程同步) - * [经典同步问题](#经典同步问题) - * [进程通信](#进程通信) -* [三、死锁](#三死锁) - * [死锁的必要条件](#死锁的必要条件) - * [死锁的处理方法](#死锁的处理方法) -* [四、内存管理](#四内存管理) - * [虚拟内存](#虚拟内存) - * [分页与分段](#分页与分段) - * [分页系统地址映射](#分页系统地址映射) - * [页面置换算法](#页面置换算法) -* [五、设备管理](#五设备管理) - * [磁盘调度算法](#磁盘调度算法) -* [六、链接](#六链接) - * [编译系统](#编译系统) - * [目标文件](#目标文件) - * [静态链接](#静态链接) - * [动态链接](#动态链接) -* [参考资料](#参考资料) - - - -# 一、 概述 - -## 操作系统基本特征 - -### 1. 并发 - -并发性是指宏观上在一段时间内能同时运行多个程序,而并行性则指同一时刻能运行多个指令。 - -并行需要硬件支持,如多流水线或者多处理器。 - -操作系统通过引入进程和线程,使得程序能够并发运行。 - -### 2. 共享 - -共享是指系统中的资源可以供多个并发进程共同使用。 - -有两种共享方式:互斥共享和同时共享。 - -互斥共享的资源称为临界资源,例如打印机等,在同一时间只允许一个进程访问,需要用同步机制来实现对临界资源的访问。 - -### 3. 虚拟 - -虚拟技术把一个物理实体转换为多个逻辑实体。 - -主要有两种虚拟技术:时分复用技术和空分复用技术。例如多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占有处理器,每次只执行一小个时间片并快速切换。 - -### 4. 异步 - -异步指进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。 - -## 操作系统基本功能 - -### 1. 进程管理 - -进程控制、进程同步、进程通信、死锁处理、处理机调度等。 - -### 2. 内存管理 - -内存分配、地址映射、内存保护与共享和内存扩充等功能。 - -### 3. 文件管理 - -文件存储空间的管理、目录管理及文件读写管理和保护等。 - -### 4. 设备管理 - -完成用户的 I/O 请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虛拟设备等功能。 - -## 系统调用 - -如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。 - -

    - -Linux 的系统调用主要有以下这些: - -| Task | Commands | -| :---: | --- | -| 进程控制 | fork(); exit(); wait(); | -| 进程通信 | pipe(); shmget(); mmap(); | -| 文件操作 | open(); read(); write(); | -| 设备操作 | ioctl(); read(); write(); | -| 信息维护 | getpid(); alarm(); sleep(); | -| 安全 | chmod(); umask(); chown(); | - -## 大内核和微内核 - -### 1. 大内核 - -大内核是将操作系统功能作为一个紧密结合的整体放到内核。 - -由于各模块共享信息,因此有很高的性能。 - -### 2. 微内核 - -由于操作系统不断复杂,为了实现因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。 - -在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。 - -因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。 - -

    - -## 中断分类 - -### 1. 外中断 - -由 CPU 执行指令以外的事件引起,如 I/O 结束中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。 - -### 2. 异常 - -由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。 - -### 3. 陷入 - -在用户程序中使用系统调用。 - -# 二、进程管理 - -## 进程与线程 - -### 1. 进程 - -进程是资源分配的基本单位。 - -进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。 - -下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 - -

    - -### 2. 线程 - -线程是独立调度的基本单位。 - -一个进程中可以有多个线程,它们共享进程资源。 - -

    - -### 3. 区别 - -- 拥有资源:进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。 - -- 调度:线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。 - -- 系统开销:由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。 - -- 通信方面:进程间通信 (IPC) 需要进程同步和互斥手段的辅助,以保证数据的一致性。而线程间可以通过直接读/写同一进程中的数据段(如全局变量)来进行通信。 - -举例:QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 - -## 进程状态的切换 - -

    - -- 就绪状态(ready):等待被调度 -- 运行状态(running) -- 阻塞状态(waiting):等待资源 - -应该注意以下内容: - -- 只有就绪态和运行态可以相互转换,其它的都是单向转换。就绪状态的进程通过调度算法从而获得 CPU 时间,转为运行状态;而运行状态的进程,在分配给它的 CPU 时间片用完之后就会转为就绪状态,等待下一次调度。 -- 阻塞状态是缺少需要的资源从而由运行状态转换而来,但是该资源不包括 CPU 时间,缺少 CPU 时间会从运行态转换为就绪态。 - -## 调度算法 - -需要针对不同环境来讨论调度算法。 - -### 1. 批处理系统中的调度 - -#### 1.1 先来先服务 - -> first-come first-serverd(FCFS) - -调度最先进入就绪队列的作业。 - -有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。 - -#### 1.2 短作业优先 - -> shortest job first(SJF) - -调度估计运行时间最短的作业。 - -长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。 - -#### 1.3 最短剩余时间优先 - -> shortest remaining time next(SRTN) - -### 2. 交互式系统中的调度 - -#### 2.1 优先级调度 - -除了可以手动赋予优先权之外,还可以把响应比作为优先权,这种调度方式叫做高响应比优先调度算法。 - -响应比 = (等待时间 + 要求服务时间) / 要求服务时间 = 响应时间 / 要求服务时间 - -这种调度算法主要是为了解决短作业优先调度算法长作业可能会饿死的问题,因为随着等待时间的增长,响应比也会越来越高。 - -#### 2.2 时间片轮转 - -将所有就绪进程按 FCFS 的原则排成一个队列,每次调度时,把 CPU 时间分配给队首进程,该进程可以执行一个时间片。当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 时间分配给队首的进程。 - -时间片轮转算法的效率和时间片的大小有很大关系。因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。 - -#### 2.3 多级反馈队列 - -

    - -如果一个进程需要执行 100 个时间片,如果采用轮转调度算法,那么需要交换 100 次。多级队列是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同,例如 1,2,4,8,..。进程在第一个队列没执行完,就会被移到下一个队列。这种方式下,之前的进程只需要交换 7 次。 - -每个队列优先权也不同,最上面的优先权最高。因此只有上一个队列没有进程在排队,才能调度当前队列上的进程。 - -### 3. 实时系统中的调度 - -实时系统要求一个服务请求在一个确定时间内得到响应。 - -分为硬实时和软实时,前者必须满足绝对的截止时间,后者可以容忍一定的超时。 - -## 进程同步 - -### 1. 临界区 - -对临界资源进行访问的那段代码称为临界区。 - -为了互斥访问临界资源,每个进程在进入临界区之前,需要先进行检查。 - -```html -// entry section -// critical section; -// exit section -``` - -### 2. 同步与互斥 - -- 同步:多个进程按一定顺序执行; -- 互斥:多个进程在同一时刻只有一个进程能进入临界区。 - -### 3. 信号量 - -信号量(Semaphore)是一个整型变量,可以对其执行 down 和 up 操作,也就是常见的 P 和 V 操作。 - -- **down** : 如果信号量大于 0 ,执行 -1 操作;如果信号量等于 0,进程睡眠,等待信号量大于 0; -- **up** :对信号量执行 +1 操作,唤醒睡眠的进程让其完成 down 操作。 - -down 和 up 操作需要被设计成原语,不可分割,通常的做法是在执行这些操作的时候屏蔽中断。 - -如果信号量的取值只能为 0 或者 1,那么就成为了 **互斥量(Mutex)** ,0 表示临界区已经加锁,1 表示临界区解锁。 - -```c -typedef int semaphore; -semaphore mutex = 1; -void P1() { - down(&mutex); - // 临界区 - up(&mutex); -} - -void P2() { - down(&mutex); - // 临界区 - up(&mutex); -} -``` - - **使用信号量实现生产者-消费者问题**
    - -问题描述:使用一个缓冲区来保存物品,只有缓冲区没有满,生产者才可以放入物品;只有缓冲区不为空,消费者才可以拿走物品。 - -因为缓冲区属于临界资源,因此需要使用一个互斥量 mutex 来控制对缓冲区的互斥访问。 - -为了同步生产者和消费者的行为,需要记录缓冲区中物品的数量。数量可以使用信号量来进行统计,这里需要使用两个信号量:empty 记录空缓冲区的数量,full 记录满缓冲区的数量。其中,empty 信号量是在生产者进程中使用,当 empty 不为 0 时,生产者才可以放入物品;full 信号量是在消费者进程中使用,当 full 信号量不为 0 时,消费者才可以取走物品。 - -注意,不能先对缓冲区进行加锁,再测试信号量。也就是说,不能先执行 down(mutex) 再执行 down(empty)。如果这么做了,那么可能会出现这种情况:生产者对缓冲区加锁后,执行 down(empty) 操作,发现 empty = 0,此时生产者睡眠。消费者不能进入临界区,因为生产者对缓冲区加锁了,也就无法执行 up(empty) 操作,empty 永远都为 0,那么生产者和消费者就会一直等待下去,造成死锁。 - -```c -#define N 100 -typedef int semaphore; -semaphore mutex = 1; -semaphore empty = N; -semaphore full = 0; - -void producer() { - while(TRUE){ - int item = produce_item(); - down(&empty); - down(&mutex); - insert_item(item); - up(&mutex); - up(&full); - } -} - -void consumer() { - while(TRUE){ - down(&full); - down(&mutex); - int item = remove_item(); - up(&mutex); - up(&empty); - consume_item(item); - } -} -``` - -### 4. 管程 - -使用信号量机制实现的生产者消费者问题需要客户端代码做很多控制,而管程把控制的代码独立出来,不仅不容易出错,也使得客户端代码调用更容易。 - -c 语言不支持管程,下面的示例代码使用了类 Pascal 语言来描述管程。示例代码的管程提供了 insert() 和 remove() 方法,客户端代码通过调用这两个方法来解决生产者-消费者问题。 - -```pascal -monitor ProducerConsumer - integer i; - condition c; - - procedure insert(); - begin - // ... - end; - - procedure remove(); - begin - // ... - end; -end monitor; -``` - -管程有一个重要特性:在一个时刻只能有一个进程使用管程。进程在无法继续执行的时候不能一直占用管程,否者其它进程永远不能使用管程。 - -管程引入了 **条件变量** 以及相关的操作:**wait()** 和 **signal()** 来实现同步操作。对条件变量执行 wait() 操作会导致调用进程阻塞,把管程让出来给另一个进程持有。signal() 操作用于唤醒被阻塞的进程。 - - **使用管程实现生成者-消费者问题**
    - -```pascal -// 管程 -monitor ProducerConsumer - condition full, empty; - integer count := 0; - condition c; - - procedure insert(item: integer); - begin - if count = N then wait(full); - insert_item(item); - count := count + 1; - if count = 1 then signal(empty); - end; - - function remove: integer; - begin - if count = 0 then wait(empty); - remove = remove_item; - count := count - 1; - if count = N -1 then signal(full); - end; -end monitor; - -// 生产者客户端 -procedure producer -begin - while true do - begin - item = produce_item; - ProducerConsumer.insert(item); - end -end; - -// 消费者客户端 -procedure consumer -begin - while true do - begin - item = ProducerConsumer.remove; - consume_item(item); - end -end; -``` - -## 经典同步问题 - -生产者和消费者问题前面已经讨论过了。 - -### 1. 读者-写者问题 - -允许多个进程同时对数据进行读操作,但是不允许读和写以及写和写操作同时发生。 - -一个整型变量 count 记录在对数据进行读操作的进程数量,一个互斥量 count_mutex 用于对 count 加锁,一个互斥量 data_mutex 用于对读写的数据加锁。 - -```c -typedef int semaphore; -semaphore count_mutex = 1; -semaphore data_mutex = 1; -int count = 0; - -void reader() { - while(TRUE) { - down(&count_mutex); - count++; - if(count == 1) down(&data_mutex); // 第一个读者需要对数据进行加锁,防止写进程访问 - up(&count_mutex); - read(); - down(&count_mutex); - count--; - if(count == 0) up(&data_mutex); - up(&count_mutex); - } -} - -void writer() { - while(TRUE) { - down(&data_mutex); - write(); - up(&data_mutex); - } -} -``` - -### 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); - } -} -``` - -为了防止死锁的发生,可以设置两个条件: - -1. 必须同时拿起左右两个筷子; -2. 只有在两个邻居都没有进餐的情况下才允许进餐。 - -```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_tow(i); - } -} - -void take_two(int i) { - down(&mutex); - state[i] = HUNGRY; - test(i); - up(&mutex); - down(&s[i]); -} - -void put_tow(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]); - } -} -``` - -## 进程通信 - -### 1. 进程同步与进程通信的区别 - -- 进程同步:控制多个进程按一定顺序执行; -- 进程通信:进程间传输信息。 - -进程通信是一种手段,而进程同步是一种目的。也可以说,为了能够达到进程同步的目的,需要让进程进行通信,传输一些进程同步所需要的信息。 - -在进程同步中介绍的信号量也属于进程通信的一种方式,但是属于低级别的进程通信,因为它传输的信息非常小。 - -### 2. 进程通信方式 - -#### 2.1 消息传递 - -操作系统提供了用于通信的通道(Channel),进程可以通过读写这个通道进行通信。 - -

    - - **(一)管道**
    - -写进程在管道的尾端写入数据,读进程在管道的首端读出数据。管道提供了简单的流控制机制,进程试图读空管道时,在有数据写入管道前,进程将一直阻塞。同样地,管道已经满时,进程再试图写管道,在其它进程从管道中移走数据之前,写进程将一直阻塞。 - -Linux 中管道通过空文件实现。 - -管道有三种: - -1. 普通管道:有两个限制,一是只能单向传输;二是只能在父子进程之间使用; -2. 流管道:去除第一个限制,支持双向传输; -3. 命名管道:去除第二个限制,可以在不相关进程之间进行通信。 - -

    - - **(二)消息队列**
    - -消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。 - -

    - - **(三)套接字**
    - -套接字也是一种进程间通信机制,与其它通信机制不同的是,它可用于不同机器间的进程通信。 - -

    - -#### 2.2 共享内存 - -操作系统建立一块共享内存,并将其映射到每个进程的地址空间上,进程就可以直接对这块共享内存进行读写。 - -共享内存是最快的进程通信方式。 - -

    - -# 三、死锁 - -## 死锁的必要条件 - -

    - -1. 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。 -2. 占有和等待:已经得到了某个资源的进程可以再请求新的资源。 -3. 不可抢占:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显示地释放。 -4. 环路等待:有两个或者两个以上的进程组成一条环路,该环路中的每个进程都在等待下一个进程所占有的资源。 - -## 死锁的处理方法 - -### 1. 鸵鸟策略 - -把头埋在沙子里,假装根本没发生问题。 - -因为解决死锁问题的代价很高,因此鸵鸟策略这种不采取任务措施的方案会获得更高的性能。当发生死锁时不会对用户造成多大影响,或发生死锁的概率很低,可以采用鸵鸟策略。 - -大多数操作系统,包括 Unix,Linux 和 Windows,处理死锁问题的办法仅仅是忽略它。 - -### 2. 死锁检测与死锁恢复 - -不试图阻止死锁,而是当检测到死锁发生时,采取措施进行恢复。 - -**(一)每种类型一个资源的死锁检测** - -

    - -上图为资源分配图,其中方框表示资源,圆圈表示进程。资源指向进程表示该资源已经分配给该进程,进程指向资源表示进程请求获取该资源。 - -图 a 可以抽取出环,如图 b,它满足了环路等待条件,因此会发生死锁。 - -每种类型一个资源的死锁检测算法是通过检测有向图是否存在环来实现,从一个节点出发进行深度优先搜索,对访问过的节点进行标记,如果访问了已经标记的节点,就表示有向图存在环,也就是检测到死锁的发生。 - -**(二)每种类型多个资源的死锁检测** - -

    - -上图中,有三个进程四个资源,每个数据代表的含义如下: - -- E 向量:资源总量 -- A 向量:资源剩余量 -- C 矩阵:每个进程所拥有的资源数量,每一行都代表一个进程拥有资源的数量 -- R 矩阵:每个进程请求的资源数量 - -进程 P1 和 P2 所请求的资源都得不到满足,只有进程 P3 可以,让 P3 执行,之后释放 P3 拥有的资源,此时 A = (2 2 2 0)。P2 可以执行,执行后释放 P2 拥有的资源,A = (4 2 2 1) 。P1 也可以执行。所有进程都可以顺利执行,没有死锁。 - -算法总结如下: - -每个进程最开始时都不被标记,执行过程有可能被标记。当算法结束时,任何没有被标记的进程都是死锁进程。 - -1. 寻找一个没有标记的进程 Pi,它所请求的资源小于等于 A。 -2. 如果找到了这样一个进程,那么将 C 矩阵的第 i 行向量加到 A 中,标记该进程,并转回 1。 -3. 如果没有这样一个进程,算法终止。 - -**(三)死锁恢复** - -- 利用抢占恢复 -- 利用回滚恢复 -- 通过杀死进程恢复 - -### 3. 死锁预防 - -在程序运行之前预防发生死锁。 - -**(一)破坏互斥条件** - -例如假脱机打印机技术允许若干个进程同时输出,唯一真正请求物理打印机的进程是打印机守护进程。 - -**(二)破坏占有和等待条件** - -一种实现方式是规定所有进程在开始执行前请求所需要的全部资源。 - -**(三)破坏不可抢占条件** - -**(四)破坏环路等待** - -给资源统一编号,进程只能按编号顺序来请求资源。 - -### 4. 死锁避免 - -在程序运行时避免发生死锁。 - -**(一)安全状态** - -

    - -图 a 的第二列 Has 表示已拥有的资源数,第三列 Max 表示总共需要的资源数,Free 表示还有可以使用的资源数。从图 a 开始出发,先让 B 拥有所需的所有资源(图 b),运行结束后释放 B,此时 Free 变为 5(图 c);接着以同样的方式运行 C 和 A,使得所有进程都能成功运行,因此可以称图 a 所示的状态时安全的。 - -定义:如果没有死锁发生,并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕,则称该状态是安全的。 - -安全状态的检测与死锁的检测类似,因为安全状态必须要求不能发生死锁。下面的银行家算法与死锁检测算法非常类似,可以结合着做参考对比。 - -**(二)单个资源的银行家算法** - -一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。 - -

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

    - -上图中有五个进程,四个资源。左边的图表示已经分配的资源,右边的图表示还需要分配的资源。最右边的 E、P 以及 A 分别表示:总资源、已分配资源以及可用资源,注意这三个为向量,而不是具体数值,例如 A=(1020),表示 4 个资源分别还剩下 1/0/2/0。 - -检查一个状态是否安全的算法如下: - -- 查找右边的矩阵是否存在一行小于等于向量 A。如果不存在这样的行,那么系统将会发生死锁,状态是不安全的。 -- 假若找到这样一行,将该进程标记为终止,并将其已分配资源加到 A 中。 -- 重复以上两步,直到所有进程都标记为终止,则状态时安全的。 - -如果一个状态不是安全的,也需要拒绝进入这个状态。 - -# 四、内存管理 - -## 虚拟内存 - -每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到一部分不在物理内存中的地址空间时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。 - -## 分页与分段 - -### 1. 分页 - -大部分虚拟内存系统都使用分页技术。把由程序产生的地址称为虚拟地址,它们构成了一个虚拟地址空间。例如有一台计算机可以产生 16 位地址,它的虚拟地址空间为 0\~64K,然而计算机只有 32KB 的物理内存,因此虽然可以编写 64KB 的程序,但它们不能被完全调入内存运行。 - -

    - -虚拟地址空间划分成固定大小的页,在物理内存中对应的单元称为页框,页和页框大小通常相同,它们之间通过页表进行映射。 - -程序最开始只将一部分页调入页框中,当程序引用到没有在页框的页时,产生缺页中断,进行页面置换,按一定的原则将一部分页框换出,并将页调入。 - -### 2. 分段 - -

    - -上图为一个编译器在编译过程中建立的多个表,有 4 个表是动态增长的,如果使用分页系统的一维地址空间,动态增长的特点会导致覆盖问题的出现。 - -

    - -分段的做法是把每个表分成段,一个段构成一个独立的地址空间。每个段的长度可以不同,并且可以动态增长。 - -每个段都需要程序员来划分。 - -### 3. 段页式 - -用分段方法来分配和管理虚拟存储器。程序的地址空间按逻辑单位分成基本独立的段,而每一段有自己的段名,再把每段分成固定大小的若干页。 - -用分页方法来分配和管理实存。即把整个主存分成与上述页大小相等的存储块,可装入作业的任何一页。 - -程序对内存的调入或调出是按页进行的,但它又可按段实现共享和保护。 - -### 4. 分页与分段区别 - -- 对程序员的透明性:分页透明,但是分段需要程序员显示划分每个段。 - -- 地址空间的维度:分页是一维地址空间,分段是二维的。 - -- 大小是否可以改变:页的大小不可变,段的大小可以动态改变。 - -- 出现的原因:分页主要用于实现虚拟内存,从而获得更大的地址空间;分段主要是为了使程序和数据可以被划分为逻辑上独立的地址空间并且有助于共享和保护。 - -## 分页系统地址映射 - -- 内存管理单元(MMU):管理着虚拟地址空间和物理内存的转换。 -- 页表(Page table):页(虚拟地址空间)和页框(物理内存空间)的映射表。例如下图中,页表的第 0 个表项为 010,表示第 0 个页映射到第 2 个页框。页表项的最后一位用来标记页是否在内存中。 - -下图的页表存放着 16 个页,这 16 个页需要用 4 个比特位来进行索引定位。因此对于虚拟地址(0010 000000000100),前 4 位是用来存储页面号,而后 12 位存储在页中的偏移量。 - -(0010 000000000100)根据前 4 位得到页号为 2,读取表项内容为(110 1),它的前 3 为为页框号,最后 1 位表示该页在内存中。最后映射得到物理内存地址为(110 000000000100)。 - -

    - -## 页面置换算法 - -在程序运行过程中,如果要访问的页面不在内存中,就发生缺页中断从而将该页调入内存中。此时如果内存已无空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间。 - -页面置换算法的主要目标是使页面置换频率最低(也可以说缺页率最低)。 - -### 1. 最佳 - -> Optimal - -所选择的被换出的页面将是最长时间内不再被访问,通常可以保证获得最低的缺页率。 - -是一种理论上的算法,因为无法知道一个页面多长时间不再被访问。 - -举例:一个系统为某进程分配了三个物理块,并有如下页面引用序列: - -

    - -开始运行时,先将 7, 0, 1 三个页面装入内存。当进程要访问页面 2 时,产生缺页中断,会将页面 7 换出,因为页面 7 再次被访问的时间最长。 - -### 2. 先进先出 - -> FIFO, First In First Out - -所选择换出的页面是最先进入的页面。 - -该算法会将那些经常被访问的页面也被换出,从而使缺页率升高。 - -### 3. 最近最久未使用 - -> LRU, Least Recently Used - -虽然无法知道将来要使用的页面情况,但是可以知道过去使用页面的情况。LRU 将最近最久未使用的页面换出。 - -可以用栈来实现该算法,栈中存储页面的页面号。当进程访问一个页面时,将该页面的页面号从栈移除,并将它压入栈顶。这样,最近被访问的页面总是在栈顶,而最近最久未使用的页面总是在栈底。 - -

    - -

    - -### 4. 时钟 - -> Clock - -需要用到一个访问位,当一个页面被访问时,将访问位置为 1。 - -首先,将内存中的所有页面链接成一个循环队列,当缺页中断发生时,检查当前指针所指向页面的访问位,如果访问位为 0,就将该页面换出;否则将该页的访问位设置为 0,给该页面第二次的机会,移动指针继续检查。 - -

    - -# 五、设备管理 - -## 磁盘调度算法 - -当多个进程同时请求访问磁盘时,需要进行磁盘调度来控制对磁盘的访问。 - -磁盘调度的主要目标是使磁盘的平均寻道时间最少。 - -### 1. 先来先服务 - -> FCFS, First Come First Served - -根据进程请求访问磁盘的先后次序来进行调度。优点是公平和简单,缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。 - -### 2. 最短寻道时间优先 - -> SSTF, Shortest Seek Time First - -要求访问的磁道与当前磁头所在磁道距离最近的优先进行调度。这种算法并不能保证平均寻道时间最短,但是比 FCFS 好很多。 - -### 3. 扫描算法 - -> SCAN - -SSTF 会出现饥饿现象。考虑以下情况,新进程请求访问的磁道与磁头所在磁道的距离总是比一个在等待的进程来的近,那么等待的进程会一直等待下去。 - -SCAN 算法在 SSTF 算法之上考虑了磁头的移动方向,要求所请求访问的磁道在磁头当前移动方向上才能够得到调度。因为考虑了移动方向,那么一个进程请求访问的磁道一定会得到调度。 - -当一个磁头自里向外移动时,移到最外侧会改变移动方向为自外向里,这种移动的规律类似于电梯的运行,因此又常称 SCAN 算法为电梯调度算法。 - -### 4. 循环扫描算法 - -> CSCAN - -CSCAN 对 SCAN 进行了改动,要求磁头始终沿着一个方向移动。 - -# 六、链接 - -## 编译系统 - -以下是一个 hello.c 程序: - -```c -#include - -int main() -{ - printf("hello, world\n"); - return 0; -} -``` - -在 Unix 系统上,由编译器把源文件转换为目标文件。 - -```bash -gcc -o hello hello.c -``` - -这个过程大致如下: - -

    - -1. 预处理阶段:处理以 # 开头的预处理命令; -2. 编译阶段:翻译成汇编程序; -3. 汇编阶段:将汇编程序翻译可重定向目标程序,它是二进制的; -4. 链接阶段:将可重定向目标程序和 printf.o 等单独预编译好的目标文件进行合并,得到最终的可执行目标程序。 - -## 目标文件 - -1. 可执行目标文件:可以直接在内存中执行; -2. 可重定向目标文件:可与其他可重定向目标文件在链接阶段合并,创建一个可执行目标文件; -3. 共享目标文件:可以在运行时被动态加载进内存并链接; - -## 静态链接 - -静态连接器以一组可重定向目标文件为输入,生成一个完全链接的可执行目标文件作为输出。链接器主要完成以下两个任务: - -1. 符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用于一个符号定义关联起来。 -2. 重定位:编译器和汇编器生成从地址 0 开始的代码和数据节,链接器通过把每个符号定义与一个内存位置关联起来,从而重定位这些节,然后修改所有对这些符号的引用,使得它们指向这个内存位置。 - -

    - -## 动态链接 - -静态库有以下两个问题: - -- 当静态库更新时那么整个程序都要重新进行链接; -- 对于 printf 这种标准函数库,如果每个程序都要有代码,这会极大浪费资源。 - -共享库是为了解决静态库的这两个问题而设计的,在 Linux 系统中通常用 .so 后缀来表示,Windows 系统上它们被称为 DLL。它具有以下特点: - -1. 在给定的文件系统中一个库只有一个 .so 文件,所有引用该库的可执行目标文件都共享这个文件,它不会被复制到引用它的可执行文件中; -2. 在内存中,一个共享库的 .text 节的一个副本可以被不同的正在运行的进程共享。 - -

    - -# 参考资料 - -- Tanenbaum A S, Bos H. Modern operating systems[M]. Prentice Hall Press, 2014. -- 汤子瀛, 哲凤屏, 汤小丹. 计算机操作系统[M]. 西安电子科技大学出版社, 2001. -- Bryant, R. E., & O’Hallaron, D. R. (2004). 深入理解计算机系统. -- [Operating System Notes](https://applied-programming.github.io/Operating-Systems-Notes/) -- [进程间的几种通信方式](http://blog.csdn.net/yufaw/article/details/7409596) -- [Operating-System Structures](https://www.cs.uic.edu/\~jbell/CourseNotes/OperatingSystems/2_Structures.html) -- [Processes](http://cse.csusb.edu/tongyu/courses/cs460/notes/process.php) -- [Inter Process Communication Presentation[1]](https://www.slideshare.net/rkolahalam/inter-process-communication-presentation1) diff --git a/notes/计算机网络.md b/notes/计算机网络.md deleted file mode 100644 index d99e12b8..00000000 --- a/notes/计算机网络.md +++ /dev/null @@ -1,888 +0,0 @@ - -* [一、概述](#一概述) - * [网络的网络](#网络的网络) - * [ISP](#isp) - * [互联网的组成](#互联网的组成) - * [主机之间的通信方式](#主机之间的通信方式) - * [电路交换与分组交换](#电路交换与分组交换) - * [时延](#时延) - * [计算机网络体系结构 *](#计算机网络体系结构-) -* [二、物理层](#二物理层) - * [通信方式](#通信方式) - * [带通调制](#带通调制) - * [信道复用技术](#信道复用技术) -* [三、数据链路层](#三数据链路层) - * [三个基本问题](#三个基本问题) - * [点对点信道 - PPP 协议](#点对点信道---ppp-协议) - * [局域网的拓扑](#局域网的拓扑) - * [广播信道- CSMA/CD 协议 *](#广播信道--csmacd-协议-) - * [扩展局域网 *](#扩展局域网-) - * [MAC 层 *](#mac-层-) -* [四、网络层 *](#四网络层-) - * [网际协议 IP 概述](#网际协议-ip-概述) - * [IP 数据报格式](#ip-数据报格式) - * [IP 地址编址](#ip-地址编址) - * [IP 地址和 MAC 地址](#ip-地址和-mac-地址) - * [地址解析协议 ARP](#地址解析协议-arp) - * [路由器的结构](#路由器的结构) - * [路由器分组转发流程](#路由器分组转发流程) - * [路由选择协议](#路由选择协议) - * [网际控制报文协议 ICMP](#网际控制报文协议-icmp) - * [分组网间探测 PING](#分组网间探测-ping) - * [IP 多播](#ip-多播) - * [虚拟专用网 VPN](#虚拟专用网-vpn) - * [网络地址转换 NAT](#网络地址转换-nat) -* [五、运输层 *](#五运输层-) - * [UDP 和 TCP 的特点](#udp-和-tcp-的特点) - * [UDP 首部格式](#udp-首部格式) - * [TCP 首部格式](#tcp-首部格式) - * [TCP 的三次握手](#tcp-的三次握手) - * [TCP 的四次挥手](#tcp-的四次挥手) - * [TCP 滑动窗口](#tcp-滑动窗口) - * [TCP 可靠传输](#tcp-可靠传输) - * [TCP 流量控制](#tcp-流量控制) - * [TCP 拥塞控制](#tcp-拥塞控制) -* [六、应用层 *](#六应用层-) - * [域名系统 DNS](#域名系统-dns) - * [文件传输协议 FTP](#文件传输协议-ftp) - * [远程终端协议 TELNET](#远程终端协议-telnet) - * [万维网 WWW](#万维网-www) - * [电子邮件协议](#电子邮件协议) - * [动态主机配置协议 DHCP](#动态主机配置协议-dhcp) - * [点对点传输 P2P](#点对点传输-p2p) - * [Web 页面请求过程](#web-页面请求过程) - * [常用端口](#常用端口) -* [参考资料](#参考资料) - - - -# 一、概述 - -## 网络的网络 - -网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。 - -

    - -## ISP - -互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。 - -目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为主干 ISP、地区 ISP 和本地 ISP。 - -互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。 - -

    - -## 互联网的组成 - -1. 边缘部分:所有连接在互联网上的主机,用户可以直接使用; - -2. 核心部分:由大量的网络和连接这些网络的路由器组成,为边缘部分的主机提供服务。 - -

    - -## 主机之间的通信方式 - -1. 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。 - -2. 对等(P2P):不区分客户和服务器。 - -## 电路交换与分组交换 - -

    - -### 1. 电路交换 - -电路交换用于电话通信系统,两个用户要通信之前需要建立一条专用的物理链路,并且在整个通信过程中始终占用该链路。由于通信的过程中不可能一直在使用传输线路,因此电路交换对线路的利用率很低,往往不到 10%。 - -### 2. 报文交换 - -报文交换用于邮局通信系统,邮局接收到一份报文之后,先存储下来,然后把相同目的地的报文一起转发到下一个目的地,这个过程就是存储转发过程。 - -### 3. 分组交换 - -分组交换也使用了存储转发,但是转发的是分组而不是报文。把整块数据称为一个报文,由于一个报文可能很长,需要先进行切分,来满足分组能处理的大小。在每个切分的数据前面加上首部之后就成为了分组,首部包含了目的地址和源地址等控制信息。 - -

    - -存储转发允许在一条传输线路上传送多个主机的分组,因此两个用户之间的通信不需要占用端到端的线路资源。 - -相比于报文交换,由于分组比报文更小,因此分组交换的存储转发速度更加快速。 - -## 时延 - -总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延 - -

    - -### 1. 发送时延 - -主机或路由器发送数据帧所需要的时间。 - -

    - -其中 l 表示数据帧的长度,v 表示发送速率。 - -### 2. 传播时延 - -电磁波在信道中传播一定的距离需要花费的时间,电磁波传播速度接近光速。 - -

    - -其中 l 表示信道长度,v 表示电磁波在信道上的传播速率。 - -### 3. 处理时延 - -主机或路由器收到分组时进行处理所需要的时间,例如分析首部,从分组中提取数据部分等。 - -### 4. 排队时延 - -分组在路由器的输入队列和输出队列中排队等待的时间,取决于网络当前的通信量。 - -## 计算机网络体系结构 * - -

    - -### 1. 七层协议 - -如图 a 所示,其中表示层和会话层用途如下: - -1. 表示层:信息的语法、语义以及它们的关联,如加密解密、转换翻译、压缩解压缩; -2. 会话层:不同机器上的用户之间建立及管理会话。 - -### 2. 五层协议 - -1. 应用层:为特定应用程序提供数据传输服务,例如 HTTP、DNS 等。数据单位为报文。 - -2. 运输层:提供的是进程间的通用数据传输服务。由于应用层协议很多,定义通用的运输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。 - -3. 网络层:为主机之间提供数据传输服务,而像运输层协议那样是为主机中的进程提供服务。网络层把运输层传递下来的报文段或者用户数据报封装成分组。 - -4. 数据链路层:网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为相邻结点之间提供服务。数据链路层把网络层传来的分组封装成帧。 - -5. 物理层:考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。 - -### 3. 数据在各层之间的传递过程 - -在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。 - -路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要运输层和应用层。 - -

    - -### 4. TCP/IP 体系结构 - -它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。 - -现在的 TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。 - -

    - -TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中占用举足轻重的地位。 - -

    - -# 二、物理层 - -## 通信方式 - -1. 单向通信,又称为单工通信; -2. 双向交替通信,又称为半双工通信; -3. 双向同时通信,又称为全双工通信。 - -## 带通调制 - -模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。 - -

    - -## 信道复用技术 - -### 1. 频分复用、时分复用 - -频分复用的所有用户在相同的时间占用不同的频率带宽资源;时分复用的所有用户在不同的时间占用相同的频率带宽资源。 - -使用这两种方式进行通信,在通信的过程中用户会一直占用一部分信道资源。但是由于计算机数据的突发性质,没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。 - -

    - -### 2. 统计时分复用 - -是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。 - -

    - -### 3. 波分复用 - -光的频分复用。由于光的频率很高,因此习惯上用波长而不是频率来表示所使用的光载波。 - -

    - -### 4. 码分复用 - -为每个用户分配 m bit 的码片,并且所有的码片正交,对于任意两个码片 有 - -

    - -为了方便,取 m=8,设码片 为 00011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100。 - -在计算时将 00011011 记作 (-1 -1 -1 +1 +1 -1 +1 +1),可以得到 - -

    - -

    - -其中 的反码。 - -利用上面的式子我们知道,当接收端使用码片 对接收到的数据进行内积运算时,结果为 0 的是其它用户发送的数据,结果为 1 的是用户发送的比特 1,结果为 -1 的是用户发送的比特 0。 - -码分复用需要发送的数据量为原先的 m 倍。 - -

    - -# 三、数据链路层 - -## 三个基本问题 - -### 1. 封装成帧 - -将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。 - -

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

    - -### 3. 差错检测 - -目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。 - -## 点对点信道 - PPP 协议 - -互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议就是用户计算机和 ISP 进行通信时所使用的数据链路层协议。 - -

    - -在 PPP 的帧中 - -- F 字段为帧的定界符 -- A 和 C 字段暂时没有意义 -- FCS 字段是使用 CRC 的检验序列 -- 信息部分的长度不超过 1500 - -

    - -## 局域网的拓扑 - -

    - -## 广播信道- CSMA/CD 协议 * - -在广播信道上,同一时间只能允许一台计算机发送数据。 - -CSMA/CD 表示载波监听多点接入 / 碰撞检测。 - -- **多点接入** :说明这是总线型网络,许多计算机以多点的方式连接到总线上。 - -- **载波监听** :每个站都必须不停地监听信道。在发送前,如果检听信道正在使用,就必须等待。 - -- **碰撞检测** :在发送中,如果监听 到信道已有其它站正在发送数据,就表示发生了碰撞。虽然每一个站在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。 - -

    - -记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 **争用期** 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。 - -当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定,从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。 - -## 扩展局域网 * - -### 1. 在物理层进行扩展 - -使用集线器进行扩展。 - -集线器的主要功能是对接收到的信号进行放大,以扩大网络的传输距离。 - -集线器不能根据 MAC 地址进行转发,而是以广播的方式发送数据帧。 - -集线器是一种共享式的传输设备,意味着同一时刻只能传输一组数据帧。 - -

    - -### 2. 在链路层进行扩展 - -最开始使用的是网桥,它收到一个帧时,根据帧的 MAC 地址,查找网桥中的地址表,确定将帧转发的接口。 - -网桥不是共享式设备,因此性能比集线器这种共享式设备更高。 - -交换机的问世很快就淘汰了网桥,它实质上是一个多接口网桥,而网桥是两接口。交换机的每个接口都能直接与一个主机或者另一个交换机相连,并且一般都工作在全双工方式。 - -交换机具有自学习能力,学习的是交换表的内容,交换表中存储着 MAC 地址到接口的映射。下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 收下之后,查找交换表得到主机 A 映射的接口为 1,因此就把帧发送给主机 A,同时交换机添加主机 B 到接口 3 的映射。 - -

    - -### 3. 虚拟局域网 - -虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息,例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。 - -

    - -## MAC 层 * - -MAC 地址是 6 字节(48 位)的地址,用于唯一标识网络适配器(网卡),一台主机拥有多少个适配器就有多少个 MAC 地址,例如笔记本电脑普遍存在无线网络适配器和有线网络适配器。 - -

    - -- **类型** :标记上层使用的协议; - -- **数据** :长度在 46-1500 之间,如果太小则需要填充; - -- **FCS** :帧检验序列,使用的是 CRC 检验方法; - -- **前同步码** :只是为了计算 FCS 临时加入的,计算结束之后会丢弃。 - -# 四、网络层 * - -## 网际协议 IP 概述 - -因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。 - -使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。 - -

    - -与 IP 协议配套使用的还有三个协议: - -1. 地址解析协议 ARP(Address Resolution Protocol) -2. 网际控制报文协议 ICMP(Internet Control Message Protocol) -3. 网际组管理协议 IGMP(Internet Group Management Protocol) - -

    - -## IP 数据报格式 - -

    - -- **版本** : 有 4(IPv4)和 6(IPv6)两个值; - -- **首部长度** : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为首部固定长度为 20 字节,因此该值最小为 5。如果可选部分的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。 - -- **区分服务** : 用来获得更好的服务,一般情况下不使用。 - -- **总长度** : 包括首部长度和数据部分长度。 - -- **标识** : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。 - -- **片偏移** : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。 - -

    - -- **生存时间** :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。 - -- **协议** :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。 - -- **首部检验和** :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。 - -## IP 地址编址 - -IP 地址的编址方式经历了三个历史阶段: - -1. 分类; -2. 子网划分; -3. 无分类。 - -### 1. 分类 - -由两部分组成,网络号和主机号,其中不同类别具有不同的网络号长度,并且是固定的。 - -IP 地址 ::= {< 网络号 >, < 主机号 >} - -

    - -### 2. 子网划分 - -通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。注意,外部网络看不到子网的存在。 - -IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >} - -要使用子网,必须配置子网掩码。一个 B 类地址的默认子网掩码为 255.255.0.0,如果 B 类地址的子网占两个比特,那么子网掩码为 11111111 11111111 11000000 00000000,也就是 255.255.192.0。 - -### 3. 无分类 - -无分类编址 CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,使用网络前缀和主机号来对 IP 地址进行编码,网络前缀的长度可以根据需要变化。 - -IP 地址 ::= {< 网络前缀号 >, < 主机号 >} - -CIDR 的记法上采用在 IP 地址后面加上网络前缀长度的方法,例如 128.14.35.7/20 表示前 20 位为网络前缀。 - -CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为网络前缀的长度。 - -一个 CIDR 地址块中有很多地址,一个 CIDR 表示的网络就可以表示原来的很多个网络,并且在路由表中只需要一个路由就可以代替原来的多个路由,减少了路由表项的数量。把这种通过使用网络前缀来减少路由表项的方式称为路由聚合,也称为 **构成超网** 。 - -在路由表中的项目由“网络前缀”和“下一跳地址”组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定应该匹配哪一个。 - -## IP 地址和 MAC 地址 - -网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。 - -

    - -## 地址解析协议 ARP - -实现由 IP 地址得到 MAC 地址。 - -

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

    - -## 路由器的结构 - -路由器从功能上可以划分为两大部分:路由选择和分组转发。 - -分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口。 - -

    - -交换结构的交换网络有以下三种实现方式: - -

    - - -## 路由器分组转发流程 - -1. 从数据报的首部提取目的主机的 IP 地址 D,得到目的网络地址 N。(路由表项是网络号而不是 IP 地址,这样做大大减少了路由表条目数量); - -2. 若 N 就是与此路由器直接相连的某个网络地址,则进行直接交付; - -3. 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给表中所指明的下一跳路由器; - -4. 若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器; - -5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器; - -6. 报告转发分组出错。 - -

    - -## 路由选择协议 - -互联网使用的路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。 - -互联网可以划分为许多较小的自治系统 AS,一个 AS 可以使用一种和别的 AS 不同的路由选择协议。 - -可以把路由选择协议划分为两大类: - -1. 内部网关协议 IGP(Interior Gateway Protocol):在 AS 内部使用,如 RIP 和 OSPF。 -2. 外部网关协议 EGP(External Gateway Protocol):在 AS 之间使用,如 BGP。 - -

    - -### 1. 内部网关协议 RIP - -RIP 是一种分布式的基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为 1,跳数最多为 15,超过 15 表示不可达。 - -RIP 按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。 - -距离向量算法: - -1. 对地址为 X 的相邻路由器发来的 RIP 报文,先修改报文中的所有项目,把下一跳字段中的地址改为 X,并把所有的距离字段加 1; -2. 对修改后的 RIP 报文中的每一个项目,进行以下步骤: - - 若原来的路由表中没有目的网络 N,则把该项目添加到路由表中; - - 否则:若下一跳路由器地址是 X,则把收到的项目替换原来路由表中的项目;否则:若收到的项目中的距离 d 小于路由表中的距离,则进行更新(例如原始路由表项为 Net2, 5, P,新表项为 Net2, 4, X,则更新);否则什么也不做。 -3. 若 3 分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离置为 16。 - -RIP 协议实现简单,开销小,但是 RIP 能使用的最大距离为 15,限制了网络的规模。并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器。 - -### 2. 内部网关协议 OSPF - -开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。 - -开放表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra 提出的最短路径算法 SPF。 - -OSPF 具有以下特点: - -- 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。 -- 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。 -- 只有当链路状态发生变化时,路由器才会发送信息。 - -所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。 - -### 3. 外部网关协议 BGP - -AS 之间的路由选择很困难,主要是互联网规模很大。并且各个 AS 内部使用不同的路由选择协议,就无法准确定义路径的度量。并且 AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。 - -BGP 只能寻找一条比较好的路由,而不是最佳路由。它采用路径向量路由选择协议。 - -每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。 - -

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

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

    - -## 分组网间探测 PING - -PING 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。 - -PING 的过程: - -1. PING 同一个网段的主机:查找目的主机的 MAC 地址,然后直接交付。如果无法查找到 MAC 地址,就要进行一次 ARP 请求。 -2. PING 不同网段的主机:发送到网关让其进行转发。同样要发送到网关也需要通过查找网关的 MAC 地址,根据 MAC 地址进行转发。 - -## IP 多播 - -在一对多的通信中,多播不需要将分组复制多份,从而大大节约网络资源。 - -

    - -## 虚拟专用网 VPN - -由于 IP 地址的紧缺,一个机构能申请到的 IP 地址数往往远小于本机构所拥有的主机数。并且一个机构并不需要把所有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的 IP 地址(专用地址)。 - -有三个专用地址块: - -1. 10.0.0.0 \~ 10.255.255.255 -2. 172.16.0.0 \~ 172.31.255.255 -3. 192.168.0.0 \~ 192.168.255.255 - -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 - -专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。 - -在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把运输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。 - -

    - -# 五、运输层 * - -网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。 - -运输层提供了应用进程间的逻辑通信。运输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看见的好像在两个运输层实体之间有一条端到端的逻辑通信信道。 - -## UDP 和 TCP 的特点 - -- 用户数据包协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部)。 - -- 传输控制协议 TCP(Transmission Control Protocol) 是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块) - -## UDP 首部格式 - -

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

    - -- **序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。 - -- **确认号** :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。 - -- **数据偏移** :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。 - -- **确认 ACK** :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。 - -- **同步 SYN** :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。 - -- **终止 FIN** :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放运输连接。 - -- **窗口** :窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。 - -## TCP 的三次握手 - -

    - -假设 A 为客户端,B 为服务器端。 - -1. 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。 - -2. A 向 B 发送连接请求报文段,SYN=1,ACK=0,选择一个初始的序号 x。 - -3. B 收到连接请求报文段,如果同意建立连接,则向 A 发送连接确认报文段,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。 - -4. A 收到 B 的连接确认报文段后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。 -5. B 收到 A 的确认后,连接建立。 - - -## TCP 的四次挥手 - -

    - -以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。 - -1. A 发送连接释放报文段,FIN=1; - -2. B 收到之后发出确认,此时 TCP 属于半关闭状态,B 能向 A 发送数据但是 A 不能向 B 发送数据; - -3. 当 B 要不再需要连接时,发送连接释放请求报文段,FIN=1; - -4. A 收到后发出确认,此时连接释放。 - -### TIME_WAIT - -客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间。这么做有两个理由: - -1. 确保最后一个确认报文段能够到达。如果 B 没收到 A 发送来的确认报文段,那么就会重新发送连接释放请求报文段,A 等待一段时间就是为了处理这种情况的发生。 - -2. 可能存在“已失效的连接请求报文段”,为了防止这种报文段出现在本次连接之外,需要等待一段时间。 - -## TCP 滑动窗口 - -

    - -窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。 - -发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。 - -接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 32, 34, 35},其中 {31, 32} 按序到达,而 {34, 35} 就不是,因此只对字节 32 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。 - -## TCP 可靠传输 - -TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。 - -一个报文段从发送再到接收到确认所经过的时间称为往返时间 RTT,加权平均往返时间 RTTs 计算如下: - -

    - -超时时间 RTO 应该略大于 RTTs,TCP 使用的超时时间计算如下: - -

    - -其中 RTTd 为偏差。 - -## TCP 流量控制 - -流量控制是为了控制发送方发送速率,保证接收方来得及接收。 - -接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。例如将窗口字段设置为 0,则发送方不能发送数据。 - -## TCP 拥塞控制 - -如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接受,而拥塞控制是为了降低整个网络的拥塞程度。 - -

    - -TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。发送方需要维护有一个叫做拥塞窗口(cwnd)的状态变量。注意拥塞窗口与发送方窗口的区别,拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。 - -为了便于讨论,做如下假设: - -1. 接收方有足够大的接收缓存,因此不会发生流量控制; -2. 虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。 - -

    - -### 1. 慢开始与拥塞避免 - -发送的最初执行慢开始,令 cwnd=1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段为:2、4、8 ... - -注意到慢开始每个轮次都将 cwnd 加倍,这样会让 cwnd 增长速度非常快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能也就更高。设置一个慢开始门限 ssthresh,当 cwnd >= ssthresh 时,进入拥塞避免,每个轮次只将 cwnd 加 1。 - -如果出现了超时,则令 ssthresh = cwnd / 2,然后重新执行慢开始。 - -### 2. 快重传与快恢复 - -在接收方,要求每次接收到报文段都应该发送对已收到有序报文段的确认,例如已经接收到 M1 和 M2,此时收到 M4,应当发送对 M2 的确认。 - -在发送方,如果收到三个重复确认,那么可以确认下一个报文段丢失,例如收到三个 M2 ,则 M3 丢失。此时执行快重传,立即重传下一个报文段。 - -在这种情况下,只是丢失个别报文段,而不是网络拥塞,因此执行快恢复,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此时直接进入拥塞避免。 - -

    - -# 六、应用层 * - -## 域名系统 DNS - -把主机名解析为 IP 地址。 - -被设计成分布式系统。 - -### 1. 层次结构 - -一个域名由多个层次构成,从上层到下层分别为顶级域名、二级域名、三级域名以及四级域名。所有域名可以画成一颗域名树。 - -

    - -

    - -域名服务器可以分为以下四类: - -1. 根域名服务器:解析顶级域名; -2. 顶级域名服务器:解析二级域名; -3. 权限域名服务器:解析区内的域名; -4. 本地域名服务器:也称为默认域名服务器。可以在其中配置高速缓存。 - -区和域的概念不同,可以在一个域中划分多个区。图 b 在域 abc.com 中划分了两个区:abc.com 和 y.abc.com - -

    - -因此就需要两个权限域名服务器: - -

    - -### 2. 解析过程 - -主机向本地域名服务器解析的过程采用递归,而本地域名服务器向其它域名服务器解析可以使用递归和迭代两种方式。 - -迭代的方式下,本地域名服务器向一个域名服务器解析请求解析之后,结果返回到本地域名服务器,然后本地域名服务器继续向其它域名服务器请求解析;而递归地方式下,结果不是直接返回的,而是继续向前请求解析,最后的结果才会返回。 - -

    - -## 文件传输协议 FTP - -FTP 在运输层使用 TCP,并且需要建立两个并行的 TCP 连接:控制连接和数据连接。控制连接在整个会话期间一直保持打开,而数据连接在数据传送完毕之后就关闭。控制连接使用端口号 21,数据连接使用端口号 20。 - -

    - -## 远程终端协议 TELNET - -TELNET 用于登录到远程主机上,并且远程主机上的输出也会返回。 - -TELNET 可以适应许多计算机和操作系统的差异,例如不同操作系统系统的换行符定义。 - -## 万维网 WWW - -[HTTP](https://github.com/CyC2018/InterviewNotes/blob/master/notes/HTTP.md) - -## 电子邮件协议 - -一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件发送协议和读取协议。其中发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。 - -

    - -### 1. POP3 - -POP3 的特点是只要用户从服务器上读取了邮件,就把该邮件删除。 - -### 2. IMAP - -IMAP 协议中客户端和服务器上的邮件保持同步,如果不去手动删除邮件,那么服务器上的邮件也不会被删除。IMAP 这种做法可以让用户随时随地去访问服务器上的邮件。IMAP 协议也支持创建自定义的文件夹。 - -### 3. SMTP - -SMTP 只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。MIME 并没有改动或者取代 SMTP,而是增加邮件主题的结构,定义了非 ASCII 码的编码规则。 - -

    - -## 动态主机配置协议 DHCP - -DHCP 提供了即插即用的连网方式,用户不再需要去手动配置 IP 地址等信息。 - -DHCP 配置的内容不仅是 IP 地址,还包括子网掩码、默认路由器 IP 地址、域名服务器的 IP 地址。 - -工作方式如下:需要 IP 地址的主机广播发送 DHCP 发现报文(将目的地址置为全 1,即 255.255.255.255:67,源地址设置为全 0,即 0.0.0.0:68),DHCP 服务器收到发现报文之后,则在 IP 地址池中取一个地址,发送 DHCP 提供报文给该主机。 - -## 点对点传输 P2P - -把某个文件分发的所有对等集合称为一个洪流。文件的数据单元称为文件块,它的大小是固定的。一个新的对等方加入某个洪流,一开始并没有文件块,但是能够从其它对等方中逐渐地下载到一些文件块,与此同时,它也为别的对等方上传一些文件块。 - -每个洪流都有一个基础设施,称为追踪器。当一个对等方加入洪流时,必须向追踪器登记,并周期性地通知追踪器它仍在洪流中。可以在任何时间加入和退出某个洪流。 - -一个新的对等方加入洪流时,追踪器会随机从洪流中选择若干个对等方,并让新对等方与这些对等方建立连接,把这些对等方称为相邻对等方。接收和发送文件块都是在相邻对等方中进行。 - -当一个对等方需要很多文件块时,通过使用最稀有优先的策略来取得文件块,也就是一个文件块在相邻对等方中副本最少,那么就优先请求这个文件块。 - -当很多对等方向同一个对等方请求文件块时,该对等方优先选择以最高速率向其发送文件块的对等方。 - -P2P 是一个分布式系统,任何时候都有对等方加入或者退出。使用分布式散列表 DHT,可以查找洪流中的资源和 IP 地址映射。 - -## Web 页面请求过程 - -### 1. DHCP 配置主机信息 - -1. 假设主机最开始没有 IP 地址以及其它信息,那么就需要先使用 DHCP 来获取。 - -2. 主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口 68 的 UDP 报文段中。 - -3. 该报文段则被放入在一个具有广播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 数据报中。 - -4. 该数据报则被放置在 MAC 帧中,该帧具有目的地址 FF:FF:FF:FF:FF:FF,将广播到与交换机连接的所有设备。 - -5. 连接在交换机的 DHCP 服务器收到广播帧之后,不断地向上分解得到 IP 数据报、UDP 报文段、DHCP 请求报文,之后生成 DHCP ACK 报文,该报文包含以下信息:IP 地址、DNS 服务器的 IP 地址、默认网关路由器的 IP 地址和子网掩码。该报文被放入 UDP 报文段中,UDP 报文段有被放入 IP 数据报中,最后放入 MAC 帧中。 - -8. 该帧的目的地址是请求主机的 MAC 地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了 MAC 地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。 - -9. 主机收到该帧后,不断分解得到 DHCP 报文。之后就配置它的 IP 地址、子网掩码和 DNS 服务器的 IP 地址,并在其 IP 转发表中安装默认网关。 - -### 2. ARP 解析 MAC 地址 - -1. 主机通过浏览器生成一个 TCP 套接字,套接字向 HTTP 服务器发送 HTTP 请求。为了生成该套接字,主机需要知道网站的域名对应的 IP 地址。 - -2. 主机生成一个 DNS 查询报文,该报文具有 53 号端口,因为 DNS 服务器的端口号是 53。 - -3. 该 DNS 查询报文被放入目的地址为 DNS 服务器 IP 地址的 IP 数据报中。 - -4. 该 IP 数据报被放入一个以太网帧中,该帧将发送到网关路由器。 - -5. DHCP 过程只知道网关路由器的 IP 地址,为了获取网关路由器的 MAC 地址,需要使用 ARP 协议。 - -6. 主机生成一个包含目的地址为网关路由器 IP 地址的 ARP 查询报文,将该 ARP 查询报文放入一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器。 - -7. 网关路由器接收到该帧后,不断向上分解得到 ARP 报文,发现其中的 IP 地址与其接口的 IP 地址匹配,因此就发送一个 ARP 回答报文,包含了它的 MAC 地址,发回给主机。 - -### 3. DNS 解析域名 - -1. 知道了网关路由器的 MAC 地址之后,就可以继续 DNS 的解析过程了。 - -2. 网关路由器接收到包含 DNS 查询报文的以太网帧后,抽取出 IP 数据报,并根据转发表决定该 IP 数据报应该转发的路由器。 - -3. 因为路由器具有内部网关协议(RIP、OSPF)和外部网关协议(BGP)这两种路由选择协议,因此路由表中已经配置了网关路由器到达 DNS 服务器的路由表项。 - -4. 到达 DNS 服务器之后,DNS 服务器抽取出 DNS 查询报文,并在 DNS 数据库中查找待解析的域名。 - -5. 找到 DNS 记录之后,发送 DNS 回答报文,将该回答报文放入 UDP 报文段中,然后放入 IP 数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。 - -### 4. HTTP 请求页面 - -1. 有了 HTTP 服务器的 IP 地址之后,主机就能够生成 TCP 套接字,该套接字将用于向 Web 服务器发送 HTTP GET 报文。 - -2. 在生成 TCP 套接字之前,必须先与 HTTP 服务器进行三次握手来建立连接。生成一个具有目的端口 80 的 TCP SYN 报文段,并向 HTTP 服务器发送该报文段。 - -3. HTTP 服务器收到该报文段之后,生成 TCP SYNACK 报文段,发回给主机。 - -4. 连接建立之后,浏览器生成 HTTP GET 报文,并交付给 HTTP 服务器。 - -5. HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将 Web 页面内容放入报文主体中,发回给主机。 - -6. 浏览器收到 HTTP 响应报文后,抽取出 Web 页面内容,之后进行渲染,显示 Web 页面。 - -## 常用端口 - -| 应用层协议 | 端口号 | 运输层协议 | -| -- | -- | -- | -| DNS | 53 | UDP | -| FTP | 控制连接 21,数据连接 20 | TCP | -| TELNET | 23 | TCP | -| DHCP | 67 68 | UDP | -| HTTP | 80 | TCP | -| SMTP | 25 | TCP | -| POP3 | 110 | TCP | -| IMAP | 143 | TCP | - -# 参考资料 - -- 计算机网络 第七版 -- 计算机网络 自顶向下方法 diff --git a/notes/设计模式.md b/notes/设计模式.md deleted file mode 100644 index 13815198..00000000 --- a/notes/设计模式.md +++ /dev/null @@ -1,1800 +0,0 @@ - -* [一、前言](#一前言) -* [二、设计模式概念](#二设计模式概念) -* [三、策略模式](#三策略模式) -* [三、观察者模式](#三观察者模式) -* [四、装饰模式](#四装饰模式) -* [五、简单工厂](#五简单工厂) -* [六、工厂方法模式](#六工厂方法模式) -* [七、抽象工厂模式](#七抽象工厂模式) -* [八、单例模式](#八单例模式) -* [九、命令模式](#九命令模式) -* [十、适配器模式](#十适配器模式) -* [十、外观模式](#十外观模式) -* [十一、模板方法模式](#十一模板方法模式) -* [十二、迭代器模式](#十二迭代器模式) -* [十三、组合模式](#十三组合模式) -* [十四、状态模式](#十四状态模式) -* [十五、代理模式](#十五代理模式) -* [十六、MVC](#十六mvc) -* [十七、与设计模式相处](#十七与设计模式相处) - - - -# 一、前言 - -文中涉及一些 UML 类图,为了更好地理解,可以先阅读 [UML 类图](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E6%80%9D%E6%83%B3.md#%E7%AC%AC%E4%B8%89%E7%AB%A0-uml)。 - -需要说明的一点是,文中的 UML 类图和规范的 UML 类图不大相同,其中组合关系使用以下箭头表示: - -

    - -# 二、设计模式概念 - -设计模式不是代码,而是解决问题的方案,学习现有的设计模式可以做到经验复用。 - -拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。 - -# 三、策略模式 - -## 模式定义 - -定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 - -## 问题描述 - -设计不同种类的鸭子拥有不同的叫声和飞行方式。 - -## 简单实现方案 - -使用继承的解决方案如下,这种方案代码无法复用,如果两个鸭子类拥有同样的飞行方式,就有两份重复的代码。 - -

    - -## 设计原则 - -**封装变化** :在这里变化的是鸭子叫和飞行的行为方式。 - -**针对接口编程,而不是针对实现编程** :变量声明的类型为父类,而不是具体的某个子类。父类中的方法实现不在父类,而是在各个子类。程序在运行时可以动态改变变量所指向的子类类型。 - -运用这一原则,将叫和飞行的行为抽象出来,实现多种不同的叫和飞行的子类,让子类去实现具体的叫和飞行方式。 - -

    - -**多用组合,少用继承** :组合也就是 HAS-A 关系,通过组合,可以在运行时动态改变实现,只要通过改变父类对象具体指向哪个子类即可。而继承就不能做到这些,继承体系在创建类时就已经确定。 - -运用这一原则,在 Duck 类中组合 FlyBehavior 和 QuackBehavior 类,performQuack() 和 performFly() 方法委托给这两个类去处理。通过这种方式,一个 Duck 子类可以根据需要去初始化 FlyBehavior 和 QuackBehavior 的子类对象,并且也可以动态地进行改变。 - -

    - -## 问题的解决方案类图 - -(可放大网页查看) - -

    - -## 代码实现 - -```java -public abstract class Duck { - FlyBehavior flyBehavior; - QuackBehavior quackBehavior; - - public Duck(){ - } - - public void performFly(){ - flyBehavior.fly(); - } - - public void setFlyBehavior(FlyBehavior fb){ - flyBehavior = fb; - } - - public void performQuack(){ - quackBehavior.quack(); - } - - public void setQuackBehavior(QuackBehavior qb){ - quackBehavior = qb; - } -} -``` -```java -public class MallardDuck extends Duck{ - public MallardDuck(){ - flyBehavior = new FlyWithWings(); - quackBehavior = new Quack(); - } -} -``` -```java -public interface FlyBehavior { - void fly(); -} -``` -```java -public class FlyNoWay implements FlyBehavior{ - @Override - public void fly() { - System.out.println("FlyBehavior.FlyNoWay"); - } -} -``` -```java -public class FlyWithWings implements FlyBehavior{ - @Override - public void fly() { - System.out.println("FlyBehavior.FlyWithWings"); - } -} -``` -```java -public interface QuackBehavior { - void quack(); -} -``` -```java -public class Quack implements QuackBehavior{ - @Override - public void quack() { - System.out.println("QuackBehavior.Quack"); - } -} -``` -```java -public class MuteQuack implements QuackBehavior{ - @Override - public void quack() { - System.out.println("QuackBehavior.MuteQuack"); - } -} -``` -```java -public class Squeak implements QuackBehavior{ - @Override - public void quack() { - System.out.println("QuackBehavior.Squeak"); - } -} -``` -```java -public class MiniDuckSimulator { - public static void main(String[] args) { - Duck mallardDuck = new MallardDuck(); - mallardDuck.performQuack(); - mallardDuck.performFly(); - mallardDuck.setFlyBehavior(new FlyNoWay()); - mallardDuck.performFly(); - } -} -``` -执行结果 -```html -QuackBehavior.Quack -FlyBehavior.FlyWithWings -FlyBehavior.FlyNoWay -``` - -# 三、观察者模式 - -## 模式定义 - -定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 - -

    - -## 模式类图 - -主题具有注册和移除观察者、并通知所有注册者的功能,主题是通过维护一张观察者列表来实现这些操作的。 - -观察者拥有一个主题对象的引用,因为注册、移除观察者功能,还有数据都在主题当中,必须通过操作主题才能完成相应操作。 - -

    - -## 问题描述 - -天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 - -## 问题的解决方案类图 - -

    - -## 设计原则 - -为交互对象之间的松耦合设计而努力:当两个对象之间松耦合,它们依然可以交互,但是不清楚彼此的细节。由于松耦合的两个对象之间互相依赖程度很低,因此系统具有弹性,能够应对变化。 - -## 代码实现 - -```java -public interface Subject { - public void resisterObserver(Observer o); - public void removeObserver(Observer o); - public void notifyObserver(); -} -``` -```java - -public class WeatherData implements Subject { - private List observers; - private float temperature; - private float humidity; - private float pressure; - - public WeatherData() { - observers = new ArrayList<>(); - } - - @Override - public void resisterObserver(Observer o) { - observers.add(o); - } - - @Override - public void removeObserver(Observer o) { - int i = observers.indexOf(o); - if (i >= 0) { - observers.remove(i); - } - } - - @Override - public void notifyObserver() { - for (Observer o : observers) { - o.update(temperature, humidity, pressure); - } - } - - public void setMeasurements(float temperature, float humidity, float pressure) { - this.temperature = temperature; - this.humidity = humidity; - this.pressure = pressure; - notifyObserver(); - } -} -``` -```java -public interface Observer { - public void update(float temp, float humidity, float pressure); -} -``` -```java -public class CurrentConditionsDisplay implements Observer { - private Subject weatherData; - - public CurrentConditionsDisplay(Subject weatherData) { - this.weatherData = weatherData; - weatherData.resisterObserver(this); - } - - @Override - public void update(float temp, float humidity, float pressure) { - System.out.println("CurrentConditionsDisplay.update:" + temp + " " + humidity + " " + pressure); - } -} -``` -```java -public class StatisticsDisplay implements Observer { - private Subject weatherData; - - public StatisticsDisplay(Subject weatherData) { - this.weatherData = weatherData; - weatherData.resisterObserver(this); - } - - @Override - public void update(float temp, float humidity, float pressure) { - System.out.println("StatisticsDisplay.update:" + temp + " " + humidity + " " + pressure); - } -} -``` -```java -public class WeatherStation { - public static void main(String[] args) { - WeatherData weatherData = new WeatherData(); - CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay(weatherData); - StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherData); - - weatherData.setMeasurements(0, 0, 0); - weatherData.setMeasurements(1, 1, 1); - } -} -``` -执行结果 -```html -CurrentConditionsDisplay.update:0.0 0.0 0.0 -StatisticsDisplay.update:0.0 0.0 0.0 -CurrentConditionsDisplay.update:1.0 1.0 1.0 -StatisticsDisplay.update:1.0 1.0 1.0 -``` - -# 四、装饰模式 - -## 问题描述 - -设计不同种类的饮料,饮料可以添加配料,比如可以添加牛奶,并且支持动态添加新配料。每增加一种配料,该饮料的价格就会增加,要求计算一种饮料的价格。 - -## 模式定义 - -动态地将责任附加到对象上。在扩展功能上,装饰者提供了比继承更有弹性的替代方案。 - -下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 - -

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

    - -## 问题的解决方案类图 - -

    - -## 设计原则 - -类应该对扩展开放,对修改关闭:也就是添加新功能时不需要修改代码。在本章问题中该原则体现在,饮料可以动态添加新的配料,而不需要去修改饮料的代码。观察则模式也符合这个原则。不可能把所有的类设计成都满足这一原则,应当把该原则应用于最有可能发生改变的地方。 - -## Java I/O 中的装饰者模式 - -

    - -## 代码实现 - -```java -public interface Beverage { - public double cost(); -} -``` -```java -public class HouseBlend implements Beverage{ - @Override - public double cost() { - return 1; - } -} -``` -```java -public class DarkRoast implements Beverage{ - @Override - public double cost() { - return 1; - } -} -``` -```java -public abstract class CondimentDecorator implements Beverage{ - protected Beverage beverage; -} -``` -```java -public class Mocha extends CondimentDecorator { - - public Mocha(Beverage beverage) { - this.beverage = beverage; - } - - @Override - public double cost() { - return 1 + beverage.cost(); - } -} -``` -```java -public class Milk extends CondimentDecorator { - - public Milk(Beverage beverage) { - this.beverage = beverage; - } - - @Override - public double cost() { - return 1 + beverage.cost(); - } -} -``` -```java -public class StartbuzzCoffee { - public static void main(String[] args) { - Beverage beverage = new HouseBlend(); - beverage = new Mocha(beverage); - beverage = new Milk(beverage); - System.out.println(beverage.cost()); - } -} -``` - -输出 - -```html -3.0 -``` - -# 五、简单工厂 - -## 问题描述 - -Pizza 类有很多子类,要求根据不同的情况用不同的子类实例化一个 Pizza 对象。 - -## 模式定义 - -简单工厂不是设计模式,更像是一种编程习惯。它把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个子类来实例化。 - -这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。因为客户类往往有多个,如果不使用简单工厂,所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 - -

    - -## 问题的解决方案类图 - -

    - -## 代码实现 - -```java -public interface Pizza { - public void make(); -} -``` - -```java -public class CheesePizza implements Pizza{ - @Override - public void make() { - System.out.println("CheesePizza"); - } -} -``` - -```java -public class GreekPizza implements Pizza{ - @Override - public void make() { - System.out.println("GreekPizza"); - } -} -``` - -```java -public class SimplePizzaFactory { - public Pizza createPizza(String type) { - if (type.equals("cheese")) { - return new CheesePizza(); - } else if (type.equals("greek")) { - return new GreekPizza(); - } else { - throw new UnsupportedOperationException(); - } - } -} -``` - -```java -public class PizzaStore { - public static void main(String[] args) { - SimplePizzaFactory simplePizzaFactory = new SimplePizzaFactory(); - Pizza pizza = simplePizzaFactory.createPizza("cheese"); - pizza.make(); - } -} -``` - -运行结果 - -```java -CheesePizza -``` - -# 六、工厂方法模式 - -## 问题描述 - -每个地区的 PizzaStore 卖的 Pizza 虽然种类相同,但是都有自己的风味。一个客户点了纽约的 cheese 种类的 Pizza 和在芝加哥点的相同种类的 Pizza 是不同的。要求设计出满足条件的 PizzaStore。 - -## 模式定义 - -定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化推迟到子类。 - -## 模式类图 - -在简单工厂中,创建对象的是另一个类,而在工厂方法中,是由子类来创建对象。 - -下图中,Creator 有一个 anOperation() 方法,这个方法需要用到一组产品对象,这组产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 - -

    - -## 问题的解决方案类图 - -PizzaStore 有 orderPizza() 方法,顾客可以用它来下单。下单之后需要先使用 createPizza() 来制作 Pizza,这里的 createPizza() 就是 factoryMethod(),不同的 PizzaStore 子类实现了不同的 createPizza()。 - -

    - -## 设计原则 - -依赖倒置原则:要依赖抽象,不要依赖具体类。听起来像是针对接口编程,不针对实现编程,但是这个原则说明了:不能让高层组件依赖底层组件,而且,不管高层或底层组件,两者都应该依赖于抽象。例如,下图中 Pizza 是抽象类,PizzaStore 和 Pizza 子类都依赖于 Pizza 这个抽象类。 - -

    - -## 代码实现 - -```java -public interface Pizza { - public void make(); -} -``` -```java -public interface PizzaStore { - public Pizza orderPizza(String item); -} -``` -```java -public class NYStyleCheesePizza implements Pizza{ - @Override - public void make() { - System.out.println("NYStyleCheesePizza is making.."); - } -} -``` -```java -public class NYStyleVeggiePizza implements Pizza { - @Override - public void make() { - System.out.println("NYStyleVeggiePizza is making.."); - } -} -``` -```java -public class ChicagoStyleCheesePizza implements Pizza{ - @Override - public void make() { - System.out.println("ChicagoStyleCheesePizza is making.."); - } -} -``` -```java -public class ChicagoStyleVeggiePizza implements Pizza{ - @Override - public void make() { - System.out.println("ChicagoStyleVeggiePizza is making.."); - } -} -``` -```java -public class NYPizzaStore implements PizzaStore { - @Override - public Pizza orderPizza(String item) { - Pizza pizza = null; - if (item.equals("cheese")) { - pizza = new NYStyleCheesePizza(); - } else if (item.equals("veggie")) { - pizza = new NYStyleVeggiePizza(); - } else { - throw new UnsupportedOperationException(); - } - pizza.make(); - return pizza; - } -} -``` -```java -public class ChicagoPizzaStore implements PizzaStore { - @Override - public Pizza orderPizza(String item) { - Pizza pizza = null; - if (item.equals("cheese")) { - pizza = new ChicagoStyleCheesePizza(); - } else if (item.equals("veggie")) { - pizza = new ChicagoStyleVeggiePizza(); - } else { - throw new UnsupportedOperationException(); - } - pizza.make(); - return pizza; - } -} -``` -```java -public class PizzaTestDrive { - public static void main(String[] args) { - PizzaStore nyStore = new NYPizzaStore(); - nyStore.orderPizza("cheese"); - PizzaStore chicagoStore = new ChicagoPizzaStore(); - chicagoStore.orderPizza("cheese"); - } -} -``` - -运行结果 - -```html -NYStyleCheesePizza is making.. -ChicagoStyleCheesePizza is making.. -``` - -# 七、抽象工厂模式 - -## 模式定义 - -提供一个接口,用于创建 **相关的对象家族** 。 - -## 模式类图 - -抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂模式只是用于创建一个对象,这和抽象工厂模式有很大不同。 - -抽象工厂模式用到了工厂模式来创建单一对象,在类图左部,AbstractFactory 中的 CreateProductA 和 CreateProductB 方法都是让子类来实现,这两个方法单独来看就是在创建一个对象,这符合工厂模式的定义。 - -至于创建对象的家族这一概念是在 Client 体现,Client 要通过 AbstractFactory 同时调用两个方法来创建出两个对象,在这里这两个对象就有很大的相关性,Client 需要同时创建出这两个对象。 - -从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂模式使用了继承。 - -

    - -## 解决方案类图 - -

    - -## 代码实现 - -```java -public interface Dough { - public String doughType(); -} -``` -```java -public class ThickCrustDough implements Dough{ - - @Override - public String doughType() { - return "ThickCrustDough"; - } -} -``` -```java -public class ThinCrustDough implements Dough { - @Override - public String doughType() { - return "ThinCrustDough"; - } -} -``` -```java -public interface Sauce { - public String sauceType(); -} -``` -```java -public class MarinaraSauce implements Sauce { - @Override - public String sauceType() { - return "MarinaraSauce"; - } -} -``` -```java -public class PlumTomatoSauce implements Sauce { - @Override - public String sauceType() { - return "PlumTomatoSauce"; - } -} -``` -```java -public interface PizzaIngredientFactory { - public Dough createDough(); - public Sauce createSauce(); -} -``` -```java -public class NYPizzaIngredientFactory implements PizzaIngredientFactory{ - @Override - public Dough createDough() { - return new ThickCrustDough(); - } - - @Override - public Sauce createSauce() { - return new MarinaraSauce(); - } -} -``` -```java -public class ChicagoPizzaIngredientFactory implements PizzaIngredientFactory{ - @Override - public Dough createDough() { - return new ThinCrustDough(); - } - - @Override - public Sauce createSauce() { - return new PlumTomatoSauce(); - } -} -``` -```java -public class NYPizzaStore { - private PizzaIngredientFactory ingredientFactory; - - public NYPizzaStore() { - ingredientFactory = new NYPizzaIngredientFactory(); - } - - public void makePizza() { - Dough dough = ingredientFactory.createDough(); - Sauce sauce = ingredientFactory.createSauce(); - System.out.println(dough.doughType()); - System.out.println(sauce.sauceType()); - } -} -``` -```java -public class NYPizzaStoreTestDrive { - public static void main(String[] args) { - NYPizzaStore nyPizzaStore = new NYPizzaStore(); - nyPizzaStore.makePizza(); - } -} -``` - -运行结果 - -```html -ThickCrustDough -MarinaraSauce -``` - -# 八、单例模式 - -## 模式定义 - -确保一个类只有一个实例,并提供了一个全局访问点。 - -## 模式类图 - -使用一个私有构造器、一个私有静态变量以及一个公有静态函数来实现。 - -私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 - -

    - -## 懒汉式-线程不安全 - -以下实现中,私有静态变量 uniqueInstance 被延迟化实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance,从而节约资源。 - -这个实现在多线程环境下是不安全的,如果多个线程能够同时进入`if(uniqueInstance == null)` ,那么就会多次实例化 uniqueInstance。 - -```java -public class Singleton { - - private static Singleton uniqueInstance; - - private Singleton() { - } - - public static Singleton getUniqueInstance() { - if (uniqueInstance == null) { - uniqueInstance = new Singleton(); - } - return uniqueInstance; - } -} -``` - -## 懒汉式-线程安全 - -只需要对 `getUniqueInstance()` 方法加锁,那么在一个时间点只能有一个线程能够进入该方法,从而避免了对 uniqueInstance 进行多次实例化的问题。 - -但是这样有一个问题,就是当一个线程进入该方法之后,其它线程试图进入该方法都必须等待,因此性能上有一定的损耗。 - -```java -public static synchronized Singleton getUniqueInstance() { - if (uniqueInstance == null) { - uniqueInstance = new Singleton(); - } - return uniqueInstance; -} -``` - -## 饿汉式-线程安全 - -线程不安全问题主要是由于 uniqueInstance 被实例化了多次,如果 uniqueInstance 采用直接实例化的话,就不会被实例化多次,也就不会产生线程不安全问题。但是直接实例化的方式也丢失了延迟实例化带来的节约资源的优势。 - -```java -private static Singleton uniqueInstance = new Singleton(); -``` - -## 双重校验锁-线程安全 - -uniqueInstance 只需要被实例化一次,之后就可以直接使用了。加锁操作只需要对实例化那部分的代码进行。也就是说,只有当 uniqueInstance 没有被实例化时,才需要进行加锁。 - -双重校验锁先判断 uniqueInstance 是否已经被初始化了,如果没有被实例化,那么才对实例化语句进行加锁。 - -```java -public class Singleton { - - private volatile static Singleton uniqueInstance; - - private Singleton() { - } - - public static Singleton getUniqueInstance() { - if (uniqueInstance == null) { - synchronized (Singleton.class) { - if (uniqueInstance == null) { - uniqueInstance = new Singleton(); - } - } - } - return uniqueInstance; - } -} -``` - -考虑下面的实现,也就是只使用了一个 if 语句。在 uniqueInstance == null 的情况下,如果两个线程同时执行 if 语句,那么两个线程就会同时进入 if 语句块内。虽然在 if 语句块内有加锁操作,但是两个线程都会执行`uniqueInstance = new Singleton();`这条语句,只是早晚的问题,也就是说会进行两次实例化,从而产生了两个实例。因此必须使用双重校验锁,也就是需要使用两个 if 判断。 - -```java -if (uniqueInstance == null) { - synchronized (Singleton.class) { - uniqueInstance = new Singleton(); - } -} -``` - -# 九、命令模式 - -## 问题描述 - -设计一个遥控器,它有很多按钮,每个按钮可以发起一个命令,命令会让一个家电完成相应操作。有非常多的家电,并且之后会增加家电。 - -

    - -有非常多的家电,并且之后会增加家电。 - -

    - -## 模式定义 - -将命令封装成对象,以便使用不同的命令来参数化其它对象。 - -## 问题的解决方案类图 - -- RemoteControl 是遥控器,它可以为每个按钮设置命令对象,并且执行命令。 - -- Command 是命令对象。 - -- Light(电灯)是命令真正的执行者。 - -- RemoteLoader 是客户端,应该注意它与 RemoteControl 的区别。因为 RemoteControl 不能主动地调用自身的方法,因此也就不能当成是客户端。客户端好比人,只有人才能去真正去使用遥控器。 - -

    - -## 模式类图 - -

    - -## 代码实现 - -```java -public interface Command { - public void execute(); -} -``` - -```java -public class Light { - - public void on() { - System.out.println("Light is on!"); - } - - public void off() { - System.out.println("Light is off!"); - } -} -``` - -```java -public class LightOnCommand implements Command{ - Light light; - - public LightOnCommand(Light light) { - this.light = light; - } - - @Override - public void execute() { - light.on(); - } -} -``` - -```java -/** - * 遥控器类 - */ -public class SimpleRemoteControl { - Command slot; - - public SimpleRemoteControl() { - - } - - public void setCommand(Command command) { - this.slot = command; - } - - public void buttonWasPressed() { - slot.execute(); - } - -} -``` - -```java -/** - * 客户端 - */ -public class RemoteLoader { - public static void main(String[] args) { - SimpleRemoteControl remote = new SimpleRemoteControl(); - Light light = new Light(); - LightOnCommand lightOnCommand = new LightOnCommand(light); - remote.setCommand(lightOnCommand); - remote.buttonWasPressed(); - } -} -``` - -输出 - -```html -Light is on! -``` - -# 十、适配器模式 - -## 模式定义 - -将一个类的接口,转换为客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。 - -

    - -## 模式类图 - -适配器(Adapter)组合一个适配者(Adaptee),Adapter 把操作委托给 Adaptee。 - -

    - -## 问题描述 - -鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。 - -要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充鸭子! - -## 问题的解决方案类图 - -

    - -## 代码实现 - -```java -public interface Duck { - public void quack(); -} -``` - -```java -public interface Turkey { - public void gobble(); -} -``` - -```java -public class WildTurkey implements Turkey{ - @Override - public void gobble() { - System.out.println("gobble!"); - } -} -``` - -```java -public class TurkeyAdapter implements Duck{ - Turkey turkey; - - public TurkeyAdapter(Turkey turkey) { - this.turkey = turkey; - } - - @Override - public void quack() { - turkey.gobble(); - } -} -``` - -```java -public class DuckTestDrive { - public static void main(String[] args) { - Turkey turkey = new WildTurkey(); - Duck duck = new TurkeyAdapter(turkey); - duck.quack(); - } -} -``` - -运行结果 - -```html -gobble! -``` - -# 十、外观模式 - -## 模式定义 - -提供了一个统一的接口,用来访问子系统中的一群接口,从而让子系统更容易使用。 - -## 模式类图 - -

    - -## 问题描述 - -家庭影院中有众多电器,当要进行观看电影时需要对很多电器进行操作。要求简化这些操作,使得家庭影院类只提供一个简化的接口,例如提供一个看电影相关的接口。 - -

    - -## 解决方案类图 - -

    - -## 设计原则 - -**最少知识原则** :只和你的密友谈话。也就是客户对象所需要交互的对象应当尽可能少。 - -## 代码实现 - -过于简单,无实现。 - -# 十一、模板方法模式 - -## 模式定义 - -在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。 - -模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 - -## 模式类图 - -模板方法 templateMethod() 定义了算法的骨架,确定了 primitiveOperation1() 和 primitiveOperation2() 方法执行的顺序,而 primitiveOperation1() 和 primitiveOperation2() 让子类去实现。 - -

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

    - -## 问题的解决方案类图 - -prepareRecipe() 方法就是模板方法,它确定了其它四个方法的具体执行步骤。其中 brew() 和 addCondiments() 方法在子类中实现。 - -

    - -## 设计原则 - -**好莱坞原则** :别调用(打电话给)我们,我们会调用(打电话给)你。这一原则可以防止依赖腐败,即防止高层组件依赖低层组件,低层组件又依赖高层组件。该原则在模板方法的体现为,只有父类会调用子类,子类不会调用父类。 - -## 钩子 - -某些步骤在不同实现中可有可无,可以先定义一个什么都不做的方法,把它加到模板方法中,如果子类需要它就覆盖默认实现并加上自己的实现。 - -## 代码实现 - -```java -public abstract class CaffeineBeverage { - - final void prepareRecipe(){ - boilWater(); - brew(); - pourInCup(); - addCondiments(); - } - - abstract void brew(); - - abstract void addCondiments(); - - void boilWater(){ - System.out.println("boilWater"); - } - - void pourInCup(){ - System.out.println("pourInCup"); - } -} -``` - -```java -public class Coffee extends CaffeineBeverage{ - @Override - void brew() { - System.out.println("Coffee.brew"); - } - - @Override - void addCondiments() { - System.out.println("Coffee.addCondiments"); - } -} -``` - -```java -public class Tea extends CaffeineBeverage{ - @Override - void brew() { - System.out.println("Tea.brew"); - } - - @Override - void addCondiments() { - System.out.println("Tea.addCondiments"); - } -} -``` - -```java -public class CaffeineBeverageTestDrive { - public static void main(String[] args) { - CaffeineBeverage caffeineBeverage = new Coffee(); - caffeineBeverage.prepareRecipe(); - System.out.println("-----------"); - caffeineBeverage = new Tea(); - caffeineBeverage.prepareRecipe(); - } -} -``` - -运行结果 - -```html -boilWater -Coffee.brew -pourInCup -Coffee.addCondiments ------------ -boilWater -Tea.brew -pourInCup -Tea.addCondiments -``` - -# 十二、迭代器模式 - -## 模式定义 - -提供顺序访问一个聚合对象中的各个元素的方法,而又不暴露聚合对象内部的表示。 - -## 模式类图 - -- Aggregate 是聚合类,其中 createIterator() 方法可以产生一个 Iterator; - -- Iterator 主要定义了 hasNext() 和 next() 方法。 - -- Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 - -

    - -## 代码实现 - -```java -public class Aggregate { - - private int[] items; - - public Aggregate() { - items = new int[10]; - for (int i = 0; i < items.length; i++) { - items[i] = i; - } - } - - public Iterator createIterator() { - return new ConcreteIterator(items); - } - -} -``` - -```java -public interface Iterator { - boolean hasNext(); - int next(); -} -``` - -```java -public class ConcreteIterator implements Iterator { - - private int[] items; - private int position = 0; - - public ConcreteIterator(int[] items) { - this.items = items; - } - - @Override - public boolean hasNext() { - return position < items.length; - } - - @Override - public int next() { - return items[position++]; - } -} -``` -```java -public class Client { - public static void main(String[] args) { - Aggregate aggregate = new Aggregate(); - Iterator iterator = aggregate.createIterator(); - while(iterator.hasNext()){ - System.out.println(iterator.next()); - } - } -} -``` -运行结果 -```html -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -``` - -## Java 内置的迭代器 - -需要让聚合类实现 Iterable 接口,该接口有一个 iterator() 方法会返回一个 Iterator 对象。 - -可以使用 foreach 循环来顺序访问聚合对象中的每个元素。 - -Java 中的集合类基本都实现了 Iterable 接口。 - -```java -import java.util.Iterator; - -public class Aggregate implements Iterable{ - - private int[] items; - - public Aggregate() { - items = new int[10]; - for (int i = 0; i < items.length; i++) { - items[i] = i; - } - } - - @Override - public Iterator iterator() { - return new ConcreteIterator(items); - } -} -``` -```java -import java.util.Iterator; - -public class ConcreteIterator implements Iterator { - - private int[] items; - private int position = 0; - - public ConcreteIterator(int[] items) { - this.items = items; - } - - @Override - public boolean hasNext() { - return position < items.length; - } - - @Override - public Integer next() { - return items[position++]; - } -} -``` -```java -public class Client { - public static void main(String[] args) { - Aggregate aggregate = new Aggregate(); - for (int item : aggregate) { - System.out.println(item); - } - } -} -``` - -# 十三、组合模式 - -## 设计原则 - -一个类应该只有一个引起它改变的原因。 - -## 模式定义 - -允许将对象组合成树形结构来表现“整体/部分”关系。 - -组合能让客户以一致的方式处理个别对象以及组合对象。 - -## 模式类图 - -组件(Component)类是组合类(Composite)和叶子类(Leaf)的父类,可以把组合类看成是树的中间节点。 - -组合对象拥有一个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 - -

    - -## 代码实现 - -```java -public abstract class Component { - protected String name; - - public Component(String name) { - this.name = name; - } - - abstract public void addChild(Component component); - - public void print() { - print(0); - } - - abstract protected void print(int level); -} -``` - -```java -public class Leaf extends Component { - public Leaf(String name) { - super(name); - } - - @Override - public void addChild(Component component) { - throw new UnsupportedOperationException(); // 牺牲透明性换取单一职责原则,这样就不用考虑是叶子节点还是组合节点 - } - - @Override - protected void print(int level) { - for (int i = 0; i < level; i++) { - System.out.print("--"); - } - System.out.println("left:" + name); - } -} -``` - -```java -public class Composite extends Component { - - private List childs; - - public Composite(String name) { - super(name); - childs = new ArrayList<>(); - } - - @Override - public void addChild(Component component) { - childs.add(component); - } - - @Override - protected void print(int level) { - for (int i = 0; i < level; i++) { - System.out.print("--"); - } - System.out.println("Composite:" + name); - for (Component component : childs) { - component.print(level + 1); - } - } -} -``` - -```java -public class Client { - public static void main(String[] args) { - Composite root = new Composite("root"); - Component node1 = new Leaf("1"); - Component node2 = new Composite("2"); - Component node3 = new Leaf("3"); - root.addChild(node1); - root.addChild(node2); - root.addChild(node3); - Component node21 = new Leaf("21"); - Component node22 = new Composite("22"); - node2.addChild(node21); - node2.addChild(node22); - Component node221 = new Leaf("221"); - node22.addChild(node221); - root.print(); - } -} -``` -运行结果 - -```html -Composite:root ---left:1 ---Composite:2 -----left:21 -----Composite:22 -------left:221 ---left:3 -``` - -# 十四、状态模式 - -## 模式定义 - -允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它所属的类。 - -## 模式类图 - -Context 的 request() 方法委托给 State 对象去处理。当 Context 组合的 State 对象发生改变时,它的行为也就发生了改变。 - -

    - -## 与策略模式的比较 - -状态模式的类图和策略模式一样,并且都是能够动态改变对象的行为。 - -但是状态模式是通过状态转移来改变 Context 所组合的 State 对象,而策略模式是通过 Context 本身的决策来改变组合的 Strategy 对象。 - -所谓的状态转移,是指 Context 在运行过程中由于一些条件发生改变而使得 State 对象发生改变,注意必须要是在运行过程中。 - -状态模式主要是用来解决状态转移的问题,当状态发生转移了,那么 Context 对象就会改变它的行为;而策略模式主要是用来封装一组可以互相替代的算法族,并且可以根据需要动态地去替换 Context 需要使用哪个算法。 - -## 问题描述 - -糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 - -

    - -## 直接解决方案 - -在糖果机的每个操作函数里面,判断当前的状态,根据不同的状态进行不同的处理,并且发生不同的状态转移。 - -这种解决方案在需要增加状态的时候,必须对每个操作的代码都进行修改。 - -

    - -## 代码实现 - -糖果销售机即 Context。 - -下面的实现中每个 State 都组合了 Context 对象,这是因为状态转移的操作在 State 对象中,而状态转移过程又必须改变 Context 对象的 state 对象,因此 State 必须组合 Context 对象。 - -```java -public interface State { - /** - * 投入 25 分钱 - */ - void insertQuarter(); - - /** - * 退回 25 分钱 - */ - void ejectQuarter(); - - /** - * 转动曲柄 - */ - void turnCrank(); - - /** - * 发放糖果 - */ - void dispense(); -} -``` -```java -public class HasQuarterState implements State{ - - private GumballMachine gumballMachine; - - public HasQuarterState(GumballMachine gumballMachine){ - this.gumballMachine = gumballMachine; - } - - @Override - public void insertQuarter() { - System.out.println("You can't insert another quarter"); - } - - @Override - public void ejectQuarter() { - System.out.println("Quarter returned"); - gumballMachine.setState(gumballMachine.getNoQuarterState()); - } - - @Override - public void turnCrank() { - System.out.println("You turned..."); - gumballMachine.setState(gumballMachine.getSoldState()); - } - - @Override - public void dispense() { - System.out.println("No gumball dispensed"); - } -} -``` -```java -public class NoQuarterState implements State { - - GumballMachine gumballMachine; - - public NoQuarterState(GumballMachine gumballMachine) { - this.gumballMachine = gumballMachine; - } - - @Override - public void insertQuarter() { - System.out.println("You insert a quarter"); - gumballMachine.setState(gumballMachine.getHasQuarterState()); - } - - @Override - public void ejectQuarter() { - System.out.println("You haven't insert a quarter"); - } - - @Override - public void turnCrank() { - System.out.println("You turned, but there's no quarter"); - } - - @Override - public void dispense() { - System.out.println("You need to pay first"); - } -} -``` -```java -public class SoldOutState implements State { - - GumballMachine gumballMachine; - - public SoldOutState(GumballMachine gumballMachine) { - this.gumballMachine = gumballMachine; - } - - @Override - public void insertQuarter() { - System.out.println("You can't insert a quarter, the machine is sold out"); - } - - @Override - public void ejectQuarter() { - System.out.println("You can't eject, you haven't inserted a quarter yet"); - } - - @Override - public void turnCrank() { - System.out.println("You turned, but there are no gumballs"); - } - - @Override - public void dispense() { - System.out.println("No gumball dispensed"); - } -} -``` -```java -public class SoldState implements State { - - GumballMachine gumballMachine; - - public SoldState(GumballMachine gumballMachine) { - this.gumballMachine = gumballMachine; - } - - @Override - public void insertQuarter() { - System.out.println("Please wait, we're already giving you a gumball"); - } - - @Override - public void ejectQuarter() { - System.out.println("Sorry, you already turned the crank"); - } - - @Override - public void turnCrank() { - System.out.println("Turning twice doesn't get you another gumball!"); - } - - @Override - public void dispense() { - gumballMachine.releaseBall(); - if(gumballMachine.getCount()>0){ - gumballMachine.setState(gumballMachine.getNoQuarterState()); - } else{ - System.out.println("Oops, out of gumballs"); - gumballMachine.setState(gumballMachine.getSoldOutState()); - } - } -} -``` -```java -public class GumballMachine { - - private State soldOutState; - private State noQuarterState; - private State hasQuarterState; - private State soldState; - - private State state; - private int count = 0; - - public GumballMachine(int numberGumballs) { - count = numberGumballs; - soldOutState = new SoldOutState(this); - noQuarterState = new NoQuarterState(this); - hasQuarterState = new HasQuarterState(this); - soldState = new SoldState(this); - - if (numberGumballs > 0) { - state = noQuarterState; - } else { - state = soldOutState; - } - } - - public void insertQuarter() { - state.insertQuarter(); - } - - public void ejectQuarter() { - state.ejectQuarter(); - } - - public void turnCrank() { - state.turnCrank(); - state.dispense(); - } - - public void setState(State state) { - this.state = state; - } - - public void releaseBall() { - System.out.println("A gumball comes rolling out the slot..."); - if (count != 0) { - count -= 1; - } - } - - public State getSoldOutState() { - return soldOutState; - } - - public State getNoQuarterState() { - return noQuarterState; - } - - public State getHasQuarterState() { - return hasQuarterState; - } - - public State getSoldState() { - return soldState; - } - - public int getCount() { - return count; - } -} -``` -```java -public class GumballMachineTestDrive { - - public static void main(String[] args) { - GumballMachine gumballMachine = new GumballMachine(5); - - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - - gumballMachine.insertQuarter(); - gumballMachine.ejectQuarter(); - gumballMachine.turnCrank(); - - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - gumballMachine.ejectQuarter(); - - gumballMachine.insertQuarter(); - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - gumballMachine.insertQuarter(); - gumballMachine.turnCrank(); - } -} -``` -运行结果 -```html -You insert a quarter -You turned... -A gumball comes rolling out the slot... -You insert a quarter -Quarter returned -You turned, but there's no quarter -You need to pay first -You insert a quarter -You turned... -A gumball comes rolling out the slot... -You insert a quarter -You turned... -A gumball comes rolling out the slot... -You haven't insert a quarter -You insert a quarter -You can't insert another quarter -You turned... -A gumball comes rolling out the slot... -You insert a quarter -You turned... -A gumball comes rolling out the slot... -Oops, out of gumballs -You can't insert a quarter, the machine is sold out -You turned, but there are no gumballs -No gumball dispensed -``` - -# 十五、代理模式 - -# 十六、MVC - -## 传统 MVC - -视图使用组合模式,模型使用了观察者模式,控制器使用了策略模式。 - -

    - -## Web 中的 MVC - -模式不再使用观察者模式。 - -

    - -# 十七、与设计模式相处 - -## 定义 - -在某情境下,针对某问题的某种解决方案。 - -## 何时使用 - -过度使用设计模式可能导致代码被过度工程化,应该总是用最简单的解决方案完成工作,并在真正需要模式的地方才使用它。 - -## 反模式 - -不好的解决方案来解决一个问题。主要作用是为了警告人们不要使用这些解决方案。 - -## 模式分类 - -

    diff --git a/notes/重构.md b/notes/重构.md deleted file mode 100644 index bc05e60a..00000000 --- a/notes/重构.md +++ /dev/null @@ -1,1252 +0,0 @@ - -* [一、第一个案例](#一第一个案例) -* [二、重构原则](#二重构原则) - * [定义](#定义) - * [为何重构](#为何重构) - * [三次法则](#三次法则) - * [间接层与重构](#间接层与重构) - * [修改接口](#修改接口) - * [何时不该重构](#何时不该重构) - * [重构与设计](#重构与设计) - * [重构与性能](#重构与性能) -* [三、代码的坏味道](#三代码的坏味道) - * [1. 重复代码](#1-重复代码) - * [2. 过长函数](#2-过长函数) - * [3. 过大的类](#3-过大的类) - * [4. 过长的参数列表](#4-过长的参数列表) - * [5. 发散式变化](#5-发散式变化) - * [6. 散弹式修改](#6-散弹式修改) - * [7. 依恋情结](#7-依恋情结) - * [8. 数据泥团](#8-数据泥团) - * [9. 基本类型偏执](#9-基本类型偏执) - * [10. switch 惊悚现身](#10-switch-惊悚现身) - * [11. 平行继承体系](#11-平行继承体系) - * [12. 冗余类](#12-冗余类) - * [13. 夸夸其谈未来性](#13-夸夸其谈未来性) - * [14. 令人迷惑的暂时字段](#14-令人迷惑的暂时字段) - * [15. 过度耦合的消息链](#15-过度耦合的消息链) - * [16. 中间人](#16-中间人) - * [17. 狎昵关系](#17-狎昵关系) - * [18. 异曲同工的类](#18-异曲同工的类) - * [19. 不完美的类库](#19-不完美的类库) - * [20. 幼稚的数据类](#20-幼稚的数据类) - * [21. 被拒绝的馈赠](#21-被拒绝的馈赠) - * [22. 过多的注释](#22-过多的注释) -* [四、构筑测试体系](#四构筑测试体系) -* [五、重新组织函数](#五重新组织函数) - * [1. 提炼函数](#1-提炼函数) - * [2. 内联函数](#2-内联函数) - * [3. 内联临时变量](#3-内联临时变量) - * [4. 以查询取代临时变量](#4-以查询取代临时变量) - * [5. 引起解释变量](#5-引起解释变量) - * [6. 分解临时变量](#6-分解临时变量) - * [7. 移除对参数的赋值](#7-移除对参数的赋值) - * [8. 以函数对象取代函数](#8-以函数对象取代函数) - * [9. 替换算法](#9-替换算法) -* [六、在对象之间搬移特性](#六在对象之间搬移特性) - * [1. 搬移函数](#1-搬移函数) - * [2. 搬移字段](#2-搬移字段) - * [3. 提炼类](#3-提炼类) - * [4. 将类内联化](#4-将类内联化) - * [5. 隐藏委托关系](#5-隐藏委托关系) - * [6. 移除中间人](#6-移除中间人) - * [7. 引入外加函数](#7-引入外加函数) - * [8. 引入本地扩展](#8-引入本地扩展) -* [七、重新组织数据](#七重新组织数据) - * [1. 自封装字段](#1-自封装字段) - * [2. 以对象取代数据值](#2-以对象取代数据值) - * [3. 将值对象改成引用对象](#3-将值对象改成引用对象) - * [4. 将引用对象改为值对象](#4-将引用对象改为值对象) - * [5. 以对象取代数组](#5-以对象取代数组) - * [6. 赋值被监视数据](#6-赋值被监视数据) - * [7. 将单向关联改为双向关联](#7-将单向关联改为双向关联) - * [8. 将双向关联改为单向关联](#8-将双向关联改为单向关联) - * [9. 以字面常量取代魔法数](#9-以字面常量取代魔法数) - * [10. 封装字段](#10-封装字段) - * [11. 封装集合](#11-封装集合) - * [12. 以数据类取代记录](#12-以数据类取代记录) - * [13. 以类取代类型码](#13-以类取代类型码) - * [14. 以子类取代类型码](#14-以子类取代类型码) - * [15. 以 State/Strategy 取代类型码](#15-以-statestrategy-取代类型码) - * [16. 以字段取代子类](#16-以字段取代子类) -* [八、简化条件表达式](#八简化条件表达式) - * [1. 分解条件表达式](#1-分解条件表达式) - * [2. 合并条件表达式](#2-合并条件表达式) - * [3. 合并重复的条件片段](#3-合并重复的条件片段) - * [4. 移除控制标记](#4-移除控制标记) - * [5. 以卫语句取代嵌套条件表达式](#5-以卫语句取代嵌套条件表达式) - * [6. 以多态取代条件表达式](#6-以多态取代条件表达式) - * [7. 引入 Null 对象](#7-引入-null-对象) - * [8. 引入断言](#8-引入断言) -* [九、简化函数调用](#九简化函数调用) - * [1. 函数改名](#1-函数改名) - * [2. 添加参数](#2-添加参数) - * [3. 移除参数](#3-移除参数) - * [4. 将查询函数和修改函数分离](#4-将查询函数和修改函数分离) - * [5. 令函数携带参数](#5-令函数携带参数) - * [6. 以明确函数取代参数](#6-以明确函数取代参数) - * [7. 保持对象完整](#7-保持对象完整) - * [8. 以函数取代参数](#8-以函数取代参数) - * [9. 引入参数对象](#9-引入参数对象) - * [10. 移除设值函数](#10-移除设值函数) - * [11. 隐藏函数](#11-隐藏函数) - * [12. 以工厂函数取代构造函数](#12-以工厂函数取代构造函数) - * [13. 封装向下转型](#13-封装向下转型) - * [14. 以异常取代错误码](#14-以异常取代错误码) - * [15. 以测试取代异常](#15-以测试取代异常) -* [十、处理概括关系](#十处理概括关系) - * [1. 字段上移](#1-字段上移) - * [2. 函数上移](#2-函数上移) - * [3. 构造函数本体上移](#3-构造函数本体上移) - * [4. 函数下移](#4-函数下移) - * [5. 字段下移](#5-字段下移) - * [6. 提炼子类](#6-提炼子类) - * [7. 提炼超类](#7-提炼超类) - * [8. 提炼接口](#8-提炼接口) - * [9. 折叠继承体系](#9-折叠继承体系) - * [10. 塑造模板函数](#10-塑造模板函数) - * [11. 以委托取代继承](#11-以委托取代继承) - * [12. 以继承取代委托](#12-以继承取代委托) - - - -# 一、第一个案例 - -如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构这个程序。 - -在重构前,需要先构建好可靠的测试环境,确保安全地重构。 - -重构需要以微小的步伐修改程序,如果重构过程发生错误,很容易就能发现错误。 - -**案例分析** - -影片出租店应用程序,需要计算每位顾客的消费金额。 - -包括三个类:Movie、Rental 和 Customer,Rental 包含租赁的 Movie 以及天数。 - -

    - -最开始的实现是把所有的计费代码都放在 Customer 类中。 - -可以发现,该代码没有使用 Customer 类中的任何信息,更多的是使用 Rental 类的信息,因此第一个可以重构的点就是把具体计费的代码移到 Rental 类中,然后 Customer 类的 getTotalCharge() 方法只需要调用 Rental 类中的计费方法即可。 - -```java -class Customer... -double getTotalCharge() { - while (rentals.hasMoreElements()) { - double thisAmount = 0; - Rental each = (Rental) rentals.nextElement(); - switch (each.getMovie().getPriceCode()) { - case Movie.REGULAR: - thisAmount += 2; - if (each.getDaysRented() > 2) - thisAmount += (each.getDaysRented() - 2) * 1.5; - break; - case Movie.NEW_RELEASE: - thisAmount += each.getDaysRented() * 3; - break; - case Movie.CHILDRENS: - thisAmount += 1.5; - if (each.getDaysRented() > 3) - thisAmount += (each.getDaysRented() - 3) * 1.5; - break; - } -} -``` - -使用 switch 的准则是:只能在对象自己的数据上使用,而不能在另一个对象的数据基础上使用。解释如下:switch 使用的数据通常是一组相关的数据,例如上面的代码使用了 Movie 的多种类别数据。当这组类别的数据发生改变时,例如上面的代码中增加 Movie 的类别或者修改一种 Movie 类别的计费方法,就需要修改 switch 代码。如果允许违反了准则,就会有多个地方的 switch 使用了这部分的数据,那么需要打开所有的 switch 代码进行修改。 - -以下是继承 Movie 的多态解决方案,这种方案可以解决上述的 switch 问题,因为每种电影类别的计费方式都被放到了对应 Movie 子类中,当变化发生时,只需要去修改对应子类中的代码即可。 - -

    - -但是由于 Movie 可以在其生命周期内修改自己的类别,一个对象却不能在生命周期内修改自己所属的类,因此这种方案不可行。可以使用策略模式来解决这个问题(原书写的是使用状态模式,但是这里应该为策略模式,具体可以参考设计模式内容)。 - -下图中,Price 有多种实现,Movie 组合了一个 Price 对象,并且在运行时可以改变组合的 Price 对象,从而使得它的计费方式发生改变。 - -

    - -重构后整体的类图和时序图如下: - -

    - -

    - -# 二、重构原则 - -## 定义 - -重构是对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 - -## 为何重构 - -- 改进软件设计 -- 使软件更容易理解 -- 帮助找到 Bug -- 提高编程速度 - -## 三次法则 - -第一次做某件事时只管去做;第二次做类似事情时可以去做;第三次再做类似的事,就应该重构。 - -## 间接层与重构 - -计算机科学中的很多问题可以通过增加一个间接层来解决,间接层具有以下价值: - -- 允许逻辑共享 -- 分开解释意图和实现 -- 隔离变化 -- 封装条件逻辑。 - -重构可以理解为在适当的位置插入间接层以及在不需要时移除间接层。 - -## 修改接口 - -如果重构手法改变了已发布的接口,就必须维护新旧两个接口。 - -可以保留旧接口,让旧接口去调用新接口,并且使用 Java 提供的 @deprecation 将旧接口标记为弃用。 - -可见修改接口特别麻烦,因此除非真有必要,否则不要发布接口,并且不要过早发布接口。 - -## 何时不该重构 - -当现有代码过于混乱时,应当重写而不是重构。 - -一个折中的办法是,将代码封装成一个个组件,然后对各个组件做重写或者重构的决定。 - -## 重构与设计 - -软件开发无法预先设计,因为开发过程有很多变化发生,在最开始不可能都把所有情况考虑进去。 - -重构可以简化设计,重构在一个简单的设计上进行修修改改,当变化发生时,以一种灵活的方式去应对变化,进而带来更好的设计。 - -## 重构与性能 - -为了软代码更容易理解,重构可能会导致性能减低。 - -在编写代码时,不用对性能过多关注,只有在最后性能优化阶段再考虑性能问题。 - -应当只关注关键代码的性能,因为只有一小部分的代码是关键代码。 - -# 三、代码的坏味道 - -本章主要介绍一些不好的代码,也就是说这些代码应该被重构。 - -文中提到的具体重构原则可以先忽略。 - -## 1. 重复代码 - -> Duplicated Code - -同一个类的两个函数有相同表达式,则用 Extract Method 提取出重复代码; - -两个互为兄弟的子类含有相同的表达式,先使用 Extract Method,然后把提取出来的函数 Pull Up Method 推入超类。 - -如果只是部分相同,用 Extract Method 分离出相似部分和差异部分,然后使用 Form Template Method 这种模板方法设计模式。 - -如果两个毫不相关的类出现重复代码,则使用 Extract Class 方法将重复代码提取到一个独立类中。 - -## 2. 过长函数 - -> Long Method - -函数应该尽可能小,因为小函数具有解释能力、共享能力、选择能力。 - -分解长函数的原则:当需要用注释来说明一段代码时,就需要把这部分代码写入一个独立的函数中。 - -Extract Method 会把很多参数和临时变量都当做参数,可以用 Replace Temp with Query 消除临时变量,Introduce Parameter Object 和 Preserve Whole Object 可以将过长的参数列变得更简洁。 - -条件和循环语句往往也需要提取到新的函数中。 - -## 3. 过大的类 - -> Large Class - -应该尽可能让一个类只做一件事,而过大的类做了过多事情,需要使用 Extract Class 或 Extract Subclass。 - -先确定客户端如何使用该类,然后运用 Extract Interface 为每一种使用方式提取出一个接口。 - -## 4. 过长的参数列表 - -> Long Parameter List - -太长的参数列表往往会造成前后不一致,不易使用。 - -面向对象程序中,函数所需要的数据通常内在宿主类中找到。 - -## 5. 发散式变化 - -> Divergent Change - -设计原则:一个类应该只有一个引起改变的原因。也就是说,针对某一外界变化所有相应的修改,都只应该发生在单一类中。 - -针对某种原因的变化,使用 Extract Class 将它提炼到一个类中。 - -## 6. 散弹式修改 - -> Shotgun Surgery - -一个变化引起多个类修改; - -使用 Move Method 和 Move Field 把所有需要修改的代码放到同一个类中。 - -## 7. 依恋情结 - -> Feature Envy - -一个函数对某个类的兴趣高于对自己所处类的兴趣,通常是过多访问其它类的数据, - -使用 Move Method 将它移到该去的地方,如果对多个类都有 Feature Envy,先用 Extract Method 提取出多个函数。 - -## 8. 数据泥团 - -> Data Clumps - -有些数据经常一起出现,比如两个类具有相同的字段、许多函数有相同的参数,这些绑定在一起出现的数据应该拥有属于它们自己的对象。 - -使用 Extract Class 将它们放在一起。 - -## 9. 基本类型偏执 - -> Primitive Obsession - -使用类往往比使用基本类型更好,使用 Replace Data Value with Object 将数据值替换为对象。 - -## 10. switch 惊悚现身 - -> Switch Statements - -具体参见第一章的案例。 - -## 11. 平行继承体系 - -> Parallel Inheritance Hierarchies - -每当为某个类增加一个子类,必须也为另一个类相应增加一个子类。 - -这种结果会带来一些重复性,消除重复性的一般策略:让一个继承体系的实例引用另一个继承体系的实例。 - -## 12. 冗余类 - -> Lazy Class - -如果一个类没有做足够多的工作,就应该消失。 - -## 13. 夸夸其谈未来性 - -> Speculative Generality - -有些内容是用来处理未来可能发生的变化,但是往往会造成系统难以理解和维护,并且预测未来可能发生的改变很可能和最开始的设想相反。因此,如果不是必要,就不要这么做。 - -## 14. 令人迷惑的暂时字段 - -> Temporary Field - -某个字段仅为某种特定情况而设,这样的代码不易理解,因为通常认为对象在所有时候都需要它的所有字段。 - -把这种字段和特定情况的处理操作使用 Extract Class 提炼到一个独立类中。 - -## 15. 过度耦合的消息链 - -> Message Chains - -一个对象请求另一个对象,然后再向后者请求另一个对象,然后...,这就是消息链。采用这种方式,意味着客户代码将与对象间的关系紧密耦合。 - -改用函数链,用函数委托另一个对象来处理。 - -## 16. 中间人 - -> Middle Man - -中间人负责处理委托给它的操作,如果一个类中有过多的函数都委托给其它类,那就是过度运用委托,应当 Remove Middle Man,直接与负责的对象打交道。 - -## 17. 狎昵关系 - -> Inappropriate Intimacy - -两个类多于亲密,花费太多时间去探讨彼此的 private 成分。 - -## 18. 异曲同工的类 - -> Alernative Classes with Different Interfaces - -两个函数做同一件事,却有着不同的签名。 - -使用 Rename Method 根据它们的用途重新命名。 - -## 19. 不完美的类库 - -> Incomplete Library Class - -类库的设计者不可能设计出完美的类库,当我们需要对类库进行一些修改时,可以使用以下两种方法:如果只是修改一两个函数,使用 Introduce Foreign Method;如果要添加一大堆额外行为,使用 Introduce Local Extension。 - -## 20. 幼稚的数据类 - -> Data Class - -它只拥有一些数据字段,以及用于访问这些字段的函数,除此之外一无长物。 - -找出字段使用的地方,然后把相应的操作移到 Data Class 中。 - -## 21. 被拒绝的馈赠 - -> Refused Bequest - -子类不想继承超类的所有函数和数据。 - -为子类新建一个兄弟类,不需要的函数或数据使用 Push Down Method 和 Push Down Field 下推给那个兄弟。 - -## 22. 过多的注释 - -> Comments - -使用 Extract Method 提炼出需要注释的部分,然后用函数名来解释函数的行为。 - -# 四、构筑测试体系 - -Java 可以使用 Junit 进行单元测试。 - -测试应该能够完全自动化,并能检查测试的结果。Junit 可以做到。 - -小步修改,频繁测试。 - -单元测试的对象是类的方法,而功能测是以客户的角度保证软件正常运行。 - -应当集中测试可能出错的边界条件。 - -# 五、重新组织函数 - -## 1. 提炼函数 - -> Extract Method - -将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。 - -## 2. 内联函数 - -> Inline Method - -一个函数的本体与名称同样清楚易懂。 - -在函数调用点插入函数本体,然后移除该函数。 - -## 3. 内联临时变量 - -> Inline Temp - -一个临时变量,只被简单表达式赋值一次,而它妨碍了其它重构手法。 - -将所有对该变量的引用替换为对它赋值的那个表达式自身。 - -```java -double basePrice = anOrder.basePrice(); -return basePrice > 1000; -``` - -```java -return anOrder.basePrice() > 1000; -``` - -## 4. 以查询取代临时变量 - -> Replace Temp with Query - -以临时变量保存某一表达式的运算结果,将这个表达式提炼到一个独立函数中,将所有对临时变量的引用点替换为对新函数的调用。Replace Temp with Query 往往是 Extract Method 之前必不可少的一个步骤,因为局部变量会使代码难以提炼。 - -```java -double basePrice = quantity * itemPrice; -if(basePrice > 1000) - return basePrice * 0.95; -else - return basePrice * 0.98; -``` - -```java -if(basePrice() > 1000) - return basePrice() * 0.95; -else - return basePrice() * 0.98; - -// ... -double basePrice(){ - return quantity * itemPrice; -} -``` - -## 5. 引起解释变量 - -> Introduce Explaining Variable - -将复杂表达式(或其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。 - -```java -if((platform.toUpperCase().indexOf("MAC") > -1) && - (browser.toUpperCase().indexOf("IE") > -1) && - wasInitialized() && resize > 0) { - // do something -} -``` - -```java -final boolean isMacOS = platform.toUpperCase().indexOf("MAC") > -1; -final boolean isIEBrower = browser.toUpperCase().indexOf("IE") > -1; -final boolean wasResized = resize > 0; - -if(isMacOS && isIEBrower && wasInitialized() && wasResized) { - // do something -} -``` - -## 6. 分解临时变量 - -> Split Temporary Variable - -某个临时变量被赋值超过一次,它既不是循环变量,也不是用于收集计算结果。 - -针对每次赋值,创造一个独立、对应的临时变量,每个临时变量只承担一个责任。 - -## 7. 移除对参数的赋值 - -> Remove Assigments to Parameters - -以一个临时变量取代对该参数的赋值。 - -```java -int discount (int inputVal, int quentity, int yearToDate){ - if (inputVal > 50) inputVal -= 2; -``` - -```java -int discount (int inputVal, int quentity, int yearToDate){ - int result = inputVal; - if (inputVal > 50) result -= 2; -``` - -## 8. 以函数对象取代函数 - -> Replace Method with Method Object - -当对一个大型函数采用 Extract Method 时,由于包含了局部变量使得很难进行该操作。 - -将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的字段。然后可以在同一个对象中将这个大型函数分解为多个小型函数。 - -## 9. 替换算法 - -> Subsititute Algorithn - -# 六、在对象之间搬移特性 - -## 1. 搬移函数 - -> Move Method - -类中的某个函数与另一个类进行更多交流:调用后者或者被后者调用。 - -将这个函数搬移到另一个类中。 - -## 2. 搬移字段 - -> Move Field - -类中的某个字段被另一个类更多地用到,这里的用到是指调用取值设值函数,应当把该字段移到另一个类中。 - -## 3. 提炼类 - -> Extract Class - -某个类做了应当由两个类做的事。 - -应当建立一个新类,将相关的字段和函数从旧类搬移到新类。 - -## 4. 将类内联化 - -> Inline Class - -与 Extract Class 相反。 - -## 5. 隐藏委托关系 - -> Hide Delegate - -建立所需的函数,隐藏委托关系。 - -```java -class Person{ - Department department; - - public Department getDepartment(){ - return department; - } -} - -class Department{ - private Person manager; - - public Person getManager(){ - return manager; - } -} -``` - -如果客户希望知道某人的经理是谁,必须获得 Department 对象,这样就对客户揭露了 Department 的工作原理。 - -```java -Person manager = john.getDepartment().getManager(); -``` - -通过为 Peron 建立一个函数来隐藏这种委托关系。 - -```java -public Person getManager(){ - return department.getManager(); -} -``` - -## 6. 移除中间人 - -> Remove Middle Man - -与 Hide Delegate 相反,本方法需要移除委托函数,让客户直接调用委托类。 - -Hide Delegate 有很大好处,但是它的代价是:每当客户要使用受托类的新特性时,就必须在服务器端添加一个简单的委托函数。随着受委托的特性越来越多,服务器类完全变成了一个“中间人”。 - -## 7. 引入外加函数 - -> Introduce Foreign Method - -需要为提供服务的类添加一个函数,但是无法修改这个类。 - -可以在客户类中建立一个函数,并以第一参数形式传入一个服务类的实例,让客户类组合服务器实例。 - -## 8. 引入本地扩展 - -> Introduce Local Extension - -和 Introduce Foreign Method 目的一样,但是 Introduce Local Extension 通过建立新的类来实现。有两种方式:子类或者包装类,子类就是通过继承实现,包装类就是通过组合实现。 - -# 七、重新组织数据 - -## 1. 自封装字段 - -> Self Encapsulate Field - -为字段建立取值/设值函数,并用这些函数来访问字段。只有当子类想访问超类的一个字段,又想在子类中将对这个字段访问改为一个计算后的值,才使用这种方式,否则直接访问字段的方式简洁明了。 - -## 2. 以对象取代数据值 - -> Replace Data Value with Object - -在开发初期,往往会用简单的数据项表示简单的情况,但是随着开发的进行,一些简单数据项会具有一些特殊行为。比如一开始会把电话号码存成字符串,但是随后发现电话号码需要“格式化”、“抽取区号”之类的特殊行为。 - -## 3. 将值对象改成引用对象 - -> Change Value to Reference - -将彼此相等的实例替换为同一个对象。这就要用一个工厂来创建这种唯一对象,工厂类中需要保留一份已经创建对象的列表,当要创建一个对象时,先查找这份列表中是否已经存在该对象,如果存在,则返回列表中的这个对象;否则,新建一个对象,添加到列表中,并返回该对象。 - -## 4. 将引用对象改为值对象 - -> Change Reference to value - -以 Change Value to Reference 相反。值对象有个非常重要的特性:它是不可变的,不可变表示如果要改变这个对象,必须用一个新的对象来替换旧对象,而不是修改旧对象。 - -需要为值对象实现 equals() 和 hashCode() 方法 - -## 5. 以对象取代数组 - -> Replace Array with Object - -有一个数组,其中的元素各自代表不同的东西。 - -以对象替换数组,对于数组中的每个元素,以一个字段来表示,这样方便操作,也更容易理解。 - -## 6. 赋值被监视数据 - -> Duplicate Observed Data - -一些领域数据置身于 GUI 控件中,而领域函数需要访问这些数据。 - -将该数据赋值到一个领域对象中,建立一个 Oberver 模式,用以同步领域对象和 GUI 对象内的重复数据。 - -

    - -## 7. 将单向关联改为双向关联 - -> Change Unidirectional Association to Bidirectional - -当两个类都需要对方的特性时,可以使用双向关联。 - -有两个类,分别为订单 Order 和客户 Customer,Order 引用了 Customer,Customer 也需要引用 Order 来查看其所有订单详情。 - -```java -class Order{ - private Customer customer; - public void setCustomer(Customer customer){ - if(this.customer != null) - this.customer.removeOrder(this); - this.customer = customer; - this.customer.add(this); - } -} -``` -```java -class Curstomer{ - private Set orders = new HashSet<>(); - public void removeOrder(Order order){ - orders.remove(order); - } - public void addOrder(Order order){ - orders.add(order); - } -} -``` - -注意到,这里让 Curstomer 类来控制关联关系。有以下原则来决定哪个类来控制关联关系:如果某个对象是组成另一个对象的部件,那么由后者负责控制关联关系;如果是一对多关系,则由单一引用那一方来控制关联关系。 - -## 8. 将双向关联改为单向关联 - -> Change Bidirectional Association to Unidirectional - -和 Change Unidirectional Association to Bidirectiona 为反操作。 - -双向关联维护成本高,并且也不易于理解。大量的双向连接很容易造成“僵尸对象”:某个对象本身已经死亡了,却保留在系统中,因为它的引用还没有全部完全清除。 - -## 9. 以字面常量取代魔法数 - -> Replace Magic Number with Symbolic Constant - -创建一个常量,根据其意义为它命名,并将字面常量换位这个常量。 - -## 10. 封装字段 - -> Encapsulate Field - -public 字段应当改为 private,并提供相应的访问函数。 - -## 11. 封装集合 - -> Encapsulate Collection - -函数返回集合的一个只读副本,并在这个类中提供添加/移除集合元素的函数。如果函数返回集合自身,会让用户得以修改集合内容而集合拥有者却一无所知。 - -## 12. 以数据类取代记录 - -> Replace Record with Data Class - -## 13. 以类取代类型码 - -> Replace Type Code with Class - -类中有一个数值类型码,但它并不影响类的行为,就用一个新类替换该数值类型码。如果类型码出现在 switch 语句中,需要使用 Replace Conditional with Polymorphism 去掉 switch,首先必须运用 Replace Type Code with Subcalss 或 Replace Type Code with State/Strategy 去掉类型码。 - -

    - -## 14. 以子类取代类型码 - -> Replace Type Code with Subcalsses - -有一个不可变的类型码,它会影响类的行为,以子类取代这个类型码。 - -

    - -## 15. 以 State/Strategy 取代类型码 - -> Replace Type Code with State/Strategy - -有一个可变的类型码,它会影响类的行为,以状态对象取代类型码。 - -和 Replace Type Code with Subcalsses 的区别是 Replace Type Code with State/Strategy 的类型码是动态可变的,前者通过继承的方式来实现,后者通过组合的方式来实现。因为类型码可变,如果通过继承的方式,一旦一个对象的类型码改变,那么就要改变用新的对象来取代旧对象,而客户端难以改变新的对象。但是通过组合的方式,改变引用的状态类是很容易的。 - -

    - -## 16. 以字段取代子类 - -> Replace Subclass with Fields - -各个子类的唯一差别只在“返回常量数据”的函数上。 - -

    - -# 八、简化条件表达式 - -## 1. 分解条件表达式 - -> Decompose Conditional - -对于一个复杂的条件语句,可以从 if、then、else 三个段落中分别提炼出独立函数。 - -```java -if(data.befor(SUMMER_START) || data.after(SUMMER_END)) - charge = quantity * winterRate + winterServiceCharge; -else charge = quantity * summerRate; -``` - -```java -if(notSummer(date)) - charge = winterCharge(quantity); -else charge = summerCharge(quantity); -``` - -## 2. 合并条件表达式 - -> Consolidate Conditional Expression - -有一系列条件测试,都得到相同结果。 - -将这些测试合并为一个条件表达式,并将这个条件表达式提炼成为一个独立函数。 - -```java -double disabilityAmount(){ - if (seniority < 2) return 0; - if (monthsDisabled > 12 ) return 0; - if (isPartTime) return 0; - // ... -} -``` -```java -double disabilityAmount(){ - if (isNotEligibleForDisability()) return 0; - // ... -} -``` - -## 3. 合并重复的条件片段 - -> Consolidate Duplicate Conditional Fragments - -在条件表达式的每个分支上有着相同的一段代码。 - -将这段重复代码搬移到条件表达式之外。 - -```java -if (isSpecialDeal()){ - total = price * 0.95; - send(); -} else { - total = price * 0.98; - send(); -} -``` - -```java -if (isSpecialDeal()) { - total = price * 0.95; -} else { - total = price * 0.98; -} -send(); -``` - -## 4. 移除控制标记 - -> Remove Control Flag - -在一系列布尔表达式中,某个变量带有“控制标记”的作用。 - -用 break 语 句或 return 语句来取代控制标记。 - -## 5. 以卫语句取代嵌套条件表达式 - -> Replace Nested Conditional with Guard Clauses - -如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回,这样的单独检查常常被称为“卫语句”(guard clauses)。 - -条件表达式通常有两种表现形式。第一种形式是:所有分支都属于正常行为。第二种形式则是:条件表达式提供的答案中只有一种是正常行为,其他都是不常见的情况,可以使用卫语句表现所有特殊情况。 - -```java -double getPayAmount() { - double result; - if (isDead) result = deadAmount(); - else { - if (isSeparated) result = separatedAmount(); - else { - if (isRetired) result = retiredAmount(); - else result = normalPayAmount(); - }; - } - return result; -}; -``` - -```java -double getPayAmount() { - if (isDead) return deadAmount(); - if (isSeparated) return separatedAmount(); - if (isRetired) return retiredAmount(); - return normalPayAmount(); -}; -``` - -## 6. 以多态取代条件表达式 - -> Replace Conditional with Polymorphism - -将这个条件表达式的每个分支放进一个子类内的覆写函数中,然后将原始函数声明为抽象函数。需要先使用 Replace Type Code with Subclass 或 Replace Type Code with State/Strategy 来建立继承结果。 - -```java -double getSpeed() { - switch (type) { - case EUROPEAN: - return getBaseSpeed(); - case AFRICAN: - return getBaseSpeed()- getLoadFactor()* numberOfCoconuts; - case NORWEGIAN_BLUE: - return isNailed ? 0 : getBaseSpeed(voltage); - } - throw new RuntimeException("Should be unreachable"); -} -``` - -

    - - -## 7. 引入 Null 对象 - -> Introduce Null Object - -将 null 值替换为 null 对象。这样做的好处在于,不需要询问对象是否为空,直接调用就行。 - -```java -if (customer == null) plan = BillingPlan.basic(); -else plan = customer.getPlan(); -``` - -## 8. 引入断言 - -> Introduce Assertion - -以断言明确表现某种假设。断言只能用于开发过程中,产品代码中不会有断言。 - -```java -double getExpenseLimit() { - // should have either expense limit or a primary project - return (expenseLimit != NULL_EXPENSE) ? expenseLimit : primaryProject.getMemberExpenseLimit(); -} -``` - -```java -double getExpenseLimit() { - Assert.isTrue (expenseLimit != NULL_EXPENSE || primaryProject != null); - return (expenseLimit != NULL_EXPENSE) ? expenseLimit : primaryProject.getMemberExpenseLimit(); -} -``` - -# 九、简化函数调用 - -## 1. 函数改名 - -> Rename Method - -使函数名能解释函数的用途。 - -## 2. 添加参数 - -> Add Parameter - -使函数不需要通过调用获得某个信息。 - -## 3. 移除参数 - -> Remove Parameter - -与 Add Parameter 相反,改用调用的方式来获得某个信息。 - -## 4. 将查询函数和修改函数分离 - -> Separate Query from Modifier - -某个函数即返回对象状态值,又修改对象状态。 - -应当建立两个不同的函数,其中一个负责查询,另一个负责修改。任何有返回值的函数,都不应该有看得到的副作用。 - -```java -getTotalOutstandingAndSetReadyForSummaries(); -``` - -```java -getTotalOutstanding(); -setReadyForSummaries(); -``` - -## 5. 令函数携带参数 - -> Parameterize Method - -若干函数做了类似的工作,但在函数本体中却包含了不同的值。 - -建立单一函数,以参数表达那些不同的值。 - -```java -fivePercentRaise(); -tenPercentRaise(); -``` -```java -raise(percentage); -``` - -## 6. 以明确函数取代参数 - -> Replace Parameter with Explicit Methods - -有一个函数,完全取决于参数值而采取不同行为。 - -针对该参数的每一个可能值,建立一个独立函数。 - -```java -void setValue(String name, int value){ - if (name.equals("height")){ - height = value; - return; - } - if (name.equals("width")){ - width = value; - return; - } - Assert.shouldNeverReachHere(); -} -``` - -```java -void setHeight(int arg){ - height = arg; -} -void setWidth(int arg){ - width = arg; -} -``` - -## 7. 保持对象完整 - -> Preserve Whole Object - -从某个对象中取出若干值,将它们作为某一次函数调用时的参数。 - -改为传递整个对象。 - -```java -int low = daysTempRange().getLow(); -int high = daysTempRange().getHigh(); -withinPlan = plan.withinRange(low,high); -``` - -```java -withinPlan = plan.withinRange(daysTempRange()); -``` - -## 8. 以函数取代参数 - -> Replace Parameter with Methods - -对象调用某个函数,并将所得结果作为参数,传递给另一个函数。而接受该参数的函数本身也能够调用前一个函数。 - -让参数接收者去除该项参数,而是直接调用前一个函数。 - -```java -int basePrice = _quantity * _itemPrice; -discountLevel = getDiscountLevel(); -double finalPrice = discountedPrice (basePrice, discountLevel); -``` - -```java -int basePrice = _quantity * _itemPrice; -double finalPrice = discountedPrice (basePrice); -``` - -## 9. 引入参数对象 - -> Introduce Parameter Object - -某些参数总是很自然地同时出现,这些参数就是 Data Clumps。 - -以一个对象取代这些参数。 - -

    - -## 10. 移除设值函数 - -> Remove Setting Method - -类中的某个字段应该在对象创建时被设值,然后就不再改变。 - -去掉该字段的所有设值函数,并将该字段设为 final。 - -## 11. 隐藏函数 - -> Hide Method - -有一个函数,从来没有被其他任何类用到。 - -将这个函数修改为 private。 - -## 12. 以工厂函数取代构造函数 - -> Replace Constructor with Factory Method - -希望在创建对象时不仅仅是做简单的建构动作。 - -将构造函数替换为工厂函数。 - -## 13. 封装向下转型 - -> Encapsulate Downcast - -某个函数返回的对象,需要由函数调用者执行向下转型(downcast)。 - -将向下转型动作移到函数中。 - -```java -Object lastReading(){ - return readings.lastElement(); -} -``` -```java -Reading lastReading(){ - return (Reading)readings.lastElement(); -} -``` - -## 14. 以异常取代错误码 - -> Replace Error Code with Exception - -某个函数返回一个特定的代码,用以表示某种错误情况。 - -改用异常,异常将普通程序和错误处理分开,使代码更容易理解。 - -## 15. 以测试取代异常 - -> Replace Exception with Test - -面对一个调用者可以预先检查的条件,你抛出了一个异常。 - -修改调用者,使它在调用函数之前先做检查。 - -```java -double getValueForPeriod(int periodNumber) { - try { - return values[periodNumber]; - } catch (ArrayIndexOutOfBoundsException e) { - return 0; - } -} -``` -```java -double getValueForPeriod(int periodNumber) { - if (periodNumber >= values.length) return 0; - return values[periodNumber]; -``` - -# 十、处理概括关系 - -## 1. 字段上移 - -> Pull Up Field - -两个子类拥有相同的字段。 - -将该字段移至超类。 - -## 2. 函数上移 - -> Pull Up Method - -有些函数,在各个子类中产生完全相同的结果。 - -将该函数移至超类。 - -## 3. 构造函数本体上移 - -> Pull Up Constructor Body - -你在各个子类中拥有一些构造函数,它们的本体几乎完全一致。 - -在超类中新建一个构造函数,并在子类构造函数中调用它。 - -```java -class Manager extends Employee... - -public Manager(String name, String id, int grade) { - this.name = name; - this.id = id; - this.grade = grade; -} -``` - -```java -public Manager(String name, String id, int grade) { - super(name, id); - this.grade = grade; -} -``` - -## 4. 函数下移 - -> Push Down Method - -超类中的某个函数只与部分子类有关。 - -将这个函数移到相关的那些子类去。 - -## 5. 字段下移 - -> Push Down Field - -超类中的某个字段只被部分子类用到。 - -将这个字段移到需要它的那些子类去。 - -## 6. 提炼子类 - -> Extract Subclass - -类中的某些特性只被某些实例用到。 - -新建一个子类,将上面所说的那一部分特性移到子类中。 - -## 7. 提炼超类 - -> Extract Superclass - -两个类有相似特性。 - -为这两个类建立一个超类,将相同特性移至超类。 - -## 8. 提炼接口 - -> Extract Interface - -若干客户使用类接口中的同一子集,或者两个类的接口有部分相同。 - -将相同的子集提炼到一个独立接口中。 - -## 9. 折叠继承体系 - -> Collapse Hierarchy - -超类和子类之间无太大区别。 - -将它们合为一体。 - -## 10. 塑造模板函数 - -> Form Template Method - -你有一些子类,其中相应的某些函数以相同顺序执行类似的操作,但各个操作的细节上有所不同。 - -将这些操作分别放进独立函数中,并保持它们都有相同的签名,于是原函数也就变得相同了。然后将原函数上移至超类。(模板方法模式) - -## 11. 以委托取代继承 - -> Replace Inheritance with Delegation - -某个子类只使用超类接口中的一部分,或是根本不需要继承而来的数据。 - -在子类中新建一个字段用以保存超类,调整子类函数,令它改而委托超类,然后去掉两者之间的继承关系。 - -## 12. 以继承取代委托 - -> Replace Delegation with Inheritance - -你在两个类之间使用委托关系,并经常为整个接口编写许多极简单的委托函数。 - -让委托类继承受托类。 diff --git a/notes/面向对象思想.md b/notes/面向对象思想.md index b4e5f032..b4e4d054 100644 --- a/notes/面向对象思想.md +++ b/notes/面向对象思想.md @@ -1,349 +1,285 @@ - -* [一、设计原则](#一设计原则) - * [S.O.L.I.D](#solid) - * [其他常见原则](#其他常见原则) -* [二、三大特性](#二三大特性) - * [封装](#封装) - * [继承](#继承) - * [多态](#多态) -* [三、UML](#三uml) - * [类图](#类图) - * [时序图](#时序图) -* [参考资料](#参考资料) - +[TOC] + +# S.O.L.I.D + +S.O.L.I.D 是面向对象设计和编程 (OOD&OOP) 中几个重要编码原则 (Programming Priciple) 的首字母缩写。 + +| 简写    | 全拼    | 中文翻译 | +| -- | -- | -- | +|SRP|    The Single Responsibility Principle    | 单一责任原则 | +|OCP|    The Open Closed Principle            | 开放封闭原则 | +|LSP|    The Liskov Substitution Principle    | 里氏替换原则 | +|ISP|    The Interface Segregation Principle    | 接口分离原则 | +|DIP|    The Dependency Inversion Principle    | 依赖倒置原则 | -# 一、设计原则 +## 1. 单一责任原则 -设计原则可以帮助我们避免那些糟糕的设计。 +当需要修改某个类的时候原因有且只有一个。换句话说就是让一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类。 -## S.O.L.I.D +## 2. 开放封闭原则 -| 简写 | 全拼 | 中文翻译 | -| -- | -- | -- | -| SRP | The Single Responsibility Principle | 单一责任原则 | -| OCP | The Open Closed Principle | 开放封闭原则 | -| LSP | The Liskov Substitution Principle | 里氏替换原则 | -| ISP | The Interface Segregation Principle | 接口分离原则 | -| DIP | The Dependency Inversion Principle | 依赖倒置原则 | +软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。 -### 1. 单一责任原则 +## 3. 里氏替换原则 -> 修改一个类的原因应该只有一个。 +当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有 is-a 关系。 -换句话说就是让一个类只负责一件事,当这个类需要做过多事情的时候,就需要分解这个类。 +## 4. 接口分离原则 -如果一个类承担的职责过多,就等于把这些职责耦合在了一起,一个职责的变化可能会削弱这个类完成其它职责的能力。 +不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。 -### 2. 开放封闭原则 +## 5. 依赖倒置原则 -> 类应该对扩展开放,对修改关闭。 +1.  高层模块不应该依赖于低层模块,二者都应该依赖于抽象 +2.  抽象不应该依赖于细节,细节应该依赖于抽象 -扩展就是添加新功能的意思,因此该原则要求在添加新功能时不需要修改代码。 +# 封装、继承、多态 -符合开闭原则最典型的设计模式是装饰者模式,它可以动态地将责任附加到对象上,而不用去修改类的代码。 +封装、继承、多态是面向对象的三大特性。 -### 3. 里氏替换原则 +## 1. 封装 -> 子类对象必须能够替换掉所有父类对象。 - -继承是一种 IS-A 关系,子类需要能够当成父类来使用,并且需要比父类更特殊。 - -如果不满足这个原则,那么各个子类的行为上就会有很大差异,增加继承体系的复杂度。 - -### 4. 接口分离原则 - -> 不应该强迫客户依赖于它们不用的方法。 - -因此使用多个专门的接口比使用单一的总接口总要好。 - -### 5. 依赖倒置原则 - -> 高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 -> 抽象不应该依赖于细节,细节应该依赖于抽象。 - -高层模块包含一个应用程序中重要的策略选择和业务模块,如果高层模块依赖于底层模块,那么底层模块的改动就会直接影响到高层模块,从而迫使高层模块也需要改动。 - -依赖于抽象意味着: - -- 任何变量都不应该持有一个指向具体类的指针或者引用; -- 任何类都不应该从具体类派生; -- 任何方法都不应该覆写它的任何基类中的已经实现的方法。 - -## 其他常见原则 - -除了上述的经典原则,在实际开发中还有下面这些常见的设计原则。 - -| 简写 | 全拼 | 中文翻译 | -| -- | -- | -- | -|LOD| The Law of Demeter | 迪米特法则 | -|CRP| The Composite Reuse Principle | 合成复用原则 | -|CCP| The Common Closure Principle | 共同封闭原则 | -|SAP| The Stable Abstractions Principle | 稳定抽象原则 | -|SDP| The Stable Dependencies Principle | 稳定依赖原则 | - -### 1. 迪米特法则 - -迪米特法则又叫作最少知道原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。 - -### 2. 合成复用原则 - -尽量使用对象组合,而不是继承来达到复用的目的。 - -### 3. 共同封闭原则 - -一起修改的类,应该组合在一起(同一个包里)。如果必须修改应用程序里的代码,我们希望所有的修改都发生在一个包里(修改关闭),而不是遍布在很多包里。 - -### 4. 稳定抽象原则 - -最稳定的包应该是最抽象的包,不稳定的包应该是具体的包,即包的抽象程度跟它的稳定性成正比。 - -### 5. 稳定依赖原则 - -包之间的依赖关系都应该是稳定方向依赖的,包要依赖的包要比自己更具有稳定性。 - -# 二、三大特性 - -## 封装 - -利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。 +利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。 封装有三大好处: -1. 减少耦合 -2. 隐藏内部细节,因此内部结构可以自由修改 -3. 可以对成员进行更精确的控制 +1. 良好的封装能够减少耦合。 +2. 类内部的结构可以自由修改。 +3. 可以对成员进行更精确的控制。 +4. 隐藏信息,实现细节。 -以下 Person 类封装 name、gender、age 等属性,外界只能通过 get() 方法获取一个 Person 对象的 name 属性和 gender 属性,而无法获取 age 属性,但是 age 属性可以供 work() 方法使用。 +以下 Person 类封装 name、gender、age 等属性,外界只能通过 get() 方法获取一个 Person 对象的 name 属性和 gender 属性,而无法获取 age 属性,但是 age 属性可以供 work() 方法使用。 -注意到 gender 属性使用 int 数据类型进行存储,封装使得用户注意不到这种实现细节。并且在需要修改 gender 属性使用的数据类型时,也可以在不影响客户端代码的情况下进行。 +注意到 gender 属性使用 int 数据类型进行存储,封装使得用户注意不到这种实现细节。并且在需要修改使用的数据类型时,也可以在不影响客户端代码的情况下进行。 ```java -public class Person { - private String name; - private int gender; - private int age; +public class Person { +    private String name; +    private int gender; +    private int age; - public String getName() { - return name; - } +    public String getName() { +        return name; +    } - public String getGender() { - return gender == 0 ? "man" : "woman"; - } +    public String getGender() { +        return gender == 0 ? "man" : "woman"; +    } - public void work() { - if(18 <= age && age <= 50) { - System.out.println(name + " is working very hard!"); - } else { - System.out.println(name + " can't work any more!"); - } - } +    public void work() { +        if(18 <= age && age <= 50) { +            System.out.println(name + " is working very hard!"); +        } else { +            System.out.println(name + " can't work!"); +        } +    } } ``` -## 继承 +## 2. 继承 -继承实现了 **IS-A** 关系,例如 Cat 和 Animal 就是一种 IS-A 关系,因此 Cat 可以继承自 Animal,从而获得 Animal 非 private 的属性和方法。 +继承实现了 **is-a** 关系,例如 Cat 和 Animal 就是一种 is-a 关系,因此可以将 Cat 继承自 Animal,从而获得 Animal 非 private 的属性和方法。 -Cat 可以当做 Animal 来使用,也就是说可以使用 Animal 引用 Cat 对象。父类引用指向子类对象称为 **向上转型** 。 +Cat 可以当做 Animal 来使用,也就是可以使用 Animal 引用 Cat 对象,这种子类转换为父类称为 **向上转型**。 + +继承应该遵循里氏替换原则:当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有 is-a 关系。 ```java -Animal animal = new Cat(); +Animal animal = new Cat(); ``` -继承应该遵循里氏替换原则,子类对象必须能够替换掉所有父类对象。 +## 3. 多态 -## 多态 +多态分为编译时多态和运行时多态。编译时多态主要指方法的重装,运行时多态指程序中定义的对象引用所指向的具体类型在运行期间才确定。 -多态分为编译时多态和运行时多态。编译时多态主要指方法的重载,运行时多态指程序中定义的对象引用所指向的具体类型在运行期间才确定。 +多态有三个条件:1. 继承;2. 覆盖父类方法;3. 向上转型。 -运行时多态有三个条件: - -1. 继承 -2. 覆盖 -3. 向上转型 - -下面的代码中,乐器类(Instrument)有两个子类:Wind 和 Percussion,它们都覆盖了父类的 play() 方法,并且在 main() 方法中使用父类 Instrument 来引用 Wind 和 Percussion 对象。在 Instrument 引用调用 play() 方法时,会执行实际引用对象所在类的 play() 方法,而不是 Instrument 类的方法。 +下面的代码中,乐器类(Instrument)有两个子类:Wind 和 Percussion,它们都覆盖了 play() 方法,并且在 main() 方法中使用父类 Instrument 来引用 Wind 和 Percussion 对象。在 Instrument 引用调用 play() 方法时,会执行实际引用对象所在类的 play() 方法,而不是 Instrument 类的方法。 ```java -public class Instrument { - public void play() { - System.out.println("Instument is playing..."); - } +public class Instrument { +    public void play() { +        System.out.println("Instument is playing..."); +    } } -public class Wind extends Instrument { - public void play() { - System.out.println("Wind is playing..."); - } +public class Wind extends Instrument { +    public void play() { +        System.out.println("Wind is playing..."); +    } } -public class Percussion extends Instrument { - public void play() { - System.out.println("Percussion is playing..."); - } +public class Percussion extends Instrument { +    public void play() { +        System.out.println("Percussion is playing..."); +    } } -public class Music { - public static void main(String[] args) { - List instruments = new ArrayList<>(); - instruments.add(new Wind()); - instruments.add(new Percussion()); - for(Instrument instrument : instruments) { - instrument.play(); - } - } +public class Music { +    public static void main(String[] args) { +        List instruments = new ArrayList<>(); +        instruments.add(new Wind()); +        instruments.add(new Percussion()); +        for(Instrument instrument : instruments) { +            instrument.play(); +        } +    } } + ``` -# 三、UML -## 类图 -### 1. 继承相关 +# UML -继承有两种形式 : 泛化(Generalize)和实现(Realize),表现为 IS-A 关系。 +## 1. 类图 -#### 泛化关系 (Generalize) +**1.1 继承相关** -从具体类中继承。 +继承有两种形式 : 泛化(generalize)和实现(realize),表现为 is-a 关系。 -

    +① 泛化关系 (generalization) -#### 实现关系 (Realize) +从具体类中继承 -从抽象类或者接口中继承。 +![](index_files/29badd92-109f-4f29-abb9-9857f5973928.png) -

    +② 实现关系 (realize) -### 2. 整体和部分 +从抽象类或者接口中继承 -#### 聚合关系 (Aggregation) +![](index_files/4b16e1d3-3a60-472c-9756-2f31b1c48abe.png) -表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。以下表示 B 由 A 组成: +**1.2 整体和部分** -

    +① 聚合关系 (aggregation) -#### 组合关系 (Composition) +表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。以下表示 B 由 A 组成: + +![](index_files/34259bb8-ca3a-4872-8771-9e946782d9c3.png) + +② 组合关系 (composition) 和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。 -

    +![](index_files/7dda050d-ac35-4f47-9f51-18f18ed6fa9a.png) -### 3. 相互联系 +**1.3 相互联系** -#### 关联关系 (Association) +① 关联关系 (association) -表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。 +表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。 -

    +![](index_files/4ccd294c-d6b2-421b-839e-d88336ff5fb7.png) -#### 依赖关系 (Dependency) +② 依赖关系 (dependency) -和关联关系不同的是 , 依赖关系是在运行过程中起作用的。一般依赖作为类的构造器或者方法的参数传入。双向依赖时一种不好的设计。 +和关联关系不同的是 , 依赖关系是在运行过程中起作用的。一般依赖作为类的构造器或者方法的参数传入。双向依赖时一种不好的设计。 -

    +![](index_files/47ca2614-509f-476e-98fc-50ec9f9d43c0.png) -## 时序图 +## 2. 时序图 -### 1. 定义 +http://www.cnblogs.com/wolf-sun/p/UML-Sequence-diagram.html + +**2.1 定义** 时序图描述了对象之间传递消息的时间顺序,它用来表示用例的行为顺序。它的主要作用是通过对象间的交互来描述用例(注意是对象),从而寻找类的操作。 -### 2. 赤壁之战时序图 +**2.2 赤壁之战时序图** 从虚线从上往下表示时间的推进。 -

    +![](index_files/80c5aff8-fc46-4810-aeaa-215b5c60a003.png) 可见,通过时序图可以知道每个类具有以下操作: ```java -publc class 刘备 { - public void 应战 (); +publc class 刘备 { +   public void 应战 (); } -publc class 孔明 { - public void 拟定策略 (); - public void 联合孙权 (); - private void 借东风火攻 (); +publc class  孔明 { +  public void  拟定策略 (); +  public void  联合孙权 (); +  private void 借东风火攻 (); } -public class 关羽 { - public void 防守荊州 (); +public class 关羽 { +    public void  防守荊州 (); } -public class 张飞 { - public void 防守荆州前线 (); +public class 张飞 { +   public void  防守荆州前线 (); } -public class 孙权 { - public void 领兵相助 (); +public class 孙权 { +   public void  领兵相助 (); } ``` -### 3. 活动图、时序图之间的关系 +**2.3 活动图、时序图之间的关系** 活动图示从用户的角度来描述用例; 时序图是从计算机的角度(对象间的交互)描述用例。 -### 4. 类图与时序图的关系 +**2.4 类图与时序图的关系** 类图描述系统的静态结构,时序图描述系统的动态行为。 -### 5. 时序图的组成 +**2.5 时序图的组成** -#### 对象 +① 对象 有三种表现形式 -

    +![](index_files/25b8adad-2ef6-4f30-9012-c306b4e49897.png) 在画图时,应该遵循以下原则: -1. 把交互频繁的对象尽可能地靠拢。 +1. 把交互频繁的对象尽可能地靠拢。 -2. 把初始化整个交互活动的对象(有时是一个参与者)放置在最左边。 +2. 把初始化整个交互活动的对象(有时是一个参与者)放置在最左边。 -#### 生命线 +② 生命线 生命线从对象的创建开始到对象销毁时终止 -

    +![](index_files/b7b0eac6-e7ea-4fb6-8bfb-95fec6f235e2.png) -#### 消息 +③ 消息 对象之间的交互式通过发送消息来实现的。 -消息有 4 种类型: +消息有 4 种类型: -1\. 简单消息,不区分同步异步。 +1\. 简单消息,不区分同步异步。 -

    +![](index_files/a13b62da-0fa8-4224-a615-4cadacc08871.png) -2\. 同步消息,发送消息之后需要暂停活动来等待回应。 +2\. 同步消息,发送消息之后需要暂停活动来等待回应。 -

    +![](index_files/33821037-dc40-4266-901c-e5b38e618426.png) -3\. 异步消息,发送消息之后不需要等待。 +3\. 异步消息,发送消息之后不需要等待。 -

    +![](index_files/dec6c6cc-1b5f-44ed-b8fd-464fcf849dac.png) -4\. 返回消息,可选。 +4\. 返回消息,可选。 -#### 激活 +④ 激活 生命线上的方框表示激活状态,其它时间处于休眠状态。 -

    +![](index_files/6ab5de9b-1c1e-4118-b2c3-fb6c7ed7de6f.png) -# 参考资料 -- Java 编程思想 -- 敏捷软件开发:原则、模式与实践 -- [面向对象设计的 SOLID 原则](http://www.cnblogs.com/shanyou/archive/2009/09/21/1570716.html) -- [看懂 UML 类图和时序图](http://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html#generalization) -- [UML 系列——时序图(顺序图)sequence diagram](http://www.cnblogs.com/wolf-sun/p/UML-Sequence-diagram.html) -- [面向对象编程三大特性 ------ 封装、继承、多态](http://blog.csdn.net/jianyuerensheng/article/details/51602015) +# 参考资料 + +- Java 编程思想 +- [ 面向对象设计的 SOLID 原则 ](http://www.cnblogs.com/shanyou/archive/2009/09/21/1570716.html) +- [ 看懂 UML 类图和时序图 ](http://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html#generalization) +- [UML 系列——时序图(顺序图)sequence diagram](http://www.cnblogs.com/wolf-sun/p/UML-Sequence-diagram.html) +- [ 面向对象编程三大特性 ------ 封装、继承、多态 ](http://blog.csdn.net/jianyuerensheng/article/details/51602015) \ No newline at end of file From 23d3abb9358714d945b759275ebbd5eff88aa8b5 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 25 Mar 2018 21:47:21 +0800 Subject: [PATCH 13/17] auto commit --- notes/2016 校招真题题解.md | 742 +++ notes/Git.md | 158 + notes/HTTP.md | 717 +++ notes/JDK 中的设计模式.md | 283 + notes/Java IO.md | 404 ++ notes/Java 基础.md | 632 ++ notes/Java 容器.md | 755 +++ notes/Java 并发.md | 930 +++ notes/Java 虚拟机.md | 686 +++ notes/Leetcode 题解.md | 5291 +++++++++++++++++ notes/Linux.md | 1398 +++++ notes/MySQL.md | 400 ++ notes/Redis.md | 460 ++ notes/SQL.md | 732 +++ notes/一致性协议.md | 155 + notes/代码可读性.md | 342 ++ notes/代码风格规范.md | 14 + notes/分布式基础.md | 206 + notes/分布式问题分析.md | 316 + notes/剑指 offer 题解.md | 2581 ++++++++ notes/数据库系统原理.md | 611 ++ notes/正则表达式.md | 400 ++ notes/算法.md | 1621 +++++ notes/计算机操作系统.md | 889 +++ notes/计算机网络.md | 888 +++ notes/设计模式.md | 1800 ++++++ notes/重构.md | 1252 ++++ notes/面向对象思想.md | 370 +- pics/02986f62-c641-44a8-a55f-983581490e0c.png | Bin 0 -> 418816 bytes pics/10f5e35b-1c71-4717-9e80-47f259702642.jpg | Bin 0 -> 292864 bytes pics/3939369b-3a4a-48a0-b9eb-3efae26dd400.png | Bin 0 -> 142336 bytes pics/426df589-6f97-4622-b74d-4a81fcb1da8e.png | Bin 0 -> 321536 bytes pics/45e0e0bf-386d-4280-a341-a0b9496c7674.png | Bin 0 -> 44032 bytes pics/77f81379-3987-4036-8d7c-93a4dcf7b05d.jpg | Bin 0 -> 430080 bytes pics/94589319-975f-490b-8bae-90b3a4953559.png | Bin 0 -> 173056 bytes pics/d1f81ac3-9fdb-4371-a49d-ca84917aa89f.jpg | Bin 0 -> 299008 bytes pics/d4eef1e2-5703-4ca4-82ab-8dda93d6b81f.png | Bin 0 -> 130048 bytes 37 files changed, 24880 insertions(+), 153 deletions(-) create mode 100644 notes/2016 校招真题题解.md create mode 100644 notes/Git.md create mode 100644 notes/HTTP.md create mode 100644 notes/JDK 中的设计模式.md create mode 100644 notes/Java IO.md create mode 100644 notes/Java 基础.md create mode 100644 notes/Java 容器.md create mode 100644 notes/Java 并发.md create mode 100644 notes/Java 虚拟机.md create mode 100644 notes/Leetcode 题解.md create mode 100644 notes/Linux.md create mode 100644 notes/MySQL.md create mode 100644 notes/Redis.md create mode 100644 notes/SQL.md create mode 100644 notes/一致性协议.md create mode 100644 notes/代码可读性.md create mode 100644 notes/代码风格规范.md create mode 100644 notes/分布式基础.md create mode 100644 notes/分布式问题分析.md create mode 100644 notes/剑指 offer 题解.md create mode 100644 notes/数据库系统原理.md create mode 100644 notes/正则表达式.md create mode 100644 notes/算法.md create mode 100644 notes/计算机操作系统.md create mode 100644 notes/计算机网络.md create mode 100644 notes/设计模式.md create mode 100644 notes/重构.md create mode 100644 pics/02986f62-c641-44a8-a55f-983581490e0c.png create mode 100644 pics/10f5e35b-1c71-4717-9e80-47f259702642.jpg create mode 100644 pics/3939369b-3a4a-48a0-b9eb-3efae26dd400.png create mode 100644 pics/426df589-6f97-4622-b74d-4a81fcb1da8e.png create mode 100644 pics/45e0e0bf-386d-4280-a341-a0b9496c7674.png create mode 100644 pics/77f81379-3987-4036-8d7c-93a4dcf7b05d.jpg create mode 100644 pics/94589319-975f-490b-8bae-90b3a4953559.png create mode 100644 pics/d1f81ac3-9fdb-4371-a49d-ca84917aa89f.jpg create mode 100644 pics/d4eef1e2-5703-4ca4-82ab-8dda93d6b81f.png diff --git a/notes/2016 校招真题题解.md b/notes/2016 校招真题题解.md new file mode 100644 index 00000000..da6709ab --- /dev/null +++ b/notes/2016 校招真题题解.md @@ -0,0 +1,742 @@ + +* [前言](#前言) +* [1. 小米-小米Git](#1-小米-小米git) +* [2. 小米-懂二进制](#2-小米-懂二进制) +* [3. 小米-中国牛市](#3-小米-中国牛市) +* [4. 微软-LUCKY STRING](#4-微软-lucky-string) +* [5. 微软-Numeric Keypad](#5-微软-numeric-keypad) +* [6. 微软-Spring Outing](#6-微软-spring-outing) +* [7. 微软-S-expression](#7-微软-s-expression) +* [8. 华为-最高分是多少](#8-华为-最高分是多少) +* [9. 华为-简单错误记录](#9-华为-简单错误记录) +* [10. 华为-扑克牌大小](#10-华为-扑克牌大小) +* [11. 去哪儿-二分查找](#11-去哪儿-二分查找) +* [12. 去哪儿-首个重复字符](#12-去哪儿-首个重复字符) +* [13. 去哪儿-寻找Coder](#13-去哪儿-寻找coder) +* [14. 美团-最大差值](#14-美团-最大差值) +* [15. 美团-棋子翻转](#15-美团-棋子翻转) +* [16. 美团-拜访](#16-美团-拜访) +* [17. 美团-直方图内最大矩形](#17-美团-直方图内最大矩形) +* [18. 美团-字符串计数](#18-美团-字符串计数) +* [19. 美团-平均年龄](#19-美团-平均年龄) +* [20. 百度-罪犯转移](#20-百度-罪犯转移) +* [22. 百度-裁减网格纸](#22-百度-裁减网格纸) +* [23. 百度-钓鱼比赛](#23-百度-钓鱼比赛) +* [24. 百度-蘑菇阵](#24-百度-蘑菇阵) + + + +# 前言 + +省略的代码: + +```java +import java.util.*; +``` + +```java +public class Solution { +} +``` + +```java +public class Main { + public static void main(String[] args) { + Scanner in = new Scanner(System.in); + while (in.hasNext()) { + } + } +} +``` + +# 1. 小米-小米Git + +- 重建多叉树 +- 使用 LCA + +```java +private class TreeNode { + int id; + List childs = new ArrayList<>(); + + TreeNode(int id) { + this.id = id; + } +} + +public int getSplitNode(String[] matrix, int indexA, int indexB) { + int n = matrix.length; + boolean[][] linked = new boolean[n][n]; // 重建邻接矩阵 + for (int i = 0; i < n; i++) { + for (int j = 0; j < n; j++) { + linked[i][j] = matrix[i].charAt(j) == '1'; + } + } + TreeNode tree = constructTree(linked, 0); + TreeNode ancestor = LCA(tree, new TreeNode(indexA), new TreeNode(indexB)); + return ancestor.id; +} + +private TreeNode constructTree(boolean[][] linked, int root) { + TreeNode tree = new TreeNode(root); + for (int i = 0; i < linked[root].length; i++) { + if (linked[root][i]) { + linked[i][root] = false; // 因为题目给的邻接矩阵是双向的,在这里需要把它转为单向的 + tree.childs.add(constructTree(links, i)); + } + } + return tree; +} + +private TreeNode LCA(TreeNode root, TreeNode p, TreeNode q) { + if (root == null || root.id == p.id || root.id == q.id) return root; + TreeNode ancestor = null; + int cnt = 0; + for (int i = 0; i < root.childs.size(); i++) { + TreeNode tmp = LCA(root.childs.get(i), p, q); + if (tmp != null) { + ancestor = tmp; + cnt++; + } + } + return cnt == 2 ? root : ancestor; +} +``` + +# 2. 小米-懂二进制 + +对两个数进行异或,结果的二进制表示为 1 的那一位就是两个数不同的位。 + +```java +public int countBitDiff(int m, int n) { + return Integer.bitCount(m ^ n); +} +``` + +# 3. 小米-中国牛市 + +背包问题,可以设一个大小为 2 的背包。 + +状态转移方程如下: + +```html +dp[i, j] = max(dp[i, j-1], prices[j] - prices[jj] + dp[i-1, jj]) { jj in range of [0, j-1] } = max(dp[i, j-1], prices[j] + max(dp[i-1, jj] - prices[jj])) +``` + +```java +public int calculateMax(int[] prices) { + int n = prices.length; + int[][] dp = new int[3][n]; + for (int i = 1; i <= 2; i++) { + int localMax = dp[i - 1][0] - prices[0]; + for (int j = 1; j < n; j++) { + dp[i][j] = Math.max(dp[i][j - 1], prices[j] + localMax); + localMax = Math.max(localMax, dp[i - 1][j] - prices[j]); + } + } + return dp[2][n - 1]; +} +``` + +# 4. 微软-LUCKY STRING + +- 斐波那契数列可以预计算; +- 从头到尾遍历字符串的过程,每一轮循环都使用一个 Set 来保存从 i 到 j 出现的字符,并且 Set 保证了字符都不同,因此 Set 的大小就是不同字符的个数。 + +```java +Set fibSet = new HashSet<>(Arrays.asList(1, 2, 3, 5, 8, 13, 21, 34, 55, 89)); +Scanner in = new Scanner(System.in); +String str = in.nextLine(); +int n = str.length(); +Set ret = new HashSet<>(); +for (int i = 0; i < n; i++) { + Set set = new HashSet<>(); + for (int j = i; j < n; j++) { + set.add(str.charAt(j)); + int cnt = set.size(); + if (fibSet.contains(cnt)) { + ret.add(str.substring(i, j + 1)); + } + } +} +String[] arr = ret.toArray(new String[ret.size()]); +Arrays.sort(arr); +for (String s : arr) { + System.out.println(s); +} +``` + +# 5. 微软-Numeric Keypad + +```java +private static int[][] canReach = { + {1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // 0 + {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 1 + {1, 0, 1, 1, 0, 1, 1, 0, 1, 1}, // 2 + {0, 0, 0, 1, 0, 0, 1, 0, 0, 1}, // 3 + {1, 0, 0, 0, 1, 1, 1, 1, 1, 1}, // 4 + {1, 0, 0, 0, 0, 1, 1, 0, 1, 1}, // 5 + {0, 0, 0, 0, 0, 0, 1, 0, 0, 1}, // 6 + {1, 0, 0, 0, 0, 0, 0, 1, 1, 1}, // 7 + {1, 0, 0, 0, 0, 0, 0, 0, 1, 1}, // 8 + {0, 0, 0, 0, 0, 0, 0, 0, 0, 1} // 9 +}; + +private static boolean isLegal(char[] chars, int idx) { + if (idx >= chars.length || idx < 0) return true; + int cur = chars[idx] - '0'; + int next = chars[idx + 1] - '0'; + return canReach[cur][next] == 1; +} + +public static void main(String[] args) { + Scanner in = new Scanner(System.in); + int T = Integer.valueOf(in.nextLine()); + for (int i = 0; i < T; i++) { + String line = in.nextLine(); + char[] chars = line.toCharArray(); + for (int j = 0; j < chars.length - 1; j++) { + while (!isLegal(chars, j)) { + if (--chars[j + 1] < '0') { + chars[j--]--; + } + for (int k = j + 2; k < chars.length; k++) { + chars[k] = '9'; + } + } + } + System.out.println(new String(chars)); + } +} +``` + +# 6. 微软-Spring Outing + +下面以 N = 3,K = 4 来进行讨论。 + +初始时,令第 0 个地方成为待定地点,也就是呆在家里。 + +从第 4 个地点开始投票,每个人只需要比较第 4 个地方和第 0 个地方的优先级,里,如果超过半数的人选择了第 4 个地方,那么更新第 4 个地方成为待定地点。 + +从后往前不断重复以上步骤,不断更新待定地点,直到所有地方都已经投票。 + +上面的讨论中,先令第 0 个地点成为待定地点,是因为这样的话第 4 个地点就只需要和这个地点进行比较,而不用考虑其它情况。如果最开始先令第 1 个地点成为待定地点,那么在对第 2 个地点进行投票时,每个人不仅要考虑第 2 个地点与第 1 个地点的优先级,也要考虑与其后投票地点的优先级。 + +```java +int N = in.nextInt(); +int K = in.nextInt(); +int[][] votes = new int[N][K + 1]; +for (int i = 0; i < N; i++) { + for (int j = 0; j < K + 1; j++) { + int place = in.nextInt(); + votes[i][place] = j; + } +} +int ret = 0; +for (int place = K; place > 0; place--) { + int cnt = 0; + for (int i = 0; i < N; i++) { + if (votes[i][place] < votes[i][ret]) { + cnt++; + } + } + if (cnt > N / 2) { + ret = place; + } +} +System.out.println(ret == 0 ? "otaku" : ret); +``` + +# 7. 微软-S-expression + +# 8. 华为-最高分是多少 + +```java +int N = in.nextInt(); +int M = in.nextInt(); +int[] scores = new int[N]; +for (int i = 0; i < N; i++) { + scores[i] = in.nextInt(); +} +for (int i = 0; i < M; i++) { + String str = in.next(); + if (str.equals("U")) { + int id = in.nextInt() - 1; + int newScore = in.nextInt(); + scores[id] = newScore; + } else { + int idBegin = in.nextInt() - 1; + int idEnd = in.nextInt() - 1; + int ret = 0; + if (idBegin > idEnd) { + int t = idBegin; + idBegin = idEnd; + idEnd = t; + } + for (int j = idBegin; j <= idEnd; j++) { + ret = Math.max(ret, scores[j]); + } + System.out.println(ret); + } +} +``` + +# 9. 华为-简单错误记录 + +```java +HashMap map = new LinkedHashMap<>(); +while (in.hasNextLine()) { + String s = in.nextLine(); + String key = s.substring(s.lastIndexOf('\\') + 1); + map.put(key, map.containsKey(key) ? map.get(key) + 1 : 1); +} +List> list = new LinkedList<>(map.entrySet()); +Collections.sort(list, (o1, o2) -> o2.getValue() - o1.getValue()); +for (int i = 0; i < 8 && i < list.size(); i++) { + String[] token = list.get(i).getKey().split(" "); + String filename = token[0]; + String line = token[1]; + if (filename.length() > 16) filename = filename.substring(filename.length() - 16); + System.out.println(filename + " " + line + " " + list.get(i).getValue()); +} +``` + +# 10. 华为-扑克牌大小 + +```java +public class Main { + + private Map map = new HashMap<>(); + + public Main() { + map.put("3", 0); + map.put("4", 1); + map.put("5", 2); + map.put("6", 3); + map.put("7", 4); + map.put("8", 5); + map.put("9", 6); + map.put("10", 7); + map.put("J", 8); + map.put("Q", 9); + map.put("K", 10); + map.put("A", 11); + map.put("2", 12); + map.put("joker", 13); + map.put("JOKER ", 14); + } + + private String play(String s1, String s2) { + String[] token1 = s1.split(" "); + String[] token2 = s2.split(" "); + CardType type1 = computeCardType(token1); + CardType type2 = computeCardType(token2); + if (type1 == CardType.DoubleJoker) return s1; + if (type2 == CardType.DoubleJoker) return s2; + if (type1 == CardType.Bomb && type2 != CardType.Bomb) return s1; + if (type2 == CardType.Bomb && type1 != CardType.Bomb) return s2; + if (type1 != type2 || token1.length != token2.length) return "ERROR"; + for (int i = 0; i < token1.length; i++) { + int val1 = map.get(token1[i]); + int val2 = map.get(token2[i]); + if (val1 != val2) return val1 > val2 ? s1 : s2; + } + return "ERROR"; + } + + private CardType computeCardType(String[] token) { + boolean hasjoker = false, hasJOKER = false; + for (int i = 0; i < token.length; i++) { + if (token[i].equals("joker")) hasjoker = true; + else if (token[i].equals("JOKER")) hasJOKER = true; + } + if (hasjoker && hasJOKER) return CardType.DoubleJoker; + int maxContinueLen = 1; + int curContinueLen = 1; + String curValue = token[0]; + for (int i = 1; i < token.length; i++) { + if (token[i].equals(curValue)) curContinueLen++; + else { + curContinueLen = 1; + curValue = token[i]; + } + maxContinueLen = Math.max(maxContinueLen, curContinueLen); + } + if (maxContinueLen == 4) return CardType.Bomb; + if (maxContinueLen == 3) return CardType.Triple; + if (maxContinueLen == 2) return CardType.Double; + boolean isStraight = true; + for (int i = 1; i < token.length; i++) { + if (map.get(token[i]) - map.get(token[i - 1]) != 1) { + isStraight = false; + break; + } + } + if (isStraight && token.length == 5) return CardType.Straight; + return CardType.Sigal; + } + + private enum CardType { + DoubleJoker, Bomb, Sigal, Double, Triple, Straight; + } + + public static void main(String[] args) { + Main main = new Main(); + Scanner in = new Scanner(System.in); + while (in.hasNextLine()) { + String s = in.nextLine(); + String[] token = s.split("-"); + System.out.println(main.play(token[0], token[1])); + } + } +} +``` + +# 11. 去哪儿-二分查找 + +对于有重复元素的有序数组,二分查找需要注意以下要点: + +- if (val <= A[m]) h = m; +- 因为 h 的赋值为 m 而不是 m - 1,因此 while 循环的条件也就为 l < h。(如果是 m - 1 循环条件为 l <= h) + +```java +public int getPos(int[] A, int n, int val) { + int l = 0, h = n - 1; + while (l < h) { + int m = l + (h - l) / 2; + if (val <= A[m]) h = m; + else l = m + 1; + } + return A[h] == val ? h : -1; +} +``` + +# 12. 去哪儿-首个重复字符 + +```java +public char findFirstRepeat(String A, int n) { + boolean[] hasAppear = new boolean[256]; + for (int i = 0; i < n; i++) { + char c = A.charAt(i); + if(hasAppear[c]) return c; + hasAppear[c] = true; + } + return ' '; +} +``` + +# 13. 去哪儿-寻找Coder + +```java +public String[] findCoder(String[] A, int n) { + List> list = new ArrayList<>(); + for (String s : A) { + int cnt = 0; + String t = s.toLowerCase(); + int idx = -1; + while (true) { + idx = t.indexOf("coder", idx + 1); + if (idx == -1) break; + cnt++; + } + if (cnt != 0) { + list.add(new Pair<>(s, cnt)); + } + } + Collections.sort(list, (o1, o2) -> (o2.getValue() - o1.getValue())); + String[] ret = new String[list.size()]; + for (int i = 0; i < list.size(); i++) { + ret[i] = list.get(i).getKey(); + } + return ret; +} + +// 牛客网无法导入 javafx.util.Pair,这里就自己实现一下 Pair 类 +private class Pair { + T t; + K k; + + Pair(T t, K k) { + this.t = t; + this.k = k; + } + + T getKey() { + return t; + } + + K getValue() { + return k; + } +} +``` + +# 14. 美团-最大差值 + +贪心策略。 + +```java +public int getDis(int[] A, int n) { + int max = 0; + int soFarMin = A[0]; + for (int i = 1; i < n; i++) { + if(soFarMin > A[i]) soFarMin = A[i]; + else max = Math.max(max, A[i]- soFarMin); + } + return max; +} +``` + +# 15. 美团-棋子翻转 + +```java +public int[][] flipChess(int[][] A, int[][] f) { + int[][] direction = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; + for (int[] ff : f) { + for (int[] dd : direction) { + int r = ff[0] + dd[0] - 1, c = ff[1] + dd[1] - 1; + if(r < 0 || r > 3 || c < 0 || c > 3) continue; + A[r][c] ^= 1; + } + } + return A; +} +``` + +# 16. 美团-拜访 + +```java +private Set paths; +private List curPath; + +public int countPath(int[][] map, int n, int m) { + paths = new HashSet<>(); + curPath = new ArrayList<>(); + for (int i = 0; i < n; i++) { + for (int j = 0; j < m; j++) { + if (map[i][j] == 1) { + map[i][j] = -1; + int[][] leftRightDirection = {{1, 0}, {-1, 0}}; + int[][] topDownDirection = {{0, 1}, {0, -1}}; + for (int[] lr : leftRightDirection) { + for (int[] td : topDownDirection) { + int[][] directions = {lr, td}; + backtracking(map, n, m, i, j, directions); + } + } + return paths.size(); + } + } + } + return 0; +} + +private void backtracking(int[][] map, int n, int m, int r, int c, int[][] directions) { + if (map[r][c] == 2) { + String path = ""; + for (int num : curPath) { + path += num; + } + paths.add(path); + return; + } + for (int i = 0; i < directions.length; i++) { + int nextR = r + directions[i][0]; + int nextC = c + directions[i][1]; + if (nextR < 0 || nextR >= n || nextC < 0 || nextC >= m || map[nextR][nextC] == -1) continue; + map[nextR][nextC] = map[nextR][nextC] == 2 ? 2 : -1; + curPath.add(nextR); + curPath.add(nextC); + backtracking(map, n, m, nextR, nextC, directions); + curPath.remove(curPath.size() - 1); + curPath.remove(curPath.size() - 1); + map[nextR][nextC] = map[nextR][nextC] == 2 ? 2 : 0; + } +} +``` + +# 17. 美团-直方图内最大矩形 + +```java +public int countArea(int[] A, int n) { + int max = 0; + for (int i = 0; i < n; i++) { + int min = A[i]; + for (int j = i; j < n; j++) { + min = Math.min(min, A[j]); + max = Math.max(max, min * (j - i + 1)); + } + } + return max; +} +``` + +# 18. 美团-字符串计数 + +字符串都是小写字符,可以把字符串当成是 26 进制。但是字典序的比较和普通的整数比较不同,是从左往右进行比较,例如 "ac" 和 "abc",字典序的比较结果为 "ac" > "abc",如果按照整数方法比较,因为 "abc" 是三位数,显然更大。 + +由于两个字符串的长度可能不想等,在 s1 空白部分和 s2 对应部分进行比较时,应该把 s1 的空白部分看成是 'a' 字符进行填充的。 + +还有一点要注意的是,s1 到 s2 长度为 leni 的字符串个数只比较前面 i 个字符。例如 'aaa' 和 'bbb' ,长度为 2 的个数为 'aa' 到 'bb' 的字符串个数,不需要考虑后面部分的字符。 + +在统计个数时,从 len1 开始一直遍历到最大合法长度,每次循环都统计长度为 i 的子字符串个数。 + +```java +String s1 = in.next(); +String s2 = in.next(); +int len1 = in.nextInt(); +int len2 = in.nextInt(); +int len = Math.min(s2.length(), len2); +int[] subtractArr = new int[len]; +for (int i = 0; i < len; i++) { + char c1 = i < s1.length() ? s1.charAt(i) : 'a'; + char c2 = s2.charAt(i); + subtractArr[i] = c2 - c1; +} +int ret = 0; +for (int i = len1; i <= len; i++) { + for (int j = 0; j < i; j++) { + ret += subtractArr[j] * Math.pow(26, i - j - 1); + } +} +System.out.println(ret - 1); +``` + +# 19. 美团-平均年龄 + +```java +int W = in.nextInt(); +double Y = in.nextDouble(); +double x = in.nextDouble(); +int N = in.nextInt(); +while (N-- > 0) { + Y++; // 老员工每年年龄都要加 1 + Y += (21 - Y) * x; +} +System.out.println((int) Math.ceil(Y)); +``` + +# 20. 百度-罪犯转移 + +部分和问题,将每次求的部分和缓存起来。 + +```java +int n = in.nextInt(); +int t = in.nextInt(); +int c = in.nextInt(); +int[] values = new int[n]; +for (int i = 0; i < n; i++) { + values[i] = in.nextInt(); +} +int cnt = 0; +int totalValue = 0; +for (int s = 0, e = c - 1; e < n; s++, e++) { + if (s == 0) { + for (int j = 0; j < c; j++) totalValue += values[j]; + } else { + totalValue = totalValue - values[s - 1] + values[e]; + } + if (totalValue <= t) cnt++; +} +System.out.println(cnt); +``` + +# 22. 百度-裁减网格纸 + +```java +int n = in.nextInt(); +int minX, minY, maxX, maxY; +minX = minY = Integer.MAX_VALUE; +maxX = maxY = Integer.MIN_VALUE; +for (int i = 0; i < n; i++) { + int x = in.nextInt(); + int y = in.nextInt(); + minX = Math.min(minX, x); + minY = Math.min(minY, y); + maxX = Math.max(maxX, x); + maxY = Math.max(maxY, y); +} +System.out.println((int) Math.pow(Math.max(maxX - minX, maxY - minY), 2)); +``` + +# 23. 百度-钓鱼比赛 + +P ( 至少钓一条鱼 ) = 1 - P ( 一条也钓不到 ) + +坑:读取概率矩阵的时候,需要一行一行进行读取,而不能直接用 in.nextDouble()。 + +```java +public static void main(String[] args) { + Scanner in = new Scanner(System.in); + while (in.hasNext()) { + int n = in.nextInt(); + int m = in.nextInt(); + int x = in.nextInt(); + int y = in.nextInt(); + int t = in.nextInt(); + in.nextLine(); // 坑 + double pcc = 0.0; + double sum = 0.0; + for (int i = 1; i <= n; i++) { + String[] token = in.nextLine().split(" "); // 坑 + for (int j = 1; j <= m; j++) { + double p = Double.parseDouble(token[j - 1]); + // double p = in.nextDouble(); + sum += p; + if (i == x && j == y) { + pcc = p; + } + } + } + double pss = sum / (n * m); + pcc = computePOfIRT(pcc, t); + pss = computePOfIRT(pss, t); + System.out.println(pcc > pss ? "cc" : pss > pcc ? "ss" : "equal"); + System.out.printf("%.2f\n", Math.max(pcc, pss)); + } +} + +// compute probability of independent repeated trials +private static double computePOfIRT(double p, int t) { + return 1 - Math.pow((1 - p), t); +} +``` + +# 24. 百度-蘑菇阵 + +这题用回溯会超时,需要用 DP。 + +dp[i][j] 表示到达 (i,j) 位置不会触碰蘑菇的概率。对于 N\*M 矩阵,如果 i == N || j == M,那么 (i,j) 只能有一个移动方向;其它情况下能有两个移动方向。 + +考虑以下矩阵,其中第 3 行和第 3 列只能往一个方向移动,而其它位置可以有两个方向移动。 + + +```java +int N = in.nextInt(); +int M = in.nextInt(); +int K = in.nextInt(); +boolean[][] mushroom = new boolean[N][M]; +while (K-- > 0) { + int x = in.nextInt(); + int y = in.nextInt(); + mushroom[x - 1][y - 1] = true; +} +double[][] dp = new double[N][M]; +dp[0][0] = 1; +for (int i = 0; i < N; i++) { + for (int j = 0; j < M; j++) { + if (mushroom[i][j]) dp[i][j] = 0; + else { + double cur = dp[i][j]; + if (i == N - 1 && j == M - 1) break; + if (i == N - 1) dp[i][j + 1] += cur; + else if (j == M - 1) dp[i + 1][j] += cur; + else { + dp[i][j + 1] += cur / 2; + dp[i + 1][j] += cur / 2; + } + } + } +} +System.out.printf("%.2f\n", dp[N - 1][M - 1]); +``` diff --git a/notes/Git.md b/notes/Git.md new file mode 100644 index 00000000..1695faad --- /dev/null +++ b/notes/Git.md @@ -0,0 +1,158 @@ + +* [学习资料](#学习资料) +* [集中式与分布式](#集中式与分布式) +* [Git 的中心服务器](#git-的中心服务器) +* [Git 工作流](#git-工作流) +* [分支实现](#分支实现) +* [冲突](#冲突) +* [Fast forward](#fast-forward) +* [分支管理策略](#分支管理策略) +* [储藏(Stashing)](#储藏stashing) +* [SSH 传输设置](#ssh-传输设置) +* [.gitignore 文件](#gitignore-文件) +* [Git 命令一览](#git-命令一览) + + + +# 学习资料 + +- [Git - 简明指南](http://rogerdudler.github.io/git-guide/index.zh.html) +- [图解 Git](http://marklodato.github.io/visual-git-guide/index-zh-cn.html) +- [廖雪峰 : Git 教程](https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000) +- [Learn Git Branching](https://learngitbranching.js.org/) + +# 集中式与分布式 + +Git 属于分布式版本控制系统,而 SVN 属于集中式。 + +集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。 + +集中式版本控制有安全性问题,当中心服务器挂了所有人都没办法工作了。 + +集中式版本控制需要连网才能工作,如果网速过慢,那么提交一个文件的会慢的无法让人忍受。而分布式版本控制不需要连网就能工作。 + +分布式版本控制新建分支、合并分支操作速度非常快,而集中式版本控制新建一个分支相当于复制一份完整代码。 + +# Git 的中心服务器 + +Git 的中心服务器用来交换每个用户的修改。没有中心服务器也能工作,但是中心服务器能够 24 小时保持开机状态,这样就能更方便的交换修改。Github 就是一种 Git 中心服务器。 + +# Git 工作流 + +

    + +新建一个仓库之后,当前目录就成为了工作区,工作区下有一个隐藏目录 .git,它属于 Git 的版本库。 + +Git 版本库有一个称为 stage 的暂存区,还有自动创建的 master 分支以及指向分支的 HEAD 指针。 + +

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

    + +可以跳过暂存区域直接从分支中取出修改或者直接提交修改到分支中 + +- git commit -a 直接把所有文件的修改添加到暂缓区然后执行提交 +- git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作 + +# 分支实现 + +Git 把每次提交都连成一条时间线。分支使用指针来实现,例如 master 分支指针指向时间线的最后一个节点,也就是最后一次提交。HEAD 指针指向的是当前分支。 + +

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

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

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

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

    + +Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。 + +``` +<<<<<<< HEAD +Creating a new branch is quick & simple. +======= +Creating a new branch is quick AND simple. +>>>>>>> feature1 +``` + +# Fast forward + +"快进式合并"(fast-farward merge),会直接将 master 分支指向合并的分支,这种模式下进行分支合并会丢失分支信息,也就不能在分支历史上看出分支信息。 + +可以在合并时加上 --no-ff 参数来禁用 Fast forward 模式,并且加上 -m 参数让合并时产生一个新的 commit。 + +``` +$ git merge --no-ff -m "merge with no-ff" dev +``` + +

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

    + +# 储藏(Stashing) + +在一个分支上操作之后,如果还没有将修改提交到分支上,此时进行切换分支,那么另一个分支上也能看到新的修改。这是因为所有分支都共用一个工作区的缘故。 + +可以使用 git stash 将当前分支的修改储藏起来,此时当前工作区的所有修改都会被存到栈上,也就是说当前工作区是干净的,没有任何未提交的修改。此时就可以安全的切换到其它分支上了。 + +``` +$ git stash +Saved working directory and index state \ "WIP on master: 049d078 added the index file" +HEAD is now at 049d078 added the index file (To restore them type "git stash apply") +``` + +该功能可以用于 bug 分支的实现。如果当前正在 dev 分支上进行开发,但是此时 master 上有个 bug 需要修复,但是 dev 分支上的开发还未完成,不想立即提交。在新建 bug 分支并切换到 bug 分支之前就需要使用 git stash 将 dev 分支的未提交修改储藏起来。 + +# SSH 传输设置 + +Git 仓库和 Github 中心仓库之间是通过 SSH 加密。 + +如果工作区下没有 .ssh 目录,或者该目录下没有 id_rsa 和 id_rsa.pub 这两个文件,可以通过以下命令来创建 SSH Key: + +``` +$ ssh-keygen -t rsa -C "youremail@example.com" +``` + +然后把公钥 id_rsa.pub 的内容复制到 Github "Account settings" 的 SSH Keys 中。 + +# .gitignore 文件 + +忽略以下文件: + +1. 操作系统自动生成的文件,比如缩略图; +2. 编译生成的中间文件,比如 Java 编译产生的 .class 文件; +3. 自己的敏感信息,比如存放口令的配置文件。 + +不需要全部自己编写,可以到 [https://github.com/github/gitignore](https://github.com/github/gitignore) 中进行查询。 + +# Git 命令一览 + +

    + +比较详细的地址:http://www.cheat-sheets.org/saved-copy/git-cheat-sheet.pdf + + diff --git a/notes/HTTP.md b/notes/HTTP.md new file mode 100644 index 00000000..a20cc03c --- /dev/null +++ b/notes/HTTP.md @@ -0,0 +1,717 @@ + +* [一 、基础概念](#一-基础概念) + * [Web 基础](#web-基础) + * [URL](#url) + * [请求和响应报文](#请求和响应报文) +* [二、HTTP 方法](#二http-方法) + * [GET](#get) + * [POST](#post) + * [HEAD](#head) + * [PUT](#put) + * [PATCH](#patch) + * [DELETE](#delete) + * [OPTIONS](#options) + * [CONNECT](#connect) + * [TRACE](#trace) +* [三、HTTP 状态码](#三http-状态码) + * [2XX 成功](#2xx-成功) + * [3XX 重定向](#3xx-重定向) + * [4XX 客户端错误](#4xx-客户端错误) + * [5XX 服务器错误](#5xx-服务器错误) +* [四、HTTP 首部](#四http-首部) + * [通用首部字段](#通用首部字段) + * [请求首部字段](#请求首部字段) + * [响应首部字段](#响应首部字段) + * [实体首部字段](#实体首部字段) +* [五、具体应用](#五具体应用) + * [Cookie](#cookie) + * [缓存](#缓存) + * [持久连接](#持久连接) + * [编码](#编码) + * [分块传输](#分块传输) + * [多部分对象集合](#多部分对象集合) + * [范围请求](#范围请求) + * [内容协商](#内容协商) + * [虚拟主机](#虚拟主机) + * [通信数据转发](#通信数据转发) +* [六、HTTPs](#六https) + * [加密](#加密) + * [认证](#认证) + * [完整性](#完整性) +* [七、Web 攻击技术](#七web-攻击技术) + * [攻击模式](#攻击模式) + * [跨站脚本攻击](#跨站脚本攻击) + * [SQL 注入攻击](#sql-注入攻击) + * [跨站点请求伪造](#跨站点请求伪造) + * [拒绝服务攻击](#拒绝服务攻击) +* [八、各版本比较](#八各版本比较) + * [HTTP/1.0 与 HTTP/1.1 的区别](#http10-与-http11-的区别) + * [HTTP/1.1 与 HTTP/2.0 的区别](#http11-与-http20-的区别) +* [参考资料](#参考资料) + + + +# 一 、基础概念 + +## Web 基础 + +- HTTP(HyperText Transfer Protocol,超文本传输协议)。 +- WWW(World Wide Web)的三种技术:HTML、HTTP、URL。 +- RFC(Request for Comments,征求修正意见书),互联网的设计文档。 + +## URL + +- URI(Uniform Resource Indentifier,统一资源标识符) +- URL(Uniform Resource Locator,统一资源定位符) +- URN(Uniform Resource Name,统一资源名称),例如 urn:isbn:0-486-27557-4 。 + +URI 包含 URL 和 URN,目前 WEB 只有 URL 比较流行,所以见到的基本都是 URL。 + +

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

    + +### 2. 响应报文 + +

    + +# 二、HTTP 方法 + +客户端发送的 **请求报文** 第一行为请求行,包含了方法字段。 + +## GET + +> 获取资源 + +当前网络请求中,绝大部分使用的是 GET 方法。 + +## POST + +> 传输实体主体 + +POST 主要目的不是获取资源,而是传输存储在内容实体中的数据。 + +GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而 POST 的参数存储在内容实体。 + +``` +GET /test/demo_form.asp?name1=value1&name2=value2 HTTP/1.1 +``` + +``` +POST /test/demo_form.asp HTTP/1.1 +Host: w3schools.com +name1=value1&name2=value2 +``` + +GET 的传参方式相比于 POST 安全性较差,因为 GET 传的参数在 URL 中是可见的,可能会泄露私密信息。并且 GET 只支持 ASCII 字符,如果参数为中文则可能会出现乱码,而 POST 支持标准字符集。 + +GET 和 POST 的另一个区别是,使用 GET 方法,浏览器会把 HTTP Header 和 Data 一并发送出去,服务器响应 200(OK)并返回数据。而使用 POST 方法,浏览器先发送 Header,服务器响应 100(Continue)之后,浏览器再发送 Data,最后服务器响应 200(OK)并返回数据。 + +## HEAD + +> 获取报文首部 + +和 GET 方法一样,但是不返回报文实体主体部分。 + +主要用于确认 URL 的有效性以及资源更新的日期时间等。 + +## PUT + +> 上传文件 + +由于自身不带验证机制,任何人都可以上传文件,因此存在安全性问题,一般不使用该方法。 + +```html +PUT /new.html HTTP/1.1 +Host: example.com +Content-type: text/html +Content-length: 16 + +

    New File

    +``` + +## PATCH + +> 对资源进行部分修改 + +PUT 也可以用于修改资源,但是只能完全替代原始资源,PATCH 允许部分修改。 + +```html +PATCH /file.txt HTTP/1.1 +Host: www.example.com +Content-Type: application/example +If-Match: "e0023aa4e" +Content-Length: 100 + +[description of changes] +``` + +## DELETE + +> 删除文件 + +与 PUT 功能相反,并且同样不带验证机制。 + +```html +DELETE /file.html HTTP/1.1 +``` + +## OPTIONS + +> 查询支持的方法 + +查询指定的 URL 能够支持的方法。 + +会返回 Allow: GET, POST, HEAD, OPTIONS 这样的内容。 + +## CONNECT + +> 要求用隧道协议连接代理 + +要求在于代理服务器通信时建立隧道,使用 SSL(Secure Sokets Layer,安全套接字)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。 + +```html +CONNECT www.example.com:443 HTTP/1.1 +``` + +

    + +## TRACE + +> 追踪路径 + +服务器会将通信路径返回给客户端。 + +发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服务器就会减 1,当数值为 0 时就停止传输。 + +通常不会使用 TRACE,并且它容易受到 XST 攻击(Cross-Site Tracing,跨站追踪),因此更不会去使用它。 + +

    + +# 三、HTTP 状态码 + +服务器返回的 **响应报文** 中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。 + +| 状态码 | 类别 | 原因短语 | +| :---: | :---: | :---: | +| 1XX | Informational(信息性状态码) | 接收的请求正在处理 | +| 2XX | Success(成功状态码) | 请求正常处理完毕 | +| 3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 | +| 4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 | +| 5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 | + +## 2XX 成功 + +- **200 OK** + +- **204 No Content** :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。 + +- **206 Partial Content** :表示客户端进行了范围请求。响应报文包含由 Content-Range 指定范围的实体内容。 + +## 3XX 重定向 + +- **301 Moved Permanently** :永久性重定向 + +- **302 Found** :临时性重定向 + +- **303 See Other** :和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。 + +- 注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会 在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。 + +- **304 Not Modified** :如果请求报文首部包含一些条件,例如:If-Match,If-ModifiedSince,If-None-Match,If-Range,If-Unmodified-Since,但是不满足条件,则服务器会返回 304 状态码。 + +- **307 Temporary Redirect** :临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。 + +## 4XX 客户端错误 + +- **400 Bad Request** :请求报文中存在语法错误。 + +- **401 Unauthorized** :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。 + +

    + +- **403 Forbidden** :请求被拒绝,服务器端没有必要给出拒绝的详细理由。 + +- **404 Not Found** + +## 5XX 服务器错误 + +- **500 Internal Server Error** :服务器正在执行请求时发生错误。 + +- **503 Service Unavilable** :服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。 + +# 四、HTTP 首部 + +有 4 种类型的首部字段:通用首部字段、请求首部字段、响应首部字段和实体首部字段。 + +各种首部字段及其含义如下(不需要全记,仅供查阅): + +## 通用首部字段 + +| 首部字段名 | 说明 | +| :--: | :--: | +| Cache-Control | 控制缓存的行为 | +| Connection | 控制不再转发给代理的首部字段、管理持久连接| +| Date | 创建报文的日期时间 | +| Pragma | 报文指令 | +| Trailer | 报文末端的首部一览 | +| Transfer-Encoding | 指定报文主体的传输编码方式 | +| Upgrade | 升级为其他协议 | +| Via | 代理服务器的相关信息 | +| Warning | 错误通知 | + +## 请求首部字段 + +| 首部字段名 | 说明 | +| :--: | :--: | +| Accept | 用户代理可处理的媒体类型 | +| Accept-Charset | 优先的字符集 | +| Accept-Encoding | 优先的内容编码 | +| Accept-Language | 优先的语言(自然语言) | +| Authorization | Web 认证信息 | +| Expect | 期待服务器的特定行为 | +| From | 用户的电子邮箱地址 | +| Host | 请求资源所在服务器 | +| If-Match | 比较实体标记(ETag) | +| If-Modified-Since | 比较资源的更新时间 | +| If-None-Match | 比较实体标记(与 If-Match 相反) | +| If-Range | 资源未更新时发送实体 Byte 的范围请求 | +| If-Unmodified-Since | 比较资源的更新时间(与 If-Modified-Since 相反) | +| Max-Forwards | 最大传输逐跳数 | +| Proxy-Authorization | 代理服务器要求客户端的认证信息 | +| Range | 实体的字节范围请求 | +| Referer | 对请求中 URI 的原始获取方 | +| TE | 传输编码的优先级 | +| User-Agent | HTTP 客户端程序的信息 | + +## 响应首部字段 + +| 首部字段名 | 说明 | +| :--: | :--: | +| Accept-Ranges | 是否接受字节范围请求 | +| Age | 推算资源创建经过时间 | +| ETag | 资源的匹配信息 | +| Location | 令客户端重定向至指定 URI | +| Proxy-Authenticate | 代理服务器对客户端的认证信息 | +| Retry-After | 对再次发起请求的时机要求 | +| Server | HTTP 服务器的安装信息 | +| Vary | 代理服务器缓存的管理信息 | +| WWW-Authenticate | 服务器对客户端的认证信息 | + +## 实体首部字段 + +| 首部字段名 | 说明 | +| :--: | :--: | +| Allow | 资源可支持的 HTTP 方法 | +| Content-Encoding | 实体主体适用的编码方式 | +| Content-Language | 实体主体的自然语言 | +| Content-Length | 实体主体的大小 | +| Content-Location | 替代对应资源的 URI | +| Content-MD5 | 实体主体的报文摘要 | +| Content-Range | 实体主体的位置范围 | +| Content-Type | 实体主体的媒体类型 | +| Expires | 实体主体过期的日期时间 | +| Last-Modified | 资源的最后修改日期时间 | + +# 五、具体应用 + +## Cookie + +HTTP 协议是无状态的,主要是为了让 HTTP 协议尽可能简单,使得它能够处理大量事务。HTTP/1.1 引入 Cookie 来保存状态信息。 + +Cookie 是服务器发送给客户端的数据,该数据会被保存在浏览器中,并且在下一次发送请求时包含该数据。通过 Cookie 可以让服务器知道两个请求是否来自于同一个客户端,从而实现保持登录状态等功能。 + +### 1. 创建过程 + +服务器发送的响应报文包含 Set-Cookie 字段,客户端得到响应报文后把 Cookie 内容保存到浏览器中。 + +```html +HTTP/1.0 200 OK +Content-type: text/html +Set-Cookie: yummy_cookie=choco +Set-Cookie: tasty_cookie=strawberry + +[page content] +``` + +客户端之后发送请求时,会从浏览器中读出 Cookie 值,在请求报文中包含 Cookie 字段。 + +```html +GET /sample_page.html HTTP/1.1 +Host: www.example.org +Cookie: yummy_cookie=choco; tasty_cookie=strawberry +``` + +### 2. Set-Cookie + +| 属性 | 说明 | +| :--: | -- | +| NAME=VALUE | 赋予 Cookie 的名称和其值(必需项) | +| expires=DATE | Cookie 的有效期(若不明确指定则默认为浏览器关闭前为止) | +| path=PATH | 将服务器上的文件目录作为 Cookie 的适用对象(若不指定则默认为文档所在的文件目录) | +| domain=域名 | 作为 Cookie 适用对象的域名(若不指定则默认为创建 Cookie 的服务器的域名) | +| Secure | 仅在 HTTPS 安全通信时才会发送 Cookie | +| HttpOnly | 加以限制,使 Cookie 不能被 JavaScript 脚本访问 | + +### 3. Session 和 Cookie 区别 + +Session 是服务器用来跟踪用户的一种手段,每个 Session 都有一个唯一标识:Session ID。当服务器创建了一个 Session 时,给客户端发送的响应报文就包含了 Set-Cookie 字段,其中有一个名为 sid 的键值对,这个键值对就是 Session ID。客户端收到后就把 Cookie 保存在浏览器中,并且之后发送的请求报文都包含 Session ID。HTTP 就是通过 Session 和 Cookie 这两种方式一起合作来实现跟踪用户状态的,Session 用于服务器端,Cookie 用于客户端。 + +### 4. 浏览器禁用 Cookie 的情况 + +会使用 URL 重写技术,在 URL 后面加上 sid=xxx 。 + +### 5. 使用 Cookie 实现用户名和密码的自动填写 + +网站脚本会自动从保存在浏览器中的 Cookie 读取用户名和密码,从而实现自动填写。 + +## 缓存 + +### 1. 优点 + +1. 降低服务器的负担; +2. 提高响应速度(缓存资源比服务器上的资源离客户端更近)。 + +### 2. 实现方法 + +1. 让代理服务器进行缓存; +2. 让客户端浏览器进行缓存。 + +### 3. Cache-Control 字段 + +HTTP 通过 Cache-Control 首部字段来控制缓存。 + +```html +Cache-Control: private, max-age=0, no-cache +``` + +### 4. no-cache 指令 + +该指令出现在请求报文的 Cache-Control 字段中,表示缓存服务器需要先向原服务器验证缓存资源是否过期; + +该指令出现在响应报文的 Cache-Control 字段中,表示缓存服务器在进行缓存之前需要先验证缓存资源的有效性。 + +### 5. no-store 指令 + +该指令表示缓存服务器不能对请求或响应的任何一部分进行缓存。 + +no-cache 不表示不缓存,而是缓存之前需要先进行验证,no-store 才是不进行缓存。 + +### 6. max-age 指令 + +该指令出现在请求报文的 Cache-Control 字段中,如果缓存资源的缓存时间小于该指令指定的时间,那么就能接受该缓存。 + +该指令出现在响应报文的 Cache-Control 字段中,表示缓存资源在缓存服务器中保存的时间。 + +Expires 字段也可以用于告知缓存服务器该资源什么时候会过期。在 HTTP/1.1 中,会优先处理 Cache-Control : max-age 指令;而在 HTTP/1.0 中,Cache-Control : max-age 指令会被忽略掉。 + +## 持久连接 + +当浏览器访问一个包含多张图片的 HTML 页面时,除了请求访问 HTML 页面资源,还会请求图片资源,如果每进行一次 HTTP 通信就要断开一次 TCP 连接,连接建立和断开的开销会很大。持久连接只需要建立一次 TCP 连接就能进行多次 HTTP 通信。 + +

    + +持久连接需要使用 Connection 首部字段进行管理。HTTP/1.1 开始 HTTP 默认是持久化连接的,如果要断开 TCP 连接,需要由客户端或者服务器端提出断开,使用 Connection : close;而在 HTTP/1.1 之前默认是非持久化连接的,如果要维持持续连接,需要使用 Connection : Keep-Alive。 + +**管线化方式** 可以同时发送多个请求和响应,而不需要发送一个请求然后等待响应之后再发下一个请求。 + +

    + +## 编码 + +编码(Encoding)主要是为了对实体进行压缩。常用的编码有:gzip、compress、deflate、identity,其中 identity 表示不执行压缩的编码格式。 + +## 分块传输 + +分块传输(Chunked Transfer Coding)可以把数据分割成多块,让浏览器逐步显示页面。 + +## 多部分对象集合 + +一份报文主体内可含有多种类型的实体同时发送,每个部分之间用 boundary 字段定义的分隔符进行分隔,每个部分都可以有首部字段。 + +例如,上传多个表单时可以使用如下方式: + +```html +Content-Type: multipart/form-data; boundary=AaB03x + +--AaB03x +Content-Disposition: form-data; name="submit-name" + +Larry +--AaB03x +Content-Disposition: form-data; name="files"; filename="file1.txt" +Content-Type: text/plain + +... contents of file1.txt ... +--AaB03x-- +``` + +## 范围请求 + +如果网络出现中断,服务器只发送了一部分数据,范围请求使得客户端能够只请求未发送的那部分数据,从而避免服务器端重新发送所有数据。 + +在请求报文首部中添加 Range 字段,然后指定请求的范围,例如 Range:bytes=5001-10000。请求成功的话服务器发送 206 Partial Content 状态。 + +```html +GET /z4d4kWk.jpg HTTP/1.1 +Host: i.imgur.com +Range: bytes=0-1023 +``` + +```html +HTTP/1.1 206 Partial Content +Content-Range: bytes 0-1023/146515 +Content-Length: 1024 +... +(binary content) +``` + +## 内容协商 + +通过内容协商返回最合适的内容,例如根据浏览器的默认语言选择返回中文界面还是英文界面。 + +涉及以下首部字段:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。 + +## 虚拟主机 + +使用虚拟主机技术,使得一台服务器拥有多个域名,并且在逻辑上可以看成多个服务器。 + +## 通信数据转发 + +### 1. 代理 + +代理服务器接受客户端的请求,并且转发给其它服务器。 + +代理服务器一般是透明的,不会改变 URL。 + +使用代理的主要目的是:缓存、网络访问控制以及访问日志记录。 + +

    + +### 2. 网关 + +与代理服务器不同的是,网关服务器会将 HTTP 转化为其它协议进行通信,从而请求其它非 HTTP 服务器的服务。 + +

    + +### 3. 隧道 + +使用 SSL 等加密手段,为客户端和服务器之间建立一条安全的通信线路。 + +

    + +# 六、HTTPs + +HTTP 有以下安全性问题: + +1. 使用明文进行通信,内容可能会被窃听; +2. 不验证通信方的身份,通信方的身份有可能遭遇伪装; +3. 无法证明报文的完整性,报文有可能遭篡改。 + +HTTPs 并不是新协议,而是 HTTP 先和 SSL(Secure Socket Layer)通信,再由 SSL 和 TCP 通信。通过使用 SSL,HTTPs 提供了加密、认证和完整性保护。 + +## 加密 + +有两种加密方式:对称密钥加密和公开密钥加密。对称密钥加密的加密和解密使用同一密钥,而公开密钥加密使用一对密钥用于加密和解密,分别为公开密钥和私有密钥。公开密钥所有人都可以获得,通信发送方获得接收方的公开密钥之后,就可以使用公开密钥进行加密,接收方收到通信内容后使用私有密钥解密。 + +对称密钥加密的缺点:无法安全传输密钥;公开密钥加密的缺点:相对来说更耗时。 + +HTTPs 采用 **混合的加密机制** ,使用公开密钥加密用于传输对称密钥,之后使用对称密钥加密进行通信。(下图中,共享密钥即对称密钥) + +

    + +## 认证 + +通过使用 **证书** 来对通信方进行认证。 + +数字证书认证机构(CA,Certificate Authority)是客户端与服务器双方都可信赖的第三方机构。服务器的运营人员向 CA 提出公开密钥的申请,CA 在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公开密钥证书后绑定在一起。 + +进行 HTTPs 通信时,服务器会把证书发送给客户端,客户端取得其中的公开密钥之后,先进行验证,如果验证通过,就可以开始通信。 + +除了上诉提到的服务器端证书之外,还有客户端证书,客户端证书的目的就是让服务器对客户端进行验证。客户端证书需要用户自行安装,只有在业务需要非常高的安全性时才使用客户端证书,例如网上银行。 + +使用 OpenSSL 这套开源程序,每个人都可以构建一套属于自己的认证机构,从而自己给自己颁发服务器证书。浏览器在访问该服务器时,会显示“无法确认连接安全性”或“该网站的安全证书存在问题”等警告消息。 + +## 完整性 + +SSL 提供摘要功能来验证完整性。 + +# 七、Web 攻击技术 + +Web 攻击的主要目标是使用 HTTP 协议的 Web 应用。 + +## 攻击模式 + +### 1. 主动攻击 + +直接攻击服务器,具有代表性的有 SQL 注入和 OS 命令注入。 + +### 2. 被动攻击 + +设下圈套,让用户发送有攻击代码的 HTTP 请求,那么用户发送了该 HTTP 请求之后就会泄露 Cookie 等个人信息,具有代表性的有跨站脚本攻击和跨站请求伪造。 + +## 跨站脚本攻击 + +### 1. 概念 + +(Cross-Site Scripting, XSS),可以将代码注入到用户浏览的网页上,这种代码包含 HTML 和 JavaScript。通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和 Cookie 等各种内容。 + +### 2. 危害 + +- 伪造虚假的输入表单骗取个人信息 +- 窃取用户的 Cookie 值 +- 显示伪造的文章或者图片 + +### 3. 防范手段 + +**(一)过滤特殊字符** + +许多语言都提供了对 HTML 的过滤: + +- PHP 的 htmlentities() 或是 htmlspecialchars()。 +- Python 的 cgi.escape()。 +- Java 的 xssprotect (Open Source Library)。 +- Node.js 的 node-validator。 + +**(二)指定 HTTP 的 Content-Type** + +通过这种方式,可以避免内容被当成 HTML 解析,比如 PHP 语言可以使用以下代码: + +```php + +``` + +## SQL 注入攻击 + +### 1. 概念 + +服务器上的数据库运行非法的 SQL 语句。 + +### 2. 攻击原理 + +例如一个网站登录验证的 SQL 查询代码为: + +```sql +strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');" +``` + +如果填入以下内容: + +```sql +userName = "1' OR '1'='1"; +passWord = "1' OR '1'='1"; +``` + +那么 SQL 查询字符串为: + +```sql +strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1');" +``` + +此时无需验证通过就能执行以下查询: + +```sql +strSQL = "SELECT * FROM users;" +``` + +### 3. 危害 + +- 数据表中的数据外泄,例如个人机密数据,账户数据,密码等。 +- 数据结构被黑客探知,得以做进一步攻击(例如 SELECT * FROM sys.tables)。 +- 数据库服务器被攻击,系统管理员账户被窜改(例如 ALTER LOGIN sa WITH PASSWORD='xxxxxx')。 +- 获取系统较高权限后,有可能得以在网页加入恶意链接、恶意代码以及 XSS 等。 +- 经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如 xp_cmdshell "net stop iisadmin" 可停止服务器的 IIS 服务)。 +- 破坏硬盘数据,瘫痪全系统(例如 xp_cmdshell "FORMAT C:")。 + +### 4. 防范手段 + +- 在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。 +- 在组合 SQL 字符串时,先针对所传入的参数作字符取代(将单引号字符取代为连续 2 个单引号字符)。 +- 如果使用 PHP 开发网页程序的话,亦可打开 PHP 的魔术引号(Magic quote)功能(自动将所有的网页传入参数,将单引号字符取代为连续 2 个单引号字符)。 +- 其他,使用其他更安全的方式连接 SQL 数据库。例如已修正过 SQL 注入问题的数据库连接组件,例如 ASP.NET 的 SqlDataSource 对象或是 LINQ to SQL。 +- 使用 SQL 防注入系统。 + +## 跨站点请求伪造 + +### 1. 概念 + +(Cross-site request forgery,XSRF),是攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件,发消息,甚至财产操作如转账和购买商品)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了 Web 中用户身份验证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。 + +XSS 利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。 + +假如一家银行用以执行转账操作的 URL 地址如下:`http://www.examplebank.com/withdraw?account=AccoutName&amount=1000&for=PayeeName`。 + +
    那么,一个恶意攻击者可以在另一个网站上放置如下代码:``。

    + +如果有账户名为 Alice 的用户访问了恶意站点,而她之前刚访问过银行不久,登录信息尚未过期,那么她就会损失 1000 资金。 + +这种恶意的网址可以有很多种形式,藏身于网页中的许多地方。此外,攻击者也不需要控制放置恶意网址的网站。例如他可以将这种地址藏在论坛,博客等任何用户生成内容的网站中。这意味着如果服务器端没有合适的防御措施的话,用户即使访问熟悉的可信网站也有受攻击的危险。 + +透过例子能够看出,攻击者并不能通过 CSRF 攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户浏览器,让其以用户的名义执行操作。 + +### 2. 防范手段 + +**(一)检查 Referer 字段** + +HTTP 头中有一个 Referer 字段,这个字段用以标明请求来源于哪个地址。在处理敏感数据请求时,通常来说,Referer 字段应和请求的地址位于同一域名下。 + +这种办法简单易行,工作量低,仅需要在关键访问处增加一步校验。但这种办法也有其局限性,因其完全依赖浏览器发送正确的 Referer 字段。虽然 HTTP 协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,亦无法保证浏览器没有安全漏洞影响到此字段。并且也存在攻击者攻击某些浏览器,篡改其 Referer 字段的可能。 + +**(二)添加校验 Token** + +由于 CSRF 的本质在于攻击者欺骗用户去访问自己设置的地址,所以如果要求在访问敏感数据请求时,要求用户浏览器提供不保存在 cookie 中,并且攻击者无法伪造的数据作为校验,那么攻击者就无法再执行 CSRF 攻击。这种数据通常是表单中的一个数据项。服务器将其生成并附加在表单中,其内容是一个伪乱数。当客户端通过表单提交请求时,这个伪乱数也一并提交上去以供校验。正常的访问时,客户端浏览器能够正确得到并传回这个伪乱数,而通过 CSRF 传来的欺骗性攻击中,攻击者无从事先得知这个伪乱数的值,服务器端就会因为校验 token 的值为空或者错误,拒绝这个可疑请求。 + +## 拒绝服务攻击 + +### 1. 概念 + +(denial-of-service attack,DoS),亦称洪水攻击,其目的在于使目标电脑的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。 + +(distributed denial-of-service attack,DDoS),指攻击者使用网络上两个或以上被攻陷的电脑作为“僵尸”向特定的目标发动“拒绝服务”式攻击。 + +> [维基百科:拒绝服务攻击](https://zh.wikipedia.org/wiki/%E9%98%BB%E6%96%B7%E6%9C%8D%E5%8B%99%E6%94%BB%E6%93%8A) + +# 八、各版本比较 + +## HTTP/1.0 与 HTTP/1.1 的区别 + +HTTP/1.1 新增了以下内容: + +- 默认为长连接; +- 提供了范围请求功能; +- 提供了虚拟主机的功能; +- 多了一些缓存处理字段; +- 多了一些状态码。 + +## HTTP/1.1 与 HTTP/2.0 的区别 + +### 1. 多路复用 + +HTTP/2.0 使用多路复用技术,使用同一个 TCP 连接来处理多个请求。 + +### 2. 首部压缩 + +HTTP/1.1 的首部带有大量信息,而且每次都要重复发送。HTTP/2.0 要求通讯双方各自缓存一份首部字段表,从而避免了重复传输。 + +### 3. 服务端推送 + +在客户端请求一个资源时,会把相关的资源一起发送给客户端,客户端就不需要再次发起请求了。例如客户端请求 index.html 页面,服务端就把 index.js 一起发给客户端。 + +### 4. 二进制格式 + +HTTP/1.1 的解析是基于文本的,而 HTTP/2.0 采用二进制格式。 + +# 参考资料 + +- [图解 HTTP](https://pan.baidu.com/s/1M0AHXqG9sP9Bxne6u0JK8A) +- [MDN : HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP) +- [维基百科:跨站脚本](https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%B6%B2%E7%AB%99%E6%8C%87%E4%BB%A4%E7%A2%BC) +- [维基百科:SQL 注入攻击](https://zh.wikipedia.org/wiki/SQL%E8%B3%87%E6%96%99%E9%9A%B1%E7%A2%BC%E6%94%BB%E6%93%8A) +- [维基百科:跨站点请求伪造](https://zh.wikipedia.org/wiki/%E8%B7%A8%E7%AB%99%E8%AF%B7%E6%B1%82%E4%BC%AA%E9%80%A0) +- [维基百科:拒绝服务攻击](https://zh.wikipedia.org/wiki/%E9%98%BB%E6%96%B7%E6%9C%8D%E5%8B%99%E6%94%BB%E6%93%8A) diff --git a/notes/JDK 中的设计模式.md b/notes/JDK 中的设计模式.md new file mode 100644 index 00000000..daaa90ae --- /dev/null +++ b/notes/JDK 中的设计模式.md @@ -0,0 +1,283 @@ + +* [一、创建型](#一创建型) + * [1. 单例模式](#1-单例模式) + * [2. 简单工厂模式](#2-简单工厂模式) + * [3. 工厂方法模式](#3-工厂方法模式) + * [4. 抽象工厂](#4-抽象工厂) + * [5. 生成器模式](#5-生成器模式) + * [6. 原型模式](#6-原型模式) +* [二、行为型](#二行为型) + * [1. 责任链](#1-责任链) + * [2. 命令模式](#2-命令模式) + * [3. 解释器模式](#3-解释器模式) + * [4. 迭代器](#4-迭代器) + * [5. 中间人模式](#5-中间人模式) + * [6. 备忘录模式](#6-备忘录模式) + * [7. 观察者模式](#7-观察者模式) + * [8. 策略模式](#8-策略模式) + * [9. 模板方法](#9-模板方法) + * [10. 访问者模式](#10-访问者模式) + * [11. 空对象模式](#11-空对象模式) +* [三、结构型](#三结构型) + * [1. 适配器](#1-适配器) + * [2. 桥接模式](#2-桥接模式) + * [3. 组合模式](#3-组合模式) + * [4. 装饰者模式](#4-装饰者模式) + * [5. 蝇量模式](#5-蝇量模式) + * [6. 动态代理](#6-动态代理) +* [参考资料](#参考资料) + + + +# 一、创建型 + +## 1. 单例模式 + +确保只实例化一个对象,并提供一个对象的全局访问点。 + +```java +java.lang.Runtime#getRuntime() +java.awt.Toolkit#getDefaultToolkit() +java.awt.GraphicsEnvironment#getLocalGraphicsEnvironment() +java.awt.Desktop#getDesktop() +``` + +## 2. 简单工厂模式 + +在不对用户暴露对象内部逻辑的前提下创建对象;使用通用的接口来创建对象; + +## 3. 工厂方法模式 + +定义创建对象的接口,但是让子类来决定应该使用哪个类来创建;使用通用的接口来创建对象; + +```java +java.lang.Proxy#newProxyInstance() +java.lang.Object#toString() +java.lang.Class#newInstance() +java.lang.reflect.Array#newInstance() +java.lang.reflect.Constructor#newInstance() +java.lang.Boolean#valueOf(String) +java.lang.Class#forName() +``` + +## 4. 抽象工厂 + +提供一个创建相关对象家族的接口,而没有明确指明它们的类。 + +```java +java.util.Calendar#getInstance() +java.util.Arrays#asList() +java.util.ResourceBundle#getBundle() +java.sql.DriverManager#getConnection() +java.sql.Connection#createStatement() +java.sql.Statement#executeQuery() +java.text.NumberFormat#getInstance() +javax.xml.transform.TransformerFactory#newInstance() +``` + +## 5. 生成器模式 + +定义一个新的类来构造另一个类的实例,以创建一个复杂的对象。 + +它可以封装一个对象的构造过程,并允许按步骤构造。 + +```java +java.lang.StringBuilder#append() +java.lang.StringBuffer#append() +java.sql.PreparedStatement +javax.swing.GroupLayout.Group#addComponent() +``` + +## 6. 原型模式 + +使用原型实例指定要创建对象的类型;通过复制这个原型来创建新对象。 + +```java +java.lang.Object#clone() +java.lang.Cloneable +``` + +# 二、行为型 + +## 1. 责任链 + +避免将请求的发送者附加到其接受者,从而使其它对象也可以处理请求;将请求以对象的方式把发送到链上直到请求被处理完毕。 + +```java +java.util.logging.Logger#log() +javax.servlet.Filter#doFilter() +``` + +## 2. 命令模式 + +将命令封装进对象中;允许使用命令对象对客户对象进行参数化;允许将命令对象存放到队列中。 + +```java +java.lang.Runnable +javax.swing.Action +``` + +## 3. 解释器模式 + +为语言创建解释器,通常由语言的语法和语法分析来定义。 + +```java +java.util.Pattern +java.text.Normalizer +java.text.Format +``` + +## 4. 迭代器 + +提供一种一致的访问聚合对象元素的方法,并且不暴露聚合对象的内部表示。 + +```java +java.util.Iterator +java.util.Enumeration +``` + +## 5. 中间人模式 + +使用中间人对象来封装对象之间的交互。中间人模式可以让降低交互对象之间的耦合程度。 + +```java +java.util.Timer +java.util.concurrent.Executor#execute() +java.util.concurrent.ExecutorService#submit() +java.lang.reflect.Method#invoke() +``` + +## 6. 备忘录模式 + +在不违反封装的情况下获得对象的内部状态,从而在需要时可以将对象恢复到最初状态。 + +```java +java.util.Date +java.io.Serializable +``` + +## 7. 观察者模式 + +定义对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态。 + +```java +java.util.EventListener +javax.servlet.http.HttpSessionBindingListener +javax.servlet.http.HttpSessionAttributeListener +javax.faces.event.PhaseListener +``` + +## 8. 策略模式 + +定义一系列算法,封装每个算法,并使它们可以互换。策略可以让算法独立于使用它的客户端。 + +```java +java.util.Comparator#compare() +javax.servlet.http.HttpServlet +javax.servlet.Filter#doFilter() +``` + +## 9. 模板方法 + +定义算法框架,并将一些步骤的实现延迟到子类。通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。 + +```java +java.util.Collections#sort() +java.io.InputStream#skip() +java.io.InputStream#read() +java.util.AbstractList#indexOf() +``` + +## 10. 访问者模式 + +提供便捷的维护方式来操作一组对象。它使你在不改变操作对象的前提下,可以修改或扩展对象的行为。 + +例如集合,它可以包含不同类型的元素,访问者模式允许在不知道具体元素类型的前提下对集合元素进行一些操作。 + +```java +javax.lang.model.element.Element and javax.lang.model.element.ElementVisitor +javax.lang.model.type.TypeMirror and javax.lang.model.type.TypeVisitor +``` + +## 11. 空对象模式 + +使用什么都不做的空对象来替代 NULL。 + +# 三、结构型 + +## 1. 适配器 + +把一个类接口转换成另一个用户需要的接口。 + +```java +java.util.Arrays#asList() +javax.swing.JTable(TableModel) +java.io.InputStreamReader(InputStream) +java.io.OutputStreamWriter(OutputStream) +javax.xml.bind.annotation.adapters.XmlAdapter#marshal() +javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal() +``` + +## 2. 桥接模式 + +将抽象与实现分离开来,使它们可以独立变化。 + +```java +AWT (It provides an abstraction layer which maps onto the native OS the windowing support.) +JDBC +``` + +## 3. 组合模式 + +将对象组合成树形结构来表示整理-部分层次关系,允许用户以相同的方式处理单独对象和组合对象。 + +```java +javax.swing.JComponent#add(Component) +java.awt.Container#add(Component) +java.util.Map#putAll(Map) +java.util.List#addAll(Collection) +java.util.Set#addAll(Collection) +``` + +## 4. 装饰者模式 + +为对象动态添加功能。 + +```java +java.io.BufferedInputStream(InputStream) +java.io.DataInputStream(InputStream) +java.io.BufferedOutputStream(OutputStream) +java.util.zip.ZipOutputStream(OutputStream) +java.util.Collections#checked[List|Map|Set|SortedSet|SortedMap]() +``` + +## 5. 蝇量模式 + +利用共享的方式来支持大量的对象,这些对象一部分内部状态时相同的,而另一份状态可以变化。 + +Java 利用缓存来加速大量小对象的访问时间。 + +```java +java.lang.Integer#valueOf(int) +java.lang.Boolean#valueOf(boolean) +java.lang.Byte#valueOf(byte) +java.lang.Character#valueOf(char) +``` + +## 6. 动态代理 + +提供一个占位符来控制对象的访问。 + +代理可以是一些轻量级的对象,它控制者对重量级对象的访问,只有在真正实例化这些重量级对象时才会去实例化它。 + +```java +java.lang.reflect.Proxy +RMI +``` + +# 参考资料 + +- [The breakdown of design patterns in JDK](http://www.programering.com/a/MTNxAzMwATY.html) +- [Design Patterns](http://www.oodesign.com/) + + diff --git a/notes/Java IO.md b/notes/Java IO.md new file mode 100644 index 00000000..6e91761b --- /dev/null +++ b/notes/Java IO.md @@ -0,0 +1,404 @@ + +* [一、概览](#一概览) +* [二、磁盘操作](#二磁盘操作) +* [三、字节操作](#三字节操作) +* [四、字符操作](#四字符操作) +* [五、对象操作](#五对象操作) +* [六、网络操作](#六网络操作) + * [InetAddress](#inetaddress) + * [URL](#url) + * [Sockets](#sockets) + * [Datagram](#datagram) +* [七、NIO](#七nio) + * [流与块](#流与块) + * [通道与缓冲区](#通道与缓冲区) + * [缓冲区状态变量](#缓冲区状态变量) + * [文件 NIO 实例](#文件-nio-实例) + * [套接字 NIO 实例](#套接字-nio-实例) + * [内存映射文件](#内存映射文件) + * [对比](#对比) +* [八、参考资料](#八参考资料) + + + +# 一、概览 + +Java 的 I/O 大概可以分成以下几类: + +1. 磁盘操作:File +2. 字节操作:InputStream 和 OutputStream +3. 字符操作:Reader 和 Writer +4. 对象操作:Serializable +5. 网络操作:Socket +6. 新的输入/输出:NIO + +# 二、磁盘操作 + +File 类可以用于表示文件和目录,但是它只用于表示文件的信息,而不表示文件的内容。 + +# 三、字节操作 + +

    + +Java I/O 使用了装饰者模式来实现。以 InputStream 为例,InputStream 是抽象组件,FileInputStream 是 InputStream 的子类,属于具体组件,提供了字节流的输入操作。FilterInputStream 属于抽象装饰者,装饰者用于装饰组件,为组件提供额外的功能,例如 BufferedInputStream 为 FileInputStream 提供缓存的功能。 + +实例化一个具有缓存功能的字节流对象时,只需要在 FileInputStream 对象上再套一层 BufferedInputStream 对象即可。 + +```java +BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file)); +``` + +DataInputStream 装饰者提供了对更多数据类型进行输入的操作,比如 int、double 等基本类型。 + +批量读入文件内容到字节数组: + +```java +byte[] buf = new byte[20*1024]; +int bytes = 0; +// 最多读取 buf.length 个字节,返回的是实际读取的个数,返回 -1 的时候表示读到 eof,即文件尾 +while((bytes = in.read(buf, 0 , buf.length)) != -1) { + // ... +} +``` + +# 四、字符操作 + +不管是磁盘还是网络传输,最小的存储单元都是字节,而不是字符,所以 I/O 操作的都是字节而不是字符。但是在程序中操作的通常是字符形式的数据,因此需要提供对字符进行操作的方法。 + +InputStreamReader 实现从文本文件的字节流解码成字符流;OutputStreamWriter 实现字符流编码成为文本文件的字节流。它们继承自 Reader 和 Writer。 + +编码就是把字符转换为字节,而解码是把字节重新组合成字符。 + +```java +byte[] bytes = str.getBytes(encoding); // 编码 +String str = new String(bytes, encoding); // 解码 +``` + +GBK 编码中,中文占 2 个字节,英文占 1 个字节;UTF-8 编码中,中文占 3 个字节,英文占 1 个字节;Java 使用双字节编码 UTF-16be,中文和英文都占 2 个字节。 + +如果编码和解码过程使用不同的编码方式那么就出现了乱码。 + +# 五、对象操作 + +序列化就是将一个对象转换成字节序列,方便存储和传输。 + +序列化:ObjectOutputStream.writeObject() + +反序列化:ObjectInputStream.readObject() + +序列化的类需要实现 Serializable 接口,它只是一个标准,没有任何方法需要实现。 + +transient 关键字可以使一些属性不会被序列化。 + +**ArrayList 序列化和反序列化的实现** :ArrayList 中存储数据的数组是用 transient 修饰的,因为这个数组是动态扩展的,并不是所有的空间都被使用,因此就不需要所有的内容都被序列化。通过重写序列化和反序列化方法,使得可以只序列化数组中有内容的那部分数据。 + +```java +private transient Object[] elementData; +``` + +# 六、网络操作 + +Java 中的网络支持: + +1. InetAddress:用于表示网络上的硬件资源,即 IP 地址; +2. URL:统一资源定位符,通过 URL 可以直接读取或者写入网络上的数据; +3. Sockets:使用 TCP 协议实现网络通信; +4. Datagram:使用 UDP 协议实现网络通信。 + +## InetAddress + +没有公有构造函数,只能通过静态方法来创建实例。 + +```java +InetAddress.getByName(String host); +InetAddress.getByAddress(byte[] addr); +``` + +## URL + +可以直接从 URL 中读取字节流数据 + +```java +URL url = new URL("http://www.baidu.com"); +InputStream is = url.openStream(); // 字节流 +InputStreamReader isr = new InputStreamReader(is, "utf-8"); // 字符流 +BufferedReader br = new BufferedReader(isr); +String line = br.readLine(); +while (line != null) { + System.out.println(line); + line = br.readLine(); +} +br.close(); +isr.close(); +is.close(); +``` + +## Sockets + +- ServerSocket:服务器端类 +- Socket:客户端类 +- 服务器和客户端通过 InputStream 和 OutputStream 进行输入输出。 + +

    + +## Datagram + +- DatagramPacket:数据包类 +- DatagramSocket:通信类 + +# 七、NIO + +新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的。NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。 + +## 流与块 + +I/O 与 NIO 最重要的区别是数据打包和传输的方式,I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。 + +面向流的 I/O 一次处理一个字节数据,一个输入流产生一个字节数据,一个输出流消费一个字节数据。为流式数据创建过滤器非常容易,链接几个过滤器,以便每个过滤器只负责单个复杂处理机制的一部分,这样也是相对简单的。不利的一面是,面向流的 I/O 通常相当慢。 + +一个面向块的 I/O 系统以块的形式处理数据,一次处理数据块。按块处理数据比按流处理数据要快得多。但是面向块的 I/O 缺少一些面向流的 I/O 所具有的优雅性和简单性。 + +I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重新实现了,所以现在它可以利用 NIO 的一些特性。例如,java.io.\* 包中的一些类包含以块的形式读写数据的方法,这使得即使在面向流的系统中,处理速度也会更快。 + +## 通道与缓冲区 + +### 1. 通道 + +通道 Channel 是对原 I/O 包中的流的模拟,可以通过它读取和写入数据。 + +通道与流的不同之处在于,流只能在一个方向上移动,(一个流必须是 InputStream 或者 OutputStream 的子类),而通道是双向的,可以用于读、写或者同时用于读写。 + +通道包括以下类型: + +- FileChannel:从文件中读写数据; +- DatagramChannel:通过 UDP 读写网络中数据; +- SocketChannel:通过 TCP 读写网络中数据; +- ServerSocketChannel:可以监听新进来的 TCP 连接,对每一个新进来的连接都会创建一个 SocketChannel。 + +### 2. 缓冲区 + +发送给一个通道的所有对象都必须首先放到缓冲区中,同样地,从通道中读取的任何数据都要读到缓冲区中。也就是说,不会直接对通道进行读写数据,而是要先经过缓冲区。 + +缓冲区实质上是一个数组,但它不仅仅是一个数组。缓冲区提供了对数据的结构化访问,而且还可以跟踪系统的读/写进程。 + +缓冲区包括以下类型: + +- ByteBuffer +- CharBuffer +- ShortBuffer +- IntBuffer +- LongBuffer +- FloatBuffer +- DoubleBuffer + +## 缓冲区状态变量 + +- capacity:最大容量; +- position:当前已经读写的字节数; +- limit:还可以读写的字节数。 + +状态变量的改变过程举例: + +① 新建一个大小为 8 个字节的缓冲区,此时 position 为 0,而 limit = capacity = 9。capacity 变量不会改变,下面的讨论会忽略它。 + +

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

    + +③ 以下图例为已经从输入通道读取了 5 个字节数据写入缓冲区中。在将缓冲区的数据写到输出通道之前,需要先调用 flip() 方法,这个方法将 limit 设置为当前 position,并将 position 设置为 0。 + +

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

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

    + +## 文件 NIO 实例 + +① 为要读取的文件创建 FileInputStream,之后通过 FileInputStream 获取输入 FileChannel; + +```java +FileInputStream fin = new FileInputStream("readandshow.txt"); +FileChannel fic = fin.getChannel(); +``` + +② 创建一个容量为 1024 的 Buffer; + +```java +ByteBuffer buffer = ByteBuffer.allocate(1024); +``` + +③ 将数据从输入 FileChannel 写入到 Buffer 中,如果没有数据的话,read() 方法会返回 -1; + +```java +int r = fcin.read(buffer); +if (r == -1) { + break; +} +``` + +④ 为要写入的文件创建 FileOutputStream,之后通过 FileOutputStream 获取输出 FileChannel + +```java +FileOutputStream fout = new FileOutputStream("writesomebytes.txt"); +FileChannel foc = fout.getChannel(); +``` + +⑤ 调用 flip() 切换读写 + +```java +buffer.flip(); +``` + +⑥ 把 Buffer 中的数据读取到输出 FileChannel 中 + +```java +foc.write(buffer); +``` + +⑦ 最后调用 clear() 重置缓冲区 + +```java +buffer.clear(); +``` + +## 套接字 NIO 实例 + +### 1. ServerSocketChannel + +每一个监听端口都需要有一个 ServerSocketChannel 用来监听连接。 + +```java +ServerSocketChannel ssc = ServerSocketChannel.open(); +ssc.configureBlocking(false); // 设置为非阻塞 + +ServerSocket ss = ssc.socket(); +InetSocketAddress address = new InetSocketAddress(ports[i]); +ss.bind(address); // 绑定端口号 +``` + +### 2. Selectors + +异步 I/O 通过 Selector 注册对特定 I/O 事件的兴趣 ― 可读的数据的到达、新的套接字连接等等,在发生这样的事件时,系统将会发送通知。 + +创建 Selectors 之后,就可以对不同的通道对象调用 register() 方法。register() 的第一个参数总是这个 Selector。第二个参数是 OP_ACCEPT,这里它指定我们想要监听 ACCEPT 事件,也就是在新的连接建立时所发生的事件。 + +SelectionKey 代表这个通道在此 Selector 上的这个注册。当某个 Selector 通知您某个传入事件时,它是通过提供对应于该事件的 SelectionKey 来进行的。SelectionKey 还可以用于取消通道的注册。 + +```java +Selector selector = Selector.open(); +SelectionKey key = ssc.register(selector, SelectionKey.OP_ACCEPT); +``` + +### 3. 主循环 + +首先,我们调用 Selector 的 select() 方法。这个方法会阻塞,直到至少有一个已注册的事件发生。当一个或者更多的事件发生时,select() 方法将返回所发生的事件的数量。 + +接下来,我们调用 Selector 的 selectedKeys() 方法,它返回发生了事件的 SelectionKey 对象的一个集合。 + +我们通过迭代 SelectionKeys 并依次处理每个 SelectionKey 来处理事件。对于每一个 SelectionKey,您必须确定发生的是什么 I/O 事件,以及这个事件影响哪些 I/O 对象。 + +```java +int num = selector.select(); + +Set selectedKeys = selector.selectedKeys(); +Iterator it = selectedKeys.iterator(); + +while (it.hasNext()) { + SelectionKey key = (SelectionKey)it.next(); + // ... deal with I/O event ... +} +``` + +### 4. 监听新连接 + +程序执行到这里,我们仅注册了 ServerSocketChannel,并且仅注册它们“接收”事件。为确认这一点,我们对 SelectionKey 调用 readyOps() 方法,并检查发生了什么类型的事件: + +```java +if ((key.readyOps() & SelectionKey.OP_ACCEPT) + == SelectionKey.OP_ACCEPT) { + // Accept the new connection + // ... +} +``` + +可以肯定地说,readOps() 方法告诉我们该事件是新的连接。 + +### 5. 接受新的连接 + +因为我们知道这个服务器套接字上有一个传入连接在等待,所以可以安全地接受它;也就是说,不用担心 accept() 操作会阻塞: + +```java +ServerSocketChannel ssc = (ServerSocketChannel)key.channel(); +SocketChannel sc = ssc.accept(); +``` + +下一步是将新连接的 SocketChannel 配置为非阻塞的。而且由于接受这个连接的目的是为了读取来自套接字的数据,所以我们还必须将 SocketChannel 注册到 Selector 上,如下所示: + +```java +sc.configureBlocking(false); +SelectionKey newKey = sc.register(selector, SelectionKey.OP_READ); +``` + +注意我们使用 register() 的 OP_READ 参数,将 SocketChannel 注册用于读取而不是接受新连接。 + +### 6. 删除处理过的 SelectionKey + +在处理 SelectionKey 之后,我们几乎可以返回主循环了。但是我们必须首先将处理过的 SelectionKey 从选定的键集合中删除。如果我们没有删除处理过的键,那么它仍然会在主集合中以一个激活的键出现,这会导致我们尝试再次处理它。我们调用迭代器的 remove() 方法来删除处理过的 SelectionKey: + +```java +it.remove(); +``` + +现在我们可以返回主循环并接受从一个套接字中传入的数据 (或者一个传入的 I/O 事件) 了。 + +### 7. 传入的 I/O + +当来自一个套接字的数据到达时,它会触发一个 I/O 事件。这会导致在主循环中调用 Selector.select(),并返回一个或者多个 I/O 事件。这一次, SelectionKey 将被标记为 OP_READ 事件,如下所示: + +```java +} else if ((key.readyOps() & SelectionKey.OP_READ) + == SelectionKey.OP_READ) { + // Read the data + SocketChannel sc = (SocketChannel)key.channel(); + // ... +} +``` + +## 内存映射文件 + +内存映射文件 I/O 是一种读和写文件数据的方法,它可以比常规的基于流或者基于通道的 I/O 快得多。 + +只有文件中实际读取或者写入的部分才会映射到内存中。 + +现代操作系统一般会根据需要将文件的部分映射为内存的部分,从而实现文件系统。Java 内存映射机制只不过是在底层操作系统中可以采用这种机制时,提供了对该机制的访问。 + +向内存映射文件写入可能是危险的,仅只是改变数组的单个元素这样的简单操作,就可能会直接修改磁盘上的文件。修改数据与将数据保存到磁盘是没有分开的。 + +下面代码行将文件的前 1024 个字节映射到内存中,map() 方法返回一个 MappedByteBuffer,它是 ByteBuffer 的子类。因此,您可以像使用其他任何 ByteBuffer 一样使用新映射的缓冲区,操作系统会在需要时负责执行映射。 + +```java +MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_WRITE, 0, 1024); +``` + +## 对比 + +NIO 与普通 I/O 的区别主要有以下两点: + +- NIO 是非阻塞的。应当注意,FileChannel 不能切换到非阻塞模式,套接字 Channel 可以。 +- NIO 面向流,I/O 面向块。 + +# 八、参考资料 + +- Eckel B, 埃克尔, 昊鹏, 等. Java 编程思想 [M]. 机械工业出版社, 2002. +- [IBM: NIO 入门](https://www.ibm.com/developerworks/cn/education/java/j-nio/j-nio.html) +- [深入分析 Java I/O 的工作机制](https://www.ibm.com/developerworks/cn/java/j-lo-javaio/index.html) +- [NIO 与传统 IO 的区别](http://blog.csdn.net/shimiso/article/details/24990499) +- [Decorator Design Pattern](http://stg-tud.github.io/sedc/Lecture/ws13-14/5.3-Decorator.html#mode=document) +- [Socket Multicast](http://labojava.blogspot.com/2012/12/socket-multicast.html) diff --git a/notes/Java 基础.md b/notes/Java 基础.md new file mode 100644 index 00000000..f2cc4eb6 --- /dev/null +++ b/notes/Java 基础.md @@ -0,0 +1,632 @@ + +* [一、关键字](#一关键字) + * [final](#final) + * [static](#static) +* [二、Object 通用方法](#二object-通用方法) + * [概览](#概览) + * [clone()](#clone) + * [equals()](#equals) +* [四、继承](#四继承) + * [访问权限](#访问权限) + * [抽象类与接口](#抽象类与接口) + * [super](#super) + * [重载与重写](#重载与重写) +* [五、String](#五string) + * [String, StringBuffer and StringBuilder](#string,-stringbuffer-and-stringbuilder) + * [String 不可变的原因](#string-不可变的原因) + * [String.intern()](#stringintern) +* [六、基本类型与运算](#六基本类型与运算) + * [包装类型](#包装类型) + * [switch](#switch) +* [七、反射](#七反射) +* [八、异常](#八异常) +* [九、泛型](#九泛型) +* [十、注解](#十注解) +* [十一、特性](#十一特性) + * [面向对象三大特性](#面向对象三大特性) + * [Java 各版本的新特性](#java-各版本的新特性) + * [Java 与 C++ 的区别](#java-与-c++-的区别) + * [JRE or JDK](#jre-or-jdk) +* [参考资料](#参考资料) + + + +# 一、关键字 + +## final + +**1. 数据** + +声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。 + +- 对于基本类型,final 使数值不变; +- 对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。 + +```java +final int x = 1; +x = 2; // cannot assign value to final variable 'x' +final A y = new A(); +y.a = 1; +``` + +**2. 方法**
    + +声明方法不能被子类覆盖。 + +private 方法隐式地被指定为 final,如果在子类中定义的方法和基类中的一个 private 方法签名相同,此时子类的方法不是覆盖基类方法,而是重载了。 + +**3. 类** + +声明类不允许被继承。 + +## static + +**1. 静态变量** + +静态变量在内存中只存在一份,只在类第一次实例化时初始化一次。 + +- 静态变量:类所有的实例都共享静态变量,可以直接通过类名来访问它; +- 实例变量:每创建一个实例就会产生一个实例变量,它与该实例同生共死。 + +```java +public class A { + private int x; // 实例变量 + public static int y; // 静态变量 +} +``` + +**2. 静态方法** + +静态方法在类加载的时候就存在了,它不依赖于任何实例,所以 static 方法必须实现,也就是说它不能是抽象方法(abstract)。 + +**3. 静态语句块** + +静态语句块和静态变量一样在类第一次实例化时运行一次。 + +**4. 初始化顺序** + +静态数据优先于其它数据的初始化,静态变量和静态语句块哪个先运行取决于它们在代码中的顺序。 + +```java +public static String staticField = "静态变量"; +``` + +```java +static { + System.out.println("静态语句块"); +} +``` + +实例变量和普通语句块的初始化在静态变量和静态语句块初始化结束之后。 + +```java +public String field = "实例变量"; +``` + +```java +{ + System.out.println("普通语句块"); +} +``` + +最后才是构造函数中的数据进行初始化 + +```java +public InitialOrderTest() { + System.out.println("构造函数"); +} +``` + +存在继承的情况下,初始化顺序为: + +1. 父类(静态变量、静态语句块块) +2. 子类(静态变量、静态语句块) +3. 父类(实例变量、普通语句块) +4. 父类(构造函数) +5. 子类(实例变量、普通语句块) +6. 子类(构造函数) + +# 二、Object 通用方法 + +## 概览 + +```java +public final native Class getClass() + +public native int hashCode() + +public boolean equals(Object obj) + +protected native Object clone() throws CloneNotSupportedException + +public String toString() + +public final native void notify() + +public final native void notifyAll() + +public final native void wait(long timeout) throws InterruptedException + +public final void wait(long timeout, int nanos) throws InterruptedException + +public final void wait() throws InterruptedException + +protected void finalize() throws Throwable {} +``` + +## clone() + +**1. cloneable** + +clone() 是 Object 的受保护方法,这意味着,如果一个类不显式去重载 clone() 就没有这个方法。 + +```java +public class CloneTest { + private int a; + private int b; +} +``` + +```java +CloneTest x = new CloneTest(); +CloneTest y = x.clone(); // 'clone()' has protected access in 'java.lang.Object' +``` + +接下来重载 Object 的 clone() 得到以下实现: + +```java +public class CloneTest{ + private int a; + private int b; + + @Override + protected Object clone() throws CloneNotSupportedException { + return super.clone(); + } +} +``` + +```java +CloneTest x = new CloneTest(); +try { + CloneTest y = (CloneTest) x.clone(); +} catch (CloneNotSupportedException e) { + e.printStackTrace(); +} +``` + +```html +java.lang.CloneNotSupportedException: CloneTest +``` + +以上抛出了 CloneNotSupportedException,这是因为 CloneTest 没有实现 Cloneable 接口。应该注意的是,clone() 方法并不是 Cloneable 接口的方法,而是 Object 的一个 protect 方法。Cloneable 接口只是规定,如果一个类没有实现 Cloneable 接口又调用了 clone() 方法,就会抛出 CloneNotSupportedException。 + +**2. 深拷贝与浅拷贝** + +

    + +- 浅拷贝:拷贝对象和原对象的引用类型引用同一个对象; +- 深拷贝:引用不同对象。 + +实现深拷贝的方法: + +- [Defensive copying](http://www.javapractices.com/topic/TopicAction.do?Id=15) +- [copy constructors](http://www.javapractices.com/topic/TopicAction.do?Id=12) +- [static factory methods](http://www.javapractices.com/topic/TopicAction.do?Id=21). + +> [How do I copy an object in Java?](https://stackoverflow.com/questions/869033/how-do-i-copy-an-object-in-java) + +## equals() + +**1. == 与 equals() 区别** + +- 对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。 +- 对于引用类型,== 判断两个引用是否引用同一个对象,而 equals() 判断引用的对象是否等价。 + +**2. 等价性** + +> [散列](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/Java%20%E5%AE%B9%E5%99%A8.md#%E4%B8%89%E6%95%A3%E5%88%977) + +# 四、继承 + +## 访问权限 + +Java 中有三个访问权限修饰符:private、protected 以及 public,如果不加访问修饰符,表示包级可见。 + +可以对类或类中的成员(字段以及方法)加上访问修饰符。 + +- 成员可见表示其它类可以用成员所在类的对象访问到该成员; +- 类可见表示其它类可以用这个类创建对象。 + +在理解类的可见性时,可以把类当做包中的一个成员,然后包表示一个类,那么就可以类比成员的可见性。 + +protected 用于修饰成员,表示在继承体系中成员对于子类可见。但是这个访问修饰符对于类没有意义,因为包没有继承体系。 + +> [浅析 Java 中的访问权限控制](http://www.importnew.com/18097.html) + +## 抽象类与接口 + +**1. 抽象类** + +抽象类和抽象方法都使用 abstract 进行声明。抽象类一般会包含抽象方法,抽象方法一定位于抽象类中。抽象类和普通类最大的区别是,抽象类不能被实例化,需要继承抽象类才能实例化其子类。 + +```java +public abstract class GenericServlet implements Servlet, ServletConfig, Serializable { + // abstract method + abstract void service(ServletRequest req, ServletResponse res); + + void init() { + // Its implementation + } + // other method related to Servlet +} +``` + +> [深入理解 abstract class 和 interface](https://www.ibm.com/developerworks/cn/java/l-javainterface-abstract/) + +**2. 接口** + +接口是抽象类的延伸。Java 为了安全性而不支持多重继承,一个类只能有一个父类。但是接口不同,一个类可以同时实现多个接口,不管这些接口之间有没有关系,所以接口弥补不支持多重继承的缺陷。 + +```java +public interface Externalizable extends Serializable { + + void writeExternal(ObjectOutput out) throws IOException; + + void readExternal(ObjectInput in) throws IOException, ClassNotFoundException; +} +``` + +从 Java 8 开始,接口也可以拥有默认的方法实现,这是因为不支持默认方法的接口的维护成本太高了。在 Java 8 之前,如果一个接口想要添加新的方法,那么要修改所有实现了该接口的类。 + +```java +public interface InterfaceDefaultTest { + default void func() { + System.out.println("default method in interface!"); + } +} +``` + +**3. 比较** + +- 从设计层面上看,抽象类提供了一种 IS-A 关系,那么就必须满足里式替换原则,即子类对象必须能够替换掉所有父类对象。而接口更像是一种 LIKE-A 关系,它只是提供一种方法实现契约,并不要求子类和父类具有 IS-A 关系; +- 从使用上来看,一个类可以实现多个接口,但是不能继承多个抽象类。 + +**4. 使用选择** + +使用抽象类: + +- 需要在几个相关的类中共享代码; +- 需要能控制继承来的方法和字段的访问权限,而不是都为 public。 +- 需要继承非静态(non-static)和非常量(non-final)字段。 + +使用接口: + +- 需要让不相关的类都实现一个方法,例如不相关的类都可以实现 Compareable 接口中的 compareTo() 方法; +- 需要使用多重继承。 + +> [When to Use Abstract Class and Interface](https://dzone.com/articles/when-to-use-abstract-class-and-intreface) + +## super + +**1. 访问父类的成员** + +如果子类覆盖了父类的中某个方法的实现,可以通过使用 super 关键字来引用父类的方法实现。 + +```java +public class Superclass { + public void printMethod() { + System.out.println("Printed in Superclass."); + } +} +``` + +```java +public class Subclass extends Superclass { + // Overrides printMethod in Superclass + public void printMethod() { + super.printMethod(); + System.out.println("Printed in Subclass"); + } + + public static void main(String[] args) { + Subclass s = new Subclass(); + s.printMethod(); + } +} +``` + +**2. 访问父类的构造函数** + +可以使用 super() 函数访问父类的构造函数,从而完成一些初始化的工作。 + +```java +public MountainBike(int startHeight, int startCadence, int startSpeed, int startGear) { + super(startCadence, startSpeed, startGear); + seatHeight = startHeight; +} +``` + +> [Using the Keyword super](https://docs.oracle.com/javase/tutorial/java/IandI/super.html) + +## 重载与重写 + +- 重写存在于继承体系中,指子类实现了一个与父类在方法声明上完全相同的一个方法; + +- 重载即存在于继承体系中,也存在于同一个类中,指一个方法与已经存在的方法或者父类的方法名称上相同,但是参数类型、个数、顺序至少有一个不同。应该注意的是,返回值不同,其它都相同不算是重载。 + +# 五、String + +## String, StringBuffer and StringBuilder + +**1. 是否可变** + +- String 不可变 +- StringBuffer 和 StringBuilder 可变 + +**2. 是否线程安全** + +- String 不可变,因此是线程安全的 +- StringBuilder 不是线程安全的 +- StringBuffer 是线程安全的,内部使用 synchronized 来同步 + +> [String, StringBuffer, and StringBuilder](https://stackoverflow.com/questions/2971315/string-stringbuffer-and-stringbuilder) + +## String 不可变的原因 + +**1. 可以缓存 hash 值** + +因为 String 的 hash 值经常被使用,例如 String 用做 HashMap 等情况。不可变的特性可以使得 hash 值也不可变,因此只需要进行一次计算。 + +**2. String Pool 的需要** + +如果一个 String 对象已经被创建过了,那么就会从 String Pool 中取得引用。只有 String 是不可变的,才可能使用 String Pool。 + +

    + +**3. 安全性** + +String 经常作为参数,String 不可变性可以保证参数不可变。例如在作为网络连接参数的情况下如果 String 是可变的,那么在网络连接过程中,String 被改变,改变 String 对象的那一方以为现在连接的是其它主机,而实际情况却不一定是。 + +**4. 线程安全** + +String 不可变性天生具备线程安全,可以在多个线程中使用。 + +> [Why String is immutable in Java?](https://www.programcreek.com/2013/04/why-string-is-immutable-in-java/) + +## String.intern() + +使用 String.intern() 可以保证所有相同内容的字符串变量引用相同的内存对象。 + +> [揭开 String.intern() 那神秘的面纱](https://www.jianshu.com/p/95f516cb75ef) + +# 六、基本类型与运算 + +## 包装类型 + +八个基本类型:boolean/1 byte/8 char/16 short/16 int/32 float/32 long/64 double/64 + +基本类型都有对应的包装类型,基本类型与其对应的包装类型之间的赋值使用自动装箱与拆箱完成。 + +```java +Integer x = 2; // 装箱 +int y = x; // 拆箱 +``` + +new Integer(123) 与 Integer.valueOf(123) 的区别在于,Integer.valueOf(123) 可能会使用缓存对象,因此多次使用 Integer.valueOf(123) 会取得同一个对象的引用。 + +```java +public static void main(String[] args) { + Integer a = new Integer(1); + Integer b = new Integer(1); + System.out.println("a==b? " + (a == b)); + + Integer c = Integer.valueOf(1); + Integer d = Integer.valueOf(1); + System.out.println("c==d? " + (c == d)); +} +``` + +```html +a==b? false +c==d? true +``` + +valueOf() 方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就直接使用缓存池的内容。 + +```java +public static Integer valueOf(int i) { + final int offset = 128; + if (i >= -128 && i <= 127) { + return IntegerCache.cache[i + offset]; + } + return new Integer(i); +} +``` + +基本类型中可以使用缓存池的值如下: + +- boolean values true and false +- all byte values +- short values between -128 and 127 +- int values between -128 and 127 +- char in the range \u0000 to \u007F + +自动装箱过程编译器会调用 valueOf() 方法,因此多个 Integer 对象使用装箱来创建并且值相同,那么就会引用相同的对象。这样做很显然是为了节省内存开销。 + +```java +Integer x = 1; +Integer y = 1; +System.out.println(c == d); // true +``` + +> [Differences between new Integer(123), Integer.valueOf(123) and just 123 +](https://stackoverflow.com/questions/9030817/differences-between-new-integer123-integer-valueof123-and-just-123) + +## switch + +A switch works with the byte, short, char, and int primitive data types. It also works with enumerated types and a few special classes that "wrap" certain primitive types: Character, Byte, Short, and Integer. + +In the JDK 7 release, you can use a String object in the expression of a switch statement. + +switch 不支持 long,是因为 swicth 的设计初衷是为那些只需要对少数的几个值进行等值判断,如果值过于复杂,那么还是用 if 比较合适。 + +> [Why can't your switch statement data type be long, Java?](https://stackoverflow.com/questions/2676210/why-cant-your-switch-statement-data-type-be-long-java) + +switch 使用查找表的方式来实现,JVM 中使用的指令是 lookupswitch。 + +```java +public static void main(String... args) { + switch (1) { + case 1: + break; + case 2: + break; + } +} + +public static void main(java.lang.String[]); + Code: + Stack=1, Locals=1, Args_size=1 + 0: iconst_1 + 1: lookupswitch{ //2 + 1: 28; + 2: 31; + default: 31 } + 28: goto 31 + 31: return +``` + +> [How does Java's switch work under the hood?](https://stackoverflow.com/questions/12020048/how-does-javas-switch-work-under-the-hood) + +# 七、反射 + +每个类都有一个 **Class** 对象,包含了与类有关的信息。当编译一个新类时,会产生一个同名的 .class 文件,该文件内容保存着 Class 对象。 + +类加载相当于 Class 对象的加载。类在第一次使用时才动态加载到 JVM 中,可以使用 Class.forName('com.mysql.jdbc.Driver.class') 这种方式来控制类的加载,该方法会返回一个 Class 对象。 + +反射可以提供运行时的类信息,并且这个类可以在运行时才加载进来,甚至在编译时期该类的 .class 不存在也可以加载进来。 + +Class 和 java.lang.reflect 一起对反射提供了支持,java.lang.reflect 类库主要包含了以下三个类: + +1. **Field** :可以使用 get() 和 set() 方法读取和修改 Field 对象关联的字; +2. **Method** :可以使用 invoke() 方法调用与 Method 对象关联的方法; +3. **Constructor** :可以用 Constructor 创建新的对象。 + +IDE 使用反射机制获取类的信息,在使用一个类的对象时,能够把类的字段、方法和构造函数等信息列出来供用户选择。 + +> [深入解析 Java 反射(1)- 基础](http://www.sczyh30.com/posts/Java/java-reflection-1/) + +**Advantages of Using Reflection:** + +- **Extensibility Features** : An application may make use of external, user-defined classes by creating instances of extensibility objects using their fully-qualified names. +- **Class Browsers and Visual Development Environments** : A class browser needs to be able to enumerate the members of classes. Visual development environments can benefit from making use of type information available in reflection to aid the developer in writing correct code. +- **Debuggers and Test Tools** : Debuggers need to be able to examine private members on classes. Test harnesses can make use of reflection to systematically call a discoverable set APIs defined on a class, to insure a high level of code coverage in a test suite. + +**Drawbacks of Reflection:** + +Reflection is powerful, but should not be used indiscriminately. If it is possible to perform an operation without using reflection, then it is preferable to avoid using it. The following concerns should be kept in mind when accessing code via reflection. + +- **Performance Overhead** : Because reflection involves types that are dynamically resolved, certain Java virtual machine optimizations can not be performed. Consequently, reflective operations have slower performance than their non-reflective counterparts, and should be avoided in sections of code which are called frequently in performance-sensitive applications. +- **Security Restrictions** : Reflection requires a runtime permission which may not be present when running under a security manager. This is in an important consideration for code which has to run in a restricted security context, such as in an Applet. +- **Exposure of Internals** :Since reflection allows code to perform operations that would be illegal in non-reflective code, such as accessing private fields and methods, the use of reflection can result in unexpected side-effects, which may render code dysfunctional and may destroy portability. Reflective code breaks abstractions and therefore may change behavior with upgrades of the platform. + +> [Trail: The Reflection API](https://docs.oracle.com/javase/tutorial/reflect/index.html) + +# 八、异常 + +Throwable 可以用来表示任何可以作为异常抛出的类,分为两种: **Error** 和 **Exception**,其中 Error 用来表示编译时系统错误。 + +Exception 分为两种: + +1. **受检异常** :需要用 try...catch... 语句捕获并进行处理,并且可以从异常中恢复; +2. **非受检异常** :是程序运行时错误,例如除 0 会引发 Arithmetic Exception,此时程序奔溃并且无法恢复。 + +

    + +> - [Java 入门之异常处理](https://www.tianmaying.com/tutorial/Java-Exception) +> - [Java 异常的面试问题及答案 -Part 1](http://www.importnew.com/7383.html) + +# 九、泛型 + +```java +public class Box { + // T stands for "Type" + private T t; + public void set(T t) { this.t = t; } + public T get() { return t; } +} +``` + +> - [Java 泛型详解](https://www.ziwenxie.site/2017/03/01/java-generic/) +> - [10 道 Java 泛型面试题](https://cloud.tencent.com/developer/article/1033693) + +# 十、注解 + +Java 注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。 + +> [注解 Annotation 实现原理与自定义注解例子](https://www.cnblogs.com/acm-bingzi/p/javaAnnotation.html) + +# 十一、特性 + +## 面向对象三大特性 + +> [封装、继承、多态](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E6%80%9D%E6%83%B3.md#%E5%B0%81%E8%A3%85%E7%BB%A7%E6%89%BF%E5%A4%9A%E6%80%81) + +## Java 各版本的新特性 + +**New highlights in Java SE 8** + +1. Lambda Expressions +2. Pipelines and Streams +3. Date and Time API +4. Default Methods +5. Type Annotations +6. Nashhorn JavaScript Engine +7. Concurrent Accumulators +8. Parallel operations +9. PermGen Error Removed + +**New highlights in Java SE 7** + +1. Strings in Switch Statement +2. Type Inference for Generic Instance Creation +3. Multiple Exception Handling +4. Support for Dynamic Languages +5. Try with Resources +6. Java nio Package +7. Binary Literals, Underscore in literals +8. Diamond Syntax + +> - [Difference between Java 1.8 and Java 1.7?](http://www.selfgrowth.com/articles/difference-between-java-18-and-java-17) +> - [Java 8 特性 ](http://www.importnew.com/19345.html) + +## Java 与 C++ 的区别 + +Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,C++ 为了兼容 C 即支持面向对象也支持面向过程。 + +| Java | C++ | +| -- | -- | +| Java does not support pointers, templates, unions, operator overloading, structures etc. The Java language promoters initially said "No pointers!", but when many programmers questioned how you can work without pointers, the promoters began saying "Restricted pointers." Java supports what it calls "references". References act a lot like pointers in C++ languages but you cannot perform arithmetic on pointers in Java. References have types, and they're type-safe. These references cannot be interpreted as raw address and unsafe conversion is not allowed. | C++ supports structures, unions, templates, operator overloading, pointers and pointer arithmetic.| +| Java support automatic garbage collection. It does not support destructors as C++ does. | C++ support destructors, which is automatically invoked when the object is destroyed. | +| Java does not support conditional compilation and inclusion. | Conditional inclusion (#ifdef #ifndef type) is one of the main features of C++. | +| Java has built in support for threads. In Java, there is a `Thread` class that you inherit to create a new thread and override the `run()` method. | C++ has no built in support for threads. C++ relies on non-standard third-party libraries for thread support. | +| Java does not support default arguments. There is no scope resolution operator (::) in Java. The method definitions must always occur within a class, so there is no need for scope resolution there either. | C++ supports default arguments. C++ has scope resolution operator (::) which is used to to define a method outside a class and to access a global variable within from the scope where a local variable also exists with the same name. | +| There is no _goto_ statement in Java. The keywords `const` and `goto` are reserved, even though they are not used. | C++ has _goto_ statement. However, it is not considered good practice to use of _goto_ statement. | +| Java doesn't provide multiple inheritance, at least not in the same sense that C++ does. | C++ does support multiple inheritance. The keyword `virtual` is used to resolve ambiguities during multiple inheritance if there is any. | +| Exception handling in Java is different because there are no destructors. Also, in Java, try/catch must be defined if the function declares that it may throw an exception. | While in C++, you may not include the try/catch even if the function throws an exception. | +| Java has method overloading, but no operator overloading. The `String` class does use the `+` and `+=` operators to concatenate strings and `String`expressions use automatic type conversion, but that's a special built-in case. | C++ supports both method overloading and operator overloading. | +| Java has built-in support for documentation comments (`/** ... */`); therefore, Java source files can contain their own documentation, which is read by a separate tool usually `javadoc` and reformatted into HTML. This helps keeping documentation maintained in easy way. | C++ does not support documentation comments. | +| Java is interpreted for the most part and hence platform independent. | C++ generates object code and the same code may not run on different platforms. | + +> [What are the main differences between Java and C++?](http://cs-fundamentals.com/tech-interview/java/differences-between-java-and-cpp.php) + +## JRE or JDK + +- JRE is the JVM program, Java application need to run on JRE. +- JDK is a superset of JRE, JRE + tools for developing java programs. e.g, it provides the compiler "javac" + +# 参考资料 + +- Eckel B. Java 编程思想[M]. 机械工业出版社, 2002. +- Bloch J. Effective java[M]. Addison-Wesley Professional, 2017. diff --git a/notes/Java 容器.md b/notes/Java 容器.md new file mode 100644 index 00000000..bb0a9265 --- /dev/null +++ b/notes/Java 容器.md @@ -0,0 +1,755 @@ + +* [一、概览](#一概览) + * [Collection](#collection) + * [Map](#map) +* [二、容器中的设计模式](#二容器中的设计模式) + * [迭代器模式](#迭代器模式) + * [适配器模式](#适配器模式) +* [三、散列](#三散列) +* [四、源码分析](#四源码分析) + * [ArrayList](#arraylist) + * [Vector](#vector) + * [LinkedList](#linkedlist) + * [TreeMap](#treemap) + * [HashMap](#hashmap) + * [LinkedHashMap](#linkedhashmap) + * [ConcurrentHashMap - JDK 1.7](#concurrenthashmap---jdk-17) + * [ConcurrentHashMap - JDK 1.8](#concurrenthashmap---jdk-18) +* [五、参考资料](#五参考资料) + + + +# 一、概览 + +容器主要包括 Collection 和 Map 两种,Collection 又包含了 List、Set 以及 Queue。 + +## Collection + +

    + +### 1. Set + +- HashSet:基于哈希实现,支持快速查找,但不支持有序性操作,例如根据一个范围查找元素的操作。并且失去了元素的插入顺序信息,也就是说使用 Iterator 遍历 HashSet 得到的结果是不确定的。 + +- TreeSet:基于红黑树实现,支持有序性操作,但是查找效率不如 HashSet,HashSet 查找时间复杂度为 O(1),TreeSet 则为 O(logn); + +- LinkedHashSet:具有 HashSet 的查找效率,且内部使用链表维护元素的插入顺序。 + +### 2. List + +- ArrayList:基于动态数组实现,支持随机访问; + +- Vector:和 ArrayList 类似,但它是线程安全的; + +- LinkedList:基于双向循环链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedList 还可以用作栈、队列和双端队列。 + +### 3. Queue + +- LinkedList:可以用它来支持双向队列; + +- PriorityQueue 是基于堆结构实现,可以用它来实现优先级队列。 + +## Map + +

    + +- HashMap:基于哈希实现; + +- HashTable:和 HashMap 类似,但它是线程安全的,这意味着同一时刻多个线程可以同时写入 HashTable 并且不会导致数据不一致。它是遗留类,不应该去使用它。现在可以使用 ConcurrentHashMap 来支持线程安全,并且 ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁。 + +- LinkedHashMap:使用链表来维护元素的顺序,顺序为插入顺序或者最近最少使用(LRU)顺序。 + +- TreeMap:基于红黑树实现。 + +# 二、容器中的设计模式 + +## 迭代器模式 + +

    + +Collection 实现了 Iterable 接口,其中的 iterator() 方法能够产生一个 Iterator 对象,通过这个对象就可以迭代遍历 Collection 中的元素。 + +从 JDK 1.5 之后可以使用 foreach 方法来遍历实现了 Iterable 接口的聚合对象。 + +```java +List list = new ArrayList<>(); +list.add("a"); +list.add("b"); +for (String item : list) { + System.out.println(item); +} +``` + +> [迭代器模式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#%E5%8D%81%E4%BA%8C%E8%BF%AD%E4%BB%A3%E5%99%A8%E6%A8%A1%E5%BC%8F) + +## 适配器模式 + +java.util.Arrays#asList() 可以把数组类型转换为 List 类型。 + +```java + List list = Arrays.asList(1, 2, 3); + int[] arr = {1, 2, 3}; + list = Arrays.asList(arr); +``` + +> [适配器模式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#%E5%8D%81%E9%80%82%E9%85%8D%E5%99%A8%E6%A8%A1%E5%BC%8F) + +# 三、散列 + +hasCode() 返回散列值,使用的是对象的地址。 + +而 equals() 是用来判断两个对象是否相等的,相等的两个对象散列值一定要相同,但是散列值相同的两个对象不一定相等。 + +相等必须满足以下五个性质: + +**1. 自反性** + +```java +x.equals(x); // true +``` + +**2. 对称性** + +```java +x.equals(y) == y.equals(x) // true +``` + +**3. 传递性** + +```java +if(x.equals(y) && y.equals(z)) { + x.equals(z); // true; +} +``` + +**4. 一致性** + +多次调用 equals() 方法结果不变 + +```java +x.equals(y) == x.equals(y); // true +``` + +**5. 与 null 的比较** + +对任何不是 null 的对象 x 调用 x.equals(null) 结果都为 false + +```java +x.euqals(null); // false; +``` + +# 四、源码分析 + +建议先阅读 [算法-查找](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E7%AE%97%E6%B3%95.md#%E6%9F%A5%E6%89%BE) 部分,对容器类源码的理解有很大帮助。 + +至于 ConcurrentHashMap 的理解,需要有并发方面的知识,建议先阅读:[Java 并发](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/Java%20%E5%B9%B6%E5%8F%91.md) + +以下源码从 JDK 1.8 提取而来,下载地址:[JDK-Source-Code](https://github.com/CyC2018/JDK-Source-Code)。 + +## ArrayList + +[ArraList.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/ArrayList.java) + +### 1. 概览 + +实现了 RandomAccess 接口,因此支持随机访问,这是理所当然的,因为 ArrayList 是基于数组实现的。 + +```java +public class ArrayList extends AbstractList + implements List, RandomAccess, Cloneable, java.io.Serializable +``` + +基于数组实现,保存元素的数组使用 transient 修饰,该关键字声明数组默认不会被序列化。这是 ArrayList 具有动态扩容特性,因此保存元素的数组不一定都会被使用,那么就没必要全部进行序列化。ArrayList 重写了 writeObject() 和 readObject() 来控制只序列化数组中有元素填充那么部分内容。 + +```java +transient Object[] elementData; // non-private to simplify nested class access +``` + +数组的默认大小为 10。 + +```java +private static final int DEFAULT_CAPACITY = 10; +``` + +删除元素时需要调用 System.arraycopy() 对元素进行复制,因此删除操作成本很高。 + +```java +public E remove(int index) { + rangeCheck(index); + + modCount++; + E oldValue = elementData(index); + + int numMoved = size - index - 1; + if (numMoved > 0) + System.arraycopy(elementData, index+1, elementData, index, numMoved); + elementData[--size] = null; // clear to let GC do its work + + return oldValue; +} +``` + +添加元素时使用 ensureCapacity() 方法来保证容量足够,如果不够时,需要使用 grow() 方法进行扩容,使得新容量为旧容量的 1.5 倍(oldCapacity + (oldCapacity >> 1))。扩容操作需要把原数组整个复制到新数组中,因此最好在创建 ArrayList 对象时就指定大概的容量大小,减少扩容操作的次数。 + +```java +private void ensureExplicitCapacity(int minCapacity) { + modCount++; + + // overflow-conscious code + if (minCapacity - elementData.length > 0) + grow(minCapacity); +} + +private void grow(int minCapacity) { + // overflow-conscious code + int oldCapacity = elementData.length; + int newCapacity = oldCapacity + (oldCapacity >> 1); + if (newCapacity - minCapacity < 0) + newCapacity = minCapacity; + if (newCapacity - MAX_ARRAY_SIZE > 0) + newCapacity = hugeCapacity(minCapacity); + // minCapacity is usually close to size, so this is a win: + elementData = Arrays.copyOf(elementData, newCapacity); +} +``` + +### 2. Fail-Fast + +modCount 用来记录 ArrayList 结构发生变化的次数。结构发生变化是指添加或者删除至少一个元素的所有操作,或者是调整内部数组的大小,仅仅只是设置元素的值不算结构发生变化。 + +在进行序列化或者迭代等操作时,需要比较操作前后 modCount 是否改变,如果改变了需要抛出 ConcurrentModificationException。 + +```java +private void writeObject(java.io.ObjectOutputStream s) + throws java.io.IOException{ + // Write out element count, and any hidden stuff + int expectedModCount = modCount; + s.defaultWriteObject(); + + // Write out size as capacity for behavioural compatibility with clone() + s.writeInt(size); + + // Write out all elements in the proper order. + for (int i=0; i()); 返回一个线程安全的 ArrayList,也可以使用 concurrent 并发包下的 CopyOnWriteArrayList 类; + +### 4. 和 LinkedList 的区别 + +- ArrayList 基于动态数组实现,LinkedList 基于双向循环链表实现; +- ArrayList 支持随机访问,LinkedList 不支持; +- LinkedList 在任意位置添加删除元素更快。 + +## Vector + +[Vector.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/Vector.java) + +## LinkedList + +[LinkedList.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/LinkedList.java) + +## TreeMap + +[TreeMap.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/TreeMap.java) + +## HashMap + +[HashMap.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/HashMap.java) + +### 1. 存储结构 + +使用拉链法来解决冲突,内部包含了一个 Entry 类型的数组 table,数组中的每个位置被当成一个桶。 + +```java +transient Entry[] table; +``` + +其中,Entry 就是存储数据的键值对,它包含了四个字段。从 next 字段我们可以看出 Entry 是一个链表,即每个桶会存放一个链表。 + +

    + +JDK 1.8 使用 Node 类型存储一个键值对,它依然继承自 Entry,因此可以按照上面的存储结构来理解。 + +需要注意的是,Key 类型为 final,这意味着它不可改变,因此每个桶的链表采用头插法实现,也就是说新节点需要只能在链表头部插入。 + +```java +static class Node implements Map.Entry { + final int hash; + final K key; + V value; + Node next; + + Node(int hash, K key, V value, Node next) { + this.hash = hash; + this.key = key; + this.value = value; + this.next = next; + } + + public final K getKey() { return key; } + public final V getValue() { return value; } + public final String toString() { return key + "=" + value; } + + public final int hashCode() { + return Objects.hashCode(key) ^ Objects.hashCode(value); + } + + public final V setValue(V newValue) { + V oldValue = value; + value = newValue; + return oldValue; + } + + public final boolean equals(Object o) { + if (o == this) + return true; + if (o instanceof Map.Entry) { + Map.Entry e = (Map.Entry)o; + if (Objects.equals(key, e.getKey()) && + Objects.equals(value, e.getValue())) + return true; + } + return false; + } +} +``` + +### 2. 拉链法的工作原理 + +```java +HashMap map = new HashMap<>(); // 默认大小为 16 +map.put("sachin", 30); +map.put("vishal", 20); +map.put("vaibhav", 20); +``` + +- 计算 "sachin" 的 hashcode 为 115,使用除留余数法得到 115 % 16 = 3,因此 ("sachin", 30) 键值对放到第 3 个桶上。 +- 同样得到 ("vishal", 20) 和 ("vaibhav", 20) 都应该放到第 6 个桶上。("vishal", 20) 先放入, ("vaibhav", 20) 链接到 ("vishal", 20) 之后。 + +

    + +当进行查找时,需要分成两步进行,第一步是先根据 hashcode 计算出所在的桶,第二步是在链表上顺序查找。由于 table 是数组形式的,具有随机读取的特性,因此第一步的时间复杂度为 O(1),而第二步需要在链表上顺序查找,时间复杂度显然和链表的长度成正比。 + +### 3. 链表转红黑树 + +应该注意到,从 JDK 1.8 开始,一个桶存储的链表长度大于 8 时会将链表转换为红黑树。 + +

    + +### 4. 扩容 + +因为从 JDK 1.8 开始引入了红黑树,因此扩容操作较为复杂,为了便于理解,以下内容使用 JDK 1.7 的内容。 + +设 HashMap 的 table 长度为 M,需要存储的键值对数量为 N,如果哈希函数满足均匀性的要求,那么每条链表的长度大约为 N/M,因此平均查找次数的数量级为 O(N/M)。 + +为了让查找的成本降低,应该尽可能使得 N/M 尽可能小,因此需要保证 M 尽可能大,可就是说 table 要尽可能大。HashMap 采用动态扩容来根据当前的 N 值来调整 M 值,使得空间效率和时间效率都能得到保证。 + +和扩容相关的参数主要有:capacity、size、threshold 和 load_factor。 + +| 参数 | 含义 | +| :--: | :-- | +| capacity | table 的容量大小,默认为 16,需要注意的是 capacity 必须保证为 2 的次方。| +| size | table 的实际使用量。 | +| threshold | size 的临界值,size 必须小于 threshold,如果大于等于,就必须进行扩容操作。 | +| load_factor | table 能够使用的比例,threshold = capacity * load_factor。| + +```java +static final int DEFAULT_INITIAL_CAPACITY = 16; + +static final int MAXIMUM_CAPACITY = 1 << 30; + +static final float DEFAULT_LOAD_FACTOR = 0.75f; + +transient Entry[] table; + +transient int size; + +int threshold; + +final float loadFactor; + +transient int modCount; +``` + +从下面的添加元素代码中可以看出,当需要扩容时,令 capacity 为原来的两倍。 + +```java +void addEntry(int hash, K key, V value, int bucketIndex) { + Entry e = table[bucketIndex]; + table[bucketIndex] = new Entry<>(hash, key, value, e); + if (size++ >= threshold) + resize(2 * table.length); +} +``` + +扩容使用 resize() 实现,需要注意的是,扩容操作同样需要把旧 table 的所有键值对重新插入新的 table 中,因此这一步是很费时的。 + +```java +void resize(int newCapacity) { + Entry[] oldTable = table; + int oldCapacity = oldTable.length; + if (oldCapacity == MAXIMUM_CAPACITY) { + threshold = Integer.MAX_VALUE; + return; + } + + Entry[] newTable = new Entry[newCapacity]; + transfer(newTable); + table = newTable; + threshold = (int)(newCapacity * loadFactor); +} + +void transfer(Entry[] newTable) { + Entry[] src = table; + int newCapacity = newTable.length; + for (int j = 0; j < src.length; j++) { + Entry e = src[j]; + if (e != null) { + src[j] = null; + do { + Entry next = e.next; + int i = indexFor(e.hash, newCapacity); + e.next = newTable[i]; + newTable[i] = e; + e = next; + } while (e != null); + } + } +} +``` + +### 5. 确定桶下标 + +需要三步操作:计算 Key 的 hashCode、高位运算、除留余数法取模。 + +

    + +**(一)hashcode()** + +```java +public final int hashCode() { + return Objects.hashCode(key) ^ Objects.hashCode(value); +} +``` + +**(二)高位运算** + +通过 hashCode() 的高 16 位异或低 16 位,使得数组比较小时,也能保证高低位都参与到了哈希计算中。 + +```java +static final int hash(Object key) { + int h; + return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); +} +``` + +**(三)除留余数** + +令 x = 1<<4,即 x 为 2 的 4 次方,它具有以下性质: + +``` +x : 00010000 +x-1 : 00001111 +``` + +令一个数 y 与 x-1 做与运算,可以去除 y 位级表示的第 4 位及以上数: + +``` +y : 10110010 +x-1 : 00001111 +y&(x-1) : 00000010 +``` + +这个性质和 y 对 x 取模效果是一样的: + +``` +x : 00010000 +y : 10110010 +y%x : 00000010 +``` + +我们知道,位运算的代价比求模运算小的多,因此在进行这种计算时能用位运算的话能带来更高的性能。 + +拉链法需要使用除留余数法来得到桶下标,也就是需要进行以下计算:hash%capacity,如果能保证 capacity 为 2 的幂次方,那么就可以将这个操作转换位位运算。 + +以下操作在 Java 8 中没有,但是原理上相同。 + +```java +static int indexFor(int h, int length) { + return h & (length-1); +} +``` + +### 6. 扩容-重新计算桶下标 + +在进行扩容时,需要把 Node 重新放到对应的桶上。HashMap 使用了一个特殊的机制,可以降低重新计算桶下标的操作。 + +假设原数组长度 capacity 为 8,扩容之后 new capacity 为 16: + +```html +capacity : 00010000 +new capacity : 00100000 +``` + +对于一个 Key,它的 hashCode 如果在第 6 位上为 0,那么除留余数得到的结果和之前一样;如果为 1,那么得到的结果为原来的结果 + 8。 + +### 7. 扩容-计算数组容量 + +先考虑如何求一个数的补码,对于 10100000,它的补码为 11111111,可以使用以下方法得到: + +``` +mask |= mask >> 1 11000000 +mask |= mask >> 2 11110000 +mask |= mask >> 4 11111111 +``` + +如果最后令 mask+1,得到就是大于原始数字的最小的 2 次方。 + +以下是 HashMap 中计算一个大小所需要的数组容量的代码: + +```java +static final int tableSizeFor(int cap) { + int n = cap - 1; + n |= n >>> 1; + n |= n >>> 2; + n |= n >>> 4; + n |= n >>> 8; + n |= n >>> 16; + return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1; +} +``` + +### 7. null 值 + +HashMap 允许有一个 Node 的 Key 为 null,该 Node 一定会放在第 0 个桶的位置,因为这个 Key 无法计算 hashCode(),因此只能规定一个桶让它存放。 + +### 8. 与 HashTable 的区别 + +- HashTable 是同步的,它使用了 synchronized 来进行同步。它也是线程安全的,多个线程可以共享同一个 HashTable。HashMap 不是同步的,但是可以使用 ConcurrentHashMap,它是 HashTable 的替代,而且比 HashTable 可扩展性更好。 +- HashMap 可以插入键为 null 的 Entry。 +- HashMap 的迭代器是 fail-fast 迭代器,而 Hashtable 的 enumerator 迭代器不是 fail-fast 的。 +- 由于 Hashtable 是线程安全的也是 synchronized,所以在单线程环境下它比 HashMap 要慢。 +- HashMap 不能保证随着时间的推移 Map 中的元素次序是不变的。 + +## LinkedHashMap + +[LinkedHashMap.java](https://github.com/CyC2018/JDK-Source-Code/tree/master/src/HashMap.java) + +## ConcurrentHashMap - JDK 1.7 + +[ConcurrentHashMap.java](https://github.com/CyC2018/JDK-Source-Code/blob/master/src/1.7/ConcurrentHashMap.java) + +ConcurrentHashMap 和 HashMap 实现上类似,最主要的差别是 ConcurrentHashMap 采用了了分段锁,每个分段锁维护着几个桶,多个线程可以同时访问不同分段锁上的桶。 + +相比于 HashTable 和用同步包装器包装的 HashMap(Collections.synchronizedMap(new HashMap())),ConcurrentHashMap 拥有更高的并发性。在 HashTable 和由同步包装器包装的 HashMap 中,使用一个全局的锁来同步不同线程间的并发访问。同一时间点,只能有一个线程持有锁,也就是说在同一时间点,只能有一个线程能访问容器。这虽然保证多线程间的安全并发访问,但同时也导致对容器的访问变成串行化的了。 + +### 1. 存储结构 + +和 HashMap 类似。 + +```java +static final class HashEntry { + final int hash; + final K key; + volatile V value; + volatile HashEntry next; +} +``` + +继承自 ReentrantLock,每个 Segment 维护着多个 HashEntry。 + +```java +static final class Segment extends ReentrantLock implements Serializable { + + private static final long serialVersionUID = 2249069246763182397L; + + static final int MAX_SCAN_RETRIES = + Runtime.getRuntime().availableProcessors() > 1 ? 64 : 1; + + transient volatile HashEntry[] table; + + transient int count; + + transient int modCount; + + transient int threshold; + + final float loadFactor; +} +``` + +```java +final Segment[] segments; +``` + +默认的并发级别为 16,也就是说默认创建 16 个 Segment。 + +```java +static final int DEFAULT_CONCURRENCY_LEVEL = 16; +``` + +

    + +### 2. HashEntery 的不可变性 + +HashEntry 中的 key,hash,next 都声明为 final 型。这意味着,不能把节点添加到链接的中间和尾部,也不能在链接的中间和尾部删除节点。这个特性可以保证:在访问某个节点时,这个节点之后的链接不会被改变。这个特性可以大大降低处理链表时的复杂性。 + +同时,HashEntry 类的 value 域被声明为 Volatile 型,Java 的内存模型可以保证:某个写线程对 value 域的写入马上可以被后续的某个读线程 “看” 到。在 ConcurrentHashMap 中,不允许用 null 作为键和值,当读线程读到某个 HashEntry 的 value 域的值为 null 时,便知道产生了冲突——发生了重排序现象,需要加锁后重新读入这个 value 值。这些特性互相配合,使得读线程即使在不加锁状态下,也能正确访问 ConcurrentHashMap。 + +```java +final V remove(Object key, int hash, Object value) { + if (!tryLock()) + scanAndLock(key, hash); + V oldValue = null; + try { + HashEntry[] tab = table; + int index = (tab.length - 1) & hash; + HashEntry e = entryAt(tab, index); + HashEntry pred = null; + while (e != null) { + K k; + HashEntry next = e.next; + if ((k = e.key) == key || + (e.hash == hash && key.equals(k))) { + V v = e.value; + if (value == null || value == v || value.equals(v)) { + if (pred == null) + setEntryAt(tab, index, next); + else + pred.setNext(next); + ++modCount; + --count; + oldValue = v; + } + break; + } + pred = e; + e = next; + } + } finally { + unlock(); + } + return oldValue; +} +``` + +在以下链表中删除 C 节点,C 节点之后的所有节点都原样保留,C 节点之前的所有节点都被克隆到新的链表中,并且顺序被反转。可以注意到,在执行 remove 操作时,原始链表并没有被修改,也就是说,读线程不会受到执行 remove 操作的并发写线程的干扰。 + +

    + +

    + +除了 remove 操作,其它操作也类似。可以得出一个结论:写线程对某个链表的结构性修改不会影响其他的并发读线程对这个链表的遍历访问。 + +### 3. Volatile 变量 + +```java +static final class HashEntry { + final int hash; + final K key; + volatile V value; + volatile HashEntry next; +} +``` + +由于内存可见性问题,未正确同步的情况下,写线程写入的值可能并不为后续的读线程可见。 + +下面以写线程 M 和读线程 N 来说明 ConcurrentHashMap 如何协调读 / 写线程间的内存可见性问题。 + +

    + +假设线程 M 在写入了 volatile 型变量 count 后,线程 N 读取了这个 volatile 型变量 count。 + +根据 happens-before 关系法则中的程序次序法则,A appens-before 于 B,C happens-before D。 + +根据 Volatile 变量法则,B happens-before C。 + +根据传递性,连接上面三个 happens-before 关系得到:A appens-before 于 B; B appens-before C;C happens-before D。也就是说:写线程 M 对链表做的结构性修改,在读线程 N 读取了同一个 volatile 变量后,对线程 N 也是可见的了。 + +虽然线程 N 是在未加锁的情况下访问链表。Java 的内存模型可以保证:只要之前对链表做结构性修改操作的写线程 M 在退出写方法前写 volatile 型变量 count,读线程 N 在读取这个 volatile 型变量 count 后,就一定能 “看到” 这些修改。 + +ConcurrentHashMap 中,每个 Segment 都有一个变量 count。它用来统计 Segment 中的 HashEntry 的个数。这个变量被声明为 volatile。 + +```java +transient volatile int count; +``` + +所有不加锁读方法,在进入读方法时,首先都会去读这个 count 变量。比如下面的 get 方法: + +```java +V get(Object key, int hash) { + if(count != 0) { // 首先读 count 变量 + HashEntry e = getFirst(hash); + while(e != null) { + if(e.hash == hash && key.equals(e.key)) { + V v = e.value; + if(v != null) + return v; + // 如果读到 value 域为 null,说明发生了重排序,加锁后重新读取 + return readValueUnderLock(e); + } + e = e.next; + } + } + return null; +} +``` + +在 ConcurrentHashMap 中,所有执行写操作的方法(put, remove, clear),在对链表做结构性修改之后,在退出写方法前都会去写这个 count 变量。所有未加锁的读操作(get, contains, containsKey)在读方法中,都会首先去读取这个 count 变量。 + +根据 Java 内存模型,对 同一个 volatile 变量的写 / 读操作可以确保:写线程写入的值,能够被之后未加锁的读线程 “看到”。 + +这个特性和前面介绍的 HashEntry 对象的不变性相结合,使得在 ConcurrentHashMap 中,读线程在读取散列表时,基本不需要加锁就能成功获得需要的值。这两个特性相配合,不仅减少了请求同一个锁的频率(读操作一般不需要加锁就能够成功获得值),也减少了持有同一个锁的时间(只有读到 value 域的值为 null 时 ,读线程才需要加锁后重读)。 + +### 4. 小结 + +ConcurrentHashMap 的高并发性主要来自于三个方面: + +- 用分离锁实现多个线程间的更深层次的共享访问。 +- 用 HashEntery 对象的不变性来降低执行读操作的线程在遍历链表期间对加锁的需求。 +- 通过对同一个 Volatile 变量的写 / 读访问,协调不同线程间读 / 写操作的内存可见性。 + +## ConcurrentHashMap - JDK 1.8 + +[ConcurrentHashMap.java](https://github.com/CyC2018/JDK-Source-Code/blob/master/src/ConcurrentHashMap.java) + +

    + + +JDK 1.7 分段锁机制来实现并发更新操作,核心类为 Segment,它继承自重入锁 ReentrantLock。 + +

    + +JDK 1.8 的实现不是用了 Segment,Segment 属于重入锁 ReentrantLock。而是使用了内置锁 synchronized,主要是出于以下考虑: + +1. synchronized 的锁粒度更低; +2. synchronized 优化空间更大; +3. 在大量数据操作的情况下,ReentrantLock 会开销更多的内存。 + +并且 JDK 1.8 的实现也在链表过长时会转换为红黑树。 + +# 五、参考资料 + +- Java 编程思想 +- [Java Collection Framework](https://www.w3resource.com/java-tutorial/java-collections.php) +- [Iterator 模式](https://openhome.cc/Gossip/DesignPattern/IteratorPattern.htm) +- [Java 8 系列之重新认识 HashMap](https://tech.meituan.com/java-hashmap.html) +- [What is difference between HashMap and Hashtable in Java?](http://javarevisited.blogspot.hk/2010/10/difference-between-hashmap-and.html) +- [Java 集合之 HashMap](http://www.zhangchangle.com/2018/02/07/Java%E9%9B%86%E5%90%88%E4%B9%8BHashMap/) +- [The principle of ConcurrentHashMap analysis](http://www.programering.com/a/MDO3QDNwATM.html) +- [探索 ConcurrentHashMap 高并发性的实现机制](https://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/) +- [HashMap 相关面试题及其解答](https://www.jianshu.com/p/75adf47958a7) + diff --git a/notes/Java 并发.md b/notes/Java 并发.md new file mode 100644 index 00000000..59813682 --- /dev/null +++ b/notes/Java 并发.md @@ -0,0 +1,930 @@ + +* [一、使用线程](#一使用线程) + * [实现 Runnable 接口](#实现-runnable-接口) + * [实现 Callable 接口](#实现-callable-接口) + * [继承 Thread 类](#继承-thread-类) + * [实现接口 VS 继承 Thread](#实现接口-vs-继承-thread) +* [二、基础线程机制](#二基础线程机制) + * [sleep()](#sleep) + * [yield()](#yield) + * [join()](#join) + * [deamon](#deamon) +* [三、结束线程](#三结束线程) + * [阻塞](#阻塞) + * [中断](#中断) +* [四、线程之间的协作](#四线程之间的协作) + * [同步与通信的概念理解](#同步与通信的概念理解) + * [线程同步](#线程同步) + * [线程通信](#线程通信) +* [五、线程状态转换](#五线程状态转换) +* [六、Executor](#六executor) +* [七、volatile](#七volatile) + * [保证内存可见性](#保证内存可见性) + * [禁止指令重排](#禁止指令重排) +* [八、内存模型](#八内存模型) + * [1. 硬件的效率与一致性](#1-硬件的效率与一致性) + * [2. Java 内存模型](#2-java-内存模型) + * [3. 主内存与工作内存](#3-主内存与工作内存) + * [4. 内存间交互操作](#4-内存间交互操作) + * [5. 内存模型三大特性](#5-内存模型三大特性) + * [6. 先行发生原则](#6-先行发生原则) +* [九、线程安全](#九线程安全) + * [1. Java 语言中的线程安全](#1-java-语言中的线程安全) + * [2. 线程安全的实现方法](#2-线程安全的实现方法) +* [十、锁优化](#十锁优化) + * [1. 自旋锁与自适应自旋](#1-自旋锁与自适应自旋) + * [2. 锁消除](#2-锁消除) + * [3. 锁粗化](#3-锁粗化) + * [4. 轻量级锁](#4-轻量级锁) + * [5. 偏向锁](#5-偏向锁) +* [十一、多线程开发良好的实践](#十一多线程开发良好的实践) +* [参考资料](#参考资料) + + + +# 一、使用线程 + +有三种使用线程的方法: + +1. 实现 Runnable 接口; +2. 实现 Callable 接口; +3. 继承 Thread 类。 + +实现 Runnable 和 Callable 接口的类只能当做一个可以在线程中运行的任务,不是真正意义上的线程,因此最后还需要通过 Thread 来调用。可以说任务是通过线程驱动从而执行的。 + +## 实现 Runnable 接口 + +需要实现 run() 方法。 + +通过 Thread 调用 start() 方法来启动线程。 + +```java +public class MyRunnable implements Runnable { + public void run() { + // ... + } + public static void main(String[] args) { + MyRunnable instance = new MyRunnable(); + Tread thread = new Thread(instance); + thread.start(); + } +} +``` + +## 实现 Callable 接口 + +与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。 + +```java +public class MyCallable implements Callable { + public Integer call() { + // ... + } + public static void main(String[] args) { + MyCallable mc = new MyCallable(); + FutureTask ft = new FutureTask<>(mc); + Thread thread = new Thread(ft); + thread.start(); + System.out.println(ft.get()); + } +} +``` + +## 继承 Thread 类 + +同样也是需要实现 run() 方法,并且最后也是调用 start() 方法来启动线程。 + +```java +public class MyThread extends Thread { + public void run() { + // ... + } + public static void main(String[] args) { + MyThread mt = new MyThread(); + mt.start(); + } +} +``` + +## 实现接口 VS 继承 Thread + +实现接口会更好一些,因为: + +1. Java 不支持多重继承,因此继承了 Thread 类就无法继承其它类,但是可以实现多个接口; +2. 类可能只要求可执行即可,继承整个 Thread 类开销会过大。 + + +# 二、基础线程机制 + +## sleep() + +Thread.sleep(millisec) 方法会休眠当前正在执行的线程,millisec 单位为毫秒。也可以使用 TimeUnit.TILLISECONDS.sleep(millisec)。 + +sleep() 可能会抛出 InterruptedException。因为异常不能跨线程传播回 main() 中,因此必须在本地进行处理。线程中抛出的其它异常也同样需要在本地进行处理。 + +```java +public void run() { + try { + // ... + Thread.sleep(1000); + // ... + } catch (InterruptedException e) { + System.err.println(e); + } +} +``` + +## yield() + +对静态方法 Thread.yield() 的调用声明了当前线程已经完成了生命周期中最重要的部分,可以切换给其它线程来执行。 + +```java +public void run() { + // ... + Thread.yield(); +} +``` + +## join() + +在线程中调用另一个线程的 join() 方法,会将当前线程挂起,直到目标线程结束。 + +可以加一个超时参数。 + +## deamon + +守护线程(deamon)是程序运行时在后台提供服务的线程,并不属于程序中不可或缺的部分。 + +当所有非后台线程结束时,程序也就终止,同时会杀死所有后台线程。 + +main() 属于非后台线程。 + +使用 setDaemon() 方法将一个线程设置为后台线程。 + +# 三、结束线程 + +## 阻塞 + +一个线程进入阻塞状态可能有以下原因: + +1. 调用 Thread.sleep() 方法进入休眠状态; +2. 通过 wait() 使线程挂起,直到线程得到 notify() 或 notifyAll() 消息(或者 java.util.concurrent 类库中等价的 signal() 或 signalAll() 消息; +3. 等待某个 I/O 的完成; +4. 试图在某个对象上调用其同步控制方法,但是对象锁不可用,因为另一个线程已经获得了这个锁。 + +## 中断 + +使用中断机制即可终止阻塞的线程。 + +使用 **interrupt()** 方法来中断某个线程,它会设置线程的中断状态。Object.wait(), Thread.join() 和 Thread.sleep() 三种方法在收到中断请求的时候会清除中断状态,并抛出 InterruptedException。 + +应当捕获这个 InterruptedException 异常,从而做一些清理资源的操作。 + +**1. 不可中断的阻塞** + +不能中断 I/O 阻塞和 synchronized 锁阻塞。 + +**2. Executor 的中断操作** + +Executor 避免对 Thread 对象的直接操作,但是使用 interrupt() 方法必须持有 Thread 对象。Executor 使用 shutdownNow() 方法来中断它里面的所有线程,shutdownNow() 方法会发送 interrupt() 调用给所有线程。 + +如果只想中断一个线程,那么使用 Executor 的 submit() 而不是 executor() 来启动线程,就可以持有线程的上下文。submit() 将返回一个泛型 Futrue,可以在它之上调用 cancel(),如果将 true 传递给 cancel(),那么它将会发送 interrupt() 调用给特定的线程。 + +**3. 检查中断** + +通过中断的方法来终止线程,需要线程进入阻塞状态才能终止。如果编写的 run() 方法循环条件为 true,但是该线程不发生阻塞,那么线程就永远无法终止。 + +interrupt() 方法会设置中断状态,可以通过 interrupted() 方法来检查中断状,从而判断一个线程是否已经被中断。 + +interrupted() 方法在检查完中断状态之后会清除中断状态,这样做是为了确保一次中断操作只会产生一次影响。 + +# 四、线程之间的协作 + +## 同步与通信的概念理解 + +在操作系统中,有三个概念用来描述进程间的协作关系: + +1. 互斥:多个进程在同一时刻只有一个进程能进入临界区; +2. 同步:多个进程按一定顺序执行; +3. 通信:多个进程间的信息传递。 + +通信是一种手段,它可以用来实现同步。也就是说,通过在多个进程间传递信息,可以控制多个进程以一定顺序执行。 + +而同步又可以保证互斥。即进程按一定顺序执行,可以保证在同一时刻只有一个进程能访问临界资源。但是同步不止用来实现互斥,例如生成者消费者问题,生产者和消费者进程之间的同步不是用来控制对临界资源的访问。 + +总结起来就是:通信 --> 同步 --> 互斥。 + +进程和线程在一定程度上类似,也可以用这些概念来描述。 + +在 Java 语言中,这些概念描述有些差别: + +1. 同步:可以和操作系统的互斥等同; +2. 通信:可以和操作系统的同步等同。 + +## 线程同步 + +给定一个进程内的所有线程,都共享同一存储空间,这样有好处又有坏处。这些线程就可以共享数据,非常有用。不过,在两个线程同时修改某一资源时,这也会造成一些问题。Java 提供了同步机制,以控制对共享资源的互斥访问。 + +### 1. synchronized + +**同步一个方法** + +使多个线程不能同时访问该方法。 + +```java +public synchronized void func(String name) { + // ... +} +``` + +**同步一个代码块** + +```java +public void func(String name) { + synchronized(this) { + // ... + } +} +``` + +### 2. Lock + +实现更细粒度的控制。 + +```java +private Lock lock; +public int func(int value) { + try { + lock.lock(); + // ... + } finally { + lock.unlock(); + } +} +``` + +## 线程通信 + +### 1. wait() notify() notifyAll() + +它们都属于 Object 的一部分,而不属于 Thread。 + +wait() 会在等待时将线程挂起,而不是忙等待,并且只有在 notify() 或者 notifyAll() 到达时才唤醒。 + +sleep() 和 yield() 并没有释放锁,但是 wait() 会释放锁。 + +实际上,只有在同步控制方法或同步控制块里才能调用 wait() 、notify() 和 notifyAll()。 + +```java +private boolean flag = false; + +public synchronized void after() { + while(flag == false) { + wait(); + // ... + } +} + +public synchronized void before() { + flag = true; + notifyAll(); +} +``` + +**wait() 和 sleep() 的区别** + +1. wait() 是 Object 类的方法,而 sleep() 是 Thread 的静态方法; +2. wait() 会放弃锁,而 sleep() 不会。 + +### 2. BlockingQueue + +java.util.concurrent.BlockingQueue 接口有以下阻塞队列的实现: + +- **FIFO 队列** :LinkedBlockingQueue、ArrayListBlockingQueue(固定长度) +- **优先级队列** :PriorityBlockingQueue + +提供了阻塞的 take() 和 put() 方法:如果队列为空 take() 将一直阻塞到队列中有内容,如果队列为满 put() 将阻塞到队列有空闲位置。它们响应中断,当收到中断请求的时候会抛出 InterruptedException,从而提前结束阻塞状态。 + +阻塞队列的 take() 和 put() 方法是线程安全的。 + +**使用 BlockingQueue 实现生产者消费者问题** + +```java +// 生产者 +import java.util.concurrent.BlockingQueue; + +public class Producer implements Runnable { + private BlockingQueue queue; + + public Producer(BlockingQueue queue) { + this.queue = queue; + } + + @Override + public void run() { + System.out.println(Thread.currentThread().getName() + " is making product..."); + String product = "made by " + Thread.currentThread().getName(); + try { + queue.put(product); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} +``` + +```java +// 消费者 +import java.util.concurrent.BlockingQueue; + +public class Consumer implements Runnable { + private BlockingQueue queue; + + public Consumer(BlockingQueue queue) { + this.queue = queue; + } + + @Override + public void run() { + try { + String product = queue.take(); + System.out.println(Thread.currentThread().getName() + " is consuming product " + product + "..."); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } +} +``` + +```java +// 客户端 +import java.util.concurrent.BlockingQueue; +import java.util.concurrent.LinkedBlockingQueue; + +public class Client { + public static void main(String[] args) { + BlockingQueue queue = new LinkedBlockingQueue<>(5); + for (int i = 0; i < 2; i++) { + new Thread(new Consumer(queue), "Consumer" + i).start(); + } + for (int i = 0; i < 5; i++) { + // 只有两个 Product,因此只能消费两个,其它三个消费者被阻塞 + new Thread(new Producer(queue), "Producer" + i).start(); + } + for (int i = 2; i < 5; i++) { + new Thread(new Consumer(queue), "Consumer" + i).start(); + } + } +} +``` + +```html +// 运行结果 +Producer0 is making product... +Consumer0 is consuming product made by Consumer0... +Producer1 is making product... +Consumer1 is consuming product made by Consumer1... +Producer2 is making product... +Producer3 is making product... +Producer4 is making product... +Consumer2 is consuming product made by Consumer2... +Consumer3 is consuming product made by Consumer3... +Consumer4 is consuming product made by Consumer4... +``` + +# 五、线程状态转换 + +

    + +1. 新建(New):创建后尚未启动; +2. 可运行(Runnale):可能正在运行,也可能正在等待 CPU 时间片; +3. 无限期等待(Waiting):等待其它线程显示地唤醒,否则不会被分配 CPU 时间片; +4. 限期等待(Timed Waiting):无序等待其它线程显示地唤醒,在一定时间之后会被系统自动唤醒; +5. 阻塞(Blocking):等待获取一个排它锁,如果其线程释放了锁就会结束此状态; +6. 死亡(Terminated) + +# 六、Executor + +Executor 管理多个异步任务的执行,而无需程序员显示地管理线程的生命周期。 + +主要有三种 Executor: + +1. CachedTreadPool:一个任务创建一个线程; +2. FixedThreadPool:所有任务只能使用固定大小的线程; +3. SingleThreadExecutor:相当于大小为 1 的 FixedThreadPool。 + +```java +ExecutorService exec = Executors.newCachedThreadPool(); +for(int i = 0; i < 5; i++) { + exec.execute(new MyRunnable()); +} +``` + +# 七、volatile + +保证了内存可见性和禁止指令重排,没法保证原子性。 + +## 保证内存可见性 + +普通共享变量被修改之后,什么时候被写入主存是不确定的。 + +volatile 关键字会保证每次修改共享变量之后该值会立即更新到内存中,并且在读取时会从内存中读取值。 + +synchronized 和 Lock 也能够保证内存可见性。它们能保证同一时刻只有一个线程获取锁然后执行同步代码,并且在释放锁之前会将对变量的修改刷新到主存当中。不过只有对共享变量的 set() 和 get() 方法都加上 synchronized 才能保证可见性,如果只有 set() 方法加了 synchronized,那么 get() 方法并不能保证会从内存中读取最新的数据。 + +## 禁止指令重排 + +在 Java 内存模型中,允许编译器和处理器对指令进行重排序,重排序过程不会影响到单线程程序的执行,却会影响到多线程并发执行的正确性。 + +volatile 关键字通过添加内存屏障的方式来进制指令重排,即重排序时不能把后面的指令放到内存屏障之前。 + +可以通过 synchronized 和 Lock 来保证有序性,它们保证每个时刻只有一个线程执行同步代码,相当于是让线程顺序执行同步代码,自然就保证了有序性。 + +# 八、内存模型 + +## 1. 硬件的效率与一致性 + +对处理器上的寄存器进行读写的速度比内存快几个数量级,为了解决这种速度矛盾,在它们之间加入了高速缓存。 + +每个处理器都有一个高速缓存,但是所有处理器共用一个主内存,因此高速缓存引入了一个新问题:缓存一致性。当多个处理器的运算都涉及同一块主内存区域时,将可能导致各自的缓存数据不一致。缓存不一致问题通常需要使用一些协议来解决。 + +

    + +除了增加高速缓存之外,为了使得处理器内部的运算单元能尽量被充分利用,处理器可能会对输入代码进行乱序执行(Out-Of-Order Execution)优化,处理器会在计算之后将乱序执行的结果重组,保证该结果与顺序执行的结果是一致的,但并不保证程序中各个语句计算的先后顺序与输入代码中的顺序一致,因此,如果存在一个计算任务依赖另外一个计算任务的中间结果,那么其顺序性并不能靠代码的先后顺序来保证。与处理器的乱序执行优化类似,Java 虚拟机的即时编译器中也有类似的指令重排序(Instruction Reorder)优化。 + +## 2. Java 内存模型 + +Java 虚拟机规范中试图定义一种 Java 内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。在此之前,主流程序语言(如 C/C++等)直接使用物理硬件和操作系统的内存模型,但由于不同平台上内存模型的差异,有可能导致程序在一套平台上并发完全正常,而在另外一套平台上并发访问却经常出错,因此在某些场景就必须针对不同的平台来编写程序。 + +## 3. 主内存与工作内存 + +Java 内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量(Variables)与 Java 编程中所说的变量有所区别,它包括了实例字段、静态字段和构成数组对象的元素,但不包括局部变量与方法参数,因为后者是线程私有的,不会被共享,自然就不会存在竞争问题。 + +Java 内存模型规定了所有的变量都存储在主内存(Main Memory)中。每条线程还有自己的工作内存,线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量值的传递均需要通过主内存来完成,线程、主内存、工作内存三者的交互关系如图所示。 + +

    + +## 4. 内存间交互操作 + +Java 内存模型定义了 8 种操作来完成工作内存与主内存之间的交互:一个变量从主内存拷贝到工作内存、从工作内存同步回主内存。虚拟机实现时必须保证下面提及的每一种操作都是原子的、不可再分的。 + +- lock(锁定):作用于主内存的变量,它把一个变量标识为一条线程独占的状态。 +- unlock(解锁):作用于主内存的变量,它把一个处于锁定状态的变量释放出来,释放后的变量才可以被其他线程锁定。 +- read(读取):作用于主内存的变量,它把一个变量的值从主内存传输到线程的工作内存中,以便随后的 load 动作使用。 +- load(载入):作用于工作内存的变量,它把 read 操作从主内存中得到的变量值放入工作内存的变量副本中。 +- use(使用):作用于工作内存的变量,它把工作内存中一个变量的值传递给执行引擎,每当虚拟机遇到一个需要使用到变量的值的字节码指令时将会执行这个操作。 +- assign(赋值):作用于工作内存的变量,它把一个从执行引擎接收到的值赋给工作内存的变量,每当虚拟机遇到一个给变量赋值的字节码指令时执行这个操作。 +- store(存储):作用于工作内存的变量,它把工作内存中一个变量的值传送到主内存中,以便随后的 write 操作使用。 +- write(写入):作用于主内存的变量,它把 store 操作从工作内存中得到的变量的值放入主内存的变量中。 + +## 5. 内存模型三大特性 + +### 5.1 原子性 + +除了 long 和 double 之外的基本数据类型的访问读写是具备原子性的。 + +Java 内存模型允许虚拟机将没有被 volatile 修饰的 64 位数据的读写操作划分为两次 32 位的操作来进行,即虚拟机可以不保证 64 位数据类型的 load、store、read 和 write 这 4 个操作的原子性。但是目前各种平台下的商用虚拟机几乎都选择把 64 位数据的读写操作作为原子操作来对待。 + +AtomicInteger、AtomicLong、AtomicReference 等特殊的原子性变量类提供了下面形式的原子性条件更新语句,使得比较和更新这两个操作能够不可分割地执行。 + +```java +boolean compareAndSet(expectedValue, updateValue); +``` + +AtomicInteger 使用举例: + +```java +private AtomicInteger ai = new AtomicInteger(0); + +public int next() { + return ai.addAndGet(2) +} +``` + +如果应用场景需要一个更大范围的原子性保证,Java 内存模型还提供了 lock 和 unlock 操作来满足这种需求,尽管虚拟机未把 lock 和 unlock 操作直接开放给用户使用,但是却提供了更高层次的字节码指令 monitorenter 和 monitorexit 来隐式地使用这两个操作,这两个字节码指令反映到 Java 代码中就是同步块——synchronized 关键字,因此在 synchronized 块之间的操作也具备原子性。 + +### 5.2 可见性 + +可见性是指当一个线程修改了共享变量的值,其他线程能立即得知这个修改。 + +Java 内存模型是通过在变量修改后将新值同步回主内存,在变量读取前从主内存刷新变量值这种依赖主内存作为传递媒介的方式来实现可见性的,无论是普通变量还是 volatile 变量都是如此,普通变量与 volatile 变量的区别是,volatile 的特殊规则保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。因此,可以说 volatile 保证了多线程操作时变量的可见性,而普通变量则不能保证这一点。 + +除了 volatile 之外,Java 还有两个关键字能实现可见性,即 synchronized 和 final。同步块的可见性是由“对一个变量执行 unlock 操作之前,必须先把此变量同步回主内存中(执行 store、write 操作)”这条规则获得的,而 final 关键字的可见性是指:被 final 修饰的字段在构造器中一旦初始化完成,并且构造器没有把“this”的引用传递出去(this 引用逃逸是一件很危险的事情,其他线程有可能通过这个引用访问到“初始化了一半”的对象),那在其他线程中就能看见 final 字段的值。 + +### 5.3 有序性 + +本线程内观察,所有的操作都是有序的;如果在一个线程中观察另一个线程,所有的操作都是无序的。前半句是指线程内表现为串行的语义,后半句是指指令重排和工作内存和主内存存在同步延迟的现象。 + +Java 语言提供了 volatile 和 synchronized 两个关键字来保证线程之间操作的有序性,volatile 关键字本身就包含了禁止指令重排序的语义,而 synchronized 则是由“一个变量在同一个时刻只允许一条线程对其进行 lock 操作”这条规则获得的,这条规则决定了持有同一个锁的两个同步块只能串行地进入。 + +synchronized 关键字在需要这 3 种特性的时候都可以作为其中一种的解决方案,看起来很“万能”。的确,大部分的并发控制操作都能使用 synchronized 来完成。synchronized 的“万能”也间接造就了它被程序员滥用的局面,越“万能”的并发控制,通常会伴随着越大的性能影响。 + +## 6. 先行发生原则 + +如果 Java 内存模型中所有的有序性都只靠 volatile 和 synchronized 来完成,那么有一些操作将会变得很繁琐,但是我们在编写 Java 并发代码的时候并没有感觉到这一点,这是因为 Java 语言中有一个“先行发生”(Happen-Before) 的原则。这个原则非常重要,它是判断数据是否存在竞争,线程是否安全的主要依据。依靠这个原则,我们可以通过几条规则一次性地解决并发环境下两个操作之间是否可能存在冲突的所有问题。 + +先行发生是 Java 内存模型中定义的两项操作之间的偏序关系,如果说操作 A 先行发生于操作 B,其实就是说在发生操作 B 之前,操作 A 产生的影响能被操作 B 观察到,“影响”包括修改了内存中共享变量的值、发送了消息、调用了方法等。 + +```java +// 以下操作在线程 A 中执行 +k = 1; +// 以下操作在线程 B 中执行 +j = k; +// 以下操作在线程 C 中执行 +k = 2; +``` + +假设线程 A 中的操作“k=1”先行发生于线程 B 的操作“j=k”,那么可以确定在线程 B 的操作执行后,变量 j 的值一定等于 1,得出这个结论的依据有两个:一是根据先行发生原则,“k=1”的结果可以被观察到;二是线程 C 还没“登场”,线程 A 操作结束之后没有其他线程会修改变量 k 的值。现在再来考虑线程 C,我们依然保持线程 A 和线程 B 之间的先行发生关系,而线程 C 出现在线程 A 和线程 B 的操作之间,但是线程 C 与线程 B 没有先行发生关系,那 j 的值会是多少呢?答案是不确定!1 和 2 都有可能,因为线程 C 对变量 k 的影响可能会被线程 B 观察到,也可能不会,这时候线程 B 就存在读取到过期数据的风险,不具备多线程安全性。 + +下面是 Java 内存模型下一些“天然的”先行发生关系,这些先行发生关系无须任何同步器协助就已经存在,可以在编码中直接使用。如果两个操作之间的关系不在此列,并且无法从下列规则推导出来的话,它们就没有顺序性保障,虚拟机可以对它们随意地进行重排序。 + +- 程序次序规则(Program Order Rule):在一个线程内,按照程序代码顺序,书写在前面的操作先行发生于书写在后面的操作。准确地说,应该是控制流顺序而不是程序代码顺序,因为要考虑分支、循环等结构。 +- 管程锁定规则(Monitor Lock Rule):一个 unlock 操作先行发生于后面对同一个锁的 lock 操作。这里必须强调的是同一个锁,而“后面”是指时间上的先后顺序。 +- volatile 变量规则(Volatile Variable Rule):对一个 volatile 变量的写操作先行发生于后面对这个变量的读操作,这里的“后面”同样是指时间上的先后顺序。 +- 线程启动规则(Thread Start Rule):Thread 对象的 start() 方法先行发生于此线程的每一个动作。 +- 线程终止规则(Thread Termination Rule):线程中的所有操作都先行发生于对此线程的终止检测,我们可以通过 Thread.join() 方法结束、Thread.isAlive() 的返回值等手段检测到线程已经终止执行。 +- 线程中断规则(Thread Interruption Rule):对线程 interrupt() 方法的调用先行发生于被中断线程的代码检测到中断事件的发生,可以通过 Thread.interrupted() 方法检测到是否有中断发生。 +- 对象终结规则(Finalizer Rule):一个对象的初始化完成(构造函数执行结束)先行发生于它的 finalize() 方法的开始。 +- 传递性(Transitivity):如果操作 A 先行发生于操作 B,操作 B 先行发生于操作 C,那就可以得出操作 A 先行发生于操作 C 的结论。 + +```java +private int value = 0; +pubilc void setValue(int value) { + this.value = value; +} +public int getValue() { + return value; +} +``` +上述代码显示的是一组再普通不过的 getter/setter 方法,假设存在线程 A 和 B,线程 A 先(时间上的先后)调用了“setValue(1)”,然后线程 B 调用了同一个对象的“getValue()”,那么线程 B 收到的返回值是什么? + +我们依次分析一下先行发生原则中的各项规则,由于两个方法分别由线程 A 和线程 B 调用,不在一个线程中,所以程序次序规则在这里不适用;由于没有同步块,自然就不会发生 lock 和 unlock 操作,所以管程锁定规则不适用;由于 value 变量没有被 volatile 关键字修饰,所以 volatile 变量规则不适用;后面的线程启动、终止、中断规则和对象终结规则也和这里完全没有关系。因为没有一个适用的先行发生规则,所以最后一条传递性也无从谈起,因此我们可以判定尽管线程 A 在操作时间上先于线程 B,但是无法确定线程 B 中“getValue()”方法的返回结果,换句话说,这里面的操作不是线程安全的。 + +那怎么修复这个问题呢?我们至少有两种比较简单的方案可以选择:要么把 getter/setter 方法都定义为 synchronized 方法,这样就可以套用管程锁定规则;要么把 value 定义为 volatile 变量,由于 setter 方法对 value 的修改不依赖 value 的原值,满足 volatile 关键字使用场景,这样就可以套用 volatile 变量规则来实现先行发生关系。 + +通过上面的例子,我们可以得出结论:一个操作“时间上的先发生”不代表这个操作会是“先行发生”,那如果一个操作“先行发生”是否就能推导出这个操作必定是“时间上的先发生”呢?很遗憾,这个推论也是不成立的,一个典型的例子就是多次提到的“指令重排序”。 + +```java +// 以下操作在同一个线程中执行 +int i = 1; +int j = 2; +``` + +代码清单的两条赋值语句在同一个线程之中,根据程序次序规则,“int i=1”的操作先行发生于“int j=2”,但是“int j=2”的代码完全可能先被处理器执行,这并不影响先行发生原则的正确性,因为我们在这条线程之中没有办法感知到这点。 + +上面两个例子综合起来证明了一个结论:时间先后顺序与先行发生原则之间基本没有太大的关系,所以我们衡量并发安全问题的时候不要受到时间顺序的干扰,一切必须以先行发生原则为准。 + +# 九、线程安全 + +《Java Concurrency In Practice》的作者 Brian Goetz 对“线程安全”有一个比较恰当的定义:“当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的”。 + +这个定义比较严谨,它要求线程安全的代码都必须具备一个特征:代码本身封装了所有必要的正确性保障手段(如互斥同步等),令调用者无须关心多线程的问题,更无须自己采取任何措施来保证多线程的正确调用。这点听起来简单,但其实并不容易做到,在大多数场景中,我们都会将这个定义弱化一些,如果把“调用这个对象的行为”限定为“单次调用”,这个定义的其他描述也能够成立的话,我们就可以称它是线程安全了,为什么要弱化这个定义,现在暂且放下,稍后再详细探讨。 + +## 1. Java 语言中的线程安全 + +我们这里讨论的线程安全,就限定于多个线程之间存在共享数据访问这个前提,因为如果一段代码根本不会与其他线程共享数据,那么从线程安全的角度来看,程序是串行执行还是多线程执行对它来说是完全没有区别的。 + +为了更加深入地理解线程安全,在这里我们可以不把线程安全当做一个非真即假的二元排他选项来看待,按照线程安全的“安全程度”由强至弱来排序,我们可以将 Java 语言中各种操作共享的数据分为以下 5 类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。 + +### 1.1 不可变 + +在 Java 语言中(特指 JDK 1.5 以后,即 Java 内存模型被修正之后的 Java 语言),不可变(Immutable)的对象一定是线程安全的,无论是对象的方法实现还是方法的调用者,都不需要再采取任何的线程安全保障措施,只要一个不可变的对象被正确地构建出来(没有发生 this 引用逃逸的情况),那其外部的可见状态永远也不会改变,永远也不会看到它在多个线程之中处于不一致的状态。“不可变”带来的安全性是最简单和最纯粹的。 + +Java 语言中,如果共享数据是一个基本数据类型,那么只要在定义时使用 final 关键字修饰它就可以保证它是不可变的。如果共享数据是一个对象,那就需要保证对象的行为不会对其状态产生任何影响才行,不妨想一想 java.lang.String 类的对象,它是一个典型的不可变对象,我们调用它的 substring()、replace() 和 concat() 这些方法都不会影响它原来的值,只会返回一个新构造的字符串对象。 + +保证对象行为不影响自己状态的途径有很多种,其中最简单的就是把对象中带有状态的变量都声明为 final,这样在构造函数结束之后,它就是不可变的。 + +在 Java API 中符合不可变要求的类型,除了上面提到的 String 之外,常用的还有枚举类型,以及 java.lang.Number 的部分子类,如 Long 和 Double 等数值包装类型,BigInteger 和 BigDecimal 等大数据类型;但同为 Number 的子类型的原子类 AtomicInteger 和 AtomicLong 则并非不可变的。 + +### 1.2 绝对线程安全 + +绝对的线程安全完全满足 Brian Goetz 给出的线程安全的定义,这个定义其实是很严格的,一个类要达到“不管运行时环境如何,调用者都不需要任何额外的同步措施”通常需要付出很大的,甚至有时候是不切实际的代价。在 Java API 中标注自己是线程安全的类,大多数都不是绝对的线程安全。我们可以通过 Java API 中一个不是“绝对线程安全”的线程安全类来看看这里的“绝对”是什么意思。 + +如果说 java.util.Vector 是一个线程安全的容器,相信所有的 Java 程序员对此都不会有异议,因为它的 add()、get() 和 size() 这类方法都是被 synchronized 修饰的,尽管这样效率很低,但确实是安全的。但是,即使它所有的方法都被修饰成同步,也不意味着调用它的时候永远都不再需要同步手段了。 + +```java +private static Vector vector = new Vector(); + +public static void main(String[] args) { + while (true) { + for (int i = 0; i < 10; i++) { + vector.add(i); + } + + Thread removeThread = new Thread(new Runnable() { + @Override + public void run() { + for (int i = 0; i < vector.size(); i++) { + vector.remove(i); + } + } + }); + + Thread printThread = new Thread(new Runnable() { + @Override + public void run() { + for (int i = 0; i < vector.size(); i++) { + System.out.println((vector.get(i))); + } + } + }); + + removeThread.start(); + printThread.start(); + + // 不要同时产生过多的线程,否则会导致操作系统假死 + while (Thread.activeCount() > 20); + } +} +``` + +```html +Exception in thread"Thread-132"java.lang.ArrayIndexOutOfBoundsException: +Array index out of range:17 +at java.util.Vector.remove(Vector.java:777) +at org.fenixsoft.mulithread.VectorTest$1.run(VectorTest.java:21) +at java.lang.Thread.run(Thread.java:662) +``` + +很明显,尽管这里使用到的 Vector 的 get()、remove() 和 size() 方法都是同步的,但是在多线程的环境中,如果不在方法调用端做额外的同步措施的话,使用这段代码仍然是不安全的,因为如果另一个线程恰好在错误的时间里删除了一个元素,导致序号 i 已经不再可用的话,再用 i 访问数组就会抛出一个 ArrayIndexOutOfBoundsException。如果要保证这段代码能正确执行下去,我们不得不把 removeThread 和 printThread 的定义改成如下所示的样子: + +```java + Thread removeThread = new Thread(new Runnable() { + @Override + public void run() { + synchronized (vector) { + for (int i = 0; i < vector.size(); i++) { + vector.remove(i); + } + } + } +}); + +Thread printThread = new Thread(new Runnable() { + @Override + public void run() { + synchronized (vector) { + for (int i = 0; i < vector.size(); i++) { + System.out.println((vector.get(i))); + } + } + } +}); +``` + +### 1.3 相对线程安全 + +相对的线程安全就是我们通常意义上所讲的线程安全,它需要保证对这个对象单独的操作是线程安全的,我们在调用的时候不需要做额外的保障措施,但是对于一些特定顺序的连续调用,就可能需要在调用端使用额外的同步手段来保证调用的正确性。 + +在 Java 语言中,大部分的线程安全类都属于这种类型,例如 Vector、HashTable、Collections 的 synchronizedCollection() 方法包装的集合等。 + +### 1.4 线程兼容 + +线程兼容是指对象本身并不是线程安全的,但是可以通过在调用端正确地使用同步手段来保证对象在并发环境中可以安全地使用,我们平常说一个类不是线程安全的,绝大多数时候指的是这一种情况。Java API 中大部分的类都是属于线程兼容的,如与前面的 Vector 和 HashTable 相对应的集合类 ArrayList 和 HashMap 等。 + +### 1.5 线程对立 + +线程对立是指无论调用端是否采取了同步措施,都无法在多线程环境中并发使用的代码。由于 Java 语言天生就具备多线程特性,线程对立这种排斥多线程的代码是很少出现的,而且通常都是有害的,应当尽量避免。 + +一个线程对立的例子是 Thread 类的 suspend() 和 resume() 方法,如果有两个线程同时持有一个线程对象,一个尝试去中断线程,另一个尝试去恢复线程,如果并发进行的话,无论调用时是否进行了同步,目标线程都是存在死锁风险的,如果 suspend() 中断的线程就是即将要执行 resume() 的那个线程,那就肯定要产生死锁了。也正是由于这个原因,suspend() 和 resume() 方法已经被 JDK 声明废弃(@Deprecated)了。常见的线程对立的操作还有 System.setIn()、Sytem.setOut() 和 System.runFinalizersOnExit() 等。 + +## 2. 线程安全的实现方法 + +如何实现线程安全与代码编写有很大的关系,但虚拟机提供的同步和锁机制也起到了非常重要的作用。本节中,代码编写如何实现线程安全和虚拟机如何实现同步与锁这两者都会有所涉及,相对而言更偏重后者一些,只要读者了解了虚拟机线程安全手段的运作过程,自己去思考代码如何编写并不是一件困难的事情。 + +### 2.1 互斥同步 + +互斥同步(Mutual Exclusion&Synchronization)是常见的一种并发正确性保障手段。同步是指在多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一个(或者是一些,使用信号量的时候)线程使用。而互斥是实现同步的一种手段,临界区(Critical Section)、互斥量(Mutex)和信号量(Semaphore)都是主要的互斥实现方式。因此,在这 4 个字里面,互斥是因,同步是果;互斥是方法,同步是目的。 + +在 Java 中,最基本的互斥同步手段就是 synchronized 关键字,synchronized 关键字经过编译之后,会在同步块的前后分别形成 monitorenter 和 monitorexit 这两个字节码指令,这两个字节码都需要一个 reference 类型的参数来指明要锁定和解锁的对象。如果 Java 程序中的 synchronized 明确指定了对象参数,那就是这个对象的 reference;如果没有明确指定,那就根据 synchronized 修饰的是实例方法还是类方法,去取对应的对象实例或 Class 对象来作为锁对象。 + +根据虚拟机规范的要求,在执行 monitorenter 指令时,首先要尝试获取对象的锁。如果这个对象没被锁定,或者当前线程已经拥有了那个对象的锁,把锁的计数器加 1,相应的,在执行 monitorexit 指令时会将锁计数器减 1,当计数器为 0 时,锁就被释放。如果获取对象锁失败,那当前线程就要阻塞等待,直到对象锁被另外一个线程释放为止。 + +在虚拟机规范对 monitorenter 和 monitorexit 的行为描述中,有两点是需要特别注意的。首先,synchronized 同步块对同一条线程来说是可重入的,不会出现自己把自己锁死的问题。其次,同步块在已进入的线程执行完之前,会阻塞后面其他线程的进入。Java 的线程是映射到操作系统的原生线程之上的,如果要阻塞或唤醒一个线程,都需要操作系统来帮忙完成,这就需要从用户态转换到核心态中,因此状态转换需要耗费很多的处理器时间。对于代码简单的同步块(如被 synchronized 修饰的 getter() 或 setter() 方法),状态转换消耗的时间有可能比用户代码执行的时间还要长。所以 synchronized 是 Java 语言中一个重量级(Heavyweight)的操作,有经验的程序员都会在确实必要的情况下才使用这种操作。而虚拟机本身也会进行一些优化,譬如在通知操作系统阻塞线程之前加入一段自旋等待过程,避免频繁地切入到核心态之中。 + +除了 synchronized 之外,我们还可以使用 java.util.concurrent(下文称 J.U.C)包中的重入锁(ReentrantLock)来实现同步,在基本用法上,ReentrantLock 与 synchronized 很相似,他们都具备一样的线程重入特性,只是代码写法上有点区别,一个表现为 API 层面的互斥锁(lock() 和 unlock() 方法配合 try/finally 语句块来完成),另一个表现为原生语法层面的互斥锁。不过,相比 synchronized,ReentrantLock 增加了一些高级功能,主要有以下 3 项:等待可中断、可实现公平锁,以及锁可以绑定多个条件。 + +- 等待可中断是指当持有锁的线程长期不释放锁的时候,正在等待的线程可以选择放弃等待,改为处理其他事情,可中断特性对处理执行时间非常长的同步块很有帮助。 + +- 公平锁是指多个线程在等待同一个锁时,必须按照申请锁的时间顺序来依次获得锁;而非公平锁则不保证这一点,在锁被释放时,任何一个等待锁的线程都有机会获得锁。synchronized 中的锁是非公平的,ReentrantLock 默认情况下也是非公平的,但可以通过带布尔值的构造函数要求使用公平锁。 + +- 锁绑定多个条件是指一个 ReentrantLock 对象可以同时绑定多个 Condition 对象,而在 synchronized 中,锁对象的 wait() 和 notify() 或 notifyAll() 方法可以实现一个隐含的条件,如果要和多于一个的条件关联的时候,就不得不额外地添加一个锁,而 ReentrantLock 则无须这样做,只需要多次调用 newCondition() 方法即可。 + +如果需要使用上述功能,选用 ReentrantLock 是一个很好的选择,那如果是基于性能考虑呢?关于 synchronized 和 ReentrantLock 的性能问题,Brian Goetz 对这两种锁在 JDK 1.5 与单核处理器,以及 JDK 1.5 与双 Xeon 处理器环境下做了一组吞吐量对比的实验,实验结果如图 13-1 和图 13-2 所示。 + +

    +
    JDK 1.5、单核处理器下两种锁的吞吐量对比

    + +

    +
    JDK 1.5、双 Xeon 处理器下两种锁的吞吐量对比

    + +多线程环境下 synchronized 的吞吐量下降得非常严重,而 ReentrantLock 则能基本保持在同一个比较稳定的水平上。与其说 ReentrantLock 性能好,还不如说 synchronized 还有非常大的优化余地。后续的技术发展也证明了这一点,JDK 1.6 中加入了很多针对锁的优化措施,JDK 1.6 发布之后,人们就发现 synchronized 与 ReentrantLock 的性能基本上是完全持平了。因此,如果读者的程序是使用 JDK 1.6 或以上部署的话,性能因素就不再是选择 ReentrantLock 的理由了,虚拟机在未来的性能改进中肯定也会更加偏向于原生的 synchronized,所以还是提倡在 synchronized 能实现需求的情况下,优先考虑使用 synchronized 来进行同步。 + +### 2.2 非阻塞同步 + +互斥同步最主要的问题就是进行线程阻塞和唤醒所带来的性能问题,因此这种同步也称为阻塞同步(Blocking Synchronization)。从处理问题的方式上说,互斥同步属于一种悲观的并发策略,总是认为只要不去做正确的同步措施(例如加锁),那就肯定会出现问题,无论共享数据是否真的会出现竞争,它都要进行加锁(这里讨论的是概念模型,实际上虚拟机会优化掉很大一部分不必要的加锁)、用户态核心态转换、维护锁计数器和检查是否有被阻塞的线程需要唤醒等操作。随着硬件指令集的发展,我们有了另外一个选择:基于冲突检测的乐观并发策略,通俗地说,就是先进行操作,如果没有其他线程争用共享数据,那操作就成功了;如果共享数据有争用,产生了冲突,那就再采取其他的补偿措施(最常见的补偿措施就是不断地重试,直到成功为止),这种乐观的并发策略的许多实现都不需要把线程挂起,因此这种同步操作称为非阻塞同步(Non-Blocking Synchronization)。 + +为什么笔者说使用乐观并发策略需要“硬件指令集的发展”才能进行呢?因为我们需要操作和冲突检测这两个步骤具备原子性,靠什么来保证呢?如果这里再使用互斥同步来保证就失去意义了,所以我们只能靠硬件来完成这件事情,硬件保证一个从语义上看起来需要多次操作的行为只通过一条处理器指令就能完成,这类指令常用的有: + +- 测试并设置(Test-and-Set) +- 获取并增加(Fetch-and-Increment) +- 交换(Swap) +- 比较并交换(Compare-and-Swap,下文称 CAS) +- 加载链接/条件存储(Load-Linked/Store-Conditional,下文称 LL/SC) + +其中,前面的 3 条是 20 世纪就已经存在于大多数指令集之中的处理器指令,后面的两条是现代处理器新增的,而且这两条指令的目的和功能是类似的。在 IA64、x86 指令集中有 cmpxchg 指令完成 CAS 功能,在 sparc-TSO 也有 casa 指令实现,而在 ARM 和 PowerPC 架构下,则需要使用一对 ldrex/strex 指令来完成 LL/SC 的功能。 + +**CAS** 指令需要有 3 个操作数,分别是内存位置(在 Java 中可以简单理解为变量的内存地址,用 V 表示)、旧的预期值(用 A 表示)和新值(用 B 表示)。CAS 指令执行时,当且仅当 V 符合旧预期值 A 时,处理器用新值 B 更新 V 的值,否则它就不执行更新,但是无论是否更新了 V 的值,都会返回 V 的旧值,上述的处理过程是一个原子操作。 + +在 JDK 1.5 之后,Java 程序中才可以使用 CAS 操作,该操作由 sun.misc.Unsafe 类里面的 compareAndSwapInt() 和 compareAndSwapLong() 等几个方法包装提供,虚拟机在内部对这些方法做了特殊处理,即时编译出来的结果就是一条平台相关的处理器 CAS 指令,没有方法调用的过程,或者可以认为是无条件内联进去了。 + +由于 Unsafe 类不是提供给用户程序调用的类(Unsafe.getUnsafe() 的代码中限制了只有启动类加载器(Bootstrap ClassLoader)加载的 Class 才能访问它),因此,如果不采用反射手段,我们只能通过其他的 Java API 来间接使用它,如 J.U.C 包里面的整数原子类,其中的 compareAndSet() 和 getAndIncrement() 等方法都使用了 Unsafe 类的 CAS 操作。 + +这段 20 个线程自增 10000 次的代码使用了 AtomicInteger 之后程序输出了正确结果,一切都要归功于 incrementAndGet() 方法的原子性。 + +代码清单 4:Atomic 的原子自增运算 + +```java +/** + * Atomic 变量自增运算测试 + * + * @author zzm +*/ +public class AtomicTest { + + public static AtomicInteger race = new AtomicInteger(0); + + public static void increase() { + race.incrementAndGet(); + } + + private static final int THREADS_COUNT = 20; + + public static void main(String[] args) throws Exception { + Thread[] threads = new Thread[THREADS_COUNT]; + for (int i = 0; i < THREADS_COUNT; i++) { + threads[i] = new Thread(new Runnable() { + @Override + public void run() { + for (int i = 0; i < 10000; i++) { + increase(); + } + } + }); + threads[i].start(); + } + + while (Thread.activeCount() > 1) + Thread.yield(); + + System.out.println(race); + } +} +``` + +``` +200000 +``` + +incrementAndGet() 的实现其实非常简单。 + +代码清单 5:incrementAndGet() 方法的 JDK 源码 + +```java +/** + * Atomically increment by one the current value. + * @return the updated value + */ +public final int incrementAndGet() { + for (;;) { + int current = get(); + int next = current + 1; + if (compareAndSet(current, next)) + return next; + } +} +``` + +incrementAndGet() 方法在一个无限循环中,不断尝试将一个比当前值大 1 的新值赋给自己。如果失败了,那说明在执行“获取-设置”操作的时候值已经有了修改,于是再次循环进行下一次操作,直到设置成功为止。 + +尽管 CAS 看起来很美,但显然这种操作无法涵盖互斥同步的所有使用场景,并且 CAS 从语义上来说并不是完美的,存在这样的一个逻辑漏洞:如果一个变量 V 初次读取的时候是 A 值,并且在准备赋值的时候检查到它仍然为 A 值,那我们就能说它的值没有被其他线程改变过了吗?如果在这段期间它的值曾经被改成了 B,后来又被改回为 A,那 CAS 操作就会误认为它从来没有被改变过。这个漏洞称为 CAS 操作的“ABA”问题。J.U.C 包为了解决这个问题,提供了一个带有标记的原子引用类“AtomicStampedReference”,它可以通过控制变量值的版本来保证 CAS 的正确性。不过目前来说这个类比较“鸡肋”,大部分情况下 ABA 问题不会影响程序并发的正确性,如果需要解决 ABA 问题,改用传统的互斥同步可能会比原子类更高效。 + +### 2.3 无同步方案 + +要保证线程安全,并不是一定就要进行同步,两者没有因果关系。同步只是保证共享数据争用时的正确性的手段,如果一个方法本来就不涉及共享数据,那它自然就无须任何同步措施去保证正确性,因此会有一些代码天生就是线程安全的,笔者简单地介绍其中的两类。 + +**可重入代码** (Reentrant Code):这种代码也叫做纯代码(Pure Code),可以在代码执行的任何时刻中断它,转而去执行另外一段代码(包括递归调用它本身),而在控制权返回后,原来的程序不会出现任何错误。相对线程安全来说,可重入性是更基本的特性,它可以保证线程安全,即所有的可重入的代码都是线程安全的,但是并非所有的线程安全的代码都是可重入的。 + +可重入代码有一些共同的特征,例如不依赖存储在堆上的数据和公用的系统资源、用到的状态量都由参数中传入、不调用非可重入的方法等。我们可以通过一个简单的原则来判断代码是否具备可重入性:如果一个方法,它的返回结果是可以预测的,只要输入了相同的数据,就都能返回相同的结果,那它就满足可重入性的要求,当然也就是线程安全的。 + +**线程本地存储** (Thread Local Storage):如果一段代码中所需要的数据必须与其他代码共享,那就看看这些共享数据的代码是否能保证在同一个线程中执行?如果能保证,我们就可以把共享数据的可见范围限制在同一个线程之内,这样,无须同步也能保证线程之间不出现数据争用的问题。 + +符合这种特点的应用并不少见,大部分使用消费队列的架构模式(如“生产者-消费者”模式)都会将产品的消费过程尽量在一个线程中消费完,其中最重要的一个应用实例就是经典 Web 交互模型中的“一个请求对应一个服务器线程”(Thread-per-Request)的处理方式,这种处理方式的广泛应用使得很多 Web 服务端应用都可以使用线程本地存储来解决线程安全问题。 + +Java 语言中,如果一个变量要被多线程访问,可以使用 volatile 关键字声明它为“易变的”;如果一个变量要被某个线程独享,Java 中就没有类似 C++中 \_\_declspec(thread)这样的关键字,不过还是可以通过 java.lang.ThreadLocal 类来实现线程本地存储的功能。每一个线程的 Thread 对象中都有一个 ThreadLocalMap 对象,这个对象存储了一组以 ThreadLocal.threadLocalHashCode 为键,以本地线程变量为值的 K-V 值对,ThreadLocal 对象就是当前线程的 ThreadLocalMap 的访问入口,每一个 ThreadLocal 对象都包含了一个独一无二的 threadLocalHashCode 值,使用这个值就可以在线程 K-V 值对中找回对应的本地线程变量。 + +# 十、锁优化 + +高效并发是从 JDK 1.5 到 JDK 1.6 的一个重要改进,HotSpot 虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻量级锁(Lightweight Locking)和偏向锁(Biased Locking)等。这些技术都是为了在线程之间更高效地共享数据,以及解决竞争问题,从而提高程序的执行效率。 + +## 1. 自旋锁与自适应自旋 + +前面我们讨论互斥同步的时候,提到了互斥同步对性能最大的营销阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态完成,这些操作给系统的并发性能带来了很大的压力。同时,虚拟机的开发团队也注意到在许多应用上,共享数据的锁定状态只会持续很短的一段时间,为了这段时间去挂起和恢复线程并不值得。如果物理机器有一个以上的处理器,能让两个或以上的线程同时并行执行,我们就可以让后面请求锁的那个线程 “稍等一下”,但不放弃处理器的执行时间,看看持有锁的线程是否很快就会释放锁。为了让线程等待,我们只需让线程执行一个忙循环(自旋),这项技术就是所谓的自旋锁。 + +自旋锁在 JDK 1.4.2 中就已经引入,只不过默认是关闭的,可以使用 -XX:+UseSpinning 参数来开启,在 JDK 1.6 就已经改为默认开启了。自旋等待不能代替阻塞,且先不说对处理器数量的要求,自旋等待本身虽然避免了线程切换的开销,但它是要占用处理器时间的,因此,如果锁被占用的时间很短,自旋等待的效果就会非常好,反之,如果锁被占用的时候很长,那么自旋的线程只会白白消耗处理器资源,而不会做任何有用的工作,反而会带来性能上的浪费。因此,自旋等待的时间必须要有一定的限度,如果自旋超过了限定的次数仍然没有成功获得锁,就应当使用传统的方式去挂起线程了。自旋次数的默认值是 10 次,用户可以使用参数 -XX:PreBlockSpin 来更改。 + +在 JDK 1.6 中引入了自适应的自旋锁。自适应意味着自旋的时间不再固定了,而是由前一次在同一个锁上的自旋时间及锁的拥有者的状态来决定。如果在同一个锁对象上,自旋等待刚刚成功获得过锁,并且持有锁的线程正在运行中,那么虚拟机就会认为这次自旋也很有可能再次成功,进而它将允许自旋等待持续相对更长的时间,比如 100 个循环。另外,如果对于某个锁,自旋很少成功获得过,那在以后要获取这个锁时将可能省略掉自旋过程,以避免浪费处理器资源。有了自适应自旋,随着程序运行和性能监控信息的不断完善,虚拟机对程序锁的状况预测就会越来越准确,虚拟机就会变得越来越 “聪明” 了。 + +## 2. 锁消除 + +锁消除是指虚拟机即时编译器在运行时,对一些代码上要求同步,但是被检测到不可能存在共享数据竞争的锁进行消除。锁消除的主要判定依据来源于逃逸分析的数据支持,如果判定在一段代码中,堆上的所有数据都不会逃逸出去从而被其他线程访问到,那就可以把他们当做栈上数据对待,认为它们是线程私有的,同步加锁自然就无须进行。 + +也许读者会有疑问,变量是否逃逸,对于虚拟机来说需要使用数据流分析来确定,但是程序自己应该是很清楚的,怎么会在明知道不存在数据争用的情况下要求同步呢?答案是有许多同步措施并不是程序员自己加入的。同步的代码在 Java 程序中的普遍程度也许超过了大部分读者的想象。下面段非常简单的代码仅仅是输出 3 个字符串相加的结果,无论是源码字面上还是程序语义上都没有同步。 + +代码清单 6:一段看起来没有同步的代码 + +```java +public static String concatString(String s1, String s2, String s3) { + return s1 + s2 + s3; +} +``` + +我们也知道,由于 String 是一个不可变的类,对字符串的连接操作总是通过生成新的 String 对象来进行的,因此 Javac 编译器会对 String 连接做自动优化。在 JDK 1.5 之前,会转化为 StringBuffer 对象的连续 append() 操作,在 JDK 1.5 及以后的版本中,会转化为 StringBuilder 对象的连续 append() 操作,即上面的代码可能会变成下面的样子: + +代码清单 7:Javac 转化后的字符串连接操作 + +```java +public static String concatString(String s1, String s2, String s3) { + StringBuffer sb = new StringBuffer(); + sb.append(s1); + sb.append(s2); + sb.append(s3); + return sb.toString(); +} +``` +每个 StringBuffer.append() 方法中都有一个同步块,锁就是 sb 对象。虚拟机观察变量 sb,很快就会发现它的动态作用域被限制在 concatString() 方法内部。也就是说,sb 的所有引用永远不会 “逃逸” 到 concatString() 方法之外,其他线程无法访问到它,因此,虽然这里有锁,但是可以被安全地消除掉,在即时编译之后,这段代码就会忽略掉所有的同步而直接执行了。 + +## 3. 锁粗化 + +原则上,我们在编写代码的时候,总是推荐将同步块的作用范围限制得尽量小——只在共享数据的实际作用域中才进行同步,这样是为了使得需要同步的操作数量尽可能变小,如果存在锁竞争,那等待锁的线程也能尽快拿到锁。 + +大部分情况下,上面的原则都是正确的,但是如果一系列的连续操作都对同一个对象反复加锁和解锁,甚至加锁操作是出现在循环体中,那即使没有线程竞争,频繁地进行互斥同步操作也会导致不必要的性能损耗。 + +代码清单 7 中连续的 append() 方法就属于这类情况。如果虚拟机探测到由这样的一串零碎的操作都对同一个对象加锁,将会把加锁同步的范围扩展(粗化)到整个操作序列的外部,以代码清单 7 为例,就是扩展到第一个 append() 操作之前直至最后一个 append() 操作之后,这样只需要加锁一次就可以了。 + +## 4. 轻量级锁 + +轻量级锁是 JDK 1.6 之中加入的新型锁机制,它名字中的 “轻量级” 是相对于使用操作系统互斥量来实现的传统锁而言的,因此传统的锁机制就称为 “重量级” 锁。首先需要强调一点的是,轻量级锁并不是用来代替重要级锁的,它的本意是在没有多线程竞争的前提下,减少传统的重量级锁使用操作系统互斥量产生的性能消耗。 + +要理解轻量级锁,以及后面会讲到的偏向锁的原理和运作过程,必须从 HotSpot 虚拟机的对象(对象头部分)的内存布局开始介绍。HotSpot 虚拟机的对象头(Object Header)分为两部分信息,第一部分用于存储对象自身的运行时数据,如哈希码(HashCode)、GC 分代年龄(Generational GC Age)等,这部分数据是长度在 32 位和 64 位的虚拟机中分别为 32 bit 和 64 bit,官方称它为 “Mark Word”,它是实现轻量级锁和偏向锁的关键。另外一部分用于存储指向方法区对象类型数据的指针,如果是数组对象的话,还会有一个额外的部分用于存储数组长度。 + +对象头信息是与对象自身定义的数据无关的额外存储成本,考虑到虚拟机的空间效率,Mark Work 被设计成一个非固定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用自己的存储空间。例如,在 32 位的 HotSpot 虚拟机中对象未被锁定的状态下,Mark Word 的 32bit 空间中的 25bit 用于存储对象哈希码(HashCode),4bit 用于存储对象分代年龄,2bit 用于存储锁标志位,1bit 固定为 0,在其他状态(轻量级锁定、重量级锁定、GC 标记、可偏向)下对象的存储内容见表 13-1。 + +

    + +简单地介绍了对象的内存布局后,我们把话题返回到轻量级锁的执行过程上。在代码进入同步块的时候,如果此同步对象没有被锁定(锁标志位为 “01” 状态)虚拟机首先将在当前线程的栈帧中建立一个名为锁记录(Lock Record)的空间,用于存储锁对象目前的 Mark Word 的拷贝(官方把这份拷贝加上了一个 Displaced 前缀,即 Displaced Mark Word),这时候线程堆栈与对象头的状态如图 13-3 所示。 + +

    + +然后,虚拟机将使用 CAS 操作尝试将对象的 Mark Word 更新为指向 Lock Record 的指针。如果这个更新动作成功了,那么这个线程就拥有了该对象的锁,并且对象 Mark Word 的锁标志位 (Mark Word 的最后 2bit)将转变为 “00”,即表示此对象处于轻量级锁定状态,这时候线程堆栈与对象头的状态如图 12-4 所示。 + +

    + +如果这个更新操作失败了,虚拟机首先会检查对象的 Mark Word 是否指向当前线程的栈帧,如果只说明当前线程已经拥有了这个对象的锁,那就可以直接进入同步块继续执行,否则说明这个锁对象以及被其他线程线程抢占了。如果有两条以上的线程争用同一个锁,那轻量级锁就不再有效,要膨胀为重量级锁,所标志的状态变为 “10”,Mark Word 中存储的就是指向重量级锁(互斥量)的指针,后面等待锁的线程也要进入阻塞状态。 + +上面描述的是轻量级锁的加锁过程,它的解锁过程也是通过 CAS 操作来进行的,如果对象的 Mark Word 仍然指向着线程的锁记录,那就用 CAS 操作把对象当前的 Mark Word 和线程中复制的 Displaced Mark Word 替换回来,如果替换成功,整个同步过程就完成了。如果替换失败,说明有其他线程尝试过获取该锁,那就要释放锁的同时,唤醒被挂起的线程。 + +轻量级锁能提升程序同步性能的依据是 “对于绝大部分的锁,在整个同步周期内都是不存在竞争的”,这是一个经验数据。如果没有竞争,轻量级锁使用 CAS 操作避免了使用互斥量的开销,但如果存在锁竞争,除了互斥量的开销外,还额外发生了 CAS 操作,因此在有竞争的情况下,轻量级锁会比传统的重量级锁更慢。 + +## 5. 偏向锁 + +偏向锁也是 JDK 1.6 中引入的一项锁优化,它的目的是消除数据在无竞争情况下的同步原语,进一步提高程序的运行性能。如果说轻量级锁是在无竞争的情况下使用 CAS 操作去消除同步使用的互斥量,那偏向锁就是在无竞争的情况下把整个同步都消除掉,连 CAS 操作都不做了。 + +偏向锁的 “偏”,就是偏心的 “偏”、偏袒的 “偏”,它的意思是这个锁会偏向于第一个获得它的线程,如果在接下来的执行过程中,该锁没有被其他的线程获取,则持有偏向锁的线程将永远不需要再进行同步。 + +如果读者读懂了前面轻量级锁中关于对象头 Mark Word 与线程之间的操作过程,那偏向锁的原理理解起来就会很简单。假设当前虚拟机启用了偏向锁(启用参数 -XX:+UseBiasedLocking,这是 JDK 1.6 的默认值),那么,当锁对象第一次被线程获取的时候,虚拟机将会把对象头中的标志位设为 “01”,即偏向模式。同时使用 CAS 操作把获取到这个锁的线程 ID 记录在对象的 Mark Word 之中,如果 CAS 操作成功,持有偏向锁的线程以后每次进入这个锁相关的同步块时,虚拟机都可以不再进行如何同步操作(例如 Locking、Unlocking 及对 Mark Word 的 Update 等)。 + +当有另外一个线程去尝试获取这个锁时,偏向模式就宣告结束。根据锁对象目前是否处于被锁定的状态,撤销偏向(Revoke Bias)后恢复到未锁定(标志位为 “01”)或轻量级锁定(标志位为 “00”)的状态,后续的同步操作就如上面介绍的轻量级锁那样执行。偏向锁、轻量级锁的状态转换及对象 Mark Word 的关系如图 13-5 所示。 + +

    + +偏向锁可以提高带有同步但无竞争的程序性能。它同样是一个带有效益权衡(Trade Off)性质的优化,也就是说,它并不一定总是对程序运行有利,如果程序中大多数的锁总是被多个不同的线程访问,那偏向模式就是多余的。在具体问题具体分析的前提下,有时候使用参数 -XX:-UseBiasedLocking 来禁止偏向锁优化反而可以提升性能。 + +# 十一、多线程开发良好的实践 + +- 给线程命名。 +- 最小化同步范围。 +- 优先使用 volatile。 +- 尽可能使用更高层次的并发工具而非 wait 和 notify() 来实现线程通信,如 BlockingQueue, Semeaphore。 +- 多用并发容器,少用同步容器,并发容器比同步容器的可扩展性更好。 +- 考虑使用线程池。 +- 最低限度的使用同步和锁,缩小临界区。因此相对于同步方法,同步块会更好。 + +# 参考资料 + +- Java 编程思想 +- 深入理解 Java 虚拟机 +- [线程通信](http://ifeve.com/thread-signaling/#missed_signal) +- [Java 线程面试题 Top 50](http://www.importnew.com/12773.html) +- [BlockingQueue](http://tutorials.jenkov.com/java-util-concurrent/blockingqueue.html) +- [thread state java](https://stackoverflow.com/questions/11265289/thread-state-java) diff --git a/notes/Java 虚拟机.md b/notes/Java 虚拟机.md new file mode 100644 index 00000000..52ab99b6 --- /dev/null +++ b/notes/Java 虚拟机.md @@ -0,0 +1,686 @@ + +* [一、运行时数据区域](#一运行时数据区域) + * [程序计数器](#程序计数器) + * [Java 虚拟机栈](#java-虚拟机栈) + * [本地方法栈](#本地方法栈) + * [Java 堆](#java-堆) + * [方法区](#方法区) + * [运行时常量池](#运行时常量池) + * [直接内存](#直接内存) +* [二、垃圾收集](#二垃圾收集) + * [判断一个对象是否可回收](#判断一个对象是否可回收) + * [垃圾收集算法](#垃圾收集算法) + * [垃圾收集器](#垃圾收集器) + * [内存分配与回收策略](#内存分配与回收策略) + * [Full GC 的触发条件](#full-gc-的触发条件) +* [三、类加载机制](#三类加载机制) + * [类的生命周期](#类的生命周期) + * [类初始化时机](#类初始化时机) + * [类加载过程](#类加载过程) + * [类加载器](#类加载器) +* [四、JVM 参数](#四jvm-参数) + * [GC 优化配置](#gc-优化配置) + * [GC 类型设置](#gc-类型设置) +* [参考资料](#参考资料) + + + +# 一、运行时数据区域 + +

    + +注:白色区域为线程私有,蓝色区域为线程共享。 + +## 程序计数器 + +记录正在执行的虚拟机字节码指令的地址(如果正在执行的是本地方法则为空)。 + +## Java 虚拟机栈 + +每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。 + +可以通过 -Xss 这个虚拟机参数来指定一个程序的 Java 虚拟机栈内存大小: + +```java +java -Xss=512M HackTheJava +``` + +该区域可能抛出以下异常: + +1. 当线程请求的栈深度超过最大值,会抛出 StackOverflowError 异常; +2. 栈进行动态扩展时如果无法申请到足够内存,会抛出 OutOfMemoryError 异常。 + +## 本地方法栈 + +本地方法不是用 Java 实现,对待这些方法需要特别处理。 + +与 Java 虚拟机栈类似,它们之间的区别只不过是本地方法栈为本地方法服务。 + +## Java 堆 + +所有对象实例都在这里分配内存。 + +是垃圾收集的主要区域("GC 堆 "),现代的垃圾收集器基本都是采用分代收集算法,该算法的思想是针对不同的对象采取不同的垃圾回收算法,因此虚拟机把 Java 堆分成以下三块: + +- 新生代(Young Generation) +- 老年代(Old Generation) +- 永久代(Permanent Generation) + +当一个对象被创建时,它首先进入新生代,之后有可能被转移到老年代中。新生代存放着大量的生命很短的对象,因此新生代在三个区域中垃圾回收的频率最高。为了更高效地进行垃圾回收,把新生代继续划分成以下三个空间: + +- Eden +- From Survivor +- To Survivor + +

    + +Java 堆不需要连续内存,并且可以通过动态增加其内存,增加失败会抛出 OutOfMemoryError 异常。 + +可以通过 -Xms 和 -Xmx 两个虚拟机参数来指定一个程序的 Java 堆内存大小,第一个参数设置最小值,第二个参数设置最大值。 + +```java +java -Xms=1M -XmX=2M HackTheJava +``` + +## 方法区 + +用于存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。 + +和 Java 堆一样不需要连续的内存,并且可以动态扩展,动态扩展失败一样会抛出 OutOfMemoryError 异常。 + +对这块区域进行垃圾回收的主要目标是对常量池的回收和对类的卸载,但是一般比较难实现,HotSpot 虚拟机把它当成永久代来进行垃圾回收。 + +## 运行时常量池 + +运行时常量池是方法区的一部分。 + +Class 文件中的常量池(编译器生成的各种字面量和符号引用)会在类加载后被放入这个区域。 + +除了在编译期生成的常量,还允许动态生成,例如 String 类的 intern()。这部分常量也会被放入运行时常量池。 + +## 直接内存 + +在 JDK 1.4 中新加入了 NIO 类,引入了一种基于通道(Channel)与缓冲区(Buffer)的 I/O 方式,它可以使用 Native 函数库直接分配堆外内存,然后通过一个存储在 Java 堆里的 DirectByteBuffer 对象作为这块内存的引用进行操作。这样能在一些场景中显著提高性能,因为避免了在 Java 堆和 Native 堆中来回复制数据。 + +# 二、垃圾收集 + +程序计数器、虚拟机栈和本地方法栈这三个区域属于线程私有的,只存在于线程的生命周期内,线程结束之后也会消失,因此不需要对这三个区域进行垃圾回收。垃圾回收主要是针对 Java 堆和方法区进行。 + +## 判断一个对象是否可回收 + +### 1. 引用计数 + +给对象添加一个引用计数器,当对象增加一个引用时计数器加 1,引用失效时计数器减 1。引用计数为 0 的对象可被回收。 + +两个对象出现循环引用的情况下,此时引用计数器永远不为 0,导致无法对它们进行回收。 + +```java +objA.instance = objB; +objB.instance = objA; +``` + +### 2. 可达性 + +通过 GC Roots 作为起始点进行搜索,能够到达到的对象都是都是可用的,不可达的对象可被回收。 + +GC Roots 一般包含以下内容: + +1. 虚拟机栈中引用的对象 +2. 方法区中类静态属性引用的对象 +3. 方法区中的常量引用的对象 +4. 本地方法栈中引用的对象 + +### 3. 引用类型 + +无论是通过引用计算算法判断对象的引用数量,还是通过可达性分析算法判断对象的引用链是否可达,判定对象是否存活都与“引用”有关。 + +Java 对引用的概念进行了扩充,引入四种强度不同的引用类型。 + +**(一)强引用** + +只要强引用存在,垃圾回收器永远不会回收调掉被引用的对象。 + +使用 new 一个新对象的方式来创建强引用。 + +```java +Object obj = new Object(); +``` + +**(二)软引用** + +用来描述一些还有用但是并非必需的对象。 + +在系统将要发生内存溢出异常之前,将会对这些对象列进回收范围之中进行第二次回收。如果这次回收还没有足够的内存,才会抛出溢出异常。 + +软引用主要用来实现类似缓存的功能,在内存足够的情况下直接通过软引用取值,无需从繁忙的真实来源获取数据,提升速度;当内存不足时,自动删除这部分缓存数据,从真正的来源获取这些数据。 + +使用 SoftReference 类来实现软引用。 + +```java +Object obj = new Object(); +SoftReference sf = new SoftReference(obj); +``` + +**(三)弱引用** + +只能生存到下一次垃圾收集发生之前,当垃圾收集器工作时,无论当前内存是否足够,都会被回收。 + +使用 WeakReference 类来实现弱引用。 + +```java +Object obj = new Object(); +WeakReference wf = new WeakReference(obj); +``` + +**(四)虚引用** + +又称为幽灵引用或者幻影引用。一个对象是否有虚引用的存在,完全不会对其生存时间构成影响,也无法通过虚引用取得一个对象实例。 + +为一个对象设置虚引用关联的唯一目的就是能在这个对象被收集器回收时收到一个系统通知。 + +使用 PhantomReference 来实现虚引用。 + +```java +Object obj = new Object(); +PhantomReference pf = new PhantomReference(obj); +``` + +### 4. 方法区的回收 + +因为方法区主要存放永久代对象,而永久代对象的回收率比新生代差很多,因此在方法区上进行回收性价比不高。 + +主要是对常量池的回收和对类的卸载。 + +类的卸载条件很多,需要满足以下三个条件,并且满足了也不一定会被卸载: + +1. 该类所有的实例都已经被回收,也就是 Java 堆中不存在该类的任何实例。 +2. 加载该类的 ClassLoader 已经被回收。 +3. 该类对应的 java.lang.Class 对象没有在任何地方被引用,也就无法在任何地方通过反射访问该类方法。 + +可以通过 -Xnoclassgc 参数来控制是否对类进行卸载。 + +在大量使用反射、动态代理、CGLib 等 ByteCode 框架、动态生成 JSP 以及 OSGo 这类频繁自定义 ClassLoader 的场景都需要虚拟机具备类卸载功能,以保证不会出现内存溢出。 + +### 5. finalize() + +finalize() 类似 C++ 的析构函数,用来做关闭外部资源等工作。但是 try-finally 等方式可以做的更好,并且该方法运行代价高昂,不确定性大,无法保证各个对象的调用顺序,因此最好不要使用。 + +当一个对象可被回收时,如果需要执行该对象的 finalize() 方法,那么就有可能通过在该方法中让对象重新被引用,从而实现自救。 + +## 垃圾收集算法 + +### 1. 标记 - 清除 + +

    + +将需要回收的对象进行标记,然后清除。 + +不足: + +1. 标记和清除过程效率都不高 +2. 会产生大量碎片,内存碎片过多可能导致无法给大对象分配内存 + +之后的算法都是基于该算法进行改进。 + +### 2. 复制 + +

    + +将内存划分为大小相等的两块,每次只使用其中一块,当这一块内存用完了就将还存活的对象复制到另一块上面,然后再把使用过的内存空间进行一次清理。 + +主要不足是只使用了内存的一半。 + +现在的商业虚拟机都采用这种收集算法来回收新生代,但是并不是将内存划分为大小相等的两块,而是分为一块较大的 Eden 空间和两块较小的 Survior 空间,每次使用 Eden 空间和其中一块 Survivor。在回收时,将 Eden 和 Survivor 中还存活着的对象一次性复制到另一块 Survivor 空间上,最后清理 Eden 和 使用过的那一块 Survivor。HotSpot 虚拟机的 Eden 和 Survivor 的大小比例默认为 8:1,保证了内存的利用率达到 90 %。如果每次回收有多于 10% 的对象存活,那么一块 Survivor 空间就不够用了,此时需要依赖于老年代进行分配担保,也就是借用老年代的空间。 + +### 3. 标记 - 整理 + +

    + +让所有存活的对象都向一端移动,然后直接清理掉端边界以外的内存。 + +### 4. 分代收集 + +现在的商业虚拟机采用分代收集算法,它根据对象存活周期将内存划分为几块,不同块采用适当的收集算法。 + +一般将 Java 堆分为新生代和老年代。 + +1. 新生代使用:复制算法 +2. 老年代使用:标记 - 清理 或者 标记 - 整理 算法 + +## 垃圾收集器 + +

    + +以上是 HotSpot 虚拟机中的 7 个垃圾收集器,连线表示垃圾收集器可以配合使用。 + +### 1. Serial 收集器 + +

    + +它是单线程的收集器,不仅意味着只会使用一个线程进行垃圾收集工作,更重要的是它在进行垃圾收集时,必须暂停所有其他工作线程,往往造成过长的等待时间。 + +它的优点是简单高效,对于单个 CPU 环境来说,由于没有线程交互的开销,因此拥有最高的单线程收集效率。 + +在 Client 应用场景中,分配给虚拟机管理的内存一般来说不会很大,该收集器收集几十兆甚至一两百兆的新生代停顿时间可以控制在一百多毫秒以内,只要不是太频繁,这点停顿是可以接受的。 + +### 2. ParNew 收集器 + +

    + +它是 Serial 收集器的多线程版本。 + +是 Server 模式下的虚拟机首选新生代收集器,除了性能原因外,主要是因为除了 Serial 收集器,只有它能与 CMS 收集器配合工作。 + +默认开始的线程数量与 CPU 数量相同,可以使用 -XX:ParallelGCThreads 参数来设置线程数。 + +### 3. Parallel Scavenge 收集器 + +是并行的多线程收集器。 + +其它收集器关注点是尽可能缩短垃圾收集时用户线程的停顿时间,而它的目标是达到一个可控制的吞吐量,它被称为“吞吐量优先”收集器。这里的吞吐量指 CPU 用于运行用户代码的时间占总时间的比值。 + +停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户体验。而高吞吐量则可以高效率地利用 CPU 时间,尽快完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。 + +提供了两个参数用于精确控制吞吐量,分别是控制最大垃圾收集停顿时间 -XX:MaxGCPauseMillis 参数以及直接设置吞吐量大小的 -XX:GCTimeRatio 参数(值为大于 0 且小于 100 的整数)。缩短停顿时间是以牺牲吞吐量和新生代空间来换取的:新生代空间变小,垃圾回收变得频繁,导致吞吐量下降。 + +还提供了一个参数 -XX:+UseAdaptiveSizePolicy,这是一个开关参数,打开参数后,就不需要手工指定新生代的大小(-Xmn)、Eden 和 Survivor 区的比例(-XX:SurvivorRatio)、晋升老年代对象年龄(-XX:PretenureSizeThreshold)等细节参数了,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或者最大的吞吐量,这种方式称为 GC 自适应的调节策略(GC Ergonomics)。自适应调节策略也是它与 ParNew 收集器的一个重要区别。 + +### 4. Serial Old 收集器 + +

    + +Serial Old 是 Serial 收集器的老年代版本,也是给 Client 模式下的虚拟机使用。如果用在 Server 模式下,它有两大用途: + +1. 在 JDK 1.5 以及之前版本(Parallel Old 诞生以前)中与 Parallel Scavenge 收集器搭配使用。 +2. 作为 CMS 收集器的后备预案,在并发收集发生 Concurrent Mode Failure 时使用。 + +### 5. Parallel Old 收集器 + +

    + +是 Parallel Scavenge 收集器的老年代版本。 + +在注重吞吐量以及 CPU 资源敏感的场合,都可以优先考虑 Parallel Scavenge 加 Parallel Old 收集器。 + +### 6. CMS 收集器 + +

    + +CMS(Concurrent Mark Sweep),从 Mark Sweep 可以知道它是基于标记 - 清除算法实现的。 + +特点:并发收集、低停顿。 + +分为以下四个流程: + +1. 初始标记:仅仅只是标记一下 GC Roots 能直接关联到的对象,速度很快,需要停顿。 +2. 并发标记:进行 GC Roots Tracing 的过程,它在整个回收过程中耗时最长,不需要停顿。 +3. 重新标记:为了修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,需要停顿。 +4. 并发清除:不需要停顿。 + +在整个过程中耗时最长的并发标记和并发清除过程中,收集器线程都可以与用户线程一起工作,不需要进行停顿。 + +具有以下缺点: + +1. 对 CPU 资源敏感。CMS 默认启动的回收线程数是 (CPU 数量 + 3) / 4,当 CPU 不足 4 个时,CMS 对用户程序的影响就可能变得很大,如果本来 CPU 负载就比较大,还要分出一半的运算能力去执行收集器线程,就可能导致用户程序的执行速度忽然降低了 50%,其实也让人无法接受。并且低停顿时间是以牺牲吞吐量为代价的,导致 CPU 利用率变低。 + +2. 无法处理浮动垃圾。由于并发清理阶段用户线程还在运行着,伴随程序运行自然就还会有新的垃圾不断产生。这一部分垃圾出现在标记过程之后,CMS 无法在当次收集中处理掉它们,只好留到下一次 GC 时再清理掉,这一部分垃圾就被称为“浮动垃圾”。也是由于在垃圾收集阶段用户线程还需要运行,那也就还需要预留有足够的内存空间给用户线程使用,因此它不能像其他收集器那样等到老年代几乎完全被填满了再进行收集,需要预留一部分空间提供并发收集时的程序运作使用。可以使用 -XX:CMSInitiatingOccupancyFraction 的值来改变触发收集器工作的内存占用百分比,JDK 1.5 默认设置下该值为 68,也就是当老年代使用了 68% 的空间之后会触发收集器工作。如果该值设置的太高,导致浮动垃圾无法保存,那么就会出现 Concurrent Mode Failure,此时虚拟机将启动后备预案:临时启用 Serial Old 收集器来重新进行老年代的垃圾收集。 + +3. 标记 - 清除算法导致的空间碎片,给大对象分配带来很大麻烦,往往出现老年代空间剩余,但无法找到足够大连续空间来分配当前对象,不得不提前触发一次 Full GC。 + +### 7. G1 收集器 + +

    + +G1(Garbage-First)收集器是当今收集器技术发展最前沿的成果之一,它是一款面向服务端应用的垃圾收集器,HotSpot 开发团队赋予它的使命是(在比较长期的)未来可以替换掉 JDK 1.5 中发布的 CMS 收集器。 + +具备如下特点: + +- 并行与并发:能充分利用多 CPU 环境下的硬件优势,使用多个 CPU 来缩短停顿时间。 +- 分代收集:分代概念依然得以保留,虽然它不需要其它收集器配合就能独立管理整个 GC 堆,但它能够采用不同方式去处理新创建的对象和已存活一段时间、熬过多次 GC 的旧对象来获取更好的收集效果。 +- 空间整合:整体来看是基于“标记 - 整理”算法实现的收集器,从局部(两个 Region 之间)上来看是基于“复制”算法实现的,这意味着运行期间不会产生内存空间碎片。 +- 可预测的停顿:这是它相对 CMS 的一大优势,降低停顿时间是 G1 和 CMS 共同的关注点,但 G1 除了降低停顿外,还能建立可预测的停顿时间模型,能让使用者明确指定在一个长度为 M 毫秒的时间片段内,消耗在 GC 上的时间不得超过 N 毫秒,这几乎已经是实时 Java(RTSJ)的垃圾收集器的特征了。 + +在 G1 之前的其他收集器进行收集的范围都是整个新生代或者老生代,而 G1 不再是这样,Java 堆的内存布局与其他收集器有很大区别,将整个 Java 堆划分为多个大小相等的独立区域(Region)。虽然还保留新生代和老年代的概念,但新生代和老年代不再是物理隔离的了,而都是一部分 Region(不需要连续)的集合。 + +之所以能建立可预测的停顿时间模型,是因为它可以有计划地避免在整个 Java 堆中进行全区域的垃圾收集。它跟踪各个 Region 里面的垃圾堆积的价值大小(回收所获得的空间大小以及回收所需时间的经验值),在后台维护一个优先列表,每次根据允许的收集时间,优先回收价值最大的 Region(这也就是 Garbage-First 名称的来由)。这种使用 Region 划分内存空间以及有优先级的区域回收方式,保证了它在有限的时间内可以获取尽可能高的收集效率。 + +Region 不可能是孤立的,一个对象分配在某个 Region 中,可以与整个 Java 堆任意的对象发生引用关系。在做可达性分析确定对象是否存活的时候,需要扫描整个 Java 堆才能保证准确性,这显然是对 GC 效率的极大伤害。为了避免全堆扫描的发生,每个 Region 都维护了一个与之对应的 Remembered Set。虚拟机发现程序在对 Reference 类型的数据进行写操作时,会产生一个 Write Barrier 暂时中断写操作,检查 Reference 引用的对象是否处于不同的 Region 之中,如果是,便通过 CardTable 把相关引用信息记录到被引用对象所属的 Region 的 Remembered Set 之中。当进行内存回收时,在 GC 根节点的枚举范围中加入 Remembered Set 即可保证不对全堆扫描也不会有遗漏。 + +如果不计算维护 Remembered Set 的操作,G1 收集器的运作大致可划分为以下几个步骤: + +1. 初始标记 +2. 并发标记 +3. 最终标记:为了修正在并发标记期间因用户程序继续运作而导致标记产生变动的那一部分标记记录,虚拟机将这段时间对象变化记录在线程的 Remembered Set Logs 里面,最终标记阶段需要把 Remembered Set Logs 的数据合并到 Remembered Set 中。这阶段需要停顿线程,但是可并行执行。 +4. 筛选回收:首先对各个 Region 中的回收价值和成本进行排序,根据用户所期望的 GC 停顿是时间来制定回收计划。此阶段其实也可以做到与用户程序一起并发执行,但是因为只回收一部分 Region,时间是用户可控制的,而且停顿用户线程将大幅度提高收集效率。 + +### 8. 七种垃圾收集器的比较 + +| 收集器 | 串行、并行 or 并发 | 新生代 / 老年代 | 算法 | 目标 | 适用场景 | +| :---: | :---: | :---: | :---: | :---: | :---: | +| **Serial** | 串行 | 新生代 | 复制算法 | 响应速度优先 | 单 CPU 环境下的 Client 模式 | +| **Serial Old** | 串行 | 老年代 | 标记-整理 | 响应速度优先 | 单 CPU 环境下的 Client 模式、CMS 的后备预案 | +| **ParNew** | 并行 | 新生代 | 复制算法 | 响应速度优先 | 多 CPU 环境时在 Server 模式下与 CMS 配合 | +| **Parallel Scavenge** | 并行 | 新生代 | 复制算法 | 吞吐量优先 | 在后台运算而不需要太多交互的任务 | +| **Parallel Old** | 并行 | 老年代 | 标记-整理 | 吞吐量优先 | 在后台运算而不需要太多交互的任务 | +| **CMS** | 并发 | 老年代 | 标记-清除 | 响应速度优先 | 集中在互联网站或 B/S 系统服务端上的 Java 应用 | +| **G1** | 并发 | both | 标记-整理 + 复制算法 | 响应速度优先 | 面向服务端应用,将来替换 CMS | + +## 内存分配与回收策略 + +对象的内存分配,也就是在堆上分配。主要分配在新生代的 Eden 区上,少数情况下也可能直接分配在老年代中。 + +### 1. 优先在 Eden 分配 + +大多数情况下,对象在新生代 Eden 区分配,当 Eden 区空间不够时,发起 Minor GC。 + +关于 Minor GC 和 Full GC: + +- Minor GC:发生在新生代上,因为新生代对象存活时间很短,因此 Minor GC 会频繁执行,执行的速度一般也会比较快。 +- Full GC:发生在老年代上,老年代对象和新生代的相反,其存活时间长,因此 Full GC 很少执行,而且执行速度会比 Minor GC 慢很多。 + +### 2. 大对象直接进入老年代 + +大对象是指需要连续内存空间的对象,最典型的大对象是那种很长的字符串以及数组。经常出现大对象会提前触发垃圾收集以获取足够的连续空间分配给大对象。 + +提供 -XX:PretenureSizeThreshold 参数,大于此值的对象直接在老年代分配,避免在 Eden 区和 Survivor 区之间的大量内存复制。 + +### 3. 长期存活的对象进入老年代 + +JVM 为对象定义年龄计数器,经过 Minor GC 依然存活,并且能被 Survivor 区容纳的,移被移到 Survivor 区,年龄就增加 1 岁,增加到一定年龄则移动到老年代中(默认 15 岁,通过 -XX:MaxTenuringThreshold 设置)。 + +### 4. 动态对象年龄判定 + +JVM 并不是永远地要求对象的年龄必须达到 MaxTenuringThreshold 才能晋升老年代,如果在 Survivor 区中相同年龄所有对象大小的总和大于 Survivor 空间的一半,则年龄大于或等于该年龄的对象可以直接进入老年代,无序等待 MaxTenuringThreshold 中要求的年龄。 + +### 5. 空间分配担保 + +在发生 Minor GC 之前,JVM 先检查老年代最大可用的连续空间是否大于新生代所有对象总空间,如果条件成立的话,那么 Minor GC 可以确认是安全的;如果不成立的话 JVM 会查看 HandlePromotionFailure 设置值是否允许担保失败,如果允许那么就会继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小,如果大于,将尝试着进行一次 Minor GC,尽管这次 Minor GC 是有风险的;如果小于,或者 HandlePromotionFailure 设置不允许冒险,那这时也要改为进行一次 Full GC。 + +## Full GC 的触发条件 + +对于 Minor GC,其触发条件非常简单,当 Eden 区空间满时,就将触发一次 Minor GC。而 Full GC 则相对复杂,有以下条件: + +### 1. 调用 System.gc() + +此方法的调用是建议 JVM 进行 Full GC,虽然只是建议而非一定,但很多情况下它会触发 Full GC,从而增加 Full GC 的频率,也即增加了间歇性停顿的次数。因此强烈建议能不使用此方法就不要使用,让虚拟机自己去管理它的内存。可通过 -XX:+ DisableExplicitGC 来禁止 RMI 调用 System.gc()。 + +### 2. 老年代空间不足 + +老年代空间不足的常见场景为前文所讲的大对象直接进入老年代、长期存活的对象进入老年代等,当执行 Full GC 后空间仍然不足,则抛出 Java.lang.OutOfMemoryError。为避免以上原因引起的 Full GC,调优时应尽量做到让对象在 Minor GC 阶段被回收、让对象在新生代多存活一段时间以及不要创建过大的对象及数组。 + +### 3. 空间分配担保失败 + +使用复制算法的 Minor GC 需要老年代的内存空间作担保,如果出现了 HandlePromotionFailure 担保失败,则会触发 Full GC。 + +### 4. JDK 1.7 及以前的永久代空间不足 + +在 JDK 1.7 及以前,HotSpot 虚拟机中的方法区是用永久代实现的,永久代中存放的为一些 class 的信息、常量、静态变量等数据,当系统中要加载的类、反射的类和调用的方法较多时,永久代可能会被占满,在未配置为采用 CMS GC 的情况下也会执行 Full GC。如果经过 Full GC 仍然回收不了,那么 JVM 会抛出 java.lang.OutOfMemoryError,为避免以上原因引起的 Full GC,可采用的方法为增大永久代空间或转为使用 CMS GC。 + +### 5. Concurrent Mode Failure + +执行 CMS GC 的过程中同时有对象要放入老年代,而此时老年代空间不足(有时候“空间不足”是 CMS GC 时当前的浮动垃圾过多导致暂时性的空间不足触发 Full GC),便会报 Concurrent Mode Failure 错误,并触发 Full GC。 + +# 三、类加载机制 + +类是在运行期间动态加载的。 + +## 类的生命周期 + +

    + +包括以下 7 个阶段: + +- **加载(Loading)** +- **验证(Verification)** +- **准备(Preparation)** +- **解析(Resolution)** +- **初始化(Initialization)** +- 使用(Using) +- 卸载(Unloading) + +其中解析过程在某些情况下可以在初始化阶段之后再开始,这是为了支持 Java 的动态绑定。 + +## 类初始化时机 + +虚拟机规范中并没有强制约束何时进行加载,但是规范严格规定了有且只有下列五种情况必须对类进行初始化(加载、验证、准备都会随着发生): + +1. 遇到 new、getstatic、putstatic、invokestatic 这四条字节码指令时,如果类没有进行过初始化,则必须先触发其初始化。最常见的生成这 4 条指令的场景是:使用 new 关键字实例化对象的时候;读取或设置一个类的静态字段(被 final 修饰、已在编译器把结果放入常量池的静态字段除外)的时候;以及调用一个类的静态方法的时候。 + +2. 使用 java.lang.reflect 包的方法对类进行反射调用的时候,如果类没有进行初始化,则需要先触发其初始化。 + +3. 当初始化一个类的时候,如果发现其父类还没有进行过初始化,则需要先触发其父类的初始化。 + +4. 当虚拟机启动时,用户需要指定一个要执行的主类(包含 main() 方法的那个类),虚拟机会先初始化这个主类; + +5. 当使用 JDK.7 的动态语言支持时,如果一个 java.lang.invoke.MethodHandle 实例最后的解析结果为 REF_getStatic, REF_putStatic, REF_invokeStatic 的方法句柄,并且这个方法句柄所对应的类没有进行过初始化,则需要先触发其初始化; + +以上 5 种场景中的行为称为对一个类进行主动引用。除此之外,所有引用类的方式都不会触发初始化,称为被动引用。被动引用的常见例子包括: + +- 通过子类引用父类的静态字段,不会导致子类初始化。 + +```java +System.out.println(SubClass.value); // value 字段在 SuperClass 中定义 +``` + +- 通过数组定义来引用类,不会触发此类的初始化。该过程会对数组类进行初始化,数组类是一个由虚拟机自动生成的、直接继承自 Object 的子类,其中包含了数组的属性和方法。 + +```java +SuperClass[] sca = new SuperClass[10]; +``` + +- 常量在编译阶段会存入调用类的常量池中,本质上并没有直接引用到定义常量的类,因此不会触发定义常量的类的初始化。 + +```java +System.out.println(ConstClass.HELLOWORLD); +``` + +## 类加载过程 + +包含了加载、验证、准备、解析和初始化这 5 个阶段。 + +### 1. 加载 + +加载是类加载的一个阶段,注意不要混淆。 + +加载过程完成以下三件事: + +1. 通过一个类的全限定名来获取定义此类的二进制字节流。 +2. 将这个字节流所代表的静态存储结构转化为方法区的运行时存储结构。 +3. 在内存中生成一个代表这个类的 Class 对象,作为方法区这个类的各种数据的访问入口。 + +其中二进制字节流可以从以下方式中获取: + +- 从 ZIP 包读取,这很常见,最终成为日后 JAR、EAR、WAR 格式的基础。 +- 从网络中获取,这种场景最典型的应用是 Applet。 +- 运行时计算生成,这种场景使用得最多得就是动态代理技术,在 java.lang.reflect.Proxy 中,就是用了 ProxyGenerator.generateProxyClass 的代理类的二进制字节流。 +- 由其他文件生成,典型场景是 JSP 应用,即由 JSP 文件生成对应的 Class 类。 +- 从数据库读取,这种场景相对少见,例如有些中间件服务器(如 SAP Netweaver)可以选择把程序安装到数据库中来完成程序代码在集群间的分发。 +... + +### 2. 验证 + +确保 Class 文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。 + +主要有以下 4 个阶段: + +**(一)文件格式验证** + +验证字节流是否符合 Class 文件格式的规范,并且能被当前版本的虚拟机处理。 + +**(二)元数据验证** + +对字节码描述的信息进行语义分析,以保证其描述的信息符合 Java 语言规范的要求。 + +**(三)字节码验证** + +通过数据流和控制流分析,确保程序语义是合法、符合逻辑的。 + +**(四)符号引用验证** + +发生在虚拟机将符号引用转换为直接引用的时候,对类自身以外(常量池中的各种符号引用)的信息进行匹配性校验。 + +### 3. 准备 + +类变量是被 static 修饰的变量,准备阶段为类变量分配内存并设置初始值,使用的是方法区的内存。 + +实例变量不会在这阶段分配内存,它将会在对象实例化时随着对象一起分配在 Java 堆中。 + +初始值一般为 0 值,例如下面的类变量 value 被初始化为 0 而不是 123。 + +```java +public static int value = 123; +``` + +如果类变量是常量,那么会按照表达式来进行初始化,而不是赋值为 0。 + +```java +public static final int value = 123; +``` + +### 4. 解析 + +将常量池的符号引用替换为直接引用的过程。 + +### 5. 初始化 + +初始化阶段才真正开始执行类中的定义的 Java 程序代码。初始化阶段即虚拟机执行类构造器 <clinit>() 方法的过程。 + +在准备阶段,类变量已经赋过一次系统要求的初始值,而在初始化阶段,根据程序员通过程序制定的主观计划去初始化类变量和其它资源。 + +<clinit>() 方法具有以下特点: + +- 是由编译器自动收集类中所有类变量的赋值动作和静态语句块(static{} 块)中的语句合并产生的,编译器收集的顺序由语句在源文件中出现的顺序决定。特别注意的是,静态语句块只能访问到定义在它之前的类变量,定义在它之后的类变量只能赋值,不能访问。例如以下代码: + +```java +public class Test { + static { + i = 0; // 给变量赋值可以正常编译通过 + System.out.print(i); // 这句编译器会提示“非法向前引用” + } + static int i = 1; +} +``` + +- 与类的构造函数(或者说实例构造器 <init>())不同,不需要显式的调用父类的构造器。虚拟机会自动保证在子类的 <clinit>() 方法运行之前,父类的 <clinit>() 方法已经执行结束。因此虚拟机中第一个执行 <clinit>() 方法的类肯定为 java.lang.Object。 + +- 由于父类的 <clinit>() 方法先执行,也就意味着父类中定义的静态语句块要优于子类的变量赋值操作。例如以下代码: + +```java +static class Parent { + public static int A = 1; + static { + A = 2; + } +} + +static class Sub extends Parent { + public static int B = A; +} + +public static void main(String[] args) { + System.out.println(Sub.B); // 输出结果是父类中的静态变量 A 的值 ,也就是 2。 +} +``` + +- <clinit>() 方法对于类或接口不是必须的,如果一个类中不包含静态语句块,也没有对类变量的赋值操作,编译器可以不为该类生成 <clinit>() 方法。 + +- 接口中不可以使用静态语句块,但仍然有类变量初始化的赋值操作,因此接口与类一样都会生成 <clinit>() 方法。但接口与类不同的是,执行接口的 <clinit>() 方法不需要先执行父接口的 <clinit>() 方法。只有当父接口中定义的变量使用时,父接口才会初始化。另外,接口的实现类在初始化时也一样不会执行接口的 <clinit>() 方法。 + +- 虚拟机会保证一个类的 <clinit>() 方法在多线程环境下被正确的加锁和同步,如果多个线程同时初始化一个类,只会有一个线程执行这个类的 <clinit>() 方法,其它线程都会阻塞等待,直到活动线程执行 <clinit>() 方法完毕。如果在一个类的 <clinit>() 方法中有耗时的操作,就可能造成多个进程阻塞,在实际过程中此种阻塞很隐蔽。 + +## 类加载器 + +虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流 ( 即字节码 )”这个动作放到 Java 虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。 + +### 1. 类与类加载器 + +对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在 Java 虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。通俗而言:比较两个类是否“相等”(这里所指的“相等”,包括类的 Class 对象的 equals() 方法、isAssignableFrom() 方法、isInstance() 方法的返回结果,也包括使用 instanceof() 关键字做对象所属关系判定等情况),只有在这两个类是由同一个类加载器加载的前提下才有意义,否则,即使这两个类来源于同一个 Class 文件,被同一个虚拟机加载,只要加载它们的类加载器不同,那这两个类就必定不相等。 + +### 2. 类加载器分类 + +从 Java 虚拟机的角度来讲,只存在以下两种不同的类加载器: + +- 启动类加载器(Bootstrap ClassLoader),这个类加载器用 C++ 实现,是虚拟机自身的一部分; + +- 所有其他类的加载器,这些类由 Java 实现,独立于虚拟机外部,并且全都继承自抽象类 java.lang.ClassLoader。 + +从 Java 开发人员的角度看,类加载器可以划分得更细致一些: + +- 启动类加载器(Bootstrap ClassLoader) 此类加载器负责将存放在 <JAVA_HOME>\lib 目录中的,或者被 -Xbootclasspath 参数所指定的路径中的,并且是虚拟机识别的(仅按照文件名识别,如 rt.jar,名字不符合的类库即使放在 lib 目录中也不会被加载)类库加载到虚拟机内存中。 启动类加载器无法被 Java 程序直接引用,用户在编写自定义类加载器时,如果需要把加载请求委派给启动类加载器,直接使用 null 代替即可。 + +- 扩展类加载器(Extension ClassLoader) 这个类加载器是由 ExtClassLoader(sun.misc.Launcher$ExtClassLoader)实现的。它负责将 <JAVA_HOME>/lib/ext 或者被 java.ext.dir 系统变量所指定路径中的所有类库加载到内存中,开发者可以直接使用扩展类加载器。 + +- 应用程序类加载器(Application ClassLoader) 这个类加载器是由 AppClassLoader(sun.misc.Launcher$AppClassLoader)实现的。由于这个类加载器是 ClassLoader 中的 getSystemClassLoader() 方法的返回值,因此一般称为系统类加载器。它负责加载用户类路径(ClassPath)上所指定的类库,开发者可以直接使用这个类加载器,如果应用程序中没有自定义过自己的类加载器,一般情况下这个就是程序中默认的类加载器。 + +### 3. 双亲委派模型 + +应用程序都是由三种类加载器相互配合进行加载的,如果有必要,还可以加入自己定义的类加载器。下图展示的类加载器之间的层次关系,称为类加载器的双亲委派模型(Parents Delegation Model)。该模型要求除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器,这里类加载器之间的父子关系一般通过组合(Composition)关系来实现,而不是通过继承(Inheritance)的关系实现。 + +

    + +**(一)工作过程** + +如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载,而是把这个请求委派给父类加载器,每一个层次的加载器都是如此,依次递归。因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成此加载请求(它搜索范围中没有找到所需类)时,子加载器才会尝试自己加载。 + +**(二)好处** + +使用双亲委派模型来组织类加载器之间的关系,使得 Java 类随着它的类加载器一起具备了一种带有优先级的层次关系。例如类 java.lang.Object,它存放在 rt.jar 中,无论哪个类加载器要加载这个类,最终都是委派给处于模型最顶端的启动类加载器进行加载,因此 Object 类在程序的各种类加载器环境中都是同一个类。相反,如果没有双亲委派模型,由各个类加载器自行加载的话,如果用户编写了一个称为java.lang.Object 的类,并放在程序的 ClassPath 中,那系统中将会出现多个不同的 Object 类,程序将变得一片混乱。如果开发者尝试编写一个与 rt.jar 类库中已有类重名的 Java 类,将会发现可以正常编译,但是永远无法被加载运行。 + +**(三)实现** + +```java +protected synchronized Class loadClass(String name, boolean resolve) throws ClassNotFoundException{ + //check the class has been loaded or not + Class c = findLoadedClass(name); + if(c == null) { + try{ + if(parent != null) { + c = parent.loadClass(name, false); + } else{ + c = findBootstrapClassOrNull(name); + } + } catch(ClassNotFoundException e) { + //if throws the exception , the father can not complete the load + } + if(c == null) { + c = findClass(name); + } + } + if(resolve) { + resolveClass(c); + } + return c; +} +``` + +# 四、JVM 参数 + +## GC 优化配置 + +| 配置 | 描述 | +| --- | --- | +| -Xms | 初始化堆内存大小 | +| -Xmx | 堆内存最大值 | +| -Xmn | 新生代大小 | +| -XX:PermSize | 初始化永久代大小 | +| -XX:MaxPermSize | 永久代最大容量 | + +## GC 类型设置 + +| 配置 | 描述 | +| --- | --- | +| -XX:+UseSerialGC | 串行垃圾回收器 | +| -XX:+UseParallelGC | 并行垃圾回收器 | +| -XX:+UseConcMarkSweepGC | 并发标记扫描垃圾回收器 | +| -XX:ParallelCMSThreads= | 并发标记扫描垃圾回收器 = 为使用的线程数量 | +| -XX:+UseG1GC | G1 垃圾回收器 | + +```java +java -Xmx12m -Xms3m -Xmn1m -XX:PermSize=20m -XX:MaxPermSize=20m -XX:+UseSerialGC -jar java-application.jar +``` + +# 参考资料 + +- 深入理解 Java 虚拟机 +- [Jvm memory](https://www.slideshare.net/benewu/jvm-memory) +- [Memory Architecture Of JVM(Runtime Data Areas)](https://hackthejava.wordpress.com/2015/01/09/memory-architecture-by-jvmruntime-data-areas/) diff --git a/notes/Leetcode 题解.md b/notes/Leetcode 题解.md new file mode 100644 index 00000000..7e5916ec --- /dev/null +++ b/notes/Leetcode 题解.md @@ -0,0 +1,5291 @@ + +* [算法思想](#算法思想) + * [二分查找](#二分查找) + * [贪心思想](#贪心思想) + * [双指针](#双指针) + * [排序](#排序) + * [快速选择](#快速选择) + * [堆排序](#堆排序) + * [桶排序](#桶排序) + * [搜索](#搜索) + * [BFS](#bfs) + * [DFS](#dfs) + * [Backtracking](#backtracking) + * [分治](#分治) + * [动态规划](#动态规划) + * [分割整数](#分割整数) + * [矩阵路径](#矩阵路径) + * [斐波那契数列](#斐波那契数列) + * [最长递增子序列](#最长递增子序列) + * [最长公共子系列](#最长公共子系列) + * [0-1 背包](#0-1-背包) + * [数组区间](#数组区间) + * [字符串编辑](#字符串编辑) + * [其它问题](#其它问题) + * [数学](#数学) + * [素数](#素数) + * [最大公约数](#最大公约数) + * [进制转换](#进制转换) + * [阶乘](#阶乘) + * [字符串加法减法](#字符串加法减法) + * [相遇问题](#相遇问题) + * [多数投票问题](#多数投票问题) + * [其它](#其它) +* [数据结构相关](#数据结构相关) + * [栈和队列](#栈和队列) + * [哈希表](#哈希表) + * [字符串](#字符串) + * [数组与矩阵](#数组与矩阵) + * [1-n 分布](#1-n-分布) + * [有序矩阵](#有序矩阵) + * [链表](#链表) + * [树](#树) + * [递归](#递归) + * [层次遍历](#层次遍历) + * [前中后序遍历](#前中后序遍历) + * [BST](#bst) + * [Trie](#trie) + * [图](#图) + * [位运算](#位运算) +* [参考资料](#参考资料) + + + +# 算法思想 + +## 二分查找 + +```java +public int search(int key, int[] array) { + int l = 0, h = array.length - 1; + while (l <= h) { + int mid = l + (h - l) / 2; + if (key == array[mid]) return mid; + if (key < array[mid]) h = mid - 1; + else l = mid + 1; + } + return -1; +} +``` + +实现时需要注意以下细节: + +1. 在计算 mid 时不能使用 mid = (l + h) / 2 这种方式,因为 l + h 可能会导致加法溢出,应该使用 mid = l + (h - l) / 2。 + +2. 对 h 的赋值和循环条件有关,当循环条件为 l <= h 时,h = mid - 1;当循环条件为 l < h 时,h = mid。解释如下:在循环条件为 l <= h 时,如果 h = mid,会出现循环无法退出的情况,例如 l = 1,h = 1,此时 mid 也等于 1,如果此时继续执行 h = mid,那么就会无限循环;在循环条件为 l < h,如果 h = mid - 1,会错误跳过查找的数,例如对于数组 [1,2,3],要查找 1,最开始 l = 0,h = 2,mid = 1,判断 key < arr[mid] 执行 h = mid - 1 = 0,此时循环退出,直接把查找的数跳过了。 + +3. l 的赋值一般都为 l = mid + 1。 + +**求开方** + +[Leetcode : 69. Sqrt(x) (Easy)](https://leetcode.com/problems/sqrtx/description/) + +```html +Input: 4 +Output: 2 + +Input: 8 +Output: 2 +Explanation: The square root of 8 is 2.82842..., and since we want to return an integer, the decimal part will be truncated. +``` + +一个数 x 的开方 sqrt 一定在 0 \~ x 之间,并且满足 sqrt == x / sqrt 。可以利用二分查找在 0 \~ x 之间查找 sqrt。 + +```java +public int mySqrt(int x) { + if(x <= 1) return x; + int l = 1, h = x; + while(l <= h){ + int mid = l + (h - l) / 2; + int sqrt = x / mid; + if(sqrt == mid) return mid; + else if(sqrt < mid) h = mid - 1; + else l = mid + 1; + } + return h; +} +``` + +**摆硬币** + +[Leetcode : 441. Arranging Coins (Easy)](https://leetcode.com/problems/arranging-coins/description/) + +```html +n = 8 +The coins can form the following rows: +¤ +¤ ¤ +¤ ¤ ¤ +¤ ¤ +Because the 4th row is incomplete, we return 3. +``` + +题目描述:第 i 行摆 i 个,统计能够摆的行数。 + +返回 h 而不是 l,因为摆的硬币最后一行不能算进去。 + +```java +public int arrangeCoins(int n) { + int l = 0, h = n; + while(l <= h){ + int m = l + (h - l) / 2; + long x = m * (m + 1L) / 2; + if(x == n) return m; + else if(x < n) l = m + 1; + else h = m - 1; + } + return h; +} +``` + +可以不用二分查找,更直观的解法如下: + +```java +public int arrangeCoins(int n) { + int level = 1; + while (n > 0) { + n -= level; + level++; + } + return n == 0 ? level - 1 : level - 2; +} +``` + +**有序数组的 Single Element** + +[Leetcode : 540. Single Element in a Sorted Array (Medium)](https://leetcode.com/problems/single-element-in-a-sorted-array/description/) + +```html +Input: [1,1,2,3,3,4,4,8,8] +Output: 2 +``` + +题目描述:一个有序数组只有一个数不出现两次,找出这个数。 + +```java +public int singleNonDuplicate(int[] nums) { + int l = 0, h = nums.length - 1; + while(l < h) { + int m = l + (h - l) / 2; + if(m % 2 == 1) m--; // 保证 l/h/m 都在偶数位,使得查找区间大小一直都是奇数 + if(nums[m] == nums[m + 1]) l = m + 2; + else h = m; + } + return nums[l]; +} +``` + +## 贪心思想 + +贪心思想保证每次操作都是局部最优的,并且最后得到的结果是全局最优的。 + +**分配饼干** + +[Leetcode : 455. Assign Cookies (Easy)](https://leetcode.com/problems/assign-cookies/description/) + +```html +Input: [1,2], [1,2,3] +Output: 2 + +Explanation: You have 2 children and 3 cookies. The greed factors of 2 children are 1, 2. +You have 3 cookies and their sizes are big enough to gratify all of the children, +You need to output 2. +``` + +题目描述:每个孩子都有一个满足度,每个饼干都有一个大小,只有饼干的大小大于一个孩子的满足度,该孩子才会获得满足。求解最多可以获得满足的孩子数量。 + +因为最小的孩子最容易得到满足,因此先满足最小孩子。给一个孩子的饼干应当尽量小又能满足该孩子,这样大饼干就能拿来给满足度比较大的孩子。 + +证明:假设在某次选择中,贪心策略选择给第 i 个孩子分配第 m 个饼干,并且第 i 个孩子满足度最小,第 m 个饼干为可以满足第 i 个孩子的最小饼干,利用贪心策略最终可以满足 k 个孩子。假设最优策略在这次选择中给 i 个孩子分配第 n 个饼干,并且这个饼干大于第 m 个饼干。我们发现使用第 m 个饼干去替代第 n 个饼干完全不影响后续的结果,因此不存在比贪心策略更优的策略,即贪心策略就是最优策略。 + +```java +public int findContentChildren(int[] g, int[] s) { + Arrays.sort(g); + Arrays.sort(s); + int i = 0, j = 0; + while(i < g.length && j < s.length){ + if(g[i] <= s[j]) i++; + j++; + } + return i; +} +``` + +**投飞镖刺破气球** + +[Leetcode : 452. Minimum Number of Arrows to Burst Balloons (Medium)](https://leetcode.com/problems/minimum-number-of-arrows-to-burst-balloons/description/) + +``` +Input: +[[10,16], [2,8], [1,6], [7,12]] + +Output: +2 +``` + +题目描述:气球在一个水平数轴上摆放,可以重叠,飞镖垂直射向坐标轴,使得路径上的气球都会刺破。求解最小的投飞镖次数使所有气球都被刺破。 + +从左往右投飞镖,并且在每次投飞镖时满足以下条件: + +1. 左边已经没有气球了; +2. 本次投飞镖能够刺破最多的气球。 + +```java +public int findMinArrowShots(int[][] points) { + if(points.length == 0) return 0; + Arrays.sort(points,(a,b) -> (a[1] - b[1])); + int curPos = points[0][1]; + int ret = 1; + for (int i = 1; i < points.length; i++) { + if(points[i][0] <= curPos) { + continue; + } + curPos = points[i][1]; + ret++; + } + return ret; + } +``` + +**股票的最大收益** + +[Leetcode : 122. Best Time to Buy and Sell Stock II (Easy)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/description/) + +题目描述:一次交易包含买入和卖出,多个交易之间不能交叉进行。 + +对于 [a, b, c, d],如果有 a <= b <= c <= d ,那么最大收益为 d - a。而 d - a = (d - c) + (c - b) + (b - a) ,因此当访问到一个 prices[i] 且 prices[i] - prices[i-1] > 0,那么就把 prices[i] - prices[i-1] 添加加到收益中,从而在局部最优的情况下也保证全局最优。 + +```java +public int maxProfit(int[] prices) { + int profit = 0; + for(int i = 1; i < prices.length; i++){ + if(prices[i] > prices[i-1]) profit += (prices[i] - prices[i-1]); + } + return profit; +} +``` + +**种植花朵** + +[Leetcode : 605. Can Place Flowers (Easy)](https://leetcode.com/problems/can-place-flowers/description/) + +```html +Input: flowerbed = [1,0,0,0,1], n = 1 +Output: True +``` + +题目描述:花朵之间至少需要一个单位的间隔。 + +```java +public boolean canPlaceFlowers(int[] flowerbed, int n) { + int cnt = 0; + for(int i = 0; i < flowerbed.length; i++){ + if(flowerbed[i] == 1) continue; + int pre = i == 0 ? 0 : flowerbed[i - 1]; + int next = i == flowerbed.length - 1 ? 0 : flowerbed[i + 1]; + if(pre == 0 && next == 0) { + cnt++; + flowerbed[i] = 1; + } + } + return cnt >= n; +} +``` + +**修改一个数成为非递减数组** + +[Leetcode : 665. Non-decreasing Array (Easy)](https://leetcode.com/problems/non-decreasing-array/description/) + +```html +Input: [4,2,3] +Output: True +Explanation: You could modify the first 4 to 1 to get a non-decreasing array. +``` + +题目描述:判断一个数组能不能只修改一个数就成为非递减数组。 + +在出现 nums[i] < nums[i - 1] 时,需要考虑的是应该修改数组的哪个数,使得本次修改能使 i 之前的数组成为非递减数组,并且 **不影响后续的操作** 。优先考虑令 nums[i - 1] = nums[i],因为如果修改 nums[i] = nums[i - 1] 的话,那么 nums[i] 这个数会变大,那么就有可能比 nums[i + 1] 大,从而影响了后续操作。还有一个比较特别的情况就是 nums[i] < nums[i - 2],只修改 nums[i - 1] = nums[i] 不能令数组成为非递减,只能通过修改 nums[i] = nums[i - 1] 才行。 + +```java +public boolean checkPossibility(int[] nums) { + int cnt = 0; + for(int i = 1; i < nums.length; i++){ + if(nums[i] < nums[i - 1]){ + cnt++; + if(i - 2 >= 0 && nums[i - 2] > nums[i]) nums[i] = nums[i-1]; + else nums[i - 1] = nums[i]; + } + } + return cnt <= 1; +} +``` + +**判断是否为子串** + +[Leetcode : 392. Is Subsequence (Medium)](https://leetcode.com/problems/is-subsequence/description/) + +```html +s = "abc", t = "ahbgdc" +Return true. +``` + +```java +public boolean isSubsequence(String s, String t) { + for (int i = 0, pos = 0; i < s.length(); i++, pos++) { + pos = t.indexOf(s.charAt(i), pos); + if(pos == -1) return false; + } + return true; +} +``` + +**分隔字符串使同种字符出现在一起** + +[Leetcode : 763. Partition Labels (Medium)](https://leetcode.com/problems/partition-labels/description/) + +```html +Input: S = "ababcbacadefegdehijhklij" +Output: [9,7,8] +Explanation: +The partition is "ababcbaca", "defegde", "hijhklij". +This is a partition so that each letter appears in at most one part. +A partition like "ababcbacadefegde", "hijhklij" is incorrect, because it splits S into less parts. +``` + +```java +public List partitionLabels(String S) { + List ret = new ArrayList<>(); + int[] lastIdxs = new int[26]; + for(int i = 0; i < S.length(); i++) lastIdxs[S.charAt(i) - 'a'] = i; + int startIdx = 0; + while(startIdx < S.length()) { + int endIdx = startIdx; + for(int i = startIdx; i < S.length() && i <= endIdx; i++) { + int lastIdx = lastIdxs[S.charAt(i) - 'a']; + if(lastIdx == i) continue; + if(lastIdx > endIdx) endIdx = lastIdx; + } + ret.add(endIdx - startIdx + 1); + startIdx = endIdx + 1; + } + return ret; +} +``` + +**根据身高和序号重组队列** + +[Leetcode : 406. Queue Reconstruction by Height(Medium)](https://leetcode.com/problems/queue-reconstruction-by-height/description/) + +```html +Input: +[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]] + +Output: +[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] +``` + +题目描述:一个学生用两个分量 (h, k) 描述,h 表示身高,k 表示排在前面的有 k 个学生的身高比他高或者和他一样高。 + +为了在每次插入操作时不影响后续的操作,身高较高的学生应该先做插入操作,否则身高较小的学生原先正确插入第 k 个位置可能会变成第 k+1 个位置。 + +身高降序、k 值升序,然后按排好序的顺序插入队列的第 k 个位置中。 + +```java +public int[][] reconstructQueue(int[][] people) { + if(people == null || people.length == 0 || people[0].length == 0) return new int[0][0]; + + Arrays.sort(people, new Comparator() { + public int compare(int[] a, int[] b) { + if(a[0] == b[0]) return a[1] - b[1]; + return b[0] - a[0]; + } + }); + + int n = people.length; + List tmp = new ArrayList<>(); + for(int i = 0; i < n; i++) { + tmp.add(people[i][1], new int[]{people[i][0], people[i][1]}); + } + + int[][] ret = new int[n][2]; + for(int i = 0; i < n; i++) { + ret[i][0] = tmp.get(i)[0]; + ret[i][1] = tmp.get(i)[1]; + } + return ret; +} +``` + +## 双指针 + +双指针主要用于遍历数组,两个指针指向不同的元素,从而协同完成任务。 + +**从一个已经排序的数组中找出两个数,使它们的和为 0** + +[Leetcode :167. Two Sum II - Input array is sorted (Easy)](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/description/) + +```html +Input: numbers={2, 7, 11, 15}, target=9 +Output: index1=1, index2=2 +``` + +使用双指针,一个指针指向元素较小的值,一个指针指向元素较大的值。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。 + +如果两个指针指向元素的和 sum == target,那么得到要求的结果;如果 sum > target,移动较大的元素,使 sum 变小一些;如果 sum < target,移动较小的元素,使 sum 变大一些。 + +```java +public int[] twoSum(int[] numbers, int target) { + int i = 0, j = numbers.length - 1; + while (i < j) { + int sum = numbers[i] + numbers[j]; + if (sum == target) return new int[]{i + 1, j + 1}; + else if (sum < target) i++; + else j--; + } + return null; +} +``` + +**反转字符串中的元音字符** + +[Leetcode : 345. Reverse Vowels of a String (Easy)](https://leetcode.com/problems/reverse-vowels-of-a-string/description/) + +```html +Given s = "leetcode", return "leotcede". +``` + +使用双指针,指向待反转的两个元音字符,一个指针从头向尾遍历,一个指针从尾到头遍历。 + +```java +private HashSet vowels = new HashSet<>(Arrays.asList('a','e','i','o','u','A','E','I','O','U')); + +public String reverseVowels(String s) { + if(s.length() == 0) return s; + int i = 0, j = s.length() - 1; + char[] result = new char[s.length()]; + while(i <= j){ + char ci = s.charAt(i); + char cj = s.charAt(j); + if(!vowels.contains(ci)){ + result[i] = ci; + i++; + } else if(!vowels.contains(cj)){ + result[j] = cj; + j--; + } else{ + result[i] = cj; + result[j] = ci; + i++; + j--; + } + } + return new String(result); +} +``` + +**两数平方和** + +[Leetcode : 633. Sum of Square Numbers (Easy)](https://leetcode.com/problems/sum-of-square-numbers/description/) + +```html +Input: 5 +Output: True +Explanation: 1 * 1 + 2 * 2 = 5 +``` + +题目描述:判断一个数是否为两个数的平方和,例如 5 = 12 + 22。 + +```java +public boolean judgeSquareSum(int c) { + int left = 0, right = (int) Math.sqrt(c); + while(left <= right){ + int powSum = left * left + right * right; + if(powSum == c) return true; + else if(powSum > c) right--; + else left++; + } + return false; +} +``` + +**回文字符串** + +[Leetcode : 680. Valid Palindrome II (Easy)](https://leetcode.com/problems/valid-palindrome-ii/description/) + +```html +Input: "abca" +Output: True +Explanation: You could delete the character 'c'. +``` + +题目描述:可以删除一个字符,判断是否能构成回文字符串。 + +```java +public boolean validPalindrome(String s) { + int i = 0, j = s.length() -1; + while(i < j){ + if(s.charAt(i) != s.charAt(j)){ + return isPalindrome(s, i, j - 1) || isPalindrome(s, i + 1, j); + } + i++; + j--; + } + return true; +} + +private boolean isPalindrome(String s, int l, int r){ + while(l < r){ + if(s.charAt(l) != s.charAt(r)) + return false; + l++; + r--; + } + return true; +} +``` + +**归并两个有序数组** + +[Leetcode : 88. Merge Sorted Array (Easy)](https://leetcode.com/problems/merge-sorted-array/description/) + +题目描述:把归并结果存到第一个数组上。 + +```java +public void merge(int[] nums1, int m, int[] nums2, int n) { + int i = m - 1, j = n - 1; // 需要从尾开始遍历,否则在 nums1 上归并得到的值会覆盖还未进行归并比较的值 + int idx = m + n - 1; + while(i >= 0 || j >= 0){ + if(i < 0) nums1[idx] = nums2[j--]; + else if(j < 0) nums1[idx] = nums1[i--]; + else if(nums1[i] > nums2[j]) nums1[idx] = nums1[i--]; + else nums1[idx] = nums2[j--]; + idx--; + } +} +``` + +**判断链表是否存在环** + +[Leetcode : 141. Linked List Cycle (Easy)](https://leetcode.com/problems/linked-list-cycle/description/) + +使用双指针,一个指针每次移动一个节点,一个指针每次移动两个节点,如果存在环,那么这两个指针一定会相遇。 + +```java +public boolean hasCycle(ListNode head) { + if(head == null) return false; + ListNode l1 = head, l2 = head.next; + while(l1 != null && l2 != null){ + if(l1 == l2) return true; + l1 = l1.next; + if(l2.next == null) break; + l2 = l2.next.next; + } + return false; +} +``` + +**最长子序列** + +[Leetcode : 524. Longest Word in Dictionary through Deleting (Medium)](https://leetcode.com/problems/longest-word-in-dictionary-through-deleting/description/) + +``` +Input: +s = "abpcplea", d = ["ale","apple","monkey","plea"] + +Output: +"apple" +``` + +题目描述:删除 s 中的一些字符,使得它构成字符串列表 d 中的一个字符串,找出能构成的最长字符串。如果有多个相同长度的结果,返回按字典序排序的最大字符串。 + +```java +public String findLongestWord(String s, List d) { + String ret = ""; + for (String str : d) { + for (int i = 0, j = 0; i < s.length() && j < str.length(); i++) { + if (s.charAt(i) == str.charAt(j)) j++; + if (j == str.length()) { + if (ret.length() < str.length() + || (ret.length() == str.length() && ret.compareTo(str) > 0)) { + ret = str; + } + } + } + } + return ret; +} +``` + +## 排序 + +### 快速选择 + +一般用于求解 **Kth Element** 问题,可以在 O(n) 时间复杂度,O(1) 空间复杂度完成求解工作。 + +与快速排序一样,快速选择一般需要先打乱数组,否则最坏情况下时间复杂度为 O(n2)。 + +### 堆排序 + +堆排序用于求解 **TopK Elements** 问题,通过维护一个大小为 K 的堆,堆中的元素就是 TopK Elements。当然它也可以用于求解 Kth Element 问题,因为最后出堆的那个元素就是 Kth Element。快速选择也可以求解 TopK Elements 问题,因为找到 Kth Element 之后,再遍历一次数组,所有小于等于 Kth Element 的元素都是 TopK Elements。可以看到,快速选择和堆排序都可以求解 Kth Element 和 TopK Elements 问题。 + +**Kth Element** + +[Leetocde : 215. Kth Largest Element in an Array (Medium)](https://leetcode.com/problems/kth-largest-element-in-an-array/description/) + +**排序** :时间复杂度 O(nlgn),空间复杂度 O(1) + +```java +public int findKthLargest(int[] nums, int k) { + int N = nums.length; + Arrays.sort(nums); + return nums[N - k]; +} +``` + +**堆排序** :时间复杂度 O(nlgk),空间复杂度 O(k) + +```java +public int findKthLargest(int[] nums, int k) { + PriorityQueue pq = new PriorityQueue<>(); + for(int val : nums) { + pq.offer(val); + if(pq.size() > k) { + pq.poll(); + } + } + return pq.peek(); +} +``` + +**快速选择** :时间复杂度 O(n),空间复杂度 O(1) + +```java +public int findKthLargest(int[] nums, int k) { + k = nums.length - k; + int lo = 0; + int hi = nums.length - 1; + while (lo < hi) { + final int j = partition(nums, lo, hi); + if(j < k) { + lo = j + 1; + } else if (j > k) { + hi = j - 1; + } else { + break; + } + } + return nums[k]; + } + + private int partition(int[] a, int lo, int hi) { + int i = lo; + int j = hi + 1; + while(true) { + while(i < hi && less(a[++i], a[lo])); + while(j > lo && less(a[lo], a[--j])); + if(i >= j) { + break; + } + exch(a, i, j); + } + exch(a, lo, j); + return j; + } + + private void exch(int[] a, int i, int j) { + final int tmp = a[i]; + a[i] = a[j]; + a[j] = tmp; + } + + private boolean less(int v, int w) { + return v < w; + } +} +``` + +### 桶排序 + +**出现频率最多的 k 个数** + +[Leetcode : 347. Top K Frequent Elements (Medium)](https://leetcode.com/problems/top-k-frequent-elements/description/) + +```html +Given [1,1,1,2,2,3] and k = 2, return [1,2]. +``` + +设置若干个桶,每个桶存储出现频率相同的数,并且桶的下标代表桶中数出现的频率,即第 i 个桶中存储的数出现的频率为 i。把数都放到桶之后,从后向前遍历桶,最先得到的 k 个数就是出现频率最多的的 k 个数。 + +```java +public List topKFrequent(int[] nums, int k) { + List ret = new ArrayList<>(); + Map map = new HashMap<>(); + for(int num : nums) { + map.put(num, map.getOrDefault(num, 0) + 1); + } + List[] bucket = new List[nums.length + 1]; + for(int key : map.keySet()) { + int frequency = map.get(key); + if(bucket[frequency] == null) { + bucket[frequency] = new ArrayList<>(); + } + bucket[frequency].add(key); + } + + for(int i = bucket.length - 1; i >= 0 && ret.size() < k; i--) { + if(bucket[i] != null) { + ret.addAll(bucket[i]); + } + } + return ret; +} +``` + +## 搜索 + +深度优先搜索和广度优先搜索广泛运用于树和图中,但是它们的应用远远不止如此。 + +### BFS + +

    + +广度优先搜索的搜索过程有点像一层一层地进行遍历,每层遍历都以上一层遍历的结果作为起点,遍历一个长度。需要注意的是,遍历过的节点不能再次被遍历。 + +第一层: + +- 0 -> {6,2,1,5}; + +第二层: + +- 6 -> {4} +- 2 -> {} +- 1 -> {} +- 5 -> {4,3} + +第三层: + +- 4 -> {} +- 3 -> {} + +可以看到,每一轮遍历的节点都与根节点路径长度相同。设 di 表示第 i 个节点与根节点的路径长度,推导出一个结论:对于先遍历的节点 i 与后遍历的节点 j,有 di<=dj。利用这个结论,可以求解最短路径等 **最优解** 问题:第一次遍历到目的节点,其所经过的路径为最短路径,如果继续遍历,之后再遍历到目的节点,所经过的路径就不是最短路径。 + +在程序实现 BFS 时需要考虑以下问题: + +- 队列:用来存储每一轮遍历的节点; +- 标记:对于遍历过的节点,应该将它标记,防止重复遍历。 + +**计算在网格中从原点到特定点的最短路径长度** + +```html +[[1,1,0,1], + [1,0,1,0], + [1,1,1,1], + [1,0,1,1]] +``` + +1 表示可以经过某个位置。 + +```java +public int minPathLength(int[][] grids, int tr, int tc) { + int[][] next = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; + int m = grids.length, n = grids[0].length; + Queue queue = new LinkedList<>(); + queue.add(new Position(0, 0, 1)); + while (!queue.isEmpty()) { + Position pos = queue.poll(); + for (int i = 0; i < 4; i++) { + Position nextPos = new Position(pos.r + next[i][0], pos.c + next[i][1], pos.length + 1); + if (nextPos.r < 0 || nextPos.r >= m || nextPos.c < 0 || nextPos.c >= n) continue; + if (grids[nextPos.r][nextPos.c] != 1) continue; + grids[nextPos.r][nextPos.c] = 0; + if (nextPos.r == tr && nextPos.c == tc) return nextPos.length; + queue.add(nextPos); + } + } + return -1; +} + +private class Position { + int r, c, length; + public Position(int r, int c, int length) { + this.r = r; + this.c = c; + this.length = length; + } +} +``` + +### DFS + +

    + +广度优先搜索一层一层遍历,每一层得到到的所有新节点,要用队列先存储起来以备下一层遍历的时候再遍历;而深度优先搜索在得到到一个新节点时立马对新节点进行遍历:从节点 0 出发开始遍历,得到到新节点 6 时,立马对新节点 6 进行遍历,得到新节点 4;如此反复以这种方式遍历新节点,直到没有新节点了,此时返回。返回到根节点 0 的情况是,继续对根节点 0 进行遍历,得到新节点 2,然后继续以上步骤。 + +从一个节点出发,使用 DFS 对一个图进行遍历时,能够遍历到的节点都是从初始节点可达的,DFS 常用来求解这种 **可达性** 问题。 + +在程序实现 DFS 时需要考虑以下问题: + +- 栈:用栈来保存当前节点信息,当遍历新节点返回时能够继续遍历当前节点。可以使用递归栈。 +- 标记:和 BFS 一样同样需要对已经遍历过的节点进行标记。 + +**查找最大的连通面积** + +[Leetcode : 695. Max Area of Island (Easy)](https://leetcode.com/problems/max-area-of-island/description/) + +```html +[[0,0,1,0,0,0,0,1,0,0,0,0,0], + [0,0,0,0,0,0,0,1,1,1,0,0,0], + [0,1,1,0,1,0,0,0,0,0,0,0,0], + [0,1,0,0,1,1,0,0,1,0,1,0,0], + [0,1,0,0,1,1,0,0,1,1,1,0,0], + [0,0,0,0,0,0,0,0,0,0,1,0,0], + [0,0,0,0,0,0,0,1,1,1,0,0,0], + [0,0,0,0,0,0,0,1,1,0,0,0,0]] +``` + +```java +public int maxAreaOfIsland(int[][] grid) { + int m = grid.length, n = grid[0].length; + int max = 0; + for(int i = 0; i < m; i++){ + for(int j = 0; j < n; j++){ + if(grid[i][j] == 1) max = Math.max(max, dfs(grid, i, j)); + } + } + return max; +} + +private int dfs(int[][] grid, int i, int j){ + int m = grid.length, n = grid[0].length; + if(i < 0 || i >= m || j < 0 || j >= n) return 0; + if(grid[i][j] == 0) return 0; + grid[i][j] = 0; + return dfs(grid, i + 1, j) + dfs(grid, i - 1, j) + dfs(grid, i, j + 1) + dfs(grid, i, j - 1) + 1; +} +``` + +**图的连通分量** + +[Leetcode : 547. Friend Circles (Medium)](https://leetcode.com/problems/friend-circles/description/) + +```html +Input: +[[1,1,0], + [1,1,0], + [0,0,1]] +Output: 2 +Explanation:The 0th and 1st students are direct friends, so they are in a friend circle. +The 2nd student himself is in a friend circle. So return 2. +``` + +```java +public int findCircleNum(int[][] M) { + int n = M.length; + int ret = 0; + boolean[] hasFind = new boolean[n]; + for(int i = 0; i < n; i++) { + if(!hasFind[i]) { + dfs(M, i, hasFind); + ret++; + } + } + return ret; +} + +private void dfs(int[][] M, int i, boolean[] hasFind) { + hasFind[i] = true; + int n = M.length; + for(int k = 0; k < n; k++) { + if(M[i][k] == 1 && !hasFind[k]) { + dfs(M, k, hasFind); + } + } +} +``` + +**矩阵中的连通区域数量** + +[Leetcode : 200. Number of Islands (Medium)](https://leetcode.com/problems/number-of-islands/description/) + +```html +11110 +11010 +11000 +00000 +Answer: 1 +``` + +```java +private int m, n; +private int[][] direction = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; + +public int numIslands(char[][] grid) { + if (grid == null || grid.length == 0) return 0; + m = grid.length; + n = grid[0].length; + int ret = 0; + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + if (grid[i][j] == '1') { + dfs(grid, i, j); + ret++; + } + } + } + return ret; +} + +private void dfs(char[][] grid, int i, int j) { + if (i < 0 || i >= m || j < 0 || j >= n || grid[i][j] == '0') return; + grid[i][j] = '0'; + for (int k = 0; k < direction.length; k++) { + dfs(grid, i + direction[k][0], j + direction[k][1]); + } +} +``` + +**输出二叉树中所有从根到叶子的路径** + +[Leetcode : 257. Binary Tree Paths (Easy)](https://leetcode.com/problems/binary-tree-paths/description/) + +```html + 1 +/ \ +2 3 +\ + 5 +``` +```html +["1->2->5", "1->3"] +``` + +```java +public List binaryTreePaths(TreeNode root) { + List ret = new ArrayList(); + if(root == null) return ret; + dfs(root, "", ret); + return ret; +} + +private void dfs(TreeNode root, String prefix, List ret){ + if(root == null) return; + if(root.left == null && root.right == null){ + ret.add(prefix + root.val); + return; + } + prefix += (root.val + "->"); + dfs(root.left, prefix, ret); + dfs(root.right, prefix, ret); +} +``` + +**填充封闭区域** + +[Leetcode : 130. Surrounded Regions (Medium)](https://leetcode.com/problems/surrounded-regions/description/) + +```html +For example, +X X X X +X O O X +X X O X +X O X X + +After running your function, the board should be: +X X X X +X X X X +X X X X +X O X X +``` + +题目描述:使得被 'X' 的 'O' 转换为 'X'。 + +先填充最外侧,剩下的就是里侧了。 + +```java +private int[][] direction = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; +private int m, n; + +public void solve(char[][] board) { + if (board == null || board.length == 0) return; + m = board.length; + n = board[0].length; + for (int i = 0; i < m; i++) { + dfs(board, i, 0); + dfs(board, i, n - 1); + } + for (int i = 0; i < n; i++) { + dfs(board, 0, i); + dfs(board, m - 1, i); + } + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + if (board[i][j] == 'T') board[i][j] = 'O'; + else if (board[i][j] == 'O') board[i][j] = 'X'; + } + } +} + +private void dfs(char[][] board, int r, int c) { + if (r < 0 || r >= m || c < 0 || c >= n || board[r][c] != 'O') return; + board[r][c] = 'T'; + for (int i = 0; i < direction.length; i++) { + dfs(board, r + direction[i][0], c + direction[i][1]); + } +} +``` + +**从两个方向都能到达的区域** + +[Leetcode : 417. Pacific Atlantic Water Flow (Medium)](https://leetcode.com/problems/pacific-atlantic-water-flow/description/) + +```html +Given the following 5x5 matrix: + + Pacific ~ ~ ~ ~ ~ + ~ 1 2 2 3 (5) * + ~ 3 2 3 (4) (4) * + ~ 2 4 (5) 3 1 * + ~ (6) (7) 1 4 5 * + ~ (5) 1 1 2 4 * + * * * * * Atlantic + +Return: +[[0, 4], [1, 3], [1, 4], [2, 2], [3, 0], [3, 1], [4, 0]] (positions with parentheses in above matrix). +``` + +题目描述:左边和上边是太平洋,右边和下边是大西洋,内部的数字代表海拔,海拔高的地方的水能够流到低的地方,求解水能够流到太平洋和大西洋的所有位置。 + +```java +private int m, n; +private int[][] matrix; +private int[][] direction = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}}; + +public List pacificAtlantic(int[][] matrix) { + List ret = new ArrayList<>(); + if (matrix == null || matrix.length == 0) return ret; + this.m = matrix.length; + this.n = matrix[0].length; + this.matrix = matrix; + boolean[][] canReachP = new boolean[m][n]; + boolean[][] canReachA = new boolean[m][n]; + for (int i = 0; i < m; i++) { + dfs(i, 0, canReachP); + dfs(i, n - 1, canReachA); + } + for (int i = 0; i < n; i++) { + dfs(0, i, canReachP); + dfs(m - 1, i, canReachA); + } + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + if (canReachP[i][j] && canReachA[i][j]) { + ret.add(new int[]{i, j}); + } + } + } + return ret; +} + +private void dfs(int r, int c, boolean[][] canReach) { + if(canReach[r][c]) return; + canReach[r][c] = true; + for (int i = 0; i < direction.length; i++) { + int nextR = direction[i][0] + r; + int nextC = direction[i][1] + c; + if (nextR < 0 || nextR >= m || nextC < 0 || nextC >= n + || matrix[r][c] > matrix[nextR][nextC]) continue; + dfs(nextR, nextC, canReach); + } +} +``` + +### Backtracking + +回溯是 DFS 的一种,它不是用在遍历图的节点上,而是用于求解 **排列组合** 问题,例如有 { 'a','b','c' } 三个字符,求解所有由这三个字符排列得到的字符串。 + +在程序实现时,回溯需要注意对元素进行标记的问题。使用递归实现的回溯,在访问一个新元素进入新的递归调用时,需要将新元素标记为已经访问,这样才能在继续递归调用时不用重复访问该元素;但是在递归返回时,需要将该元素标记为未访问,因为只需要保证在一个递归链中不同时访问一个元素,可以访问已经访问过但是不在当前递归链中的元素。 + +**数字键盘组合** + +[Leetcode : 17. Letter Combinations of a Phone Number (Medium)](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) + +

    + +```html +Input:Digit string "23" +Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]. +``` + +```java +private static final String[] KEYS = {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"}; + +public List letterCombinations(String digits) { + List ret = new ArrayList<>(); + if (digits != null && digits.length() != 0) { + combination("", digits, 0, ret); + } + return ret; +} + +private void combination(String prefix, String digits, int offset, List ret) { + if (offset == digits.length()) { + ret.add(prefix); + return; + } + String letters = KEYS[digits.charAt(offset) - '0']; + for (char c : letters.toCharArray()) { + combination(prefix + c, digits, offset + 1, ret); + } +} +``` + +**在矩阵中寻找字符串** + +[Leetcode : 79. Word Search (Medium)](https://leetcode.com/problems/word-search/description/) + +```html +For example, +Given board = +[ + ['A','B','C','E'], + ['S','F','C','S'], + ['A','D','E','E'] +] +word = "ABCCED", -> returns true, +word = "SEE", -> returns true, +word = "ABCB", -> returns false. +``` + +```java +private static int[][] shift = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}}; +private static boolean[][] visited; +private int m; +private int n; + +public boolean exist(char[][] board, String word) { + if (word == null || word.length() == 0) return true; + if (board == null || board.length == 0 || board[0].length == 0) return false; + m = board.length; + n = board[0].length; + visited = new boolean[m][n]; + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + if (dfs(board, word, 0, i, j)) return true; + } + } + return false; +} + +private boolean dfs(char[][] board, String word, int start, int r, int c) { + if (start == word.length()) { + return true; + } + if (r < 0 || r >= m || c < 0 || c >= n || board[r][c] != word.charAt(start) || visited[r][c] ) { + return false; + } + visited[r][c] = true; + for (int i = 0; i < shift.length; i++) { + int nextR = r + shift[i][0]; + int nextC = c + shift[i][1]; + if (dfs(board, word, start + 1, nextR, nextC)) return true; + } + visited[r][c] = false; + return false; +} +``` + +**IP 地址划分** + +[Leetcode : 93. Restore IP Addresses(Medium)](https://leetcode.com/problems/restore-ip-addresses/description/) + +```html +Given "25525511135", +return ["255.255.11.135", "255.255.111.35"]. +``` + +```java +private List ret; + +public List restoreIpAddresses(String s) { + ret = new ArrayList<>(); + doRestore(0, "", s); + return ret; +} + +private void doRestore(int k, String path, String s) { + if (k == 4 || s.length() == 0) { + if (k == 4 && s.length() == 0) { + ret.add(path); + } + return; + } + for (int i = 0; i < s.length() && i <= 2; i++) { + if (i != 0 && s.charAt(0) == '0') break; + String part = s.substring(0, i + 1); + if (Integer.valueOf(part) <= 255) { + doRestore(k + 1, path.length() != 0 ? path + "." + part : part, s.substring(i + 1)); + } + } +} +``` + +**排列** + +[Leetcode : 46. Permutations (Medium)](https://leetcode.com/problems/permutations/description/) + +```html +[1,2,3] have the following permutations: +[ + [1,2,3], + [1,3,2], + [2,1,3], + [2,3,1], + [3,1,2], + [3,2,1] +] +``` + +```java +public List> permute(int[] nums) { + List> ret = new ArrayList<>(); + List permuteList = new ArrayList<>(); + boolean[] visited = new boolean[nums.length]; + backtracking(permuteList, visited, nums, ret); + return ret; +} + +private void backtracking(List permuteList, boolean[] visited, int[] nums, List> ret){ + if(permuteList.size() == nums.length){ + ret.add(new ArrayList(permuteList)); + return; + } + + for(int i = 0; i < visited.length; i++){ + if(visited[i]) continue; + visited[i] = true; + permuteList.add(nums[i]); + backtracking(permuteList, visited, nums, ret); + permuteList.remove(permuteList.size() - 1); + visited[i] = false; + } +} +``` + +**含有相同元素求排列** + +[Leetcode : 47. Permutations II (Medium)](https://leetcode.com/problems/permutations-ii/description/) + +```html +[1,1,2] have the following unique permutations: +[[1,1,2], [1,2,1], [2,1,1]] +``` + +题目描述:数组元素可能含有相同的元素,进行排列时就有可能出现 重复的排列,要求重复的排列只返回一个。 + +在实现上,和 Permutations 不同的是要先排序,然后在添加一个元素时,判断这个元素是否等于前一个元素,如果等于,并且前一个元素还未访问,那么就跳过这个元素。 + +```java +public List> permuteUnique(int[] nums) { + List> ret = new ArrayList<>(); + List permuteList = new ArrayList<>(); + Arrays.sort(nums); + boolean[] visited = new boolean[nums.length]; + backtracking(permuteList, visited, nums, ret); + return ret; +} + +private void backtracking(List permuteList, boolean[] visited, int[] nums, List> ret) { + if (permuteList.size() == nums.length) { + ret.add(new ArrayList(permuteList)); + return; + } + + for (int i = 0; i < visited.length; i++) { + if (i != 0 && nums[i] == nums[i - 1] && !visited[i - 1]) continue; + if (visited[i]) continue; + visited[i] = true; + permuteList.add(nums[i]); + backtracking(permuteList, visited, nums, ret); + permuteList.remove(permuteList.size() - 1); + visited[i] = false; + } +} +``` + +**组合** + +[Leetcode : 77. Combinations (Medium)](https://leetcode.com/problems/combinations/description/) + +```html +If n = 4 and k = 2, a solution is: +[ + [2,4], + [3,4], + [2,3], + [1,2], + [1,3], + [1,4], +] +``` + +```java +public List> combine(int n, int k) { + List> ret = new ArrayList<>(); + List combineList = new ArrayList<>(); + backtracking(1, n, k, combineList, ret); + return ret; +} + +private void backtracking(int start, int n, int k, List combineList, List> ret){ + if(k == 0){ + ret.add(new ArrayList(combineList)); // 这里要重新构造一个 List + return; + } + + for(int i = start; i <= n - k + 1; i++) { // 剪枝 + combineList.add(i); // 把 i 标记为已访问 + backtracking(i + 1, n, k - 1, combineList, ret); + combineList.remove(combineList.size() - 1); // 把 i 标记为未访问 + } +} +``` + +**组合求和** + +[Leetcode : 39. Combination Sum (Medium)](https://leetcode.com/problems/combination-sum/description/) + +```html +given candidate set [2, 3, 6, 7] and target 7, +A solution set is: +[[7],[2, 2, 3]] +``` + +```java + private List> ret; + + public List> combinationSum(int[] candidates, int target) { + ret = new ArrayList<>(); + doCombination(candidates, target, 0, new ArrayList<>()); + return ret; + } + + private void doCombination(int[] candidates, int target, int start, List list) { + if (target == 0) { + ret.add(new ArrayList<>(list)); + return; + } + for (int i = start; i < candidates.length; i++) { + if (candidates[i] <= target) { + list.add(candidates[i]); + doCombination(candidates, target - candidates[i], i, list); + list.remove(list.size() - 1); + } + } + } +``` + +**含有相同元素的求组合求和** + +[Leetcode : 40. Combination Sum II (Medium)](https://leetcode.com/problems/combination-sum-ii/description/) + +```html +For example, given candidate set [10, 1, 2, 7, 6, 1, 5] and target 8, +A solution set is: +[ + [1, 7], + [1, 2, 5], + [2, 6], + [1, 1, 6] +] +``` + +```java +private List> ret; + +public List> combinationSum2(int[] candidates, int target) { + ret = new ArrayList<>(); + Arrays.sort(candidates); + doCombination(candidates, target, 0, new ArrayList<>(), new boolean[candidates.length]); + return ret; +} + +private void doCombination(int[] candidates, int target, int start, List list, boolean[] visited) { + if (target == 0) { + ret.add(new ArrayList<>(list)); + return; + } + for (int i = start; i < candidates.length; i++) { + if (i != 0 && candidates[i] == candidates[i - 1] && !visited[i - 1]) continue; + if (candidates[i] <= target) { + list.add(candidates[i]); + visited[i] = true; + doCombination(candidates, target - candidates[i], i + 1, list, visited); + visited[i] = false; + list.remove(list.size() - 1); + } + } +} +``` + +**子集** + +[Leetcode : 78. Subsets (Medium)](https://leetcode.com/problems/subsets/description/) + +题目描述:找出集合的所有子集,子集不能重复,[1, 2] 和 [2, 1] 这种子集算重复 + +```java +private List> ret; +private List subsetList; + +public List> subsets(int[] nums) { + ret = new ArrayList<>(); + subsetList = new ArrayList<>(); + for (int i = 0; i <= nums.length; i++) { + backtracking(0, i, nums); + } + return ret; +} + +private void backtracking(int startIdx, int size, int[] nums) { + if (subsetList.size() == size) { + ret.add(new ArrayList(subsetList)); + return; + } + + for (int i = startIdx; i < nums.length; i++) { + subsetList.add(nums[i]); + backtracking(i + 1, size, nums); + subsetList.remove(subsetList.size() - 1); + } +} +``` + +**含有相同元素求子集** + +[Leetcode : 90. Subsets II (Medium)](https://leetcode.com/problems/subsets-ii/description/) + +```html +For example, +If nums = [1,2,2], a solution is: + +[ + [2], + [1], + [1,2,2], + [2,2], + [1,2], + [] +] +``` + +```java +private List> ret; +private List subsetList; +private boolean[] visited; + +public List> subsetsWithDup(int[] nums) { + ret = new ArrayList<>(); + subsetList = new ArrayList<>(); + visited = new boolean[nums.length]; + Arrays.sort(nums); + for (int i = 0; i <= nums.length; i++) { + backtracking(0, i, nums); + } + return ret; +} + +private void backtracking(int startIdx, int size, int[] nums) { + if (subsetList.size() == size) { + ret.add(new ArrayList(subsetList)); + return; + } + + for (int i = startIdx; i < nums.length; i++) { + if (i != 0 && nums[i] == nums[i - 1] && !visited[i - 1]) continue; + subsetList.add(nums[i]); + visited[i] = true; + backtracking(i + 1, size, nums); + visited[i] = false; + subsetList.remove(subsetList.size() - 1); + } +} +``` + +**分割字符串使得每个部分都是回文数** + +[Leetcode : 131. Palindrome Partitioning (Medium)](https://leetcode.com/problems/palindrome-partitioning/description/) + +```html +For example, given s = "aab", +Return + +[ + ["aa","b"], + ["a","a","b"] +] +``` + +```java +private List> ret; + +public List> partition(String s) { + ret = new ArrayList<>(); + doPartion(new ArrayList<>(), s); + return ret; +} + +private void doPartion(List list, String s) { + if (s.length() == 0) { + ret.add(new ArrayList<>(list)); + return; + } + for (int i = 0; i < s.length(); i++) { + if (isPalindrome(s, 0, i)) { + list.add(s.substring(0, i + 1)); + doPartion(list, s.substring(i + 1)); + list.remove(list.size() - 1); + } + } +} + +private boolean isPalindrome(String s, int begin, int end) { + while (begin < end) { + if (s.charAt(begin++) != s.charAt(end--)) return false; + } + return true; +} +``` + +**数独** + +[Leetcode : 37. Sudoku Solver (Hard)](https://leetcode.com/problems/sudoku-solver/description/) + +

    + +```java +private boolean[][] rowsUsed = new boolean[9][10]; +private boolean[][] colsUsed = new boolean[9][10]; +private boolean[][] cubesUsed = new boolean[9][10]; +private char[][] board; + +public void solveSudoku(char[][] board) { + this.board = board; + for (int i = 0; i < 9; i++) { + for (int j = 0; j < 9; j++) { + if (board[i][j] == '.') continue; + int num = board[i][j] - '0'; + rowsUsed[i][num] = true; + colsUsed[j][num] = true; + cubesUsed[cubeNum(i, j)][num] = true; + } + } + for (int i = 0; i < 9; i++) { + for (int j = 0; j < 9; j++) { + backtracking(i, j); + } + } +} + +private boolean backtracking(int row, int col) { + while (row < 9 && board[row][col] != '.') { + row = col == 8 ? row + 1 : row; + col = col == 8 ? 0 : col + 1; + } + if (row == 9) { + return true; + } + for (int num = 1; num <= 9; num++) { + if (rowsUsed[row][num] || colsUsed[col][num] || cubesUsed[cubeNum(row, col)][num]) continue; + rowsUsed[row][num] = colsUsed[col][num] = cubesUsed[cubeNum(row, col)][num] = true; + board[row][col] = (char) (num + '0'); + if (backtracking(row, col)) return true; + board[row][col] = '.'; + rowsUsed[row][num] = colsUsed[col][num] = cubesUsed[cubeNum(row, col)][num] = false; + } + return false; +} + +private int cubeNum(int i, int j) { + int r = i / 3; + int c = j / 3; + return r * 3 + c; +} +``` + +**N 皇后** + +[Leetcode : 51. N-Queens (Hard)](https://leetcode.com/problems/n-queens/description/) + +

    + +题目描述:在 n\*n 的矩阵中摆放 n 个皇后,并且每个皇后不能在同一行,同一列,同一对角线上,要求解所有的 n 皇后解。 + +一行一行地摆放,在确定一行中的那个皇后应该摆在哪一列时,需要用三个标记数组来确定某一列是否合法,这三个标记数组分别为:列标记数组、45 度对角线标记数组和 135 度对角线标记数组。 + +45 度对角线标记数组的维度为 2\*n - 1,通过下图可以明确 (r,c) 的位置所在的数组下标为 r + c。 + +

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

    + +```java +private List> ret; +private char[][] nQueens; +private boolean[] colUsed; +private boolean[] diagonals45Used; +private boolean[] diagonals135Used; +private int n; + +public List> solveNQueens(int n) { + ret = new ArrayList<>(); + nQueens = new char[n][n]; + Arrays.fill(nQueens, '.'); + colUsed = new boolean[n]; + diagonals45Used = new boolean[2 * n - 1]; + diagonals135Used = new boolean[2 * n - 1]; + this.n = n; + backstracking(0); + return ret; +} + +private void backstracking(int row) { + if (row == n) { + List list = new ArrayList<>(); + for (char[] chars : nQueens) { + list.add(new String(chars)); + } + ret.add(list); + return; + } + + for (int col = 0; col < n; col++) { + int diagonals45Idx = row + col; + int diagonals135Idx = n - 1 - (row - col); + if (colUsed[col] || diagonals45Used[diagonals45Idx] || diagonals135Used[diagonals135Idx]) { + continue; + } + nQueens[row][col] = 'Q'; + colUsed[col] = diagonals45Used[diagonals45Idx] = diagonals135Used[diagonals135Idx] = true; + backstracking(row + 1); + colUsed[col] = diagonals45Used[diagonals45Idx] = diagonals135Used[diagonals135Idx] = false; + nQueens[row][col] = '.'; + } +} +``` + +## 分治 + +**给表达式加括号** + +[Leetcode : 241. Different Ways to Add Parentheses (Medium)](https://leetcode.com/problems/different-ways-to-add-parentheses/description/) + +```html +Input: "2-1-1". + +((2-1)-1) = 0 +(2-(1-1)) = 2 + +Output : [0, 2] +``` + +```java +public List diffWaysToCompute(String input) { + int n = input.length(); + List ret = new ArrayList<>(); + for (int i = 0; i < n; i++) { + char c = input.charAt(i); + if (c == '+' || c == '-' || c == '*') { + List left = diffWaysToCompute(input.substring(0, i)); + List right = diffWaysToCompute(input.substring(i + 1)); + for (int l : left) { + for (int r : right) { + switch (c) { + case '+': ret.add(l + r); break; + case '-': ret.add(l - r); break; + case '*': ret.add(l * r); break; + } + } + } + } + } + if (ret.size() == 0) ret.add(Integer.valueOf(input)); + return ret; +} +``` + +## 动态规划 + +递归和动态规划都是将原问题拆成多个子问题然后求解,他们之间最本质的区别是,动态规划保存了子问题的解。 + +### 分割整数 + +**分割整数的最大乘积** + +[Leetcode : 343. Integer Break (Medim)](https://leetcode.com/problems/integer-break/description/) + +题目描述:For example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 + 3 + 4). + +```java +public int integerBreak(int n) { + int[] dp = new int[n + 1]; + dp[1] = 1; + for(int i = 2; i <= n; i++) { + for(int j = 1; j <= i - 1; j++) { + dp[i] = Math.max(dp[i], Math.max(j * dp[i - j], j * (i - j))); + } + } + return dp[n]; +} +``` + +**按平方数来分割整数** + +[Leetcode : 279. Perfect Squares(Medium)](https://leetcode.com/problems/perfect-squares/description/) + +题目描述:For example, given n = 12, return 3 because 12 = 4 + 4 + 4; given n = 13, return 2 because 13 = 4 + 9. + +```java +public int numSquares(int n) { + List squares = new ArrayList<>(); // 存储小于 n 的平方数 + int diff = 3; + while(square <= n) { + squares.add(square); + square += diff; + diff += 2; + } + int[] dp = new int[n + 1]; + for(int i = 1; i <= n; i++) { + int max = Integer.MAX_VALUE; + for(int s : squares) { + if(s > i) break; + max = Math.min(max, dp[i - s] + 1); + } + dp[i] = max; + } + return dp[n]; +} +``` + +**分割整数构成字母字符串** + +[Leetcode : 91. Decode Ways (Medium)](https://leetcode.com/problems/decode-ways/description/) + +题目描述:Given encoded message "12", it could be decoded as "AB" (1 2) or "L" (12). + +```java +public int numDecodings(String s) { + if(s == null || s.length() == 0) return 0; + int n = s.length(); + int[] dp = new int[n + 1]; + dp[0] = 1; + dp[1] = s.charAt(0) == '0' ? 0 : 1; + for(int i = 2; i <= n; i++) { + int one = Integer.valueOf(s.substring(i - 1, i)); + if(one != 0) dp[i] += dp[i - 1]; + if(s.charAt(i - 2) == '0') continue; + int two = Integer.valueOf(s.substring(i - 2, i)); + if(two <= 26) dp[i] += dp[i - 2]; + } + return dp[n]; +} +``` + +### 矩阵路径 + +**矩阵的总路径数** + +[Leetcode : 62. Unique Paths (Medium)](https://leetcode.com/problems/unique-paths/description/) + +题目描述:统计从矩阵左上角到右下角的路径总数,每次只能向左和向下移动。 + +```java +public int uniquePaths(int m, int n) { + int[] dp = new int[n]; + for (int i = 0; i < m; i++) { + for (int j = 0; j < n; j++) { + if(i == 0) dp[j] = 1; + else if(j != 0) dp[j] = dp[j] + dp[j - 1]; + } + } + return dp[n - 1]; +} +``` + +**矩阵的最小路径和** + +[Leetcode : 64. Minimum Path Sum (Medium)](https://leetcode.com/problems/minimum-path-sum/description/) + +题目描述:求从矩阵的左上角到右下角的最小路径和,每次只能向左和向下移动。 + +```java +public int minPathSum(int[][] grid) { + if(grid.length == 0 || grid[0].length == 0) return 0; + int m = grid.length, n = grid[0].length; + int[] dp = new int[n]; + for(int i = 0; i < m; i++) { + for(int j = 0; j < n; j++) { + if(j == 0) dp[0] = dp[0] + grid[i][0]; + else if(i == 0) dp[j] = dp[j - 1] + grid[0][j]; + else dp[j] = Math.min(dp[j - 1], dp[j]) + grid[i][j]; + } + } + return dp[n - 1]; +} +``` + +### 斐波那契数列 + +**爬楼梯** + +[Leetcode : 70. Climbing Stairs (Easy)](https://leetcode.com/problems/climbing-stairs/description/) + +题目描述:有 N 阶楼梯,每次可以上一阶或者两阶,求有多少种上楼梯的方法。 + +定义一个数组 dp 存储上楼梯的方法数(为了方便讨论,数组下标从 1 开始),dp[i] 表示走到第 i 个楼梯的方法数目。第 i 个楼梯可以从第 i-1 和 i-2 个楼梯再走一步到达,走到第 i 个楼梯的方法数为走到第 i-1 和第 i-2 个楼梯的方法数之和。 + +

    + +dp[N] 即为所求。 + +考虑到 dp[i] 只与 dp[i - 1] 和 dp[i - 2] 有关,因此可以只用两个变量来存储 dp[i - 1] 和 dp[i - 2] 即可,使得原来的 O(n) 空间复杂度优化为 O(1) 复杂度。 + +```java +public int climbStairs(int n) { + if(n == 1) return 1; + if(n == 2) return 2; + // 前一个楼梯、后一个楼梯 + int pre1 = 2, pre2 = 1; + for(int i = 2; i < n; i++){ + int cur = pre1 + pre2; + pre2 = pre1; + pre1 = cur; + } + return pre1; +} +``` + +**母牛生产** + +[程序员代码面试指南-P181](#) + +题目描述:假设农场中成熟的母牛每年都会生 1 头小母牛,并且永远不会死。第一年有 1 只小母牛,从第二年开始,母牛开始生小母牛。每只小母牛 3 年之后成熟又可以生小母牛。给定整数 N,求 N 年后牛的数量。 + +第 i 年成熟的牛的数量为: + +

    + +**强盗抢劫** + +[Leetcode : 198. House Robber (Easy)](https://leetcode.com/problems/house-robber/description/) + +题目描述:抢劫一排住户,但是不能抢邻近的住户,求最大抢劫量。 + +定义 dp 数组用来存储最大的抢劫量,其中 dp[i] 表示抢到第 i 个住户时的最大抢劫量。由于不能抢劫邻近住户,因此如果抢劫了第 i 个住户那么只能抢劫 i - 2 和 i - 3 的住户,所以 + +

    + +O(n) 空间复杂度实现方法: + +```java +public int rob(int[] nums) { + int n = nums.length; + if(n == 0) return 0; + if(n == 1) return nums[0]; + if(n == 2) return Math.max(nums[0], nums[1]); + int[] dp = new int[n]; + dp[0] = nums[0]; + dp[1] = nums[1]; + dp[2] = nums[0] + nums[2]; + for(int i = 3; i < n; i++){ + dp[i] = Math.max(dp[i -2], dp[i - 3]) + nums[i]; + } + return Math.max(dp[n - 1], dp[n - 2]); +} +``` + +O(1) 空间复杂度实现方法: + +```java +public int rob(int[] nums) { + int n = nums.length; + if(n == 0) return 0; + if(n == 1) return nums[0]; + if(n == 2) return Math.max(nums[0], nums[1]); + int pre3 = nums[0], pre2 = nums[1], pre1 = nums[2] + nums[0]; + for(int i = 3; i < n; i++){ + int cur = Math.max(pre2, pre3) + nums[i]; + pre3 = pre2; + pre2 = pre1; + pre1 = cur; + } + return Math.max(pre1, pre2); +} +``` + +**强盗在环形街区抢劫** + +[Leetcode : 213. House Robber II (Medium)](https://leetcode.com/problems/house-robber-ii/description/) + +```java +public int rob(int[] nums) { + if(nums == null || nums.length == 0) return 0; + int n = nums.length; + if(n == 1) return nums[0]; + return Math.max(rob(nums, 0, n - 2), rob(nums, 1, n - 1)); +} + +private int rob(int[] nums, int s, int e) { + int n = nums.length; + if(e - s == 0) return nums[s]; + if(e - s == 1) return Math.max(nums[s], nums[s + 1]); + int[] dp = new int[n]; + dp[s] = nums[s]; + dp[s + 1] = nums[s + 1]; + dp[s + 2] = nums[s] + nums[s + 2]; + for (int i = s + 3; i <= e; i++) { + dp[i] = Math.max(dp[i - 2], dp[i - 3]) + nums[i]; + } + return Math.max(dp[e], dp[e - 1]); +} +``` + +**信件错排** + +题目描述:有 N 个 信 和 信封,它们被打乱,求错误装信的方式数量。 + +定义一个数组 dp 存储错误方式数量,dp[i] 表示前 i 个信和信封的错误方式数量。假设第 i 个信装到第 j 个信封里面,而第 j 个信装到第 k 个信封里面。根据 i 和 k 是否相等,有两种情况: + +① i==k,交换 i 和 k 的信后,它们的信和信封在正确的位置,但是其余 i-2 封信有 dp[i-2] 种错误装信的方式。由于 j 有 i-1 种取值,因此共有 (i-1)\*dp[i-2] 种错误装信方式。 + +② i != k,交换 i 和 j 的信后,第 i 个信和信封在正确的位置,其余 i-1 封信有 dp[i-1] 种错误装信方式。由于 j 有 i-1 种取值,因此共有 (n-1)\*dp[i-1] 种错误装信方式。 + +综上所述,错误装信数量方式数量为: + +

    + +dp[N] 即为所求。 + +和上楼梯问题一样,dp[i] 只与 dp[i-1] 和 dp[i-2] 有关,因此也可以只用两个变量来存储 dp[i-1] 和 dp[i-2]。 + +### 最长递增子序列 + +已知一个序列 {S1, S2,...,Sn} ,取出若干数组成新的序列 {Si1, Si2,..., Sim},其中 i1、i2 ... im 保持递增,即新序列中各个数仍然保持原数列中的先后顺序,称新序列为原序列的一个 **子序列** 。 + +如果在子序列中,当下标 ix > iy 时,Six > Siy,称子序列为原序列的一个 **递增子序列** 。 + +定义一个数组 dp 存储最长递增子序列的长度,dp[n] 表示以 Sn 结尾的序列的最长递增子序列长度。对于一个递增子序列 {Si1, Si2,...,Sim},如果 im < n 并且 Sim < Sn ,此时 {Si1, Si2,..., Sim, Sn} 为一个递增子序列,递增子序列的长度增加 1。满足上述条件的递增子序列中,长度最长的那个递增子序列就是要找的,在长度最长的递增子序列上加上 Sn 就构成了以 Sn 为结尾的最长递增子序列。因此 dp[n] = max{ dp[i]+1 | Si < Sn && i < n} 。 + +因为在求 dp[n] 时可能无法找到一个满足条件的递增子序列,此时 {Sn} 就构成了递增子序列,因此需要对前面的求解方程做修改,令 dp[n] 最小为 1,即: + +

    + +对于一个长度为 N 的序列,最长子序列并不一定会以 SN 为结尾,因此 dp[N] 不是序列的最长递增子序列的长度,需要遍历 dp 数组找出最大值才是所要的结果,即 max{ dp[i] | 1 <= i <= N} 即为所求。 + +**最长递增子序列** + +[Leetcode : 300. Longest Increasing Subsequence (Medium)](https://leetcode.com/problems/longest-increasing-subsequence/description/) + +```java +public int lengthOfLIS(int[] nums) { + int n = nums.length; + int[] dp = new int[n]; + for(int i = 0; i < n; i++){ + int max = 1; + for(int j = 0; j < i; j++){ + if(nums[i] > nums[j]) max = Math.max(max, dp[j] + 1); + } + dp[i] = max; + } + int ret = 0; + for(int i = 0; i < n; i++){ + ret = Math.max(ret, dp[i]); + } + return ret; +} +``` + +以上解法的时间复杂度为 O(n2) ,可以使用二分查找使得时间复杂度降低为 O(nlogn)。定义一个 tails 数组,其中 tails[i] 存储长度为 i + 1 的最长递增子序列的最后一个元素,例如对于数组 [4,5,6,3],有 + +```html +len = 1 : [4], [5], [6], [3] => tails[0] = 3 +len = 2 : [4, 5], [5, 6] => tails[1] = 5 +len = 3 : [4, 5, 6] => tails[2] = 6 +``` + +对于一个元素 x,如果它大于 tails 数组所有的值,那么把它添加到 tails 后面;如果 tails[i-1] < x <= tails[i],那么更新 tails[i] = x 。 + +可以看出 tails 数组保持有序,因此在查找 Si 位于 tails 数组的位置时就可以使用二分查找。 + +```java +public int lengthOfLIS(int[] nums) { + int n = nums.length; + int[] tails = new int[n]; + int size = 0; + for(int i = 0; i < n; i++){ + int idx = binarySearch(tails, 0, size, nums[i]); + tails[idx] = nums[i]; + if(idx == size) size++; + } + return size; +} + +private int binarySearch(int[] nums, int sIdx, int eIdx, int key){ + while(sIdx < eIdx){ + int mIdx = sIdx + (eIdx - sIdx) / 2; + if(nums[mIdx] == key) return mIdx; + else if(nums[mIdx] > key) eIdx = mIdx; + else sIdx = mIdx + 1; + } + return sIdx; +} +``` + +**最长摆动子序列** + +[Leetcode : 376. Wiggle Subsequence (Medium)](https://leetcode.com/problems/wiggle-subsequence/description/) + +要求:使用 O(n) 时间复杂度求解。 + +使用两个状态 up 和 down。 + +```java +public int wiggleMaxLength(int[] nums) { + int len = nums.length; + if (len == 0) return 0; + int up = 1, down = 1; + for (int i = 1; i < len; i++) { + if (nums[i] > nums[i - 1]) up = down + 1; + else if (nums[i] < nums[i - 1]) down = up + 1; + } + return Math.max(up, down); +} +``` + +### 最长公共子系列 + +对于两个子序列 S1 和 S2,找出它们最长的公共子序列。 + +定义一个二维数组 dp 用来存储最长公共子序列的长度,其中 dp[i][j] 表示 S1 的前 i 个字符与 S2 的前 j 个字符最长公共子序列的长度。考虑 S1i 与 S2j 值是否相等,分为两种情况: + +① 当 S1i==S2j 时,那么就能在 S1 的前 i-1 个字符与 S2 的前 j-1 个字符最长公共子序列的基础上再加上 S1i 这个值,最长公共子序列长度加 1 ,即 dp[i][j] = dp[i-1][j-1] + 1。 + +② 当 S1i != S2j 时,此时最长公共子序列为 S1 的前 i-1 个字符和 S2 的前 j 个字符最长公共子序列,与 S1 的前 i 个字符和 S2 的前 j-1 个字符最长公共子序列,它们的最大者,即 dp[i][j] = max{ dp[i-1][j], dp[i][j-1] }。 + +综上,最长公共子系列的状态转移方程为: + +

    + +对于长度为 N 的序列 S1 和 长度为 M 的序列 S2,dp[N][M] 就是序列 S1 和序列 S2 的最长公共子序列长度。 + +与最长递增子序列相比,最长公共子序列有以下不同点: + +① 针对的是两个序列,求它们的最长公共子序列。 +② 在最长递增子序列中,dp[i] 表示以 Si 为结尾的最长递增子序列长度,子序列必须包含 Si ;在最长公共子序列中,dp[i][j] 表示 S1 中前 i 个字符与 S2 中前 j 个字符的最长公共子序列长度,不一定包含 S1i 和 S2j 。 +③ 由于 2 ,在求最终解时,最长公共子序列中 dp[N][M] 就是最终解,而最长递增子序列中 dp[N] 不是最终解,因为以 SN 为结尾的最长递增子序列不一定是整个序列最长递增子序列,需要遍历一遍 dp 数组找到最大者。 + +```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]); + } + } + return dp[n1][n2]; +} +``` + +### 0-1 背包 + +有一个容量为 N 的背包,要用这个背包装下物品的价值最大,这些物品有两个属性:体积 w 和价值 v。 + +定义一个二维数组 dp 存储最大价值,其中 dp[i][j] 表示体积不超过 j 的情况下,前 i 件物品能达到的最大价值。设第 i 件物品体积为 w,价值为 v,根据第 i 件物品是否添加到背包中,可以分两种情况讨论: + +① 第 i 件物品没添加到背包,总体积不超过 j 的前 i 件物品的最大价值就是总体积不超过 j 的前 i-1 件物品的最大价值,dp[i][j] = dp[i-1][j]。 +② 第 i 件物品添加到背包中,dp[i][j] = dp[i-1][j-w] + v。 + +第 i 件物品可添加也可以不添加,取决于哪种情况下最大价值更大。 + +综上,0-1 背包的状态转移方程为: + +

    + +```java +public int knapsack(int W, int N, int[] weights, int[] values) { + int[][] dp = new int[N][W]; + for (int i = W - 1; i >= 0; i--) { + dp[0][i] = i > weights[0] ? values[0] : 0; + } + for (int i = 1; i < N; i++) { + for (int j = W - 1; j >= weights[i]; j--) { + dp[i][j] = Math.max(dp[i - 1][j], dp[i - 1][j - weights[i]] + values[i]); + } + for (int j = weights[i - 1] - 1; j >= 0; j--) { + dp[i][j] = dp[i - 1][j]; + } + } + return dp[N - 1][W - 1]; +} +``` + +**空间优化** + +在程序实现时可以对 0-1 背包做优化。观察状态转移方程可以知道,前 i 件物品的状态仅由前 i-1 件物品的状态有关,因此可以将 dp 定义为一维数组,其中 dp[j] 既可以表示 dp[i-1][j] 也可以表示 dp[i][j]。此时, + +

    + +因为 dp[j-w] 表示 dp[i-1][j-w],因此不能先求 dp[i][j-w] 防止将 dp[i-1][j-w] 覆盖。也就是说要先计算 dp[i][j] 再计算 dp[i][j-w],在程序实现时需要按倒序来循环求解。 + +**无法使用贪心算法的解释** + +0-1 背包问题无法使用贪心算法来求解,也就是说不能按照先添加性价比最高的物品来达到最优,这是因为这种方式可能造成背包空间的浪费,从而无法达到最优。考虑下面的物品和一个容量为 5 的背包,如果先添加物品 0 再添加物品 1,那么只能存放的价值为 16,浪费了大小为 2 的空间。最优的方式是存放物品 1 和物品 2,价值为 22. + +| id | w | v | v/w | +| --- | --- | --- | --- | +| 0 | 1 | 6 | 6 | +| 1 | 2 | 10 | 5 | +| 2 | 3 | 12 | 4 | + +**变种** + +完全背包:物品可以无限个,可以转换为 0-1 背包,令每种物品的体积和价值变为 1/2/4... 倍数,把它们都当成一个新物品,然后一种物品只能添加一次。 + +多重背包:物品数量有限制,同样可以转换为 0-1 背包。 + +多维费用背包:物品不仅有重量,还有体积,同时考虑这两种限制。 + +其它:物品之间相互约束或者依赖。 + +**划分数组为和相等的两部分** + +[Leetcode : 416. Partition Equal Subset Sum (Medium)](https://leetcode.com/problems/partition-equal-subset-sum/description/) + +可以看成一个背包大小为 sum/2 的 0-1 背包问题,但是也有不同的地方,这里没有价值属性,并且背包必须被填满。 + +以下实现使用了空间优化。 + +```java +public boolean canPartition(int[] nums) { + int sum = 0; + for (int num : nums) { + sum += num; + } + if (sum % 2 != 0) { + return false; + } + int W = sum / 2; + boolean[] dp = new boolean[W + 1]; + int n = nums.length; + for(int i = 0; i <= W; i++) { + if(nums[0] == i) dp[i] = true; + } + for(int i = 1; i < n; i++) { + for(int j = W; j >= nums[i]; j--) { + dp[j] = dp[j] || dp[j - nums[i]]; + } + } + + return dp[W]; +} +``` + +**字符串按单词列表分割** + +[Leetcode : 139. Word Break (Medium)](https://leetcode.com/problems/word-break/description/) + +```html +s = "leetcode", +dict = ["leet", "code"]. +Return true because "leetcode" can be segmented as "leet code". +``` + +```java +public boolean wordBreak(String s, List wordDict) { + int n = s.length(); + boolean[] dp = new boolean[n + 1]; + dp[0] = true; + for (int i = 1; i <= n; i++) { + for (String word : wordDict) { + if (word.length() <= i + && word.equals(s.substring(i - word.length(), i))) { + dp[i] = dp[i] || dp[i - word.length()]; + } + } + } + return dp[n]; +} +``` + +**改变一组数的正负号使得它们的和为一给定数** + +[Leetcode : 494. Target Sum (Medium)](https://leetcode.com/problems/target-sum/description/) + +```html +Input: nums is [1, 1, 1, 1, 1], S is 3. +Output: 5 +Explanation: + +-1+1+1+1+1 = 3 ++1-1+1+1+1 = 3 ++1+1-1+1+1 = 3 ++1+1+1-1+1 = 3 ++1+1+1+1-1 = 3 + +There are 5 ways to assign symbols to make the sum of nums be target 3. +``` + +该问题可以转换为 subset sum 问题,从而使用 0-1 背包的方法来求解。可以将这组数看成两部分,P 和 N,其中 P 使用正号,N 使用负号,有以下推导: + +```html + sum(P) - sum(N) = target +sum(P) + sum(N) + sum(P) - sum(N) = target + sum(P) + sum(N) + 2 * sum(P) = target + sum(nums) +``` + +因此只要找到一个子集,令它们都取正号,并且和等于 (target + sum(nums))/2,就证明存在解。 + +```java +public int findTargetSumWays(int[] nums, int S) { + int sum = 0; + for (int num : nums) { + sum += num; + } + if (sum < S || (sum + S) % 2 == 1) { + return 0; + } + return subsetSum(nums, (sum + S) >>> 1); +} + +private int subsetSum(int[] nums, int targetSum) { + Arrays.sort(nums); + int[] dp = new int[targetSum + 1]; + dp[0] = 1; + for (int i = 0; i < nums.length; i++) { + int num = nums[i]; + for (int j = targetSum; j >= num; j--) { + dp[j] = dp[j] + dp[j - num]; + } + } + return dp[targetSum]; +} +``` + +**01 字符构成最多的字符串** + +[Leetcode : 474. Ones and Zeroes (Medium)](https://leetcode.com/problems/ones-and-zeroes/description/) + +```html +Input: Array = {"10", "0001", "111001", "1", "0"}, m = 5, n = 3 +Output: 4 + +Explanation: This are totally 4 strings can be formed by the using of 5 0s and 3 1s, which are “10,”0001”,”1”,”0” +``` + +这是一个多维费用的 0-1 背包问题,有两个背包大小,0 的数量和 1 的数量。 + +```java +public int findMaxForm(String[] strs, int m, int n) { + if (strs == null || strs.length == 0) return 0; + int l = strs.length; + int[][] dp = new int[m + 1][n + 1]; + for (int i = 0; i < l; i++) { + String s = strs[i]; + int ones = 0, zeros = 0; + for (char c : s.toCharArray()) { + if (c == '0') zeros++; + else if (c == '1') ones++; + } + for (int j = m; j >= zeros; j--) { + for (int k = n; k >= ones; k--) { + if (zeros <= j && ones <= k) { + dp[j][k] = Math.max(dp[j][k], dp[j - zeros][k - ones] + 1); + } + } + } + } + return dp[m][n]; +} +``` + +**找零钱** + +[Leetcode : 322. Coin Change (Medium)](https://leetcode.com/problems/coin-change/description/) + +题目描述:给一些面额的硬币,要求用这些硬币来组成给定面额的钱数,并且使得硬币数量最少。硬币可以重复使用。 + +这是一个完全背包问题,完全背包问题和 0-1 背包问题在实现上唯一的不同是,第二层循环是从 0 开始的,而不是从尾部开始。 + +```java +public int coinChange(int[] coins, int amount) { + int[] dp = new int[amount + 1]; + Arrays.fill(dp, amount + 1); + dp[0] = 0; + for (int i = 1; i <= amount; i++) { + for (int j = 0; j < coins.length; j++) { + if (coins[j] <= i) { + dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1); + } + } + } + return dp[amount] > amount ? -1 : dp[amount]; +} +``` + +**组合总和** + +[Leetcode : 377. Combination Sum IV (Medium)](https://leetcode.com/problems/combination-sum-iv/description/) + +```html +nums = [1, 2, 3] +target = 4 + +The possible combination ways are: +(1, 1, 1, 1) +(1, 1, 2) +(1, 2, 1) +(1, 3) +(2, 1, 1) +(2, 2) +(3, 1) + +Note that different sequences are counted as different combinations. + +Therefore the output is 7. +``` + +```java +public int combinationSum4(int[] nums, int target) { + int[] dp = new int[target + 1]; + dp[0] = 1; + for (int i = 1; i <= target; i++) { + for (int j = 0; j < nums.length; j++) { + if(nums[j] <= i) { + dp[i] += dp[i - nums[j]]; + } + } + } + return dp[target]; +} +``` + +**只能进行两次的股票交易** + +[Leetcode : 123. Best Time to Buy and Sell Stock III (Hard)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iii/description/) + +```java +public int maxProfit(int[] prices) { + int firstBuy = Integer.MIN_VALUE, firstSell = 0; + int secondBuy = Integer.MIN_VALUE, secondSell = 0; + for (int curPrice : prices) { + if (firstBuy < -curPrice) firstBuy = -curPrice; + if (firstSell < firstBuy + curPrice) firstSell = firstBuy + curPrice; + if (secondBuy < firstSell - curPrice) secondBuy = firstSell - curPrice; + if (secondSell < secondBuy + curPrice) secondSell = secondBuy + curPrice; + } + return secondSell; +} +``` + +**只能进行 k 次的股票交易** + +[Leetcode : 188. Best Time to Buy and Sell Stock IV (Hard)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-iv/description/) + +```html +dp[i, j] = max(dp[i, j-1], prices[j] - prices[jj] + dp[i-1, jj]) { jj in range of [0, j-1] } = max(dp[i, j-1], prices[j] + max(dp[i-1, jj] - prices[jj])) +``` + +```java +public int maxProfit(int k, int[] prices) { + int n = prices.length; + if (k >= n/2) { + int maxPro = 0; + for (int i = 1; i < n; i++) { + if (prices[i] > prices[i-1]) + maxPro += prices[i] - prices[i-1]; + } + return maxPro; + } + int[][] dp = new int[k + 1][n]; + for (int i = 1; i <= k; i++) { + int localMax = dp[i - 1][0] - prices[0]; + for (int j = 1; j < n; j++) { + dp[i][j] = Math.max(dp[i][j - 1], prices[j] + localMax); + localMax = Math.max(localMax, dp[i - 1][j] - prices[j]); + } + } + return dp[k][n - 1]; +} +``` + +### 数组区间 + +**数组区间和** + +[Leetcode : 303. Range Sum Query - Immutable (Easy)](https://leetcode.com/problems/range-sum-query-immutable/description/) + +求区间 i \~ j 的和,可以转换为 sum[j] - sum[i-1],其中 sum[i] 为 0 \~ j 的和。 + +```java +class NumArray { + + int[] nums; + + public NumArray(int[] nums) { + for(int i = 1; i < nums.length; i++) + nums[i] += nums[i - 1]; + this.nums = nums; + } + + public int sumRange(int i, int j) { + return i == 0 ? nums[j] : nums[j] - nums[i - 1]; + } +} +``` + +**子数组最大的和** + +[Leetcode : 53. Maximum Subarray (Easy)](https://leetcode.com/problems/maximum-subarray/description/) + +令 sum[i] 为以 num[i] 为结尾的子数组最大的和,可以由 sum[i-1] 得到 sum[i] 的值,如果 sum[i-1] 小于 0,那么以 num[i] 为结尾的子数组不能包含前面的内容,因为加上前面的部分,那么和一定会比 num[i] 还小。 + +```java +public int maxSubArray(int[] nums) { + int n = nums.length; + int[] sum = new int[n]; + sum[0] = nums[0]; + int max = sum[0]; + for(int i = 1; i < n; i++){ + sum[i] = (sum[i-1] > 0 ? sum[i-1] : 0) + nums[i]; + max = Math.max(max, sum[i]); + } + return max; +} +``` + +空间复杂度可以优化成 O(1) 空间复杂度 + +```java +public int maxSubArray(int[] nums) { + int max = nums[0]; + int oldsum = nums[0]; + for (int i = 1; i < nums.length; i++) { + oldsum = (oldsum > 0 ? oldsum: 0) + nums[i]; + max = Math.max(max, oldsum); + } + return max; +} +``` + +**数组中等差递增子区间的个数** + +[Leetcode : 413. Arithmetic Slices (Medium)](https://leetcode.com/problems/arithmetic-slices/description/) + +```html +A = [1, 2, 3, 4] + +return: 3, for 3 arithmetic slices in A: [1, 2, 3], [2, 3, 4] and [1, 2, 3, 4] itself. +``` + +对于 (1,2,3,4),它有三种组成递增子区间的方式,而对于 (1,2,3,4,5),它组成递增子区间的方式除了 (1,2,3,4) 的三种外还多了一种,即 (1,2,3,4,5),因此 dp[i] = dp[i - 1] + 1。 + +```java +public int numberOfArithmeticSlices(int[] A) { + int n = A.length; + int[] dp = new int[n]; + for(int i = 2; i < n; i++) { + if(A[i] - A[i - 1] == A[i - 1] - A[i - 2]) { + dp[i] = dp[i - 1] + 1; + } + } + int ret = 0; + for(int cnt : dp) { + ret += cnt; + } + return ret; +} +``` + +### 字符串编辑 + +**删除两个字符串的字符使它们相等** + +[Leetcode : 583. Delete Operation for Two Strings (Medium)](https://leetcode.com/problems/delete-operation-for-two-strings/description/) + +可以转换为求两个字符串的最长公共子序列问题。 + +```java +public int minDistance(String word1, String word2) { + int m = word1.length(), n = word2.length(); + int[][] dp = new int[m + 1][n + 1]; + for (int i = 0; i <= m; i++) { + for (int j = 0; j <= n; j++) { + if (i == 0 || j == 0) continue; + dp[i][j] = word1.charAt(i - 1) == word2.charAt(j - 1) ? dp[i - 1][j - 1] + 1 + : Math.max(dp[i][j - 1], dp[i - 1][j]); + } + } + return m + n - 2 * dp[m][n]; +} +``` + +**修改一个字符串称为另一个字符串** // TODO + +[Leetcode : 72. Edit Distance (Hard)](https://leetcode.com/problems/edit-distance/description/) + +### 其它问题 + +**需要冷却期的股票交易** + +[Leetcode : 309. Best Time to Buy and Sell Stock with Cooldown(Medium)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/description/) + +题目描述:交易之后需要有一天的冷却时间。 + +

    + +```html +s0[i] = max(s0[i - 1], s2[i - 1]); // Stay at s0, or rest from s2 +s1[i] = max(s1[i - 1], s0[i - 1] - prices[i]); // Stay at s1, or buy from s0 +s2[i] = s1[i - 1] + prices[i]; // Only one way from s1 +``` + +```java +public int maxProfit(int[] prices) { + if (prices == null || prices.length == 0) return 0; + int n = prices.length; + int[] s0 = new int[n]; + int[] s1 = new int[n]; + int[] s2 = new int[n]; + s0[0] = 0; + s1[0] = -prices[0]; + s2[0] = Integer.MIN_VALUE; + for (int i = 1; i < n; i++) { + s0[i] = Math.max(s0[i - 1], s2[i - 1]); + s1[i] = Math.max(s1[i - 1], s0[i - 1] - prices[i]); + s2[i] = Math.max(s2[i - 1], s1[i - 1] + prices[i]); + } + return Math.max(s0[n - 1], s2[n - 1]); +} +``` + +**统计从 0 \~ n 每个数的二进制表示中 1 的个数** + +[Leetcode : 338. Counting Bits (Medium)](https://leetcode.com/problems/counting-bits/description/) + +对于数字 6(110),它可以看成是数字 2(10) 前面加上一个 1 ,因此 dp[i] = dp[i&(i-1)] + 1; + +```java + public int[] countBits(int num) { + int[] ret = new int[num + 1]; + for(int i = 1; i <= num; i++){ + ret[i] = ret[i&(i-1)] + 1; + } + return ret; + } +``` + +**一组整数对能够构成的最长链** + +[Leetcode : 646. Maximum Length of Pair Chain (Medium)](https://leetcode.com/problems/maximum-length-of-pair-chain/description/) + +对于 (a, b) 和 (c, d) ,如果 b < c,则它们可以构成一条链。 + +```java +public int findLongestChain(int[][] pairs) { + if(pairs == null || pairs.length == 0) { + return 0; + } + Arrays.sort(pairs, (a, b) -> (a[0] - b[0])); + int n = pairs.length; + int[] dp = new int[n]; + Arrays.fill(dp, 1); + for(int i = 0; i < n; i++) { + for(int j = 0; j < i; j++) { + if(pairs[i][0] > pairs[j][1]){ + dp[i] = Math.max(dp[i], dp[j] + 1); + } + } + } + + int ret = 0; + for(int num : dp) { + ret = Math.max(ret, num); + } + return ret; +} +``` + +**买入和售出股票最大的收益** + +[Leetcode : 121. Best Time to Buy and Sell Stock (Easy)](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/description/) + +只进行一次交易。 + +只要记录前面的最小价格,将这个最小价格作为买入价格,然后将当前的价格作为售出价格,查看这个价格是否是当前的最大价格。 + +```java +public int maxProfit(int[] prices) { + int n = prices.length; + if(n == 0) return 0; + int soFarMin = prices[0]; + int max = 0; + for(int i = 1; i < n; i++){ + if(soFarMin > prices[i]) soFarMin = prices[i]; + else max = Math.max(max, prices[i] - soFarMin); + } + return max; +} +``` + +**复制粘贴字符** + +[Leetcode : 650. 2 Keys Keyboard (Medium)](https://leetcode.com/problems/2-keys-keyboard/description/) + +```java +public int minSteps(int n) { + int[] dp = new int[n + 1]; + for (int i = 2; i <= n; i++) { + dp[i] = i; + for (int j = i - 1; j >= 0; j--) { + if (i % j == 0) { + dp[i] = dp[j] + dp[i / j]; + break; + } + } + } + return dp[n]; +} +``` + +```java +public int minSteps(int n) { + if (n == 1) return 0; + for (int i = 2; i <= Math.sqrt(n); i++) { + if (n % i == 0) return i + minSteps(n / i); + } + return n; +} +``` + +## 数学 + +### 素数 + +**素数分解** + +每一个数都可以分解成素数的乘积,例如 84 = 22 \* 31 \* 50 \* 71 \* 110 \* 130 \* 170 \* … + +**整除** + +令 x = 2m0 \* 3m1 \* 5m2 \* 7m3 \* 11m4 \* … +令 y = 2n0 \* 3n1 \* 5n2 \* 7n3 \* 11n4 \* … + +如果 x 整除 y(y mod x == 0),则对于所有 i,mi <= ni。 + +x 和 y 的 **最大公约数** 为:gcd(x,y) = 2min(m0,n0) \* 3min(m1,n1) \* 5min(m2,n2) \* ... + +x 和 y 的 **最小公倍数** 为:lcm(x,y) = 2max(m0,n0) \* 3max(m1,n1) \* 5max(m2,n2) \* ... + +**生成素数序列** + +[Leetcode : 204. Count Primes (Easy)](https://leetcode.com/problems/count-primes/description/) + +埃拉托斯特尼筛法在每次找到一个素数时,将能被素数整除的数排除掉。 + +```java +public int countPrimes(int n) { + boolean[] notPrimes = new boolean[n + 1]; + int cnt = 0; + for(int i = 2; i < n; i++){ + if(notPrimes[i]) continue; + cnt++; + // 从 i * i 开始,因为如果 k < i,那么 k * i 在之前就已经被去除过了 + for(long j = (long) i * i; j < n; j += i){ + notPrimes[(int) j] = true; + } + } + return cnt; +} +``` + +### 最大公约数 + +```java +int gcd(int a, int b) { + if (b == 0) return a; + return gcd(b, a % b); +} +``` + +最大公倍数为两数的乘积除以最大公约数。 + +```java +int lcm(int a, int b){ + return a * b / gcd(a, b); +} +``` + +对于最大公约数问题,因为需要计算 a % b ,而这个操作是比较耗时的,可以使用 [编程之美:2.7]() 的方法,利用减法和移位操作来替换它。 + +对于 a 和 b 的最大公约数 f(a, b),有: + +1\. 如果 a 和 b 均为偶数,f(a, b) = 2\*f(a/2, b/2); +2\. 如果 a 是偶数 b 是奇数,f(a, b) = f(a/2, b); +3\. 如果 b 是偶数 a 是奇数,f(a, b) = f(a, b/2); +4\. 如果 a 和 b 均为奇数,f(a, b) = f(a, a-b); + +乘 2 和除 2 都可以转换为移位操作。 + +### 进制转换 + +Java 中 static String toString(int num, int radix) 可以将一个整数装换为 redix 进制表示的字符串。 + +**7 进制** + +[Leetcode : 504. Base 7 (Easy)](https://leetcode.com/problems/base-7/description/) + +```java +public String convertToBase7(int num) { + if (num < 0) { + return '-' + convertToBase7(-num); + } + if (num < 7) { + return num + ""; + } + return convertToBase7(num / 7) + num % 7; +} +``` + +**16 进制** + +[Leetcode : 405. Convert a Number to Hexadecimal (Easy)](https://leetcode.com/problems/convert-a-number-to-hexadecimal/description/) + +```java +public String toHex(int num) { + char[] map = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'}; + if(num == 0) return "0"; + String ret = ""; + while(num != 0){ + ret = map[(num & 0b1111)] + ret; + num >>>= 4; + } + return ret; +} +``` + +### 阶乘 + +**统计阶乘尾部有多少个 0** + +[Leetcode : 172. Factorial Trailing Zeroes (Easy)](https://leetcode.com/problems/factorial-trailing-zeroes/description/) + +尾部的 0 由 2 * 5 得来,2 的数量明显多于 5 的数量,因此只要统计有多少个 5 即可。 + +对于一个数 N,它所包含 5 的个数为:N/5 + N/52 + N/53 + ...,其中 N/5 表示不大于 N 的数中 5 的倍数贡献一个 5,N/52 表示不大于 N 的数中 52 的倍数再贡献一个 5 ...。 + +```java +public int trailingZeroes(int n) { + return n == 0 ? 0 : n / 5 + trailingZeroes(n / 5); +} +``` + +如果统计的是 N! 的二进制表示中最低位 1 的位置,只要统计有多少个 2 即可,该题目出自 [编程之美:2.2](#) 。和求解有多少个 5 一样,2 的个数为 N/2 + N/22 + N/23 + ... + +### 字符串加法减法 + +**二进制加法** + +[Leetcode : 67. Add Binary (Easy)](https://leetcode.com/problems/add-binary/description/) + +```html +a = "11" +b = "1" +Return "100". +``` + +```java +public String addBinary(String a, String b) { + int i = a.length() - 1, j = b.length() - 1, carry = 0; + String str = ""; + while(i >= 0 || j >= 0){ + if(i >= 0 && a.charAt(i--) == '1') carry++; + if(j >= 0 && b.charAt(j--) == '1') carry++; + str = (carry % 2) + str; + carry /= 2; + } + if(carry == 1) str = "1" + str; + return str; +} +``` + +**字符串加法** + +[Leetcode : 415. Add Strings (Easy)](https://leetcode.com/problems/add-strings/description/) + +字符串的值为非负整数 + +```java +public String addStrings(String num1, String num2) { + StringBuilder sb = new StringBuilder(); + int carry = 0; + for(int i = num1.length() - 1, j = num2.length() - 1; i >= 0 || j >= 0 || carry == 1; i--, j--){ + int x = i < 0 ? 0 : num1.charAt(i) - '0'; + int y = j < 0 ? 0 : num2.charAt(j) - '0'; + sb.append((x + y + carry) % 10); + carry = (x + y + carry) / 10; + } + return sb.reverse().toString(); +} +``` + +### 相遇问题 + +**改变数组元素使所有的数组元素都相等** + +[Leetcode : 462. Minimum Moves to Equal Array Elements II (Medium)](https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/description/) + +```html +Input: +[1,2,3] + +Output: +2 + +Explanation: +Only two moves are needed (remember each move increments or decrements one element): + +[1,2,3] => [2,2,3] => [2,2,2] +``` + +每次可以对一个数组元素加一或者减一,求最小的改变次数。 + +这是个典型的相遇问题,移动距离最小的方式是所有元素都移动到中位数。理由如下: + +设 m 为中位数。a 和 b 是 m 两边的两个元素,且 b > a。要使 a 和 b 相等,它们总共移动的次数为 b - a,这个值等于 (b - m) + (m - a),也就是把这两个数移动到中位数的移动次数。 + +设数组长度为 N,则可以找到 N/2 对 a 和 b 的组合,使它们都移动到 m 的位置。 + +**解法 1** + +先排序,时间复杂度:O(NlgN) + +```java +public int minMoves2(int[] nums) { + Arrays.sort(nums); + int ret = 0; + int l = 0, h = nums.length - 1; + while(l <= h) { + ret += nums[h] - nums[l]; + l++; + h--; + } + return ret; +} +``` + +**解法 2** + +使用快速排序找到中位数,时间复杂度 O(N) + +```java +public int minMoves2(int[] nums) { + int ret = 0; + int n = nums.length; + int median = quickSelect(nums, 0, n - 1, n / 2 + 1); + for(int num : nums) ret += Math.abs(num - median); + return ret; +} + +private int quickSelect(int[] nums, int start, int end, int k) { + int l = start, r = end, privot = nums[(l + r) / 2]; + while(l <= r) { + while(nums[l] < privot) l++; + while(nums[r] > privot) r--; + if(l >= r) break; + swap(nums, l, r); + l++; r--; + } + int left = l - start + 1; + if(left > k) return quickSelect(nums, start, l - 1, k); + if(left == k && l == r) return nums[l]; + int right = r - start + 1; + return quickSelect(nums, r + 1, end, k - right); +} + +private void swap(int[] nums, int i, int j) { + int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; +} +``` + +### 多数投票问题 + +**数组中出现次数多于 n / 2 的元素** + +[Leetcode : 169. Majority Element (Easy)](https://leetcode.com/problems/majority-element/description/) + +先对数组排序,最中间那个数出现次数一定多于 n / 2 + +```java +public int majorityElement(int[] nums) { + Arrays.sort(nums); + return nums[nums.length / 2]; +} +``` + +可以利用 Boyer-Moore Majority Vote Algorithm 来解决这个问题,使得时间复杂度为 O(n)。可以这么理解该算法:使用 cnt 来统计一个元素出现的次数,当遍历到的元素和统计元素不想等时,令 cnt--。如果前面查找了 i 个元素,且 cnt == 0 ,说明前 i 个元素没有 majority,或者有 majority,但是出现的次数少于 i / 2 ,因为如果多于 i / 2 的话 cnt 就一定不会为 0 。此时剩下的 n - i 个元素中,majority 的数目依然多于 (n - i) / 2,因此继续查找就能找出 majority。 + +```java +public int majorityElement(int[] nums) { + int cnt = 0, majority = 0; + for(int i = 0; i < nums.length; i++){ + if(cnt == 0) { + majority = nums[i]; + cnt++; + } + else if(majority == nums[i]) cnt++; + else cnt--; + } + return majority; +} +``` + +### 其它 + +**平方数** + +[Leetcode : 367. Valid Perfect Square (Easy)](https://leetcode.com/problems/valid-perfect-square/description/) + +```html +Input: 16 +Returns: True +``` + +平方序列:1,4,9,16,.. +间隔:3,5,7,... + +间隔为等差数列,使用这个特性可以得到从 1 开始的平方序列。 + +```java +public boolean isPerfectSquare(int num) { + int subNum = 1; + while (num > 0) { + num -= subNum; + subNum += 2; + } + return num == 0; +} +``` + +**3 的 n 次方** + +[Leetcode : 326. Power of Three (Easy)](https://leetcode.com/problems/power-of-three/description/) + +```java +public boolean isPowerOfThree(int n) { + return n > 0 && (1162261467 % n == 0); +} +``` + +**找出数组中的乘积最大的三个数** + +[Leetcode : 628. Maximum Product of Three Numbers (Easy)](https://leetcode.com/problems/maximum-product-of-three-numbers/description/) + +```html +Input: [1,2,3,4] +Output: 24 +``` + +```java +public int maximumProduct(int[] nums) { + int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE, max3 = Integer.MIN_VALUE, min1 = Integer.MAX_VALUE, min2 = Integer.MAX_VALUE; + for (int n : nums) { + if (n > max1) { + max3 = max2; + max2 = max1; + max1 = n; + } else if (n > max2) { + max3 = max2; + max2 = n; + } else if (n > max3) { + max3 = n; + } + + if (n < min1) { + min2 = min1; + min1 = n; + } else if (n < min2) { + min2 = n; + } + } + return Math.max(max1*max2*max3, max1*min1*min2); +} +``` + +**乘积数组** + +[Leetcode : 238. Product of Array Except Self (Medium)](https://leetcode.com/problems/product-of-array-except-self/description/) + +```html +For example, given [1,2,3,4], return [24,12,8,6]. +``` + +题目描述:给定一个数组,创建一个新数组,新数组的每个元素为原始数组中除了该位置上的元素之外所有元素的乘积。 + +题目要求:时间复杂度为 O(n),并且不能使用除法。 + +```java +public int[] productExceptSelf(int[] nums) { + int n = nums.length; + int[] ret = new int[n]; + ret[0] = 1; + for(int i = 1; i < n; i++) { + ret[i] = ret[i - 1] * nums[i - 1]; + } + int right = 1; + for(int i = n - 1; i >= 0; i--) { + ret[i] *= right; + right *= nums[i]; + } + return ret; +} +``` + +# 数据结构相关 + +## 栈和队列 + +**用栈实现队列** + +[Leetcode : 232. Implement Queue using Stacks (Easy)](https://leetcode.com/problems/implement-queue-using-stacks/description/) + +一个栈实现: + +```java +class MyQueue { + private Stack st = new Stack(); + + public void push(int x) { + Stack temp = new Stack(); + while(!st.isEmpty()){ + temp.push(st.pop()); + } + st.push(x); + while(!temp.isEmpty()){ + st.push(temp.pop()); + } + } + + public int pop() { + return st.pop(); + } + + public int peek() { + return st.peek(); + } + + public boolean empty() { + return st.isEmpty(); + } +} +``` + +两个栈实现: + +```java +class MyQueue { + private Stack in = new Stack(); + private Stack out = new Stack(); + + public void push(int x) { + in.push(x); + } + + public int pop() { + in2out(); + return out.pop(); + } + + public int peek() { + in2out(); + return out.peek(); + } + + private void in2out(){ + if(out.isEmpty()){ + while(!in.isEmpty()){ + out.push(in.pop()); + } + } + } + + public boolean empty() { + return in.isEmpty() && out.isEmpty(); + } +} +``` + +**用队列实现栈** + +[Leetcode : 225. Implement Stack using Queues (Easy)](https://leetcode.com/problems/implement-stack-using-queues/description/) + +```java +class MyStack { + + private Queue queue; + + public MyStack() { + queue = new LinkedList<>(); + } + + public void push(int x) { + queue.add(x); + for(int i = 1; i < queue.size(); i++){ // 翻转 + queue.add(queue.remove()); + } + } + + public int pop() { + return queue.remove(); + } + + public int top() { + return queue.peek(); + } + + public boolean empty() { + return queue.isEmpty(); + } +} +``` + +**最小值栈** + +[Leetcode : 155. Min Stack (Easy)](https://leetcode.com/problems/min-stack/description/) + +用两个栈实现,一个存储数据,一个存储最小值。 + +```java +class MinStack { + + private Stack dataStack; + private Stack minStack; + private int min; + + public MinStack() { + dataStack = new Stack<>(); + minStack = new Stack<>(); + min = Integer.MAX_VALUE; + } + + public void push(int x) { + dataStack.add(x); + if(x < min) { + min = x; + } + minStack.add(min); + } + + public void pop() { + dataStack.pop(); + minStack.pop(); + if(!minStack.isEmpty()) { + min = minStack.peek(); + } else{ + min = Integer.MAX_VALUE; + } + } + + public int top() { + return dataStack.peek(); + } + + public int getMin() { + return min; + } +} +``` + +对于实现最小值队列问题,可以先将队列使用栈来实现,然后就将问题转换为最小值栈,这个问题出现在 编程之美:3.7。 + +**用栈实现括号匹配** + +[Leetcode : 20. Valid Parentheses (Easy)](https://leetcode.com/problems/valid-parentheses/description/) + +```html +"()[]{}" + +Output : true +``` + +```java +public boolean isValid(String s) { + Stack stack = new Stack<>(); + for(int i = 0; i < s.length(); i++){ + char c = s.charAt(i); + if(c == '(' || c == '{' || c == '[') stack.push(c); + else{ + if(stack.isEmpty()) return false; + char cStack = stack.pop(); + if(c == ')' && cStack != '(' || + c == ']' && cStack != '[' || + c == '}' && cStack != '{' ) { + return false; + } + } + } + return stack.isEmpty(); +} +``` + +**数组中元素与下一个比它大的元素之间的距离** + +```html +Input: [73, 74, 75, 71, 69, 72, 76, 73] +Output: [1, 1, 4, 2, 1, 1, 0, 0] +``` + +[Leetcode : 739. Daily Temperatures (Medium)](https://leetcode.com/problems/daily-temperatures/description/) + +在遍历数组时用 Stack 把数组中的数存起来,如果当前遍历的数比栈顶元素来的大,说明栈顶元素的下一个比它大的数就是当前元素。 + +```java +public int[] dailyTemperatures(int[] temperatures) { + int n = temperatures.length; + int[] ret = new int[n]; + Stack stack = new Stack<>(); + for(int i = 0; i < n; i++) { + while(!stack.isEmpty() && temperatures[i] > temperatures[stack.peek()]) { + int idx = stack.pop(); + ret[idx] = i - idx; + } + stack.add(i); + } + return ret; +} +``` + +**在另一个数组中比当前元素大的下一个元素** + +[Leetcode : 496. Next Greater Element I (Easy)](https://leetcode.com/problems/next-greater-element-i/description/) + +```html +Input: nums1 = [4,1,2], nums2 = [1,3,4,2]. +Output: [-1,3,-1] +``` + +```java +public int[] nextGreaterElement(int[] nums1, int[] nums2) { + Map map = new HashMap<>(); + Stack stack = new Stack<>(); + for(int num : nums2){ + while(!stack.isEmpty() && num > stack.peek()){ + map.put(stack.pop(), num); + } + stack.add(num); + } + int[] ret = new int[nums1.length]; + for(int i = 0; i < nums1.length; i++){ + if(map.containsKey(nums1[i])) ret[i] = map.get(nums1[i]); + else ret[i] = -1; + } + return ret; +} +``` + +**循环数组中比当前元素大的下一个元素** + +[Leetcode : 503. Next Greater Element II (Medium)](https://leetcode.com/problems/next-greater-element-ii/description/) + +```java +public int[] nextGreaterElements(int[] nums) { + int n = nums.length, next[] = new int[n]; + Arrays.fill(next, -1); + Stack stack = new Stack<>(); + for (int i = 0; i < n * 2; i++) { + int num = nums[i % n]; + while (!stack.isEmpty() && nums[stack.peek()] < num) + next[stack.pop()] = num; + if (i < n) stack.push(i); + } + return next; +} +``` + +## 哈希表 + +利用 Hash Table 可以快速查找一个元素是否存在等问题,但是需要一定的空间来存储。在优先考虑时间复杂度的情况下,可以利用 Hash Table 这种空间换取时间的做法。 + +Java 中的 **HashSet** 用于存储一个集合,并以 O(1) 的时间复杂度查找元素是否在集合中。 + +如果元素有穷,并且范围不大,那么可以用一个布尔数组来存储一个元素是否存在,例如对于只有小写字符的元素,就可以用一个长度为 26 的布尔数组来存储一个字符集合,使得空间复杂度降低为 O(1)。 + +Java 中的 **HashMap** 主要用于映射关系,从而把两个元素联系起来。 + +在对一个内容进行压缩或者其它转换时,利用 HashMap 可以把原始内容和转换后的内容联系起来。例如在一个简化 url 的系统中([Leetcdoe : 535. Encode and Decode TinyURL (Medium)](https://leetcode.com/problems/encode-and-decode-tinyurl/description/)),利用 HashMap 就可以存储精简后的 url 到原始 url 的映射,使得不仅可以显示简化的 url,也可以根据简化的 url 得到原始 url 从而定位到正确的资源。 + +HashMap 也可以用来对元素进行计数统计,此时键为元素,值为计数。和 HashSet 类似,如果元素有穷并且范围不大,可以用整型数组来进行统计。 + +**数组中的两个数和为给定值** + +[Leetcode : 1. Two Sum (Easy)](https://leetcode.com/problems/two-sum/description/) + +可以先对数组进行排序,然后使用双指针方法或者二分查找方法。这样做的时间复杂度为 O(nlgn),空间复杂度为 O(1)。 + +用 HashMap 存储数组元素和索引的映射,在访问到 nums[i] 时,判断 HashMap 中是否存在 target - nums[i] ,如果存在说明 target - nums[i] 所在的索引和 i 就是要找的两个数。该方法的时间复杂度为 O(n),空间复杂度为 O(n),使用空间来换取时间。 + +```java +public int[] twoSum(int[] nums, int target) { + HashMap map = new HashMap<>(); + for(int i = 0; i < nums.length; i++){ + if(map.containsKey(target - nums[i])) return new int[]{map.get(target - nums[i]), i}; + else map.put(nums[i], i); + } + return null; +} +``` + +**最长和谐序列** + +[Leetcode : 594. Longest Harmonious Subsequence (Easy)](https://leetcode.com/problems/longest-harmonious-subsequence/description/) + +```html +Input: [1,3,2,2,5,2,3,7] +Output: 5 +Explanation: The longest harmonious subsequence is [3,2,2,2,3]. +``` + +和谐序列中最大数和最小数只差正好为 1。 + +```java +public int findLHS(int[] nums) { + Map map = new HashMap<>(); + for (long num : nums) { + map.put(num, map.getOrDefault(num, 0) + 1); + } + int result = 0; + for (long key : map.keySet()) { + if (map.containsKey(key + 1)) { + result = Math.max(result, map.get(key + 1) + map.get(key)); + } + } + return result; +} +``` + +## 字符串 + +**两个字符串包含的字符是否完全相同** + +[Leetcode : 242. Valid Anagram (Easy)](https://leetcode.com/problems/valid-anagram/description/) + +```html +s = "anagram", t = "nagaram", return true. +s = "rat", t = "car", return false. +``` + +字符串只包含小写字符,总共有 26 个小写字符。可以用 Hash Table 来映射字符与出现次数,因为键值范围很小,因此可以使用长度为 26 的整型数组对字符串出现的字符进行统计,比较两个字符串出现的字符数量是否相同。 + +```java +public boolean isAnagram(String s, String t) { + int[] cnts = new int[26]; + for(int i = 0; i < s.length(); i++) cnts[s.charAt(i) - 'a'] ++; + for(int i = 0; i < t.length(); i++) cnts[t.charAt(i) - 'a'] --; + for(int i = 0; i < 26; i++) if(cnts[i] != 0) return false; + return true; +} +``` + +**字符串同构** + +[Leetcode : 205. Isomorphic Strings (Easy)](https://leetcode.com/problems/isomorphic-strings/description/) + +```html +Given "egg", "add", return true. +Given "foo", "bar", return false. +Given "paper", "title", return true. +``` + +记录一个字符上次出现的位置,如果两个字符串中某个字符上次出现的位置一样,那么就属于同构。 + +```java +public boolean isIsomorphic(String s, String t) { + int[] m1 = new int[256]; + int[] m2 = new int[256]; + for(int i = 0; i < s.length(); i++){ + if(m1[s.charAt(i)] != m2[t.charAt(i)]) { + return false; + } + m1[s.charAt(i)] = i + 1; + m2[t.charAt(i)] = i + 1; + } + return true; +} +``` + +**计算一组字符集合可以组成的回文字符串的最大长度** + +[Leetcode : 409. Longest Palindrome (Easy)](https://leetcode.com/problems/longest-palindrome/description/) + +```html +Input : "abccccdd" +Output : 7 +Explanation : One longest palindrome that can be built is "dccaccd", whose length is 7. +``` + +使用长度为 128 的整型数组来统计每个字符出现的个数,每个字符有偶数个可以用来构成回文字符串。因为回文字符串最中间的那个字符可以单独出现,所以如果有单独的字符就把它放到最中间。 + +```java +public int longestPalindrome(String s) { + int[] cnts = new int[128]; // ascii 码总共 128 个 + for(char c : s.toCharArray()) cnts[c]++; + int ret = 0; + for(int cnt : cnts) ret += (cnt / 2) * 2; + if(ret < s.length()) ret++; // 这个条件下 s 中一定有单个未使用的字符存在,可以把这个字符放到回文的最中间 + return ret; +} +``` + +**判断一个整数是否是回文数** + +[Leetcode : 9. Palindrome Number (Easy)](https://leetcode.com/problems/palindrome-number/description/) + +要求不能使用额外空间,也就不能将整数转换为字符串进行判断。 + +将整数分成左右两部分,右边那部分需要转置,然后判断这两部分是否相等。 + +```java +public boolean isPalindrome(int x) { + if(x == 0) return true; + if(x < 0) return false; + if(x % 10 == 0) return false; + int right = 0; + while(x > right){ + right = right * 10 + x % 10; + x /= 10; + } + return x == right || x == right / 10; +} +``` + +**回文子字符串** + +[Leetcode : 647. Palindromic Substrings (Medium)](https://leetcode.com/problems/palindromic-substrings/description/) + +```html +Input: "aaa" +Output: 6 +Explanation: Six palindromic strings: "a", "a", "a", "aa", "aa", "aaa". +``` + +解决方案是从字符串的某一位开始,尝试着去扩展子字符串。 + +```java +private int cnt = 0; +public int countSubstrings(String s) { + for(int i = 0; i < s.length(); i++) { + extendSubstrings(s, i, i); // 奇数长度 + extendSubstrings(s, i, i + 1); // 偶数长度 + } + return cnt; +} + +private void extendSubstrings(String s, int start, int end) { + while(start >= 0 && end < s.length() && s.charAt(start) == s.charAt(end)) { + start--; + end++; + cnt++; + } +} +``` + +**统计二进制字符串中连续 1 和连续 0 数量相同的子字符串个数** + +[Leetcode : 696. Count Binary Substrings (Easy)](https://leetcode.com/problems/count-binary-substrings/description/) + +```html +Input: "00110011" +Output: 6 +Explanation: There are 6 substrings that have equal number of consecutive 1's and 0's: "0011", "01", "1100", "10", "0011", and "01". +``` + +```java +public int countBinarySubstrings(String s) { + int preLen = 0, curLen = 1, ret = 0; + for(int i = 1; i < s.length(); i++){ + if(s.charAt(i) == s.charAt(i-1)) curLen++; + else{ + preLen = curLen; + curLen = 1; + } + + if(preLen >= curLen) ret++; + } + return ret; +} +``` + +**字符串循环移位包含** + +[ 编程之美:3.1](#) + +```html +s1 = AABCD, s2 = CDAA +Return : true +``` + +给定两个字符串 s1 和 s2 ,要求判定 s2 是否能够被 s1 做循环移位得到的字符串包含。 + +s1 进行循环移位的结果是 s1s1 的子字符串,因此只要判断 s2 是否是 s1s1 的子字符串即可。 + +**字符串循环移位** + +[ 编程之美:2.17](#) + +将字符串向右循环移动 k 位。 + +例如 abcd123 向右移动 3 位 得到 123abcd + +将 abcd123 中的 abcd 和 123 单独逆序,得到 dcba321,然后对整个字符串进行逆序,得到 123abcd。 + +**字符串中单词的翻转** + +[程序员代码面试指南](#) + +例如将 "I am a student" 翻转成 "student a am I" + +将每个单词逆序,然后将整个字符串逆序。 + +## 数组与矩阵 + +**把数组中的 0 移到末尾** + +[Leetcode : 283. Move Zeroes (Easy)](https://leetcode.com/problems/move-zeroes/description/) + +```html +For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0]. +``` + +```java +public void moveZeroes(int[] nums) { + int n = nums.length; + int idx = 0; + for(int i = 0; i < n; i++){ + if(nums[i] != 0) nums[idx++] = nums[i]; + } + while(idx < n){ + nums[idx++] = 0; + } +} +``` + +### 1-n 分布 + +**一个数组元素在 [1, n] 之间,其中一个数被替换为另一个数,找出丢失的数和重复的数** + +[Leetcode : 645. Set Mismatch (Easy)](https://leetcode.com/problems/set-mismatch/description/) + +```html +Input: nums = [1,2,2,4] +Output: [2,3] +``` + +最直接的方法是先对数组进行排序,这种方法时间复杂度为 O(nlogn)。本题可以以 O(n) 的时间复杂度、O(1) 空间复杂度来求解。 + +主要思想是让通过交换数组元素,使得数组上的元素在正确的位置上。 + +遍历数组,如果第 i 位上的元素不是 i + 1 ,那么就交换第 i 位 和 nums[i] - 1 位上的元素,使得 num[i] - 1 的元素为 nums[i] ,也就是该位的元素是正确的。交换操作需要循环进行,因为一次交换没办法使得第 i 位上的元素是正确的。但是要交换的两个元素可能就是重复元素,那么循环就可能永远进行下去,终止循环的方法是加上 nums[i] != nums[nums[i] - 1 条件。 + +类似题目: + +- [Leetcode :448. Find All Numbers Disappeared in an Array (Easy)](https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/description/),寻找所有丢失的元素 +- [Leetcode : 442. Find All Duplicates in an Array (Medium)](https://leetcode.com/problems/find-all-duplicates-in-an-array/description/),寻找所有重复的元素。 + +```java +public int[] findErrorNums(int[] nums) { + for(int i = 0; i < nums.length; i++){ + while(nums[i] != i + 1 && nums[i] != nums[nums[i] - 1]) { + swap(nums, i, nums[i] - 1); + } + } + + for(int i = 0; i < nums.length; i++){ + if(i + 1 != nums[i]) { + return new int[]{nums[i], i + 1}; + } + } + + return null; +} + +private void swap(int[] nums, int i, int j){ + int tmp = nums[i]; + nums[i] = nums[j]; + nums[j] = tmp; +} +``` + +**找出数组中重复的数,数组值在 [0, n-1] 之间** + +[Leetcode : 287. Find the Duplicate Number (Medium)](https://leetcode.com/problems/find-the-duplicate-number/description/) + +二分查找解法: + +```java +public int findDuplicate(int[] nums) { + int l = 1, h = nums.length - 1; + while (l <= h) { + int mid = l + (h - l) / 2; + int cnt = 0; + for (int i = 0; i < nums.length; i++) { + if (nums[i] <= mid) cnt++; + } + if (cnt > mid) h = mid - 1; + else l = mid + 1; + } + return l; +} +``` + +双指针解法,类似于有环链表中找出环的入口: + +```java +public int findDuplicate(int[] nums) { + int slow = nums[0], fast = nums[nums[0]]; + while (slow != fast) { + slow = nums[slow]; + fast = nums[nums[fast]]; + } + + fast = 0; + while (slow != fast) { + slow = nums[slow]; + fast = nums[fast]; + } + return slow; +} +``` + +### 有序矩阵 + +有序矩阵指的是行和列分别有序的矩阵。一般可以利用有序性使用二分查找方法。 + +```html +[ + [ 1, 5, 9], + [10, 11, 13], + [12, 13, 15] +] +``` + +**有序矩阵查找** + +[Leetocde : 240. Search a 2D Matrix II (Medium)](https://leetcode.com/problems/search-a-2d-matrix-ii/description/) + +```java +public boolean searchMatrix(int[][] matrix, int target) { + if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return false; + int m = matrix.length, n = matrix[0].length; + int row = 0, col = n - 1; + while (row < m && col >= 0) { + if (target == matrix[row][col]) return true; + else if (target < matrix[row][col]) col--; + else row++; + } + return false; +} +``` + +**有序矩阵的 Kth Element** + +[Leetcode : 378. Kth Smallest Element in a Sorted Matrix ((Medium))](https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/description/) + +```html +matrix = [ + [ 1, 5, 9], + [10, 11, 13], + [12, 13, 15] +], +k = 8, + +return 13. +``` + +解题参考:[Share my thoughts and Clean Java Code](https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/discuss/85173) + +二分查找解法: + +```java +public int kthSmallest(int[][] matrix, int k) { + int m = matrix.length, n = matrix[0].length; + int lo = matrix[0][0], hi = matrix[m - 1][n - 1]; + while(lo <= hi) { + int mid = lo + (hi - lo) / 2; + int cnt = 0; + for(int i = 0; i < m; i++) { + for(int j = 0; j < n && matrix[i][j] <= mid; j++) { + cnt++; + } + } + if(cnt < k) lo = mid + 1; + else hi = mid - 1; + } + return lo; +} +``` + +堆解法: + +```java +public int kthSmallest(int[][] matrix, int k) { + int m = matrix.length, n = matrix[0].length; + PriorityQueue pq = new PriorityQueue(); + for(int j = 0; j < n; j++) pq.offer(new Tuple(0, j, matrix[0][j])); + for(int i = 0; i < k - 1; i++) { // 小根堆,去掉 k - 1 个堆顶元素,此时堆顶元素就是第 k 的数 + Tuple t = pq.poll(); + if(t.x == m - 1) continue; + pq.offer(new Tuple(t.x + 1, t.y, matrix[t.x + 1][t.y])); + } + return pq.poll().val; +} + +class Tuple implements Comparable { + int x, y, val; + public Tuple(int x, int y, int val) { + this.x = x; this.y = y; this.val = val; + } + + @Override + public int compareTo(Tuple that) { + return this.val - that.val; + } +} +``` + +## 链表 + +**判断两个链表的交点** + +[Leetcode : 160. Intersection of Two Linked Lists (Easy)](https://leetcode.com/problems/intersection-of-two-linked-lists/description/) + +```html +A: a1 → a2 + ↘ + c1 → c2 → c3 + ↗ +B: b1 → b2 → b3 +``` + +要求:时间复杂度为 O(n) 空间复杂度为 O(1) + +设 A 的长度为 a + c,B 的长度为 b + c,其中 c 为尾部公共部分长度,可知 a + c + b = b + c + a。 + +当访问 A 链表的指针访问到链表尾部时,令它从链表 B 的头部开始访问链表 B;同样地,当访问 B 链表的指针访问到链表尾部时,令它从链表 A 的头部开始访问链表 A。这样就能控制访问 A 和 B 两个链表的指针能同时访问到交点。 + +```java +public ListNode getIntersectionNode(ListNode headA, ListNode headB) { + if(headA == null || headB == null) return null; + ListNode l1 = headA, l2 = headB; + while(l1 != l2){ + l1 = (l1 == null) ? headB : l1.next; + l2 = (l2 == null) ? headA : l2.next; + } + return l1; +} +``` + +如果只是判断是否存在交点,那么就是另一个问题,即 [编程之美:3.6]() 的问题。有两种解法:把第一个链表的结尾连接到第二个链表的开头,看第二个链表是否存在环;或者直接比较第一个链表最后一个节点和第二个链表最后一个节点是否相同。 + +**链表反转** + +[Leetcode : 206. Reverse Linked List (Easy)](https://leetcode.com/problems/reverse-linked-list/description/) + +头插法能够按逆序构建链表。 + +```java +public ListNode reverseList(ListNode head) { + ListNode newHead = null; // 设为 null,作为新链表的结尾 + while(head != null){ + ListNode nextNode = head.next; + head.next = newHead; + newHead = head; + head = nextNode; + } + return newHead; +} +``` + +**归并两个有序的链表** + +[Leetcode : 21. Merge Two Sorted Lists (Easy)](https://leetcode.com/problems/merge-two-sorted-lists/description/) + +链表和树一样,可以用递归方式来定义:链表是空节点,或者有一个值和一个指向下一个链表的指针。因此很多链表问题可以用递归来处理。 + +```java +public ListNode mergeTwoLists(ListNode l1, ListNode l2) { + if(l1 == null) return l2; + if(l2 == null) return l1; + ListNode newHead = null; + if(l1.val < l2.val){ + newHead = l1; + newHead.next = mergeTwoLists(l1.next, l2); + } else{ + newHead = l2; + newHead.next = mergeTwoLists(l1, l2.next); + } + return newHead; +} +``` + +**从有序链表中删除重复节点** + +[Leetcode : 83. Remove Duplicates from Sorted List (Easy)](https://leetcode.com/problems/remove-duplicates-from-sorted-list/description/) + +```java +public ListNode deleteDuplicates(ListNode head) { + if(head == null || head.next == null) return head; + head.next = deleteDuplicates(head.next); + return head.next != null && head.val == head.next.val ? head.next : head; +} +``` + +**回文链表** + +[Leetcode : 234. Palindrome Linked List (Easy)](https://leetcode.com/problems/palindrome-linked-list/description/) + +切成两半,把后半段反转,然后比较两半是否相等。 + +```java +public boolean isPalindrome(ListNode head) { + if(head == null || head.next == null) return true; + ListNode slow = head, fast = head.next; + while(fast != null && fast.next != null){ + slow = slow.next; + fast = fast.next.next; + } + + if(fast != null){ // 偶数节点,让 slow 指向下一个节点 + slow = slow.next; + } + + cut(head, slow); // 切成两个链表 + ListNode l1 = head, l2 = slow; + l2 = reverse(l2); + return isEqual(l1, l2); +} + +private void cut(ListNode head, ListNode cutNode){ + while( head.next != cutNode ) head = head.next; + head.next = null; +} + +private ListNode reverse(ListNode head){ + ListNode newHead = null; + while(head != null){ + ListNode nextNode = head.next; + head.next = newHead; + newHead = head; + head = nextNode; + } + return newHead; +} + +private boolean isEqual(ListNode l1, ListNode l2){ + while(l1 != null && l2 != null){ + if(l1.val != l2.val) return false; + l1 = l1.next; + l2 = l2.next; + } + return true; +} +``` + +**链表元素按奇偶聚集** + +[Leetcode : 328. Odd Even Linked List (Medium)](https://leetcode.com/problems/odd-even-linked-list/description/) + +```html +Example: +Given 1->2->3->4->5->NULL, +return 1->3->5->2->4->NULL. +``` + +```java +public ListNode oddEvenList(ListNode head) { + if (head == null) { + return head; + } + ListNode odd = head, even = head.next, evenHead = even; + while (even != null && even.next != null) { + odd.next = odd.next.next; + odd = odd.next; + even.next = even.next.next; + even = even.next; + } + odd.next = evenHead; + return head; +} +``` + +## 树 + +### 递归 + +一棵树要么是空树,要么有两个指针,每个指针指向一棵树。树是一种递归结构,很多树的问题可以使用递归来处理。 + +**树的高度** + +[Leetcode : 104. Maximum Depth of Binary Tree (Easy)](https://leetcode.com/problems/maximum-depth-of-binary-tree/description/) + +```java +public int maxDepth(TreeNode root) { + if(root == null) return 0; + return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1; +} +``` + +**翻转树** + +[Leetcode : 226. Invert Binary Tree (Easy)](https://leetcode.com/problems/invert-binary-tree/description/) + +```java +public TreeNode invertTree(TreeNode root) { + if(root == null) return null; + TreeNode left = root.left; // 后面的操作会改变 left 指针,因此先保存下来 + root.left = invertTree(root.right); + root.right = invertTree(left); + return root; +} +``` + +**归并两棵树** + +[Leetcode : 617. Merge Two Binary Trees (Easy)](https://leetcode.com/problems/merge-two-binary-trees/description/) + +```html +Input: + Tree 1 Tree 2 + 1 2 + / \ / \ + 3 2 1 3 + / \ \ + 5 4 7 +Output: +Merged tree: + 3 + / \ + 4 5 + / \ \ + 5 4 7 +``` + +```java +public TreeNode mergeTrees(TreeNode t1, TreeNode t2) { + if(t1 == null && t2 == null) return null; + if(t1 == null) return t2; + if(t2 == null) return t1; + TreeNode root = new TreeNode(t1.val + t2.val); + root.left = mergeTrees(t1.left, t2.left); + root.right = mergeTrees(t1.right, t2.right); + return root; +} +``` + +**判断路径和是否等于一个数** + +[Leetcdoe : 112. Path Sum (Easy)](https://leetcode.com/problems/path-sum/description/) + +```html +Given the below binary tree and sum = 22, + 5 + / \ + 4 8 + / / \ + 11 13 4 + / \ \ + 7 2 1 +return true, as there exist a root-to-leaf path 5->4->11->2 which sum is 22. +``` + +路径和定义为从 root 到 leaf 的所有节点的和 + +```java +public boolean hasPathSum(TreeNode root, int sum) { + if(root == null) return false; + if(root.left == null && root.right == null && root.val == sum) return true; + return hasPathSum(root.left, sum - root.val) || hasPathSum(root.right, sum - root.val); +} +``` + +**统计路径和等于一个数的路径数量** + +[Leetcode : 437. Path Sum III (Easy)](https://leetcode.com/problems/path-sum-iii/description/) + +```html +root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8 + + 10 + / \ + 5 -3 + / \ \ + 3 2 11 + / \ \ +3 -2 1 + +Return 3. The paths that sum to 8 are: + +1. 5 -> 3 +2. 5 -> 2 -> 1 +3. -3 -> 11 +``` + +路径不一定以 root 开头并以 leaf 结尾,但是必须连续 + +```java +public int pathSum(TreeNode root, int sum) { + if(root == null) return 0; + int ret = pathSumStartWithRoot(root, sum) + pathSum(root.left, sum) + pathSum(root.right, sum); + return ret; +} + +private int pathSumStartWithRoot(TreeNode root, int sum){ + if(root == null) return 0; + int ret = 0; + if(root.val == sum) ret++; + ret += pathSumStartWithRoot(root.left, sum - root.val) + pathSumStartWithRoot(root.right, sum - root.val); + return ret; +} +``` + +**树的对称** + +[Leetcode : 101. Symmetric Tree (Easy)](https://leetcode.com/problems/symmetric-tree/description/) + +```html + 1 + / \ + 2 2 + / \ / \ +3 4 4 3 +``` + +```java +public boolean isSymmetric(TreeNode root) { + if(root == null) return true; + return isSymmetric(root.left, root.right); +} + +private boolean isSymmetric(TreeNode t1, TreeNode t2){ + if(t1 == null && t2 == null) return true; + if(t1 == null || t2 == null) return false; + if(t1.val != t2.val) return false; + return isSymmetric(t1.left, t2.right) && isSymmetric(t1.right, t2.left); +} +``` + +**平衡树** + +[Leetcode : 110. Balanced Binary Tree (Easy)](https://leetcode.com/problems/balanced-binary-tree/description/) + +```html + 3 + / \ + 9 20 + / \ + 15 7 +``` + +平衡树左右子树高度差都小于等于 1 + +```java +private boolean result = true; + +public boolean isBalanced(TreeNode root) { + maxDepth(root); + return result; +} + +public int maxDepth(TreeNode root) { + if (root == null) return 0; + int l = maxDepth(root.left); + int r = maxDepth(root.right); + if (Math.abs(l - r) > 1) result = false; + return 1 + Math.max(l, r); +} +``` + +**最小路径** + +[Leetcode : 111. Minimum Depth of Binary Tree (Easy)](https://leetcode.com/problems/minimum-depth-of-binary-tree/description/) + +树的根节点到叶子节点的最小路径长度 + +```java +public int minDepth(TreeNode root) { + if(root == null) return 0; + int left = minDepth(root.left); + int right = minDepth(root.right); + if(left == 0 || right == 0) return left + right + 1; + return Math.min(left, right) + 1; +} +``` + +**统计左叶子节点的和** + +[Leetcode : 404. Sum of Left Leaves (Easy)](https://leetcode.com/problems/sum-of-left-leaves/description/) + +```html + 3 + / \ + 9 20 + / \ + 15 7 + +There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24. +``` + +```java +public int sumOfLeftLeaves(TreeNode root) { + if(root == null) { + return 0; + } + if(isLeaf(root.left)) { + return root.left.val + sumOfLeftLeaves(root.right); + } + return sumOfLeftLeaves(root.left) + sumOfLeftLeaves(root.right); +} + +private boolean isLeaf(TreeNode node){ + if(node == null) { + return false; + } + return node.left == null && node.right == null; +} +``` + +**修剪二叉查找树** + +[Leetcode : 669. Trim a Binary Search Tree (Easy)](https://leetcode.com/problems/trim-a-binary-search-tree/description/) + +```html +Input: + 3 + / \ + 0 4 + \ + 2 + / + 1 + + L = 1 + R = 3 + +Output: + 3 + / + 2 + / + 1 +``` + +二叉查找树(BST):根节点大于等于左子树所有节点,小于等于右子树所有节点。 + +只保留值在 L \~ R 之间的节点 + +```java +public TreeNode trimBST(TreeNode root, int L, int R) { + if(root == null) return null; + if(root.val > R) return trimBST(root.left, L, R); + if(root.val < L) return trimBST(root.right, L, R); + root.left = trimBST(root.left, L, R); + root.right = trimBST(root.right, L, R); + return root; +} +``` + +**子树** + +[Leetcode : 572. Subtree of Another Tree (Easy)](https://leetcode.com/problems/subtree-of-another-tree/description/) + +```html +Given tree s: + 3 + / \ + 4 5 + / \ + 1 2 +Given tree t: + 4 + / \ + 1 2 +Return true, because t has the same structure and node values with a subtree of s. +``` + +```java +public boolean isSubtree(TreeNode s, TreeNode t) { + if(s == null && t == null) return true; + if(s == null || t == null) return false; + if(s.val == t.val && isSame(s, t)) return true; + return isSubtree(s.left, t) || isSubtree(s.right, t); +} + +private boolean isSame(TreeNode s, TreeNode t){ + if(s == null && t == null) return true; + if(s == null || t == null) return false; + if(s.val != t.val) return false; + return isSame(s.left, t.left) && isSame(s.right, t.right); +} +``` + +**从有序数组中构造二叉查找树** + +[Leetcode : 108. Convert Sorted Array to Binary Search Tree (Easy)](https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/description/) + +```java +public TreeNode sortedArrayToBST(int[] nums) { + return toBST(nums, 0, nums.length - 1); +} + +private TreeNode toBST(int[] nums, int sIdx, int eIdx){ + if(sIdx > eIdx) return null; + int mIdx = (sIdx + eIdx) / 2; + TreeNode root = new TreeNode(nums[mIdx]); + root.left = toBST(nums, sIdx, mIdx - 1); + root.right = toBST(nums, mIdx + 1, eIdx); + return root; +} +``` + +**两节点的最长路径** + +[Leetcode : 543. Diameter of Binary Tree (Easy)](https://leetcode.com/problems/diameter-of-binary-tree/description/) + +```html +Input: + 1 + / \ + 2 3 + / \ + 4 5 + +Return 3, which is the length of the path [4,2,1,3] or [5,2,1,3]. +``` + +```java +private int max = 0; + +public int diameterOfBinaryTree(TreeNode root) { + depth(root); + return max; +} + +private int depth(TreeNode root) { + if (root == null) return 0; + int leftDepth = depth(root.left); + int rightDepth = depth(root.right); + max = Math.max(max, leftDepth + rightDepth); + return Math.max(leftDepth, rightDepth) + 1; +} +``` + +**找出二叉树中第二小的节点** + +[Leetcode : 671. Second Minimum Node In a Binary Tree (Easy)](https://leetcode.com/problems/second-minimum-node-in-a-binary-tree/description/) + +```html +Input: + 2 + / \ + 2 5 + / \ + 5 7 + +Output: 5 +``` + +一个节点要么具有 0 个或 2 个子节点,如果有子节点,那么根节点是最小的节点。 + +```java +public int findSecondMinimumValue(TreeNode root) { + if(root == null) return -1; + if(root.left == null && root.right == null) return -1; + int leftVal = root.left.val; + int rightVal = root.right.val; + if(leftVal == root.val) leftVal = findSecondMinimumValue(root.left); + if(rightVal == root.val) rightVal = findSecondMinimumValue(root.right); + if(leftVal != -1 && rightVal != -1) return Math.min(leftVal, rightVal); + if(leftVal != -1) return leftVal; + return rightVal; +} +``` + +**二叉查找树的最近公共祖先** + +[Leetcode : 235. Lowest Common Ancestor of a Binary Search Tree (Easy)](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/description/) + +```html + _______6______ + / \ + ___2__ ___8__ + / \ / \ + 0 _4 7 9 + / \ + 3 5 +For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition. +``` + +```java +public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { + if(root.val > p.val && root.val > q.val) return lowestCommonAncestor(root.left, p, q); + if(root.val < p.val && root.val < q.val) return lowestCommonAncestor(root.right, p, q); + return root; +} +``` + +**二叉树的最近公共祖先** + +[Leetcode : 236. Lowest Common Ancestor of a Binary Tree (Medium) ](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/description/) + +```html + _______3______ + / \ + ___5__ ___1__ + / \ / \ + 6 _2 0 8 + / \ + 7 4 +For example, the lowest common ancestor (LCA) of nodes 5 and 1 is 3. Another example is LCA of nodes 5 and 4 is 5, since a node can be a descendant of itself according to the LCA definition. +``` + +```java +public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { + if (root == null || root == p || root == q) return root; + TreeNode left = lowestCommonAncestor(root.left, p, q); + TreeNode right = lowestCommonAncestor(root.right, p, q); + return left == null ? right : right == null ? left : root; +} +``` + +**相同节点值的最大路径长度** + +[Leetcode : 687. Longest Univalue Path (Easy)](https://leetcode.com/problems/longest-univalue-path/) + +```html + 1 + / \ + 4 5 + / \ \ + 4 4 5 + +Output : 2 +``` + +```java +private int path = 0; +public int longestUnivaluePath(TreeNode root) { + dfs(root); + return path; +} + +private int dfs(TreeNode root){ + if(root == null) return 0; + int left = dfs(root.left); + int right = dfs(root.right); + int leftPath = root.left != null && root.left.val == root.val ? left + 1 : 0; + int rightPath = root.right != null && root.right.val == root.val ? right + 1 : 0; + path = Math.max(path, leftPath + rightPath); + return Math.max(leftPath, rightPath); +} +``` + +**间隔遍历** + +[Leetcode : 337. House Robber III (Medium)](https://leetcode.com/problems/house-robber-iii/description/) + +```html + 3 + / \ + 2 3 + \ \ + 3 1 +Maximum amount of money the thief can rob = 3 + 3 + 1 = 7. +``` + +```java +public int rob(TreeNode root) { + if (root == null) return 0; + int val1 = root.val; + if (root.left != null) { + val1 += rob(root.left.left) + rob(root.left.right); + } + if (root.right != null) { + val1 += rob(root.right.left) + rob(root.right.right); + } + int val2 = rob(root.left) + rob(root.right); + return Math.max(val1, val2); +} +``` + +### 层次遍历 + +使用 BFS 进行层次遍历。不需要使用两个队列来分别存储当前层的节点和下一层的节点,因为在开始遍历一层的节点时,当前队列中的节点数就是当前层的节点数,只要控制遍历这么多节点数,就能保证这次遍历的都是当前层的节点。 + +**一棵树每层节点的平均数** + +[637. Average of Levels in Binary Tree (Easy)](https://leetcode.com/problems/average-of-levels-in-binary-tree/description/) + +```java +public List averageOfLevels(TreeNode root) { + List ret = new ArrayList<>(); + if(root == null) return ret; + Queue queue = new LinkedList<>(); + queue.add(root); + while(!queue.isEmpty()){ + int cnt = queue.size(); + double sum = 0; + for(int i = 0; i < cnt; i++){ + TreeNode node = queue.poll(); + sum += node.val; + if(node.left != null) queue.add(node.left); + if(node.right != null) queue.add(node.right); + } + ret.add(sum / cnt); + } + return ret; +} +``` + +**得到左下角的节点** + +[Leetcode : 513. Find Bottom Left Tree Value (Easy)](https://leetcode.com/problems/find-bottom-left-tree-value/description/) + +```html +Input: + + 1 + / \ + 2 3 + / / \ + 4 5 6 + / + 7 + +Output: +7 +``` + +```java +public int findBottomLeftValue(TreeNode root) { + Queue queue = new LinkedList<>(); + queue.add(root); + while(!queue.isEmpty()){ + root = queue.poll(); + if(root.right != null) queue.add(root.right); + if(root.left != null) queue.add(root.left); + } + return root.val; +} +``` + +### 前中后序遍历 + +```html + 1 + / \ + 2 3 + / \ \ +4 5 6 +``` + +层次遍历顺序:[1 2 3 4 5 6] +前序遍历顺序:[1 2 4 5 3 6] +中序遍历顺序:[4 2 5 1 3 6] +后序遍历顺序:[4 5 2 6 3 1] + +层次遍历使用 BFS 实现,利用的就是 BFS 一层一层遍历的特性;而前序、中序、后序遍历利用了 DFS 实现。 + +前序、中序、后序遍只是在对节点访问的顺序有一点不同,其它都相同。 + +① 前序 + +```java +void dfs(TreeNode root){ + visit(root); + dfs(root.left); + dfs(root.right); +} +``` + +② 中序 + +```java +void dfs(TreeNode root){ + dfs(root.left); + visit(root); + dfs(root.right); +} +``` + +③ 后序 + +```java +void dfs(TreeNode root){ + dfs(root.left); + dfs(root.right); + visit(root); +} +``` + +**非递归实现二叉树的前序遍历** + +[Leetcode : 144. Binary Tree Preorder Traversal (Medium)](https://leetcode.com/problems/binary-tree-preorder-traversal/description/) + +```java +public List preorderTraversal(TreeNode root) { + List ret = new ArrayList<>(); + if (root == null) return ret; + Stack stack = new Stack<>(); + stack.push(root); + while (!stack.isEmpty()) { + TreeNode node = stack.pop(); + ret.add(node.val); + if (node.right != null) stack.push(node.right); + if (node.left != null) stack.push(node.left); // 先添加右子树再添加左子树,这样是为了让左子树在栈顶 + } + return ret; +} +``` + +**非递归实现二叉树的后序遍历** + +[Leetcode : 145. Binary Tree Postorder Traversal (Medium)](https://leetcode.com/problems/binary-tree-postorder-traversal/description/) + +前序遍历为 root -> left -> right,后序遍历为 left -> right -> root,可以修改前序遍历成为 root -> right -> left,那么这个顺序就和后序遍历正好相反。 + +```java +public List postorderTraversal(TreeNode root) { + List ret = new ArrayList<>(); + if (root == null) return ret; + Stack stack = new Stack<>(); + stack.push(root); + while (!stack.isEmpty()) { + TreeNode node = stack.pop(); + ret.add(node.val); + if (node.left != null) stack.push(node.left); + if (node.right != null) stack.push(node.right); + } + Collections.reverse(ret); + return ret; +} +``` + +**非递归实现二叉树的中序遍历** + +[Leetcode : 94. Binary Tree Inorder Traversal (Medium)](https://leetcode.com/problems/binary-tree-inorder-traversal/description/) + +```java +public List inorderTraversal(TreeNode root) { + List ret = new ArrayList<>(); + Stack stack = new Stack<>(); + TreeNode cur = root; + while(cur != null || !stack.isEmpty()) { + while(cur != null) { // 模拟递归栈的不断深入 + stack.add(cur); + cur = cur.left; + } + TreeNode node = stack.pop(); + ret.add(node.val); + cur = node.right; + } + return ret; +} +``` + +### BST + +主要利用 BST 中序遍历有序的特点。 + +**在 BST 中寻找两个节点,使它们的和为一个给定值** + +[653. Two Sum IV - Input is a BST (Easy)](https://leetcode.com/problems/two-sum-iv-input-is-a-bst/description/) + +```html +Input: + 5 + / \ + 3 6 + / \ \ +2 4 7 + +Target = 9 + +Output: True +``` + +使用中序遍历得到有序数组之后,再利用双指针对数组进行查找。 + +应该注意到,这一题不能用分别在左右子树两部分来处理这种思想,因为两个待求的节点可能分别在左右子树中。 + +```java +public boolean findTarget(TreeNode root, int k) { + List nums = new ArrayList<>(); + inOrder(root, nums); + int i = 0, j = nums.size() - 1; + while(i < j){ + int sum = nums.get(i) + nums.get(j); + if(sum == k) return true; + if(sum < k) i++; + else j--; + } + return false; +} + +private void inOrder(TreeNode root, List nums){ + if(root == null) return; + inOrder(root.left, nums); + nums.add(root.val); + inOrder(root.right, nums); +} +``` + +**在 BST 中查找两个节点之差的最小绝对值** + +[Leetcode : 530. Minimum Absolute Difference in BST (Easy)](https://leetcode.com/problems/minimum-absolute-difference-in-bst/description/) + +```html +Input: + 1 + \ + 3 + / + 2 + +Output: +1 +``` + +利用 BST 的中序遍历为有序的性质,计算中序遍历中临近的两个节点之差的绝对值,取最小值。 + +```java +private int minDiff = Integer.MAX_VALUE; +private int preVal = -1; + +public int getMinimumDifference(TreeNode root) { + inorder(root); + return minDiff; +} + +private void inorder(TreeNode node){ + if(node == null) return; + inorder(node.left); + if(preVal != -1) minDiff = Math.min(minDiff, Math.abs(node.val - preVal)); + preVal = node.val; + inorder(node.right); +} +``` + +**把 BST 每个节点的值都加上比它大的节点的值** + +[Leetcode : Convert BST to Greater Tree (Easy)](https://leetcode.com/problems/convert-bst-to-greater-tree/description/) + +```html +Input: The root of a Binary Search Tree like this: + 5 + / \ + 2 13 + +Output: The root of a Greater Tree like this: + 18 + / \ + 20 13 +``` + +先遍历右子树。 + +```java +private int sum = 0; + +public TreeNode convertBST(TreeNode root) { + traver(root); + return root; +} + +private void traver(TreeNode root) { + if (root == null) { + return; + } + if (root.right != null) { + traver(root.right); + } + sum += root.val; + root.val = sum; + if (root.left != null) { + traver(root.left); + } +} +``` + +**寻找 BST 中出现次数最多的节点** + +[Leetcode : 501. Find Mode in Binary Search Tree (Easy)](https://leetcode.com/problems/find-mode-in-binary-search-tree/description/) + +```html + 1 + \ + 2 + / + 2 +return [2]. +``` + +```java +private int cnt = 1; +private int maxCnt = 1; +private TreeNode preNode = null; +private List list; + +public int[] findMode(TreeNode root) { + list = new ArrayList<>(); + inorder(root); + int[] ret = new int[list.size()]; + int idx = 0; + for(int num : list){ + ret[idx++] = num; + } + return ret; +} + +private void inorder(TreeNode node){ + if(node == null) return; + inorder(node.left); + if(preNode != null){ + if(preNode.val == node.val) cnt++; + else cnt = 1; + } + if(cnt > maxCnt){ + maxCnt = cnt; + list.clear(); + list.add(node.val); + } else if(cnt == maxCnt){ + list.add(node.val); + } + preNode = node; + inorder(node.right); +} +``` + +**寻找 BST 的第 k 个元素** + +[Leetcode : 230. Kth Smallest Element in a BST (Medium)](https://leetcode.com/problems/kth-smallest-element-in-a-bst/description/) + +递归解法: + +```java +public int kthSmallest(TreeNode root, int k) { + int leftCnt = count(root.left); + if(leftCnt == k - 1) return root.val; + if(leftCnt > k - 1) return kthSmallest(root.left, k); + return kthSmallest(root.right, k - leftCnt - 1); +} + +private int count(TreeNode node) { + if(node == null) return 0; + return 1 + count(node.left) + count(node.right); +} +``` + +中序遍历解法: + +```java +private int cnt = 0; +private int val; + +public int kthSmallest(TreeNode root, int k) { + inorder(root, k); + return val; +} + +private void inorder(TreeNode node, int k) { + if(node == null) return; + inorder(node.left, k); + cnt++; + if(cnt == k) { + val = node.val; + return; + } + inorder(node.right, k); +} +``` + +### Trie + +

    + +Trie,又称前缀树或字典树,用于判断字符串是否存在或者是否具有某种字符串前缀。 + +**实现一个 Trie** + +[Leetcode : 208. Implement Trie (Prefix Tree) (Medium)](https://leetcode.com/problems/implement-trie-prefix-tree/description/) + +```java +class Trie { + + private class Node{ + Node[] childs = new Node[26]; + boolean isLeaf; + } + + private Node root = new Node(); + + /** Initialize your data structure here. */ + public Trie() { + } + + /** Inserts a word into the trie. */ + public void insert(String word) { + int idx = word.charAt(0) - 'a'; + insert(word, root); + } + + private void insert(String word, Node node){ + int idx = word.charAt(0) - 'a'; + if(node.childs[idx] == null){ + node.childs[idx] = new Node(); + } + if(word.length() == 1) node.childs[idx].isLeaf = true; + else insert(word.substring(1), node.childs[idx]); + } + + /** Returns if the word is in the trie. */ + public boolean search(String word) { + return search(word, root); + } + + private boolean search(String word, Node node){ + if(node == null) return false; + int idx = word.charAt(0) - 'a'; + if(node.childs[idx] == null) return false; + if(word.length() == 1) return node.childs[idx].isLeaf; + return search(word.substring(1), node.childs[idx]); + } + + /** Returns if there is any word in the trie that starts with the given prefix. */ + public boolean startsWith(String prefix) { + return startWith(prefix, root); + } + + private boolean startWith(String prefix, Node node){ + if(node == null) return false; + if(prefix.length() == 0) return true; + int idx = prefix.charAt(0) - 'a'; + return startWith(prefix.substring(1), node.childs[idx]); + } +} +``` + +**实现一个 Trie,用来求前缀和** + +[Leetcode : 677. Map Sum Pairs (Medium)](https://leetcode.com/problems/map-sum-pairs/description/) + +```html +Input: insert("apple", 3), Output: Null +Input: sum("ap"), Output: 3 +Input: insert("app", 2), Output: Null +Input: sum("ap"), Output: 5 +``` + +```java +class MapSum { + private class Trie { + int val; + Map childs; + boolean isWord; + + Trie() { + childs = new HashMap<>(); + } + } + + private Trie root; + + public MapSum() { + root = new Trie(); + } + + public void insert(String key, int val) { + Trie cur = root; + for(char c : key.toCharArray()) { + if(!cur.childs.containsKey(c)) { + Trie next = new Trie(); + cur.childs.put(c, next); + } + cur = cur.childs.get(c); + } + cur.val = val; + cur.isWord = true; + } + + public int sum(String prefix) { + Trie cur = root; + for(char c : prefix.toCharArray()) { + if(!cur.childs.containsKey(c)) return 0; + cur = cur.childs.get(c); + } + return dfs(cur); + } + + private int dfs(Trie cur) { + int sum = 0; + if(cur.isWord) { + sum += cur.val; + } + for(Trie next : cur.childs.values()) { + sum += dfs(next); + } + return sum; + } +} +``` + +## 图 + +## 位运算 + +**1. 基本原理** + +0s 表示一串 0 ,1s 表示一串 1。 + +``` +x ^ 0s = x x & 0s = 0 x | 0s = x +x ^ 1s = ~x x & 1s = x x | 1s = 1s +x ^ x = 0 x & x = x x | x = x +``` + +① 利用 x ^ 1s = \~x 的特点,可以将位级表示翻转;利用 x ^ x = 0 的特点,可以将三个数中重复的两个数去除,只留下另一个数; +② 利用 x & 0s = 0 和 x & 1s = x 的特点,可以实现掩码操作。一个数 num 与 mask :00111100 进行位与操作,只保留 num 中与 mask 的 1 部分相对应的位; +③ 利用 x | 0s = x 和 x | 1s = 1s 的特点,可以实现设值操作。一个数 num 与 mask:00111100 进行位或操作,将 num 中与 mask 的 1 部分相对应的位都设置为 1 。 + +\>\> n 为算术右移,相当于除以 2n; +\>\>\> n 为无符号右移,左边会补上 0。 +<< n 为算术左移,相当于乘以 2n。 + +n&(n-1) 该位运算是去除 n 的位级表示中最低的那一位。例如对于二进制表示 10110 **100** ,减去 1 得到 10110**011**,这两个数相与得到 10110**000**。 + +n-n&(\~n+1) 运算是去除 n 的位级表示中最高的那一位。 + +n&(-n) 该运算得到 n 的位级表示中最低的那一位。-n 得到 n 的反码加 1,对于二进制表示 10110 **100** ,-n 得到 01001**100**,相与得到 00000**100** + +**2. mask 计算** + +要获取 111111111,将 0 取反即可,\~0。 + +要得到只有第 i 位为 1 的 mask,将 1 向左移动 i 位即可,1<<i 。例如 1<<5 得到只有第 5 位为 1 的 mask :00010000。 + +要得到 1 到 i 位为 1 的 mask,1<<(i+1)-1 即可,例如将 1<<(4+1)-1 = 00010000-1 = 00001111。 + +要得到 1 到 i 位为 0 的 mask,只需将 1 到 i 位为 1 的 mask 取反,即 \~(1<<(i+1)-1)。 + +**3. 位操作举例** + +① 获取第 i 位 + +num & 00010000 != 0 + +```java +(num & (1 << i)) != 0; +``` + +② 将第 i 位设置为 1 + +num | 00010000 + +```java +num | (1 << i); +``` + +③ 将第 i 位清除为 0 + +num & 11101111 + +```java +num & (~(1 << i)) +``` + +④ 将最高位到第 i 位清除为 0 + +num & 00001111 + +```java +num & ((1 << i) - 1); +``` + +⑤ 将第 0 位到第 i 位清除为 0 + +num & 11110000 + +```java +num & (~((1 << (i+1)) - 1)); +``` + +⑥ 将第 i 位设置为 0 或者 1 + +先将第 i 位清零,然后将 v 左移 i 位,执行“位或”运算。 + +```java +(num & (1 << i)) | (v << i); +``` + +**4. Java 中的位操作** + +```html +static int Integer.bitCount(); // 统计 1 的数量 +static int Integer.highestOneBit(); // 获得最高位 +static String toBinaryString(int i); // 转换为二进制表示的字符串 +``` + +**统计两个数的二进制表示有多少位不同** + +[Leetcode : 461. Hamming Distance (Easy)](https://leetcode.com/problems/hamming-distance/) + +对两个数进行异或操作,不同的那一位结果为 1 ,统计有多少个 1 即可。 + +```java +public int hammingDistance(int x, int y) { + int z = x ^ y; + int cnt = 0; + while(z != 0){ + if((z & 1) == 1) cnt++; + z = z >> 1; + } + return cnt; +} +``` + +可以使用 Integer.bitcount() 来统计 1 个的个数。 + +```java +public int hammingDistance(int x, int y) { + return Integer.bitCount(x ^ y); +} +``` + +**翻转一个数的比特位** + +[Leetcode : 190. Reverse Bits (Easy)](https://leetcode.com/problems/reverse-bits/description/) + +```java +public int reverseBits(int n) { + int ret = 0; + for(int i = 0; i < 32; i++){ + ret <<= 1; + ret |= (n & 1); + n >>>= 1; + } + return ret; +} +``` + +**不用额外变量交换两个整数** + +[程序员代码面试指南 :P317](#) + +```java +a = a ^ b; +b = a ^ b; +a = a ^ b; +``` + +令 c = a ^ b,那么 b ^ c = b ^ b ^ a = a,a ^ c = a ^ a ^ b = b。 + +**判断一个数是不是 4 的 n 次方** + +[Leetcode : 342. Power of Four (Easy)](https://leetcode.com/problems/power-of-four/) + +该数二进制表示有且只有一个奇数位为 1 ,其余的都为 0 ,例如 16 :10000。可以每次把 1 向左移动 2 位,就能构造出这种数字,然后比较构造出来的数与要判断的数是否相同。 + +```java +public boolean isPowerOfFour(int num) { + int i = 1; + while(i > 0){ + if(i == num) return true; + i = i << 2; + } + return false; +} +``` + +**判断一个数是不是 2 的 n 次方** + +[Leetcode : 231. Power of Two (Easy)](https://leetcode.com/problems/power-of-two/description/) + +同样可以用 Power of Four 的方法,但是 2 的 n 次方更特殊,它的二进制表示只有一个 1 存在。 + +```java +public boolean isPowerOfTwo(int n) { + return n > 0 && Integer.bitCount(n) == 1; +} +``` + +利用 1000 & 0111 == 0 这种性质,得到以下解法: + +```java +public boolean isPowerOfTwo(int n) { + return n > 0 && (n & (n - 1)) == 0; +} +``` + +**数组中唯一一个不重复的元素** + +[Leetcode : 136. Single Number (Easy)](https://leetcode.com/problems/single-number/description/) + +两个相同的数异或的结果为 0,对所有数进行异或操作,最后的结果就是单独出现的那个数。 + +类似的有:[Leetcode : 389. Find the Difference (Easy)](https://leetcode.com/problems/find-the-difference/description/),两个字符串仅有一个字符不相同,使用异或操作可以以 O(1) 的空间复杂度来求解,而不需要使用 HashSet。 + +```java +public int singleNumber(int[] nums) { + int ret = 0; + for(int n : nums) ret = ret ^ n; + return ret; +} +``` + +**数组中不重复的两个元素** + +[Leetcode : 260. Single Number III (Medium)](https://leetcode.com/problems/single-number-iii/description/) + +两个不相等的元素在位级表示上必定会有一位存在不同。 + +将数组的所有元素异或得到的结果为不存在重复的两个元素异或的结果。 + +diff &= -diff 得到出 diff 最右侧不为 0 的位,也就是不存在重复的两个元素在位级表示上最右侧不同的那一位,利用这一位就可以将两个元素区分开来。 + +```java +public int[] singleNumber(int[] nums) { + int diff = 0; + for(int num : nums) diff ^= num; + // 得到最右一位 + diff &= -diff; + int[] ret = new int[2]; + for(int num : nums) { + if((num & diff) == 0) ret[0] ^= num; + else ret[1] ^= num; + } + return ret; +} +``` + +**判断一个数的位级表示是否不会出现连续的 0 和 1** + +[Leetcode : 693. Binary Number with Alternating Bits (Easy)](https://leetcode.com/problems/binary-number-with-alternating-bits/description/) + +对于 10101 这种位级表示的数,把它向右移动 1 位得到 1010 ,这两个数每个位都不同,因此异或得到的结果为 11111。 + +```java +public boolean hasAlternatingBits(int n) { + int a = (n ^ (n >> 1)); + return (a & (a + 1)) == 0; +} +``` + +**求一个数的补码** + +[Leetcode : 476. Number Complement (Easy)](https://leetcode.com/problems/number-complement/description/) + +不考虑二进制表示中的首 0 部分 + +对于 00000101,要求补码可以将它与 00000111 进行异或操作。那么问题就转换为求掩码 00000111。 + +```java +public int findComplement(int num) { + if(num == 0) return 1; + int mask = 1 << 30; + while((num & mask) == 0) mask >>= 1; + mask = (mask << 1) - 1; + return num ^ mask; +} +``` + +可以利用 Java 的 Integer.highestOneBit() 方法来获得含有首 1 的数。 + +```java +public int findComplement(int num) { + if(num == 0) return 1; + int mask = Integer.highestOneBit(num); + mask = (mask << 1) - 1; + return num ^ mask; +} +``` + +对于 10000000 这样的数要扩展成 11111111,可以利用以下方法: + +```html +mask |= mask >> 1 11000000 +mask |= mask >> 2 11110000 +mask |= mask >> 4 11111111 +``` + +```java +public int findComplement(int num) { + int mask = num; + mask |= mask >> 1; + mask |= mask >> 2; + mask |= mask >> 4; + mask |= mask >> 8; + mask |= mask >> 16; + return (mask ^ num); +} +``` + +**实现整数的加法** + +[Leetcode : 371. Sum of Two Integers (Easy)](https://leetcode.com/problems/sum-of-two-integers/description/) + +a ^ b 表示没有考虑进位的情况下两数的和,(a & b) << 1 就是进位。递归会终止的原因是 (a & b) << 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。 + +```java +public int getSum(int a, int b) { + return b == 0 ? a : getSum((a ^ b), (a & b) << 1); +} +``` + +**字符串数组最大乘积** + +[Leetcode : 318. Maximum Product of Word Lengths (Medium)](https://leetcode.com/problems/maximum-product-of-word-lengths/description/) + +题目描述:字符串数组的字符串只含有小写字符。求解字符串数组中两个字符串长度的最大乘积,要求这两个字符串不能含有相同字符。 + +解题思路:本题主要问题是判断两个字符串是否含相同字符,由于字符串只含有小写字符,总共 26 位,因此可以用一个 32 位的整数来存储每个字符是否出现过。 + +```java +public int maxProduct(String[] words) { + int n = words.length; + if (n == 0) return 0; + int[] val = new int[n]; + for (int i = 0; i < n; i++) { + for (char c : words[i].toCharArray()) { + val[i] |= 1 << (c - 'a'); + } + } + int ret = 0; + for (int i = 0; i < n; i++) { + for (int j = i + 1; j < n; j++) { + if ((val[i] & val[j]) == 0) { + ret = Math.max(ret, words[i].length() * words[j].length()); + } + } + } + return ret; +} +``` + +# 参考资料 + +- [Leetcode](https://leetcode.com/problemset/algorithms/?status=Todo) +- Weiss M A, 冯舜玺. 数据结构与算法分析——C 语言描述[J]. 2004. +- Sedgewick R. Algorithms[M]. Pearson Education India, 1988. +- 何海涛, 软件工程师. 剑指 Offer: 名企面试官精讲典型编程题[M]. 电子工业出版社, 2014. +- 《编程之美》小组. 编程之美[M]. 电子工业出版社, 2008. +- 左程云. 程序员代码面试指南[M]. 电子工业出版社, 2015. diff --git a/notes/Linux.md b/notes/Linux.md new file mode 100644 index 00000000..c592bf24 --- /dev/null +++ b/notes/Linux.md @@ -0,0 +1,1398 @@ + +* [一、常用操作以及概念](#一常用操作以及概念) + * [求助](#求助) + * [关机](#关机) + * [PATH](#path) + * [运行等级](#运行等级) + * [sudo](#sudo) + * [GNU](#gnu) + * [包管理工具](#包管理工具) + * [发行版](#发行版) + * [VIM 三个模式](#vim-三个模式) +* [二、分区](#二分区) + * [磁盘的文件名](#磁盘的文件名) + * [分区表](#分区表) + * [开机检测程序](#开机检测程序) + * [挂载](#挂载) +* [三、文件](#三文件) + * [文件权限概念](#文件权限概念) + * [文件属性以及权限的修改](#文件属性以及权限的修改) + * [目录的权限](#目录的权限) + * [文件默认权限](#文件默认权限) + * [目录配置](#目录配置) + * [文件时间](#文件时间) + * [文件与目录的基本操作](#文件与目录的基本操作) + * [获取文件内容](#获取文件内容) + * [指令与文件搜索](#指令与文件搜索) +* [四、磁盘与文件系统](#四磁盘与文件系统) + * [文件系统的组成](#文件系统的组成) + * [inode](#inode) + * [目录的 inode 与 block](#目录的-inode-与-block) + * [实体链接与符号链接](#实体链接与符号链接) +* [五、压缩与打包](#五压缩与打包) + * [压缩](#压缩) + * [打包](#打包) +* [六、Bash](#六bash) + * [特性](#特性) + * [变量操作](#变量操作) + * [指令搜索顺序](#指令搜索顺序) + * [数据流重定向](#数据流重定向) +* [七、管线指令](#七管线指令) + * [提取指令](#提取指令) + * [排序指令](#排序指令) + * [双向输出重定向](#双向输出重定向) + * [字符转换指令](#字符转换指令) + * [分区指令](#分区指令) +* [八、正则表达式](#八正则表达式) + * [grep](#grep) + * [printf](#printf) + * [awk](#awk) +* [九、进程管理](#九进程管理) + * [查看进程](#查看进程) + * [进程状态](#进程状态) + * [SIGCHILD](#sigchild) + * [孤儿进程和僵死进程](#孤儿进程和僵死进程) +* [十、I/O 复用](#十io-复用) + * [概念理解](#概念理解) + * [I/O 模型](#io-模型) + * [select poll epoll](#select-poll-epoll) + * [select 和 poll 比较](#select-和-poll-比较) + * [eopll 工作模式](#eopll-工作模式) + * [select poll epoll 应用场景](#select-poll-epoll-应用场景) +* [参考资料](#参考资料) + + + +# 一、常用操作以及概念 + +## 求助 + +### 1. --help + +指令的基本用法与选项介绍。 + +### 2. man + +man 是 manual 的缩写,将指令的具体信息显示出来。 + +当执行 man date 时,有 DATE(1) 出现,其中的数字代表指令的类型,常用的数字及其类型如下: + +| 代号 | 类型 | +| :--: | -- | +| 1 | 用户在 shell 环境中可以操作的指令或者可执行文件 | +| 5 | 配置文件 | +| 8 | 系统管理员可以使用的管理指令 | + +### 3. info + +info 与 man 类似,但是 info 将文档分成一个个页面,每个页面可以进行跳转。 + +## 关机 + +### 1. sync + +为了加快对磁盘文件的读写速度,位于内存中的文件数据不会立即同步到磁盘上,因此关机之前需要先进行 sync 同步操作。 + +### 2. shutdown + +```html +# /sbin/shutdown [-krhc] [时间] [警告讯息] +-k : 不会关机,只是发送警告讯息,通知所有在线的用户 +-r : 将系统的服务停掉后就重新启动 +-h : 将系统的服务停掉后就立即关机 +-c : 取消已经在进行的 shutdown 指令内容 +``` + +### 3. 其它关机指令 + +reboot、halt、poweroff。 + +## PATH + +可以在环境变量 PATH 中声明可执行文件的路径,路径之间用 : 分隔。 + +```html +/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/dmtsai/.local/bin:/home/dmtsai/bin +``` + +## 运行等级 + +- 0:关机模式 +- 1:单用户模式(可用于破解 root 密码) +- 2:无网络支持的多用户模式 +- 3:有网络支持的多用户模式(文本模式,工作中最常用的模式) +- 4:保留,未使用 +- 5:有网络支持的 X-windows 多用户模式(桌面) +- 6:重新引导系统,即重启 + +## sudo + +使用 sudo 允许一般用户使用 root 可执行的命令,只有在 /etc/sudoers 配置文件中添加的用户才能使用该指令。 + +## GNU + +GNU 计划,译为革奴计划,它的目标是创建一套完全自由的操作系统,称为 GNU,其内容软件完全以 GPL 方式发布。其中 GPL 全称为 GNU 通用公共许可协议,包含了以下内容: + +- 以任何目的运行此程序的自由; +- 再复制的自由; +- 改进此程序,并公开发布改进的自由。 + +## 包管理工具 + +RPM 和 DPKG 为最常见的两类软件包管理工具。RPM 全称为 Redhat Package Manager,最早由 Red Hat 公司制定实施,随后被 GNU 开源操作系统接受并成为很多 Linux 系统 (RHEL) 的既定软件标准。与 RPM 进行竞争的是基于 Debian 操作系统 (UBUNTU) 的 DEB 软件包管理工具- DPKG,全称为 Debian Package,功能方面与 RPM 相似。 + +YUM 基于 RPM 包管理工具,具有依赖管理功能,并具有软件升级的功能。 + +## 发行版 + +Linux 发行版是 Linux 内核及各种应用软件的集成版本。 + +| 基于的包管理工具 | 商业发行版 | 社区发行版 | +| --- | --- | --- | +| DPKG | Ubuntu | Debian | +| RPM | Red Hat | Fedora / CentOS | + +## VIM 三个模式 + +

    + +- 一般指令模式:进入 VIM 的默认模式,可以用于移动游标查看内容; +- 编辑模式:按下 "i" 等按键之后进入,可以对文本进行编辑; +- 指令列模式:按下 ":" 按键之后进入,用于保存退出等操作。 + +在指令列模式下,有以下命令用于离开或者保存文件。 + +| 命令 | 作用 | +| -- | -- | +| :w | 写入磁盘| +| :w! | 当文件为只读时,强制写入磁盘。到底能不能写入,与用户对该文件的权限有关 | +| :q | 离开 | +| :q! | 强制离开不保存 | +| :wq | 写入磁盘后离开 | +| :wq!| 强制写入磁盘后离开 | + +# 二、分区 + +## 磁盘的文件名 + +Linux 中每个硬件都被当做一个文件,包括磁盘。常见磁盘的文件名如下: + +- SCSI/SATA/USB 磁盘:/dev/sd[a-p] +- IDE 磁盘:/dev/hd[a-d] + +其中文件名后面的序号的确定与磁盘插入的顺序有关,而与磁盘所插入的插槽位置无关。 + +## 分区表 + +磁盘分区表主要有两种格式,一种是限制较多的 MBR 分区表,一种是较新且限制较少的 GPT 分区表。 + +### 1. MBR + +MBR 中,第一个扇区最重要,里面有主要开机记录(Master boot record, MBR)及分区表(partition table),其中 MBR 占 446 bytes,分区表占 64 bytes。 + +分区表只有 64 bytes,最多只能存储 4 个分区,这 4 个分区为主分区(Primary)和扩展分区(Extended)。其中扩展分区只有一个,它将其它空间用来记录分区表,因此通过扩展分区可以分出更多分区,这些分区称为逻辑分区。 + +Linux 也把分区当成文件,分区文件的命名方式为:磁盘文件名 + 编号,例如 /dev/sda1。注意,逻辑分区的编号从 5 开始。 + +### 2. GPT + +不同的磁盘有不同的扇区大小,例如 512 bytes 和最新磁盘的 4 k。GPT 为了兼容所有磁盘,在定义扇区上使用逻辑区块地址(Logical Block Address, LBA)。 + +GPT 第 1 个区块记录了 MBR,紧接着是 33 个区块记录分区信息,并把最后的 33 个区块用于对分区信息进行备份。 + +GPT 没有扩展分区概念,都是主分区,最多可以分 128 个分区。 + +

    + +## 开机检测程序 + +### 1. BIOS + +BIOS 是开机的时候计算机执行的第一个程序,这个程序知道可以开机的磁盘,并读取磁盘第一个扇区的 MBR,由 MBR 执行其中的开机管理程序,这个开机管理程序会加载操作系统的核心文件。 + +MBR 中的开机管理程序提供以下功能:选单、载入核心文件以及转交其它开机管理程序。转交这个功能可以用来实现了多重引导,只需要将另一个操作系统的开机管理程序安装在其它分区的启动扇区上,在启动 MBR 中的开机管理程序时,就可以选择启动当前的操作系统或者转交给其它开机管理程序从而启动另一个操作系统。 + +安装多重引导,最好先安装 Windows 再安装 Linux。因为安装 Windows 时会覆盖掉 MBR,而 Linux 可以选择将开机管理程序安装在 MBR 或者其它分区的启动扇区,并且可以设置开机管理程序的选单。 + +

    + +### 2. UEFI + +UEFI 相比于 BIOS 来说功能更为全面,也更为安全。 + +## 挂载 + +挂载利用目录作为分区的进入点,也就是说,进入目录之后就可以读取分区的数据。 + +

    + +# 三、文件 + +## 文件权限概念 + +把用户分为三种:文件拥有者、群组以及其它人,对不同的用户有不同的文件权限。 + +使用 ls 查看一个文件时,会显示一个文件的信息,例如 `drwxr-xr-x. 3 root root 17 May 6 00:14 .config`,对这个信息的解释如下: + +- drwxr-xr-x:文件类型以及权限,第 1 位为文件类型字段,后 9 位为文件权限字段。 +- 3:链接数; +- root:文件拥有者; +- root:所属群组; +- 17:文件大小; +- May 6 00:14:文件最后被修改的时间; +- .config:文件名。 + +常见的文件类型及其含义有: + +- d:目录; +- -:文件; +- l:链接文件; + +9 位的文件权限字段中,每 3 个为一组,共 3 组,每一组分别代表对文件拥有者、所属群组以及其它人的文件权限。一组权限中的 3 位分别为 r、w、x 权限,表示可读、可写、可执行。 + +## 文件属性以及权限的修改 + +### 1. 修改文件所属群组 + +```html +# chgrp [-R] groupname dirname/filename +-R:递归修改 +``` + +### 2. 修改文件拥有者 + +不仅可以修改文件拥有者,也可以修改文件所属群组。 + +```html +# chown [-R] 用户名:群组名 dirname/filename +``` + +### 3. 修改权限 + +可以将一组权限用数字来表示,此时一组权限的 3 个位当做二进制数字的位,从左到右每个位的权值为 4、2、1,即每个权限对应的数字权值为 r : 4、w : 2、x : 1。 + +```html +# chmod [-R] xyz dirname/filename +``` + +范例:将 .bashrc 文件的权限修改为 -rwxr-xr--。 + +```html +# chmod 754 .bashrc +``` + +也可以使用符号来设定权限。 + +```html +# chmod [ugoa] [+-=] [rwx] dirname/filename +- u:拥有者 +- g:所属群组 +- o:其他人 +- a:所有人 +- +:添加权限 +- -:移除权限 +- =:设定权限 +``` + +范例:为 .bashrc 文件的所有用户添加写权限。 + +```html +# chmod a+w .bashrc +``` + +## 目录的权限 + +文件名不是存储在一个文件的内容中,而是存储在一个文件所在的目录中。因此,拥有文件的 w 权限并不能对文件名进行修改。 + +目录存储文件列表,一个目录的权限也就是对其文件列表的权限。因此,目录的 r 权限表示可以读取文件列表;w 权限表示可以修改文件列表,具体来说,就是添加删除文件,对文件名进行修改;x 权限可以让该目录成为工作目录,x 权限是 r 和 w 权限的基础,如果不能使一个目录成为工作目录,也就没办法读取文件列表以及对文件列表进行修改了。 + +## 文件默认权限 + +- 文件默认权限:文件默认没有可执行权限,因此为 666,也就是 -rw-rw-rw- 。 +- 目录默认权限:目录必须要能够进入,也就是必须拥有可执行权限,因此为 777 ,也就是 drwxrwxrwx。 + +可以通过 umask 设置或者查看文件的默认权限,通常以掩码的形式来表示,例如 002 表示其它用户的权限去除了一个 2 的权限,也就是写权限,因此建立新文件时默认的权限为 -rw-rw-r-- 。 + +## 目录配置 + +为了使不同 Linux 发行版本的目录结构保持一致性,Filesystem Hierarchy Standard (FHS) 规定了 Linux 的目录结构。最基础的三个目录如下: + +- / (root, 根目录) +- /usr (unix software resource):所有系统默认软件都会安装到这个目录; +- /var (variable):存放系统或程序运行过程中的数据文件。 + +

    + +## 文件时间 + +1. modification time (mtime):文件的内容更新就会更新; +2. status time (ctime):文件的状态(权限、属性)更新就会更新; +3. access time (atime):读取文件时就会更新。 + +## 文件与目录的基本操作 + +### 1. ls + +列出文件或者目录的信息,目录的信息就是其中包含的文件。 + +```html +# ls [-aAdfFhilnrRSt] file|dir +-a :列出全部的文件 +-d :仅列出目录本身 +-l :以长数据串行列出,包含文件的属性与权限等等数据 +``` + +### 2. cp + +复制操作。 + +如果源文件有两个以上,则目的文件一定要是目录才行。 + +```html +cp [-adfilprsu] source destination +-a :相当于 -dr --preserve=all 的意思,至于 dr 请参考下列说明 +-d :若来源文件为链接文件,则复制链接文件属性而非文件本身 +-i :若目标文件已经存在时,在覆盖前会先询问 +-p :连同文件的属性一起复制过去 +-r :递归持续复制 +-u :destination 比 source 旧才更新 destination,或 destination 不存在的情况下才复制 +--preserve=all :除了 -p 的权限相关参数外,还加入 SELinux 的属性, links, xattr 等也复制了 +``` + +### 3. rm + +移除操作。 + +```html +# rm [-fir] 文件或目录 +-r :递归删除 +``` + +### 4. mv + +移动操作。 + +```html +# mv [-fiu] source destination +# mv [options] source1 source2 source3 .... directory +-f : force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖 +``` + +## 获取文件内容 + +### 1. cat + +取得文件内容。 + +```html +# cat [-AbEnTv] filename +-n :打印出行号,连同空白行也会有行号,-b 不会 +``` + +### 2. tac + +是 cat 的反向操作,从最后一行开始打印。 + +### 3. more + +可以一页一页查看文件内容,和文本编辑器类似。 + +### 4. less + +和 more 类似。 + +### 5. head + +可以取得文件前几行。 + +```html +# head [-n number] filename +-n :后面接数字,代表显示几行的意思 +``` + +### 6. tail + +是 head 的反向操作,只是取得是后几行。 + +### 7. od + +可以以字符或者十六进制的形式显示二进制文件。 + +### 8. touch + +修改文件时间或者建立新文件。 + +```html +# touch [-acdmt] filename +-a : 更新 atime +-c : 更新 ctime,若该文件不存在则不建立新文件 +-m : 更新 mtime +-d : 后面可以接更新日期而不使用当前日期,也可以使用 --date="日期或时间" +-t : 后面可以接更新时间而不使用当前时间,格式为[YYYYMMDDhhmm] +``` + +## 指令与文件搜索 + +### 1. which + +指令搜索。 + +```html +# which [-a] command +-a :将所有指令列出,而不是只列第一个 +``` + +### 2. whereis + +whereis 搜索文件的速度比较快,因为它只搜索几个特定的目录。 + +```html +# whereis [-bmsu] dirname/filename +``` + +### 3. locate + +locate 可以用关键字或者正则表达式进行搜索。 + +locate 使用 /var/lib/mlocate/ 这个数据库来进行搜索,它存储在内存中,并且每天更新一次,所以无法用 locate 搜索新建的文件。可以使用 updatedb 来立即更新数据库。 + +```html +# locate [-ir] keyword +-r:接正则表达式 +``` + +### 4. find + +find 可以使用文件的属性和权限进行搜索。 + +```html +# find filename [option] +``` + +**(一)与时间有关的选项** + +```html +-mtime n :列出在 n 天前的那一天修改过内容的文件 +-mtime +n :列出在 n 天之前 (不含 n 天本身) 修改过内容的文件 +-mtime -n :列出在 n 天之内 (含 n 天本身) 修改过内容的文件 +-newer file : 列出比 file 更新的文件 +``` + ++4、4 和 -4 的指示的时间范围如下: + +

    + +**(二)与文件拥有者和所属群组有关的选项** + +```html +-uid n +-gid n +-user name +-group name +-nouser :搜索拥有者不存在 /etc/passwd 的文件 +-nogroup:搜索所属群组不存在于 /etc/group 的文件 +``` + +**(三)与文件权限和名称有关的选项** + +```html +-name filename +-size [+-]SIZE:搜寻比 SIZE 还要大 (+) 或小 (-) 的文件。这个 SIZE 的规格有:c: 代表 byte,k: 代表 1024bytes。所以,要找比 50KB 还要大的文件,就是 -size +50k +-type TYPE +-perm mode :搜索权限等于 mode 的文件 +-perm -mode :搜索权限包含 mode 的文件 +-perm /mode :搜索权限包含任一 mode 的文件 +``` + +# 四、磁盘与文件系统 + +## 文件系统的组成 + +对分区进行格式化是为了在分区上建立文件系统。一个分区通常只能格式化为一个文件系统,但是磁盘阵列等技术可以将一个分区格式化为多个文件系统,因此只有文件系统能被挂载,而分区不能被挂载。 + +文件系统有以下三个结构: + +1. superblock:记录文件系统的整体信息,包括 inode 和 block 的总量、使用量、剩余量,以及文件系统的格式与相关信息等; +2. inode:一个文件占用一个 inode,记录文件的属性,同时记录此文件的内容所在的 block 号码; +3. block:记录文件的内容,文件太大时,会占用多个 block。 + +当要读取一个文件的内容时,先在 inode 中去查找文件内容所在的所有 block,然后把所有 block 的内容读出来。 + +磁盘碎片是指一个文件内容所在的 block 过于分散。 + +Ext2 文件系统使用了上述的文件结构,并在此之上加入了 block 群组的概念,也就是将一个文件系统划分为多个 block 群组,方便管理。 + +

    + +## inode + +Ext2 文件系统支持的 block 大小有 1k、2k 和 4k 三种,不同的 block 大小限制了单一文件的大小。而每个 inode 大小是固定为 128 bytes。 + +inode 中记录了文件内容所在的 block,但是每个 block 非常小,一个大文件随便都需要几十万的 block。而一个 inode 大小有限,无法直接引用这么多 block。因此引入了间接、双间接、三间接引用。间接引用是指,让 inode 记录的引用 block 块当成 inode 用来记录引用信息。 + +

    + +inode 具体包含以下信息: + +- 该文件的存取模式 (read/write/excute); +- 该文件的拥有者与群组 (owner/group); +- 该文件的容量; +- 该文件建立或状态改变的时间 (ctime); +- 最近一次的读取时间 (atime); +- 最近修改的时间 (mtime); +- 定义文件特性的旗标 (flag),如 SetUID...; +- 该文件真正内容的指向 (pointer)。 + +## 目录的 inode 与 block + +建立一个目录时,会分配一个 inode 与至少一个 block。block 记录的内容是目录下所有文件的 inode 编号以及文件名。可以看出文件的 inode 本身不记录文件名,文件名记录在目录中,因此新增文件、删除文件、更改文件名这些操作与目录的 w 权限有关。 + +## 实体链接与符号链接 + +```html +# ln [-sf] source_filename dist_filename +-s :默认是 hard link,加 -s 为 symbolic link +-f :如果目标文件存在时,先删除目标文件 +``` + +### 1. 实体链接 + +它和普通文件类似,实体链接文件的 inode 都指向源文件所在的 block 上,也就是说读取文件直接从源文件的 block 上读取。 + +删除任意一个条目,文件还是存在,只要引用数量不为 0。 + +有以下限制:不能跨越 File System;不能对目录进行链接。 + +```html +# ln /etc/crontab . +# ll -i /etc/crontab crontab +34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 crontab +34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab +``` + +### 2. 符号链接 + +符号链接文件保存着源文件所在的绝对路径,在读取时会定位到源文件上,可以理解为 Windows 的快捷方式。 + +当源文件被删除了,链接文件就打不开了。 + +可以为目录建立链接。 + +```html +# ll -i /etc/crontab /root/crontab2 +34474855 -rw-r--r--. 2 root root 451 Jun 10 2014 /etc/crontab +53745909 lrwxrwxrwx. 1 root root 12 Jun 23 22:31 /root/crontab2 -> /etc/crontab +``` + +# 五、压缩与打包 + +## 压缩 + +Linux 底下有很多压缩文件的扩展名,常见的如下: + +| 扩展名 | 压缩程序 | +| -- | -- | +| \*.Z | compress | +|\*.zip | zip | +|\*.gz | gzip| +|\*.bz2 | bzip2 | +|\*.xz | xz | +|\*.tar | tar 程序打包的数据,没有经过压缩 | +|\*.tar.gz | tar 程序打包的文件,经过 gzip 的压缩 | +|\*.tar.bz2 | tar 程序打包的文件,经过 bzip2 的压缩 | +|\*.tar.xz | tar 程序打包的文件,经过 xz 的压缩 | + +### 1. gzip + +gzip 是 Linux 使用最广的压缩指令,可以解开 compress、zip 与 gzip 所压缩的文件。 + +经过 gzip 压缩过,源文件就不存在了。 + +有 9 个不同的压缩等级可以使用。 + +可以使用 zcat、zmore、zless 来读取压缩文件的内容。 + +```html +$ gzip [-cdtv#] filename +-c :将压缩的数据输出到屏幕上 +-d :解压缩 +-t :检验压缩文件是否出错 +-v :显示压缩比等信息 +-# : # 为数字的意思,代表压缩等级,数字越大压缩比越高,默认为 6 +``` + +### 2. bzip2 + +提供比 gzip 更高的压缩比。 + +查看命令:bzcat、bzmore、bzless、bzgrep。 + +```html +$ bzip2 [-cdkzv#] filename +-k :保留源文件 +``` + +### 3. xz + +提供比 bzip2 更佳的压缩比。 + +可以看到,gzip、bzip2、xz 的压缩比不断优化。不过要注意,压缩比越高,压缩的时间也越长。 + +查看命令:xzcat、xzmore、xzless、xzgrep。 + +```html +$ xz [-dtlkc#] filename +``` + +## 打包 + +压缩指令只能对一个文件进行压缩,而打包能够将多个文件打包成一个大文件。tar 不仅可以用于打包,也可以使用 gip、bzip2、xz 将打包文件进行压缩。 + +```html +$ tar [-z|-j|-J] [cv] [-f 新建的 tar 文件] filename... ==打包压缩 +$ tar [-z|-j|-J] [tv] [-f 已有的 tar 文件] ==查看 +$ tar [-z|-j|-J] [xv] [-f 已有的 tar 文件] [-C 目录] ==解压缩 +-z :使用 zip; +-j :使用 bzip2; +-J :使用 xz; +-c :新建打包文件; +-t :查看打包文件里面有哪些文件; +-x :解打包或解压缩的功能; +-v :在压缩/解压缩的过程中,显示正在处理的文件名; +-f : filename:要处理的文件; +-C 目录 : 在特定目录解压缩。 +``` + +| 使用方式 | 命令 | +| --- | --- | +| 打包压缩 | tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称 | +| 查 看 | tar -jtv -f filename.tar.bz2 | +| 解压缩 | tar -jxv -f filename.tar.bz2 -C 要解压缩的目录 | + +# 六、Bash + +可以通过 Shell 请求内核提供服务,Bash 正是 Shell 的一种。 + +## 特性 + +1. 命令历史:记录使用过的命令。本次登录所执行的命令都会暂时存放到内存中,\~/.bash_history 文件中记录的是前一次登录所执行过的命令。 + +2. 命令与文件补全:快捷键:tab。 + +3. 命名别名:例如 lm 是 ls -al 的别名。 + +4. shell scripts。 + +5. 通配符:例如 ls -l /usr/bin/X\* 列出 /usr/bin 下面所有以 X 开头的文件。 + +## 变量操作 + +- 对一个变量赋值直接使用 = ; +- 对变量取用需要在变量前加上 \$ ,也可以用 \${} 的形式; +- 输出变量使用 echo 命令。 + +```bash +$ var=abc +$ echo $var +$ echo ${var} +``` + +变量内容如果有空格,必须需要使用双引号或者单引号。 + +- 双引号内的特殊字符可以保留原本特性,例如 var="lang is \$LANG",则 var 的值为 lang is zh_TW.UTF-8; +- 单引号内的特殊字符就是特殊字符本身,例如 var='lang is \$LANG',则 var 的值为 lang is \$LANG。 + +可以使用 \`指令\` 或者 \$(指令) 的方式将指令的执行结果赋值给变量。例如 version=\$(uname -r),则 version 的值为 3.10.0-229.el7.x86_64。 + +可以使用 export 命令将自定义变量转成环境变量,环境变量可以在子程序中使用,所谓子程序就是由当前 Bash 而产生的子 Bash。 + +Bash 的变量可以声明为数组和整数数字。注意数字类型没有浮点数。如果不进行声明,默认是字符串类型。变量的声明使用 declare 命令: + +```html +$ declare [-aixr] variable +-a : 定义为数组类型 +-i : 定义为整数类型 +-x : 定义为环境变量 +-r : 定义为 readonly 类型 +``` + +使用 [ ] 来对数组进行索引操作: + +```bash +$ array[1]=a +$ array[2]=b +$ echo ${array[1]} +``` + +## 指令搜索顺序 + +1. 以绝对或相对路径来执行指令,例如 /bin/ls 或者 ./ls ; +2. 由别名找到该指令来执行; +3. 由 Bash 内建的指令来执行; +4. 按 \$PATH 变量指定的搜索路径的顺序找到第一个指令来执行。 + +## 数据流重定向 + +重定向指的是使用文件代替标准输入、标准输出和标准错误输出。 + +| 1 | 代码 | 运算符 | +| :---: | :---: | :---:| +| 标准输入 (stdin) | 0 | < 或 << | +| 标准输出 (stdout) | 1 | > 或 >> | +| 标准错误输出 (stderr) | 2 | 2> 或 2>> | + +其中,有一个箭头的表示以覆盖的方式重定向,而有两个箭头的表示以追加的方式重定向。 + +可以将不需要的标准输出以及标准错误输出重定向到 /dev/null,相当于扔进垃圾箱。 + +如果需要将标准输出以及标准错误输出同时重定向到一个文件,需要将某个输出转换为另一个输出,例如 2>&1 表示将标准错误输出转换为标准输出。 + +```bash +$ find /home -name .bashrc > list 2>&1 +``` + +# 七、管线指令 + +管线是将一个命令的标准输出作为另一个命令的标准输入,在数据需要经过多个步骤的处理之后才能得到我们想要的内容时就可以使用管线。在命令之间使用 | 分隔各个管线命令。 + +```bash +$ ls -al /etc | less +``` + +## 提取指令 + +cut 对数据进行切分,取出想要的部分。提取过程一行一行地进行。 + +```html +$ cut +-d :分隔符 +-f :经过 -d 分隔后,使用 -f n 取出第 n 个区间 +-c :以字符为单位取出区间 +``` + +范例 1:last 将显示的登入者的信息,要求仅显示用户名。 + +```html +$ last +root pts/1 192.168.201.101 Sat Feb 7 12:35 still logged in +root pts/1 192.168.201.101 Fri Feb 6 12:13 - 18:46 (06:33) +root pts/1 192.168.201.254 Thu Feb 5 22:37 - 23:53 (01:16) + +$ last | cut -d ' ' -f 1 +``` + +范例 2:将 export 输出的讯息,取得第 12 字符以后的所有字符串。 + +```html +$ export +declare -x HISTCONTROL="ignoredups" +declare -x HISTSIZE="1000" +declare -x HOME="/home/dmtsai" +declare -x HOSTNAME="study.centos.vbird" +.....(其他省略)..... + +$ export | cut -c 12 +``` + +## 排序指令 + +**sort** 进行排序。 + +```html +$ sort [-fbMnrtuk] [file or stdin] +-f :忽略大小写 +-b :忽略最前面的空格 +-M :以月份的名字来排序,例如 JAN,DEC +-n :使用数字 +-r :反向排序 +-u :相当于 unique,重复的内容只出现一次 +-t :分隔符,默认为 tab +-k :指定排序的区间 +``` + +范例:/etc/passwd 内容是以 : 来分隔的,以第三栏来排序。 + +```html +$ cat /etc/passwd | sort -t ':' -k 3 +root:x:0:0:root:/root:/bin/bash +dmtsai:x:1000:1000:dmtsai:/home/dmtsai:/bin/bash +alex:x:1001:1002::/home/alex:/bin/bash +arod:x:1002:1003::/home/arod:/bin/bash +``` + +**uniq** 可以将重复的数据只取一个。 + +```html +$ uniq [-ic] +-i :忽略大小写 +-c :进行计数 +``` + +范例:取得每个人的登录总次数 + +```html +$ last | cut -d ' ' -f 1 | sort | uniq -c +1 +6 (unknown +47 dmtsai +4 reboot +7 root +1 wtmp +``` + +## 双向输出重定向 + +输出重定向会将输出内容重定向到文件中,而 **tee** 不仅能够完成这个功能,还能保留屏幕上的输出。也就是说,使用 tee 指令,一个输出会同时传送到文件和屏幕上。 + +```html +$ tee [-a] file +``` + +## 字符转换指令 + +**tr** 用来删除一行中的字符,或者对字符进行替换。 + +```html +$ tr [-ds] SET1 ... +-d : 删除行中 SET1 这个字符串 +``` + +范例,将 last 输出的信息所有小写转换为大写。 + +```html +$ last | tr '[a-z]' '[A-Z]' +``` + + **col** 将 tab 字符转为空格字符。 + +```html +$ col [-xb] +-x : 将 tab 键转换成对等的空格键 +``` + +**expand** 将 tab 转换一定数量的空格,默认是 8 个。 + +```html +$ expand [-t] file +-t :tab 转为空格的数量 +``` + +**join** 将有相同数据的那一行合并在一起。 + +```html +$ join [-ti12] file1 file2 +-t :分隔符,默认为空格 +-i :忽略大小写的差异 +-1 :第一个文件所用的比较字段 +-2 :第二个文件所用的比较字段 +``` + +**paste** 直接将两行粘贴在一起。 + +```html +$ paste [-d] file1 file2 +-d :分隔符,默认为 tab +``` + +## 分区指令 + +**split** 将一个文件划分成多个文件。 + +```html +$ split [-bl] file PREFIX +-b :以大小来进行分区,可加单位,例如 b, k, m 等 +-l :以行数来进行分区。 +- PREFIX :分区文件的前导名称 +``` + +# 八、正则表达式 + +## grep + +使用正则表示式把匹配的行提取出来。 + +```html +$ grep [-acinv] [--color=auto] 搜寻字符串 filename +-a : 将 binary 文件以 text 文件的方式进行搜寻 +-c : 计算找到个数 +-i : 忽略大小写 +-n : 输出行号 +-v : 反向选择,亦即显示出没有 搜寻字符串 内容的那一行 +--color=auto :找到的关键字加颜色显示 +``` + +范例:把含有 the 字符串的行提取出来(注意默认会有 --color=auto 选项,因此以下内容在 Linux 中有颜色显示 the 字符串) + +```html +$ grep -n 'the' regular_express.txt +8:I can't finish the test. +12:the symbol '*' is represented as start. +15:You are the best is mean you are the no. 1. +16:The world Happy is the same with "glad". +18:google is the best tools for search keyword +``` + +因为 { 与 } 的符号在 shell 是有特殊意义的,因此必须要使用转义字符进行转义。 + +```html +$ grep -n 'go\{2,5\}g' regular_express.txt +``` + +## printf + +用于格式化输出。 + +它不属于管道命令,在给 printf 传数据时需要使用 $( ) 形式。 + +```html +$ printf '%10s %5i %5i %5i %8.2f \n' $(cat printf.txt) + DmTsai 80 60 92 77.33 + VBird 75 55 80 70.00 + Ken 60 90 70 73.33 +``` + +## awk + +可以根据字段的某些条件进行匹配,例如匹配字段小于某个值的那一行数据。 + +```html +$ awk ' 条件类型 1 {动作 1} 条件类型 2 {动作 2} ...' filename +``` + +awk 每次处理一行,处理的最小单位是字段,每个字段的命名方式为:\$n,n 为字段号,从 1 开始,\$0 表示一整行。 + +范例 1:取出登录用户的用户名和 ip + +```html +$ last -n 5 +dmtsai pts/0 192.168.1.100 Tue Jul 14 17:32 still logged in +dmtsai pts/0 192.168.1.100 Thu Jul 9 23:36 - 02:58 (03:22) +dmtsai pts/0 192.168.1.100 Thu Jul 9 17:23 - 23:36 (06:12) +dmtsai pts/0 192.168.1.100 Thu Jul 9 08:02 - 08:17 (00:14) +dmtsai tty1 Fri May 29 11:55 - 12:11 (00:15) + +$ last -n 5 | awk '{print $1 "\t" $3} +``` + +awk 变量: + +| 变量名称 | 代表意义 | +| -- | -- | +| NF | 每一行拥有的字段总数 | +| NR | 目前所处理的是第几行数据 | +| FS | 目前的分隔字符,默认是空格键 | + +范例 2:输出正在处理的行号,并显示每一行有多少字段 + +```html +$ last -n 5 | awk '{print $1 "\t lines: " NR "\t columns: " NF}' +dmtsai lines: 1 columns: 10 +dmtsai lines: 2 columns: 10 +dmtsai lines: 3 columns: 10 +dmtsai lines: 4 columns: 10 +dmtsai lines: 5 columns: 9 +``` + +可以使用条件,其中等于使用 ==。 + +范例 3:/etc/passwd 文件第三个字段为 UID,对 UID 小于 10 的数据进行处理。 + +```text +$ cat /etc/passwd | awk 'BEGIN {FS=":"} $3 < 10 {print $1 "\t " $3}' +root 0 +bin 1 +daemon 2 +``` + +# 九、进程管理 + +## 查看进程 + +### 1. ps + +查看某个时间点的进程信息 + +示例一:查看自己的进程 + +``` +# ps -l +``` + +示例二:查看系统所有进程 + +``` +# ps aux +``` + +示例三:查看特定的进程 + +```html +# ps aux | grep threadx +``` + +### 2. top + +实时显示进程信息 + +示例:两秒钟刷新一次 + +``` +# top -d 2 +``` + +### 3. pstree + +查看进程树 + +示例:查看所有进程树 + +``` +# pstree -A +``` + +### 4. netstat + +查看占用端口的进程 + +``` +# netstat -anp | grep port +``` + +## 进程状态 + +| 状态 | 说明 | +| :---: | --- | +| R | running or runnable (on run queue) | +| D | uninterruptible sleep (usually IO) | +| S | interruptible sleep (waiting for an event to complete) | +| Z | defunct/zombie, terminated but not reaped by its parent | +| T | stopped, either by a job control signal or because it is being traced| + +

    + +## SIGCHILD + +当一个子进程改变了它的状态时:停止运行,继续运行或者退出,有两件事会发生在父进程中: + +- 得到 SIGCHLD 信号; +- 阻塞的 waitpid(2)(或者 wait)调用会返回。 + +

    + +## 孤儿进程和僵死进程 + +### 1. 孤儿进程 + +一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被 init 进程(进程号为 1)所收养,并由 init 进程对它们完成状态收集工作。 + +由于孤儿进程会被 init 进程收养,所以孤儿进程不会对系统造成危害。 + +### 2. 僵死进程 + +一个子进程的进程描述符在子进程退出时不会释放,只有当父进程通过 wait 或 waitpid 获取了子进程信息后才会释放。如果子进程退出,而父进程并没有调用 wait 或 waitpid,那么子进程的进程描述符仍然保存在系统中,这种进程称之为僵死进程。 + +僵死进程通过 ps 命令显示出来的状态为 Z。 + +系统所能使用的进程号是有限的,如果大量的产生僵死进程,将因为没有可用的进程号而导致系统不能产生新的进程。 + +要消灭系统中大量的僵死进程,只需要将其父进程杀死,此时所有的僵死进程就会变成孤儿进程,从而被 init 所收养,这样 init 就会释放所有的僵死进程所占有的资源,从而结束僵死进程。 + +# 十、I/O 复用 + +## 概念理解 + +I/O Multiplexing 又被称为 Event Driven I/O,它可以让单个进程具有处理多个 I/O 事件的能力。 + +当某个 I/O 事件条件满足时,进程会收到通知。 + +如果一个 Web 服务器没有 I/O 复用,那么每一个 Socket 连接都需要创建一个线程去处理。如果同时连接几万个连接,那么就需要创建相同数量的线程。并且相比于多进程和多线程技术,I/O 复用不需要进程线程创建和切换的开销,系统开销更小。 + +## I/O 模型 + +- 阻塞(Blocking) +- 非阻塞(Non-blocking) +- 同步(Synchronous) +- 异步(Asynchronous) + +阻塞非阻塞是等待 I/O 完成的方式,阻塞要求用户程序停止执行,直到 I/O 完成,而非阻塞在 I/O 完成之前还可以继续执行。 + +同步异步是获知 I/O 完成的方式,同步需要时刻关心 I/O 是否已经完成,异步无需主动关心,在 I/O 完成时它会收到通知。 + +

    + +### 1. 同步-阻塞 + +这是最常见的一种模型,用户程序在使用 read() 时会执行系统调用从而陷入内核,之后就被阻塞直到系统调用完成。 + +应该注意到,在阻塞的过程中,其他程序还可以执行,因此阻塞不意味着整个操作系统都被阻塞。因为其他程序还可以执行,因此不消耗 CPU 时间,这种模型的执行效率会比较高。 + +

    + +### 2. 同步-非阻塞 + +非阻塞意味着用户程序在执行系统调用后还可以执行,内核并不是马上执行完 I/O,而是以一个错误码来告知用户程序 I/O 还未完成。为了获得 I/O 完成事件,用户程序必须调用多次系统调用去询问内核,甚至是忙等,也就是在一个循环里面一直询问并等待。 + +由于 CPU 要处理更多的用户程序的询问,因此这种模型的效率是比较低的。 + +

    + +### 3. 异步-阻塞 + +这是 I/O 复用使用的一种模式,通过使用 select,它可以监听多个 I/O 事件,当这些事件至少有一个发生时,用户程序会收到通知。 + +

    + +### 4. 异步-非阻塞 + +该模式下,I/O 操作会立即返回,之后可以处理其它操作,并且在 I/O 完成时会收到一个通知,此时会中断正在处理的操作,然后完成 I/O 事务。 + +

    + +## select poll epoll + +这三个都是 I/O 多路复用的具体实现,select 出现的最早,之后是 poll,再是 epoll。可以说,新出现的实现是为了修复旧实现的不足。 + +### 1. select + +```c +int select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); +``` + +- fd_set 表示描述符集合; +- readset、writeset 和 exceptset 这三个参数指定让操作系统内核测试读、写和异常条件的描述符; +- timeout 参数告知内核等待所指定描述符中的任何一个就绪可花多少时间; +- 成功调用返回结果大于 0;出错返回结果为 -1;超时返回结果为 0。 + +```c +fd_set fd_in, fd_out; +struct timeval tv; + +// Reset the sets +FD_ZERO( &fd_in ); +FD_ZERO( &fd_out ); + +// Monitor sock1 for input events +FD_SET( sock1, &fd_in ); + +// Monitor sock2 for output events +FD_SET( sock2, &fd_out ); + +// Find out which socket has the largest numeric value as select requires it +int largest_sock = sock1 > sock2 ? sock1 : sock2; + +// Wait up to 10 seconds +tv.tv_sec = 10; +tv.tv_usec = 0; + +// Call the select +int ret = select( largest_sock + 1, &fd_in, &fd_out, NULL, &tv ); + +// Check if select actually succeed +if ( ret == -1 ) + // report error and abort +else if ( ret == 0 ) + // timeout; no event detected +else +{ + if ( FD_ISSET( sock1, &fd_in ) ) + // input event on sock1 + + if ( FD_ISSET( sock2, &fd_out ) ) + // output event on sock2 +} +``` + +每次调用 select() 都需要将 fd_set \*readfds, fd_set \*writefds, fd_set \*exceptfds 链表内容全部从用户进程内存中复制到操作系统内核中,内核需要将所有 fd_set 遍历一遍,这个过程非常低效。 + +返回结果中内核并没有声明哪些 fd_set 已经准备好了,所以如果返回值大于 0 时,程序需要遍历所有的 fd_set 判断哪个 I/O 已经准备好。 + +在 Linux 中 select 最多支持 1024 个 fd_set 同时轮询,其中 1024 由 Linux 内核的 FD_SETSIZE 决定。如果需要打破该限制可以修改 FD_SETSIZE,然后重新编译内核。 + +### 2. poll + +```c +int poll (struct pollfd *fds, unsigned int nfds, int timeout); +``` + +```c +struct pollfd { + int fd; //文件描述符 + short events; //监视的请求事件 + short revents; //已发生的事件 +}; +``` + +```c +// The structure for two events +struct pollfd fds[2]; + +// Monitor sock1 for input +fds[0].fd = sock1; +fds[0].events = POLLIN; + +// Monitor sock2 for output +fds[1].fd = sock2; +fds[1].events = POLLOUT; + +// Wait 10 seconds +int ret = poll( &fds, 2, 10000 ); +// Check if poll actually succeed +if ( ret == -1 ) + // report error and abort +else if ( ret == 0 ) + // timeout; no event detected +else +{ + // If we detect the event, zero it out so we can reuse the structure + if ( pfd[0].revents & POLLIN ) + pfd[0].revents = 0; + // input event on sock1 + + if ( pfd[1].revents & POLLOUT ) + pfd[1].revents = 0; + // output event on sock2 +} +``` + +它和 select() 功能基本相同。同样需要每次将 struct pollfd \*fds 复制到内核,返回后同样需要进行轮询每一个 pollfd 是否已经 I/O 准备好。poll() 取消了 1024 个描述符数量上限,但是数量太大以后不能保证执行效率,因为复制大量内存到内核十分低效,所需时间与描述符数量成正比。poll() 在 pollfd 的重复利用上比 select() 的 fd_set 会更好。 + +如果在多线程下,如果一个线程对某个描述符调用了 poll() 系统调用,但是另一个线程关闭了该描述符,会导致 poll() 调用结果不确定,该问题同样出现在 select() 中。 + +### 3. epoll + +```c +int epoll_create(int size); +int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); +int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout); +``` + +```c +// Create the epoll descriptor. Only one is needed per app, and is used to monitor all sockets. +// The function argument is ignored (it was not before, but now it is), so put your favorite number here +int pollingfd = epoll_create( 0xCAFE ); + +if ( pollingfd < 0 ) + // report error + +// Initialize the epoll structure in case more members are added in future +struct epoll_event ev = { 0 }; + +// Associate the connection class instance with the event. You can associate anything +// you want, epoll does not use this information. We store a connection class pointer, pConnection1 +ev.data.ptr = pConnection1; + +// Monitor for input, and do not automatically rearm the descriptor after the event +ev.events = EPOLLIN | EPOLLONESHOT; +// Add the descriptor into the monitoring list. We can do it even if another thread is +// waiting in epoll_wait - the descriptor will be properly added +if ( epoll_ctl( epollfd, EPOLL_CTL_ADD, pConnection1->getSocket(), &ev ) != 0 ) + // report error + +// Wait for up to 20 events (assuming we have added maybe 200 sockets before that it may happen) +struct epoll_event pevents[ 20 ]; + +// Wait for 10 seconds, and retrieve less than 20 epoll_event and store them into epoll_event array +int ready = epoll_wait( pollingfd, pevents, 20, 10000 ); +// Check if epoll actually succeed +if ( ret == -1 ) + // report error and abort +else if ( ret == 0 ) + // timeout; no event detected +else +{ + // Check if any events detected + for ( int i = 0; i < ret; i++ ) + { + if ( pevents[i].events & EPOLLIN ) + { + // Get back our connection pointer + Connection * c = (Connection*) pevents[i].data.ptr; + c->handleReadEvent(); + } + } +} +``` + +epoll 仅仅适用于 Linux OS。 + +它是 select 和 poll 的增强版,更加灵活而且没有描述符限制。它将用户关心的描述符放到内核的一个事件表中,从而只需要在用户空间和内核空间拷贝一次。 + +select 和 poll 方式中,进程只有在调用一定的方法后,内核才对所有监视的描述符进行扫描。而 epoll 事先通过 epoll_ctl() 来注册描述符,一旦基于某个描述符就绪时,内核会采用类似 callback 的回调机制,迅速激活这个描述符,当进程调用 epoll_wait() 时便得到通知。 + +新版本的 epoll_create(int size) 参数 size 不起任何作用,在旧版本的 epoll 中如果描述符的数量大于 size,不保证服务质量。 + +epoll_ct() 执行一次系统调用,用于向内核注册新的描述符或者是改变某个文件描述符的状态。已注册的描述符在内核中会被维护在一棵红黑树上,通过回调函数内核会将 I/O 准备好的描述符加入到一个链表中管理。 + +epoll_wait() 取出在内核中通过链表维护的 I/O 准备好的描述符,将他们从内核复制到程序中,不需要像 select/poll 对注册的所有描述符遍历一遍。 + +epoll 对多线程编程更有友好,同时多个线程对同一个描述符调用了 epoll_wait 也不会产生像 select/poll 的不确定情况。或者一个线程调用了 epoll_wait 另一个线程关闭了同一个描述符也不会产生不确定情况。 + +## select 和 poll 比较 + +### 1. 功能 + +它们提供了几乎相同的功能,但是在一些细节上有所不同: + +- select 会修改 fd_set 参数,而 poll 不会; +- select 默认只能监听 1024 个描述符,如果要监听更多的话,需要修改 FD_SETSIZE 之后重新编译; +- poll 提供了更多的事件类型。 + +### 2. 速度 + +poll 和 select 在速度上都很慢。 + +- 它们都采取轮询的方式来找到 I/O 完成的描述符,如果描述符很多,那么速度就会很慢; +- select 只使用每个描述符的 3 位,而 poll 通常需要使用 64 位,因此 poll 需要复制更多的内核空间。 + +### 3. 可移植性 + +几乎所有的系统都支持 select,但是只有比较新的系统支持 poll。 + +## eopll 工作模式 + +epoll_event 有两种触发模式:LT(level trigger)和 ET(edge trigger)。 + +### 1. LT 模式 + +当 epoll_wait() 检测到描述符事件发生并将此事件通知应用程序,应用程序可以不立即处理该事件。下次调用 epoll_wait() 时,会再次响应应用程序并通知此事件。是默认的一种模式,并且同时支持 Blocking 和 No-Blocking。 + +### 2. ET 模式 + +当 epoll_wait() 检测到描述符事件发生并将此事件通知应用程序,应用程序必须立即处理该事件。如果不处理,下次调用 epoll_wait() 时,不会再次响应应用程序并通知此事件。很大程度上减少了 epoll 事件被重复触发的次数,因此效率要比 LT 模式高。只支持 No-Blocking,以避免由于一个文件句柄的阻塞读/阻塞写操作把处理多个文件描述符的任务饿死。 + +## select poll epoll 应用场景 + +很容易产生一种错觉认为只要用 epoll 就可以了,select poll 都是历史遗留问题,并没有什么应用场景,其实并不是这样的。 + +### 1. select 应用场景 + +select() poll() epoll_wait() 都有一个 timeout 参数,在 select() 中 timeout 的精确度为 1ns,而 poll() 和 epoll_wait() 中则为 1ms。所以 select 更加适用于实时要求更高的场景,比如核反应堆的控制。 + +select 历史更加悠久,它的可移植性更好,几乎被所有主流平台所支持。 + +### 2. poll 应用场景 + +poll 没有最大描述符数量的限制,如果平台支持应该采用 poll 且对实时性要求并不是十分严格,而不是 select。 + +需要同时监控小于 1000 个描述符。那么也没有必要使用 epoll,因为这个应用场景下并不能体现 epoll 的优势。 + +需要监控的描述符状态变化多,而且都是非常短暂的。因为 epoll 中的所有描述符都存储在内核中,造成每次需要对描述符的状态改变都需要通过 epoll_ctl() 进行系统调用,频繁系统调用降低效率。epoll 的描述符存储在内核,不容易调试。 + +### 3. epoll 应用场景 + +程序只需要运行在 Linux 平台上,有非常大量的描述符需要同时轮询,而且这些连接最好是长连接。 + +### 4. 性能对比 + +> [epoll Scalability Web Page](http://lse.sourceforge.net/epoll/index.html) + +# 参考资料 + +- 鸟哥. 鸟 哥 的 Linux 私 房 菜 基 础 篇 第 三 版[J]. 2009. +- [Linux 平台上的软件包管理](https://www.ibm.com/developerworks/cn/linux/l-cn-rpmdpkg/index.html) +- [Boost application performance using asynchronous I/O](https://www.ibm.com/developerworks/linux/library/l-async/) +- [Synchronous and Asynchronous I/O](https://msdn.microsoft.com/en-us/library/windows/desktop/aa365683(v=vs.85).aspx) +- [Linux IO 模式及 select、poll、epoll 详解](https://segmentfault.com/a/1190000003063859) +- [poll vs select vs event-based](https://daniel.haxx.se/docs/poll-vs-select.html) +- [Linux 之守护进程、僵死进程与孤儿进程](http://liubigbin.github.io/2016/03/11/Linux-%E4%B9%8B%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%E3%80%81%E5%83%B5%E6%AD%BB%E8%BF%9B%E7%A8%8B%E4%B8%8E%E5%AD%A4%E5%84%BF%E8%BF%9B%E7%A8%8B/) +- [Linux process states](https://idea.popcount.org/2012-12-11-linux-process-states/) diff --git a/notes/MySQL.md b/notes/MySQL.md new file mode 100644 index 00000000..fca2798f --- /dev/null +++ b/notes/MySQL.md @@ -0,0 +1,400 @@ + +* [一、存储引擎](#一存储引擎) + * [InnoDB](#innodb) + * [MyISAM](#myisam) + * [比较](#比较) +* [二、数据类型](#二数据类型) + * [整型](#整型) + * [浮点数](#浮点数) + * [字符串](#字符串) + * [时间和日期](#时间和日期) +* [三、索引](#三索引) + * [索引分类](#索引分类) + * [索引的优点](#索引的优点) + * [索引优化](#索引优化) + * [B-Tree 和 B+Tree 原理](#b-tree-和-b+tree-原理) +* [四、查询性能优化](#四查询性能优化) +* [五、分库与分表](#五分库与分表) + * [原因](#原因) + * [实现方式](#实现方式) + * [Merge 存储引擎](#merge-存储引擎) + * [存在的问题](#存在的问题) + * [分表与分区的不同](#分表与分区的不同) +* [六、故障转移和故障恢复](#六故障转移和故障恢复) +* [参考资料](#参考资料) + + + +# 一、存储引擎 + +## InnoDB + +InnoDB 是 MySQL 默认的事务型存储引擎,只有在需要 InnoDB 不支持的特性时,才考虑使用其它存储引擎。 + +采用 MVCC 来支持高并发,并且实现了四个标准的隔离级别,默认级别是可重复读。 + +表是基于聚簇索引建立的,它对主键的查询性能有很高的提升。 + +内部做了很多优化,包括从磁盘读取数据时采用的可预测性读、能够自动在内存中创建哈希索引以加速读操作的自适应哈希索引、能够加速插入操作的插入缓冲区等。 + +通过一些机制和工具支持真正的热备份。 + +## MyISAM + +MyISAM 提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等。但 MyISAM 不支持事务和行级锁,而且崩溃后无法安全恢复。 + +只能对整张表加锁,而不是针对行。 + +可以手工或者自动执行检查和修复操作,但是和事务恢复以及崩溃恢复不同,可能导致一些数据丢失,而且修复操作是非常慢的。 + +可以包含动态或者静态的行。 + +如果指定了 DELAY_KEY_WRITE 选项,在每次修改执行完成时,不会立即将修改的索引数据写入磁盘,而是会写到内存中的键缓冲区,只有在清理键缓冲区或者关闭表的时候才会将对应的索引块写入磁盘。这种方式可以极大的提升写入性能,但是在数据库或者主机崩溃时会造成索引损坏,需要执行修复操作。 + +如果表在创建并导入数据以后,不会再进行修改操作,那么这样的表适合采用 MyISAM 压缩表。 + +对于只读数据,或者表比较小、可以容忍修复操作,则依然可以继续使用 MyISAM。 + +MyISAM 设计简单,数据以紧密格式存储,所以在某些场景下性能很好。 + +## 比较 + +1. 事务:InnoDB 是事务型的。 +2. 备份:InnoDB 支持在线热备份。 +3. 崩溃恢复:MyISAM 崩溃后发生损坏的概率比 InnoDB 高很多,而且恢复的速度也更慢。 +4. 并发:MyISAM 只支持表级锁,而 InnoDB 还支持行级锁。 +5. 其它特性:MyISAM 支持全文索引,地理空间索引。 + +# 二、数据类型 + +## 整型 + +TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 分别使用 8, 16, 24, 32, 64 位存储空间,一般情况下越小的列越好。 + +INT(11) 中的数字只是规定了交互工具显示字符的个数,对于存储和计算来说是没有意义的。 + +## 浮点数 + +FLOAT 和 DOUBLE 为浮点类型,DECIMAL 为高精度小数类型。CPU 原生支持浮点运算,但是不支持 DECIMAl 类型的计算,因此 DECIMAL 的计算比浮点类型需要更高的代价。 + +FLOAT、DOUBLE 和 DECIMAL 都可以指定列宽,例如 DECIMAL(18, 9) 表示总共 18 位,取 9 位存储小数部分,剩下 9 位存储整数部分。 + +## 字符串 + +主要有 CHAR 和 VARCHAR 两种类型,一种是定长的,一种是变长的。 + +VARCHAR 这种变长类型能够节省空间,因为只需要存储必要的内容。但是在执行 UPDATE 时可能会使行变得比原来长,当超出一个页所能容纳的大小时,就要执行额外的操作。MyISAM 会将行拆成不同的片段存储,而 InnoDB 则需要分裂页来使行放进页内。 + +VARCHAR 会保留字符串末尾的空格,而 CHAR 会删除。 + +## 时间和日期 + +MySQL 提供了两种相似的日期时间类型:DATATIME 和 TIMESTAMP。 + +### 1. DATATIME + +能够保存从 1001 年到 9999 年的日期和时间,精度为秒,使用 8 字节的存储空间。 + +它与时区无关。 + +默认情况下,MySQL 以一种可排序的、无歧义的格式显示 DATATIME 值,例如“2008-01-16 22:37:08”,这是 ANSI 标准定义的日期和时间表示方法。 + +### 2. TIMESTAMP + +和 UNIX 时间戳相同,保存从 1970 年 1 月 1 日午夜(格林威治时间)以来的秒数,使用 4 个字节,只能表示从 1970 年 到 2038 年。 + +它和时区有关。 + +MySQL 提供了 FROM_UNIXTIME() 函数把 UNIX 时间戳转换为日期,并提供了 UNIX_TIMESTAMP() 函数把日期转换为 UNIX 时间戳。 + +默认情况下,如果插入时没有指定 TIMESTAMP 列的值,会将这个值设置为当前时间。 + +应该尽量使用 TIMESTAMP,因为它比 DATETIME 空间效率更高。 + +# 三、索引 + +索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现。 + +索引能够轻易将查询性能提升几个数量级。 + +对于非常小的表、大部分情况下简单的全表扫描比建立索引更高效。对于中到大型的表,索引就非常有效。但是对于特大型的表,建立和使用索引的代价将会随之增长。这种情况下,需要用到一种技术可以直接区分出需要查询的一组数据,而不是一条记录一条记录地匹配,例如可以使用分区技术。 + +## 索引分类 + +### 1. B-Tree 索引 + +B-Tree 索引是大多数 MySQL 存储引擎的默认索引类型。 + +因为不再需要进行全表扫描,只需要对树进行搜索即可,因此查找速度快很多。 + +可以指定多个列作为索引列,多个索引列共同组成键。B-Tree 索引适用于全键值、键值范围和键前缀查找,其中键前缀查找只适用于最左前缀查找。 + +除了用于查找,还可以用于排序和分组。 + +如果不是按照索引列的顺序进行查找,则无法使用索引。 + +### 2. 哈希索引 + +基于哈希表实现,优点是查找非常快。 + +在 MySQL 中只有 Memory 引擎显式支持哈希索引。 + +InnoDB 引擎有一个特殊的功能叫“自适应哈希索引”,当某个索引值被使用的非常频繁时,会在 B-Tree 索引之上再创建一个哈希索引,这样就让 B-Tree 索引具有哈希索引的一些优点,比如快速的哈希查找。 + +限制:哈希索引只包含哈希值和行指针,而不存储字段值,所以不能使用索引中的值来避免读取行。不过,访问内存中的行的速度很快,所以大部分情况下这一点对性能影响并不明显;无法用于分组与排序;只支持精确查找,无法用于部分查找和范围查找;如果哈希冲突很多,查找速度会变得很慢。 + +### 3. 空间索引(R-Tree) + +MyISAM 存储引擎支持空间索引,可以用于地理数据存储。 + +空间索引会从所有维度来索引数据,可以有效地使用任意维度来进行组合查询。 + +### 4. 全文索引 + +MyISAM 存储引擎支持全文索引,用于查找文本中的关键词,而不是直接比较索引中的值。 + +使用 MATCH AGAINST,而不是普通的 WHERE。 + +## 索引的优点 + +- 大大减少了服务器需要扫描的数据量; + +- 帮助服务器避免进行排序和创建临时表; + +- 将随机 I/O 变为顺序 I/O。 + +## 索引优化 + +### 1. 独立的列 + +在进行查询时,索引列不能是表达式的一部分,也不能是函数的参数,否则无法使用索引。 + +例如下面的查询不能使用 actor_id 列的索引: + +```sql +SELECT actor_id FROM sakila.actor WHERE actor_id + 1 = 5; +``` + +### 2. 前缀索引 + +对于 BLOB、TEXT 和 VARCHAR 类型的列,必须使用前缀索引,只索引开始的部分字符。 + +对于前缀长度的选取需要根据 **索引选择性** 来确定:不重复的索引值和记录总数的比值。选择性越高,查询效率也越高。最大值为 1 ,此时每个记录都有唯一的索引与其对应。 + +### 3. 多列索引 + +在需要使用多个列作为条件进行查询时,使用多列索引比使用多个单列索引性能更好。例如下面的语句中,最好把 actor_id 和 film_id 设置为多列索引。 + +```sql +SELECT film_id, actor_ id FROM sakila.film_actor +WhERE actor_id = 1 AND film_id = 1; +``` + +### 4. 索引列的顺序 + +让选择性最强的索引列放在前面,例如下面显示的结果中 customer_id 的选择性比 staff_id 更高,因此最好把 customer_id 列放在多列索引的前面。 + +```sql +SELECT COUNT(DISTINCT staff_id)/COUNT(*) AS staff_id_selectivity, +COUNT(DISTINCT customer_id)/COUNT(*) AS customer_id_selectivity, +COUNT(*) +FROM payment; +``` + +```html + staff_id_selectivity: 0.0001 +customer_id_selectivity: 0.0373 + COUNT(*): 16049 +``` + +### 5. 聚簇索引 + +

    + +聚簇索引并不是一种索引类型,而是一种数据存储方式。 + +术语“聚簇”表示数据行和相邻的键值紧密地存储在一起,InnoDB 的聚簇索引的数据行存放在 B-Tree 的叶子页中。 + +因为无法把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索引。 + +#### 优点 + +1. 可以把相关数据保存在一起,减少 I/O 操作; +2. 因为数据保存在 B-Tree 中,因此数据访问更快。 + +#### 缺点 + +1. 聚簇索引最大限度提高了 I/O 密集型应用的性能,但是如果数据全部放在内存,就没必要用聚簇索引。 +2. 插入速度严重依赖于插入顺序,按主键的顺序插入是最快的。 +3. 更新操作代价很高,因为每个被更新的行都会移动到新的位置。 +4. 当插入到某个已满的页中,存储引擎会将该页分裂成两个页面来容纳该行,页分裂会导致表占用更多的磁盘空间。 +5. 如果行比较稀疏,或者由于页分裂导致数据存储不连续时,聚簇索引可能导致全表扫描速度变慢。 + +### 6. 覆盖索引 + +索引包含所有需要查询的字段的值。 + +#### 优点 + +1. 因为索引条目通常远小于数据行的大小,所以若只读取索引,能大大减少数据访问量。 +2. 一些存储引擎(例如 MyISAM)在内存中只缓存索引,而数据依赖于操作系统来缓存。因此,只访问索引可以不使用系统调用(通常比较费时)。 +3. 对于 InnoDB 引擎,若二级索引能够覆盖查询,则无需访问聚簇索引。 + +## B-Tree 和 B+Tree 原理 + +### 1. B-Tree + +

    + +为了描述 B-Tree,首先定义一条数据记录为一个二元组 [key, data],key 为记录的键,data 为数据记录除 key 外的数据。 + +B-Tree 是满足下列条件的数据结构: + +- 所有叶节点具有相同的深度,也就是说 B-Tree 是平衡的; +- 一个节点中的 key 从左到右非递减排列; +- 如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于 keyi 且小于 keyi+1。 + +在 B-Tree 中按 key 检索数据的算法非常直观:首先从根节点进行二分查找,如果找到则返回对应节点的 data,否则对相应区间的指针指向的节点递归进行查找,直到找到节点或找到 null 指针,前者查找成功,后者查找失败。 + +由于插入删除新的数据记录会破坏 B-Tree 的性质,因此在插入删除时,需要对树进行一个分裂、合并、转移等操作以保持 B-Tree 性质。 + +### 2. B+Tree + +

    + +与 B-Tree 相比,B+Tree 有以下不同点: + +- 每个节点的指针上限为 2d 而不是 2d+1; +- 内节点不存储 data,只存储 key,叶子节点不存储指针。 + +### 3. 带有顺序访问指针的 B+Tree + +

    + +一般在数据库系统或文件系统中使用的 B+Tree 结构都在经典 B+Tree 基础上进行了优化,在叶子节点增加了顺序访问指针,做这个优化的目的是为了提高区间访问的性能。 + +### 4. 为什么使用 B-Tree 和 B+Tree + +红黑树等数据结构也可以用来实现索引,但是文件系统及数据库系统普遍采用 B-/+Tree 作为索引结构。 + +页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每个存储块称为一页(在许多操作系统中,页得大小通常为 4k),主存和磁盘以页为单位交换数据。 + +一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。为了减少磁盘 I/O,磁盘往往不是严格按需读取,而是每次都会预读。这样做的理论依据是计算机科学中著名的局部性原理:当一个数据被用到时,其附近的数据也通常会马上被使用。数据库系统的设计者巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次 I/O 就可以完全载入。B-Tree 中一次检索最多需要 h-1 次 I/O(根节点常驻内存),渐进复杂度为 O(h)=O(logdN)。一般实际应用中,出度 d 是非常大的数字,通常超过 100,因此 h 非常小(通常不超过 3)。而红黑树这种结构,h 明显要深的多。并且于逻辑上很近的节点(父子)物理上可能很远,无法利用局部性,效率明显比 B-Tree 差很多。 + +B+Tree 更适合外存索引,原因和内节点出度 d 有关。由于 B+Tree 内节点去掉了 data 域,因此可以拥有更大的出度,拥有更好的性能。 + +# 四、查询性能优化 + +### Explain + +用来分析 SQL 语句,分析结果中比较重要的字段有: + +- select_type : 查询类型,有简单查询、联合查询和子查询 + +- key : 使用的索引 + +- rows : 扫描的行数 + +### 减少返回的列 + +慢查询主要是因为访问了过多数据,除了访问过多行之外,也包括访问过多列。 + +最好不要使用 SELECT * 语句,要根据需要选择查询的列。 + +### 减少返回的行 + +最好使用 LIMIT 语句来取出想要的那些行。 + +还可以建立索引来减少条件语句的全表扫描。例如对于下面的语句,不使用索引的情况下需要进行全表扫描,而使用索引只需要扫描几行记录即可,使用 Explain 语句可以通过观察 rows 字段来看出这种差异。 + +```sql +SELECT * FROM sakila.film_actor WHERE film_id = 1; +``` + +### 拆分大的 DELETE 或 INSERT 语句 + +如果一次性执行的话,可能一次锁住很多数据、占满整个事务日志、耗尽系统资源、阻塞很多小的但重要的查询。 + +```sql +DELEFT FROM messages WHERE create < DATE_SUB(NOW(), INTERVAL 3 MONTH); +``` +```sql +rows_affected = 0 +do { + rows_affected = do_query( + "DELETE FROM messages WHERE create < DATE_SUB(NOW(), INTERVAL 3 MONTH) LIMIT 10000") +} while rows_affected > 0 +``` + +# 五、分库与分表 + +## 原因 + +随着时间和业务的发展,数据库中的表会越来越多,并且表中的数据量也会越来越大,那么读写操作的开销也会随着增大。 + +## 实现方式 + +### 1. 垂直切分 + +将表按功能模块、关系密切程度划分出来,部署到不同的库上。例如,我们会建立商品数据库 payDB、用户数据库 userDB 等,分别用来存储项目与商品有关的表和与用户有关的表。 + +### 2. 水平切分 + +把表中的数据按照某种规则存储到多个结构相同的表中,例如按 id 的散列值、性别等进行划分。 + +### 3. 切分的选择 + +如果数据库中的表太多,并且项目各项业务逻辑清晰,那么垂直切分是首选。 + +如果数据库的表不多,但是单表的数据量很大,应该选择水平切分。 + +## Merge 存储引擎 + +该存储引擎支持分表。 + +## 存在的问题 + +### 1. 事务问题 + +在执行分库分表之后,由于数据存储到了不同的库上,数据库事务管理出现了困难。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价;如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。 + +### 2. 跨库跨表连接问题 + +在执行了分库分表之后,难以避免会将原本逻辑关联性很强的数据划分到不同的表、不同的库上。这时,表的连接操作将受到限制,我们无法连接位于不同分库的表,也无法连接分表粒度不同的表,导致原本只需要一次查询就能够完成的业务需要进行多次才能完成。 + +### 3. 额外的数据管理负担和数据运算压力 + +最显而易见的就是数据的定位问题和数据的增删改查的重复执行问题,这些都可以通过应用程序解决,但必然引起额外的逻辑运算。 + +## 分表与分区的不同 + +分表,就是将一张表分成多个小表,这些小表拥有不同的表名;而分区是将一张表的数据分为多个区块,这些区块可以存储在同一个磁盘上,也可以存储在不同的磁盘上,这种方式下表仍然只有一个。 + +# 六、故障转移和故障恢复 + +故障转移也叫做切换,当主库出现故障时就切换到备库,使备库成为主库。故障恢复顾名思义就是从故障中恢复过来,并且保证数据的正确性。 + +### 提升备库或切换角色 + +提升一台备库为主库,或者在一个主-主复制结构中调整主动和被动角色。 + +### 虚拟 IP 地址和 IP 托管 + +为 MySQL 实例指定一个逻辑 IP 地址,当 MySQL 实例失效时,可以将 IP 地址转移到另一台 MySQL 服务器上。 + +### 中间件解决方案 + +通过代理,可以路由流量到可以使用的服务器上。 + +

    + +### 在应用中处理故障转移 + +将故障转移整合到应用中可能导致应用变得太过笨拙。 + +# 参考资料 + +- 高性能 MySQL +- [MySQL 索引背后的数据结构及算法原理 ](http://blog.codinglabs.org/articles/theory-of-mysql-index.html) +- [20+ 条 MySQL 性能优化的最佳经验 ](https://www.jfox.info/20-tiao-mysql-xing-nen-you-hua-de-zui-jia-jing-yan.html) +- [数据库为什么分库分表?mysql的分库分表方案](https://www.i3geek.com/archives/1108) diff --git a/notes/Redis.md b/notes/Redis.md new file mode 100644 index 00000000..b882428b --- /dev/null +++ b/notes/Redis.md @@ -0,0 +1,460 @@ + +* [一、Redis 是什么](#一redis-是什么) +* [二、五种基本类型](#二五种基本类型) + * [1. STRING](#1-string) + * [2. LIST](#2-list) + * [3. SET](#3-set) + * [4. HASH](#4-hash) + * [5. ZSET](#5-zset) +* [三、键的过期时间](#三键的过期时间) +* [四、发布与订阅](#四发布与订阅) +* [五、事务](#五事务) +* [六、持久化](#六持久化) + * [1. 快照持久化](#1-快照持久化) + * [2. AOF 持久化](#2-aof-持久化) +* [七、复制](#七复制) + * [从服务器连接主服务器的过程](#从服务器连接主服务器的过程) + * [主从链](#主从链) +* [八、处理故障](#八处理故障) +* [九、分片](#九分片) + * [1. 客户端分片](#1-客户端分片) + * [2. 代理分片](#2-代理分片) + * [3. 服务器分片](#3-服务器分片) +* [十、事件](#十事件) + * [事件类型](#事件类型) + * [事件的调度与执行](#事件的调度与执行) +* [十一、Redis 与 Memcached 的区别](#十一redis-与-memcached-的区别) + * [数据类型](#数据类型) + * [数据持久化](#数据持久化) + * [分布式](#分布式) + * [内存管理机制](#内存管理机制) +* [十二、Redis 适用场景](#十二redis-适用场景) + * [缓存](#缓存) + * [消息队列](#消息队列) + * [计数器](#计数器) + * [好友关系](#好友关系) +* [十三、数据淘汰策略](#十三数据淘汰策略) +* [十四、一个简单的论坛系统分析](#十四一个简单的论坛系统分析) + * [文章信息](#文章信息) + * [点赞功能](#点赞功能) + * [对文章进行排序](#对文章进行排序) +* [参考资料](#参考资料) + + + +# 一、Redis 是什么 + +Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。 + +五种类型数据类型为:字符串、列表、集合、有序集合、散列表。 + +Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。 + +# 二、五种基本类型 + +| 数据类型 | 可以存储的值 | 操作 | +| -- | -- | -- | +| STRING | 字符串、整数或者浮点数 | 对整个字符串或者字符串的其中一部分执行操作
    对整数和浮点数执行自增或者自减操作 | +| LIST | 链表 | 从两端压入或者弹出元素
    读取单个或者多个元素
    进行修剪,只保留一个范围内的元素 | +| SET | 无序集合 | 添加、获取、移除单个元素
    检查一个元素是否存在于集合中
    计算交集、并集、差集
    从集合里面随机获取元素 | +| HASH | 包含键值对的无序散列表 | 添加、获取、移除单个键值对
    获取所有键值对
    检查某个键是否存在| +| ZSET | 有序集合 | 添加、获取、删除元素个元素
    根据分值范围或者成员来获取元素
    计算一个键的排名 | + +> [What Redis data structures look like](https://redislabs.com/ebook/part-1-getting-started/chapter-1-getting-to-know-redis/1-2-what-redis-data-structures-look-like/) + +## 1. STRING + +

    + +```html +> set hello world +OK +> get hello +"world" +> del hello +(integer) 1 +> get hello +(nil) +``` + +## 2. LIST + +

    + +```html +> rpush list-key item +(integer) 1 +> rpush list-key item2 +(integer) 2 +> rpush list-key item +(integer) 3 + +> lrange list-key 0 -1 +1) "item" +2) "item2" +3) "item" + +> lindex list-key 1 +"item2" + +> lpop list-key +"item" + +> lrange list-key 0 -1 +1) "item2" +2) "item" +``` + +## 3. SET + +

    + +```html +> sadd set-key item +(integer) 1 +> sadd set-key item2 +(integer) 1 +> sadd set-key item3 +(integer) 1 +> sadd set-key item +(integer) 0 + +> smembers set-key +1) "item" +2) "item2" +3) "item3" + +> sismember set-key item4 +(integer) 0 +> sismember set-key item +(integer) 1 + +> srem set-key item2 +(integer) 1 +> srem set-key item2 +(integer) 0 + +> smembers set-key +1) "item" +2) "item3" +``` + +## 4. HASH + +

    + +```html +> hset hash-key sub-key1 value1 +(integer) 1 +> hset hash-key sub-key2 value2 +(integer) 1 +> hset hash-key sub-key1 value1 +(integer) 0 + +> hgetall hash-key +1) "sub-key1" +2) "value1" +3) "sub-key2" +4) "value2" + +> hdel hash-key sub-key2 +(integer) 1 +> hdel hash-key sub-key2 +(integer) 0 + +> hget hash-key sub-key1 +"value1" + +> hgetall hash-key +1) "sub-key1" +2) "value1" +``` + +## 5. ZSET + +

    + +```html +> zadd zset-key 728 member1 +(integer) 1 +> zadd zset-key 982 member0 +(integer) 1 +> zadd zset-key 982 member0 +(integer) 0 + +> zrange zset-key 0 -1 withscores +1) "member1" +2) "728" +3) "member0" +4) "982" + +> zrangebyscore zset-key 0 800 withscores +1) "member1" +2) "728" + +> zrem zset-key member1 +(integer) 1 +> zrem zset-key member1 +(integer) 0 + +> zrange zset-key 0 -1 withscores +1) "member0" +2) "982" +``` + +# 三、键的过期时间 + +Redis 可以为每个键设置过期时间,当键过期时,会自动删除该键。 + +对于散列表这种容器,只能为整个键设置过期时间(整个散列表),而不能为键里面的单个元素设置过期时间。 + +过期时间对于清理缓存数据非常有用。 + +# 四、发布与订阅 + +发布与订阅实际上是观察者模式,订阅者订阅了频道之后,发布者向频道发送字符串消息会被所有订阅者接收到。 + +发布与订阅有一些问题,很少使用它,而是使用替代的解决方案。问题如下: + +1. 如果订阅者读取消息的速度很慢,会使得消息不断积压在发布者的输出缓存区中,造成内存占用过多; +2. 如果订阅者在执行订阅的过程中网络出现问题,那么就会丢失断线期间发送的所有消息。 + +# 五、事务 + +Redis 最简单的事务实现方式是使用 MULTI 和 EXEC 命令将事务操作包围起来。 + +MULTI 和 EXEC 中的操作将会一次性发送给服务器,而不是一条一条发送,这种方式称为流水线,它可以减少客户端与服务器之间的网络通信次数从而提升性能。 + +# 六、持久化 + +Redis 是内存型数据库,为了保证数据在断电后不会丢失,需要将内存中的数据持久化到硬盘上。 + +## 1. 快照持久化 + +将某个时间点的所有数据都存放到硬盘上。 + +可以将快照复制到其它服务器从而创建具有相同数据的服务器副本。 + +如果系统发生故障,将会丢失最后一次创建快照之后的数据。并且如果数据量很大,保存快照的时间也会很长。 + +## 2. AOF 持久化 + +AOF 持久化将写命令添加到 AOF 文件(Append Only File)的末尾。 + +对硬盘的文件进行写入时,写入的内容首先会被存储到缓冲区,然后由操作系统决定什么时候将该内容同步到硬盘,用户可以调用 file.flush() 方法请求操作系统尽快将缓冲区存储的数据同步到硬盘。因此将写命令添加到 AOF 文件时,要根据需求来保证何时将添加的数据同步到硬盘上,有以下同步选项: + +| 选项 | 同步频率 | +| -- | -- | +| always | 每个写命令都同步 | +| everysec | 每秒同步一次 | +| no | 让操作系统来决定何时同步 | + +always 选项会严重减低服务器的性能;everysec 选项比较合适,可以保证系统奔溃时只会丢失一秒左右的数据,并且 Redis 每秒执行一次同步对服务器性能几乎没有任何影响;no 选项并不能给服务器性能带来多大的提升,而且也会增加系统奔溃时数据丢失的数量。 + +随着服务器写请求的增多,AOF 文件会越来越大;Redis 提供了一种将 AOF 重写的特性,能够去除 AOF 文件中的冗余写命令。 + +# 七、复制 + +通过使用 slaveof host port 命令来让一个服务器成为另一个服务器的从服务器。 + +一个从服务器只能有一个主服务器,并且不支持主主复制。 + +## 从服务器连接主服务器的过程 + +1. 主服务器创建快照文件,发送给从服务器,并在发送期间使用缓冲区记录执行的写命令。快照文件发送完毕之后,开始向从服务器发送存储在缓冲区中的写命令; + +2. 从服务器丢弃所有旧数据,载入主服务器发来的快照文件,之后从服务器开始接受主服务器发来的写命令; + +3. 主服务器每执行一次写命令,就向从服务器发送相同的写命令。 + +## 主从链 + +随着负载不断上升,主服务器可能无法很快地更新所有从服务器,或者重新连接和重新同步从服务器将导致系统超载。为了解决这个问题,可以创建一个中间层来分担主服务器的复制工作。中间层的服务器是最上层服务器的从服务器,又是最下层服务器的主服务器。 + +

    + +# 八、处理故障 + +要用到持久化文件来恢复服务器的数据。 + +持久化文件可能因为服务器出错也有错误,因此要先对持久化文件进行验证和修复。对 AOF 文件就行验证和修复很容易,修复操作将第一个出错命令和其后的所有命令都删除;但是只能验证快照文件,无法对快照文件进行修复,因为快照文件进行了压缩,出现在快照文件中间的错误可能会导致整个快照文件的剩余部分无法读取。 + +当主服务器出现故障时,Redis 常用的做法是新开一台服务器作为主服务器,具体步骤如下:假设 A 为主服务器,B 为从服务器,当 A 出现故障时,让 B 生成一个快照文件,将快照文件发送给 C,并让 C 恢复快照文件的数据。最后,让 B 成为 C 的从服务器。 + +# 九、分片 + +Redis 中的分片类似于 MySQL 的分表操作,分片是将数据划分为多个部分的方法,对数据的划分可以基于键包含的 ID、基于键的哈希值,或者基于以上两者的某种组合。通过对数据进行分片,用户可以将数据存储到多台机器里面,也可以从多台机器里面获取数据,这种方法在解决某些问题时可以获得线性级别的性能提升。 + +假设有 4 个 Reids 实例 R0,R1,R2,R3,还有很多表示用户的键 user:1,user:2,... 等等,有不同的方式来选择一个指定的键存储在哪个实例中。最简单的方式是范围分片,例如用户 id 从 0\~1000 的存储到实例 R0 中,用户 id 从 1001\~2000 的存储到实例 R1 中,等等。但是这样需要维护一张映射范围表,维护操作代价很高。还有一种方式是哈希分片,使用 CRC32 哈希函数将键转换为一个数字,再对实例数量求模就能知道应该存储的实例。 + +## 1. 客户端分片 + +客户端使用一致性哈希等算法决定键应当分布到哪个节点。 + +## 2. 代理分片 + +将客户端请求发送到代理上,由代理转发请求到正确的节点上。 + +## 3. 服务器分片 + +Redis Cluster。 + +# 十、事件 + +## 事件类型 + +### 1. 文件事件 + +服务器有许多套接字,事件产生时会对这些套接字进行操作,服务器通过监听套接字来处理事件。常见的文件事件有:客户端的连接事件;客户端的命令请求事件;服务器向客户端返回命令结果的事件; + +### 2. 时间事件 + +又分为两类:定时事件是让一段程序在指定的时间之内执行一次;周期性时间是让一段程序每隔指定时间就执行一次。 + +## 事件的调度与执行 + +服务器需要不断监听文件事件的套接字才能得到待处理的文件事件,但是不能监听太久,否则时间事件无法在规定的时间内执行,因此监听时间应该根据距离现在最近的时间事件来决定。 + +事件调度与执行由 aeProcessEvents 函数负责,伪代码如下: + +```python +def aeProcessEvents(): + + # 获取到达时间离当前时间最接近的时间事件 + time_event = aeSearchNearestTimer() + + # 计算最接近的时间事件距离到达还有多少毫秒 + remaind_ms = time_event.when - unix_ts_now() + + # 如果事件已到达,那么 remaind_ms 的值可能为负数,将它设为 0 + if remaind_ms < 0: + remaind_ms = 0 + + # 根据 remaind_ms 的值,创建 timeval + timeval = create_timeval_with_ms(remaind_ms) + + # 阻塞并等待文件事件产生,最大阻塞时间由传入的 timeval 决定 + aeApiPoll(timeval) + + # 处理所有已产生的文件事件 + procesFileEvents() + + # 处理所有已到达的时间事件 + processTimeEvents() +``` + +将 aeProcessEvents 函数置于一个循环里面,加上初始化和清理函数,就构成了 Redis 服务器的主函数,伪代码如下: + +```python +def main(): + + # 初始化服务器 + init_server() + + # 一直处理事件,直到服务器关闭为止 + while server_is_not_shutdown(): + aeProcessEvents() + + # 服务器关闭,执行清理操作 + clean_server() +``` + +从事件处理的角度来看,服务器运行流程如下: + +

    + +# 十一、Redis 与 Memcached 的区别 + +两者都是非关系型内存键值数据库。有以下主要不同: + +## 数据类型 + +Memcached 仅支持字符串类型,而 Redis 支持五种不同种类的数据类型,使得它可以更灵活地解决问题。 + +## 数据持久化 + +Redis 支持两种持久化策略:RDB 快照和 AOF 日志,而 Memcached 不支持持久化。 + +## 分布式 + +Memcached 不支持分布式,只能通过在客户端使用像一致性哈希这样的分布式算法来实现分布式存储,这种方式在存储和查询时都需要先在客户端计算一次数据所在的节点。 + +Redis Cluster 实现了分布式的支持。 + +## 内存管理机制 + +在 Redis 中,并不是所有数据都一直存储在内存中,可以将一些很久没用的 value 交换到磁盘。而 Memcached 的数据则会一直在内存中。 + +Memcached 将内存分割成特定长度的块来存储数据,以完全解决内存碎片的问题,但是这种方式会使得内存的利用率不高,例如块的大小为 128 bytes,只存储 100 bytes 的数据,那么剩下的 28 bytes 就浪费掉了。 + +# 十二、Redis 适用场景 + +## 缓存 + +适用 Redis 作为缓存,将热点数据放到内存中。 + +## 消息队列 + +Redis 的 List 类型是双向链表,很适合用于消息队列。 + +## 计数器 + +Redis 这种内存数据库才能支持计数器的频繁读写操作。 + +## 好友关系 + +使用 set 类型的交集很容易就可以知道两个用户的共同好友。 + +# 十三、数据淘汰策略 + +可以设置内存最大使用量,当内存使用量超过时施行淘汰策略,具体有 6 种淘汰策略。 + +| 策略 | 描述 | +| -- | -- | +| volatile-lru | 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰 | +| volatile-ttl | 从已设置过期时间的数据集中挑选将要过期的数据淘汰 | +|volatile-random | 从已设置过期时间的数据集中任意选择数据淘汰 | +| allkeys-lru | 从所有数据集中挑选最近最少使用的数据淘汰 | +| allkeys-random | 从所有数据集中任意选择数据进行淘汰 | +| no-envicition | 禁止驱逐数据 | + +如果使用 Redis 来缓存数据时,要保证所有数据都是热点数据,可以将内存最大使用量设置为热点数据占用的内存量,然后启用 allkeys-lru 淘汰策略,将最近最少使用的数据淘汰。 + +# 十四、一个简单的论坛系统分析 + +该论坛系统功能如下: + +- 可以发布文章; +- 可以对文章进行点赞; +- 在首页可以按文章的发布时间或者文章的点赞数进行排序显示; + +## 文章信息 + +文章包括标题、作者、赞数等信息,在关系型数据库中很容易构建一张表来存储这些信息,在 Redis 中可以使用 HASH 来存储每种信息以及其对应的值的映射。 + +Redis 没有关系型数据库中的表这一概念来将同类型的数据存放在一起,而是使用命名空间的方式来实现这一功能。键名的前面部分存储命名空间,后面部分的内容存储 ID,通常使用 : 来进行分隔。例如下面的 HASH 的键名为 article:92617,其中 article 为命名空间,ID 为 92617。 + +

    + +## 点赞功能 + +当有用户为一篇文章点赞时,除了要对该文章的 votes 字段进行加 1 操作,还必须记录该用户已经对该文章进行了点赞,防止用户点赞次数超过 1。可以建立文章的已投票用户集合来进行记录。 + +为了节约内存,规定一篇文章发布满一周之后,就不能再对它进行投票,而文章的已投票集合也会被删除,可以为文章的已投票集合设置一个一周的过期时间就能实现这个规定。 + +

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

    + +# 参考资料 + +- Redis 实战 +- Reids 设计与实现 +- [REDIS IN ACTION](https://redislabs.com/ebook/foreword/) +- [论述 Redis 和 Memcached 的差异](http://www.cnblogs.com/loveincode/p/7411911.html) +- [Redis 3.0 中文版- 分片](http://wiki.jikexueyuan.com/project/redis-guide) +- [Redis 应用场景](http://www.scienjus.com/redis-use-case/) diff --git a/notes/SQL.md b/notes/SQL.md new file mode 100644 index 00000000..651c784a --- /dev/null +++ b/notes/SQL.md @@ -0,0 +1,732 @@ + +* [一、基础](#一基础) +* [二、创建表](#二创建表) +* [三、修改表](#三修改表) +* [四、插入](#四插入) +* [五、更新](#五更新) +* [六、删除](#六删除) +* [七、查询](#七查询) +* [八、排序](#八排序) +* [九、过滤](#九过滤) +* [十、通配符](#十通配符) +* [十一、计算字段](#十一计算字段) +* [十二、函数](#十二函数) +* [十三、分组](#十三分组) +* [十四、子查询](#十四子查询) +* [十五、连接](#十五连接) +* [十六、组合查询](#十六组合查询) +* [十七、视图](#十七视图) +* [十八、存储过程](#十八存储过程) +* [十九、游标](#十九游标) +* [二十、触发器](#二十触发器) +* [二十一、事务处理](#二十一事务处理) +* [二十二、字符集](#二十二字符集) +* [二十三、权限管理](#二十三权限管理) + + + +# 一、基础 + +模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。 + +主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。 + +SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。 + +SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。 + +SQL 支持以下三种注释: + +```sql +# 注释 +SELECT * +FROM mytable; -- 注释 +/* 注释1 + 注释2 */ +``` + +# 二、创建表 + +```sql +CREATE TABLE mytable ( + id INT NOT NULL AUTO_INCREMENT, + col1 INT NOT NULL DEFAULT 1, + col2 VARCHAR(45) NULL, + col3 DATE NULL, + PRIMARY KEY (`id`)); +``` + +# 三、修改表 + +添加列 + +```sql +ALTER TABLE mytable +ADD col CHAR(20); +``` + +删除列 + +```sql +ALTER TABLE mytable +DROP COLUMN col; +``` + +删除表 + +```sql +DROP TABLE mytable; +``` + +# 四、插入 + +普通插入 + +```sql +INSERT INTO mytable(col1, col2) +VALUES(val1, val2); +``` + +插入检索出来的数据 + +```sql +INSERT INTO mytable1(col1, col2) +SELECT col1, col2 +FROM mytable2; +``` + +将一个表的内容插入到一个新表 + +```sql +CREATE TABLE newtable AS +SELECT * FROM mytable; +``` + +# 五、更新 + +```sql +UPDATE mytable +SET col = val +WHERE id = 1; +``` + +# 六、删除 + +```sql +DELETE FROM mytable +WHERE id = 1; +``` + +**TRUNCATE TABLE** 可以清空表,也就是删除所有行。 + +使用更新和删除操作时一定要用 WHERE 子句,不然会把整张表的数据都破坏。可以先用 SELECT 语句进行测试,防止错误删除。 + +# 七、查询 + +## DISTINCT + +相同值只会出现一次。它作用于所有列,也就是说所有列的值都相同才算相同。 + +```sql +SELECT DISTINCT col1, col2 +FROM mytable; +``` + +## LIMIT + +限制返回的行数。可以有两个参数,第一个参数为起始行,从 0 开始;第二个参数为返回的总行数。 + +返回前 5 行: + +```sql +SELECT * +FROM mytable +LIMIT 5; +``` + +```sql +SELECT * +FROM mytable +LIMIT 0, 5; +``` + +返回第 3 \~ 5 行: + +```sql +SELECT * +FROM mytable +LIMIT 2, 3; +``` + + +# 八、排序 + +- **ASC** :升序(默认) +- **DESC** :降序 + +可以按多个列进行排序,并且为每个列指定不同的排序方式: + +```sql +SELECT * +FROM mytable +ORDER BY col1 DESC, col2 ASC; +``` + +# 九、过滤 + +不进行过滤的数据非常大,导致通过网络传输了很多多余的数据,从而浪费了网络带宽。因此尽量使用 SQL 语句来过滤不必要的数据,而不是传输所有的数据到客户端中然后由客户端进行过滤。 + +```sql +SELECT * +FROM mytable +WHERE col IS NULL; +``` + +下表显示了 WHERE 子句可用的操作符 + +| 操作符 | 说明 | +| ------------ | ------------ | +| = < > | 等于 小于 大于 | +| <> != | 不等于 | +| <= !> | 小于等于 | +| >= !< | 大于等于 | +| BETWEEN | 在两个值之间 | +| IS NULL | 为NULL值 | + +应该注意到,NULL 与 0 、空字符串都不同。 + +**AND OR** 用于连接多个过滤条件。优先处理 AND,因此当一个过滤表达式涉及到多个 AND 和 OR 时,应当使用 () 来决定优先级。 + +**IN** 操作符用于匹配一组值,其后也可以接一个 SELECT 子句,从而匹配子查询得到的一组值。 + +**NOT** 操作符用于否定一个条件。 + +# 十、通配符 + +通配符也是用在过滤语句中,但它只能用于文本字段。 + +- **%** 匹配 >=0 个任意字符,类似于 \*; + +- **\_** 匹配 ==1 个任意字符,类似于 \.; + +- **[ ]** 可以匹配集合内的字符,例如 [ab] 将匹配字符 a 或者 b。用脱字符 ^ 可以对其进行否定,也就是不匹配集合内的字符。 + +使用 Like 来进行通配符匹配。 + +```sql +SELECT * +FROM mytable +WHERE col LIKE '[^AB]%' -- 不以 A 和 B 开头的任意文本 +``` +不要滥用通配符,通配符位于开头处匹配会非常慢。 + +# 十一、计算字段 + +在数据库服务器上完成数据的转换和格式化的工作往往比客户端上快得多,并且转换和格式化后的数据量更少的话可以减少网络通信量。 + +计算字段通常需要使用 **AS** 来取别名,否则输出的时候字段名为计算表达式。 + +```sql +SELECT col1*col2 AS alias +FROM mytable +``` + +**CONCAT()** 用于连接两个字段。许多数据库会使用空格把一个值填充为列宽,因此连接的结果会出现一些不必要的空格,使用 **TRIM()** 可以去除首尾空格。 + +```sql +SELECT CONCAT(TRIM(col1), ' (', TRIM(col2), ')') +FROM mytable +``` + +# 十二、函数 + +各个 DBMS 的函数都是不相同的,因此不可移植。 + +## 文本处理 + +| 函数 | 说明 | +| ------------ | ------------ | +| LEFT() RIGHT() | 左边或者右边的字符 | +| LOWER() UPPER() | 转换为小写或者大写 | +| LTRIM() RTIM() | 去除左边或者右边的空格 | +| LENGTH() | 长度 | +| SUNDEX() | 转换为语音值 | + +其中, **SOUNDEX()** 是将一个字符串转换为描述其语音表示的字母数字模式的算法,它是根据发音而不是字母比较。 + +```sql +SELECT * +FROM mytable +WHERE SOUNDEX(col1) = SOUNDEX('apple') +``` + +## 日期和时间处理 + +- 日期格式:YYYY-MM-DD +- 时间格式:HH:MM:SS + +|函 数 | 说 明| +| --- | --- | +| AddDate() | 增加一个日期(天、周等)| +| AddTime() | 增加一个时间(时、分等)| +| CurDate() | 返回当前日期 | +| CurTime() | 返回当前时间 | +| Date() |返回日期时间的日期部分| +| DateDiff() |计算两个日期之差| +| Date_Add() |高度灵活的日期运算函数| +| Date_Format() |返回一个格式化的日期或时间串| +| Day()| 返回一个日期的天数部分| +| DayOfWeek() |对于一个日期,返回对应的星期几| +| Hour() |返回一个时间的小时部分| +| Minute() |返回一个时间的分钟部分| +| Month() |返回一个日期的月份部分| +| Now() |返回当前日期和时间| +| Second() |返回一个时间的秒部分| +| Time() |返回一个日期时间的时间部分| +| Year() |返回一个日期的年份部分| + +```sql +mysql> SELECT NOW(); + -> '2017-06-28 14:01:52' +``` + +## 数值处理 + +| 函数 | 说明 | +| --- | --- | +| SIN() | 正弦 | +| COS() | 余弦 | +| TAN() | 正切 | +| ABS() | 绝对值 | +| SQRT() | 平方根 | +| MOD() | 余数 | +| EXP() | 指数 | +| PI() | 圆周率 | +| RAND() | 随机数 | + +## 汇总 + +|函 数 |说 明| +| --- | --- | +| AVG() | 返回某列的平均值 | +| COUNT() | 返回某列的行数 | +| MAX() | 返回某列的最大值 | +| MIN() | 返回某列的最小值 | +| SUM() |返回某列值之和 | + +AVG() 会忽略 NULL 行。 + +使用 DISTINCT 可以汇总函数值汇总不同的值。 + +```sql +SELECT AVG(DISTINCT col1) AS avg_col +FROM mytable +``` + +# 十三、分组 + +分组就是把具有相同的数据值的行放在同一组中。 + +可以对同一分组数据使用汇总函数进行处理,例如求分组数据的平均值等。 + +指定的分组字段除了能让数组按该字段进行分组,也可以按该字段进行排序,例如按 col 字段排序并分组数据: + +```sql +SELECT col, COUNT(*) AS num +FROM mytable +GROUP BY col; +``` + +WHERE 过滤行,HAVING 过滤分组。行过滤应当先与分组过滤; + +```sql +SELECT col, COUNT(*) AS num +FROM mytable +WHERE col > 2 +GROUP BY col +HAVING COUNT(*) >= 2; +``` + +GROUP BY 的排序结果为分组字段,而 ORDER BY 也可以以聚集字段来进行排序。 + +```sql +SELECT col, COUNT(*) AS num +FROM mytable +GROUP BY col +ORDER BY num; +``` + +分组规定: + +1. GROUP BY 子句出现在 WHERE 子句之后,ORDER BY 子句之前; +2. 除了汇总计算语句的字段外,SELECT 语句中的每一字段都必须在 GROUP BY 子句中给出; +3. NULL 的行会单独分为一组; +4. 大多数 SQL 实现不支持 GROUP BY 列具有可变长度的数据类型。 + +# 十四、子查询 + +子查询中只能返回一个字段的数据。 + +可以将子查询的结果作为 WHRER 语句的过滤条件: + +``` +SELECT * +FROM mytable1 +WHERE col1 IN (SELECT col2 + FROM mytable2); +``` + +下面的语句可以检索出客户的订单数量,子查询语句会对第一个查询检索出的每个客户执行一次: + +```sql +SELECT cust_name, (SELECT COUNT(*) + FROM Orders + WHERE Orders.cust_id = Customers.cust_id) + AS orders_num +FROM Customers +ORDER BY cust_name; +``` + +# 十五、连接 + +连接用于连接多个表,使用 JOIN 关键字,并且条件语句使用 ON 而不是 Where。 + +连接可以替换子查询,并且比子查询的效率一般会更快。 + +可以用 AS 给列名、计算字段和表名取别名,给表名取别名是为了简化 SQL 语句以及连接相同表。 + +## 内连接 + +内连接又称等值连接,使用 INNER JOIN 关键字。 + +```sql +select a, b, c +from A inner join B +on A.key = B.key +``` + +可以不明确使用 INNER JOIN,而使用普通查询并在 WHERE 中将两个表中要连接的列用等值方法连接起来。 + +```sql +select a, b, c +from A, B +where A.key = B.key +``` + +在没有条件语句的情况下返回笛卡尔积。 + +## 自连接 + +自连接可以看成内连接的一种,只是连接的表是自身而已。 + +一张员工表,包含员工姓名和员工所属部门,要找出与 Jim 处在同一部门的所有员工姓名。 + +子查询版本 + +```sql +select name +from employee +where department = ( + select department + from employee + where name = "Jim"); +``` + +自连接版本 + +```sql +select name +from employee as e1, employee as e2 +where e1.department = e2.department + and e1.name = "Jim"; +``` + +连接一般比子查询的效率高。 + +## 自然连接 + +自然连接是把同名列通过等值测试连接起来的,同名列可以有多个。 + +内连接和自然连接的区别:内连接提供连接的列,而自然连接自动连接所有同名列。 + +```sql +select * +from employee natural join department; +``` + +## 外连接 + +外连接保留了没有关联的那些行。分为左外连接,右外连接以及全外连接,左外连接就是保留左表没有关联的行。 + +检索所有顾客的订单信息,包括还没有订单信息的顾客。 + +```sql +select Customers.cust_id, Orders.order_num + from Customers left outer join Orders + on Customers.cust_id = Orders.curt_id; +``` + +如果需要统计顾客的订单数,使用聚集函数。 + +```sql +select Customers.cust_id, + COUNT(Orders.order_num) as num_ord +from Customers left outer join Orders +on Customers.cust_id = Orders.curt_id +group by Customers.cust_id; +``` + +# 十六、组合查询 + +使用 **UNION** 来组合两个查询,如果第一个查询返回 M 行,第二个查询返回 N 行,那么组合查询的结果为 M+N 行。 + +每个查询必须包含相同的列、表达式或者聚集函数。 + +默认会去除相同行,如果需要保留相同行,使用 UNION ALL。 + +只能包含一个 ORDER BY 子句,并且必须位于语句的最后。 + +```sql +SELECT col +FROM mytable +WHERE col = 1 +UNION +SELECT col +FROM mytable +WHERE col =2; +``` + +# 十七、视图 + +视图是虚拟的表,本身不包含数据,也就不能对其进行索引操作。对视图的操作和对普通表的操作一样。 + +视图具有如下好处: + +1. 简化复杂的 SQL 操作,比如复杂的联结; +2. 只使用实际表的一部分数据; +3. 通过只给用户访问视图的权限,保证数据的安全性; +4. 更改数据格式和表示。 + +```sql +CREATE VIEW myview AS +SELECT Concat(col1, col2) AS concat_col, col3*col4 AS count_col +FROM mytable +WHERE col5 = val; +``` + +# 十八、存储过程 + +存储过程可以看成是对一系列 SQL 操作的批处理; + +## 使用存储过程的好处 + +1. 代码封装,保证了一定的安全性; + +2. 代码复用; + +3. 由于是预先编译,因此具有很高的性能。 + +## 创建存储过程 + +命令行中创建存储过程需要自定义分隔符,因为命令行是以 ; 为结束符,而存储过程中也包含了分号,因此会错误把这部分分号当成是结束符,造成语法错误。 + +包含 in、out 和 inout 三种参数。 + +给变量赋值都需要用 select into 语句。 + +每次只能给一个变量赋值,不支持集合的操作。 + +```sql +delimiter // + +create procedure myprocedure( out ret int ) + begin + declare y int; + select sum(col1) + from mytable + into y; + select y*y into ret; + end // +delimiter ; +``` + +```sql +call myprocedure(@ret); +select @ret; +``` + +# 十九、游标 + +在存储过程中使用游标可以对一个结果集进行移动遍历。 + +游标主要用于交互式应用,其中用户需要对数据集中的任意行进行浏览和修改。 + +使用游标的四个步骤: + +1. 声明游标,这个过程没有实际检索出数据; +2. 打开游标; +3. 取出数据; +4. 关闭游标; + +```sql +delimiter // +create procedure myprocedure(out ret int) + begin + declare done boolean default 0; + + declare mycursor cursor for + select col1 from mytable; + # 定义了一个continue handler,当 sqlstate '02000' 这个条件出现时,会执行 set done = 1 + declare continue handler for sqlstate '02000' set done = 1; + + open mycursor; + + repeat + fetch mycursor into ret; + select ret; + until done end repeat; + + close mycursor; + end // + delimiter ; +``` + +# 二十、触发器 + +触发器会在某个表执行以下语句时而自动执行:DELETE、INSERT、UPDATE + +触发器必须指定在语句执行之前还是之后自动执行,之前执行使用 BEFORE 关键字,之后执行使用 AFTER 关键字。BEFORE 用于数据验证和净化。 + +INSERT 触发器包含一个名为 NEW 的虚拟表。 + +```sql +CREATE TRIGGER mytrigger AFTER INSERT ON mytable +FOR EACH ROW SELECT NEW.col; +``` + +DELETE 触发器包含一个名为 OLD 的虚拟表,并且是只读的。 + +UPDATE 触发器包含一个名为 NEW 和一个名为 OLD 的虚拟表,其中 NEW 是可以被修改地,而 OLD 是只读的。 + +可以使用触发器来进行审计跟踪,把修改记录到另外一张表中。 + +MySQL 不允许在触发器中使用 CALL 语句 ,也就是不能调用存储过程。 + +# 二十一、事务处理 + +基本术语: + +1. 事务(transaction)指一组 SQL 语句; +2. 回退(rollback)指撤销指定 SQL 语句的过程; +3. 提交(commit)指将未存储的 SQL 语句结果写入数据库表; +4. 保留点(savepoint)指事务处理中设置的临时占位符(placeholder),你可以对它发布回退(与回退整个事务处理不同)。 + +不能回退 SELECT 语句,回退 SELECT 语句也没意义;也不能回退 CRETE 和 DROP 语句。 + +MySQL 的事务提交默认是隐式提交,也就是每执行一条语句就把这条语句当成一个事务然后进行提交。当出现 START TRANSACTION 语句时,会关闭隐式提交;当 COMMIT 或 ROLLBACK 语句执行后,事务会自动关闭,重新恢复隐式提交。 + +通过设置 autocommit 为 0 可以取消自动提交,直到 autocommit 被设置为 1 才会提交;autocommit 标记是针对每个连接而不是针对服务器的。 + +如果没有设置保留点,ROLLBACK 会回退到 START TRANSACTION 语句处;如果设置了保留点,并且在 ROLLBACK 中指定该保留点,则会回退到该保留点。 + +```sql +START TRANSACTION +// ... +SAVEPOINT delete1 +// ... +ROLLBACK TO delete1 +// ... +COMMIT +``` + +# 二十二、字符集 + +基本术语: + +1. 字符集为字母和符号的集合; +2. 编码为某个字符集成员的内部表示; +3. 校对字符指定如何比较,主要用于排序和分组。 + +除了给表指定字符集和校对外,也可以给列指定: + +```sql +CREATE TABLE mytable +(col VARCHAR(10) CHARACTER SET latin COLLATE latin1_general_ci ) +DEFAULT CHARACTER SET hebrew COLLATE hebrew_general_ci; +``` + +可以在排序、分组时指定校对: + +```sql +SELECT * +FROM mytable +ORDER BY col COLLATE latin1_general_ci; +``` + +# 二十三、权限管理 + +MySQL 的账户信息保存在 mysql 这个数据库中。 + +```sql +USE mysql; +SELECT user FROM user; +``` + +## 创建账户 + +```sql +CREATE USER myuser IDENTIFIED BY 'mypassword'; +``` + +新创建的账户没有任何权限。 + +## 修改账户名 + +```sql +RENAME myuser TO newuser; +``` + +## 删除账户 + +```sql +DROP USER myuser; +``` + +## 查看权限 + +```sql +SHOW GRANTS FOR myuser; +``` + +## 授予权限 + +```sql +GRANT SELECT, INSERT ON mydatabase.* TO myuser; +``` + +

    + +账户用 username@host 的形式定义,username@% 使用的是默认主机名。 + +## 删除权限 + +```sql +REVOKE SELECT, INSERT ON mydatabase.* FROM myuser; +``` + +GRANT 和 REVOKE 可在几个层次上控制访问权限: + +- 整个服务器,使用 GRANT ALL 和 REVOKE ALL; +- 整个数据库,使用 ON database.\*; +- 特定的表,使用 ON database.table; +- 特定的列; +- 特定的存储过程。 + +## 更改密码 + +必须使用 Password() 函数 + +```sql +SET PASSWROD FOR myuser = Password('newpassword'); +``` + diff --git a/notes/一致性协议.md b/notes/一致性协议.md new file mode 100644 index 00000000..e2b2486d --- /dev/null +++ b/notes/一致性协议.md @@ -0,0 +1,155 @@ + +* [一、两阶段提交协议](#一两阶段提交协议) +* [二、Paxos 协议](#二paxos-协议) +* [三、Raft 协议](#三raft-协议) +* [四、拜占庭将军问题](#四拜占庭将军问题) +* [五、参考资料](#五参考资料) + + + +# 一、两阶段提交协议 + +Two-phase Commit(2PC)。 + +可以保证一个事务跨越多个节点时保持 ACID 特性。 + +两类节点:协调者(Coordinator)和参与者(Participants),协调者只有一个,参与者可以有多个。 + +## 运行过程 + +1. 准备阶段:协调者询问参与者事务是否执行成功; + +2. 提交阶段:如果事务在每个参与者上都执行成功,协调者发送通知让参与者提交事务;否则,协调者发送通知让参与者回滚事务。 + +

    + + +需要注意的是,在准备阶段,参与者执行了事务,但是还未提交。只有在提交阶段协接收到协调者发来的通知后,才进行提交或者回滚。 + +## 存在的问题 + +- 参与者发生故障。解决方案:可以给事务设置一个超时时间,如果某个参与者一直不响应,那么认为事务执行失败。 + +- 协调者发生故障。解决方案:将操作日志同步到备用协调者,让备用协调者接替后续工作。 + +# 二、Paxos 协议 + +用于达成共识性问题,即对多个节点产生的值,该算法能保证只选出唯一一个值。 + +主要有三类节点: + +1. 提议者(Proposer):提议一个值; +2. 接受者(Acceptor):对每个提议进行投票; +3. 告知者(Learner):被告知投票的结果,不参与投票的过程。 + +

    + +## 执行过程 + +规定一个提议包含两个字段:[n, v],其中 n 为序号(具有唯一性),v 为提议值。 + +下图演示了两个 Proposer 和三个 Acceptor 的系统中运行该算法的初始过程,每个 Proposer 都会向每个 Acceptor 发送提议请求。 + +

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

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

    + +当一个 Proposer 接收到超过一半 Acceptor 的提议响应时,就可以发送接受请求。 + +如下图,Proposer A 接受到两个提议响应之后,就发送 [n=2, v=8] 接受请求。该接受请求会被所有 Acceptor 丢弃,因为此时所有 Acceptor 都保证不接受提议值小于 4 的提议。Proposer B 过后也收到了两个提议响应,因此也开始发送接受请求。需要注意的是,接受请求的 v 需要取它收到的最大 v 值,也就是 8。因此它发送 [n=4, v=8] 的接受请求。 + +

    + +Acceptor 接收到接受请求时,如果提议号大于等于该 Acceptor 承诺的最小提议号,那么就发送通知给所有的 Learner。当 Learner 发现有大多数的 Acceptor 接收了某个提议,那么该提议的提议值就被 Paxos 选择出来。 + +

    + +## 约束条件 + +### 1. 正确性 + +只有一个提议值会生效。 + +因为 Paxos 协议要求每个生效的提议被多数 Acceptor 接收,并且 Acceptor 不会接受两个不同的提议,因此可以保证正确性。 + +### 2. 可终止性 + +最后总会有一个提议生效。 + +Paxos 协议能够让 Proposer 发送的提议朝着能被大多数 Acceptor 接受的那个提议靠拢,因此能够保证可终止性。 + +# 三、Raft 协议 + +Raft 和 Poxas 类似,但是更容易理解,也更容易实现。 + +Raft 主要是用来竞选主节点。 + +## 单个 Candidate 的竞选 + +有三种节点:Follower、Candidate 和 Leader。Leader 会周期性的发送心跳包给 Follower。每个 Follower 都设置了一个随机的竞选超时时间,一般为 150ms\~300ms,如果在这个时间内没有收到 Leader 的心跳包,就会变成 Candidate,进入竞选阶段。 + +① 下图表示一个分布式系统的最初阶段,此时只有 Follower,没有 Leader。Follower A 等待一个随机的竞选超时时间之后,没收到 Leader 发来的心跳包,因此进入竞选阶段。 + +

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

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

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

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

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

    + +## 日志复制 + +① 来自客户端的修改都会被传入 Leader。注意该修改还未被提交,只是写入日志中。 + +

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

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

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

    + +# 四、拜占庭将军问题 + +> [拜占庭将军问题深入探讨](http://www.8btc.com/baizhantingjiangjun) + +# 五、参考资料 + +- 杨传辉. 大规模分布式存储系统: 原理解析与架构实战[M]. 机械工业出版社, 2013. +- [区块链技术指南](https://www.gitbook.com/book/yeasy/blockchain_guide/details) +- [NEAT ALGORITHMS - PAXOS](http://harry.me/blog/2014/12/27/neat-algorithms-paxos/) +- [Raft: Understandable Distributed Consensus](http://thesecretlivesofdata.com/raft) +- [Paxos By Example](https://angus.nyc/2012/paxos-by-example/) diff --git a/notes/代码可读性.md b/notes/代码可读性.md new file mode 100644 index 00000000..5d40b41b --- /dev/null +++ b/notes/代码可读性.md @@ -0,0 +1,342 @@ + +* [一、可读性的重要性](#一可读性的重要性) +* [二、用名字表达代码含义](#二用名字表达代码含义) +* [三、名字不能带来歧义](#三名字不能带来歧义) +* [四、良好的代码风格](#四良好的代码风格) +* [五、编写注释](#五编写注释) +* [六、如何编写注释](#六如何编写注释) +* [七、提高控制流的可读性](#七提高控制流的可读性) +* [八、拆分长表达式](#八拆分长表达式) +* [九、变量与可读性](#九变量与可读性) +* [十、抽取函数](#十抽取函数) +* [十一、一次只做一件事](#十一一次只做一件事) +* [十二、用自然语言表述代码](#十二用自然语言表述代码) +* [十三、减少代码量](#十三减少代码量) + + + +# 一、可读性的重要性 + +编程有很大一部分时间是在阅读代码,不仅要阅读自己的代码,而且要阅读别人的代码。因此,可读性良好的代码能够大大提高编程效率。 + +可读性良好的代码往往会让代码架构更好,因为程序员更愿意去修改这部分代码,而且也更容易修改。 + +只有在核心领域为了效率才可以放弃可读性,否则可读性是第一位。 + +# 二、用名字表达代码含义 + +一些比较有表达力的单词: + +| 单词 | 可替代单词 | +| --- | --- | +| send | deliver、dispatch、announce、distribute、route | +| find | search、extract、locate、recover | +| start| launch、create、begin、open| +| make | create、set up、build、generate、compose、add、new | + +使用 i、j、k 作为循环迭代器的名字过于简单,user_i、member_i 这种名字会更有表达力。因为循环层次越多,代码越难理解,有表达力的迭代器名字可读性会更高 + +为名字添加形容词等信息能让名字更具有表达力,但是名字也会变长。名字长短的准则是:作用域越大,名字越长。因此只有在短作用域才能使用一些简单名字。 + +# 三、名字不能带来歧义 + +起完名字要思考一下别人会对这个名字有何解读,会不会误解了原本想表达的含义。 + +用 min、max 表示数量范围;用 first、last 表示访问空间的包含范围,begin、end 表示访问空间的排除范围,即 end 不包含尾部。 + +

    + +布尔相关的命名加上 is、can、should、has 等前缀。 + +# 四、良好的代码风格 + +适当的空行和缩进。 + +排列整齐的注释: + +```java +int a = 1; // 注释 +int b = 11; // 注释 +int c = 111; // 注释 +``` + +语句顺序不能随意,比如与 html 表单相关联的变量的赋值应该和表单在 html 中的顺序一致; + +把相关的代码按块组织起来放在一起。 + +# 五、编写注释 + +阅读代码首先会注意到注释,如果注释没太大作用,那么就会浪费代码阅读的时间。那些能直接看出含义的代码不需要写注释,特别是并不需要为每个方法都加上注释,比如那些简单的 getter 和 setter 方法,为这些方法写注释反而让代码可读性更差。 + +不能因为有注释就随便起个名字,而是争取起个好名字而不写注释。 + +可以用注释来记录采用当前解决办法的思考过程,从而让读者更容易理解代码。 + +注释用来提醒一些特殊情况。 + +用 TODO 等做标记: + +| 标记 | 用法 | +|---|---| +|TODO| 待做 | +|FIXME| 待修复 | +|HACH| 粗糙的解决方案 | +|XXX| 危险!这里有重要的问题 | + +# 六、如何编写注释 + +尽量简洁明了: + +```java +// The first String is student's name +// The Second Integer is student's score +Map scoreMap = new HashMap<>(); +``` + +```java +// Student' name -> Student's score +Map scoreMap = new HashMap<>(); +``` + +添加测试用例来说明: + +```java +//... +// Example: add(1, 2), return 3 +int add(int x, int y) { + return x + y; +} +``` + +在很复杂的函数调用中对每个参数标上名字: + +```java +int a = 1; +int b = 2; +int num = add(\* x = *\ a, \* y = *\ b); +``` + +使用专业名词来缩短概念上的解释,比如用设计模式名来说明代码。 + +# 七、提高控制流的可读性 + +条件表达式中,左侧是变量,右侧是常数。比如下面第一个语句正确: + +```java +if(len < 10) +if(10 > len) +``` + +if / else 条件语句,逻辑的处理顺序为:① 正逻辑;② 关键逻辑;③ 简单逻辑。 + +```java +if(a == b) { + // 正逻辑 +} else{ + // 反逻辑 +} +``` + +只有在逻辑简单的情况下使用 ? : 三目运算符来使代码更紧凑,否则应该拆分成 if / else; + +do / while 的条件放在后面,不够简单明了,并且会有一些迷惑的地方,最好使用 while 来代替。 + +如果只有一个 goto 目标,那么 goto 尚且还能接受,但是过于复杂的 goto 会让代码可读性特别差,应该避免使用 goto。 + +在嵌套的循环中,用一些 return 语句往往能减少嵌套的层数。 + +# 八、拆分长表达式 + +长表达式的可读性很差,可以引入一些解释变量从而拆分表达式: + +```python +if line.split(':')[0].strip() == "root": + ... +``` +```python +username = line.split(':')[0].strip() +if username == "root": + ... +``` + +使用摩根定理简化一些逻辑表达式: + +```java +if(!a && !b) { + ... +} +``` +```java +if(!(a || b)) { + ... +} +``` + +# 九、变量与可读性 + +**去除控制流变量** 。在循环中通过使用 break 或者 return 可以减少控制流变量的使用。 + +```java +boolean done = false; +while(/* condition */ && !done) { + ... + if(...) { + done = true; + continue; + } +} +``` +``` +while(/* condition */) { + ... + if(...) { + break; + } +} +``` + +**减小变量作用域** 。作用域越小,越容易定位到变量所有使用的地方。 + +JavaScript 可以用闭包减小作用域。以下代码中 submit_form 是函数变量,submitted 变量控制函数不会被提交两次。第一个实现中 submitted 是全局变量,第二个实现把 submitted 放到匿名函数中,从而限制了起作用域范围。 + +```js +submitted = false; +var submit_form = function(form_name) { + if(submitted) { + return; + } + submitted = true; +}; +``` + +```js +var submit_form = (function() { + var submitted = false; + return function(form_name) { + if(submitted) { + return; + } + submitted = true; + } +}()); // () 使得外层匿名函数立即执行 +``` + +JavaScript 中没有用 var 声明的变量都是全局变量,而全局变量很容易造成迷惑,因此应当总是用 var 来声明变量。 + +变量定义的位置应当离它使用的位置最近。 + +**实例解析** + +在一个网页中有以下文本输入字段: + +```html + + + + +``` + +现在要接受一个字符串并把它放到第一个空的 input 字段中,初始实现如下: + +```js +var setFirstEmptyInput = function(new_alue) { + var found = false; + var i = 1; + var elem = document.getElementById('input' + i); + while(elem != null) { + if(elem.value === '') { + found = true; + break; + } + i++; + elem = document.getElementById('input' + i); + } + if(found) elem.value = new_value; + return elem; +} +``` + +以上实现有以下问题: + +- found 可以去除; +- elem 作用域过大; +- 可以用 for 循环代替 while 循环; + +```js +var setFirstEmptyInput = function(new_value) { + for(var i = 1; true; i++) { + var elem = document.getElementById('input' + i); + if(elem === null) { + return null; + } + if(elem.value === '') { + elem.value = new_value; + return elem; + } + } +}; +``` + +# 十、抽取函数 + +工程学就是把大问题拆分成小问题再把这些问题的解决方案放回一起。 + +首先应该明确一个函数的高层次目标,然后对于不是直接为了这个目标工作的代码,抽取出来放到独立的函数中。 + +介绍性的代码: + +```java +int findClostElement(int[] arr) { + int clostIdx; + int clostDist = Interger.MAX_VALUE; + for(int i = 0; i < arr.length; i++) { + int x = ...; + int y = ...; + int z = ...; + int value = x * y * z; + int dist = Math.sqrt(Math.pow(value, 2), Math.pow(arr[i], 2)); + if(dist < clostDist) { + clostIdx = i; + clostDist = value; + } + } + return clostIdx; +} +``` + +以上代码中循环部分主要计算距离,这部分不属于代码高层次目标,高层次目标是寻找最小距离的值,因此可以把这部分代替提取到独立的函数中。这样做也带来一个额外的好处有:可以单独进行测试、可以快速找到程序错误并修改。 + +```java +public int findClostElement(int[] arr) { + int clostIdx; + int clostDist = Interger.MAX_VALUE; + for(int i = 0; i < arr.length; i++) { + int dist = computDist(arr, i); + if(dist < clostDist) { + clostIdx = i; + clostDist = value; + } + } + return clostIdx; +} +``` + +并不是函数抽取的越多越好,如果抽取过多,在阅读代码的时候可能需要不断跳来跳去。只有在当前函数不需要去了解某一块代码细节而能够表达其内容时,把这块代码抽取成子函数才是好的。 + +函数抽取也用于减小代码的冗余。 + +# 十一、一次只做一件事 + +只做一件事的代码很容易让人知道其要做的事; + +基本流程:列出代码所做的所有任务;把每个任务拆分到不同的函数,或者不同的段落。 + +# 十二、用自然语言表述代码 + +先用自然语言书写代码逻辑,也就是伪代码,然后再写代码,这样代码逻辑会更清晰。 + +# 十三、减少代码量 + +不要过度设计,编码过程会有很多变化,过度设计的内容到最后往往是无用的。 + +多用标准库实现。 diff --git a/notes/代码风格规范.md b/notes/代码风格规范.md new file mode 100644 index 00000000..6724fa14 --- /dev/null +++ b/notes/代码风格规范.md @@ -0,0 +1,14 @@ +# Google Java Style Guide + +- http://www.hawstein.com/posts/google-java-style.html +- http://google.github.io/styleguide/javaguide.html + +# Google C++ Style Guide + +- http://zh-google-styleguide.readthedocs.io/en/latest/google-cpp-styleguide/contents/ +- http://google.github.io/styleguide/cppguide.html + +# Google Python Style Guide + +- http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/contents/ +- http://google.github.io/styleguide/pyguide.html diff --git a/notes/分布式基础.md b/notes/分布式基础.md new file mode 100644 index 00000000..2b1a696d --- /dev/null +++ b/notes/分布式基础.md @@ -0,0 +1,206 @@ + +* [一、基本概念](#一基本概念) + * [异常](#异常) + * [超时](#超时) + * [衡量指标](#衡量指标) +* [二、数据分布](#二数据分布) + * [哈希分布](#哈希分布) + * [顺序分布](#顺序分布) +* [三、负载均衡](#三负载均衡) +* [四、复制](#四复制) + * [强同步复制协议](#强同步复制协议) + * [异步复制协议](#异步复制协议) +* [五、CAP](#五cap) +* [六、BASE](#六base) + * [基本可用](#基本可用) + * [软状态](#软状态) + * [最终一致性](#最终一致性) +* [七、容错](#七容错) + * [故障检测](#故障检测) + * [故障恢复](#故障恢复) +* [八、CDN 架构](#八cdn-架构) +* [参考资料](#参考资料) + + + +# 一、基本概念 + +## 异常 + +### 1. 服务器宕机 + +内存错误、服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用。 + +服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上。 + +### 2. 网络异常 + +有一种特殊的网络异常称为 **网络分区** ,即集群的所有节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信。 + +### 3. 磁盘故障 + +磁盘故障是一种发生概率很高的异常。 + +使用冗余机制,将数据存储到多台服务器。 + +## 超时 + +在分布式系统中,一个请求除了成功和失败两种状态,还存在着超时状态。 + +

    + +可以将服务器的操作设计为具有 **幂等性** ,即执行多次的结果与执行一次的结果相同。如果使用这种方式,当出现超时的时候,可以不断地重新请求直到成功。 + +## 衡量指标 + +### 1. 性能 + +常见的性能指标有:吞吐量、响应时间。 + +其中,吞吐量指系统在某一段时间可以处理的请求总数,通常为每秒的读操作数或者写操作数;响应时间指从某个请求发出到接收到返回结果消耗的时间。 + +这两个指标往往是矛盾的,追求高吞吐的系统,往往很难做到低响应时间,解释如下: + +- 在无并发的系统中,吞吐量为响应时间的倒数,例如响应时间为 10 ms,那么吞吐量为 100 req/s,因此高吞吐也就意味着低响应时间。 + +- 但是在并发的系统中,由于一个请求在调用 I/O 资源的时候,需要进行等待。服务器端一般使用的是异步等待方式,即等待的请求被阻塞之后不需要一直占用 CPU 资源。这种方式能大大提高 CPU 资源的利用率,例如上面的例子中,单个请求在无并发的系统中响应时间为 10 ms,如果在并发的系统中,那么吞吐量将大于 100 req/s。因此为了追求高吞吐量,通常会提高并发程度。但是并发程度的增加,会导致请求的平均响应时间也增加,因为请求不能马上被处理,需要和其它请求一起进行并发处理,响应时间自然就会增高。 + +### 2. 可用性 + +可用性指系统在面对各种异常时可以提供正常服务的能力。可以用系统可用时间占总时间的比值来衡量,4 个 9 的可用性表示系统 99.99% 的时间是可用的。 + +### 3. 一致性 + +可以从两个角度理解一致性:从客户端的角度,读写操作是否满足某种特性;从服务器的角度,多个数据副本之间是否一致。 + +有以下三种一致性模型: + +1. 强一致性:新数据写入之后,在任何数据副本上都能读取到最新值; +2. 弱一致性:新数据写入之后,不能保证在数据副本上能读取到最新值; +3. 最终一致性:新数据写入之后,只能保证过一了一个时间窗口才能读取到最新值; + +### 4. 可扩展性 + +指系统通过扩展集群服务器规模来提高性能的能力。理想的分布式系统需要实现“线性可扩展”,即随着集群规模的增加,系统的整体性能也会线程增加。 + +# 二、数据分布 + +分布式系统的数据分布在多个节点中,常用的数据分布方式有哈希分布和顺序分布。 + +## 哈希分布 + +哈希分布就是将数据计算哈希值之后,按照哈希值分配到不同的节点上。例如有 N 个节点,数据的主键为 key,则将该数据分配的节点序号为:hash(key)%N。 + +传统的哈希分布算法存在一个问题:当节点数量变化时,也就是 N 值变化,那么几乎所有的数据都需要重新分布,将导致大量的数据迁移。 + +#### 一致性哈希 + +Distributed Hash Table(DHT):对于哈希空间 0\~2n,将该哈希空间看成一个哈希环,将每个节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。 + +

    + +一致性哈希的优点是在加入或者删除节点时只会影响到哈希环中相邻的节点,例如下图中新增节点 X,只需要将数据对象 C 重新存放到节点 X 上即可,对于节点 A、B、D 都没有影响。 + +

    + +## 顺序分布 + +哈希分布式破坏了数据的有序性,顺序分布则不会。 + +顺序分布的数据划分为多个连续的部分,按一定策略分布到不同节点上。例如下图中,User 表的主键范围为 1 \~ 7000,使用顺序分布可以将其划分成多个子表,对应的主键范围为 1 \~ 1000,1001 \~ 2000,...,6001 \~ 7000。 + +其中 Meta 表是为了支持更大的集群规模,它将原来的一层索引结分成两层,使用 Meta 表来维护 User 子表所在的节点,从而减轻 Root 节点的负担。 + +

    + +# 三、负载均衡 + +衡量负载的因素很多,如 CPU、内存、磁盘等资源使用情况、读写请求数等。分布式系统应当能够自动负载均衡,当某个节点的负载较高,将它的部分数据迁移到其它节点。 + +每个集群都有一个总控节点,其它节点为工作节点,由总控节点根据全局负载信息进行整体调度,工作节点定时发送心跳包(Heartbeat)将节点负载相关的信息发送给总控节点。 + +一个新上线的工作节点,由于其负载较低,如果不加控制,总控节点会将大量数据同时迁移到该节点上,造成该节点一段时间内无法工作。因此负载均衡操作需要平滑进行,新加入的节点需要较长的一段时间来达到比较均衡的状态。 + +# 四、复制 + +复制是保证分布式系统高可用的基础,让一个数据存储多个副本,当某个副本所在的节点出现故障时,能够自动切换到其它副本上,从而实现故障恢复。 + +多个副本通常有一个为主副本,其它为备副本。主副本用来处理写请求,备副本主要用来处理读请求,实现读写分离。主副本将同步操作日志发送给备副本,备副本通过回放操作日志获取最新修改。 + +

    + +主备副本之间有两种复制协议,一种是强同步复制协议,一种是异步复制协议。 + +## 强同步复制协议 + +要求主副本将同步操作日志发给备副本之后进行等待,要求至少一个备副本返回成功后,才开始修改主副本,修改完成之后通知客户端操作成功。 + +优点:至少有一个备副本拥有完整的数据,出现故障时可以安全地切换到该备副本,因此一致性好。 + +缺点:可用性差,因为主副本需要等待,那么整个分布式系统的可用时间就会降低。 + +## 异步复制协议 + +主副本将同步操作日志发给备副本之后不需要进行等待,直接修改主副本并通知客户端操作成功。 + +优点:可用性好。 + +缺点:一致性差。 + +# 五、CAP + +分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容忍性(P:Partition tolerance),最多只能同时满足其中两项。这三个概念上文中已经提到。 + +在设计分布式系统时,需要根据实际需求弱化某一要求。因此就有了下图中的三种设计:CA、CP 和 AP。 + +

    + +需要注意的是,分区容忍性必不可少,因为需要总是假设网络是不可靠的。因此实际上设计分布式系统需要在一致性和可用性之间做权衡。 + +# 六、BASE + +BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的缩写。BASE 理论是对 CAP 中一致性和可用性权衡的结果,是基于 CAP 定理逐步演化而来的。BASE 理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。 + +## 基本可用 + +指分布式系统在出现故障的时候,保证核心可用,允许损失部分可用性。 + +例如,电商在做促销时,服务层可能只提供降级服务,部分用户可能会被引导到降级页面上。 + +## 软状态 + +指允许系统存在中间状态,而该中间状态不会影响系统整体可用性,即不同节点的数据副本之间进行同步的过程允许存在延时。 + +## 最终一致性 + +指所有的数据副本,在经过一段时间的同步之后,最终都能够达到一致的状态。 + +强一致性需要保证数据副本实时一致,而最终一致性只需要保证过一段时间是一致的。 + +ACID 是传统数据库系统常用的设计理论,追求强一致性模型。BASE 常用于大型分布式系统,只需要保证最终一致性。在实际的分布式场景中,不同业务单元和组件对一致性的要求是不同的,因此 ACID 和 BASE 往往会结合在一起使用。 + +# 七、容错 + +分布式系统故障发生的概率很大,为了实现高可用以及减少人工运维成本,需要实现自动化容错。 + +## 故障检测 + +通过 **租约机制** 来对故障进行检测。假设节点 A 为主控节点,节点 A 向节点 B 发送租约,节点 B 在租约规定的期限内才能提供服务。期限快到达时,节点 B 需要向 A 重新申请租约。 + +如果过期,那么 B 不再提供服务,并且 A 也能知道 B 此时可能发生故障并已经停止服务。可以看到,通过这种机制,A 和 B 都能对 B 发生故障这一事实达成一致。 + +## 故障恢复 + +当某个节点故障时,就将它上面的服务迁移到其它节点。 + +# 八、CDN 架构 + +CND 通过将内容发布到靠近用户的边缘节点,使不同地域的用户在访问相同网页时可以就近获取。不仅可以减轻服务器的负担,也可以提高用户的访问速度。 + +从下图可以看出,DNS 在对域名解析时不再向用户返回源服务器的 IP 地址,而是返回边缘节点的 IP 地址,所以用户最终访问的是边缘节点。边缘节点会先从源服务器中获取用户所需的数据,如果请求成功,边缘节点会将页面缓存下来,下次用户访问时可以直接读取。 + +

    + +# 参考资料 + +- 杨传辉. 大规模分布式存储系统: 原理解析与架构实战[M]. 机械工业出版社, 2013. diff --git a/notes/分布式问题分析.md b/notes/分布式问题分析.md new file mode 100644 index 00000000..81d7f9e0 --- /dev/null +++ b/notes/分布式问题分析.md @@ -0,0 +1,316 @@ + +* [一、谈谈业务中使用分布式的场景](#一谈谈业务中使用分布式的场景) +* [二、分布式事务](#二分布式事务) + * [产生原因](#产生原因) + * [应用场景](#应用场景) + * [解决方案](#解决方案) +* [三、负载均衡的算法与实现](#三负载均衡的算法与实现) + * [算法](#算法) + * [实现](#实现) +* [四、分布式锁](#四分布式锁) + * [使用场景](#使用场景) + * [实现方式](#实现方式) +* [五、分布式 Session](#五分布式-session) + * [1. Sticky Sessions](#1-sticky-sessions) + * [2. Session Replication](#2-session-replication) + * [3. Persistent DataStore](#3-persistent-datastore) + * [4. In-Memory DataStore](#4-in-memory-datastore) +* [六、分库与分表带来的分布式困境与应对之策](#六分库与分表带来的分布式困境与应对之策) + * [事务问题](#事务问题) + * [查询问题](#查询问题) + * [ID 唯一性](#id-唯一性) +* [参考资料](#参考资料) + + + +# 一、谈谈业务中使用分布式的场景 + +分布式主要是为了提供可扩展性以及高可用性,业务中使用分布式的场景主要有分布式存储以及分布式计算。 + +分布式存储中可以将数据分片到多个节点上,不仅可以提高性能(可扩展性),同时也可以使用多个节点对同一份数据进行备份(高可用性)。 + +至于分布式计算,就是将一个大的计算任务分解成小任务分配到多台节点上去执行,再汇总每个小任务的执行结果得到最终结果。MapReduce 是分布式计算的最好例子。 + +# 二、分布式事务 + +指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。 + +## 产生原因 + +- 数据库分库分表; +- SOA 架构,比如一个电商网站将订单业务和库存业务分离出来放到不同的节点上。 + +## 应用场景 + +- 下单:减少库存、更新订单状态。库存和订单不在同一个数据库,因此涉及分布式事务。 +- 支付:买家账户扣款、卖家账户入账。买家和卖家账户信息不在同一个数据库,因此涉及分布式事务。 + +## 解决方案 + +### 1. 两阶段提交协议 + +[两阶段提交](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E4%B8%80%E8%87%B4%E6%80%A7%E5%8D%8F%E8%AE%AE.md#%E4%B8%A4%E9%98%B6%E6%AE%B5%E6%8F%90%E4%BA%A4%E5%8D%8F%E8%AE%AE) + +两阶段提交协议可以很好得解决分布式事务问题,它可以使用 XA 来实现,XA 它包含两个部分:事务管理器和本地资源管理器。其中本地资源管理器往往由数据库实现,比如 Oracle、DB2 这些商业数据库都实现了 XA 接口;而事务管理器作为全局的协调者,负责各个本地资源的提交和回滚。 + +### 2. 消息中间件 + +消息中间件也可称作消息系统 (MQ),它本质上是一个暂存转发消息的一个中间件。在分布式应用当中,我们可以把一个业务操作转换成一个消息,比如支付宝的余额转入余额宝操作,支付宝系统执行减少余额操作之后向消息系统发送一个消息,余额宝系统订阅这条消息然后进行增加余额宝操作。 + +**(一)消息处理模型** + + **点对点**
    + +

    + + **发布/订阅**
    + +

    + +**(二)消息的可靠性** + +消息的发送端的可靠性:发送端完成操作后一定能将消息成功发送到消息系统。 + +消息的接收端的可靠性:接收端仅且能够从消息中间件成功消费一次消息。 + + **发送端的可靠性**
    + +在本地数据建一张消息表,将消息数据与业务数据保存在同一数据库实例里,这样就可以利用本地数据库的事务机制。事务提交成功后,将消息表中的消息转移到消息中间件,若转移消息成功则删除消息表中的数据,否则继续重传。 + + **接收端的可靠性**
    + +保证接收端处理消息的业务逻辑具有幂等性:只要具有幂等性,那么消费多少次消息,最后处理的结果都是一样的。 + +保证消息具有唯一编号,并使用一张日志表来记录已经消费的消息编号。 + +# 三、负载均衡的算法与实现 + +## 算法 + +### 1. 轮询(Round Robin) + +轮询算法把每个请求轮流发送到每个服务器上。下图中,一共有 6 个客户端产生了 6 个请求,这 6 个请求按 (1, 2, 3, 4, 5, 6) 的顺序发送。最后,(1, 3, 5) 的请求会被发送到服务器 1,(2, 4, 6) 的请求会被发送到服务器 2。 + +

    + +该算法比较适合每个服务器的性能差不多的场景,如果有性能存在差异的情况下,那么性能较差的服务器可能无法承担多大的负载。下图中,服务器 2 的性能比服务器 1 差,那么服务器 2 可能无法承担多大的负载。 + +

    + +### 2. 加权轮询(Weighted Round Robbin) + +加权轮询是在轮询的基础上,根据服务器的性能差异,为服务器赋予一定的权值。例如下图中,服务器 1 被赋予的权值为 5,服务器 2 被赋予的权值为 1,那么 (1, 2, 3, 4, 5) 请求会被发送到服务器 1,(6) 请求会被发送到服务器 2。 + +

    + +### 3. 最少连接(least Connections) + +由于每个请求的连接时间不一样,使用轮询或者加权轮询算法的话,可能会让一台服务器当前连接数多大,而另一台服务器的连接多小,造成负载不均衡。例如下图中,(1, 3, 5) 请求会被发送到服务器 1,但是 (1, 3) 很快就断开连接,此时只有 (5) 请求连接服务器 1;(2, 4, 6) 请求被发送到服务器 2,只有 (2) 的连接断开。该系统继续运行时,服务器 2 会承担多大的负载。 + +

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

    + +### 4. 加权最小连接(Weighted Least Connection) + +在最小连接的基础上,根据服务器的性能为每台服务器分配权重,根据权重计算出每台服务器能处理的连接数。 + +

    + +### 5. 随机算法(Random) + +把请求随机发送到服务器上。和轮询算法类似,该算法比较适合服务器性能差不多的场景。 + +

    + +## 实现 + +### 1. HTTP 重定向 + +HTTP 重定向负载均衡服务器收到 HTTP 请求之后会返回服务器的地址,并将该地址写入 HTTP 重定向响应中返回给浏览器,浏览器收到后需要再次发送请求。 + +缺点: + +- 用户访问的延迟会增加; +- 如果负载均衡器宕机,就无法访问该站点。 + +

    + +### 2. DNS 重定向 + +使用 DNS 作为负载均衡器,根据负载情况返回不同服务器的 IP 地址。大型网站基本使用了这种方式做为第一级负载均衡手段,然后在内部使用其它方式做第二级负载均衡。 + +缺点: + +- DNS 查找表可能会被客户端缓存起来,那么之后的所有请求都会被重定向到同一个服务器。 + +

    + +### 3. 修改 MAC 地址 + +使用 LVS(Linux Virtual Server)这种链路层负载均衡器,根据负载情况修改请求的 MAC 地址。 + +

    + +### 4. 修改 IP 地址 + +在网络层修改请求的目的 IP 地址。 + +

    + +### 5. 代理自动配置 + +正向代理与反向代理的区别: + +- 正向代理:发生在客户端,是由用户主动发起的。比如翻墙,客户端通过主动访问代理服务器,让代理服务器获得需要的外网数据,然后转发回客户端。 +- 反向代理:发生在服务器端,用户不知道代理的存在。 + +PAC 服务器是用来判断一个请求是否要经过代理。 + +

    + +# 四、分布式锁 + +Java 提供了两种内置的锁的实现,一种是由 JVM 实现的 synchronized 和 JDK 提供的 Lock,当你的应用是单机或者说单进程应用时,可以使用 synchronized 或 Lock 来实现锁。当应用涉及到多机、多进程共同完成时,那么这时候就需要一个全局锁来实现多个进程之间的同步。 + +## 使用场景 + +在服务器端使用分布式部署的情况下,一个服务可能分布在不同的节点撒花姑娘,比如订单服务分布式在节点 A 和节点 B 上。如果多个客户端同时对一个服务进行请求时,就需要使用分布式锁。例如当 APP 端的请求路由到了节点 A,WEB 端被路由到了 B 服务,这时对共享资源进行使用时需要使用分布式锁。 + +## 实现方式 + +### 1. 数据库分布式锁 + +**(一)基于 MySQL 锁表** + +该实现方式完全依靠数据库唯一索引来实现。当想要获得锁时,就向数据库中插入一条记录,释放锁时就删除这条记录。如果记录具有唯一索引,就不会同时插入同一条记录。这种方式存在以下几个问题: + +1. 锁没有失效时间,解锁失败会导致死锁,其他线程无法再获得锁。 +2. 只能是非阻塞锁,插入失败直接就报错了,无法重试。 +3. 不可重入,同一线程在没有释放锁之前无法再获得锁。 + +**(二)采用乐观锁增加版本号** + +根据版本号来判断更新之前有没有其他线程更新过,如果被更新过,则获取锁失败。 + +### 2. Redis 分布式锁 + +**(一)基于 SETNX、EXPIRE** + +使用 SETNX(set if not exist)命令插入一个键值对时,如果 Key 已经存在,那么会返回 False,否则插入成功并返回 True。因此客户端在尝试获得锁时,先使用 SETNX 向 Redis 中插入一个记录,如果返回 True 表示获得锁,返回 False 表示已经有客户端占用锁。 + +EXPIRE 可以为一个键值对设置一个过期时间,从而避免了死锁的发生。 + +**(二)RedLock 算法** + +RedLock 算法使用了多个 Redis 实例来实现分布式锁,这是为了保证在发生单点故障时还可用。 + +1. 尝试从 N 个相互独立 Redis 实例获取锁,如果一个实例不可用,应该尽快尝试下一个。 +2. 计算获取锁消耗的时间,只有当这个时间小于锁的过期时间,并且从大多数(N/2+1)实例上获取了锁,那么就认为锁获取成功了。 +3. 如果锁获取失败,会到每个实例上释放锁。 + +### 3. Zookeeper 分布式锁 + +Zookeeper 是一个为分布式应用提供一致性服务的软件,例如配置管理、分布式协同以及命名的中心化等,这些都是分布式系统中非常底层而且是必不可少的基本功能,但是如果自己实现这些功能而且要达到高吞吐、低延迟同时还要保持一致性和可用性,实际上非常困难。 + +**(一)抽象模型** + +Zookeeper 提供了一种树形结构级的命名空间,/app1/p_1 节点表示它的父节点为 /app1。 + +

    + +**(二)节点类型** + +- 永久节点:不会因为会话结束或者超时而消失; +- 临时节点:如果会话结束或者超时就会消失; +- 有序节点:会在节点名的后面加一个数字后缀,并且是有序的,例如生成的有序节点为 /lock/node-0000000000,它的下一个有序节点则为 /lock/node-0000000001,依次类推。 + +**(三)监听器** + +为一个节点注册监听器,在节点状态发生改变时,会给客户端发送消息。 + +**(四)分布式锁实现** + +1. 创建一个锁目录 /lock。 +1. 在 /lock 下创建临时的且有序的子节点,第一个客户端对应的子节点为 /lock/lock-0000000000,第二个为 /lock/lock-0000000001,以此类推。 +2. 客户端获取 /lock 下的子节点列表,判断自己创建的子节点是否为当前子节点列表中序号最小的子节点,如果是则认为获得锁,否则监听自己的前一个子节点,获得子节点的变更通知后重复此步骤直至获得锁; +3. 执行业务代码,完成后,删除对应的子节点。 + +**(五)会话超时** + +如果一个已经获得锁的会话超时了,因为创建的是临时节点,因此该会话对应的临时节点会被删除,其它会话就可以获得锁了。可以看到,Zookeeper 分布式锁不会出现数据库分布式锁的死锁问题。 + +**(六)羊群效应** + +在步骤二,一个节点未获得锁,需要监听监听自己的前一个子节点,这是因为如果监听所有的子节点,那么任意一个子节点状态改变,其它所有子节点都会收到通知,而我们只希望它的下一个子节点收到通知。 + +# 五、分布式 Session + +在分布式场景下,一个用户的 Session 如果只存储在一个服务器上,那么当负载均衡器把用户的下一个请求转发到另一个服务器上,该服务器没有保存用户的 Session,就可能导致用户需要重新进行登录等操作。 + +

    + +## 1. Sticky Sessions + +需要配置负载均衡器,使得一个用户的所有请求都路由到一个服务器节点上,这样就可以把用户的 Session 存放在该服务器节点中。 + +缺点:当服务器节点宕机时,将丢失该服务器节点上的所有 Session。 + +

    + +## 2. Session Replication + +在服务器节点之间进行 Session 同步操作,这样的话用户可以访问任何一个服务器节点。 + +缺点:需要更好的服务器硬件条件;需要对服务器进行配置。 + +

    + +## 3. Persistent DataStore + +将 Session 信息持久化到一个数据库中。 + +缺点:有可能需要去实现存取 Session 的代码。 + +

    + +## 4. In-Memory DataStore + +可以使用 Redis 和 Memcached 这种内存型数据库对 Session 进行存储,可以大大提高 Session 的读写效率。内存型数据库同样可以持久化数据到磁盘中来保证数据的安全性。 + +# 六、分库与分表带来的分布式困境与应对之策 + +

    + +## 事务问题 + +使用分布式事务。 + +## 查询问题 + +使用汇总表。 + +## ID 唯一性 + +- 使用全局唯一 ID:GUID。 +- 为每个分片指定一个 ID 范围。 +- 分布式 ID 生成器 (如 Twitter 的 [Snowflake](https://twitter.github.io/twitter-server/) 算法)。 + +# 参考资料 + +- [Comparing Load Balancing Algorithms](http://www.jscape.com/blog/load-balancing-algorithms) +- [负载均衡算法及手段](https://segmentfault.com/a/1190000004492447) +- [Redirection and Load Balancing](http://slideplayer.com/slide/6599069/#) +- [Session Management using Spring Session with JDBC DataStore](https://sivalabs.in/2018/02/session-management-using-spring-session-jdbc-datastore/) +- [Apache Wicket User Guide - Reference Documentation](# Apache Wicket User Guide - Reference Documentation) +- [集群/分布式环境下 5 种 Session 处理策略](http://blog.csdn.net/u010028869/article/details/50773174?ref=myread) +- [浅谈分布式锁](http://www.linkedkeeper.com/detail/blog.action?bid=1023) +- [深入理解分布式事务](https://juejin.im/entry/577c6f220a2b5800573492be) +- [分布式系统的事务处理](https://coolshell.cn/articles/10910.html) +- [关于分布式事务](http://blog.csdn.net/suifeng3051/article/details/52691210) +- [基于 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) +- [How Sharding Works](https://medium.com/@jeeyoungk/how-sharding-works-b4dec46b3f6) +- [服务端指南 数据存储篇 | MySQL(09) 分库与分表带来的分布式困境与应对之策](http://blog.720ui.com/2017/mysql_core_09_multi_db_table2/ "服务端指南 数据存储篇 | MySQL(09) 分库与分表带来的分布式困境与应对之策") +- [How to create unique row ID in sharded databases?](https://stackoverflow.com/questions/788829/how-to-create-unique-row-id-in-sharded-databases) diff --git a/notes/剑指 offer 题解.md b/notes/剑指 offer 题解.md new file mode 100644 index 00000000..b367d103 --- /dev/null +++ b/notes/剑指 offer 题解.md @@ -0,0 +1,2581 @@ + +* [前言](#前言) +* [2. 实现 Singleton](#2-实现-singleton) +* [3. 数组中重复的数字](#3-数组中重复的数字) +* [4. 二维数组中的查找](#4-二维数组中的查找) +* [5. 替换空格](#5-替换空格) +* [6. 从尾到头打印链表](#6-从尾到头打印链表) +* [7. 重建二叉树](#7-重建二叉树) +* [8. 二叉树的下一个结点](#8-二叉树的下一个结点) +* [9. 用两个栈实现队列](#9-用两个栈实现队列) +* [10.1 斐波那契数列](#101-斐波那契数列) +* [10.2 跳台阶](#102-跳台阶) +* [10.3 变态跳台阶](#103-变态跳台阶) +* [10.4 矩形覆盖](#104-矩形覆盖) +* [11. 旋转数组的最小数字](#11-旋转数组的最小数字) +* [12. 矩阵中的路径](#12-矩阵中的路径) +* [13. 机器人的运动范围](#13-机器人的运动范围) +* [14. 剪绳子](#14-剪绳子) +* [15. 二进制中 1 的个数](#15-二进制中-1-的个数) +* [16. 数值的整数次方](#16-数值的整数次方) +* [17. 打印从 1 到最大的 n 位数](#17-打印从-1-到最大的-n-位数) +* [18.1 在 O(1) 时间内删除链表节点](#181-在-o1-时间内删除链表节点) +* [18.2 删除链表中重复的结点](#182-删除链表中重复的结点) +* [19. 正则表达式匹配](#19-正则表达式匹配) +* [20. 表示数值的字符串](#20-表示数值的字符串) +* [21. 调整数组顺序使奇数位于偶数前面](#21-调整数组顺序使奇数位于偶数前面) +* [22. 链表中倒数第 K 个结点](#22-链表中倒数第-k-个结点) +* [23. 链表中环的入口结点](#23-链表中环的入口结点) +* [24. 反转链表](#24-反转链表) +* [25. 合并两个排序的链表](#25-合并两个排序的链表) +* [26. 树的子结构](#26-树的子结构) +* [27. 二叉树的镜像](#27-二叉树的镜像) +* [28.1 对称的二叉树](#281-对称的二叉树) +* [28.2 平衡二叉树](#282-平衡二叉树) +* [29. 顺时针打印矩阵](#29-顺时针打印矩阵) +* [30. 包含 min 函数的栈](#30-包含-min-函数的栈) +* [31. 栈的压入、弹出序列](#31-栈的压入弹出序列) +* [32.1 从上往下打印二叉树](#321-从上往下打印二叉树) +* [32.2 把二叉树打印成多行](#322-把二叉树打印成多行) +* [32.3 按之字形顺序打印二叉树](#323-按之字形顺序打印二叉树) +* [33. 二叉搜索树的后序遍历序列](#33-二叉搜索树的后序遍历序列) +* [34. 二叉树中和为某一值的路径](#34-二叉树中和为某一值的路径) +* [35. 复杂链表的复制](#35-复杂链表的复制) +* [36. 二叉搜索树与双向链表](#36-二叉搜索树与双向链表) +* [37. 序列化二叉树](#37-序列化二叉树) +* [38. 字符串的排列](#38-字符串的排列) +* [39. 数组中出现次数超过一半的数字](#39-数组中出现次数超过一半的数字) +* [40. 最小的 K 个数](#40-最小的-k-个数) +* [41.1 数据流中的中位数](#411-数据流中的中位数) +* [41.2 字符流中第一个不重复的字符](#412-字符流中第一个不重复的字符) +* [42. 连续子数组的最大和](#42-连续子数组的最大和) +* [43. 从 1 到 n 整数中 1 出现的次数](#43-从-1-到-n-整数中-1-出现的次数) +* [44. 数字序列中的某一位数字](#44-数字序列中的某一位数字) +* [45. 把数组排成最小的数](#45-把数组排成最小的数) +* [46. 把数字翻译成字符串](#46-把数字翻译成字符串) +* [47. 礼物的最大价值](#47-礼物的最大价值) +* [48. 最长不含重复字符的子字符串](#48-最长不含重复字符的子字符串) +* [49. 丑数](#49-丑数) +* [50. 第一个只出现一次的字符位置](#50-第一个只出现一次的字符位置) +* [51. 数组中的逆序对](#51-数组中的逆序对) +* [52. 两个链表的第一个公共结点](#52-两个链表的第一个公共结点) +* [53 数字在排序数组中出现的次数](#53-数字在排序数组中出现的次数) +* [54. 二叉搜索树的第 k 个结点](#54-二叉搜索树的第-k-个结点) +* [55 二叉树的深度](#55-二叉树的深度) +* [56. 数组中只出现一次的数字](#56-数组中只出现一次的数字) +* [57.1 和为 S 的两个数字](#571-和为-s-的两个数字) +* [57.2 和为 S 的连续正数序列](#572-和为-s-的连续正数序列) +* [58.1 翻转单词顺序列](#581-翻转单词顺序列) +* [58.2 左旋转字符串](#582-左旋转字符串) +* [59. 滑动窗口的最大值](#59-滑动窗口的最大值) +* [60. n 个骰子的点数](#60-n-个骰子的点数) +* [61. 扑克牌顺子](#61-扑克牌顺子) +* [62. 圆圈中最后剩下的数](#62-圆圈中最后剩下的数) +* [63. 股票的最大利润](#63-股票的最大利润) +* [64. 求 1+2+3+...+n](#64-求-1+2+3++n) +* [65. 不用加减乘除做加法](#65-不用加减乘除做加法) +* [66. 构建乘积数组](#66-构建乘积数组) +* [67. 把字符串转换成整数](#67-把字符串转换成整数) +* [68. 树中两个节点的最低公共祖先](#68-树中两个节点的最低公共祖先) + + + +# 前言 + +## 变量命名约定 + +- nums 表示数字数组,array 表示通用数组,matrix 表示矩阵; +- n 表示数组长度、字符串长度、树节点个数,以及其它具有一维性质的数据结构的元素个数; +- m, n 表示矩阵的行数和列数; +- first, last 表示闭区间,在需要作为函数参数时使用:[first, last]; +- l, h 也表示闭区间,在只作为局部变量时使用:[l, h]; +- begin, end 表示左闭右开区间:[begin, end); +- ret 表示结果相关的变量; +- dp 表示动态规划保存子问题的数组; + +## 复杂度简写说明 + +O(nlogn) + O(n2),第一个指时间复杂度,第二个指空间复杂度。 + +# 2. 实现 Singleton + +> [单例模式](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F.md#%E5%85%AB%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F) + +# 3. 数组中重复的数字 + +## 题目描述 + +在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为 7 的数组 {2, 3, 1, 0, 2, 5, 3},那么对应的输出是第一个重复的数字 2。 + +## 解题思路 + +这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素放到第 i 个位置上。 + +以 (2, 3, 1, 0, 2, 5) 为例,以下代码的运行过程为: + +```html +position-0 : (2,3,1,0,2,5) // 2 <-> 1 + (1,3,2,0,2,5) // 1 <-> 3 + (3,1,1,0,2,5) // 3 <-> 0 + (0,1,1,3,2,5) // already in position +position-1 : (0,1,1,3,2,5) // already in position +position-2 : (0,1,1,3,2,5) // nums[i] == nums[nums[i]], exit +``` + +遍历到位置 2 时,该位置上的数为 1,但是第 1 个位置上已经有一个 1 的值了,因此可以知道 1 重复。 + +复杂度:O(n) + O(1) + +```java +public boolean duplicate(int[] nums, int length, int[] duplication) { + if (nums == null || length <= 0) return false; + for (int i = 0; i < length; i++) { + while (nums[i] != i && nums[i] != nums[nums[i]]) { + swap(nums, i, nums[i]); + } + if (nums[i] != i && nums[i] == nums[nums[i]]) { + duplication[0] = nums[i]; + return true; + } + } + return false; +} + +private void swap(int[] nums, int i, int j) { + int t = nums[i]; nums[i] = nums[j]; nums[j] = t; +} +``` + +# 4. 二维数组中的查找 + +## 题目描述 + +在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 + +```html +Consider the following matrix: +[ + [1, 4, 7, 11, 15], + [2, 5, 8, 12, 19], + [3, 6, 9, 16, 22], + [10, 13, 14, 17, 24], + [18, 21, 23, 26, 30] +] + +Given target = 5, return true. +Given target = 20, return false. +``` + +## 解题思路 + +从右上角开始查找。因为矩阵中的一个数,它左边的数都比它小,下边的数都比它大。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来缩小查找区间。 + +复杂度:O(m + n) + O(1) + +```java +public boolean Find(int target, int[][] matrix) { + if (matrix == null || matrix.length == 0 || matrix[0].length == 0) return false; + int m = matrix.length, n = matrix[0].length; + int r = 0, c = n - 1; // 从右上角开始 + while (r <= m - 1 && c >= 0) { + if (target == matrix[r][c]) return true; + else if (target > matrix[r][c]) r++; + else c--; + } + return false; +} +``` + +# 5. 替换空格 + +## 题目描述 + +请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为 We Are Happy. 则经过替换之后的字符串为 We%20Are%20Happy。 + +## 解题思路 + +在字符串尾部填充任意字符,使得字符串的长度等于字符串替换之后的长度。因为一个空格要替换成三个字符(%20),因此当遍历到一个空格时,需要在尾部填充两个任意字符。 + +令 P1 指向字符串原来的末尾位置,P2 指向字符串现在的末尾位置。P1 和 P2 从后向前遍历,当 P1 遍历到一个空格时,就需要令 P2 指向的位置依次填充 02%(注意是逆序的),否则就填充上 P1 指向字符的值。 + +从后向前遍是为了在改变 P2 所指向的内容时,不会影响到 P1 遍历原来字符串的内容。 + +复杂度:O(n) + O(1) + +

    + +```java +public String replaceSpace(StringBuffer str) { + int oldLen = str.length(); + for (int i = 0; i < oldLen; i++) { + if (str.charAt(i) == ' ') { + str.append(" "); + } + } + int idxOfOld = oldLen - 1; + int idxOfNew = str.length() - 1; + while (idxOfOld >= 0 && idxOfNew > idxOfOld) { + char c = str.charAt(idxOfOld--); + if (c == ' ') { + str.setCharAt(idxOfNew--, '0'); + str.setCharAt(idxOfNew--, '2'); + str.setCharAt(idxOfNew--, '%'); + } else { + str.setCharAt(idxOfNew--, c); + } + } + return str.toString(); +} +``` + +# 6. 从尾到头打印链表 + +## 题目描述 + +输入链表的第一个节点,从尾到头反过来打印出每个结点的值。 + +## 解题思路 + +### 使用栈 + +```java +public ArrayList printListFromTailToHead(ListNode listNode) { + Stack stack = new Stack<>(); + while (listNode != null) { + stack.add(listNode.val); + listNode = listNode.next; + } + ArrayList ret = new ArrayList<>(); + while (!stack.isEmpty()) { + ret.add(stack.pop()); + } + return ret; +} +``` + +### 使用递归 + +```java +public ArrayList printListFromTailToHead(ListNode listNode) { + ArrayList ret = new ArrayList<>(); + if(listNode != null) { + ret.addAll(printListFromTailToHead(listNode.next)); + ret.add(listNode.val); + } + return ret; +} +``` + +### 使用 Collections.reverse() + +```java +public ArrayList printListFromTailToHead(ListNode listNode) { + ArrayList ret = new ArrayList<>(); + while (listNode != null) { + ret.add(listNode.val); + listNode = listNode.next; + } + Collections.reverse(ret); + return ret; +} +``` + +### 使用头插法 + +利用链表头插法为逆序的特点。 + +头结点和第一个节点的区别:头结点是在头插法中使用的一个额外节点,这个节点不存储值;第一个节点就是链表的第一个真正存储值的节点。 + +```java +public ArrayList printListFromTailToHead(ListNode listNode) { + // 头插法构建逆序链表 + ListNode head = new ListNode(-1); + while (listNode != null) { + ListNode memo = listNode.next; + listNode.next = head.next; + head.next = listNode; + listNode = memo; + } + // 构建 ArrayList + ArrayList ret = new ArrayList<>(); + head = head.next; + while (head != null) { + ret.add(head.val); + head = head.next; + } + return ret; +} +``` + +# 7. 重建二叉树 + +## 题目描述 + +根据二叉树的前序遍历和中序遍历的结果,重建出该二叉树。 + +```html +For example, given + +preorder = [3,9,20,15,7] +inorder = [9,3,15,20,7] + +Return the following binary tree: + + 3 + / \ + 9 20 + / \ + 15 7 +``` + +## 解题思路 + +前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分成两部分,左部分为树的左子树中序遍历结果,右部分为树的右子树中序遍历的结果。 + +```java +private Map inOrderNumsIdx = new HashMap<>(); // 缓存中序遍历数组的每个值对应的索引 + +public TreeNode reConstructBinaryTree(int[] pre, int[] in) { + for (int i = 0; i < in.length; i++) { + inOrderNumsIdx.put(in[i], i); + } + return reConstructBinaryTree(pre, 0, pre.length - 1, in, 0, in.length - 1); +} + +private TreeNode reConstructBinaryTree(int[] pre, int preL, int preR, int[] in, int inL, int inR) { + if (preL == preR) return new TreeNode(pre[preL]); + if (preL > preR || inL > inR) return null; + TreeNode root = new TreeNode(pre[preL]); + int inIdx = inOrderNumsIdx.get(root.val); + int leftTreeSize = inIdx - inL; + root.left = reConstructBinaryTree(pre, preL + 1, preL + leftTreeSize, in, inL, inL + leftTreeSize - 1); + root.right = reConstructBinaryTree(pre, preL + leftTreeSize + 1, preR, in, inL + leftTreeSize + 1, inR); + return root; +} +``` + +# 8. 二叉树的下一个结点 + +## 题目描述 + +给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 + +## 解题思路 + +① 如果一个节点有右子树不为空,那么该节点的下一个节点是右子树的最左节点; + +

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

    + +```java +public class TreeLinkNode { + int val; + TreeLinkNode left = null; + TreeLinkNode right = null; + TreeLinkNode next = null; + + TreeLinkNode(int val) { + this.val = val; + } +} +``` + +```java +public TreeLinkNode GetNext(TreeLinkNode pNode) { + if (pNode.right != null) { + TreeLinkNode node = pNode.right; + while (node.left != null) node = node.left; + return node; + } else { + while (pNode.next != null) { + TreeLinkNode parent = pNode.next; + if (parent.left == pNode) return parent; + pNode = pNode.next; + } + } + return null; +} +``` + +# 9. 用两个栈实现队列 + +## 解题思路 + +in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,此时先进入的元素先退出,这就是队列的顺序。 + +```java +Stack in = new Stack(); +Stack out = new Stack(); + +public void push(int node) { + in.push(node); +} + +public int pop() { + if (out.isEmpty()) { + while (!in.isEmpty()) { + out.push(in.pop()); + } + } + return out.pop(); +} +``` + +# 10.1 斐波那契数列 + +## 题目描述 + +以 O(1) 的时间复杂度求菲波那切数列。 + +

    + +## 解题思路 + +如果使用递归求解,那么会重复计算一些子问题。例如,求 f(10) 需要计算 f(9) 和 f(8),计算 f(9) 需要计算 f(8) 和 f(7),可以看到 f(8) 被重复计算了。 + +

    + +递归方法是将一个问题划分成多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解缓存起来,避免重复求解子问题。 + +```java +public class Solution { + private int[] fib = new int[40]; + public Solution() { + fib[1] = 1; + fib[2] = 2; + for(int i = 2; i < fib.length; i++) { + fib[i] = fib[i - 1] + fib[i - 2]; + } + } + public int Fibonacci(int n) { + return fib[n]; + } +} +``` + +# 10.2 跳台阶 + +## 题目描述 + +一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 + +## 解题思路 + +```java +public int JumpFloor(int n) { + if (n == 1) return 1; + int[] dp = new int[n]; + dp[0] = 1; + dp[1] = 2; + for (int i = 2; i < n; i++) { + dp[i] = dp[i - 1] + dp[i - 2]; + } + return dp[n - 1]; +} +``` + +# 10.3 变态跳台阶 + +## 题目描述 + +一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级……它也可以跳上 n 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。 + +## 解题思路 + +```java +public int JumpFloorII(int n) { + int[] dp = new int[n]; + Arrays.fill(dp, 1); + for(int i = 1; i < n; i++) { + for(int j = 0; j < i; j++) { + dp[i] += dp[j]; + } + } + return dp[n - 1]; +} +``` + +# 10.4 矩形覆盖 + +## 题目描述 + +我们可以用 2\*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2\*1 的小矩形无重叠地覆盖一个 2\*n 的大矩形,总共有多少种方法? + +## 解题思路 + +```java +public int RectCover(int n) { + if (n < 2) return n; + int[] dp = new int[n]; + dp[0] = 1; + dp[1] = 2; + for (int i = 2; i < n; i++) { + dp[i] = dp[i - 1] + dp[i - 2]; + } + return dp[n - 1]; +} +``` + +# 11. 旋转数组的最小数字 + +## 题目描述 + +把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组 {3, 4, 5, 1, 2} 为 {1, 2, 3, 4, 5} 的一个旋转,该数组的最小值为 1。NOTE:给出的所有元素都大于 0,若数组大小为 0,请返回 0。 + +## 解题思路 + +### 分治 + +复杂度:O(logn) + O(1),其实空间复杂度不止 O(1),因为分治使用了递归栈,用到了额外的空间,如果对空间有要求就不能用这种方法。 + +```java +public int minNumberInRotateArray(int[] nums) { + return minNumberInRotateArray(nums, 0, nums.length - 1); +} + +private int minNumberInRotateArray(int[] nums, int first, int last) { + if (nums[first] < nums[last]) return nums[first]; + if (first == last) return nums[first]; + int mid = first + (last - first) / 2; + return Math.min(minNumberInRotateArray(nums, first, mid), minNumberInRotateArray(nums, mid + 1, last)); +} +``` + +### 双指针 + +复杂度:O(logn) + O(1) + +```java +public int minNumberInRotateArray(int[] nums) { + if (nums.length == 0) return 0; + int l = 0, h = nums.length - 1; + while (nums[l] >= nums[h]) { + if (h - l == 1) return nums[h]; + int mid = l + (h - l) / 2; + if (nums[mid] >= nums[l]) l = mid; + else if (nums[mid] <= nums[h]) h = mid; + } + return nums[l]; +} +``` + +# 12. 矩阵中的路径 + +## 题目描述 + +请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。例如 a b c e s f c s a d e e 矩阵中包含一条字符串 "bcced" 的路径,但是矩阵中不包含 "abcb" 路径,因为字符串的第一个字符 b 占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。 + +## 解题思路 + +```java +private int[][] next = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}}; +private int rows; +private int cols; + +public boolean hasPath(char[] array, int rows, int cols, char[] str) { + if (rows == 0 || cols == 0) return false; + this.rows = rows; + this.cols = cols; + boolean[][] hasUsed = new boolean[rows][cols]; + char[][] matrix = buildMatrix(array); + for (int i = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + if (backtracking(matrix, str, hasUsed, 0, i, j)) return true; + } + } + return false; +} + +private boolean backtracking(char[][] matrix, char[] str, boolean[][] hasUsed, int pathLen, int row, int col) { + if (pathLen == str.length) return true; + if (row < 0 || row >= rows || col < 0 || col >= cols) return false; + if (matrix[row][col] != str[pathLen]) return false; + if (hasUsed[row][col]) return false; + hasUsed[row][col] = true; + for (int i = 0; i < next.length; i++) { + if (backtracking(matrix, str, hasUsed, pathLen + 1, row + next[i][0], col + next[i][1])) + return true; + } + hasUsed[row][col] = false; + return false; +} + +private char[][] buildMatrix(char[] array) { + char[][] matrix = new char[rows][cols]; + for (int i = 0, idx = 0; i < rows; i++) { + for (int j = 0; j < cols; j++) { + matrix[i][j] = array[idx++]; + } + } + return matrix; +} +``` + +# 13. 机器人的运动范围 + +## 题目描述 + +地上有一个 m 行和 n 列的方格。一个机器人从坐标 (0, 0) 的格子开始移动,每一次只能向左右上下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 k 的格子。例如,当 k 为 18 时,机器人能够进入方格(35, 37),因为 3+5+3+7=18。但是,它不能进入方格(35, 38),因为 3+5+3+8=19。请问该机器人能够达到多少个格子? + +## 解题思路 + +```java +private int cnt = 0; +private int[][] next = {{0, -1}, {0, 1}, {-1, 0}, {1, 0}}; +private int rows; +private int cols; +private int threshold; +private int[][] digitSum; + +public int movingCount(int threshold, int rows, int cols) { + this.rows = rows; + this.cols = cols; + this.threshold = threshold; + initDigitSum(); + boolean[][] hasVisited = new boolean[rows][cols]; + dfs(hasVisited, 0, 0); + return cnt; +} + +private void dfs(boolean[][] hasVisited, int r, int c) { + if (r < 0 || r >= this.rows || c < 0 || c >= this.cols) return; + if (hasVisited[r][c]) return; + hasVisited[r][c] = true; + if (this.digitSum[r][c] > this.threshold) return; + this.cnt++; + for (int i = 0; i < this.next.length; i++) { + dfs(hasVisited, r + next[i][0], c + next[i][1]); + } +} + +private void initDigitSum() { + int[] digitSumOne = new int[Math.max(rows, cols)]; + for (int i = 0; i < digitSumOne.length; i++) { + int n = i; + while (n > 0) { + digitSumOne[i] += n % 10; + n /= 10; + } + } + this.digitSum = new int[rows][cols]; + for (int i = 0; i < this.rows; i++) { + for (int j = 0; j < this.cols; j++) { + this.digitSum[i][j] = digitSumOne[i] + digitSumOne[j]; + } + } +} +``` + +# 14. 剪绳子 + +## 题目描述 + +把一根绳子剪成多段,并且使得每段的长度乘积最大。 + +## 解题思路 + +### 动态规划解法 + +```java +public int maxProductAfterCutting(int n) { + int[] dp = new int[n + 1]; + dp[1] = 1; + for (int i = 2; i <= n; i++) { + for (int j = 1; j < i; j++) { + dp[i] = Math.max(dp[i], Math.max(j * (i - j), dp[j] * (i - j))); + } + } + return dp[n]; +} +``` + +### 贪心解法 + +尽可能多得剪长度为 3 的绳子,并且不允许有长度为 1 的绳子出现,如果出现了,就从已经切好长度为 3 的绳子中拿出一段与长度为 1 的绳子重新组合,把它们切成两段长度为 2 的绳子。 + +证明:当 n >= 5 时,3(n - 3) - 2(n - 2) = n - 5 >= 0。因此把长度大于 5 的绳子切成两段,令其中一段长度为 3 可以使得两段的乘积最大。 + +```java +public int maxProductAfterCutting(int n) { + if (n < 2) return 0; + if (n == 2) return 1; + if (n == 3) return 2; + int timesOf3 = n / 3; + if (n - timesOf3 * 3 == 1) timesOf3--; + int timesOf2 = (n - timesOf3 * 3) / 2; + return (int) (Math.pow(3, timesOf3)) * (int) (Math.pow(2, timesOf2)); +} +``` + +# 15. 二进制中 1 的个数 + +## 题目描述 + +输入一个整数,输出该数二进制表示中 1 的个数。 + +### Integer.bitCount() + +```java +public int NumberOf1(int n) { + return Integer.bitCount(n); +} +``` + +### n&(n-1) + +O(logM) 时间复杂度解法,其中 m 表示 1 的个数。 + +该位运算是去除 n 的位级表示中最低的那一位。 + +``` +n : 10110100 +n-1 : 10110011 +n&(n-1) : 10110000 +``` + +```java +public int NumberOf1(int n) { + int cnt = 0; + while (n != 0) { + cnt++; + n &= (n - 1); + } + return cnt; +} +``` + +# 16. 数值的整数次方 + +## 题目描述 + +给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent。求 base 的 exponent 次方。 + +## 解题思路 + +下面的讨论中 x 代表 base,n 代表 exponent。 + +

    + +因为 (x\*x)n/2 可以通过递归求解,并且每递归一次,n 都减小一半,因此整个算法的时间复杂度为 O(logn)。 + +```java +public double Power(double base, int exponent) { + if (exponent == 0) return 1; + if (exponent == 1) return base; + boolean isNegative = false; + if (exponent < 0) { + exponent = -exponent; + isNegative = true; + } + double pow = Power(base * base, exponent / 2); + if (exponent % 2 != 0) pow = pow * base; + return isNegative ? 1 / pow : pow; +} +``` + +# 17. 打印从 1 到最大的 n 位数 + +## 题目描述 + +输入数字 n,按顺序打印出从 1 最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数即 999。 + +## 解题思路 + +由于 n 可能会非常大,因此不能直接用 int 表示数字,而是用 char 数组进行存储。 + +使用回溯法得到所有的数。 + +```java +public void print1ToMaxOfNDigits(int n) { + if (n < 0) return; + char[] number = new char[n]; + print1ToMaxOfNDigits(number, -1); +} + +private void print1ToMaxOfNDigits(char[] number, int digit) { + if (digit == number.length - 1) { + printNumber(number); + return; + } + for (int i = 0; i < 10; i++) { + number[digit + 1] = (char) (i + '0'); + print1ToMaxOfNDigits(number, digit + 1); + } +} +``` + +# 18.1 在 O(1) 时间内删除链表节点 + +## 解题思路 + +① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,令该节点指向下下个节点,然后删除下一个节点,时间复杂度为 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)。 + +```java +public ListNode deleteNode(ListNode head, ListNode tobeDelete) { + if (head == null || head.next == null || tobeDelete == null) return null; + if (tobeDelete.next != null) { + // 要删除的节点不是尾节点 + ListNode next = tobeDelete.next; + tobeDelete.val = next.val; + tobeDelete.next = next.next; + } else { + ListNode cur = head; + while (cur.next != tobeDelete) cur = cur.next; + cur.next = null; + } + return head; +} +``` + +# 18.2 删除链表中重复的结点 + +## 题目描述 + +```html +Input : 1->2->3->3->4->4->5 +Output : 1->2->5 +``` + +## 解题描述 + +```java +public ListNode deleteDuplication(ListNode pHead) { + if (pHead == null) return null; + ListNode next = pHead.next; + if (next == null) return pHead; + if (pHead.val == next.val) { + while (next != null && pHead.val == next.val) next = next.next; + return deleteDuplication(next); + } + pHead.next = deleteDuplication(pHead.next); + return pHead; +} +``` + +# 19. 正则表达式匹配 + +## 题目描述 + +请实现一个函数用来匹配包括 '.' 和 '\*' 的正则表达式。模式中的字符 '.' 表示任意一个字符,而 '\*' 表示它前面的字符可以出现任意次(包含 0 次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串 "aaa" 与模式 "a.a" 和 "ab\*ac\*a" 匹配,但是与 "aa.a" 和 "ab\*a" 均不匹配。 + +## 解题思路 + +应该注意到,'.' 是用来代替一个任意字符,而 '\*' 是用来重复前面的字符。这两个的作用不同,不能把 '.' 的作用和 '\*' 进行类比,从而它当成重复前面字符一次。 + +```html +p.charAt(j) == s.charAt(i) : dp[i][j] = dp[i-1][j-1]; +p.charAt(j) == '.' : dp[i][j] = dp[i-1][j-1]; +p.charAt(j) == '*' : + p.charAt(j-1) != s.charAt(i) : dp[i][j] = dp[i][j-2] // in this case, a* only counts as empty + p.charAt(j-1) == s.charAt(i) or p.charAt(i-1) == '.': + dp[i][j] = dp[i-1][j] // in this case, a* counts as multiple a + or dp[i][j] = dp[i][j-1] // in this case, a* counts as single a + or dp[i][j] = dp[i][j-2] // in this case, a* counts as empty +``` + +```java +public boolean match(char[] str, char[] pattern) { + int m = str.length, n = pattern.length; + boolean[][] dp = new boolean[m + 1][n + 1]; + dp[0][0] = true; + for (int i = 1; i <= n; i++) { + if (pattern[i - 1] == '*') { + dp[0][i] = dp[0][i - 2]; + } + } + for (int i = 1; i <= m; i++) { + for (int j = 1; j <= n; j++) { + if (str[i - 1] == pattern[j - 1] || pattern[j - 1] == '.') { + dp[i][j] = dp[i - 1][j - 1]; + } else if (pattern[j - 1] == '*') { + if (pattern[j - 2] == str[i - 1] || pattern[j - 2] == '.') { + dp[i][j] = dp[i][j - 1] || dp[i][j - 2] || dp[i - 1][j]; + } else { + dp[i][j] = dp[i][j - 2]; + } + } + } + } + return dp[m][n]; +} +``` + +# 20. 表示数值的字符串 + +## 题目描述 + +请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串 "+100","5e2","-123","3.1416" 和 "-1E-16" 都表示数值。 但是 "12e","1a3.14","1.2.3","+-5" 和 "12e+4.3" 都不是。 + +## 解题思路 + +```java +public boolean isNumeric(char[] str) { + return new String(str).matches("[+-]?\\d*(\\.\\d+)?([eE][+-]?\\d+)?"); +} +``` + +# 21. 调整数组顺序使奇数位于偶数前面 + +## 题目描述 + +保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 + +## 解题思路 + +复杂度:O(n2) + O(1) + +```java +public void reOrderArray(int[] nums) { + int n = nums.length; + for (int i = 0; i < n; i++) { + if (nums[i] % 2 == 0) { + int nextOddIdx = i + 1; + while (nextOddIdx < n && nums[nextOddIdx] % 2 == 0) nextOddIdx++; + if (nextOddIdx == n) break; + int nextOddVal = nums[nextOddIdx]; + for (int j = nextOddIdx; j > i; j--) { + nums[j] = nums[j - 1]; + } + nums[i] = nextOddVal; + } + } +} +``` + +复杂度:O(n) + O(n) + +```java +public void reOrderArray(int[] nums) { + int oddCnt = 0; + for (int val : nums) if (val % 2 == 1) oddCnt++; + int[] copy = nums.clone(); + int i = 0, j = oddCnt; + for (int num : copy) { + if (num % 2 == 1) nums[i++] = num; + else nums[j++] = num; + } +} +``` + +# 22. 链表中倒数第 K 个结点 + +## 解题思路 + +设链表的长度为 N。设两个指针 P1 和 P2,先让 P1 移动 K 个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到 N - K 个节点处,该位置就是倒数第 K 个节点。 + +## 解题思路 + +

    + +```java +public ListNode FindKthToTail(ListNode head, int k) { + if (head == null) return null; + ListNode P1, P2; + P1 = P2 = head; + while (P1 != null && k-- > 0) P1 = P1.next; + if (k > 0) return null; + while (P1 != null) { + P1 = P1.next; + P2 = P2.next; + } + return P2; +} +``` + +# 23. 链表中环的入口结点 + +## 解题思路 + +使用双指针,一个指针 fast 每次移动两个节点,一个指针 slow 每次移动一个节点。因为存在环,所以两个指针必定相遇在环中的某个节点上。此时 fast 移动的节点数为 x+2y+z,slow 为 x+y,由于 fast 速度比 slow 快一倍,因此 x+2y+z=2(x+y),得到 x=z。 + +在相遇点,slow 要到环的入口点还需要移动 z 个节点,如果让 fast 重新从头开始移动,并且速度变为每次移动一个节点,那么它到环入口点还需要移动 x 个节点。在上面已经推导出 x=z,因此 fast 和 slow 将在环入口点相遇。 + +

    + +```java +public ListNode EntryNodeOfLoop(ListNode pHead) { + if (pHead == null) return null; + ListNode slow = pHead, fast = pHead; + while (fast != null && fast.next != null) { + fast = fast.next.next; + slow = slow.next; + if (slow == fast) { + fast = pHead; + while (slow != fast) { + slow = slow.next; + fast = fast.next; + } + return slow; + } + } + return null; +} +``` + +# 24. 反转链表 + +## 解题思路 + +### 递归 + +```java +public ListNode ReverseList(ListNode head) { + if (head == null || head.next == null) return head; + ListNode next = head.next; + head.next = null; + ListNode newHead = ReverseList(next); + next.next = head; + return newHead; +} +``` + +### 迭代 + +```java +public ListNode ReverseList(ListNode head) { + ListNode newList = new ListNode(-1); + while (head != null) { + ListNode next = head.next; + head.next = newList.next; + newList.next = head; + head = next; + } + return newList.next; +} +``` + +# 25. 合并两个排序的链表 + +## 题目描述 + +

    + +## 解题思路 + +### 递归 + +```java +public ListNode Merge(ListNode list1, ListNode list2) { + if (list1 == null) return list2; + if (list2 == null) return list1; + if (list1.val <= list2.val) { + list1.next = Merge(list1.next, list2); + return list1; + } else { + list2.next = Merge(list1, list2.next); + return list2; + } +} +``` + +### 迭代 + +```java +public ListNode Merge(ListNode list1, ListNode list2) { + ListNode head = new ListNode(-1); + ListNode cur = head; + while (list1 != null && list2 != null) { + if (list1.val < list2.val) { + cur.next = list1; + list1 = list1.next; + } else { + cur.next = list2; + list2 = list2.next; + } + cur = cur.next; + } + if (list1 != null) cur.next = list1; + if (list2 != null) cur.next = list2; + return head.next; +} +``` + +# 26. 树的子结构 + +## 题目描述 + +

    + +## 解题思路 + +```java +public boolean HasSubtree(TreeNode root1, TreeNode root2) { + if (root1 == null || root2 == null) return false; + return isSubtree(root1, root2) || HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2); +} + +private boolean isSubtree(TreeNode root1, TreeNode root2) { + if (root1 == null && root2 == null) return true; + if (root1 == null) return false; + if (root2 == null) return true; + if (root1.val != root2.val) return false; + return isSubtree(root1.left, root2.left) && isSubtree(root1.right, root2.right); +} +``` + +# 27. 二叉树的镜像 + +## 题目描述 + +

    + +## 解题思路 + +```java +public void Mirror(TreeNode root) { + if (root == null) return; + swap(root); + Mirror(root.left); + Mirror(root.right); +} + +private void swap(TreeNode root) { + TreeNode t = root.left; + root.left = root.right; + root.right = t; +} +``` + +# 28.1 对称的二叉树 + +## 题目描述 + +```html + 1 + / \ + 2 2 + / \ / \ +3 4 4 3 +``` + +## 解题思路 + +```java +boolean isSymmetrical(TreeNode pRoot) { + if (pRoot == null) return true; + return isSymmetrical(pRoot.left, pRoot.right); +} + +boolean isSymmetrical(TreeNode t1, TreeNode t2) { + if (t1 == null && t2 == null) return true; + if (t1 == null || t2 == null) return false; + if (t1.val != t2.val) return false; + return isSymmetrical(t1.left, t2.right) && isSymmetrical(t1.right, t2.left); +} +``` + +# 28.2 平衡二叉树 + +## 题目描述 + +```html + 3 + / \ + 9 20 + / \ + 15 7 +``` + +平衡二叉树左右子树高度差不超过 1。 + +## 解题思路 + +```java +private boolean isBalanced = true; + +public boolean IsBalanced_Solution(TreeNode root) { + height(root); + return isBalanced; +} + +private int height(TreeNode root) { + if (root == null) return 0; + int left = height(root.left); + int right = height(root.right); + if (Math.abs(left - right) > 1) isBalanced = false; + return 1 + Math.max(left, right); +} +``` + +# 29. 顺时针打印矩阵 + +## 题目描述 + +下图的矩阵顺时针打印结果为:1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10 + +

    + +

    + +## 解题思路 + +```java +public ArrayList printMatrix(int[][] matrix) { + ArrayList ret = new ArrayList<>(); + int r1 = 0, r2 = matrix.length - 1, c1 = 0, c2 = matrix[0].length - 1; + while (r1 <= r2 && c1 <= c2) { + for (int i = c1; i <= c2; i++) ret.add(matrix[r1][i]); + for (int i = r1 + 1; i <= r2; i++) ret.add(matrix[i][c2]); + if (r1 != r2) for (int i = c2 - 1; i >= c1; i--) ret.add(matrix[r2][i]); + if (c1 != c2) for (int i = r2 - 1; i > r1; i--) ret.add(matrix[i][c1]); + r1++; r2--; c1++; c2--; + } + return ret; +} +``` + +# 30. 包含 min 函数的栈 + +## 题目描述 + +定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的 min 函数。 + +## 解题思路 + +```java +private Stack stack = new Stack<>(); +private Stack minStack = new Stack<>(); +private int min = Integer.MAX_VALUE; + +public void push(int node) { + stack.push(node); + if (min > node) min = node; + minStack.push(min); +} + +public void pop() { + stack.pop(); + minStack.pop(); + min = minStack.peek(); +} + +public int top() { + return stack.peek(); +} + +public int min() { + return minStack.peek(); +} +``` + +# 31. 栈的压入、弹出序列 + +## 题目描述 + +输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列 1,2,3,4,5 是某栈的压入顺序,序列 4,5,3,2,1 是该压栈序列对应的一个弹出序列,但 4,3,5,1,2 就不可能是该压栈序列的弹出序列。 + +## 解题思路 + +```java +public boolean IsPopOrder(int[] pushA, int[] popA) { + int n = pushA.length; + Stack stack = new Stack<>(); + for (int pushIndex = 0, popIndex = 0; pushIndex < n; pushIndex++) { + stack.push(pushA[pushIndex]); + while (popIndex < n && stack.peek() == popA[popIndex]) { + stack.pop(); + popIndex++; + } + } + return stack.isEmpty(); +} +``` + +# 32.1 从上往下打印二叉树 + +## 题目描述 + +从上往下打印出二叉树的每个节点,同层节点从左至右打印。 + +例如,以下二叉树层次遍历的结果为 8, 6, 10, 5, 7, 9, 11 + +

    + +## 解题思路 + +使用队列来进行层次遍历。 + +不需要使用两个队列分别存储当前层的节点和下一层的节点,因为在开始遍历一层的节点时,当前队列中的节点数就是当前层的节点数,只要控制遍历这么多节点数,就能保证这次遍历的都是当前层的节点。 + +```java +public ArrayList PrintFromTopToBottom(TreeNode root) { + Queue queue = new LinkedList<>(); + ArrayList ret = new ArrayList<>(); + if (root == null) return ret; + queue.add(root); + while (!queue.isEmpty()) { + int cnt = queue.size(); + for (int i = 0; i < cnt; i++) { + TreeNode t = queue.poll(); + if (t.left != null) queue.add(t.left); + if (t.right != null) queue.add(t.right); + ret.add(t.val); + } + } + return ret; +} +``` + +# 32.2 把二叉树打印成多行 + +## 题目描述 + +和上题几乎一样。 + +## 解题思路 + +```java +ArrayList> Print(TreeNode pRoot) { + ArrayList> ret = new ArrayList<>(); + if (pRoot == null) return ret; + Queue queue = new LinkedList<>(); + queue.add(pRoot); + while (!queue.isEmpty()) { + int cnt = queue.size(); + ArrayList list = new ArrayList<>(); + for (int i = 0; i < cnt; i++) { + TreeNode node = queue.poll(); + list.add(node.val); + if (node.left != null) queue.add(node.left); + if (node.right != null) queue.add(node.right); + } + ret.add(list); + } + return ret; +} +``` + +# 32.3 按之字形顺序打印二叉树 + +## 题目描述 + +请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 + +## 解题思路 + +```java +public ArrayList> Print(TreeNode pRoot) { + ArrayList> ret = new ArrayList<>(); + if (pRoot == null) return ret; + Queue queue = new LinkedList<>(); + queue.add(pRoot); + boolean reverse = false; + while (!queue.isEmpty()) { + int cnt = queue.size(); + ArrayList list = new ArrayList<>(); + for (int i = 0; i < cnt; i++) { + TreeNode node = queue.poll(); + list.add(node.val); + if (node.left != null) queue.add(node.left); + if (node.right != null) queue.add(node.right); + } + if (reverse) Collections.reverse(list); + reverse = !reverse; + ret.add(list); + } + return ret; +} +``` + +# 33. 二叉搜索树的后序遍历序列 + +## 题目描述 + +输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。 + +例如,下图中后序遍历序列 5, 7, 6, 9, 11, 10, 8 所对应的二叉搜索树。 + +

    + +## 解题思路 + +```java +public boolean VerifySquenceOfBST(int[] sequence) { + if (sequence == null || sequence.length == 0) return false; + return verify(sequence, 0, sequence.length - 1); +} + +private boolean verify(int[] sequence, int first, int last) { + if (last - first <= 1) return true; + int rootVal = sequence[last]; + int cutIndex = first; + while (cutIndex < last && sequence[cutIndex] <= rootVal) cutIndex++; + for (int i = cutIndex + 1; i < last; i++) { + if (sequence[i] < rootVal) return false; + } + return verify(sequence, first, cutIndex - 1) && verify(sequence, cutIndex, last - 1); +} +``` + +# 34. 二叉树中和为某一值的路径 + +## 题目描述 + +输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 + +下图的二叉树有两条和为 22 的路径:10, 5, 7 和 10, 12 + +

    + +## 解题思路 + +```java +private ArrayList> ret = new ArrayList<>(); + +public ArrayList> FindPath(TreeNode root, int target) { + dfs(root, target, new ArrayList<>()); + return ret; +} + +private void dfs(TreeNode node, int target, ArrayList path) { + if (node == null) return; + path.add(node.val); + target -= node.val; + if (target == 0 && node.left == null && node.right == null) { + ret.add(new ArrayList(path)); + } else { + dfs(node.left, target, path); + dfs(node.right, target, path); + } + path.remove(path.size() - 1); +} +``` + +# 35. 复杂链表的复制 + +## 题目描述 + +输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的 head。 + +

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

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

    + +第三步,拆分。 + +

    + +```java +public RandomListNode Clone(RandomListNode pHead) { + if (pHead == null) { + return null; + } + // 插入新节点 + RandomListNode cur = pHead; + while (cur != null) { + RandomListNode clone = new RandomListNode(cur.label); + clone.next = cur.next; + cur.next = clone; + cur = clone.next; + } + // 建立 random 链接 + cur = pHead; + while (cur != null) { + RandomListNode clone = cur.next; + if (cur.random != null) { + clone.random = cur.random.next; + } + cur = clone.next; + } + // 拆分 + cur = pHead; + RandomListNode pCloneHead = pHead.next; + while (cur.next != null) { + RandomListNode next = cur.next; + cur.next = next.next; + cur = next; + } + return pCloneHead; +} +``` + +# 36. 二叉搜索树与双向链表 + +## 题目描述 + +输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 + +

    + +## 解题思路 + +```java +private TreeNode pre = null; +private TreeNode head = null; + +public TreeNode Convert(TreeNode root) { + if (root == null) return null; + inOrder(root); + return head; +} + +private void inOrder(TreeNode node) { + if (node == null) return; + inOrder(node.left); + node.left = pre; + if (pre != null) pre.right = node; + pre = node; + if (head == null) head = node; + inOrder(node.right); +} +``` + +# 37. 序列化二叉树 + +## 题目描述 + +请实现两个函数,分别用来序列化和反序列化二叉树。 + +## 解题思路 + +```java +public class Solution { + + private String deserializeStr; + + public String Serialize(TreeNode root) { + if (root == null) return "#"; + return root.val + " " + Serialize(root.left) + " " + Serialize(root.right); + } + + public TreeNode Deserialize(String str) { + deserializeStr = str; + return Deserialize(); + } + + private TreeNode Deserialize() { + if (deserializeStr.length() == 0) return null; + int index = deserializeStr.indexOf(" "); + String node = index == -1 ? deserializeStr : deserializeStr.substring(0, index); + deserializeStr = index == -1 ? "" : deserializeStr.substring(index + 1); + if (node.equals("#")) return null; + int val = Integer.valueOf(node); + TreeNode t = new TreeNode(val); + t.left = Deserialize(); + t.right = Deserialize(); + return t; + } +} +``` + +# 38. 字符串的排列 + +## 题目描述 + +输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串 abc,则打印出由字符 a, b, c 所能排列出来的所有字符串 abc, acb, bac, bca, cab 和 cba。 + +## 解题思路 + +```java +private ArrayList ret = new ArrayList<>(); + +public ArrayList Permutation(String str) { + if (str.length() == 0) return ret; + char[] chars = str.toCharArray(); + Arrays.sort(chars); + backtracking(chars, new boolean[chars.length], new StringBuffer()); + return ret; +} + +private void backtracking(char[] chars, boolean[] hasUsed, StringBuffer s) { + if (s.length() == chars.length) { + ret.add(s.toString()); + return; + } + for (int i = 0; i < chars.length; i++) { + if (hasUsed[i]) continue; + if (i != 0 && chars[i] == chars[i - 1] && !hasUsed[i - 1]) continue; // 保证不重复 + hasUsed[i] = true; + s.append(chars[i]); + backtracking(chars, hasUsed, s); + s.deleteCharAt(s.length() - 1); + hasUsed[i] = false; + } +} +``` + +# 39. 数组中出现次数超过一半的数字 + +## 解题思路 + +多数投票问题,可以利用 Boyer-Moore Majority Vote Algorithm 来解决这个问题,使得时间复杂度为 O(n)。 + +使用 cnt 来统计一个元素出现的次数,当遍历到的元素和统计元素不相等时,令 cnt--。如果前面查找了 i 个元素,且 cnt == 0 ,说明前 i 个元素没有 majority,或者有 majority,但是出现的次数少于 i / 2 ,因为如果多于 i / 2 的话 cnt 就一定不会为 0 。此时剩下的 n - i 个元素中,majority 的数目依然多于 (n - i) / 2,因此继续查找就能找出 majority。 + +```java +public int MoreThanHalfNum_Solution(int[] nums) { + int majority = nums[0]; + for (int i = 1, cnt = 1; i < nums.length; i++) { + cnt = nums[i] == majority ? cnt + 1 : cnt - 1; + if (cnt == 0) { + majority = nums[i]; + cnt = 1; + } + } + int cnt = 0; + for (int val : nums) if (val == majority) cnt++; + return cnt > nums.length / 2 ? majority : 0; +} +``` + +# 40. 最小的 K 个数 + +## 解题思路 + +### 快速选择 + +- 复杂度:O(N) + O(1) +- 只有当允许修改数组元素时才可以使用 + +快速排序的 partition() 方法,会返回一个整数 j 使得 a[l..j-1] 小于等于 a[j],且 a[j+1..h] 大于等于 a[j],此时 a[j] 就是数组的第 j 大元素。可以利用这个特性找出数组的第 K 个元素,这种找第 K 个元素的算法称为快速选择算法。 + +找到第 K 个元素之后,就可以再遍历一次数组,所有小于等于该元素的数组元素都是最小的 K 个数。 + +```java +public ArrayList GetLeastNumbers_Solution(int[] nums, int k) { + if (k > nums.length || k <= 0) return new ArrayList<>(); + int kthSmallest = findKthSmallest(nums, k - 1); + ArrayList ret = new ArrayList<>(); + for (int val : nums) { + if (val <= kthSmallest && ret.size() < k) ret.add(val); + } + return ret; +} + +public int findKthSmallest(int[] nums, int k) { + int l = 0; + int h = nums.length - 1; + while (l < h) { + int j = partition(nums, l, h); + if (j < k) { + l = j + 1; + } else if (j > k) { + h = j - 1; + } else { + break; + } + } + return nums[k]; +} + +private int partition(int[] nums, int l, int h) { + int i = l; + int j = h + 1; + while (true) { + while (i < h && nums[++i] < nums[l]) ; + while (j > l && nums[l] < nums[--j]) ; + if (i >= j) { + break; + } + swap(nums, i, j); + } + swap(nums, l, j); + return j; +} + +private void swap(int[] nums, int i, int j) { + int t = nums[i]; + nums[i] = nums[j]; + nums[j] = t; +} +``` + +### 大小为 K 的最小堆 + +- 复杂度:O(NlogK) + O(K) +- 特别适合处理海量数据 + +应该使用大顶堆来维护最小堆,而不能直接创建一个小顶堆并设置一个大小,企图让小顶堆中的元素都是最小元素。 + +维护一个大小为 K 的最小堆过程如下:在添加一个元素之后,如果大顶堆的大小大于 K,那么需要将大顶堆的堆顶元素去除。 + +```java +public ArrayList GetLeastNumbers_Solution(int[] nums, int k) { + if (k > nums.length || k <= 0) return new ArrayList<>(); + PriorityQueue maxHeap = new PriorityQueue<>((o1, o2) -> o2 - o1); + for (int num : nums) { + maxHeap.add(num); + if (maxHeap.size() > k) { + maxHeap.poll(); + } + } + ArrayList ret = new ArrayList<>(maxHeap); + return ret; +} +``` + +# 41.1 数据流中的中位数 + +## 题目描述 + +如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。 + +## 解题思路 + +```java +public class Solution { + // 大顶堆,存储左半边元素 + private PriorityQueue left = new PriorityQueue<>((o1, o2) -> o2 - o1); + // 小顶堆,存储右半边元素,并且右半边元素都大于左半边 + private PriorityQueue right = new PriorityQueue<>(); + // 当前数据流读入的元素个数 + private int N = 0; + + public void Insert(Integer val) { + // 插入要保证两个堆存于平衡状态 + if (N % 2 == 0) { + // N 为偶数的情况下插入到右半边。 + // 因为右半边元素都要大于左半边,但是新插入的元素不一定比左半边元素来的大, + // 因此需要先将元素插入左半边,然后利用左半边为大顶堆的特点,取出堆顶元素即为最大元素,此时插入右半边 + left.add(val); + right.add(left.poll()); + } else { + right.add(val); + left.add(right.poll()); + } + N++; + } + + public Double GetMedian() { + if (N % 2 == 0) { + return (left.peek() + right.peek()) / 2.0; + } else { + return (double) right.peek(); + } + } +} +``` + +# 41.2 字符流中第一个不重复的字符 + +## 题目描述 + +请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 "go" 时,第一个只出现一次的字符是 "g"。当从该字符流中读出前六个字符“google" 时,第一个只出现一次的字符是 "l"。 + +## 解题思路 + +```java +public class Solution { + private int[] cnts = new int[256]; + private Queue queue = new LinkedList<>(); + + public void Insert(char ch) { + cnts[ch]++; + queue.add(ch); + while (!queue.isEmpty() && cnts[queue.peek()] > 1) { + queue.poll(); + } + } + + public char FirstAppearingOnce() { + if (queue.isEmpty()) return '#'; + return queue.peek(); + } +} +``` + +# 42. 连续子数组的最大和 + +## 题目描述 + +{6,-3,-2,7,-15,1,2,2},连续子数组的最大和为 8(从第 0 个开始,到第 3 个为止)。 + +## 解题思路 + +```java +public int FindGreatestSumOfSubArray(int[] nums) { + if (nums.length == 0) return 0; + int ret = Integer.MIN_VALUE; + int sum = 0; + for (int val : nums) { + if (sum <= 0) sum = val; + else sum += val; + ret = Math.max(ret, sum); + } + return ret; +} +``` + +# 43. 从 1 到 n 整数中 1 出现的次数 + +## 解题思路 + +> [Leetcode : 233. Number of Digit One](https://leetcode.com/problems/number-of-digit-one/discuss/64381/4+-lines-O(log-n)-C++JavaPython) + +```java +public int NumberOf1Between1AndN_Solution(int n) { + int cnt = 0; + for (int m = 1; m <= n; m *= 10) { + int a = n / m, b = n % m; + cnt += (a + 8) / 10 * m + (a % 10 == 1 ? b + 1 : 0); + } + return cnt; +} +``` + +# 44. 数字序列中的某一位数字 + +## 题目描述 + +数字以 0123456789101112131415... 的格式序列化到一个字符串中,求这个字符串的第 index 位。 + +## 解题思路 + +```java +public int digitAtIndex(int index) { + if (index < 0) return -1; + int digit = 1; + while (true) { + int amount = getAmountOfDigit(digit); + int totalAmount = amount * digit; + if (index < totalAmount) { + return digitAtIndex(index, digit); + } + index -= totalAmount; + digit++; + } +} + +/** + * digit 位数的数字组成的字符串长度 + * 例如 digit = 2,return 90 + */ +private int getAmountOfDigit(int digit) { + if (digit == 1) return 10; + return (int) Math.pow(10, digit - 1) * 9; +} + +/** + * 在 digit 位数组成的字符串中,第 index 为的数 + */ +private int digitAtIndex(int index, int digit) { + int number = beginNumber(digit) + index / digit; + int remain = index % digit; + return (number + "").charAt(remain) - '0'; +} + +/** + * digit 位数的起始数字 + * 例如 digit = 2 return 10 + */ +private int beginNumber(int digit) { + if (digit == 1) return 0; + return (int) Math.pow(10, digit - 1); +} +``` + +# 45. 把数组排成最小的数 + +## 题目描述 + +输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组 {3,32,321},则打印出这三个数字能排成的最小数字为 321323。 + +## 解题思路 + +可以看成是一个排序问题,在比较两个字符串 S1 和 S2 的大小时,应该比较的是 S1+S2 和 S2+S1 的大小,如果 S1+S2 < S2+S1,那么应该把 S1 排在前面,否则应该把 S2 排在前面。 + +```java +public String PrintMinNumber(int[] numbers) { + int n = numbers.length; + String[] nums = new String[n]; + for (int i = 0; i < n; i++) nums[i] = numbers[i] + ""; + Arrays.sort(nums, (s1, s2) -> (s1 + s2).compareTo(s2 + s1)); + String ret = ""; + for (String str : nums) ret += str; + return ret; +} +``` + +# 46. 把数字翻译成字符串 + +## 题目描述 + +给定一个数字,按照如下规则翻译成字符串:0 翻译成“a”,1 翻译成“b”... 25 翻译成“z”。一个数字有多种翻译可能,例如 12258 一共有 5 种,分别是 bccfi,bwfi,bczi,mcfi,mzi。实现一个函数,用来计算一个数字有多少种不同的翻译方法。 + +## 解题思路 + +```java +public int getTranslationCount(String number) { + int n = number.length(); + int[] counts = new int[n + 1]; + counts[n - 1] = counts[n] = 1; + for (int i = n - 2; i >= 0; i--) { + counts[i] = counts[i + 1]; + int converted = Integer.valueOf(number.substring(i, i + 2)); + if (converted >= 10 && converted <= 25) { + counts[i] += counts[i + 2]; + } + } + return counts[0]; +} +``` + +# 47. 礼物的最大价值 + +## 题目描述 + +在一个 m\*n 的棋盘的每一个格都放有一个礼物,每个礼物都有一定价值(大于 0)。从左上角开始拿礼物,每次向右或向下移动一格,直到右下角结束。给定一个棋盘,求拿到礼物的最大价值。例如,对于如下棋盘 + +``` +1 10 3 8 +12 2 9 6 +5 7 4 11 +3 7 16 5 +``` + +礼物的最大价值为 1+12+5+7+7+16+5=53。 + +## 解题思路 + +应该用动态规划求解,而不是深度优先搜索,深度优先搜索过于复杂,不是最优解。 + +```java +public int getMaxValue(int[][] values) { + if (values == null || values.length == 0 || values[0].length == 0) return 0; + int m = values.length; + int n = values[0].length; + int[] dp = new int[n]; + for (int i = 0; i < m; i++) { + dp[0] += values[i][0]; + for (int j = 1; j < n; j++) { + dp[j] = Math.max(dp[j], dp[j - 1]) + values[i][j]; + } + } + return dp[n - 1]; +} +``` + +# 48. 最长不含重复字符的子字符串 + +## 题目描述 + +输入一个字符串(只包含 a\~z 的字符),求其最长不含重复字符的子字符串的长度。例如对于 arabcacfr,最长不含重复字符的子字符串为 acfr,长度为 4。 + +## 解题思路 + +```java +public int longestSubStringWithoutDuplication(String str) { + int curLen = 0; + int maxLen = 0; + int[] indexs = new int[26]; + for (int i = 0; i < str.length(); i++) { + int c = str.charAt(i) - 'a'; + int preIndex = indexs[c]; + if (preIndex == -1 || i - preIndex > curLen) curLen++; + else { + maxLen = Math.max(maxLen, curLen); + curLen = i - preIndex; + } + indexs[c] = i; + } + maxLen = Math.max(maxLen, curLen); + return maxLen; +} +``` + +# 49. 丑数 + +## 题目描述 + +把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。例如 6、8 都是丑数,但 14 不是,因为它包含因子 7。 习惯上我们把 1 当做是第一个丑数。求按从小到大的顺序的第 N 个丑数。 + +## 解题思路 + +```java +public int GetUglyNumber_Solution(int N) { + if (N <= 6) return N; + int i2 = 0, i3 = 0, i5 = 0; + int cnt = 1; + int[] dp = new int[N]; + dp[0] = 1; + while (cnt < N) { + int n2 = dp[i2] * 2, n3 = dp[i3] * 3, n5 = dp[i5] * 5; + int min = Math.min(n2, Math.min(n3, n5)); + dp[cnt++] = min; + if (min == n2) i2++; + if (min == n3) i3++; + if (min == n5) i5++; + } + return dp[N - 1]; +} +``` + +# 50. 第一个只出现一次的字符位置 + +## 题目描述 + +在一个字符串 (1<=字符串长度 <=10000,全部由字母组成) 中找到第一个只出现一次的字符,并返回它的位置。 + +## 解题思路 + +```java +public int FirstNotRepeatingChar(String str) { + int[] cnts = new int[256]; + for (int i = 0; i < str.length(); i++) cnts[str.charAt(i)]++; + for (int i = 0; i < str.length(); i++) if (cnts[str.charAt(i)] == 1) return i; + return -1; +} +``` + +# 51. 数组中的逆序对 + +## 题目描述 + +在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数 P。 + +## 解题思路 + +```java +private long cnt = 0; +private int[] tmp; // 在这里创建辅助数组,而不是在 merge() 递归函数中创建 + +public int InversePairs(int[] nums) { + tmp = new int[nums.length]; + mergeSortUp2Down(nums, 0, nums.length - 1); + return (int) (cnt % 1000000007); +} + +private void mergeSortUp2Down(int[] nums, int first, int last) { + if (last - first < 1) return; + int mid = first + (last - first) / 2; + mergeSortUp2Down(nums, first, mid); + mergeSortUp2Down(nums, mid + 1, last); + merge(nums, first, mid, last); +} + +private void merge(int[] nums, int first, int mid, int last) { + int i = first, j = mid + 1, k = first; + while (i <= mid || j <= last) { + if (i > mid) tmp[k] = nums[j++]; + else if (j > last) tmp[k] = nums[i++]; + else if (nums[i] < nums[j]) tmp[k] = nums[i++]; + else { + tmp[k] = nums[j++]; + this.cnt += mid - i + 1; // a[i] > a[j],说明 a[i...mid] 都大于 a[j] + } + k++; + } + for (k = first; k <= last; k++) { + nums[k] = tmp[k]; + } +} +``` + +# 52. 两个链表的第一个公共结点 + +## 题目描述 + +```html +A: a1 → a2 + ↘ + c1 → c2 → c3 + ↗ +B: b1 → b2 → b3 +``` + +## 解题思路 + +设 A 的长度为 a + c,B 的长度为 b + c,其中 c 为尾部公共部分长度,可知 a + c + b = b + c + a。 + +当访问 A 链表的指针访问到链表尾部时,令它从链表 B 的头部开始访问链表 B;同样地,当访问 B 链表的指针访问到链表尾部时,令它从链表 A 的头部开始访问链表 A。这样就能控制访问 A 和 B 两个链表的指针能同时访问到交点。 + +```java +public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { + ListNode l1 = pHead1, l2 = pHead2; + while (l1 != l2) { + l1 = (l1 == null) ? pHead2 : l1.next; + l2 = (l2 == null) ? pHead1 : l2.next; + } + return l1; +} +``` + +# 53 数字在排序数组中出现的次数 + +## 题目描述 + +```html +Input: +1, 2, 3, 3, 3, 3, 4, 6 +3 +Output: +4 +``` + +## 解题思路 + +可以用二分查找找出数字在数组的最左端和最右端。 + +```java +public int GetNumberOfK(int[] nums, int K) { + int first = getFirstK(nums, K); + int last = getLastK(nums, K); + return first == -1 || last == -1 ? 0 : last - first + 1; +} + +private int getFirstK(int[] nums, int K) { + int l = 0, h = nums.length - 1; + while (l <= h) { + int m = l + (h - l) / 2; + if (nums[m] >= K) h = m - 1; + else l = m + 1; + } + if (l > nums.length - 1 || nums[l] != K) return -1; + return l; +} + +private int getLastK(int[] nums, int K) { + int l = 0, h = nums.length - 1; + while (l <= h) { + int m = l + (h - l) / 2; + if (nums[m] > K) h = m - 1; + else l = m + 1; + } + if (h < 0 || nums[h] != K) return -1; + return h; +} +``` + +# 54. 二叉搜索树的第 k 个结点 + +## 解题思路 + +利用二叉搜索数中序遍历有序的特点。 + +```java +private TreeNode ret; +private int cnt = 0; + +public TreeNode KthNode(TreeNode pRoot, int k) { + inOrder(pRoot, k); + return ret; +} + +private void inOrder(TreeNode root, int k) { + if (root == null) return; + if (cnt > k) return; + inOrder(root.left, k); + cnt++; + if (cnt == k) ret = root; + inOrder(root.right, k); +} +``` + +# 55 二叉树的深度 + +```java +public int TreeDepth(TreeNode root) { + if (root == null) return 0; + return 1 + Math.max(TreeDepth(root.left), TreeDepth(root.right)); +} +``` + +# 56. 数组中只出现一次的数字 + +## 题目描述 + +一个整型数组里除了两个数字之外,其他的数字都出现了两次,找出这两个数。 + +## 解题思路 + +两个不相等的元素在位级表示上必定会有一位存在不同。 + +将数组的所有元素异或得到的结果为不存在重复的两个元素异或的结果。 + +diff &= -diff 得到出 diff 最右侧不为 0 的位,也就是不存在重复的两个元素在位级表示上最右侧不同的那一位,利用这一位就可以将两个元素区分开来。 + +```java +public void FindNumsAppearOnce(int[] array, int num1[], int num2[]) { + int diff = 0; + for (int num : array) diff ^= num; + // 得到最右一位 + diff &= -diff; + for (int num : array) { + if ((num & diff) == 0) num1[0] ^= num; + else num2[0] ^= num; + } +} +``` + +# 57.1 和为 S 的两个数字 + +## 题目描述 + +输入一个递增排序的数组和一个数字 S,在数组中查找两个数,是的他们的和正好是 S,如果有多对数字的和等于 S,输出两个数的乘积最小的。 + +## 解题思路 + +使用双指针,一个指针指向元素较小的值,一个指针指向元素较大的值。指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。 + +如果两个指针指向元素的和 sum == target,那么得到要求的结果;如果 sum > target,移动较大的元素,使 sum 变小一些;如果 sum < target,移动较小的元素,使 sum 变大一些。 + +```java +public ArrayList FindNumbersWithSum(int[] array, int sum) { + int i = 0, j = array.length - 1; + while (i < j) { + int cur = array[i] + array[j]; + if (cur == sum) return new ArrayList(Arrays.asList(array[i], array[j])); + else if (cur < sum) i++; + else j--; + } + return new ArrayList(); +} +``` + +# 57.2 和为 S 的连续正数序列 + +## 题目描述 + +和为 100 的连续序列有 18, 19, 20, 21, 22。 + +## 解题思路 + +```java +public ArrayList> FindContinuousSequence(int sum) { + ArrayList> ret = new ArrayList<>(); + int start = 1, end = 2; + int mid = sum / 2; + int curSum = 3; + while (start <= mid && end < sum) { + if (curSum > sum) { + curSum -= start; + start++; + } else if (curSum < sum) { + end++; + curSum += end; + } else { + ArrayList list = new ArrayList<>(); + for (int i = start; i <= end; i++) { + list.add(i); + } + ret.add(list); + curSum -= start; + start++; + end++; + curSum += end; + } + } + return ret; +} +``` + +# 58.1 翻转单词顺序列 + +## 题目描述 + +输入:"I am a student." + +输出:"student. a am I" + +## 解题思路 + +题目应该有一个隐含条件,就是不能用额外的空间。虽然 Java 的题目输入参数为 String 类型,需要先创建一个字符数组使得空间复杂度为 O(n),但是正确的参数类型应该和原书一样,为字符数组,并且只能使用该字符数组的空间。任何使用了额外空间的解法在面试时都会大打折扣,包括递归解法。正确的解法应该是和书上一样,先旋转每个单词,再旋转整个字符串。 + +```java +public String ReverseSentence(String str) { + if (str.length() == 0) return str; + int n = str.length(); + char[] chars = str.toCharArray(); + int start = 0, end = 0; + while (end <= n) { + if (end == n || chars[end] == ' ') { + reverse(chars, start, end - 1); + start = end + 1; + } + end++; + } + reverse(chars, 0, n - 1); + return new String(chars); +} + +private void reverse(char[] c, int start, int end) { + while (start < end) { + char t = c[start]; + c[start] = c[end]; + c[end] = t; + start++; + end--; + } +} +``` + +# 58.2 左旋转字符串 + +## 题目描述 + +对于一个给定的字符序列 S,请你把其循环左移 K 位后的序列输出。例如,字符序列 S=”abcXYZdef”, 要求输出循环左移 3 位后的结果,即“XYZdefabc”。 + +## 解题思路 + +```java +public String LeftRotateString(String str, int k) { + if (str.length() == 0) return ""; + char[] c = str.toCharArray(); + reverse(c, 0, k - 1); + reverse(c, k, c.length - 1); + reverse(c, 0, c.length - 1); + return new String(c); +} + +private void reverse(char[] c, int i, int j) { + while (i < j) { + char t = c[i]; + c[i] = c[j]; + c[j] = t; + i++; + j--; + } +} +``` + +# 59. 滑动窗口的最大值 + +## 题目描述 + +给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组 {2, 3, 4, 2, 6, 2, 5, 1} 及滑动窗口的大小 3,那么一共存在 6 个滑动窗口,他们的最大值分别为 {4, 4, 6, 6, 6, 5}。 + +## 解题思路 + +```java +public ArrayList maxInWindows(int[] num, int size) { + ArrayList ret = new ArrayList<>(); + if (size > num.length || size < 1) return ret; + // 构建最大堆,即堆顶元素是堆的最大值。 + PriorityQueue heap = new PriorityQueue((o1, o2) -> o2 - o1); + for (int i = 0; i < size; i++) heap.add(num[i]); + ret.add(heap.peek()); + for (int i = 1; i + size - 1 < num.length; i++) { + heap.remove(num[i - 1]); + heap.add(num[i + size - 1]); + ret.add(heap.peek()); + } + return ret; +} +``` + +# 60. n 个骰子的点数 + +## 题目描述 + +把 n 个骰子仍在地上,求点数和为 s 的概率。 + +## 解题思路 + +### 动态规划解法 + +空间复杂度:O(n2) + +```java +private static int face = 6; + +public double countProbability(int n, int s) { + if (n < 1 || s < n) return 0.0; + int pointNum = face * n; + int[][] dp = new int[n][pointNum]; + for (int i = 0; i < face; i++) { + dp[0][i] = 1; + } + for (int i = 1; i < n; i++) { + for (int j = i; j < pointNum; j++) { // 使用 i 个骰子最小点数为 i + for (int k = 1; k <= face; k++) { + if (j - k >= 0) { + dp[i][j] += dp[i - 1][j - k]; + } + } + } + } + int totalNum = (int) Math.pow(6, n); + return (double) dp[n - 1][s - 1] / totalNum; +} +``` + +### 动态规划解法 + 旋转数组 + +空间复杂度:O(n) + +```java +private static int face = 6; + +public double countProbability(int n, int s) { + if (n < 1 || s < n) return 0.0; + int pointNum = face * n; + int[][] dp = new int[2][pointNum]; + for (int i = 0; i < face; i++) { + dp[0][i] = 1; + } + int flag = 1; + for (int i = 1; i < n; i++) { + for (int j = i; j < pointNum; j++) { // 使用 i 个骰子最小点数为 i + for (int k = 1; k <= face; k++) { + if (j - k >= 0) { + dp[flag][j] += dp[1 - flag][j - k]; + } + } + } + flag = 1 - flag; + } + int totalNum = (int) Math.pow(6, n); + return (double) dp[n - 1][s - 1] / totalNum; +} +``` + +# 61. 扑克牌顺子 + +## 题目描述 + +五张牌,其中大小鬼为癞子,牌面大小为 0。判断是否能组成顺子。 + +## 解题思路 + +```java +public boolean isContinuous(int [] numbers) { + if(numbers.length < 5) return false; + Arrays.sort(numbers); + int cnt = 0; + for(int num : numbers) if(num == 0) cnt++; + for(int i = cnt; i < numbers.length - 1; i++) { + if(numbers[i + 1] == numbers[i]) return false; + int interval = numbers[i + 1] - numbers[i] - 1; + if(interval > cnt) return false; + cnt -= interval; + } + return true; +} +``` + +# 62. 圆圈中最后剩下的数 + +## 题目描述 + +让小朋友们围成一个大圈。然后 , 他随机指定一个数 m, 让编号为 0 的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌 , 然后可以在礼品箱中任意的挑选礼物 , 并且不再回到圈中 , 从他的下一个小朋友开始 , 继续 0...m-1 报数 .... 这样下去 .... 直到剩下最后一个小朋友 , 可以不用表演。 + +## 解题思路 + +约瑟夫环 + +```java +public int LastRemaining_Solution(int n, int m) { + if (n == 0) return -1; + if (n == 1) return 0; + return (LastRemaining_Solution(n - 1, m) + m) % n; +} +``` + +# 63. 股票的最大利润 + +## 题目描述 + +可以有一次买入和一次卖出,买入必须在前。求最大收益。 + +## 解题思路 + +```java +public int maxProfit(int[] prices) { + int n = prices.length; + if(n == 0) return 0; + int soFarMin = prices[0]; + int max = 0; + for(int i = 1; i < n; i++) { + if(soFarMin > prices[i]) soFarMin = prices[i]; + else max = Math.max(max, prices[i] - soFarMin); + } + return max; +} +``` + +# 64. 求 1+2+3+...+n + +## 题目描述 + +求 1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case 等关键字及条件判断语句(A?B:C)。 + +## 解题思路 + +```java +public int Sum_Solution(int n) { + int sum = n; + boolean b = (n > 0) && ((sum += Sum_Solution(n - 1)) > 0); + return sum; +} +``` + +# 65. 不用加减乘除做加法 + +a ^ b 表示没有考虑进位的情况下两数的和,(a & b) << 1 就是进位。递归会终止的原因是 (a & b) << 1 最右边会多一个 0,那么继续递归,进位最右边的 0 会慢慢增多,最后进位会变为 0,递归终止。 + +```java +public int Add(int num1, int num2) { + if(num2 == 0) return num1; + return Add(num1 ^ num2, (num1 & num2) << 1); +} +``` + +# 66. 构建乘积数组 + +## 题目描述 + +给定一个数组 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]。不能使用除法。 + +## 解题思路 + +```java +public int[] multiply(int[] A) { + int n = A.length; + int[] B = new int[n]; + for (int i = 0, product = 1; i < n; product *= A[i], i++) { + B[i] = product; + } + for (int i = n - 1, product = 1; i >= 0; product *= A[i], i--) { + B[i] *= product; + } + return B; +} +``` + +# 67. 把字符串转换成整数 + +```java +public int StrToInt(String str) { + if (str.length() == 0) return 0; + char[] chars = str.toCharArray(); + boolean isNegative = chars[0] == '-'; + int ret = 0; + for (int i = 0; i < chars.length; i++) { + if (i == 0 && (chars[i] == '+' || chars[i] == '-')) continue; + if (chars[i] < '0' || chars[i] > '9') return 0; + ret = ret * 10 + (chars[i] - '0'); + } + return isNegative ? -ret : ret; +} +``` + +# 68. 树中两个节点的最低公共祖先 + +树是二叉查找树的最低公共祖先问题: + +```java +public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { + if(root.val > p.val && root.val > q.val) return lowestCommonAncestor(root.left, p, q); + if(root.val < p.val && root.val < q.val) return lowestCommonAncestor(root.right, p, q); + return root; +} +``` diff --git a/notes/数据库系统原理.md b/notes/数据库系统原理.md new file mode 100644 index 00000000..d7246a79 --- /dev/null +++ b/notes/数据库系统原理.md @@ -0,0 +1,611 @@ + +* [一、事务](#一事务) + * [概念](#概念) + * [四大特性](#四大特性) +* [二、并发一致性问题](#二并发一致性问题) + * [问题](#问题) + * [解决方法](#解决方法) +* [三、封锁](#三封锁) + * [封锁粒度](#封锁粒度) + * [封锁类型](#封锁类型) + * [封锁协议](#封锁协议) +* [四、隔离级别](#四隔离级别) +* [五、多版本并发控制](#五多版本并发控制) + * [版本号](#版本号) + * [Undo 日志](#undo-日志) + * [实现过程](#实现过程) + * [快照读与当前读](#快照读与当前读) +* [六、Next-Key Locks](#六next-key-locks) + * [Record Locks](#record-locks) + * [Grap Locks](#grap-locks) + * [Next-Key Locks](#next-key-locks) +* [七、关系数据库设计理论](#七关系数据库设计理论) + * [函数依赖](#函数依赖) + * [异常](#异常) + * [范式](#范式) +* [八、数据库系统概述](#八数据库系统概述) + * [基本术语](#基本术语) + * [数据库的三层模式和两层映像](#数据库的三层模式和两层映像) +* [九、关系数据库建模](#九关系数据库建模) + * [ER 图](#er-图) + * [十、约束](#十约束) +* [参考资料](#参考资料) + + + +# 一、事务 + +## 概念 + +

    + +事务指的是满足 ACID 特性的一系列操作。在数据库中,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 + +## 四大特性 + +

    + +### 1. 原子性(Atomicity) + +事务被视为不可分割的最小单元,要么全部提交成功,要么全部失败回滚。 + +### 2. 一致性(Consistency) + +事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。 + +### 3. 隔离性(Isolation) + +一个事务所做的修改在最终提交以前,对其它事务是不可见的。 + +### 4. 持久性(Durability) + +一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。可以通过数据库备份和恢复来保证持久性。 + +# 二、并发一致性问题 + +在并发环境下,一个事务如果受到另一个事务的影响,那么事务操作就无法满足一致性条件。 + +## 问题 + +### 1. 丢失修改 + +T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 + +### 2. 读脏数据 + +T1 修改一个数据,T2 随后读取这个数据。如果 T1 撤销了这次修改,那么 T2 读取的数据是脏数据。 + +

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

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

    + +## 解决方法 + +产生并发不一致性问题主要原因是破坏了事务的隔离性,解决方法是通过并发控制来保证隔离性。 + +在没有并发的情况下,事务以串行的方式执行,互不干扰,因此可以保证隔离性。在并发的情况下,如果能通过并发控制,让事务的执行结果和某一个串行执行的结果相同,就认为事务的执行结果满足隔离性要求,也就是说是正确的。把这种事务执行方式称为 **可串行化调度** 。 + +**并发控制可以通过封锁来实现,但是封锁操作都要用户自己控制,相当复杂。数据库管理系统提供了事务的隔离级别,让用户以一种更轻松的方式处理并发一致性问题。** + +# 三、封锁 + +## 封锁粒度 + +

    + +应该尽量只锁定需要修改的那部分数据,而不是所有的资源。锁定的数据量越少,发生锁争用的可能就越小,系统的并发程度就越高。 + +但是加锁需要消耗资源,锁的各种操作,包括获取锁,检查锁是否已经解除、释放锁,都会增加系统开销。因此封锁粒度越小,系统开销就越大。需要在锁开销以及数据安全性之间做一个权衡。 + +MySQL 中提供了两种封锁粒度:行级锁以及表级锁。 + +## 封锁类型 + +### 1. 排它锁与共享锁 + +- 排它锁(Exclusive),简写为 X 锁,又称写锁。 +- 共享锁(Shared),简写为 S 锁,又称读锁。 + +有以下两个规定: + +1. 一个事务对数据对象 A 加了 X 锁,就可以对 A 进行读取和更新。加锁期间其它事务不能对 A 加任何锁。 +2. 一个事务对数据对象 A 加了 S 锁,可以对 A 进行读取操作,但是不能进行更新操作。加锁期间其它事务能对 A 加 S 锁,但是不能加 X 锁。 + +锁的兼容关系如下: + +| - | X | S | +| :--: | :--: | :--: | +|X|NO|No| +|S|No|Yes| + +### 2. 意向锁 + +意向锁(Intention Locks)可以支持多粒度封锁。它本身是一个表锁,通过在原来的 X/S 锁之上引入了 IX/IS,用来表示一个事务想要在某个数据行上加 X 锁或 S 锁。 + +有以下两个规定: + +1. 一个事务在获得某个数据行对象的 S 锁之前,必须先获得 IS 锁或者更强的锁; +2. 一个事务在获得某个数据行对象的 X 锁之前,必须先获得 IX 锁。 + +各种锁的兼容关系如下: + +| - | X | IX | S | IS | +| :--: | :--: | :--: | :--: | :--: | +|X |No |No |No | No| +|IX |No |YES|No | Yes| +|S |No |No |Yes| Yes| +|IS |No |Yes|Yes| Yes| + +## 封锁协议 + +### 1. 三级封锁协议 + +**一级封锁协议** + +事务 T 要修改数据 A 时必须加 X 锁,直到事务结束才释放锁。 + +可以解决丢失修改问题,因为不能同时有两个事务对同一个数据进行修改,那么一个事务的修改就不会被覆盖。 + +| T1 | T1 | +| :--: | :--: | +| 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)| + +**二级封锁协议** + +在一级的基础上,要求读取数据 A 时必须加 S 锁,读取完马上释放 S 锁。 + +可以解决读脏数据问题,因为如果一个事务在对数据 A 进行修改,根据 1 级封锁协议,会加 X 锁,那么就不能再加 S 锁了,也就是不会读入数据。 + +| T1 | T1 | +| :--: | :--: | +| lock-x(A) | | +| read A=20 | | +| write A=19 | | +| | lock-s(A) | +| | wait | +| rollback | | +| A=20 | | +| unlock-x(A) | | +| | obtain | +| | read A=20 | +| | commit | +| | unlock-s(A)| + +**三级封锁协议** + +在二级的基础上,要求读取数据 A 时必须加 S 锁,直到事务结束了才能释放 S 锁。 + +可以解决不可重复读的问题,因为读 A 时,其它事务不能对 A 加 X 锁,从而避免了在读的期间数据发生改变。 + +| T1 | T1 | +| :--: | :--: | +| 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. 两段锁协议 + +加锁和解锁分为两个阶段进行,事务 T 对数据 A 进行读或者写操作之前,必须先获得对 A 的封锁,并且在释放一个封锁之前,T 不能再获得任何的其它锁。 + +事务遵循两段锁协议是保证并发操作可串行化调度的充分条件。例如以下操作满足两段锁协议,它是可串行化调度。 + +```html +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)... +``` + +# 四、隔离级别 + + **1. 未提交读(READ UNCOMMITTED)**
    + +事务中的修改,即使没有提交,对其它事务也是可见的。 + + **2. 提交读(READ COMMITTED)**
    + +一个事务只能读取已经提交的事务所做的修改。换句话说,一个事务所做的修改在提交之前对其它事务是不可见的。 + + **3. 可重复读(REPEATABLE READ)**
    + +保证在同一个事务中多次读取同样数据的结果是一样的。 + + **4. 可串行化(SERIALIXABLE)**
    + +强制事务串行执行。 + + **四个隔离级别的对比**
    + +| 隔离级别 | 脏读 | 不可重复读 | 幻影读 | +| :---: | :---: | :---:| :---: | +| 未提交读 | YES | YES | YES | +| 提交读 | NO | YES | YES | +| 可重复读 | NO | NO | YES | +| 可串行化 | NO | NO | NO | + +# 五、多版本并发控制 + +(Multi-Version Concurrency Control, MVCC)是 MySQL 的 InnoDB 存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别。而未提交读隔离级别总是读取最新的数据行,无需使用 MVCC;可串行化隔离级别需要对所有读取的行都加锁,单纯使用 MVCC 无法实现。 + +## 版本号 + +- 系统版本号:是一个递增的数字,每开始一个新的事务,系统版本号就会自动递增。 +- 事务版本号:事务开始时的系统版本号。 + +InooDB 的 MVCC 在每行记录后面都保存着两个隐藏的列,用来存储两个版本号: + +- 创建版本号:指示创建一个数据行的快照时的系统版本号; +- 删除版本号:如果该快照的删除版本号大于当前事务版本号表示该快照有效,否则表示该快照已经被删除了。 + +## Undo 日志 + +InnoDB 的 MVCC 使用到的快照存储在 Undo 日志中,该日志通过回滚指针把一个数据行(Record)的所有快照连接起来。 + +

    + +## 实现过程 + +以下过程针对可重复读隔离级别。 + +### 1. SELECT + +该操作必须保证多个事务读取到同一个数据行的快照,这个快照是最近的一个有效快照。但是也有例外,如果有一个事务正在修改该数据行,那么它可以读取事务本身所做的修改,而不用和其它事务的读取结果一致。 + +当开始新一个事务时,该事务的版本号肯定会大于所有数据行快照的创建版本号,理解这一点很关键。 + +把没对一个数据行做修改的事务称为 T1,T1 所要读取的数据行快照的创建版本号必须小于当前事务的版本号,因为如果大于或者等于当前事务的版本号,那么表示该数据行快照是其它事务的最新修改,因此不能去读取它。 + +除了上面的要求,T1 所要读取的数据行快照的删除版本号必须小于当前事务版本号,因为如果大于或者等于当前事务版本号,那么表示该数据行快照是已经被删除的,不应该去读取它。 + +### 2. INSERT + +将系统版本号作为数据行快照的创建版本号。 + +### 3. DELETE + +将系统版本号作为数据行快照的删除版本号。 + +### 4. UPDATE + +将系统版本号作为更新后的数据行快照的创建版本号,同时将系统版本号作为作为更新前的数据行快照的删除版本号。可以理解为新执行 DELETE 后执行 INSERT。 + +## 快照读与当前读 + +快照读读指的是读取快照中的数据,而当前读指的是读取最新的数据。 + +当前读: + +```sql +select * from table ....; +``` + +快照读: + +```sql +select * from table where ? lock in share mode; +select * from table where ? for update; +insert; +update ; +delete; +``` + +引入当前读的目的主要是为了免去加锁操作带来的性能开销,但是快照读需要加锁。 + +# 六、Next-Key Locks + +Next-Key Locks 也是 MySQL 的 InnoDB 存储引擎的一种实现。MVCC 不能解决幻读的问题,Next-Key Locks 就是为了解决这个问题而存在的。在可重复读隔离级别下,MVCC + Next-Key Locks,就可以防止幻读的出现。 + +## Record Locks + +锁定的对象时索引,而不是数据。如果表没有设置索引,InnoDB 会自动在主键上创建隐藏的聚集索引,因此 Record Lock 依然可以使用。 + +## Grap Locks + +锁定一个范围内的索引,例如当一个事务执行以下语句,其它事务就不能在 t.c1 中插入 15。 + +```sql +SELECT c1 FROM t WHERE c1 BETWEEN 10 and 20 FOR UPDATE; +``` + +## Next-Key Locks + +它是 Record Locks 和 Gap Locks 的结合。在 user 中有以下记录: + +```sql +| id | last_name | first_name | age | +|------|-------------|--------------|-------| +| 4 | stark | tony | 21 | +| 1 | tom | hiddleston | 30 | +| 3 | morgan | freeman | 40 | +| 5 | jeff | dean | 50 | +| 2 | donald | trump | 80 | ++------|-------------|--------------|-------+ +``` + +那么就需要锁定以下范围: + +```sql +(-∞, 21] +(21, 30] +(30, 40] +(40, 50] +(50, 80] +(80, ∞) +``` + +# 七、关系数据库设计理论 + +## 函数依赖 + +记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A。 + +如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合决定了关系的其它所有属性并且是最小的,那么该集合就称为键码。 + +对于 W->A,如果能找到 W 的真子集 W',使得 W'-> A,那么 W->A 就是部分函数依赖,否则就是完全函数依赖; + +## 异常 + +以下的学生课程关系的函数依赖为 Sno, Cname -> Sname, Sdept, Mname, Grade,键码为 {Sno, Cname}。也就是说,确定学生和课程之后,就能确定其它信息。 + +| Sno | Sname | Sdept | Mname | Cname | Grade | +| :---: | :---: | :---: | :---: | :---: |:---:| +| 1 | 学生-1 | 学院-1 | 院长-1 | 课程-1 | 90 | +| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-2 | 80 | +| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-1 | 100 | + +不符合范式的关系,会产生很多异常,主要有以下四种异常: + +1. 冗余数据,例如学生-2 出现了两次。 +2. 修改异常,修改了一个记录中的信息,但是另一个记录中相同的信息却没有被修改。 +3. 删除异常,删除一个信息,那么也会丢失其它信息。例如如果删除了课程-1,需要删除第二行和第三行,那么学生-1 的信息就会丢失。 +4. 插入异常,例如想要插入一个学生的信息,如果这个学生还没选课,那么就无法插入。 + +## 范式 + +范式理论是为了解决以上提到四种异常。高级别范式的依赖于低级别的范式。 + +

    + +### 1. 第一范式 (1NF) + +属性不可分; + +### 2. 第二范式 (2NF) + +每个非主属性完全函数依赖于键码。 + +可以通过分解来满足。 + + **分解前**
    + +| Sno | Sname | Sdept | Mname | Cname | Grade | +| :---: | :---: | :---: | :---: | :---: |:---:| +| 1 | 学生-1 | 学院-1 | 院长-1 | 课程-1 | 90 | +| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-2 | 80 | +| 2 | 学生-2 | 学院-2 | 院长-2 | 课程-1 | 100 | + +以上学生课程关系中,{Sno, Cname} 为键码,有如下函数依赖: + +- Sno, Cname -> Sname, Sdept, Mname +- Son -> Sname, Sdept +- Sdept -> Mname +- Sno -> Manme +- Sno, Cname-> Grade + +Grade 完全函数依赖于键码,它没有任何冗余数据,每个学生的每门课都有特定的成绩。 + +Sname, Sdept 和 Manme 都函数依赖于 Sno,而部分依赖于键码。当一个学生选修了多门课时,这些数据就会出现多次,造成大量冗余数据。 + + **分解后**
    + +关系-1 + +| Sno | Sname | Sdept | Mname | +| :---: | :---: | :---: | :---: | +| 1 | 学生-1 | 学院-1 | 院长-1 | +| 2 | 学生-2 | 学院-2 | 院长-2 | + +有以下函数依赖: + +- Sno -> Sname, Sdept, Mname +- Sdept -> Mname + +关系-2 + +| Sno | Cname | Grade | +| :---: | :---: |:---:| +| 1 | 课程-1 | 90 | +| 2 | 课程-2 | 80 | +| 2 | 课程-1 | 100 | + +有以下函数依赖: + +- Sno, Cname -> Grade + +### 3. 第三范式 (3NF) + +非主属性不传递依赖于键码。 + +上面的关系-1 中存在以下传递依赖:Sno -> Sdept -> Mname,可以进行以下分解: + +关系-11 + +| Sno | Sname | Sdept | +| :---: | :---: | :---: | +| 1 | 学生-1 | 学院-1 | +| 2 | 学生-2 | 学院-2 | + +关系-12 + +| Sdept | Mname | +| :---: | :---: | +| 学院-1 | 院长-1 | +| 学院-2 | 院长-2 | + +### 4. BC 范式(BCNF) + +所有属性不传递依赖于键码。 + +关系 STC(Sname, Tname, Cname, Grade) 的四个属性分别为学生姓名、教师姓名、课程名和成绩,它的键码为 (Sname, Cname, Tname),有以下函数依赖: + +- Sname, Cname -> Tname +- Sname, Cname -> Grade +- Sname, Tname -> Cname +- Sname, Tname -> Grade +- Tname -> Cname + +存在着以下函数传递依赖: + +- Sname -> Tname -> Cname + +可以分解成 SC(Sname, Cname, Grade) 和 ST(Sname, Tname),对于 ST,属性之间是多对多关系,无函数依赖。 + +# 八、数据库系统概述 + +## 基本术语 + +### 1. 数据模型 + +由数据结构、数据操作和完整性三个要素组成。 + +### 2. 数据库系统 + +数据库系统包含所有与数据库相关的内容,包括数据库、数据库管理系统、应用程序以及数据库管理员和用户,还包括相关的硬件和软件。 + +## 数据库的三层模式和两层映像 + +- 外模式:局部逻辑结构 +- 模式:全局逻辑结构 +- 内模式:物理结构 + +

    + +### 1. 外模式 + +又称用户模式,是用户和数据库系统的接口,特定的用户只能访问数据库系统提供给他的外模式中的数据。例如不同的用户创建了不同数据库,那么一个用户只能访问他有权限访问的数据库。 + +一个数据库可以有多个外模式,一个用户只能有一个外模式,但是一个外模式可以给多个用户使用。 + +### 2. 模式 + +可以分为概念模式和逻辑模式,概念模式可以用概念-关系来描述;逻辑模式使用特定的数据模式(比如关系模型)来描述数据的逻辑结构,这种逻辑结构包括数据的组成、数据项的名称、类型、取值范围。不仅如此,逻辑模式还要描述数据之间的关系、数据的完整性与安全性要求。 + +### 3. 内模式 + +又称为存储模式,描述记录的存储方式,例如索引的组织方式、数据是否压缩以及是否加密等等。 + +### 4. 外模式/模式映像 + +把外模式的局部逻辑结构和模式的全局逻辑结构联系起来。该映像可以保证数据和应用程序的逻辑独立性。 + +### 5. 模式/内模式映像 + +把模式的全局逻辑结构和内模式的物理结构联系起来,该映像可以保证数据和应用程序的物理独立性。 + +# 九、关系数据库建模 + +## ER 图 + +Entity-Relationship,有三个组成部分:实体、属性、联系。 + +### 1. 实体的三种联系 + +联系包含一对一,一对多,多对多三种。 + +如果 A 到 B 是一对多关系,那么画个带箭头的线段指向 B;如果是一对一,画两个带箭头的线段;如果是多对多,画两个不带箭头的线段。下图的 Course 和 Student 是一对多的关系。 + +

    + +### 2. 表示出现多次的关系 + +一个实体在联系出现几次,就要用几条线连接。下图表示一个课程的先修关系,先修关系出现两个 Course 实体,第一个是先修课程,后一个是后修课程,因此需要用两条线来表示这种关系。 + +

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

    + +一般只使用二元联系,可以把多元关系转换为二元关系。 + +

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

    + +## 十、约束 + +### 1. 键码 + +用于唯一表示一个实体。 + +键码可以由多个属性构成,每个构成键码的属性称为码。 + +### 2. 单值约束 + +某个属性的值是唯一的。 + +### 3. 引用完整性约束 + +一个实体的属性引用的值在另一个实体的某个属性中存在。 + +### 4. 域约束 + +某个属性的值在特定范围之内。 + +### 5. 一般约束 + +比如大小约束,数量约束。 + +# 参考资料 + +- 史嘉权. 数据库系统概论[M]. 清华大学出版社有限公司, 2006. +- 施瓦茨. 高性能MYSQL(第3版)[M]. 电子工业出版社, 2013. +- [The InnoDB Storage Engine](https://dev.mysql.com/doc/refman/5.7/en/innodb-storage-engine.html) +- [Transaction isolation levels](https://www.slideshare.net/ErnestoHernandezRodriguez/transaction-isolation-levels) +- [Concurrency Control](http://scanftree.com/dbms/2-phase-locking-protocol) +- [The Nightmare of Locking, Blocking and Isolation Levels!](https://www.slideshare.net/brshristov/the-nightmare-of-locking-blocking-and-isolation-levels-46391666) +- [三级模式与两级映像](http://blog.csdn.net/d2457638978/article/details/48783923) +- [Database Normalization and Normal Forms with an Example](https://aksakalli.github.io/2012/03/12/database-normalization-and-normal-forms-with-an-example.html) +- [The basics of the InnoDB undo logging and history system](https://blog.jcole.us/2014/04/16/the-basics-of-the-innodb-undo-logging-and-history-system/) +- [MySQL locking for the busy web developer](https://www.brightbox.com/blog/2013/10/31/on-mysql-locks/) +- [浅入浅出 MySQL 和 InnoDB](https://draveness.me/mysql-innodb) +- [fd945daf-4a6c-4f20-b9c2-5390f5955ce5.jpg](https://tech.meituan.com/innodb-lock.html) diff --git a/notes/正则表达式.md b/notes/正则表达式.md new file mode 100644 index 00000000..74c20087 --- /dev/null +++ b/notes/正则表达式.md @@ -0,0 +1,400 @@ + +* [一、概述](#一概述) +* [二、匹配单个字符](#二匹配单个字符) +* [三、匹配一组字符](#三匹配一组字符) +* [四、使用元字符](#四使用元字符) +* [五、重复匹配](#五重复匹配) +* [六、位置匹配](#六位置匹配) +* [七、使用子表达式](#七使用子表达式) +* [八、回溯引用](#八回溯引用) +* [九、前后查找](#九前后查找) +* [十、嵌入条件](#十嵌入条件) + + + +# 一、概述 + +正则表达式用于文本内容的查找和替换。 + +正则表达式内置于其它语言或者软件产品中,它本身不是一种语言或者软件。 + +一个问题往往可以用多种正则表达式方案来解决。 + +[正则表达式在线工具](http://tool.chinaz.com/regex) + +# 二、匹配单个字符 + +正则表达式一般是区分大小写的,但是也有些实现是不区分。 + +**.** 可以用来匹配任何的单个字符,但是在绝大多数实现里面,不能匹配换行符; + +**\\** 是元字符,表示它有特殊的含义,而不是字符本身的含义。如果需要匹配 . ,那么要用 \ 进行转义,即在 . 前面加上 \ 。 + +**正则表达式** + +``` +nam. +``` + +**匹配结果** + +My **name** is Zheng. + +# 三、匹配一组字符 + +**[ ]** 定义一个字符集合; + +0-9、a-z 定义了一个字符区间,区间使用 ASCII 码来确定。字符区间只能用在 [ ] 之间,因此 **-** 元字符只有在 [ ] 之间才是元字符,在 [ ] 之外就是一个普通字符; + +**^** 是取非操作,必须在 [ ] 字符集合中使用; + +**应用** + +匹配以 abc 为开头,并且最后一个字母不为数字的字符串: + +**正则表达式** + +``` +abc[^0-9] +``` + +**匹配结果** + +1. **abcd** +2. abc1 +3. abc2 + +# 四、使用元字符 + +## 匹配空白字符 + +| 元字符 | 说明 | +| ------------ | ------------ | +| [\b] | 回退(删除)一个字符 | +| \f | 换页符 | +| \n | 换行符 | +| \r | 回车符 | +| \t | 制表符 | +| \v | 垂直制表符 | + +\r\n 是 Windows 中的文本行结束标签,在 Unix/Linux 则是 \n ;\r\n\r\n 可以匹配 Windows 下的空白行,因为它将匹配两个连续的行尾标签,而这正是两条记录之间的空白行; + +. 是元字符,前提是没有对它们进行转义; f 和 n 也是元字符,但是前提是对他们进行了转义。 + +## 匹配特定的字符类别 + +### 1. 数字元字符 + +| 元字符 | 说明 | +| ------------ | ------------ | +| \d | 数字字符,等价于 [0-9] | +| \D | 非数字字符,等价于 [^0-9] | + +### 2. 字母数字元字符 + +| 元字符 | 说明 | +| ------------ | ------------ | +| \w | 大小写字母,下划线和数字,等价于 [a-zA-Z0-9\_] | +| \W | 对 \w 取非 | + +### 3. 空白字符元字符 + +| 元字符 | 说明 | +| ------------ | ------------ | +| \s | 任何一个空白字符,等价于 [\f\n\r\t\v] | +| \S | 对 \s 取非 | + +\x 匹配十六进制字符,\0 匹配八进制,例如 \x0A 对应 ASCII 字符 10 ,等价于 \n,也就是它会匹配 \n 。 + +## 使用 POSIX 字符类 + +| 字符类 | 说明 | +| --- | --- | +| [:alnum:] | 字母数字字符 | +| [:alpha:] | 字母字符 | +| [:cntrl:] | 控制字符 | +| [:digit:] | 数字字符 | +| [:graph:] | 非空白字符 ( 非空格、控制字符等 ) | +| [:lower:] | 小写字母 | +| [:print:] | 与 [:graph:] 相似,但是包含空格字符 | +| [:punct:] | 标点字符 | +| [:space:] | 所有的空白字符 ( 换行符、空格、制表符 ) | +| [:upper:] | 大写字母 | +| [:xdigit:] | 允许十六进制的数字 (0-9a-fA-F) | + +并不是所有正则表达式实现都支持 POSIX 字符类,也不一定使用它。 + +使用时需要用两对方括号,例如 [[:alpha:]]。 + +# 五、重复匹配 + +**\+** 匹配 1 个或者多个字符, **\*** 匹配 0 个或者多个,**?** 匹配 0 个或者 1 个。 + +**应用** + +匹配邮箱地址。 + +**正则表达式** + +``` +[\w.]+@\w+.\w+ +``` + +[\w.] 匹配的是字母数字或者 . ,在其后面加上 + ,表示匹配多次。在字符集合 [ ] 里,. 不是元字符; + +**匹配结果** + +**abc.def@qq.com** + +为了可读性,常常把转义的字符放到字符集合 [ ] 中,但是含义是相同的。 + +``` +\w+@\w+.\w+ +[\w]+@[\w]+.[\w]+ +``` + +**{n}** 匹配 n 个字符,**{m, n}** 匹配 m\~n 个字符,**{m,}** 至少匹配 m 个字符; + +\* 和 + 都是贪婪型元字符,会匹配最多的内容,在元字符后面加 ? 可以转换为懒惰型元字符,例如 \*?、+? 和 {m, n}? 。 + +**正则表达式** + +``` +a.+c +``` + +由于 + 是贪婪型的,因此 .+ 会匹配更可能多的内容,所以会把整个 abcabcabc 文本都匹配,而不是只匹配前面的 abc 文本。用懒惰型可以实现匹配前面的。 + +**匹配结果** + +**abcabcabc** + +# 六、位置匹配 + +## 单词边界 + +**\b** 可以匹配一个单词的边界,边界是指位于 \w 和 \W 之间的位置;**\B** 匹配一个不是单词边界的位置。 + +\b 只匹配位置,不匹配字符,因此 \babc\b 匹配出来的结果为 3 个字符。 + +## 字符串边界 + +**^** 匹配整个字符串的开头,**$** 匹配结尾。 + +^ 元字符在字符集合中用作求非,在字符集合外用作匹配字符串的开头。 + +使用 (?m) 来打开分行匹配模式,在该模式下,换行被当做字符串的边界。 + +**应用** + +匹配代码中以 // 开始的注释行 + +**正则表达式** + +``` +(?m)^\s*//.*$ +``` + +如果没用 (?m),则只会匹配 // 注释 1 以及之后的所有内容,因为 * 是贪婪型的。用了分行匹配模式之后,换行符被当成是字符串分隔符,因此能正确匹配出两个注释内容。 + +**匹配结果** + +1. public void fun() { +2.      **// 注释 1** +3.      int a = 1; +4.      int b = 2; +5.      **// 注释 2** +6.      int c = a + b; +7. } + +# 七、使用子表达式 + +使用 **( )** 定义一个子表达式。子表达式的内容可以当成一个独立元素,即可以将它看成一个字符,并且使用 * 等元字符。 + +子表达式可以嵌套,但是嵌套层次过深会变得很难理解。 + +**正则表达式** + +``` +(ab) {2,} +``` + +**匹配结果** + +**ababab** + +**|** 是或元字符,它把左边和右边所有的部分都看成单独的两个部分,两个部分只要有一个匹配就行。 + +``` +(19|20)\d{2} +``` + +**匹配结果** + +1. **1900** +2. **2010** +3. 1020 + +**应用** + +匹配 IP 地址。IP 地址中每部分都是 0-255 的数字,用正则表达式匹配时以下情况是合法的: + +1. 一位或者两位的数字 +2. 1 开头的三位数 +3. 2 开头,第 2 位是 0-4 的三位数 +4. 25 开头,第 3 位是 0-5 的三位数 + +**正则表达式** + +``` +(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.) {3}(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))) +``` + +**匹配结果** + +1. **192.168.0.1** +2. 555.555.555.555 + +# 八、回溯引用 + +回溯引用使用 **\n** 来引用某个子表达式,其中 n 代表的是子表达式的序号,从 1 开始。它和子表达式匹配的内容一致,比如子表达式匹配到 abc ,那么回溯引用部分也需要匹配 abc 。 + +**应用** + +匹配 HTML 中合法的标题元素。 + +**正则表达式** + +\1 将回溯引用子表达式 (h[1-6]) 匹配的内容,也就是说必须和子表达式匹配的内容一致。 + +``` +<(h[1-6])>\w*? +``` + +**匹配结果** + +1. **<h1>x</h1>** +2. **<h2>x</h2>** +3. <h3>x</h1> + +## 替换 + +需要用到两个正则表达式。 + +**应用** + +修改电话号码格式。 + +**文本** + +313-555-1234 + +**查找正则表达式** + +``` +(\d{3})(-)(\d{3})(-)(\d{4}) +``` + +**替换正则表达式** + +在第一个子表达式查找的结果加上 () ,然后加一个空格,在第三个和第五个字表达式查找的结果中间加上 - 进行分隔。 + +``` +($1) $3-$5 +``` + +**结果** + +(313) 555-1234 + +## 大小写转换 + +| 元字符 | 说明 | +| ---| ---| +| \l | 把下个字符转换为小写 | +| \u| 把下个字符转换为大写 | +| \L | 把\L 和\E 之间的字符全部转换为小写 | +| \U | 把\U 和\E 之间的字符全部转换为大写 | +| \E | 结束\L 或者\U | + +**应用** + +把文本的第二个和第三个字符转换为大写。 + +**文本** + +abcd + +**查找** + +``` +(\w)(\w{2})(\w) +``` + +**替换** + +``` +$1\U$2\E$3 +``` + +**结果** + +aBCd + +# 九、前后查找 + +前后查找规定了匹配的内容首尾应该匹配的内容,但是又不包含首尾匹配的内容。向前查找用 **?=** 来定义,它规定了尾部匹配的内容,这个匹配的内容在 ?= 之后定义。所谓向前查找,就是规定了一个匹配的内容,然后以这个内容为尾部向前面查找需要匹配的内容。向后匹配用 ?<= 定义。 + +**应用** + +查找出邮件地址 @ 字符前面的部分。 + +**正则表达式** + +``` +\w+(?=@) +``` + +**结果** + +**abc** @qq.com + +对向前和向后查找取非,只要把 = 替换成 ! 即可,比如 (?=) 替换成 (?!) 。取非操作使得匹配那些首尾不符合要求的内容。 + +# 十、嵌入条件 + +## 回溯引用条件 + +条件判断为某个子表达式是否匹配,如果匹配则需要继续匹配条件表达式后面的内容。 + +**正则表达式** + +子表达式 (\\() 匹配一个左括号,其后的 ? 表示匹配 0 个或者 1 个。 ?(1) 为条件,当子表达式 1 匹配时条件成立,需要执行 \) 匹配,也就是匹配右括号。 + +``` +(\()?abc(?(1)\)) +``` + +**结果** + +1. **(abc)** +2. **abc** +3. (abc + +## 前后查找条件 + +条件为定义的首尾是否匹配,如果匹配,则继续执行后面的匹配。注意,首尾不包含在匹配的内容中。 + +**正则表达式** + + ?(?=-) 为前向查找条件,只有在以 - 为前向查找的结尾能匹配 \d{5} ,才继续匹配 -\d{4} 。 + +``` +\d{5}(?(?=-)-\d{4}) +``` + +**结果** + +1. **11111** +2. 22222- +3. **33333-4444** diff --git a/notes/算法.md b/notes/算法.md new file mode 100644 index 00000000..9377a9ab --- /dev/null +++ b/notes/算法.md @@ -0,0 +1,1621 @@ + +* [一、算法分析](#一算法分析) + * [函数转换](#函数转换) + * [数学模型](#数学模型) + * [ThreeSum](#threesum) + * [倍率实验](#倍率实验) + * [注意事项](#注意事项) +* [二、栈和队列](#二栈和队列) + * [栈](#栈) + * [队列](#队列) +* [三、union-find](#三union-find) + * [quick-find](#quick-find) + * [quick-union](#quick-union) + * [加权 quick-union](#加权-quick-union) + * [路径压缩的加权 quick-union](#路径压缩的加权-quick-union) + * [各种 union-find 算法的比较](#各种-union-find-算法的比较) +* [四、排序](#四排序) + * [选择排序](#选择排序) + * [插入排序](#插入排序) + * [希尔排序](#希尔排序) + * [归并排序](#归并排序) + * [快速排序](#快速排序) + * [优先队列](#优先队列) + * [应用](#应用) +* [五、查找](#五查找) + * [符号表](#符号表) + * [二叉查找树](#二叉查找树) + * [2-3 查找树](#2-3-查找树) + * [红黑二叉查找树](#红黑二叉查找树) + * [散列表](#散列表) + * [应用](#应用) + + + +# 一、算法分析 + +## 函数转换 + +指数函数可以转换为线性函数,从而在函数图像上显示的更直观。例如 + +

    + +可以在其两端同时取对数,得到: + +

    + +

    + +## 数学模型 + +### 1. 近似 + +使用 \~f(N) 来表示所有随着 N 的增大除以 f(N) 的结果趋近于 1 的函数,例如 N3/6-N2/2+N/3 \~ N3/6。 + +

    + +### 2. 增长数量级 + +增长数量级将算法与它的实现隔离开来,一个算法的增长数量级为 N3 与它是否用 Java 实现,是否运行于特定计算机上无关。 + +

    + +### 3. 内循环 + +执行最频繁的指令决定了程序执行的总时间,把这些指令称为程序的内循环。 + +### 4. 成本模型 + +使用成本模型来评估算法,例如数组的访问次数就是一种成本模型。 + +## ThreeSum + +ThreeSum 用于统计一个数组中三元组的和为 0 的数量。 + +```java +public class ThreeSum { + public static int count(int[] a) { + int N = a.length; + int cnt = 0; + for (int i = 0; i < N; i++) { + for (int j = i + 1; j < N; j++) { + for (int k = j + 1; k < N; k++) { + if (a[i] + a[j] + a[k] == 0) { + cnt++; + } + } + } + } + return cnt; + } +} +``` + +该算法的内循环为`if (a[i] + a[j] + a[k] == 0)`语句,总共执行的次数为 N(N-1)(N-2) = N3/6 - N2/2 + N/3,因此它的近似执行次数为 \~N3/6,增长数量级为 N3。 + + **改进**
    + +通过将数组先排序,对两个元素求和,并用二分查找方法查找是否存在该和的相反数,如果存在,就说明存在三元组的和为 0。 + +该方法可以将 ThreeSum 算法增长数量级降低为 N2logN。 + +```java +public class ThreeSumFast { + public static int count(int[] a) { + Arrays.sort(a); + int N = a.length; + int cnt = 0; + for (int i = 0; i < N; i++) { + for (int j = i + 1; j < N; j++) { + // rank() 方法返回元素在数组中的下标,如果元素不存在,这里会返回 -1。 + // 应该注意这里的下标必须大于 j,否则会重复统计。 + if (BinarySearch.rank(-a[i] - a[j], a) > j) { + cnt++; + } + } + } + return cnt; + } +} +``` + +## 倍率实验 + +如果 T(N) \~ aNblogN,那么 T(2N)/T(N) \~ 2b。 + +例如对于暴力方法的 ThreeSum 算法,近似时间为 \~N3/6。进行如下实验:多次运行该算法,每次取的 N 值为前一次的两倍,统计每次执行的时间,并统计本次运行时间与前一次运行时间的比值,得到如下结果: + +

    + +可以看到,T(2N)/T(N) \~ 23,因此可以确定 T(N) \~ aN2logN。 + +## 注意事项 + +### 1. 大常数 + +在求近似时,如果低级项的常数系数很大,那么近似的结果就是错误的。 + +### 2. 缓存 + +计算机系统会使用缓存技术来组织内存,访问数组相邻的元素会比访问不相邻的元素快很多。 + +### 3. 对最坏情况下的性能的保证 + +在核反应堆、心脏起搏器或者刹车控制器中的软件,最坏情况下的性能是十分重要的。 + +### 4. 随机化算法 + +通过打乱输入,去除算法对输入的依赖。 + +### 5. 均摊分析 + +将所有操作的总成本除于操作总数来将成本均摊。例如对一个空栈进行 N 次连续的 push() 调用需要访问数组的元素为 N+4+8+16+...+2N=5N-4(N 是向数组写入元素,其余的都是调整数组大小时进行复制需要的访问数组操作),均摊后每次操作访问数组的平均次数为常数。 + +# 二、栈和队列 + +## 栈 + +first-in-last-out(FILO) + +

    + + **1. 数组实现**
    + +```java +public class ResizeArrayStack implements Iterable { + private Item[] a = (Item[]) new Object[1]; + private int N = 0; + + public void push(Item item) { + if (N >= a.length) { + resize(2 * a.length); + } + a[N++] = item; + } + + public Item pop() { + Item item = a[--N]; + if (N <= a.length / 4) { + resize(a.length / 2); + } + return item; + } + + // 调整数组大小,使得栈具有伸缩性 + private void resize(int size) { + Item[] tmp = (Item[]) new Object[size]; + for (int i = 0; i < N; i++) { + tmp[i] = a[i]; + } + a = tmp; + } + + public boolean isEmpty() { + return N == 0; + } + + public int size() { + return N; + } + + @Override + public Iterator iterator() { + // 需要返回逆序遍历的迭代器 + return new ReverseArrayIterator(); + } + + private class ReverseArrayIterator implements Iterator { + private int i = N; + + @Override + public boolean hasNext() { + return i > 0; + } + + @Override + public Item next() { + return a[--i]; + } + } +} +``` + +上面实现使用了泛型,Java 不能直接创建泛型数组,只能使用转型来创建。 + +```java +Item[] arr = (Item[]) new Object[N]; +``` + + **2. 链表实现**
    + +需要使用链表的头插法来实现,因为头插法中最后压入栈的元素在链表的开头,它的 next 指针指向前一个压入栈的元素,在弹出元素使就可以通过 next 指针遍历到前一个压入栈的元素从而让这个元素称为新的栈顶元素。 + +```java +public class Stack { + + private Node top = null; + private int N = 0; + + private class Node { + Item item; + Node next; + } + + public boolean isEmpty() { + return N == 0; + } + + public int size() { + return N; + } + + public void push(Item item) { + Node newTop = new Node(); + newTop.item = item; + newTop.next = top; + top = newTop; + N++; + } + + public Item pop() { + Item item = top.item; + top = top.next; + N--; + return item; + } +} +``` +## 队列 + +first-in-first-out(FIFO) + +

    + +下面是队列的链表实现,需要维护 first 和 last 节点指针,分别指向队首和队尾。 + +这里需要考虑 first 和 last 指针哪个作为链表的开头。因为出队列操作需要让队首元素的下一个元素成为队首,所以需要容易获取下一个元素,而链表的头部节点的 next 指针指向下一个元素,因此可以让 first 指针链表的开头。 + +```java +public class Queue { + private Node first; + private Node last; + int N = 0; + private class Node{ + Item item; + Node next; + } + + public boolean isEmpty(){ + return N == 0; + } + + public int size(){ + return N; + } + + // 入队列 + public void enqueue(Item item){ + Node newNode = new Node(); + newNode.item = item; + newNode.next = null; + if(isEmpty()){ + last = newNode; + first = newNode; + } else{ + last.next = newNode; + last = newNode; + } + N++; + } + + // 出队列 + public Item dequeue(){ + Node node = first; + first = first.next; + N--; + return node.item; + } +} +``` + +# 三、union-find + + **概览**
    + +用于解决动态连通性问题,能动态连接两个点,并且判断两个点是否连通。 + +

    + + **API**
    + +

    + + **基本数据结构**
    + +```java +public class UF { + // 使用 id 数组来保存点的连通信息 + private int[] id; + + public UF(int N) { + id = new int[N]; + for (int i = 0; i < N; i++) { + id[i] = i; + } + } + + public boolean connected(int p, int q) { + return find(p) == find(q); + } +} +``` + +## quick-find + +保证在同一连通分量的所有节点的 id 值相等。 + +这种方法可以快速取得一个节点的 id 值,并且判断两个节点是否连通。但是 union 的操作代价却很高,需要将其中一个连通分量中的所有节点 id 值都修改为另一个节点的 id 值。 + +```java + public int find(int p) { + return id[p]; + } + public void union(int p, int q) { + int pID = find(p); + int qID = find(q); + + if (pID == qID) return; + for (int i = 0; i < id.length; i++) { + if (id[i] == pID) id[i] = qID; + } + } +``` + +## quick-union + +在 union 时只将节点的 id 值指向另一个节点 id 值,不直接用 id 来存储所属的连通分量。这样就构成一个倒置的树形结构,应该注意的是根节点需要指向自己。查找一个节点所属的连通分量时,要一直向上查找直到根节点,并使用根节点的 id 值作为本连通分量的 id 值。 + +

    + +```java + public int find(int p) { + while (p != id[p]) p = id[p]; + return p; + } + + public void union(int p, int q) { + int pRoot = find(p); + int qRoot = find(q); + if (pRoot == qRoot) return; + id[pRoot] = qRoot; + } +``` + +这种方法可以快速进行 union 操作,但是 find 操作和树高成正比,最坏的情况下树的高度为触点的数目。 + +

    + +## 加权 quick-union + +为了解决 quick-union 的树通常会很高的问题,加权 quick-union 在 union 操作时会让较小的树连接较大的树上面。 + +理论研究证明,加权 quick-union 算法构造的树深度最多不超过 logN。 + +

    + +```java +public class WeightedQuickUnionUF { + private int[] id; + // 保存节点的数量信息 + private int[] sz; + + public WeightedQuickUnionUF(int N) { + id = new int[N]; + sz = new int[N]; + for (int i = 0; i < N; i++) { + id[i] = i; + sz[i] = 1; + } + } + + public boolean connected(int p, int q) { + return find(p) == find(q); + } + + public int find(int p) { + while (p != id[p]) p = id[p]; + return p; + } + + public void union(int p, int q) { + int i = find(p); + int j = find(q); + if (i == j) return; + if (sz[i] < sz[j]) { + id[i] = j; + sz[j] += sz[i]; + } else { + id[j] = i; + sz[i] += sz[j]; + } + } +} +``` + +## 路径压缩的加权 quick-union + +在检查节点的同时将它们直接链接到根节点,只需要在 find 中添加一个循环即可。 + +## 各种 union-find 算法的比较 + +

    + +# 四、排序 + + **约定**
    + +待排序的元素需要实现 Java 的 Comparable 接口,该接口有 compareTo() 方法,可以用它来判断两个元素的大小关系。 + +研究排序算法的成本模型时,计算的是比较和交换的次数。 + +使用辅助函数 less() 和 exch() 来进行比较和交换的操作,使得代码的可读性和可移植性更好。 + +```java +private boolean less(Comparable v, Comparable w){ + return v.compareTo(w) < 0; +} + +private void exch(Comparable[] a, int i, int j){ + Comparable t = a[i]; + a[i] = a[j]; + a[j] = t; +} +``` + +## 选择排序 + +找到数组中的最小元素,将它与数组的第一个元素交换位置。再从剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。不断进行这样的操作,直到将整个数组排序。 + +

    + +```java +public class Selection { + public static void sort(Comparable[] a) { + int N = a.length; + for (int i = 0; i < N; i++) { + int min = i; + for (int j = i + 1; j < N; j++) { + if (less(a[j], a[min])) min = j; + } + exch(a, i, min); + } + } +} +``` + +选择排序需要 \~N2/2 次比较和 \~N 次交换,它的运行时间与输入无关,这个特点使得它对一个已经排序的数组也需要这么多的比较和交换操作。 + +## 插入排序 + +插入排序从左到右进行,每次都将当前元素插入到左部已经排序的数组中,使得插入之后左部数组依然有序。 + +

    + +```java +public class Insertion { + public static void sort(Comparable[] a) { + int N = a.length; + for (int i = 1; i < N; i++) { + for (int j = i; j > 0 && less(a[j], a[j - 1]); j--) { + exch(a, j, j - 1); + } + } + } +} +``` + +插入排序的复杂度取决于数组的初始顺序,如果数组已经部分有序了,那么插入排序会很快。平均情况下插入排序需要 \~N2/4 比较以及 \~N2/4 次交换,最坏的情况下需要 \~N2/2 比较以及 \~N2/2 次交换,最坏的情况是数组是逆序的;而最好的情况下需要 N-1 次比较和 0 次交换,最好的情况就是数组已经有序了。 + +插入排序对于部分有序数组和小规模数组特别高效。 + + **选择排序和插入排序的比较**
    + +对于随机排列的无重复主键的数组,插入排序和选择排序的运行时间是平方级别的,两者之比是一个较小的常数。 + +## 希尔排序 + +对于大规模的数组,插入排序很慢,因为它只能交换相邻的元素,如果要把元素从一端移到另一端,就需要很多次操作。 + +希尔排序的出现就是为了改进插入排序的这种局限性,它通过交换不相邻的元素,使得元素更快的移到正确的位置上。 + +希尔排序使用插入排序对间隔 h 的序列进行排序,如果 h 很大,那么元素就能很快的移到很远的地方。通过不断减小 h,最后令 h=1,就可以使得整个数组是有序的。 + +

    + +

    + +```java +public class Shell { + public static void sort(Comparable[] a) { + int N = a.length; + int h = 1; + while (h < N / 3) { + h = 3 * h + 1; // 1, 4, 13, 40, ... + } + while (h >= 1) { + for (int i = h; i < N; i++) { + for (int j = i; j >= h && less(a[j], a[j - h]); j -= h) { + exch(a, j, j - h); + } + } + h = h / 3; + } + } +} +``` + +希尔排序的运行时间达不到平方级别,使用递增序列 1, 4, 13, 40, ... 的希尔排序所需要的比较次数不会超过 N 的若干倍乘于递增序列的长度。后面介绍的高级排序算法只会比希尔排序快两倍左右。 + +## 归并排序 + +归并排序的思想是将数组分成两部分,分别进行排序,然后归并起来。 + +

    + +

    + +### 1. 归并方法 + +归并方法将数组中两个已经排序的部分归并成一个。 + +```java +public class MergeSort { + private static Comparable[] aux; + + private static void merge(Comparable[] a, int lo, int mid, int hi) { + int i = lo, j = mid + 1; + + for (int k = lo; k <= hi; k++) { + aux[k] = a[k]; // 将数据复制到辅助数组 + } + + for (int k = lo; k <= hi; k++) { + if (i > mid) a[k] = aux[j++]; + else if (j > hi) a[k] = aux[i++]; + else if (aux[i].compareTo(a[j]) < 0) a[k] = aux[i++]; // 先进行这一步,保证稳定性 + else a[k] = aux[j++]; + } + } +} +``` + +### 2. 自顶向下归并排序 + +

    + +```java +public static void sort(Comparable[] a) { + aux = new Comparable[a.length]; + sort(a, 0, a.length - 1); +} + +private static void sort(Comparable[] a, int lo, int hi) { + if (hi <= lo) return; + int mid = lo + (hi - lo) / 2; + sort(a, lo, mid); + sort(a, mid + 1, hi); + merge(a, lo, mid, hi); +} +``` + +因为每次都将问题对半分成两个子问题,而这种对半分的算法复杂度一般为 O(NlogN),因此该归并排序方法的时间复杂度也为 O(NlogN)。 + +因为小数组的递归操作会过于频繁,因此可以在数组过小时切换到插入排序来提高性能。 + +### 3. 自底向上归并排序 + +先归并那些微型数组,然后成对归并得到的子数组。 + +

    + +```java +public static void busort(Comparable[] a) { + int N = a.length; + aux = new Comparable[N]; + for (int sz = 1; sz < N; sz += sz) { + for (int lo = 0; lo < N - sz; lo += sz + sz) { + merge(a, lo, lo + sz - 1, Math.min(lo + sz + sz - 1, N - 1)); + } + } +} +``` + +## 快速排序 + +### 1. 基本算法 + +归并排序将数组分为两个子数组分别排序,并将有序的子数组归并使得整个数组排序;快速排序通过一个切分元素将数组分为两个子数组,左子数组小于等于切分元素,右子数组大于等于切分元素,将这两个子数组排序也就将整个数组排序了。 + +

    + +```java +public class QuickSort { + public static void sort(Comparable[] a) { + shuffle(a); + sort(a, 0, a.length - 1); + } + + private static void sort(Comparable[] a, int lo, int hi) { + if (hi <= lo) return; + int j = partition(a, lo, hi); + sort(a, lo, j - 1); + sort(a, j + 1, hi); + } +} +``` + +### 2. 切分 + +取 a[lo] 作为切分元素,然后从数组的左端向右扫描直到找到第一个大于等于它的元素,再从数组的右端向左扫描找到第一个小于等于它的元素,交换这两个元素,并不断进行这个过程,就可以保证左指针 i 的左侧元素都不大于切分元素,右指针 j 的右侧元素都不小于切分元素。当两个指针相遇时,将切分元素 a[lo] 和左子数组最右侧的元素 a[j] 交换然后返回 j 即可。 + +

    + +```java +private static int partition(Comparable[] a, int lo, int hi) { + int i = lo, j = hi + 1; + Comparable v = a[lo]; + while (true) { + while (less(a[++i], v)) if (i == hi) break; + while (less(v, a[--j])) if (j == lo) break; + if (i >= j) break; + exch(a, i, j); + } + exch(a, lo, j); + return j; +} +``` + +### 3. 性能分析 + +快速排序是原地排序,不需要辅助数组,但是递归调用需要辅助栈。 + +快速排序最好的情况下是每次都正好能将数组对半分,这样递归调用次数才是最少的。这种情况下比较次数为 CN=2CN/2+N,复杂度为 O(NlogN)。 + +最坏的情况下,第一次从最小的元素切分,第二次从第二小的元素切分,如此这般。因此最坏的情况下需要比较 N2/2。为了防止数组最开始就是有序的,在进行快速排序时需要随机打乱数组。 + +### 4. 算法改进 + +**(一)切换到插入排序** + +因为快速排序在小数组中也会调用自己,对于小数组,插入排序比快速排序的性能更好,因此在小数组中可以切换到插入排序。 + +**(二)三取样** + +最好的情况下是每次都能取数组的中位数作为切分元素,但是计算中位数的代价很高。人们发现取 3 个元素并将大小居中的元素作为切分元素的效果最好。 + +**(三)三向切分** + +对于有大量重复元素的数组,可以将数组切分为三部分,分别对应小于、等于和大于切分元素。 + +三向切分快速排序对于只有若干不同主键的随机数组可以在线性时间内完成排序。 + +

    + +```java +public class Quick3Way { + public static void sort(Comparable[] a, int lo, int hi) { + if (hi <= lo) return; + int lt = lo, i = lo + 1, gt = hi; + Comparable v = a[lo]; + while (i <= gt) { + int cmp = a[i].compareTo(v); + if (cmp < 0) exch(a, lt++, i++); + else if (cmp > 0) exch(a, i, gt--); + else i++; + } + sort(a, lo, lt - 1); + sort(a, gt + 1, hi); + } +} +``` + +## 优先队列 + +优先队列主要用于处理最大元素。 + +### 1. 堆 + +定义:一颗二叉树的每个节点都大于等于它的两个子节点。 + +堆可以用数组来表示,因为堆是一种完全二叉树,而完全二叉树很容易就存储在数组中。位置 k 的节点的父节点位置为 k/2,而它的两个子节点的位置分别为 2k 和 2k+1。这里我们不使用数组索引为 0 的位置,是为了更清晰地理解节点的关系。 + +

    + +```java +public class MaxPQ { + private Key[] pq; + private int N = 0; + + public MaxPQ(int maxN) { + pq = (Key[]) new Comparable[maxN + 1]; + } + + public boolean isEmpty() { + return N == 0; + } + + public int size() { + return N; + } + + private boolean less(int i, int j) { + return pq[i].compareTo(pq[j]) < 0; + } + + private void exch(int i, int j) { + Key t = pq[i]; + pq[i] = pq[j]; + pq[j] = t; + } +} +``` + +### 2. 上浮和下沉 + +在堆中,当一个节点比父节点大,那么需要交换这个两个节点。交换后还可能比它新的父节点大,因此需要不断地进行比较和交换操作。把这种操作称为上浮。 + +

    + +```java +private void swim(int k) { + while (k > 1 && less(k / 2, k)) { + exch(k / 2, k); + k = k / 2; + } +} +``` + +类似地,当一个节点比子节点来得小,也需要不断的向下比较和交换操作,把这种操作称为下沉。一个节点有两个子节点,应当与两个子节点中最大那么节点进行交换。 + +

    + +```java +private void sink(int k) { + while (2 * k <= N) { + int j = 2 * k; + if (j < N && less(j, j + 1)) j++; + if (!less(k, j)) break; + exch(k, j); + k = j; + } +} +``` + +### 3. 插入元素 + +将新元素放到数组末尾,然后上浮到合适的位置。 + +```java +public void insert(Key v) { + pq[++N] = v; + swim(N); +} +``` + +### 4. 删除最大元素 + +从数组顶端删除最大的元素,并将数组的最后一个元素放到顶端,并让这个元素下沉到合适的位置。 + +```java +public Key delMax() { + Key max = pq[1]; + exch(1, N--); + pq[N + 1] = null; + sink(1); + return max; +} +``` + +### 5. 堆排序 + +由于堆可以很容易得到最大的元素并删除它,不断地进行这种操作可以得到一个递减序列。如果把最大元素和当前堆中数组的最后一个元素交换位置,并且不删除它,那么就可以得到一个从尾到头的递减序列,从正向来看就是一个递增序列。因此很容易使用堆来进行排序,并且堆排序是原地排序,不占用额外空间。 + +堆排序要分两个阶段,第一个阶段是把无序数组建立一个堆;第二个阶段是交换最大元素和当前堆的数组最后一个元素,并且进行下沉操作维持堆的有序状态。 + +无序数组建立堆最直接的方法是从左到右遍历数组,然后进行上浮操作。一个更高效的方法是从右至左进行下沉操作,如果一个节点的两个节点都已经是堆有序,那么进行下沉操作可以使得这个节点为根节点的堆有序。叶子节点不需要进行下沉操作,因此可以忽略叶子节点的元素,因此只需要遍历一半的元素即可。 + +

    + +```java +public static void sort(Comparable[] a){ + int N = a.length; + for(int k = N/2; k >= 1; k--){ + sink(a, k, N); + } + while(N > 1){ + exch(a, 1, N--); + sink(a, 1, N); + } +} +``` + +### 6. 分析 + +一个堆的高度为 logN,因此在堆中插入元素和删除最大元素的复杂度都为 logN。 + +对于堆排序,由于要对 N 个节点进行下沉操作,因此复杂度为 NlogN。 + +堆排序时一种原地排序,没有利用额外的空间。 + +现代操作系统很少使用堆排序,因为它无法利用缓存,也就是数组元素很少和相邻的元素进行比较。 + +## 应用 + +### 1. 排序算法的比较 + +

    + +快速排序时最快的通用排序算法,它的内循环的指令很少,而且它还能利用缓存,因为它总是顺序地访问数据。它的运行时间近似为 \~cNlogN,这里的 c 比其他线性对数级别的排序算法都要小。使用三向切分之后,实际应用中可能出现的某些分布的输入能够达到线性级别,而其它排序算法仍然需要线性对数时间。 + +### 2. Java 的排序算法实现 + +Java 系统库中的主要排序方法为 java.util.Arrays.sort(),对于原始数据类型使用三向切分的快速排序,对于引用类型使用归并排序。 + +### 3. 基于切分的快速选择算法 + +快速排序的 partition() 方法,会返回一个整数 j 使得 a[lo..j-1] 小于等于 a[j],且 a[j+1..hi] 大于等于 a[j],此时 a[j] 就是数组的第 j 大元素。 + +可以利用这个特性找出数组的第 k 个元素。 + +```java +public static Comparable select(Comparable[] a, int k) { + int lo = 0, hi = a.length - 1; + while (hi > lo) { + int j = partion(a, lo, hi); + if (j == k) return a[k]; + else if (j > k) hi = j - 1; + else lo = j + 1; + } + return a[k]; +} +``` + +该算法是线性级别的,因为每次正好将数组二分,那么比较的总次数为 (N+N/2+N/4+..),直到找到第 k 个元素,这个和显然小于 2N。 + +# 五、查找 + +符号表是一种存储键值对的数据结构,支持两种操作:插入一个新的键值对;根据给定键得到值。 + +## 符号表 + +### 1. 无序符号表 + +

    + +### 2. 有序符号表 + +

    + +有序指的是支持 min() max() 等根据键的大小关系来实现的操作。 + +有序符号表的键需要实现 Comparable 接口。 + +### 3. 二分查找实现有序符号表 + +使用一对平行数组,一个存储键一个存储值。其中键的数组为 Comparable 数组,值的数字为 Object 数组。 + +rank() 方法至关重要,当键在表中时,它能够知道该键的位置;当键不在表中时,它也能知道在何处插入新键。 + +复杂度:二分查找最多需要 logN+1 次比较,使用二分查找实现的符号表的查找操作所需要的时间最多是对数级别的。但是插入操作需要移动数组元素,是线性级别的。 + +```java +public class BinarySearchST, Value> { + private Key[] keys; + private Value[] values; + private int N; + + public BinarySearchST(int capacity) { + keys = (Key[]) new Comparable[capacity]; + values = (Value[]) new Object[capacity]; + } + + public int size() { + return N; + } + + public Value get(Key key) { + int i = rank(key); + if (i < N && keys[i].compareTo(key) == 0) { + return values[i]; + } + return null; + } + + public int rank(Key key) { + int lo = 0, hi = N - 1; + while (lo <= hi) { + int mid = lo + (hi - lo) / 2; + int cmp = key.compareTo(keys[mid]); + if (cmp == 0) return mid; + else if (cmp < 0) hi = mid - 1; + else lo = mid + 1; + } + return lo; + } + + public void put(Key key, Value value) { + int i = rank(key); + if (i < N && keys[i].compareTo(key) == 0) { + values[i] = value; + return; + } + for (int j = N; j > i; j--) { + keys[j] = keys[j - 1]; + values[j] = values[j - 1]; + } + keys[i] = key; + values[i] = value; + N++; + } + + public Key ceiling(Key key){ + int i = rank(key); + return keys[i]; + } +} +``` + +## 二叉查找树 + +**二叉树** 定义为一个空链接,或者是一个有左右两个链接的节点,每个链接都指向一颗子二叉树。 + +

    + +**二叉查找树** (BST)是一颗二叉树,并且每个节点的值都大于其左子树中的所有节点的值而小于右子树的所有节点的值。 + +

    + +BST 有一个重要性质,就是它的前序遍历结果递增排序。 + +

    + +基本数据结构: + +```java +public class BST, Value> { + private Node root; + + private class Node { + private Key key; + private Value val; + private Node left, right; + // 以该节点为根的子树中节点总数 + private int N; + + public Node(Key key, Value val, int N) { + this.key = key; + this.val = val; + this.N = N; + } + } + + public int size() { + return size(root); + } + + private int size(Node x) { + if (x == null) return 0; + return x.N; + } +} +``` + +### 1. get() + +- 如果树是空的,则查找未命中; +- 如果被查找的键和根节点的键相等,查找命中; +- 否则递归地在子树中查找:如果被查找的键较小就在左子树中查找,较大就在右子树中查找。 + +BST 的查找操作每次递归都会让区间减少一半,和二分查找类似,因此查找的复杂度为 O(logn)。 + +```java +public Value get(Key key) { + return get(root, key); +} +private Value get(Node x, Key key) { + if (x == null) return null; + int cmp = key.compareTo(x.key); + if (cmp == 0) return x.val; + else if (cmp < 0) return get(x.left, key); + else return get(x.right, key); +} +``` + +### 2. put() + +当插入的键不存在于树中,需要创建一个新节点,并且更新上层节点的链接使得该节点正确链接到树中。 + +

    + +```java +public void put(Key key, Value val) { + root = put(root, key, val); +} +private Node put(Node x, Key key, Value val) { + if (x == null) return new Node(key, val, 1); + int cmp = key.compareTo(x.key); + if (cmp == 0) x.val = val; + else if (cmp < 0) x.left = put(x.left, key, val); + else x.right = put(x.right, key, val); + x.N = size(x.left) + size(x.right) + 1; + return x; +} +``` + +### 3. 分析 + +二叉查找树的算法运行时间取决于树的形状,而树的形状又取决于键被插入的先后顺序。最好的情况下树是完全平衡的,每条空链接和根节点的距离都为 logN。在最坏的情况下,树的高度为 N。 + +

    + +### 4. floor() + +floor(key):小于等于键的最大键 + +- 如果键小于根节点的键,那么 floor(key) 一定在左子树中; +- 如果键大于根节点的键,需要先判断右子树中是否存在 floor(key),如果存在就找到,否则根节点就是 floor(key)。 + +

    + +```java +public Key floor(Key key) { + Node x = floor(root, key); + if (x == null) return null; + return x.key; +} +private Node floor(Node x, Key key) { + if (x == null) return null; + int cmp = key.compareTo(x.key); + if (cmp == 0) return x; + if (cmp < 0) return floor(x.left, key); + Node t = floor(x.right, key); + if (t != null) { + return t; + } else { + return x; + } +} +``` + +### 5. rank() + +rank(key) 返回 key 的排名。 + +- 如果键和根节点的键相等,返回左子树的节点数; +- 如果小于,递归计算在左子树中的排名; +- 如果大于,递归计算在右子树中的排名,并加上左子树的节点数,再加上 1(根节点)。 + +```java +public int rank(Key key) { + return rank(key, root); +} +private int rank(Key key, Node x) { + if (x == null) return 0; + int cmp = key.compareTo(x.key); + if (cmp == 0) return size(x.left); + else if (cmp < 0) return rank(key, x.left); + else return 1 + size(x.left) + rank(key, x.right); +} +``` + +### 6. min() + +```java +private Node min(Node x) { + if (x.left == null) return x; + return min(x.left); +} +``` + +### 7. deleteMin() + +令指向最小节点的链接指向最小节点的右子树。 + +

    + +```java +public void deleteMin() { + root = deleteMin(root); +} +public Node deleteMin(Node x) { + if (x.left == null) return x.right; + x.left = deleteMin(x.left); + x.N = size(x.left) + size(x.right) + 1; + return x; +} +``` + +### 8. delete() + +- 如果待删除的节点只有一个子树,那么只需要让指向待删除节点的链接指向唯一的子树即可; +- 否则,让右子树的最小节点替换该节点。 + +

    + +```java +public void delete(Key key) { + root = delete(root, key); +} +private Node delete(Node x, Key key) { + if (x == null) return null; + int cmp = key.compareTo(x.key); + if (cmp < 0) x.left = delete(x.left, key); + else if (cmp > 0) x.right = delete(x.right, key); + else { + if (x.right == null) return x.left; + if (x.left == null) return x.right; + Node t = x; + x = min(t.right); + x.right = deleteMin(t.right); + x.left = t.left; + } + x.N = size(x.left) + size(x.right) + 1; + return x; +} +``` + +### 9. keys() + +利用二叉查找树中序遍历的结果为递增的特点。 + +```java +public Iterable keys(Key lo, Key hi) { + Queue queue = new LinkedList<>(); + keys(root, queue, lo, hi); + return queue; +} +private void keys(Node x, Queue queue, Key lo, Key hi) { + if (x == null) return; + int cmpLo = lo.compareTo(x.key); + int cmpHi = hi.compareTo(x.key); + if (cmpLo < 0) keys(x.left, queue, lo, hi); + if (cmpLo <= 0 && cmpHi >= 0) queue.add(x.key); + if (cmpHi > 0) keys(x.right, queue, lo, hi); +} +``` + +### 10. 性能分析 + +复杂度:二叉查找树所有操作在最坏的情况下所需要的时间都和树的高度成正比。 + +## 2-3 查找树 + +

    + +2-3 查找树引入了 2- 节点和 3- 节点,目的是为了让树更平衡。一颗完美平衡的 2-3 查找树的所有空链接到根节点的距离应该是相同的。 + +### 1. 插入操作 + +插入操作和 BST 的插入操作有很大区别,BST 的插入操作是先进行一次未命中的查找,然后再将节点插入到对应的空链接上。但是 2-3 查找树如果也这么做的话,那么就会破坏了平衡性。它是将新节点插入到叶子节点上。 + +根据叶子节点的类型不同,有不同的处理方式。 + +插入到 2- 节点上,那么直接将新节点和原来的节点组成 3- 节点即可。 + +

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

    + +### 2. 性质 + +2-3 查找树插入操作的变换都是局部的,除了相关的节点和链接之外不必修改或者检查树的其它部分,而这些局部变换不会影响树的全局有序性和平衡性。 + +2-3 查找树的查找和插入操作复杂度和插入顺序无关,在最坏的情况下查找和插入操作访问的节点必然不超过 logN 个,含有 10 亿个节点的 2-3 查找树最多只需要访问 30 个节点就能进行任意的查找和插入操作。 + +

    + +## 红黑二叉查找树 + +2-3 查找树需要用到 2- 节点和 3- 节点,红黑树使用红链接来实现 3- 节点。指向一个节点的链接颜色如果为红色,那么这个节点和上层节点表示的是一个 3- 节点,而黑色则是普通链接。 + +

    + +红黑树具有以下性质: + +1. 红链接都为左链接; +2. 完美黑色平衡,即任意空链接到根节点的路径上的黑链接数量相同。 + +画红黑树时可以将红链接画平。 + +

    + +```java +public class RedBlackBST, Value> { + private Node root; + private static final boolean RED = true; + private static final boolean BLACK = false; + + private class Node { + Key key; + Value val; + Node left, right; + int N; + boolean color; + + Node(Key key, Value val, int n, boolean color) { + this.key = key; + this.val = val; + N = n; + this.color = color; + } + } + + private boolean isRed(Node x) { + if (x == null) return false; + return x.color == RED; + } +} +``` + +### 1. 左旋转 + +因为合法的红链接都为左链接,如果出现右链接为红链接,那么就需要进行左旋转操作。 + +

    + +

    + +```java +public Node rotateLeft(Node h) { + Node x = h.right; + h.right = x.left; + x.left = h; + x.color = h.color; + h.color = RED; + x.N = h.N; + h.N = 1 + size(h.left) + size(h.right); + return x; +} +``` + +### 2. 右旋转 + +进行右旋转是为了转换两个连续的左红链接,这会在之后的插入过程中探讨。 + +

    + +

    + +```java +public Node rotateRight(Node h) { + Node x = h.left; + h.left = x.right; + x.color = h.color; + h.color = RED; + x.N = h.N; + h.N = 1 + size(h.left) + size(h.right); + return x; +} +``` + +### 3. 颜色转换 + +一个 4- 节点在红黑树中表现为一个节点的左右子节点都是红色的。分裂 4- 节点除了需要将子节点的颜色由红变黑之外,同时需要将父节点的颜色由黑变红,从 2-3 树的角度看就是将中间节点移到上层节点。 + +

    + +

    + +```java +void flipColors(Node h){ + h.color = RED; + h.left.color = BLACK; + h.right.color = BLACK; +} +``` + +### 4. 插入 + +先将一个节点按二叉查找树的方法插入到正确位置,然后再进行如下颜色操作: + +- 如果右子节点是红色的而左子节点是黑色的,进行左旋转; +- 如果左子节点是红色的,而且左子节点的左子节点也是红色的,进行右旋转; +- 如果左右子节点均为红色的,进行颜色转换。 + +

    + +```java +public void put(Key key, Value val) { + root = put(root, key, val); + root.color = BLACK; +} + +private Node put(Node x, Key key, Value val) { + if (x == null) return new Node(key, val, 1, RED); + int cmp = key.compareTo(x.key); + if (cmp == 0) x.val = val; + else if (cmp < 0) x.left = put(x.left, key, val); + else x.right = put(x.right, key, val); + + if (isRed(x.right) && !isRed(x.left)) x = rotateLeft(x); + if (isRed(x.left) && isRed(x.left.left)) x = rotateRight(x); + if (isRed(x.left) && isRed(x.right)) flipColors(x); + + x.N = size(x.left) + size(x.right) + 1; + return x; +} +``` + +可以看到该插入操作和二叉查找树的插入操作类似,只是在最后加入了旋转和颜色变换操作即可。 + +根节点一定为黑色,因为根节点没有上层节点,也就没有上层节点的左链接指向根节点。flipColors() 有可能会使得根节点的颜色变为红色,每当根节点由红色变成黑色时树的黑链接高度加 1. + +### 5. 删除最小键 + +如果最小键在一个 2- 节点中,那么删除该键会留下一个空链接,就破坏了平衡性,因此要确保最小键不在 2- 节点中。 + +将 2- 节点转换成 3- 节点或者 4- 节点有两种方法,一种是向上层节点拿一个 key,一种是向兄弟节点拿一个 key。如果上层节点是 2- 节点,那么就没办法从上层节点拿 key 了,因此要保证删除路径上的所有节点都不是 2- 节点。在向下删除的过程中,保证以下情况之一发生: + +1. 如果当前节点的左子节点不是 2- 节点,完成; +2. 如果当前节点的左子节点是 2- 节点而它的兄弟节点不是 2- 节点,向兄弟节点拿一个 key 过来; +3. 如果当前节点的左子节点和它的兄弟节点都是 2- 节点,将左子节点、父节点中的最小键和最近的兄弟节点合并为一个 4- 节点。 + +

    + +最后得到一个含有最小键的 3- 节点或者 4- 节点,直接从中删除。然后再从头分解所有临时的 4- 节点。 + +

    + +### 6. 分析 + +一颗大小为 N 的红黑树的高度不会超过 2logN。最坏的情况下是它所对应的 2-3 树,构成最左边的路径节点全部都是 3- 节点而其余都是 2- 节点。 + +红黑树大多数的操作所需要的时间都是对数级别的。 + +## 散列表 + +散列表类似于数组,可以把散列表的散列值看成数组的索引值。访问散列表和访问数组元素一样快速,它可以在常数时间内实现查找和插入操作。 + +由于无法通过散列值知道键的大小关系,因此散列表无法实现有序性操作。 + +### 1. 散列函数 + +对于一个大小为 M 的散列表,散列函数能够把任意键转换为 [0, M-1] 内的正整数,该正整数即为 hash 值。 + +散列表有冲突的存在,也就是两个不同的键可能有相同的 hash 值。 + +散列函数应该满足以下三个条件: + +1. 一致性:相等的键应当有相等的 hash 值,两个键相等表示调用 equals() 返回的值相等。 +2. 高效性:计算应当简便,有必要的话可以把 hash 值缓存起来,在调用 hash 函数时直接返回。 +3. 均匀性:所有键的 hash 值应当均匀地分布到 [0, M-1] 之间,这个条件至关重要,直接影响到散列表的性能。 + +除留余数法可以将整数散列到 [0, M-1] 之间,例如一个正整数 k,计算 k%M 既可得到一个 [0, M-1] 之间的 hash 值。注意 M 必须是一个素数,否则无法利用键包含的所有信息。例如 M 为 10k,那么只能利用键的后 k 位。 + +对于其它数,可以将其转换成整数的形式,然后利用除留余数法。例如对于浮点数,可以将其表示成二进制形式,然后使用二进制形式的整数值进行除留余数法。 + +对于有多部分组合的键,每部分都需要计算 hash 值,并且最后合并时需要让每部分 hash 值都具有同等重要的地位。可以将该键看成 R 进制的整数,键中每部分都具有不同的权值。 + +例如,字符串的散列函数实现如下 + +```java +int hash = 0; +for(int i = 0; i < s.length(); i++) + hash = (R * hash + s.charAt(i)) % M; +``` + +再比如,拥有多个成员的自定义类的哈希函数如下: + +```java +int hash = (((day * R + month) % M) * R + year) % M; +``` + +R 通常取 31。 + +Java 中的 hashCode() 实现了 hash 函数,但是默认使用对象的内存地址值。在使用 hashCode() 函数时,应当结合除留余数法来使用。因为内存地址是 32 位整数,我们只需要 31 位的非负整数,因此应当屏蔽符号位之后再使用除留余数法。 + +```java +int hash = (x.hashCode() & 0x7fffffff) % M; +``` + +使用 Java 自带的 HashMap 等自带的哈希表实现时,只需要去实现 Key 类型的 hashCode() 函数即可。Java 规定 hashCode() 能够将键均匀分布于所有的 32 位整数,Java 中的 String、Integer 等对象的 hashCode() 都能实现这一点。以下展示了自定义类型如何实现 hashCode()。 + +```java +public class Transaction{ + private final String who; + private final Date when; + private final double amount; + + public int hashCode(){ + int hash = 17; + hash = 31 * hash + who.hashCode(); + hash = 31 * hash + when.hashCode(); + hash = 31 * hash + ((Double) amount).hashCode(); + return hash; + } +} +``` + +### 2. 基于拉链法的散列表 + +拉链法使用链表来存储 hash 值相同的键,从而解决冲突。此时查找需要分两步,首先查找 Key 所在的链表,然后在链表中顺序查找。 + +

    + +对于 N 个键,M 条链表 (N>M),如果哈希函数能够满足均匀性的条件,每条链表的大小趋向于 N/M,因此未命中的查找和插入操作所需要的比较次数为 \~N/M。 + +### 3. 基于线性探测法的散列表 + +线性探测法使用空位来解决冲突,当冲突发生时,向前探测一个空位来存储冲突的键。使用线程探测法,数组的大小 M 应当大于键的个数 N(M>N)。 + +

    + +```java +public class LinearProbingHashST { + private int N; + private int M = 16; + private Key[] keys; + private Value[] vals; + + public LinearProbingHashST() { + init(); + } + + public LinearProbingHashST(int M) { + this.M = M; + init(); + } + + private void init() { + keys = (Key[]) new Object[M]; + vals = (Value[]) new Object[M]; + } + + private int hash(Key key) { + return (key.hashCode() & 0x7fffffff) % M; + } +} +``` + +**(一)查找** + +```java +public Value get(Key key) { + for (int i = hash(key); keys[i] != null; i = (i + 1) % M) { + if (keys[i].equals(key)) { + return vals[i]; + } + } + return null; +} +``` + +**(二)插入** + +```java +public void put(Key key, Value val) { + int i; + for (i = hash(key); keys[i] != null; i = (i + 1) % M) { + if (keys[i].equals(key)) { + vals[i] = val; + return; + } + } + keys[i] = key; + vals[i] = val; + N++; + resize(); +} +``` + +**(三)删除** + +删除操作应当将右侧所有相邻的键值对重新插入散列表中。 + +```java +public void delete(Key key) { + if (!contains(key)) return; + int i = hash(key); + while (!key.equals(keys[i])) { + i = (i + 1) % M; + } + keys[i] = null; + vals[i] = null; + i = (i + 1) % M; + while (keys[i] != null) { + Key keyToRedo = keys[i]; + Value valToRedo = vals[i]; + keys[i] = null; + vals[i] = null; + N--; + put(keyToRedo, valToRedo); + i = (i + 1) % M; + } + N--; + resize(); +} +``` + +**(四)调整数组大小** + +线性探测法的成本取决于连续条目的长度,连续条目也叫聚簇。当聚簇很长时,在查找和插入时也需要进行很多次探测。 + +α = N/M,把 α 称为利用率。理论证明,当 α 小于 1/2 时探测的预计次数只在 1.5 到 2.5 之间。 + +

    + +为了保证散列表的性能,应当调整数组的大小,使得 α 在 [1/4, 1/2] 之间。 + +```java +private void resize() { + if (N >= M / 2) resize(2 * M); + else if (N <= M / 8) resize(M / 2); +} + +private void resize(int cap) { + LinearProbingHashST t = new LinearProbingHashST<>(cap); + for (int i = 0; i < M; i++) { + if (keys[i] != null) { + t.put(keys[i], vals[i]); + } + } + keys = t.keys; + vals = t.vals; + M = t.M; +} +``` + +虽然每次重新调整数组都需要重新把每个键值对插入到散列表,但是从摊还分析的角度来看,所需要的代价却是很小的。从下图可以看出,每次数组长度加倍后,累计平均值都会增加 1,因为表中每个键都需要重新计算散列值,但是随后平均值会下降。 + +

    + +## 应用 + +### 1. 各种符号表实现的比较 + +

    + +应当优先考虑散列表,当需要有序性操作时使用红黑树。 + +### 2. Java 的符号表实现 + +- java.util.TreeMap:红黑树 +- java.util.HashMap:拉链法的散列表 + +### 3. 集合类型 + +除了符号表,集合类型也经常使用,它只有键没有值,可以用集合类型来存储一系列的键然后判断一个键是否在集合中。 + +### 4. 稀疏向量乘法 + +当向量为稀疏向量时,可以使用符号表来存储向量中的非 0 索引和值,使得乘法运算只需要对那些非 0 元素进行即可。 + +```java +public class SparseVector { + private HashMap hashMap; + + public SparseVector(double[] vector) { + hashMap = new HashMap<>(); + for (int i = 0; i < vector.length; i++) { + if (vector[i] != 0) { + hashMap.put(i, vector[i]); + } + } + } + + public double get(int i) { + return hashMap.getOrDefault(i, 0.0); + } + + public double dot(SparseVector other) { + double sum = 0; + for (int i : hashMap.keySet()) { + sum += this.get(i) * other.get(i); + } + return sum; + } +} +``` + diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md new file mode 100644 index 00000000..5ac1d886 --- /dev/null +++ b/notes/计算机操作系统.md @@ -0,0 +1,889 @@ + +* [一、 概述](#一-概述) + * [操作系统基本特征](#操作系统基本特征) + * [操作系统基本功能](#操作系统基本功能) + * [系统调用](#系统调用) + * [大内核和微内核](#大内核和微内核) + * [中断分类](#中断分类) +* [二、进程管理](#二进程管理) + * [进程与线程](#进程与线程) + * [进程状态的切换](#进程状态的切换) + * [调度算法](#调度算法) + * [进程同步](#进程同步) + * [经典同步问题](#经典同步问题) + * [进程通信](#进程通信) +* [三、死锁](#三死锁) + * [死锁的必要条件](#死锁的必要条件) + * [死锁的处理方法](#死锁的处理方法) +* [四、内存管理](#四内存管理) + * [虚拟内存](#虚拟内存) + * [分页与分段](#分页与分段) + * [分页系统地址映射](#分页系统地址映射) + * [页面置换算法](#页面置换算法) +* [五、设备管理](#五设备管理) + * [磁盘调度算法](#磁盘调度算法) +* [六、链接](#六链接) + * [编译系统](#编译系统) + * [目标文件](#目标文件) + * [静态链接](#静态链接) + * [动态链接](#动态链接) +* [参考资料](#参考资料) + + + +# 一、 概述 + +## 操作系统基本特征 + +### 1. 并发 + +并发性是指宏观上在一段时间内能同时运行多个程序,而并行性则指同一时刻能运行多个指令。 + +并行需要硬件支持,如多流水线或者多处理器。 + +操作系统通过引入进程和线程,使得程序能够并发运行。 + +### 2. 共享 + +共享是指系统中的资源可以供多个并发进程共同使用。 + +有两种共享方式:互斥共享和同时共享。 + +互斥共享的资源称为临界资源,例如打印机等,在同一时间只允许一个进程访问,需要用同步机制来实现对临界资源的访问。 + +### 3. 虚拟 + +虚拟技术把一个物理实体转换为多个逻辑实体。 + +主要有两种虚拟技术:时分复用技术和空分复用技术。例如多个进程能在同一个处理器上并发执行使用了时分复用技术,让每个进程轮流占有处理器,每次只执行一小个时间片并快速切换。 + +### 4. 异步 + +异步指进程不是一次性执行完毕,而是走走停停,以不可知的速度向前推进。 + +## 操作系统基本功能 + +### 1. 进程管理 + +进程控制、进程同步、进程通信、死锁处理、处理机调度等。 + +### 2. 内存管理 + +内存分配、地址映射、内存保护与共享和内存扩充等功能。 + +### 3. 文件管理 + +文件存储空间的管理、目录管理及文件读写管理和保护等。 + +### 4. 设备管理 + +完成用户的 I/O 请求,方便用户使用各种设备,并提高设备的利用率,主要包括缓冲管理、设备分配、设备处理和虛拟设备等功能。 + +## 系统调用 + +如果一个进程在用户态需要使用内核态的功能,就进行系统调用从而陷入内核,由操作系统代为完成。 + +

    + +Linux 的系统调用主要有以下这些: + +| Task | Commands | +| :---: | --- | +| 进程控制 | fork(); exit(); wait(); | +| 进程通信 | pipe(); shmget(); mmap(); | +| 文件操作 | open(); read(); write(); | +| 设备操作 | ioctl(); read(); write(); | +| 信息维护 | getpid(); alarm(); sleep(); | +| 安全 | chmod(); umask(); chown(); | + +## 大内核和微内核 + +### 1. 大内核 + +大内核是将操作系统功能作为一个紧密结合的整体放到内核。 + +由于各模块共享信息,因此有很高的性能。 + +### 2. 微内核 + +由于操作系统不断复杂,为了实现因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。 + +在微内核结构下,操作系统被划分成小的、定义良好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。 + +因为需要频繁地在用户态和核心态之间进行切换,所以会有一定的性能损失。 + +

    + +## 中断分类 + +### 1. 外中断 + +由 CPU 执行指令以外的事件引起,如 I/O 结束中断,表示设备输入/输出处理已经完成,处理器能够发送下一个输入/输出请求。此外还有时钟中断、控制台中断等。 + +### 2. 异常 + +由 CPU 执行指令的内部事件引起,如非法操作码、地址越界、算术溢出等。 + +### 3. 陷入 + +在用户程序中使用系统调用。 + +# 二、进程管理 + +## 进程与线程 + +### 1. 进程 + +进程是资源分配的基本单位。 + +进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。 + +下图显示了 4 个程序创建了 4 个进程,这 4 个进程可以并发地执行。 + +

    + +### 2. 线程 + +线程是独立调度的基本单位。 + +一个进程中可以有多个线程,它们共享进程资源。 + +

    + +### 3. 区别 + +- 拥有资源:进程是资源分配的基本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。 + +- 调度:线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。 + +- 系统开销:由于创建或撤销进程时,系统都要为之分配或回收资源,如内存空间、I/O 设备等,所付出的开销远大于创建或撤销线程时的开销。类似地,在进行进程切换时,涉及当前执行进程 CPU 环境的保存及新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。 + +- 通信方面:进程间通信 (IPC) 需要进程同步和互斥手段的辅助,以保证数据的一致性。而线程间可以通过直接读/写同一进程中的数据段(如全局变量)来进行通信。 + +举例:QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览器中点击一个新链接从而发起 HTTP 请求时,浏览器还可以响应用户的其它事件。 + +## 进程状态的切换 + +

    + +- 就绪状态(ready):等待被调度 +- 运行状态(running) +- 阻塞状态(waiting):等待资源 + +应该注意以下内容: + +- 只有就绪态和运行态可以相互转换,其它的都是单向转换。就绪状态的进程通过调度算法从而获得 CPU 时间,转为运行状态;而运行状态的进程,在分配给它的 CPU 时间片用完之后就会转为就绪状态,等待下一次调度。 +- 阻塞状态是缺少需要的资源从而由运行状态转换而来,但是该资源不包括 CPU 时间,缺少 CPU 时间会从运行态转换为就绪态。 + +## 调度算法 + +需要针对不同环境来讨论调度算法。 + +### 1. 批处理系统中的调度 + +#### 1.1 先来先服务 + +> first-come first-serverd(FCFS) + +调度最先进入就绪队列的作业。 + +有利于长作业,但不利于短作业,因为短作业必须一直等待前面的长作业执行完毕才能执行,而长作业又需要执行很长时间,造成了短作业等待时间过长。 + +#### 1.2 短作业优先 + +> shortest job first(SJF) + +调度估计运行时间最短的作业。 + +长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。 + +#### 1.3 最短剩余时间优先 + +> shortest remaining time next(SRTN) + +### 2. 交互式系统中的调度 + +#### 2.1 优先级调度 + +除了可以手动赋予优先权之外,还可以把响应比作为优先权,这种调度方式叫做高响应比优先调度算法。 + +响应比 = (等待时间 + 要求服务时间) / 要求服务时间 = 响应时间 / 要求服务时间 + +这种调度算法主要是为了解决短作业优先调度算法长作业可能会饿死的问题,因为随着等待时间的增长,响应比也会越来越高。 + +#### 2.2 时间片轮转 + +将所有就绪进程按 FCFS 的原则排成一个队列,每次调度时,把 CPU 时间分配给队首进程,该进程可以执行一个时间片。当时间片用完时,由计时器发出时钟中断,调度程序便停止该进程的执行,并将它送往就绪队列的末尾,同时继续把 CPU 时间分配给队首的进程。 + +时间片轮转算法的效率和时间片的大小有很大关系。因为进程切换都要保存进程的信息并且载入新进程的信息,如果时间片太小,会导致进程切换得太频繁,在进程切换上就会花过多时间。 + +#### 2.3 多级反馈队列 + +

    + +如果一个进程需要执行 100 个时间片,如果采用轮转调度算法,那么需要交换 100 次。多级队列是为这种需要连续执行多个时间片的进程考虑,它设置了多个队列,每个队列时间片大小都不同,例如 1,2,4,8,..。进程在第一个队列没执行完,就会被移到下一个队列。这种方式下,之前的进程只需要交换 7 次。 + +每个队列优先权也不同,最上面的优先权最高。因此只有上一个队列没有进程在排队,才能调度当前队列上的进程。 + +### 3. 实时系统中的调度 + +实时系统要求一个服务请求在一个确定时间内得到响应。 + +分为硬实时和软实时,前者必须满足绝对的截止时间,后者可以容忍一定的超时。 + +## 进程同步 + +### 1. 临界区 + +对临界资源进行访问的那段代码称为临界区。 + +为了互斥访问临界资源,每个进程在进入临界区之前,需要先进行检查。 + +```html +// entry section +// critical section; +// exit section +``` + +### 2. 同步与互斥 + +- 同步:多个进程按一定顺序执行; +- 互斥:多个进程在同一时刻只有一个进程能进入临界区。 + +### 3. 信号量 + +信号量(Semaphore)是一个整型变量,可以对其执行 down 和 up 操作,也就是常见的 P 和 V 操作。 + +- **down** : 如果信号量大于 0 ,执行 -1 操作;如果信号量等于 0,进程睡眠,等待信号量大于 0; +- **up** :对信号量执行 +1 操作,唤醒睡眠的进程让其完成 down 操作。 + +down 和 up 操作需要被设计成原语,不可分割,通常的做法是在执行这些操作的时候屏蔽中断。 + +如果信号量的取值只能为 0 或者 1,那么就成为了 **互斥量(Mutex)** ,0 表示临界区已经加锁,1 表示临界区解锁。 + +```c +typedef int semaphore; +semaphore mutex = 1; +void P1() { + down(&mutex); + // 临界区 + up(&mutex); +} + +void P2() { + down(&mutex); + // 临界区 + up(&mutex); +} +``` + + **使用信号量实现生产者-消费者问题**
    + +问题描述:使用一个缓冲区来保存物品,只有缓冲区没有满,生产者才可以放入物品;只有缓冲区不为空,消费者才可以拿走物品。 + +因为缓冲区属于临界资源,因此需要使用一个互斥量 mutex 来控制对缓冲区的互斥访问。 + +为了同步生产者和消费者的行为,需要记录缓冲区中物品的数量。数量可以使用信号量来进行统计,这里需要使用两个信号量:empty 记录空缓冲区的数量,full 记录满缓冲区的数量。其中,empty 信号量是在生产者进程中使用,当 empty 不为 0 时,生产者才可以放入物品;full 信号量是在消费者进程中使用,当 full 信号量不为 0 时,消费者才可以取走物品。 + +注意,不能先对缓冲区进行加锁,再测试信号量。也就是说,不能先执行 down(mutex) 再执行 down(empty)。如果这么做了,那么可能会出现这种情况:生产者对缓冲区加锁后,执行 down(empty) 操作,发现 empty = 0,此时生产者睡眠。消费者不能进入临界区,因为生产者对缓冲区加锁了,也就无法执行 up(empty) 操作,empty 永远都为 0,那么生产者和消费者就会一直等待下去,造成死锁。 + +```c +#define N 100 +typedef int semaphore; +semaphore mutex = 1; +semaphore empty = N; +semaphore full = 0; + +void producer() { + while(TRUE){ + int item = produce_item(); + down(&empty); + down(&mutex); + insert_item(item); + up(&mutex); + up(&full); + } +} + +void consumer() { + while(TRUE){ + down(&full); + down(&mutex); + int item = remove_item(); + up(&mutex); + up(&empty); + consume_item(item); + } +} +``` + +### 4. 管程 + +使用信号量机制实现的生产者消费者问题需要客户端代码做很多控制,而管程把控制的代码独立出来,不仅不容易出错,也使得客户端代码调用更容易。 + +c 语言不支持管程,下面的示例代码使用了类 Pascal 语言来描述管程。示例代码的管程提供了 insert() 和 remove() 方法,客户端代码通过调用这两个方法来解决生产者-消费者问题。 + +```pascal +monitor ProducerConsumer + integer i; + condition c; + + procedure insert(); + begin + // ... + end; + + procedure remove(); + begin + // ... + end; +end monitor; +``` + +管程有一个重要特性:在一个时刻只能有一个进程使用管程。进程在无法继续执行的时候不能一直占用管程,否者其它进程永远不能使用管程。 + +管程引入了 **条件变量** 以及相关的操作:**wait()** 和 **signal()** 来实现同步操作。对条件变量执行 wait() 操作会导致调用进程阻塞,把管程让出来给另一个进程持有。signal() 操作用于唤醒被阻塞的进程。 + + **使用管程实现生成者-消费者问题**
    + +```pascal +// 管程 +monitor ProducerConsumer + condition full, empty; + integer count := 0; + condition c; + + procedure insert(item: integer); + begin + if count = N then wait(full); + insert_item(item); + count := count + 1; + if count = 1 then signal(empty); + end; + + function remove: integer; + begin + if count = 0 then wait(empty); + remove = remove_item; + count := count - 1; + if count = N -1 then signal(full); + end; +end monitor; + +// 生产者客户端 +procedure producer +begin + while true do + begin + item = produce_item; + ProducerConsumer.insert(item); + end +end; + +// 消费者客户端 +procedure consumer +begin + while true do + begin + item = ProducerConsumer.remove; + consume_item(item); + end +end; +``` + +## 经典同步问题 + +生产者和消费者问题前面已经讨论过了。 + +### 1. 读者-写者问题 + +允许多个进程同时对数据进行读操作,但是不允许读和写以及写和写操作同时发生。 + +一个整型变量 count 记录在对数据进行读操作的进程数量,一个互斥量 count_mutex 用于对 count 加锁,一个互斥量 data_mutex 用于对读写的数据加锁。 + +```c +typedef int semaphore; +semaphore count_mutex = 1; +semaphore data_mutex = 1; +int count = 0; + +void reader() { + while(TRUE) { + down(&count_mutex); + count++; + if(count == 1) down(&data_mutex); // 第一个读者需要对数据进行加锁,防止写进程访问 + up(&count_mutex); + read(); + down(&count_mutex); + count--; + if(count == 0) up(&data_mutex); + up(&count_mutex); + } +} + +void writer() { + while(TRUE) { + down(&data_mutex); + write(); + up(&data_mutex); + } +} +``` + +### 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); + } +} +``` + +为了防止死锁的发生,可以设置两个条件: + +1. 必须同时拿起左右两个筷子; +2. 只有在两个邻居都没有进餐的情况下才允许进餐。 + +```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_tow(i); + } +} + +void take_two(int i) { + down(&mutex); + state[i] = HUNGRY; + test(i); + up(&mutex); + down(&s[i]); +} + +void put_tow(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]); + } +} +``` + +## 进程通信 + +### 1. 进程同步与进程通信的区别 + +- 进程同步:控制多个进程按一定顺序执行; +- 进程通信:进程间传输信息。 + +进程通信是一种手段,而进程同步是一种目的。也可以说,为了能够达到进程同步的目的,需要让进程进行通信,传输一些进程同步所需要的信息。 + +在进程同步中介绍的信号量也属于进程通信的一种方式,但是属于低级别的进程通信,因为它传输的信息非常小。 + +### 2. 进程通信方式 + +#### 2.1 消息传递 + +操作系统提供了用于通信的通道(Channel),进程可以通过读写这个通道进行通信。 + +

    + + **(一)管道**
    + +写进程在管道的尾端写入数据,读进程在管道的首端读出数据。管道提供了简单的流控制机制,进程试图读空管道时,在有数据写入管道前,进程将一直阻塞。同样地,管道已经满时,进程再试图写管道,在其它进程从管道中移走数据之前,写进程将一直阻塞。 + +Linux 中管道通过空文件实现。 + +管道有三种: + +1. 普通管道:有两个限制,一是只能单向传输;二是只能在父子进程之间使用; +2. 流管道:去除第一个限制,支持双向传输; +3. 命名管道:去除第二个限制,可以在不相关进程之间进行通信。 + +

    + + **(二)消息队列**
    + +消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。 + +

    + + **(三)套接字**
    + +套接字也是一种进程间通信机制,与其它通信机制不同的是,它可用于不同机器间的进程通信。 + +

    + +#### 2.2 共享内存 + +操作系统建立一块共享内存,并将其映射到每个进程的地址空间上,进程就可以直接对这块共享内存进行读写。 + +共享内存是最快的进程通信方式。 + +

    + +# 三、死锁 + +## 死锁的必要条件 + +

    + +1. 互斥:每个资源要么已经分配给了一个进程,要么就是可用的。 +2. 占有和等待:已经得到了某个资源的进程可以再请求新的资源。 +3. 不可抢占:已经分配给一个进程的资源不能强制性地被抢占,它只能被占有它的进程显示地释放。 +4. 环路等待:有两个或者两个以上的进程组成一条环路,该环路中的每个进程都在等待下一个进程所占有的资源。 + +## 死锁的处理方法 + +### 1. 鸵鸟策略 + +把头埋在沙子里,假装根本没发生问题。 + +因为解决死锁问题的代价很高,因此鸵鸟策略这种不采取任务措施的方案会获得更高的性能。当发生死锁时不会对用户造成多大影响,或发生死锁的概率很低,可以采用鸵鸟策略。 + +大多数操作系统,包括 Unix,Linux 和 Windows,处理死锁问题的办法仅仅是忽略它。 + +### 2. 死锁检测与死锁恢复 + +不试图阻止死锁,而是当检测到死锁发生时,采取措施进行恢复。 + +**(一)每种类型一个资源的死锁检测** + +

    + +上图为资源分配图,其中方框表示资源,圆圈表示进程。资源指向进程表示该资源已经分配给该进程,进程指向资源表示进程请求获取该资源。 + +图 a 可以抽取出环,如图 b,它满足了环路等待条件,因此会发生死锁。 + +每种类型一个资源的死锁检测算法是通过检测有向图是否存在环来实现,从一个节点出发进行深度优先搜索,对访问过的节点进行标记,如果访问了已经标记的节点,就表示有向图存在环,也就是检测到死锁的发生。 + +**(二)每种类型多个资源的死锁检测** + +

    + +上图中,有三个进程四个资源,每个数据代表的含义如下: + +- E 向量:资源总量 +- A 向量:资源剩余量 +- C 矩阵:每个进程所拥有的资源数量,每一行都代表一个进程拥有资源的数量 +- R 矩阵:每个进程请求的资源数量 + +进程 P1 和 P2 所请求的资源都得不到满足,只有进程 P3 可以,让 P3 执行,之后释放 P3 拥有的资源,此时 A = (2 2 2 0)。P2 可以执行,执行后释放 P2 拥有的资源,A = (4 2 2 1) 。P1 也可以执行。所有进程都可以顺利执行,没有死锁。 + +算法总结如下: + +每个进程最开始时都不被标记,执行过程有可能被标记。当算法结束时,任何没有被标记的进程都是死锁进程。 + +1. 寻找一个没有标记的进程 Pi,它所请求的资源小于等于 A。 +2. 如果找到了这样一个进程,那么将 C 矩阵的第 i 行向量加到 A 中,标记该进程,并转回 1。 +3. 如果没有这样一个进程,算法终止。 + +**(三)死锁恢复** + +- 利用抢占恢复 +- 利用回滚恢复 +- 通过杀死进程恢复 + +### 3. 死锁预防 + +在程序运行之前预防发生死锁。 + +**(一)破坏互斥条件** + +例如假脱机打印机技术允许若干个进程同时输出,唯一真正请求物理打印机的进程是打印机守护进程。 + +**(二)破坏占有和等待条件** + +一种实现方式是规定所有进程在开始执行前请求所需要的全部资源。 + +**(三)破坏不可抢占条件** + +**(四)破坏环路等待** + +给资源统一编号,进程只能按编号顺序来请求资源。 + +### 4. 死锁避免 + +在程序运行时避免发生死锁。 + +**(一)安全状态** + +

    + +图 a 的第二列 Has 表示已拥有的资源数,第三列 Max 表示总共需要的资源数,Free 表示还有可以使用的资源数。从图 a 开始出发,先让 B 拥有所需的所有资源(图 b),运行结束后释放 B,此时 Free 变为 5(图 c);接着以同样的方式运行 C 和 A,使得所有进程都能成功运行,因此可以称图 a 所示的状态时安全的。 + +定义:如果没有死锁发生,并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕,则称该状态是安全的。 + +安全状态的检测与死锁的检测类似,因为安全状态必须要求不能发生死锁。下面的银行家算法与死锁检测算法非常类似,可以结合着做参考对比。 + +**(二)单个资源的银行家算法** + +一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。 + +

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

    + +上图中有五个进程,四个资源。左边的图表示已经分配的资源,右边的图表示还需要分配的资源。最右边的 E、P 以及 A 分别表示:总资源、已分配资源以及可用资源,注意这三个为向量,而不是具体数值,例如 A=(1020),表示 4 个资源分别还剩下 1/0/2/0。 + +检查一个状态是否安全的算法如下: + +- 查找右边的矩阵是否存在一行小于等于向量 A。如果不存在这样的行,那么系统将会发生死锁,状态是不安全的。 +- 假若找到这样一行,将该进程标记为终止,并将其已分配资源加到 A 中。 +- 重复以上两步,直到所有进程都标记为终止,则状态时安全的。 + +如果一个状态不是安全的,也需要拒绝进入这个状态。 + +# 四、内存管理 + +## 虚拟内存 + +每个程序拥有自己的地址空间,这个地址空间被分割成多个块,每一块称为一页。这些页被映射到物理内存,但不需要映射到连续的物理内存,也不需要所有页都必须在物理内存中。当程序引用到一部分不在物理内存中的地址空间时,由硬件执行必要的映射,将缺失的部分装入物理内存并重新执行失败的指令。 + +## 分页与分段 + +### 1. 分页 + +大部分虚拟内存系统都使用分页技术。把由程序产生的地址称为虚拟地址,它们构成了一个虚拟地址空间。例如有一台计算机可以产生 16 位地址,它的虚拟地址空间为 0\~64K,然而计算机只有 32KB 的物理内存,因此虽然可以编写 64KB 的程序,但它们不能被完全调入内存运行。 + +

    + +虚拟地址空间划分成固定大小的页,在物理内存中对应的单元称为页框,页和页框大小通常相同,它们之间通过页表进行映射。 + +程序最开始只将一部分页调入页框中,当程序引用到没有在页框的页时,产生缺页中断,进行页面置换,按一定的原则将一部分页框换出,并将页调入。 + +### 2. 分段 + +

    + +上图为一个编译器在编译过程中建立的多个表,有 4 个表是动态增长的,如果使用分页系统的一维地址空间,动态增长的特点会导致覆盖问题的出现。 + +

    + +分段的做法是把每个表分成段,一个段构成一个独立的地址空间。每个段的长度可以不同,并且可以动态增长。 + +每个段都需要程序员来划分。 + +### 3. 段页式 + +用分段方法来分配和管理虚拟存储器。程序的地址空间按逻辑单位分成基本独立的段,而每一段有自己的段名,再把每段分成固定大小的若干页。 + +用分页方法来分配和管理实存。即把整个主存分成与上述页大小相等的存储块,可装入作业的任何一页。 + +程序对内存的调入或调出是按页进行的,但它又可按段实现共享和保护。 + +### 4. 分页与分段区别 + +- 对程序员的透明性:分页透明,但是分段需要程序员显示划分每个段。 + +- 地址空间的维度:分页是一维地址空间,分段是二维的。 + +- 大小是否可以改变:页的大小不可变,段的大小可以动态改变。 + +- 出现的原因:分页主要用于实现虚拟内存,从而获得更大的地址空间;分段主要是为了使程序和数据可以被划分为逻辑上独立的地址空间并且有助于共享和保护。 + +## 分页系统地址映射 + +- 内存管理单元(MMU):管理着虚拟地址空间和物理内存的转换。 +- 页表(Page table):页(虚拟地址空间)和页框(物理内存空间)的映射表。例如下图中,页表的第 0 个表项为 010,表示第 0 个页映射到第 2 个页框。页表项的最后一位用来标记页是否在内存中。 + +下图的页表存放着 16 个页,这 16 个页需要用 4 个比特位来进行索引定位。因此对于虚拟地址(0010 000000000100),前 4 位是用来存储页面号,而后 12 位存储在页中的偏移量。 + +(0010 000000000100)根据前 4 位得到页号为 2,读取表项内容为(110 1),它的前 3 为为页框号,最后 1 位表示该页在内存中。最后映射得到物理内存地址为(110 000000000100)。 + +

    + +## 页面置换算法 + +在程序运行过程中,如果要访问的页面不在内存中,就发生缺页中断从而将该页调入内存中。此时如果内存已无空闲空间,系统必须从内存中调出一个页面到磁盘对换区中来腾出空间。 + +页面置换算法的主要目标是使页面置换频率最低(也可以说缺页率最低)。 + +### 1. 最佳 + +> Optimal + +所选择的被换出的页面将是最长时间内不再被访问,通常可以保证获得最低的缺页率。 + +是一种理论上的算法,因为无法知道一个页面多长时间不再被访问。 + +举例:一个系统为某进程分配了三个物理块,并有如下页面引用序列: + +

    + +开始运行时,先将 7, 0, 1 三个页面装入内存。当进程要访问页面 2 时,产生缺页中断,会将页面 7 换出,因为页面 7 再次被访问的时间最长。 + +### 2. 先进先出 + +> FIFO, First In First Out + +所选择换出的页面是最先进入的页面。 + +该算法会将那些经常被访问的页面也被换出,从而使缺页率升高。 + +### 3. 最近最久未使用 + +> LRU, Least Recently Used + +虽然无法知道将来要使用的页面情况,但是可以知道过去使用页面的情况。LRU 将最近最久未使用的页面换出。 + +可以用栈来实现该算法,栈中存储页面的页面号。当进程访问一个页面时,将该页面的页面号从栈移除,并将它压入栈顶。这样,最近被访问的页面总是在栈顶,而最近最久未使用的页面总是在栈底。 + +

    + +

    + +### 4. 时钟 + +> Clock + +需要用到一个访问位,当一个页面被访问时,将访问位置为 1。 + +首先,将内存中的所有页面链接成一个循环队列,当缺页中断发生时,检查当前指针所指向页面的访问位,如果访问位为 0,就将该页面换出;否则将该页的访问位设置为 0,给该页面第二次的机会,移动指针继续检查。 + +

    + +# 五、设备管理 + +## 磁盘调度算法 + +当多个进程同时请求访问磁盘时,需要进行磁盘调度来控制对磁盘的访问。 + +磁盘调度的主要目标是使磁盘的平均寻道时间最少。 + +### 1. 先来先服务 + +> FCFS, First Come First Served + +根据进程请求访问磁盘的先后次序来进行调度。优点是公平和简单,缺点也很明显,因为未对寻道做任何优化,使平均寻道时间可能较长。 + +### 2. 最短寻道时间优先 + +> SSTF, Shortest Seek Time First + +要求访问的磁道与当前磁头所在磁道距离最近的优先进行调度。这种算法并不能保证平均寻道时间最短,但是比 FCFS 好很多。 + +### 3. 扫描算法 + +> SCAN + +SSTF 会出现饥饿现象。考虑以下情况,新进程请求访问的磁道与磁头所在磁道的距离总是比一个在等待的进程来的近,那么等待的进程会一直等待下去。 + +SCAN 算法在 SSTF 算法之上考虑了磁头的移动方向,要求所请求访问的磁道在磁头当前移动方向上才能够得到调度。因为考虑了移动方向,那么一个进程请求访问的磁道一定会得到调度。 + +当一个磁头自里向外移动时,移到最外侧会改变移动方向为自外向里,这种移动的规律类似于电梯的运行,因此又常称 SCAN 算法为电梯调度算法。 + +### 4. 循环扫描算法 + +> CSCAN + +CSCAN 对 SCAN 进行了改动,要求磁头始终沿着一个方向移动。 + +# 六、链接 + +## 编译系统 + +以下是一个 hello.c 程序: + +```c +#include + +int main() +{ + printf("hello, world\n"); + return 0; +} +``` + +在 Unix 系统上,由编译器把源文件转换为目标文件。 + +```bash +gcc -o hello hello.c +``` + +这个过程大致如下: + +

    + +1. 预处理阶段:处理以 # 开头的预处理命令; +2. 编译阶段:翻译成汇编程序; +3. 汇编阶段:将汇编程序翻译可重定向目标程序,它是二进制的; +4. 链接阶段:将可重定向目标程序和 printf.o 等单独预编译好的目标文件进行合并,得到最终的可执行目标程序。 + +## 目标文件 + +1. 可执行目标文件:可以直接在内存中执行; +2. 可重定向目标文件:可与其他可重定向目标文件在链接阶段合并,创建一个可执行目标文件; +3. 共享目标文件:可以在运行时被动态加载进内存并链接; + +## 静态链接 + +静态连接器以一组可重定向目标文件为输入,生成一个完全链接的可执行目标文件作为输出。链接器主要完成以下两个任务: + +1. 符号解析:每个符号对应于一个函数、一个全局变量或一个静态变量,符号解析的目的是将每个符号引用于一个符号定义关联起来。 +2. 重定位:编译器和汇编器生成从地址 0 开始的代码和数据节,链接器通过把每个符号定义与一个内存位置关联起来,从而重定位这些节,然后修改所有对这些符号的引用,使得它们指向这个内存位置。 + +

    + +## 动态链接 + +静态库有以下两个问题: + +- 当静态库更新时那么整个程序都要重新进行链接; +- 对于 printf 这种标准函数库,如果每个程序都要有代码,这会极大浪费资源。 + +共享库是为了解决静态库的这两个问题而设计的,在 Linux 系统中通常用 .so 后缀来表示,Windows 系统上它们被称为 DLL。它具有以下特点: + +1. 在给定的文件系统中一个库只有一个 .so 文件,所有引用该库的可执行目标文件都共享这个文件,它不会被复制到引用它的可执行文件中; +2. 在内存中,一个共享库的 .text 节的一个副本可以被不同的正在运行的进程共享。 + +

    + +# 参考资料 + +- Tanenbaum A S, Bos H. Modern operating systems[M]. Prentice Hall Press, 2014. +- 汤子瀛, 哲凤屏, 汤小丹. 计算机操作系统[M]. 西安电子科技大学出版社, 2001. +- Bryant, R. E., & O’Hallaron, D. R. (2004). 深入理解计算机系统. +- [Operating System Notes](https://applied-programming.github.io/Operating-Systems-Notes/) +- [进程间的几种通信方式](http://blog.csdn.net/yufaw/article/details/7409596) +- [Operating-System Structures](https://www.cs.uic.edu/\~jbell/CourseNotes/OperatingSystems/2_Structures.html) +- [Processes](http://cse.csusb.edu/tongyu/courses/cs460/notes/process.php) +- [Inter Process Communication Presentation[1]](https://www.slideshare.net/rkolahalam/inter-process-communication-presentation1) diff --git a/notes/计算机网络.md b/notes/计算机网络.md new file mode 100644 index 00000000..e371f7c1 --- /dev/null +++ b/notes/计算机网络.md @@ -0,0 +1,888 @@ + +* [一、概述](#一概述) + * [网络的网络](#网络的网络) + * [ISP](#isp) + * [互联网的组成](#互联网的组成) + * [主机之间的通信方式](#主机之间的通信方式) + * [电路交换与分组交换](#电路交换与分组交换) + * [时延](#时延) + * [计算机网络体系结构*](#计算机网络体系结构) +* [二、物理层](#二物理层) + * [通信方式](#通信方式) + * [带通调制](#带通调制) + * [信道复用技术](#信道复用技术) +* [三、数据链路层](#三数据链路层) + * [三个基本问题](#三个基本问题) + * [点对点信道 - PPP 协议](#点对点信道---ppp-协议) + * [局域网的拓扑](#局域网的拓扑) + * [广播信道- CSMA/CD 协议*](#广播信道--csmacd-协议) + * [扩展局域网*](#扩展局域网) + * [MAC 层*](#mac-层) +* [四、网络层 *](#四网络层-) + * [网际协议 IP 概述](#网际协议-ip-概述) + * [IP 数据报格式](#ip-数据报格式) + * [IP 地址编址](#ip-地址编址) + * [IP 地址和 MAC 地址](#ip-地址和-mac-地址) + * [地址解析协议 ARP](#地址解析协议-arp) + * [路由器的结构](#路由器的结构) + * [路由器分组转发流程](#路由器分组转发流程) + * [路由选择协议](#路由选择协议) + * [网际控制报文协议 ICMP](#网际控制报文协议-icmp) + * [分组网间探测 PING](#分组网间探测-ping) + * [IP 多播](#ip-多播) + * [虚拟专用网 VPN](#虚拟专用网-vpn) + * [网络地址转换 NAT](#网络地址转换-nat) +* [五、运输层*](#五运输层) + * [UDP 和 TCP 的特点](#udp-和-tcp-的特点) + * [UDP 首部格式](#udp-首部格式) + * [TCP 首部格式](#tcp-首部格式) + * [TCP 的三次握手](#tcp-的三次握手) + * [TCP 的四次挥手](#tcp-的四次挥手) + * [TCP 滑动窗口](#tcp-滑动窗口) + * [TCP 可靠传输](#tcp-可靠传输) + * [TCP 流量控制](#tcp-流量控制) + * [TCP 拥塞控制](#tcp-拥塞控制) +* [六、应用层*](#六应用层) + * [域名系统 DNS](#域名系统-dns) + * [文件传输协议 FTP](#文件传输协议-ftp) + * [远程终端协议 TELNET](#远程终端协议-telnet) + * [万维网 WWW](#万维网-www) + * [电子邮件协议](#电子邮件协议) + * [动态主机配置协议 DHCP](#动态主机配置协议-dhcp) + * [点对点传输 P2P](#点对点传输-p2p) + * [Web 页面请求过程](#web-页面请求过程) + * [常用端口](#常用端口) +* [参考资料](#参考资料) + + + +# 一、概述 + +## 网络的网络 + +网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。 + +

    + +## ISP + +互联网服务提供商 ISP 可以从互联网管理机构获得许多 IP 地址,同时拥有通信线路以及路由器等联网设备,个人或机构向 ISP 缴纳一定的费用就可以接入互联网。 + +目前的互联网是一种多层次 ISP 结构,ISP 根据覆盖面积的大小分为主干 ISP、地区 ISP 和本地 ISP。 + +互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。 + +

    + +## 互联网的组成 + +1. 边缘部分:所有连接在互联网上的主机,用户可以直接使用; + +2. 核心部分:由大量的网络和连接这些网络的路由器组成,为边缘部分的主机提供服务。 + +

    + +## 主机之间的通信方式 + +1. 客户-服务器(C/S):客户是服务的请求方,服务器是服务的提供方。 + +2. 对等(P2P):不区分客户和服务器。 + +## 电路交换与分组交换 + +

    + +### 1. 电路交换 + +电路交换用于电话通信系统,两个用户要通信之前需要建立一条专用的物理链路,并且在整个通信过程中始终占用该链路。由于通信的过程中不可能一直在使用传输线路,因此电路交换对线路的利用率很低,往往不到 10%。 + +### 2. 报文交换 + +报文交换用于邮局通信系统,邮局接收到一份报文之后,先存储下来,然后把相同目的地的报文一起转发到下一个目的地,这个过程就是存储转发过程。 + +### 3. 分组交换 + +分组交换也使用了存储转发,但是转发的是分组而不是报文。把整块数据称为一个报文,由于一个报文可能很长,需要先进行切分,来满足分组能处理的大小。在每个切分的数据前面加上首部之后就成为了分组,首部包含了目的地址和源地址等控制信息。 + +

    + +存储转发允许在一条传输线路上传送多个主机的分组,也就是说两个用户之间的通信不需要占用端到端的线路资源。 + +相比于报文交换,由于分组比报文更小,因此分组交换的存储转发速度更加快速。 + +## 时延 + +总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延 + +

    + +### 1. 发送时延 + +主机或路由器发送数据帧所需要的时间。 + +

    + +其中 l 表示数据帧的长度,v 表示发送速率。 + +### 2. 传播时延 + +电磁波在信道中传播一定的距离需要花费的时间,电磁波传播速度接近光速。 + +

    + +其中 l 表示信道长度,v 表示电磁波在信道上的传播速率。 + +### 3. 处理时延 + +主机或路由器收到分组时进行处理所需要的时间,例如分析首部、从分组中提取数据部、进行差错检验或查找适当的路由等。 + +### 4. 排队时延 + +分组在路由器的输入队列和输出队列中排队等待的时间,取决于网络当前的通信量。 + +## 计算机网络体系结构* + +

    + +### 1. 七层协议 + +如图 a 所示,其中表示层和会话层用途如下: + +1. 表示层:信息的语法、语义以及它们的关联,如加密解密、转换翻译、压缩解压缩; +2. 会话层:不同机器上的用户之间建立及管理会话。 + +### 2. 五层协议 + +1. 应用层:为特定应用程序提供数据传输服务,例如 HTTP、DNS 等。数据单位为报文。 + +2. 运输层:提供的是进程间的通用数据传输服务。由于应用层协议很多,定义通用的运输层协议就可以支持不断增多的应用层协议。运输层包括两种协议:传输控制协议 TCP,提供面向连接、可靠的数据传输服务,数据单位为报文段;用户数据报协议 UDP,提供无连接、尽最大努力的数据传输服务,数据单位为用户数据报。TCP 主要提供完整性服务,UDP 主要提供及时性服务。 + +3. 网络层:为主机之间提供数据传输服务,而运输层协议是为主机中的进程提供服务。网络层把运输层传递下来的报文段或者用户数据报封装成分组。 + +4. 数据链路层:网络层针对的还是主机之间的数据传输服务,而主机之间可以有很多链路,链路层协议就是为同一链路的结点提供服务。数据链路层把网络层传来的分组封装成帧。 + +5. 物理层:考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体。物理层的作用是尽可能屏蔽传输媒体和通信手段的差异,使数据链路层感觉不到这些差异。 + +### 3. 数据在各层之间的传递过程 + +在向下的过程中,需要添加下层协议所需要的首部或者尾部,而在向上的过程中不断拆开首部和尾部。 + +路由器只有下面三层协议,因为路由器位于网络核心中,不需要为进程或者应用程序提供服务,因此也就不需要运输层和应用层。 + +

    + +### 4. TCP/IP 体系结构 + +它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。 + +现在的 TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层。 + +

    + +TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中占用举足轻重的地位。 + +

    + +# 二、物理层 + +## 通信方式 + +1. 单向通信,又称为单工通信; +2. 双向交替通信,又称为半双工通信; +3. 双向同时通信,又称为全双工通信。 + +## 带通调制 + +模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。 + +

    + +## 信道复用技术 + +### 1. 频分复用、时分复用 + +频分复用的所有用户在相同的时间占用不同的频率带宽资源;时分复用的所有用户在不同的时间占用相同的频率带宽资源。 + +使用这两种方式进行通信,在通信的过程中用户会一直占用一部分信道资源。但是由于计算机数据的突发性质,没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。 + +

    + +### 2. 统计时分复用 + +是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。 + +

    + +### 3. 波分复用 + +光的频分复用。由于光的频率很高,因此习惯上用波长而不是频率来表示所使用的光载波。 + +

    + +### 4. 码分复用 + +为每个用户分配 m bit 的码片,并且所有的码片正交,对于任意两个码片 有 + +

    + +为了方便,取 m=8,设码片 为 00011011。在拥有该码片的用户发送比特 1 时就发送该码片,发送比特 0 时就发送该码片的反码 11100100。 + +在计算时将 00011011 记作 (-1 -1 -1 +1 +1 -1 +1 +1),可以得到 + +

    + +

    + +其中 的反码。 + +利用上面的式子我们知道,当接收端使用码片 对接收到的数据进行内积运算时,结果为 0 的是其它用户发送的数据,结果为 1 的是用户发送的比特 1,结果为 -1 的是用户发送的比特 0。 + +码分复用需要发送的数据量为原先的 m 倍。 + +

    + +# 三、数据链路层 + +## 三个基本问题 + +### 1. 封装成帧 + +将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。 + +

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

    + +### 3. 差错检测 + +目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。 + +## 点对点信道 - PPP 协议 + +互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议就是用户计算机和 ISP 进行通信时所使用的数据链路层协议。 + +

    + +在 PPP 的帧中 + +- F 字段为帧的定界符 +- A 和 C 字段暂时没有意义 +- FCS 字段是使用 CRC 的检验序列 +- 信息部分的长度不超过 1500 + +

    + +## 局域网的拓扑 + +

    + +## 广播信道- CSMA/CD 协议* + +在广播信道上,同一时间只能允许一台计算机发送数据。 + +CSMA/CD 表示载波监听多点接入 / 碰撞检测。 + +- **多点接入** :说明这是总线型网络,许多计算机以多点的方式连接到总线上。 + +- **载波监听** :每个站都必须不停地监听信道。在发送前,如果检听信道正在使用,就必须等待。 + +- **碰撞检测** :在发送中,如果监听 到信道已有其它站正在发送数据,就表示发生了碰撞。虽然每一个站在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。 + +

    + +记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 **争用期** 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。 + +当发生碰撞时,站点要停止发送,等待一段时间再发送。这个时间采用 **截断二进制指数退避算法** 来确定,从离散的整数集合 {0, 1, .., (2k-1)} 中随机取出一个数,记作 r,然后取 r 倍的争用期作为重传等待时间。 + +## 扩展局域网* + +### 1. 在物理层进行扩展 + +使用集线器进行扩展。 + +集线器的主要功能是对接收到的信号进行放大,以扩大网络的传输距离。 + +集线器不能根据 MAC 地址进行转发,而是以广播的方式发送数据帧。 + +集线器是一种共享式的传输设备,意味着同一时刻只能传输一组数据帧。 + +

    + +### 2. 在链路层进行扩展 + +最开始使用的是网桥,它收到一个帧时,根据帧的 MAC 地址,查找网桥中的地址表,确定将帧转发的接口。 + +网桥不是共享式设备,因此性能比集线器这种共享式设备更高。 + +交换机的问世很快就淘汰了网桥,它实质上是一个多接口网桥,而网桥是两接口。交换机的每个接口都能直接与一个主机或者另一个交换机相连,并且一般都工作在全双工方式。 + +交换机具有自学习能力,学习的是交换表的内容,交换表中存储着 MAC 地址到接口的映射。下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 收下之后,查找交换表得到主机 A 映射的接口为 1,因此就把帧发送给主机 A,同时交换机添加主机 B 到接口 3 的映射。 + +

    + +### 3. 虚拟局域网 + +虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息,例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。 + +

    + +## MAC 层* + +MAC 地址是 6 字节(48 位)的地址,用于唯一标识网络适配器(网卡),一台主机拥有多少个适配器就有多少个 MAC 地址,例如笔记本电脑普遍存在无线网络适配器和有线网络适配器。 + +

    + +- **类型** :标记上层使用的协议; + +- **数据** :长度在 46-1500 之间,如果太小则需要填充; + +- **FCS** :帧检验序列,使用的是 CRC 检验方法; + +- **前同步码** :只是为了计算 FCS 临时加入的,计算结束之后会丢弃。 + +# 四、网络层 * + +## 网际协议 IP 概述 + +因为网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务。 + +使用 IP 协议,可以把异构的物理网络连接起来,使得在网络层看起来好像是一个统一的网络。 + +

    + +与 IP 协议配套使用的还有三个协议: + +1. 地址解析协议 ARP(Address Resolution Protocol) +2. 网际控制报文协议 ICMP(Internet Control Message Protocol) +3. 网际组管理协议 IGMP(Internet Group Management Protocol) + +

    + +## IP 数据报格式 + +

    + +- **版本** : 有 4(IPv4)和 6(IPv6)两个值; + +- **首部长度** : 占 4 位,因此最大值为 15。值为 1 表示的是 1 个 32 位字的长度,也就是 4 字节。因为首部固定长度为 20 字节,因此该值最小为 5。如果可选部分的长度不是 4 字节的整数倍,就用尾部的填充部分来填充。 + +- **区分服务** : 用来获得更好的服务,一般情况下不使用。 + +- **总长度** : 包括首部长度和数据部分长度。 + +- **标识** : 在数据报长度过长从而发生分片的情况下,相同数据报的不同分片具有相同的标识符。 + +- **片偏移** : 和标识符一起,用于发生分片的情况。片偏移的单位为 8 字节。 + +

    + +- **生存时间** :TTL,它的存在是为了防止无法交付的数据报在互联网中不断兜圈子。以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。 + +- **协议** :指出携带的数据应该上交给哪个协议进行处理,例如 ICMP、TCP、UDP 等。 + +- **首部检验和** :因为数据报每经过一个路由器,都要重新计算检验和,因此检验和不包含数据部分可以减少计算的工作量。 + +## IP 地址编址 + +IP 地址的编址方式经历了三个历史阶段: + +1. 分类; +2. 子网划分; +3. 无分类。 + +### 1. 分类 + +由两部分组成,网络号和主机号,其中不同类别具有不同的网络号长度,并且是固定的。 + +IP 地址 ::= {< 网络号 >, < 主机号 >} + +

    + +### 2. 子网划分 + +通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址。注意,外部网络看不到子网的存在。 + +IP 地址 ::= {< 网络号 >, < 子网号 >, < 主机号 >} + +要使用子网,必须配置子网掩码。一个 B 类地址的默认子网掩码为 255.255.0.0,如果 B 类地址的子网占两个比特,那么子网掩码为 11111111 11111111 11000000 00000000,也就是 255.255.192.0。 + +### 3. 无分类 + +无分类编址 CIDR 消除了传统 A 类、B 类和 C 类地址以及划分子网的概念,使用网络前缀和主机号来对 IP 地址进行编码,网络前缀的长度可以根据需要变化。 + +IP 地址 ::= {< 网络前缀号 >, < 主机号 >} + +CIDR 的记法上采用在 IP 地址后面加上网络前缀长度的方法,例如 128.14.35.7/20 表示前 20 位为网络前缀。 + +CIDR 的地址掩码可以继续称为子网掩码,子网掩码首 1 长度为网络前缀的长度。 + +一个 CIDR 地址块中有很多地址,一个 CIDR 表示的网络就可以表示原来的很多个网络,并且在路由表中只需要一个路由就可以代替原来的多个路由,减少了路由表项的数量。把这种通过使用网络前缀来减少路由表项的方式称为路由聚合,也称为 **构成超网** 。 + +在路由表中的项目由“网络前缀”和“下一跳地址”组成,在查找时可能会得到不止一个匹配结果,应当采用最长前缀匹配来确定应该匹配哪一个。 + +## IP 地址和 MAC 地址 + +网络层实现主机之间的通信,而链路层实现具体每段链路之间的通信。因此在通信过程中,IP 数据报的源地址和目的地址始终不变,而 MAC 地址随着链路的改变而改变。 + +

    + +## 地址解析协议 ARP + +实现由 IP 地址得到 MAC 地址。 + +

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

    + +## 路由器的结构 + +路由器从功能上可以划分为两大部分:路由选择和分组转发。 + +分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口。 + +

    + +交换结构的交换网络有以下三种实现方式: + +

    + + +## 路由器分组转发流程 + +1. 从数据报的首部提取目的主机的 IP 地址 D,得到目的网络地址 N。(路由表项是网络号而不是 IP 地址,这样做大大减少了路由表条目数量); + +2. 若 N 就是与此路由器直接相连的某个网络地址,则进行直接交付; + +3. 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给表中所指明的下一跳路由器; + +4. 若路由表中有到达网络 N 的路由,则把数据报传送给路由表中所指明的下一跳路由器; + +5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器; + +6. 报告转发分组出错。 + +

    + +## 路由选择协议 + +互联网使用的路由选择协议都是自适应的,能随着网络通信量和拓扑结构的变化而自适应地进行调整。 + +互联网可以划分为许多较小的自治系统 AS,一个 AS 可以使用一种和别的 AS 不同的路由选择协议。 + +可以把路由选择协议划分为两大类: + +1. 内部网关协议 IGP(Interior Gateway Protocol):在 AS 内部使用,如 RIP 和 OSPF。 +2. 外部网关协议 EGP(External Gateway Protocol):在 AS 之间使用,如 BGP。 + +

    + +### 1. 内部网关协议 RIP + +RIP 是一种分布式的基于距离向量的路由选择协议。距离是指跳数,直接相连的路由器跳数为 1,跳数最多为 15,超过 15 表示不可达。 + +RIP 按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址。 + +距离向量算法: + +1. 对地址为 X 的相邻路由器发来的 RIP 报文,先修改报文中的所有项目,把下一跳字段中的地址改为 X,并把所有的距离字段加 1; +2. 对修改后的 RIP 报文中的每一个项目,进行以下步骤: + - 若原来的路由表中没有目的网络 N,则把该项目添加到路由表中; + - 否则:若下一跳路由器地址是 X,则把收到的项目替换原来路由表中的项目;否则:若收到的项目中的距离 d 小于路由表中的距离,则进行更新(例如原始路由表项为 Net2, 5, P,新表项为 Net2, 4, X,则更新);否则什么也不做。 +3. 若 3 分钟还没有收到相邻路由器的更新路由表,则把该相邻路由器标为不可达,即把距离置为 16。 + +RIP 协议实现简单,开销小,但是 RIP 能使用的最大距离为 15,限制了网络的规模。并且当网络出现故障时,要经过比较长的时间才能将此消息传送到所有路由器。 + +### 2. 内部网关协议 OSPF + +开放最短路径优先 OSPF,是为了克服 RIP 的缺点而开发出来的。 + +开放表示 OSPF 不受某一家厂商控制,而是公开发表的;最短路径优先表示使用了 Dijkstra 提出的最短路径算法 SPF。 + +OSPF 具有以下特点: + +- 向本自治系统中的所有路由器发送信息,这种方法是洪泛法。 +- 发送的信息就是与相邻路由器的链路状态,链路状态包括与哪些路由器相连以及链路的度量,度量用费用、距离、时延、带宽等来表示。 +- 只有当链路状态发生变化时,路由器才会发送信息。 + +所有路由器都具有全网的拓扑结构图,并且是一致的。相比于 RIP,OSPF 的更新过程收敛的很快。 + +### 3. 外部网关协议 BGP + +AS 之间的路由选择很困难,主要是互联网规模很大。并且各个 AS 内部使用不同的路由选择协议,就无法准确定义路径的度量。并且 AS 之间的路由选择必须考虑有关的策略,比如有些 AS 不愿意让其它 AS 经过。 + +BGP 只能寻找一条比较好的路由,而不是最佳路由。它采用路径向量路由选择协议。 + +每个 AS 都必须配置 BGP 发言人,通过在两个相邻 BGP 发言人之间建立 TCP 连接来交换路由信息。 + +

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

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

    + +## 分组网间探测 PING + +PING 是 ICMP 的一个重要应用,主要用来测试两台主机之间的连通性。 + +PING 的过程: + +1. PING 同一个网段的主机:查找目的主机的 MAC 地址,然后直接交付。如果无法查找到 MAC 地址,就要进行一次 ARP 请求。 +2. PING 不同网段的主机:发送到网关让其进行转发。同样要发送到网关也需要通过查找网关的 MAC 地址,根据 MAC 地址进行转发。 + +## IP 多播 + +在一对多的通信中,多播不需要将分组复制多份,从而大大节约网络资源。 + +

    + +## 虚拟专用网 VPN + +由于 IP 地址的紧缺,一个机构能申请到的 IP 地址数往往远小于本机构所拥有的主机数。并且一个机构并不需要把所有的主机接入到外部的互联网中,机构内的计算机可以使用仅在本机构有效的 IP 地址(专用地址)。 + +有三个专用地址块: + +1. 10.0.0.0 \~ 10.255.255.255 +2. 172.16.0.0 \~ 172.31.255.255 +3. 192.168.0.0 \~ 192.168.255.255 + +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 + +专用网内部的主机使用本地 IP 地址又想和互联网上的主机通信时,可以使用 NAT 来将本地 IP 转换为全球 IP。 + +在以前,NAT 将本地 IP 和全球 IP 一一对应,这种方式下拥有 n 个全球 IP 地址的专用网内最多只可以同时有 n 台主机接入互联网。为了更有效地利用全球 IP 地址,现在常用的 NAT 转换表把运输层的端口号也用上了,使得多个专用网内部的主机共用一个全球 IP 地址。使用端口号的 NAT 也叫做网络地址与端口转换 NAPT。 + +

    + +# 五、运输层* + +网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。 + +运输层提供了应用进程间的逻辑通信。运输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看见的好像在两个运输层实体之间有一条端到端的逻辑通信信道。 + +## UDP 和 TCP 的特点 + +- 用户数据包协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,没有拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部)。 + +- 传输控制协议 TCP(Transmission Control Protocol) 是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块) + +## UDP 首部格式 + +

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

    + +- **序号** :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。 + +- **确认号** :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。 + +- **数据偏移** :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。 + +- **确认 ACK** :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。 + +- **同步 SYN** :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。 + +- **终止 FIN** :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放运输连接。 + +- **窗口** :窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。 + +## TCP 的三次握手 + +

    + +假设 A 为客户端,B 为服务器端。 + +1. 首先 B 处于 LISTEN(监听)状态,等待客户的连接请求。 + +2. A 向 B 发送连接请求报文段,SYN=1,ACK=0,选择一个初始的序号 x。 + +3. B 收到连接请求报文段,如果同意建立连接,则向 A 发送连接确认报文段,SYN=1,ACK=1,确认号为 x+1,同时也选择一个初始的序号 y。 + +4. A 收到 B 的连接确认报文段后,还要向 B 发出确认,确认号为 y+1,序号为 x+1。 +5. B 收到 A 的确认后,连接建立。 + + +## TCP 的四次挥手 + +

    + +以下描述不讨论序号和确认号,因为序号和确认号的规则比较简单。并且不讨论 ACK,因为 ACK 在连接建立之后都为 1。 + +1. A 发送连接释放报文段,FIN=1; + +2. B 收到之后发出确认,此时 TCP 属于半关闭状态,B 能向 A 发送数据但是 A 不能向 B 发送数据; + +3. 当 B 要不再需要连接时,发送连接释放请求报文段,FIN=1; + +4. A 收到后发出确认,此时连接释放。 + +### TIME_WAIT + +客户端接收到服务器端的 FIN 报文后进入此状态,此时并不是直接进入 CLOSED 状态,还需要等待一个时间计时器设置的时间。这么做有两个理由: + +1. 确保最后一个确认报文段能够到达。如果 B 没收到 A 发送来的确认报文段,那么就会重新发送连接释放请求报文段,A 等待一段时间就是为了处理这种情况的发生。 + +2. 可能存在“已失效的连接请求报文段”,为了防止这种报文段出现在本次连接之外,需要等待一段时间。 + +## TCP 滑动窗口 + +

    + +窗口是缓存的一部分,用来暂时存放字节流。发送方和接收方各有一个窗口,接收方通过 TCP 报文段中的窗口字段告诉发送方自己的窗口大小,发送方根据这个值和其它信息设置自己的窗口大小。 + +发送窗口内的字节都允许被发送,接收窗口内的字节都允许被接收。如果发送窗口左部的字节已经发送并且收到了确认,那么就将发送窗口向右滑动一定距离,直到左部第一个字节不是已发送并且已确认的状态;接收窗口的滑动类似,接收窗口左部字节已经发送确认并交付主机,就向右滑动接收窗口。 + +接收窗口只会对窗口内最后一个按序到达的字节进行确认,例如接收窗口已经收到的字节为 {31, 32, 34, 35},其中 {31, 32} 按序到达,而 {34, 35} 就不是,因此只对字节 32 进行确认。发送方得到一个字节的确认之后,就知道这个字节之前的所有字节都已经被接收。 + +## TCP 可靠传输 + +TCP 使用超时重传来实现可靠传输:如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。 + +一个报文段从发送再到接收到确认所经过的时间称为往返时间 RTT,加权平均往返时间 RTTs 计算如下: + +

    + +超时时间 RTO 应该略大于 RTTs,TCP 使用的超时时间计算如下: + +

    + +其中 RTTd 为偏差。 + +## TCP 流量控制 + +流量控制是为了控制发送方发送速率,保证接收方来得及接收。 + +接收方发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。例如将窗口字段设置为 0,则发送方不能发送数据。 + +## TCP 拥塞控制 + +如果网络出现拥塞,分组将会丢失,此时发送方会继续重传,从而导致网络拥塞程度更高。因此当出现拥塞时,应当控制发送方的速率。这一点和流量控制很像,但是出发点不同。流量控制是为了让接收方能来得及接受,而拥塞控制是为了降低整个网络的拥塞程度。 + +

    + +TCP 主要通过四种算法来进行拥塞控制:慢开始、拥塞避免、快重传、快恢复。发送方需要维护有一个叫做拥塞窗口(cwnd)的状态变量。注意拥塞窗口与发送方窗口的区别,拥塞窗口只是一个状态变量,实际决定发送方能发送多少数据的是发送方窗口。 + +为了便于讨论,做如下假设: + +1. 接收方有足够大的接收缓存,因此不会发生流量控制; +2. 虽然 TCP 的窗口基于字节,但是这里设窗口的大小单位为报文段。 + +

    + +### 1. 慢开始与拥塞避免 + +发送的最初执行慢开始,令 cwnd=1,发送方只能发送 1 个报文段;当收到确认后,将 cwnd 加倍,因此之后发送方能够发送的报文段为:2、4、8 ... + +注意到慢开始每个轮次都将 cwnd 加倍,这样会让 cwnd 增长速度非常快,从而使得发送方发送的速度增长速度过快,网络拥塞的可能也就更高。设置一个慢开始门限 ssthresh,当 cwnd >= ssthresh 时,进入拥塞避免,每个轮次只将 cwnd 加 1。 + +如果出现了超时,则令 ssthresh = cwnd / 2,然后重新执行慢开始。 + +### 2. 快重传与快恢复 + +在接收方,要求每次接收到报文段都应该发送对已收到有序报文段的确认,例如已经接收到 M1 和 M2,此时收到 M4,应当发送对 M2 的确认。 + +在发送方,如果收到三个重复确认,那么可以确认下一个报文段丢失,例如收到三个 M2 ,则 M3 丢失。此时执行快重传,立即重传下一个报文段。 + +在这种情况下,只是丢失个别报文段,而不是网络拥塞,因此执行快恢复,令 ssthresh = cwnd / 2 ,cwnd = ssthresh,注意到此时直接进入拥塞避免。 + +

    + +# 六、应用层* + +## 域名系统 DNS + +把主机名解析为 IP 地址。 + +被设计成分布式系统。 + +### 1. 层次结构 + +一个域名由多个层次构成,从上层到下层分别为顶级域名、二级域名、三级域名以及四级域名。所有域名可以画成一颗域名树。 + +

    + +

    + +域名服务器可以分为以下四类: + +1. 根域名服务器:解析顶级域名; +2. 顶级域名服务器:解析二级域名; +3. 权限域名服务器:解析区内的域名; +4. 本地域名服务器:也称为默认域名服务器。可以在其中配置高速缓存。 + +区和域的概念不同,可以在一个域中划分多个区。图 b 在域 abc.com 中划分了两个区:abc.com 和 y.abc.com + +

    + +因此就需要两个权限域名服务器: + +

    + +### 2. 解析过程 + +主机向本地域名服务器解析的过程采用递归,而本地域名服务器向其它域名服务器解析可以使用递归和迭代两种方式。 + +迭代的方式下,本地域名服务器向一个域名服务器解析请求解析之后,结果返回到本地域名服务器,然后本地域名服务器继续向其它域名服务器请求解析;而递归地方式下,结果不是直接返回的,而是继续向前请求解析,最后的结果才会返回。 + +

    + +## 文件传输协议 FTP + +FTP 在运输层使用 TCP,并且需要建立两个并行的 TCP 连接:控制连接和数据连接。控制连接在整个会话期间一直保持打开,而数据连接在数据传送完毕之后就关闭。控制连接使用端口号 21,数据连接使用端口号 20。 + +

    + +## 远程终端协议 TELNET + +TELNET 用于登录到远程主机上,并且远程主机上的输出也会返回。 + +TELNET 可以适应许多计算机和操作系统的差异,例如不同操作系统系统的换行符定义。 + +## 万维网 WWW + +[HTTP](https://github.com/CyC2018/InterviewNotes/blob/master/notes/HTTP.md) + +## 电子邮件协议 + +一个电子邮件系统由三部分组成:用户代理、邮件服务器以及邮件发送协议和读取协议。其中发送协议常用 SMTP,读取协议常用 POP3 和 IMAP。 + +

    + +### 1. POP3 + +POP3 的特点是只要用户从服务器上读取了邮件,就把该邮件删除。 + +### 2. IMAP + +IMAP 协议中客户端和服务器上的邮件保持同步,如果不去手动删除邮件,那么服务器上的邮件也不会被删除。IMAP 这种做法可以让用户随时随地去访问服务器上的邮件。IMAP 协议也支持创建自定义的文件夹。 + +### 3. SMTP + +SMTP 只能发送 ASCII 码,而互联网邮件扩充 MIME 可以发送二进制文件。MIME 并没有改动或者取代 SMTP,而是增加邮件主题的结构,定义了非 ASCII 码的编码规则。 + +

    + +## 动态主机配置协议 DHCP + +DHCP 提供了即插即用的连网方式,用户不再需要去手动配置 IP 地址等信息。 + +DHCP 配置的内容不仅是 IP 地址,还包括子网掩码、默认路由器 IP 地址、域名服务器的 IP 地址。 + +工作方式如下:需要 IP 地址的主机广播发送 DHCP 发现报文(将目的地址置为全 1,即 255.255.255.255:67,源地址设置为全 0,即 0.0.0.0:68),DHCP 服务器收到发现报文之后,则在 IP 地址池中取一个地址,发送 DHCP 提供报文给该主机。 + +## 点对点传输 P2P + +把某个文件分发的所有对等集合称为一个洪流。文件的数据单元称为文件块,它的大小是固定的。一个新的对等方加入某个洪流,一开始并没有文件块,但是能够从其它对等方中逐渐地下载到一些文件块,与此同时,它也为别的对等方上传一些文件块。 + +每个洪流都有一个基础设施,称为追踪器。当一个对等方加入洪流时,必须向追踪器登记,并周期性地通知追踪器它仍在洪流中。可以在任何时间加入和退出某个洪流。 + +一个新的对等方加入洪流时,追踪器会随机从洪流中选择若干个对等方,并让新对等方与这些对等方建立连接,把这些对等方称为相邻对等方。接收和发送文件块都是在相邻对等方中进行。 + +当一个对等方需要很多文件块时,通过使用最稀有优先的策略来取得文件块,也就是一个文件块在相邻对等方中副本最少,那么就优先请求这个文件块。 + +当很多对等方向同一个对等方请求文件块时,该对等方优先选择以最高速率向其发送文件块的对等方。 + +P2P 是一个分布式系统,任何时候都有对等方加入或者退出。使用分布式散列表 DHT,可以查找洪流中的资源和 IP 地址映射。 + +## Web 页面请求过程 + +### 1. DHCP 配置主机信息 + +1. 假设主机最开始没有 IP 地址以及其它信息,那么就需要先使用 DHCP 来获取。 + +2. 主机生成一个 DHCP 请求报文,并将这个报文放入具有目的端口 67 和源端口 68 的 UDP 报文段中。 + +3. 该报文段则被放入在一个具有广播 IP 目的地址(255.255.255.255) 和源 IP 地址(0.0.0.0)的 IP 数据报中。 + +4. 该数据报则被放置在 MAC 帧中,该帧具有目的地址 FF:FF:FF:FF:FF:FF,将广播到与交换机连接的所有设备。 + +5. 连接在交换机的 DHCP 服务器收到广播帧之后,不断地向上分解得到 IP 数据报、UDP 报文段、DHCP 请求报文,之后生成 DHCP ACK 报文,该报文包含以下信息:IP 地址、DNS 服务器的 IP 地址、默认网关路由器的 IP 地址和子网掩码。该报文被放入 UDP 报文段中,UDP 报文段有被放入 IP 数据报中,最后放入 MAC 帧中。 + +8. 该帧的目的地址是请求主机的 MAC 地址,因为交换机具有自学习能力,之前主机发送了广播帧之后就记录了 MAC 地址到其转发接口的交换表项,因此现在交换机就可以直接知道应该向哪个接口发送该帧。 + +9. 主机收到该帧后,不断分解得到 DHCP 报文。之后就配置它的 IP 地址、子网掩码和 DNS 服务器的 IP 地址,并在其 IP 转发表中安装默认网关。 + +### 2. ARP 解析 MAC 地址 + +1. 主机通过浏览器生成一个 TCP 套接字,套接字向 HTTP 服务器发送 HTTP 请求。为了生成该套接字,主机需要知道网站的域名对应的 IP 地址。 + +2. 主机生成一个 DNS 查询报文,该报文具有 53 号端口,因为 DNS 服务器的端口号是 53。 + +3. 该 DNS 查询报文被放入目的地址为 DNS 服务器 IP 地址的 IP 数据报中。 + +4. 该 IP 数据报被放入一个以太网帧中,该帧将发送到网关路由器。 + +5. DHCP 过程只知道网关路由器的 IP 地址,为了获取网关路由器的 MAC 地址,需要使用 ARP 协议。 + +6. 主机生成一个包含目的地址为网关路由器 IP 地址的 ARP 查询报文,将该 ARP 查询报文放入一个具有广播目的地址(FF:FF:FF:FF:FF:FF)的以太网帧中,并向交换机发送该以太网帧,交换机将该帧转发给所有的连接设备,包括网关路由器。 + +7. 网关路由器接收到该帧后,不断向上分解得到 ARP 报文,发现其中的 IP 地址与其接口的 IP 地址匹配,因此就发送一个 ARP 回答报文,包含了它的 MAC 地址,发回给主机。 + +### 3. DNS 解析域名 + +1. 知道了网关路由器的 MAC 地址之后,就可以继续 DNS 的解析过程了。 + +2. 网关路由器接收到包含 DNS 查询报文的以太网帧后,抽取出 IP 数据报,并根据转发表决定该 IP 数据报应该转发的路由器。 + +3. 因为路由器具有内部网关协议(RIP、OSPF)和外部网关协议(BGP)这两种路由选择协议,因此路由表中已经配置了网关路由器到达 DNS 服务器的路由表项。 + +4. 到达 DNS 服务器之后,DNS 服务器抽取出 DNS 查询报文,并在 DNS 数据库中查找待解析的域名。 + +5. 找到 DNS 记录之后,发送 DNS 回答报文,将该回答报文放入 UDP 报文段中,然后放入 IP 数据报中,通过路由器反向转发回网关路由器,并经过以太网交换机到达主机。 + +### 4. HTTP 请求页面 + +1. 有了 HTTP 服务器的 IP 地址之后,主机就能够生成 TCP 套接字,该套接字将用于向 Web 服务器发送 HTTP GET 报文。 + +2. 在生成 TCP 套接字之前,必须先与 HTTP 服务器进行三次握手来建立连接。生成一个具有目的端口 80 的 TCP SYN 报文段,并向 HTTP 服务器发送该报文段。 + +3. HTTP 服务器收到该报文段之后,生成 TCP SYNACK 报文段,发回给主机。 + +4. 连接建立之后,浏览器生成 HTTP GET 报文,并交付给 HTTP 服务器。 + +5. HTTP 服务器从 TCP 套接字读取 HTTP GET 报文,生成一个 HTTP 响应报文,将 Web 页面内容放入报文主体中,发回给主机。 + +6. 浏览器收到 HTTP 响应报文后,抽取出 Web 页面内容,之后进行渲染,显示 Web 页面。 + +## 常用端口 + +| 应用层协议 | 端口号 | 运输层协议 | +| -- | -- | -- | +| DNS | 53 | UDP | +| FTP | 控制连接 21,数据连接 20 | TCP | +| TELNET | 23 | TCP | +| DHCP | 67 68 | UDP | +| HTTP | 80 | TCP | +| SMTP | 25 | TCP | +| POP3 | 110 | TCP | +| IMAP | 143 | TCP | + +# 参考资料 + +- 计算机网络 第七版 +- 计算机网络 自顶向下方法 diff --git a/notes/设计模式.md b/notes/设计模式.md new file mode 100644 index 00000000..13815198 --- /dev/null +++ b/notes/设计模式.md @@ -0,0 +1,1800 @@ + +* [一、前言](#一前言) +* [二、设计模式概念](#二设计模式概念) +* [三、策略模式](#三策略模式) +* [三、观察者模式](#三观察者模式) +* [四、装饰模式](#四装饰模式) +* [五、简单工厂](#五简单工厂) +* [六、工厂方法模式](#六工厂方法模式) +* [七、抽象工厂模式](#七抽象工厂模式) +* [八、单例模式](#八单例模式) +* [九、命令模式](#九命令模式) +* [十、适配器模式](#十适配器模式) +* [十、外观模式](#十外观模式) +* [十一、模板方法模式](#十一模板方法模式) +* [十二、迭代器模式](#十二迭代器模式) +* [十三、组合模式](#十三组合模式) +* [十四、状态模式](#十四状态模式) +* [十五、代理模式](#十五代理模式) +* [十六、MVC](#十六mvc) +* [十七、与设计模式相处](#十七与设计模式相处) + + + +# 一、前言 + +文中涉及一些 UML 类图,为了更好地理解,可以先阅读 [UML 类图](https://github.com/CyC2018/Interview-Notebook/blob/master/notes/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E6%80%9D%E6%83%B3.md#%E7%AC%AC%E4%B8%89%E7%AB%A0-uml)。 + +需要说明的一点是,文中的 UML 类图和规范的 UML 类图不大相同,其中组合关系使用以下箭头表示: + +

    + +# 二、设计模式概念 + +设计模式不是代码,而是解决问题的方案,学习现有的设计模式可以做到经验复用。 + +拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。 + +# 三、策略模式 + +## 模式定义 + +定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。 + +## 问题描述 + +设计不同种类的鸭子拥有不同的叫声和飞行方式。 + +## 简单实现方案 + +使用继承的解决方案如下,这种方案代码无法复用,如果两个鸭子类拥有同样的飞行方式,就有两份重复的代码。 + +

    + +## 设计原则 + +**封装变化** :在这里变化的是鸭子叫和飞行的行为方式。 + +**针对接口编程,而不是针对实现编程** :变量声明的类型为父类,而不是具体的某个子类。父类中的方法实现不在父类,而是在各个子类。程序在运行时可以动态改变变量所指向的子类类型。 + +运用这一原则,将叫和飞行的行为抽象出来,实现多种不同的叫和飞行的子类,让子类去实现具体的叫和飞行方式。 + +

    + +**多用组合,少用继承** :组合也就是 HAS-A 关系,通过组合,可以在运行时动态改变实现,只要通过改变父类对象具体指向哪个子类即可。而继承就不能做到这些,继承体系在创建类时就已经确定。 + +运用这一原则,在 Duck 类中组合 FlyBehavior 和 QuackBehavior 类,performQuack() 和 performFly() 方法委托给这两个类去处理。通过这种方式,一个 Duck 子类可以根据需要去初始化 FlyBehavior 和 QuackBehavior 的子类对象,并且也可以动态地进行改变。 + +

    + +## 问题的解决方案类图 + +(可放大网页查看) + +

    + +## 代码实现 + +```java +public abstract class Duck { + FlyBehavior flyBehavior; + QuackBehavior quackBehavior; + + public Duck(){ + } + + public void performFly(){ + flyBehavior.fly(); + } + + public void setFlyBehavior(FlyBehavior fb){ + flyBehavior = fb; + } + + public void performQuack(){ + quackBehavior.quack(); + } + + public void setQuackBehavior(QuackBehavior qb){ + quackBehavior = qb; + } +} +``` +```java +public class MallardDuck extends Duck{ + public MallardDuck(){ + flyBehavior = new FlyWithWings(); + quackBehavior = new Quack(); + } +} +``` +```java +public interface FlyBehavior { + void fly(); +} +``` +```java +public class FlyNoWay implements FlyBehavior{ + @Override + public void fly() { + System.out.println("FlyBehavior.FlyNoWay"); + } +} +``` +```java +public class FlyWithWings implements FlyBehavior{ + @Override + public void fly() { + System.out.println("FlyBehavior.FlyWithWings"); + } +} +``` +```java +public interface QuackBehavior { + void quack(); +} +``` +```java +public class Quack implements QuackBehavior{ + @Override + public void quack() { + System.out.println("QuackBehavior.Quack"); + } +} +``` +```java +public class MuteQuack implements QuackBehavior{ + @Override + public void quack() { + System.out.println("QuackBehavior.MuteQuack"); + } +} +``` +```java +public class Squeak implements QuackBehavior{ + @Override + public void quack() { + System.out.println("QuackBehavior.Squeak"); + } +} +``` +```java +public class MiniDuckSimulator { + public static void main(String[] args) { + Duck mallardDuck = new MallardDuck(); + mallardDuck.performQuack(); + mallardDuck.performFly(); + mallardDuck.setFlyBehavior(new FlyNoWay()); + mallardDuck.performFly(); + } +} +``` +执行结果 +```html +QuackBehavior.Quack +FlyBehavior.FlyWithWings +FlyBehavior.FlyNoWay +``` + +# 三、观察者模式 + +## 模式定义 + +定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 + +

    + +## 模式类图 + +主题具有注册和移除观察者、并通知所有注册者的功能,主题是通过维护一张观察者列表来实现这些操作的。 + +观察者拥有一个主题对象的引用,因为注册、移除观察者功能,还有数据都在主题当中,必须通过操作主题才能完成相应操作。 + +

    + +## 问题描述 + +天气数据布告板会在天气信息发生改变时更新其内容,布告板有多个,并且在将来会继续增加。 + +## 问题的解决方案类图 + +

    + +## 设计原则 + +为交互对象之间的松耦合设计而努力:当两个对象之间松耦合,它们依然可以交互,但是不清楚彼此的细节。由于松耦合的两个对象之间互相依赖程度很低,因此系统具有弹性,能够应对变化。 + +## 代码实现 + +```java +public interface Subject { + public void resisterObserver(Observer o); + public void removeObserver(Observer o); + public void notifyObserver(); +} +``` +```java + +public class WeatherData implements Subject { + private List observers; + private float temperature; + private float humidity; + private float pressure; + + public WeatherData() { + observers = new ArrayList<>(); + } + + @Override + public void resisterObserver(Observer o) { + observers.add(o); + } + + @Override + public void removeObserver(Observer o) { + int i = observers.indexOf(o); + if (i >= 0) { + observers.remove(i); + } + } + + @Override + public void notifyObserver() { + for (Observer o : observers) { + o.update(temperature, humidity, pressure); + } + } + + public void setMeasurements(float temperature, float humidity, float pressure) { + this.temperature = temperature; + this.humidity = humidity; + this.pressure = pressure; + notifyObserver(); + } +} +``` +```java +public interface Observer { + public void update(float temp, float humidity, float pressure); +} +``` +```java +public class CurrentConditionsDisplay implements Observer { + private Subject weatherData; + + public CurrentConditionsDisplay(Subject weatherData) { + this.weatherData = weatherData; + weatherData.resisterObserver(this); + } + + @Override + public void update(float temp, float humidity, float pressure) { + System.out.println("CurrentConditionsDisplay.update:" + temp + " " + humidity + " " + pressure); + } +} +``` +```java +public class StatisticsDisplay implements Observer { + private Subject weatherData; + + public StatisticsDisplay(Subject weatherData) { + this.weatherData = weatherData; + weatherData.resisterObserver(this); + } + + @Override + public void update(float temp, float humidity, float pressure) { + System.out.println("StatisticsDisplay.update:" + temp + " " + humidity + " " + pressure); + } +} +``` +```java +public class WeatherStation { + public static void main(String[] args) { + WeatherData weatherData = new WeatherData(); + CurrentConditionsDisplay currentConditionsDisplay = new CurrentConditionsDisplay(weatherData); + StatisticsDisplay statisticsDisplay = new StatisticsDisplay(weatherData); + + weatherData.setMeasurements(0, 0, 0); + weatherData.setMeasurements(1, 1, 1); + } +} +``` +执行结果 +```html +CurrentConditionsDisplay.update:0.0 0.0 0.0 +StatisticsDisplay.update:0.0 0.0 0.0 +CurrentConditionsDisplay.update:1.0 1.0 1.0 +StatisticsDisplay.update:1.0 1.0 1.0 +``` + +# 四、装饰模式 + +## 问题描述 + +设计不同种类的饮料,饮料可以添加配料,比如可以添加牛奶,并且支持动态添加新配料。每增加一种配料,该饮料的价格就会增加,要求计算一种饮料的价格。 + +## 模式定义 + +动态地将责任附加到对象上。在扩展功能上,装饰者提供了比继承更有弹性的替代方案。 + +下图表示在 DarkRoast 饮料上新增新添加 Mocha 配料,之后又添加了 Whip 配料。DarkRoast 被 Mocha 包裹,Mocha 又被 Whip 包裹。它们都继承自相同父类,都有 cost() 方法,外层类的 cost() 方法调用了内层类的 cost() 方法。 + +

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

    + +## 问题的解决方案类图 + +

    + +## 设计原则 + +类应该对扩展开放,对修改关闭:也就是添加新功能时不需要修改代码。在本章问题中该原则体现在,饮料可以动态添加新的配料,而不需要去修改饮料的代码。观察则模式也符合这个原则。不可能把所有的类设计成都满足这一原则,应当把该原则应用于最有可能发生改变的地方。 + +## Java I/O 中的装饰者模式 + +

    + +## 代码实现 + +```java +public interface Beverage { + public double cost(); +} +``` +```java +public class HouseBlend implements Beverage{ + @Override + public double cost() { + return 1; + } +} +``` +```java +public class DarkRoast implements Beverage{ + @Override + public double cost() { + return 1; + } +} +``` +```java +public abstract class CondimentDecorator implements Beverage{ + protected Beverage beverage; +} +``` +```java +public class Mocha extends CondimentDecorator { + + public Mocha(Beverage beverage) { + this.beverage = beverage; + } + + @Override + public double cost() { + return 1 + beverage.cost(); + } +} +``` +```java +public class Milk extends CondimentDecorator { + + public Milk(Beverage beverage) { + this.beverage = beverage; + } + + @Override + public double cost() { + return 1 + beverage.cost(); + } +} +``` +```java +public class StartbuzzCoffee { + public static void main(String[] args) { + Beverage beverage = new HouseBlend(); + beverage = new Mocha(beverage); + beverage = new Milk(beverage); + System.out.println(beverage.cost()); + } +} +``` + +输出 + +```html +3.0 +``` + +# 五、简单工厂 + +## 问题描述 + +Pizza 类有很多子类,要求根据不同的情况用不同的子类实例化一个 Pizza 对象。 + +## 模式定义 + +简单工厂不是设计模式,更像是一种编程习惯。它把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个子类来实例化。 + +这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。因为客户类往往有多个,如果不使用简单工厂,所有的客户类都要知道所有子类的细节。而且一旦子类发生改变,例如增加子类,那么所有的客户类都要进行修改。 + +

    + +## 问题的解决方案类图 + +

    + +## 代码实现 + +```java +public interface Pizza { + public void make(); +} +``` + +```java +public class CheesePizza implements Pizza{ + @Override + public void make() { + System.out.println("CheesePizza"); + } +} +``` + +```java +public class GreekPizza implements Pizza{ + @Override + public void make() { + System.out.println("GreekPizza"); + } +} +``` + +```java +public class SimplePizzaFactory { + public Pizza createPizza(String type) { + if (type.equals("cheese")) { + return new CheesePizza(); + } else if (type.equals("greek")) { + return new GreekPizza(); + } else { + throw new UnsupportedOperationException(); + } + } +} +``` + +```java +public class PizzaStore { + public static void main(String[] args) { + SimplePizzaFactory simplePizzaFactory = new SimplePizzaFactory(); + Pizza pizza = simplePizzaFactory.createPizza("cheese"); + pizza.make(); + } +} +``` + +运行结果 + +```java +CheesePizza +``` + +# 六、工厂方法模式 + +## 问题描述 + +每个地区的 PizzaStore 卖的 Pizza 虽然种类相同,但是都有自己的风味。一个客户点了纽约的 cheese 种类的 Pizza 和在芝加哥点的相同种类的 Pizza 是不同的。要求设计出满足条件的 PizzaStore。 + +## 模式定义 + +定义了一个创建对象的接口,但由子类决定要实例化哪个类。工厂方法把实例化推迟到子类。 + +## 模式类图 + +在简单工厂中,创建对象的是另一个类,而在工厂方法中,是由子类来创建对象。 + +下图中,Creator 有一个 anOperation() 方法,这个方法需要用到一组产品对象,这组产品对象由 factoryMethod() 方法创建。该方法是抽象的,需要由子类去实现。 + +

    + +## 问题的解决方案类图 + +PizzaStore 有 orderPizza() 方法,顾客可以用它来下单。下单之后需要先使用 createPizza() 来制作 Pizza,这里的 createPizza() 就是 factoryMethod(),不同的 PizzaStore 子类实现了不同的 createPizza()。 + +

    + +## 设计原则 + +依赖倒置原则:要依赖抽象,不要依赖具体类。听起来像是针对接口编程,不针对实现编程,但是这个原则说明了:不能让高层组件依赖底层组件,而且,不管高层或底层组件,两者都应该依赖于抽象。例如,下图中 Pizza 是抽象类,PizzaStore 和 Pizza 子类都依赖于 Pizza 这个抽象类。 + +

    + +## 代码实现 + +```java +public interface Pizza { + public void make(); +} +``` +```java +public interface PizzaStore { + public Pizza orderPizza(String item); +} +``` +```java +public class NYStyleCheesePizza implements Pizza{ + @Override + public void make() { + System.out.println("NYStyleCheesePizza is making.."); + } +} +``` +```java +public class NYStyleVeggiePizza implements Pizza { + @Override + public void make() { + System.out.println("NYStyleVeggiePizza is making.."); + } +} +``` +```java +public class ChicagoStyleCheesePizza implements Pizza{ + @Override + public void make() { + System.out.println("ChicagoStyleCheesePizza is making.."); + } +} +``` +```java +public class ChicagoStyleVeggiePizza implements Pizza{ + @Override + public void make() { + System.out.println("ChicagoStyleVeggiePizza is making.."); + } +} +``` +```java +public class NYPizzaStore implements PizzaStore { + @Override + public Pizza orderPizza(String item) { + Pizza pizza = null; + if (item.equals("cheese")) { + pizza = new NYStyleCheesePizza(); + } else if (item.equals("veggie")) { + pizza = new NYStyleVeggiePizza(); + } else { + throw new UnsupportedOperationException(); + } + pizza.make(); + return pizza; + } +} +``` +```java +public class ChicagoPizzaStore implements PizzaStore { + @Override + public Pizza orderPizza(String item) { + Pizza pizza = null; + if (item.equals("cheese")) { + pizza = new ChicagoStyleCheesePizza(); + } else if (item.equals("veggie")) { + pizza = new ChicagoStyleVeggiePizza(); + } else { + throw new UnsupportedOperationException(); + } + pizza.make(); + return pizza; + } +} +``` +```java +public class PizzaTestDrive { + public static void main(String[] args) { + PizzaStore nyStore = new NYPizzaStore(); + nyStore.orderPizza("cheese"); + PizzaStore chicagoStore = new ChicagoPizzaStore(); + chicagoStore.orderPizza("cheese"); + } +} +``` + +运行结果 + +```html +NYStyleCheesePizza is making.. +ChicagoStyleCheesePizza is making.. +``` + +# 七、抽象工厂模式 + +## 模式定义 + +提供一个接口,用于创建 **相关的对象家族** 。 + +## 模式类图 + +抽象工厂模式创建的是对象家族,也就是很多对象而不是一个对象,并且这些对象是相关的,也就是说必须一起创建出来。而工厂模式只是用于创建一个对象,这和抽象工厂模式有很大不同。 + +抽象工厂模式用到了工厂模式来创建单一对象,在类图左部,AbstractFactory 中的 CreateProductA 和 CreateProductB 方法都是让子类来实现,这两个方法单独来看就是在创建一个对象,这符合工厂模式的定义。 + +至于创建对象的家族这一概念是在 Client 体现,Client 要通过 AbstractFactory 同时调用两个方法来创建出两个对象,在这里这两个对象就有很大的相关性,Client 需要同时创建出这两个对象。 + +从高层次来看,抽象工厂使用了组合,即 Cilent 组合了 AbstractFactory,而工厂模式使用了继承。 + +

    + +## 解决方案类图 + +

    + +## 代码实现 + +```java +public interface Dough { + public String doughType(); +} +``` +```java +public class ThickCrustDough implements Dough{ + + @Override + public String doughType() { + return "ThickCrustDough"; + } +} +``` +```java +public class ThinCrustDough implements Dough { + @Override + public String doughType() { + return "ThinCrustDough"; + } +} +``` +```java +public interface Sauce { + public String sauceType(); +} +``` +```java +public class MarinaraSauce implements Sauce { + @Override + public String sauceType() { + return "MarinaraSauce"; + } +} +``` +```java +public class PlumTomatoSauce implements Sauce { + @Override + public String sauceType() { + return "PlumTomatoSauce"; + } +} +``` +```java +public interface PizzaIngredientFactory { + public Dough createDough(); + public Sauce createSauce(); +} +``` +```java +public class NYPizzaIngredientFactory implements PizzaIngredientFactory{ + @Override + public Dough createDough() { + return new ThickCrustDough(); + } + + @Override + public Sauce createSauce() { + return new MarinaraSauce(); + } +} +``` +```java +public class ChicagoPizzaIngredientFactory implements PizzaIngredientFactory{ + @Override + public Dough createDough() { + return new ThinCrustDough(); + } + + @Override + public Sauce createSauce() { + return new PlumTomatoSauce(); + } +} +``` +```java +public class NYPizzaStore { + private PizzaIngredientFactory ingredientFactory; + + public NYPizzaStore() { + ingredientFactory = new NYPizzaIngredientFactory(); + } + + public void makePizza() { + Dough dough = ingredientFactory.createDough(); + Sauce sauce = ingredientFactory.createSauce(); + System.out.println(dough.doughType()); + System.out.println(sauce.sauceType()); + } +} +``` +```java +public class NYPizzaStoreTestDrive { + public static void main(String[] args) { + NYPizzaStore nyPizzaStore = new NYPizzaStore(); + nyPizzaStore.makePizza(); + } +} +``` + +运行结果 + +```html +ThickCrustDough +MarinaraSauce +``` + +# 八、单例模式 + +## 模式定义 + +确保一个类只有一个实例,并提供了一个全局访问点。 + +## 模式类图 + +使用一个私有构造器、一个私有静态变量以及一个公有静态函数来实现。 + +私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 + +

    + +## 懒汉式-线程不安全 + +以下实现中,私有静态变量 uniqueInstance 被延迟化实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance,从而节约资源。 + +这个实现在多线程环境下是不安全的,如果多个线程能够同时进入`if(uniqueInstance == null)` ,那么就会多次实例化 uniqueInstance。 + +```java +public class Singleton { + + private static Singleton uniqueInstance; + + private Singleton() { + } + + public static Singleton getUniqueInstance() { + if (uniqueInstance == null) { + uniqueInstance = new Singleton(); + } + return uniqueInstance; + } +} +``` + +## 懒汉式-线程安全 + +只需要对 `getUniqueInstance()` 方法加锁,那么在一个时间点只能有一个线程能够进入该方法,从而避免了对 uniqueInstance 进行多次实例化的问题。 + +但是这样有一个问题,就是当一个线程进入该方法之后,其它线程试图进入该方法都必须等待,因此性能上有一定的损耗。 + +```java +public static synchronized Singleton getUniqueInstance() { + if (uniqueInstance == null) { + uniqueInstance = new Singleton(); + } + return uniqueInstance; +} +``` + +## 饿汉式-线程安全 + +线程不安全问题主要是由于 uniqueInstance 被实例化了多次,如果 uniqueInstance 采用直接实例化的话,就不会被实例化多次,也就不会产生线程不安全问题。但是直接实例化的方式也丢失了延迟实例化带来的节约资源的优势。 + +```java +private static Singleton uniqueInstance = new Singleton(); +``` + +## 双重校验锁-线程安全 + +uniqueInstance 只需要被实例化一次,之后就可以直接使用了。加锁操作只需要对实例化那部分的代码进行。也就是说,只有当 uniqueInstance 没有被实例化时,才需要进行加锁。 + +双重校验锁先判断 uniqueInstance 是否已经被初始化了,如果没有被实例化,那么才对实例化语句进行加锁。 + +```java +public class Singleton { + + private volatile static Singleton uniqueInstance; + + private Singleton() { + } + + public static Singleton getUniqueInstance() { + if (uniqueInstance == null) { + synchronized (Singleton.class) { + if (uniqueInstance == null) { + uniqueInstance = new Singleton(); + } + } + } + return uniqueInstance; + } +} +``` + +考虑下面的实现,也就是只使用了一个 if 语句。在 uniqueInstance == null 的情况下,如果两个线程同时执行 if 语句,那么两个线程就会同时进入 if 语句块内。虽然在 if 语句块内有加锁操作,但是两个线程都会执行`uniqueInstance = new Singleton();`这条语句,只是早晚的问题,也就是说会进行两次实例化,从而产生了两个实例。因此必须使用双重校验锁,也就是需要使用两个 if 判断。 + +```java +if (uniqueInstance == null) { + synchronized (Singleton.class) { + uniqueInstance = new Singleton(); + } +} +``` + +# 九、命令模式 + +## 问题描述 + +设计一个遥控器,它有很多按钮,每个按钮可以发起一个命令,命令会让一个家电完成相应操作。有非常多的家电,并且之后会增加家电。 + +

    + +有非常多的家电,并且之后会增加家电。 + +

    + +## 模式定义 + +将命令封装成对象,以便使用不同的命令来参数化其它对象。 + +## 问题的解决方案类图 + +- RemoteControl 是遥控器,它可以为每个按钮设置命令对象,并且执行命令。 + +- Command 是命令对象。 + +- Light(电灯)是命令真正的执行者。 + +- RemoteLoader 是客户端,应该注意它与 RemoteControl 的区别。因为 RemoteControl 不能主动地调用自身的方法,因此也就不能当成是客户端。客户端好比人,只有人才能去真正去使用遥控器。 + +

    + +## 模式类图 + +

    + +## 代码实现 + +```java +public interface Command { + public void execute(); +} +``` + +```java +public class Light { + + public void on() { + System.out.println("Light is on!"); + } + + public void off() { + System.out.println("Light is off!"); + } +} +``` + +```java +public class LightOnCommand implements Command{ + Light light; + + public LightOnCommand(Light light) { + this.light = light; + } + + @Override + public void execute() { + light.on(); + } +} +``` + +```java +/** + * 遥控器类 + */ +public class SimpleRemoteControl { + Command slot; + + public SimpleRemoteControl() { + + } + + public void setCommand(Command command) { + this.slot = command; + } + + public void buttonWasPressed() { + slot.execute(); + } + +} +``` + +```java +/** + * 客户端 + */ +public class RemoteLoader { + public static void main(String[] args) { + SimpleRemoteControl remote = new SimpleRemoteControl(); + Light light = new Light(); + LightOnCommand lightOnCommand = new LightOnCommand(light); + remote.setCommand(lightOnCommand); + remote.buttonWasPressed(); + } +} +``` + +输出 + +```html +Light is on! +``` + +# 十、适配器模式 + +## 模式定义 + +将一个类的接口,转换为客户期望的另一个接口。适配器让原本不兼容的类可以合作无间。 + +

    + +## 模式类图 + +适配器(Adapter)组合一个适配者(Adaptee),Adapter 把操作委托给 Adaptee。 + +

    + +## 问题描述 + +鸭子(Duck)和火鸡(Turkey)拥有不同的叫声,Duck 的叫声调用 quack() 方法,而 Turkey 调用 gobble() 方法。 + +要求将 Turkey 的 gobble() 方法适配成 Duck 的 quack() 方法,从而让火鸡冒充鸭子! + +## 问题的解决方案类图 + +

    + +## 代码实现 + +```java +public interface Duck { + public void quack(); +} +``` + +```java +public interface Turkey { + public void gobble(); +} +``` + +```java +public class WildTurkey implements Turkey{ + @Override + public void gobble() { + System.out.println("gobble!"); + } +} +``` + +```java +public class TurkeyAdapter implements Duck{ + Turkey turkey; + + public TurkeyAdapter(Turkey turkey) { + this.turkey = turkey; + } + + @Override + public void quack() { + turkey.gobble(); + } +} +``` + +```java +public class DuckTestDrive { + public static void main(String[] args) { + Turkey turkey = new WildTurkey(); + Duck duck = new TurkeyAdapter(turkey); + duck.quack(); + } +} +``` + +运行结果 + +```html +gobble! +``` + +# 十、外观模式 + +## 模式定义 + +提供了一个统一的接口,用来访问子系统中的一群接口,从而让子系统更容易使用。 + +## 模式类图 + +

    + +## 问题描述 + +家庭影院中有众多电器,当要进行观看电影时需要对很多电器进行操作。要求简化这些操作,使得家庭影院类只提供一个简化的接口,例如提供一个看电影相关的接口。 + +

    + +## 解决方案类图 + +

    + +## 设计原则 + +**最少知识原则** :只和你的密友谈话。也就是客户对象所需要交互的对象应当尽可能少。 + +## 代码实现 + +过于简单,无实现。 + +# 十一、模板方法模式 + +## 模式定义 + +在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。 + +模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 + +## 模式类图 + +模板方法 templateMethod() 定义了算法的骨架,确定了 primitiveOperation1() 和 primitiveOperation2() 方法执行的顺序,而 primitiveOperation1() 和 primitiveOperation2() 让子类去实现。 + +

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

    + +## 问题的解决方案类图 + +prepareRecipe() 方法就是模板方法,它确定了其它四个方法的具体执行步骤。其中 brew() 和 addCondiments() 方法在子类中实现。 + +

    + +## 设计原则 + +**好莱坞原则** :别调用(打电话给)我们,我们会调用(打电话给)你。这一原则可以防止依赖腐败,即防止高层组件依赖低层组件,低层组件又依赖高层组件。该原则在模板方法的体现为,只有父类会调用子类,子类不会调用父类。 + +## 钩子 + +某些步骤在不同实现中可有可无,可以先定义一个什么都不做的方法,把它加到模板方法中,如果子类需要它就覆盖默认实现并加上自己的实现。 + +## 代码实现 + +```java +public abstract class CaffeineBeverage { + + final void prepareRecipe(){ + boilWater(); + brew(); + pourInCup(); + addCondiments(); + } + + abstract void brew(); + + abstract void addCondiments(); + + void boilWater(){ + System.out.println("boilWater"); + } + + void pourInCup(){ + System.out.println("pourInCup"); + } +} +``` + +```java +public class Coffee extends CaffeineBeverage{ + @Override + void brew() { + System.out.println("Coffee.brew"); + } + + @Override + void addCondiments() { + System.out.println("Coffee.addCondiments"); + } +} +``` + +```java +public class Tea extends CaffeineBeverage{ + @Override + void brew() { + System.out.println("Tea.brew"); + } + + @Override + void addCondiments() { + System.out.println("Tea.addCondiments"); + } +} +``` + +```java +public class CaffeineBeverageTestDrive { + public static void main(String[] args) { + CaffeineBeverage caffeineBeverage = new Coffee(); + caffeineBeverage.prepareRecipe(); + System.out.println("-----------"); + caffeineBeverage = new Tea(); + caffeineBeverage.prepareRecipe(); + } +} +``` + +运行结果 + +```html +boilWater +Coffee.brew +pourInCup +Coffee.addCondiments +----------- +boilWater +Tea.brew +pourInCup +Tea.addCondiments +``` + +# 十二、迭代器模式 + +## 模式定义 + +提供顺序访问一个聚合对象中的各个元素的方法,而又不暴露聚合对象内部的表示。 + +## 模式类图 + +- Aggregate 是聚合类,其中 createIterator() 方法可以产生一个 Iterator; + +- Iterator 主要定义了 hasNext() 和 next() 方法。 + +- Client 组合了 Aggregate,为了迭代遍历 Aggregate,也需要组合 Iterator。 + +

    + +## 代码实现 + +```java +public class Aggregate { + + private int[] items; + + public Aggregate() { + items = new int[10]; + for (int i = 0; i < items.length; i++) { + items[i] = i; + } + } + + public Iterator createIterator() { + return new ConcreteIterator(items); + } + +} +``` + +```java +public interface Iterator { + boolean hasNext(); + int next(); +} +``` + +```java +public class ConcreteIterator implements Iterator { + + private int[] items; + private int position = 0; + + public ConcreteIterator(int[] items) { + this.items = items; + } + + @Override + public boolean hasNext() { + return position < items.length; + } + + @Override + public int next() { + return items[position++]; + } +} +``` +```java +public class Client { + public static void main(String[] args) { + Aggregate aggregate = new Aggregate(); + Iterator iterator = aggregate.createIterator(); + while(iterator.hasNext()){ + System.out.println(iterator.next()); + } + } +} +``` +运行结果 +```html +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +``` + +## Java 内置的迭代器 + +需要让聚合类实现 Iterable 接口,该接口有一个 iterator() 方法会返回一个 Iterator 对象。 + +可以使用 foreach 循环来顺序访问聚合对象中的每个元素。 + +Java 中的集合类基本都实现了 Iterable 接口。 + +```java +import java.util.Iterator; + +public class Aggregate implements Iterable{ + + private int[] items; + + public Aggregate() { + items = new int[10]; + for (int i = 0; i < items.length; i++) { + items[i] = i; + } + } + + @Override + public Iterator iterator() { + return new ConcreteIterator(items); + } +} +``` +```java +import java.util.Iterator; + +public class ConcreteIterator implements Iterator { + + private int[] items; + private int position = 0; + + public ConcreteIterator(int[] items) { + this.items = items; + } + + @Override + public boolean hasNext() { + return position < items.length; + } + + @Override + public Integer next() { + return items[position++]; + } +} +``` +```java +public class Client { + public static void main(String[] args) { + Aggregate aggregate = new Aggregate(); + for (int item : aggregate) { + System.out.println(item); + } + } +} +``` + +# 十三、组合模式 + +## 设计原则 + +一个类应该只有一个引起它改变的原因。 + +## 模式定义 + +允许将对象组合成树形结构来表现“整体/部分”关系。 + +组合能让客户以一致的方式处理个别对象以及组合对象。 + +## 模式类图 + +组件(Component)类是组合类(Composite)和叶子类(Leaf)的父类,可以把组合类看成是树的中间节点。 + +组合对象拥有一个组件对象,因此组合对象的操作可以委托给组件对象去处理,而组件对象可以是另一个组合对象或者叶子对象。 + +

    + +## 代码实现 + +```java +public abstract class Component { + protected String name; + + public Component(String name) { + this.name = name; + } + + abstract public void addChild(Component component); + + public void print() { + print(0); + } + + abstract protected void print(int level); +} +``` + +```java +public class Leaf extends Component { + public Leaf(String name) { + super(name); + } + + @Override + public void addChild(Component component) { + throw new UnsupportedOperationException(); // 牺牲透明性换取单一职责原则,这样就不用考虑是叶子节点还是组合节点 + } + + @Override + protected void print(int level) { + for (int i = 0; i < level; i++) { + System.out.print("--"); + } + System.out.println("left:" + name); + } +} +``` + +```java +public class Composite extends Component { + + private List childs; + + public Composite(String name) { + super(name); + childs = new ArrayList<>(); + } + + @Override + public void addChild(Component component) { + childs.add(component); + } + + @Override + protected void print(int level) { + for (int i = 0; i < level; i++) { + System.out.print("--"); + } + System.out.println("Composite:" + name); + for (Component component : childs) { + component.print(level + 1); + } + } +} +``` + +```java +public class Client { + public static void main(String[] args) { + Composite root = new Composite("root"); + Component node1 = new Leaf("1"); + Component node2 = new Composite("2"); + Component node3 = new Leaf("3"); + root.addChild(node1); + root.addChild(node2); + root.addChild(node3); + Component node21 = new Leaf("21"); + Component node22 = new Composite("22"); + node2.addChild(node21); + node2.addChild(node22); + Component node221 = new Leaf("221"); + node22.addChild(node221); + root.print(); + } +} +``` +运行结果 + +```html +Composite:root +--left:1 +--Composite:2 +----left:21 +----Composite:22 +------left:221 +--left:3 +``` + +# 十四、状态模式 + +## 模式定义 + +允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它所属的类。 + +## 模式类图 + +Context 的 request() 方法委托给 State 对象去处理。当 Context 组合的 State 对象发生改变时,它的行为也就发生了改变。 + +

    + +## 与策略模式的比较 + +状态模式的类图和策略模式一样,并且都是能够动态改变对象的行为。 + +但是状态模式是通过状态转移来改变 Context 所组合的 State 对象,而策略模式是通过 Context 本身的决策来改变组合的 Strategy 对象。 + +所谓的状态转移,是指 Context 在运行过程中由于一些条件发生改变而使得 State 对象发生改变,注意必须要是在运行过程中。 + +状态模式主要是用来解决状态转移的问题,当状态发生转移了,那么 Context 对象就会改变它的行为;而策略模式主要是用来封装一组可以互相替代的算法族,并且可以根据需要动态地去替换 Context 需要使用哪个算法。 + +## 问题描述 + +糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。 + +

    + +## 直接解决方案 + +在糖果机的每个操作函数里面,判断当前的状态,根据不同的状态进行不同的处理,并且发生不同的状态转移。 + +这种解决方案在需要增加状态的时候,必须对每个操作的代码都进行修改。 + +

    + +## 代码实现 + +糖果销售机即 Context。 + +下面的实现中每个 State 都组合了 Context 对象,这是因为状态转移的操作在 State 对象中,而状态转移过程又必须改变 Context 对象的 state 对象,因此 State 必须组合 Context 对象。 + +```java +public interface State { + /** + * 投入 25 分钱 + */ + void insertQuarter(); + + /** + * 退回 25 分钱 + */ + void ejectQuarter(); + + /** + * 转动曲柄 + */ + void turnCrank(); + + /** + * 发放糖果 + */ + void dispense(); +} +``` +```java +public class HasQuarterState implements State{ + + private GumballMachine gumballMachine; + + public HasQuarterState(GumballMachine gumballMachine){ + this.gumballMachine = gumballMachine; + } + + @Override + public void insertQuarter() { + System.out.println("You can't insert another quarter"); + } + + @Override + public void ejectQuarter() { + System.out.println("Quarter returned"); + gumballMachine.setState(gumballMachine.getNoQuarterState()); + } + + @Override + public void turnCrank() { + System.out.println("You turned..."); + gumballMachine.setState(gumballMachine.getSoldState()); + } + + @Override + public void dispense() { + System.out.println("No gumball dispensed"); + } +} +``` +```java +public class NoQuarterState implements State { + + GumballMachine gumballMachine; + + public NoQuarterState(GumballMachine gumballMachine) { + this.gumballMachine = gumballMachine; + } + + @Override + public void insertQuarter() { + System.out.println("You insert a quarter"); + gumballMachine.setState(gumballMachine.getHasQuarterState()); + } + + @Override + public void ejectQuarter() { + System.out.println("You haven't insert a quarter"); + } + + @Override + public void turnCrank() { + System.out.println("You turned, but there's no quarter"); + } + + @Override + public void dispense() { + System.out.println("You need to pay first"); + } +} +``` +```java +public class SoldOutState implements State { + + GumballMachine gumballMachine; + + public SoldOutState(GumballMachine gumballMachine) { + this.gumballMachine = gumballMachine; + } + + @Override + public void insertQuarter() { + System.out.println("You can't insert a quarter, the machine is sold out"); + } + + @Override + public void ejectQuarter() { + System.out.println("You can't eject, you haven't inserted a quarter yet"); + } + + @Override + public void turnCrank() { + System.out.println("You turned, but there are no gumballs"); + } + + @Override + public void dispense() { + System.out.println("No gumball dispensed"); + } +} +``` +```java +public class SoldState implements State { + + GumballMachine gumballMachine; + + public SoldState(GumballMachine gumballMachine) { + this.gumballMachine = gumballMachine; + } + + @Override + public void insertQuarter() { + System.out.println("Please wait, we're already giving you a gumball"); + } + + @Override + public void ejectQuarter() { + System.out.println("Sorry, you already turned the crank"); + } + + @Override + public void turnCrank() { + System.out.println("Turning twice doesn't get you another gumball!"); + } + + @Override + public void dispense() { + gumballMachine.releaseBall(); + if(gumballMachine.getCount()>0){ + gumballMachine.setState(gumballMachine.getNoQuarterState()); + } else{ + System.out.println("Oops, out of gumballs"); + gumballMachine.setState(gumballMachine.getSoldOutState()); + } + } +} +``` +```java +public class GumballMachine { + + private State soldOutState; + private State noQuarterState; + private State hasQuarterState; + private State soldState; + + private State state; + private int count = 0; + + public GumballMachine(int numberGumballs) { + count = numberGumballs; + soldOutState = new SoldOutState(this); + noQuarterState = new NoQuarterState(this); + hasQuarterState = new HasQuarterState(this); + soldState = new SoldState(this); + + if (numberGumballs > 0) { + state = noQuarterState; + } else { + state = soldOutState; + } + } + + public void insertQuarter() { + state.insertQuarter(); + } + + public void ejectQuarter() { + state.ejectQuarter(); + } + + public void turnCrank() { + state.turnCrank(); + state.dispense(); + } + + public void setState(State state) { + this.state = state; + } + + public void releaseBall() { + System.out.println("A gumball comes rolling out the slot..."); + if (count != 0) { + count -= 1; + } + } + + public State getSoldOutState() { + return soldOutState; + } + + public State getNoQuarterState() { + return noQuarterState; + } + + public State getHasQuarterState() { + return hasQuarterState; + } + + public State getSoldState() { + return soldState; + } + + public int getCount() { + return count; + } +} +``` +```java +public class GumballMachineTestDrive { + + public static void main(String[] args) { + GumballMachine gumballMachine = new GumballMachine(5); + + gumballMachine.insertQuarter(); + gumballMachine.turnCrank(); + + gumballMachine.insertQuarter(); + gumballMachine.ejectQuarter(); + gumballMachine.turnCrank(); + + gumballMachine.insertQuarter(); + gumballMachine.turnCrank(); + gumballMachine.insertQuarter(); + gumballMachine.turnCrank(); + gumballMachine.ejectQuarter(); + + gumballMachine.insertQuarter(); + gumballMachine.insertQuarter(); + gumballMachine.turnCrank(); + gumballMachine.insertQuarter(); + gumballMachine.turnCrank(); + gumballMachine.insertQuarter(); + gumballMachine.turnCrank(); + } +} +``` +运行结果 +```html +You insert a quarter +You turned... +A gumball comes rolling out the slot... +You insert a quarter +Quarter returned +You turned, but there's no quarter +You need to pay first +You insert a quarter +You turned... +A gumball comes rolling out the slot... +You insert a quarter +You turned... +A gumball comes rolling out the slot... +You haven't insert a quarter +You insert a quarter +You can't insert another quarter +You turned... +A gumball comes rolling out the slot... +You insert a quarter +You turned... +A gumball comes rolling out the slot... +Oops, out of gumballs +You can't insert a quarter, the machine is sold out +You turned, but there are no gumballs +No gumball dispensed +``` + +# 十五、代理模式 + +# 十六、MVC + +## 传统 MVC + +视图使用组合模式,模型使用了观察者模式,控制器使用了策略模式。 + +

    + +## Web 中的 MVC + +模式不再使用观察者模式。 + +

    + +# 十七、与设计模式相处 + +## 定义 + +在某情境下,针对某问题的某种解决方案。 + +## 何时使用 + +过度使用设计模式可能导致代码被过度工程化,应该总是用最简单的解决方案完成工作,并在真正需要模式的地方才使用它。 + +## 反模式 + +不好的解决方案来解决一个问题。主要作用是为了警告人们不要使用这些解决方案。 + +## 模式分类 + +

    diff --git a/notes/重构.md b/notes/重构.md new file mode 100644 index 00000000..bc05e60a --- /dev/null +++ b/notes/重构.md @@ -0,0 +1,1252 @@ + +* [一、第一个案例](#一第一个案例) +* [二、重构原则](#二重构原则) + * [定义](#定义) + * [为何重构](#为何重构) + * [三次法则](#三次法则) + * [间接层与重构](#间接层与重构) + * [修改接口](#修改接口) + * [何时不该重构](#何时不该重构) + * [重构与设计](#重构与设计) + * [重构与性能](#重构与性能) +* [三、代码的坏味道](#三代码的坏味道) + * [1. 重复代码](#1-重复代码) + * [2. 过长函数](#2-过长函数) + * [3. 过大的类](#3-过大的类) + * [4. 过长的参数列表](#4-过长的参数列表) + * [5. 发散式变化](#5-发散式变化) + * [6. 散弹式修改](#6-散弹式修改) + * [7. 依恋情结](#7-依恋情结) + * [8. 数据泥团](#8-数据泥团) + * [9. 基本类型偏执](#9-基本类型偏执) + * [10. switch 惊悚现身](#10-switch-惊悚现身) + * [11. 平行继承体系](#11-平行继承体系) + * [12. 冗余类](#12-冗余类) + * [13. 夸夸其谈未来性](#13-夸夸其谈未来性) + * [14. 令人迷惑的暂时字段](#14-令人迷惑的暂时字段) + * [15. 过度耦合的消息链](#15-过度耦合的消息链) + * [16. 中间人](#16-中间人) + * [17. 狎昵关系](#17-狎昵关系) + * [18. 异曲同工的类](#18-异曲同工的类) + * [19. 不完美的类库](#19-不完美的类库) + * [20. 幼稚的数据类](#20-幼稚的数据类) + * [21. 被拒绝的馈赠](#21-被拒绝的馈赠) + * [22. 过多的注释](#22-过多的注释) +* [四、构筑测试体系](#四构筑测试体系) +* [五、重新组织函数](#五重新组织函数) + * [1. 提炼函数](#1-提炼函数) + * [2. 内联函数](#2-内联函数) + * [3. 内联临时变量](#3-内联临时变量) + * [4. 以查询取代临时变量](#4-以查询取代临时变量) + * [5. 引起解释变量](#5-引起解释变量) + * [6. 分解临时变量](#6-分解临时变量) + * [7. 移除对参数的赋值](#7-移除对参数的赋值) + * [8. 以函数对象取代函数](#8-以函数对象取代函数) + * [9. 替换算法](#9-替换算法) +* [六、在对象之间搬移特性](#六在对象之间搬移特性) + * [1. 搬移函数](#1-搬移函数) + * [2. 搬移字段](#2-搬移字段) + * [3. 提炼类](#3-提炼类) + * [4. 将类内联化](#4-将类内联化) + * [5. 隐藏委托关系](#5-隐藏委托关系) + * [6. 移除中间人](#6-移除中间人) + * [7. 引入外加函数](#7-引入外加函数) + * [8. 引入本地扩展](#8-引入本地扩展) +* [七、重新组织数据](#七重新组织数据) + * [1. 自封装字段](#1-自封装字段) + * [2. 以对象取代数据值](#2-以对象取代数据值) + * [3. 将值对象改成引用对象](#3-将值对象改成引用对象) + * [4. 将引用对象改为值对象](#4-将引用对象改为值对象) + * [5. 以对象取代数组](#5-以对象取代数组) + * [6. 赋值被监视数据](#6-赋值被监视数据) + * [7. 将单向关联改为双向关联](#7-将单向关联改为双向关联) + * [8. 将双向关联改为单向关联](#8-将双向关联改为单向关联) + * [9. 以字面常量取代魔法数](#9-以字面常量取代魔法数) + * [10. 封装字段](#10-封装字段) + * [11. 封装集合](#11-封装集合) + * [12. 以数据类取代记录](#12-以数据类取代记录) + * [13. 以类取代类型码](#13-以类取代类型码) + * [14. 以子类取代类型码](#14-以子类取代类型码) + * [15. 以 State/Strategy 取代类型码](#15-以-statestrategy-取代类型码) + * [16. 以字段取代子类](#16-以字段取代子类) +* [八、简化条件表达式](#八简化条件表达式) + * [1. 分解条件表达式](#1-分解条件表达式) + * [2. 合并条件表达式](#2-合并条件表达式) + * [3. 合并重复的条件片段](#3-合并重复的条件片段) + * [4. 移除控制标记](#4-移除控制标记) + * [5. 以卫语句取代嵌套条件表达式](#5-以卫语句取代嵌套条件表达式) + * [6. 以多态取代条件表达式](#6-以多态取代条件表达式) + * [7. 引入 Null 对象](#7-引入-null-对象) + * [8. 引入断言](#8-引入断言) +* [九、简化函数调用](#九简化函数调用) + * [1. 函数改名](#1-函数改名) + * [2. 添加参数](#2-添加参数) + * [3. 移除参数](#3-移除参数) + * [4. 将查询函数和修改函数分离](#4-将查询函数和修改函数分离) + * [5. 令函数携带参数](#5-令函数携带参数) + * [6. 以明确函数取代参数](#6-以明确函数取代参数) + * [7. 保持对象完整](#7-保持对象完整) + * [8. 以函数取代参数](#8-以函数取代参数) + * [9. 引入参数对象](#9-引入参数对象) + * [10. 移除设值函数](#10-移除设值函数) + * [11. 隐藏函数](#11-隐藏函数) + * [12. 以工厂函数取代构造函数](#12-以工厂函数取代构造函数) + * [13. 封装向下转型](#13-封装向下转型) + * [14. 以异常取代错误码](#14-以异常取代错误码) + * [15. 以测试取代异常](#15-以测试取代异常) +* [十、处理概括关系](#十处理概括关系) + * [1. 字段上移](#1-字段上移) + * [2. 函数上移](#2-函数上移) + * [3. 构造函数本体上移](#3-构造函数本体上移) + * [4. 函数下移](#4-函数下移) + * [5. 字段下移](#5-字段下移) + * [6. 提炼子类](#6-提炼子类) + * [7. 提炼超类](#7-提炼超类) + * [8. 提炼接口](#8-提炼接口) + * [9. 折叠继承体系](#9-折叠继承体系) + * [10. 塑造模板函数](#10-塑造模板函数) + * [11. 以委托取代继承](#11-以委托取代继承) + * [12. 以继承取代委托](#12-以继承取代委托) + + + +# 一、第一个案例 + +如果你发现自己需要为程序添加一个特性,而代码结构使你无法很方便地达成目的,那就先重构这个程序。 + +在重构前,需要先构建好可靠的测试环境,确保安全地重构。 + +重构需要以微小的步伐修改程序,如果重构过程发生错误,很容易就能发现错误。 + +**案例分析** + +影片出租店应用程序,需要计算每位顾客的消费金额。 + +包括三个类:Movie、Rental 和 Customer,Rental 包含租赁的 Movie 以及天数。 + +

    + +最开始的实现是把所有的计费代码都放在 Customer 类中。 + +可以发现,该代码没有使用 Customer 类中的任何信息,更多的是使用 Rental 类的信息,因此第一个可以重构的点就是把具体计费的代码移到 Rental 类中,然后 Customer 类的 getTotalCharge() 方法只需要调用 Rental 类中的计费方法即可。 + +```java +class Customer... +double getTotalCharge() { + while (rentals.hasMoreElements()) { + double thisAmount = 0; + Rental each = (Rental) rentals.nextElement(); + switch (each.getMovie().getPriceCode()) { + case Movie.REGULAR: + thisAmount += 2; + if (each.getDaysRented() > 2) + thisAmount += (each.getDaysRented() - 2) * 1.5; + break; + case Movie.NEW_RELEASE: + thisAmount += each.getDaysRented() * 3; + break; + case Movie.CHILDRENS: + thisAmount += 1.5; + if (each.getDaysRented() > 3) + thisAmount += (each.getDaysRented() - 3) * 1.5; + break; + } +} +``` + +使用 switch 的准则是:只能在对象自己的数据上使用,而不能在另一个对象的数据基础上使用。解释如下:switch 使用的数据通常是一组相关的数据,例如上面的代码使用了 Movie 的多种类别数据。当这组类别的数据发生改变时,例如上面的代码中增加 Movie 的类别或者修改一种 Movie 类别的计费方法,就需要修改 switch 代码。如果允许违反了准则,就会有多个地方的 switch 使用了这部分的数据,那么需要打开所有的 switch 代码进行修改。 + +以下是继承 Movie 的多态解决方案,这种方案可以解决上述的 switch 问题,因为每种电影类别的计费方式都被放到了对应 Movie 子类中,当变化发生时,只需要去修改对应子类中的代码即可。 + +

    + +但是由于 Movie 可以在其生命周期内修改自己的类别,一个对象却不能在生命周期内修改自己所属的类,因此这种方案不可行。可以使用策略模式来解决这个问题(原书写的是使用状态模式,但是这里应该为策略模式,具体可以参考设计模式内容)。 + +下图中,Price 有多种实现,Movie 组合了一个 Price 对象,并且在运行时可以改变组合的 Price 对象,从而使得它的计费方式发生改变。 + +

    + +重构后整体的类图和时序图如下: + +

    + +

    + +# 二、重构原则 + +## 定义 + +重构是对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。 + +## 为何重构 + +- 改进软件设计 +- 使软件更容易理解 +- 帮助找到 Bug +- 提高编程速度 + +## 三次法则 + +第一次做某件事时只管去做;第二次做类似事情时可以去做;第三次再做类似的事,就应该重构。 + +## 间接层与重构 + +计算机科学中的很多问题可以通过增加一个间接层来解决,间接层具有以下价值: + +- 允许逻辑共享 +- 分开解释意图和实现 +- 隔离变化 +- 封装条件逻辑。 + +重构可以理解为在适当的位置插入间接层以及在不需要时移除间接层。 + +## 修改接口 + +如果重构手法改变了已发布的接口,就必须维护新旧两个接口。 + +可以保留旧接口,让旧接口去调用新接口,并且使用 Java 提供的 @deprecation 将旧接口标记为弃用。 + +可见修改接口特别麻烦,因此除非真有必要,否则不要发布接口,并且不要过早发布接口。 + +## 何时不该重构 + +当现有代码过于混乱时,应当重写而不是重构。 + +一个折中的办法是,将代码封装成一个个组件,然后对各个组件做重写或者重构的决定。 + +## 重构与设计 + +软件开发无法预先设计,因为开发过程有很多变化发生,在最开始不可能都把所有情况考虑进去。 + +重构可以简化设计,重构在一个简单的设计上进行修修改改,当变化发生时,以一种灵活的方式去应对变化,进而带来更好的设计。 + +## 重构与性能 + +为了软代码更容易理解,重构可能会导致性能减低。 + +在编写代码时,不用对性能过多关注,只有在最后性能优化阶段再考虑性能问题。 + +应当只关注关键代码的性能,因为只有一小部分的代码是关键代码。 + +# 三、代码的坏味道 + +本章主要介绍一些不好的代码,也就是说这些代码应该被重构。 + +文中提到的具体重构原则可以先忽略。 + +## 1. 重复代码 + +> Duplicated Code + +同一个类的两个函数有相同表达式,则用 Extract Method 提取出重复代码; + +两个互为兄弟的子类含有相同的表达式,先使用 Extract Method,然后把提取出来的函数 Pull Up Method 推入超类。 + +如果只是部分相同,用 Extract Method 分离出相似部分和差异部分,然后使用 Form Template Method 这种模板方法设计模式。 + +如果两个毫不相关的类出现重复代码,则使用 Extract Class 方法将重复代码提取到一个独立类中。 + +## 2. 过长函数 + +> Long Method + +函数应该尽可能小,因为小函数具有解释能力、共享能力、选择能力。 + +分解长函数的原则:当需要用注释来说明一段代码时,就需要把这部分代码写入一个独立的函数中。 + +Extract Method 会把很多参数和临时变量都当做参数,可以用 Replace Temp with Query 消除临时变量,Introduce Parameter Object 和 Preserve Whole Object 可以将过长的参数列变得更简洁。 + +条件和循环语句往往也需要提取到新的函数中。 + +## 3. 过大的类 + +> Large Class + +应该尽可能让一个类只做一件事,而过大的类做了过多事情,需要使用 Extract Class 或 Extract Subclass。 + +先确定客户端如何使用该类,然后运用 Extract Interface 为每一种使用方式提取出一个接口。 + +## 4. 过长的参数列表 + +> Long Parameter List + +太长的参数列表往往会造成前后不一致,不易使用。 + +面向对象程序中,函数所需要的数据通常内在宿主类中找到。 + +## 5. 发散式变化 + +> Divergent Change + +设计原则:一个类应该只有一个引起改变的原因。也就是说,针对某一外界变化所有相应的修改,都只应该发生在单一类中。 + +针对某种原因的变化,使用 Extract Class 将它提炼到一个类中。 + +## 6. 散弹式修改 + +> Shotgun Surgery + +一个变化引起多个类修改; + +使用 Move Method 和 Move Field 把所有需要修改的代码放到同一个类中。 + +## 7. 依恋情结 + +> Feature Envy + +一个函数对某个类的兴趣高于对自己所处类的兴趣,通常是过多访问其它类的数据, + +使用 Move Method 将它移到该去的地方,如果对多个类都有 Feature Envy,先用 Extract Method 提取出多个函数。 + +## 8. 数据泥团 + +> Data Clumps + +有些数据经常一起出现,比如两个类具有相同的字段、许多函数有相同的参数,这些绑定在一起出现的数据应该拥有属于它们自己的对象。 + +使用 Extract Class 将它们放在一起。 + +## 9. 基本类型偏执 + +> Primitive Obsession + +使用类往往比使用基本类型更好,使用 Replace Data Value with Object 将数据值替换为对象。 + +## 10. switch 惊悚现身 + +> Switch Statements + +具体参见第一章的案例。 + +## 11. 平行继承体系 + +> Parallel Inheritance Hierarchies + +每当为某个类增加一个子类,必须也为另一个类相应增加一个子类。 + +这种结果会带来一些重复性,消除重复性的一般策略:让一个继承体系的实例引用另一个继承体系的实例。 + +## 12. 冗余类 + +> Lazy Class + +如果一个类没有做足够多的工作,就应该消失。 + +## 13. 夸夸其谈未来性 + +> Speculative Generality + +有些内容是用来处理未来可能发生的变化,但是往往会造成系统难以理解和维护,并且预测未来可能发生的改变很可能和最开始的设想相反。因此,如果不是必要,就不要这么做。 + +## 14. 令人迷惑的暂时字段 + +> Temporary Field + +某个字段仅为某种特定情况而设,这样的代码不易理解,因为通常认为对象在所有时候都需要它的所有字段。 + +把这种字段和特定情况的处理操作使用 Extract Class 提炼到一个独立类中。 + +## 15. 过度耦合的消息链 + +> Message Chains + +一个对象请求另一个对象,然后再向后者请求另一个对象,然后...,这就是消息链。采用这种方式,意味着客户代码将与对象间的关系紧密耦合。 + +改用函数链,用函数委托另一个对象来处理。 + +## 16. 中间人 + +> Middle Man + +中间人负责处理委托给它的操作,如果一个类中有过多的函数都委托给其它类,那就是过度运用委托,应当 Remove Middle Man,直接与负责的对象打交道。 + +## 17. 狎昵关系 + +> Inappropriate Intimacy + +两个类多于亲密,花费太多时间去探讨彼此的 private 成分。 + +## 18. 异曲同工的类 + +> Alernative Classes with Different Interfaces + +两个函数做同一件事,却有着不同的签名。 + +使用 Rename Method 根据它们的用途重新命名。 + +## 19. 不完美的类库 + +> Incomplete Library Class + +类库的设计者不可能设计出完美的类库,当我们需要对类库进行一些修改时,可以使用以下两种方法:如果只是修改一两个函数,使用 Introduce Foreign Method;如果要添加一大堆额外行为,使用 Introduce Local Extension。 + +## 20. 幼稚的数据类 + +> Data Class + +它只拥有一些数据字段,以及用于访问这些字段的函数,除此之外一无长物。 + +找出字段使用的地方,然后把相应的操作移到 Data Class 中。 + +## 21. 被拒绝的馈赠 + +> Refused Bequest + +子类不想继承超类的所有函数和数据。 + +为子类新建一个兄弟类,不需要的函数或数据使用 Push Down Method 和 Push Down Field 下推给那个兄弟。 + +## 22. 过多的注释 + +> Comments + +使用 Extract Method 提炼出需要注释的部分,然后用函数名来解释函数的行为。 + +# 四、构筑测试体系 + +Java 可以使用 Junit 进行单元测试。 + +测试应该能够完全自动化,并能检查测试的结果。Junit 可以做到。 + +小步修改,频繁测试。 + +单元测试的对象是类的方法,而功能测是以客户的角度保证软件正常运行。 + +应当集中测试可能出错的边界条件。 + +# 五、重新组织函数 + +## 1. 提炼函数 + +> Extract Method + +将这段代码放进一个独立函数中,并让函数名称解释该函数的用途。 + +## 2. 内联函数 + +> Inline Method + +一个函数的本体与名称同样清楚易懂。 + +在函数调用点插入函数本体,然后移除该函数。 + +## 3. 内联临时变量 + +> Inline Temp + +一个临时变量,只被简单表达式赋值一次,而它妨碍了其它重构手法。 + +将所有对该变量的引用替换为对它赋值的那个表达式自身。 + +```java +double basePrice = anOrder.basePrice(); +return basePrice > 1000; +``` + +```java +return anOrder.basePrice() > 1000; +``` + +## 4. 以查询取代临时变量 + +> Replace Temp with Query + +以临时变量保存某一表达式的运算结果,将这个表达式提炼到一个独立函数中,将所有对临时变量的引用点替换为对新函数的调用。Replace Temp with Query 往往是 Extract Method 之前必不可少的一个步骤,因为局部变量会使代码难以提炼。 + +```java +double basePrice = quantity * itemPrice; +if(basePrice > 1000) + return basePrice * 0.95; +else + return basePrice * 0.98; +``` + +```java +if(basePrice() > 1000) + return basePrice() * 0.95; +else + return basePrice() * 0.98; + +// ... +double basePrice(){ + return quantity * itemPrice; +} +``` + +## 5. 引起解释变量 + +> Introduce Explaining Variable + +将复杂表达式(或其中一部分)的结果放进一个临时变量,以此变量名称来解释表达式用途。 + +```java +if((platform.toUpperCase().indexOf("MAC") > -1) && + (browser.toUpperCase().indexOf("IE") > -1) && + wasInitialized() && resize > 0) { + // do something +} +``` + +```java +final boolean isMacOS = platform.toUpperCase().indexOf("MAC") > -1; +final boolean isIEBrower = browser.toUpperCase().indexOf("IE") > -1; +final boolean wasResized = resize > 0; + +if(isMacOS && isIEBrower && wasInitialized() && wasResized) { + // do something +} +``` + +## 6. 分解临时变量 + +> Split Temporary Variable + +某个临时变量被赋值超过一次,它既不是循环变量,也不是用于收集计算结果。 + +针对每次赋值,创造一个独立、对应的临时变量,每个临时变量只承担一个责任。 + +## 7. 移除对参数的赋值 + +> Remove Assigments to Parameters + +以一个临时变量取代对该参数的赋值。 + +```java +int discount (int inputVal, int quentity, int yearToDate){ + if (inputVal > 50) inputVal -= 2; +``` + +```java +int discount (int inputVal, int quentity, int yearToDate){ + int result = inputVal; + if (inputVal > 50) result -= 2; +``` + +## 8. 以函数对象取代函数 + +> Replace Method with Method Object + +当对一个大型函数采用 Extract Method 时,由于包含了局部变量使得很难进行该操作。 + +将这个函数放进一个单独对象中,如此一来局部变量就成了对象内的字段。然后可以在同一个对象中将这个大型函数分解为多个小型函数。 + +## 9. 替换算法 + +> Subsititute Algorithn + +# 六、在对象之间搬移特性 + +## 1. 搬移函数 + +> Move Method + +类中的某个函数与另一个类进行更多交流:调用后者或者被后者调用。 + +将这个函数搬移到另一个类中。 + +## 2. 搬移字段 + +> Move Field + +类中的某个字段被另一个类更多地用到,这里的用到是指调用取值设值函数,应当把该字段移到另一个类中。 + +## 3. 提炼类 + +> Extract Class + +某个类做了应当由两个类做的事。 + +应当建立一个新类,将相关的字段和函数从旧类搬移到新类。 + +## 4. 将类内联化 + +> Inline Class + +与 Extract Class 相反。 + +## 5. 隐藏委托关系 + +> Hide Delegate + +建立所需的函数,隐藏委托关系。 + +```java +class Person{ + Department department; + + public Department getDepartment(){ + return department; + } +} + +class Department{ + private Person manager; + + public Person getManager(){ + return manager; + } +} +``` + +如果客户希望知道某人的经理是谁,必须获得 Department 对象,这样就对客户揭露了 Department 的工作原理。 + +```java +Person manager = john.getDepartment().getManager(); +``` + +通过为 Peron 建立一个函数来隐藏这种委托关系。 + +```java +public Person getManager(){ + return department.getManager(); +} +``` + +## 6. 移除中间人 + +> Remove Middle Man + +与 Hide Delegate 相反,本方法需要移除委托函数,让客户直接调用委托类。 + +Hide Delegate 有很大好处,但是它的代价是:每当客户要使用受托类的新特性时,就必须在服务器端添加一个简单的委托函数。随着受委托的特性越来越多,服务器类完全变成了一个“中间人”。 + +## 7. 引入外加函数 + +> Introduce Foreign Method + +需要为提供服务的类添加一个函数,但是无法修改这个类。 + +可以在客户类中建立一个函数,并以第一参数形式传入一个服务类的实例,让客户类组合服务器实例。 + +## 8. 引入本地扩展 + +> Introduce Local Extension + +和 Introduce Foreign Method 目的一样,但是 Introduce Local Extension 通过建立新的类来实现。有两种方式:子类或者包装类,子类就是通过继承实现,包装类就是通过组合实现。 + +# 七、重新组织数据 + +## 1. 自封装字段 + +> Self Encapsulate Field + +为字段建立取值/设值函数,并用这些函数来访问字段。只有当子类想访问超类的一个字段,又想在子类中将对这个字段访问改为一个计算后的值,才使用这种方式,否则直接访问字段的方式简洁明了。 + +## 2. 以对象取代数据值 + +> Replace Data Value with Object + +在开发初期,往往会用简单的数据项表示简单的情况,但是随着开发的进行,一些简单数据项会具有一些特殊行为。比如一开始会把电话号码存成字符串,但是随后发现电话号码需要“格式化”、“抽取区号”之类的特殊行为。 + +## 3. 将值对象改成引用对象 + +> Change Value to Reference + +将彼此相等的实例替换为同一个对象。这就要用一个工厂来创建这种唯一对象,工厂类中需要保留一份已经创建对象的列表,当要创建一个对象时,先查找这份列表中是否已经存在该对象,如果存在,则返回列表中的这个对象;否则,新建一个对象,添加到列表中,并返回该对象。 + +## 4. 将引用对象改为值对象 + +> Change Reference to value + +以 Change Value to Reference 相反。值对象有个非常重要的特性:它是不可变的,不可变表示如果要改变这个对象,必须用一个新的对象来替换旧对象,而不是修改旧对象。 + +需要为值对象实现 equals() 和 hashCode() 方法 + +## 5. 以对象取代数组 + +> Replace Array with Object + +有一个数组,其中的元素各自代表不同的东西。 + +以对象替换数组,对于数组中的每个元素,以一个字段来表示,这样方便操作,也更容易理解。 + +## 6. 赋值被监视数据 + +> Duplicate Observed Data + +一些领域数据置身于 GUI 控件中,而领域函数需要访问这些数据。 + +将该数据赋值到一个领域对象中,建立一个 Oberver 模式,用以同步领域对象和 GUI 对象内的重复数据。 + +

    + +## 7. 将单向关联改为双向关联 + +> Change Unidirectional Association to Bidirectional + +当两个类都需要对方的特性时,可以使用双向关联。 + +有两个类,分别为订单 Order 和客户 Customer,Order 引用了 Customer,Customer 也需要引用 Order 来查看其所有订单详情。 + +```java +class Order{ + private Customer customer; + public void setCustomer(Customer customer){ + if(this.customer != null) + this.customer.removeOrder(this); + this.customer = customer; + this.customer.add(this); + } +} +``` +```java +class Curstomer{ + private Set orders = new HashSet<>(); + public void removeOrder(Order order){ + orders.remove(order); + } + public void addOrder(Order order){ + orders.add(order); + } +} +``` + +注意到,这里让 Curstomer 类来控制关联关系。有以下原则来决定哪个类来控制关联关系:如果某个对象是组成另一个对象的部件,那么由后者负责控制关联关系;如果是一对多关系,则由单一引用那一方来控制关联关系。 + +## 8. 将双向关联改为单向关联 + +> Change Bidirectional Association to Unidirectional + +和 Change Unidirectional Association to Bidirectiona 为反操作。 + +双向关联维护成本高,并且也不易于理解。大量的双向连接很容易造成“僵尸对象”:某个对象本身已经死亡了,却保留在系统中,因为它的引用还没有全部完全清除。 + +## 9. 以字面常量取代魔法数 + +> Replace Magic Number with Symbolic Constant + +创建一个常量,根据其意义为它命名,并将字面常量换位这个常量。 + +## 10. 封装字段 + +> Encapsulate Field + +public 字段应当改为 private,并提供相应的访问函数。 + +## 11. 封装集合 + +> Encapsulate Collection + +函数返回集合的一个只读副本,并在这个类中提供添加/移除集合元素的函数。如果函数返回集合自身,会让用户得以修改集合内容而集合拥有者却一无所知。 + +## 12. 以数据类取代记录 + +> Replace Record with Data Class + +## 13. 以类取代类型码 + +> Replace Type Code with Class + +类中有一个数值类型码,但它并不影响类的行为,就用一个新类替换该数值类型码。如果类型码出现在 switch 语句中,需要使用 Replace Conditional with Polymorphism 去掉 switch,首先必须运用 Replace Type Code with Subcalss 或 Replace Type Code with State/Strategy 去掉类型码。 + +

    + +## 14. 以子类取代类型码 + +> Replace Type Code with Subcalsses + +有一个不可变的类型码,它会影响类的行为,以子类取代这个类型码。 + +

    + +## 15. 以 State/Strategy 取代类型码 + +> Replace Type Code with State/Strategy + +有一个可变的类型码,它会影响类的行为,以状态对象取代类型码。 + +和 Replace Type Code with Subcalsses 的区别是 Replace Type Code with State/Strategy 的类型码是动态可变的,前者通过继承的方式来实现,后者通过组合的方式来实现。因为类型码可变,如果通过继承的方式,一旦一个对象的类型码改变,那么就要改变用新的对象来取代旧对象,而客户端难以改变新的对象。但是通过组合的方式,改变引用的状态类是很容易的。 + +

    + +## 16. 以字段取代子类 + +> Replace Subclass with Fields + +各个子类的唯一差别只在“返回常量数据”的函数上。 + +

    + +# 八、简化条件表达式 + +## 1. 分解条件表达式 + +> Decompose Conditional + +对于一个复杂的条件语句,可以从 if、then、else 三个段落中分别提炼出独立函数。 + +```java +if(data.befor(SUMMER_START) || data.after(SUMMER_END)) + charge = quantity * winterRate + winterServiceCharge; +else charge = quantity * summerRate; +``` + +```java +if(notSummer(date)) + charge = winterCharge(quantity); +else charge = summerCharge(quantity); +``` + +## 2. 合并条件表达式 + +> Consolidate Conditional Expression + +有一系列条件测试,都得到相同结果。 + +将这些测试合并为一个条件表达式,并将这个条件表达式提炼成为一个独立函数。 + +```java +double disabilityAmount(){ + if (seniority < 2) return 0; + if (monthsDisabled > 12 ) return 0; + if (isPartTime) return 0; + // ... +} +``` +```java +double disabilityAmount(){ + if (isNotEligibleForDisability()) return 0; + // ... +} +``` + +## 3. 合并重复的条件片段 + +> Consolidate Duplicate Conditional Fragments + +在条件表达式的每个分支上有着相同的一段代码。 + +将这段重复代码搬移到条件表达式之外。 + +```java +if (isSpecialDeal()){ + total = price * 0.95; + send(); +} else { + total = price * 0.98; + send(); +} +``` + +```java +if (isSpecialDeal()) { + total = price * 0.95; +} else { + total = price * 0.98; +} +send(); +``` + +## 4. 移除控制标记 + +> Remove Control Flag + +在一系列布尔表达式中,某个变量带有“控制标记”的作用。 + +用 break 语 句或 return 语句来取代控制标记。 + +## 5. 以卫语句取代嵌套条件表达式 + +> Replace Nested Conditional with Guard Clauses + +如果某个条件极其罕见,就应该单独检查该条件,并在该条件为真时立刻从函数中返回,这样的单独检查常常被称为“卫语句”(guard clauses)。 + +条件表达式通常有两种表现形式。第一种形式是:所有分支都属于正常行为。第二种形式则是:条件表达式提供的答案中只有一种是正常行为,其他都是不常见的情况,可以使用卫语句表现所有特殊情况。 + +```java +double getPayAmount() { + double result; + if (isDead) result = deadAmount(); + else { + if (isSeparated) result = separatedAmount(); + else { + if (isRetired) result = retiredAmount(); + else result = normalPayAmount(); + }; + } + return result; +}; +``` + +```java +double getPayAmount() { + if (isDead) return deadAmount(); + if (isSeparated) return separatedAmount(); + if (isRetired) return retiredAmount(); + return normalPayAmount(); +}; +``` + +## 6. 以多态取代条件表达式 + +> Replace Conditional with Polymorphism + +将这个条件表达式的每个分支放进一个子类内的覆写函数中,然后将原始函数声明为抽象函数。需要先使用 Replace Type Code with Subclass 或 Replace Type Code with State/Strategy 来建立继承结果。 + +```java +double getSpeed() { + switch (type) { + case EUROPEAN: + return getBaseSpeed(); + case AFRICAN: + return getBaseSpeed()- getLoadFactor()* numberOfCoconuts; + case NORWEGIAN_BLUE: + return isNailed ? 0 : getBaseSpeed(voltage); + } + throw new RuntimeException("Should be unreachable"); +} +``` + +

    + + +## 7. 引入 Null 对象 + +> Introduce Null Object + +将 null 值替换为 null 对象。这样做的好处在于,不需要询问对象是否为空,直接调用就行。 + +```java +if (customer == null) plan = BillingPlan.basic(); +else plan = customer.getPlan(); +``` + +## 8. 引入断言 + +> Introduce Assertion + +以断言明确表现某种假设。断言只能用于开发过程中,产品代码中不会有断言。 + +```java +double getExpenseLimit() { + // should have either expense limit or a primary project + return (expenseLimit != NULL_EXPENSE) ? expenseLimit : primaryProject.getMemberExpenseLimit(); +} +``` + +```java +double getExpenseLimit() { + Assert.isTrue (expenseLimit != NULL_EXPENSE || primaryProject != null); + return (expenseLimit != NULL_EXPENSE) ? expenseLimit : primaryProject.getMemberExpenseLimit(); +} +``` + +# 九、简化函数调用 + +## 1. 函数改名 + +> Rename Method + +使函数名能解释函数的用途。 + +## 2. 添加参数 + +> Add Parameter + +使函数不需要通过调用获得某个信息。 + +## 3. 移除参数 + +> Remove Parameter + +与 Add Parameter 相反,改用调用的方式来获得某个信息。 + +## 4. 将查询函数和修改函数分离 + +> Separate Query from Modifier + +某个函数即返回对象状态值,又修改对象状态。 + +应当建立两个不同的函数,其中一个负责查询,另一个负责修改。任何有返回值的函数,都不应该有看得到的副作用。 + +```java +getTotalOutstandingAndSetReadyForSummaries(); +``` + +```java +getTotalOutstanding(); +setReadyForSummaries(); +``` + +## 5. 令函数携带参数 + +> Parameterize Method + +若干函数做了类似的工作,但在函数本体中却包含了不同的值。 + +建立单一函数,以参数表达那些不同的值。 + +```java +fivePercentRaise(); +tenPercentRaise(); +``` +```java +raise(percentage); +``` + +## 6. 以明确函数取代参数 + +> Replace Parameter with Explicit Methods + +有一个函数,完全取决于参数值而采取不同行为。 + +针对该参数的每一个可能值,建立一个独立函数。 + +```java +void setValue(String name, int value){ + if (name.equals("height")){ + height = value; + return; + } + if (name.equals("width")){ + width = value; + return; + } + Assert.shouldNeverReachHere(); +} +``` + +```java +void setHeight(int arg){ + height = arg; +} +void setWidth(int arg){ + width = arg; +} +``` + +## 7. 保持对象完整 + +> Preserve Whole Object + +从某个对象中取出若干值,将它们作为某一次函数调用时的参数。 + +改为传递整个对象。 + +```java +int low = daysTempRange().getLow(); +int high = daysTempRange().getHigh(); +withinPlan = plan.withinRange(low,high); +``` + +```java +withinPlan = plan.withinRange(daysTempRange()); +``` + +## 8. 以函数取代参数 + +> Replace Parameter with Methods + +对象调用某个函数,并将所得结果作为参数,传递给另一个函数。而接受该参数的函数本身也能够调用前一个函数。 + +让参数接收者去除该项参数,而是直接调用前一个函数。 + +```java +int basePrice = _quantity * _itemPrice; +discountLevel = getDiscountLevel(); +double finalPrice = discountedPrice (basePrice, discountLevel); +``` + +```java +int basePrice = _quantity * _itemPrice; +double finalPrice = discountedPrice (basePrice); +``` + +## 9. 引入参数对象 + +> Introduce Parameter Object + +某些参数总是很自然地同时出现,这些参数就是 Data Clumps。 + +以一个对象取代这些参数。 + +

    + +## 10. 移除设值函数 + +> Remove Setting Method + +类中的某个字段应该在对象创建时被设值,然后就不再改变。 + +去掉该字段的所有设值函数,并将该字段设为 final。 + +## 11. 隐藏函数 + +> Hide Method + +有一个函数,从来没有被其他任何类用到。 + +将这个函数修改为 private。 + +## 12. 以工厂函数取代构造函数 + +> Replace Constructor with Factory Method + +希望在创建对象时不仅仅是做简单的建构动作。 + +将构造函数替换为工厂函数。 + +## 13. 封装向下转型 + +> Encapsulate Downcast + +某个函数返回的对象,需要由函数调用者执行向下转型(downcast)。 + +将向下转型动作移到函数中。 + +```java +Object lastReading(){ + return readings.lastElement(); +} +``` +```java +Reading lastReading(){ + return (Reading)readings.lastElement(); +} +``` + +## 14. 以异常取代错误码 + +> Replace Error Code with Exception + +某个函数返回一个特定的代码,用以表示某种错误情况。 + +改用异常,异常将普通程序和错误处理分开,使代码更容易理解。 + +## 15. 以测试取代异常 + +> Replace Exception with Test + +面对一个调用者可以预先检查的条件,你抛出了一个异常。 + +修改调用者,使它在调用函数之前先做检查。 + +```java +double getValueForPeriod(int periodNumber) { + try { + return values[periodNumber]; + } catch (ArrayIndexOutOfBoundsException e) { + return 0; + } +} +``` +```java +double getValueForPeriod(int periodNumber) { + if (periodNumber >= values.length) return 0; + return values[periodNumber]; +``` + +# 十、处理概括关系 + +## 1. 字段上移 + +> Pull Up Field + +两个子类拥有相同的字段。 + +将该字段移至超类。 + +## 2. 函数上移 + +> Pull Up Method + +有些函数,在各个子类中产生完全相同的结果。 + +将该函数移至超类。 + +## 3. 构造函数本体上移 + +> Pull Up Constructor Body + +你在各个子类中拥有一些构造函数,它们的本体几乎完全一致。 + +在超类中新建一个构造函数,并在子类构造函数中调用它。 + +```java +class Manager extends Employee... + +public Manager(String name, String id, int grade) { + this.name = name; + this.id = id; + this.grade = grade; +} +``` + +```java +public Manager(String name, String id, int grade) { + super(name, id); + this.grade = grade; +} +``` + +## 4. 函数下移 + +> Push Down Method + +超类中的某个函数只与部分子类有关。 + +将这个函数移到相关的那些子类去。 + +## 5. 字段下移 + +> Push Down Field + +超类中的某个字段只被部分子类用到。 + +将这个字段移到需要它的那些子类去。 + +## 6. 提炼子类 + +> Extract Subclass + +类中的某些特性只被某些实例用到。 + +新建一个子类,将上面所说的那一部分特性移到子类中。 + +## 7. 提炼超类 + +> Extract Superclass + +两个类有相似特性。 + +为这两个类建立一个超类,将相同特性移至超类。 + +## 8. 提炼接口 + +> Extract Interface + +若干客户使用类接口中的同一子集,或者两个类的接口有部分相同。 + +将相同的子集提炼到一个独立接口中。 + +## 9. 折叠继承体系 + +> Collapse Hierarchy + +超类和子类之间无太大区别。 + +将它们合为一体。 + +## 10. 塑造模板函数 + +> Form Template Method + +你有一些子类,其中相应的某些函数以相同顺序执行类似的操作,但各个操作的细节上有所不同。 + +将这些操作分别放进独立函数中,并保持它们都有相同的签名,于是原函数也就变得相同了。然后将原函数上移至超类。(模板方法模式) + +## 11. 以委托取代继承 + +> Replace Inheritance with Delegation + +某个子类只使用超类接口中的一部分,或是根本不需要继承而来的数据。 + +在子类中新建一个字段用以保存超类,调整子类函数,令它改而委托超类,然后去掉两者之间的继承关系。 + +## 12. 以继承取代委托 + +> Replace Delegation with Inheritance + +你在两个类之间使用委托关系,并经常为整个接口编写许多极简单的委托函数。 + +让委托类继承受托类。 diff --git a/notes/面向对象思想.md b/notes/面向对象思想.md index b4e4d054..b4e5f032 100644 --- a/notes/面向对象思想.md +++ b/notes/面向对象思想.md @@ -1,285 +1,349 @@ -[TOC] - -# S.O.L.I.D - -S.O.L.I.D 是面向对象设计和编程 (OOD&OOP) 中几个重要编码原则 (Programming Priciple) 的首字母缩写。 - -| 简写    | 全拼    | 中文翻译 | -| -- | -- | -- | -|SRP|    The Single Responsibility Principle    | 单一责任原则 | -|OCP|    The Open Closed Principle            | 开放封闭原则 | -|LSP|    The Liskov Substitution Principle    | 里氏替换原则 | -|ISP|    The Interface Segregation Principle    | 接口分离原则 | -|DIP|    The Dependency Inversion Principle    | 依赖倒置原则 | + +* [一、设计原则](#一设计原则) + * [S.O.L.I.D](#solid) + * [其他常见原则](#其他常见原则) +* [二、三大特性](#二三大特性) + * [封装](#封装) + * [继承](#继承) + * [多态](#多态) +* [三、UML](#三uml) + * [类图](#类图) + * [时序图](#时序图) +* [参考资料](#参考资料) + -## 1. 单一责任原则 +# 一、设计原则 -当需要修改某个类的时候原因有且只有一个。换句话说就是让一个类只做一种类型责任,当这个类需要承当其他类型的责任的时候,就需要分解这个类。 +设计原则可以帮助我们避免那些糟糕的设计。 -## 2. 开放封闭原则 +## S.O.L.I.D -软件实体应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。 +| 简写 | 全拼 | 中文翻译 | +| -- | -- | -- | +| SRP | The Single Responsibility Principle | 单一责任原则 | +| OCP | The Open Closed Principle | 开放封闭原则 | +| LSP | The Liskov Substitution Principle | 里氏替换原则 | +| ISP | The Interface Segregation Principle | 接口分离原则 | +| DIP | The Dependency Inversion Principle | 依赖倒置原则 | -## 3. 里氏替换原则 +### 1. 单一责任原则 -当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有 is-a 关系。 +> 修改一个类的原因应该只有一个。 -## 4. 接口分离原则 +换句话说就是让一个类只负责一件事,当这个类需要做过多事情的时候,就需要分解这个类。 -不能强迫用户去依赖那些他们不使用的接口。换句话说,使用多个专门的接口比使用单一的总接口总要好。 +如果一个类承担的职责过多,就等于把这些职责耦合在了一起,一个职责的变化可能会削弱这个类完成其它职责的能力。 -## 5. 依赖倒置原则 +### 2. 开放封闭原则 -1.  高层模块不应该依赖于低层模块,二者都应该依赖于抽象 -2.  抽象不应该依赖于细节,细节应该依赖于抽象 +> 类应该对扩展开放,对修改关闭。 -# 封装、继承、多态 +扩展就是添加新功能的意思,因此该原则要求在添加新功能时不需要修改代码。 -封装、继承、多态是面向对象的三大特性。 +符合开闭原则最典型的设计模式是装饰者模式,它可以动态地将责任附加到对象上,而不用去修改类的代码。 -## 1. 封装 +### 3. 里氏替换原则 -利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户是无需知道对象内部的细节,但可以通过该对象对外的提供的接口来访问该对象。 +> 子类对象必须能够替换掉所有父类对象。 + +继承是一种 IS-A 关系,子类需要能够当成父类来使用,并且需要比父类更特殊。 + +如果不满足这个原则,那么各个子类的行为上就会有很大差异,增加继承体系的复杂度。 + +### 4. 接口分离原则 + +> 不应该强迫客户依赖于它们不用的方法。 + +因此使用多个专门的接口比使用单一的总接口总要好。 + +### 5. 依赖倒置原则 + +> 高层模块不应该依赖于低层模块,二者都应该依赖于抽象。 +> 抽象不应该依赖于细节,细节应该依赖于抽象。 + +高层模块包含一个应用程序中重要的策略选择和业务模块,如果高层模块依赖于底层模块,那么底层模块的改动就会直接影响到高层模块,从而迫使高层模块也需要改动。 + +依赖于抽象意味着: + +- 任何变量都不应该持有一个指向具体类的指针或者引用; +- 任何类都不应该从具体类派生; +- 任何方法都不应该覆写它的任何基类中的已经实现的方法。 + +## 其他常见原则 + +除了上述的经典原则,在实际开发中还有下面这些常见的设计原则。 + +| 简写 | 全拼 | 中文翻译 | +| -- | -- | -- | +|LOD| The Law of Demeter | 迪米特法则 | +|CRP| The Composite Reuse Principle | 合成复用原则 | +|CCP| The Common Closure Principle | 共同封闭原则 | +|SAP| The Stable Abstractions Principle | 稳定抽象原则 | +|SDP| The Stable Dependencies Principle | 稳定依赖原则 | + +### 1. 迪米特法则 + +迪米特法则又叫作最少知道原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。 + +### 2. 合成复用原则 + +尽量使用对象组合,而不是继承来达到复用的目的。 + +### 3. 共同封闭原则 + +一起修改的类,应该组合在一起(同一个包里)。如果必须修改应用程序里的代码,我们希望所有的修改都发生在一个包里(修改关闭),而不是遍布在很多包里。 + +### 4. 稳定抽象原则 + +最稳定的包应该是最抽象的包,不稳定的包应该是具体的包,即包的抽象程度跟它的稳定性成正比。 + +### 5. 稳定依赖原则 + +包之间的依赖关系都应该是稳定方向依赖的,包要依赖的包要比自己更具有稳定性。 + +# 二、三大特性 + +## 封装 + +利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。 封装有三大好处: -1. 良好的封装能够减少耦合。 -2. 类内部的结构可以自由修改。 -3. 可以对成员进行更精确的控制。 -4. 隐藏信息,实现细节。 +1. 减少耦合 +2. 隐藏内部细节,因此内部结构可以自由修改 +3. 可以对成员进行更精确的控制 -以下 Person 类封装 name、gender、age 等属性,外界只能通过 get() 方法获取一个 Person 对象的 name 属性和 gender 属性,而无法获取 age 属性,但是 age 属性可以供 work() 方法使用。 +以下 Person 类封装 name、gender、age 等属性,外界只能通过 get() 方法获取一个 Person 对象的 name 属性和 gender 属性,而无法获取 age 属性,但是 age 属性可以供 work() 方法使用。 -注意到 gender 属性使用 int 数据类型进行存储,封装使得用户注意不到这种实现细节。并且在需要修改使用的数据类型时,也可以在不影响客户端代码的情况下进行。 +注意到 gender 属性使用 int 数据类型进行存储,封装使得用户注意不到这种实现细节。并且在需要修改 gender 属性使用的数据类型时,也可以在不影响客户端代码的情况下进行。 ```java -public class Person { -    private String name; -    private int gender; -    private int age; +public class Person { + private String name; + private int gender; + private int age; -    public String getName() { -        return name; -    } + public String getName() { + return name; + } -    public String getGender() { -        return gender == 0 ? "man" : "woman"; -    } + public String getGender() { + return gender == 0 ? "man" : "woman"; + } -    public void work() { -        if(18 <= age && age <= 50) { -            System.out.println(name + " is working very hard!"); -        } else { -            System.out.println(name + " can't work!"); -        } -    } + public void work() { + if(18 <= age && age <= 50) { + System.out.println(name + " is working very hard!"); + } else { + System.out.println(name + " can't work any more!"); + } + } } ``` -## 2. 继承 +## 继承 -继承实现了 **is-a** 关系,例如 Cat 和 Animal 就是一种 is-a 关系,因此可以将 Cat 继承自 Animal,从而获得 Animal 非 private 的属性和方法。 +继承实现了 **IS-A** 关系,例如 Cat 和 Animal 就是一种 IS-A 关系,因此 Cat 可以继承自 Animal,从而获得 Animal 非 private 的属性和方法。 -Cat 可以当做 Animal 来使用,也就是可以使用 Animal 引用 Cat 对象,这种子类转换为父类称为 **向上转型**。 - -继承应该遵循里氏替换原则:当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有 is-a 关系。 +Cat 可以当做 Animal 来使用,也就是说可以使用 Animal 引用 Cat 对象。父类引用指向子类对象称为 **向上转型** 。 ```java -Animal animal = new Cat(); +Animal animal = new Cat(); ``` -## 3. 多态 +继承应该遵循里氏替换原则,子类对象必须能够替换掉所有父类对象。 -多态分为编译时多态和运行时多态。编译时多态主要指方法的重装,运行时多态指程序中定义的对象引用所指向的具体类型在运行期间才确定。 +## 多态 -多态有三个条件:1. 继承;2. 覆盖父类方法;3. 向上转型。 +多态分为编译时多态和运行时多态。编译时多态主要指方法的重载,运行时多态指程序中定义的对象引用所指向的具体类型在运行期间才确定。 -下面的代码中,乐器类(Instrument)有两个子类:Wind 和 Percussion,它们都覆盖了 play() 方法,并且在 main() 方法中使用父类 Instrument 来引用 Wind 和 Percussion 对象。在 Instrument 引用调用 play() 方法时,会执行实际引用对象所在类的 play() 方法,而不是 Instrument 类的方法。 +运行时多态有三个条件: + +1. 继承 +2. 覆盖 +3. 向上转型 + +下面的代码中,乐器类(Instrument)有两个子类:Wind 和 Percussion,它们都覆盖了父类的 play() 方法,并且在 main() 方法中使用父类 Instrument 来引用 Wind 和 Percussion 对象。在 Instrument 引用调用 play() 方法时,会执行实际引用对象所在类的 play() 方法,而不是 Instrument 类的方法。 ```java -public class Instrument { -    public void play() { -        System.out.println("Instument is playing..."); -    } +public class Instrument { + public void play() { + System.out.println("Instument is playing..."); + } } -public class Wind extends Instrument { -    public void play() { -        System.out.println("Wind is playing..."); -    } +public class Wind extends Instrument { + public void play() { + System.out.println("Wind is playing..."); + } } -public class Percussion extends Instrument { -    public void play() { -        System.out.println("Percussion is playing..."); -    } +public class Percussion extends Instrument { + public void play() { + System.out.println("Percussion is playing..."); + } } -public class Music { -    public static void main(String[] args) { -        List instruments = new ArrayList<>(); -        instruments.add(new Wind()); -        instruments.add(new Percussion()); -        for(Instrument instrument : instruments) { -            instrument.play(); -        } -    } +public class Music { + public static void main(String[] args) { + List instruments = new ArrayList<>(); + instruments.add(new Wind()); + instruments.add(new Percussion()); + for(Instrument instrument : instruments) { + instrument.play(); + } + } } - ``` +# 三、UML +## 类图 -# UML +### 1. 继承相关 -## 1. 类图 +继承有两种形式 : 泛化(Generalize)和实现(Realize),表现为 IS-A 关系。 -**1.1 继承相关** +#### 泛化关系 (Generalize) -继承有两种形式 : 泛化(generalize)和实现(realize),表现为 is-a 关系。 +从具体类中继承。 -① 泛化关系 (generalization) +

    -从具体类中继承 +#### 实现关系 (Realize) -![](index_files/29badd92-109f-4f29-abb9-9857f5973928.png) +从抽象类或者接口中继承。 -② 实现关系 (realize) +

    -从抽象类或者接口中继承 +### 2. 整体和部分 -![](index_files/4b16e1d3-3a60-472c-9756-2f31b1c48abe.png) +#### 聚合关系 (Aggregation) -**1.2 整体和部分** +表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。以下表示 B 由 A 组成: -① 聚合关系 (aggregation) +

    -表示整体由部分组成,但是整体和部分不是强依赖的,整体不存在了部分还是会存在。以下表示 B 由 A 组成: - -![](index_files/34259bb8-ca3a-4872-8771-9e946782d9c3.png) - -② 组合关系 (composition) +#### 组合关系 (Composition) 和聚合不同,组合中整体和部分是强依赖的,整体不存在了部分也不存在了。比如公司和部门,公司没了部门就不存在了。但是公司和员工就属于聚合关系了,因为公司没了员工还在。 -![](index_files/7dda050d-ac35-4f47-9f51-18f18ed6fa9a.png) +

    -**1.3 相互联系** +### 3. 相互联系 -① 关联关系 (association) +#### 关联关系 (Association) -表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。 +表示不同类对象之间有关联,这是一种静态关系,与运行过程的状态无关,在最开始就可以确定。因此也可以用 1 对 1、多对 1、多对多这种关联关系来表示。比如学生和学校就是一种关联关系,一个学校可以有很多学生,但是一个学生只属于一个学校,因此这是一种多对一的关系,在运行开始之前就可以确定。 -![](index_files/4ccd294c-d6b2-421b-839e-d88336ff5fb7.png) +

    -② 依赖关系 (dependency) +#### 依赖关系 (Dependency) -和关联关系不同的是 , 依赖关系是在运行过程中起作用的。一般依赖作为类的构造器或者方法的参数传入。双向依赖时一种不好的设计。 +和关联关系不同的是 , 依赖关系是在运行过程中起作用的。一般依赖作为类的构造器或者方法的参数传入。双向依赖时一种不好的设计。 -![](index_files/47ca2614-509f-476e-98fc-50ec9f9d43c0.png) +

    -## 2. 时序图 +## 时序图 -http://www.cnblogs.com/wolf-sun/p/UML-Sequence-diagram.html - -**2.1 定义** +### 1. 定义 时序图描述了对象之间传递消息的时间顺序,它用来表示用例的行为顺序。它的主要作用是通过对象间的交互来描述用例(注意是对象),从而寻找类的操作。 -**2.2 赤壁之战时序图** +### 2. 赤壁之战时序图 从虚线从上往下表示时间的推进。 -![](index_files/80c5aff8-fc46-4810-aeaa-215b5c60a003.png) +

    可见,通过时序图可以知道每个类具有以下操作: ```java -publc class 刘备 { -   public void 应战 (); +publc class 刘备 { + public void 应战 (); } -publc class  孔明 { -  public void  拟定策略 (); -  public void  联合孙权 (); -  private void 借东风火攻 (); +publc class 孔明 { + public void 拟定策略 (); + public void 联合孙权 (); + private void 借东风火攻 (); } -public class 关羽 { -    public void  防守荊州 (); +public class 关羽 { + public void 防守荊州 (); } -public class 张飞 { -   public void  防守荆州前线 (); +public class 张飞 { + public void 防守荆州前线 (); } -public class 孙权 { -   public void  领兵相助 (); +public class 孙权 { + public void 领兵相助 (); } ``` -**2.3 活动图、时序图之间的关系** +### 3. 活动图、时序图之间的关系 活动图示从用户的角度来描述用例; 时序图是从计算机的角度(对象间的交互)描述用例。 -**2.4 类图与时序图的关系** +### 4. 类图与时序图的关系 类图描述系统的静态结构,时序图描述系统的动态行为。 -**2.5 时序图的组成** +### 5. 时序图的组成 -① 对象 +#### 对象 有三种表现形式 -![](index_files/25b8adad-2ef6-4f30-9012-c306b4e49897.png) +

    在画图时,应该遵循以下原则: -1. 把交互频繁的对象尽可能地靠拢。 +1. 把交互频繁的对象尽可能地靠拢。 -2. 把初始化整个交互活动的对象(有时是一个参与者)放置在最左边。 +2. 把初始化整个交互活动的对象(有时是一个参与者)放置在最左边。 -② 生命线 +#### 生命线 生命线从对象的创建开始到对象销毁时终止 -![](index_files/b7b0eac6-e7ea-4fb6-8bfb-95fec6f235e2.png) +

    -③ 消息 +#### 消息 对象之间的交互式通过发送消息来实现的。 -消息有 4 种类型: +消息有 4 种类型: -1\. 简单消息,不区分同步异步。 +1\. 简单消息,不区分同步异步。 -![](index_files/a13b62da-0fa8-4224-a615-4cadacc08871.png) +

    -2\. 同步消息,发送消息之后需要暂停活动来等待回应。 +2\. 同步消息,发送消息之后需要暂停活动来等待回应。 -![](index_files/33821037-dc40-4266-901c-e5b38e618426.png) +

    -3\. 异步消息,发送消息之后不需要等待。 +3\. 异步消息,发送消息之后不需要等待。 -![](index_files/dec6c6cc-1b5f-44ed-b8fd-464fcf849dac.png) +

    -4\. 返回消息,可选。 +4\. 返回消息,可选。 -④ 激活 +#### 激活 生命线上的方框表示激活状态,其它时间处于休眠状态。 -![](index_files/6ab5de9b-1c1e-4118-b2c3-fb6c7ed7de6f.png) +

    +# 参考资料 -# 参考资料 - -- Java 编程思想 -- [ 面向对象设计的 SOLID 原则 ](http://www.cnblogs.com/shanyou/archive/2009/09/21/1570716.html) -- [ 看懂 UML 类图和时序图 ](http://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html#generalization) -- [UML 系列——时序图(顺序图)sequence diagram](http://www.cnblogs.com/wolf-sun/p/UML-Sequence-diagram.html) -- [ 面向对象编程三大特性 ------ 封装、继承、多态 ](http://blog.csdn.net/jianyuerensheng/article/details/51602015) \ No newline at end of file +- Java 编程思想 +- 敏捷软件开发:原则、模式与实践 +- [面向对象设计的 SOLID 原则](http://www.cnblogs.com/shanyou/archive/2009/09/21/1570716.html) +- [看懂 UML 类图和时序图](http://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html#generalization) +- [UML 系列——时序图(顺序图)sequence diagram](http://www.cnblogs.com/wolf-sun/p/UML-Sequence-diagram.html) +- [面向对象编程三大特性 ------ 封装、继承、多态](http://blog.csdn.net/jianyuerensheng/article/details/51602015) diff --git a/pics/02986f62-c641-44a8-a55f-983581490e0c.png b/pics/02986f62-c641-44a8-a55f-983581490e0c.png new file mode 100644 index 0000000000000000000000000000000000000000..96726ebcbec6d9611216f63316592a8a61c56566 GIT binary patch literal 418816 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

    >W!$-TD4r9 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 z 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

    wW4>a#>X+HnDtjXl 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

    6GNx&G8|_CV)m(W7d!kavb1n7! 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

    ew3T8m*P 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 literal 0 HcmV?d00001 diff --git a/pics/10f5e35b-1c71-4717-9e80-47f259702642.jpg b/pics/10f5e35b-1c71-4717-9e80-47f259702642.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7041fd5ffc74e39acf8a404e968b8f6635b53e68 GIT binary patch literal 292864 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

    @)4|kkUQi`n2~m2-Y^qu*}*)C~J%Dt_w)x zc=OM9>DWaYS<({R$Hn3}btNr0oyizHy|<@kML7(d%8IQ08Z7WQ!$N-k3pgt+RnKT)h3|RDs+bBDr z8;+xUc=?!wG$tse>5;q>`Phf@n=Evf%OEOg>_4YQvJEeLOu9Qo;N5()tzo%rPYp+x%^W&iAJ7-V54w}=w z<+{&Lx7C5HF2_HV_o{$Va*bA)sit;63z_zUS2A@uvSXetj2ddw+ELf$z=o+J1q787 zM(mzMVj_v4hU00rZ{j+tZ>-I-U5S6jGpGMOsy9{jtWYl>{>Abvs6F8}mUA!Od{{*| zR4MdxZZ}J$<+c{Kxv4+vvUpz=BK=7B7wQLBBbV&wW?Q7OhZWb<)nZme_UBvp0;wos z>y=(#9$94jt3nJ2A>x-O(+@#c7uSQ9r{P)`JjwpeS(zTjgIZ}!b`B@Bq6znU+rm%o z)z4fy{Irq~KxyZRxYu4Nluq?ExzY?ofKj-z$R8*5$_G)6OIKrCLMO8^3U4G7o(-e?RYhkqV%o64?nR#3@l8Bij z$p@h^?dFasS?cKbu#q(b|7Wd54+&;(-LJ}fU|LO{lugEx$HDB)osIKCofEE=5~mfQ zD~L0C_#=F132T5!W89k7l~N?>4Gzc3UdVd({pyWCxn_Cr3Yte>96EjDd-U7WT|)Hm z`@tw7d1D}=K7Y(6X%T59;?LdbJb&#QBk}X^*b9l@dXSQz=&Q_`(dl15k)Dus9a=&W z%>*=ywRA4Ie1Pc*9}T-AbAs%Bo3rHh%*?PV^%(D>E{G4lJz_{;D!W7|LL<)$PC)&u z9ABv%+SZiX*W^Dw$k>(;dsR}=OdDdu;m%n*a@F%xq&ZVwDP@o|o+35j!M%pod=}^B z$148-+&fPG0UPfRolu@T*e?Ge4~4jFKGzCgLhuOx{*nV@_S9!K}Vr6 zpuy;0E~!bgyi_X;>w6D-PM$bxjsr3>KIM`&maQvF{?pq}qG~^~rXo2IAKNsa(KkU! zkYI;icpp*)Po@`HPw{`gIsG;Ju?^M$oC>B7x87>KIL;)G&K4;iWed7uu*xqz5rSoiHWAA3~ zW*2G=iXNxgjvw`&UvfAkI%sZI0##E|_*eb|zy%$FpA=AzCT}&b^vVQ($-&eMCa$<5 z3zL*FIYXB1%dzS2ApN%^e6&hm7w}jqgThtM($l{om#J%#35a{V!koAp2&mVg23G$8 ztS%SvnpDJIbsNt$*@TuQu~^ zPr2_n)mu9uG66tws-{(TSP1CE5*A1WzfM73)4&Dz@lRXM``_dS)kwLmG?5E6So-(*# zz{HY8?(Ra$kpQ>#G65jlPXh~af@FI~N1fJ0jyk8q^$#$p4`cc=n4Qnc?l(Kg8Cdtt zo3LSl?C8FK3UM3@7HRKb7l*##@mf)RXg2zX)N1Vj6u7#KjcIjrid)cPOt=26TqUsHZ%D0cS;1$cCwr?qYIrZ z#BX}~s3pl>~V&QH~VuVZaP)K-YCfaa- ztgNKs3b_y(HD(umvmy3fi}HQlAw=z(TT^i_H|_=34EuH0a&qn>y`X9}YS0+?uAoiw zL<&6@|5!(z8b)cVuw@?S#Ts+rNb`{d?d3{+_`5Xi6(TR&h1zNFVm#B_+R)0`uJzV# zc9%m>yrZwqz!WpF?hj$=1o|D4(0Ae;t}~wv&!Gjn$o(p}j)jilfyqLk^wb?g*k9V` zxZ{rRRMyQo56qi8$sVUzNgkgpYC$&1@PBnO(gFmpY0fj7zmbNiuQny&YtzTzq^&M| z*T(P5r|H`K_Q-crU#U^HLzPE&_V=DRJ1V~Lr#cRIyy!(?e<5tGq522K@QiC3V}5dh zGlmwW5WRq*68y;r+%&2s554qGIA0$NsA0oIZ#8Lu-}is^-2WXQGFh+)YUBQKKp9|h zBi${}aN}E?DBioyIx8nzhDEmI)h2Vi!$oWpfz69uv5)GSddF9QegCKE{?GR~fWp)} z%mTwdE$Ehev*y8YU`O zXEo)AF-V7XQutvk!rlJ{W3j=;hYOR}Dt;#B62;xrxTwe_KHX`dJqCc?H39>g+vBR4G7hV_zJ zerxCK_hEu295MGP@Q}SL3FUqcROLJakC{C#Lx7qw3U_GzRdY?iRrQVVd9CI`wWN92OS|YQ zzfTeYRmZftUAe9-Tl>~-shM9?EMYW8XsK=H$U^c?G=M4I*yxajys@=&p>x6#>yUg5 zckSKmPrPc?diW9yjc~muG8gM9kX;d8x#5ajaY$BzqWtBas`d z_Ro2`u~d-1&copLp77!{KKmf9%YNhOjs3P(KiSibpNRn^DJjNgL4`-9$ke>`!R-$? zk9)q1R^ub$qhmg%d^{UbkHUWT+sa8L-bH>jgXbqrD>@-K21OlT z^Y9E5`G0`#DG^TrCx3yCK>I#QBkYo~Vwu(?usY8(uqMk*wv`L{yQVj)3Qiq5ouigq z?q|1fxVaGmHE$oIDVTQK`qF>iIz zm^hxVVFdW;lO?4e8#G@f=&g*p$SrDC4LE`r2r0dvaiWBue{3n4*M>22F;*GwMu(m%`Xnk#GOrvxMdCpRa^@6ZJLkrDpxK)bc=qPVH8y)Nz+@xR+uKF8{sVmFIbhL(H;LUVRh_#JnI8Ta-)uxj(tUR+x6!+pf$4ZG z0nvE>0<0~RI@+#z#`f%?Cf7e0`A<<~@CsggQbz-#vXhyZRqoVOI2I)Oc=@842fOtp zpz8tdYH88>!O%p`9NZnn&pcV7i zb@a`EbN74rUyB+)RB%bbuVOzPF+{d<5`M5_cPVr57d8H;l<9s`r4*vl8=V6-jZsORx)dPM@-|9@XH%Ty|a6g0Xz)|WUfkiU{6b)Mp z$J7V5#-3M@oa=`1r>1zx5>H+w$2P?REu*+*_rrD}TTU*(9gKnK#W#34yD0l?ajF^o z`m?O5j2(-PB&y&hZk#6vE{2HB-iBf#8d8Ef3CV5Z9u2S~+G86~8Y6pjas1Er8k0+Y zvv8tX>!X-8;RnrbQtI4gEB}YLw+?E%joW;Kmma&Yszw-I;gJnYn*6_npaqKe^?5UDv0q!^9r+ zhn>l|y}z*A0Iiydx)+)TQvG-u1-*92Yktfy%#pZ*jPG*y5%@iY`UQL`i8a?=u{GR~ z!uK4E{DsqXL1Gf(Yz*wHHW{JHb1Q$WTB850H)TVO4JW@sBV`V1)&XF<=a9fs@5|+3 zp;gD-xd?tuWUSowC@@6L}^j|lt4z23|zKe;bc-iK!I zkn3kn_S$@)cZHc}x|eM(Pj(@Qw>hPwB) z8H>o>xH1m~7S9sN&W4IM+cJ<90*8TP^gJ7uKTsllRsMk`@O0>K&XQ=&9FViQ({Hsz zCC6DKBuA6SK4FBS*8S}&l;SQ~N;+~VER3J+jkd`Rz)HMPGw@0m(@shiB> zd$Dn~EZy5sFy#KVGrdMKgj`ml;?@QDsXoFSDbcys$CTu@+ZpcQh2S6ws&7^gt-DAe zlbpl~ng`FiP)!B6w6;;*gtTk5F3qnz#_hYQsk}I>E#QbTNfFMPuF{VjmAU!+v!%Bk zf(qDMV7hX43mzAsx|s=|f_#h|H`_ocrL4qSU4_vX%Y@3kSVX^mA#nDQ9OBC2Q@Pid zkEMvk%Z|=_EShus#WH@!j~sfuxxGzn&0~|GXXE={B~a68AfK{ZzJ48aG|OgbUQ!xu zyJlBFVMi>Z9xX+t;L?>SRkPPnj-#bG4v}f6M}`&^!J09&K(jq=;>mIr8a!FaA0s=% z|GIJiP7iUN?}goCSd4 z_^teNkGa+E4%bqGIH2F26U5b}t2XE3?jjDFQ9y~D-H#r29ee55@9O>!uWO6#~6(P4PAGx9);1u$$QQHo_(e4cHr` zwp@S;Jz`u}W&aFTcUrJZo|9NdpDcDQa7a0PbPFgmH@6tCcGa7$rP@}w`o_`tSTPut znU}926aCaIU=p%xSw00S+cJhW7Pifw6=^CrlS)?ys7%lc8@Y^JzsgM^^#Aefj3WuC z&QaeG{;K4j>~6wJZv5AsH@_=8**=`Qe+V!zBIa%n*MJhqeQ{GWZfHx7SnszEi|J?! zSURy;?()zD8xtg#y= zGFu%@y-lUZ_<(YyqP1g`VTLd2S5aLmPD+c`z0xp67IeXJOyqmEF!V}@g~SP|S-xe~ zywp$wqO1yt-d%e%)n-?G6PV7g(jYI^iev#`=~)gq{FP{~tB2}N}F8NV*!{LiGBo4(#g4BNi`%~7M6tKt%kuHZ z9;OkdKJ14O3$&%Sd6MD2u1-@zD|_`81ug_w+QOhhLfK54Vg!nFv4RW$O*bwT=k%WY z6n!R_#Ni6NsKYqtS_{lsnJj_lBeCjvz*nzmK6>FQccQx z`;sl728hT+ucI7*josaY7LF(fTi*5W4|l?8p|iGMI@aYZT!0&rR6da-;EZ^8-#P+g z)uCd?81-(?10T_HB6ffgz^VsB7M_r%Oec}Lsi9*!bVz;mO;z*!P_N6kcjH+XjU#TT z;E21YOX?J7Nxth@BMo#{iQAn=|7*~#Gw%HTH12E@ZJ&gM`k4bTN_g!tPMeK!{!UIU zg``nrz;S&2U9FtE*kjym+kyl>yCus=5XTUzA$ctEtpz>ASa7E~IXl+%vRh1IY9^?B zV>Hp}YCTq9+nOY=1n7M8Of6s>v)q&KfM=Lk9T3^bRcJT-y0{}>J+7F*TR4-@o*-Ot zlp^?sS#T2ju$h1H{8JtDcsYD-!4|ENx)iannEzk> z;0zhHja_F~*C!)YpZG$EMBA?`#UAtKZD?tc026>OtDil(N>5{hv3D@W;z+sQB&I|N zt_QAHqn861HK3U9-I@7 zcX;elyo*F8V2`|J_ATme&LOYRK9r4iR+U?5cm@$6!4UoNIyv}oKXVf?JqgH!h)ZKC z1yGQ9qQP!2d7keRrrd2LJQR0ucuqSnOPACSfKxMlRTH#3)gwm^){U6`JOES-fi>^0 z;{ac^TIF3+CM`DL>f^P)vziM!;jht}QITqr@eLGu*Hil1ahFBd^ZLn(( zjjw(}beb3=D)?7V!+;7P#y0|TQxt5tZE@WBw7PSzrZ4z$M>punBVUcZe&ADMKT9&y zU?CpkuhDA%rqN~FF4G#VJet``arO@jZTP0Tk7mFeeZ{7F;iML0Ax2IB(eUh{wYieR zcGy?*e51){lLwR9|VC5(uNn=A! zk`k*s8=`*!?7is(*S}(=6h->k;kN{ok z#cHNxpaT>K1kb`p(@acFE2*_PJ9=W2ZLjHrkDQ*4vBeL(Y-NSA7ixdZKEgC)+o(z5 zu%mIy#?GK0&A6DsTKzt%gS^DFG})qS>V7dTSe}Zk6&7@%Ts`yl z*>!p{0&-ffp`6Br?M{<~ij~6#-l(8|0U_+c*FSlTi_pwwS8e_qYPX8;WX6^{c;uGj zNY;?e)zgALn$-7@A}s}6&iPh9CCdy-{6pF8V+h%0Zov~F1at*9w_mN_=@z7?9R_3b(ObHmB*Kg2VVWvmf$M z^daKF5=(nrmUltOuCp=0cOf)s%zZi2iFGXP4RJ@>ojF&yD$O4JiF=ba4q5ImTEHH; zWiLsZ!9}7#uch$~&f&6IfyJ>N&8$L*1Y`|C;Ke@}NkZ+^;gkgiL|(=4D%mt5&Oeep z>4u|?Qtj?VCx7?tvkt`KTUGUiyn8U;)i?`e-c1u-TVGcw-4K`n%>jQFI8Z&=&zp$@ z8sT^03bLu;$6glVcL4T%b4}FxZGg`%E|MvCH@nzOqxx=nPSxk-Dglr_X74J&^TZB= z!J|Q#-iu+^kOl4NDR=5+h6ZZkGhsWm{4RYOhg=1$tZ%qHtMn8Y$>v9s=s8RJ*?v+u zy%_H>@27_f?Oqx#LId%NR(>0?8vJu_uH=@sIwP&%jIYvxclOJC4{Lq_GWDmHYso*Q zeOo0^OLet9v%McvYx(!u7jpcRT<0i7p0W4XalQ6X#+`{|vwh1%zDq>E7x}kn%_Sc@ z8o1U`Yvq4-2%ic}z3YrTW6yQb66fGJ!Z2sx2Bfo>Uj~0gPG1ZyWjgN=vC+R4K={Pi z6zF?9Gp5hQ{PRWM+v8pju72%Ce>9%j#BI;umw0dEkGb^sq+d%(t9{;D$=#i?wm{Um z3EG(%y}IobI8)EgxD=1ejiQez7j+N57DW}0?x4-`$7P<#)$17Cy-^^tnb`e*(7V%V{$%SMb{+0s+ z@MdIL`gq-MuZOp2&YNk#5|+^f){J>W(ED5(eB-kAB&DJk98`9iP7x)--@^;h+k$1k z-HSE80m&N?^f6BH=?$ii+`>{CP{Fkon2$jb;<%0s9pcAISvsGbw-e_3q`CU%`Z_Uu_&3*o{=v^oi)^MzD=@C@eZll-)+pd$L@a=J24j}K)ve%e05IdU{Z4( z5Z}i8_eK{k4RDx^%Fo`b1e=8hsx3zcF;ecMZA-LeySW7IGfyx7olm3DvVk>ddb4VE zdHD4}!`o3>l;3En;m(;Roq!^gJT^R=OU2>t>5utaa|;(E+#_u|8|Tge&V%(|rG>3Y zPKoPoY3-{e334k_v1ATwfUE1b^mN~H%+Obdw2QN)oi)WNW7F}!0J~Tdd-M4F;dw)^ z(r-`q2+rqEzYps#>hcfib7d$N`5zQQs-9s=tq5G?|EXDA6Wkj!*FeNvzrITBqGayo z1le5cFPNU{w_Qtoar4!@Z|hgGk%;=fHfpVW7u98Xr%Zz}PHzw*CQ7)ZHFY&*&w=Yk zT1d(_0VcyLQ*)`045q26D|@W2P(X$G8WRpug$kjg)ScnBBwq#1q za7~)&>QuK~=WtQ-6)qNGVnx+9z|(2ap;f*CjBrID%G!G7_q&DH%)oJQEyY7UyL*@K z?TKLZ0n5qIl3zPNIE&YXvt5Dut$9Aii>z)U#Tgnc7LPcKWp4sU2|0N-u{~!j|v`kDV4(n(B>{=i2QALD8OFmx5Em;<-ZuLFULDTd#N$@R8f?u0Tu)(% zUO!8x(rd{?jY3@|G&^c!CEZjK7tvgR582HzH9B3SEd=UIn0tp`KDO@E8k8$qZ=+L2 z5ctU4x3}`PSQ5xr>fHr$)OaZsv{k@m()7+7ei4hC_ z+m2mk^1iZ@i^|pGc-M?42Sp52HkNSu1_}QhwqaJ#t|;h?p82aB#k>zlKyQA)RI9bz z-kvEB6hN5(5~r%XVNoMUPyE9DigGq2zZu;CA^G3_qx}zqmb=7z@j!_sImxH7U~%M3 zOfY|-X0pND(Na-sTLV&d78n(YuS3bwaJT4v{fUMK`xoBtn?#s%(S!75e)X<9spUwS z(`Pdx?|=ZdCVt(zk5SkKKd=`Ih;Gx~A)~{}PjfgQd#X!ZNCc)z5!GMgoL1~j)K8w( zjs6RWu_SAuPrl`1?$`dB(U#K|6R5eTAz0_mt_qr{_%y*+S(e=oCTftaxO_pQwr`ts zx>p|4Bk&+_8Pb;=ZHXr*Egye?^l9mCO)UTY#N5)HLnJA#EqFQ;FPOS*1;I72=Xglq z#`?qlAC<)_X-4QlQf&E}i&OzzI#Loj;vG=0b~H|bm*%wN$MBsvyN(Bq=Y2L zyEM5hXT);Ot!BnCb7qs$Hkx}0fwVc`^o9nSA!8{F&6E zX|o2He{O65=PH1pmrtJ!xc@+<(LkXONl!~!imL`kEhhRCWc8eyTwXsyJ=BkID{lFQ zO|=Jwp8bB}`c+GJp}GjQg*D~v`X{7HM;oqe3y;2eRyXaQuyt9L`}EvoPx-d3+|u&5 z(DuDbtEA-3JWZ{>SJ zRTFzFk4R#5SDVtbLAb02Ru9xB)?+-S$&7_eEa(^PO54?^ZcKaiaQUZSK~n*u&v7T- zOMDnuohYVxZOWH*X05Tg3gA3uMzLY*NM01^3r71hPM*w;|N$h&}+;&CCC|;UzkhZyE8rh3-z@;@usq{nvJi zZvVM~B_O0vr5CJC_V5zPS=WcQ49#*DBuD_oJGzlXgJI+!+EUb?DX!>yRB?!jtkH#k zzWTxZ{=w@J9ew&VeL3DEh73w?Eejv)N8Tcjk>HKcuHMfhEL8XT5zFpJ%^~>z2)rcFu3hsUAY)@Fpo#@yGCURYIQdhzSk<4%u zfAUo5RO2>JEn?R3b5uo{r4=INR-#WA)@b9zaQ%cSF#hgbhCDsDzogz>N?9hqZ56_H zA?0yy-lC*z_Q3N=^Gv*6;mi1=YuefSKoNrSn01|++@cV_oA)r!@Xh?#D}Pp^ythSp z8@sC=y|fHpD*q%@2s!-w_e34~Pc=EA@GvBB&289DZJk5G#ek87<16X+W$mEtWMZM{ zedg86iHcza?bROw47$On5FePZKudu~&mkWgcsJk!cyEkOE;B{X>IU%>zDyZ=8-0{?#wFpNIVowZcspZU$+bAS zYDF6Pd6|}+x|3u~9jWi9sPTu6-$YGTUiEhstvg}WwJzuEz0Ww@Go78=(0y8Yx%Az6 z!iF`djIW9AohumDqYGf;%Al(Mv+$!xExas7YX7M}Y&P?Bmn*#Yl?RnpaoI zL_>;djfw`5oXx}`V}#ciEZ&TSM)=1M$Zux zD6nQxWclbN^+r=ZHuGNoLqoke-S`*+?Z#tbH=I8gpvbyLeN7l$BD|JQ3+S4H9A|Jn zu2Nt?8FOUw8Rz!m=)2UL@3GB0(;HU^X!e~2;u`C+QJg7NtD4Eu&bB-r?-&<5#3d6! zjEg^en%bK{P6=&NhJAYw4IsjqHOw5cKM)qUUJA2!jEtbA3@h@l0wTP%8=QSG{22Gd zN{9a8t9Yz84fD8S(JBBt=C5whQMt|T+5ey47X345eSrEvhswpE|QRsGaH z#a+FlNr<`d;SulV`r;$$r6}OTW}W#liBFl<{q=z-b5=%b$JFF+?D}a;m6*ns@7=0yQJXxwQhL!I<7ix=)KwYMT3v}?y$G%@#jhoOV@=Q4e-mE zY|kLV#y7vB&>Kom{quRa{@AZV!Cwgfi}AT@KGH!_ z_gR}lo6`dA#~Tr=pKh~u?wc7kU6k`J>dlMo@gL}XCP7YAuLah$fjDt*!_10$Q31Km zhGXB&n|VV%@hns41kwf9+51%=Q~mwCX7OI&V3`C?&saqh8y-+;WjCSiG4ja>Z{lNv zsyPT1zu{$guiD~Sxwa{>4Cg<0!#T^;vNAwpaAUR}vm06ZBH;}w4hlc9H<^}%*cXeV zkrHal?67DGgSPp3Jv5_!Crd1(3Um#w0Mn2@3#~|gkqY#fa_Rg4L8Y0(S7CIY3BEAC z0iKEH9<-Wk*$n1-8xWV{T-kN~q` zwjG4;z5=|L(?4YA58eS87eh{|P8f@D=5P74RZlZs&RBLTOY5fqha9nue6I)NOPakT z8!O!i6%XJW8J7GRZH5~t=jkI@O0(X9{_b!_tD9r%uF3|-WDm$fjUti#-IQm?J8rUc zBT&04P8Asl}Bbj@h3EbJRVX!{hA~1;+e78NTu^f`om6$2AK5=h@k6Bd`wt(f;smn zHjnQ|e~ib4n0T5I3c#&noRfqk*>6t;H>=sm&MTbCwmg~)QDIR=ITOmy4yx(Km<>=3 zNAPiZESw%065vVx_)Wt>La13HCl<|@X9xZ!eV(y(5JRcx4(5HzcQDuUO*&VvH9dL8 zkwjn3)hQM4Nq`|xq}`NXt}gW{)Am`v$9P_29lYwfu1DFU4_C*%}!xLzG} z)I_}XdlDCwReQ#@_m=GV;!C9#$i0zK6QMYL;*&(PG{llmtA|N_(UO{K&-?Y$gbZIj zsa@h5s^25k68)B2mH~oInqp?at}%Wmo4mM~S+c#*G?fA#Ql$zb8^x8<6(mzO=Sr&Y zvtfG(Rfd$iNXdI;pxgBG$I@vw(r;HC>&jGrVbU4ju`KTDM4Hp4f>h{e^v$qb4aRHt zH&WeM@emvsFDU?1Ogpx-u8e=4WokBSl4EK4(W3W=jU%+*M!KPXF**1IcaU~IcDGS* zr4K&U;qc-gD#*DryDo^eh46sR@=Y`@of+v-6sG~k)lb_QDQ6BTD&$HC2%%Y;onQ%y zQqJni+APRcqLyj!`jOm}f^96}r_&Ij3+s$@(TRobB!7*ZjD+O6G1Gql3U?t{S-bmGKF+stk*5&iR#O#x8~{$9?Tk|ACFw zw4erkdUm*-O)LFCE6P`!rZurlGb&nM1Uh(i$NZ-CCz{5sbglesB(rVu=oKL8{CH}| zph<(2lZ-=m?dMu4t_T4i6*`=G96u~{r6PfgwV_oL=ewDi@~2aO2#*jf+ge>ESJjxB z9nUYrEcvzNk+TBtbHc?bp;0Gr-C@@}d=V08<{pNamBP!L{d>pXXQ&gfSrS@|Th!PQ zH;j~9b@TD`lsLtXKIiim&%_DbSF@LSpE_K?ZihhwXnF%6flo0Afv`@fjIOoBEkSvR zp1G!gx7C8%$Na;bcON8Uu4uwbs5ehZ)Hvow1RA&bzGfW0Kp(dzRPw*w+7F0`xS8x= zP!%)k2TnOx5QMP#*ODHQu5%mb$b|YnY#2&fO|IUxfq(X4R=3uqj&aPHY52PBr;?xD z2scB_IEXp|>wA%x6tAutKRRuC_ybm-t*J0j3*qru0=J>Xoemh*J z@o`2V>|Lm;&)i}*YBi8xum2ts zY()+3m%M>vSe{*Q_%gZ5*nRnyd$!g7f*zbU6&MjA$V_e>_idAXOm-!SR^k;b>kQ0q z$o-zX;TeECA+SRqABYhuKoy{f?;-sWVQ7qSn?99Xcbi^x8jljZg|8fnr0yqRwG;k% z^=q#6Jf~k>U{KE;@}3t%OhhI<9heR13(3UuAMpUZu9QUx$^db$S+jrS6*-F^pjmY5 z7hJ2j+oE*VsYhgVqOU1S-N93`wU84vl67>-u$@Yx->5aWItOGsq}shR#>8yjVB&&p z@jbl_I$r--Oj`mVs(>`*1?{?Uo?=?skOcaQRukVKR-!X~SHB zFWogET!C3ffjJ6*{wrDwUi|O}-Tu2U{69A+O1@tDzm(5j|?wKl86DrB#ec`L*Xv^6<$QX!fsR9B4d}jb&pqvnGelu z&b803DTj^CsD-M)Rna~n6YTqULMsH={|9!?!wAZY)qQh69ZX~82=H?UzasP=CZ??F z9xi6^UY~4i7*KHjguaKxuHo;(Z8u9|RhPG}!YN4nTIfjw+<6~{Cc$x3J3A-xu&=x! zaE65MJ{9(!-uycKX^ICX58E}lxae@WPnEAx~_|2*@R0b8)pvRMSsxPxQb$*obF@0tfHZOT?U2LxUfb+?N*5@ zH{AJy9k3cAMOeswAgR3DkNmvcOti425>cS`ef{Wl+?>niMpX-yw@N(YSMSCkc2)|q zc8hJD0aOb7UqtBYlbmgIy5hyo?{FC+vW-%Hgm-X-(sM}u6)faf(v!4!U8+8z%odx_ zS4$uEo%We1M1#TgoR{m{s#(0P#1NW3n{}lj-snmnW*!D>c|H|wDJYhBLVT{k)}9X3 zzCL%CZ+1wW^K_S(ByGCrbZ8?@k5%GzGVpA6rJK=Vh}i{HboJt z`l|9%S^!gJ1uUn;NKYjYdFOPp%qQHeN;vD*uYFLDN#dKOIF&c40z^`7#Jiw@ExEK9 z8JtOK9){cDReGW&Vtf24pK^U4$bRH3$*-a|T}>zAu`zdf-Y)F>Byk!?h=X-$2BnCu z$)F6OYV8#OfV~PoXve>h^my6SXV7D?pYelOIkYfp?1khM!nw<Q3)s_X z4jjy=Un?H)YOB`}KNZLQ)UJ-t)8st)q&pa+t`d7wxD}UcXxX$0L|5?K@(+39)x7PH zHHkv2C_BZm=9z=0;Qa{Z3_42~pz5#rpe6j+(^FK*p+T{Z!!!%Bu39n3YWw_fMVPSZ z{F+H`wr#Zi2SMtlsY&&^1#pBk(XD1h(~oI}O^sDCbu6kN#yIqRkI(=e-Y&u{J!{08*0uSS_tBLN6IGhL)76Tj=V^Z}0@3&$hwB=_xy$Te!=+a_}@YxWdY% zuw~vqr}&xmL++CjA05|kR6WPR$>*W`Ql>oe6VJ5)ap^$hkgcb?IPZ*1P)fB14X&85 zE{KbID)ns&CA||SB%aeva8W=28kqa#SEZ_@bK1)B*&{`J0p_ z#WR_$K`{qpSYC}$iq-5`Pv0maRTTDd5R^;h{{qNX1Z@_I775-qI%N3M5FwM00EC}eaz8Po%55Mc$fbIP*Kp)W|QH> z(vd0+U-3T~Zz^m^OAn_Y0v))_95v-P2?iiwAmyzu+?DP6ryOBxi!rN6{Twu;DW8;H zM7HeO{zy7KGd}rEsOwP5mknHXA4aZzb)Q#1yTZrtTiU6q>Ksu4@2aK^OwJ}q_t%je zbFN8x`jkSs_bNVoc$#_dP{>;TT5NA^2caCKp1MP7iXtmnGa2uOG6jcl1cyob72s6{ zx_)G?0JWWaptidS-<9f$J^NI?K=scWxkq7O>sLhAySvjtHtNS;CcJ#|k#c~XJ*D&q z`5hF5NM4(Wu{PIk$r&8D#X8=0LHBFCy~X-|OFa0tahrHXV}bf!l2YD!QM}2$Y;uC} z!3#)}ugXJ1)RKd5*VmLn&XGKrK&qGpZZ#Qk3_&Gqa-^-VZ?ZNeBgg~h;M$(-*w33( z2;W))qSy(CIRvq|@e1ntLa@fl);BbE)E&~9XgJ$aU9GZ>wL6g(`Wz*F!tPuAbexYr z2`LB(+5Yj;EN zLu&^!+B}CGU9Io+N&Bc%Kgo@_(Y~J$cdfZzQ5EB;t!_Et=Ew*&O?iX|lw=J@u7!^;d$R~x-5U~CvH&cR(H;E0QhFLe z&ejeQy66xQ=m&O}rApDezLEjyRsNEos`nCu-r=bQLOCnaQ-k^Z;nRDjJ$nmEa66AX-%GdVz>`sK(7dEv+~3yzJ;OPlhxqsq<6X`+9@Qk)M?uxLk~TWL zt+~4dT|k_+mUyG41;Gp3=Cqlw??F3(l=&x;R>~pnSACF^_W|1Au8%k0ziYi)+D`-- zgC2c+{spv2D=>Bs#h>bK<#Le;_O*&slGTq{1{*N2Ow$4?^unHtdZUs6G_3=dMIK-@B3val%)4ztP;BpsUaYh`O zwMpE+Jnkj$c^#-aCxnifO}k~@Mtmc1s{r1{vt3=EoirK)-wxTPjDWnlAZB0>vv*fa z0E}JvcvGS1K+T;Qd{h5;L=P*HFauiZOs6b)<1X%*f`X*0XQ{F!47(E48$GY{>3g+` z^g9zkX6}w8OUMX(9LdoR>!Fq(aiV{K6U;x1Dn)s@k5^%*KaaSyXTv4p3jRos%MW~r9e~{ehy;5k~q#NccwjhbgbM|No zXU0)^-Y`fA?}HZdMWh^-ztj`Od0p9qCNl40fSJ-Im^EUE`q!958lPfH^Sg}gz;>x; zG@)yKGxd)Roo#XFOHMBh{5e%MD3fv2`|vL7(Ce<~5Gq-W?KSyT3?Bj0IVYIV?h8t} zx^m-Ui}lr-<#z(G3IC>-GoeNiDWX^yae%*|9p>Z^2lv&PZIj!v5)fTkTj^AZRJ6D` z`=AEtf+_bwfJ1ZKn_|Cg@uB_Tk2nF(0d=`@SZF|s_SuWQZoIwZLCffW0Z4bBQxkr> z=#^M-pcK*Mlbx07h_Iyg#yN)_r+I@#>b*-K-6dX(9PzF9E+@=Fc&R1m%SeVP(4|L` z9KPO?kpD&8aA~sPnZVfaMnmCUP!mx8Qs-jDeTTW9d36J(wB613M2aRQN=laP-UGYa z$yE5h*%=?EFQld%g(?n@$m-y2S>p6M34Psa77P=t+h!&+Jw^R;r4|{kNdt;Gx=fG* zMn5bKtG#+P71(ttG#Jcyx%EI%j7n|k=xWi7pAvib-C`sC>!@8cE5~zSg}bQa=qnjK z2Erig%lIAU$Y6q7!I6O{;$QzfQh$i!AVSd~k6K@+Ze@6By!0jusQU(!y7c?GMIpak zWXZ^m42k$;NudP#@w>6Vv-P{6ZJb&pu64&dT&v==Ym#0ej0(&b@TMUq+Rn#Ld3(Op z>SHlAchBm_BKPLOe%T@FG}uu>kMB{B=M?&|^77*ru!S~qp50s)4}`Qzo%I!(_+$0MKSV&yPsS>ZfzBxk?tyyT@A*Wl z!nhdQiSmJrr%-gYG9q|Fo={fmo+VIm@qzVnt=|;4+m;AADIHx<(&r|t-sX|*J6iFK zOZc>JpG@W#-oh3RxbC6{a7%n5-^BRAozPgltJrD#8qILCe~a_c^EmV^!jdoW!-BjM zb116wVo09slo=o^|9MFR^rdF3{6y2|bHj!I52Y^ewpY(YKj8fsnX|;%Uv`(bFZg=p zlt~qGnX0)%Bmo6W*h7qEuN|rAbP^adWm9O#Po$TRE(T{-XLf~#h1QzTdvoF^t_P=% zB|&TSZRE_zq>_H`0XKfn~i)2=TjmDbA52S&xG(G=S$;nJw-FkrqAdDY~+p^ZqD|${{_S`lgf$THd$Uy zmG=kX4L5}pf(i&*+@w#Y*EDiy*{}X!*cqhmt0meIC#(pLgfA|koxHun=ooFh#|CKm zZPTuR?@eD$=GUD$A4k%@{g$cSSXhffOs_BHb5%v_tn>-b0W?qNt-PbTWq&W;13j|# zW*1eu*9|`0UH)(_DB!l2O6J6o_ihFQJBr(bhPgLI?KR+0^RYl&JC2F*)`vI`>1{C! z)7~8w`I5L3AI_sEvSF+04FNe!78yad3TrBLesCKxFCKj_qD_PSrJJ!f8(+Icro z#%p%FXF+EAJEfj5MKrAEQ00x`n~AW9j<|?nb--8D_+#$_98v*$tt zjQ|U0k2r72{}-?`6Djmh2=R#=NBx4(!>PaZy|`3bab}W?C`+FHn&dI?aH%kd z_8>=~78l>^ys7Sz5zQpH=8th&v!`oqYIgV4x0{^k;FV|`MwwH^C= zS}E#F%7$?2bX&;M;VZnHQ3vO|?L_59nCh{V$B|}#8_%v%^_GjSf6fK!q8v_5eaSKb$z!w`llM4mMf5x)|6v8j!Zr0p1J6`Rc2SiYTsdQy{Un*{nkkZ zrx71m^^v-PvGB%aZFi9~6Js20bZ$i{j3~srLWAN4?dPft#D3mD2%a-Fq0AWT{~)Nx z^F1b3S4{^=(Swg<>XLYTs;s!p&N-(rzWCW4w`-g>6(B^bs1}Hk=$JVHq1_Q6>#))Q ztS*$zH762pl(V7h`*C?_Y#S@O3jsmF(DUSQ0KRX9l# ze~L2K+xkdem$P)^&fqyj68qfr9E$*Z?%^00Z$+%fH8qW?dw0zZog&Ov{VmGOT+P11 zq@kq^vT8>L6iPe5r9ueGO}SsSq^UA#jknWfJkg-J$zYg4jfIIn*r|nj{=Be@e0WVD z#f3CD&N%CcPHBTW;h*i7imU0 zkB;9McK5I6{NQ{@077|JVA-==EN2Og_V{<4&H^AQR^z zq8aUKkb;Yv|5)%qi!NXu-D~SD z${GcynyQr76b2i_G>Lrjzj5Q-wHdYLFR8%WL>sBlE!aEw7c;56^F_FH;OCh*R?vhH zg1Ololus%}ZR*qb4W5>TVM0cuV~r@md~N5GHYHneCwPxaxJ|DH&9BYu6_8svlLz=h zT{d~cy(ROPoi5x_i!$sV!)Ge4SOEPRa0S34T7B{#QIC8``a$OA7lV9RM@YP{auP02 zT=P3AE=tBG!6V{EwWrkIQOYEiV@Anmq+LV}xnU_EBzuS-v>%J)Uiug4TpA4|Gip_> zJ1>jDRovZoY0p`xbi>41%n3sH4$?gCHKk$egBp52LW5`io7yG)DmZLUdyRNni*4EP z*5~r+FJp?zmmuQiU9ItjaBDDIe6_h8jm}l(41LQiw_6Df<({x0y#)1#FtRTNs#FA;T;`$DJa-D+eFQs7*8{fT zll9|99oo7pF#D06fwc@v)E7yJwxEY>vLJ?XTuM{OZIxCcJ$*d(9B(cbuE zblU2NriL8ld;+`qy_Nfc?cdjkEg4r3M`>DW3#Yfumfm~^4IZRGy07XT8br!4K8a!I+2#pI=WBA8!?L}9yD@^?o!Ci^{iFe-+%p$F zl=))($IZsyx+l>rX0HvVdM84cEjPECbNpguWd}A6KtcHioe!OVOK@-Ls=MvA=OS(# zcx=V^SjerKD@v0yJyRsqaHXc7(a~{LgDTd58dT+Co%kI2@J&#KSm#bcb`014w^llX z3At~QRTK=&Qr*awZRAC?8-MeygytR7<}-HE4In9nRkolh9%~VHXs_M#kjBNKp8{Q! zrS@VbzgurIH4X+qC{17W3ou9O&HEWL=m<{SsGpjLutanwNa!=*LPEfc9w@bdsS)H; zQ9j{^GjM?})>%D+gxjZtJtdRS`;aAE`Bvo&S0o4dk(c-_%^SPq>$_Le?2*bIAvoTD z{0!{y0p*7J8TX#=Z3|a`WwpvrT6H^D-z9SA*=M^SL_3osVqU(*BmuBwPajC@Fn7JA zn0TWi{w42&%0B7`OJ!yK2wQJ@J zWCkYoanlmO_!(K{BEFa%l4hIJ3G-Ie@1d7pKTTy4p#un}B;9aNG$e9geZr1&-no`| z^)&eD)@nk9e^XOEL)8FR1Fb(z-Vn6Kl70AGLgp{{CFZC;Y3$RKbt-zYVOQF(`Du=G`_0& z9s_2@-Dwa!1GxXT5biR!q3014Yyl4SP6RZrt+_ZL`6Jwfn{DLVV0LM^hOA)h>=%7a zWhc}|bQZbpHSb#?HNMq2u+NiFmz1n;Lv%As>dIdU{QFG(FgMz8Wg5z0oe&`8u>S<^ zUv@7}<}%LD(MB3Y5}(W>W0FlvVAgOQdB)1zY2&h}cfDqANGSi*NuT}0>y1W?!5$nY=vnog?>sU7zcyBWaSauGLlaUKG(4Zv6b(%fhTZ@fgHR z7UuR^oz>MbWmSCc6CJ`lX`Z&W?AS*FIRSnfGO+cSdgFO4@oeMGqJ(#=1di~}Q$`a@ zfXVjqkFD1c+8~6kvbW83kmk2}_6*WKU^5Ms@KQUiXr*+hKk6w628r-%i>{Fpt>ttj=_SINv+;p&(6UAtAs8_E1 z?fY`v*9oj^R-zdg_pK}EN2${q`Nm?nE^&U6$kafH=Qmgi_z%$35@xnJ?(DlS#kXE+ zuI>en8`Dq_tPLC)o{aJ!?HimU6l7iyBgn2hN#V%YFj$~|+xN3}Yy^!h+b6fZcb!YY zm{56n`FIXf?IlB7G4dMBH2qzmO44aPXox|W4NEqs?G@vQ2KBJyiQGY6jkJ+k4tjt;)4|p!hjXROTS#kC-qqmU zk3RI|sNr6gnx`_aeRY0XZZiH2C#wE!O%3+y$fgKXb`OjMsq}GOhB;o*2u(Bp0{|ss z<*Gi*y}bRXd#|)eB8!abQ^s5~f&GHMTHtbPin6ZKFn+;z*n6*I_Fi7cAOZ3w}E_$$T%iUe>re==yW>_3+-Pmo#K!T*FjwO{l|B)?tL_m98Bio~Cq>v$cEPD~`K1q^Z$w z#*|}1oi59c8N2!BM9M(e@QS~n&d8Mm{-5D{#a8%2uV-8wSfcT7(aaE7Z8|oIi|}bI z4fFlmRov@NTT%J$(H@+v;HxR5WMZ>xXGbC72HiUqYQ9p_!;Kq{u9_6gZbx5Pp)k{! zENf+V1L5jHR|_J=dt;lgx*4aYAdXnIk(R5@IdHqUWg3Qeyvr2pW!4#8gCpi(=lP%y zQP;wNZ-JNfiIA4)T2LBU7n_;7$A08Qh&%HJ;PvaYw-w(@KrCnVF0+1n2zy|Hd{n2S zA^>8qImFk$mk#-Dx%UYNlu4UMQuoUa23-^*V)(B?VUx9R-Reyoaf&b;wXCrlJCUgk zr7(OJut4R(YX4i~?$VaMM)M^m`qi7qszMkC!BKk_XWoLW$YonUvCn2pz&^gtza6jZ z>i|;x0~j+YDX+CkM>Yi**MJE@jQ;@53Qfw+yaMe)YG}Qzo9sHWdEvinggycR zkKx-57jmYK=I>`VdM5QuQpk(`s^vmov`g_mWYjNtEhEY`5T3!AG=489q*l|oSBa0p z*!5fQhBv_86{XI9I*VSN5)|v zB)>Da2L$P&PzT1%?!U#l|Ex`s;1Oc(sj=xV7lmq{y82g>tiaMxo?`=}Jc4kj-b7LZ zV0;K`TRe)83cK-8EcdeqcHi<^jW|g!jZM=dHtA}VF4LRoH0o~?nD9NUH1^~dP29SE zP_=d2gdcX^l7z&}5o;g+7k#1Jfw0G^wJqppO|OUR`(#}DwjWcweJO1a5|40Avm%`T z>yg0y>i_@GvXW5B*jGiE|F6N_q}Et>_$h+fE>V&T&BFv7@yPsD-*p^|UU-;LkzSJO z9o9#`$;d`@t^)Kj;$2ZTWaD%i3KIq!A4BoRwjl%p)Kky4i0M=0XxcLxz=~O?_Wo?@ z2nD`r^CPPK))yFk+-Q=zup}*+IYl=Mcs=LMSWQAJw>=tli#t3%D(jorRuiOq$xV5* z2x4oF`qY|oN~h!KS^Na9jSqe1+u9q)EMOKRMj$JL#B5;6*Kk*-NATlgvDW!I@OF|l zByDWV4+4xX7~39Gohq3|TC?fPAY94(RJRJ>ub9}anHApBc9(VZ4qyH z56KDr*JS{lG`6zK5li$dTbq-_$Y)=pMt>`&Nj(^MHU`Eb`nF3^iK$p>Iw&~O-Q zjEOHRG_6vYA5~4~>EN^cgD|I1W8NkvLuEeAcxbVgJ?BrfpSuFlgpA(}3Ebs0y&++k z1ML0VJI*X zO}VbP`mvEUg+ayh55T{j33{ITWoO6uloIF+H*_o<%U?7W#2K*jX(x&o5aS}=drTBzqM z__OcbnqaW*irqZ=`C4%KB?=$GDu~yt1N-RmXi5RA_JfYPQK8;;&X}PI&KV7B!ecj@ zF4!KO0Kl9}avIF#D`8Wpv0glp#SYI+xZMS{voX5^iTwAruO}s}c=rlKGYU-p5{k}e zGCJTge84x4O8FN_wv?!rQFE_*Ux>Lka$YHpIZ5J0?gXQ=D=_bQTUyx%pKT{P$;aT7j~-N9|ZVZ%4ZE37pWQw zjwy;>W~c+SH34>xfB)9SVU1Q9uPqPTRE*et)lpB)UOGA9uoWI>G<s*zWi+lvaRIVK8N_dN15^vOTj3o89-YS_ zV20s5GuSew7>k3qhB@{AL6HH)b^b^W7kM_H59;(}=$n_<~d{fSvZHW25Hu-ac| z+!`?+Ki*;zptQ*G#3IUWuc_{SNK1%$J;QXv7OMS|lmy4^wta{0_%}a?g!U9)#= zN3JT#5cnB(*z;2zx;J*FYDhm_|gfe*k;)5OLDiy$4S15FovNC)S$yOyI_UtB*}H$*Rgaje=swR`t_Y@ujzBQ+dD5S zp}u*c4bb&p`@94+azC5i#FMV_Pxy5Sk}IT1wm^Q}sR`pcAl!FtteSpVS6MY^2UuM# z1*E$_9?Tu(H84+EADeyu58z}t#b%5hxT#XeiwE24X9V!T>I%QDnXa2#^jdi}uKCYe zT9m$Z?J(@NbJRm6i!XF$C1+^pl(6VQQeY7H+@IXcB@;Tol7csg?DG5r5pY<>dP)Bq zI^|BDl+rUdcg!Ct#AC$U$)^D8uBO))3!Ev+f zcm5W4L3FmNB80GGEhyL@%JwC{t@*S_ia! z-GTtKorFv3GC1<5fg?@NXQPZ|n>z>NgIeq+`yTV2&cbrPjn|+tA|SV(wzjUe&Twv9 zwO#0mrJ^$nNM;f-7JEOcq3NiV$#eqaDO5YpSTaxiz@{+RF8Cd1=cz;eEr>+7DG@%L31(6^n3E6Z)4 zWGGauFWn%{X((K9rizrdyX!XO{J7r|Kak62yAaP2-u@!WI+wY*#q8A|doGTw8+(qJ zJ*Xqr;q>y^HH+IyhI77y#l>Rn?lh^{${?uyBFn_M%1%$7uKA@>fDPdX1qc8zU^w5R zBZou&KLpJui>;t_v0A>5@kmTQRY%83Qs9bRuf=7?D$>$fewZlMGW5HrDO zf1l?2)6-p_eYjFO`(V;khPVNOU2Q-E1ez?le_*r$Fr~`XL|L zJaA(O#|=xjPZ=)s-J!XM}46#<6|THBgP-W}21cVtJgH$skK~>A7pi?Uw5> zG7z*wgk`?e%@PPig9g3hO&hCC575eGBen)Z!*xfv?X z)_V1NeYDCQjk4K9aM7&h+3t#M7gEW7`Uk)X^n5HvZ`ZLh!t>sI?|B$rzkAC>JjjBG z6qb&sAEz-Ef4b!Vs6rR7AjVus8f04btNery=6Lyxg$^ho_w0(nYhw5jj zA~F;ToQsAo!UenJ27{`V0jzZk1k+gL|GSSSm@A}L|3UNf1=IDo8@_Z(SLW9iQ8*$I z{DI(2hC|q?@kFW>`TkFGuFrQ?emg_hZ9Owyqg=2=`8L8~ z0>^cQ0vUbqv5$OzwB4hBokb6pI5udhD#z0|BRvzT-@`IY~p<_D*7emT2KJe6Fx z&Ff)E5wX#t*uCDon8)6VJp1`1;kBwx&MSp%3cfO+=N2nl1~9}w>K}=gEHOk zp6`M4Re-2fv$+%@Qb=v-mGKmxTx(r3+y4sBlU3_A-@)<++Rel%E$v_nl&zdux45r_c2vF%iQE$avSEKI?h-vaVZty=C^$&z)Y*R7zc!UOBFqh zJ+T*J?wOPl@Czb?VMD>S(JxJFqMSQ&8>*|3Qt&7qB1r9vKT+et4q14?ck^k;ezb1k{6Ms{s& z#+;P98WJ=xH9f=asYFe-^J_q<8|DR}nDNdhRk z7erHmrPP;Un_+Sc#9!-C59ZguPqr^Py5{ZSSNyOuNt2J5EmO1USkv5O(l-F>BMIoM zq1{x@??vs$j+yNl35*f!kfX%_sr`Gx>w0|Lbez7-%ki>q4gR8KiLA>gvz)FiJg)#_ zC|Ju>;;m@&Tcky=3rh*eYf4#Cgd^ml^sZM01|2tz}VkT+-za5#uz9Xm8EQ zXO=Gy!p8W^P6_uiKg=G0-j@f68o#oW{PYX%Lmv0W$zI1JWZ1rHhhJimIChKsL*g=D=RcHkX9 z=H^+e){R=RcG4m3c-aM;F{2S#Z&UhDONT*&PhWRPc35g0k+!~`xXg{dt+8Z;nYhyp z>>s=+*h2k(1o!u?$g3IvY z^>Hd_ZgZUnbnav_L8*HRgs^D#pImYYv9bFOq(KD!^WpWcbKVXas15lM%zwVoj7}sV zsrVZ7O(g*bl@~j{r|t<%u@4oB1|MqOPuWUfC^S0tBQEN4>&-w2laIq9tLx$e=Gy{fArAdyZSQ*gO0-z7>Pl{um+{dXD3Wb#%6Tb^YstUHsVL;`3kuE#iFKNn{1N>0}atPEn<< z?Y+wJ`iS*ojzX(NI_rw26ksLimL$U#+!rj~*>+KX&5%)FuUwX||6e{Wx6A(g!)Rwu zv$|_y4Da^&Njx5|1Y$(Q3=t8sm2dDwbq#$VsCPCi)CtXCoaI_R%!TD?m>Zwz;= zrLfvExluj20P=-G1D4}oSqroZF7iR@*0{*%R$xmeY+s5cVO0RDSq_Vn~2wq}(;Z02FxIuQ#)n6DrnwBADj^DSnszo+L z*f3H_da$r^%@f}Ji4Q^e25?6(WCm~#@ED`4W?RfvkbJT6?Bds# z(Sh)E+IN%O!^rCz!D?5UtxoVxzW0CThUSYK8(>qje6CiXd6c4=CNJn!ffB)$azfu5 zh)geAwan0K;-UxeV{|ZA@RV=!k>~B(rNM&dn84iJP2x2{h@=S~NqG(nZ3_os{7*GS zRToo^GK}WEIlq3j96l+vc`>4oz}OAt*lVylR1KWJlRU}pL~&gqyTm+v9rsf1J>by| zy|jT3t{1XsEmyc9RWKKVSSGG=w5<1gObQakrvE0Hdpeu(3|*dLa`ebw_-{W@2z_%& zy0G>`r_V$~*Gm#-S4}+OJ8Lly!*aG60nj+~OVKLtsu7dZy@@5 z`Gultlof2j+QE@a$$A9(O47_VB>M}5B^@G&F+92x;P;@y`SwqXpxh^tJ7naknux^8 zHD=M<NY?ug6ax#rNf(_z15HkC(=cPR@`tN>sEzt|cV>uR9~8+AV zxb6sWw0FTVSy%4u9e_XT|E&73lPX2U6}g3c8HPgZ%Zw}i`Jz!IoruVmo?{FGS2uDK zj`X~yNe2he%o7TSNUKhK}s<%(5Cc&uVC>sR! zdvWjIKdj-*c)#NHdXzQ!YB+PsXAK#!$u?(pZ+#6| zZ)VAsJJ3mDKJEuLx3_FAOmTf^VKrs-F&zlpmqJq*kv`w7Y+Qr{!~fpKl+MNftUWes zrfhv&CF=G|LLW68;1vB5Kwi$Zu*o`u%+$0_)5{<2*6P?_@>`V&f{7yIjh?NvVp#Wc zqN2%MX;|BDn}*)}mm;>GpQi5ojSYSLRIjSLbv=y)t``^l)BwQpRgSZ%%fdcNLKwc7 ztL%VGPSyFP&r??WJ!7%DhK_&j#n+Mg$l)B(Kjw(rhn`x$!YYDaaOPM1HgQ;~nDd&H z9nYX@jWdj?c^Yfv1`*!J#fhcjFVT?J4vq9KJKZevtH$Ib&rrU*9~I8TP_Y(44ZrWz zNQ&{U(XG0sr(a3ztI>P+drPuzI|L)!Gxen%T?P7{>~Ms5ZRNB(??g(CPC7pSL$Z?E zXS!849~paOH?lkdd8C^yx|+{Hg(7m`m=|7wRq6ul9mfecS`F+|LAfZ5d17uuW-{ZW z#V=ms7mEB5*XqU1_Kx00P_agm3BE|-{wrl$yDRDMdv^tz=jj8*Y3GT>B4T;?v;8%3 zm2+;Z5@!Cn5+gWeu@s!P;4@pJ@)nn-V)jeL>v~kQO^!#5nBQ)z+4p%yn@_X$2d~nG zKl?m?wxXJmV!s8L;eTyvp;P0)fpc+jCm%l5+dRj5Y9)4PS}=!gijo(J|NcUaf2&bF>jhnDy?sjS1b zQHk8>Y`J@t`N=^z02bdF0~wL?n#nXu)t=KC9LQXvJRxit_IEvNT|aGkwW`MZG6K}W=-HHgotgtc zUOd0H&#p3iJ1AKIOuo3|#G_urPT*6B!PP^jZ1#mLysSOQU#@hRFM3*RODS&7S(GyU z6Od&=iJ&}wYM=xllIg*jg`yfgukSwPl808>DcL|pGsM!=1hrNc zvIwBh{-n$+Umg;HjfQuKl!uB#=n;lwgS4m?vX&?LOHAl{x(sEaXC5?>Nuo58MK4M< zviws;P4f3Lt0j|8KAV?i@_6y-CI1ei&QkGYA=*!SJRb!wSlkb^dr#(Z23e0GX&$O0 zXphc$iCpxCsDTMjs(E7u%Ka@hRqlC)0{lgpv`RlY7IQiCLFCC}u3`q_ac=uuBldom zi{)vqZ8-THL@)338yD0)s(#;`Bl%10+x#gdzg@8;I>%(pss;OoX0N z11N1ESNGP~kh?#`4Qs=MbBg{XKDpyERzh1CEV={(!O9wMiEc58c#IksIwkD*y4Dj` z>A*63op1X_34e-46{px)W)}wv#wtb#Q3s3Uv6TXbs3xBOc+K=>mSuuqAiWKQi7|*yn&>$;Sp~jau@Xqdr`1PW!vGW>xY75FK zyX8pI55AazsXrti&+es97Fn+kRXR-do&8xGbgvO9T^-SJ)y; z`rkLBV)^sv?50yg4^a0ctAB;P1g1jS!&aVId?;Wb@Jfyn2I3P-;M}i>a!A;b;Rt2M(^uy;yz$@DTQWoj=Q{nAJw0gaSjE}xClmF>eifxBG<2D8-=usk^ z&$w*xt|BwkZ(=4!k1|%mR@QN3{4HBOUM%3(pSW97Ycx1@~mogQ)8goKDW}4YvIGM9; z*J>BmS=Nz~ZaTi)<32(zn4sRzvNp`x_yGKJvozJPM#Ed?oG`KEQKqY;BlBMtyNN5i zl)xFK8P4M-ImXJ$hUrLqBr&TpYsm?yT#H{#f%}RLf4{R~Vhs4{l;}Z9({k3EqYV}h z6pl;i zb0vrTE7@QOw1P+VJ6;hKXd1n!33*e@qQk07VKmtK%nbTuLkP__0iY_YzDOr==DIdL zmQJh9*io5E|Gbx%x(jqdSyf7iRGw%oRvxGRhkahvaa?+aHc{hs zGfgX;Wl80zY{=-oOKJRxJ4L?Ao2~30x^MPEU5+Suq&#PdNaqQiH7vm=VKCaVqW@|6h@WwVwoB*II zN04%q@pDpoPNUk55L%2#C~+Qz0A2%#5ZIo+A0#7K1&OpgL>v0- zoxk&!*=K2t6L$M-<8KXPVPasYFb|;xyU-VMui@37g$E#i*L}^ET?TF4q*0+A)>w?v zyNTextoANY@!T)(eq}5!_Xp7sW?Zs+96eJjk4ineD+j)H;IO~bsKG=qc-qZ(q9{2v zn|hEos~tLNa&qwvHr@@0%pvUC@m7-52$PJ=afcuWrd;oX_P#!GpZH9n25@5(a`qGE zc`A(jxlZ057LFL6*t^dkqUG7KtJedL)zvkxZMkzaFwpwt*QTWfO|AQP9$$_RZF92ux~xA=DZ^b9(|#D4GKmHWl4?IuF{|72-{i>nlEe5 zieUHFn!FP?z9eG`lbQNH=D(ip)crVZzSCEED<9;~o4IP!-AST!^SLs`6=VIrD71tV zPx%uY4Bd1b&BU(T8L#F!K9)3@y(H_h!(&r)Z?p024ORfKr~t5cZY0OPPYPdB=KS58 zm~m-`cfTCI&TZXG@*4SYKyr>d_4`&_DSFA>(-Bi|UVzsHMi=QH+S*trh*k3~S&1Rhp1w1Mh!Ia;rJ0XA4jmuLf6+Ynr71)sWNHt1-+!2$I zPC?2A&B^@!4Rv~ThLf>gi)~KH7`b&9?T0NP%*_KTESGgtu>GW?zW5k;A6qt+;Ak$I zHF}tF-!wTlM|eEdN98|z5)4=+7N@4cpXoFXg)Q&ah(ZopHaxYOEMeJ1SyL_>GMqy%jXh|GpHlM&aHe3uE}0d^W4-2l=iNFi88vCxhQI2)S0V8K`TY{*gQrhrMUh)6N=v)4+)pQu zmFqV#ySX;dl;U}kdrB!1#k<*&-3?YAO&Gx!#^9{4*|>9p-*kJTqp(ent~UDFf|8sD zNhc}!D^{PXCgJ5{BtFKrY!rXM>TU;?aCK+SOj=3_Pd}(n{Ewfhsgepi%Z;)Zg4C%K zOb)Bf?C{wg6zTdRa>rPF#MPk(5+thGJ|ZcBtr9%e(b$fn60d{I1E|Ct?oFHns;N); z-O^8Op(=cK?1sW)$%GV9CCmJ9x1oH9LA=s&kmAY1C4=i7NMbwzdek3iK_K2qO+fT)K z`%1*2Tux!OJ+1K0L`e-hO0U*?!m_A{vDb)l;puOum%E{`zJyz5EHbSH80XVW^V3?J zx=m{ozpDs&Cb9Rv1k!^FYQWRO_u0dVq!=CoH&haj?@86;HQ)Z!S*## z7mIb<1A>aj{ee4(RLVtUpg$@?$LHYb_-TstxcREU%9#0vN?NW}EM4ZX-^tblXl?}L6 zz6C6E_MP288V`o;eo7EgUuNWE9!Ie}*4i7p`*(@>mMUnnGa6}F@mFPm8Epj%V~w@< z$&gfnzQ1|FibtF_n24%&d#-7Cm~#11>@b9+bjhm_+ZpZ2#@cjVqCzwqA(ufOlb`8C zuZC*ddVJgDnBGmeaLgUp!F8)X{KN|u4AhW$K5GM}U3wx7GSus8o%13la{L>QIQ}lu z8neiK&fzD|J8OZNT2=*4Srkwo{1K6MD3RUvf#KlKC)aj zO;1D%w~19s6lH4Flaptrw6|Y-%nYWy&D;*@%YVBxY_j>l9{i>QB;aj&HCEP?tU+=W z8jV>$MlPhgJX&wD6G~3#{tSm=I#6MWUs?q1EkC9Vwp|d>oB-&t-Nm?gLBYBp zP->fS%Irg5pU0uS-3=aTWv2%Oc`FCX-a9`nm@M^eB2Bjn!vf#!bR-cQtpPc|?}UNM z8I;EDx|AHPl|V0)B&1bG2&w<0*zk*c!Uvvz?0@1vU;2u37A^3H!RJWIC^DF_1M$+$ zJ@%5XPidkfQP!u<5AEfjPt)~KB?q+pj~SM_!$kS3fE2oS>EkF^vT4;Wo!-Z0Y= z&EoZ6rT3KlPtWG3K|RIoH#A<}b@A!7lLc?8&INd3BfC-~8PxtM{B&_@XORSw$6jDk z-j>g4WUFlt)nOMFk`u6DKw0R5UWq_gaB=kJa5YzZ1T%-F`Bf{3CEOsM$0ul%FACOmjs( zxP2MenAR_@dT{pjPd(X#KzoGQ4EQYYUA<{{IWGDPrD5xUXfen2r1~tRTeD3^Z-aM* z+QAN!K@0cnPn(SIep)5N#mt}+wQT8EfIDzV?EA=~`GHdmMk&drLefKBN8(y69!o$UrI7_lR@A9^<1B}c)(17aW0SRRJy-E8pnEobKPwnN1Ue78U7Tt&CGE6tilfQc~`VUg!rXs~9k#;w(b$aU3h z%RA1o-EFRZQ>j%Ru=rBH_+|b_y&im1O(^(2T>T9+gkQt%IVsA1U5@0IX?F=l^$$QG z*~zxuL*e*^zpX|N4hM-|z2`u*>WZII5|Ea(nr;|NK|R@(Pa)79xbSX<7Dm=Y zgYb7++OXV_Hf>w74Xw{t=&~-UiemlWp($%a`lZo-05sm+DJk|JfGVW9j_V>2{udm7 z&R5%R_Ac!@CvL=6*`GCr`Ce;en!wd@H)7xCN`2({FZ5;<;+BMOa$EZT+;AYDP5U-r zH^cAbkCgK~k)53{iyMdZ$-}5HcZ#j{OjSDR+eW~nN)3%XeZ&a!(pE?eI>lO+`oVpP zZ9dSd-stGYBshyXS10?xRLFs1Xf#fl{Ph{gJ(6v(P_jZlSy)AU=~u`DS<)`NbT`iO z<*lczeGzWW> zOw_FS=9o$1u;d&rawf+#b@ZS+hmNwUM{=A^KhDUJOYgfC=+v5)Om}$JN-~F=PRFTw?i^Pf7C}| zB)V^wRADwPW$h@;A?B<-w>t2pqKG9Nx#(xGI(4rCpA7mOOtP;`iepDbm^kVz{IsVK zE~z(m2%x5Y7Pn(87F}Yvi0qS`>l09^@pfO>M8^$F(_4+>!4e(i5GzfC`Zx!;JK z#@bZfWuC)Tq0ot!LpQ98YF9qxwGVBC)K^V%BVMNRBCGIOoKO6t3RS zmCr-9uSR*pCYD^PpCd<<$R?9s@2pYx8vc0ay-{no17G_63|G1I)g-&j-b7^*Ucfg+JUxGjc#z1F|v0?Im z04wDC-n@_!iYvBMugUvPjNc|tU%wxHsVK{dsv6x{{eH?#bgg z{wx!A0z|uJijM^TkOK@|aOAgS{Pn41Zwx=R3h6!o11H*BS*Zd_xouw`2-3K60Ekp4 z9Ia?*%zlY#TAvM=)Mn%|ln?k;(+yfVc!2mCVgu}i8VIX?<@T$SwppGGVz-X6@1u!9 zoYmWQUyWelvM;*2O3PdLK4YIle(0|d#?E5ngvE}=Ku0flz$0RVXw+Lwy_u7txPb-z zVrR$>aMaZ`V-axEJT2Yv;=#oSe=3$sn;5BcElK?>R8(3ksQlJsk< z);Un|Gr=NvGGl z@DjI`9mfoZTDIn>s)|Am{}}))OzuTVYV4aLod4%sC$ej}9J2l4cK2SRuRY|N;a973 zoNsG9SMnVnE#_2_w?54~93L|Ss-%|H1cx8pY;z~OQ0MVl@dI2NNC?Y1l2f06OA3$O zs>2&4$27k7QQgif)pTNJoZxGsV~hde3q|gu7yf_hKR*_t!D(kPACRg|mQWV9g_5I_L@ysvcnZ1&bb82rY6RQN*`t0zee z-3IGz{?_=o>CMc+QjNgCr8Ho9WmVpN!-Tj+Hg$r%>3~jeogrIWXK!QAuTz59bwWF= z70ete&$x9SGJx;W*diKJ`dxogyB1Wa zmvI(c(Ks04Qtw{b?fhIHWIP|^Z^q1SIMFSB`*lYk8VR+$P14KM>qry}V^7idQ7Su0 zPzc3j=FoXQ78j)rz-+t2XXv2F49lO)D>y9L$(3VjE<9H*Y(bp-1MDDjK;@y%QOpMO zy0!^Q@88#89Yh>he>m&uVD^2F`G|b)mYv$`WxBMTZso^fI>pDt+9w)6W>de65WL!)Rb#)Vr$ccAs@DV3zN9DC zM8hK$A7~ez-G9RUB&+zQ&SuA=s3{@G_@O=OC!U4-8uymsJ4uSC;S#QFp z2QMuJ+QLn0?8_EyX`qr zDXtcY5D=wBpc3~pViX2dh7$JOGu(+pjWToxL0YlW$O}&eo9ovw*Ql z2X6U+VfNEBx&1}H9k{CBt<+o*R+4JsccQz#H#s@kl3WdRc9Z(*=*Ic^Rh~a?G<&rP zxOTq%Iw`Qd31!BTUR#!E3XI`1c++Qe7ofZIN(Z^C!LCYfgCcbeOvXS2RVuY#kp=nl zw|ReN#`y%|-|7(m_#AWoyFs49c)k=TM@;adj7LPK7t%hnWM!opt!!8IzXq{|6O*X( z@;Jl#BvvP6J|RdmFVFJu>Nr`~N0PAn8A}5g!<&&uZ&@Tr?p7@aF5}dhKl6%L@vpjs zBMx79->hZ#+>lPNkO5A%l8X&@|FYw@Voask95nJ<;w6``iL&>gV2 z)c3lUW^6W9@67x6Le2=3%g+&Z$IDN=bHACr6#@=ek z#SMyB6*&GkLO4Wuuxp&@t$!1gjPkRjW9P_Ws&-G}*;FEK4f5uLb5=b?4)E7QnH#TG zgZ(duu|y`m+GQDc!1~)?ptm?347yYAWM%~Hq0Z}?n$=3*AqH98-f$}Vaf!bp2LrF9 zOHBjn*%#=7rYh%#gQ?d>`ARkvJ+3M6!#TA0>Q{^?zPhbEghELUgw_+vZrjJSh=%=3 zWvadHq(Vyg(%`ceq8kc)*$Csr87T!DXZPDgpiAesNo@U?ve}P{-8!Gizu+S$l=%FK zS7d%PvcA{v_um;u(^^ah{LwdY>{GMExK9|siKr( z%lRAoLx+J}{J1pT_3ALJm}5D1Y|fkHbEP6tceB_Oe@UWI#x+H|1m@3{nNb?;YX632 zASjGpuuxd+1xB^cW!l^ciqEz76deA$?mIt>Vz3giF^!FS#feTaB#Zt(n0w2pwxaf5 zFt}@RmmqC$w<5($Dbk|BJwTA+#oaAHup%u`D6R=s+}(-=*OmfBTBJyC-h1b+HTOSr zXV!e1wZELRS5|VelP%Bl{Dj+mLq|eiS5K*!NG~{AOg4aDod4<59m9G)Yhjq2b-lkW%_)b5ID<>5s)$e%Zt3^0Slk0C4ATR>kIpKd|H)t!- zWtrn~tw{Gc(Q3Dx&&}9YOtP$=Q|Bd!!u}a_p^+Gbz2Uw>q5fBX$RMX~y=641Bw#`- z4=p45oZDJ#t|1zi5b>FEgHZ*s)@PDHPtx_9&k?<~*@NiiO*l$ncdr+ATN8DIptCcB<&eb;4IsXVa70W09qRyIJ-Vw9&xhDfuE3-*<^AM^AIbzft{ zvcMJ0P%bB^m^npN4(D_~)E=Om zF$l1P&DuuFzbXQ{x4}2obF&U{w;)0pjl?5g+9HIpc$W$30M42i~kUnHj8lP4aFGUtDP6CtORXorl)Gg>RGq%9!DY z!U{j-ii9&YlRBhu)HaG4_}y8rT0W$Du!qBq{Aowow~W($F^xRKWKW;7PCT8?&XRPD z;Qg31CcXOtW{Wmt7GE zR%K}>X+-O+U)-=!HgBF7x9Bu!`awKHv8$^ewevFlU%gV!S;f!PpX48pgR#<)TY$SeG#A?)iT)@ZhYw`*LpvR z!c3z>ir7|#y{&!A^t-!sLmeoLiep*djb?OTS(Uo_5RQ~1YY%yKs%zvyPY;;+KL;@X z`l77u8T^m(KX23Kl&ilg+OLOI4_?2k! z0!KMN?VA_@?#`pPB;`wIaNU|$Yrb}1=V-BMz6=O`YJ>01{=TUK8~+-x>$~%8v2e~z z_1z^{Rqo@cR4?N~%-apc4J=2J@RZntHwM4pyuUk2pQuJ7JJ`#56|OU$jNyL(K0EG70E z-gg^K5->iMeWi|FVLO6tK=Q`4CD{-v!x$J=u}xgI6QOB9{gJqrFpA5ArN{v4*ErCC=X}u}93xHitTzjdFu@f=;D$JDUo0hf%FJ4}r`zU8VKkkI{mU&tQm-LlmBO7XAHU zs^5y{Sif(#_(XTREAOO1!_Dh1o}2x5$TW*yNFd#U>z^8+SUz{E*TCF}@ct*nqUMd{ zrpyGhEy`T{@EEjJqr{&)@aQ_zSAXiloAPhLndwpdLb(mw|q;Kn9HttmM0XBLF45Lv0VdId^GdG z`H4mXV2)U>ESk2_`AOupIOTFup<#tH>zU5iXHW@$zWachK|VOlH0~Gwc591n?dO>Q z6-*j2C8lt5(`^D1lW^&orEY7eg1+`E$RmI2tX+43saB#3`8>V}=0tIG4yn+%+ZIlX zk^58X>0CwP=9~SJqbsj~cBT31Vp?=K?d&Jqxl-^_W?M7)Ev5ZCKS=9xuaM%8AmN=N zl6%F3li#D|cXm4myH*fGYLKj4e45pP%C^f6xb+Zho;2G-6o^0 zNk&EOX=jUlgPQS3`kc5_-t)~LQCLrTsLx{~y*qw%yOYI^e^P~(^IW-=RGQ}kg_nar z40;i1(^TN)16>=UO(MeGmQ(oRq5&Z}N3;}23>FPOSN=8{B%AABo%j=mF}EIS-da&B z<$t^cw_YrKV47bN|558cr&X4>p%uSD$CadcRdjQmoRGsz_Dchg#^l*|;)l2266sq= zKspOG(9@+8{oE*50lVBqWoLR@tpF;)B8HNpCQ>dUw1nu|Hz0J7~w|7nzmoSINc;O+uxGx zMYh&#u}_p7-$f*0y@m(YxQSl1&GJfR7T>x8)xiPb9lB!7#NVKncH z_bgxMuLMq4)h!QT0PQfXNq;rsDFAOoMnTxFYB&I!A4oR-q(p%N>QY|>`7p4(6X^nc zJyoAm_GYjRLY4tyzP9xy#ocl)xUf`@tFdpPU~N>Zj9#W^huds(@b-v8(N$-K9SiC* zGkA?4X~tDuX9VPRtJ2G+3@!DP8f=y7Uy2lbM2?3M4tu?#Z{5`HukC-%u3UfMY}qIKf~MV$(**I zU#)Z6NmqBn*T7r`3HSAJ>g8q(va}z~=C`VG^)@p(=N=j%_;~WG2*lN*#5K}1DtqRL zVk!m64a!P0wl_MK0$ugfNJ5r{g!vP1y3^=q4|YvPob`xYS;cY22K{U|v%-YO zzV}J2;$78BRxqU9xsWDV%9itcF%eI_{meGuxF_791u%^5%9VOp4f>C7^W1NI>%0w6 z0Kb?c3>0jq=>WCZMx&3USX|TbjKG@z0E=cXU%tk)^-YNkCJrHMHv0Cvql4FWzTCaV zxna}>YVr@@OKHoRvlye4?-EY{H;K)bu>I2f_4)6+U=B^5F606VBI7UP(Fxxl`q>5~ zq1S0SCc7F?d&;EUzDcUdMz2+Mr2f|bkMu4WgorMK9hs>1Q+R)2%PGdcloq-D9_ax0 zn~=55Y)|-mr=BpkR@RRiY3ylwc?vDp`ZPO6Kxm(y8z0>!gHZ4{qOUrTrM?p=7mv=W z&8#;8Kfs0#-cad@?*y=DZL8?Tjw^Be1B~d7aAX27=-Ux!Axpo0nF!PG?a0JGR9dkS z{n{PA3xf1^dNSY&#aDAOf*;bOWsGguj(IVV7SWpw@u`AZ|Mnx$WS+^_)z_Z8`%O@qq#ac;VS=7-HdC!QLg=SWEbKvKCKB? zmvo;fJ$mFp_GS}8`ti(icyURXYp{70=l-4YGhCxL?rdz43lx?g(3X`&y-N=bU0Cd>qGBV zZ)U44;{UkETZlC+av?7jjoDJJoaPCQ_s7TC+3ccGMeW*wcv14S_j>u;q|tY*E|M^b zF9B6rp*7CBS%uGO`$nHNKbzweqBMI63vhb<;=Yu(x9-Wqr!MlF>nq3^nh_seWdBV- zo^-edVmch_1KQ(f&;<4bc#bBCQuEb5w;~B|-NX8$a8-*IX&7*)zQ;XROFpYS+CWPW zM`^lX&yR6{h}x_7fpVO2<7w+^QnwA3xHk&hWP?R1796t*jyg1}-z8WHL+J4Zf|Lcr z?{9WGS}Edf8bl{H<@Q<~K}oa@HjHix${})2@>1uty{S|`6i9t4n%x=KmUEidU;ZSd ze3d-R{(8}F0}JD#32O+nXBoZOxH%*k7K$fmbFOeg1}WCz+RH0nw!Y&}?!0a+m|8Ne zzPiw1_p>MVeG(1u!BLd{m9Pmoyb(NeF?}cr()qILWXX8^$HkojrCITMzN}ifE`u~C zxea-MdyyNXC58Qg*D9nxgloPVn!2hmsK63r8Q@5R+#b*t?3X74r*lGl_X#9{RUTKh~V8pnh0I1qa_lnAX|`9XW_hmdEi7im9!idpit{}kKJ zW2`6WFsy3)ab**5A6y;eeWL*N`E*0J-JNjnSULW=JpLZf?>(0*epb@aC^-;x_SVh4 z-Ix&Y0KIp*cZt0Lq5mE?MrTXvXNyg{B$mT@WqA~ybuQZNJNu)+LQQrxkK!hBz_{>1 z$NzhX@_$4wkAC;|J6dF{{!Ig>h`P_OHu%)LBK2ZNBK$H@gA9z_QmtBvxwz*-Dul&i zKQ2F{evdqV0Nn=MM2lw)r*tYy6kSm_XXv&0FKH!cRDXLl-3+cyGE+sm%^Z5r;Q{T! zg89z`uWZj9hxy3{`+Gu{vwuOI87zq=z4!~(|1^0KpKJ8n_EYx>Cw1^8y(Lha!wJSa zOMN7$+nIdFtTm`W=L2GmdZcW)52dofhkQ+&{oU_Tk`8I4-8N<%;h^X=#jAZym|TP zX_d>&wA|1(bdf{^gMq7;{n`^YLu$R3lyMM{7zU6pxrshkxUzi6m*f0=gSWjICMSB% zuzIsPU9)DPhD?~zq|~Gcj5Xxpq=bG^Vgz+r!70g24#!xBiER{M)_pC1N&(k2aEtG%6)#UN7 zljcCGdA3YOkMvfd@Xj&R$6aMn%+OV0`M6W^0 z7xATzR%7K($0rI~C86}qma!7@+QAoAG&(ZrLcn~_bC)`2J>4ed7 z&!R^*6=}rGZH=Hz&XVx=gPB*J>g9>8oJA*yI_mz4^z3WvUvRplJI_5Dnm0BWBDnx(M179eYMf9n{G!NIEequN(7S|L$V@1aV2J`*kWQKZ*pTdS zI|8Ov)M$q4OsEpQ^?E{gX+SCMadPmivi_Nnf_3Qs$Xt*OC=fqRg|-B(9@K1~C~Utq zH6Lvc{30$*w!&}QnWDeA1pkFTGI6z^Cg4UZYHTuU^s>tRkkN^MB)QjZJ5xw)Vb6ElqvyAlF6R!QZNGfp%IiArXYh8UR-cs;PA_iGOY+Ahp{g_}PglX-@_sO!(U zJ{^v^M1kb!k8E=BVIsi>=wOG--_ewT&(BX}b=^hAr{y85%3^p&jEw5QWb%tkT9@%x zjj^0xN*CK>-gY?Sik(FY?`T40}lfa3ULE zc9v)v>RzZpfKEib!AHbed*G9#{S3GrAzTtH7Q5Ybk|kFD0MnAh9(yg&MUY695n3`vo0a&V`A}32qmFdPA7z#h59_ z_$Afnp>vCKa~M$xK;6oc?>Lah|9K9_+f_%mzk2`Wc>e#;ZQ*#nd6j&IcZ}M$JlSM% znT2?awwkUKUkcRG*@B3bvpGFRzqgH(OV>?>CRm;sb;or*W2m|Zoso1!7q6@)u860S z_g#yYb?5KL`*Px=S%tQ&KXEnbPXP)h|H;4Ji=4-vu-@taeBbr=gqr^px1mD3I^kAm z?BW-W{w{GEnhz?I#SU0kWSt>He_hK+2EP-fJB@px1%dsUF3?Sh3Au$C&q|OwK}TAt zR<3gCqlbDl-me)64!%~0QS0Bd{W>@NJc(p6C%=DD1o1}>T0E1aFzxp$v24kdRK1`Q zbC7;HqCrQfVe=Yu7aQwOHaeqRH|l;96g&8o&8754xr|Y*B5EA8|-`6gf z>@8cvIKW_#(pG8?Xj*ob_#sCbro@=ui-(OVBE`mVe|z(zTIWtS$fV40s@ap{u}*&fETH{ zbILmV%KRz0o=n%lpUErEX84d%BNCasYQ4iT({o1#Kg7-&;AK1tKsVnH7Q@kB5zVZ1`I zN$mU7QgQLE%8<0q>ZgAI1Iz{($~$Vmkm}o?#rc!kk}el;DEH7eYuJg6CMRu_aicJH zvmLRC5MX+GHAM&{+IO91{#|4xTGP?}I7p+$ohwP`p%_v4{kS8E#cHr{`%tbpxWZM= zMa2t4?{ub{zsZ76xL2193bp9@Y}A@kh$?oG;4j_tmdAo4t1s#?2fAKzlPm*H zT^LB>7n>oR%@XIm!R}v_fG%a=W}$G8Zl_phYO9p*@~f3vYnm|#_P1Gp^>1irG5%-! zKDoP{&8>|IQ(NnF`^_|7LzSmHf(11j2GCYaOKIbd0ONjdZR?L+bB2N7Z{N6KPZN(C zl&}kD3t;67Rrw)z+l7`41>Qj zN@F{FpN(2c2llZ3Gq*kT<3WF!2!CmYP8E~&LzpDSRcGvf@#Szh6-E74RPKX z(0eVe zr7F0b;i=F60q%ji7PSpr50&Aba%uU{-Q#No$FG^>61krHH9HUA6y>MR@aa9lQD}J^mX(t%%Nb0?G zS9$NbIr}`z7bW&$unMI44@&W9vlmJhJk%wT(^R8C=fFH;Y&pc zxHl(g7x;21&X2!CT_o{GGKzQ~i4pEE9K%V|8!+Z9BcF0s)@KatF|TE zI^h1WVCNOYNXrnzBJtSkR3WB#Kc@OkT>Ax4b9+J8EPtN{A9P}rquK%U!hPj%D}#6p z+fyAO?K_GHWB*ndIQjBsbr=L(YV!a`r4E{FuZu7@<~bF>jeI@jX(zE9rEMfnO4A>zTchg3EsQQ| z9be=Rl&QQBx5Ij87e;A3wPaZ9xKJa&y})HNpKsU--$JQ0G!bKK)hDR z2J0?bL&;XSQ#i4Gk7{klJRUWyfh`K6$!l^FHaJ!Q zG@A>QPx9Ubh-4cke+bUooKP1*emL5VPOD;V7NSd+iY3-oE&slnRnx(-vXc7=(fp#p zm?KtrG*j0kep&iXia$qlog1=v)%6OFkCGpyGzDqWWzxJ4^9wZD@g#F3Rj94N-i2c(>IKcK3M*5gJ3sZbxh7FT zdNxeds@$9kPXof=E=9xM%egw47LG0iukX9@5j!66DY5d32aBz^)4sa%(qN|NPMsp0 zS7lQh`}G>@V$3+G%(zy1R5fpW`~w&=ul;UfYDgRf%;0;8K?##&j^fGfz+xoA8Wejd zTyAa)^b0$Q9Yf~B$SW(7!F*v%x5h^uXHsGqAocQxc4;P67e;j|Pqlg+NnV;4ahj|` z<`ccRgyfprU%Vf<>Cjp;c5rc6ps!tWIYJN!ZRr>C8u7&=;r6&e6Hm};*fN{oK|UgE zuTuLx_4IWnwbw-6C#ecjuGpMXHK4#{8Z9DK5aXxMw6>^^6YkNfoY-NdIiq7qPf%gTsf>QwHG5;pb}V?m0WAr7zS8&x*E0qe)miBoLOkS)fLUhsUxF4y!FPS)3m6xcxW- zY}abba4G0)!iZ4Rm)pFxqhkB+qN5KZNDO!n8{G}P0 zF;{+G?S3HUA`HXd;ymDC6WJqG4qm*woqp|vDM%R*>JTdEnlvZoRU}*rW3vVxM}cmW z!^+2o$Tp6o`wg>CG>V*Jc&)O%+#m;I4|#gcQ$~CA{fr+9l@cqczin8&n3?9BW?~2; z;#n(6x!+!?ZSeFHf0So(t?Jnr+sL$Y^nbw)tjN$K9q2`NO4jX zuPq4Vn2fSx%Qdc~#Kre1tVYs!tmiMQ!Vv!e;_e2;PA`aU%z|bQ@g@|6t())5#Yxr& z=W0INw+9fP1G=4(1=b!uz%ieH5`DVY8S2fp(drC1(}}n?BDqstCrVb<=}1v+x4U~? z(YHG_Mwl4dv_!wzqs51iC~gwVZ2S_Z%fm@ZI-+2Csa~vNDe7 zyU_5z2b zN7CW6`%csUUD_QE>(mqrMGm7Ya01>a4NJ8}#{j-Ma;Ha=$C-`UBNc-3NN-m=_^al3 z@qHeZ0K6aM3*IP3f9tP45!3HJLd44{fG-rXI!`_(;e=uCr(C5+S^6{>T-7XgJ9@c$ zzHe&2g0LaMDhzjFw=ipEIbPougYHj_UJu@I#rK zc7}C29h6p$W;zoPr}Xu*6Q{DhZ2o&?4WAbA5wtjavLnejfHX=)Zi~3e0>~FLXWWYeZQV*S{B#Ug?v&$U z$yF{Z+g0DO6IjNyOOs_oZl7CPwVJqUYHOYx zrr*LJ+<=;Pcav|j4=<}Ko6db318QR zJgQE|h<^axdAE|*dF;=4OaA~fyPBVfh#mAOGLF6EPmoDLyBs<5*RF<**5|nS(CVMg z0%9m9J^^l*s@Sgt&Kx4I8K?E}$%#I=!z3;B=pwJ?m=2ht%c@91l@lKSjAXeHEs*qO@_a2QJj zIO-*{!$qCLdg|2=8YqRQxM~*jf$7LqKKog=mPQpzWchLl5>8;ToGTH~Z4Kc>QTI;v zuL&pOaws)y2e8;T1VYt@?tF7gM;cY-@7x<$MMo+2+*~jZeL7J|zvOA$*S`$LsUGt| zEzlxk7uIfLBo$vJ?MB=d5S#q931q*EsnqvzXm%%nXjECsBFsf?==AjOxDiyJg6a{P z>GgaEoDF+k$_EO(vQCUMBCnZiWwsD{i)JACs@sWA-2vnAW8VTaM4E7V(|sp z+d@k&LtOLnD*(}7{05RFZxcM~_} zcR$pjn6Lw`jQj(*V;-K!JB#2+!PM;`;0y)@8xx3zn$Jll=V9nbyqGh~AI)m+O@ zMw7gQ(RGuLB4*>ys;Gf(D2_c}Y38bp|Ng$o{GU=F+#2Z)X@Cn}jC}eboglkMpELJ+ zDsZo5GwV>YJZsDb%}sErOCiBGaZq56&p6|SK+SzUDJm-Sllmo%Y|Q>Mz;MWR5Zt-j9{AYf=vci9SSy zFrxhzwZQ}DmO;Ab-p<7B*GZ?P3(Tdx<7gUqituO;p$6UFpSqI&{rd-s=%0&G>ez;ivbjIS=4<3jFlieBJbgT?WTkw>eVnxrHpg zujCEph0dqvkwfn->g>NjuFssWWw#bNG-}W0L_seb?(=hBBHr-&*=y>PguYgY4jR0( z4e9M7eyHKwUifUi{SUxoGE~3%b5^}mOsUbPP%c$ikA7c`qC$}==y*EC^6X`I zQa7Ow2sy(?JG{z~C9z~G=C(wM>wsZOOqo>qF=wxQ0$}4`m(gjk%}RbldIJezpYtKX zy>Q}azhk}^#7<_c{k~QL@K72VDJF(UxUm>pwbHM>^9nEOm;NL*QLXq4AE(QKXvVQS z)a~~wFGin)uvn46H};UTY3c7W>BAOl?-QUJpTVgD)SEm~8bdn3-&ku)#rM(=1tHu) z;HH%8J{J7NmY;YX3BxCFc+yO~9Um3#5N2{sTl{M4ZQMvPnOve(dQi`h+EW=>6aP69m6aduq*+&>d^^j$AGO9*FJ4mA2k;FO*R;K<;BMax+dNZq zr&Qm?7kqr?(*DvvWSz6Xd!5^a8-8F`Lgyg+#?}9lIzfInyg6wvBs+-W=E+vw%3-h2 zjZx2E8HlM(cfM#wmrJe&U>sCvJ_2y82LJ$r0KeaQH+nZ{1!~r4)@T6L|G#dislQD~ z7+$QIX)%$jlrUO@@2Wo&3G@LMLRGXtMz#Ve9+}Ft;|Lv_h

    Qx93}CP%X)M?XgDE!y5d&iZz?v1K$aOEsZUFwmx1CnUEdK{eT2 z{l$pB#IvC=DYAG4hGzFw)+^XjkmI?6Igi@oY~XWFt+qQAG|s5HE$S7U*+UMS)uUEG z^)Wska4|coQ`)`C@<{L_V-$J$AQ{eSw(tGg}sHzw3a%&w`@g_hc`U>~AO~~ZFNL9KZPyKulW0k*xX5q&C z>vI_ph4AfCMDlC+660WNa8a?TS?#zH5?{wqlA8z+FI<*iR;x2Fu!<;dKQ{!8 z5pY`?f5s7*xtEi05m}0u!dy-J1r*5ZM{eGd)`dxa1J~hb@;m z!AX=rQJ5PUJf|3U#ozE!dH!BqRH>vZ{-B@wF`w8=P6RCC(ECZCdi;rOq&+v0#;v5X zgSG=&pN7%XHt_lU_YBkT5*L=Q)6BJe=;DUmp6DgdQn{&evxg$Y?~)MR+^au=G>eDb z%YSxh|IUMdktnOEj@1p&Kc;Rm>Q+m#j~;+@oRnp%jZ=W%wC-s#mu)0&XZSf>Z2rhb zviW2<*cxA;M$N66Jho0pR-5Ay(Ul z#VdyGtNlso1Y0x(8TG%;6T`qRpRwc9>7f%H*`p#d?g{Ic`>R7`Ji5DL7{6H0Ub9lL zMp+_)Q^PvNE6vUQ-3RmdV9urncUb(<6S|`!cq=&*IdMX(uNPYJZ_=5KuDH8DY!civ zf1N*=y;t23+0({>j=$1U>YP1MU&|^{% zWOVbU&IH0rwTC=kij107_N)p>XZ*$H&qGP0gBgZQiZa5rRx$O0rx?TXf&HStz|PJ zQM(ZlvACpHU${dbQ{Y0JlBUWteejT`HCR7g=*U>c&7a?`)*NipKVYg|_@!*Uw*rDp z=et_+og?7Llb|;;WFl9>rm$r5zw8Yq>b4h*-=J+i+k2l?*s(k5wsY0rf7UpOZN$NW zG@^-cUq^LR&#JRI^s8nm(me%GZkiqC)zmb4U@za!KpYs%`5GSLGU!3rliNK4K=^kF=~>8 zcCHAntYYDnA4@dtZ?q{PY^GX}Cu98k6!FB}wwDBV&)bV62&Qu-Y;K*0(jCOd6J-Pa z?ZZE{qIgjJZ#NnHI%?-MDH56wIP=E7JF@-bN$253Wl4D5ShII%iBx~_ zbYvbemdm!e7-WnsB$G^Kr=57>o>TO+hdM}FOy0cU(~qV>-^PCap>d(>&pJ)y`v-7y z*z|tn!4cL|Pnz!~e0QD>7qi|geZ#D20^%B1%G6N^N{w-cVc`)oK2g`h6aEXj2oxo~ z3+9rt(9n#D>2k9C5eTg8DUkJ;koJ&^t;MIGw&=T~Uqw@x-1YRO#wKTLF-aZaPlmU? z9_lX42`jY)r4#lkyj`PLh5A}~A3c;YbbIqO1OzW^uFBEcf2a#~T; zYQRs`XEKl1og zr2|{B*f4$PepS0U!uvKf1$YwH_tKkhN}-89Y|Vs}x+pq3Q%pZF^Q5$uBCV?(O!m3P zsNGyywUIvXTE-N)-l_Edb)P0D|5Ya4o%OgpW*X1#n#*C#q_u1@NCFX&eoJ( zw93$D#8ZtU~Sd~N^;VNS6lB|d?X@kh{O{6Orx zFPv*9-ao4h5bcN*k;bw55te3B||l}5f~gCzZoUggEzDy1Exl5XyzPjBJ6p~@%FK;s$&y% zQDDfITCvZw-gjDo;pFL=^n3OmK#)wU-78omp)Xo(?R!<^j6*q$G2f>pMe5`Lxha^# zX;Q+-Vj$ZniAFqMOy37(bfjbgruh%faf^p8cDQUk$TdlN^`3QtO%%6FT#s24>G@%Y#&&{WHU~qWTLC_S!gSO??#Y9 z;cHO$I(8V5QM(p*wtphAvn}$2+OD?WE5xDAEa)_yDVmIOd(XNsioyaduwX8C9dV?< z6bxVcnott~V z3l+?wa|$=o&^k3(%W(=PHqO5F8u#rgoL!+!(Fod&d^fKtLzA3NHGZA#NfM8)IL-?Z zu+5e>!(DUY)~4pv_th`QbOZQ=E?_-rSRwbjeiVmnhRI3CoXO=K{GN9$W9qy{zIU7K z3QyT}Mn{u~3!5=w@wLEJPVmQ7-oZTlU9h@d+(qs7djKg_@0>zcK+SV`u{ zs)^P3q+Am4);A1>Ai5Y+$#oY!eUg$@V_|uWCjJxv?)W=nWL-wxlw^@?CTeK?XQ`L!_r%rB%*Iak?PnPDt)demyXt) zLi8hQN|zL{*~kkhQ_#1sX1^sQDK^XYuCK}5MuCk=?(Hg>r|Pe$&1!oH!&)z~D0`E= z75=wj9TgztExLK5J(vG)E)1xUm^8iWZlV_-IV)Hf%kGc9e%k?mVX=Gh3Kzu}E;T~` zJvdkfO%;5ck(tf?=>)5CbNJXS2%AhoPEL%7p6`SP!(&r>MW zeLLj>1V`qDB2dAfr1ucGBAmQ$&7!RIxmm!RZnhr)7+h<9!Yf0%&Tynr6TMBYeUy3Z z1>rs?Oq4bcGkt$|e3||NTqn9yLl8x4-f@*0$(TRBSbwZ?{xivf@0H%?2usK1f z*9ep(#NZZDJiZs?s;w!T7DK`>f52#A63F%huou7p$JU45DH3xqCuV~#c=A&h!%fHe zn*os^{cjvg0)Nawn#cuX#nl&Jv6*!xXNrLo&8Q=X^+-*6YiE8eYFyu2fVh}oVm1rI zLrL}^3)|WKr7^gzF##0ECaL9n)!LRhiJ<$`sqvBDyYc{#{%pWxf$%yG zmg=I)(0%ctA)*Q?4#`Mo<@m@jjB9A!Nye55|7>kd3snB+z6n&IIN5^REU~v^Vs&Ra z(qm+zp{m5L3b!(^{G|VES38}J{AV^&KPVl%@?*#m1|bSgAgB89e9L@sr6T#MFIrcG!*H} z|38~I_uV`5-Xxi`Gjk@%&e?mP{e5eFYXyYXm|CH+5~tkvAKkQt%$1R`HaArA@F!pQ zFhedwKl|dCYdW>x3Gt``f(rufAVC6YZni0Rrl%B14(aaaKZFuq8}6UPj$eZ}1H8Yu zsl9-K4y>Ykp1H>|ql3|5UVa`T+(Bg9AHxK1e=ucMmv@Dh!!)**%_%r)HIpk3kL)}h z?@xy_e!Y+tY#$^8m-~A*)I*m8J_L=+@0%TMe#B1*tnF|YoY6Ct0b;B3Nl5}Eb-FHL ztAk{ykDQAaK@wRXB6`v|v;HPFuA8d+&>raQb9&oU9=%*lYEDQU$2V5P!~OZGGqbLd zT&vt1rsb9e=kLv~I!|NbtpI0}%g2Tl=D>`8F#V?qN2_pxe; zYi9CLy8xA#ZQ3*kL^o zT==}gE)Py;s~QRfx-EqSMnat!byfu4^(7KAINS?Ox!O@3f}dC?@~gv*MF&zB$*Sv$AoARFi;)jd8bJQRAVSdErzncISP)Su*U`ZWzQW$^;UvK7zjj z+uiAP;z9Pk9ZT%JZ69r%Ql~i0uDZI%g5Y00pqt0%&l7K@cRytt9)H9Ds_h9!!b)lx@eH{hZ z>s6kMckkTq3(q_x>1_!}xX62Oted0diP!sU2Ha{cUgx<%Nw7tXYtcowuCYm?g6mZ8 z6J9(9>}P(Oy|zx^Ej4c~b1!N%Hk=vJGzb=uYy=6@2Pl$i*gejW+ZRRt1C*4G5wVbd zS&qGzulfgYb4s;zUd4f2kj1Jt2aaD@Qr+o`P#I_anLG|?JeAJX%nF>Q=O_)i3O9$Yq?=xv8*%K zIG$Em0%n!|WEAXpgzEPFd-RO%rt9!58)x{y*gpq8`YK#H3M6$t<0${s^wE(AFg%2D z&ChO61Y#92XUq}rM^zhMjYj;Ex|B8g@JOHj0@x%;1Qg!E7Z9|kc4ot8w3s-w+N#?3 z)#vDtd+mg^B5%VSD=j%%jRpt4S>bK2?VzlTyXIZRUz+f{0a^2NomunQ3F`$8McE3t zC9vNcef;fzWa)`cFh9E*J-@rE*SK;-8+fhZ}?e)-q8&pzH* z#mVm$TD9y95itd3A+}R?6CA!vl#S{(MbpNY{mE5z&;$|?4;d5<_U6-7jTs+A&jm^I zwLHkYYU)g4S|MmZpwjhI;Y;P+0Y+(De^%+Uj3RtGQs8)l4>W5_cBcV(O%jsH{_$Rq zgmRi14IQZGmw0>88&C8u>H1p3Ot4Jn>svn zw+$B6`|+Z8?>Wkzs&;?UKXH^ZYR>!WsD#?AJLk@kcsly& z?_V42<(gQs(q?HH(@|_$Gi+*H)h;QNn5+A~2ifkul+m{k+tNDLp$GBT52Vk=y=}Nt zybbC@>x&N!ON=(~cVNtLV_l#HehaQlQlfjfy2EEj9w}F33HbUYw$#o-T?i!b9p0%w z#UWN=Nc`0|yZy+B;LO;EQ!N_L{pNjX^{Pu(WE(kRpG#}BY@vyJRo}<_Oxb>acwt-W zm&3beAB$ITuwD4e1q$+EcS7x}(Z={BS=MyIyl;i%>I*wp+M!9(1p}clo6vAQ%js%# zq4T#>keN(ePU*bcZoEl+2duIA^PXMC#Af1%gyC*D#^0M;ee`4gb`Ilz)i6}+*kdFZ zx(jU+vyd^|U`P|(sI|>=(I^G#w=>`vyiMNSUFrRy{zHMuGvH40o@*mclxM{fD- zzZ2O@T77^76B3H6ePtBWa$S!dao%Z8wpXN=3dLU$$9RhdO=)QAv$_=#y2vC%Ib0k; z-&cTVw6~2`Z^xJ|uQ}Q01!aOV0v!Y-rQ+gVgi2mu%L~n1=meMFu1l_{wE|dFK<3WS_mVmJK5L6Zl&k*u(kIX-cCKLWX*g z4hUKSB^(oac_`dO&nFVvU5mo4Y#-5~90sD`9#{a4d3f536M6~%^A7-g+YH))+S%}b zrAG-$91?EWE#VB#PI${(l{2iO1LglLSwVqiXI4<1qhETPKjokJpv+|IIKZlzFSt@O zsALg+mqz?8@*93cY+8~C=6K?P>AK>tV{2u;8XXwwOAP#hODsRD~dVRC}e@`6|Bn{aX9*W(jMM?5<1I8A% zkG{`vVaY4-nqH&bV)vkE&5pgrM?4F&3F@h?M3?x~!`%zRPr`jaj&SQKe~

    Vl#7F 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

    nL?Hr+9ui7-D|k$GalQ|PMScs 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

    eRWwqDXW`7*JRJOw>6wI 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 G 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

    %QqY945&g}M6boE>k< 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ŠPy`}AU{CF?eJy~`GqNm~WtzOQi^dx$K*A_g$9 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 Ghrr1)UhsaE3NmMAiVMqnN+YYzy)Q!0#%c0h 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 z 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 z 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�kS)zBXEvlZrxE&Jqfah$LW!PQolpjyg z%gP!~DvWpdLl7Kn=r-a4^|7K?x5@fAoAC=3lVpC%K;Ppkw7QFS3=+I|JhyuTftbfG*l)cs}V$u>ZtH2TgK(vI}=A)-P}U?%nS_STP-Mv_VD*wkh< zRDA}G=Z;quq%_zNX%}r>56WygbkSZ#q1U!_btmn0?XjQhHD$0T2YwAhH~7a;piUe$ z+62);D&u4o+DST-cPjc0QA^wWx>1`ijqk+LDLT(&4&)=6vj^+L9*EYl3X0$lspf)1 z-N7jO&F>lyW}SrZY->~2463fSTb$w1+{5Z3?e1BUuiK9Q3{rO=Cp5}s|9(Gt7jymA zT47ygckTI?ziYS6S$Q$;@iJQH&}~KcWgAh~u@Z#yTLlfR$`KGq1$wTh%qw>e6fYk0 zDzm-(5n5G3*VMVkF3_Bv(>a@0IhYm`tui$1Gu=Ebwm$AZn_JaV+aMR_g#HvY$*X&d zE5FR|&T)gOwpnv@)tkf+U&j=WdTZvidxY`h&644(UUgj(>wT_Y-++fIIumtc1qg(n zxmNkFGqvsjh;4RVKynbL48N(D=zR3nA0N35dQ^3V!+K`l)DQcb1-OL5)|8$!Iq==p zHq_u_e$|~hPG*CmX(oG7iTzv7E_)=7$=cz3*c$cNF~^d6Lph_wAF(>Oo|#-OPo+R?rNGvRe zoIJgKHBfk_r-tV@#D}PHDy;iL&I7+>fjW<@DHC%IezRAi#|1bS7t@z4rLkV1Z8|2l zxvMM2joCitIM}rlLiQ<*92z65hmLZ=^iX1c9Ul)sjhI{9@&}t8pOOt-9wfn%&4bH{ zkcWww#?A3ICxF5oV0P8d?O(mDPUP(@@U4!Sy`j;~wI0W^S}R0+BcRa9iGh7wsr9$I z%vgi$t&yL*SDm!}Ul22Aqshk?)1eV8lP=L-YHwb&sxx@0bG?VWs6>l>4Ets53k(u< zO^VJO{P0(A+{QX4vK?2w2Sq^${E=}y{wogyH+TcfE4{dp^#uvNGu7oV zgx0I{(Mi(+c{JY2v85J)^TmneK7MYSpWyB1&^-LXo)e&qwOA8e_{pwIQL1~c`hEYK z8$MK_KN=eiXx;A)tlnoanyYzgZ>@nUs0-cIAIuUE7QFMKH!uI%oq%bhMZp`16wIK7 zx@-2{rhPrKb8e}1X>u?9aQOKCs*jPcll0Zo^PfyVAHqA6zNi%O=Iv9{^WN+!oe z%iSfDKGlnT+h4&*Ret!YSh~0y;g;wBl43+x`4ophWJI9~mbb&*UD}D6+l*UaLq`r~ z1A}!#oR~15x5qZH(Lh6uphd!rCDNyWY5x{U@OG$shJvO5hNEuCu_f}P{y|2ZmdtEy zmc2<&d`m4G@EgAyZJ}3=!C%3598T8<_WDj%$i~CE4|>mS)@=lG9u3qM{pm2WM&~k2 z9YeV&%U^68a2)Rr+Em7eJVfEbx{_6mDn9VcliEoEF(->e9t=$DXzEK&#_RLeK2zeB z;_ncbWr{w&c8*MxF%9)>fNzh``(CvxLw>_mv6?x732{@or551VR`T?4T%m7aW;cm} zOzu}Pyl^z3iS4NAF(#=lx$0e6m2hyRvS#dcdtjb?V%wTXC=mF?jP(SW4^VMP<7PfzFLqn)4I6@Xah$!Q!_a{$W|0pPzXJ@l>X0vte zF;>4`Ej_w^WGEnUnTSrEn5O;8+1~o{)HFiK72SqVghzvXf-&uP9|6tFW}KLH{);8S zt0XIj{&s!hX~U*YDk!rEfaCv(GwlU5DQ|`yh1uZE!+Ao37#PIvOaeQeUa3oOY_-Y6 zrlvhM>UCX)WSeALcQJ=uUbEX`w|*$?$5fUt`W|c>PTh#hkmW@%{9&j`3UwE|86V77 zbrM`{(kiV`>>ph_8QXd9TuGri+s<4B3&I7jqokt!+(%euCyrtv@5EGta~z>!F_iGZ zf3KO%g0aeW+%N2*sAD*IS32n&)aAPclI;vkJ@~FAq{BW8b@77CnOWqvdagz$Vg+M-bX+W16Lt5Z|NhGfQl(O@$?uV|t-7oWUW1F1~oANXg@nQOjA*$Yy z@D9C5!{M`vx$3cmVhkRHjQhUyiVLzzN`O&^-B2 zNq;v&0(`+Yv5MdQ|6%IQEHkRLY_dM_4=lf58)a%u7&vjqtc^=1c9!J(*txM6jQ+P4? zd!((9ShT}{A*^7?w*lC}m$6p{<-?1nCBKY>yCKMwH1=)8)7= zMpfsT#J=sxg!#Mywk*%F0T!>}+_=z{x2mdYbljhH*m%eO?oNRe_WbMBGN{P zUO+ti#7@e7vZF2-_kwo8Y{!JUK`3P%v!0xUDx-lpGm9q_8=~MW`G}k4+0mw@jJcV@o*PbQ+rJGKc`P+Q+S)wNuwYIEhAULJeyFwCg zMbSIz|Ib^Cl&X;;)z0QGF5DfZFUpSp$SHC4DGAqF`#em09n<4MZqu1>rfoz=+9>d| zqH)Nb5o3=fihqOVz62V>W8k0W$-xQGWA5uF!M-UnKM5+7N-%S+=9{s0qs%5@-)#&nGX6B(j}-D7J^ z=%b*1aK3f|UC72wfky&i!dqK~()@R`IFLJw zCW7l_T-+r}68+lQi+wy+Ct1u2O-mJWG6&yZC7P-jEw9j+H5m0WpnqyHFg(5f3mL~$7S7dnyBYzGv` zc60YpYpXd6)%v0GDY|gqP1rZqdm^9@0i3(kiXYe(qx91IAiFput!bX*?Bz68F$+Gr zt4Y@c3%nUoB0DR=(wf{rm8eS`*d!%&#X;S&F_uxb7dUB8K zek~q3snuAIC;270Y-|;{k@RfJWZmtZzK^P_n!%xazrn&GuU1E@{gsk@FiQVd7PTw! zHBe`^=02QS?&)hrId}wjl3Cc9a0nu@-!Jhff#OPPSzQiqL#9<%_uDK`3+cvGlaEm> z6A(oqVF!Aq**MdwdHNoBbr@sr#c3l0N$#nG_l#J4i*I|)%yJbCtYk}2`N{-s_uWx% zY&OY12Ytocf$~+}#@BPu`Cx8T^4j9Cw`8y5Lk0uNa(U&pu%*gL z6S`W4g=2?A2Ts-O6i#^g( zb$LH4p5f!-rECAD3m+E(BLZ*rGf6~)<(~2PNF7lNrP#b#*w@tR*|PxIanGG@fTHH{ z3-<3%+Sh%$rLCOts~V<%>7EbQB(I<<14R#8q7Ung{epV*r9nKrBiy<0_a`fNI@rw+ zYK0^!9BYbihoJ{`?7`AOLuZbV9)YmL%2IN!hyfZmg^}h%S(A)3OK%Si)|n80W#|43 zYGs)jVAsX=c#;JH_@%p-p*x>$zE?!=IpZlnUH()%<+43Kb_#h(#fqC7uTU5M{>3uR zcQ9pwCUlURxSowO2U&~YV73Cb9sHUOlP6WV3=2?xkFe}#iAgS8ZQ^KI1Dnr}SmC=} zN9O7Hz;wUe+a&tCa$!+#+>T}at50?)qGpxrXcvxz@~^F5T{t%QX8#0SYMg-q>g&hD zqEo)Uv&{1Iz9T)ViiUfZ$;1WU^NY(b9k;}r%+P#Sh1$YQU*739BA))bf3>YnAVya0 zm@!3Xw0FN=uBTiCnVLmDJNfTx>0)hG^L#FxL0bB_cQ?mTQstBp@qph6adfbtu7#r_o+`C_QUN%)BNuRtlH@-F;FDqP6QDEU1y;>BbUm~n+})mwz3q|#f0 z^SoTzA9eRPCnx|M#8d*fPX3@(rkpGezes z;2sgqkEVB=22wPi8`%%9z%#vCFcaN@`mE)JlmUk|IC|-C4nj zXeBfbNZ38J%+VQ{t$ecLs7F-_tLsvC9-7fL9$(KmYZ!i(YoS8+m%!iOBnp?!OBwmz z9-gD}ZvK6Ep-8j!^O(CHzgi3LVhpPy*Zr+JW`i%*=Z6_y!T>>Kp@pq|F}jg{c9=f7 z|HWvMmicM_{kQ94KWrLRDVfqLBzIz-ieDcdkbXS%qr$gaH%-*n3>tL-oGkI?!Pj46 zVz(*xEZ(})v1vR#e!D;ETtAuOyK%9y-_Uvrs3Bx(f7*&nvaeq_N0-dp14ba4Uj^xt zd$bFr&ZR*o>yy@c*Okxy=FGyM!Ha2A07T;BvI&44pxuf30cm1Cl9;q7IG@z!UaZUXYWa{JaQ?7p%uD9|(u zK-Cd)_~ZtT%$05szdc%tkSZX#WkAJ>xX#3*|I{q`#$@^TOYSOHsia)3ieQ)o)o|l= zSA{#(8&Fya66rwM4|}@#q(0AUogCgPFa5n&v)E8-1&67kS)h*u1x=PTZLu{^NNg#M zcO83tc~b?N+DtFUF)LniD~(0MiT_B}vVZc6QD`y7poWVGMtr)u}&TFE%t6yuR7UhGl%arWJW zG__4@-{<~fTlpR3TQY-P2t;p^kBjfYUu)h=4cm8{&#oK!bE{pJbDKUnE0$z3IMy%? z#^;+5RvPdsQf*r~XIZlir_$k%zyvNSC$fbMc#S){cEnnY&X5uTB(Hvcp;8rXe|*bc zZQ&Nh{eG`>jzVB?T?ezyRO>Vw{Uj?mMc zd6j(#IT5#lG3CEQbFr_x$=}2gTQ<2>8EG^>hLwAnwrZi=cYqVs=_1ygq9qdCb(zZ3 z7{sx1dyS)PRRJopE4=;3SW=ZzH=}SR!O-=uL&0&kG%(~$wibD9-(do zR30Ygx@fuuhh@fqPDS=1toBQvKL8p~ikK?AHcqF(O$p{4D#T}fWoh8RhubRN&->28 z-18Pb($uX^$>bLe;ydg)6Wl!Sw(on^BxmZDMIN+ujFnm*czxPQs1#l$ zlJB*g%COzeN)B(08)m}w1Cx|=Mx^== zRJ(50f!MK8T)?xT9EBqPzgp+_9pS3V++2 zpYhU+WPRh@Ha3DHviUYl11}Q^+F*gl=Vqr*>$)FV&uPaoepwqkOwv(cm1MoEuV~)( zu9Iip8wM1oriD|AV>16~e_oZTopX2J3D^ldXEI_lVsvYn&gZ6kf4v5dWbSeM-w3I5 zrbnuUN^>sb=gU_~y+&lI`z#dFPtG@odyaUe4g2)<*wT+Jy{JH@Io2cS8a7RAR8Z3X z{|(oSAp-mV?8jaDrz&t+Oq;SgLR#pdFj#HuZUUqMxheLDxX&M`7G;9@Zj$?e-mwQq#ued zNgIyE9jw-$9=pjBj-nc{EVf27+Vp#ja*`m=2ZJ9o$)mi!+HAx$H!SA`4qyY5*rHei zWkZ+L*6i}{s^4COM>OCN#jgxDvD-GzUaeW!pWUw)ohOO#YpPV_cVZFqEGa+r<8y39 zn9E&0b(n-qfl@7hYRC9~Em+u?P5$pN!KQYFGk5*oAq_GU!pY?YuCj^!6C1`Ia8S$j z=}`~+;|0&Zg<5PKluFAgpI?43T46v!vQrOFHdlo8tIr6Ij97yW7PGU6ok^aBT~lfRTx)TIGMAZb z;*glBVo*RJd06Q+-Rgj(f+ilAMzT^Sqy39J1Mu*aHGD14f;VGbWBIArqDt~Bs~G^v z9UjyCu!;2*A#LOJlDnun^oD#$r0t}6xz!$LuUh$g>~J?!Pb0Wf=uYfHTN!GheLf^h zdE}?jA=Q$518Fvc=Rg04&e~HnXCTsYo_{2$S22H*qeB^^HR8Fr>-nWu88rl7>K}^AifHrYT{BnA_EH%21w50GR@wJd&H>k)O(4ZDJf-@#aAkyT zb;`ad%^O+k;0W?JO?(Tj+_U&- zc$){kA`VoC>OD2gzXAB;I__l^)mTh@|DfoA^r$F{y|nNw4tRUU@PvFN4x5^rHk>-C z=yA-y%3HoV&|q*?$oM6R!YJl9)g9x!`IulN_UC~ zGre?R$GLaeh;VC%c6`r5a4Q|TL;i^VIJhy!-*9*$=hjwGz*arS%sTC2ucC}0y7mVh zw?oW(Ae8=+ zz4I<6wRIVcD!b#fTw(>dU8o3!2j(M^Bwlg_mY^S0vUB55R?qVFda*`; z3PE_j!)?anIFiD6c)!?v&n`1F{>#9T@(%n){y@6DpOU@#M3H{#IqzO+QqxPpieS_gtj#B2VC?bA58> z8t>A!Y@{V>Rj?o174wW;?e_t@NH>v4rU-J!CRl$GqhazciPvNRUTRWbqkK#AhGNqx zd&-vbTwt?{nQ-g@Peb~*b~iee}bR zkItD{iJ~<0VTo^0QZM%O3}#op@zhO5aIMznY)j_ntaT9DDq zI8q2YvHh>B^s}0FWa}n9-FeY`K<)Vt0O6S49R1jiJ(@X6q>57#+T``&kyL;fvX!w+*Lpc}~tz73cy)Au) zE>uHe>cwm1YflM{l9P0{Tr!fdr!)Y0ezec$`M7JDgr9UBbcFlQ9JQe7n@XKxQ^AI= zjH1n-I4tH|_J0!Vk|I?JvihORVXcLKu#lgu2HlS?Twr<{%GuKRBQ*f0H_q3Qf@erS z`kFi8uJ;-vipClGJfoDH#5jeD>OsC=rng4N2rB<_P}E=M#fsH<3Z;XkUu|64o#Vq6 z577n{8OWTt*@}L@^il!xF-pYp7GH>jedDO^Zly1mBD%xQE&bo4aeal!eaNm&>)h;= zMM!CVD)d=!@vf5`gbIF4A*K2B;8OC}1C2bq$m8gRSDYZmWo%oGx9|~aL5ZJ9(|^ZD zE1^@O!jkE-v3p2OuFN8TRx*G)x&|mx)4^nBF96^N($q*WE;_mbLp65$xS_=Waf-$H z!nOqI%u8e#I20RE!$tkr#~m)-PU1lWQTL4nV*D?k*{EZ<}LVd;3~GC$C@$7Jz>o8X%dRSac^XpEajE0n5L1eTh3b z^e{VZ_ak4`C9VF9OALe2_`)PoL`p-dl#COthSATMn2tB9)yN~eAp)a4uXMg zNWsg^PxhEc6l$-Pj1hLlFyzgLWriXl*MOHFd-4Igxu z?3-cH+N0}-tsJMWg687&fj}Vn@5zb8gS$s|0V02~)B7myujat~6J&%okIikXh4Q_e z^H)8Q2|d7qXmw${ShtJ*xrd^^!uip4@6 z;@tlKcKO)<&c9SmcW{*nTAFZ@1J{$gj6Qj@G+{Sa zzTw0?snAX9rS3YgQgg}XzpT9swRfh6K?@L^EU|ci=LgsHLmHGK0SlHn;erpRH;@3=P_LIN)H6Zzq`dmNrxK!Kd>;W zuMSW(bwZJDtUA7(ghgJCoum$-yY1m_)wO*{UMQ4c5(gadzZFr(^At=Q3)m*a&gJo=CGPXBJ*A7@ayQPK9~L=X<}DYlI0LS;gq7Mj zrvLZ&cUcsQDyjZuz9?Ym*w6fME0Il72FLh?S;2R}F&l zOww6_-x9yB^fEYoR(C{$(Lc>a&U3|Uj?>ggBJ@g>dXzsIEt(}hGGAPVwxYC9y00-i zs~~1&?1vSVpAk#elsCGhs5T9>F@yjjl##u3z2c8`*@Z$`Tn zi7Ms2Q&hbyZ6QyydZy{qt!tteC&#HuJ{GtrXgSWj^|bA-e>7wz83)#R1UJn7MWNl4 z+&8O6E#g36^%I}LY91v&6Yo7^-iqK?Q~UbOp{F0#L$gkR(URufJ%AD$M&6*Pc*Qwa zZGhDxo$NNUW1Wi{^8gnALQ$VTHcdiyZmNKn{#>@HOe@><1<)UECJvzF^MK**kj5Sc_l+1a!1qY;cFo8eIyG4&BQqp z+NTM$x(J&G#}F#?`GRox>*u{mwG2qI#pmc>i)Nl`(s84aMHS03%hElw5f{NdZCW4L z{|h1)k;jmXy$dLw8!PQ4cK2t2Gkk@(kfjKO;F&5{!cU06v-r6*i=F*E$Z$atF-FaG zTV2eofisL3U%DyM)mY1Syws6xT~M0a1kQ&W9(zO+E)`PK9uQOE@V)7Dy=fva8Id{o zAfm@&p-nV~P9~dU3i52*8~b1Q&%(c`yPYsb1^ywWSPrh)IfZ`|!9!UEY z!dK}NRy8;_Ci?lcPfcyeHdVli;^cOlxPpbHh3WX?>|3@+iifI`?Vu1d*HzHMoc}>( z`zb@aNA1=rjQc2inXCvGRsksEJ+%{?@Q|0-#|Vc|Yzh0z9YRO!+}=RHHr0K}4eOe7 z!}$8Th8?5x9e-#>^IH@6xaj8yr963Y3RABOOYbQM0iWLOV=xx>Am9^x z)4cD9`o{oA5YRii{I10ZI6H1hW!@vgg;?z)e%ATkv>sIMfnVxfDK*TQ?teYod~`PZ zgICg#hj=t<<7YZzZv`o-jUwDOb<5qQb2tmkq}>97?sJM+xL%dY-F-W3SyR)>wmGml zs(;?l*mODXU82&;X@=M)dO@D}0*J z9%yFDKwAsr>A0sbX7qc4O=-yEbbu0%#4}3vO{Kox7fz;y6r!d!KL`Ld-`n>^ z3jO{)ph#u@IfXE&;@f@4RFmo9;`AD0kl|Udv9_&1vcpi6b&E+yg`+j=@=31z$!h48 zbs(*YC}1P1b@|56RnS1;-G=_WMkkxEKUIN#OvI<_u?gAs8b_|##}|ULrswoTr^5+Y zdEz)8i|3nD!{(d{Elim@yO5n4X4##v`G0U``wd<$G*k#M2(y zoBHfPo0@Tava64Z&CnfEgRe*N|B_!&zsQstXSTpR>cF&fzPV2v_<*!cMyV)&7GG&B+u8rA)C-B&BF@{CL+Od!0Rcuo>oT@wOY9_mz4-^6`36}yQgH_bO(Bf zf!IpEkSOlY{=NCx_ER(}tb<3DjDN?@?Sazy{`t@&WNNdM9}vzg6uvdLS9^dd1v}># zT=b=PcTtmv|8^oVwL74;OFjoi%q4l>VSPpKL+!(v0rglBS#f@^*io8Go7~lh z2ZgL6+)V=SZiFFcVE!c#hyI8Bf}S1b=jG^kFl{G?@;vF37AyCvLUUxT{hts)>~x}g zT?>WtEol(4F*%D7+S>vljz|_2Hjl3>JDqC$7q!NwKuNE7{k;|+y??ddJ0Z3#Hw_Vzs+HKhnP@Cnn+lYQJs%!pr5o>QW)K07H*cDV4w!etY^g8 zpw+>RFw}=r0@R~l;Q10^d1C*D3=1V9OpthbKTx&PgA zhr}N`$ZC5~6afnSh~x;lex`44+FoU@@I@kN@D*}rxogy)MkqtOHU2j-s`vCcdscMK z9{0^wA~#GbVVpBoMfU%r%@j!gw3J(vbWHu|vJ+e02fX~eQW)Vj@#JS1L9F;lb+HPj z<0de+T$0*OI>FpNHJIp>gGU1|-@)b2tLiSFr^U#>IDsSKNz$GBZ5iPQG_0$iRl4Sd z!TxJqw|>b`v>RT(5&77NbY`Bu+GyKf>Bc!)9?$X3{r#n?apoLb+$vjpxYc>?qk9yi za6jR~G7l#g7UNFJ3OY$^M1#e!6QVn~-vqV5x>5=QEsg#)LX)vo)V?ot$UTCbuUE3(bNM zPAXvBSCzW^i^q&ys}rJKD%$$8QuOk*Zrjf}P;2lw#w>W~#)-SzQ#z}Ay>vIWlkxsJ zCwE7*j)AF_GhDJ8Y#Gi8`tE}8Bjluha80nd)S7Ltdh0fNF4rsXLsW4#!yiW?Pp~B9 z+mMqi=j`FEZ1nbJh4zRb&ZoFxpX0DoWde(jYo>Q)9ODzyyz;3@JSj2xYvN7NY<TOXJpiiR|o(2#^{tFb(8w{${eHU0>4ITE{kp5d>LyPmUR z{mdT=L|;Dfs;-+xIwFS37i`8Dd~wqD7c{$%IOHsW-sRJ@wuJTA$6t3wYc+JE6-loN z{R1?Z(_mW1{E;+8TKCgX?4L-uGCr+zNmU$_SS~|G9Z5Ub_#J~cGayo?JY6xgB940$ z+cnB$k15N%ZTg>zW{d_XH}3)xDY1h#WGXQyLV@dg5Y(qfeY-WqrS?|~5CB%)(EGi? z18Ub$R$?=m`Im062`nZJ67drD)Oee=S(*mfOW#E-ecw!kLoUdsjl9NOF@94E*c)86 ze0~&3(r2<;K6twZ&MII*U)|veETOT*BsslFv_Vo!=#0uOXdZf&wQ~)S3|R^Iu48&9 zVZhpJe%)(B3RNUsNjs>#IXk6SgTBO}5`ZDa>-GTVJ7%|6|lwi?beR(?jj zX%A4B#WGlF8uGW;L9K?3F~g$a*#jSE;h6F~+|i;<{!dz(hZmMVk_J&PvI7HwBG)}= zo5Vb@WCrZu0;b?gG@#CDIs}NG;d1B14N7al1847xI6lM&1v<8!i3)|T$nhyU0&O?c znIM0TS*y=xpZdr6|KOfnDCw&5QFHwQt@bVb<>kVv=u&YfOw?t44uCtq3O>{kOwt!K z?e)-oUtNk-2d>T@_Io9WWs>PuFp zj6En_8WrmEN)d+2MbF-Co@=|My>j8c#tV8k%X_ba4k>I}_^&Rq3%f?%SoZF?6V`Nr zYs~QeRnf)xu=!hJr+^Z&aetc(zjR$IAVcK->cJf0@)~U(HGSB>PU`*oX!Z_r7+PK-v0MMtsg43(*0yBr4 zpz8jb{?Ai0o|_NK>L_JHGn}%8hUhe;GLWyN+`%k?Mb!hKM~+&kSN`8=9(shGn$6LN z;o?z;s@DqDpHP#OkhvB~|5KFFTX;d`C}3`(yiY|xupp(-FWMxX09wl4kU!tv7lXLd!K+B{?5VLkEv1ROup{+dl%pL|D5)W zwWB%}n!`c+Xu`NHPs-GavgFfbj<>~i07ejr+48#tK486~CFz-C2S^4hC)j?AcP(_M zc_EW?+baF#lEtc9zf-h*&8z^zXnCCdBo?4hNV3>$4-~2~&7|hD^GPli?L)UPvc^e{}3|yI=4_vC-2z=lWcY#kVdJJztoEX&r zw~SZSy}!?yicYg~n@mfyssO2zy8?kE*-dVl)e7g18c$#{q`oM>n?Y6eyS8=Ruv}6I zD6^qi!UHn{RsDZ!|`H?Ti))adyE((SwJ<=WXqbuZV*7D`jGku7nm!R z|HT~bz-o@YxXQzpZMQ#;7~N2}h1KNXou7hi2D+f}bt&ZQ`l||Mu|Q(sMN(Klw*0*4 zk`k+1x6Fp4Cc;=4K1%)Xikc@0Saeq@=AB{JP5B*s`DPO9^MU)wRQElA#k#RvOjhQ( zzDm)t+LLUyY-4%YZJ40!lFC?}P`mt++MvT&ZO@1kdJ4`&A=+ts+mvt8@ixTKpp((; zK~p>^BbY4@a)7g|_8&m5Yr>}Z1rU5THnj5id;O?=v{9~JS^Ksx5HUN-?$_h4If(%5 zQwcWyG_+apr2$XMDwDkvA-pin4e!(MJ|Ph=vE^5NICEF|``_Se?7C6>FqA+>(~k`*t}Z$|sM+;ow|G_b`F%22Lg0evBq51)nguEA0zM2`|6_~a@Af2j zb>3YwjBc4dh?;fi&|?zIo`???%)JDqQZJ&Ytf$$wygL$Vbv~*s9)ro?Cnq=|Z3|F8=}DlD06VX%@TTL5@NSuzO?Bl4Svfgs);3zw>q zU1}7FwCQ}szWd>7$DZepSe2Vm6B3}M;g7jt8e{xp1g7fPo#|P8V(kn3a820pHr?Ok za%`r3$Hv>GvW>_v7V!R8)Yyx_6htF`ZQBn7!D=>wDBx=17}S_lB5l*13Y|Y(iGQcL znXhz*$aInMoN zJ%vmq{@f5X;pEJBlsbL_baHHnCaw#z-zlHJlpT8e(9n}q^s&>~a?q*$qycaAfkA+Z zD?q8$-~ldb!pQEUJA_{o9eM=A5G8H)psW&fmZT;dFtt0>>dc=qO`;MP?T)P zBO~e!xnzqR$ed&``4!_+?OvG4wKBEG4LV-^QEg!wPlNw^+DT62Tic3p)Au+RIORYJ zbwV_z@@I{lqDDazOy86UGLLqDWKab-5LtL{?Frid6Ahm{ihXg*!4w|IBO-0~dKBD3 z|2Fjqpdkk4luzYzkq_=f5AMstArQ!vY$nYDE_VnQNm=(V?hUp%r{$|{< zkCk0sD%W1CZ(!u3YlpM`w)MU5vfmDusqof2Mky)z!PK-J*Ew`dRDWKwHmSbN_8Dp=Y~;V-|bOb%h_G%|QA{ zpfOa>4h{olB(WE`9Q-?dah(rueeRtuQW$PKcwbcN>*7tDPD20Iu%>)N)F6=pb1UFS z?2yTx`_cH+PU#bJo*x#30>i2zhWUZpQX@pf zXK1w`&S4PLx}#@VB(I_7xQ93fHR<#og6n-Q*2aW^1&2)z4ioe&8EER>xB&*jUQl?| zPyQ#9eUoTCXZd&_$R3==qJ7IZPK{QWmfbC0{v*Ei(+}rU)N!KN%vfM=)^{JBSzf&C z3aTd<%l~(V!Td+!hDg?-{vPih1T9wYcG^6HbZPro^hwTFKLU1RRN#DMxLgPRCiogC?HV09<m$15=lgkElFzU(zcGLCf87lR`w7NZRe$WI-_IPn9nNuLL=#&c zM8?yu+^t6$%jV>^QWIq-=B8{3(pY*rdNPM*HIi#SCqQga97sTRt_@lq5$&aZZgJ+@ zcq%8Sw3>KYBVbwGF#Z!bMMt7C?{s|HPj9B9nD0@2etB-l26XE)7tCufUW$Jgk#mJ- zr}ku6{$x1e!Q&?q_U>m@NR8!2!C&22d^Ni;#%L*`ToL_NXMU=z{QK0TjGbj49fUzu zs$TBTV9h4R=+t5Za(C%HHEcbihG#4OU1E5(A1FkGSx+Twzu!KBMX!AFr~!%(Df|eY zj)+%w(Lcib2G+zp(GGI?=v9nQgI5-Q+7pQj{o&?*XY%~2-q?2ai!9%g-_m*IaMKIy zlfn0#E_>?4X5bRZ=(qh~{{AY-?6#^>F&mTgJ9W!vP2o9byT2?f_dbs{l=La?=879U ziRnFpFx2Ab+4x<^V@G1vKw##$O{Qge#`~P?lBnEdu>VmryE_$Hd+n}5lDpb}`b6&k zUXq?7)?!6sw&hVaz2kGpra*;0S!hz_Bb~ZU5W%YuSADgt*O6jy7%TYHgxid+DCHpj z@A|!0aqaLwq7N%I)UZ2m$VL~CFr!LNcRIq2^aZ>+jX3@qxho8ulf=AAL_=67&r^*= zE;mhYI9Jd62(BANpikX+-+npqL9jXp^Y8ks;k_1EW@}C;SG*)CNuis8Z;2}l3S%e~I^PCZLF|{{=?%_zpH??)Ad#u?9*J0r;2NiWrY^3*Ex>V!TTuZy zwD;v3-hbF;wz>{>zuU_U@tYpemq>@j`mqRpo2@%8eX?N?mkws9x*qe*p}-x9S2X-K z%`qDlOFFS6Msj&hnHhW4F3FaFy$lj4*`vCT$ zrHG>Ron7Ty6=#4HKQ0Jp3p*kL)(Za{ctfpsdA?~M5pDc%Y2xr}uG}|v_t^`U@zN@m z>=yVMfU|zox6yevjCedzRRg>Sg2iQPbU^?w!QE*0j& zkV^+D&X&CYI&s}jKRn?WioVP)K5Y3ha%OMZ{XJsfr)Aw3PW^fUeguThPls^PRB;6z z%i3YeqTOAXH|ZKgWzGhacBojxW z$Kru<*NX`iwmNsx#wS;HLRo59`G#@7>ELAH*3L|_Sm>uJ(6RVqk4qxigT`9fN6NoW zY4+Ckbxm4%fC}J|iCp!&A6JqP!;%2L+f6q0jviNp3GC8|^rT2l<%&w1H zy-FQ;d^WTPnbT-@!i|n+tKgsc%sR#`J zVg*;M&F8D{KZy~4`{F%dMRIK?E-USt+Q~OPBz&ks$~o5`h9aAgBR1dewEJfZ$Ql!C z6AkX3zfa%#q`myoy;)f6bBOvp?;~-Q1EGD0ym0|7FQlMI4CT=?qIDV3A3Z3ujD{ z!mz7ReNpE7Il(3J26(J{v3(L@$;<60J4vvKh)z`U$`L!)dxX*Y%zh?AgM;I)R0!Yl zN{{WcXg^d1D?Jt~*!mCaZ}tUD=>l%E2mVtCxCQ88@wej_Xg0uLC#!`M2`RQpVKlU3 zdjrO4@tn`+N4O~&brp;WsMOG?KHEEgAc z!>B0x;7_kt^2H>uMN3zM}Sr8qU0^Q;W(Sd%ST`x(YdM2}*3dj4$A(##QXuVzL$z2DDis z5yqV%EYX5={Mm9oTWU8oq~=1d;zwER`^QMsMFh{cjKOT-))=9|vNAO#L&EC%c2WSm z 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 literal 0 HcmV?d00001 diff --git a/pics/45e0e0bf-386d-4280-a341-a0b9496c7674.png b/pics/45e0e0bf-386d-4280-a341-a0b9496c7674.png new file mode 100644 index 0000000000000000000000000000000000000000..32fb94aadc6cafa048461c4a1e8ccafb7c61c725 GIT binary patch literal 44032 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 agav>LYv+QlvGu?H*ZTi!{r^AK|K9;N56QCt literal 0 HcmV?d00001 diff --git a/pics/77f81379-3987-4036-8d7c-93a4dcf7b05d.jpg b/pics/77f81379-3987-4036-8d7c-93a4dcf7b05d.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc5ddb98137b0c1ec3810c186578ab046f40f2a2 GIT binary patch literal 430080 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

    D8n>3lN|1UWb1Ty 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

    6%4 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

    ;%SfcwC`r04zi~5%h@LbKJ7$6eeQ+y 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

    l(vB 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 P|JMKiTmS#RTmSzb!CQ7o literal 0 HcmV?d00001 diff --git a/pics/d1f81ac3-9fdb-4371-a49d-ca84917aa89f.jpg b/pics/d1f81ac3-9fdb-4371-a49d-ca84917aa89f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..909536215192bc6233b8d11f241db1d585e36a1a GIT binary patch literal 299008 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≫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 literal 0 HcmV?d00001 diff --git a/pics/d4eef1e2-5703-4ca4-82ab-8dda93d6b81f.png b/pics/d4eef1e2-5703-4ca4-82ab-8dda93d6b81f.png new file mode 100644 index 0000000000000000000000000000000000000000..4f62e6f58bc16b0ae92d8f4cb207b18b6e5cbb08 GIT binary patch literal 130048 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 literal 0 HcmV?d00001 From 3bce1f33b0c93d4cf112d28fa9eb15f3a10b60f6 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 25 Mar 2018 21:56:20 +0800 Subject: [PATCH 14/17] auto commit --- notes/计算机网络.md | 16 ++++++++-------- pics/21041ec2-babb-483f-bf47-8b8148eec162.png | Bin 0 -> 369664 bytes pics/5999e5de-7c16-4b52-b3aa-6dc7b58c7894.png | Bin 0 -> 303104 bytes pics/7b68b142-9489-44f6-87b0-4cb5c6431e63.jpg | Bin 0 -> 103424 bytes pics/92ad9bae-7d02-43ba-8115-a9d6f530ca28.png | Bin 0 -> 114688 bytes pics/f3bfe11f-9cba-4ff2-8cc6-629068408a80.jpg | Bin 0 -> 176128 bytes 6 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 pics/21041ec2-babb-483f-bf47-8b8148eec162.png create mode 100644 pics/5999e5de-7c16-4b52-b3aa-6dc7b58c7894.png create mode 100644 pics/7b68b142-9489-44f6-87b0-4cb5c6431e63.jpg create mode 100644 pics/92ad9bae-7d02-43ba-8115-a9d6f530ca28.png create mode 100644 pics/f3bfe11f-9cba-4ff2-8cc6-629068408a80.jpg diff --git a/notes/计算机网络.md b/notes/计算机网络.md index e371f7c1..657a40f5 100644 --- a/notes/计算机网络.md +++ b/notes/计算机网络.md @@ -62,7 +62,7 @@ 网络把主机连接起来,而互联网是把多种不同的网络连接起来,因此互联网是网络的网络。 -


    +

    ## ISP @@ -72,7 +72,7 @@ 互联网交换点 IXP 允许两个 ISP 直接相连而不用经过第三个 ISP。 -

    +

    ## 互联网的组成 @@ -195,7 +195,7 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中 模拟信号是连续的信号,数字信号是离散的信号。带通调制把数字信号转换为模拟信号。 -

    +

    ## 信道复用技术 @@ -203,21 +203,21 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中 频分复用的所有用户在相同的时间占用不同的频率带宽资源;时分复用的所有用户在不同的时间占用相同的频率带宽资源。 -使用这两种方式进行通信,在通信的过程中用户会一直占用一部分信道资源。但是由于计算机数据的突发性质,没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。 +使用这两种方式进行通信,在通信的过程中用户会一直占用一部分信道资源。但是由于计算机数据的突发性质,通信过程没必要一直占用信道资源而不让出给其它用户使用,因此这两种方式对信道的利用率都不高。 -

    +

    ### 2. 统计时分复用 是对时分复用的一种改进,不固定每个用户在时分复用帧中的位置,只要有数据就集中起来组成统计时分复用帧然后发送。 -

    +

    ### 3. 波分复用 光的频分复用。由于光的频率很高,因此习惯上用波长而不是频率来表示所使用的光载波。 -

    +

    ### 4. 码分复用 @@ -239,7 +239,7 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中 码分复用需要发送的数据量为原先的 m 倍。 -

    +

    # 三、数据链路层 diff --git a/pics/21041ec2-babb-483f-bf47-8b8148eec162.png b/pics/21041ec2-babb-483f-bf47-8b8148eec162.png new file mode 100644 index 0000000000000000000000000000000000000000..7de9b57a2110db2702c58bdafd3c5e7c6ee1381e GIT binary patch literal 369664 zcmeFaXIN9|)&`8@jE>_V4vqy7(2;;jQ>sW)QE4J$14C7*A%sw*ggOoiq9RQ|KtQUZ z6d@35U=*Z<&>_?yQk4=-Xrbj>n>pt_`X0YCp7;8Gd_U&L)GH=?Kl^#sy4QW*Ywe(4 z&uVi2!2bgm7Z8T%d) zb!sbfIPaxMwTP3i-of>o^<*Kl@^Dbx=yH3to|iB6sVdj8ZTGeB+|6}uE1Uim`QUTG zf{k|q1L)t@hNM1K{q2`)y-~vVwfp39;@atYtS;-|-0!#^^DSj9JDz!)uB2Yz)Rtf_ zYsbUYeA6QQ?KS&;xg6!S587!?-FTanq_~c`?|>c8%S6qE}L=mP@AJ>;ZM!VOuo=a}8psE; z+}efq3-Nny+w=GG{JlJX@1DO8*Wa<{@6h~r=K4Fa|BZY8hJ}B_!oN}T|Fx({;6$j~ z8=py3>tA%?4nyj%FuA9y$G4vP5lWTsYDA`+krK?^R;V}AKNt1=?|W{KUa5#Qhw^C) zm7Ni+40X@$_Jlp(|K9xb?ueficNx3enz=tED?`mP_jvBxb7fclF2??@RsSyK|NmLa zOWs``i+4|OpUkaUJdEp+V_i6jSuOqMilzqsn_W2-B3qSFn-G_SIo+r^6(NSejsPfzrxM8`+;ntt%ws!jsrU>wQ!6 zeskS6UM`JFPv-qN^M1a&J>J~#wZNa_7Es8@q%13E zM%$M!TDoGnb@|)c9o*zip~BkdytqzPktEl67c<2Sa@=SxmEU4B*D={S<27o<#n)~q zUA4lxU5M-PrW%pgue(YxX72eNqwN>;XGb4e+)oea>USUL$KRpq^e`$6bIkM@s<+YB zF|U=Gwfm^NY|jrbHHdFsEAynv&Nn%IP|cvr>E9ojZ*ngyZq!xN7?;YIZ(Qhr(o4qml4j?6 z@#@5rC9S?3Qh-^|cRMcsA#pDLu5@`Tr!M7g~zB6@(Mc) zjO9lj*(4BReG{X8u_Z-b_FI`s)?cczaj+jKLS~ zH>##Y=~~tIoZgtRM=tl-+A;;@?wHX?p5*6Qq}cg7vBZao3KsTv@BTG|$B!je@#;R1 z|3xPPzoXTg(;C{7Yf+Oo51Wc;*#3s!wGI{iKwi=2r{~!v&-~&KWlUt3W=o7QDbfsc zcW-!@)bk^$a}}IbuQr!dH|8UWWIxU-iXr_yCO<01Ibv~uvuZ<)6Iq;{81tF$cNcXb z+G^k>bLpNFY}wUs(4WzUsQFf1Y4*ltUYeO#78^4Hkq|rO>M~p#M!zGTJ?Y^d62?4vW>w|U#~3h&>dc%JeySvvW1 zhb#R!O9Sci`<<9|VsVX%nGGA=l@wDQvlWAWiU&b+3jZnILQlQP7U zBX(JOMM;Xc>13~^!dE|Ov&=mPZ~5wt80bk2F1Kp!zIW@fTmDw&KC_otZO((s z7B%;Ap7*N`*X*_s!kj^KOfgM7T(%Pbks8i-!wpBRdQBHUVH?iE7QdA@aZ;vo%8Nm^ ziPAERoejgPw#=(hB!~|+pNkdTi$g0&MVUBjGqMWl2ZOfhtF)BZZ*^AvP&nW#n-kkG zKj6m@bo^so=W>(UQYQM@gZA=TZnA*=i{sswCrP~yomT!&)05mQxfLZS!d0Vjcn6%8QzQ%JLM&@Ko5lAQZg^&pWr4+xM=roGF4shist<>1EURpm zDtcVl=S(5s%h~A!%MCG`F8itxn3kLh-a+G|b#=e6(I#!Ug}9o{(q)bpwiuqo^U2rj zcJZhY^2)61@-Xr$4JBo=)^qW1{*R=27Fr-?ztzXrJLhe>`ms6W2L0z2*ztIX_tcbk zy3f^^OFh;*R$(Vmd8u?ijt}Q(OH!baoiDGxXdvI=YbUj@Gw9?=R}s&-Neu4$m62%k zmF|xbG!*J}>%~zL#Asbl&cs}cvbV;L zo4WVA>P|cIqx5E5# zQ)R3s^#O?yQA$9fG^g>Go_x#&=FzF10!mp1t+Tn5B30@E515Efb}qP|m6bGqYp2yhOgzZHrl zP9lqJs%6~CUdI)D>px}S_|8l!tWsRIdxJu+{pxIV)bww=w&TX*G3ha7IpvG>Dm^kW zIEA9Q3w80Q+Mb1+*}cto;CSu5;&mAzWzsQww1p;`ll(c1p%8Vt#5q1pUvT+-lX+)( zk2}Z_w`%f&6iH1fh&y!k#N=#Vl13mr3T=%Xxx&-YkpY)8E;-IO?l-o`tAe95s4iWU zzH5h>Vr6c>TQ6a#CPY#9QWNZ0;=w}8H-Fr)YFZjk328`4v*#vD_K$RQHZRSz>3dyx za#miKtNZb%3Jhu|tyz4aY#FYq;rvJD5o-@PQCSSMnuNLc$Jf>w9?Tm(bIYB#BMpq| z%I?~C@q3Ptj%c?ZC6NN?oYnb?(H2W~+Hr+gS&U^rd{J#A4<~qk$kd70yvDzdAlA6l zFlMBo*@5Ee!xNcA1G#OuW1?}J%p)Q;p%2R2Ht+F!``}HnOg9C8Lzv;@IyYwIC#MxAKzqJ726oSysdXZW3K8ZYRpc356dNh&N$nlBzpV9``}_S*kZ zpfGcXQNbw}u|aW@{Z`pe)Ri3<2x!HbdJ#jJ3x_{Fr%%HQaR57_)g!WRdb_+Zf`{(X zq+0kkwjR47M_TxD>yCM~;V~ZdWyfx>Xxp~*VE5S$!#EV>lz``0ELMu+f7QeU;sA=G ztL599cf2-mYTRYmKt;QH{~qce$EDbUBb_H(`vf{~bCX|g^a^rpe8Z_&nl8;7v(J6K zBiG_8cHDxgO`f_)h{~geH#eyM*(Ti63{}ig}+k z9K~q~FpI$yqGXhFOg3&-m)Ycj#8SExyj-=WzKhL z^>F5L$aAp-IWtxHnR?HC!EXk~tooam1_Ony%T>AlrCTPSrjw@fC{lVG8TzWT5B%c7 z>|oC}sdKzpwiMsxk2UFIb%k26{Dv&8qb3&O6*+SG0RvuJJLF~>0ZNblR4U+5lw?T= zg4EEd!Y}PDz9%Rx%BWr?{0yZ3@7WuyFYi;BAzgo44e@d$%6KuPJGG^`bhguYDMbF6 z5iLH-_OG-2@FjtmFxUG^qx(yDI5!-wS=hE(B!U~~Ru|jNR5K%tY$sY~7)=m|?kh); z6VCh~*QCN)aJT=_8y=e#MO$l#DB%Tn5{K%KGIi_D+s$0o$v>@uKNed!;-mVpYTKw7 zfWj6?CI;x&D*O<_1jzIiigd+;U>p`!um8fx{dlSM8@EUh?w^E{T^Y!u81hZ`Ct#4D z(Cb#aH*jHK1NW9UiBRz1C%baDE6#QHKs2iUQQa`sU}Ux?SimOgsh+Nd7a*+YGT*JI zAf;EoGb4LO4oBEh1I*az1@~}UkvJOCW!2IwF19~euTO5KGf~9Cn0xB4Q-cbYH5{QI zWx6>mbhN{fh`kugO^#P~pJVjwdJ?s`yv%A^?H5eRVZYvK{ty-04MEf>%Y>K}5EVez z(VBXW8;{gZwx_<})mLA+-Zoo%HvT9f(Qmbw!*SL-YYEpw+|-**toIx|kJVrV2srHW zqF#!Paqqesm^aqke7E!1zbZ@lMbgw`|1C@b<;smrsPgg@p#p_nYXs3yi3k;pRZ}!l zNl?!hU@-P0y^s4#T*bXsBm_K5-KO66!|5Jv@c@K6H$lr0iLMIQm3o&|^!AQ*5Z^P* zc;smsg3b=CF0=GmwLiA>_`$P95fq^);}F!BKlr1QFG5Lq;_U64F0IYRe&P3VY58Lt zx#V{I$2yXk8EoP{32?Q0c54uvqE?AZ**yVf7^cc>`vu*EeS2x&SdAJ)8@;!P`|i^8 znS*+%SDmLW+5Kd8HoK+1pvTS|f)4%KT}gxRCwg%Tbi3zS)={^`^b%yS4hzM+v#|RC ztFdPz5(9HIH{=fZE=5Y1YinI7RGI%+BP`7>Zs?P6XJ@`f(pmVUUxyRt}0^HIhQ2he6Gve!Xro?;#3p*^ur?}>B&{>2g! z`q#7=g_1`NFO0a04Xoqh-Gk*j59t=cQMR&bihNoKC9s;$;sWIAU_k85=uueZJSOB zT=y@6`m5o58nP>}QDToAPt-Aa4NYAm0U}_0EZzFYu{sx9o5g7-tw<(^9r}vWv5veg z-9GDOT7EsExph!Gc9{Rl5yK-}lqX;0jn$i~T8+Lb)0)C@le74|CUXM`igl^o&Ekjc z+V@8k^Kp}#Z+=SjD)?t5xu?fiGZXw)3B;31F?9-yk96Q}G?MyGh%WZs7gYAt-0gG| z{mc!0FU$LJ9Iz3wbXK2B6HX}iu0mbCh=yoYA#Tizekd`sLT+jJD*lv3&Ppzx)8>4g4_z@9#+5v*t@MOq<&qV*~% zI$9}qC?e~Q$Sj|db86x19mWsH*;NHJvk7zm&7!Zu0*qs>>@RBou+?@wYkFZQM4Dg^ z@mo4heh#>%*(h^gcKC>hWk9#12E!)N$AENC95(e9R>O?%%`; zEr6fQdhzN9tB~SrRC(G=;?A8U?Axr4=3b&rQ~G>v^NG#q=&;c4^c3QZ0fa7XU-pVI z|F*{lpKse?SZmpwT08r(IDC2fyri(` zNL)6L>P)D-<%XUQj03rx)ukF=e}x6d1Op9*Xq^4|aIpy}YH72BMFo)fj|~0j_h{JP ztt%hXwwy@OP91l7h8tI9l(BR=gB<%jhJvjqZOw603TQ81u45Kg{}XNXM941Uk_Ka~ zs`i;_K~bd0Gp+PW9(DUDTXgv1ZrE(79L!y~(C!K$OY9Mc19N>Y`uLggmepa^@D!ls ztSI)RZfm`W@4hQ%j|$`fSz|@1J_UJAhL~AKn<^YAKTu)9ag`6%LAEb~usI78ITh2m z!hSca+^%bP(TV%yU63-go0VrfKGmA0+wB!qapSi$KNNg;wK-Z<`g?Zi!=tXxDkg!H zu_CAM;x697Uo>4Zk;%ppHP>TOJ}pz^?=A(T$i3)E?PwO)t7INm#-Z;`?F&&k-?|{d zO>V8?U-hvI(v>E+bE>WQ0f3b;@65)Pw1m>aMKASQkS_boc95ZtU1-TNE=*6v7jziV z0ccHDxaH3Q`WL9G;H=;ojmixBJ4F#Xyd4TN1_I6}PCIzDKh2|yV*eT@wQJypdupCN z&o**1P3;VzLo`daR0@K?)~{j|V>iJ9^ydkyP3WFT7xbDch(?0igavFPz3!XxHxN2D zF|A{+%rTSHV@H3UQ*M{gA%iL7HrKyfon1O@=Obw7QqZmjg$e*H57_M_^s8y8{G|!^ zs{sC43kB1RU>z>@^A>wOf1Y6|6x|&yrWZS`_-$|0roe_>g7=AT$-|tw-y@D-$ zIeg|=)W47@IOwR2M<*mEB*-oehXdW=l*OgRqA=s+u>`MrGYx)kV(9BGsl3`>Pz=>6 z2>MP#)oHEG0xMSv0r)Kv*K2B6+eG23d(^(KpYlzn1jgw}mrmxTCvxBtfvPRYnGc}b z{W1|?wu!wWaH+G`@+&ZvX9l&y(A?BbFBMP{zG9_Q8MqgnsEPj4!g&Y=aj1hA^nBD7 z-mI^1l39+;;_G!N&GIvKSYG%zDoEY4ZG-lDo2^LQRnd1^0B1=hR`X*$Gy;A++~g3` z@U8cB@tBcI!OzZ`ZAGWgXZYkNxkp|yI2=-~+uFR;i?1L&iFY%qa~bYoNEY^8i_#K> zm4}1q8ExVmL}<@SOQ$2C+uY&R%}shVOMgds90QQN?}eP4Yik==MdES^ra=YY?=r19y_c(}WMOM4YGKBC~Sq1pR11sMVR3g4C3?4Zm- zx+fj>Fh)r7lC}l|F8y-eJvo*d6w|<{U0Pfn;kQk5C+|Mu_}EYKDe#e2A+GOQ)7}|{ z^{ta#ED{gk7Ob2;;K@~{pGCjrq{NY@Ann@c{=2B(F_vsY^iRiAK zVE4A$CQ&{{M|+BBKTdvoM|}CHRs;(;7)k=Ma*OgqR78aJ*cBC&<%v|gqRsxLy`QNR2^D#qBKRk+zsy2u{Goq1s)B8=%&8#HFJ;c6*>#f?pwOMCwE;kO2 zh_5JEXK|AeXs2H4@WGq?o1`qKMD7|q=BpGB9{^mdG9U<&vBR{5O=s@Jfn3dA4)aBKY70E^ls`>$mDx|H%=1R<+~w^tXH_ zfkCC|`{7|nb`#Pt3La&#)@CsUaz&?il{>VB1E$U!R_(q9bt%(N5%XfZvsn9wA!po2 z2v|(vZ6Rulwsk{JxvWOzB?82khV*%k=6+n+>SB8;=xCK+IIHwp#iDxC4)%-PRV(uYc!c);suPjlahl(zQZJBq zFu<&M8bynF6{5QjhsrJ<<?7tEAl*IUUSDB3<$R+4Cp~FQm36W>&-1)qbmp;ZyhZ?)KVz4a#U~uPH(I zz81eT)-?rTu3}KvB4}j|FWc8jl(&pcmM=}CCBW@a77$5 z^ASMuMsEIL*NM)o$znQ=JnG>2YPZXvF&+_V6F zB45q$8j-4iHEJYHYc(95$fRSQ#9Pz1|El~cxfo}K8+H@hPQ%%2dy)lfyI8t$?7{D@pTJNotL70<3C~4GJ)>6*&rt{98?V< z-~y@4WNEVy4?nhYZ*bV)Zqf_WoG^qN95~V){?oqG3$%xHpLtWxz(&FAzoN5&d7wd! zn`ecx6zzf15%6QDin3R5bFAqr23}}$`_yzlnIegj20Kd(oZ@`siYL(lnBQ7tA2sW3ai{a~aoo}VY2AK6u zww(H&-!n|~)BRs!vpBScqYh2 z8MJjRfU>ZlS0{M%`Uk&2$45@pe0qe+y?Ut#5mk3(C#){deCthto#NR=*Xo#L&sjT9 ziD~0MT0*UDX}G{w_f?o$*!wEUASI5PzH=Cl$CZL&Bx^02AzuMrr1L^6HYaV~KvAAS~m$C$xSBIOdz^*ncnxg!t;^fMZjif#$ky zIIrwqw=AxIlHh4qhjV(xO>`>ogN#q%zluuTd)|zAzAaskW#;|y6f4KNb+-Uja&Ms) zMms;LQ2tudtsOEsbQwu*vd_}oEME8LCuRsU(I6TB@F*0r%T~tMK<#twM3c#LJ(MMo z_{)M7dTNacBaxJ-u**P^FK?JV-E3qL7x@)pBBp%)YGnYyeagAXRlX$DKxW zAooz^K+vWp@?^?EbBLqmm{;W0KrM(sFF#YA*{y_}aaEj&@ql!!OE1)WCE-*GB)f%%J65!G5#Pi zstrP4AWj~lrBaOj_>)9m8BU(AQ6dDjeuSr_oPBhp#m_`EBUe=jPNDLNdim$y?KFAu z&Iyy?g8*#a0`2EXhSQd4aW*-vPDw{}_YW0OC*`@x>oE4wu9rHgc74~|^i~UAk9&n8 z<#?HPglG(kQfKOz#;3geNXoRt17S+3yvKY#Q4;Tz;39aowu(Fy=_$Y(GLIiS5vvnz z=J_r!aqOqo$3{U#xsg1i7M=%Scqu~)C;(5?I}L~W&Lc|CDih(*W}Pt1AIBm`-`UkF zO8c9%L$CyHHyw zkE5Kj2o!YNk5REd5U@qCXNDixBiA~t0e@t}5pffXI0!i2hw8uKCf5mgTJ=ZI!UafS zJf{Kfph-f-Z{f*G5T+dMU%cGVIreQXqFbqImY)+cOHXq(cepDe+~@B{k-UMp&+gEC zs9(wc7~??obDomAKMc58r`Gf^HZorg3}Tqkcwo5DuULpjF1*G{p-mm<`^l z!bv4W#o-`4V}tmxd&37XX?Y1MyGaoIwD~=4Vyt#loYh|Q63ROEW%;)PT~&D)%!fM4_mQkY%5zBCmKo9EyEUpJaC|~{W`fofcf=_fU4M2}lmzaC@Ugl; z8w~H3p9!TGo|lm}W3ED%C+6CJBroZ97ls4qkVhygM>T+&2|`633TfCHe^cw1zGm^9 zmTc3~JS%X#tfWs|;Y~Rme9-vxiR^6w(RVi&XPZ2ifTXNOLf?PBsaR^aEjU#Ig*^AW zxs4!IaC!;F1u)@htOJ4ihCkcn$ws4X|Jruofus-kaZKGlNDDtUTD-Ei&?iWZ0U+;C zhyrEe;qh486o&M>AIVUaB@(Jwan>UWQpXW@k}r44Ug0vESd1u#&0J@~e=mh0pA|rd zJl2W@pUhyZ)&dBnsOSCEoZ z0ngrGImw9scg6neZQ*0OXJc@Nbgw9ed1)p#<*V`s1bI;2X_9gI`-4(v>q?T`7iZqB z&Q^c0a1K5fOGsg$S8>?)k=nLKx**x{s4ZM+bM0_60n^87>V?6}*sOy3s0eI~%%)!- z%OlC&bMV&A<%x7q5G4tc1ai~4{$`-#CHMahH6|nxz+sE8TC_8a;?C1^cc;oZS7G)fFJobfO|BE&^J-i~hw6K0M;% z2lOba33R(Va8=}Cr%jmK1!$+&+jXNR+A|^umH|-GjJStkgIgN}e7HBoERTV=u@GI- zJzN*DGS<;*0{ky+QLmIlbG=n2M!;<6ob(YfwJZnOP8MBk!#7X%PfeIjuOVH0eW$ro^I`r3<`-txit{kckmeu_w zl;*Zq68#lKUxva?peMWKw*~#8FaudG#EP~&Y?NXW%}c^Y@j|iwXdcNzwANSZi2#O| zC&CnD2G4q+gAh!r(sLB5{?myO;Bsu}6NtK`k#nYR20U|7BU_R+0=KL-w4Xyll0u)O zhF=Vj&7~ljmpIgm?FjP$i z7}d_h-tiO{1K!)msaNHn2hhR#RrHR0QiHDHf!@UKe1U_%zu_}og@`z34w|VaQjNHz zmAB9$tmz`MtR8y^y`AYu2BjgeI`%~QjlS`(-#nt=7%0BKFZh0ej*+mj1_SYAU+;h7 zGS+AnqALMH%jyt_AaS!!#xKu&yv(X~8+Tt3 zk}RAe^+rjW13@RJM45W*4Q@cpcotK1YTqN+*{~_#i_GUxmo|z`c(P) z_^+&IABT^cE)XCc&1?Z*5zAJoc*k~==Y+EtdoT$8R;R67=w$*C+J7$GWVymfW1M~hd(fmt_Go{ zRy(c-@4xNXhWoIJ0^uehT!m@&s%dlJneuIB3b(P@#iAe2kR#=0>P>ait}2z79C=@m zWSE_%qC==oP zMB6n>!U~^r3Zc>oEF|oK>)cGl^G^qd<+Lf(?s}BWlK0Q(K>1Cm3x%E@gk#v~XX0Qg z(&Th2Q~7wg-B9hm5c^!rWg>!>>W==U*X@FI0UV&Y>HglMY`urW(V}hKihVDJi;*Hm z5i%L^;w-R?N;wdReTQ(oq<MQ)x|a#((nAyZS#MhA+>Y*)%`&$vt4UW4kxB@P=7bCy}r z_uP-X<;Pp`CLMwzB3jC{p4ktvWR;0neK~l;q5KBA1f_OXZx8PC0|})B__1O%``(k2 z+!sC!uAa#poCk*o;;1PD4yxPOp?E|mK^BzeSd_IEV()se48gl0MHZYmXEhi=+f4TZ zndEB^>aLX%Zm+QOh(H5#cX2@|j*o3^zwm7f)F%$6QqPM(d!vf))HmzBm2VmUHP!`h zc=B|>7jZOa8_$R4tqPe`jJcHyLgYcL8~s`K$TEjYURj%=r$_aB+tG$pWjmv zG{5u_t8bFx-FoUmz-;r{uaD$Vzv$X+70nLmt+lUhNjEDdEv=;z6+Bp@R|_Z~WDvs{ zqT&)ys$`s7ARMn<3OTFrU24#0#~wizzbp zb&RIXEYy<&=UcL2n!1EEE`i61#!D%p$mVz{amHIFHc^KKn>yFZD$W-@Ry4H*`c+Ojc51 ztJd?Rc@To^pEZHTX6xG{fgu*leHWO>YS9#q(X>YF3OYj3p%b?vZv!8YopP+_Gj`8S z5ztEa#-}O*o&&J2p5bGL>dis;gcX|dv;9$e=Y4oqP`|~(M#hgvMw~!M48<#d{Fb*H z6X1P?=VDuPDO@H2@wLw$Hp~P{YI}TptJK%kD1vTpbYsT@zI)|ioj#>@B$O$#qFd3Owg$v=qkkIxk3w{7o(_wCPxQ=GS2ZU zpqZOOnd-Ecwh2ln_Z(myQR+Fg0D4q&^Jclv>=xZrFqon?&N27SLHT?*q$CZHF|`cQ zRtpCM1fu%Wt5H%Mpvgx34sEWe07e(k$~(!5WhRPpG6iBGzH~|9kSMH%aEUIHWavMw;T^K zjuoe-uRJBkYOB|B$&@n)7`R}>O-6do2>H&?Ws`Sy|GsTA`B5MZq_I6f>tA&NMG2v1 z+@ULDNu39*)pF9@D)%7(%{QjXj<&K#M;Gkga$F~dM^3T;V3D7b`bbpcQ z?KOW-w$b*^n{VsE+dYCfGf{+*)R*AEexok*JyRdJKV|4G(gl+_5A7<1dXQE+5+%Dt zYo!Y%?x^XXu&&%v!8wf?-R|U9h-vw2-&Wmo1?PB6I8?c2o0Y%;(QsZ8^h@Z+dq3JT zoO--KHH^db@0Pc_SjR-b9U5pY z26Rtc6_VUJ933#|w=!W4E=Dlpzh3E2KlRt9DzT8BdxFZOO!VQ~c8vO%Q}D2U-bfot zeaCum;q2j%i=tU@H(R#jJf)m97(Z$5ZfSqPPo6W<(_kRPpO7TVeHUVbYIAO>{^*I^ zlj|?XG^FK{KQ%f<8eh5bUHz8HyY1j)vSt)I7-9^PHB~_w8*Pc|@Y2Y6(O)jg5A7C?7yLm&&o-L# z01}&dV+yL~S)@;NVu&9K@o$e^XBP#SeT1mZmiGYk*r5N`s-qc+mk&n3{%Uwa%_I;7 zKzf^U%a}Gm3Bj-MCUs^8%h~HxrcEsd-ZUu<$J%w&mLwGddo%hZlCUrsNQTNFdw8YF zbSJFO>D^$eq9Z9NYNqVg4x^{TP8n^mL{NjFXzx?s8ASC$f-3{+w^rpm*%Le*n{GnO z7J9A>+#yyQ-ohjPL*lBKUh|-<%5J%tU$CE@lJmfZK2!uFnY>^#g`@tb8RzG;r1{k) zhN5mX;x2ytuI)*jrp*gDxA4q;69y{-mnh!QZnTQK`HF%leXBo`uFiIW?|qvan99?~ z5id3~8$4T<9nDLCdk9D+pbbxDLN{yTtnOEMx{ZhmDViZ9v!%-rPM5LP*)f-fKr|YQ zu@U0%8=oJvu2I1CTYApx#1{j=1bk(ppu$BIUBDdlz7DH z8WK5jynhV|AEmFZEGbH|>cw*&YR1Ag63j*dkB|FTOx7A48uhAL}7 z;_7^}22W&z_d(jv{+oWcM=VjIo#R6Yfj1AbO$_Rw*tW$?;1I3YMo6~mKe6%0UClF# zh{lN+(E#$%tN7f;`UBlTX6Mc-ncQPC=I^v5VUN1)2a!WQ4i#;mW zqEkUI+#Op5$=oDLH@QH-^OoGldTgTOt4;KUk3&>_n@~RQN@_cHpMt8Y@%|L0sDucpP|8m z_K>VdaTNo{7!*8x6J5C$U=0-T(&i}iF&@o31d!>>4h@R?3S#KYT-ZZGIemlyEd ziMIR+Upx|Zms=^9*XJyh6)+QkZss+0iDc50pt`dArI$Izm)!{`;qthWmrV2}V6dX-|7IaL_Nw)n^Ere^8!let|}*mL-Ys-E&Pr}h-zm^X4P6l%X}kP zfI4eZK(KfFiZqeu!B|xc)TLaaQghi9R!YyF2fj4zQi=bXaYJW zgQ=#c%r0YGo&xQ7%__Wze7`E61ADTsVvgT8t4NEOR0z%bR_>zIw)@J{D14F>M zL$h?~>{(IPriuV@Fv-a>5Y4>lY$Gslvcsg4*-8P4``qs!LLH$U$UpFzF6Pj9*<=OK z9K**>v(}?Op`@YTOq3ei!lQRQey}gWQjc#-Q3q~jQdKIl0UEnd>1~xDpfaHYPISRW;4Aa z3nP;iiVexGZu}sxTP!MvX%%7Jj%#>$kYUar4jP|-I4vJ>`9s|iM#xvw@^@NT@d10C zuW763#1%(D*=Zw>tuy;QB8u+|4B-&qo-!G|YG!JBi2-+sTKtg{jVmL&%Hb$DOW!5s3kYWxzH_~xe4Qe+QeV9PP?68Ja zIDcKBqjA6S9l*LW0=dfxyple9vca>8%I;BtX5!VtFx;AyIKLHCrnMej%#Xi61o4tH zFuw7_9@}y1{jV_K#xhJ}*QXGfBura%#q>E$1h(M!d1+b+(oGdkJG&3&l)S0n9Dz=z zV{NeHLr-vdaXPh2cuYF|G$g0$-b_xmCD<%quC>t_+3~-c7(Mtr^ZX_H8&8M6sxz&- zc9)GIc=A0u7^NOuW~;{$^Xnpos{h>EB!9A#5x;!06^23`|M@V#Rj=sAcg`=Q_EO7U z9{1bIoI1%icsf3`aV`I(DJ9IQ znH5R}3Opuh;q&KkYjaVGU$Il1K%QHwC~VO2Zq*h;M`wr*$7YuKddyv}^Jzb)iH^<@ zf%sW{s#?o=o-t7Idf>Ud1;~<2F~1+|)L~!?XDn-0C@n+L1Gfn?N_|@(j!q0e8LD`< z@7pl9L;o^v$iE^@LFk!5!d*Jg&EwZ$Y{5idF;N(?`l62tg63>{xA0H~%2I&_Znv(o zSkuH8R86)K!Wm4I5P?5mEWl%`=};Whs_Zk)lGk8BBPK1MUU%fQ zdD{*oG}*b09U<{~4tNZ~fg(Ek68f*8`NRnbF;z&oz5x(gU#vF&L)*a{GnE!GH<%x*`>IUj`x!#@!%6)Y7lVovKF-G?=4 z0H_1@&wd*-lv!)8>iA=S9W(v%er!Z%3F7HraJ_?_lr+-7cY)`5kmK9>LcnLru~sp% zGQ4vYs_X-pU#5Esp07=+(2Tpq@`H<6^?J|+QXW-b*VMTV<+~ogpsJ3v7Pr7)6R1Jv zTqugYVf2AZyT78a%cn1a;pja?kcQ>wd=__M-u164|Ejmnoh!u2P$nVgo3&oqznA+S zv>fHTL+pt|5fO5WorBi3$dTKlyCn!ZHYt{Fx<^Sciv&cSLvC|#^J(#tq^{)5jI|~{ zC{tC5CrM1(aqb`a>6_>MPV{W38F zg?G8nDfrDVQ?5_6^0I^fIz)YOux~PqGZF<%+H}Mdn)x2cor3PCGP;g<)-b}?Ti11p z5##E;w0K(|nPjC}z$7K4{fFM1q(RlESmjQG&NebXJy20W5b=Ue`Jh7Z*(hYmwq99c z_;GqwjN(PWtZu;H=ueBj44wjt_1Jbar(cxn2deAZ7zMUrS>`~6_3Tkno|k;v6+n<(QBqXr%yY8+d0^%tH92$``IxSZDJYoHAg5ou_cd+z;Fj zqheV$wV``gJ=*{XF*1pbz&D$<_Lx97>ncO23Xm#J=)k3%iL+^WjX8XOJ^$({GAOI# ze$V>XU>y5rZ^?FCuL9IU_y|1(%$>VZB~a7*L3E>7^zT;lE~=onw>F4BB^wJ_JpbpscC_Pu`&fp?8SR=PLyuLooO`ABdH-c0Qr z7>`BgtPF4nG!vI#Mc4NiS>OMb{0V6KzYcnjRe>BzKe1VISdq2iFc?T#`~ScB-Wh0e zNR5dOFnj#)GkW0vHb;I344CpOLtF@{G4n9kiwSNRY2vqExYR-&CNdmK8N$?@3My-&(B*wEl1Y|xD`C$Ky&6?C)ncBdB~uR zrq6@DD^8OIGu!@~A3BwvG!M1wJXk?^zW77M%nE>EFrO>SkonT^EllK+*Byqp22hSx zSl^T6;-db?e&D1zhu9he|Kt7}2%9Bd9IKP3!ZfkPkS|X5mz3hbxQ*dicxc1GL?GB6 ze2_NQ8Qw4&4-M}K`0MFqf4+a<1!8$HX)7B~zKgh8*_02y{zx1FcDQ*vTC_A5h5uO|ta&|pF< z1Erl@7XeexY#z@Y`}obG3Jnw^i7EUZC}O)w$|z;`h8!{mHD3e>|Pzt4P1dq(CO` z`VBvR5YExOmj&af)nBLU|v0d zQYb~|t^SvrEe@DuueGrUuGARo*g65oDClIEf$@dcgNSf|8q!t!umPD-6_fUUo5e(w zt1tB{U(SIe14eeK&&H~OoCQ$si?8a4z`sD|tQ7KGrt-%%B#|YC@X>Yh zdO?81+El*$wiF;v10sFKr@(RTj`aSb-ot!_|G2K<(}v|MbH;cmatQh=gvyW&5O;p=^3la>N=;8*mLCeMVk4{$x^{leJ72)j9Pn06S6_yIhC zzR>7aVnBhPCESB;D%lpY26{ZcG1EGmDcveuwsW;4(-HIPWjdPt{IaiiF89UeI!hpY91b|-9Ipjk}({LO7=Av&r5&$4U-&ts^x zgbJbuo#XoLOM?be!&mBo4j!BWM-^)9*4zK}bf~>x?YHbFwShT6>N714rqt$6K${1I zlC^nL&({BA3--PZ0-<`X#DkqNsS2}Stq*Yh#{GqzQB`2h2c|?n`jb|md_h>YTw?nfs&s2d;e~{+dON0`Jb$0_tq~Gm^xGoOs=EIAK zK85*z#_kc%nelUTN$yB1SIGO9|8qD@K(xv0R|Y@S3jX7IE}bvEj3{|26443ND=e_@ zpMg^K*c5M?~HusD=fFI-ivhhChnqJ1R{f>dtAwr8BerPP5roK? zRneCR;`q}5HEIPFn^iB%cV&?P1~z%!iveGH5LBpMRq&whO0k=J%YD39Pu2dJMeja= zDN1`_S_~o9bKM(G%@?}ql@J0Fv^t}v36UW1pL8d_Q~bmCu=*##K?Rim&R**{Ts>(F zLPRReo&3_q#E|L_K7ZgdPKL&khLpws*^&uh(&2@kNhX{}9tQYF565sl{`iFvc9J00 z`Q?Db-^o%csERiC#hBe#xt8#0fbalUatifQUO9`qk8e1x&wHG)%qmP34STKH(bGvuYlS8 z|6%LOL>y(MoiVB&mNm7ckwiCxPg_G?Nk`S7ylw{wsM2IMdY)9l|+HkUE z=~zxtSxZvZj_v%ux8{9+_13@he%_hKbMEK9uIqb!mm?X`!~>dmVNp{ zF#cw;H%NAawa3>CG|pR%Y?uJUv!Q7eDu!}#z8wxfUPI^HPN9qVBGcAXS@lE>`<_Cn z2VWkUUyFw*gCdbzcTiNztwE}|)>He@<|ErC#~MoQwasSF7`4($_NVTf^8fU~nn98@ z9C}DrZWCrv^*SVUjpW2h3hP4;8puVtX2QJiAzVS$Wt2ByCD;n6j&UAgY-_*!v*`DIqnl@y9RAu+(Fh^UH;>p> z(=v!^36`Hfezbz)*LK?-VL$K~#k7YjX7EJklBoI$^_84(640=j@w62%{T$`D*f)Oy zbxW%k^K{;(&MSnfEu`XE7&n9OiuX@Wtgo5BV)AYEX5w|y=?udc_mFs_VDDzqI9D;@ zKXS%nWZ)-1zagx?%3`oP4LaWglENlGWI#;KR#VMnss43$QyeG0V!3P zcih+RRe>uw2HC6yQs59R@Rej-QxP|h`rniA7*{tFg3wUgIB)@-dx?NrYu%42f471H zG~n4~Y7a&KChqG|n5etg-rA?2)n%d}+L?Fl(Wayav)6T8= z$%$~q!d9!0eC1$@UmrZHWmFDav>8Sd+Dr4`b4Yw!=pb8)9@_f94}4yBKs~Q&d}L52 zfc;|~*_S9BG6voPkpdqadN>Tmw!BvP4cAw;b(!?gfA0ZEfG*bcfra-86M*T^uQT;a zZJCaa2dJaJ^7R1nz+Ayv8Sq~R|D5C^-ULU*%MsPkuqxx8D)m#Cl$n0Ey&?)cS$Y}v z=l)jn{65@?uKni#`wWd4B#=gkA-6lP0*6F{4(I*b&)%uQ{oQ#CkDf z%KZ4SLT-=!At|+I8=T1PxaSEpE8`rLU^E<0jcYwN`IY_mA?0o0n<>?}schPEta23s*#85FqEp(pRyaia z+8+-&a52!@{zdaEmw`&YvgI7>f4{O2^<5cT&@nOrq&39-S{z=sloZV3tIJybgcK^x zr|=p7?4bjd1R;^rVfU|3?_$%Vz5GQ2&5I7wc1`j!oO_#J@pxFCRTBGE?c}D+$-=eU zeL`Y#@{7)$w_+?2+C=xdGW;b!li>`%kZM_0z0Ct}cOhFr)_SZBr$LwKCJ zk|-BXM$hhl(DzK7>T{61a3PNMSAh2^6c`x|V4N`Fz?^@((XAc}2~v?ZMCwfEd%xnx zroHq^`7`m(-M48S#>9M}Uuv!T)juMmj@&m@#K26?IADcVqr_Zu#^}>CO#vD?omGpz z27A5->yb5dRCI%;&`+OIu|4#VCWfg}`XgfKmA!jIMK?9kkCr=`=E*r8N1*_zknxHz@9V?(2SCeC&d;l53;>ICe63Q<0oMb2G?+|hvRr-C9t?(;;4i#-0PM3 z2K^q-i{2*6IV(dftKvky=5X|3DZ|Z9x|COfSvY0d_fwzWDeW~CW*`!2VdV0`mZnMK zfNp<5<6g7q3t!KIL|@XyuG3PNaj4FKn0VJ9OJ1obCqx0CI>oePDM)&L!!VtH-Z1CJ z$Dh>V971@$kNzU9Q~mAnNQ>~#a3EQ1j|N!O*En}{iJ;ryb5HFAWv}o_yr4oeKv-Fm z@l-mq7{={50`q_Ja<_^q4!?8)f~A=T&hF&WF?{_koZy?8I;vl5@>2a>y+kA(u6gOK zm8zgKEn|s5Uku?@nDd<*dHiF)TqEl-a;g_6D=&7wk1udVMX?(*@0>1D-IXEy-S7T8 zN^^aZRzxr@b4+Q@Pp+_c*We~GN~W|uJ+dfavJ8!XZ-W|e5LE5f=A(}`G?m(P`jxYO zFM!`qV8_t1_;!pVFX?|nJFGCrx)(ww^3+Xu-6pr;k3GuVwh+->Ww&2tJb!-Y5?ZYP zem+ahi-$g)KKe1x<@wGTk$Y;@en_Uhb--T(-@A#tjX7jWOnfKx6357k3(eHg{QBa; z*>+t^aQWpuFwxq4^7W2hBF!QWN77SvO#I}oq7xHS-pk_2Dm#2^j-rbbny)kawtc?9 zIv8m^EDk*pSa+xGVLq1-pSQ$HMYK9rMQakMN$x?*IWS3@R<=VI>?-T=llR$vtqskI z6o%r}c}g}u9nRSYisd&vS|*`ajzon$@f_{xB=*{(LVRt$Kj~joD-~Qm zzHD?$U%RQT&`*{oa-hdk#A=s4Xpx2Z99!-qbwnrm)YnTPUncMNLMHvCpIj&%b@j?l|Aro+a$w-srQ>-6# zMEObue!QFZzK4zNXIzEbyA|hABr=~Yns5!l628;1*bmS-Fq`VWW$ON z0vW#DRzV@lPl!8EZn5akR~$e4e5S+ z9affR(n;sP&M-~=CwwMhDp?SvoyithlkxCGjDvde;E!{9?aY#O;9(OlB_V7bUF(o} z{N1zLb@5+aCR5D8)J^YwyaZI6=wax^u1WAcANk42l>_@rFXKd2EW3Z11BzBa6t$fn zUwj|DE4VuOjNv0-PIKJ8y-REBh#w4%_+*;iFH6&0qSWX5x%$yKVFJ9cMv{5>b;pI!ZORO zanHBoF>@c}X`c6PW+$TE|8MyZhf`uXwiH}VMiF{|RIr=o3q>Gt5!QX={%R7N+VFJJ|xe|>6Bu1zNmB2^t8*p<0Dj31gTZ*a1!qFtI@ zwHS|4dzlLG7R=s#8rp~*3%}n%9~v+VJ_#yImIs_@JA$5Bnke{gXXMs=9cz+IKs>b# ziG!FC`XWa50~JcSY^`=PA(tskow~#3Cq+TNCRDt04RPM=&cAZ+45lF+Z`;H7O*O!3 z^oQkexjV^I`tg~k=W7|C;(Q&hvR`zevR?jHM;9KqW@X4+7|@U)hN$fWv7o}@d9Cog z+Za~Q|9xI4a;FkYjy%Y*C@p42lWuTuzHaAVzU8_3lykN}=?_z29#}&HP|`X@->M3p zGj;Egv&T&!swIy)R)@TaTl-f2c!jawqp=vkd=(qq^N~m?#=(ZB`q;`j_WYIbox-I3 zR%yvPm{sm&%`g>ot5uss57l56_XRvYVg&I|H)tJ$%wjdzGcX~m=HN*Oe$uX-(_WhS zXtwy7Ig&YngJ*XeZNsX#xi0mPPPi>DGA@C!NvAgQKpglkCE(lgOSk28!Z7X0wkW20 zx#os#pti<##YH|;(srrk*YS9_@$O0rjE=7v5C&1`}{&G6qVqZ+^G z7qmfznBxsw?2Vq+%~_@O$#2@W)s5&Q)*UVw2fFG1|g&BN-R0VCK5fFlaTK zMkd64*1%r~oBEXemlq3QdvAY7 zzHd5?l@TlhnxWUS8(*=JaIe?y@gFE*5Y}j~G`d!i2h{z3@Yk*IdSzJ}QJXl(e@P;{ z?x0qr1gi&@d7kN*W8Kh6n6lh0H~4RTzdj_%?P0?+fngDS^yu`WTWJ9gyGhxaaM~Ep zy|%G?Sl9D9Q6*#*1>jmJfqevdFM&2SSu3JJS$I}ly(G(6Sivra^~=qG@88K9;gHg~ zv)?QZkyh%RB=^3kF0@u zJ8<(pMW0N_UaPkVEnXfe03oT){~2kD&WqpNJWwie8wmWSb-r8RA5aeGJ3 zwTlW!&GPJRtMA0}wvX5R$ZI~nhnvF?d_{{G?pe#;&QHP{`pcvV4SpEqrFP`n1zWN9 ztuq6E{r_dm`T!aSGuQZHTJ<$~T9iS;=HGg*?VgZa8T)9ZH$hyGwAXi3q4r>gnYfqP zn<7OnC5QEPylhtBYv=xJa%=Zh7jV|3xH8j~!k%p{l8?fD)i=BqGCxDFOO}&&>t8d3 zyE1D182e@f^8dJ05cG{v`htswdAg^`plWl2YNe79Bq$U4vwiM4MbqP(#-HKa_?Qc7 z?1+25>if0i!uTSmrL}bQ>Fco!*}b{4=>~99b8`TiJ)-lRQJ=mJHdweeXp8+^w#-v( zTM$CuTBE&!UQ{R$xnavpE@igLrqzSN1-Sz*N!)9iqo0$9#s<|ZO;^H^)WU1dq`WvM zR{f3#{iX@Avn*2f^^db{F^>~3nI&DEWgpCI0lkgRv1l}5oSv#6IQ9Q$ygEaUyyC1+ zM9&idKfl`_&KbOgZPVwKahM-n^)i?ATx&!BEG2YE&@KA_Z2|yUEsqoYd1gQrb|Qa< zuMg`OjaUq844BQ?x*2oNEw`O-1bcn2YZ5HhjMJ2lnu+ZBeFsO0JMPVojNb_z?0QMI+SHUL z&TEE2ZTTV@V$I)-u|yAaUBdXyb~WnX95&Rd)5GnqKuVwyV*-+nhm&&JMf6+M)~0tL zIlXK9VO`sqozy1**`NU##EF^y@yoY1%elo29l`hbpCr3?W=U4U-@X^LgZ_PIe=`X3 z*SPu4;nVAf7G?k#eCx;s*krSB z;!It!j=N_?iZY+9H_8h-TntdLAMGSbVPNLua3Ad4WDo+6i%^~%kJ>cYrJabYTUTuZcd zB|ChXA*~U7=Q%6wt*cD;nMa=mRXQSV7ywTm!FHlV4E5K(c%bK~Jc3V1YT5l&^OOhn zXNSHb3Y>0%D>oN@!R_>i)|7YOQ0cOo85&MacaJ@OHqT$&hjhm1QekSm_ya#r24&Y2g+r9`3n>ay&RbHft<8t%oxlG}ELHh5WTrsb0|BVE_ zLL*WP?la=2u4o@NuG<%23!}Rf<&~eTJirM zep?G~!liL5@AdilQF|z+c5Q6XDBXPCXfe%4c2IMw{Qx&ha$3zdR>v0kw2+tR z`l*dOGcPPZigw`sh7PF1yB!G-cr5x{&PthST;e0s3#$OhWeSlN@!{&)L4%`J2Tjbx z`9C?{iNq&=*L>SsRjT;iikQgaQ62_wCdtGbDG2k9xscYb=Z5h$SI%B86TSARfY3&f zJh|-abAyjU;H$}SUj#Or6lGIca&sZOLjA}SR4uZM=Xo@EDo|n&t2ogzgYPhzAHT=y z*NZB8t?CqS-*&m@>|c_9+swEX<9LO2(Cce+cptV}`p*6kt$h$sXtGR9c8X1RI=+Ym zT>ytk9zJYUI_Q71&EM%w{rnPG-n4e2KW#?_R-<$KXJ9Rr=69}YGuCuoPvqWw*z}@Y z=p;Q_+F)O3huOxSlIW)XdS8N3#uT--%RkE4zUUKhb{=R4LdO@p{=6c5mR}{zGwh^?c_X?6teV7#P@cKv~G%L;C@(=AFqEFdzEJ524i|SYuvwj3+mitk_=ftX;0@nNwCBJIoX|n z)%*2`@Lcildx1V{2$&uc?|CHKlneapx?gNqF+d-hG<#F`c!Kt}W1}nnE=_>7#$Hb> z?G>2C$ieC)%2F8Qi_rbFPcBpz+tfL|{bl3@*@d%NQXvh~ROY`8+%@m>%8YROW*yb2 zv*K8QyOm~~*Iu*OxW3*0l%t2Fl;6QoL)L`s*3&!D|BD}ZcY5)+*ktGn1`QY?o1(W@ zhRDv3g>Q6*u4qKZzPd98v^~#6qw3$@T-zNb3IorrRM~+J83qzA9zd?z5t&qThKE47 zXKAlAbni{~oZz0YX|_I|6sFfFwe9e6SRQz0CrDPoxc9yCr+=nWS&j_qWIPpF)f%i( zcBM!A-R?r^Qp}gi_HFRoM=8}f)Hu;VojK#&ALtjVP2BrR691E{d*i73)!*L`TPb$` zFAniZk@|cH3Th&f<_-zG67lD?aF?&RbTuB6;f?c9k z<55;a9JmkE)Hc~(mwrJG5p5Iowx%leji3L41+WNx_92VWsL;l+>5JWHHAEa~bQtDn zYK)OVGCpU1nBdk^DRNbdv?ShOnDL-)P*Ti)iJ=8?KmyBa!s`nfQv{RZ^$WovHi_Hr zkyd15WQ70c#IM49mkAd8eL4HBgyap{cH~^to<`!?uFW0Hh#J?#R-JGTKdjrJkz4HP z05FQ(vIn7^CfqF70Xd?3wX21jWOM}cQksyPK82Q>RUc}JZ5k0VL?#)E`VBC)Eh3fD zzZ?e8-=T?&5&i>;?;zh#i63iS&BL8g#>VWw@` zO)DAxsNwsAvJ3%}GshZ#|CQw6x=#jP%HJ6r@6D;z70H+k#YMf%R`I1nsralYaWXb| zWnnunY~2$UVP9e2f#WtNjrHUr`R(y2(b@JAMa(=N0h>*5m=8r zcrD(|rvi&6)G~xL>Kr9EN|JY*kH&3Ff}!IH9m=N2n=|%))2)U+WmK@QiMFhX=y<4E znpcrn6|to!r*>@WP{MQ1@=q{33HPfextT3Z8~=TU>7b_N?Ar+6+?%$io8bZgYVGAR zDVb%&W2VEDrB<)Q)gx>$+`TQhs40DJZ&Gj;6N05w4=2W=Og*=RqXU3Bf9ACX0{TV{ z7hN#*MbG`3UH*NYdftOxd6?)eyE{E8uo^8c+NH1MGH^#9Z^N=nGC&sotczyl5B=uB zZzWNLT&*b8N@e{u8Z?;TxBG`y`&iecdBE!+7Dg`3Pka_v1Q&drnKJBwY7rt$K=2@C z!n^J4>ECY5 zE~)s9U(#T)-BI0S)!fUjZP*UpR%J&4Zk~2MlQ&~T?Fhv(n)@Jd zb$N1mA-n!^F^W%b#vR^xuUCak&uw}IgtF~4;%QqSx&<)Ics)V-$J=XfkAuYbo07)v zTzGt3`#mVt0{v54Zm`D4St)&SVabtf^Xt2fZyl2Hrk98^8P-L^7_y(Xb5vCHNaN zftqH9Buo+6=Ud?WoirugrMH<4O_koJ?lGAP*+Z;`(!8Y^h|lP^?7^klja0%5Zvp8Y zmDYPh{$esD@SjDumh75i5Iz{R_>Y?3e=qc8>xAGM7#0$ET;#N%ul<7csdqI`qxM)w zg}WIl2<=RiAD9kGY2@vwNkd!S8vUrzMSKN-u>yvgLR5rv9cp7uWvu7(ji6}al$woS zT`53zb}g^JkRe=RD{6cyY~(7JHDh2DrEE1cD{6qAUD_0(-n?)o; zV4k2`H5vugC;}d9+k=js$9_npjeY3_?>B}_*|GM=_G{pG1jBhfum?E6@JtWzCHnu# zW^L)K+l?7}vt#MPFLt9yYBNreTNOUFu$-b*m}(GD-e#~nb&{zs>N>#r&FMJ(6m#qc z-gv2#4dNQ0LUgJ)7-j>bS+v?Eu(o@ema*24p*kTh7u@|9qy5op=ex$OcO$oZ6vPq8 zo6!+GldY4VzNSpG^)7f^BteaUo#UPAEVqq*ZH&%ei5;XHamaM_HfDR}(KC%pealr> z(DRKt(*)GgJp?VgE~c1 z>@&&CjEsc~%5{7~g~ZQ6;z+ctwHGcag%<-5x5%knU)}9&DkSI@P4=agZo79qShcSE zsA2bZzUx`d8FyQ*-1@%M&66%`17L7sTw*f_wK6=f21X;H?M-2H_Dap z$h%w90~-?_6P^{%r5Skw^s+r>_$!Cea~_K|-qc;hN$c<20Mj9STY2{?bCTE8Z|9dC zP+j{Co>oDl7{S&l^@y)`bCX4+%D=H+1W0j}T|qh#c?OE9NEs^sJ7@v~6 zZw?|bzuCKJI&s*BFui-UM|Y;xt-)(MsfR6zPtcjtxhZ`;>>N_QISo{J)wP&?1<{+g;~w@)4$JZ{w-Rb48PzizTJ zG>Ki=7F^gTqxdjpsi0dAdRi-c_+~TMPnSCWrCOZa)HpGvOW(fau;1?QXkzC^hCrAP zy}rxwVvK2!lpp8gJiTdvrYyT?#AL9&j4R!r-6I!#L3T(_>DW#}nsxMOM}IB5OgtM~ ztfNjEb+Dqq4QE>sahkZ>Oq3Tmz#f(^*VYsnQ<8RCwEv_nc680?3+0s{M1 z1iM)&Qv*4?OC_pQ<%+*M#_gDXGyqK?#}vqU8Ii6}#etY0M$XL*;hd}hrIB6lOK4~> z0Yl!;SO=m!iH)7)(~5}KqrN(3Q9SLrjG~_0o7K{mF`o_xB5D9m5BQH;D8P0?<|#IS<$0q2a4UHzZx%Mq7x{A zSM!B>9X`MKX8%+{pYOYXK@F;8SpS9^K8w*bVF9uUVC~ob_Xn`9T3JxqUCK>bMT%`V zq6Q!ZOSvuYI3YbY@`jke49eNA?ks6r?wKSjH{cID8m=eh3Ry>Ibdqp-k8R7-XKgc2 z{!>wa<{m2!xp72RX3wkpdCrZpkJ&LXgDo^Rw|`akieX?vHyIkD$61C8ZQ_z~D%A$u zTo%Cd3-^@h4$pOJJyU)=0GPU7(lQteDo~iw_zk9UAs?U_Eah5Ik0`GGO?VEm2;wv# zODr8}l5CE`kq}eC?Ma*2;YCS-(_dD|bIOV3h7O~x?MZBp+(u|!jy~ea+vVcd&=68Z z;+IA8bne^T^ft!jFr#w@mhl(IGJ~2Lgk7EzXtLk>G={dAILf2kk7S+Ju`HIjUIs@# zG|nWfR&+$Ut{rnBQdP;5w4Y<30Cw`q{ts<<#zxpbcR6F$H(X1Z)}34~$baL@&#o;m z(S5NWCKoAHoem`9@C?FM4W zczc`^w9H(b_WlKiw>H7ue~7}%K3vXAwg3UwQalXwBZ_TyPJO+Twl#&jwOrbwQRTf> z{DWvBTkMr5x;+5ibTn2Vuu$*wiaG6LZlCU7N=$M__F|Ktpxm>#d__YF$XN050)pR+ zwpKI_K8z(Ks#z`$@PcI78m}CygHd-M>9|XwGX0P{e%H@b4o(}+c!xP1>9SPp z{Jp$i8Ny~qJQG?9H$Vz0EWJn)QWdz&*@ko#j4h98f}2a0J6+S47>3Z6E3n$O%GWza z)&Pj;_+`(a8%eNiyHCc7kqlS31bpE!Bs*s-HX7c+&82i&{ZABkT!uDB0y4|l;@!nC z1O=C3eS(`(vh}*}5rsMdD_erN(&JdP)p^&v(5Nv<`lk7M2G;$gl({ZSy``PJs&h{5 zm$$A*u?#B|bW40NF=A8XFI{%KhlwqaLed-bY6GT}gc_%iF!@1in=bwk)+$@><7&cH z#a$;`wO#}k_?>%+UwU)k>Rsi*?QN4LU+x6ttD1kDm~uq#G~U>_edt4DEov;NbDFFI zMG&pJ;Y0oM3%Sa|V^>es^*niGc&7K|)z&n0#9QX>Lzc*Qg~Nt}_{YJV6*3=y7+CP@ zOWRoLkzs>oi)hIujtQPHY|rkdwx>XxF)v2%|d@t3R`!{8Dc#=iA2XEHRs*8Vbe;bHzmL4kAcPp+M-of!G zwP)utO=LG(X^T6;d(Bh4Gqd#`tZ0o~-p*;hU*2Zxo_^uwvJdF>`XZcy3@){grAuDA zAnQPkvLt9?GLdBwI6o1%0_K+o%b1V5L_1HgmtyT^9-^~RkhASK`jC|kz@mIzv24q! z-x~7QG%?V7DAP*jR#Qsy;QUE?|MJ9lwUej2q5wOXSxiD{ksx}T?(QbE`}4^XFLP@j zZSb|6&Gm~z*eL#C&`P$maSvY%o%MlL=n~=}VY)Ul^`9X@2L}u}@-Gx-a>KJ|jf5-T zBGy1)PqEGIxfawpoYt@>pu8LRxsyhV-M&r_6L^1RNF#*k4t`O}gcHli}y&IOpKw)#$-g@Ga?i55=F@w(Muc1j|LO9;Itt`D1Uw=CfL{nz1 zu2RK_k&mH}8;XjHSES~X>nkHVdb&OoIQS#@(`FvH5g|fEm%CfYu_E7ON$QXRGD}Q+ zKwvME_;uYk&JszvH2BTBMfoqY)v=Oxw+R1wfGHTY{bSaL*(+S=m0BK&AIKOM}s z6xY+z54(R|?dQp;zcR-)uI7*TME}+8bUp>1zkk{$IXFUl&aR(T0+~-o{U_WM{c!@K zX7`b}eKbx?Ow|^u*gDxwko*2Un9n$aA#AL3S}zapA-y1#2q_1gw83SrTKEODyW{mb zjUQP)6E_n~FU*|5&pe%F_iT$Yjt9Ho>BZ$Xr4pPhld0?de{$ipX+^oBiL)6mr}_T5 zv}{ext$hhic3}Lr(`Zt0<9Z=H&^cew{eN( zXC8BWl!F92_VB`aR!dcgR6g69Z~}PijODT)pMGD*a&?#M0SE@DGv|Ts0>?%Af+vm5 zr&Bmi;)+%q{Bkk)#0+wG7GjYx(V!7>;&74L|_9n&{m21@RRea0=;^LvPm`Nm}Ags&o8~~@PJ?$W^B{pQTm#??OJGb z3({Xn0Mvi)z93NLn-P#squ3yE<@xjOa6M0s58Y?6*lkyyYf4^I-62@Ag@~mWznI+A z_Fp~4>J`&r_B7>YKd{@R)c3WFhquljyim;AMzRt zmWdPvl;5;9I0Zf3kb z$p~XpPje&3{LIy?rQTS-UorU!RbtWYlA#F+@Uoq|GVDO6qPLRRY+<^oT8c+F0^E&H zRjbkS*R|OTeH%X#%4Wcq@x9d+Y9Qqni>CI-c`_Vkv7=zKm&tp&JgA1^T&&Oay^OP% zw^kvFgum2BCGz5vp{AWAR4n91%>HcUJ*rN`Lv)SKXqX}Rbk7_KmK)fP8WlJe_6!!f z*h4kr!m+K;+GQ_|>@i;j+$p7ra;uT7_q)#bTw^<(YkM8$l)d!^3wZ(+>^g9`q z=8qG!#eBz&ua`?-`zYo)h{ga?q{O3exvFs7L;Ein%(9kp*+~|#^bAw2UAv7Fr0HMe6SIKiR%CMgwWZVFjva#of;am z{wmv8SJubPi|2Y9$H{D0hUGiMHpd{CEeCLc6=Hund1u(N; zb(K#bi(&|lCh1%6Soq_U;)$9%S3ZIP1x{f9k?Q(zlA49Z@Kd2b{yZnwf)JG6xJx13 zY6)!TJ$-3taM|_2DeF}DnT@4ez1VG04msY$q}?^=fmMbFpr-F&E{rRJZg=#1OXd>Y zy+MTlz_vQwmpQxpJ@XLsl>yIYx~IV{+g>eI#uP_KNgM1H)IQig1mqq!$rLr0iF9?w zJ(9P5PXgXTl22|h#b5~zvjiNe*o6>oe+0Phf1R~X(DD8gLMx0*nsQEf@U-@ez2EO7 zO1)zq2Uk5NALU?wmSkJZQvz5>|C8J_KAWFealk&?BK_{8*%rN-FxN(-WeKPp-Asdo z+%9@|bmd)fgFSg>XXIZvdifv%4=Gx8ayH`&C=S#^b(g?#$recs!o?psWWPD3~P z;?A%cT-r#&4zLa0ME_y?+|+t+lg+T4^J2{BxQ7HTHl)9S)-mhBgWUr+E&c?jg5546 z$V8AqNVp$z&txd2zsgObnF9ebwsH(L5D1xMi*sUXipx*_+P!fvkG+R4z+KPn{=Qh+ zG{;p4*nOR8=kfD1K^63eir`JtiR$M{lQALfn9u;z4!U8E(0pGHMp6IX@miBn_No%m zH=p@Y)l>F-H;0n45jI_%lNK3O*T0!0V(OjdB!d6n2#c6rxXg@C^y}g8>_ob^*e05o zE^Io;f1w8ftePi}uU~-{{()D#h+T4zWhwm^Q`hz-z1UkQEaR)Y^OH{D<{rB^sW^A& zC3bgrzP)$UBJ7A^yPbjBel%?1h=GE8o;ywrGzsQR(>lB{7vZvl_l9uQlYmcThUJnK zkxQ`C8AkoAgy1olA0D-pL3|R+0$(%CYprfyH#z}fp-1`J!F}#MlwA;^fF$7W<@Zmx z4cX|C%9p(^aQQdTIh)agO_U$a8~4;O{vIH=N2*HZ5_boKiamfHg|ElQwsZ$u0VxolpaxM-o;r=ycL34eFi=*IU4Ni_Ldx;Tu29d9GBeEyFd-0s)K5({)c~ zp^-v&G^c(7sP7>BrF(+wBP@~bf|1B~{J6Wa!oWuWlI;4K#}obJZ*Sp2J8WG6{Mixs zoZ-EA1>eYu?3>IX`a={8)8A4$($7Mmm(>vz*loPyTck)fk0wsf2_Af{09Vtqt%WdU zWuILnJHU{z@{G*o31<$WY!Yq=fOM?oGg#Ny_;JFs2|*9LF?q>ac$ z@E6+j+7Yh8rncp0gQb!b3cgOW3=AN&thMeIvCpa9J0v?4nIQ)7_<8TB8;HwR}db zUs{Qt_Vul~?}lAbcgpt-2KGEgn{6Up`Nr~{?}B5p0||29SRz^3aR7-BLIFMhZ-lp4 zX!Nf<^?awrAfw{XqZz$L!gUlH3XwK`<7Wz2YZs&|^D~nS@5j4=v=UpcDQ5+{3|y1{4^YO=x)gW^o*vjkpW*8&b4H8mXFa8AaYr0VDHfMpHi z#8+ppK)e74ER%=s_DF!l`>Ad*trH}SyFuj{tF!mcC{wSxkJtNhqRQfzkWW>us!@68 zjTT9drql8zTCp`;?>b*_*T;j)#rf5^?UqQ6sv6|n-{LWXqf!=i8?T#NC_Q{I<7!2jL%&UlFu!kqE7-%W`B%Kr= z3VP@Qonxe70KrC7BYRrbDzOXg_63lUvqw0`{p8r65K?L_&6hIcXBTt_ipwXsQ7!N8 zG}0%Lq!ty&Q;Z;2Li3z`&-pBSRIP%aNrue;>e>{hY(^8cE*-vXz?we;%`zN1JIm@? z+ToW4`7iV++|GbRYXcXgmW7oVwK2;il0cb=ALK4l!#^=FfR%)6x6MMoWsbB?I73L= z>>ZE(&Dn#Bjz0-mzNm3F{{Om7Ydj>u83+pq>z&pE)^|<~TP9 zx*4~02{>v!>T>!UAw8ggchbA$ZNg^O$9gv(lpRCuj{qi~xD zFetESf}SDjNQ7m11NdDPf(hqo)c#c)^OM(mwURgjcRM-L3w#@KbN93XKTQ=tl zjQB}CJ-mluL)e3ZGIYt2p`LCj(|6pZ_rQJs7hw%+6l@=(Rn}65E6_&k4{= z>kAVP4xZk&cbB~d@+Y!PaGHiY4k%esRoVh~X~qgXAuwTvLKrm8zH;!1vKxH)+`ZLL z!SF!#W<0oME4l50I%ANL4uWR*|Jg|D2M&yAXA@Uh<2Lfy>Px z!%CkflS2t8!uj$!a7;9eD*^^R5>OH}9Lp});MeA;Qy#uY^<$IXta?TvpsvZ_G34N> zpgrnMjw_Q}!fh0dwmq0t_ym4J*2Z4uYi79me-L`Cf>DJVZL)To(g0CG@zT6_6C!2v zN$jQTEK2s-g}dNm9N3fA;}Y}*secv-iX5F~AeB%Rq%=0g>U&BFtLGfXK{Z%&h*pxg zYYt2R=)D0c+ZfGmHYCw(f>(CQBK6MhQ{e|A-$V}-@`3-9Y{<+P(%y>9m=!;h;pP}hbdc2KJpi*SJ*C&=S<4d|r#?a^%lU0mv){Du@e^$4ZCh1;|8am;sYLqDSI7`} zm{kIDd(R#I$ZBK8W=6>-AjQEB^Ht4u^&+68ZG~%F5WD3BA-R$bZ8io>Bh8`3jLySb z6Xo~we}e`2(l~$}j86aYGSh4iFWe+7up{@L{X5c+>WJy}{oyuXX`fvopZ!1~Ve>BP zO#j z^+y;`mw|8iC^rCaXxYX#^CL;NVh@uPhoDZA(RyOj=4~=7Us4F7Hi(*xhEeDS)lWR- z3uOM}M!&}rxJ9;YMH*E@`Er6a&ugMg!|i1;^kH52EdLSlw&L;DAT1Ir6+$~G4}Re* z|5$xjUs=l)N!$ACH#H`_c%yNwW=Go1V+v7gm)F>C%oqg35_RItL^<=JyJc;%4y&)` zw=WoaB1J-i`tLHFq8*#r>VkqW`}fOg7a@F&>`-ILZe471aoOF%I(Bci^GgY4&2t-f z-34Lk(S$wbbh=ry*JPL&_c7gv867j%oQ)_oX>5aMNXM;QEt_ZwzqB{^bBeF=_D_26LJWzo-1H0Y1y0|rsDJSTY6H=+UU(@yHfbqV6V&c`z;RD+ z@lt-Pm{9L~>&)3Yl*)ChJLkb1>rd&b=LcyJSJWOqlnEli^v*JiM?xIwnlA=Du3cLk z=WX5Uo>!P&_&`>2PUPU>3CV1iOA&KaD`%D2rf$-xU$M-7nG2_T`s(fqa6OL29g+Smsu1x=^{`tI79$ivt?61Zl@>(& zpYnn(*IQ-hHEp&1zya+O3cho8LBdw-(`^POT< zugi1WdDzKDBGO^iR+;lLDOX09IxXiKx4qTevTp&=(->@wMYCg<8_xLDkX(%wmuM^1 z+Wj(#5-zUkX=;>jRZN%lcKQ@dS&ugx0!P07f%|d2$a~c6^PgKRG4&7_RDh zV~XI}9aV{IQmuS(#7*~CVlIG2LfsXTedMvGH__BA*Xs88Z5jTazOXJ(l z?zkgw&h94QpE*rWgGQveHkH<@Q3FI+6S8>)!{_wh^}&W^`7WH+MKhM4+~HeMn9$_B zhgug_AO4xaw3DSqS&4eNMjkkH6}xg?-fp9{S&}5pikGj-t{_6e2q(2K>50<5Ctmi9 z&{lU|Xjj(CKK2^&dYchr+xjE6tLyifyG9Ncu!|`9AG3&|9@87|$)pztLz-tT%HQKq z??K@9qK8=rrDYgBWnwkj;+?j8;Irl_eZDOsu586(agll&0bBYrs5R?XRICiN@swV+ zyN=-G6B(hhtL(Ay?Jx}sN^bi!_%Xa#uQ(-&YV{en{TG?pmzLl^SK7O-`=XJr&xD-= zB#ruCs<_Y~>nvU6@lE%s$6@H3xIT@x2sd~(FF2`M%0K2_5a&&Uo%`y%13?t?PCA^p zh?Sno!o?R}Htq8CM0*@Ib{0Lskk=+L^T#Shum7Gi76+PofrtvYEw9Go$}RS}gaw3y$2uaxv(DuC=$R%J#u}=^!-1pa-qTfQ80PP^%Ty%c-FvZ zJ4bI+&2`aDa4Apz;N>4kBVXqv;F)2~v8d97kiRT+c5deobKy2Ymet`o=o z&nx%2-`_6_f4u~5(LqPgqtthFHJcaBC&?a^sI+pojpJgY95 zc)&$8%MnrRh0f!?j6M&@u-5wRsDzFD!G&&xh+3=i?I1S@A#6#YIw#d z9nu-YQ#ZF!o^5ipQLO)v4ThhnfdY-#t`gA0phglrT2;X(A;G?j7%_kz*#cZ>b3ZUL zugqz*V+~!PI8A9xxdn9VdlkoyY+_a6HUkw_YB40CqaBTw{OF#nf$axs?5YVJ@;vbI z=J4_Wh}cU|tmP9uFspI;UCb0IEzjgIMoPM?Fp&8l(9+TiqpFI`(_-YBtu>>p^<5Q#4TFVYFpU!Lmab3 zHBTanwWDhSy@0iawga7V*WmyAvV6bhlUG?A`Qb!3EM$?GVKpc6SJ5+Zj*Iq`&Mkge zWdzlkW8dIP-j_?f!W8TSZ@qOsWY@Z6kDXsG6rGefp$mong(k}*Ur;<(=3kHQ;Vyz9 z@jygSOOYWc!qR2CU(%R?D;wu6C*#IuC$%O4HedOEDUd(+ez&FMtGbWv`FQ_)$2|(1 z6IGU_#+AecjYKMMUiRD&=;}HgKdHDGF4OJ|V<;b5)qT8XuUm<1q(NP{l;DfD42FEo zDuF_O*+uFl2UG>$wmDcaXntnGkzFEZ_N8Bz-=(*vVpyv4bYd^-w4G7c~{G`+K2cr-V+Dyw!wp<217sXoTZ^jClIP^4YXl+allcN}+MRVMuR!l}Xxlnmr__O7*zvSsFTj+%XuP&~GBy+Z*gs*ZA2n?2~3& zb@&EHhC(&F77b+EuDh~YM0(UAR?)`ke(cRJgMVGc^_o+^i&Q*47yt%c!~Q!C0!G%2jK~y>((cJnR&SBdG{5pLDsymHz;e#OY3FSTW`p+ z?N}n6nA77-x$-B&gzKKAEKFdf?$DTj7CV;Zf%asur%myp&rxp17)3SeIIYUZyD(Nl zDr02>{JzHHa$(s#vYfKltap}J%%9SSiQphA>_D8k`znrzq5)0l{=GnuVOPxvjNKNH zDtP@nn(U1rmZA<fl*RP2k@2F{8Z?gLy64u4I9WT$pJ5AaFeUh7mp*?DD(NtPF? z@@!N(stZ5LI`+(%xBMu>FO_5$ei{cdf#W2`*<^JuAUJu*a#rp)&g8YgDyO>k69@m#Uc-N|B+EEd z$ME5`0ct7@S{^rb4;(yXu)XQ^2AvBG&WRTQvSeNNw3y`{AUS?bWwso~Hp!=eizChq zT|5`FJg9gtWg=X)_)u{Z!;Zc23ny%uF)d>Se;eO#F5B_Yt_$yiJZ&Tr@s>gX5;j*vQPb`|(@P2JsQ`BjSudJ2U zq2p)9EQ)pWdjbO~W2F)g7BM)}lb+^&+}oN}{(hlnK+Rz{%!Z>pDZjoflf47o^;Iws zK3Q9IK82BbIO@jv&X0(Q7s-&U2*GTs&8oV|G7Qg^yDhf5f*qUzM;wui#RAeYcO>j> z3ieU<3pMICH2Yq#)&D!{1k*TB-Pu*;h5Efr(~0S{vb{OjEsiLWXezH*+jvh#_G2ycHz1{e<|hnvak2#UK#2aMd?FlPDNVR zM+2dq6{)jga9{CRVt(ZxFKMnEJpK=MUY0Po*$9>*LPKi5(_70XfHqq{X_}pFVMG`x zaev+q&#><1@iK=+KT)*DdAyaY4W5N-cG)dlqd*G|+`C>iJXEC2Z;i`BLpv?=i2E1T z*@RoJK2UQ#Yn@vBVa>7#2{j9!4*^`B$t|aJ#5&73Rg}v)d8EtKcXQ7au8gaSvFT8D zVxCA>bgFc%7~Q>aVB@Z#j(dw2eH!^(JaA%B?YNkRVu^`Z*G1wS6!}DfI~E|MpgZ7t zoUN{OEq-z9FMB%{PG5I^w!1xv)7v}NI=%JOvEtn6^M!3+L5SzL;deP3b|_CVQl4f= z^?r0?l|wb$McZpS8qCIS!hs-b-LmyvA~(o)`*t(YlV%~uG+$hIi%Unyzoeu9o0=IpLIa{F*5Ocq78vdGC0+WY9{xjwDP->ObR@#~Gz^gbRGPuM7*&z@qrXkrLMd_kJiHf0=ISU5>aS1khqjLK! zg*R=A2Sx~WdRxmX2YEf%V<(gIqSGSxj>`3Ide+NqPVy-qEoCwYd{(^agD{CRS?1w|v{ZF0>dv+*;P@{LA3)=FP-*WRjoV`Z&3UBYB`}-aaL`a_V z@20hjOgx{@1nTCGT4=y*{Qlc`g{aYn-ZvHFwWqS8Bx)1UKSO$ zxN;Pgm*-7uHdDPpxzL1%?p>i=2n?2r$}%)>5il%M(WXW%zr3E7PA98Ke|F~4zYd~b z3T*mEo`371C+6gfR>@e#e^dus16nh9ta@__K@7sZ+LS4^X*rx{P_4yhhPq5SKQH$j zCPBBXON>HJZs}!No_*T~dI3)5B12uqksgux-dw7onG;24UHt;t+w856ogckU>oS*E z(09hz-?Q?~)+Z*JiL@fpA(V=JO^fXUKIte}e}B=(aT$Uv(9k1!w^A)h!eM?}ao5$V z$~*ec7YMgW7XfnhL*wN^=G%yo4lCG#IXKDd|!Ut-0^;%84Ev;+z2#Y|r2Utc+%B5Nfe2v8He0^CYAB=bXY==XN()2RG)h zi=ZLd0Q$6*gVV@3LPsCCO0`OAk}%EQ{M*UCXxR`#Jk0SFZ%Ue`XB1KLZg#{9*HHW? znya`JyA0ooQ0xzyU_maVgG|cmw|xWfD9C21Vv@p>ou^LX^r9`IOUeI&)*KcIe%{*>=`f(Hj{$WmP(Rf zJMsXAFm%U-FR8rkf*#EZ%sw2rl;L~j0{(IdK5qR92B#6wV(TQPfpa_jVL_D#!}HeQ zp~JR$H^FyQ-)(F)a9YIEjmX^y3vJz$Zo>`TGHZsbJ>cDVYcceKKZVq)?c_2c`G(jm7#;#W=6n$>Pzox{m&oaV*@Pv;G$$6cvEp^Zbnm09A5i<;8Js; zI=IOv{-$CU{(&Pdk(zt+IxfbKfSfF;AecfHWyd~~EEfQ=B>nj4(A(oTx)suZ{U{ZL+$Sj_((6?z+ln zRtd10fBXQce}iRMHKJE(6rTgfXr9)iMi(SBM*4mmGVgqrw3GbTySdi&)a%;x-241E zgrA$Z!eC(TB^yN5t4BkSth6sUAoEweOHUB+9feq}14{8HdQlo2e;m$qrWqOSBGce? zO6D9ojNm~+gA-Os<9%Ttk^AFogvGY!u8t4OUL<~#6Mi#W>yCx+#!=yvIZ9Bq@Ga%G z)asr4%tIMzP^KRx*}rQrr*|yEI~b(zm1Jj*16W1TI;z`*leog zB_I+eCvD3j(91!6OqsHetO>p7YjX+3&)VqcJ4)Ck6MPJbAE#@|11>{_Vc_`gf-GS+ z)n@AW9a_C(7__XdQ*J+xe|39poOVm$hAMN95r*?igWi+OH%uFh?HYc!B5TB-(Sb`sNnet_+&Lmzqf1$F_2*-_LbaZX61E){t2B>= z#CrEdqwMA|=z;X$FxrL5vd`o1xrPSY+p_X~2)0?30uKO7QYMKT5CdR&cP=cCYv-^_ zMN2|n1-VFwiN=J*6!U~hP}m4)<}Y*G;=B3L9W@gDu3G}#JKTOm+x)58)vof(7mzlT zfcrOZ+`8{5tf3APeTbmh3gWm!AZn-@7LtxS9Qhqyikt060zAwV0a{Fa?qyoZ^sw#A z*BdC^EzH~&WDE*Q!n7+SD#3=i|wa922Z_Aoj<(Ig*! zE0*#g{#bOUjr58X>_*3drvSdE2n2z|l{W<0nf3r?4Hi^kcXYT-u(JT;RAmT|Ivf1U zTBIBdjlS1|eT3meog~5*?@M}fbWX=5%57j_S3K_B{U;Np!T8=!MQj}Mj+BD~n)n(P z=8b6Yo=9Pdzqh!3J!HD<#%Cx?;9_#p=STsfT{=Bti{{UykQJ$S&z|@!94vEY&%%0N zaHOvFdwDR)Ig@)U|Cz|n5iXmzz1-C6zx&O0vS;q8NBvQDEfl#p9X`$#RXm!)f^5DR zOjm324%%6|A8CM zEJq%zo!BM6jc>J z{8*#=ZO1=*&Avh%YV(efuYHiw@%ke zlk|el9T{*ayPmlgf&c1&)KC(A_(COtEiSPJ0N>uX0mM@pv^Dp$tWpjDTpDzID1RZG zj^VeFb+A~qKXmSej5!Z3#?CQJ_g)|QaQR~VVNL5^xah_5S%^X3@H&sc5O3cz53?CX zbd}SqVPA@gzzwa&Hx`uMDx01C+emc%-jp<{cM-E57mR@N5Q;mP+&OKYSRXGp9OHor zS|tuU@>;;wm|*hUTye@*TKQe0Ibrgs!F@2*<+#7t@l0ySURo<3%_~!g6x`-*kFA?( z(bV+^!=V~dCj38p0xq|(Q=vCs5;g~o;8I%EUOt1l#2)1Sz4nsfH3wjK$ zxNpLCqZj8vBowQxwxaRKwy6`Wp)H$f?K@vv*nX~`$4h#AS|P;bp5MSNZ?N-7?4PVA zJ#k)<509WYj!&;l1>SPUtC#9kPP0*tOkadMgkJ3N#+xH$(YEwU&5>jy7k&Pfr?=+E zPnujDsm)ai^x)t+MZGTn+o948B#50D$MA{~)ADqQm^!66)?4ky{(iwq7cw2@^d>_5 zTdK_bCPr^}rwWC0nbYu!3GO4~@)Wux`m+c|Z>B`+WH{?ziwL-0biGthmi|`9V>xWX zY?*kDCG1LqS`hJbs?m_1@hL3K9!A11#5^QnV2dl-2X~WC$C6pIV0d*NK04t``OG=sws3OvIzh#W6>vKVNjPWw~7{fH&W%42zC(H1gRp}ePaWeC=dOo=fg za?P*BbDy#$rMY{Mb=J+bss+8ddRBGqFzLqGbdKf$I!`R*xCh}km;l#WEWNg*^-6^5rvMNc0TRM0)FbJowaF*LKK;)-2^?QYml0P!b&7SSn4?s3dJYN z<7dANHk`lOQoIIhNaQD1m}PT_v4IGgD$Hv8 zSGvN>JeIAM`}<_Aq3AL9kLnbt{2|0;BUh(b-kl}A=GSTed5Wl~f9|cbGa22M8J5sb zA_A>X`L}QH+Yy+gR|z&6BV@LAdn|9XvJObdPg!-PpbFt_!ZMQ7_b!uD-k-8=4h~2k zAPa#V%-sU)I?f$4ayV(&K_8sHfJ?J}3M6pG`s+|?_j#!a51pOi{f`@q00riDuu@^w z`SQx~mzj%=Jwh%lhc+M5gP{$B4d=mY7Y$$kOJ{<2#sCWPo7FBh3JjT! z=coyfu1Xor?Yke?+M_>JwXt-StpR#!CVhFD0JnK_WAePg^s&#LoS+h{N>pQpshr#<-{F#$B*SAD)@#VBf90;m(mVY#26z(~BY_;2a*ReOhU<8$Gj zL3B0@d!N*Cq*l;&2lk`1L~RqDn^7G^%(VrjLFcSsCBq-PG2f?tlE50cj;_3D5v!4^ zQpIcXAvk~atQv%NHLHQnpq~<7fGqGN*&NlYwdJlf2-RyAFMk==aqfnM&2J#8xfbIG zQhAHE?vxvsu4T0?+VQ`CD$1{U>S2<76N5N;-PNwp$wW!lylt7YV7(Cot=8e6^2S-Lr71Z36i;|d0&q&B<2-hMnh7%V(JUHn ztriYWP`_7fKu&MTcy~#W3{zy>?2K(yCmc3Y z1#9JZ-wdA8m{H8lhnL?7gO5Tb-{k>)wI0M`JM&6-zzGTYGEdpIC+T}e{hgDKW(!|< z+tL4p?!1EzQTlrk)no+l&Q+ttbDRNu;Cpr5j`j;VIZHM z^*z8StdAAVgb+;RA@Qx`n(=YSC)G0?-7_gC03nIpD|a`9(U8zwgs8oP7? zBf#={0ZRQ6MU~|3bkvYh6e)|v-Xp+H6ibL|)xBQ;%KPw?&MkB7)5)A{_vN&@&&Rv#QRx_rBv&$;R@mXU_8jXj9=i34!T&*3Ajtx7=W%1~ zaUi471IpoDLKXh!#Xf6p=TGSjY`I#EzRNK4Ur4b2TUzmBy%0DuG@$q}3<_&W2hExR~XMYd+f-?tFlD0EPb*P=^){JCq${fSjvO&WX2ye;M~Y)P7I& zniM|N=^+eJr_Jtmv&`Xm1%E%16f}cU=r)dJUij$DMy0_Ayqws7@N)mI+yV&QjUJwK z2wJBm{{f(1Ds&}w7u4fyYP!Kj1z6t)!;7~>GeiA(Ursu+Bz*cFbY&WYJb`PJYgIJ9 z{I~n^ofIM~x>m&~9M30xZfaZQXkmd`Jnr=p10IqXZ_|Swvx1Qd`!ovSdE6EXnQGzW za{^ByB-=SR7dbi(0bgPw)#69x$8oUE@itq%(Ek(O6NN{8GLFX}+eY(C0^-j=l0kv8 z8>wrTRkgs{U@D5^#9%-Fi4h|rM;q|0mebZ}*;|I9kuUB$IiICp zSu}Z~E1^32)HJ)=U)?kU{*vNh{HgJO$yEHA-+)cj%hkQ`xZq1h6{HJX<2 zyr<$9co0dz2Jizd8T!ckOIrYk*eMM@>UByDxVC?%ZDCeUO2I^)b7t}5i--+a(cQ+u z2@PFmjcUGeL`MOX|CHG3`%sVMLO;-!!2>4CJ{Q0(qVh{R^o_FnCNkx2nl#NrMP|y- zQ;`ZKS<;j08~D*L6x5UHqWIeuNN=lras+48U{U=M*pw~a3oOBzxWr4i3-41Uy$>H` z1G@mgF4*Ru>p+&g@JO&01niE{tWN}-Jj_!RM{u5h$ajeECheY5DwzppM)gDCb8JZ3u*ov*x)=ODvSf5I z`pl8d>^(3gtrJreM>{F*O+8ZytrHj!E**pv9w^4sPJQ%$$;>*nGC$=;X3v=2-<`tyh zWHGX{N`TqgltwHxyZS+j&PqWn+N8x1$SjMn(lu=smtLZ0BTC^5ZjZ|6{L8(jMcSmD z0D;lUx}n5=_3dq*2n0B1@%Q)ntF-z~a@F(B1hDGyW!~++@HLW)E_wFE4Pfs#uH`*N zGah1atEy(rx_)aa(U({mfL{A-ToIzQ?ZqL#$P!odT1JBG)^|~TfNBF*1n`<4DVKByndU79*U)^MxgCV@E((;ot! z4@#WD3oS1D?|G3*C>+@=0c>iF{x{B-DO*s@&>eh0pmFWYl(a6r0@I9tVv?EV9w8`h^Pgua}scwudw?nMls-=M8Py`h`czX5m49l~ zwFVJi08J!%9S_s?wId;VjqMog6z)GAXAQ`sI+TdF$}HEZA6lmG*A$4Vj|ii%-?QNO zl$>4p1BcF0dSN-C)R1)gLh^GnrHr^^CQV_FPZ6>j{mdBxb-h|+tc4)rXS`UwuSu23w*+UVvCae0r=CM&{_O28zr;Ln5#)r8V%3nV2} z>&KNQM>_cYl2Q2+YU7gY%2p=PIQw&shY=Z*omTTbXh?^9fg9fFN?@=%^gxBX0X| zArQ%*&>celd>xjG%xi*#ZZ;z>#3Rllk<{e55!H4|9qfB41e_4iQ_d!V5yOu2*79qB zKkEI#{ucorr3ceHKwmZmaT6iG2W$wnV!I`*H*p_3?F42o;ZA`0X> zpYD#;daAh?o4&bnpB`l=h)}7yFagauy}!rcj{(G?cAbKG%4;$GPvydWs+(ONpwcQR zj)}w){8P|DG+jF1!0gu=0~;?sC_gCpu@@SJ^fpjDLp#Ad;8nkFX57>X?X@20ogCPP zw-B@h>Ymnzy?F-Q@HMbBLlqIs#m_K+8p35Uztp%3cX$$a?8u&jA5Ya1!@$0AM1sC^ zaNJu;`7XVDv{W`!HxpP`kfucLA1Uy2*ar~0TVM~$vM;)C;=w3ozmw=hI${Q;-&SPV z&1Q4j1>!0jao!&9b<-|SINx8QqT%#jeLyE_=`^4D>IfVrXH%kvQa>(-f@PrnRAbF| z0LS}7vlYNOR~qb@8m&(tbP5Y#9<<{#Vy|64`e^qH?@!p=*xGprN_{P-g28qHjzJ{f zl!yIY9)i5&&{qTT32_wAA`tzDMu|ZNg)BhMPBIFM5&2V$11wAtoQN}0jX3jH>{PtZ z2#$D1#ds_@`;G#fAQPP-n(Q59BX~*-szZ3U!8Xre<`a@`*mX1%4)9i&oa09vVcixK z@Q|BwY08XGl1kG#NnnCuV_{~4u&fGnjQa|!=IRhUPRk*`u!7*9n?wI&!tGjmzW1BHWgMAlqlza z4x}}>7(|ieTu&<6Qkr;)C(G(zXc(ORCc{aAb(-lyLH7aH)Qw)l$ZEr0kWrjzsBmG? z&jp?hWJdDKe-uF%ft`4ks(O?4DOtyXCaa*I&+{7IRGqcv??DdFo zMwZPDobyf2c71Hw0eOYwh}lJ=qmS8n73Yg!nXUz6MN?7bDO)hxPj1 zZ%b5>offwFO6;C30-}S=-)tZ0~+^ICI65{AR8##bCPEw5F!jB9)guLI~C^H4!gjx z1DjTrsUr9(Dyw}(H=LS$4x1}uICNG%kUw}tFDM)P#R4{xh%-dj6S}LzD%*K*m7)Bv zpMzp?ZZr|s4Tow%QxsjOfOCzrtWhrwonQ(EF=XFU*d1X+e|0(Rgs44Ql7eFrsd32P z+^h3CFb$?kBu=_V$MhM^M6fdD#r=s~#loD98njE!Wrzg{LKO`Qp?`XvtROI3;_4^l z;`}uYzmJPiRJ+sxa3)kY<-l3=!aQEa3%9?eE07=WL0V{4uisN>>PMW!bSv&X=NTX| zC%du(-M?w8dE_O9I9$R6??P#7n4d4|DMCsrF4s=9gza!ehXt63hHe1kZW{Xp@r#!2 znd7@9oIZHKUEh&LgL*zq8~l5Z>pkN8#~ou#at1vQ*K{B~mI${|%6|KatA0BUT#0OC zKfiXtr68ZTzsU<0tqmT4Vaaz8EC+xy`B+m_8Jh4`y#So@#Bzf^kPvN-zkf-Lt>Uuy zcKvSOnOdC8xAw{2Lor|ISKZ|CGc^(8abgT{Q`n9*SKwkck(k7$&=wQb}`pVugc#EvPg z_$Kc!>#@sF(FDBtrKamI?F2IR3$?P*kKhHIW@Sg+a@&y{BtyS=02lb}@RT-W|IT+@ z4^aYPtF2(`Y$+r92Bsv~C4SO`oD4YT4xWY2Y1Y}Y^TOfMY1d$8zd{Twq~%BR#3iQq zY=Fj5;ytg>x-9!%kES|kjlr+3*5m|ZqdyTk5Eg}~Ubi*yMbI_B?w=jb5qZ4~M6B{TN(oYAg*Plg|SXXz=dQPBc)<1^(9}CtV5{zQQ_@@X1!oT$dQ0db4 zMshHi)cpFql$s0**F(g}g`q1oKATM}OcLrLjp7B%E*70C2ExbJ55fPuEovoZqLipG zZ*Sj&A#)p1HGGL(H6ART%%twLdG-3Q?)dS*vxNIZpyzn}pEAzBF5Qz0*8SJqgUSDP z;UEbT--QaahGOk|&C<%X_zjfXe?|4>9=e3x8e*nmX#@&_dy&%u z`JKdMnD9w6pe$$v`|rF+Iyn`86@Lnft^CV9p$nKQYYYXhiDb3mHq>bC+w-8};~D9I zXd1cGv3UDQJuQzm3y9SK;5BUp)ID*g1m#JYi4)*435FQ{Sc7$ns=)dI{J$;r2Ec zn20U31tEj58Q5pN-|mNnMNIRMqpr>~W3wIlK?U|?heY~@_=B_@s3gNTo_xwP7?J>R zuOu1oLZV-~#Fw3mPtkvhU6H~<<ijMGRj!TZMr6Z1(aS)Uil1b6y@baOX;dqUh`PE$nTeXdHNzO(WzOq8g}u z`zjlALhjZTAh?znC0TUxt0-v~s(oaA9h*{k9IEC{9k#1&2w9hBwexN2+nk^u@T?&o zC!_2K>b_4fAWERTD~jKK4%c6(KpN(fjmA{fI7|d|7S9I2{KB;^y-}!zZf=4COVQ3h zhWQ_FJw52CBH2&dhTP=O(wX>P zqiATXetx11Bzr;5hP--Z)Mkp5e%d*L`TzPCc3nvhbz=(jX^QIO_mYQzfFkr>!aXxn z`~VHO|G7DI6{H`lI^qS`>lCR+ z5q0tB3roHJ;oHFW>g1KLX8RF!h(An?`-I;QKm8gM!bbnA6{PS5{W{=gRko9>IY4+o=O-qvuhN$ z9IdJBm03V4@cFK1+5wc$8<)iM|Zj4yKb)z^cSMH14KZJfgbgjU&l~SjO z;iE~X<5M6Urc|H%j)JUWU>9y{hNx^C`9CotK&`q02>)2GSv_iF0+CX3vjse(A$L3pN`bRQ02Sw%=MV253<8_vrsU@x=3_j3^q{xODo_g@xT?CY z9(NA<5*nQa=jJ@&W9~|VKLZT|!0&9p5RW*?#6^S2-?T={01nUt^9FxaTX zhk$Sf-RY!O8jFV1$5wIJv;6+M^bDRHAV12F!^bt=|F07P+g+c`C|ra>2ap=YRJ1kh zc@;x@6cO_)YjjD%Rfo{E`C&=)B`Qph5XNn~c1cYDH=MDv?s@sR_XQ~b9>tyChQqsD z+IK9shNSZhP&RZ}1e8XzW)KwhS4WI=LN(Fo|06uzSX<7kUGO^Vc3rI{A*@ZkvY)>I z9n%x5gl5>Q(?ET`O$`RNY)pK#qyx*h7iHgx5v^4-!M?w3PYB|?)AX$8KOUd|` z4t-}V#&$?F+r}#pqoP@^6Ji7bPM@Li*W1q|9tX1V_}G=WC*#P3fEV__wbK0CmMN6F zSD_Yld@uD~>~*ti4|tht9m*|Ozh8D;e}acF+jKK9#PZ+f!vsvjpGR$iBQb^|^_)W{+}7z6!4*JzUfn{B0NB^0VIi?IGMWj8 zH990%(Ark?@`I_%qQ#vuxSS!YHX{~y1liACHwl5Ogut$X;c@wS87XnpR6nL5>iN-4 z_+3Hr?~xw%)bHS0G?W+?fP+sGY4w!+1jfyA^zgtC>>0{l6ewFDZqUx4*tjdRRs@<= ziz4q>U!(x&1tvNFprgHO<--%YdSr<;tM4bzuV(P!f4>P(hyufVlm_n3NH~MA{Qg&# zuu|r@kto`Am!;u>K}d3?dt`U77vY|*g%!wF0G;*02|-r2tkaX}D~J(z)ioo7XnB}~ z^yOBVtDpg~blgi{^laqjfpO`)_|)%YrmFV1@sELYAWaA8qcH%u%G5a1VJ{ zG2aM*NZn%r9UB94oP7BSMZSYsH?tvNCBk?+1T50YtMs=+e8;qZ8)9h+^KI?Cktt(G zTkj2}K$8@*&ko+T$Z+%|y{k~;Rh_OqaJ|;K?YZ$pu?kP1-WDvVOUG~kIpjL?V<6^g z!jRhS;Lj>5MyHg+V6QIg=?MzcHZHT3>xdN50!^FwF_S)UA;+lBk1zU8AxQ%6+gema zIB`woGT*}%QKD}LwusppD9ByJnX;AY{VOqg4kA&JB>^Z z?m(2B(rW#Fz0Uz)&yN81*Ir-&S^U7rI`wPtEG#)?3y`F8K+oCx*fS~0&;WT8OM)M1 z`U|(9YV<8~BEC(#-Q>~_&DD+kO zIj;u3s2=XDF($z-b$(`^vR|xkPkj&}MzXg~srvAMjAGW^lc4V4Y`tEUl1jqTMs<>) zN#J%kYVuh+gmm0*jm@1D9!}>D;dp;A5rf8&Zudbo=@4wvki2oRYaD^^?&6K2%iLCt zE1kb}K83^i7(%LLrz8>-ggtlHedlE%rhlg|e>pzW=rlE>e#RUWyus&Yay4Is&)g2* zJE2sCmW!2>F|wlcMH7}T>|MexfDoK_f-W;c{I2!zq^!U?f9F$C^^<-=L6ZyZw%qIb zLlNGyA2Pxx3mF@lukVhkdSzbS?f*Ez>}}6GF?e$_z5p4ciXmr`=(#TaV0)!wV+brK zn=KU0Q>8B-rH)yI|C}I1xOzRaY3Ohx-#ggkbt$aEdL5PwCbvArq?D~M9q7?4uLZGS z*OO3$Lng+ursodmF4H_xvoYKTeu>uX?!`4|=8jJRU*NirE+A`ovz^^mKx)1ZjahRz zP4XLpC8-w5>`kBL^rp5I@ut;l;U+g~Bk7fLkvUhQ+X7R}f$TzAClTR>nY1L-C?}Iq z9T5&atXU)j?VomG)K7oaL z;`KwoT*TVe26A+YbD-(lW-;p4k(fqjvAp8lh7d*FP(dIL%GFVWiluVzJN7>!~ZO?aUpFpt3 zhk8BA;lED+?E!ee`^P1Q)C2IOuCeFQ#+P)UZqGhI7gXS3D3&VsZu8acJM7#MOKr-8 zDlPn=9_G>wcJ9O)ORrs`4?48ivgZmFl0*yUC8eJ=UxUK9qHwbSZrRC~BKv3H%P+wdJd_f1XJe;h43k+qfro7{cQTim9 z(ApHHBC(q&g8>aR!|M1}bwCAU5;>p%$LnNdP)-`Yqu|T0SzVWcFX#Z=PI~#uJ}6Lh z>umkD83Z*ly~-<=3UcP}krK--dL?BtKUne6cNA8Vv4crJIXGAlEeWSI0b>+TEC+Hmz&iJp1tZTJs@; zob=gp;)g~n`DKN1r%kxq?)K#^o_*M_nY;X6Ul01ij_+oCnI|XC$H4FCER@dlzdoOq z)_s`pJ_h@ML1i(}nYF|z?(%O$j&b$i^rGIp%3WVOA}hJAARhh>O;#`d+Csu-0fy~3 zr0c15;T8r&Q>^(4)aj{2n8;{V(sBokxG;06(ed1vR)_D;zA>h)~X=t9<6gpwna7Ix+ z3uc2Vr@~s81gzA$m)ejC3n0Yz)U%eQm~FAt>*ic83zJPw*apTXX;6{;6dXc4?YQYs z{1vdRFc-=xvC|!m*qIuD19P{Tebx6Hg)ZTnfD@G7tswbsqV(72dAC)Nt&(Tk^1&Tj zVFxTTSliyf+Vm){WuV&6UY>sBdBA8_b3Min1o^L52M|RLXRI@b=}p@NGe|BeBzSrT ziP3-wnCk<4KSG@(D?-D^Fi{3=uc_(HWTOy<9Pcg^fms_%%as8Uj##MuD6(|5j~+b_x~5E^5M?@aYrp0^wvi0uP{om1ON|Dr5$+YAO%W+kM+m-kB@YLKB8#oxl%&dGSb<(kDbKXq$Ml2N0ofAYzlHFIx=*<_h2d}031Ql+5FC+N4J?d+Ik=x9gYno< zn^ISH1z4Cl;yy|NK`3xALEQ*67niDex08M5_1%G@jDpr^&h`)QF7;$f`?b&_cO0^r z!y?T6o?aUOlMPN~QNN}WZH3`ap+VFE6gN`&kVQFrusP`XY13JA7XN492%+!b0Ni7! ziF%Yk;TF|886-*TW2T#xppDh}J=yrSWV)Nc<|+zmRGJ_8FO3BcJ@I4i znC}HkUv&mGBXE7sAD+6)t6QR&m%uT%%CA$z&MCRPFi<@8LMJMWT*!E63$c!BQ$I(` zkK!+KM22@Aaz9kLq(+u_Qvnx%U<*#aW>NkeW<-o51|5?-1sq3!SF|#KeFkvv*$w#F zxEI0n;njg!K?N=bh`_Ghtzuxfg9mWnnsQ>qh!`2!v0aM_7V-Cw@2P3r_$qyv{=SMU`-a#3g3!Ug)Z%1T{*B4#2)KlKDCcN8Je&dl|sKU0hns(7%}a`6gsx69mig-F*hI`euuS> z%iD&pP}Wfu6VL7M>44-g2ce1GgXy+bRAsiwk|nnr6QR&y@+w%*ThJLe zJq8~4TwyNrOd2DYE%ZJV+AAeun4|MuLAzo5s_`q>1bjIBIzhcYk-H0x8ASFOdLR}oa^c7- z*AB4Q>;Io@ZgCVW>fGLtw8*$KFSD-gVesVX<}*{|HC;ID&NP(Gu{ZmO&)O z=3f#5H@rpm`FrJjG$sdF8Exccu?Xsh$G5Q~+nkU|lJ2acsTbbDxHHrZN6AA}1KBdk=1| zdAyw#6`7HOI?YgdWQ@pLAS=~AFfKBg49P3_8y11FiSuV+slCgp^#TEC*G=`eNk4yXad zWL!e*7Y%p$AGr2IJDBXK0+Q2b`X0hT-4LA;b{3G-kTXZ8X!mPizbc_usN7-=X691@@1p8m$ zM-y`03c1ctDV5p$>=0x0gZILpJlzl6J=91lx?RL?zJU2j{swcSz(@W5!*{aK@psjU z1N${wDlpu9yW4kEVBijMX?L1JJ4T{%JdiP`?FqM4dGN=we&bLT8E4kIol{coU)CS_ z!A)+g;HQuZ^LzkLbQSM!z|r0)v>~*Jxsn4$?`q-d{Ee{7UBrTRFb!0CxW*tf*TnIR zgnQZF?5MyG#wLF2$OaQsm?eM5z&%6#Z**r+K)0h?wf}_`W0PQuUxnFK2S5f~nmknuJ><};6ol&+2A#Gbzlu_L z#xXl)Be+B?M{dFlddet`zbSA5;=JDVGypNf(O-_$um;3THs|FUQ_puHBQUSMz*F!@ z1riu{g7)Cf0fAtUyFH2H*N(@hCY#|g^k6_vpL@W{V&(H2Hk{lg`eFQ4tN2%4F&oQc zx0h6r8c;3=QzSn`3MhkB;UV31arf=5+<|a;&z-&A{k3=2_~bbU6eDXJkXkorp%;8RaXndZIH5GN1`8 z9eS+>iV>^s)GH2)`u7%K+8N10P*#Q?l#X zkNfnE7}x%`!Bfz?qts$Ye>meTKAixw=N=eb?@|sS`VmoprU42&VnhU0Im(;S&(1po zteS0#Xxo|&)a%GPWJPz)&HMYhXY)wKs1RtGUV*rcC0@1!>W`tv7%s&hup z5c$2l#rbs+BG^~=SCEb0PrLX<$U+zW8)TMvww%Zg0snY4E-B3?jK2(<>~8Gt5>t`WlN@6(GLUMgtC*y z!Zdd&ba*Eh%L*R&qA8k76VzG42L=Re#|fI0527-FNR)>9M;0n;yq_xTAL<{j#!Pzf z)-wuJldnb*z8bQSmPAODK1-H)p98Ta@QPdX+Ft+=ih7Jo4c-Uw;o+X$@i>su-S*&- zkVN=$!GIm2n;2Y-A(Sb`9!_C%Wg9{&g#X!FD5y-Tq3dr?8@Nb%sx3<^H){k* z;{*U|K;$al0E=2he*YNGf4I6=F_c9V*mTa z>n`)Xs(DN@pxCc*Np|7B^}TqbZ1IK{W&tCtpFmAL5B`UnkycX=ebGk&EqWd1S~W%$ z1`UYHKbJbJW40A04nAJNUq~SV(V8Sq;{QO8>Z|iW)H!My?g1S z4d}BAr9s7B={z2PW(KjnW@^qbfqAK3WH;^NCQ5=AMmmg~7YA=vV~SuktRB*Y4ztlE zo*r>=@vET6vG7uXePmf6PIzC|A~K9PYiYRw27|n$fwxc{E$=b1urJ1Z5WZPy^veSM z?8a5_K*SAR5(0c|3J{u=BqK5gt>_6*NKzj3fD2=Z%UA(2M!Oy=|Hji+m2zDzUVt?c z3+1`5_u*QyE|N$K;P(00zksPEg}tY#KQjl^Kh-XkFi%!eCu-J6xqftE9(rVw^SRo! zB>C5OVEDX2P#>wh4+cruzEqsOfLew^-u4m1ERTx?U_q>s6GxsOzMPU2i-0dK9{q^& zvuI`4r?c>xtw%qC=pc$12OICM>-lTlFilk{|K}UIH2`1;i_~!quV23pZp5JIQ_X!x z8xM5`@D4i;$LQRQ6wJXow!xQYW4>{zz6*hapkcar5mR7hg zTAKn8!84aX90rR*6?+kmv=$`n{}OKyEdx>{Ec%_t!>r0;X%t>Hp2@Kknw`W#(9MM^ z-YTNm7WPL646`wSh37JNNdQb_+{!bc2e=ndju;&HtzgkpwmIhQo$WBy7XD4#@hiKR z9ZUKRE^~}x;(ruKSEW(>=myTOKmef}d_aP5+k@0i2cmgEq$?;|K(Y>1J#zVhb)57+3nkLomTcme&|563D7%_2@5bwQ z3%M?!`1i5U!Sq6Z@uWo&NNBdR8G}xv)HDFi*4b2Li$mUafpnRzR{o?&17x)0~(5wit zFDAP|p#bxf={J5H;!(UZ3>ttDl0U1f(*Bs#6uL`2^Kq}rAw3G*`+RBf(1?0{_cAJ9 z2H+8jn_bF+Fk_ti50CWrn7a|h2C{8f3%+Uk_oQVB(hacL*Mfmorsi^3>8A}2r_ojo zp^}@-p6icI#@gDhckOv&x4eD!HM^dY{D@&30%++Rh+;OVB#K=x{3yelCAfM11n(oQ z<6C73!WMU#)AzQP^9^Kjo1kMCh7z%~f7osE(csugYoG+g=jqnASL@q3b z&O4s#z5o9Wdz6(eltPhNM%h#%g~&?w$jaU_GD3DCWJM`^Z`rb?>`^3JWbfbe<(%t# zs&jq6zkjdWIp?a+`~7~sp5yVjKQ3>Vf&w#q?bh-onA?{@DOOO$+y{)?g27HBX-b}7 zXl`kK&M|j=MnE&BcHosdzx$uDTfogUgDIuDxHAlRZgew9L!fb9u(k6Y^E{PPHM+zy z?i)<8(@Nm*04o4aS8ls19`o7Y+K7++Z9L)oii5wQ9v4W>ACU z1aj{OKoZ!?ttDc3zSGr#AyA(pgjv5-@+qQBw zUca?;JJ2cAQ&VW6FES>9BHvGaE2CYmDvqsrsVv%)j<7fBkjoIJMk0lCS({vP>SMK(XQpC<^1?EEP}9hhTGg z5bWWpX#vBp;K&3DAG!NsZtxe32Sr9~^&zMc1r&)pnDlu5EbH?D@hb>_EijXdw>ra@ zp^B^kfM~uieeic8PU0F~_k0FZ&m6R5AKy53Wl?m~c&AwRzPYES1_cV2S#!`5gD;J*z@Wm>cF{5Z zFNbCUPa8IZ!zyxaEc&r&!=D%$Wf++=gXab?i>hUFxdCg`i`=bac{bAuCiVU&dSGR7 zL8uc$?HEr+&_I-yc_u;+S;QxDv}OqtX5AKi$M&H>m&xi=7Pqf z_+!9cK2Y)u>~=Qy!t2N+@LRP^jK=kR;}p&|EA7CRR|ESBcrxmQSoUFer2pajF{%hw zunX zAuZAm`bE*glsV`pa#lr1(7tH~T=tyb_*7T2)F!l7tk1cgMXIeMmE4gl1*S!4!10yY zpD`w_-JWbY;1+9iruCaoFR@vt2z}H$1FFeoO(?J@&Q8_mKP1|mggr`_9c+Z@A=Oj9 zkwFokaY9z=N_a@yzYeh0{oT=h<3Tr0Jf}9M8vr4;=ouqgIhFIIBHj&Jl%L^R`DTNc zCX0iF)>LL;h#hHyf&D}k1P^B-cjR-f#dn+zzB1M)!p#k(>-^aAo4;O{&yFmiS(55y5 zWYd@PgwtWGm_$3Cux8bVROT3I3qL_Ur2=Jn#l}ARJxA%rZ&9{@ot7_aO%)GqW*hB| zpcMI@2j2&~qB+Ic@ymTh9}Foiln2k9=M&>t$a3iN57GHeB>~UK5#F(oBK*M{#D0#z z-n%-#)ZN^TvI-q-^;iogtKmFNI_wG(J;5M+x{IIy2s2?i&dptXnb!cU^CIlA`FKuU zj6Oj;>uXahv%o6QXrY0xd;ru(N(LQG0KQU~Gb9PC|MSQ(KwCQb8TdByl)=;vKSL97 z?Ww_qz8u}QunF*qO5{%^as^HdM^@&=lBwJYTWxetuw9N9vZ1eK=o2Or|^@ z`S~CrPvf38n)8`RHM;IVr;lFJHZ}NqGa%IBULU!-sW!UPO2HvezeSYxuA>I0Ej0VO z**f$lO&{A%?ZCQ2a5VIcg*3mp6W=n-5K`pr88V=8{3w()dMQ;EuOrCK*H4KLCSPh_LuX2g)I zvt)fpFCVWvC(8v|Rz~v?5JT44z8NMl{3;LVzTBjrAcFL4!XBkM60h+MFz`VWR{&gS zhR9eX4j1s$WUB7k#71Oq?jbI^fDYy=e4|v;H{%b#XfPXodngvj0cUqL{eF*ymuScY& zQUenRaY?Xb|LluFF$V4kWEbiVE~hBZ#%r=G}=cWJ@P z(h^$#0Ml}B&(?~KHnc;3u15tmTk&XLwQQ!!KJ+c&XH-X=X4z-KG#mmHxQ>U08p;fc zTy^bs4|kpPrCtIl<032%OUQzFfd$!~vXE73GGvBwGA2VpUi~U=MiQy#?{0 z$Ymg(coz?7rt*|$1XRt;EBS4KreZGeKB*bZ{99c_WMh)m8_gzQ(@wbtJteF8te}kABW<~M+slwL@d;yUO zP(rUiGYR2E*63E!Hvw*FQT!z2=PU5HSpN5KG<&rf9*8cA1RnriAhIiV_2MptO2f)U z(Q>FMA#Gc;nX{r|rh_nsi_0&8&o7aldY9us?@h~gX%ho>elX_G^EpO$PKe@I5WV8; z>CDnf`y#R1Z`*4@333Wv^VI=IP-4~#qoQ`+lBKqow8t9XxhwMNPZu3ceWKSou4jg5 zgk6eZeq(RkYa3H~$yQh7kY^iU*o}&m3So+cLocY!@i=aSEk26E$J);}^h{yrXolRJ z1N?W@p=BeBXLh`QoqES-jHLc9M!i2^XpqI-WM^aPry`F>asOVNC*{KS#yu2n_7R_P z3EGr@Y75ZtaGG_Yt)#1aLrhSL91J~jUC`8#xKOM5NDg70&s#P>+u5GB8SpmsDSHGR z{rnX>hrLH}ugejG@tkmNOyi7M7aARvC%%nI#XTZkP<4>GV!m+47zoW#PR)cP=0gy% zppjc=BXX$wTB7wBz_^Lxx|@FhRQ{YG_2=As5d>m6=Yk)^3EEn16wwHJb7uILY2dDP zN`KuWxb)x?%TnASL8XwC6SMT71&OxJzO^c(1s9jL99F%8)5$tsafg;3w^qCJAcp4p z0ixu|Mc?JHtnuS}U1@$-^IX*_C4)-&qADCfie<%Jmy|~tXT90^#8Df?c$m~(gW|MH zdeUANJdogFb2b5phZVa;vntr^^MC5cGJJ>E>fMY3OpW{NsCPE4dXQ|T3-72{&dqU*@k^8-n&F7omNkSW+Q;yhEWPcp)y#lv?ZNuAe$+65uH2zQ`do43iZ)*-STdg5cA zzgk01SXxM&mR|ot&_zbgpCT(P_5+YGjJ>U%K2(CVLk{&P$LMWvv|dnLo_T6_5Bqp7 z&3GP)0SIgJ9HB8U7PFx&_V_|#u~zCGa6>DNbOm0G>w5c2p4zrMFxlk3DGY>bw6x$+ ztol+eL5aT)o4r>odDejXRzvl+jOsoS@%T+?K8L)`FqsRXGOCN0rVnG&Cb+)4qc3yy zT4@~GK-Bvhy-BjJziQvs>W%_GavM5C+Hk)T_@opMFOW0B}2qD!w`lf~|$b;^1p=#ori&=I+8>5cI#0?sEcA90zytskCdcO!6G1h9m?gh-IJhT8km? zRGo_8eK()
    _T}s#vt&r0r3lX?q*ze~Cu=ECv$`HDN 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 z zz$YMq2>_d&gR0gg6O=feHWOeMmNX399(ojNk&95Psv&+J#MpL7B{Kvl#FIDw>DZ({ zvN#7hDUn$z#|SAwLdt8#sB87DF4FRd3IxU&Zr;62bZv_%gwH}K(Tv0A;h$eID!%e| z2Hj}yp@ou&V#3U3_0uG?hw)5OK8~<41ptwssyo2l0M@d;&q0thgziFnM=Hc0%Vd~O z)g0kn7SC*(!}7UK7ex(#k^F7vHE5Sb#^{E0$GV-muI(Ki=)!q1W00(oyY$(7O|e_( z-V!jYgxg3pnq%r}$tvH1l#)*BSjSwOj{b0X^g%qhBJ3t20wfSFIW>xej zBaj zlQHg9zpa0SHs^LcGOG`N_Z<;az%hI2#6YfXv$YiNx0|HtNFh_OfW#MtY8JZ9*BHZ0 zpIr5h6brA!h|A{*Jrf^Goon692XQDeU(X;GCLhAMQH(nkJ`)KXN}l!X@o&B5DSK1R z&`}m{6rEpi;;#Sc@So5>mR%Vohg7@iZ`0JkgT;^(eItq zCJOpQ6)cP2q!lKjlfc36`erFq%dp(b(yxHuv_8$c16zkv`W<(dW8d2bb)O!}P~)Ooe{RB%eoJkzIzv*ybE$ES~)5pZRQ&kuyPD23Q-=-Gwk1j=tMLI?IcFRoaDKxEIu#rf7zcu4W zdoT0CEB4B?`TS#Hi z{ay=ryY}7*^Ry_y40u5qg=CjJKOAOtqVY zWY(~q5RNVUzut?-g>xR~ZY%+Lbf21lu8wqO=5#hn(C{F}*EKg!5$=FH@{i>e5rw|qqMzCsQD;n zv*M$j>Eveqr0^+{JaqMX#PU7Y=p0T{KZ8Z;Ul8yR?ru)GJ64v59 z{#127bI-%n{D+50da=?86mA=I2ktf-?gGU-N4FZsE&$7_QoiA86^4z4XLV?}v9<%d z3n8f}8lD+Ln?A4+*f++Ct*@)=rVdqUU7UnmKD!jlu#aWjB|$X&Z1kR! z6f^!B=OE*KL%lk3&fl?CfM-&e*zklH&`VPR7#L^EFTmb_fEAu^L*3NZj9%$C^7%wY z2AA%~JBYvffpp_RC4gfdw|BHHGbXamJU`d6Im&d6x2G5|J7LddX}KS3YkT6{dOV5bjWSGE3n6=g^b?j2n`R=|}@_C@MeuiM3Pw`Z)-@!s~ zjm2;w+K{8`F%JXAvRlj?N@q^(fSiehl$XE|DFM(!gLk2I&CA^KeU6W9f-^0>QJCSR zQyT>OSh>XnULS$5`BegHODNE@!IXK(QoGMzWe)Dv4NKPdS$LD zfPydI9;{F9bstf{H!sP>*c6TIR5TWUEf$Yig zSDJ5q5Wi*qjHsf`m;Tj&KqfDR&M=Vd6Cm>y%RajQoR_{W{VKGW!)paF0%=+)+=24( zbH@%=o*0~hopE1ub3iE1nSG2TM_6rNkJapo-R%BQHWU}^F@l6{g(HPX*rMVAySN-t zv@cGa@s6x?tC@0Kf2>-ps=IT=YRL6)^U;;fi?RZ8(zThGBfRC=2FC;jfFSI`we7iU zMIrBEYGc?hxHb1uy<#M)`4}888D!$KCC;;iT3O)1~1cKb7^99C7 zKL(hT6`Bu156C%WtP~jCCG}pABtwcOG5&THR*`?}^^^5aWX@?3VXrP*!#WbB|1KeN zVTncaK4yKVZ@GbCb*HJ^PkjNyGYsOa?PcjAQ2+|IacI%zTjm8MelB!_-I0 zEqStlGMN4GFJ#6K&_z`|!lUmmCIH>Ip*k%{Oq|0K!txVkyi`C7Ymofz`;cYU3ZWFM zXFI{t#i86yW$P1wNAjTECENRX_OLYywD#ej9*@mVBbZk3-T26D+PIb8k$@}w6YwE= zDZ#3A7;myJs(5L953;nsj7g1mwlKtJ1vm}D_`$eXZOxzR#%4LIcjl`@=do$U`lc^`AdtHO^F@aQo3VKDM$; zWr^V|O^lE@T;775NS8e@t%~VmF3dlILSPoVtp#*luLct_T#;9{{xb~SKH_X1n{N78 zM)3Pcc&rKKa)7Z>VIs(fCBFZKW0?Vt^~&y1)Re^c2klD;eNHpU?Y_oI&~1qLz@cbv zJ3cNb2o#MFupKeIPL#MXM$t(9T~aP&Z@x!C2NHFAn=`^js(ji%0>PqLPNiscZUBhS z%9)kG^Vj%-PXVQ`pZOXy~x)ESB-T! z5+-lNfLvS%R4?lBxvx%5Fk?h@)4|Aa(EXTd{9MqeSt6!`{nK@_MtD=#hpLsUOpL=>|YYdlJNTmAT z1C36n!V@%fXz0*|fR_fWoH@k}H-4pOmcAY(QUCJu^!M11UnHxf2?iPr1iw-&F_bIfdJ3&)e!J}7--~OQx1^+Sh z_OlyWLoLqlQMTO;E^b)v*LrSR;%A*nGSIc6lZ`Az$?d+Nr|U<^b!;OfgGcop#)zPF z-X4#WB4549!%`i~;gyZT67<;0cQpI=H5FNel_8OFgIAi-$rA15n8H$8|>dJ@9Z<;o&OicskuvOfLseG%aIe3BKB`u^Pk`eYsro z)NJXE+$VJvXzeqYr{gX=<)U=8DeH6GDiT=G66)Ey8xcQxmrODbu*M>a(NDz|heIO9 zvm%XGj2jxlc9ZG)HcV{AMNvVkLq<$wtwSx51Ek- z&iNwSTt>#5m$P|xZ=W$BjWf)k2wC9HGCO${PplvWQ2U(m-C{^(fnEhXg}Y+L9b3$L z!%5erC3xd(!)|iP0aJHJ(Jc)-@_rtqybn&L!_G;8>7gFp?kEnTi~#66V1PXRd;d`L zkFogfp?swNM~Ol=n#WaP*9X3YUlNy>zIS98)nv&8MRqm8SQSK+%YRw7Au$ZOX9QP@ zcv$21Rqf1P=5xjY_DRAf^8FLc%z}%f!9V8tOgx0)FWnnIC>c{EDsq$7Xi{{jeJ`!_ z5)Cp>%6#G(ljq6=OCnK9qr=8k3na8yoK0zc_zu3Uxru}+zb%HYcsGyEH7$i+^B&kt z72i2^7o;S=km)O61?{kfB+wfi*)rS#6WMZ$*A7mr=oF3A9MUV3+?~J)E(GvWFtY&VTf{A z!#TsXB{RH;q~NRU7ZmkoHm{Ofihh%do~h4eZL?L7egvOY=|Xv=WT0ugV30;XmcYHr zz2ODzlpd$u!D3e7-< zK-XWcWfGM@BRwWHSzF5N?E7YH-(_?<_wvc9xlr2 zu|6)LWJtv>}exNPG0QXg2gwl%Qe*|g>Med#jLF2AU0*Q zBi+dZf{d%J=j=q6{A^1G{O(~g$KY?jvob0CwE7^(2u$iL1|duZd7*!8Ww)*XG%h+> zL^V7&WBLPHfO==|A1CSdXH;NdM7Jv($%08hx$7sK>j@mCi|Cm4$;XB6wxYYBFfsJF z;!|>pCHfN9zOKNT9`Df4JZK9DyYCRC4VuX9=p$1+wicdA}Mza!cIGnpfnyJ zf!s#{Avtw5FqD#~bULYeGwBc{qhTwmH_Tc54msVWt+}tM4UxojLH`5T*4FD(IK3Y4 z^5d5eG0pKN-*Yf-k8CfyvWG_@HcSVyuj8sz>F6Yo?pYhJ&8 z#PafNcXFVuHzw+7$U=E)s$u>wFidIZ#QPA_u14nejut}4O&GrMw*5J4#{zV;3*zd) zx?{e?=9e%NnQrJ)i#q3fWR(QdH!6dbd4hu;0qWu}Lm`$PQ%3<#ANoA zGbxY2-Sx-=lB1yieR+pXn#80+^x0=)Kek$S+qif0D{Zptru~hGC9C3{o`StImfI_^ z$l=)-HW^F9TnR#f(J_0tO$z;;QMM%(RMATVa}Ic+<{LP)nPOnhMV;=0$`{y)x;Td0 zq+TvTsS6?y<$9J`4F|U#66qbk>CZMGaxWdi)tDgsDOoY*++nsWSiy@a-54;qfVL@M3a zpUibXgZYC`ke++E5LR;_h2<1BzzBJr5-vC$*@2x^S4(cvm${Maz#f+&;XB=Ge{Zi+ z7sA=SSsF2Q5HeD9Qqq%jV5N%t`!hW|JrUE_S1I2~(v0-~g#8zq^QQxw%4}FZ2mxuZ zN|o7xQfSKW%EeDGSEi4Mz{>b2h%tT7Dr;=u&26L{q;j z&fEi`0Bd8oT}{kGe#08?fVb&|;B=vHn@!jy`=Ow7&i`uo$|o2Hv-;b;EARKmbj3UI z=JCi!`M%X;FdDD(w^&fbNq3EaI%@~x=LFhU2b@P;+~-EWfR!RrG8?j<ZmWbc8Z5h5Ab&weD2?rFKbF~v zQ=~QjqhFNbJc5*3L)F$Q7B}izXw%lfTVZ=xbk5i{_K8wKQ~`H(^#OlcR=D#9KJ|zg z%I{EpB)!1^!p0~S4DHHi6rHr&xCWQy%;ht~ux_)vL{VV>fXz2;u(!et-#f$aPu6uM z9LNNY=3TuY_l)2VlDMi&0K4J;hao87TCg0|%fj;edeLW|So;kww&V5Z zHAERcnLV`hge|wc7fl!%&SUz0Y(vHJbI+Kd-6}qtgXLpOXmp8qIu=vSq zLzoP@owsU_L;iWLY%a|;UIsJF@G@+mjh^((Bi4Yy5a+*rCqnW$)iA47l^%~7Vru)T zE`~I$2>$5IZmQ>ah<^h{{I?SqtRnZ$PQw!MGfi^nNReZ1ya!1kld-%J`_fjr%8CZdJ;D>emy9hVR#^eT1TFD-d{t{&bedcxJvu!?T zJUP+~Xhe=*@Ok8#)c>actmfGBRC?oj;khc~WyC;dKlTb8;nJx^o-u(Z61fuURu*feIzBrEyV@Ml(#pgu z9(y?~K&(Gh-U~;`d74zb)b0GJqQTsJw(Ri2g*T>MB9D zu!-NdYZahX{^hSp-`=tHvVZuUMM{QQR>IUHnD<*l(duFrMIeybsz!8)QQX->z1aaI z@iw%6@9ZVqAB~xJ00+14V?@S4tI;Le5W6i({{+0D8m`h>tE7iLMo*DO@ow1+?&M{} z)#59W3s=-b#Kd!F43^ge?~b#BSLPDxkC|JZ6wgzyN!AUPX^4Fjb}q!sUR*#f)s$v6 z^RLOauh>4$3WfBNeGHzk<2R12LF6)v^RnhL6f&fF8pOlFUY9Pvt~CONeHwf&?-}9P z^|22B{f;OpT)M(YxBUSGGgGpJ(A?5CnfBmu_JVvzc68R0(%!hkQ9^%aMU=2y5#xy$ z|D34OxI(PhDs*UT(e|UF#|fmK`+C2wQqtoK5iN?|9R0Ga+IR2G3%UiHp&Rs-<@6Aq zmS{Jz++%K`! zh-2*ysSy;<{jR|UmlVlM`?!MQ&xAg7Z4RZ-bb)v&{-=>JK=s%Y3X^5AC=&~5{i3t7 zq~4SPHgX&kUK87fKnqCw9s-f^qf=rz-$#XE*BPWs`^#h`pt<$)8HEs=Z(a!0w*^`) z^Q#G!Fur>sqPV(<7Aa5d?}+=Ex)Y0Z<;cn-je^It;n#6kS&PGO$6wz;IMFTmYmWl6 zX#@l|mj*8vr{*~Lz;#rYVPB}yL!|AqRRt9-ZKlnXt5%~Rg6vPb9%|hX$=%@e@p$oV z+BoK{-vwraa;4T_Uo$Y~omM+*+RXs9j#sg6E(Mxay)LTBLWM1tRQjIVvfX3Gb)K z#g*(s1kjsnn!v#PA!&LKg?`n0MG7cPWYrmqa?lH#(20`NpO()S}jDkAs+l6_+@ z0UduQKT$d`ffiZ$Ss7CQvkE1nvN{jH3}hPRLmnT-V~>8tVnC}$O_mV-d2Vf)WxUQ0AfZKBo-V~9&XBCumn40v6R z=O!ch?{jx1FrtuO~H9UQ7o>I+9HTv$P6D(4jRR%GbfgHU3l z$HCtu{9fwWas!7LCF(VAfj5`hK~Q1X=u)f;&MQ)L=%~)U4J0hG`&K|GHTZ;dd2E~-g9oqT(262G4ArC9;=&* zf4Juk|LiCC?`lZ5HA3s1ZM{2VCiDjdC~mL8;~2v{;I|?ipnTP}0Vjy39Fwd`&9;kroqQH`Un$I!SMNt2xp%Q~vW5b-`e~Ijl#*oJ)wM%lrJYI?<*LDnsDY0L)(~5*ovwjSkJ`-01*$u#EJA4x@UGo!@SWx`7)QS98C%@4 zIRP67p;k#>s0jIjvEX~xK<=YBD}~_k0;+q6Igp@w;+4ObTrcp$qu)R# zv=usWe_JeDfning$PZGj zX5zW;5>OkpB~V;ELUa1g>wa$NxjcF&2J;HWjbJ=?me^b1b@@K-dX*UHfqYrcweBAv zg78Bhv5k@X-~dgAWYQZjm3Ig`q{fTlOTl02=F+){jA}MD;r~95x_ls3Q0k3|v)YvM zQU-6B-}JRhBMo}x%EA6WS7!9)yHdu+FM*iRq%pf%>ihT#943<~SrJ=GLD~5PMG01w zzQ;#)XxCml|8XR;&I^7=tSWs~>EA8E{(ENTxh;HYk-wbIAzukJAchMcvRxO-+>lS* zwa}!(0B4cQ(};AJXeQ#-#4Q#o^Ts2U^FF(#Vc!5Tsx5+y`VLdapc2`Fbax;-H)W0w zTxTJckB0O8XO_tT_U6U;jXrdP9n$OQw9FbK%z%%i1qS4!;McD z)9n4TctDZFelW%Zs;DI)!#wV-L$*p~!u#|c_?K*njz6@3{u2c$)jHm7NTTF)TD{Pk z3^?XQT4kr(OO9kPJ-GIJHeB(AYsdP^+48TFG^UTs@Boprog)soVf{lN$ zr#8_|a{^~`F}W6zxYb1#APFCb_aBf_j3N6zqFT2rVn%>o?|>~loBo|S5M*U+pSh(r z-u$Yj7-@VOt z=YFAgstXz%d~NOOq~{jVr_MP)h9kk;I>iyb?=xVwr~w#|%kAjrxJwES23pT{wftzF zBMP2XBQW%b!*%(d8V;tH@EJ0|R&nh2&0!#~E0zYye?;B_U^=#J&N_dxc`aY;^vwFG z188TzX?R<{`gmw)N3%}ZH7o;-?$3X!q_%5nsf|D$`ma15gTr-;~0S891Qf$>e^(rL>&48n|n z{#ycsB4TcDBq zEdC{XoluSi>8W70lk=~69Igh0@uT>v;<$fH+Kx-$zzI#g;k{v$d1lQ7%AXGjUq=%I zo>`Fgc5bs1)s!vRC&ZO*!+hH<#nnh*Wgi5zoK6wbAO>FBpv|-7y2I7*>*|8KA3D^| z=wukA=?rVuA(5#E75U(Q;U@A^GO>|!0$NOH`5`xAq0vl87sD>DGbq(8NqL~ahkC25 zItT1%P_*rO9wMF3qi02%!YMq=h&;>RjZ2-%+TuD1AcCd2NsBAPUBF#PzS4MnO$P5s zE&Q^^;Z(v(`S#ltII*f{vJjZww^;!Q#7?aeayTzuZw2Lw&O30W*6EEy86YG&o{LX^ zuUBMZXTJ(Mp~l~YE@k5}pwNtTc=;m@)i?j*5qYOQ5n9ajLJTh1W)OqF{Q4!eB^2)q zxt=g^Vc7Z9m9ndj53nvY_B`%kZ!P<-Pv&-nh?s_e>j>RQ*Wlt+#WHS^KOl{+KI3OX z$@{LlJwZBrS-#9bIiR~BnN=PJHYk;Jl61M%o_Z=0T6HJg2|_aN1toB<%~ z^Hy8C zAjWO<=#b*R-tz${dM~8a*R_s2;^_3K#8!BVExK~{#Rg=_qTRMZBve_@>?P;S=8;CS zaQ3&3Z$2!09APD|U;OIGQJxi=`lZ@CY*2g;?}6Yn_Lop zGkFB=>qjo^{WSI<#vbG9Gp|kufL&r%Cm2dRR;Ju*-%@SZDRAEd;DfU$BG9YJEmCy_ z*sdMCwTQXZ&kMn>Xdt{F&`*F~^u0k} zJP9ug(YbgZ%XqA~a`bzgv*K4hZbW$>of&wm!OL~s5#9{MwaeqXx3xSkRohO>eP@oR z>7%Hg0UG6R;#GBcLD{g<<2-Kvy*FVc5u&3UlQ_RMXtw1epUWVN+7n1)v1dCY_h4_> z#Y%5pDzqk2XxW8dM~-v=N0Ls@KBOy)dr!)S$v{8_Se~IHRj=`>9LNT=%~!j;!_T^R zeZw^XznWzS##awud_eCb8uhNjVno@oQPPd{IBwTM(Ejs`+oXvo71T`8 z`Q6d*VQ4{NxK|S@k6JpT{=p)w5;(fP0WFh(%&yo=e=m6WwuGa>cF?<6mt=YIrQ%0& zF^M8{wO8;1xl4-D@0ODX7(XxV>3=Gpolc$z3lzC~{$2}gA*+`I_|oW2qe3j2)3m?OEu$F~PFI+9)t)~MFUw9D#JLp!jrE?@hSWDN?A@)UkE z|KrY>9k5q~s`oBwE4}jC`9Xy}^93=sb1D7r!VvB|h6MEQZjdN9wfp4(Frn8NREcL+ zO%c=qw%4=t!W@H>u~syjeNJ?PZ)vT{-21Z1!GO=D2^G=z-oeV5jHvI@QaasMIN0vs zCWVzT|I_E)GWx76ulIp!Pp(1F&;uBuVpi+27Pnop&KD{3?40%9LMoj%&Xx6I)M_gO z9t;H1P0o#yWbz_)-?;;F6-?macg2Eu%=rg{6@<9nQcB}xwcKMfT100a#!pNy6}?SK z{fDyfkiU>|KJR~rjj7~*!~D0aQXbW+zZJMB4H}LC49+azUI#r18<1+OP8R2ccVkXWhlnF zMC_3Emk#3SdB?8vW4)f*m~Ky=ju%kF8^U!Z77iE8I1Ku<`RUjFnhoQi;rLC}w+hn- zZgFN=ZfcUtfXU{6-_H)TBHe6?xbqJ5jrdC$R>r$v^*!TIAH3l316!g?y_rP34dWtI zlj=~?ZkpHf1z&i+mEQYb#GdjllaQ7Aj5oasaB;}>N@ zW+ETbX)^XG^Ys6uX~5zzd`*t;045bQ`lggc;fAw5xGHHLl<}erNhU^C(t`Lh7Uiw zt@dUeEoZBueywO|(idBy@ z6S-TKbV#XSrM}oH#kT?gq2q>O=P}4Hmph@^mr91AfM(0J4UMYn`O`#B+9*|%EVE1`1r{m&Ee7lZXWs_o_$SYaKvd3dx!Rvu?T;7jlA=n=bvr8thr zwDE|AoeNAIT@L&MkXSM;hG7qs%qIEjKH=SFkLfv~nfNqe$ZZ86P~n|x zFHvN5C1o%Qdo1tihS;kX@(n%ne68P{+2y#`WA($DK`VPu9#)5eW^fCRgl=Fqd=S46 z7QKIDsXtV{x?>EnKe{ZOHu{e%A|&w+kfH?VGa=45o`MmTXVDI$^|HN_Razl-MxWDw_3gx4Q2 zmhJLi^tr_`&#sZA{aq6(cq2Sd3f;3(g_}p2$Wx=D8IhXRInFM*i$-kMOZA}dx&&Z0 zhu#J{HD&vm4~FlrLgcyDI9JZrcnJCCJ?~tlwwYfxbVmCYAXTD`@ig8y2Wy4(O4a*s z6KMKFDwi=4M0EI;1WB{=oAF*vZ=7Px;89Jxc*xjUsFxE6iVT>KXIhrkt{~EqAQ`>t z>B{jqn(f+OH6S3&K*Hm4z%=d!=a z)#B#3;zAOqtXXpgVv=s12?Du;9cpN^p?Esd1o=)p zRP@%73q$-B)4t@PK$3f31Y#fCGmY7BlZ5e;iEMp?Y?-`UZ!%$STzbO$iDwypIkAK; z;$)ausrQO61a^j+-e0GVi3vL?@AJcB$f-O6s~SI9{i``=c(yR7*On5QpParc&Q(l7$u1(aTaxEAdobe;Jt_3zEwF!pS2+?&>lSJ6PWTkyRb3QNP%VN;T6*IaY+EfD}=g@ zfFkZXd}rrx(y}yuh61w9ukda%o`YuW8?s2s22Sh#O0V||7o6ktx8z?bHF}6pI4os> zA)c4i6DHL)qw8TLyZR;_5=j2}e4K#RUGMT*n-KpqYzE0S7zbRsUA}NC zYmhvUIUK<(uRLzHtj@IKNqac7Q5&{lW^0g|Vd9NOk~WK6=exS5la&?th9Vb3jhL(N zuRi4g(Fy<~sGTg)t_|Q#Z+dBemR=d{7N&2t4US}0r~R7iKMqS*>C_{#4Lck4Ij`2Q zUGFIw@lnp$HKTl}b@B6lSMn(D!gnO%^H+*l(~iVWa*fIF!t*i-9WwYxr2ep}1NFWl z0(?&v7alo?{AE#XASP?oQt?x%FAn;eLeLph&NGB+>wPhrr^i?BjzOMwZaPiRUH->y zZjQ980UmPW{a@#I1IfFro~v)xb`cJMq9gHNHLDA}L+Vr8E25 z)pQ8mQF+q_d*2^|^iKUIVX|YDt)Y)VO_=J->N;3FPI@>Rg8W2{r(An%Z8x1)Lh--= zxD6bbdiey3g2>|M)_`GCJ1T;tH@^x03f9XlTK(>+nMPs$JpZi|GsZvcXgiS3XS zp+WLDM-V4;rrVT=^M*bBeE+8A)~hqZLe z9E+o`0m?Ll4i0l*xvq;m?vivGP&cRD^wS%M^G|$E0)s(T9?keTyP@qEmGdEkqP+g& zOEWwR-mu$i=OzNIFt>^%Bg^=nl~_p66;jT~Bj@7GNT;!p6zFcZEKAPN>=iX{2o4pF z+x6&(hQ1b{KrLZ`6Uk3C5sd_KbCv~QYYy#~CGtUXu2F8u?y{b0YqfF%-M_@Mprjod zEXS0FBD`NsLnWim`A>(GP{e|r$LHW{LI$_tdnF^O47dWZCv-3GgqF81>jsO1sWOqd zrDTJp5MjC!)$2@!|NCr}pa21it_ylTNoJ9ai1OJC3!Rb<9BBxl7(Cx9r$|p_%hHy; zftWzrv>qf3VL)f#c|(NMDM+alAvQqAmmBw8Jw@Vo;Y`ZD1xOcOU8f^{(gZi%@!n9K zcJ53ZNIAWG9K(OWZIfN$4apj{3j^vCb-u?RZ5~MQA`J`ZvR-As`&lBH2{gIz6U?oR zt>#ec8Q5O*l_rb8d-a^tASJiAr|XW2iuDze|FqQW+nOmY7Xv<%uHHPF?~T#M|MxS7 zGzaq!5a#u2>HzF)x1X~@Rt~Y)(*6TqH)`aeR)Ne)=%N|y$9;1aB-vs-px;Q>bM8Dc zr|+&(yJNUq1GZvjSX8gB*UBJAatz8?sb@JW8>odFwAxmwhV<=uwVeMxIdkoNXzJWqtP>gg*!)MeRj};tbZ$v9v;tCX z>{2^Q`h0t_U*$~)32X791?Cyp@lRy^a5;RDk6UAf>%iU3*%#fk^k+A3a3c$P%?(Ly><$)qbO|wW( z6B|V`wYz~3{Sm2}Rfq>V6SoFJinrNbH-FNZXqY1KbgEj+x@P8fPL5A8gnb%T%-$+q zCJ>x^1G7*K>Gh|&Vww_>p4&IhAo{{JeQfswY2AD8?Yg--CRW^u0qO1-a{a} z8G{2{&!e6C&()foPLs)2o^*_`QI*(e76t9l1LpN*2!c^#R3iAKcKZURVh97+D}4wu zP0oARERWZG@a-(F@DGuK*$+Y1K~!@yWWEuxkm#TlRk;=}_F=l5I<{Ei@F;WlXk7xX zDq@Hj0&|H?VOTC3Wn+Zz*Y;~~T~tnTSO=Up=YDk#Lutet4E2-hcH>SUF21874C6#t zQtmg58gFF-%|D_P|7~k90-802)A=MWOYosR-0hIa>)M|KZVqUDlD_YrKhKu2-K%nd z<4V`d^2zUKkCZuG*GYkL3TGs3Xa}Os4P~=Q1QR-?WMAw$M%Kf2!Za)vxpuI@Eo`{! zcuS*)!4mOinob-dLU}Pc8|mLq6Og{BKN9Wg1B&Nj4xX9-lD=Nqf$CCuO2843@1(0% z(<-Y9h$QXYO>nx{bbPfhYWK9t^o$F$gr~Nej;Y8qf%eG5eklwFHcw~h%aM#K04-53 z7&KZ4Tle=$M(y&hq+Nj{pA!z~8^9cEXPA`Pdi=@eM7S1cUWy^hMN%;#zT>dyx^XL_ zS~{S;W3Uh1yXtS+PH|Cs5)L9*Ax)tV=(+)*=3ggGqs=H*CfymOR_bBU4LKtuu~Hg& zGCmFxj=<=feQTD46_sJB!xoYrZ?E~9M~Ik}(c4rrNm%ub`q`bV?I*pDGor|-25Gs}5wD%P+__d(tHkX3E$nG@;;`4bsWbJ(M`ISDnY#bC^6$2oRqUM=u z4swt94=CmfcbB|{qB2&1Yu^UFph~&>ZmT3f=Ln~Yyr}B!PAXZ#1?L&Z5T*q1Z?XBc zchwm`pqi`IXJknt3j;t1IoSh%B3*w(LD;Iy&w_G5pz*sRoFp>>8ZO!^@7)RLk57&h4pee{ zIGd-BW+i0cZnA;h;%?xKw>Ny6f}rmR1f{I>yKFtc+OzfKw88X|ATJWnLU2Fi6KQ3Y z46f(q!gs{B&86dW&U4`vRdW~D9tUebQV8CO1^EGu)`LOQ**Off&2W)$^GVXJ1xce2%ZJYHrtFunh@n7x&*5#U{%LKxVNNvLAz_E}dNSXV6grddj(5dp8znx|86`goH4Qd2cqnnyYsehSuJ}P4@IGBYnFs zfF_&xh<(S^6gF3Rw&?02J|K{l;VgEBKBI;tIvobAv#_1VpX6gDs!bC(#>c@-Od&2d z2J&@Y(~obzzYho@t*~A814i)4-2#;7r5i7A3uwr01IUm|xyAOQoW~!Oh2Mb-Ta|h$ zu6)Udhs+{YzHG>jtfq}?fe~tJj(b~KrGkbNK8L?;n= zT7RKI0KDz47ymxE8c>!}HzNtEx;dXUeYG2^{up&6|S<&O`Bcv)}J&6x4 z{~|u|;%>jQdu5E#+T>&}MrHN^X|I9FpG)U3*b80H6+>_fQdDzq%@XyR7|%yHAY6J~ zY~6VzyS>YmzaSVc(YX-+RSDA{-l^UEem6wMAUlCI@T}r;q~zy-C^i~`4zh!)?GOu> ziDbxIdN?VLh|iB%m>QAO9rQA0e$!@(F0(1tNsMn=$^bLTnd}MHxe%&teTTjc{84!8 z9in8LO)3Xskr}fZy?8bJkZL=>YqmvC-~tJIl2K{z(`i2AZ}$Fb{wFn`e-((o<(`;=$X=*mAY{eq~5Y(vsWP-lCoAfPsEJ!Gq? zkSO4{@j4|mxXR@;!$;H3st2n}-@t;=rX~PK>jgO9QY75g$23c*x4&c>QOXrDNMady z7T%Byi9DHu3u~e7g9GfIP?U8rCw^p4ws{1AU`**}jDPwLAfHbCbcxEs4~F(U5ulK% z(Gp9_KKJI?4s4X!+FKWYloRJE&WVKf z;mu#Q>~%Y@ns1UZ4$*8Z>IbobC=a41gt`Ni-?9QvdxC({{4Do%=g)C6;rPmTKeVuh z{aSRYUQ?dEn1tAvCNJOE{0_5_Kru8k#>hzrL@792TF! zA=-Z7NSLyq>!!xQW&iPC!N*OgvTAT#AX5F#S%o$wINY9`BH2c?m-A~mL)L+bJHkGd zkxvKJdcuZXVBB>15!FbRfJ7P{-C-Fz0+goyRmYnf^Pw2BQ}}m?>4jUyV9-vfq1lv!a#xqgH_U^B7?i%+FXt*cf)wUx^Per;cW?A#UcDQZ zDH0FLcJF(w+Ga1KO|dCz5J%U9Sl?E(+uIVh#joG_bj`-w+j!p|uH_`>0^|K|xHFD| zl@uEkt7p$^%2WHBtY5K8{N>mRl`A|6JpCfc_Jyi(lMGsa0Gi6D_Cl*L9IOq^obuY;A^=2bDH^z0^a5*E4_m*L4bH_e( zvpod;g)g%c|LE7gXPcv`fXq@gBO`rE$!SFPNHg!!fVlZ2`#DbGiYd`-1`#tOMr?B1 znG)))P$W&u7mmiO1Fg^r#_F6p817%uOZwuQV+AZsIKQLK-Vj*B9`EzCvXU=LVX+Pl ze=f_z5LYxA+lMUTS{OF9Lz~uMVJ#2rY7P#vOtVg~(T$bV2=C5w&Q>_ zcz>{v!J z7m~QMaK6LBqKrl`PuBpx?)Y>X<7W7vb8q4P;TMqD#dk>R0013SuKJe=Jx@Qgod>mN zJ?uyB!^LJ@G8IBy;`Kw9`tTJFDZC?7nk-l1sbEm^+ct&I`{#H0ySyMt$|vwQL8SX! zUBtcYs30Texb%A!pdQm(d77{TOoBEigUU<$u)PTx-@;a4<=@<*dv0oLdxnKmLB>?EeNe zIEZ8-C^y%?UjexdZe+^a^mqbN$sZLKlMhGFUYQ|%o(r0>h%9(5?sKmfP+y#RV-ey+ z)UjpKD+OMW7}WB!QKY0LjloLn9*rO3%fp5{r+h$1Nv#Lhk+6O0+|nm;qzn-Jy&T<% zhKrEz+(R+=uhOqEMMBkx>Y)&opwO&Rh=-fDf>m_e{z1F?-$^Z$dqHXD@vjb-*ZbW#SF^KS{2wZe-T`b?L?ep*KV~sLSBr!g_Ocv=-!MK2J+Let=%Y^?Rc=qEv8)0DJtd zF-y3jQkmqg*hBRX^?Z%F!Hbk(-gh2G)6xRAeHUhJtrQotz2bwS?P7A?YNq{&dh}qm zi1^h*%CE`L6YcgR?77Botu)?tFSRK1$EKHk`nWZNtslN>;OsoQjhBBdgSufGGS)TG z$k^xVt*hI4j7a2tR3$pRp1O~KCVJ*r7F_f5YsGe2zl2)kOf80vMjzIFP7ttoIks$z z1Qq!5vU|wtsUEs&U?5*G)S3|9CCQF!ljNpfpk5h<-o2i z25)*f0+e$ z!zM~#f(Q<(%s(pe*alfkDMr6w<_y*iWGb+WI_R$J`1kw=fYGXS!%Iaf~TBI zxmE$AH^sL)2`s3@4V}P2a{64F=PWoeu}+$5&+Nm}N2FvPAQEYuf%@#wWxWkgu60gKi!Lg8Jmx0+E?FWR4wLvd)yMr^h2v@T>6+J+8p#@}%9eFQSiPh)B zJ>;_oLRAjFRpwfkRRz3`^SfmDwZ<}KsMhe%`%N{rzMHnw(^wdMv^g_d4SKu)==22X zmqRj>`~d8`Lw5G!U|_)&0Bd}TJ9NtA#yOI1Ehuw9lg%aUJuzZ4R`(&HVS);kN*XVS zos#M#=%;A zK(&iX#NAIxYT2{BLz=y9rtyX$~G@0JpyA@ZKMsL zI8H=KDl*PKfD=UehC@Njhk`S`O&^}wI~5ICbp;{nk$rijsps1eOAYKD=*9aDc6*c^ zhXQboE*mL7W+XmN9_z_Ifx3F7>r&dIDZb20*YfJ+?skR?u;VIBJ;aTi^t2;TbO&B* zuUWJJ#=raQd&W=G<95W4n~6z1mU7;DBH7W6*zW632l6RVJxG{=_DhPUJ0hjTO+lZo zb_C3g4wV@^$pG`HR{CK)umQ#Y#4xf6c5D<_1t?qB*~LgN`{hw2Pt@-&`VU!Zb2<2_ zvxQV)C@$S_*k2e_zWC3ld-}l?Iq{*kU;L}YK|&lA>A)JI6Xv547#eCsYvw0v# zM$v5$iR`}IrI}ye$;+_eQ`q;55BL|kbZ^H;(SsCvi8mOFOaQ#XKi?SQkcKOSRRWnG z&{!~5Sk>JKYz%qPE_QC~GWW7qEWx*5O6hYF58`^)T5FXkH{?Yi59VH>Tw%xEbr_>K z`TTp5DBs-}B!FUJiQ@mwW9*T>S*D5=X0q{Fy>g0&0R;T)9%;T{()ojj0j}{eKQ2yR z$<~XH=uevzI=G|cH82WsHqRb#oMe0Bx6o@wCTVMGnbpkkxuKe1YC$VJR!mCBY)j6n zB%^>Q-)SUrI45EvE&wdrUCFSwUq0x0%OK)<`OxsCDP*-=-d4Kw*n~OM03@1tH47pg zBM&snoPfq4PN6(0zRL8D=ac&a-#fXU<)!zpoYLl}5KFgx1`7xMqOn|SFeNsrGA6j@ zC7&Fg#xLWtQhEoLY^}BZwei8Gvu{>PwxZi4Dqx!Uha#MP$)tR zzsb1`oXkZGW6BOL*YvL9YX%x&PF$?(8o+D1HWz#N5{H;BLjr&oC0UO558Cc?yUMuc zG)DHA5AdU=t$L{t++vq2Ivl_M$yN9F@=Urez`hZ zitv-~*t!=kNJy+aNf}aX->&xQ{3qo`Ka$OoPp+udC(pXJx#h}M>6L5^O+Kp=J{(#r zLt{p)xZWgl2c*R;loMay+Wq4^p5+$&h~p0&@XyV%u#0Y__72wv z5fdF)p@9!HCt5*F5T*sk>S%<{51XF*ukoK~TjWE#C zQVM52mktT3LDalZ9F3ffM(FLgcDTR2G9)VN>`8V~oqPaR@Mvs11R>zJ9=WLqj=jkxcAwwWGiF8v)1^P~PSC-bQ? zs=Y?xu8tl4Tc~ILVyM^>ss;vKbFL!gL?=(0U4Uas?%=&Rr z{L8Bcasf8V?IOFNN5%2Tlbi74)2kz0?z~n<&+6ssD0&bC^RzlodHt2|?cu>i-Nx@D z=C4?w_3>(g`ByhE5uaGMB}s_9u<6s$3)O?1KobIjewz3u1-Na$Y62MZVDIC?1XBO3 zv-Br?3fW78agEJQ2rrmSYAddw&6*;HZL$LdpEbMrV78Wry7?5tl!wbNw&fi%(CTaH z(q5qw{U-eajOj?S$oxBXnD#0mp(9mDrGh=A@OtyzgpVy4%NP1hPA!vcg~2e`UlE=h z&dh}DV!OJM+mt{~Ac$$K+5S9EyG#)hfRFBE8W$+cKC{Jb$kE+l;VR>CXI@&%BC&Z8 znHELD(%&0+Q&`LhV1@hX2eXw9zsS&_zh;Ji=C#u{i3Qsg2T@odGeLno*|PRlkS(uq zN&svqe;Lp?-&zuY`3%;il9c0UmblDta5iL)1-1U*f`m{;!URWD1!SQ9JfRD6mD*K( zbbYw!O&+L(dqvx8Jt&%?{e~E?(5#swM`I>+1CoojEIxbfft2x9u7H)v*zIF1|by z){#e~Eumw~wrQk{SKf>A{0_J6)@8Fo*8yc=OosC9d&Y(VZHjWDzBtcc3Et;c@%#Dd zKqE^8a<*e)P%*{J5T^X`>cZlBAgmVlnq;3($&u4m-}zzMN&BfKyRVqjfj$r(E)qSi zGeb9PjJj%MRkxFQ<`r{lg{G%B$^~mo zFaUj=!q4C@k60Fa`wrQ$cT~THTV@&dH4C6YDZVA^FS3=}-Gt{iE>FZWBeesk9Ko8$ zspO!a(q~rF_QY*lWj9`e!6i>|OKvG@dyUSL=~UMIz1dF4_#vfbVZ_V0y)mrr{sK4E zQb+;|X35zh&GnDf7?95qQC+ydG|+k+9RZtuCMQIJNaP=O)n{wHIKevPgG`+{!@$2G zzO!*~pfcW8Ii*;`8b~BhhG5ZTJ?v(+G-VLg@^_OpJKA*&4NVP90spAZsnYrXYm5We z71HGEf>(p-#l&spV?5%*Y*oVG);^fTjDvs1Idnt=W(fx%pm+8a5jO3kr~fpSS<~H& z(zhNo!$Aq}zgXuC+UUyheT6QM-@-k{8SfvXzA<<;zjG?Sma&lDor%WxV~cSx_7@nV z)%nypYy(bM-T7VHG5BY6+NQo&VPe@e2wxrp2%nbSXQ*xSh`p_NcdQKFVw$-WcawSO zm^|&tVrTGO@U-WyI9PFZPs%(4UDP!ts&um^71DkcUpOP%v@C3O3H;b zc;{?}#0R-IF%=DSkHWRif9UAKVO@1eTaUaWL6Z`>rQTWsyHIZ2>Q|r?#-WTFI&t=< z$3&iA%B)=t4m}sUTmrtd-FeGY>sy&J=BahIXIQ7ar$%2id_EX!x-S}MsAz{++J!>q z4j{G614*^ThFL6dKDupf>bn9aBa%3+-|v1*>2mcu1H2k_^yjCwtMSUi5dV^+E%&qA z#$YIpBkqH$k|(&W>;jpVUJlYf4LZxXB;~H?<}zU_oIgzLEWEImZ>G2q`k8veoB+M? zxf&Dqe9i@(=_hy=hWdtgg8{|rZq{`>8bG`uCSRe?B`_CY6ueP&lB+qb0SCdC7iMcl zAPz5d3$zli)ekS0aU($dNf3Da0pcUtearXQAHaU!Ku`O8XE#2vWJ2<<<#6{;8xHv= zp{NnBbq<eS}(~i z=$FA0=Woy1BWHOQW>cAq92PP!R`?SSiT+rr{#Y};ZpydtVa7!LWH+b$Es9aw`tkNn z&LC(we3e(1EcGtxmD`;Mq;em+`+}~Gp>|FmWw0txcqHB7+x84-P2x*Q)zz;3!7lgPe^zs6Bi3_G1b0de8eeC+i8KdFf0%=Drm@Q ziHCg383ireKIm3fS5#C2-sX>5s$d3&t+OlL*uLJz*pDJA1C82}S#{#dmZe{!zH=AD z#eHJq$3u#G+ePWA&|4aDIprHX57t_ zX-M{?s%#ZlUgc;a9UC2dZwBi2LNCSNNSvcSq%nZhk)Yr=cLK;(hD$Y)_@3UA2E=2v7=QXR7 z76=S?+~_`aC+S)oI46~N8`tVPM4qL(qn_=Y?Jixd7gnBJo@VKiMdSnXljPBJpt#zg z-ZY1ln565o>`UW_;)?9ehwZ^8Y5GgI9y4-|3e%4w4JOY8=^z}DFoLBpU997w?gp-MF@I?m&#mDK^Nu!cJRN4H?)4>o@sd^)uwdP zspqYVSGLCyt~b9gg>oH^?V_d>!dpU+)`M43frrJQe$Y9`)?w2hX?GlvEcTMGISbq5 zb}qiRsa{6kFPo${Z}~PaTLo@&ky3Z`-1sX#Wz)P1S%EQCb+^Z$mSpO{n>QKEJ$x@- z%eI$Gw^fLB${4Ss!Mu1sYcPoUnd|HB;8}=c!dEN`K0V^tHQKK3F^44*`mt*O$P;>d zPte0un@6)|JvC8a)r&dO#gu{|r#AuXz4yU*K9uE`a2jL2jpq}=Plu{Z9}=580ld^3 z@b(uO2a2OeGr5=@?acEzwDz?H;S00`gq|bu8_veZ z`PtiFOH!uo+3vmb?#gmGlHl3b-6*0Hyn8KwM-Xd~>WVHD2ER?=MpYAwdQWo0FUH{c z)+ZN$hD&Pl;>|DY_GI0dlU`7mNDgNfTQ1>MaOj{^+b*pal={EwhSIoOj%ljSonF3`c0!Mw}m3?6(wp%R-{58 zC0ZVAd{0<{@ACG>1?sXprd;6h*e{}LONLmAvZ=$5?vCUCIW}yL50I8Dh2@R`*Tu>C z(ukB%q$>*nZA-uuJr$UqW-1h5*Do)bA!AWuBSPpO^M6(l|Dc+>bHnJ_Or>M<>~VIr zOXBkQz@Y}O(0<3JHxoO7kgvj5>+~-O-?}^gYV}*S*rFse?RCV)Z5a#3zAHF>Jyu;Z z9aeOwtYj`od$+r=Xm-k+q`)29GidfJQ|-f%%QqsO2~I@C{*3ZHU?UC49xcCEF%3Xc z(TgcLel{=BmNF=JQ`7Tu|H5z>UdjDK=wbs7OZB&>UjQ6RmA)T`VcH9`M|{XVM`0Wb zjQn@5LJ%fPz+en}-foeolJwXzG0DSn+g1lju)QDjUN?LGQu*rmSca+$F6o9S8@$>6 zdE~bA<`KfE{V9-}B;I9Nm{pjI)4Fkb#WXK{D1g(Q)LoB)B~dr3tBW5&)NJMTO0yWdUgom{=kV&)%=N4uk%iYP2l|||4s~qwa z-MhRrx}I#Ghza4e-V_POiAgc`nWCK~!rpJFF7L_HE4qfVja%#beh&8h>$5y`!c`Tl zhfM;k&G#Hu5Rd$!j+di-V|X;#P&UQ-qo3R#0qtE@*XsnV-~M>S`eTs2*SY@rkMCpP zf05{mM@(07&EU>errZXZi{7=%3rfYQGv3?;o!7=^&Bu@I1NHfgu%`g0{nJkoadf2E zvFv%oKgu!PWn~uo|1&FqEJJa(gZzJ;@~;OsWYojtOsRXL!+g;DJ6P<_|Do%<&l;tgNy{wp@00xU5jNWUuU%Ei1{0O0r#6wvwz+T*&?%XWh^IKEK!V z-+jBEa-N^_a~#L}c#r&k2CKnWt_yOj&nb=EVq8Zs>=z)Eam!?Th--cDG}!Gmz+jPp zpM5?X(w6vuZ!fu8Gk62%ke};%tVe)~NtkDfe%{~b09+$1AB7jB`oFW#7<>p)KP1Pn z0tu>H2w1cO)2$sf0u#e;;TJx!ckDwLLFMXXD7&uOcYPEzw*?>k)?O`WhufQd)fI_h z{m_R)hV5l0kU_xgi=UEqG-_RMlCDBeKBRVP0bFJ&+CN zu2tA7$c{nsq%Q*$Pang4sUES;ViHQ*o;Wi^)Y1dlcS1MeL5zz?EDWv!lD;!Di) z+2R0S<*10c%*LoQV9ufi$hOXw-THHu-orF{un(*&pb)crPe=Uruo;+n$(ySc(qQ^Y z%=+TS|C#k6Lp%}u$bScaLp-k$P|&H|GBc0tWZ$HLE1xb;ZBR$wdFBvN0-vz}-z)yY z2E2>aa@vL$PM6Nvjux)RoXAnix-A^BZBkCQTfVQZ>egI6)r?=3kp5G7oL+0t>Ts)<4lT>$lz66BR$Xb+=b8O+^r$GJ<8o67MsV@f2eBNEi z{~`Lm@e@eNOY4N$AU6>SkQ(v1!P(w>F*^h{*BgF({rq3WD{LP?U&Br!gm3l=BR2-y zk@D>fFUJOqw$SU#-(gwxpunObow4=ms|@_eR(sf)Rx5J|Bct@`NA)J(mr9zCkGv7O zNOWV@`^Ll3aFzZv_a?!}e<)lpE+^Go9_yoP&w7!k^{k;o!oL&t%W4P{5Mq9P{;ZJC z@XFtnnQ8X@&z$(*$7LGWy(SJ@jXJve@`sd<#?p)qU6DM-3Wv&UzK1&_0GyYNbmN*i zeTsC)>a)^aQQ8mXp+T|sR7zb%4GkTpiH6#e@r;u?b!5;bSRf+1-b-?FTW$$UzZMz| ztE(~53kK00`h8#MLl88$&qMDahpz*KcIIV=!WIOMC}%H$H!L!q3H=(+sz7+(C--v{ zyBNj!0BZxLi4Xxgz}kk_1PGLxm&lwurKH-fgVu*y+Rw-OT_sS0>ORMmAW3jm+{JqoU!dLJ`tDK`baUL(X00}%QtboB)E&puc=|JOAigEaO zwbf0$S4CzPRg2o8t6P|%-F{JvoV?O5BdO)&HbYv5GY9vl)4rh{^dpuxSV0fMP^F|0 zd4eIfJSHPv-^X-(^a9xms0*?ZZP`k^*}gN0c6rAsoSEhk)m}83Kl_Da6knR5uTg8& z`;F+Dx9|GOJa<@{*y-Z1XZPQF5Bd;?soR4&5Ys17-!xQ2>tp4O-n6QHJ|@rtR^q8< zzd}Y-+KfHNXnM($EAa4Y1j~%?!(UJm@vx^A^HB_`B_ZE>{3M6_e;fdS0?0OxR!ojH zy{#hRBRb~7tFGk2>@*0GE?vnX=$zYMQfoHQHN9{d++2@gbPuiCsF`;f(iDD zdr}UCt=Yco$1bvcr7FKp2Rq(qkJeL^5W0-zEM~kq0*a1-#Lv1_} zJX-7EP6|o=j*OhM=-U#j!qU$ZeD71`81ESv4pa;p%O>wJWj+R7G0AdD@k<&{;E33+Y8@(QcPg;*R z)!@Df*11;`7^T7PY3_})!(B*^*XjJ;A=|H_=o71<1va3s2T61RkkMLTvQ|5L>iPEP z@Lx+OKl^{8m=;FYE94Fb=~7_Fe~`7kZc5xi#dN?3`Qd=x`+Iic7iVDhd4mHaOqW*h zO=G!6w`-B+Go9@5uZOZ1zXu9R+M}sPo8F$*OS+!O{yLe+hOCBcYUmpxE;&B+`EAUM zxh%aO)FNAs(_7@?)(%vvpBu!0hUn)AiY`d@CLR9Ne8ijEco8(~6D}}P+Hm|Gc1kK! zL8|u;cMM(Lmy6oD&Xay@@Yv{o#~3IhiiZBNwJKP9P48+!`|F5Uddj5Dg9K}h+m0W~ zL^RL?G-ddFjj@WR*fh(q|2PVO#tNoo5UcCP+tChNjg>y#!L>~Vw8S8e1YROlb^h5h z6%8PLfyc}8_(Gurz+(>X91e2nb%RJIXmiGVFztQy3_Gx+Mff6MRMoBcRVs9)1EdMx+CSwbD#_rxi_Zvw~Vxx^eF!0(m)tB0=kJ+*|xnP_TQIR0H5lb){vvw79t5)6R3q^oCR<^=D2ax1st#b%o7^!0BtDE5`x&^iH=Ta3Ym0O(O`B{4-2) zTE+<(q$X*BEe`O(2?@flPGJxCu}ir}1cASjG(1GL-yl}WwG@wBqHa<-%RB{ydjS?{ z&rNv1v+n%P^?0(+{!lq|=&Q2XcWxPMY@49Ij*BwDJ{@?1g0G|O8bAkg-r&`wd1dBG z6ZF=ezg_AA`Jcwmo+w|4a=bd4^~vDhK44o?`!_n%ri_a`2&kVIXgmlxltqpAg8uu> znTuaf*^cJrfG*NN?+sm+v_I&3Y>UKkPrIDCle@;QLpig_$_Sj&=Ma$L;aB6$PhIRBowTEMMP5sA?aGMnW?==Zh8wQG8!N&ojRF? zWYnBrpc+MzV~}lD=iLW?Zs`=ai;^wk1Q_xm@MvI%+T%++*zAV9gqRC1o^7E>Rf5N9+|f@$W&4+laIuP zo;mmiES}-3@2_Y4(2zi4c6#3mzth%NAn29tk9e$u>p+#hy7zS9swXVwb&9RQRWt*= zT-4jfi?FfrHFBr%$$tHAJ?=g2 z({H{GU2D?3hi9%zs7BXpxGF{n~)kiU+H*Rm}%75y9@$J;nrYVp2%D8Ie&?rD|t6G<>7$z zCxELZr;R+O@)H9|Lpz?y7@aG4c|HD`b^j%ZU6py#h7v@Hs#p7lG_t8*T!=t*2Rn`e z!YKzm;g4M;b4g`biD}U?IDlWEx}OFl4FsWRFTWgN6tAoYINc?2@QwXbF-1OwM1Tft zVt{;!7QmPnb9Gw_7{rY_qpBy}nT&CnG$V2|qcWJah6>T9nCwst%BBp0BK75?UwT zcWqPqS+uC1i7t^Fu=q5czr1YNM*PflikD$9eax>RHQ1M?p0Xe{*tQIygUHhiWp4wR zN*Rsh;+>s9E6ThMMTAox5f5!b2fL9m>vcMUwa0r*gfpSY-tfo$6-e(e2*)2NrM_k! z`)yp%>Cw!_fFc7_vmY8AqIAB7`&Ms==j({boT)8s1O26PjAm!(V>)k|KA{$^4+=9keaQSVk|D4^vc~1re6gcokbJDQSnVYU!|VKRvVlU8;x`K+&KBVdglUkS zc%W~*acTX41D3~PkK5b0ldiRNuYK60vuc-+c`o+v<)1pXs+-%gesBNzWdo18iQm4Y%6|M zu&^}dZ_5KIb%2FASj4OFG+WAvFiF{G-Z9R-PP#D-QP9~$4f@o%)@@mX4}Q#o2@yZz zqJoU@y-~kV8ff?)Byfh(8R<+QDTYz>k_P$3(v40q53Yr8V%jA?Y!z=^+$6^ugJoV! z`VZ~YHmTX&D{Kbt7d`p-X?o}JyKeNW+#@g0y5u74)oU#}!qjL5sXjeeeHf;Cx$My- z=aRBKp#RXjyApjGokju%bKn~^-MoKv{Ar)S>1sIEpW$eZT-YoC*J#q+x$TCN$4Oid zqOP1)u{%y4FXaPy>6uAQojpv*zlL;C&djIpH0*1q7ZrIm6uvI>F7W>Ls$#`8eNb>% z68<-=lZmzs>4Z28+wJ1VRo4Yy1iO<8Iw)h#eucqsCC5GgRbAxG`PVo5I8@8*K^Uc2s=P-0=#p>e#U~v3B+2;|U=UWVO@O1BXLBEs zn1hUjveVo{9Y?{8aOlYQQdrExuQH#SViFtuUs~R7>0Yc|z4p9sZ{W3&#s>}Yw3=Y! zccwA*)n)9vKj1y%_PL}RluNp;xN?;?@4~h+MRG%Ng?S*J#TU<5Gg$u+8Y`nru|`=W z-^IO!uLM>l^BY*qWVMAK*=*mPQpbtjPTWBguH%RxRV)0luW8TDIfX*~j-8g={45`qNE zX6cxud^ZiDVB<$G5-fgM;wX5~*yQzbL)i~2P`u>8LC57Ms~SKS!Y|9$_R9w>`iDx> z+(-1eAax1VBOYIyP3gQo_<|bmn|{#&s9Br3>B|&}n$kn=Evik7C3#FI@f;$9jE5}) z`?>#Tfs@F_MKkYU*8U(UIZ_HQ!x*bVTkH6>&c zL9Ad<{C-AyZQivdiXTT~qIi*?*LJq8KKKC_&bDqLn>|{e!cr7lcTNOb@TR~-Tb7T1 z{AAoSZ$DkOXHGZfA%#`gTi49ME~i0RYvboshUb?v)mDD|2?N(QyU$&WyZIL4p<~7{ z7q30_e5$Wu(}BZyk`J02_uZsgesM(|UK(mN8K1A295s3lLR1nthibHi-AK*ui0g5w zmK@-f=6PqFjep$-^aZX0OA*sI4?6)6vzOu-?C7_XFAVdx=e&jSlanV-GcXPer(ROB zd1a2}-6wl29uDFTzGOyYWmycebpKlN8pzOz1W|9Ok>iu&V!HVQwp~J*&vBVP1J%2{ z;SffQ89A*Lt0)?@M09gXa8&t7MOEgQBTg+j6qrIRQYF z0q(6Iux<-h7_o9IVbG`YRAOPwAlctr5(^wCYs}mGK`u|t8K57C4!C`1Z0e@%Vwrqb zx)XN%0lojxX6AdB6I<&uEiUk^Qza8_$-^mVr$LvYlA(b#l8b68%f6d=*LKl?UabXx z27ceGiAgVB!U2GOTPXydH1yO?ERhLaM8TqtXc zlCc!h!LO3Ocej5;v$MmsBtuw(A`Tx6V13 zHFAI%=1a3r#q-ca{h*J*n;*S}RY%mR??5qof34dfislI%EE}IE%DL3CdNsj70RB25#& z3)fkiEBSqUIXMAm-iu+)-`o#om#rv)6u6R|@$pvNX2kC=&emI9)^UMsw7;v?YCMj8 zvT-4Q6J+*cDq~OI*BXK6u3V6m#&YQ1TF~we42z;FlKiA$)+^+yKW|X5WCB8EEDTM` z$J;GrRQdVTIQ-a+FN`v8BZV!W(4ebj{ysGtP;S1TR<_Cwo_3j|MVEO}evxEey3WKx zJ+(KfDeJgty(jsI8a)8pR9=OBo5Tn6Js?6d8H3*O-MaE!j#h#^hto`amf~ctu(^q+ z?(xp2&YP*@8=u}S6SJk&i*LO2E6B}}Q3M%d`x1nMjfW~sTBe&TOWlSv6vI}05$oO7 ztEFI-`sIOA-fD)lkoKzy7-BY4SIeQ?HJR$_!m&BR7D^B2&6Ixmre=_@lzCkl7$P#*T#UmLn-BtvgTm zxHEyr*$LmKL!xbVl&bAZ(+e(`+^C+%>@~5Jb066Y-8a$!|=XFAe5lg&Yz^&UG0n&` zW#xP`$!B)HGUxhR@r94p0!!Y)T-`77qLI~z>yW4E^qgyyDs5~iVUHC+Ri`7q(&dAD zE1p)nVynl357jPLegKuz_4#;(=R~5PvQT$R2%9v%(0`V2>Z^fU_W`{#QIm6r;JTN< z-25m@1U6-ZN$HXCnH(Ew5YC`Dq~sgLyiSXEZO&mCjX|j;gxm>vO^^ntB*#e5qsSxW!zW-^^dR} zt!ySsW=xLaxhXo=x(FJy&P}4GGMV2uMpA1(0o6Cpj%<*k)O>s9D`4KUmezh{a24E9 zMa`R0`QV5m6?%aTpZ-9TCOI@&H*c3>Hx_)6gwWIDGK}QFc?|_CKla34FXi&VV}NacmVVp&4$Ep%v{e{dmFq$jy%)nupe7Ueyl?_c*-@=sxc_zF4v_eCj6# zjwNpMAfXacsWpW1p8$f~0dAeE5N^hW1o7z?2U4R!mx?Mn%QtyV%cza9VAovXR3}sC za_Pr?kGtF0u1MpFUbt|li2B@erc_3oWAgBv^0!Fm6&j>slYbW2uaC$V(q`Umv{MoK zi|kZkf^|A`YE>R|CU)}sm)D;(wg{_8Y$%{_M>CB-1&?Z#IAs!G-gZWQYr+s>92;Xi zDOE7KH5MDK`E8J0j~YT6~>z}JrXB-->rK0#0vMF7r_>57w4Rr<8J-- zhG%rqDk-P8?yPDPRzQ>hWf|G7^kyYstUjS;*$4{e6i?3T;M&`Dt~1F!Ac23ES~Ju? zLG`Cuxgc9XP(W1>)t<-55uw33MaXK+VN#Z}A@wBIt;1Y27IRbF_TstNc;Z-vvk63; zT1PuHu$%93oH!rF_}wDvylU-zX*RXhX+rI7`|;RVUHXYrsH;1Ticc=u)M=YF_^394 z-MouwWmg~s-Q;|$cOG6o`+y1ld@s0ysS_GNe;HoT&)>F@L8-cwas-DKcjszUi&V1W zL8uWD_Yic5B==MooDKf#qc9p=Vrm_k3x3Yg zf634rSIi90*u1 zFakGx*$E?G*U+TZ99vKS`+|{(W@YFKEOh;f*+E`&Ahi_}e* z_ty=UamyeP6^;UDLa{X(nmDyH=Z(wZv$AU~O;^g|YaE_;(H{dv__?0`2Y@WpY*|}xRrnGm1z(We^N3Oh>jK ze(qsV>#WK7ZpSo1PCf1?rHZigdbZ@K&;dyXgjvouR_OuWn*idz)GvNKQ)O3L`y+NS zF-_DrQUMkRw|}${1RHc3M0Pk|@|7T`x|x}D2Xk7bWtfhaaLtCoVQ`o^PL*+5QQroN zas?KAuO<_j8xpiJB|#v7;T>Bne{t>3 z`MegS(bjaElohv5jlUJweS#(o>ritH*{CJo?xa5l_vV}3_;Q8k_K^&Z*6V-mry%mj z$(E^9*fVlMD4n{~YP_{4YHTG%@$2TbY+^>E<9hQS!5FDn8uS1n@tiDC^)3`vlvwFn zy+PD8mbJ9=w9X<@{OmlHkQht;u-DsJgCz-J%{$aa+unuU*3(=)mkxX5LOr}}3fSa7 z##YgwyBPhq8yb~14V5ewEl0Y+)W&F1m)ZGA&72s`rzgn{Pkje~o4~a;Mfx8CPSL?-0k&AbI=X&9 zsPe^!|I&S`4qS-qd3gfoKds`YfZt)ug+WV zY`+}4j^Ev3JNkG_5rxDh)L1 zQLqplA1p}QWr&4xWb->dwgHAzNhvU%TaWF^YIQAh!dTB9E$Gh|COo#^v!u*z{qA9o zoAo-%#%=+oqf~d`;hx?$f;J;)9=@EaolT{CL`}TH{6D`?Jl;2KE$xXgBTt^bL8JB( zF(;V`Io-soD%l>Nqd)LOybokFGdyE)5Lq$^h1%`#t1T1!EfcWdZ z_nY%AUVd7bI^DB_&%Ij|KQ`@*-m!?fRD8;R3hOga-}l!kn>5g?wTX;k677mzLKg+) zXOZMw9+L1Y*CUpO6YrRZP5W4wp3)fax=|f$+&PEbvaBNc!~LgujFPUjeX{ev>x_Se zqqZiudF(!PEJQHA_b4=cPEny&SkN#uND*_hepT?087{V;{f&C5GJEN4=U0PjBsi4m zO|OL8PUy)xx-v4FJxi%Ya+q17sAE=So)V!JxvG+FNRnTuj<0n(c<1!p82_NB{gCxZ zRBP11UYE&{=H}JFF?$$5MOGTrx>2XQBRL%q8hg;H^NXD$m^=)VbaVgWu8I2OE3nV< zc(28~@fJmJ7r%9`c_y#`Q$%!rNbTCZ8r=q1pL~WyU~k-xOt&0@aHQ@EF9szh!&S|%Jw;%ZHQJPr8&h$JXyAYXIOFIh+GOvDvQTg}s1hAOqvF9y!mkjx_dpo#& z2KfTNfgTg0CS^_G_4D#dLH8DQ+!L8)5wEQ~lw_Yi_?DYqna^iGBZr%)U?6q$Yp%89 z3g;NF9E};L41y>NayXqZY8&Z;yJ3%}FboB*^I)DOs#0rOm%x~1dT*zX z!BeLFQ#`J?Crc0wnRQ{>eSqE`Tfb3tUE2gZ+EXj}a0H?lY;tysw2RlYGzgnu%)7gO zm8YtMu~p~<*_o-3fgO8`29+$rm;3u|Zr%Xc?eI=0^up<3vsPz48}Yj3JRQ$Y#Pe&0o3BOV4lgk$|El4a^(Il%iB4YfwR3|FB+^xy%&-i14ctaP= zDMzv19k$ELITb%tzoiU?>V6|yx5n(Y$Izf7LVou#>(`=^S08WOLQ`tSqb^ncrA4Q* zL&q7Boiz5;+T#gVj)}?=e^7RfKhy4@RL;|z#p-?;==(G2<+FWh#!?eXANe#W(pj5-hLKxZ0& zzE-l_*x;Q-)1b9X2lZqtVkvsO;iF_F!x zI9TwDNzOM|>>o1?B6_#~CY(JMi2fP%YS7#po*(F6Im^VOQEWKS+9Qg`TiIQTbF@&p zi2KYem>QjgfX%Z)sx3Dktyi{^fOoueB|}VM{;IBAF&|D36&j2S*W}1(;=h0F?2kwm z2=q=PmS>@#8fkw35P$eiFN|5JZEHHP>`-e7DTUFc`;H4#@YEqog9I_c`<9nt-7=iz z=oHZSeEUsWDB<-4)KkBOo{naMc}blbj1j-JPQ#4)08tZ&)k(&qx*|t|cZz+?Leg;Ul!Vva2sGUtM9DgujItGz^y(1&(cl z_E%U%ax~HU?f2UZc_cWR(O_O(O%V;iMq#<5F7g4wl|=u$d94UGX5mQP3D3!ci6))z zV?S*OcP1Cyn>tezTzN=v3ouD6&sVeF6))h!8Rx_B5GbQsk!j3#N?@egA1vq#UmN)$X; zwow*N*Pe+C0=zWhnv|RmuZf$MG`Y@N31QClhEf>ENs{Ly>-(wGVQ8z%S)7+_RWkl+pfa_F)lY(l~w+@9X01jq&Z-xbx1 z2CWD0WcEEGd#=#;|6~?&YGp2zl60p!owdN_vo|rVXesIt`Z>~46UcM(9u@FqUzxNH z6uvUv*mlQa^mSW5;vuGU1f^Mzw|@4d>wF0zwIDN9!1CJ&3bMylrYV+*MQOLf7cTHU z#0Up~Aw)4^(}gNZWO{NX#|37_w0usx(iaLnDn-7$h$&KnOc36woefhw&*Wk z4$Jlc(J)DQbyG+cIo`daal3usDGjd%b$Bl|ezAs_y6nzsJ**#l25?E!7-;$P0v(Z6_%fKlPT zqLJI^sOwcY6FE*+_E?a|wpdy2)zEzaECsk;?|M&rErjjwo_#I$)(tN7u%(M$Ut_*~ zkGO3h%eQmu&f6-C_y#}LAb<7U8tcaW5Do*0=zEL#llMfUb+!K7>2G03HA?f~dM7ji z2hl8%a_L!Y_z5?^ulb-bu~gVJwgIci`|{owwro3zJ4=Lv#Zl(5<53hWyxox(hNaZ+ z$?~nH*|c7Hr@eL`&8{NL=T2UdWT&kxhs@p;OJf9=Up?lyWG}};cM-Fw zRUqtMcv!b&;bxXbV)K+O&#G1ZLqjE2sq4nx_7S1VjM~KG6<%tF@3mW-!Rzw$drq0Z zSl=)Q8;kpFc)kd`%l5M?n0aH}*M@-t6-)SfJ$qnRW#^V=y+9>NxT0(fy$l4v(0gXdaAO-zbU zN|BvTQx`0(jI=DXG1sC9o8;79?nr6PDD6L5y6wNGWy-46wp53pQ;2h2&&UX5t3z=P zg@wgL2v19Dy3V5-eomQbueYyh=L_BFmEI3kDNW~AUs?ws;}7C6dDb|7=v(&*~bpuM7r?Si`FpkTvR4^KzM zVYDafzqc?FpC6smMf?)0wdY}dO%zzcYzDR)#kAL`Pp#*5cd*Kg^>GJFfpr4~4$aT| zou=drC#f}vRlb7}uS`E11D@ON>MVF*5-mT%o!WQ>HVT1RN>W&+%@ia<4DO>y(z?F! z`Nx#T&+Y3!2LoIa5Q?lxpEB#4q9 zSlhb~ns@f*wa-3?eb+BBb}vq+9Y)?%_wEa`#LqPhRG4Jfp^%`qzlSCFU8l_1SJ@A? z3Fjy{z3iwgIfb1Rhr-2qPEA;2>M$DsSpczNAtdnLfPIC%<-qDb`On6jYjJpvs55~Nm^e8IqpA(zL7E?*^0+9VezM8U$H0;jdH9*qNQ3~Y|gtNc-t-Am z#l*hMPTH{^|9)33bwQa%cKzWA9P(36VG&Z4Z#n+CVfAH_1%*G=udi<j$tr)ya!?n? zTiT>9iqaFud+HxMkYw?wHY#LZVu$#{0(yVvI#W^h%h$+la3t;L8QY<4<4YaC^J)T1 z9k4R(2L2kFQ_VI*#hZGy#;H4;37k;}MLA&xY^$TZHe-pZNIn~&0N}l&IOP|~+yntT z%OkH{HtA*gm?WoGLzA>=SP))jg9G9p$cVSU;?QtZi!2F)G>X>5OCT6q8;mK9U;4pa zN~93Ex3Y9F-*~WvBn6Qc^%{AAae;0y5v^`@uPtn*%CCXRtNRKy3+L2tvqwt=F1QRMB*R>rr@+gz205Fw%YwOz9kk$$Yv0r-UI~Tg>b>ASFCI2wI7|f({ zza7Nc#wxL%q4CbI(b+ADakhsmq->wCg^s4Lh-43MmHov!=zA%IHwO9F3n!wM3l=W8 zJ1;e7-RE4*dl`c4td~yTFJ{JmsV5bpP>xU zg!r#PTc~k82Xq>l5uZCH9EA_JizYTR_MVtDlRiEK85~L7>!m`Qv^HzbCdbE3lrD`5 zA51eVJ?a}b(p)z*_C6!%-TPp$*QekCjgmHP33vInjyD)h|Y!-q*kkAostT#)Ly}QSjTZY-3=NOb zD>5`oa%aj)@(_ihwpxKU3tB;JP_3^Fh5_A1O5q!h;=+gYUlbOJ=73#J&{-+WYVhta z+r8SxDlp0?;uPs8Bk|2jL7~tGWf!``sh7-TEjS;)YuO1<25qO4`bkHUb zSpp=nrz$U~C!TJS>znr-l5AmAT$D#Vqe~`as52A%LYVud z`pP7$*T5(+K)=`$T))d3!NdSnv@lLyl;mULHXz?K&WRg&sXm^>H_-~lVusEp&PMN|N!smOyQiuFv zrjN531s7ix`B$;s`>n}yGdQsufK_MG&*j*BGI7=jL=Gg}uGoH1wB(yzc zL)0XZmkRJp}9aX%U z?;e(H&^8Z(?U+6J?q8TOq+mr^m?fqO0|AgjD0N3!=%!_W4#tBQ6_?YkV(~q{hrQHS zU8B={F&zf3mEPM#ObAmdJbXU_WUyt%=GV%wj7Dvnc*%I_s`$@)7Zi4?t)qHvQ_#(SRU>yJzycB3J7n@KP-s_Qc5_N*W+`~P7jilJf9099isI&-si|YZnNCRXv z0$%krLDg!RPe?aLLY5{3+?DtbQz?4v;a`+>gCww(LYNn3@cWjqfE7@w<>%odi{ycI zqZ{L9Y+T4?uJsv*u|Yl|r0BEDt^?srZ@16?$YR@`!HX7c1uTU(L#Y>L`XioP+qhX> z`wKRW8yDxUn&V^GS1)tPR#?KYOt>tf#JDXOCA4$n0;;}hfTxcKuSmmcyW$X8>TO#~ z8nA^Ga4%U|F4kTI_rwIi7By8XVnT`K^jV3nMB%L4M?H!9oGh5gE^h-)L4ObVowy}6 zLF`LHd8%e_>f-OmTOa3iyW)p(h0~x*0J?L5^6LH{FLfisGJEZdLR2lOq2k$Fa{ZU2 zm=czd;CHIU=V_No@=X;l8Qt9zSYp`9CJOUOI{8<>3D+r!DnQH3_nKjsr*>BPWq`(X z3)@gXEy@2F(BWGXBU&vLilmnmuZi1ybnX^ulpd8X^IIOihg51lz?jO&%Kiykc~Lvg z1VD;K?ockw_Z8fBGcMXZ6+{`+9sAJcibIgV55aDat@QwQgch;^i|jOts_gWgTNl2j z`=ty(%`AO6jgDz=Iv$vU@`xR6LOb`dB`l7M-_&jfV5Y#huMCi529QcqN(i!*CPRwld3OKQ-K zH7(2$v#P25b4u5ix+5aN)d@i|Tm`g>jRYFsE=P@*z_-IGf@M8dO(?XYlDOz9@C;E% zW%y;dc~6T8VllyzP|IOH1rhLdq-}t;Jj}R(o#0braus$;-Km`LdAPx4Xe^+zd%Y#i zkp|U%d)cT_cCTNG?t&o>P8HT3y)~>CG^@&cG0uY7L88#{CxAwP8HeI=pK|krR)rJs zBhxRwK}*g$0d$S-(xMywTVQr+owy8;KTB2urpa{C2<}(AwKF2v_CJ)85@5T9e{0HN zw*k_I6++rz*M$_2d1!UZz*&gZv&d~T12}(w?fr0>Z&rWJe^RLX(iR{YLu!1R{>MB1 zDYwpT!pxs`Tue%qOgUL!>G-K;3DZQKD3#u7M%Ts%sXFt}(etZFJ{2AP45d@puJ~!8 z8Q&Mpufj_3RU7tfK-`w8W=HV9c!jFgpWM1|_2fmcyg>DrkwwukTclDLN%2nIUz8uB zjo*Hnl%1sD6Zyb~u~{GvXDj(W|Mr6}R~1-{WB3*HX_|QAI^eTO5*!KTOyl3BY#mp+{D+piSm&zE4Y&Q5xG3WO5R z#+am%%fKY_V*?fj@ggBp+pWPH>Gq51o?pVa0M)8hx-5ZxMRjXzh1v49^z8=8br#um zAb8B!g}>*kg$54q_;r7USI6ZL01$h@>Gd~%GqITeHHyAkuL0S`CqOg%j(h96Q3N_o z`@SIUIMC>TAn-PXgyiJqU4)0{-p4&YccmS|CGL&9vj7iO8HQ?-fKVXCQv!C3ehav< zLt?R0Pu`gM+|za-->kRmzm4boMKI|N8>64_de7SLHD`N#eoT35OYn;p7QZ%@{-1a$ zV|lj62RaWz<6@uRcQb?`l4<)*HCl~pbW=-3j(mN5=L_s8&Y2wj6&LDwWTwrkpv6EV zd-Vy{MQtk7!7l`d$%QS=UJ#~12%0M?ZQff3CLSiKU?~8h2SMi?4ZnMycO0?FMqkJb zb!=8P7K~j4kYllA4|Xg-NKt4CKD;$Yg9aAH_Vn@6WWi5Hm5rmRL`fi8jMfQpG-U4p zO^Z-`VRF;<+teMRrdnaUMLJ>Yr&ReeHbh?3XdV!e-*<}2ub~YqdRA2E?vjfxlzjPI z%eBWxLodGk1r2%-&c}7OTsOyTZo;Mu;(}op+2{&m7OfGEjheDxb9R!)E6Du9*!Lv< z6AyVA`D3^=dvpW3B)oZ&btjDTm(Y|FVNJ&!O_VGjvcY@TU?1PcXc&F*s^+A$GS$nx z8g({WG@$woSv`_=|9vv}8UW@CWUoP1rG*;P7Vn56JXM9wQQ}+K(g~)Tya2VammcdZ z5kp@?{QHVsr$rAS+&z1{VBPc<4EoP@0@!&G^}*916DTy3y<4(Eh~!JogX6P^iVpk< zA3vqU+%{=R%SapvTduzzm69nkUhqJHXyO zqt(^#xjKWRkqR?S&)>c4-}i0`#Z*55OjAWyDS^bPbFMZxa&`V@YU?u$Zpo3 zeNh(h01*z|7XUiQAjSnK2dRJbFa~RI`Wjr`>*xj>6UwnS*6A;Jta5I>VneS;h-NF{`%}T_fa898} z^BqS*1gFyV;~Uv-p8HS_Drsn62_KzFOAlTUEwBg4K}zA;p#g$v*NeSsncN2$`|pp@ zc2Orb$E$)}nFgp5`tRUQJ`vObHcO_7Um)0~51%j9d3JssmX1Y}&~l*E>fAKbL)y<0 zTEIX4)Pmn87himh=4)5Rj=|ca-ycYBHs!!raxgbhQ{zhp&)ER?CHJ80q@s>jyyF8i z#s+4KrwZ2R&=$IJPtGZVJC1g7kzIr;d?B!8E>hIYR5bBFtX0Yv`J2z842=tH<|v~n z^#IM(Gb)@zRB!PyNC>d;1TkQRN?i!OE|D!XXAqeObNe%q zy;6;e`$5OU{Uyw&n40~ip{u3;Zzu^qJA#kD``lU=B=rIfctTG`l-b!di1-`l*4c$> z2)6tWimHQe6J<;rsU+UuS^2is2q^J3S7$ zAMM;MLRj-JT|xg=Lc{Mb=5r%!>XqK8(8c(a<~*`v)dYu^7EahfbI$u>QT1n6zAxj+ z{!Xa*+6s3rN>g)O2ENNgn2dBD03iq5u=x)Efxu;q} zXuXl$hf%=&#%C#2?Z0Qb9Yu?Mu6on!7}`Ain2_qf2Km-M!93X!ifVh&drBY^ZZzcMsaj@~uWEkGNnk>xEIqSv#Y#GV7 zQBvijb*=ypU@-S(E9McaEJ6~DmoNqzy^HZ4w%=FnVO-2N8b3Dr&4`?E(zK>b2bV%y z%nci>3s=ENXc=<@zLY2b!Vkl~HQ6t+JP(@ajrchjI5s-<0BS70hUb*KF4h5q-+{1W z?9@^F`=oCkUROLq2g<1TM$w3LUVMcgNIvF!a9u{v$X%y0W3ep}h_6@gctFf{vWSi+ zadl7hkNr0|B)BU!5u2Z{wu_!**I#6^q+?W%AvlbEKzsNx5wQgHkZdc#qjFenfC9;O z2jR4z>KY>Y2ElJ{E;=|5D&Cj7w->#N?tb$|D1H76YjW0F!v`ID-)G8RStjPNTrGd~ z|C@0h-&84;R^k_GK14R*^ac* z2x<(V+iF9d<@E{&D~wI>G~@F$kW@r-SJXUtK#l$kX7;7O9jN(pZ+>uOo|Z%$av32jyTQ*9H=B!TMx4@(F zpk1#iwfa$Qr0De#I@Yvult~S6y6`8!9{N@4R`NOhmSNqy!=;J{)>RqxM(F{aP*D{z zS=jW{4BfL9Fdf_~M*tx2QKr2F{peR? zIQrVJqG|i=h`^-}Q_?`Pvd--Uu?uSLQa-I2tI`jgRd;FRR=^HQy(#xGKN3m37_Q$}ik^DzRhY{q&S@;3{9&sAM zumcVb&YVR6M|k{Ll@aHLQonsREh?+SZQOMQ zcH3&g6G0Wax44Ra-`P^@H-x(RgFK~cJNxYrAmd!TgV->uQ)A>vd0DsJyf|Kqxjwp!FF^7-tp z-arWr?Ei1ltl`%Tk-!^4mZBR_VMe}6#?%>}D}AgHovg#M2GeaP{Cyl@OnQ9w!w)7b zQ0F3KtO7|^yuy;!)D%20H}~MvN`ZH9gVHsWq+S0>l-EZW7=-bNUanyU6JhS)N*4SO z5{mNxO-%_TMS`t>io;)*+~Nx+x{Zh zk=*%PR{-&e1MXbd{Wlcmgm~HZFT=wxyf;mRCJkWgoDH%Qk{omGQ6=A@-G*i>E_(+q zOu~XX&2d@a>?A_{5&T70UjHTh%dTA5a|WpSCcNpbUISr$Jj>0PEgNRW8XtfISQ8HZ z+|bg+rPj6Cqiw=P@fPu!7%vfw=UkNDRWOcMvmN`#lE;Q46@J96H{Qc61~V5b%ChW; zXm*u!ID|k}qYR}}4tpQ% z^%I)@99+SZ<n_Xr4=#@7lJa#T50YNl`b+=n|$*?sHpy4Dg3 zSSTDI`fCeFg!IpYoOjxJa<5s@mLvZhAHr=HYxynC&rd;P&6i2Dj#3)8J;nvC5tuUm#v;Y_LTz3Lo50bb?Um{!ZX*ADV*3) zQ@BdS(&DRF{`F!&Z&92*Dt&xq9LP?o%U`vtvY!VVXAP##Tre;VIQ4Fm;GEVEtrnz7 zSF?SecP{fTOs(-=Ws$uEe{f8YD%qK-v(A44AmMU`RebW*;41Dew9MbIOJ4pWyffg4 zQpI~9ELqQTjW$&!uhDMr1dJcF8kP@gqcTmdis_(Y1 zsLp*~Yxx?hg152&UC6Zi2qA5P)RsV^Qs%L~qGDM~OT5&V1ARnoK3b}XT>6z!8XaqU z2#sY$K;iWYICBk{O17!?y!h_Igz$_L0Fs!VygH`2y;qPZ@fmb3s-SZTHa3%BAO z*iP8ixCf;HCmk+D`kxnb@2vzO?p{hocig_XausFoK$g*2)VQ_CpLYgg5j!uaRya5s zvD6x+1@Mb!aU%h8YPL)NfShaM-}l>HHs_nCb5O@zRXnpvG;d^#(~;oA5s{4qNf76J ze!Wl_JdOSrJ4q={O2*he^K>`k}R`?it?k*&K(07ahp3r zd#bR$x;F7tpvu?=G2GR+Q4x#**`xo4Hs8jTIBwUHtssB=Ptfu*HE^3%Umz*tQ+psw zVOb>oF%Dt&oqhhs_XJ8_+$_X|W!R{?&$`PKaX!HvuMetR&iuPiUvxZFmf|99_v48R7l?{4lF@81P0}z1avix$RqdgE@1e=Oyp_nPm4m9ck=|Ha2Wm7hYH7m&CP{0|7sgkFF7d&v`hI=9=s zxUsJ(4&x7x+_v+w&Q5V0VG};Rr>SLeQ9<#p-}p8?a?$^mVp|`p%bk#eMLh*t=x{I)$4ws9{=1i{nw;2e5rd~ zsBYq(KU=9I;5kwoT%Z_+gM^^fRop$ZTFb^mF97s3j5F~0TWZI`1Ee5felqG5g634N!TY{&t=N zT>H&RERr>^#;~!(v&jJM1hE$>g?T$5fzdQf6P`WmVQqqmIlA9LTbiKLo+;h);@BMeiaEzmSt#8e5 z&R@+98#^ZKDmI@ZP3{Bq*(mT_7otk0qPaZ>LrNzLF}p>i1-N{Ia>g(yaLBzG$dS2HD^6?JNPfqy7!DRUT>30|soTLk9p`D*_vale z0k+16hC36muXV4R+^+;TIeEdD*zfsXlhiHV(*!ntIyO1+fi>a*)G#$W3cq2KcPRD+ zG9qbYU$rc|h+P4@Z%gK5a6e|HtM?oO%2U68Ps4-j{Bx#}o>G&SgQ-ioh*iZ|91a@T zGXH-EZQ~u+0yr0PbD;!AgXHz|?B0j_`FmT-6cRU@|MgL-Nr|sQYj0Z0051V~kb5-R zg8-^$*5>ge0PEA$E1w?-ZQn97=z-6tH|Ekabp0IhDgpSqKF3Yu!<-b=0?oC7NWa^O zuHkZ$0s0l_Qf|0VA%8aMY)%&}8f6S(D_&+mo&E@AAm<1^GVS}PyLnXB4y z2e@JA3H%+>Q=MT?`xWnWxYXd1R5Bhmf1f9h15cKO9lB74XshOp3jg@rZZ@1ePK=RN zWGLl>c5*jtJaW3ML))_XmnD@usP#==4!$dN}nfRK%bA zBR*E*!kj4ITY%GH@=Ce&^{fMQwTXRC{`s_%jL;>>CK|CZyrO7KQkuk&QWASu-HhBu z)KJ&$y0e6R#d-}IaXIG+D~r9OzGi)w0^C4Jzq8>Lv9^q`_ak6bnZ@77n~<;lumh5BP6}h8^C@(zdgNCZT1(a0&_0gR$d-NAy@%6?{QK6RpqycOOg~ zA3jp_0*>zwe3xyy0R&M%t;Fx>Hfz|2LjRoIgc2oA1M?GMt^76BxnDy+KDZaby99Be0{sDk z<)KEzhc@(kSAW5PbvenVC>VM>#gsy}ma9bcY3nMXCF^?4^nV0|5iv?U7;VliwQ(eW zY0^0;BCjZu%ZGVa)kNI3JJWA`dU{Q_zU}t7%T&PJD(kAqCba%)!ZrkakI{ON%3IGH z>F;#F3-8P;C6n$?K`C3+1;ux^i}%ZUAW~1rqDg*@HOUnIBUJ z7H<0){5@v>&>@`@umG-X7TN&Y$U!(kA$2}a2^?~VRbSawhnk`UVp?7>P@nG#6 zF{GtM@@0JAuKnqQ<1@ucGjQh!y5popJK&EOD?PRwoYE8`oCDJ^FwyS3g>CbW#uSx^ z(2{EA#WPN;`U&VF*z#A;t_8o*4=&H|DKVb-G$+^Naq+fa!L9w5<^b+pZI4woYWbEc zyIxh&xh8)34zG(+)tvH?DCDh}bh2p0;7FXCDz{0d>!yBv%}7n|(u8kEgcQeO2nINv z_^U;)p7}Jo%*VAW%@a$F8+(N(GfNtR28yWQb3f!fwkI!(b7R)4T%kvAr&{|ogV$TX zKd%QG>blYlx1C?F8z!E!#XM zi8nc(Vb8dFauz^?vd{?H_kf`yPY5^WJETfmNQ7H?7_%#{)p#R=*O+V*C;9W)gLiE9 zz3q|Jpnd=)iM9~j?5S+;t8YVDbQ`Hj+cVQuHKp~&c&3qpP_ZIk(zP?>F}h^iC~9)_ zea~Fl)ff|i{mFKY;d_X`Uq~G`N8`t_5Vz$f+284hOBNxY!hhxIODB){a=ZEp!ZCro z7a>O&-qj(^Yu>LZoz7!9Wl%2-7bc^t?bg9#IFByI?1mUEl+>EL+p2MhNnf**Salob z$}UpT#ILVEY(sD@1MdZTC(1(;e##Yr{lwI_O>G@+K0DnI>zp`y@N!i7gZr~g!q2jzyJU%|G zJ$_){OU;KNCZuALi24D05f<~~H3k3=RCxr#viipj__TL!t+M?*{dF6x{X#JxrFt9b zU#;G7{4LOv0yejI1`n=+Bh)U{ZW{Q9g72&!xyjwYb>1|-@&4Ca60Z47Lr|Y)>yXe3 zT}$L+yL+m$v>br}w zz9ib-r~>$8`8G_A-cGRNG4@^ecVkbAjqdxIq)~C#Gmzvqyj-M^LxP`Cf^78bRAl$> z#So=-)Fv1~;_ehlPH1Rf-ZYvQq8%3qy!+7eINmh*LQ8l#Bm)K2JFKg~@s5u^(f{id zgaj`8N?9Jem9wO$4!*9d>(j{GQ=(NRnc6Ps%zFZ7Fdjec{GS6&s>?WL3iqx4b()pE zRaaRI0B7fBwDcPZ$$(ca;Q4X1)v4YY)QD zbG4^Mxi>!YjdUg@o8iS&&*U&(0c{Q$v>BB-~ z-%X5T#qT3h;_NfMdDG{9K)?keGkLD{A+xRaW13H=IgALzt+yUQr-tWvMWFUy!kzI+ z@w(qI*kBR49c%9*JvF!G(-|=i$210_#$uD7nZBzWih5L8Kq%h#;AD_*5(}QCcDojV z`w)uJqo+sH@6#LrbF#*5ECmBsB}0lXT*Jt&L9Cfy(6v0;K$*2oXLjlh%J6F20ERSK znk$hp{R#awc;T&0<$S$$y9EZ_ZFKfLc{r@GQZJ+8ib$D=s!h(O?^`_BjO#5YCiNQI zln_K%Rm%Y_Lx-tz6OTGEVkg32w@13BTdfh<6YLy09@0`Ba&uFx%HpdmA9HD_cmiO$ z${``hlb7QO$X@+@yPaH!D0527F`+Ikk+~?fta;(S_-b=F?IH~`1his?vwuic!t|T^ z?Zx&!le$9O&b7_USW3pS??uYM@Iy**vu4Mr=z%-4`?%%a9f!zN5>93nDz5%&Owts< zydoF(@YZQgLeh5im>be5@KDcpBe^?mr!449!n?f^x2_nYXGF3TOUJHob&Cp&%O)Cv zGA&Pj0~B;zI+4CZt;z+xcqlX2@B6_61}BEhS@Q<_&y;@p3NKc;cB}zukTtOsPWVny z_NaLQz%YItcQfgv*FUevksaFOL?W2pJga$kbtkch5<-4FtdZ?0-Tv>Dsmyo=zju@Z zc(n$f*azEtylR^1gcM|KlNWiccsMd8d?R~8)PP#gqBG!)aKL?85!i^`3YuV+mDgB! z<3+-!~Ppnt$Ui0|C7=MsdOZ5Smsqwbqz_B7#88$FVwI?d!~~ z%A+F{z)vx36E%Quj6NKhI5OF?;IKf4D1$zp2f}9h*0j0<=hCJdo<^6X#+KS;9Xf~E zeL0OCm$zolVCx~yaX62-28V{lKQ0POTw_27yX%J_1Ay6{oHp-jk*`pr$o>*-jJ2T~ zbg}L4i9mz(H!@Cm*k^keQ2)SbeweOM2(TeTt7^8EcXbZFySMX+DgUcmuh5XrgpY ziy8VANUb^J0vir*@&*n+8`D!}WL-o%I1EBYZgHI(jZOKYDU2xN4jxmSQWx7qgV+jX z+TCcJcIIhm-b7pqDLR6sc!}(Nac%c`j)a6%Wm-K=hA{J-PTP{g>OW?cLn^=gg;TF| zJ)D10Fs5oeE9?Md#cs(PD{exzTC37H$%qe9lm}#RgI14+i=dFbo8^gfjo)It{MD-r z$?SOAK5B27QH_g2HbJ;lmrsrZPco%w@%{VPuAsW#(6#X~n|uSCrf;26&zdfBWSC$e z>!tLQ*sgZb{IPyBpQoM-6KI2BA=Z6x#zWQn$|AtHNB?^{v7t)EDk` ztGmdjOwsc!Vm*~)#<4)-VSgJ_m8R5)6pd)HfDHEMBj-(lFL|nXM(~V`Kf0yJ1X_X% z1Ks|i)Uk)=PlXVZ-6qJ29NT%;V7A5`ID`MoyqM9mbm#?LaCNDxf4noY`8UhCa9)Q? z4IhdBBPS$g=!eWe;kcOk)vNESP3!kTjWJXedMOIBM)_nG!=jM<+l1}Pb?$adV8Dd?BP|$9H_on`{i>? z7id+r;UtE&K$G^sUO{LrV@hHkWCjAvCQYy>*rJ0KL`}=r!1Xl~&+GF0XXOStk4f+l zEhUm*pqCIegc#D@>3o&WilS^dF*I3$NL=A&S-(_ef7jx@_x8j7DA>HC{q*vC%IT3D zpoYGz+^}0HLWC(p+PHr}4J19V-L^+VpkDxHy`^_voz5}qG;-A>rh?5J|J*#ZEnTg) zP<(B=Ynrx0TEaNH{lt?(o(sr{bSb$5ju^BX<|4r1^LbbR(~~^F2FOuQaO$A7d#8`) z9TFX5bb}R=X*iIfoFbp_jNN*?9wnfoH3utrYUsD$qHm`zAA+0UgVrj{*wD2^7n_Zn zp5d|YGF^!=-T6obilb(cRyOQ52O4N#U;pjOw%z^VG-3^XYd>(@*GT0OPp3yJ+Jb1N zpc)1f6Zy+(<3*SEE9WLzS;aXFp2dV3g4&K`gS(NH+1ddliE(#~p|85VW`CYGI?aLB z0v%n~=8j~gO)JK=SfS4;ppb39S17-~ni~Lhh$*5de{xK>eUXF7YY)Cqoi~>z$t+yq zcexGHlH0J6URZJ)ba|CCc!=w#vyud9*fq{c6YqdyyNtDnMEw_KnRfY)UGIg=9Q}b2 ztTCzW*=*HxpF{KP4eCNmU2$>_m#w#jfx{8ot1Pm60;5mGGg3Ljq$Gu^=Oqf8zI?IV zAm!6BwLBXxGPWu+cczG;m?C&WjnNN=U#Cl8zoLRuJLwAJF+KTr2>Moyodrvr<(7<+ z08CJfbW=~pXR-(YRC9kfH6+qR#>6lq8HI4$25-2}q(^pr?_?kTY<0vbuhtDa8=xHl z3M&S{V`iqNgLpmi0H!8HH6@!VxZaV%tsXNGt;Xi!yk`1jy##_W5>ZvYfH}}JEym#~ zw1hErzZOqo&-)y^bx$NLA}X=%yt(M04FAuz!AIWgHrtzsm}b9>aMO@?QtXze9{&N>iLY;Dh0N`@N$In z5wfz5ugSK|oB-Kw*aF;?mc70zl;t@UesK;gkCnkWGq9t}n4 zQGI)l@6Q_yOq{RBy!b-Cvd1Qw#M_A}y8l+|EZkC-Lx=&g(58B=k#K`v4!1IPy(&B| zsWr>6wf)w`#9h@Mh8paEy z1XDL{@l_<=2*W2oLWdt-f}fWisp9=5`(_etOG}r$-XXX!iNXve|-zkrOxkfDn2n)3YLF3eD($n z3TTOe+;D2rFz-v6xZ`F~0;HG5I=iGM#}m)W`O~yk$2Q;gq`%g_Kl`(c_8dE1a}*BG z$G!a<*6v{lpzt46^mc*wq2;FX;uIcl%9ot>POM{JSyOo^$3p%0aV z!1;@qW(FK!?%4LH4LzT=wKZs&ZnV{Pp||-Vl)N(j;EetdKm8v-YWtK%@?wQki~F7B zIe+7J9%mzU4A%3zQoxl}zoR zLUF8xfy`Eu1?0TBaRRE^5G&=j5$hk(rZhS0N;~7ZI!E1h9pN3z+gog>ejQ2=+d{zU zhoJ&9ZS&0N`i%~GIGkSXYg}h`_jelYW3-g(&7D1CXtG;C17B}#e7}s`?ZxR%LIutj zaU36va)5{qHfe|8I2JHX$!c7M7T#G^{jKTdO$kp0IZ-);2FuP7Fdu*FaU4%Y-(tM~ zwibFy1(u<@-3_I{@b)`5Pgm#;8>2m;`*N?X?Xy{UuPouT6}@*g9?#$UD7V$H+`MX4 z8&SxhwliN8jf#CX+un2&4Or$W3Q~oXc*)owp3<5w9Vw9jMe17Vk zpT1-cAT}i)@OOzlIV+${{s$r$k?vm4g38*XZTO1Fq6ebvzWGWC#0qb`#qlt4=@LFl0`_JUmT+&yr2}tx zcG&v{ZqD1kgeuL6#TvH3-fD)@rbqfG*Y>y6YeKRi2cPohg=-h|aw!yWvOn zE)z3l1~T7*QD{OKGOfPccY~~)LCV+8B(YAUZe;Ju>j~ujn~E!;d-nBQ^L*-=JH#&s zfW0xBItM~g*9NU>YvTTNhmDRthw&kAJinPRZZ+JvMbaW9a$UfOXYvkZ!7B-H_i0As z$bsi@p8DODPQq{8kS+ z3IC!Ix|_T!E}?(Cqafe(dBkujvrXr52%klVDfsa(W@)~HjV>px2WV!t8CVihodI-l zoDa8kRaTCphi|A_9lzbL+b(Nx_1i!yophJiY%-zmYT;d&d_ZpAu=*P~{6t#6 z-VglM)p#hR*NSr@z<=I|VvL-|3)hM4Xq&YJIx;$(RyyHo;%hOVBQAfo#a=n_Rp`Wt zg%c;+1~|JV2+!^J#IjglR==jsK^1h8Ojgah$13=m>C8JiEc!H9loFuKBUdK^oD>a&=^U+WLAruOL8B&9L8vjXQ z7IghmVf4R1G(*%YR&B*PRL3Nr^-%nv;40YNG^vF+qKyPZIX8L?T!0kp&vpLSTe&FC zaVBn3K}((tEq$i>BKZ(QvWwALxf!&cm$DMAhz$K?x358D3r+|}sXie;id0>7#8Y>T zEdYn|ts1%OXrd$^h6?_%j&ntjnAn({b~6|V+xb(hgz%D10)-zDP~RQSXYs2X>T0!; z;J3(!SCdltxkmOqRp$WEU&?KS8m0l}lL3ByC(Q13jeR}{Cg0R&lrX?I7ai9aJp=-l zb%ilU2e=?21+u|fZ*Q*ag#JmhJ>H zEsE(fbn<2E9f{9vf5DRg(?`(!aBZjO9iTa8&AO-cOpBuGx`Hl2rs|Dh4!Z9YJ`W9J zqI(o*Ob+~StJ}~r#2NS`6f?&n(`HeL99)I)an-uK&23P400Og8K?`<|2?&T$Ina$s z^Y)qJT6XK%Dlb&^(E~kn=?7hvh3;x)>`qee*_&SOhPl=2Eqwdh_(QrEfHwa79tWb8 z(U=(X~X5~gbi&(O3Fk&K&$THCy=ah&+5mbuu`$7?1HwQ?E7 z(!;A}*ME14UPgiRqi!uuPjYy?xvvC-Qv7#xl)$_^4se2TDL=$~edK+NM(jI;+x=4E z&PnY^iiJC~)j)a1R|mNyF7tf`>jzqKZsr9U!nRmgV+8aAim`hk5^&Z)|NTg1K(?tx z+i*D%7#YHC+e|CZr?3eIzpQE)c5p4GVTjlCKX?xq*=PO6#TsY!iMDKH}YF_~5E8=mp|S28gxwm+i(=`Zm@Bzj;nF+|S@Slo__ z%vMejspG*D_bx(+&1kr6b%m8^xn5}wWa$f0KhQFcPMA`e-A#J43?OZ{)Ob3yjeV5f zAbmK$b%y-ua!p8DJUy58IvZX4r7!6OrE=<8UqFt}4#lZA)HYwsjSp{pD=Fszs zb=dEXPEi5gKCoZf8<890w`+@4tx~QJBs^%gXZFrDzYNy$mda()$IqW%I^s8>Rb5Y2 z)wv7&kZa9J2$-|2rd9%WReXxq9y6%}^$geKoli+S0Ga#GX+@kvA~LSH_9+(s9e+hk?!9gLL)n@caB)ymfqMcra z$CjjZ1ysx#5ux4Gm57I#rWH$ zB&_)f@O;?|-@>kEHk-XZL$c@7;CfjF-35N%qc|FMq5Nog>@HRCql5NkX#P6e&6f5v zdFmP{F9f;p9w4z(U0)LVa+ed`0HH;<_0$-qeLI_OP=x$s07B0>DsJn>B`hFO-0m50 zp=^Q<&>B zhijrMe$txVKZ`Ne(3;{LJY6asuOyc{?&02_CC!hUk(TWMZu>e{nCfjjR2!z54Qpk$ zYdeOhdaBZ#c39hGQ0|Opke6F_B(%y}>m#&rVll-F6+bSD7rflhCo-Oln8p$^BgQfs z+AzR6H}6uzH27_t`r9qAt$vPNq+QUu+a*emi0%I42Y?gT-X%{*>>bFxk_nvf@KX34=sAt2 zZ~FNHF#AYhgy=HimZH$Tq*xYxudg?1iM5{KuNBpho@)`586lsC-tuzjYi5655K!M( zA)#MUhNUrn`f0et0o5t2!6sYM;)K+y3F|a%T|oe}aTPt7Q`r&{2iIXF%;J!ScwYQ; z@4GDepd5PFU&uhC7&z|=ef~n*hpqS(Q zplsi^jPme+%!z=QQbmoYK;uW0gDg{8D#_zy@0;f7-aF7c5DQ&FpZZ-ZPOx?q>qtjM zFLJy;aa_M>)DLezt0?Q5vD<_BebZDB)3sj9qsp@_4TD9SSrgx&N)ZZWJ^|`G$5zdT z9jxh-+a2N-=ytyo{-GO2pS|ZybL8#sB4asKn7%WANOeX;OMvbqqM11{OGxelt-Y6OGf7`gQPPqOx=Ll(BWNEM00Woz&+gnrI zmiOPNu^@9qYHWD3+KlLG?5ZYIVe_Z&-vo;%`|0a%W%3qjM%DR*f9f$UBxWFxnxIdL zXdt32XqUQkKOubtB2G_LPF#n0;x4N^C~re)^C##F87|5{JIY)U758FNO3va zPv2w|dX@mvAExg+HHXCkqu{8Rj`*p^t5h6sB6(Idl)k+=b+dizPnN2|r#-mIXpgpp z+Pn54IvmURf-fdxHSs+urt@=78Sj6|V}S7G_uYukI0v0lk5(UeNk*{SFfV8|Q@pRIrdGWnO9-ju%6 zMQIwH4K$=~>``<_oL{}O^s#xg=-Ka5(KasD2K+&zIJ?r2Yb}#;yOVs9jyet)+ z^dI34d?;)Z#kmFdlF(qXV>lByU2c^2PVf74_eZ6*^(L`3=JFfX6!?e0FuYm=CGw`?Z2=Ow!$eG&E zK06`2;@!BY(KFCmc(=PQ!Tn+MTARF(7t<5YBssVUQSE*$#l3G>hPnZt6T>Q(6U zNs0wx$XbY6DxAn&^UQi3O>Z7-jo7wpv4lV>U|Q|rvaLzyz-Pp1_x8+eP42!HWGZmI zmX2Rct9N(44STd?jnJF>8gC$;6qIuMW)Gd)db{Lri@$w`T|CI=Q}`H>1nrIj!)8?~ zr4DDnIyU5;g7NbJjB8(W7mn6wqN??D@r5Qpmf!>k_z4B_5>j=$O#vi_09=36OAw_*f3m8nc-k8JX zr>{ffwb%Kca~aHBVn>FJC2s^&lL8b%q?%N&!ty3nPQ5gY>jR0eX#s`UD%m z`(TVj)uNF0_#ofB7(}V}VQ#)_rxQ2&LQ3+Zx+CG=YFk*cb3Tn$cF${BEj=e><3Eg! za2hVk40Ja9?lG5fi*eXKJ>NkMrvi5@?9XOCqLs1jAem(bCCV}5u$}7qU? z{8GiS-H&*!w&OV|;lhgs#X@67mo|7cB1qjl@tIzoFFLsu@bOT;p^m>Sy-l4qI@@0+ zH?Hm#3h5TYr5e}73q;kgrHKk%0<@x0@fa>)649_0u*BZmm7=hw%X$IjkrFu;FPY08@&WPhP5RqO8F72Q##C^EwB+rqzn0!`n zR_Pd2uxNuX?GcE%>elP>Gv*LESj7Yb2}|PEPAZ~Hz)*GU-xfv zDuK20{iLpX&54K%@Zg$JOS2R&ccOYqaG**Hs`U<==YU0u=hlVsLvpccy!nkJ$f!O= zs=ie*clW(vT(=;eEJ%&0T}=zuMM<*YlxV9uF)yc6;Gz%!i}SbAo>%(^2#9l>Q9}3u z(myIUP-Mzea5`d}-_@&v85I+StiHPJgDq1l{jm_TBe#AyXJk9CXa;O)r}+#Ud#jWa zgr$+W9X7|fmZ0__i7XhGJIqIfb9j|=u`(qZ14Kxx#|I=349R?|W)Ri)+|-Damcu z+OZe2p1im|Z}xgL!Pi|R{dfS#{mM=q5NVVD-4x#N6!HS4#dty@e9;ZBRS69#mzk7d zZxz9OTu42R=>PysII8%)h1{60&^6qk`nCY@ukEdSgDIi)ETO3+k@EMW#v$m97kxI= z2P+U-A=Lw6n!=}X;e+cSFz`2_`3OFm#-*I%1PF@Sn_=kPlClHY+knKm-|+CJ|8uJ( z&C0IqGAgNXJQQTl z>50=WA*v}aVi>|hdR3c|cg~W}_14`U+RK7{4@M9xIW18kYkTvMi`vAJA0`bXSgY=? zjQ6n=$kI59s%08Y_%NlhpfBu^6)^a6YOSh79|cf#>bM~n)-?&Av*Pv>08KN`}#?&f2uPmoN*Oow0faggdh23 z|NSc2=a!K!oCAh51q7A+G*lD=-6{|7JXJ|K ze)t?G1rm2WE@O$yo8JI58arXTn=?HNvu~hs##rOptKAn@PPdGD&QGX+`1=YuJ-;t- z4H(q5p%eK)Vn0v@grwvfG8kfJbC4U+hcadPhOIVOX4hqF|+5OzZ%)a^PT zWAS&s879;+KzTV0IH_L zsy!4!hj-w7`MBG`2$H}5HluvoM0E!kcveKFy`$%`ro<2FumgFZ6my>k`6BfAR8bRN z6X}(`z_}c{Y1PwgDF`@KW73gy8;oa5y=HZvrc;5aHY41|-a;S8?HylT1=;$R)O z6lq$$8RY)H8RlL@-5oc?ngC}4Sw*+w3SHx$Gf^(N=Q&Nk$I{oQ10CiGuq$(&@HDOL z*hx`f#OZya%_-*vO{7>9cNR%Z2ercegGqAksW&C5+pzD0xVKR5F}h)tCeyf|1%hB5 zrf4LeOwl9qc>#Ce;PmMOZFn)2>RU=cDAl2c&ZnJ{K$QbvC79r~&!jz$jHG*Zil`_Y zSFzXULhO6&ko4++g@x6W`U5TaJk?7Z=&dex!O41OsJ$m_0e~ONMYV{WM2|otG-@VB z$08Ip;k7?Q@PaW1ChDa49OJ{zJ-KJL#HURb<3JJKu-YSoEKmG>6hHSxBa|O45K5xFB?wqC84USDZtt0@m@!Dx87)=5|+g zSXRHE{#AkBj|9Li@i&*raLW07VpRd@LP{_B-FJ?oNw&CJB{O}MbZ^>xkgsphcqds4T6zy^cISR=9%>3Seb z`AGBrjI~CRM9zEU4LmS6^(@i?73_U8S`H(pPoKmt5V%5Cde%~{PNpZ~X#&xm|J>Wm zgBq2Ou+L5tl+9U{n-Y}DYWd7-Ofbc6o!S$as`<#uEt|q>XL>P+fQQyZ@?&xke1S&f zu~>U$F!EK2Kim(8tafGX1mj#HD0}P>sPp#L8O}gU^eaH^r2lybaH}r==gY7{yk*xV zxiFQVY=G386s$<&mhOvZYaZ@ub%wyK+w~X~Sd?KdB{>FW8A!!m)`iItl*6y!k*aEpRS&<67-4{U>feV)Bqj6D4ChCueWp!8- zXI1Y_GFe=F!VCP;xqV}E1BZ>8^M2#m?u77a*56iuVzr@@@P(iaHqpGyW*tNYROVQ! zoE7H?`Ef1G{Th#La;;qt14mv2RnQ^VrV{seI@E5xV_loPn=!Jg(inFSmMlO@&`AuR z>G|z2RBXnEGK*KDns(p**hC)D%%zb7zil`H9GYa|rmp8)Azk&P_C<3;+w(@%3E%VP z$7dhO>@GRnU+bukN_4toOi@Ick+;aiZM+9EZJ&v>{gF)#UeFK3LJ?GMZK?P)m0R2+ z7Y)r`g>!r%9#6rM=6b3O)C`JAU&1UKl2 z1cIWMG1(=J8?L6nIphBK$|(lL_QX%D(XX97lB6^-t8Ev@Zy@u!cF&= z`Vi5_{ls5O-2)Lh$klos{$&mJd=u+kv&Jq<`2M%l0PpNw60mqLlg{Z7#S9yl-?${Z1{H>ITY&~FU#s)^ zxdGE5)AT+7Fgj@GkzFWd&~eZ94ng~q20E?qb&&uN|HsSj&oM7F0sF^Yq;f3*%)ibY zo*gVJs9hlO1G|${p;M}!P+_!-mZngPLf`(~nL4)a{Q!d_yRX%~g5+OmB0{V2PAiC^ zK#jOUrnT0uR>OCG#d-ZS>+ZydO0GOG>IBWD#G)C~-m1BQPU(-{7ZDIhL)rcfjW2cx zRZm4KBz*o@8WPUq$E1}fS;v4i?twxR2sAeVeY9W0LwN(@h@&CcFKw(D60j*LbWljWjNYt1YgY4a4w?#X>Vt&bO3U%;fF7O=Dh}rKM zJYcNFE(CArDCYX_j4KC^syIYNiqrSGLnyq8XRv?kgHA1|$t{)X3(0!7050YpPqPrG|7eM;f zKQ9gvjZZ?h;3SVPskQ=QGO-_;BvJi-zv%*@qw#i8sh&`fJK$@rCH~@|_)l(!WjQ3G zK>&FbFUzG!Lrr`}iO@W24?nE*2`%P6UJ0GNH~qLwSS~&L3wQI_gZAo@|A9Z!q0@Q# zo^c%xxi(y&u+PTnCL~Of%x2W)2!EffCA(($EpJ8^6)r>Fw_=zE6$^a0A3p3)jIDJ6oILZmG#rV)vo* z1@wfGO1dA#;+rafleRDofky#D^5Osck#vJ;$;UM(qJx7~d=+2@4M9woc*A2DJ_g|H z(0~`>xx+DuEVXHiF?!R0EKZz<a(R$i;eyI6k#z82!!k29)*oBJcrHa8(0IVp zr&_?<#6bl|twarWPQ}2E46j7ePYEF{dA!PiF;{zw0>xONIN{MqW_lK{pr>Dh!$Gp$-ZFt2Ihq0|-mqK6{xc#ZcS z%~OrATn5O5!G6A66AsyH-Yzm&cCSHrA|cq-Z8-y24Xjn3uW|u` zu1%937bf&CSwMTQt3sD=P#tyhRKbqSoE0_;6MG91NR#~i1`AdCT84uvXl%1S-9mzm zliQ(`vOslU0K7%{;HVYX^%xd43NTgSOW|I~>MPvmjj()n(>;l96~i9<+#CA(cD2lP zXnL_-$+o!Hfq}uy3aDn%!G{6;k`G3~HZzqZ!?e;CJ(FxWtmj>;iO4al_ZB`*+JUwP z<_H#ZSxYp+Xvm2^%~5v&sd$6slYVGVlZ5)D1GzP5)CVg}#@YV;;Em7_L2v6mkq+A) z7?RalCH8Z8{X3P6|5>K^^EgYdq^AoE_~q~3Qow!Ya#PEHh%`=2Y z+x^m?KjxJUr1p-libpw{r@;JQH0v%sk8A)#)=rBJF=b|cAnDW;5?@*exdX-Y42aw; zwu+unB!Xw85`NXtbN^K!((xx#QP?3H0eF!LP#I1x@6h@jW-VOy2$8TF(KII(u45d51n;kwugfI zKvo_g*va?~o>@5D0y)gf&kG+`iugZ^cN1s*r8hDln~fts7cHTHss?lTKptbyS4fRr z7?4kU{Cut-cK(@laNiF6XQYmHqBzkQzH6gVD|4XA8$c*Z!G-K}3!&TCm#&dk&x!vh z1I8E>J$$wHkDxyw2#+nafd@;}NiA;;?O`;SAaqA(S*>nV_P7C3>PqLCe}&HH#a_>* zEgcq}u_9}75GG7+0vrF}g1C8=E8M3IrB%Wyls4nY)@`vXY{xt8)sLD`rH~#A8ITOp z!;Wyistw{N-Un?O;Zh0z$ellZ?308__<8mwCic@2!f9K&DI8&{J|nmDYO-ov%Hbq z5|dvx`(&?io)&xf#i3U!Bz5rpz@o4&R{a!G_vmJ6ff>+{yq0czA0EEmL6sxRaq8Um zj6qz^UsU?Opdo7$LP6q6q7jw#u)Fm)xXhr|fQ0|Q+E@_Ul{P^TIW@}-S*U9o@Jqp8 z$059e^RVjsLd7#sPGYBD8CzWlRGkLnOhP$(j*Dxm*tsc-+lZ>NVS^>`CKS&bwVBo* zJnEUeV$=Gup;b37JvEPGlL(@`qKtA8ineIEBQ>=AitfRt(9%`XC_oNv|R?x@$Yj zJs>=NQ~_9m&x;~q=k61#sQlp129F*eYKc9R&f4wHAaDY)F{wkq*Q2!`%U7hxbZWYH z^RGhfcA|n&Q<};(!)2Kwz_|yS(wcRUImAa5rV@2Ffa&q@gVtTo$Y-Qn-;~tMg4STa zguU;!gS*E|*$mv`hJe2DHG;dJ*mbowytE94% z_lgCAi`BFN!-lM#WnDOnfac69#&kwQJT6W7Al;geMDa!QM51)o!|Fn#>GZKqsSa}z zNde3U?E+X56`(XDZDroHD-UCm^61lVcqU;70Kvk>ir}Gy%gekEp;?0FkVPvJ2wPg7 z%_Df~MJ6b6w-I@KpeA^JjU&$ghK*)%2Zk%3)rL(ZO;0)6-#$fu`QO#4Paxo?a)mK1 zc8QLJds_9gl+VKH^#7!?#3_wVRCBc9Xl;Od7;9z}QiPbOiZqO*t_wV)Jc%&YVv&TL z_>=A#%BHUuSK@BgXOr*y6*8VG+#j{U4H3PN2q@Yknkk;cR{M6o2kow@bT6KmIXj3} zAyM9QuZB2+kv+3@BEYjcwVSFIndtkwTc-no0eKxmACuWuk^oIW?2;khdyRTSxf9co z6XcW$7!GuWF=;;3c45Cz&)L>RpbcLQ9Ku>Z`}oG0R5~X!uK=J^9LJ6vXGgB1(yT?PE88TT)vZW8NH0dG8(?n7NUjt4Ujfw>@^@&dPH3fSn`$dnD>4MWN3^Op7J{S!-}S;tX2E*lgRr&P%Xg zdhKBz@gYH*)e}XOLccIDSN5fHNW(lAj;V+MDKElza}hk|nLgBwY7@-%d$YLfo|vHG_0W3g%zc;7pZRp`I$q1g*ZAUmsYE}f_pZeC8Pfcms2cr&S7b@9 zt0p={P%>a(lJipvfNB#_O|~^k0XqO0f2Y^UK}bVDZs2wrzHn1!XBEvuf+ykI5ve4$ z*i@GVJcns39zkl1CZrr7xq1(g?5PAk4XF@vBCDdgMW4Z!6E?}5?&bvk7um?HPJ$`j zcV0YYqWHbAqq1$}ZGQLkcKG#h5~ki=Tu1p&uF5)zSI0=M6YR^+FcjTGh!&Ha7Pz^u zdo=RVLf#i1%KZO54laiqG*&f9+JZRiycq6hiRa_ghV5XSSjp&27jCNt@bmAEHbfZ+ z9p>9+{taCW)~0UCWux(cTKFDfU#1$Z3Vjyos3|e_X~b$z6EaR8ukvf;@xv%J?ve1U zg}K2qK?6n<2Lm3xaEFy_5R@$3I1)sx5Ouu9c|JMLhxW~dmq?__V9DHgBCN1}z|4KT zH&|Q0c%6QnW2xvPQI;(ITd*+1?OD<*Um_5SokAA~3!YZ3LeM0+eLJjAqpMg6;c8h0HL5OYPjz#lOO; zxX+4jlZnyo9&dIpDF6&mdo<;_-oYj2#i?1v`)7?lB1slhw?EkWY+H|472R0bE&JBx z4l6g#x>CpI^}Qhxdp-eOnV*wB}~wqB8mw$#30 zcItX3HfgFy>51un!CVwyT?VKf2JXFqjIg=q6K7{#V*yZN;glqx9K^nklM>zrz|myc z;#bF?UT?72U@x=6H`3r;+{XJUh$rRX!8v=b{Rxl-!&(ZO6vCO2CM>VD5Lii7{Biep z$M+*xfxu9QXA^Gg8|^`W!=1*2V2fB-t$H1ERmJ zGxa)HlP=0q+l9;B9lNsf1WNRXsQ>v&3919abo>kAfrJGhEUSkS@L;v-uRzxPE4^9W ztRFs)5P(v)g+S``%nOi1!^IH?x0VQGZW%v)>FGLIb_WtUu@~cQ0!SoY3cjw*O)&~& zc6&rF3ZbGckbgp%YfAo@1lMw)uk|X=O@%7S*K8v$Vsy*jF5S+325AOo7vmCIsVEGe z8Q)2>YaKJW?Lnrul0PTeubfh=5cbWDoN@GU42uY>{KqD*2*GaO7|9UEweHDKmhv~8 zMf1LA+Y@jr`)ndvjO}jqG9IN|d?h3CFFxDCHU}JXiqXS)Hj`thEtw{F3VSKn(wYi+ z7b?+UxmZRbb{ywI%y@q*3YvGM%&kGPgk?;cU9agLEe-L`Ttig6tN{ym%M}Sw zfX=63l}+2LN!4g4agN{aQ6gawed+KQB(@b)uLtfH_t`c#IBV9d2Y+ju-17 z5U`yjb(`|nV)jpqC$j6T1%WS3*|Q{98`-9fS6q>Yo{u@Y4Yh3d{m28p2rb!~*3#T# zYqd+BH{51Wb=DGv1qgvD8+?$SeQv)>c+_$q zf*Y%xiD5B!S1XeEJveazV=fzBikNPH3Lr6Za5#%j@BKb7_GVsS-_E@Mf7m+fu&UN= zjjJH2ASJ>AB&54TNs(?z1(B3Rg9?bWf^;aoXh}gSDM3o4q*IU-L0UvYQs9n>d!N0} zz4x#4oX36kLFSy_H^w{O@q4!n0eIhF>G`Y`&QxZ1pGinaF!5=#^MKw(7w#O2Qk~OS zQgsBO06mX(^EeZ<1$1-GjKUGN9H`$BOXu;Z?$1C1`W~|yGr`ikQ?TI%!zK)*(bI)jh&JYFf@8`2nlncY1t1joY3<`+!MCT9&}@4e{{q(@mZ8WvcXq0h_-)Ugm)qi&X&KiT#Og@EFUy)QYRDf)Y%9L~cIVI!0c!J#+8=sQ;q^cN znpS!-oJUfr|D~z_y9)zZrs#Pe*%%ik)t-SOh@vP{0t)M8s$!-48S!6 z)r8}{G!A6GvIbP4Z3rb0ylt^_P?gE`()(rNdQwr1Zdv%J*6v@F;!7UYc5p24;cTdgj>!wtoe8eT|t@bofy`ixD z+I}1_7nTDTwB`Wn79EUE^N#Kjs-%^}WU={{IKu6-hU&sPKrq1Qrf^75KMka*Y0-Yu z|CApYZ?!$x`g@VattU1|H2XXH2)NdTXo=Ond<8k)K+*#BPin_5BzCt!5kBf04=b0@#t*U z=1kDM%8b!&=oTuPqeeU6TQTNJXO8lH%d& z%<}WFOj$Vy;eg~}u1&ALz=i8CGK;NRHt{B)KLciWgZK2NT+>&?mrl>VPjrHfvxHAG z&uhmkAc6U;l@mB=Fxl)o29IuTAFyG^nN{3c5BXB*Lnx>PBWQ|+*3}VmEV-C_&|miK z>uqJmA=?>$L|0;q#H=-8`)~BBdeDKTVSYg90~yNod75M_RollTWf`bUmK^$a1?ij)5zBltL1my8e1yhi9Aw?v52o+G(R-5$;)nXCJxuBpqV{4 z5T#R;Dajme7~va0K`*v%U9~j!)^Xx0k?z=+XO_Z|xz@=x7omNir_`ZpsP&J$z9+89 z{5{w4?2@(VmoFhtZr8k(>-*TNvWaW$&Yf1g`h@r6h!v5NCSak5d#gbe!M1qr(*t*M zEw~S|pQHp`(;8K3uKMXYlQ3Us`NG$6R1WjA8^NeJ%oM&frK!I^gKw`jsWb{NjNeQx49S^KCsex0NCh1b zglGKf53t{s(>f8Cujp>y=CeIcSspIpu}XBeg(j5lN+;;GrkBb ztBpKkXr6v_ee`7{FXQc>W{Pmc5<4eB?oP*xjV!Q1YDir4Oyit-+ZOg*a+5Id^t1Fk z9chu#%i(8l`6e)BH)w9s%2JF(BX&=0v?1*eFE;ioI|4DM>Yo*lSpJMtJm`@feuzb8 zz?*M$zxiT=@X=nYCcLh(&N~5<^}lC%(4i#$f0JIS-s=cJ{W)wXU|hi;M`{$4z3GVz zdmEhV^bo33UK?y{B{ClXq^1xC@mK*>oc* z0Q$y|3#Vh*vNLn65znUIN>s34q=hEhh$F-AY54bs&sXnFU0ZW1{2aLPJi|bX`<{<- znv)#1O}D-^S6#Y@-MgrVnpyM8h~@5-3MmoW^{d2#K@XPaB{H8Tu(RW_#=GrC;LWq0 zzeHEU2F|+GTFW7w5g0A`5fIQ)3Zi~aKY*RQn=sSYgTPVXFQqREDC_t>h$b$S#P2pT3YYaHoDNuw&pAm2r%OQ1)hfT)llg#~Z3V3fhX#{qaU1Kq45D;S6 zQ}SD%@PBYh;Pobju^@j`KsbRz`daWW{JJQ~`4AkOEjb5S`;7I`Ux=Ivty8jy10{WR7BwCz(f4C!#LUDX#>DK370ZXD4J>P_0aKkxZPI#{JyHG58)u%A# zZDd^r?5irm!YYcg@QPOd_AtrK+J`YCx;i4^GNwfY??2zdIDf-ULvSln-cU#ak+<2o zg!F*y@ET{+K10rBS88d?nDyf+I)n%3rMrTsji5an_Ws^yJ*Q4tH*BJMym&QYdMo8+ z8&w9L3YH4;{-yF9=$_?|MahhGKNo0`>AGG_H@bqVC1!en?2Tp%>O&l}^y zE0Zn$UxM8fVx3Zz4)3f9>So!B#lNBne|zD60L)UUswKS!73d_YB$-@ zNcj{)jMew`fw?DYqlKPW*vz*wwr0;VU{g_;Cio_8M0Z=j4B~tRAJf}Sed8KIEb8?w z5A)}-Td_~ATWUopEaWK>i%z8vhWBB0rb6&NMbZAcs4JFR!@N5MP!F#yGJ^Y`FZHa$ zpdKE>eL%HszpH62-Z)M|oO|Dta5sb~RU~F#GE8UIgI6w`a5IZcum#boDv0NRT!W!K}rPE#Bcc}5jKC*BJe{J+#67V>U?p2r^0(++G) zyi$L=^Gz~V&-F#|JH$+rsRBIc`yHoKo3#e(8R@UnZ9f)V7bP$pD;ucNUkh_2O}NZ+ z#V0J|@ailKat({Ob9_2^xr*PPYOq8}6F~pzSI=yVAmJ$?^YK-$qOw3hM&i@Iz_(K<6KV2zH)z%K;%;iQ zLsLS=^X+Qo$VvYY`9JTNe|r2#9&3FFQGzRkQJ+Z-7iZ8%)7k5-_TBiq^_q&mSV&3X zP9dmHp-{!@B}rHSU5uGTv{iCvj8!~aV`C0RuN}@Hv1eI57gbY~_DJvWsfl9Al*&Sc z_+R0-vKvO=kAT)j_~BkzkxHZ|#KGO=avZAAur05=y`t#hy3N8zLmsT z*oDB)ITIH_e$#Y-u*ttiBxG_9&q*P*r5ctL_$x)CFv)xZYZSI8#^8{;;F{6Dt3=ta zvwYt_q1jhcb(AH-Fq&fEo)Vn==u6o`h#p`HHEJ1Sqh)mvbf1vw!oq(S)AtEU?aml- z3sU}W?9*g-N-JU92AnrM>opB3{=nqm@bxvL7qGnMJ z6Q93Csm2f|BKyImC$vEx<+X7_rpP0oF=Op))X@0?l&6Buos1C0v6%%(YsTw7IZ#_B z5do*eHo^Ae@b|L2Hrosjn8tYPO=~PD-Mwj5U&cSp-KL=AFCQq}fN5>EX>x#BcI{oL z7&=u3AF!o}H;J7IAabQnX~n-M3XUR=;XbmsGDBOY34<@3r;dHl2$d1XZ^MC@rT6;l zr|IO6
    QO2#w&r{2_ZGrfpjXeN@Th|iI@tipGT#_wsh1N5?I+po9=P-Kt))wExQ zEy!kDo;IEfy~imq?f)H5Xop|hDa`J6<7fLVzgL6}!%^6mmHh;<7`-|M^Rga$Vjj9l z?wcsbp;Z|^6c0N3x%!(cmKqT&S_8lcO2UIjo&iBsy{xNi6>p?)ENDl6Wld?BBG&o` z%$VqYWP!M;^M^9B`u0Q(c4nGeR!o!`=*yX&;BFz&DLEIJGql9Pbns+-;lw_$T7C1r zXPLJWN3z>7y`XrM+bSeJV2To6XXgkK<)p5T3?QVXk#+Jb8*tKY3r}>AP&RJ~%L`_0 z^Mhf0_l0daSTwZdjq1GPir8_ssnW`y=hPBLTLGJw`7{%Pv7Eh-`6l#wWGcsae3*mt z2Hskf79%)$!Edck)NB~?xXW=gt($g$v4`fYY6Jk7pF$qceUv>#p!{&0RZ@TMAS-5W z6%3!}4qXT4vk`hbgdOv?ng%#s1uv$rCq1nff=V{ps8FNDnt}ygir=d;Gt4eHv|+B7 z{Nl}MQ>|eKBvjv~6Pd3HG<##fF|&aH4baq?q#Kw3=B3f~d?@5n6}0pR?iyOXzuaCB z6UQizr!t&F@zFBX5qN|Nk5oD6C&nyItHW!^L>InaT^nQJe`wTeg??r+J0!xFzc*H} z!}S5?rk5QQlIzQ8Mp~FB8?#pK-=#XJRLF+^T=wIZ6*r>_fACOB?C}y@nuHm8T3gL2 zi9OkUCz_9Ar}LZ<01>L#ib!u%r8HnNGeVR-H@d99GZf_a(|3% z0pqG`ECSK~^XgK{tRf4ZF?Zzn*4Ne19b7SgM{f1wYmJx!(iCxCo3zkbAL)e(vro#o zIZh?B&X*9-WR}tXHQp;rBcKt#RdZN}X!Y-00K-ddQ520p%8ug_H%o~n-gXXGd@ti) z9YDFSiLy?FIxa9NM&32KX#@QhgaN}iLpbawz*ESzIKms^$Ze#k>%S%v@K&D}keU1q z(`KRhXjznRsV})&|J^MAB-%pW>%14;CQYV(*4tjH>XTS3i`lYfT)(_h%XaY4ZAWRJ zUR5CM^Mm2OwO28OUwT8447<|u1JaeM>w|LJbv)Cxw4h#MGtP5_U$ZECCH3)?xxuZf zwgnCPv_0P3%XUvW(6@*4d&-$sgM{g&s}!r^uv3eK-CujG_U=AT|AfmBCAH@aBnLwL zmti}ZG{{q&Dyj zpM^Zmz3mP@97{fd1~4zOd*|GFkSVoTzG5i28jF73PQWqT>(M1Nj6FM!4~g18#%zdZ zyDB1kY2p;7P}wM$r>dMd=gksyQu4k@0L4B92hJIPzI#*eP0|?c=}~L;qhK6N(jSwA z)vaR)SMAY)j`{HU>&)g z0Aj*Yp-&8NKVw3a7=hcoTIu4ziEr}J+icV2T<7HKE5dtiZ)?P)$3HotgsaCo>nlGB z;O?MdslqI_$(W(YCSc{9N5TV<7?1Px#>@o*O?@EiQHxe8MhW>7S^IB4w0?gpvTt5* z|2XVNSqc`$FD{JT@Iy!NN|hwR!t7u*_!V@^SGTpI~H1%ej5y-@)=$lM2AqzuS~QM6$VE z`NWYEn=Z(c=)kL>s~T+4UEkqoAjro+5c0(uq#0{C@IrU4ea@7^lRpeb@kFShyFPa|v8wZdfz&hA6IfMT4{SMj6ETlx<)|R1x0KEy%b(Y(&B{^5gI9`2U0$%{S!ZIlPSKu>MxtuiyLA9d@ij z;Z1;V1GoUS$H|D#-ei>Oj`FCiaX(>`8)a@=y~0MdH*Q0VgkY&IDnPr~Z`;A!7Brx4 zN{}(r&(pd&`j8vK4+Iov6(i-w^rIe%W&e%=G@8XSej!`xf?a-SVr&-Jgk!R18+i9PhikJt=9JlIco&`2M|0At8sk1`N^XN(P=IRZ0>O5U(b7~r{FiFdrNG+Y+ zrQMqDc8Qj6H#;?Xyr)&qQ?ChW*X34K7b1+ty6+`$c`XT>*2=TSXsmEt45#)Dt)dEtd!5u*Fn2otyl5xBQ7(137wQ@gj<$=xU zXx(pca?rw8KbG=PJz0y0pX*s(A!; zr>vm+ddQYz8feaC50DtzZ1zV3J7M8UI-^q4#wTKx|;X&)>Ps9hwekoS8)bv75Cq$zdO2uE6I?8w?9@kzJjsb4ZBnE z;90{_veW17&Doc$4$*f9wuf80SZ-drtsLt789gvleIAxof6&lr`PUO5pqMAppEcf6 zFdaB3>27UyaMo6&u(Urbw!Q;!C(Sj10y5%R#PVb`Vx_5h9JA%c0@vtNHSb6B>XnKM z9hzmZS$=x|%@L3<*>e_`V5<8{Rj^N1Xt$XU05L_q=A@c~6m~RBpOErO(o(nJqUNLQ z<>+z@{}$}WU3}}m2#pgV4qXBGp=y_NpP9_X)~Qfr_Y`a?Ei?A9YwvXu&BRg5U6>{7 z@jNu(t9^Kj29oUzttVe6M(Wg+$)HwQTX$@S*Jv8wRj<~GmDQ?$+BF-!ziqVEJVmzX zv_homn(gGA_6eqC>i47=(C8V-?QP2mYS;10G%|@3Ppuq<)r_%2e{L(h9e)({v4|{eVbz}UHeDI7C^2l;4o$#p13Bf7gMkGh0MOR?91MA zrmR8#o;uNP%QoJ!N9<@x+f5OT@tU4@QhnrT`y-m5Ot2uSscOWgR1(@91=X^AU+s#W z_+m_(jo#Ba(>*(hSF?;yDX2JpQ#V%rxcFz-{QI1x1P$>_Xs-w4IO)JSXu4&C&*LiF zp8`iM9Fkxz)+F26t)nXmo$J)mm2GA>X}`BU+|}Pn1W~QCU`)g>YzA_z^^ne0*r7Nz zkhotx0eaZ-k0+2Zp2KhQ{&Av<>g|qD^`UPE)m$EX7V?lbEM2u2hgTRvlKv;BnkO6~ zhVU7@({aeTNNnH!0g5SB@4zdF#pt&1L<)&I1^p)fMXq0{rz3UIy>R9JWkV-}` zv&4@X!^g}GxvS(|9@!MXOLFdf$j6l}$m9xs_YHzmNb|MdCGjf&Y^#sefNmw{hb7Sg zz3C3I``I9(X6O>w2rBN%CqG2!7tGg-F8Y;~WKs9X;megdDSr4YU;pGz&T0m%x~P+| zc^U3aP z2ZF!4+Ryytpeen{kVNw`U>dXb1R)Di4ln0up^~@ zXz2CplgpxI7viQJXz0Z2fr7@+mGEh>{JosEwy1wn=EV^VWR|6hUce;SCdAib99FU@ zkYsY|LwU`qJERz%3=5o|K|dhV{Qvhuf42N7!&!kjRj>^VUB_B&L@Edkerm` zyU6^X%T`V7TOD4Xkz6$<<66S`TEy-&LZUtyU_^%r*r({PL{gfDhN9s~xAcZu2fQGL zb)Flu@Q-z=qIR-=xrGF^_q)o1lJojI^uDznpiNa-={0`2oV|iKlX==Hqf7&{-kn6B zrC}V`WxH4Ldu3B-WTg<9n@%3>Z?76t2%uHFw#q&v&!x%Gu=kfsfKcF3e*{G-$B&ti zlaUUo7Hr*AyzU#`E%^^5%OsBTU-HU(g%e{FFwVRR^Jl$6WaBhWd7Y8O_Ly?#-AL(y z2Hxl@988^BTnO}b;;|2YT~@Qeop-n;Ll7Kx)9DDwbeZ<9L)L>nl$$yyLSPuL)6J$< zpk}=Oa16p@2Q$zgVd?MlqAq=#_Gl+?L<_&nPDLG)F2ap*aB~Yu+OEkD&<%4VKIai> ze>3Ij#@8A{@N6fwgM4QnHyt^<`;1ylSdhIKn}=oaq8BffO6Fy+U7R{FTZ2k_9@5J7 zBVGS|rd6bbgd6g8_Nb>ltW+ zq^H4ju0j?tN##)4U}sHeoyq~F5UQA$TV+i24#MvzQf&GJ1Zl1x%b|}iZ3%S#WLe47 z%5%SazE-Y)M?f*;XgiJ%q(s0I~f@F^(k`{+^zWkevz(F zkaUV0SPEE;#3iH8*M=FQpFSF|nWqtjBN3jObATj5M$1Ej#+lW%n{+r3s3{Dg2k*4K zKL-Y?R4YozNsITJ+39^>2^i1BY#LNJdo806Kq90?wf0Q44j;pZ|=?ch_3mi-u2nNFoKwRmOgS zwf6P~wGMmit26X;PiUV8of$#!o%*l*--~$Ppv}HIEv|hgSrGA<==i(XMZYlKtUo#^ zf(uC4XHoKJ^W!LR3Ivbo%mTOYHY^@!n+zN`k;i$;Q&jH6=M9gKG+1x~K!gjHwoR&= zlvVGGckzPn#gXA2R9`oNATbL`CqgRaCfDP`szHc1w1C_k9)9~5To&Xa*><48W zCx3?$V$rb%PKQWe(yDq4=?-3CKJL_`XzQ)+5+1`8{JINlQBEEP#FV#Gr($UOA)`Un zns!Bab8BTxB$p$dQM=#u+&_)Qyy-$MjL&^trLB{W>XNe)$p1d-DreO>|;p!>?MOClH^)EY2p~YY9Py!{7GA0L^6K6gJFU z%XW+0&RqG1OaEc>H@sSj*#?;On4l?1Y?gC)Ip0X;6CQwaauX>h;$B@s;4g3)^l*ME zfkE-`oo684?*)jA*$LcFdc}@jd~u*R8W3k-lXtCO*cg**FLuu;gGYi5E}{SZ#E={j zU3d%Y5-kZ@D6C2Ei1n5f@P)~GA;9D#x3#PAx!4x6KvHaZ7C?C?-B?guwlCiYXPj|~ z0(a>ZXHrLo5O>E12bLJqfOj5`$pV{ zF2AhJ zi5tFQ7=LYpi?wisHWuhta5mgL4oh0Sd^S3)tnT86m@;T>L&x&Z7+pSHdkYQ^kB(MO zguypNojK6lDZaJe1L%us$tWwCX#t?1OBaj7!p~ODOh=lg-$--Tfk7U9S44~+7A`^l zuDaocA%s&Wv^>Vv?sQbsca9^U2(>jGXA3?o+gX5<@T=%P()e}-@l@y!7z`PC*l!qb zfR&lXMZo_M7IK$x>ADX=i$NO5CdY?(V)i|Q-9nhIFNa$C`DoZ)ziDqL_&uU{KNb0M8ddWHtO!#)7nM6(O>Z=~4m>oz zi@Lw)uq;SiONPaAq!J!|MrIWjN-ln9kn{C|pJ_>6+RUbAKGg$GUeyMsguE*Rt(hl# zEn(L^7G|$~oWI21f>G`5RC1PW=*SinyMijZLDL_pKp;0om#Q5 zCtFzp;HA?8?`~!Ex8i>cJ^y*LN@V1yPl5J)+#M_Yw{se4Q0OuTWi2*##FExxh(E#$ zTB-laSHE8*MX99>AYb)N13iXtD#eQZsATvUT{Eb<2iQCtqICUHvOIP)rZIt(S=}E5Ze8b@oHOTr%H6c5> z!aLf1LH&4|2Hwz=N7KQ6@2bmSB}Tq_mdV0Qr}hQKe-0Xpeo}2!;usm(h?&}!M2;V@ z8`QfuYJ9j(-j`efyFJ*}Rm*cg?4py9Q@WmjUyGEYyu7WcRCA9;pEkZodu;Xl$F{T* zer;LpKn1lt3(EZ~I1N1}wx2r#TxqBvv!J)mV=fO-!p}I++n1Wj8@=jx3l`_sqgLF0?gKa zl2F%x-Q++EV}iTAamrBqm_nQz&o6~&Nn-EI;pwi>RS?#kP?6X9q{$;_TFHSQ~B_?+cGP@6lzx%-a6lX z!*Bk^iDrQ4^CLUJ)L!?6UtNWI15jCn=e`CLn|~6Edx&Xw?2Q#s>BA7cfU^t zp(gE(AM=dHPk0r;*3p+<{d17ILeF0uBN;VHDmntE!^AvrraocwB+zy&< zCz>?oR3=yJa~!F0_$lY=**nKu4z+l*VNZ+8DlMMQ;2kYff^EkO5zt@MY<}Mq#rumS z_3te27g5WSjyfr9__a!~bj@!wm^&H20^92)%=Gq|n~>4T#@Fv?`0h=2qsjsB1@vH? zV$rmJEn6!Osi5G?gqqiqNT^;FNKJ(mqc#oKXr=fuw3^b^T!N3rY^57ThCha5W&oH_ zq$3RLJ&DW1iqQMpckxq?nJ&6AOx*gydG7c|X$SS?g6vRc*a!sXEaAi|_iQq{16Ev3 zSpxLjXr$IglDaJ8z;c8fN(HIICZarrN_^_1~z2TYO(OtC%_#a zEx0d0*M+NHmhxmc@XV6;<2=x@GevGdW=?Dtv?u>z0RG*sQo2{mz`23CzGxM+Z}|1} z`dTZkh)Oww;&c)2w|p*BeE-~b9#o1C)(SR6G5&|@}EmgJf?ucoPRS2c0|y4HAVd1a87`v`2s%|SKSuz1d&<`z_cu6OIH z@mW#FtmV~E@|lNnb9xtVLV5VW0*1lFZ>uuati48Rouy**CdNL(fJq8y04xA!n59g&k33L%m32lVjR^l*cpr9J1^_U2DQ` zwFhbfzpPLgHxUSJO0*?c=wvlHvOK3N##GktSMjF&nDA=cfvm;Gm^**ivEGRII9TH_ zLaIPzS1kQ}4kGUU>xF1b3gv#M$k}sjrIOxlG2xD5^7GGN%vJ^W_^k3g2FjWOAXUWI zm<`qC_x0NJ}IaeS|C<6w@;12?x@aDj2IN zj0d2CZ8nZ$9jG6EzWmX=!gSnuqcrlW05HM32N59TmXp7=9U~S8ktx)qUxW}L%cSzx zE-)?RE^uqh7r{dM^dJ|;??Bz)JrNT2m6XjM#{EmJ1W1tgh_Y|^YSwD)T~HI$BvNbl zC(bh@WV_A~P7I@NK9%xh_!(Rno+NxoF8jS$l4&ydTJUrxPvIKkGoG|i4g7HsqgNr& zHVg;K&9|!{SW;t7@21%<{{T|O^6-kr%uk4Ly7=3tR~q+|eY~t-8-lJur=-{wb~FL9j6y8|=q+CbDmSG7u=~ z^1$yY<5MO&!4O)p1}S=!BAhB!6sxHDY2*+z!delIGtmeA7btL{l@$QM4(> z`fUm_q_j8x0s2m&bG0U>#mIe;={^;GRHA=w6`T_K&s*(gW5&A5IDZ)wBP{h}36n(j~t*~CC+8}A-LJk&s#)#Dg;5EWxP@i=K4rf>F39)SVE z>%$`Xa|hL3Vh8-|^HN9poK*R|<8PCSr8$l#XS3Hx#(p0l39cX2&+9RR(Fqde8rzR! zgJ>9d>SqAC)SQ(?ngAWz57WZe2qIVQT*y<9R1}b+k5EBbth2YelfMJ(I*7C4BkMk} z^}eNeCqNUwo)eiKzfIBhID=LH1_ZXJNqX5#nr4l3!)QJxv8QtSt(=(enEXXpx5ht3 zh7+*w5(UjIC+6bIJAcC6=+PPNBwpMB+FPPZ2sqoJXP+1Fn~FB>4+jp8CmUkB^!7E9e@UP;F|2W zvjT7SlHnH-i=Z}lzRXDkOv1q~u=6GG&|&W|37{OxTL1S=U_3pLEY-!2HWKX!@r|=@ zyF8ljp++1q2|f*}&&*Hs`|C(=fAmldmwoWdv@Az({UT&i#ogMzK{HGiT_9yf`sfW4 zNj4#|((z3*h|1YgGGk{tD2`XmAXB975~Ne<(+wiwOklB&p$o~PGQASa7p|D69}Q^p z?~CyiFfoA*@A!qE_`j`1!ZUhXbteNRp-C)p0I!i1fcIcI)=&TR?_Y=MCHHsh!-|llZ&F?Op5(sy7nuMk$>V_?aF^WAIjLwXLkJ zpNs$ldl{Bg=r6e^;}A-kVOYX(vx6*y-*z9f+U|; zzX47TJF~oa8G;*=6qd=Rhqg3(mIoutm~zq!h1e$@>>j5G{xOtTk2zZEcxKoBKbQSE zd6{i}KgJET7&0OTFPgl5KzO$yY}NWjV3DsMLP35plalu$1&(Pjz&gv0!%^UXmn;v@ zxVDERRT0Up!A&o0`?|N65=}Xmoa%Gv1{HxhrS{GRuHH#8SsrvqX*1bv&RY*n+cB_2 z2r644loIcQIFJd)uLyUSRW%OSuy}Pk8~(9$T(s?3Z#BL z%s;8jXG%wl<@dY6vv477OAITwM|1C%Z(I`K`RDkx zJ{^@8|ByTEd`J`v=z3EWbS3MZQkMIngCK~=gZQ|t6%I# zz#0WJpJ%!2W>8afIkOj+!AOHbQF@m%@uywu`5aLR+uU;3v(kCD8#QW!91ZiM*CC7qjjzD37Vg}@I*WTe# zPRkS*z23S5*vw22(uEI%e8X7MWTCug3yS)xACgv}Mm_`})c;o9qTp5Sh8-uWc#uei zcpLWIG#VWM4-aGQ64fJ^=e!D|66xj?3OMtj#!%&_*^2Rzyn)G+)9~AtMkIH5!L0;O znD}4R7VLnVSFzb zFj?odk0a1$5iUvI$mWrfgpzc-i)HVGNVM(1?2`t#6^jD&RTrRG;3u`z~ zfcR1zY}X$NsVrXhnk!7p^TI90J)GM`rbQL+B3^>L@3U}7!`{iTSMA{}r6#U75$?wAix}N_RHfOyHf+`Yvohanoba_Z1x; zCK$6Gmic?mNe@DfUhj6ouVVZ*_eTERv=R}rS3vQcGD4zZmH|%7o^hb06!`aO#%WJ$ zbSoj0^3zGmbT?YHNx0{_JeV92X>(F^6hwcj7&nvxY4$~DKZrk{y*h`H`RyI_F%Wf~ zat(=+PHSCQzCI>qUtMv>6f6??NX9YR_V7=^s4lvg)v!GdSO^Hi`S0(Ahr)eLkq>h! zQ7vr>U+WsqDT&|k;Lu8uRFJX>v?+fzJ2KKm38 z#Eg1=*!VlnueqrdGFO|y3R^&qmLODyx@{q4wTdpvzs*WrYBi6@JV5OObbTbM3UdPJ zP7DIDGlQ_;b5Z#3olS`Rl}=rVBh8M?vp$Xr(V2z$Tp==7LFeHbeSu<7BXxhnfjF|_JsjSmv_xSuXaBE{P{=U@%zuc6&_)&JJ=pUcaIXgEpPW7; zKUKe~e-Xf+kFoYTnATF&J@U%VkGQ7uazSLp^t|V8WLW{2wf#bmHeX78T9Lt)&XbTN zgzKdrL1FXDVOR3VAp<=2(lv=Fjz zb-5y4(ra%p+Yey?Bp!TN^2?5Ds~0uc_3KI0lUP7pYX96{!L|$bvapi|JGjzQ!1ohY zSz}$VrLbIj)YO5`5XEO?sU$KX28e~R?o8miJ%YN-cl}(m(8hHVnIddI`5ahSeAh$# zM4tZ_Q0`0k0qCj&nKC!@VQGyWs+HOiEkmGxS~JeL-{s3rijsmJ*3Dv}H$4_ik8G6= zHs88%{y7W(c?_B{>bL^=n?C|aO&27f=l0vSxrtvK+fBHZig++W#|$oy5j=)7MD#xG z)02!!)$$06|G)3_G}w?Zx#C6`M*kUmezphuT;~?s=`-z=oo!ISmFh2@)Hc6$gW301 zZ(VAf-eDm;F+L8JhU}OhkI#%jh#TgSV=n#O^`Z#9!>Q67T|&_>y<)I?d-EaewwT-& zC|mj+JCx~G#Hy_IDDMjVfo&>WH(XL+%S6bkK~3(+Whn954!F6o0OT0p{Ph!x?3>Ui z!bUh=>x(BEzT_;blHvE3#bF})@Mk@qHXhCWCSs_oc-lOlAv31@yb?rO9t(Q7JShg` zBxwt9Xu|*w;pCbeK^HZVpQjT62a3rAP?#KtbS_`dlB(?i=n>`jdLUGt?%>Yq*|d=i z>z@_S!Zz)6vUB<>m*k>awIH*J4}gJ8I3CPCCjwE;W=IXH$GHn5NC?s2mAXEDtu=%d z;)&BDwx)MI{Yvu>0M)L$2NV9%9>kx3@eEakykbMAu8V?E9J5apZ=gJ4K}-9~4ytav z!JJqEbXmlBvFIFvhAYcJG+w*sKm_+I zRo(_{q2(6%AxzvOVWc+U$xj6-KXDR&YUl+(H9|h{g&0SaP4=qAr;oh|`4nd{3=|2M zwB~Oe!mo?Zh$HtDoUYW&&C`(pq6v~856Qg{qNVdsAvatToP#_~WTGURk^xzU9?X@# zKHRF|>bG+laYpy{Mfzble!){%-Pt&!9u{0jVItksqqqbP6Nu}Me6&?9|KCc5O28yA ziH7Y8u(iJ-R(p6|pEx~4a8x=SpiCN99jh0yfOjwE{-`)DAL`sR|bx|QwXpqZ-=x;wpEL6N>fIteG%C_{8i+0en>>6k9JV` z&x>#_*2jm^8nT1acx4>5O1eFa*e9&3?Dup^vdOzaC184^bf&b(u~O|^>*mW>kyi7y zFphN915X}Lsm^S1Bf;z6iyA&5$=>Qww8WMAV0}SeYQ$X-lccFFT`}700jKuq*;}Qs zja#(i<*CNkOgcSZfZCz+;?B!;R0=PYdjV_Y(}(xdRzv#L{^R6%S>$#>4XNM}k;YjR z93ZD!Zidws+Km-qOH+?~A-&ex{tF1oqWj#6Q$;uBw?7ihoS2LD=~Q*Nafa4crZVjr zNdxOTGuWL$$4m&xsyIOZw~*-wYzrwSx#sLkgjB3+K1bU=W+v3_PW2KSa6X?O^&^L9 zFu*jdyi>B&erXqzs*mx6zr0bY4$~`*nD>%)+v)bk?m0gvKBVe@!`-EqmfUMddt4KL zro&@jHD=w&*CX&?R}#jxaw}AT@>T1n=H?Edw!gVJ@KVD9U?TvD>D_UIA`Ps|!V}H|?Fiab zi>trfLU0~tp|)|ai1^}XR3b@-4QvbAkC7*@R6&{n{%RUP(|D~=_u#*2v%}Gqq5sMv zTxcj)9Qsk@bloB$gvb~R7@{B85JJHX~{us1W z>WHeY*#67-{7zz(NoEzuwnJi0798EQnXd&sSnSiH(uL2X?#)o%3B5k)whGR!j*Zl7 ziXj*c1H}${OJPV)TKxbMhpWxlY!7BXLpea z6m3daSt5j2v)HQdjr)az-PiVo4rH}R8#A6CJMwIGE4F6&L4!atRgUjO`pMz(tyWmP zWW2>9*Ix@)fp3L{)EVO0U(88%B-kBm`&*bd(fktd7rX^$IIb&y@yV+64dxn@!(^+_=CtM1qlZ+2nnG9$xqeD#LQ*s4bqkw}2_Zp&-dO8gxgmvW8d2KJTCRzpYHAC}p>l$cqVR?V;*U+qi2$OfxrWO1Dy8J<(-*0@4pHKNpUY6#7zF*EEHbWdhtwwYP?O&>6`5wx$9j+NZvscO z1D?D*j7fxW%c#%SMwPOJHr1hme$t@7$ZeN`?f>a?^;sxNkEczv>aV*~=EVfwe4ZZ# z0U}MQD(8=Xg)}>Qx5wvDd!ugtHB`p?g}&(udj$9uv1lJ#?A6+uBV}uT6{^;-v5Il! z|5KX6GM8K@eS2qgOck{6HpLMMEc$S8Z&GM=Bin`z?l=8#34f@CO6s^$mEJFzTw(A6 zuZEvX4a*)fq-m%?I%6SS)XxT|k3!S^^MNCAbq3@S3Of2Y@$XhMHg`=c%3JU4-`*|6 zc4531=~4IIDZ;$!9u0QlEznJD>I9}oy7?f*WPZt^kyGv7)oRtrv3DO3-cc#f2gR-m z1bgW~RT^Hhax4J#*uBYDm}v=LzSHyKcC}<-4#q5`9oF#7>&i1&@Be3SDNl!8_cd5H zw1bInj4357gsm5KpBv@%`@ZhVQ@_mVh6B7s&}eHRxqO>|r(BjR zF6ZzawB>%{q5!FeCUby$o-sVm;@cvuz0>@595{j^jNPe|Phqu8io52_DwLj3e;7Sx zauOn@J1`%3bWLXlvL|43Ylpz_CG=0N`H|;q2?6|P0TAkZ{Xo-*zM}sUu!(_u_qFP> z7cQlW>zKU=bvcA#y9^N&{>4vB;kh-tiuj6@#&utFAvk^zQ?Uj6o5%Deg%hxNmnhj15wa`gaG zIR73dz@kTtReer!&NJ0fnwzo#Ow>)CnfbRLv@v-M>mxL`2H|#9pD`p<(ykhI)7*#q z2wUGF7BTb}5PUgqJ;MYK7P4H6zVi%oXV9VXx9#wNhV3xJ5Z{UBI|@>-CZtredN|km zD@qp9j()$a3MG{b4m~y=;a|`-{;CN@?byQ2ax)} zzSMxy?*5)ljwT0ByP>5OF6h}gyz`Xihnpji9p`KRW0UQ<%cNs*1J0A(PuKUtm}fsj z5uT%e+dp1kK3(||l!^_4e3AgFHF!>w!|id1ve$3L%Om6|wR6h6w$9)E?oX4%4<1LO z=r?M#0{r^|cb*Zp%ps(DFz6vX6EtfYToLMmd;Cj}kOUz%%C=sr99VP1K7UdF-`x(N zIotvypt*FJ*SPBo>fopE7YXZ1(+ISm)j^4he%1~7N#qi+-Xg7Y_rTr-S61eJ5n!Qz zRee%FPS3bfAPPa_?SIXW;CwKBFLe^{w`JzVhKqL3{W7F^ab2g?mS)vxB+(>vvtP4AN#>IMgkZ3ju{Zy&h9LH&pl-}4mb+bEI=;8e1QWJta=(D)PUbof;KUuF_;60kgf zw(6vnM;V-;n|d34i-7?b{ zl&|gq5tlfB42m*a$$g~YZy-JQJM9;%4ig3H9BjYdF3oa2m2#_MRtcmlO{~KDLwDFF zgbl-2;{exr!q?j6(U~K7eGi#CHSk$g&iLSI;s=kClf_O!hew_{U{>J;8Y`UCOZ-_P ze~@_lrQx|X-1()m6?ow_sKN1|CRqXkm9)H}Jdd5?Bd{?$mJVVO2kQ51bl_rfj|HK= z``!NzajpbQXUW7|#Cb9$K_hWOoXACR0g8dri&WiJTc*?d8!6vGv9;}cz;X$hAHqTd z(iYt)3re_!$c2lj6 zz++wA$d`W23nRp)@~_%laFrt#4hs!VTb)Z{8QwvX@-Qsx%py|!y0LVvM<1F zj{>l*rT(@?&2}LagAi3&vht-(*^rLuwbNrk+~4^DeSjPORuUB* zd`m4c4%QMcEBZ-al9Y92T=(sPM46k5!$oNzgGKW%D*B0`Vj3$zZ|sF)&la62+WW`> zW?SCi5{!ijn)v4mXohhaG>Dm#K-$NlHyy9|UncwY8WY}N=kCs-Vrc0SC6XAvqk{Cc z?I;YHBJZCCABbaPV;L;Yo zS%yTf)VwtRHY)&kjoYfEtnW9EY7^D+)m^TL@STYo-^5Vm1*8I`C1tK6fzs zqn{gaL2^9g3H25CV-r9oiR^_$Cc?!BISzwa3Df9H(j@a(nL^UV0foDHQoSR->yL{x`C z+Vr^#j)xo1k44<0pp-$}{UY8Re81cAb6_h}fVHqBVk0cU3!wr}UOR%;XVoZ3;Mv$A zf>BRy!hSi`GDj$4ibtRKj2|NUgUQVX-SJHk`#mt<@-2`>j&9Zcl ziYASeF2RdOyK3|8p8>9L(0-}?Q&Mkoc9L*@fYf$hLhnKg@r(ZOGNr&q?3e0cIY>c} zo6XgQaJ4pjS8x9Y9u>jcqnwmgla7>#Jm3U+P@13Nao1T^Z&CCkdn``dQc>TY{cmoM zD>Z8yBwEDhX0FcGL-()y8w0W?Qyl*`>Q7ip?*>Ei){;!kGQ*(u*#m95dT1+aan?3i zYKjr|h4XYCBh@!(1NOI%p7HpV|8fV>EoVFi-m7$0g-%~& zvoow*sI7MZ89Q+`Qo(TM?bHr$0ouGu5)-40FmCq_4Lb}AI`$`|I1WLr$7$mkze1?D zJr7P0l9eza6#L!zH!T$Yk<=VS$Z87>6V)(;5=svSi3qI3yQycW@f%zDiWrL~P@|cf zquok~htawf<||%Epm@OrTVERDZYpXdc2n(=TeiC?^TGUn^nk_Qoh=Rrb!k($0?hGH z=#;M{sfzw~cRQ=t%_*Hvch!z^{~p=D3sCUc|8M~Yk5)jOcOGVHh5!B~nth;wba*u7 zYAyarp(Km;_vZSQc>ePkNzk&u7aTuFZ#=F}896$h@_Tyj6kZUcm5QJuPiQ$~yza~e`qwzNM1CbCj4k9>q*Q$hLia}ozB8*bA*|I}N@jclhej_ln5Ixn zZ{BImoEj7JA~RDQ2XpQH`w=Sneu7npceiTqvC5j+J|Q_-$MtRB-s4-H#`)i~tUa-d zUgM$>nT)7SFN^4d1XnLN;UfJCWe0!KEBkx-8mWc%cSIWCJ`90SC3}dCh=1tKC@9jB zzww8281;s^6LYimPx&4fqoYL>P)=fAj(TUk&aZKPJR*9uM2)ecsySwFMt;V##LR6F z)tBX~CuiHW5j761k&r%l;mYfHqd@bFC{?n>2hIx)F2GqDz`*vZNf&xel+))zJ*DSu z&n~Zj2;ZwKx-PsO@Teq!0&}C(*r*k&VnR#_< zJh^w?)O3lE)iz+e`l}ZRBMVtO93951Pn#Ur=GofVRPgKcrV_47C5U=pY(&2#BOsl4 z#(11|xSz2r^>n=yvfpSXrql3Mon&Tjp9P(`V_L@~&*!jyP1rWMc{xMYw{g;Cja;!e zjJLI4H=G)ifCsOrdG^MSckYx9KQ9Jda#iwHlc`@bw3Q=J^yi4*O}S#_5oW(wQw|c zu`9{)3i&4*DYh%ms3T>AO@}^%u-`5+;5$Apnl;mxlBO+#JVrTm6Nc}r@#}*|FxmKm zPj6Xpr(av|$T@G~-mA@NY>8nSy;4@4bg$f3Cp)4ZjHxnhKZRy1ZdEuK>F&oAe7qou zX8Se;Qq1rE0!NbPxS{5bq@lROx;lYb7NJn zZt-6LkY?cZ>!;LIC>(T*>D`V9M)A8&>|NJ;Q%Rm1#9!$*zjnMry*>hOl+*E8HL(1A zK<*iSl+&jKzGB#8V=^30+i7p^)E>xZ+;FRu4|`cF)uCE{cMVSKCk9wpV9dj&vCRB5 zbNC)W!xr}V3JEtWcTo*>Uc2{=Dg^#I!td`6mpC92?=dxzmNml$D0UPDYg3J&?e_RI z_wi=$8|XG~L+$!`($58o#!w&sk<&K~v(UKMvs(avP6-fV5uJ!6{E|LhASY)1Qp%CeH3^U0Cte8hWHdmpq)5Z5=(rjOE);fd&SMGfw|JA zPo6L5T6xkgj0Dj0^xs$|Fnj1D{p&6E7#r&@Txf#1=K)WVHxMm9HBQ5KJ6F-Jj+pHT zlw5N~_h)Usn&C2Q^y6a{V~9yg5D#3VP&VuHDL$cQvkp2JFF=VBsw_TIqN~GStPrv)sJOYb3 zUZ52fn0i_v%;{ft6Ax4S9bRuQk5y4^&ky$|q?6f_V~ijDh#!I{&PCsd`tDv>8!63q zlL2$%3*@GtbzNL9A zz+U{;S+CSsI;X)3#tST>(Zqp`oP$^H6L{`|nW?xVRm3(%i&P;Sx9F92-c{vGWBchL z-glBn$Trib`!&-gU#ow%w{m?o3X7)P_=u@F!ur)bU(T$pF;pK zwk)YBRoKD+#C<-8`27@gx>_VHXi)wO4<9ecyCjY>15xVG ze3xx0tBCv=CUc{<#k_DbV3)%5r`IO?(1umkO#g&=17#_qcAQ5fF%Gaf<_7G^f`&>g z_|wvKzdWN1hE*(nsE%GpR>W!2(D3{ys0Is5L+1$g-gpDkJ=lI(Jyblv$1S^&e+k~5 z{ywqU9613I!x=%2sPE#zKiKBt86y4Y7*ev&{l4TCPXs>mNU5^opvfDm9md7%rgj`I zBeV8%)lZSfrfh1)N-o^_a1d6s>Bf#)h4}@#D|X;WueZXLu$mQX>*Y4D)_Ct~Vv38l z=`@1TKU?xwu}*nZd~iZdPO&Is!WcWMt8zq9K*vJIFPR~ zaMphfs!;B=%FnU)|fc$~rg(5MT&O_Y%ddTAKDq=F*NnM@u}1vj9B~ z!SI9Z4y@OmIn3Dd_w3DI=Zo8qlpWOj*{lOTdSTnC!xV|(W8K^gfl2Nw6LnW_d4PuA zvPf9CdNkHnxA?Z+moUhk#beKxH>KQ`UM!5aR{V+tM+zLTt74Wz-|DtNb5r;LT42RT zmtuCl%2eF{adi=*D?k60{rb96(>qTnHnXp-LI0%ngNjqV3=uJ`JFGPBJAM{>Hagnr zO?71Q@EfikGfUVJGL~d$bbQjfD@8A(0eg9MONJK&lv)Cc4Z(|$MH~)c8Qa3~hlVig zHBbd*+ZhZ&%T+K$?|)s2`%blq1+|!6SsR~OmsJ{QJQ3ac%iGPOy9;X1Lc4;%xd-;ywhkPoZg81*x@2>qI$;jhU*-@w2Vkm)|(pI7KYzW@GkGRcTI zO!MTd9Q8mFcezy;!y>d=pI(r~zJ8_RXYA=;io;;U%H`&WZ+gGPAuOWIZ!%U>^5gBQ zyYc_m5yV9c{ktk)*Y7nbzAeged)?1(aw6BL*A73sACUYoUn1g@H4=}5NtaFfWmu_2 z9LzLLS>TA6{#e|=8kI?J%#syo1Y#_C{a8)x!Gi8GH&fF5$2wp3-Keb}R*q)INFd8? za-!*%4JcCnV2AH;vsU?+fy+t3S1w{I?5Tnk;$~9VR<7kHF621=yBo9CapU6!=dWcH z1vHT_n4KAm#AjQNoUGkOk_r$iW)p6SW+nyZ2FxmKQ4MGzR>hkR@s1g-M3lyeYk+HHWsd^ zGbCo#Tzf8aqxg1Ji}#+WdcpIaRhd($Rb)|_q*}g9?jyRKO!3joC*5j;#snySIR&qh z=*{jYXN>)fe}Sddaxh4VV-D9Q)73G^9!Hg}D3dnOp0+me7+kDljH<$aSANl$k%1;D z&8ZJt{?-u#$WSIDHo7+1|N7uW3PbYzTytF-bSVD(SFmI}UFhnmHN${jjlI-6V3#60 zY@EkcyxZ-Kx)Vls4m%HP;B!u=BltJp+)lh^pX4U-5%js2)Lv^<@I z8mM<4?paJFc;N}2@`#P}9^)@KeYH20XoJr}R_v5V4r_3x``gD@LoiS-UGJG~pUPf{ zT5s4hg$72tW?nMYCq2a-Z1d#>zV2y_U#$AyVG2JK(ooMZC%?-8)P(psHKuJ<_M^a7 zKvZR{1&Uv>rY`@uAX8l26f#O<8;Ug}48CX5U|<|slG~R{Ip1K!&CA9re{wM~l~b%C zkGkRx18dC@l~nvH^D4&52-lWgnRp32Eg$mOnH_A?e4yOY9RP)4TnK|M`EFo$?3UxQKf zba(|tC5)%**aj6#h8C$O*s6c09so5r_IkS=qrRq0>M&D;i9xkrLV_C}GPv3eMr#_8|07L2h6c;$d7h`72ucyCSyOZW#?!M$ z(HeuQY2{a*hkG9*^sh11nZKIxd89%n>xNQ_l~XJ`Gm)Bz8WZ^VD1?!S_M+~4CUK-> zKt8cUYv^fx{z23-AQ)tPg|CQ_avG%_>pup!wNAOeJWxPz4 z9wCb~w~H)~MJ)j%xjw1}mBJllGZFnJY!qbDWA?Ms5rc+b4-{9kmV@3uldU@nDqmX% zx5Sy9I9kp&CQxz?f6JY+G*A#pshG2|0|H|{{wvkGElhGOwjHcVB6k+Jb)I!w5y)ei zP35U2u0N14_6InC_xJ=Z={UXKsVMT6dHiQT7n~wiVteF2v*E!207TY*At)N$98V`Mx`$ zEWUK~Up*Zn9x8b4NkawAp*;|U+N)S?P>@QBjfY8%Yd*==+oP#siTbn0s$F#;Z@whl?x7!fR$3Q3XdrwAaRx6%$F@xKmeB=b`1$PkF*yF%5X!MIOTfzJ(-A7(a|`lNov@_rDjPRQX{x%mpo*2qX{*Nfo&4Cb2S+!&~_S4KblwEZjG z7iA7lhzqI&#Nk1RP9nrQ6X1q)MS;u(StzOJDB-68|Bm=ejn4dUPh6Qd{$@${&}!up z-B;W8o%U@i#migETyqgqzA?Yyo_4ifB4lCHD?1u|O;qWCK-5&m&bzK(4t7@sE{x$~5^O<%4~?|7++>;u_OrE()FRLHomwyIwy?FfF@+Y3+xqqw)im)owY z_A(AmCR0 z<`Mj68KPIr&Gv;m=^E*hdY&xoK3sDoSckD?NL?X9Ig2J~OwWl)6>}&Yj>&BjX8+=w zMs05IvAGbxW>9G`=r;+%Ln%Avr!<(cZ8R7$XTQuyU6F#g-KE3r^ zH|D~eQV{;@s5caeneN}-Kh@X4Vc_9_7L*BMSnn-trHKbZC6BG>R`|5Nlg7RA8*}&EDy(svJ%e=5zd*46 z4(64v{=Hnf5>f7wR}1|*r?U!oIf;s>IE(YFt>BBmuMYiT+q`pg2)< z(}#);5`AmvT=smF;g?eRGP+G0@D#e6$rRHz({<~y-W-2Wg1)ogX#U!;;x(sSwY zJAp^*7FCl>Z!B(YgV%VD&tm%MOWX4E+UAjc{N(~ihlh2<4xu}IlGY68*h&BU1JawO z^M9ho+<1#1wFeWxN=!iV7y|D=%BE*PmcQ&()GFBU*;ni)8y@}enRymj(Tt@Nb_~aT z2*JngTJRYPVJy+d@WW>ES!mZ@%{;y&Y{MA3JVtnR;wbj2HZEE~L|dVgGnu`AooBAK zI_6r^pnxOqvfpF~)%n}V247|RX|3RW+LvDN&gn8?ud53kNhV15aTR%qn1&)C+Yx&;W(`Qt?771pWH# z=(F!uKN%f6;Y+qTcMrqbwce{#es-I); zoJK3dng!UR$G0yYG+!q(TQ>Ap>{>$@mrIe%+YCEO%0@Mdc(dyumAlypK7mrNed(rJ zr}s@*zU`R#0hc3^wqG?3;M(j6qMj8fCzGEz3Xuv&`wBECVD<^kb~Mar_}kK32>(Q! zryFWibxxS)3J7)WCVR*%|4MI3WtVji;}b*lvqMgObPRE60n$DqyzWaQS`%c%*~SM) zHvulG2|l~yPSwct=zH{CY2F3pd(CS6X!ezH+aw0!_9t!XQmV&Bt;0D?B+=AN z7LH=W0p(S8!wXe?(Kx8pz0Jj9#1D75jpgUfUdEyRi*rgw#6GVRS!Yh*qVt}x&*k;m zREp5!qM!PjXj1+Q`7f>e$zb&AVHuGJveI`^+nuHU=`WJaKK{qy@jw6!*zw#u<-vMm z(|@or#A&YMT&GLkpb*ASp1^}+3bhQx|Zs|Xi6t0>^?{*^`MmLw z^8qKP%{|u{fWEm)XGLW7nI_&=yq)hEeH=bhQ`%k`itIF2PJV9P(Ib0Yv|x5uYW5N; zh-!$>q|tD=`#C#-2Qn|AT#K>Y7;x4;g!L}k^T9=r+*r4*k$kXV;gIMCnV6#Kk9_@wtka%Bn&T58xKpw0liH0z{X-)fJ*IlqJ=pvX7BWdA0j;` z{847ql_L7tXVPm!16}9Rh6JNtzKyxTIRy08EO@8VmUXpNS>R8OVj!LnT|_ADZmWk-bbWPXe^mm}s!4XRB;cSGJQOGt!-0XF9^<21atzIs~R-``p; z2K0vKi5~ZF-syKVYvG$yQeg9GMwp{oGI53TvegEaHql#g%(bflwseRQkB$D;*> z$FS%phPfvATZ$w#{h4=SB`-nyeZGn`Vxqs=O`%;+ci4&&x`UA#yWxv7BZw2k?qdu` zy|NgriPuv0PBKC9ORC-%gubR|xu0vUb(8hM0VtR+MxXkmx&}nWH+xu=$=5R%so4YW z{H}qRp|wOD1w3vGkLF{+&siZ=!se;v0Iyl5QMpVhdVAIh?j&~eNj?g{W+CTZ(*E{r zMFvghuay8g22;{WzO)B_e0Qi1JwZuBV>B*drGz+JFxsw6K%p(9o5HZlL5?F7%^iCH zRBst+KZ1{qcxfJ?os>rdb>Tx#_!(DzNp^o^jyOqcWo4~;1{rZ&9LBnMzD1-~*$yaI znFL}jr+1q_{#o96%0BIZQ}VT@P><3>mM{u?TUl; zP@^H;DW(v=K_&TpATFeHQy* zap)!YNA@Wn;$#oOJfEzRGX%lTO;4pk!Zt0)YDaLZ-t}c6jOHr{*<8Z=)|qz6Wzfx7 z&YtKwx%E|_@GOd-F!tuU{I^V!Mq0yrC}opzR#&Z5hxYnL) z;dTtaQO|N`nBW#GZ_R2`FCNwt-Hg(2$&uZfJ4kBTq`znV>+3suXJI_7obR$EG&h$b z5DfYP_N5~y+DF||m~URA3Dx^GV&P330Z{F5={Uqa??mZ-+ajm%yxsTL6TXZZy* z+pzI^!S$Y2psOiAOxXKQk?fs`*ec%pJ=NzuY7Jz^T0OU~CJYX1eEx%Uze7p|y z%-$R{g6+_t)1oaon}f(|s;7KBoek(9?O>ZTOM{zAyGfRqJkiI*t=TC)>cu}|IMcRR zuAwcwfwz5V(lT*QWw*7F@fifY0E?qVUXg@P$?(@i8f# zfZX9Ra4bW1JV9oU3Ou$(tv}5;*1({+Yr`tct(5y^>|bQ_LzJ%gFiF5S{@U;TzU!Bd zg%38}!|9ftc6DOtSMIb`|Iv-W4XY>EFhogxLYSBgUvYnO>Qy7H&_}4OjIemtxd&#A zIfth_1POCXQy3<*n<9&N<$T8{550DpXZE_q0d-UO@gn^z0H9@ll`k|Lj z3jaya-d-$NswMU#dWE_`L8Ro>u&^`yqp)p9lO#9f(oVAsfl{tlhlm5WG4^5X_gTmC zR!%}FG9?cuzRpT@k0X65u?T^BLqd+&7waqjr(rT`pf!v3t{`NF!A9z4tiyZ95l+Hi-W7lGaAyjfWPy>H7Tr#T8$ZuyxpYL!dn@W&kl*Ca z;dy#QQ{cumr$Gyyc@l}5p8dkcPEO|3}*3TKHu)NU4rZJgf5S2z&VNuxy=(Awg1sKpmj zl9SAPIOe{9C*-wNNc67-GPxTLHJuG^4LE24PezA-7f9X>ELtihxq>zZ9PC&B`^7WA zMCFs;7Z$l^TDV>L{@?WxB;qr$R`+iB1gvRj^~Na&*|feV38~P>X^Hn1W>t&~eJ~$O z)b2+|{8)u-R65hXd&*Q1e%rlcS3B3vMCf)+Nf^ZjJ-cv5&qhbM3YMD|ck2yCNK^5$=5n--P2tcduYX9IYB27WzqTPTI$XT%l z4DrJ{D-@`f?7QB=jxlFF_uSj($2EG#VV&fe zS3=pf$a{qgURCmg^fkugjPFJ0cz1y9y)i-ab9)R!i8&Wm#teg(ReO9+pYl+{ZjSN=*wfFkZcx`6r`Qx6CAAoC?a4yjF|T=Y|v(7y#sJzvbiG$30y!|)VgpY68$ z8d;V#Ab_g3a@+g_0?FhD#Kt79jx>4-m-6Su+ObRnD)|dgQBT|UUOdShW&)AGI!OKu z8;b=krsEghPvD?WL=?6KO@)&Ka$Eno-2BRNR`^pQ+S^yoJczqx@;ZUf;KH{mDv^G( z3*xqnbS2NdGBax`;S0nQ4<7+KmII2a*ho;3z#MJsiGp(Uz)(MtkTZ<;&S@Q`ii;AkizpvOM5OeykjEI5F+ijIr!*T*iwQeYOj7gkFOi zy#Q>*m&=cJt3iNqPN)_~h~*cDVC*t>ivD=8yCKc^#1x2x>oUK?WXDhFJl)gRpZOWb zkbyP;S-&t_b*=vjwV(0%4=dq|FF=~}L&o`<`l;3}O}(qX$h+6;CBh?RvOxqA)8+33M)*k8m!dgnmNWVrO<^`kuC+lv zBdU9OXKhAW>1CNbk;ma4TrQ94t!opeOGNlFOtl<^(4{E;qr<(hI2mXwy%xP7UNIfV zt%FJUnG8zF1&UgA;l)p@grZ{j6v3xH8AwQ#vVHWbilyMQHKoQzq@f z`Zv7=`a>@Qo;fsJUyz?>u)^w?VBJ{vaB8+Dpi z*t#1NUo3tRRf;TUpxm~zha$UAH0RwTM>GVq4J1s}=Sw*Pqh*AFEHQt31>&~Dm-;GE zhcOYO0Y;D%G6g`|?9K9oBx%4X?l?H9k`e*}Lfz2i^uoCRh)eP$rZ)a)HXxz7Qf$@v z`H;>Z%nDWVNrR|xOzjBCV@rO2&yQaS&q?I9XA}iyY82mM}xC69{+h zR)Xl6W}apzTTAHCcR~t8l14ldkV(VMZJUDLwALNbjeTTM)JMhYejc z+N6Q!`)4A5&I1VunYwfLiZ?Kwl|eRKgD!%Eev=UMZgFtlJ8M#P_jBAF&)u|gz$<$y zwj7GC`x&!8uo)^!en?D>@u+}SHdKadjstaPiHOW9DbB~`zqPR{P%+w4fe@6` z-^gv0<5im9WdCEoN&7#~#@T&8Tq2Z^eYp(_B>Ssk$^P9M>Hv9bvAh6QkB5eBi2hDb{9@GZe(lUNs%?kPQ5$+u82;&; zoAxBOMdepNS5@h{Qk z!pJa4Rq@(KSO1TvP8M@Wc>qrSuvyteQ<_q6TmFru#DI7!F#?-=%O=Ntg;^O@Dn*S^ zzV;gu^hU-mNLd_A-i1>!tR4|C@{bm${L45?i5>hu+lVT^aLsL!9o{^Pv^S?Qexi0m zx4?)<8%aU~U9lHfLo)mck?6zCcAl7o0BlATCGqgd4VL^S0p07n8TcLARYde!69g~y zJ*8srVkN6W;4MITa;uzYl$RrN=|Ne>UF}||eeSm);nV|Y5RcwarjPvZaC5?Lv;j}hyw0akr_ew8^ z@`<(b&f&hgSz7Jbbm+FWbBc8iSK0$ZzD1TKPVhUfZpYd_8 z?+-1g5P-0K8|Tu$22zkP&3N#oYF-Wm=o2fyJ9dj1E?lw`87Lu~pO=}DV|-x3GZZbx zev=@RR3p4_D2L(?@dw2f)Wk3M`yq$rOGj72jTHM&GS_5{1U08UkS_m{{D~U{c$Yv( zhpT+uzMVu3Iy-oBwpL?GjM>lE0*9trCaDm0Vii$NtCMKGRC6XV^ETMqDg;ofVdDx^ zkbQY8uvCVT{>bL22C)!7db5s;YybjEc!Du6aNWVgG71=P~`AL8_@Lc1s(B3 znuU?zqL1Vh(p`z+LPNy*JZ2Wg_ZoTNVeYar#+Fy)3A=eoxM;92Aqg4o`ZNphrF13H zaL^1q*=z&J^~Pl|#|&bLi<%9?aMs z#YYaL%rcklG9OV7L*7lMzTG|KZm8WP{7LYx>kv z^QyT}G~I~5pw}^T9o!8n_}%1xNx1$N7@MJMvSzMz^sAvtedn6ixvEF5_bx_u&|v&P zCMIcj41Kf`c8LkHM>9N-3{JNJ9^e=n5Ko}Svq1!6|92Su-$&dqd>1zdY%2QU5t`Vq z7D_&S*u4f=r|eUYi=2AD<#mfd$qm@$w9bIU8fGMt$Gob(E25k$> zE-Z(E=Bz7WH&SjCLX2#zY0rXl!(7HvGDTQIA~+j5tW6IIHdE250z zCsZRxIYD)#XbOt4Jgoo9ub15*-~f;N7tQ^}09ZU-%@@PDqk9rjqU+ z$vGTobQ%E&<1Qa)4u%PolUzIj;p7rbJ*0!tO@xa8KM#vufK~vaXe|6*L@DYlTiIWw z4ZpUuJtG(I_*(4IV`}_AscY_^o{V74Kpn?l`3qH0XRJYj@);9WT=ZA4X@2_sv@7t! zJv2l{%$XtHnteB95hi5#khg3Kq-gdN-LbQOKW(W6vY%mT+fthe1p6A64Y5%|zq_G= zsDGL#;J;pcfB7be<|@r7F!F}=P_iX54+CL$m(Q^FdTGR2>m?49(`b!6q!ZfHm(o!%^Yj)0}56Q z*(P`~4G(2?J?2Q$FTB`>_#>@_VZ0ebd{>g7!s<&uvoLRf#{poWiY$%to6L~*EF^Q^ zKZ1U!%g?HfR}@t`Tt&D6wBeyE6zK7qgC*L6Un}p!nJ%&)e&xk&uabr#XYRYHpDKbP z&@%1}?5yfw-cv3QAN`QFUuaNMvXFQ`;SIfyISk}-Q>O1O_ih5|3ZDs3a_IH@o^N>f z?y}wqBA{PnQ4w2=B5$$Rq5ny<4}avP43YJvX;Nh2YS9B@G3)NM^`=orq=j2g#1Y8J zJIuguzO;$``uRBiJvyRPiga>NR{n>r*Dl(whQWoGU$NpMPmef0yqV;8f@pmYrfh%u zpLigUJ-+MyR^7-peL&!L?@E&{vF{t*vn>dHfKkOb6KMYbewT#OOxlwY)+TQO zg32HM`7?k@lYE~PR@cxPHK!s4^74R%#{?vYj!5%^owfQKV!?-?h^rWTVoFZuG*X5d z?(70dpQ*#^kDU5G_lP0RyeZ+>05PW(QdQC|av#IOd9V3Z9kx&=4f>005S? zjX42S^w2KHJ7HSohQZKpioDpk*xsPTC#cXD<&hy&Fdw$Hhu-;bv9I9b%}GDJd9 zpXVtvHbr#WSNryXtl_PgZ+Kks=ig1sxa}1@6>ZA^g03%gZ89*D%Ql5v{UiTp{#;hZ zR~xl9BC}Qc_N)F7DXAhE@mPy1e6k{$KOy*OoAWp9hAWY0={KiEmOeH5(&6krZCJGj zD?9!E6fB--@z_n0-lF?xKlS`euZ`_g_orS7-d(wzJl!c`7g`6*#qtP(Q<*cxZXK1<*;>W|`lMuDW%`;V@$ zZGbe0XNd1K4@Qcx`2FvwRU?1)&4xGCNnFn_0&Om-#^y`5BDcpJK)p}jqg3z({MFNL zmD81FJ*T;|Iwu`L00U z($MV?Rf|0;aM<<}94#N#zf}SOS#ux}t~$!PcF6qGXcs zhfAH1_yO}L8@UIs3^~r$!}t<44k70Rg|Y~CneO|Ttjx%he#QrFX~S<3+OkTcoE`_= zUmhg7BY!#9yU#|8P8bn({;kO3Zu1-mC2jhqnNfvRms~Q#jGv!ziUmkKLK@{exT?3` znf3IB5w~~GEcEAv88gb-grk&i&kC|I)|d$Rd4d@9Nxnjbe8_amH>ntR#1C?Jg-nHSlY?OF8#H!0eHTI=kBhr z<0Su4yLy8-=x%RHIq4b6Ini%m_vHUAD}cFm^#uEd(PJzwqmFNu^8@m=C}&-q0ZJ}R z7a10fw0~|jwv%}$<&9RNUE>9C2;|PI2*D0 zhAi>7h2q$J+&I;fGCTTY4e7sn&7{2K%?|gzn5)RIV&!MoNw?<^N)g10!fn0l4J`Ri+{e#fciU@34^_P({b@LA71Nx$t1-I&eQx44%a;LFxK^--5S8f{6!$6yAXRvw`J2%aX-a2a@*X-N!XztMahv# z;!%+9M(K?wh!Ov~&v;VYe`@4A&z$HXrD!$FWash@)M0(h%S-L8X0*Q3qamMPy#jxe5Eb8N*9SJKUofoZ}#G?813KKuU ze)fmUS?W>GJR5a;J^}8=xXgMPWYAWMXuN^dZw;$oYl806?LCb-QF6w@(#>xsaYbq; zHM(n@aN6G!xPAvS0e>p?`|oxW-flXKd3CLx8s^@sPm{Y7=B;w5$>l=z^_+pA7sD@K zi_(M=tT$Ob#NO5tJ}!;v(_0-UX02e!CUxX!WY%-M?aP%-l$7FsR<!DW766QDCQCF$?n#IIg<`Lv;6I2GVeJ0W{l|0t;)np z!ZfC#v?3SYHK8*o%H+xI`D+;S{h~XXQ*3!9mdct3g$|fud{H6sS3{|qy7~OnqJj*M zLa$w5*sect0&Qiuhro^#h%R>F4}v10u<;wR6xt**kh&ShyL|fe+;ioU(QUl^4%DUm zt#bd!Yj6PFU?woO-sG#B{6^Y%`O8=8q+K$~*@-;b!|8LBtKhvcH;qF9)G#px#hLNZ zxVxR=V_y*_WRE?4yBV*|&x>gWp4b-|1iJ(!dfuE7QHHs#qV)TL?`TV~WosX_rGdlf z?y)T4`_x(_eMp8sAy&{n8CE1c zO^lNNhur+ds>9BQa%-)pD6dd%(}uS%Bwq>=G1K_GwxBr`F7x!^;G;BDMaaqUpK%P~ zEbCA2eI}q_y~Ak-bj(pnZ+UP4Fu8tPulHM3@TFJL{eiU?0sd~Pk?x_OEGZ#I}dDEI$=$YDn+nkl56YQG5IV9$M>hkjJ z5Xf{Ol!xVXrF+3#p&z3q=}4J8(6CFtN%F0<5?#LX<;^Vh4QzhYDli@PzdK_6v)}^9?-DJje2sJdU&aw?Onz8dPkbd2GGriU%-w~4 z>`uBb^B5frRkB?E$V^Ty|9uYg!wOu4*Y~ev6N>w_;C)p8+B16orxiZay~l-9g?c>8 ztddAZ^HSRv4Q!Mgd_n?>1Sk4%fnid`SaNyENc@vho#8)ugG|NLm}a47eC4GMy7MLc z$GyF3w<4B?eqn2|#n^m32D_(kov&)UDA3#+6tG6D1mjfI33*+^macN5LPRRFzYNzFH9l}tm zxx5J$LCwYx*@@uA3|_40h7E=fmRnPDf{zu=wx;lK8tJZ^@e2o5Ka#(I{bzPn^mbCX zp*L^IOv3Qt;k?xr@$)to*XDY&lR4XI?SytyjcCamvL_|5mEV}*MGp481C!E-jgD#b~r_N;Awd$UamP>hdr1g-R62NY=nEDic79L&PZCX-D}W| zO?H`OuYyq#{nOo%n4TbQljWyU^+cwe%{=Dx5O`VLMf+t5>Lkr4h)MEoxLgw2`Bp?` zX`0Lp$GZ>5Nw!%I#3mj~OxlTvE6b=wxZ_Po38Xhv0^d8?D$1te{B-}!(C$Z@$96;y z^0W?tLDF3WL&^n5JK|Zq&D{NbTH~Bngp}r*vD^-yi`gVJ%WH1_9|Vc#gau`KOU=vzt5u=esCAyf+*kog z``Fv`{TSX;eHIs4XcD$a6llJC5qcuJ=uXMA>J_QI*Q5 zO*3;pqFSL1mZA)lc=rHp({~QySB#x0qjmNfLn)nnb*)2rWV+UnXw;`rjow9^QUBHY z#fxY~73Y6|Vi15Jer5&+(pvoD6$2WHPRj?jj@E0YpZj*&Gx**rnB?GZ4#;!NA?%~G zIldR@>-Ed@Dm7uaJhHa|&d0efSgWeWuXlp=;!zti*o-fACP;1t)~sqDy9)t}9p5+7 z4GDOa2fJ{M?3aEUty2L_p9u=P$`u0UM8{-#jfbC6iM+T& z{bnO+Iq+rly#vmRK8O1hm_5PZM}pqh=pX~ge+aW1zvf>O3-ba#M!f@7)&SWD;%6=q zcy#l0X>Q$@W?$^NneyYE$t0$yMmne>+80E^)5aFvZ|^5wG-`2RZ&rC^?>~bdJYXIv z%{jCwWZ_$Fy{N=?1IBf<);qev!nIc~n-8XeUb{gWU=bOmVBY?7y>R^Brtuu_Ir@E-GWgFvNG5bOLZyXrRc`EWGg zY=nL+nr?o{%4@0hQ0~HInXB;nE2Y?Yx^oUc$;5ze^|M;?R|)pD3s!`cJ=wPShfduV zEOP}4CVuRi$}tqGN#VKT+SxhsPb}Cpqn^?@uYzgp;>$arExuqHMuqXc1E+!`xC*f+ zeQxq>p}1mUgk4tzfLH)E+drzQy-6B`KLbO9t>9PAIW$ZeaV0rMblM$WE7{I+9jC&> zbCa~M)Z^Vj#5i{^zb(&M!}e>2GG)>Ol516v&96|B*ECHaeEWeo+d|qej0RJ%4T|m5 zZeuej32-!g{}gE|S&S?W)6hAc03bX!s_gqzB+86Z1HcwilJ@R^&0Ol5;N6w6wzTOxGCLc}6JQ|z+eHof8X9HNeoR$Qa$%V{7LCKMxtsdUcBB*LM z4+?=76fZOdGzhET;g?Zabh`R=CcaobsBL?3TYYo7rAt;h@#+zl3`g<+*1F9KQ%%P#6q-nUMxVZj3G;yD9i%Zv`pi>HJk*F*KB%2|m5tPStkLdky?^Vx_Wa_5_J@Ikg_cyXD+%UGMVt-Z5NM8RwF>z$PD=Hp)JY`C5 zVl|cg=hgP;Par_JarA}=$PE}9S_I7P%`XaT+hQQ(E}FGm9dUpBb7IrXSg>8Q|j-C0>caZ z15~aphlb&RxvL`MBhIw7rRM%??#ORMTIME;Ol)^kV%8U;*S_O|8^umUP>8b8W2 z?!XyXBxaT|haPK$k;+}7MJ2P7X9(cbAG^iws^q!lTB^hr1zXQGnHiZWAw*UsBYTrAJA2Q{PGn{M-s|i1oKxp{-ap^xd7sYd{@wTYdtIODv3b*; za(4-YI+60i@_j?U z56GPmR{h5{3Yu;Jx-`3HYC05f)snOwZ-{k`T*GS=o8JioAOG%w2`Zf2;wXSSUSx`# zRg2T{-$35uNH+XQI=Yb(* z@M&(Fu+mSvwsC?E`32?c2PU{`tH`X~9-om5x?+{09-l%3NEA8wrg9XwWGpeoZb5$o ziseyik~nU>>ZU~hDTIH11_DNmRN}>SxlHfDBB2d{mO4f-`_YFDP!(xlLIb%W>54xf zT91HX?+<|h!#As_Q?wcxuWm%xIRAg6OF=;VdY8wGbDwhBA3hNEy;y@efh`JS^i z5gQ+#Jae}U@1C&)I|hzZCBO+M^w~RuLA5d>eB&FlDn+r8AmgRnqi_m(VS1W zv2-4-B<)sPKpO+IBkQ*ZqEGY7KF?15lfXtzV*|&^ezpO>H}#8T8!^OT!Mrrjp&P^K z37GO>=fL>n%BRSW$h~fwXVJwxHM#=Up|lm(-7`}Q5SNpTlcY+oZd#3X|M1V!!)In_ z`OJbwUyx4z6=d*B)%Sh$_(_nq@XnS5=ef?keVv0-zUhQM#k!+!kYbN4MA);x*NTqx z+a8bw&Tkinr8?%H<5JNX=$6=jf~Di(HZ;f2q$orD#VdCBgOrO*#p=ulU|*Y0;pNUJ z-unjR*`>%vDh#aOD~)I7Fz!eL(=C?l=M5SQ6S!~lN#;T!#~||RLyP;P9vHXst8!4N zlAGyiJyH_jH41tid7ERjwixTD@JPN7r;>m|3rLsiVBhHkCVJm2iq`G2jw8+<~79x5wC4_eV}J&&cA9jF!9TKsnW;8wGrjxf6cO;WRaA z&W|lzx4JeN`QnG9gC8gB0(*Xj%xfpQ&5Z{y);x?#s z&^+VLZg`ZSvwl-~I>&kKcKNd*@zm&ONa@i#91=ezf85|TRWDbav(;pc1JJWAC3wR` zr}f_+WTcx6*&ha94y{T`azTn1p`EItyu#ZLe<#ev|F+BWDfr(7kmK=~3uGHTl?RUk zmE=<8-Wr!BEC#*MwUr;aGhz2B?w=O~)F8H5o@cuWWD+3#2g(a1$Y>e6vc0Kw!BX@t zk{31A$V|*YpyVw?TXLCpg6wiFD43k_iJsYFNM3gkjO^U{+#jPtv2*U5%31O$|F%BOSR)dD17nW0}PmcPV^_HHdL z1C!%^39R^$x{lF%`pl#RBsAxhxir5+!d$Vc%6-tXnFTBC!i${_x~3akrl|b-9f=N$ zdtI53*!DdL@`0;KVLo5l$+`<422=Q_SN{{s_xnQ=K_QW~OQKY`MV2LQiExvQfc^ z*8?UCrUVDC-3C$7!l7j@-IDGtAb3{Qsi^`2EiAmQ&0knfo1o3lMMB-KStRcNZd471XY&yMigJ0(3zy&qr0v% z9?x=S6Dw8bav7^6R#=`^^~dV08tXxF6MX5^kf}!|s)XReUYLF1uLO_kJ;VtQZ-Ip% zk5Wp3^M5=q9`$87J3Ewk;X#F-Q_KsTy~W+r^!V60z|DXJ*U)%Vs~BcE4Kk;KudOk! z;Z=YBiBh9ZVIcI=***9;=Te+LG~9-{BL{{x!%KM}e3l0>Op!++!Xn{4fjGm@pzO{; zs!=`c;su1swr>^1&-zfD`+v^h^%h{g)OWslt98U&g!2UUIztT9Kji)ELwoLkBL6lh z@$DBCz38!IW0LtEkldZmEknryU9Is5+jFkC%J;IA35%tIS+IP}E-s>2|@{l!l|>i2gO6GOKjz z`O|>~;^JBix1Y&P)v%jQdJPsGjL3#CS;D;zZ2!FI)1u$6M|_ADwIyE_gZipW?FUTg zWyro6V=m-`M!#^=);N*A+=HXmV7AN<*w00?hl7{$uhZ$ElXzI>L8{sc`IELXS{Fvo zb@(eOu);^@It;ecUbu@^)zANxB>KlaHv54Nj6LZ~VjzlQ4h1OA6{j31q&)Daq=J0C0!Y19lU4yr%qJ-~Z47xkEc9El6GX+<2bVj?ASfHF3U zpFKLMu`OKc8{kG7Sd9TcILoL$B&@}4^u2JEyZFz~^Z!Xg)lgq^;p21 zEl2wrR8IYa@O=8ipDo&Y@BT1N*(zL*0>%_Ykn@|b!Z}m z?X_k{?h*%Z(825y)EUQZ=mnbqvHMr!u}yh1>CH+2D0*^eH!A@`T@4q9EMXy(wCDU5 zD+ou3Rm=8wf(b_Z^JtYxsavnZUVz+q&N;>8bu%R%UzH%|_i z@fb_&T`6FAZwM=Q;)TupkIziX=`l(6v2$88FOEsH1S%6ba=WcV=+LW3-m00-rAmw* z`bCe^O>}k(9!Ls{lhS)e2j?`8vJ!k)@x!|`#G!4L61@BdQW7Tx{urGIV14?^Yd<&s zKvkjhgUAnXaq3$)u9H)Uw@1Lg6OXaD^?=!WzcESv=-xM~K089~!o>!YbPxcR$W1uG zx7fT9T4mN&RHX8yaXT;C(tly=zu9rr`G2aEtv3 zJ^rqz<9Gwdr%&LL$bi)lxRkK`6ILhGw{f?|l*vwGZ{1d_gd?(qQ5=4kh@MIsJQG?u z*Obr1jRvQ1c7hcO7(MsQSMLv2@ioWlfNy9BBn_wgEFZ}b{(JCXHhCuRx7lV z+zN8tFeY6?2E##V{(p`%$$A$PrYD&PUo+%lLAc+=yhx1>rEr|oOT+MHWxxStdb6QX zhKwR>`mpf5_jHQMbEb{y-iz=#7dFQ0AkXK@;`3t!)DPcRC`EEQ2X1}{qUyhvY4Ot$ z3Z8A9mHulyMKV03O2s+0+6(4kt4H@8EkuLmlD=4)SJvN&SF7aWf`f%=A=_Iyo3!B4 z4zQGo9e01Od`T;(n2-AqnL9$E=zT^1k~sw)zCjA3q?&r84eSI@tx%;=NyQ>_kKGBJ zZ*NK=1=5Wv?7xnFG+-X2lzVl&OQZ&%bpzs47q4@fda32byKlWkhl!6;8Tb{nki<@% z8d=w8DvcXLF3CK6@=A4hr_>g$VxbpT{NWs#JnZ_WzY1T|MD!VoO?CiJ(p<`6lt1S1 zjmgek0xW0>aQzyUI97ky4iULnSVxdbQB%(5AHB^C7cpjU2~+!ni#k=acFj2T4U$GG zVgZ_yQQ|(r`&kZBQMS#HCuw(606!$j**XrYO(t#nTIm;LclVJb|Cey$Ki+DVZ6B~&iy(+W>Z|LjHuil>|h*1b=O@$lr9mIe3$US#yBl7TSY zrY1<|J*!5lze8;A>&x*gR$ha(0puAlGzQGG4aJ^*K;L8cg8v*>z`r-DAk>x)>)wst zN0OwHT(xCXt+Rsbq;DbN@*3Aq`4w?c7tbRz0qjpiE->QGr6_an1~M|Fz$UYr(4 zS%OUY%Mz7yP@V2zsRv}F9B&d&y~k_&{&MaraB(F$$+$vWWn5~F!Ms|e)hvrWFq=Z6#$aRY# z8epHS;35wvaf+BoE+~&XnMiGOvm&*sFVKYvnC$dcXk-kQ-kyN zbKR`(R0mr*=8xl)3pJ>IdUKEq(>9GSmPp!g)9L4$l(Y4~MgWF}A!E$VKxeA2-R|f% zcZK&J@%nC2-N()QUX_GH2Ib`2V+P#YVLo+j#`1BXCIalRhC#HX@WYy)A`2=EF0Tx*D+2e2n zOmj}Owf)EQuqG^8E9>^-uVon^<}dR7(#`OR&5=<)JJ0)4Ehe6obnR-T`X|o_lYFN+ z@7Ja<>;CYTby$_BdzB0Kx(J}I?Nv;$zmmg&49aXNt4tuSnWbAk;@mDN z^$PR?m$`fo8I2a@9*CLmUUD$WRAgoLkLa$P!QF|98p1dPUI^)0z{Zf=+oh>|4_@1V zzK4;L%Au7b?jFoOPVlDwCr|q`awKzA;B<8w&iFhs*aizk*R6|BVfsw_ljZvp@^A!!#q}b?W9bsd#WcAl)ffDVkyoMJMB0JKk^Y6$E>KTe0GF_*v@KM_ zR0}Wy@;;`D+dc0x=YJ6cJBm93Qr@A|r=RVnq@0(6VYeX%2v2M2%KIX|)k#sxO4iq7 zkXewpLlyf~en$uNb$uJAg5NnGKp0rS9_b?xglhM-;AqDuTXDiPT*mw8GuBw5j&*TL zkqxZSRf;(tzaiwU3Bit#{yJGo1@Pc!fCnMTYeO9KGju&%{EsD4rz7yzvAu{vg~XZM z7Thi3IJf)7AF}a|MwggU*1InkPA%Dcu@|Z@Fl0KkX&rt~@;3O;a*Y_{1XoiEwXE8; z$09iGAouPBUMnirwjsyjTyu{*3-#7h0*0#JsuNZ~s%x(km3~97eZP9S1Q=(SY`MR5 zz+ILV*|alt1}1fqZl-92?cTnzOK9*lIw3uJ$?cwN$*-Te)F}CbEc$K zcBQx4UqXNivNmLG=M2${2yzD}em+!icS1_{Tnvayh9QeQq=*);s_sJE7|P=PMhSoB z-S9t#X+9_UXQMSi|5;h_oj-8~ES)f^2s$iAIik2FqS(3HKw!MYG2@$XeB;F1R%bvr zGu@u|YmrStm{dhtMk5zw3urA0kpb#T=39gyNUikiuOjbxi#3DE7q0otvXx6~g~kN} zEC~C@h_%%ER7kO)$>7p~FUgRTaGMTHh#gGF=%YK4Y%!88O3ba~5;uhp;ycb&J&S{# zL$wUAYyor~K@Rl7P~q@T^v%adAew3#gc(c|@2vggB&N7UdF1x<`w)hg9yy~fSlf7t zuM~#*YdxM3Rl8~Ir?lyVpda}OrcZwvD` zJp}bqVi^&!5c)u#W(Q}(Qmv9v2`5tB8eobME+c)Nx1(}c&(09#Za*wayDo7i<^pHd zLfBs}yKwbMkT;QM8KX`I6NRdWf>VT2dc(%MM^r_oW9=^Tbx)R7DfwF-TJi>LpkU_E zm?c^e1Wc3JYwEv&c3StGGniDLGj8AdO`T!&@Q()ZGoJ3A! z9XNsn(Jv(Nf!`Q+;}~c6rhKxwXc88bZ)16%6->u~KVbmLcL50liCyec!SU~dmRZ_R zOq~P+irf2rd~r4@tnwW|^ZkI@rHPVC?fk}i$W(#JDIFrw)wv#YCCU=M19iPKE8n?e zykh4qI%NcKq~1KnL?$xGS(ibRR$9o>9#jDTWvG0$Qz@+_7z`-v(g#YMmM2%Nn6k~l zMFT3j9)523_;cnn-roiAsoYpq_`Kh0Cm+pjEICJTz5Jm8wv-$TsZK29-8;Vx0--mn z-8~R1q-{djlTzf>0~2p>cq0{0-!!RmB*#5v-yzuxBb0dgRXn*LlddShy(AfnUkt8g zMJ~;|U<$s4Uo*0RW|ZrG4{?I?$w;?jESp0WyS5V~uce_h!}$}Y5{zCgEyZ_B&-2`) zIur53cj;>M_=b_V4VC68O528))8}dIOZt}%IihI_n1E+wwgk@0oYp(zw99~vX?>Aw zWSScRs?$NmhQ1)I;L(LKK_)P~p6R<)qj^pD*x6iV(*OQhkBlBmxzDqYaJJZefuH4A zd!_z1w3H_O`v=9&brW9V0=>t_ISm=Q6I(B1eP(lm$QZH1dB4^ZPyRsB0V&EI?t!&Z zs@w^Oas?DW`hz*~-HN-poi$Ga?b@qDcfo02DZ~4|2BccvV~YdD)sn-gsqIz{saTl+e2Q#uNAG>WQ8DJzq+_#zy+NL;ilSZP^M$h z=aVz?b4(t2cLq9z!Q>0C8mZg*T#pi0#Kc#+;GUwFu$a74VlxNVHUf>C@s9c2yjz8v zh~G~fI|X-?EG#o)F@5%(sz1nn_%Y2c#gr`-)!4-#Pq86xIi$cOILn>3yvU&Viqvb= zRXBSC`VxYSb7BCe7QQu{^Wz%?*;b4RKGBq0IYm-kELCGn>Z&&oE5iP{rBTjmvfVP99M)}9+gr{bcaZ~!fO<* z9Fqm_k?*jt39OE*@qt4B&$FWRc2DwYm%aZt9i!6=0Bn?lM^#YD%$dMy@j;c2^PeeO zu$)28GSB3JlI~0kRmgpJbblUO6%PJ?{))14eV|^~cO$wGeeuD)-ZxjX`i-xqGIHXQ zrd`q~94~^4L9qPlSGulz`oLVAR5OAVLt=X8y0cde#NAyNjB(P){S85WLI@8dH4sr$ zwX6>i-!>0_rz;r2JsyW6bJG6vNVbs;Hr?Csvf>=GPSSg#+joJMMDD=U#Z&H^6D7%B zpbgcAS|fmH6ud@(c;q(TqV7lJOu1}c?QW?GQi=WjC=nm)ymukjm{h%GT$GAdvQr=~ zG~qs240@5(x?%(O)peZmH$&;#e4j{i#>Q!dZ~ymKPc(S?N$VA7%D=$riwK-X0RBc{ z82RrPJr|*~iassbL;}Y>xaa{&+G5ZC2EOVUhO}DQu>tG!rB(oG~ZoyYq>Fp6A%(6sa>5RJ{UX1?KKKzg$k{0 zm++S%GT@)mAjAR1By7O<{$ALAhW@dFP04I(ddP#U{-md493p*?+#Z zY6w~LB29Rq>453@;c7VVQpD6fcQ==-xB~b`-M6jgKeEJkE19Cq6gJh)hA~)IwfA0G z?3`)loCEGdhhyl;jyHVe5>{sjo`VZei}S>JiQ%9vQd1FXz$j27-E2xu=r>4mG1J8k zM}t}~q^zf-{N9WthHqn5NSXB)+zp0l0l>pTwfB=C@LApIk3?jC0qj~0g^UYmX4t#> zQmlHRK9*H%8elv!kI~kFIPE_9=o7=NvX#f2t$1s9xb!%>HwyiNn`r8p?w35lU!$}9UVfpC47Px-A@E{oqw0WWS zkzk7=#Vx@~YEGke%xX!4A7wkS`Kdb^&JIga1#Ln3UL@z+ap(cLXLY$4#ev`w9tRk@ zqku>sH6EUoiDp@Q z)=~;!-}uLWG*QkW1PPWPT%yD++5G-YECj}Vt9&SQ0(uXy`@pV(1DpC~PT7FOC7CcS zlZY81t`trjF`p5+3ZrC})Gpf<;0Wh1rd~%j!QiHgE=CM^nlxz_JNeIB?=64wPcK%b zFK~$YHVs#srk8~XmDK|C^M@a>u-I5eO7FJ|Z-fK4WJBEy#>MJ=Tn<6`;aLgSZa-sA zj#7M=umS%yWg*}36j1hQKx5N0kiJfCOAgkza%=d}y1IsA@x3v6| z+?O$iq$%XCgvgv|^igba2l=)0m=|qXcGlzmbYMPw6Gl`ja9A``hCF4?wux zSGjlWfuqd7jx0kkzuni0p9KD|`@>C^ncUjKQhvf)H^R0kssK8-Mlcr0m>?BXhnz(f z>7XTot}ALk03>sEg{c1Pu+bHPeSHDP&`+RFSqeN4fO=U@pCxL!Ct6nsej>lUoBxZr zJ?so3CJwVVUQ`F@+`wUttwWZb=uNAUr(lrBCPoowaOs$02O-Y_*f!GOggie8BZCeQ z)KIVKpE!Yd8VuLdtjfJX04!ev_30n|nU3x$>3y8FP!e61&FhZMIS!!Dx)qF5Pf-SW z6@5z41{9h6Oh<6KRbKFa6vn999cBg(w9f|Z{l7>{MmotQs1jpPot0DI0kX&nT5#s+ z1q3IZGU2L0GW;NZJqmSDok1&reXIFdp9IS3{%?fQwZLx)W@qw13C@8^bhf5Xnd+80 zwl;PKZtS7p!t`?kARA+AYk3mLSgFDEv;W}kYs&p(Hu~Bpqw?TFW)9_UkD&L`yEOuM z@fDWl-*7*@d6HM2lL_?fFa}s=oq3DOjG2nETMhh>b_op>zz! zd6G*P=Wz&JK`6?}qei-=H)1yb%bxi^6nSf%UsM!;J9cIqB4&>G825~bWmOiX8_ zM7lvM3CvcpuSd6hSu8{{vlvw~Ka`|{&m%=IZ5;5atEUaYB2A`F^s|S1Kou> zLVr(7k)J?^5wuN6RNZ-YNBa5}Jnea)PYzNovZ;nG$T!IauH)wMN%YTuhC4FvIlFcu ztm`fL>ZyiY+@&nM6qJvp_A+4%PUij%klgQ0EFy3Q$&X6USr*e%-cBC|K8E(6(O3eR zRH72w2Zc+wo)0B_7A~YZ%4Yg%4U29Vydjz}7cIXEt<*We^Eh<$FU?QbTS6)Q0N8Ok zEFVV$?aGRQ$T6*E$L~BCh#H$oIZXfX!+AKPW@h9a^;pb>sLtPs(pyOdc0s%Ep$X|( zdOS7qe>74OTK2<)$u6KLNs+uR$%S+KYqXL=_+9eVL}}r(YU0-bKaEeHO1qJt_TtHD zO2`R8EmC}{PEYJ1XDLJCJawVAn4ZV31J9^C(NI-kHk2Ssf@T!e{`rA^$k~4_NV1!T zQNt#D>}|N~!o$6;{m5N-g;G(g9K7(aA+6%Kr$0flYE*x@g%pgQMVE`$v@h}93OARC z(cUMhaY@f8xdoxHE#YgOA0D*a{7iAt26`WQ9wC_`HAG^e^r6W+**>KA|NVY~gr4;6 zY4Ul*3tDO+{fjp2 zkDApE@=!kLT}h)cD^&H2U)A#mTzobF+gyhK(UT(53)s*Rp}+Zvw4Y#Sh|iOnyN9Ge z8=`{Yt_KF75V6d#bF6%6mbHEFqc6DxVIZcuP&s@_;waNUBx0zT+twQwPy0|vz2k?x zFyA=nApX)WD-|x)iBs+{*Zs+|90KR6#r8Ihb-U;kNmnQLytl)0QCQ47Jif13d=BGr zCksH%V*2yRoviZprWX^~*hgW`cFL|Wp~ByU(_ucN`9mR9$W+?9OtL~x;*&yG`r1_f z_iqF!1K)N`_xekc-+{&oqSpz1jAx()A;1L=jn~f?>E}6RlF4RrpYhHLZ?oG$9+Z-vN~$3^}pK?&CYFY!kHw?(S^!#2QQesm?|!Aoy`5mmiDrx=L=c@c{c{%lH{= z=FfQq?t_5%@!H_Y3-^+zDYn89R|aR$uZhTM1mX=ih|wwFgv!9=v>zRzO^1gq?{X%2 zlT{1kc5U6T8B9gNmNw~9e;Djh9+++Yc`$4B3hZVBTKEpku8HE;q2|PPtZKJGn=;Y7 zFuhEVJ}Ij!vJ2e`*Is=G*vJet#I}=;jx{Z3qk?M|2PF?B=h3Fa0$YJ8_}7K-E2|opPA|a;e0sdQSUgM6Jo5rLIJ|>?ZqX1D;WTFZXn&&B z8KhUjO0|t_t28k`nE|Jv9QBEyC$gSl$yd_7Mgg=pr6uQ0*sN3P5P^mR-E&l%Zc2Lw z5gaphcNp57QMAK+Ld{JHg;JEd^3&(l$y{4VT@fiMAgU-%UJM4|D7$3=2@8l1sB(HX z8UCEI;CcNDkL0S*?(m~!e&tX3?@xr%5$@1itE?}?l=}Bi`sNSm!s^T;{GMX6jCw1C zTNICos9^#85cJA_0;y=>Dj<@&{)njN>u@HhVk2~c4T4n?r{Ov(^qC3g?FjJ%Q}5-) zo36`sX(y$u;G$!jhxMsd7~|eD;GvAa3`6%n+2%+$3HXsl4JX9OgDgE{j)0um#AK*u z=GrsGu1*7rc_2H$G;slp8?_-z$Wc$R3a*a6xslRBxbh(jNOQZPQCTFaz!V}GH8e(q zs^m-g>yD(}vsJx7gb6pN^tz=yaE>4zITtXI1UpJ+B&Sqo7=sNS zZ-9y+V0tX;6+>iL^27TTAky~lyJre&{-fR-#?w5g`nE*Q8ah}4JzZk%J5w$Ff!b~@!i-u{@yXif&14FZFHEjDI%67=c+{KC zrG;T4>c*%HrI(8>z}!fyjGcalT;i_Bl;=$ThWFhEu;2C=F-t z`||*KfjZY$-*7ucvDV`;JMw*u7PtdbDR%MA_28m@$so!5ja+?Tyj->9rC|i?O#Xct zYVRmPf6N=)@=doTkguZS6jBmDLS$x)X?oVRte0~MO_8n;hy-{jrP~Kkd>#~jmHhwx za=sv+5Bra9el$lFa+sD+k=N5}$+`rN1YM`vV0XDNNX>n>U(XRLKqI!j%=;_a7(be$ z^S{{5jL-kt;=J+&qJh@Mz2JT7!=bGH?V{0xdW{HX}o-sJx5NEqad3#k14u=dupivOtaZh z&v}+<9%8t9l#Urta1=br@kfC{y-M%JViC?`%}i>oD`g9?ZU$l&MFvU*-99-#eZ8(e;t~T zp!AXcZ-0oX8+g>_hV)C?JIwV!pz=SF52H&_Fi<`tR9`fhGlXmO2(ZOsIw>*G|$Us@l;fJ}|j$`Q3;8UYvi3 zeFV0pAS#~fx$d`5^Fhw1YorYTOu$wt!$SwJqvZfeT!R_>=xc-l1gAP+9R+S)AB4pc zTE@y6XH=5PU_oci4tNRa#b+cP_oZq$lS4Y9w|k#@+u$M<6vDcZbT# zp>xTQ-e*xTe6Klu1<*k=;!7=u6g$qj5k3G&dXMq9t@1xZ1a7&L{{5ILF7`j}r681( zvvJ}?YioyK>-pRN6VcW!ch1j;f;!!EPoc!_1`I{7_1KI-9(+jxs39X=^@BLCQOYpj z0qj9m&^ZK#sZAJiBQ|@&=7;wX@^Mfbf4?5`wu9lwCvX1gsY z@#f%@O!8Wq>_ zvX~dA9N;$RUR!ifxsJ8Sc0;`=u)yX+{u;wbCz60!twv=` z|D5rZW7ib)j{e~&tRP}sl!RcbDRyDlT6V32Ko zM}&Ct5kQB}xCH+afk8#>%DxnR|Dk~jEpT=QF+WfcJo$B>=A6pZEq#pLdGATP9d30y zU=ydOgcgkSNNX!08ZuW$=+;yt?l)qXlSy~0*mODwrJ3KKeU;EBZo75)zxU^Ad}p4H zBa7WAmwBCx_>Y$ii!obLouQOL@yOmT5N@^GM>Fh+7q21q^4jGs36H{AO6$?GVooMT z@qe#s5Tu0^sHw>Ue(C9F8@lt?@AWgs+)3;mXr?EVeE>?PH9a;eNZL)qKI$0dhTq>~u;+;fBEur~#>^ZNue4vOs7jML5258utS`&L6WcjntV z@3wtS+mFYlxoyo?kb{C#KQ%#+eDwY>I!X7_Iu1KO`4V5r5l#V%i4%rUTC7hDFX}?5 zF@#q+TTx5yxBwL3JfA`I>OGwv1o?c5%!V+|#2RKu!e6@_yZ7|BO&Mm-ybJ5|eV6+f z73m==8wQgoK33U^U+&12<CIb$c`3;RjAJ=tQ!Qf_TR~6GJ`RIibwQlf%hmf|1(K{k!6^rQ%f!?YL_2q0yUhRH z?R+_mW8{L8Ho#wX&)9@p!*XFG`337!+N0wQH@ zNeCV4phK6=3XZJY+frH-QCN6#5@#qKGRj>DE(adxsCC=S2g|a><-KJ)Yn7W`t}N;u zF)?|Y4VC7Rt9&|48TRZDvT@PwZadm`>MC2Kj&4kj(rzpTC)53V>pARfA;~`X_VK~7 zTU~_hR_L&oG|#*P++T z@rYm>^PGg;JDT@)&6wFljCNoH6PndCPnh`oD&Z{p0XSvsB@Dcp>reZ?&Ah~Z)O zzeu^9>%d|-z_JqPL75Jp)ZD2;bcAu>2jKnt0pVkzu9W4vcsaWpkR_MFr1X5|9m|PL zu^2tTQ6YCdMFpUwJD|p3drAxpFnHd~W8rt3=UWfJ`*|~tSTbIx@rBvgqme|&#;gH7 zs~*Y^N7cl0Y?^8Q^FfP{?9mH|Uw+|T2s(`y+GY9eZiCl`DoQRK#rA_@qbv&n(SsU$ z5X5v7ApLxUDy(IjyMs)THxmmVzeFk8D64p5z7NO`(8zwYAq@ls*YgLs-)nb2e5ZX} z6$_rzKAlF!pK)y8j4vl)X1iVo_7P@$cZANK;f zx+ase2~+~2g{605kPO+OJ<#PY0juu6PBS4G%|tCB{KYmOFwMtw_<5aqpyixBhn^S> z@n)2uhVL;#KqNqy)5#3{_#K#&cdVY&g3llI{7Q@3?cUsm+cC#^<6B&|xP94H^kMEs z8$#_MaFtF5?e=qA0#aQ&sU9BS!9bLPv=uS{;g@y7?@?9m7JP#F4dd_$E-Zlwtykb4 zXzl*^4u1^`5JgUM@w)`{{7yP?qP}9!E!jzmRaE~zDdr98m{FLkv>%+FSeV$fkIP?=oquA3diBHc~|(I88&8HI+qtaXJYs=V<7M{u#Y$+ z?+%nw2ar{qP7=x-+i#`63_gJ#w-;gm3O61b0z^whU?k7P1G8J0sTrG4bCQ_z>y!Zy z_{U$*SV3@gPqO0E^p#}lRA*1~9_V4ys^wQ)*{2;%Si z!TX+I`IDv34%gc*R@;t81gkd39e)MJH!mahSuZ{5%#C&Adg>zzVVuc;Jx6aItd~Dn zJ~kYg5ij5G-3H_v4cF;_@kstU{};VRLA+~8?$}T^s6x+WgPP9 zl(!u+Nx6IX1DWxv9Jj{Zn&B%dGM2$``#<*vz2#qT`cn`5)y2NUwOcduL*QiMYf`G} zcXXGI|Fi*K$v zjAL-qOJ5^oJD#396odaJSrS1l4xH3ea!`EI2-^!I)voZJTR^VYLh`o~-$k%{`tdkDx= z&cKG_@bZHT;Wbp;I?q{cfSu#azluex0Y>Bdy0^7$0GE6Kh{r)cB5L)Di(sqM&2`ew zF$tJnxS{ag*M*$Tx5eGr%i)?1@X zMjE&+D#d;yRGys^BD#Lv6t=wbQ8w|(is>J2+5pmZGQ-Fn+@xNQ$N%i~J0b?f#4BE- z;9|Ni2w$?F2hmF!aFl0Gkd%7(PlNL-Ez%@*;Nc<^Wuh!nQ6lUXy$4^8>GIv!IShcv zWC}G$(5oqqpePCFCCOVSjgSxhkF#Xo3;_Aw0(ZfK7zkVmin;cmKAn0oa_@+-Ev(b+ zG&W^w!*pf`_^mP=rTs4DRYjS`Cb@=f6)o)T_K#P2=NFET4}(Q1{`Qr$A3{M4l7VA3 zbS!_Bcq>&QA?Iyk3?pi$ma(c#F`*e9|8(C!M$bY;t<#Az~>i-#KDPD@ST@A#wmVOD;Gr3e-O_(K2aQ$ex~uj4;U_H^9O>UXw%fs z_8SdKb<@~GdbJX*Rh*-%UN@IQi);q?DmSaF=*j5DGc%b2C2fgXh_0y4Gud=4`*Y5{zzwe>2!LEY5|Xj%WRQQ378`k zKg?oixbUMPT6EAFjR_^<NJ>zhYnP%9?O)V$m2Wd+Z zTM(czw-vsQJr8ohpI23ENjF5}mzsIe@>YyfZhao|Ssl0@p-y?Af{FrkI#3q54jk)8 zcZYDx8@+7Y#r6E|ut%-;ZobhiEpPxJ)Pjq5zpuqTc*3nqxn{;UCV|r9S}Zuw63L6e z-UoG*n|d|f;qL$MI?XLXntM+HHJ4~*q-`k}6jx|^UGbkbdWBmK$^K7!Kr9~QW^iH$ zNum0_%Zp{t4i`gHykYLG_Fl_of01>)!~)m4GWz|YOJu)e`={rf4y1B-8Uy2xX+ps{ zsXseSB5ZAH%x~F0L-rfjVm}7U`IczDwc{T@10kp0Wv=8AZ_;=;&;qr`P&55S|DWL0OB3}S2D+NZa3i2iCU;KIXF>}v)%Eu;LXdYMGa z;iFzZwgk|7y*HAo>T6hl<7)hYo zj6-Us+*zT)MTossuRe6^0c@AuJc}@sY0uMB)Rn-R^ehrI59K>c?=h|K(d82{Bzw$i zsK8+@v?aN1p$-t7yK5v>{7tqa{msDD32BZ(BVEwFO~HzVFQg-h$}etERUgT11%&y! zUPwKchBc-B#Mb#Qsh-E94zLVKMVFSk2qkJ*Q`1t{@ z!Z?S;K@KR;ZnwWE@3J<>v=!V5$iC;$2N|L^9oR)PBZyNso)&mF3aXNdTU6Eql5#+! z=F(6&Apt!$0#shNa{uQlmr2w{gNEIr27@Onjq3^zoM-dk>h-`cSKlqaR1l5%#Hf zyxbmpJ1au;NpIg`i-2%N^FogPKr;iGz|gpNU4?ZZN5Oj-;=6))seHWOgr-*rRRCvy zJz^>e?+Y~JUH#d82IU>yIHbmo)38~2l-9_Zt9$JByNvE<<9MzYp+iIMr~EGDP{~G& zfl4sV9qySXJ}w%JqYjvSVZy)v7Lz1aTkeRVvLL{ao=FP%XyP|t|E&T4Do;dC`LMEg z(EO;L7~o)GiVE)Y1H|N5@MCF|`9L!na^`r(q#C~zBF z#*caUf3~&ZuXVeuT7pT2=eghdG|iv0)Za``THC$hLm>j1{ghkIC$%8ScFah%%-iVu zlh22+y}pah)Gq4apElawHtUvjoT7@XQU$z@A5)~I|2pxPZR&jji*9&Y?t$(z}9 zkhV2PdG8c9k(G*?>04z`r4Bc!BBI?*=I^}A=L?umY58=rJ;e1=5{`@nnn*ozWCPfL17(DIMMIV=jg3FRf9Ev~ZfUYxAh zXX?~A-G*T_7~BF}9_ZFLB%V1>0WH1`7R^LGwwg^rBR%niJ*YtkqG-kkMf$C(+p0rD z0Mxz*ZkF;Lf0VER^$Csr4e;_zpEJI3Rj5v!G*wzg@9cLSue-DGY}&?$O95Qy09G0RXgpqfB zp4B|($m+&Gq2O1RK=a}3%PYky!a;6#!wi}(yn8nS(Ju*>Wa<}w=Nh2C{Ct)l4L`F` zU0TY4fBMGECAo5B>AUjW=#Y(DkH*85e$V#t#%cGk?mBsW4Jigo@$|F zFx;crqab}+WW7-VCcYJIF|QMCDbcp4-z4-|Hy#eE9E)}s4rNfvoPaxobpA81Nh&YB z%PNRoUWcI0m!tC{#LLpVHWfeRTs|@)>4XPe@}CS0+ziTrmpVj1g!rj4WFv zzk!x`OWEl~CEk{Ff16+sLz$EO^j`O9aXh<7qSfLx3O}rF9k$ykcBQ zVMl+gMKOQ^Ey|h687Hfpr_+6?=mS^a3AOS;J+r)MOSr|@D3#f#+O4x$tqHY@@kKTL zhYkfKCy$XWK#a7;Bqa8d{|^!mGt6M(VH7iDSH z2%Y09@AIFPA~o_C5ewgZ9hRub&uHM$X3XsfXWzR!17vlMi#SZyziz_xgpKsvwj2mU z$tWjPkKM0^T$^tQs}sA1_X0X)sNBoc1A?I?nYh8zXPadblEza_xyJ{L%yehjhggFw!DK<%zB~ zWq`*5c7Vzgg8-eEiGaK@H7PX~N#ibX#@Nyo6JgyvSp#fux~OlG%~*vNkO;MIAGjNN z-+b>0JewH@d4caLX^|^_#aK4gwA7>JWPmVq>bTaAncM;0E!PH$zL?J#=BZfDuq+UP zr^V;`4FEkh!mNY2YKfzOjYO-pTcA1c1mxiIsTysA3M63Y0&(A0m}}R1qruG)JS1-W zD4V1nC50K>ofX89j!(uhE2vxgl;IH)2F%ny{Ds2s#(DedctC9@2?dCft|=Y+)mF$; zp9;c=NgGm7THgmTe=n#?V<#{OYe7@9SmyyRsmILn!6zc}Jxcd?C$sZ)PK!7U|NLT< ze#+sr!uIds^QS{x+G!YPfX7p(wlaX3OLJh35<&w-Kkk57^vjTfAFI*?4fXTnwPK1%YsA1^Y7b*e9Q3corN*I^y{!srQH%X6AkNauz)s}kiBzF z52>y}!astK7GI_3u7m!GtUWLWiGiBhA(1^VQW>Vrh}8|re<@nSev%tW&hC_IgGi;v zg|$L3F&WM-uo5}x%QMS;tfcdHB3tA{4$V{E4a}$j4JQNOhNtVtW6_+lYDtuMtp>qi zdwL)D)9{*OTr=YUa(e5A#1I#?`eCwoJ(mgYe9gvlU@UCC*M?I99e(*3jmx5%tA;I* za?~&elDAr6Yez_3O0zmB^T^$|%n?*T`CG>w$u^b>u593j6C2YJty)~Fq&1cU*m`Y! zJ9hT9Bo?E~g`rVJsIQ{I+FvFK7%UjSxzMCW+g2#hNIUA89O2OXPah{$416q~48E*} z;+^$(Lb?b|mT#K|gS^u`3ClDM2WW)uCS+2JHnzDy9iQ3a7|OGI)>t2GROaYKTKM7U1Pl9^C0skAkULOH*$cqZ7NyF zY0i5zgBm-n;UJH{RN;LCru%f{2meWQA_jym+$|@-$U(QrLj}9&K5kaJ362)_UQbBh za{sbMzvFPGB_CUjcIULt`#hV{S5|Zm3=poePH8llSR^tGJ^ZqRl@h$!XWNXJt&(Mx)Q+#q6O7;a71+A`v$pko5TfSXIVG~ zp**uM4a=x=ljFysF2AG+jX@To=+T9NQ;clegH_!osC)+m$}St<*!5XKwo()`?3I5CQ(2_rIfq zxj>^_dIF@MnTp{O`<5TBbdZIowH~&zRa1L2ZKMwEta-W^*mOLN$su4FPt7Juxf~w4 zA(6J5`1S%{`6K1(n<5JL7#3NM*u~Ih0WoIe_7RR47Ryl4b<)0Loi7A!PCXbZrSvV~ z3cEw)f*BXIZDe@lUm5Ls2S)zF!9ts?4Jn1aKi=pz7jVO5)J7Un=@o!f?zQD}=Ku6; z2dOaNlt=2j7tiSP@~Mm7=C&%x6Bn#m?Nf7zQjQf;8-A3HI;{HaU*|xnhmtr1IB1%6 zz-ytmONV8}0+~LV^9Iblkf$&4K%2^zE%gT9P)&yuaiw|C9&qaR8N40uLxcgtYW2_H z;cqe8E#DY@SJ;>e2AQ;wp?oh(@_CeYUM>s&#yW$5APEx>LC!J9x(hZ#-6c~|O2rl9 z%b0K6zs1@Che@~%y4ZJ?;f$nUH39X|uP*1QkDZ51fKN;HfAM+8j z{jD9NcQy{rLv+{mK5GzEYdYlTT<@*vgPGERvTQ;F7rnHN*diS>et7aa%zM z?ofw}PTyY_cu+RLIwIg;mq;2mq*@*XCaF;@?8(uS8ut{pS9nbp>TH8(MYLQF%Y*6~ zEZ=G#g6VJ&YBvO`;?)2=oHB=$2HI<}e)Wo#DD;=WpGlk>KZug^=9@V@3;c$BA*b&K z`Edu0Om_AK6@|7po&`fo%JcJJk%jTM1pH(k7F<5hnCmuGHQD~(&~h*k-GIK>nys~Y zO`5{4YJ5e^<`l`Iz(ok&ZWIcE|2S|vJRQWYX|xcwKF;>jzX>JwTSB6uvyG`wv7?S^EbL~3YzoBI>tr71tQ|oOkv6tF@raHy^Zp50 z=$-x@|0C-wCq8pkaKMCo*_4Vdi!?k!_@DQF*lQHG+h{hrr(e$LN$IuwAQvN^ij#WrRg&xTMdr6QPo_r%yZ@bPvT)j;%1Nr#emVI&ySbX5Vzz z5(For#GH#jh@q?q57JUk`t6`3RQ2y zO$}j^EWL7PPit7`pT4o8V+>dJZJ1GO&HNb_y*w|jfnSE-z?V575ZKBcnY<_$GUq008ah{vpZ8f*Zfy@6rILVIj38jP5dfIMB;M@SAYS54!EFo*m z#&}N(?|H%Y)py2{I!7kf>a*-tLp9o$0?p8G2CFyoz7_LZ@~_)Q6MsZs|Kc(Ghf~cH z6fOG`nB%I{63dCu%|PxcO?%!EzB|CyuhF-lF(UNy0FIh{T@95{`4x9>jc=r|P#oF6 z?XnIx$SOr7a`);v->bo7ZX#%KQs9ckoDSBF`=WJl7bNmq6uIqPxi72_RUg>7K@iqV zV4)7tIWdkblNIwyuQrMD;8{HV_0gF}X7+|Z690JUzg}%ez{dOSQ=|h0ZX>K%r)37J zAGO8|y#8ka%=N@O03>J9q=T z2mrZGzpK|FL9do^>O3OY1uxORjx)Y2U)(iJJ`L*)C8pA6p~jn(B9LJj znd)Hid4wAI#QX9I04~Uvx(nr%Q_x>4T`5tnP>v~UG$E7D2Re^zASuYuO15tk zVUfkTou{O8*~y+_(yqqQJ?ZjdbiVSOuJ_dphuk3&V#_l~6>6n-( z^~cMg2z~U&^t*k~_9fEmB*``s6SO_k54e7m z9RCh_ZwHfGeQn(Q;`GJtAGM1aPFFz^*Xr#^G5=}S25ZnZFG3351?g*7C+ooDtadKi z%aVvMhthl!T!%x5b-`AtUvQlZ+^JKP{2>`#;vgCQ*H+{J`dur03`mymp9@at^0M*l z2}xFqauG}QPOmS8!)!TZrCE&BwVO{%1DUYaOot?X4&Jn)B+{7nv_m*Sp_tU`ts0U=CaVE_L=k4jMvm$*z`2i|21bd@bQy5-eW<0@eh0v>x z<<*gF!z_0D;aA|iG7|xJ4>TO=b8f+(6RAd0$WA*eDlB; zDGC!NISo;7g=1@3pmSdU#;xB#)uTX|_7hF)CI3h}*V5=M*t0amWn=zCJ}#`161>va zSuXsKi^vIGMCOGPVYgvl0}kMD{qr@t4X1`ayY5?(b(w0FH+C+goS7BEQ8K z*dT?myH-`-Hd22x|JDvolzx(LkCJaOp%Su6e!%|R5n8HVx)tpwZig0Pqb^r5LHZg5_!I3=@ zj>~Zy50)!A{~6Z-^xp)EWp_wH52c^FJd^ez4QZV()d3xBTCL-&|1RtXZslO#--n;Z z?@Up{`2_P2@O^x?igC2GLpgc-NTV0LWGCH+5p8AVXae~4!~glE+?V7-UJQg)#F{CbY1&0JSngg2qK7*DRd1Jw5>@vLHgE@RxhN#ESr>jB< zs8kT1W8Pwim}MZ4n;)cjuhhXIBVfupeH4v5V!<;n8~e=x=~4>tZgr^qa|@~Ve>@b& zR(?X+hd2&2)8o2pjrN!;p)tg+^ryCnk>ZgT^3i9Vs&DMKbLoZQ3j=JO5aFwD_1qN8EZ$Gi| z>=WMo0rbqHK!K27sm3xd*7M*!ftS#57xwB!HvC^vAjTh!r%Jm?1aN8XOtS!TKTI?I zcDEW2(wH|)^GqGQWH^KLhAn%=#{oPm~GV}xYBz(j6 zlth&hI9k8;|7V%=e1t;H%eRs8-Y=`|C5T+9YTQEEZuDp^y@MX}EslL90_!Xsks}{K zUxJW7`?l{Y_f$I6*!RiZ_;~isT)@SH=}8T&`X7Yp+T2Px=_FWN0Tkhy@v~kVJ5UA2 ziu45Y`zV`82AIXbca`*SSL=7ysoI9`aXcLnN9Y)J8e_AOjHFlLFEjv}$-*Zf-1?BC zM+3DX3R>T>`3s1`JokLDi^rT$5d0lw??PQidGqgqWzYlTU@n`4Tu_r88-w9L`-^yU zNyeA*eUoxP(fxBwho29HC8k656d2z?9OGVTKk{u5WbuCN#e%DVU;abfI<$}ZG=k<_ zKbt?@bb%`T(p;-ocsA1bwW3q=XQ5a540#2_$Ayuvw{;aRo3{(bEMPu)A^@Uj4v0dy z>V>~O00Iyjf_4Qam~}7<|KfuRLXs+9+4f?X&2XJ9q@^f z#3d@Q@J%z*MV{}k?WZ|F8~$hE?FVa1=3Zz4BB8T+Zz`$u;%%1W=HnSa`Ht-q-MuM3 z4;9$pkHmA{}H1v*UP>!}?+ei~ROgnnl?4KkZldKa+fGF#^YzRu&hhsW6h z%_UWV{NT%y`^BvzQ85sw(`TVdP|UP*_7YtfbzQQ=Gyyl`O`#RqFTFrze(wmu*_y_y zQymG8U+&A2t{nMMc7GO_o>|DA$>e(y5L@G8!OUoy#?$jR#h>Ev01y*44%N$ijYC$K zJ?O&T@>Fb}A>6%ls+J0!)G;tdCcx7oTm-2p+my8y(Byqsck%2IieuqG1s4Dp3`Kb~XQN(#eu|L4g-DV+0a<;sWEGs=*;oe#lb5OElSQ7$%R zM)~s#H{2$kuF&TyTmR9Hyafs@C=0?f3{zB>Z{995Xb&`Bj}2LTm=7G0WNR5|Jsv?^TBK(R>%jJMK{$p= z8PL^@yI|K;%4w?=RnQZVypE&+iG~p-%aDG0%dB~7`_YV_?5j9R41%`~@3N5*9ZWgQ zh*}4mCyicu=9B-duus2YuoEEK&J^)&Rj_z;_iX3Z_LGdZgf~ljiAOswN|ORxNV_3y^4s&y$jy~e&e2JT8KLK`IH0G zD=RfHx3&Wx#WbJ{8*hGrYU#u_@C24Bh-huN>53%Qy}sZ30mt+cSV2agy=fKBvv3L1 z^wS~ZInDQD{hsvJka#{VWKld7GYqpbZ2^4lYERnxn79GeUM3JuxW!XI?^GU z1A%F=_%51y!owE9xgpt1WM@HAQ_1bvIOH(Lewjx^nF*4~0mQ8(rA&y`+u2x5CD^^V zFalkPNqd}lYD+6XfEkVub8#p9g$48%sz@+EqXEjbhsj%L<##5f0w)}G;qpzqyFWm} zqtyI;@Qiku2JT9%-574JX~jI*YN82X=p(mWh_^E4AX`ewC+L_7#@6eFvcuXo^6(e{ zgYxpsJg?2vn`f!pmS@b%HjUnc6}IXC6B$3l=5G`o_Ia~J#;Mw?u2z@C2@|jv7mp|E zGBaTMd=@IE1p~@4zT;6}nds;$KNsoo`)BL|%DHk}DSF-mxMGr|E1*)y*I?)Q3Uqw% zwM_>J{nV>MaZ~oGbl!8!Z;mxXV;7=_z>_bO!G=eBSr`)K3`;|Uztz9q8~T^zQZ!x- zz+9GwB&n||#U0YS))zrFJVi4+2+W&;0aUwE`p^LgFJVJzq9w zKeTo2#kgznKs3|4oE0$bPzI6WzS8Y(0P#%4lOut3e3qJCYyj9>SIS9}hhX_yWF!Ct zPl~50pyz0Q5am18pJED*JWYscS3sK<0lO-u-~jXku0yfAHA8<_N?<@Ej)y>2!JQX0 z_i5A(^bt)M3JQ6!9p$_28~c@&N5BA*u9Zfb46H*#`)d%T&kqr{s`%x zwfVO5!((fxg*Ak=5kB&udl@_;GC|9bc;(;UpZ;+AkI&0?|9{&Kzmzw|^J4-CAM*#I zB3GCUCd1~r9_V+vlg2)x)yV4eFY7QxtQ^w&CY$uXKgY=M6* z&*1(E{f*K>+^V^i*)N@`TBSu(7*6rfl;mdoAj-)`pmjX4{yjR4d~;3aa&?#mGxnjN z4Hiws`*l4oJ4lB=tN#7SB!T-j{pf2NaL1{s2GvEE{BZ(m{wuo_Aig346CC8Z_i~~K z|Km|f=6Ot~>kV>T7Qk4W+E)Qap`-P+gSeiQLr0um`XHiWkXs~;^uKk@?`QgYA6ezsvf}rA1m3#p5IW4Fe z6o0ikeV#mTMs?Z0qpX!umn!Kd-VqV=!7DdkvP{MB>3i8-`nW=KWdgK>H?hQHZ(&P= zgoSw@{Hb$MKjA-K)vzMr{(OCHw;DOA_u6~ZT|bw0A^({a%hc0~i`voIJTRC8Tu|e6 zMc)~-v_k%ztT+!)<-o@FeVQsR4hSyCV?1B{b45`3Vi1PkU z_1>~`)L0&K&jCQh$0aly9+Z!v^yBZoo%O#AT>T06%jMaNOjE1+#XpPQPdiks>?@9T z6Fn7>`^a~~viS@OjVM~HoUokxM!H-@FH@Jz;E+VNLzI;Py40~e8{u!klDCGS0)mfH z&Wm^?3K$cxseU3pgj^pUY97vU(9=YW8M6TKSwH(MWagdTYzJ5Ot&26)pYs%u*ok!Q zyZjmG%^DErLoII^u1qx;cHV(2VL9y%tx}lg3ZWx3DPXA#i_UH#P`^N+{e{3dT&+j1 z>8DqkLBe?D&H1f{1z`;s=^;+Zy@%fH1B&Bqd=o9k#kGmuAT*1)e)D7}VsyxJy7u)_ ztGn){0f810VHS#?@xTVQ;>2ag|pwQE*+p{o>cWdOiXO;c%Awhs#!P<^% z-{|`Iikm-%qQPmKx-u%v(otBBkmT3jdtxxS05{g#yW-dl@YZv^c6kR4p40TjZ>B8= zXp8Q!EMlTChyDX^L{5s~i!qbuz^qgXhIJ}H(Zi%)@^z9-S{^IwP%z!1C?PQOO~#k3 zYor&eVc8^jFeRv3?p(SyEh+%JYTOu$FI0Pbh(7G#k7Y3CdEt70ES*Qhou(EO9EZ6$ z?fUltUH4JPS9GQ&H>j)-8cHAQQh+XuCfskVaL8K2U%$O(LZ*i>)!S(^hBkaZVFfv> z-e4lQ!tou#!JlqW@6s383}O+-Igz#Tv5`EB=T>g2!DmSQU`FRuOoDy&Xa+vc^W7Y) zA4=VAcT8)Z+^`t~yknlM{NiM;&tA74WijK7O-3X=OZCHJy$>12Z^!{?^vlxT;-Mvo zGv9szhp7XkQfu40U&7?Kj6U0|@%0 zX=nqVe+IJfXL&QswM5{si)g-zF~lSO3F1}2e%Pv`%7dN^ZXd>AqZ=K8nEMeS+WqAQ4Uc@x-p;L|&5K?Q9tGZmc$bwPj9kGnDiqP^>@HzRuF!XlMhM9drx@WKkt6hL~lH^Mkh8?D#eI!*QCLC|IC;4!8qT#@+gl^^;j zK^hD@z(?*%&B~4fJzm|4xXnVgkN#s{wZkG-Z&S1uIs(n!5=62Kj_G62l;8YGu8F-$ zycmD3zjx!AE@latP3h*HdY3BJ=& z6F^fT+`&_`OEM$$j?#S}(4J&#k{scDNiUOku9qpz^$HORKZlKhIjeK)a+B`oMaj2Z zyLlz9qjaiHF=aX=R&t$|7c09&Tg`Td1$Rf$=0wY2yKZFsnIkN2yQ)SH-FJu>c-Tdh zR2q_Z9`uGYFDKjpxuVFN?I~^5~WpHX+Sh6u@!ESo_YI$E&KZ_RPr~@3f&5 zQ%iR2Ax{>e^gH=I|F6ylBce5_N|&i;2@pW?va$POEf> zjDA+E`Z>n2!M^p$a|9U;QUGpfjB6*#y^NOV)9C#Ukj-5Y?pK&eiOZxdRrFNOz;j)t z;75@o`RBa|hze|~2Io0|)ek`P^Dlxjl7bBP-~Pt}u|Kyosq)<)z1UmLc0XqZW^!Ep zDQsK}&u2EGtlJz$ejme6G{3B2xMte!!Zg=xo)qwof8r;tZHtokj7Q4D z5%OaHek!@8@2WWYUO11oIWlM(A9nvTPk(!LX5@Vv>7)Xwd^`_h!y*#{!Ie6TBm27Z z!r-%%t6#Bs)dk!li>XO%yOR|qcjId;0 zoC(0A(@Ro1$5;_`%#vpRUcr4(hHsUJ0{kRrIxAhxPSe1`8}p={_=dm0DU>k_`!Es$ zMhX(0v3XZCWZC=O!?icZCZGzo6yi8pZfQ>^x^Zk}D;E@J8t1z(S;9#=GZ_>L_JRxP z>3AhHmxv`XysgX*x)nVw@7Hq)`w11%>gNXS3~SFD{WL?%u>Mveeh&R1@RZ{;Hz8Pe zT#n*Z#(34z$}6fIBTf(ixv@Pe0~r3ySCLYx)-2k~jnOFfU=zai@-Vew>qfC^#1Fzh zfBnT1wYjQXgv}sU5g&QtPWo@%3x}(C#k0RsLbKQ5B~Yd6pWK*$1U z|A#&8qrmo05u#Ia5#kSE%JvUMP8?=u4_rgBi~^(z@5G@%D>#e4#TJg0Z^)86U`Wk-A1rkIbc-}KS3&sI}zM+Dv@D5L4}w*#d*Vv1)7<{Q&6+-IA%WoNU1aMFJgZU>*C z1eL{NV%Qes{1H4S#VUo0`VsDoUx%I(DWXJgdg)*2Xd;c-28j6_9UCdLZ!&M!V1IS0yw0 z#H=`IpJ{*aW8HNhas4LG4}MX$iM5;Pk<`2fsB^AXiK#77sE|N;=&<*v#MMHs-qHn___NLwej{CVG3X9+ycWSL zo}Rx9BwO|L>T^nk6|UG_iE-hWha=|`m*>wh35-CSa<++MiX~AlrR*UE#y@_Vn0;_@ zpdNXm@c*ae#)CE3l{3>5zvY-yYsB~n1z*4@o7*cT1*2~7Am)X(~^I6w6 zC?~`#L>_4H>oD0kkyq8(DZ`?VZwTfMiR$|f}6i^qyMb?wdd64fNMj^p>=C42F4*E|%6C^cZq z0znH(ZP8F(i%SR?T?8URl%BSwH~r_H5SMA{JcZ#2(%+s~RHszeDUC@Py+thA7CViN zu$|w&JsI)oe8XaO{x`bOh`}p4q!(U8KL#e;fHP4hi(*-Oubr+Fe;SQh^)q=b^PoY-JsXOiJz@zk!Jk>ET^RFQvl<@Qs49d-o?k@I!kmu;xlC9p}>$;+cy~;)iTBg0hdwsV;K10%?te4^NU2O@|t8>)Mt&R zKI8pi4^<=It_~fc^^GjS;3~wWS2*oRzkO)Nkp#3EHI)No0?66O= z>sCT+&^XaFN}t`%Q}SGX*InCc(ey1QQ^vi!lSIGty69Tt*j0b(nBNz zEDzKWj~ig~D&rd2CE~B|j~yD=9mgP3K78>Bv~cNgQ7Xe1>{hv>iY|2d;}H0yM84G; zdG>0{uy36YgnL5j2s13ONET~<$(%-3R9GH2+QqnHT>1b2NXl73_z3mHnz0Z=B3`We zOKe1O`z@hx?!Z%D>IZq(zpat}+o zYKv!f{;M4=@RH)h+EFYI@;2^fDRj#sXH>=Y_L_^dvoL?&O}u?!?qjFb{i7sZYx5)8 zJV)P=k30z;vIUiC4>Hw?6(JwA(B*G!2IL2An}bmn$gY{Tqu8 zIi17t^2I+sc#Wej=!=5MjR`pA*>i~US_hmP5)?Uf;1t6thNb(?^*CJvKING%`N)FJ zXNTmD>^*O6$IZbkc47v@`}*neexksAsEHr`*zO$`nNB2Lgp2{>7zaT~jQ5+O{G?Z9 zKaU7LIWXHUjjL>N4&u#&En}+J)e!U7PHU=*JKMSR%Ab#gu%biz?_gl*_F`Z_qq3Hh zQ80!Fd+T3QV4PM!w#}Po&`4VP0=K_({Iy#e$XGHyyplVh^Pmh5NU1_$6k};e4UzkBG0VYu?!J*Z^ORaCO7P)pYr=2*EgNz; zxLChZ%TQhtcrk&DgT)to^tR2;<9()f@K$?wJqj`uH(h}KHgfn{b7yrz(Nsg`eUc91QmvH*R9nsJPE7?@_mJn>QC;siN({(>yqH~{Qf z;57t}jXF}Sz#jm1XZLHVDqu9;2bd$ zCA|N&sDhcKEv%Q6b}>M2)~mJj?624`rRnUeNvg6fxVp(*#y_3`Wu^t?g#iFvFmkk! zQN4+L$#xYWHA78|!Zbiedyp#e*_7B)5<%mM}BV{a+{7+o$C)muQqL zDR8Y^R+#>-J)rwJrYMT#$=y(+QF%`DNgD_h=RD?($#2d`6d^^TVH^Dd-*pNq((fX(W&Fx*lhcFF%J;^S3@HAztXyL;Q8(F-IwV+oW29~5|(2xn#q)oXWJUA;IA zux#AZJ{UcqEjl-09$UatZGGO#^GjgPpBr$ln>gpF zehis`P#yM1GJg^&r|okW{%A3RUlxE^gW9m60o`lrr4H*o>e7;Y+QQBV(?qtbS^<*x z;=ochA3gs7Q$*IfzYuaXS2=Z{FxsR3XDT+*_9JtlR{f0IQCf0EIsjKH*bgn12 z<(8PiPeyEo#UG-EVrG|xCoc!fF0ro1m>TgvSt2rG>Pm0BbKx;@xM@l(8M>d`&a$Dprs1rT=80(5Baqg?N;nSPT-!s3C%nLqFIZGYPc*)9Y?jz4+63GbN)lw+Y7VDsOG}4e#n? zlC3a?T7YT!SQGsizDJfze%^LIb&uIOjvprTaF?i>$;SJp#388t)h?1 zIG9?Tz+*IT}9H|s(0?eUW#eqiogs}Y8BxD9o z{dw0t9}X1A;kz&#Cgkj{h4Y9FNF8~c)NqnK&R~F%Ag3qhy#>wt`$Vb+cL&(zKlt!j z&-a)?r1hg|3Px=l_Y!DK)O}s8{b9;5I=SYqP!?*~=QJngDGb+2E;+cFQd{V0xn^oD z=B5%6Y{5^fx+kigdA;jw*|k+I458{f6I778t6N`Zv;V{WerWWM4y)1p?*c;)yUC;U zg0?*cDa;+9ah?F_51ojB^u$Ha<)Y()Gr7cl9-wx_ZD~K&VeLZp zfQfbsDA(isgA^QQzlv=_=0KU-?efi{Xo;C9UC{+AeI~L{C)D6H(d$ZpWM<{YH5C7+ z$oybE4>q4Z5R=71btQr%;OqX+XD4w?O9q6zT5^aQNM~MXgLxco%sm|Y(vr1)lYSmW zT9R$ZY*4-gvsx6|`p>$mM(j; zVRrMvcbKWwz+YaC^N72a26jWiNw2tk?Q&;aLzuk+im~qhIAOGY9lM05F6|?;@XdCU zL%U?k=v5O!mU-Zx%B>b9>QdG(N1P;7X|rM9stXLa+U;=$Ja<`d!Xf(YX^@ifyngaM za?Gq0IWL(so8^K4f&J^7!_cS5TL1{rw4V>o4R+fACb8+N*CTVYu{rydsW(G)d@*sz z6;cnBRS!6@a@r*tX3Xv^xUQmDheWC=o$-?kIZD|%mWVjH|6=VF4wqeJu(}6)Ab1)eM6Tpet@brV~>(}XNEss0m`xw zqxAQ$29+LVXB_yPm8s4xJ_bJO{TWeeBy& zA)H|^T|K|YTt1;Nz3!?vpuKekrgom$9+FZI6rVJ+#G^gxqnh?7$l|msW=gi!-C}JB_ww*XB!{whyFXahu#P%(xem1f()T^jCGfI zZJuW^RI?==?oF4kTR4RwW|yoUw9ci4rlPS`g|Hg~+st29f@a_Uq!JFx>@56X{?w5! zy|^6eA>Er;mlu`0CeWci;JAoId`cs_vX2%Stv2)N^4Qh;Zkure|Ckon-B?*XQ=$Dj z&f>Gb?)1-xiL;A{c)4jn6?V$#4DkHlzI(rrciQd|;>tj8AZ9gv?b-NKr`KH-ciJ`{ zoTIkV-W)$%49^(u#5tNzT3|l@x`p{r^)vn=Gk!?jk*0%x#n%3u1YSV$s-T&B8);?V zY-~0zTrvXH&_v)JhWh4lzc?finD2!4#`n)Xor@RETbDImr(^Xm4L<8OowH(pv=rj4 zp3e(gS1FZXJf#}O4_VQn8%q1waAXinVc~~5vV+V^62BF|;QE&Ryedkf;Cs-;o@+ov zdR~{}2CZGWcjQgwuK@aYJIiD}SvI=pmrPlMN1dyDSpV~dhp^Qn4Wa$zB8LAC$P;fD z27GAKr7M@x@u*KrjybQ>8cZEL*o!4Pk8Hm+Jcl;QV59po6%a@7h!_Z8n4|El0x-UG zr~JgFjjtQX$BokmxnlSNG6q!zihcTEz3?v4mD-54X8f|6x;0RX-eHlr1m2f9*Cs~- z2KIrceg&XUxM((RtiHcvP_iacam3)5bdm{A1J(`%+NC5iTDcFSJ;)1gb%8h0VNYg2 z6nfHIraro5vcV=pJvL1@tI@%EQzwG4)gc4)<>50R^&-0y$WsXxBs6!DJ^(SHh8AP} z(!9V%x|98jfoz zVo?~qU3Iq&?5p2>{rT`%H@se|+_lJ~9$CY}<2G7KpVNosX6xH3EYExm@l1DINUEO^ z_wH%hg?lc30n!hfIo2&4eb}YNg@x!h1T&~re$XCj1pp?>8;82lLIGJNar$(?Ew~7l zCMk(jc9{bSS3#_V+X(6h8nOKvaum@?G(~>{oHtB1g`8ZFZ3ozT)1%=YbQgE-<-2`# zlUlcZc}7!6cL2Z?Ve=C>*A$6Psw$czIUdKptgDpNVMHb$KZk} zi{Na==U=t?IS60NgGbexaS+*Aa;fHA;jZoHzEmJ^|MQi-5kgN}wiv4rgh!~zg6iJb z2z@ZaW_eCAK1JpXZ_tw==Q)ZPg6yy1}gIFuJ9qMmdA9}kwi^|+s!_sWx%wU z@N{q;fHy=W$z7`+lBnY@9aFmNIh2t#v{e6(`v{h?wATiXlZiisTV~?!;K%!&FTz)J zi>HF-oJa?DpW*6jUkQ$*oag2{dylok-xf&N;q!DMhvyGjyy_W}e(oo8Tz%uxF z!&oWa&&uJA?NVg|kb0E0`##^Dwt>I5|Cy-kYLihXbL3frDiFd;V>TUj3KP=>nzM=sVnA)K%AN@RUz86 zxS)%_QCvdIPqJb!-qVcWcWxGUQ-_TKYi+Nw_qSr&DMrO_vE8eY9Lh5r=u%1>f=03Y zXJEg4?JX<{p8pRy}d>#XvCq?;1dL|P<$VfBX=wZ+AJUD+y!1kxc1m7|5 z7Z!vUT7Y-`)1wGepjPW@AN0-EC$8@;$L`;oCk#Yyq|&h!z0v;7;A%ccW+}K*Y);!| z-5~Ynf55z zg;vt}T&uH2(-p$aR%BTh=sS6b-zOd!_K_5e!q3?(mPpcSc{^Q-CC3jhiY(z@XXwLN zlAoxMMPY+VO0qgcfs5-nX;@4ubs5-Z2D(GF$ssu(M z;m01~PmYHt!Pq~`)9uiuk9rQ8J=KWtrvZ#hXwaYwmm~lFV;0=`Z=T}!nA^QRY`dd7 zBn@_Nvd}=oIN<~6Ro%%Ppdxg;&-YE7N@>5Tlx;MH8%UYReh9i$X4W7Xt{S^{T2_4ui3!ca5nX%fc_n%Cg2 zUwRsLfK;Z@FerU@=p(D$-MZ?}NQElr>)J|hWRe`v*PcIS4621o0q`dZJ_xX?Yr@qW!-r2f%tHTyHSD*Ba_DQ9 zD=>%~-pXkOXW`CUEGqC)^PVt2xFjz@2sb4_l7Q0N*2n2!fvYuwJT z`|&vucQw}kJVcyXJ0usJfOs;DxOJ)G}kS4Gfo$z>(qy;scI6P zJCVwZM~#o`R71($;hfLYr^JBsYWqZCLr_(z&}Nj9I4UJLv-dk}^I2hBihV?Am#&x~ zUHkjt`J{k`sddBED_G*`zhMdohbQw+vk4cNhs#;;6!#=um=8xh7}idH!0 zhp`WA3p-gE2IheCppC0t>fgT@6gBG;-v zEKLksVIJRyg>^6=HNSy3=dm#`n(A?0#8b;NRprvM+17>xTomC0jf-PaRGOYQ_VZE?C6Uj0TaV)b5 zVK9Xbu_%BQIx}b?M|93IJUudyK3FLt%PRn@L-*{V@=s_!kO0@^DV_cd9n%uiFFF12 zwpI5Pn%fAG{r2WQ2i1<=?Q#Q2<_{a)+(t)gw;OJWNiaUd(r5Os*p|NwSOeL#D0LLr zGb~9%M%&*CUSMn-rMBmoyn;dhs(a?yQtGt@UX2tbmTa^r386wgM!~lb`7WhPU>@F~ z(DoSE$&It+M9Jy~b+vrp9+n}ekK{9tw@%PDkj9Y>oq~*wTJ6Z9Oj;asYvnIG;Qm^( zn`?^J95AB23mdC^!5z5KJx7-`cvMmuNd}Cd&7BGxPR5OksEWe7v(L+eG>A2P+s`;ZQ3$;;77B`vGt? zHiHVyf=6%eA=Z>HpHU0d#U3GOqg6=90S6&RIks>`fCnV*V&r9qJhb5JQnKHub%q|5 zgHCc?gl3OVlB=df#{66Qz5xjEB$WOIbX+~MNSI`|h%rNdq1#6xyY->3*^8N-F}t5z zHT${?nPf*29SG*L-D{*5CQmlE2`((pV{K3CQDEk+Z&mYSR`T*(@cKC~PMwFcI>|B) zi+adh>|W-^E$=hHL&MpOK#|x=X7SYu)a0b#*u(6&?n!(F96H{iRwrwyiFP&=Q~!g@ zufv=>kauAOR{!JRYOl2WdD2sbwtk~JJ0Rs^Iv?8iQ}i0uHZ<>A%>9)Pd^ip#1kKa( zTIk$|Pj8j(cb1M@4)X}jpB~cLzIL)2v%F~4;m-Xdfo|pce-<%d_{u!^1t%egL{ICG z<0}#?7cIuFK!d2=$z++aUP(e6Je(H#nzF~t3MANB2o}6X0*`CJX~{KA z3A|%@>V+OoAv&gOZGD*f#V%0@u6ue2JR&MTYVv^voegmC*?E3c+jP*uc$>FPOjcKh z6B9?7C%P~`w^HPg}z4#(U zu9*P&q=Znhcd}4a@nsP^7R^x9*B0HX*j5YleFCH3I08UXyjt{v!Gp_DX&P266088x~sehrlGM0W#p&nvJeg`r7RQNqM5DzXi8M&iY#p&77r$duEI25N^M z0CUiQfeuRwK5w^@Km36^TSbtH3F8ciVw#vGv|xqGz5WFhTN*=PD=Gm)fHXHtJ$Mwe zfSSY!4j8B>H)LLeD3IX`(2##yGK2yzEhr&KMC}~-Sin#YYAB20CzC0OE4s04mZJ=` z#N9+N1IQO(xpTb~_cYKM`k$u|Fc<;A0TQT(akB~kwv>&^WGi6Eo5|mqHbVJci=Wm3$9+h-xudDFXbc`yBTFCU&Vn{N;%5yq zGe;%voPz30!-avF9ah;Oj{bOD%(!MwEu6(0qQ4!Z&l zcHMbM2=dHSLSDt?-%3%62L;cAwic4L`5pwj6a}0iU!f34avw$}S$UBVLw3-gWc>}Y z|Mjr}5KIa#ripKNllB%{+hR!A2zG{5$6^@k6l`bv-pKhbIK0DIAnM(1{md{G z6L0QFF;A`-NG&`x8pGJso2Hro?XJs<>a5Htq-ky)n}*(%8+VU(L2zpLDpLx1U3_W0 zRt=7epHEyqp!rKf7Z{kI`~uPZ|6PeAhc9*_^20Zy#vs;%enLfFihhk`&>8%AQ<ahR!whimzH zK+7!EB!>;yy(llP@M!IaYuTs3tIQ*@_%b69w)8%KKsummEn1to<^3Ac4HCoj(Dvo^ zJap44vJc#cfiaR=%73-5T>Z~W1^j3FBJk{K0f%|DbVWwD@?WPAxP*aOCTPC%{F`9X zToZUe(W6ylDb@~J;|7m+Mv^Wc`K?jJ#I^SrR#gDpoJ*_Z?n`py))?6ia#212G$HM5 zLS*=h-17*W36i`bw+qK7NTQ1>9ohgbz3#j+Rw8Ouu`L)~ZtHcHS?mF%b;8%IIZ)md z0HH%gmY^i|Bvie=0*eGrj(9+)m#Bs}gw3{6-n~wh^QGd`^W*}~zeDyTJE#Nk0Pg3U z^m3vFH*tBzBCGqG9bVxa%1Pd6M_6Eod=ANBu^Z+>wj(?NT~}y*Me%huT=LdksEy>X z26;K}9J4IbGwMeYLh~0sLn>wWP@Yy){2>WUd}dX5UU*+F%johkE8iHy=R*dZFHZh^ zCK;?SBw^);T}xk8X0x=~Uqe~W7X3(~>inoN3I{+jPW{4X`%Y~;rVlu}{#8BmfG`gJM*J$aLtZVXkN>@V2@i1E2aV^-Jpc~NOIwgHuo%x6O zCd#U+eWwsL)oMzl$kTJtYyBbn)umV@^)e6g6luG(?BC}wUpk)m6sb}kZ=caDVopQr z{%=KJtDn`sypwuMHjGK+=MrcFZ-qhA_0?ixW8=sKZ?tez3159#>l#E*y)fLctLCsI zIHJGqEL1)6ZM}7=mQwqLGnkva)r?IOKNKJYBNOCV{(WRZ0hu)@;Y`UN;CyY7k4dE4 zuw8HDkt@}qzaf~2*S=|67JvPy!O<1xRlEh)9axv90`is|bCl35j%Zd9bx5L`Jf9xyag79L7#AJuCV9Tl5ym{Lcfd z9dsI|YjRH0{Kwea%zp!y-RQw^QG!JeJ82FtN#$W@QUG+aX)vhi0Ue}Ce(N_}M1pN< zRSk9n6WapyV4EqR8t61M0e0Z*!`Sn(F-veL7bUvPg+_`SM&U z6(jJ&?uGQIM2kMRsbL1kJ(mmCjAaa8RM^~1LNZhi+i7gVtx7td@xQ!si2;lA$wIljW|KN!iX zoD0(S-gQl})ZdPjks6l0SdweH21<4Nu)AbF|M&V02eLZ_t4P%Q7=&pF!YYjf>BZ#v zcx9f=@g)XOdV8VE7aG(Ib4nhqX!<;EALOI41D7uVOiAF6%t+AbLM7HRTZ%P^#kY{G znBW`!{#Hsz$KlN^{ewmm+5tR!{1eLJJR-Nm=_-yN31eoy)g|*q@W&D6s?_Ez*A$s+a?Y5ebOAU#uZ-U2YFt-(BdKYhgZsA95V# zXcG8Z&(t^z%@J^n2=!3HU`hYnWgMU&+DW=EPeEia1&t9nK?e^2q^9|j9QTDH;7^P& zN}+ZX9*WR?+wBqXREQ2?Qw=7htiPLQ8p-LyXTNf@aI&KW>$ za=r&IdAtgaBEyuYP8VU$+?&BK!=C_%U?CEkqF)4a|Kt!xdaqg$FiTWq;mg_u;UPN| za>j7QeB?hpxCgtia6|J)S`lX^fCh|SG6Fv*t4Nmgf=$;P|61Gd#ul*8``QX?H*_PxLmG|m<}cDeCmbHS*pvTIdv5ocv^>jKr85ygoGiKX z)oC5Lb`1NX;E9_naEdwO@lP{xpoF!hT*l%1`{=Cmt`lxX*}hWnoaSretH8?;KP zqR8pnQetTXZzQn`f4(xwP)w9sneLVkD+e}1>RTL~Ab6V@d%sqma$%Zd~_j1&An#@;-f>vaDgpHfN`DIwX)QX*T)E@Vnc*(wRyOO}u=r0iP~5mO>lS`k9_ z>`RhL_9a`g6IrtT9=Dlure@}RzQ2FYb*^(=XU6;We!cJe`FyO}myw&scuPJqFvYG~ zg4astBt)|hgz9vHuU5mw!FzKS)b5*ZVIkHa$LMV@zeOO4vnRzBfKBjDm`%crN#|Dg z*L%Kfe7C~(%pD=9RDhxB^W6N3*AW{$ho!Z3W)NlXJ4aj93skq4Dmfr!Iyln$?tDS z{$2Vl>EqgPR9bBzAB!*5)Sd<~4a`#+Gt6y{M#r@kRM15CA2NLjc)rQ?1lHz=!G($A!I;7(QQ^QVbfhax)k`4#;J+9qKq;%nQq zTx%+ee29pQ^YyzD?|c}EWGQZq@|th_Qn&=yg=!)yi>ajfvwF?pH4Oi{bL|7)vs4l( zpqyval<11@Q2oOFr|xo3Po+KC5>x+X!tBtlCZ*L$qmCTf$|%9!Kp)_>Qba7P-R?`3 zvhi}nISd567X5bHi#=zRZT)!>pYz-dYJw@x$dGkPzmF;O9tWH1R%V^#-2A8`i->;; zw-2^C)VfE0C%+U#2t8#?GsPeSI@=!l8XTP7@3-UclP2zpgbOsDPa_k{wNd;2Gaw#q zVteX{g2n&76#s+ie$x-do_07`!py@WEfC>c8)RH2Z`NTYewok95~t_qtifU+Y6+HB$v`cxJ3|c zm10AZaz)S1Io*1wbK;Rtqp>i>&INbKv??3*$GuSjwY9@l)DmKmi+`sdNL=>U*P6P$ zcYpN+f3auywaJ=GT^(*^>=4J@i@k-D+>K;=Ba}3pS78nHzkZQ_!Z!sIt#Fan)wzo} zpj&+B(Z2N#*?uaCk;yetl&x<^?{cdUzCy+-<#?*;kug*N?67`JA)F{Ro8-^E^NaTt z9N9cjww#IUZihj9|3qYuW=8c}GSMU>X~Vpp;R#Hk>Vsfjzb;1FJ0MEEe@%tJ>sx}1 z&^4bboH2b5f{lF)(Hc*-(T7U@{AG$#&DxFHsG>J>fT0#XD9E*~K8junCHVuLy5Ap)*y{ z0Cxv(Jc?VT9~_7r+Ugo(U#H!aUvS=F%_UsqZtq}j7_tf5nA30 zzTy6b*6YvD?T+2o5Yo=3fh)%&#h`_@x9`47_F|XdsNKdqJX}AD6R`Q3uG^o>v~djy zJ~_v};%s9E&ZgIb{jDa`hp>Dn+nB^VK>lRD>J3Nt>)L%!6*Xs5!9{MOproNAP}7~f zUbtSg&Wli_#J)=MPtZ>N)tQQs#$lVMw_OXQW>5D-6-=HlI}X=I-|9;kGI%oTqNY{H^xpG6a~K1*6=w8X zR=%Pc9*=PPGbz)Q<1k4GgW&EFut)0dCbdjklY|lDA>2OS z=b!t)BTO>!(n7A2VS9`;2Gl<=KlsUWHqr64+?VLBvQ3#_EYb!pPC`LYX{7n=q;TSv zvf?1iVUY%Z-n-i~%A~f9WML}OPCO5F>**Q5Sc0$Dvp6~ zC6l9ed;)|i{pRIc`sS=~>9l#ZhdLe;3YuN6cgX4bKpIg4m`ad56_Y`s-1U`ZLCnAB zL?&P8Q0U{04x+(Jq0#11z>zd-edr_Hp!F{c{BUe-O3Lnwzg??VMKyc(?LrD02u?{P zn^JmF?b!csBwg(er5LGE zAu7Y-@S@QLs)0L>(!m{jXE1`5g%^xgQ#R8wi*O~9NSBlxz%MpELaWu16M^d3^lYDn zrJ@)Hvdt&j;*_W}hw-!b+v!V6kZfBkcw@GlkcDA)W-9wSK@-NXpq6{_(^Y0=l+E6T zs`&N(W21dH^^ubKUXDij>K$7@XGs2du6N{FcW%1^EolIxbCq05sxuHh@y=5i&q37m z+C*YS@#sAC4i)y~M>^*69Em>+`3GWv%WRzNR9qRP!HzPA6sz30HfW1=zJp+S-B~$1 zH6jRPhS#lU^NZhy?Z!o2_jMJ^mXEHhhW~7Ka2v7>b?o;mRQ-6?(tplf8}|aqo4fCA zyR*adq5uEXJ~teSw)X}1Lom1ZuK%Sm2`CVumC7nsUwt??6^gzSCn~t!&ZPR zjV)wqiQ2iSrzW`n$tR$f>lyW&3~VHdbI8JT+E?uD`j1CZo>(oLZr7^{db_)G2w_|5 z{OTo_Jy+32^c-AA@s95#$V~CxJ9Yt6SASuMiYovgsf6rIV+pUQ>KW_~?Kbth>GQ4- zSz8afy{l)t*} z?~W5!hKJA^n&zY%zU?u0tSgrv`uKotEq)2F({kxz!LZTM+WO?6CitK5{$D2qxdhos6a(YMl~ z!_z`lgOu{R@kS%8F229KTQBt6r%gw*a6yOqr?~r_jc)hT+3r73xWiYxcCCoY?^~jx zSw~qeq)(Z~wgDsLpIRe)<6B*$8BVV!FIM{*tF6ngSZ?zq?46kY^BKqRBNuX=MME<{ z06fDPYk33Lb?Eb-elc~qYqbwMLaXbgdV$BXz++|q*%@-exvreY6?(RQC3Btvt}N5j z%wERRUz>H0uRf0b3pIK!TsIXjARuYp%hvCK$9_ji#b@?WW;R1cSBkW&y< zVg{%_LT(^Zf~1Cf1Q)chN}%V}EgBbMYVfOqSFY%#Jg?m7gG{SMl|~$6f-C#_=p5W5 z=1pYCFtswbLN)o|!CEpb0F#}cE&7YoQd{M*t#$k^855Kw$zsOn!|xTvp#x#3rf~X` zS)DTmt1k)f8kSin;>&Y5D>)NVS^Ch{Pr27b^X~LDxZs~1WVA|NK1pIp(;h}qh#9RG zAy`pr;<`5JsGeUTPj_QOC_w!GsMqL~3bQigRr-d1@imBi&lOWp|A<7PPPQBtS38FZuAQ%mN}a1nw-@E{t8zjFvn zvVS~=L!4BXmX(TKbf@P303+a|UbiG$$ms(JRVQ$Wr?uhYaEk<9JmdBD<;H_HGK0v! zDJd(kuCgYGkY{Da;mjYTxO~Sz$W>CvkYo z3Z!yxs}#m`>_jpe%+A(S#U&N`rA;q`xf8|0-l3P+x!C9Xw#(RAka=P@Sb<+rC%wXchkUbNUSnfZZ8XpXKcrW&y_ zh;kY^1;wP-EJkWBjUV}Gs;)Mla|^jdyUkE}OE4z1k5cXo_VZMQ8tSHWOBTmr+{Jk`&g^=l1#q9@Noby#8}4OgS)xl5m{BjwyLk0nPBY+$ArSu3*f<)UiYXtV9Y zuCfcQq*#2x9dEXJRbT6`z0}E7D-5R0iYBdh;sC;mebyyhUqJE(O=^~$>hX)wVN~8xhy_6vXpYfXjjgt!jQx(j{cIdz1D5d zCRh7jtj@=EMb$eLom>4`R;!`+?h|(|(Ski=5J5f)J@a*FPWkhh!BpD)1x`l?^V&&Z zLjpIK+mGO`@%Og$%k!5SJM0~=yyNtV@{8a|yf|x1Q{;T^3V$AQ-PKFRvarF(nnA<&nFOv25{3FNQ+yB==ICU*ZrVkC}u)lvLtchdHSy>Sr6?3{Dn8P?jgve71pcz0oI+X@_f$7&YYl)GSjnTbYZfAAu6s zn;4|w_V4WSe{Ket9~ga@hwm73_JuAzs5TP6H;~VTHqH8O-v%ocBf|e%B5IEg$Ba6p zoqaRCfDs${$*?D`1IYUn3q{v_^>^5?ilf^B1fR@V=YQ5?^sZFtWO9t7X#%j^Cjy3N z#FVR4``W54Bf07G=Jtsld&Z7%eh2pqU>B+jZ}h-__zcBN7d4o%<84TFy%c7&K6KrW zx2%YpwH@`P4-Dgpr!&=wsNIIuydi*LXYD43BBD#n$ev-kZL#JOr|dVjZMQwz(2C5{ zF>T<_(+ZB|mY^U+nUZOxG_Akvr5q4dlGVFS^e^6P<6S4J^+KM>H@JZ6x+%`e#i{mx z-KFI8Ucy-f`)=TgAwJmax}Ll#-)DwzzZFv|3?%Aio6p}eW}4N`y7>6(P1*R~B$f}> zwU2JxiGFv4Co!6Ikm@lqjelj^klJoADRbpgfddo*M;cVk=n5%2?nsq3ej?VWQ*x*- zHDxVMkM!5bNN6U#dYMB+64a)|5jYAx#*@~vw|Y(;E2G}jA8E*Mem=j!ooRN^V|H_> zZ>GB)Mh>m>R24M;e1Kym=Oix<)CnYt4k53nLVhuG8@o}MfV?0jJBjS{GRi@Mc!`FR zH!HiV@_@|clX1$fTGy|ZtzqEvBdIarzi9wU_p*B!TYnh{1&?3^;RK@QJwp_H{*PM^ z1=+%{y<(?8sMLH{EzxuPrWMu0sBko_VFGg7fxX%=nM6r16nayKAFxxY&IjkxG+rp- ztlZmFkWDcy{k42sTA3Y5Wmm77T|ypa8^NR%1JSR2N8bodt@HxwC11=+)g>DpNJjNS zCJC{5(Y!(%^m9OaCdc_vQa90>$Tf?Gq6f6TU|bq=1Vfz2Q*%k2n!>SCvHNe&D;p`o z#bg3KvX@(h4|+eSJ8yoNIk1eVd@@_#lrP znJly@X-cNhvEVEtRFt!fh?L+CV~cYcaen`6$$(r=J8$(RR^k>ahLG%LZ?`g%1sl{3 zuyUh;=wZ%pH_ThN8kCTFVVM{e{8EmWetRkvyd)#jyVS=$loiT9yVZpi|c3sf$t1~RhwI` zFOU0V;koRHncC>DRhvmCH1nL-UnqT zAFo;YcZu~6SISPUCtPU9nF!M5ZM0x4+BC6CCtYQW+r+z5i#!B0?2&MWACg&Hu5Cxl zk!Mh1C||SwjwepSQ(V}{c+XQJlmIulH&8B$%-aU-z{4Qn0+knW?3Fe zfj(^0?3F!MEhn?1jfS7SF<7)pb=Kz?!=++`!Io;o8(PiZ>*zxze!TI!2XcoHEFLtV zA_cVWYmNJGIo?gh8W&_C2A*1b->uKY|qk4>VUk$TCa}-Da-duW}JtM92y2&eDUtj22-~YC=s>{O75->1YkYk*dPf3{)XAu9M5&Dk zlTO1+4FAKa}SN*Hd^j7!W)&aY*eA}_{h5EU4a z-8WTzO4M0xGPbuJKV+LS`)4>R%@1>$R^Qp-?UOas;xkwd>LIRaCzJ8A(y_PT=@JCX zgg6%QFXuHD+*J|MvD6H3V1ps%TamydE1hVAGt65DRNy8sfW4J*%6x8DNJ5b=sZiAX zntW7i`@ce1g)ejq%04quzt^RZCk-bOdicSyZ$G+pFS2;FafERFvemo+(A@7bv>6XX z@}g+yE=!gPYCX9*8L20Q!owaKBcA)GGGLdgIf-?bwW=zj>ZB|xLYhN36>IM*A&-Xl zsxmL>qLna;VC-!X-gz3(%Zu5pwW;MD)0gwJk%PT$M}b&rlrJrN;^d)jU`Dh#VkZ(# zac5A^I^KRWyWHP5`7Im%4U+6?be%tKr>?mfFsc%m>J-b`|DH}8(qpHPBqmu*xSHF~zSDt7XDCtkmw%R zaMtx)gWHdNR@2+#A7}kDR7#kd)yhm2Z2yu*{a=ZA*q*8<;Z!M&yFQ<)8K5kzKm@8k zu152>Wx`dI>Y4(L}~b68jwVnTm6mKJ4_zY&X?45DMwv zqs3X0gXrSQ^XA6bQJ1b>2qD7j2XElUh-b*gZP69H!N=g$Hz3oR2d=G(az^J-Y^xxR z=cB1dzX!ihJY4$RI_poFA7{7Huj|cD$w2%(x!3OR$lQIpX*~P1x9(_07{Z$j1!^|f zt^hDOV9>~97qcRF9r2J>U3wU1l?Bfk0`DDzO>}5k%vZXv0@*|jSmOsoqRKoFTZwGc_Mv`Lhx-4$|c7QGp zB|}s)RoYEUPk-`^JDq83(@Pf-Tkl4*LGknQ;!L~?P2Ymajl#Nz&A95L$>oEkLOra( zLnlQj+VzUQ^-M0?sh^kQpu@DFYCLif3E@j}o$rd^J&)_H-l5XaUd8$k+9?&1yjM0f z|9yP7D}?V`qzBHREU^3)%kDg8{008=s4*)3h_FwYbfZV(P$HHOg>g4#MMH@u4gmmt zu)j(t^0PE`xI-VG=RH^xSj<=vLhI2+Lb<^nsSR|271z`Wry-NNQ4H%vQMFDzm4i$_ z0v#1)q#`Wp>Vn;YrAH-*hd^75cl03!zbEIeC!_+g*3W^Sq4In`$Lp(8(>$I%kJm-S zd+yz~VnsYDdpvbpg5!(5A^pW8U!G|^RJF~Ao=#aG&ZZ3zqrbDF9^WvrT&4H(oidDq zNv-YY36n>%@*%n)CZvZIA1sqnp&;=`Fw@gqqaY+?EfI{g&j7KR9~LExED)k4LVw|S z6!(>le1q1X|KaDVC7ey#TQ~R(&oe?+Qo+Pse2q!5=;Z16a?|X{Bo95h-A@@y&DKw; zbOq1j=lx=&s6`C+jx>8)E}aazxc=ZNc)FelOc?h!`Qs#?rYeH)tD>;M3}33U*iW0N z^;Ek52HpV0brM|n6pzST_y2chU@3-%o|oOf(P&+bbVlPmgu= zWcE)!hB%A~9;T-EF~(jce(zwm`^Yv%PBl{1(KO%UP_UA5W8e*YY1EVEK~HD$A?kg| z9|xphqKR?uWJH(ZN`*ByTn9B6*8JnGRFt=V0acvJid;ng#WYFT8K>%2naK+lKgB@y z@h%Jhc7v-s+8UB{GE@XM@HSoPRM1lT2TORMsl`boWkL zBX(Jwh%YBEAC(uRLM!2aEUo@qXB@0Q_`ep4Og4S9IZf%}QgF@E&7Qb2*NUk9hMb+& z#Hjpm{QFR+3WKx<=DxUG`A=Z3p+$frQ9v;Kc?LLqVzzNVwnC<$pAw`nFRrIVHXbl*C+WL@lwlSyp$D1H|8YUdXO_q}i;u`f+k zoe9kx@*|}5E^l$cCCx#)1gEh5`Jz8O@%m=s99*T^Z{Zt zeLq@WmBWi5RbSdsgO}{_zv+4vVcHTf~i9dCux$FQEZ}iz>kd@(iaah!ceL z3h-$@qI1l_KKVE;s!S(C9`W)Ajz&B}JpTQd2&#v4I6@~@xq;JL z>E9m$75&6r=q7Asl8H@4TYd!9;i1PO$a$U?80kEQm+t7a&X(7V@`4RG88%cW0o*dT z{9IEa+w9Q>u7j^b{G}NB67Qvt@@mu*yI#dEB4bWp!^1Cc4d=qgP28TAQ)swOV8=O> zA~e|%w_zd}k$rRD>h;a36-0iNIp1*2%2*4<)jh>)1p(j~p9;jSB;w+h;m<}EU)5@; zVff}@zhmFKl7zK8VNb2C>$qZ(3&JvZa{4($8Qzl*hM^LSxF8KtjR3R!2stV({fwY@ z&9H7yY-MMbd>^HE9ft~~po!3xq^Ir;$YJIJ_x;lAE1tWaUYOTLk(q{vd>jA4FX57M z0h0JM!A}4$4*rSuTTkNp0o`_ZT51bPp%2?U^?Fn0#wAS)tbDsWrk|@&U%C-pFJ-ia zM&muN;veS>Zfrc34PYDUmzy%GPzKGC81(`0I-&e{Z;1O;@ZiD7zr8TGRf8DnUX0KD z^4Am5s-Y&-_mHy$A*a(!oX%Xxgj}|%tLV8b4Za)y-DcHyg3MCh z9M3)|Z@u+$@>_hsdean96Vv`Cd^pHMs98#7r3thRbxn^~I|GOswA%fZI@bL<*K&Ha zgDU#mO(lt)tbcv6+BMWr7YORBS%W+PCGhRddlsMAsk!mDjHnb;6+a&7WE6v8Ni*?? z+#F>N0$)N;ll@KmF|9;*h!-ijycc@i?TJFc-(n%?aaUa1#4}WhsegZcqHfx^5i`0q zKJw{JN^34{7z=b0Tainwq7HX#0jrn?hE~+3;bN603;6*y=lw(r_I_b1fAO)p4Dh^{ zExVZYT*pcb^B*_hIuG|P?1H67dHP5$CiYGMo@zRD^gltlUpv|;*Xx%AFl>;lC4mG@ zTYvj&*d+%q@Xhyk_3^Pk#Rcwqe^-&oL$5Wq2iw5MrVFE`cX4&$t1}1*h$S^zad25t z_2APhaR2+xL`Zm*=I}-Q$xYvY+~Wo@v{;c*97}6TP%# z<|&s9?D@GjGQBK@6~H<)p*qbP*=j2XBmi#=FW00eOIw zY|7m>6#SV#tsQ;Z3_qmMFq2SF1yRd&riGnHS36R}fgp&u@ZiJl<~m=HyO}w_ ze!$*mN>$azxa^LLEX~NTEdv+yFVqb|O_D;B&-k!PxR-U+oRo=`oTSviv(#e9zdkb1 zuMLqdo6UZLm`-B*#rtyMr^RN#<+f^#4wQ^zu)94Hh@-|2#dx-<_|`Po=#8YLm-}pKA9G{p(n zL@;YAViWKL5xmE|_FyDsP@JB6`Tzb&y(f$$=SCV&yhk&;zRbhTupj3~S2Y;YN%ixG zO@VKIjrK6ASlxN2L9vSZ-Q(E?q16-W>%%U+`#6LnwFGzNhG2U*zaI&NV#HF#AyxiL z3h5+6c>pjL!2?6`*usw4XOA{z!4r+o40jA!%vfn=r3L_IYMc&sVM}8U#sK9gazR^J{b@8jrxw+AWhSETehEIaS^Wm(M(8$Jlr-ODar@(%$3{T1@&i_>9wCrF zT=BDzwpLu#v3BPBFt?tb+x8eId zk?nxtVvzg+6-z+#0%D=H&Ig>u4B;HVXC1c%E!t25wuKgcb&7@QM*ALO-CigNH-W@HWoCj;DXMqfUj8J;{Rz}04 z4f$6y!ShhRoa9N|LB$m;e_Sh?wgKNvcf*-@Lj>G*{)XrAuxaa-i$?Qw-?wTc1S5^L zj9c3FW$CCmKpYGnhx!k`9lBdlbd6W+ksm&mDjSZ#?+R5r!h#r*!SM+ds$WH z((YY&`NEJ>`@?OA$8hL8z`p4E)1dgZ?X&TIdmU({AB^saX@uPG<>JEZhU)0!FDG%; z7W-csPnL@u@o0m(pkmqnDQ8_kD(03BS1wFJFmp}HS4HmAHpL=naTy(HPI6LT5_W1r z^WV?{27C~sHsuxy@rN>&+u{JZp7yDw%@2X;A*jvjG1?lf) zS948Hp^B&u_}=z)$hfOCkI1l<@*N0bx|e?Nnu@MeA36{GGqL(M&9jcXSZlmbqmn{= zNMPCE{634Rrt^YB3&BJ9m)p{`(FR?M0qE4^);bBK^!0%31}sz0aibovR9mq>m3Y<; zkL~liV_r8(7U;#2EADcfQY+%|E73SC9I|DFLchut{vzlHV3%d~Te$JOgt%k*MmU`u z2Uk|y=BQj(IG^poltxN2cZ}~V9(<#UzIK+GVLm>Ro^IpLPUD}ox&rAre_Q^mrM8`OY72L_dXFe zs%UW=Lxrd#fD1s8_uSgBK$&5{KM6KHt{$-R~lt$ldRmZoa*YsB`S`j{R9MBhK@tv-sHstfA#T$<* z5aR(=uMlK>X-c1=MQ-MJMWVQZki;M@kSVOBVGvu4+)(?yR0NeA9i|vNlXB+Q zB$6dCAjqH?aWZGs1>TJZ#l)s{XtB~Jv>Ov8Whdaaq^}VYExok&Ql?%qm9c`^YT9c5 zKGT82>!V4`r0AWUiPs)$Jgl6*5k7^}uii>06v}1^sr!)bG`E8HI+DQ33r5^ zg4uTrCMV91v&cbpa~_9W_@ed4C*faUnMl^cJnbZ<^36+Rq)3vo=gv^8#@D^)-rs+@ z<-@pm58YLX9-+bOwklJdyUNCn>EUgCX{)m6VY~WqYtM6{|6dx6^oBj<#YVDRg$@+^ zCv~;RtfR1f?hSs02+tE&I4KCk)w(5n|Ekls|IGi$Ddfg5e}$W+iBByFQf-&F2*x5(iJ$yi-TiHw zl%UR`8{LOQ-xC2ONhl%k%J#KALefkWu0#Dd3n*!rI9@MX5uqx<7RtJm`)e!Bm0hr~ z-EmIJeip*Q*I%zvtg19wMHA~ZFU6tr3X&8OPQL7wY&jECkL+6rfw)$k&H1)^v}9=g zfh{+VEqY@G&AUwTkj`ssFpHSQF&)Nbib2?>=?luG6|D&ip31 z_mSXD#a~8RS2do*wFb=l^OeXJ7k*dmVV>rCRjeW(a{GoUBn#;$3PTcNxe7N;6jnn~ zpQZ)RfldRCdL^+S$R&Ah_S*T-C=_xv4{i1Tdj_(^hqqEvZRpD z;|&cD6yZ)nun0w2y$4N{4sjUu?2rJ9y^}1c|G(^j`O386F$aG%NXFaA`;y_jHNyg(~I`OMzc?nM1giZ^?3$7p3ShxgtNB z*CHtuW5MBf_mPSHIZx~c-LDyIMP~XdS&J-ATM3yyYOa0@`)%T+%5`K)gg$QpD`5Vb zY5L8lEw~Vn&L0E~A;~Ql@TO?fzSRC;zyI^$3M)ugMg}?dPuArdMOJLIT-WC9RDT3D zZ_btO7ZQitgQwgiIU9dEXm$--mjC*AL%NcD&FwW&ell!_$XFTC`HreVi2EIw+%)aO zB=ls6VhoE({F@g6NfNmfbf18#MwDGS+q`yeAn%G7(}%Z75pQ9y*pt9=-{u)~wd&JDAp!0*@qMmY zYdww>HzluPcNOB?nPgP{0uay19vO)c8Li&emZJl*t7z!^(>?w6oZVNy@$~HjtoE9P zW41fKC~XQv4=Q)Zot8Qh1(+uHNRU_YWqnA(FZuzqYM7i9o3A95&cC7-HhxhvG|+&4 zM2*u^bb|vUv%2Wi=24SfdFrbkPaplY=5~<5vCYDJnI9b_|2_Ir|Koc{5X=6p zo_EWL2lcKHcJY@Lb!n;g1IKMXK#F)Lte*H`o%O$7E|9)F=cK)E=Q%z|@cS98N&HRu z{Md5p*X2IXn#<0YuL~XmiN`rrmexP*HL90!J;vaB9+*63xtIA8B=_(4*0yBAkh>f` z2mv4UZA|l$Me~iBlTkbAJvWtRxv1FZ<*QE$FC=ZaPcj1xCkGqN9~*}hG+2x6%Q-Q@Bgy9vDDY_BQ=58$ zHlwXORO6XsU7cEH&uYkzAg<%fZGP{cvomj;ZfOPvhL%40gg5Rm;u&t{$5g;}I@hBO zx|D;dI!e14vfFz z_ZG&F)KDAniQFy}3Xhy}wf7NhN_OLm;;^w)n0P#XD@dLu;Jo@?EsYe8Fwx>3$;Aq$ z{SU-_g&tbGr@CaH-}gL;Rb{7-WL@;pkZ9Y=9VCLcGLViWOFLwT4if8aJx}q6tZ&>= z0p zq0}WaG>&ZrdFzG0Vsbn78nLy_a0j+az2@N1d$W@6xnYpjt!EVee(K6!myZpBZ+?b^ z%fWl3iuBZ>YeGq^Ic0CWVl%MKkT?~@)%~@#q_|mo#%}c3HKq6p9P2shX!Tv_0@0y2 zC}yL55E;Dkeiys82YyRBX&Y(tYQ0}>*IsmbG!@WJgvn!A_Yu(t6zP`OVgBOka`QWD zh@fVpq5xEF;Ty4rI-XtG{ZdRVIH*7`L}s&ozvQQak2;H1@;C+E9ti42bgLXwA5?Rs zJ9Fu+u(oG|C@CN|()x-euXEuxNOur-e6%q0 zrZFOfLMYVN@pxcCyItwBWMw20vgVt{)oy11N{RfQYQ+-W;Z(lj`l3D-8$-zK-oGUR zh@@pFm6vLvgr$Bk5$ExmR{SBTj;nb}%-Cr{b_J<0Oi1&@eV6i8 zGK#(R(`${nXu5bwj>*WoD`{2rI2=kQv9@b*3v;BG)FlFwUr}(luL}K@XlsEv_UAj2iI=^#}M<7KOb6%xN61+c&$dVSk*s9-0iRrGp z62SC8N#A7Yl(lTR9MTEYF%GV9eM#L>E2JdNK7d|pYH+Mn)%-6E|= zXzHRy6p(!Vy~J~jsMi(2&tG%;&|sf z>a~%r@hqc1+y9!M@ydW(sz`pM67cw^&{gD6D|9oL&irm!Bz`&T%wU_fPYG(&g!`DQ zkwn1P9+(FKJ+klGEYC!@S3NZd9cpK2yXBO0HS`~Ost40YECK7?`VgMYzI^nG@dkO1 zHsX$#YOTbODOeIXtm5J)<7Jm(-lYoh5;&Xj(n^oOXZVtH(P0 z18gsZ_N+rW7yCUSZUPRPHXI@mu4P*D!^=R zdaU2w6vzmPd@p&G4RoFooo;7iHe^ zwNccg!k)9zbBS+^`^8uheGX65CNW?=2GLTEram<4&;Ko z{!V11Q$benmnbLmWd>PZO;hZvqGxIew(7LnBSeIGO~TRT>xWSG`BA+B!Tp|MB5VUr zkggYFz=}npkb*&U>>T#E5a!EcN{Nidw-V5&F}b;hWbWS=)a5bNSToeLg9{N|DDNbK zO~SD#fdHYegeh8|h&KNXz0_ivZHzljuB z?r52ekc!EX0Oao${!kFIRQd&~{YV603-0-n?XMW)r$uTHFD}fNAkK_$l~*q0v~Ojm z?uh9Kc|8)RO!?(yW1d?!@p5B5QE~AcB6~Et1y~(hIDH_QjWBEhZ(|4p9rC`}zP^}!ZD;s~7E z$9xfa{HFv7u%Ut`SiXCAJoMBb{XgCY>Zd1@<6d_7u>8H3pcoh^_auJ$FI{N%=cQkl z>x}NfPL0e~@ezJ|e~(dF;qXRzPS;YEXgwV6JlBP7yANuGZtklSXe;YCb^TVfzot3I zdHlYa5w{m)6f6F0I9f{Xg?OmMQ;Y9|8UFe6hOe$HL!22I0Wk_}M?uH^Lxy;gbc4id zgmhU^vtUwxamT!DZ8dw8MeZCH7~9#UTD7fnbM8oYHw1-)M@UIKH}@90AY|wdmZOg4 z_~DM{$dj;nugrTcX;}s<>2-R&aia9of0AC7NQr?o65yQv_itFx`<Tcabzbl8bnXekoM^8@n;-?>1Evdr&hVR{7lOcPc12 zufaR@A+k|6MD<|S|MgZ74H9UM-;Tk`;P5>6sA2Y^kilT!J~6$K`5yF$Fkscx)CsW& z8)^@Sflc)J_uT6|UR*zB0eDS`iJ~-l$jg^`^(7>q^MRLt2tCsF$@1kvJFH2Uloq`a zOd*}X<4znFCaZJiTO#JX#kxrPZZvY83fiv>t)gXncF2(QVRd3gK5=;L%qP0WORc?& z_%oFCQ5}T~82UVknb_XXut03WX`qhyypUhy^cJTNr9(_g+A|ymzs&AEv#*w9lZh9B+C-WcV-QUJ*jQ>t0hjE1O2p8k}E4eHzfACD}l{x>m8 zzRL?UX8+QhKmys0*C#OMgcV5@YA)rH2P#1-;J+WAj%9ovO`TbvN?s>Xe z5BTEQR`9OotoU(2A#aC#T|Kn%T+&thYN+q^lYugw22YmcvN%BnQEYNcH~x?zsXFY0 zv`q`oLqG+jMc_kUo4G|?Y)ylCbZ-ceZPD;tKD_uOsx%wYEpOvef8L!HSXxc>EPF zs?1r&CVFZ(tzPdvwx+NPF*c+iz{m1pg*C~po$qF$E5wPYB*3tKLUjyTa+`22#GDFH zdyhvvz&Ntsenh}?U-S&O$19i4*r@h3$mq@sw`+BIGjouVz3NL{v+?kGJHV<qgt1>Lf>S)mfyspsE4jeP7T9ZL!8^Y%^ zAkI7LyeoGA1XPQHPTnKS$2FQ2G@yE*}P$7EBb8Fkh$$*IeDmyr6V#a(n^SF4zxcj_ColGKLp zE9_nzEvk#MD@uD;DC_wBVbo@$qrbn4JDZac6{ULTLq2X8OAo_9`>b!5XV0859Q{;4 z)gxbqpsG^}ji?|lMjZxcHNx7x>@geDgAYHWkQpPd2`dWgkYx1QE#k+5wn&KFn?vT& zCMYiK6(lIFz=_^E7HqKsFLYRAVD5mBpHI^H+#b4GLv|XP%-3Tj0`a1bw+c{iyC)fF zD+xU0c{YIm6X^n{?{7a(ma4JE4pPm1WYol5{@Y!uRFp21W?hT_h*YcLg->EFF&AfR z;*84m?mcyhMm^H0bmn0Ze#M%n<41m1YDE@NHC}PCr6NsJM8023e)#UJS_TNs5}5(# zA;_~o4j*`ZRP@}55LVi_)4KDwHRoC~AKX5EI?w(uQ zmM>#r_x7Tn_{;jtw`=PYT%wyr=3V$S73XdYh0l*&Af2e2(5O|PXvbgG@WmAuD|or9 z$C-RwcuiR*^%!4NZ5I7uw{)@=?Sc{_cwjDqPwP+%kX@MfNcA$wgg}`C34EW%X@M$? z>8_x6NLOJi)Rj=2GS0OCkzRxQ?+P?O@4n$HK={TiPyl|VJZbAY7NfuAn zeFr04bH&C+qpS96L9_CBuc5fE2@QmF%xR5d&&Anr5RYR9dqGR2OFq+&KwQrc)kJjJe(!hNC zF>#75gG*8UhNejB22iShN&ZODC|zeT%idjy<1PSn9;a1=CCCuwcctnoHU(Tj93K)LH?zqtioXTUalgBrmS*3XH5{zvcL#bPwY#A) z{^iw#)bI``q0uL^m)JDIzlgAYG8jN?q?*gaqv?s!&sR6+zjq7)aI_$tSwsZ+#Lmwup- zvlZs}UyY_@tvuy&QjOdt9F3(Wk+~9me(i{|{eVH+dAWX{slKRRMC%IMNzL@3&M`ct zB8%Lg$!>I2zlFJbd5JFFy*yO3P|AC1EU9350-{1E~9o%$2n1qr&^``+9b7YS~-W(Uv`B>{|gmm6)llJp7 zSH+hqZ>7t>Hz(=Kp(#L#QJ0H2lrakzrb9e@XzW?@Vkr0F;wZDbs380u4xqfoK;leY zU^D{Q*9m+_17A(*^QrSCAiKFvuX=eI!M~eM_*mre#<-?5?G(NLJ-Z~0YQ0g)&F=P* zrrNRBg85v2qPYv4Ii+bV#>4Fl`y*8|PrS%QkIKt=m9+{Jr|CAj+zGS0tan3p#mME} zkrtLSnCi412)B$KuwbQw;aS_$UDuhfF5OaR=AD<7E)PvqO>4edi~bh6MPf4-U_jDR z^-;b}yZw~@NRll?%*39X{cbTKkLV`T-nK``{Tli)|qFIC*T~oU2Sp!_#C!wu9xV_BcX2U8EwGqkR+J;|tt+PL{ zy%R~XK{|4kp%SW# z_N%W{Z#nPw3mvwkTNY=eA1cv!7@3Wlr+s`WB3-gwGk`A#5`SCvIx!%pL!LA=w5=Gw zQ#ZQvP#BVoyLX`Swdmi1rRH49AYHKGasUWzu=s1pi z?aCowAy$Y6#;MA%Gy{%pfue)TLr1#%F0=@^oB=xM1u+RL2rw+WIPxI=_qYCC zHnWOGw}KEUX;$PIy4kh2Z?b3px7J!VXpzM88&hH%y6)T=_ndCY9R`r>C$$KN z8)H(@K7W^J7rDsUJf8;1o^t8oHo+%8E(zm%N%lt^A~8!|3t9gRm8R{9hfzghZ;?D&#|(Jz7W|ersY!-<)tn$CkY++0d$dTyM0` z$|a6r5RcP@QCbl_s<*ld>(nrbBYzS) z_n@Y~?r@B(+kWpg4D`dI(9*H)K6~s_+G7g;1JB*~rrwZ6$PJ+CgF}W}Fu~m`M*8oI}cFfa*(2l+2z0MNpJiE%ex z>wV$$s=T?04QbmblJ?#nAo09Js868M?c**CK z0-C3O{j+>4a`}yJoJv~>r#7_WL!1HKL{^lPqgCOH>2=sx7)UJoVI>?yN_xDKS9iqA z%Wpa@NcY%~y;X5zajo8S*7O6LjtNHguZTL4ONy_DJ;&`l$ER+8U#0CaW|GdLvTgTL z?KQ>1jmHht#fK#q%eS;3m4SS6o*3BAPX+WsI;cvwu}hj$q5djOVb-`Vj^VR#?@VsK z&{I&45eMT5pM|TZki+8HCkN| zoWs9q*Xc(QhD0|a;-iPW!SjDqF0j#wlP+znmqPY86BlxQBtL|IIO}bWso>^RD9H%U zZnGp2TaVNq1k5dB{}Y_D8^nydt1S^faGQZM5Zr}q?00!R{|sMs$%5^ljj_bp-@PZG zuV(cQP4Uu*e@3i5;gv_n6)ZT(vq?J&$# zX$DMPn(@)!8f!sn^_W=%NgV8H#{H4?>%KF#O}&Gc2C_ruDOu>16+(Z2y^x{2*O5}~ z1Xk1yl~5O7NQQZ~Vi8gNr!?UkF<_CNlURhRHAft%{{#8cpWCX1lVXVhq!U^IXbCuU z`173BhAE7Ulc4cD{aljT*zYb3jSYwB`hhESn>~j=kq3n0ih>K4S?rI-()bfUkjw+i zRZ^G@0+YHltHx;MUB1Wc$^Oo~x3$cUC4DDsYYx$G z9PmGtx6@rV%lc-exXH#izF_f2Putq!Yt;@=f2utY783Vy*sGlgy}F^hfp(OLNkG!F zB=W*T(8cu20-{mF85P!SXr4_K)A;h1p4;HZ!YhACxQq>u*zk@=mSe{EZzRyb%G~Wm zk=gZfp>tnS%EGeRo_BYX5gQ6iN|Il}KciRnep< ztBg=-X-9+7E<$N)2x+KfL@H_TLQ6w~vX^bCyv5kX}JGaAOJudM5idr<&trQTB|IIFE2>WVE{cW6&#yxgLY9lNbB&f##TNl5+Z zuYYWx&V1n^fpSCMkrKN}dJDC4Bzxu^D_v*eB_o`_lw4nseMWSoOqGD< zZS^%2lhu{gz_=L5wSRjttCqSA&972U%)jEPL(E-JnfAUd9U}9|TQ`f4NggCs7XpY% ztl;j$ix-SP9=8X54a<7fZp`g9>l19cKt^S~cjx~w&iS+joQ^UKDsK{T_v1Es&rbze zq!K@$NScojOjqMVc``$n+-24G1!!8eWdo*rN~y^u_n zUrs$MDs_?w#Ij!)IKsnVep?Xmx$f&bew?Rqvq5NpgXz@a+g=h5Gn#5p^ttyWAJQFp z&#LJT){4B%4O@r<0CkKCc#lW3rtJ#3?>#nX83r&3&LmzU-cz3I_TGD7Gdw?JeNXJg z-lb-DFI1$*E%+f+BMrff+4`daA8oL*HdAJ;c(L#KW3$amGq^mH0? z)(x?l)*L!OvZEP}Q#3PMG4x7G82mm|ro^~xSuOVgA+v>Lp8=@`Ac}eWxw|9y0TP+! zUf0h7oqvXB?EQ-gWP!s6`iQ7P6Ty%r%`+u}&wcoBXHt%K2a2iZHGFfW0$7!ScSNBD zMa{d4^kA^1W$@3edP+T~<3B3y11aF40t^+8HZ@oEHzPT$z2%74EO=G_o}9sCIOgs! z=#^emYpPeXX0A`G%o$VJ2{`(PA4iJrs>X|A>Y(ZW76tUD zw~yS2z|zJXO9&CS&ha%m%*bq$PQr%~?Te?3cL-$`8;unKyhFyijPrbhTEU7yTUG?5 zZ5ni`;c=UPV~zgSh0TTXfm4VsE|}7UKWy2_P!B!Ru!olHRxOMDBCB45X3}c`hD zHS(t_YE8Y@tjBFn?M1)Ra z|CR6HlvKTjVfId$SRpMF&t7iTa{c7yUKkRrAQDk%i*?)eEPMTOR-h=Q&|Ev<4 zKhj~va_m6g23U?SP^*7FMZoPo8ar=Z%OtMUaGA(%!?^$Gf&9y1242+)l%Wf1u+D{5 z(Y+4@GK*zOrp22F`>@7vI3Zh4sfZun?8DRU{^FZU1exw$9@_9OBJH9%SpS6rOWrCGjPfcbVrblXpgvP_g1n&c-8OHt_PN#R`u7DkrmS%;fb;gu8%2 zHZi38I@GKegJ-{Q(c2H8L$;6AR-Cxa>9-t#1lW{!Q79-A@W z7MfI!Q#Uqi9o|X3^=fx?+n=kaP0yuQ5^_`70Y!1iRGGb;Su+`;m0o(EuXTd4%U<`; z*%&Hs6*y}wu>SI=OQhIVIBKqW^Lof-SkH2*eYkjw{02<+*Y7M|11Ia3sd`$q?^GyN z^!Gge+yo(;U++s+-Pz#@&X46OrY@FbDDL9tu1S5OQ(t-@mYL zo)pMD-3JGSb_L*SI+uzheI6i&U)?QDdU@bIwje=;48vFy{> zG3ll&UcXh{OU1NoPr<_cxj(^0q8JC70tu5g@~Kkor?UG_U)4rV`B3!odtIA`FRu8j zaSsOk3(KDLT%OL^Si>_Qxxnvi=eRvjvY9Q`15J*sMx{Ef>13V&7FW1W(`i(M#scCH z_k>!K|F+XBr+Qn-(xOuNygRI8&wo7Fhg{$S&5u2|vM;rh1(9)OF&3>YL%w3U3q!45 zFs2$oTP{I(8@J3bfGmu)q49mpM%&}xCP*mxYwm6o2SzDwFkn8>8iB2!lMoB%)wwgq z)p^YUO9u&tl`IA19(g38=G}vlWH#Pyq{u_c@0RU0>31uwXqj3#<{L|SEXO#n8IZZ9 znUi0`PcER;im>orzIslBx(6!Kjjgo68u)3UnCchhkLmKKvIZUPj6`4BO4z3{s#X z;WITnTU>nnvptNIuA`Q;RE8tPA3|u!}z6(EZ4Ypz0B{&n|w4byNy+=88*6S(i-^}4|u?K z(F$I5-;-F0y*Do97}liuPA|0b6UFAlOs?y+^ zuH1B?Zh9=MLF&6Z=U&dA&wP#ZAhg3`VRILi@pZqEIPuh6(hL~db=rqQyvZ#~rbSnd z{gF}E{pO+DNmnARm9I%gY`3zBQS6B#RxM->zzvD!9l3~$$&sFplr zB4DJv=k}4e@nviYnKW~Zc-7MiX6QQFPntG%H-_2lzM)_AW^LvZD=&SgtMI27@6W!s zUibRs4!T6z@NUS*)VYetfZP&X!u{7+CxC$P(833#%9x?R)mT^_D)6(Fn>$>Ve7+67 zg{T11zN%5DG48Il#BdTz9-_rVNXog={jo`?@-z6 z3Tuc>=NILz@T(F>MOq`kp6_|?8ah?t@K>97$X8SVtS&60u(cxl@H*8s zN9WSLgeok|eV-3i(b9$+!DE%(e-=BP@x@ORQ*>h=Suy$O%Xwnsccp>pUt1~U6iR0+ z1o805!cEj1PIqZOo^_k{S^QbZ%wg%}>LSw;r+gN%omZ<|9NYlo_qaO@UaAb8uip=& zK~l|J_o$o#yEYrNG8A(n(BD3JdBaYLRcVrgvtOJJUBd7_@S)%?y3gFJX9EvZH_P#O^X>oyW(MEBsJn?UV460>)4$;aL1fs-QMmK%lbdCK zKZWn;3*uxy$=Hma!U$*>ud#IsaoY`|jp0m+vR^^=0xgneq3`4ARsMBJOVe#E{QCCF zd#d~O*t1J4m_L(^(gSB03T(1ArnOhgBE8JW^y5 zHb>KMFK^3Sj#X8*-46%^Sq30#Pj>IU&RcLa8gq&#>28<2nDcMc z0e?QoGB@4f!MyLNYSTdy7EJX7g9W9HjJHL1jB}aiR~t-?wsDj_*hi1zo>m!PO9oNv zfy1je6Obp=@D(xEz>toZXq6v5f=$Ho3=g4>wUFWtwb(UE)&<`nD<<_2Wgw$)I?%HD;ktoW<*<=phP6 zX=s9xR-73VSy#&?MEez-+U0CGQ%%mf=Txqs*6woARiS4_*2V+-Td*~sE3|vR(3J+< zhy3cOfTrQ8{US^&yM+>u<1IB*B!bUM4 z+ZqkQ&oAv^)q=>If<&%{#NJJRP21B-34~Xa;7U3Bc(1${ofizJ6gTFKpm!&@x+j5K z=FuK3Ub;b*SR6jGHQrhOaud}xGoy0`H#;+K?qRM_XXWeB++MlJ$1Lw0#!?&u=cohi zo?*PvblzfT*Z6qAr7tpbsqE{U-lI@gCS?8jmAl9equ?_|LyYzTWcG7;+|6wY-#C0uft8gawmVbU?eV?kM z#);_v!B0)hO}9+Ey7{p0m}n)E%n9X1g+pE1apRk)lIL@V{fq#ETed`12SfSSS?X(> zJPhk+vu%(ZcQrHW;{%Ale<$6-kcb}N?T(4d3ol+dHB!lzwYa&%^ys#+eNi$>G7Mx1Ux&C1A|y7NVIThT%!i^ddMV{jpj5&x?4 zqb4IN!hnM;21YTN3=OoXmp+mZ0^OqA*Izadb;U|zAcw9Fq43lS*3MI(L*|&dV~oI0 zr^U45bmh}PfLQ+x7F)vAZdi8jY7v91Ng=*DEuWPtY}y3{x7M$D0`0=X9*i-1!S!+# zAN&;|elH{}v4C-=w8FK+Ya4}M|K~1e2dd)pT2F@1j23P_oT*r~chgTbkXklYz>m}O zO7)CTe+4HEygAT16@EONn`o##T_Le|%g^&cD8W!Ez`FMCvdb&iZ>X@Ml(y)p<0-ri z!+`w`OGEAzMUypTBu@c%rz*UDxOcR7@Sdk;wqu(zlB`hBqBXxwOy@Ao5_`IVIY8Vl zBSA#Y$HR{5KIh7c$n)99=wz)b(=jH=F|)2v)Lk8cEk~oa3RL4GEmOUzH5v}eT>bcb z(!dn4{stHdJ$sm#RwZkqT(qL#PSW86z0v{f!zH^@rrV$1%cS#c`p2B-dvV{S=+gJ`oZ(L&Q$ z-r%Hn^)x_7^76EtT#7$qY=l5a16m=_SJcM*j{2o#olrS{nAA`D37<+Vo0ANPUEk!2 zb!HX2+M87^hzA>#u?3zMk>u?PaUSlQAfdfzLb>O;UNW}G8)tU)69=fBNq_V&*>OA$z5&)KQhRx|Z0zQ;D`rXoR z8tV>~osGwZ;dER6?gn#JusiQJPuNIoG?U{>`VJQ?&Ak z{&XWUq1n-WVeJ!hRB`zUa)KVjsKc$^ymn&<(Ti*%fWoz&-fX6&yY8WEAcG+~f>f8M za-}La0q^ZaQXIvTF-l zq(6LL!Ppy*pM|^`HLJje59~{|v(lNFI{?Rg?_l=om@+nm4#eNtm1u&8i0pT)ZspA! zH!%jJ!j0rwRSpNQmLKza05h~e7GvA>FlyJ`hc+W2t)3s;YKS>+>LS`E!&zS+80@~*8h1nDeqP9rb<8G!mqNjY%3VKh74CtY4|D&d^WPmJ8BQiLG)WHzi4x> z?`F+%=EV};#7<;d8Fpf;z>6xFyffKIKq-~3;X%O7dqkdr@SxaTSigyHA}lQ_Slj-3 zQNr*(gJBNtYZo?oOhJ@Na_q>gjj`tFX_TyA+Y8T4oqZ?7`?!-?*;N>L+{&48)a`9Wy9)=Qwzk z&-miDln^dQ-ea_sY{OmtuIeJhL;X0r3#?p0YLM4uQnSR6^46n)@0Ug#*J{NZ0z)QV zl?xYQm2kRIu_8=PdaSq~sq}W$xQM z%My+6#YoWMz5HfRx+3tytT>_^ZWeYDe4TjOJc!-Mzs%AJISFvx1EvFs#o13Wg#1Ij z(r)q#huLZ^hHpU{dgcM5gkrE61F+K#Vn@J2K{9U*EH9ucN(o9_F&E z3u^&|kzYiF36v>0yHHfDCXhJeEE>UATjJJNeMDYl#D2qjN}R~E5g&^w)Rn!3&BQ~@ zBpGY9qa$upe6TPjYQOzc0BHJ55*F zsg$#Ds=_V2sh_MvZY?lI3Bq_=xNj7dh+E;Q9#2*5nF^as674p@JGjXVeZ$d*5-{pk z@Yz+@sY8G{wX0li&Z#kdMC{;Vx`^<4q3?yIcEZ%X0oM&j$#NTO&z*12j&6O zpL5Fd;0wBK!eZ$Ha6Pr6me_mdr&KCJR4-jnmn{_+DeJFYk(L4(wYbiMG_-kiG|eBj z-}u*S$$_Z^-$?x&lkDZxu1!I>_bP@FH{wZc!5eTz^HtqNa03cGHPbrb53rWf`v|NQu}o0 z?@C%&?NPEL-mmdqk}je)M%xV>DS!Ak(aqE%$Qv2+n zO(DNpf=s)7)ISO+y*gIkBsyo(yo%8C!@M+fZ>sC;;G;X1N%pEPblyBaW)24So=^Kf z&s`U4ZtRowEC3etKVDST$j&VdFx8k3^gH4m<$ybXY<^j{<+OqyRHOOJgLqH8-<9Ukx8~lg|SRGb5>$ zn1ZM*^Sk_QIm>(TN`t1y4k^Q3Z)Pc;tAFeBP*ab#G{ds+`s&%$RghE-eAWZiS085D zJK9>|D;yrs&ahmdTO#(V!znCf^VJk1mM`Aa98pclOefkoqW!14?YvEk0(r`oeLtZ% zWq`$vde?lHA5=Uo&n|R=xkK)JH{h8U^7I(fKG&}KSmbxZ+cyl|QxldivTL1^iuhtT z4e>zMM49=IBm^`%IIp^{cT)HF0e5y?NL@(^0JJdApau8fVTbrDFYS9ohN#tdHkBL{ zz12xAbM1DbEsFJNs@b=E-Hs)x<<6p1G@<&<0UIS9Ez)jgZ8Lg?xO_a2jgyOwSQr0g zgxhuLQ}Xpzy5?soZM9mFxEIE6uQ9TG8_oRG0n+AvOo?a94f1OLX_9d6(j~^~(}6D% zAkujpO0BDnD0trzI}EiKzQrut^zOdisj%14k~8&LD)meKgS8%AsS1vIBdDWYYI8Rq z%vX)odF^0g@lliNYWiEchYQDI%dVQSs*LxPBstX)Xvli+b$&~}uw%w`kH~|WA)jk2 z2lP~xhDbKom}^C>anNFz@kynwP~ywo832tGU74&Y_2c0u+--(vwm4h!CB2`$BgY~H z(gp~=Q^2N1*W3AS8hQZ$PC`}{{SwiiZ#z-O*F)22{#iyBtQbZ@KbIIi{V0%|tmto7O!L$Ta4%`g!ThV;l+;Xg@{7oROWEmDc71DNy?MZfM$~;x1?sQF zs5oz>Qa8yP&}NnE%fbscU>2i&PVo?IC2nZH>Uw|k1wb(>Y3a3g*oeComO#g&sUMK6 zD81Po-T7s{;4Y)sA;N=ORXeJXEN#kjw;MP~$yLg?t>yqWz^Hc<|2u&7!KDwjT zV+w@NJj31*N+uDhYVW$b!N<{$Bvw^d_nW(1;aSn*^QBAMSV*i*X zZ0)E09v%B1@3a`85$VgRukO0jL9uH?LEXyZFy)L*U*#Y(&l#RN_cmKiThd6V{Rd4gdN4!3MF}x}%uZH4~1m}0M+kW1aT)cQ`bMq33 zy_PfnHlsPX{yv`%-npjE%_fp+hXTGpZrf%fjhmyWCHH{V6}P!4j*Q_^h6K?;_S1De$7YS)#!^Gj z^gMELZ?o-gNvipjGlr4O=Ur!ebeoRR#O7Z>Mk-JmfB^+Q>q^_1(ic z|L~Kd0+|<6)eF#<2I{`@Tt4b>Ou8SVAeI;AU&q` zq#Piyj~d+buwoB7?~OC&lW~Ge?60)Tk%X1@32|LEC5gM>=%P82|~A z3wmS!-Gr9hu*mLBLk_zk5l?fM7!V(#a#@*{_$_6P)@XIvM<*L)VJ)r#n+g;HsqN)q zH)>ojk!J@cx*}`Tu`Z0>m%`44M^%aqlP^_VqxD9@RoFwXhW^{F!ya2C_V&y;R_?zI zec1;aJ95rXLU-Yo^ce0U_%S5o5X-p&IqM%Vf&VEH*1aGm7-|7OJeX-O$?(VpjLO2$ zV_OP+MJFQVEFc@^U+ft?MTXKh*BxJHG>TBmfYLfjNK#@i?@Z3uT$#HP8ia(T0TKunST8;g`fT^jpWCe0X8OX{L^;d8!vd4>OR_yNCCw0E z9z#J>`wYWAa8m6r`^qy098>`HioW3U>?LMLu@p%%akf5-y|vj12QTHBP(%(@S!l!f zt|s@ieL6-{(u(rt2z&RpSq5aqce{r5O&xUqVWj*Y3yQyZJjL>B$Av&&9~}oaw~(Gj)Rx&rJ4HiXgA`9gG89$_6aHNw0P*o{7omW zY`%<_!xJ@xT;;3NepTI|nNYp{`SpZWyB3j=2mQ6iS1W4~$fQK3`qhSXY(|y{Hdx*l z+A6U(r-(FDO^7GfA*#5)V1aHI8 zDS8c;^-tZ5#j`_8uD!10*5tVM+Kg2oqLx&N*YE~iq5i*X8z8i-p3kV?TCu}5!Q{#Q zN7T#?7>qqEzDDPLcE-?c-b`iPSsu13I2}^k%Hv&u*SY~V(#ZE-U7$3HD~QdiDAITi z7MK6kC3J&zb4Jm%a5u@S6UeVti(Y+w3sS72`OEohUf~^IoN<>?^%^DUYLD$rRDH~%56?}H)h%Jb6z1Mg zuK<4m+lAXn^l?Z=tr>6-dLGEihwBX}_X7h}}${X!s)ypgI@{ma5-}16l5S z{QR$EkOeZOW0+67Y}U+mz9B2LZ%k14EdagQsx$t4J@Civj^Gk@pSRg!j%`W4v7>E% zh5p~HZD;zTxOS0jzrI-H%faqO7A;hDONjoZIq{kcJQ~^vbcq{g=KE`i9KPRT2?P6? z0-B2$T*|ykKH)i6h!w8U^o?G_u{-^z)f0L6e>3*qmY^HJPnH(}0a8jsl}WXoQ`6I^ zeitPh*PfIVGa>uOzH}Pm28kwroko2)OdPFZZDZyg;mhS9A|fI>9McX|!9dejbYc{nKoL_wG_s zcMk2LF5=$R3!L~KR9bO%(kUlG4>E7I9?Up+2%rCV}*rl3MM zoBL4EazXY}8ou3aIJD#JSzuTEummOb?%&Jldi}vutv})OvaMg6|M|mb z+|2uFIt>3j?znVcQBB)WgWW+~8;1{Z{(vO592snz_+fjwfPSX-&|!qoZMd$na_N&m zP6(Mv@2@PpnOHQUM6|qH zY$)0KM^I)jCT+YzhHbJkH>|B@dKXlEn&6XM@4kXlu28vNo=!Deey;4weNh~%metHjLw1AuW9 zKm@;&lPCJrE8-T9oRo(d0k;$c?D$5RQFJtJK-IElZo1<0|AC|YLhs;0wD412xUH;D zb~MD=fSv%si_#>iIA?4VIP+tG>o!K7Kb^cTcAzW7Ne z=U+-Pq;9Jst)M&b=iylHyj;kXM_BybV%5(O+vSy^xuQYjA+DUPAAP9#`BNKXUUnv~ zl@DJS)}!H~(k$*Ls&diXO0rS6vttpa3x+AN-+*oI(X;|2e`t1{j%#QBQDA0<$kL+e zsHzo{46UNLHmx&sZ9ePec|(?KV@XDj_vyMm3j8MmUlm#A-)75%dFxppBI%UWkFjK-i3C;OjAbC_rz@L%On0Y01J2$JvWV+E zC%-`)kfI8s@8Dyr6q}gh@~u7l@gI&c_GM663mVm}B|WLA=caD5S_27$4hi8_A-0^i ztFV9~g%&ARo!Mu+yjoYtZp`oqpV*1q?eoN3hrZ1QQo6AUJn@g)Z5ddR)yJK_F#>5e zEg$Ck9e^c3xXfShEU!*UP$a4_i7PW^wY{NwAS{_Hubj@0#0##U1xOsU$NyH^{e>on z>o$T+D;r1&Lsfpy$g~}Msudw=gdle|92{EXYAA??pdbJtd!}NZ)2{_^Dtc(cyRwFF ziYE5RWW#GvpK{!a7Yx;ZS{rz;-*vW1LsbDgmN>t6H(x|kP~6?WZ}+ZacEBN-TP-3w zt=lnGe?UZ8eHKgXjhV6U=Xy)r9_BYM3ne~v&iLYaNjiQa2CR2V5ZWDK&5~lMU&E`4BrtQGW zP=^~s%-5NDtImIM+2I##H!*md33bzuLRbyZK0N3@A7M{Pz$f5~EUQJOUyiZt%)5E2 z`2ncAbKI4PRg!SV5pU7KaygAW4>tIoi@@yZ9@cCpGj~;_S)Jbu;ha%B=NoVT1y`+l z)bBJshMjTI_Sd=CJ{TyHnIW{alZLi)6Q}4SzzuZ^MeQmYgLqB&R!#@6q8VF#FM~P8 zkw({6F%zxb9MWk#Dkr$RcrkkeaG;i8<+zM2gvbTy*IM*#w*Bl-EA8|w>2J1_H{jdJ z0nRO1?(2IlPT-PlPL{(LG=* z=C=|sTmMb=Z_}@rVz|MO09 zhAIK}!ehV*7cd?|o$~f;@dLy96#kGdY%t_?C8#(*%=|?v_hCi#Xm!U`^{zH7Hx9E; z>^lK9>U6=nbCMD}=B9subhyKXb#}j0pF422v*A)fBhSA=m&qI;j=YV{XTf4&d{<2; zv3L8-XLNho9jTd}`vg=2`T#`Z@w5g<_AB#0{1jS8ONF8NS_V)h9t}-o=D`}`dI+$~ z9*n13O+LMO*t(^Q*b$J(@!`cxLsc*3E&3G^O`AQ*c3u4%mtr_7Qlescv(l0XW|yIB z>b|(^MEHq~R;sx5wXDo%k8&h0EjjFEwygNhnR*Sky6kM z$!-q-Z&u9?4L+a|Q;^w^4eCx9_@I`5!&G+-=+#)0s$ zez>~*>ccICa{Im&KfnAaK^xaNlM8i7xm2|+2^d(q5{KN>;u2&7?nmdcGi0l=`zAQR zz2-BQ8W|?pi>0&O1AUns(m!46gDLSe_U~5@#|2tXNJfjn7OLpE5kX-1+pt*y<_0YF zWuOar=ZQnuMXQ>8my;92YKl@+oYjsqRvV)Qgd;}Ajhj5Y4Ixe?jIQRFuR8ogfQ!)H zaZ3}sjksE;)327=YnC8PZh$EV5oN$=OPmbrxW;CV7r~>z#I$VRhbAUob6qu93bFRk z)c@uCeC_TqU}KEoBd%~?i`9Cw$%fwJ3(m>~6|NhIeowaU``3p3mro4(=cGM82Fv+l zj}Pxk6_ayhl(GEKvXKM!B1GS##mcB5O%dzMAVsVBoK|yYf-6ZFs6(p8Wc&}}-gWFq zFK=qs$~#M>OaFR&}QTFf@Q0@%riq?NXHZ>j)W*+#@p|2Rd)N8Nb17?z-** zf=AoFkXn;BCEE9(@76*&?jJ#(e|rLbLwUY+-^wuT{^z%*+YF!3#RVRvnfVA_MyZh1 zK7FqG7VV`2I+W1FO&G)f{FP9hykvkKC}|C7#u;nVjWocpV*0jb&iIao%V^~K@TwOruKgV_V;CG%8r6yr;?}52?Q?|>r zMRlLwG4M1%Us)IB_YYU;GBK;$>oM%wjpiU5ia!8?a`F{SZ&9Tj=rky2oFzrOXw}?; zJeLeyXV(~A<328_({Obm<2uj(=2L9MM%)*|q`sTfC5)M~)9~*{3eihYMKAnoFFBQ& zK6c4F^ht%-+G}TiR6PNnMr3PaXB|Y=XmtZdYGmp}6~?cB}w&0pE?_ z7*-$L`nr6e@tiet>}vs~$wnJ?>-Lb99j}blx(;5DxyPP)u%+RVvXWT~`(9d_^u^Ae z3N7qAU6T@yJMp_5vNH0v2{th-lrns~?IcaQyCz^K#V6D*nE6}H+S{CQoUMXOtaYR% z_Yu1qb225x+E0TSCV-ac#uf|df6n}1DtzMP>4z(8e*K5B(4@nWsi$-*2o(ERj>*qX zIpK3I@%AXaQ?Mx)YnL{5%T7y2K}0{@IU~2iJ|1H?LncOhK_adia){?2grA9|bdaYzqxEuSuB7 zrDwq(X_Lgg?1+@dn1*hL{*u8F?Uln~tu;?p4ezwpYj@vio4sc(#BD+!zl2$iKtSNr#G@*49ZNE1)E_WTc9~Hk|)lq zx{PALxbev%{UyOBwkFMTo>AB8=1|-m=*)pSDqN6x@|YEHuY6L0TXTk{-H&J0<{LQ22a95&wOPbrSxLK z7jvXUv`=`IpxEF@!7EXUo%=F-)&l`-Fxlt;lbx&MjhKDv3N%uN`l-}zDw@`z)=p9g?W~*hnEkJQ6t#&C`D!e@gWb0lZ?A@b z-jVS*l_;8YeugPB_L`ha@#+0v9|_Nw3=`~ubbvfR`__)qU)_;82F93?+cjE}_{>8y zxQ}?MahvqYJ&hDHp?%=w*g%yny}^Wb#UAC_>5C{Ln4f+qIYIk=!l#(1!(^=QW*1MS z+hS=1s_uUBn?q45yOhm|} zj!{@n?Z)FgKKkTgp2`z!$&_y-CC~oRw2C2_(re{Y!|C@I6hLA|ZOoC{&6NneK2ydz z7|azBOLBwz?gD4N-gkG0vRcx17K&Wz8J^F5<3?-HC;}!^>1fjLOa4L_%2SSa1hXVi zaI9fC{$`=OT<=kJDcOiP~F9Zs<^P&*U zsg@P)E-%kMu$Ax9X13wTj%VC`Jb7#Wyz}$*y-klO1^3r+{+&lJtb+>oi$9B1V$GTG zE-dDXCb7|6Doyd+_v+XQGld%?H=A#;23y-|x3E*(b>QEZ@;LI4Rgc%-iEC`J@dDFD zLCz|QO*%7t{pvE_yk|P)f`tE8^v_d<0O$b$)S$HdU*JhmQB8K)A`2)qx&IoHmsD_l zx|bl~ZOy%LApQtd~ce_w>wq;HbeQbRcRwVWvBiXz;_yp;o@alA1Em;i#J=$m(#lARX7sNZ#vi{p%o4Hh4O@8yN5Ofgx-m(l zRr|WFOrL1X|8u{xkYeY5UH<(3H-78^f1k(i^Z4Ip1i$ac@B8ule*FFR`uBVJ{a${* zm*4N@pN{8#$B*Cf<9Gb{9Y21@4}mkkW8v>u`2S5ToD81OaLR>;4*PiW%e7;5E+x)v zEkQ3%J=hM^f*{srk_5J3x3)5&YnLH2nQ%R(#ma`Jf@|_HkOSi(>}pnCHu&RHYw>5F z7MXTZQ*in|{F?Q-t-zwsjo|? zc)33^|E}9V{7J`}>^hYi3qC@1D6|jiehi*I_H|gTL+?OdS-NP_u5#ZmM^R#vRf){5C+Qxk{Jufr4l*0HR9UjvyWX z)BRS)fTJ(FhKDZuKO98Fl3kbTo6BbvLkYbdoSi zXt3@y2=&upVL2o^c&yL)W1XT=a%&7^IBg#1YP$2En9PWn+`sfZM<+N&%l+*VG*2&M zP}I5}+WB(%`Jy8tZ^Yft#|~YjjQ)@oA5xhMF{j%ETavSwDQqEc(u&5p$^0b*N=AIY zmP*e$S>CH;Z>qL@+uz4M%zo}$$Wjmy_97RexeDW^MY-RQ6!qESKsv<&1RgsgfA*`{ zWQe0GtG2-4y7D1?wXu_OV%)*D{apYJ6>-RIpE^)mtd|B?wHo!crYX-&zqhE-M@z#-0A zyo%93pyHgEo=iIVfhEw3FwTBotKqgWCcr2qY^3s3bh2n)Ha+EegDmz`D8;zlpT*{? z4<%m{wdK2i;n&`Iwku`p0ckF|p(80;lC{U;8V?w9;plBfxPxWr)>GTC^t_ zr`ZGG-X@?BxPcl`;Ht&ErC~zV!M}Y&#$~$;=vhxf z71?V_+0ckL?ej~S-uuQ1lF6?xud@X^tQu~oU&ciiLD?tG&wTslX3Tmq|6x5Ajt)!aeN&XHWfjIyP* zj{Jia{`Hb2pUiE?Y8#E*3}w=@_?bQD>31a1CdCD*>6Ml)+;c|X@q~7syp-XE>Fw%G z{cw-EIiEs81ZVdxcB`AScX4IHG>WW5h9Le7s~>Nq7|4Ap91?oz<~*A8)(;u){H%K@ zIVT|saHH3O^=rBqf?Mn~-7!WbvsgUGQB|LAVfq?Yf<=ra{_xx1+?J5+MKjhOAxx%v@eP$>5=Zo8d1t~~@NhNaRDIW61|9UJh5x1_>q*v;a^Qvgwc?Xok@ zeq}|IE^wA|AMlLC%ec00^ZknQ+D~(|Rxu|WFnu>U@JM`a$;NGZ?N?VmY0xW4Gb0K`z6LS*F{eZQxJMK^eYJfQW5BKEn_AETNn~LT0@D4gzW`F6+|8aEjIv`JuTLe8I=CH{KW((wxc$+MUX#o;W}^&(OFFSY(X1@+AgJW}1JD{8U~ljKHCV z%&B8seu|2JKox{@HVe5aaO?u3KAjAv-wM6WK?8X4QHu$96PcwJj!TbSFX*+xpmITw zk{+QBWeH5ov6s?*UApg|9WIM{WEs!42=(_cEzlbqCE4hjcIxs3_S)@3pl@_R&x=~D zLI`f6*SkpkAA;HxWAA&nd5>k?m)8q~K6FK=Q+{52Z65^v>e6Oy8W=Nd_E9q8@i3@} z`f?~b!~(C1He(Iz&@7_c9=ZKZWlgCK(8nLujznz|48~a*ggx{*BQ$lLy097;Wbr1V za!%PSxJdXTKETF?eX+iErf1qoU~pU2VeMjv;5V;%vTangzxeN?F~Q(kfSY-P~N zj4pdMcl|tskNe$L@#^Qp`l>3*k{XuF45{Bj0uZ(=76^rK^Z58l);2?Tqe^dC4)a;_ z++X^?kTbW{{>9Yuwu zQ?S)Xzfq%*kj6fG+3lQ3ny2xO0c%B^U(bpdZr^(vE|4YW^=6e#uRct)ON$po^}274 zh?Z41dI~vhnYPI3fY^oFiKjtE<)BeHi}hcST4Q;s=q!=$rB;ze1GWaQ>8o+%p(6F#zo3d2*y?TUPsu(lH!i8;8dHKz&1^sh(4&_U!EIXZlC< z-^TLKRT4Sn^$&kfcf0W@cU4yFsiDM7ZB%%tHdW|td-nuE0U@9o?5rS91d7m+(^EWk ziNuXWgtmf8Apx3`C8PQma20Y6W#|Qky}M^N-pnzz*5gU63cZpid1tQDo#mC(_6&_I zH{k32^nLFRn)Le4@=|?qqRi`hKP3?ubKM&<0@a7_AgGH^b&PFs-zE-~1B-+f?*jtq zQ#H?|8ezoqta*Ejm!#`jvv{5JV_(Ng&lfNe^@hHV*BT}__M_O@(P-TnnX|Yx`Af0z zmy?1SL!clHm`4n@!|GdY)o*LclMy8K5(r@+BHK8FxFsUl!MVT4WN9gySrULCW z=@olxMuI|pHC#i^-?40R31AO*M=cd;X`Z$#fT*!81)g5}!D& z)MHp$TFa*YAg)uU(jZ)wo>UbW{F z^wiGO>Q~(jNgS=ZE-+9NA6`Uze6ZkYAaMt%wW`RygGAXSLfg$wG+w7o5{&=Yq)>43 zOZh)I>qxti#IggDy{MCYH^!Apyx3l`p?YEM;`qVvQajv6UEt4bjdxew6&!G6+2F_u z(7z?>)JLsZ{%V@kH5Urab0g9pRYY|pe&C}@d$(#Pi#2Q8B>f?gBjej5BI?jH6ulUZd9~7QsdV;f!*-%Y z;3i$LIDn&e(DdrE6M90GxkN0HQM$u5pN1y=b%dWq;l{)wO{2InsnOmD{@{v%no|8Q zXTT9*OL^qfU-LvxvKPDo`Q>G-0b}u}JOc87q6VM2B2_LSIZ=Et_T2j33W;dZYPMksW>f9b`M3jaq^fU5s}Wc{qW zg68$7C+=sutFl<9hvrA;vaBC_efHwpK?Otydt>uDW9h_M+Fq>IQAtg%2FPzTL28Lv z9eoJZ@y=E0yHd_p^FBefXa0HO9V*6pR{CZ≪}yNbYqvhn0+yA6mvKHgAsK4EMa& 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 NB>nSV{y%*${{yze7hM1V literal 0 HcmV?d00001 diff --git a/pics/5999e5de-7c16-4b52-b3aa-6dc7b58c7894.png b/pics/5999e5de-7c16-4b52-b3aa-6dc7b58c7894.png new file mode 100644 index 0000000000000000000000000000000000000000..a61a7dc4303a9f4c4f66d699f0ee1659dccda60e GIT binary patch literal 303104 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%0DZE35m~z{7^k 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

    W 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�()1~nh-R$g*ojEOLrmg9<_ussY6PXJwowL6 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 p{H|jo6p+P=#{9iR*4oXuqCjp# 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

    nHIfD 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 z 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

    {_~@X&c?2kEOm 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 JeWWZTYvf@>d3sJ^OuE+!3MYEE@DvaE` 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

    oVzk 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

    A2hk;=6*aAo)=SN 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 Date: Sun, 25 Mar 2018 22:21:31 +0800 Subject: [PATCH 15/17] auto commit --- notes/计算机网络.md | 71 ++++++++++-------- pics/5aa82b89-f266-44da-887d-18f31f01d8ef.png | Bin 0 -> 119808 bytes pics/69f16984-a66f-4288-82e4-79b4aa43e835.jpg | Bin 0 -> 165888 bytes pics/a6026bb4-3daf-439f-b1ec-a5a24e19d2fb.jpg | Bin 0 -> 88064 bytes pics/c5022dd3-be22-4250-b9f6-38ae984a04d7.jpg | Bin 0 -> 297984 bytes pics/ddcf2327-8d84-425d-8535-121a94bcb88d.jpg | Bin 0 -> 153600 bytes pics/ea5f3efe-d5e6-499b-b278-9e898af61257.jpg | Bin 0 -> 112640 bytes 7 files changed, 39 insertions(+), 32 deletions(-) create mode 100644 pics/5aa82b89-f266-44da-887d-18f31f01d8ef.png create mode 100644 pics/69f16984-a66f-4288-82e4-79b4aa43e835.jpg create mode 100644 pics/a6026bb4-3daf-439f-b1ec-a5a24e19d2fb.jpg create mode 100644 pics/c5022dd3-be22-4250-b9f6-38ae984a04d7.jpg create mode 100644 pics/ddcf2327-8d84-425d-8535-121a94bcb88d.jpg create mode 100644 pics/ea5f3efe-d5e6-499b-b278-9e898af61257.jpg diff --git a/notes/计算机网络.md b/notes/计算机网络.md index 657a40f5..3045c451 100644 --- a/notes/计算机网络.md +++ b/notes/计算机网络.md @@ -12,13 +12,14 @@ * [带通调制](#带通调制) * [信道复用技术](#信道复用技术) * [三、数据链路层](#三数据链路层) + * [信道分类](#信道分类) * [三个基本问题](#三个基本问题) - * [点对点信道 - PPP 协议](#点对点信道---ppp-协议) - * [局域网的拓扑](#局域网的拓扑) - * [广播信道- CSMA/CD 协议*](#广播信道--csmacd-协议) + * [局域网](#局域网) + * [PPP 协议](#ppp-协议) + * [CSMA/CD 协议*](#csmacd-协议) * [扩展局域网*](#扩展局域网) * [MAC 层*](#mac-层) -* [四、网络层 *](#四网络层-) +* [四、网络层*](#四网络层) * [网际协议 IP 概述](#网际协议-ip-概述) * [IP 数据报格式](#ip-数据报格式) * [IP 地址编址](#ip-地址编址) @@ -243,13 +244,18 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中 # 三、数据链路层 +## 信道分类 + +1. 点对点信道:一对一通信方式; +2. 广播信道:一对多通信方式。 + ## 三个基本问题 ### 1. 封装成帧 将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束。 -


    +

    ### 2. 透明传输 @@ -257,44 +263,46 @@ TCP/IP 协议族是一种沙漏形状,中间小两边大,IP 协议在其中 帧使用首部和尾部进行定界,如果帧的数据部分含有和首部尾部相同的内容,那么帧的开始和结束位置就会被错误的判定。需要在数据部分出现首部尾部相同的内容前面插入转义字符,如果出现转移字符,那么就在转义字符前面再加个转义字符,在接收端进行处理之后可以还原出原始数据。这个过程透明传输的内容是转义字符,用户察觉不到转义字符的存在。 -

    +

    ### 3. 差错检测 目前数据链路层广泛使用了循环冗余检验(CRC)来检查比特差错。 -## 点对点信道 - PPP 协议 +## 局域网 -互联网用户通常需要连接到某个 ISP 之后才能接入到互联网,PPP 协议就是用户计算机和 ISP 进行通信时所使用的数据链路层协议。 +局域网是典型的一种广播信道,主要特点是网络为一个单位所拥有,且地理范围和站点数目均有限。 -

    +可以按照网络拓扑对局域网进行分类: -在 PPP 的帧中 +

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

    + +在 PPP 的帧中: - F 字段为帧的定界符 - A 和 C 字段暂时没有意义 - FCS 字段是使用 CRC 的检验序列 - 信息部分的长度不超过 1500 -

    +

    -## 局域网的拓扑 +## CSMA/CD 协议* -

    - -## 广播信道- CSMA/CD 协议* - -在广播信道上,同一时间只能允许一台计算机发送数据。 +用于广播信道中。在广播信道上,同一时间只能允许一台计算机发送数据。 CSMA/CD 表示载波监听多点接入 / 碰撞检测。 - **多点接入** :说明这是总线型网络,许多计算机以多点的方式连接到总线上。 +- **载波监听** :每个站都必须不停地监听信道。在发送前,如果监听到信道正在使用,就必须等待。 +- **碰撞检测** :在发送中,如果监听到信道已有其它站正在发送数据,就表示发生了碰撞。虽然每一个站在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。 -- **载波监听** :每个站都必须不停地监听信道。在发送前,如果检听信道正在使用,就必须等待。 - -- **碰撞检测** :在发送中,如果监听 到信道已有其它站正在发送数据,就表示发生了碰撞。虽然每一个站在发送数据之前都已经监听到信道为空闲,但是由于电磁波的传播时延的存在,还是有可能会发生碰撞。 - -

    +

    记端到端的传播时延为 τ,最先发送的站点最多经过 2τ 就可以知道是否发生了碰撞,称 2τ 为 **争用期** 。只有经过争用期之后还没有检测到碰撞,才能肯定这次发送不会发生碰撞。 @@ -312,41 +320,40 @@ CSMA/CD 表示载波监听多点接入 / 碰撞检测。 集线器是一种共享式的传输设备,意味着同一时刻只能传输一组数据帧。 -

    +

    ### 2. 在链路层进行扩展 -最开始使用的是网桥,它收到一个帧时,根据帧的 MAC 地址,查找网桥中的地址表,确定将帧转发的接口。 +最开始使用的是网桥,它收到一个帧时,根据帧的 MAC 地址,查找网桥中的地址表,确定帧转发的接口。 网桥不是共享式设备,因此性能比集线器这种共享式设备更高。 交换机的问世很快就淘汰了网桥,它实质上是一个多接口网桥,而网桥是两接口。交换机的每个接口都能直接与一个主机或者另一个交换机相连,并且一般都工作在全双工方式。 -交换机具有自学习能力,学习的是交换表的内容,交换表中存储着 MAC 地址到接口的映射。下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧,主机 B 收下之后,查找交换表得到主机 A 映射的接口为 1,因此就把帧发送给主机 A,同时交换机添加主机 B 到接口 3 的映射。 +交换机具有自学习能力,学习的是交换表的内容。交换表中存储着 MAC 地址到接口的映射。下图中,交换机有 4 个接口,主机 A 向主机 B 发送数据帧时,交换机把主机 A 到接口 1 的映射写入交换表中。为了发送数据帧到 B,先查交换表,此时没有主机 B 的表项,那么主机 A 就发送广播帧,主机 C 和主机 D 会丢弃该帧。主机 B 收下之后,查找交换表得到主机 A 映射的接口为 1,就发送数据帧到接口 1,同时交换机添加主机 B 到接口 3 的映射。 -

    +

    ### 3. 虚拟局域网 虚拟局域网可以建立与物理位置无关的逻辑组,只有在同一个虚拟局域网中的成员才会收到链路层广播信息,例如下图中 (A1, A2, A3, A4) 属于一个虚拟局域网,A1 发送的广播会被 A2、A3、A4 收到,而其它站点收不到。 -

    +

    ## MAC 层* MAC 地址是 6 字节(48 位)的地址,用于唯一标识网络适配器(网卡),一台主机拥有多少个适配器就有多少个 MAC 地址,例如笔记本电脑普遍存在无线网络适配器和有线网络适配器。 -

    +

    + +在 MAC 帧中: - **类型** :标记上层使用的协议; - - **数据** :长度在 46-1500 之间,如果太小则需要填充; - - **FCS** :帧检验序列,使用的是 CRC 检验方法; - - **前同步码** :只是为了计算 FCS 临时加入的,计算结束之后会丢弃。 -# 四、网络层 * +# 四、网络层* ## 网际协议 IP 概述 diff --git a/pics/5aa82b89-f266-44da-887d-18f31f01d8ef.png b/pics/5aa82b89-f266-44da-887d-18f31f01d8ef.png new file mode 100644 index 0000000000000000000000000000000000000000..683105029cb612acb049d267bff8b44c54e2d4f1 GIT binary patch literal 119808 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񫁧u*2Q$f^%4Z8p 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

    }bC+7l(ZI+^Zj|7EP*wJCZ~YCTj!D?l^0 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 H;{U$@v+?a{ literal 0 HcmV?d00001 diff --git a/pics/69f16984-a66f-4288-82e4-79b4aa43e835.jpg b/pics/69f16984-a66f-4288-82e4-79b4aa43e835.jpg new file mode 100644 index 0000000000000000000000000000000000000000..03b7f3daa84326d89d2760ccf050a05755578f77 GIT binary patch literal 165888 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%0DYh8zL}m%UQ1sQW__=_cl)yEy85g9lF;GAHeg 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

    iu^-8l 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�{yUGMFMA;Hur^y7+6{z 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�u$KJDLM@&`AR~khz6q9%L+A59;&srY*78I zBzp818rsy&jZ!4?)2IZ9gQh9MC(vvNNYt0)e^I4~a$afkrZ)}?qF$t~O2TdBRuRI2o8`ENC3o^2+4v5(9^Jw!QbH|=ir@nA0 zgAZfS0`ok{HD3LhF}?}Su^_JfPN3h*v-vljY51EMDUb&!c2WEEMvkw^7U zg*mq-MKAr2E_ahjuPjjrC%NG{m2+l->gYgVp1s)SWIqR&G`1sZD0aHY6=$VIgVtIHFmPd{f@;2JIRu3QsW)u75R(UDXw66Sg* z>F95Lf7LBMu*a4CRFdzS*#Nn)qZHpCEF5Bj+lf*ywLK#jc=2*Z^Rj$rlg_=gSKoBj z`2|?NPX`H=tirMkigg*`6)?a1?#>a04bgylsyI_c1q7)?mJ!eX`;4r-YQ)`R(tzYR z(PUr>s)BvZo~v-mCV+kJI_n`nQ?pi+QNjDHClWLvStdmF2l%ta-vw9sqb$#p-$x^W zw{Y!E@v`oDHSiiwh+89Vt60S7W?93$3h8E>G*sM^pe1)LHBXOMQej>j+H&ci7{n@!0*1?tIVotMARL)H}#`BDC^C$g2etP)(u7 zFcEno;vY%_g`H{dh64?6M4z!kT7OxSTN7(;s;T>=NQhS(P>&P(usFG$=C;>c(3U zZW#_QKf)^qfd}o@E579*j+d>ORvF0Lyay76iG+-zTqDQD@q!CU&s2e^rv3N4CSZ@f z^MN5Q(XcJaD|_%ZwS8x@(WS(rq3tsBV-S>5>M`lZSE<~$fi@%BtfWX!`!bi4qU8bA z(!e@5#H?iLLcOg_o|Sp+Qa!%9wkj6S)GEA^?-#Dl7Psw5x8X(vMM#WlR;(rP2wlr~ zU67q=^g;fHMI?p<<#wy;5vQ_QdJjVa-hjhA_fr4IxvHN@(&KGt_y5s^)1^S&AT6WOL z&^+|%yVony-PqX-l9}oMcerod+SUPj2CXO~S~xJZ$RYmpxsPN*Zl&)kZ1uR=p!pp9 z0o%Yesj&?}+q^X7UK*?>6n(On1U#Dj-8)(-y^KY12O)G{)#zzV>P+Mth!2_iv(Juo zOD4Z*Yio=#>P96o*9L#K>~L*jN76Q|5Whffx05j)cBNTb^7ka$Y5tLa!W~N>T;Z9{ z>Dc;wkilJucBWRI)vZzThwmbnUQJx-N|lf`&&zi?zn#Cwo+DNGPrVgv!ZM&Dv$}rT z#x13#<5f;#5}A+>A|a==sIGBU6=+PmLp|ph58Uc1UK6hLozX_EItg;T5Kzm4*--H< zPl+r<)J=ZKnO{4ZCE7nqTAXvkoV)X^endyVzyzUEQ<(CfuIjB1ay5&^3*h7jERCSo z1<&d#awK<~SD0Gp7F^!7B^bt=9GRm{7^`4V^62U&kiC48_!xybA3M_d+El%-0(f^=9;D&Ce%w}{P6 zzpU^E#tpNY*nHBKWb?hiX>t^yVq-(rx~STlX4qbux#Zz4Sw4@MSzlVyDj#mP+d^ErFh z+Fc@#3)y`sBvoF4UYdiyctrQSBmyzaINK~VpyWQWO=s@@dnG`0{<&F><7siJ5!03M zYQG^ z#@^#y1W$@LX%{v^9lcm%W`zbM9|sP>yEiH=V&#o)LlQ=1+)_rt+>}~ef3*!?Q2gw9 zaDn-M8hZbqW2ygR9!@I$E9Qo_4{J8m?oqU*hN0{A_xHn0Miv7B2a*6eL?aE|!25*o zLUDZoZ?6F;~?ThY&P0U7w;w9M8G9GW8j)u5QOw!_6;ot+Fk_N*TW1x|!< zelfFKqPkm0X3{(-FW5f1y_>E!fp1#VZ#zS`5fQgNG+yr3khSDjaIbqZ)R^)fd?TE zutN(4P#pciC`D;^oY$RlI3BnRX`8hT{L+X~hd=U^cyIRP=|s@eEwv;*1p=`8DUP?S z24mQKJLw-?Ku@!W^j5^5*K~o6cjWE~M^d_Y?FG2k0UM~M|AoetECwkxmCGGqp(FnC(ttXRm^IRDoU38kb>W{A$pBlyLCE#_;I;T%SBuoezpjeoH{(c|&%L zW+7Kmh|Plj)(|!VhtWjz5n=Oh7&|{WY{!fK&h*z zKbU{(#|lVtep7J*yNx+;__&!-Fag~8aH>Gxm>_UfxJeSUMVuQg*IZc=ivB0zTOk!Y zqBnD5W{guo$qcDx76Ac}JD61sF^q#EjqFz@MB)pNmHbHP4Jp<->V}6fu8E_!@W*>4 z_4B?`23opFZvpHO)sSs&mOgb;R0@DV5taNV@T zZJQjuwajx$F8Y*Tch#j@I<`~!%OM{JI#^S0GH$E6tCQpP&p$ zh3tpga^`?pJ1Q@<>{(e+9UxflLuqEDJqt$i*l%jB`S8n@*PdjN?k#fV(f|_9`){vF z9gEycO*JJgd|HX-QHMC;vMC0{2% zp%vhe2RQgdQOEQ})|txFGMJRMNiz;IU}5AVRUmv^bI-guPGr6J)(Yh@HpCK%#!(H| z^IO2I`%P!TO6x85jV4Ld5XPe2M9pEg{^zDo7N6Lsl_szlgj8Iy5MFPpMetMc_pfty zBn&C!i@uZatgrFFu;RK_0YOa%3dbI_m~oDb2&LO1cWJ#fNcg4|V_N`$fq+Y=+4|g9 zt;A?U;AG=gPY1(?4QxVFa8?cbbm~WMvkdj8#-#4;8OS}NN=qqfK;K9H{HO7{eEU;m zo9mYSR*FHYS(CFKEU#15lhf7jUoaA$afbhZ>Fs7udv|691_t~`;@g9TbCMr2Op`OA5E9g4 z{!a=SsDre(JZZJ$n63JpJ&W8-G34p7LefR6WBPzL0nlHynC1MIV^`5Q~J07*3UH_f#!2axhf=LF^pSy>k z<>~mVf6Y?4`>3o#rXAj|PUknQqtLdUP`aoB;@vB?EmlpJQ2dvdIPPNB&mpQ@o&f5~ z{6=~7omt(K;)%AqOp45dQQvMlBnYhETF|d(dfRU0hGo3M!ib@z9~zjRcfGTW| z#AV&$=M6*S%&Fa+O*b;Y0cV|1mT~gMQ&OvwPt>L+sxjiv&jJ z5$n-ZwUyTCc^X@q;7Ew^(+LtK0AjHQ`b;VC36Tk4u@G_HlCqvv6T0=RAyPXgMFJ>c zy1J$wU(O({oarLk9dcc%`rzP(3X5K9ahM4LZL4u=lz;Q|s5vY%=#f8}yVCz&Y3W_BTd#0b8d@a9sr0_~sj zGX>`JI)7{C*%QzUkZ>#oZE3@|%WwpV^9eso5G%n5H#@?fFFyZ!LKcX#jFEtw*n^OtCH_n=!&h_<==lmY*o9LASO5$ifJIAR1S`9$VQ4caq$@M8;9S+P{BVgrF1e~kZ8NclswKA?IIzvcaVR?fZlWa}!`ABYV)w4*A2KT1_p)<~ z`)D{ZGya+9mQ`g55s(R&Po^ahA#-vr$;G5E-xQMS`S#{5xIK*3g_my+yf+fy?d2UA zsb5hW{EviNMZ45!`-G97>9AdC$*6dBl&9Kft8!#nSgB;)Qs{fUr(8yCG_6p;ev zjNSP)%ClFqo}F5CS`PUSz()>%`rAugU3JwvYWJk|8d{P#i_S%x@9E&lzvlK1D>A`@ zh{r#LFu_YTqYAL?8l+vdb_ig-5s50wnZ5KjF)>dYwQGYmn#V`mw$eoVgnL=*!RU4} z2YM2f7U3Q$YTGo>jw5PG=Y>v+b9K?(C>mBt&g`#K#Y32ixq)K4eRv_mlJFh1Sb4|R*$c6FUOzn1$Pip} zfcIw-8S2mt8k6gPu><-WmU4ZTg;fkf+T$+rQ0WRWp%B;7Wr?$As8Ub*^Djf)+U%(> z97b`ZPN`#6nG%NnsW~Kn%kh6_euDs;9Pv9u(giw%zd2bS)rHL7MNZqr?--?D@)3}8 z36htxl)p0k*)*wpg|8?spAceK-CiA}>6aXEG&G_baXRg7MD1n3R(sMRcPv8e7sF&O z4_GMN{$Z!*Nx@@- z8AcMRi26^y8y`QM{GP7tnQg(x80H$!S^X{h=nIb%8e&*!v9-$yj&Guu)-*DNBY{WPLI}iZ-`;A62_qTIEWA+b((_(vt.*eSTUAHMe&Xz%>&) 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 literal 0 HcmV?d00001 diff --git a/pics/94589319-975f-490b-8bae-90b3a4953559.png b/pics/94589319-975f-490b-8bae-90b3a4953559.png new file mode 100644 index 0000000000000000000000000000000000000000..fab53e3d0cd468801034825c4d94ed22759a5e92 GIT binary patch literal 173056 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

    Be@yzNTkoif;jk3XCjr%{9cO>L~ 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 K|Nk$~|Njd!3)nvZ literal 0 HcmV?d00001 diff --git a/pics/265a355d-aead-48aa-b455-f33b62fe729f.png b/pics/265a355d-aead-48aa-b455-f33b62fe729f.png new file mode 100644 index 0000000000000000000000000000000000000000..bb564f6e43a62e7067f5283ac8d311a1d3897a26 GIT binary patch literal 50176 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 xVsnuFp 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 literal 0 HcmV?d00001 diff --git a/pics/52e1af6f-3a7a-4bee-aa8f-fcb5dacebe40.jpg b/pics/52e1af6f-3a7a-4bee-aa8f-fcb5dacebe40.jpg new file mode 100644 index 0000000000000000000000000000000000000000..809abead7fb38f84ef7deaccae2a0c22f4d6994b GIT binary patch literal 68608 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 TamdR2gjqGlE$08@`Tu_a>Q*ai literal 0 HcmV?d00001 From 4ad6eee5462d91f608fa72f305a91eea72e33662 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sun, 25 Mar 2018 16:11:54 +0800 Subject: [PATCH 07/17] auto commit --- notes/Git.md | 2 +- notes/分布式问题分析.md | 105 ++++++-------------------- notes/数据库系统原理.md | 8 +- pics/MultiNode-SessionReplication.jpg | Bin 0 -> 38912 bytes pics/MultiNode-SpringSession.jpg | Bin 0 -> 32768 bytes pics/MultiNode-StickySessions.jpg | Bin 0 -> 32768 bytes pics/cookiedata.png | Bin 0 -> 16384 bytes 7 files changed, 27 insertions(+), 88 deletions(-) create mode 100644 pics/MultiNode-SessionReplication.jpg create mode 100644 pics/MultiNode-SpringSession.jpg create mode 100644 pics/MultiNode-StickySessions.jpg create mode 100644 pics/cookiedata.png diff --git a/notes/Git.md b/notes/Git.md index 2041b8f5..1695faad 100644 --- a/notes/Git.md +++ b/notes/Git.md @@ -79,7 +79,7 @@ Git 把每次提交都连成一条时间线。分支使用指针来实现,例 # 冲突 -当两个分支都对同一个文件进行了修改,在分支合并时就会产生冲突。 +当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突。