天空之城
new,think,program,happy to live
posts - 39,comments - 39,trackbacks - 0
     "STL":Standard   Template   Library,标准模板库,这是最早由Alexander   Stepanov和Meng   Lee(好像是华人的名字哦)完成,于1994年提交给ANSI/ISO   标准C++委员会并通过而成为标准C++的一部分。望文生义即可知这是一个代码库标准,不是语法标准。简单地说,STL是以C++中的模板语法为基础建立起来的一套包含基础数据结构和算法的代码库。STL的特点是实现了“类型参数化”,即STL的代码中可处理任意自定义类型的对象,如果不使用模板技术的话,这是一件相当困难的事。也因为这个原因,在最新的java及C#语法中均加入了对模板语法的支持,可见其重要性。另外一个有关STL重要的话题是GP(Generic   Programming),泛型。这是与面向对象相并列的另外的一个编程模型,它以模板为基础,弱化了实体类型的差异,简化了编程时问题抽象的模型,提供了更好的封装性和弹性,对于繁杂的面向对象编程毫无疑问是一种解脱,至少是精神上的。GP是最近几年软件架构的一个研究热点,但国内真正的应用似乎并不多见。  
          "ATL":Active   Template   Library,活动模板库,这在VC编程下应该算是比较高级的话题了,它集COM和模板技术于一身,带来了极方便的组件编写方法和极高的学习门槛。可以说,进入ATL领域就算是进入了中高级编程领域。ATL是为组件而生,它的目的是为了让程序员更方便地编写组件(纯用C++写一个最简单的组件实现一个“Hello World”对初学者来说都是很要命的),同时它使用模板技术来类似于MFC一样建立了一个开发COM的框架代码库(模板库),使用该框架及模板库可以快速地进行组件开发。ATL中的一个特点就是你自己的类将成为ATL代码库中某些类的父类,这是一件很有趣的事。 

            "HANDLE"   :句柄。  
  在windows系统中,句柄几乎随处可见。他来源于早期的windows系统,   用来移动进程内存地址空间的碎片但句柄的值不变,方便了对内存的使用和管理。现在的windows系统也广泛的使用它,但功能和作用大大超出了以前。他是一个内部结构(根据系统的不同,ms可能修改它),他被系统定义和管理而能被用户使用。一般来说它是一个指针的指针(一些表的索引),这些索引不能被用户直接访问,当使用一个句柄时,他的内部操作由系统完成。  
  一个句柄对应一些资源,比如HPEN,HMENU,HDC,HANDLE,HACCEL,HDWP(不常用,管理窗口位置的),HHOOK,HFILE,HKEY等等。一个更完整的列表参考msdn:   Win32   Simple   Data   Types.  
  资源使用完需要回收。一般可以用CloseHandle   api关闭句柄。有些句柄系统自动回收,不需要用户手动去关闭它,比如HCURSOR等等。 

"DLL":Dynamic   Link   Library    
  在windows系统中,DLL同样随处可见。我们随便一个复杂点的程序,基本上需要kernel32.dlluser32.dll,gdi32.dll的支持。dll提供了接口,方便用户调用,内部的实现却由dll自己来负责。  
  dll的作用主要有一下几点(我的理解,不一定全)。一是节省内存消耗和应用程序大小。一般dll执行体在内存中只有一份,但他的数据对于每个程序都是单独的拷贝,所以节省了内存空间。  
  二是可以单独的编译测试,dll的更改只需自己重新编译,而不需要整个工程重新编译。替换某个dll也很简单,只需保留原有的接口就可以,而可以修改功能。  
  三是可以在程序之间共享信息。通过在dll中指定共享段,可以达到在不同的程序之间共享数据。  
  四是系统钩子中必须使用dll.因为dll映像可以被不同进程加载,所以如果将钩子注入到目标进程需要使用dll,同样可以使用dll共享段在不同进程间来共享信息。  
   
  像上面的句柄一样,每个dll由系统维护一个引用计数。当引用计数为0时,系统撤销dll. 
 
posted on 2006-05-14 12:47 太极虎~宏 阅读(148) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理