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