<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_好好学习，天天向上</title><subtitle type="text">还是好好学习，天天向上</subtitle><id>http://feed.cnblogs.com/blog/u/17641/rss</id><updated>2011-11-29T05:57:00Z</updated><author><name>ideas</name><uri>http://www.cnblogs.com/ideas/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ideas/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/17641/rss"/><entry><id>http://www.cnblogs.com/ideas/archive/2011/11/29/2267530.html</id><title type="text">从 datetime2 数据类型到 datetime 数据类型的转换产生一个超出范围的值。</title><summary type="text">在使用Entity Framework操作数据库时遇到的这个错误。 这个错误比较奇怪，在园子里看到一位兄弟写到有位大哥提出的原因是：http://www.cnblogs.com/plwang1990/articles/2025334.html sqlServer2008中提供datetime2类型的数据（比datetime更精确），而用entity framework4会默认的把C#中的 ...</summary><published>2011-11-29T05:53:00Z</published><updated>2011-11-29T05:53:00Z</updated><author><name>ideas</name><uri>http://www.cnblogs.com/ideas/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ideas/archive/2011/11/29/2267530.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ideas/archive/2011/11/29/2267530.html"/><content type="html">&lt;p&gt;在使用Entity Framework操作数据库时遇到的这个错误。&lt;/p&gt;  &lt;p&gt;这个错误比较奇怪，在园子里看到一位兄弟写到有位大哥提出的原因是：&lt;a href="http://www.cnblogs.com/plwang1990/articles/2025334.html"&gt;http://www.cnblogs.com/plwang1990/articles/2025334.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#160; sqlServer2008中提供datetime2类型的数据（比datetime更精确），而用entity framework4会默认的把C#中的      &lt;br /&gt;System.DateTime类转化成sqlServer2008中的datetime2类型，而你的数据库中的元素的属性设的是datetime类型，       &lt;br /&gt;把datetime2转化成datetime系统会认为会丢失数据，所以会报错。（感觉这TM是设计缺陷吧！这是熟么默认设置啊！） &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;经过调试发现，这位大哥说的当并不完全正确。SqlServer的datetime有效范围是1753 年 1 月 1 日到 9999 年 12 月 31 日，如果超出这个范围，EF就会把datetime转换为datetime2，也就是会出现上面的错误。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ideas/aggbug/2267530.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ideas/archive/2011/11/29/2267530.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ideas/archive/2011/11/14/2248329.html</id><title type="text">移除google搜索结果中烦人的URL跟踪跳转</title><summary type="text">在点击google搜索结果时，google会在结果的URL前做个跳转，且有时这个跳转地址会被墙，这样极大的影响对搜索引擎的使用体验。 本方法只针对google chrome浏览器，解决方法很简单，因为chrome已经原生支持Greasemonkey脚本，所以只需要写下面一段脚本，然后导chrome既可： var url = window.location.href.toLowerCase...</summary><published>2011-11-14T06:14:00Z</published><updated>2011-11-14T06:14:00Z</updated><author><name>ideas</name><uri>http://www.cnblogs.com/ideas/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ideas/archive/2011/11/14/2248329.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ideas/archive/2011/11/14/2248329.html"/><content type="html">&lt;p&gt;在点击google搜索结果时，google会在结果的URL前做个跳转，且有时这个跳转地址会被墙，这样极大的影响对搜索引擎的使用体验。&lt;/p&gt;  &lt;p&gt;本方法只针对google chrome浏览器，解决方法很简单，因为chrome已经原生支持Greasemonkey脚本，所以只需要写下面一段脚本，然后导chrome既可：&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;var url = window.location.href.toLowerCase();   &lt;br /&gt;if (url.indexOf(&amp;quot;www.google.com.hk&amp;quot;) &amp;gt;= 0 || url.indexOf(&amp;quot;/search&amp;quot;) &amp;gt;= 0)    &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var all = document.querySelectorAll(&amp;quot;*&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; for (var i = 0; i &amp;lt; all.length; i ++)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; all[i].onmousedown=null;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ideas/aggbug/2248329.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ideas/archive/2011/11/14/2248329.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ideas/archive/2011/08/25/2153563.html</id><title type="text">关于分页存储过程的优化【让数据库按我们的意思执行查询计划】</title><summary type="text">先来对比两段分页SQL，假设条件：news表有15万记录，NewsTypeId=10有9万记录，当前查询NewsTypeID=10。那么，你会认为哪个SQL效率会高呢？--代码一DECLARE @cc INTSELECT NewsId,ROW_NUMBER() OVER(ORDER BY SortNum DESC) AS RowIndex INTO #tb FROM news WITH(NOLOCK) WHERE NewsTypeId=@NewsTypeId AND IsShow=1SET @cc = @@ROWCOUNTSELECT n.* FROM news AS n WITH(NOLOC</summary><published>2011-08-25T09:28:00Z</published><updated>2011-08-25T09:28:00Z</updated><author><name>ideas</name><uri>http://www.cnblogs.com/ideas/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ideas/archive/2011/08/25/2153563.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ideas/archive/2011/08/25/2153563.html"/><content type="html">&lt;p&gt;先来对比两段分页SQL，假设条件：news表有15万记录，NewsTypeId=10有9万记录，当前查询NewsTypeID=10。那么，你会认为哪个SQL效率会高呢？&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008000;"&gt;--代码一&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #0000ff;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@cc&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;INT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; NewsId,ROW_NUMBER() &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt; SortNum &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;DESC&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt; RowIndex &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tb &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; news &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt;(NOLOCK) &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; NewsTypeId&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@NewsTypeId&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;AND&lt;/span&gt;&lt;span style="color: #000000;"&gt; IsShow&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@cc&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000; font-weight: bold;"&gt;@@ROWCOUNT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; n.&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; news &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; n &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt;(NOLOCK), #tb &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;As&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; t &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; t.RowIndex&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;@PageIndex&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;*&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;@PageSize&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; &lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;AND&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; t.RowIndex&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt;(&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;@PageIndex&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; text-decoration: underline;"&gt;1&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt;)&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;*&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;@PageSize&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; &lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;AND&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; t.newsid&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;=&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt;n.newsid&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@cc&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tb&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;pre&gt;&lt;span style="color: #008080;"&gt;--&lt;/span&gt;&lt;span style="color: #008080;"&gt;代码二&lt;/span&gt;&lt;span style="color: #008080;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;DECLARE&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@cc&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;INT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; NewsId,ROW_NUMBER() &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;OVER&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;ORDER&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;BY&lt;/span&gt;&lt;span style="color: #000000;"&gt; SortNum &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;DESC&lt;/span&gt;&lt;span style="color: #000000;"&gt;) &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;AS&lt;/span&gt;&lt;span style="color: #000000;"&gt; RowIndex &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tb &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000;"&gt; news &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000;"&gt;(NOLOCK) &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000;"&gt; NewsTypeId&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #008000;"&gt;@NewsTypeId&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;AND&lt;/span&gt;&lt;span style="color: #000000;"&gt; IsShow&lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #800000; font-weight: bold;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SET&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@cc&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #808080;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000; font-weight: bold;"&gt;@@ROWCOUNT&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;strong&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; NewsId &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;INTO&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; #tb2 &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; #tb &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;As&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; t &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; t.RowIndex&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;@PageIndex&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;*&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;@PageSize&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; &lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;AND&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; t.RowIndex&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt;(&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;@PageIndex&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;+&lt;/span&gt;&lt;span style="color: #800000; text-decoration: underline;"&gt;1&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt;)&lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;*&lt;/span&gt;&lt;span style="color: #008000; text-decoration: underline;"&gt;@PageSize&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; &lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; news &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;WITH&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt;(NOLOCK) &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;WHERE&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; NewsId &lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;IN&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; &lt;/span&gt;&lt;span style="color: #808080; text-decoration: underline;"&gt;*&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff; text-decoration: underline;"&gt;FROM&lt;/span&gt;&lt;span style="color: #000000; text-decoration: underline;"&gt; #tb2)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;SELECT&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #008000;"&gt;@cc&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tb&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;DROP&lt;/span&gt;&lt;span style="color: #000000;"&gt; &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;TABLE&lt;/span&gt;&lt;span style="color: #000000;"&gt; #tb2&lt;/span&gt;&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="color: #ff0000;"&gt;答案是代码二远远高于代码一&lt;/span&gt;&lt;/strong&gt;。在代码一中加粗代码的操作会引起整表扫描，因为数据库引擎在认为WHERE表达式中满足条件记录大于一定阀值的时候，就不再去进行查询优化，而直接使用表扫描。看执行信息，：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;表 'news'。扫描计数 1，逻辑读取 342 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(98361 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(1 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(40 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;表 '#tb________________________________________00000004C024'。扫描计数 1，逻辑读取 257 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;表 'news'。扫描计数 1，逻辑读取 2805 次，物理读取 0 次，预读 235 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(1 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(1 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span &gt;原本，我想的执行计划，&lt;/span&gt;加粗&lt;span &gt;部分的代码应该是聚焦索引查找，这样性能就提高很多。看代码二：&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;表 'news'。扫描计数 1，逻辑读取 342 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(98361 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(1 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;表 '#tb____________________________________00000004BEEF'。扫描计数 1，逻辑读取 257 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(40 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(1 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(40 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;表 'news'。扫描计数 0，逻辑读取 131 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;表 '#tb2___________________________________00000004BEF0'。扫描计数 1，逻辑读取 2 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(1 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;(1 行受影响)&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="color: #ff0000;"&gt;很明显，代码二与代码一中的IO操作数大大降低。且代码一随着@PageIndex越来越大，效率会越来越低；但代码二的效率不会随@PageIndex变化而改变。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ideas/aggbug/2153563.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ideas/archive/2011/08/25/2153563.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ideas/archive/2011/05/18/2049744.html</id><title type="text">DiscuzNT首页版块提取优化</title><summary type="text">最近论坛更换为DiscuzNT，在对数据库监测过程发现[dnt_getindexforumlist]这个存储过程的lob逻辑读取次数过大，且等待时间也相对较长。查看存储过程源码发现，其实这个存储过程很简单，也就是dbo.dnt_forums和dbo.dnt_forumfields两个表关联查询。主要原因出现在dbo.dnt_forumfields这个表上，该表共有text和ntext类型字段10个。我们知道text是做为LOB对象来存储的，在实际的存储中，数据记录页上存储的是该字段的一个指针，真正的数据是存储在LOB数据页上。因此查询每一条记录时，都需要10次的IO来读取该字段的实际值。 解.</summary><published>2011-05-18T03:32:00Z</published><updated>2011-05-18T03:32:00Z</updated><author><name>ideas</name><uri>http://www.cnblogs.com/ideas/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ideas/archive/2011/05/18/2049744.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ideas/archive/2011/05/18/2049744.html"/><content type="html">&lt;p&gt;最近论坛更换为DiscuzNT，在对数据库监测过程发现[dnt_getindexforumlist]这个存储过程的lob逻辑读取次数过大，且等待时间也相对较长。查看存储过程源码发现，其实这个存储过程很简单，也就是dbo.dnt_forums和dbo.dnt_forumfields两个表关联查询。主要原因出现在dbo.dnt_forumfields这个表上，该表共有text和ntext类型字段10个。我们知道text是做为LOB对象来存储的，在实际的存储中，数据记录页上存储的是该字段的一个指针，真正的数据是存储在LOB数据页上。因此查询每一条记录时，都需要10次的IO来读取该字段的实际值。&lt;/p&gt;&#xD;
&lt;p&gt;解决方案很简单，只需要把text换为varchar(max)，把ntext换为nvarchar(max)既可。为什么这样就能减少IO次数，提高性能呢？因为，varchar(max)类型的实际长度如果在8000字节以下，这个值将被做为普通的varchar类型来处理，只有在长度超赤8000时，才被做为LOB对象来存储。 &lt;/p&gt;&#xD;
&lt;p&gt;我们论坛的版块有290个，优化之后ＩＯ次数立马见分晓。 &lt;/p&gt;&#xD;
&lt;p&gt;优化之前的IO信息： &lt;/p&gt;&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
&lt;p&gt;&lt;em&gt;表 'dnt_forumfields'。扫描计数 1，&lt;span style="color: #ff0000;" color="#ff0000"&gt;逻辑读取 77 次&lt;/span&gt;，物理读取 0 次，预读 0 次，&lt;span style="color: #ff0000;" color="#ff0000"&gt;lob 逻辑读取 5801 次&lt;/span&gt;，lob 物理读取 0 次，lob 预读 0 次。&lt;br /&gt;表 'Worktable'。扫描计数 0，逻辑读取 0 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。&lt;br /&gt;表 'dnt_forums'。扫描计数 2，逻辑读取 298 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&#xD;
&lt;p&gt;优化之后的IO信息： &lt;/p&gt;&#xD;
&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&#xD;
&lt;p&gt;&lt;em&gt;表 'dnt_forumfields'。扫描计数 1，&lt;span style="color: #ff0000;" color="#ff0000"&gt;逻辑读取 2 次&lt;/span&gt;，物理读取 0 次，预读 0 次，&lt;span style="color: #ff0000;" color="#ff0000"&gt;lob 逻辑读取 0 次&lt;/span&gt;，lob 物理读取 0 次，lob 预读 0 次。&lt;br /&gt;表 'Worktable'。扫描计数 0，逻辑读取 0 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。&lt;br /&gt;表 'dnt_forums'。扫描计数 2，逻辑读取 298 次，物理读取 0 次，预读 0 次，lob 逻辑读取 0 次，lob 物理读取 0 次，lob 预读 0 次。&lt;/em&gt;&lt;/p&gt;&#xD;
&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/ideas/aggbug/2049744.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ideas/archive/2011/05/18/2049744.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ideas/archive/2011/05/12/zhaopin.html</id><title type="text">中国娱乐网招聘asp.net软件工程师</title><summary type="text">急着招人，不敢占用首页位置。之前发到招聘频道，好像没被看到几次，所以发到这里，如有不妥，还请见谅。---------------------------------------------------今天的娱乐网不同往昔了，现在已经被华杨联众收入旗下，各向福利待遇还是不错地……进入正题，其实下面写的都是费话，只要你是asp.net程序员，没必要看下面的内容，只需要记住联系方式，你懂得……联系方式：E-mail：sh#67.com （请把#换为@，你懂得）公司地址：建国门内贡院西街6工作地点：北京-东城工作年限：2年以上学历要求：大专招聘分类：.NET程序员工资范围：5000 ～ 10000福利</summary><published>2011-05-12T05:11:00Z</published><updated>2011-05-12T05:11:00Z</updated><author><name>ideas</name><uri>http://www.cnblogs.com/ideas/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ideas/archive/2011/05/12/zhaopin.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ideas/archive/2011/05/12/zhaopin.html"/><content type="html">&lt;div&gt;急着招人，不敢占用首页位置。之前发到招聘频道，好像没被看到几次，所以发到这里，如有不妥，还请见谅。&lt;/div&gt;&#xD;
&lt;div&gt;---------------------------------------------------&lt;/div&gt;&#xD;
&lt;div&gt;今天的娱乐网不同往昔了，现在已经被华杨联众收入旗下，各向福利待遇还是不错地&amp;hellip;&amp;hellip;&lt;/div&gt;&#xD;
&lt;div&gt;进入正题，其实下面写的都是费话，只要你是asp.net程序员，没必要看下面的内容，只需要记住联系方式，你懂得&amp;hellip;&amp;hellip;&lt;/div&gt;&#xD;
&lt;div&gt;联系方式：&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span  style="font: 14px/normal Verdana, Arial, 宋体, sans-serif; color: #222222; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2;"&gt;&lt;span  style="color: #333333; line-height: 21px; font-size: 12px;"&gt;E-mail：sh#67.com （请把#换为@，你懂得）&lt;br /&gt;公司地址：建国门内贡院西街6&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;span  style="font: 14px/normal Verdana, Arial, 宋体, sans-serif; color: #222222; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2;"&gt;&#xD;
&lt;ul  style="margin: 0px; padding: 5px 0px 0px; color: #333333; list-style-type: none;"&gt;&#xD;
&lt;li style="margin: 0px; padding: 0px; line-height: 1.8em; font-size: 12px; list-style-type: none;"&gt;工作地点：&lt;a href="http://job.cnblogs.com/offer/province/1/"  style="color: #333333; font-size: 12px; text-decoration: none;"&gt;北京&lt;/a&gt;&lt;span &gt;&amp;nbsp;&lt;/span&gt;-&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://job.cnblogs.com/offer/city/4/"  style="color: #333333; font-size: 12px; text-decoration: none;"&gt;东城&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li style="margin: 0px; padding: 0px; line-height: 1.8em; font-size: 12px; list-style-type: none;"&gt;工作年限：2年以上&lt;/li&gt;&#xD;
&lt;li style="margin: 0px; padding: 0px; line-height: 1.8em; font-size: 12px; list-style-type: none;"&gt;学历要求：大专&lt;/li&gt;&#xD;
&lt;li style="margin: 0px; padding: 0px; line-height: 1.8em; font-size: 12px; list-style-type: none;"&gt;招聘分类：&lt;a href="http://job.cnblogs.com/cate-.net/"  style="color: #333333; font-size: 12px; text-decoration: none;"&gt;.NET程序员&lt;/a&gt;&lt;/li&gt;&#xD;
&lt;li style="margin: 0px; padding: 0px; line-height: 1.8em; font-size: 12px; list-style-type: none;"&gt;工资范围：5000 ～ 10000&lt;/li&gt;&#xD;
&lt;li style="margin: 0px; padding: 0px; line-height: 1.8em; font-size: 12px; list-style-type: none;"&gt;福利待遇：带薪年假、病假，五险一金，每年一次免费旅游。&lt;/li&gt;&#xD;
&lt;li style="margin: 0px; padding: 0px; line-height: 1.8em; font-size: 12px; list-style-type: none;"&gt;招聘人数：2&lt;/li&gt;&#xD;
&lt;/ul&gt;&#xD;
&lt;span  style="font: 14px/normal Verdana, Arial, 宋体, sans-serif; color: #222222; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2;"&gt;&#xD;
&lt;h5  style="margin: 15px 15px 6px 0px; padding: 0px 0px 2px; width: 500px; font-size: 12px; font-weight: bold; border-bottom-color: #cccccc; border-bottom-width: 1px; border-bottom-style: dotted;"&gt;职位描述&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div  style="margin: 0px; padding: 0px; width: 580px; color: #333333; line-height: 1.8em; font-size: 12px;"&gt;1、负责网站现有程序的维护&lt;br /&gt;2、解决编辑人员提出的功能改进&lt;br /&gt;3、负责网站新功能产品的开发&lt;br /&gt;4、协助技术主管对网站进行性能优化&lt;/div&gt;&#xD;
&lt;/span&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;span  style="font: 14px/normal Verdana, Arial, 宋体, sans-serif; color: #222222; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2;"&gt;&#xD;
&lt;h5  style="margin: 15px 15px 6px 0px; padding: 0px 0px 2px; width: 500px; font-size: 12px; font-weight: bold; border-bottom-color: #cccccc; border-bottom-width: 1px; border-bottom-style: dotted;"&gt;职位要求&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;div  style="margin: 0px; padding: 0px; width: 580px; color: #333333; line-height: 1.8em; font-size: 12px;"&gt;1．两年以上的asp.net网站开发经验；&lt;br /&gt;2．精通C#语言，熟悉.Net框架，熟练使用VS.NET开发环境，理解并能熟练使用WebService，ASP.NET，ADO.NET、JS、CSS、HTML等技术；&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;3．熟悉SQL Server等数据库技术；&lt;span &gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;4．掌握面向对象设计编程思想；&lt;br /&gt;5．有大型网站开发经验者优先；&lt;br /&gt;6．诚实、正直、客观，良好的团队合作精神；&lt;br /&gt;----------------------------------------&lt;br /&gt;注：薪酬范围还是给出来吧，看不到数字，大家不积极呀。不过，事先说明这个是我给人事的建议范围，最终还要看能力来定。&lt;/div&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&#xD;
&lt;/span&gt;&#xD;
&lt;div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/span&gt;&#xD;
&lt;div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/ideas/aggbug/2044251.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ideas/archive/2011/05/12/zhaopin.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ideas/archive/2011/04/18/2019671.html</id><title type="text">几个有用的DMV查询</title><summary type="text">找出是否存在一个或多个等待获取 tempdb 中页面锁存器的线程SELECT session_id,wait_type, wait_duration_ms, resource_descriptionFROM sys.dm_os_waiting_tasksWHERE wait_type LIKE &amp;#39;PAGE%LATCH_%&amp;#39; AND resource_description LIKE &amp;#39;2:%&amp;#39;下面...</summary><published>2011-04-18T03:29:00Z</published><updated>2011-04-18T03:29:00Z</updated><author><name>ideas</name><uri>http://www.cnblogs.com/ideas/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ideas/archive/2011/04/18/2019671.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ideas/archive/2011/04/18/2019671.html"/><content type="html">&lt;p&gt;&lt;b&gt;找出是否存在一个或多个等待获取 tempdb 中页面锁存器的线程&lt;/b&gt;&lt;pre style="border-bottom: #aaaaaa 1px solid; border-left: #aaaaaa 1px solid; border-top: #aaaaaa 1px solid; border-right: #aaaaaa 1px solid" &gt;SELECT session_id,wait_type, wait_duration_ms, resource_description&#xD;
FROM sys.dm_os_waiting_tasks&#xD;
WHERE wait_type LIKE 'PAGE%LATCH_%' AND resource_description LIKE '2:%'&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;下面DMV查询来确认 tempdb 中当前引发最多分配和回收操作的执行查询&lt;/b&gt;&lt;/p&gt;&lt;pre style="border-bottom: #aaaaaa 1px solid; border-left: #aaaaaa 1px solid; border-top: #aaaaaa 1px solid; border-right: #aaaaaa 1px solid" &gt;SELECT TOP 10&#xD;
      t1.session_id, t1.request_id, t1.task_alloc, t1.task_dealloc,t2.plan_handle,&#xD;
      (SELECT SUBSTRING(text, t2.statement_start_offset/2 + 1,&#xD;
            (CASE WHEN statement_end_offset = -1&#xD;
                  THEN LEN(CONVERT(nvarchar(MAX), text)) * 2&#xD;
                  ELSE statement_end_offset&#xD;
            END - t2.statement_start_offset)/2)&#xD;
      FROM sys.dm_exec_sql_text(sql_handle)) AS query_text&#xD;
FROM (SELECT session_id, request_id,&#xD;
            SUM(internal_objects_alloc_page_count +&#xD;
            user_objects_alloc_page_count) AS task_alloc,&#xD;
            SUM(internal_objects_dealloc_page_count +&#xD;
            user_objects_dealloc_page_count) AS task_dealloc&#xD;
      FROM sys.dm_db_task_space_usage&#xD;
      GROUP BY session_id, request_id) AS t1,&#xD;
      sys.dm_exec_requests AS t2&#xD;
WHERE t1.session_id = t2.session_id AND&#xD;
      (t1.request_id = t2.request_id) AND t2.session_id &amp;gt; 50&#xD;
ORDER BY t1.task_alloc DESC&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;下面DMV查询找出当前执行事务或当前执行事务等待的锁&lt;/b&gt;&lt;/p&gt;&lt;pre style="border-bottom: #aaaaaa 1px solid; border-left: #aaaaaa 1px solid; border-top: #aaaaaa 1px solid; border-right: #aaaaaa 1px solid" &gt;SELECT request_session_id AS spid, resource_type AS rt,resource_database_id AS rdb,&#xD;
      (CASE resource_type&#xD;
            WHEN 'OBJECT' THENobject_name(resource_associated_entity_id)&#xD;
            WHEN 'DATABASE' THEN ' '&#xD;
            ELSE (SELECT object_name(object_id) FROM sys.partitionsWHERE hobt_id=resource_associated_entity_id)&#xD;
      END) AS objname,&#xD;
      resource_description as rd,&#xD;
      request_mode as rm,&#xD;
      request_status AS rs&#xD;
FROM sys.dm_tran_locks&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;下面查询得到正在被阻塞的查询&lt;/b&gt;&lt;/p&gt;&lt;pre style="border-bottom: #aaaaaa 1px solid; border-left: #aaaaaa 1px solid; border-top: #aaaaaa 1px solid; border-right: #aaaaaa 1px solid" &gt;--request_mode表示查询要请求的锁，resource_description中的mode=x表示该查询被阻塞的锁&#xD;
SELECT&#xD;
      t1.resource_type,&#xD;
      'database' = DB_NAME(resource_database_id),&#xD;
      'blk object' = t1.resource_associated_entity_id,&#xD;
      t1.request_mode,&#xD;
      t1.request_session_id,&#xD;
      t2.blocking_session_id,&#xD;
      t2.wait_duration_ms,&#xD;
      (SELECT SUBSTRING(text, t3.statement_start_offset/2+1,&#xD;
            (CASE WHEN t3.statement_end_offset = -1 THENLEN(CONVERT(nvarchar(max), text)) * 2&#xD;
            ELSE t3.statement_end_offset END -t3.statement_end_offset)/2)&#xD;
      FROM sys.dm_exec_sql_text(sql_handle)) AS query_text,&#xD;
      t2.resource_description&#xD;
FROM sys.dm_tran_locks AS t1, sys.dm_os_waiting_tasks AS t2,sys.dm_exec_requests AS t3&#xD;
WHERE t1.lock_owner_address = t2.resource_address AND&#xD;
      t1.request_request_id = t3.request_id AND&#xD;
      t2.session_id = t3.session_id&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;b&gt;下面查询返回表的索引被使用的情况&lt;/b&gt;&lt;/p&gt;&lt;pre style="border-bottom: #aaaaaa 1px solid; border-left: #aaaaaa 1px solid; border-top: #aaaaaa 1px solid; border-right: #aaaaaa 1px solid" &gt;SELECT index_id, range_scan_count, row_lock_count, page_lock_count&#xD;
FROM sys.dm_db_index_operational_stats(DB_ID('&amp;lt;db name&amp;gt;'),OBJECT_ID('table name'), NULL, NULL)&#xD;
&lt;/pre&gt;&lt;img src="http://www.cnblogs.com/ideas/aggbug/2019671.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ideas/archive/2011/04/18/2019671.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ideas/archive/2011/04/14/2016253.html</id><title type="text">【转】Iframe高度自适应（兼容IE/Firefox、同域/跨域）</title><summary type="text">本文转自：http://www.ccvita.com/376.html 在实际的项目进行中，很多地方可能由于历史原因不得不去使用iframe，包括目前正火热的应用开发也是如此。 随之而来的就是在实际使用iframe中，会遇到iframe高度的问题，由于被嵌套的页面长度不固定而显示出来的滚动条，不仅影响美观，还会对用户操作带来不便。于是自动调整iframe的高度就成为本文的重点。 采用JavaScr...</summary><published>2011-04-14T09:13:00Z</published><updated>2011-04-14T09:13:00Z</updated><author><name>ideas</name><uri>http://www.cnblogs.com/ideas/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ideas/archive/2011/04/14/2016253.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ideas/archive/2011/04/14/2016253.html"/><content type="html">&lt;p&gt;本文转自：&lt;a href="http://www.ccvita.com/376.html"&gt;http://www.ccvita.com/376.html&lt;/a&gt; &lt;p&gt;在实际的项目进行中，很多地方可能由于历史原因不得不去使用iframe，包括目前正火热的应用开发也是如此。 &lt;p&gt;随之而来的就是在实际使用iframe中，会遇到iframe高度的问题，由于被嵌套的页面长度不固定而显示出来的滚动条，不仅影响美观，还会对用户操作带来不便。于是自动调整iframe的高度就成为本文的重点。 &lt;p&gt;采用JavaScript来控制iframe元素的高度是iframe高度自适应的关键，同时由于JavaScript对不同域名下权限的控制，引发出同域、跨域两种情况。 &lt;p&gt;&lt;strong&gt;同域时Iframe高度自适应&lt;/strong&gt;&lt;br&gt;下面的代码兼容IE/Firefox浏览器，控制id为“iframeid”的iframe的高度，通过JavaScript取得被嵌套页面最终高度，然后在主页面进行设置来实现。 &lt;p&gt;代码如下，可复制。另外，请注意此解决方案仅供同域名下使用。 &lt;p&gt;&lt;pre style="border-bottom: #aaaaaa 1px solid; border-left: #aaaaaa 1px solid; border-top: #aaaaaa 1px solid; border-right: #aaaaaa 1px solid" &gt;&amp;lt;script type="text/javascript"&amp;gt;&#xD;
 function SetCwinHeight(){&#xD;
  var iframeid=document.getElementById("iframeid"); //iframe id&#xD;
  if (document.getElementById){&#xD;
   if (iframeid &amp;amp;&amp;amp; !window.opera){&#xD;
    if (iframeid.contentDocument &amp;amp;&amp;amp; iframeid.contentDocument.body.offsetHeight){&#xD;
     iframeid.height = iframeid.contentDocument.body.offsetHeight;&#xD;
    }else if(iframeid.Document &amp;amp;&amp;amp; iframeid.Document.body.scrollHeight){&#xD;
     iframeid.height = iframeid.Document.body.scrollHeight;&#xD;
    }&#xD;
   }&#xD;
  }&#xD;
 }&#xD;
&amp;lt;/script&amp;gt;&lt;/pre&gt;&lt;br&gt;&lt;pre style="border-bottom: #aaaaaa 1px solid; border-left: #aaaaaa 1px solid; border-top: #aaaaaa 1px solid; border-right: #aaaaaa 1px solid" &gt;&amp;lt;iframe width="100%" id="iframeid" onload="Javascript:SetCwinHeight()" height="1" frameborder="0" src="kimi.php"&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;strong&gt;跨域时Iframe高度自适应&lt;/strong&gt;&lt;br&gt;在主页面和被嵌套的iframe为不同域名的时候，就稍微麻烦一些，需要避开JavaScript的跨域限制。&#xD;
&lt;p&gt;原理：现有iframe主页面main.html、被iframe嵌套页面iframe.html、iframe中介页面agent.html三个，通过main.html（域名为http://www.ccvita.com）嵌套iframe.html（域名为：http://www.phpq.net），当用户浏览时执行iframe.html中的JavaScript代码设置iframeC的scr地址中加入iframe页面的高度，agent.html（域名为：http://www.ccvita.com）取得传递的高度，通过JavaScript设置main.html中iframe的高度。最终实现预期的目标。&#xD;
&lt;p&gt;演示地址：http://www.ccvita.com/wp-content/uploads/demo/iframe/main.html&lt;br&gt;代码下载：http://www.ccvita.com/wp-content/uploads/demo/iframe/iframe.zip&#xD;
&lt;p&gt;&lt;strong&gt;iframe主页面&lt;/strong&gt;main.html&lt;pre style="border-bottom: #aaaaaa 1px solid; border-left: #aaaaaa 1px solid; border-top: #aaaaaa 1px solid; border-right: #aaaaaa 1px solid" &gt;&amp;lt; !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&#xD;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&#xD;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;iframe主页面&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&#xD;
&amp;lt;body&amp;gt;&#xD;
&amp;lt;div style="border:1px solid #ccc;padding:10px;"&amp;gt;&#xD;
&amp;lt;iframe id="frame_content"  name="frame_content" src="iframe.html" width="100%" height="0" scrolling="no" frameborder="0"&amp;gt;&amp;lt;/iframe&amp;gt;&#xD;
&amp;lt;/div&amp;gt;&#xD;
&amp;lt;br /&amp;gt;尾部&amp;lt;br /&amp;gt;&#xD;
&amp;lt;/body&amp;gt;&#xD;
&amp;lt;/html&amp;gt;&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;strong&gt;iframe嵌套页面&lt;/strong&gt;iframe.html&lt;pre style="border-bottom: #aaaaaa 1px solid; border-left: #aaaaaa 1px solid; border-top: #aaaaaa 1px solid; border-right: #aaaaaa 1px solid" &gt;&amp;lt; !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&#xD;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&#xD;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;被iframe嵌套页面&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&#xD;
&amp;lt;body&amp;gt;&#xD;
文字&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&#xD;
文字&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&#xD;
文字&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&#xD;
文字&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&#xD;
&amp;lt;iframe id="iframeC" name="iframeC" src="" width="0" height="0" style="display:none;" &amp;gt;&amp;lt;/iframe&amp;gt;&#xD;
&amp;lt;script type="text/javascript"&amp;gt;&#xD;
function sethash(){&#xD;
    hashH = document.documentElement.scrollHeight;&#xD;
    urlC = "agent.html";&#xD;
    document.getElementById("iframeC").src=urlC+"#"+hashH;&#xD;
}&#xD;
window.onload=sethash;&#xD;
&amp;lt;/script&amp;gt;&#xD;
&amp;lt;/body&amp;gt;&#xD;
&amp;lt;/html&amp;gt;&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;strong&gt;iframe中介页面&lt;/strong&gt;agent.html&lt;pre style="border-bottom: #aaaaaa 1px solid; border-left: #aaaaaa 1px solid; border-top: #aaaaaa 1px solid; border-right: #aaaaaa 1px solid" &gt;&amp;lt; !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&#xD;
&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&#xD;
&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;iframe中介页面&amp;lt;/title&amp;gt;&amp;lt;/head&amp;gt;&#xD;
&amp;lt;body&amp;gt;&#xD;
&amp;lt;script&amp;gt;&#xD;
function  pseth() {&#xD;
    var iObj = parent.parent.document.getElementById('frame_content');&#xD;
    iObjH = parent.parent.frames["frame_content"].frames["iframeC"].location.hash;&#xD;
    iObj.style.height = iObjH.split("#")[1]+"px";&#xD;
}&#xD;
pseth();&#xD;
&amp;lt;/script&amp;gt;&#xD;
&amp;lt;/body&amp;gt;&#xD;
&amp;lt;/html&amp;gt;&#xD;
&lt;/pre&gt;&lt;img src="http://www.cnblogs.com/ideas/aggbug/2016253.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ideas/archive/2011/04/14/2016253.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ideas/archive/2011/04/14/2015615.html</id><title type="text">【转】MAQETTA: 基于HTML5的开源可视化界面设计工具</title><summary type="text">本文转自：http://www.showeb20.com/?p=3168 Maqetta 是IBM在昨天Impact 2011大会上发布的一款基于完全HTML5的界面设计工具，操作所见即所得，并且开源。 Maqetta 是IBM在昨天Impact 2011大会上发布的一款基于HTML5和AJAX技术的原型界面设计工具，提供了WYSIWYG所见即所得的编辑模式，用户仅仅需要拖曳鼠标即可完成对界面上复...</summary><published>2011-04-14T01:18:00Z</published><updated>2011-04-14T01:18:00Z</updated><author><name>ideas</name><uri>http://www.cnblogs.com/ideas/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ideas/archive/2011/04/14/2015615.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ideas/archive/2011/04/14/2015615.html"/><content type="html">&lt;p&gt;本文转自：&lt;a href="http://www.showeb20.com/?p=3168"&gt;http://www.showeb20.com/?p=3168&lt;/a&gt; &lt;p&gt;&lt;a href="http://maqetta.org/"&gt;Maqetta&lt;/a&gt; 是IBM在昨天Impact 2011大会上发布的一款基于完全HTML5的界面设计工具，操作所见即所得，并且开源。 &lt;p&gt;&lt;a href="http://maqetta.org/"&gt;Maqetta&lt;/a&gt; 是IBM在昨天Impact 2011大会上发布的一款基于HTML5和AJAX技术的原型界面设计工具，提供了WYSIWYG所见即所得的编辑模式，用户仅仅需要拖曳鼠标即可完成对界面上复杂Widget的布局和摆饰。在Impact 2011大会上，IBM 同时宣布将该项目捐赠给Dojo 开源基金会；这意味着，任何人都可以随意下载Maqetta 源代码并部署安装在自己的服务器上；同时允许开发者自定义源码来满足自己个性化的需求。 &lt;p&gt;&lt;a href="http://www.showeb20.com/"&gt;&lt;img title="Maqetta@分享网络2.0 盗盗" alt="2011 04 13 22 03 31 Maqetta: 基于HTML5的开源可视化界面设计工具  By Web2.0 盗盗" src="http://www.showeb20.com/wp-content/upload-images/2011-04-13_22-03-31.png" width="548" height="354"&gt;&lt;/a&gt; &lt;p&gt;回顾过去写的几篇文章，其中 &lt;a href="http://www.showeb20.com/?p=2658"&gt;精挑细选，9款基于Web浏览器的线框图绘制软件&lt;/a&gt;，相信对Maqetta这款产品比较关注的同学同样会对那篇文章比较感兴趣。 &lt;img src="http://www.cnblogs.com/ideas/aggbug/2015615.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ideas/archive/2011/04/14/2015615.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ideas/archive/2011/03/30/1999483.html</id><title type="text">高效能人士的七个习惯</title><summary type="text">习惯一:积极主动——个人愿景的原则 人性本质是主动而非被动的，不仅能消极选择反应，更能主动创造有利环境。采取主动并不表示要强求、惹人厌或具侵略性，只是不逃避为自己开创前途的责任。 我经常劝导有意更上一层楼的人，加倍积极进取，不妨做爱好和能力的测验，研究适合从事的行业。甚至设法打听试图加入的机构正面临何种难题，然后以有效的表达方式，向对方证明自己能够协助他们解决问题。 积极主动与消极被动有天壤之别，...</summary><published>2011-03-30T01:53:00Z</published><updated>2011-03-30T01:53:00Z</updated><author><name>ideas</name><uri>http://www.cnblogs.com/ideas/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ideas/archive/2011/03/30/1999483.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ideas/archive/2011/03/30/1999483.html"/><content type="html">&lt;p&gt;&lt;b&gt;习惯一:&lt;/b&gt;&lt;b&gt;积极主动——个人愿景的原则&lt;/b&gt;  &lt;p&gt;人性本质是主动而非被动的，不仅能消极选择反应，更能主动创造有利环境。采取主动并不表示要强求、惹人厌或具侵略性，只是不逃避为自己开创前途的责任。  &lt;p&gt;我经常劝导有意更上一层楼的人，加倍积极进取，不妨做爱好和能力的测验，研究适合从事的行业。甚至设法打听试图加入的机构正面临何种难题，然后以有效的表达方式，向对方证明自己能够协助他们解决问题。  &lt;p&gt;积极主动与消极被动有天壤之别，尤其再配合聪明才智，差距就更远了。想要生命的产能与产出平衡，进而追求圆满人生，主动精神实在不可缺少。  &lt;p&gt;任何团体，包括企业、社会团体及家庭，都可以汇集各个成员的聪明才智，对环境主动出击，以达成群体的共同目标，建立积极主动的企业文化。  &lt;p&gt;&lt;b&gt;　　习惯二:&lt;/b&gt;&lt;b&gt;以终为始——自我领导的原则&lt;/b&gt;  &lt;p&gt;太多人成功之后，反而感到空虚;得到名利之后，却发现牺牲了更可贵的事物。因此，我们务必掌握真正重要的愿景，然后勇往直前坚持到底，使生活充满意义。  &lt;p&gt;我因为主持一项研讨会而住进一家旅馆，由于到得太迟，已无餐点可用。前台人员却主动表示，可以到厨房跑一趟，还殷切询问:“您要不要先看看会议厅？有没有需要我效劳的地方？您还需要其他东西吗？”当时并没有主管在旁边监督。  &lt;p&gt;第二天研讨会开始，我发现所带的色笔不够，便趁空抓住一名服务员，说明困难。他瞥了我的名片一眼，然后说:“柯维先生，我会解决这个问题的。”  &lt;p&gt;他并没有推脱:“叫我到哪儿去找。”或者:“请你问前台。”他一口承担下来，而且表现出为服务深感荣幸的样子。  &lt;p&gt;事后我请教经理秘诀，他拿出了要求所有员工遵守的两份宣言。这两份宣言代表整个旅馆的中心思想，无怪乎营运成绩斐然。它既有助于  &lt;p&gt;员工与顾客、员工与员工之间的关系，也决定了主管的领导方式，甚至影响到人员的招募、训练与薪资福利。  &lt;p&gt;&lt;b&gt;　　习惯三:&lt;/b&gt;&lt;b&gt;要事第一——自我管理的原则&lt;/b&gt;  &lt;p&gt;有效管理是掌握重点式的管理，它把最重要的事放在第一位。由领导决定什么是重点后，再靠自制力来掌握重点，时刻把它们放在第一位，以免被感觉、情绪或冲动所左右。有效的个人管理可分为四个步骤:  &lt;p&gt;确定角色——写下个人认为重要的角色。假若以往不曾认真考虑这个问题，就把这时闪过脑际的角色逐一写下。  &lt;p&gt;选择目标——为每个角色确定未来一周欲达成的２至３个重要成果。  &lt;p&gt;安排进度——根据上面所列目标，安排未来７天的行程。  &lt;p&gt;逐日调整——每天早晨依据行事历，安排一天的大小事务。  &lt;p&gt;&lt;b&gt;　　习惯四:&lt;/b&gt;&lt;b&gt;双赢思维——人际领导的原则&lt;/b&gt;  &lt;p&gt;利人利己者把生活看做一个合作的舞台，而不是一个角斗场。一般人看事情多用二分法:非强即弱、非胜即败。其实世界之大，人人都有足够的立足空间，他人之得不必就视为自己之失。  &lt;p&gt;利人利己可使双方互相学习、互相影响及共蒙其利。要达到互利的境界必须具备足够的勇气及与人为善的胸襟，尤其与损人利己者相处更得这样。培养这方面的修养，少不了过人的见地、积极主动的精神，并且以安全感、人生方向、智慧与力量作为基础。  &lt;p&gt;想达到利人利己，须从自身的“品德”着手，建立起互利“关系”，进而获得两全其美的“协议”。协议则有赖合理的“制度”配合，经由正确的“流程”来完成。  &lt;p&gt;&lt;b&gt;　　习惯五:&lt;/b&gt;&lt;b&gt;知彼解己——同理心交流的原则&lt;/b&gt;  &lt;p&gt;若要用一句话归纳我在人际关系方面学到的一个最重要的原则，那就是:知彼解己——首先寻求去了解对方，然后再争取让对方了解自己。这一原则是进行有效人际交流的关键。  &lt;p&gt;同理心倾听的出发点是为了理解而非为了回应，也就是透过言谈明了一个人的观念、感受与内在世界。同理心和同情有些差别，同情掺杂了价值判断与认同。有时人际关系的确需要多一份同情，但却易养成对方的依赖心。同理心也不代表赞同，而是指深入了解对方的感情与理智世界。  &lt;p&gt;同理心倾听不只是理解个别的词句而已。据专家估计，人际沟通仅有一成通过语言来进行，三成取决于语调与声音，其余六成则得靠肢体语言。所以在同理心倾听的过程中，不仅要耳到，还要眼到、心到;用眼睛去观察，用心灵去体会。  &lt;p&gt;&lt;b&gt;　　习惯六:&lt;/b&gt;&lt;b&gt;统合综效——创造性合作的原则&lt;/b&gt;  &lt;p&gt;统合综效的基本心态是：如果一位具有相当聪明才智的人跟我意见不同，那么对方的主张必定有我尚未体会的奥妙，值得加以了解。  &lt;p&gt;与人合作最重要的是重视不同个体的不同心理、情绪与智能，以及个人眼中所见到的不同世界。假如两人意见相同，其中一人必属多余。与所见略同的人沟通毫无益处，要有分歧才有收获。  &lt;p&gt;统合综效的观念源自一种自然现象:全体大于部分的总和。有些不同种的植物生长在一起，根部会互相缠绕，土质因而改善，植物也比单独生长时更为茂盛。两块木头所能承受的力量大于个别承受力的总和，两种药物并用的疗效也可能大于分开使用之和。这说明1+1等于3，甚至更多。  &lt;p&gt;创造性合作不仅对人际关系非常重要，对个人也十分重要。凡擅长语言、逻辑，即左脑较为发达的人终会发现，有些需要创造力来解决的问题，理性是无能为力的。惟有运用久已闲置的右脑，使右脑主司的直觉与创造力与左脑相配合，共同运作，才能解决更多的难题。  &lt;p&gt;&lt;b&gt;　　习惯七:&lt;/b&gt;&lt;b&gt;不断更新——平衡的自我更新原则&lt;/b&gt;  &lt;p&gt;人生最值得的投资就是磨练自己，因为生活与服务他人都得靠自己，这是最珍贵的工具。  &lt;p&gt;工作本身并不能带来经济上的安全感，具备良好的思考、学习、创造与适应能力，才能立于不败之地。拥有财富，并不代表经济独立，拥有创造财富的能力才真正可靠。  &lt;p&gt;假使看到一名伐木工人，为了砍一棵树已辛苦工作了５个小时，筋疲力竭却进展有限，你当然会建议他:“为什么不暂停几分钟，把锯子磨得更锋利？”  &lt;p&gt;在这里我必须强调“工欲善其事，必先利其器”的观念，习惯七的主旨就是磨练自己，从身体、精神、心智、社会情感等四个方面，增进个人产能，累积其他修养的本钱。这种修养功夫完全得靠自己，旁人无法越俎代庖，它属于重要而不紧急的事。  &lt;p&gt;上述七个习惯之间，都存在着密不可分的关系。愈是积极主动，就愈能掌握人生方向，有效管理人生。能够不断砥砺自己的人，方懂得如何了解别人，寻求圆满的解决之道。同理，一个人愈独立，就愈善于与人相处。磨练自己，则可以提升前六个习惯的境界。  &lt;p&gt;如果我们每日坚持由内而外的修身功夫，就一定会带来成果。在播种、除草、培植幼苗的过程中，定能感受到成长的激动，并最终尝到和谐圆满生活结出的鲜美硕果。  &lt;p&gt;通过把自己的生活建立在正确的原则上，在办事和增强办事能力之间平衡，我们就能获得能力，创造圆满平静的生活。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#ff0000"&gt;本方内容来自网络，版权归原作者所有，若该转载侵犯了您的版权，请留言。&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ideas/aggbug/1999483.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ideas/archive/2011/03/30/1999483.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/ideas/archive/2011/03/28/1997905.html</id><title type="text">有《基于行块分布函数的通用网页正文抽取》想到的</title><summary type="text">说明：《基于行块分布函数的通用网页正文抽取》是哈尔滨工业大学信息检索研究中心陈 鑫 (Xin Chen) 的研究成果，详细看这里：http://code.google.com/p/cx-extractor/ ，完整算法及C#实现从这里下载：http://files.cnblogs.com/ideas/TextExtractor.rar 看了这个算法之后，对网页内容的抓取，很有启发。如果要实现抓规...</summary><published>2011-03-28T09:12:00Z</published><updated>2011-03-28T09:12:00Z</updated><author><name>ideas</name><uri>http://www.cnblogs.com/ideas/</uri></author><link rel="alternate" href="http://www.cnblogs.com/ideas/archive/2011/03/28/1997905.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/ideas/archive/2011/03/28/1997905.html"/><content type="html">&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;说明：《基于行块分布函数的通用网页正文抽取》是哈尔滨工业大学信息检索研究中心陈 鑫 (Xin Chen) 的研究成果，详细看这里：&lt;a title="http://code.google.com/p/cx-extractor/" href="http://code.google.com/p/cx-extractor/"&gt;http://code.google.com/p/cx-extractor/&lt;/a&gt; ，完整算法及C#实现从这里下载：&lt;a title="http://files.cnblogs.com/ideas/TextExtractor.rar" href="http://files.cnblogs.com/ideas/TextExtractor.rar"&gt;http://files.cnblogs.com/ideas/TextExtractor.rar&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;看了这个算法之后，对网页内容的抓取，很有启发。如果要实现抓规则的通用性，就得找出网页大众化的设计规律。比如新闻，首先仿照该算法去除所有html标签，然后提取body内的文本。一般情况下，标题都会占用单独的一行，所以就可以使用“行文本”与title对比，如果该行内容与title开头一样，则可以认为是网页标题开发。而新闻的发布时间的位置大部分是放在标题与正文之间，所以这样就可以从标题往后解析，如果“行文本”包含有时间格式的文本，即可认定是发布时间。新闻其它字段提取方法类似。 &lt;p&gt;如何判断一个URL是否是新闻最终页？可以使用机器学习的方法，使用上面方法提取新闻正文，如果成功，则解析该URL转换为正则，然后拿该正则去匹配其它的URL，如果成功数超过一定的阀值，则认为是新闻最终页。 &lt;p&gt;如何判断一个URL是否是新闻列表页？根据新闻最终页引用地址判断，如果最终页来源于某个网页的数量超过一个阀值，则认为该页是新闻列表页。 &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;另外今天发现.net使用正则\w匹配的结果竟然把中文字符也给算进去了。不知何解。&lt;/em&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/ideas/aggbug/1997905.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/ideas/archive/2011/03/28/1997905.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
