!c$;TQ zN^X}}xry=}Jml4&BIj~gMZBN-O~WD+)654|;o&W#3(@|5neEHw$VFMlUG(FgN*tEm zc%#&E(pb^r$wu)xE7ql*y02~=FmJFskmB&fgV4Z?owYo@wlF-TlU;Z)1D3Ce8prmj zWSfe?&u1;W6>Hzjy*D-JF9n#h_&^#b?SAJ z;QZ$vY2VR-KDnIo7qQ|>W7S|+CVsimgVizlh`@@#FU(|t+t@@CdU7x6Q`e(XqIozc zzle|uWMGxFR^+4QZI>7IyO0fY^~KO>JTp?kiw;yOT1y*{S`V$TTuD=)36&z09Bobs zv8D2##A2hH$ }kD4B3e-LhK++I9EP3+ z>HAywn9my`)VA_TH~4ODZgwt?v+|t-wx$h)wPu^bY+?i>!CJ3(#OoY*&$l9Hq1`0F zztZ3=_(G}vNnWl7%jeK!@1$D2p3zt>ZY~8fk6|7NBJcM0f5S;Uo39`3d~YQ5J0p`- zcrWILmAKKP%C#^`pN>qO#X0sfq*Q|WDQD~FtxYct4+ff^@VB I(G;LQ^FE=H~j3)F2)6)8st>J#2|QqQojk|WbRA^B5pYF-}_n3lT$L;^0=Aa); zM8nbp8UJ-Ln!M7voQ|N-Zn IOvh;o zg!61M(kOWh8{S&LB^`;6$rfy1pMhVQ$Ij?wW+=?r)#tCme-gPArL`N51mGjlg)kcl z1D P@XTT2jI&TvPoO%tReY>SNB= zv+ax3vh{$-Z;EKxc7j8QxVrWZ!lLLznygB-_yj+Zt*iQpG*1UyH92cfPZwZjnJze1 z1Lu5M_dwk8@y>hZ1PyFTlIBi|ow;a{-W^YW`m)lJor+ gmba z?&9hR^gH0yrBJC|il8%Tp&B~Pldk)|a(P&@_r;(az1-8 wZ8Nm3P$q|?Kf3S{d(HZ@N*mrx=2V|=~(h2ML~x4B5)hJMV||-w9SLdpJuiC z%aV8))_FSM$jneZ3*Q6Lxu!xgz25qJ46(q(uk5=i*B`@2FYd4p<5xW{NNB_#*Ed^N z$KeG9PglJ>Bx+v=V !$Lp;x{6#kA%V3TI%p);xDy*St(7 zAaVH4pAA!iO_DbgeU72UY^v@2H7G?h`N%tnzrWZz*a%fM(;Qh@wFr)9=-~bL{Q2F) zii^t42~M=EIu-v}ezO{bDxze%v~SEq6q}BSH(M5S0onxm#H~@%RijVOEX>DBjUu1Y zqlw|l6#_8RO(vx1zKE|=RY%=jH}%vv&0C}P2nj3nYwGKS%#$8U;CZAR*Re7f+j^S$ zQci%5VXZz+m*wPlS$aK|%Hv|QlK}AL+Z_@Z>JNyn(|AA3zRoGr)?ColTbx~*)$9Ss z^;WnfA5T0xTC@Z%bBiveE*0gD3yQvSUo9nBy9sbjl5{+sIT@=Ri*}2KH>dsxay3-3 zeE2#mw}guvTmwnN0Y~&*Iz1wT0l+@x{ihr-Js2-KE4Q`PCh8aLsHO!fhwZ-*o29#_ z22v8e{|tT`4H&UZcUigjtBx~rc=K5YHr6EQ)UU=nUl-mqb9_Ke0!`06X@Z_;I3xu; z^f+P)|3o^*#LTh4tS7Tz6YH7ir`c1%;R#u73Z@Is5flZM)q~1ctQi)BhDJwc7m>lX zR548LZ{E (P@A zM`_wdzaB)Pv{hNx(DR*Lollk5g7xqEF$=6+bpSg9Mh;)oVBihX#&w75Y{TnxrjdR4 zF{>#;ECFATwHsj)sDynZ+dIM+f^`gYl5puL(t`Bn%pu#F&t+pk!%-h95i4@epCISb z^{~X+(y?rTSZT*b5Av38p$FONSJvNkeEBpGC)hPUjGAO_6w5r?#M0qZY*MH8baoSkb;7D1OBOQ(vyH79jwtL ey*JxBLA=C!2I)5q0tf)D9uyIA;;s{vvodct8)`Gwr zUrhJ!{W(YXK(PFXy1QW|x7prYgosoKWpr< |>9V5Fc+v*!om6sVm}d zBiDY9Xvhq%l%|Mzg6?4NhVILCBo@C5+5L9$!Fma62Jx6C#7=NxJ92dshikUeI96Pv zvl|`4)UYUY3>TBU*nHGFXX`w3Q1 x znGC24;n3K1&nb0{6g)gALVSf3x{?H{^R3xaenJ=KfiXB**u99|bDhWtcx_#GTtoy3 zQO0S89!RB=9cNI@m@J^K#l}4lx<-GnMk&=Ta9ES+?r>UP-D_L^IC*neL6-6X!+Q4# zgtVZKXuY#wllG{@^B#Ds?KNe^RO;Mj%-B%xS7IcM&mX+5+81R!oWlf|T;!~#Ed||3 zgN>XeV~N2Ni^Ps`42dp0)bt&wtdUp(SJE^Mx2 9eS)+)r}X*0VkBT zCT4%ld34x%y-Z_j5_?BSOnJ894z9_#+|8W>kA%}D!ldzp=+B0{?U7um%h1DNNR?nO zJaxgYi&}TXq;$CmY8jqITMSgocn%Pa^cH!WN!z3x@%(w+dGGwyO;6v@lOfgG@u7)J zks)q!1?geXWc*(!;a|@Xf}V&3RfS^BbA9IQZb{Gn&dEmqw@4s=odW(#xb!Ei^M7VO z|Ae51Oy%V1O!dA5j9~8cH)=)=sMsosREP)T_#@@~#Rcu1Z|fx|)Z|1c`Tv>8`9Gy5 zzeKz)5t;5Uo*#X#e<&DTOGqNu+U&Ma$8+6zl`&Ln@lTPyzeKtk=9;rmHIhRSH_V|# z3oWDS;H34{*E(1B?^34}@qo>b!wLSL-}W!ZB>dzS|9L2Wr`Z4C7LWQba{m6^njrmr z#Mg__>S88b`L_yVnGdwZVn_|cj6rd|pmgctcYk#b!e42Any(+|-94=S^xC}DpjKg_ zzxSK*5s~sX9_l7$Atwca#jC)DPX+L;vsf54&9%7MUD*DHu`*!B!Rl1p8j-yc3%HT5 zl~OShqf$FDnT!M7Fd{qBB?g3L!|3|@Pdd+^ocHL|yWbf`m7!)Rb-LyLulCM6s;R8q z!v~P2bOl3i0aQSwNtd946p^Ad0Rib!BfUr!ga}BHp!6ajy@wJIklv*uO&}EM0@923 zFgkNbXTG`f-I;Ixx%UrN)?&drCCS =uB=GsOEFR+(=h8WU;gv2Y)r3G%|@ydqd z-VajouEX&mE&H4&*u8RhwPDXFUJvOb8-`UL?YL{$=WA^qrgKTZ?gZSs%iwBX?dyd- zWQ0@dSU_rD_Besy`FkGZQznv?Tu#NRyar)@!z3;>_}Og&%ID0DWcvyeFV l=tD@)cTy50>!f7P|exmkV29$)ZthQf9?@%U6eF(VR$uW~n5&Zz2g; zh2h`V3w2IYd~Kmp>oM$~PM@>nxW?8oDr(i&VS^Hkz{My(-F})s?LH&|fcmoyfvXN) z%|7a?QxbJ>Wf%v8SJ*CsIhr$oHJ*?{^Of>E%OzuDRwf@&AI_lOO|6^*wXAWA?i{qV zg%xgLBX!%%ENKC3)JfdPJ1FwxgIr&dRF{c3iIvq43QzW-+CvSN3a!i2o;l1eCIHo) zd(K_=yyzDdDQ<=qzb 3*$Pto;Y)+N!%Nxo}t 3qEyx)BJYcL zNhH}CQR~gKrWqepE{QkN?V!8Od5NA6CeomjYg#A7!#&ne7XOZmH%pxSW6@CAsI2-S zCN{4b<2{m>r})Rd!M|yz@{B;7&^~+jGKKEel!n<^Ya+8IG5&ZMbYiU$-!g`OSjtYY zxG-%F71~DLLaUj={^&@ yLPBRBwsC|)%Qqb5r>Jkf=1au#=ZFL*HaiL4CwuWuei}=y>UbR5Wgn`E zZlNp)<)fw(Hm81Z*5r!erlnmkD5ev!6m-i`w7w|aK3(D7s*cZ_ZQL!7aqOc*xott! z!5xOj;+%$1>{BhdJcj1cQ}(gBBY^|}HRT;_K*ifjLP}6w3G3skg{O7l0$kda!04&+ zOEr9C!NkSobU#LCq4b+rz1=WM!vchaDn^;;$nsMI4z|p@*PV3?yJ1D2DZ`8>g_qtm zW@SC#YcQm}VM^!Eoo{>+n-{`$H5_lM|6Ml>vOI~tmU1OFLZ|7CahXNvM60oe28jYT z;b>N$Ar7Pg7Ee)lzsteN(}7d0xu^K(Hquy{gZD%u)uj~3MC_bkHFz6|Clpx?p-N5! z@R^pGwxdFFFJ=+^X)G9I+OAWMz3G63#(Ghm?*pE<3GEcxIbJ<7GA=GOi$b1cXKTXH z0|B)6+H)#i*qU7!*DiGnzyvom^mcjqHP=4W^vo7FWvGjt@BYuqb&rFJ;GVt))Lo#z z8S0rq=Q(I}%rE{Lf(5O%-+?k<&i1>}7R(NTS)lJgneW)FpXusfvsFK^S>G~De>8zw z{2F8W%V*;C>0+dD($0rQQIj}A|4zmN$kcd8sr}6+By^J ^D*2058eGqDUQjsP&tl6 z+qomO#Ib_)?=LtM!|LHh`S;IIIA$2`V72U>1RN+SOWK8yEpQu_meWC5Bwv8Jp3I@e z=vx`AH_{i78rCUXsBJ=KoIWo_Krb2LZ-KUOtRE!5?v9Egne>ouoSn;WZdndngq>DV zL}< uMa`y!ll~%Zf^rqAI50*(d`c}?K|j_A zT%kG0k~{)UD?}jw*Z_*CEj OXFC9j-ZMYv|+TI7PjP+WJblp@w z(WlPy8xeJnuX15U!M;P)SmnSA?ztu=vrqgHWpr@ggj7H?IZTt!U-e{IsMG`^-6`7~ zNnRNRu7VXpeK^e1@0^@*!iC1un&Z>MI{@9}%=Zr*Y2wg2ntIy0SF_b#`KX0S0ThJz z)U}Lpa>V^rwe_bP&JPv3htSSgE?bMy(J|~K624AOE-m+2;b$ve>ww%(O|h+Gng|M+ zSc6e?tF*w0cqkME;FURrf+hf3KbG{im(rx_H>(@vz1gGAPT7=-3LpFzVH9mls?(0t z3uf32@ObDk#4zEx4<-n^S&nzzevrQX9Jy1@86|b&j(%g!63k{_JE@a@J3jWgP1`*9 z=H2nnOaB5GNoPq+^J>b`$d{fLLZbC(<+y`PS@Uufj9+U#P0a`e9Per|A=(|5G(y-(ENL%`!^3* zG123r%x#V_?qA(xI}QL{>sy29i77`|K5Y@Zv7$FKC*c~=lqaPX 36lQQ+a#K8wN$IfoP6 IryOy5qKHLDW*}ZEQv%dWP3xM7ED9hp(^5pvz z-m!J$w@}2_;qXUn fUy?S27B3AdnqAG)ltU_FS`#;hQ-(#UGaiTMIBVZ}K(??u#c>yezhxrr5X zFPrl+dx)@cRT$L4?(|vx{CpVEb)xu(BKU|oajvbfk5mK0DR F?)}Z^v7Q zg;_e~lQA6SSJFo}U+iJJB*e<6|XbTB~g04R}efT8V<}N=_9# +^gD~_Dzt=P0 zGxbgGi|V{wcx@~DCKgiT`6`ol W4(u8Z9Ty^gYp!h_2 zU29l2&3n5}K=Db?cI{_Y9}=ld$0G&=qflp6W% aG;bb1A^sB1uWV7kA(l8#PUI?np+-QumtX}0U-oy)&Q=p(l@1sVTb0%)-80T26 z?K1X*i1#uD_3xlChz1SsU!oA_s%J_TXbp0HCj7aD#{^9n9ah7id$D)dV#lI1pbzV7YI6Tecu z5I}N9A1kyDuz&LQ3WE^YEdjUd$PaDnG{SFpwV`|$+aG<13ls+1UrdA6QT$tlFLc N6`SM<}Hn-AJpNg_1Rk{nz@E9Q!z5tTS@q4o?XL)rlmu zjaTiulVPv*NS51F)eXgxicia(Pn|5-r!G1`(gUY;COu$yq{I>LKEbe2f;L3+u5I9! z@$-b4_HO#@2|7RP&g!Ln*5Q&G0Kfx2;sWsMU!Wz)U%0Su5tDB;S>@c+-~pSSey`*t z%TeR{!Qgsz(ZT2(j#%l|oY dyV{;vMNkg*({qieQ8s zhC=FdS# Xp&Lo41^$+#tqXsSq1vOB (*haP zPup=H8>f)S4qeHFciirMS&fP&w7y?WJjM4+AdDHB77ww9sH;oQfRSoGX~$Eq<}=dc zB<%O43$0O8l;rVW04GSgRGRr#5^hy+F*9Sk6rDU;+oYoo$G2#vE1muv4(;2)?NUVt zlGKOm_hbs1=TVZ}*R1QVw`_-@Vy$=mMHY4GHH!0#@-?)@WV!2utLk|lkB+C)D^+R! z#C-gRr7g#~jNkbo;r{^>H2q;v`L|lF{brK%ugti=n~(WRWK3BXVj{smx(rCz @{dYEiDT`8nK1UVY-MQ>-$@i@fr5Z{mp4vB#vdd7^&v@g~$$enCNAkvXmbKdcy zbp2@3)8-XXm4J8%B!PM=KCw0&<0{H>k0_L!OAg!)u^KxL;*|PA}T2y(qjJzreo^ zeo52ZJwEUGVStU;^XSVt26!=tiQ6hMs(gj#M` Dox$Lz4^sB3!043xH)AqNTyQ(9i4Tj_3tQmRqjhk)>wK2%*ZsxmT&mA^ z0W`(K_HWKb>#Eg_KvkA{f_S`(REaG^yc0vpA2hf5k-pbqqisk(GPV4qeYrrfdw z%hQ5x_+cyg^c8pQ07;kU7d83Fn >(O>5=^j(4ne4ST*omYkAT z&U9(FU{e{5%#Km?XC><%0=~yE6MZR5D?J|H5Io_J9@O`A^*}H5ip@on@-j~$_aYHT zOZf?-cqQQEq8UzGf|OQ3$f~T_%0)q^V573$Y{kBU!{D^W34fNGnI1MZp;ArKcoCVP zMdkHVGi}`vExp4F1k(@wMr_(>n;_5AYBU*aZ}jGYl0^v;&MIwHWRIDpv|nYTMdW3^ z;V!x*J|g}02AAo4fB_yGp*!>Y{LjxE(BJ<`>5Z{+oU6M>R^7kMijZ60vec5g;3S*X zNg&y<2&4UcEK&dF1xWe1ko&qN_}_p#sE7I{5%>z+{LW-i0Qi0-YcSrdLa3e|N7nad zzS2pyY+4kjU>kY)QwF7S!K7b~_@jy7PeS!dZ(Uc)J#!W-WY7$;rC>jYCk3Phl?~hn zrs9Bv*r3)wvM=!yarGNo>U+ukKh#s{UqEGl>cjLWQw& +g9HN7GCFFd0Ib6W9f)| z=bSDxP)g`~%Gs$i$p8s!IvrPYMy LO3e^bp_}-^a~6+C<(Djr)rtr1E>jR#8I)2DAV0D92g{94 zd)Kh}d=lfSvH VH+Eq?9KU*|G(Kg{*Z{vYG~Ut^sn&c4@5*4Urey&A8~uz{D_U9Y(`T 4E|P!oZL7{X9QbobbSE|K-1gY;jJsj ztu;Wd-tb!;QVAMRn!wf?{9tPhGq9F%0fjuzz}6b3Ux1-+{7RnW0vznD0WRq8(@0L< z^X$Wboi)HAXY1SQ!e2cL@5wI0yF1oXN3)!VSGT72+cwhPypW&MXLhMsa@$uw{HKT8 M|C`6d|MLF70D@&d8vp 2ndUikdziskZzDp38lNcyGu%9@lW^O z=RLa5xA)oaIq&)Z@4v2hc@1H*#++-6r^Yj$`yT6N;${K3Eh{M_3BbVt037%axS0mT z0aRpU6l5e+6ciLRG*om 2JJ@(+#1!OY#H6H@v@G{2shMa =r>LBgeC z7el_I^bCdC9*@H(G8L8PQAsnt^56k2r;&p%8alyULLy?id-v%dFmQ46@bd8sh(DH) zl#-T_RZ&$_*U;3`Ha0PRZf0&_>FDI_;`+kP-S3ruKw!}8;Hc=B*tqz&35jXx8JStx zIk|bIW#tu>Rn;}MpTD%UwzYS3b`1@WjE;>@OinE>Ew8Mut#52@9Ugr>J~=%*|90_x zUT^@yuhRnm|8-)&n->l^FL*>m1VohY^MZqS1sehmA`%rlGOm~s$}{^r)Eqvjc#k4e zOPbMWIF%3ZjT{Ei323<%=?=e7?U$MTwTb!uOEdegiT! U} zWQY6jeV#~B!A;qexsJ}d0R|q9!>)?Y)w&q1${6u(fKsRV3zVrFU_SN+Ko|Mxsz&1O zGozH#r%5+}=%vBsQRAZ2j~5#BX**0Ru+CxV28GoP;H7az|KkP2DxRKyFmzJD_8MUq zy5DsJ_*49Np_>-+u|(nWzWfdF!L#`Ko54Z)j~DqdN-hKpSd0oN)SpLiZh$8mR}Y%V zxSyOR`BKgtARJYb* To_M$SJB^>ddJYD!BB@MNu`M?!!dKL{9c8V7`o& zI-CMYX{&fj+6n%6Dke98>J6}$2sq;}5Zj&0I_3DUC%+W)tJb;B@A-OUUuN4`$JfT! z>yC2TAHuYIC6YGPY{paUnk`h?nG+93gbuG;d_SNWa2A$$6#4W%RKotQ_IjwT?cT81 z@Ns GG2wicKu4UrgkgzR77DX{*o<#9 zd`A3+-nSZ;q}9CO?$t*cG#h0u{NSe)n;r=W7ItH{Wb9EUv&}fukYBj#XY-`zS_a`D zz0dfJ`WB&PhMq;Hj|~kW+xY3Cv3f9l7G+v6J$zr_4M2${2>WCV8k~f=y4TOw8jLfu z)_6)1RQ`BMqDcRNhNe3QYMs)G;^Hjg1`xv^(%{Xw0Xm4=VV{=2j|d|7+)TwuH!YY^ zg)PHQ3q5=puUrw?EYNAQJOW#D^9(bL3FnnD5uMCw2R>3?q&;tF`Smk>DqDz|(5;O3 zt?%FXBC|)lSx=FjN{jVf$M;NqQQNN80L9uOR-V}6a2sa6av)-!@h%wLT`UV-tQ#46 zK|iZ$;ZC-){m|b6dw=ltSC*_DosWt#)@DV*{M#F89j<(y_Q=r-BuT8dx8go)x?+&{ zPDUvQI^DNu+eAjec(*Kkr~||Qm?VEN8go~Z*E&GQ7ez}q&iGrjHm^E?Yt|iC3#4ZM zmPjIF?A7Xx?&QE3wP2>ZU{rbQ8%+NJLxAGSn`{5#L zsGBjzS{ LFCc|U(rqVVUQzcRqiOwDIe8honC?HfoG&qp15E0RUFSHU^TBPR$& zG0xSSss?Bp^`Vhr+!^2WIUiWZ3+(E4*JZZN)cU*-5RUi=+XxT6N&>&f64V>QUtL80 z^?rE*ak-Gp&k_93qtqucal(e4ocE3BuLIE&fD9$PDB_u`o#s@hvonV{qOoJgI-G>j zb@F;k3iq+{)W-VWWHlq*z)6g=s>s*=T+)Xe%30;ZEUZPwBhFEUOlHm%QSVx 1os6ZOnEXj~t5j` ? zUxxXWaA5P%F8CvcDrIeom?RY2-UHuf*o|5!8pwaQ6XxJ@Pjs2~9eis9H&0ULw1uL8 zP5>*7TeLjYENy=%fy fxz)B ciu7zoTi5)I!(cO#tMaJCqYiINW~KA?&h?}_uRe)j75xYF(|DJ&(~?>3 zuF@}*U8OfbGOEyRH -xM+&ECW1u;V(2U)Q;+NjbY1zd27?ykCEG5h zmCNPwWrR9XXy{~1-`J_eEabzZGKf<8q9Q6HCH}>v>0h^ZFflW(Z42FNRuZF)_D0Fg zv9&F9nwF}qPcZUlj}uyn_Wp274p$T~i4rBcSE}5#t?!(o9@L!eOU%r-%;C !|U(#Tmi4ZJq_CXJ*N1l95a100KgC2qgf_HlfcTF_uUGs>3H3 zp0XnfHab9zlYPaq{ivqPvrYAF8pUBVo#I_)rVQ5wI9eNfvZ3&x^9^Y20&c@AQ~5$( zWj~cF3+h`@k}%x^Ss)4xKuiyBN4za5hR8-IO$)#KA6Ul!D>X3NaxW0DY|Erg-ZGN- zRG`TrE2V1&z(vNgZbxhr+@avJ7q4Z7dhC1nCeaD4Aj5?JG6 zyg}=1Qgj*X#Z!cn_ >_jya;Wyq~eVr$IFNdb6;_ w4uITQ{{?CSez;mN@3&OFIb)l zvM^_~ohJ=k_>HhFgvWZ7aSJmSWyp2&OH`(#wx~clOt+NU52=o~1bnf%b~#maZU7#l zG@kL(^ScB+lMmi4#@qn7Jh#Tk?8Lq>(gTD4^U*5UBCXO_W<8cVfSct=5J^puL*~9W zurG=`hFKfdSHczN&eWib+RDOBnHr1A$9S7E(0(8aJ$GS`vXJwxKHc`( h z4P!7DA-6ph{dV>&Sn!21p|R#t*rPOR@4R$xfDFKcLkf5g$ #z>%%7q+-T;G@u>%_asHLB`SbZbMB`=MViR3G;8@&3R@}m;k zR-au-PmshU+o4j$YMKv<5+y#*8F!GeaJ@TOK`6@6Tt^w+7kK{WR9NZ}+*0{gKz5c? zPCE&TIZG;C;hyp3A#YWVFnTiTwvt8dyJ%gWlpM*AmP$oO`Dgb;MZePA&s*`9Qlmv^ zRyV|w{U3{41-%Lyawy?bgxcGRZ|`6gcxv7%XiuZuYY+D}4N``Cn3^+f;WFph9jn}o zqb4U5>dug}`t}sQEOofZ*=@OgEDa6Mntc8#6Ol3Hs=hLx8(cGBs(L&l>Yk!7L@rpo zOD3!2oO@f94N=M_JMVG!hZEcS**^HZ?VnuYUv`hbxrrLHoP3~)kFt6cKaDL1Mo>7d zPZK2vxmzs3@k# MNMFOIr7%{>vl<%i3o!)sob*diq%zh@~mo%r&;}zdw3AJ56DkZ4myBN15r&o zR7I@dzp4#JgvaHhHbVTQi2>O;5>PjI*~KBOQ=2XfY9q>Q#K^D6LTa5{(^VA}{?5IR zcweo_#8S?Sl= zTK|gPM^bOs_!B7SQA*)%tK0zaSm2H7CW(;gsj1JkYpEok9cjDX*rrT22j$!V-u}4_ z?e^EXr;WRejWo~aOCTX#{byxmUeE>2(+?Qs>L%`xDec)uQ){U-J&vS3Z*2W0fuILq z#*CaM&$GJ=d8X&67`DhCWh%|vzq8Py3T=8cfczd`ZpW2kD#Z#mRCmM!xg?mVFSr3b z1bNqCND-C+!aTdoHmMLt#mF`O@aNLJ%{$(Y!9qflpCWi?!o4Jy)5?!UH93+8?>ad$ zNY+p7j2J`~s4Q*&aPm3uyZ8y@NiK0!ij_4v(qBp2IcZ52PDQEFp$lU9w~I21r67>Z zZP$U#16&qo(U1F|7Q#v*SPAz`6h9au%|@vrsGq4PT2&1@*^^e~`Unld4@{Yu*fx_S zA>Q`(6+?_gB(BJ^P~6O=VeAy{Y2iBKyls*Y=mIW^J0Ac6fPs-2&tjY&!fInw`j~+U z-{`1{TrO^Mjes^v#!H5Fs6A^ovv7pD$P!nmoxP_M`CRx7s&C5qZA)M{t&DcqW^QZ@ zf1De2?oPrzRlk?8K1>OzD@11bQ^AN`g$i)*qW6u2=Q_k%Umg1CebQG@rR^1fURoK= zu+7le7Qr|-8oBY?H50#= #Eu1f+9@zf+i8SCpMA3Hw9!R>Om zYzgH{vi8$#uy|KqbQPB5)mq8QC^FaA`wjGO $WGyp;F* zf^SN>!tt?L9TA@Jwiw`xrT&K>`G+3|`1W0_E7V2Ek7j%&7OxyT&rx!Ob^Cai`iuYw z#tuGRS)-=2n-sP+kwwKtrlpZQ+&-H11*e8CZazNEh$4vajMQ_&QZjDky$ZSwQH)h+ z#yO?pwYV>EC}x-4c6tcem;Jm&1#15_qe7Zu OW`{A_QKXHD=|C<6|5oen~h5++u{kT4l0I_ZW&KKr#Wg1AE z>?$vIJ!h1As8KMm$)&j-_-J^kwqB?ERb`lIjY=dZ5|RB0zet!tK{1wRAPfgWbIIBR z>%YVkG5z}REcT;yf5VJ=;Xf3;@R4Rm2zW~M^q#zFChYE52hjbLN14m3mDc8tWTz>8 zscL0Xh^9hj4rF!!+Bb02u|@HY9?s c6f`vN+YmCO%`=={6fcb#{Jq5cVs#mY$ zl0hPj2vY8MX1zjUQcGSMo)-vnJE7TMrepL}1M3^;9}K~bclJLoh>~9aF4X-#`TfJ> z3{G)oTFebXSJ5NGg`2ApF46T-SPVHU&6~}rIz=>rnRU(Wc#@E=V&_#{P_z$T%gM18 zwmyD?HCNIoX^E6Q#uqLNTIB~CQi^IZ2Vy8W+ySMXi&;3j9Y-50OM-z$+QWk;_oFG& zQ|hjCUyi^H{4KrvKm3GSy8-Yk$ZmbPq`9>E%z5qyeZT4^s}LEM(0@5ean_4pvYc}M z6gnWXh;fO1ReotObqMS0tpNku`aznv02zVS+Ccd?n?i!V#ocrZNQ~j5R!K$ATT+V} zTLB?>2OHWiH8iZ;?BWIssuZ8K$#5%)Wn^yU(ING^90yi{t1s8e#Y_JD3S6m@(PP zwt|A=_}dV ^TK>i8_!mupJOcCUtCtIZ+WUy zVz1GIkGW3Yaf(r=E7&)-$D^Cv&4dIK#<5q~DDVlhPb`x aY>RzcPoe!?6a F0rDf=SBOZhBC780t~Sl?HNzNnHde z4H=2&7URlXL)uR-S0rwQyVoZ3pP_t mLfb%0eA=RAdoy7>EWC^Z&fQ9TcD-6IauE9 zh}6Ri;g6I4b` 6q8K9s;UsPlPPfk6T{w5$$EQMj{+cwYPPUZ&u@ zrq-6SWR)%YXQa0k=0lHOm6(0?GrW_`55pCx(vMaixe_Tf2$Nr^3UH~?VSRvUit{ ;`)11i&bF_r4sf;kDB4EN1Q3CEh z!LAs@$4V0H-z$;$`?qMkBffp}0}J1UPTYNSH$Z+Mtl b0d<5N()FX3rSGe*ifNsx;TqCNFR6cj+mFS{RtKj@zm}c(}dC9{fUvqdX z>OS`B+lFcK-N`ogI{tpb!r-q#C-VAVnv2&g+#M|( %oKxYM ~3@6!rWG0`iR}B9oqwh8T2nUx> zFyb5B=BI=ay5!iIj_PLud-<-AXO5065svtYGrFj__sv|4KD=xmp`VUIR_HQ?m8caeW%6=gJep81F3u|HRWm6pHhijgMk8^r!o$keBG-aPlFAq_ z%Ya>Grj#@GNiGfG@~u>? % %BNQ7LKZ7FGWn&O2yW>0+) z+1J@8N@vh5p1lFo1@1)g(bQB_hwlxM1es`2$KsEU7_!k&`pC0cwv7B{)0mYahY!8o zr{!*dR8Xo_b0y4;D 1>tKh7!KX-)fp 9i8}SE-US1>JpR8m*COoSj*(uC?j-Jc?nFiM#K-;nyyC{0^W^Zo` zfm#Wjw%=(d?dk;?C*}yT8}1j%@EOTOL#7Q@Rla(=l(9>9IZ*Z554prD**j3^9N%E^ zTz*dE$+Tx0cPUy^CYEk(2_gBo(M$YM`3nN3 49h4P^7nZYb27JkLTv4# z@W?YB@Z}Ak7mJ6;HjEgJGVK|bJ{rDGUL?)k$$kg#4tNZHIH9dQSc`XEOE8SomwB}& zogKxCi-b|5r^#`ZPKpzGk{?IxS(yYm^-wi^5=XaU=3+dW@HWnPPlj8qULsv0dum?S zvXV__7I+pV7o+;-g7Hqk6+>%ZZuVrog)`I&p+i-&v?otD+8bGcUkF>93ro)FZ*i^| zItpU$28y6gih^sV=TGdw+;aq!J!4vdWugk`Vx?T){S5afhD%0~t;`MZhCAZg;}-{> zitFji+NhDhQ_p%Pfv^2lsdP9E*Faxqs@>OBf#Jh~$&oxjD*(wLz%nKUbl40BOPElN z 2rUHzQAM_wyJe{d~v3bn%OZrrBpbXyg@ zw&{8d(YHX9$PIH(SE&ePVymr6MlWe4OPkxWGDHZ^9fzml{6>P8za*;l@C=f;zJ|n` zNKTpg#44!GgrcdmslFq{43@5EPZx)fmAl{sQ3pulGDW5FQkE|BHB)*D8Wp@ZmLrZo zwHPUY&4*sc_Z#pM_PLk|^KYsi@8fM;y!T%{);R5km@&3;MF>FTvq|2r1EeNqmGlGL zOcqmQ;juKG)-1%5iUD#-xn_px=i<^mqNk+lVaoExPokPxhn32#csq1_1l~>)^^x!i zW3Q@1egmM**L)=~qd)+ &02h4e%(qD5d4eDX7U>OmOA;fO@aY zcWG^IN%~CAM(*(>jRg(Lc6*`t!$@OCuc|V!250{dv}F+U>Acc)E9@M;U8OLn1TU5i zw+8|Tjr8DkCNCnHX6QNs%KfQ#+`V+=Uvk5gJ2sd7oLKI3ZAUb|b6zfF1_Hi(Nz{MO zn}o>8`HDSzipBJ;WOm*M7b>`A|8~G#RlNaku#jcBCSXi~hq4>Z<2C8y0yZ@ScGPMZ zK48bUpjJN4^_r_~BwDS+3X#t$vs(N%e>>|tuL|X_t%=Nu7Num8qe~ mN 0^Sa2=pN(wC;p{_a&DR91Clhqi%7X GL#_Lua~ 2O5gS;lUbIgtO+edndg~9SI;3&wSwiCt z3`sjrcI~s<@oZP`tUWVWC9hBR8%zCER_80HQ9jh#93mb^h0uCg`LaD|!j8ZB+lzkg z$wApKHS286&biwI{f^|t9yU(fZ)xv8y(E_G{rJtEF|WFV^zL&aQXWU;R)Tal !OR<@=0o$3M{s%nU-l$&8l57>gejL{5Jmk)Sr-pbyFSt_Xw6R)wmz9I8QSQhCQS= zx+G6n=VQ=ukd8p8Jwf?^a#SdcB6CSlVW>W}BaR%sN*ixkH zJF47R7D?4)Y!4m%ULSrBa?1e$~gqs9F*Joehm6`))Zo zLt*dxvp2!%N>w^!&pko{E6e9DDcqz&1vom87vHA_T?8Ks(0|ljSRQKqEMb3pbRTi5 z{EpncRP&E<6YTYpC8>&Ra7^iZWRi^aX~7nnET9a)>{sPp?6UwF-9;riiVt{jj^bdT zM}7}x34 *R|3FD^caToJ%i);?nQha!er4>1Iq%A$PpTDD=KJRs~Lj*q|T(5 z!Ez-zn!P!4SkVkJ`TM;0n)kHv*mAzogt-}~#M>cazVqeO>&53G>*p;ijqV(^v1t!d z5s1-X(=Uwj{18E>Ds7~B@WmH>hl#HPCDH|XM0;GJzOFJ#v+zWTDw#|`+B5;vI!h`r z4#m;%-7RE0Bv&UTL(rZ#9rse?M{MfF)@5?ImN0Y(L$MQF(_i=S>0+8W`2?^DqHkRZ znveD8*EJ1tO@)@icS#=l!+mNev$FZS5S2tRD?!0sH(tB weOs;nmtQ9l^lLu*^y&9}IjVv15J;e}fO0uEQ*a(~zW=gVS&$ zF|iFovj|bC (n?XY|IB^+krg+SmQw!4fd>1>zx~v^ zu#5gQ>el0D*GcL(K#CRX6}l~qSB;r&)Mn3ik$_;sdi{2sM;!bkV;PRdx)ral6l&bV zql_X|p2don`u#M!2s<9`-}F`8X7|_JQUd5tL-}#U|9c-M^}9JqkPnG nS z%6q}4Ropm52unhO3`%{U)WdECw(j*AX}S~=F$8qKL8-68*R|^Yc&a?pbq^T93|0Es zcixCrytZ{1r-B7FO(RP |(gi2>NG3Q~5`8{3{l+l@-sDpJzd!?K`3K zndO5_i}K7zC(P83U%D4U7seG-%TubL#vnJ`(i%2+DFn4Vg6$`j+qPHk4DJ#-PzU~G zgMTEg!oSm7BYrZ^ZHHjt48KT1=ue6t3K3R1e_)1v`A9OFB48BeTqVH@szyRb@NrpC zUYx6O&1`MSNxrI*;%t{}JH?+A+)H4LU?O`1oJyUJhh!hX`USg=-bRQBa;BWwiR|am z6aC2+uTe{%7%bsaPf48`B!K2b@72BLxzA`gnc`VpsQnWWpOI5O9C3s@AYeD!jTJvD zH01 Vo53jV zxg^1Q3tYRr-=xEkt)AA4=pUMeGkMWPpiX}=WxgH>t+mOgrKk@WQYL~a`9m7CS0Zl! zrU(@7-7fSTq>$U}(V;0_-ef<}$bRI^{KM~B$>iavFS#=%tX#(9HqFpm9op}iqOz@T zu|bJj&O>sxFIfHQ#$G-g ?EJCskD?Av3RtFL+|-IrH{Fb7c527jZd{RYnb+knjX>f`?jkWpWaq 6`Z8 zx$ywp$f!Iq|KdRTc~Q~W(IRuYmW}GllV(X>&!-B@PsXvYWGBeOn54Y|Bv8H$%kF)) z=_nX?t$HjVcd8jNtLR-rp7GA-xShNqa<>7j5mn4zA7bACI4VkdLb*=tb$jBKmoVRP zgR>TqD+v zagjKX7Q)i(Iui&v zyGAN%+z*1D2lLEB2eh|g=YcmsP;O3I_eZ@ms%cN~0D@KV A-1Y2m z`QfHa_;UwtIbY}$Xk0-I+P`$@EZATDIySZc%(XwB0TZR27H6`gzX5GI(_&oM#U;db zuZnH?&{^f;jvmr8d;GQMP^-2rvPAuD(UPV!x`5pa+Ov*! z_c8813p1Bk%j-Eh#}k_SC)}BQ+4
oJ|z%W{i+r6&nr7NCmAK7DXZ zHd!U1JVeW}F~-5GUKJLxlvXs($@6{t@O@hi$M9))YO;ycx39O7i%jp6$RjWB(Zu%A zTh2OkG(LDm4?lc>J+b^ywDaVBY)7K}BW11qP%RiCjV^YpPygmI-t2cnsQa6lSu&<| zmxTSh)7-m^T?yFIoZ{yejF&{x(&m$ jbXPjMXbq z<}A amR=dt80$F_E!9qWMG~?iJI@y z)XD4Dgt)G4YxijQ`AH;StcTl(rCAC*8PKzEsg;f_Y^@*5ubsn#3wa=)H;Zvw48g@Q zc2hEaAW-5^K>nGTGt}8msM{kc07MB_Gv0P%+F-&FBFqbojV0taWb71Y&TEDFO3y7& zY2lq=hBtZM!mcp3@FE^57;EVlj)@kta>NTO3Fhor^qFqc@QX~baUZ@CUYvf *tz6yFGwbjr= fK!%Q$muS(GI3bKio2 z5UzDAv4{Od) 4WOMe#~KCz;qP^>AJ zXYT5v$iWnSZ dN`#exekvR819!HM$t$I##u@h|_Yk(uR3skYR;K#k8BVz-(c;%Yr0^ zv?9+$Cj)!vyBgB< =l&EAz+5s^1TAaF%1(xy#Y?PdBGAg X%IDzre}aJ*bPK*G_%$mmCius!uyKV@WP1sW2{H439M~)VIASxzOtr<^ z=Co(a=W4Zk(jyC+y?-2z{e+5N7~5vlrCLv4FbO1oT(a9vxvk6ScWuk_61Xzqi<-tt z?FCKon=KT%IB+C=92}Bb!r%^6Ooo{=L3Z}!>*R%+RS&9Z-@!#qv}#w3mQQayOB_}# zuMU3x;7%(?ZO0c{f660CY=og2#^PO)dv$SwQehNok-Z%sJ+l2V4N=1GM#*&T0X{Q0 ziN)EQ<3kpSqa6X)dy6Bu7lZqhnyV?6_xaS+x`A$QxOEg1t|9`#*C!+-n%Qwnr*nk6 zhwDO7c|m2v_V-t>EKcL&s!lr{&Fryy>yDy6FOD|6va<@P8LmL%+GSObwB04w8UIwT zV@{wG#G9&0LPX&*SRswBpv(yUJl09-I{ttqpLfb^ZfJ{*7ITFjDUSOw17Dk#7+*gP za)^I8xb@Ea4%@ }yZ48z5b|mZ2>-^I e*t f))zrh~RGjW(AMIkItoAu3b{wjD>8)n2sBBfn%aBI4JDM4vcC^Vx zMM>f(p_s2AZAdOgY9*`ZuVk!C`ef-*Yqpk7 B8O@|-*sB|z;6cn|dQuk7vu=+&z3fi!&6Ec#%%A&e?(OXKC7BNyx-I8R*DPbg zdn*v3aOpC+R0>ok<(8*|v@MpN`_{f_aq@wKmC=6f?lroufxAP?I= )||cO5u}4I~Ijv|M|en$nAX1V*jF2+yDJ+YZ|9KA}@NMzvCA` zMqiR2Kb1P*^+>LvsxMqKcaue=zT{G0FY6vtT6r8RtIAN1idI+#l8kR&2O2sXLUib! zkg~P;7Ig9c5af89q)-9G0TcId7^EB>Ucd8}CJE}}V0 GN$q=GGMO2rd6P(WmlHA$HUE zw?b&YnrpwTQV%h+I~^>q>|&!bN~eDqNOO>7 lFR2!XdU}Pc zpLHZlXL36dd_$`*-len^%!tPG9EnlVk;%RzRS7A3BCkgjqxysef*mh}+l3;NCf^)b z8!mRTOrAV=T_LhQcXk5+tKc@+Dr@ttc55O-)wBxCb02ze%K&ySqB8sH5+uMZkTzb) z--YkR*VzS2{149>&rw)!fICt@bPe%&9$a_|F8e7S^H&J*H^A%kpZZEPl}V^yT0;9j z?Ze=}qGikAPo2{iw9@iDe;kkbPo3?U2Gts-QoincfaMtna4XN1cBr#AJ$GmGR0id% zu96)_bF7a?(p&p;>FjR^dRQh}Q*y#BuDm#Jqd05%-iEc7g!P7_ATD^Ud>z&=$r*Mh zZq@{K+Vk=IHV?}&QL!!hdClrG2@yqrdq|!3v`n*OjZoXl%&1u `2rAqwBlz~I@$4?RzO_|wRBF}T!h zf0Qi6k9}E?{*yY8ZlPy-3J~4P4{5niF0n3hy#8I0%5?P?K}Vq+%{DXAM_2`4s+C5} zMwZEHHhAKeD^6KAI#k3zN^UWygWElPuf#n3M>znTH %ZOqRyz=64_v%>?mq=54o6U z<0kTyB9B0Rm8|U#_EgIfD);}LnErdFY9Y}rf}^c3NbWsd>Qw+-o7ciyJ$vthi#=Nz zFA^dZv0`OYc6`a}pS ooQqM6j zRp9Z@?sk4&>52^@k+V*RCt%?4+i(y;Z~TvZF~@hK_-Bn2`tKx@A8xJx0(?JY%y0cY z@I89bbuc~wT_hM1DZT37xdBSVPYpQt-E@$9E_Yik2jKo{f%bbpO>(-!l)x+Uxcy>F z3KJdQ$5Ne9@-5Dn!S*B0g%^u2Ev~_{sAvXYEpU+p)(aarvT0nQTXWN4C-++C-wXzZ z57t{)(a%ed~Ngs-h}%^9%^S!;}-D5bnK!yg`hd+vNCQ~2W2EW|*z{L>MpflU zpRW#4Ec0xF(MPu=QTVq|h*szhSw2CX9Sfx>S_npzEgp7a`3FIGElbb~QjP|UeP ?2Po$o!NO;d;{zY~kHw+DDT z4!A3#6b zHh z*xl#?SN1QLxuhmExPX!1GCz1S&RTk#6hcGF;M;Nmr*^z6Ij%7bslXt5Ij!?{OfzFj z!y)pGohZ#Ae(%N{VdKHo-BP(FPZc#^4kR7nSO$+%W5gy99d1S3CzkhursaYwu|1S|HF$Ve2Dvg> zZ7ByaiWUa0DVg?>e%qqtop`xIGF)a(HmNboM2IG;vCH~2b&W%XLL!SfHuc7iCe{y! zg)TVIicJIq227TXZn@ujfp=cfc$)%l=5z59#{EFG@~YChF++AeE(L0YM$(69AVIMZ z@W97UNZq8ENHo$S1J9u=8uqL$!EAZdY1fIG2+05hA8n`qI)VPZ4E#^p|4`}wABo4` z&tj1NdKM$(_h&KkkN?@QetKUG?YNqS+e27>PE0t%K{6P1N_@BPMgKvlqsGPu%=hA= z6(ihXf@&NJNUMH4om7;zl7!~-l&cCTq@+H*j%SUSP9eRr9ud3DmUCT8;&kAC@MWi& zATMhzn@G?J;B8fz=FJarZAyGz1GRn0a>C5BM&H7EFUbkgGl&p*XF2a=)30A!PoydF zX*?uzTKm&y@htsr51XWTxQtuqDe-$gR853Jx8$Ai6j5*+G0QVY<@-;ws;yt{^I3@4 z+Li?L?Vr5p<9#{N$GO|;Ts5XX6&rf0@upyGxNWeT#L1KfQ7w@kA!gtuQnoo~FJI$m z1=<`9qOv8gq_Hi|R^-ad{HBu)2EqBjMAJF{42wuh;=<@n_Mk#r>%GSsa4x%)A9Zhw z5-nFaA1k6zQG5xzMMk4EoEmjOzi*?y-zVpLFThkyiTWXD9b ##7A@5$@3~!dzg`WCjj8*{e;LdMEZ7Hc<@|OI z;cw>={`pVrf0H%u{U;@0^+LC&flIxXwj?jsWjtChZ$( ZYXjIyN4Z z2&sVwZD?S)3cCvDAcSuIjl%p=$iR`WZMF_73!DWrcAXU8-L6a)Jh+#HblNSiJR`i~ zB}>7zTqL^+g{L2UX;3tKzTfU{eKx(zRp)SO|BYTKJ-h}Z?n>qZwrW~E1&rW+aO2`* z=x3R0Fm1jA-KC(}r7#QGGb5a?vfb3XSFv>MGTiQkIBeK3X_2QBSRc_TzV^!kRm&4&TjImd!=@N%t zb*{^eWSeF4w&g>+-IMJrACAHWR# $V#7e z93tepAkTxb8<&__?a^@+^U$JQH?|9gsECrMq_2^7-l$i1I3IpIxnDJ9;j+53e5B|m zMdomq`8-;8{)$NfANn~6tcgWms=)4n{EmlGQxE&^&h&xDqvnUag_nYlK3RdI%nrXo z%WC#49agQvcB6<2?B&~zsxfE^<}$duUF9WsIF}@RdMVE`^XZ+JEH?de(WBKyTyum` z`eGDN1+SNi&y^?+qM(-0mibGmj!UV@rOSjip55sS4KROb)GI%n_u-mgt<<)RTimBP zQv8-p=AglNjw4E*E8(Ue0-D->yO-dwS;M?V=5%~nM5ov)sdI;J)snm;^nZQfe|_P9 zec^w7;r~bLg7jhk)qRl-iUa@aK$x~?@h(_$HhVq;7F@obE9pZHtrS0j=ZIf9dd_Uu bDcs?WrHWuVpLsfCwil6YQ?7_|Gx`4j6Wf0m literal 0 HcmV?d00001 diff --git "a/SpringBoot/99-\350\207\252\345\256\232\344\271\211\345\220\257\345\212\250\345\231\250starter.md" "b/SpringBoot/99-\350\207\252\345\256\232\344\271\211\345\220\257\345\212\250\345\231\250starter.md" index 41eceee..902f95f 100644 --- "a/SpringBoot/99-\350\207\252\345\256\232\344\271\211\345\220\257\345\212\250\345\231\250starter.md" +++ "b/SpringBoot/99-\350\207\252\345\256\232\344\271\211\345\220\257\345\212\250\345\231\250starter.md" @@ -76,13 +76,30 @@ Spring Boot 使用一个注解处理器收集在元数据文件```META-INF/sprin ... } ``` - -- 编写```META-INF/spring-configuration-metadata.json``` 文件 + +- 在```resources/META-INF/spring.factories```中加入这个AutoConfiguration: + - ```properties + org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ + com.spring4all.swagger.SwaggerAutoConfiguration + ``` + +- 添加该starter依赖,并且设置properties: + - ```properties + swagger.url=localhost:11111 + ``` + +在测试类运行时则会加载```swagger.url```属性。 + +## 总结 +自定义springboot的starter,注意这几点: +- 如果自动化配置类需要在程序启动的时候就加载,可以在```META-INF/spring.factories```文件(该文件在SpringBootApplication.run方法执行的时候会加载)中定义。 +- 如果本次加载还需要其他一些lib类的话,可以使用```ConditionalOnClass```注解协助 +- 如果自动化配置类要在使用自定义注解后才加载,可以使用```自定义注解+@Import注解```或```@ImportSelector注解```完成 #### 参考资料 - [SpringBoot自定义启动器](https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/#boot-features-custom-starter) - [简单示例](https://www.cnblogs.com/cz-xjw/p/6632402.html) -- [Mybatis-starter](http://www.importnew.com/24164.html) \ No newline at end of file +- [Mybatis-starter案例参考](http://www.importnew.com/24164.html) \ No newline at end of file diff --git "a/\345\210\206\345\270\203\345\274\217\351\253\230\345\271\266\345\217\221/0-\346\200\273\350\247\210.md" "b/\345\210\206\345\270\203\345\274\217\351\253\230\345\271\266\345\217\221/0-\346\200\273\350\247\210.md" new file mode 100644 index 0000000..7132347 --- /dev/null +++ "b/\345\210\206\345\270\203\345\274\217\351\253\230\345\271\266\345\217\221/0-\346\200\273\350\247\210.md" @@ -0,0 +1,3 @@ +# 总览 + +**在开发高并发系统时,有三把利器用来保护系统:缓存、降级和限流** \ No newline at end of file diff --git "a/\345\210\206\345\270\203\345\274\217\351\253\230\345\271\266\345\217\221/2-\346\273\221\345\212\250\347\252\227\345\217\243\347\256\227\346\263\225.md" "b/\345\210\206\345\270\203\345\274\217\351\253\230\345\271\266\345\217\221/2-\346\273\221\345\212\250\347\252\227\345\217\243\347\256\227\346\263\225.md" index b9a8838..fbe6386 100644 --- "a/\345\210\206\345\270\203\345\274\217\351\253\230\345\271\266\345\217\221/2-\346\273\221\345\212\250\347\252\227\345\217\243\347\256\227\346\263\225.md" +++ "b/\345\210\206\345\270\203\345\274\217\351\253\230\345\271\266\345\217\221/2-\346\273\221\345\212\250\347\252\227\345\217\243\347\256\227\346\263\225.md" @@ -1,2 +1,8 @@ # 滑动窗口算法 + + +#### 参考资料 + +- [TCP窗口](https://blog.csdn.net/wdscq1234/article/details/52444277) +- [TCP滑动窗口](https://blog.csdn.net/yao5hed/article/details/81046945) \ No newline at end of file diff --git "a/\345\210\206\345\270\203\345\274\217\351\253\230\345\271\266\345\217\221/3-\344\270\200\350\207\264\346\200\247\345\223\210\345\270\214\347\256\227\346\263\225.md" "b/\345\210\206\345\270\203\345\274\217\351\253\230\345\271\266\345\217\221/3-\344\270\200\350\207\264\346\200\247\345\223\210\345\270\214\347\256\227\346\263\225.md" new file mode 100644 index 0000000..5fb71c6 --- /dev/null +++ "b/\345\210\206\345\270\203\345\274\217\351\253\230\345\271\266\345\217\221/3-\344\270\200\350\207\264\346\200\247\345\223\210\345\270\214\347\256\227\346\263\225.md" @@ -0,0 +1,2 @@ +# 一致性哈希算法 + diff --git "a/\351\235\242\350\257\225\346\261\207\346\200\273/1-\351\235\242\350\257\225\345\270\270\351\227\256\351\242\230\347\233\256.md" "b/\351\235\242\350\257\225\346\261\207\346\200\273/1-\351\235\242\350\257\225\345\270\270\351\227\256\351\242\230\347\233\256.md" index 2061b9e..bde2900 100644 --- "a/\351\235\242\350\257\225\346\261\207\346\200\273/1-\351\235\242\350\257\225\345\270\270\351\227\256\351\242\230\347\233\256.md" +++ "b/\351\235\242\350\257\225\346\261\207\346\200\273/1-\351\235\242\350\257\225\345\270\270\351\227\256\351\242\230\347\233\256.md" @@ -26,4 +26,11 @@ - 4.Dubbo - 1.Dubbo是什么? - - 2.Dubbo的SPI机制 \ No newline at end of file + - 2.Dubbo的SPI机制 + + + + +#### 参考资料 + +- [优知学院陈睿](http://youzhixueyuan.com/ali-java-answers-to-four-questions.html) \ No newline at end of file