From b5b15eba9405ab79d38a1d0d2152b4a309c61e60 Mon Sep 17 00:00:00 2001 From: CyC2018 Date: Tue, 25 Jun 2019 22:10:21 +0800 Subject: [PATCH] auto commit --- docs/notes/Git.md | 4 +-- docs/notes/Socket.md | 25 ++++++++++++++---- .../72ee7e9a-194d-42e9-b4d7-29c23417ca18.png | Bin 0 -> 17923 bytes .../a4a0a6e6-386b-4bfa-b899-ec33d3310f3e.png | Bin 0 -> 34950 bytes notes/Git.md | 4 +-- notes/Java 并发.md | 1 - notes/Socket.md | 25 ++++++++++++++---- .../72ee7e9a-194d-42e9-b4d7-29c23417ca18.png | Bin 0 -> 17923 bytes .../a4a0a6e6-386b-4bfa-b899-ec33d3310f3e.png | Bin 0 -> 34950 bytes 9 files changed, 44 insertions(+), 15 deletions(-) create mode 100644 docs/pics/72ee7e9a-194d-42e9-b4d7-29c23417ca18.png create mode 100644 docs/pics/a4a0a6e6-386b-4bfa-b899-ec33d3310f3e.png create mode 100644 notes/pics/72ee7e9a-194d-42e9-b4d7-29c23417ca18.png create mode 100644 notes/pics/a4a0a6e6-386b-4bfa-b899-ec33d3310f3e.png diff --git a/docs/notes/Git.md b/docs/notes/Git.md index c637933d..27ccaadf 100644 --- a/docs/notes/Git.md +++ b/docs/notes/Git.md @@ -47,14 +47,14 @@ Git 的版本库有一个称为 Stage 的暂存区以及最后的 History 版本 - git reset -- files 使用当前分支上的修改覆盖暂存区,用来撤销最后一次 git add files - git checkout -- files 使用暂存区的修改覆盖工作目录,用来撤销本地修改 -

+

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

+

# 分支实现 diff --git a/docs/notes/Socket.md b/docs/notes/Socket.md index 29c69fda..ae520c48 100644 --- a/docs/notes/Socket.md +++ b/docs/notes/Socket.md @@ -103,11 +103,13 @@ select/poll/epoll 都是 I/O 多路复用的具体实现,select 出现的最 int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); ``` -有三种类型的描述符类型:readset、writeset、exceptset,分别对应读、写、异常条件的描述符集合。fd_set 使用数组实现,数组大小使用 FD_SETSIZE 定义。 +select 允许应用程序监视一组文件描述符,等待一个或者多个描述符成为就绪状态,从而完成 I/O 操作。 -timeout 为超时参数,调用 select 会一直阻塞直到有描述符的事件到达或者等待的时间超过 timeout。 +- fd_set 使用数组实现,数组大小使用 FD_SETSIZE 定义,所以只能监听少于 FD_SETSIZE 数量的描述符。有三种类型的描述符类型:readset、writeset、exceptset,分别对应读、写、异常条件的描述符集合。 -成功调用返回结果大于 0,出错返回结果为 -1,超时返回结果为 0。 +- timeout 为超时参数,调用 select 会一直阻塞直到有描述符的事件到达或者等待的时间超过 timeout。 + +- 成功调用返回结果大于 0,出错返回结果为 -1,超时返回结果为 0。 ```c fd_set fd_in, fd_out; @@ -154,7 +156,18 @@ else int poll(struct pollfd *fds, unsigned int nfds, int timeout); ``` -pollfd 使用链表实现。 +poll 的功能与 select 类似,也是等待一组描述符中的一个成为就绪状态。 + +poll 中的描述符是 pollfd 类型的数组,pollfd 的定义如下: + +```c +struct pollfd { + int fd; /* file descriptor */ + short events; /* requested events */ + short revents; /* returned events */ + }; +``` + ```c // The structure for two events @@ -195,7 +208,7 @@ else select 和 poll 的功能基本相同,不过在一些实现细节上有所不同。 - select 会修改描述符,而 poll 不会; -- select 的描述符类型使用数组实现,FD_SETSIZE 大小默认为 1024,因此默认只能监听 1024 个描述符。如果要监听更多描述符的话,需要修改 FD_SETSIZE 之后重新编译;而 poll 的描述符类型使用链表实现,没有描述符数量的限制; +- select 的描述符类型使用数组实现,FD_SETSIZE 大小默认为 1024,因此默认只能监听 1024 个描述符。如果要监听更多描述符的话,需要修改 FD_SETSIZE 之后重新编译;而 poll 没有描述符数量的限制; - poll 提供了更多的事件类型,并且对描述符的重复利用上比 select 高。 - 如果一个线程对某个描述符调用了 select 或者 poll,另一个线程关闭了该描述符,会导致调用结果不确定。 @@ -315,6 +328,8 @@ poll 没有最大描述符数量的限制,如果平台支持并且对实时性 # 参考资料 - Stevens W R, Fenner B, Rudoff A M. UNIX network programming[M]. Addison-Wesley Professional, 2004. +- http://man7.org/linux/man-pages/man2/select.2.html +- http://man7.org/linux/man-pages/man2/poll.2.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) diff --git a/docs/pics/72ee7e9a-194d-42e9-b4d7-29c23417ca18.png b/docs/pics/72ee7e9a-194d-42e9-b4d7-29c23417ca18.png new file mode 100644 index 0000000000000000000000000000000000000000..2ad89c0ada3fd2104721ad622cb79b31e730e8ac GIT binary patch literal 17923 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 B@}K|! literal 0 HcmV?d00001 diff --git a/docs/pics/a4a0a6e6-386b-4bfa-b899-ec33d3310f3e.png b/docs/pics/a4a0a6e6-386b-4bfa-b899-ec33d3310f3e.png new file mode 100644 index 0000000000000000000000000000000000000000..7866d799b64594c45e4a71e254f01f843b9745ea GIT binary patch literal 34950 zcmc$`WmJ^i_Xa!|s5~H2Dj|rpBO)zQDj+2(3=K-B2uPQTARtINpmYe50}S0F(w##i zt<;c148y$V=J`Lr^?rQ6y=&=Wq4#}apB>k}_C9xrx~e<{83P#%2BT0^kky32&cb1^ zGiNT6f`91^(7XzMkho~dKZc=tnErxa&RIQDc?5$MNBndA;yn2M(klf$7Z~g+2lSUj zQImZW1`B3XlzpV-VZ1&S7{@4IO(f1pe<|@U`Rv^wx_{TW)v3#^tLuuOU>JQ%SaIDa zezVYZe!&SdOE=Z3kEX{HissCcqb|! z`Zbs%nhyF|EQ>w^e%y>zKtR9#qHc#a^hWoV9trq)MVTG!3A`Ng|M_L1f%S=s00Msh z!s6m$<3OhJrSxXA=1{uEa)*g`gWuIIV5jT;X$XNu`hcPPV4^Q4FD~^YF&^)v5XtM0 zR^acrZONJL-y5y-c0X7@_htbserLUPCOindT5 zad&HrWSy;`hbggu>EBEF9e*hs*8zfHWBhQAs$#U>*BkLOefkkh;S4yHi@e6Qqrx~L zmWTKpSz+=^w?3tX9N_TyR_T+d+2=6ox8N)UN}~r-PIkF4ql10%*`%zGeu*6q|IAWL zVfL#bNqr5@_+gOSg^F+q;e&LBcju_~H$MdAxNibs&5AO?lxV;*%&j%i4hsePWw+6+ z3Rg0(oJ6;D#`6AST<1mS*GZDP8wrika5#^I>)c{|drpHajpEk2yB^W^X!q}?!DU$H z2lMj}S8UiMCn^UE2Q(-izT-x2?q6CN&ePe%`V+-Hjt`s;94@>Wc#J-CbFU{w8q455 zeqJJ%1WZOf{$t25Mf~-j=h4WHj*iU552NXLnMh!nLC|1P`BxM} zecC&|3R?Yilz@G{41}8_kABR~v&{i-Am9uR!ol($LCaG>1hbz9qp-8;kwkj2!)2r2 zff1sC3=|}z>24`P4=Dl@`NrH%7WM5Wc!>RftAHM&{@>8xA@)oETMu|B`u%@vAp;L7 zo=W5Y$LZ9!ff8Ih(HV>c()n*isS7v6-R^vm^mg0)-59VL)xru1^S{O4BENp`ruAT! z%00W0{NE=8{A>n=40>SO$*MIwb@}~v>Rd<3W^wNG-an23D6ciI_4%EakHM`gAs-Vy zoRhh#O{z`R%fbJjU}V+Lu0v*KNX{Z9QR%(^^1yyd0TEBdm-{YMj}X8*fs&JUoHH$& z^Y*Pbxj+z|$?;p83;iwbyX2olpJ;7;#<@h|&(U}6yOV!J&g1>ZW>UF{e_0waOEb9D z)YbUv4SuozPK!OrOXv8#oFp&sJCrYH>TfVpg_~zS$VDYyynTz|_|VMzUg17w)@tA3 zo~_Q8;DwgruZ^M)mhkA`>55O2&wD>vb)7jke_3l-N{U8%nUB=nIp#}KOkSaI&Mmyt zE%<*s`qj2>v}Lw3l;at5HJXkudF+M$mzDQPq-mtCRSXOH5I`pSxCs;^csTZ8bI|@9_4gIW`;3dgY<#FHk7n=gu9GzC4M{TawPYyI>cH60P(KxFhG>|xm9 zp6NX89U*!%q%*r4^snzxEVnn}j56L85+B?ibrF={G(kJp2~>K_;E695l1fZzVmEf) zp`#c~W0R2$=|9yF#|KR;Cy{$em@~BN<7I*~hnHwLzf8xq+{IJCc%k{*J&ty5Haqzm z&Sl6)^w_?pyLGbcfAYaR^ON;!v~&HPgN;1Yqr=&i7bYgY!_wUNeO&5K&f8=O`NwvK zMLdbm8*H9@SYb8vzd>zZ{pUtP$OEp?hHUaBLfH{BV;Ph4nT)h{rTRZWutgqQbH6ud zo0jBBVBDO*yA)@!!Y@!VlUw#A(vKB&geOaSlS&_N$}G5Oq^Yp)Z%nN+yk>{@_h*|g zHaDlP;R^$jR|Q&wT(pKtG^4x?S%cns_WBZr-5ax0a+mWKQ0%c;n=y18zlnP$M7rax z2!A1&pF;`Md+zEw*1hR;aKt(J2xbZ?-y_-+i!%>bfnU6$tfU#sXTtm%L{K!zaG4$E z`QL#|%Re1C&%Sq|e>qOq@>Aqy&lA)G9B^x6jR6-ZyUM;iH}MxLw_4QGt~}=qXNSAH zg_G5n$u!g=f7G9NFU9jb)m=$=PCP!``TaBSpT>G${5uZi*mE*L}L1>s;6 zf)iKo=td56uMA{<^jtgGnva5Cm-O6bzwf@0X!Dv^zm$8mOyu*oFnYl(M6_vC{tydq ze7=VZ0*BS5B0u!rN zICE;GMq_0+7drauS~i(#KF>epCQoO!o4XYe&SulKo{g1G^H0@6i4}Bo@j6+oUt#JB zz@de%Y)sWOf^DK1B$LG5MJVp1EEO5nxbfb1Thm3nGi9sLu>fJn()wfcjqpO^=B$iI z*0=&puoP)ma>IyP=Fi5~9%9fjS20-xE$=eP%-!gY9nC9hsOdR~DH1MQA-wn(9d@7(Ng8_22t! zQ1LQQUaQ7)C+jPDVnQnSkeTyxPg1Hs@g$2&uHoh~;|7wly`$uJ&)3kE7rLJ5`R;qm zI}w)>&?zoW-HFxmLE1}(j0hj#;_8Klf=z0(p`aZM% z63(?hEBDCznQ6v18Gkjufpp`mgl@M#eXOfk5z)`1iT9muNx)%3H-PG-_Zh|jXI9nH z?LOms&3>v{*rz-`$UDdVmzt`5hVrFw1d)2LT!=%lSOM|Vg9-IpyN&xfh$DX9_Z)w_ zKk99{ET^m|#HF{DBdY2D%&Iq;!fkEz1!B3R{iEA2%zIzyM7?s7EpYS>fs01+!0prL&Gop@ERMKscJ zcXB&)s9BhKrd>&pU$azBEXV6ict;jlf#^iN-!9x=uEDy$pChg9tx{>(J? za@LHH8W43TQz+g6NAeZfaLg`8G?C=z4TRubsTTUy5$mJ6c>N9Cd$UFDztY-Wqse>>=dVAKf0B*`V0%(9iCh zwi&l1=}0*HsDWQ1GdAiKy9`Z(jE+0-hMOG`&b zXL-iY?k0qX3Zn9L<1y(h^rgF%UaH3pj)5YnT}C)v7o)pI)wIbZu$3p!)~xlk8XBF! zemB4VAct?!(Cw9HU&|_k@K)%^Q^XyLnISUMak?3zIA+fsJ8fjA`$fdN4x}sxwy?Gc z5I;UXGi!FtwsyRr9OFiiT?B}FR`{_~0#B&0(EHPO;d)UKEYk6-aY&>E2dDnF?tYPF zcYJ;;9s3>F3V@}l&DP1GIJ2Vg=)ixj1@)e51WB9`o08MUWYy-^kyG3p`ZZryKX=sR zsf>oP@yiVv$-I+!GU}_aLx6#;`GI$I3#VGo+}{2BY^Rd5XM*%|IvPD7VSEPy)VD6T zhyJ;6(I2IhAmY$fdv&T4BxY0dA_}@NS%A9xZhc~wj32(DaaL*Q%L9+iRJ(^ZAC6*; z<13|3-@e-(Y8}Due?2?;TDOD70NQE3C12pNMwpo0zd^sz#v&C2qDs=X?ZwU}t22Wi zO&Qf%Ki#k!)^6B7g|kjd2-&8F|)90D3Hy09PeVBfzjdz050m}Nd(rT|XM zj2UD3s(kjFcEC_k=vhdGs4C1CJLC8oKl3~@{MwiEjH}{9G|pPD-2SV#YFalt$q(Q} z)z!zDdK^8tsUkr*sC*Lhm}YJM9VGT&yx_==F;y;BI(NIi@U!`FUPKvIQQraXK5r7r z4iE0UDP;o#+|wu6fiw}-m^RCjzW7x5L$gTyUE^A7=7@hz7tv}icYIz{Xzb+2+q1KR zZ}rN3KqT7m3?!tTeOL`np8LB0PAk7z%a;YY(vAp+dpWFovrQLvJPc12uaXmfRD+$W zserSU>V4y!Fu2W?rIN6etRvyEdDG|WLw#t3i^8(U7D{SK4=k7)y!TOdcX*hke82)| zP8WbNmwV0PCy-9p=%c^kvCtN^;YkpE^BP+F6>;~C*A(Q02eV;$^?adU;2IqrM z_b;YL#asQNGZf?vHSM_At23L+71p9Yu)lIZ^kdWYzIGzMrQsh1t$Mz+5@t>GvxYAJ z^O5m%#(i_S_F!H(t#aI5ijDOMjF$4>WC7aJZB>pe9XN_@n_vKQKZ(G(xOSp|OQZyrln0t*4<` zuLIlP@iM!m;>uf)#b-w5L!KB;)&C@_>L16+YFGFl5WU4M0q&d?gbhHcU5Wj4?U*np zATjKi2g#(%-@XQ>ue+vcat&IA23dRP0nJ}zuwk8-uuoRYNP)o=KUq)!$zK_;{dS=t z<#6wb$Ufss&bT!_%)&S{7-yzg0dyVJT{*%P%@poDso#N|2ll0j~NO_$vmsrNx;JzikE_p@q#cPgFR%&zN!W;v5Bf+CxR&moA2w_NU8b zxeJDV0t#CoK63fd`A8_-GN{NX+nYU7rfKlp;T)}TFSNOGL()s=V0%&7!~CxY0Ii$f zr3vlAyXE#{)MMA#gYSQ!cEI0Y<~Nl^pwpZA=4?UQiF!&eZ2MVH@tz5GEt*4lvRMBL zo9%giSUa>*4WXBlBD8Ct2K4tjMS^!bt#SqmOUu)~n`G`8r!%}iN7brZ`6>;6;s#k5%Wi#tII*C)qVf$RDZg&bx8hp-(T7{8cM$-X*^+|T5Dd`em18Pd7lXB}@!^xnDi`3)P8qKNru(mc2$SvRp%Ndsb_fS6&Bjf% zXr3vz8RQgH!NvxhNja>~c!Pc#PN$hDobNMn2(0ENoE*sbS( zFnd8~+FCab=h#t^P$%p(C%ex;!2)00r@YAsoS;_@SEI-|AimhAW#Q>ZetS=;8$?5H z&RqvcQrSKao8EhSe6Uw)nK~|i+px&8E)2NRjd- zi#Ye@Cl4I%ViDoxuDz5f=ECVCBHcY(Tv#I0sM~U#+X3k4_5f5~5q4G7OE{WkM7TK?Uuj6)VDF91tcB4fvPy-k;Ngb4-Q@aw+#wUtY zp+qU)aik=m$ek8dWvuzQ@%j|!2UmsO(>=6-GHu0#qA@a)9fWM2|JaizfGNApVCvS| z+S;h&{!h5_$$lyMJ~IKdC{Bo8~S zK_Gz#fVg1VkqkJW_q`(!qq0#(e*UZyq>2g<97ooPNDT4Ci0Jh{35NAWlU`=}(~)Y? z8T%Fey*_EJ;OvFVl^6k9@>40?vf1M^7@Mhf?OY>uh(QLOR9}Lr2%EK#>yWCXNKJi~ zq?kfZvpi{0zjrEtY&m6Ge>DUbRqzCqiaE%rBt00e^Bc+6 zTiS!<{ST1$os+_^O8UkPe(Ti8mZvYzzga>jh~F-MIc3|yy8d!T9a5%377!aeCBamu zRgsSf0vd@gwHbT|oL`ms;@VgV(7V2EFWlPS4mOH;O|jPi4{eSeP1Sj0>gvr}KmEU^ z`*@Yt8Cl~NUJv;+#DN_3Lpuf$`!DbaK)=20U@f2?xlTCRb6M6cvqg?A#LnhF{0r4B znrDRd#fRr| zr4mHC-?hH@5$zQ+|N77~F#SQ`9E?1LT$Y~dTotx78wY$-r3>V2YU}x9c1dWjff|#% zGA$li4WY}kdquE^cH5$ErFFMLTk`*8{%T2{$735PfzCE9l|Q@$Qo!H#la>A2D-6zQ z6gM5_AJ&YYeP}mcZ1w>j(-O|O+>z08S#kI>4kzKZ(OKh;{b@z=iyq8j1x7$U*0Dfo zyV%dCrZE`Ww_Fp z766aAYf{g|-2V!gviq_=+B`%|&5U#9EH_l3Y5|WK$$=8#!EaDJMZI{nw=%rR4YQU6 z&dhl+`Z3%y=jj7)oV|x^6VIdK<>HtDBp$S| z(!2g1D=4Fyr(cIYPa9KMl`a1TCAydxW>~>T^Yd?tJ+@4BqVlLQwJ{k$o@1)&DzCnIk1HOx{@;7YXlwYUYSM$R-2?XMpI=_WnuiKa zq;;gmrmr-|@tOQ&V^H1MTC3tzi8t@bs56B9f^@KiJiFk>US|e^h^BbAiYbI#%_^gi zbtF7xq|gN0!C62%q8p!K+MB8J$~8IbGSAt*2jKk73!+N^C$poR;c!JuTRRYXYiD1c zhmX(QV(%Vh7dywC|2y+5C-AxED=KTOv^Gi3ka^(FOH4@sGhJ#j+ zRT_=$0_JlwxWxv8N)k_TLu0BSNFepk&6i-pbHLo3ko$nAG&FnI|Ji94rp`^n`SjJ| zV7#!M;n>j7)H2}6)_cCQ*uK8YId*mne}lOsEib1>Rg5Wb8K zOKpd5>qrTgVcbE|yx~(~)hn`G4UtU1mVvElZU9~!H8;Y1ZoFVxgcL%EKuMeVA#;Ah z(_geW`0*Ma*yA!NFKqZQm}a@$koJ=RN%JH~nt7Jh?hmir_v-~IfX>ehSn7S?n3p@a zc_r;Tzi0IbR=H!7#Z7?1c2$AQ``W)7eDhfxB#3#HR^9P*iPHYl!lYU`XCLxI#crgA za_k+a#laXZH85qNFCMq#6L0U>iy0ET2h+dWP8R7rera6fTT3p4Hf^@g!f%L=B)RM?buamVQZaeT`72!P@P{2XF~SBmcHHlAhQ;9|IA)l- zy*^1-tj73-j##yB#k=WVcB8Os!CcXFHy5=ICzSBOPoP*+lafhNM~_*wmU>gL9obNP zl^06J#h{mmY|S3bKow=+en6c!(i!-@*GL>-&5dLpy6C~cTjmxZCr5?Z_9Rx%_~E;g zTmVv7^0_m7`4_0WM>+?PQaB@VpfX}8^LwuOBd{BF34mTvVcX03)*MY))qr{t2Q;nZ zlvvqk@i!jOX`x(}d$N9xf39->Mhw<^zF<;%Ua5l=qAcY;&BtAKbz`>fd> zzAEOjWL`ju1E&pq6*n^l0lhc`4Bm)-crux8J;<@wPKSQ*mp5z+xZiK10OO(=NPrQ! zQM?6&(R*N9Tc450DrZ|zP(y_cFx4!Lmf6LLV?n{QTa5C?ga1u7QRVVIFJIfqPSjg_ z^ulGPi;y7nORb~e-%AC)s378NE-F}9WQt=U2jY2{Mj8xQn48T)suPG2K;@#)QeL~( zkded%S&um@d80<1S0HkTN+m;1cFhyNx4PVe2M`l7Wh7q-YIm%$hwPxrSApiFiJlKH4oz-zP91Pk zRjG@gr5zo&=9-skzpEyZ0eiRr>_N$fI;Y?pkUg_u<*P>FGszO3)R5&b?)%w~p_`G< zz|trqtRED-vF??07#DIe<`p?}QwmJ>d7y}|A$sJS*Tlu=!b~tHewzVy9fZSF^)T`o zC9}lE2BID_P2+#q+jnRz_5Dty_H@lkH{bcLe{bZj#qG#lz!=&Wf< z_#E7mNcXHKo_M=#0IsIWMcVgB2so%>0M2BXISjWHSs%a zMrsF+Q)U9|+BgQ}4*&AqU+6X%S%CR@1)jYuSz(wTe!T)5KDX5RUB}K`5TI+&E5NzW zQgsWO{<`SyR}=9OmvrU|B_zoL!>R%8z7LmgI8(d<_8BM-d${GgF*%0RZjE4Zx6n>Q z@D80}!yN-RCAusHJS*_MrXWsh+MXOAqTY=h(@nsBUz3A5Z7p_Q(@_N;;qHClBH?*t z!iDDT(Ht8L|6ILuZ+YY$8*C0V{V4GGW8Xn2i}Xi#f@l*PEVa_O)?>DV$H6%7MQ(Zi zfJ{cY$C$yvkm1(G`U=Z%8v{(+@lxocSYyMu@DW3IOlKIEs)pl?~2 zW)Z!9m;%8_lGHD!Dw2Gr{9V1rR(f9QKf*S2u=rKbfrUyO=+pLJ{Q0=bk5F9`1d_UC zz9Ff*uz0|4DC7VNH@>3^U|T&&_;LKjn|A>OU8N2=wX)nu7o}sPHIVRQQH_zhH<=-w zAJBC)5VMmJ@()Y`wIe8;J00R5*$m$`P_=15J_f0BNlj40$2yRL(t>`g$j9S{V~8H$ zbvxoqj{pk|c_ zZ4b@{`}H=+Zw%eBako(2@f9ltv&5*86(|obG1!w|`UObP$j1Okz%5nurz#v%auS6- z>0ooFKi^+M<&Ogls*E5@QaHdAD@Ng7lc3-Pj zxh{4fH-mrbf(mqjK$OwiTMx(#+e}_qf&V~}sQ*#SgY_|iu7Ch|o@(O#*^b=PmJ-?) zfDtEML5cb|Y6qm+kRCwJI+B{!fWOe7qDQ+cFu9Zrrjltf^i%3~N35jg&ur z8eOgRITVmM^RO7g6yG{V5nXOyRhvO{KUMBeEYcetIW~h?UoT;ScB6IzL1KT_y`b2v zwR#om2>kC&Aqa@_Pbld*9d0i|#(S3#Y1+v{VKi(TSf1~-v!ntht@YmTF;a#{j;&5Y zso(!iy1;kAc3)S+u)$AK;tVX*ZVYXKO5Bd)MU?*fwGU~g-QLF3gwZmf?E&l!1vHdG znjhh)>d70T-6CjoJYDGVY_5JzU+gpB3CJS2^C5t0=ejo9Z4KK(eVE{X22w5%^_S;V0W%m_+E~nZA zFzj?^ygK$^XRYW(EoI(w1Hj1L>%cM+?2;b1-iDkXBuVpDOL(bWox?c^;1Qv1EdweP z6{e}S34so=VNI9SAPUAMR25+LTna#sN>J|^ZqT`O(*n5XKex>T88`TAYFfAtk|Rhlq0rm~hA|AxC!9O>MF`1~!$KW^%LIq# zt?hTX7zZrC03@_EOCX7w5;nLkcBbzhga)mha|44w59C7B&+}Ha~=>R?u zV|X(@F^N$#Yj~V+eulDZjJd}hb->a;?0_^@yN&Hh*ef~#vy#>C#oOX;YZn1A#w9qj z%;$foyg966LM8jL6*NBLe;4`_?E1c|u?$86pG)3=Z2!iZdpo1Ft2ziZ?z{q;L}sZ1 zD*%nGBVwBzR%fZ)9Yyl*;$*C! zX%Nq(zuw80u`yk@+K~e)V}bH?$+7Tq%*|<*E!2?<(m*3ISKz-kvwuRss%8UJI46bka&v#O!Du0OCZJE~ zM6>~p@f96f39gnL9T_r9Ut=`LT<{*6s zg;+_{<79DnR9@s*PE`wtzui|D8(2rny;Ghq^_Z|RMxW~+Pg}6q>}qbr`VsN@*uS8H z^V8AkF9XQw;TbQdYi&9>4OGh(Zrwa;Y%z9+%9Qc{B4%~a$@{S50DtWOJ`Jd3tyR!L zg*dA&$)iE>Ubc5#O@I=p8za!&&*S70=a!4qvQt@rX}4auAm;{_Nni?u4sA4Rs#}%H*Z$-<#2i1lUt8|@r>`SrR>!Wr(elbSd8RN2_mPb z2KG3F)L^(g68+lG+kt|l4CBzQNPw+?V%N8@ppa2AJ)#4A0aQZY%YVZF)KS9V!*;D8 z#Qr+9?BwI7pC>q9@BOJ^W~EGpn&F9U8-OAjp#Vjn$@+r#FUZ9<#vwio18SK*9_QYe zLVmv`rB>hAc;oiMDM0xaC!JQmlNxnen6b0&zknxbTRVH@^pgda`y7FKW4GpNd6*aI z-1X4v>|2V#jRWW6j!`*E7I`=c;i?S9z4FJ?l};IXk!5=3@jQAvj9&VlJh_h)t~h;S z&fu!T7I|HOK%QUIyxKk>Z{&5Pi~!DDBbs++17!I@zMPyl|3zUz5r(i{G4nq?i;sB$ zH*?^&f}2ykRVV@3MCB7>Oqv-RBhSXn=jv1Sz`Rcr02PgudFm6yxx@l2LvWQH7(mo+VWx-s&XHAi4h51(~7+2plgl*A;e*&j6m@ zHC#N96D}`&=2ALsI&mT1_%Ux|4fyxy>z745x6O4#cpmlLy9e^oYxt4pg@w8mFO#au zMF!5ROF+68#w_EOT$3!I_m*Q}X@y$7n+i8pC>-$xp%Cv+P-;n$s zFELZ@V4x#nqc8&UCBs9A)!uB2U7QIp;?)qJILi%4POwYCl7g_Z@lOuqr(x}uZ|Qi1 z!=%kc6|J+NM9PunDEX(p7iv@VpK(g5NuOphxSO-DQ<~ z1BZLh1$9wqOo%wUZRXz-iukDr=Z&xhm0QeVYa8j!N1v6tM*Z4+QyKv3-WNqphgJe^ zA{HK3x+$-%jjX|rB>tX;5+N2SGvDviZ>N3(I=9|@rU%4iUYPsZ=sQRn-c1y zZi~zRxEb0?wA8w2l(M z#UKHI5Bz@*!i5VBCDY;DTgCKBT4HO2z28Ft*PYJ~y$w=q5HbotW2ORq!DVx}ng8|c z?POs3Ffe^-%XWiG@$<$rI-E!(^1ND#lQ}E@27d9GdWcS-|m;x50;9kK`2T(+gj;w^+lLL@)7=LESIupFu7E zpW?+Rw=f+sbF5DPc;2hSCUb(h9R3Fkq783a9KW~>HVY~&o58!M?Jk+o`PrhF%On7S zXDD8LIaxWoQE}bHJ_uxfU-KorcDer(D!4TOT5Lc~H<(>6haJA6SZopHrMm!lkPSa% zWofxa#*->x}HDiDa&kHNVJOZ5~ps`6)0RgD*8-U=NK+45y6$-RX z=cQklc~<6KU&ke_r?`_<^{*rbGvq0C=<)5L43suk2@>KG|0MW zt<_z%8y)_p7&GZ>(|gTZ8W`Oc^x|NFfv67sM5yi-AgcZokdqohNT(bgS9sSS)APMVtR+5$7!Uc6l5l% z5juc7#sfEj^31<3#NIufkdl9DjOniv6O9Qs{?r%mZq#k6k_vXs$nHOX_DJdzzANzUcX>b^p~!8o}CS7n2!@r5W$)Dy5RCnNi7uTzpnnP1ptKi~%%U zyKQDb1v<}j;h+U1eTWV87i=`eN(1IhB*Lai&N~8P0YNvk)s6>$*H^*TsTrXEQ@%)J z^qg=a8$;5*Xb-n~MxCsO;^XxN-W@&RtSFXb_^QNRo*dO6`}70t2)B)D5q|!VhdpM2 z>TTw7xid0p(KSm@bk2JAT@@uT4Z0Na!h}Cb6r5^|A?Oe0@GI;9sJ(k0n5FB!2jR$d zN4K~uMS5l`1&E@?olheD^(d)J0co*~ZfgeBxR?F*Rop8NhT*mdB`pD4>c};7iU#>^hA2atJz-SdvgMGcPme^{WKeSF?lDuN!jzb_tVfQhMbwR`i=%e( zxXA^PKY1o8$XDjK@C;+&^OHfY8^xSm_}%C$g|o)+M{Pb=_t~T}j%|Aw%bq{#J}i;O zWcP}jpy!xH_f4fs;(N!XObGFtp4ge%*>BO0f?` zUz^#^t8gofLK%hI#G6mHKfFUiYEUWpLoa>ch8a`J50Agy+#YS)|HA<{p0A!Q>}?Vs zQM;EPzaz@87jnPB*P$Spi|FE@)T>lrC+Ba8=q7k6+QQ+s=x98phV{v{$5eag;n|6I z8ZxJKb`Hitv=3e>^z`-Ji@~V2?SJ%2{*{iCgCj;ea(`{!W5Iu^-5@Bex-C+I&?=ybcB{6Vda3_ z_9Qr?2ixgh5V`+#nO7^JxyCO^QM)WihqSpL!go+q(&%XK0Mu#sPm&VLZrgz+(31dS zzIuD;Ni5V>cv8MAI&wwdOLs@po<5_m@3ykP9nNppEQE8cwY}PPbw}BCg&)o4 zGn8SduiF1Q?D6SHrjsCX%=c_$PatYfuHDzMIwiZ6eOa(fWBHmWUbsw}l6W}j|6vW^ z=2b{>Xx3jPh;@z8xxUnZk-(sxrDodvFbPhs2kz+N63jN&12B_B~gty2`8; z>M>{3=bI5Npy2C<+&V4tDLvEE`|7E-BE}%?=aYfJo}!&@6@*ZVY)$8cG1NyA)H}2e z$`6k~Lx9m?G+uvCb<|tKu*#Xkhf`_q#8|v+ubXO6cl!&L)1$l>?5D)h(e%T4mt~d}0o(^Y-qiy9#@e#+0p-Gp8Rf1VJ z0ke13uG>3%n6y3EhmT(4lF4q}f_S;5lI-5 zWoXCagP!y4&y}{vDz7y32lMGE-^p7hW{kQl)dY!;Oh(i>Vk4xR>PDDiTzt2t{YS1n z@M+k%U)(Bk5FxRzydpXB$Kv1@F{7tSw8>v;f2OJ70^Yc(mEoY()Oh~dQ?V4+@NBz7 z^o;!aazbZ~-v~>dyAgKFXNC{&u}26jbS*5w6cLk$iLrtHe2+GpD5WbqJfI6&0(V`H z7BOnSXhB<>W8Vq5ApvwTr#;loCPmOnbz~;e82mwk&JpuE)if79{n*jz50Cv_oQ~g` zcgG8FoCq(sOgk34k5r&1gf!9~u-B*x&8{pStqdBL^=ju8L~2LC(W~3>4~mx#Rj9CL zExVID@Aq|9kH4A;D#qGjN84)aNAQRnjC)7HA_gZS3T0~|=}3ZSbsN(&{LJk^&QYV* zI`aiT#7Tpi>s&MetFc<9VvQd@3M&~G6UG+0F&6L9O6Y~yX3I%lO`=*B6QSIfd&QDZ zxR8DL^U&lf{*k=o(oBSJ*Yrm`T9%y#cio*C%Tl|fj37iL5h#szEZQY|YNgQ6i?Q&P z;xJ22xU2j|!v}v#F%4|lp1$|YA#u~z+@zB@Ul8lUN8yDHpG}fpjR3uy*sV5f5#D&T z)wV~EkZjkpC>7AvV5Pj9e~|Flw&AP+J=a@sPf(`evfc7pbu2T7UXFNHME;4r{jtkQ zX4ib&J1RDv3l>zZG|k~HoN%Q-0O2GFr*uE@t-HP4nPC!@r3c&-lOxL@O2%i$&CQU!(QW02YJ8}V!% zgGHb0|HyS<-gJ%pHg8rIu)T3@+GGLWhD^wRj~z5>4Si~xE+yT-YK$?X?|zD~oiZEQ zsltu{-D3XPx>8fVF(}?b+z&pf2&<0e!}|{T)mLr%OrN-}Dk9SB#c`GSy?5t)0!N_4 zAAo$N9LlpagfsRt23k+Q3UD~5-)UDmDGE`F;1!NQc4IXOo@EhAh|8psPnf$r!>qfl zt%tOqTLpK^68b9Emzkzwd474W)xmdh1m= zXVzdn_VN$*)WfTjW!}DbsQ6hS7~fmU!!U%it6XtY@?GDG#Z))_IHoKHSEpXf@W;(u zK_TBSc;+MCFFW?td19sE&e-CSWvv37a5_VWCqu8C8e;dA+bwE2EdQ$hiLbn0xhHCI zXkRKx#`HCE_8J1w8wJJIk`vR$d$jEc(hhTM=*%i^~79z`5d)KAc`}p2?~h`nW08N68S}%Aq2s7hvB$ z0K}Zt-WTiXFLmW}AnPwqP*3TcX`EI=%n4X!R^M$mQEMrtO1jUlqTA)3@yMYesGVqJ z=gTYDDD{2o`eB5A8@Os{LJjV=E!eFcQS|t<9w-J+yCBYv5vk=k;Tqv{K~k|)AI#+< zYKDIZ2<(^gtk#w_FqWl{)GgN_xZ#hwh(^}c5-Al#V}`{1A>xOWBrUoV!t1{S&Dt$~ zXw8niw}gwK4f7l*s^I@o;s&8DMU9bNF0xSKzBnG)AJ?ew8du1A3k%kqnCp>Yg z=aW@M-|FAj8|>@0{WI~TSlnMrMoev9>}tDG`6Tw86u!-D_38bUdW1~(*abJfmrPJrzA4JvZ8R9jhe zKi0g5mMv#wYH@lb1DSFk-VT3~ps*{9icL_Uwb!fL^f_dX$$sL9Q#~3Bx7;7^@^%AQ z`H9Ug00*P{Dc|4fyO_*+cTE)aI!IvZdKE{uzHUnY!?wEPV2?IU>2)Z=@2_@BnYcYk zA?lwr=&gHm(-Mz7rLg(f6yGl5Q-aHo4=3062~1$`1pA;LPA^5~#Q}vU#or>NQw|55 z;aWwfdfM%Fxt#1C4Az8<)GqVbspjwi!A zX0`Lq(Nq%w&wN>4q|5%C12=2y!JYj5nLq^uV4$c#-Ixn%fIo=SUGLA3w+xUsNFD`u zB@OeJvlj-YZ{zB0E$-o^OiKbJBOjj!*K%cVJ{Y>+`I0>$cumn-;cO|c%9i7-aduiP z{>zNQK4W}n_Ubb8{D$N$4Z*_ReUAmZbcP)@c;i8qczx3@1 z`5ub$2OiyrwmtoQt+vteR=&0JN6!gb z+*F97ilcJ3dSU#0I&(>3!SH;{K%1zQoQt}U8hi!ID!N-eiTp8?u)Q`WSi%(_WMV6K z&-@wnI-=8#PA9Eb5!hS4s|7n_SO-hizm}c#c>xE zLf>)0hh@H{d#UAq_)$7pdj>|)4~jNA^m*5QB3iIB4U`eVaiE322Cw}Z6!q`$#ESc#W2rPuE@?9Pb3L4b;OLtBu- z#``f-Z*Z?2+&JcQFC-IYcaD=D{$)%d-tT=KB+DaPWE?#D`mTWenuUW)2qB-=Lbk?U z#E^=ru{)yYIBw3)A5veIG{)A_6kgyIj}p5c_Wb&nkRVQYEbhwJ2d=gwGvVPWen;(f z#>L>;WJz&`mm#yXA5$``*ls|OFLpd|rrxo;n?#+7H##2{TnOFW>hJ(fy(ocC&(O|b zVeSzkLj9QUPCK?fV|bmp%sSR%Oc;Z32RjeL?W{CDa3N4uzWX>bk^LtpIol39houGT zp66!Fb;;yIqU1Ox*?o?SwXDfRWQ-*Uv2*m7ZB<`i%&33Vym?@|HeL%$q_8=OW5$FU zD~^54xeKx)XY3Sk#l9Yl>KzaP*}wF%9O8jbyG3Z@802s#_SU9Fd!ThkAAg_QzA)5F zlk@49zHF1nPSg+qZd_Vtv3Do@Uc? z84$wF5i7DBUfeoHy;NlxAWh6AOg+WL!19E z^O`Tu@o+u#9hQw}X%x#totoUIBc+*Y)Nu{V)Tirku%)N>wJXIR+}=M&gUCe;Y*Td6(_rfcomM=WH%AZ>M&bHmY%>09eqL8N&%UFIon&5x_n}-)~VG zw4oC+UBqNz-ef~Li8FaNSIjtX>VwL-&LqZ`gjVv0O zHOTp;Tw*)UjcFSG(fwcj2i#Ty`)1SAD>eebBcbDKLJ&AJGB|yRJwlJ1#i*-pg@{aHN9I(Nd7kIWkTLVje_h*s|Bm1By!pR*j^{X@ zH{TccH=q3(u4`Ruo$EZ$RaD=zu1IRXW{Cy{tPi4qRaUj%qIuQwRGuuihH&dP@k+sO^nNe>5A3<~K@^3Mb|FC_v zB8QB$XK-XpaTpX)sao7Eb1x}+f>OQjtpWNoGDoMxT~~COtf~LI56gnLpxlpKpH$Cv z-5pHsvv7Sk!~X*226_jq!RF!-z z(>HgA3{m-G64VIw1ZMXy4#P$BPPoj-lap5-Hfrg(l>PwIh+emiwTY~9sEg`;Wst?< z!Rh>gzRq1as3o4vne$pJTd-~q;t4#j)a#*AgL)q>;><^qDk<3l@=C1%yt4<(pdzN8 zziUB8x>)cEiF?E>yAYjn5Ja}qxh?&-F#d=ec0%B;rOy>0fT^CyzZUXlSiJ3F^GAVl z?J}adiK)w>aeJrjEw_gcCjMIucEi>5s)96-%v%V208xqWb&8#jV=DAe=Ob>o7l8JSTxpeV!@dzoiKM&u948h(IVNv}b1_Bi&2p)%M$aHBRJLDwRi{Gswz# z^+&+0OosCqhzW^k((g1*600Wju1>dS#H0l`yb?Li)Wo|n zJLs@4(phP8QNvCr3`h>-HDv~R8lbx(;$efr{04>&+H}FZ<8>eCZ4qwnlTPV!12LJ3 zGEe=JY!ooH7*N2^_U~ej26bs6Z}k9AenP@o=q+7DjhDo_V^%)trWwAqu<7~)1a`~U zJnpuz7+ur<@0I7;{JN%kjZ3SLUvT(nFbX+TAFX=YRjStn6zOv+E%NE8mvcIDr9Okk z{x^0PAQT6JIHBW3ju!l6Mk`{P_KhYdwNa4o_bP$GGAaGkl*$>4U8L|FVAVN_Qd6wY z4F~+u$_{*_KSQH{nhD@JWDKIr%vg0;;Oo640>jRmP61ZzM-C$^&vqrmYR-JeQZb-` zqmknLpBJoD!u4)4=n@szG7Y&MMu)fuX)mYl@8vqxt3-K_VKDQZv`ko;)jm3xeUW#d zJ5wOtymd3M)E^SvAC7|WFUeogS7 z{b#4M#~Ou~MTy{v(Y9Fvjwu;H0LV;l9)G%I=kj+@@;?%UZ0NXE(&Y9WIG42mF-S4U zrzAWi9>_&877(1XWJZ4Qw-wlR1s3P{2fPTB^m=Nyz#v-X_T-~^OS(aslhIe+NlXV{IxaO*YRGd=PR@)Aj}OZ&O%1{I@-4% zF)rY;7Pb9ut!^Il@J$^(tf|5W>yXO^+;DOM^lsr@0yUA$Z3<=$>h=fyMpLFzsmHea zLutK9pag1NkCE&Ld6pLbdCep9FJ%Lrj0L6&hKV3KKBi9h(|RD^aX^dOEXTt_aAEn0 zDUw(iwFQZ9MG7381V{lW;Qok4dIkcjf0quIEWN`SkdSmVU08x>Z{OiR@wN?Owh@j~ zol@|<4KOe^aqd;a}qpkELNx| zV6hHai>0c3CJc8FHaVt*Hhk;Vj&(_}Jk@`~+Pa?R!M+jyN|1(G?4*0qkqRAsw~duq zwHwDRtl`nop&Lxh&!)En!m?(P>kgCA6eR3L_0VbUv*)i8t6x~%*qrfbFvsLg^`DO{ znD6*Oc}|k#VA|O+7!}|>u(`FYHlXZr_Z@Th3f=0e6!9aeXuHd8bq;rhY9}TwtSwro zUc^t{t5ZLccANkAw>TY|=ZxH89~w}E z#oznc{YrBA$S-g4jXw<^OJl~5eDE-EHysvr-aDSB_mxsrn@cU{o125pw%#6D!~#zu z{S3^A&9~|?<`}tp!D{@FKn$3b{P~zo?Rj;1khB{JRq=d4X31z{18sLj+14U=u4BmN zdNnm`d&jN){#;qrH8p)E@8TgcfLceEJ>#JPeiV3MQU0sYOB%|pa|F*A$1S9d?5FF& z+~&T)-l$YxsG~rf21$aU6!<05d#v{ic)`$pv)TzrVafUzezRzL-1Q;;qdce2h=B^@K#;$v>l2rXd|QB1WAQ( zrfnQ>PSRq5?oG$kbmiRj=MP3ZLVhf5bU)0dGxOoWsV})5me!P7KjF5uA-pk?a0Vqn z)%Zo(t_GzWnY-97pzp%JP(!RID{k!K1tlhc{wq@UYCWFqx4%J#LJhaY{H1m6eP?gR zR}CUQd|8Gm8_ppwU1?>0;%+Rk!_g%`dij%M6f%f{>Vm^Xn)spY(RNU0SPwXimI2T4 z;hjItzTxUq@^-G1>t~KX*YQI5sROnxJCxVMISQCjzhugr>K+~xr z2rqF3B^1eF)|R-8zAhC>3wJp?Gy97!+EdE9_-!TaJO&9~vY1E}pc4Dxuy8L*GRNBA zY?x6)E+Qf#hH8zhXHyU|Z9MI$ouO@r_t+G|e5(QhrlymT2T9TN2rZ@pk?|slrP*N% zKtGb-lM!}5It^T*Mq0obz_{$d&HBJy9c~v=!I6n?k z1z+n-kh4YFahM^+dD_OuRV?P49HNp4k8x|H=NyojMSqf9^)@er_){PMXM~e`<7dSI z$9jrgl#y+pC!GXRnK3_q!s(P*tdt^D5w1E;|L@}<(S%C#)`cZdeeDl2Ee2ibCp+-Y z=}yNOH?055Zx{1eUIQ39Mn=NYDQR?v2d}?%a~{q-$FK)>4pHLZcOo(hd`~Z=ahT6B zq42!a#Nw=>Z8lvEpof-I#YvGJx_!&N#k_>}PgWXosz?UM-w$lGUSY_*nJ0Vl8)B8W z4`6I^48GH-YS+CI>EHx@ayhvip+Jswrz>oQd`V#oWWfUV7Kn@H&Ca{H+(c^7SWqvu zhN(hn&2!*cCvTeYS3L?k8b~;8$uRmNWM2xn46V@^bJVGIU9;AhJ+8lf3<;8Cq^Is$ z*WmYflDX~m0~SVbR3wMAQ)w#<&rp_F^$4oYT5w*1cV6bcsp(`7W^}6B*)F1onNfv= z)XXaFNLxYwapV<$SQ+C2=YL2BX!`6j>0W{>DKQVLn&-kzxTv<3K5NLLt|2c=7ODWQ= zyb7Xj$9(g1m(Ml|3+GxA`k;~piY>(O1R}6Y=9lTF#3yO#%%aW^6EC5{e>8VgY3wrQ z@Nu+@(BFvNAN0g$-OXco3e2I?!~DH9#7-av+J!Ab;tsMq6YyM{c17gGQ490AT^KGs z6l~Lx6%#&<4)YW0Ac;m08mXEA-?8sbJILPmzqX2fv}=gx{zSbmPB;=?EMi3YA8vLQDb#xoJ(*{H6AUCHDj*HZ~=oLI%}P-rWP9ojLwS0gsSE?r=Kr(p7pP zndPC+tGq8HlcinKTd<*UMyL4U5hRdE`u#0j8B3Gw_Qq1JBBw&47@`SJ+F+-@3p%Ts zw~*tC^w-UmUqREFOIQ4%(+n~s2^(PlezGNq)?n9+YW}-LiS`jw&?wr6IVgwEOhQ#9 z5+NG&6S#*+%BL9}V^YJ;rI9YTSjWDMA)N$GFYAjB^o~Gm*GlSpNncD>jD7?`7Z!|_ zO@4m!1FsE;9YnP~NYjO3*wQ?@*_=WsVrLWvAL6Q4-v`RIkE&CgrrBW9onkktVMlKY zNZy_ofvu+M#I5V{9SE|tY0NmO)4@u7oxe_lsOqx0eTM47b-awBH z5_dP(*MA?N0Js`@`wVzpA^|fzNEV8}pR9 z?p5w^=v7hnyl472p3`ygjxT{m+Ai!9aj){8%-P<+A@2Q!5HmUsn^xaj0h2=b_zuG@ zaCFwqP3Aqj4Dy4Abe@-Bl?|F+EzbA>IuCP>zmRx5ZV-G{rc(ofN=pg@0tCcfcZ~-2 zy4q$~?6KYe;WYqV1C3>5Dl!NkP{Gnh>qk2N1N<%& zMrv)s3YN~@mg$ewdIfGJ6WS<=>0lUCy@9ECOU-Q6)e3@(bi-jtF`$z8i5!-XWeghO z7l0oc<*)gxkkK5JPScABunK&HTC}i#CZOH-0Uv`D*&}0Jb8=~qDRyoXnL7FO0~b{J zg@vZ0lv$O*y0geL`B^CCAq1Pc;fd+@jY6H>;Hytnzk}5RIaY%c0rNlLeU{cbb#nQyPDeUd`Nl3Uyjh#|234 z1t`giNeWEH4XIMg0z~yyX6nizOXcCUfXliB7gCz)t8xc$JWyGp&URh3T~^0k$dml+ zYk~2XvAbhg0GPlrFcYf@Q-Gj$2o}k8bc;>FTpHPUerqEz-5ScZZ=up%vPVr5YA@JA zdS9*?VF88E*KJE$S52vETxa00?eh6z}!Wy&`P z@vJrZ*zPBreb3FEPwIBUW3MV6=h|KgU&1WQcY zKeLd+oz8+zk7`wq6CU!=1Fr*@Kw`NZjhw^VPZ4j5Bn&R1Ar?+5_{!U8rpE^vn z7{WFS`ltIVmhMo^*;79T7Gt#Uqe_3Uu!!c-^TG!#{0eZl%&sCx5ruZ6yc9Fe@4oR+ zwM*zhe>IZbSP)^)YA0&VQoQ+ST1tQzBQN}xS>w*VO#nJCs5NcSW6*QGxw*v}MExpX ziAWsL&IRv=d92kJN=(KueBR8HN{0f(b!0*(DPAH!E&KN%`J{J;lTcnpXP`I?6eY5^qh4_U|-A-A)f=0^$$12lWmEc*S$H}ui*_UJQ% z4JKm)a6BA~K@jCE?u= zhHwI$wLT8QshD}v{D(H|Pn5-Yo2qa_UBwnTlH>{pl51Wb{DT;SkGBG>SbB?{_*{=+ z)P0FeB%?McvFpe{@$lh!6|!f`8%a`Xq7|kyUKdH8UuRe$fzd-QkMv(qLY)*lfZ>t~ zaPG{x&e-+-T?Z=%G)V;3vvxe|vA-egNP;VZ=D9be@w)D}YEdmL^=SAi1qlhVqx&_( zMAimiuMYx_azPDHV0n10O31~n986uNX@l2%y^uEaR2p?x>+Qzd2QjAXC}A6}hl;+| z0I80vsOCpJn*m69Q@)V))@om?5ZxsF%=BHZQ|}GB1h5h}nh%}J>s54`hdymY3hcuV z^-d0$pU{$(NMxJ+5csIj*UOA~mrE>hB%7KNdjO;EMcl|Sx(R!s&NmOq*^PqSB`9t? z!{X=nr={yTonp-vS=KuX?@+;e2n2c{l)QZjHOGb(5K*soU|)z^oM$ug)=>mf^%!>d zBA6mgFD~7!b8O1)=E=DOf~70)s;~cTxh1{_`BndoDBHlTjHhMoOQ`s@T(<4@x1(&U zjng*Uv?&2(r@R})FLSD=K~6=IyJ?w_@OBT`Ua8R(?Y%%R08WQbQRPAWag1dxdf#;0 zpD{`U89LLO*4G=nX%F5mWv}{!ZUV3E&cK z%NFU7p8p-L@Rc7+V%K1QIQQG{gl%XK&&JS``tnxxdGA2RCCVo>v4`A6+(S>RUwMA2 z06W=bf90-v-Wi4~rgy*raI2u*(GH9NhVq59Hf*oO&&jQ4bV|!0+!PrkMUy?&YXeEgBrD?-L7P<}_UOj6V_CymTqX>F z*f{p?Nq;Vv!JP|!)#o(&U(Q_-#-Pi}+TF6;1>TP|JK#k1bA=~I-ap~Fx9NSVPaxbO)hCD?~eqEpWYQ4gxeV3_A7LYNS{Cg$2rTJK@ zFiOayYdE~6hl8h7n!r&a2|2EZnsI)zVoMQ9fYyU+vTqq7sP80L{e}+Z&e{ULm`*v6 z9(Cg^qc05GX#DU2ezssHQ|k!6iodpX;B9-o!t64!z+=1A>7c|PI8GZmqqFoG4`8{O z+AbmRQRG?-fe9U0tlAs<7dO{v{4D8c0bvRd>zv6to9SWVlMt_+r>Q8+!r_5dBOn~y zBQ}^M0PG}kL21~dI|k{wVV0lx2@h05o*}DHx*j$@)+~#E7ZyRbVH{-;e2~6QgS>WZ zy0#hfqSoKK%X+l`#@CF&tV^-UNBKnLN$ zhjQCMPc$8;DkVkj|7l|`HA%th7r*Is`k4ub~7^gdE`N11oed=?Wo{BgJ?1zD-T=DHx@Zux6^ z#$#R8kSuj0_2zAgSsV&^yT}hUMNJrv!%-S8O0=zE+F2x$#Sdq{aOzkx9szN0^_smh zqhvRbe74qgq4qJ}m47J(j>|w1>UckMa-*iZO=PE0lT7jYWdR=fJPiK;INh}RR2bhD zYcQOvR6&%%yWx#eUEBZEN|w#0O5xf@n+xe`B$mPEt~yG&GHp8I-6D3hb1$>{hD#gP z^gb_Lx&jezqcVaOcV-vm!TUx}s~HQxbIK*?_ytX#APQONZ(;Tb*#4I7h>YYlA`p3V zp!vQWJMt;T=0%b1U1+U=5h4O2N}|aF@kf?#h_HprVE=(o8V^u?F!9l zHCU^3y})(yf=ugEWd+%gImbo2bbY!=7m`C6=0eGTud_3Sg_{di_(sT3OMdn2xK;Ly zLVzJg7Vsksmp)>hJZb{bf4W~5QVTbLr(^2ajldA}4p?w_Sb_X$?p<^GP<>6?te4W& zs!)WWtrswRz6WxMeucaa4&5c2#m_0(vs;@k^O`%a5B?OuMh7DwUoXGv7oasOTDD&t zSDC-$X^3KgKL1dgAU~bMu6*zn-iz8_K^9CmE~;{n8<%o&L}=NCtGIXW`G<7-iQ6rp zsqQCx-R=#RhgYxO3Wu(iK_ZHs&`quVwe@@%AOo&(X&2PGeDT;2u>mB>DM~ijJIt>@ z%`lL!n%Z3j@yb3kFZz#5q+Cl0A8ka=hDFty ze1qJb^lE&dx++>u=%-)I+40QHxGH+yeV6o66M|ebMy-v!U|!nh@ETM;OXt-C zD05^M-n`+|oh&CjrWyK55^0T%+>0qI)JHZi7eW@8{v8h4KuC+ z5%C19#lhX9cfFCI>tH0g)C~VW%G!qTNIvx9En9`*FjTv0 z!(X6S{$k=ah{VpKY5+3^ zOw4DLJbxRhn)#QEZmA^;BAgg@RfRRO&pUgYI+-~cN%zaCclZmcmZLejeU#o+YU4!%A-;^iv zzi=P=;-lu#0_XIB*BK5Fywjy+?9?%yutYdbU+j z0Z!?P&GExOHp`6QkzWDl8?OlK;O5FfvO)S`#=LlaA-|0poh|(@*1y^Gntu0Q{ZFC< zAe652E&lTrTbt%Bs?>`)B)VDXc=d{MKu&Z7(sJ07`Xf-KCYL8~6~TWsnz9EM}fxG5mHF^C$P(iw~S?^U)pn2#gy0J-H& z_tT;CE4j(4H+jv^B83?(q>TXC51f72rU&*G^VaZ%a&Y zc=pv&&Q9fyc{RBzKi!e#pIOV7jX8-Lm-u$SA{7@KK-!r{PY zN3hibbM;P=nKF;wm&b!ZI!IaUhDOS6@Kf0zlo_ubqvNsJ))(*-aA+t_g25EXvlA*a zt^3dyX!(qk%qNzhLC(#`GI_{jMJhvUX0vfz4_Mxr-+T;{Qi0-cm-j9yUQheD4Ohad zqE1c%iyowxAGe4=16_)1g7QEuU^*`VyKx|2N@CRSsIjD#Chm&aN)vlN16 z`s}*C_a1Dg$#k+D8?r>dX9lN?rI>3v}l)R&6ZIkYcyKgET)W+^@_xzI15 zY5mm0vYo?NQSQY+K=Z}O0uk3&nXf{NSuWbT5W_juLh?;yV4mQ)>y*H6<=wvpHCCP1 zvF?d6;QSl!$Qscji= zW#YAu3;byPTxdJ&eAAr3e!=N6wW>c;Kio?D4U;m5^j5V)_j^2ya14yLaFKiR zI{o(zv4rPUSHc&x>17N?)1?*CRYPErt4CfH-v>Z9ZDcQfiLF#a+Fn+UDhkhJI4*

~%_x+})Ppv8>0I3fNa_#q%u#iX;@jwb(JxF=mwd4sqSR=IhmMb~O%RogAeBbKP+_#X|vG4z`XFS@?x>kLr<}-p(B$HaKPc76C+f13m9c z;0GMlk)ZNC0jBy{TQUMZ1=@hK+Q%;*N&*Ve@B5jQptSt!qFOpLMlEy00nx2jm(-BE zX4J0aGkWey`ci(+!q%)#8=G9GmddAAHLg{qrovg?)M!|NdH_6zKZ4ceZa|Xi1!fcTLW%UH{C?V@e<$zc)Lyl5Q(F;G&z}%qxvb&tgB$VENoYYWqC? zhb#NLai3#OBE(f+>(mJ85}dkg0zh=Efb|^(3nh3HsS(|$CO7qz3SOA?njHF7{oJ9& z(M9e$1M8V87UpQi5c}y^ZE6o*w|3X?-cjtFE9r zw&=pzzya=o;dKW;`i{>UA8j=Z&!LeR{4bl_BcT5(hhiA4N{LDU@-=r^fA$=D0R{L| zmyP0IPuH37U`tK-pML^LRu0z5#o<(t}e4=(M%#z*ucz;-n|D#ioyq% zNP%ulW_(B1Oz@A&(~{o=1n+fDl$QAeM-h&0)X6COgSmYf*3jt(2z9CKC!;Pt2z5y~ z40Dz22Ku0CGRATEqcK|p4|Z_T!6?BDV;s&W{86C!N%;K)jr@MKfgU)JI|yWtYBY|N z{QERyK3Ve3DCYmoCj(NWCSH-u$DX1jgR~f7fNKu_OB4Ga?5kWBurKVAfZ5O3LC3On zxAtY^uKkgg-bYYukEasglb9nn!K|5Np~|=Sv+utIFy_nm#r_uo%&f~-_wO6U^4D7{ zqv`{7z}vpg$^rPn0kY{)F2x%XdQp!7437MN5WBL#0*jMZQIRK`NrD}|ujdtL^%-Ja zqSJf9vGIrRSxGwl)>3}i9!4~t!~fwJ#!&p}KQn!P*zMkmSY>#d?k7ISk5g809% zuuclwJ|5D+5SYOKxb+tx`aAT)lb~H8ORA{hJ%Pg!hWZWt7bp^#yLb@$3 z{N^{nKxaPzs}gzY4I;cLQ2~7A&fC>Pk+cUf6G~lIX~n#Op$sFCCFHx@1r<;Dy7vaPo1oB%sn7`EuTOv{D zC1m+c=f5+D88-~|NAg~2Kc5i#m=9<=>s=UJ^8w<8E;P2wfiWd-T?NB1yuesvH?jjQ zVTG>j{w?55lBY7mrE}{OZ__RyYkpNJL|?*S-n`vd>ai||BGUqQVhxS?y(o8MpwvyF z8CvUy=F67K=r8BNJ+Oa*T1=h*eG=W%Wt5%o!xr%_nwwj3YqI~OIXIm=C63NT? znX_wc_!hgDLB5~N#Dboy&M1MnczW4rY5h`>VkjnRgf^;hB+L>_Uwjb!@?uLGm?Q4=H1Fv#=%@4rL3?X9Wh)2Bqd z4n^(e=m@mv@Un^#jB1eV*jgNvIv~uB^Sm^%u+O>*4Z^a zoMsR(l;yGgJ2?36$T|6g%$Il=#Le$~(5s6c+$wQVm^M=6{yq&DJNvKid(Z8qrm8&1 zcgvm-VjRAB@oHHMbxTUVi4(DZa!Y`oNTje_oh9)oG&cX!9bsNyz)I zC>N}dts#%q&u_X)BLn7N#+u4~=WJUTTNq#mV=!#&>N%aSb#;E+whm z4HTc?j1}$SpAI`YIZz~YDZ*)LRerL&w2!}iv3Dbi&sz$Z)$zo@+1am8biaplU3hUj zM-iIM_h&bpT8i|JKB^L%I3DX- zj%c?{*o`ht4R#OLNOoV`g)Fc$QzEwCu9RL1l{YO7pgoTh zAAi-Aqvu_qGa)llJd9V3Ud}THVt}^s%{WWimnu;zyB$$jU0oanw~1XVtlpiYHvNPKA2H4m*;?}Yf9M|lJ7HXZ43bRB%l#f}{p zS~@%K^DNrlIVoo8e696p!tPOH)}~c~&}VFCnm%yW9Z;lw^H}O@760pRx2RkRR5Z+& zbVqzlJs4go+sU;`{X8#bg2&fwzCSOURp7Cl8MU6U`&z?rb0aT~K*)O_j{RakF`{6{ zJnrO2Ahz=HIrVtsgnUlR8WzBc0V+8&xg4J~b`qr)!j4X6Vh&irUM2IrPd&acBNd5ptK4 zZ$%r@`VKs2KGe|6@63$7nXIQ9BV@_5oM3pZR&L3RUJVA*QrwWQt zoTM{%p~+%Gtf<@NOW|_$FaNToirD{@erWg=jxSgcENo|B`juY4p-j!Oo~O?JhqgOi zzXvf~JUer9DcUl#@)K=PM$}^%_p5Sz@eOCRNC%5>G(%SZF|LU;Lut83&cdw$bAwxM z9Y+)5sHiVmaNwNAaZSZ^3e6p&vcsv$BhJ|F#jzo&`N&&#cOKkQXBn(cx-pb!e;%K} zVq!jW**S=y-kO+T&;fObZ@mDB_TZ)nU%twFtEYJmv*M!;tG)wswKf|jCs5G$K$67-}iYq^@-Ph-2^Qtw-wC~?Lwl&x(8?8U41x+R-RGMSYbGF!!8!vU+-pW^#yYaP)mLhdcP06T;HW8D=4#vq;g-%c4~*c=aFmV(Cco~E^5G6-42p1W%&hehQ^&8D0{3|RaDet0)o=W zw@$#5@L1OHAl4*{ffpB}Cd}u*rS$cOF{J8cT`ODC%09Xz@Qskwb~r0B>alD?Rt<}~ zpbhOS>xpCq)~?%E@7Qm zK6}aix9p0k08Ui>phQEeNu^FDAOQ)(!2BI!<2B-|ZfF%s8pet>HrNc2eWQdegN_y7}wvFD#PaN&MusVx-0e zuz5-GcLuIW>wq7n;Yg*yl#XHLSSUC)?E=5$*Uu)(V_d z)N*Rvsl~XlkC%xh{DqnIY0E3@^O1{U^9AN(F(LHSJ}p=1nA}bIZhDmv}r95Ioy{`1N z@7?B|h09a>vPy0x_=fz6tKGc{gzp#Llu_F%%?V7@RWo?xGqg-NJhT^`=z4gmZDP{pfAIg<)KgnEl^ZT8a*Ww68TjCMl;QO%A3+zARFZ4- z_ju{6auso}MEYE+k{-+N2eFqT_j6~FNr9J`ms#q=BZX`Q!XX85&ua>gb00Gl6Pj|h z4(cEn-Z;+1>lf-Q^PqM`-Zq{^icx-z|D>f8Yr*`Cq^OiS|L5kCbnVh!7Pi7eI7{_F z`T4up(3E{UF}V_8I(emp$I>EQJ;Hb-31Kx3*&~{1baW5Ywp;rx$M-^Krd;Rn=Xa0C=X?$r zw-8*!xGK`)^~9(jwfr)^zEyj1?c_$hAvLP)FrFdt{rli^DkX%KqlwSXdw&yH)fx|H zwM0?6wi-I#_&#wLcWx^?EUNOOuX}2T%z8oZf`gSc+bfOzH>I#6-KL5zL2P=n5p%N2pKM|X45)I{YdQShRVp>1Q~M|%-8gVidJ$GrF4h#jPJ+`Q-&}|GqkDD+(cAcDH`Z}Er!tp=Drr}1-H5VoNw@R%FlDm;kcYN z?bPU^Jw1R9!3QasxH^rRAHg6buCnQI zVS%5~Bn=;=U!k;>fC45G_Z#4P97xR6;my05rj3Sfu7v!H=K$8KY3W
+


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

+

# 分支实现 diff --git a/notes/Java 并发.md b/notes/Java 并发.md index f4a45e3c..31eb48c9 100644 --- a/notes/Java 并发.md +++ b/notes/Java 并发.md @@ -229,7 +229,6 @@ main() 属于非守护线程。 public static void main(String[] args) { Thread thread = new Thread(new MyRunnable()); thread.setDaemon(true); - thread.start(); } ``` diff --git a/notes/Socket.md b/notes/Socket.md index 9da4a78f..1ef85b15 100644 --- a/notes/Socket.md +++ b/notes/Socket.md @@ -103,11 +103,13 @@ select/poll/epoll 都是 I/O 多路复用的具体实现,select 出现的最 int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); ``` -有三种类型的描述符类型:readset、writeset、exceptset,分别对应读、写、异常条件的描述符集合。fd_set 使用数组实现,数组大小使用 FD_SETSIZE 定义。 +select 允许应用程序监视一组文件描述符,等待一个或者多个描述符成为就绪状态,从而完成 I/O 操作。 -timeout 为超时参数,调用 select 会一直阻塞直到有描述符的事件到达或者等待的时间超过 timeout。 +- fd_set 使用数组实现,数组大小使用 FD_SETSIZE 定义,所以只能监听少于 FD_SETSIZE 数量的描述符。有三种类型的描述符类型:readset、writeset、exceptset,分别对应读、写、异常条件的描述符集合。 -成功调用返回结果大于 0,出错返回结果为 -1,超时返回结果为 0。 +- timeout 为超时参数,调用 select 会一直阻塞直到有描述符的事件到达或者等待的时间超过 timeout。 + +- 成功调用返回结果大于 0,出错返回结果为 -1,超时返回结果为 0。 ```c fd_set fd_in, fd_out; @@ -154,7 +156,18 @@ else int poll(struct pollfd *fds, unsigned int nfds, int timeout); ``` -pollfd 使用链表实现。 +poll 的功能与 select 类似,也是等待一组描述符中的一个成为就绪状态。 + +poll 中的描述符是 pollfd 类型的数组,pollfd 的定义如下: + +```c +struct pollfd { + int fd; /* file descriptor */ + short events; /* requested events */ + short revents; /* returned events */ + }; +``` + ```c // The structure for two events @@ -195,7 +208,7 @@ else select 和 poll 的功能基本相同,不过在一些实现细节上有所不同。 - select 会修改描述符,而 poll 不会; -- select 的描述符类型使用数组实现,FD_SETSIZE 大小默认为 1024,因此默认只能监听 1024 个描述符。如果要监听更多描述符的话,需要修改 FD_SETSIZE 之后重新编译;而 poll 的描述符类型使用链表实现,没有描述符数量的限制; +- select 的描述符类型使用数组实现,FD_SETSIZE 大小默认为 1024,因此默认只能监听 1024 个描述符。如果要监听更多描述符的话,需要修改 FD_SETSIZE 之后重新编译;而 poll 没有描述符数量的限制; - poll 提供了更多的事件类型,并且对描述符的重复利用上比 select 高。 - 如果一个线程对某个描述符调用了 select 或者 poll,另一个线程关闭了该描述符,会导致调用结果不确定。 @@ -315,6 +328,8 @@ poll 没有最大描述符数量的限制,如果平台支持并且对实时性 # 参考资料 - Stevens W R, Fenner B, Rudoff A M. UNIX network programming[M]. Addison-Wesley Professional, 2004. +- http://man7.org/linux/man-pages/man2/select.2.html +- http://man7.org/linux/man-pages/man2/poll.2.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) diff --git a/notes/pics/72ee7e9a-194d-42e9-b4d7-29c23417ca18.png b/notes/pics/72ee7e9a-194d-42e9-b4d7-29c23417ca18.png new file mode 100644 index 0000000000000000000000000000000000000000..2ad89c0ada3fd2104721ad622cb79b31e730e8ac GIT binary patch literal 17923 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 B@}K|! literal 0 HcmV?d00001 diff --git a/notes/pics/a4a0a6e6-386b-4bfa-b899-ec33d3310f3e.png b/notes/pics/a4a0a6e6-386b-4bfa-b899-ec33d3310f3e.png new file mode 100644 index 0000000000000000000000000000000000000000..7866d799b64594c45e4a71e254f01f843b9745ea GIT binary patch literal 34950 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