﻿<?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>博客园-cmzzlh</title><link>http://www.cnblogs.com/cmzzlh/</link><description>为简单理想奋斗一生！</description><language>zh-cn</language><lastBuildDate>Mon, 22 Mar 2010 06:05:29 GMT</lastBuildDate><pubDate>Mon, 22 Mar 2010 06:05:29 GMT</pubDate><ttl>60</ttl><item><title>dns修改命令</title><link>http://www.cnblogs.com/cmzzlh/archive/2008/06/05/1214038.html</link><dc:creator>公木子</dc:creator><author>公木子</author><pubDate>Thu, 05 Jun 2008 00:42:00 GMT</pubDate><guid>http://www.cnblogs.com/cmzzlh/archive/2008/06/05/1214038.html</guid><description><![CDATA[<p>阅读: 505 评论: 0 作者: <a href="http://www.cnblogs.com/cmzzlh/" target="_blank">公木子</a> 发表于 2008-06-05 08:42 <a href="http://www.cnblogs.com/cmzzlh/archive/2008/06/05/1214038.html" target="_blank">原文链接</a></p><font face="Verdana">netsh interface ip set dns "本地连接" static 172.16.1.141<br />
netsh interface ip add dns "本地连接" <br />
</font>
<img src="http://www.cnblogs.com/cmzzlh/aggbug/1214038.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cmzzlh/archive/2008/06/05/1214038.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cmzzlh/archive/2008/06/05/1214038.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/59360/" target="_blank">传谷歌中国部分员工已迁往美国总部</a><span style="color:gray">(2010-03-22 13:32)</span><br/>· <a href="http://news.cnblogs.com/n/59359/" target="_blank">传湖南卫视与中视网元联合运营《梦幻情天》</a><span style="color:gray">(2010-03-22 13:26)</span><br/>· <a href="http://news.cnblogs.com/n/59358/" target="_blank">浅评毁掉国产网游的七种游戏设定</a><span style="color:gray">(2010-03-22 13:21)</span><br/>· <a href="http://news.cnblogs.com/n/59357/" target="_blank">中国移动用户总数达5.33亿 TD用户428万</a><span style="color:gray">(2010-03-22 13:15)</span><br/>· <a href="http://news.cnblogs.com/n/59356/" target="_blank">视频网站版权价格1年爆涨10倍 单集过10万元</a><span style="color:gray">(2010-03-22 13:12)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/59293/" target="_blank">五个广泛流传的对大龄程序员的误解</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>对现在的新技术的一点思考</title><link>http://www.cnblogs.com/cmzzlh/archive/2007/10/29/941639.html</link><dc:creator>公木子</dc:creator><author>公木子</author><pubDate>Mon, 29 Oct 2007 08:06:00 GMT</pubDate><guid>http://www.cnblogs.com/cmzzlh/archive/2007/10/29/941639.html</guid><description><![CDATA[<p>阅读: 2588 评论: 26 作者: <a href="http://www.cnblogs.com/cmzzlh/" target="_blank">公木子</a> 发表于 2007-10-29 16:06 <a href="http://www.cnblogs.com/cmzzlh/archive/2007/10/29/941639.html" target="_blank">原文链接</a></p><p>随着<font face="Courier New">Microsoft Visual Studio 2008的发布，现在论坛里又流行学习2008了。<br />
做开发也已经有3年了。记得03毕业的时候开始工作的第一个项目是一个公司的OA系统用VS2003开发（VB.NET)的WEB系统。当时记得首页有也个滚动的待办事项提示，实现的功能是从后台数据库读取待办事项数据到前台来显示。用的就是XML的后台传输和解析。当然，那时候我还是刚毕业，代码是不我写的，是03年的时候公司的前辈写的。我只是后来拿来应用而已。当时看了一下代码也没觉得有什么特别。到了06年，WEB界出了一个新技术AJAX，号称WEB将向C/S应用程序靠拢。提供相同的用户体验，实现界面的动态刷新。当时OA项目已经早完成了。自己也去转做<font face="Courier New">C++Builder 6</font>开发的一个C/S业务系统。来到园里一看AJAX，各种文章仔细阅读了好久，发现和03那时的应用并无区别。<br />
今年上半年接手了一个体系审核系统的WEB系统，发现VS2005已经满天飞了。当时已经2年没弄过WEB了。没办法恶补了一星期，看了很多VS2005文章，还有WEBCAST的录象，终于有些头绪。上个月项目告一段落，终于有时间可以上网看看技术文章发现VS2008已经向我们走近。<br />
现在的技术包括，新的工作流服务器（WF），企业库的应用。WPF，<font face="Courier New">Windows Mobile ，AJAX，sharepoint服务器&#8230;&#8230;，给我的感觉是不让我喘口气，我马上要被淘汰了。也许有人会说你可以不学，掌握基础的语法，了解一些大致就可以了。不过现实情况可不一样。最直观的就是你上网投简历你会发现上面写的都是：<br />
<br />
熟练使用VS2005，掌握C#3.0<br />
有sharepoint大型应用的开发经验<br />
了解AJAX原理。熟练应用。<br />
对工作流有深刻了解，有实际开发经验。<br />
&#8230;&#8230;<br />
如果这些你都没接触过，表示你正在落伍。<br />
<br />
也许有人会说做CODE久了以后，就会转到管理，设计，业务上来。这些就不那么重要了。但是我不相信中国这么多的程序员全都可以转成功。有多大的比例转型。<br />
也许有人会说我懒，抵触新技术。但是我想说从工作到现在，CSDN，MSDN，博客圆，<font face="Courier New">codeproject，我每天只要有时间都会转转，从来不抵触，不过真是很累。<br />
</font><br />
我只想说微软你让我休息一下好吗？我太累了。你是一个公司几万技术人员在研究。我只有一个人。我跟不上你了。<br />
<br />
上面的都是自己的工作感受。就想说出来。看看是不是只有我一个人有这种感觉。如果不适合放在首页，我马上移除。<br />
</font></font></p>
<img src="http://www.cnblogs.com/cmzzlh/aggbug/941639.html?type=1" width="1" height="1" alt=""/><p>评论: 26　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/10/29/941639.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/10/29/941639.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/59360/" target="_blank">传谷歌中国部分员工已迁往美国总部</a><span style="color:gray">(2010-03-22 13:32)</span><br/>· <a href="http://news.cnblogs.com/n/59359/" target="_blank">传湖南卫视与中视网元联合运营《梦幻情天》</a><span style="color:gray">(2010-03-22 13:26)</span><br/>· <a href="http://news.cnblogs.com/n/59358/" target="_blank">浅评毁掉国产网游的七种游戏设定</a><span style="color:gray">(2010-03-22 13:21)</span><br/>· <a href="http://news.cnblogs.com/n/59357/" target="_blank">中国移动用户总数达5.33亿 TD用户428万</a><span style="color:gray">(2010-03-22 13:15)</span><br/>· <a href="http://news.cnblogs.com/n/59356/" target="_blank">视频网站版权价格1年爆涨10倍 单集过10万元</a><span style="color:gray">(2010-03-22 13:12)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/59293/" target="_blank">五个广泛流传的对大龄程序员的误解</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>如何编写单元测试用例（白盒测试）。</title><link>http://www.cnblogs.com/cmzzlh/archive/2007/08/23/862737.html</link><dc:creator>公木子</dc:creator><author>公木子</author><pubDate>Thu, 23 Aug 2007 01:45:00 GMT</pubDate><guid>http://www.cnblogs.com/cmzzlh/archive/2007/08/23/862737.html</guid><description><![CDATA[<p>阅读: 14373 评论: 30 作者: <a href="http://www.cnblogs.com/cmzzlh/" target="_blank">公木子</a> 发表于 2007-08-23 09:45 <a href="http://www.cnblogs.com/cmzzlh/archive/2007/08/23/862737.html" target="_blank">原文链接</a></p><p>前段时间公司进行有关测试的培训，集成测试，性能测试，压力测试说了很多。由于本人还处于Coder阶段，只是对单元测试有了些了解。写下来怕以后自己忘记了。都是些自己的看法，不一定准确，欢迎高手指教。<br />
<br />
一、 单元测试的概念<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;单元通俗的说就是指一个实现简单功能的函数。单元测试就是只用一组特定的输入(<font face="Times New Roman" color="#000000" size="3">测试用例</font>)测试函数是否功能正常，并且返回了正确的输出。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;测试的覆盖种类<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.语句覆盖：语句覆盖就是设计若干个测试用例，运行被测试程序，使得每一条可执行语句至少执行一次。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.判定覆盖（也叫分支覆盖）：设计若干个测试用例，运行所测程序，使程序中每个判断的取真分支和取假分支至少执行一次。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.条件覆盖：设计足够的测试用例，运行所测程序，使程序中每个判断的每个条件的每个可能取值至少执行一次。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.判定——条件覆盖：设计足够的测试用例，运行所测程序，使程序中每个判断的每个条件的每个可能取值至少执行一次，并且每个可能的判断结果也至少执行一次。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.条件组合测试：设计足够的测试用例，运行所测程序，使程序中每个判断的所有条件取值组合至少执行一次。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.路径测试：设计足够的测试用例，运行所测程序，要覆盖程序中所有可能的路径。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;用例的设计方案主要的有下面几种：条件测试，基本路径测试，循环测试。通过上面的方法可以实现测试用例对程序的逻辑覆盖，和路径覆盖。<br />
<br />
二、开始测试前的准备<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在开始测试时，要先声明一下，无论你设计多少测试用例，无论你的测试方案多么完美，都<span style="color: red">不可能</span>完全100%的发现所有BUG，我们所需要做的是用最少的资源，做最多测试检查，寻找一个平衡点保证程序的正确性。<span style="color: #ff0000">穷举测试是不可能的。</span>&nbsp;&nbsp;&nbsp;所以现在进行单元测试我选用的是现在一般用的比较多的基本路径测试法。<br />
<br />
三、开始测试<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基本路径测试法：设计出的测试用例要保证每一个基本独立路径至少要执行一次。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;函数说明 ：当i_flag=0；返回&nbsp;&nbsp; &nbsp;&nbsp;i_count+100<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当i_flag=1；返回&nbsp;&nbsp;&nbsp;i_count&nbsp;&nbsp;*10<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;否则&nbsp; 返回&nbsp;&nbsp;&nbsp;i_count&nbsp;&nbsp;*20<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输入参数：int i_count&nbsp;，&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int i_flag<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输出参数： int&nbsp; i_return;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;代码：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;Test(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i_count,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i_flag)<br />
</span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i_temp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(i_count</span><span style="color: #000000">&gt;</span><span style="color: #000000">0</span><span style="color: #000000">)<br />
</span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;i_flag)<br />
</span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i_temp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i_count&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">100</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />
</span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">11</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;i_flag)<br />
</span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i_temp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i_temp&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">;<br />
</span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">17</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
</span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />
</span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i_temp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i_temp&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">20</span><span style="color: #000000">;<br />
</span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i_count</span><span style="color: #000000">--</span><span style="color: #000000">;<br />
</span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
</span><span style="color: #008080">24</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;i_temp;<br />
</span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<p><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.画出程序控制流程图<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;图例：<br />
&nbsp;&nbsp;<img height="427" alt="" src="http://images.cnblogs.com/cnblogs_com/cmzzlh/2.jpg" width="669" border="0" /><br />
<br />
事例程序流程图：<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<img height="557" alt="" src="http://images.cnblogs.com/cnblogs_com/cmzzlh/5.jpg" width="472" border="0" /><br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;圈中的数字代表的是语句的行号，也许有人问为什么选4,6,13,8......作为结点，第2行，第3行为什么不是结点，因为选择结点是有规律的。让我们看程序中；第2行，第3行是按顺序执行下来的。直到第4行才出现了循环操作。而2，3行没有什么判断，选择等分支操作，所以我们把2，3，4全部合并成一个结点。其他的也是照这个规则合并，然后就有了上面的流程图。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.计算圈复杂度<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有了图以后我们要知道到底我们有写多少个测试用例，才能满足基本路径测试。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里有有了一个新概念——圈复杂度<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;圈复杂度是一种为程序逻辑复杂性提供定量测试的软件度量。将该度量用于计算程序的基本独立路径数目。为确保所有语句至少执行一次的测试数量的上界。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公式圈复杂度V（G）=E-N+2，E是流图中边的数量，N是流图中结点的数量。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;公式圈复杂度V（G）=P+1 ，P是流图G中判定结点的数量。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通俗的说圈负责度就是判断单元是不是复杂，是不是好测试的标准。一般来说如果圈复杂度如果大于20就表示这个单元的可测试性不好，太复杂（也许有人觉得无所谓，但是如果你们公司实行了CMMI5的话，对这个是有规定的）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;从图中我们可以看到，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; V（G）=10条边-8结点+2=4<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;V（G）=3个判定结点+1=4<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上图的圈复杂图是4。这个结果对我们来说有什么意义呢？它表示我们只要<span style="color: red">最多</span>4个测试用例就可以达到基本路径覆盖。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.导出程序基本路径。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在我们知道了起码要写4个测试用例，但是怎么设计这4个测试用例？<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;导出程序基本路径，根据程序基本路径设计测试用例子。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;程序基本路径：基本独立路径就是从程序的开始结点到结束可以选择任何的路径遍历，但是每条路径至少应该包含一条已定义路径不曾用到的边。（看起来不好理解，让我们看例子）。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;让我们看上面的流程图：从结点4到24有几条路径呢？<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 B（4，24）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 C，E，J（4，6，8，24）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 C，D，F，H，A，B（4，6，13，15，22，4，24）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4 C，D，G，I，A，B（4，6，13，19，22，4，24）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还有吗？？<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 C，D，C，I，A，C，E，J（4，6，13，19，22，4，6，8，24）算吗？<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不算，为什么？因为上面的4条路径已经包括了所有的边。第5条路径已经不包含没有用过的边了。所有的路径都遍历过了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;好了，现在我们有了4条基本独立路径根据独立路径我们可以设计测试用例。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1 B（4，24）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输入数据：i_count=0，或者是i_count&lt;0的某一个值。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;预期结果：i_temp=0.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 C，E，J（4，6，8，24）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输入数据：&nbsp;i_count&nbsp;=1;i_flag=0&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;预期结果：i_temp=101.<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 C，D，F，H，A，B（4，6，13，15，22，4，24）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;输入数据：&nbsp;i_count&nbsp;=1;i_flag=1&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;预期结果：i_temp=10.<br />
<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4 C，D，G，I，A，B（4，6，13，19，22，4，24）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入数据：&nbsp;i_count&nbsp;=1;i_flag=2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;预期结果：i_temp=20.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: red">这里的输入数据是由路径和程序推论出来的。而要注意的是预期结果是从函数说明中导出，不能根据程序结构中导出。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #000000">为什么这么说？<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;让我们看程序中的第3行。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int i_temp=1;假如开发人员一不小心写错了，变成了int i_temp=0;根据程序导出的<span style="color: #ff0000">预期结果</span>就会是一个<span style="color: #ff0000">错误</span>的值，但是<span style="color: #ff0000">单元测试不出来问题</span>。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;那单元测试就失去了意义。<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;有人也许会问这么简单的函数就有4个测试用例，如果还复杂一些的怎么办？上面的测试用例还可以简化吗？答案是可以。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们来看 路径&nbsp;&nbsp;&nbsp;&nbsp;1 B（4，24）和&nbsp;&nbsp;&nbsp;4 C，D，G，I，A，B（4，6，13，19，22，<span style="color: red">4，24</span>），路径1是路径4的真子集，&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以1是可以不必要的。上图的圈复杂度是4。这个结果对我们来说有什么意义呢？它表示我们只要<span style="color: red">最多</span>4个测试用例就可以达到基本路径覆盖。所以说圈复杂度标示是<span style="color: red">最多</span>的测试用例个数，不是一定要4个测试用例才可以。不过有一点要申明的是测试用例越简化代表你的测试越少，这样程序的安全性就越低了。<br />
</span></span><br />
四、完成测试<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;接下来根据测试用例使用工具测试NUNIT，VS2005都可以。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 接下来根据测试结果编写测试报告，测试人，时间，结果，用例，是否通过，格式网上一大把，每个公司的格式也不一样就不说了。<br />
<br />
------------------------------------------------------------------------------------------------------------------------------------------------------<br />
个人原创，可能有不准确的地方欢迎大家指出。谢谢。<br />
</p>
<img src="http://www.cnblogs.com/cmzzlh/aggbug/862737.html?type=1" width="1" height="1" alt=""/><p>评论: 30　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/08/23/862737.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/08/23/862737.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/59360/" target="_blank">传谷歌中国部分员工已迁往美国总部</a><span style="color:gray">(2010-03-22 13:32)</span><br/>· <a href="http://news.cnblogs.com/n/59359/" target="_blank">传湖南卫视与中视网元联合运营《梦幻情天》</a><span style="color:gray">(2010-03-22 13:26)</span><br/>· <a href="http://news.cnblogs.com/n/59358/" target="_blank">浅评毁掉国产网游的七种游戏设定</a><span style="color:gray">(2010-03-22 13:21)</span><br/>· <a href="http://news.cnblogs.com/n/59357/" target="_blank">中国移动用户总数达5.33亿 TD用户428万</a><span style="color:gray">(2010-03-22 13:15)</span><br/>· <a href="http://news.cnblogs.com/n/59356/" target="_blank">视频网站版权价格1年爆涨10倍 单集过10万元</a><span style="color:gray">(2010-03-22 13:12)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/59293/" target="_blank">五个广泛流传的对大龄程序员的误解</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>AjaxControlToolkit 说明</title><link>http://www.cnblogs.com/cmzzlh/archive/2007/06/12/780638.html</link><dc:creator>公木子</dc:creator><author>公木子</author><pubDate>Tue, 12 Jun 2007 07:44:00 GMT</pubDate><guid>http://www.cnblogs.com/cmzzlh/archive/2007/06/12/780638.html</guid><description><![CDATA[<p>阅读: 404 评论: 0 作者: <a href="http://www.cnblogs.com/cmzzlh/" target="_blank">公木子</a> 发表于 2007-06-12 15:44 <a href="http://www.cnblogs.com/cmzzlh/archive/2007/06/12/780638.html" target="_blank">原文链接</a></p>&nbsp;<br>说明：<br><br>1 Accordion 2 AccordionPane&nbsp; 实现多面板，但一次只显示其中一个面板中的内容
<p>3 AlwaysVisibleControlExtender 不论鼠标怎么滚动，都显示某个内容</p>
<p>4 AnimationExtender 5 AnimationExtenderControlBase 实现控件中内容的动画效果（移动、变化大小、淡如淡出、变颜色等）</p>
<p>6 AutoCompleteExtender 文本框自动完成功能</p>
<p>7 CalendarExtender 日历控件</p>
<p>8 CascadingDropDown 级联下拉菜单</p>
<p>9 CollapsiblePanelExtender 卷起面板</p>
<p>10 ConfirmButtonExtender 确认按钮</p>
<p>11 DraggableListItemExtender 12 DragPanelExtender&nbsp; 拖动控件</p>
<p>13 DropDownExtender 给任意控件添加下拉菜单</p>
<p>14 DropShadowExtender&nbsp; 收起/扩展面板功能</p>
<p>15 DynamicPopulateExtender&nbsp; 动态生成控件中的内容</p>
<p>16 FilteredTextBoxExtender 文本框内容过滤</p>
<p>17 HoverExtender 18 HoverMenuExtender 鼠标停留出现菜单</p>
<p>19 ListSearchExtender 为下拉菜单添加字母查找功能</p>
<p>20 MaskedEditExtender 21 MaskedEditValidator&nbsp; 输入框格式限定功能</p>
<p>22 ModalPopupExtender 出现模式对话框功能</p>
<p>23 MutuallyExclusiveCheckBoxExtender 多个选项某个选项独占功能</p>
<p>24 NoBot 防爬虫/机器输入功能</p>
<p>25 NumericUpDownExtender 数字值增减</p>
<p>26 PagingBulletedListExtender 按字母顺序的bbs功能</p>
<p>27 PasswordStrength&nbsp; 密码强度控件</p>
<p>28 PopupControlExtender&nbsp; 29 PopupExtender&nbsp;&nbsp; 给任意控件添加小窗口</p>
<p>30 Rating&nbsp; 评级控件</p>
<p>31 ReorderList 任意添加列表内容并更改列表顺序</p>
<p>32 ResizableControlExtender 控件大小改变</p>
<p>33 RoundedCornersExtender 圆角</p>
<p>34 SliderExtender 类似音量大小那种拖动条空间</p>
<p><font color=#ff1493>SlideShowExtender</font>&nbsp;&nbsp; 幻灯片一张张播放图片<br><br>35 TabContainer&nbsp; 36 TabPanel&nbsp;&nbsp; tab控件</p>
<p>37 TextBoxWatermarkExtender&nbsp; 文本输入框提示文字控件</p>
<p>38 ToggleButtonExtender&nbsp; 可改变的按钮，实际上是一个有图片的checkbox</p>
<p>39 UpdatePanelAnimationExtender&nbsp; 面板内容改变时动画有效果控件</p>
<p>40 ValidatorCalloutExtender 增强的输入验证控件<br></p>
<img src="http://www.cnblogs.com/cmzzlh/aggbug/780638.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/06/12/780638.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/06/12/780638.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/59360/" target="_blank">传谷歌中国部分员工已迁往美国总部</a><span style="color:gray">(2010-03-22 13:32)</span><br/>· <a href="http://news.cnblogs.com/n/59359/" target="_blank">传湖南卫视与中视网元联合运营《梦幻情天》</a><span style="color:gray">(2010-03-22 13:26)</span><br/>· <a href="http://news.cnblogs.com/n/59358/" target="_blank">浅评毁掉国产网游的七种游戏设定</a><span style="color:gray">(2010-03-22 13:21)</span><br/>· <a href="http://news.cnblogs.com/n/59357/" target="_blank">中国移动用户总数达5.33亿 TD用户428万</a><span style="color:gray">(2010-03-22 13:15)</span><br/>· <a href="http://news.cnblogs.com/n/59356/" target="_blank">视频网站版权价格1年爆涨10倍 单集过10万元</a><span style="color:gray">(2010-03-22 13:12)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/59293/" target="_blank">五个广泛流传的对大龄程序员的误解</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>  自定义水晶报表的显示</title><link>http://www.cnblogs.com/cmzzlh/archive/2007/06/07/775496.html</link><dc:creator>公木子</dc:creator><author>公木子</author><pubDate>Thu, 07 Jun 2007 08:39:00 GMT</pubDate><guid>http://www.cnblogs.com/cmzzlh/archive/2007/06/07/775496.html</guid><description><![CDATA[<p>阅读: 499 评论: 0 作者: <a href="http://www.cnblogs.com/cmzzlh/" target="_blank">公木子</a> 发表于 2007-06-07 16:39 <a href="http://www.cnblogs.com/cmzzlh/archive/2007/06/07/775496.html" target="_blank">原文链接</a></p>&nbsp;<br>&nbsp; 自定义水晶报表的显示，比如隐藏工具栏，让报表左对齐，去除水晶报表的公司LOGO等&#8230;&#8230;&#8230;（新作：海波.NET） &nbsp; <br>&nbsp; —————————————————————————————————————— &nbsp; <br>&nbsp; 1、外观： &nbsp; <br>&nbsp; 设置 &nbsp; Crystal &nbsp; Report &nbsp; Viewer &nbsp; 的属性： &nbsp; <br>&nbsp; DisplayGroupTree &nbsp; 布尔值。获取或设置树视图是可见还是隐藏。 &nbsp; &nbsp; <br>&nbsp; DisplayPage &nbsp; 布尔值。获取或设置工具栏是可见还是隐藏。 &nbsp; &nbsp; <br>&nbsp; DisplayToolbar &nbsp; 布尔值。获取或设置工具栏上的转到页按钮是可见还是隐藏。 &nbsp; &nbsp; <br>&nbsp; PageZoomFactor &nbsp; Int32。获取或设置报表的缩放因数。 &nbsp; &nbsp; <br>&nbsp; SeparatePages &nbsp; 布尔值。获取或设置报表页是分开还是连接。 &nbsp; <br>&nbsp; PageToTreeRatio &nbsp; Float64。设置组树与报表视图之间的大小比例。 &nbsp; <br>&nbsp; —————————————————————————————————————— &nbsp; &nbsp; &nbsp; <br>&nbsp; 2、控制工具栏的按钮： &nbsp; <br>&nbsp; 设置 &nbsp; Crystal &nbsp; Report &nbsp; Viewer &nbsp; 的属性： &nbsp; <br>&nbsp; HasGotoPageButton &nbsp; 布尔值。获取或设置转到页按钮的可见性。 &nbsp; &nbsp; <br>&nbsp; HasLevelUpButton &nbsp; 布尔值。获取或设置工具栏上的转到上一页按钮是可见还是隐藏。 &nbsp; &nbsp; <br>&nbsp; HasPageNavigationButtons &nbsp; 布尔值。获取或设置工具栏上的页面导航按钮是可见还是隐藏。 &nbsp; &nbsp; <br>&nbsp; HasRefreshButton &nbsp; 布尔值。获取或设置工具栏上的刷新按钮是可见还是隐藏。 &nbsp; &nbsp; <br>&nbsp; HasSearchButton &nbsp; 布尔值。获取或设置工具栏上的搜索按钮是可见还是隐藏。 &nbsp; &nbsp; <br>&nbsp; HasZoomFactorList &nbsp; 布尔值。获取或设置工具栏上的缩放因数列表是可见还是隐藏。 &nbsp; &nbsp; <br>&nbsp; —————————————————————————————————————— &nbsp; <br>&nbsp; 3、在 &nbsp; Web &nbsp; 页面里的布局： &nbsp; <br>&nbsp; 切换到窗体的&#8220;HTML &nbsp; 视图&#8221;，修改 &nbsp; style &nbsp; 属性。 &nbsp; <br>&nbsp; &lt;CR:CrystalReportViewer &nbsp; id="CrystalReportViewer1" &nbsp; style="Z-INDEX: &nbsp; 101; &nbsp; LEFT: &nbsp; 8px; &nbsp; POSITION: &nbsp; absolute; &nbsp; TOP: &nbsp; 8px" &nbsp; runat="server" &nbsp; Width="350px" &nbsp; Height="50px" &nbsp; EnableDrillDown="False" &nbsp; DisplayGroupTree="False"&gt;&lt;/CR:CrystalReportViewer&gt; &nbsp; <br>&nbsp; —————————————————————————————————————— &nbsp; <br>&nbsp; 4、除水晶报表的的公司LOGO &nbsp; <br>&nbsp; 将 &nbsp; Crystal &nbsp; 公司的Logo &nbsp; 文件替换或删除&#8230;&#8230; &nbsp; <br>&nbsp; (1)如果是用 &nbsp; VS.NET &nbsp; 里自带的水晶报表 &nbsp; <br>&nbsp; C:\Program &nbsp; Files\Microsoft &nbsp; Visual &nbsp; Studio &nbsp; .NET\Crystal &nbsp; Reports\Viewers\images\ToolBar\logo.gif &nbsp; <br>&nbsp; (2)如果是用水晶报表 &nbsp; 9.2 &nbsp; <br>&nbsp; C:\Program &nbsp; Files\Common &nbsp; Files\Crystal &nbsp; Decisions\2.0\crystalreportviewers\images\toolbar\crlogo.gif &nbsp; <br>&nbsp; —————————————————————————————————————— &nbsp; <br>&nbsp; 5、替换水晶报表里的各种图标和图片 &nbsp; <br>&nbsp; (1)如果是用 &nbsp; VS.NET &nbsp; 里自带的水晶报表 &nbsp; <br>&nbsp; C:\Program &nbsp; Files\Microsoft &nbsp; Visual &nbsp; Studio &nbsp; .NET\Crystal &nbsp; Reports\Viewers\images &nbsp; <br>&nbsp; (2)如果是用水晶报表 &nbsp; 9.2 &nbsp; <br>&nbsp; C:\Program &nbsp; Files\Common &nbsp; Files\Crystal &nbsp; Decisions\2.0\crystalreportviewers\images 
<img src="http://www.cnblogs.com/cmzzlh/aggbug/775496.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/06/07/775496.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/06/07/775496.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/59360/" target="_blank">传谷歌中国部分员工已迁往美国总部</a><span style="color:gray">(2010-03-22 13:32)</span><br/>· <a href="http://news.cnblogs.com/n/59359/" target="_blank">传湖南卫视与中视网元联合运营《梦幻情天》</a><span style="color:gray">(2010-03-22 13:26)</span><br/>· <a href="http://news.cnblogs.com/n/59358/" target="_blank">浅评毁掉国产网游的七种游戏设定</a><span style="color:gray">(2010-03-22 13:21)</span><br/>· <a href="http://news.cnblogs.com/n/59357/" target="_blank">中国移动用户总数达5.33亿 TD用户428万</a><span style="color:gray">(2010-03-22 13:15)</span><br/>· <a href="http://news.cnblogs.com/n/59356/" target="_blank">视频网站版权价格1年爆涨10倍 单集过10万元</a><span style="color:gray">(2010-03-22 13:12)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/59293/" target="_blank">五个广泛流传的对大龄程序员的误解</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>.NET开发中的一些小技巧 </title><link>http://www.cnblogs.com/cmzzlh/archive/2007/03/06/665055.html</link><dc:creator>公木子</dc:creator><author>公木子</author><pubDate>Tue, 06 Mar 2007 02:16:00 GMT</pubDate><guid>http://www.cnblogs.com/cmzzlh/archive/2007/03/06/665055.html</guid><description><![CDATA[<p>阅读: 144 评论: 0 作者: <a href="http://www.cnblogs.com/cmzzlh/" target="_blank">公木子</a> 发表于 2007-03-06 10:16 <a href="http://www.cnblogs.com/cmzzlh/archive/2007/03/06/665055.html" target="_blank">原文链接</a></p><p>这篇文章来自是Mukund Pujari的《Some Cool Tips for .NET》，本人给大家翻译总结一下，我英语水平也就那么回事，不合适的地方还是请大家提出来。 </p>
<p>1. 如何创建一个可改变大小没有标题栏的窗体？（How to create a form with resizing borders and no title bar?） </p>
<p>form1.Text = string. Empty; <br>form1.ControlBox = false; </p>
<p><br>2. 如何在.NET的Windows窗体上启用XP主题集？（How to use XP Themes with Windows Forms using the .NET?） </p>
<p>确认你的控件中FlatStyle属性已经修改为System，再修改Main方法。 </p>
<p>static void Main() <br>{ <br>Application.EnableVisualStyles(); <br>Application.DoEvents(); <br>Application. Run(new Form1()); <br>} </p>
<p><br>3. 如何为一个窗体设置一个默认按钮？（How to set the default button for a form?） </p>
<p>form1.AcceptButton = button1; </p>
<p>4. 如何为一个窗体设置一个取消按钮？（How to set the Cancel button for a form?） </p>
<p>form1.CancelButton = button1; </p>
<p>5. 如何阻止一个窗体标题显示在任务栏上？（How to prevent a form from being shown in the taskbar?） </p>
<p>设置窗体的ShowIntaskbar属性为False </p>
<p>6. 如何用现有可用字体绑定到ComboBox控件？（How to fill a ComboBox with the available fonts?） </p>
<p>comboBox1.Items.AddRange (FontFamily.Families); </p>
<p>7. 如何禁止TextBox控件默认的邮件菜单？（How to disable the default ContextMenu of a TextBox?） </p>
<p>textBox1.ContextMenu = new ContextMenu (); </p>
<p>8. 如何获取&#8220;我的文档&#8221;等一些系统文件夹路径？（How to get the path for "My Documents" and other system folders?） </p>
<p>Environment.SpecialFolder中包含了一些系统文件夹信息 <br>MessageBox.Show(Environment.GetFolderPath( Environment.SpecialFolder.Personal )); </p>
<p>9. 如何获取应用程序当前执行的路径？（How to get the path to my running EXE?） </p>
<p>string appPath = Application.ExecutablePath; </p>
<p>10. 如何确定当前运行的系统？（How to determine which operating system is running?） </p>
<p>OperatingSystem os = Environment.OSVersion; <br>MessageBox.Show(os.Version.ToString()); <br>MessageBox.Show(os.Platform.ToString()); </p>
<p>11. 如何从完整的路径中获取文件名？（How to get a file's name from the complete path string?） </p>
<p>用System.IO.Path.GetFileName 和 System.IO.Path.GetFileNameWithoutExtension（无扩展名）的方法 </p>
<p>12. 如何从完整的路径中获取文件扩展名？（How to get a file's extension from the complete path string?） </p>
<p>用System.IO.Path.GetExtension方法 </p>
<p>13. 如何使没有选择日期的DateTimePicker控件为空文本？（How to make the DateTimePicker show empty text if no date is selected?） </p>
<p>dateTimePicker1.CustomFormat = " "; <br>dateTimePicker1.Format = DateTimePickerFormat.Custom; </p>
<p>14. 如何在Report Viewer中隐藏Crystal Report的状态栏？（How to hide the status bar of Crystal Report in Report Viewer?） </p>
<p>foreach(object obj in this.crystalReportViewer1.Controls) <br>{ <br>if( obj.GetType()== typeof(System.Windows.Forms.StatusBar)) <br>{ <br>StatusBar sBar=(StatusBar)obj; <br>sBar.Visible=false; <br>} <br>} </p>
<p><br>15. 如何利用Crystal Report程序来生成PDF版本？（How to generate PDF version of Crystal Report programmatically?） </p>
<p>ReportDocument O_Report=new ReportDocument(); <br>ExportOptions exportOpts = new ExportOptions(); <br>PdfRtfWordFormatOptions pdfFormatOpts = new PdfRtfWordFormatOptions (); <br>DiskFileDestinationOptions diskOpts = new DiskFileDestinationOptions(); <br>exportOpts = O_Report.ExportOptions; <br>// 设置PDF格式 <br>exportOpts.ExportFormatType = ExportFormatType.PortableDocFormat; <br>exportOpts.FormatOptions = pdfFormatOpts; <br>// 设置文件选项和导出 <br>exportOpts.ExportDestinationType = ExportDestinationType.DiskFile; <br>diskOpts.DiskFileName = "C://Trial.pdf"; //设置PDF导出路径 <br>exportOpts.DestinationOptions = diskOpts; <br>O_Report.Export (); </p>
<p><br>16.通过代码如何输入多行文本？（How to enter multiline text in textbox through code? ） </p>
<p>利用TextBox控件的LINES属性 <br>string [] strAddress = {"Mukund Pujari","Global Transformation Technologies","Pune, India"}; <br>textBox1.MultiLine=true; <br>textBox1.Lines=strAddress; </p>
<p>或者 <br>textBox1.Text="Line 1\r\nLine2\r\nLine3."; </p>
<p>或者 <br>用"System.Environment.NewLine"来替代换行符号 </p>
<p>17. 如何在DataGrid中去掉CheckBox不确定状态？（How to remove the indeterminate status of checkbox in datagrid?） </p>
<p>DataGridTableStyle ts1 = new DataGridTableStyle(); //创建Table样式 <br>ts1.MappingName = "Items"; //分配要应用样式的Data Table <br>DataGridColumnStyle boolCol = new DataGridBoolColumn(); // 创建CheckBox列 <br>boolCol.MappingName = "ch"; //分配数据列名称 <br>boolCol.AllowNull=false; // 修改AllowNull属性 </p>
<p>18. 如何在用一个数据源DataTable绑定两个控件，确保变化不反映在两个控件中？（ How to bind two controls to the same DataTable without having changes in one control also change the other control?） </p>
<p>我们在一个Form中放置一个ListBox和一个ComboBox控件，当数据源是一个DataTable而且绑定的ValueMember一致的时候我们选择ListBox中的一个Item时，ComboBox控件中的相同的Item也会被自动选中，我们可以采取建立新的上下文绑定对象来拒绝这样的同步操作 <br>comboBox1.DataSource = dataset.Tables[ "Items" ]; <br>comboBox1.ValueMember = "CustomerID"; <br>comboBox1.DisplayMember = "CustomerID"; </p>
<p>listBox1.BindingContext = new BindingContext(); // 设置新的上下文绑定对象 <br>listBox1.DataSource = dataset.Tables[ "Items" ]; <br>listBox1.ValueMember = "CustomerID"; <br>listBox1.DisplayMember = "CustomerID"; </p>
<p>19. 一个简单的创建链接字符串的方法。（An easy way to build connection string.） </p>
<p>记事本创建一个New.udl的文件，一个Microsoft 数据链接文件 <br>双击打开，熟悉吧 <br>按照向导创建完成一个数据库链接，测试成功 <br>确定后，链接字符串写入这个文件，用记事本打开就看到了 </p>
<p>20. 如何打开客户端E－Mail程序，Windows应用和Web应用？（ How to open default E-mail client on your system with all parameters entered in it,like Outlook Express or Eudora, from your .NET windows or Web Application? ） </p>
<p>Web Application： <br>A href="<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#109;&#97;&#105;&#108;&#64;&#97;&#100;&#100;&#114;&#101;&#115;&#115;&#49;&#46;&#99;&#111;&#109;&#44;&#101;&#109;&#97;&#105;&#108;&#64;&#97;&#100;&#100;&#114;&#101;&#115;&#115;&#50;&#46;&#99;&#111;&#109;&#63;&#99;&#99;&#61;&#101;&#109;&#97;&#105;&#108;&#64;&#97;&#100;&#100;&#114;&#101;&#115;&#115;&#51;&#46;&#99;&#111;&#109;&#38;&#97;&#109;&#112;&#59;&#83;&#117;&#98;&#106;&#101;&#99;&#116;&#61;&#72;&#101;&#108;&#108;&#111;&#38;&#97;&#109;&#112;&#59;&#98;&#111;&#100;&#121;&#61;&#72;&#97;&#112;&#112;&#121;">mailto:email@address1.com,email@address2.com?cc=email@address3.com&amp;Subject=Hello&amp;body=Happy</a> New Year" </p>
<p>Windows Application： <br>引用System.Diagnostics.Process 命名空间 <br>Process process = new Process(); <br>process.StartInfo.FileName = "<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#101;&#109;&#97;&#105;&#108;&#64;&#97;&#100;&#100;&#114;&#101;&#115;&#115;&#49;&#46;&#99;&#111;&#109;&#44;&#101;&#109;&#97;&#105;&#108;&#64;&#97;&#100;&#100;&#114;&#101;&#115;&#115;&#50;&#46;&#99;&#111;&#109;&#63;&#115;&#117;&#98;&#106;&#101;&#99;&#116;&#61;&#72;&#101;&#108;&#108;&#111;&#38;&#97;&#109;&#112;&#59;&#99;&#99;&#61;&#101;&#109;&#97;&#105;&#108;&#64;&#97;&#100;&#100;&#114;&#101;&#115;&#115;&#51;&#46;&#99;&#111;&#109;">mailto:email@address1.com,email@address2.com?subject=Hello&amp;cc=email@address3.com</a> <br><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#38;&#97;&#109;&#112;&#59;&#98;&#99;&#99;&#61;&#101;&#109;&#97;&#105;&#108;&#64;&#97;&#100;&#100;&#114;&#101;&#115;&#115;&#52;&#46;&#99;&#111;&#109;&#38;&#97;&#109;&#112;&#59;&#98;&#111;&#100;&#121;&#61;&#72;&#97;&#112;&#112;&#121;">&amp;bcc=email@address4.com&amp;body=Happy</a> New Year" ; <br>process.Start(); </p>
<p>21. VB.NET和C#有什么不同？（ What is difference beween VB.NET and C#.NET? ） </p>
<p>去微软下载一个文档吧，<a href="http://download.microsoft.com/download/6/3/5/6354bf47-c597-4029-89e9-2495e7539ab9/vbcsharpwp.exe">http://download.microsoft.com/download/6/3/5/6354bf47-c597-4029-89e9-2495e7539ab9/vbcsharpwp.exe</a> </p>
<p>22. How to find whether your system has mouse or the number of buttons, whether it has wheel, or whether the mouse buttons are swapped or size of your monitor and many such information? </p>
<p>23. 如何使Windows Form上的Panel或者Label控件半透明？（How to make a Panel or Label semi-transparent on a Windows Form? ） </p>
<p>通过设置控件背景色的alpha值 <br>panel1.BackColor = Color.FromArgb(65, 204, 212, 230); <br>注意：在设计时手动输入这些值，不要用颜色选取 </p>
<p>24. C#程序的主函数写[STA Thread] 属性是什么目的？（What is the purpose of the [STA Thread] attribute for the Main method of a C# program? ） </p>
<p><a href="http://community.csdn.net/Expert/topic/4132/4132313.xml?temp=.2285272">http://community.csdn.net/Expert/topic/4132/4132313.xml?temp=.2285272</a> </p>
<p><br>25. 如何触发Button的Click事件？（How to trigger a button click event? ） </p>
<p>button1.PerformClick(); </p>
<p><br><a href="http://bbs.csai.cn/bbs/view.asp?Id={7BD6E2EF-98E8-4367-8AE6-0A31904F50C2">http://bbs.csai.cn/bbs/view.asp?Id={7BD6E2EF-98E8-4367-8AE6-0A31904F50C2</a><br></p>
<img src="http://www.cnblogs.com/cmzzlh/aggbug/665055.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/03/06/665055.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/03/06/665055.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/59360/" target="_blank">传谷歌中国部分员工已迁往美国总部</a><span style="color:gray">(2010-03-22 13:32)</span><br/>· <a href="http://news.cnblogs.com/n/59359/" target="_blank">传湖南卫视与中视网元联合运营《梦幻情天》</a><span style="color:gray">(2010-03-22 13:26)</span><br/>· <a href="http://news.cnblogs.com/n/59358/" target="_blank">浅评毁掉国产网游的七种游戏设定</a><span style="color:gray">(2010-03-22 13:21)</span><br/>· <a href="http://news.cnblogs.com/n/59357/" target="_blank">中国移动用户总数达5.33亿 TD用户428万</a><span style="color:gray">(2010-03-22 13:15)</span><br/>· <a href="http://news.cnblogs.com/n/59356/" target="_blank">视频网站版权价格1年爆涨10倍 单集过10万元</a><span style="color:gray">(2010-03-22 13:12)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/59293/" target="_blank">五个广泛流传的对大龄程序员的误解</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>SQL查询语句精华使用简要 </title><link>http://www.cnblogs.com/cmzzlh/archive/2007/03/06/665048.html</link><dc:creator>公木子</dc:creator><author>公木子</author><pubDate>Tue, 06 Mar 2007 02:12:00 GMT</pubDate><guid>http://www.cnblogs.com/cmzzlh/archive/2007/03/06/665048.html</guid><description><![CDATA[<p>阅读: 174 评论: 0 作者: <a href="http://www.cnblogs.com/cmzzlh/" target="_blank">公木子</a> 发表于 2007-03-06 10:12 <a href="http://www.cnblogs.com/cmzzlh/archive/2007/03/06/665048.html" target="_blank">原文链接</a></p><p>一、 简单查询 <br>　　简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。<br>　　例如，下面的语句查询testtable表中姓名为"张三"的nickname字段和email字段。</p>
<p>&nbsp;　　SELECT nickname,email<br>　　FROM testtable<br>　　WHERE name='张三' </p>
<p>　　(一) 选择列表</p>
<p>　　选择列表(select_list)指出所查询列，它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。</p>
<p>　　1、选择所有列</p>
<p>　　例如，下面语句显示testtable表中所有列的数据：</p>
<p>&nbsp;　　SELECT *<br>　　FROM testtable </p>
<p>　　2、选择部分列并指定它们的显示次序</p>
<p>　　查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。<br>　　例如：</p>
<p>&nbsp;　　SELECT nickname,email<br>　　FROM testtable </p>
<p>　　3、更改列标题</p>
<p>　　在选择列表中，可重新指定列标题。定义格式为：<br>　　列标题=列名<br>　　列名 列标题<br>　　如果指定的列标题不是标准的标识符格式时，应使用引号定界符，例如，下列语句使用汉字显示列标题：</p>
<p>&nbsp;　　SELECT 昵称=nickname,电子邮件=email<br>　　FROM testtable </p>
<p>　　4、删除重复行</p>
<p>　　SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行，默认为ALL。使用DISTINCT选项时，对于所有重复的数据行在SELECT返回的结果集合中只保留一行。</p>
<p>　　5、限制返回的行数</p>
<p>　　使用TOP n [PERCENT]选项限制返回的数据行数，TOP n说明返回n行，而TOP n PERCENT时，说明n是表示一百分数，指定返回的行数等于总行数的百分之几。<br>　　例如：</p>
<p>&nbsp;　 SELECT TOP 2 *<br>　　FROM testtable<br>　　SELECT TOP 20 PERCENT *<br>　　FROM testtable</p>
<p>　　(二)FROM子句 </p>
<p>　　FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图，它们之间用逗号分隔。<br>　　在FROM子句同时指定多个表或视图时，如果选择列表中存在同名列，这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列，在查询两个表中的cityid时应使用下面语句格式加以限定：</p>
<p>&nbsp;　&nbsp; SELECT username,citytable.cityid<br>　　FROM usertable,citytable<br>　　WHERE usertable.cityid=citytable.cityid </p>
<p>　　在FROM子句中可用以下两种格式为表或视图指定别名：<br>　　表名 as 别名<br>　　表名 别名</p>
<p>　　(二) FROM子句</p>
<p>　　FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图，它们之间用逗号分隔。<br>　　在FROM子句同时指定多个表或视图时，如果选择列表中存在同名列，这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列，在查询两个表中的cityid时应使用下面语句格式加以限定：</p>
<p>&nbsp;　 SELECT username,citytable.cityid<br>　　FROM usertable,citytable<br>　　WHERE usertable.cityid=citytable.cityid </p>
<p>　　在FROM子句中可用以下两种格式为表或视图指定别名：<br>　　表名 as 别名<br>　　表名 别名<br>　　例如上面语句可用表的别名格式表示为：</p>
<p>&nbsp;　 SELECT username,b.cityid<br>　　FROM usertable a,citytable b<br>　　WHERE a.cityid=b.cityid </p>
<p>　　SELECT不仅能从表或视图中检索数据，它还能够从其它查询语句所返回的结果集合中查询数据。</p>
<p>　　例如：</p>
<p>&nbsp;　&nbsp; SELECT a.au_fname+a.au_lname<br>　　FROM authors a,titleauthor ta<br>　　(SELECT title_id,title<br>　　FROM titles<br>　　WHERE ytd_sales&gt;10000<br>　　) AS t<br>　　WHERE a.au_id=ta.au_id<br>　　AND ta.title_id=t.title_id </p>
<p>　　此例中，将SELECT返回的结果集合给予一别名t，然后再从中检索数据。<br>(三) 使用WHERE子句设置查询条件</p>
<p>　　WHERE子句设置查询条件，过滤掉不需要的数据行。例如下面语句查询年龄大于20的数据：</p>
<p>&nbsp;　 SELECT *<br>　　FROM usertable<br>　　WHERE age&gt;20 </p>
<p>　　WHERE子句可包括各种条件运算符：<br>　　比较运算符(大小比较)：&gt;、&gt;=、=、&lt;、&lt;=、&lt;&gt;、!&gt;、!&lt;<br>　　范围运算符(表达式值是否在指定的范围)：BETWEEN...AND...<br>　　NOT BETWEEN...AND...<br>　　列表运算符(判断表达式是否为列表中的指定项)：IN (项1,项2......)<br>　　NOT IN (项1,项2......)<br>　　模式匹配符(判断值是否与指定的字符通配格式相符):LIKE、NOT LIKE<br>　　空值判断符(判断表达式是否为空)：IS NULL、NOT IS NULL<br>　　逻辑运算符(用于多条件的逻辑连接)：NOT、AND、OR</p>
<p>　　1、范围运算符例：age BETWEEN 10 AND 30相当于age&gt;=10 AND age&lt;=30<br>　　2、列表运算符例：country IN ('Germany','China')<br>　　3、模式匹配符例：常用于模糊查找，它判断列值是否与指定的字符串格式相匹配。可用于char、varchar、text、ntext、datetime和smalldatetime等类型查询。<br>　　可使用以下通配字符：<br>　　百分号%：可匹配任意类型和长度的字符，如果是中文，请使用两个百分号即%%。<br>　　下划线_：匹配单个任意字符，它常用来限制表达式的字符长度。<br>　　方括号[]：指定一个字符、字符串或范围，要求所匹配对象为它们中的任一个。[^]：其取值也[] 相同，但它要求所匹配对象为指定字符以外的任一个字符。<br>　　例如：<br>　　限制以Publishing结尾，使用LIKE '%Publishing'<br>　　限制以A开头：LIKE '[A]%'<br>　　限制以A开头外：LIKE '[^A]%'</p>
<p>　　4、空值判断符例WHERE age IS NULL</p>
<p>　　5、逻辑运算符：优先级为NOT、AND、OR</p>
<p>　　(四)查询结果排序 </p>
<p>　　使用ORDER BY子句对查询返回的结果按一列或多列排序。ORDER BY子句的语法格式为：<br>　　ORDER BY {column_name [ASC|DESC]} [,...n]<br>　　其中ASC表示升序，为默认值，DESC为降序。ORDER BY不能按ntext、text和image数据类型进行排<br>　　序。<br>　　例如：</p>
<p>&nbsp;　&nbsp; SELECT *<br>　　FROM usertable<br>　　ORDER BY age desc,userid ASC </p>
<p>　　另外，可以根据表达式进行排序。</p>
<p>　　二、 联合查询</p>
<p>　　UNION运算符可以将两个或两个以上上SELECT语句的查询结果集合合并成一个结果集合显示，即执行联合查询。UNION的语法格式为：</p>
<p>&nbsp;　&nbsp; select_statement<br>　　UNION [ALL] selectstatement<br>　　[UNION [ALL] selectstatement][...n] </p>
<p>　　其中selectstatement为待联合的SELECT查询语句。</p>
<p>　　ALL选项表示将所有行合并到结果集合中。不指定该项时，被联合查询结果集合中的重复行将只保留一行。</p>
<p>　　联合查询时，查询结果的列标题为第一个查询语句的列标题。因此，要定义列标题必须在第一个查询语句中定义。要对联合查询结果排序时，也必须使用第一查询语句中的列名、列标题或者列序号。 </p>
<p>　　在使用UNION 运算符时，应保证每个联合查询语句的选择列表中有相同数量的表达式，并且每个查询选择表达式应具有相同的数据类型，或是可以自动将它们转换为相同的数据类型。在自动转换时，对于数值类型，系统将低精度的数据类型转换为高精度的数据类型。</p>
<p>　　在包括多个查询的UNION语句中，其执行顺序是自左至右，使用括号可以改变这一执行顺序。例如：</p>
<p>　　查询1 UNION (查询2 UNION 查询3)</p>
<p>　　三、连接查询</p>
<p>　　通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点，也是它区别于其它类型数据库管理系统的一个标志。</p>
<p>　　在关系数据库管理系统中，表建立时各数据之间的关系不必确定，常把一个实体的所有信息存放在一个表中。当检索数据时，通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性，他们可以在任何时候增加新的数据类型。为不同实体创建新的表，尔后通过连接进行查询。</p>
<p>　　连接可以在SELECT 语句的FROM子句或WHERE子句中建立，似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以，在Transact-SQL中推荐使用这种方法。</p>
<p>　　SQL-92标准所定义的FROM子句的连接语法格式为：</p>
<p>&nbsp;　　FROM join_table join_type join_table<br>　　[ON (join_condition)] </p>
<p>　　其中join_table指出参与连接操作的表名，连接可以对同一个表操作，也可以对多表操作，对同一个表操作的连接又称做自连接。</p>
<p>　　join_type 指出连接类型，可分为三种：内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作，并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同，内连接又分为等值连接、自然连接和不等连接三种。外连接分为左外连接(LEFT OUTER JOIN或LEFT JOIN)、右外连接(RIGHT OUTER JOIN或RIGHT JOIN)和全外连接(FULL OUTER JOIN或FULL JOIN)三种。与内连接不同的是，外连接不只列出与连接条件相匹配的行，而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。</p>
<p>　　交叉连接(CROSS JOIN)没有WHERE 子句，它返回连接表中所有数据行的笛卡尔积，其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。</p>
<p>　　连接操作中的ON (join_condition) 子句指出连接条件，它由被连接表中的列和比较运算符、逻辑运算符等构成。</p>
<p>　　无论哪种连接都不能对text、ntext和image数据类型列进行直接连接，但可以对这三种列进行间接连接。例如：</p>
<p>&nbsp;　　SELECT p1.pub_id,p2.pub_id,p1.pr_info<br>　　FROM pub_info AS p1 INNER JOIN pub_info AS p2<br>　　ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info) </p>
<p>　　(一)内连接<br>　　内连接查询操作列出与连接条件匹配的数据行，它使用比较运算符比较被连接列的列值。内连接分三种：<br>　　1、等值连接：在连接条件中使用等于号(=)运算符比较被连接列的列值，其查询结果中列出被连接表中的所有列，包括其中的重复列。<br>　　2、不等连接： 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括&gt;、&gt;=、&lt;=、&lt;、!&gt;、!&lt;和&lt;&gt;。<br>　　3、自然连接：在连接条件中使用等于(=)运算符比较被连接列的列值，但它使用选择列表指出查询结果集合中所包括的列，并删除连接表中的重复列。<br>　　例，下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社：</p>
<p>&nbsp;　 SELECT *<br>　　FROM authors AS a INNER JOIN publishers AS p<br>　　ON a.city=p.city<br>　　又如使用自然连接，在选择列表中删除authors 和publishers 表中重复列(city和state)：<br>　　SELECT a.*,p.pub_id,p.pub_name,p.country<br>　　FROM authors AS a INNER JOIN publishers AS p<br>　　ON a.city=p.city </p>
<p>　　(二)外连接<br>　　内连接时，返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行。而采用外连接时，它返回到查询结果集合中的不仅包含符合连接条件的行，而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。如下面使用左外连接将论坛内容和作者信息连接起来：</p>
<p>&nbsp;　 SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b<br>　　ON a.username=b.username </p>
<p>　　下面使用全外连接将city表中的所有作者以及user表中的所有作者，以及他们所在的城市：</p>
<p>&nbsp;　&nbsp; SELECT a.*,b.*<br>　　FROM city as a FULL OUTER JOIN user as b<br>　　ON a.username=b.username </p>
<p>　　(三)交叉连接<br>　　交叉连接不带WHERE 子句，它返回被连接的两个表所有数据行的笛卡尔积，返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例，titles表中有6类图书，而publishers表中有8家出版社，则下列交叉连接检索到的记录数将等于6*8=48行。<br>&nbsp;&nbsp; SELECT type,pub_name<br>　　FROM titles CROSS JOIN publishers<br>　　ORDER BY type</p>
<p>&nbsp; 转<a href="http://blog.chinaunix.net/u/22313/showart.php?id=214419">http://blog.chinaunix.net/u/22313/showart.php?id=214419</a><br><br></p>
<img src="http://www.cnblogs.com/cmzzlh/aggbug/665048.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/03/06/665048.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cmzzlh/archive/2007/03/06/665048.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/59360/" target="_blank">传谷歌中国部分员工已迁往美国总部</a><span style="color:gray">(2010-03-22 13:32)</span><br/>· <a href="http://news.cnblogs.com/n/59359/" target="_blank">传湖南卫视与中视网元联合运营《梦幻情天》</a><span style="color:gray">(2010-03-22 13:26)</span><br/>· <a href="http://news.cnblogs.com/n/59358/" target="_blank">浅评毁掉国产网游的七种游戏设定</a><span style="color:gray">(2010-03-22 13:21)</span><br/>· <a href="http://news.cnblogs.com/n/59357/" target="_blank">中国移动用户总数达5.33亿 TD用户428万</a><span style="color:gray">(2010-03-22 13:15)</span><br/>· <a href="http://news.cnblogs.com/n/59356/" target="_blank">视频网站版权价格1年爆涨10倍 单集过10万元</a><span style="color:gray">(2010-03-22 13:12)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/59293/" target="_blank">五个广泛流传的对大龄程序员的误解</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>ajax学习笔记</title><link>http://www.cnblogs.com/cmzzlh/archive/2006/11/09/555365.html</link><dc:creator>公木子</dc:creator><author>公木子</author><pubDate>Thu, 09 Nov 2006 06:50:00 GMT</pubDate><guid>http://www.cnblogs.com/cmzzlh/archive/2006/11/09/555365.html</guid><description><![CDATA[<p>阅读: 715 评论: 1 作者: <a href="http://www.cnblogs.com/cmzzlh/" target="_blank">公木子</a> 发表于 2006-11-09 14:50 <a href="http://www.cnblogs.com/cmzzlh/archive/2006/11/09/555365.html" target="_blank">原文链接</a></p>最近听了博客园的ajax课程做点笔记。<br>主要的函数：<br>XMLHttpRequest对象（Cont.）<br>􀂄方法：<br>􀂅void open(Stringmethod, String url, Boolean async)<br>􀂅void send(Stringbody)<br>􀂅void setHeader(Stringheader, String value)<br>􀂅String getResponseHeader(Stringheader)<br>􀂅String getAllResponseHeaders()<br>􀂅void abort()<br>XMLHttpRequest对象（Cont.）<br>􀂄属性：<br>􀂅Number readyState<br>􀂅Function onreadystatechange<br>􀂅String responseText<br>􀂅XmlDocumentresponseXML<br>􀂅Number status<br>􀂅String statusText<br>跨浏览器使用AJAX<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script&nbsp;language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;xmlHttpRequest&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;getXMLHttpRequest()<br><img id=Codehighlighter1_96_383_Open_Image onclick="this.style.display='none'; Codehighlighter1_96_383_Open_Text.style.display='none'; Codehighlighter1_96_383_Closed_Image.style.display='inline'; Codehighlighter1_96_383_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_96_383_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_96_383_Closed_Text.style.display='none'; Codehighlighter1_96_383_Open_Image.style.display='inline'; Codehighlighter1_96_383_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_96_383_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_96_383_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(window.XMLHttpRequest)<br><img id=Codehighlighter1_130_168_Open_Image onclick="this.style.display='none'; Codehighlighter1_130_168_Open_Text.style.display='none'; Codehighlighter1_130_168_Closed_Image.style.display='inline'; Codehighlighter1_130_168_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_130_168_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_130_168_Closed_Text.style.display='none'; Codehighlighter1_130_168_Open_Image.style.display='inline'; Codehighlighter1_130_168_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_130_168_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_130_168_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;XMLHttpRequest();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(window.ActiveXObject)<br><img id=Codehighlighter1_207_378_Open_Image onclick="this.style.display='none'; Codehighlighter1_207_378_Open_Text.style.display='none'; Codehighlighter1_207_378_Closed_Image.style.display='inline'; Codehighlighter1_207_378_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_207_378_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_207_378_Closed_Text.style.display='none'; Codehighlighter1_207_378_Open_Image.style.display='inline'; Codehighlighter1_207_378_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_207_378_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_207_378_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ActiveXObject(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Microsoft.XMLHTTP</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">request)<br><img id=Codehighlighter1_290_348_Open_Image onclick="this.style.display='none'; Codehighlighter1_290_348_Open_Text.style.display='none'; Codehighlighter1_290_348_Closed_Image.style.display='inline'; Codehighlighter1_290_348_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_290_348_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_290_348_Closed_Text.style.display='none'; Codehighlighter1_290_348_Open_Image.style.display='inline'; Codehighlighter1_290_348_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_290_348_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_290_348_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ActiveXObject(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Msxml2.XMLHTTP</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;request;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;selectionChanged()<br><img id=Codehighlighter1_420_682_Open_Image onclick="this.style.display='none'; Codehighlighter1_420_682_Open_Text.style.display='none'; Codehighlighter1_420_682_Closed_Image.style.display='inline'; Codehighlighter1_420_682_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_420_682_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_420_682_Closed_Text.style.display='none'; Codehighlighter1_420_682_Open_Image.style.display='inline'; Codehighlighter1_420_682_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_420_682_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_420_682_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;url&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">TextHandler.ashx?index=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;document.getElementById(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">select</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">).value;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttpRequest&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;getXMLHttpRequest();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttpRequest.onreadystatechange&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;onReadyStateChange;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttpRequest.open(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">GET</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;url,&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttpRequest.send(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;onReadyStateChange()<br><img id=Codehighlighter1_721_945_Open_Image onclick="this.style.display='none'; Codehighlighter1_721_945_Open_Text.style.display='none'; Codehighlighter1_721_945_Closed_Image.style.display='inline'; Codehighlighter1_721_945_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_721_945_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_721_945_Closed_Text.style.display='none'; Codehighlighter1_721_945_Open_Image.style.display='inline'; Codehighlighter1_721_945_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_721_945_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_721_945_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(xmlHttpRequest.readyState&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_765_941_Open_Image onclick="this.style.display='none'; Codehighlighter1_765_941_Open_Text.style.display='none'; Codehighlighter1_765_941_Closed_Image.style.display='inline'; Codehighlighter1_765_941_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_765_941_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_765_941_Closed_Text.style.display='none'; Codehighlighter1_765_941_Open_Image.style.display='inline'; Codehighlighter1_765_941_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_765_941_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_765_941_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(xmlHttpRequest.status&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_809_936_Open_Image onclick="this.style.display='none'; Codehighlighter1_809_936_Open_Text.style.display='none'; Codehighlighter1_809_936_Closed_Image.style.display='inline'; Codehighlighter1_809_936_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_809_936_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_809_936_Closed_Text.style.display='none'; Codehighlighter1_809_936_Open_Image.style.display='inline'; Codehighlighter1_809_936_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_809_936_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_809_936_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.getElementById(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">text</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">).innerHTML&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttpRequest.responseXML.documentElement.firstChild.nodeValue;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div>
<br>错误处理<br>􀂄open时抛出错误<br>􀂅非法URL<br>􀂅跨域名URL<br>􀂄访问status时错误（没有得到正确Header）<br>􀂅服务器完全无法响应<br>􀂅URL指向不存在<br>􀂄status错误（不是2xx）<br>􀂅503 Service Unavailable<br>􀂅404 Not Found<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script&nbsp;language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">var</span><span style="COLOR: #000000">&nbsp;xmlHttpRequest&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;getXMLHttpRequest()<br><img id=Codehighlighter1_96_383_Open_Image onclick="this.style.display='none'; Codehighlighter1_96_383_Open_Text.style.display='none'; Codehighlighter1_96_383_Closed_Image.style.display='inline'; Codehighlighter1_96_383_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_96_383_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_96_383_Closed_Text.style.display='none'; Codehighlighter1_96_383_Open_Image.style.display='inline'; Codehighlighter1_96_383_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_96_383_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_96_383_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(window.XMLHttpRequest)<br><img id=Codehighlighter1_130_168_Open_Image onclick="this.style.display='none'; Codehighlighter1_130_168_Open_Text.style.display='none'; Codehighlighter1_130_168_Closed_Image.style.display='inline'; Codehighlighter1_130_168_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_130_168_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_130_168_Closed_Text.style.display='none'; Codehighlighter1_130_168_Open_Image.style.display='inline'; Codehighlighter1_130_168_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_130_168_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_130_168_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;XMLHttpRequest();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(window.ActiveXObject)<br><img id=Codehighlighter1_207_378_Open_Image onclick="this.style.display='none'; Codehighlighter1_207_378_Open_Text.style.display='none'; Codehighlighter1_207_378_Closed_Image.style.display='inline'; Codehighlighter1_207_378_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_207_378_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_207_378_Closed_Text.style.display='none'; Codehighlighter1_207_378_Open_Image.style.display='inline'; Codehighlighter1_207_378_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_207_378_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_207_378_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ActiveXObject(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Microsoft.XMLHTTP</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">request)<br><img id=Codehighlighter1_290_348_Open_Image onclick="this.style.display='none'; Codehighlighter1_290_348_Open_Text.style.display='none'; Codehighlighter1_290_348_Closed_Image.style.display='inline'; Codehighlighter1_290_348_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_290_348_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_290_348_Closed_Text.style.display='none'; Codehighlighter1_290_348_Open_Image.style.display='inline'; Codehighlighter1_290_348_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_290_348_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_290_348_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;request&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;ActiveXObject(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Msxml2.XMLHTTP</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;request;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;start()<br><img id=Codehighlighter1_409_685_Open_Image onclick="this.style.display='none'; Codehighlighter1_409_685_Open_Text.style.display='none'; Codehighlighter1_409_685_Closed_Image.style.display='inline'; Codehighlighter1_409_685_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_409_685_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_409_685_Closed_Text.style.display='none'; Codehighlighter1_409_685_Open_Image.style.display='inline'; Codehighlighter1_409_685_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_409_685_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_409_685_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttpRequest&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;getXMLHttpRequest();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_462_601_Open_Image onclick="this.style.display='none'; Codehighlighter1_462_601_Open_Text.style.display='none'; Codehighlighter1_462_601_Closed_Image.style.display='inline'; Codehighlighter1_462_601_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_462_601_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_462_601_Closed_Text.style.display='none'; Codehighlighter1_462_601_Open_Image.style.display='inline'; Codehighlighter1_462_601_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_462_601_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_462_601_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttpRequest.onreadystatechange&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;onReadyStateChange;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttpRequest.open(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">GET</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;url,&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xmlHttpRequest.send(</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(e)<br><img id=Codehighlighter1_618_681_Open_Image onclick="this.style.display='none'; Codehighlighter1_618_681_Open_Text.style.display='none'; Codehighlighter1_618_681_Closed_Image.style.display='inline'; Codehighlighter1_618_681_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_618_681_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_618_681_Closed_Text.style.display='none'; Codehighlighter1_618_681_Open_Image.style.display='inline'; Codehighlighter1_618_681_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_618_681_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_618_681_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;invalid&nbsp;url</span><span style="COLOR: #008000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;cross&nbsp;browser&nbsp;data&nbsp;access,&nbsp;etc.</span><span style="COLOR: #008000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;onReadyStateChange()<br><img id=Codehighlighter1_724_1053_Open_Image onclick="this.style.display='none'; Codehighlighter1_724_1053_Open_Text.style.display='none'; Codehighlighter1_724_1053_Closed_Image.style.display='inline'; Codehighlighter1_724_1053_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_724_1053_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_724_1053_Closed_Text.style.display='none'; Codehighlighter1_724_1053_Open_Image.style.display='inline'; Codehighlighter1_724_1053_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_724_1053_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_724_1053_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_736_949_Open_Image onclick="this.style.display='none'; Codehighlighter1_736_949_Open_Text.style.display='none'; Codehighlighter1_736_949_Closed_Image.style.display='inline'; Codehighlighter1_736_949_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_736_949_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_736_949_Closed_Text.style.display='none'; Codehighlighter1_736_949_Open_Image.style.display='inline'; Codehighlighter1_736_949_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_736_949_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_736_949_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(xmlHttpRequest.readyState&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_782_944_Open_Image onclick="this.style.display='none'; Codehighlighter1_782_944_Open_Text.style.display='none'; Codehighlighter1_782_944_Closed_Image.style.display='inline'; Codehighlighter1_782_944_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_782_944_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_782_944_Closed_Text.style.display='none'; Codehighlighter1_782_944_Open_Image.style.display='inline'; Codehighlighter1_782_944_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_782_944_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_782_944_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(xmlHttpRequest.status&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">200</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_828_852_Open_Image onclick="this.style.display='none'; Codehighlighter1_828_852_Open_Text.style.display='none'; Codehighlighter1_828_852_Closed_Image.style.display='inline'; Codehighlighter1_828_852_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_828_852_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_828_852_Closed_Text.style.display='none'; Codehighlighter1_828_852_Open_Image.style.display='inline'; Codehighlighter1_828_852_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_828_852_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_828_852_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;do&nbsp;sth.</span><span style="COLOR: #008000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_869_938_Open_Image onclick="this.style.display='none'; Codehighlighter1_869_938_Open_Text.style.display='none'; Codehighlighter1_869_938_Closed_Image.style.display='inline'; Codehighlighter1_869_938_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_869_938_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_869_938_Closed_Text.style.display='none'; Codehighlighter1_869_938_Open_Image.style.display='inline'; Codehighlighter1_869_938_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_869_938_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_869_938_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;503&nbsp;Service&nbsp;Unavailable</span><span style="COLOR: #008000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;404&nbsp;Not&nbsp;Found,&nbsp;etc.</span><span style="COLOR: #008000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(e)<br><img id=Codehighlighter1_966_1049_Open_Image onclick="this.style.display='none'; Codehighlighter1_966_1049_Open_Text.style.display='none'; Codehighlighter1_966_1049_Closed_Image.style.display='inline'; Codehighlighter1_966_1049_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_966_1049_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_966_1049_Closed_Text.style.display='none'; Codehighlighter1_966_1049_Open_Image.style.display='inline'; Codehighlighter1_966_1049_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_966_1049_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_966_1049_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;the&nbsp;server&nbsp;host&nbsp;is&nbsp;completely&nbsp;down</span><span style="COLOR: #008000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;the&nbsp;url&nbsp;is&nbsp;not&nbsp;correct,&nbsp;etc.</span><span style="COLOR: #008000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div>
<a href="http://www.cnblogs.com/Files/cmzzlh/ajax-lesson1-demo.zip">/Files/cmzzlh/ajax-lesson1-demo.zip</a>
<img src="http://www.cnblogs.com/cmzzlh/aggbug/555365.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/cmzzlh/archive/2006/11/09/555365.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cmzzlh/archive/2006/11/09/555365.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/59360/" target="_blank">传谷歌中国部分员工已迁往美国总部</a><span style="color:gray">(2010-03-22 13:32)</span><br/>· <a href="http://news.cnblogs.com/n/59359/" target="_blank">传湖南卫视与中视网元联合运营《梦幻情天》</a><span style="color:gray">(2010-03-22 13:26)</span><br/>· <a href="http://news.cnblogs.com/n/59358/" target="_blank">浅评毁掉国产网游的七种游戏设定</a><span style="color:gray">(2010-03-22 13:21)</span><br/>· <a href="http://news.cnblogs.com/n/59357/" target="_blank">中国移动用户总数达5.33亿 TD用户428万</a><span style="color:gray">(2010-03-22 13:15)</span><br/>· <a href="http://news.cnblogs.com/n/59356/" target="_blank">视频网站版权价格1年爆涨10倍 单集过10万元</a><span style="color:gray">(2010-03-22 13:12)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/59293/" target="_blank">五个广泛流传的对大龄程序员的误解</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>模式笔记</title><link>http://www.cnblogs.com/cmzzlh/archive/2006/06/05/417444.html</link><dc:creator>公木子</dc:creator><author>公木子</author><pubDate>Mon, 05 Jun 2006 02:21:00 GMT</pubDate><guid>http://www.cnblogs.com/cmzzlh/archive/2006/06/05/417444.html</guid><description><![CDATA[<p>阅读: 160 评论: 0 作者: <a href="http://www.cnblogs.com/cmzzlh/" target="_blank">公木子</a> 发表于 2006-06-05 10:21 <a href="http://www.cnblogs.com/cmzzlh/archive/2006/06/05/417444.html" target="_blank">原文链接</a></p><p><b><span><font color=#0066ff>单件模式（Singleton Pattern）</font> <br>概述</span></b><b></b> </p>
<p><span>Singleton</span><span>模式要求一个类有且仅有一个实例，并且提供了一个全局的访问点。这就提出了一个问题：如何绕过常规的构造器，提供一种机制来保证一个类只有一个实例？客户程序在调用某一个类时，它是不会考虑这个类是否只能有一个实例等问题的，所以，这应该是类设计者的责任，而不是类使用者的责任。</span> </p>
<p><span>从另一个角度来说，</span><span>Singleton</span><span>模式其实也是一种职责型模式。因为我们创建了一个对象，这个对象扮演了独一无二的角色，在这个单独的对象实例中，它集中了它所属类的所有权力，同时它也肩负了行使这种权力的职责！</span> </p>
<p><b><span>意图</span></b><b></b> </p>
<p><span>保证一个类仅有一个实例，并提供一个访问它的全局访问点。</span> </p>
<p><b><span>模型图</span></b><b></b> </p>
<p><span>逻辑模型图：</span><span> </span></p>
<p class=MsoNormal><b style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 12pt; COLOR: #006699; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">概述</span></b><b style="mso-bidi-font-weight: normal"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #006699"><o:p></o:p></span></b> </p>
<p class=MsoNormal style="LINE-HEIGHT: 200%"><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%">Singleton</span><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式要求一个类有且仅有一个实例，并且提供了一个全局的访问点。这就提出了一个问题：如何绕过常规的构造器，提供一种机制来保证一个类只有一个实例？客户程序在调用某一个类时，它是不会考虑这个类是否只能有一个实例等问题的，所以，这应该是类设计者的责任，而不是类使用者的责任。</span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%"><o:p></o:p></span> </p>
<p class=MsoNormal style="LINE-HEIGHT: 200%"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">从另一个角度来说，</span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%">Singleton</span><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">模式其实也是一种职责型模式。因为我们创建了一个对象，这个对象扮演了独一无二的角色，在这个单独的对象实例中，它集中了它所属类的所有权力，同时它也肩负了行使这种权力的职责！</span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%"><o:p></o:p></span> </p>
<p class=MsoNormal style="LINE-HEIGHT: 200%"><b style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 12pt; COLOR: #006699; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">意图</span></b><b style="mso-bidi-font-weight: normal"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #006699; LINE-HEIGHT: 200%"><o:p></o:p></span></b> </p>
<p class=MsoNormal style="LINE-HEIGHT: 200%"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">保证一个类仅有一个实例，并提供一个访问它的全局访问点。</span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%"><o:p></o:p></span> <br><font color=#0066ff>抽象工厂模式（Abstract Factory）</font> <br></p>
<p class=MsoNormal style="LINE-HEIGHT: 200%"><b style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 12pt; COLOR: #006699; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></span></b></p>
<p class=MsoNormal><b style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 10pt; COLOR: #006699; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">概述</span></b><b style="mso-bidi-font-weight: normal"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #006699"><o:p></o:p></span></b></p>
<p class=MsoNormal style="LINE-HEIGHT: 200%"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在软件系统中，经常面临着&#8220;一系列相互依赖的对象&#8221;的创建工作；同时由于需求的变化，往往存在着更多系列对象的创建工作。如何应对这种变化？如何绕过常规的对象的创建方法（</span><i style="mso-bidi-font-style: normal"><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%">new</span></i><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">），提供一种&#8220;封装机制&#8221;来避免客户程序和这种&#8220;多系列具体对象创建工作&#8221;的紧耦合？这就是我们要说的抽象工厂模式。</span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%"><o:p></o:p></span></p>
<p class=MsoNormal style="LINE-HEIGHT: 200%"><b style="mso-bidi-font-weight: normal"><span style="FONT-SIZE: 10pt; COLOR: #006699; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">意图</span></b><b style="mso-bidi-font-weight: normal"><span lang=EN-US style="FONT-SIZE: 12pt; COLOR: #006699; LINE-HEIGHT: 200%"><o:p></o:p></span></b></p>
<p class=MsoNormal style="LINE-HEIGHT: 200%"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">提供一个创建一系列相关或相互依赖对象的接口，而无需指定它们具体的类。</span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%"><o:p></o:p></span></p>
<p><br>抽象工厂模式要点<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;AbstractFactory&nbsp;GetInstance()<br><img id=Codehighlighter1_40_299_Open_Image onclick="this.style.display='none'; Codehighlighter1_40_299_Open_Text.style.display='none'; Codehighlighter1_40_299_Closed_Image.style.display='inline'; Codehighlighter1_40_299_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_40_299_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_40_299_Closed_Text.style.display='none'; Codehighlighter1_40_299_Open_Image.style.display='inline'; Codehighlighter1_40_299_Open_Text.style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_40_299_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"><img src="http://www.cnblogs.com/Images/dot.gif"></span><span id=Codehighlighter1_40_299_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;factoryName&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Constant.STR_FACTORYNAME.ToString();<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AbstractFactory&nbsp;instance;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(factoryName&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">)<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(AbstractFactory)Assembly.Load(factoryName).CreateInstance(factoryName);<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;instance&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;instance;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<img src="http://www.cnblogs.com/cmzzlh/aggbug/417444.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cmzzlh/archive/2006/06/05/417444.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cmzzlh/archive/2006/06/05/417444.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/59360/" target="_blank">传谷歌中国部分员工已迁往美国总部</a><span style="color:gray">(2010-03-22 13:32)</span><br/>· <a href="http://news.cnblogs.com/n/59359/" target="_blank">传湖南卫视与中视网元联合运营《梦幻情天》</a><span style="color:gray">(2010-03-22 13:26)</span><br/>· <a href="http://news.cnblogs.com/n/59358/" target="_blank">浅评毁掉国产网游的七种游戏设定</a><span style="color:gray">(2010-03-22 13:21)</span><br/>· <a href="http://news.cnblogs.com/n/59357/" target="_blank">中国移动用户总数达5.33亿 TD用户428万</a><span style="color:gray">(2010-03-22 13:15)</span><br/>· <a href="http://news.cnblogs.com/n/59356/" target="_blank">视频网站版权价格1年爆涨10倍 单集过10万元</a><span style="color:gray">(2010-03-22 13:12)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/59293/" target="_blank">五个广泛流传的对大龄程序员的误解</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>UML读书笔记（1）</title><link>http://www.cnblogs.com/cmzzlh/archive/2006/05/30/412718.html</link><dc:creator>公木子</dc:creator><author>公木子</author><pubDate>Tue, 30 May 2006 02:16:00 GMT</pubDate><guid>http://www.cnblogs.com/cmzzlh/archive/2006/05/30/412718.html</guid><description><![CDATA[<p>阅读: 529 评论: 0 作者: <a href="http://www.cnblogs.com/cmzzlh/" target="_blank">公木子</a> 发表于 2006-05-30 10:16 <a href="http://www.cnblogs.com/cmzzlh/archive/2006/05/30/412718.html" target="_blank">原文链接</a></p>UML的定义（Unified Modeling Language）统一建模语言。<br>在系统的开发过程中，最关键的一点是要用一种系统分析员，客户，程序员和其他系统开发所涉及到的人员能够理解和达成一致的方式来组织系统的设计过程，UML就提供了这种组织方式。<br>UML的组成包括类图，对象图，用例图，状态图，顺序图，活动图，协作图，构件图，部署图等。UML2.0还包括组成结构图，交互纵览图，计时图，包图等。<br>类是具有相同属性和操作的一组对象集。继承就是类继承了其他类的属性和操作。对象是一个种类的实例（属性，操作和起来称为特征）。抽象就是过滤掉对象的一部分特性和操作只剩下你需要的属性和操作。不同的类具有相同的操作，但是在每个类都能知道自己的操作如何执行这就叫多态性。封装就是当一个对象执行自己的操作时对外界隐藏操作细节。但是类要提供一个方法让我们能操作这些被封装的操作就是接口。对象之间的协作是通过相互发送消息实现的。对象经常要和其他对象发生关联。关联可以具有多种形式。一个类的对象可能和多个其他对象发生关联。聚集是关联的一种。聚集对象有部分对象组成。组成又是一种特殊的聚集。在一个组成的对象中，部分对象只能作为对象的一部分和组成对象同时存在。属性是类的一个特性，操作是指类能够做的事情。有一种操作能在操作完成以后返回值，就是函数。<br>类的职责是描述了类能做什么——也就是类的属性和操作能完成什么任务。约束是指类所要满足的一个或者是多个的约束。UML的类图标是由一个矩形表示。类名字，属性，操作和职责都在区域中有各字的方框。可以用构造型来组织属性的类型和操作名列表。可以使用类的省略表示法，表示出类的一部分属性和操作。类的表达是领域知识中的词汇。与客户或者是领域中的专家交谈可以发现一些类 模型中的名词和可能成为操作的动词。<br>当类在概念上有连接关系时，类之间的连接叫在关联。关联方向用一个实心的三角箭头来显示。一个类可能和自己发生关联，这样就叫自身关联。当一个类的对象可以充当多种角色的时候，自身关联就可能发生。继承（泛化）一个类（孩子类，子类）可以继承另一个类（父类或超类）的属性和操作。没有父类的类被称为基类或根类。没有子类的类没称为叶类。如果一个类有多个父类，这样的继承叫多继承。不提供实例对象的类被称为抽象类。一个类使用了另一个类。这关系叫依赖。一个类可以继承其他类的属性和操作。继承了属性和操作的类叫做子类。被继承的类叫父类或超类。通过在初步类模型寻找不同类的共同属性和操作可以发现类之间的继承关系。继承的表示法是从子类画一条带空心三角箭头的连线指向父类。在依赖关系中一个类使用了另一个类。依赖最通常的用法是用来说明某个类操作的型构使用类另一个类的定义。依赖关系用从依赖类到被依赖类的带箭头的虚线表示。<br>一个类有时有几个部分类组成。这种特殊的类型关系叫聚集。组成是强类型的聚集。聚集中的每个部分只能属于一个整体。不同的类都通过一个接口接收消息，也就是执行一个操作的请求。接口是描述类的部分行为的一组操作。它也是一个类提供给另一个类的一组操作。<br>这里重点举个类说明接口和类的区别。每次你使用洗衣机的时候，你不必把他拆开来查看里面的电路。以便能够启动他并设置时间参数。你也不用把手伸到水管中去打开进水或者停止进水。相反你只需要一个控制柄就可以是洗衣机执行这些操作。控制柄就是洗衣机的接口。从某种意义上讲，控制柄的操作是抽象的。关闭或切断电源也好，顺时针或逆时针旋转也好，如果不和某种事物联系起来，它们并不能完成任何有价值的事情。在这个例子中这些操作和洗衣机联系起来。这就好象洗衣机通过将控制柄的操作转换为和洗衣服相关的操作。而使这些操作变的有意义。在UML术语中，我们说洗衣机保证了它的部分行为能够&#8220;实现&#8221;控制柄的行为，因此，一个类和它的接口之间的关系叫实现。实现是类和接口之间的一个关联，接口是可供其他类使用的一个操作集。接口用没有属性的类表示。接口中的所以操作都是公有的。作用域是属性和操作的又一个重要特征。在实例作用域下，一个类的每个对象都有自己各自的属性和操作。可以认为用例是系统的一组使用场景。每个场景描述了一个事件的序列。每个序列是由一个人，另一个系统，一台硬件设备或者是某段时间的流逝所引发的。这些发起事件序列的实体叫做参与者。事件序列的结果是由发起这个序列的参与者或者另一个参与者对系统的某种形式所引起的。用例可以被复用。一种方式（&#8220;包含&#8221;）是将一个用例中的步骤作为另一个用例步骤序列的一部分。另一种方式（&#8220;扩展&#8221;）是通过对现有用例增加新的步骤来创建新的用例。
<img src="http://www.cnblogs.com/cmzzlh/aggbug/412718.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/cmzzlh/archive/2006/05/30/412718.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/cmzzlh/archive/2006/05/30/412718.html#commentform" target="_blank">发表评论</a></p><p><a href="http://job.cnblogs.com/" target="_blank">找优秀程序员，就在博客园</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/59360/" target="_blank">传谷歌中国部分员工已迁往美国总部</a><span style="color:gray">(2010-03-22 13:32)</span><br/>· <a href="http://news.cnblogs.com/n/59359/" target="_blank">传湖南卫视与中视网元联合运营《梦幻情天》</a><span style="color:gray">(2010-03-22 13:26)</span><br/>· <a href="http://news.cnblogs.com/n/59358/" target="_blank">浅评毁掉国产网游的七种游戏设定</a><span style="color:gray">(2010-03-22 13:21)</span><br/>· <a href="http://news.cnblogs.com/n/59357/" target="_blank">中国移动用户总数达5.33亿 TD用户428万</a><span style="color:gray">(2010-03-22 13:15)</span><br/>· <a href="http://news.cnblogs.com/n/59356/" target="_blank">视频网站版权价格1年爆涨10倍 单集过10万元</a><span style="color:gray">(2010-03-22 13:12)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/59293/" target="_blank">五个广泛流传的对大龄程序员的误解</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item></channel></rss>