<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>hATEmATH的网上田园</title><link>http://blog.vckbase.com/hatemath/</link><description>&lt;BR&gt;&lt;FONT color=rgb(200,100,0) size=2&gt; 喂马 劈柴 做一个幸福的人&lt;/FONT&gt;</description><managingEditor>hATEmATH的网上田园</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>hATEmATH的网上田园</dc:creator><title>BASE64编解码JPG图片的例子(C++ VS2005)</title><link>http://blog.vckbase.com/hatemath/archive/2008/09/01/34871.html</link><pubDate>Mon, 01 Sep 2008 01:48:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2008/09/01/34871.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/34871.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2008/09/01/34871.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/34871.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/34871.html</trackback:ping><description>&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BASE64这种编码挺有意思的，可以把每3个（二进制）字节编码成以ASCII码表示的4个字节。可能会有人觉得奇怪，网页保存为mht格式后，明明只有一个文本文件，可是用浏览器打开后居然还有图片。其实，用记事本打开这些mht文件，可以看到一堆堆的&amp;#8221;乱码&amp;#8220;，这往往就是BASE64编码后的图片了。由于最近项目用到这个东西，于是去CSDN上下了个BASE64编解码的C++类。因为对效率没有特别的要求，所以只是用小图片试了一下，能用。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;该类使用起来很简单：&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;main(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;argc,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;argv[])&lt;BR&gt;&lt;IMG id=Codehighlighter1_33_302_Open_Image onclick="this.style.display='none'; Codehighlighter1_33_302_Open_Text.style.display='none'; Codehighlighter1_33_302_Closed_Image.style.display='inline'; Codehighlighter1_33_302_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_33_302_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_33_302_Closed_Text.style.display='none'; Codehighlighter1_33_302_Open_Image.style.display='inline'; Codehighlighter1_33_302_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_33_302_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_33_302_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;strJpg;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Base64&amp;nbsp;bs;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;read_from_binary_file(strJpg); // 读取文件&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;strEncode&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;bs.base64_encode(strJpg); // 编码&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;strDecode&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;bs.base64_decode(strEncode); //解码&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;write_to_binary_file(strDecode); // 写入文件&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;%s %s &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;,&amp;nbsp;strEncode.c_str(),&amp;nbsp;strDecode.c_str()); // 在控制台打印&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;例子（源码+demo）下载：&lt;BR&gt;&lt;A href="http://blog.vckbase.com/Files/HateMath/base64_codec_jpg_test.rar"&gt;http://blog.vckbase.com/Files/HateMath/base64_codec_jpg_test.rar&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/34871.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title>飞了一趟广州</title><link>http://blog.vckbase.com/hatemath/archive/2008/08/12/34635.html</link><pubDate>Tue, 12 Aug 2008 06:11:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2008/08/12/34635.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/34635.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2008/08/12/34635.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/34635.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/34635.html</trackback:ping><description>&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt; &lt;IMG height=20 src="/Emoticons/QQ/15.gif" width=20 border=0&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG src="/images/vckbase_com/hatemath/1183/o_a2ae79213b1a2b3e9d3905c6ed93fa04.jpg" border=0&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/34635.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title>《高质量C++编程指南》 摘录</title><link>http://blog.vckbase.com/hatemath/archive/2008/07/29/34526.html</link><pubDate>Tue, 29 Jul 2008 09:32:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2008/07/29/34526.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/34526.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2008/07/29/34526.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/34526.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/34526.html</trackback:ping><description>&lt;P&gt;&lt;BR&gt;是摘录，所以只是自己感兴趣的部分，一般是自己不熟悉的地方和觉得讲述的很好的地方。&lt;BR&gt;&lt;BR&gt;第六章&amp;nbsp; 函数设计&lt;BR&gt;&lt;BR&gt;&amp;gt; 如果函数没有参数，则用void 填充.明确的告诉别人，此函数没有参数。&lt;/P&gt;
&lt;P&gt;&amp;gt; 有时候函数原本不需要返回值，但为了增加灵活性如支持链式表达，可以附加返回值。&lt;BR&gt;例如字符串拷贝函数strcpy 的原型：&lt;BR&gt;char *strcpy(char *strDest，const char *strSrc);&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;gt; 断言用来捕捉程序员认为不应该发生的情况&lt;BR&gt;在编写函数时，先自问：&amp;#8220;我打算做哪些假定？&amp;#8221;一旦确定了的假定，就要使用断言对假定进行检查。&lt;/P&gt;
&lt;P&gt;&amp;gt; int m;&lt;BR&gt;int &amp;amp; n = m;&lt;BR&gt;n 相当于m 的别名（绰号），对n 的任何操作就是对m 的操作。例如有人名叫王小毛，&lt;BR&gt;他的绰号是&amp;#8220;三毛&amp;#8221;。说&amp;#8220;三毛&amp;#8221;怎么怎么的，其实就是对王小毛说三道四。&lt;/P&gt;
&lt;P&gt;引用和指针的区别：&lt;BR&gt;（1）引用被创建的同时必须被初始化（指针则可以在任何时候被初始化）。&lt;BR&gt;（2）不能有NULL 引用，引用必须与合法的存储单元关联（指针则可以是NULL）。&lt;BR&gt;（3）一旦引用被初始化，就不能改变引用的关系（指针则可以随时改变所指的对象）。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;gt; 实际上&amp;#8220;引用&amp;#8221;可以做的任何事情&amp;#8220;指针&amp;#8221;也都能够做，为什么还要&amp;#8220;引用&amp;#8221;这东西？&lt;BR&gt;答案是&amp;#8220;用适当的工具做恰如其分的工作&amp;#8221;。&lt;BR&gt;指针能够毫无约束地操作内存中的如何东西，尽管指针功能强大，但是非常危险。如果只需要借用一下某个对象的&amp;#8220;别名&amp;#8221;，那么就用&amp;#8220;引用&amp;#8221;，而不要用&amp;#8220;指针&amp;#8221;，以免发生意外。比如说，某人需要一份证明，本来在文件上盖上公章的印子就行了，如果把取公章的钥匙交给他，那么他就获得了不该有的权利，从而产生潜在的危险。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;第7 章 内存管理&lt;BR&gt;&lt;BR&gt;&amp;gt; C++/C 语言没有办法知道指针所指的内存容量，除非在申请内存时记住它。&lt;/P&gt;
&lt;P&gt;&amp;gt; 当数组作为函数的参数进行传递时，该数组自动退化为同类型的指针&lt;/P&gt;
&lt;P&gt;&amp;gt; 如果函数的参数是一个指针，不要指望用该指针去申请动态内存。因为编译器总是要为函数的每个参数制作临时副本，指针亦同。&lt;/P&gt;&amp;gt; 
&lt;P&gt;&lt;BR&gt;第9 章 类的构造函数、析构函数与赋值函数&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;gt; 构造函数有个特殊的初始化方式叫&amp;#8220;初始化表达式表&amp;#8221;（简称初始化表）。初始化表&lt;BR&gt;位于函数参数表之后，却在函数体 {} 之前。这说明该表里的初始化工作发生在函数体&lt;BR&gt;内的任何代码被执行之前。&lt;/P&gt;
&lt;P&gt;&amp;gt; 如果类存在继承关系，派生类必须在其初始化表里调用基类的构造函数。&lt;/P&gt;
&lt;P&gt;&amp;gt; 类的const 常量只能在初始化表里被初始化，因为它不能在函数体内用赋值的方式&lt;BR&gt;来初始化&lt;/P&gt;
&lt;P&gt;&amp;gt; 构造从类层次的最根处开始，在每一层中，首先调用基类的构造函数，然后调用成&lt;BR&gt;员对象的构造函数。析构则严格按照与构造相反的次序执行，该次序是唯一的，否则编&lt;BR&gt;译器将无法自动执行析构过程。&lt;/P&gt;
&lt;P&gt;&amp;gt; 一个有趣的现象是，成员对象初始化的次序完全不受它们在初始化表中次序的影响，&lt;BR&gt;只由成员对象在类中声明的次序决定。这是因为类的声明是唯一的，而类的构造函数可&lt;BR&gt;以有多个，因此会有多个不同次序的初始化表。如果成员对象按照初始化表的次序进行&lt;BR&gt;构造，这将导致析构函数无法得到唯一的逆序。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;gt; 注意不要将检查自赋值的if 语句&lt;BR&gt;if(this == &amp;amp;other)&lt;BR&gt;错写成为&lt;BR&gt;if( *this == other)&lt;/P&gt;
&lt;P&gt;&amp;gt; 如果我们实在不想编写拷贝构造函数和赋值函数，又不允许别人使用编译器生成的&lt;BR&gt;缺省函数，怎么办？偷懒的办法是：只需将拷贝构造函数和赋值函数声明为私有函数，不用编写代码。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;lt;边看边补充&amp;gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/34526.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title>不小心掉进深度拷贝的陷阱</title><link>http://blog.vckbase.com/hatemath/archive/2008/07/21/34462.html</link><pubDate>Mon, 21 Jul 2008 01:44:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2008/07/21/34462.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/34462.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2008/07/21/34462.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/34462.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/34462.html</trackback:ping><description>&lt;P&gt;&lt;BR&gt;感言：看书时啥都知道，一旦用起来头脑就不一定那么清楚了。这个陷阱我爬了两天才出来，算是个教训。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;现象：&amp;nbsp;某个绘图函数里，如果用selectfont选择自己创建的字体，就会被killed。有时用到了两个内存dc，只要涉及对memdc的操作，哪怕是改一个前景色也killed。奇怪的是打印所有变量和指针都有效。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;原因：&amp;nbsp;对象的深度拷贝问题。&lt;BR&gt;&amp;nbsp;&amp;nbsp;由于我没写拷贝构造函数，临时对象创建后按位拷贝加入vector，临时对象被析构时将已经分配的GDI资源（字体，memdc）销毁，但vector中对象关于资源的指针不是NULL。于是执行和字体、memdc有关的操作时程序killed。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;结论：当一个对象内部分配了资源（new的内存，GDI资源等等），就需要定义自己的拷贝构造函数。或者说，只要对象析构时释放了资源，就必须自定义拷贝构造函数。否则代码多了以后，debug的代价会非常高昂。&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/34462.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title>诺基亚E51一个月使用感受</title><link>http://blog.vckbase.com/hatemath/archive/2008/06/11/34096.html</link><pubDate>Wed, 11 Jun 2008 08:58:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2008/06/11/34096.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/34096.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2008/06/11/34096.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/34096.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/34096.html</trackback:ping><description>&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;五月二十四号从友人网一JS那里拿到的E51，迄今使用了一个月又半，谈谈感受，想入手的朋友可以拿来参考。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;那是一个周六的上午，阳光明媚。可是该死的EMS破坏了我的心情，丫的把我的51投错地方了，最后我亲自去取。回来后拆开上电，二话不说先拿DC打到微距模式，把机子和配件咔几张照片，一来作为纪念，二来以后出了问题好做证据。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;E51生平：E51，诺基亚家族人士，生于2007年，属S60 3rd智能机，几经降价现身价1800￥左右，性价比十分可观。特长：商务、办公 ，不足：多媒体功能。&lt;BR&gt;&lt;BR&gt;&lt;IMG height=750 src="/images/vckbase_com/hatemath/1236/o_入手E51%20(1).JPG" width=600 border=0&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;由于以前用的是S40的N6233，今番换到S60平台的E51，感受到的差异还是很大的。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;首先说外观和手感，键盘的手感虽然没有33好，但总的说来也不错了。而且51比33多出四个快捷访问功能键：系统键、电话薄、短信、日程，并且后三个键长按和短按具有不同的功能（用户可定制），非常方便。当然，正是由于多了几个键，使得键盘结构很紧凑，刚用时经常将左键和右键与功能键误按。刚开始用时，51的方向键按下去会咯吱咯吱响，用久了就不响了，估计是做工问题。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;然后是扩展性。这个简直没有可比性，33只能用jar软件，而s60 3rd的软件多如牛毛，里面不乏很多优秀的作品。51占尽了s60的优势，扩展性很强。而且51自身带WIFI，可以无线上网，这个在2000￥以下的机子中很难得了。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;最后提及多媒体功能。公认的观点，33是S40直板机之王，性能优异，性价比一流。33的多媒体功能挺不错的，别的不说，640*480流畅的视频拍摄，s40同价位机子里能找到几个？至于音质更没话说，每当同事用别的手机放歌曲时，我都会低调的让33保持沉默，以免伤了对方的自尊心。E51嘛？拍照垃圾，外放垃圾，还好我不看重这些。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;蓦然发现说了半天都夸33了 @_@，可能是觉得对不起33吧。一年前我拿自己辛辛苦苦兼职工资买了33，至今还记得听到清脆悦耳的短信声音时的开心的样子。后来一时头昏居然把33廉价卖了，从答应买家的当天就开始后悔！如果上天再给我一次选择的机会。。。。&lt;BR&gt;&lt;BR&gt;&lt;IMG height=298 src="/images/vckbase_com/hatemath/060713_nokia_6233_026s_1.jpg" width=447 border=0&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/34096.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title>像素叠加实现图片的半透明混合</title><link>http://blog.vckbase.com/hatemath/archive/2008/04/29/33456.html</link><pubDate>Tue, 29 Apr 2008 01:28:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2008/04/29/33456.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/33456.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2008/04/29/33456.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/33456.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/33456.html</trackback:ping><description>&lt;P align=justify&gt;&lt;FONT face=Arial size=5&gt;像素叠加实现图片的半透明混合&lt;BR&gt;&lt;/FONT&gt;&lt;BR&gt;转载请注明原创出处：HateMath的网上田园(&lt;A href="http://blog.vckbase.com/HateMath/"&gt;http://blog.vckbase.com/HateMath/&lt;/A&gt;)&lt;BR&gt;&lt;BR&gt;tag: 半透明&amp;nbsp;混合 alpha&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;半透明的混合效果经常在游戏里看到，效果那叫一个好。有天好奇心起，想琢磨一下这种效果是怎么实现的。可是自己没学过数字图像处理和图形学，于是只好凭直觉猜测了。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;按照生活经验，将两个胶片叠在一起时会有半透明效果，于是设想：从位图A和B中对应位置各取一点Pa、Pb，分别求取Pa和Pb的RGB三个分量，并将对应分量求均值后拼装成一个新的颜色，这样就是透明度为一半的混合效果了。按这个思路试了试，发现运气真好。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;实现RGB拼装的函数很简单，此处仅说明原理，未作优化：&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG id=Codehighlighter1_0_22_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_22_Open_Text.style.display='none'; Codehighlighter1_0_22_Closed_Image.style.display='inline'; Codehighlighter1_0_22_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_0_22_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_22_Closed_Text.style.display='none'; Codehighlighter1_0_22_Open_Image.style.display='inline'; Codehighlighter1_0_22_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;SPAN id=Codehighlighter1_0_22_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;/**/&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_0_22_Open_Text&gt;&lt;SPAN style="COLOR: #008000"&gt;/*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;*&amp;nbsp;alpha&amp;nbsp;mix&amp;nbsp;demo&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;*/&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;inline&amp;nbsp;COLORREF&amp;nbsp;AlphaPixel(UINT&amp;nbsp;alpha,&amp;nbsp;COLORREF&amp;nbsp;clr1,&amp;nbsp;COLORREF&amp;nbsp;clr2)&lt;BR&gt;&lt;IMG id=Codehighlighter1_93_390_Open_Image onclick="this.style.display='none'; Codehighlighter1_93_390_Open_Text.style.display='none'; Codehighlighter1_93_390_Closed_Image.style.display='inline'; Codehighlighter1_93_390_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_93_390_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_93_390_Closed_Text.style.display='none'; Codehighlighter1_93_390_Open_Image.style.display='inline'; Codehighlighter1_93_390_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_93_390_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_93_390_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;double&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;k&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;double&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)alpha&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;256.0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;double&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;reverse_k&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1.0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;k;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BYTE&amp;nbsp;r&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;BYTE(&amp;nbsp;GetRValue(clr2)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;k&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;GetRValue(clr1)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;reverse_k&amp;nbsp;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BYTE&amp;nbsp;g&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;BYTE(&amp;nbsp;GetGValue(clr2)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;k&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;GetGValue(clr1)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;reverse_k&amp;nbsp;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BYTE&amp;nbsp;b&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;BYTE(&amp;nbsp;GetBValue(clr2)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;k&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;GetBValue(clr1)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;reverse_k&amp;nbsp;);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;RGB(r,&amp;nbsp;g,&amp;nbsp;b);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;细心的读者从上面代码可以发现，随着alpha参数由0-255的变化，混合效果可以实现全透明--不透明的渐变。依据上述函数实现的半透明混合效果截图：&lt;BR&gt;&lt;BR&gt;&lt;IMG style="WIDTH: 689px; HEIGHT: 525px" height=525 alt="" hspace=0 src="/images/vckbase_com/hatemath/alpha_blend_demo.JPG" width=689 align=middle border=0&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;程序源代码(内含demo)下载：&lt;A href="http://blog.vckbase.com/Files/HateMath/test_alpha.rar"&gt;http://blog.vckbase.com/Files/HateMath/test_alpha.rar&lt;/A&gt;&lt;BR&gt;程序在winXp SP2 + VC6.0下通过。&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/33456.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title>私有数据一定安全吗？</title><link>http://blog.vckbase.com/hatemath/archive/2008/04/17/33324.html</link><pubDate>Thu, 17 Apr 2008 02:47:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2008/04/17/33324.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/33324.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2008/04/17/33324.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/33324.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/33324.html</trackback:ping><description>&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;C++的访问说明符(public private protected)提供了对类内部数据的访问限制。我以前一直以为将成员说明为private就可以保证其数据不被外界读取和改写，直到现在发现自己误解了。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;且看这个小例子：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;#include&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;iostream&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;std;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;stru_a&lt;BR&gt;&lt;IMG id=Codehighlighter1_56_121_Open_Image onclick="this.style.display='none'; Codehighlighter1_56_121_Open_Text.style.display='none'; Codehighlighter1_56_121_Closed_Image.style.display='inline'; Codehighlighter1_56_121_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_56_121_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_56_121_Closed_Text.style.display='none'; Codehighlighter1_56_121_Open_Image.style.display='inline'; Codehighlighter1_56_121_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_56_121_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_56_121_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;:&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stru_a::stru_a();&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;:&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;m_int;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;long&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;m_long;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;stru_a::stru_a()&lt;BR&gt;&lt;IMG id=Codehighlighter1_142_175_Open_Image onclick="this.style.display='none'; Codehighlighter1_142_175_Open_Text.style.display='none'; Codehighlighter1_142_175_Closed_Image.style.display='inline'; Codehighlighter1_142_175_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_142_175_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_142_175_Closed_Text.style.display='none'; Codehighlighter1_142_175_Open_Image.style.display='inline'; Codehighlighter1_142_175_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_142_175_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_142_175_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_int&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1865&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_long&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;9527&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;main()&lt;BR&gt;&lt;IMG id=Codehighlighter1_189_480_Open_Image onclick="this.style.display='none'; Codehighlighter1_189_480_Open_Text.style.display='none'; Codehighlighter1_189_480_Closed_Image.style.display='inline'; Codehighlighter1_189_480_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_189_480_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_189_480_Closed_Text.style.display='none'; Codehighlighter1_189_480_Open_Image.style.display='inline'; Codehighlighter1_189_480_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_189_480_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_189_480_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stru_a&amp;nbsp;a;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stru_a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;p&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;a;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;cout&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;a.m_int&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;endl;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;此路不通&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;m_int=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)p&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;endl;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;1.&amp;nbsp;用指针读取&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)p&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;8888&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;2.&amp;nbsp;用指针修改&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;m_int=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)p&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;endl;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cout&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;m_long=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;long&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)((&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)p&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;))&amp;nbsp;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;endl;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;3.用指针读取&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_483_541_Open_Image onclick="this.style.display='none'; Codehighlighter1_483_541_Open_Text.style.display='none'; Codehighlighter1_483_541_Closed_Image.style.display='inline'; Codehighlighter1_483_541_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_483_541_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_483_541_Closed_Text.style.display='none'; Codehighlighter1_483_541_Open_Image.style.display='inline'; Codehighlighter1_483_541_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_483_541_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;/**/&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_483_541_Open_Text&gt;&lt;SPAN style="COLOR: #008000"&gt;/*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_int=&amp;nbsp;1865&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_int=&amp;nbsp;8888&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_long=&amp;nbsp;9527&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;请按任意键继续.&amp;nbsp;.&amp;nbsp;.&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;*/&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;从最后的运行结果可以看出，虽然m_int和m_long都是类的私有成员，但是仍然可以通过指针访问。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;关于其原因，《C++编程思想》上有一段解释的很精辟，摘抄如下：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1. 在一个特定的访问块（被访问说明符限定的一组声明）内，成员变量在内存中是连续存放的；&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2. 程序运行之前，所有的访问说明都消失了....在程序运行期间，对象变成了一个存储区域，别无他物（HateMath注：即访问控制符只是在编译时起作用，防止程序员误访问不该访问的内容。如果你执意用别的方式访问某个私有成员，C++编译器没法阻止。）。&lt;BR&gt;&lt;BR&gt;（完）&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/33324.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title>小小的愿望得以实现--拥有自己的数码相机</title><link>http://blog.vckbase.com/hatemath/archive/2008/03/27/33062.html</link><pubDate>Thu, 27 Mar 2008 06:53:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2008/03/27/33062.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/33062.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2008/03/27/33062.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/33062.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/33062.html</trackback:ping><description>&lt;P&gt;&lt;BR&gt;&lt;STRONG&gt;奥林巴斯FE-320&lt;/STRONG&gt;&lt;BR&gt;800万像素，2.35寸CCD，2.7寸TFT液晶屏，3倍光学变焦，脸部识别技术。&lt;BR&gt;&lt;BR&gt;&lt;IMG height=480 src="/images/vckbase_com/hatemath/FE-320.jpg" width=640 border=0&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;说起我买相机的愿望，是在四年前的冬天。那时离开合肥，特别想把那段特殊的生活历程多拍几张留念，因为从此可能再也不会回去了。但是我没有相机，终于默默的看了最后一眼，离开了。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;工作后，由于自己很少出去玩（希望以后有所改变），所以相机用的不多，于是一直没买。上周，念书时兼职的工资终于讨回来了，高兴之余想买个东西纪念一下，自然就想到应该实现这个曾经的愿望，于是在一个明朗的午后，骑着单车一路晃到珠江路。机子在雄狮的奥林巴斯专卖店买的，所以价格比别的要高些，但是赠的是原装的XD卡和锂电，用的放心。&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;全家福：&lt;BR&gt;&lt;/STRONG&gt;(充电器和锂电在充电，木有拍出来)&lt;BR&gt;&lt;IMG height=594 src="/images/vckbase_com/hatemath/730/o_奥林巴斯FE-320全家福.JPG" width=800 border=0&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我对摄影不懂，对相机自然那也就没有特殊要求，320我觉得挺适合自己的。尤其是&lt;STRONG&gt;微笑自动拍照&lt;/STRONG&gt;模式很实用，当你对着镜头笑时，相机会自动连拍三张。为了便于携带，特地挑的这款卡片机，比信用卡大出一圈而已，一个字：小巧 : )&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/33062.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title>强制删除PQMagic合并分区时产生的文件夹</title><link>http://blog.vckbase.com/hatemath/archive/2008/02/26/32777.html</link><pubDate>Tue, 26 Feb 2008 00:47:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2008/02/26/32777.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/32777.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2008/02/26/32777.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/32777.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/32777.html</trackback:ping><description>&lt;P&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;由于硬盘空间紧张，决定将几个分区合并，挪出整块的剩余空间。用硬盘分区大师PQMagic合并时，软件会提示输入一个文件夹的名称，以将被合并分区的内容放在里面。分区合并完成后，发现文件夹无法正常删除。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;折腾了N久，最终找到的解决方法如下：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;右击文件夹，选择属性。在属性对话框中选择安全选项卡，添加...&amp;#8220;选择用户组&amp;#8221;，高级。。。立即查找，选择administrator ，确定。选择administrator，权限为完全控制，应用到所有子目录。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这样就可以按delete键删除了。&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/32777.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title>(转载)回调函数</title><link>http://blog.vckbase.com/hatemath/archive/2007/12/04/31059.html</link><pubDate>Tue, 04 Dec 2007 02:31:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2007/12/04/31059.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/31059.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2007/12/04/31059.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/31059.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/31059.html</trackback:ping><description>&lt;BR&gt;回调函数人人会用，可不是每个人都可以把它讲明白的，这篇文章就讲的很好。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;转载自：&lt;A href="http://alexclark.itpub.net/index.php"&gt;http://alexclark.itpub.net/index.php&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调用(calling)机制从汇编时代起已经大量使用：准备一段现成的代码，调用者可以随时跳转至此段代码的起始地址，执行完后再返回跳转时的后续地址。 CPU为此准备了现成的调用指令，调用时可以压栈保护现场，调用结束后从堆栈中弹出现场地址，以便自动返回。借堆栈保护现场真是一项绝妙的发明，它使调用者和被调者可以互不相识，于是才有了后来的函数和构件，使吾辈编程者如此轻松愉快。若评选对人类影响最大之发明，在火与车轮之后，笔者当推压栈调用。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 话虽这样说，此调用机制并非完美。回调函数就是一例。函数之类本是为调用者准备的美餐，其烹制者应对食客了如指掌，但实情并非如此。例如，写一个快速排序函数供他人调用，其中必包含比较大小。麻烦来了：此时并不知要比较的是何类数据--整数、浮点数、字符串？于是只好为每类数据制作一个不同的排序函数。更通行的办法是在函数参数中列一个回调函数地址，并通知调用者：君需自己准备一个比较函数，其中包含两个指针类参数，函数要比较此二指针所指数据之大小，并由函数返回值说明比较结果。排序函数借此调用者提供的函数来比较大小，借指针传递参数，可以全然不管所比较的数据类型。被调用者回头调用调用者的函数（够咬嘴的），故称其为回调（callback）。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 回调函数使程序结构乱了许多。Windows API 函数集中有不少回调函数，尽管有详尽说明，仍使初学者一头雾水。恐怕这也是无奈之举。无论何种事物，能以树形结构单向描述毕竟让人舒服些。如果某家族中孙辈又是某祖辈的祖辈，恐怕无人能理清其中的头绪。但数据处理之复杂往往需要构成网状结构，非简单的客户/服务器关系能穷尽。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Windows 系统还包含着另一种更为广泛的回调机制，即消息机制。消息本是 Windows 的基本控制手段，乍看与函数调用无关，其实是一种变相的函数调用。发送消息的目的是通知收方运行一段预先准备好的代码，相当于调用一个函数。消息所附带的 WParam 和 LParam 相当于函数的参数，只不过比普通参数更通用一些。应用程序可以主动发送消息，更多情况下是坐等 Windows 发送消息。一旦消息进入所属消息队列，便检感兴趣的那些，跳转去执行相应的消息处理代码。操作系统本是为应用程序服务，由应用程序来调用。而应用程序一旦启动，却要反过来等待操作系统的调用。这分明也是一种回调，或者说是一种广义回调。其实，应用程序之间也可以形成这种回调。假如进程 B 收到进程 A 发来的消息，启动了一段代码，其中又向进程 A 发送消息，这就形成了回调。这种回调比较隐蔽，弄不好会搞成递归调用，若缺少终止条件，将会循环不已，直至把程序搞垮。若是故意编写成此递归调用，并设好终止条件，倒是很有意思。但这种程序结构太隐蔽，除非十分必要，还是不用为好。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 利用消息也可以构成狭义回调。上面所举排序函数一例，可以把回调函数地址换成窗口handle。如此，当需要比较数据大小时，不是去调用回调函数，而是借 API 函数 SendMessage 向指定窗口发送消息。收到消息方负责比较数据大小，把比较结果通过消息本身的返回值传给消息发送方。所实现的功能与回调函数并无不同。当然，此例中改为消息纯属画蛇添脚，反倒把程序搞得很慢。但其他情况下并非总是如此，特别是需要异步调用时，发送消息是一种不错的选择。假如回调函数中包含文件处理之类的低速处理，调用方等不得，需要把同步调用改为异步调用，去启动一个单独的线程，然后马上执行后续代码，其余的事让线程慢慢去做。一个替代办法是借 API 函数PostMessage发送一个异步消息，然后立即执行后续代码。这要比自己搞个线程省事许多，而且更安全。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如今我们是活在一个 object 时代。只要与编程有关，无论何事都离不开 object。但 object 并未消除回调，反而把它发扬光大，弄得到处都是，只不过大都以事件（event）的身份出现，镶嵌在某个结构之中，显得更正统，更容易被人接受。应用程序要使用某个构件，总要先弄清构件的属性、方法和事件，然后给构件属性赋值，在适当的时候调用适当的构件方法，还要给事件编写处理例程，以备构件代码来调用。何谓事件？它不过是一个指向事件例程的地址，与回调函数地址没什么区别。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 不过，此种回调方式比传统回调函数要高明许多。首先，它把让人不太舒服的回调函数变成一种自然而然的处理例程，使编程者顿觉气顺。再者，地址是一个危险的东西，用好了可使程序加速，用不好处处是陷阱，程序随时都会崩溃。现代编程方式总是想法把地址隐藏起来（隐藏比较彻底的如 VB 和 Java），其代价是降低了程序效率。事件例程使编程者无需直接操作地址，但并不会使程序减速。更妙的是，此一改变，本是有损程序结构之奇技怪巧变成一种崭新设计理念，不仅免去被人抨击，而且逼得吾等凡人净手更衣，细细研读，仰慕至今。只是偶然静心思虑，发觉不过一瓶旧酒而已，故引得此番议论，让诸君见笑了。 事件驱动程序设计是围绕着消息基础形成的，发生一个事件，伴随着一大堆的消息。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我理解&amp;#8220;回调机制&amp;#8221;是window 在执行某个API函数的过程中，调用指定的一个函数。我们可以模拟一下：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;假设 ms 提供一个函数叫做&amp;nbsp; EnumFont ,该函数是得到所有的字体，假设它的实现是&lt;BR&gt;EnumFont()&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; while ( (f =FindNextFont()) !=NULL)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("fontname: " + f.name);&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;这样就循环显示出所有的字体名称。但是，开发者可能对字体信息另有用处，那么如何才能让开发者能使用这些信息呢，于是做改进：&lt;BR&gt;EnumFont( void*&amp;nbsp; userFunc )&lt;BR&gt;{&lt;BR&gt;&amp;nbsp; while ( (f =FindNextFont()) !=NULL)&lt;BR&gt;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("fontname: " + f.name);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( userFunc!=NULL)&amp;nbsp; userFunc( f) ;&lt;BR&gt;&amp;nbsp; }&lt;BR&gt;}&lt;BR&gt;假设userFunc 是一个函数 void f( FontObject font).这样使用者只需要定义一个函数：&lt;BR&gt;&amp;nbsp; void myfunc( FontObject font)&lt;BR&gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; listCtrl.Addstring ( font.name);&lt;BR&gt;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;通过使用 EnumFont ( myfunc) 就可以将所有额字体信息添加到一个列表框中。那么我们称 myfunc是一个回调函数，即让某个系统函数调用的函数。因此可以得出结论：&lt;BR&gt;1 回调函数是由开发者按照一定的原型进行定义的函数&lt;BR&gt;2 回调函数并不由开发者直接调用执行&lt;BR&gt;3 回调函数通常作为参数传递给系统API，由该API来调用。&lt;BR&gt;4 回调函数可能被系统API调用一次，也可能被循环调用多次。&lt;BR&gt;&lt;BR&gt;比如 函数int EnumFontFamilies(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HDC hdc,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// handle to device control&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPCTSTR lpszFamily,&amp;nbsp; // pointer to family-name string&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FONTENUMPROC lpEnumFontFamProc,&amp;nbsp; // pointer to callback function&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LPARAM lParam&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // pointer to application-supplied data&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;BR&gt;其中的&amp;nbsp;&amp;nbsp; FONTENUMPROC lpEnumFontFamProc就是一个回调函数，该函数遵照格式int CALLBACK EnumFontFamProc( ENUMLOGFONT FAR *lpelf,&amp;nbsp; NEWTEXTMETRIC FAR *lpntm, int FontType,&amp;nbsp; LPARAM lParam )进行定义。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;回调函数主要用于一些比较费时的操作,或响应不知道何时将会发生的事件,回调函数提供了一种异步的机制,相对于同步执行,提高了效率.前者的例子如WriteFileEx,ReadFileEx等,函数的最后一个参数是一个回调函数的指针,程序中调用WriteFileEx以后,就直接返回了,可以继续进行其他工作,系统在读写操作完成后通知程序作善后处理.后者的例子就是windows的事件机制回调函数的另一个用途,是用于一些枚举函数,如EnumDisplayModes等,每找到一种支持的显示模式,就通知回调函数,由回调函数具体处理,这是因为 EnumDisplayModes本身并不知道用户要如何处理.能,用户提供回调函数,定制系统的功能,这样,不同的用户提供不同的回调函数,可以使系统具有不同的功能.这就是所谓的plugin.使用回调函数实际上就是在调用某个函数（通常是API函数）时，将自己的一个函数（这个函数为回调函数）的地址作为参数传递给那个函数。而那个函数在需要的时候，利用传递的地址调用回调函数，这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。至于如何定义回调函数，跟具体使用的API函数有关，一般在帮助中有说明回调函数的参数和返回值等。&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/31059.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title> Linux下MiniGUI平台的透明位图的实现方法</title><link>http://blog.vckbase.com/hatemath/archive/2007/11/30/31009.html</link><pubDate>Fri, 30 Nov 2007 08:27:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2007/11/30/31009.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/31009.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2007/11/30/31009.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/31009.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/31009.html</trackback:ping><description>&lt;P align=center&gt;&lt;STRONG&gt;&amp;nbsp;Linux下MiniGUI平台的透明位图的实现方法&lt;BR&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;转载请注明原创出处：HateMath的网上田园(&lt;A href="http://blog.vckbase.com/HateMath/"&gt;http://blog.vckbase.com/HateMath/&lt;/A&gt;)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;名词解释：&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;MiniGUI：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;相对于PC机，嵌入式系统的资源往往很有限，很难用诸如XWindow这类重量级的东东进行图形用户界面的支持。MiniGUI应时而出，为嵌入式操作系统建立了一个快速、稳定和轻量级的图形用户界面支持系统。更多见官网:&lt;A href="http://www.minigui.com"&gt;http://www.minigui.com&lt;/A&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;为什么需要透明位图？&lt;BR&gt;&lt;/STRONG&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;位图的轮廓都是方形的，可是我们经常需要形状不规则的图，比如要实现一只蝴蝶在草丛间飞舞的效果，用蝴蝶和草丛的位图进行简单叠加肯定是不行的---蝴蝶边上的背景怎么办？&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;BR&gt;解决之道&lt;BR&gt;&lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在PC传统的GDI环境下，使用位图和掩模异或的方法堪称经典，此类资料实在太多，不在此浪费口水了。这里主要讲讲MiniGUI下更简便的实现方法：SetMemDCColorKey()&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetMemDCColorKey()是基于NEWGAL的高级GDI函数，原型如下：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BOOL GUIAPI SetMemDCColorKey ( HDC&amp;nbsp; mem_dc,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The device context&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD&amp;nbsp; flags,&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The color key specific memory DC flags.&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Uint32&amp;nbsp; color_key&amp;nbsp; &amp;nbsp;//The color_key of the memory DC.&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mem_dc是内存设备环境的句柄；&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;flag在设置透明色时，取 MEMDC_FLAG_SRCCOLORKEY，要取消透明色设置，可将flags设置为0；&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color_key 是MiniGUI中的颜色变量，代表想要设置为透明的颜色。函数调用成功返回TRUE，失败返回FALSE。&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;这个函数用来设置一个内存设备环境中的透明色。在将内存设备环境中的位图BitBlt到目标DC时，MiniGUi会跳过和透明色一样颜色的像素，也就是说，目标DC上对应位置处的像素值不变(不被覆盖)。&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这样说太过于技术化了！HateMath一直认为，&lt;STRONG&gt;技术本身是严谨的，但其表现形式应该是生动有趣的。&lt;/STRONG&gt;我们还是用形象的语言来表述一下吧：想像窗口是一个桌子，内存DC是桌布，没有使用SetMemDCColorKey()之前，BitBlt函数直接将整个桌布蒙在桌子上，而使用了SetMemDCColorKey()指定桌布上某些部分为透明色后，BitBlt会把桌布上的这些地方统统剪个洞，再蒙到桌子上。桌子上对应透明色的位置是不被覆盖的。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这样一来，前面提到的问题就迎刃而解了。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;STRONG&gt;详细的步骤如下&lt;/STRONG&gt;：&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0. 将蝴蝶身体以外的像素都用某一种颜色A(当然是和蝴蝶不一样的颜色)填充&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1. 在窗口DC上画草丛的位图 (用到的GDI函数： FillBoxWithBitmap, &amp;nbsp;)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2. 创建内存DC，依次在上面画草丛位图和蝴蝶位图 (CreateCompatibleDC, FillBoxWithBitmap)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3. 设置颜色A为内存DC中的透明色，再通过BitBlt把内存DC内容输出到目标DC(一般是窗口的DC)上 (SetMemDCColorKey, BitBlt)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注意操作完成后要要取消透明色设置，否则程序会崩溃。上面说的是问题的基本思路，具体实现起来时，还可以根据实际情况进行优化。比如用双缓冲防止绘图时闪烁。关于双缓冲绘图可参见我在vckbase在线杂志上的文章：《实例解说双缓冲》 (&lt;A href="http://www.vckbase.com/document/viewdoc/?id=1612"&gt;http://www.vckbase.com/document/viewdoc/?id=1612&lt;/A&gt;)&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;最后想补充一句，如果不是要求必需使用位图，其实还有&lt;STRONG&gt;更简单的方法&lt;/STRONG&gt;实现图片的透明：png图片。当在MiniGUi中加载了png格式的图片时，该透明的地方是透明的(不要用ACDSee3.0编辑png图片)。我原来用的是SetMemDCColorKey，现在改用png的方案，效果也很好。下面是圆角图标示例：&lt;BR&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;IMG style="WIDTH: 468px; HEIGHT: 91px" height=91 alt="" hspace=0 src="/images/vckbase_com/hatemath/透明位图.JPG" width=468 align=middle border=0&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;(完)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/31009.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title>我的新电脑 + 《空降兵》游戏体验</title><link>http://blog.vckbase.com/hatemath/archive/2007/11/27/30957.html</link><pubDate>Tue, 27 Nov 2007 01:51:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2007/11/27/30957.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/30957.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2007/11/27/30957.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/30957.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/30957.html</trackback:ping><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG style="WIDTH: 390px; HEIGHT: 443px" height=443 alt="" hspace=0 src="/images/vckbase_com/hatemath/我的新电脑.gif" width=390 align=left border=0&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT size=6&gt;第&lt;/FONT&gt;一台电脑是上学的时候家里给买的，一直想拥有属于自己的电脑，这个愿望上周终于实现了。AMD双核4000+ / 技嘉MCP68主板 / 金士顿 DDR II 667 1GB / 三星710N 17寸液晶。虽然配置不能说有多高，但这可是头一次用自己拿的米买电脑啊，所以还是很开心的。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;目前的配置玩CS、NFS6、魔兽开到最高画质都是非常流畅的。&amp;nbsp;不过玩《荣誉勋章 之 血战太平洋》开到最高画质还是比较卡的（毕竟显卡是集成的GeForce7025嘛），独立显卡打算圣诞的时候买（看好 昂达HD2600XT，D10显卡，599￥），那时候就可以尽情体验EA年度FPS游戏大作《荣誉勋章 之 神兵天降》了，呃呵呵，期待ing。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG style="WIDTH: 400px; HEIGHT: 299px" height=299 alt="" hspace=0 src="/images/vckbase_com/hatemath/7600gt.jpg" width=400 align=right border=0&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(12月18号补：)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;实在等不及圣诞了，上周买了一块独立显卡，铭瑄7600GT钻石版。G73核心，256MB/128位宽/DDR3/1.2ns的英飞凌内存，涡轮风扇。用3DMark06测了一下，性能不俗，性价比尤高。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当然，测试只是个参考，是骡子是马还是要拿出来遛遛，真刀真枪的测试是必须的。游戏？我使用《空降兵》。这是EA公司今年秋天出品的二战题材游戏大作，我从今年春天盼到夏天，夏天盼到冬天，现在终于到了体验一下的时候了。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;先把CPU主频超到5GHz，打开游戏设置，分辨率：1024*768；材质细节和模型细节都选最高，预处理：全部。进入游戏后发现，画面很流畅。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;震撼，画面做的太精美了，真的是&amp;#8220;照片级&amp;#8221;的画质；好玩，情节惊险，场景真实。我玩过EA以前所有的《荣誉勋章》系列游戏，相比之下，《空降兵》有质的飞跃。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;1280*1024大图：&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;A href="http://blog.vckbase.com/images/vckbase_com/hatemath/1196/o_realworld.JPG"&gt;http://blog.vckbase.com/images/vckbase_com/hatemath/1196/o_realworld.JPG&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG style="WIDTH: 600px; HEIGHT: 480px" height=299 alt="" hspace=0 src="/images/vckbase_com/hatemath/1196/r_realworld.JPG" width=400 align=left border=0&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;拿其中的一张截图给大家介绍一下，下面这张图的内容是任务&amp;lt;海神行动&amp;gt;中的场景。看效果请点大图链接。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;从狙击枪的瞄准镜中我们可以看到，远处的石墙和树干是何等的栩栩如生，树叶做的也非常真实，尤其是左上角11点钟方向的树叶，简直就跟真实世界的一模一样。游戏中你甚至可以发现钢枪身上金属的锈迹和划痕。人物衣服袖口上的铜扣闪闪发光（如果是DX10显卡，效果还会更好）。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;游戏还采用了真实世界的物理系统。从图中可以看到，在狙击枪爆头瞬间（注意右下角的爆头标志），钢盔被子弹高高弹起然后滚落在地上。事实上你在打游戏时，还可以听到子弹穿透钢盔的声音，同时看到敌人被击中的头部出现一团倾斜于子弹方向的血雾，然后敌人瘁然倒地。至于用手雷炸飞敌人的物理场景就更真实了，这一点在之前官方放出的Demo中已经有特写，我就不说了。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;玩了几天了，每次总是大呼过瘾，一打游戏就忘了时间：）。由于支持从任何地方空降，所以即使是反复打同一关，也可以有不同的游戏体验，比如海神行动中我就直接降落到侦查塔下，然后上楼顶，用SpringField&amp;#8216;03居高临下从战线后方疯狂狙杀躲在战壕里的敌人。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;总之，如果你是一名FPS游戏爱好者，这款游戏千万不要错过。虽然需要较高的硬件支持，但是相信你一定会喜欢的。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;(2008年1月17号再补：)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3天前的中午，小飕风风的吹着......冒着严寒去了一趟雄狮，又给爱机买了一条内存。金士顿 1GB DDR667，锐峻代理，终身质保。现在内存那叫一个便宜，150米，据说有的品牌卖到125米。在各类物价飞涨的当下，内存仍然是白菜价，感动啊。晚上回去把内存插上，BIOS自检显示 128bit Dual Channel&amp;nbsp; ，2GB的内存，双通道协同工作，爽！&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;到目前为止，经过几次升级，爱机的五大件配置如下：&lt;BR&gt;
&lt;TABLE style="WIDTH: 773px; HEIGHT: 147px" height=147 cellSpacing=0 cellPadding=0 width=773 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;&lt;STRONG&gt;品名&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="50%"&gt;&lt;STRONG&gt;规格&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;CPU&lt;/TD&gt;
&lt;TD width="50%"&gt;AMD双核4000+&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;主板&lt;/TD&gt;
&lt;TD width="50%"&gt;技嘉M68SM-S2L (芯片组nForce630A)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;内存&lt;/TD&gt;
&lt;TD width="50%"&gt;金士顿 DDR II 667 2GB &amp;nbsp;(1GB x 2)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;显卡&lt;/TD&gt;
&lt;TD width="50%"&gt;铭瑄GeForce7600GT钻石版 (256MB /&amp;nbsp;DDR3 / 1.2ns)&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="50%"&gt;显示器&lt;/TD&gt;
&lt;TD width="50%"&gt;三星710N 17寸液晶 (1280*1024)&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/30957.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>HateMath的网上田园</dc:creator><title>VC2005中&lt;被声明为否决的&gt;编译警告的解决办法</title><link>http://blog.vckbase.com/hatemath/archive/2007/10/18/30058.html</link><pubDate>Thu, 18 Oct 2007 01:02:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2007/10/18/30058.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/30058.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2007/10/18/30058.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/30058.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/30058.html</trackback:ping><description>&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VC2005中，使用了很多标准的C函数，比如fopen，strcpy之类的。编译时会出现警告，比如这个：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;d:\xxxx.c(1893) : warning C4996: &amp;#8220;strcpy&amp;#8221;被声明为否决的&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;紧接着IDE有提示说:&amp;#8220;This function or variable may be unsafe. Consider using strcpy_s instead... 可是我的代码只是借VS2005的IDE环境开发而已，以后是要移植到别的ANSI C平台的，所以不想用strcpy_s，舍弃此法。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;接着看提示， &amp;#8220;To disable deprecation, use _CRT_SECURE_NO_DEPRECATE&amp;#8220;。原来加个编译选项就可以了。于是按 Alt+F7打开项目属性，找到&amp;#8220;配置属性&amp;#8221; -&amp;gt; &amp;#8220;C/C++&amp;#8221; -&amp;gt; &amp;#8220;命令行&amp;#8221;，在右侧的&amp;#8220;附加选项&amp;#8221;文本编辑框里加入 【/D "_CRT_SECURE_NO_DEPRECATE"&amp;nbsp;】 （注意加入的是【】符号里面的文本），点确定。再次编译，就没有这种警告了。&lt;BR&gt;&lt;BR&gt;（完）&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/30058.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>HateMath的网上田园</dc:creator><title>交通高峰时骑车注意事项</title><link>http://blog.vckbase.com/hatemath/archive/2007/10/12/29955.html</link><pubDate>Fri, 12 Oct 2007 00:50:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2007/10/12/29955.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/29955.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2007/10/12/29955.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/29955.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/29955.html</trackback:ping><description>&lt;BR&gt;序：对于偶这种不擅骑自行车的人来说，每天骑车上班都是一种对耐力的挑战。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;1.&amp;nbsp; 不要从泊在路边的汽车中经过。你永远不知道缺乏理智的人什么时候突然开门（还记得《疯狂的石头》里面道哥怎么挂的么？）。&lt;BR&gt;&lt;BR&gt;2.&amp;nbsp; 不要跟在女人的车后面，尤其是中年妇女。这些人骑车的速度与其说保守，不如说猥琐，不该减速时瞎减速，搞的后面一排人都混乱。&lt;BR&gt;&lt;BR&gt;3.&amp;nbsp; 从情侣身边超车要小心，情侣打情骂俏随时可能像螃蟹一样横着蹦出。&lt;BR&gt;&lt;BR&gt;4. 过十字路口时，即使是绿灯，也要注意自己左后边是否有大型车辆，因为自己所在位置是车辆的视觉死角。&lt;BR&gt;&lt;BR&gt;5. 坚决不看美女，坚决不闯红灯。偶的小命虽然不值钱，但对老爸老妈还是不可或缺滴。&lt;BR&gt;&lt;BR&gt;6. 进地下室停车时转弯要小心，今天差点被一个灰绿色的面包撞到 : (&lt;BR&gt;&lt;BR&gt;&amp;nbsp;陆续更新中...&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;随拍：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;12号早晨，从长江路走，遇红灯停。抬头一看，却是人才市场。想起两年前在这里徘徊踌躇，深感现实残酷的深刻体验，不觉感慨。拍之。&lt;BR&gt;&lt;BR&gt;&lt;IMG height=495 src="/images/vckbase_com/hatemath/1183/o_图像000.jpg" width=640 border=1&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/29955.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>HateMath的网上田园</dc:creator><title>Ubuntu6中设置屏幕分辨率导致死机的解决办法</title><link>http://blog.vckbase.com/hatemath/archive/2007/09/30/29792.html</link><pubDate>Sun, 30 Sep 2007 06:51:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2007/09/30/29792.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/29792.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2007/09/30/29792.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/29792.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/29792.html</trackback:ping><description>Ubuntu6中设置屏幕分辨率导致死机的解决办法&lt;BR&gt;&lt;BR&gt;[转载请注明出处: HateMath的网上田园 &lt;A href="http://blog.vckbase.com/hatemath/"&gt;http://blog.vckbase.com/hatemath/&lt;/A&gt;]&lt;BR&gt;&lt;BR&gt;我的屏幕是1280*800的宽屏, Ubuntu默认用的是4 : 3的显示比例, 在硬盘上安装了Ubuntu6后, 发现屏幕变得很难看. &lt;BR&gt;&lt;BR&gt;于是开始设置. 打开"屏幕分辨率"对话框, 设置为1280*800, 刷新率60Hz,点确定. 黑屏了一下后, 屏幕的字体变得很清晰, 还没来得及高兴, 发现机子彻底死掉了.&lt;BR&gt;&lt;BR&gt;(省略若干次尝试, 总计 1 小时)&lt;BR&gt;&lt;BR&gt;解决方案:&lt;BR&gt;1. 用 sudo -s 命令取得root权限&lt;BR&gt;2. 用 chmod 命令修改/etc/X11/xorg.conf 的权限为可写&lt;BR&gt;3. 用gedit /etc/X11/xorg.conf &amp;amp; 编辑显示配置文件(请各位看官备份先), 将其中的:&lt;BR&gt;&lt;BR&gt;SubSection "Display"&lt;BR&gt;Depth 16&lt;BR&gt;Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"&lt;BR&gt;EndSubSection&lt;BR&gt;SubSection "Display"&lt;BR&gt;Depth 24&lt;BR&gt;Modes "1280x1024" "1024x768" "832x624" "800x600" "720x400" "640x480"&lt;BR&gt;EndSubSection&lt;BR&gt;&lt;BR&gt;改为我屏幕的最佳分辨率:&lt;BR&gt;SubSection "Display"&lt;BR&gt;Depth 16&lt;BR&gt;Modes "&lt;FONT color=#ff0000&gt;1280x800&lt;/FONT&gt;" "1024x768" "832x624" "800x600" "720x400" "640x480"&lt;BR&gt;EndSubSection&lt;BR&gt;SubSection "Display"&lt;BR&gt;Depth 24&lt;BR&gt;Modes "&lt;FONT color=#cc0000&gt;1280x800&lt;/FONT&gt;" "1024x768" "832x624" "800x600" "720x400" "640x480"&lt;BR&gt;EndSubSection&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;4. 保存后再打开"屏幕分辨率"对话框设置一次, 这次还是死机------但是, 但是但是, 重启之后屏幕已经调为最佳分辨率了, 字体很清晰, 而且也不死机了. 我现在正在用 gedit编辑这篇文章, 呵呵.&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/29792.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>hATEmATH的网上田园</dc:creator><title>今天是个特别的日子，特此纪念！</title><link>http://blog.vckbase.com/hatemath/archive/2007/09/17/29508.html</link><pubDate>Mon, 17 Sep 2007 07:54:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2007/09/17/29508.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/29508.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2007/09/17/29508.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/29508.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/29508.html</trackback:ping><description>&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/29508.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>HateMath的网上田园</dc:creator><title>毕设中涉及几个小问题和FPS200指纹传感器设计资料</title><link>http://blog.vckbase.com/hatemath/archive/2007/09/14/29442.html</link><pubDate>Fri, 14 Sep 2007 13:33:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2007/09/14/29442.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/29442.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2007/09/14/29442.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/29442.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/29442.html</trackback:ping><description>转载请注明出处：HateMath的网上田园 (blog.vckbase.com/hatemath)&lt;BR&gt;&lt;BR&gt;1. Keil for ARM 开发环境中，声明结构按照字节对齐的方式：__packed &lt;BR&gt;比如：&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;IP头&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_30_344_Open_Image onclick="this.style.display='none'; Codehighlighter1_30_344_Open_Text.style.display='none'; Codehighlighter1_30_344_Closed_Image.style.display='inline'; Codehighlighter1_30_344_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_30_344_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_30_344_Closed_Text.style.display='none'; Codehighlighter1_30_344_Open_Image.style.display='inline'; Codehighlighter1_30_344_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;__packed&amp;nbsp;typedef&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;struct&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_30_344_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_30_344_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;ip_ver_ihl;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;ip_tos;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;short&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ip_totallen;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;short&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ip_ident;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;short&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ip_flag_frag;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;ip_ttl;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;ip_protocal;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;short&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ip_chksum;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;short&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ip_sour[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;];&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;short&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ip_dest[&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;];&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;HEAD_IP&amp;nbsp;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;刚开始不明白这个，导致调试中出了些莫名其妙的赋值错误问题，后来发现都是默认结构对齐惹的祸。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;2. 写DM9000网卡芯片中MAR的hash表时，不是直接写网卡物理地址的，要转化为哈希表再写进去。问题的关键是实现CRC32校验的代码，我对算法不懂也不想懂(这辈子不要和我提数学)，于是找了个Linux下的源码，稍微改动了一下就可以用了。&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;const&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ethernet_polynomial_le&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xedb88320U&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;和crc32计算有关&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;The&amp;nbsp;little-endian&amp;nbsp;AUTODIN32&amp;nbsp;ethernet&amp;nbsp;CRC&amp;nbsp;calculation.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ether_crc_le(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;length,&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;data)&lt;BR&gt;&lt;IMG id=Codehighlighter1_200_621_Open_Image onclick="this.style.display='none'; Codehighlighter1_200_621_Open_Text.style.display='none'; Codehighlighter1_200_621_Closed_Image.style.display='inline'; Codehighlighter1_200_621_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_200_621_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_200_621_Closed_Text.style.display='none'; Codehighlighter1_200_621_Open_Image.style.display='inline'; Codehighlighter1_200_621_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_200_621_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_200_621_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;crc&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0xffffffff&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;初始化.&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_266_606_Open_Image onclick="this.style.display='none'; Codehighlighter1_266_606_Open_Text.style.display='none'; Codehighlighter1_266_606_Closed_Image.style.display='inline'; Codehighlighter1_266_606_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_266_606_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_266_606_Closed_Text.style.display='none'; Codehighlighter1_266_606_Open_Image.style.display='inline'; Codehighlighter1_266_606_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;while&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;--&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;length&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_266_606_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_266_606_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;char&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;current_octet&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;data&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;++&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;bit;&lt;BR&gt;&lt;IMG id=Codehighlighter1_390_603_Open_Image onclick="this.style.display='none'; Codehighlighter1_390_603_Open_Text.style.display='none'; Codehighlighter1_390_603_Closed_Image.style.display='inline'; Codehighlighter1_390_603_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_390_603_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_390_603_Closed_Text.style.display='none'; Codehighlighter1_390_603_Open_Image.style.display='inline'; Codehighlighter1_390_603_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(bit&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;8&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;--&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;bit&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&amp;nbsp;current_octet&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_390_603_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_390_603_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG id=Codehighlighter1_440_551_Open_Image onclick="this.style.display='none'; Codehighlighter1_440_551_Open_Text.style.display='none'; Codehighlighter1_440_551_Closed_Image.style.display='inline'; Codehighlighter1_440_551_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_440_551_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_440_551_Closed_Text.style.display='none'; Codehighlighter1_440_551_Open_Image.style.display='inline'; Codehighlighter1_440_551_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;((crc&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;^&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;current_octet)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_440_551_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_440_551_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crc&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crc&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;^=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ethernet_polynomial_le;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;else&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crc&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&amp;gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;crc;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;&lt;BR&gt;3. FPS200/MBF200 指纹传感器USB模式连接电路及PCB板子&lt;BR&gt;(hatemath感言：中国的学术算是完蛋了。很多论文和资料上的FPS200电路设计真TMD垃圾，漏洞百出，根本就不能工作。最要命的是这些垃圾居然变为白纸黑字出来糊弄别人，气死我了)&lt;BR&gt;&lt;BR&gt;&lt;IMG height=473 src="/images/vckbase_com/hatemath/FPS200USB模式采集卡.JPG" width=447 border=0&gt;&lt;BR&gt;&lt;BR&gt;相关sch图和pcb图下载：&lt;BR&gt;&lt;A href="http://blog.vckbase.com/Files/HateMath/FPS200design.rar"&gt;http://blog.vckbase.com/Files/HateMath/FPS200design.rar&lt;/A&gt;&lt;BR&gt;我设计的这个图纸和板子是可以被windows正常识别的，不是骗人的论文上的瞎编乱造的东西，看下面的图就知道（另存在电脑上再打开，就可以看清其中的字符了）：&lt;BR&gt;&lt;BR&gt;&lt;IMG height=544 src="/images/vckbase_com/hatemath/USB_device_OK.JPG" width=650 border=0&gt;&lt;BR&gt;&lt;BR&gt;PS：很多人抱怨找不到FPS200的datasheet（官网挂羊头卖狗肉，给的是一个宣传资料而已，与EE需要的datasheet简直够不着边），其实用富士通的MBF200的datasheet就可以。Veridicom将技术转让给富士通后，后者就生产和FPS200完全兼容的MBF200指纹传感器(google上查到的news)。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/29442.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>HateMath的网上田园</dc:creator><title>(转载) 一个颇有深意的寓言故事</title><link>http://blog.vckbase.com/hatemath/archive/2007/07/29/27820.html</link><pubDate>Sun, 29 Jul 2007 07:58:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2007/07/29/27820.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/27820.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2007/07/29/27820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/27820.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/27820.html</trackback:ping><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;上帝把两群羊放在草原上，一群在南，一群在北。上帝还给羊群找了两种天敌，一种是狮子，一种是狼。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;上帝对羊群说："如果你们要狼，就给一只，任它随意咬你们。如果你们要狮子，就给两头，你们可以在两头狮子中任选一头，还可以随时更换。"南边那群羊想，狮子比狼凶猛得多，还是要狼吧。于是，它们就要了一只狼。北边那群羊想，狮子虽然比狼凶猛得多，但我们有选择权，还是要狮子吧。于是，它们就要了两头狮子。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;那只狼进了南边的羊群后，就开始吃羊。狼身体小，食量也小，一只羊够它吃几天了。这样羊群几天才被追杀一次。北边那群羊挑选了一头狮子，另一头则留在上帝那里。这头狮子进入羊群后，也开始吃羊。狮子不但比狼凶猛，而且食量惊人，每天都要吃一只羊。这样羊群就天天都要被追杀，惊恐万状。羊群赶紧请上帝换一头狮子。不料，上帝保管的那头狮子一直没有吃东西，正饥饿难耐，它扑进羊群，比前面那头狮子咬得更疯狂。羊群一天到晚只是逃命，连草都快吃不成了。南边的羊群庆幸自己选对了天敌，又嘲笑北边的羊群没有眼光。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;北边的羊群非常后悔，向上帝大倒苦水，要求更换天敌，改要一只狼。上帝说："天敌一旦确定，就不能更改，必须世代相随，你们唯一的权利是在两头狮子中选择。" 北边的羊群只好把两头狮子不断更换。可两头狮子同样凶残，换哪一头都比南边的羊群悲惨得多，它们索性不换了，让一头狮子吃得膘肥体壮，另一头狮子则饿得精瘦。眼看那头瘦狮子快要饿死了，羊群才请上帝换一头。&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;这头瘦狮子经过长时间的饥饿后，慢慢悟出了一个道理：自己虽然凶猛异常，一百只羊都不是对手，可是自己的命运是操纵在羊群手里的。羊群随时可以把自己送回上帝那里，让自己饱受饥饿的煎熬，甚至有可能饿死。想通这个道理后，瘦狮子就对羊群特别客气，只吃死羊和病羊，凡是健康的羊它都不吃了。羊群喜出望外，有几只小羊提议干脆固定要瘦狮子，不要那头肥狮子了。一只老公羊提醒说："瘦狮子是怕我们 送它回上帝那里挨饿，才对我们这么好。万一肥狮子饿死了，我们没有了选择的余地，瘦狮子很快就会恢复凶残的本性。"羊群觉得老羊说得有理，为了不让另一头狮子饿死，它们赶紧把它换回来。&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;原先膘肥体壮的那头狮子，已经饿得只剩下皮包骨头了，并且也懂得了自己的命运是操纵在羊群手里的道理。为了能在草原上待久一点，它竟百般讨好起羊群来。而那头被送交给上帝的狮子，则难过得流下了眼泪。 &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;北边的羊群在经历了重重磨难后，终于过上了自由自在的生活。南边的那群羊的处境却越来越悲惨了，那只狼因为没有竞争对手，羊群又无法更换它，它就胡作非为，每天都要咬死几十只羊，这只狼早已不吃羊肉了，它只喝羊心里的血。它还不准羊叫，哪只叫就立刻咬死哪只。&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;南边的羊群只能在心中哀叹："早知道这样，还不如要两头狮子。"&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/27820.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>HateMath的网上田园</dc:creator><title>解决了收藏夹打开太慢的问题</title><link>http://blog.vckbase.com/hatemath/archive/2007/07/27/27768.html</link><pubDate>Fri, 27 Jul 2007 00:49:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2007/07/27/27768.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/27768.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2007/07/27/27768.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/27768.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/27768.html</trackback:ping><description>&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;本来我的 世界之窗2.0（以下简称TW） 用的挺好的，不想某天发现菜单中的&amp;#8220;收藏&amp;#8221;一项打开的太慢，鼠标点了之后约20-30秒才会弹出收藏列表。用户界面这种东西，延迟超过 1 秒就不合适了，可我的收藏夹却延迟了30秒。因为事情忙，忍了好几天，今天终于把它KO了。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;根据直觉猜想是收藏夹内容有问题(直觉这个东西是要靠经验积累的，嘿嘿)，于是从收藏夹入手。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用的是&lt;STRONG&gt;排除法&lt;/STRONG&gt;。先将硬盘上的Favorites文件夹备份，然后将其中内容清空。启动 TW，发现这次收藏菜单打开很快。然后将一部分收藏列表从备份拷回Favorites，再次启动TW 检查收藏菜单打开速度。如是再三，直到打开速度变慢为止。最后发现是一个叫 &amp;#8220;存储卡&amp;#8221; 的链接导致的问题。将此链接删除，问题解决。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;#8220;存储卡&amp;#8221;链接怎么会导致问题呢？原来我的电脑通过蓝牙和手机无线连接，用于读取手机存储卡上的资料。通过蓝牙联通以后，&amp;#8220;存储卡&amp;#8221;文件夹就出现在资源管理器里。当初这个链接就是这么建立的。而当电脑没有插入蓝牙适配器或者手机没有打开蓝牙功能的时候，用户点击收藏菜单，为了得到收藏列表的某些信息，电脑要retry很多次(肯定是一直失败的)，这样导致了时间的延迟。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;还有一个发现就是，用IE打开时不会出现延迟的问题，所以推断 世界之窗 打开收藏菜单时一定对收藏列表做了某些额外的获取信息的动作。&lt;BR&gt;&lt;BR&gt;(完)&lt;BR&gt;&lt;BR&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/27768.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>HateMath的网上田园</dc:creator><title>误入中断埋下的陷阱</title><link>http://blog.vckbase.com/hatemath/archive/2007/07/12/27334.html</link><pubDate>Thu, 12 Jul 2007 04:30:00 GMT</pubDate><guid>http://blog.vckbase.com/hatemath/archive/2007/07/12/27334.html</guid><wfw:comment>http://blog.vckbase.com/hatemath/comments/27334.html</wfw:comment><comments>http://blog.vckbase.com/hatemath/archive/2007/07/12/27334.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/hatemath/comments/commentRss/27334.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/hatemath/services/trackbacks/27334.html</trackback:ping><description>转载请注明出处：HateMath的网上田园 (blog.vckbase.com/hatemath)&lt;BR&gt;&lt;BR&gt;搜索关键词： LPC213x&amp;nbsp;&amp;nbsp; LPC2132&amp;nbsp;&amp;nbsp; ARM7 中断嵌套&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;记得当年学51的时候，老师就说过：中断本身并不难理解，但是应用的时候一不小心就会出问题。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;确实如此。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我用的是ARM7核的LPC2132处理器，在某个函数B中调用了写EEPROM的函数A，而A对EEPROM的读写是基于处理器的IIC中断的。奇怪的是，每次从B中调用A函数的时候，系统就卡死在A里。而当系统初始化的时候调用A函数，则可以对EEPROM正常读写。于是我推断一定是运行时的环境改变导致了这个问题。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;折腾了个把小时，终于通过逆向追踪发现，原来B函数是在外中断0的中断处理程序中调用的----前面已经说过A触发了IIC中断，那么B中对A的调用造成了中断的嵌套（如图一所示）。当时心里一激灵，嗯！估计这就是问题所在。后来改动代码，通过设置一个flag在中断外调用B，终于解决了这个问题。&lt;BR&gt;&lt;BR&gt;
&lt;P align=justify&gt;&lt;IMG height=94 src="/images/vckbase_com/hatemath/中断嵌套示意图.JPG" width=371 border=0&gt;&lt;/P&gt;
&lt;P align=justify&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;图一 中断嵌套示意图&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;问题解决了，然而疑惑还没完。ARM处理器总比单片机高级些，51都有中断嵌套，ARM怎么不行呢？何况我设置的IIC中断优先级比外中断0高。通过网上查资料，终于明白：LPC213x是不能自动支持中断嵌套的-----不是不能实现，而是比较繁琐（很多事情往往出人意料）。可嵌套中断服务程序编写方法：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1、保存当前中断使能寄存器VICIntEnable的值；&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2、禁止当前中断和低优先级中断；&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3、清除中断逻辑，使VIC能够响应更高优先级的中断；&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4、中断处理服务程序；&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;5、恢复保存的中断使能寄存器的值。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;声明需要嵌套的中断服务程序时，不能使用"__irq"关键字，而需要通过句柄的方式进行。具体例子详见：&lt;A href="http://www.armsky.net/ARM/ARM_jishuwenzhai/84180863060257.html"&gt;http://www.armsky.net/ARM/ARM_jishuwenzhai/84180863060257.html&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;(完)&lt;BR&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/hatemath/aggbug/27334.html" width = "1" height = "1" /&gt;</description></item></channel></rss>