a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 119|回复: 1

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

[复制链接]
发表于 2012-8-2 09:08:23 | 显示全部楼层 |阅读模式
C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被严重地增强了。主力原因就是开源的软件、基础软件(比如并发原生支持,比如Android必定要推出原生的SDK)、各种跨平台应用的出现。   开源C++库必须具有以下特点:必须是成熟的产品、跨平台的产品、相对通用的库。
: T+ O) M5 V) n; U2 j) `  一、通用标准类
9 k# K, l' T/ q- t  STL:C++标准模板库,呵呵,它也是开源的嘛。 : c% Z  R/ d' n) `4 ^
  boost:C++准标准库,它是强大地,江湖称之“千锤百炼”-------若掌握,必横行世界。 9 L4 W% }: V: |
  deelx (轻量级的正则表达式解析类库,国产),boost里有强大的正则表达式解析库,但如果你只想要一个表达式解析,不想要拖上庞大的boost库时……支持一下国货。
: B7 g! x& j. k' @& R. s  iconv /iconvpp : (C形式的编码转换函数库,
2 X+ D; X9 F2 J5 t  @, r  二、XML解析库 ) _( i/ r! g7 s" {+ ?1 r6 _  V
  C++的XML相关库不少,但是大部分其实都是C库,使用起来自然不那么轻便。其中基于DOM的有TinyXml,基于SAX的当然是Xerces.前者小巧快捷,便于使用,适合做数据交换。后者则是全功能的XML解析器。
# |3 q9 \8 s5 C* H1 [, V  哥更倾向于TingyXml.小巧啊!
: w9 z8 H8 q3 z$ }6 R  xerces-c :最强大的XML解析库了,不是仅仅在开源库里,你尽管把商业的算在内。当然,它的变体,被IBM拿去卖钱的那个版本,多了数百兆的东东来支持各国编码转换,是更强大,但我觉得有小小的,开源的iconv在前不就够了?   [$ Q/ D% T7 V) Z" K
  根据博友的一篇博文对三个轻型xml解析开源库:SlimXml、TinyXml、RapidXml,对比如下:
. Z5 f6 J9 o( M9 |  解析这个3.3万行,1.5M大小的xml,三个库分别花了
3 T! F  q7 ?+ h& b+ D( p1 S  SlimXml: 22ms
% \: P: l9 H# F- W  TinyXml: 54ms ! h; s+ M8 y/ x4 R( v  H6 }3 [
  RapidXml: 4ms! * d! g8 T7 B( I) }/ e
  结论是,RapidXml果然很强悍,居然比SlimXml快5倍多。
1 ]. g- j& k% I5 b  比较欣慰的是,在没有很关注效率的情况下,SlimXml仍然比TinyXml快2.5倍。SlimXml走的是简单小巧路线,源代码只有 32k,而TinyXml和RapidXml的源码分别是147k和141k,有这样的效率可以满意了。因为这个库主要还是针对几十上百行的小文件,解析特别大的xml不在我考虑的范围之内。 " E* j2 Y8 M3 m8 X5 R
  还有irrlicht(鬼火引擎)的irrXMl解析器。
5 }* g$ B4 V8 @- F
% p  C! h( H9 G( c" l' A: S5 n5 f  xsd (XML 与 C++数据结构的绑定工具)。(商业使用要钱)
回复

使用道具 举报

 楼主| 发表于 2012-8-2 09:08:24 | 显示全部楼层

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

</p>  三、数据库   S1 e0 G2 o5 B3 O
  我比较喜欢OTL(用于连接数据库)。其他的没用过 1 f. h# B% @/ F& j
  四、多媒体类
# H$ G+ r, [& B5 y& V5 X  ]  ——摘录别处,自己,没用过 ' S" `/ V+ k1 `0 h" r5 ~
  SDL (Simple DirectMedia Layer/多媒体直接访问层,用于游戏编程)。
, R9 m; Z7 v( {! ]  E  相应的c开源库有ffmpeg、mpeg4、aac、avc、libmad、mpeg1、flac、ac3、ac3、matroska著名的多媒体播放器 TCPMP 天下闻名的跨平台、嵌入式手持设备视频播放器。 ) y7 S7 t) O, l* h  }4 _
  五、网络开发类 - r1 ~; W- y+ z; P
  1、gSOAP SOAP协议的C++支持库及代码生成工具。 + ~/ S/ H0 ]1 @3 F8 U! k
  2、ACE 网络编程研究首选。
8 X$ q* R1 h& v4 [  ACE适合于研究,大型网络编程上效率不足,大型网游里面几乎没有用到ACE的,很多用了ACE的项目也被证明了效率不高。 . D+ y9 g, j+ \
  除了ACE之外,还有很多系统和网络编程方面的程序库。比如在线程库方面,还有ZThread、boost::thread,如果放大到C/C++领域, 还有APR,还有CII.在文件和目录操作方面,boost也有相应的组件,而在网络编程方面有socket++,还有boost::asio,未来的 C++0X中几乎肯定有一个网络编程和一个线程库。然而目前看来,ACE仍然是进行系统和高性能网络编程的首选,其地位在一段时间内不会被撼动。它不但是 一个实用的程序库、框架集,还是一个典范的设计模式应用范例,非常值得学习。
8 M9 J$ K% U( s: J( {  3、根据博友回复,我整理如下: % I; Z* l  N1 C# I# e! q/ f7 o
  开源C++库,称为POCO(POrtable COmponents – 可移植元件),非常方便好用。 & T/ a; [5 l' v& `3 Q1 l$ O0 k
  特性: " n) R& i4 W5 h/ N' Z( `8 r
  * 线程,程序同步及多线程编程高级抽象* 流及文件系统访问* 共享库将类加载* 功能强大的日志和错误报告* 安全及加密* 网络编程 (TCP/IP 套接字, HTTP客户端和HTTP服务器, FTP, SMTP, POP3, 等) 0 }4 Z& s+ T! s  T
  * XML解析 (SAX2 和 DOM) 及生成* 配置文件及选项处理* SQL数据库访问(ODBC, MySQL, SQLite) 7 h3 ~- q3 `: {
  可以运行的平台包括: 6 ]' e  m7 t4 H. j7 E/ p; K
  * Windows * Mac OS X * iPhone OS * (embedded) Linux * HP-UX * Tru64 * Solaris * QNX 1 u3 B! R0 B% X) e9 T9 o
  六、GUI库 : p. n8 z: E, U) b
  BCG Windows平台下界面设计的第三方库,可以让你的界面更美好,更具时 代感。 " ?3 P  H$ |# {3 c$ X; Z
  wxWidgets :使用wxWidgets ,开发者可以基于同一套代码,为Win32, Mac OS X, GTK+, X11, Motif, WinCE等平台开发应用程序。wxWidgets库可以被C++, Python, Perl, and C#/.NET等开发语言使用。跟其它有些同样支持跨平台GUI开发工具不同,基于wxWidgets的应用,拥有真实本地化的视觉及使用效果——因为,wxWidgets使用(各)平台原生的控件,而不是简单通过贴图去模拟。wxWidgets是使用广泛的,自由的,开源的,成熟的。 - A; S  l4 \7 l: O' M  O: p7 G
  QT——界面(GUI)开发,支持C++/Java/Python/……多种语言。跨平台。最主要的好处是,API非常优 美!Qt本身也不仅仅只是做GUI编程,实际它基本上可以做OS-API可以做的任何事情。象网络/数据库/OpenGL/……都提供完美的支持。 4 h7 J; b2 r& E
  传统上Qt被认为是可移植的GUI库,但实际上Qt现在已经是一个比较完整的可移植应用程序框架了,其中包含了大量的工具,比如正则表达式、Web和 Socket类、2D和3D图形、XML解析、SQL类等,甚至还包括了一个完整的容器类库,不过其王牌还是GUI.在目前的跨平台GUI框架中,Qt成熟度最高,已经被一些大公司应用在关键产品中。由于Trolltech对Qt采用的dual license模式,该产品既可以从开源社区获得支持,又能够赚取足够的商业利润,因此其前景也令人比较有信心。
2 r7 ^  w9 h5 o$ [8 Q6 O! E  Qt的主要技术特色是其元对象模型。Qt实际上使用的并不是标准的C++,而是标准C++的一个扩展。它通过元对象模型扩展,实现了著名的signal/slot机制,而这一机制也成为Qt的最大特色和优势。 3 K# ~, a4 @+ H9 V& h$ V
  与Qt类似的可移植GUI框架还有wxWidget、FOX等 . x" X' w' N# p) Y* r4 G
  计算机视觉
' Q" r" q0 i& _3 i6 A  OpenCV,因特尔自主的开源库。支持C/C++/Python接口。这个感兴趣的朋友可以玩一下。如果结合OpenCV,你可以做一些外行人觉得很酷的程序。比如说用它的人脸识别函数,来对你的摄像头进行处理,判断人的动作等。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-8 03:55 , Processed in 0.352006 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表