会计考友 发表于 2012-8-2 09:08:23

2012年软件水平考试软件设计师课后辅导(10)

C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被严重地增强了。主力原因就是开源的软件、基础软件(比如并发原生支持,比如Android必定要推出原生的SDK)、各种跨平台应用的出现。   开源C++库必须具有以下特点:必须是成熟的产品、跨平台的产品、相对通用的库。
  一、通用标准类
  STL:C++标准模板库,呵呵,它也是开源的嘛。
  boost:C++准标准库,它是强大地,江湖称之“千锤百炼”-------若掌握,必横行世界。
  deelx (轻量级的正则表达式解析类库,国产),boost里有强大的正则表达式解析库,但如果你只想要一个表达式解析,不想要拖上庞大的boost库时……支持一下国货。
  iconv /iconvpp : (C形式的编码转换函数库,
  二、XML解析库
  C++的XML相关库不少,但是大部分其实都是C库,使用起来自然不那么轻便。其中基于DOM的有TinyXml,基于SAX的当然是Xerces.前者小巧快捷,便于使用,适合做数据交换。后者则是全功能的XML解析器。
  哥更倾向于TingyXml.小巧啊!
  xerces-c :最强大的XML解析库了,不是仅仅在开源库里,你尽管把商业的算在内。当然,它的变体,被IBM拿去卖钱的那个版本,多了数百兆的东东来支持各国编码转换,是更强大,但我觉得有小小的,开源的iconv在前不就够了?
  根据博友的一篇博文对三个轻型xml解析开源库:SlimXml、TinyXml、RapidXml,对比如下:
  解析这个3.3万行,1.5M大小的xml,三个库分别花了
  SlimXml: 22ms
  TinyXml: 54ms
  RapidXml: 4ms!
  结论是,RapidXml果然很强悍,居然比SlimXml快5倍多。
  比较欣慰的是,在没有很关注效率的情况下,SlimXml仍然比TinyXml快2.5倍。SlimXml走的是简单小巧路线,源代码只有 32k,而TinyXml和RapidXml的源码分别是147k和141k,有这样的效率可以满意了。因为这个库主要还是针对几十上百行的小文件,解析特别大的xml不在我考虑的范围之内。
  还有irrlicht(鬼火引擎)的irrXMl解析器。

  xsd (XML 与 C++数据结构的绑定工具)。(商业使用要钱)

会计考友 发表于 2012-8-2 09:08:24

2012年软件水平考试软件设计师课后辅导(10)

</p>  三、数据库
  我比较喜欢OTL(用于连接数据库)。其他的没用过
  四、多媒体类
  ——摘录别处,自己,没用过
  SDL (Simple DirectMedia Layer/多媒体直接访问层,用于游戏编程)。
  相应的c开源库有ffmpeg、mpeg4、aac、avc、libmad、mpeg1、flac、ac3、ac3、matroska著名的多媒体播放器 TCPMP 天下闻名的跨平台、嵌入式手持设备视频播放器。
  五、网络开发类
  1、gSOAP SOAP协议的C++支持库及代码生成工具。
  2、ACE 网络编程研究首选。
  ACE适合于研究,大型网络编程上效率不足,大型网游里面几乎没有用到ACE的,很多用了ACE的项目也被证明了效率不高。
  除了ACE之外,还有很多系统和网络编程方面的程序库。比如在线程库方面,还有ZThread、boost::thread,如果放大到C/C++领域, 还有APR,还有CII.在文件和目录操作方面,boost也有相应的组件,而在网络编程方面有socket++,还有boost::asio,未来的 C++0X中几乎肯定有一个网络编程和一个线程库。然而目前看来,ACE仍然是进行系统和高性能网络编程的首选,其地位在一段时间内不会被撼动。它不但是 一个实用的程序库、框架集,还是一个典范的设计模式应用范例,非常值得学习。
  3、根据博友回复,我整理如下:
  开源C++库,称为POCO(POrtable COmponents – 可移植元件),非常方便好用。
  特性:
  * 线程,程序同步及多线程编程高级抽象* 流及文件系统访问* 共享库将类加载* 功能强大的日志和错误报告* 安全及加密* 网络编程 (TCP/IP 套接字, HTTP客户端和HTTP服务器, FTP, SMTP, POP3, 等)
  * XML解析 (SAX2 和 DOM) 及生成* 配置文件及选项处理* SQL数据库访问(ODBC, MySQL, SQLite)
  可以运行的平台包括:
  * Windows * Mac OS X * iPhone OS * (embedded) Linux * HP-UX * Tru64 * Solaris * QNX
  六、GUI库
  BCG Windows平台下界面设计的第三方库,可以让你的界面更美好,更具时 代感。
  wxWidgets :使用wxWidgets ,开发者可以基于同一套代码,为Win32, Mac OS X, GTK+, X11, Motif, WinCE等平台开发应用程序。wxWidgets库可以被C++, Python, Perl, and C#/.NET等开发语言使用。跟其它有些同样支持跨平台GUI开发工具不同,基于wxWidgets的应用,拥有真实本地化的视觉及使用效果——因为,wxWidgets使用(各)平台原生的控件,而不是简单通过贴图去模拟。wxWidgets是使用广泛的,自由的,开源的,成熟的。
  QT——界面(GUI)开发,支持C++/Java/Python/……多种语言。跨平台。最主要的好处是,API非常优 美!Qt本身也不仅仅只是做GUI编程,实际它基本上可以做OS-API可以做的任何事情。象网络/数据库/OpenGL/……都提供完美的支持。
  传统上Qt被认为是可移植的GUI库,但实际上Qt现在已经是一个比较完整的可移植应用程序框架了,其中包含了大量的工具,比如正则表达式、Web和 Socket类、2D和3D图形、XML解析、SQL类等,甚至还包括了一个完整的容器类库,不过其王牌还是GUI.在目前的跨平台GUI框架中,Qt成熟度最高,已经被一些大公司应用在关键产品中。由于Trolltech对Qt采用的dual license模式,该产品既可以从开源社区获得支持,又能够赚取足够的商业利润,因此其前景也令人比较有信心。
  Qt的主要技术特色是其元对象模型。Qt实际上使用的并不是标准的C++,而是标准C++的一个扩展。它通过元对象模型扩展,实现了著名的signal/slot机制,而这一机制也成为Qt的最大特色和优势。
  与Qt类似的可移植GUI框架还有wxWidget、FOX等
  计算机视觉
  OpenCV,因特尔自主的开源库。支持C/C++/Python接口。这个感兴趣的朋友可以玩一下。如果结合OpenCV,你可以做一些外行人觉得很酷的程序。比如说用它的人脸识别函数,来对你的摄像头进行处理,判断人的动作等。
页: [1]
查看完整版本: 2012年软件水平考试软件设计师课后辅导(10)