<?xml version="1.0" encoding="GBK" ?>
<rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dcterms="http://purl.org/dc/terms/">
 <channel>
  	  <title><![CDATA[Web神话 IT传奇 人生征途]]></title>
	  <link>http://jkate.blog.163.com</link>
	  <description><![CDATA[～～ Web 时代 经典收录 珍品收藏 ～～ 不聪明的人,看到变化,聪明的人,适应变化,最聪明的人,引导变化！！]]></description>
	  <language>zh-CN</language>
	  <pubDate>Mon, 7 Jul 2008 11:35:00 +0800</pubDate>
	  <lastBuildDate>Mon, 7 Jul 2008 11:35:00 +0800</lastBuildDate>
	  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
	  <generator><![CDATA[NetEase Space]]></generator>
	  <managingEditor><![CDATA[jkate]]></managingEditor>
	  <webMaster><![CDATA[～～飞儿宝贝 ～～]]></webMaster>
		  <ttl>120</ttl>
	  <image>
	  	<title><![CDATA[Web神话 IT传奇 人生征途]]></title>
	  	<url>http://ava.blog.163.com/photo/qHmqfqYYLFuZ3eAQPb0HiA==/179299560164939027.jpg</url>
	  	<link>http://jkate.blog.163.com</link>
	  </image>
  <item>
  	<title><![CDATA[正则表达式 学习笔记1]]></title>	
    <link>http://jkate.blog.163.com/blog/static/26510062008659351648</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">[原创文章，转载请保留或注明出处：<A href="http://www.regexlab.com/zh/regref.htm">http://www.regexlab.com/zh/regref.htm</A>]</P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/download/?/deelx/deelx_zh.chm"><IMG src="http://www.regexlab.com/images/chm.gif" border=0> 点击下载 chm 版本</A>] - DEELX 正则语法，包含其他高级语法的 chm 版本。</P>
<P style="TEXT-INDENT: 2em">（注意：下载的 chm 版本适合用来查阅，而本文适合用来学习，建议继续阅读。）
</P><BLOCKQUOTE></BLOCKQUOTE>
<HR color=#fea089 SIZE=1>

<P></P>
<P style="TEXT-INDENT: 2em">1. 正则表达式规则</P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=c&amp;txt=abcde">举例1：表达式 "c"，在匹配字符串 "abcde" 时</A>，匹配结果是：成功；匹配到的内容是："c"；匹配到的位置是：开始于2，结束于3。（注：下标从0开始还是从1开始，因当前编程语言的不同而可能不同）</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=bcd&amp;txt=abcde">举例2：表达式 "bcd"，在匹配字符串 "abcde" 时</A>，匹配结果是：成功；匹配到的内容是："bcd"；匹配到的位置是：开始于1，结束于4。
</P><HR color=#fea089 SIZE=1>

<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=%5C$d&amp;txt=abc$de">举例1：表达式 "\$d"，在匹配字符串 "abc$de" 时</A>，匹配结果是：成功；匹配到的内容是："$d"；匹配到的位置是：开始于3，结束于5。
</P><HR color=#fea089 SIZE=1>

<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=%5Cd%5Cd&amp;txt=abc123">举例1：表达式 "\d\d"，在匹配 "abc123" 时</A>，匹配的结果是：成功；匹配到的内容是："12"；匹配到的位置是：开始于3，结束于5。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=a.%5Cd&amp;txt=aaa100">举例2：表达式 "a.\d"，在匹配 "aaa100" 时</A>，匹配的结果是：成功；匹配到的内容是："aa1"；匹配到的位置是：开始于1，结束于4。
</P><HR color=#fea089 SIZE=1>

<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=[bcd][bcd]&amp;txt=abc123">举例1：表达式 "[bcd][bcd]" 匹配 "abc123" 时</A>，匹配的结果是：成功；匹配到的内容是："bc"；匹配到的位置是：开始于1，结束于3。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%5B%5Eabc%5D&amp;txt=abc123">举例2：表达式 "[^abc]" 匹配 "abc123" 时</A>，匹配的结果是：成功；匹配到的内容是："1"；匹配到的位置是：开始于3，结束于4。
</P><HR color=#fea089 SIZE=1>

<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=w{2}&amp;txt=ab+c6">"\w{2}" 相当于 "\w\w"</A>；<A href="http://www.regexlab.com/zh/workshop.asp?pat=a{5}&amp;txt=bbaaaaaddee">"a{5}" 相当于 "aaaaa"</A></TD></TR><TR><TD></TD></TR></P>
<P style="TEXT-INDENT: 2em">{m,n}</TD><TD></TD></P>
<P style="TEXT-INDENT: 2em">表达式至少重复m次，最多重复n次，比如：<A href="http://www.regexlab.com/zh/workshop.asp?pat=ba{1,3}&amp;txt=a,baaa,baa,b,ba">"ba{1,3}"可以匹配 "ba"或"baa"或"baaa"</A></TD></TR><TR><TD></TD></TR></P>
<P style="TEXT-INDENT: 2em">{m,}</TD><TD></TD></P>
<P style="TEXT-INDENT: 2em">表达式至少重复m次，比如：<A href="http://www.regexlab.com/zh/workshop.asp?pat=wd{2,}&amp;txt=b1,a12,_456,_4AA,M12344,12346546547446534543543">"\w\d{2,}"可以匹配 "a12","_456","M12344"...</A></TD></TR><TR><TD></TD></TR></P>
<P style="TEXT-INDENT: 2em">?</TD><TD></TD></P>
<P style="TEXT-INDENT: 2em">匹配表达式0次或者1次，相当于 {0,1}，比如：<A href="http://www.regexlab.com/zh/workshop.asp?pat=a[cd]%3F&amp;txt=a,c,d,ac,ad">"a[cd]?"可以匹配 "a","ac","ad"</A></TD></TR><TR><TD></TD></TR></P>
<P style="TEXT-INDENT: 2em">+</TD><TD></TD></P>
<P style="TEXT-INDENT: 2em">表达式至少出现1次，相当于 {1,}，比如：<A href="http://www.regexlab.com/zh/workshop.asp?pat=a%2Bb&amp;txt=a%2Cb%2Cab%2Caab%2Caaab">"a+b"可以匹配 "ab","aab","aaab"...</A></TD></TR><TR><TD></TD></TR></P>
<P style="TEXT-INDENT: 2em">*</TD><TD></TD></P>
<P style="TEXT-INDENT: 2em">表达式不出现或出现任意次，相当于 {0,}，比如：<A href="http://www.regexlab.com/zh/workshop.asp?pat=%5C%5E*b&amp;txt=%5E%2Cb%2C%5E%5E%5Eb%2C%5E%5E%5E%5E%5E%5E%5Eb">"\^*b"可以匹配 "b","^^^b"...</A></TD></TR></TBODY></TABLE></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%5Cd%2B%5C.%3F%5Cd*&amp;txt=It%20costs%20%2412.5">举例1：表达式 "\d+\.?\d*" 在匹配 "It costs $12.5" 时</A>，匹配的结果是：成功；匹配到的内容是："12.5"；匹配到的位置是：开始于10，结束于14。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=go{2,8}gle&amp;txt=Ads%20by%20goooooogle%2C%20or%20gooogle">举例2：表达式 "go{2,8}gle" 在匹配 "Ads by goooooogle" 时</A>，匹配的结果是：成功；匹配到的内容是："goooooogle"；匹配到的位置是：开始于7，结束于17。
</P><HR color=#fea089 SIZE=1>

<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=^aaa&amp;txt=xxx+aaa+xxx">举例1：表达式 "^aaa" 在匹配 "xxx aaa xxx" 时</A>，匹配结果是：失败。因为 "^" 要求与字符串开始的地方匹配，因此，只有当 "aaa" 位于字符串的开头的时候，"^aaa" 才能匹配，<A href="http://www.regexlab.com/zh/workshop.asp?pat=^aaa&amp;txt=aaa+xxx+xxx">比如："aaa xxx xxx"</A>。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=aaa$&amp;txt=xxx+aaa+xxx">举例2：表达式 "aaa$" 在匹配 "xxx aaa xxx" 时</A>，匹配结果是：失败。因为 "$" 要求与字符串结束的地方匹配，因此，只有当 "aaa" 位于字符串的结尾的时候，"aaa$" 才能匹配，<A href="http://www.regexlab.com/zh/workshop.asp?pat=aaa$&amp;txt=xxx+xxx+aaa">比如："xxx xxx aaa"</A>。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=.%5Cb.&amp;txt=@@@abc">举例3：表达式 ".\b." 在匹配 "@@@abc" 时</A>，匹配结果是：成功；匹配到的内容是："@a"；匹配到的位置是：开始于2，结束于4。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 进一步说明："\b" 与 "^" 和 "$" 类似，本身不匹配任何字符，但是它要求它在匹配结果中所处位置的左右两边，其中一边是 "\w" 范围，另一边是 非"\w" 的范围。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%5Cbend%5Cb&amp;txt=weekend,endfor,end">举例4：表达式 "\bend\b" 在匹配 "weekend,endfor,end" 时</A>，匹配结果是：成功；匹配到的内容是："end"；匹配到的位置是：开始于15，结束于18。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 一些符号可以影响表达式内部的子表达式之间的关系：
<TABLE cellSpacing=0 cellPadding=3 bgColor=#f8f8f8 border=1>
<TBODY>
<TR bgColor=#f0f0f0>
<TD width=65>
<P></P>
<P style="TEXT-INDENT: 2em">表达式</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">作用</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">|</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">左右两边表达式之间 "或" 关系，匹配左边或者右边</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">( )</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">(1). 在被修饰匹配次数的时候，括号中的表达式可以作为整体被修饰</P>
<P style="TEXT-INDENT: 2em">(2). 取匹配结果的时候，括号中的表达式匹配到的内容可以被单独得到</P></TD></TR></TBODY></TABLE></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=Tom%7CJack&amp;txt=I%27m+Tom%2C+he+is+Jack">举例5：表达式 "Tom|Jack" 在匹配字符串 "I'm Tom, he is Jack" 时</A>，匹配结果是：成功；匹配到的内容是："Tom"；匹配到的位置是：开始于4，结束于7。匹配下一个时，匹配结果是：成功；匹配到的内容是："Jack"；匹配到的位置时：开始于15，结束于19。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%28go%5Cs*%29%2B&amp;txt=Let%27s%20go%20go%20go%21">举例6：表达式 "(go\s*)+" 在匹配 "Let's go go go!" 时</A>，匹配结果是：成功；匹配到内容是："go go go"；匹配到的位置是：开始于6，结束于14。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%uFFE5%28%5Cd%2B%5C.%3F%5Cd*%29&amp;txt=%uFF0410.9%2C%uFFE520.5">举例7：表达式 "￥(\d+\.?\d*)" 在匹配 "＄10.9,￥20.5" 时</A>，匹配的结果是：成功；匹配到的内容是："￥20.5"；匹配到的位置是：开始于6，结束于10。单独获取括号范围匹配到的内容是："20.5"。
</P><HR color=#fea089 SIZE=1>

<P></P>
<P style="TEXT-INDENT: 2em">2. 正则表达式中的一些高级规则</P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=(d)(%5Cw%2B)&amp;txt=dxxxdxxxd">(d)(\w+)</A></TD><TD></TD></P>
<P style="TEXT-INDENT: 2em">"\w+" 将匹配第一个 "d" 之后的所有字符 "xxxdxxxd"</TD></TR><TR><TD></TD></TR></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=(d)(%5Cw%2B)(d)&amp;txt=dxxxdxxxd">(d)(\w+)(d)</A></TD><TD></TD></P>
<P style="TEXT-INDENT: 2em">"\w+" 将匹配第一个 "d" 和最后一个 "d" 之间的所有字符 "xxxdxxx"。虽然 "\w+" 也能够匹配上最后一个 "d"，但是为了使整个表达式匹配成功，"\w+" 可以 "让出" 它本来能够匹配的最后一个 "d"</TD></TR></TBODY></TABLE></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 由此可见，"\w+" 在匹配的时候，总是尽可能多的匹配符合它规则的字符。虽然第二个举例中，它没有匹配最后一个 "d"，但那也是为了让整个表达式能够匹配成功。同理，带 "*" 和 "{m,n}" 的表达式都是尽可能地多匹配，带 "?" 的表达式在可匹配可不匹配的时候，也是尽可能的 "要匹配"。这 种匹配原则就叫作 "贪婪" 模式 。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 非贪婪模式：</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 在修饰匹配次数的特殊符号后再加上一个 "?" 号，则可以使匹配次数不定的表达式尽可能少的匹配，使可匹配可不匹配的表达式，尽可能的 "不匹配"。这种匹配原则叫作 "非贪婪" 模式，也叫作 "勉强" 模式。如果少匹配就会导致整个表达式匹配失败的时候，与贪婪模式类似，非贪婪模式会最小限度的再匹配一些，以使整个表达式匹配成功。举例如下，针对文本 "dxxxdxxxd" 举例：
<TABLE cellSpacing=0 cellPadding=3 bgColor=#f8f8f8 border=1>
<TBODY>
<TR bgColor=#f0f0f0>
<TD width=93>
<P></P>
<P style="TEXT-INDENT: 2em">表达式</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">匹配结果</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=(d)(%5Cw%2B%3F)&amp;txt=dxxxdxxxd">(d)(\w+?)</A></P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">"\w+?" 将尽可能少的匹配第一个 "d" 之后的字符，结果是："\w+?" 只匹配了一个 "x"</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=(d)(%5Cw%2B%3F)(d)&amp;txt=dxxxdxxxd">(d)(\w+?)(d)</A></P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">为了让整个表达式匹配成功，"\w+?" 不得不匹配 "xxx" 才可以让后边的 "d" 匹配，从而使整个表达式匹配成功。因此，结果是："\w+?" 匹配 "xxx"</P></TD></TR></TBODY></TABLE></P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 更多的情况，举例如下：</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%3Ctd%3E%28%2E%2A%29%3C%2Ftd%3E&amp;txt=%3Ctd%3E%3Cp%3Eaa%3C%2Fp%3E%3C%2Ftd%3E%3Ctd%3E%3Cp%3Ebb%3C%2Fp%3E%3C%2Ftd%3E">举例1：表达式 "&lt;td&gt;(.*)&lt;/td&gt;" 与字符串 "&lt;td&gt;&lt;p&gt;aa&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;bb&lt;/p&gt;&lt;/td&gt;" 匹配时</A>，匹配的结果是：成功；匹配到的内容是 "&lt;td&gt;&lt;p&gt;aa&lt;/p&gt;&lt;/td&gt; &lt;td&gt;&lt;p&gt;bb&lt;/p&gt;&lt;/td&gt;" 整个字符串， 表达式中的 "&lt;/td&gt;" 将与字符串中最后一个 "&lt;/td&gt;" 匹配。 </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%3Ctd%3E%28%2E%2A%3F%29%3C%2Ftd%3E&amp;txt=%3Ctd%3E%3Cp%3Eaa%3C%2Fp%3E%3C%2Ftd%3E%3Ctd%3E%3Cp%3Ebb%3C%2Fp%3E%3C%2Ftd%3E">举例2：相比之下，表达式 "&lt;td&gt;(.*?)&lt;/td&gt;" 匹配举例1中同样的字符串时</A>，将只得到 "&lt;td&gt;&lt;p&gt;aa&lt;/p&gt;&lt;/td&gt;"， 再次匹配下一个时，可以得到第二个 "&lt;td&gt;&lt;p&gt;bb&lt;/p&gt;&lt;/td&gt;"。
</P><HR color=#fea089 SIZE=1>

<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=%28%27%7C%22%29%28%2E%2A%3F%29%28%5C1%29&amp;txt=%27Hello%27%2C+%22World%22">举例1：表达式 "('|")(.*?)(\1)" 在匹配 " 'Hello', "World" " 时</A>，匹配结果是：成功；匹配到的内容是：" 'Hello' "。再次匹配下一个时，可以匹配到 " "World" "。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%28%5Cw%29%5C1%7B4%2C%7D&amp;txt=aa%20bbbb%20abcdefg%20ccccc%20111121111%20999999999">举例2：表达式 "(\w)\1{4,}" 在匹配 "aa bbbb abcdefg ccccc 111121111 999999999" 时</A>，匹配结果是：成功；匹配到的内容是 "ccccc"。再次匹配下一个时，将得到 999999999。这个表达式要求 "\w" 范围的字符至少重复5次，<A href="http://www.regexlab.com/zh/workshop.asp?pat=%5Cw%7B5%2C%7D&amp;txt=aa%20bbbb%20abcdefg%20ccccc%20111121111%20999999999">注意与 "\w{5,}" 之间的区别</A>。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%3C%28%5Cw%2B%29%5Cs%2A%28%5Cw%2B%28%3D%28%27%7C%22%29%2E%2A%3F%5C4%29%3F%5Cs%2A%29%2A%3E%2E%2A%3F%3C%2F%5C1%3E&amp;txt=%3Ctd+id%3D%27td1%27+style%3D%22bgcolor%3Awhite%22%3E%3C%2Ftd%3E%0D%0A%3Cbody+onload%3D%22doit%28%29%22%3E%3C%2Fbody%3E">举例3：表达式 "&lt;(\w+)\s*(\w+(=('|").*?\4)?\s*)*&gt;.*?&lt;/\1&gt;" 在匹配 "&lt;td id='td1' style="bgcolor:white"&gt;&lt;/td&gt;" 时</A>，匹配结果是成功。如果 "&lt;td&gt;" 与 "&lt;/td&gt;" 不配对，则会匹配失败；如果改成其他配对，也可以匹配成功。
</P><HR color=#fea089 SIZE=1>

<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=Windows+%28%3F%3DNT%7CXP%29&amp;txt=Windows+98%2C+Windows+NT%2C+Windows+2000">举例1：表达式 "Windows (?=NT|XP)" 在匹配 "Windows 98, Windows NT, Windows 2000" 时</A>，将只匹配 "Windows NT" 中的 "Windows "，其他的 "Windows " 字样则不被匹配。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%28%5Cw%29%28%28%3F%3D%5C1%5C1%5C1%29%28%5C1%29%29%2B&amp;txt=aaa+ffffff+999999999">举例2：表达式 "(\w)((?=\1\1\1)(\1))+" 在匹配字符串 "aaa ffffff 999999999" 时</A>，将可以匹配6个"f"的前4个，可以匹配9个"9"的前7个。这个表达式可以读解成：重复4次以上的字母数字，则匹配其剩下最后2位之前的部分。当然，这个表达式可以不这样写，在此的目的是作为演示之用。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 格式："(?!xxxxx)"，所在缝隙的右侧，必须不能匹配 xxxxx 这部分表达式。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%28%28%3F%21%5Cbstop%5Cb%29%2E%29%2B&amp;txt=fdjka+ljfdl+stop+fjdsla+fdj">举例3：表达式 "((?!\bstop\b).)+" 在匹配 "fdjka ljfdl stop fjdsla fdj" 时</A>，将从头一直匹配到 "stop" 之前的位置，如果字符串中没有 "stop"，则匹配整个字符串。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=do%28%3F%21%5Cw%29&amp;txt=done%2C+do%2C+dog">举例4：表达式 "do(?!\w)" 在匹配字符串 "done, do, dog" 时</A>，只能匹配 "do"。在本条举例中，"do" 后边使用 "(?!\w)" 和使用 "\b" 效果是一样的。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 反向预搜索："(?&lt;=xxxxx)"，"(?&lt;!xxxxx)"</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 这两种格式的概念和正向预搜索是类似的，反向预搜索要求的条件是：所在缝隙的 "左侧"，两种格式分别要求必须能够匹配和必须不能够匹配指定表达式，而不是去判断右侧。与 "正向预搜索" 一样的是：它们都是对所在缝隙的一种附加条件，本身都不匹配任何字符。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 举例5：表达式 "(?&lt;=\d{4})\d+(?=\d{4})" 在匹配 "1234567890123456" 时，将匹配除了前4个数字和后4个数字之外的中间8个数字。由于 JScript.RegExp 不支持反向预搜索，因此，本条举例不能够进行演示。很多其他的引擎可以支持反向预搜索，比如：Java 1.4 以上的 java.util.regex 包，.NET 中System.Text.RegularExpressions 命名空间，以及本站推荐的<A href="http://www.regexlab.com/zh/deelx/">最简单易用的 DEELX 正则引擎</A>。
</P><HR color=#fea089 SIZE=1>

<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=%5Cx20&amp;txt=It+is%2E">空格可以使用 "\x20" 表示</A></TD></TR><TR><TD></TD></TR></P>
<P style="TEXT-INDENT: 2em">\uXXXX</TD><TD></TD></P>
<P style="TEXT-INDENT: 2em">任何字符可以使用 "\u" 再加上其编号的4位十六进制数表示，比如：<A href="http://www.regexlab.com/zh/workshop.asp?pat=%5Cu4E2D&amp;txt=%D6%D0%B9%FA">"\u4E2D"</A></TD></TR></TBODY></TABLE></P>
<P style="TEXT-INDENT: 2em">3.2 在表达式 "\s"，"\d"，"\w"，"\b" 表示特殊意义的同时，对应的大写字母表示相反的意义
<TABLE cellSpacing=0 cellPadding=3 bgColor=#f8f8f8 border=1>
<TBODY>
<TR bgColor=#f0f0f0>
<TD width=55>
<P></P>
<P style="TEXT-INDENT: 2em">表达式</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">可匹配</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">\S</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=%5CS%2B&amp;txt=abc+123+%40%23%24%25">匹配所有非空白字符（"\s" 可匹配各个空白字符）</A></P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">\D</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=%5CD%2B&amp;txt=abc+123+%40%23%24%25">匹配所有的非数字字符</A></P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">\W</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=%5CW%2B&amp;txt=abc+123+%40%23%24%25">匹配所有的字母、数字、下划线以外的字符</A></P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">\B</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/workshop.asp?pat=%5CB%2E%5CB&amp;txt=abc+123+%40%23%24%25">匹配非单词边界，即左右两边都是 "\w" 范围或者左右两边都不是 "\w" 范围时的字符缝隙</A></P></TD></TR></TBODY></TABLE></P>
<P style="TEXT-INDENT: 2em">3.3 在表达式中有特殊意义，需要添加 "\" 才能匹配该字符本身的字符汇总
<TABLE cellSpacing=0 cellPadding=3 bgColor=#f8f8f8 border=1>
<TBODY>
<TR bgColor=#f0f0f0>
<TD width=55>
<P></P>
<P style="TEXT-INDENT: 2em">字符</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">说明</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">^</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">匹配输入字符串的开始位置。要匹配 "^" 字符本身，请使用 "\^"</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">$</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">匹配输入字符串的结尾位置。要匹配 "$" 字符本身，请使用 "\$"</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">( )</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">标记一个子表达式的开始和结束位置。要匹配小括号，请使用 "\(" 和 "\)"</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">[ ]</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">用来自定义能够匹配 '多种字符' 的表达式。要匹配中括号，请使用 "\[" 和 "\]"</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">{ }</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">修饰匹配次数的符号。要匹配大括号，请使用 "\{" 和 "\}"</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">.</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">匹配除了换行符（\n）以外的任意一个字符。要匹配小数点本身，请使用 "\."</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">?</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">修饰匹配次数为 0 次或 1 次。要匹配 "?" 字符本身，请使用 "\?"</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">+</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">修饰匹配次数为至少 1 次。要匹配 "+" 字符本身，请使用 "\+"</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">*</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">修饰匹配次数为 0 次或任意次。要匹配 "*" 字符本身，请使用 "\*"</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">|</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">左右两边表达式之间 "或" 关系。匹配 "|" 本身，请使用 "\|"</P></TD></TR></TBODY></TABLE></P>
<P style="TEXT-INDENT: 2em">3.4 括号 "( )" 内的子表达式，如果希望匹配结果不进行记录供以后使用，可以使用 "(?:xxxxx)" 格式</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; <A href="http://www.regexlab.com/zh/workshop.asp?pat=%28%3F%3A%28%5Cw%29%5C1%29%2B&amp;txt=a bbccdd efg">举例1：表达式 "(?:(\w)\1)+" 匹配 "a bbccdd efg" 时</A>，结果是 "bbccdd"。括号 "(?:)" 范围的匹配结果不进行记录，因此 "(\w)" 使用 "\1" 来引用。</P>
<P style="TEXT-INDENT: 2em">3.5 常用的表达式属性设置简介：Ignorecase，Singleline，Multiline，Global
<TABLE cellSpacing=0 cellPadding=3 bgColor=#f8f8f8 border=1>
<TBODY>
<TR bgColor=#f0f0f0>
<TD width=80>
<P></P>
<P style="TEXT-INDENT: 2em">表达式属性</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">说明</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">Ignorecase</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">默认情况下，表达式中的字母是要区分大小写的。配置为 Ignorecase 可使匹配时不区分大小写。有的表达式引擎，把 "大小写" 概念延伸至 UNICODE 范围的大小写。</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">Singleline</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">默认情况下，小数点 "." 匹配除了换行符（\n）以外的字符。配置为 Singleline 可使小数点可匹配包括换行符在内的所有字符。</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">Multiline</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">默认情况下，表达式 "^" 和 "$" 只匹配字符串的开始 ① 和结尾 ④ 位置。如：</P>
<P style="TEXT-INDENT: 2em">①xxxxxxxxx②\n</P>
<P style="TEXT-INDENT: 2em">③xxxxxxxxx④</P>
<P style="TEXT-INDENT: 2em">配置为 Multiline 可以使 "^" 匹配 ① 外，还可以匹配换行符之后，下一行开始前 ③ 的位置，使 "$" 匹配 ④ 外，还可以匹配换行符之前，一行结束 ② 的位置。</P></TD></TR>
<TR>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">Global</P></TD>
<TD>
<P></P>
<P style="TEXT-INDENT: 2em">主要在将表达式用来替换时起作用，配置为 Global 表示替换所有的匹配。</P></TD></TR></TBODY></TABLE></P>
<P style="TEXT-INDENT: 2em">
</P><HR color=#fea089 SIZE=1>

<P></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.regexlab.com/zh/deelx/syntax.htm">本站 DEELX 正则引擎的说明文档</A>。</P>
<P style="TEXT-INDENT: 2em">4.2 如果要要求表达式所匹配的内容是整个字符串，而不是从字符串中找一部分，那么可以在表达式的首尾使用 "^" 和 "$"，比如："^\d+$" 要求整个字符串只有数字。</P>
<P style="TEXT-INDENT: 2em">4.3 如果要求匹配的内容是一个完整的单词，而不会是单词的一部分，那么在表达式首尾使用 "\b"，比如：<A href="http://www.regexlab.com/zh/workshop.asp?pat=%5Cb%28if%7Cwhile%7Celse%7Cvoid%7Cint%29%5Cb&amp;txt=if%28ifdo%29%0D%0A++++dosome%28%29%3B%0D%0Aelse%0D%0A++++doelse%28%29%3B">使用 "\b(if|while|else|void|int……)\b" 来匹配程序中的关键字</A>。</P>
<P style="TEXT-INDENT: 2em">4.4 表达式不要匹配空字符串。否则会一直得到匹配成功，而结果什么都没有匹配到。比如：准备写一个匹配 "123"、"123."、"123.5"、".5" 这几种形式的表达式时，整数、小数点、小数数字都可以省略，但是不要将表达式写成："\d*\.?\d*"，因为如果什么都没有，这个表达式也可以匹配成功。<A href="http://www.regexlab.com/zh/workshop.asp?pat=%5Cd%2B%5C%2E%3F%5Cd%2A%7C%5C%2E%5Cd%2B&amp;txt=123%2C+123%2E%2C+123%2E5%2C+%2E5%2C+%2E">更好的写法是："\d+\.?\d*|\.\d+"</A>。</P>
<P style="TEXT-INDENT: 2em">4.5 能匹配空字符串的子匹配不要循环无限次。如果括号内的子表达式中的每一部分都可以匹配 0 次，而这个括号整体又可以匹配无限次，那么情况可能比上一条所说的更严重，匹配过程中可能死循环。虽然现在有些正则表达式引擎已经通过办法避免了这种情况出现死循环了，比如 .NET 的正则表达式，但是我们仍然应该尽量避免出现这种情况。如果我们在写表达式时遇到了死循环，也可以从这一点入手，查找一下是否是本条所说的原因。</P>
<P style="TEXT-INDENT: 2em">4.6 合理选择贪婪模式与非贪婪模式，参见<A href="http://www.regexlab.com/zh/regtopic.htm#reluctant">话题讨论</A>。</P>
<P style="TEXT-INDENT: 2em">4.7 或 "|" 的左右两边，对某个字符最好只有一边可以匹配，这样，不会因为 "|" 两边的表达式因为交换位置而有所不同。
</P><HR color=#fea089 SIZE=1></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/26510062008659351648</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/26510062008659351648</guid>
    <pubDate>Sat, 5 Jul 2008 21:35:16 +0800</pubDate>
    <dcterms:modified>2008-07-05T21:35:16+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[从网页抓取数据的一般方法]]></title>	
    <link>http://jkate.blog.163.com/blog/static/2651006200862101055971</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">首先要了解对方网页的运行机制&nbsp;，这可以用httpwacth或者httplook来看一下http发送和接收的数据。这两个工具应该说是比较简单易懂的。这里就不再介绍了。主要关注的内容是header和post的内容。一般会包括cookie，Referer页面和其他一些乱其八糟可能看不懂的变量，还有就是正常交互的参数，比如需要post或者get的querystring所包含的东西。</P>
<P style="TEXT-INDENT: 2em">httplook和httpwacth网上有很多下载的，这里推荐使用httpwach，因为可以直接嵌入到ie中，个人觉得这个比较好用。这两个工具可以到我上传在csdn的资源中下载，地址为</P>
<P style="TEXT-INDENT: 2em"><A href="http://download.csdn.net/user/jinjazz">http://download.csdn.net/user/jinjazz</A></P>
<P style="TEXT-INDENT: 2em">这里简单给出一段可以抓取数据的c#代码，比如登录某个网站，获取登录成功后的html代码，供数据分析使用。</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" border=0>private&nbsp;void&nbsp;login()</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockStart.gif" border=0><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ContractedBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...{</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Net.WebClient&nbsp;wb&nbsp;=&nbsp;new&nbsp;System.Net.WebClient();</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Collections.Specialized.NameValueCollection&nbsp;header&nbsp;=&nbsp;new&nbsp;System.Collections.Specialized.NameValueCollection();</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header.Add("Cookie",&nbsp;"czJ_cookietime=2592000;&nbsp;czJ_onlineusernum=1651;&nbsp;czJ_sid=w4bGJd");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;header.Add("Referer",&nbsp;@"http://www.test_by_jinjazz.com.cn/bbs/login.php");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wb.Headers.Add(header);</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Collections.Specialized.NameValueCollection&nbsp;data&nbsp;=&nbsp;new&nbsp;System.Collections.Specialized.NameValueCollection();</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.Add("formhash",&nbsp;"ebd2faac");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.Add("referer",&nbsp;"http://www.test_by_jinjazz.com.cn/bbs/search.php");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.Add("loginfield",&nbsp;"username");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.Add("username",&nbsp;"jinjazz");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.Add("password",&nbsp;"999");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.Add("questionid",&nbsp;"0");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.Add("answer",&nbsp;"");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.Add("cookietime",&nbsp;"2592000");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.Add("loginmode",&nbsp;"");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.Add("styleid",&nbsp;"");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data.Add("loginsubmit",&nbsp;"提交");</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte[]&nbsp;b&nbsp;=&nbsp;wb.UploadValues("http://www.test_by_jinjazz.com.cn/bbs/login.php",&nbsp;"Post",&nbsp;data);</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;strData&nbsp;=&nbsp;System.Text.Encoding.Default.GetString(b);</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/InBlock.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(strData);</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/ExpandedBlockEnd.gif" border=0>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" border=0></P>
<P style="TEXT-INDENT: 2em">以上代码除了三个url之外其他数据都是真实的，其中header和data中的参数和值都是用httpwatch来监测后得到。</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/2651006200862101055971</comments>
    <slash:comments>1</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/2651006200862101055971</guid>
    <pubDate>Wed, 2 Jul 2008 10:10:55 +0800</pubDate>
    <dcterms:modified>2008-07-02T10:10:55+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[在Web站点中创建和使用Rss源 (转载) ]]></title>	
    <link>http://jkate.blog.163.com/blog/static/265100620085249374824</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">主要参考： </P>
<P style="TEXT-INDENT: 2em"><A href="http://www.dotnetbips.com/articles/f7752830-e39d-46b8-8adf-23c715d442bc.aspx">Creating Rss Feeds For Your Web Site</A></P>
<P style="TEXT-INDENT: 2em"><A href="http://www.dotnetbips.com/articles/4e08e0ff-e933-42b0-87c9-d85f2e17a14e.aspx">Consuming Rss Feeds On Your Web Site</A></P>
<P style="TEXT-INDENT: 2em">术语表</P>
<P style="TEXT-INDENT: 2em">tag：标签</P>
<P style="TEXT-INDENT: 2em">markup：标记</P>
<P style="TEXT-INDENT: 2em">node：结点</P>
<P style="TEXT-INDENT: 2em">item：条目</P>
<P style="TEXT-INDENT: 2em">entry：入口</P>
<P style="TEXT-INDENT: 2em">Rss Reed：Rss 源</P>
<P style="TEXT-INDENT: 2em">介绍</P>
<P style="TEXT-INDENT: 2em">Rss是将你Web站点的内容与其他人分享的标准方式。Rss代表着：Really Simple Syndication。它不过是一个标准化的XML标记，用于描述你想要分享的内容。因此Rss是一个在你的内容准备好被其他用户所消费时被广泛接受的格式。一些使用Rss的范例站点有：<A href="http://www.asp.net/">www.asp.net</A>、<A href="http://www.cnblogs.com/JimmyZhang/admin/weblogs.asp.net">weblogs.asp.net</A> 和 <A href="http://www.dotnetbips.com/">www.dotnetbips.com</A> 。Dotnetbips.com 通过 Rss 发布新添内容的列表，这个列表可能会被其他的站长放置在他们的站点或目录中。</P>
<P style="TEXT-INDENT: 2em">Rss的格式</P>
<P style="TEXT-INDENT: 2em">如同我之前提到的，Rss不过是有着一些特殊标签的XML标记。下面的标记展示了这样一个文档：</P>
<P style="TEXT-INDENT: 2em">&lt;rss version="2.0"&gt;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;channel&gt;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;title&gt;DotNetBips.com Latest Articles&lt;/title&gt; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;link&gt;www.dotnetbips.com&lt;/link&gt; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;description&gt;DotNetBips.com Latest Articles&lt;/description&gt; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;copyright&gt;Copyright (C) DotNetBips.com. All rights reserved.&lt;/copyright&gt; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;generator&gt;www.dotnetbips.com RSS Generator&lt;/generator&gt; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;item&gt;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;author&gt;Bipin Joshi&lt;/author&gt;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;title&gt;Using WebRequest and WebResponse&lt;/title&gt; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;link&gt;http://www.dotnetbips.com/displayarticle.aspx?id=239&lt;/link&gt; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;description&gt;Description here&lt;/description&gt; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;pubDate&gt;Sun, 25 Jan 2004 12:00:00 AM GMT&lt;/pubDate&gt; </P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;/item&gt;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;/channel&gt;</P>
<P style="TEXT-INDENT: 2em">&lt;/rss&gt;</P>
<P style="TEXT-INDENT: 2em">让我们仔细看看每一个标记：</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;rss&gt;：根结点，拥有一个version(版本)属性，最新版本是 2.0 </P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;channel&gt;：rss下的根结点，可以再次包含&lt;channel&gt;结点。&lt;channel&gt;结点可以进一步包含&lt;title&gt;,&lt;link&gt;,&lt;item&gt;结点。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;：代表Rss源的标题。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;link&gt;：代表着提供Rss源的站点的URL。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;：关于这个Rss源的更多详细信息。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;copyright&gt;：详细说明版权信息。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;generator&gt;：说明产生这个Rss源的应用程序。</P>
<P style="TEXT-INDENT: 2em">除了上面的这些标签，还可以有一个或多个&lt;item&gt;标签。Item标签代表着你想要分享的实际条目。比如，文章、博客入口。每个&lt;item&gt;标记进一步包含下面这些子结点。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;title&gt;：代表着这个条目的标题。比如：文章标题。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;author&gt;：代表着这个条目的作者。比如：文章作者。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;link&gt;：代表这个条目的URL。比如：文章的URL。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;description&gt;：包含着这个条目的描述信息。比如：文章的摘要。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;pubDate&gt;：这个标签包含着这个条目的发布日期。典型的日期格式是：Sun 28 Dec 2003 12:00:00 AM GMT.</P>
<P style="TEXT-INDENT: 2em">采用的方法</P>
<P style="TEXT-INDENT: 2em">OK，我们已经对Rss的格式做了了解，但是如何使用.Net生成Rss源？.Net有许多XML相关的类。我们将从这些类中使用XML Text Writer来生成 Rss源。但是我们应该开发出一个通用的解决方案以便在任何的web站点中都可以使用。这就意味着我们的代码必须独立于特定的数据库领域或者表。为了达到这个目的，我们将要在VS.NET中创建一个类库。我们Rss的&lt;item&gt;标记的数据源将采用一个Dataset，这个Dataset通常填充自数据库表。这个类将有下面的属性和方法。</P>
<P style="TEXT-INDENT: 2em">属性</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Outputstream：一个源所投递到的stream对象。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RssTitle：代表&lt;channel&gt;标签下的&lt;title&gt;的特定值。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PublisherUrl：代表&lt;channel&gt;标签下的&lt;link&gt;标签。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Description：代表&lt;channel&gt;标签下的&lt;description&gt;值。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Copyright：代表&lt;channel&gt;标签下的&lt;copyright&gt;值。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Generator：代表&lt;channel&gt;标签下的&lt;generator&gt;值。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ItemSource：指定一个包含着item行的Dataset对象。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ItemTitleField：数据列，代表&lt;item&gt;标签下的&lt;title&gt;标签</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ItemUrlField：数据列，代表&lt;item&gt;标签下的&lt;link&gt;标签。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ItemDescriptionField：数据列，代表&lt;item&gt;标签下的&lt;description&gt;标签。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ItemPublicationDateFiled：数据列，代表&lt;item&gt;标签下的&lt;pubDate&gt;标签。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ItemAuthor：数据列，代表&lt;item&gt;标签下的&lt;author&gt;标签。</P>
<P style="TEXT-INDENT: 2em">方法</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PublishRss：这个静态方法将Rss标记写入到outputstream(输出流)中。</P>
<P style="TEXT-INDENT: 2em">下面列出的是上面这些属性和方法的完整程序清单。为了简单和快速地作个示范，我使用了公用字段，而没有使用属性。在实际的应用程序中，应该使用属性。</P>
<P style="TEXT-INDENT: 2em">using System;</P>
<P style="TEXT-INDENT: 2em">using System.IO;</P>
<P style="TEXT-INDENT: 2em">using System.Data;</P>
<P style="TEXT-INDENT: 2em">using System.Xml;</P>
<P style="TEXT-INDENT: 2em">using System.Collections.Generic;</P>
<P style="TEXT-INDENT: 2em">using System.Text;</P>
<P style="TEXT-INDENT: 2em">public class Rss {</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public Stream OutputStream;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public string RssTitle;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public string PublisherUrl;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public string Description;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public string Copyright;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public string Generator;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public DataSet ItemSource;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public string ItemTitleField;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public string ItemUrlField;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public string ItemDescriptionField;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public string ItemPublicationDateField;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public string ItemAuthor;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public static void PublishRss(Rss r){</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XmlTextWriter writer = new XmlTextWriter(r.OutputStream, Encoding.UTF8);</P>
<P style="TEXT-INDENT: 2em">writer.WriteStartDocument();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteStartElement("rss");</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteAttributeString("version", "2.0");</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteStartElement("channel");</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString("title", r.RssTitle);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString("link", r.PublisherUrl);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString("description", r.Description);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString("copyright", r.Copyright);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString("generator", r.Generator);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (DataRow row in r.ItemSource.Tables[0].Rows) {</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteStartElement("item");</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; writer.WriteElementString("author", row[r.ItemAuthor].ToString());</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString("title", row[r.ItemTitleField].ToString());</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString("link", row[r.ItemUrlField].ToString());</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString("description", row[r.ItemDescriptionField].ToString());</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteElementString("pubDate", Convert.ToDateTime(row[r.ItemPublicationDateField]).ToString("dd MMM yyyy hh:mm:00 "));</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteEndElement();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteEndElement();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteEndElement();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.Flush();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; }</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">NOTE：这里pubDate的日期格式很重要，当你按上面的代码对pubDate进行格式转换的时候，假如数据库中是 2007-9-14 9:58，那么在英文操作系统下，会转换成 “14 Sep 2007 9:58”,这个是没有问题的。但在中文操作系统下，就变成了 “14 九月 2007 9:58”。导致的结果就是在IE7中点开rss源的时候，发现日期没有显示。如果你不进行数据格式转换，简单的使用一个 ToString()，结果仍是如此。这里，我是写了一个方法，对它进行了格式转换：</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; // ... 省略 ...</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; writer.WriteElementString("pubDate", GetRssDate(row[r.ItemPublicationDateField]));</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; // ... 省略 ...</P>
<P style="TEXT-INDENT: 2em">public static string GetRssDate(Object date) {</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DateTime rssDate = Convert.ToDateTime(date);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string[] monthName = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringBuilder sb = new StringBuilder();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.Append(rssDate.Day);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.Append(" ");</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.Append(monthName[Convert.ToInt32(rssDate.Month) - 1]);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.Append(" ");</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.Append(rssDate.Year);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.Append(" ");</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sb.Append(rssDate.ToLongTimeString());</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return sb.ToString();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; }</P>
<P style="TEXT-INDENT: 2em">我看到ToString()有一个重载了的方法，接受一个IFormatProvider类型的参数，这个应该是进行格式转换的标准方式，MSDN的范例有点长了，就没有研究下去。如果哪位朋友对这里有好的解决方法，可以在回复在评论中，Thanks。</P>
<P style="TEXT-INDENT: 2em">创建属性就像上面显示的那样容易。PublishRss()方法是我们这里关心的核心内容。我们创建了System.Xml.XmlTextWriter类的实例。这个类是撰写XML文档的快速方式。在这个例子中，我们传递进一个OutputStream对象，并确定编码(UTF-8)。然后我们开始写入这个文档的不同部分。我们使用XmlTextWriter类的下面这些方法。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WriteStartDocument()：这个方法写入XML 1.0版本的声明。也就是：</P>
<P style="TEXT-INDENT: 2em">&lt;?xml version="1.0" encoding="utf-8"?&gt;。当不写这个声明的时候，在FireFox中虽然可以订阅，但是看不到任何条目，也不能进行更新。IE7下正常。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WriteStartElement：这个方法写入指定标签的起始标记。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WriteAttributeString：这个方法为当前打开的标签写入属性。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WriteElementString：这个方法写入一个起始标记和一个结束标记，以及起始和结束标记之间的文本。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WriteEndElement：这个方法写入当前打开标记的结束标记。不需要在这里指明结束标记的名字，因为在每次嵌套的时候都会在内部(NOTE：属于底层机制)设定。</P>
<P style="TEXT-INDENT: 2em">l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Flush：这个方法将所有缓存的output清出到目的位置。</P>
<P style="TEXT-INDENT: 2em">注意，你必须恰当地调用 WriteStartElement()和WriteEndElement()方法以生成格式良好的(well formed)XML 文档。</P>
<P style="TEXT-INDENT: 2em">创建Asp.Net Web窗体</P>
<P style="TEXT-INDENT: 2em">现在我们已经创建好了一个通用类，我们可以在我们的Web窗体中使用它。假设我们将以Rss源形式发布的数据存储在一个表格（Article）中，这个表格的结构如下：</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Varchar(255)</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Description&nbsp;&nbsp;&nbsp; - Varchar(1000)</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Varchar(255)</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Author&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - Varchar(50)</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Pubdate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - DateTime</P>
<P style="TEXT-INDENT: 2em">以DataSet形式获取Table内容</P>
<P style="TEXT-INDENT: 2em">我们将在Asp.Net Web应用程序中创建一个Rss.aspx文件，在CodeBehind中创建一个 GetDataSet()方法。这个方法使用DataAdapter来填充一个Dataset。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; public DataSet GetDataSet() {</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlConnection conn = new SqlConnection("你的连接字符串");</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string sql = "Select * From Article Order By ArticleId Desc";</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlDataAdapter da = new SqlDataAdapter(sql,conn);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataSet ds = new DataSet();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; da.Fill(ds, "Article");</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return ds;</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">接着，我们创建一个Rss类的实例，设置它的各个属性，然后调用GetDataSet()方法获取DataSet对象。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; protected void Page_Load(object sender, EventArgs e){</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataSet ds = GetDataSet();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rss rss = new Rss();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.OutputStream = Response.OutputStream;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.RssTitle = "DotNetBips.com Latest Articles";</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.PublisherUrl = Request.Url.Host;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.Description = "DotNetBips.com - Applying .NET";</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.Copyright = "Copyright (C) DotNetBips.com.";</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.Generator = "DotNetBips.com RSS Generator";</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.ItemSource = ds;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.ItemTitleField = "Title";</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.ItemDescriptionField = "Description";</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.ItemPublicationDateField = "Pubdate";</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.ItemUrlField = "Url";</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; rss.ItemAuthor = "Author";</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentEncoding = System.Text.Encoding.UTF8;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.ContentType = "text/xml";</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rss.PublishRss(rss);</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.End();</P>
<P style="TEXT-INDENT: 2em">}</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 当我们获得DataSet后，将ItemSource属性设置为这个DataSet。另外，我们再设置Response对象的ContentEncoding和ContentType属性。然后，调用PublishRss()方法，将这个Rss类的实例传递进去。</P>
<P style="TEXT-INDENT: 2em">OK，现在我们在IE中浏览Rss.aspx页面，应该可以看到如下图所示的画面：</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.tracefact.net/graph/Rss/01.gif" border=0></P>
<P style="TEXT-INDENT: 2em">NOTE：注意，此时 创建Rss源的类名和 Rss.aspx CodeBehind中的Page类名将会一样，都是Rss，所以需要手动修改Rss.aspx.cs 中的Page类名，比如，改为_Rss，则代码如下：</P>
<P style="TEXT-INDENT: 2em">public partial class _Rss : System.Web.UI.Page</P>
<P style="TEXT-INDENT: 2em">同时，修改HTML页面的 inherints ：</P>
<P style="TEXT-INDENT: 2em">Inherits="_Rss"</P>
<P style="TEXT-INDENT: 2em">消费Rss源</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 创建了Rss源以后，其他的站点可以消费这个Rss源。我会以创建一个显示 <A href="http://www.asp.net/">www.asp.net</A> 最新文章的Web窗体来作为范例。</P>
<P style="TEXT-INDENT: 2em">NOTE：我想应该是因为对于发布Rss源的站点来说，使用源的站点是消费者Consumer，所以英文技术文章中使用源通常都用Consume这个词，而不用Use。</P>
<P style="TEXT-INDENT: 2em">为了能通过一个URL来读取XML的数据，我们当然可以使用 WebRequest 和 WebResponse 对象(参考我的文章 <A href="http://www.dotnetbips.com/articles/displayarticle.aspx?id=239">Using WebRequest and WebResponse</A>)。然而，有一个更简单的方法 – DataSet。</P>
<P style="TEXT-INDENT: 2em">DataSet类有一个叫做ReadXml()的方法，可以从硬盘的文件或者URL中读取XML数据。这个方法读取数据并自动为我们生成所需的DataTable。</P>
<P style="TEXT-INDENT: 2em">DataSet ds = new DataSet();</P>
<P style="TEXT-INDENT: 2em">ds.ReadXml("http://127.0.1.1/rss.aspx");</P>
<P style="TEXT-INDENT: 2em">Note：我房子电脑没有上网，所以就使用前面所创建的本地Rss源作为演示。</P>
<P style="TEXT-INDENT: 2em">这里，我们创建了一个DataSet的实例，并且通过传递URL参数来调用ReadXml()方法。可以根据需要来改变传进去的URL参数。</P>
<P style="TEXT-INDENT: 2em">ReadXml()方法生成的表格</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 如果你期望ReadXml()方法会生成一个DataTable，其中包含着链接的列表，你会惊奇地发现实际上会生成三个DataTable。在 <A href="http://www.cnblogs.com/JimmyZhang/admin/EditPosts.aspx?postid=892431#_Rss的格式">RSS 的格式</A> 这一小节的XML标记中，我们看到标记是嵌套的，DataSet会在读取数据的时候自动创建相关表。它也会为每个DataTable创建ID字段以便他们可以相互链接。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 在这个例子中，你会得到下面构架的 DataTable：</P>
<P style="TEXT-INDENT: 2em">RSS</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rss_Id</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Version</P>
<P style="TEXT-INDENT: 2em">Channel</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Title</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Link</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Description</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Language</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Generator</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Channel_Id</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rss_Id</P>
<P style="TEXT-INDENT: 2em">Item</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Creator</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Title</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Link</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PubDate</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Guid</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Description</P>
<P style="TEXT-INDENT: 2em">n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Channel_Id</P>
<P style="TEXT-INDENT: 2em">注意一些字段，比如Creator和 Guid 并没有在Rss标记中出现。另外注意DataSet是如何添加Rss_Id和Channel_Id这样的字段来关联DataTable的。</P>
<P style="TEXT-INDENT: 2em">现在我们已经知道了表的结构，让我们编写一些代码来在GridView中显示这些数据。</P>
<P style="TEXT-INDENT: 2em">在GridView中显示数据</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从Rss源中获得的详细信息来看，第三张表是最重要的，因为它包含了实际的链接数据。这里我们将我们的GridView与第三个DataTable进行绑定。</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; GridView1.DataSource = ds.Tables[2].DefaultView;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; GridView1.DataBind();</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 一旦你在PageLoad事件中调用这段代码，可以看到类似下面这样的屏幕截图：</P>
<P style="TEXT-INDENT: 2em"><IMG src="http://www.tracefact.net/graph/Rss/02.gif" border=0></P>
<P style="TEXT-INDENT: 2em">加入浏览器支持</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; IE7 和 FireFox 都提供了对Rss的支持，为了使浏览器提供Rss支持，你必须先告诉它们你的站点创建了Rss源。只需要在&lt;head&gt;&lt;/head&gt;标签中加入如下代码即可：</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; &lt;link rel="alternate" type="application/rss+xml" title="Your Web Site’s RSS Feed Title " href="http://www.yourdomain.net/rss.aspx" /&gt;</P>
<P style="TEXT-INDENT: 2em">&nbsp;&nbsp;&nbsp; 这时再打开加入上面&lt;link&gt;的页面，会发现IE7的 RSS图标由灰色变成了明亮的桔红色。</P>
<P style="TEXT-INDENT: 2em">总结</P>
<P style="TEXT-INDENT: 2em">在这篇文章中，我们了解了什么是RSS，以及如何为你的站点生成RSS源。我们使用XmlTextWriter类来创建Rss标记。我们创建了一个通用类，以便它可以在任何Web应用程序中使用。</P>
<P style="TEXT-INDENT: 2em">随后，我们了解了如何使用DataSet来消费Rss源。Rss源是一个嵌套的XML标记，DataSet自动创建彼此相关的DataTable。第三张表(ITem)包含了Rss源的核心数据。</P>
<P style="TEXT-INDENT: 2em">希望这篇文章能给你带来帮助。</P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/265100620085249374824</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/265100620085249374824</guid>
    <pubDate>Tue, 24 Jun 2008 21:37:48 +0800</pubDate>
    <dcterms:modified>2008-06-24T21:37:48+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[.NET缓存 ]]></title>	
    <link>http://jkate.blog.163.com/blog/static/265100620085234192592</link>
    <description><![CDATA[<div><P>.NET缓存 </P>
<P>在Asp.net中，提供了专门用于缓存数据的Cache对象，它的应用范围是应用程序域。生存期是和应用程序紧密相关的，每当应用程序启动的时候就重新创建Cache对象。它与Application对象的主要区别就是提供了专门用于缓存管理的特性，比如依赖和过期策略</P>
<P>Cache对象定义在System.Web.Caching命名空间，可以使用HttpContext类的Cache属性或Page对象的Cache属性来得到Cache的引用，Cache对象除了存储键值对以外，还可以存储.net框架的对象。</P>
<P><BR>当向缓存中加数据时，可以指定它的依赖关系来实现在某些情况下强制移除它。可用的方案包括以下几种： l文件依赖（File Dependency） l键值依赖（Key Dependency） l基于时间的过期策略 </P>
<P>文件依赖：<BR>当硬盘上的某个（某些）文件更改时，强制移除缓存数据<BR>比如：</P>
<P>protected void cacheCreat()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CacheDependency cacheDcyTest = new CacheDependency(Server.MapPath("updateFlag.xml"));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cache.Insert("key", "value", cacheDcyTest);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (cacheDcyTest.HasChanged)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write("缓存已经移除");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write("没有移除");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P><BR>&nbsp;&nbsp;&nbsp; 键值依赖 ：<BR>&nbsp;&nbsp;&nbsp; 指定缓存中的某个数据项更改时移除。<BR>&nbsp;</P>
<P>&nbsp; protected void cacheCreat2()<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //make a cache entry<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cache["key1"] = "value 1";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //make key2 dependent on key1<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] dependentKey = new String[1];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dependentKey[0] = "key1";<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CacheDependency cacheDcyTest = new CacheDependency(null, dependentKey);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cache.Insert("key2", "value2", cacheDcyTest);<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;</P>
<P>&nbsp;基于时间的过期策略 l按照预先定义的时间策略来使数据失效，可以是绝对时间（如某个日期的18:00）也可以是相对现在的相对时间。使用太短和太长的过期时间都不行，不是造成用不上的缓存数据，就是缓存了陈旧的数据并加重了缓存负担，所以可以使用高并发的测试来决定过期时间的最佳值。</P>
<P><BR>&nbsp; protected void cacheCreat3()<BR>&nbsp;&nbsp;&nbsp; { <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //absolute<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cache.Insert("CacheItem", "value", null, DateTime.Now.AddSeconds(5), Cache.NoSlidingExpiration);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //sliding <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cache.Insert("CacheItem","value",null,Cache.NoAbsoluteExpiration,TimeSpan.FromHours(5));</P>
<P>&nbsp;&nbsp;&nbsp; }</P>
<P>使用缓存数据<BR>由于数据会过期，所以当使用缓存中的数据时，必须检查数据的有效性。如以下代码</P>
<P>&nbsp;&nbsp;&nbsp; protected void useCache()<BR>&nbsp;&nbsp;&nbsp; { <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DataSet dset=(DataSet)Cache["myCache"];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dset == null)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dset = getDate();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cache.Insert("myDate", dset);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>&nbsp;&nbsp;&nbsp; protected DataSet getDate()<BR>&nbsp;&nbsp;&nbsp; { }</P>
<P>缓存项优先级<BR>当运行应用程序的服务器内存不足时，会自动清除缓存中的数据，称为“清除scavenging”。<BR>此时，Cache对象根据缓存项的优先级来决定先移除哪些缓存数据，你可以在代码中指定缓存项的优先级。</P>
<P>Cache.Insert("DSN", connectionString, null, d, t, CacheItemPriority.High, onRemove);</P>
<P>刷新数据（清除缓存）</P>
<P>没有直接的方法来刷新Asp.net的输出缓存，但是有替代方法（设置所有数据失效），<BR>比如：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Cache.SetExpires(DateTime.Now) l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这可以清除缓存 </P>
<P><BR>以下代码演示了在普通应用里访问Cache对象：<BR>HttpRuntime httpRT = new HttpRuntime(); <BR>Cache cache = HttpRuntime.Cache;</P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/265100620085234192592</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/265100620085234192592</guid>
    <pubDate>Mon, 23 Jun 2008 16:19:02 +0800</pubDate>
    <dcterms:modified>2008-06-23T16:19:02+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[“范跑跑” 现象]]></title>	
    <link>http://jkate.blog.163.com/blog/static/2651006200851814859691</link>
    <description><![CDATA[<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;四川一场大地震让本来默默无闻的范美忠一举成名。现如今，范跑跑之绰号已经声震大江南北，令那些梦想一脱而成明星的女人们分外眼红。<BR>&nbsp;&nbsp; 然而，名人范跑跑却为此付出了十分沉重的代价，在经历了大地震的残酷和恐怖之后，他又在社会舆论的抨击下，道德法庭的审判中，网络愤青的辱骂里惴惴不安地度日。<BR>&nbsp;&nbsp;&nbsp; 终于，历时多日的道德审判有了结果，媒体盛传教育部已经吊销了他的教师资格，并且被所在的学校开除。虽然教育部声称不知道此事，可范美忠却为此丢掉了饭碗。<BR>&nbsp;&nbsp;&nbsp; 这下，有人高兴了，卫道士们在声嘶力竭地声讨之后可以长长地舒一口气了，那些各种姓氏的“跳跳”们也可以在范跑跑的申诉里获得能够自慰的快感了。尽管范跑跑坚称自己是“因言获罪”，将通过法律途径起诉处理自己的有关部门，可谁都知道，势单力薄的他面对只能是更加无情的讥讽和嘲笑。<BR>&nbsp;&nbsp; 卫道士们胜了，形单影只的范跑跑只有暗自垂泪的份了。可是，当我们蓦然回首看一看这场道德审判的闹剧时，会惊奇地发现，热衷于做道德法官的人们恰恰忘记了人们心目中的道德标竿，忘记了那个为救学生而英勇牺牲的老师谭千秋。<BR>&nbsp;&nbsp; 也许有人会说，谭千秋是无数人的道德榜样，是每一个人民教师的楷模。可是，地震已经发生一个多月了，该表扬的已经表扬了，该提拔的已经提拔了，达到烈士标准的已经成为烈士了，而谭千秋老师却被人们遗忘。<BR>&nbsp;&nbsp; 面对那个弱小的范跑跑，无数中国人当起了道德教官，谁都可以拿这个人来评说一番。在人们的眼里，范跑跑就是一堆臭狗屎，谁都有权力将他抛进垃圾堆。然而，谭千秋老师却是人们心中的鲜花，就在我们将范跑跑越炒越红的时候，是什么原因让那个催人泪下的谭老师在地震的废墟下寂寞的哭泣？<BR>&nbsp;&nbsp; 其实，审判范跑跑和冷落谭千秋是一个必然现象，因为中国人还远远没有走出传统文化道德的樊篱。我真的不想再对国人们使用“丑陋”这个词，因为我自己本身也是极其丑陋的，范跑跑的热与谭千秋的冷告诉我们，国人们还没有走出斗争哲学的怪圈，还没有摆脱“斗私批修”的历史思维惯性。<BR>&nbsp;&nbsp; 人们为什么热衷于谴责范跑跑，事实上每个人心里都如明镜似的。因为对道德低下者的批判可以显示自己的道德水平之高，批判者可以站在道德的制高点上任意对批判对象指手划脚。其实，当人们讥笑范跑跑的时候不知是否扪心自问过，如果当八级大地震来临时，自己的所作所为是不是能够比得上范跑跑。可以说，不要看那个在范跑跑面前又蹦又跳的道德卫士是如此的高尚，真的让他面对突如其来的灾难时，他的行为不一定比范跑跑高尚到哪里去。<BR>&nbsp;&nbsp;&nbsp; 在文革时，人们常常让偷情的女人挂上破鞋游街示众，经历过那个年代的人对此情此景断然不会忘记。就在偷男人的女人游街时，旁观的女人会向这个女人吐口水，会破口大骂不要脸。可是，殊不知，骂别人破鞋的女人也并不是不想偷情，而是她们没有这样的胆量。就似有的人在地震时自己也先跑了，却没有范跑跑那样敢说真话罢了。也就是说，当一个女人被游街示众时，当道德评论员的旁观女人说不定才在家里和别的男人做完爱提上裤子。就是这样，她也会脸不红心不跳的去当道德法官。<BR>&nbsp;&nbsp; 人们为什么会冷落谭千秋，其实道理也非常简单，因为大多数中国人不可能象谭老师那样舍己为人。不要看一些人面对范跑跑是那样的理直气壮，可当轮到自己时说不定比范跑跑跑得更快。因为人们站在谭千秋面前是渺小的，所以人们想把他忘记，因为好多人站在谭千秋面前会让这个人的道德光芒照射出自己的灵魂丑陋，在这样的严酷现实面前，谭千秋老师被遗忘就成了一种自然。<BR>&nbsp;&nbsp; 一个民族道德水准的提高，可以说靠的并不是对丑陋者的道德审判，直到现在国人们也没有走出历史的误区。潘金莲被中国人鞭挞了几百年，可到现在潘金莲式的女人还是层出不穷。世界上本没有什么道德圣人，可中国人偏偏自寻烦恼。如果我们以以人为本出发，尊重生命，尊重人性，勇敢地扯掉我们自己身上那层虚伪的道德遮羞布，说不定中国社会就会前进一大步。 </div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/2651006200851814859691</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/2651006200851814859691</guid>
    <pubDate>Wed, 18 Jun 2008 13:48:59 +0800</pubDate>
    <dcterms:modified>2008-06-18T13:48:59+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[软件工程高层沙龙系列之架构篇主题演讲：SOA应用建设中的架构师 ]]></title>	
    <link>http://jkate.blog.163.com/blog/static/2651006200851025628563</link>
    <description><![CDATA[<div><P>软件工程高层沙龙系列之架构篇主题演讲：SOA应用建设中的架构师 </P>
<P>&nbsp;</P>
<P><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://live.csdn.net/vcastr21.swf width=450 height=384 type=application/x-shockwave-flash allowFullScreen="true" BufferTime="10" FlashVars="vcastr_xml=http://live.csdn.net/xml_movielist/467.xml&amp;BeginSwf=&amp;IsAutoPlay=1" quality="high"></P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P>软件工程高层沙龙系列之架构篇主题演讲：SOA应用建设中的架构师 下</P><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://live.csdn.net/vcastr21.swf width=450 height=384 type=application/x-shockwave-flash quality="high" FlashVars="vcastr_xml=http://live.csdn.net/xml_movielist/466.xml&amp;BeginSwf=&amp;IsAutoPlay=1" BufferTime="10" allowFullScreen="true"></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/2651006200851025628563</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/2651006200851025628563</guid>
    <pubDate>Tue, 10 Jun 2008 14:56:28 +0800</pubDate>
    <dcterms:modified>2008-06-10T14:56:28+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[谈国内网站社区的OpenAPI的应用类型--CSDN Open API研讨会（一）]]></title>	
    <link>http://jkate.blog.163.com/blog/static/2651006200851025411730</link>
    <description><![CDATA[<div>谈国内网站社区的OpenAPI的应用类型--CSDN Open API研讨会（一） <BR><BR><BR><EMBED allowScriptAccess="never" allowNetworking="internal" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://live.csdn.net/vcastr21.swf width=450 height=384 type=application/x-shockwave-flash allowFullScreen="true" BufferTime="10" FlashVars="vcastr_xml=http://live.csdn.net/xml_movielist/476.xml&amp;BeginSwf=&amp;IsAutoPlay=1" quality="high"></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/2651006200851025411730</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/2651006200851025411730</guid>
    <pubDate>Tue, 10 Jun 2008 14:54:11 +0800</pubDate>
    <dcterms:modified>2008-06-10T14:54:11+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[.net缓存应用与分析]]></title>	
    <link>http://jkate.blog.163.com/blog/static/26510062008539224894</link>
    <description><![CDATA[<div>ASP.NET 提供的许多特性中，缓存支持我最欣赏的特性，相比 ASP.NET 的所有其他特性，缓存对应用程序的性能具有最大的潜在影响，利用缓存和其他机制，ASP.NET 开发人员可以接受使用开销很大的控件（例如，DataGrid）构建站点时的额外开销，而不必担心性能会受到太大的影响。为了在应用程序中最大程度地利用缓存，应该考虑在所有程序级别上都实现缓存的方法。 
<P><BR>　　实现　　 </P>
<P>　　要实现页面输出缓存，只要将一条 OutputCache 指令添加到页面即可。　　 </P>
<P>　　＜%@ OutputCache Duration="60" VaryByParam="*" %＞　　 </P>
<P>　　如同其他页面指令一样，该指令应该出现在 ASPX 页面的顶部，即在任何输出之前。它支持五个属性（或参数），其中两个是必需的。　 </P>
<P>　　Duration </P>
<P>　　必需属性。页面应该被缓存的时间，以秒为单位。必须是正整数。　 </P>
<P>　　Location </P>
<P>　　指定应该对输出进行缓存的位置。如果要指定该参数，则必须是下列选项之一：Any、Client、Downstream、None、Server 或 ServerAndClient。　 </P>
<P>　　VaryByParam </P>
<P>　　 必需属性。Request 中变量的名称，这些变量名应该产生单独的缓存条目。"none" 表示没有变动。"*" 可用于为每个不同的变量数组创建新的缓存条目。变量之间用 ";" 进行分隔。　　 </P>
<P>　　VaryByHeader </P>
<P>　　 基于指定的标头中的变动改变缓存条目。　　 </P>
<P>　　VaryByCustom </P>
<P>　　 允许在 global.asax 中指定自定义变动（例如，"Browser"）。　　 </P>
<P>　　利用必需的 Duration 和 VaryByParam 选项的组合可以处理大多数情况。例如，如果产品目录允许用户基于 categoryID 和页变量查看目录页，可以用参数值为 "categoryID;page" 的 VaryByParam 将产品目录缓存一段时间（如果产品不是随时都在改变，一小时还是可以接受的，因此，持续时间是 3600 秒）。这将为每个种类的每个目录页创建单独的缓存条目。每个条目从其第一个请求算起将维持一个小时。　 </P>
<P>　　VaryByHeader 和 VaryByCustom 主要用于根据访问页面的客户端对页面的外观或内容进行自定义。同一个 URL 可能需要同时为浏览器和移动电话客户端呈现输出，因此，需要针对不同的客户端缓存不同的内容版本。或者，页面有可能已经针对 IE 进行了优化，但需要能针对 Netscape 或 Opera 完全降低优化（而不仅仅是破坏页面）。后一个例子非常普遍，将提供一个说明如何实现此目标的示例：　 </P>
<P>　　示例：VaryByCustom 用于支持浏览器自定义　　 </P>
<P>　　为了使每个浏览器都具有单独的缓存条目，VaryByCustom 的值可以设置为 "browser"。此功能已经内置在缓存模块中，并且将针对每个浏览器名称和主要版本插入单独的页面缓存版本。　 </P>
<P>　　＜%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="browser" %＞　 </P>
<P>　　片段缓存，用户控件输出缓存 </P>
<P>　　缓存整个页面通常并不可行，因为页面的某些部分是针对用户定制的。不过，页面的其他部分是整个应用程序共有的。这些部分最适合使用片段缓存和用户控件进行缓存。菜单和其他布局元素，尤其是那些从数据源动态生成的元素，也应该用这种方法进行缓存。如果需要，可以将缓存的控件配置为基于对其控件（或其他属性）的更改或由页面级输出缓存支持的任何其他变动进行改变。使用同一组控件的几百个页面还可以共享那些控件的缓存条目，而不是为每个页面保留单独的缓存版本。　 </P>
<P>&nbsp;</P>
<P>　　实现　　 </P>
<P>　　片段缓存使用的语法与页面级输出缓存一样，但其应用于用户控件（.ascx 文件）而不是 Web 窗体（.aspx 文件）。除了 Location 属性，对于 OutputCache 在 Web 窗体上支持的所有属性，用户控件也同样支持。用户控件还支持名为 VaryByControl 的 OutputCache 属性，该属性将根据用户控件（通常是页面上的控件，例如，DropDownList）的成员的值改变该控件的缓存。如果指定了 VaryByControl，可以省略 VaryByParam。最后，在默认情况下，对每个页面上的每个用户控件都单独进行缓存。不过，如果一个用户控件不随应用程序中的页面改变，并且在所有页面都使用相同的名称，则可以应用 Shared="true" 参数，该参数将使用户控件的缓存版本供所有引用该控件的页面使用。 </P>
<P>　　示例　　 </P>
<P>　　＜%@ OutputCache Duration="60" VaryByParam="*" %＞　　 </P>
<P>　　该示例将缓存用户控件 60 秒，并且将针对查询字符串的每个变动、针对此控件所在的每个页面创建单独的缓存条目。　　 </P>
<P>　　＜%@ OutputCache Duration="60" VaryByParam="none"&nbsp; VaryByControl="CategoryDropDownList" %＞　　 </P>
<P>　　该示例将缓存用户控件 60 秒，并且将针对 CategoryDropDownList 控件的每个不同的值、针对此控件所在的每个页面创建单独的缓存条目。　　 </P>
<P>　　＜%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser"&nbsp; Shared="true %＞　　 </P>
<P>　　最后，该示例将缓存用户控件 60 秒，并且将针对每个浏览器名称和主要版本创建一个缓存条目。然后，每个浏览器的缓存条目将由引用此用户控件的所有页面共享（只要所有页面都用相同的 ID 引用该控件即可）。　　 <BR>　　页面级和用户控件级输出缓存的确是一种可以迅速而简便地提高站点性能的方法，但是在 ASP.NET 中，缓存的真正灵活性和强大功能是通过 Cache 对象提供的。使用 Cache 对象，您可以存储任何可序列化的数据对象，基于一个或多个依赖项的组合来控制缓存条目到期的方式。这些依赖项可以包括自从项被缓存后经过的时间、自从项上次被访问后经过的时间、对文件和/或文件夹的更改以及对其他缓存项的更改，在略作处理后还可以包括对数据库中特定表的更改。　 </P>
<P>　　在 Cache 中存储数据　　 </P>
<P>　　在 Cache 中存储数据的最简单的方法就是使用一个键为其赋值，就像 HashTable 或 Dictionary 对象一样：　　 </P>
<P>　　Cache["key"] = "value";　　 </P>
<P>　　这种做法将在缓存中存储项，同时不带任何依赖项，因此它不会到期，除非缓存引擎为了给其他缓存数据提供空间而将其删除。要包括特定的缓存依赖项，可使用 Add() 或 Insert() 方法。其中每个方法都有几个重载。Add() 和 Insert() 之间的唯一区别是，Add() 返回对已缓存对象的引用，而 Insert() 没有返回值（在 C# 中为空，在 VB 中为 Sub）。　　 </P>
<P>　　示例　 </P>
<P>　　Cache.Insert("key", myXMLFileData, new System.Web.Caching.CacheDependency(Server.MapPath("users.xml")));　　 </P>
<P>　　该示例可将文件中的 xml 数据插入缓存，无需在以后请求时从文件读取。 CacheDependency 的作用是确保缓存在文件更改后立即到期，以便可以从文件中提取最新数据，重新进行缓存。如果缓存的数据来自若干个文件，还可以指定一个文件名的数组。　　 </P>
<P>　　Cache.Insert("dependentkey", myDependentData, new System.Web.Caching.CacheDependency(new string[] {}, new string[] </P>
<P>　　{"key"}));　　 </P>
<P>　　该示例可插入键值为 "key" 的第二个数据块（取决于是否存在第一个数据块）。如果缓存中不存在名为 "key" 的键，或者如果与该键相关联的项已到期或被更新，则 "dependentkey" 的缓存条目将到期。　　 </P>
<P>　　Cache.Insert("key", myTimeSensitiveData, null, DateTime.Now.AddMinutes(1), TimeSpan.Zero);　　 </P>
<P>&nbsp;</P>
<P>　　绝对到期：此示例将对受时间影响的数据缓存一分钟，一分钟过后，缓存将到期。注意，绝对到期和滑动到期（见下文）不能一起使用。　　 </P>
<P>　　Cache.Insert("key", myFrequentlyAccessedData, null, </P>
<P>　　System.Web.Caching.Cache.NoAbsoluteExpiration, </P>
<P>　　TimeSpan.FromMinutes(1));　　 </P>
<P>　　滑动到期：此示例将缓存一些频繁使用的数据。数据将在缓存中一直保留下去，除非数据未被引用的时间达到了一分钟。注意，滑动到期和绝对到期不能一起使用。　 </P>
<P>&nbsp;</P>
<P>　　更多选项　　 </P>
<P>　　除了上面提到的依赖项，我们还可以指定项的优先级（依次为 low、high、NotRemovable，它们是在 System.Web.Caching.CacheItemPriority 枚举中定义的）以及当缓存中的项到期时调用的 CacheItemRemovedCallback 函数。大多数时候，默认的优先级已经足够了 — 缓存引擎可以正常完成任务并处理缓存的内存管理。CacheItemRemovedCallback 选项考虑到一些很有趣的可能性，但实际上它很少使用。不过，为了说明该方法，我将提供它的一个使用示例：　　 </P>
<P>　　CacheItemRemovedCallback 示例 <BR>　 <BR>　　System.Web.Caching.CacheItemRemovedCallback callback = new System.Web.Caching.CacheItemRemovedCallback (OnRemove); </P>
<P>　　Cache.Insert("key",myFile,null, </P>
<P>　　System.Web.Caching.Cache.NoAbsoluteExpiration, </P>
<P>　　TimeSpan.Zero, </P>
<P>　　System.Web.Caching.CacheItemPriority.Default, callback); </P>
<P>　　. . . </P>
<P>　　public static void OnRemove(string key, </P>
<P>　　object cacheItem, </P>
<P>　　System.Web.Caching.CacheItemRemovedReason reason) </P>
<P>　　{ </P>
<P>　　AppendLog("The cached value with key " + key + </P>
<P>　　" was removed from the cache. Reason: " + </P>
<P>　　reason.ToString()); </P>
<P>　　}　　 </P>
<P>　　该示例将使用 AppendLog() 方法（这里不讨论该方法，请参阅 Writing Entries to Event Logs）中定义的任何逻辑来记录缓存中的数据到期的原因。通过在从缓存中删除项时记录这些项并记录删除的原因，您可以确定是否在有效地使用缓存或者您是否可能需要增加服务器上的内存。注意，callback 是一个静态（在 VB 中为 Shared）方法，建议使用该方法的原因是，如果不使用它，保存回调函数的类的实例将保留在内存中，以支持回调（对 static/Shared 方法则没有必要）。　　 <BR>　　该特性有一个潜在的用处 — 在后台刷新缓存的数据，这样用户永远都不必等待数据被填充，但数据始终保持相对较新的状态。但实际上，此特性并不适用于当前版本的缓存 API，因为在从缓存中删除缓存的项之前，不触发或不完成回调。因此，用户将频繁地发出尝试访问缓存值的请求，然后发现缓存值为空，不得不等待缓存值的重新填充。我希望在未来的 ASP.NET 版本中看到一个附加的回调，可以称为 CachedItemExpiredButNotRemovedCallback，如果定义了该回调，则必须在删除缓存项之前完成执行。　　 </P>
<P>　　缓存数据引用模式　　 </P>
<P>　　每当我们尝试访问缓存中的数据时，都应该考虑到一种情况，那就是数据可能已经不在缓存中了。因此，下面的模式应该普遍适用于您对缓存的数据的访问。在这种情况下，我们假定已缓存的数据是一个数据表。　　 </P>
<P>　　public DataTable GetCustomers(bool BypassCache) </P>
<P>　　{ </P>
<P>　　string cacheKey = "CustomersDataTable"; </P>
<P>　　object cacheItem = Cache[cacheKey] as DataTable; </P>
<P>　　if((BypassCache) 　　 (cacheItem == null)) </P>
<P>　　{ </P>
<P>　　cacheItem = GetCustomersFromDataSource(); </P>
<P>　　Cache.Insert(cacheKey, cacheItem, null, </P>
<P>　　DateTime.Now.AddSeconds(GetCacheSecondsFromConfig(cacheKey), </P>
<P>　　TimeSpan.Zero); </P>
<P>　　} </P>
<P>　　return (DataTable)cacheItem; </P>
<P>　　}　　 </P>
<P>&nbsp;</P>
<P>　　关于此模式，有以下几点需要注意： 　　 </P>
<P>　　 某些值（例如，cacheKey、cacheItem 和缓存持续时间）是一次定义的，并且只定义一次。　 </P>
<P>　　 可以根据需要跳过缓存 — 例如，当注册一个新客户并重定向到客户列表后，最好的做法可能就是跳过缓存，用最新数据重新填充缓存，该数据包括新插入的客户。 　　 </P>
<P>　　 缓存只能访问一次。这种做法可以提高性能，并确保不会发生 NullReferenceExceptions，因为该项在第一次被检查时是存在的，但第二次检查之前就已经到期了。 　　 </P>
<P>　　 该模式使用强类型检查。C# 中的 "as" 运算符尝试将对象转换为类型，如果失败或该对象为空，则只返回 null（空）。 　　 </P>
<P>　　 持续时间存储在配置文件中。在理想的情况下，所有的缓存依赖项（无论是基于文件的，或是基于时间的，还是其他类型的依赖项）都应该存储在配置文件中，这样就可以进行更改并轻松地测量性能。我还建议您指定默认缓存持续时间，而且，如果没有为所使用的 cacheKey 指定持续时间，就让 GetCacheSecondsFromConfig() 方法使用该默认持续时间。 　　 </P>
<P>　　相关的代码示例是一个 helper 类，它将处理上述所有情况，但允许通过一行或两行代码访问缓存的数据。请下载 CacheDemos.msi。　　 </P>
<P>　　小结 </P>
<P>　　缓存可以使应用程序的性能得到很大的提高，因此在设计应用程序以及对应用程序进行性能测试时应该予以考虑。应用程序总会或多或少地受益于缓存，当然有些应用程序比其他应用程序更适合使用缓存。对 ASP.NET 提供的缓存选项的深刻理解是任何 ASP.NET 开发人员应该掌握的重要技巧。　 </P>
<P>&nbsp;</P>
<P>　　尽早缓存；经常缓存　　 </P>
<P>　　您应该在应用程序的每一层都实现缓存。向数据层、业务逻辑层、UI 或输出层添加缓存支持。内存现在非常便宜 — 因此，通过以智能的方式在整个应用程序中实现缓存，可以获得很大的性能提高。 </P>
<P>　　缓存可以掩盖许多过失　　 </P>
<P>　　缓存是一种无需大量时间和分析就可以获得"足够良好的"性能的方法。这里再次强调，内存现在非常便宜，因此，如果您能通过将输出缓存 30 秒，而不是花上一整天甚至一周的时间尝试优化代码或数据库就可以获得所需的性能，您肯定会选择缓存解决方案（假设可以接受 30 秒的旧数据）。缓存正是那些利用 20% 付出获得 80% 回报的特性之一，因此，要提高性能，应该首先想到缓存。不过，如果设计很糟糕，最终却有可能带来不良的后果，因此，您当然也应该尽量正确地设计应用程序。但如果您只是需要立即获得足够高的性能，缓存就是您的最佳选择，您可以在以后有时间的时候再尽快重新设计应用程序。　　 </P>
<P>　　页面级输出缓存 </P>
<P>　　作为最简单的缓存形式，输出缓存只是在内存中保留为响应请求而发送的 HTML 的副本。其后再有请求时将提供缓存的输出，直到缓存到期，这样，性能有可能得到很大的提高（取决于需要多少开销来创建原始页面输出 - 发送缓存的输出总是很快，并且比较稳定）。　　</P></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/26510062008539224894</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/26510062008539224894</guid>
    <pubDate>Tue, 3 Jun 2008 21:02:24 +0800</pubDate>
    <dcterms:modified>2008-06-03T21:02:24+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008-5-28 西安 惊现 地震云]]></title>	
    <link>http://jkate.blog.163.com/blog/static/2651006200842875850819</link>
    <description><![CDATA[<div><P align=center>&nbsp; <A href="http://img.blog.163.com/photo/N_jTTUIX-lUSK6S0hakCpQ==/1143351355399434376.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/N_jTTUIX-lUSK6S0hakCpQ==/1143351355399434376.jpg"></A></P>
<P align=center>2008-5-28 18:30分 西安 惊现 地震云</P>
<P align=center><A href="http://img.blog.163.com/photo/TZApCb7jNXakSpbBBz0Q1A==/1143351355399434377.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/TZApCb7jNXakSpbBBz0Q1A==/1143351355399434377.jpg"></A></P>
<P align=center>2008-5-28 18:30分 西安 惊现 地震云</P>
<P align=center><A href="http://img.blog.163.com/photo/qcSbxlP4qdTbI0t8PXG_hg==/1143351355399434378.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/qcSbxlP4qdTbI0t8PXG_hg==/1143351355399434378.jpg"></A></P>
<P align=center>2008-5-28 18:30分 西安 惊现 地震云</P>
<P align=center><A href="http://img.blog.163.com/photo/adh6mGNGetzMX2qcqaGTsw==/1143351355399434381.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/adh6mGNGetzMX2qcqaGTsw==/1143351355399434381.jpg"></A></P>
<P align=center>2008-5-28 18:30分 西安 惊现 地震云</P>
<P align=center><A href="http://img.blog.163.com/photo/egyccPlg9VeOm1z1rldG3Q==/1143351355399434384.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/egyccPlg9VeOm1z1rldG3Q==/1143351355399434384.jpg"></A></P>
<P align=center>2008-5-28 18:30分 西安 惊现 地震云</P>
<P align=center><A href="http://img.blog.163.com/photo/sPXtnLMEZ5q-PIzZkB9CBA==/1143351355399434385.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/sPXtnLMEZ5q-PIzZkB9CBA==/1143351355399434385.jpg"></A></P>
<P align=center>2008-5-28 17:40分 西安 惊现 地震云</P>
<P align=center>&nbsp;</P>
<P align=center><A href="http://img.blog.163.com/photo/ghx84Tj5urY4N_IipDPxTg==/1143351355399434386.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/ghx84Tj5urY4N_IipDPxTg==/1143351355399434386.jpg"></A></P>
<P align=center>2008-5-28 17:40分 西安 惊现 地震云</P><A href="http://img.blog.163.com/photo/ghx84Tj5urY4N_IipDPxTg==/1143351355399434386.jpg" target=_blank></A></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/2651006200842875850819</comments>
    <slash:comments>3</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/2651006200842875850819</guid>
    <pubDate>Wed, 28 May 2008 19:58:50 +0800</pubDate>
    <dcterms:modified>2008-05-28T19:59:50+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[[第二届中国网络工程师侠客行大会] ]]></title>	
    <link>http://jkate.blog.163.com/blog/static/2651006200842695055305</link>
    <description><![CDATA[<div><P>这次杭州参会 <BR>感触颇深，主要总结如下：<BR>其一、关于平台化运作的未来趋势以及楼市通平台化运作的深入和扩展。<BR>其二、企业应该充分利用IT手段，体系化，流程化，减少成本，提高效率，增强企业竞争力。<BR>其三、高度决定视野。当站在中国，乃至全世界的角度去思考的时候，或许一切都不再那么庸俗。<BR>其四、一天不学习，就等于退步一天。</P>
<P>2008-5-26</P></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/2651006200842695055305</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/2651006200842695055305</guid>
    <pubDate>Mon, 26 May 2008 09:50:55 +0800</pubDate>
    <dcterms:modified>2008-05-26T09:50:55+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[地震云 ]]></title>	
    <link>http://jkate.blog.163.com/blog/static/26510062008415101059683</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em"><IMG src="http://imgs.soufun.com/news/2008_05/14/news/1210703448074_000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">"地震云"是指地震即将发生时，震区上空出现的不同颜色的，如白色、灰色、橙色、橘红色等带状云。其分布方向同震中垂直，一般出现于早晨和傍晚。地震云的高度和长度:据目测估计,地震云的高到可达6000米以上,相当于气象云中高云类的高度。
</P><P style="TEXT-INDENT: 2em">&nbsp;
</P><P style="TEXT-INDENT: 2em">&nbsp;
</P><P style="TEXT-INDENT: 2em"><IMG src="http://imgs.soufun.com/news/2008_05/14/news/1210703449369_000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">早在17世纪中国古籍中就有“昼中或日落之后，天际晴朗，而有细云如一线，甚长，震兆也”的记载，1935年我国宁夏的隆德县《重修隆德县志》中记载有“天晴日暖，碧空清净，忽见黑云如缕，婉如长蛇，横卧天际，久而不散，势必为地震” 。
</P><P style="TEXT-INDENT: 2em">&nbsp;
</P><P style="TEXT-INDENT: 2em"><IMG src="http://imgs.soufun.com/news/2008_05/14/news/1210703450512_000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">但是，世界各国对于地震云的研究还是最近几年的事，其中以我国和日本处于领先地位，我国对地震云的研究始于1976年唐山大地震之后，目前成功的例证有十余个，日本利用地震云预报地震成功的例证有上百个，有趣的是，首先提出“地震云”这个名字的不是地震学者，而是一政治家，他就是日本前福冈市市长键田忠三郎，他曾经亲身经历过日本福冈1956年的7级地震，并且在地震时亲眼看到天空中有一种非常奇特的云，以后只要这种云出现，总有地震相应发生，所以他就把这样的云称为“地震云”。
</P><P style="TEXT-INDENT: 2em">&nbsp;
</P><P style="TEXT-INDENT: 2em">&nbsp;
</P><P style="TEXT-INDENT: 2em"><IMG src="http://imgs.soufun.com/news/2008_05/14/news/1210703451705_000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">那么，什么样的云才是地震云呢？这种云的最大特点在于“奇”，与一般的云有着明显的区别。</P>
<P style="TEXT-INDENT: 2em">蔚蓝的天空中有时会留下一条飞机的尾迹，常见的条带状地震云很像飞机的尾迹，不过更加厚实和丰满些，它一般预示震中处于云向的垂直线上。
</P><P style="TEXT-INDENT: 2em">&nbsp;
</P><P style="TEXT-INDENT: 2em"><IMG src="http://imgs.soufun.com/news/2008_05/14/news/1210703452851_000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://imgs.soufun.com/news/2008_05/14/news/1210703453823_000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">另外有一种辐射状的地震云，则有数条的带状云同时相交在一点，犹如一把没有扇面的扇骨铺在空中，云的交点垂直于地面就是震中所在地。
</P><P style="TEXT-INDENT: 2em">&nbsp;
</P><P style="TEXT-INDENT: 2em"><IMG src="http://imgs.soufun.com/news/2008_05/14/news/1210703459617_000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">此外还有一种条纹状地震云，形似人的两排肋骨，根据此云判断震中较为复杂。 </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://imgs.soufun.com/news/2008_05/14/news/1210703454803_000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">地震云出现的时间以早上和傍晚居多，地震云持续的时间越长，则对应的震中就越近，地震云的长度越长，则距离发生地震的时间就越近，地震云的颜色看上去越令人恐怖，则所对应的地震强度就越强。 
</P><P style="TEXT-INDENT: 2em">&nbsp;
</P><P style="TEXT-INDENT: 2em"><IMG src="http://imgs.soufun.com/news/2008_05/14/news/1210703456413_000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">目前，对于地震云的形成原因众说纷谈，虽然各有道理，但是都不能完整的解释地震前出现的这种现象，所以至今还是个谜，而且地震本身是个非常复杂的过程，所以预报地震，最好采用综合法。 </P>
<P style="TEXT-INDENT: 2em"><IMG src="http://imgs.soufun.com/news/2008_05/14/news/1210703458311_000.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">地震工作者们认为，地震即将发生时，因地热聚集于地震带，或因地震带岩石受强烈应力作用发生激烈摩擦而产生大量热量，这些热量从地表面逸出，使空气增温产生上升气流，这气流于高空形成"地震云"，云的尾端指向地震发生处。也有的认为，"地震云"的必然性尚缺乏实验数据，也可能是一种巧合。究竟如何，有待进一步考证。
</P><P style="TEXT-INDENT: 2em">&nbsp;
</P><P style="TEXT-INDENT: 2em">&nbsp;</P></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/26510062008415101059683</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/26510062008415101059683</guid>
    <pubDate>Thu, 15 May 2008 10:10:59 +0800</pubDate>
    <dcterms:modified>2008-05-15T10:10:59+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[学习总结]]></title>	
    <link>http://jkate.blog.163.com/blog/static/2651006200841584547492</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">1、&nbsp; 在不清楚自己想要什么的时候，就不要做。想清楚了再做。否则是浪费金钱，浪费时间，浪费精力。</P>
<P style="TEXT-INDENT: 2em">2、&nbsp; 盈利模式关系着产品的开发，产品的开发推动着盈利模式的发展与完善。</P>
<P style="TEXT-INDENT: 2em">3、&nbsp; 着眼于长远发展的 ，请把更多的心思放在用户上吧。</P>
<P style="TEXT-INDENT: 2em">4、&nbsp; 不要太多的纠缠于细节，大处着眼，推动整个项目的进展。</P>
<P style="TEXT-INDENT: 2em">5、&nbsp; 不要奢求一次就把所有的事情搞定。迅雷的发展便明显的验证了这一点，从最初的简单搜索到增加注册，论坛，博客，视频等。</P>
<P style="TEXT-INDENT: 2em">6、&nbsp; 技术团队与业务团队不同，管理方式也有很大不同。业务团队，说的夸张点，几乎不用管，只需要拿业绩说话。甚至可以让大家之间存在竞争，这样更利于业务拓展。但技术不同，需要的更多是配合。</P>
<P style="TEXT-INDENT: 2em">7、&nbsp; 销售固然重要，但没有一个好产品，一切都是徒劳。</P>
<P style="TEXT-INDENT: 2em">8、&nbsp; 疑人不用，用人不疑。</P>
<P style="TEXT-INDENT: 2em">9、&nbsp; 经营的98是人心，品牌的98是文化，矛盾的98来自误会，资源的98靠整合！！</P>
<P style="TEXT-INDENT: 2em">10、人才储备也是公司经营的策略之一。</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/2651006200841584547492</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/2651006200841584547492</guid>
    <pubDate>Thu, 15 May 2008 08:45:47 +0800</pubDate>
    <dcterms:modified>2008-05-15T08:45:47+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[2008-5-12日 【汶川地震】 中午14点25分 西安 高新区]]></title>	
    <link>http://jkate.blog.163.com/blog/static/2651006200841391142175</link>
    <description><![CDATA[<div><P>2008-5-12日 【汶川地震】 中午14点25分 西安 高新区 </P>
<P>大家感觉到地震后都从楼上跑了下来。</P>
<P>&nbsp;</P>
<P>&nbsp;</P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/Nwcp0fIaO_da4ekr-AAIdw==/5363787156198711693.jpg"><IMG src="http://img.blog.163.com/photo/Nwcp0fIaO_da4ekr-AAIdw==/5363787156198711693.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/vLXyFAuOQ-IEv7p1GsNjoQ==/5363787156198711694.jpg"><IMG src="http://img.blog.163.com/photo/vLXyFAuOQ-IEv7p1GsNjoQ==/5363787156198711694.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/bzg7U4Q_f54BMzvU87OmHQ==/5363787156198711695.jpg"><IMG src="http://img.blog.163.com/photo/bzg7U4Q_f54BMzvU87OmHQ==/5363787156198711695.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">焦急的打着电话，可是怎么也打不出去。。。。</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/MpD52u2k8UUE3VEeBKefHQ==/5363787156198711696.jpg"></A>&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/mxiwhUNb16u6tcSPICfVGw==/5363787156198711687.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/mxiwhUNb16u6tcSPICfVGw==/5363787156198711687.jpg"></A></P>
<P><A href="http://img.blog.163.com/photo/FLjIze47BiaThZ319vYi7w==/5363787156198711690.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/FLjIze47BiaThZ319vYi7w==/5363787156198711690.jpg"></A></P>
<P><A href="http://img.blog.163.com/photo/RTuFvdjm4-RtFIu4zjiXiw==/5363787156198711691.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/RTuFvdjm4-RtFIu4zjiXiw==/5363787156198711691.jpg"></A></P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/MpD52u2k8UUE3VEeBKefHQ==/5363787156198711696.jpg"><IMG src="http://img.blog.163.com/photo/MpD52u2k8UUE3VEeBKefHQ==/5363787156198711696.jpg" border=0></A></P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">学生们也都一起下来了。。。</P>
<P><A href="http://img.blog.163.com/photo/ubelTEHhGWLBUgheJ6NEUQ==/5363787156198711692.jpg" target=_blank></A>&nbsp;</P>
<P>&nbsp;&nbsp;</P>
<P><A href="http://img.blog.163.com/photo/x_ekNRklsAxiqCMz5HAhgA==/5363787156198711715.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/x_ekNRklsAxiqCMz5HAhgA==/5363787156198711715.jpg"></A></P>
<P>&nbsp;</P>
<P style="TEXT-INDENT: 2em"><A href="http://img.blog.163.com/photo/ubelTEHhGWLBUgheJ6NEUQ==/5363787156198711692.jpg"><IMG src="http://img.blog.163.com/photo/ubelTEHhGWLBUgheJ6NEUQ==/5363787156198711692.jpg" border=0></A> </P>
<P><A href="http://img.blog.163.com/photo/okioo1rcObJm3tTh-EsSbA==/5363787156198711716.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/okioo1rcObJm3tTh-EsSbA==/5363787156198711716.jpg"></A><A href="http://img.blog.163.com/photo/H668vY1PMumAwMl2PKbFrw==/5363787156198711717.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/H668vY1PMumAwMl2PKbFrw==/5363787156198711717.jpg"></A></P>
<P>&nbsp;</P>
<P><A href="http://img.blog.163.com/photo/Ms_FREK0TOdvGNxiVr2mKQ==/5363787156198711718.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/Ms_FREK0TOdvGNxiVr2mKQ==/5363787156198711718.jpg"></A><A href="http://img.blog.163.com/photo/FJq4uk3UaEsdBI1auJ4J5w==/5363787156198711719.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/FJq4uk3UaEsdBI1auJ4J5w==/5363787156198711719.jpg"></A></P>
<P>熙熙攘攘，安全第一，下午看来不用上班了。。。。</P>
<P>&nbsp;</P></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/2651006200841391142175</comments>
    <slash:comments>2</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/2651006200841391142175</guid>
    <pubDate>Tue, 13 May 2008 09:11:42 +0800</pubDate>
    <dcterms:modified>2008-05-13T09:31:16+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[房价下降已成定局 供不应求只是个美丽的谎言?]]></title>	
    <link>http://jkate.blog.163.com/blog/static/265100620084862129454</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">房地产调控，正在迫使炒房者和开发商囤积的住房向市场释放，这将使供应成倍放大。另一方面，从2003年至今，持续高速增长的房地产投资与多子女一代消费人群的退潮，也在从根本上改变商品房的供求关系。因此，所谓商品房供不应求、房价只涨不跌的说法只是一个美丽的谎言，商品房其实是供大于求的。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">4月24日，我在《上海证券报》发表了《房价整体下降已成定局》一文，从资金入手，推断我国房价的整体下降趋势已经不可逆转。这篇文章引起业界强烈反响，赞同者与反对者都不少。今天，我再从供求角度，再对房价的趋势进行判断。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">从经济学的角度来看，商品的价格是由供求关系决定的，当供给大于需求时，价格会下跌，反之会上涨。由此，有一些开发商认为，由于新增需求（如，每年都有大量婚龄青年购房）、升级需求（弃旧房换新房）的持续强劲，中国房价在未来一个相当长的时期里都是供不应求的，因而，房价也是只涨不跌的。这种理论重复得多了，就真的成了真理，吸引了大批投机者、投资者涌入房地产市场，这导致大量商品房被囤积，加上开发商自己囤积的商品房，人为地减少了商品房供给，从而，推动了房价的上涨。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">最近，从一线城市到二线城市，大量土地流拍现象，再次成为开发商鼓吹房价将上涨的一个依据。他们认为，房地产投资动力不足，将成为推升房价上涨的一个重要力量。在外行人看来，这是非常有说服力的，因而具有很强的欺骗性。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">但是，我们不要忽略了，投机性（低买高卖赚取差价）与投资性购房（购房出租）行为都是建立在对未来房价将上涨这一预期基础之上的，一旦这种预期被打破，此前囤积在流通环节的大量住房将突然释放出来，将有效供给成倍放大，从而，导致房价的下跌。因此，在住房历史上有一个“加速”现象，一旦房价步入上涨轨道，由于囤积等因素，尽管商品房投资增长很快，但有效供给却相对减少，房价不仅涨幅快，也会持续较长时间，而一旦房价步入下跌轨道，囤积的住房释放出来，尽管商品房投资放缓，但有效供给成倍放大，这时，房价不仅跌幅大，而且，下跌同样会持续较长时间。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">这样的例子不胜枚举。1993年6月，受国家宏观调控（即6号文）影响，北海、海口等地的房地产泡沫破灭。其中，海口市积压的空置商品房264万平方米，“烂尾楼”400万平方米，沉淀资金264亿元，这些积压的空置商品房直到2004年还没有完全消化完。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">现在，我们房地产界面临着比1993年时更严峻的压力。一方面，为了化解通胀压力，政府调控的力度在加大，从信贷紧缩到土地审批到打击炒房等，全方位调控。另一方面，我国房价已经经历了一个接近10年的上涨周期，在这个周期里，有大量商品房被投资者和投机者占据。在南方的深圳等市，有媒体调查发现，超过80%的购房者目的在于炒房而不是居住。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">这意味着，严厉的调控政策一旦发威，将逼出比1994年时多得多的商品房，这无疑将放大商品房市场的有效供给。另一方面，在商品房快速发展的十几年中，有效需求得到了最大限度的释放，大量真正需要商品房又买得起商品房的人，以及那些弃旧房换新房的人，基本上都已经完成了购房行为。这意味着，商品房的需求量相对过去其实有一个下降趋势。因此，房地产调控政策一旦发力，将房价送入下跌轨道，绝非一个“拐点”所能涵盖。就连一向乐观的潘石屹(潘石屹博客,潘石屹新闻,潘石屹说吧)也发出房地产将“百日巨变”，开发商将死守北京、上海的悲壮之语。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">实际上，大量商品房被逼出来的情形在珠三角地区已经出现。4月20日，有媒体刊发了题为《珠三角退房风波群起百亿元炒楼资金深度套牢》的报道，仅深圳炒房团成员2007年投入到深圳楼市的百亿资金就全部被深度套牢。一些业主开始要求退房或退差价。尽管深圳国土部门表示，业主要求退房或补偿价差的要求是一个非法、无理、蛮横的诉求，“此头不能开”，但退房风波从一个侧面反映出，囤积在投机者或投资者手中的商品房正在涌向市场。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">作为推高房价的主要力量，开发商在房价变化中所起的作用无疑是很大的。在房价处于上涨轨道的时候，开发商捂盘惜售，囤积房源，刻意减少商品房的有效供给，成为推高房价的主要动力之一。但是，囤积房屋行为必须在充足的资金支持的情况下才能完成，而现在，许多开发商都面临着资金链可能断裂的危险，尽快将手中的房屋变现几乎成为每个开发商的梦想，他们哪里还敢奢望继续囤房？而开发商急于变现的打折销售行为一旦成为共识，就容易引发羊群效应。一方面，将使大量商品房向市场集中供应。另一方面，将加大人们对房价可能进一步下跌的预期。因此，尽管目前只有珠三角地区的房价在下跌，它的影响却是全面的，一旦房价步入下跌轨道，能够独善其身的城市微乎其微。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">而且，从2003年至今，持续高速增长的房地产投资与多子女一代消费人群的退潮，也在从根本上改变商品房的供求关系。以深圳为例，深圳世华地产研究中心的数据显示，2008年一季度，深圳共有26个新盘入市，总推盘面积将近90万平方米，为全市提供了8733套商品房住宅。而2007年深圳依然还有不少新盘存量，其中可售住宅面积506.66万平方米，可售套数49266套。也就是说，整个一季度，深圳全市新盘有近600万平方米的在售面积，共57999套商品住宅在售。而去年全年一手住宅的销售套数仅为50598套！这意味着，即使今年其他三个季度深圳不推出新盘，仅目前现有的存量就足够销售一年多。而深圳的情况并非特例，它之所以现在看起来像是特例，是因为其他地方的潮水还没有退却，裸泳者还没有露出来而已。 </P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em">也许，过不了多久，当许多城市的房价相继步入下跌轨道，人们才突然发现，所谓商品房供不应求、房价只涨不跌的说法只是一个美丽的谎言，商品房其实是供大于求的。 </P></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/265100620084862129454</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/265100620084862129454</guid>
    <pubDate>Thu, 8 May 2008 18:21:29 +0800</pubDate>
    <dcterms:modified>2008-05-08T18:21:29+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[不老的音乐—《新白娘子传奇》中的插曲 ]]></title>	
    <link>http://jkate.blog.163.com/blog/static/2651006200832653848969</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"><IMG title=点击在新窗口打开图片 src="http://club.chinaceot.com/attachments/3d832fd414119c38d86492e757c35768_fmmECB2bAly5.jpg" (this.width picError.gif?? images></P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em">不老的音乐—</P>
<P style="TEXT-INDENT: 2em">《新白娘子传奇》中的插曲</P>
<P style="TEXT-INDENT: 2em">前世今生，你是谁</P>
<P style="TEXT-INDENT: 2em">而我又是谁</P>
<P style="TEXT-INDENT: 2em">是谁在西子湖边千年等一回呢？</P>
<P style="TEXT-INDENT: 2em">是谁在西子湖边唱着那</P>
<P style="TEXT-INDENT: 2em">“天也不懂情”</P>
<P style="TEXT-INDENT: 2em">又是谁在西子湖边说着那</P>
<P style="TEXT-INDENT: 2em">“情仇爱恨”</P>
<P style="TEXT-INDENT: 2em">是谁呢？</P>
<P style="TEXT-INDENT: 2em">是哪个女子呢？</P>
<P style="TEXT-INDENT: 2em">唱得如此的纠缠，悲情</P>
<P style="TEXT-INDENT: 2em">让人泪眼朦胧，</P>
<P style="TEXT-INDENT: 2em">是谁呢？</P>
<P style="TEXT-INDENT: 2em">看《新白娘子传奇》的时候，我应该是在上小学一年级或者二级，如果我没有记错的话。那时我还只是一个小孩子，一个懂事的小孩子！</P>
<P style="TEXT-INDENT: 2em">当时小小的我，并不太懂音乐，眼睛紧紧盯着的黑白电视屏幕的美丽画面！尽管当时很小，但对于人性的善恶，丑美，我还是非常的清楚。</P>
<P style="TEXT-INDENT: 2em">很长的一段时间，我多么希望，自己能有一身轻功，能有无穷的法力，能有一张漂亮动人的小脸蛋，更希望的是，能有一头乌黑亮丽的长头发，有一件像彩带一样的丝质衣服，走起路来时会拖着长长裙摆。</P>
<P style="TEXT-INDENT: 2em">直到现在，我对那衣服，都向往，飘渺，挥洒自由，轻盈，有一种说不出来的妩媚，却一点也不张扬，透着些许的可爱与调皮，却能让人感觉清爽，像西湖的春风一样，要多么清爽就有多么清爽，要多么舒服就有多么舒服。更不用说，这样的衣服穿在女子的身上了！</P>
<P style="TEXT-INDENT: 2em">在边看边电视时，就在幻想，自己像白娘娘一样，穿着洁白如素的衣服飞行于山涧，竹林，飞越河流，飞越荒原，像只自由自在的小鸟一样。幻想的还有，那手指轻轻地交错，变动一下，便能达到自己想要的效果，比如某个东西，某扇门，某座小屋，真是太神奇了。要是我有那样的功能，我一定变很多我喜欢吃的酸梅粉，桔子，杨梅干，变很多美丽的衣服，漂亮的房子，变很多的花花草草，小鸟，变很多的钱，然后分给需要钱的人。</P>
<P style="TEXT-INDENT: 2em">那时的幻想太多，我那时以为自己经常幻想便可以实现。我多想看看自己长发的样子，可是我一直都是短发。因为头发太少，太少，只能留短发。但我的幻想始终没有结束，没有随着年龄的增长，自己的成长而结束，我一直是个爱幻想的人。</P>
<P style="TEXT-INDENT: 2em">白娘娘，是一个心地善良，温柔体帖的好女子。她就像一位母亲一样，让我感觉温暖，让我感觉到母性的温柔，体贴。她在我心目中就是这样的一个形象，以至于想到她，经常让我有种错觉，感觉有一双温柔的眼睛在看着我，或远或近，或清晰或模糊。我想，我自己一直这样的听话，乖巧，懂事，应该和这样的眼睛有关系，有白娘娘有关。</P>
<P style="TEXT-INDENT: 2em">记得，看过女娘娘的电视后，很长的一段时间，我都会一个人坐在屋后的草坪上，两腿盘坐着，以一个打坐的姿势坐着，双手合一，很虔诚地对着快落山的太阳许着愿，很认真地说着这样的字句：希望美丽的太阳姐姐能保佑我的家人，平平安安，希望我自己能变得漂亮，善良，美丽，温柔。眼睛是坚定的，明亮的。</P>
<P style="TEXT-INDENT: 2em">到了晚上，当月亮升起的时候，我会一个人坐在门墩上，仰望那轮明月，同样地姿势，我希望自己能普度众生，让家人，让邻居们过上好的日子，少一些生活的苦难，痛苦与折磨。小小的我，有着这样的思想，这样的举动，让家人很不解，但我始终没有跟他们解释，我始终相信，白娘娘会出现的，一定会出现的。</P>
<P style="TEXT-INDENT: 2em">当我渐渐长大，我的心里还是装着那个美丽，善良，聪明的白娘娘，她真的很美，可是，她真的过得很不好，受过这么多的磨难，所有的人都离开了她，所有的人都见不到她。水都想飞去看她，鸟儿也想去看她，更不用说水仙了，我真恨不得让塔倒掉，让白娘娘出来，永远地出来。</P>
<P style="TEXT-INDENT: 2em">她在我的心里永远是美丽的，我不容许任何人说她不好，记得在上小学三年级的时候，班上的一个男同学，说白娘娘是妖精，我听到后了，仗着班主任对我的好，罚他站了一个多小时，并且和他说，白娘娘是个非常善良的人。多年以后，在一次偶然间，我们相遇了，还讲起了那件事情，他问我是不是还如从前那般地喜欢白娘娘，我笑了笑，答道，是的，她在我的心目中，永远是最美的，最善良的，我学习的榜样。</P>
<P style="TEXT-INDENT: 2em">时过境迁，当时的那个小孩，早已长大了，当时的歌者，艺者，也已经老去了。而歌依旧没变，我的抽屉里还存在那盘磁带，封面是水仙与白娘娘，另一面写着歌词，十二首，一首不少。</P>
<P style="TEXT-INDENT: 2em">我的心目中，还装着那个美丽善良的白娘娘，如我的身上还是能捕捉到可爱，纯真，简单，纯粹，朴素，勤劳的身影。</P>
<P style="TEXT-INDENT: 2em">这部电视，我一直喜欢，会永远喜欢的，那些歌也是一样，永远喜欢，永远也不会老去的。因为她们早已存在我的记忆深处，早已烙印下来了。只要我一听到这些歌，或者看到相关的画面，我就重游般地重温那些美好的片段，重温当时的自己，重走当时的路，记忆的丝线就被它们牵起，紧紧地牵引着。</P>
<P style="TEXT-INDENT: 2em">这些歌已经被人们吟唱很久了，却永远不会老，如白娘娘在我的心目中的地位，永远都不会老。而我因为有这些歌，会永远年轻的！</P>
<P style="TEXT-INDENT: 2em">不老的歌，不老的故事！ </P>
<P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"><IMG title=点击在新窗口打开图片 src="http://static7.photo.sina.com.cn/orignal/4972d5e36de41bbbf7366" (this.width picError.gif?? images>&nbsp;</P>
<P style="TEXT-INDENT: 2em">&nbsp;</P></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/2651006200832653848969</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/2651006200832653848969</guid>
    <pubDate>Sat, 26 Apr 2008 17:38:48 +0800</pubDate>
    <dcterms:modified>2008-04-26T17:40:24+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[经典的背景音乐 【转】]]></title>	
    <link>http://jkate.blog.163.com/blog/static/2651006200832653656433</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">&nbsp;</P>
<P style="TEXT-INDENT: 2em"></P>
<P style="TEXT-INDENT: 2em"><IMG src="http://club.chinaceot.com/attachments/544093_16dao_2_Uyp3crQufOrI.jpg" border=0></P>
<P style="TEXT-INDENT: 2em">一个人的夜里，一轮明月，一名女子，一首曲子，在寂静的夜里像流浪的人一样，漫无目的穿行着。沙漠，高山，雪山，大海，都留有足迹，都留有余音。</P>
<P style="TEXT-INDENT: 2em">我来过，所以，我深深地记得。</P>
<P style="TEXT-INDENT: 2em">记住声音，动听，美妙，在音乐的世界里逐渐睡去，伴我无数个失眠的夜里。</P>
<P style="TEXT-INDENT: 2em">它们，真伟大，真神秘。</P>
<P style="TEXT-INDENT: 2em">让我享受这原本痛苦的夜里。</P>
<P style="TEXT-INDENT: 2em">　134.泰坦尼克号的所有曲目</P>
<P style="TEXT-INDENT: 2em">　　这部影片,我还没有完完整整地看完,我是一个不入主流的人,慢半拍或者几拍!</P>
<P style="TEXT-INDENT: 2em">　　呵呵,并非刻意,只是习惯,不愿去改变,故不是一个时尚的人!</P>
<P style="TEXT-INDENT: 2em">　　这些背景音乐很熟悉,听了又听!!</P>
<P style="TEXT-INDENT: 2em">　　经典,也是精品!!</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　1.Never An Absolution</P>
<P style="TEXT-INDENT: 2em">　　http://218.5.70.20/main/wlsyb-new/ktyjwy/XKZH/yw/other/dzkb/6/20.tiantannikehao/music/01.mp3</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　2.Distant Memories</P>
<P style="TEXT-INDENT: 2em">　　3.Southampton</P>
<P style="TEXT-INDENT: 2em">　　4.Rose</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　5.Leaving Port (起航时分)</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　 http://music.7ting7.com/影视其它/T/泰坦尼克号/泰坦尼克号电影原声/7ting7.com_LEAVING%20PORT起航时分.wma</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　6.Take Her To Sea, Mr. Murdoch</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　http://wma.11265.com/folders/影视音乐/T/泰坦尼克号/泰坦尼克号电影原声/6.wma</P>
<P style="TEXT-INDENT: 2em">　　7.Hard To Starboard</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　http://www.pzhjq.com/camb/music/movie/taidanikehao/HARD_TO_STARBOARD.mp3</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　8.Unable To Stay, Unwilling To Leave</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　http://wma.11265.com/folders/影视音乐/T/泰坦尼克号/泰坦尼克号电影原声/8.wma</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　9.The Sinking</P>
<P style="TEXT-INDENT: 2em">　　http://218.5.70.20/main/wlsyb-new/ktyjwy/XKZH/yw/other/dzkb/6/20.tiantannikehao/music/05.mp3</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　10.Death Of Titanic</P>
<P style="TEXT-INDENT: 2em">　　http://wma.11265.com/folders/影视音乐/T/泰坦尼克号/泰坦尼克号电影原声/10.wma</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　11.A Promise Kept</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　http://218.5.70.20/main/wlsyb-new/ktyjwy/XKZH/yw/other/dzkb/6/20.tiantannikehao/music/07.mp3</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　12.A Life So Changed</P>
<P style="TEXT-INDENT: 2em">　　http://218.5.70.20/main/wlsyb-new/ktyjwy/XKZH/yw/other/dzkb/6/20.tiantannikehao/music/08.mp3</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　这曲是我最喜欢的!!</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　13.An Oes cean Of Memori</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　14.My Heart Will Go On</P>
<P style="TEXT-INDENT: 2em">　　http://www.cqfljz.com/homepages/user361_1/yinyue/My%20Heart%20Will%20Go%20On.mp3</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　15.Hymn To The Sea</P>
<P style="TEXT-INDENT: 2em">　　http://www.hengss.com/skin/CodesFan_com/1.wma</P>
<P style="TEXT-INDENT: 2em">　135.背景音乐 肖邦钢琴曲</P>
<P style="TEXT-INDENT: 2em">　　富有深深地情感,如涓涓细流一样,如柳烟眉一样!</P>
<P style="TEXT-INDENT: 2em">　　特别是在夜深人静的时候,听着这样的音乐,总是有想写的冲动!</P>
<P style="TEXT-INDENT: 2em">　　http://www.kav-it.com/images/piano.wma</P>
<P style="TEXT-INDENT: 2em">　　136.火影 白死时之音</P>
<P style="TEXT-INDENT: 2em">　　昨天开始看炎影,同事很早就叫我去看看!</P>
<P style="TEXT-INDENT: 2em">　　鸣人的精神,积极乐观的生活态度,给我留下了很深的印象.　　</P>
<P style="TEXT-INDENT: 2em">　　http://dmt.ppshare.com/yy/mp3/hyrz/ost/08%20-%20sadness%20and%20sorrow.wma</P>
<P style="TEXT-INDENT: 2em">　　138.you are my love</P>
<P style="TEXT-INDENT: 2em">　　很动听的声音,让我想到了可爱的小精灵,在你的周围跳来跳去,不知疲惫!</P>
<P style="TEXT-INDENT: 2em">　　你会厌烦这个小精灵吗?</P>
<P style="TEXT-INDENT: 2em">　　不,,你非常的喜欢它,不能缺少,如果她突然不在你的周围,你会觉得少了很多东西.</P>
<P style="TEXT-INDENT: 2em">　　http://www.mvelf.com/flash/JPYouAreMyLove.mp3</P>
<P style="TEXT-INDENT: 2em">　138：燕子</P>
<P style="TEXT-INDENT: 2em">　　昨天看《男人上路》时，里面的插曲，这样的插曲，把我置身于天山里，让我看到了天山的美，同时也让我感觉有些隐隐地痛～　　</P>
<P style="TEXT-INDENT: 2em">　　http://music.cnnb.com.cn/music/合辑/西域情歌/西域情歌/黄灿-燕子.wma</P>
<P style="TEXT-INDENT: 2em">　140。Hall of Symbols</P>
<P style="TEXT-INDENT: 2em">　　炎热的酷暑，寒冷的冰雪，艰难的爬上山峰，忍受一切的折磨，只是为了释放手中的一张白纸。痴痴的看着那张白纸在没有阻隔的空间里，徘徊，飞翔，感受他的快乐和自由，仿佛那就是我。自由翱翔在空间里，没有牵挂，没有负累，那多好。不由的闭上眼睛，感觉空气的流动从身体的擦身而过。</P>
<P style="TEXT-INDENT: 2em">　　http://bbs.liaohe.net.cn/UploadFile/2005-9/200591115124482.wma　　</P>
<P style="TEXT-INDENT: 2em">　　选自Rytthm of the Acients</P>
<P style="TEXT-INDENT: 2em">　　远古的韵律</P>
<P style="TEXT-INDENT: 2em">　　141.回家 萨克斯</P>
<P style="TEXT-INDENT: 2em">　　音乐响起时，脚步就开始慢慢地移动着，牵着你心底最脆弱的那根弦，让你想到了温暖，快乐，幸福这些字眼，</P>
<P style="TEXT-INDENT: 2em">　　是喜也是忧，淡淡的乡愁，淡淡的甜蜜！　　</P>
<P style="TEXT-INDENT: 2em">　　http://www.qdbeidou.com/music/huijia.wma</P>
<P style="TEXT-INDENT: 2em">　143.GOOD EVENING HEARTACHE</P>
<P style="TEXT-INDENT: 2em">　　再熟悉不过的曲子，丝丝缕缕，飘浮在温暖的房间里。</P>
<P style="TEXT-INDENT: 2em">　　是淡淡的忧愁，还有那化不开，解不开的思念。</P>
<P style="TEXT-INDENT: 2em">　　http://www.ljlxx.com/blog/media/tls.mp3</P>
<P style="TEXT-INDENT: 2em">　　142。往事如昔</P>
<P style="TEXT-INDENT: 2em">　　如习习的凉风一样，眼泪在眼眶里打转，是因为这风，还是因为别的！</P>
<P style="TEXT-INDENT: 2em">　　呆呆地站立着，心却到了另外一个世界，让你感动，让你温暖。身在其中，却触摸不到，你以为拥有了，抓紧了，但在瞬间，就不见了！　　</P>
<P style="TEXT-INDENT: 2em">　　http://bbs.liaohe.net.cn/UploadFile/2005-8/2005815224422629.wma</P>
<P style="TEXT-INDENT: 2em">　　145.Heaven on earth 人间天上</P>
<P style="TEXT-INDENT: 2em">　　是在飘着雪的夜里听到的吗？</P>
<P style="TEXT-INDENT: 2em">　　还是在繁星闪烁的夜里听到？</P>
<P style="TEXT-INDENT: 2em">　　仰望夜空，星星，月亮还在</P>
<P style="TEXT-INDENT: 2em">　　他们在唱着这样的曲子</P>
<P style="TEXT-INDENT: 2em">　　人间天上，天上人间</P>
<P style="TEXT-INDENT: 2em">　　一个在天上，一个在人间。</P>
<P style="TEXT-INDENT: 2em">　　http://www.sswgolf.com/sound.wma</P>
<P style="TEXT-INDENT: 2em">　　　145. Heaven Shannon Morx Marx</P>
<P style="TEXT-INDENT: 2em">　　轻快的旋律，加上天簌之音，让人甚是回味。</P>
<P style="TEXT-INDENT: 2em">　　随着音乐起跳，随着叶子起舞，</P>
<P style="TEXT-INDENT: 2em">　　这是年轻的感觉，幸福。</P>
<P style="TEXT-INDENT: 2em">　　http://www.xbzh.net/dvbbs/UploadFiletee/2005524281091971.mp3</P>
<P style="TEXT-INDENT: 2em">　146.丝桐梅花断 铮铮七弦绝</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　丝桐梅花断 铮铮七弦绝 高山汇流水 网路遇知音 　　</P>
<P style="TEXT-INDENT: 2em">　　http://www.jsw118.com/bbs/UploadFile/2005-8/2005825205929873.mp3</P>
<P style="TEXT-INDENT: 2em">　　147。高山流水</P>
<P style="TEXT-INDENT: 2em">　　古筝，一直就很喜欢。听名字便很有古韵。</P>
<P style="TEXT-INDENT: 2em">　　高山流水，一个人，弹着曲子，那如梦如烟的感觉。　　</P>
<P style="TEXT-INDENT: 2em">　　http://www.91yes.cn/inc/gaoshanliushui.WMA</P>
<P style="TEXT-INDENT: 2em">　　148。The Entertainer Scott Joplin</P>
<P style="TEXT-INDENT: 2em">　　在头脑迷糊时，一曲这样的音乐响起，原来置于黑暗里，刹时就变成了光明，清晨的一缕阳光，鸟儿的叫声。</P>
<P style="TEXT-INDENT: 2em">　　睁开眼睛，便可以看到一切了。</P>
<P style="TEXT-INDENT: 2em">　　http://www.keystone-music.com/audio/Joplin-Entertainer.mp3</P>
<P style="TEXT-INDENT: 2em">149。古典圣诞歌曲 1 Ave Maria 圣母颂 Celine Dion Franz Schubert</P>
<P style="TEXT-INDENT: 2em">很轻柔的音乐，伴着一个温暖的声音，在淡淡地说着什么，诉说什么呢？</P>
<P style="TEXT-INDENT: 2em">是在讲圣母的故事吗？还是在祈祷什么呢？</P>
<P style="TEXT-INDENT: 2em">静静地听着，眼泪不知不觉地落下，是温热的！</P>
<P style="TEXT-INDENT: 2em">是因为感动吗？还是因为别的！</P>
<P style="TEXT-INDENT: 2em">http://www.santateresadeavila.com/descarga/celine%20dion%20-%20ave%20maria.mp3</P>
<P style="TEXT-INDENT: 2em">　《火影忍者》里的配乐非常的好，和剧情相配得丝丝入扣。现在很多电视台的节目都在引用《火影》里的配乐。《犬夜叉》的配乐也是我的最爱。</P>
<P style="TEXT-INDENT: 2em">　　范宗沛的《孽子》原声大碟里的每一首都很经典，尤其那曲《杨柳》更是被广为引用。还有他《水色》专辑里那首“摆渡人之歌”感觉难以形容。地址：http://www.banks.com.cn/tim/music/ferry.mp3</P>
<P style="TEXT-INDENT: 2em">　　电影《青蛇》里的配乐如《流水浮灯》、《思情》、《初遇》等都很不错。</P>
<P style="TEXT-INDENT: 2em">　　电影《摩托日记》的片尾曲“De usuahia a la quiaca”我是找了很久才找到的，每一个音符都充满了浓郁的南美风情。</P>
<P style="TEXT-INDENT: 2em">　　下载地址：http://www.motorcyclediariesmovie.com/player/music/high/17.mp3</P>
<P style="TEXT-INDENT: 2em">　　梁邦彦：他虽然是日籍韩裔人，但他的很多音乐却有浓浓的中国风，听听“风之誓言”就知道了。地址：http://www.ginkgos.net/music/fengzsy.wma</P>
<P style="TEXT-INDENT: 2em">　　神思者、雅尼、喜多郎大家都很熟悉，不再赘述。</P>
<P style="TEXT-INDENT: 2em">　144.lovemetender 猫王</P>
<P style="TEXT-INDENT: 2em">　　还是情不自禁地帖上了这首歌曲。</P>
<P style="TEXT-INDENT: 2em">　　很多人，逝者的歌不能经常听，或许要在特定的时间听。什么是特定的时间呢？</P>
<P style="TEXT-INDENT: 2em">　　记不清是在什么时候，接触到了这样的声音，只知道那是一个很冷的夜里，在街上漫无目的走着，他的声音响起，我就这样呆住了，像一个木桩一样。</P>
<P style="TEXT-INDENT: 2em">　　开始喜欢上了这样的声音。</P>
<P style="TEXT-INDENT: 2em">　　纪念一下吧，就当是满足一下我个人的欲望。</P>
<P style="TEXT-INDENT: 2em">　　http://218.4.48.134/upfiles/20044142021272231.mp3</P>
<P style="TEXT-INDENT: 2em">　　145.Europa 02 Seveness</P>
<P style="TEXT-INDENT: 2em">　　在听克利斯《梦回欧罗巴》时，无意中听到了另一首曲子。</P>
<P style="TEXT-INDENT: 2em">　　便是此曲。</P>
<P style="TEXT-INDENT: 2em">　　惊喜，如同这曲子一样，在漫无目的时，便有着意外的收获。</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　http://music.popwind.com/music/Europa/Europa-02.wma</P>
<P style="TEXT-INDENT: 2em">　　146.Together Again经典复古</P>
<P style="TEXT-INDENT: 2em">　　轻快，仿佛走在大气辉煌的盛唐里！</P>
<P style="TEXT-INDENT: 2em">　　从古到今，每一步都是经典的，快乐的，微笑着的</P>
<P style="TEXT-INDENT: 2em">　　从旦古走来，从梦境走来，走来！</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　http://fs0.family.139.com/FamilyFile/0/35/music110/Audio/200610292000483133255.mp3</P>
<P style="TEXT-INDENT: 2em">　　147.10 暗然的美丽~Mono Formica Blues</P>
<P style="TEXT-INDENT: 2em">　　夜里绽放的花朵，尽管是这样的悄无声息，但还是有一双温柔的眼睛在定定地看着你，注视着你的一举一动。</P>
<P style="TEXT-INDENT: 2em">　　你听，还有很多人和着你的节奏在跳舞呢！</P>
<P style="TEXT-INDENT: 2em">　　你是美丽的，并且是神秘的！</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　http://www.wzzhigao.com/~lj/mono/10.mp3</P>
<P style="TEXT-INDENT: 2em">　　148。心经 金刚经 天籁佛音</P>
<P style="TEXT-INDENT: 2em">　　静静地聆听，静化心灵！</P>
<P style="TEXT-INDENT: 2em">　　如莲花般洁静</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　http://www.xslh.com/fy/qx/fch/hhy/dbz2.wma</P>
<P style="TEXT-INDENT: 2em"></P></div>]]></description>
	    <author><![CDATA[～～飞儿宝贝 ～～]]></author>
	    <comments>http://jkate.blog.163.com/blog/static/2651006200832653656433</comments>
    <slash:comments>0</slash:comments>
    <guid isPermaLink="true">http://jkate.blog.163.com/blog/static/2651006200832653656433</guid>
    <pubDate>Sat, 26 Apr 2008 17:36:56 +0800</pubDate>
    <dcterms:modified>2008-04-26T17:36:56+08:00</dcterms:modified>
  </item>    
  <item>
  	<title><![CDATA[『音乐天地』经典的背景音乐(二) 【转】]]></title>	
    <link>http://jkate.blog.163.com/blog/static/2651006200832653535667</link>
    <description><![CDATA[<div><P style="TEXT-INDENT: 2em">作者：天空下的兰儿　回复日期：2006-11-26　13:52:05　 </P>
<P style="TEXT-INDENT: 2em">　　32。[幽灵公主]优美原声音乐大碟</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　迅雷下载</P>
<P style="TEXT-INDENT: 2em">　　<A href="http://download.it.com.cn/softweb/game/comic/comicmusic/20053/10188.html">http://download.it.com.cn/softweb/game/comic/comicmusic/20053/10188.html</A></P>
<P style="TEXT-INDENT: 2em">作者：hxlady　回复日期：2006-11-26　13:56:26　 </P>
<P style="TEXT-INDENT: 2em">　　楼主有没有办法找到金马奖颁奖典礼上的背影音乐,好像叫什么金马奔腾.</P>
<P style="TEXT-INDENT: 2em">　　我一直找不到,看楼主神通广大,能否帮我找到它.我很喜欢那个背影音乐</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　谢谢</P>
<P style="TEXT-INDENT: 2em">作者：水草甫　回复日期：2006-11-26　14:48:51　 </P>
<P style="TEXT-INDENT: 2em">　　哪位朋友知道中央电视台晚安那首钢琴曲啊 ，确实经典，知道的朋友求你告诉我好吗，感激不尽。旋律大概是这样的5（低8）2--33----71（高8）55--17（低8）165----71（高8）55---17（低8）154----。。。。。</P>
<P style="TEXT-INDENT: 2em">　　33.叶塞尼亚的主题曲</P>
<P style="TEXT-INDENT: 2em">　　永恒的记忆</P>
<P style="TEXT-INDENT: 2em">　　听这首曲子的时候，我总是风筝与风，线，还有放风筝的人！！</P>
<P style="TEXT-INDENT: 2em">　　也是常用的背景音乐！ 　　</P>
<P style="TEXT-INDENT: 2em">　　<A href="http://heart5.chinap4.com/E680/resources/themes/yesainiya.mp3">http://heart5.chinap4.com/E680/resources/themes/yesainiya.mp3</A></P>
<P style="TEXT-INDENT: 2em">　　34.大话西游电影原声带</P>
<P style="TEXT-INDENT: 2em">　　有几首插曲,也是常用的,伤感的,扑面而来!</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　1、ONLY YOU - 罗家英 </P>
<P style="TEXT-INDENT: 2em">　　2、浮尘 - 卢冠廷 </P>
<P style="TEXT-INDENT: 2em">　　3、故事 （粤语电影对白） </P>
<P style="TEXT-INDENT: 2em">　　4、追梦 - 朱茵 </P>
<P style="TEXT-INDENT: 2em">　　5、配乐：大话西游 </P>
<P style="TEXT-INDENT: 2em">　　6、一生所爱 - 卢冠廷 </P>
<P style="TEXT-INDENT: 2em">　　7、未了情 - 莫文蔚 </P>
<P style="TEXT-INDENT: 2em">　　8、配乐：大话西游 </P>
<P style="TEXT-INDENT: 2em">　　9、故事 II （粤语电影对白） </P>
<P style="TEXT-INDENT: 2em">　　10、配乐：西天取经路遥迢 </P>
<P style="TEXT-INDENT: 2em">　　11、配乐：漫天神佛闹悟空 </P>
<P style="TEXT-INDENT: 2em">　　<A href="http://202.103.25.159/cine/cd/021/01.mp3">http://202.103.25.159/cine/cd/021/01.mp3</A> </P>
<P style="TEXT-INDENT: 2em">　　<A href="http://202.103.25.159/cine/cd/021/02.mp3">http://202.103.25.159/cine/cd/021/02.mp3</A> </P>
<P style="TEXT-INDENT: 2em">　　<A href="http://202.103.25.159/cine/cd/021/03.mp3">http://202.103.25.159/cine/cd/021/03.mp3</A> </P>
<P style="TEXT-INDENT: 2em">　　<A href="http://202.103.25.159/cine/cd/021/04.mp3">http://202.103.25.159/cine/cd/021/04.mp3</A> </P>
<P style="TEXT-INDENT: 2em">　　<A href="http://202.103.25.159/cine/cd/021/05.mp3">http://202.103.25.159/cine/cd/021/05.mp3</A> </P>
<P style="TEXT-INDENT: 2em">　　<A href="http://202.103.25.159/cine/cd/021/06.mp3">http://202.103.25.159/cine/cd/021/06.mp3</A> </P>
<P style="TEXT-INDENT: 2em">　　<A href="http://202.103.25.159/cine/cd/021/07.mp3">http://202.103.25.159/cine/cd/021/07.mp3</A> </P>
<P style="TEXT-INDENT: 2em">　　<A href="http://202.103.25.159/cine/cd/021/08.mp3">http://202.103.25.159/cine/cd/021/08.mp3</A> </P>
<P style="TEXT-INDENT: 2em">　　<A href="http://202.103.25.159/cine/cd/021/09.mp3">http://202.103.25.159/cine/cd/021/09.mp3</A> </P>
<P style="TEXT-INDENT: 2em">　　<A href="http://202.103.25.159/cine/cd/021/10.mp3">http://202.103.25.159/cine/cd/021/10.mp3</A> </P>
<P style="TEXT-INDENT: 2em">　　<A href="http://202.103.25.159/cine/cd/021/11.mp3">http://202.103.25.159/cine/cd/021/11.mp3</A></P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　35。30minutes-Tatu</P>
<P style="TEXT-INDENT: 2em">　　清澈的声音，一点一点地拔动你的心弦，让你有种说不上来的感觉，迷离，奇异，就像站在雨中，看着雨打在地面上，听着雨的声音。比较抒情的一首歌，也是常用的背景音乐！　　</P>
<P style="TEXT-INDENT: 2em">　　<A href="http://zwym.net/upload/mov/30minutes.wma">http://zwym.net/upload/mov/30minutes.wma</A></P>
<P style="TEXT-INDENT: 2em">　36。《殇》-- 倩女幽魂中的电视剧配乐 </P>
<P style="TEXT-INDENT: 2em">　　柔柔轻拨，感伤的旋律，微痛的驿动，是心愁的缓泻，淡淡的忧愁。深深的哀怨、浓浓的情殇，非常出色，深深地被吸引了，甘愿沉溺在其中，甘愿！</P>
<P style="TEXT-INDENT: 2em">　　大提琴是弓弦乐器中的低音乐器，它的音色具有人声的歌唱美 大提琴的高音区开朗、壮丽，有如男高音的气质， 中音区丰满、坚实，低音区是浑厚、深沉。大提琴低音部分的浑厚深沉，更震撼于它的哀和死。　　</P>
<P style="TEXT-INDENT: 2em">　　<A href="http://www.yiyang.org/canpin/Manage/ubbimg/youhuen.wma">http://www.yiyang.org/canpin/Manage/ubbimg/youhuen.wma</A></P>
<P style="TEXT-INDENT: 2em">　　37.雨的秘密</P>
<P style="TEXT-INDENT: 2em">　　关于缠绵，关于离别，关于思念，关于绯侧，关于寂寞，关于渴望，是你的秘密，其实也是雨的秘密。</P>
<P style="TEXT-INDENT: 2em">　　细腻的事物，已经看透了你的心事，可你却看不透那雨的心事，那无尽的细雨。</P>
<P style="TEXT-INDENT: 2em">　　于是，倾听成了最重要的途径了！</P>
<P style="TEXT-INDENT: 2em">　　<A href="http://www.xslh.com/upload/forum/2005070212490196.wma">http://www.xslh.com/upload/forum/2005070212490196.wma</A></P>
<P style="TEXT-INDENT: 2em">　　38。classicriver（灰色空间）</P>
<P style="TEXT-INDENT: 2em">　　最初听的是灰色空间这首歌，后来才知classicriver曲子的。优美伤感的旋律，不紧不慢的响起，孤独，寂寞也随之而来，生命，爱情，友情，金钱，还有那痛苦不堪的记忆，缓缓地被它勾起，像徐徐上升的烟雾一样，缠绵绯侧！</P>
<P style="TEXT-INDENT: 2em">　　这应该也是经典之作吧！</P>
<P style="TEXT-INDENT: 2em">　　<A href="http://www.gyvnet.com/music_new/web/user/usermusic/14822/2006060718115344691.mp3">http://www.gyvnet.com/music_new/web/user/usermusic/14822/2006060718115344691.mp3</A></P>
<P style="TEXT-INDENT: 2em">　　39。咖啡香的清晨 </P>
<P style="TEXT-INDENT: 2em">　　相信大家应该听过，也是比较经典的吧！！</P>
<P style="TEXT-INDENT: 2em">　　听着这样的音乐，仿佛置身于一个秘密花园里，群山环绕，小河，青草地，还有那迷漫着的咖啡香，以及停在窗前的那只小鸟！</P>
<P style="TEXT-INDENT: 2em">　　美好的生活，也是人人向往的生活！</P>
<P style="TEXT-INDENT: 2em">　　很美，在音乐的世界里，尽情地享受！“达意外之意，无为而无不有”，如此的神奇！　　</P>
<P style="TEXT-INDENT: 2em">　　<A href="http://218.75.106.218:8090/0069/11804.mp3">http://218.75.106.218:8090/0069/11804.mp3</A></P>
<P style="TEXT-INDENT: 2em">　　40。清香满山月 之</P>
<P style="TEXT-INDENT: 2em">　　 "茶烟轻扬落花风 福建春茶"</P>
<P style="TEXT-INDENT: 2em">　　</P>
<P style="TEXT-INDENT: 2em">　　茶，是个好东西，好东西自然会有好的音乐陪伴，闲情听茶，品茶。茶文化是中国的传统文化，可惜现在，真正懂茶的人并不多。红楼梦是，妙玉的一翻茶之说，让不懂茶的人也稍微懂了，让更懂茶的更懂了。</P>
<P style="TEXT-INDENT: 2em">　　茶和做人有着必要的联系，好茶，好音乐，好生活。　　</P>
<P style="TEXT-INDE