锘??xml version="1.0" encoding="utf-8" standalone="yes"?>99精品国产热久久91蜜凸,老司机午夜精品视频,欧美一区成人http://www.shnenglu.com/ccl0326/about:blankzh-cnSat, 11 Oct 2025 08:14:48 GMTSat, 11 Oct 2025 08:14:48 GMT60linux鍐呮牳鎯呮櫙鍒嗘瀽絎旇-瀛樺偍綆$悊http://www.shnenglu.com/ccl0326/archive/2011/03/15/141904.htmlVincentVincentTue, 15 Mar 2011 09:47:00 GMThttp://www.shnenglu.com/ccl0326/archive/2011/03/15/141904.htmlhttp://www.shnenglu.com/ccl0326/comments/141904.htmlhttp://www.shnenglu.com/ccl0326/archive/2011/03/15/141904.html#Feedback0http://www.shnenglu.com/ccl0326/comments/commentRss/141904.htmlhttp://www.shnenglu.com/ccl0326/services/trackbacks/141904.html絎?绔?瀛樺偍綆$悊
LINUX欏靛紡綆$悊
PGD          PMD          PT        PTE
欏佃〃鐩爣     涓棿鐩綍     欏佃〃     欏佃〃欏?/p>

LINUX鍦?2浣嶅湴鍧涓嬮噰鍙栦簩灞傛槧灝?br>#define PGDIR_SHIFT 22
#define PTRS_PER_PGD 1024

#define PMD_SHIFT 22
#define PTRS_PER_PMD 1

#define PTRS_PER_PTE 1024
鏍規嵁浠ヤ笂瀹忓畾涔?PMD琚畬緹庣殑鏋剁┖浜嗭紝鑰岀浉褰撲簬閲囧彇浜嗕簩灞傛槧灝?/p>

鍏朵腑PGD鐢ㄤ簡綰挎у湴鍧鐨勬渶楂?0浣?涓?nbsp; MMU 瀵瑰簲
綰挎у湴鍧鐨勪腑闂?0浣嶆槸鎵瀵瑰簲鐨凱TE鍦≒T涓殑绱㈠紩
鍓╀笅鐨勬渶浣?2浣嶅垯鏄〉涓殑鍋忕Щ閲?/p>

铏氭嫙鍦板潃 = 孌靛熀鍦板潃錛氭鍋忕Щ閲?br>                            16浣?nbsp;     32浣?br>鏇村噯紜殑璁叉槸孌甸夋嫨瀛愪簡鍚?br>

鍦↙INUX涓鍩哄湴鍧 = 0錛堜笅闈㈢殑____KERNEL_CS絳夛級錛屾墍浠ュ彲浠ヨ涓虹嚎鎬у湴鍧涓庤櫄鎷熷湴鍧鎬繪槸鐩哥瓑鐨勶紝浣嗗叾鏈川涓嶆槸涓涓笢瑗?br>


0xC0000000-0xFFFFFFFF涓哄唴鏍稿崰鐢?br>0x0-0xBFFFFFFF涓虹敤鎴鋒帶浠?


鍐呮牳鐨勮櫄鎷熷唴瀛樹負綆鍗曠殑綰挎ф槧灝?br>#__PAGE_OFFSET (0xC0000000)
#define PAGE_OFFSET  ((unsigned long) __PAGE_OFFSET)
#define __pa(x) ((unsigned long)(x) - PAGE_OFFSET)
#define __va(x) ((void *)((unsigned long)(x) +PAGE_OFFSET)

__pa鏄粠铏氭嫙鍦板潃杞崲鎴愮墿鐞嗗湴鍧
__va鏄粠鐗╃悊鍦板潃杞崲鎴愯櫄鎷熷湴鍧


鍦℅DT涓湁4涓鎻忚堪絎?br>鍏剁儲寮曟槸2-5
鍒嗗埆鏄?br>__KERNEL_CS 鍐呮牳浠g爜孌?br>__KERNEL_DS 鍐呮牳鏁版嵁孌?br>__USER_CS 鐢ㄦ埛浠g爜孌?br>__USER_DS 鐢ㄦ埛鏁版嵁孌?/p>

#define start_thread(regs,new_eip,new_esp) do {\
 __asm__("movl %0,%%fs;movl %0,%%gs"::"r"(0)); \
 set_fs(USER_DS);
 regs->xds = __USER_DS; \
 regs->xes = __USER_DS; \
 regs->xss = __USER_DS; \
 regs->xcs = __USER_CS; \
 regs->eip = new_eip;   \
 regs->esp = new_esp;   \

}while(0)

閫氳繃榪欐瀹忓彲浠ョ湅鍑猴紝LINUX娌$敤孌靛紡瀛樺偍錛岃櫧鐒跺畠涔熻蛋浜嗚繖涓祦紼?/p>

 

MMU鐨勬祦紼?MMU浣跨敤鐗╃悊鍦板潃

欏靛紡鏄犲皠
浠嶳EG CR3鎷縋GD鐨勫湴鍧
鎵懼埌欏甸潰鐩綍錛岀嚎鎬у湴鍧涓殑楂?0浣嶄負绱㈠紩錛屾壘鍒伴〉闈㈢洰褰曢」錛屼粠涓嬁楂?0浣嶄綔涓洪〉闈㈣〃鐨勭儲寮曪紝欏甸潰琛ㄤ笌4k瀛楄妭杈圭晫瀵歸綈錛孋PU鑷姩琛ュ厖鍓?2浣嶄負0寰楀埌欏甸潰琛ㄥ湴鍧銆?/p>

鐒跺悗鎷跨嚎鎬у湴鍧鐨勪腑闂?0浣嶏紝寰楀埌欏甸潰琛ㄤ腑鐨勭儲寮曪紝鎷垮埌欏甸潰琛ㄩ」錛岄〉闈㈣〃欏圭殑楂?0浣嶅湪浣庝綅琛ュ厖12涓?錛屽啀鍔犱笂綰挎у湴鍧鐨勪綆12浣嶇粍鎴愮墿鐞嗗湴鍧銆?/p>


mm_struct 浠誨姟鐩稿叧鐨勮櫄鎷熷唴瀛?br>vm_area_struct 涓孌佃櫄鎷熷唴瀛樼殑鎶借薄錛屼篃鍙互鐞嗚В涓烘
mm_struct涓嫢鏈塿m_area_struct鐨勬寚閽?br>鍦╲m_area_struct澶氱殑鏃跺欎嬌鐢╝vl鏍戞潵瀛樺偍
mem_map_t  鐗╃悊欏佃〃
zone_struct 鐗╃悊鍐呭瓨鐨勫尯緇撴瀯錛寊one_struct鎶婄墿鐞嗗唴瀛樺垎鎴愪簡鍑犱釜閮ㄥ垎
ZONE_DMA 0 渚汥MA浣跨敤
ZONE_NORMAL 鏅氫嬌鐢?br>ZONE_HIGHMEN 楂樻鍐呭瓨錛屽唴鏍告槧灝勪笉鍒?/p>

鐗╃悊鍐呭瓨涔嬮棿鍖虹殑鍒掑垎騫朵笉鏄己鍒剁殑錛屽鏋滄煇涓涓尯宸茬粡娌℃湁鍐呭瓨鍙敤錛屾槸鍙互鍘誨埆鐨勫尯鎷垮唴瀛樼殑

鍏跺疄涓鐩村鍐呮牳鐨勫鍧鏈変簺鐤戦棶
涓嶈繃鍒氬垰浼間箮鎯抽氫簡
鍐呮牳浼氬仛棰勬槧灝勶紝鎶奝GD絎?68欏逛互鍚庣殑閮藉仛鏄犲皠錛屼篃灝辨槸1G鐨勭┖闂?br>鑰岃繖縐嶆槧灝勫簲璇ユ槸婊¤凍__pa()瀹忥紝鍗崇嚎鎬у湴鍧涓庣墿鐞嗗湴鍧鏄嚎鎬ф槧灝勭殑銆?br>鎵浠ユ渶緇坃_pa()瀹忚鐢ㄤ綔鍦ㄥ唴鏍鎬唬鐮佷腑鏄炬х殑鑾峰緱鏌愪釜綰挎у湴鍧鎵瀵瑰簲鐨勭墿鐞嗗湴鍧
鑰孧MU璐熻矗鎶婁竴涓嚎鎬у湴鍧闅愬紡鐨勮漿鎴愪簡鐗╃悊鍦板潃錛岃岃繖宸茶漿鎹笌鍐呮牳浠g爜鏃犲叧銆?br>涓嶇煡榪欐牱鐞嗚В鏄惁姝g‘錛?br>

浠婂ぉ鍙湅鍒頒簡榪欓噷
寰呯畫……

璇磋搗鏉ユ妸榪欎箞涓笢瑗挎斁鍒伴欏靛緢涓嶅ソ鎰忔濓紝涓昏鐩殑鏄笇鏈涙湁鐪嬪埌鐨勪漢甯垜鎸囨涓涓嬫垜鎵璁ょ煡鐨勯敊璇垨鑰呰В鎯戙傝阿璋㈠暒:)



Vincent 2011-03-15 17:47 鍙戣〃璇勮
]]>
鍏充簬CppUnit鐨勪嬌鐢紵http://www.shnenglu.com/ccl0326/archive/2011/03/03/141026.htmlVincentVincentThu, 03 Mar 2011 01:56:00 GMThttp://www.shnenglu.com/ccl0326/archive/2011/03/03/141026.htmlhttp://www.shnenglu.com/ccl0326/comments/141026.htmlhttp://www.shnenglu.com/ccl0326/archive/2011/03/03/141026.html#Feedback11http://www.shnenglu.com/ccl0326/comments/commentRss/141026.htmlhttp://www.shnenglu.com/ccl0326/services/trackbacks/141026.html    棣栧厛錛屾垜鏄垵瀛﹁咃紝浠庢棤浣跨敤CppUnit鐨勭粡楠屻?/p>

    欏圭洰榪涘睍鍒板悗鏈燂紝鎯蟲彁楂樼ǔ瀹氭э紝鍦ㄨ繖涓椂鍊欐槸鍚﹂傚悎鍔犲叆鍗曞厓嫻嬭瘯鍛紵
    鎵句簡鍑犵瘒鏂囩珷鐪嬩簡鐪嬶紝浼間箮璋堝崟鍏冩祴璇曞氨涓嶅緱涓嶈皥TDD錛屼絾鎴戠湅鍒扮殑緇濆ぇ澶氭暟浜虹殑瑙傜偣鏄垗TDD,鐣欏崟鍏冩祴璇?br>    濂戒簡錛屾殏涓斾笉璋圱DD錛屽彧璋堝崟鍏冩祴璇曪紝鍏朵腑鎴戠湅鍒頒竴綃嘊log鐨勮鐐規槸錛屼嬌鐢ㄥ崟鍏冩祴璇曪紝鏉ラ愭閲嶆瀯浠g爜錛屽叾璁虹偣灝辨槸鐪熸閫傚悎鍗曞厓嫻嬭瘯鐨勪唬鐮侊紝鑳藉鏇寸鍚圫OLID鍘熷垯銆?br>     榪欎釜鐪嬫硶鏄垜鐩墠姣旇緝璁ゅ悓鐨勩?br>     鍙﹀鐪嬪埌涓縐嶄嬌鐢ㄦ柟寮忔槸錛屽彧瀵圭畻娉曠被鍜屼竴浜涘熀紜綾伙紝榪涜鍗曞厓嫻嬭瘯銆傚浜庤繖縐嶄嬌鐢ㄦ柟寮忥紝鎴戝疄涓嶇煡浣跨敤CppUnit榪欑鐜版垚鐨勮緝涓鴻嚜鍔ㄥ寲鐨勫崟鍏冩祴璇曠殑妗嗘灦鎰忎箟鍦ㄥ摢銆?br>    鏈鍚庝竴涓棶棰樺氨鏄紝濡傛灉鎴戣涓虹殑鍓嶄竴縐嶈鐐規槸姝g‘鐨勶紝閭e湪鎴戜滑鐨勮繖涓」鐩繘琛屽埌鐨勮繖涓樁孌碉紝鎯寵鎻愰珮紼沖畾鎬у幓鍋氬崟鍏冩祴璇曪紝鏄渶瑕佸ぇ閲忛噸鏋勭殑錛岃繖鏍蜂竴涓噺浼氫笉浼氬弽鑰屼細褰卞搷紼沖畾鎬э紵


     嬈㈣繋澶у闅忔剰鍙戣〃鑷繁鐨勮鐐瑰搱錛屾垜鍙槸鎯沖浜嗚В涓涓嬨備互渚垮仛鍑鴻涓鴻嚜宸辨洿閫傚悎鐨勫垽鏂?/p>

Vincent 2011-03-03 09:56 鍙戣〃璇勮
]]>
鍏充簬lua鐨刢oroutinehttp://www.shnenglu.com/ccl0326/archive/2011/02/15/140073.htmlVincentVincentTue, 15 Feb 2011 03:01:00 GMThttp://www.shnenglu.com/ccl0326/archive/2011/02/15/140073.htmlhttp://www.shnenglu.com/ccl0326/comments/140073.htmlhttp://www.shnenglu.com/ccl0326/archive/2011/02/15/140073.html#Feedback0http://www.shnenglu.com/ccl0326/comments/commentRss/140073.htmlhttp://www.shnenglu.com/ccl0326/services/trackbacks/140073.html铏界劧鍦ㄧ敤鎴鋒佷笅錛屼絾鏄繕鏄渶瑕佺淮鎶oroutine鐨勭姸鎬侊紝
涔熷氨鏄篃浼氭嫢鏈夎嚜宸辯殑涓婁笅鏂囧垏鎹㈢殑寮閿
鏇村儚鏄敤鎴鋒佷笅瀹炵幇鐨勭嚎紼嬶紝浣嗘姠鍗犲紡鐨勭嚎紼嬩笉璁哄垏鎹㈢矑搴﹀啀澶ф垨鍐嶅皬錛岄兘浼氭湁涓嶅彲棰勭煡鐨勮涓猴紝鎵瑕佸仛鍚屾錛岃宑oroutine鏄崗浣滃紡鐨勪換鍔★紝
鐢辮嚜宸變氦鎶婅嚜宸辯殑鏉冨埄浜ゅ嚭鍘伙紝鍚屾闂鑷劧涓嶇敤鑰冭檻浜?br>鑷繁灝忚涓涓?

Vincent 2011-02-15 11:01 鍙戣〃璇勮
]]>
Lisp鐨勬湰璐?The Nature of Lisp)(杞?http://www.shnenglu.com/ccl0326/archive/2011/02/15/140071.htmlVincentVincentTue, 15 Feb 2011 01:29:00 GMThttp://www.shnenglu.com/ccl0326/archive/2011/02/15/140071.htmlhttp://www.shnenglu.com/ccl0326/comments/140071.htmlhttp://www.shnenglu.com/ccl0326/archive/2011/02/15/140071.html#Feedback3http://www.shnenglu.com/ccl0326/comments/commentRss/140071.htmlhttp://www.shnenglu.com/ccl0326/services/trackbacks/140071.html
                             浣滆?Slava Akhmechet
                             璇戣?Alec Jang

              鍑哄: http://www.defmacro.org/ramblings/lisp.html


綆浠?br>
鏈鍒濆湪web鐨勬煇浜涜钀藉伓鐒剁湅鍒版湁浜鴻禐緹嶭isp鏃? 鎴戦偅鏃跺凡緇忔槸涓涓鏈夌粡楠岀殑紼嬪簭鍛樸?br>鍦ㄦ垜鐨勫飽鍘嗕笂, 鎺屾彙鐨勮璦鑼冨洿鐩稿綋騫挎硾, 璞++, Java, C#涓繪祦璇█絳夌瓑閮戒笉鍦ㄨ瘽涓?
鎴戣寰楁垜宸笉澶氱煡閬撴墍鏈夌殑鏈夊叧緙栫▼璇█鐨勪簨鎯呫傚寰呯紪紼嬭璦鐨勯棶棰樹笂, 鎴戣寰楄嚜宸變笉
澶細閬囧埌浠涔堝ぇ闂銆傚叾瀹炴垜澶ч敊鐗歸敊浜嗐?br>
鎴戣瘯鐫瀛︿簡涓涓婰isp, 緇撴灉椹笂灝辨挒浜嗗銆傛垜琚偅浜涜寖渚嬩唬鐮佸悡鍧忎簡銆傛垜鎯沖緢澶氬垵嬈℃帴瑙?br>Lisp璇█鐨勪漢, 涓瀹氫篃鏈夎繃綾諱技鐨勬劅鍙椼侺isp鐨勮娉曞お嬈′簡銆備竴涓璦鐨勫彂鏄庝漢, 灞呯劧涓?br>鑲敤蹇冨紕鍑轟竴濂楁紓浜殑璇硶, 閭h皝榪樹細鎰挎剰瀛﹀畠銆傚弽姝? 鎴戞槸紜‘瀹炲疄琚偅浜涢毦鐪嬬殑鏃犳暟
鐨勬嫭鍙鋒悶钂欎簡銆?br>
鍥炶繃紲炴潵涔嬪悗, 鎴戝拰Lisp紺懼尯鐨勯偅浼欎漢浜よ皥, 璇夎鎴戠殑娌撫蹇冩儏銆傜粨鏋? 绔嬮┈灝辨湁涓澶у
鐞嗚鐮歌繃鏉? 榪欏鐞嗚鍦↙isp紺懼尯澶勫鍙, 鍑犳垚鎯緥銆傛瘮濡傝: Lisp鐨勬嫭鍙峰彧鏄〃闈㈢幇
璞? Lisp鐨勪唬鐮佸拰鏁版嵁鐨勮〃杈炬柟寮忔病鏈夊樊鍒? 鑰屼笖姣擷ML璇硶楂樻槑璁稿, 鎵浠ユ湁鏃犵┓鐨勫ソ
澶? Lisp鏈夊己澶ф棤姣旂殑鍏冭璦鑳藉姏, 紼嬪簭鍛樺彲浠ュ啓鍑鴻嚜鎴戠淮鎶ょ殑浠g爜; Lisp鍙互鍒涢犲嚭閽?br>瀵圭壒瀹氬簲鐢ㄧ殑璇█瀛愰泦; Lisp鐨勮繍琛屾椂鍜岀紪璇戞椂娌℃湁鏄庣‘鐨勫垎鐣? 絳夌瓑, 絳夌瓑, 絳夌瓑銆傝繖
涔堥暱鐨勮禐緹庤瘝铏界劧鐪嬭搗鏉ョ浉褰撳姩浜? 涓嶈繃瀵規垜姣棤鎰忎箟銆傛病浜鴻兘緇欐垜婕旂ず榪欎簺涓滆タ鏄浣?br>搴旂敤鐨? 鍥犱負榪欎簺涓滆タ涓鑸潵璇村彧鏈夊湪澶у瀷緋葷粺鎵嶄細鐢ㄥ埌銆傛垜浜夎京璇? 榪欎簺涓滆タ浼犵粺璇█
涓鏍峰姙寰楀埌銆傚湪鍜屽埆浜轟簤璁轟簡鏁頒釜灝忔椂涔嬪悗, 鎴戞渶緇堣繕鏄斁寮冧簡瀛isp鐨勫康澶淬備負浠涔堣
鑺辮垂鍑犱釜鏈堢殑鏃墮棿瀛︿範璇硶榪欎箞闅劇湅鐨勮璦鍛? 榪欑璇█鐨勬蹇佃繖涔堟櫐娑? 鍙堟病浠涔堝ソ鎳?br>鐨勪緥瀛愩備篃璁歌繖璇█涓嶆槸璇ユ垜榪欐牱鐨勪漢瀛︾殑銆?br>
鍑犱釜鏈堟潵, 鎴戞壙鍙楃潃榪欎簺Lisp杈╂姢澹鎴戝績鐏電殑閲嶅帇銆傛垜涓搴﹂櫡鍏ヤ簡鍥版儜銆傛垜璁よ瘑涓浜涚粷
欏惰仾鏄庣殑浜? 鎴戝浠栦滑鐩稿綋灝婃暚, 鎴戠湅鍒頒粬浠Lisp鐨勮禐緹庤揪鍒頒簡瀹楁暀鑸殑楂樺害銆傝繖灝辨槸
璇? Lisp涓竴瀹氭湁鏌愮紲炵鐨勪笢瑗垮瓨鍦? 鎴戜笉鑳藉繊鍙楄嚜宸卞姝ょ殑鏃犵煡, 濂藉蹇冨拰姹傜煡嬈叉渶
緇堜笉鍙亸鍒躲傛垜浜庢槸鍜揣鐗欏叧鍩嬪ご瀛︿範Lisp, 緇忚繃鍑犱釜鏈堢殑鏃墮棿璐瑰姴蹇冨姏鐨勭粌涔? 緇堜簬,
鎴戠湅鍒頒簡閭f棤絀鋒棤灝界殑娉夋按鐨勬簮澶淬傚湪緇忚繃鑴辮儙鎹㈤鐨勭(緇冧箣鍚? 鍦ㄧ粡榪囦竷閲嶅湴鐙辯殑鐓庣啲
涔嬪悗, 緇堜簬, 鎴戞槑鐧戒簡銆?br>
欏挎偀鍦ㄧ獊鐒朵箣闂存潵涓淬傛浘緇忚澶氭, 鎴戝惉鍒板埆浜哄紩鐢ㄩ浄钂欏痙(璇戣呮敞: 璁烘枃<<澶ф暀鍫傚拰甯?br>闆?gt;>鐨勪綔鑰? 钁楀悕鐨勯粦瀹㈢ぞ鍖虹悊璁哄)鐨勮瘽: "Lisp璇█鍊煎緱瀛︿範銆傚綋浣犲浼歀isp涔嬪悗, 浣?br>浼氭嫢鏈夋繁鍒葷殑浣撻獙銆傚氨綆椾綘騫沖父騫朵笉鐢↙isp緙栫▼, 瀹冧篃浼氫嬌浣犳垚涓烘洿鍔犱紭縐鐨勭▼搴忓憳"銆?br>榪囧幓, 鎴戞牴鏈笉鎳傝繖浜涜瘽鐨勫惈涔? 鎴戜篃涓嶇浉淇¤繖鏄湡鐨勩傚彲鏄幇鍦ㄦ垜鎳傚緱浜嗐傝繖浜涜瘽钑村惈
鐨勭湡鐞嗚繙榪滆秴榪囨垜榪囧幓鐨勬兂鍍忋傛垜鍐呭績浣撲細鍒頒竴縐嶇鍦g殑鎯呮劅, 涓鐬棿鐨勯】鎮? 鍑犱箮浣挎垜
瀵圭數鑴戠瀛︾殑瑙傚康鍙戠敓浜嗘牴鏈殑鏀瑰彉銆?br>
欏挎偀鐨勯偅涓鍒? 鎴戞垚浜哃isp鐨勫磭鎷滆呫傛垜浣撻獙鍒頒簡瀹楁暀澶у笀鐨勬劅鍙? 涓瀹氳鎶婃垜鐨勭煡璇嗕紶
甯冨紑鏉? 鑷沖皯瑕佽10涓糠澶辯殑鐏甸瓊寰楀埌鎷晳銆傛寜鐓ч氬父鐨勫姙娉? 鎴戞妸榪欎簺閬撶悊(灝辨槸鍒氬紑
濮嬪埆浜虹牳榪囨潵鐨勯偅涓濂? 涓嶈繃鐜板湪鎴戞槑鐧戒簡鐪熷疄鐨勫惈涔?鍛婅瘔鏃佷漢銆傜粨鏋滃お浠や漢澶辨湜浜?
鍙湁灝戞暟鍑犱釜浜哄湪鎴戝潥鎸佷箣涓? 鍙戠敓浜嗕竴鐐瑰叴瓚? 浣嗘槸浠呬粎鐪嬩簡鍑犵溂Lisp浠g爜, 浠栦滑灝遍
鍗翠簡銆傜収榪欐牱鐨勫姙娉? 涔熻璐規暟騫村姛澶兘閫犲氨浜嗗嚑涓狶isp榪? 浣嗘垜瑙夊緱榪欐牱鐨勭粨鏋滃お宸己
浜烘剰浜? 鎴戝緱鎯充竴濂楁湁鏇村ソ鐨勫姙娉曘?br>
鎴戞繁鍏ュ湴鎬濊冧簡榪欎釜闂銆傛槸涓嶆槸Lisp鏈変粈涔堝緢鑹版繁鐨勪笢瑗? 浠ゅ緱閭d箞澶氳佺粌鐨勭▼搴忓憳閮?br>涓嶈兘棰嗕細? 涓嶆槸, 娌℃湁浠諱綍緇濆鑹版繁鐨勪笢瑗褲傚洜涓烘垜鑳藉紕鎳? 鎴戠浉淇″叾浠栦漢涔熶竴瀹氳兘銆傞偅
涔堥棶棰樺嚭鍦ㄩ偅閲? 鍚庢潵鎴戠粓浜庢壘鍒頒簡絳旀銆傛垜鐨勭粨璁哄氨鏄? 鍑℃槸鏁欎漢瀛﹂珮綰ф蹇? 涓瀹氳
浠庝粬宸茬粡鎳傚緱鐨勪笢瑗垮紑濮嬨傚鏋滃涔犺繃紼嬪緢鏈夎叮, 瀛︿範鐨勫唴瀹硅〃杈懼緱寰堟伆褰? 鏂版蹇靛氨浼?br>鍙樺緱鐩稿綋鐩磋銆傝繖灝辨槸鎴戠殑絳旀銆傛墍璋撳厓緙栫▼, 鎵璋撴暟鎹拰浠g爜褰㈠紡鍚堜竴, 鎵璋撹嚜淇敼浠?br>鐮? 鎵璋撶壒瀹氬簲鐢ㄧ殑瀛愯璦, 鎵鏈夎繖浜涙蹇墊牴鏈氨鏄悓鏃忔蹇? 褰兼浜掍負瑙i噴, 鑲畾瓚婅
瓚婁笉鏄庣櫧銆傝繕鏄粠瀹為檯鐨勪緥瀛愬嚭鍙戞渶鏈夌敤銆?br>
鎴戞妸鎴戠殑鎯蟲硶璇寸粰Lisp紼嬪簭鍛樺惉, 閬埌浜嗕粬浠殑鍙嶅銆?榪欎簺涓滆タ鏈韓褰撶劧涓嶅彲鑳界敤鐔熸倝
鐨勭煡璇嗘潵瑙i噴, 榪欎簺姒傚康瀹屽叏涓庝紬涓嶅悓, 浣犱笉鍙兘鍦ㄥ埆浜哄凡鏈夌殑緇忛獙閲屾壘鍒扮被浼肩殑涓滆タ",
鍙槸鎴戣涓鴻繖浜涢兘鏄亖璇嶃備粬浠張鍙嶉棶鎴? "浣犺嚜宸變負鍟ヤ笉璇曚竴涓?" 濂藉惂, 鎴戞潵璇曚竴涓嬨?br>榪欑瘒鏂囩珷灝辨槸鎴戝皾璇曠殑緇撴灉銆傛垜瑕佺敤鐔熸倝鐨勭洿瑙傜殑鏂規硶鏉ヨВ閲奓isp, 鎴戝笇鏈涙湁鍕囨皵鐨勪漢璇?br>瀹屽畠, 鎷挎澂楗枡, 娣卞懠鍚鎬竴涓? 鍑嗗琚悶寰楁檿澶磋漿鍚戙傛潵鍚? 鎰夸綘鑾峰緱澶ц兘銆?br>
閲嶆柊瀹¤XML

鍗冮噷涔嬭濮嬩簬瓚充笅銆傝鎴戜滑鐨勭涓姝ヤ粠XML寮濮嬨傚彲鏄疿ML宸茬粡璇村緱鏇村鐨勪簡, 榪樿兘鏈変粈涔?br>鏂版剰鎬濆彲璇村憿? 鏈夌殑銆俋ML鑷韓铏界劧璋堣皥涓嶄笂鏈夎叮, 浣嗘槸XML鍜孡isp鐨勫叧緋誨嵈鐩稿綋鏈夎叮銆?br>XML鍜孡isp鐨勬蹇墊湁鐫鎯婁漢鐨勭浉浼間箣澶勩俋ML鏄垜浠氬悜鐞嗚ВLisp鐨勬ˉ姊併傚ソ鍚? 鎴戜滑涓旀妸
XML褰撲綔媧婚┈鍖匯傝鎴戜滑鎷垮ソ鎵嬫潠, 瀵筙ML鐨勬棤浜烘秹鍙婄殑鑽掑師鍦板甫浣滀竴鐣帰闄┿傛垜浠浠庝竴
涓叏鏂扮殑瑙嗚鏉ヨ冨療榪欎釜棰樼洰銆?br>
琛ㄩ潰涓婄湅, XML鏄竴縐嶆爣鍑嗗寲璇硶, 瀹冧互閫傚悎浜洪槄璇葷殑鏍煎紡鏉ヨ〃杈句換鎰忕殑灞傛鍖栨暟鎹?br>(hirearchical data)銆傝薄浠誨姟琛?to-do list), 緗戦〉, 鐥呭巻, 姹借濺淇濋櫓鍗? 閰嶇疆鏂囦歡絳?br>絳? 閮芥槸XML鐢ㄦ鐨勫湴鏂廣傛瘮濡傛垜浠嬁浠誨姟琛ㄥ仛渚嬪瓙:

<todo name="housework">
    <item priority="high">Clean the house.</item>
    <item priority="medium">Wash the dishes.</item>
    <item priority="medium">Buy more soap.</item>
</todo>

瑙f瀽榪欐鏁版嵁鏃朵細鍙戠敓浠涔堟儏鍐? 瑙f瀽涔嬪悗鐨勬暟鎹湪鍐呭瓨涓庢牱琛ㄧず? 鏄劇劧, 鐢ㄦ爲鏉ヨ〃紺?br>榪欑灞傛鍖栨暟鎹槸寰堟伆褰撶殑銆傝鍒板簳, XML榪欑姣旇緝瀹規槗闃呰鐨勬暟鎹牸寮? 灝辨槸鏍戝瀷緇撴瀯
鏁版嵁緇忚繃搴忓垪鍖栦箣鍚庣殑緇撴灉銆備換浣曞彲浠ョ敤鏍戞潵琛ㄧず鐨勬暟鎹? 鍚屾牱鍙互鐢╔ML鏉ヨ〃紺? 鍙嶄箣
浜︾劧銆傚笇鏈涗綘鑳芥噦寰楄繖涓鐐? 榪欏涓嬮潰鐨勫唴瀹規瀬鍏墮噸瑕併?br>
鍐嶈繘涓姝ャ傝繕鏈変粈涔堢被鍨嬬殑鏁版嵁涔熷父鐢ㄦ爲鏉ヨ〃紺? 鏃犵枒鍒楄〃(list)涔熸槸涓縐嶃備笂榪囩紪璇戣
鍚? 榪樻ā妯$硦緋婅寰椾竴鐐瑰惂? 婧愪唬鐮佸湪瑙f瀽涔嬪悗涔熸槸鐢ㄦ爲緇撴瀯鏉ュ瓨鏀劇殑, 浠諱綍緙栬瘧紼嬪簭閮?br>浼氭妸婧愪唬鐮佽В鏋愭垚涓媯墊娊璞¤娉曟爲, 榪欐牱鐨勮〃紺烘硶寰堟伆褰? 鍥犱負婧愪唬鐮佸氨鏄眰嬈$粨鏋勭殑:
鍑芥暟鍖呭惈鍙傛暟鍜屼唬鐮佸潡, 浠g爜蹇寘鍚〃杈懼紡鍜岃鍙? 璇彞鍖呭惈鍙橀噺鍜岃繍綆楃絳夌瓑銆?br>
鎴戜滑宸茬粡鐭ラ亾, 浠諱綍鏍戠粨鏋勯兘鍙互杞昏屾槗涓劇殑鍐欐垚XML, 鑰屼換浣曚唬鐮侀兘浼氳В鏋愭垚鏍? 鍥犳,
浠諱綍浠g爜閮藉彲浠ヨ漿鎹㈡垚XML, 瀵逛笉瀵? 鎴戜婦涓緥瀛? 璇風湅涓嬮潰鐨勫嚱鏁?

int add(int arg1, int arg2)
{
    return arg1+arg2;
}

鑳芥妸榪欎釜鍑芥暟鍙樻垚瀵圭瓑鐨刋ML鏍煎紡鍚? 褰撶劧鍙互銆傛垜浠彲浠ョ敤寰堝縐嶆柟寮忓仛鍒? 涓嬮潰鏄叾
涓殑涓縐? 鍗佸垎綆鍗?

<define-function return-type="int" name="add">
    <arguments>
        <argument type="int">arg1</argument>
        <argument type="int">arg2</argument>
    </arguments>
    <body>
        <return>
            <add value1="arg1" value2="arg2" />
        </return>
    </body>
</define>

榪欎釜渚嬪瓙闈炲父綆鍗? 鐢ㄥ摢縐嶈璦鏉ュ仛閮戒笉浼氭湁澶ぇ闂銆傛垜浠彲浠ユ妸浠諱綍紼嬪簭鐮佽漿鎴怷ML,
涔熷彲浠ユ妸XML杞洖鍒板師鏉ョ殑紼嬪簭鐮併傛垜浠彲浠ュ啓涓涓漿鎹㈠櫒, 鎶奐ava浠g爜杞垚XML, 鍙︿竴涓?br>杞崲鍣ㄦ妸XML杞洖鍒癑ava銆備竴鏍風殑閬撶悊, 榪欑鎵嬫涔熷彲浠ョ敤鏉ュ浠楥++(榪欐牱鍋氳窡鍙戠柉宸笉
澶氫箞銆傚彲鏄殑紜湁浜哄湪鍋? 鐪嬬湅GCC-XML(http://www.gccxml.org)灝辯煡閬撲簡)銆傝繘涓姝ヨ,
鍑℃槸鏈夌浉鍚岃璦鐗規ц岃娉曚笉鍚岀殑璇█, 閮藉彲浠ユ妸XML褰撲綔涓粙鏉ヤ簰鐩歌漿鎹唬鐮併傚疄闄呬笂
鍑犱箮鎵鏈夌殑涓繪祦璇█閮藉湪涓瀹氱▼搴︿笂婊¤凍榪欎釜鏉′歡銆傛垜浠彲浠ユ妸XML浣滀負涓縐嶄腑闂磋〃紺烘硶,
鍦ㄤ袱縐嶈璦涔嬮棿浜掔浉璇戠爜銆傛瘮鏂硅, 鎴戜滑鍙互鐢↗ava2XML鎶奐ava浠g爜杞崲鎴怷ML, 鐒跺悗鐢?br>XML2CPP鍐嶆妸XML杞崲鎴怌++浠g爜, 榪愭皵濂界殑璇? 灝辨槸璇? 濡傛灉鎴戜滑灝忓績閬垮厤浣跨敤閭d簺C++涓?br>鍏峰鐨凧ava鐗規х殑璇? 鎴戜滑鍙互寰楀埌瀹屽ソ鐨凜++紼嬪簭銆傝繖鍔炴硶鎬庝箞鏍? 婕備寒鍚?

榪欎竴鍒囧厖鍒嗚鏄? 鎴戜滑鍙互鎶奨ML浣滀負婧愪唬鐮佺殑閫氱敤瀛樺偍鏂瑰紡, 鍏跺疄鎴戜滑鑳藉浜х敓涓鏁村
浣跨敤緇熶竴璇硶鐨勭▼搴忚璦, 涔熻兘鍐欏嚭杞崲鍣? 鎶婂凡鏈変唬鐮佽漿鎹㈡垚XML鏍煎紡銆傚鏋滅湡鐨勯噰綰?br>榪欑鍔炴硶, 鍚勭璇█鐨勭紪璇戝櫒灝辯敤涓嶇潃鑷繁鍐欒娉曡В鏋愪簡, 瀹冧滑鍙互鐩存帴鐢╔ML鐨勮娉曡В
鏋愭潵鐩存帴鐢熸垚鎶借薄璇硶鏍戙?br>
璇村埌榪欓噷浣犺闂簡, 鎴戜滑鐮旂┒浜嗚繖鍗婂ぉXML, 榪欏拰Lisp鏈変粈涔堝叧緋誨憿? 姣曠珶XML鍑烘潵涔嬫椂,
Lisp鏃╁凡緇忛棶涓栦笁鍗佸勾浜嗐傝繖閲屾垜鍙互淇濊瘉, 浣犻┈涓婂氨浼氭槑鐧姐備笉榪囧湪緇х畫瑙i噴涔嬪墠, 鎴?br>浠厛鍋氫竴涓皬灝忕殑鎬濈淮緇冧範銆傜湅涓涓嬩笂闈㈣繖涓猉ML鐗堟湰鐨刟dd鍑芥暟渚嬪瓙, 浣犳庢牱緇欏畠鍒嗙被,
鏄唬鐮佽繕鏄暟鎹? 涓嶇敤澶鑰冭檻閮借兘鏄庣櫧, 鎶婂畠鍒嗗埌鍝竴綾婚兘璁插緱閫氥傚畠鏄疿ML, 瀹冩槸鏍?br>鍑嗘牸寮忕殑鏁版嵁銆傛垜浠篃鐭ラ亾, 瀹冨彲浠ラ氳繃鍐呭瓨涓殑鏍戠粨鏋勬潵鐢熸垚(GCC-XML鍋氱殑灝辨槸榪欎釜浜?br>鎯?銆傚畠淇濆瓨鍦ㄤ笉鍙墽琛岀殑鏂囦歡涓傛垜浠彲浠ユ妸瀹冭В鏋愭垚鏍戣妭鐐? 鐒跺悗鍋氫換鎰忕殑杞崲銆傛樉
鑰屾槗瑙? 瀹冩槸鏁版嵁銆備笉榪囦笖鎱? 铏界劧瀹冭娉曟湁鐐歸檶鐢? 鍙畠鍙堢‘紜疄瀹炴槸涓涓猘dd鍑芥暟,
瀵瑰惂?  涓鏃︾粡榪囪В鏋? 瀹冨氨鍙互鎷跨粰緙栬瘧鍣ㄧ紪璇戞墽琛屻傛垜浠彲浠ヨ交鑰屾槗涓懼啓鍑鴻繖涓猉ML
浠g爜瑙i噴鍣? 騫朵笖鐩存帴榪愯瀹冦傛垨鑰呮垜浠篃鍙互鎶婂畠璇戞垚Java鎴朇++浠g爜, 鐒跺悗鍐嶇紪璇戣繍
琛屻傛墍浠ヨ, 瀹冧篃鏄唬鐮併?br>
鎴戜滑璇村埌閭i噷浜? 涓嶉敊, 鎴戜滑宸茬粡鍙戠幇浜嗕竴涓湁瓚g殑鍏抽敭涔嬬偣銆傝繃鍘昏璁や負寰堥毦瑙g殑姒傚康
宸茬粡闈炲父鐩磋闈炲父綆鍗曠殑鏄劇幇鍑烘潵銆備唬鐮佷篃鏄暟鎹? 騫朵笖浠庢潵閮芥槸濡傛銆傝繖鍚搗鏉ョ柉鐤櫕
鐧殑, 瀹為檯涓婂嵈鏄繀鐒朵箣浜嬨傛垜璁歌榪囦細浠ヤ竴縐嶅叏鏂扮殑鏂瑰紡鏉ヨВ閲奓isp, 鎴戣閲嶇敵鎴戠殑璁?br>璇恒備絾鏄垜浠鍒昏繕娌℃湁鍒伴瀹氱殑鍦版柟, 鎵浠ヨ繕鏄厛緇х畫涓婅竟鐨勮璁恒?br>
鍒氭墠鎴戣榪? 鎴戜滑鍙互闈炲父綆鍗曞湴瀹炵幇XML鐗堢殑add鍑芥暟瑙i噴鍣? 榪欏惉璧鋒潵濂藉儚涓嶈繃鏄璇?br>鑰屽凡銆傝皝鐪熺殑浼氬姩鎵嬪仛涓涓嬪憿? 鏈繀鏈夊灝戜漢浼氳鐪熷寰呰繖浠朵簨銆傞殢渚胯璇? 騫朵笉鎵撶畻鐪?br>鐨勫幓鍋? 榪欐牱鐨勪簨鎯呬綘鍦ㄧ敓媧諱腑鎭愭曚篃閬囧埌鍚с備綘鏄庣櫧鎴戣繖鏍瘋鐨勬剰鎬濆惂, 鎴戣鐨勬湁娌℃湁
鎵撳姩浣? 鏈夊搰, 閭eソ, 鎴戜滑緇х畫銆?br>
閲嶆柊瀹¤Ant

鎴戜滑鐜板湪宸茬粡鏉ュ埌浜嗘湀浜儗鍏夌殑閭d竴闈? 鍏堝埆蹇欑潃紱誨紑銆傚啀鎺㈢儲涓涓? 鐪嬬湅鎴戜滑榪樿兘鍙戠幇
浠涔堜笢瑗褲傞棴涓婄溂鐫? 鎯充竴鎯?000騫村啲澶╃殑閭d釜闆ㄥ, 涓涓悕鍙獼ames Duncan Davidson
鐨勬澃鍑虹殑紼嬪簭鍛樻鍦ㄧ爺絀禩omcat鐨剆ervlet瀹瑰櫒銆傞偅鏃? 浠栨灝忓績鍦頒繚瀛樺ソ鍒氫慨鏀硅繃鐨勬枃
浠? 鐒跺悗鎵цmake銆傜粨鏋滃啋鍑轟簡涓澶у爢閿欒, 鏄劇劧鏈変粈涔堜笢瑗挎悶閿欎簡銆傜粡榪囦粩緇嗘鏌? 浠?br>鎯? 闅鵑亾鏄洜涓簍ab鍓嶉潰鍔犱簡涓┖鏍艱屽鑷村懡浠や笉鑳芥墽琛屽悧? 紜疄濡傛銆傝佹槸榪欐牱, 浠栫湡
鐨勫彈澶熶簡銆備箤浜戣儗鍚庣殑鏈堜寒緇欎簡浠栧惎紺? 浠栧垱寤轟簡涓涓柊鐨凧ava欏圭洰, 鐒跺悗鍐欎簡涓涓畝鍗?br>浣嗘槸鍗佸垎鏈夌敤鐨勫伐鍏? 榪欎釜宸ュ叿宸у鍦板埄鐢ㄤ簡Java灞炴ф枃浠朵腑鐨勪俊鎭潵鏋勯犲伐紼? 鐜板湪
James鍙互鍐檓akefile鐨勬浛浠e搧, 瀹冭兘璧峰埌鐩稿悓鐨勪綔鐢? 鑰屽艦寮忔洿鍔犱紭緹? 涔熶笉鐢ㄦ媴蹇冩湁
makefile閭f牱鍙仺鐨勭┖鏍奸棶棰樸傝繖涓伐鍏瘋兘澶熻嚜鍔ㄨВ閲婂睘鎬ф枃浠? 鐒跺悗閲囧彇姝g‘鐨勫姩浣滄潵
緙栬瘧宸ョ▼銆傜湡鏄畝鍗曡屼紭緹庛?br>
(浣滆呮敞: 鎴戜笉璁よ瘑James, James涔熶笉璁よ瘑鎴? 榪欎釜鏁呬簨鏄牴鎹綉涓婂叧浜嶢nt鍘嗗彶鐨勫笘瀛?br>铏氭瀯鐨?

浣跨敤Ant鏋勯燭omcat涔嬪悗鍑犱釜鏈? 浠栬秺鏉ヨ秺鎰熷埌Java鐨勫睘鎬ф枃浠朵笉瓚充互琛ㄨ揪澶嶆潅鐨勬瀯閫犳寚
浠ゃ傛枃浠墮渶瑕佹鍑? 鎷瘋礉, 緙栬瘧, 鍙戝埌鍙﹀涓鍙版満鍣? 榪涜鍗曞厓嫻嬭瘯銆傝鏄嚭閿? 灝卞彂閭?br>浠剁粰鐩稿叧浜哄憳, 瑕佹槸鎴愬姛, 灝辯戶緇湪灝藉彲鑳介珮灞傜殑鍗?volumn)涓婃墽琛屾瀯閫犮傝拷韙埌鏈鍚?
鍗瘋鍥炲鍒版渶鍒濈殑姘村鉤涓娿傜‘瀹? Java鐨勫睘鎬ф枃浠朵笉澶熺敤浜? James闇瑕佹洿鏈夊脊鎬х殑瑙e喅
鏂規銆備粬涓嶆兂鑷繁鍐欒В鏋愬櫒(鍥犱負浠栨洿甯屾湜鏈変竴涓叿鏈夊伐涓氭爣鍑嗙殑鏂規)銆俋ML鐪嬭搗鏉ユ槸涓?br>涓嶉敊鐨勯夋嫨銆備粬鑺變簡鍑犲ぉ宸ュか鎶夾nt縐繪鍒癤ML錛屼簬鏄紝涓浠朵紵澶х殑宸ュ叿璇炵敓浜嗐?br>
Ant鏄庢牱宸ヤ綔鐨勶紵鍘熺悊闈炲父綆鍗曘侫nt鎶婂寘鍚湁鏋勯犲懡浠ょ殑XML鏂囦歡(綆椾唬鐮佽繕鏄畻鏁版嵁,
浣犺嚜宸辨兂鍚?錛屼氦緇欎竴涓狫ava紼嬪簭鏉ヨВ鏋愭瘡涓涓厓绱狅紝瀹為檯鎯呭喌姣旀垜璇寸殑榪樿綆鍗曞緱澶氥?br>涓涓畝鍗曠殑XML鎸囦護浼氬鑷村叿鏈夌浉鍚屽悕瀛楃殑Java綾昏鍏ワ紝騫舵墽琛屽叾浠g爜銆?br>
    <copy todir="../new/dir">
        <fileset dir="src_dir" />
    </copy>

榪欐鏂囧瓧鐨勫惈涔夋槸鎶婃簮鐩綍澶嶅埗鍒扮洰鏍囩洰褰曪紝Ant浼氭壘鍒頒竴涓?copy"浠誨姟(瀹為檯涓婂氨鏄竴涓?br>Java綾?, 閫氳繃璋冪敤Java鐨勬柟娉曟潵璁劇疆閫傚綋鍙傛暟(todir鍜宖ileset)錛岀劧鍚庢墽琛岃繖涓換鍔°?br>Ant甯︽湁涓緇勬牳蹇冪被, 鍙互鐢辯敤鎴蜂換鎰忔墿灞? 鍙閬靛畧鑻ュ共綰﹀畾灝卞彲浠ャ侫nt鎵懼埌榪欎簺綾?
姣忓綋閬囧埌XML鍏冪礌鏈夊悓鏍風殑鍚嶅瓧, 灝辨墽琛岀浉搴旂殑浠g爜銆傝繃紼嬮潪甯哥畝鍗曘侫nt鍋氬埌浜嗘垜浠墠闈?br>鎵璇寸殑涓滆タ: 瀹冩槸涓涓璦瑙i噴鍣? 浠ML浣滀負璇硶, 鎶奨ML鍏冪礌杞瘧涓洪傚綋鐨凧ava鎸囦護銆?br>鎴戜滑鍙互鍐欎竴涓?add"浠誨姟, 鐒跺悗, 褰撳彂鐜癤ML涓湁add鎻忚堪鐨勬椂鍊? 灝辨墽琛岃繖涓猘dd浠誨姟銆?br>鐢變簬Ant鏄潪甯告祦琛岀殑欏圭洰, 鍓嶉潰灞曠ず鐨勭瓥鐣ュ氨鏄懼緱鏇翠負鏄庢櫤銆傛瘯绔? 榪欎釜宸ュ叿姣忓ぉ宸笉
澶氭湁鍑犲崈瀹跺叕鍙稿湪浣跨敤銆?br>
鍒扮洰鍓嶄負涔? 鎴戣繕娌℃湁璇碅nt鍦ㄨВ鏋怷ML鏃舵墍閬囧埌鍥伴毦銆備綘涔熶笉鐢ㄩ夯鐑﹀幓瀹冪殑緗戠珯涓婂幓鎵劇瓟
妗堜簡, 涓嶄細鎵懼埌鏈変環鍊肩殑涓滆タ銆傝嚦灝戝鎴戜滑榪欎釜璁洪鏉ヨ鏄姝ゃ傛垜浠繕鏄戶緇笅涓姝ヨ
璁哄惂銆傛垜浠瓟妗堝氨鍦ㄩ偅閲屻?br>
涓轟粈涔堟槸XML

鏈夋椂鍊欐紜殑鍐崇瓥騫墮潪瀹屽叏鍑轟簬娣辨濈啛铏戙傛垜涓嶇煡閬揓ames閫夋嫨XML鏄惁鍑轟簬娣辨濈啛铏戙備篃
璁鎬粎浠呮槸涓笅鎰忚瘑鐨勫喅瀹氥傝嚦灝戜粠James鍦ˋnt緗戠珯涓婂彂琛ㄧ殑鏂囩珷鐪嬭搗鏉? 浠栨墍璇寸殑鐞嗙敱瀹?br>鍏ㄦ槸浼兼槸鑰岄潪銆備粬鐨勪富瑕佺悊鐢辨槸縐繪鎬у拰鎵╁睍鎬? 鍦ˋnt妗堜緥涓? 鎴戠湅涓嶅嚭榪欎袱鏉℃湁浠涔?br>甯姪銆備嬌鐢╔ML鑰屼笉鏄疛ava浠g爜, 鍒板簳鏈変粈涔堝ソ澶? 涓轟粈涔堜笉鍐欎竴緇凧ava綾? 鎻愪緵api鏉ユ弧
瓚沖熀鏈換鍔?鎷瘋礉鐩綍, 緙栬瘧絳夌瓑), 鐒跺悗鍦↗ava閲岀洿鎺ヨ皟鐢ㄨ繖浜涗唬鐮? 榪欐牱鍋氫粛鐒跺彲浠ヤ繚
璇佺Щ妞嶆? 鎵╁睍鎬т篃鏄鏃犵枒闂殑銆傝屼笖璇硶涔熸洿涓虹啛鎮? 鐪嬬潃欏虹溂銆傞偅涓轟粈涔堣鐢?XML
鍛? 鏈変粈涔堟洿濂界殑鐞嗙敱鍚?

鏈夌殑銆傝櫧鐒舵垜涓嶇‘瀹欽ames鏄惁紜疄鎰忚瘑鍒頒簡銆傚湪璇箟鐨勫彲鏋勯犳ф柟闈? XML鐨勫脊鎬ф槸Java
鏈涘皹鑾強鐨勩傛垜涓嶆兂鐢ㄩ珮娣辮帿嫻嬬殑鍚嶈瘝鏉ュ悡鍞綘, 鍏朵腑鐨勯亾鐞嗙浉褰撶畝鍗? 瑙i噴璧鋒潵騫朵笉璐?br>寰堝鍔熷か銆傚ソ, 鍋氬ソ棰勫鍔ㄤ綔, 鎴戜滑椹笂灝辮鏈濆悜欏挎偀鐨勬椂鍒誨仛濂嬪姏涓璺冦?br>
涓婇潰鐨勯偅涓猚opy鐨勪緥瀛? 鐢↗ava浠g爜鎬庢牱瀹炵幇鍛? 鎴戜滑鍙互榪欐牱鍋?

    CopyTask copy = new CopyTask();
    Fileset fileset = new Fileset();

    fileset.setDir("src_dir");
    copy.setToDir("../new/dir");
    copy.setFileset(fileset);

    copy.excute();

榪欎釜浠g爜鐪嬭搗鏉ュ拰XML鐨勯偅涓緢鐩鎬技, 鍙槸紼嶅井闀夸竴鐐廣傚樊鍒湪閭i噷? 宸埆鍦ㄤ簬XML鏋勯犱簡
涓涓壒孌婄殑copy鍔ㄨ瘝, 濡傛灉鎴戜滑紜鐢↗ava鏉ュ啓鐨勮瘽, 搴旇鏄繖涓牱瀛?

    copy("../new/dir");
    {
        fileset("src_dir");
    }

鐪嬪埌宸埆浜嗗悧? 浠ヤ笂浠g爜(濡傛灉鍙互鍦↗ava涓敤鐨勫寲), 鏄竴涓壒孌婄殑copy綆楃, 鏈夌偣鍍?br>for寰幆鎴栬匤ava5涓殑foreach寰幆銆傚鏋滄垜浠湁涓涓漿鎹㈠櫒, 鍙互鎶奨ML杞崲鍒癑ava, 澶?br>姒傚氨浼氬緱鍒頒笂闈㈣繖孌典簨瀹炰笂涓嶅彲浠ユ墽琛岀殑浠g爜銆傚洜涓篔ava鐨勬妧鏈鑼冩槸瀹氭鐨? 鎴戜滑娌℃湁
鍔炴硶鍦ㄧ▼搴忛噷鏀瑰彉瀹冦傛垜浠彲浠ュ鍔犲寘, 澧炲姞綾? 澧炲姞鏂規硶, 浣嗘槸鎴戜滑娌″姙娉曞鍔犵畻絎?
鑰屽浜嶺ML, 鎴戜滑鏄劇劧鍙互浠葷敱鑷繁澧炲姞榪欐牱鐨勪笢瑗褲傚浜嶺ML鐨勮娉曟爲鏉ヨ, 鍙鍘熸剰,
鎴戜滑鍙互浠繪剰澧炲姞浠諱綍鍏冪礌, 鍥犳絳変簬鎴戜滑鍙互浠繪剰澧炲姞綆楃銆傚鏋滀綘榪樹笉澶槑鐧界殑璇?
鐪嬩笅闈㈣繖涓緥瀛? 鍔犲叆鎴戜滑瑕佺粰Java寮曞叆涓涓猽nless綆楃:

    unless(someObject.canFly())
    {
        someObject.transportByGround():
    }

鍦ㄤ笂闈㈢殑涓や釜渚嬪瓙涓? 鎴戜滑鎵撶畻緇橨ava璇硶鎵╁睍涓や釜綆楃, 鎴愮粍鎷瘋礉鏂囦歡綆楃鍜屾潯浠剁畻絎?br>unless, 鎴戜滑瑕佹兂鍋氬埌榪欎竴鐐? 灝卞繀欏諱慨鏀笿ava緙栬瘧鍣ㄨ兘澶熸帴鍙楃殑鎶借薄璇硶鏍? 鏄劇劧鎴戜滑
鏃犳硶鐢↗ava鏍囧噯鐨勫姛鑳芥潵瀹炵幇瀹冦備絾鏄湪XML涓垜浠彲浠ヨ交鑰屾槗涓懼湴鍋氬埌銆傛垜浠殑瑙f瀽鍣?br>鏍規嵁 XML鍏冪礌, 鐢熸垚鎶借薄璇硶鏍? 鐢辨鐢熸垚綆楃, 鎵浠? 鎴戜滑鍙互浠繪剰寮曞叆浠諱綍綆楃銆?br>
瀵逛簬澶嶆潅鐨勭畻絎︽潵璇? 榪欐牱鍋氱殑濂藉鏄捐屾槗瑙併傛瘮濡? 鐢ㄧ壒瀹氱殑綆楃鏉ュ仛媯鍑烘簮鐮? 緙栬瘧
鏂囦歡, 鍗曞厓嫻嬭瘯, 鍙戦侀偖浠剁瓑浠誨姟, 鎯蟲兂鐪嬫湁澶氫箞緹庡銆傚浜庣壒瀹氱殑棰樼洰, 姣斿璇存瀯閫犺蔣
浠墮」鐩? 榪欎簺綆楃鐨勪嬌鐢ㄥ彲浠ュぇ騫呭噺浣庡皯浠g爜鐨勬暟閲忋傚鍔犱唬鐮佺殑娓呮櫚紼嬪害鍜屽彲閲嶇敤鎬с?br>瑙i噴鎬х殑XML鍙互寰堝鏄撶殑杈懼埌榪欎釜鐩爣銆俋ML鏄瓨鍌ㄥ眰嬈″寲鏁版嵁鐨勭畝鍗曟暟鎹枃浠? 鑰屽湪
Java涓? 鐢變簬灞傛緇撴瀯鏄畾姝葷殑(浣犲緢蹇氨浼氱湅鍒? Lisp鐨勬儏鍐典笌姝ゆ埅鐒朵笉鍚?, 鎴戜滑灝辨病
娉曡揪鍒頒笂榪扮洰鏍囥備篃璁歌繖姝f槸Ant鐨勬垚鍔熶箣澶勫憿銆?br>
浣犲彲浠ユ敞鎰忎竴涓嬫渶榪慗ava鍜孋#鐨勫彉鍖?灝ゅ叾鏄疌#3.0鐨勬妧鏈鑼?, C#鎶婂父鐢ㄧ殑鍔熻兘鎶借薄鍑?br>鏉? 浣滀負綆楃澧炲姞鍒癈#涓侰#鏂板鍔犵殑query綆楃灝辨槸涓涓緥瀛愩傚畠鐢ㄧ殑榪樻槸浼犵粺鐨勪綔娉?
C#鐨勮璁¤呬慨鏀規娊璞¤娉曟爲, 鐒跺悗澧炲姞瀵瑰簲鐨勫疄鐜般傚鏋滅▼搴忓憳鑷繁涔熻兘淇敼鎶借薄璇硶鏍?br>璇ユ湁澶氬ソ! 閭f牱鎴戜滑灝卞彲浠ユ瀯閫犵敤浜庣壒瀹氶棶棰樼殑瀛愯璦(姣斿璇村氨鍍廇nt榪欑鐢ㄤ簬鏋勯犻」鐩?br>鐨勮璦), 浣犺兘鎯沖埌鍒殑渚嬪瓙鍚? 鍐嶆濊冧竴涓嬭繖涓蹇點備笉榪囦篃涓嶅繀鎬濊冨お鐢? 鎴戜滑寰呬細
榪樹細鍥炲埌榪欎釜棰樼洰銆傞偅鏃跺欏氨浼氭洿鍔犳竻鏅般?br>
紱籐isp瓚婃潵瓚婅繎

鎴戜滑鍏堟妸綆楃鐨勪簨鎯呮斁涓鏀? 鑰冭檻涓涓婣nt璁捐灞闄愪箣澶栫殑涓滆タ銆傛垜鏃╁厛璇磋繃, Ant鍙互閫?br>榪囧啓Java綾繪潵鎵╁睍銆侫nt瑙f瀽鍣ㄤ細鏍規嵁鍚嶅瓧鏉ュ尮閰峏ML鍏冪礌鍜孞ava綾? 涓鏃︽壘鍒板尮閰? 灝辨墽
琛岀浉搴斾換鍔°備負浠涔堜笉鐢ˋnt鑷繁鏉ユ墿灞旳nt鍛? 姣曠珶鏍稿績浠誨姟瑕佸寘鍚緢澶氫紶緇熻璦鐨勭粨鏋?br>(渚嬪"if"), 濡傛灉Ant鑷韓灝辮兘鎻愪緵鏋勯犱換鍔$殑鑳藉姏(鑰屼笉鏄緷璧杍ava綾?, 鎴戜滑灝卞彲浠ュ緱
鍒版洿楂樼殑縐繪鎬с傛垜浠皢浼氫緷璧栦竴緇勬牳蹇冧換鍔?濡傛灉浣犲師鎰? 涔熶笉濡ㄦ妸瀹冪О浣滄爣鍑嗗簱), 鑰?br>涓嶇敤綆℃湁娌℃湁Java 鐜浜嗐傝繖緇勬牳蹇冧換鍔″彲浠ョ敤浠諱綍鏂瑰紡鏉ュ疄鐜? 鑰屽叾浠栦換鍔″緩絳戝湪榪?br>緇勬牳蹇冧換鍔′箣涓? 閭f牱鐨勮瘽, Ant灝變細鎴愪負閫氱敤鐨? 鍙墿灞曠殑, 鍩轟簬XML鐨勭紪紼嬭璦銆傝冭檻
涓嬮潰榪欑浠g爜鐨勫彲鑳芥?

    <task name="Test">
        <echo message="Hello World" />
    </task>
    <Test />

濡傛灉XML鏀寔"task"鐨勫垱寤? 涓婇潰榪欐浠g爜灝變細杈撳嚭"Hello World!". 瀹為檯涓? 鎴戜滑鍙互
鐢↗ava鍐欎釜"task"浠誨姟, 鐒跺悗鐢ˋnt-XML鏉ユ墿灞曞畠銆侫nt鍙互鍦ㄧ畝鍗曞師璇殑鍩虹涓婂啓鍑烘洿澶?br>鏉傜殑鍘熻, 灝卞儚鍏朵粬緙栫▼璇█甯哥敤鐨勪綔娉曚竴鏍楓傝繖涔熷氨鏄垜浠竴寮濮嬫彁鍒扮殑鍩轟簬XML鐨勭紪
紼嬭璦銆傝繖鏍峰仛鐢ㄥ涓嶅ぇ(浣犵煡閬撲負鐢氫箞鍚?), 浣嗘槸鐪熺殑寰堥叿銆?br>
鍐嶇湅涓鍥炴垜浠垰鎵嶈鐨凾ask浠誨姟銆傜璐轟綘鍛, 浣犲湪鐪婰isp浠g爜!!! 鎴戣浠涔? 涓鐐歸兘涓嶅儚
Lisp鍚? 娌″叧緋? 鎴戜滑鍐嶇粰瀹冩敹鎷句竴涓嬨?br>
姣擷ML鏇村ソ

鍓嶉潰涓鑺傝榪? Ant鑷垜鎵╁睍娌′粈涔堝ぇ鐢? 鍘熷洜鍦ㄤ簬XML寰堢儲鐞愩傚浜庢暟鎹潵璇? 榪欎釜闂
榪樹笉澶ぇ, 浣嗗鏋滀唬鐮佸緢鐑︾悙鐨勮瘽, 鍏夋槸鎵撳瓧涓婄殑楹葷儲灝辮凍浠ユ姷娑堝畠鐨勫ソ澶勩備綘鍐欒繃Ant
鐨勮剼鏈悧? 鎴戝啓榪? 褰撹剼鏈揪鍒頒竴瀹氬鏉傚害鐨勬椂鍊? XML闈炲父璁╀漢鍘岀儲銆傛兂鎯崇湅鍚? 涓轟簡
鍐欑粨鏉熸爣絳? 姣忎釜璇嶉兘寰楁墦涓ら亶, 涓嶅彂鐤畻濂界殑!

涓轟簡瑙e喅榪欎釜闂, 鎴戜滑搴斿綋綆鍖栧啓娉曘傞』鐭? XML浠呬粎鏄竴縐嶈〃杈懼眰嬈″寲鏁版嵁鐨勬柟寮忋?br>鎴戜滑騫朵笉鏄竴瀹氳浣跨敤灝栨嫭鍙鋒墠鑳藉緱鍒版爲鐨勫簭鍒楀寲緇撴灉銆傛垜浠畬鍏ㄥ彲浠ラ噰鐢ㄥ叾浠栫殑鏍煎紡銆?br>鍏朵腑鐨勪竴縐?鍒氬ソ灝辨槸Lisp鎵閲囩敤鐨?鏍煎紡, 鍙仛s琛ㄨ揪寮忋俿琛ㄨ揪寮忚鍋氱殑鍜孹ML涓鏍? 浣?br>瀹冪殑濂藉鏄啓娉曟洿綆鍗? 綆鍗曠殑鍐欐硶鏇撮傚悎浠g爜杈撳叆銆傚悗闈㈡垜浼氳緇嗚s琛ㄨ揪寮忋傝繖涔嬪墠
鎴戣娓呯悊涓涓媂ML鐨勪笢瑗褲傝冭檻涓涓嬪叧浜庢嫹璐濇枃浠剁殑渚嬪瓙:

    <copy toDir="../new/dir">
        <fileset dir="src_dir">
    </copy>

鎯蟲兂鐪嬪湪鍐呭瓨閲岄潰, 榪欐浠g爜鐨勮В鏋愭爲鍦ㄥ唴瀛樹細鏄粈涔堟牱瀛? 浼氭湁涓涓?copy"鑺傜偣, 鍏朵笅
鏈変竴涓?"fileset"鑺傜偣, 浣嗘槸灞炴у湪鍝噷鍛? 瀹冩庢牱琛ㄨ揪鍛? 濡傛灉浣犱互鍓嶇敤榪嘪ML, 騫朵笖
寮勪笉娓呮璇ョ敤鍏冪礌榪樻槸璇ョ敤灞炴? 浣犱笉鐢ㄦ劅鍒板鍗? 鍒漢涓鏍風硦娑傜潃鍛€傛病浜虹湡鐨勬悶寰楁竻
妤氥傝繖涓夋嫨涓庡叾璇存槸鍩轟簬鎶鏈殑鐞嗙敱, 榪樹笉濡傝鏄棴鐫鐪肩瀻鎽搞備粠姒傚康涓婃潵璁? 灞炴т篃
鏄竴縐嶅厓绱? 浠諱綍灞炴ц兘鍋氱殑, 鍏冪礌涓鏍峰仛寰楀埌銆俋ML寮曞叆灞炴х殑鐞嗙敱, 鍏跺疄灝辨槸涓轟簡璁?br>XML鍐欐硶涓嶉偅涔堝啑闀褲傛瘮濡傛垜浠湅涓緥瀛?

    <copy>
        <toDir>../new/dir</toDir>
        <fileset>
            <dir>src_dir</dir>
        </fileset>
    </copy>

涓や笅姣旇緝, 鍐呭鐨勪俊鎭噺瀹屽叏涓鏍? 鐢ㄥ睘鎬у彲浠ュ噺灝戞墦瀛楁暟閲忋傚鏋淴ML娌℃湁灞炴х殑璇?
鍏夋槸鎵撳瓧灝卞鎶婁漢鎼炵柉鎺夈?br>
璇村畬浜嗗睘鎬х殑闂, 鎴戜滑鍐嶆潵鐪嬩竴鐪媠琛ㄨ揪寮忋備箣鎵浠ョ粫榪欎箞涓集, 鏄洜涓簊琛ㄨ揪寮忔病鏈夊睘
鎬х殑姒傚康銆傚洜涓簊琛ㄨ揪寮忛潪甯哥畝緇? 鏍規湰娌℃湁蹇呰寮曞叆灞炴с傛垜浠湪鎶奨ML杞崲鎴恠琛ㄨ揪寮?br>鐨勬椂鍊? 蹇冮噷搴旇璁頒綇榪欎竴鐐廣傜湅涓緥瀛? 涓婇潰鐨勪唬鐮佽瘧鎴恠琛ㄨ揪寮忔槸榪欐牱鐨?

    (copy
        (todir "../new/dir")
        (fileset (dir "src_dir")))

浠旂粏鐪嬬湅榪欎釜渚嬪瓙, 宸埆鍦ㄥ摢閲? 灝栨嫭鍙鋒敼鎴愪簡鍦嗘嫭鍙? 姣忎釜鍏冪礌鍘熸潵鏄湁涓瀵規嫭鍙鋒爣璁?br>鍖呭洿鐨? 鐜板湪鍙栨秷浜嗗悗涓涓?灝辨槸甯︽枩鏉犵殑閭d釜)鎷彿鏍囪銆傝〃紺哄厓绱犵殑緇撴潫鍙渶瑕佷竴涓?)"
灝卞彲浠ヤ簡銆備笉閿? 宸埆灝辨槸榪欎簺銆傝繖涓ょ琛ㄨ揪鏂瑰紡鐨勮漿鎹? 闈炲父鑷劧, 涔熼潪甯哥畝鍗曘俿琛?br>杈懼紡鎵撹搗瀛楁潵, 涔熺渷浜嬪緱澶氥傜涓嬈$湅s琛ㄨ揪寮?Lisp)鏃? 鎷彿寰堢儲浜烘槸鍚? 鐜板湪鎴戜滑鏄?br>鐧戒簡鑳屽悗鐨勯亾鐞? 涓涓嬪瓙灝卞彉寰楀鏄撳浜嗐傝嚦灝? 姣擷ML瑕佸ソ鐨勫銆傜敤s琛ㄨ揪寮忓啓浠g爜, 涓?br>鍗曟槸瀹炵敤, 鑰屼笖涔熷緢璁╀漢鎰夊揩銆俿琛ㄨ揪寮忓叿鏈塜ML鐨勪竴鍒囧ソ澶? 榪欎簺濂藉鏄垜浠垰鍒氭帰璁ㄨ繃
鐨勩傜幇鍦ㄦ垜浠湅鐪嬫洿鍔燣isp椋庢牸鐨則ask渚嬪瓙:

    (task (name "Test")
        (echo (message "Hellow World!")))
    (Test)

鐢↙isp鐨勮璇濇潵璁? s琛ㄨ揪寮忕О涓鴻〃(list)銆傚浜庝笂闈㈢殑渚嬪瓙, 濡傛灉鎴戜滑鍐欑殑鏃跺欎笉鍔犳崲
琛? 鐢ㄩ楀彿鏉ヤ唬鏇跨┖鏍? 閭d箞榪欎釜琛ㄨ揪寮忕湅璧鋒潵灝遍潪甯稿儚涓涓厓绱犲垪琛? 鍏朵腑鍙堝祵濂楃潃鍏?br>浠栨爣璁般?br>
    (task, (name, "test"), (echo, (message, "Hello World!")))

XML鑷劧涔熷彲浠ョ敤榪欐牱鐨勯鏍兼潵鍐欍傚綋鐒朵笂闈㈣繖鍙ュ茍涓嶆槸涓鑸剰涔変笂鐨勫厓绱犺〃銆傚畠瀹為檯涓?br>鏄竴涓爲銆傝繖鍜孹ML鐨勪綔鐢ㄦ槸涓鏍風殑銆傜О瀹冧負鍒楄〃, 甯屾湜浣犱笉浼氭劅鍒拌糠鎯? 鍥犱負宓屽琛ㄥ拰
鏍戝疄闄呬笂鏄竴鐮佷簨銆侺isp鐨勫瓧闈㈡剰鎬濆氨鏄〃澶勭悊(list processing), 鍏跺疄涔熷彲浠ョО涓烘爲
澶勭悊, 榪欏拰澶勭悊XML鑺傜偣娌℃湁浠涔堜笉鍚屻?br>
緇忓彈榪欎竴鐣姌紓ㄤ互鍚? 鐜板湪鎴戜滑緇堜簬鐩稿綋鎺ヨ繎Lisp浜? Lisp鐨勬嫭鍙風殑紲炵鏈川(灝卞儚璁稿
Lisp鐙傜儹鍒嗗瓙璁や負鐨?閫愭笎鏄劇幇鍑烘潵銆傜幇鍦ㄦ垜浠戶緇爺絀跺叾浠栧唴瀹廣?br>
閲嶆柊瀹¤C璇█鐨勫畯

鍒頒簡榪欓噷, 瀵筙ML鐨勮璁轟綘澶ф閮藉惉绱簡, 鎴戦兘璁茬瘡浜嗐傛垜浠厛鍋滀竴鍋? 鎶婃爲, s琛ㄨ揪寮?
Ant榪欎簺涓滆タ鍏堟斁涓鏀? 鎴戜滑鏉ヨ璇碈鐨勯澶勭悊鍣ㄣ備竴瀹氭湁浜洪棶浜? 鎴戜滑鐨勮瘽棰樺拰C鏈変粈涔?br>鍏崇郴? 鎴戜滑宸茬粡鐭ラ亾浜嗗緢澶氬叧浜庡厓緙栫▼鐨勪簨鎯? 涔熸帰璁ㄨ繃涓撻棬鍐欎唬鐮佺殑浠g爜銆傜悊瑙h繖闂
鏈変竴瀹氶毦搴? 鍥犱負鐩稿叧璁ㄨ鏂囩珷鎵浣跨敤鐨勭紪紼嬭璦, 閮芥槸浣犱滑涓嶇啛鎮夌殑銆備絾鏄鏋滃彧璁烘
蹇電殑璇? 灝辯浉瀵硅綆鍗曚竴浜涖傛垜鐩鎬俊, 濡傛灉浠璇█鍋氫緥瀛愭潵璁ㄨ鍏冪紪紼? 鐞嗚В璧鋒潵涓瀹?br>浼氬鏄撳緱澶氥傚ソ, 鎴戜滑鎺ョ潃鐪嬨?br>
涓涓棶棰樻槸, 涓轟粈涔堣鐢ㄤ唬鐮佹潵鍐欎唬鐮佸憿? 鍦ㄥ疄闄呯殑緙栫▼涓? 鎬庢牱鍋氬埌榪欎竴鐐瑰憿? 鍒板簳鍏?br>緙栫▼鏄粈涔堟剰鎬? 浣犲ぇ姒傚凡緇忓惉璇磋繃榪欎簺闂鐨勭瓟妗? 浣嗘槸騫朵笉鎳傚緱鍏朵腑緙樼敱銆備負浜嗘彮紺?br>鑳屽悗鐨勭湡鐞? 鎴戜滑鏉ョ湅涓涓嬩竴涓畝鍗曠殑鏁版嵁搴撴煡璇㈤棶棰樸傝繖縐嶉鐩垜浠兘鍋氳繃銆傛瘮鏂硅,
鐩存帴鍦ㄧ▼搴忕爜閲屽埌澶勫啓SQL璇彞鏉ヤ慨鏀硅〃(table)閲岀殑鏁版嵁, 鍐欏浜嗗氨闈炲父鐑︿漢銆傚嵆渚跨敤
C#3.0鐨凩INQ, 浠嶇劧涓嶅噺鍏剁棝鑻︺傚啓涓涓畬鏁寸殑SQL鏌ヨ(灝界璇硶寰堜紭緹?鏉ヤ慨鏀規煇浜虹殑鍦?br>鍧, 鎴栬呮煡鎵炬煇浜虹殑鍚嶅瓧, 緇濆鏄歡浠ょ▼搴忓憳鍊嶆劅涔忓懗鐨勪簨鎯? 閭d箞鎴戜滑璇ユ庢牱鏉ヨВ鍐寵繖
涓棶棰? 絳旀灝辨槸: 浣跨敤鏁版嵁璁塊棶灞傘?

姒傚康鎸虹畝鍗? 鍏惰鐐規槸鎶婃暟鎹闂殑鍐呭(鑷沖皯鏄偅浜涙瘮杈冪悙紕庣殑閮ㄥ垎)鎶借薄鍑烘潵, 鐢ㄧ被鏉?br>鏄犲皠鏁版嵁搴撶殑琛? 鐒跺悗鐢ㄨ闂璞″睘鎬ц闂櫒(accessor)鐨勫姙娉曟潵闂存帴瀹炵幇鏌ヨ銆傝繖鏍峰氨
鏋佸ぇ鍦扮畝鍖栦簡寮鍙戝伐浣滈噺銆傛垜浠敤璁塊棶瀵硅薄鐨勬柟娉?鎴栬呭睘鎬ц祴鍊? 榪欒瑙嗕綘閫夌敤鐨勮璦
鑰屽畾)鏉ヤ唬鏇垮啓SQL鏌ヨ璇彞銆傚嚒鏄敤榪囪繖縐嶆柟娉曠殑浜? 閮界煡閬撹繖寰堣妭鐪佹椂闂淬傚綋鐒? 濡傛灉
浣犺浜茶嚜鍐欒繖鏍蜂竴涓娊璞″眰, 閭e彲鏄鑺遍潪甯稿鐨勬椂闂寸殑--浣犺鍐欎竴緇勭被鏉ユ槧灝勮〃, 鎶婂睘
鎬ц闂漿鎹負SQL鏌ヨ, 榪欎釜媧葷浉褰撹楄垂綺懼姏銆傜敤鎵嬪伐鏉ュ仛鏄劇劧鏄緢涓嶆槑鏅虹殑銆備絾鏄竴鏃?br>浣犳湁浜嗘柟妗堝拰妯℃澘, 瀹為檯涓婂氨娌℃湁澶氬皯涓滆タ闇瑕佹濊冪殑銆備綘鍙渶瑕佹寜鐓у悓鏍風殑妯℃澘涓嬈″張
涓嬈¢噸澶嶇紪鍐欑浉浼間唬鐮佸氨鍙互浜嗐備簨瀹炰笂寰堝浜哄凡緇忓彂鐜頒簡鏇村ソ鐨勬柟娉? 鏈変竴浜涘伐鍏峰彲浠?br>甯姪浣犺繛鎺ユ暟鎹簱, 鎶撳彇鏁版嵁搴撶粨鏋勫畾涔?schema), 鎸夌収棰勫畾涔夌殑鎴栬呯敤鎴峰畾鍒剁殑妯℃澘鏉?br>鑷姩緙栧啓浠g爜銆?br>
濡傛灉浣犵敤榪囪繖縐嶅伐鍏? 浣犺偗瀹氫細瀵瑰畠鐨勭濂囨晥鏋滄繁涓烘姌鏈嶃傚線寰鍙渶瑕侀紶鏍囩偣鍑繪暟嬈? 灝?br>鍙互榪炴帴鍒版暟鎹簱, 浜х敓鏁版嵁璁塊棶婧愮爜, 鐒跺悗鎶婃枃浠跺姞鍏ュ埌浣犵殑宸ョ▼閲岄潰, 鍗佸嚑鍒嗛挓鐨勫伐
浣? 鎸夌収寰甯告墜宸ユ柟寮忔潵浣滅殑璇? 涔熻闇瑕佹暟鐧句釜灝忔椂浜哄伐(man-hours)鎵嶈兘瀹屾垚銆傚彲鏄?
濡傛灉浣犵殑鏁版嵁搴撶粨鏋勫畾涔夊悗鏉ユ敼鍙樹簡鎬庝箞鍔? 閭f牱鐨勮瘽, 浣犲彧闇鎶婅繖涓繃紼嬮噸澶嶄竴閬嶅氨鍙?br>浠ヤ簡銆傜敋鑷蟲湁涓浜涘伐鍏瘋兘鑷姩瀹屾垚榪欓」鍙樺姩宸ヤ綔銆備綘鍙鎶婂畠浣滀負宸ョ▼鏋勯犵殑涓閮ㄥ垎, 姣?br>嬈$紪璇戝伐紼嬬殑鏃跺? 鏁版嵁搴撻儴鍒嗕篃浼氳嚜鍔ㄥ湴閲嶆柊鏋勯犮傝繖鐪熺殑澶浜嗐備綘瑕佸仛鐨勪簨鎯呭熀鏈?br>涓婂噺鍒頒簡0銆傚鏋滄暟鎹簱緇撴瀯瀹氫箟鍙戠敓浜嗘敼鍙? 騫跺湪緙栬瘧鏃惰嚜鍔ㄦ洿鏂頒簡鏁版嵁璁塊棶灞傜殑浠g爜,
閭d箞紼嬪簭涓換浣曚嬌鐢ㄨ繃鏃剁殑鏃т唬鐮佺殑鍦版柟, 閮戒細寮曞彂緙栬瘧閿欒銆?br>
鏁版嵁璁塊棶灞傛槸涓緢濂界殑渚嬪瓙, 榪欐牱鐨勪緥瀛愯繕鏈夊ソ澶氥備粠GUI鏍鋒澘浠g爜, WEB浠g爜, COM鍜?br>CORBA瀛樻牴, 浠ュ強MFC鍜孉TL絳夌瓑銆傚湪榪欎簺鍦版柟, 閮芥槸鏈夊ソ澶氱浉浼間唬鐮佸嬈¢噸澶嶃傛棦鐒惰繖浜?br>浠g爜鏈夊彲鑳借嚜鍔ㄧ紪鍐? 鑰岀▼搴忓憳鏃墮棿鍙堣繙榪滄瘮CPU鏃墮棿鏄傝吹, 褰撶劧灝變駭鐢熶簡濂藉宸ュ叿鏉ヨ嚜
鍔ㄧ敓鎴愭牱鏉夸唬鐮併傝繖浜涘伐鍏風殑鏈川鏄粈涔堝憿? 瀹冧滑瀹為檯涓婂氨鏄埗閫犵▼搴忕殑紼嬪簭銆傚畠浠湁涓
涓縐樼殑鍚嶅瓧, 鍙仛鍏冪紪紼嬨傛墍璋撳厓緙栫▼鐨勬湰涔? 灝辨槸濡傛銆?br>
鍏冪紪紼嬫湰鏉ュ彲浠ョ敤鍒版棤鏁板鐨勫湴鏂? 浣嗗疄闄呬笂浣跨敤鐨勬鏁板嵈娌℃湁閭d箞澶氥傚綊鏍圭粨搴? 鎴戜滑
蹇冮噷榪樻槸鍦ㄧ洏綆? 鍋囪閲嶅浠g爜鐢ㄦ嫹璐濈矘璐寸殑璇? 澶ф瑕侀噸澶?,7嬈? 瀵逛簬榪欐牱鐨勫伐浣滈噺,
鍊煎緱涓撻棬寤虹珛涓濂楃敓鎴愬伐鍏峰悧? 褰撶劧涓嶅煎緱銆傛暟鎹闂眰鍜孋OM瀛樻牴寰寰闇瑕侀噸鐢ㄦ暟鐧炬,
鐢氳嚦涓婂崈嬈? 鎵浠ョ敤宸ュ叿鐢熸垚鏄渶濂界殑鍔炴硶銆傝岄偅浜涗粎浠呮槸閲嶅鍑犳鍗佸嚑嬈$殑浠g爜, 鏄病
鏈夊繀瑕佷笓闂ㄥ仛宸ュ叿鐨勩備笉蹇呰鐨勬椂鍊欎篃鍘誨紑鍙戜唬鐮佺敓鎴愬伐鍏? 閭e氨鏄劇劧榪囧害浼拌浜嗕唬鐮佺敓
鎴愮殑濂藉銆傚綋鐒? 濡傛灉鍒涘緩榪欑被宸ュ叿瓚沖綆鍗曠殑璇? 榪樻槸搴斿綋灝介噺澶氱敤, 鍥犱負榪欐牱鍋氬繀鐒?br>浼氳妭鐪佹椂闂淬傜幇鍦ㄦ潵鐪嬩竴涓嬫湁娌℃湁鍚堢悊鐨勫姙娉曟潵杈懼埌榪欎釜鐩殑銆?br>
鐜板湪, C棰勫鐞嗗櫒瑕佹淳涓婄敤鍦轟簡銆傛垜浠兘鐢ㄨ繃C/C++鐨勯澶勭悊鍣? 鎴戜滑鐢ㄥ畠鎵ц綆鍗曠殑緙栬瘧
鎸囦護, 鏉ヤ駭鐢熺畝鍗曠殑浠g爜鍙樻崲(姣旀柟璇? 璁劇疆璋冭瘯浠g爜寮鍏?, 鐪嬩竴涓緥瀛?

    #define triple(X) X+X+X

榪欎竴琛岀殑浣滅敤鏄粈涔? 榪欐槸涓涓畝鍗曠殑棰勭紪璇戞寚浠? 瀹冩妸紼嬪簭涓殑triple(X)鏇挎崲縐頒負
X+X+X銆備緥濡? 鎶婃墍鏈夌殑triple(5)閮芥崲鎴?+5+5, 鐒跺悗鍐嶄氦緇欑紪璇戝櫒緙栬瘧銆傝繖灝辨槸涓涓畝
鍗曠殑浠g爜鐢熸垚鐨勪緥瀛愩傝鏄疌鐨勯澶勭悊鍣ㄥ啀寮哄ぇ涓鐐? 瑕佹槸鑳藉鍏佽榪炴帴鏁版嵁搴? 瑕佹槸鑳?br>澶氫竴浜涘叾浠栫畝鍗曠殑鏈哄埗, 鎴戜滑灝卞彲浠ュ湪鎴戜滑紼嬪簭鐨勫唴閮ㄥ紑鍙戣嚜宸辯殑鏁版嵁璁塊棶灞傘備笅闈㈣繖涓?br>渚嬪瓙, 鏄竴涓亣鎯崇殑瀵笴瀹忕殑鎵╁睍:

    #get-db-schema("127.0.0.1")
    #iterate-through-tables
    #for-each-table
        class #table-name
            {
            };
    #end-for-each

鎴戜滑榪炴帴鏁版嵁搴撶粨鏋勫畾涔? 閬嶅巻鏁版嵁琛? 鐒跺悗瀵規瘡涓〃鍒涘緩涓涓被, 鍙秷鍑犺浠g爜灝卞畬鎴?br>浜嗚繖涓伐浣溿傝繖鏍鋒瘡嬈$紪璇戝伐紼嬬殑鏃跺? 榪欎簺綾婚兘浼氭牴鎹暟鎹簱鐨勫畾涔夊悓姝ユ洿鏂般傛樉鑰屾槗
瑙? 鎴戜滑涓嶈垂鍚圭伆涔嬪姏灝卞湪紼嬪簭鍐呴儴寤虹珛浜嗕竴涓畬鏁寸殑鏁版嵁璁塊棶灞? 鏍規湰鐢ㄤ笉鐫浠諱綍澶栭儴
宸ュ叿銆傚綋鐒惰繖縐嶄綔娉曟湁涓涓己鐐? 閭e氨鏄垜浠緱瀛︿範涓濂楁柊鐨?緙栬瘧鏃惰璦", 鍙︿竴涓己鐐?br>灝辨槸鏍規湰涓嶅瓨鍦ㄨ繖涔堜竴涓珮綰х増鐨凜棰勫鐞嗗櫒銆傞渶瑕佸仛澶嶆潅浠g爜鐢熸垚鐨勬椂鍊? 榪欎釜璇█(璇?br>鑰呮敞: 榪欓噷鎸囬澶勭悊鎸囦護, 鍗充綔鑰呮墍璇寸殑"緙栬瘧鏃惰璦")鏈韓涔熶竴瀹氫細鍙樺緱鐩稿綋澶嶆潅銆傚畠
蹇呴』鏀寔瓚沖澶氱殑搴撳拰璇█緇撴瀯銆傛瘮濡傝鎴戜滑鎯寵鐢熸垚鐨勪唬鐮佽渚濊禆鏌愪簺ftp鏈嶅姟鍣ㄤ笂鐨?br>鏂囦歡, 棰勫鐞嗗櫒灝卞緱鏀寔ftp璁塊棶, 浠呬粎鍥犱負榪欎釜浠誨姟鑰屼笉寰椾笉鍒涢犲拰瀛︿範涓闂ㄦ柊鐨勮璦,
鐪熸槸鏈夌偣璁╀漢鎭跺績(浜嬪疄涓婂凡緇忓瓨鍦ㄧ潃鏈夋鑳藉姏鐨勮璦, 榪欐牱鍋氬氨鏇存樉鑽掕艾)銆傛垜浠笉濡ㄥ啀
鐏墊椿涓鐐? 涓轟粈涔堜笉鐩存帴鐢?C/C++鑷繁浣滀負鑷繁鐨勯澶勭悊璇█鍛?  榪欐牱瀛愮殑璇? 鎴戜滑鍙?br>浠ュ彂鎸ヨ璦鐨勫己澶ц兘鍔? 瑕佸鐨勬柊涓滆タ涔熷彧涓嶈繃鏄嚑涓畝鍗曠殑鎸囩ず瀛?, 榪欎簺鎸囩ず瀛楃敤鏉?br>鍖哄埆緙栬瘧鏃朵唬鐮佸拰榪愯鏃朵唬鐮併?br>
    <%
        cout<<"Enter a number: ";
        cin>>n;
    %>
    for(int i=0;i< <% n %>;i++)
    {
        cout<<"hello"<<endl;
    }

浣犳槑鐧戒簡鍚? 鍦?lt;%鍜?>鏍囪涔嬮棿鐨勪唬鐮佹槸鍦ㄧ紪璇戞椂榪愯鐨? 鏍囪涔嬪鐨勫叾浠栦唬鐮侀兘鏄櫘閫?br>浠g爜銆傜紪璇戠▼搴忔椂, 緋葷粺浼氭彁紺轟綘杈撳叆涓涓暟, 榪欎釜鏁板湪鍚庨潰鐨勫驚鐜腑浼氱敤鍒般傝宖or寰?br>鐜殑浠g爜浼氳緙栬瘧銆傚亣瀹氫綘鍦ㄧ紪璇戞椂杈撳叆5, for寰幆鐨勪唬鐮佸皢浼氭槸:

    for(int i=0;i<5; i++)
    {
        cout<<"hello"<<endl;
    }

鍙堢畝鍗曞張鏈夋晥鐜? 涔熶笉闇瑕佸彟澶栫殑棰勫鐞嗚璦銆傛垜浠彲浠ュ湪緙栬瘧鏃跺氨鍏呭垎鍙戞尌瀹夸富璇█(
姝ゅ鏄疌/C++)鐨勫己澶ц兘鍔? 鎴戜滑鍙互寰堝鏄撳湴鍦ㄧ紪璇戞椂榪炴帴鏁版嵁搴? 寤虹珛鏁版嵁璁塊棶灞? 灝?br>鍍廕SP鎴栬匒SP鍒涘緩緗戦〉閭f牱銆傛垜浠篃鐢ㄤ笉鐫涓撻棬鐨勭獥鍙e伐鍏鋒潵鍙﹀寤虹珛宸ョ▼銆傛垜浠彲浠ュ湪
浠g爜涓珛鍗沖姞鍏ュ繀瑕佺殑宸ュ叿銆傛垜浠篃鐢ㄤ笉鐫欏捐檻寤虹珛榪欑宸ュ叿鏄笉鏄煎緱, 鍥犱負榪欏お瀹規槗
浜? 澶畝鍗曚簡銆傝繖鏍峰瓙涓嶇煡鍙互鑺傜渷澶氬皯鏃墮棿鍟娿?br>
浣犲ソ, Lisp

鍒版鍒諱負姝? 鎴戜滑鎵鐭ョ殑鍏充簬Lisp鐨勬寚紺哄彲浠ユ葷粨涓轟竴鍙ヨ瘽: Lisp鏄竴涓彲鎵ц鐨勮娉曟洿
浼樼編鐨刋ML, 浣嗘垜浠繕娌℃湁璇碙isp鏄庢牱鍋氬埌榪欎竴鐐圭殑, 鐜板湪寮濮嬭ˉ涓婅繖涓瘽棰樸?

Lisp鏈変赴瀵岀殑鍐呯疆鏁版嵁綾誨瀷, 鍏朵腑鐨勬暣鏁板拰瀛楃涓插拰鍏朵粬璇█娌′粈涔堝垎鍒傚儚71鎴栬?br>"hello"榪欐牱鐨勫? 鍚箟涔熷拰C++鎴栬匤ava榪欐牱鐨勮璦澶т綋鐩稿悓銆傜湡姝f湁鎰忔濈殑涓夌綾誨瀷鏄?br>絎﹀彿(symbol), 琛ㄥ拰鍑芥暟銆傝繖涓绔犵殑鍓╀綑閮ㄥ垎, 鎴戦兘浼氱敤鏉ヤ粙緇嶈繖鍑犵綾誨瀷, 榪樿浠嬬粛
Lisp鐜鏄庢牱緙栬瘧鍜岃繍琛屾簮鐮佺殑銆傝繖涓繃紼嬬敤Lisp鐨勬湳璇潵璇撮氬父鍙仛姹傚箋傞氳榪欎竴
鑺傚唴瀹? 瀵逛簬閫忓交鐞嗚В鍏冪紪紼嬬殑鐪熸娼滃姏, 浠ュ強浠g爜鍜屾暟鎹殑鍚屼竴鎬? 鍜岄潰鍚戦鍩熻璦鐨?br>瑙傚康, 閮芥瀬鍏墮噸瑕併備竾鍕跨瓑闂茶涔嬨傛垜浼氬敖閲忚寰楃敓鍔ㄦ湁瓚d竴浜? 涔熷笇鏈涗綘鑳借幏寰椾竴浜?br>鍚彂銆傞偅濂? 鎴戜滑鍏堣絎﹀彿銆?br>
澶т綋涓? 絎﹀彿鐩稿綋浜嶤++鎴朖ava璇█涓殑鏍囧織絎? 瀹冪殑鍚嶅瓧鍙互鐢ㄦ潵璁塊棶鍙橀噺鍊?渚嬪
currentTime, arrayCount, n, 絳夌瓑), 宸埆鍦ㄤ簬, Lisp涓殑絎﹀彿鏇村姞鍩烘湰銆傚湪C++鎴?br>Java閲岄潰, 鍙橀噺鍚嶅彧鑳界敤瀛楁瘝鍜屼笅鍒掔嚎鐨勭粍鍚? 鑰孡isp鐨勭鍙峰垯闈炲父鏈夊寘瀹規? 姣斿, 鍔?br>鍙?+)灝辨槸涓涓悎娉曠殑絎﹀彿, 鍏朵粬鐨勫儚-, =, hello-world, *絳夌瓑閮藉彲浠ユ槸絎﹀彿鍚嶃傜鍙?br>鍚嶇殑鍛藉悕瑙勫垯鍙互鍦ㄧ綉涓婃煡鍒般備綘鍙互緇欒繖浜涚鍙蜂換鎰忚祴鍊? 鎴戜滑榪欓噷鍏堢敤浼爜鏉ヨ鏄庤繖
涓鐐廣傚亣瀹氬嚱鏁皊et鏄粰鍙橀噺璧嬪?灝卞儚絳夊彿=鍦–++鍜孞ava閲岀殑浣滅敤), 涓嬮潰鏄垜浠殑渚嬪瓙:

    set(test, 5)            // 絎﹀彿test鐨勫間負5
    set(=, 5)               // 絎﹀彿=鐨勫間負5
    set(test, "hello")      // 絎﹀彿test鐨勫間負瀛楃涓?hello"
    set(test, =)            // 姝ゆ椂絎﹀彿=鐨勫間負5, 鎵浠est鐨勪篃涓?
    set(*, "hello")         // 絎﹀彿*鐨勫間負"hello"

濂藉儚鏈変粈涔堜笉瀵圭殑鍦版柟? 鍋囧畾鎴戜滑瀵?璧嬬粰鏁存暟鎴栬呭瓧絎︿覆鍊? 閭e仛涔樻硶鏃舵庝箞鍔? 涓嶇
鎬庝箞璇? *鎬繪槸涔樻硶鍛? 絳旀綆鍗曟瀬浜嗐侺isp涓嚱鏁扮殑瑙掕壊鍗佸垎鐗規畩, 鍑芥暟涔熸槸涓縐嶆暟鎹?br>綾誨瀷, 灝卞儚鏁存暟鍜屽瓧絎︿覆涓鏍? 鍥犳鍙互鎶婂畠璧嬪肩粰絎﹀彿銆備箻娉曞嚱鏁癓isp鐨勫唴緗嚱鏁? 榛?br>璁よ祴緇?, 浣犲彲浠ユ妸鍏朵粬鍑芥暟璧嬪肩粰*, 閭f牱*灝變笉浠h〃涔樻硶浜嗐備綘涔熷彲浠ユ妸榪欏嚱鏁扮殑鍊煎瓨
鍒板彟澶栫殑鍙橀噺閲屻傛垜浠啀鐢ㄤ吉鐮佹潵璇存槑涓涓?

    *(3,4)          // 3涔?, 緇撴灉鏄?2
    set(temp, *)    // 鎶?鐨勫? 涔熷氨鏄箻娉曞嚱鏁? 璧嬪肩粰temp
    set(*, 3)       // 鎶?璧嬩簣*
    *(3,4)          // 閿欒鐨勮〃杈懼紡, *涓嶅啀鏄箻娉? 鑰屾槸鏁板?
    temp(3,4)       // temp鏄箻娉曞嚱鏁? 鎵浠ユ琛ㄨ揪寮忕殑鍊間負3涔?絳変簬12
    set(*, temp)    // 鍐嶆鎶婁箻娉曞嚱鏁拌祴浜?
    *(3,4)          // 3涔?絳変簬12

鍐嶅彜鎬竴鐐? 鎶婂噺鍙風殑鍊艱祴緇欏姞鍙?

    set(+, -)       // 鍑忓彿(-)鏄唴緗殑鍑忔硶鍑芥暟
    +(5, 4)         // 鍔犲彿(+)鐜板湪鏄唬琛ㄥ噺娉曞嚱鏁? 緇撴灉鏄?鍑?絳変簬1

榪欏彧鏄婦渚嬪瓙, 鎴戣繕娌℃湁璇︾粏璁插嚱鏁般侺isp涓殑鍑芥暟鏄竴縐嶆暟鎹被鍨? 鍜屾暣鏁? 瀛楃涓?
絎﹀彿絳夌瓑涓鏍楓備竴涓嚱鏁板茍涓嶅繀鐒舵湁涓涓悕瀛? 榪欏拰C++鎴栬匤ava璇█鐨勬儏褰㈠緢涓嶇浉鍚屻?br>鍦ㄨ繖閲屽嚱鏁拌嚜宸變唬琛ㄨ嚜宸便備簨瀹炰笂瀹冩槸涓涓寚鍚戜唬鐮佸潡鐨勬寚閽? 闄勫甫鏈変竴浜涘叾浠栦俊鎭?渚?br>濡備竴緇勫弬鏁板彉閲?銆傚彧鏈夊湪鎶婂嚱鏁拌祴浜堝叾浠栫鍙鋒椂, 瀹冩墠鍏鋒湁浜嗗悕瀛? 灝卞儚鎶婁竴涓暟鍊兼垨
瀛楃涓茶祴浜堝彉閲忎竴鏍風殑閬撶悊銆備綘鍙互鐢ㄤ竴涓唴緗殑涓撻棬鐢ㄤ簬鍒涘緩鍑芥暟鐨勫嚱鏁版潵鍒涘緩鍑芥暟,
鐒跺悗鎶婂畠璧嬪肩粰絎﹀彿fn, 鐢ㄤ吉鐮佹潵琛ㄧず灝辨槸:

    fn [a]
    {
        return *(a, 2);
    }

榪欐浠g爜榪斿洖涓涓叿鏈変竴涓弬鏁扮殑鍑芥暟, 鍑芥暟鐨勫姛鑳芥槸璁$畻鍙傛暟涔?鐨勭粨鏋溿傝繖涓嚱鏁拌繕
娌℃湁鍚嶅瓧, 浣犲彲浠ユ妸姝ゅ嚱鏁拌祴鍊肩粰鍒殑絎﹀彿:

    set(times-two, fn [a] {return *(a, 2)})

鎴戜滑鐜板湪鍙互榪欐牱璋冪敤榪欎釜鍑芥暟:

    time-two(5)         // 榪斿洖10

鎴戜滑鍏堣煩榪囩鍙峰拰鍑芥暟, 璁蹭竴璁茶〃銆備粈涔堟槸琛? 浣犱篃璁稿凡緇忓惉榪囧ソ澶氱浉鍏崇殑璇存硶銆傝〃, 涓
璦浠ヨ斀涔? 灝辨槸鎶婄被浼糥ML閭f牱鐨勬暟鎹潡, 鐢╯琛ㄨ揪寮忔潵琛ㄧず銆傝〃鐢ㄤ竴瀵規嫭鍙鋒嫭浣? 琛ㄤ腑鍏?br>绱犱互絀烘牸鍒嗛殧, 琛ㄥ彲浠ュ祵濂椼備緥濡?榪欏洖鎴戜滑鐢ㄧ湡姝g殑Lisp璇硶, 娉ㄦ剰鐢ㄥ垎鍙瘋〃紺烘敞閲?:

    ()                      ; 絀鴻〃
    (1)                     ; 鍚竴涓厓绱犵殑琛?br>    (1 "test")              ; 涓ゅ厓绱犺〃, 涓涓厓绱犳槸鏁存暟1, 鍙︿竴涓槸瀛楃涓?br>    (test "hello")          ; 涓ゅ厓绱犺〃, 涓涓厓绱犳槸絎﹀彿, 鍙︿竴涓槸瀛楃涓?br>    (test (1 2) "hello")    ; 涓夊厓绱犺〃, 涓涓鍙穞est, 涓涓惈鏈変袱涓厓绱?鍜?鐨?br>                            ; 琛? 鏈鍚庝竴涓厓绱犳槸瀛楃涓?br>
褰揕isp緋葷粺閬囧埌榪欐牱鐨勮〃鏃? 瀹冩墍鍋氱殑, 鍜孉nt澶勭悊XML鏁版嵁鎵鍋氱殑, 闈炲父鐩鎬技, 閭e氨鏄瘯
鍥炬墽琛屽畠浠傚叾瀹? Lisp婧愮爜灝辨槸鐗瑰畾鐨勪竴縐嶈〃, 濂芥瘮Ant婧愮爜鏄竴縐嶇壒瀹氱殑XML涓鏍楓?br>Lisp鎵ц琛ㄧ殑欏哄簭鏄繖鏍風殑, 琛ㄧ殑絎竴涓厓绱犲綋浣滃嚱鏁? 鍏朵粬鍏冪礌褰撲綔鍑芥暟鐨勫弬鏁般傚鏋?br>鍏朵腑鏌愪釜鍙傛暟涔熸槸琛? 閭e氨鎸夌収鍚屾牱鐨勫師鍒欏榪欎釜琛ㄦ眰鍊? 緇撴灉鍐嶄紶閫掔粰鏈鍒濈殑鍑芥暟浣滀負
鍙傛暟銆傝繖灝辨槸鍩烘湰鍘熷垯銆傛垜浠湅涓涓嬬湡姝g殑浠g爜:

    (* 3 4)                 ; 鐩稿綋浜庡墠闈㈠垪涓捐繃鐨勪吉鐮?(3,4), 鍗寵綆?涔?
    (times-two 5)           ; 榪斿洖10, times-two鎸夌収鍓嶉潰鐨勫畾涔夋槸姹傚弬鏁扮殑2鍊?br>    (3 4)                   ; 閿欒, 3涓嶆槸鍑芥暟
    (time-two)              ; 閿欒, times-two瑕佹眰涓涓弬鏁?br>    (times-two 3 4)         ; 閿欒, times-two鍙姹備竴涓弬鏁?br>    (set + -)               ; 鎶婂噺娉曞嚱鏁拌祴浜堢鍙?
    (+ 5 4)                 ; 渚濇嵁涓婁竴鍙ョ殑緇撴灉, 姝ゆ椂+琛ㄧず鍑忔硶, 鎵浠ヨ繑鍥?
    (* 3 (+ 2 2))           ; 2+2鐨勭粨鏋滄槸4, 鍐嶄箻3, 緇撴灉鏄?2

涓婅堪鐨勪緥瀛愪腑, 鎵鏈夌殑琛ㄩ兘鏄綋浣滀唬鐮佹潵澶勭悊鐨勩傛庢牱鎶婅〃褰撲綔鏁版嵁鏉ュ鐞嗗憿? 鍚屾牱鐨?
璁炬兂涓涓? Ant鏄妸XML鏁版嵁褰撲綔鑷繁鐨勫弬鏁般傚湪Lisp涓? 鎴戜滑緇欒〃鍔犱竴涓墠緙'鏉ヨ〃紺烘暟
鎹?br>
    (set test '(1 2))       ; test鐨勫間負涓ゅ厓绱犺〃
    (set test (1 2))        ; 閿欒, 1涓嶆槸鍑芥暟
    (set test '(* 3 4))     ; test鐨勫兼槸涓夊厓绱犺〃, 涓変釜鍏冪礌鍒嗗埆鏄?, 3, 4

鎴戜滑鍙互鐢ㄤ竴涓唴緗殑鍑芥暟head鏉ヨ繑鍥炶〃鐨勭涓涓厓绱? tail鍑芥暟鏉ヨ繑鍥炲墿浣欏厓绱犵粍鎴愮殑
琛ㄣ?br>
    (head '(* 3 4))         ; 榪斿洖絎﹀彿*
    (tail '(* 3 4))         ; 榪斿洖琛?3 4)
    (head (tal '(* 3 4)))   ; 榪斿洖3
    (head test)             ; 榪斿洖*

浣犲彲浠ユ妸Lisp鐨勫唴緗嚱鏁版兂鍍忔垚Ant鐨勪換鍔°傚樊鍒湪浜? 鎴戜滑涓嶇敤鍦ㄥ彟澶栫殑璇█涓墿灞?br>Lisp(铏界劧瀹屽叏鍙互鍋氬緱鍒?, 鎴戜滑鍙互鐢↙isp鑷繁鏉ユ墿灞曡嚜宸? 灝卞儚涓婇潰涓劇殑times-two
鍑芥暟鐨勪緥瀛愩侺isp鐨勫唴緗嚱鏁伴泦鍗佸垎綺劇畝, 鍙寘鍚簡鍗佸垎蹇呰鐨勯儴鍒嗐傚墿涓嬬殑鍑芥暟閮芥槸浣?br>涓烘爣鍑嗗簱鏉ュ疄鐜扮殑銆?br>
Lisp瀹?br>
鎴戜滑宸茬粡鐪嬪埌, 鍏冪紪紼嬪湪涓涓被浼糺sp鐨勬ā鏉垮紩鎿庢柟闈㈢殑搴旂敤銆傛垜浠氳繃綆鍗曠殑瀛楃涓插
鐞嗘潵鐢熸垚浠g爜銆備絾鏄垜浠彲浠ュ仛鐨勬洿濂姐傛垜浠厛鎻愪竴涓棶棰? 鎬庢牱鍐欎竴涓伐鍏? 閫氳繃鏌ユ壘
鐩綍緇撴瀯涓殑婧愭枃浠舵潵鑷姩鐢熸垚Ant鑴氭湰銆?br>
鐢ㄥ瓧絎︿覆澶勭悊鐨勬柟寮忕敓鎴怉nt鑴氭湰鏄竴縐嶇畝鍗曠殑鏂瑰紡銆傚綋鐒? 榪樻湁涓縐嶆洿鍔犳娊璞? 琛ㄨ揪鑳?br>鍔涙洿寮? 鎵╁睍鎬ф洿濂界殑鏂瑰紡, 灝辨槸鍒╃敤XML搴撳湪鍐呭瓨涓洿鎺ョ敓鎴怷ML鑺傜偣, 榪欐牱鐨勮瘽鍐呭瓨涓?br>鐨勮妭鐐瑰氨鍙互鑷姩搴忓垪鍖栨垚涓哄瓧絎︿覆銆備笉浠呭姝? 鎴戜滑鐨勫伐鍏瘋繕鍙互鍒嗘瀽榪欎簺鑺傜偣, 瀵瑰凡
鏈夌殑XML鏂囦歡鍋氬彉鎹€傞氳繃鐩存帴澶勭悊XML鑺傜偣銆傛垜浠彲浠ヨ秴瓚婂瓧絎︿覆澶勭悊, 浣跨敤鏇撮珮灞傛鐨?br>姒傚康, 鍥犳鎴戜滑鐨勫伐浣滃氨浼氬仛鐨勬洿蹇洿濂姐?br>
鎴戜滑褰撶劧鍙互鐩存帴鐢ˋnt鑷韓鏉ュ鐞哫ML鍙樻崲鍜屽埗浣滀唬鐮佺敓鎴愬伐鍏楓傛垨鑰呮垜浠篃鍙互鐢↙isp
鏉ュ仛榪欓」宸ヤ綔銆傛鍍忔垜浠互鍓嶆墍鐭ョ殑, 琛ㄦ槸Lisp鍐呯疆鐨勬暟鎹粨鏋? Lisp鍚湁澶ч噺鐨勫伐鍏鋒潵
蹇熸湁鏁堢殑鎿嶄綔琛?head鍜宼ail鏄渶綆鍗曠殑涓や釜)銆傝屼笖, Lisp娌℃湁璇箟綰︽潫, 浣犲彲浠ユ瀯閫?br>浠諱綍鏁版嵁緇撴瀯, 鍙浣犲師鎰忋?br>
Lisp閫氳繃瀹?macro)鏉ュ仛鍏冪紪紼嬨傛垜浠啓涓緇勫畯鏉ユ妸浠誨姟鍒楄〃(to-do list)杞崲涓轟笓鐢ㄩ
鍩熻璦銆?br>
鍥炴兂涓涓嬩笂闈o-do list鐨勪緥瀛? 鍏禭ML鐨勬暟鎹牸寮忔槸榪欐牱鐨?

    <todo name = "housework">
        <item priority = "high">Clean the hose</item>
        <item priority = "medium">Wash the dishes</item>
        <item priority = "medium">Buy more soap</item>
    </todo>

鐩稿簲鐨剆琛ㄨ揪寮忔槸榪欐牱鐨?

    (todo "housework"
        (item (priority high) "Clean the house")
        (item (priority medium) "Wash the dishes")
        (item (priority medium) "Buy more soap"))

鍋囪鎴戜滑瑕佸啓涓涓換鍔¤〃鐨勭鐞嗙▼搴? 鎶婁換鍔¤〃鏁版嵁瀛樺埌涓緇勬枃浠墮噷, 褰撶▼搴忓惎鍔ㄦ椂, 浠?br>鏂囦歡璇誨彇榪欎簺鏁版嵁騫舵樉紺虹粰鐢ㄦ埛銆傚湪鍒殑璇█閲?姣斿璇碕ava), 榪欎釜浠誨姟璇ユ庝箞鍋? 鎴戜滑
浼氳В鏋怷ML鏂囦歡, 浠庝腑寰楀嚭浠誨姟琛ㄦ暟鎹? 鐒跺悗鍐欎唬鐮侀亶鍘哫ML鏍? 鍐嶈漿鎹負Java鐨勬暟鎹粨鏋?br>(鑰佸疄璁? 鍦↗ava閲岃В鏋怷ML鐪熶笉鏄歡杞繪澗鐨勪簨鎯?, 鏈鍚庡啀鎶婃暟鎹睍紺虹粰鐢ㄦ埛銆傜幇鍦ㄥ鏋?br>鐢↙isp, 璇ユ庝箞鍋?

鍋囧畾瑕佺敤鍚屾牱鎬濊礬鐨勫寲, 鎴戜滑澶ф浼氱敤Lisp搴撴潵瑙f瀽XML銆俋ML瀵規垜浠潵璇村氨鏄竴涓狶isp
鐨勮〃(s琛ㄨ揪寮?, 鎴戜滑鍙互閬嶅巻榪欎釜琛? 鐒跺悗鎶婄浉鍏蟲暟鎹彁浜ょ粰鐢ㄦ埛銆傚彲鏄? 鏃㈢劧鎴戜滑鐢?br>Lisp, 灝辨牴鏈病鏈夊繀瑕佸啀鐢╔ML鏍煎紡淇濆瓨鏁版嵁, 鐩存帴鐢╯琛ㄨ揪寮忓氨濂戒簡, 榪欐牱灝辨病鏈夊繀瑕佸仛
杞崲浜嗐傛垜浠篃鐢ㄤ笉鐫涓撻棬鐨勮В鏋愬簱, Lisp鍙互鐩存帴鍦ㄥ唴瀛橀噷澶勭悊s琛ㄨ揪寮忋傛敞鎰? Lisp
緙栬瘧鍣ㄥ拰.net緙栬瘧鍣ㄤ竴鏍? 瀵筁isp紼嬪簭鏉ヨ, 鍦ㄨ繍琛屾椂鎬繪槸闅忔椂鍙敤鐨勩?br>
浣嗘槸榪樻湁鏇村ソ鐨勫姙娉曘傛垜浠敋鑷充笉鐢ㄥ啓琛ㄨ揪寮忔潵瀛樺偍鏁版嵁, 鎴戜滑鍙互鍐欏畯, 鎶婃暟鎹綋浣滀唬
鐮佹潵澶勭悊銆傞偅璇ユ庝箞鍋氬憿? 鐪熺殑綆鍗曘傚洖鎯充竴涓? Lisp鐨勫嚱鏁拌皟鐢ㄦ牸寮?

    (function-name arg1 arg2 arg3)

鍏朵腑姣忎釜鍙傛暟閮芥槸s琛ㄨ揪寮? 姹傚間互鍚? 浼犻掔粰鍑芥暟銆傚鏋滄垜浠敤(+ 4 5)鏉ヤ唬鏇縜rg1,
閭d箞, 紼嬪簭浼氬厛姹傚嚭緇撴灉, 灝辨槸9, 鐒跺悗鎶?浼犻掔粰鍑芥暟銆傚畯鐨勫伐浣滄柟寮忓拰鍑芥暟綾諱技銆備富瑕?br>鐨勫樊鍒槸, 瀹忕殑鍙傛暟鍦ㄤ唬鍏ユ椂涓嶆眰鍊箋?br>
    (macro-name (+ 4 5))

榪欓噷, (+ 4 5)浣滀負涓涓〃浼犻掔粰瀹? 鐒跺悗瀹忓氨鍙互浠繪剰澶勭悊榪欎釜琛? 褰撶劧涔熷彲浠ュ瀹冩眰
鍊箋傚畯鐨勮繑鍥炲兼槸涓涓〃, 鐒跺悗鏈夌▼搴忎綔涓轟唬鐮佹潵鎵ц銆傚畯鎵鍗犵殑浣嶇疆, 灝辮鏇挎崲涓鴻繖涓?br>緇撴灉浠g爜銆傛垜浠彲浠ュ畾涔変竴涓畯鎶婃暟鎹浛鎹負浠繪剰浠g爜, 姣旀柟璇? 鏇挎崲涓烘樉紺烘暟鎹粰鐢ㄦ埛
鐨勪唬鐮併?br>
榪欏拰鍏冪紪紼? 浠ュ強鎴戜滑瑕佸仛鐨勪換鍔¤〃紼嬪簭鏈変粈涔堝叧緋誨憿? 瀹為檯涓? 緙栬瘧鍣ㄤ細鏇挎垜浠伐浣?
璋冪敤鐩稿簲鐨勫畯銆傛垜浠墍瑕佸仛鐨? 浠呬粎鏄垱寤轟竴涓妸鏁版嵁杞崲涓洪傚綋浠g爜鐨勫畯銆?br>
渚嬪, 涓婇潰鏇劇粡灝嗚繃鐨凜鐨勬眰涓夋鏂圭殑瀹? 鐢↙isp鏉ュ啓鏄繖鏍峰瓙:

    (defmacro triple (x)
        `(+ ~x ~x ~x))

(璇戞敞: 鍦–ommon Lisp涓? 姝ゅ鐨勫崟寮曞彿搴斿綋鏄弽鍗曞紩鍙? 鎰忔濇槸瀵硅〃涓嶆眰鍊? 浣嗗彲浠ュ
琛ㄤ腑鏌愬厓绱犳眰鍊? 璁板彿~琛ㄧず瀵瑰厓绱爔姹傚? 榪欎釜姹傚艱鍙峰湪Common Lisp涓簲褰撴槸閫楀彿銆?br>鍙嶅崟寮曞彿鍜屽崟寮曞彿鐨勫尯鍒槸, 鍗曞紩鍙鋒爣璇嗙殑琛? 鍏朵腑鐨勫厓绱犻兘涓嶆眰鍊箋傝繖閲屼綔鑰呮墍鐢ㄧ殑璁?br>鍙鋒槸鑷繁鍙戞槑鐨勪竴縐峀isp鏂硅█Blaise, 鍜宑ommon lisp鐣ユ湁涓嶅悓, 浜嬪疄涓? 鍙戞槑鏂硅█鏄?br>lisp楂樻墜鐙湁鐨勪箰瓚? 寰堝鐙傜儹鍒嗗瓙閮界儹琛瘋繖鏍峰仛銆傛瘮濡侾aul Graham灝卞彂鏄庝簡ARC, 璁稿
璁板彿姣斾紶緇熺殑Lisp綆媧佸緱澶? 鏄懼緱姣旇緝鐜頒唬)

鍗曞紩鍙風殑鐢ㄥ鏄姝㈠琛ㄦ眰鍊箋傛瘡嬈$▼搴忎腑鍑虹幇triple鐨勬椂鍊?

    (triple 4)

閮戒細琚浛鎹㈡垚:

    (+ 4 4 4)

鎴戜滑鍙互涓轟換鍔¤〃紼嬪簭鍐欎竴涓畯, 鎶婁換鍔℃暟鎹漿鎹負鍙墽琛岀爜, 鐒跺悗鎵ц銆傚亣瀹氭垜浠殑杈?br>鍑烘槸鍦ㄦ帶鍒跺彴:

    (defmacro item (priority note)
        `(block
            (print stdout tab "Prority: " ~(head (tail priority)) endl)
            (print stdout tab "Note: " ~note endl endl)))

鎴戜滑鍒涢犱簡涓涓潪甯稿皬鐨勬湁闄愮殑璇█鏉ョ鐞嗗祵鍦↙isp涓殑浠誨姟琛ㄣ傝繖涓璦鍙敤鏉ヨВ鍐崇壒
瀹氶鍩熺殑闂, 閫氬父縐頒箣涓篋SLs(鐗瑰畾棰嗗煙璇█, 鎴栦笓鐢ㄩ鍩熻璦)銆?br>
鐗瑰畾棰嗗煙璇█

鏈枃璋堝埌浜嗕袱涓壒瀹氶鍩熻璦, 涓涓槸Ant, 澶勭悊杞歡鏋勯犮備竴涓槸娌¤搗鍚嶅瓧鐨? 鐢ㄤ簬澶?br>鐞嗕換鍔¤〃銆備袱鑰呯殑宸埆鍦ㄤ簬, Ant鏄敤XML, XML瑙f瀽鍣? 浠ュ強Java璇█鍚堝湪涓璧鋒瀯閫犲嚭鏉?br>鐨勩傝屾垜浠殑榪蜂綘璇█鍒欏畬鍏ㄥ唴宓屽湪Lisp涓? 鍙秷鍑犲垎閽熷氨鍋氬嚭鏉ヤ簡銆?br>
鎴戜滑宸茬粡璇磋繃浜咲SL鐨勫ソ澶? 榪欎篃灝辨槸Ant鐢╔ML鑰屼笉鐩存帴鐢↗ava鐨勫師鍥犮傚鏋滀嬌鐢↙isp,
鎴戜滑鍙互浠繪剰鍒涘緩DSL, 鍙鎴戜滑闇瑕併傛垜浠彲浠ュ垱寤虹敤浜庣綉绔欑▼搴忕殑DSL, 鍙互鍐欏鐢ㄦ埛
娓告垙, 鍋氬浐瀹氭敹鐩婅錘鏄?fixed income trade), 瑙e喅铔嬬櫧璐ㄦ姌鍙犻棶棰? 澶勭悊浜嬪姟闂, 絳?br>絳夈傛垜浠彲浠ユ妸榪欎簺鍙犳斁鍦ㄤ竴璧? 閫犲嚭涓涓璦, 涓撻棬瑙e喅鍩轟簬緗戠粶鐨勮錘鏄撶▼搴? 鏃㈡湁緗?br>緇滆璦鐨勪紭鍔? 鍙堟湁璐告槗璇█鐨勫ソ澶勩傛瘡澶╂垜浠兘浼氭敹鑾瘋繖縐嶆柟娉曞甫緇欐垜浠殑鐩婂, 榪滆繙
瓚呰繃Ant鎵鑳界粰浜堟垜浠殑銆?br>
鐢―SL瑙e喅闂, 鍋氬嚭鐨勭▼搴忕簿綆, 鏄撲簬緇存姢, 瀵屾湁寮規с傚湪Java閲岄潰, 鎴戜滑鍙互鐢ㄧ被鏉?br>澶勭悊闂銆傝繖涓ょ鏂規硶鐨勫樊鍒湪浜? Lisp浣挎垜浠揪鍒頒簡涓涓洿楂樺眰嬈$殑鎶借薄, 鎴戜滑涓嶅啀鍙?br>璇█瑙f瀽鍣ㄦ湰韜殑闄愬埗, 姣旇緝涓涓嬬敤Java搴撶洿鎺ュ啓鐨勬瀯閫犺剼鏈拰鐢ˋnt鍐欑殑鏋勯犺剼鏈叾闂?br>鐨勫樊鍒傚悓鏍風殑, 姣旇緝涓涓嬩綘浠ュ墠鎵鍋氱殑宸ヤ綔, 浣犲氨浼氭槑鐧絃isp甯︽潵鐨勫ソ澶勩?br>
鎺ヤ笅鏉?br>
瀛︿範Lisp灝卞儚鎴樹簤涓簤澶哄北澶淬傚敖綆″湪鐢佃剳縐戝棰嗗煙, Lisp宸茬粡綆楁槸涓闂ㄥ彜鑰佺殑璇█, 鐩?br>鍒扮幇鍦ㄤ粛鐒跺緢灝戞湁浜虹湡鐨勬槑鐧借鎬庢牱緇欏垵瀛﹁呰鎺圠isp銆傚敖綆isp鑰佹墜浠敖浜嗗緢澶у姫鍔?
浠婂ぉ鏂版墜瀛︿範Lisp浠嶇劧鏄洶闅鵑噸閲嶃傚ソ鍦ㄧ幇鍦ㄤ簨鎯呮鍦ㄥ彂鐢熷彉鍖? Lisp鐨勮祫婧愭鍦ㄨ繀閫熷
鍔? 闅忕潃鏃墮棿鎺ㄧЩ, Lisp灝嗕細瓚婃潵瓚婂彈鍏蟲敞銆?br>
Lisp浣夸漢瓚呰秺騫沖焊, 璧板埌鍓嶆部銆傚浼歀isp鎰忓懗鐫浣犺兘鎵懼埌鏇村ソ鐨勫伐浣? 鍥犱負鑱槑鐨勯泧涓諱細
琚綘涓庝紬涓嶅悓鐨勬礊瀵熷姏鎵鎵撳姩銆傚浼歀isp涔熷彲鑳芥剰鍛崇潃鏄庡ぉ浣犲彲鑳戒細琚В闆? 鍥犱負浣犳繪槸
寮鴻皟, 濡傛灉鍏徃鎵鏈夎蔣浠墮兘鐢↙isp鍐? 鍏徃灝嗕細濡備綍鍗撹秺, 鑰岃繖浜涜瘽浣犵殑鍚屼簨浼氬惉鐑︾殑銆?br>Lisp鍊煎緱鍔姏瀛︿範鍚? 閭d簺宸茬粡瀛︿細Lisp鐨勪漢閮借鍊煎緱, 褰撶劧, 榪欏彇鍐充簬浣犵殑鍒ゆ柇銆?br>
浣犵殑鐪嬫硶鍛?

榪欑瘒鏂囩珷鍐欏啓鍋滃仠, 鐢ㄤ簡鍑犱釜鏈堟墠鏈緇堝畬鎴愩傚鏋滀綘瑙夊緱鏈夎叮, 鎴栬呮湁浠涔堥棶棰? 鎰忚鎴?br>寤鴻, 璇風粰鎴戝彂閭歡coffeemug@gmail.com, 鎴戜細寰堥珮鍏存敹鍒頒綘鐨勫弽棣堛?


Vincent 2011-02-15 09:29 鍙戣〃璇勮
]]>
浜掓枼閿佷笌鏉′歡鍙橀噺鐨勮涔?/title><link>http://www.shnenglu.com/ccl0326/archive/2010/12/16/136638.html</link><dc:creator>Vincent</dc:creator><author>Vincent</author><pubDate>Thu, 16 Dec 2010 07:35:00 GMT</pubDate><guid>http://www.shnenglu.com/ccl0326/archive/2010/12/16/136638.html</guid><wfw:comment>http://www.shnenglu.com/ccl0326/comments/136638.html</wfw:comment><comments>http://www.shnenglu.com/ccl0326/archive/2010/12/16/136638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/ccl0326/comments/commentRss/136638.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ccl0326/services/trackbacks/136638.html</trackback:ping><description><![CDATA[<p>浜掓枼閿佷笌鏉′歡鍙橀噺鐨勮涔?/p> <p><br>浜掓枼閿侊紝鎴戣瀵逛竴鍧楀叡浜暟鎹搷浣滐紝浣嗘槸鎴戞曞悓鏃朵綘涔熸搷浣滐紝閭e氨涔卞浜嗭紝鎵浠ユ垜瑕佸姞閿侊紝榪欎釜鏃跺欐垜灝卞紑濮嬫搷浣滆繖鍧楀叡浜暟鎹紝鑰屼綘榪涗笉浜嗕復鐣屽尯錛岀瓑鎴戞搷浣滃畬浜嗭紝鎶婇攣涓㈡帀錛屼綘灝卞彲浠ユ嬁鍒伴攣榪涘幓鎿嶄綔浜?/p> <p> </p> <p>鏉′歡鍙橀噺錛屾垜瑕佺湅涓鍧楀叡浜暟鎹噷鏌愪竴涓潯浠舵槸鍚﹁揪鎴愶紝鎴戝緢鍏沖績榪欎釜錛屽鏋滄垜鐢ㄤ簰鏂ラ攣錛屼笉鍋滅殑榪涘叆涓寸晫鍖虹湅鏉′歡鏄惁杈炬垚錛岃繖綆鐩村お鎮插墽浜嗭紝榪欐牱涓鏉ワ紝鎴戦啋鐨勬椂鍊欎細鍗燙PU璧勬簮錛屼絾鏄嵈騫蹭笉浜嗕粈涔堟椂錛屽彧鏄綣佺殑鐪嬫潯浠舵槸鍚﹁揪鎴愶紝鑰屼笖榪欏鍒漢鏉ヨ涔熸槸涓縐嶆崯澶憋紝鎴戞瘡嬈″姞涓婇攣錛屽埆浜哄氨榪涗笉浜嗕復鐣屽尯騫蹭笉浜嗕簨浜嗐傚ソ鍚э紝杞鎬繪槸鐥涜嫤鐨勶紝鍜辯瓑鍒漢閫氱煡鍚э紝浜庢槸鏉′歡鍙橀噺鍑虹幇浜嗭紝鎴戜緷鏃ц鎷夸釜閿侊紝榪涗簡涓寸晫鍖猴紝鐪嬪埌浜嗗叡浜暟鎹紝鍙戠幇錛屽挦錛屾潯浠惰繕涓嶅埌錛屼簬鏄垜灝辮皟鐢╬thread_cond_wait(),鍏堟妸閿佷涪浜嗭紝濂借鍒漢鍙互鍘誨鍏變韓鏁版嵁鍋氭搷浣滐紝鐒跺悗鍛紵鐒跺悗鎴戝氨鐫′簡錛岀洿鍒扮壒瀹氱殑鏉′歡鍙戠敓錛屽埆浜轟慨鏀瑰畬浜嗗叡浜暟鎹紝緇欐垜鍙戜簡涓秷鎭紝鎴戝張閲嶆柊鎷垮埌浜嗛攣錛岀戶緇共淇鴻騫茬殑浜嬫儏浜?#8230;…</p> <p> </p> <img src ="http://www.shnenglu.com/ccl0326/aggbug/136638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ccl0326/" target="_blank">Vincent</a> 2010-12-16 15:35 <a href="http://www.shnenglu.com/ccl0326/archive/2010/12/16/136638.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>綰跨▼鍐呭箷http://www.shnenglu.com/ccl0326/archive/2010/12/16/136635.htmlVincentVincentThu, 16 Dec 2010 06:37:00 GMThttp://www.shnenglu.com/ccl0326/archive/2010/12/16/136635.htmlhttp://www.shnenglu.com/ccl0326/comments/136635.htmlhttp://www.shnenglu.com/ccl0326/archive/2010/12/16/136635.html#Feedback0http://www.shnenglu.com/ccl0326/comments/commentRss/136635.htmlhttp://www.shnenglu.com/ccl0326/services/trackbacks/136635.html涓.
鍦ㄤ富綰跨▼涓皟鐢?br>(1)pthread_create( &thread_a, NULL, thread_function, NULL);
(2)pthread_create( &thread_b, NULL, thread_function, NULL);
(3)pthread_create( &thread_c, NULL, thread_function, NULL);

 


鍦ㄦ2澶勶紝綰跨▼b鍙互璁や負綰跨▼a宸茬粡瀛樺湪
浣嗘槸鍦ㄦ2鎵ц瀹屼互鍚庯紝涓葷嚎紼嬪茍涓嶇煡閬撶嚎紼媋鍜岀嚎紼媌璋佸厛鎵ц錛屽茍涓嶈兘鍦ㄨ繖閲屽仛綰跨▼a鍏堜簬綰跨▼b鎵ц鐨勫亣璁?br>鍥犱負綰跨▼鐨勬椂闂寸墖鍒嗛厤鍦ㄨ繖閲屾槸鏈煡鐨?/p>

 

浜?
myglobal=myglobal+1;
myglobal鏄叏灞鍙橀噺,澶氫釜綰跨▼鍚屾椂鍦ㄥ仛绱姞鐨勫伐浣?br>鏄惁搴旇涓簃yglobal=myglobal+1;鍔犻攣鍛紵
鑲畾鏄簲璇ュ姞閿?br>棣栧厛鎴戜滑騫朵笉鐭ラ亾myglobal=myglobal+1;鍙堟垨鏄?+ myglobal;鑳藉惁琚紪璇戞垚涓鏉℃眹緙栨寚浠?br>灝辯畻濡傛++ myglobal琚紪璇戞垚浜嗗師瀛愭搷浣?br>浣嗚冭檻鍒板鏍稿鐞嗗櫒錛屽叾鍘熷瓙鎿嶄綔鍙兘鍦ㄥCPU涓婂悓鏃跺鐞?br>鍏剁粨鏋滀粛鐒舵槸涓嶅彲棰勪及鐨?/p>


浠ヤ笂鍐呭杞堪鑷猦ttp://www.ibm.com/developerworks/cn/linux/thread/posix_thread2/index.html



Vincent 2010-12-16 14:37 鍙戣〃璇勮
]]>
絎?绔?http://www.shnenglu.com/ccl0326/archive/2010/12/16/136612.htmlVincentVincentThu, 16 Dec 2010 03:39:00 GMThttp://www.shnenglu.com/ccl0326/archive/2010/12/16/136612.htmlhttp://www.shnenglu.com/ccl0326/comments/136612.htmlhttp://www.shnenglu.com/ccl0326/archive/2010/12/16/136612.html#Feedback0http://www.shnenglu.com/ccl0326/comments/commentRss/136612.htmlhttp://www.shnenglu.com/ccl0326/services/trackbacks/136612.htmlUNIX緗戠粶緙栫▼絎旇

鍋氫笅絎旇錛屼互渚涗笉鏃朵箣闇:)

絎?/span>4绔?/span>

 

 

socket(int family,               int type,                      int protocol);

闈炶礋鎻忚堪瀛?/span>-鎴愬姛錛?/span>-1-鍑洪敊

            鍗忚鏃?/span>                   濂楁帴鍙g被鍨?/span>                              鍗忚綾誨瀷甯擱噺鍊?/span>

            AF_INET  IPv4鍗忚 SOCK_STREAM 瀛楄妭嫻?/span>           IPPROTO_TCP  TCP浼犺緭鍗忚

            AF_INET6 IPv6鍗忚    SOCK_DGRAM  鏁版嵁鎶?/span>              IPPROTO_UDP  UDP浼犺緭鍗忚

           AF_LOCAL UNIX鍩熷崗璁?/span>  SOCK_SEQPACKET鏈夊簭鍒嗙粍          IPPROTO_SCTP SCTP浼犺緭鍗忚

            AF_ROUTE 璺敱濂楁帴鍙?/span>  SOCK_RAW    鍘熷濂楁帴鍙?/span>

            AF_KEY   瀵嗛挜濂楁帴鍙?/span>

 

 

 

protocol鍙互璁句負0錛屼互閫夋嫨鎵緇欏畾鐨?/span>family鍜?/span>type緇勫悎鐨勭郴緇熺己鐪佸?/span>

 

 

connect(int sockfd,           const struct sockaddr *servaddr,    socklen_t addrlen);

         瑕佽繛鎺ョ殑濂楁帴鍙f弿榪板瓧         鎸囧悜鎻忚堪榪炴帴鍦板潃鐨勫鎺ュ彛鍦板潃鐨勭粨鏋勬寚閽?/span>     鎸囧悜濂楁帴鍙e湴鍧鐨勭粨鏋勫ぇ灝?/span>        

0-鎴愬姛錛?/span>-1-澶辮觸

 

 

ETIMEDOUT閿欒錛屽鎴風鏈敹鍒?/span>SYN鍒嗚妭鐨勫搷搴?/span>

鍦?/span>4.4BSD鍐呮牳涓?/span>SYN鍒嗚妭浼氬湪棣栨鍙戝嚭鍚庣殑6縐掞紝24縐掑悗鍐嶅彂鍑?/span>SYN鍒嗚妭錛屽鏋?/span>75縐掑悗浠嶆棤鍝嶅簲錛岃繑鍥為敊璇?/span>(TCPv2 p828)

 

ECONNERFUSED閿欒錛屽鎴風鏀跺埌RST鍒嗚妭鏃跺氨榪斿洖閿欒

鍏朵腑浜х敓RST鐨勪笁涓潯浠舵槸錛?/span>

1.鐩殑鍦頒負鏌愮鍙g殑SYN鍒拌揪錛岀劧鑰岃绔彛涓婃病鏈夋鍦ㄧ洃鍚殑鏈嶅姟鍣?/span>

2.TCP鎯沖彇娑堜竴涓凡鏈夎繛鎺?/span>

3.TCP鎺ュ彈鍒頒竴涓牴鏈笉瀛樺湪鐨勮繛鎺ヤ笂鐨勫垎鑺?/span>(TCPv1 246-250)

 

EHOSTUNREACH鎴?/span>ENETUNREACH閿欒

鍦ㄥ彂鍑?/span>SYN鍒嗚妭鐨勪腑闂存煇涓礬鐢卞櫒寮曞彂浜嗙洰鐨勫湴涓嶅彲杈劇殑ICMP閿欒錛屽鎴蜂富鏈轟繚瀛樿娑堟伅錛屼絾浠嶇劧緇х畫鍙戦?/span>SYN錛岀洿鍒?/span>75縐掑悗錛屽鏋滀粛鏈湁鍥炲簲錛屽垯鎶婇敊璇秷鎭繑鍥炵粰榪涚▼銆?/span>

浠ヤ笅鎯呭喌涔熶細浜х敓姝ょ被閿欒

1.鏈湴緋葷粺鐨勮漿鍙戣〃錛屾牴鏈病鏈夊埌杈捐繙鍦扮郴緇熺殑璺緞

2.connect璋冪敤鏍規湰涓嶇瓑寰呭氨榪斿洖(闈為樆濉?/span>?)

 

娉?/span>:connect澶辮觸鍒欒濂楁帴鍙d笉鍐嶅彲鐢紝蹇呴』鍏抽棴銆?/span>

 

 

bind(int sockfd,                  const struct sockaddr *myaddr,               socklen_t addrlen);

0-鎴愬姛,-1澶辮觸

     瑕佺粦瀹氱殑濂楁帴鍙f弿榪板瓧       鎸囧悜鎻忚堪瑕佺粦瀹氱殑濂楁帴鍙e湴鍧鐨勭粨鏋勬寚閽?/span>         鎸囧悜濂楁帴鍙e湴鍧鐨勭粨鏋勫ぇ灝?/span>

 

濡傛灉涓涓?/span>TCP瀹㈡埛绔垨鏈嶅姟鍣ㄦ湭鏇捐皟鐢?/span>bind鎹嗙粦涓涓鍙o紝褰撹皟鐢?/span>connect鎴?/span>listen鏃訛紝鍐呮牳浼氫負鐩稿簲鐨勫鎺ュ彛閫夋嫨涓涓復鏃剁鍙?/span>

榪涚▼鍙妸鐗瑰畾IP鍦板潃鎹嗙粦鍒板畠鐨勫鎺ュ彛涓婏紝榪欎釜鐗瑰畾IP蹇呴』鏄富鏈虹殑緗戠粶鎺ュ彛涔嬩竴銆傚浜?/span>TCP瀹㈡埛錛岃繖灝遍檺瀹氫簡濂楁帴鍙e彧鎺ュ彈鐩殑鍦頒負榪欎釜鐗瑰畾IP鐨勫鎴瘋繛鎺ャ?/span>

TCP瀹㈡埛閫氳繃涓嶆妸IP鎹嗙粦鍒板畠鐨勫鎺ュ彛涓婏紝鍐呮牳浼氭牴鎹墍鐢ㄥ鍑虹綉緇滄帴鍙f潵閫夋嫨婧?/span>IP鍦板潃錛岃屾墍鐢ㄥ鍑虹殑鎺ュ彛鍒欏彇鍐充簬鍒拌揪鏈嶅姟鍣ㄦ墍闇鐨勮礬寰勩?/span>(TCPv2 p737)

濡傛灉TCP鏈嶅姟鍣ㄦ病鏈夋妸IP鍦板潃鎹嗙粦鍒板畠鐨勫鎺ュ彛涓婏紝鍐呮牳灝辨妸瀹㈡埛鍙戦佺殑SYN鐨勫IP鍦板潃浣滀負鏈嶅姟鍣ㄧ殑婧愬湴鍧銆?/span>(TCPv2 p943)

 

EADDRINUSE閿欒 鍦板潃宸蹭嬌鐢?/span>

 

 

 

listen(   int sockfd ,                         int backlog);

0-鎴愬姛錛?/span>-1澶辮觸

      瑕佽漿鎹㈡垚琚姩鐨勫鎺ュ彛     鎺掗槦鐨勬渶澶у凡榪炴帴涓暟

 

 

1.鏈畬鎴愯繛鎺ラ槦鍒?/span>

澶勪簬SYN_RCVD鐘舵佺殑濂楁帴鍙i槦鍒?/span>

2.宸插畬鎴愯繛鎺ラ槦鍒?/span>

澶勪簬ESTABLISHED鐘舵佺殑濂楁帴鍙i槦鍒?/span>

 

鍦ㄩ槦鍒楁弧鏃訛紝鏈嶅姟鍣ㄥ鏋滄敹鍒?/span>SYN鍒嗚妭錛屼細蹇界暐鎺夛紝鍥犱負闃熷垪婊℃槸鏆傛椂鎬х殑錛屽拷鐣ユ帀鍙互浠ユ湡寰呭鎴風鐨勫啀嬈¤繛鎺ャ傝屽鏋滆繑鍥?/span>RST鍒嗚妭錛屼細鏃跺鎴風鏀懼純榪炴帴銆?/span>

 

鍦ㄤ笁嬈℃彙鎵嬪畬鎴愪箣鍚庯紝浣嗗湪鏈嶅姟鍣ㄨ皟鐢?/span>accept涔嬪墠鍒拌揪鐨勬暟鎹紝搴旀湁鏈嶅姟鍣?/span>TCP鎺掗槦錛屾渶澶ф暟鎹噺涓虹浉搴旂殑宸茶繛鎺ュ鎺ュ彛鐨勬帴鍙楃紦鍐插尯澶у皬銆?br>


Int accept(        int sockfd,                  struct sockaddr* cliaddr,                             socklen_t* addrlen);

闈炶礋鎻忚堪瀛?/span>-鎴愬姛,-1-澶辮觸

                            琚姩鐨勭洃鍚鎺ュ彛  瀵圭鐨勫鎺ュ彛鍦板潃鐨勭粨鏋?/span>         瀵圭鐨勫鎺ュ彛鍦板潃鐨勭粨鏋勫ぇ灝?/span>

 

 

Int close(int sockfd);

0-       鎴愬姛,-1-澶辮觸

瑕佸叧闂殑濂楁帴鍙?/span>

 

緙虹渷琛屼負鏄慨鏀瑰鎺ュ彛鏍囪涓哄凡鍏抽棴錛屽嚱鏁頒細绔嬪嵆榪斿洖錛屾鏃惰濂楁帴鍙f弿榪板瓧宸蹭笉鑳藉啀鐢辮繘紼嬩嬌鐢ㄣ傝?/span>TCP灝嗗皾璇曞彂閫佸凡鎺掗槦絳夊緟鍙戦佸埌瀵圭鐨勪換浣曟暟鎹紝鍙戦佸畬姣曞悗寮濮嬫甯哥殑TCP榪炴帴緇堟搴忓垪銆?/span>

 

SO_LINGER濂楁帴鍙i夐」鍙互鏀瑰彉姝ょ己鐪佽涓恒?/span>



Vincent 2010-12-16 11:39 鍙戣〃璇勮
]]>
鎳傚緱http://www.shnenglu.com/ccl0326/archive/2010/12/12/136236.htmlVincentVincentSun, 12 Dec 2010 13:55:00 GMThttp://www.shnenglu.com/ccl0326/archive/2010/12/12/136236.htmlhttp://www.shnenglu.com/ccl0326/comments/136236.htmlhttp://www.shnenglu.com/ccl0326/archive/2010/12/12/136236.html#Feedback0http://www.shnenglu.com/ccl0326/comments/commentRss/136236.htmlhttp://www.shnenglu.com/ccl0326/services/trackbacks/136236.html絎竴嬈″懆鍏懆鏃ュ湪鍔犵彮
絎竴嬈℃媴璧瘋矗浠?br>絎竴嬈℃曡嚜宸變笉琛?br>絎竴嬈℃湁閭d箞涓鐐圭悊瑙e埌搴曚粈涔堟槸涓葷▼
榪欎竴澶╀粎浣滅邯蹇?)



Vincent 2010-12-12 21:55 鍙戣〃璇勮
]]>
娓告垙鏈嶅姟绔▼搴忓憳緹?/title><link>http://www.shnenglu.com/ccl0326/archive/2010/10/19/130461.html</link><dc:creator>Vincent</dc:creator><author>Vincent</author><pubDate>Tue, 19 Oct 2010 08:35:00 GMT</pubDate><guid>http://www.shnenglu.com/ccl0326/archive/2010/10/19/130461.html</guid><wfw:comment>http://www.shnenglu.com/ccl0326/comments/130461.html</wfw:comment><comments>http://www.shnenglu.com/ccl0326/archive/2010/10/19/130461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/ccl0326/comments/commentRss/130461.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/ccl0326/services/trackbacks/130461.html</trackback:ping><description><![CDATA[緹ゅ彿:16043631 宸茬粡250浜轟簡 榪樺樊250<br>甯湅鍙嬪浼犱竴涓?)<br> <img src ="http://www.shnenglu.com/ccl0326/aggbug/130461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/ccl0326/" target="_blank">Vincent</a> 2010-10-19 16:35 <a href="http://www.shnenglu.com/ccl0326/archive/2010/10/19/130461.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[杞琞銆婃繁搴︽帰绱++瀵硅薄妯″瀷銆嬭涔︾瑪璁癧浜宂http://www.shnenglu.com/ccl0326/archive/2010/10/14/129825.htmlVincentVincentThu, 14 Oct 2010 02:36:00 GMThttp://www.shnenglu.com/ccl0326/archive/2010/10/14/129825.htmlhttp://www.shnenglu.com/ccl0326/comments/129825.htmlhttp://www.shnenglu.com/ccl0326/archive/2010/10/14/129825.html#Feedback0http://www.shnenglu.com/ccl0326/comments/commentRss/129825.htmlhttp://www.shnenglu.com/ccl0326/services/trackbacks/129825.html2002-7-6

3.3 Data Member鐨勫瓨鍙?br>1錛?nbsp;  涓嶇浠涔堟儏鍐碉紝姣忎竴涓猻tatic data member鍙湁涓涓疄浣擄紝鏀懼湪紼嬪簭鐨刣ata segment涔嬩腑錛屾瘡嬈$▼搴忓彇鐢╯tatic member錛屼笉綆℃槸閫氳繃operator::榪樻槸member selection operator錛岄兘浼氳鍐呴儴杞寲涓哄璇ュ敮涓extern瀹炰綋鐨勭洿鎺ュ弬鑰冩搷浣溿傛瘡涓涓猻tatic member鐨勫瓨鍙栦互鍙婁笌class鐨勫叧鑱斾笉浼氬鑷翠換浣曟墽琛屾椂闂存垨絀洪棿涓婄殑棰濆璐熸媴銆傚鏋滄湁涓や釜classes錛屾瘡涓涓兘澹版槑浜嗕竴涓猻tatic member freeList錛岄偅涔堝綋瀹冧滑閮芥斁鍦ㄧ▼搴忕殑data segment鏃訛紝灝變細瀵艱嚧鍚嶇О鍐茬獊錛岀紪璇戝櫒鐨勮В鍐蟲柟娉曟槸浣跨敤name-mangling錛屾殫涓姣忎竴涓猻tatic data member緙栫爜錛屼互鑾峰緱涓涓嫭涓鏃犱簩鐨勭▼搴忚瘑鍒唬鐮併?/p>

2錛?nbsp;  鏈夊灝戜釜緙栬瘧鍣紝灝辨湁澶氬皯縐峮ame-mangling鍋氭硶錛屼換浣昻ame-mangling鍋氭硶閮芥湁涓や釜瑕佺偣錛?/p>

ü          涓縐嶇畻娉曪紝鎺ㄥ鍑虹嫭涓鏃犱簩鐨勫悕縐幫紱

ü          濡傛灉緙栬瘧緋葷粺鎴栬呯幆澧冨伐鍏峰繀欏誨拰浣跨敤鑰呬氦璋堬紝閭d簺鐙竴鏃犱簩鐨勫悕縐板彲琚交鏄撴帹瀵煎洖鍘熷厛鐨勫悕縐般?/p>

3錛?nbsp;  鍙栦竴涓猻tatic data member鐨勫湴鍧錛屼細寰楀埌涓涓寚鍚戝叾鏁版嵁綾誨瀷鐨勫父閲忔寚閽堬紝鑰屼笉鏄寚鍚戝叾class member鐨勬寚閽堛?/p>

4錛?nbsp;  nonstatic data members鐩存帴鏀懼湪姣忎竴涓猚lass object涔嬩腑錛岄櫎闈炵粡榪囨樉紺虹殑explicit鎴栭殣鍚殑implicit class object錛屾病鏈夊姙娉曠洿鎺ュ瓨鍙栧畠浠傚彧瑕佺▼搴忓憳鍦ㄤ竴涓猰ember function涓洿鎺ュ鐞嗕竴涓猲onstatic data member錛屾墍璋搃mplicit class object灝變細鍙戠敓錛屽叾瀹炶川鏄紪璇戝櫒浼氫負榪欎釜member function澧炴坊涓涓猚onst this鎸囬拡錛岃屽湪鍑芥暟浣撳唴閫氳繃榪欎釜this鎸囬拡鏉ュ瓨鍙杗ontatic data member銆?/p>

5錛?nbsp;  嬈插涓涓猲onstatic data member榪涜瀛樺彇鎿嶄綔錛岀紪璇戝櫒闇瑕佹妸class object鐨勮搗濮嬪湴鍧鍔犱笂data member鐨勭紪璇戦噺offset錛屽鍦板潃&someObject.someMember絳変簬&someobject + (&theClass::someMember – 1);鎸囧悜data member鐨勬寚閽堬紝鍏秓ffset鍊兼繪槸浼氳鍔犱笂1錛岃繖鏍峰彲浠ヤ嬌緙栬瘧緋葷粺鍖哄垎鍑轟竴涓寚鍚慶lass絎竴涓猟ata member鐨勬寚閽堝拰涓涓病鏈夋寚鍚戜換浣昫ata member鐨勬寚閽堛?/p>

6錛?nbsp;  姣忎竴涓猲onstatic data member鐨勫亸縐婚噺鍦ㄧ紪璇戞椂鏈熷嵆鍙幏鐭ワ紝鐢氳嚦濡傛灉member灞炰簬涓涓崟涓鎴栧閲嶇戶鎵夸綋緋諱腑base class subobject涔熸槸涓鏍鳳紝鍥犳鍏跺瓨鍙栨晥鐜囧拰涓涓狢 struct member鎴栦竴涓猲onderived class鐨刴ember鐨勫瓨鍙栨晥鐜囨槸涓鏍風殑銆備絾鏄湪铏氭嫙緇ф壙鐨勬儏鍐典笅灝卞彟褰撳埆璁轟簡錛氬鏋滆nonstatic data member鏄竴涓獀irtual base class鐨刴ember錛屽茍涓旈氳繃鎸囬拡鏉ュ瓨鍙栫殑璇濓紝鍦ㄧ紪璇戞椂鏈熷氨涓嶄細寰楃煡榪欎釜member鐪熸鐨刼ffset浣嶇疆錛屾墍浠ヨ繖涓瓨鍙栨搷浣滃繀欏誨歡榪熻嚦鎵ц鏈燂紝緇忕敱涓涓澶栫殑闂存帴瀵煎紩鎵嶈兘澶熻В鍐熾?/p>

2002-7-7

3.4 “緇ф壙”涓嶥ata Member
1錛?nbsp;  鍦–++緇ф壙妯″瀷涓紝涓涓猟erived class object鎵琛ㄧ幇鍑烘潵鐨勪笢瑗匡紝鏄叾鑷繁鐨刴embers鍔犱笂鍏禸ase classes members鐨勬誨拰銆侰++騫舵湭瑙勫畾derived class members鍜宐ase classes members鐨勬帓鍒楁搴忋備笉榪囷紝鍦ㄥぇ閮ㄥ垎緙栬瘧鍣ㄤ笂錛岄櫎virtual base class澶栵紝base class members鎬繪槸鍏堝嚭鐜般?/p>

2錛?nbsp;  涓鑸岃█錛屽叿浣撶戶鎵縞oncrete inheritance騫朵笉浼氬鍔犵┖闂存垨瀛樺彇鏃墮棿涓婄殑棰濆璐熸媴銆?/p>

3錛?nbsp;  鎶婁袱涓師鏈嫭绔嬩笉鐩稿共鐨刢lasses鍑戞垚涓瀵箃ype/subtype錛屽茍甯︽湁緇ф壙鍏崇郴瀹規槗鐘袱涓敊璇備竴鏄彲鑳戒細閲嶅璁捐涓浜涚浉鍚屾搷浣滅殑鍑芥暟錛屼竴鑸岃█錛岄夋嫨鏌愪簺鍑芥暟鍋氭垚inline鍑芥暟錛屾槸璁捐class鐨勪竴涓噸瑕佽棰橈紱浜屾槸鎶婁竴涓猚lass鍒嗚В涓哄灞傦紝鏈夊彲鑳戒細涓轟簡琛ㄧ幇class浣撶郴涔嬫娊璞″寲錛屽洜涓虹紪璇戝櫒鐨勮竟鐣岃皟鏁磋岃啫鑳鎵闇絀洪棿銆傚叾鏍規湰鍘熷洜鏄疌++淇濊瘉鍑虹幇鍦╠erived class涓殑base class subobject鏈夊叾瀹屾暣鍘熸牱鎬с?/p>

4錛?nbsp;  C++鏈鍒濋棶涓栨椂錛岃澶氱紪璇戝櫒鎶妚ptr鏀懼湪class object鐨勫熬绔紝榪欐牱鍙互淇濈暀base class C struct鐨勫璞″竷灞銆傛鍚庯紝鏌愪簺緙栬瘧鍣ㄥ紑濮嬫妸vptr鏀懼湪class object鐨勫紑濮嬪錛岃繖鏍蜂細緇欏閲嶇戶鎵夸笅閫氳繃鎸囧悜class members涔嬫寚閽堣皟鐢╲irtual function甯︽潵涓浜涘府鍔╋紝鍚﹀垯錛屽湪鎵ц鏈熶笉浠呭繀欏誨濡ヤ粠class object璧風偣澶勫紑濮嬮噺璧風殑offset錛岃屼笖蹇呴』澶囧Εclass vptr涔嬮棿鐨刼ffset銆?/p>

5錛?nbsp;  鍗曚竴緇ф壙鎻愪緵浜嗕竴縐嶈嚜鐒跺鎬佺殑褰㈡侊紝鏄叧浜巆lass浣撶郴涓璪ase type鍜宒erived type涔嬮棿鐨勮漿鎹€備竴鑸潵璇達紝base class鍜宒erived class objects閮芥槸浠庣浉鍚岀殑鍦板潃寮濮嬨備絾鑻ュ皢vptr鏀懼湪class object鐨勮搗濮嬪錛屽鏋渂ase class娌℃湁virtual function鑰宒erived class鏈夛紝閭d箞鍗曚竴緇ф壙鐨勮嚜鐒跺鎬佸氨浼氭墦鐮淬傛鏃訛紝鎶婁竴涓猟erived object杞崲涓哄叾base綾誨瀷灝遍渶瑕佺紪璇戝櫒鐨勪粙鍏ワ紝鐢ㄤ互璋冩暣鍦板潃銆傝屽湪鏃㈡槸澶氶噸緇ф壙鍙堟槸铏氭嫙緇ф壙鐨勬儏鍐典笅錛岀紪璇戝櫒鐨勪粙鍏ュ垯鏇存湁蹇呰銆?/p>

6錛?nbsp;  澶氶噸緇ф壙鐨勫鏉傚害鍦ㄤ簬derived class鍜屽叾涓婁竴涓猙ase class涔冭嚦涓婁笂涓涓猙ase class涔嬮棿鐨勯潪鑷劧鍏崇郴錛屽叾涓昏闂鍙戠敓鍦╠erived class objects鍜屽叾絎簩鎴栧悗緇х殑base class objects涔嬮棿鐨勮漿鎹€傚涓涓閲嶆淳鐢熷璞★紝灝嗗叾鍦板潃鎸囧畾緇欐渶宸︾base class鐨勬寚閽堬紝鎯呭喌灝嗗拰鍗曚竴緇ф壙鐩稿悓錛岃岀浜屼釜鎴栧悗緇х殑base class鐨勫湴鍧鎸囧畾鎿嶄綔鍒欓渶瑕佷慨鏀瑰湴鍧錛屽姞涓婃垨鍑忓幓錛堣嫢鏄痙owncast錛変粙浜庝腑闂寸殑base class subobjects鐨勫ぇ灝忋侰++騫舵湭瑕佹眰澶氶噸緇ф壙鏃禿erived class object涓悇涓猙ase class subjectes鐨勬帓鍒楁搴忥紝鐩墠鍚勪釜緙栬瘧鍣ㄩ兘鏄牴鎹0鏄庢搴忔潵鎺掑垪瀹冧滑銆?/p>

7錛?nbsp;  class鍐呭鏋滃唴鍚竴涓垨澶氫釜virtual bass class subobjects錛屽皢琚垎鍓蹭負涓ら儴鍒嗭細涓涓笉鍙樺眬閮ㄥ拰涓涓叡浜眬閮ㄣ備笉鍙樺眬閮ㄦ繪槸鎷ユ湁鍥哄畾鐨刼ffset錛屽叾鏁版嵁鐢ㄤ互鎸囧畾鍏變韓灞閮ㄧ殑浣嶇疆錛屽彲浠ョ洿鎺ュ瓨鍙栵紱鑰屽叡浜眬閮ㄨ〃鐜扮殑灝辨槸virtual base class subobject錛屽叾浣嶇疆浼氬洜涓烘瘡嬈$殑媧劇敓鎿嶄綔鑰屽彉鍖栵紝鍙彲闂存帴瀛樺彇銆傚悇瀹剁紪璇戝櫒瀹炵幇鎶鏈箣闂寸殑宸紓灝卞湪浜庨棿鎺ュ瓨鍙栫殑鏂規硶涓嶅悓銆?/p>

8錛?nbsp;  涓鑸岃█錛寁irtual base class鏈鏈夋晥鐨勪竴縐嶈繍鐢ㄦ柟寮忔槸錛氫竴涓病鏈変換浣昫ata member鐨勬娊璞lass銆?/p>

2002-7-14

3.5 瀵硅薄鎴愬憳鐨勬晥鐜?br>濡傛灉娌℃湁鎶婁紭鍖栧紑鍏蟲墦寮錛屽氨寰堥毦鐚滄祴涓涓▼搴忕殑鏁堢巼琛ㄧ幇錛屽洜涓虹▼搴忎唬鐮佹綔鍦ㄦх殑鍙楀埌鏌愪簺涓庣紪璇戝櫒鏈夊叧鐨勪笢瑗跨殑褰卞搷銆傜▼搴忓憳濡傛灉鍏沖績鏁堢巼錛屽簲璇ュ疄闄呮祴璇曪紝涓嶈鍏夊嚟鎺ㄨ鎴栧父璇嗗垽鏂垨鍋囪銆備紭鍖栨搷浣滃茍涓嶄竴瀹氭繪槸鑳藉鏈夋晥榪愯銆?/p>

2002-7-15

3.6 鎸囧悜Data Members鐨勬寚閽?br>鎸囧悜data members鐨勬寚閽堝彲鐢ㄦ潵璇︾粏璋冩煡class members鐨勫簳灞傚竷灞錛屽彲鐢ㄦ潵鍐沖畾vptr鏄斁鍦╟lass鐨勮搗濮嬪榪樻槸灝劇錛岃繕鍙敤鏉ュ喅瀹歝lass涓璦ccess sections鐨勬搴忋?/p>

鍙栦竴涓猲onstatic data member鐨勫湴鍧錛屽皢浼氬緱鍒板畠鍦╟lass鐨刼ffset錛涜屽彇涓涓猻tatic data member鐨勫湴鍧鎴栬呭彇涓涓粦瀹氫簬鐪熸class object韜笂鐨刣ata member鐨勫湴鍧錛屽皢浼氬緱鍒拌member鍦ㄥ唴瀛樹腑鐨勭湡姝e湴鍧銆傝繖涔熸鏄痵omeType someClass::*鍜宻omeTye *娼滃湪鐨勫尯鍒?/p>

2002-7-16

Function璇剰瀛?The Semantics of Function
C++鏀寔涓夌綾誨瀷鐨刴ember functions錛歴tatic銆乶onstatic鍜寁irtual錛屾瘡涓縐嶇被鍨嬬殑璋冪敤鏂瑰紡閮戒笉鍚屻?/p>

4.1 Members鐨勫悇縐嶈皟鐢ㄦ柟寮?br>1錛?nbsp;  C++鐨勮璁″噯鍒欎箣涓渚挎槸nonstatic member function鑷沖皯蹇呴』鍜屼竴鑸殑nonmember function鏈夌潃鐩稿悓鐨勬晥鐜囥傜紪璇戝櫒鍐呴儴浼氬皢member鍑芥暟瀹炰綋杞崲涓哄絳夌殑nonmember鍑芥暟瀹炰綋錛屽叾姝ラ涓猴細

ü          鏀瑰啓鍑芥暟鍘熷瀷signature浠ュ畨鎻掍竴涓澶栫殑鍙傛暟this鍒癿ember function涓紝浣垮緱class object鍙互璋冪敤璇ュ嚱鏁般傚叾涓紝this鏄痗onst鎸囬拡錛岃嫢璇ュ嚱鏁頒負const錛屽垯鍙嶆槧鍦╰his涓婇潰鐨勭粨鏋滄槸this鎸囧悜鐨刣ata涔熶負const錛?/p>

ü          灝嗘瘡涓涓nonstatic data member鐨勫瓨鍙栨搷浣滄敼涓虹粡鐢眛his鎸囬拡鏉ュ瓨鍙栵紱

ü          灝唌ember function閲嶆柊鍐欐垚涓涓閮ㄥ嚱鏁幫紝瀵瑰嚱鏁板悕縐拌繘琛宮angling澶勭悊錛?/p>

姝ゅ悗錛屾瘡涓涓嚱鏁拌皟鐢ㄦ搷浣滀篃閮藉繀欏昏漿鎹紝鐢ㄤ互鎻愪緵鐩稿簲鐨勫疄鍙傘?/p>

2錛?nbsp;  鍏充簬铏氭嫙鍑芥暟鐨勫唴閮ㄨ漿鎹㈡楠わ細鑻ormalize鏄竴涓獀irtual member function錛宲tr->normalize();浼氳鍐呴儴杞寲涓?*ptr->vptr[t])(ptr); 浜嬪疄涓婏紝vptr鍚嶇О涔熶細琚玬angled錛屽洜涓哄彲鑳藉瓨鍦ㄦ湁澶氫釜vptrs錛泃鏄痸itrual table slot鐨勭儲寮曞鹼紝鍏寵仈鍒皀ormalize鍑芥暟錛涚浜屼釜ptr琛ㄧずthis鎸囬拡銆?/p>

3錛?nbsp;  浣跨敤class scope operator鏄庣‘璋冪敤涓涓獀itual function錛屾垨緇忕敱涓涓猚lass object璋冪敤涓涓獀itual function鍏跺喅璁柟寮忎細鍜宯ontatic member function涓鏍鳳紒鏁卾irtual function鐨勪竴涓猧nline鍑芥暟瀹炰綋鍙鎵╁睍寮鏉ワ紝鍥犺屾彁渚涙瀬澶х殑鏁堢巼鍒╃泭銆?/p>

4錛?nbsp;  static member function鐨勪富瑕佺壒寰佹槸娌℃湁this鎸囬拡錛岃繖瀵艱嚧瀹冧笉鑳界洿鎺ュ瓨鍙栧叾class涓殑nonstatic members錛屼笉鑳借澹版槑涓篶onst銆乿olatile鎴杤irtual錛屼篃涓嶉渶瑕佺粡鐢眂lass object鎵嶈兘璋冪敤銆俿tatic member function浼氳鎻愬嚭浜巆lass澹版槑涔嬪錛屽茍緇欎簣涓涓粡榪噈angled鐨勯傚綋鍚嶇О銆傚鏋滃彇涓涓猻tatic member function鐨勫湴鍧錛屽緱鍒扮殑灝嗘槸鍏跺湪鍐呭瓨涓殑鍦板潃錛屽叾鍦板潃綾誨瀷騫朵笉鏄竴涓寚鍚慶lass member function鐨勬寚閽堬紝鑰屾槸涓涓猲onmember鍑芥暟鎸囬拡銆俿tatic member function鐨勪竴涓剰鎯充笉鍒扮殑濂藉鏄彲浠ユ垚涓轟竴涓猚allback鍑芥暟錛屼篃鍙互鎴愬姛鍦板簲鐢ㄥ湪thread鍑芥暟韜笂銆?/p>

2002-07-17

4.2 Virtual Member Functions铏氭嫙鎴愬憳鍑芥暟
1錛?nbsp;  C++涓紝澶氭乸olymorphism琛ㄧず浠ヤ竴涓猵ublic base class鎸囬拡鎴杛eference瀵誨潃鍑轟竴涓猟erived class object銆傝瘑鍒竴涓猚lass鏄惁鏀寔澶氭侊紝鍞竴閫傚綋鐨勬柟娉曡瘯鐪嬪畠鏄惁鏈変換浣晇irtual function銆傚彧瑕乧lass鎷ユ湁涓涓獀irtual function錛屽畠灝遍渶瑕佷竴浠介澶栫殑鎵ц鏈熷瀷鍒垽鏂俊鎭?/p>

2錛?nbsp;  涓涓猚lass鍙細鏈変竴涓獀irtual table錛屽叾涓唴鍚搴攃lass object涓墍鏈夌殑active virtual functions鐨勫嚱鏁板疄浣撶殑鍦板潃銆傝繖浜沘ctive virtual functions鍖呮嫭錛?/p>

ü          涓涓猚lass瀹氫箟鐨勫嚱鏁板疄浣撱傚畠浼氭敼鍐檕verriding涓涓彲鑳藉瓨鍦ㄧ殑base class virtual function銆?/p>

ü          緇ф壙鑷猙ase class鐨勫嚱鏁板疄浣撱傛鏃惰class涓嶆敼鍐檅ase class virtual function銆?/p>

ü          涓涓猵ure_virtual_called()鍑芥暟瀹炰綋錛屽畠鏃㈠彲浠ユ壆婕攑ure virtual function鐨勭┖闂翠繚鍗咃紝涔熷彲浠ュ綋浣滄墽琛屾湡寮傚父澶勭悊鍑芥暟銆傚鏋滆鍑芥暟琚皟鐢紝閫氬父鐨勬搷浣滄槸緇撴潫紼嬪簭銆?/p>

3錛?nbsp;  姣忎竴涓獀irtual function閮借鎸囨淳涓涓浐瀹氫笉鍙樼殑绱㈠紩鍊鹼紝璇ュ煎湪鏁翠釜緇ф壙浣撶郴涓繚鎸佷笌鐗瑰畾virtual function鐨勫叧鑱斻傝繖鏍峰氨鍙互鍦ㄧ紪璇戞椂鏈熻瀹歷irtual function鐨勮皟鐢ㄣ?/p>

2002-7-20

4錛?nbsp;  澶氶噸緇ф壙涓嬶紝涓涓笂灞俠asse classes鏁扮洰涓簄鐨刣erived class錛屽畠灝嗗唴鍚玭-1涓澶栫殑virtual tables銆傚叾涓昏瀹炰綋涓庢渶宸︾鐨刡ase class鍏變韓錛屽叾涓寘鍚墍鏈塿irtual functios鐨勫湴鍧錛沶-1涓瑕佸疄浣撲笌鍏跺畠base classes鏈夊叧錛屽叾涓彧鍖呭惈鍑虹幇鍦ㄥ搴攂ase class涓璿irtual functions鐨勫湴鍧銆?/p>

5錛?nbsp;  鍦ㄥ閲嶇戶鎵夸腑鏀寔virtual function錛屽叾澶嶆潅搴﹀洿緇曞湪絎簩涓強鍚庣戶base class涓婏紝浠ュ強鎵ц鏈焧his鎸囬拡璋冩暣涓娿傜浜岋紙鎴栧悗緇э級base class浼氬獎鍝嶅virtual function鏀寔鐨?縐嶆儏鍐碉細

ü          閫氳繃鎸囧悜絎簩涓猙ase class鐨勬寚閽堬紝璋冪敤derived class virtual function錛?/p>

ü          閫氳繃鎸囧悜derived class鐨勬寚閽堬紝璋冪敤絎簩涓猙ase class涓竴涓戶鎵胯屾潵鐨剉irtual function錛?/p>

ü          鍏佽virtual function鍑芥暟鐨勮繑鍥炲肩被鍨嬫湁鎵鍙樺寲錛屽彲鑳芥槸base type錛屼篃鍙兘鏄痯ublicly derived type銆?/p>

6錛?nbsp;  鍏充簬鎵ц鏈焧his鎸囬拡璋冩暣姣旇緝鏈夋晥鐜囩殑瑙e喅鏂規硶鏄痶hunk銆傛墍璋搕hunk鏄竴灝忕assembly鐮侊紝鐢ㄦ潵浠ラ傚綋鐨刼ffset鍊兼潵璋冩暣this鎸囬拡騫惰煩鍒扮浉搴旂殑virtual function銆倀hunk鎶鏈厑璁竩irtual table slot緇х畫鍐呭惈涓涓畝鍗曠殑鎸囬拡錛屾鏃跺閲嶇戶鎵垮皢涓嶉渶瑕佷換浣曠┖闂翠笂鐨勯澶栬礋鎷咃紒slots涓殑鍦板潃鍙互鐩存帴鎸囧悜virtual function錛屼篃鍙互鎸囧悜涓涓浉鍏崇殑thunk銆?/p>

4.3 鍑芥暟鐨勬晥鑳?br>nonmember銆乻tatic member鍜宯onstatic member function鍦ㄥ唴閮ㄩ兘浼氳漿鍖栦負瀹屽叏鐩稿悓鐨勫艦寮忥紝涓夎呮晥鐜囩浉鍚屻?/p>

2002-08-08

4.4 鎸囧悜Member Function鐨勬寚閽?br>瀵逛竴涓猲onstatic member function鍙栧潃錛屽緱鍒扮殑鏄鍑芥暟鍦ㄥ唴瀛樹腑鐨勫湴鍧錛涜岄潰瀵逛竴涓獀irtual function錛屽緱鍒扮殑灝嗘槸涓涓儲寮曞箋傝繖涓兼槸涓嶅畬鏁寸殑錛屽繀欏昏緇戝畾浜庝竴涓猚lass object涓婏紝鎵嶈兘澶熼氳繃瀹冭皟鐢ㄥ嚱鏁般傛寚鍚憁ember function鐨勬寚閽堢殑澹版槑璇硶錛屼互鍙婃寚鍚憁ember selection榪愮畻絎︾殑鎸囬拡錛屽叾浣滅敤鏄綔涓簍his鎸囬拡鐨勭┖闂翠繚鐣欒呫傚洜姝わ紝static member function鐨勭被鍨嬫槸鍑芥暟鎸囬拡錛岃屼笉鏄寚鍚憁ember function鐨勬寚閽堛?/p>

浣跨敤涓涓猰ember function鎸囬拡錛屽鏋滃茍涓嶇敤浜巚irtual function銆佸閲嶇戶鎵褲乿irtual base class絳夋儏鍐電殑璇濓紝鍏舵垚鏈茍涓嶆瘮浣跨敤涓涓猲onmember function鎸囬拡瑕侀珮銆?/p>

4.5 Inline Functions
鍏抽敭璇峣nline鍙槸涓欏硅姹傘傚鏋滃湪鏌愪釜灞傛涓婏紝鍑芥暟鐨勬墽琛屾垚鏈瘮涓鑸殑鍑芥暟璋冪敤鍙婅繑鍥炴満鍒舵墍甯︽潵鐨勮礋鑽蜂綆錛岄偅涔堣璇鋒眰琚帴鍙楋紝緙栬瘧鍣ㄥ氨鐢ㄤ竴涓〃杈懼紡鍚堢悊鍦板皢鍑芥暟鎵╁睍寮鏉ャ傜湡姝g殑inline鍑芥暟鎵╁睍鎿嶄綔鏄湪鍑芥暟璋冪敤鐨勯偅涓鐐逛笂銆傚湪inline鎵╁睍鏈熼棿錛屾瘡涓涓艦寮忓弬鏁頒細琚搴旂殑瀹為檯鍙傛暟鎵鍙栦唬錛宨nline鍑芥暟涓殑姣忎竴涓眬閮ㄥ彉閲忛兘蹇呴』琚斁鍦ㄥ嚱鏁拌皟鐢ㄧ殑涓涓皝闂尯孌典腑錛屽茍鎷ユ湁涓涓嫭涓鏃犱簩鐨勫悕縐般傝繖浼氬甫鏉ュ弬鏁扮殑姹傚兼搷浣滀互鍙婁復鏃舵у璞$殑綆$悊銆?/p>

2002-08-11

鏋勯犮佽В鏋勩佹嫹璐濊鎰忓  Semantics of Construction, Destruction, and Copy
1錛?nbsp;  涓鑸岃█錛宑lass鐨刣ata member搴旇琚垵濮嬪寲錛岃屼笖鍙湪constructor涓垨鍏跺畠member functions涓垵濮嬪寲錛屽叾瀹冧換浣曟搷浣滈兘灝嗙牬鍧忓叾灝佽鎬ц川錛屼嬌鍏剁淮鎶ゅ拰淇敼鏇村姞鍥伴毦銆?/p>

2錛?nbsp;  鍙互瀹氫箟騫惰皟鐢╥nvoke涓涓猵ure virtual function錛屼絾瀹冨彧鑳借闈欐佽皟鐢紝涓嶈兘緇忕敱铏氭嫙鏈哄埗璋冪敤銆傛瘡涓涓猟erived class destructor浼氳緙栬瘧鍣ㄥ姞浠ユ墿灞曪紝闈欐佽皟鐢ㄦ瘡涓涓獀irtual base class浠ュ強涓婁竴灞俠ase class鐨刣estructor銆傚洜姝わ紝涓嶇base class鐨剉irtual destructor鏄惁澹版槑涓簆ure錛屽畠蹇呴』琚畾涔夈?/p>

5.1 鏃犵戶鎵挎儏鍐典笅鐨勫璞℃瀯閫?br>C++ Standard瑕佹眰緙栬瘧鍣ㄥ敖閲忓歡榪焠ontrivial members鐨勫疄闄呭悎鎴愭搷浣滐紝鐩村埌鐪熸閬囧埌鍏朵嬌鐢ㄥ満鎵涓烘銆?/p>

5.2 緇ф壙浣撶郴涓嬬殑瀵硅薄鏋勯?br>涓鑸岃█錛岀戶鎵夸綋緋諱笅緙栬瘧鍣ㄥconstructor鎵浣滅殑鎵╁厖鎿嶄綔浠ュ強嬈″簭澶х害濡備笅錛?/p>

ü          鎵鏈塿irtual base class constructors蹇呴』浠庡乏鍒板彸銆佷粠娣卞埌嫻呰璋冪敤錛氬鏋渃lass琚垪浜巑ember initialization list涓紝閭d箞浠諱綍鏄庣‘鎸囧畾鐨勫弬鏁伴兘蹇呴』浼犻掕繃鍘伙紝鍚﹀垯濡傛灉class鏈変竴涓猟efault constructor錛屼篃搴旇璋冪敤瀹冿紱class涓殑姣忎竴涓獀irtual base class subobject鐨勫亸縐婚噺offset蹇呴』鍦ㄦ墽琛屾湡鍙瀛樺彇錛涘鏋渃lass object鏄渶搴曞眰most-derived鐨刢lass錛屽叾constructors鍙兘琚皟鐢紝鏌愪簺鐢ㄤ互鏀寔榪欎釜琛屼負鐨勬満鍒跺繀欏昏鏂硅繘鏉ャ?/p>

ü          浠ase class鐨勫0鏄庢搴忚皟鐢ㄤ笂涓灞俠ase class constructors錛氬鏋渂ase class琚垪浜巑ember initialization list涓紝閭d箞浠諱綍鏄庣‘鎸囧畾鐨勫弬鏁伴兘蹇呴』浼犻掕繃鍘伙紝鍚﹀垯鑻ュ畠鏈塪efault constructor鎴杁efault memberwise copy constructor錛岄偅涔堝氨璋冪敤瀹冿紱濡傛灉base class鏄閲嶇戶鎵夸笅鐨勭浜屾垨鍚庣戶鐨刡ase class錛岄偅涔坱his鎸囬拡蹇呴』鏈夋墍璋冩暣銆?/p>

ü          濡傛灉class object鏈塿irtual table pointer(s)錛屽畠錛堜滑錛夊繀欏昏璁懼畾鍒濆鹼紝鎸囧悜閫傚綋鐨剉irtual table(s)銆?/p>

ü          濡傛灉鏈変竴涓猰ember娌℃湁鍑虹幇鍦╩ember initialization list涓紝浣嗗畠鏈塪efault constructor錛岃皟鐢ㄤ箣銆?/p>

ü          灝唌ember initialization list涓殑data members鐨勫垵濮嬪寲鎿嶄綔浠embers鐨勫0鏄庢搴忔斁榪沜onstructor鐨勫嚱鏁版湰韜?/p>

2002-8-18

5.3瀵硅薄澶嶅埗璇剰瀛?Object Copy Semantics
1錛?nbsp;  鍙湁鍦ㄩ粯璁よ涓烘墍瀵艱嚧鐨勮鎰忎笉瀹夊叏鎴栬呬笉姝g‘浠ヨ嚧鍙戠敓鍒悕鍖朼liasing鎴栬呭唴瀛樻硠婕弇emory leak鏃訛紝鎵嶉渶瑕佽璁′竴涓猚opy assignment operator銆傚惁鍒欙紝紼嬪簭鍙嶅掍細鎵ц寰楄緝鎱€?/p>

2錛?nbsp;  濡傛灉浠呬粎鏄負浜嗘妸NRV浼樺寲寮鍏蟲墦寮鑰屾彁渚涗竴涓猚opy constructor錛岄偅涔堝氨娌℃湁蹇呰涓瀹氳鎻愪緵涓涓猚opy assignment operator銆?/p>

3錛?nbsp;  copy assignment operator鏈変竴涓潪姝d氦鎯呭喌錛岄偅灝辨槸瀹冪己涔忎竴涓鉤琛屼簬member initialization list鐨刴ember assignment list銆傝皟鐢╞ase class鐨刢opy assignment operator紺轟緥錛?/p>

Point::operator = (p3d); 鎴?(*(Point*)this) = p3d; 鎴?(Point &)(*this) = p3d;

4錛?nbsp;  浜嬪疄涓婏紝copy assignment operator鍦ㄨ櫄鎷熺戶鎵挎儏鍐典笅琛屼負涓嶄匠錛岄渶瑕佸皬蹇冭璁″拰璇存槑銆傝澶氱紪璇戝櫒鐢氳嚦騫朵笉灝濊瘯鍙栧緱姝g‘鐨勮鎰忥紝瀹冧滑鍦ㄦ瘡涓涓腑闂寸殑copy assignment operator涓皟鐢ㄦ瘡涓涓猙ase class instance錛屼簬鏄犳垚virtual base copy assignment operator鐨勫涓疄浣撹璋冪敤銆傚緩璁敖鍙兘涓嶈鍏佽涓涓獀irtual base class鐨勬嫹璐濇搷浣滐紝騫朵笉瑕佸湪浠諱綍virtual base class涓0鏄巇ata member銆?/p>

5.5瑙f瀯璇剰瀛?Semantics of Destruction
濡傛灉class娌℃湁瀹氫箟destructor錛岄偅涔堝彧鏈夊湪鍏跺唴甯︾殑member object鎴朾ase class鎷ユ湁destructor鏃訛紝緙栬瘧鍣ㄦ墠浼氳嚜鍔ㄥ悎鎴愬嚭涓涓猟estructor銆備竴涓敱紼嬪簭鍛樺畾涔夌殑destructor琚墿灞曠殑鏂瑰紡綾諱技constructors琚墿灞曠殑鏂瑰紡錛屽彧鏄『搴忕浉鍙嶏細

ü          destructor鐨勫嚱鏁版湰浣撻鍏堣鎵ц錛?/p>

ü          濡傛灉class鎷ユ湁member class objects錛岃屽悗鑰呮嫢鏈塪estructors錛岄偅涔堝畠浠皢浠ュ0鏄庣殑鐩稿弽欏哄簭鑰岃皟鐢紱

ü          濡傛灉object鍐呭甫涓涓獀ptr錛屽垯鐜板湪琚噸鏂拌瀹氫互鎸囧悜閫傚綋base class涔媣irtual table錛?/p>

ü          濡傛灉鏈変換浣曠洿鎺ョ殑nonvirtual base classes鎷ユ湁destructor錛屽畠浠皢浠ュ0鏄庣殑鐩稿弽欏哄簭鑰岃皟鐢紱

ü          濡傛灉鏈変換浣晇irtual base classes鎷ユ湁destructor錛岃屽墠闈㈣璁虹殑榪欎釜class鏄痬ost-derived class錛岄偅涔堝畠浠細浠ュ師鍏堟瀯閫犻『搴忕殑鐩稿弽欏哄簭琚皟鐢ㄣ?/p>

2002-8-19

鎵ц鏈熻鎰忓 Runtime Semantics
6.1瀵硅薄鐨勬瀯閫犲拰瑙f瀯
1錛?nbsp;  涓鑸岃█錛宑onstructor鍜宒estructor鐨勫畨鎻掗兘濡備綘鎵棰勬湡銆備絾濡傛灉涓涓尯孌墊垨鍑芥暟涓湁涓涓互涓婄殑紱誨紑鐐癸紝鎯呭喌灝變細澶嶆潅涓浜涳紝destructor浼氭斁鍦ㄦ瘡涓涓寮鐐逛箣鍓嶃傞氬父錛屾垜浠姹傚皢object灝藉彲鑳芥斁鍦ㄤ嬌鐢ㄥ畠鐨勯偅涓▼搴忓尯闄勮繎錛岃繖鏍峰仛鍙互鑺傜渷涓嶅繀瑕佺殑瀵硅薄浜х敓鍜岄攢姣佹搷浣溿?/p>

2錛?nbsp;  C++紼嬪簭涓墍鏈夌殑global objects閮借鏀劇疆鍦ㄧ▼搴忕殑data segment涓紝濡傛灉涓嶆槑紜寚瀹氬垵鍊鹼紝object鎵閰嶇疆鐨勫唴瀛樺唴瀹瑰皢涓?錛圕騫朵笉鑷姩璁懼畾鍒濆鹼級銆傚鏋済lobal object鏈塩onstructor鍜宒estructor鐨勮瘽錛屾垜浠瀹冮渶瑕侀潤鎬佺殑鍒濆鍖栧拰鍐呭瓨閲婃斁鎿嶄綔銆?/p>

2002-8-20

3錛?nbsp;  virtual base class鐨剆ubobject鍦ㄦ瘡涓猟erived class涓殑浣嶇疆鍙兘浼氬彉鍔紝涓嶈兘鍦ㄧ紪璇戞椂鏈熺‘瀹氥備互涓涓猟erived class鐨刾ointer鎴杛eference鏉ュ瓨鍙杤irtual base class subobject錛屾槸涓縐峮onconstant expression錛屽繀欏誨湪鎵ц鏈熸柟鍙瘎浼版眰鍊箋?/p>

4錛?nbsp;  浣跨敤闈欐佸垵濮嬪寲鐨刼bject鏈変竴浜涚己鐐廣傚叾涓錛屾棤娉曟斁鍏ry鍖烘錛屼換浣晅hrow鎿嶄綔蹇呭皢瑙﹀彂exception handling library鐨勯粯璁ゅ嚱鏁皌erminate()錛涘叾浜岋紝紼嬪簭鍛樺繀欏諱負鎺у埗“闇瑕佽法瓚婃ā鍧楀仛闈欐佸垵濮嬪寲”objects鐨勪緷璧栭『搴忚屼駭鐢熺殑澶嶆潅搴︿粯鍑轟唬浠楓傚緩璁牴鏈氨涓嶈浣跨敤閭d簺闇瑕侀潤鎬佸垵濮嬪寲鐨刧lobal objects銆?/p>

5錛?nbsp;  鏂扮殑C++鏍囧噯瑕佹眰緙栬瘧鍗曚綅涓殑static local class objects蹇呴』鍦ㄧ浉搴斿嚱鏁扮涓嬈¤璋冪敤鏃舵墠琚瀯閫狅紝鑰屼笖蹇呴』浠ョ浉鍙嶇殑嬈″簭閿姣併傜敱浜庤繖浜沷bjects鏄湪闇瑕佹椂鎵嶈鏋勯狅紝鍥犳緙栬瘧鏃舵湡鏃犳硶棰勬湡鍏墮泦鍚堝拰欏哄簭銆備負鏀寔鏂版爣鍑嗭紝鍙兘瑕佸琚駭鐢熷嚭鏉ョ殑static local class objects淇濇寔涓涓墽琛屾湡閾捐〃銆?/p>

2003-8-1

6錛?nbsp;  瀵逛簬瀵硅薄鏁扮粍瀹氫箟錛屾櫄榪戠殑緙栬瘧鍣ㄤ竴鑸細鎻愪緵涓や釜鍑芥暟錛屽垎鍒敤浜庡鐞嗘病鏈塿irtual base class鐨刢lass錛屼互鍙婂唴甯irtual base class鐨刢lass 錛屽畠浠氬父琚О涓簐ec_new銆乿ec_vnew銆傚墠鑰呯被鍨嬮氬父涓猴細

void* vec_new(                                                   // 鍒濆鍖栫▼搴忓憳鏈彁渚涘垵鍊肩殑榪炵畫鍏冪礌

           void *array,                                               // 鏁扮粍璧峰鍦板潃鑻ヤ負0錛屽垯鍔ㄦ佸垎閰?/p>

           size_t elem_size,                                       // 姣忎竴涓猚lass object鐨勫ぇ灝?/p>

           int elem_count,                                         // 鏁扮粍涓殑鍏冪礌鏁扮洰

           void (*constructor) (void *),                    // class鐨刣efault constructor鎸囬拡

           void (*destructor) (void *, char)               // class鐨刣estructor鎸囬拡錛屼互0濉叆

); 濡傛灉紼嬪簭鍛樻彁渚涘甫鏈夐粯璁ゅ弬鏁板肩殑default constructor錛岀紪璇戝櫒瑕佸仛鐗規畩澶勭悊錛屼互浼犲叆榛樿鍙傛暟鍊鹼紒

瀵瑰簲閿姣佹暟緇勭殑涓や釜鍑芥暟鍒嗗埆涓簐ec_delete銆乿ec_vdelete銆傚墠鑰呯被鍨嬮氬父涓猴細

void* vec_delete(

           void *array,                                               // 鏁扮粍璧峰鍦板潃

           size_t elem_size,                                       // 姣忎竴涓猚lass object鐨勫ぇ灝?/p>

           int elem_count,                                         // 鏁扮粍涓殑鍏冪礌鏁扮洰

           void (*destructor) (void *, char)               // class鐨刣estructor鎸囬拡

);

6.2 new鍜宒elete榪愮畻絎?br>         娉ㄦ剰鍖哄垎operator new鍜宯ew operator錛佸墠鑰呰礋璐e垎閰嶅唴瀛橈紱鍚庤呭厛璋冪敤鍓嶈呭垎閰嶅唴瀛橈紝鐒跺悗璋冪敤constructor浠ュ疄鏂藉垵濮嬪寲銆?/p>

瀹?/p>

銆婃繁搴︽帰绱++瀵硅薄妯″瀷銆嬭涔︾瑪璁?

 

鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/xjtuse_mal/archive/2007/03/01/1517809.aspx



Vincent 2010-10-14 10:36 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美精品国产一区二区| 久久亚洲精品中文字幕冲田杏梨| 久久久精品日韩欧美| 亚洲一区二区视频在线观看| 国产精品永久免费视频| 欧美专区在线播放| 久久精品人人做人人爽电影蜜月| 鲁大师成人一区二区三区| 欧美一区1区三区3区公司| 欧美日韩喷水| 欧美一区二区精品久久911| 亚洲欧美日韩一区在线观看| 红杏aⅴ成人免费视频| 欧美电影电视剧在线观看| 欧美精品成人91久久久久久久| 亚洲一区激情| 久久精品亚洲热| 一区二区三区四区五区视频| 亚洲天堂成人| 亚洲国产精品小视频| 一区二区三区四区蜜桃| 极品中文字幕一区| 日韩亚洲欧美在线观看| 狠狠色丁香婷婷综合| 91久久国产自产拍夜夜嗨| 欧美日韩亚洲三区| 久久综合婷婷| 欧美性事在线| 亚洲风情亚aⅴ在线发布| 国产精品欧美久久| 亚洲国产精品久久久| 国产色产综合色产在线视频| 亚洲小少妇裸体bbw| 久久天天躁狠狠躁夜夜av| 亚洲午夜久久久久久久久电影院 | 亚洲欧美日韩国产综合精品二区| 在线播放豆国产99亚洲| 在线一区欧美| 亚洲精品一二三| 久久精品在这里| 欧美亚洲综合久久| 欧美日韩伊人| 亚洲区在线播放| 一区二区三区在线看| 亚洲综合激情| 亚洲一区在线免费| 欧美日韩国产成人| 亚洲国产乱码最新视频| 在线观看日韩精品| 欧美中文字幕在线观看| 欧美一区二区三区四区高清| 欧美日韩成人一区| 亚洲精品九九| 日韩亚洲欧美高清| 欧美a级理论片| 男女精品视频| 亚洲国产精品国自产拍av秋霞| 欧美在线综合| 久久久99国产精品免费| 国产偷国产偷亚洲高清97cao| 亚洲天天影视| 午夜一区在线| 国产亚洲精品aa| 久久国产精品色婷婷| 久久噜噜亚洲综合| 韩国三级电影久久久久久| 欧美伊人久久久久久久久影院| 欧美一区二区视频观看视频| 国产精品日韩专区| 欧美一级播放| 久久精品卡一| 99视频热这里只有精品免费| 国产精品v欧美精品∨日韩| 99精品福利视频| 亚洲一区二区在线看| 国产精品男女猛烈高潮激情| 一本色道88久久加勒比精品| 亚洲女性裸体视频| 国产偷国产偷亚洲高清97cao| 欧美在线观看天堂一区二区三区| 久久影视精品| 日韩视频在线观看免费| 欧美日韩在线视频观看| 亚洲性xxxx| 久久午夜精品一区二区| 在线看片一区| 欧美三级视频在线观看| 性亚洲最疯狂xxxx高清| 你懂的国产精品| 亚洲午夜高清视频| 国产主播一区| 欧美日韩国产免费| 欧美一区视频| 亚洲二区精品| 久久精品视频免费| 亚洲片区在线| 国产麻豆9l精品三级站| 免费成人av在线| 亚洲字幕在线观看| 欧美高清一区| 午夜精品久久久久久久蜜桃app| 国产亚洲精品久久久久动| 欧美1区视频| 亚洲欧美国产毛片在线| 亚洲第一福利视频| 欧美在线视屏| 99这里只有精品| 国产综合色产在线精品| 欧美日韩美女| 老司机午夜精品| 午夜精品一区二区三区在线播放| 欧美黄色网络| 久久久久久久97| 亚洲自拍偷拍福利| 日韩午夜av在线| 精品av久久707| 国产欧美日本一区二区三区| 欧美另类变人与禽xxxxx| 久久精品国产欧美激情| 亚洲午夜久久久久久久久电影院| 亚洲国产精品传媒在线观看| 久久久午夜视频| 欧美在线高清| 亚洲欧美一级二级三级| 夜夜躁日日躁狠狠久久88av| 亚洲黄色片网站| 国内精品视频666| 国产亚洲精品久久久久婷婷瑜伽| 欧美午夜视频网站| 欧美日韩视频一区二区| 欧美激情久久久久久| 狂野欧美一区| 麻豆成人在线播放| 久久婷婷蜜乳一本欲蜜臀| 羞羞答答国产精品www一本| 亚洲色图综合久久| 亚洲少妇中出一区| 国产精品99久久久久久久女警 | 欧美国产日韩a欧美在线观看| 久久青青草综合| 久久网站热最新地址| 久久久国际精品| 久久久中精品2020中文| 亚洲欧美日本伦理| 亚洲综合激情| 亚洲成人资源网| 亚洲天堂av电影| 在线综合+亚洲+欧美中文字幕| 欧美一区影院| 在线亚洲美日韩| 老色批av在线精品| 亚洲五月六月| 国产精品高潮粉嫩av| 99re成人精品视频| 99伊人成综合| 欧美日韩精品免费观看视频| 欧美精品一区二区精品网| 欧美日韩国产在线播放| 欧美日韩国产色视频| 国产精品毛片高清在线完整版| 国产精品每日更新在线播放网址| 国产亚洲精品激情久久| 伊人久久大香线| 日韩视频欧美视频| 亚洲自拍啪啪| 久久久精品国产99久久精品芒果| 免费观看亚洲视频大全| 亚洲国产成人av好男人在线观看| 亚洲精品久久久一区二区三区| 一区二区精品国产| 欧美在线一二三四区| 欧美大片在线观看一区| 欧美视频三区在线播放| 国产日韩欧美日韩| 91久久精品日日躁夜夜躁国产| 一区二区三区精品视频| 久久国产精品久久精品国产 | 欧美另类久久久品| 国产欧美一区二区白浆黑人| 亚洲国产网站| 先锋影音国产精品| 欧美成人一区二区三区| 夜夜精品视频| 久久久999精品| 欧美性感一类影片在线播放 | 欧美日韩国产成人在线91| 国产欧美日韩一区二区三区在线| 亚洲国产精品一区二区尤物区| 亚洲永久精品国产| 欧美电影免费观看高清完整版| 一二三区精品| 免费看亚洲片| 国产亚洲欧美一区二区| 亚洲视频国产视频| 欧美成人黄色小视频| 亚洲欧美日韩一区在线| 欧美视频在线一区二区三区| 亚洲激情自拍| 美女福利精品视频| 午夜精品久久久久久久蜜桃app|