﻿<?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>博客园-爱晚红枫技术部广东分部</title><link>http://www.cnblogs.com/xiang/</link><description>永远自由的心</description><language>zh-cn</language><lastBuildDate>Sun, 12 Oct 2008 03:35:04 GMT</lastBuildDate><pubDate>Sun, 12 Oct 2008 03:35:04 GMT</pubDate><ttl>60</ttl><item><title>Thread &amp; ThreadPool 的一些背景知识</title><link>http://www.cnblogs.com/xiang/archive/2008/09/28/1301538.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Sun, 28 Sep 2008 08:03:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2008/09/28/1301538.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/1301538.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2008/09/28/1301538.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/1301538.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/1301538.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CLR 目前的多线程技术依然是 Windows 操作系统所提供的，不过 .NET CLR 开发小组似乎保留了将其分离的权利。在某些环境，CLR
线程并不会直接映射到一个 Windows 线程上，他们可能会用 Windows fiber 来代替，以期获得更好的执行性能。未来的 CLR
版本甚至会直接用某个已存在的空闲线程来代替 "new Thread()" 执行其他任务。CLR 线程使用了 Windows
线程开发的很多技巧，这样我们可以使用简单的代码来处理原本需要花费很多精力才能完成的工作。这种包装分离带来的另外一个好处就是，我们无需改动我们的代
码就能获得 CLR 和操作系统升级带来的性能提升。<br><br>除了直接使用 CLR 线程，我们还可以使用 Thread.BeginThreadAffinity() 等手段直接使用操作系统级别的线程，只不过要记得调用相关方法去 "End"。<br><br>早
期的 DOS 和 Windows 16-bit
都是单线程操作系统，这种操作系统上的某个进程一旦陷入死循环，整个操作系统都完蛋，你能做的只有重启计算机。Windows NT 3.1
是微软开发的第一个支持多线程功能的操作系统，这从某种程度上可以说是 Windows 成为 "健壮性"
操作系统的标志。在支持多线程的操作系统里，每个进程都拥有自己的线程，也就是说理论上不会陷入上述那样的尴尬状况了。死循环的线程被冻结，而其他线程依
旧能正常运转，用户也就有机会强行结束那个死掉的家伙。<br><br>严格来说，线程是一笔昂贵的开支。创建线程并不简单，首先得分配并初始化一个线程
内核对象(thead kernel object)，并为这个线程保留 1MB user-mode stack 和 12KB 以上的
kernel-mode stack。在完成这些之后，线程才被创建。Windows 会发送消息通知目标进程以及其所有 DLL
线程可用。而销毁线程同样需要需要发送消息通知，最后还得释放所有的保留空间。<br><br>在单 CPU
计算机上，任何时候都只有一个线程在执行。Windows 保持线程对象状态，并决定接下来哪个线程会被执行。每个线程每次大概可以获得 20 毫秒的
CPU 执行时间片，然后切换执行另外一个线程。这个过程有个专业术语叫 "线程上下文切换(context
switch)"。操作系统需要花费相当代价才能走完一次切换：<br><br>(1) 进入内核模式。<br>(2) 将 CPU 寄存器信息保存到当前正在执行的线程内核对象。<br>(3) 获取一个 Spinlock，按计划决定下一个要执行的线程，然后释放 Spinlock。如果下一个线程属于其他的进程，那么我们还得为虚拟地址交换付出更多代价。<br>(4) 从要被执行的线程内核对象载入 CPU 寄存器信息。<br>(5) 离开内核模式。<br><br>所
有这些操作可能导致操作系统和应用程序比单线程操作系统执行得更慢，但这些都是值得的，芯片生产商带来的超线程(hyper-threading)和多核
(mulit-core) CPU 为多线程提供了真正的舞台，每个内核上都可以真正并发执行一个线程。超线程 CPU
包含两个逻辑内核，每个逻辑内核都拥有自己的寄存器，只是它们需要共享 CPU 缓存等资源。当一个逻辑 CPU
因某种原因被暂停，芯片会切换到另外一个逻辑 CPU 继续执行任务，超线程芯片能带来 10% - 30% 左右的性能提升。而像 Pentium
D、Athlon 64 X2 这类真正的多核 CPU 芯片，它们集成了多个真正意义上的物理内核，每个内核都有自己的完整的寄存器和缓存，这才是
100% 的性能提升。现在某些服务器用的芯片会同时使用多核和超线程技术，因此你可能在任务管理器中看到 4 个或 8 个 CPU
显示。芯片发展已经从单纯的主频提升转移到多核集成上来，不久我们就可以使用 4 核、8 核，甚至是更多更强大的多核处理器。<br><br>创建和销
毁线程代价不菲，过多的线程会消耗掉大量的内存和 CPU 资源。为了改善这种状况，CLR 提供了一种称之为 "线程池(thread pool)"
的技术。直观来说，线程池就是为应用程序提供的一堆可用线程集合，线程池在进程所有应用程序域(AppDomain)间共享。<br><br>在
CLR
初始化之初，线程池内是没有任何线程的，其内部有一个专门存储请求的队列。当应用程序试图执行异步等操作时，这些方法调用会被包装并加入到线程池队列中。
线程池从队列提取任务请求，并为其分配可用线程。如果线程池内没有可用线程，那么一个新的线程会被创建。线程完成任务执行后，并不会被摧毁。相反，它被放
回到线程池中，然后等待被分配给其他任务。线程池会尝试用同一个线程来处理应用程序的多个任务请求。而一旦应用程序在极短时间内发出多个请求，那么它会尝
试创建额外的线程来分配队列中的任务，这有可能导致池内线程数量急剧增加，同时耗费大量的系统资源。当请求完成，池内多余的线程会在空闲 2
分钟后被释放并回收相关资源，直到某个最小线程阀值设置。<br><br>当任务请求超出最小阀值设置，线程池并不会立即创建新线程，而是等待大约
500
毫秒左右。这么做的目的是看看在这段时间内是否有其他工作线程完成任务来接手这个请求，这样就可以避免创建新线程的消耗。最小线程阀值设置
(ThreadPool.SetMinThreads)最好不要小于 CPU 内核数量，否则会导致性能问题。<br><br>在线程池内部，它包含两种
类型的线程，分别是 worker thread 和 I/O threads。工作线程用来处理 compute-bound 异步操作(包括初始化
I/O-bound 操作)，而 I/O 线程则用于异步执行诸如文件访问、网络通讯、数据库操作、WebService
调用以及某些硬件设备控制等。CLR 允许开发人员设置线程池的最大线程数量，并确保池内线程数量不会超出这个设置。CLR 2.0
ThreadPool 默认为每个 CPU 处理器提供 25 个工作线程以及 1000 个 I/O
线程，通常情况下这已经足够了，并不需要我们做出特别的处理。<br><img src ="http://www.cnblogs.com/xiang/aggbug/1301538.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42947/" target="_blank">[新闻]开心网即将启用”shejiao.com”?</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[转]WinForm数据绑定--BindingContext</title><link>http://www.cnblogs.com/xiang/archive/2008/09/03/1283062.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Wed, 03 Sep 2008 07:57:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2008/09/03/1283062.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/1283062.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2008/09/03/1283062.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/1283062.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/1283062.html</trackback:ping><description><![CDATA[<br><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Binding对象:代表某对象属性值和某控件属性值之间的简单绑定。其主要负责将控件的属性和对象的属性进行关联。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BindingManagerBase:管理绑定到相同数据源和数据成员的所有 <span style="color: red;">Binding</span> 对象。&nbsp;这个对象在前面的章节中没有涉及，但实际上不管是简单绑定还是复杂绑定中都使用到了这个对象的相应的派生类。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BindingContext对象:&nbsp;&nbsp;负责管理从<span style="color: red;">Control</span>类继承的任意对象的 <span style="color: red;">BindingManagerBase</span>对象集合只要发生数据绑定，那在一个FORM中就一定存在一个BindingContext对象。我们可以通过Form对象BindingContext属性获得一个BindingContext对象。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这三个对象掌管着数据绑定的主要功能。我们先来看看其关系：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. Binding对象负责将控件的属性和对象的属性关联起来。对象的属性值会被自动传递个控件的属性，而控件的属性值更改后也会直接传回对象的属性（双向绑定）。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 在一个WinForm界面中总是会存在多个控件。所以，一般都会有一组Binding对象来管理<span style="color: red;">不同控件</span>中的属性和<span style="color: red;">相同数据源</span>中属性的关联关系。为了能方便的管理这样的一组Binding对象，我们使用继承至BindingManagerBase的子对象进行管理工作。BindingManagerBase有两个子类：PropertyManager和CurrencyManager.</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其中：PropertyManager : 维护对象的属性与数据绑定控件属性之间的 Binding。（见简单绑定的描述）</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CurrencyManager : 管理 Binding 对象的列表。管理列表或集合类型的数据源对象。（见复杂绑定的描述）</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无论是PropertyManager还是CurrencyManager总是和一个数据源对象的对应的。也就是说，<span style="background-color: yellow;">一个特定的数据源对象(无论是单一对象还是集合类对象）都会有一个对应的BindingManagerBase的子对象</span>。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.对同一窗体而言，通常都会面对多个数据源而不是一个。所以，也就会产生多个PropertyManager或
CurrencyManager对象。BindingContext就主要负责管理多个BindingManagerBase的子对象。
BindingContext可以通过窗体的BindingContext属性获得。它是一个字典的集合。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;为了更好的说明这三类对象之间的关系，请查看下图。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="" src="http://images.cnblogs.com/cnblogs_com/travelcai/BindingManagerBase.jpg" border="0" width="700" height="400">&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上面图例表明了一下几件事情：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.当你的窗体中绑定了3个不同的数据源，数据绑定机制就会自动产生三个对应的BindingManagerBase的子对象
与数据源对象对应。其实更为准确的说法是，如果你的窗体绑定了三个不同的对象，那么就会产生三个独立的BindingManagerBase的子对象与其
对应。至于是产生PropertyManager还是CurrencyManager就要取决与你绑定的数据源是单一对象还是列表（集合）对象了。上图说
明了这一个点，<span style="color: red;">如果是绑定的是单一对象就会产生PorpertyManager，而如果是列表（集合）对象就会产生一个CurrencyManager。</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;2.
PropertyManager主要管理一组相关的Binding对象，而CurrencyManager主要管理着相应的对象集合（列表对象）。两个对
象管理的侧重点不同，一个主要管理数据绑定的基础对象Binding，而一个主要管理数据绑定的后端数据源对象集合。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;比如CurrencyManager可以每次从集合对象中猎取一个对象然后将其绑定的到窗体控件中去，它也可以在集合对象中进行导航。或也可以新增新的对象集合中，等等。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.因为对于同一窗体而言，可能绑定到多个数据源也就会产生多个“管理者”，而每一个数据源都会对应一个独立的“管理者”。所以我们可以通过窗体的BindingContext对象获得某个特定数据源对应的“管理者”。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;比如：窗体中的数据源是HumanList(集合),那么当窗体和这个集合发生绑定后，我们就可以通过一下的方式获得一个CurrencyManager对象。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img style="display: none;" id="Code_Closed_Image_000404" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_000404').style.display='none'; document.getElementById('Code_Open_Image_000404').style.display='inline'; document.getElementById('Code_Open_Text_000404').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" width="11" height="16"><img id="Code_Open_Image_000404" style="display: inline;" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_000404').style.display='none'; getElementById('Code_Closed_Image_000404').style.display='inline'; getElementById('Code_Closed_Text_000404').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" width="11" height="16"><span style="display: none;" class="cnblogs_code_Collapse" id="Code_Closed_Text_000404">Code</span><span id="Code_Open_Text_000404" style="display: inline;"><br>
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0, 128, 128);">&nbsp;1</span>&nbsp;<span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">建立数据源对象</span><span style="color: rgb(0, 128, 0);"><br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;2</span>&nbsp;<span style="color: rgb(0, 0, 0);">List</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">Human</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;list&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;List</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">Human</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">();<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;3</span>&nbsp;<span style="color: rgb(0, 0, 0);">list.Add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Human(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">cai</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">peng</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;4</span>&nbsp;<span style="color: rgb(0, 0, 0);">list.Add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Human(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">cai</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">peng</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">));<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;5</span>&nbsp;<span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">发生绑定</span><span style="color: rgb(0, 128, 0);"><br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;6</span>&nbsp;<span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.TextBox1.DataBindings.Add(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Text</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;list,&nbsp;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">LastName</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;7</span>&nbsp;<span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.TextBox1.DataBindings.Add(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Text</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;list,&nbsp;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">FirstName</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;8</span>&nbsp;<span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">获得CurrencyManager</span><span style="color: rgb(0, 128, 0);"><br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;9</span>&nbsp;<span style="color: rgb(0, 0, 0);">CurrencyManager&nbsp;cm&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;(CurrencyManager）</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.BindingContext[list];<br>
</span><span style="color: rgb(0, 128, 128);">10</span>&nbsp;<span style="color: rgb(0, 0, 0);"><br>
</span><span style="color: rgb(0, 128, 128);">11</span>&nbsp;</span></div>
<p>其注意以上的第9行的语句this.BindingContext[list]。其中窗体有一个BindingContext属性，它在发生数据绑
定后会自动维持一个key/value的集合，这个集合是一数据源对象作为KEY的，我们可以通过指定特定的数据源对象找到相应的“管理者”。注意前面我
已经说过对于每个数据源而言都会有一个对应的“管理者”。上面的代码中应为数据源是集合类型所以会产生一个CurrencyManager对象。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在可以做个小结：BindingContext类维持一组可能BindingManagerBase对象，而这些BindingManagerBase对象和数据源对象又是一一对应的。</p>
<p>&nbsp;</p>
<p>
</p><hr>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;复杂的讲解到此，下面我就做一个实际的例子来体会一下上面的描述。
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.首先：我们创建一个自定义的对象：Person类</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System;<br>
</span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Collections.Generic;<br>
</span><span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Text;<br>
<br>
</span><span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);">&nbsp;AppBindingContext<br>
{<br>
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;Person<br>
&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">&nbsp;_lastName;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">&nbsp;LastName<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">get</span><span style="color: rgb(0, 0, 0);">&nbsp;{&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;_lastName;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">set</span><span style="color: rgb(0, 0, 0);">&nbsp;{&nbsp;_lastName&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;value;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">&nbsp;_firstName;<br>
<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">&nbsp;FirstName<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">get</span><span style="color: rgb(0, 0, 0);">&nbsp;{&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;_firstName;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">set</span><span style="color: rgb(0, 0, 0);">&nbsp;{&nbsp;_firstName&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;value;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">&nbsp;_age;<br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">&nbsp;Age<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">get</span><span style="color: rgb(0, 0, 0);">&nbsp;{&nbsp;</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">&nbsp;_age;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">set</span><span style="color: rgb(0, 0, 0);">&nbsp;{&nbsp;_age&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;value;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Person()&nbsp;{&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Person(</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">&nbsp;lastName,&nbsp;</span><span style="color: rgb(0, 0, 255);">string</span><span style="color: rgb(0, 0, 0);">&nbsp;firstName,&nbsp;</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">&nbsp;age)<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.LastName&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;lastName;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.FirstName&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;firstName;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.Age&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;age;<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
&nbsp;&nbsp;&nbsp;&nbsp;}<br>
}<br>
</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2. 我们建立一个Winform界面，然后使用List&lt;T&gt;作为集合来保存多个Person对象。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="cnblogs_code"><img style="display: none;" id="Code_Closed_Image_003240" onclick="this.style.display='none'; document.getElementById('Code_Closed_Text_003240').style.display='none'; document.getElementById('Code_Open_Image_003240').style.display='inline'; document.getElementById('Code_Open_Text_003240').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" width="11" height="16"><img id="Code_Open_Image_003240" style="display: inline;" onclick="this.style.display='none'; document.getElementById('Code_Open_Text_003240').style.display='none'; getElementById('Code_Closed_Image_003240').style.display='inline'; getElementById('Code_Closed_Text_003240').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" width="11" height="16"><span style="display: none;" class="cnblogs_code_Collapse" id="Code_Closed_Text_003240">Code</span><span id="Code_Open_Text_003240" style="display: inline;"><br>
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0, 128, 128);">&nbsp;1</span>&nbsp;<span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System;<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;2</span>&nbsp;<span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Collections.Generic;<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;3</span>&nbsp;<span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.ComponentModel;<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;4</span>&nbsp;<span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Data;<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;5</span>&nbsp;<span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Drawing;<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;6</span>&nbsp;<span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Text;<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;7</span>&nbsp;<span style="color: rgb(0, 0, 255);">using</span><span style="color: rgb(0, 0, 0);">&nbsp;System.Windows.Forms;<br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;8</span>&nbsp;<span style="color: rgb(0, 0, 0);"><br>
</span><span style="color: rgb(0, 128, 128);">&nbsp;9</span>&nbsp;<span style="color: rgb(0, 0, 255);">namespace</span><span style="color: rgb(0, 0, 0);">&nbsp;AppBindingContext<br>
</span><span style="color: rgb(0, 128, 128);">10</span>&nbsp;<span style="color: rgb(0, 0, 0);">{<br>
</span><span style="color: rgb(0, 128, 128);">11</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">partial</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;Form1&nbsp;:&nbsp;Form<br>
</span><span style="color: rgb(0, 128, 128);">12</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;{<br>
</span><span style="color: rgb(0, 128, 128);">13</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">声明一个管理者</span><span style="color: rgb(0, 128, 0);"><br>
</span><span style="color: rgb(0, 128, 128);">14</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;CurrencyManager&nbsp;cm;<br>
</span><span style="color: rgb(0, 128, 128);">15</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Form1()<br>
</span><span style="color: rgb(0, 128, 128);">16</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
</span><span style="color: rgb(0, 128, 128);">17</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitializeComponent();<br>
</span><span style="color: rgb(0, 128, 128);">18</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">建立数据源集合.</span><span style="color: rgb(0, 128, 0);"><br>
</span><span style="color: rgb(0, 128, 128);">19</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">Person</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">&nbsp;list&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;List</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);">Person</span><span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 0);">();<br>
</span><span style="color: rgb(0, 128, 128);">20</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.Add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Person(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">LastName1</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">FirstName1</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;</span><span style="color: rgb(128, 0, 128);">30</span><span style="color: rgb(0, 0, 0);">));<br>
</span><span style="color: rgb(0, 128, 128);">21</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.Add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Person(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">LastName2</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">FirstName2</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;</span><span style="color: rgb(128, 0, 128);">31</span><span style="color: rgb(0, 0, 0);">));<br>
</span><span style="color: rgb(0, 128, 128);">22</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.Add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Person(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">LastName3</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">FirstName3</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;</span><span style="color: rgb(128, 0, 128);">32</span><span style="color: rgb(0, 0, 0);">));<br>
</span><span style="color: rgb(0, 128, 128);">23</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;list.Add(</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Person(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">LastName4</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">FirstName4</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;</span><span style="color: rgb(128, 0, 128);">33</span><span style="color: rgb(0, 0, 0);">));<br>
</span><span style="color: rgb(0, 128, 128);">24</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">数据绑定</span><span style="color: rgb(0, 128, 0);"><br>
</span><span style="color: rgb(0, 128, 128);">25</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.textBox1.DataBindings.Add(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Text</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;list,&nbsp;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">LastName</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br>
</span><span style="color: rgb(0, 128, 128);">26</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.textBox2.DataBindings.Add(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Text</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;list,&nbsp;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">FirstName</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br>
</span><span style="color: rgb(0, 128, 128);">27</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.textBox3.DataBindings.Add(</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Text</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,&nbsp;list,&nbsp;</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(128, 0, 0);">Age</span><span style="color: rgb(128, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">);<br>
</span><span style="color: rgb(0, 128, 128);">28</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.dataGridView1.DataSource&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;list;<br>
</span><span style="color: rgb(0, 128, 128);">29</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">通过指定的数据源对象获得相应的CurrencyManager对象．</span><span style="color: rgb(0, 128, 0);"><br>
</span><span style="color: rgb(0, 128, 128);">30</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cm&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;(CurrencyManager)</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.BindingContext[list];<br>
</span><span style="color: rgb(0, 128, 128);">31</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
</span><span style="color: rgb(0, 128, 128);">32</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">点击此按钮可以导航到上一条记录</span><span style="color: rgb(0, 128, 0);"><br>
</span><span style="color: rgb(0, 128, 128);">33</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;button1_Click(</span><span style="color: rgb(0, 0, 255);">object</span><span style="color: rgb(0, 0, 0);">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br>
</span><span style="color: rgb(0, 128, 128);">34</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
</span><span style="color: rgb(0, 128, 128);">35</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cm.Position</span><span style="color: rgb(0, 0, 0);">--</span><span style="color: rgb(0, 0, 0);">;<br>
</span><span style="color: rgb(0, 128, 128);">36</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
</span><span style="color: rgb(0, 128, 128);">37</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">点击此按钮可以导航到下一条记录</span><span style="color: rgb(0, 128, 0);"><br>
</span><span style="color: rgb(0, 128, 128);">38</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">&nbsp;button2_Click(</span><span style="color: rgb(0, 0, 255);">object</span><span style="color: rgb(0, 0, 0);">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br>
</span><span style="color: rgb(0, 128, 128);">39</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>
</span><span style="color: rgb(0, 128, 128);">40</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cm.Position</span><span style="color: rgb(0, 0, 0);">++</span><span style="color: rgb(0, 0, 0);">;<br>
</span><span style="color: rgb(0, 128, 128);">41</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
</span><span style="color: rgb(0, 128, 128);">42</span>&nbsp;<span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;&nbsp;}<br>
</span><span style="color: rgb(0, 128, 128);">43</span>&nbsp;<span style="color: rgb(0, 0, 0);">}</span></span></div>
<p>&nbsp;</p>
<p>&nbsp;<a style="font-weight: bold; font-size: x-large;" href="http://files.cnblogs.com/travelcai/AppBindingContext.rar">代码下载</a></p>
<p>&nbsp;</p>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<p>&nbsp;&nbsp;&nbsp;&nbsp;先下载上面的代码看看，体会一下CurrencyManager的作用．你也可以看看CurrencyManager的其他的方法和属性，其实大致就可以明白这个对象是做什么用．</p>
<p>它公布出来的很多方法其实都是用于操作集合用的．然而这种＂操作＂是依赖数据绑定完成的，而不是单纯的为了操作集合而操作．</p><img src ="http://www.cnblogs.com/xiang/aggbug/1283062.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42945/" target="_blank">[新闻]Google股价跌破329美元 61%员工期权价值归零</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>C#中字符数与字节数的区别</title><link>http://www.cnblogs.com/xiang/archive/2007/10/10/918957.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Wed, 10 Oct 2007 01:21:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2007/10/10/918957.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/918957.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2007/10/10/918957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/918957.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/918957.html</trackback:ping><description><![CDATA[<div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">转：<br></span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">取字符串长度&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br></span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;s&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">iam张宇湘</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">;&nbsp;&nbsp;<br>&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;len&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;s.Length;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">will&nbsp;&nbsp;&nbsp;output&nbsp;&nbsp;&nbsp;as&nbsp;&nbsp;&nbsp;6&nbsp;&nbsp;</span><span style="color: rgb(0, 128, 0);"><br></span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">byte</span><span style="color: rgb(0, 0, 0);">[]&nbsp;&nbsp;&nbsp;sarr&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;System.Text.Encoding.Default.GetBytes(s);&nbsp;&nbsp;<br>&nbsp;&nbsp;len&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;&nbsp;&nbsp;sarr.Length;</span><span style="color: rgb(0, 128, 0);">//</span><span style="color: rgb(0, 128, 0);">will&nbsp;&nbsp;&nbsp;output&nbsp;&nbsp;&nbsp;as&nbsp;&nbsp;&nbsp;3+3*2=9</span></div><br><br><br><img src ="http://www.cnblogs.com/xiang/aggbug/918957.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42944/" target="_blank">[新闻]十年祭:昔日明星软件今何在?</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>世联地产软件工程师笔试试题</title><link>http://www.cnblogs.com/xiang/archive/2007/09/18/897339.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Tue, 18 Sep 2007 08:18:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2007/09/18/897339.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/897339.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2007/09/18/897339.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/897339.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/897339.html</trackback:ping><description><![CDATA[摘要: 请用示意图表现 asp.net使用IIS相应HTTP请求，与后台数据库交互等处理的过程，画出基本结构即可<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2007/09/18/897339.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/897339.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42943/" target="_blank">[新闻]六大可能出售IT企业名单：SUN领头或被猎走</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>HttpRuntime.Cache 与HttpContext.Current.Cache的疑问 </title><link>http://www.cnblogs.com/xiang/archive/2006/12/31/608690.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Sun, 31 Dec 2006 03:04:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/12/31/608690.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/608690.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/12/31/608690.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/608690.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/608690.html</trackback:ping><description><![CDATA[<STRONG>转载自 蝈蝈俊.net</STRONG><BR><BR>
<DIV class=postbody>
<P>已经有人说过这个话题，相关链接：</P>
<P>HttpRuntime.Cache vs. HttpContext.Current.Cache<BR><A href="http://weblogs.asp.net/pjohnson/archive/2006/02/06/437559.aspx">http://weblogs.asp.net/pjohnson/archive/2006/02/06/437559.aspx</A></P>
<P>HttpContext.Cache和HttpRuntime.Cache <BR><A href="http://blog.joycode.com/dotey/archive/2005/01/15/43091.aspx">http://blog.joycode.com/dotey/archive/2005/01/15/43091.aspx</A></P>
<P>我这里要说的是从另外一个角度来说：</P>
<P>一，两个实现代码的差异：<BR>我们用 .NET Reflector&nbsp; 看 HttpContext 类的 Cache 属性 ，会看到如下代码：<BR><BR></P><PRE><DIV><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><IMG src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> Cache Cache
<IMG id=Codehighlighter_19_85_Open_Image onclick="this.style.display='none'; Codehighlighter_19_85_Open_Text.style.display='none'; Codehighlighter_19_85_Closed_Image.style.display='inline'; Codehighlighter_19_85_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter_19_85_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_19_85_Closed_Text.style.display='none'; Codehighlighter_19_85_Open_Image.style.display='inline'; Codehighlighter_19_85_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter_19_85_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">...</SPAN><SPAN id=Codehighlighter_19_85_Open_Text><SPAN style="COLOR: #000000">{
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000">
<IMG id=Codehighlighter_37_83_Open_Image onclick="this.style.display='none'; Codehighlighter_37_83_Open_Text.style.display='none'; Codehighlighter_37_83_Closed_Image.style.display='inline'; Codehighlighter_37_83_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter_37_83_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_37_83_Closed_Text.style.display='none'; Codehighlighter_37_83_Open_Image.style.display='inline'; Codehighlighter_37_83_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>      </SPAN><SPAN id=Codehighlighter_37_83_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">...</SPAN><SPAN id=Codehighlighter_37_83_Open_Text><SPAN style="COLOR: #000000">{
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> HttpRuntime.Cache;
<IMG src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>      }</SPAN></SPAN><SPAN style="COLOR: #000000">
<IMG src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV></PRE>
<P>所以，两者在代码上是完全一致的。</P>
<P><BR>二、两者的差异其实在于 HttpContext.Current</P>
<P>用 .NET Reflector&nbsp; 看 HttpContext.Current 如下：</P><PRE><DIV><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><IMG src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> HttpContext Current
<IMG id=Codehighlighter_34_119_Open_Image onclick="this.style.display='none'; Codehighlighter_34_119_Open_Text.style.display='none'; Codehighlighter_34_119_Closed_Image.style.display='inline'; Codehighlighter_34_119_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter_34_119_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_34_119_Closed_Text.style.display='none'; Codehighlighter_34_119_Open_Image.style.display='inline'; Codehighlighter_34_119_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter_34_119_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">...</SPAN><SPAN id=Codehighlighter_34_119_Open_Text><SPAN style="COLOR: #000000">{
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000">
<IMG id=Codehighlighter_52_117_Open_Image onclick="this.style.display='none'; Codehighlighter_52_117_Open_Text.style.display='none'; Codehighlighter_52_117_Closed_Image.style.display='inline'; Codehighlighter_52_117_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter_52_117_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_52_117_Closed_Text.style.display='none'; Codehighlighter_52_117_Open_Image.style.display='inline'; Codehighlighter_52_117_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>      </SPAN><SPAN id=Codehighlighter_52_117_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">...</SPAN><SPAN id=Codehighlighter_52_117_Open_Text><SPAN style="COLOR: #000000">{
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> (ContextBase.Current </SPAN><SPAN style="COLOR: #0000ff">as</SPAN><SPAN style="COLOR: #000000"> HttpContext);
<IMG src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>      }</SPAN></SPAN><SPAN style="COLOR: #000000">
<IMG src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV></PRE>
<P>ContextBase 类的静态属性&nbsp; Current 如下：<BR></P><PRE><DIV><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><IMG src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">internal</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">object</SPAN><SPAN style="COLOR: #000000"> Current
<IMG id=Codehighlighter_31_103_Open_Image onclick="this.style.display='none'; Codehighlighter_31_103_Open_Text.style.display='none'; Codehighlighter_31_103_Closed_Image.style.display='inline'; Codehighlighter_31_103_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter_31_103_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_31_103_Closed_Text.style.display='none'; Codehighlighter_31_103_Open_Image.style.display='inline'; Codehighlighter_31_103_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter_31_103_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">...</SPAN><SPAN id=Codehighlighter_31_103_Open_Text><SPAN style="COLOR: #000000">{
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000">
<IMG id=Codehighlighter_49_101_Open_Image onclick="this.style.display='none'; Codehighlighter_49_101_Open_Text.style.display='none'; Codehighlighter_49_101_Closed_Image.style.display='inline'; Codehighlighter_49_101_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter_49_101_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_49_101_Closed_Text.style.display='none'; Codehighlighter_49_101_Open_Image.style.display='inline'; Codehighlighter_49_101_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>      </SPAN><SPAN id=Codehighlighter_49_101_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">...</SPAN><SPAN id=Codehighlighter_49_101_Open_Text><SPAN style="COLOR: #000000">{
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> CallContext.HostContext;
<IMG src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>      }</SPAN></SPAN><SPAN style="COLOR: #000000">
<IMG src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV></PRE>
<P><BR>CallContext 类的静态属性 HostContext 如下：<BR></P><PRE><DIV><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><IMG src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">object</SPAN><SPAN style="COLOR: #000000"> HostContext
<IMG id=Codehighlighter_33_416_Open_Image onclick="this.style.display='none'; Codehighlighter_33_416_Open_Text.style.display='none'; Codehighlighter_33_416_Closed_Image.style.display='inline'; Codehighlighter_33_416_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter_33_416_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_33_416_Closed_Text.style.display='none'; Codehighlighter_33_416_Open_Image.style.display='inline'; Codehighlighter_33_416_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter_33_416_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">...</SPAN><SPAN id=Codehighlighter_33_416_Open_Text><SPAN style="COLOR: #000000">{
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>      </SPAN><SPAN style="COLOR: #0000ff">get</SPAN><SPAN style="COLOR: #000000">
<IMG id=Codehighlighter_51_414_Open_Image onclick="this.style.display='none'; Codehighlighter_51_414_Open_Text.style.display='none'; Codehighlighter_51_414_Closed_Image.style.display='inline'; Codehighlighter_51_414_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter_51_414_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_51_414_Closed_Text.style.display='none'; Codehighlighter_51_414_Open_Image.style.display='inline'; Codehighlighter_51_414_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>      </SPAN><SPAN id=Codehighlighter_51_414_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">...</SPAN><SPAN id=Codehighlighter_51_414_Open_Text><SPAN style="COLOR: #000000">{
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            IllogicalCallContext context1 </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> Thread.CurrentThread.GetIllogicalCallContext();
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            </SPAN><SPAN style="COLOR: #0000ff">object</SPAN><SPAN style="COLOR: #000000"> obj1 </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> context1.HostContext;
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> (obj1 </SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)
<IMG id=Codehighlighter_235_381_Open_Image onclick="this.style.display='none'; Codehighlighter_235_381_Open_Text.style.display='none'; Codehighlighter_235_381_Closed_Image.style.display='inline'; Codehighlighter_235_381_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter_235_381_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_235_381_Closed_Text.style.display='none'; Codehighlighter_235_381_Open_Image.style.display='inline'; Codehighlighter_235_381_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>            </SPAN><SPAN id=Codehighlighter_235_381_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">...</SPAN><SPAN id=Codehighlighter_235_381_Open_Text><SPAN style="COLOR: #000000">{
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>                  LogicalCallContext context2 </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> CallContext.GetLogicalCallContext();
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>                  obj1 </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> context2.HostContext;
<IMG src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }</SPAN></SPAN><SPAN style="COLOR: #000000">
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> obj1;
<IMG src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>      }</SPAN></SPAN><SPAN style="COLOR: #000000">
<IMG src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV></PRE>
<P>显然，非 Web 应用 HttpContext.Current 返回 null 是因为 <BR>ContextBase.Current as HttpContext 这么一句，返回的 null&nbsp;。<BR><BR>ContextBase.Current 是有值的，但是由于非 Web 应用，返回的 Object 无法转换为HttpContext，而返回 null 的。</P>
<P>所以， HttpContext.Current.Cache 只可能用于 Web 应用的缓存。 而且是跟 HttpContext 紧密联系的。</P>
<P><BR>三、HttpRuntime.Cache 可用于非 Web 应用的缓存。</P>
<P>比如我如下的一个控制台程序，是可以正常读写缓存的。而这里当然是不可以使用&nbsp; HttpContext.Cache 的。</P><PRE><DIV><!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><IMG src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">        </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000"> Main(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">[] args)
<IMG id=Codehighlighter_48_342_Open_Image onclick="this.style.display='none'; Codehighlighter_48_342_Open_Text.style.display='none'; Codehighlighter_48_342_Closed_Image.style.display='inline'; Codehighlighter_48_342_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter_48_342_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_48_342_Closed_Text.style.display='none'; Codehighlighter_48_342_Open_Image.style.display='inline'; Codehighlighter_48_342_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedBlock.gif" align=top>        </SPAN><SPAN id=Codehighlighter_48_342_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">...</SPAN><SPAN id=Codehighlighter_48_342_Open_Text><SPAN style="COLOR: #000000">{
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            System.Web.Caching.Cache c </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> System.Web.HttpRuntime.Cache;
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            </SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000"> (c </SPAN><SPAN style="COLOR: #000000">!=</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)
<IMG id=Codehighlighter_160_300_Open_Image onclick="this.style.display='none'; Codehighlighter_160_300_Open_Text.style.display='none'; Codehighlighter_160_300_Closed_Image.style.display='inline'; Codehighlighter_160_300_Closed_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter_160_300_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter_160_300_Closed_Text.style.display='none'; Codehighlighter_160_300_Open_Image.style.display='inline'; Codehighlighter_160_300_Open_Text.style.display='inline';" src="http://blog.joycode.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>            </SPAN><SPAN id=Codehighlighter_160_300_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">...</SPAN><SPAN id=Codehighlighter_160_300_Open_Text><SPAN style="COLOR: #000000">{
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>                c.Insert(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">, </SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">123141432432</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>                </SPAN><SPAN style="COLOR: #0000ff">object</SPAN><SPAN style="COLOR: #000000"> o </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> c.Get(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>                Console.WriteLine(o);
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>
<IMG src="http://blog.joycode.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>            }</SPAN></SPAN><SPAN style="COLOR: #000000">
<IMG src="http://blog.joycode.com/images/OutliningIndicators/InBlock.gif" align=top>            Console.ReadLine();
<IMG src="http://blog.joycode.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>        }</SPAN></SPAN><SPAN style="COLOR: #000000">
<IMG src="http://blog.joycode.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV></PRE>
<P>总结，<BR>1、HttpRuntime.Cache 相当于就是一个缓存具体实现类，这个类虽然被放在了 System.Web 命名空间下了。但是非 Web 应用也是可以拿来用的。<BR>2、HttpContext.Cache 是对上述缓存类的封装，由于封装到了 HttpContext ，局限于只能在知道 HttpContext 下使用，即只能用于 Web 应用。</P>
<P>综上所属，在可以的条件，尽量用&nbsp; HttpRuntime.Cache ，而不是用&nbsp; HttpContext.Cache 。</P></DIV><img src ="http://www.cnblogs.com/xiang/aggbug/608690.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42942/" target="_blank">[新闻]Linux内核2.6.27正式到来</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>配置节处理程序声明</title><link>http://www.cnblogs.com/xiang/archive/2006/12/06/583705.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Wed, 06 Dec 2006 02:13:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/12/06/583705.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/583705.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/12/06/583705.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/583705.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/583705.html</trackback:ping><description><![CDATA[<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: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">configSections</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">section&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="ApplicationConfiguration"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;type</SPAN><SPAN style="COLOR: #0000ff">="Duwamish7.SystemFramework.ApplicationConfiguration,&nbsp;Duwamish7.SystemFramework"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">section&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="DuwamishConfiguration"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;type</SPAN><SPAN style="COLOR: #0000ff">="Duwamish7.Common.DuwamishConfiguration,&nbsp;Duwamish7.Common"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">configSections</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN></DIV><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 配置节处理程序声明（Section），必须出现在配置文件顶部 &lt;configSections&gt; 和 &lt;/configSections&gt; 标记之间，在这里，它们只用到了name和type属性，其中，name属性定义了指定配置节的名称，而type属性则规定了指定从配置文件中读取节的配置节处理程序类的名称，有两个部分，前面为处理程序的类名，后面为Assembly名（Assembly必须位于bin目录中）以及版本号，公匙等信息<BR><BR>&nbsp;<U>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 按照上述配置节信息可以知道：Duwamish7.SystemFramework.ApplicationConfiguration和Duwamish7.Common.DuwamishConfiguration，他们分别位于SystemFramework和Common项目中<BR></U><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.net规定，<FONT color=#ff1493>所有能够处理配置节的类必须要实现IConfigurationSectionHandler接口</FONT>，而IConfigurationSectionHandler接口很简单，只有一个object Create(object parent,object configContext,XmlNode section)方法，这个方法不需要主动调用，它是在ConfigurationSettings.GetConfig这个静态方法的时候自动调用的，也就是说，当你在程序中使用ConfigurationSettings.GetConfig来获取配置节的时候，.net会根据改配置节声明中所定义的类名和路径自动实例化配置节处理类，并调用Create方法<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<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"><STRONG><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>使用：<SPAN style="COLOR: #000000">System.Configuration.ConfigurationSettings.GetConfig(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">ApplicationConfiguration</SPAN><SPAN style="COLOR: #000000">"</SPAN></STRONG><SPAN style="COLOR: #000000"><STRONG>);</STRONG><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV><BR>&nbsp;<img src ="http://www.cnblogs.com/xiang/aggbug/583705.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42941/" target="_blank">[新闻]《星际争霸2》一分为三 各种族依次登场</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>判断是否存在在父结果集中有而在子结果集中没有的记录的最佳方法</title><link>http://www.cnblogs.com/xiang/archive/2006/11/01/546938.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Wed, 01 Nov 2006 08:36:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/11/01/546938.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/546938.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/11/01/546938.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/546938.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/546938.html</trackback:ping><description><![CDATA[<P>CSDN上有一个帖子：求：判断一个表的数据不在另一个表中最优秀方法？（高手请进）<BR>有人说用left join效率最好<BR><BR>其实应该是<FONT color=#ff1493>EXISTS </FONT>的效率最高<BR><BR>如：<BR>1.SELECT a.hdr_key&nbsp; FROM hdr_tbl a WHERE <FONT color=#ff1493>NOT EXISTS</FONT> (SELECT * FROM dtl_tbl b WHERE <FONT color=#0000ff>a.hdr_key = b.hdr_key</FONT>) </P>
<P>2.SELECT a.hdr_key&nbsp; FROM hdr_tbl a<BR>LEFT JOIN dtl_tbl b ON a.hdr_key = b.hdr_key&nbsp; WHERE b.hdr_key IS NULL </P>
<P>3.SELECT hdr_key&nbsp; FROM hdr_tbl<BR>WHERE hdr_key NOT IN (SELECT hdr_key FROM dtl_tbl)&nbsp;<BR>&nbsp;<BR>三种写法都可以得到同样正确的结果，但是效率依次降低。</P><img src ="http://www.cnblogs.com/xiang/aggbug/546938.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42940/" target="_blank">[新闻]IBM花300万美元打造互联网三维虚拟紫禁城</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>动态执行Sql语句与临时表的问题(对象名无效)</title><link>http://www.cnblogs.com/xiang/archive/2006/10/18/532580.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Wed, 18 Oct 2006 07:39:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/10/18/532580.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/532580.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/10/18/532580.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/532580.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/532580.html</trackback:ping><description><![CDATA[摘要: exec('selectIDENTITY(int,1,1)  as ID,fnum,into  #yuecu  from  store_store where  '+@Parameter)  <br>select  XX,XX1,XX2  from  #yuecu <br>.  <br>这样创建一个临时表以后我再想从临时表中取数据提示对象名#yuecu 无效，晕，如果我不是使用exec()执行sql语句的话就没有任何问题,WHY?  <br>临时表有作用域的，上面的临时表只在EXEC內部有效。<br><br>解决办法：<br><br>改用全局临时表<br>exec('selectIDENTITY(int,1,1)  as ID,fnum,into  ##yuecu  from  store_store where  '+@Parameter)  <br><br>select * from  ##yuecu  &nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/10/18/532580.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/532580.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42938/" target="_blank">[新闻]11个处于悬崖边缘的 Web 公司</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>定义局部变量时，字符串不能超过8000的方法</title><link>http://www.cnblogs.com/xiang/archive/2006/10/12/526810.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Wed, 11 Oct 2006 16:27:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/10/12/526810.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/526810.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/10/12/526810.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/526810.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/526810.html</trackback:ping><description><![CDATA[摘要: 定义局部变量时，字符串不能超过8000的方法<br>------------------------------------------------------------------------------------------------------------------------<br>思路：将字符串分解到多个变量进行存储，根据一定的规则将生成的字符串分段存入临时表。分配到各变量中去<br>------------------------------------------------------------------------------------------------------------------------<br>--/*-- 方法1. 多个变量处理<br><br>--定义变量,估计需要多少个变量才能保存完所有数据<br>declare @sql0 varchar(8000),@sql1 varchar(8000)<br>--,@sqln varchar(8000)<br><br>--生成数据处理临时表<br>select id=i&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/10/12/526810.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/526810.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42937/" target="_blank">[新闻]扎克博格：Facebook要先赚吆喝后赚钱</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>我搜集的关于工作流方面的技术文章</title><link>http://www.cnblogs.com/xiang/archive/2006/09/25/514697.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Mon, 25 Sep 2006 15:19:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/09/25/514697.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/514697.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/09/25/514697.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/514697.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/514697.html</trackback:ping><description><![CDATA[摘要: 工作流理论总结<br>http://www.blogjava.net/rosen/archive/2006/04/30/44209.aspx<br>http://www.blogjava.net/rosen/category/2684.html<br>工作流管理系统(论文)<br>http://blog.csdn.net/cissyring/archive/2004/10/31/160975.aspx<br><br>工作流管理系统（WfMS）介绍<br>http://blog.csdn.net/hongbo781202/archive/2006/07/11/906504.aspx<br><br>对一个工作流引擎模型模型的设计 <br>http://www.cnblogs.com/herony420/archive/2006/04/13/373994.html<br><br>非常不错的文章，专门介绍WF 的规则引擎，作者Charles Young在Biztalk规则引擎方面也颇有功力<br>http://blogs.msdn.com/ccboy/def&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/09/25/514697.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/514697.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42936/" target="_blank">[新闻]金融风暴改写富豪榜排名　巴菲特资产超盖茨</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>注意Transact-SQL中Case函数的两种用法导致不同的结果集</title><link>http://www.cnblogs.com/xiang/archive/2006/09/22/511968.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Fri, 22 Sep 2006 08:23:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/09/22/511968.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/511968.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/09/22/511968.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/511968.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/511968.html</trackback:ping><description><![CDATA[摘要: A.使用带有简单 CASE 函数的 SELECT 语句<br>B.使用带有简单 CASE 函数和 CASE 搜索函数的 SELECT 语句<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/09/22/511968.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/511968.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42935/" target="_blank">[新闻]红杉资本发出严重警告：黄金时代已成历史</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>只有设置为InProc，Session失效时才会触发Session_End</title><link>http://www.cnblogs.com/xiang/archive/2006/09/12/501823.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Tue, 12 Sep 2006 03:32:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/09/12/501823.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/501823.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/09/12/501823.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/501823.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/501823.html</trackback:ping><description><![CDATA[<P>Session_OnEnd事件<BR>Session_OnEnd 事件在会话被放弃或超时发生，它标志着事件的结束。但<BR>请注意，只有 InProc 模式支持该事件。你可以通过Web.config文件的<BR>&lt;sessionState&gt;节的timeout属性来指定超时时限,如果用户在该超时时<BR>限之内(以分钟为单位，默认是20分<BR>钟）不刷新或请求网页，则该会话将终止。可以利用Session_OnEnd 事<BR>件做一些清理工作。<BR></P>
<P>mode则有以下几种方式：<BR>成员名称&nbsp;&nbsp;&nbsp;&nbsp; 说明 <BR>InProc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 会话状态与 ASP.NET 辅助进程一起执行。默认值为 InProc。 <BR>Off&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 会话状态被禁用。 <BR>SQLServer&nbsp;&nbsp;&nbsp; 会话状态正在使用进程外 SQL Server 存储状态信息。 <BR>StateServer&nbsp; 会话状态正在使用进程外 Windows NT Server 存储状态信息。 </P>
<P>&nbsp;</P>
<P>&nbsp;</P><img src ="http://www.cnblogs.com/xiang/aggbug/501823.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42934/" target="_blank">[新闻]2008年10月11日科技博客精选</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>asp.net用户控件中使用相对路径问题</title><link>http://www.cnblogs.com/xiang/archive/2006/09/06/495892.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Tue, 05 Sep 2006 17:47:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/09/06/495892.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/495892.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/09/06/495892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/495892.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/495892.html</trackback:ping><description><![CDATA[<P>asp.net用户控件中使用相对路径问题 : <BR><A href="http://hjf1223.cnblogs.com/archive/2005/08/25/222840.html" target=_new>http://hjf1223.cnblogs.com/archive/2005/08/25/222840.html</A> <BR>在用户控件中使用相对路径,会因为引用控件的页面的不同路径而产生问题<BR><BR>不错的解决方法 ： <BR>对<STRONG>服务器控件</STRONG>：<FONT style="BACKGROUND-COLOR: #ffffff"> <FONT color=#006400><STRONG>使用"~" 表示应用程序根目录</STRONG></FONT></FONT>。 <BR>对<STRONG>非服务器控件</STRONG>:<STRONG><FONT style="BACKGROUND-COLOR: #ffffff"> <FONT color=#008000>使用CSS定义样式，同样可使用相对路径</FONT></FONT></STRONG>。<BR><BR>引用：<A href="/tongzhenhua/archive/2004/10/04/48913.aspx">http://www.cnblogs.com/tongzhenhua/archive/2004/10/04/48913.aspx</A></P><img src ="http://www.cnblogs.com/xiang/aggbug/495892.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42933/" target="_blank">[新闻]搞死开心网还是搞活他？</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>a href=#与 a href=javascript:void(0) 的区别 打开新窗口链接的几种办法</title><link>http://www.cnblogs.com/xiang/archive/2006/09/05/495828.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Tue, 05 Sep 2006 15:17:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/09/05/495828.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/495828.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/09/05/495828.html#Feedback</comments><slash:comments>14</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/495828.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/495828.html</trackback:ping><description><![CDATA[<P>＃包含了一个位置信息</P>
<P>默认的锚点是＃top 也就是网页的上端</P>
<P>而javascript:void(0)&nbsp; 仅仅表示一个死链接</P>
<P>这就是为什么有的时候页面很长浏览链接明明是＃可是</P>
<P>跳动到了页首</P>
<P>而javascript:void(0) 则不是如此</P>
<P>所以调用脚本的时候最好用void(0)</P>
<P>或者&lt;input onclick&gt;</P>
<P>&lt;div onclick&gt;等<BR><BR>打开新窗口链接的几种办法<BR><BR>1.window.open('url')<BR><BR>2.用自定义函数</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;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">script</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">function</SPAN><SPAN style="COLOR: #000000">&nbsp;openWin(tag,obj)<BR><IMG id=Codehighlighter1_41_148_Open_Image onclick="this.style.display='none'; Codehighlighter1_41_148_Open_Text.style.display='none'; Codehighlighter1_41_148_Closed_Image.style.display='inline'; Codehighlighter1_41_148_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_41_148_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_41_148_Closed_Text.style.display='none'; Codehighlighter1_41_148_Open_Image.style.display='inline'; Codehighlighter1_41_148_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_41_148_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_41_148_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;obj.target</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">_blank</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;obj.href&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Web/Substation/Substation.aspx?stationno=</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">tag;<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;obj.click();<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;</SPAN><SPAN style="COLOR: #000000">&lt;/</SPAN><SPAN style="COLOR: #000000">script</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN></DIV>
<P></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: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">a&nbsp;</SPAN><SPAN style="COLOR: #ff0000">&nbsp;href</SPAN><SPAN style="COLOR: #0000ff">="javascript:void(0)"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;onclick</SPAN><SPAN style="COLOR: #0000ff">="openWin(3,this)"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">株洲</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">a</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN></DIV>
<P><BR>window.location.href=""<BR>&nbsp;</P><img src ="http://www.cnblogs.com/xiang/aggbug/495828.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42932/" target="_blank">[新闻]网络书店“新”军</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>只能输入汉字，数字，英文大小写，符号只允许，。！的正则表达式</title><link>http://www.cnblogs.com/xiang/archive/2006/09/01/492177.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Fri, 01 Sep 2006 05:48:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/09/01/492177.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/492177.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/09/01/492177.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/492177.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/492177.html</trackback:ping><description><![CDATA[<BR>只能输入汉字，数字，英文大小写，符号只允许，。！的正则表达式<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: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">^\</SPAN><SPAN style="COLOR: #000000">u4e00</SPAN><SPAN style="COLOR: #000000">-\</SPAN><SPAN style="COLOR: #000000">u9fa5</SPAN><SPAN style="COLOR: #000000">\</SPAN><SPAN style="COLOR: #000000">w</SPAN><SPAN style="COLOR: #000000">,\.</SPAN><SPAN style="COLOR: #000000">]</SPAN><SPAN style="COLOR: #000000">/.</SPAN><SPAN style="COLOR: #000000">test(obj</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">value))&nbsp;obj</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">value</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #000000">""</SPAN><SPAN style="COLOR: #000000">;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;false;</SPAN></DIV><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"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>function&nbsp;SpecChar(obj)&nbsp;{&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(event</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">type</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #000000">"</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #000000">keyup</SPAN><SPAN style="FONT-WEIGHT: bold; COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">)&nbsp;{&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000">[</SPAN><SPAN style="COLOR: #000000">^\</SPAN><SPAN style="COLOR: #000000">u4e00</SPAN><SPAN style="COLOR: #000000">-\</SPAN><SPAN style="COLOR: #000000">u9fa5</SPAN><SPAN style="COLOR: #000000">\</SPAN><SPAN style="COLOR: #000000">w</SPAN><SPAN style="COLOR: #000000">,\.</SPAN><SPAN style="COLOR: #000000">]</SPAN><SPAN style="COLOR: #000000">/.</SPAN><SPAN style="COLOR: #000000">test(obj</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">value))&nbsp;obj</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">value</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">obj</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">value</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">substring(</SPAN><SPAN style="COLOR: #800000">0</SPAN><SPAN style="COLOR: #000000">,</SPAN><SPAN style="COLOR: #000000">obj</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #000000">value</SPAN><SPAN style="COLOR: #000000">.</SPAN><SPAN style="COLOR: #0000ff">length</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #800000">1</SPAN><SPAN style="COLOR: #000000">);</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;false;&nbsp;}&nbsp;}</SPAN></DIV><img src ="http://www.cnblogs.com/xiang/aggbug/492177.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42931/" target="_blank">[新闻]百度C2C电子商务平台“有啊”youa.com上线</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>HTML及XML语言的转义字符</title><link>http://www.cnblogs.com/xiang/archive/2006/09/01/492165.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Fri, 01 Sep 2006 05:31:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/09/01/492165.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/492165.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/09/01/492165.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/492165.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/492165.html</trackback:ping><description><![CDATA[<DIV class=text><A name=logcontent></A>
<P align=center><STRONG>HTML中的转义字符</STRONG> </P>
<P><STRONG>　　HTML中&lt;, &gt;，&amp;等有特殊含义，(前两个字符用于链接签，&amp;用于转义)，不能直接使用</STRONG>。使用这三个字符时，应使用它们的转义序列，如下所示：&nbsp; <BR><BR>&amp;amp; 或 &amp;#38;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 和 <BR>&amp;lt; 或 &amp;#60;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 小于号&nbsp; <BR>&amp;gt; 或 &amp;#62;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大于号 <BR>&amp;quot;&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; 双引号 <BR>&amp;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; <BR>&amp;copy;&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; 版权符 <BR>&amp;reg&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; 注册符</P>
<P align=left>　　前者为字符转义序列，后者为数字转义序列。数字转为字符对应的ASCII码值。例如　&amp; lt; font &amp;gt;显示为，&lt;font&gt;，若直接写为则被认为是一个链接签。 <BR>　　需要说明的是： <BR>　　a. 转义序列各字符间不能有空格；&nbsp; <BR>　　b. 转义序列必须以"；"结束； <BR>　　c. 单独的&amp;不被认为是转义开始；&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp; 　d.区分大小写。 <BR>　　另一个需要转义的字符是引号，它的转义序列为"" "或""" <BR>　　HTML使用的字符集是ISO &amp;859 Larin-1字符集，该字符集中有许多标准键盘上无法输入的字符。对这些特殊字符只能使用转义序列。 <BR><STRONG></STRONG></P>
<P align=center><STRONG>XML转义字符</STRONG></P>
<P align=left><BR>　　不合法的XML字符必须被替换为相应的实体。 <BR><BR>　　如果在XML文档中使用类似"&lt;" 的字符, 那么解析器将会出现错误，因为解析器会认为这是一个新元素的开始。所以不应该像下面那样书写代码: <BR>&lt;message&gt;if salary &lt; 1000 then&lt;/message&gt;&nbsp; <BR>　　为了避免出现这种情况，必须将字符"&lt;" 转换成实体，像下面这样:&nbsp; <BR>&lt;message&gt;if salary &amp;lt; 1000 then&lt;/message&gt;&nbsp; <BR>　　下面是五个在XML文档中预定义好的实体： <BR>&amp;lt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 小于号&nbsp; <BR>&amp;gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 大于号 <BR>&amp;amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 和&nbsp; <BR>&amp;apos;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 单引号&nbsp;<BR>&amp;quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 双引号&nbsp;<BR><BR>　　实体必须以符号"&amp;"开头，以符号";"结尾。&nbsp; <BR><BR>　　注意: <STRONG>只有"&lt;" 字符和"&amp;"字符对于XML来说是严格禁止使用的</STRONG>。剩下的都是合法的，为了减少出错，使用实体是一个好习惯。 </P></DIV><img src ="http://www.cnblogs.com/xiang/aggbug/492165.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42931/" target="_blank">[新闻]百度C2C电子商务平台“有啊”youa.com上线</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[转] c# 时间操作</title><link>http://www.cnblogs.com/xiang/archive/2006/07/19/454957.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Wed, 19 Jul 2006 12:58:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/07/19/454957.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/454957.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/07/19/454957.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/454957.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/454957.html</trackback:ping><description><![CDATA[摘要: <b>取某月的最后一天</b><br>方法一、使用算出该月多少天，年+月+加上多少天即得，举例取今天这个月的最后一天<br>方法二、取出下月的第一天减去一天便是这个的最后一天&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/07/19/454957.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/454957.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42930/" target="_blank">[新闻]Silverlight 2.0正式版下周发布</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号('+'), 在 Decode 的时候将加号转为空格, 但是浏览器是不能理解加号为空格的, 所以如果文件名包含了空格, 在浏览器下载得到的文件, 空格就变成了加号</title><link>http://www.cnblogs.com/xiang/archive/2006/07/18/453918.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Tue, 18 Jul 2006 08:20:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/07/18/453918.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/453918.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/07/18/453918.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/453918.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/453918.html</trackback:ping><description><![CDATA[摘要: HttpUtility.UrlEncode 在 Encode 的时候, 将空格转换成加号('+'), 在 Decode 的时候将加号转为空格, 但是浏览器是不能理解加号为空格的, 所以如果文件名包含了空格, 在浏览器下载得到的文件, 空格就变成了加号<br>一个解决办法是, 在 HttpUtility 的 UrlEncode 之后, 将 "+" 替换成 "%20"( 如果原来是 "+" 则被转换成 "%2b" )&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/07/18/453918.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/453918.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42925/" target="_blank">[新闻]Wikipedia“变心”，力挺Ubuntu</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>利用.net 2.0中的TreeView控件与数据库绑定，生成无限级的树目录 </title><link>http://www.cnblogs.com/xiang/archive/2006/07/13/449944.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Thu, 13 Jul 2006 08:08:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/07/13/449944.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/449944.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/07/13/449944.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/449944.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/449944.html</trackback:ping><description><![CDATA[摘要: 利用.net 2.0中的TreeView控件与数据库绑定，生成无限级的树目录 &nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/07/13/449944.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/449944.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42924/" target="_blank">[新闻]“不可破解”的加密技术出</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>微软的“Web Data Administrator”MS SQL 管理器_WEB方式管理数据库</title><link>http://www.cnblogs.com/xiang/archive/2006/06/28/438100.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Wed, 28 Jun 2006 13:12:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/06/28/438100.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/438100.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/06/28/438100.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/438100.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/438100.html</trackback:ping><description><![CDATA[摘要: 1.微软的“Web Data Administrator”MS SQL 管理器_WEB方式管理数据库<br>该程序属于.NET开源程序<br>2.TableEditoR,ASP编写的,在功能和考虑上要比微软Web Data Administrator那个完整多了&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/06/28/438100.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/438100.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42923/" target="_blank">[新闻]13款Firefox Gmail扩展</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[转]prototype.js　1.4版开发者手册(强烈推荐) </title><link>http://www.cnblogs.com/xiang/archive/2006/06/28/437790.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Wed, 28 Jun 2006 06:53:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/06/28/437790.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/437790.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/06/28/437790.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/437790.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/437790.html</trackback:ping><description><![CDATA[摘要: prototype.js　1.4版开发者手册(强烈推荐) [转载自http://thinhunan.cnblogs.com/archive/2006/04/01/DeveloperNotesForPrototype.html].reference table{border:1px dashed darkblue;} .reference th{border:1px dashed darkblue;&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/06/28/437790.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/437790.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42923/" target="_blank">[新闻]13款Firefox Gmail扩展</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[转]输入框自动完成,模仿IE的，支持FireFox</title><link>http://www.cnblogs.com/xiang/archive/2006/06/28/437647.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Wed, 28 Jun 2006 04:35:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/06/28/437647.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/437647.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/06/28/437647.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/437647.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/437647.html</trackback:ping><description><![CDATA[摘要: ---模拟IE自动完成功能,常见于地址栏输入或者Windows控件输入<br>自动完成功能：<br><br>1、可设置自动完成功能所提示的字符。<br>2、可用方向键选择。<br>3、如果选择的当前元素为首元素，则按上（方向键）则会自动跳到末元素。<br>4、如果选择的当前元素为末元素，则按下（方向键）则会自动跳到首元素。<br>5、当获取值为空时，自动隐藏 自动完成TIP的容器<br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/06/28/437647.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/437647.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42923/" target="_blank">[新闻]13款Firefox Gmail扩展</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[转]javascript应用：实现复选框全选/全不选切换 </title><link>http://www.cnblogs.com/xiang/archive/2006/06/18/428823.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Sun, 18 Jun 2006 06:33:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/06/18/428823.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/428823.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/06/18/428823.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/428823.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/428823.html</trackback:ping><description><![CDATA[摘要: javascript应用:<br>1.实现复选框全选/全不选切换 <br>2.所有复选框勾上,全选复选框自动勾上<br>3.其中任一复选框取消勾上,全选复选框自动取消勾上状态&nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/06/18/428823.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/428823.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42922/" target="_blank">[新闻]支持鼠标手势的Chrome中文修改版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[转]如何进行.NET高效开发 </title><link>http://www.cnblogs.com/xiang/archive/2006/06/13/425154.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Tue, 13 Jun 2006 13:14:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/06/13/425154.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/425154.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/06/13/425154.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/425154.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/425154.html</trackback:ping><description><![CDATA[摘要: 如何进行.NET高效开发 &nbsp;&nbsp;<a href='http://www.cnblogs.com/xiang/archive/2006/06/13/425154.html'>阅读全文</a><img src ="http://www.cnblogs.com/xiang/aggbug/425154.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42921/" target="_blank">[新闻]调查显示：开源技术已进入企业主流</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>IIS运行asp程序出现The requested resource is in use 和 安装.net 2.0 后运行2.0程序出现  Failed to access IIS metabase 错误的解决</title><link>http://www.cnblogs.com/xiang/archive/2006/06/12/423496.html</link><dc:creator>e旋风</dc:creator><author>e旋风</author><pubDate>Sun, 11 Jun 2006 19:01:00 GMT</pubDate><guid>http://www.cnblogs.com/xiang/archive/2006/06/12/423496.html</guid><wfw:comment>http://www.cnblogs.com/xiang/comments/423496.html</wfw:comment><comments>http://www.cnblogs.com/xiang/archive/2006/06/12/423496.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/xiang/comments/commentRss/423496.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/xiang/services/trackbacks/423496.html</trackback:ping><description><![CDATA[<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 公司使用的FW还是使用.net 1.1的框架，考虑到自己没米买笔记本进行2.0下的开发，也趁着公司电脑的内存是1G ，不用则废，于是安装了一个 Vmware Workstation；没有系统安装光盘，便down了一个xp的光盘iso.不想这个iso不带IIS 的安装组件。郁闷了好久。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 没法子，下一个操作的ISO也挺辛苦的，便改下了一个IIS5 的压缩包。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;开始时，添加/删除windows 组件向导里都没有" Internet 信息服务 "这个选择项。按照网上高人的例子,把这个选项给揪了出来。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;方法是：进入C:\WINDOWS\INF\SYSOC.INF ,用记事本打开，在[COMPONENTS]下<BR>找到此行：<FONT color=#008000>iis=iis.dll,OcEntry,iis.inf,hide,7</FONT>&nbsp;&nbsp; 改为&nbsp;<FONT style="BACKGROUND-COLOR: #ff1493">&nbsp; iis=iis.dll,OcEntry,iis.inf,,7&nbsp; . <BR></FONT><FONT style="BACKGROUND-COLOR: #ffffff"></FONT>如果没有这行，直接加上即可&nbsp; ，保存。重新打开添加/删除windows 组件向导便会有这个选项。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后同正常的光盘安装IIS一样，选择IIS5压缩包的释放路径，进行安装。安装期间，系统可能会提示缺少一些dl_文件，可以使用系统的搜索功能搜索文件名，注意不要带后缀搜索。 像 .dl_&nbsp;&nbsp; .in_ 都是一些windows的压缩文件，安装向导可以自动从中提取。<BR>&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;经过漫长的安装，终于OK了。满以为大事已成，谁知随便运行一个asp程序都不能运行。系统提示 &nbsp;&nbsp;<STRONG> The requested resource is in use</STRONG>&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;折腾了无从下手，&nbsp;后来想到调试程序有调试日志，按这样的话，系统解析asp引擎出错应该在系统日志里也能够找到解决的线索。遂 运行 <FONT size=2>eventvwr&nbsp; ，调出时间查看器。果然，在 系统 分类下，找到了很多 错误。错误消息如下：</FONT></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;COM&nbsp;服务器应用程序(CLSID&nbsp;为&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>{A9E69610-B80D-11D0-B9B9-00A0C922E750}&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>)的&nbsp;本地&nbsp;激活&nbsp;权限授予用户&nbsp;IBM-D882681D063\IWAM_ZHANGYUXIANG&nbsp;SID&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>(S-</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">21</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1304240173</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">3011969147</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">3728014682</SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000">1013</SPAN><SPAN style="COLOR: #000000">)。可以使用组件服务管理工具修改此安全权限</SPAN></DIV>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;按照别人的提示，我打开 控制面板&gt;管理工具&gt;组件服务&gt;计算机&gt;我的电脑&gt;DCOM选项&nbsp;&nbsp;,找到 IIS ADMIN SERVICE 这个组件，右键点属性，在 安全&gt;启动和激活权限&nbsp;中选择 自定义。查看了下自定义 选项是否有 IWAM_ZHANGYUXIANG&nbsp;&nbsp;这个帐户。我看的是存在这个帐户，然后保存修改。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开IE，重新运行了该程序，发现OK。 解决！<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;后来我在此基础上安装了.net 2.0 framework ，运行2.0&nbsp;asp.net程序时，同样出现这样的问题&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"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">计算机-默认&n