???? "STL":Standard ? Template ? Library,標(biāo)準(zhǔn)模板庫(kù),這是最早由Alexander ? Stepanov和Meng ? Lee(好像是華人的名字哦)完成,于1994年提交給ANSI/ISO ? 標(biāo)準(zhǔn)C++委員會(huì)并通過(guò)而成為標(biāo)準(zhǔn)C++的一部分。望文生義即可知這是一個(gè)代碼庫(kù)標(biāo)準(zhǔn),不是語(yǔ)法標(biāo)準(zhǔn)。簡(jiǎn)單地說(shuō),STL是以C++中的模板語(yǔ)法為基礎(chǔ)建立起來(lái)的一套包含基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)和算法的代碼庫(kù)。STL的特點(diǎn)是實(shí)現(xiàn)了“類(lèi)型參數(shù)化”,即STL的代碼中可處理任意自定義類(lèi)型的對(duì)象,如果不使用模板技術(shù)的話(huà),這是一件相當(dāng)困難的事。也因?yàn)檫@個(gè)原因,在最新的java及C#語(yǔ)法中均加入了對(duì)模板語(yǔ)法的支持,可見(jiàn)其重要性。另外一個(gè)有關(guān)STL重要的話(huà)題是GP(Generic ? Programming),泛型。這是與面向?qū)ο笙嗖⒘械牧硗獾囊粋€(gè)編程模型,它以模板為基礎(chǔ),弱化了實(shí)體類(lèi)型的差異,簡(jiǎn)化了編程時(shí)問(wèn)題抽象的模型,提供了更好的封裝性和彈性,對(duì)于繁雜的面向?qū)ο缶幊毯翢o(wú)疑問(wèn)是一種解脫,至少是精神上的。GP是最近幾年軟件架構(gòu)的一個(gè)研究熱點(diǎn),但國(guó)內(nèi)真正的應(yīng)用似乎并不多見(jiàn)。 ?
? ? ? ? ? "ATL":Active ? Template ? Library,活動(dòng)模板庫(kù),這在VC編程下應(yīng)該算是比較高級(jí)的話(huà)題了,它集COM和模板技術(shù)于一身,帶來(lái)了極方便的組件編寫(xiě)方法和極高的學(xué)習(xí)門(mén)檻。可以說(shuō),進(jìn)入ATL領(lǐng)域就算是進(jìn)入了中高級(jí)編程領(lǐng)域。ATL是為組件而生,它的目的是為了讓程序員更方便地編寫(xiě)組件(純用C++寫(xiě)一個(gè)最簡(jiǎn)單的組件實(shí)現(xiàn)一個(gè)“Hello World”對(duì)初學(xué)者來(lái)說(shuō)都是很要命的),同時(shí)它使用模板技術(shù)來(lái)類(lèi)似于MFC一樣建立了一個(gè)開(kāi)發(fā)COM的框架代碼庫(kù)(模板庫(kù)),使用該框架及模板庫(kù)可以快速地進(jìn)行組件開(kāi)發(fā)。ATL中的一個(gè)特點(diǎn)就是你自己的類(lèi)將成為ATL代碼庫(kù)中某些類(lèi)的父類(lèi),這是一件很有趣的事。?
????????????"HANDLE" ? :句柄。 ?
? 在windows系統(tǒng)中,句柄幾乎隨處可見(jiàn)。他來(lái)源于早期的windows系統(tǒng), ? 用來(lái)移動(dòng)進(jìn)程內(nèi)存地址空間的碎片但句柄的值不變,方便了對(duì)內(nèi)存的使用和管理。現(xiàn)在的windows系統(tǒng)也廣泛的使用它,但功能和作用大大超出了以前。他是一個(gè)內(nèi)部結(jié)構(gòu)(根據(jù)系統(tǒng)的不同,ms可能修改它),他被系統(tǒng)定義和管理而能被用戶(hù)使用。一般來(lái)說(shuō)它是一個(gè)指針的指針(一些表的索引),這些索引不能被用戶(hù)直接訪(fǎng)問(wèn),當(dāng)使用一個(gè)句柄時(shí),他的內(nèi)部操作由系統(tǒng)完成。 ?
? 一個(gè)句柄對(duì)應(yīng)一些資源,比如HPEN,HMENU,HDC,HANDLE,HACCEL,HDWP(不常用,管理窗口位置的),HHOOK,HFILE,HKEY等等。一個(gè)更完整的列表參考msdn: ? Win32 ? Simple ? Data ? Types. ?
? 資源使用完需要回收。一般可以用CloseHandle ? api關(guān)閉句柄。有些句柄系統(tǒng)自動(dòng)回收,不需要用戶(hù)手動(dòng)去關(guān)閉它,比如HCURSOR等等。?
"DLL":Dynamic ? Link ? Library ? ?
? 在windows系統(tǒng)中,DLL同樣隨處可見(jiàn)。我們隨便一個(gè)復(fù)雜點(diǎn)的程序,基本上需要kernel32.dlluser32.dll,gdi32.dll的支持。dll提供了接口,方便用戶(hù)調(diào)用,內(nèi)部的實(shí)現(xiàn)卻由dll自己來(lái)負(fù)責(zé)。 ?
? dll的作用主要有一下幾點(diǎn)(我的理解,不一定全)。一是節(jié)省內(nèi)存消耗和應(yīng)用程序大小。一般dll執(zhí)行體在內(nèi)存中只有一份,但他的數(shù)據(jù)對(duì)于每個(gè)程序都是單獨(dú)的拷貝,所以節(jié)省了內(nèi)存空間。 ?
? 二是可以單獨(dú)的編譯測(cè)試,dll的更改只需自己重新編譯,而不需要整個(gè)工程重新編譯。替換某個(gè)dll也很簡(jiǎn)單,只需保留原有的接口就可以,而可以修改功能。 ?
? 三是可以在程序之間共享信息。通過(guò)在dll中指定共享段,可以達(dá)到在不同的程序之間共享數(shù)據(jù)。 ?
? 四是系統(tǒng)鉤子中必須使用dll.因?yàn)閐ll映像可以被不同進(jìn)程加載,所以如果將鉤子注入到目標(biāo)進(jìn)程需要使用dll,同樣可以使用dll共享段在不同進(jìn)程間來(lái)共享信息。 ?
? ?
? 像上面的句柄一樣,每個(gè)dll由系統(tǒng)維護(hù)一個(gè)引用計(jì)數(shù)。當(dāng)引用計(jì)數(shù)為0時(shí),系統(tǒng)撤銷(xiāo)dll.?
?
posted on 2006-05-14 12:47
太極虎~宏 閱讀(167)
評(píng)論(0) 編輯 收藏 引用