锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久久欧美精品sm网站,国产精品系列在线播放,新片速递亚洲合集欧美合集http://www.shnenglu.com/cxiaojia/鍘氬痙 鍗氬 姹傜湡 鑷沖杽 The bright moon and breezezh-cnSat, 11 Oct 2025 01:11:20 GMTSat, 11 Oct 2025 01:11:20 GMT60閲嶆柊璁よ瘑JavaScripthttp://www.shnenglu.com/cxiaojia/archive/2013/07/30/202240.htmlC灝忓姞C灝忓姞Tue, 30 Jul 2013 04:19:00 GMThttp://www.shnenglu.com/cxiaojia/archive/2013/07/30/202240.htmlhttp://www.shnenglu.com/cxiaojia/comments/202240.htmlhttp://www.shnenglu.com/cxiaojia/archive/2013/07/30/202240.html#Feedback0http://www.shnenglu.com/cxiaojia/comments/commentRss/202240.htmlhttp://www.shnenglu.com/cxiaojia/services/trackbacks/202240.html
   鍏徃鍑嗗鍚姩鐨勪竴涓墜娓擱」鐩紝鏈嶅姟鍣ㄧ鍑嗗浣跨敤緗戞槗鐨勫紑婧愭鏋秔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
   });
});
   鍦ㄤ笂闈㈢殑浠g爜涓紝鎴戜滑闇瑕佸湪end浜嬩歡涓鐞唕esponseHTML鍙橀噺錛岀敱浜嶫avascript鐨勯棴鍖呯壒鎬э紝鎴戜滑鍙互鍦ㄤ袱涓洖璋冨嚱鏁頒箣澶栧畾涔塺esponseHTML鍙橀噺錛岀劧鍚庡湪data浜嬩歡瀵瑰簲鐨勫洖璋冨嚱鏁頒腑涓嶆柇淇敼鍏跺鹼紝騫舵渶緇堝湪end浜嬩歡涓闂鐞嗐?br />
   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" />

C灝忓姞 2013-07-30 12:19 鍙戣〃璇勮
]]>
鐢眃ota璇存父鎴忔妧鑳借璁?杞澆)http://www.shnenglu.com/cxiaojia/archive/2013/05/29/200680.htmlC灝忓姞C灝忓姞Wed, 29 May 2013 07:18:00 GMThttp://www.shnenglu.com/cxiaojia/archive/2013/05/29/200680.htmlhttp://www.shnenglu.com/cxiaojia/comments/200680.htmlhttp://www.shnenglu.com/cxiaojia/archive/2013/05/29/200680.html#Feedback0http://www.shnenglu.com/cxiaojia/comments/commentRss/200680.htmlhttp://www.shnenglu.com/cxiaojia/services/trackbacks/200680.html杞嚜錛?a >http://blog.sina.com.cn/s/blog_4bb3f8270100ephf.html

娓告垙鐨勬妧鑳借璁℃槸澧炲姞娓告垙鍙帺鎬х殑閲嶈鏂瑰紡涔嬩竴銆?br />铏界劧鍦ㄥ疄闄呭伐浣滀腑錛屽ぇ澶氶亣鍒扮殑鎯呭喌搴旇鏄▼搴忔棤娉曞疄鐜版垨鑰呮槸鍥犳晥鐜囦笉澶熻屾斁寮冦備絾鍦ㄤ竴浜涚綉娓鎬互鍙婂崟鏈烘父鎴忎腑錛屾妧鑳芥灟鐕ョ殑鐜拌薄涔熷薄瑙佷笉椴溿?br />鏈枃鍊熼壌浜嶥OTA鐨勬妧鑳借璁¤璧鳳紝鎺㈣娓告垙涓妧鑳借璁$殑鎬濊礬涓庢柟鍚戙?br />鎶鑳藉彲浠ユ殏鏃舵垨鑰呮案榪滄敼鍙樻父鎴忎腑鍚勭鍏冪礌鏁板箋?br />榪欎簺鍏冪礌鍑犱箮灝辨槸鏋勬垚娓告垙鎴栬呰鑹茬殑鍩烘湰鍏冪礌姣斿HP.MP.鍔涢噺銆佹晱鎹楓佹櫤鍔涖佽漿韜熷害銆佺Щ鍔ㄩ熷害銆佽閲庛佺鎾炰綋縐佸ぉ姘斻佸湴褰€佺瓑絳夈?br />鑰屾墍璋撶殑鎶鑳藉氨鏄彲璁╃帺瀹朵嬌鐢ㄤ箣鍚庣煭鏆傛垨鑰呮案涔呮敼鍙樿繖浜涘厓绱犵殑涓滆タ銆?br />鎶鑳借璁$殑瓚e懗鎬т篃灝卞湪姝ゃ?br />涓涓妧鑳芥墍璁懼畾鐨勫厓绱犲彲浠ョ洿鎺ュ獎鍝嶇帺瀹剁殑蹇冩併佹垨鑰呰鏄嬌鐢ㄨ繖涓妧鑳界殑縐瀬鎬с?br />濡傛灉娓告垙涓嚭鐜板嚑涓佺洿鍒拌嫢騫蹭釜鏃犳硶寮曡搗鐜╁縐瀬鎬х殑鎶鑳界殑璇濓紝閭d箞灝變細褰卞搷鐜╁瀵規暣浣撴父鎴忕殑縐瀬鎬с?br />鑰屽綋鎴戜滑璁捐鎶鑳界殑鏃跺欙紝灝辮浠庤繋鍚堢帺瀹剁殑蹇冩佸叆鎵嬫潵璁捐娓告垙涓殑鎶鑳姐?br />涓嬮潰鍙槸鏁村悎鍑烘垜鏆傛椂鎵鑳芥兂鍒扮殑鍏冪礌錛屾帓鍚嶄笉鍒嗕紭鍏堢▼搴︺?br /> 
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>



C灝忓姞 2013-05-29 15:18 鍙戣〃璇勮
]]>
ACE鍓嶆憚鍣≒roactor鏈濂界殑璁茶В錛堣漿杞斤級http://www.shnenglu.com/cxiaojia/archive/2013/04/12/199385.htmlC灝忓姞C灝忓姞Fri, 12 Apr 2013 09:43:00 GMThttp://www.shnenglu.com/cxiaojia/archive/2013/04/12/199385.htmlhttp://www.shnenglu.com/cxiaojia/comments/199385.htmlhttp://www.shnenglu.com/cxiaojia/archive/2013/04/12/199385.html#Feedback3http://www.shnenglu.com/cxiaojia/comments/commentRss/199385.htmlhttp://www.shnenglu.com/cxiaojia/services/trackbacks/199385.html杞嚜錛?a >http://blog.csdn.net/caisini_vc/article/details/4474910
鎶婅繖涓ゅぉ鍋歅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鏂規硶涓兘鏈変簺浠涔堜唬鐮侊細


void TPTCPAsynchServerImpl::open (ACE_HANDLE handle, ACE_Message_Block &message_block)
{
 ACE_DEBUG ((LM_DEBUG, 
"%N:%l:TPTCPAsynchServerImpl::open() "));
 
//鏋勯犺嫻?/span>
 if (rs_.open (*this, handle) == -1)
 {
  ACE_ERROR ((LM_ERROR, 
"%N:%l: ""TPTCPAsynchServerImpl::open() Error"));
  
return;
    }
 
//鏋勯犲啓嫻?/span>
 if (ws_.open(*this, handle) == -1)
 {
  ACE_ERROR ((LM_ERROR, 
"%N:%l: ""TPTCPAsynchServerImpl::open() Error"));
  
return;
    }
 
//鑾峰彇瀹㈡埛绔繛鎺ュ湴鍧鍜岀鍙?/span>
 ACE_INET_Addr addr; 
 ACE_SOCK_SEQPACK_Association ass
=ACE_SOCK_SEQPACK_Association(handle); 
 size_t addr_size
=1
 ass.get_local_addrs(
&addr,addr_size);
 
this->server_->onClientConnect((int)handle, addr.get_ip_address(), addr.get_port_number());

 

 
//濡傛灉瀹㈡埛榪炴帴鏃跺悓鏃舵彁浜や簡鏁版嵁錛岄渶瑕佷吉閫犱竴涓粨鏋滐紝鐒跺悗鍛煎彨璇諱簨浠?/span>
 if (message_block.length () != 0)
 {
 
// ACE_DEBUG((LM_DEBUG, "message_block.length() != 0 "));
  
// 澶嶅埗娑堟伅鍧?/span>
  ACE_Message_Block &duplicate =  *message_block.duplicate ();
  
// 浼犺緇撴灉錛屼互渚胯繘琛岃瀹屾垚鍥炶皟
  ACE_Asynch_Read_Stream_Result_Impl *fake_result =
        ACE_Proactor::instance ()
->create_asynch_read_stream_result (this->proxy (),
                                                                     
this->handle_,
                                                                     duplicate,
                                                                     
1024,
                                                                     
0,
                                                                     ACE_INVALID_HANDLE,
                                                                     
0,
                                                                     
0);
  size_t bytes_transferred 
= message_block.length ();
  
// Accept浜嬩歡澶勭悊瀹屾垚錛寃r_ptr鎸囬拡浼氳鍚戝墠縐誨姩錛屽皢鍏剁Щ鍔ㄥ埌寮濮嬩綅緗?/span>
  duplicate.wr_ptr (duplicate.wr_ptr () - bytes_transferred);
  
// 榪欎釜鏂規硶灝嗚皟鐢ㄥ洖璋冨嚱鏁?/span>
  fake_result->complete (message_block.length (), 10);
  
// 閿姣佷吉閫犵殑璇葷粨鏋?/span>
  delete fake_result;
 }

 
// 鍚﹀垯錛岄氱煡搴曞眰錛屽噯澶囪鍙栫敤鎴鋒暟鎹?br /> //鍒涘緩涓涓秷鎭潡銆傝繖涓秷鎭潡灝嗙敤浜庝粠濂楁帴瀛椾腑寮傛璇?nbsp;
 ACE_Message_Block *mb = 0;
  ACE_NEW (mb, ACE_Message_Block (_bufSize));
 
if (rs_.read (*mb, mb->size () - 1== -1)
 {
  delete mb;
  ACE_ERROR ((LM_ERROR, 
"%N:%l:open init read failed!"));
  
return;
 }
}

 

鎴戜滑鐪嬪埌錛岄鍏堝垱寤轟簡涓や釜嫻侊紝灝辨槸鍓嶉潰綾誨畾涔変腑瀹氫箟鐨勪竴涓紓姝ュ啓嫻侊紝涓涓紓姝ヨ嫻併備互鍚庡緗戠粶鐨勮鍜屽啓灝遍氳繃榪欎袱涓祦榪涜銆傛垜榪樼粰鍑轟簡涓孌佃瀹㈡埛绔湴鍧鍜岀鍙g殑浠g爜銆傜劧鍚庢槸璇誨彇瀹㈡埛Connect鍙兘闄勫甫鐨勬暟鎹紝閭f浠g爜涓嶇敤鐪嬫噦錛屼互鍚庝嬌鐢ㄧ収鎶勫氨琛屻傜劧鍚庡氨鏄?/p>

 


if (rs_.read (*mb, mb->size () - 1) == -1)
 {
  delete mb;
  ACE_ERROR ((LM_ERROR, "%N:%l:open init read failed!"));
  return;
 }

榪欐浠g爜浣跨敤璇繪祦璇諱竴孌墊暟鎹傝繖孌典唬鐮佸氨鏄悜鎬誨彴MM浜ゅ緟錛氭垜瑕佹敹鍖呰9錛屾敹濂戒簡鍙垜錛?br />涔熷氨鏄錛岃繖孌典唬鐮?9%鐨勫彲鑳芥槸璇諱笉鍑烘暟鎹殑錛屽彧鏄悜Proactor娉ㄥ唽璇葷殑浜嬩歡錛屽叿浣撶殑絳夊緟銆佽鍙栨搷浣滅敱Proactor璇伙紝璇誨埌浜嗭紝灝卞洖璋僅andle_Read_Stream鏂規硶銆侫CE_Message_Block鏄秷鎭潡錛屾暟鎹氨鏄瓨鏀懼湪娑堟伅鍧椾腑鐨勩?br />涓嬮潰鐪嬬湅Handle_Read_Stream鏂規硶鐨勪唬鐮侊細


void TPTCPAsynchServerImpl::handle_read_stream (const ACE_Asynch_Read_Stream::Result &result)
{
 result.message_block ().rd_ptr ()[result.bytes_transferred ()] 
= '/0';
  ACE_DEBUG ((LM_DEBUG, 
"********************/n"));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d/n""bytes_to_read", result.bytes_to_read ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d/n""handle", result.handle ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d/n""bytes_transfered", result.bytes_transferred ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d/n""act", (u_long) result.act ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d/n""success", result.success ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d/n""completion_key", (u_long) result.completion_key ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d/n""error", result.error ()));
  ACE_DEBUG ((LM_DEBUG, 
"********************/n"));
 result.message_block().release();
 
if (this->initiate_read_stream (result) == -1)
 {
  ACE_ERROR((LM_ERROR, 
"%N:%l:read stream failed!connection closed, remove it:%d/n", result.handle()));
  closeConnection(result.handle());
 } 
}
 

榪欎釜鍑芥暟琚皟鐢紝灝辮〃鏄庢湁鏁版嵁宸茬粡璇誨ソ浜嗭紝鍖呰9宸茬粡鍦ㄦ誨彴浜嗐侾roactor姣旀誨彴MM榪樺ソ錛岀粰浣犻佷笂闂ㄤ簡錛屾暟鎹氨鍦≧esult閲岋紝涓婇潰婕旂ず浜哛esult涓殑鏁版嵁銆傜劧鍚庢妸娑堟伅鍧楅噴鏀句簡錛岀劧鍚庤皟鐢╥nitiate_read_stream緇х畫鐩戝惉緗戠粶涓婂彲鑳藉埌鏉ョ殑鏁版嵁銆傜湅鐪媔nitiate_read_stream濂戒簡錛?/p>


int TPTCPAsynchServerImpl::initiate_read_stream (const ACE_Asynch_Read_Stream::Result &result)
{
 ACE_DEBUG((LM_TRACE, 
"%N:%l:TPTCPAsynchServerImpl::initiate_read_stream() "));
 
//鍒涘緩涓涓秷鎭潡銆傝繖涓秷鎭潡灝嗙敤浜庝粠濂楁帴瀛椾腑寮傛璇?nbsp;
 ACE_Message_Block *mb = new ACE_Message_Block(_bufSize);
 
if (mb == NULL)
 {
  ACE_DEBUG((LM_ERROR, 
"%N:%l:can't allock ACE_Message_Block.  ")); 
  
return -1;
 }
 
 
if (rs_.read (*mb, mb->size () - 1== -1)
 {
  delete mb;
  ACE_ERROR_RETURN ((LM_ERROR, 
"%N:%l:rs->read() failed, clientID=%d ", result.handle()),  -1);
 }
 
return 0;
}

 

浠g爜寰堢畝鍗曪紝灝辨槸鍒涘緩涓涓柊鐨勬秷鎭潡錛岀劧鍚庝嬌鐢ㄨ嫻佹敞鍐屼竴涓娑堟伅灝卞彲浠ヤ簡銆?/p>

鍒版涓烘錛孭roactor鐨勮嫻佺▼寰堟竻妤氫簡鍚э紵

涓嬮潰鍐嶈涓涓啓嫻佺▼銆?/p>

鍐欐祦紼嬪叾瀹炴洿綆鍗曪紝鍦ㄤ換鎰忔兂鍚戝鎴風鍐欐暟鎹殑鍦版柟錛岃皟鐢ㄧ浉搴斾唬鐮佸氨琛屼簡錛屾瘮濡傦紝鎴戜滑鎻愪緵浜哠endData鏂規硶鏉ュ彂閫佹暟鎹紝鍦ㄤ換鎰忔兂鍙戦佹暟鎹殑鍦版柟璋冪敤SendData灝辮浜嗭紝SendData鐨勪唬鐮佸涓嬶細

int TPTCPAsynchServerImpl::sendData(int clientID, const char *data, int dataLen, unsigned int &id)
{
 ACE_DEBUG((LM_DEBUG, 
"TPTCPAsynchServerImpl::sendData(void) "));
 ACE_Message_Block 
*mb; 
 ACE_NEW_RETURN(mb, ACE_Message_Block(dataLen 
+ 1), -1);
 mb
->wr_ptr((char*)data);                  
 ACE_OS::memcpy(mb
->base(),(char*)data, dataLen);
 id 
= GlobleSingleton::instance()->getIndex();
 mb
->msg_type((int)id);
 
//鍚戞搷浣滅郴緇熷彂閫佹暟鎹?/span>
 if (connection->ws->write (*mb , dataLen ) == -1)
 {
  ACE_ERROR_RETURN((LM_ERROR, 
"%N:%l:sendData failed! clientID=%d ", clientID),-1);
 }
 
return 0;
}

 

綆鍗曡錛屽氨鏄垱寤轟簡涓涓秷鎭潡錛屾妸鐢ㄦ埛鏁版嵁鎷瘋礉榪涙潵錛岀劧鍚庤皟鐢ㄥ啓嫻乄S鍚慞roactor鍙戦佷竴涓猈rite浜嬩歡灝卞彲浠ヤ簡錛屽彂閫佹垚鍔熷悗錛孒andle_write_handle浼氳璋冪敤錛岀湅涓涓嬶細


void
TPTCPAsynchServerImpl::handle_write_stream (
const ACE_Asynch_Write_Stream::Result &result)
{
  ACE_DEBUG ((LM_DEBUG,
              
"handle_write_stream called "));
  
// Reset pointers.
  result.message_block ().rd_ptr (result.message_block ().rd_ptr () - result.bytes_transferred ());
  ACE_DEBUG ((LM_DEBUG, 
"******************** "));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d ""bytes_to_write", result.bytes_to_write ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d ""handle", result.handle ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d ""bytes_transfered", result.bytes_transferred ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d ""act", (u_long) result.act ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d ""success", result.success ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d ""completion_key", (u_long) result.completion_key ()));
  ACE_DEBUG ((LM_DEBUG, 
"%s = %d ""error", result.error ()));
  ACE_DEBUG ((LM_DEBUG, 
"******************** "));
#if 0
  ACE_DEBUG ((LM_DEBUG, 
"%s = %s ""message_block", result.message_block ().rd_ptr ()));
#endif
  
// Release message block.
  result.message_block ().release ();
}

 

浠g爜涓嬌鐢ㄤ簡result涓彂鏁版嵁錛岀劧鍚庢妸娑堟伅鍧楅噴鏀句簡錛屽氨榪欎箞綆鍗曘?/p>


////////////////////////////////////////////////////////////////////////////////////////////////////

榪欐槸綆鍗曠殑proactor鐢ㄦ硶錛屽綋鐒訛紝澶嶆潅涔熷熀鏈氨榪欐牱鐢ㄣ傛墍璋撲笉鍩烘湰鐨勪笉鏄疨roactor鐨勫唴瀹癸紝鑰屾槸鏈嶅姟鍣ㄧ紪紼嬫湰韜殑楹葷儲銆傛瘮濡傝錛屽涓繛鎺ョ殑綆$悊銆侀噸鍙戞満鍒躲佸彂閫侀槦鍒楃瓑絳夛紝榪欓兘涓嶆槸ACE鐨勫唴瀹廣傝繖浜涜澶у鑷繁鎬濊冧簡錛屽茍娣誨姞銆?/p>

鍦ㄨ繖閲岋紝鎴戣璇村嚑涓噸瑕佺殑闂錛氳繛鎺ョ殑綆$悊銆侫cceptor鏄竴涓被錛屼絾鏄湪姣忎竴涓繛鎺ワ紝Proactor閮界敤浜嗘煇縐嶅姙娉曞垱寤轟簡涓涓疄渚嬶紝鎵浠ワ紝榪炴帴綆$悊鐨勭兢闆嗙被涓瀹氫笉鑳藉湪Acceptor綾諱腑錛屼笉鐒跺緱鍒扮殑緇撴灉灝辨槸濮嬬粓鍙湁涓鏉¤褰曘傚洜涓烘瘡涓狝cceptor閮芥湁涓涓疄渚嬶紝瀹炰緥瀵瑰簲涓涓繛鎺ワ紝緹ら泦綾諱篃灝辨瘡涓疄渚嬩竴涓簡銆傝閲囧彇鐨勬柟娉曟槸涓涓叏灞鐨勫鍣ㄥ璞″氨鍙互浜嗐傛瘮濡傛垜榪欎釜綾伙細


typedef ACE_Map_Manager 
<ACE_HANDLE, ConnectionBean *, ACE_Null_Mutex> ConnectionMap;
typedef ACE_Map_Iterator
<ACE_HANDLE, ConnectionBean *, ACE_Null_Mutex> ConnectionIterator;
typedef ACE_Map_Entry   
<ACE_HANDLE, ConnectionBean *> ConnectionEntry;
class Globle
{
public:
 Globle(
void);
 
~Globle(void);
 ITPServer
* server_;
 ConnectionMap _connections;
 unsigned getIndex(
void); 
 
long getTimerId(void);
private:
 unsigned 
int index_;
 
long timerId_;
};
typedef ACE_Singleton
<Globle, ACE_Null_Mutex> GlobleSingleton;

 

鎴戜嬌鐢ˋCE鐨凷ingleton妯℃澘鍒涘緩榪欎釜綾伙紝姣忎竴涓狝cceptor瑕佷嬌鐢–onnectionMap錛岄兘浣跨敤榪欓噷鐨刜connections錛屾柟娉曞涓?錛?br />  GlobleSingleton::instance()->connection.bind()......

榪欎釜闂鍙槸鎴戣姳璐逛簡2澶╂椂闂存壘鍑烘潵鐨勶紝璇鎬綅鍚屼粊涓嶅彲涓嶆垝鍟婏紝緇欑偣鎺屽0錛氾級



C灝忓姞 2013-04-12 17:43 鍙戣〃璇勮
]]>
ACE緗戠粶緙栫▼絎旇錛?錛夛細ACE鑷傞厤閫氫俊鐜http://www.shnenglu.com/cxiaojia/archive/2013/04/08/199198.htmlC灝忓姞C灝忓姞Mon, 08 Apr 2013 01:48:00 GMThttp://www.shnenglu.com/cxiaojia/archive/2013/04/08/199198.htmlhttp://www.shnenglu.com/cxiaojia/comments/199198.htmlhttp://www.shnenglu.com/cxiaojia/archive/2013/04/08/199198.html#Feedback0http://www.shnenglu.com/cxiaojia/comments/commentRss/199198.htmlhttp://www.shnenglu.com/cxiaojia/services/trackbacks/199198.html浠嬬粛


      ACE鑷傞厤閫氫俊鐜錛圓DAPTIVE Communication Environment錛夋槸鍙互鑷敱浣跨敤銆佸紑鏀炬簮鐮佺殑闈㈠悜瀵硅薄錛圤O錛夋瀯鏋訛紙Framework錛夛紝鍦ㄥ叾涓疄鐜頒簡璁稿鐢ㄤ簬騫跺彂閫氫俊杞歡鐨勬牳蹇冩ā寮忋侫CE鎻愪緵浜嗕竴緇勪赴瀵岀殑鍙鐢–++Wrapper Facade錛堝寘瑁呭瑙傦級鍜屾瀯鏋剁粍浠訛紝鍙法瓚婂縐嶅鉤鍙板畬鎴愰氱敤鐨勯氫俊杞歡浠誨姟錛屽叾涓寘鎷細浜嬩歡澶氳礬鍒嗙鍜屼簨浠跺鐞嗗櫒鍒嗘淳銆佷俊鍙峰鐞嗐佹湇鍔″垵濮嬪寲銆佽繘紼嬮棿閫氫俊銆佸叡浜唴瀛樼鐞嗐佹秷鎭礬鐢便佸垎甯冨紡鏈嶅姟鍔ㄦ侊紙閲嶏級閰嶇疆銆佸茍鍙戞墽琛屽拰鍚屾錛岀瓑絳夈?br />      ACE鐨勭洰鏍囩敤鎴鋒槸楂樻ц兘鍜屽疄鏃墮氫俊鏈嶅姟鍜屽簲鐢ㄧ殑寮鍙戣呫傚畠綆鍖栦簡浣跨敤榪涚▼闂撮氫俊銆佷簨浠跺璺垎紱匯佹樉寮忓姩鎬侀摼鎺ュ拰騫跺彂鐨凮O緗戠粶搴旂敤鍜屾湇鍔$殑寮鍙戙傛澶栵紝閫氳繃鏈嶅姟鍦ㄨ繍琛屾椂涓庡簲鐢ㄧ殑鍔ㄦ侀摼鎺ワ紝ACE榪樹嬌緋葷粺鐨勯厤緗拰閲嶉厤緗緱浠ヨ嚜鍔ㄥ寲銆?br />



濂藉


澧炲己鍙Щ妞嶆?/strong>錛氬湪ACE緇勪歡鐨勫府鍔╀笅錛屽緢瀹規槗鍦ㄤ竴縐峅S騫沖彴涓婄紪鍐欏茍鍙戠綉緇滃簲鐢紝鐒跺悗蹇熷湴灝嗗畠浠Щ妞嶅埌鍚勭鍏朵粬鐨凮S騫沖彴涓娿傝屼笖錛屽洜涓篈CE鏄紑鏀炬簮鐮佺殑鑷敱杞歡錛屼綘鏃犻渶鎷呭績琚攣瀹氬湪鐗瑰畾鐨勬搷浣滅郴緇熷鉤鍙版垨緙栬瘧鍣ㄤ笂銆?br />鏇村ソ鐨勮蔣浠惰川閲忥細ACE鐨勮璁′嬌鐢ㄤ簡璁稿鍙彁楂樿蔣浠惰川閲忕殑鍏抽敭妯″紡錛岃繖浜涜川閲忓洜绱犲寘鎷氫俊杞歡鐏墊椿鎬с佸彲鎵╁睍鎬с佸彲澶嶇敤鎬у拰妯″潡鎬с?br /> 鏇撮珮鐨勬晥鐜囧拰鍙嫻嬫э細ACE緇忎粩緇嗚璁★紝鏀寔騫挎硾鐨勫簲鐢ㄦ湇鍔¤川閲忥紙QoS錛夐渶姹傦紝鍖呮嫭寤惰繜鏁忔劅搴旂敤鐨勪綆鍝嶅簲絳夊緟鏃墮棿銆侀珮甯﹀搴旂敤鐨勯珮鎬ц兘錛屼互鍙婂疄鏃跺簲鐢ㄧ殑鍙嫻嬫с?br />鏇村鏄撹漿鎹㈠埌鏍囧噯鐨勯珮綰т腑闂翠歡錛?/strong>TAO浣跨敤浜咥CE鎻愪緵鐨勫彲澶嶇敤緇勪歡鍜屾ā寮忋傚畠鏄疌ORBA鐨勫紑鍙戞簮鐮併侀伒寰爣鍑嗙殑瀹炵幇錛屽茍涓洪珮鎬ц兘鍜屽疄鏃剁郴緇熶綔浜嗕紭鍖栥備負姝わ紝ACE鍜孴AO琚璁′負鑳借壇濂藉湴鍗忓悓宸ヤ綔錛屼互鎻愪緵鍏ㄩ潰鐨勪腑闂翠歡瑙e喅鏂規銆?br />
浣撶郴緇撴瀯


OS閫傞厤灞傦細ACE搴曞眰錛屽拰OS鐨凙PI鐩稿叧鐨勯儴鍒嗐傝繖閮ㄥ垎ACE鎶婁笉鍚岀被鍨嬬殑OS鎺ュ彛緇熶竴璧鋒潵錛岃ACE鐨勯珮灞傛憜鑴卞鉤鍙扮殑渚濊禆鎬с傞傞厤灞傚寮轟簡浠g爜鐨勫彲縐繪鎬с?br />C++鍖呰灞傦細ACE涓棿灞傦紝涓昏鍔熻兘鐨勫疄鐜伴儴鍒嗐傚寘鎷茍鍙戝拰鍚屾銆両PC銆佸唴瀛樼鐞嗙粍浠躲佸畾鏃跺櫒綾匯佸鍣ㄧ被銆佷俊鍙峰鐞嗐佹枃浠剁郴緇熺粍浠跺拰綰跨▼綆$悊銆?br />鏋勬灦鍜屾ā寮忓眰錛?/strong>ACE楂樺眰錛屾灦鏋勫拰妯″紡閮ㄥ垎銆傚畠浠殑鍩虹鏄嫢騫查拡瀵圭壒瀹氶氫俊杞歡棰嗗煙鐨勮璁℃ā寮忋傚寘鎷簨浠跺鐞嗐佽繛鎺ユ垨鏈嶅姟鍒濆鍖栫粍浠躲佹祦緇勪歡鍜屾湇鍔¢厤緗粍浠躲?br />

 



]]>
ACE緗戠粶緙栫▼涔婣CE_NEW_RETURN錛孉CE_NEW錛孉CE_NEW_NORETURNhttp://www.shnenglu.com/cxiaojia/archive/2013/03/26/198838.htmlC灝忓姞C灝忓姞Tue, 26 Mar 2013 07:26:00 GMThttp://www.shnenglu.com/cxiaojia/archive/2013/03/26/198838.htmlhttp://www.shnenglu.com/cxiaojia/comments/198838.htmlhttp://www.shnenglu.com/cxiaojia/archive/2013/03/26/198838.html#Feedback0http://www.shnenglu.com/cxiaojia/comments/commentRss/198838.htmlhttp://www.shnenglu.com/cxiaojia/services/trackbacks/198838.htmlOS_Memory.h鏄繖鏍峰畾涔夌殑銆?br />
#  if defined (ACE_HAS_NEW_NOTHROW)
#    define ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RET_VAL) \
   do { POINTER = new (ACE_nothrow) CONSTRUCTOR; \
     if (POINTER == 0) { errno = ENOMEM; return RET_VAL; } \
   } while (0)
#    define ACE_NEW(POINTER,CONSTRUCTOR) \
   do { POINTER = new(ACE_nothrow) CONSTRUCTOR; \
     if (POINTER == 0) { errno = ENOMEM; return; } \
   } while (0)
#    define ACE_NEW_NORETURN(POINTER,CONSTRUCTOR) \
   do { POINTER = new(ACE_nothrow) CONSTRUCTOR; \
     if (POINTER == 0) { errno = ENOMEM; } \
   } while (0)

#  else

#    define ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RET_VAL) \
   do { try { POINTER = new CONSTRUCTOR; } \
     catch (ACE_bad_alloc) { ACE_del_bad_alloc errno = ENOMEM; POINTER = 0; return RET_VAL; } \
   } while (0)

#    define ACE_NEW(POINTER,CONSTRUCTOR) \
   do { try { POINTER = new CONSTRUCTOR; } \
     catch (ACE_bad_alloc) { ACE_del_bad_alloc errno = ENOMEM; POINTER = 0; return; } \
   } while (0)

#    define ACE_NEW_NORETURN(POINTER,CONSTRUCTOR) \
   do { try { POINTER = new CONSTRUCTOR; } \
     catch (ACE_bad_alloc) { ACE_del_bad_alloc errno = ENOMEM; POINTER = 0; } \
   } while (0)
#  endif /* ACE_HAS_NEW_NOTHROW */

#else /* ACE_NEW_THROWS_EXCEPTIONS */

# define ACE_NEW_RETURN(POINTER,CONSTRUCTOR,RET_VAL) \
   do { POINTER = new CONSTRUCTOR; \
     if (POINTER == 0) { errno = ENOMEM; return RET_VAL; } \
   } while (0)
# define ACE_NEW(POINTER,CONSTRUCTOR) \
   do { POINTER = new CONSTRUCTOR; \
     if (POINTER == 0) { errno = ENOMEM; return; } \
   } while (0)
# define ACE_NEW_NORETURN(POINTER,CONSTRUCTOR) \
   do { POINTER = new CONSTRUCTOR; \
     if (POINTER == 0) { errno = ENOMEM; } \
   } while (0)

浠ヤ笂鏄敤瀹忓畾涔夋浛鎹㈢殑琛ㄨ揪寮忥紝鍔熻兘閮芥槸鐢ㄤ竴涓狿OINTER鎸囬拡new涓涓狢ONSTRUCTOR瀹炰緥錛屽唴閮ㄥ仛浜嗕竴浜涢敊璇俊鎭殑鏍囧織鍜屽紓甯稿鐞嗐?br />瀹廼felse瀵瑰鉤鍙扮殑涓嶅悓榪涜浜嗗垎紱伙紝姣忎釜騫沖彴涓嬮兘鏈変笁縐峮ew鐨勬柟娉曪紝浠栦滑鐨勫尯鍒槸return銆?br />姣忎釜瀹忓畾涔夐兘鐢ㄥ埌浜哾o{}while(0)錛屾槸鍥犱負瀹忓彧鑳芥浛鎹竴鍙ヨ〃杈懼紡錛岃屼綘鐢╠o{}while(0)鍙互鏂逛究鐨勬妸澶氫釜琛ㄨ揪寮忛泦涓搗鏉ャ?img src ="http://www.shnenglu.com/cxiaojia/aggbug/198838.html" width = "1" height = "1" />

]]>
socket闃誨涓庨潪闃誨錛屽悓姝ヤ笌寮傛銆両/O妯″瀷(杞?http://www.shnenglu.com/cxiaojia/archive/2013/03/26/198831.htmlC灝忓姞C灝忓姞Tue, 26 Mar 2013 05:36:00 GMThttp://www.shnenglu.com/cxiaojia/archive/2013/03/26/198831.htmlhttp://www.shnenglu.com/cxiaojia/comments/198831.htmlhttp://www.shnenglu.com/cxiaojia/archive/2013/03/26/198831.html#Feedback1http://www.shnenglu.com/cxiaojia/comments/commentRss/198831.htmlhttp://www.shnenglu.com/cxiaojia/services/trackbacks/198831.html

杞嚜錛?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>

鍚屾錛?/span>鎻愪氦璇鋒眰->絳夊緟鏈嶅姟鍣ㄥ鐞?>澶勭悊瀹屾瘯榪斿洖榪欎釜鏈熼棿瀹㈡埛绔祻瑙堝櫒涓嶈兘騫蹭換浣曚簨
寮傛錛?/span>璇鋒眰閫氳繃浜嬩歡瑙﹀彂->鏈嶅姟鍣ㄥ鐞嗭紙榪欐槸嫻忚鍣ㄤ粛鐒跺彲浠ヤ綔鍏朵粬浜嬫儏錛?>澶勭悊瀹屾瘯
鍚屾鍜屽紓姝ラ兘鍙拡瀵逛簬鏈満SOCKET鑰岃█鐨勩?/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>

闃誨I/O妯″瀷錛?/span>

        綆浠嬶細榪涚▼浼?/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>

闈為樆濉濱O妯″瀷 

       綆浠嬶細闈為樆濉濱O閫氳繃榪涚▼鍙嶅璋冪敤IO鍑芥暟錛?/span>澶氭緋葷粺璋冪敤錛屽茍椹笂榪斿洖錛夛紱鍦ㄦ暟鎹嫹璐濈殑榪囩▼涓紝榪涚▼鏄樆濉炵殑錛?/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>


IO澶嶇敤妯″瀷錛?/span>

             綆浠嬶細涓昏鏄痵elect鍜宔poll錛涘涓涓狪O绔彛錛屼袱嬈¤皟鐢紝涓ゆ榪斿洖錛屾瘮闃誨IO騫舵病鏈変粈涔堜紭瓚婃э紱鍏抽敭鏄兘瀹炵幇鍚屾椂瀵瑰涓狪O绔彛榪涜鐩戝惉錛?/span>

      I/O澶嶇敤妯″瀷浼氱敤鍒皊elect銆乸oll銆乪poll鍑芥暟錛岃繖鍑犱釜鍑芥暟涔熶細浣胯繘紼嬮樆濉烇紝浣嗘槸鍜岄樆濉濱/O鎵涓嶅悓鐨勭殑錛岃繖涓や釜鍑芥暟鍙互鍚屾椂闃誨澶氫釜I/O鎿嶄綔銆傝屼笖鍙互鍚屾椂瀵瑰涓鎿嶄綔錛屽涓啓鎿嶄綔鐨処/O鍑芥暟榪涜媯嫻嬶紝鐩村埌鏈夋暟鎹彲璇繪垨鍙啓鏃訛紝鎵嶇湡姝h皟鐢↖/O鎿嶄綔鍑芥暟銆?/span>


淇″彿椹卞姩IO

    綆浠嬶細涓ゆ璋冪敤錛屼袱嬈¤繑鍥烇紱

    棣栧厛鎴戜滑鍏佽濂楁帴鍙h繘琛屼俊鍙烽┍鍔↖/O,騫跺畨瑁呬竴涓俊鍙峰鐞嗗嚱鏁幫紝榪涚▼緇х畫榪愯騫朵笉闃誨銆傚綋鏁版嵁鍑嗗濂芥椂錛岃繘紼嬩細鏀跺埌涓涓猄IGIO淇″彿錛屽彲浠ュ湪淇″彿澶勭悊鍑芥暟涓皟鐢↖/O鎿嶄綔鍑芥暟澶勭悊鏁版嵁銆?/span>


寮傛IO妯″瀷

         綆浠嬶細鏁版嵁鎷瘋礉鐨勬椂鍊欒繘紼嬫棤闇闃誨銆?/span>

     褰撲竴涓紓姝ヨ繃紼嬭皟鐢ㄥ彂鍑哄悗錛岃皟鐢ㄨ呬笉鑳界珛鍒誨緱鍒扮粨鏋溿傚疄闄呭鐞嗚繖涓皟鐢ㄧ殑閮ㄤ歡鍦ㄥ畬鎴愬悗錛岄氳繃鐘舵併侀氱煡鍜屽洖璋冩潵閫氱煡璋冪敤鑰呯殑杈撳叆杈撳嚭鎿嶄綔


鍚屾IO寮曡搗榪涚▼闃誨錛岀洿鑷矷O鎿嶄綔瀹屾垚銆?br style="margin: 0px; padding: 0px;" />寮傛IO涓嶄細寮曡搗榪涚▼闃誨銆?br style="margin: 0px; padding: 0px;" />IO澶嶇敤鏄厛閫氳繃select璋冪敤闃誨銆?br style="margin: 0px; padding: 0px;" />


5涓狪/O妯″瀷鐨勬瘮杈冿細



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銆佹病鏈夋渶澶у茍鍙戣繛鎺ョ殑闄愬埗錛?/span>鑳芥墦寮鐨凢D鐨勪笂闄愯繙澶т簬1024錛?G鐨勫唴瀛樹笂鑳界洃鍚害10涓囦釜绔彛錛夛紱
2銆佹晥鐜囨彁鍗?/strong>錛屼笉鏄疆璇㈢殑鏂瑰紡錛屼笉浼氶殢鐫FD鏁扮洰鐨勫鍔犳晥鐜囦笅闄嶃傚彧鏈夋椿璺冨彲鐢ㄧ殑FD鎵嶄細璋冪敤callback鍑芥暟錛?br style="margin: 0px; padding: 0px;" />      鍗矱poll鏈澶х殑浼樼偣灝卞湪浜庡畠鍙浣?#8220;媧昏穬”鐨勮繛鎺ワ紝鑰岃窡榪炴帴鎬繪暟鏃犲叧錛屽洜姝ゅ湪瀹為檯鐨勭綉緇滅幆澧冧腑錛孍poll鐨勬晥鐜囧氨浼氳繙榪滈珮浜巗elect鍜宲oll銆?/span>
3銆?nbsp;鍐呭瓨鎷瘋礉錛屽埄鐢╩map()鏂囦歡鏄犲皠鍐呭瓨鍔犻熶笌鍐呮牳絀洪棿鐨勬秷鎭紶閫掞紱鍗砮poll浣跨敤mmap鍑忓皯澶嶅埗寮閿銆?br style="margin: 0px; padding: 0px;" />
select銆乸oll銆乪poll 鍖哄埆鎬葷粨錛?/span>

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>



]]>
#pragma once 涓?#ifndef 瑙f瀽(杞?http://www.shnenglu.com/cxiaojia/archive/2013/03/18/198526.htmlC灝忓姞C灝忓姞Mon, 18 Mar 2013 02:28:00 GMThttp://www.shnenglu.com/cxiaojia/archive/2013/03/18/198526.htmlhttp://www.shnenglu.com/cxiaojia/comments/198526.htmlhttp://www.shnenglu.com/cxiaojia/archive/2013/03/18/198526.html#Feedback2http://www.shnenglu.com/cxiaojia/comments/commentRss/198526.htmlhttp://www.shnenglu.com/cxiaojia/services/trackbacks/198526.html杞嚜錛?/span>http://blog.csdn.net/slimfox/article/details/1565950
 

涓轟簡閬垮厤鍚屼竴涓枃浠惰include澶氭錛孋/C++涓湁涓ょ鏂瑰紡錛屼竴縐嶆槸#ifndef鏂瑰紡錛屼竴縐嶆槸#pragma once鏂瑰紡銆傚湪鑳藉鏀寔榪欎袱縐嶆柟寮忕殑緙栬瘧鍣ㄤ笂錛屼簩鑰呭茍娌℃湁澶ぇ鐨勫尯鍒紝浣嗘槸涓よ呬粛鐒惰繕鏄湁涓浜涚粏寰殑鍖哄埆銆?/span>
    鏂瑰紡涓錛?/span>
    #ifndef __SOMEFILE_H__
    #define __SOMEFILE_H__
    ... ... // 涓浜涘0鏄庤鍙?br style="margin: 0px; padding: 0px;" />    #endif

    鏂瑰紡浜岋細
    #pragma once
    ... ... // 涓浜涘0鏄庤鍙?/span>

    #ifndef鐨勬柟寮忎緷璧栦簬瀹忓悕瀛椾笉鑳藉啿紿侊紝榪欎笉鍏夊彲浠ヤ繚璇佸悓涓涓枃浠朵笉浼氳鍖呭惈澶氭錛屼篃鑳戒繚璇佸唴瀹瑰畬鍏ㄧ浉鍚岀殑涓や釜鏂囦歡涓嶄細琚笉灝忓績鍚屾椂鍖呭惈銆傚綋鐒訛紝緙虹偣灝辨槸濡傛灉涓嶅悓澶存枃浠剁殑瀹忓悕涓嶅皬蹇?#8220;鎾炶濺”錛屽彲鑳藉氨浼氬鑷村ご鏂囦歡鏄庢槑瀛樺湪錛岀紪璇戝櫒鍗寸‖璇存壘涓嶅埌澹版槑鐨勭姸鍐?#8212;—榪欑鎯呭喌鏈夋椂闈炲父璁╀漢鎶撶媯銆?/span>
    #pragma once鍒欑敱緙栬瘧鍣ㄦ彁渚涗繚璇侊細鍚屼竴涓枃浠朵笉浼氳鍖呭惈澶氭銆傛敞鎰忚繖閲屾墍璇寸殑“鍚屼竴涓枃浠?#8221;鏄寚鐗╃悊涓婄殑涓涓枃浠訛紝鑰屼笉鏄寚鍐呭鐩稿悓鐨勪袱涓枃浠躲傚甫鏉ョ殑濂藉鏄紝浣犱笉蹇呭啀璐瑰姴鎯充釜瀹忓悕浜嗭紝褰撶劧涔熷氨涓嶄細鍑虹幇瀹忓悕紕版挒寮曞彂鐨勫鎬棶棰樸傚搴旂殑緙虹偣灝辨槸濡傛灉鏌愪釜澶存枃浠舵湁澶氫喚鎷瘋礉錛屾湰鏂規硶涓嶈兘淇濊瘉浠栦滑涓嶈閲嶅鍖呭惈銆傚綋鐒訛紝鐩告瘮瀹忓悕紕版挒寮曞彂鐨?#8220;鎵句笉鍒板0鏄?#8221;鐨勯棶棰橈紝閲嶅鍖呭惈鏇村鏄撹鍙戠幇騫朵慨姝c?/span>
    #pragma once鏂瑰紡浜х敓浜?ifndef涔嬪悗錛屽洜姝ゅ緢澶氫漢鍙兘鐢氳嚦娌℃湁鍚榪囥傜洰鍓嶇湅鏉?ifndef鏇村彈鍒版帹宕囥傚洜涓?ifndef鍙楄璦澶╃敓鐨勬敮鎸侊紝涓嶅彈緙栬瘧鍣ㄧ殑浠諱綍闄愬埗錛涜?pragma once鏂瑰紡鍗翠笉鍙椾竴浜涜緝鑰佺増鏈殑緙栬瘧鍣ㄦ敮鎸侊紝鎹㈣█涔嬶紝瀹冪殑鍏煎鎬т笉澶熷ソ銆備篃璁革紝鍐嶈繃鍑犲勾絳夋棫鐨勭紪璇戝櫒姝葷粷浜嗭紝榪欏氨涓嶆槸浠涔堥棶棰樹簡銆?/span>
    鎴戣繕鐪嬪埌涓縐嶇敤娉曟槸鎶婁袱鑰呮斁鍦ㄤ竴璧風殑錛?/span>
    #pragma once
    #ifndef __SOMEFILE_H__
    #define __SOMEFILE_H__
    ... ... // 涓浜涘0鏄庤鍙?br style="margin: 0px; padding: 0px;" />    #endif

    鐪嬭搗鏉ヤ技涔庢槸鎯沖吋鏈変袱鑰呯殑浼樼偣銆備笉榪囧彧瑕佷嬌鐢ㄤ簡#ifndef灝變細鏈夊畯鍚嶅啿紿佺殑鍗遍櫓錛屾墍浠ユ販鐢ㄤ袱縐嶆柟娉曚技涔庝笉鑳藉甫鏉ユ洿澶氱殑濂藉錛屽掓槸浼氳涓浜涗笉鐔熸倝鐨勪漢鎰熷埌鍥版儜銆?/span>
    閫夋嫨鍝鏂瑰紡錛屽簲璇ュ湪浜嗚В涓ょ鏂瑰紡鐨勬儏鍐典笅錛岃鍏蜂綋鎯呭喌鑰屽畾銆備簨瀹炰笂錛屽彧瑕佹湁涓涓悎鐞嗙殑綰﹀畾鏉ラ伩寮緙虹偣錛屾垜璁や負鍝鏂瑰紡閮芥槸鍙互鎺ュ彈鐨勩傝岃繖涓凡緇忎笉鏄爣鍑嗘垨鑰呯紪璇戝櫒鐨勮矗浠諱簡錛屽簲褰撶敱紼嬪簭鍛樻潵鎼炲畾銆?/span>
    btw錛氭垜鐪嬪埌GNU鐨勪竴浜涜璁轟技涔庢槸鎵撶畻鍦℅CC 3.4錛堝強鍏朵互鍚庯紵錛夌殑鐗堟湰鍙栨秷瀵?pragma once鐨勬敮鎸併備笉榪囨垜鎵嬩笂GCC 3.4.2鍜孏CC 4.1.1浠嶇劧鏀寔#pragma once錛岀敋鑷蟲病鏈塪eprecation warning銆俈C6鍙婂叾浠ュ悗鐗堟湰浜︽彁渚涘#pragma once鏂瑰紡鐨勬敮鎸併傜湅鏉ヨ繖涓鐗規у凡緇忕ǔ瀹氫笅鏉ヤ簡銆?nbsp;

]]>
MFC鏂囨。搴忓垪鍖栧疄鐜頒繚瀛樺拰鍔犺澆 http://www.shnenglu.com/cxiaojia/archive/2013/03/02/198177.htmlC灝忓姞C灝忓姞Sat, 02 Mar 2013 10:04:00 GMThttp://www.shnenglu.com/cxiaojia/archive/2013/03/02/198177.htmlhttp://www.shnenglu.com/cxiaojia/comments/198177.htmlhttp://www.shnenglu.com/cxiaojia/archive/2013/03/02/198177.html#Feedback2http://www.shnenglu.com/cxiaojia/comments/commentRss/198177.htmlhttp://www.shnenglu.com/cxiaojia/services/trackbacks/198177.html1銆佸簭鍒楀寲瀹氫箟

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>

CFile file("1.txt",CFile::modeCreate | CFile::modeWrite); //瀹氫箟涓涓枃浠舵祦瀵硅薄
 CArchive ar(&file,CArchive::store);  //瀹氫箟涓涓簭鍒楀寲瀵硅薄鍜屾枃浠舵祦瀵硅薄緇戝畾騫舵寚瀹氬綊妗f柟寮忎負鍌ㄥ瓨錛屽姞杞界殑鏂瑰紡涓篊Archive::load
 int i=4;
 
char ch='a';
 
float f=1.3f;
 CString str(
"aa");
 ar
<<i<<ch<<f<<str; //鍌ㄥ瓨鍒版枃浠?/span>


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'">,璇ユ爣璇嗗皢鐢ㄦ潵瑙e簭(閲嶆柊瀹炰緥鍖?/span>)錛屾渶灝忎負0銆?/span>

紺轟緥錛?/p>

//DrawBase.h
class CDrawBase : public CObject //緇ф壙鑷狢Object
{
public:
    DECLARE_SERIAL(CDrawBase)    
//絎竴涓畯鐨勪綅緗紝鍙傛暟涓哄綋鍓嶇被鍚?/span>
    CDrawBase();//蹇呴』鏈変竴涓粯璁ゆ瀯閫犲嚱鏁?/span>
    virtual void onDraw(CDC* pdc);
    
virtual ~CDrawBase();
public:
    UINT m_PenStyle;
    
int m_PenWidth;
    
int m_BkMode;
    
int m_BrushStyle;
    
int m_issx;
    
int m_isyy;
    COLORREF m_PenColor;
    COLORREF m_BackgroundColor;
    COLORREF m_BrushColor;
    CPoint m_ptBegin;
    CPoint m_ptEnd;
public:
    
void Serialize(CArchive& ar);//閲嶅啓浜哠erialize鎴愬憳鍑芥暟
}
;

//DrawBase.cpp
IMPLEMENT_SERIAL(CDrawBase, CObject, 1//絎簩涓畯鐨勪綅緗紝絎竴涓弬鏁頒負褰撳墠綾誨悕錛岀浜屼釜鍙傛暟涓虹埗綾葷被鍚嶏紝絎笁涓弬鏁頒負璇ョ被鐨勭壒瀹氭暣鍨嬫爣璇?璇ユ爣璇嗗皢鐢ㄦ潵瑙e簭(閲嶆柊瀹炰緥鍖?錛屾渶灝忎負0
void CDrawBase::Serialize(CArchive& ar)
{
    CObject::Serialize(ar);
    
if(ar.IsStoring())//淇濆瓨錛屽姞杞戒負ar.IsLoading()
    {
        ar 
<<m_PenColor<<m_PenStyle<<m_PenWidth<<m_BrushColor<<m_BrushStyle<<m_issx<<m_isyy;
    }

    Else 
//鍔犺澆
    {
        ar 
>>m_PenColor>>m_PenStyle>>m_PenWidth>>m_BrushColor>>m_BrushStyle>>m_issx>>m_isyy;
    }

}

閲嶈澆鎻愬彇錛?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>

 






]]>
NoSql鏁版嵁搴撳涔犳眹鎬?/title><link>http://www.shnenglu.com/cxiaojia/archive/2012/12/01/195875.html</link><dc:creator>C灝忓姞</dc:creator><author>C灝忓姞</author><pubDate>Sat, 01 Dec 2012 15:13:00 GMT</pubDate><guid>http://www.shnenglu.com/cxiaojia/archive/2012/12/01/195875.html</guid><wfw:comment>http://www.shnenglu.com/cxiaojia/comments/195875.html</wfw:comment><comments>http://www.shnenglu.com/cxiaojia/archive/2012/12/01/195875.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/cxiaojia/comments/commentRss/195875.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cxiaojia/services/trackbacks/195875.html</trackback:ping><description><![CDATA[<span style="background-color: yellow;">MongoDB</span><a id="CategoryEntryList1_EntryStoryList_Entries_TitleUrl_7" ><br />8澶╁閫歁ongoDB——絎竴澶?鍩虹鍏ラ棬<br /></a><a id="CategoryEntryList1_EntryStoryList_Entries_TitleUrl_6" >8澶╁閫歁ongoDB——絎簩澶?緇嗚澧炲垹鏌ユ敼<br /></a><a id="CategoryEntryList1_EntryStoryList_Entries_TitleUrl_5" >8澶╁閫歁ongoDB——絎笁澶?緇嗚楂樼駭鎿嶄綔<br /></a><a id="CategoryEntryList1_EntryStoryList_Entries_TitleUrl_4" >8澶╁閫歁ongoDB——絎洓澶?绱㈠紩鎿嶄綔<br /></a><a id="CategoryEntryList1_EntryStoryList_Entries_TitleUrl_3" >8澶╁閫歁ongoDB——絎簲澶?涓諱粠澶嶅埗<br /></a><a id="CategoryEntryList1_EntryStoryList_Entries_TitleUrl_2" >8澶╁閫歁ongoDB——絎叚澶?鍒嗙墖鎶鏈?/a><br /><a id="CategoryEntryList1_EntryStoryList_Entries_TitleUrl_1" >8澶╁閫歁ongoDB——絎竷澶?榪愮淮鎶鏈?br /></a><a id="CategoryEntryList1_EntryStoryList_Entries_TitleUrl_0" >8澶╁閫歁ongoDB——絎叓澶?椹卞姩瀹炶返</a><img src ="http://www.shnenglu.com/cxiaojia/aggbug/195875.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cxiaojia/" target="_blank">C灝忓姞</a> 2012-12-01 23:13 <a href="http://www.shnenglu.com/cxiaojia/archive/2012/12/01/195875.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>8縐峃osql鏁版嵁搴撶郴緇熷姣旓紙杞級http://www.shnenglu.com/cxiaojia/archive/2012/12/01/195865.htmlC灝忓姞C灝忓姞Sat, 01 Dec 2012 09:12:00 GMThttp://www.shnenglu.com/cxiaojia/archive/2012/12/01/195865.htmlhttp://www.shnenglu.com/cxiaojia/comments/195865.htmlhttp://www.shnenglu.com/cxiaojia/archive/2012/12/01/195865.html#Feedback0http://www.shnenglu.com/cxiaojia/comments/commentRss/195865.htmlhttp://www.shnenglu.com/cxiaojia/services/trackbacks/195865.html闃呰鍏ㄦ枃

]]>
Nosql鍏ラ棬鐭ヨ瘑錛堣漿錛?/title><link>http://www.shnenglu.com/cxiaojia/archive/2012/12/01/195864.html</link><dc:creator>C灝忓姞</dc:creator><author>C灝忓姞</author><pubDate>Sat, 01 Dec 2012 08:57:00 GMT</pubDate><guid>http://www.shnenglu.com/cxiaojia/archive/2012/12/01/195864.html</guid><wfw:comment>http://www.shnenglu.com/cxiaojia/comments/195864.html</wfw:comment><comments>http://www.shnenglu.com/cxiaojia/archive/2012/12/01/195864.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/cxiaojia/comments/commentRss/195864.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cxiaojia/services/trackbacks/195864.html</trackback:ping><description><![CDATA[<div><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">1. NoSQL鍏跺疄鏄叧緋誨瀷鏁版嵁搴撶浉瀵瑰簲鐨勶紝鏄痭o relational 鍗抽潪鍏崇郴鍨嬫暟鎹簱錛泈eb2.0鐗瑰埆鏄竴浜涚敤鎴瘋闂噺姣旇緝澶х殑緗戠珯濡傦細www.taobao.com weibo.com baidu.com </p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">姣忕鐨勮闂噺鍙兘鏄笂涓囨(10K);浼犵粺鐨勫叧緋誨瀷鏁版嵁搴?mysql oracle 姣忕榪涜10K嬈℃暟鎹煡璇㈣繕鍙互鍕夊己搴斾粯錛屼絾鏄鏋滄槸姣忕10K嬈¤鍐欐暟鎹簱錛屽洜涓烘暟鎹簱鐨勬暟鎹兘鏄嵏杞界鐩樹腑錛屾墍浠ョ鐩業O涔熸槸鏀拺涓嶄綇姣忕10K鐨勮鍐欍?/p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">鍦╳eb鐨勬灦鏋勪腑錛屾暟鎹簱鏄渶闅捐繘琛屾í鍚戞墿灞曠殑(閫氳繃綆鍗曠殑娣誨姞鏈哄櫒鍜岀‖浠訛紝涔熷氨鏄坊鍔犱竴浜涙湇鍔¤妭鐐規潵鎻愰珮璐熻澆鍧囪 鑳藉姏)錛涘浜?*24灝忔椂鍦ㄧ嚎鐨勭綉绔欐潵璇達紝瀵瑰叧緋誨瀷鏁版嵁搴撹繘琛屽崌綰у拰鎵╁睍(鍒嗗竷寮忔墿灞?-鍒嗗簱鍒嗚〃)鏄潪甯哥棝鑻︾殑浜嬫儏錛屽線寰瑕佽繘琛屽仠鏈虹淮鎶わ紱浣嗚繖縐嶅www.taobao.com 鏉ヨ鏄潪甯鎬笐闄嬬殑浜嬫儏銆俒--鍙笉鍙互娣誨姞鍑犲彴鏈嶅姟鍣ㄧ劧鍚庢妸澶嶅埗錛岀劧鍚庤繘琛岃礋杞藉潎琛?-]銆?/p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">NoSQL 鏄噰鐢╧ey/value鐨勭粨鏋勬潵瀛樺偍鏁版嵁錛岃屼笖澶у鏁扮殑NoSQL閲囩敤鍐呭瓨鏉ュ瓨鍌ㄦ暟鎹紝涓孌墊椂闂村悗鎶婃暟鎹悓姝ュ埌紓佺洏涓紱鐢變簬浣跨敤<strong>鍐呭瓨淇濆瓨</strong>鏁版嵁寰堝ソ鍦拌В鍐充簡<strong>楂樺茍鍙戣鍐?/strong>鐨勯棶棰橈紱鍏舵NoSQL鎻愪緵浜嗘牴鎹甼ey鍊艱繘琛屾í鍚戝垎琛?姣斿錛氱敤鎴穒d錛屾瘡2000w鏁版嵁鏀懼埌涓鍙版暟鎹簱鏈嶅姟鍣ㄤ腑鐨勪竴寮犵敤鎴瘋〃涓?錛涘悓鏃跺疄鐜頒簡涓諱粠鏁版嵁搴撲簰澶囷紝榪欐牱鍙互璁╂暟鎹簱鐨勫姩鎬佽縼縐誨彉寰楃畝鍗曪紝璁╂暟鎹簱鏈嶅姟鍣ㄧ殑妯悜鎵╁睍鍙樺緱瀹規槗浜嗐?/p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><br /></p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; ">2. 鍒嗗竷寮忔暟鎹簱鐨凜AP鐞嗚</p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "> CAP鐞嗚<span style="font-family: Helvetica, Tahoma, Arial, sans-serif; text-indent: 32px; ">鏄</span><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; text-indent: 32px; ">Consistency</span><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; text-indent: 32px; ">錛堜竴鑷存э級錛?/span><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; text-indent: 32px; "> Availability</span><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; text-indent: 32px; ">錛堝彲鐢ㄦэ級錛?/span><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; text-indent: 32px; "> partition tolerance</span><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; text-indent: 32px; ">錛堝垎甯冿級涓夐儴鍒嗙郴緇燂紱鑰屼笖浠諱綍緋葷粺鍙細婊¤凍涓や釜錛屼笉浼氭湁浠諱綍鐨勭郴緇熶細鍚屾椂婊¤凍榪欎笁涓潯浠訛紱鍦ㄤ紶緇熺殑鍏崇郴鍨嬫暟鎹簱涓槸寮鴻皟C 涓鑷存э紝浣嗘槸鍦ㄦ弧瓚抽珮鍙敤鎬?楂樺茍鍙戞椂鏁堢巼涓嶉珮)錛岄珮鎵╁睍鎬?鍒嗗竷寮忔暟鎹簱榪涜妯悜鎵╁睍)瀛樺湪涓瀹氱殑緙洪櫡銆備絾鏄疦oSQL鍦ㄨ繘琛岃璁$殑鏃跺欏氨鏄拡瀵瑰茍鍙戞搗閲忔暟鎹瓨鍌ㄧ殑鎯呭喌涓嬭繘琛岃璁$殑錛屽湪榪欑楂樺茍鍙戞搗閲忔暟鎹笅鏁版嵁涓鑷存у茍涓嶅儚閾惰閭f牱淇濇寔鏁版嵁鐨勫己涓鑷存э紝鎵浠oSQL·鏀懼純寮轟竴鑷存х殑榪芥眰錛屼粠鑰岃揪鍒版洿楂樼殑鍙敤鎬у拰鎵╁睍鎬э紝閫氳繃“<strong>楦藉發鍘熺悊</strong>”杈懼埌鏈緇堢殑涓鑷存с?/span></p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; text-indent: 32px; ">鐜板湪鐨勬暟鎹簱緋葷粺鑲畾鏄悓涓涓椂鍒繪湁澶氫釜榪涚▼瀵規暟鎹簱榪涜璇誨啓鎿嶄綔錛屽亣璁劇幇鍦ㄦ湁3涓繘紼?A銆丅銆丆)瀵規暟鎹簱鐨勬煇琛ㄨ繘琛屾搷浣滐紝</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "></p><ul style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><li><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">寮轟竴鑷存э細A鍐欏叆鐨勬暟鎹畑錛孊銆丆鍙互璇誨埌鏁版嵁x</span></li><li><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">寮變竴鑷存э細A鍐欏叆鐨勬暟鎹畑錛孊銆丆涓孌墊椂闂村唴璇諱笉鍒幫紝鏈鍚庝細璇誨埌</span></li><li><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">鏈緇堜竴鑷存э細鏄竴縐嶇壒孌婄殑涓鑷存э紝淇濊瘉鍦ㄤ竴孌墊椂闂村唴娌℃湁鏁版嵁鐨勬洿鏂幫紝浣嗘墍鏈夌殑榪斿洖閮芥槸鎶婃渶鏂扮殑鏁版嵁榪斿洖錛?--緙撳瓨鐨勬蹇碉紝涓孌墊椂闂村悗鎶婃暟鎹洿鏂板埌鏁版嵁搴擄紝杈懼埌鏈緇堜竴鑷存с?/span></li></ul><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">3. 鍝堝笇綆楁硶</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">(1). 鍝堝笇綆楁硶鐨勫熀鏈師鐞嗭細</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">     鍝堝笇綆楁硶鐨勬彁鍑哄拰搴旂敤鑳屾櫙錛屽浜庝竴涓簽澶х殑瀛楃涓叉暟緇刟rray錛岀粰浣犱竴涓瓧絎︿覆璁╀綘鍒ゆ柇瀹冩槸鍚﹀湪榪欎釜瀛楃涓叉暟緇勪腑騫舵壘鍒板畠錛屾渶濂界殑鍔炴硶灝辨槸鎶婅繖涓簽澶х殑瀛楃涓叉暟緇勬瀯寤烘垚涓涓搱甯岃〃錛岀劧鍚庡湪榪涜鏌ヨ鏄惁鏈夎繖涓瓧絎︿覆銆?/span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; "> (2).鏋勫緩hash table鐨勮繃紼嬶細涓鑸槸閲囩敤涓涓?2鐨勬暣鏁版潵浠h〃涓涓瓧絎︿覆錛岄鍏堣繖涓猘rray鐨勫瓧絎︿覆宸茬粡瀛樺湪鍐呭瓨鎴栬呯鐩樹腑錛屾垜浠鍋氱殑鍙槸鎸夌収涓瀹氱殑綆楁硶鎶婃瘡涓瓧絎︿覆鏄犲皠鍒頒竴涓?2浣嶇殑鏁存暟錛屾瘡涓猧nt鍗?涓瓧鑺傦紝鍦ㄥ瓧絎︿覆涓瘡涓瓧絎﹂兘鍗犱竴涓瓧鑺傦紱榪欐牱灝卞緩绔嬩簡瀛楃涓蹭笌32浣嶆暣鏁扮殑鏄犲皠錛岀劧鍚庢牴鎹▼搴忓ぇ灝忚瀹氫竴涓猦ash table鐨凷ize(<strong>榪欎釜Size紜繚鎵鏈夌殑int % Size鐨勫兼槸鍞竴鐨?-鍙栨渶澶у煎嵆鍙?/strong>)錛岃繖涓妸鍒氭墠寰楀埌鐨勬墍鏈夊瓧絎︿覆瀵瑰簲鐨?2浣嶆暣鏁板榪欎釜Size榪涜鍙栨ā錛岃繖涓ā鍊煎氨鏄鏁存暟鍦╤ash table鐨勪綅緗紱榪欎釜浣嶇疆涓庢瘡涓涓瓧絎︿覆鍙堝緩绔嬩簡涓涓槧灝勫叧緋伙紱榪欐牱璁╀綘鏌ヨ榪欎釜str鏄惁鍦╝rray涓紵</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><ul><li><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">棣栧厛錛屾槸鎶婅繖涓猻tr錛岀敤鐩稿悓鐨勫搱甯岀畻娉曡繘琛岀紪鐮?--->鏄犲皠鍒頒竴涓?2浣嶇殑int鍨嬫暟鎹?num</span></li><li><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">鐒跺悗錛屾妸榪欎釜num % Size 鑾峰彇姝ゅ瓧絎︿覆鍦╤ash table閲岄潰鐨勪綅緗紱</span></li><li><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">鐒跺悗錛屽垽鏂環ash table 姝や綅緗槸鍚﹀凡緇忔湁鏁版嵁鍗犵敤錛屽鏋滃凡緇忓崰鐢ㄨ鏄庡湪array閲岄潰鏈変竴涓瓧絎︿覆瀵瑰簲鐨?2浣嶆暣鏁頒笌str鐨?2浣嶆暣鏁扮浉鍚岋紝鍦ㄤ竴涓瓧絎︿覆瀵瑰簲鍞竴涓涓?2浣嶆暣鏁扮殑鍓嶆彁鏉′歡涓嬶紝灝辮鏄巃rray閲岄潰瀛樺湪瀛楃涓瞫tr銆?/span></li></ul><div><div bg_html"="" style="width: 687px; "><div><div><strong>[html]</strong> <a title="view plain" style="background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); border-width: initial; border-color: initial; padding-top: 1px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">view plain</a><a title="copy" style="background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); border-width: initial; border-color: initial; padding-top: 1px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">copy</a><div style="position: absolute; left: 520px; top: 1624px; width: 18px; height: 18px; z-index: 99; border-image: initial; "><embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="18" height="18" name="ZeroClipboardMovie_1" align="center" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=18&height=18" wmode="transparent"></div></div></div><ol start="1" style="border-width: initial; border-color: initial; "><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; "><span style="border-width: initial; border-color: initial; ">int GetHashTablePos(char *lpszString, SOMESTRUCTURE *lpTable, int nTableSize)  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">{ //lpszSring--瑕佹煡璇㈢殑瀛楃涓詫紱lpTable 鍝堝笇琛紱nTableSize鏄搱甯岃〃鐨凷ize  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">int <span style="border-width: initial; border-color: initial; color: red; ">nHash</span><span style="border-width: initial; border-color: initial; "> = </span><span style="border-width: initial; border-color: initial; color: blue; ">HashString</span><span style="border-width: initial; border-color: initial; ">(lpszString), </span><span style="border-width: initial; border-color: initial; color: red; ">nHashPos</span><span style="border-width: initial; border-color: initial; "> = </span><span style="border-width: initial; border-color: initial; color: blue; ">nHash</span><span style="border-width: initial; border-color: initial; "> % nTableSize;  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">if (lpTable[nHashPos].bExists && !strcmp(lpTable[nHashPos].pString, lpszString))  //鏃墮棿澶嶆潅搴︽槸O(1)  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">  return nHashPos;  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">else  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">  return -1; //Error value  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">}  </span></li></ol></div>(3).  涓婇潰鐨勫鐞嗘柟娉曟槸鍋囪涓涓瓧絎︿覆閫氳繃涓涓搱甯岀畻娉曞彧寰楀埌鍞竴涓涓猦ashcode(32涓篿nt鏁存暟)錛涗絾鏄鏋滃瓨鍦ㄤ袱涓暣鏁板湪鍚屼竴涓搱甯岀畻娉曞緱鍒板悓涓涓猦ashcode錛岄偅榪欎釜鏌ヨ灝變笉姝g‘鐨勶紝铏界劧榪欎釜鍙兘鎬ф瘮杈冨皬錛屼絾紜疄瀛樺湪榪欎釜椋庨櫓銆?/div><div><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">閲囩敤鐨勮В鍐沖姙娉曟槸鐢ㄥ涓笉鍚岀殑鍝堝笇綆楁硶鏉ユ牎楠岋紝涓や釜str 鍦ㄤ笁涓笉鍚岀殑鍝堝笇綆楁硶寰楀埌鐨刪ashcode閮界浉鍚岀殑姒傜巼鏄細<span style="font-family: song, Verdana; line-height: 22px; ">1/18889465931478580854784錛涘彲浠ヨ涓烘槸OK鐨勩?/span></span></div><div><span style="font-family: song, Verdana; "></span><div bg_html"="" style="width: 687px; "><div><div><strong>[html]</strong> <a title="view plain" style="background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); border-width: initial; border-color: initial; padding-top: 1px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">view plain</a><a title="copy" style="background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); border-width: initial; border-color: initial; padding-top: 1px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">copy</a><div style="position: absolute; left: 520px; top: 2001px; width: 18px; height: 18px; z-index: 99; border-image: initial; "><embed id="ZeroClipboardMovie_2" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="18" height="18" name="ZeroClipboardMovie_2" align="center" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=18&height=18" wmode="transparent"></div></div></div><ol start="1" style="border-width: initial; border-color: initial; "><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; "><span style="border-width: initial; border-color: initial; ">int GetHashTablePos(char *lpszString, MPQHASHTABLE *lpTable, int nTableSize)  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">{  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">const int <span style="border-width: initial; border-color: initial; color: red; ">HASH_OFFSET</span><span style="border-width: initial; border-color: initial; "> = </span><span style="border-width: initial; border-color: initial; color: blue; ">0</span><span style="border-width: initial; border-color: initial; ">, </span><span style="border-width: initial; border-color: initial; color: red; ">HASH_A</span><span style="border-width: initial; border-color: initial; "> = </span><span style="border-width: initial; border-color: initial; color: blue; ">1</span><span style="border-width: initial; border-color: initial; ">, </span><span style="border-width: initial; border-color: initial; color: red; ">HASH_B</span><span style="border-width: initial; border-color: initial; "> = </span><span style="border-width: initial; border-color: initial; color: blue; ">2</span><span style="border-width: initial; border-color: initial; ">;  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">int <span style="border-width: initial; border-color: initial; color: red; ">nHash</span><span style="border-width: initial; border-color: initial; "> = </span><span style="border-width: initial; border-color: initial; color: blue; ">HashString</span><span style="border-width: initial; border-color: initial; ">(lpszString, HASH_OFFSET);  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">int <span style="border-width: initial; border-color: initial; color: red; ">nHashA</span><span style="border-width: initial; border-color: initial; "> = </span><span style="border-width: initial; border-color: initial; color: blue; ">HashString</span><span style="border-width: initial; border-color: initial; ">(lpszString, HASH_A);  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">int <span style="border-width: initial; border-color: initial; color: red; ">nHashB</span><span style="border-width: initial; border-color: initial; "> = </span><span style="border-width: initial; border-color: initial; color: blue; ">HashString</span><span style="border-width: initial; border-color: initial; ">(lpszString, HASH_B);  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">int <span style="border-width: initial; border-color: initial; color: red; ">nHashStart</span><span style="border-width: initial; border-color: initial; "> = </span><span style="border-width: initial; border-color: initial; color: blue; ">nHash</span><span style="border-width: initial; border-color: initial; "> % nTableSize, </span><span style="border-width: initial; border-color: initial; color: red; ">nHashPos</span><span style="border-width: initial; border-color: initial; "> = </span><span style="border-width: initial; border-color: initial; color: blue; ">nHashStart</span><span style="border-width: initial; border-color: initial; ">;  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">while (lpTable[nHashPos].bExists)  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">{  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">  if (lpTable[nHashPos]<span style="border-width: initial; border-color: initial; color: red; ">.nHashA</span><span style="border-width: initial; border-color: initial; "> == nHashA && lpTable[nHashPos]</span><span style="border-width: initial; border-color: initial; color: red; ">.nHashB</span><span style="border-width: initial; border-color: initial; "> == nHashB)  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">   return nHashPos;  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">  else  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">   <span style="border-width: initial; border-color: initial; color: red; ">nHashPos</span><span style="border-width: initial; border-color: initial; "> = (nHashPos + 1) % nTableSize;  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">  if (<span style="border-width: initial; border-color: initial; color: red; ">nHashPos</span><span style="border-width: initial; border-color: initial; "> == nHashStart)  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">   break;  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">}  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">return -1; //Error value  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">}  </span></li></ol></div><br />榪欐牱灝卞彲浠ヤ繚璇佷竾鏃犱竴澶變簡錛?/div><div></div><div>(4). 甯歌鐨勫搱甯岀畻娉曪細MD5 SHA  SHA-1絳夐兘鏄父鐢ㄧ殑鍝堝笇綆楁硶錛岃屼笖浠栦滑閮藉睘浜庢販鍚堝搱甯岀畻娉曪紝闄や簡娣峰悎鍝堝笇綆楁硶榪樻湁鍔犳硶銆佷箻娉曘侀櫎娉曠殑鍝堝笇綆楁硶錛?/div><div>鎵浠ワ紝鍦ㄦ瘮杈冧竴涓枃浠舵槸鍚﹀彂鐢熷彉鍖栫殑鏂規硶鍑轟簡鍙互鐢ㄦ渶鍚庝慨鏀規椂闂存潵鍒ゆ柇錛屼篃鍙互鐢ㄥ叾鍝堝笇code鏉ユ瘮杈冿紝姣斿鐢∕D5鏉ユ瘮杈冿紝濡傛灉鍏禡D5閮藉彉鍖栦簡鍒欐枃浠朵竴瀹氳淇敼浜嗐?br /></div></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; "><br /></span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">4. Tair 緙撳瓨涔熸槸涓縐?鍩轟簬key/value鐨凬oSQL緇撴瀯寮鍙戠殑涓縐嶇紦瀛樻満鍒訛紝鍏跺疄璐ㄤ篃鏄疦oSQL鏁版嵁搴擄紝涓嶈繃鏄痥ey/value緇撴瀯鑰屼笖鏄敤鍐呭瓨鏉ュ瓨鍌ㄦ暟鎹紝鎵浠ョ敤鎶奣air鍙仛緙撳瓨銆?/span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; "> <a style="color: #336699; text-decoration: none; ">http://www.open-open.com/lib/view/open1324345273311.html</a>  <a style="color: #336699; text-decoration: none; ">鐐瑰嚮鎵撳紑閾炬帴</a><br /></span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; "><br /></span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">5. 鍏崇郴鍨嬫暟鎹簱鐨勪簨鍔?ACID)</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">(1). 浜嬪姟(Transaction)錛歍ransaction鏄闂茍鍙兘鏇存柊鏁版嵁搴撲腑鍚勭鏁版嵁欏圭殑涓涓▼搴忔墽琛屽崟鍏?unit)錛屼簨鍔′竴鑸敱楂樼駭鏁版嵁璇█(C++ Java SQL)絳夊啓鐨勭敤鎴風▼搴忓紩璧風殑錛屽茍鐢╞egin transaction----end transaction 鏉ョ晫瀹氫竴涓畬鏁寸殑浜嬪姟</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><div bg_html"="" style="width: 687px; "><div><div><strong>[html]</strong> <a title="view plain" style="background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_plain.gif); border-width: initial; border-color: initial; padding-top: 1px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">view plain</a><a title="copy" style="background-image: url(http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/images/default/ico_copy.gif); border-width: initial; border-color: initial; padding-top: 1px; padding-right: 1px; padding-bottom: 1px; padding-left: 1px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">copy</a><div style="position: absolute; left: 520px; top: 2832px; width: 18px; height: 18px; z-index: 99; border-image: initial; "><embed id="ZeroClipboardMovie_3" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="18" height="18" name="ZeroClipboardMovie_3" align="center" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=3&width=18&height=18" wmode="transparent"></div></div></div><ol start="1" style="border-width: initial; border-color: initial; "><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; "><span style="border-width: initial; border-color: initial; color: #993300; font-weight: bold; "><</span><span style="border-width: initial; border-color: initial; color: #993300; font-weight: bold; ">begin</span><span style="border-width: initial; border-color: initial; "> transaction</span><span style="border-width: initial; border-color: initial; color: #993300; font-weight: bold; ">></span><span style="border-width: initial; border-color: initial; ">  </span></span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">****  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">****  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; ">****  </span></li><li style="border-width: initial; border-color: initial; line-height: 18px; "><span style="border-width: initial; border-color: initial; "><span style="border-width: initial; border-color: initial; color: #993300; font-weight: bold; "></</span><span style="border-width: initial; border-color: initial; color: #993300; font-weight: bold; ">end</span><span style="border-width: initial; border-color: initial; "> transaction</span><span style="border-width: initial; border-color: initial; color: #993300; font-weight: bold; ">></span><span style="border-width: initial; border-color: initial; ">  </span></span></li></ol></div>涓涓畬鏁寸殑浜嬪姟鐢?span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">begin transaction----end transaction  閲岄潰鐨勬墍鏈夋搷浣滅粍鎴愶紱鍦ㄥ叧緋誨瀷鏁版嵁搴撲腑涓涓簨鍔″彲浠ユ槸涓鏉QL璇彞鎴栦竴緇凷QL璇彞鎴栬呮槸涓涓▼搴忥紱浜嬪姟鏄茍鍙戝拰鍥炴粴鐨勫熀鏈崟浣嶃?/span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">(2). 浜嬪姟鐨凙CID灞炴э細</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; text-align: left; background-color: #ffffff; "><ul><li><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">Atomicity(鍘熷瓙鎬?錛氫竴涓簨鍔℃槸涓涓笉鍙垎鍓茬殑瀹屾暣鍗曞厓錛屼竴涓猼ransaction閲岄潰鐨勬墍鏈夋搷浣滆涔堥兘鍋氬畬錛岃涔堥兘涓嶅仛錛涘綋涓棿涓涓搷浣滃け璐ユ妸鎵鏈夊凡緇忓仛鐨勬搷浣滈兘鍥炴粴錛?/span></li><li><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">Consistency(涓鑷存?錛氭暟鎹簱鍦ㄤ竴涓簨鍔″紑濮嬪墠鏄竴鑷存х殑錛屽湪榪欎釜浜嬪姟鎵ц瀹屾瘯鍚庝粛鐒舵槸涓鑷存х殑錛涘彧鏄粠涓涓竴鑷存х姸鎬佸埌鍙︿竴涓竴鑷存х姸鎬侊紱浣嗛兘鏄竴鑷存х殑</span></li><li><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">Isolation(闅旂鎬?錛氫竴涓簨鍔$殑鎵ц涓嶈兘琚叾浠栦簨鍔℃墍鎵撴壈錛屽嵆涓涓簨鍔″唴閮ㄦ搷浣滃強浣跨敤鐨勬暟鎹騫跺彂鐨勪簨鍔℃槸闅旂鐨勶紝<strong>騫跺彂鎵ц鐨勪簨鍔′箣闂翠簰鐩鎬笉騫叉壈</strong>(<strong>涓嶇悊瑙?</strong>!!</span></li><li><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">Durablity(鎸佷箙鎬?錛氫篃灝辨案涔呮?Permanence)錛屽嵆涓涓簨鍔′竴鏃︽墽琛屽畬姣曪紝鍒欏畠瀵規暟鎹簱鐨勬洿鏂版槸鎸佷箙鎬х殑錛屽嵆涓嶅彈鍏朵粬鎿嶄綔鐨勫獎鍝嶏紱涔熷氨鏄簨鍔′慨鏀逛簡鏁版嵁搴撲簡</span></li></ul><div><span style="font-family: Helvetica, Tahoma, Arial, sans-serif; ">榪欎釜ACID鐨勫睘鎬ф槸鍏崇郴鍨嬫暟鎹簱(DBMS)闈炲父閲嶈鐨勫睘鎬э紝鍦ㄦ墽琛屾暟鎹簱鎿嶄綔鏃跺繀欏繪弧瓚矨CID灞炴э紝鍏朵腑AI鏄垜浠紪紼嬩腑瑕佹敞鎰忕殑鍦版柟銆?/span></div></div></div><img src ="http://www.shnenglu.com/cxiaojia/aggbug/195864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cxiaojia/" target="_blank">C灝忓姞</a> 2012-12-01 16:57 <a href="http://www.shnenglu.com/cxiaojia/archive/2012/12/01/195864.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>vs2005,vs2008瑙e喅娣誨姞鍙橀噺娣誨姞鍑芥暟娣誨姞綾繪椂鑴氭湰閿欒闂http://www.shnenglu.com/cxiaojia/archive/2012/11/12/195070.htmlC灝忓姞C灝忓姞Mon, 12 Nov 2012 04:35:00 GMThttp://www.shnenglu.com/cxiaojia/archive/2012/11/12/195070.htmlhttp://www.shnenglu.com/cxiaojia/comments/195070.htmlhttp://www.shnenglu.com/cxiaojia/archive/2012/11/12/195070.html#Feedback0http://www.shnenglu.com/cxiaojia/comments/commentRss/195070.htmlhttp://www.shnenglu.com/cxiaojia/services/trackbacks/195070.html緇欎竴涓帶浠舵坊鍔犲彉閲忕殑鏃跺欏嚭鐜扮殑鑴氭湰閿欒闂

瑙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



]]>
浼樺厛闃熷垪錛堜簩鍙夊爢錛夋ā鏉?/title><link>http://www.shnenglu.com/cxiaojia/archive/2012/09/15/190272.html</link><dc:creator>C灝忓姞</dc:creator><author>C灝忓姞</author><pubDate>Sat, 15 Sep 2012 06:40:00 GMT</pubDate><guid>http://www.shnenglu.com/cxiaojia/archive/2012/09/15/190272.html</guid><wfw:comment>http://www.shnenglu.com/cxiaojia/comments/190272.html</wfw:comment><comments>http://www.shnenglu.com/cxiaojia/archive/2012/09/15/190272.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/cxiaojia/comments/commentRss/190272.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cxiaojia/services/trackbacks/190272.html</trackback:ping><description><![CDATA[<div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">template</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> T,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> MAX</span><span style="color: #000000; ">=</span><span style="color: #000000; ">100003</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> BinaryHeap<br />{<br />    </span><span style="color: #0000FF; ">private</span><span style="color: #000000; ">:<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> Size;<br />    T </span><span style="color: #000000; ">*</span><span style="color: #000000; "> Tarr;<br />    </span><span style="color: #0000FF; ">public</span><span style="color: #000000; ">:<br />    BinaryHeap();<br />    </span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> insert(T x);<br />    T deleteMin();<br />    </span><span style="color: #000000; ">~</span><span style="color: #000000; ">BinaryHeap();<br />};<br /><br />template</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> T,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> MAX</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />BinaryHeap</span><span style="color: #000000; "><</span><span style="color: #000000; ">T,MAX</span><span style="color: #000000; ">></span><span style="color: #000000; ">::BinaryHeap()<br />{<br />    Tarr</span><span style="color: #000000; ">=</span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> T[MAX</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(Tarr</span><span style="color: #000000; ">==</span><span style="color: #000000; ">NULL) {cout</span><span style="color: #000000; "><<</span><span style="color: #000000; ">"</span><span style="color: #000000; ">鍒涘緩鏁扮粍澶辮觸</span><span style="color: #000000; ">"</span><span style="color: #000000; "><<</span><span style="color: #000000; ">endl;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> ;}<br />    Size</span><span style="color: #000000; ">=</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br />template</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> T,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> MAX</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">void</span><span style="color: #000000; "> BinaryHeap</span><span style="color: #000000; "><</span><span style="color: #000000; ">T,MAX</span><span style="color: #000000; ">></span><span style="color: #000000; ">::insert(T x)<br />{<br />    </span><span style="color: #000000; ">++</span><span style="color: #000000; ">Size;<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(Size</span><span style="color: #000000; ">==</span><span style="color: #000000; ">MAX) </span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i;<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">Size;Tarr[i</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">]</span><span style="color: #000000; ">></span><span style="color: #000000; ">x;i</span><span style="color: #000000; ">/=</span><span style="color: #000000; ">2</span><span style="color: #000000; ">)<br />        Tarr[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">Tarr[i</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];<br />    Tarr[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">x;<br />}<br />template</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> T,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> MAX</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />T BinaryHeap</span><span style="color: #000000; "><</span><span style="color: #000000; ">T,MAX</span><span style="color: #000000; ">></span><span style="color: #000000; ">::deleteMin()<br />{<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(Size</span><span style="color: #000000; ">==</span><span style="color: #000000; ">0</span><span style="color: #000000; ">) </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    T minem</span><span style="color: #000000; ">=</span><span style="color: #000000; ">Tarr[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />    T lastem</span><span style="color: #000000; ">=</span><span style="color: #000000; ">Tarr[Size</span><span style="color: #000000; ">--</span><span style="color: #000000; ">];<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> i,child;<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">(i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;i</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; "><=</span><span style="color: #000000; ">Size;i</span><span style="color: #000000; ">=</span><span style="color: #000000; ">child)    <br />    {<br />        child</span><span style="color: #000000; ">=</span><span style="color: #000000; ">i</span><span style="color: #000000; ">*</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(child</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">Size</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&&</span><span style="color: #000000; ">Tarr[child</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]</span><span style="color: #000000; "><</span><span style="color: #000000; ">Tarr[child])<br />        </span><span style="color: #000000; ">++</span><span style="color: #000000; ">child;<br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(lastem</span><span style="color: #000000; ">></span><span style="color: #000000; ">Tarr[child])<br />            Tarr[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">Tarr[child];<br />        </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "><br />            </span><span style="color: #0000FF; ">break</span><span style="color: #000000; ">;<br /><br />    }<br />    Tarr[i]</span><span style="color: #000000; ">=</span><span style="color: #000000; ">lastem;<br /><br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> minem;<br />}<br /><br />template</span><span style="color: #000000; "><</span><span style="color: #0000FF; ">class</span><span style="color: #000000; "> T,</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> MAX</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />BinaryHeap</span><span style="color: #000000; "><</span><span style="color: #000000; ">T,MAX</span><span style="color: #000000; ">></span><span style="color: #000000; ">::</span><span style="color: #000000; ">~</span><span style="color: #000000; ">BinaryHeap()<br />{<br />    delete[] Tarr;<br /><br />}<br /><br /></span></div><img src ="http://www.shnenglu.com/cxiaojia/aggbug/190272.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cxiaojia/" target="_blank">C灝忓姞</a> 2012-09-15 14:40 <a href="http://www.shnenglu.com/cxiaojia/archive/2012/09/15/190272.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍝堝笇妯℃澘http://www.shnenglu.com/cxiaojia/archive/2012/09/12/190436.htmlC灝忓姞C灝忓姞Wed, 12 Sep 2012 12:06:00 GMThttp://www.shnenglu.com/cxiaojia/archive/2012/09/12/190436.htmlhttp://www.shnenglu.com/cxiaojia/comments/190436.htmlhttp://www.shnenglu.com/cxiaojia/archive/2012/09/12/190436.html#Feedback0http://www.shnenglu.com/cxiaojia/comments/commentRss/190436.htmlhttp://www.shnenglu.com/cxiaojia/services/trackbacks/190436.html
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++;
}

]]>
涓澶╀竴涓猻hell瀹炰緥錛?錛夊畾鏃跺浠芥枃浠?/title><link>http://www.shnenglu.com/cxiaojia/archive/2012/09/07/189789.html</link><dc:creator>C灝忓姞</dc:creator><author>C灝忓姞</author><pubDate>Fri, 07 Sep 2012 03:00:00 GMT</pubDate><guid>http://www.shnenglu.com/cxiaojia/archive/2012/09/07/189789.html</guid><wfw:comment>http://www.shnenglu.com/cxiaojia/comments/189789.html</wfw:comment><comments>http://www.shnenglu.com/cxiaojia/archive/2012/09/07/189789.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/cxiaojia/comments/commentRss/189789.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/cxiaojia/services/trackbacks/189789.html</trackback:ping><description><![CDATA[<div> <p style="margin-bottom: 0cm">鍐欎竴涓浠芥枃浠剁殑鑴氭湰錛屽埄鐢╟rontab瀹氭椂鎵ц銆?/p> <p style="margin-bottom: 0cm"><br /> </p> <p style="margin-bottom: 0cm">姝ラ濡備笅錛?/p> <p style="margin-bottom: 0cm">1錛岃緗浠界洰鐨勭洰褰?/p> <p style="margin-bottom: 0cm">2錛岃繘鍏ョ洰鐨勭洰褰?/p> <p style="margin-bottom: 0cm">3錛岃幏鍙栨椂闂達紝璁劇疆澶囦喚鏂囦歡鍚?/p> <p style="margin-bottom: 0cm">4錛屽浠芥枃浠?/p> </div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#</span><span style="color: #000000; ">!/</span><span style="color: #000000; ">bin</span><span style="color: #000000; ">/</span><span style="color: #000000; ">bash<br /><br />DIRNAME</span><span style="color: #000000; ">=</span><span style="color: #000000; ">`ls </span><span style="color: #000000; ">/</span><span style="color: #000000; ">root </span><span style="color: #000000; ">|</span><span style="color: #000000; "> grep bak`  #</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> [ </span><span style="color: #000000; ">-</span><span style="color: #000000; ">z </span><span style="color: #000000; ">"</span><span style="color: #000000; ">$DIRNAME</span><span style="color: #000000; ">"</span><span style="color: #000000; "> ]  #</span><span style="color: #000000; ">2</span><span style="color: #000000; "><br />then<br />mkdir </span><span style="color: #000000; ">/</span><span style="color: #000000; ">root</span><span style="color: #000000; ">/</span><span style="color: #000000; ">bak  #</span><span style="color: #000000; ">3</span><span style="color: #000000; "><br />fi<br /><br />cd </span><span style="color: #000000; ">/</span><span style="color: #000000; ">root</span><span style="color: #000000; ">/</span><span style="color: #000000; ">bak  #</span><span style="color: #000000; ">4</span><span style="color: #000000; "><br /><br />YY</span><span style="color: #000000; ">=</span><span style="color: #000000; ">`date </span><span style="color: #000000; ">+%</span><span style="color: #000000; ">y`   #</span><span style="color: #000000; ">5</span><span style="color: #000000; "><br />MM</span><span style="color: #000000; ">=</span><span style="color: #000000; ">`date </span><span style="color: #000000; ">+%</span><span style="color: #000000; ">m`<br />DD</span><span style="color: #000000; ">=</span><span style="color: #000000; ">`date </span><span style="color: #000000; ">+%</span><span style="color: #000000; ">d`<br />etc</span><span style="color: #000000; ">=</span><span style="color: #000000; ">_etc<br /><br />BACKETC</span><span style="color: #000000; ">=</span><span style="color: #000000; ">$YY$MM$DD$etc.tar.gz  #</span><span style="color: #000000; ">6</span><span style="color: #000000; "><br />tar </span><span style="color: #000000; ">-</span><span style="color: #000000; ">zcvf $BACKETC </span><span style="color: #000000; ">/</span><span style="color: #000000; ">etc  #</span><span style="color: #000000; ">7</span><span style="color: #000000; "><br />echo </span><span style="color: #000000; ">"</span><span style="color: #000000; ">fileback finished!</span><span style="color: #000000; ">"</span><span style="color: #000000; "><br /></span></div><div> <p style="margin-bottom: 0cm">#1錛氳幏鍙杛oot/bak瀛楃涓?/p> <p style="margin-bottom: 0cm">#2錛?z閫夐」鍒ゆ柇鏄惁涓虹┖</p> <p style="margin-bottom: 0cm">#3錛氬鏋滀負絀哄氨鍒涘緩鐩綍</p> <p style="margin-bottom: 0cm">#4錛氳繘鍏ヨ鐩綍</p> <p style="margin-bottom: 0cm">#5錛氳幏鍙栧綋鍓嶆椂闂?/p> <p style="margin-bottom: 0cm">#6錛氳緗浠芥枃浠跺悕</p> <p style="margin-bottom: 0cm">#7錛氬皢/etc鐩綍涓嬫墍鏈夋枃浠舵墦鍖呭浠?/p> <p style="margin-bottom: 0cm">          -z 鐢╣izp鍘嬬緝鍜岃В鍘嬬緝鏂囦歡錛岃嫢鍔犱笂姝ら夐」鍒涘緩鐨勫帇緙╁寘錛岃В鍘嬬殑鏃跺欎篃璁歌鍔犱笂姝ら夐」</p> <p style="margin-bottom: 0cm">          -c 鍒涘緩鏂扮殑鍖?/p> <p style="margin-bottom: 0cm">          -v 璇︾粏鎶ュ憡tar澶勭悊鏂囦歡鐨勪俊鎭?/p> <p style="margin-bottom: 0cm">          -f 浣跨敤鍘嬬緝鏂囦歡鎴栬澶囷紝璇ラ夐」閫氬父浜嬪繀閫夌殑</p> </div><br /><br /><div> <p style="margin-bottom: 0cm">瀹氭椂鎵ц鑴氭湰闇瑕佷慨鏀筫tc涓殑 crontab鏂囦歡</p> </div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">root@Notebook</span><span style="color: #000000; ">-</span><span style="color: #000000; ">PC:</span><span style="color: #000000; ">/</span><span style="color: #000000; ">etc# vi crontab<br /><br /># </span><span style="color: #000000; ">/</span><span style="color: #000000; ">etc</span><span style="color: #000000; ">/</span><span style="color: #000000; ">crontab: system</span><span style="color: #000000; ">-</span><span style="color: #000000; ">wide crontab<br /><br /># Unlike any other crontab you don</span><span style="color: #000000; ">'</span><span style="color: #000000; ">t have to run the `crontab</span><span style="color: #000000; ">'</span><span style="color: #000000; "><br /><br /># command to install the </span><span style="color: #0000FF; ">new</span><span style="color: #000000; "> version when you edit </span><span style="color: #0000FF; ">this</span><span style="color: #000000; "> file<br /><br /># and files </span><span style="color: #0000FF; ">in</span><span style="color: #000000; "> </span><span style="color: #000000; ">/</span><span style="color: #000000; ">etc</span><span style="color: #000000; ">/</span><span style="color: #000000; ">cron.d. These files also have username fields,<br /><br /># that none of the other crontabs </span><span style="color: #0000FF; ">do</span><span style="color: #000000; ">.<br /><br />SHELL</span><span style="color: #000000; ">=/</span><span style="color: #000000; ">bin</span><span style="color: #000000; ">/</span><span style="color: #000000; ">sh<br /><br />PATH</span><span style="color: #000000; ">=/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">local</span><span style="color: #000000; ">/</span><span style="color: #000000; ">sbin:</span><span style="color: #000000; ">/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">local</span><span style="color: #000000; ">/</span><span style="color: #000000; ">bin:</span><span style="color: #000000; ">/</span><span style="color: #000000; ">sbin:</span><span style="color: #000000; ">/</span><span style="color: #000000; ">bin:</span><span style="color: #000000; ">/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">sbin:</span><span style="color: #000000; ">/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">bin<br /><br /># m h dom mon dow user  command<br /><br /></span><span style="color: #000000; ">17</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">    </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">   root    cd </span><span style="color: #000000; ">/</span><span style="color: #000000; "> </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> run</span><span style="color: #000000; ">-</span><span style="color: #000000; ">parts </span><span style="color: #000000; ">--</span><span style="color: #000000; ">report </span><span style="color: #000000; ">/</span><span style="color: #000000; ">etc</span><span style="color: #000000; ">/</span><span style="color: #000000; ">cron.hourly<br /><br /></span><span style="color: #000000; ">25</span><span style="color: #000000; "> </span><span style="color: #000000; ">6</span><span style="color: #000000; ">    </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">   root    test </span><span style="color: #000000; ">-</span><span style="color: #000000; ">x </span><span style="color: #000000; ">/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">sbin</span><span style="color: #000000; ">/</span><span style="color: #000000; ">anacron </span><span style="color: #000000; ">||</span><span style="color: #000000; "> ( cd </span><span style="color: #000000; ">/</span><span style="color: #000000; "> </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> run</span><span style="color: #000000; ">-</span><span style="color: #000000; ">parts </span><span style="color: #000000; ">--</span><span style="color: #000000; ">report </span><span style="color: #000000; ">/</span><span style="color: #000000; ">etc</span><span style="color: #000000; ">/</span><span style="color: #000000; ">cron.daily )<br /><br /></span><span style="color: #000000; ">47</span><span style="color: #000000; "> </span><span style="color: #000000; ">6</span><span style="color: #000000; ">    </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">7</span><span style="color: #000000; ">   root    test </span><span style="color: #000000; ">-</span><span style="color: #000000; ">x </span><span style="color: #000000; ">/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">sbin</span><span style="color: #000000; ">/</span><span style="color: #000000; ">anacron </span><span style="color: #000000; ">||</span><span style="color: #000000; "> ( cd </span><span style="color: #000000; ">/</span><span style="color: #000000; "> </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> run</span><span style="color: #000000; ">-</span><span style="color: #000000; ">parts </span><span style="color: #000000; ">--</span><span style="color: #000000; ">report </span><span style="color: #000000; ">/</span><span style="color: #000000; ">etc</span><span style="color: #000000; ">/</span><span style="color: #000000; ">cron.weekly )<br /><br /></span><span style="color: #000000; ">52</span><span style="color: #000000; "> </span><span style="color: #000000; ">6</span><span style="color: #000000; ">    </span><span style="color: #000000; ">1</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">   root    test </span><span style="color: #000000; ">-</span><span style="color: #000000; ">x </span><span style="color: #000000; ">/</span><span style="color: #000000; ">usr</span><span style="color: #000000; ">/</span><span style="color: #000000; ">sbin</span><span style="color: #000000; ">/</span><span style="color: #000000; ">anacron </span><span style="color: #000000; ">||</span><span style="color: #000000; "> ( cd </span><span style="color: #000000; ">/</span><span style="color: #000000; "> </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> run</span><span style="color: #000000; ">-</span><span style="color: #000000; ">parts </span><span style="color: #000000; ">--</span><span style="color: #000000; ">report </span><span style="color: #000000; ">/</span><span style="color: #000000; ">etc</span><span style="color: #000000; ">/</span><span style="color: #000000; ">cron.monthly )<br /><br /></span><span style="color: #000000; ">0</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">   </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; "> </span><span style="color: #000000; ">*</span><span style="color: #000000; ">   root    test4.sh           #鍔犱笂姝よ錛岃〃紺烘瘡澶?鏃舵墽琛岃剼鏈?nbsp;       <br />#<br /></span></div><br /><div> <p style="margin-bottom: 0cm">* * * * * #琛ㄧず姣忓垎閽?/p> <p style="margin-bottom: 0cm">1 * * * * #琛ㄧず姣忓皬鏃剁殑絎竴鍒嗛挓</p> <p style="margin-bottom: 0cm">2 12 * * * #琛ㄧず姣忓ぉ鐨?2錛?2</p> <p style="margin-bottom: 0cm">0-59/2 * * * * #姣忎袱鍒嗛挓鎵ц涓嬈′換鍔?/p> </div><br /><br /><br /><br /><img src ="http://www.shnenglu.com/cxiaojia/aggbug/189789.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/cxiaojia/" target="_blank">C灝忓姞</a> 2012-09-07 11:00 <a href="http://www.shnenglu.com/cxiaojia/archive/2012/09/07/189789.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://www.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://www-988900.com" target="_blank">欧美韩日一区</a>| <a href="http://jnjpsm.com" target="_blank">久久国产天堂福利天堂</a>| <a href="http://myasker.com" target="_blank">国产在线不卡</a>| <a href="http://1194123.com" target="_blank">欧美大片免费观看</a>| <a href="http://oudaole.com" target="_blank">欧美午夜电影在线</a>| <a href="http://www-888593.com" target="_blank">久久久久久亚洲精品不卡4k岛国</a>| <a href="http://www44552.com" target="_blank">久久成人精品无人区</a>| <a href="http://goutoujunshi.com" target="_blank">亚洲六月丁香色婷婷综合久久</a>| <a href="http://eee285.com" target="_blank">日韩视频一区二区在线观看 </a>| <a href="http://huayoue.com" target="_blank">亚洲欧洲日本国产</a>| <a href="http://456985.com" target="_blank">国产美女精品视频免费观看</a>| <a href="http://www-00468.com" target="_blank">欧美高清视频在线</a>| <a href="http://287677.com" target="_blank">国产中文一区</a>| <a href="http://azaz7.com" target="_blank">欧美亚洲综合在线</a>| <a href="http://5599912.com" target="_blank">午夜精品免费</a>| <a href="http://4hup23.com" target="_blank">国产精品天美传媒入口</a>| <a href="http://avjj80.com" target="_blank">亚洲日本欧美日韩高观看</a>| <a href="http://avtt59999.com" target="_blank">在线播放日韩</a>| <a href="http://77777kkk.com" target="_blank">久久午夜电影网</a>| <a href="http://mm910.com" target="_blank">久久综合一区二区三区</a>| <a href="http://794579.com" target="_blank">国产日韩专区</a>| <a href="http://3597777.com" target="_blank">久久精品一区</a>| <a href="http://cnlbogs.com" target="_blank">欧美国产精品v</a>| <a href="http://jizzizz.com" target="_blank">亚洲激情六月丁香</a>| <a href="http://91keshi.com" target="_blank">欧美日韩高清在线一区</a>| <a href="http://ycgg008.com" target="_blank">亚洲精品一区二区三区不</a>| <a href="http://hcbr365.com" target="_blank">亚洲乱码一区二区</a>| <a href="http://www-878899.com" target="_blank">欧美日本亚洲韩国国产</a>| <a href="http://wwwcc7777.com" target="_blank">一区二区高清在线观看</a>| <a href="http://moonshile.com" target="_blank">亚洲深夜激情</a>| <a href="http://my17677.com" target="_blank">国产日本欧美一区二区三区</a>| <a href="http://www3344uh.com" target="_blank">午夜精彩国产免费不卡不顿大片</a>| <a href="http://wslsp.com" target="_blank">欧美一区二区三区日韩</a>| <a href="http://xxdd51.com" target="_blank">红桃视频国产精品</a>| <a href="http://92xx00.com" target="_blank">欧美国产一区在线</a>| <a href="http://5767j.com" target="_blank">亚洲欧美激情视频在线观看一区二区三区 </a>| <a href="http://choaoxing.com" target="_blank">亚洲一区二区高清视频</a>| <a href="http://tao62bao.com" target="_blank">国产嫩草影院久久久久</a>| <a href="http://04781900.com" target="_blank">久久久久.com</a>| <a href="http://iotbzw.com" target="_blank">亚洲性感激情</a>| <a href="http://aabbcc11.com" target="_blank">欧美刺激性大交免费视频</a>| <a href="http://esdzu.com" target="_blank">亚洲午夜久久久久久久久电影院 </a>| <a href="http://k68c.com" target="_blank">亚洲日韩视频</a>| <a href="http://sapronlee.com" target="_blank">欧美午夜欧美</a>| <a href="http://917729.com" target="_blank">欧美高清影院</a>| <a href="http://004ttt.com" target="_blank">久久九九精品99国产精品</a>| <a href="http://baixinlocal.com" target="_blank">日韩视频一区二区三区在线播放</a>| <a href="http://xy3977.com" target="_blank">久久综合久色欧美综合狠狠</a>| <a href="http://www39pao.com" target="_blank">一区二区成人精品</a>| <a href="http://8946286.com" target="_blank">亚洲欧洲精品一区二区</a>| <a href="http://dd8uau0ncu.com" target="_blank">国产日韩亚洲欧美综合</a>| <a href="http://9911444.com" target="_blank">国产精品久久国产愉拍</a>| <a href="http://o74sokyoss.com" target="_blank">欧美成人精品一区二区三区</a>| <a href="http://www-44469.com" target="_blank">久久爱www久久做</a>| <a href="http://318823.com" target="_blank">亚洲欧美一区二区三区在线</a>| <a href="http://jjy891.com" target="_blank">一本色道久久综合亚洲精品婷婷 </a>| <a href="http://www-69669.com" target="_blank">欧美电影免费</a>| <a href="http://www-24333.com" target="_blank">久久精品人人做人人爽电影蜜月</a>| <a href="http://1000078.com" target="_blank">亚洲视频久久</a>| <a href="http://8868866.com" target="_blank">亚洲一区二区动漫</a>| <a href="http://aabbcc11.com" target="_blank">亚洲一区二区三区四区视频</a>| <a href="http://www30bxbx.com" target="_blank">亚洲精品一区二区三区av</a>| <a href="http://eee285.com" target="_blank">亚洲精品中文字幕在线观看</a>| <a href="http://yytaotu.com" target="_blank">亚洲狠狠婷婷</a>| <a href="http://qq6699.com" target="_blank">国产精品丝袜久久久久久app</a>| <a href="http://87ssyy.com" target="_blank">国产精品高清网站</a>| <a href="http://ddnwater.com" target="_blank">国产精品视频一区二区高潮</a>| <a href="http://777177c.com" target="_blank">亚洲一区久久久</a>| <a href="http://xiuxiu124.com" target="_blank">亚洲欧美在线磁力</a>| <a href="http://778kb.com" target="_blank">久久精彩视频</a>| <a href="http://www1982t.com" target="_blank">欧美激情综合五月色丁香</a>| <a href="http://227237.com" target="_blank">欧美日韩免费在线观看</a>| <a href="http://5917t.com" target="_blank">国产精品免费在线 </a>| <a href="http://312012.com" target="_blank">欧美在线综合</a>| <a href="http://7770790.com" target="_blank">狂野欧美激情性xxxx欧美</a>| <a href="http://gykfqzgpt.com" target="_blank">欧美大片va欧美在线播放</a>| <a href="http://sdsptl.com" target="_blank">日韩视频中文</a>| <a href="http://660507jj.com" target="_blank">久久久久九九视频</a>| <a href="http://0773ye.com" target="_blank">国产精品扒开腿爽爽爽视频</a>| <a href="http://318823.com" target="_blank">在线欧美影院</a>| <a href="http://559dd.com" target="_blank">欧美一区二区三区四区视频</a>| <a href="http://1369080.com" target="_blank">免费不卡视频</a>| <a href="http://jnhrjixie.com" target="_blank">亚洲色图在线视频</a>| <a href="http://833077.com" target="_blank">欧美韩日一区二区三区</a>| <a href="http://828121.com" target="_blank">国产精品日韩欧美一区二区</a>| <a href="http://sfrecq.com" target="_blank">在线观看欧美视频</a>| <a href="http://zunguidq.com" target="_blank">午夜精品久久久久久久久久久久久</a>| <a href="http://977dy.com" target="_blank">免费观看在线综合色</a>| <a href="http://876769.com" target="_blank">亚洲视频电影在线</a>| <a href="http://874805.com" target="_blank">欧美色图麻豆</a>| <a href="http://889028.com" target="_blank">国产精品99久久久久久www</a>| <a href="http://sikixixw12.com" target="_blank">久久综合九色欧美综合狠狠</a>| <a href="http://uu774.com" target="_blank">亚洲淫性视频</a>| <a href="http://785448.com" target="_blank">国产精品私人影院</a>| <a href="http://123086.com" target="_blank">午夜精品久久久久久99热软件</a>| <a href="http://1000078.com" target="_blank">亚洲精品黄色</a>| <a href="http://www18998.com" target="_blank">欧美精品尤物在线</a>| <a href="http://66gg6.com" target="_blank">一本在线高清不卡dvd </a>| <a href="http://929889.com" target="_blank">麻豆成人小视频</a>| <a href="http://www-88899.com" target="_blank">国产在线国偷精品产拍免费yy</a>| <a href="http://5858yp.com" target="_blank">亚洲天堂免费观看</a>| <a href="http://www94816.com" target="_blank">最新日韩av</a>| <a href="http://497988.com" target="_blank">欧美日韩精品伦理作品在线免费观看</a>| <a href="http://haoa009.com" target="_blank">国内精品久久久久影院色</a>| <a href="http://2302345.com" target="_blank">久久精品国产96久久久香蕉</a>| <a href="http://848585.com" target="_blank">午夜精品久久久久久久99樱桃</a>| <a href="http://69xxx6.com" target="_blank">国产美女高潮久久白浆</a>| <a href="http://taominze.com" target="_blank">国产精品日韩精品欧美在线</a>| <a href="http://495177.com" target="_blank">亚洲一区二区欧美</a>| <a href="http://596361.com" target="_blank">午夜欧美精品</a>| <a href="http://958997.com" target="_blank">激情欧美日韩</a>| <a href="http://chaxiangmall.com" target="_blank">亚洲激情一区二区</a>| <a href="http://114499com.com" target="_blank">欧美日韩一区二区欧美激情 </a>| <a href="http://jiujiire.com" target="_blank">亚洲精品久久</a>| <a href="http://483187.com" target="_blank">国产精品美女主播在线观看纯欲</a>| <a href="http://122332.com" target="_blank">亚洲欧美综合另类中字</a>| <a href="http://681656.com" target="_blank">久久精品国产亚洲5555</a>| <a href="http://862924.com" target="_blank">99精品久久久</a>| <a href="http://777888789.com" target="_blank">久久精品国产99国产精品澳门</a>| <a href="http://tuiliqi.com" target="_blank">黄色影院成人</a>| <a href="http://tigerpowerinc.com" target="_blank">亚洲裸体视频</a>| <a href="http://www-kkjj88.com" target="_blank">极品中文字幕一区</a>| <a href="http://actinview.com" target="_blank">一区二区动漫</a>| <a href="http://jiazhuangma.com" target="_blank">亚洲国产一区二区a毛片</a>| <a href="http://678255.com" target="_blank">亚洲一二三区在线</a>| <a href="http://7777525.com" target="_blank">日韩一级黄色av</a>| <a href="http://www30bxbx.com" target="_blank">久久综合久久久</a>| <a href="http://shenshijuesheying.com" target="_blank">香蕉免费一区二区三区在线观看</a>| <a href="http://huangsedy.com" target="_blank">久久天堂成人</a>| <a href="http://chaxiangmall.com" target="_blank">久久精品一本久久99精品</a>| <a href="http://67idid.com" target="_blank">欧美日本亚洲</a>| <a href="http://jiyixitong.com" target="_blank">亚洲国产精品va在线看黑人</a>| <a href="http://7282789.com" target="_blank">国产欧美日韩另类一区</a>| <a href="http://shwazrbjd.com" target="_blank">一区二区三区国产盗摄</a>| <a href="http://489633.com" target="_blank">日韩午夜激情av</a>| <a href="http://www456456.com" target="_blank">欧美成人精品1314www</a>| <a href="http://6hzl8.com" target="_blank">欧美国产大片</a>| <a href="http://www433444.com" target="_blank">亚洲国产99</a>| <a href="http://www-132377.com" target="_blank">麻豆成人在线</a>| <a href="http://48488a.com" target="_blank">亚洲国产一成人久久精品</a>| <a href="http://t3gg.com" target="_blank">亚洲精品免费网站</a>| <a href="http://621791.com" target="_blank">欧美精品二区</a>| <a href="http://483187.com" target="_blank">一区二区三区欧美日韩</a>| <a href="http://jiajianpei.com" target="_blank">亚洲网站啪啪</a>| <a href="http://diao66.com" target="_blank">欧美视频手机在线</a>| <a href="http://cloakok.com" target="_blank">午夜精品福利在线</a>| <a href="http://erzhuzi.com" target="_blank">麻豆9191精品国产</a>| <a href="http://dtwave-ind.com" target="_blank">亚洲经典在线</a>| <a href="http://carboarm.com" target="_blank">欧美体内she精视频在线观看</a>| <a href="http://whmingtong.com" target="_blank">欧美激情一区二区三区蜜桃视频 </a>| <a href="http://ccc982.com" target="_blank">亚洲欧美日本国产有色</a>| <a href="http://vvv3939.com" target="_blank">久久免费国产</a>| <a href="http://dkmcjc.com" target="_blank">一本色道综合亚洲</a>| <a href="http://456888com.com" target="_blank">国产综合av</a>| <a href="http://hwlxwp.com" target="_blank">欧美日韩日日骚</a>| <a href="http://tizenkorea.com" target="_blank">亚洲男人的天堂在线aⅴ视频</a>| <a href="http://7485888.com" target="_blank">久久精品国产精品亚洲精品</a>| <a href="http://xissy.com" target="_blank">亚洲国产精品久久久久婷婷884</a>| <a href="http://maomi998.com" target="_blank">欧美连裤袜在线视频</a>| <a href="http://56718ca.com" target="_blank">欧美在线看片a免费观看</a>| <a href="http://6133c.com" target="_blank">亚洲国产乱码最新视频</a>| <a href="http://spidermanseo.com" target="_blank">久久精品在线免费观看</a>| <a href="http://dehuabz.com" target="_blank">av成人激情</a>| <a href="http://tp-88.com" target="_blank">亚洲大胆av</a>| <a href="http://6688se.com" target="_blank">国产视频欧美视频</a>| <a href="http://www-4157.com" target="_blank">欧美日韩二区三区</a>| <a href="http://xiaobi13.com" target="_blank">久久综合电影</a>| <a href="http://hehextv.com" target="_blank">久久精品免费播放</a>| <a href="http://www520590.com" target="_blank">亚洲视屏在线播放</a>| <a href="http://www-87633.com" target="_blank">91久久精品美女高潮</a>| <a href="http://www0505nn.com" target="_blank">久久九九99</a>| <a href="http://038226.com" target="_blank">欧美在线资源</a>| <a href="http://ctmhotel.com" target="_blank">性欧美长视频</a>| <a href="http://18av18.com" target="_blank">欧美一区二区三区四区高清</a>| <a href="http://chengli88.com" target="_blank">一区二区三区高清不卡</a>| <a href="http://sauske.com" target="_blank">99在线精品视频在线观看</a>| <a href="http://www442222.com" target="_blank">91久久极品少妇xxxxⅹ软件</a>| <a href="http://wwwmiya118.com" target="_blank">国内精品久久久久影院优</a>| <a href="http://www909059.com" target="_blank">欧美色图一区二区三区</a>| <a href="http://elpezomaha.com" target="_blank">欧美三级不卡</a>| <a href="http://miya2223.com" target="_blank">国产精品激情电影</a>| <a href="http://www-65581.com" target="_blank">久久久人成影片一区二区三区</a>| <a href="http://llyx888.com" target="_blank">久久久久久久久久久一区</a>| <a href="http://sclddn.com" target="_blank">久久国产精品久久久久久</a>| <a href="http://817794.com" target="_blank">久久青青草综合</a>| <a href="http://5gn4y.com" target="_blank">欧美国产第二页</a>| <a href="http://226671.com" target="_blank">国产精品www994</a>| <a href="http://yw133777.com" target="_blank">国产综合婷婷</a>| <a href="http://114mz.com" target="_blank">亚洲精品视频免费在线观看</a>| <a href="http://4923cc.com" target="_blank">99精品欧美一区二区三区</a>| <a href="http://hhh699.com" target="_blank">亚洲欧美视频一区</a>| <a href="http://354eee.com" target="_blank">久久午夜激情</a>| <a href="http://zzzz91.com" target="_blank">一区二区电影免费在线观看</a>| <a href="http://arielteam.com" target="_blank">亚洲欧美清纯在线制服</a>| <a href="http://236664.com" target="_blank">男同欧美伦乱</a>| <a href="http://baoyu1313.com" target="_blank">国产美女精品一区二区三区 </a>| <a href="http://avsemm.com" target="_blank">国产一区欧美日韩</a>| <a href="http://4tobi.com" target="_blank">亚洲片在线资源</a>| <a href="http://junmatek.com" target="_blank">久久久综合激的五月天</a>| <a href="http://laoyewo.com" target="_blank">久久精品国产99国产精品澳门</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>