﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-&lt;p style="margin:0px;font-size:3em;color:#000;font-family:楷体_GB2312"&gt;张沈鹏,在路上...(C++版)&lt;/p&gt;-随笔分类-C++</title><link>http://www.cppblog.com/zuroc/category/418.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 19 May 2008 13:31:38 GMT</lastBuildDate><pubDate>Mon, 19 May 2008 13:31:38 GMT</pubDate><ttl>60</ttl><item><title>2006百度之星程序设计大赛试题-变态比赛规则(解答)</title><link>http://www.cppblog.com/zuroc/archive/2007/05/15/24138.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Tue, 15 May 2007 02:54:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2007/05/15/24138.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/24138.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2007/05/15/24138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/24138.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/24138.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 变态比赛规则<br><br>为了促进各部门员工的交流，百度举办了一场全公司范围内的“拳皇”（百度内部最流行的格斗游戏）友谊赛，负责组织这场比赛的是百度的超级“拳皇”迷W.Z。W.Z不想用传统的淘汰赛或者循环赛的方式，而是自己制定了一个比赛规则。<br><br>由于一些员工（比如同部门或者相邻部门员工）平时接触的机会比较多，为了促进不同部门之间的交流，W.Z希望员工自由分组。不同组之间的每两个人都会进行一场友谊赛而同一组内的人之间不会打任何比赛。<br><br>比如4个人，编号为1~4,如果分为两个组并且1，2一个组，3，4一个组，那么一共需要打四场比赛：1 vs 3，1 vs 4，2 vs 3，2 vs 4。 而如<br><br>果是1，2，3一组，4单独一组，那么一共需要打三场比赛 1 vs 4，2 vs 4，3 vs 4。<br><br><br>很快W.Z意识到，这样的比赛规则可能会让比赛的场数非常多。W.Z想知道如果有N个人，通过上面这种比赛规则，总比赛场数有可能为K场吗？<br><br>比如3个人，如果只分到一组则不需要比赛，如果分到两组则需要2场比赛&nbsp;&nbsp;<a href='http://www.cppblog.com/zuroc/archive/2007/05/15/24138.html'>阅读全文</a><img src ="http://www.cppblog.com/zuroc/aggbug/24138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2007-05-15 10:54 <a href="http://www.cppblog.com/zuroc/archive/2007/05/15/24138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>2006百度之星程序设计大赛试题-百度语言翻译机(解答)</title><link>http://www.cppblog.com/zuroc/archive/2007/05/13/24064.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Sun, 13 May 2007 13:25:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2007/05/13/24064.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/24064.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2007/05/13/24064.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/24064.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/24064.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题目:<br>百度语言翻译机<br><br>百度的工程师们是非常注重效率的，在长期的开发与测试过程中，他们逐渐创造了一套独特的缩略语。他们在平时的交谈、会议，甚至在各种技术文档中都会大量运用。<br><br>为了让新员工可以更快地适应百度的文化，更好地阅读公司的技术文档，人力资源部决定开发一套专用的翻译系统，把相关文档中的缩略语和专有名词翻译成日常语言。<br><br>输入要求：<br>输入数据包含三部分：<br>1. 第一行包含一个整数N(N<=10000)，表示总共有多少个缩略语的词条；<br><br>2. 紧接着有N行的输入，每行包含两个字符串，以空格隔开。第一个字符串为缩略语（仅包含大写英文字符，长度不超过10字节），第二个字符串为日常语言（不包含空格，长度不超过255字节）；<br><br>3. 从第N+2开始到输入结束为包含缩略语的相关文档（总长度不超过1000000个字节）。例：<br><br>6<br>PS 门户搜索部<br>NLP 自然语言处理<br>PM 产品市场部<br>HR 人力资源部<br>PMD 产品推广部<br>M&nbsp;&nbsp;<a href='http://www.cppblog.com/zuroc/archive/2007/05/13/24064.html'>阅读全文</a><img src ="http://www.cppblog.com/zuroc/aggbug/24064.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2007-05-13 21:25 <a href="http://www.cppblog.com/zuroc/archive/2007/05/13/24064.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[翻译]Berkeley DB 文档 - C++入门篇 - 1.3节 - 访问方式(Access Methods)</title><link>http://www.cppblog.com/zuroc/archive/2007/05/11/23907.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Fri, 11 May 2007 08:49:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2007/05/11/23907.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/23907.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2007/05/11/23907.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/23907.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/23907.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/zuroc/archive/2007/05/11/23907.html'>阅读全文</a><img src ="http://www.cppblog.com/zuroc/aggbug/23907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2007-05-11 16:49 <a href="http://www.cppblog.com/zuroc/archive/2007/05/11/23907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[意译]Berkeley DB 文档 - C++入门篇 - 1.2节 - Berkeley DB 概述</title><link>http://www.cppblog.com/zuroc/archive/2007/05/10/23771.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Thu, 10 May 2007 02:49:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2007/05/10/23771.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/23771.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2007/05/10/23771.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/23771.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/23771.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Berkeley DB是由美国Sleepycat Software公司开发的一套开放源码的嵌入式数据库的程序库（database library），它为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务。Berkeley DB为数据的存取和管理提供了一组简洁的函数调用API接口。<br>	&nbsp;&nbsp;<a href='http://www.cppblog.com/zuroc/archive/2007/05/10/23771.html'>阅读全文</a><img src ="http://www.cppblog.com/zuroc/aggbug/23771.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2007-05-10 10:49 <a href="http://www.cppblog.com/zuroc/archive/2007/05/10/23771.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>  C++ std名字空间ostream_iterator与的诡异问题 </title><link>http://www.cppblog.com/zuroc/archive/2007/05/09/23702.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Wed, 09 May 2007 05:10:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2007/05/09/23702.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/23702.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2007/05/09/23702.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/23702.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/23702.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/zuroc/archive/2007/05/09/23702.html'>阅读全文</a><img src ="http://www.cppblog.com/zuroc/aggbug/23702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2007-05-09 13:10 <a href="http://www.cppblog.com/zuroc/archive/2007/05/09/23702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>boost::asio网络库教程翻译更新中。</title><link>http://www.cppblog.com/zuroc/archive/2006/10/19/13850.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Wed, 18 Oct 2006 16:28:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/10/19/13850.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/13850.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/10/19/13850.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/13850.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/13850.html</trackback:ping><description><![CDATA[Boost.Asio是利用当代C++的先进方法,跨平台,异步I/O模型的C++网络库 <br />现在完成了的小节<br /><br />   1. 网络库:VC2005注意<br />   2. 同步Timer<br />   3. 异步Timer<br />   4. 回调函数的参数<br />   5. 成员函数作为回调函数<br />   6. 多线程回调同步<br /><br /><br />文章见<a href="http://wiki.woodpecker.org.cn/moin/Boost" target="blank"><br />http://wiki.woodpecker.org.cn/moin/Boost</a><br /><br />文章是用wiki写的，有不妥大家可以直接改正，谢谢。<img src ="http://www.cppblog.com/zuroc/aggbug/13850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-10-19 00:28 <a href="http://www.cppblog.com/zuroc/archive/2006/10/19/13850.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Boost.Asio 0.37教程 Timer.1(翻译自Boost.Asio 0.37的文档)</title><link>http://www.cppblog.com/zuroc/archive/2006/08/06/10893.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Sun, 06 Aug 2006 08:06:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/08/06/10893.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/10893.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/08/06/10893.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/10893.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/10893.html</trackback:ping><description><![CDATA[
<p>Boost.Asio 0.37教程 Timer.1(翻译自Boost.Asio 0.37的文档)</p>
<p>原文http://asio.sourceforge.net/boost_asio_0_3_7/libs/asio/doc/</p>
<p>翻译:张沈鹏 <a href="http://blog.csdn.net/zuroc">http://blog.csdn.net/zuroc</a> or <a href="http://www.cppblog.com/zuroc">http://www.cppblog.com/zuroc</a><br />
</p>
<p>Timer.1 - 同步Timer<br />
  本章介绍asio如何在定时器上进行阻塞等待(blocking wait).</p>
<p>实现,我们包含必要的头文件.</p>
<p>所有的asio类可以简单的通过include &quot;asio.hpp&quot;来调用.</p>
<p>#include &lt;iostream&gt;<br />
  #include &lt;boost/asio.hpp&gt;</p>
<p>此外,这个示例用到了timer,我们还要包含Boost.Date_Time的头文件来控制时间.</p>
<p>#include &lt;boost/date_time/posix_time/posix_time.hpp&gt;</p>
<p>使用asio至少需要一个boost::asio::io_service对象.该类提供了访问I/O的功能.我们首先在main函数中声明它.</p>
<p>int main()<br />
  {<br />
  boost::asio::io_service io;</p>
<p>下一步我们声明boost::asio::deadline_timer对象.这个asio的核心类提供I/O的功能(这里更确切的说是定时功能),总是把一个io_service对</p>
<p>象作为他的第一个构造函数,而第二个构造函数的参数设定timer会在5秒后到时(expired).</p>
<p> boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));</p>
<p>这个简单的示例中我们演示了定时器上的一个阻塞等待.就是说,调用boost::asio::deadline_timer::wait()的在创建后5秒内(注意:不是等待</p>
<p>开始后),timer到时之前不会返回任何值.</p>
<p>一个deadline_timer只有两种状态:到时,未到时.如果boost::asio::deadline_timer::wait()在到时的timer上调用,会立即return.</p>
<p> t.wait();</p>
<p> 最后,我们输出理所当然的&quot;Hello, world!&quot;来演示timer到时了.</p>
<p> std::cout &lt;&lt; &quot;Hello, world!\n&quot;;</p>
<p> return 0;<br />
  }</p>
<p>完整的代码:<br />
  #include &lt;iostream&gt;<br />
  #include &lt;boost/asio.hpp&gt;<br />
  #include &lt;boost/date_time/posix_time/posix_time.hpp&gt;</p>
<p>int main()<br />
  {<br />
  boost::asio::io_service io;</p>
<p> boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));<br />
  t.wait();</p>
<p> std::cout &lt;&lt; &quot;Hello, world!\n&quot;;</p>
<p> return 0;<br />
  }<br />
</p>
<img src ="http://www.cppblog.com/zuroc/aggbug/10893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-08-06 16:06 <a href="http://www.cppblog.com/zuroc/archive/2006/08/06/10893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Boost.Asio 0.37简介(翻译自Boost.Asio 0.37的文档的首页)</title><link>http://www.cppblog.com/zuroc/archive/2006/08/06/10891.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Sun, 06 Aug 2006 06:14:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/08/06/10891.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/10891.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/08/06/10891.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/10891.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/10891.html</trackback:ping><description><![CDATA[
<p>Boost.Asio 0.37简介(翻译自Boost.Asio 0.37的文档的首页)<br />
  原文:<a href="http://asio.sourceforge.net/boost_asio_0_3_7/libs/asio/doc/">http://asio.sourceforge.net/boost_asio_0_3_7/libs/asio/doc/</a></p>
<p>翻译:张沈鹏 <a href="http://blog.csdn.net/zuroc" target="_blank">http://blog.csdn.net/zuroc</a> or <a href="http://www.cppblog.com/zuroc" target="_blank">http://www.cppblog.com/zuroc</a></p>
<p>Boost.Asio是利用当代C++的先进方法,跨平台,异步I/O模型的C++网络库.</p>
<p>入门</p>
<p>这个教程介绍了客户端-服务器端的一些基本概念,同时给出了一个示例的小程序.</p>
<p>小程序可以启示Boost.Asio在复杂程序中的应用.</p>
<p>附注</p>
<p>Boost.Asio的大部分功能没有必要编译Boost中的其他库,仅仅需要它们的头文件.然而read_until和async_read_until的重载需要Boost.Regex库(注意:MSVC 或 Borland C++的用户需要在用户设置中加入-DBOOST_ALL_NO_LIB来防止与Boost.Date_Time和Boost.Regex的自动链接)</p>
<p>需要OpenSSL才可以启用SSL支持,但Asio的其他部分不需要它.</p>
<p>已经测试的平台和编译器:</p>
<p> * Win32 using Visual C++ 7.1 and Visual C++ 8.0.<br />
  * Win32 using Borland C++Builder 6 patch 4.<br />
  * Win32 using MinGW.<br />
  * Win32 using Cygwin. (__USE_W32_SOCKETS must be defined.)<br />
  * Linux (2.4 or 2.6 kernels) using g++ 3.3 or later.<br />
  * Solaris using g++ 3.3 or later.<br />
  * Mac OS X 10.4 using g++ 3.3 or later.<br />
  * QNX Neutrino 6.3 using g++ 3.3 or later.</p>
<p>原理:</p>
<p>Boost.Asio可以让程序员用C++的程序体系取代那种需要使用system底层操作的网络编程.特别的值得注意的是,Boost.Asio试图解决一下一些问题.</p>
<p>*可移植性.<br />
  库可以支持并提供一系列常用操作系统的一致行为.</p>
<p>*可测量性:<br />
  库允许并鼓励开发者在网络编程中检测成百或成千并发的连接数.库在各个平台的实现要用这种机制来最优的实现这种可测量性.</p>
<p>*效率:<br />
  库要支持 分散-聚合I/O(scatter-gather I/O) 之类的技术,允许协议的 最小量(minimise) 的数据交换.</p>
<p>*伯克利(Berkeley) sockets模型:<br />
  该模型的API被广泛的采用和理解,被许多文献介绍.其他程序语言通常使用类似网络API的接口.</p>
<p>*易用:<br />
  降低新手使用该工具的入门障碍,胜于框架和模式.也就是说,试图最简化前端的学习,仅仅需要理解一些基本规则和指导方针.此外,库的用户仅需要理解使用到的特定函数.</p>
<p>*可以作为进一步抽象的基础:<br />
  库应该允许其他库的开发者进行更高层的抽象,比如:实现常用的协议Http.</p>
<p>尽管当前的Boost.Asio的实现主要关注的是网络,但异步I/O可以被扩展到其他系统资源,比如 文件.</p>
<img src ="http://www.cppblog.com/zuroc/aggbug/10891.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-08-06 14:14 <a href="http://www.cppblog.com/zuroc/archive/2006/08/06/10891.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>由boost网络库说起...</title><link>http://www.cppblog.com/zuroc/archive/2006/08/05/10878.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Sat, 05 Aug 2006 15:45:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/08/05/10878.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/10878.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/08/05/10878.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/10878.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/10878.html</trackback:ping><description><![CDATA[<p>由boost网络库说起...</p>
<p>文末这篇Email是2006-03-22的,而今天已经2006-8-5日了,我看到asio的soureforge的主页上说.</p>
<p>20 June 2006 - asio version 0.3.7 (development) released.<br />   This release includes major interface changes arising out of the Boost review of asio. <br />   The asio library was accepted into Boost and will appear in a future Boost release.</p><a href="http://www.nttrsk.com"></a>
<p>不过Boost release到现在还是</p>
<p>boost  	1.33.1  	December 5, 2005.</p>
<p>asio不知道还要等到什么时候才在Boost release放出,真是望穿秋水啊.<br />   C++0x标准也是这样,等就一个字.<br />   由此而观,国外C++社区真是小心谨慎,稳定第一,在他们的理念中C++更类似于一件艺术品.反观Java,.Net的日新月异,可以说是功能第一,方便第二,速度第三.商业与学院的区别真是不辨自明.</p>
<p>而在我的理念中,对于面向普通桌面用户(不是专业/行业软件)的由于功能的类似(即使你有一个很有创意的软件,不出几天就会有软件的翻版),界面和速度可能就是生存的关键.对与C++的Gui这一块,我感觉是极端不适应(也许是我水平太差),幸而firefox和Google的一些小程序提供有了一种新的界面思路:一个后台服务+一个微型web服务器+网页界面.利用Ajax技术可以写出很好界面来(我写了一个默写单词软件网页界面的试验品,兼容firefox和IE6,下载地址:<br />   <a target="_blank" href="http://groups.google.com/group/go2program/browse_thread/thread/5ee588253b70df77">http://groups.google.com/group/go2program/browse_thread/thread/5ee588253b70df77</a><a href="#"></a><br />   中的附件 source.rar<br />   )</p>
<p>所有在cpp@codingnow.com中高人的指点下我知道了asio.从而有了上面这些感慨.</p>
<p>下面是我翻译的关于宣布asio成为boost一员的Email,这是我第一次逐字逐句的翻译.水平有限(6级没过),望多指教.<br /> </p>
<p>原文:Jeff Garland <br />   翻译:张沈鹏 <a href="http://blog.csdn.net/zuroc" target="_blank">http://blog.csdn.net/zuroc</a> or <a href="http://www.cppblog.com/zuroc" target="_blank">http://www.cppblog.com/zuroc</a></p>
<p>大家好-<br />   我很高兴的宣布asio(注:网络库)正式成为boost库的一员.正如其他Boost库的审查一样,asio的审查产生了许多的讨论,观点和争辩.评价归结于赞美,包括在工程中成功运用的例子,严肃的(库结构)设计方面的意见.公平的说,在我看来,asio是了一个通用,可靠的库,已经可以被加入Boost库--提供了开发者强烈要求的关键领域的应用.</p>
<p>当然,一如往常,asio还谈不上完美--不少关键性的问题这次审评并没有考虑.在此我仅列举审评中许多的意见中的一部分:</p>
<p>- 修正动态内存分配的问题<br />   - 更改接口以在运行时ipv4和ipv6的无缝切换<br />   - 改进以适应强类型的socket接口(????什么意思,请高手指教)</p>
<p>Chris已经获知了大量关于动态内存分的配解决方案,并且我会就接口和其他方面的问题在Boost的邮件列表上进行跟踪讨论以期能尽善尽美.</p>
<p>其他可以作为进一步增强重要的改进包括:</p>
<p>- 尽可能减少c风格的接口<br />   - 和iostream进一步的整合<br />   - 性能优化<br />   - 改进文档(不要成为Boost w/o this one //???怎么翻译)</p>
<p>Chris has a much longer list of changes garnered from the review and is well on his way to addressing many of them.<br />   Chris有着一个更长的针对审评意见的改进计划表,同时他与建议者有着很好的连续.</p>
<p>注意,有几个讨论是关于性能的,这是asio所涉及领域的核心问题.其中一个就是上面提到的动态内存分配.一般而言,审评者对此的期望很高.然而,在审评讨论之后,在我的印象中许多开发者发现asio只要改进内存分配,它的表现就已经足够胜任重要的工程.(但)我希望Chris在开发asio余下的时间里,可以采纳审评者的一些其他方面的性能意见.</p>
<p>再一次我为Boost社区延迟公布审评结果而抱歉.这次推迟完全是由于我的时间安排问题,与asio无关.再次感谢所有的审评者的贡献,尤其向Chris为Boost添加asio而作出的巨大努力致敬.</p>
<p>原文:<br />   From: Jeff Garland </p>
<p>All -</p>
<p>I'm pleased to announce that asio has been accepted into Boost. As usual with a Boost review, the asio review generated plenty of discussion, issues, and controversy. Comments ranged from high praise,including success stories of projects in production, to serious design concerns and issues. On balance, in my judgment, asio provides a generally solid library that is ready for inclusion into the Boost library -- providing key functionality in an area that developers have a strong need.</p>
<p>Of course, like anything else, asio is not perfect -- a number of key issues were uncovered during the review. In terms of required changes I'm only going to cite a few:</p>
<p>- Fixes to dynamic memory allocation issues<br />   - Interface changes to support ipv4 and ipv6 seamlessly at runtime<br />   - Improvements to support strongly typed socket interfaces</p>
<p>Chris has communicated a couple possible solutions to the memory allocation issue and I'll ask that the interface and other changes for this issue continue to be discussed on the Boost list so consensus can be achieved on the best resolution.</p>
<p>Other key improvements that should be explored as future enhancements include:</p>
<p>- Possible removal of some of the c-style interfaces<br />   - Exploration of higher level iostream integrations<br />   - Performance improvements<br />   - Improved documentation (wouldn't be Boost w/o this one)</p>
<p>Note that there were several threads and discussions about performance,which is particularly critical for the domain covered by asio. One of the performance issues is the dynamic memory allocation issue cited above. In general, the reviewers have extremely high expectations here. However, after reviewing the discussion and library it's my belief that<br />   many developers will find asio performance sufficient to build significant projects with only the memory allocation changes. I expect Chris will be able to address some of the other performance issues cited by reviewers in asio over time.</p>
<p>Once again I'll apologize to the Boost community for the delay in the review results. The delay was entirely due to my own personal scheduling issues and should not reflect on asio in any way. Thanks again to all the reviewers for their effort and especially to Chris for his tremendous effort in bringing asio to Boost!</p>
<p>Jeff </p><img src ="http://www.cppblog.com/zuroc/aggbug/10878.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-08-05 23:45 <a href="http://www.cppblog.com/zuroc/archive/2006/08/05/10878.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>boost::sockets 候选库</title><link>http://www.cppblog.com/zuroc/archive/2006/03/08/3911.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Wed, 08 Mar 2006 13:44:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/03/08/3911.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/3911.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/03/08/3911.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/3911.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/3911.html</trackback:ping><description><![CDATA[<P><A href="http://giallo.sourceforge.net/">http://giallo.sourceforge.net/</A> <BR><SPAN class=h2>Giallo</SPAN> is a C++ library for asynchronous network programming, based on proactor style notification, independent of underlying OS demultiplexing methods. The aim is to get this accepted into <A href="http://www.boost.org/">Boost</A>. <BR><BR><A href="http://asio.sourceforge.net/">http://asio.sourceforge.net/</A> <BR>asio is a cross-platform C++ library for network programming that provides developers with a consistent asynchronous I/O model using a modern C++ approach. </P><img src ="http://www.cppblog.com/zuroc/aggbug/3911.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-03-08 21:44 <a href="http://www.cppblog.com/zuroc/archive/2006/03/08/3911.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[大部分转载]TinyXml笔记</title><link>http://www.cppblog.com/zuroc/archive/2006/01/15/2741.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Sun, 15 Jan 2006 07:19:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2006/01/15/2741.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/2741.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2006/01/15/2741.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/2741.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/2741.html</trackback:ping><description><![CDATA[
		<p>用mingw32-make前修改一下makefile文件,改为如下<br /><br /># DEBUG can be set to YES to include debugging info, or NO otherwise(不是DEBUG)<br />DEBUG          := NO </p>
		<p># PROFILE can be set to YES to include profiling info, or NO otherwise<br />PROFILE        := NO</p>
		<p># TINYXML_USE_STL can be used to turn on STL support. NO, then STL<br /># will not be used. YES will include the STL files.(使用STL,选择的话，则可以使用std::string)<br />TINYXML_USE_STL := YES</p>
		<p>另外可以tinyxml_guide.zip可以下载.</p>
		<p>
				<font color="#ff3300">以下转载</font>:<br /></p>
		<p>TinyXml学习笔记 </p>
		<p>张弛&lt;zhangchi@china.com&gt;</p>
		<p>一、      TinyXml的特点 </p>
		<p>TinyXml是一个基于DOM模型的、非验证的轻量级C++解释器。</p>
		<p>1.      SAX和DOM </p>
		<p>目前XML的解析主要有两大模型：SAX和DOM。</p>
		<p>其中SAX是基于事件的，其基本工作流程是分析XML文档，当发现了一个新的元素时，产生一个对应事件，并调用相应的用户处理函数。这种方式占用内存少，速度快，但用户程序相应得会比较复杂。</p>
		<p>而DOM（文档对象模型），则是在分析时，一次性的将整个XML文档进行分析，并在内存中形成对应的树结构，同时，向用户提供一系列的接口来访问和编辑该树结构。这种方式占用内存大，速度往往慢于SAX，但可以给用户提供一个面向对象的访问接口，对用户更为友好。</p>
		<p>
		</p>
		<p>2.      验证和非验证 </p>
		<p>对于一个特定的XML文档而言，其正确性分为两个层次。首先是其格式应该符合XML的基本格式要求，比如第一行要有声明，标签的嵌套层次必须前后一致等等，符合这些要求的文件，就是一个合格的XML文件，称作well-formatted。但除此之外，一个XML文档因其内容的不同还必须在语义上符合相应的标准，这些标准由相应的DTD文件或者Schema文件来定义，符合了这些定义要求的XML文件，称作valid。</p>
		<p>因此，解析器也分为两种，一种是验证的，即会跟据XML文件中的声明，用相应的DTD文件对XML文件进行校验，检查它是否满足DTD文件的要求。另一种是忽略DTD文件，只要基本格式正确，就可以进行解析。</p>
		<p>就我所知，验证的解析器通常都是比较重量级的。TinyXml不支持验证，但是体积很小，用在解析格式较为简单的XML文件，比如配置文件时，特别的合适。</p>
		<p>
		</p>
		<p>二、 TinyXml的构建和使用<br />1.      获取 </p>
		<p>TinyXml首页在http://www.grinninglizard.com/tinyxml/index.html，从这里可以找到最新版本的源代码，目前的版本是2.3.4。</p>
		<p>2.构建 </p>
		<p>TinyXml在构建时可以选择是否支持STL，选择的话，则可以使用std::string，所以通常应该打开这个选项。</p>
		<p>在Windows上，TinyXml的源码包里提供了VC6的工程文件，直接用它就可以生成两个静态库（带STL和不带STL），非常容易。唯一需要注意的是，默认生成的库是单线程的，如果用在多线程的项目中，需要改动一下配置，生成相应的多线程库。</p>
		<p>在Unix平台上，TinyXml的源码包里只提供了一个Makefile，对于典型的Linux系统，或装了gcc和gmake的其他Unix，这个Makefile足够用了，我在RH9和RHEL4上测试，简单的make就成功了。需要注意的有以下几点：默认的编译是不支持STL的，可以通过编辑Makefile的TINYXML_USE_STL := NO那一行，把NO改成YES就可以支持STL了；还有默认只生成了一个测试程序，没有生成任何库，如果要生成静态库的话，可以用ar命令，将生成的几个目标文件打包就行了，如果要生成动态库，则需要加上-fpic参数重新编译。</p>
		<p>3.      使用 </p>
		<p>构建了相应的库之后，在使用了它们的工程中，只要在连接时把他们连上就行了。需要注意的是，如果需要STL支持，在编译用到了TinyXml的文件时，需要定义一个宏TIXML_USE_STL，对gcc，可以使用参数-DTIXML_USE_STL，对cl.exe（VC），可以使用参数/DTIXML_USE_STL，如果嫌麻烦，可以直接定义在 tinyxml.h文件里。</p>
		<p>
		</p>
		<p>三、 TinyXml的编程模型1.      类之间的关系 </p>
		<p>TinyXml实现的时DOM访问模型，因此提供了一系列的类对应XML文件中的各个节点。主要类间的关系如下图所示：</p>
		<p>
		</p>
		<p>
		</p>
		<p>TiXmlBase：其他类的基类，是个抽象类</p>
		<p>TiXmlNode：表示一个节点，包含节点的一般方法，如访问自节点、兄弟节点、编辑自身、编辑子节电</p>
		<p>TiXmlDocument：表示整个XML文档，不对应其中某个特定的节点。</p>
		<p>TiXmlElement：表示元素节点，可以包含子节点和TiXmlAttribute</p>
		<p>TiXmlComment：表示注释</p>
		<p>TiXmlDeclaration：表示声明</p>
		<p>TiXmlText：表示文本节点</p>
		<p>TiXmlUnknown：表示未知节点，通常是出错了</p>
		<p>TiXmlAttribute：表示一个元素的属性</p>
		<p>下面是一个简单的例子：</p>
		<p>&lt;?xml version="1.0" encoding="utf-8" ?&gt; </p>
		<p>
		</p>
		<p>
		</p>
		<p>&lt;!-This is only a sample--&gt; </p>
		<p>
		</p>
		<p>
		</p>
		<p>&lt;book&gt; </p>
		<p>
		</p>
		<p>
		</p>
		<p>       &lt;name&gt;TinyXml How To&lt;/name&gt; </p>
		<p>
		</p>
		<p>
		</p>
		<p>       &lt;price unit=”RMB”&gt;20&lt;/price&gt; </p>
		<p>
		</p>
		<p>
		</p>
		<p>       &lt;description&gt;Some words…&lt;/description&gt; </p>
		<p>
		</p>
		<p>
		</p>
		<p>&lt;/ book &gt; </p>
		<p>
		</p>
		<p>
		</p>
		<p>整个文档，对应TiXmlDocument</p>
		<p>book,name,price, description，都对应TiXmlElement</p>
		<p>第一行对应一个TiXmlDeclaration</p>
		<p>第二行对应一个TiXmlComment</p>
		<p>“TinyXml How To”对应一个TiXmlText</p>
		<p>unit则是price的一个TiXmlAttribute</p>
		<p>这些类与XML文件中的相应元素都有很好的对应关系，因此相信参照TinyXml的文档，可以很容易的掌握各个方法的使用。</p>
		<p>
		</p>
		<p>2.  需要注意的问题 </p>
		<p>各类之间的转换 </p>
		<p>
		</p>
		<p>
		</p>
		<p>由于各个节点类都从TiXmlNode继承，在使用时常常需要将TiXmlNode*类型的指针转换为其派生类的指针，在进行这种转换时，应该首先使用由TiXmlNode类提供的一系列转换函数，如ToElement(void)，而不是c++的dynamic_cast</p>
		<p>
		</p>
		<p>检查返回值 </p>
		<p>
		</p>
		<p>
		</p>
		<p>由于TinyXml是一个非校验的解析器，因此当解析一个文件时，很可能文件并不包含我们预期的某个节点，在这种情况下，TinyXml将返回空指针。因此，必须要对返回值进行检查，否则将很容易出现内存访问的错误。</p>
		<p>
		</p>
		<p>如何重头建立一个XML文件 </p>
		<p>
		</p>
		<p>
		</p>
		<p>先建立一个TiXmlDocument对象，然后，载入某个模板，或者直接插入一个节点作为根节点，接着就可以像打开一个已有的XML文件那样对它进行操作了。</p>
		<p>
		</p>
		<p>四、总结 </p>
		<p>TinyXml最大的特点就是它很小，可以很方便的静态连接到程序里。对于像配置文件、简单的数据文件这类文件的解析，它很适合。但是由于它是非验证的，因此需要在程序里做许多检查工做，加重了程序编写的负担。因此对于复杂的XML文件，我觉得最好还是用验证的解析器来处理。<br />Trackback: <a href="http://tb.blog.csdn.net/TrackBack.aspx?PostId=477335">http://tb.blog.csdn.net/TrackBack.aspx?PostId=477335</a></p>
<img src ="http://www.cppblog.com/zuroc/aggbug/2741.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2006-01-15 15:19 <a href="http://www.cppblog.com/zuroc/archive/2006/01/15/2741.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ICE相关言论收集</title><link>http://www.cppblog.com/zuroc/archive/2005/11/25/1305.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Fri, 25 Nov 2005 05:56:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2005/11/25/1305.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/1305.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2005/11/25/1305.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/1305.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/1305.html</trackback:ping><description><![CDATA[<A id=Comments1_CommentList__ctl3_NameLink target=_blank>onlyuser</A>：ICE和ACE有啥区别？哪个性能更好些？<A id=Comments1_CommentList__ctl3_EditLink></A> <BR><A id=Comments1_CommentList__ctl5_NameLink HREF="/cpunion/" target=_blank><STRONG><FONT color=#006bad>cpunion</FONT></STRONG></A>：ICE和ACE拿在一起比较不合适，他们的目标都不一样，ICE还是和SOAP之类的东西比较吧。 <BR>网络性能当然是ACE好，ICE的强项是RPC，也就是说它实现了一个协议+运行时，而且跨平台跨语言，比起CORBA来说，ICE不知道轻了多少。 <BR>如果是写一些网络性能要求较高的C/S程序，我觉得还是ACE合适，毕竟还可以选择各种网络模型。如果编写服务，还是选ICE吧，特别是3.0还支持网格。java环境下我比较过SOAP和ICE的性能，同样一个登录服务，ICE一秒钟强调用300次，SOAP只调用了40次。<img src ="http://www.cppblog.com/zuroc/aggbug/1305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2005-11-25 13:56 <a href="http://www.cppblog.com/zuroc/archive/2005/11/25/1305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>学习ICE 3.0</title><link>http://www.cppblog.com/zuroc/archive/2005/11/23/1271.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Wed, 23 Nov 2005 14:01:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2005/11/23/1271.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/1271.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2005/11/23/1271.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/1271.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/1271.html</trackback:ping><description><![CDATA[<h4>写作中....<br>下面是链接,请点击浏览,希望大家多多指教和提意见:0)</h4><h4><a href="http://enjoylanguage.sourceforge.net/%5Bxhtml_chunk_sourceForge%5D/ch02.html">学习ICE 3.0</a>（多个网页）<span class="chapter"></span></h4><h4><span class="chapter"><a href="http://enjoylanguage.sourceforge.net/%5Bxhtml_single_sourceforge%5D/index.htm#id336556">学习ICE 3.0</a>（单个网页）</span><br></h4><span class="chapter">ICE
才出来两年，是“一种现代的面向对象中间件，可用于替代像CORBA或COM/DCOM/COM+这样的中间件。在易于学习的同时，它为各种有着苛刻的技
术要求的应用提供了强大的网络基础设施。”Ice 3.0 已实现对C++, Java, Python, PHP, C# 及 Visual
Basic 的支持。</span><img src ="http://www.cppblog.com/zuroc/aggbug/1271.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2005-11-23 22:01 <a href="http://www.cppblog.com/zuroc/archive/2005/11/23/1271.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的文章整理</title><link>http://www.cppblog.com/zuroc/archive/2005/11/15/1136.html</link><dc:creator>张沈鹏</dc:creator><author>张沈鹏</author><pubDate>Tue, 15 Nov 2005 11:21:00 GMT</pubDate><guid>http://www.cppblog.com/zuroc/archive/2005/11/15/1136.html</guid><wfw:comment>http://www.cppblog.com/zuroc/comments/1136.html</wfw:comment><comments>http://www.cppblog.com/zuroc/archive/2005/11/15/1136.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zuroc/comments/commentRss/1136.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zuroc/services/trackbacks/1136.html</trackback:ping><description><![CDATA[我的文章整理（点击浏览/下载阅读）<BR>
<P>《程序员，在路上……》 <BR><A href="http://www.vckbase.com/document/viewdoc/?id=1551" target=blank>第1节 -- 用OPENGL画出麦克斯维速率分布曲线</A></P>写作中<BR><SPAN class=chapter><A href="http://enjoylanguage.sourceforge.net/%5Bxhtml_chunk_sourceForge%5D/ch03.html">初学wxWidgets</A>（多个网页）<BR></SPAN><SPAN class=chapter><A href="http://enjoylanguage.sourceforge.net/%5Bxhtml_single_sourceforge%5D/index.htm#id405427">初学wxWidgets</A>（单个网页）</SPAN><BR>wxWidgets库的，是一个结构类似于MFC的开源的C++库,它的特点是跨平台:一次编程便可以在从XP到Linux，苹果机，WinCE等等操作系统上重新编译,运行. <BR><BR><SPAN class=chapter><A href="http://enjoylanguage.sourceforge.net/%5Bxhtml_chunk_sourceForge%5D/ch02.html">学习ICE 3.0</A>（多个网页）<BR><SPAN class=chapter><A href="http://enjoylanguage.sourceforge.net/%5Bxhtml_single_sourceforge%5D/index.htm#id336556">学习ICE 3.0</A>（单个网页）</SPAN><BR>ICE才出来两年，是“一种现代的面向对象中间件，可用于替代像CORBA或COM/DCOM/COM+这样的中间件。在易于学习的同时，它为各种有着苛刻的技术要求的应用提供了强大的网络基础设施。”Ice 3.0 已实现对C++, Java, Python, PHP, C# 及 Visual Basic 的支持。</SPAN><img src ="http://www.cppblog.com/zuroc/aggbug/1136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zuroc/" target="_blank">张沈鹏</a> 2005-11-15 19:21 <a href="http://www.cppblog.com/zuroc/archive/2005/11/15/1136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>