﻿<?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>IT博客-习习</title><link>http://www.cnitblog.com/waveform/</link><description>They do what they can do, and We do what we want to do!</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 05:57:35 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 05:57:35 GMT</pubDate><ttl>60</ttl><item><title>这个还是我嘛</title><link>http://www.cnitblog.com/waveform/archive/2006/03/19/7780.html</link><dc:creator>微风</dc:creator><author>微风</author><pubDate>Sun, 19 Mar 2006 12:47:00 GMT</pubDate><guid>http://www.cnitblog.com/waveform/archive/2006/03/19/7780.html</guid><wfw:comment>http://www.cnitblog.com/waveform/comments/7780.html</wfw:comment><comments>http://www.cnitblog.com/waveform/archive/2006/03/19/7780.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/waveform/comments/commentRss/7780.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/waveform/services/trackbacks/7780.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="5" width="600" border="0">
				<tbody>
						<tr>
								<td>
								</td>
								<td>You scored as <b>Theater</b>. You should be a Theater major! Like a bohemian actress, you are seasoned and confident and not afraid to express yourself!<br /><br /><table cellspacing="0" cellpadding="0" width="300" border="0"><tbody><tr><td><p><font face="Arial" size="1">Chemistry</font></p></td><td><table cellspacing="0" cellpadding="0" width="100" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">100%</font></td></tr><tr><td><p><font face="Arial" size="1">Anthropology</font></p></td><td><table cellspacing="0" cellpadding="0" width="100" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">100%</font></td></tr><tr><td><p><font face="Arial" size="1">Theater</font></p></td><td><table cellspacing="0" cellpadding="0" width="100" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">100%</font></td></tr><tr><td><p><font face="Arial" size="1">Philosophy</font></p></td><td><table cellspacing="0" cellpadding="0" width="100" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">100%</font></td></tr><tr><td><p><font face="Arial" size="1">Engineering</font></p></td><td><table cellspacing="0" cellpadding="0" width="100" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">100%</font></td></tr><tr><td><p><font face="Arial" size="1">Dance</font></p></td><td><table cellspacing="0" cellpadding="0" width="92" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">92%</font></td></tr><tr><td><p><font face="Arial" size="1">Journalism</font></p></td><td><table cellspacing="0" cellpadding="0" width="92" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">92%</font></td></tr><tr><td><p><font face="Arial" size="1">Psychology</font></p></td><td><table cellspacing="0" cellpadding="0" width="92" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">92%</font></td></tr><tr><td><p><font face="Arial" size="1">Sociology</font></p></td><td><table cellspacing="0" cellpadding="0" width="92" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">92%</font></td></tr><tr><td><p><font face="Arial" size="1">Linguistics</font></p></td><td><table cellspacing="0" cellpadding="0" width="83" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">83%</font></td></tr><tr><td><p><font face="Arial" size="1">Mathematics</font></p></td><td><table cellspacing="0" cellpadding="0" width="83" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">83%</font></td></tr><tr><td><p><font face="Arial" size="1">Biology</font></p></td><td><table cellspacing="0" cellpadding="0" width="75" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">75%</font></td></tr><tr><td><p><font face="Arial" size="1">English</font></p></td><td><table cellspacing="0" cellpadding="0" width="75" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">75%</font></td></tr><tr><td><p><font face="Arial" size="1">Art</font></p></td><td><table cellspacing="0" cellpadding="0" width="67" bgcolor="#dddddd" border="1"><tbody><tr><td></td></tr></tbody></table></td><td><font face="Arial" size="1">67%</font></td></tr></tbody></table></td>
						</tr>
				</tbody>
		</table>
		<br />
		<a href="http://quizfarm.com/test.php?q_id=119158">What is your Perfect Major? (PLEASE RATE ME!!&lt;3)</a>
		<br />
		<font face="Arial" size="1">created with <a href="http://quizfarm.com/">QuizFarm.com</a></font>
<img src ="http://www.cnitblog.com/waveform/aggbug/7780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/waveform/" target="_blank">微风</a> 2006-03-19 20:47 <a href="http://www.cnitblog.com/waveform/archive/2006/03/19/7780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最近的书单</title><link>http://www.cnitblog.com/waveform/archive/2005/11/26/4928.html</link><dc:creator>微风</dc:creator><author>微风</author><pubDate>Sat, 26 Nov 2005 10:04:00 GMT</pubDate><guid>http://www.cnitblog.com/waveform/archive/2005/11/26/4928.html</guid><wfw:comment>http://www.cnitblog.com/waveform/comments/4928.html</wfw:comment><comments>http://www.cnitblog.com/waveform/archive/2005/11/26/4928.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/waveform/comments/commentRss/4928.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/waveform/services/trackbacks/4928.html</trackback:ping><description><![CDATA[前段时间在工作上花了不少时间，大多数IT人事应该都不会忘记的加班的味道是尝了个够。大家奋斗的结果是driver 的quarlity得到了MS的认可，终于进入了Longhorn的inbox。现在，bug越来越少但也越来越难修了。最讨厌的还是随机的bug，太难"丢"了。<BR>终于有时间可以好好看看自己想看的书了，其实仔细想来最近也还是看了不少书的索性就列个书单，有同好者不妨一起来谈谈看书的感受啊！<BR><BR>最近已看书：<BR>&lt;&lt;许三观卖血记&gt;&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 连着两个夜晚12:00以后的时间把小说翻完了，的确比看技术书要快的多。很感谢余华最后对许三观一家的仁慈，不过这本小说的文风不是我所欣赏的，也许的确是太浮躁了，内心里还是更欣赏散文的风格。<BR><BR>&lt;&lt;刘心武揭密红楼梦&gt;&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实自己对《红楼梦》并没有什么感情，说来惭愧，至今也只翻过半本。想来留下印象最深的居然还是被选入初中课本的&lt;&lt;贾雨村夤缘复旧职&nbsp; 林黛玉抛父进京都&gt;&gt;一回。但是对于红学我却感到很有意思，一本书能惯之于“学”，还有不同的流派，想来就是件有趣的事。不过刘心武说到底还算不上红学中人，且不说媒体上的纷纷扰扰，单是刘本人在央视“揭密”的翻来覆去表现出的不自信就足以明证这一点了。不过话说回来，能够把《红》从神坛上拉下来，“走入寻常百姓家”，更多的年轻人（包括我）开始尝试阅读这本书，怎么说也算是大功一件。所以，刘大可效仿一把“郎闲评”，自己揭自己的红楼，唱自己的“秦学”，至于到底怎样揭才是正宗，本来就是“子虚乌有，死无对证”的事，理他作甚。<BR><BR>&lt;&lt;C++ Network Programming vol 1&gt;&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 与其说是"C++ Network Programming"，不如说是&lt;&lt;Design &amp; Evolution of Patterns in Network Programming&gt;&gt;。NP写的是ACE 的design和framework，不是单纯的programming。像ACE这样的framework还是huge了一些。^_^。很难说<SPAN class=speakerName>Bjarne Stroustrup </SPAN>把他加入C++ in Depth系列的目的到底是为了什么，^_^<BR><BR>正在看的书<BR>&lt;&lt;内存受限系统之软件开发&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50%<BR>&lt;&lt;C++ Network Programming vol 2&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp; 15%<BR>&lt;&lt;旅行的艺术&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15%<BR>&lt;&lt;最后期限&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30%&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不知谁有全的电子版，我找来找去只有&lt;&lt;最后期限&gt;&gt;的前十章。<BR><BR>近期想要看的书<BR>&lt;&lt;The Art of C++&gt;&gt;<BR>&lt;&lt;Pride and Prejudice&gt;&gt;<BR>&lt;&lt;POSA vol 3&gt;&gt;<BR><BR><img src ="http://www.cnitblog.com/waveform/aggbug/4928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/waveform/" target="_blank">微风</a> 2005-11-26 18:04 <a href="http://www.cnitblog.com/waveform/archive/2005/11/26/4928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的人格类型</title><link>http://www.cnitblog.com/waveform/archive/2005/10/30/3681.html</link><dc:creator>微风</dc:creator><author>微风</author><pubDate>Sat, 29 Oct 2005 17:23:00 GMT</pubDate><guid>http://www.cnitblog.com/waveform/archive/2005/10/30/3681.html</guid><wfw:comment>http://www.cnitblog.com/waveform/comments/3681.html</wfw:comment><comments>http://www.cnitblog.com/waveform/archive/2005/10/30/3681.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/waveform/comments/commentRss/3681.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/waveform/services/trackbacks/3681.html</trackback:ping><description><![CDATA[<P>心血来潮，做了一个简短的MBTI的测试。留个纪念，不知道2年后回头看回是什么样的感受？<IMG height=19 src="http://www.cnitblog.com/Emoticons/QQ/icon12.gif" width=19 border=0><BR><A href="http://www.chinahrd.net/renliziyuan_yjh/qu_MBTI.asp">http://www.chinahrd.net/renliziyuan_yjh/qu_MBTI.asp<BR><BR></A>
<TABLE cellSpacing=1 cellPadding=1 width="100%" align=center border=0>
<TBODY>
<TR bgColor=#cc3333>
<TD bgColor=#cc3300>
<DIV class=h12180 align=center><STRONG><FONT color=#ffffff>您的人格类型是： INFJ （内向－直觉－情感－判断）</FONT></STRONG></DIV></TD></TR>
<TR bgColor=#ffffff>
<TD><SPAN class=h12180><BR></SPAN>
<TABLE cellSpacing=0 cellPadding=0 width="90%" align=center border=0>
<TBODY>
<TR>
<TD><SPAN class=h12180><STRONG>您的工作中的优势：</STRONG><BR>　　◆ 诚实认真，从而鼓励着人们重视你的想法<BR>　　◆ 对于那些对你很重要的项目你专注执着<BR>　　◆ 坚决果断，并有高度的组织能力<BR>　　◆ 有创造力，能提出独树一帜的解决问题的方法<BR>　　◆ 与别人情感交融，可以预见别人的需要<BR>　　◆ 能以透视法看到事情发展的宏观图像以及意识与行为之间未来的潜在联系<BR>　　◆ 有理解复杂概念的能力<BR>　　◆ 对别人真正关心，有帮助别人成长和发展的才能<BR>　　◆ 独立，有很强的个人信念<BR>　　◆ 有做出成绩，不达到目的不罢休的干劲<BR>　　◆ 对自己信仰的事业尽职尽责<BR><BR><STRONG>您工作中可能存在的不足：</STRONG><BR>　　◆ 过分的专心致志，结果可能导致死板<BR>　　◆ 对于要做完一件要花多长时间事情心里没有数<BR>　　◆ 很难做与自己价值观相违背的事情<BR>　　◆ 对计划的可能性有不切实际的倾向<BR>　　◆ 一旦做出决定就不愿意再回头审视一下，更不愿意撤销决定<BR>　　◆ 不会处理矛盾，易于忽略不快<BR>　　◆ 很难拉下面子客观，直接地训诫下属<BR>　　◆ 很难把复杂的想法简明地表达出来<BR>　　◆ 易于仓促下判断<BR></SPAN></TD></TR></TBODY></TABLE><SPAN class=h12180></SPAN></TD></TR></TBODY></TABLE></P><img src ="http://www.cnitblog.com/waveform/aggbug/3681.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/waveform/" target="_blank">微风</a> 2005-10-30 01:23 <a href="http://www.cnitblog.com/waveform/archive/2005/10/30/3681.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>涂鸦</title><link>http://www.cnitblog.com/waveform/archive/2005/10/15/3307.html</link><dc:creator>微风</dc:creator><author>微风</author><pubDate>Fri, 14 Oct 2005 16:20:00 GMT</pubDate><guid>http://www.cnitblog.com/waveform/archive/2005/10/15/3307.html</guid><wfw:comment>http://www.cnitblog.com/waveform/comments/3307.html</wfw:comment><comments>http://www.cnitblog.com/waveform/archive/2005/10/15/3307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/waveform/comments/commentRss/3307.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/waveform/services/trackbacks/3307.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;好久好久没有来这里，转眼竟荒芜了两月有余。想来惭愧，原先所谓的blog driver竟成了一纸空言。<BR>&nbsp;&nbsp;&nbsp;这么长一段时间没有来这里，不是我忘了这个blog，实在是事出有因。懈怠是有一点，但真正影响我的是体检的结果。原先计划的好多东西都没有机会来得及实现。在医院的日子里，才恍然明白生命有多脆弱。再远大的理想没有健康的身体作保证，换来的只能是一声叹息啊！套用句笑谈：“珍惜生命，远离电脑”。所以告诫自己也提醒同仁：请在工作之余，留点时间给你的家人和你自己。毕竟工作不是生活的全部，也不是生活的主旨。请多重视和关心自己的身体。<BR>&nbsp;&nbsp;&nbsp;好了，既然大难不死，就要blog不止。我不欣赏那种流水帐似的心情小记，也不习惯使用blog来作为自己的便笺本，剩下的就只是骨子里对原创的那么点向往了。结合我的工作和前段时间看的书，接下来的日子，大概有这么几个打算：<BR>&nbsp;&nbsp;&nbsp;A. 继续前段时间对ZThread轻量级跨平台线程库的源码分析，将其中的经历和感受写下来。一来让新用户能更快的上手，二来也帮助自己抵御那拙劣的记性。<BR>&nbsp;&nbsp;&nbsp;B. 最近和朋友打算投入到火热的开源事业中去，初步决定要修改或翻新UCDMC这个轻量级DICOM通信库。为此最近看了不少ACE相关的书，打算写些简单的读书笔记。<BR>&nbsp;&nbsp;&nbsp;C. 自己在电脑面前常常忘了时间，感觉需要一个好一点的定时器来提醒自己。本来想将就着MS的计划任务算了，但是他缺少了许多对我自己来说必不可少的功能。正好想尝试一下测试驱动开发，所以干脆就想自己写一个了。目前计划可能是简单的win32 trayicon程序或者是google desktop 2 的一个插件。至于具体哪种形式还要看精力是否允许了。<BR>&nbsp;&nbsp;&nbsp;好了，ABCD的八股文写完了，时间也不早了。那么，熄灯，睡觉，享受美味的梦乡。</P><img src ="http://www.cnitblog.com/waveform/aggbug/3307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/waveform/" target="_blank">微风</a> 2005-10-15 00:20 <a href="http://www.cnitblog.com/waveform/archive/2005/10/15/3307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>上次C++试卷的答案</title><link>http://www.cnitblog.com/waveform/archive/2005/08/06/1368.html</link><dc:creator>微风</dc:creator><author>微风</author><pubDate>Sat, 06 Aug 2005 08:58:00 GMT</pubDate><guid>http://www.cnitblog.com/waveform/archive/2005/08/06/1368.html</guid><wfw:comment>http://www.cnitblog.com/waveform/comments/1368.html</wfw:comment><comments>http://www.cnitblog.com/waveform/archive/2005/08/06/1368.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/waveform/comments/commentRss/1368.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/waveform/services/trackbacks/1368.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp; 实际上，那份试卷是我出的，也许说是我参考着出的更合适（嘿，楼上的，你拣板砖干什么）。那时我们组需要完成一个不算小的项目，但人手不足。面对这个不算小的项目，我希望新进员工能具备该项目所需的一些知识和技能。因此在出卷过程中，我尽量强调了对C++基础概念的理解，但不可避免的，也带入了不少个人的喜好。但我依然希望这份试卷能帮你复习些概念，并让你回想起曾经疯狂投简历，参加各类考试，累得人仰马翻、口吐白沫，还被迫不停复述个人简历的日子。<BR>&nbsp;&nbsp;&nbsp; 那时的我们懵懂、无奈、痛苦而又充实。<BR><BR>1.解<BR>&nbsp;&nbsp;&nbsp; a=a^b;<BR>&nbsp;&nbsp;&nbsp; b=b^a;<BR>&nbsp;&nbsp;&nbsp; a=a^b;<BR><BR>下面的解法在极端情况下会溢出<BR>&nbsp;&nbsp;&nbsp; a=a+b;<BR>&nbsp;&nbsp;&nbsp; b=a-b;<BR>&nbsp;&nbsp;&nbsp; a=a-b;<BR><BR>2.解<BR>A:8&nbsp;&nbsp;&nbsp; 对齐<BR>B:12&nbsp;&nbsp; 4*2+4=12 普通成员函数不占空间，虚函数共用一个vprt指针<BR>C:1&nbsp;&nbsp;&nbsp; 相当于一个空类，依赖编译器的实现。但不应是0。</P>
<P>3.解<BR>A f()<BR>B f()<BR>C f()<BR>C f()<BR>----------<BR>B ff()<BR>B f()<BR>A ff()<BR>A f()<BR>B ff()<BR>C f()<BR>A ff()<BR>A f()<BR></P>
<P>4.解:<BR>&nbsp;&nbsp;&nbsp; void clear(Stack&amp; stack)<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(int i=0,count=stack.count();i<COUNT;I++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stack.pop();<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;原题的错误是因为随着stack.pop()的不断进行，stack.count()的值也在不断减少。这个所谓的clear函数只能清除原有堆栈内(count+1)/2个结点。更有意思的是这个错误是当时我在msdn里发现的。如果没有记错，应该是MSDN2000 Oct，有关CListCtrl::DeleteItem的示例。不过在MSDN2003里已经修改过来了。<IMG height=20 src="http://www.cnitblog.com/Emoticons/QQ/14.gif" width=20 border=0><BR><BR>5.解:伪码如下<BR>&nbsp;&nbsp;&nbsp; class Singleton<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private static Singleton m_instance = NULL;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Singleton(){}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static Singleton getInstance()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m_instance==NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //*CREASECTION BEGIN<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(m_instance==NULL)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_instance==new Singleton();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //*CREASECTION END<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR><BR>6.基本思路是将该指针所指结点的下一结点的值复制到当前结点处，并删除下一结点<BR>伪码是<BR>&nbsp;&nbsp;&nbsp; ptemp=ptoken-&gt;next;<BR>&nbsp;&nbsp;&nbsp; ptoken-&gt;value=ptemp-&gt;value;<BR>&nbsp;&nbsp;&nbsp; ptoken-&gt;next=ptemp-&gt;next;<BR>&nbsp;&nbsp;&nbsp; free(ptemp);</P>
<P>7.解<BR>添加类logger和全局对象g_logger即可<BR>class logger<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; logger(){cout&lt;&lt;"Initialize\n";}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ~logger(){cout&lt;&lt;"Clean up\n";}<BR>}<BR>logger g_logger;</P>
<P>8.解：这是出现频率最高的笔试题，应该源自于林锐的《C/C++高级编程指南》<BR>&nbsp;&nbsp;&nbsp; 关键字：C++,strcpy,字符串,复制,拷贝,copy,笔试,试题<BR>&nbsp;&nbsp;&nbsp; 题目：<BR>&nbsp;&nbsp;&nbsp; 已知strcpy函数的原型是：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char * strcpy(char * strDest,const char * strSrc);<BR>&nbsp;&nbsp;&nbsp; 1.不调用库函数，实现strcpy函数。<BR>&nbsp;&nbsp;&nbsp; 2.解释为什么要返回char *。<BR>&nbsp;&nbsp;&nbsp; 解说：<BR>&nbsp;&nbsp;&nbsp; 1.strcpy的实现代码<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char * strcpy(char * strDest,const char * strSrc)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((strDest==NULL)||(strSrc==NULL)) //[1]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; throw "Invalid argument(s)"; //[2]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char * strDestCopy=strDest;&nbsp; //[3]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ((*strDest++=*strSrc++)!='\0'); //[4]<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return strDestCopy;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; 错误的做法：<BR>&nbsp;&nbsp;&nbsp; [1]<BR>&nbsp;&nbsp;&nbsp; (A)不检查指针的有效性，说明答题者不注重代码的健壮性。<BR>&nbsp;&nbsp;&nbsp; (B)检查指针的有效性时使用((!strDest)||(!strSrc))或(!(strDest&amp;&amp;strSrc))，<BR>说明答题者对C语言中类型的隐式转换没有深刻认识。在本例中char *转换为bool即是类<BR>型隐式转换，这种功能虽然灵活，但更多的是导致出错概率增大和维护成本升高。所以<BR>C++专门增加了bool、true、false三个关键字以提供更安全的条件表达式。<BR>&nbsp;&nbsp;&nbsp; (C)检查指针的有效性时使用((strDest==0)||(strSrc==0))，说明答题者不知道使<BR>用常量的好处。直接使用字面常量（如本例中的0）会减少程序的可维护性。0虽然简单<BR>，但程序中可能出现很多处对指针的检查，万一出现笔误，编译器不能发现，生成的程<BR>序内含逻辑错误，很难排除。而使用NULL代替0，如果出现拼写错误，编译器就会检查出<BR>来。<BR>&nbsp;&nbsp;&nbsp; [2]<BR>&nbsp;&nbsp;&nbsp; (A)return new string("Invalid argument(s)");，说明答题者根本不知道返回值<BR>的用途，并且他对内存泄漏也没有警惕心。从函数中返回函数体内分配的内存是十分危<BR>险的做法，他把释放内存的义务抛给不知情的调用者，绝大多数情况下，调用者不会释<BR>放内存，这导致内存泄漏。<BR>&nbsp;&nbsp;&nbsp; (B)return 0;，说明答题者没有掌握异常机制。调用者有可能忘记检查返回值，调<BR>用者还可能无法检查返回值（见后面的链式表达式）。妄想让返回值肩负返回正确值和<BR>异常值的双重功能，其结果往往是两种功能都失效。应该以抛出异常来代替返回值，这<BR>样可以减轻调用者的负担、使错误不会被忽略、增强程序的可维护性。<BR>&nbsp;&nbsp;&nbsp; [3]<BR>&nbsp;&nbsp;&nbsp; (A)忘记保存原始的strDest值，说明答题者逻辑思维不严密。<BR>&nbsp;&nbsp;&nbsp; [4]<BR>&nbsp;&nbsp;&nbsp; (A)循环写成while (*strDest++=*strSrc++);，同[1](B)。<BR>&nbsp;&nbsp;&nbsp; (B)循环写成while (*strSrc!='\0') *strDest++=*strSrc++;，说明答题者对边界<BR>条件的检查不力。循环体结束后，strDest字符串的末尾没有正确地加上'\0'。<BR>&nbsp;&nbsp;&nbsp; 2.返回strDest的原始值使函数能够支持链式表达式，增加了函数的“附加值”。同<BR>样功能的函数，如果能合理地提高的可用性，自然就更加理想。<BR>&nbsp;&nbsp;&nbsp; 链式表达式的形式如：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int iLength=strlen(strcpy(strA,strB));<BR>&nbsp;&nbsp;&nbsp; 又如：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char * strA=strcpy(new char[10],strB);<BR>&nbsp;&nbsp;&nbsp; 返回strSrc的原始值是错误的。其一，源字符串肯定是已知的，返回它没有意义。<BR>其二，不能支持形如第二例的表达式。其三，为了保护源字符串，形参用const限定str<BR>Src所指的内容，把const char *作为char *返回，类型不符，编译报错。</P><img src ="http://www.cnitblog.com/waveform/aggbug/1368.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/waveform/" target="_blank">微风</a> 2005-08-06 16:58 <a href="http://www.cnitblog.com/waveform/archive/2005/08/06/1368.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>今天你C＋＋了嘛？</title><link>http://www.cnitblog.com/waveform/archive/2005/08/03/1263.html</link><dc:creator>微风</dc:creator><author>微风</author><pubDate>Tue, 02 Aug 2005 16:09:00 GMT</pubDate><guid>http://www.cnitblog.com/waveform/archive/2005/08/03/1263.html</guid><wfw:comment>http://www.cnitblog.com/waveform/comments/1263.html</wfw:comment><comments>http://www.cnitblog.com/waveform/archive/2005/08/03/1263.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/waveform/comments/commentRss/1263.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/waveform/services/trackbacks/1263.html</trackback:ping><description><![CDATA[<P dir=ltr style="MARGIN-RIGHT: 0px">&nbsp;&nbsp;&nbsp; 最近几天事情特别多，阅读的进展也不大。有很多有意思的计划也只能搁置中。为了免于荒疏，先贴一份先前公司笔试用的卷子吧。出的有点偏，不过总算还有点子丑寅卯。有兴趣的不妨做做，明天公布所谓的正确答案。<BR><BR>1.不使用其他任何变量，请写出交换变量a和b的函数<BR>void swap(int &amp;a,int &amp;b)<BR>{<BR>&nbsp;&nbsp;&nbsp; //...<BR>}</P>
<P dir=ltr style="MARGIN-RIGHT: 0px">2.请写出以下结构或类的大小(sizeof的输出值),并给出简要的解释.<BR>//A:<BR>typedef struct<BR>{<BR>&nbsp;char c1;<BR>&nbsp;char c2;<BR>&nbsp;int n;<BR>} stru;<BR>//B:<BR>class ClassA<BR>{<BR>&nbsp;public:<BR>&nbsp;int m_data1;<BR>&nbsp;int m_data2;<BR>&nbsp;void func1() { }<BR>&nbsp;void func2() { }<BR>&nbsp;virtual void vfunc1() { }<BR>&nbsp;virtual void vfunc2() { }<BR>};<BR>//C:<BR>struct ClassB {<BR>&nbsp;void f();<BR>};<BR>B::f(){}</P>
<P dir=ltr style="MARGIN-RIGHT: 0px">3.写出下列程序的输出结果<BR>class A<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp; void f(){cout&lt;&lt;"A f()"&lt;&lt;endl;}<BR>&nbsp;&nbsp;&nbsp; virtual void ff(){cout&lt;&lt;"A ff()"&lt;&lt;endl;f();}<BR>};<BR>class B:public A<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp; virtual void f(){cout&lt;&lt;"B f()"&lt;&lt;endl;}<BR>&nbsp;&nbsp;&nbsp; void ff(){cout&lt;&lt;"B ff()"&lt;&lt;endl;f();A::ff();}<BR>};<BR>class C:public B<BR>{<BR>public:<BR>&nbsp;&nbsp;&nbsp; virtual void f(){cout&lt;&lt;"C f()"&lt;&lt;endl;}<BR>};<BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp; B b;<BR>&nbsp;&nbsp;&nbsp; A *ap=&amp;b;<BR>&nbsp;&nbsp;&nbsp; C c;<BR>&nbsp;&nbsp;&nbsp; B &amp;br=c;<BR>&nbsp;&nbsp;&nbsp; B *bp=&amp;c;<BR>&nbsp;&nbsp;&nbsp; ap-&gt;f();<BR>&nbsp;&nbsp;&nbsp; b.f();<BR>&nbsp;&nbsp;&nbsp; br.f();<BR>&nbsp;&nbsp;&nbsp; bp-&gt;f();<BR>&nbsp;&nbsp;&nbsp; cout&lt;&lt;"----------\n";<BR>&nbsp;&nbsp;&nbsp; ap-&gt;ff();<BR>&nbsp;&nbsp;&nbsp; bp-&gt;ff();<BR>}</P>
<P dir=ltr style="MARGIN-RIGHT: 0px">4.改错题<BR>下面函数实现了将一堆栈内数据的清空功能，请试着找出程序中存在的问题<BR>class Stack<BR>{<BR>...<BR>int pop(void);&nbsp;&nbsp;&nbsp; //出栈<BR>void push(int);&nbsp;&nbsp; //压栈<BR>int count(void);&nbsp; //返回栈内元素的个数<BR>};</P>
<P dir=ltr style="MARGIN-RIGHT: 0px">void clear(Stack&amp; stack)<BR>{<BR>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;stack.count();i++)<BR>&nbsp;stack.pop();<BR>}</P>
<P dir=ltr style="MARGIN-RIGHT: 0px">5.请使用c++实现一线程安全的单例类,请尽可能提高单例的效率。只要表现出设计思路即可，不强求语法正确性。</P>
<P dir=ltr style="MARGIN-RIGHT: 0px">6.有一单向链表list，一指针ptoken指向链表中某一结点(可能为头或中间结点，不为尾结点)<BR>试问，在丢失头结点指针的情况下，如何从链表中删除该指针所指的结点。<BR>可用伪代码简易给出实现思路。</P>
<P dir=ltr style="MARGIN-RIGHT: 0px">7.以下函数输出结果为Hello world<BR>如何在不修改main()函数体的条件下使程序输出结果为<BR>Initialize<BR>Hello world<BR>Clean up</P>
<P dir=ltr style="MARGIN-RIGHT: 0px">#include &lt;iostream.h&gt;<BR>void main()<BR>{<BR>&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Hello world" &lt;&lt; endl;<BR>}</P>
<P dir=ltr style="MARGIN-RIGHT: 0px">8.编程题：<BR>&nbsp;&nbsp;&nbsp; 已知strcpy函数的原型是：<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char * strcpy(char * strDest,const char * strSrc);<BR>&nbsp;&nbsp;&nbsp; 1.不调用库函数，实现strcpy函数。<BR>&nbsp;&nbsp;&nbsp; 2.解释为什么要返回char *。</P><img src ="http://www.cnitblog.com/waveform/aggbug/1263.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/waveform/" target="_blank">微风</a> 2005-08-03 00:09 <a href="http://www.cnitblog.com/waveform/archive/2005/08/03/1263.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我正有写一点东西的必要了</title><link>http://www.cnitblog.com/waveform/archive/2005/07/29/1169.html</link><dc:creator>微风</dc:creator><author>微风</author><pubDate>Thu, 28 Jul 2005 16:57:00 GMT</pubDate><guid>http://www.cnitblog.com/waveform/archive/2005/07/29/1169.html</guid><wfw:comment>http://www.cnitblog.com/waveform/comments/1169.html</wfw:comment><comments>http://www.cnitblog.com/waveform/archive/2005/07/29/1169.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/waveform/comments/commentRss/1169.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/waveform/services/trackbacks/1169.html</trackback:ping><description><![CDATA[<P><FONT size=1>&nbsp;&nbsp;&nbsp;时不时的总会想起鲁迅先生的那段话，却每每总在犹豫不绝中断了写点什么的念头，然而忘却似乎总比预想的来得要早。无缘亲近的不仅是那灵光一闪的idea，更多的则是消逝了的成长轨迹。为了曾经忘却的技艺和早已不真切的点滴记忆，我觉得是时候该敲点什么了。该来的时候来，该走的时候走。生活本应如此自然而适意。那么，在IT人枯燥甚至乏味的工作背后，敲一敲键盘留下点属于自己的东西，也算不上是一种奢侈吧。<BR><BR>&nbsp;&nbsp;&nbsp;blog之于博客，犹如盛满了舒情、滥情、宣泄、偷窥等各式欲望的潘多拉盒。每个人都有自己的看法，如同每个截然不同、性格各异的blog。之于我，blog更多的意味着一种宣泄。其实仔细想想，宣泄和作秀很像，都是是需要卖点和看客的。宣泄没有了卖点也就激不起喝彩，故而频添了“看贴不回贴”的沮丧；失去了看客的宣泄至多只能算顾影自恋、暗自神伤。这样的宣泄不相容于那一篇篇欲被窥视的blog，这样的blog，本身就是一场光怪陆离的秀。自然能够经营一份属于自己的blog，换几分喝彩亦或叫骂，于我便是知足。如能借blog之东风而交三两知己，觥筹交错，天南海北，共剪西窗烛，那更是“幸甚至哉，歌以咏志”了。<BR><BR>&nbsp;&nbsp;&nbsp;既然身在IT博客网，自是IT人。所以还是说说我的技术偏好吧。个人比较喜欢C/C++、Python，对XP和Design Pattern也很感兴趣。目前的我主要精力都放在C++ Template 和Generic Program的学习上了，期待能和同好者一起交流、相互探讨，共同享受这美好的滋味。如若不出意外，最先添加的应该是我自己对于boost、loki等范形库的读书笔记吧。<BR><BR>&nbsp;&nbsp;&nbsp;最后，为了庆祝自己在IT博客网的第一篇blog的顺利诞生，本人隆重推出GMail的彩蛋10个（似乎貌似真的已经很过时了 <IMG height=19 src="http://www.cnitblog.com/Emoticons/red_smile.gif" width=19 border=0>），按照FIFO的规则，送完及止。最重要的一点是：一经送出，概不负责哈。<IMG height=19 src="http://www.cnitblog.com/Emoticons/regular_smile.gif" width=19 border=0></FONT></P><img src ="http://www.cnitblog.com/waveform/aggbug/1169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/waveform/" target="_blank">微风</a> 2005-07-29 00:57 <a href="http://www.cnitblog.com/waveform/archive/2005/07/29/1169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>