﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Shuffy-随笔分类-在线推荐阅读</title><link>http://www.cppblog.com/Sandywin/category/4025.html</link><description>&lt;body 
bgproperties="fixed";
background="http://www.cppblog.com/images/cppblog_com/Sandywin/4194/o_the,dreamy,world,115828072343234.jpg" wight=1024 height=768&gt;
&lt;b&gt;不断的学习，不断的思考，才能不断的进步.Let's do better together!&lt;/b&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 08 Nov 2011 01:24:49 GMT</lastBuildDate><pubDate>Tue, 08 Nov 2011 01:24:49 GMT</pubDate><ttl>60</ttl><item><title>大数据量的算法</title><link>http://www.cppblog.com/Sandywin/archive/2011/11/07/159778.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Mon, 07 Nov 2011 12:19:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2011/11/07/159778.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/159778.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2011/11/07/159778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/159778.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/159778.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 说明：本文分为俩部分，第一部分为10道海量数据处理的面试题，第二部分为10个海量数据处理的方法总结。有任何问题，欢迎交流、指正。&nbsp;&nbsp;<a href='http://www.cppblog.com/Sandywin/archive/2011/11/07/159778.html'>阅读全文</a><img src ="http://www.cppblog.com/Sandywin/aggbug/159778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2011-11-07 20:19 <a href="http://www.cppblog.com/Sandywin/archive/2011/11/07/159778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j2ee 集群介绍 </title><link>http://www.cppblog.com/Sandywin/archive/2011/10/09/157850.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Sun, 09 Oct 2011 03:36:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2011/10/09/157850.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/157850.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2011/10/09/157850.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/157850.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/157850.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 越来越多的关键任务和大型应用正运行在J2EE平台上，象银行之类的应用要求很高的可用性(HA)，大型系统比如google和Yahoo则要求更好的伸 缩性。今天高可用性和伸缩性的重要性对于互联世界日益增长，最著名的证明是1999年eBay中断了22小时的服务，原因是超过230万次的拍卖，最终导 致eBay股票下跌了9.2个百分点。<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/Sandywin/archive/2011/10/09/157850.html'>阅读全文</a><img src ="http://www.cppblog.com/Sandywin/aggbug/157850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2011-10-09 11:36 <a href="http://www.cppblog.com/Sandywin/archive/2011/10/09/157850.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单介绍J2EE应用的五种核心策略</title><link>http://www.cppblog.com/Sandywin/archive/2011/10/09/157849.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Sun, 09 Oct 2011 03:30:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2011/10/09/157849.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/157849.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2011/10/09/157849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/157849.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/157849.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 　作为应用系统的负责人，一直被要求"要少花钱多办事"----用更少的硬件，更少的网络带宽，以及更短的时间完成更多的任务。J2EE通过提供组件方式和通用的中间件服务是目前首选的最优方式。而要能够构建一个具有高性能和可扩展性的J2EE应用，需要遵循一些基本的架构策略。&nbsp;&nbsp;<a href='http://www.cppblog.com/Sandywin/archive/2011/10/09/157849.html'>阅读全文</a><img src ="http://www.cppblog.com/Sandywin/aggbug/157849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2011-10-09 11:30 <a href="http://www.cppblog.com/Sandywin/archive/2011/10/09/157849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EE介绍</title><link>http://www.cppblog.com/Sandywin/archive/2011/10/09/157848.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Sun, 09 Oct 2011 03:29:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2011/10/09/157848.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/157848.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2011/10/09/157848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/157848.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/157848.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: J2EE是一套全然不同于传统应用开发的技术架构，包含许多组件，主要可简化且规范应用系统的开发与部署，进而提高可移植性、安全与再用价值。<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/Sandywin/archive/2011/10/09/157848.html'>阅读全文</a><img src ="http://www.cppblog.com/Sandywin/aggbug/157848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2011-10-09 11:29 <a href="http://www.cppblog.com/Sandywin/archive/2011/10/09/157848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tiles框架使用总结</title><link>http://www.cppblog.com/Sandywin/archive/2011/10/09/157844.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Sun, 09 Oct 2011 02:45:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2011/10/09/157844.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/157844.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2011/10/09/157844.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/157844.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/157844.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Tiles框架为创建Web页面提供了一种模板机制，它能将网页的布局和内容分离。它允许先创建模板，然后在运行时动态地将内容插入到模板中。Tiles框架建立在JSP的include指令的基础上，但它提供了比JSP的include指令更强大的功能。&nbsp;&nbsp;<a href='http://www.cppblog.com/Sandywin/archive/2011/10/09/157844.html'>阅读全文</a><img src ="http://www.cppblog.com/Sandywin/aggbug/157844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2011-10-09 10:45 <a href="http://www.cppblog.com/Sandywin/archive/2011/10/09/157844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java函数传递对象与C++传递引用</title><link>http://www.cppblog.com/Sandywin/archive/2011/09/24/156684.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Sat, 24 Sep 2011 02:41:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2011/09/24/156684.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/156684.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2011/09/24/156684.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/156684.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/156684.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我听说过这么一句话，“Java函数传参都是传递引用。”，貌似还很流行。不知道是不是Java没有指针概念的缘故，总之如果你学过C++，那就要记住，Java对象在函数间的传递不同于C++概念中的传递引用，如果不懂C++，无视这篇blog。不想纠结于概念，看例子。&nbsp;&nbsp;<a href='http://www.cppblog.com/Sandywin/archive/2011/09/24/156684.html'>阅读全文</a><img src ="http://www.cppblog.com/Sandywin/aggbug/156684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2011-09-24 10:41 <a href="http://www.cppblog.com/Sandywin/archive/2011/09/24/156684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL CASE WHEN使用</title><link>http://www.cppblog.com/Sandywin/archive/2011/04/22/144778.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Fri, 22 Apr 2011 05:19:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2011/04/22/144778.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/144778.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2011/04/22/144778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/144778.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/144778.html</trackback:ping><description><![CDATA[<div class=postText>
<div class=postBody>Case具有两种格式。简单Case函数和Case搜索函数。
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #008000">--简单Case函数</span>
<span style="COLOR: #0000ff">CASE</span> sex
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'1'</span> <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'男'</span>
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'2'</span> <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'女'</span>
<span style="COLOR: #0000ff">ELSE</span> <span style="COLOR: #800080">'其他'</span> <span style="COLOR: #0000ff">END</span>
<span style="COLOR: #008000">--Case搜索函数</span>
<span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> sex = <span style="COLOR: #800080">'1'</span> <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'男'</span>
<span style="COLOR: #0000ff">WHEN</span> sex = <span style="COLOR: #800080">'2'</span> <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'女'</span>
<span style="COLOR: #0000ff">ELSE</span> <span style="COLOR: #800080">'其他'</span> <span style="COLOR: #0000ff">END</span>
</pre>
<br>这两种方式，可以实现相同的功能。简单Case函数的写法相对比较简洁，但是和Case搜索函数相比，功能方面会有些限制，比如写判断式。 <br>还有一个需要注意的问题，Case函数只返回第一个符合条件的值，剩下的Case部分将会被自动忽略。 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #008000">--比如说，下面这段SQL，你永远无法得到&#8220;第二类&#8221;这个结果</span>
<span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> col_1 <span style="COLOR: #0000ff" ?>IN</span> ( <span style="COLOR: #800080">'a'</span>, <span style="COLOR: #800080">'b'</span>) <span style="COLOR: #0000ff" ?>THEN</span> <span style="COLOR: #800080">'第一类'</span>
<span style="COLOR: #0000ff">WHEN</span> col_1 <span style="COLOR: #0000ff">IN</span> (<span style="COLOR: #800080">'a'</span>)       <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'第二类'</span>
<span style="COLOR: #0000ff">ELSE</span><span style="COLOR: #800080">'其他'</span> <span style="COLOR: #0000ff" ?>END</span></pre>
<br>下面我们来看一下，使用Case函数都能做些什么事情。 <br><br><strong>一，已知数据按照另外一种方式进行分组，分析。</strong> <br><br>有如下数据:(为了看得更清楚，我并没有使用国家代码，而是直接用国家名作为Primary Key) <br>
<table style="BORDER-BOTTOM: #1e7ab4 1px solid; BORDER-LEFT: #1e7ab4 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; BORDER-TOP: #1e7ab4 1px solid; BORDER-RIGHT: #1e7ab4 1px solid; PADDING-TOP: 0px" width=200>
    <tbody>
        <tr>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>国家（country）</td>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" borderColor=#1e7ab4 width=100 align=middle>人口（population）</td>
        </tr>
        <tr>
            <td align=middle>中国</td>
            <td align=middle>600</td>
        </tr>
        <tr>
            <td align=middle>美国</td>
            <td align=middle>100</td>
        </tr>
        <tr>
            <td align=middle>加拿大</td>
            <td align=middle>100</td>
        </tr>
        <tr>
            <td align=middle>英国</td>
            <td align=middle>200</td>
        </tr>
        <tr>
            <td align=middle>法国</td>
            <td align=middle>300</td>
        </tr>
        <tr>
            <td align=middle>日本</td>
            <td align=middle>250</td>
        </tr>
        <tr>
            <td align=middle>德国</td>
            <td align=middle>200</td>
        </tr>
        <tr>
            <td align=middle>墨西哥</td>
            <td align=middle>50</td>
        </tr>
        <tr>
            <td align=middle>印度</td>
            <td align=middle>250</td>
        </tr>
    </tbody>
</table>
<br>根据这个国家人口数据，统计亚洲和北美洲的人口数量。应该得到下面这个结果。 <br>
<table style="BORDER-BOTTOM: #1e7ab4 1px solid; BORDER-LEFT: #1e7ab4 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; BORDER-TOP: #1e7ab4 1px solid; BORDER-RIGHT: #1e7ab4 1px solid; PADDING-TOP: 0px" width=200>
    <tbody>
        <tr>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>洲</td>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>人口</td>
        </tr>
        <tr>
            <td align=middle>亚洲</td>
            <td align=middle>1100</td>
        </tr>
        <tr>
            <td align=middle>北美洲</td>
            <td align=middle>250</font></td>
        </tr>
        <tr>
            <td align=middle>其他</td>
            <td align=middle>700</td>
        </tr>
    </tbody>
</table>
<br>想要解决这个问题，你会怎么做？生成一个带有洲Code的View，是一个解决方法，但是这样很难动态的改变统计的方式。 <br>如果使用Case函数，SQL代码如下:
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #0000ff">SELECT</span>  SUM(population),
<span style="COLOR: #0000ff">CASE</span> country
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'中国'</span>     <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'亚洲'</span>
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'印度'</span>     <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'亚洲'</span>
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'日本'</span>     <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'亚洲'</span>
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'美国'</span>     <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'北美洲'</span>
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'加拿大'</span>  <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'北美洲'</span>
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'墨西哥'</span>  <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'北美洲'</span>
<span style="COLOR: #0000ff">ELSE</span> <span style="COLOR: #800080">'其他'</span> <span style="COLOR: #0000ff">END</span>
<span style="COLOR: #0000ff">FROM</span>    Table_A
<span style="COLOR: #0000ff">GROUP</span> <span style="COLOR: #0000ff">BY</span> <span style="COLOR: #0000ff">CASE</span> country
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'中国'</span>     <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'亚洲'</span>
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'印度'</span>     <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'亚洲'</span>
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'日本'</span>     <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'亚洲'</span>
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'美国'</span>     <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'北美洲'</span>
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'加拿大'</span>  <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'北美洲'</span>
<span style="COLOR: #0000ff">WHEN</span> <span style="COLOR: #800080">'墨西哥'</span>  <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'北美洲'</span>
<span style="COLOR: #0000ff">ELSE</span> <span style="COLOR: #800080">'其他'</span> <span style="COLOR: #0000ff">END</span>;
</pre>
<br>同样的，我们也可以用这个方法来判断工资的等级，并统计每一等级的人数。SQL代码如下； <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #0000ff">SELECT</span>
<span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> salary &lt;= 500 <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #008000">'1'</span>
<span style="COLOR: #0000ff">WHEN</span> salary &gt; 500 <span style="COLOR: #0000ff">AND</span> salary &lt;= 600  <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'2'</span>
<span style="COLOR: #0000ff">WHEN</span> salary &gt; 600 <span style="COLOR: #0000ff">AND</span> salary &lt;= 800  <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'3'</span>
<span style="COLOR: #0000ff">WHEN</span> salary &gt; 800 <span style="COLOR: #0000ff">AND</span> salary &lt;= 1000 <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'4'</span>
<span style="COLOR: #0000ff">ELSE</span> <span style="COLOR: #0000ff">NULL</span> <span style="COLOR: #0000ff">END</span> salary_class,
COUNT(*)
<span style="COLOR: #0000ff">FROM</span>    Table_A
<span style="COLOR: #0000ff">GROUP</span> <span style="COLOR: #0000ff">BY</span>
<span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> salary &lt;= 500 <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #008000">'1'</span>
<span style="COLOR: #0000ff">WHEN</span> salary &gt; 500 <span style="COLOR: #0000ff">AND</span> salary &lt;= 600  <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'2'</span>
<span style="COLOR: #0000ff">WHEN</span> salary &gt; 600 <span style="COLOR: #0000ff">AND</span> salary &lt;= 800  <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'3'</span>
<span style="COLOR: #0000ff">WHEN</span> salary &gt; 800 <span style="COLOR: #0000ff">AND</span> salary &lt;= 1000 <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'4'</span>
<span style="COLOR: #0000ff">ELSE</span> <span style="COLOR: #0000ff">NULL</span> <span style="COLOR: #0000ff">END</span>;
</pre>
<br><strong>二，用一个SQL语句完成不同条件的分组。</strong> <br><br>有如下数据 <br>
<table style="BORDER-BOTTOM: #1e7ab4 1px solid; BORDER-LEFT: #1e7ab4 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; BORDER-TOP: #1e7ab4 1px solid; BORDER-RIGHT: #1e7ab4 1px solid; PADDING-TOP: 0px" id=Table1 width=200>
    <tbody>
        <tr>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>国家（country）</td>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>性别（sex）</td>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>人口（population）</td>
        </tr>
        <tr>
            <td align=middle>中国</td>
            <td align=middle>1</td>
            <td align=middle>340</td>
        </tr>
        <tr>
            <td align=middle>中国</td>
            <td align=middle>2</td>
            <td align=middle>260</td>
        </tr>
        <tr>
            <td align=middle>美国</td>
            <td align=middle>1</td>
            <td align=middle>45</td>
        </tr>
        <tr>
            <td align=middle>美国</td>
            <td align=middle>2</td>
            <td align=middle>55</td>
        </tr>
        <tr>
            <td align=middle>加拿大</td>
            <td align=middle>1</td>
            <td align=middle>51</td>
        </tr>
        <tr>
            <td align=middle>加拿大</td>
            <td align=middle>2</td>
            <td align=middle>49</td>
        </tr>
        <tr>
            <td align=middle>英国</td>
            <td align=middle>1</td>
            <td align=middle>40</td>
        </tr>
        <tr>
            <td align=middle>英国</td>
            <td align=middle>2</td>
            <td align=middle>60</td>
        </tr>
    </tbody>
</table>
<br>按照国家和性别进行分组，得出结果如下 <br>
<table style="BORDER-BOTTOM: #1e7ab4 1px solid; BORDER-LEFT: #1e7ab4 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; BORDER-TOP: #1e7ab4 1px solid; BORDER-RIGHT: #1e7ab4 1px solid; PADDING-TOP: 0px" id=Table2 width=200>
    <tbody>
        <tr>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>国家</td>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>男</td>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>女</td>
        </tr>
        <tr>
            <td align=middle>中国</td>
            <td align=middle>340</td>
            <td align=middle>260</td>
        </tr>
        <tr>
            <td align=middle>美国</td>
            <td align=middle>45</td>
            <td align=middle>55</td>
        </tr>
        <tr>
            <td align=middle>加拿大</td>
            <td align=middle>51</td>
            <td align=middle>49</td>
        </tr>
        <tr>
            <td align=middle>英国</td>
            <td align=middle>40</td>
            <td align=middle>60</td>
        </tr>
    </tbody>
</table>
<br>普通情况下，用UNION也可以实现用一条语句进行查询。但是那样增加消耗(两个Select部分)，而且SQL语句会比较长。 <br>下面是一个是用Case函数来完成这个功能的例子 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #0000ff">SELECT</span> country,
SUM( <span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> sex = <span style="COLOR: #800080">'1'</span> <span style="COLOR: #0000ff">THEN</span>
population <span style="COLOR: #0000ff">ELSE</span> 0 <span style="COLOR: #0000ff">END</span>),  <span style="COLOR: #008000">--男性人口</span>
SUM( <span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> sex = <span style="COLOR: #800080">'2'</span> <span style="COLOR: #0000ff">THEN</span>
population <span style="COLOR: #0000ff">ELSE</span> 0 <span style="COLOR: #0000ff">END</span>)   <span style="COLOR: #008000">--女性人口</span>
<span style="COLOR: #0000ff">FROM</span>  Table_A
<span style="COLOR: #0000ff">GROUP</span> <span style="COLOR: #0000ff">BY</span> country;
</pre>
<br>这样我们使用Select，完成对二维表的输出形式，充分显示了Case函数的强大。 <br><br><strong>三，在Check中使用Case函数。</strong> <br><br>在Check中使用Case函数在很多情况下都是非常不错的解决方法。可能有很多人根本就不用Check，那么我建议你在看过下面的例子之后也尝试一下在SQL中使用Check。 <br>下面我们来举个例子 <br>公司A，这个公司有个规定，女职员的工资必须高于1000块。如果用Check和Case来表现的话，如下所示
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #0000ff">CONSTRAINT</span> check_salary <span style="COLOR: #0000ff">CHECK</span>
( <span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> sex = <span style="COLOR: #800080">'2'</span>
<span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> salary &gt; 1000
<span style="COLOR: #0000ff">THEN</span> 1 <span style="COLOR: #0000ff">ELSE</span> 0 <span style="COLOR: #0000ff">END</span>
<span style="COLOR: #0000ff">ELSE</span> 1 <span style="COLOR: #0000ff">END</span> = 1 )
</pre>
<br>如果单纯使用Check，如下所示 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #0000ff">CONSTRAINT</span> check_salary <span style="COLOR: #0000ff">CHECK</span>
( sex = <span style="COLOR: #800080">'2'</span> <span style="COLOR: #0000ff">AND</span> salary &gt; 1000 )
</pre>
<br>女职员的条件倒是符合了，男职员就无法输入了。 </div>
<div class=postBody><strong>四，根据条件有选择的UPDATE。</strong> <br><br>例，有如下更新条件
<ol>
    <li>工资5000以上的职员，工资减少10%
    <li>工资在2000到4600之间的职员，工资增加15% </li>
</ol>
很容易考虑的是选择执行两次UPDATE语句，如下所示 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #800080">--条件1</span>
<span style="COLOR: #0000ff">UPDATE</span> Personnel
<span style="COLOR: #0000ff">SET</span> salary = salary * 0.9
<span style="COLOR: #0000ff">WHERE</span> salary &gt;= 5000;
<span style="COLOR: #800080">--条件2</span>
<span style="COLOR: #0000ff">UPDATE</span> Personnel
<span style="COLOR: #0000ff">SET</span> salary = salary * 1.15
<span style="COLOR: #0000ff">WHERE</span> salary &gt;= 2000 <span style="COLOR: #0000ff">AND</span> salary &lt; 4600;
</pre>
<br>但是事情没有想象得那么简单，假设有个人工资5000块。首先，按照条件1，工资减少10%，变成工资4500。接下来运行第二个SQL时候，因为这个人的工资是4500在2000到4600的范围之内， 需增加15%，最后这个人的工资结果是5175,不但没有减少，反而增加了。如果要是反过来执行，那么工资4600的人相反会变成减少工资。暂且不管这个规章是多么荒诞，如果想要一个SQL 语句实现这个功能的话，我们需要用到Case函数。代码如下: <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #0000ff">UPDATE</span> Personnel
<span style="COLOR: #0000ff">SET</span> salary = <span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> salary &gt;= 5000
　            <span style="COLOR: #0000ff">THEN</span> salary * 0.9
<span style="COLOR: #0000ff">WHEN</span> salary &gt;= 2000 <span style="COLOR: #0000ff">AND</span> salary &lt; 4600
<span style="COLOR: #0000ff">THEN</span> salary * 1.15
<span style="COLOR: #0000ff">ELSE</span> salary <span style="COLOR: #0000ff">END</span>;
</pre>
<br>这里要注意一点，最后一行的ELSE salary是必需的，要是没有这行，不符合这两个条件的人的工资将会被写成NUll,那可就大事不妙了。在Case函数中Else部分的默认值是NULL，这点是需要注意的地方。 <br>这种方法还可以在很多地方使用，比如说变更主键这种累活。 <br>一般情况下，要想把两条数据的Primary key,a和b交换，需要经过临时存储，拷贝，读回数据的三个过程，要是使用Case函数的话，一切都变得简单多了。 <br>
<table style="BORDER-BOTTOM: #1e7ab4 1px solid; BORDER-LEFT: #1e7ab4 1px solid; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-COLLAPSE: collapse; BORDER-TOP: #1e7ab4 1px solid; BORDER-RIGHT: #1e7ab4 1px solid; PADDING-TOP: 0px" width=300>
    <tbody>
        <tr>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>p_key</td>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>col_1</td>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" width=100 align=middle>col_2</td>
        </tr>
        <tr>
            <td align=middle>a</td>
            <td align=middle>1</td>
            <td align=middle>张三</td>
        </tr>
        <tr>
            <td align=middle>b</td>
            <td align=middle>2</td>
            <td align=middle>李四</td>
        </tr>
        <tr>
            <td align=middle>c</td>
            <td align=middle>3</td>
            <td align=middle>王五</td>
        </tr>
    </tbody>
</table>
<br><br>假设有如上数据，需要把主键<code>a</code>和<code>b</code>相互交换。用Case函数来实现的话，代码如下 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #0000ff">UPDATE</span> SomeTable
<span style="COLOR: #0000ff">SET</span> p_key = <span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> p_key = <span style="COLOR: #800080">'a'</span>
<span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'b'</span>
<span style="COLOR: #0000ff">WHEN</span> p_key = <span style="COLOR: #800080">'b'</span>
<span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'a'</span>
<span style="COLOR: #0000ff">ELSE</span> p_key <span style="COLOR: #0000ff">END</span>
<span style="COLOR: #0000ff">WHERE</span> p_key <span style="COLOR: #0000ff">IN</span> (<span style="COLOR: #800080">'a'</span>, <span style="COLOR: #800080">'b'</span>);
</pre>
<br>同样的也可以交换两个Unique key。需要注意的是，如果有需要交换主键的情况发生，多半是当初对这个表的设计进行得不够到位，建议检查表的设计是否妥当。 <br><br><strong>五，两个表数据是否一致的检查。</strong> <br><br>Case函数不同于DECODE函数。在Case函数中，可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等等。比如说使用IN,EXISTS，可以进行子查询，从而 实现更多的功能。 <br>下面具个例子来说明，有两个表，tbl_A,tbl_B，两个表中都有keyCol列。现在我们对两个表进行比较，tbl_A中的keyCol列的数据如果在tbl_B的keyCol列的数据中可以找到， 返回结果'Matched',如果没有找到，返回结果'Unmatched'。 <br>要实现下面这个功能，可以使用下面两条语句 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #008000">--使用IN的时候</span>
<span style="COLOR: #0000ff">SELECT</span> keyCol,
<span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> keyCol <span style="COLOR: #0000ff">IN</span> ( <span style="COLOR: #0000ff">SELECT</span> keyCol <span style="COLOR: #0000ff">FROM</span> tbl_B )
<span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'Matched'</span>
<span style="COLOR: #0000ff">ELSE</span> <span style="COLOR: #800080">'Unmatched'</span> <span style="COLOR: #0000ff">END</span> Label
<span style="COLOR: #0000ff">FROM</span> tbl_A;
<span style="COLOR: #008000">--使用EXISTS的时候</span>
<span style="COLOR: #0000ff">SELECT</span> keyCol,
<span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> EXISTS ( <span style="COLOR: #0000ff">SELECT</span> * <span style="COLOR: #0000ff">FROM</span> tbl_B
<span style="COLOR: #0000ff">WHERE</span> tbl_A.keyCol = tbl_B.keyCol )
<span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'Matched'</span>
<span style="COLOR: #0000ff">ELSE</span> <span style="COLOR: #800080">'Unmatched'</span> <span style="COLOR: #0000ff">END</span> Label
<span style="COLOR: #0000ff">FROM</span> tbl_A;
</pre>
<br>使用IN和EXISTS的结果是相同的。也可以使用NOT IN和NOT EXISTS，但是这个时候要注意NULL的情况。 <br><br><strong>六，在Case函数中使用合计函数</strong> <br><br>假设有下面一个表<br>
<table style="BORDER-BOTTOM: #1e7ab4 1px solid; BORDER-LEFT: #1e7ab4 1px solid; PADDING-BOTTOM: 1px; PADDING-LEFT: 1px; PADDING-RIGHT: 1px; BORDER-COLLAPSE: collapse; BORDER-TOP: #1e7ab4 1px solid; BORDER-RIGHT: #1e7ab4 1px solid; PADDING-TOP: 1px">
    <tbody>
        <tr>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" noWrap align=middle>学号(std_id)</td>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" noWrap align=middle>课程ID(class_id)</td>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" noWrap align=middle>课程名(class_name)</td>
            <td style="BACKGROUND-COLOR: #1e7ab4; COLOR: #ffffff; FONT-WEIGHT: bold" noWrap align=middle>主修flag（main_class_flg)</td>
        </tr>
        <tr>
            <td align=middle>100</td>
            <td align=middle>1</td>
            <td align=middle>经济学</td>
            <td align=middle>Y</td>
        </tr>
        <tr>
            <td align=middle>100</td>
            <td align=middle>2</td>
            <td align=middle>历史学</td>
            <td align=middle>N</td>
        </tr>
        <tr>
            <td align=middle>200</td>
            <td align=middle>2</td>
            <td align=middle>历史学</td>
            <td align=middle>N</td>
        </tr>
        <tr>
            <td align=middle>200</td>
            <td align=middle>3</td>
            <td align=middle>考古学</td>
            <td align=middle>Y</td>
        </tr>
        <tr>
            <td align=middle>200</td>
            <td align=middle>4</td>
            <td align=middle>计算机</td>
            <td align=middle>N</td>
        </tr>
        <tr>
            <td align=middle>300</td>
            <td align=middle>4</td>
            <td align=middle>计算机</td>
            <td align=middle>N</td>
        </tr>
        <tr>
            <td align=middle>400</td>
            <td align=middle>5</td>
            <td align=middle>化学</td>
            <td align=middle>N</td>
        </tr>
        <tr>
            <td align=middle>500</td>
            <td align=middle>6</td>
            <td align=middle>数学</td>
            <td align=middle>N</td>
        </tr>
    </tbody>
</table>
<br>有的学生选择了同时修几门课程(100,200)也有的学生只选择了一门课程(300,400,500)。选修多门课程的学生，要选择一门课程作为主修，主修flag里面写入 Y。只选择一门课程的学生，主修flag为N(实际上要是写入Y的话，就没有下面的麻烦事了，为了举例子，还请多多包含)。 <br>现在我们要按照下面两个条件对这个表进行查询
<ol>
    <li>只选修一门课程的人，返回那门课程的ID
    <li>选修多门课程的人，返回所选的主课程ID </li>
</ol>
<br>简单的想法就是，执行两条不同的SQL语句进行查询。 <br>条件1 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #008000">--条件1：只选择了一门课程的学生</span>
<span style="COLOR: #0000ff">SELECT</span> std_id, MAX(class_id) <span style="COLOR: #0000ff">AS</span> main_class
<span style="COLOR: #0000ff">FROM</span> Studentclass
<span style="COLOR: #0000ff">GROUP</span> <span style="COLOR: #0000ff">BY</span> std_id
<span style="COLOR: #0000ff">HAVING</span> COUNT(*) = 1;
</pre>
<br>执行结果1 <br>
<pre class=src>STD_ID   MAIN_class
<span style="COLOR: #008000">------   ----------</span>
300      4
400      5
500      6
</pre>
<br>条件2 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #008000">--条件2：选择多门课程的学生</span>
<span style="COLOR: #0000ff">SELECT</span> std_id, class_id <span style="COLOR: #0000ff">AS</span> main_class
<span style="COLOR: #0000ff">FROM</span> Studentclass
<span style="COLOR: #0000ff">WHERE</span> main_class_flg = <span style="COLOR: #800080">'Y'</span> ;
</pre>
<br>执行结果2 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6">STD_ID  MAIN_class
<span style="COLOR: #008000">------  ----------</span>
100     1
200     3
</pre>
<br>如果使用Case函数，我们只要一条SQL语句就可以解决问题，具体如下所示 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #0000ff">SELECT</span>  std_id,
<span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> COUNT(*) = 1  <span style="COLOR: #008000">--只选择一门课程的学生的情况</span>
<span style="COLOR: #0000ff">THEN</span> MAX(class_id)
<span style="COLOR: #0000ff">ELSE</span> MAX(<span style="COLOR: #0000ff">CASE</span> <span style="COLOR: #0000ff">WHEN</span> main_class_flg = <span style="COLOR: #800080">'Y'</span>
<span style="COLOR: #0000ff">THEN</span> class_id
<span style="COLOR: #0000ff">ELSE</span> <span style="COLOR: #0000ff">NULL</span> <span style="COLOR: #0000ff">END</span>
)
<span style="COLOR: #0000ff">END</span> <span style="COLOR: #0000ff">AS</span> main_class
<span style="COLOR: #0000ff">FROM</span> Studentclass
<span style="COLOR: #0000ff">GROUP</span> <span style="COLOR: #0000ff">BY</span> std_id;
</pre>
<br>运行结果 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6">STD_ID   MAIN_class
<span style="COLOR: #008000">------   ----------</span>
100      1
200      3
300      4
400      5
500      6
</pre>
<br>通过在Case函数中嵌套Case函数，在合计函数中使用Case函数等方法，我们可以轻松的解决这个问题。使用Case函数给我们带来了更大的自由度。 <br>最后提醒一下使用Case函数的新手注意不要犯下面的错误 <br>
<pre style="LINE-HEIGHT: 109%; BACKGROUND-COLOR: #fff7d6"><span style="COLOR: #0000ff">CASE</span> col_1
<span style="COLOR: #0000ff">WHEN</span> 1    　   <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'Right'</span>
<span style="COLOR: #0000ff">WHEN</span> <strong class=more>NULL</strong>  <span style="COLOR: #0000ff">THEN</span> <span style="COLOR: #800080">'Wrong'</span>
<span style="COLOR: #0000ff">END</span>
</pre>
<p><br>在这个语句中When Null这一行总是返回unknown，所以永远不会出现Wrong的情况。因为这句可以替换成WHEN col_1 = NULL，这是一个错误的用法，这个时候我们应该选择用WHEN col_1 IS NULL。</p>
</div>
</div>
<img src ="http://www.cppblog.com/Sandywin/aggbug/144778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2011-04-22 13:19 <a href="http://www.cppblog.com/Sandywin/archive/2011/04/22/144778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC++深入详解</title><link>http://www.cppblog.com/Sandywin/archive/2007/11/21/37086.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Wed, 21 Nov 2007 08:04:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2007/11/21/37086.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/37086.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2007/11/21/37086.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/37086.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/37086.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 内容介绍：<br>        本书从实际应用入手，由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。 不同于一般的讲述VC++使用的书籍，本书主要从程序内部运行的机制和MFC程序的组织脉络入手，使读者在学习VC++编程知识时，既能够知其然，又能知其所以然，从而帮助读者从根本上理解和掌握Windows的程序设计。另外，全书还贯穿作者多年来学习编程的一些经验，以及一些学习方法的建议，为读者进一步...&nbsp;&nbsp;<a href='http://www.cppblog.com/Sandywin/archive/2007/11/21/37086.html'>阅读全文</a><img src ="http://www.cppblog.com/Sandywin/aggbug/37086.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2007-11-21 16:04 <a href="http://www.cppblog.com/Sandywin/archive/2007/11/21/37086.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++编程规范（中文版）</title><link>http://www.cppblog.com/Sandywin/archive/2007/11/20/37042.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Tue, 20 Nov 2007 13:33:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2007/11/20/37042.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/37042.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2007/11/20/37042.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/37042.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/37042.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  内容介绍：<br>    在本书中，两位知名的C++专家将全球C++团体的集体智慧和经验凝结成一套编程规范。这些规范可以作为每一个开发团队制定实际开发规范的基础，更是每一位C++程序员应该遵循的行事准则。书中对每一条规范都给出了精确的描述，并辅以实例说明；从类型定义到差错处理，都给出了最佳的C++实践。即使使用C++多年的程序员也会从中受益匪浅。 本书适合于各层次C++程序员，也可作为高等院校C++课程的教学参考书。&nbsp;&nbsp;<a href='http://www.cppblog.com/Sandywin/archive/2007/11/20/37042.html'>阅读全文</a><img src ="http://www.cppblog.com/Sandywin/aggbug/37042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2007-11-20 21:33 <a href="http://www.cppblog.com/Sandywin/archive/2007/11/20/37042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++编程艺术 </title><link>http://www.cppblog.com/Sandywin/archive/2007/04/18/22205.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Wed, 18 Apr 2007 04:56:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2007/04/18/22205.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/22205.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2007/04/18/22205.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/22205.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/22205.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本书揭示了C++程序员创建世界级软件的奥秘。程序设计大师Herbert Schildt通过将C++语言广泛应用于功能强大的编程任务中，全面展示了C++语言的多功能性，敏捷性，和艺术性。本书内容包括探索C++的功能，创建内存管理的垃圾回收器子系统，开发线程控制面板，建立译码器以扩展C++的功能，开发可断点续传的Internet文件下载工具，创建财务分析库，用基于AI的搜索技术探索人工智能，建立定制的STL容器，以及开发Mini C++解释程序。书中所有示例和项目的源代码都可以从www.osborne.com 上免费下载。<br>&nbsp;&nbsp;<a href='http://www.cppblog.com/Sandywin/archive/2007/04/18/22205.html'>阅读全文</a><img src ="http://www.cppblog.com/Sandywin/aggbug/22205.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2007-04-18 12:56 <a href="http://www.cppblog.com/Sandywin/archive/2007/04/18/22205.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC++深入详解</title><link>http://www.cppblog.com/Sandywin/archive/2007/04/13/21829.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Fri, 13 Apr 2007 13:25:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2007/04/13/21829.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/21829.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2007/04/13/21829.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/21829.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/21829.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本书从实际应用入手，由浅入深、循序渐进地讲述Windows程序内部运行机制、MFC框架、文本、菜单、对话框、文件操作、网络编程、进程间通信、ActiveX控件、动态链接库、HOOK编程等多个主题。不同于一般的讲述VC++使用的书籍，本书主要从程序内部运行的机制和MFC程序的组织脉络入手，使读者在学习VC++编程知识时，既能够知其然，又能知其所以然，从而帮助读者从根本上理解和掌握Windows的程序设计。&nbsp;&nbsp;<a href='http://www.cppblog.com/Sandywin/archive/2007/04/13/21829.html'>阅读全文</a><img src ="http://www.cppblog.com/Sandywin/aggbug/21829.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2007-04-13 21:25 <a href="http://www.cppblog.com/Sandywin/archive/2007/04/13/21829.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Visual C++ 2005入门经典 </title><link>http://www.cppblog.com/Sandywin/archive/2007/04/13/21828.html</link><dc:creator>Shuffy</dc:creator><author>Shuffy</author><pubDate>Fri, 13 Apr 2007 13:17:00 GMT</pubDate><guid>http://www.cppblog.com/Sandywin/archive/2007/04/13/21828.html</guid><wfw:comment>http://www.cppblog.com/Sandywin/comments/21828.html</wfw:comment><comments>http://www.cppblog.com/Sandywin/archive/2007/04/13/21828.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Sandywin/comments/commentRss/21828.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Sandywin/services/trackbacks/21828.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 本书系编程语言先驱者Ivor Horton的经典之作，是学习C++编程最畅销的图书品种之一，不仅涵盖了Visual C++ .NET编程知识，还全面介绍了标准C++语言和.NET C++/CLI。本书延续了Ivor Horton讲解编程语言的独特方法，从中读者可以学习Visual C++ 2005的基础知识，并全面掌握在MFC和Windows Forms中访问数据源的技术。此外，本书各章后面的习题将有助于读者温故而知新，并尽快成为C++高效程序员&nbsp;&nbsp;<a href='http://www.cppblog.com/Sandywin/archive/2007/04/13/21828.html'>阅读全文</a><img src ="http://www.cppblog.com/Sandywin/aggbug/21828.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Sandywin/" target="_blank">Shuffy</a> 2007-04-13 21:17 <a href="http://www.cppblog.com/Sandywin/archive/2007/04/13/21828.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>