锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
棣栧厛澹版槑錛氭湰浜烘病鏈夎В鍐蟲帀榪欎釜闂銆?/p>
鐩告瘮絎竴閬?a href="http://www.shnenglu.com/Fox/archive/2008/04/17/control_cpu_using_curve.html" target=_blank>璁〤PU鍗犵敤鐜囨洸綰垮惉浣犳寚鎸?/a>瀵筗indows緋葷粺涓瑿PU鍗犳湁鐜囨蹇電殑鑰冨療鍜屽API鐨勪嬌鐢紝浠ュ強(qiáng)絎簩閬?a href="http://www.shnenglu.com/Fox/archive/2008/04/18/chinese_chess_one_param.html" target=_blank>涓浗璞℃灝嗗竻闂瀵規(guī)娊璞″緩妯$殑鑰冨療銆?a target=_blank>榪欓亾棰樼洰鎵嶇畻鏄竴閬撶畻娉曢鍚э紵涔嬪墠閭d袱閬撳挨鍏舵槸涓浗璞℃灝嗗竻闂鎬繪湁鐐硅剳絳嬫ヨ漿寮殑鍛抽亾銆?/p>
棰樼洰錛?font color=#800000>鏄熸湡浜旂殑鏅氫笂錛屼竴甯悓浜嬪湪甯屾牸鐜涘ぇ鍘﹂檮榪戠殑“紜洏閰掑惂”澶氬枬浜嗗嚑鏉傜▼搴忓憳澶氬枬浜嗗嚑鏉箣鍚庤皥浠涔堝憿錛熻嚜鐒舵槸綆楁硶闂銆傛湁涓悓浜嬭錛?/font>
“鎴戜互鍓嶅湪槨愰鎵撳伐錛岄【瀹㈢粡甯哥偣闈炲父澶氱殑鐑欓ゼ銆傚簵閲岀殑楗煎ぇ灝忎笉涓錛屾垜涔?fàn)鎯湪鍒拌均N【瀹㈤キ妗屽墠錛屾妸涓鎽為ゼ鎸夌収澶у皬嬈″簭鎽嗗ソ鈥斺斿皬鐨勫湪涓婇潰錛屽ぇ鐨勫湪涓嬮潰銆傜敱浜庢垜涓鍙墜鎵樼潃鐩樺瓙錛屽彧濂界敤鍙︿竴鍙墜錛屼竴嬈℃姄浣忔渶涓婇潰鐨勫嚑鍧楅ゼ錛屾妸瀹冧滑涓婁笅棰犲掍釜涓効錛屽弽澶嶅嚑嬈′箣鍚庯紝榪欐憺鐑欓ゼ灝辨帓濂藉簭浜嗐?/font>
鎴戝悗鏉ユ兂錛岃繖瀹為檯涓婃槸涓湁瓚g殑鎺掑簭闂錛氬亣璁炬湁n鍧楀ぇ灝忎笉涓鐨勭儥楗鹼紝閭f渶灝戣緲誨嚑嬈★紝鎵嶈兘杈懼埌鏈鍚庡ぇ灝忔湁搴忕殑緇撴灉鍛紵
浣犺兘鍚﹀啓鍑轟竴涓▼搴忥紝瀵逛簬n鍧楀ぇ灝忎笉涓鐨勭儥楗鹼紝杈撳嚭鏈浼樺寲鐨勭炕楗艱繃紼嬪憿錛?/font> 鎺掑簭闂鏄暟鎹粨鏋勫拰綆楁硶涓瘮杈冮噸瑕佺殑涓涓簡錛屼箣鍓嶅湪涓綃囪鍚屼簨鎴愪負(fù)鏍囬鍏氱殑鏂囩珷涓洜涓烘彁鍒版帓搴忎腑鍏充簬錛堥潪錛夌ǔ瀹氭帓搴忕殑姒傚康榪樿寰堝TX閯欒浜嗕竴鐣紝鐢氳嚦寮曟潵浜鴻韓鏀誨嚮錛岀幇鍦ㄦ兂鏉ラ兘鏈変簺鍚庢曘?/p>
鍞愭湞紱呭畻澶у笀闈掑師琛屾?/a>鏇捐錛?font color=#800000>鍙傜涔嬪垵錛岀湅灞辨槸灞憋紝鐪嬫按鏄按錛涚鏈夋?zhèn)熸椨灱岀湅灞变笉鏄北锛岀湅姘翠笉鏄斑_(dá)紱紱呬腑褰繪偀錛岀湅灞變粛鐒跺北錛岀湅姘翠粛鐒舵槸姘?/strong>銆?/p>
淇楋細(xì)鏃ワ紝鎵偅涔堝錛屼粈涔堟剰鎬濓紵
甯堬細(xì)鍓嶈秼涓嶆槸鍓嶈秼錛屽悗緇т笉鏄悗緇с?
淇楋細(xì)鏃ワ紝鍓嶈秼涓嶆槸鍓嶈秼錛岄毦閬撴槸鍚庣戶鍚楋紵
甯堬細(xì)鐒朵篃銆?
Fox錛歄, my God錛佹暣鐐瑰疄闄呯殑鍚э紒緲昏漿涓嬈′箣鍚庯紝鍓嶈秼瑙嗕負(fù)鍚庣戶錛屽悗緇ц涓哄墠瓚嬶紝絎鏁版緲昏漿鐨勫墠瓚嬫槸鍚庣戶錛岀鍋舵暟嬈$炕杞殑鍚庣戶鏄墠瓚嬨?/strong>
鏁翠釜閾捐〃鐨勫艦鎬佸涓嬶細(xì) H:Head, F:First, G:F's next, B:C's prior, C:Change, D, C's next, L:Last. H<==>F<==>G<=...=>B<==>C<==>D<=...=>L F涓嶤浜ゆ崲鐨勬搷浣滃涓嬶紙Word銆丳S鐢誨浘錛夛紝n琛ㄧずnext錛宲琛ㄧずprior錛?/p>
榪欓噷鍙渶瑕佷慨鏀?font color=#800000>F銆丏鑺傜偣鐨刾rior錛孒銆丆鑺傜偣鐨刵ext錛屽叾浠栬妭鐐逛笉鍙樸?/p>
鍚庨潰鎯充簡涓涓嬶紝榪欑鏂瑰紡寰堥毦鍦ㄤ笉娣誨姞flag鎴栬呭鎹銆乸鐨勬儏鍐典笅姝e父鎿嶄綔錛屾病鏈夋壘鍒板ソ鐨勬柟娉?span style="FONT-FAMILY: wingdings">L錛?font color=#800000>濡傛灉浣犳湁濂界殑鏂規(guī)硶涓嶅Θ鍛婅瘔鎴?/strong>銆?/p>
鏈鍚庡彧濂戒綔緗紝浣曡嫤鍛紵鐩存帴浣跨敤鏁扮粍灝卞畬浜嗗槢J錛佹棦鐒舵槸鏁扮粍錛岄櫎浜嗙炕杞Щ鍔ㄩ夯鐑?chǔ)涓鐐癸紝鐞嗚В鍜屾搷浣滆繕鏄緢瀹規(guī)槗鐨勩?/p>
鏋滅劧涓嶆槸鎼炴暟瀛︺佺畻娉曞嚭韜殑錛屼竴涓婃潵鑰冭檻鐨勫氨鏄浣曞瓨鍌╚.^''''錛岃屼笉鏄畻娉曟湰韜?/p>
鏇村彲絎戠殑鏄紝鎵簡鍗婂ぉ錛屾渶鍚庡眳鐒惰繕鏄敤鏁扮粍錛?/p>
5) 綆楁硶鍒嗘瀽鈽呪槄鈽呪槄鈽咃細(xì) 鍐掓場鎺掑簭鎬濇兂錛?/font> 鏈鍏抽敭鐨勬槸瑕佹娊璞″嚭闅忔満鏁板垪鐗瑰緛錛堝惈褰撳墠鍜岀Щ鍔ㄥ悗鏁板垪鐗瑰緛鐨勬娊璞★級錛屽茍灝介噺浣挎瘡涓嬈$炕杞?strong>鏈夋晥 甯堬細(xì)瑕佷嬌澶уご鍦ㄥ悗錛屽簲浣垮ぇ澶村湪鍚庛?/p>
淇楋細(xì)鏃ワ紝榪欐槸浠涔堢嫍灞侀昏緫錛?/p>
甯堬細(xì)鍥犳灉銆傚湪鍓嶆棦鏄湪鍚庛?/p>
淇楋細(xì)USA, CNN錛堟搷浣犲錛夈?/p>
甯堬細(xì)緲昏漿銆傛棦涓嶅湪鍓嶏紝涔熶笉鍦ㄥ悗錛屼嬌涔嬪湪鍓嶏紝浣夸箣鍦ㄥ悗銆?/p>
淇楋細(xì)鏃ワ紝浠涔堜笢瑗匡紵鏃笉鍦ㄥ墠錛屼篃涓嶅湪鍚庯紝涓嶅墠涓嶅悗錛岄毦閬撳湪涓棿鍟婏紵 甯堬細(xì)鐒朵篃銆?/p>
Fox錛歄, my God錛佹暣鐐瑰疄闄呯殑鍚э紒鏁翠釜榪囩▼鍒嗕負(fù)n杞紝鍦ㄧi(i=0, 1, ..., n-1)杞細(xì) a. 鎵懼埌澶уごn-i錛屾槸鍚︽湁搴忥紵鏄紝杞琯錛?/p>
b. 鏄惁澶уご鍦ㄥ悗錛熸槸錛岃漿f錛?/p>
c. 鏄惁澶уご鍦ㄥ墠錛熸槸錛岃漿e錛?/p>
d. 灝嗛槦澶達(dá)紙絎竴涓厓绱狅級涓庡ぇ澶?strong>n-i瀵硅皟錛堝埆蹇樹簡鏄炕杞紝涓棿鍏冪礌涔熷彉搴忎簡錛夛紝++times錛?/p>
e. 灝嗛槦澶?strong>n-i涓庣n-i涓厓绱犲璋冿紝++times錛?/p>
f. ++i錛岃漿a錛?/p>
g. 杈撳嚭搴忓垪錛?, 1, ..., n錛夊拰緲昏漿嬈℃暟times錛汷VER:D銆?/p>
蹇熸帓搴忔濇兂錛?/font> 鍦ㄦ渶寮濮嬬殑鏃跺欙紝鎴戝氨鎯沖埌浣跨敤蹇熸帓搴忕殑鎬濇兂錛屽厛浣挎暣涓暟鍒楀眬閮ㄦ湁搴忥紝鏈鍚庤皟鏁翠嬌鍏ㄩ儴鏈夊簭銆?strong>鎮(zhèn)插搥鐨勬槸錛屽湪鎴戣冭檻 4 3 1 2榪欎釜鏁板垪鐨勬椂鍊欙紝鎴戞柇瀹氳繕瑕侀氳繃涓婇潰鐨勬柟寮忛噸鏂板儚鍐掓場鎺掑簭涓鏍烽噸鏂版潵榪囷紝绔嬪嵆鏀懼純鎯蟲硶錛屼簬鏄粰浜嗕笂闈㈢殑鎬濊礬錛岃屼笖鍧氬畾鐨勮涓鴻繖涓柟娉曞凡緇忓緢濂?/font>銆傜粨鏋滐紝涓嬪崍GR鍛婅瘔鎴戜粬鐨勫弽渚嬶細(xì)4 3 1 2 --> 2 1 3 4|--> 1 2| 3 4錛?#8220;|”琛ㄧず浠庤澶勭炕杞?/p>
鎴戝繀欏繪壙璁わ紝榪欐墠鏄ソ鐨勬柟娉曪紝鎴戣繃鍒嗘嫎娉ヤ簬涓嶅幓鏀瑰姩宸茬粡鏈夊簭鐨勯儴鍒嗐傜劧鑰岋紝榪欏浼欏彧鐭ラ亾鍙嶉┏鎴戯紝鍗存棤娉曠粰鍑虹畻娉曘?/p>
鎴戝彧濂借嚜宸遍噸鏂拌冭檻灞閮ㄦ湁搴忎箣鍚庣殑闂銆?/p>
鍗佸垎閽熷悗錛屾垜鏈変簡濡備笅鐨勭瓟妗堬紙鐩墠鎴戣兘鎯沖埌鐨勬渶浣崇瓟妗?/font>錛夛紝浣嗕笉寰椾笉鎵胯錛?strong>琛ㄨ堪綆楁硶姣旂粰鍑轟竴縐嶆儏鍐靛搴旂殑瑙h楹葷儲(chǔ)鐨勫鐨勫鐨勫錛屽亣瀹欰銆丅婊¤凍A==B-1錛屽嵆A銆丅涓虹浉閭繪暟鍒楋紙涓虹畝鍗曡錛屽厓绱犲拰鏁板垪緇熺О鏁板垪錛夈傚垯A銆丅鐨勭粍鍚堢被鍨嬫湁8縐嶏細(xì)B(O)A(O)銆丅(C)A(O)銆丅(O)A(C)銆丅(C)A(C)銆丄(C)B(O)銆丄(O)B(O)銆丄(C)B(C)銆丄(O)B(C)錛孫琛ㄧず姝e悜錛坥bverse錛塁琛ㄧず閫嗗悜錛坮everse錛夛紝浠? 2 3 4涓轟緥錛?/p>
瀵瑰簲鎿嶄綔瑙勫垯濡備笅錛?/p>
b. 0x0001: B(C)A(O) --> A(C)B(O)錛?2 c. 0x0101: B(O)A(C) --> B(C)A(C)錛? d. 0x0000: B(C)A(C)錛?strong>濡傛灉褰撳墠鍙墿A銆丅涓や釜瀛愬垪錛屽垯緲昏漿涓嬈℃垚A(O)B(O)1 2 3 4涓烘渶緇堢粨鏋?/font>錛屽惁鍒欙紝璁や負(fù)B(C)A(C)鍙互浣滀負(fù)涓涓嗗簭鏈夊簭鏁板垪鑰冭檻錛屾殏鏃舵棤闇緲昏漿錛?/p>
f. 0x1110: A(O)B(C) --> B(O)A(C)錛?nbsp; 2 g. 0x1011: A(C)B(O) --> A(O)B(O)錛? h. 0x1111: A(O)B(O)錛欰銆丅鍙互浣滀負(fù)涓涓湁搴忔暟鍒楄冭檻錛?strong>濡傛灉褰撳墠鍙湁A銆丅涓や釜瀛愬垪錛屽垯姝e簭搴忓垪A(O)B(O)1 2 3 4涓烘渶緇堢粨鏋?/font>銆?/p>
涓婇潰瑙勫垯鐨勫埗瀹氬叾瀹炴槸鍙嶅悜瀵煎嚭鐨勶紝閬靛驚鐨勫師鍒欐槸錛屾搴忔湁搴忕殑A(O)B(O)鍜岄嗗簭鏈夊簭鐨?strong>B(C)A(C)鍙互鐪嬩綔涓涓簭鍒楋紝A(C)B(O)銆丅(O)A(C)鍙竴姝ヨ揪鍒幫紝B(C)A(O)銆丄(O)B(C)鍙袱姝ヨ揪鍒幫紝B(O)A(O)銆丄(C)B(C)鍙笁姝ヨ揪鍒般傚嵆瀵逛簬4涓厓绱狅紝鏈鍧忕殑鐨凙(C)B(C)闇瑕?姝?/strong>錛堝搴斾簬涓婇潰鐨?font color=#800000>鍐掓場娉曞嵈鍙渶瑕?姝?/font>L錛夈傝屼笖褰撳厓绱犳瘮杈冨鐨勬椂鍊欙紝璁頒綇1銆?涓湁搴忓瓙鍒楁槸鍙鐨勶紝浣嗗浜庡畬鍏ㄦ棤搴忕殑鏁板垪錛屽垎鏋愬嚭鎵鏈夋湁搴忓瓙鍒楋紝鏃笉鐜板疄錛屼篃鏃犲繀瑕併?/p>
淇敼瑙勫垯濡備笅錛?font color=#800000>褰?strong>闃熷ご鏃犲簭 鐢辨鍙錛岃繖綆楁硶榪樿鏀硅繘錛?/p>
a. 鍒ゆ柇Array[0]鏄惁姝e簭榪炵畫錛堣繛緇釜鏁?strong>nNum1錛夛紝濡傛灉nNum1==n錛岃漿i錛屽鏋?strong>nNum1!=1錛岃漿c錛?/p>
b. 鍒ゆ柇Array[0]鏄惁閫嗗簭榪炵畫錛堣繛緇釜鏁?strong>nNum1錛夛紝濡傛灉nNum1==n錛岀炕杞?strong>Array錛岃漿f錛?/p>
c. 浠庝笅鏍?strong>nNum1寮濮嬫煡鎵?strong>Array[0]+1錛?em>bObserve = true錛夊拰Array[0]-1錛?em>bObserve = false錛夌殑涓嬫爣nStart2錛屽鏋?strong>nNum1==nStart2錛?strong>bOrder1==true錛岃漿e錛屽鏋?strong>nNum1!=1錛岀疆nEnd2=nStart2錛?/p>
d. 鍒ゆ柇( bObserve == true&&Array[nStart2]+1==Array[nStart2+1] ) || ( bObserve == false&&Array[nStart2]==Array[nStart2+1]+1 )錛宼rue鍒欑疆nEnd2=nStart2錛宖alse鍒欑疆nEnd2=nStart2+1錛?/p>
e. 緲昏漿Array[0] to Array[nEnd2]錛岃漿a錛?/p>
f. 杈撳嚭Array鍙?strong>times銆?/p>
榪欐牱鏉ョ湅錛屾敼榪涘悗鐨勭畻娉曠珶綆鍗?/strong>浜嗚澶氾紒 涓嶅垢鐨勬槸錛氭寜涓婇潰緇欏嚭鐨勭畻娉曠炕杞悎騫? 3 5 6 4 8 7 9 2 0錛?/p>
1 3 5 6 4 8 7 9| 2| 0 2 9 7 8 4 6 5| 3| 1 0 3 5 6| 4| 8 7 9 2 1 0 4 6| 5| 3 8 7 9 2 1 0 5 6| 4 3 8 7 9 2 1 0 6 5 4 3 8| 7| 9 2 1 0 7 8 3 4 5| 6| 9 2 1 0 榪涘叆姝誨驚鐜簡…… 寰堟槑鏄懼簲璇ユ槸涓嬮潰榪欎釜鏍峰瓙錛?/p>
1 3 5 6 4 8 7 9 2| 0 9 8 7 4 6 5| 3 1 2 0 5 6 4| 7 8 9 3 1 2 0 6 5 4 7| 8 9 3 1 2 0 4 5 6 7 8 9 3| 1 2 0 3 4 5 6 7 8 9 1 2| 0 1 9 8 7 6 5 4 3 2| 0 2 3 4 5 6 7 8 9 1| 0 9 8 7 6 5 4 3 2 1 0| 0 1 2 3 4 5 6 7 8 9 鎵ц9嬈$炕杞傜畻娉曞浣曞緱鍒板憿錛?/p>
a. 紜畾鏈灝忔棤搴忓畬鏁村瓙闆?strong>Sn錛?strong>Sn涓惈n>1涓繛緇暟錛夛紱 b. 灝?strong>Sn鏈鍓嶉潰鐨勬湁搴忓瓙闆?strong>So錛?strong>o>1錛夊姞浠ヨ冭檻錛屼竴涓瓙闆嗭紵涓や釜瀛愰泦錛?/p>
______________________________________________________________________________ O, my God! 榪欎釜闂錛屼粠鍓嶅ぉ鏅氫笂鍒扮幇鍦紝鎬濊冦佸垎鏋愩佹娊璞′簡鑷沖皯鏈?5涓皬鏃朵互涓婁簡錛?/p>
a. Apr.18th-19th: 23:00 - 01:30 b. Apr.19th: 11:00 - 13:00 c. Apr.19th-20th: 22:00 - 05:30 d. Apr.20th: 11:00 - 15:00 緇撴灉鏄紝鍒扮幇鍦ㄦ棤娉曠粰鍑轟竴涓渶浼樼殑緲昏漿綆楁硶銆備竴涓懆鏈兘鑺卞湪榪欎笂闈簡錛?strong>鍑嗗鏀懼純L銆?/p>
LP鍌潃鎴戣鎴戝洖瀛︽牎錛屾槸璇ュ洖鍘諱簡錛?/p>
John von Neumann璇達(dá)細(xì)Any one who considers arithmetical methods of producing random digits is , of course, in a state of sin. 鎵浠ワ紝鍦ㄨ璁虹畻娉曞疄鐜伴殢鏈烘暟鐨勬椂鍊欙紝鎬繪槸璇粹?font color="#800000">浼殢鏈烘暟 鐜板湪錛屽簲鐢ㄦ渶騫跨殑闅忔満鏁扮敓鎴愮畻娉曟槸鐢?a target="_blank">Derrick Henry Lehmer
B(O)A(O)錛? 4 1 2<2>銆?/font>B(C)A(O)錛? 3 1 2<4>銆?/font>B(O)A(C)錛? 4 2 1<5>銆丅(C)A(C)錛? 3 2 1<7>錛?/p>
A(C)B(C)錛? 1 4 3<1>銆?/font>A(O)B(C)錛? 2 4 3<3>銆?/font>A(C)B(O)錛? 1 3 4<6>銆丄(O)B(O)錛? 2 3 4<8>銆?/font>a. 0x0101: B(O)A(O) --> B(C)A(O)錛?3e. 0x1010: A(C)B(C) --> A(O)B(C)錛?3
聽聽聽聽聽聽聽聽聽聽聽聽聽 Xn+1 = ( aXn + c ) mod m,聽 n>=0.
鍦?a href="/Fox/archive/2008/04/03/mmorpg_security_prng.html" target="_blank">涓婁竴綃囦吉闅忔満鏁扮殑璁鴻堪涓紝騫舵病鏈夌粰鍑篨0, a, c, m鐨勫彇鍊艱鍒欙紝鍙槸緇欏嚭浜?a target="_blank">ANSI C鍜?a target="_blank">Microsoft Visual C++鐨勫疄鐜般?/p>
鍦ㄨ繖鍎挎垜浠彲浠ヨ嚜宸卞厛鎬濊冧竴涓嬶紝鎴戜滑鏈熸湜浠庝笂寮忎腑寰楀埌鐨勯殢鏈烘暟搴旇婊¤凍錛?/p>
1) 涓婂紡鐨勮緭鍑鴻凍澶熼殢鏈猴紝榪欐槸鏈鍩烘湰鐨勮姹傦紱
2) 涓婂紡緇欏嚭灝介噺澶氱殑杈撳嚭錛岃秺鎺ヨ繎m涓秺濂斤紙涓嶅彲鑳借秴榪噈錛夛紝鍗沖懆鏈熷敖閲忛暱錛屾渶濂戒負(fù)m錛岃繖鏍鋒墠鑳戒繚璇佷笂寮忔弧瓚?font color="#800000">鍧囧寑鍒嗗竷錛?strike>m涓暟鍦ㄥ懆鏈焟涓悇鍑虹幇涓嬈?/strike>m涓暟鍑虹幇鐨勬鐜囩浉絳夛級錛?/p>
3) 涓婂紡鐨勭敓鎴愰熷害瓚沖蹇?/p>
鏈瀹規(guī)槗鎯沖埌鐨勶紝m鐨勫彇鍊間負(fù)璁$畻鏈哄瓧澶у皬錛堝2^32鎴?^64錛?/font>銆?/p>
浣嗘槸榪欏効鏈変釜寰堜弗閲嶇殑闂錛?font color="#800000">Xn浣庝綅鐨勯殢鏈烘у緢寮?/font>銆傚師鍥犲涓嬶細(xì) 浠|m, 涓?/p>
聽聽聽聽聽聽聽聽聽聽聽聽聽 Yn = Xn mod d 鍒?/p>
聽聽聽聽聽聽聽聽聽聽聽聽聽 Yn+1 = ( ( aXn + c ) mod m ) mod d 聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 = ( aYn + c ) mod d 涓婅堪琛ㄨ揪寮忕殑鎰忎箟鍗籌細(xì)Yn涓篨n浣巏浣嶏紙d=2^k錛夛紝榪欐牱鐨?font color="#800000">Yn搴忓垪褰㈡垚鍛ㄦ湡涓篸鐢氳嚦鏇寸煭鐨勫悓浣欏簭鍒?/font>銆備婦渚嬭鏄庯細(xì)d涓?^1鏃訛紝Yn涓篨n鐨勬渶浣庝綅錛堝彲鍋囧畾涓?鎴?錛夛紝鑻n+1 != Yn錛屽垯Yn+2 == Yn蹇呭畾鎴愮珛錛屼粎褰揳銆乧鐨嗕負(fù)濂囨暟鏃禮n銆乊n+1灝?銆?浜ゆ浛錛屽惁鍒欙紝涓哄父鏁幫紙0鎴?錛夈?/p>
鏆傛椂鎶涘紑闅忔満鎬т笉綆★紝鍏堟壘鍒板懆鏈熶負(fù)m鐨勯殢鏈哄簭鍒椾腑鐨勫彇鍊艱鍒欍?/p>
Donald Knuth鍦?i>The Art of Computer Programming, Volume 2: Seminumerical Algorithms涓殑3.2.1.2鑺傚m, a, c鍜孹0鍙栧艱鍒欑殑琛ㄨ堪錛?/p>
1) gcd(c, m) = 1. 鍗?font color="#800000">c, m浜掔礌
2) 浠葷粰璐ㄦ暟p, p|m ==> p|(a-1). 鍗砿%p==0錛屽垯(a-1)%p==0銆?/p>
3) 4|m ==> 4|(a-1). 鍗砿%4==0錛屽垯(a-1)%4==0銆?/p>
榪欎釜璇佹槑榪囩▼瀵逛簬鎴戣繖鏍風(fēng)殑鏁拌鍩虹涓嶆槸寰堟墡瀹炵殑鎼炲簲鐢ㄦ妧鏈殑浜烘潵璇存湁鐐歸毦浠ョ悊瑙d簡銆傛湁鍏磋叮鐨勮瘽錛岃繕鏄幓鐪?em>3.2.1.2鐨勮瘉鏄庡惂:-)銆?/p>
涓婇潰鐨勮鍒欏憡璇夋垜浠紝婊¤凍浜嗕笂榪拌鍒欏悗錛屽彲浠ヤ繚璇佸簭鍒楀懆鏈熶負(fù)m銆傚浜庡墠闈㈡彁鍒扮殑鍏充簬闅忔満鎬х殑闂錛屾棦鐒禭n浣庝綅鐨勯殢鏈烘ф瘮杈冨急錛屽彲浠ュ彧鍙?font color="#800000">Xn鐨勯珮浣?/font>浣滀負(fù)杈撳嚭銆傞珮浣嶇殑闅忔満鎬у拰緇熻鎰忎箟鐢盿, c紜畾錛屽叾鍙栧兼秹鍙?font color="#800000">緇熻媯(gè)楠?/font>錛屽叿浣撶殑涔熻繕鏄湅3.3鍚с?/p>
榪欑瘒鏂囩珷瑙e喅浜?font color="#800000">鍏鋒湁緇熻鎰忎箟鐨勯殢鏈烘暟鐨勯儴鍒嗙悊璁洪棶棰樸?/p>
PS: 涔嬪墠鏇劇粡BS榪嘩indows Live Writer錛屽綋鏃惰寰梂riter緙栬緫鍔熻兘澶皯錛?span style="COLOR: #800000">涓嶈兘鐩存帴璁懼畾閾炬帴鏂囧瓧鐨勫瓧浣撻鑹?/span>錛岀煡閬揅SS鍙互璁懼畾涔嬪悗錛屽張瑙夊緱Word 2007緙栬緫鐨凚log杞垚html涔嬪悗澶ぇ錛岃屼笖涔熺煡閬揥ord 2007涓婇潰鏄彲浠ヨ緗摼鎺ョ殑target涓篲blank鐨勩傜幇鍦ㄥ彂鐜癢riter榪樻槸寰堜笉閿欑殑浜嗭紝鍘熸潵鏄?font color="#800000">鍙互璁懼畾鏍煎紡鐨勶紝涔熷彲浠ョ洿鎺ョ紪杈慼tml錛岃屼笖鍙互Web棰勮錛岄摼鎺ヨ繕鍙互鍔犲叆鍒?font color="#800000">閾炬帴璇嶆眹琛?/font>錛屾尯鏂逛究鐨勩?/p>
瓚婃潵瓚婂彂鐜?a target="_blank">Wikipedia鏄釜鍜?a target="_blank">Google涓鏍風(fēng)殑濂戒笢瑗匡紒
涓銆侀殢鏈烘暟
杞歡瀹炵幇鐨?span style="COLOR: #800000">闅忔満鏁扮敓鎴愬櫒(random number generator, RNG)鐢熸垚鐨勯殢鏈烘暟鍒楀ぇ澶氭槸鎯熷畾鏁板垪錛屽洜姝や竴鑸縐頒綔浼殢鏈烘暟(pseudorandom number, PRN)錛岃屽熀浜?span style="COLOR: #800000">鐑櫔澹?thermal noise)銆?span style="COLOR: #800000">鍏夌數(shù)鏁堝簲(photoelectric effect)銆?span style="COLOR: #800000">鏀懼皠鎬ц“鍙?radioactive disintegration)絳変笉鍙鐭ョ殑鐗╃悊鐜拌薄瀹炵幇鐨?span style="COLOR: #800000">紜歡闅忔満鏁扮敓鎴愬櫒(hardware random number generator)鐢熸垚鐨勯殢鏈烘暟鎵嶈璁や負(fù)鏄?span style="COLOR: #800000">鐪熼殢鏈烘暟(truly random number)銆侾RN鍦ㄨ綆楁満棰嗗煙涓昏鐢ㄤ簬浠跨湡(simulation)鍜屽瘑鐮佸(cryptography)銆?/span>
鏈枃浠呰璁轟吉闅忔満鏁拌蔣浠跺疄鐜扮畻娉曪紝騫朵笖浠呰璁烘弧瓚?span style="COLOR: #800000">鍧囧寑鍒嗗竷(uniform distribution, UD)鐨勪吉闅忔満鏁板彂鐢熷櫒(pseudorandom number generator, PRNG)銆?span style="COLOR: #800000">闈炲潎鍖鍒嗗竷(non-uniform distribution, NUD)鐨凱RNG鍙氳繃婊¤凍鍧囧寑鍒嗗竷鐨凱RNG涓庨潪綰挎у嚱鏁扮敓鎴愩?/p>
鏈枃璁ㄨ鐨凱RNG搴旀弧瓚充互涓嬩笁鐐癸細(xì)
a. 鍦ㄥ彇鍊肩┖闂村唴婊¤凍UD錛屽嵆絳夋鐜囧彇寰楀彇鍊肩┖闂村唴浠繪剰鍊箋?/p>
b. 鍏呭垎闅忔満錛屽嵆璇ラ殢鏈烘暟鍒楀懆鏈?period)搴斿敖閲忛暱銆傛鐐圭敱鎵璋撶殑鐔?entropy)搴﹂噺銆?/p>
c. 鍞竴杈撳叆鎴栫О縐嶅瓙(seed)瀵瑰簲鍞竴杈撳嚭PRN銆傝繖涓鐐筸s鏄綆楁満鐨勫己欏癸紝涔熸槸PRN鎯熷畾鐨勬牴婧愶紝涔熸槸綆楁硶琚牬瑙g殑鏍規(guī)簮銆?/p>
鐢變簬PRN sequence(PRNS)鎯熷畾錛屾墍浠ョ畻娉曠殑瀹夊叏鎬т富瑕佸彇鍐充簬鐔電殑閫夋嫨鍜岀畻娉曠殑澶嶆潅鎬?/span>銆?/p>
浜屻佸彲棰勬祴PRNG涓庝笉鍙嫻婸RNG 鎵璋?span style="COLOR: #800000">鍙嫻?determined)PRNG
涓嶅彲棰勬祴(indetermined)PRNG錛屼粠鐞嗚涓婅錛屼笉鍙嫻嬬殑PRNG鏄笉瀛樺湪鐨勶紝榪欏効鎸囧瘑鐮佸瀹夊叏鐨凱RNG(cryptographically secure PRNG, CSPRNG)銆?/p>
涓夈佸父鐢≒RNGs
1銆?span style="COLOR: #800000">綰挎у悓浣欏彂鐢熷櫒(linear congruential generators, LCG)
鍗曞崥浼?/a>鍦?a target="_blank">鏍囧噯搴搑and()鍑芥暟鐨勭己闄蜂互鍙?qiáng)Blitz++闅忔満鏁扮敓鎴愮殑綆浠?/a>涓粰鍑轟簡The C Programming Langurage 2nd鐨勫疄鐜幫紝鎴戞墜澶存病鏈夎繖鏈功錛屾墍浠ユ棤浠庢煡璇侊紝FallHunter搴旇榪樻湁鍚с?/p>
VS2003涓粰鐨勫疄鐜版槸錛?/p>
2銆?span style="COLOR: #800000">LFG, LFSR絳?/span>
闄愪簬綃囧箙錛屾湁鍏磋叮鐨凾X鍙互鍙傝冨悗闈㈢殑璧勬枡錛屼富瑕佹槸Wikipedia錛屼笂闈㈢粰鐨勭畻娉曡繕鏄潪甯歌緇嗙殑錛孋SPRNGs鍖呮嫭Blum Blum Shub銆丗ortuna絳夈?/p>
濡傛灉鍑轟簬瀹夊叏鎬х殑鑰冭檻錛孭RNG鐨勮緭鍑轟笉搴旂洿鎺ヤ綔涓虹瀛愩傚湪銆?span style="COLOR: #800000">鏋勫緩瀹夊叏鐨勮蔣浠?/span>銆嬩竴涔︿腑錛屼綔鑰呰涓衡?span style="COLOR: #800000">涓涓ソ鐨凱RNG鍏鋒湁榪欐牱鐨勬ц川錛氱粰瓚沖鐨勭喌錛屽嵆浣挎敾鍑昏呯煡閬撳叏閮ㄧ殑綆楁硶緇嗚妭錛岃繕鏄笉鑳界寽鍑虹敓鎴愮殑鏁版嵁嫻?/span>鈥濄?/p>
涓夈丳RNG鐨勫畨鍏ㄦ祴璇?/p>
FIPS-140鏍囧噯鍖呭惈浜嗗RNs鐨勬祴璇曡鑼冦傝繖涓爣鍑嗘垜涔熸病鏈夊幓浠旂粏鐪嬶紝鎵浠ユ病娉曠粰鍑烘洿澶氱殑淇℃伅銆傝鎻愬埌鐨勬祴璇曞寘鏈?span style="COLOR: #800000">DIEHARD銆乸Lab銆?/p>
鍥涖侀殢鏈烘暟鍦ㄦ父鎴忎腑鐨勫簲鐢?/p>
1銆?span style="COLOR: #800000">闅忔満鏁頒負(fù)娓告垙甯︽潵鏇村鐨勪笉紜畾鎬э紝涓嶇‘瀹氭т駭鐢熷彲鐜╂?/span>
榪欎釜搴旇鏄墍鏈夋父鎴忕殑鏍規(guī)湰浜嗗惂銆傛父鎴忎腑鐜╁銆佹墿銆丯PC鐨勫緢澶氬睘鎬ч兘鏄竴涓寖鍥達(dá)紝姣斿鏀誨嚮灝辨湁鏈灝忔敾鍑誨拰鏈澶ф敾鍑伙紝姣忔鐨勫疄闄呮敾鍑諱激瀹蟲誨湪浜岃呬箣闂淬?/p>
鍚屾牱鐨勶紝鐜╁涔愭涓嶇柌鐨勪竴嬈℃鈥滄礂瑁呭鈥濄佲滅榪愭皵鈥濄傚叾浠栫被鎺ㄥ惂飦娿?/p>
2銆?span style="COLOR: #800000">娓告垙鐨凙I鏇村鐨勪緷璧栦簬闅忔満鏁?/span>
濡傛灉鎬墿銆丯PC鐨凙I涓鍒囧敖鍦ㄧ帺瀹剁殑鎺屾彙涓紝娓告垙鐨勪箰瓚e氨澶уぇ闄嶄綆浜嗭紝榪欎竴鐐瑰湪鍗曟満娓告垙涓湁鐫寰堝ソ鐨勪綋鐜般俉ar3涓紝浜烘満瀵規(guī)垬錛岀數(shù)鑴戠殑鎴樻湳騫朵笉鍗曚竴錛堜絾榪樻槸鏈夎寰嬪彲寰紝浜虹被鐜╁灝氫笖濡傛錛夛紝榪欏叾涓浐鐒舵湁澶氭柟闈?鐨勫洜绱犮備絾闅忔満鏁扮殑鍔熷姵涔熶笉瀹規(guī)姽鏉銆?/p>
3銆?span style="COLOR: #800000">闅忔満鏁板噺灝戞暟鎹瓨鍌紝涓涓瀛愬彲浠ヤ唬鏇夸竴鎵規(guī)暟鎹?/span>
娓告垙涓惈鏈夊ぇ閲忔暟鎹紝濡傛灉姣忎竴欏歸兘瑕佸瓨鍙栵紝瀵規(guī)椂闂村拰絀洪棿閮芥槸涓涓冮獙銆傚浜庡満鏅腑闅忔満鐢熸垚鐨勬墿淇℃伅錛屽鏋滅粰瀹氫竴涓浉鍚岀殑縐嶅瓙銆傚憙錛屾槸涓嶆槸瑕佺畝鍗曚竴浜涘憿錛?/p>
浜斻佺浉鍏沖唴瀹?/p>
鑷充簬涓轟粈涔圥RNGs澶у浣跨敤绱犳暟錛岄渶瑕佹洿澶氱殑鏁拌鐭ヨ瘑錛屽瀵嗙爜瀛︽湁浜嗚В鐨凾X搴旇鑳藉浣撲細(xì)鍒?span style="COLOR: #800000">瀹夊叏鍜屾暟璁?/span>涔嬮棿鐨勭揣瀵嗚仈緋匯傚洜涓烘墜澶存病鏈夋暟璁虹殑涔︼紝鎵浠ヤ笉澶氬姞濡勬祴浜嗐傚埌鏃跺啓璁烘枃鐨勬椂鍊欙紝鍐嶅~鍏呬笂鍚с?/p>
鍏佸弬鑰冩枃鐚?/p>
1. 鏋勫緩瀹夊叏鐨勮蔣浠? [緹嶿John Viega, Gary McGraw. 閽熷悜緹? 鐜嬮箯 璇?聽 鍖椾含. 娓呭崕澶у鍑虹増紺? 2003.
2. Pseudorandom number generator鍙?qiáng)鐩稿叧閾炬? http://en.wikipedia.org/wiki/Pseudorandom_number_generator
3. PRNG - Pseudo-Random Number Generator. http://statmath.wu-wien.ac.at/prng/
-------------------------------------------------------------------------
PS01錛氭墜涓婄殑鍑犳湰涔?/p>
浠庡嚑浣峊X閭e効鎷跨殑鍑犳湰涔︼紝鏀懼湪妗屼笂澶у崐騫翠簡錛屼竴鐩存病鏈夋庝箞緲昏繃銆傛兂鎯沖懆鏈繕緇欎粬浠畻浜嗭紝浜庢槸灝辨嬁榪囨潵緲葷炕錛岀珛姝ゅ瓨鐓э紝濡傛灉浠ュ悗鐢ㄥ埌鐨勮瘽錛屽啀鏉ユ煡銆?/p>
a. 銆?span style="COLOR: #800000">鐢═CP/IP榪涜緗戦檯浜掕仈銆媀ol. III錛屼富瑕佹槸閽堝Linux/POSIX濂楁帴瀛楃殑C/S鏋舵瀯瀹炵幇銆傚洜涓篗MORPG鐨凜/S鏋舵瀯澶氫緷璧栦簬TCP錛屼笂闈㈢8銆?0-16绔犵殑鍐呭鍙互鍏蟲敞涓涓嬨?/p>
b. 銆?span style="COLOR: #800000">鏋勫緩瀹夊叏鐨勮蔣浠?/span>銆嬶紝涓婇潰鍏充簬寮婧愩侀棴婧愮殑鍙f按(Chap. 4)錛屽叧浜庣紦鍐插尯婧㈠嚭(Chap. 7)錛屽叧浜庨殢鏈烘暟(Chap. 10)錛屽叧浜庢暟鎹簱瀹夊叏(Chap. 14)錛屽叧浜庡鎴風(fēng)瀹夊叏(Chap. 15)錛岄兘鏄煎緱涓鐪嬬殑涓滆タ銆?/p>
c. 銆?span style="COLOR: #800000">UNIX鐜楂樼駭緙栫▼銆嬶紝榪涚▼鎺у埗(Chap. 8)銆佺嚎紼嬫帶鍒?Chap. 12)銆佽繘紼嬮氫俊(Chap. 15, 17)銆佸鎺ュ瓧(Chap. 16)銆佹暟鎹簱(Chap. 20)銆?/p>
d. 銆?span style="COLOR: #800000">UNIX緗戠粶緙栫▼銆媀ol.I錛屽鏋滄秹鍙?qiáng)鍒版硾UNIX鎿嶄綔緋葷粺涓嬬綉緇滅紪紼嬶紝鍙互褰撲綔鍙傝冧功緲匯?/p>
e. 銆?span style="COLOR: #800000">璁$畻鏈哄畨鍏ㄥ師鐞?/span>銆嬶紝鍔犲瘑(Chap. 5)銆佽璇?Chap. 6)銆佸崗璁畨鍏?Chap. 7)銆佸叆渚墊嫻?Chap. 13)銆佹伓鎰忔敾鍑?Chap. 15)銆佺伨闅炬仮澶?Chap. 19)銆?/p>
PS02錛?a target="_blank">寰蔣瀹e竷涓嶄細(xì)鎶珮鏀惰喘Yahoo浠鋒牸
娑堟伅鏉ヨ嚜Wall Street Journal錛屼笉榪囧綋澶╁彲鏄?span style="COLOR: #800000">April Fool銆?/p>
PS03錛氬叧浜?a target="_blank">Wikipedia
涓嶆槸璇?a target="_blank">Wikipedia琚鐨勫悧錛熷緢涔呮病鏈夎闂繃浜嗭紝榪欎箞濂界殑涓滆タ錛岃灝佷簡榪樻槸寰堥仐鎲劇殑銆?/p>
PS04錛氭湁闂
鍙戠幇闂錛屾壘Google錛涜В鍐抽棶棰橈紝鎵?a target="_blank">Wikipedia銆?/p>
PS05錛氭榪庤ˉ鍏?/p>
-------------------------------------------------------------------------
Added on Apr.10th
浠婂ぉ浠?a >CodeProject涓婄湅鍒頒竴綃囨枃绔?a >Applied Crypto++: Pseudo Random Number Generators)錛屼綔鑰?font color="#a52a2a">Jeffrey Walton瀵瑰瘑鐮佸鍜屽畨鍏ㄦ瘮杈冩湁鐮旂┒銆?/p>
Jeffrey Walton瀵筀nuth鐨?a >The Art of Computer Programming Vol.2涓叧浜庨殢鏈烘暟鐨勯儴鍒嗕綔浜嗘鎷?/p>
榪欑瘒鏂囩珷浠庝竴涓?font color="#a52a2a">宸ョ▼甯堢殑瑙掑害緇欏嚭浜嗛殢鏈烘暟鐨勫簲鐢ㄥ拰瀹炵幇錛屽緢鍏鋒湁鍙傝冩с?/p>
浣滆呰繕浠?a >FIPS 140-2鏍囧噯涓紩鐢ㄤ簡涓嬮潰涓孌佃瘽錛?/p>
Random Number Generators fall into one of two classes: deterministic and nondeterministic. A deterministic RNG consists of an algorithm that produces a sequence of bits from an initial value called a seed. A nondeterministic RNG produces output that is dependent on some unpredictable physical source that is outside human control.
榪欎竴孌佃瘽寰堝ソ鐨勮鏄庯紝渚濊禆浜庣畻娉曠殑RNG鎵鐢熸垚鐨勯殢鏈烘暟鍒楀彧鍙兘鏄吉闅忔満鏁幫紝鐪熼殢鏈烘暟渚濊禆浜庝笉鍙嫻嬬殑鐗╃悊婧?/font>銆?/p>
]]>
鍦ㄤ互鍓嶅啓 MMORPG涓父鎴忎笘鐣岀殑鏋勫緩 鏃訛紝鎻愬埌鏈嶅姟鍣ㄦ灦鏋勭殑鍒嗙被銆傚ぇ澶氭暟鎯呭喌涓嬶紝姣忎竴縐嶄笉鍚岀殑鏈嶅姟鍣ㄥ彧浼?xì)涓庡叾瀵瑰簲鐨勪竴涓湇鍔″櫒鍜屽涓鎴風(fēng)閫氫俊銆傛瘮濡傦紝GameServer(GS)鍙細(xì)涓嶹orldServer(WS)閫氫俊錛屼篃灝辨槸璇碐S鍙綔涓篧S鐨勫鎴風(fēng)銆傝繖嬈★紝鐢變簬欏圭洰闇姹傦紝鏂板鍔犱簡涓涓猄omeServer(SS)浣滀負(fù)GS鐨勬湇鍔″櫒銆?
涓銆丼S緗戠粶榪炴帴鍒嗘瀽
鐢變簬闇瑕佸拰澶ч噺GS寤虹珛緗戠粶榪炴帴錛屾墍浠S浣跨敤浜咺OCP妯″瀷銆傞壌浜?/span> 涓婁竴嬈″啓IOCP 鏃墮伃鍒?/span> Kevin TX鐨勯剻瑙嗭紝鎵浠ュ喅瀹氫粖澶╁鍐欎竴鐐廣係S鐨勭綉緇滄ā鍨嬪ぇ鑷村涓嬶細(xì)
0銆佹湇鍔″櫒涓葷嚎紼嬪惎鍔紱
1銆佸垵濮嬪寲Winsock錛孲DK func: WSAStartup ()錛?
2銆佸垱寤轟竴涓嬌鐢╫verlapped I/O鐨剆ocket錛孲DK func: WSASocket()錛?
3銆佺粦瀹氱鍙o紝灝嗘湰鍦板湴鍧涓庡垱寤虹殑socket鍏寵仈璧鋒潵錛孲DK func: bind()錛?
4銆佸垱寤篒OCP瀵硅薄錛孲DK func: CreateIoCompletionPort()錛?
5銆佸垱寤哄伐浣滆呯嚎紼嬶紝CreateWorkerThreads()錛?
6銆佸紑濮嬬洃鍚紝SDK func: listen()錛?
7銆佹帴鍙楀鎴風(fēng)榪炴帴錛孲DK func: WSAAccept()錛?
8銆佸綋鏈夋柊鐨勮繛鎺ヨ姹傚埌杈炬椂錛屽皢WSAAccept榪斿洖鐨勫搴旂殑瀹㈡埛绔痵ocket鍏寵仈鍒癐OCP錛?
9銆佸鐞哤SASend() or WSARecv()銆?
鍦ㄥ疄闄呭鐞嗘椂錛屽彲鑳戒細(xì)鏍規(guī)嵁闇瑕佸緩绔嬮澶栫殑綰跨▼澶勭悊socketopt鍛戒護(hù)錛岀敋鑷沖緩绔嬩笓闂ㄥ鐞哤SAccept鐨勭嚎紼嬨?
鍏充簬宸ヤ綔鑰呯嚎紼媁orkerThread錛?
閫氳繃GetQueuedCompletionStatus()錛岃幏鍙朓/O綾誨瀷鍜屽搴旂殑socket錛屽鏋滀負(fù)鎺ユ敹鍒欓氱煡鎺ユ敹瀹屾垚騫剁戶緇柊鐨刉SARecv()錛屽鏋滀負(fù)鍙戦佸垯閫氱煡鍙戦佸畬鎴愩?
浜屻丟S緗戠粶榪炴帴鍒嗘瀽
GS涓婂浜嶴S瀹㈡埛绔噰鐢ㄧ殑鏄疻SAEventSelect妯″瀷錛岄氳繃緗戠粶浜嬩歡瑙﹀彂鐩稿簲鎿嶄綔銆?
0銆佹湇鍔″櫒涓葷嚎紼嬪惎鍔紱
1銆佸垵濮嬪寲Winsock錛孲DK func: WSAStartup ()錛?
2銆佸垱寤轟竴涓嬌鐢╫verlapped I/O鐨剆ocket錛孲DK func: WSASocket()錛?
4銆佺粦瀹氱鍙o紝灝嗘湰鍦板湴鍧涓庡垱寤虹殑socket鍏寵仈璧鋒潵錛孲DK func: bind()錛?
5銆佸垱寤虹綉緇滀簨浠訛紝SDK func: CreateEvent()錛?
6銆佽緗綉緇滀簨浠剁殑鍝嶅簲錛孲DK func: WSAEventSelect()錛?
7銆佺瓑寰呯綉緇滀簨浠訛紝SDK func: WSAWaitForMultipleEvents()錛?
8銆佸垎鏋愮綉緇滀簨浠剁被鍨嬪茍澶勭悊錛孲DK func: WSAEnumNetworkEvents()銆?
榪欓噷涔嬫墍浠ラ噰鐢–reateEvent鑰屼笉鏄疻SACreateEvent錛屾槸鍥犱負(fù)鐢盋reateEvent鍒涘緩鐨勪簨浠跺厑璁鎬負(fù)auto reset鐨勶紝鑰學(xué)SACreateEvent鍒涘緩鐨勪簨浠舵槸manually reset鐨勩?
涓夈佸疄鐜拌繃紼嬩腑鐨勫皬鎻掓洸
鍦℅S鐨勫鎴風(fēng)瀹炵幇涓亣鍒板嚑涓棶棰樸?
棣栧厛鏄湪娑堟伅澶勭悊涓婏紝GS鍙戝埌SS鐨勬秷鎭紝SS騫舵病鏈夊畬鍏ㄦ帴鍙楀埌錛岃孲S鍙戦佸埌GS鐨勬秷鎭竴鍒囨甯搞傚悗鏉ヨ窡浜嗕竴涓婼S娑堟伅闃熷垪錛屽彂鐜癝S灞呯劧鍙互鏀跺埌GS鍙戦佸埌WS鐨勬秷鎭紒鐒跺悗灝卞湪GS涓婃壘鍘熷洜錛屽師鏉ユ槸WS鍦ㄥ拰SS鍏辯敤娑堟伅闃熷垪錛屼互鍓岹S鍙搴斾竴涓湇鍔″櫒錛屾棤鎵璋撳叡鐢ㄣ傜幇鍦ㄥ姞浜哠S錛岃嚜鐒惰鍒嗗紑澶勭悊錛屽惁鍒橶S鍜孲S閮藉彲鑳芥敹鍒板彂緇欏鏂圭殑娑堟伅銆?
鍚庨潰涓涓猙ug浠庡懆涓寮濮嬪凡緇忓己濂鎬簡鎴戝洓澶╀簡銆傚嵆浣縎S宸茬粡鍏抽棴錛學(xué)SAEnumNetworkEvents榪斿洖鐨勪簨浠跺搴擣D_CONNECT鐨刬ErrorCode鍊煎緇堜負(fù)0銆傚洜涓轟腑闂存秹鍙?qiáng)鍒板绾拷E嬪拰澶氫釜鏈嶅姟鍣ㄥ垎鍒搴旂殑瀹㈡埛绔紝榪炴帴鍒癢S鐨勬病鏈夐棶棰橈紝灝辨槸SS鐨勫鎴風(fēng)鏈夐棶棰樸傚埌浠婂ぉ涓婂崍涓烘錛屾垜宸茬粡鎶奊S鐨勭綉緇滃鐞嗛昏緫鍏ㄩ儴闈欐佸垎鏋愪簡涓閬嶏紝娌℃湁浠諱綍鍙戠幇銆備復(fù)榪戜腑鍗堝悆楗殑鏃跺欙紝涓嶅緱宸插彧濂界敤WS鐨勫鎴風(fēng)socket鍘昏繛鎺S錛屽眳鐒跺嚭鐜板悓鏍烽棶棰橈紒鑰屾垜鐨刉S鍜孲S閮芥槸鏀懼湪鎴戞満鍣ㄤ笂鐨勶紝榪欐牱鏉ョ湅錛屽氨鍙湁绔彛涓嶅悓浜嗭紒
鏋滅劧錛屽綋鎴戞妸SS鐨勭洃鍚鍙d慨鏀逛箣鍚庯紝闂瑙e喅浜嗐傚洜涓烘垜鏄嬌鐢?088绔彛鐩戝惉GS榪炴帴鐨勩傚綋鎴戞妸绔彛鎹㈡垚80錛屽悓鏍烽棶棰樺啀嬈″嚭鐜幫紝鑰屼笖SS鏃犳硶閫氳繃80绔彛鐩戝惉銆?
鎺ヤ笅鏉ユ彁鍑犱釜闂錛?
1銆?/span> 琚崱宸存柉鍩虹洃鎺х殑绔彛8088鍜屾湇鍔″櫒寮鍚殑鐩戝惉绔彛8088鏈変粈涔堣仈緋伙紵涓轟粈涔堟病鏈夊啿紿侊紵鍗″反浠呬粎鍙槸浠庤绔彛鑾峰彇鏁版嵁鍚楋紵涓轟粈涔堢綉緇滀簨浠剁殑FD_CONNECT鐨勫搴攊ErrorCode涓?錛堣〃鏄庤繛鎺ユ垚鍔燂級錛?/span>
2銆?/span> 80鏄父瑙刪ttp绔彛錛屽畠涓?080銆?088榪欎簺http绔彛鐨勫尯鍒湪鍝効錛熻繖浜涚鍙g粦瀹氭垚鍔熶笌鍚︾殑鍘熷垯鏄粈涔堬紵
聽
PS錛氭枃涓叧浜嶪OCP鍜學(xué)SAEventSelect妯″瀷鏇翠負(fù)璇︾粏鐨勫疄鐜幫紝鍙互鍙傝?/span> Network Programming for Microsoft Windows 2nd 鐨勭浜旂珷錛歐insock I/O Methods銆?/span>
鏈鍚庡啓瀹屼簡錛屽彂瑙夎嚜宸卞啓鐨勫緢鍨冨溇錛屽畬鍏ㄥ氨鏄嫻佹按甯愩傝漿蹇典竴鎯籌紝涓轟粈涔堝憿錛熻嚜宸卞熀紜涓嶆墡瀹炲槢錛岀涓嬈℃帴瑙OCP鍜岀綉緇滄ā鍨嬶紝涔熷氨榪欐牱浜嗐?
浠婂ぉ澶櫄浜嗭紝瑕佺潯浜嗭紝涓婇潰鐨勯棶棰樻槑澶╁啀鑰冭檻鍚?/span> J 銆?/span>
鏄ㄥぉ瓚婁繋浠e簴闈㈣瘯浜嗕竴涓浼欍?
鐪嬪畬浜嗕粬鐨勭瑪璇曢鐩紝鎰熻鍚庤儗鏈夌偣鍑夛紝浣嗚繖浜涗笢瑗跨湅鐪嬩篃灝辮繃鍘諱簡錛岃瀹炶瘽錛岄偅浜汣++鐨勯鐩灝?span style="COLOR: #c00000">鏈夌偣BT銆?
浣嗘垜涓鐩磋寰桪S鐨勪笢瑗匡紝濡傛灉浣犲綋鍒濆鐨勬椂鍊欐槸寰堣鐪熷涔?fàn)杩囼q舵濊冭繃鐨勶紝鍏跺疄鏄笉闇瑕佸幓璁板繂鐨勶紝鎵浠ユ垜灝遍棶浜嗕竴涓叧浜?span style="COLOR: #c00000">紼沖畾鎺掑簭鍜屼笉紼沖畾鎺掑簭鐨勯棶棰樸傛垜鎯籌紝鍙浣犵悊瑙d簡鍚勭鎺掑簭綆楁硶鐨勬濇兂錛屽緢easy銆?
鍙槸榪欏摜浠効蹇樿浜嗕粈涔堟槸紼沖畾鎺掑簭錛屾垜榪樹互涓轟粬鎶婂揩閫熸帓搴忋佸爢鎺掑簭褰撲綔紼沖畾鎺掑簭鍙槸娌¤浣忋傜湅鏉ワ紝鑰佸笀浠庡皬鏁欒偛鐨?涓閬撻鐩綘鍗充嬌涓嶄細(xì)涔熻灝介噺鍘葷瓟"榪欑鎬濇兂閬楁瘨棰囨繁銆傚鏋滄姳鐫榪欑鎬濇兂鍋氱▼搴忓憳錛屽叕鍙稿鍗婅鍨帀銆?
鎯充竴鎯崇ǔ瀹氭帓搴忕殑姒傚康鍚э細(xì)涓や釜鍚屽煎厓绱狅紙涓嶇煡涓轟粈涔堬紝鎴戜竴鐩磋寰?a target="_blank">涓ヨ佸笀涔︿笂鐢ㄧ殑鏄?9錛岀湅鏉ユ垜榪樻槸鍦?span style="COLOR: #c00000">璇繪涔?/span>銆?span style="COLOR: #c00000">姝昏涔?/span>錛屾渶鍚庡彲鑳戒細(xì)璇諱功姝?/span>L錛夊湪鎺掑簭鍓嶅悗鐩稿浣嶇疆淇濇寔涓嶅彉錛屽嵆鏈潵鍦ㄥ墠闈㈢殑榪樺湪鍓嶉潰錛堟墍璋?灝樺綊灝橈紝鍦熷綊鍦?/span>"錛岀湅鏉ユ渶榪戞濇兂鏈夌偣娑堟瀬錛岄毦鎬病鏈夋縺鎯?span style="FONT-FAMILY: Wingdings">L錛夈傚啀鎯蟲兂鍚勭鎺掑簭鐨勬濇兂錛屾垜浠緢瀹規(guī)槗寰楀埌榪欐牱鐨勭粨璁猴細(xì)鏈鏅氱殑O(n2)鐨勭畻娉曪紝涓涓竴涓粠鍓嶆瘮鍒板悗錛岃嚜鐒朵笉浼?xì)濯?jiǎng)鍝嶅埌鍚屽煎厓绱犵殑鐩稿浣嶇疆錛岃孫(nlogn)鐨勭畻娉曪紝鐢變簬澶氳礬姣旇緝錛屽彲鑳藉鑷存湰鏉ョ浉瀵逛綅浜庡悗闈㈢殑鍏冪礌鍏堟瘮杈冨拰縐誨姩錛岄犳垚涓嶇ǔ瀹氥傝繖鏍蜂竴鎯籌紝鑷劧鐭ラ亾綆鍗曠殑鎻掑叆銆侀夋嫨銆佸綊騫舵帓搴忛兘鏄ǔ瀹氱殑錛岃屾敼榪涚殑楂樻晥鐜囩殑綆楁硶鍒欎笉紼沖畾銆?
鍚庨潰鍙︿竴涓悓浜嬪湪璇㈤棶浠栧仛鐨凞emo鐨勪簨鎯咃紝鍥犱負(fù)鏄疍X鐨勪笢瑗匡紝鎴戜笉鎳傦紝娌℃彃鍢達(dá)紝灝遍殢渚跨湅浠栫殑綆鍘嗐?
鐪嬪埌鍏朵腑涓欏癸紝鏈夋彁鍒頒粬鏇劇粡緇欏ぇ涓銆佸ぇ浜岀殑瀛︾敓鍋氳繃C++鍩硅銆傛垜鏈病鎵撶畻鎻愪粬絎旇瘯涓殑C++閮ㄥ垎鐨勶紝浣嗘棦鐒舵浘緇忎負(fù)浜哄笀琛紙鍥犱負(fù)鎴戞浘緇忓仛榪囧鐢熴佷篃鍋氳繃鑰佸笀錛夛紝C++鍩虹鎺屾彙鍒拌繖縐嶇▼搴﹀氨涓嶅浜嗐傚挨鍏跺浜庝竴涓┖鐨凜++綾婚粯璁ょ敓鎴愬摢浜涙垚鍛樺嚱鏁板眳鐒跺啓鐨勪竴濉岀硦娑傦紙鍙嬫儏鎻愮ず錛氫綘涔熶笉鐢˙S浠栵紝濡傛灉浣犳病鏈夌湅榪嘗ippman鐨勩?/span>Inside of the C++ Object Model銆嬶紝寤鴻浣犲厛涓嶈鍙戣█J錛夈?
鎴戜竴鑸璇█鐗規(guī)т笉澶暍鍙戣〃瑙傜偣錛堝洜涓烘垜鐨凜++鍩虹涓嶆墡瀹?span style="FONT-FAMILY: Wingdings">L錛夛紝浣嗘垜瀵圭畝鍗曠殑綆楁硶鎴栨濇兂灝忔湁鍏磋叮錛堟病鏈変綘鎯寵薄涓偅涔堥珮錛夈傚彲鏄紝絎旇瘯涓敮涓鐨勪竴涓渶瑕乧oding鐨勯鐩粬鍙堟病鍐欍傛垜鍙ソ璇達(dá)紝C++鐨勪笢瑗夸綘鎺屾彙鎬庝箞鏍鋒垜涔熷彲浠ヤ笉鐪嬶紝浣嗚繖涓猰emcpy鐨勫疄鐜幫紝浣犳庝箞涔熷緱鏈夌偣鎯蟲硶鍚э紵涓嶇劧鎬庝箞鍘誨啓浠g爜鍛紵鍒氬ソ鍦ㄩ潰浠栦箣鍓嶏紝榪樺拰鍚屼簨璁ㄨ榪噈emcpy鐨勯棶棰橈紙濡傛灉浣犵粰鍑?span style="COLOR: #c00000">one byte by one byte鐨勫疄鐜頒細(xì)閬瑽S鐨?span style="FONT-FAMILY: Wingdings">J錛屽洜涓轟綘灞呯劧娌℃湁鑰冭檻榪囪綆楁満緋葷粺鏈韓鐨勬暟鎹鐞嗭級銆?
鏈潵榪樻兂闂粬涓涓叧浜?a href="/qiujian5628/archive/2008/02/29/43477.html" target="_blank">sizeof()鐨勯棶棰?/a>錛屽悗鏉ヨ寰椾篃娌′粈涔堝繀瑕侊紝鍏充簬union鐨勫榻愶紝瑕佹寜鐓у崟浣嶆渶闀跨殑鎴愬憳瀵歸綈榪欎竴鐐硅嚜宸遍兘瑙夊緱鏈夌偣BT灝辯畻浜嗐?
鍏跺疄錛屾垜鎯寵鐨勬槸錛屽緢澶氫笢瑗匡紝浣犱笉鑳借涓轟綘鎺屾彙鐨勫緢濂斤紙闄ら潪浣犵湡鐨勬帉鎻$殑寰堝ソ錛夛紝鎵璋撳緢濂斤紝鎷緾++鏉ヨ錛屽氨鏄妸浣犺涓轟綘濂界殑鍦版柟錛屼綘鍙互涓嶇炕鍏朵粬涓滆タ錛屾妸瀹冨啓涓嬫潵錛屽熀鏈窡ISO C++淇濇寔90%浠ヤ笂鐨勭浉浼煎害灝卞彲浠ヤ簡銆傚綋鐒?dòng)灱寴q欐牱璇存湁鐐硅幢浜嗐?
姣曠珶錛屽仛娓告垙紼嬪簭鍛橈紙鍏朵粬涔熷樊涓嶅鍚э級闇瑕佺殑鏄細(xì)
甯︾潃嬋鎯呭幓緙栫爜錛屽甫鐫铏氬績鍘誨涔?fàn)锛屽甫鐫鎸戞垬鍘諱氦嫻侊紝甯︾潃鍘嬪姏鍘誨伐浣溿?
嬋鎯咃紝鑳借浣犵殑鎬濈淮婊″叿鍒涙剰錛屼唬鐮佹瀬鍏墮閫革紱
铏氬績錛岃兘璁╀綘鐨勭煡璇嗕笉鏂Н绱紝浠庤岃揪鍒板帤縐杽鍙戯紱
鎸戞垬錛岃兘璁╀綘鐨勫洟闃熷厖婊℃椿鍔涳紝浜ゆ祦媧繪臣涓ヨ皚錛?
鍘嬪姏錛岃兘璁╀綘鐨勫績鎬佷繚鎸佸鉤琛★紝鑳滀笉濡勫枩錛岃觸涓嶆兌棣併?span style="TEXT-DECORATION: underline">
鍥犱負(fù)鑷繁榪欎袱鍛ㄥ績鎬佸彈鍒?span style="COLOR: #c00000">闈炴櫤鍔涘洜绱?/span>騫叉壈錛屾棩瀛愯繃寰楁湁鐐?span style="COLOR: #c00000">嫻戝櫓銆傚啓涓嬫潵錛屼富瑕佹槸涓轟簡鏀炬澗涓涓嬶紝涔熸彁閱掕嚜宸便?
涓嶆曟棤鐭ワ紝浣嗘曟棤鐣忋?/span>
void *mymemcpy( void *src, void *des, size_t len ) 聽size_t offset = len / 4; 鍒氭墠鎯蟲眰璇佷竴涓媘emcpy鍦ㄥ湴鍧閲嶅彔鐨勬儏鍐典笅錛屾槸鍚︿細(xì)鑰冭檻浠庡悗寰鍓峜opy鐨勬儏鍐點(diǎn)傜粨鏋滅湅鍒?a target="_blank">浜戦鐨刡log涓婂緢鏃╃殑涓綃囨枃绔?/a>錛屼篃鏄memcpy鐨勶紝瑙掑害涓嶅悓銆?/p>
鎴戞兂婢勬竻涓鐐癸紝鎴戝啓榪欑瘒blog鐨勫垵琛峰彧鏄葷粨鍑犱釜鎶鏈棶棰橈紝鍥犳灝辨病鏈夋妸闈㈣瘯鐨勫墠鍥犲悗鏋滆涓涓嬶紝鍙嶅掕寰堝鏈嬪弸璇В錛屼互涓烘垜鎬庝箞鎬庝箞鏍蜂簡銆?/p>
浜嬪疄鎯呭喌鏄紝榪欏嚑涓棶棰橀兘鏄湰鏉ョ殑絎旇瘯棰樼洰褰撲腑鐨勶紝闈㈣瘯鐨凾X浠庝笂鍗?0:00鍓嶅悗鍋氬埌11:30榪囷紝絳夋垜鍜屽彟涓涓悓浜?3鐐硅繃鍘葷殑鏃跺欙紝鎴戜竴鐩存病鎬庝箞璇磋瘽銆傚彧鏄湪涓杈圭湅浠栫殑綆鍘嗗拰棰樼洰錛屾枃涓凡緇忚浜嗭紝鏄湅鍒頒粬鐨勭畝鍘嗕箣鍚庢墠鎻愮殑闂銆傚綋鏃舵槸鏈?0閬撳乏鍙崇殑C++棰樼洰錛屼粬鍋氬鐨勫叾瀹炲彧鏈変竴閬撱?/p>
鑰屼笖錛屾垜鍦ㄦ彁闂鐨勬椂鍊欎篃閮藉皢闂璺熶粬涓璧峰垎鏋愪簡鐨勶紙闄や簡memcpy涔嬪錛夛紝鑷垜鎰熻璇磋瘽榪樻槸寰堝緱浣撶殑錛屽啓鏂囩珷鐨勯鏍兼槸鍙︿竴鐮佷簨鍎褲?/p>
鎴戞病鏈変笣姣灖涓嶈搗榪欎綅TX鐨勬剰鎬濓紝涔熷畬鍏ㄦ病鏈夋樉鎽嗙殑鎯蟲硶銆?/p>
PS
錛氬拷鐒舵兂鍒拌嚜宸辨渶榪戜負(fù)浠涔?span style="COLOR: #c00000">鐧栨у崄瓚?/span>錛屽洜涓烘渶榪戝湪鍏蟲敞涓涓浼欑殑
Blog
錛屽鏋滀笉渚墊潈錛屾垜鎯崇敤鐢ㄤ粬鐨?/span>
Blog
鐨勫悕瀛椼?/span>
涓嶈鑱旀兂
銆嬶紝浣滆呮槸甯︿笁涓〃鐨?span style="COLOR: #c00000">鐜嬪皬宄?/span>錛堛婁笁鑱旂敓媧誨懆鍒娿嬭鑰咃級銆傛墍浠ワ紝濡傛灉鏈変漢鎯蟲媿鎴戯紝寤鴻鍏堢湅鐪嬩粬鐨勪笢瑗匡紝瀛︿範(fàn)涓涓嬫帾杈?/span>
J
銆備竴涓悓浜嬶紝璇村ぉ娑篃琛岋紝鎴戜釜浜鴻寰楀ぉ娑湁鐐圭浉浜掑惞鎹х殑鍛抽亾銆?/span>
鎭跺績錛屼絾娌℃湁鎭舵剰
J
銆?/span>
-----------------------------------------------------------------
PS錛氳ˉ璁頒簬2008/03/26
榪樻槸鎶婁笂鍗堝啓鐨勪竴涓猰ymemcpy鏀句笂鏉ュ惂銆傞噷闈㈡病鏈夊des < src + len鐨勯噸鍙犳儏鍐佃繘琛岃璁猴紝鍥犱負(fù)澶ц嚧google浜嗕竴涓嬶紝浼間箮寰堝皯浜鴻繖鏍峰仛錛堝掍笉鏄洜涓轟笉鑳藉疄鐜幫級銆?/p>
{
聽char *tempsrc = (char *)src;
聽char *tempdes = (char *)des;
聽for( size_t i=0; i<offset; ++i )
聽{
聽聽*(unsigned long *)tempdes = *(unsigned long *)tempsrc;
聽聽tempdes += sizeof(unsigned long);
聽聽tempsrc += sizeof(unsigned long);
聽}
聽
聽offset = len - len % 4;
聽for( size_t i=0; i<offset; ++i )
聽{
聽聽*tempdes++ = *tempsrc++;
聽}
聽return des;
}
]]>
//-----------------------------------------------------------------------------------------------------
澶滄繁浜嗭紝闅忎究鍐欏啓鈥︹?span style="FONT-FAMILY: Verdana">
//-----------------------------------------------------------------------------------------------------
澶у嚒瀛﹁繃緙栫▼璇█鍜岀綉緇滅殑TX搴旇閮藉啓榪囪嚜宸辯殑鑱婂ぉ紼嬪簭錛岄偅鏃跺欏ぇ瀹墮兘鐭ラ亾浜嗗鎺ュ瓧鎬庝箞select銆?/span>connect銆?/span>bind銆?/span>listen銆?/span>accept銆?/span>send銆?/span>recv錛屼篃鐭ラ亾浜?/span>TCP鍜?/span>UDP鐨勫尯鍒?/span>鈥︹︾◢寰敤鍔熺殑TX鎴栬榪樺啓榪囧浜鴻亰澶╃▼搴忥紝鐭ラ亾浜嗕粈涔堟槸闃誨I/O錛岀湡姝h嚧鍔涗簬鍚慟Q銆丮SN絳夊嵆鏃惰亰澶╁伐鍏烽潬榻愮殑澶х墰瀵規(guī)湰鏂囨彁鍒扮殑IOCP鏇存槸浜嗙劧浜庤兏銆傛洿澶氱殑TX鎴栬呮湁鍏磋叮緇х畫鐪嬩笅鍘匯?
涓銆侀樆濉濱/O錛堜富瑕佹寚TCP錛?
1銆佸綋socket鐨剅ecv buff涓虹┖鏃訛紝榪涚▼浼?xì)wait鐩村埌鏂版暟鎹埌杈撅紱
2銆佸綋socket鐨剆end buff宸叉弧鏃訛紝榪涚▼浼?xì)wait鐩村埌絀洪棿瓚沖錛?
3銆佸綋socket鐨刟ccept娌℃湁鏂拌繛鎺ュ埌杈撅紝榪涚▼浼?xì)wait鐩村埌鏂拌繛鎺ュ埌杈撅紱
4銆佸綋socket鐨刢onnect娌℃湁鏀跺埌ACK錛岃繘紼嬩細(xì)wait鐩村埌鏀跺埌ACK銆?
鑰岄潪闃誨I/O鍒欐槸鑷村姏浜庢彁渚涢珮鏁堢殑寮傛I/O銆?
浜屻両OCP錛?span style="FONT-SIZE: 10pt">I/O Completion Port錛?/span>I/O瀹屾垚绔彛錛?/span>
IOCP鏄疢S鎻愪緵鐨刉indows鍐呮牳瀵硅薄錛屽唴閮ㄤ嬌鐢ㄧ嚎紼嬫睜綆$悊錛屽茍鏍規(guī)嵁CPU鐨勪釜鏁扮‘瀹氱嚎紼嬩釜鏁般傚綋鏁版嵁鍒拌揪鍚庯紝緇熶竴鎶曢掑埌鍞竴鐨処OCP闃熷垪錛屽搴旂殑鑻ュ共宸ヤ綔綰跨▼鐢ㄤ簬澶勭悊榪欎簺鏁版嵁錛屼粠鑰屽疄鐜伴潪闃誨寮傛I/O銆?
綆鍗曚簡瑙d簡IOCP鐨勫姛鑳藉拰鍘熺悊錛屼笅闈㈡彁渚涘嚑鐐圭嚎绱紝渚涙湁鍏磋叮鐨凾X鏁寸悊鎬濈華J銆?
1銆丱VERLAPPED緇撴瀯錛?
2銆丆reateIoCompletioPort錛氱敤浜庡垱寤篒OCP錛屽叧鑱旇繛鎺ユ潵鐨剆ocket鍙ユ焺錛岀敤浜庢帴鏀舵暟鎹紱
3銆丟etQueuedCompletionStatus錛氫緵宸ヤ綔綰跨▼璋冪敤錛屽彇鍒版暟鎹殑綰跨▼浼?xì)鍔犲叆I/O瀹屾垚闃熷垪錛孖OCP鐨勭嚎紼嬫睜綆$悊榪欎簺宸ヤ綔綰跨▼銆?
涓夈佹繁鍏ュ涔?fàn)鍜屼娇鐢?
1銆丣effrey Richter鐨?a target="_blank">銆夾dvanced Windows銆?/a>錛岀15绔狅紝璋佺湅璋佺煡閬?span style="FONT-FAMILY: Wingdings">J錛?
2銆丣im Beveridge & Robert Wiener鐨?a target="_blank">銆奙ultithreading Applications in Win32銆?/a>錛岀6绔狅紝璋佺湅璋佺煡閬?span style="FONT-FAMILY: Wingdings">J錛?
3銆?a target="_blank">Google銆?
//-----------------------------------------------------------------------------------------------------
鎰熻鐢∣ffice 2007緙栬緫鍜屽彂甯傿log姣擫ive Writer瑕佹柟渚垮緢澶氾紝涓昏鏄疞ive Writer鐨勭紪杈戝姛鑳藉お灝戜簡錛屽鏋?007鑳藉瀵歸摼鎺ヨ繘琛宼arget璁劇疆錛?br />鍐嶆敮鎸丒ntryName灝眕erfact浜?span style="FONT-FAMILY: Wingdings">J銆?br />浠庢柊鍏徃鍥炴潵錛岃繕娌℃湁瀹屽叏閫傚簲榪欒竟瀹芥澗鐨勭幆澧冿紝榪欏嚑澶╁ソ浼兼ⅵ娓鎬竴鑸紝鍏堟槸IE鍑洪棶棰橈紝Ghost浜嗕竴閬擄紝鍚庨潰鏄?/span>Outlook鏀墮偖浠跺嚭闂銆?/span>
榪樻槸澶滄繁浜洪潤鐨勬椂鍊欙紝涓涓漢鐕冪潃鐑熴佸惉鐫姝屻佸枬鐫鑼躲佹暡鐫閿洏鏈夋劅瑙夆︹?/span>
//-----------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------
鍏充簬鍙嶅鎸傦紝榪欎袱澶╁湪鍜屽嚑浣嶅悓浜嬪拰緗戝弸璁ㄨ鐨勭粨鏋滀緷鐒舵槸錛屾洿澶氱殑瑕佷粠絳栧垝瑙掑害瑙e喅鈥︹?br />//-----------------------------------------------------------------------------------------------------
鏈榪戝湪鑰冭檻瀹夊叏闂鐨勬椂鍊欙紝鍦ㄣ婃父鎴忕紪紼嬬簿綺?銆嬩腑鐪嬪埌Pete Isensee鐨勩婂畨鍏ㄥ鎺ュ瓧銆嬶紙鍗抽氬父鎵璇寸殑Secure Socket Layer, SSL鎶鏈級錛屽張Google浜嗕竴浜汭PSec鐨勭浉鍏寵祫鏂欍傚敖綆PSec鏄儴緗插湪IP灞傜殑鍗忚錛屼絾瀹冭繕鏄彲浠ヤ負(fù)鎴戜滑鎻愪緵涓浜涙濊礬銆?
涓銆両PSec鐨勮璇佸畨鍏紙AH+ESP錛?
1銆佷笉鍙惁璁ゆэ細(xì)閲囩敤鍏挜鍔犲瘑鐨勬暟瀛楃鍚嶅叿鏈夋姉鎶佃禆鎬с?
2銆侀槻姝㈡姤鏂囬噸鏀撅細(xì)浣跨敤搴忓垪鍙峰拰婊戝姩紿楀彛浠ヤ繚璇佹暟鎹寘鐨勫敮涓鎬э紝鍗充嬌鏁版嵁鍖呰鎴幏閲嶅彂錛屼篃浼?xì)鍥犲簭鍒楀忥L(fēng)殑鐩稿悓鎴栬呴敊璇岃鎶涘純銆?
3銆佸畬鏁存э細(xì)IPSec浣跨敤鍗曠嫭鐨勯壌鍒ご閮紙Authentication Header, AH錛変俊鎭繘琛屾牎楠岋紝闃叉鎶ユ枃綃℃敼錛屾牎楠岀殑綆楁硶涓昏鏄疢D5銆丼HA-1絳夊崟鍚戝搱甯岀畻娉曘?
4銆佸彲闈犳э細(xì)閫氳繃鍔犲瘑灝佽瀹夊叏鏈夋晥杞借嵎錛圗ncapsulating Security Payload, ESP錛夛紝IPSec瀵逛紶杈撴暟鎹繘琛屼繚鎶わ紝鍔犲瘑綆楁硶闄や簡MD5銆丼HA-1錛岃繕鏈夊姞瀵嗗潡閾炬帴錛圕ipher Block Chaining, CBC錛夋ā寮忓姞瀵嗙畻娉曠瓑銆?
浜屻両PSec鐨勬暟鎹姞瀵?
鍦ㄦ暟鎹姞瀵嗕笂錛孖PSec浣跨敤鐨勪富瑕佹槸DES錛圖ata Encryption Standard錛夊拰3DES錛圱riple Data Encryption Standard錛夌畻娉曘?
涓夈両PSec鐨勫瘑閽ョ鐞?
涓轟簡淇濊瘉鏁版嵁浼犺緭瀹夊叏錛孖PSec浣跨敤鐢盜KE錛圛nternet Key Exchange錛夋彁渚涚殑鍔ㄦ佸瘑閽ユ洿鏂版満鍒訛紝Diffie-Hellman綆楁硶鎻愪緵瀵嗛挜鐢熸垚絳栫暐錛岄氫俊涓ょ闇瑕佺淮鎸佷竴涓畨鍏ㄥ叧鑱旓紙Security Association錛夛紝涓轟袱绔氫俊鎸囧畾璁よ瘉鍙?qiáng)鍔犲瘑鎵鐢ㄧ畻娉曞拰瀵嗛挜錛屽茍鎻愪緵搴忓垪鍙峰拰婊戝姩紿楀彛絳夈?
闇瑕佹敞鎰忕殑鏄紝IPSec騫舵病鏈夋彁渚涙暟鎹駭鐢熷埌鍙戦佷箣鍓嶇殑淇濇姢鏈哄埗銆備婦渚嬫潵璇達(dá)紝灝辨槸IPSec鍙互鍦ㄦ渶澶х▼搴︿笂淇濊瘉浣犺緭鍏ョ殑甯愬彿瀵嗙爜鍦ㄤ紶杈撹繃紼嬩腑鐨勫畨鍏紝浣嗗茍涓嶈兘闃叉閽撻奔杞歡鍜屽叾浠栨湪椹湪浣犺緭鍏ヨ繖浜涗俊鎭椂琚埅鑾?span style="FONT-FAMILY: Wingdings">L錛岄偅搴旇鏄綘瑕佹敞鎰忕殑銆?
瀵笽PSec鏈夊叴瓚g殑TX鍙互鍒?a >http://www.ietf.org涓婁笅杞界浉鍏崇殑RFC鏂囨。鐮旂┒鐮旂┒J銆?
//-----------------------------------------------------------------------------------------------------
鏈互涓烘墜涓婂伐浣滃畬鎴愶紝鍙互鍋鋒椂闂寸湅鐪嬪畨鍏ㄦ柟闈㈢殑涓滆タ錛屼笉鏇炬兂Joe鍙堝垎涓嬩簡鏂頒換鍔?span style="FONT-FAMILY: Wingdings">L鈥︹?br />//-----------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------
姝ょ瘒浠呮槸瀵瑰弽鑴辨満澶栨寕鐨勪竴鐐規(guī)濊冿紝鍏朵粬瀹夊叏闂濡傜櫥褰曢獙璇併佹秷鎭獙璇佺瓑鏇村鐨勬槸娑夊強(qiáng)閫昏緫鍔熻兘銆?br />//-----------------------------------------------------------------------------------------------------
鏄ヨ妭鍒氬洖鏉ョ殑鏃跺欙紝鍥炲叕鍙稿幓鍜孲oft鑱婂埌浜嗚嚜宸辯殑姣曚笟璁烘枃鐨勯棶棰橈紝鍥犱負(fù)涓撲笟鐨勫叧緋伙紝鎴戝繀欏葷粰鍑轟竴浜涘畨鍏ㄦ柟闈㈢殑鑰冭檻錛屾鏄洜涓鴻繖涓鐐癸紝鎴戝綋鏃跺紑棰樻椂灝辯珛瓚沖瀹夊叏鐨勬棤緙濇父鎴忎笘鐣岃繘琛屾濊冦傚彧鏄湪娓告垙鏈韓鐨勫畨鍏ㄦт笂錛屼竴鐩翠篃娌℃湁涓涓ソ鐨勫嚭鍙戠偣錛岃繖涓ゅ懆榪樻槸鍦ㄨ冭檻榪欎釜闂銆?
榪欎竴鐐癸紝鏈夋垜鍏ヨ鏃墮棿涓嶉暱錛屽浜庢父鎴忔湰韜佺帺瀹朵笌寮鍙戣咃紙鍚父鎴忓強(qiáng)澶栨寕銆佹湪椹紑鍙戣咃級涔嬮棿鐨勫叧緋誨茍娌℃湁涓涓緢濂界殑鎶婃彙錛屾洿澶氱殑鏄敱浜庢垜瀵規(guī)父鎴忎腑鐨勫彲鐢ㄧ殑瀹夊叏鎶鏈笉浜嗚В錛屽挨鍏舵槸瀵瑰簲鐢ㄥ眰瀹夊叏鍗忚涓嶄簡瑙o紝瀵圭牬瑙f妧鏈篃涓嶄簡瑙o紝瀵艱嚧鏃犳墍閫備粠銆?
銆婃父鎴忕紪紼嬬簿綺?銆嬩腑Andrew Kirmse鍦ㄣ婂湪綰挎父鎴忕殑緗戠粶鍗忚銆嬩竴鏂囦腑瀵瑰父瑙佺殑綃℃敼鎶ユ枃銆佹姤鏂囬噸鏀懼拰閫嗗悜宸ョ▼鏈夎榪般傞闃叉姤鏂囩鏀圭殑鏈夋晥闃插盡鏄搱甯屾牎楠岋紝鐜板湪澶у娓告垙鏄嬌鐢∕D5綆楁硶錛岃屼笖緗戜笂寮婧愮殑MD5浠g爜涔熷緢澶氥傚浜庢姤鏂囬噸鏀撅紝Andrew鎻愬埌浜嗕嬌鐢ㄧ嚎鎬у彔鍔犻殢鏈烘暟鐨勭姸鎬佹満錛屽叿浣撳師鐞嗗拰瀹炵幇鏂瑰紡鍥犱負(fù)娌℃湁鎻愬埌澶緇嗭紝榪樿閽堝瀹為檯搴旂敤緇х畫瀛︿範(fàn)L銆傜劧鑰岋紝鐢變簬瀹㈡埛绔棦鏄姤鏂囩殑鎺ユ敹鑰呬篃鏄彂閫佽咃紝鍥犳錛屽鎴風(fēng)鍖呮嫭浜嗗畬鏁寸殑鍔犺В瀵嗙畻娉曘備竴鏃﹀鎴風(fēng)琚嗗悜錛屼笂榪版帾鏂藉氨鍙樻垚浜嗙牬瑙h呰儗鍚庣殑鐑熼浘寮癸紝瀹屽叏澶卞幓鎰忎箟銆?
鎻愬埌鍙嶅鎸傦紝Joe鐨勭湅娉曚篃鏄榪欎釜涓滆タ鍜屽叿浣撴煇涓涓妧鏈叧緋諱笉澶э紝榪樻槸瑕佷粠鏈哄埗涓婂幓鐪嬨傚姞涓嶅姞瀵嗗浜庢櫘閫氱帺瀹舵病鏈夋剰涔夛紝瀵逛簬涓撲笟浠庝簨閫嗗悜鐨勪漢鏇存槸涔熸病鏈夋剰涔夛紝鎵鏈夊崟綰冭檻鍔犲瘑鏄病鏈夋晥鏋滅殑銆傚浜庡厤璐規(guī)父鎴忥紝澶栨寕寰寰鏄墦閽卞叕鍙哥殑宸ュ叿錛屼綘灝佷粬鐨勫彿錛屼粬鍐嶅緩灝辨槸浜嗭紝浠d環(huán)鍑犱箮涓?錛岃屼竴鑸粯璐規(guī)父鎴忥紙鍍忛瓟鍏戒笘鐣岋級涓涓笎鍙峰搴斾竴涓狢DKey錛屼竴涓狢DKey灝辮鍑犲崄鍧楅挶錛岃繖涓皝璧鋒潵灝辨湁鐐瑰挰鐗欎簡銆?
璇村埌榪欓噷錛屼笉濡ㄦ崲涓濊礬錛氫負(fù)鍏嶈垂娓告垙鍔犲叆CDKey銆傛垜涓嬈炬父鎴忎粠鍐呮祴銆佸皝嫻嬪埌鍏祴錛岃鐜╁鍏呭垎鍙備笌浣撻獙錛屽湪琚嗗悜涓斿鎸傛í琛屼箣鍓嶏紝鎸夋甯擱昏緫榪愯惀銆傝繘鑰屽亣瀹氭垜榪欎竴嬈炬父鎴忓湪鍏祴涔嬪悗錛岃鐜╁鎰熻欖呭姏鍗佽凍銆傚紩瀵肩帺瀹跺茍瀹炴柦CDKey錛屼竴涓狢DKey澶х害浼?xì)闇瑕佺帺瀹朵粯鍑轟簺璁窶oney浠ョず璇氭剰錛屽湪鐜╁娓告垙榪囩▼涓紝浼?xì)闃秾D墊у悜鐜╁璧犻侀儴鍒嗗鍊奸亾鍏楓傝佺帺瀹跺湪榪涘叆鏂板尯鏃訛紝闇瑕佺敵璇風(fēng)戶緇嬌鐢ㄥ師CDKey銆傝繖鏍蜂竴鏉ワ紝澶栨寕灝變笉浼?xì)鑲嗘棤蹇屾儺浜嗐?
BTW錛岃繖涓濊礬娌℃湁浠庢妧鏈搴﹁В鍐抽棶棰橈紝涓嬮潰鍐嶆潵鐪嬩竴縐嶇暐寰叧涔庢妧鏈疄鐜扮殑瑙e喅鏂規(guī)錛氬姩鎬侀獙璇併傚湪娓告垙榪愯鏈熼棿錛屼細(xì)涓嶅畾鏈熺殑鍚戠帺瀹跺彂閫侀獙璇佺爜錛屽鎴風(fēng)鍦ㄦ敹鍒版秷鎭悗錛屽繀欏?span style="COLOR: red">鍦ㄤ竴瀹氭椂闂村唴鍝嶅簲錛屽悜鏈嶅姟鍣ㄧ‘璁ゆ敹鍒扮殑楠岃瘉鐮侊紝鍚﹀垯灝嗚寮哄埗涓嬬嚎錛屽啀嬈$櫥褰曞悗灝?span style="COLOR: red">鏇村姞棰戠箒鐨勬敹鍒伴獙璇佺爜錛岀洿鍒扮敤鍏惰壇濂界殑鍥炲嬈℃暟绱Н娑堥櫎鍏朵笉鑹褰?/span>涓烘銆備負(fù)浜嗗敖閲忓噺灝戝洜姝ょ粰鐜╁閫犳垚鐨勪笉鍙嬪ソ浣撻獙錛屽湪浠誨姟鍦烘櫙銆侀噸瑕丳K鍦烘櫙鎴栬呴珮絳夌駭鐜╁媧誨姩鍦烘櫙錛岄獙璇佺爜鐨勫彂閫佸拰紜鍙?span style="COLOR: red">閫傚綋鏀懼銆?
褰撶劧錛屽鏋滃鎸備腑鍔犲叆浜嗗浘褰㈣瘑鍒紝榪欎竴鎷涗篃鏈繀濂忔晥銆?
涓嶇煡鏄亾楂樿繕鏄瓟楂橈紝鍙互鑲畾鐨勪竴鐐規(guī)槸錛氬ぇ瀹墮兘鏄湪鍒╃泭鐨勯┍鍔ㄤ笅緇炲敖鑴戞眮銆?
//-----------------------------------------------------------------------------------------------------
鏄ヨ妭鍥炴潵涔嬪悗錛屼竴鐩存瘮杈冨繖錛堢‘鍒囩殑璇存槸姣旇緝鎳掞級錛屾病鏈夋洿鏂幫紝瀹滄洿鍔犲嫟濂嬨?br />鏈榪戝伐浣滄秹鍙?qiáng)鍒版暟鎹簱缂柦E嬶紝涓鐐圭偣瀵規(guī)暟鎹簱鐨勮鍐欏眳鐒惰楁帀鎴?澶╂椂闂達(dá)紝姹楋紒
//-----------------------------------------------------------------------------------------------------
緇堜簬璧跺湪鍛ㄦ湯涔嬪墠璋冮氫簡錛岀幇鍦ㄦ潵鎬葷粨涓涓嬫垜榪欎釜欏圭洰涓浜庡紓姝ュ洖璋冪殑搴旂敤鑳屾櫙銆?/p>
榪欎釜欏圭洰鐨勫唴瀹瑰氨鏄湪娓告垙涓嬌鐢ㄧ涓夋柟搴撲負(fù)鎵鏈夌帺瀹舵彁渚涙洿濂界殑鏈嶅姟錛屽綋server鍚姩鍚庯紝鍔犺澆dll錛屽垵濮嬪寲璇ユā鍧楋紝褰搒erver閫鍑烘椂錛岀粨鏉熸ā鍧楀姛鑳斤紝鍗歌澆dll銆?/p>
褰撶帺瀹舵彁鍑鴻姹傚悗錛宻erver鍦╩ain thread涓氳繃lib杞彂鐜╁璇鋒眰錛宭ib澶勭悊瀹屾瘯錛屽湪鍏剁嫭绔媡hread涓洖璋僺erver涓哄叾瀹炵幇鐨刢allback function銆傛鏃訛紝server闇瑕佸皢榪斿洖鐨剅esult杞埌main thread涓result鍙?qiáng)鍏剁浉鍏崇殑鐜╁鏁版嵁杩涜澶勭悊銆?/p>
絎笁鏂瑰簱鐨勯渶姹傛槸寰堟槑紜殑錛屽湪鍚堥傜殑鍦版柟鍙戦佽姹傦紝鍦ㄥ悎閫傜殑鍦版柟澶勭悊鍝嶅簲銆?/p>
Joe瀵規(guī)垜鐨勮姹備篃鏄緢鏄庣‘鐨勶紝鍝嶅簲澶勭悊鏃墮噰鐢╯erver褰撳墠鏋舵瀯(榪欎釜鏋舵瀯鍦?a href="/Fox/archive/2008/01/23/asny_callback.html" target="_blank">涓婁竴綃囨枃涓?/a>鏈夋彁鍒?錛屼嬌鎴戠殑緙栫爜涓嶆秹鍙?qiáng)鋼Q浣曟父鎴忓姛鑳介昏緫澶勭悊錛屽茍浣挎暣涓鐞嗘祦紼嬬粏鑺傚鍚庣畫搴旂敤寮鍙戦忔槑銆?/p>
浜岃呯粨鍚堣搗鏉ワ紝灝變負(fù)榪欎釜欏圭洰铻嶅叆鏁翠釜server鐨勬灦鏋勬彁渚涗簡瀹岀編鐨勯渶姹傦紝涔熶負(fù)鎴戠殑緙栫爜鎻愪緵浜嗘渶灝忛檺搴︾殑閫夋嫨絀洪棿:(錛屽ソ澶勬槸鍚庣畫鍔熻兘寮鍙戝彲浠ュ畬鍏ㄦ棤瑙嗘垜鐨勭紪鐮侊紝鍙渶瀹炵幇瀵瑰洖璋冨搷搴斿悗鐨勫姛鑳斤紝鍙湁server搴曞眰鐭ユ?zhèn)夊浣曡皟鐢ㄣ?/p>
緇欏嚭搴忓垪鍥撅細(xì)
聽
涓轟簡淇濇寔瀵逛笂灞傚紑鍙戦忔槑錛孫nCallback闇瑕佸皝瑁呫?/p>
//-------------------------------------------------------------------------------
// 涓騫存潵錛屾垜涓昏鍙備笌浜嗕袱嬈炬父鎴忥紝紜垏鐨勮鏄崐騫達(dá)紝鍓嶉潰鍗婂勾騫舵病鏈夌湡姝f秹鍙?qiáng)杩愯惀漶斿搧鐨勫紑鍙戯紝鍙槸鍋氬伐鍏楓?br />// 鐜板湪榪欎釜妯″潡鏄垜鍋氱殑鏈蹇紝涔熸槸鍘嬪姏鏈澶х殑涓涓傜幇鍦ㄦ兂鏉ワ紝鍘熷洜鍦ㄤ簬姝ゆā鍧楁秹鍙?qiáng)鍒版父鎴忎富閫昏緫搴曞眰鍜?br />// 絎笁鏂瑰姩鎬侀摼鎺ュ簱鐨勯氫俊鍙?qiáng)澶勭悊銆?br />// 鍦ㄧ煭鐭嚑澶╃殑鏃墮棿鍐呰浣犵殑璁捐婊¤凍絎笁鏂瑰簱鐨勫簲鐢ㄩ渶姹傚茍絎﹀悎娓告垙鑷韓搴曞眰閫昏緫鐨勮璁¢鏍鹼紝鐨勭‘鏈変簺鐥涜嫤錛?br />// 濂藉湪鏈塉oe鐨勬寚鐐癸紝璁╂垜鍦ㄥ畬鎴愬伐浣滅殑鍚屾椂鍙堝鍒頒簡涓浜涙柟娉?)銆?br />//-------------------------------------------------------------------------------
鍓嶆鏃墮棿鍐欒繃涓綃?a href="/Fox/archive/2008/01/10/multithread_security.html/" target="_blank">鍏充簬綰跨▼瀹夊叏鐨勬枃瀛楋紝鏈塗X瑙夊緱涓嶆繁鍏ャ傚洜涓烘湰鏉ュ氨娌℃兂鍐欑殑澶叿浣擄紝鍙槸闅忎究璇磋錛屼粖澶╁氨鎯寵鐐瑰叿浣撶殑鎶鏈?/p>
//-------------------------------------------------------------------------------
// 鍔ㄦ侀摼鎺ュ簱 (Dynamic Link Library)
1) 鍔ㄦ侀摼鎺ワ紱
2) 璺ㄨ璦錛?/p>
3) Win32騫沖彴鍙敤錛?/p>
鍔ㄦ侀摼鎺ュ簱鐨勪竴鑸簲鐢ㄩ兘鍦ㄨ繖鍎夸簡錛屾洿鍔犲叿浣撶殑灝辮鍘婚棶google浜?)銆?/p>
//-------------------------------------------------------------------------------
// 寮傛鍥炶皟 ( Asynchronism Callback )
浠婂ぉ鎯寵鐨勪富瑕佸唴瀹規(guī)槸寮傛鍥炶皟銆傚ぇ鑷寸粨鏋勬槸錛?/p>
//-------------------------------------------------------------------------------
//聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽聽聽聽聽聽聽聽聽聽 IAsyncCaller聽 IAsyncCallback
//聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 \聽聽聽 /
// CManager --> CSession --> CEvent
//-------------------------------------------------------------------------------
// class :聽聽CManager
// function :聽Singleton瀹炵幇錛岀鐞嗘墍鏈塁Session瀵硅薄
// class :聽聽CSession
// function :聽澶勭悊浼?xì)璇濆Q屽叧鑱斾簨鍔?/font>
// class :聽聽CEvent
// function :聽Session鐨勫叧鑱斿璞★紝澶勭悊寮傛鍥炶皟
// base class:聽IAsyncCaller, IAsyncCallback
鍦ㄥ彂璧穝ession鐨勬椂鍊欙紝new涓涓狢Session瀵硅薄錛屼負(fù)鍏跺垎閰嶄竴涓狦UID錛屽茍鍔犲叆綆$悊session鐨凜Manager瀵硅薄鐨刴ap(鏀寔澶氱嚎紼嬫搷浣?錛宯ew涓涓狢Event瀵硅薄錛屽皢璇Event瀵硅薄璁劇疆涓哄洖璋冨搷搴旂殑host錛岃CEvent瀵硅薄鍙繘琛屽叾浠栧悓姝ュ鐞嗐?/p>
褰撳洖璋冩潯浠舵弧瓚籌紝鐢盋Manager閫氳繃鐩稿簲CSession瀵硅薄瑙﹀彂錛屽茍浜ょ敱鍏跺叧鑱旂殑CEvent瀵硅薄澶勭悊銆?/p>
濡傛灉CEvent搴旂敤瑙勬ā杈冨皬錛屽彲鐢盋Manager鐨刴ap鐩存帴綆$悊錛岀渷鎺塁Session鐨勪腑闂村鐞嗐?/p>
榪欑澶勭悊鏂瑰紡鐨勪紭鐐規(guī)槸錛屽皢鏅氫簨鍔$殑鍥炶皟澶勭悊鏈哄埗鎶借薄涓洪氳繃Session Manager(CManager)榪涜緇熶竴綆$悊錛屾櫘閫氫簨鍔$殑澶勭悊鏀懼埌main thread涓紝綰跨▼闂撮氫俊鍒欎氦緇機(jī)Manager鍜孋Session錛屽疄鐜頒簡鑹ソ灝佽銆?/p>
//-------------------------------------------------------------------------------
// 鍏蜂綋瀹炵幇榪欓噷灝變笉緇欏嚭浜嗭紝鐢ㄥ埌鐨凾X鏍規(guī)嵁涓婇潰鐨勬弿榪板簲璇ュぇ姒傜煡閬撴庝箞鍋氫簡銆傚叾浠朤X濡傛灉涓嶆竻妤氱殑璇濓紝
// 娓呮鐨勮瘽錛屽彲浠ュ厛google鍏朵腑鐨勪竴浜涘叧閿瘝銆傚姩鎬侀摼鎺ュ簱鐨勯儴鍒嗗洜涓哄唴瀹瑰緢灝戯紝鍥犳涔熷彧鎻愪緵鍩虹浣跨敤銆?br />//
// PS: 鍥犱負(fù)GF瀛︾煡璇嗕駭鏉冪殑錛屽垰濂戒簡瑙e埌鏈夎繖鏍蜂竴涓?a target="_blank">鈥滃垱浣滃叡鐢ㄢ濆崗璁?/a>錛岃屼笖鏈榪戝緢澶氫漢鍦ㄨ璁?br />// cppblog鐨勫師鍒涚簿紲為棶棰?/a>錛屼簬鏄ぇ瀹跺氨鐪嬪埌鎴慴log欏墮儴鐨勮繖涓笢瑗?)銆?br />// 娉ㄩ噴椋庢牸涔熸敼鎴愯嚜宸卞鉤鏃剁敤鐨勪簡:)銆?br />//-------------------------------------------------------------------------------
涓銆佸綰跨▼瀹夊叏鐨勫紩鍏ワ細(xì)
鍏充簬浠涔堟槸澶氱嚎紼嬨佷負(fù)浠涔堜嬌鐢ㄥ綰跨▼鐨勯棶棰橈紝澶у鍙互鐪嬬湅Jim Beveridge & Robert Wiener鐨?a target="_blank">銆奧in32澶氱嚎紼嬬▼搴忚璁°?/a>錛堜警鎹?璇戯級錛屾垨鑰呭叾浠栭殢渚夸竴鏈彁鍒板綰跨▼鐨勪功鎴栨枃绔犮傝繖閲屽彧鏄彁鍒癢indows鐜涓嬪綰跨▼瀹規(guī)槗寮曞彂鐨勯棶棰樺拰瑙e喅鍔炴硶銆?/p>
1銆佺嚎紼嬪湪鏃墮棿鐗囩粨鏉熸椂閫鍑哄仛涓嶅埌
鐢變簬Windows灞炰簬鍒嗘椂鎿嶄綔緋葷粺錛岀郴緇熶細(xì)涓烘瘡涓嚎紼嬪垎閰嶅搷搴旂殑鏃墮棿鐗囦嬌鍏跺伐浣滐紝緇濆ぇ澶氭暟綰跨▼涓嶅彲鑳藉湪鏃墮棿鐗囩粨鏉熺殑鏃跺欏畬鎴愬叾宸ヤ綔錛岃屼笅涓涓椂闂寸墖灝辨湁鍙兘鍒嗛厤緇欏叾浠栫嚎紼嬨?/p>
2銆佺嚎紼嬬嫭绔嬪仛涓嶅埌
濡傛灉綰跨▼闂翠笉瀛樺湪渚濊禆鍏崇郴錛屽嵆綰跨▼A鐨勬墽琛屼笉渚濊禆浜庣嚎紼婤鐨勬墽琛岋紝姝ゆ椂鍗充嬌綰跨▼B琚墦鏂紝鐢變簬綰跨▼鐙珛錛屾墍浠ヤ簩鑰呬篃鍙互鐩稿畨鏃犱簨銆?/p>
鐒惰岋紝鍦ㄥ綰跨▼瑙e喅鏂規(guī)涓紝綰跨▼闂寸殑閫氫俊鏄綣佽屼笖蹇呰鐨勩傜嚎紼嬮氫俊涓昏鏈変袱縐嶆儏鍐碉細(xì)
1) 澶氫釜綰跨▼鍏變韓鐩稿悓璧勬簮錛?/p>
2) 涓涓嚎紼嬬殑鎵ц渚濊禆浜庡叾浠栫嚎紼嬬殑緇撴灉鎴栨墽琛屾儏鍐點(diǎn)?/p>
榪欐椂錛屾垜浠氨闇瑕佸疄鐜板叡浜祫婧愬強(qiáng)綰跨▼鎵ц鐨勫悓姝ャ?/p>
浜屻佸綰跨▼瀹夊叏鐨勮В鍐蟲柟妗堬細(xì)
鍥犳錛屽綰跨▼瀹夊叏鐨勭洰鏍囧氨鏄疄鐜板叡浜祫婧愮殑浜掓枼璁塊棶鍜岀嚎紼嬫墽琛岀殑鍚屾閫氫俊銆?/p>
閫氳繃瀵規(guī)搷浣滅郴緇熺殑瀛︿範(fàn)錛屾垜浠煡閬撶嚎紼嬪悓姝ヤ富瑕佹湁浠ヤ笅鏂規(guī)硶錛?/p>
1) 涓寸晫孌?Critical Section)
a) 涓寸晫璧勬簮鐨勫彇鑸嶏紝瀹滃皯涓嶅疁澶氾紝瀹滅煭涓嶅疁闀匡紝涓涓嚎紼嬪彧鑳芥渶澶氱瓑寰呬竴涓復(fù)鐣屾錛?/p>
b) 鏃犳硶渚︽祴涓涓復(fù)鐣屾鏄惁宸茬粡琚斁寮冿紱
c) 涓寸晫孌靛睘浜庣敤鎴峰璞°?/p>
2) 浜掓枼閿?Mutex)
鍚屼復(fù)鐣屾涓鏍鳳紝浜掓枼閿佷篃涓昏鐢ㄤ簬淇濊瘉璧勬簮鐨勫師瀛愯闂紝浜岃呯殑涓嶅悓涔嬪鍦ㄤ簬錛?/p>
a) 浜掓枼閿佸睘浜庡彲鍏峰悕鍐呮牳瀵硅薄錛?/p>
b) 浜掓枼閿佸彲浠ヨ法榪涚▼浣跨敤錛屼復(fù)鐣屾鍙兘鐢ㄤ簬鍚屼竴榪涚▼鍐咃紱
c) 浜掓枼閿佸彲浠ユ寚瀹氱瓑寰呮椂闂達(dá)紝鑰屼笖鍙互絳夊緟鍏朵粬鍐呮牳瀵硅薄銆?/p>
3) 浜嬩歡(Event)
a) 浜嬩歡閲嶇疆鍏鋒湁浜哄伐閲嶇疆鍜岃嚜鍔ㄩ噸緗袱縐嶆柟寮忥紝綆鍗曡鏉ワ紝浜岃呭垎鍒敤浜庡璇誨拰鍗曞啓錛?/p>
b) 浜嬩歡涓昏鐢ㄤ簬綰跨▼闂寸浉浜掗氱煡(鍞ら啋)錛?/p>
C) 浜嬩歡灞炰簬鍙叿鍚嶅唴鏍稿璞°?/p>
4) 淇″彿閲?Semaphore)
a) 淇″彿閲忓睘浜庡彲鍏峰悕鍐呮牳瀵硅薄錛?/p>
b) 淇″彿閲忔病鏈夋嫢鏈夎咃紝鍙浠諱竴綰跨▼閲婃斁錛?/p>
鍏充簬Win32涓繖鍥涚瀵硅薄鐨勪嬌鐢ㄥ拰瑕佺偣錛屾洿璇︾粏鐨勪粙緇嶅彲浠ュ弬鐓с奧in32澶氱嚎紼嬬▼搴忚璁°嬫垨銆奧indows鏍稿績緙栫▼銆?/a>(Jeffrey Richter)絳夈?/p>
涓夈佸綰跨▼瀹夊叏鐨勫疄鐜幫細(xì) 灝嗗鏁版嵁錛堝璞°佹ā鍨嬨佹秷鎭丼ocket錛夌殑I/O澶勭悊鏀懼湪鍚屼竴涓狪/O綰跨▼涓紝淇濊瘉濡傞槦鍒楃殑push/pop鎿嶄綔銆侀摼琛ㄧ殑insert/delete鎿嶄綔銆佹枃浠剁殑write鎿嶄綔銆乻ocket鐨剅ecv/send鎿嶄綔銆佸叏灞鍙橀噺鐨剋rite鎿嶄綔絳夌殑浜掓枼璁塊棶銆?/p>
鏂板緩鐙珛妯″潡錛屽挨鍏舵槸浣跨敤絎笁鏂瑰簱鐨勭嫭绔嬫ā鍧楋紝澶у浼?xì)鍒涘缓鐙珛鐨勬柊绾拷E嬨傛鏃跺氨闇瑕佸鏂扮嚎紼嬩腑鐨勬暟鎹搷浣滃姞浠ユ敞鎰忥紝鍙互閫氳繃瀵規(guī)搷浣滄暟鎹殑鍔犻攣璁塊棶瑙e喅鍚屾闂錛屽綋鐒?dòng)灱屾洿甯歌鐨勫鐞嗘柟寮忔槸灏嗘柊绾拷E嬩腑鐨勬暟鎹搷浣滃彂閫佸埌涓撻棬鐨処/O綰跨▼涓鐞嗐?/p>
鎬諱箣錛屽綰跨▼瀹夊叏鏄釜甯歌甯告柊鐨勮瘽棰橈紝鐜板湪鏈変漢鎻愬嚭Lock-Free鏁版嵁緇撴瀯鐨勮В鍐蟲柟妗?Maged M. Michael)錛屼篃鏈夋墍璋撶殑Wait-Free鐨勮В鍐蟲柟妗?Maurice Herlihy)錛岃屽浗鍐呯綉娓哥晫鐨勫ぇ鐗涗簯椋庡悓瀛︽洿鏄彁鍑轟簡鍗曠嚎紼嬪榪涚▼鐨勮鐐瑰拰瑙e喅鏂規(guī)錛堝洜涓轟笉浜嗚В錛屾寜瀛楅潰鏈夊彲鑳藉瓨鍦ㄦ柇绔犲彇涔変箣瀚岋級銆備絾涓嶇鎬庝箞鏍鳳紝浠庝腑鑷沖皯鍙互鐪嬪嚭錛屽綰跨▼錛岃鏉ヨ瘽闀褲?/p>
闆墮浂鏁f暎銆佷笢鎷夎タ鎵佷笉鐭ユ墍浜戠殑璁蹭簡涓浜涗笢瑗匡紝鏈繀姝g‘錛屾洿涓嶈兘褰撲綔鐭ヨ瘑銆傚叏褰撴槸瀵?a href="/Fox/archive/2008/01/02/change_mind_2008.html" target="_blank">涓婃鐨勬壙璇?/a>鏈変釜浜や唬銆?/p>
/*****************************************************************************
聽鎯蟲妸澶氱嚎紼嬬殑闂鎼炴槑鐧斤紝涓嶆槸璇寸湅鐪嬫搷浣滅郴緇熸暀鏉愶紝鍐欑偣澶氱嚎紼嬭鍐欑殑浠g爜灝卞鐨勩備笖涓嶈瀛版槸瀛伴潪錛?br />聽鍗曞氨緗戜笂璇稿楂樻墜鏂板瀵瑰姞閿佺瓥鐣ラ摵澶╃洊鍦扮殑浜夋墽璇磋緸鐢氳嚦鐩鎬簰鎵瑰垽鎸囪矗錛岃凍鍙澶氱嚎紼嬪紑鍙戝茍闈炲彧璦
聽鐗囪鍗沖彲鎸戞槑銆?br />聽涓洪槻姝㈤櫡鍏ョ粏鑺備簤璁猴紝榪欓噷鍏堜綔澹版槑錛氬皬鏂囦粎灝辨墍瀛︾暐鎶掓嫏瑙侊紝鏃犳剰寮曡搗浜夌鈥︹?br />*****************************************************************************/
]]>
鍏冩棪鏀懼亣3澶╋紝鏈潵鎯蟲妸鍓嶉潰鍐欑殑涓涓瓨鍦ㄧ嚎紼嬪畨鍏ㄩ殣鎮(zhèn)g殑妯″潡鎺ㄥ掗噸鏉ョ殑錛屽彲鏄敼鐫鏀圭潃灝辮寰椾笉瀵瑰姴浜嗐?/p>
鏃㈢劧鏄繑宸ワ紝灝辨兂灝介噺鎶婄幇鍦ㄧ殑鐞嗚В瀹屽叏鍔犺繘鍘伙紝璁╁悗闈㈢殑浜虹湅浜嗕笉瑕侀獋銆傚彲鏄兂鎶婂嚑鍗冭鐨勪唬鐮佹敼寰楅潰鐩叏闈炲茍涓旀洿鍔犲畨鍏ㄥ噯紜篃騫朵笉鏄竴浠跺鏄撶殑浜嬶紝铏界劧瀵逛簬鍔熻兘鍜岄昏緫鐨勮璇嗘瘮浠ュ墠瑕佹竻鏅扮殑澶氥?/p>
鎷垮埌涓涓柊鐨勬ā鍧楋紝涓婇潰涓鑸細(xì)緇欎釜澶ц嚧鐨刣eadline銆傞櫎闈炰綘瀵硅繖涓ā鍧楀拰鏁翠釜欏圭洰鐨勪緷璧栧叧緋伙紙鎺ュ彛銆侀昏緫銆佸姛鑳斤級鏈夊緢濂界殑鎶婃彙錛屽惁鍒欙紝浣犳牴鏈笉鐭ラ亾鍒板簳鏈夊灝戜笢瑗挎槸宸茬粡瀹炵幇鐨勶紝鏈夊灝戜笢瑗挎槸鍙互澶嶇敤鐨勶紝鏈夊灝戜笢瑗挎槸闇瑕佷慨鏀圭殑錛屾湁澶氬皯涓滆タ鏄閲嶅啓鐨勶紝鏈夊灝戜笢瑗挎槸瑕佹柊鍔犵殑錛屼粎浠呮牴鎹渶姹傞浼扮殑榪涘害鏄笉鍙兘鎭板埌濂藉鐨勩傝岃劚紱諱簡鏁翠釜欏圭洰瀹炵幇鐨勬ā鍧楁槸闈炲父鍙兘鍑洪棶棰樼殑錛屽挨鍏舵槸鍦ㄤ嬌鐢ㄥ綰跨▼鐨勯」鐩腑銆?/p>
褰撴垜鐨勮繖涓ā鍧楀畬鎴愬茍涓婇┈涔嬪悗錛屾垜娌炬簿鑷枩鐨勮窡涓婇潰璇達(dá)紝搴旇鏄笉浼?xì)鏈夐棶棰樹簡锛屼笂闈㈣窡鎴戣浜嗕竴鍙ワ細(xì)濡傛灉涓嶅嚭闂灝辨槸濂囪抗浜嗭紝鎴戝綋鏃墮涓嶄互涓虹劧銆傚湪鍚庨潰涓涓ゅ懆涔嬪唴鐪熺殑灝辨槸娌℃湁浠涔堥棶棰橈紝鎴戠湡鎯沖憡璇変粬鏄垜鍒涢犱簡濂囪抗銆?/p>
鈥滃榪光濆湪2007騫寸殑鏈鍚庝竴鍛ㄧ牬鐏簡銆傚湪鎴戜粠瑗垮箔闆北鍥炴潵鐨勯偅澶╋紝涓轟簡澧炲姞鏂板姛鑳芥妸浠g爜淇敼浜嗕竴浜涳紝緇撴灉絎簩澶╂洿鏂頒箣鍚庯紝鏈嶅姟鍣ㄥ氨鑰佹槸鏈夐棶棰橈紝鎵句簡涓涓嬪崍錛屾墠鍙戠幇鍦ㄤ慨鏀逛唬鐮佺殑鏃跺欏眳鐒跺繕璁板涓涓猵ointer鍋歂ULL鍒ゅ畾錛佹垜蹇冩兂錛岃繖縐嶉敊璇眳鐒墮兘鍑烘潵浜嗭紒姝諱簡綆椾簡錛佽屼笖榪欎釜闂鍑哄湪闈炰富綰跨▼涓傜劧鍚庡氨鍜屽悓浜嬪湪鑰冭檻錛岃繖涓笢瑗垮鏋滅嚎紼嬪悓姝ュ嚭鐜伴棶棰橈紝浣犲氨鏄瘡嬈′嬌鐢ㄥ墠閮藉仛NULL鍒ゅ畾涔熸病鐢紝鎵浠ュ氨鍐沖畾鎶婅繖涓ā鍧楅噸鍐欎簡銆?/p>
鍦ㄨ繖鍎挎垜灝變笉鎯沖氨綰跨▼瀹夊叏闂澶氳浜嗭紝浠ュ悗鎯沖ソ浜嗗啀涓撻棬鍘誨啓鐐瑰綰跨▼鐨勪笢瑗垮惂錛屼粖澶╁彧鏄兂璇寸偣鐞愮鐨勪笢瑗褲?/p>
鍥犱負(fù)鏄斁鍋囷紝蹇冩濇湭蹇呭氨鍏ㄩ儴鏀懼湪涓婇潰浜嗭紝浠g爜娌℃敼澶氬皯錛屽掓槸鐜╀簡寰堥暱鏃墮棿鐨勬父鎴忋傚悗鏉ユ兂鎯籌紝涔熶笉鍏ㄦ槸鏃墮棿闂錛屽嚑鍗冭鐨勪唬鐮佹敼鏉ユ敼鍘伙紝闅句繚涓嶅嚭鐜版洿澶氱殑闂銆傚繀欏繪妸瀹冨綋浣滀竴涓柊鐨勬ā鍧楀幓鍐欙紝鍏堣鎶婇昏緫緇撴瀯瀹屽叏鐞嗗嚭鏉ワ紝鑳藉緇嗗寲灝卞緇嗗寲錛屾渶濂借兘澶熺簿紜埌鍙橀噺鐨勪嬌鐢紝鑰屼笖鎶婃枃妗e仛緇嗭紝榪欐牱灝卞彲浠ュ湪鍐欐枃妗g殑榪囩▼涓妸闂灝藉彲鑳芥兂鍏ㄦ兂娓呮銆傛敼浠g爜鍏堟敼鏂囨。錛岃繖鍑犱箮鏄墍鏈夊榪囪蔣浠跺伐紼嬪茍鍐欒繃欏圭洰鐨勫悓瀛﹂兘鑳借璇嗗茍鐞嗚В鐨勫父璇嗭紝鍙槸鍦ㄥ疄闄呭伐浣滀腑錛屼笂鏈変換鍔″偓璧訛紝涓嬫湁闂插績鏉傚康錛屽緢闅炬妸鏂囨。鍜屾敞閲婂啓濂姐傝屽仛涓嶅埌榪欎竴鐐圭殑璇濓紝浣犲氨涓嶆暍淇濊瘉浣犵殑妯″潡涓嶅嚭宸敊銆?/p>
鎵浠ワ紝瀵逛簬涓涓竴鑸殑闇姹傦紝濡傛灉deadline鏄?涓湀鐨勮瘽銆傝闇姹傘佽瘎浼頒緷璧栧叧緋匯侀噺榪涘害瑕佽姳鎺?鍛紝鐢婚昏緫緇撴瀯銆佸啓鏂囨。瑕佽姳鎺?鍛紝鐩稿綋浜庡墠闈竴鍗婄殑鏃墮棿娌℃湁鍔ㄦ墜鍐欎唬鐮侊紝鐒跺悗鍐欎唬鐮佸ぇ姒傚彧鐢?鍛紝鐢氳嚦鏇村皯錛屽叾浠栨椂闂村氨鐣欑粰嫻嬭瘯鍜屼慨鏀規(guī)枃妗c佷唬鐮佷簡銆備粠杞歡宸ョ▼鐨勮搴︼紝榪欐牱鐨勫垎閰嶆槸鍚堢悊鐨勶紝鑰屼笖鏄簲璇ョ殑錛屼絾鍒頒簡瀹為檯欏圭洰閲岄潰錛屽張鍋氫笉鍒幫紒鐪嬫潵錛屼笉綆℃槸manager錛岃繕鏄痗oder錛岄兘涓嶈兘鎬ワ紝杞歡宸ョ▼涓嶈兘鐧藉浜嗐?/p>
鎴戝彂鐜幫紝鎴戠殑杞歡宸ョ▼灝辨槸鐧藉浜嗭紝浠ュ悗寰楁敼鏀廣?/p>
/*****************************************************************************
聽涓嶆兂鍥炲ご鍘誨姩浠ュ墠鐨勪唬鐮侊紝姣忔鐪嬩互鍓嶅啓榪囩殑涓滆タ錛岄兘鏈変竴縐嶆兂鎶婂畠褰誨簳鍒犻櫎鐨勫啿鍔ㄣ?br />聽鎶婇渶姹傜湅濂姐佹枃妗e啓濂姐佹椂闂村畨鎺掑ソ錛岃繖鎵嶆槸紜亾鐞嗏︹?/font>
聽姣曠珶鏄柊騫達(dá)紝榪樻槸紲濆ぇ瀹訛細(xì)鏂板勾蹇箰錛?br />聽閲嶈鐨勬槸錛屾柊鐨勪竴騫達(dá)紝鍒崚搴熶簡鈥︹?br />*****************************************************************************/
瀵逛簬(1+2+...+N) 鐨勬眰鍜岋紝鏈鏃╁氨鏄湅楂樻柉鐨勬晠浜嬶紝鑰屼笖璇村疄璇濓紝鎴戞槸娌℃湁榪欐牱鐨勬櫤鍟嗙殑錛?/p>
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽sum(1+2+...+N) = N*(N+1)/2
鍒氱湅浜嗕竴綃?a href="/azhisoft/archive/2007/12/19/436.html" target="_blank">鐮旂┒璇ョ駭鏁版眰鍜岀殑鏂囩珷錛岃櫧涓鴻皟渚冿紝浣嗗疄鍦ㄦ劅瑙夋枃涓喊婕忓お澶氾紝涓嶇鍦ㄦ澶氳█銆?/p>
鏂囦腑鐨勭涓縐嶆柟娉曡嚜縐版爣鍑嗭紝鑰屼笖榪樿兘浣庫滃叏鐝?/3鐨勫悓瀛﹂兘鐢ㄤ亢鐨勬爣鍑嗗簲浠樿佸笀鍜岃瘯鍗封濓紝鎴戝ぇ涓烘儕璇э細(xì)
鏄劇劧錛宲rintf鐨勭粨鏋滄槸N-1涓暟鐨勫拰錛屾澶勶紝鎴戞洿鎰挎剰鐩鎬俊鏄枃涓殑絎旇鑰屽凡銆?/p>
絎簩縐嶅拰絎笁縐嶆柟娉曡浜鴻寰楀鎬細(xì)
鍓嶉潰鐨勫啓娉曠函灞炴伓鎼烇紝^鍦–/C++涓槸寮傛垨浣嶆搷浣滐紝鐩鎬俊鎺ヨЕ榪囦綅榪愮畻鐨勪漢閮界煡閬撹繖涓鐐癸紝鑰屼笖褰揘涓哄鏁版椂錛宻um鐨勭粨鏋滃皢姣旂湡瀹炲煎皯1銆傚悗闈㈢殑鍐欐硶鏇存槸鑽掑攼錛屽綋N涓哄鏁版椂錛宻um鐨勭粨鏋滃皢姣旂湡瀹炲肩浉鍘繪洿榪滐紙鏈夊叴瓚g殑鍙互浠旂粏鐪嬬湅錛夈?/p>
瀵逛簬鍚庨潰涓ょ鍐欐硶錛屾垜鎯寵鐨勯噸鐐逛笉鏄繖浜涙槑鏄劇殑閿欒錛屽洜涓鴻繖鏍風(fēng)殑閿欒鍙彲鍗氫紬鍚涗竴絎戙備絾鏂囦腑瀹氫箟sum浣跨敤float鐨勫仛娉曪紝璁╂垜鐧炬濅笉寰楀叾瑙c傚浜庤綆楁満鐨勮繍綆楋紝嫻偣榪愮畻鐨勮楁椂鍜屾暣鍨嬭繍綆楃殑鑰楁椂錛岄偅涓嶆槸涓涓暟閲忕駭鐨勩傚浜庤綰ф暟榪愮畻錛屾垜浠畬鍏ㄥ彲浠ラ伩鍏嶆誕鐐硅繍綆楋紝鑰屼笖鏂規(guī)硶鍦ㄦ枃绔犱竴寮濮嬶紝灝卞凡緇忕粰鍑轟簡錛?/p>
鏃犺N涓哄鏁拌繕鏄伓鏁幫紝N*(N+1)涓瀹氭槸鍋舵暟錛屽洜姝わ紝涓婅堪鏂規(guī)硶涓嶅瓨鍦ㄦ誕鐐硅繍綆楋紝鑰屼笖緋葷粺浼?xì)鑷姩灏?2鐨勬搷浣滀紭鍖栦負(fù)鍙崇Щ1浣嶃?/p>
涓嶇煡鎬庝箞錛屽拷鐒跺氨鎯沖埌浜嗛掑綊錛屾兂鍒頒簡Fibonacci鏁板垪銆傝閫掑綊鐨勬暀鏉愰兘浼?xì)鎷夸笂闈㈢殑珩旀暟姹傚拰鍜孎ibonacci鏁板垪鍋氫緥瀛愩傚叾瀹烇紝鎴戜釜浜烘劅瑙夎繖鏄笉鎭板綋鐨勶紝浣嗘兂鎯充負(fù)浜嗚瀛︾敓鎺屾彙閫掑綊綆楁硶錛屼篃鍙兘涓劇被浼肩殑綆鍗曠殑渚嬪瓙銆傛垜浠篃鐭ラ亾錛岄掑綊璁$畻瀵逛簬鍫嗘爤璋冪敤鏄潪甯擱綣佽岃楁椂鐨勶紝瀵逛簬姹侶anoi濉旇繖鏍風(fēng)殑澶嶆潅闂錛屾垜涓嶇煡閬撲笉鐢ㄩ掑綊鏈夋病鏈夋洿濂界殑鏂規(guī)硶錛屼絾濡傛灉璁$畻Fibonacci鏁板垪榪樻槸浣跨敤閫掑綊錛屽湪鍒濆閫掑綊鏃舵槸鍙互鍘熻皡鐨勩傜畝鍗曠偣鐨勬柟娉曞彲浠ユ槸榪欐牱錛?/p>
涓婇潰鐨勪袱孌典唬鐮佷腑sum鍜宯Fib鐨勫間笉鑳藉お澶?)銆?/p>
甯歌█閬擄紝璦榪囧繀澶便備絾鑷涓鐐硅錛屾妸鑷繁鐨勯敊璇毚闇茬粰鍒漢錛屽彲浠ヨ鑷繁鏇村ソ鐨勮繘姝?)錛屽洜姝わ紝鎴戝啓涓嬫潵錛屾彁閱掕嚜宸變篃鎻愰啋澶у錛屾洿嬈㈣繋澶у澶氭壒璇勬寚姝c?/p>
淇楄瘽璇達(dá)紝閬撻珮涓灝猴紝欖旈珮涓涓堛?/p>
浠婂ぉ鍦ㄤ竴涓兢閲岋紝鏈変漢鎻愬埌鏌愭煇綆楁硶錛?DES錛夊彲浠ユ潨緇濆鎸傘傛垜褰撴椂蹇冮噷鑻︾瑧涓澹幫細(xì)鍝ヤ滑鍎匡紝澶椾簡銆傝繖騫村ご錛屼腑鍥戒漢宸茬粡琚拷鎮(zhèn)犳曚簡銆傛垜淇¢淇¢瓟錛屽氨鏄笉淇′經(jīng)鈥︹?/p>
涓嶈繃鎯蟲兂錛屽鏋滆兘鍦ㄤ竴瀹氱▼搴︿笂鎵撳嚮澶栨寕錛屼篃涓嶉敊錛屽彲鏄璁轟簡鍗婂ぉ錛屾劊鏄病鏈夌粰鍑哄叿浣撶殑鏂規(guī)錛屾渶鍚庤繕鏄笉浜嗕簡涔嬨?/p>
涓嶈繃錛屾湁鏃墮棿鎶婃濊礬鏁寸悊鏁寸悊錛屾彁涓涓◢寰ソ涓鐐圭殑鏂規(guī)硶涔熷ソ銆?/p>
鐜嬪煄閲岄潰錛屼竴鎺掓帓鐨勫鎸傚皬鍙峰儚闃呭叺涓鏍鳳紝鍤e紶鎴愰┈浜嗭紝瀹屽叏涓嶆妸鎴戜滑鏀懼湪鐪奸噷銆?/p>
璇濊鍥炴潵錛岃繛涓劚鏈哄鎸傞兘闃蹭笉浣忥紝鍒漢榪樼‘瀹炴病蹇呰鎶婁綘鏀懼湪鐪奸噷銆?/p>
榪欒竟Login Server鎼炰簡涓や笁涓湀鐨勯獙璇佺爜錛屾劅瑙変笉閿欙紝鍥犱負(fù)涓嶄嬌鐢ㄥ鎸傜殑鐜╁姣忔閮借鎶樿吘鍗婂ぉ錛屾垜浠嚜宸變漢鍛樿緭鍏ラ獙璇佺爜杈撶殑閮界儲(chǔ)錛岀粨鏋滄病鍑哄崐涓湀澶栨寕鍙堝紑濮嬫í琛屼簡錛屾劅瑙夋瘮浠ュ墠榪樺殻寮犮?/p>
鎴戞槸澶栨寕錛屾垜寰楁剰鐨勭瑧錛屾垜寰楁剰鐨勭瑧鈥︹?/p>
鏁㈡儏鏄槻璐兼病闃蹭綇錛屾妸璐兼墧灞嬮噷錛岃嚜宸辮閿佸湪澶栭潰浜嗭紒
/*****************************************************************************
聽 鏅氫笂鏈潵鎯寵嚜宸卞啓涓唴鎸傦紝鍙互鍋峰伔鎳掞紝鍙儨瀵硅繖涓滆タ瀹炲湪鏄粠鏉ユ病鏈夎繃鐮旂┒銆?br />聽聽鎶樿吘浜嗕竴鏅氫笂錛岄儊閮佽岀粓銆?br />聽 鎶涓嶅浜哄晩錛佹兂鏉ラ兘瑙夊緱鍙瑧鈥︹?br />*****************************************************************************/
鍦∕MORPG涓紝瀛樺湪澶ч噺鐨勬暟鎹枃浠跺拰鑴氭湰鏂囦歡錛岃繖浜涙枃浠舵秹鍙?qiáng)寰堝鍙橀噺锛屽綋鐜╁淇℃伅闇瑕佸瓨鍙栨椂錛堜笂綰褲佷笅綰褲佷繚瀛樸佹湇鍔″櫒浜や簰錛夛紝鍗充即闅忕潃澶ч噺鐨勮鍐欐搷浣溿傞殢鐫娓告垙涓父鎴忎換鍔$殑澧炲姞錛屾瘡涓涓帺瀹跺搴旂殑闇瑕佹暟鎹簱瀛樺彇鐨勮剼鏈彉閲忕殑鏁版嵁閲忎篃闅忎箣綰挎у闀匡紝闅忕潃鐜╁鏁伴噺鐨勫鍔狅紝鍦ㄦ湇鍔″櫒淇濆瓨鐜╁瑙掕壊淇℃伅鐨勬椂鍊欙紝閫氫俊閲忕殑澶у皬鏄浉褰撳彲瑙傜殑錛屼嬌鐢ㄥ綰跨▼璇誨啓錛屽彲浠ヤ嬌鏈嶅姟鍣ㄧ殑澶勭悊鑳藉姏澶у箙澧炲己錛屼絾緗戠粶鍜屾暟鎹簱鎵垮彈鐨勫帇鍔涗篃浼?xì)澶q呭鍔犮?/p>
褰撶劧鐜板湪鏈夊緢澶氱殑鑴氭湰璇█涓烘垜浠璁′換鍔$郴緇熸彁渚涗簡渚垮埄錛屽儚Lua銆丳ython銆丷uby榪欎簺鍔ㄦ佽璦鐨勫姛鑳借秺鏉ヨ秺寮猴紝鑰屼笖鍙互鑲畾鐨勬槸錛屼細(xì)鏈夎秺鏉ヨ秺澶氱殑浜у搧閲囩敤榪欎簺浼樼鐨勮璦銆備絾鎴戜粖澶╄璋堢殑涓嶆槸濡備綍浣跨敤鍔ㄦ佽璦錛屼篃涓嶆槸璁ㄨ鍔ㄦ佽璦瀛頒紭瀛板姡鐨勯棶棰橈紝鑰屾槸瀵逛簬澶ч噺鐨勮剼鏈彉閲忕殑瀛樺彇浼樺寲銆傝鐧戒簡錛岃繖瀵逛簬浣跨敤鑷畾涔夎剼鏈璦鐨勬父鎴忓紑鍙戜漢鍛樻墠鏇存湁鍙傝冧環(huán)鍊箋傝屼笖鎴戣璇寸殑闂寰堝皬錛屽皬鍒版垜鍙槸璁蹭竴鐐圭偣鍐呭錛屽彧鏄垜浠婂ぉ涓嬪崍鐨勪竴鐐規(guī)椿錛屾葷粨涓嬫潵鏇村鍙槸涓轟簡璁╄嚜宸辮浣忥紝騫朵笉鏄暀鑲插埆浜恒?/p>
鍋囪鍦ㄦ暣涓剼鏈郴緇熶腑錛屽瓨鍦?00涓笌鐜╁鐩稿叧鑰屼笖闇瑕佹暟鎹簱瀛樺彇鐨勮剼鏈彉閲忥紝濡傛灉涓涓父鎴忎笘鐣屼腑鎷ユ湁3000涓湪綰跨帺瀹訛紝騫沖潎姣忎釜鐜╁鐨勮剼鏈彉閲忓ぇ灝忎負(fù)10KB錛屽鏋滄湇鍔″櫒鍚屾椂淇濆瓨榪?000涓帺瀹剁殑鏁版嵁錛堥偅鍙笉浠呬粎鏄剼鏈彉閲忥紝褰撶劧鑴氭湰鍙橀噺鎵鍗犵殑鍒嗛噺姣旇緝澶у氨鏄簡錛夛紝3000脳10KB錛屽摝鈥︹︿笌姝ゅ悓鏃訛紝鏈嶅姟鍣ㄨ繕瑕佽繘琛屽叾瀹炴甯哥殑緗戠粶閫氫俊鍜岄昏緫澶勭悊錛堣櫧鐒朵笉鍙兘鏄悓涓涓嚎紼嬶級錛屼絾鏈嶅姟鍣ㄦ壙鍙楃殑鍘嬪姏宸茬粡涓嶅皬浜嗗惂錛屼負(fù)浜嗗噺灝戣繖縐嶅帇鍔涳紝鑴氭湰鍙橀噺鎴愪負(fù)浜嗕竴縐嶇█緙鴻祫婧愩?br />涓轟簡瀵硅剼鏈彉閲忕殑瀛樺彇榪涜浼樺寲錛屾垜鎯沖埌浜嗕竴涓渶瀹規(guī)槗瀹炵幇鐨勬柟娉曘傞氳繃瀵規(guī)暟鎹簱鐨勮瀵燂紙鍏跺疄鎯充篃鎯充篃鎯沖緱鍒?)錛夛紝鎴戝彂鐜扮帺瀹舵暟鎹腑澶ч噺鐨勮剼鏈彉閲忕殑鍊奸兘鏄?鎴栬呯┖瀛楃涓詫紝榪欏氨涓轟紭鍖栨彁渚涗簡寰堝ぇ鐨勪竴涓┖闂淬?/p>
鏈嶅姟鍣ㄤ竴鑸兘淇濆瓨鏈変竴涓剼鏈彉閲忕殑閰嶇疆鏂囦歡錛屽湪榪欎釜鏂囦歡涓垪鍑轟簡鎵鏈夌殑鑴氭湰鍙橀噺鍙?qiáng)鍏堕粯璁ゅ箋傚綋鐜╁鐧誨綍鏃訛紝鏈嶅姟鍣ㄥ皢涓哄叾渚濇嵁榪欎釜鏂囦歡涓哄叾寤虹珛涓浠芥嫹璐濓紝騫朵粠鏁版嵁搴撹鍙栬繖浜涘彉閲忕殑鐪熷疄鍊煎~鍏呬箣銆傚洜涓哄ぇ閲忕殑鍙橀噺鍊奸兘鏄粯璁ゅ鹼紝鎵浠ュ湪寰鏁版嵁搴撲繚瀛樼殑鏃跺欙紝鏄病鏈夊繀瑕佸叏閮ㄤ繚瀛樼殑錛岃屽彧闇淇濆瓨閭d簺涓嶅悓浜庨粯璁ゅ肩殑鍙橀噺鍚嶅拰鍙橀噺鍊間互鍙?qiáng)璇ュ彉閲忓搴旂殑涓嬫爣鍗冲彲銆備笅涓嬈′粠鏁版嵁搴撹鍏ョ殑鏃跺欐牴鎹笅鏍囩‘瀹氬摢浜涘彉閲忓奸渶瑕佷粠鏁版嵁搴撲腑璇誨彇灝卞彲浠ヤ簡銆?/p>
寰堢畝鍗曠殑涓涓搷浣滐紝铏界劧鍋氬埌浜嗚繖涓鐐逛紭鍖栵紝浣嗘槸瀵逛簬500涓彉閲忕殑綰挎ц鍙栧拰鍏朵粬鎿嶄綔錛屼緷鐒朵笉鏄竴涓ソ鐨勫鐞嗘柟娉曘?/p>
鍑犵偣鏀硅繘鐨勬柟鍚戯紝鐩墠鍙槸鏈変釜鎯蟲硶錛?/p>
1銆佸皢鐜╁涓庡叾鑴氭湰鍙橀噺瑙h?/p>
騫朵笉鏄墍鏈夌殑鐜╁閮介渶瑕?00涓剼鏈彉閲忕殑錛屼笉鍚岀瓑綰х殑鐜╁鍙互鍙備笌鐨勪換鍔″拰媧誨姩鏄畬鍏ㄤ笉鍚岀殑錛屾垜浠樉鐒舵病鏈夊繀瑕佷負(fù)姣忎竴涓帺瀹朵粠鐢熷埌姝婚兘淇濇寔榪?00涓彉閲忋傝繖鏍瘋(gè)冭檻涓嬫潵錛屼及璁′竴涓帺瀹剁殑鑴氭湰鍙橀噺鏁板彲浠ュ噺灝?00-400涓紝浠庤屽疄鐜頒簡鈥滃瀮鍦鋸濆洖鏀跺啀鍒╃敤銆侽MG錛?/p>
鎯蟲硶鏄潪甯稿叿鏈夎鎯戝姏鐨勶紝浣嗚繖涓浼樺寲鍚屾椂娑夊強(qiáng)鍒拌剼鏈瓥鍒掑拰紼嬪簭錛岃屼笖紼嶆湁涓嶆厧錛堝鏌愪竴鍙橀噺閲嶅浣跨敤錛夛紝鍏ㄧ洏鐨嗚緭錛屽湪鈥滅ǔ瀹氬帇鍊掍竴鍒団濈殑澶ф柟閽堜笅錛岃繖鏍風(fēng)殑浼樺寲闇瑕佺粰鍑轟竴涓郴緇熺殑絳栫暐錛岀帺瀹剁瓑綰с佽亴涓氬洜绱犵殑褰卞搷閮借鑰冭檻榪涘幓銆?/p>
2銆佸鐜╁鑴氭湰鍙橀噺瀹炵幇鍘嬬緝瀛樺偍
鏈粡鍘嬬緝鐨勮剼鏈彉閲忥紝姣忎釜澶ф鏈夊嚑鍗丅ytes錛屽鏋滈噰鐢ㄤ竴涓ソ鐨勫帇緙╃畻娉曪紝鑳戒笉鑳藉噺灝戝埌10Bytes鍛紵浠涔堝張鏄竴涓ソ鐨勫帇緙╃畻娉曞憿錛熷帇緙╄В鍘嬬緝鐨勬垚鏈拰鐩存帴瀛樺彇鎴愭湰姣旇搗鏉ュ摢涓洿楂樺憿錛熸兂鎯寵繖浜涚殑紜篃閮芥槸闂鍛€?/p>
/*****************************************************************************
聽 榪欏彧鏄垜宸ヤ綔涓殑涓涓葷粨錛岄棶棰樺緢綆鍗曪紝涔熷緢鐞愮錛屾濡傛垜鍓嶉潰鎵鎻愮殑錛屼粎浠呮槸鎻愪緵涓涓弬鑰冦?br />*****************************************************************************/
涓銆佹父鎴忎笘鐣岀殑鍒掑垎
鐞嗘兂鐘舵佺殑娓告垙涓栫晫浠呯敱涓涓畬鏁寸殑鍦烘櫙緇勬垚錛屽湪銆婇瓟鍏戒簤闇?/span> III 銆嬨併?/span> CS 銆嬭繖鏍風(fēng)殑鍗曟満娓告垙涓紝鎵鏈夌帺瀹朵綅浜庤鍦烘櫙涓紝鍦ㄧ悊璁轟笂錛屼綅浜庤鍦烘櫙涓殑浠繪剰鐜╁閮藉彲浠ョ湅鍒版父鎴忎腑鎵鏈夌帺瀹跺茍涓庝箣浜や簰錛屽嚭浜庡叕騫蟲у拰娓告垙鎬э紙鑰屼笉鏄妧鏈笂錛夌殑鑰冭檻錛屾父鎴忎腑騫朵笉浼?xì)杩欐牱鍋氥?/span>
鐒惰岋紝鐩墠鐨?/span> MMORPG 涓紝鍑犱箮娌℃湁浠諱綍涓嬈懼彲浠ュ仛鍒版暣涓父鎴忎笘鐣屽彧鍖呭惈涓涓満鏅紝鍥犱負(fù)鍦ㄤ竴嬈?/span> MMORPG 涓紝鍚屾椂鍦ㄧ嚎鐨勭帺瀹舵暟閲忔垚鐧句笂鍗冿紝鐢氳嚦鏄暟涓囦漢鍚屾椂鍦ㄤ竴涓父鎴忎笘鐣屼腑浜や簰銆備互鐜板湪鐨勭綉緇滄妧鏈拰璁$畻鏈虹郴緇燂紝榪樻棤娉曚負(fù)榪欎箞澶氱帺瀹剁殑浜や簰鎻愪緵鍗蟲椂澶勭悊銆傚洜姝わ紝 MMORPG 鐨勬父鎴忎笘鐣岃鍒掑垎涓哄ぇ灝忎笉絳夈佹暟閲忎紬澶氱殑鍦烘櫙錛屾父鎴忔湇鍔″櫒瀵逛簬榪欎簺鍦烘櫙鐨勫鐞嗗垎涓哄垎鍖哄拰鏃犵紳涓ょ銆?/span>
鍦ㄥ垎鍖哄紡鏈嶅姟鍣ㄤ腑錛屼竴涓満鏅腑鐨勭帺瀹舵棤娉曠湅鍒板彟涓涓満鏅腑鐨勭帺瀹訛紝褰撶帺瀹朵粠涓涓満鏅埌鍙﹀涓涓満鏅法瓚婃椂錛岄兘鏈変竴涓暟鎹漿縐誨拰鍔犺澆鐨勮繃紼嬶紙灝ゅ叾鏄粠涓涓垎鍖烘湇鍔″櫒璺ㄨ秺鍒板彟澶栦竴涓湇鍔″櫒鏃訛級錛岀帺瀹墮兘鏈変竴涓瓑寰呯殑鏃墮棿錛屽湪榪欐鏃墮棿鍐咃紝鏈嶅姟鍣ㄧ殑涓昏宸ヤ綔鏄疄鐜拌法瓚婄帺瀹舵暟鎹殑杞Щ鍜屽姞杞戒互鍙?qiáng)鍚庝竴涓満鏅腑鐜╁銆?/span> NPC 絳夋暟鎹殑浼犺緭錛屽鎴風(fēng)鐨勪富瑕佸伐浣滄槸瀹炵幇鏂板満鏅祫婧愮殑鍔犺澆鍜屾湇鍔″櫒閫氫俊銆備富瑕佹椂闂寸殑闀跨煭涓昏鍙栧喅浜庡悗涓涓満鏅腑璧勬簮鏁版嵁鐨勫ぇ灝忋傚垎鍖哄紡鏈嶅姟鍣ㄧ殑浼樼偣涓昏鏄悇鍒嗗尯鏈嶅姟鍣ㄤ繚鎸佺浉瀵圭嫭绔嬶紝緙虹偣鏄父鎴忕┖闂翠笉澶熷ぇ錛岃屼笖錛屼竴鏃︽煇涓垎鍖烘湇鍔″櫒涓鏈嶅姟錛屼綅浜庤鏈嶅姟鍣ㄤ笂鐨勬墍鏈夌帺瀹跺皢澶卞幓榪炴帴銆?/span>
鎵璋撴棤緙濇湇鍔″櫒錛岀帺瀹跺嚑涔庡療瑙変笉鍒板満鏅箣闂寸殑榪欑鍒囨崲錛屽湪鍦烘櫙闂存病鏈夌墿鐞嗕笂鐨勫睆闅滐紝瀵逛簬鐜╁鑰岃█錛屼紬澶氬満鏅瀯鎴愪簡涓涓法澶х殑娓告垙涓栫晫銆傚満鏅箣闂達(dá)紝鐢氳嚦鏈嶅姟鍣ㄤ箣闂粹滄病鏈変簡鈥濇槑紜殑鐣岀嚎銆傚洜姝わ紝鏃犵紳鏈嶅姟鍣ㄤ負(fù)鐜╁鎻愪緵浜嗘洿澶х殑娓告垙絀洪棿鍜屾洿鍙嬪ソ鐨勪氦浜掞紝瀹炵幇浜嗗姩鎬佽竟鐣岀殑鏃犵紳鏈嶅姟鍣ㄧ敋鑷沖彲浠ュ湪鏌愪釜鏈嶅姟鍣ㄤ腑姝㈡湇鍔℃椂錛屾寜涓瀹氱瓥鐣ュ皢璐熻澆鍔ㄦ佸垎鏁e埌鍏朵粬鏈嶅姟鍣ㄣ傚洜姝わ紝鏃犵紳鏈嶅姟鍣ㄥ湪鎶鏈笂瑕佹瘮鍒嗗尯鏈嶅姟鍣ㄦ洿鍔犲鏉傘?/span>
鐩墠鍥藉唴涓婂競鐨?/span> MMORPG 錛屽ぇ澶氶噰鐢ㄥ垎鍖哄紡鏈嶅姟鍣紝鍋氬埌鏃犵紳涓栫晫鐨勪富瑕佹湁銆婂畬緹庝笘鐣屻嬪拰銆婂ぉ涓嬭窗銆嬬瓑錛屽浗澶栫殑 MMORPG 涓紝鍍忋婇瓟鍏戒笘鐣屻嬨併?/span> EVE 銆嬬瓑錛岄兘瀹炵幇浜嗘棤緙濅笘鐣屻?/span>
鏃犵紳鏈嶅姟鍣ㄤ笌鍒嗗尯寮忔湇鍔″櫒鍦ㄦ妧鏈笂鐨勪富瑕佸尯鍒槸錛屽綋浣嶄簬鍦烘櫙 S1 涓殑鐜╁ P1 澶勪簬涓や釜錛堢敋鑷蟲洿澶氾級鍦烘櫙 S1 銆?/span> S2 鐨勮竟鐣屽尯鍩熷唴鏃訛紝瑕佷繚璇?/span> P1 鑳藉鐪嬪埌鍦烘櫙 S2 涓緩絳戙佺帺瀹躲?/span> NPC 絳夊彲鎰熺煡瀵硅薄銆傝屼笖杈圭晫鍖哄煙鐨勫ぇ灝忚澶т簬絳変簬 P1 鍙劅鐭ョ殑鑼冨洿錛屽惁鍒欏氨鍙兘鍙戠敓 S2 涓殑鍙劅鐭ュ璞$獊鐒墮棯鐜板湪 P1 瑙嗛噹涓殑寮傚父銆?/span>
鏃犵枒錛屾棤緙濅笘鐣屼負(fù)鐜╁鎻愪緵浜嗘洿浜烘у寲鍜屾洿鍏烽瓍鍔涚殑鐢ㄦ埛浣撻獙銆?/span>
浜屻佹棤緙濅笘鐣屾父鎴忔湇鍔″櫒鐨勬暣浣撴灦鏋?/span>
MMORPG 鐨勬湇鍔″櫒鏋舵瀯浠庡姛鑳戒笂涓昏鍒掑垎涓轟笁縐嶏細(xì)
1銆?/span> 鐧誨綍鏈嶅姟鍣紙 Login Server 錛?/span>
鐧誨綍鏈嶅姟鍣ㄧ敤浜庣帺瀹墮獙璇佺櫥褰曪紝騫舵牴鎹郴緇熻褰曠帺瀹朵俊鎭緱鍒板叾鎵鍦ㄨ妭鐐規(guī)湇鍔″櫒錛屽茍閫氳繃涓栫晫鏈嶅姟鍣ㄤ負(fù)鐧誨綍鐜╁鍜屽搴旇妭鐐規(guī)湇鍔″櫒寤虹珛榪炴帴銆?/span>
2銆?/span> 涓栫晫鏈嶅姟鍣紙 World Server 錛?/span>
涓栫晫鏈嶅姟鍣ㄥ皢鏁翠釜娓告垙涓栫晫鍒掑垎鎴愪笉鍚屽満鏅紝灝嗘墍鏈夊満鏅寜涓瀹氱瓥鐣ュ垎閰嶇粰鑺傜偣鏈嶅姟鍣紝騫跺鑺傜偣鏈嶅姟鍣ㄨ繘琛岀鐞嗐備笘鐣屾湇鍔″櫒鐨勫彟涓鍔熻兘鏄笌鐧誨綍鏈嶅姟鍣ㄤ氦浜掋傚洜姝わ紝涓栫晫鏈嶅姟鍣ㄦ槸鐧誨綍鏈嶅姟鍣ㄣ佽妭鐐規(guī)湇鍔″櫒鐨勬矡閫氭ˉ姊侊紝褰撶劧錛屼竴鏃︾帺瀹剁櫥褰曟垚鍔燂紝涓栫晫鏈嶅姟鍣ㄥ皢涓昏澶勭悊鑺傜偣鏈嶅姟鍣ㄩ棿鐨勯氫俊銆傚洜姝わ紝涓栫晫鏈嶅姟鍣ㄥ浜庣帺瀹舵槸閫忔槑鐨勩?/span>
3銆?/span> 鑺傜偣鏈嶅姟鍣紙 Node Server 錛?/span>
鑺傜偣鏈嶅姟鍣ㄨ礋璐g鐞嗕綅浜庤鑺傜偣鐨勬墍鏈夌帺瀹躲?/span> NPC 鐨勬墍鏈変氦浜掞紝鍦ㄦ棤緙濅笘鐣屾父鎴忎腑錛岀敱浜庤竟鐣屽尯鍩熺殑瀛樺湪錛屼竴涓妭鐐規(guī)湇鍔″櫒鐢氳嚦瑕佸鐞嗙浉閭昏妭鐐逛笂浣嶄簬杈圭晫鍖哄煙鐨勭帺瀹跺拰 NPC 鐨勪俊鎭?/span>
鍦ㄥ叿浣撳疄鐜頒笂錛屼笉鍚岀殑 MMORPG 涓轟簡渚夸簬綆$悊錛屽彲鑳借繕浼?xì)鍏锋?/span> AI 鏈嶅姟鍣ㄣ佹棩蹇楁湇鍔″櫒銆佹暟鎹簱緙撳瓨鏈嶅姟鍣ㄣ佷唬鐞嗘湇鍔″櫒絳夈?/span>
涓夈?/span> 鏃犵紳涓栫晫娓告垙鏈嶅姟鍣ㄧ殑涓昏鎶鏈渶姹?/span>
1銆?/span> 緙栫▼璇█錛?/span> C/C++ 銆?/span> SQL 銆?/span> Lua 銆?/span> Python 錛?/span>
2銆?/span> 鍥懼艦搴擄紙 Direct 3D 銆?/span> OpenGL 錛?/span>
3銆?/span> 緗戠粶閫氫俊錛?/span> WinSock 銆?/span> BSD Socket 錛屾垨鑰?/span> ACE 錛?/span>
4銆?/span> 娑堟伅銆佷簨浠躲佸綰跨▼銆?/span> GUI
5銆?/span> OS
涓夈佹棤緙濅笘鐣屾父鎴忔湇鍔″櫒闇瑕佽В鍐崇殑涓昏闂
1銆?/span> 璧勬簮綆$悊
鏃犺鏄湇鍔″櫒榪樻槸瀹㈡埛绔紝閮芥秹鍙?qiáng)鍒板ぇ閲忚祫婧愬Q氱帺瀹舵暟鎹?/span> NPC 鏁版嵁銆佹垬鏂楀叕寮忋佹ā鍨嬭祫婧愩侀氫俊璧勬簮絳夈傚綋榪欎簺璧勬簮杈懼埌涓瀹氳妯★紝鍏剁鐞嗙殑闅懼害涓嶅彲蹇借銆傝屼笖錛岃祫婧愮鐞嗙殑濂藉潖錛岀洿鎺ュ叧緋誨埌娓告垙鐨勫畨鍏ㄥ拰鐢熷懡銆?/span>
2銆?/span> 緗戠粶瀹夊叏
瀹夊叏姘歌繙鏄涓浣嶇殑錛屾垜浠棤娉曟寚鏈涙墍鏈夌殑鐜╁鍙?qiáng)鍏舵墍鎸佺殑瀹㈡埛绔案榪滄槸鍙嬪ソ鐨勩備簨瀹炰笂錛屽▉鑳佸埌娓告垙鐨勫叕騫蟲у拰瀹夊叏鎬х殑澶у鏁伴棶棰橈紝褰掓牴緇撳簳錛岄兘鏄敱浜庣綉緇滈氫俊涓瓨鍦ㄧ殑嬈洪獥鍜屾敾鍑婚犳垚鐨勶紝榪欎簺闂鍖呭惈浣嗕笉闄愪簬浜ゆ槗嬈洪獥銆佺墿鍝佸鍒躲?/span>
3銆?/span> 閫昏緫瀹夊叏
閫昏緫瀹夊叏鎸夌悊璇村簲璇ユ槸娓告垙涓渶鍩烘湰鐨勮冭檻錛岃鐩栫殑鑼冨洿涔熸渶騫挎渶鏉傘傞殢鏈烘暟緋葷粺鏄竴涓潪甯稿煎緱閲嶈鐨勯棶棰橈紝闅忔満鏁頒笉浠呬粎鐢ㄤ簬鐜╁鍙鐨勪竴浜涗換鍔$郴緇熴佹垬鏂楀叕寮忋佷漢宸ユ櫤鑳姐佺墿鍝佸緱澶辯瓑錛岃繕鍙敤浜庣綉緇滄姤鏂囧姞瀵嗙瓑銆傚洜姝わ紝闅忔満鏁扮郴緇熸湰韜殑瀹夊叏涓嶅蹇借銆傚彟澶栦竴涓父瑙佺殑閫昏緫瀹夊叏鏄帺瀹剁殑縐誨姩錛屾渶涓昏鐨勫氨鏄槻姝㈠姞閫熼嬌杞繖鏍風(fēng)殑鍙樻佹搷浣溿?/span>
4銆?/span> 璐熻澆鍧囪
MMORPG 涓殑璐熻澆鍧囪 鍖呮嫭瀹㈡埛绔強(qiáng)鏈嶅姟鍣ㄨ祫婧愮鐞嗗拰閫昏緫澶勭悊鐨勮礋杞藉潎琛★紝鍏朵腑鏈闅鵑鐭ョ殑鏄綉緇滈氫俊鐨勮礋杞藉潎琛★紝姝e父鎯呭喌涓嬬殑緗戠粶閫氫俊鏁伴噺鏄彲浠ュ湪娓告垙璁捐鏃跺仛鍑鴻瘎浼扮殑錛屼絾鍥犳伓鎰忔敾鍑婚犳垚鐨勭綉緇滆礋杞芥槸鏃犳硶棰勬祴鐨勩傚洜姝わ紝璐熻澆鍧囪 鎵瑕佸鐞嗙殑涓昏鏄疄鏃跺姩鎬佽礋杞藉潎琛″拰鐏鵑毦鎭㈠銆傝礋杞藉潎琛¢渶瑕佽В鍐崇殑闂鍖呮嫭璐熻澆鐩戞帶銆佽礋杞藉垎鏋愩佽礋杞藉垎鍙戝拰鐏鵑毦鎭㈠銆?/span>
5銆?/span> 褰曞儚緋葷粺
褰曞儚緋葷粺鐨勬瀯寤猴紝涓昏鐢ㄤ簬閲嶇幇鍏抽敭鏁版嵁鐨勮緭鍏ヨ緭鍑猴紝濡傜帺瀹朵氦鏄撱佺帺瀹跺厖鍊鹼紝鎴栬呭綋 bug 鍑虹幇鍚庯紝涓洪昏緫鏈嶅姟鍣紙娉涙寚涓婃枃鎻愬埌鐨勬墍鏈夌被鍨嬫湇鍔″櫒錛屼富瑕佹槸鑺傜偣鏈嶅姟鍣級鐩稿簲閮ㄥ垎鍚姩褰曞儚緋葷粺銆傚緟鏀墮泦鍒拌凍澶熸暟鎹悗錛岄氳繃褰曞儚緋葷粺閲嶇幇 bug 銆備負(fù)浜嗕嬌閫昏緫鏈嶅姟鍣ㄤ笉鍙楄嚜韜椂闂達(dá)紙濡備腑鏂皟璇曠瓑錛夌殑褰卞搷錛岃繕鍙互涓撻棬璁捐蹇冭煩鏈嶅姟鍣ㄦ潵鎺у埗鏁版嵁浼犺緭銆?/span>
鍥涖佹葷粨
鍦?/span>
MMORPG
涓紝鐪熸鐨?/span>
bug
姘歌繙瀛樺湪浜庡皢鏉ャ備粠榪欎竴鐐瑰嚭鍙戯紝鍏充簬
MMORPG
涓父鎴忎笘鐣岀殑鏋勫緩錛屾庢牱鑻涘埢鐨勬濊冮兘涓嶄負(fù)榪囥?br />
鍙傝冭祫鏂欙細(xì)
1銆?[緹嶿 Kim Pallister緙? 瀛熷姝?絳夎瘧. 娓告垙緙栫▼綺劇補(bǔ)5, P467-474, P516. 浜烘皯閭數(shù)鍑虹増紺? 2007騫?鏈? 鍖椾含.
2銆?[緹嶿 Thor Alexander緙? 鍙叉檽鏄?璇? 澶у瀷澶氫漢鍦ㄧ嚎娓告垙寮鍙? P174-185. 浜烘皯閭數(shù)鍑虹増紺? 2006騫?2鏈? 鍖椾含.
3銆?[緹嶿 Dante Treglia緙? 寮犵 璇? 娓告垙緙栫▼綺劇補(bǔ)3, P117-122. 浜烘皯閭數(shù)鍑虹増紺? 2003騫?鏈? 鍖椾含.
4銆?[緹嶿 Mark DeLoura緙? 鐜嬫窇紺?絳夎瘧. 娓告垙緙栫▼綺劇補(bǔ)1, P90-93. 浜烘皯閭數(shù)鍑虹増紺? 2004騫?0鏈? 鍖椾含.
5銆?[緹嶿 Douglas 絳夎憲, 鏂兼槬鏅?璇? C++緗戠粶緙栫▼ 鍗?. 涓浗鐢?shù)鍔涘嚭鐗埥C? 2004騫?1鏈? 鍖椾含.
6銆?[緹嶿 Stephen D. Huston 絳夎憲, 椹淮杈?璇? ACE紼嬪簭鍛樻寚鍗? 涓浗鐢?shù)鍔涘嚭鐗埥C? 2004騫?1鏈? 鍖椾含.
7銆?[緹嶿 Erich Gamma絳夎憲, 鏉庤嫳鍐?絳夎瘧. 璁捐妯″紡. 鏈烘宸ヤ笟鍑虹増紺? 2000騫?鏈? 鍖椾含.
8銆?娓告垙寮曟搸鍏ㄥ墫鏋? http://bbs.gameres.com/showthread.asp?threadid=101293.
9銆?鏈嶅姟鍣ㄧ粨鏋勬帰璁細(xì)鐧誨綍鏈嶇殑璐熻澆鍧囪 . http://gamedev.csdn.net/page/351491d0-05ad-48a4-85e1-77870bc1eef3.
10銆佹湇鍔″櫒緇撴瀯鎺㈣錛氭渶緇堢殑緇撴瀯. http://gamedev.csdn.net/page/28695655-974c-4291-8ac4-2589c4e770d3.
11銆佽皥璋堢綉緇滄父鎴忔湇鍔″櫒瑙e喅鏂規(guī). http://www.beareyes.com.cn/2/lib/200411/08/20041108102.htm.
12銆佽礋杞藉潎琛♀斺斿ぇ鍨嬪湪綰跨郴緇熷疄鐜扮殑鍏抽敭(涓嬬瘒)錛堟湇鍔″櫒闆嗙兢鏋舵瀯鐨勮璁′笌閫夋嫨錛? http://blog.csdn.net/sodme/archive/2005/06/15/394576.aspx.
13銆佷簯椋庣殑BLOG. http://blog.codingnow.com/