锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 娓告垙鐨勬妧鑳借璁℃槸澧炲姞娓告垙鍙帺鎬х殑閲嶈鏂瑰紡涔嬩竴銆?br />铏界劧鍦ㄥ疄闄呭伐浣滀腑錛屽ぇ澶氶亣鍒扮殑鎯呭喌搴旇鏄▼搴忔棤娉曞疄鐜版垨鑰呮槸鍥犳晥鐜囦笉澶熻屾斁寮冦備絾鍦ㄤ竴浜涚綉娓鎬互鍙婂崟鏈烘父鎴忎腑錛屾妧鑳芥灟鐕ョ殑鐜拌薄涔熷薄瑙佷笉椴溿?br />鏈枃鍊熼壌浜嶥OTA鐨勬妧鑳借璁¤璧鳳紝鎺㈣娓告垙涓妧鑳借璁$殑鎬濊礬涓庢柟鍚戙?br />鎶鑳藉彲浠ユ殏鏃舵垨鑰呮案榪滄敼鍙樻父鎴忎腑鍚勭鍏冪礌鏁板箋?br />榪欎簺鍏冪礌鍑犱箮灝辨槸鏋勬垚娓告垙鎴栬呰鑹茬殑鍩烘湰鍏冪礌姣斿HP.MP.鍔涢噺銆佹晱鎹楓佹櫤鍔涖佽漿韜熷害銆佺Щ鍔ㄩ熷害銆佽閲庛佺鎾炰綋縐佸ぉ姘斻佸湴褰€佺瓑絳夈?br />鑰屾墍璋撶殑鎶鑳藉氨鏄彲璁╃帺瀹朵嬌鐢ㄤ箣鍚庣煭鏆傛垨鑰呮案涔呮敼鍙樿繖浜涘厓绱犵殑涓滆タ銆?br />鎶鑳借璁$殑瓚e懗鎬т篃灝卞湪姝ゃ?br />涓涓妧鑳芥墍璁懼畾鐨勫厓绱犲彲浠ョ洿鎺ュ獎鍝嶇帺瀹剁殑蹇冩併佹垨鑰呰鏄嬌鐢ㄨ繖涓妧鑳界殑縐瀬鎬с?br />濡傛灉娓告垙涓嚭鐜板嚑涓佺洿鍒拌嫢騫蹭釜鏃犳硶寮曡搗鐜╁縐瀬鎬х殑鎶鑳界殑璇濓紝閭d箞灝變細褰卞搷鐜╁瀵規暣浣撴父鎴忕殑縐瀬鎬с?br />鑰屽綋鎴戜滑璁捐鎶鑳界殑鏃跺欙紝灝辮浠庤繋鍚堢帺瀹剁殑蹇冩佸叆鎵嬫潵璁捐娓告垙涓殑鎶鑳姐?br />涓嬮潰鍙槸鏁村悎鍑烘垜鏆傛椂鎵鑳芥兂鍒扮殑鍏冪礌錛屾帓鍚嶄笉鍒嗕紭鍏堢▼搴︺?br /> 鎴戜滑鐪嬩竴涓疄渚嬶細
鍏徃鍑嗗鍚姩鐨勪竴涓墜娓擱」鐩紝鏈嶅姟鍣ㄧ鍑嗗浣跨敤緗戞槗鐨勫紑婧愭鏋秔omelo銆俻omelo鏄熀浜嶯ode.js鐨勯珮鎬ц兘,鍒嗗竷寮忔父鎴忔湇鍔″櫒妗嗘灦銆傚畠鍖呮嫭鍩虹鐨勫紑鍙戞鏋跺拰鐩稿叧鐨勬墿灞曠粍浠訛紙搴撳拰宸ュ叿鍖咃級錛屽彲浠ュ府鍔╀綘鐪佸幓娓告垙寮鍙戞灟鐕ヤ腑鐨勯噸澶嶅姵鍔ㄥ拰搴曞眰閫昏緫鐨勫紑鍙戙?pomelo涓嶄絾閫傜敤浜庢父鎴忔湇鍔″櫒寮鍙戯紝 涔熷彲鐢ㄤ簬寮鍙戦珮瀹炴椂web搴旂敤錛屽畠鐨勫垎甯冨紡鏋舵瀯鍙互浣縫omelo姣旀櫘閫氱殑瀹炴椂web妗嗘灦鎵╁睍鎬ф洿濂姐?br />
緗戞槗鐨勬灦鏋勫笀浠夋嫨浜唍ode.js浣滀負鏈嶅姟鍣ㄧ鏋舵瀯鐨勬牳蹇冿紝璇存槑浜哊ode.js浣滀負鍚庣鐨凧avascript榪愯鐜涓瀹氭湁瀹冭嚜宸辯殑浼樿秺鎬с?br />
鎻愬埌Javascript錛屽ぇ瀹墮鍏堟兂鍒扮殑鏄棩甯鎬嬌鐢ㄧ殑嫻忚鍣紝鐜頒唬嫻忚鍣ㄥ寘鍚簡鍚勭緇勪歡錛屽寘鎷覆鏌撳紩鎿庛丣avascript寮曟搸絳夛紝鍏朵腑Javascript寮曟搸璐熻矗瑙i噴鎵ц緗戦〉涓殑Javascript浠g爜銆備綔涓篧eb鍓嶇鏈閲嶈鐨勮璦涔嬩竴錛孞avascript涓鐩存槸鍓嶇宸ョ▼甯堢殑涓撳埄銆備笉榪囷紝Node.js鏄竴涓悗绔殑Javascript榪愯鐜錛堟敮鎸佺殑緋葷粺鍖呮嫭Lnux銆乄indows銆丮ac錛夛紝榪欐剰鍛崇潃浣犲彲浠ョ紪鍐欑郴緇熺駭鎴栬呮湇鍔″櫒绔殑Javascript浠g爜錛屼氦緇橬ode.js鏉ヨВ閲婃墽琛屻?br />
Node.js鏀寔鐨勮璦鏄疛avaScrpit錛屼箣鎵浠ラ夋嫨JavaScrpit浣滀負鏈嶅姟鍣ㄧ榪愯璇█鐞嗙敱濡備笅錛?br />
1.Javascript浣滀負鍓嶇宸ョ▼甯堢殑涓誨姏璇█錛屽湪鎶鏈ぞ鍖轟腑鏈夌浉褰撶殑鍙峰彫鍔涖傝屼笖錛岄殢鐫Web鎶鏈殑涓嶆柇鍙戝睍錛岀壒鍒槸鍓嶇鐨勯噸瑕佹у鍔狅紝涓嶅皯鍓嶇宸ョ▼甯堝紑濮嬭瘯姘?#8221;鍚庡彴搴旂敤“錛屽湪璁稿閲囩敤Node.js鐨勪紒涓氫腑錛屽伐紼嬪笀閮借〃紺哄洜涓轟範鎯簡Javascript錛屾墍浠ラ夋嫨Node.js銆?br />
2.Javascript鐨勫尶鍚嶅嚱鏁板拰闂寘鐗規ч潪甯擱傚悎浜嬩歡椹卞姩銆佸紓姝ョ紪紼嬶紝浠巋elloworld渚嬪瓙涓垜浠彲浠ョ湅鍒板洖璋冨嚱鏁伴噰鐢ㄤ簡鍖垮悕鍑芥暟鐨勫艦寮忔潵瀹炵幇錛屽緢鏂逛究銆傞棴鍖呯殑浣滅敤鍒欐洿澶э紝鐪嬩笅闈㈢殑浠g爜紺轟緥錛?br />
var hostRequest = http.request(requestOptions,function(response) {
var responseHTML ='';
response.on('data', function (chunk) {
responseHTML = responseHTML + chunk;
});
response.on('end',function(){
console.log(responseHTML);
// do something useful
});
});
3.Javascript鍦ㄥ姩鎬佽璦涓ц兘杈冨ソ錛屾湁寮鍙戜漢鍛樺Javacript銆丳ython銆丷uby絳夊姩鎬佽璦鍋氫簡鎬ц兘鍒嗘瀽錛屽彂鐜癑avascript鐨勬ц兘瑕佸ソ浜庡叾浠栬璦錛屽啀鍔犱笂V8寮曟搸涔熸槸鍚岀被鐨勪郊浣艱咃紝鎵浠ode.js鐨勬ц兘涔熷彈鐩婂叾涓?br />
JavaScript涓嶄粎鍦ㄦ湇鍔″櫒绔紑濮嬫祦琛岋紝鍦ㄦ父鎴忓鎴風緙栫▼鏂歸潰涔熸垚涓轟簡涓涓緢閲嶈鐨勯夋嫨銆傚氨鍦ㄤ笉涔呭墠錛岀洰鍓嶉潪甯告祦琛岀殑涓涓墜娓稿紩鎿巆ocos2d-x涔熸帹鍑轟簡JavaScript鐗堟湰銆傚紩鐢ㄥ垱濮嬩漢鐜嬪摬鐨勪竴鍙ヨ瘽錛屽鏋滆C++鏈闈犺氨鐨勮瘽錛岄偅涔圠ua搴旇綆楁槸鏈嫻佽錛岃孞avascript鏄渶鏈夊墠鏅?img src ="http://www.shnenglu.com/cxiaojia/aggbug/202240.html" width = "1" height = "1" />
]]>
1.瑙嗚鍚鐨勪韓鍙楋細浜彈錛熸槸鐨勶紝灝辨槸榪欐牱銆傜帺瀹跺湪鐜╂父鎴忓氨鏄竴縐嶄韓鍙楃殑榪囩▼錛屾弧瓚充粬鐨勯渶瑕佸氨浼氳浠栨湁浜彈鐨勬劅瑙夈傞煶涔愪笌緹庢湳鐗規晥鏄渶鐩存帴鍒烘縺鐩磋鍚錛屽獎鍝嶇帺瀹跺績鎯呯殑鍏冪礌銆?br />緹庢湳鐗規晥騫朵笉鍏夋槸瓚婂崕涓借秺濂斤紝閲嶈鐨勬槸涓瀹氳鍋氬埌絎﹀悎鎶鑳界殑璁捐銆傚鏋滄妧鑳芥槸鏈堢鍓戯紝鐗規晥鏄釜鐏劙褰㈡佺殑娉曠悆鍙戝嚭鍘誨氨涓嶅お鍗忚皟浜嗐傚張濂藉儚鏄彉褰㈡湳錛屽鏋滀綘浣跨敤鍙樺艦鏈箣鍚庝粎浠呮槸鏀瑰彉浜嗗鏂圭殑妯″瀷澶у皬鐨勮瘽錛屼篃緇濆涓嶄細鏈夐偅縐嶆妸鍒漢鍙樻垚灝忓姩鐗╃殑蹇劅浜嗐傝屼即闅忕潃鍗庝附鐨勭壒鏁堟妸鏁屼漢鍑繪潃錛屾繪槸浼氭洿鍔犺浜虹儹琛娌歌吘銆傝繖縐嶆晥鏋滃綋鐒惰繕瑕侀厤鍚堥傚悎鐨勫脊閬撲互鍙婇熷害銆傘傘傜瓑絳夈?br />闊蟲晥涓嶄粎鍙互澧炲姞鐜╁鐨勫甫鍏ユ劅錛岃繕鍙互緇欐父鎴忓鍔犳洿澶氱殑瓚e懗鎬с傛瘮濡傜帺DOTA鐨勬椂鍊欙紝鍚埌鏈変漢浣跨敤鐤鵑姝ョ殑澹伴煶錛岃屽懆鍥翠竴涓槦鍙嬮兘娌℃湁銆傛垨鑰呮槸鍦ㄦ病鏈夎閲庣殑鍦版柟錛屽嵈鍙互鍚埌鏈変漢鍦ㄧ粌閲庣殑鎵撴枟澹般?br />鎬葷殑鏉ヨ闊蟲晥鍜岄煶涔愭槸鏈鐩磋褰卞搷鐜╁蹇冩儏鐨勫厓绱犮?br />2.澶氭牱鎬э細濡傛灉姣忎釜鎶鑳介兘鏄崟涓浼ゅ錛屾垨鑰呬粎浠呮槸浼ゅ浠ュ強甯歌鐨凞EBUFF銆傞偅涔堜篃灝辯浉褰撲簬鍚屾椂闄嶄綆浜嗘父鎴忕殑鍙帺鎬с傝繖閲屽氨闇瑕佺粍鍚堝悇縐嶅厓绱犵殑鏀瑰彉鏉ュ垱閫犲嚭鍚勭濂界帺鐨勬妧鑳戒簡銆?br />姣斿榛戞殫璐よ呯殑鐪熺┖鎶鑳姐傚氨鏄暣鍚堜簡鏀瑰彉鏁屾柟鍧愭爣浠ュ強HP鐨勫厓绱犮佹殫澶滈瓟鐜嬪彲浠ラ氳繃鏀瑰彉澶╂皵鏉ヤ笌鑷繁鐨勬妧鑳界粍鍚堟潵澧炲姞鑷繁鐨勫睘鎬с傚菇楝間箣鍒冨垯鏄湪閫犳垚浼ゅ鐨勫悓鏃惰繕鑳芥敼鍙樺湴褰㈠睘鎬с傛垨鑰呮槸鏈棩瀹堝崼鐨勬浜★紝澧炲姞浜嗘暟瀛楀垽瀹氱殑棰濆浼ゅ銆傚湴絀寸紪緇囪呯殑緙╁湴鍒欐槸鏀瑰彉鍩虹縐誨姩閫熷害銆佹槸鍚﹀彲瑙佷互鍙婄鎾炰箣鍚庡彈鍒頒激瀹崇殑鏁村悎
榪欎簺鎶鑳介兘鏄鏍峰厓绱犵殑閲嶇粍錛屽鏀瑰彉浜嗛澶栫殑鍏冪礌錛屽垯璁╂父鎴忓彉寰楁洿鍔犳湁濞變箰鎬с?br />娌欑帇鐨勭┛鍒猴紙鑷繁鍚戝墠絀垮埡錛屽鑷繁縐誨姩璺緞涓殑鏁屼漢閫犳垚浼ゅ鐪╂檿錛屽悓鏃剁灛闂存敼鍙樿嚜宸變綅緗傜偣鍑誨湴闈㈡柦鏀撅級
涓庤佽檸鐨勮煩璺冿紙鍚戣嫳闆勬ā鍨嬬殑鍓嶆柟鍚戣煩璺冿紝璺寵穬榪囧悗澧炲姞X鑼冨洿鍐呭弸鏂瑰崟浣嶇殑鏀誨嚮閫熷害涓庣Щ鍔ㄩ熷害銆傦級
鏁屾硶鐨勯棯鐑侊紙鐐瑰嚮鍦伴潰鏂芥斁錛岃煩璺冭嚦璇ュ湴鐐癸級
騫誨獎鍒哄鐨勭獊琚紙鎸囧悜鎬ф硶鏈紝鐐瑰嚮涓涓洰鏍囪煩璺冭嚦鐩爣鐨勮韓杈癸紝騫朵笖澧炲姞涓嬪嚑嬈℃敾鍑葷殑鏀誨嚮閫熷害銆傦級
鍏朵腑閮芥槸鏈夌浉鍚岀殑鍏冪礌錛屽湪涔嬪熀紜涓婂張澧炲姞浜嗗叾浠栧厓绱犵殑璁懼畾銆傝繖鏍峰嵆渚挎槸鍚岀被鍨嬬殑鏁堟灉錛屼篃鍙互閫氳繃涓嶅悓鐨勬柟寮忓疄鐜般?br />鍒╃敤鍚勭鍏冪礌鐨勭粍鍚堝氨鍙互鍒涢犲嚭鍚勭褰㈡佸悇寮傜殑鎶鑳姐傛父鎴忕殑濞變箰鎬т害鏄湪姝ゃ?br />3.瀹炵敤鎬т笌騫寵 鎬э細涓涓煶鏁堜笌鐗規晥闈炲父鐐洰錛屽茍涓旇浜烘劅瑙夊緢鏈夋剰鎬濈殑鎶鑳借繕闇瑕佷竴涓鐜╁棰戠箒浣跨敤鐨勮绱犮傚氨鏄疄鐢ㄦс傜淮鎸佸悇涓妧鑳戒笌鑻遍泟鎼厤涔嬮棿鐨勫鉤琛★紝鎵嶈兘璁╂妧鑳藉彉寰楁湁瀹炵敤鎬с傛墍浠ユ妸瀹炵敤鎬т笌騫寵 鎬ф斁鍦ㄤ簡涓璧楓備篃璁鎬綘浼氬彂鐜頒竴浜涙父鎴忎腑鏈変笉鍏峰瀹炵敤鎬х殑鎶鑳斤紝浠呬粎鍑熺潃鍗庝附鐨勭壒鏁堣屽瓨鍦ㄣ備絾榪欑鎶鑳戒篃鍙細鏄竴鐐圭偣銆傘傘傛病澶氬皯鐜╁鎰挎剰鍠滄涓涓彧鏈夊崕鑰屼笉瀹炵殑鎶鑳界殑鑻遍泟鐨勩傚嚮璐ュ叾浠栫帺瀹舵案榪滄槸澶у鏁扮帺瀹舵渶澶х殑榪芥眰銆?br />
涔嬪悗鎯寵鐨勪竴浜涳紝灝辨槸鎬庢牱閫氳繃鏀瑰彉娓告垙鍏冪礌鐨勫悇縐嶇粍鍚堟潵鍒涢犲嚭澶氭牱鎬ф妧鑳界殑鎬濊礬銆?br />浣犺繕涓嶇煡閬撴庢牱璁懼畾鎶鑳斤紵閭e氨鍐嶆涓句緥銆傘傘?br />浣犲彲浠ユ妸澧炲姞鏁屼漢鍗曚綋縐誨姩閫熷害銆佹敾鍑婚熷害涓庡鍔犺嚜宸辨敾鍑婚熷害銆佺Щ鍔ㄩ熷害緇勫悎璧鋒潵銆傝繖鏍峰氨鏄鐏甸榫欑殑榛勬硥涔嬭礬浜嗐?br />浣犲彲浠ユ妸鐭╁艦AOE浼ゅ錛屼笌鐪╂檿鏁堟灉涓庡湴褰㈡敼鍙樼粍鍚堛傞偅鏍峰氨鍙樻垚浜嗙墰鐗涚殑娌熷銆?br />浣犲彲浠ヨ瀹氫竴涓狝OE鎶鑳斤紝瀵硅寖鍥村唴鐨勭洰鏍囬犳垚浼ゅ錛屾鏃跺鍔犱竴涓垽瀹氾紝灝辨槸瀵規暟瀛?鐨勫嶆暟鐨勯犳垚棰濆鐨勪激瀹熾傝繖鏍峰氨鏄竴涓狝OE涓庢湯鏃ュ畧鍗妧鑳界殑緇勫悎浜嗐?br />浣犳兂澧炲姞涓涓猂P鎬ц川鏋佸己鐨勬妧鑳斤紵娣風兢楠戝+鐨凜涓庡湥楠戝+鐨凾涓嶅氨鏄箞錛熻繕鎯蟲洿鍔燫P涓鐐癸紵
鎶婃浜′竴鎸囩殑浼ゅX1.5錛岃寖鍥存柦鏀?#8212;—瀵硅寖鍥村唴鐨勯殢鏈轟竴涓晫鏂瑰崟浣嶉犳垚浼ゅ銆傝繖鏍蜂笉灝盧P浜嗭紵
娓告垙涓妧鑳界殑緇勫悎浼氭洿澶氱殑澧炲姞娓告垙鐨勫ū涔愭э紝姝f槸鍥犱負鍚勭緇勫悎錛屾墍浠OTA鐨?5涓嫳闆勯兘鑳藉ぇ鏀懼厜褰┿?br />鎶鑳芥庢牱鍘葷粍鍚堬紵涔熻DOTA涓妧鑳戒笌鎶鑳藉厓绱犵洿鎺ヤ簰鐩稿獎鍝嶇殑鑻遍泟騫朵笉鏄潪甯稿錛屼絾鏄害閮芥湁鑱旂郴銆備笅闈㈠氨鏉ヨ瀹氫竴涓柊鐨勮嫳闆勩?br />鎴戜滑鍏堝畾涔夎繖涓嫳闆勭殑瀹氫綅銆備粬鏄竴涓姏閲忓瀷鐨勮嫳闆勶紝騫朵笖鏈変竴瀹氱殑榪藉嚮涓庨冭窇鑳藉姏錛屾噦寰椾繚鎶よ嚜宸卞拰澧炲姞瀵規柟鎵鍙楀埌鐨勪激瀹熾傝屼粬闇瑕佺敤鎬庢牱鐨勬妧鑳芥潵琛ㄧ幇浠栫殑瀹氫綅鍛紵
澧炲姞縐誨姩閫熷害涓庢敾鍑婚熷害鐨勬妧鑳斤紝鏄渶閫傚悎榪藉嚮涓庨冭窇鐨勶紝浣嗘槸澶繃鍗曡皟銆傚噺鍏嶄激瀹充笌澧炲姞鏁屾柟鍗曚綅鍙楀埌鐨勪激瀹抽兘鏄凡緇忔湁綾諱技鐨勬妧鑳戒簡鐨勩傚浣曟潵璁懼畾涓涓叿澶囪繖浜涙潯浠惰屽張涓庝互寰涓嶅悓鐨勮嫳闆勬妧鑳藉憿錛?br />鍑忓厤浼ゅ鐨勬柟寮忔湁澶氱錛氬鍔犺嚜宸辯殑鎶ょ敳錛屾垨鑰呯洿鎺ュ噺灝戝彈鍒頒激瀹崇殑鍏蜂綋鏁板鹼紝浠ュ強鐩存帴鍑忓厤鍙楀埌浼ゅ鐨勭櫨鍒嗘瘮絳夌瓑寰堝鏂瑰紡銆傘傘?br />澧炲姞鏁屾柟鍙楀埌浼ゅ鐨勬柟寮忎害鏈夊緢澶氱錛氭瘮濡侱EBUFF錛岃鏁屼漢鍙楀埌棰濆鐨勪激瀹籌紝鍙互鐩存帴鐨勶紝鍗曟鐨勶紝鎴栬呮槸鍍忕傳鑻戜竴鏍風Н绱竴瀹氭椂闂寸殑銆?br />涓嬮潰鎴戜滑鎵鎯崇殑鏄敤鎬庢牱鐨勬妧鑳芥妸涓ょ鏂瑰紡緇撳悎璧鋒潵銆?br />鎶鑳?錛氬鍔犵Щ鍔ㄤ笌鏀誨嚮閫熷害錛岃繖涓氨鏄熀紜錛屼絾鏄笉鑳藉厜闈犺繖涓妧鑳藉幓琛ㄧ幇銆傞渶瑕佽鍏朵粬鐨勬妧鑳戒篃鍙互瀹炵幇榪藉嚮涓庨冭窇
鎶鑳?錛氭専鎸佸鏂硅嫳闆勶紝鑻遍泟绱ц創鐫鏁屾柟鑻遍泟鍗曚綅錛屾棤娉曡繘琛屾敾鍑諱笌縐誨姩錛屽湪榪欎箣闂村彈鍒扮殑鎵鏈変激瀹抽兘浼氳漿鍒版晫鏂硅嫳闆勮韓涓娿傝繖鏍峰氨婊¤凍浜嗚嫳闆勮瀹氫腑鎵鏈夌殑瑕佹眰銆備絾鏄繖鏍瘋瀹氭湁涓瀹氱殑闂錛屽氨鏄専鎸佷箣鍚庯紝鏁屾柟鐜╁閮戒笉鍐嶆敾鍑昏鎸熸寔鐨勫崟浣嶃備笖鎸熸寔瀵瑰弸鏂瑰崟浣嶇殑鏀誨嚮騫舵病鏈夊騫呯殑浣滅敤銆傝繖鏍風殑鎶鑳借繕鏄己涔忎竴浜涘疄鐢ㄦс傝繖鏍峰氨鍑虹幇浜嗘妧鑳?.
鎶鑳?錛氭案涔呮ц鍔ㄦ妧鑳斤紝鍑忓皯琚専鎸佽嫳闆勭殑縐誨姩閫熷害銆傚鏋滀粎浠呮槸榪欐牱鐨勮瘽錛岄偅涔堜緷鏃у茍涓嶆槸澶氭牱鍖栥備簬鏄張澧炲姞浜嗗彲鍒囨崲鐨勫姛鑳姐傚Э鎬?鏄噺灝戣嚜宸變互鍙婅嚜宸辨墍鎸熸寔鐩爣鎵鍙楀埌鐨勬墍鏈変激瀹籌紝濮挎?鏄鍔犺嚜宸變互鍙婅嚜宸辨墍鎸熸寔鐩爣鐨勬墍鏈変激瀹熾傝繖鏍蜂害鏄氳繃鍘熸潵DOTA娌℃湁鐨勬柟寮忓畬鎴愪簡鍑忓厤浼ゅ涓庡鍔犲鏂規墍鍙楀埌浼ゅ鐨勬柟寮忋?br />榪欐牱涓涓緩璁殑鏂拌嫳闆勬蹇靛氨鍑烘潵浜嗐傘傘備箣鍚庡氨鏄叿浣撹瀹氱殑璋冩暣錛屾瘮濡傝鎸熸寔鐨勫崟浣嶆槸澶勪簬浠涔堢姸鎬侊紝浠ュ強鍏蜂綋鏁板肩殑璁懼畾絳夌瓑銆傘傘?br />
鎬諱箣錛屾妧鑳界殑璁懼畾鏄鏍峰寲鐨勶紝澶氬埌鎬濊礬姘歌繙涓嶄細琚眬闄愩傛案榪滈兘鍙互鏈夋洿澶氭洿鏈夋剰鎬濈殑鎶鑳借璁懼畾鍑烘潵銆?br />姝ゆ枃鍙槸鍐欑殑涓浜涙妧鑳借瀹氱殑鎬濊礬錛屾病鏈夎冭檻浠諱綍瀹炵幇闂銆傘傘傛鏂歸潰榪樻槸涓嶈鎷嶆垜浜嗐?br />鎯沖啓緇欎竴浜涜嫤鎭間笌涓嶇煡閬撴庢牱璁懼畾濂界帺鐨勬妧鑳界殑鏂版墜銆傘傘傚笇鏈涘浠栦滑鏈変竴鐐圭偣甯姪銆?/span>
]]>
鎶婅繖涓ゅぉ鍋歅roactor鐨勪竴浜涚粡楠屽拰蹇冨緱鍐欎竴涓嬶紝鍙兘浼氱粰涓浜涗漢甯姪銆?br /> Proactor鏄紓姝ユā寮忕殑緗戠粶澶勭悊鍣紝ACE涓彨鍋?#8220;鍓嶆憚鍣?#8221;銆?br /> 鍏堣鍑犱釜姒傚康錛?br /> 鍓嶆憚鍣紙Proactor錛夛紞寮傛鐨勪簨浠跺璺垎紱誨櫒銆佸鐞嗗櫒錛屾槸鏍稿績澶勭悊綾匯傚惎鍔ㄥ悗鐢?涓嚎紼嬬粍鎴愶紙浣犱笉闇瑕佸叧蹇冭繖涓変釜綰跨▼錛屾垜鍙槸璁╀綘鐭ラ亾涓涓嬫湁榪欏洖浜嬪瓨鍦級銆?br /> 鎺ュ彈鍣紙Acceptor錛夛紞鐢ㄤ簬鏈嶅姟绔紝鐩戝惉鍦ㄤ竴涓鍙d笂錛屾帴鍙楃敤鎴風殑璇鋒眰銆?br /> 榪炴帴鍣紙Connector錛夛紞鐢ㄤ簬瀹㈡埛绔紝鍘昏繛鎺ヨ繙紼嬬殑鐩戝惉銆傚綋鐒訛紝濡傛灉榪滅▼鏄疉CE鍐欑殑錛屽氨鏄疉cceptor銆?br /> 寮傛妯″紡錛嶅嵆闈為樆濉炴ā寮忋傜綉緇滅殑浼犺緭閫熷害涓鑸潵璁蹭負10Mbps銆?00Mbps銆?000Mbps銆傛嬁鍗冨厗緗戞潵璇達紝瀹為檯鐨勪紶杈撻熷害涓?000Mbps/8澶ф涓?28KB宸﹀彸銆傛垜浠殑CPU涓鑸負P4 3.0GHZ錛屽鏋滄槸32浣嶇殑澶勭悊鍣紝涓縐掗挓澶ф鍙互澶勭悊6G鐨勫瓧鑺傦紝閭d箞錛?28KB鐨勭綉緇滈熷害鏄繙榪滃強涓嶄笂澶勭悊鍣ㄧ殑閫熷害鐨勩傜綉緇滃彂閫佹暟鎹槸涓浣嶄竴浣嶅彂閫佸嚭鍘葷殑錛屽鏋淐PU絳夊湪榪欓噷錛屽彂閫佸畬鎴愬嚱鏁版墠緇撴潫錛岄偅涔堬紝澶勭悊鍣ㄦ氮璐逛簡澶ч噺鏃墮棿鍦ㄧ綉緇滀紶杈撲笂銆?br /> 鎿嶄綔緋葷粺鎻愪緵浜嗗紓姝ョ殑妯″紡鏉ヤ紶杈撶綉緇滄暟鎹紝宸ヤ綔妯″紡鍗籌細搴旂敤紼嬪簭鎶婅鍙戦佺殑鏁版嵁浜ょ粰鎿嶄綔緋葷粺錛屾搷浣滅郴緇熸妸鏁版嵁鏀懼湪緋葷粺緙撳啿鍖哄悗灝卞憡璇夊簲鐢ㄧ▼搴廜K浜嗭紝鎴戝府浣犲彂錛屽簲鐢ㄧ▼搴忚騫插槢騫插槢鍘匯傛搷浣滅郴緇熷彂閫佸畬鎴愬悗錛屼細緇欏簲鐢ㄧ郴緇熶竴涓洖鎵э紝鍛婅瘔搴旂敤紼嬪簭錛氬垰鎵嶉偅涓寘鍙戦佸畬鎴愪簡錛?br /> 涓句釜渚嬪瓙錛氫綘鏈夊嚑灝侀偖浠跺拰鍖呰9瑕佸彂錛屾渶鏈夋晥鐜囩殑鍔炴硶鏄粈涔堬紵浣犳妸閭歡鍜屽寘瑁瑰強浜ょ粰鎬誨彴錛屾誨彴MM璇達紝濂戒簡錛屼綘甯綘鍙戯紝浣犲繖鍘誨惂錛佺劧鍚庝綘鍘誨伐浣滀簡銆傝繃浜嗕竴浼氾紝鎬誨彴MM鎵撶數璇濆憡璇変綘錛?#8220;鍒氭墠鎴戝彨蹇掑叕鍙哥殑浜烘潵浜嗭紝鎶婁綘鐨勫寘瑁瑰彂鍑哄幓浜嗐傞偖灞鐨勪漢涔熸潵浜嗭紝鍙栬蛋浜嗛偖浠訛紝鏀懼績濂戒簡”銆傚悓鏍鳳紝濡傛灉浣犵煡閬撲粖澶╀細鏈夊寘瑁規潵錛屾瘮濡備綘鍦ㄦ窐瀹濅笂璐墿浜嗭紝浣犺兘鎴愬ぉ絳夊湪鎬誨彴錛熶綘搴旇鍛婅瘔鎬誨彴MM錛?#8220;浠婂ぉ鍙兘鏈夋垜鐨勪竴涓揩閫掞紝浣犲府鎴戞敹涓涓嬶紝鏅氫笂璇蜂綘鑲痙鍩猴紒”銆侻M錛?#8220;鐪嬪湪鑲緱鍩虹殑闈㈠瓙涓婏紝甯綘鏀朵簡”銆傛煇涓椂闂達紝MM鎵撶數璇濇潵浜嗭細“甯呭摜錛屼綘鐨勫寘瑁瑰埌浜嗭紝鎴戝府浣犵鏀朵簡錛屽揩鏉ユ嬁鍚с?#8221;
鍥犱負鎿嶄綔緋葷粺鏄緢鏈夋晥鐜囩殑錛屾墍鏈夛紝浠栧湪鍚庡彴鏀跺彂鏄緢蹇殑銆傚簲鐢ㄧ▼搴忎篃寰堢畝鍗曘侾roactor灝辨槸榪欑寮傛妯″紡鐨勩侾roactor灝辨槸鎬誨彴MM錛汚CE_Service_Handle灝辨槸鎬誨彴浠d負鏀跺彂閭歡鐨勫叕鍙告祦紼嬨?/p>
//***********************************************************
class TPTCPAsynchServerImpl : public ACE_Service_Handler
{
public:
TPTCPAsynchServerImpl(void);
~TPTCPAsynchServerImpl(void);
virtual void open (ACE_HANDLE handle, ACE_Message_Block &message_block);
virtual void handle_read_stream (const ACE_Asynch_Read_Stream::Result &result);
virtual void handle_write_stream (const ACE_Asynch_Write_Stream::Result &result);
virtual void handle_time_out (const ACE_Time_Value &tv, const void *act=0);
private:
int initiate_read_stream (const ACE_Asynch_Read_Stream::Result &result);
ACE_Asynch_Read_Stream rs_;
ACE_Asynch_Write_Stream ws_;
};
榪欎釜渚嬪瓙浠嶢CE_Service_Handler緇ф壙榪囨潵錛孉CE_Service_Handle涓昏灝辨槸瀹氫箟浜嗕竴浜涘洖璋冨嚱鏁般?br />1銆?virtual void open (ACE_HANDLE handle, ACE_Message_Block &message_block);
褰撴湁瀹㈡埛绔繛鎺ヤ笂鏉ワ紝榪炴帴寤虹珛鎴愬姛鍚嶱roactor浼氳皟鐢ㄨ繖涓柟娉曘?/p>
2銆?virtual void handle_read_stream (const ACE_Asynch_Read_Stream::Result &result);
褰撶敤鎴瘋璇葷殑鏁版嵁璇誨ソ浜嗗悗錛岃皟鐢ㄨ繖涓柟娉?/p>
3銆乿irtual void handle_write_stream (const ACE_Asynch_Write_Stream::Result &result);
褰撶敤鎴瘋鍐欑殑鏁版嵁鍦ㄧ綉鍗′笂鍙戦佹垚鍔熷悗錛孭roactor浼氬洖璋冭繖涓柟娉?/p>
4銆?virtual void handle_time_out (const ACE_Time_Value &tv, const void *act=0);
褰撶敤鎴瘋瀹氱殑鏃墮挓鍒版湡浜嗭紝榪欎釜鏂規硶浼氳璋冪敤銆?/p>
榪欒窡鍜屾誨彴MM鐨勮仈緇滄柟娉曟槸涓嶆槸涓鏍風殑錛?/p>
瀵硅繕緙虹偣涓滆タ錛岀己灝戞庝箞鍚戞誨彴MM浜ゅ緟浠誨姟鐨勬柟娉曘備笅闈㈢湅鐪嬶細
棣栧厛錛屽垱寤轟竴涓洃鍚櫒銆?/p>
ACE_Asynch_Acceptor<TPTCPAsynchServerImpl> acceptor_;
鐪嬪埌娌★紝灝辨槸鎴戜滑鍒氭墠鍐欑殑綾伙紝鍥犱負浠栫戶鎵夸簡鍥炶皟鎺ュ彛錛屽茍瀹炵幇浜嗚嚜宸茬殑浠g爜錛屾ā鏉夸腑ACE_Asynch_Acceptor浼氬湪鍚堥傜殑鏃跺欏洖璋冭繖浜涙柟娉曘?/p>
//鍒涘緩涓涓湴鍧瀵硅薄
ACE_INET_Addr addr(port, ip);
acceptor_.open (addr, 8 * 1024, 1);
Open鍚庯紝灝卞紑濮嬬洃鍚簡銆傚叾瀹冪殑錛屽悜Proactor娉ㄥ唽涓浜涗簨浠剁殑浜嬫ā鏉跨被涓兘鏇夸綘鍋氫簡錛屼綘涓嶉渶瑕佸仛寰堝浜嬨?br /> 閭d箞錛屽凡緇忓紑濮嬬洃鍚簡錛屾垜鐨勭▼搴忎粠鍝噷寮濮嬪憿錛熷浜庝竴涓湇鍔$▼搴忔潵璁詫紝紼嬪簭鏄鐢ㄦ埛鐨勮繛鎺ラ┍鍔ㄧ殑錛屼竴涓敤鎴風▼搴忔兂鍜岄氳錛屽繀欏誨厛鍒涘緩榪炴帴錛屽氨鏄疭ocket涓殑connect鎿嶄綔銆傝繖涓搷浣淧roactor浼氭浛鎴戜滑鍋氫竴浜涘伐浣滐紝褰撹繛鎺ュ垱寤哄畬鎴愬悗錛屼笂闈㈣鐨凮pen鏂規硶浼氳璋冪敤錛屾垜浠湅鐪婳pen鏂規硶涓兘鏈変簺浠涔堜唬鐮侊細
鎴戜滑鐪嬪埌錛岄鍏堝垱寤轟簡涓や釜嫻侊紝灝辨槸鍓嶉潰綾誨畾涔変腑瀹氫箟鐨勪竴涓紓姝ュ啓嫻侊紝涓涓紓姝ヨ嫻併備互鍚庡緗戠粶鐨勮鍜屽啓灝遍氳繃榪欎袱涓祦榪涜銆傛垜榪樼粰鍑轟簡涓孌佃瀹㈡埛绔湴鍧鍜岀鍙g殑浠g爜銆傜劧鍚庢槸璇誨彇瀹㈡埛Connect鍙兘闄勫甫鐨勬暟鎹紝閭f浠g爜涓嶇敤鐪嬫噦錛屼互鍚庝嬌鐢ㄧ収鎶勫氨琛屻傜劧鍚庡氨鏄?/p>
榪欐浠g爜浣跨敤璇繪祦璇諱竴孌墊暟鎹傝繖孌典唬鐮佸氨鏄悜鎬誨彴MM浜ゅ緟錛氭垜瑕佹敹鍖呰9錛屾敹濂戒簡鍙垜錛?br />涔熷氨鏄錛岃繖孌典唬鐮?9%鐨勫彲鑳芥槸璇諱笉鍑烘暟鎹殑錛屽彧鏄悜Proactor娉ㄥ唽璇葷殑浜嬩歡錛屽叿浣撶殑絳夊緟銆佽鍙栨搷浣滅敱Proactor璇伙紝璇誨埌浜嗭紝灝卞洖璋僅andle_Read_Stream鏂規硶銆侫CE_Message_Block鏄秷鎭潡錛屾暟鎹氨鏄瓨鏀懼湪娑堟伅鍧椾腑鐨勩?br />涓嬮潰鐪嬬湅Handle_Read_Stream鏂規硶鐨勪唬鐮侊細
榪欎釜鍑芥暟琚皟鐢紝灝辮〃鏄庢湁鏁版嵁宸茬粡璇誨ソ浜嗭紝鍖呰9宸茬粡鍦ㄦ誨彴浜嗐侾roactor姣旀誨彴MM榪樺ソ錛岀粰浣犻佷笂闂ㄤ簡錛屾暟鎹氨鍦≧esult閲岋紝涓婇潰婕旂ず浜哛esult涓殑鏁版嵁銆傜劧鍚庢妸娑堟伅鍧楅噴鏀句簡錛岀劧鍚庤皟鐢╥nitiate_read_stream緇х畫鐩戝惉緗戠粶涓婂彲鑳藉埌鏉ョ殑鏁版嵁銆傜湅鐪媔nitiate_read_stream濂戒簡錛?/p>
浠g爜寰堢畝鍗曪紝灝辨槸鍒涘緩涓涓柊鐨勬秷鎭潡錛岀劧鍚庝嬌鐢ㄨ嫻佹敞鍐屼竴涓娑堟伅灝卞彲浠ヤ簡銆?/p>
鍒版涓烘錛孭roactor鐨勮嫻佺▼寰堟竻妤氫簡鍚э紵
涓嬮潰鍐嶈涓涓啓嫻佺▼銆?/p>
鍐欐祦紼嬪叾瀹炴洿綆鍗曪紝鍦ㄤ換鎰忔兂鍚戝鎴風鍐欐暟鎹殑鍦版柟錛岃皟鐢ㄧ浉搴斾唬鐮佸氨琛屼簡錛屾瘮濡傦紝鎴戜滑鎻愪緵浜哠endData鏂規硶鏉ュ彂閫佹暟鎹紝鍦ㄤ換鎰忔兂鍙戦佹暟鎹殑鍦版柟璋冪敤SendData灝辮浜嗭紝SendData鐨勪唬鐮佸涓嬶細
綆鍗曡錛屽氨鏄垱寤轟簡涓涓秷鎭潡錛屾妸鐢ㄦ埛鏁版嵁鎷瘋礉榪涙潵錛岀劧鍚庤皟鐢ㄥ啓嫻乄S鍚慞roactor鍙戦佷竴涓猈rite浜嬩歡灝卞彲浠ヤ簡錛屽彂閫佹垚鍔熷悗錛孒andle_write_handle浼氳璋冪敤錛岀湅涓涓嬶細
浠g爜涓嬌鐢ㄤ簡result涓彂鏁版嵁錛岀劧鍚庢妸娑堟伅鍧楅噴鏀句簡錛屽氨榪欎箞綆鍗曘?/p>
////////////////////////////////////////////////////////////////////////////////////////////////////
榪欐槸綆鍗曠殑proactor鐢ㄦ硶錛屽綋鐒訛紝澶嶆潅涔熷熀鏈氨榪欐牱鐢ㄣ傛墍璋撲笉鍩烘湰鐨勪笉鏄疨roactor鐨勫唴瀹癸紝鑰屾槸鏈嶅姟鍣ㄧ紪紼嬫湰韜殑楹葷儲銆傛瘮濡傝錛屽涓繛鎺ョ殑綆$悊銆侀噸鍙戞満鍒躲佸彂閫侀槦鍒楃瓑絳夛紝榪欓兘涓嶆槸ACE鐨勫唴瀹廣傝繖浜涜澶у鑷繁鎬濊冧簡錛屽茍娣誨姞銆?/p>
鍦ㄨ繖閲岋紝鎴戣璇村嚑涓噸瑕佺殑闂錛氳繛鎺ョ殑綆$悊銆侫cceptor鏄竴涓被錛屼絾鏄湪姣忎竴涓繛鎺ワ紝Proactor閮界敤浜嗘煇縐嶅姙娉曞垱寤轟簡涓涓疄渚嬶紝鎵浠ワ紝榪炴帴綆$悊鐨勭兢闆嗙被涓瀹氫笉鑳藉湪Acceptor綾諱腑錛屼笉鐒跺緱鍒扮殑緇撴灉灝辨槸濮嬬粓鍙湁涓鏉¤褰曘傚洜涓烘瘡涓狝cceptor閮芥湁涓涓疄渚嬶紝瀹炰緥瀵瑰簲涓涓繛鎺ワ紝緹ら泦綾諱篃灝辨瘡涓疄渚嬩竴涓簡銆傝閲囧彇鐨勬柟娉曟槸涓涓叏灞鐨勫鍣ㄥ璞″氨鍙互浜嗐傛瘮濡傛垜榪欎釜綾伙細
鎴戜嬌鐢ˋCE鐨凷ingleton妯℃澘鍒涘緩榪欎釜綾伙紝姣忎竴涓狝cceptor瑕佷嬌鐢–onnectionMap錛岄兘浣跨敤榪欓噷鐨刜connections錛屾柟娉曞涓?錛?br /> GlobleSingleton::instance()->connection.bind()......
榪欎釜闂鍙槸鎴戣姳璐逛簡2澶╂椂闂存壘鍑烘潵鐨勶紝璇鎬綅鍚屼粊涓嶅彲涓嶆垝鍟婏紝緇欑偣鎺屽0錛氾級
濂藉
杞嚜錛?a >http://blog.csdn.net/hguisu/article/details/7453390
1. 姒傚康鐞嗚В
鍦ㄨ繘琛岀綉緇滅紪紼嬫椂錛屾垜浠父甯歌鍒?span style="margin: 0px; padding: 0px; font-family: Arial, Helvetica, sans-serif, 瀹嬩綋; font-size: 12px; line-height: 16px; text-indent: 24px;">鍚屾(Sync)/寮傛(Async)錛岄樆濉?Block)/闈為樆濉?Unblock)鍥涚璋冪敤鏂瑰紡錛?/span>
鍚屾錛?/span>
鎵璋撳悓姝ワ紝灝辨槸鍦ㄥ彂鍑轟竴涓姛鑳借皟鐢ㄦ椂錛屽湪娌℃湁寰楀埌緇撴灉涔嬪墠錛岃璋冪敤灝變笉榪斿洖銆?/span>涔熷氨鏄繀欏諱竴浠朵竴浠朵簨鍋?/strong>,絳夊墠涓浠跺仛瀹屼簡鎵嶈兘鍋氫笅涓浠朵簨銆?/span>
渚嬪鏅?span style="margin: 0px; padding: 0px; font-family: 'Times New Roman';">B/S妯″紡錛堝悓姝ワ級錛氭彁浜よ姹?span style="margin: 0px; padding: 0px; font-family: 'Times New Roman';">->絳夊緟鏈嶅姟鍣ㄥ鐞?span style="margin: 0px; padding: 0px; font-family: 'Times New Roman';">->澶勭悊瀹屾瘯榪斿洖 榪欎釜鏈熼棿瀹㈡埛绔祻瑙堝櫒涓嶈兘騫蹭換浣曚簨
寮傛錛?/span>
寮傛鐨勬蹇靛拰鍚屾鐩稿銆傚綋涓涓紓姝ヨ繃紼嬭皟鐢ㄥ彂鍑哄悗錛岃皟鐢ㄨ呬笉鑳界珛鍒誨緱鍒扮粨鏋溿傚疄闄呭鐞嗚繖涓皟鐢ㄧ殑閮ㄤ歡鍦ㄥ畬鎴愬悗錛岄氳繃鐘舵併侀氱煡鍜屽洖璋冩潵閫氱煡璋冪敤鑰呫?/span>
渚嬪 ajax璇鋒眰錛?/span>寮傛錛?/span>: 璇鋒眰閫氳繃浜嬩歡瑙﹀彂->鏈嶅姟鍣ㄥ鐞嗭紙榪欐槸嫻忚鍣ㄤ粛鐒跺彲浠ヤ綔鍏朵粬浜嬫儏錛?/span>->澶勭悊瀹屾瘯
闃誨
闃誨璋冪敤鏄寚璋冪敤緇撴灉榪斿洖涔嬪墠錛屽綋鍓嶇嚎紼嬩細琚寕璧鳳紙綰跨▼榪涘叆闈炲彲鎵ц鐘舵侊紝鍦ㄨ繖涓姸鎬佷笅錛宑pu涓嶄細緇欑嚎紼嬪垎閰嶆椂闂寸墖錛屽嵆綰跨▼鏆傚仠榪愯錛夈傚嚱鏁板彧鏈夊湪寰楀埌緇撴灉涔嬪悗鎵嶄細榪斿洖銆?/span>
鏈変漢涔熻浼氭妸闃誨璋冪敤鍜屽悓姝ヨ皟鐢ㄧ瓑鍚岃搗鏉ワ紝瀹為檯涓婁粬鏄笉鍚岀殑銆傚浜庡悓姝ヨ皟鐢ㄦ潵璇達紝寰堝鏃跺欏綋鍓嶇嚎紼嬭繕鏄縺媧葷殑錛屽彧鏄粠閫昏緫涓婂綋鍓嶅嚱鏁版病鏈夎繑鍥炶屽凡銆?/span> 渚嬪錛屾垜浠湪socket涓皟鐢╮ecv鍑芥暟錛屽鏋滅紦鍐插尯涓病鏈夋暟鎹紝榪欎釜鍑芥暟灝變細涓鐩寸瓑寰咃紝鐩村埌鏈夋暟鎹墠榪斿洖銆傝屾鏃訛紝褰撳墠綰跨▼榪樹細緇х畫澶勭悊鍚勭鍚勬牱鐨勬秷鎭?/span>
闈為樆濉?/strong>
闈為樆濉炲拰闃誨鐨勬蹇電浉瀵瑰簲錛屾寚鍦ㄤ笉鑳界珛鍒誨緱鍒扮粨鏋滀箣鍓嶏紝璇ュ嚱鏁頒笉浼氶樆濉炲綋鍓嶇嚎紼嬶紝鑰屼細绔嬪埢榪斿洖銆?/span>
瀵硅薄鐨勯樆濉炴ā寮忓拰闃誨鍑芥暟璋冪敤
瀵硅薄鏄惁澶勪簬闃誨妯″紡鍜屽嚱鏁版槸涓嶆槸闃誨璋冪敤鏈夊緢寮虹殑鐩稿叧鎬э紝浣嗘槸騫朵笉鏄竴涓瀵瑰簲鐨勩傞樆濉炲璞′笂鍙互鏈夐潪闃誨鐨勮皟鐢ㄦ柟寮忥紝鎴戜滑鍙互閫氳繃涓瀹氱殑API鍘昏疆璇㈢姸 鎬侊紝鍦ㄩ傚綋鐨勬椂鍊欒皟鐢ㄩ樆濉炲嚱鏁幫紝灝卞彲浠ラ伩鍏嶉樆濉炪傝屽浜庨潪闃誨瀵硅薄錛岃皟鐢ㄧ壒孌婄殑鍑芥暟涔熷彲浠ヨ繘鍏ラ樆濉炶皟鐢ㄣ傚嚱鏁?/span>select灝辨槸榪欐牱鐨勪竴涓緥瀛愩?/span>
1. 鍚屾錛屽氨鏄垜璋冪敤涓涓姛鑳斤紝璇ュ姛鑳芥病鏈夌粨鏉熷墠錛屾垜姝葷瓑緇撴灉銆?/span>
2. 寮傛錛屽氨鏄?span style="margin: 0px; padding: 0px; line-height: 20px;">鎴戣皟鐢ㄤ竴涓姛鑳斤紝涓嶉渶瑕佺煡閬撹鍔熻兘緇撴灉錛岃鍔熻兘鏈夌粨鏋滃悗閫氱煡鎴戯紙鍥炶皟閫氱煡錛?/span>
3. 闃誨錛? 灝辨槸璋冪敤鎴戯紙鍑芥暟錛夛紝鎴?span style="margin: 0px; padding: 0px; line-height: 20px;">錛堝嚱鏁幫級娌℃湁鎺ユ敹瀹屾暟鎹垨鑰呮病鏈夊緱鍒扮粨鏋滀箣鍓嶏紝鎴戜笉浼氳繑鍥炪?/span>
4. 闈為樆濉烇紝 灝辨槸璋冪敤鎴?span style="margin: 0px; padding: 0px; line-height: 20px;">錛堝嚱鏁幫級錛屾垜錛堝嚱鏁幫級绔嬪嵆榪斿洖錛?span style="margin: 0px; padding: 0px; line-height: 20px;">閫氳繃select閫氱煡璋冪敤鑰?/span>
鍚屾IO鍜屽紓姝O鐨勫尯鍒氨鍦ㄤ簬錛?span style="margin: 0px; padding: 0px; color: #ff0000;">鏁版嵁鎷瘋礉鐨勬椂鍊欒繘紼嬫槸鍚﹂樆濉烇紒
闃誨IO鍜岄潪闃誨IO鐨勫尯鍒氨鍦ㄤ簬錛?/span>搴旂敤紼嬪簭鐨勮皟鐢ㄦ槸鍚︾珛鍗寵繑鍥烇紒
瀵逛簬涓句釜綆鍗昪/s 妯″紡錛?/span>
鍚屾鍜屽紓姝?闃誨鍜岄潪闃誨,鏈変簺娣風敤,鍏跺疄瀹冧滑瀹屽叏涓嶆槸涓鍥炰簨,鑰屼笖瀹冧滑淇グ鐨勫璞′篃涓嶇浉鍚屻?br style="margin: 0px; padding: 0px;" />闃誨鍜岄潪闃誨鏄寚褰撹繘紼嬭闂殑鏁版嵁濡傛灉灝氭湭灝辯華,榪涚▼鏄惁闇瑕佺瓑寰?綆鍗曡榪欑浉褰撲簬鍑芥暟鍐呴儴鐨勫疄鐜板尯鍒?/span>,涔熷氨鏄湭灝辯華鏃舵槸鐩存帴榪斿洖榪樻槸絳夊緟灝辯華;
鑰屽悓姝ュ拰寮傛鏄?/span>鎸囪闂暟鎹殑鏈哄埗,鍚屾涓鑸寚涓誨姩璇鋒眰騫剁瓑寰匢/O鎿嶄綔瀹屾瘯鐨勬柟寮?褰撴暟鎹氨緇悗鍦ㄨ鍐欑殑鏃跺欏繀欏婚樆濉?鍖哄埆灝辯華涓庤鍐欎簩涓樁孌?鍚屾鐨勮鍐欏繀欏婚樆濉?,寮傛鍒欐寚涓誨姩璇鋒眰鏁版嵁鍚庝究鍙互緇х畫澶勭悊鍏跺畠浠誨姟,闅忓悗絳夊緟I/O,鎿嶄綔瀹屾瘯鐨勯氱煡,榪欏彲浠ヤ嬌榪涚▼鍦ㄦ暟鎹鍐欐椂涔熶笉闃誨銆?絳夊緟"閫氱煡")
1. Linux涓嬬殑浜旂I/O妯″瀷
1)闃誨I/O錛坆locking I/O錛?br style="margin: 0px; padding: 0px;" />2)闈為樆濉濱/O 錛坣onblocking I/O錛?/span>
3) I/O澶嶇敤(select 鍜宲oll) 錛圛/O multiplexing錛?/span>
4)淇″彿椹卞姩I/O 錛坰ignal driven I/O (SIGIO)錛?/span>
5)寮傛I/O 錛坅synchronous I/O (the POSIX aio_functions)錛?/span>
鍓嶅洓縐嶉兘鏄悓姝ワ紝鍙湁鏈鍚庝竴縐嶆墠鏄紓姝O銆?/p>
綆浠嬶細榪涚▼浼?/span>涓鐩撮樆濉?/span>錛岀洿鍒版暟鎹嫹璐濆畬鎴?/span>
搴旂敤紼嬪簭璋冪敤涓涓狪O鍑芥暟錛屽鑷村簲鐢ㄧ▼搴忛樆濉烇紝絳夊緟鏁版嵁鍑嗗濂姐?濡傛灉鏁版嵁娌℃湁鍑嗗濂斤紝涓鐩寸瓑寰?#8230;.鏁版嵁鍑嗗濂戒簡錛屼粠鍐呮牳鎷瘋礉鍒扮敤鎴風┖闂?IO鍑芥暟榪斿洖鎴愬姛鎸囩ず銆?/span>
闃誨I/O妯″瀷鍥撅細鍦ㄨ皟鐢╮ecv()/recvfrom錛堬級鍑芥暟鏃訛紝鍙戠敓鍦ㄥ唴鏍鎬腑絳夊緟鏁版嵁鍜屽鍒舵暟鎹殑榪囩▼銆?/span>
褰撹皟鐢╮ecv()鍑芥暟鏃訛紝緋葷粺棣栧厛鏌ユ槸鍚︽湁鍑嗗濂界殑鏁版嵁銆傚鏋滄暟鎹病鏈夊噯澶囧ソ錛岄偅涔堢郴緇熷氨澶勪簬絳夊緟鐘舵併傚綋鏁版嵁鍑嗗濂藉悗錛屽皢鏁版嵁浠庣郴緇熺紦鍐插尯澶嶅埗鍒扮敤鎴風┖闂達紝鐒跺悗璇ュ嚱鏁拌繑鍥炪傚湪濂楁帴搴旂敤紼嬪簭涓紝褰撹皟鐢╮ecv()鍑芥暟鏃訛紝鏈繀鐢ㄦ埛絀洪棿灝卞凡緇忓瓨鍦ㄦ暟鎹紝閭d箞姝ゆ椂recv()鍑芥暟灝變細澶勪簬絳夊緟鐘舵併?br style="margin: 0px; padding: 0px;" />
褰撲嬌鐢╯ocket()鍑芥暟鍜學SASocket()鍑芥暟鍒涘緩濂楁帴瀛楁椂錛岄粯璁ょ殑濂楁帴瀛楅兘鏄樆濉炵殑銆傝繖鎰忓懗鐫褰撹皟鐢╓indows Sockets API涓嶈兘绔嬪嵆瀹屾垚鏃訛紝綰跨▼澶勪簬絳夊緟鐘舵侊紝鐩村埌鎿嶄綔瀹屾垚銆?/span>
騫朵笉鏄墍鏈塛indows Sockets API浠ラ樆濉炲鎺ュ瓧涓哄弬鏁拌皟鐢ㄩ兘浼氬彂鐢熼樆濉炪備緥濡傦紝浠ラ樆濉炴ā寮忕殑濂楁帴瀛椾負鍙傛暟璋冪敤bind()銆乴isten()鍑芥暟鏃訛紝鍑芥暟浼氱珛鍗寵繑鍥炪傚皢鍙兘闃誨濂楁帴瀛楃殑Windows Sockets API璋冪敤鍒嗕負浠ヤ笅鍥涚:
1錛庤緭鍏ユ搷浣滐細 recv()銆乺ecvfrom()銆乄SARecv()鍜學SARecvfrom()鍑芥暟銆備互闃誨濂楁帴瀛椾負鍙傛暟璋冪敤璇ュ嚱鏁版帴鏀舵暟鎹傚鏋滄鏃跺鎺ュ瓧緙撳啿鍖哄唴娌℃湁鏁版嵁鍙錛屽垯璋冪敤綰跨▼鍦ㄦ暟鎹埌鏉ュ墠涓鐩寸潯鐪犮?/span>
2錛庤緭鍑烘搷浣滐細 send()銆乻endto()銆乄SASend()鍜學SASendto()鍑芥暟銆備互闃誨濂楁帴瀛椾負鍙傛暟璋冪敤璇ュ嚱鏁板彂閫佹暟鎹傚鏋滃鎺ュ瓧緙撳啿鍖烘病鏈夊彲鐢ㄧ┖闂達紝綰跨▼浼氫竴鐩寸潯鐪狅紝鐩村埌鏈夌┖闂淬?/span>
3錛庢帴鍙楄繛鎺ワ細accept()鍜學SAAcept()鍑芥暟銆備互闃誨濂楁帴瀛椾負鍙傛暟璋冪敤璇ュ嚱鏁幫紝絳夊緟鎺ュ彈瀵規柟鐨勮繛鎺ヨ姹傘傚鏋滄鏃舵病鏈夎繛鎺ヨ姹傦紝綰跨▼灝變細榪涘叆鐫$湢鐘舵併?/span>
4錛庡鍑鴻繛鎺ワ細connect()鍜學SAConnect()鍑芥暟銆傚浜嶵CP榪炴帴錛屽鎴風浠ラ樆濉炲鎺ュ瓧涓哄弬鏁幫紝璋冪敤璇ュ嚱鏁板悜鏈嶅姟鍣ㄥ彂璧瘋繛鎺ャ傝鍑芥暟鍦ㄦ敹鍒版湇鍔″櫒鐨勫簲絳斿墠錛屼笉浼氳繑鍥炪傝繖鎰忓懗鐫TCP榪炴帴鎬諱細絳夊緟鑷沖皯鍒版湇鍔″櫒鐨勪竴嬈″線榪旀椂闂淬?/span>
銆銆浣跨敤闃誨妯″紡鐨勫鎺ュ瓧錛屽紑鍙戠綉緇滅▼搴忔瘮杈冪畝鍗曪紝瀹規槗瀹炵幇銆傚綋甯屾湜鑳藉绔嬪嵆鍙戦佸拰鎺ユ敹鏁版嵁錛屼笖澶勭悊鐨勫鎺ュ瓧鏁伴噺姣旇緝灝戠殑鎯呭喌涓嬶紝浣跨敤闃誨妯″紡鏉ュ紑鍙戠綉緇滅▼搴忔瘮杈冨悎閫傘?/span>
闃誨妯″紡濂楁帴瀛楃殑涓嶈凍琛ㄧ幇涓猴紝鍦ㄥぇ閲忓緩绔嬪ソ鐨勫鎺ュ瓧綰跨▼涔嬮棿榪涜閫氫俊鏃舵瘮杈冨洶闅俱傚綋浣跨敤“鐢熶駭鑰?娑堣垂鑰?#8221;妯″瀷寮鍙戠綉緇滅▼搴忔椂錛屼負姣忎釜濂楁帴瀛楅兘鍒嗗埆鍒嗛厤涓涓綰跨▼銆佷竴涓鐞嗘暟鎹嚎紼嬪拰涓涓敤浜庡悓姝ョ殑浜嬩歡錛岄偅涔堣繖鏍鋒棤鐤戝姞澶х郴緇熺殑寮閿銆傚叾鏈澶х殑緙虹偣鏄綋甯屾湜鍚屾椂澶勭悊澶ч噺濂楁帴瀛楁椂錛屽皢鏃犱粠涓嬫墜錛屽叾鎵╁睍鎬у緢宸?/span>
鎴戜滑鎶婁竴涓猄OCKET鎺ュ彛璁劇疆涓洪潪闃誨灝辨槸鍛婅瘔鍐呮牳錛屽綋鎵璇鋒眰鐨処/O鎿嶄綔鏃犳硶瀹屾垚鏃訛紝涓嶈灝嗚繘紼嬬潯鐪狅紝鑰屾槸榪斿洖涓涓敊璇傝繖鏍鋒垜浠殑I/O鎿嶄綔鍑芥暟灝嗕笉鏂殑嫻嬭瘯鏁版嵁鏄惁宸茬粡鍑嗗濂斤紝濡傛灉娌℃湁鍑嗗濂斤紝緇х畫嫻嬭瘯錛岀洿鍒版暟鎹噯澶囧ソ涓烘銆傚湪榪欎釜涓嶆柇嫻嬭瘯鐨勮繃紼嬩腑錛屼細澶ч噺鐨勫崰鐢–PU鐨勬椂闂淬?/span>
鎶?span style="margin: 0px; padding: 0px; font-size: 14px;">SOCKET璁劇疆涓洪潪闃誨妯″紡錛屽嵆閫氱煡緋葷粺鍐呮牳錛氬湪璋冪敤Windows Sockets API鏃訛紝涓嶈璁╃嚎紼嬬潯鐪狅紝鑰屽簲璇ヨ鍑芥暟绔嬪嵆榪斿洖銆傚湪榪斿洖鏃訛紝璇ュ嚱鏁拌繑鍥炰竴涓敊璇唬鐮併傚浘鎵紺猴紝涓涓潪闃誨妯″紡濂楁帴瀛楀嬈¤皟鐢╮ecv()鍑芥暟鐨勮繃紼嬨傚墠涓夋璋冪敤recv()鍑芥暟鏃訛紝鍐呮牳鏁版嵁榪樻病鏈夊噯澶囧ソ銆傚洜姝わ紝璇ュ嚱鏁扮珛鍗寵繑鍥濿SAEWOULDBLOCK閿欒浠g爜銆傜鍥涙璋冪敤recv()鍑芥暟鏃訛紝鏁版嵁宸茬粡鍑嗗濂斤紝琚鍒跺埌搴旂敤紼嬪簭鐨勭紦鍐插尯涓紝recv()鍑芥暟榪斿洖鎴愬姛鎸囩ず錛屽簲鐢ㄧ▼搴忓紑濮嬪鐞嗘暟鎹?/span>
褰撲嬌鐢╯ocket()鍑芥暟鍜學SASocket()鍑芥暟鍒涘緩濂楁帴瀛楁椂錛岄粯璁ら兘鏄樆濉炵殑銆傚湪鍒涘緩濂楁帴瀛椾箣鍚庯紝閫氳繃璋冪敤ioctlsocket()鍑芥暟錛屽皢璇ュ鎺ュ瓧璁劇疆涓洪潪闃誨妯″紡銆侺inux涓嬬殑鍑芥暟鏄?fcntl().
濂楁帴瀛楄緗負闈為樆濉炴ā寮忓悗錛屽湪璋冪敤Windows Sockets API鍑芥暟鏃訛紝璋冪敤鍑芥暟浼氱珛鍗寵繑鍥炪傚ぇ澶氭暟鎯呭喌涓嬶紝榪欎簺鍑芥暟璋冪敤閮戒細璋冪敤“澶辮觸”錛屽茍榪斿洖WSAEWOULDBLOCK閿欒浠g爜銆傝鏄庤姹傜殑鎿嶄綔鍦ㄨ皟鐢ㄦ湡闂村唴娌℃湁鏃墮棿瀹屾垚銆傞氬父錛屽簲鐢ㄧ▼搴忛渶瑕侀噸澶嶈皟鐢ㄨ鍑芥暟錛岀洿鍒拌幏寰楁垚鍔熻繑鍥炰唬鐮併?/span>
闇瑕佽鏄庣殑鏄茍闈炴墍鏈夌殑Windows Sockets API鍦ㄩ潪闃誨妯″紡涓嬭皟鐢紝閮戒細榪斿洖WSAEWOULDBLOCK閿欒銆備緥濡傦紝浠ラ潪闃誨妯″紡鐨勫鎺ュ瓧涓哄弬鏁拌皟鐢╞ind()鍑芥暟鏃訛紝灝變笉浼氳繑鍥炶閿欒浠g爜銆傚綋鐒訛紝鍦ㄨ皟鐢╓SAStartup()鍑芥暟鏃舵洿涓嶄細榪斿洖璇ラ敊璇唬鐮侊紝鍥犱負璇ュ嚱鏁版槸搴旂敤紼嬪簭絎竴璋冪敤鐨勫嚱鏁幫紝褰撶劧涓嶄細榪斿洖榪欐牱鐨勯敊璇唬鐮併?/span>
瑕佸皢濂楁帴瀛楄緗負闈為樆濉炴ā寮忥紝闄や簡浣跨敤ioctlsocket()鍑芥暟涔嬪錛岃繕鍙互浣跨敤WSAAsyncselect()鍜學SAEventselect()鍑芥暟銆傚綋璋冪敤璇ュ嚱鏁版椂錛屽鎺ュ瓧浼氳嚜鍔ㄥ湴璁劇疆涓洪潪闃誨鏂瑰紡銆?br style="margin: 0px; padding: 0px;" />
銆銆鐢變簬浣跨敤闈為樆濉炲鎺ュ瓧鍦ㄨ皟鐢ㄥ嚱鏁版椂錛屼細緇忓父榪斿洖WSAEWOULDBLOCK閿欒銆傛墍浠ュ湪浠諱綍鏃跺欙紝閮藉簲浠旂粏媯鏌ヨ繑鍥炰唬鐮佸茍浣滃ソ瀵?#8220;澶辮觸”鐨勫噯澶囥傚簲鐢ㄧ▼搴忚繛緇笉鏂湴璋冪敤榪欎釜鍑芥暟錛岀洿鍒板畠榪斿洖鎴愬姛鎸囩ず涓烘銆備笂闈㈢殑紼嬪簭娓呭崟涓紝鍦╓hile寰幆浣撳唴涓嶆柇鍦拌皟鐢╮ecv()鍑芥暟錛屼互璇誨叆1024涓瓧鑺傜殑鏁版嵁銆傝繖縐嶅仛娉曞緢嫻垂緋葷粺璧勬簮銆?/span>
瑕佸畬鎴愯繖鏍風殑鎿嶄綔錛屾湁浜轟嬌鐢∕SG_PEEK鏍囧織璋冪敤recv()鍑芥暟鏌ョ湅緙撳啿鍖轟腑鏄惁鏈夋暟鎹彲璇匯傚悓鏍鳳紝榪欑鏂規硶涔熶笉濂姐傚洜涓鴻鍋氭硶瀵圭郴緇熼犳垚鐨勫紑閿鏄緢澶х殑錛屽茍涓斿簲鐢ㄧ▼搴忚嚦灝戣璋冪敤recv()鍑芥暟涓ゆ錛屾墠鑳藉疄闄呭湴璇誨叆鏁版嵁銆傝緝濂界殑鍋氭硶鏄紝浣跨敤濂楁帴瀛楃殑“I/O妯″瀷”鏉ュ垽鏂潪闃誨濂楁帴瀛楁槸鍚﹀彲璇誨彲鍐欍?/span>
闈為樆濉炴ā寮忓鎺ュ瓧涓庨樆濉炴ā寮忓鎺ュ瓧鐩告瘮錛屼笉瀹規槗浣跨敤銆備嬌鐢ㄩ潪闃誨妯″紡濂楁帴瀛楋紝闇瑕佺紪鍐欐洿澶氱殑浠g爜錛屼互渚垮湪姣忎釜Windows Sockets API鍑芥暟璋冪敤涓紝瀵規敹鍒扮殑WSAEWOULDBLOCK閿欒榪涜澶勭悊銆傚洜姝わ紝闈為樆濉炲鎺ュ瓧渚挎樉寰楁湁浜涢毦浜庝嬌鐢ㄣ?/span>
浣嗘槸錛岄潪闃誨濂楁帴瀛楀湪鎺у埗寤虹珛鐨勫涓繛鎺ワ紝鍦ㄦ暟鎹殑鏀跺彂閲忎笉鍧囷紝鏃墮棿涓嶅畾鏃訛紝鏄庢樉鍏鋒湁浼樺娍銆傝繖縐嶅鎺ュ瓧鍦ㄤ嬌鐢ㄤ笂瀛樺湪涓瀹氶毦搴︼紝浣嗗彧瑕佹帓闄や簡榪欎簺鍥伴毦錛屽畠鍦ㄥ姛鑳戒笂榪樻槸闈炲父寮哄ぇ鐨勩傞氬父鎯呭喌涓嬶紝鍙冭檻浣跨敤濂楁帴瀛楃殑“I/O妯″瀷”錛屽畠鏈夊姪浜庡簲鐢ㄧ▼搴忛氳繃寮傛鏂瑰紡錛屽悓鏃跺涓涓垨澶氫釜濂楁帴瀛楃殑閫氫俊鍔犱互綆$悊銆?/span>
綆浠嬶細涓昏鏄痵elect鍜宔poll錛涘涓涓狪O绔彛錛屼袱嬈¤皟鐢紝涓ゆ榪斿洖錛屾瘮闃誨IO騫舵病鏈変粈涔堜紭瓚婃э紱鍏抽敭鏄兘瀹炵幇鍚屾椂瀵瑰涓狪O绔彛榪涜鐩戝惉錛?/span>
I/O澶嶇敤妯″瀷浼氱敤鍒皊elect銆乸oll銆乪poll鍑芥暟錛岃繖鍑犱釜鍑芥暟涔熶細浣胯繘紼嬮樆濉烇紝浣嗘槸鍜岄樆濉濱/O鎵涓嶅悓鐨勭殑錛岃繖涓や釜鍑芥暟鍙互鍚屾椂闃誨澶氫釜I/O鎿嶄綔銆傝屼笖鍙互鍚屾椂瀵瑰涓鎿嶄綔錛屽涓啓鎿嶄綔鐨処/O鍑芥暟榪涜媯嫻嬶紝鐩村埌鏈夋暟鎹彲璇繪垨鍙啓鏃訛紝鎵嶇湡姝h皟鐢↖/O鎿嶄綔鍑芥暟銆?/span>
綆浠嬶細涓ゆ璋冪敤錛屼袱嬈¤繑鍥烇紱
棣栧厛鎴戜滑鍏佽濂楁帴鍙h繘琛屼俊鍙烽┍鍔↖/O,騫跺畨瑁呬竴涓俊鍙峰鐞嗗嚱鏁幫紝榪涚▼緇х畫榪愯騫朵笉闃誨銆傚綋鏁版嵁鍑嗗濂芥椂錛岃繘紼嬩細鏀跺埌涓涓猄IGIO淇″彿錛屽彲浠ュ湪淇″彿澶勭悊鍑芥暟涓皟鐢↖/O鎿嶄綔鍑芥暟澶勭悊鏁版嵁銆?/span>
綆浠嬶細鏁版嵁鎷瘋礉鐨勬椂鍊欒繘紼嬫棤闇闃誨銆?/span>
褰撲竴涓紓姝ヨ繃紼嬭皟鐢ㄥ彂鍑哄悗錛岃皟鐢ㄨ呬笉鑳界珛鍒誨緱鍒扮粨鏋溿傚疄闄呭鐞嗚繖涓皟鐢ㄧ殑閮ㄤ歡鍦ㄥ畬鎴愬悗錛岄氳繃鐘舵併侀氱煡鍜屽洖璋冩潵閫氱煡璋冪敤鑰呯殑杈撳叆杈撳嚭鎿嶄綔
鍚屾IO寮曡搗榪涚▼闃誨錛岀洿鑷矷O鎿嶄綔瀹屾垚銆?br style="margin: 0px; padding: 0px;" />寮傛IO涓嶄細寮曡搗榪涚▼闃誨銆?br style="margin: 0px; padding: 0px;" />IO澶嶇敤鏄厛閫氳繃select璋冪敤闃誨銆?br style="margin: 0px; padding: 0px;" />
1. select銆乸oll銆乪poll綆浠?br style="margin: 0px; padding: 0px;" />
epoll璺焥elect閮借兘鎻愪緵澶氳礬I/O澶嶇敤鐨勮В鍐蟲柟妗堛傚湪鐜板湪鐨凩inux鍐呮牳閲屾湁閮借兘澶熸敮鎸侊紝鍏朵腑epoll鏄疞inux鎵鐗規湁錛岃宻elect鍒欏簲璇ユ槸POSIX鎵瑙勫畾錛屼竴鑸搷浣滅郴緇熷潎鏈夊疄鐜?/p>
select錛?/span>
select鏈川涓婃槸閫氳繃璁劇疆鎴栬呮鏌ュ瓨鏀緁d鏍囧織浣嶇殑鏁版嵁緇撴瀯鏉ヨ繘琛屼笅涓姝ュ鐞嗐傝繖鏍鋒墍甯︽潵鐨勭己鐐規槸錛?/p>
1銆?鍗曚釜榪涚▼鍙洃瑙嗙殑fd鏁伴噺琚檺鍒訛紝鍗寵兘鐩戝惉绔彛鐨勫ぇ灝忔湁闄愩?br style="margin: 0px; padding: 0px;" />
涓鑸潵璇磋繖涓暟鐩拰緋葷粺鍐呭瓨鍏崇郴寰堝ぇ錛屽叿浣撴暟鐩彲浠at /proc/sys/fs/file-max瀵熺湅銆?2浣嶆満榛樿鏄?024涓?4浣嶆満榛樿鏄?048.
2銆?瀵箂ocket榪涜鎵弿鏃舵槸綰挎ф壂鎻忥紝鍗抽噰鐢ㄨ疆璇㈢殑鏂規硶錛屾晥鐜囪緝浣庯細
褰撳鎺ュ瓧姣旇緝澶氱殑鏃跺欙紝姣忔select()閮借閫氳繃閬嶅巻FD_SETSIZE涓猄ocket鏉ュ畬鎴愯皟搴?涓嶇鍝釜Socket鏄椿璺冪殑,閮介亶鍘嗕竴閬嶃傝繖浼氭氮璐瑰緢澶欳PU鏃墮棿銆傚鏋滆兘緇欏鎺ュ瓧娉ㄥ唽鏌愪釜鍥炶皟鍑芥暟錛屽綋浠栦滑媧昏穬鏃訛紝鑷姩瀹屾垚鐩稿叧鎿嶄綔錛岄偅灝遍伩鍏嶄簡杞錛岃繖姝f槸epoll涓巏queue鍋氱殑銆?/p>
3銆侀渶瑕佺淮鎶や竴涓敤鏉ュ瓨鏀懼ぇ閲廸d鐨勬暟鎹粨鏋勶紝榪欐牱浼氫嬌寰楃敤鎴風┖闂村拰鍐呮牳絀洪棿鍦ㄤ紶閫掕緇撴瀯鏃跺鍒跺紑閿澶?/p>
poll錛?/span>
poll鏈川涓婂拰select娌℃湁鍖哄埆錛屽畠灝嗙敤鎴蜂紶鍏ョ殑鏁扮粍鎷瘋礉鍒板唴鏍哥┖闂達紝鐒跺悗鏌ヨ姣忎釜fd瀵瑰簲鐨勮澶囩姸鎬侊紝濡傛灉璁懼灝辯華鍒欏湪璁懼絳夊緟闃熷垪涓姞鍏ヤ竴欏瑰茍緇х畫閬嶅巻錛屽鏋滈亶鍘嗗畬鎵鏈塮d鍚庢病鏈夊彂鐜板氨緇澶囷紝鍒欐寕璧峰綋鍓嶈繘紼嬶紝鐩村埌璁懼灝辯華鎴栬呬富鍔ㄨ秴鏃訛紝琚敜閱掑悗瀹冨張瑕佸啀嬈¢亶鍘唂d銆傝繖涓繃紼嬬粡鍘嗕簡澶氭鏃犺皳鐨勯亶鍘嗐?/p>
瀹冩病鏈夋渶澶ц繛鎺ユ暟鐨勯檺鍒訛紝鍘熷洜鏄畠鏄熀浜庨摼琛ㄦ潵瀛樺偍鐨勶紝浣嗘槸鍚屾牱鏈変竴涓己鐐癸細
1銆佸ぇ閲忕殑fd鐨勬暟緇勮鏁翠綋澶嶅埗浜庣敤鎴鋒佸拰鍐呮牳鍦板潃絀洪棿涔嬮棿錛岃屼笉綆¤繖鏍風殑澶嶅埗鏄笉鏄湁鎰忎箟銆?nbsp; 2銆乸oll榪樻湁涓涓壒鐐規槸“姘村鉤瑙﹀彂”錛屽鏋滄姤鍛婁簡fd鍚庯紝娌℃湁琚鐞嗭紝閭d箞涓嬫poll鏃朵細鍐嶆鎶ュ憡璇d銆?/p>epoll:
epoll鏀寔姘村鉤瑙﹀彂鍜岃竟緙樿Е鍙戯紝鏈澶х殑鐗圭偣鍦ㄤ簬杈圭紭瑙﹀彂錛屽畠鍙憡璇夎繘紼嬪摢浜沠d鍒氬垰鍙樹負灝遍渶鎬侊紝騫朵笖鍙細閫氱煡涓嬈°傝繕鏈変竴涓壒鐐規槸錛宔poll浣跨敤“浜嬩歡”鐨勫氨緇氱煡鏂瑰紡錛岄氳繃epoll_ctl娉ㄥ唽fd錛屼竴鏃﹁fd灝辯華錛屽唴鏍稿氨浼氶噰鐢ㄧ被浼糲allback鐨勫洖璋冩満鍒舵潵嬋媧昏fd錛宔poll_wait渚垮彲浠ユ敹鍒伴氱煡
epoll鐨勪紭鐐癸細
1銆佹敮鎸佷竴涓繘紼嬫墍鑳芥墦寮鐨勬渶澶ц繛鎺ユ暟
select | 鍗曚釜榪涚▼鎵鑳芥墦寮鐨勬渶澶ц繛鎺ユ暟鏈塅D_SETSIZE瀹忓畾涔夛紝鍏跺ぇ灝忔槸32涓暣鏁扮殑澶у皬錛堝湪32浣嶇殑鏈哄櫒涓婏紝澶у皬灝辨槸32*32錛屽悓鐞?4浣嶆満鍣ㄤ笂FD_SETSIZE涓?2*64錛夛紝褰撶劧鎴戜滑鍙互瀵硅繘琛屼慨鏀癸紝鐒跺悗閲嶆柊緙栬瘧鍐呮牳錛屼絾鏄ц兘鍙兘浼氬彈鍒板獎鍝嶏紝榪欓渶瑕佽繘涓姝ョ殑嫻嬭瘯銆?/p> |
poll | poll鏈川涓婂拰select娌℃湁鍖哄埆錛屼絾鏄畠娌℃湁鏈澶ц繛鎺ユ暟鐨勯檺鍒訛紝鍘熷洜鏄畠鏄熀浜庨摼琛ㄦ潵瀛樺偍鐨?/p> |
epoll | 铏界劧榪炴帴鏁版湁涓婇檺錛屼絾鏄緢澶э紝1G鍐呭瓨鐨勬満鍣ㄤ笂鍙互鎵撳紑10涓囧乏鍙崇殑榪炴帴錛?G鍐呭瓨鐨勬満鍣ㄥ彲浠ユ墦寮20涓囧乏鍙崇殑榪炴帴 |
2銆丗D鍓у鍚庡甫鏉ョ殑IO鏁堢巼闂
select | 鍥犱負姣忔璋冪敤鏃墮兘浼氬榪炴帴榪涜綰挎ч亶鍘嗭紝鎵浠ラ殢鐫FD鐨勫鍔犱細閫犳垚閬嶅巻閫熷害鎱㈢殑“綰挎т笅闄嶆ц兘闂”銆?/p> |
poll | 鍚屼笂 |
epoll | 鍥犱負epoll鍐呮牳涓疄鐜版槸鏍規嵁姣忎釜fd涓婄殑callback鍑芥暟鏉ュ疄鐜扮殑錛屽彧鏈夋椿璺冪殑socket鎵嶄細涓誨姩璋冪敤callback錛屾墍浠ュ湪媧昏穬socket杈冨皯鐨勬儏鍐典笅錛屼嬌鐢╡poll娌℃湁鍓嶉潰涓よ呯殑綰挎т笅闄嶇殑鎬ц兘闂錛屼絾鏄墍鏈塻ocket閮藉緢媧昏穬鐨勬儏鍐典笅錛屽彲鑳戒細鏈夋ц兘闂銆?/p> |
3銆?娑堟伅浼犻掓柟寮?/p>
select | 鍐呮牳闇瑕佸皢娑堟伅浼犻掑埌鐢ㄦ埛絀洪棿錛岄兘闇瑕佸唴鏍告嫹璐濆姩浣?/p> |
poll | 鍚屼笂 |
epoll | epoll閫氳繃鍐呮牳鍜岀敤鎴風┖闂村叡浜竴鍧楀唴瀛樻潵瀹炵幇鐨勩?/p> |
鎬葷粨錛?/span>
緇間笂錛屽湪閫夋嫨select錛宲oll錛宔poll鏃惰鏍規嵁鍏蜂綋鐨勪嬌鐢ㄥ満鍚堜互鍙婅繖涓夌鏂瑰紡鐨勮嚜韜壒鐐廣?/p>
1銆佽〃闈笂鐪媏poll鐨勬ц兘鏈濂斤紝浣嗘槸鍦ㄨ繛鎺ユ暟灝戝茍涓旇繛鎺ラ兘鍗佸垎媧昏穬鐨勬儏鍐典笅錛宻elect鍜宲oll鐨勬ц兘鍙兘姣攅poll濂斤紝姣曠珶epoll鐨勯氱煡鏈哄埗闇瑕佸緢澶氬嚱鏁板洖璋冦?/p>
2銆?span style="margin: 0px; padding: 0px; color: #000000; background-color: #ffcc00;">select浣庢晥鏄洜涓烘瘡嬈″畠閮介渶瑕佽疆璇€備絾浣庢晥涔熸槸鐩稿鐨勶紝瑙嗘儏鍐佃屽畾錛屼篃鍙氳繃鑹ソ鐨勮璁℃敼鍠?/span>
MFC鏂囨。-瑙嗗浘緇撴瀯涓紝搴忓垪鍖栨満鍒跺彲浠ュ疄鐜板唴瀛樹腑瀵硅薄鍌ㄥ瓨鍜屽姞杞姐?/span>
搴忓垪鍖栨満鍒跺垎涓哄簭鍒楀寲鍜屽弽搴忓垪鍖栵紝搴忓垪鍖栨槸鎶婂唴瀛樹腑鐨勫璞′互浜岃繘鍒舵枃浠剁殑褰㈠紡瀛樺偍鍦ㄧ鐩樹腑銆傚弽搴忓垪鍖栨槸鎶婂簭鍒楀寲鍚庣敓鎴愮殑鏂囦歡鎭㈠鍒板唴瀛樸?/p>
2銆?/span>CArchive綾?/span>
CArchive娌℃湁鍩虹被銆?/span>
CArchive鍏佽浠ヤ竴涓案涔呬簩榪涘埗錛堥氬父涓虹鐩樺瓨鍌級鐨勫艦寮忎繚瀛樹竴涓璞$殑澶嶆潅緗戠粶錛屽畠鍙互鍦ㄥ璞¤鍒犻櫎鏃訛紝榪樿兘姘鎬箙淇濆瓨銆傚彲浠ヤ粠姘鎬箙瀛樺偍涓杞藉璞★紝鍦ㄥ唴瀛樹腑閲嶆柊鏋勯犲畠浠備嬌寰楁暟鎹案涔呬繚鐣欑殑榪囩▼灝卞彨浣?/span>“搴忓垪鍖?#8221;銆?/span>
鍙互鎶婁竴涓綊妗e璞$湅浣滀竴縐嶄簩榪涘埗嫻併傝薄杈撳叆/杈撳嚭嫻佷竴鏍鳳紝褰掓。涓庢枃浠舵湁鍏沖茍鍏佽鍐欑紦鍐插尯浠ュ強浠庣‖鐩樿鍑烘垨璇誨叆鏁版嵁銆傝緭鍏?/span>/杈撳嚭嫻佸鐞嗕竴緋誨垪ASCII瀛楃錛屼絾鏄綊妗f枃浠朵互涓縐嶆湁鏁堢巼銆佺簿緇冪殑鏍煎紡澶勭悊浜岃繘鍒跺璞°?/span>
3銆?/span>CArchive瀵硅薄澶勭悊鍩虹綾誨瀷鏁版嵁
蹇呴』鍦ㄥ垱寤轟竴涓?span style="font-family: 'Times New Roman'">CArchive瀵硅薄涔嬪墠錛屽垱寤轟竴涓?/span>CFile瀵硅薄銆傚彟澶栵紝蹇呴』紜俊褰掓。鏂囦歡鐨勮鍏?/span>/瀛樺偍涓庢枃浠剁殑鎵撳紑妯″紡鏄吋瀹圭殑銆傛瘡涓涓枃浠跺彧闄愪簬涓涓椿鍔ㄥ綊妗f枃浠躲?/span>
褰撴瀯閫犱竴涓?span style="font-family: 'Times New Roman'">CArchive瀵硅薄鏃訛紝瑕佹妸瀹冮檮鍔犵粰琛ㄧず涓涓墦寮鏂囦歡鐨勭被CFile錛堟垨媧劇敓綾伙級鐨勫璞′笂銆傝繕瑕佹寚瀹氬綊妗f枃浠跺皢鐢ㄤ簬瑁呰澆榪樻槸瀛樺偍銆?/span>
紺轟緥錛?/p>
4銆?/span>CArchive瀵硅薄澶勭悊鑷畾涔夊璞$被鍨嬫暟鎹?/strong>
CArchive瀵硅薄涓嶄粎鍙互澶勭悊棣栬綾誨瀷錛岃屼笖榪樿兘澶勭悊涓?/span>搴忓垪鍖栬岃璁$殑鐗規畩鐨勭被鐨勫璞°傚彲浠ュ簭鍒楀寲鐨勭被鏈変互涓嬬壒鐐癸細
1銆佸繀欏諱負CObject媧劇敓綾匯?/span>鐩存帴鎴栬呴棿鎺ョ殑緇ф壙CObject綾匯?/span>
2銆佸繀欏婚噸鍐機Object綾葷殑Serialize鎴愬憳鍑芥暟銆?/p>
3銆?/span>浣跨敤DECLARE_SERIAL鍜?/span>IMPLEMENT_SERIAL瀹忋?/span>
4銆佸繀欏繪湁涓涓粯璁ゆ瀯閫犲嚱鏁?/span>
鍦⊿erialize鎴愬憳鍑芥暟涓畬鎴愪繚瀛樺拰鍔犺澆鐨勫姛鑳姐?/p>
DECLARE_SERIAL( class_name ) 鍙傛暟涓?/span>褰撳墠綾誨悕銆?/p>
IMPLEMENT_SERIAL( class_name, base_class_name, wSchema ) 絎竴涓弬鏁頒負褰撳墠綾誨悕錛岀浜屼釜鍙傛暟涓虹埗綾葷被鍚嶏紝絎笁涓弬鏁頒負璇ョ被鐨勭壒瀹氭暣鍨嬫爣璇?span style="font-family: 'Times New Roman'">,
紺轟緥錛?/p>
閲嶈澆鎻愬彇錛?span style="font-family: 'Times New Roman'">>>錛夊拰鎻掑叆錛?/span><<錛夋槸鏂逛究鐨勫綊妗g紪紼嬫帴鍙c傚畠鏀寔涓昏綾誨瀷鍜?/span>CObject媧劇敓綾匯?/span>
CArchive榪樻敮鎸佷嬌鐢?/span>MFC Windows濂楁帴瀛楃被CSocket鍜?/span>CSocketFile緙栫▼銆?/span>IsBufferEmpty鎴愬憳鍑芥暟涔熸敮鎸佽繖縐嶄嬌鐢ㄣ?/span>
涓浜涢泦鍚堢被涔熸敮鎸佸簭鍒楀寲錛?span style="font-family: 'Times New Roman'">CObArray,Vector,CPtrArray銆?/span>
鍦?span style="font-family: 'Times New Roman'">MFC鏂囨。-瑙嗗浘緇撴瀯涓紝Doc綾繪槸琚郴緇熻瀹氬ソ鏀寔搴忓垪鍖栫殑綾伙紝鍦?/span>Doc綾諱腑閲嶅啓Serialize鎴愬憳鍑芥暟銆傚湪鍑芥暟涓浣犺淇濆瓨鐨勫璞″簭鍒楀寲銆?/p>
瀹屾垚涔嬪悗錛岀偣鍑昏彍鍗曟爮涓婄殑淇濆瓨鍜屾墦寮灝卞彲浠ュ疄鐜板簭鍒楀寲浜嗐?/p>
]]>
1. NoSQL鍏跺疄鏄叧緋誨瀷鏁版嵁搴撶浉瀵瑰簲鐨勶紝鏄痭o relational 鍗抽潪鍏崇郴鍨嬫暟鎹簱錛泈eb2.0鐗瑰埆鏄竴浜涚敤鎴瘋闂噺姣旇緝澶х殑緗戠珯濡傦細www.taobao.com weibo.com baidu.com
姣忕鐨勮闂噺鍙兘鏄笂涓囨(10K);浼犵粺鐨勫叧緋誨瀷鏁版嵁搴?mysql oracle 姣忕榪涜10K嬈℃暟鎹煡璇㈣繕鍙互鍕夊己搴斾粯錛屼絾鏄鏋滄槸姣忕10K嬈¤鍐欐暟鎹簱錛屽洜涓烘暟鎹簱鐨勬暟鎹兘鏄嵏杞界鐩樹腑錛屾墍浠ョ鐩業O涔熸槸鏀拺涓嶄綇姣忕10K鐨勮鍐欍?/p>
鍦╳eb鐨勬灦鏋勪腑錛屾暟鎹簱鏄渶闅捐繘琛屾í鍚戞墿灞曠殑(閫氳繃綆鍗曠殑娣誨姞鏈哄櫒鍜岀‖浠訛紝涔熷氨鏄坊鍔犱竴浜涙湇鍔¤妭鐐規潵鎻愰珮璐熻澆鍧囪 鑳藉姏)錛涘浜?*24灝忔椂鍦ㄧ嚎鐨勭綉绔欐潵璇達紝瀵瑰叧緋誨瀷鏁版嵁搴撹繘琛屽崌綰у拰鎵╁睍(鍒嗗竷寮忔墿灞?-鍒嗗簱鍒嗚〃)鏄潪甯哥棝鑻︾殑浜嬫儏錛屽線寰瑕佽繘琛屽仠鏈虹淮鎶わ紱浣嗚繖縐嶅www.taobao.com 鏉ヨ鏄潪甯鎬笐闄嬬殑浜嬫儏銆俒--鍙笉鍙互娣誨姞鍑犲彴鏈嶅姟鍣ㄧ劧鍚庢妸澶嶅埗錛岀劧鍚庤繘琛岃礋杞藉潎琛?-]銆?/p>
NoSQL 鏄噰鐢╧ey/value鐨勭粨鏋勬潵瀛樺偍鏁版嵁錛岃屼笖澶у鏁扮殑NoSQL閲囩敤鍐呭瓨鏉ュ瓨鍌ㄦ暟鎹紝涓孌墊椂闂村悗鎶婃暟鎹悓姝ュ埌紓佺洏涓紱鐢變簬浣跨敤鍐呭瓨淇濆瓨鏁版嵁寰堝ソ鍦拌В鍐充簡楂樺茍鍙戣鍐?/strong>鐨勯棶棰橈紱鍏舵NoSQL鎻愪緵浜嗘牴鎹甼ey鍊艱繘琛屾í鍚戝垎琛?姣斿錛氱敤鎴穒d錛屾瘡2000w鏁版嵁鏀懼埌涓鍙版暟鎹簱鏈嶅姟鍣ㄤ腑鐨勪竴寮犵敤鎴瘋〃涓?錛涘悓鏃跺疄鐜頒簡涓諱粠鏁版嵁搴撲簰澶囷紝榪欐牱鍙互璁╂暟鎹簱鐨勫姩鎬佽縼縐誨彉寰楃畝鍗曪紝璁╂暟鎹簱鏈嶅姟鍣ㄧ殑妯悜鎵╁睍鍙樺緱瀹規槗浜嗐?/p> 2. 鍒嗗竷寮忔暟鎹簱鐨凜AP鐞嗚 CAP鐞嗚鏄Consistency錛堜竴鑷存э級錛?/span> Availability錛堝彲鐢ㄦэ級錛?/span> partition tolerance錛堝垎甯冿級涓夐儴鍒嗙郴緇燂紱鑰屼笖浠諱綍緋葷粺鍙細婊¤凍涓や釜錛屼笉浼氭湁浠諱綍鐨勭郴緇熶細鍚屾椂婊¤凍榪欎笁涓潯浠訛紱鍦ㄤ紶緇熺殑鍏崇郴鍨嬫暟鎹簱涓槸寮鴻皟C 涓鑷存э紝浣嗘槸鍦ㄦ弧瓚抽珮鍙敤鎬?楂樺茍鍙戞椂鏁堢巼涓嶉珮)錛岄珮鎵╁睍鎬?鍒嗗竷寮忔暟鎹簱榪涜妯悜鎵╁睍)瀛樺湪涓瀹氱殑緙洪櫡銆備絾鏄疦oSQL鍦ㄨ繘琛岃璁$殑鏃跺欏氨鏄拡瀵瑰茍鍙戞搗閲忔暟鎹瓨鍌ㄧ殑鎯呭喌涓嬭繘琛岃璁$殑錛屽湪榪欑楂樺茍鍙戞搗閲忔暟鎹笅鏁版嵁涓鑷存у茍涓嶅儚閾惰閭f牱淇濇寔鏁版嵁鐨勫己涓鑷存э紝鎵浠oSQL·鏀懼純寮轟竴鑷存х殑榪芥眰錛屼粠鑰岃揪鍒版洿楂樼殑鍙敤鎬у拰鎵╁睍鎬э紝閫氳繃“楦藉發鍘熺悊”杈懼埌鏈緇堢殑涓鑷存с?/span> 鐜板湪鐨勬暟鎹簱緋葷粺鑲畾鏄悓涓涓椂鍒繪湁澶氫釜榪涚▼瀵規暟鎹簱榪涜璇誨啓鎿嶄綔錛屽亣璁劇幇鍦ㄦ湁3涓繘紼?A銆丅銆丆)瀵規暟鎹簱鐨勬煇琛ㄨ繘琛屾搷浣滐紝 瑙e喅鏂規錛?/span> 1錛?/font> 鎵撳紑寮濮嬭彍鍗曪紝鐐瑰嚮榪愯鎸夐挳錛岃緭鍏?/span>regedit錛岃繘鍏ユ敞鍐岃〃鐣岄潰 2錛?/font> 鎵懼埌鐩綍 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones 3錛?/font> 鏌ョ湅姝ょ洰褰曚笅鏄惁瀛樺湪1000鐩綍錛屽鏋滀笉瀛樺湪鍒欏緩绔嬫鐩綍 4錛?/font> 鍦?/span>1000鐩綍涓嬪垱寤?/span>DWORD鍊鹼紝鍚嶅瓧涓?/span>1207錛屽間負0 5錛?/font> 閲嶅惎vs2005/2008
榪欐牱灝卞彲浠ヤ繚璇佷竾鏃犱竴澶變簡錛?/div>
]]>
]]>
class BinaryHeap
{
private:
int Size;
T * Tarr;
public:
BinaryHeap();
void insert(T x);
T deleteMin();
~BinaryHeap();
};
template<class T,int MAX>
BinaryHeap<T,MAX>::BinaryHeap()
{
Tarr=new T[MAX+1];
if(Tarr==NULL) {cout<<"鍒涘緩鏁扮粍澶辮觸"<<endl;return ;}
Size=0;
}
template<class T,int MAX>
void BinaryHeap<T,MAX>::insert(T x)
{
++Size;
if(Size==MAX) return;
int i;
for(i=Size;Tarr[i/2]>x;i/=2)
Tarr[i]=Tarr[i/2];
Tarr[i]=x;
}
template<class T,int MAX>
T BinaryHeap<T,MAX>::deleteMin()
{
if(Size==0) return 0;
T minem=Tarr[1];
T lastem=Tarr[Size--];
int i,child;
for(i=1;i*2<=Size;i=child)
{
child=i*2;
if(child!=Size-1&&Tarr[child+1]<Tarr[child])
++child;
if(lastem>Tarr[child])
Tarr[i]=Tarr[child];
else
break;
}
Tarr[i]=lastem;
return minem;
}
template<class T,int MAX>
BinaryHeap<T,MAX>::~BinaryHeap()
{
delete[] Tarr;
}
]]>
const int MAX=1000003;
template <class T>
class hash
{
private:
int pos;
int next[MAX];
int head[MAX];
T key[MAX];
public:
hash();
bool search(T x);
void push(T x);
};
template <class T>
hash<T>::hash()
{
pos=0;
memset(next,-1,sizeof(next));
memset(head,-1,sizeof(head));
//memset(key,-1,sizeof(key));
}
template <class T>
inline bool hash<T>::search(const T x)
{
int temp=x%MAX;
int t=head[temp];
while(t!=-1)
{
if (key[t]==x)
{
return 1;
}
t=next[t];
}
return 0;
}
template <class T>
inline void hash<T>::push(const T x)
{
int temp=x%MAX;
if (head[temp]!=-1)
{
next[pos]=head[temp];
}
head[temp]=pos;
key[pos]=x;
pos++;
}
]]>
鍐欎竴涓浠芥枃浠剁殑鑴氭湰錛屽埄鐢╟rontab瀹氭椂鎵ц銆?/p>
姝ラ濡備笅錛?/p>
1錛岃緗浠界洰鐨勭洰褰?/p>
2錛岃繘鍏ョ洰鐨勭洰褰?/p>
3錛岃幏鍙栨椂闂達紝璁劇疆澶囦喚鏂囦歡鍚?/p>
4錛屽浠芥枃浠?/p>
#1錛氳幏鍙杛oot/bak瀛楃涓?/p>
#2錛?z閫夐」鍒ゆ柇鏄惁涓虹┖
#3錛氬鏋滀負絀哄氨鍒涘緩鐩綍
#4錛氳繘鍏ヨ鐩綍
#5錛氳幏鍙栧綋鍓嶆椂闂?/p>
#6錛氳緗浠芥枃浠跺悕
#7錛氬皢/etc鐩綍涓嬫墍鏈夋枃浠舵墦鍖呭浠?/p>
-z 鐢╣izp鍘嬬緝鍜岃В鍘嬬緝鏂囦歡錛岃嫢鍔犱笂姝ら夐」鍒涘緩鐨勫帇緙╁寘錛岃В鍘嬬殑鏃跺欎篃璁歌鍔犱笂姝ら夐」
-c 鍒涘緩鏂扮殑鍖?/p>
-v 璇︾粏鎶ュ憡tar澶勭悊鏂囦歡鐨勪俊鎭?/p>
-f 浣跨敤鍘嬬緝鏂囦歡鎴栬澶囷紝璇ラ夐」閫氬父浜嬪繀閫夌殑
瀹氭椂鎵ц鑴氭湰闇瑕佷慨鏀筫tc涓殑 crontab鏂囦歡
* * * * * #琛ㄧず姣忓垎閽?/p>
1 * * * * #琛ㄧず姣忓皬鏃剁殑絎竴鍒嗛挓
2 12 * * * #琛ㄧず姣忓ぉ鐨?2錛?2
0-59/2 * * * * #姣忎袱鍒嗛挓鎵ц涓嬈′換鍔?/p>