﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-火龙天下</title><link>http://www.cnblogs.com/sky1982/</link><description>孝敬父母为第一</description><language>zh-cn</language><lastBuildDate>Tue, 09 Feb 2010 22:43:16 GMT</lastBuildDate><pubDate>Tue, 09 Feb 2010 22:43:16 GMT</pubDate><ttl>60</ttl><item><title>ASP.NET Ajax发布时异步刷新失效的问题解决方法</title><link>http://www.cnblogs.com/sky1982/archive/2009/09/23/1572904.html</link><dc:creator>火龙sky</dc:creator><author>火龙sky</author><pubDate>Wed, 23 Sep 2009 13:33:00 GMT</pubDate><guid>http://www.cnblogs.com/sky1982/archive/2009/09/23/1572904.html</guid><description><![CDATA[<p>阅读: 59 评论: 1 作者: <a href="http://www.cnblogs.com/sky1982/" target="_blank">火龙sky</a> 发表于 2009-09-23 21:33 <a href="http://www.cnblogs.com/sky1982/archive/2009/09/23/1572904.html" target="_blank">原文链接</a></p>&nbsp;<wbr> 在一个小型项目中，我使用了Ajax Extensions中的UpdatePanel控件，在本地调试运行时好的，可以看到ajax的异步刷新效果，但是当发布到安装了.net framework 3.5 sp1的server 2003上去之后，发现ajax效果没有了，也就是说本来的异步提交变成了非Ajax方式的POST，而且没有报告任何错误。<br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 对比开发时和运行时发送到浏览器的html，发现开发时和运行时生成的html相比多了一下下面的javascript：<br /><br />&lt;script type="text/javascript"&gt;<br />//&lt;![CDATA[<br />Sys.WebForms.PageRequestManager._initialize('ScriptManager1', document.getElementById('form1'));<br />Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tUpdatePanel1'], ['Button1'], [], 90);<br />//]]&gt;<br />&lt;/script&gt;<br /><br />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 这段代码本来应该是&lt;Asp:ScriptManager&gt;这个控件来生成的，但是部署到服务器上之后并没有生成这段代码。 
<p>&nbsp;<wbr></p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 经过多方查找，web.config文件的congfiguration节如果设置了&lt;xhtmlConformance mode="Legacy"/&gt;，那么ajax将会失效，导致如上描述的情况。</p>
<p>&nbsp;<wbr></p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 但是我的项目的web.config并没有设置这一项。</p>
<p>&nbsp;<wbr></p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 不过我在我的项目中显示的加上了&lt;xhtmlConformance mode="Transitional"/&gt;之后，功能正常了，那段javascript出现了。</p>
<p>&nbsp;<wbr></p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> 最后发现原来是因为我的项目是部署在一个asp.net网站的虚拟路径下的，在这个网站的根目录下面的web.config文件的congfiguration节设置了&lt;xhtmlConformance mode="Legacy"/&gt;，因为这个网站是从vs 2003迁移过来的，vs在自动转换的时候就加上了这句话。</p>
<p>就是因为这个小小的问题，导致了我的web应用中的ajax失效了。</p><img src="http://www.cnblogs.com/sky1982/aggbug/1572904.html?type=1" width="1" height="1" alt=""/><p>评论: 1　<a href="http://www.cnblogs.com/sky1982/archive/2009/09/23/1572904.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/sky1982/archive/2009/09/23/1572904.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>关于Tomcat虚拟主机域名的设置--设置本地主机域名</title><link>http://www.cnblogs.com/sky1982/archive/2009/06/27/1512225.html</link><dc:creator>火龙sky</dc:creator><author>火龙sky</author><pubDate>Sat, 27 Jun 2009 06:06:00 GMT</pubDate><guid>http://www.cnblogs.com/sky1982/archive/2009/06/27/1512225.html</guid><description><![CDATA[<p>阅读: 89 评论: 0 作者: <a href="http://www.cnblogs.com/sky1982/" target="_blank">火龙sky</a> 发表于 2009-06-27 14:06 <a href="http://www.cnblogs.com/sky1982/archive/2009/06/27/1512225.html" target="_blank">原文链接</a></p><table style="table-layout: fixed">
<tr>
<td>
<div class="cnt" id="blog_text"><strong><span style="font-size: 10pt">设置本地主机域名</span></strong><span style="font-size: 10pt"><br />&nbsp;&nbsp;&nbsp; Hosts</span><span style="font-size: 10pt">是一个没有扩展名的系统文件，可以用记事本等工具打开，其作用就是将一些常用的网址域名与其对应的<span>IP</span>地址建立一个关联<span>&#8220;</span>数据库<span>&#8221;</span>，当用户在浏 览器中输入一个需要登录的网址时，系统会首先自动从<span>Hosts</span>文件中寻找对应的<span>IP</span>地址，一旦找到，系统会立即打开对应网页，如果没有找到，则系统再会将 网址提交<span>DNS</span>域名解析服务器进行<span>IP</span>地址的解析。<span><br />&nbsp;&nbsp;&nbsp; </span>通过修改本地主机上的一个<span>hosts</span>文件，可以进行对<span>ip</span>地址与本地域名的映射，从而解决在本地调试<span>JSP</span>项目的时候，通过本地域名进行访问。<span><br />&nbsp;&nbsp;&nbsp; hosts</span>文件在系统目录<span>C:\WINDOWS\system32\drivers\etc\</span>下，这个目录不容易记忆，如果要经常修改这个文件的话不是很 方便找，可以<span> </span>建立一个批处理<span>hosts.bat</span>文件，用文本编辑器打开，写入内容<span>explorer "C:\WINDOWS\system32\drivers\etc"</span>，保存退出，可以把这个<span>hosts.bat</span>文件放在桌面，每次双击它就能打开<span> hosts</span>文件所在的目录。也可以将<span>hosts.bat</span>文件放到<span>C:\WINDOWS</span>下，这样，每次只要从点<span>&#8220;</span>开始<span>&#8221;-&gt;&#8220;</span>运行<span>&#8221;</span>，输入<span> hosts</span>，点回车就可以打开<span>hosts</span>文件所在的目录了，另外在命令行也可以输入<span>hosts</span>打开<span>hosts</span>文件所在的目录。<span><br />&nbsp;&nbsp;&nbsp; </span>找到<span>hosts</span>文件后，用文本编辑器打开，默认状态下，<span>hosts</span>文件里只有一个映射关系：<span><br /><span style="color: rgb(192,29,62)">&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; localhost<br />&nbsp;&nbsp;&nbsp; </span></span><span style="color: rgb(192,29,62)">按照这个格式再添加一个映射：<span><br />&nbsp;&nbsp;&nbsp; xxx.xxx.xxx.xxx </span></span></span><span style="font-size: 9pt"><a href="http://www.yujiaxin.com/"><span style="font-size: 10pt; color: rgb(192,29,62)">www.xxxx.com</span></a><br /></span><span style="font-size: 10pt">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 10pt">保存，退出。这时候本地<span>IP</span>地址<span>202.112.113.171</span>已经和</span><span style="font-size: 9pt"><a href="http://www.yujiaxin.com/"><span style="font-size: 10pt">www.xxxx.com</span></a></span><span style="font-size: 10pt">这个本地域名做了对应的映射关系。</span></div></td></tr></table><img src="http://www.cnblogs.com/sky1982/aggbug/1512225.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/sky1982/archive/2009/06/27/1512225.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/sky1982/archive/2009/06/27/1512225.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>Sql Server 中一个非常强大的日期格式化函数 </title><link>http://www.cnblogs.com/sky1982/archive/2009/04/24/1443043.html</link><dc:creator>火龙sky</dc:creator><author>火龙sky</author><pubDate>Fri, 24 Apr 2009 08:48:00 GMT</pubDate><guid>http://www.cnblogs.com/sky1982/archive/2009/04/24/1443043.html</guid><description><![CDATA[<p>阅读: 31 评论: 0 作者: <a href="http://www.cnblogs.com/sky1982/" target="_blank">火龙sky</a> 发表于 2009-04-24 16:48 <a href="http://www.cnblogs.com/sky1982/archive/2009/04/24/1443043.html" target="_blank">原文链接</a></p>Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM <br />Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 <br />Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 <br />Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06 <br />Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06 <br />Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06 <br />Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06 <br />Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06 <br />Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46 <br />Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM <br />Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06 <br />Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16 <br />Select CONVERT(varchar(100), GETDATE(), 12): 060516 <br />Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937 <br />Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967 <br />Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47 <br />Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157 <br />Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM <br />Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16 <br />Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47 <br />Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250 <br />Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM <br />Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006 <br />Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16 <br />Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006 <br />Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006 <br />Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006 <br />Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006 <br />Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006 <br />Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49 <br />Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM <br />Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006 <br />Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16 <br />Select CONVERT(varchar(100), GETDATE(), 112): 20060516 <br />Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513 <br />Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547 <br />Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49 <br />Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700 <br />Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827 <br />Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM <br />Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM <br /><br /><br />常用： <br />Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46 <br />Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47 <br />Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49 <br />Select CONVERT(varchar(100), GETDATE(), 12): 060516 <br />Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16 <br /><img src="http://www.cnblogs.com/sky1982/aggbug/1443043.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/sky1982/archive/2009/04/24/1443043.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/sky1982/archive/2009/04/24/1443043.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>针对sql 2005优化的高性能分页存储过程 </title><link>http://www.cnblogs.com/sky1982/archive/2009/04/24/1442907.html</link><dc:creator>火龙sky</dc:creator><author>火龙sky</author><pubDate>Fri, 24 Apr 2009 06:30:00 GMT</pubDate><guid>http://www.cnblogs.com/sky1982/archive/2009/04/24/1442907.html</guid><description><![CDATA[<p>阅读: 88 评论: 0 作者: <a href="http://www.cnblogs.com/sky1982/" target="_blank">火龙sky</a> 发表于 2009-04-24 14:30 <a href="http://www.cnblogs.com/sky1982/archive/2009/04/24/1442907.html" target="_blank">原文链接</a></p>存储过程代码如下： 
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">ALTER</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">PROCEDURE</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">[</span><span style="color: #ff0000">dbo</span><span style="color: #ff0000">]</span><span style="color: #000000">.</span><span style="color: #ff0000">[</span><span style="color: #ff0000">Pg_Paging</span><span style="color: #ff0000">]</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">@Tables</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1000</span><span style="color: #000000">),&nbsp;</span><span style="color: #008080">--</span><span style="color: #008080">表名,多红表是请使用&nbsp;tA&nbsp;a&nbsp;inner&nbsp;join&nbsp;tB&nbsp;b&nbsp;On&nbsp;a.AID&nbsp;=&nbsp;b.AID</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">@PK</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">100</span><span style="color: #000000">),&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080">--</span><span style="color: #008080">主键，可以带表头&nbsp;a.AID</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">@Sort</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">200</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">''</span><span style="color: #000000">,&nbsp;</span><span style="color: #008080">--</span><span style="color: #008080">排序字段</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">@PageNumber</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">,&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080">--</span><span style="color: #008080">开始页码</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">@PageSize</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">10</span><span style="color: #000000">,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080">--</span><span style="color: #008080">页大小</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">@Fields</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1000</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">*</span><span style="color: #ff0000">'</span><span style="color: #000000">,</span><span style="color: #008080">--</span><span style="color: #008080">读取字段</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">@Filter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1000</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">NULL</span><span style="color: #000000">,</span><span style="color: #008080">--</span><span style="color: #008080">Where条件</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">@Group</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">1000</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">NULL</span><span style="color: #000000">,&nbsp;&nbsp;</span><span style="color: #008080">--</span><span style="color: #008080">分组</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008000">@isCount</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">bit</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008080">--</span><span style="color: #008080">1&nbsp;&nbsp;&nbsp;&nbsp;--是否获得总记录数</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">AS</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008080">--<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />--</span><span style="color: #008080">select&nbsp;*&nbsp;from&nbsp;GL_NEWS&nbsp;order&nbsp;by&nbsp;GN_UPDATE_DATE&nbsp;DESC</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />--</span><span style="color: #008080">exec&nbsp;Pg_Paging&nbsp;@Tables&nbsp;=&nbsp;'tb_NewsInfo',&nbsp;@PK&nbsp;=&nbsp;'News_ID',&nbsp;@Sort&nbsp;=&nbsp;'News_ID&nbsp;DESC',&nbsp;@PageNumber&nbsp;=&nbsp;2,&nbsp;@PageSize&nbsp;=&nbsp;15,@Fields&nbsp;=&nbsp;'*',&nbsp;@Group&nbsp;=&nbsp;'',&nbsp;@isCount&nbsp;=&nbsp;0</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">DECLARE</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@strFilter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">2000</span><span style="color: #000000">)<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">declare</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sql</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">8000</span><span style="color: #000000">)<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">IF</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@Filter</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">IS</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">NOT</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">NULL</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">AND</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@Filter</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">''</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">BEGIN</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">SET</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@strFilter</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;WHERE&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@Filter</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">END</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">ELSE</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">BEGIN</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">SET</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@strFilter</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">''</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">END</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@isCount</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #008080">--</span><span style="color: #008080">只获得记录条数</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">begin</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sql</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">SELECT&nbsp;&nbsp;Count(*)&nbsp;FROM&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@Tables</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@strFilter</span><span style="color: #000000">&nbsp;&nbsp;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">end</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">else</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">begin</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@Sort</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">''</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@Sort</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@PK</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;DESC&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">IF</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@PageNumber</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">SET</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@PageNumber</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@PageNumber</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #008080">--</span><span style="color: #008080">第一页提高性能</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">begin</span><span style="color: #000000">&nbsp;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sql</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">select&nbsp;top&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">str</span><span style="color: #000000">(</span><span style="color: #008000">@PageSize</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">+</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">+</span><span style="color: #008000">@Fields</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;&nbsp;from&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@Tables</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@strFilter</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;ORDER&nbsp;BY&nbsp;&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@Sort</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">end</span><span style="color: #000000">&nbsp;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">else</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">begin</span><span style="color: #000000"><br /><img id="Codehighlighter1_1183_1187_Open_Image" style="display: inline" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1183_1187_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_1183_1187_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_1183_1187_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_1183_1187_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_1183_1187_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_1183_1187_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_1183_1187_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;</span><span id="Codehighlighter1_1183_1187_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_1183_1187_Open_Text" style="display: inline"><span style="color: #008080">/**/</span></span><span id="Codehighlighter1_1187_1212_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">/**/</span><span id="Codehighlighter1_1187_1212_Open_Text"><span style="color: #008080">/*</span><span style="color: #008080">Execute&nbsp;dynamic&nbsp;query</span><span style="color: #008080">*/</span></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">DECLARE</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@START_ID</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">50</span><span style="color: #000000">)<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">DECLARE</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@END_ID</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">50</span><span style="color: #000000">)<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">SET</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@START_ID</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">convert</span><span style="color: #000000">(</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">50</span><span style="color: #000000">),(</span><span style="color: #008000">@PageNumber</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">-</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">)&nbsp;</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@PageSize</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">)<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">SET</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@END_ID</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;</span><span style="color: #ff00ff">convert</span><span style="color: #000000">(</span><span style="color: #0000ff">varchar</span><span style="color: #000000">(</span><span style="font-weight: bold; color: #800000">50</span><span style="color: #000000">),</span><span style="color: #008000">@PageNumber</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">*</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@PageSize</span><span style="color: #000000">)<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;</span><span style="color: #008000">@sql</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;SELECT&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">+</span><span style="color: #008000">@Fields</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;FROM&nbsp;(SELECT&nbsp;ROW_NUMBER()&nbsp;OVER(ORDER&nbsp;BY&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">+</span><span style="color: #008000">@Sort</span><span style="color: #808080">+</span><span style="color: #ff0000">'</span><span style="color: #ff0000">)&nbsp;AS&nbsp;rownum,&nbsp;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">+</span><span style="color: #008000">@Fields</span><span style="color: #808080">+</span><span style="color: #000000">&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #ff0000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FROM&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">+</span><span style="color: #008000">@Tables</span><span style="color: #808080">+</span><span style="color: #ff0000">'</span><span style="color: #ff0000">)&nbsp;AS&nbsp;D<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;WHERE&nbsp;rownum&nbsp;BETWEEN&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">+</span><span style="color: #008000">@START_ID</span><span style="color: #808080">+</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;AND&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #008000">@END_ID</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">+</span><span style="color: #ff0000">'</span><span style="color: #ff0000">&nbsp;ORDER&nbsp;BY&nbsp;</span><span style="color: #ff0000">'</span><span style="color: #808080">+</span><span style="color: #008000">@Sort</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;</span><span style="color: #0000ff">END</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">END</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #008080">--</span><span style="color: #008080">print&nbsp;@sql</span><span style="color: #008080"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">EXEC</span><span style="color: #000000">(</span><span style="color: #008000">@sql</span><span style="color: #000000">)</span></div><br />可以通过封装一个静态函数来执行：（<font face="Verdana">EnterpriseLibrary</font>3。1）<br /><br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">using&nbsp;System;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />using&nbsp;System.Data;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />using&nbsp;System.Data.Common;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />using&nbsp;System.Globalization;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />using&nbsp;System.Xml;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />using&nbsp;Microsoft.Practices.EnterpriseLibrary.Data;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />using&nbsp;Microsoft.Practices.EnterpriseLibrary.Data.Sql;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />namespace&nbsp;Glenet.EjiaShop.SqlData<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />{<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">summary</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;&nbsp;Pageing<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;/</span><span style="color: #000000">summary</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;class&nbsp;Pageing<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;{<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;Pageing()<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000">&nbsp;TODO:&nbsp;在此处添加构造函数逻辑<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#region&nbsp;Pg_Paging<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">summary</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;Pg_Paging<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;/</span><span style="color: #000000">summary</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">param&nbsp;name</span><span style="color: #808080">=</span><span style="color: #000000">"Tables"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #000000">param</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">param&nbsp;name</span><span style="color: #808080">=</span><span style="color: #000000">"PK"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #000000">param</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">param&nbsp;name</span><span style="color: #808080">=</span><span style="color: #000000">"Filter"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #000000">param</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #0000ff">returns</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #0000ff">returns</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;static&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;Pg_PageCount(string&nbsp;Tables,string&nbsp;PK,string&nbsp;Filter)<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000">创建数据库实例<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">Database</span><span style="color: #000000">&nbsp;db&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;DatabaseFactory.CreateDatabase();<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000">获得命令<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;sqlCommand&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;"Pg_Paging";<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DbCommand&nbsp;dbCommand&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;db.GetStoredProcCommand(sqlCommand);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000">设置参数<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"Tables",&nbsp;DbType.String,&nbsp;Tables);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"PK",&nbsp;DbType.String,&nbsp;PK);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"Sort",&nbsp;DbType.String,&nbsp;"");<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"PageNumber",&nbsp;DbType.</span><span style="color: #0000ff">Double</span><span style="color: #000000">,&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"PageSize",&nbsp;DbType.</span><span style="color: #0000ff">Double</span><span style="color: #000000">,&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"Fields",&nbsp;DbType.String,&nbsp;"</span><span style="color: #808080">*</span><span style="color: #000000">");<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"Filter",&nbsp;DbType.String,&nbsp;Filter);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"</span><span style="color: #0000ff">Group</span><span style="color: #000000">",&nbsp;DbType.String,&nbsp;"");<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"isCount",&nbsp;DbType.Boolean,&nbsp;</span><span style="font-weight: bold; color: #800000">1</span><span style="color: #000000">);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000">执行<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">.Parse(db.ExecuteScalar(dbCommand).ToString());&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000">取得输出参数<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endregion<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#region&nbsp;Pg_Paging<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">summary</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;Pg_Paging<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;/</span><span style="color: #000000">summary</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">param&nbsp;name</span><span style="color: #808080">=</span><span style="color: #000000">"Tables"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #000000">param</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">param&nbsp;name</span><span style="color: #808080">=</span><span style="color: #000000">"PK"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #000000">param</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">param&nbsp;name</span><span style="color: #808080">=</span><span style="color: #000000">"Sort"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #000000">param</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">param&nbsp;name</span><span style="color: #808080">=</span><span style="color: #000000">"PageNumber"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #000000">param</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">param&nbsp;name</span><span style="color: #808080">=</span><span style="color: #000000">"PageSize"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #000000">param</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">param&nbsp;name</span><span style="color: #808080">=</span><span style="color: #000000">"Fields"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #000000">param</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">param&nbsp;name</span><span style="color: #808080">=</span><span style="color: #000000">"Filter"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #000000">param</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #000000">param&nbsp;name</span><span style="color: #808080">=</span><span style="color: #000000">"</span><span style="color: #0000ff">Group</span><span style="color: #000000">"</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #000000">param</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">///</span><span style="color: #000000">&nbsp;</span><span style="color: #808080">&lt;</span><span style="color: #0000ff">returns</span><span style="color: #808080">&gt;&lt;/</span><span style="color: #0000ff">returns</span><span style="color: #808080">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;static&nbsp;DataSet&nbsp;Pg_Paging(string&nbsp;Tables,string&nbsp;PK,string&nbsp;Sort,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;PageNumber,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;PageSize,string&nbsp;Fields,string&nbsp;Filter,string&nbsp;</span><span style="color: #0000ff">Group</span><span style="color: #000000">)<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000">创建数据库实例<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">Database</span><span style="color: #000000">&nbsp;db&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;DatabaseFactory.CreateDatabase();<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000">获得命令<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;sqlCommand&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;"Pg_Paging";<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DbCommand&nbsp;dbCommand&nbsp;</span><span style="color: #808080">=</span><span style="color: #000000">&nbsp;db.GetStoredProcCommand(sqlCommand);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000">设置参数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"Tables",&nbsp;DbType.String,&nbsp;Tables);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"PK",&nbsp;DbType.String,&nbsp;PK);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"Sort",&nbsp;DbType.String,&nbsp;Sort);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"PageNumber",&nbsp;DbType.</span><span style="color: #0000ff">Double</span><span style="color: #000000">,&nbsp;PageNumber);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"PageSize",&nbsp;DbType.</span><span style="color: #0000ff">Double</span><span style="color: #000000">,&nbsp;PageSize);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"Fields",&nbsp;DbType.String,&nbsp;Fields);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"Filter",&nbsp;DbType.String,&nbsp;Filter);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"</span><span style="color: #0000ff">Group</span><span style="color: #000000">",&nbsp;DbType.String,&nbsp;</span><span style="color: #0000ff">Group</span><span style="color: #000000">);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;db.AddInParameter(dbCommand,&nbsp;"isCount",&nbsp;DbType.Boolean,&nbsp;</span><span style="font-weight: bold; color: #800000">0</span><span style="color: #000000">);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #808080">//</span><span style="color: #000000">执行<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;db.ExecuteDataSet(dbCommand);&nbsp;&nbsp;&nbsp;&nbsp;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#endregion<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />}<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /></span></div>前台：调用如下：<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;filter&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">&nbsp;&nbsp;1&nbsp;=&nbsp;1&nbsp;</span><span style="color: #800000">"</span><span style="color: #000000">;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AspNetPager1.RecordCount&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Glenet.EjiaShop.SqlData.Pageing.Pg_PageCount(</span><span style="color: #800000">"</span><span style="color: #800000">tb_NewsInfo</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">News_ID</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;filter);<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;(DataSet&nbsp;ds&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Glenet.EjiaShop.SqlData.Pageing.Pg_Paging(</span><span style="color: #800000">"</span><span style="color: #800000">tb_NewsInfo</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">News_ID</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">News_AddTime&nbsp;DESC</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;AspNetPager1.CurrentPageIndex,&nbsp;AspNetPager1.PageSize,&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">*</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;filter,&nbsp;</span><span style="color: #800000">""</span><span style="color: #000000">))<br /><img id="Codehighlighter1_341_871_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_341_871_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_341_871_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_341_871_Closed_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_341_871_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_341_871_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_341_871_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_341_871_Open_Text').style.display='inline';" alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_341_871_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.cnblogs.com/Images/dot.gif" /></span><span id="Codehighlighter1_341_871_Open_Text"><span style="color: #000000">{<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Re_ContentList.DataSource&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ds.Tables[</span><span style="color: #800080">0</span><span style="color: #000000">].DefaultView;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">.Re_ContentList.DataBind();<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AspNetPager1.CustomInfoText&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">记录总数：&lt;font&nbsp;color=\</span><span style="color: #800000">"</span><span style="color: #000000">#00007f\</span><span style="color: #800000">"</span><span style="color: #800000">&gt;&lt;b&gt;</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;AspNetPager1.RecordCount.ToString()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">&lt;/b&gt;&lt;/font&gt;</span><span style="color: #800000">"</span><span style="color: #000000">;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AspNetPager1.CustomInfoText&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">&nbsp;总页数：&lt;font&nbsp;color=\</span><span style="color: #800000">"</span><span style="color: #000000">#00007f\</span><span style="color: #800000">"</span><span style="color: #800000">&gt;&lt;b&gt;</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;AspNetPager1.PageCount.ToString()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">&lt;/b&gt;&lt;/font&gt;</span><span style="color: #800000">"</span><span style="color: #000000">;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AspNetPager1.CustomInfoText&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">&nbsp;当前页：&lt;font&nbsp;color=\</span><span style="color: #800000">"</span><span style="color: #000000">red\</span><span style="color: #800000">"</span><span style="color: #800000">&gt;&lt;b&gt;</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;AspNetPager1.CurrentPageIndex.ToString()&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">&lt;/b&gt;&lt;/font&gt;</span><span style="color: #800000">"</span><span style="color: #000000">;<br /><img alt="" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>相当方便。 <img src="http://www.cnblogs.com/sky1982/aggbug/1442907.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/sky1982/archive/2009/04/24/1442907.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/sky1982/archive/2009/04/24/1442907.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>大型网站架构设计</title><link>http://www.cnblogs.com/sky1982/archive/2009/04/20/1439445.html</link><dc:creator>火龙sky</dc:creator><author>火龙sky</author><pubDate>Mon, 20 Apr 2009 01:54:00 GMT</pubDate><guid>http://www.cnblogs.com/sky1982/archive/2009/04/20/1439445.html</guid><description><![CDATA[<p>阅读: 78 评论: 0 作者: <a href="http://www.cnblogs.com/sky1982/" target="_blank">火龙sky</a> 发表于 2009-04-20 09:54 <a href="http://www.cnblogs.com/sky1982/archive/2009/04/20/1439445.html" target="_blank">原文链接</a></p><h2>&nbsp;</h2>
<div class="postbody">一个小型的网站，比如个人网站，可以使用最简单的html静态页面就实现了，配合一些图片达到美化效果，所有的页面均存放在一个目录下，这样的网站对系统架构、性能的要求都很简单，随着互联网业务的不断丰富，网站相关的技术经过这些年的发展，已经细分到很细的方方面面，尤其对于大型网站来说，所采用的技术更是涉及面非常广，从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求，已经不是原来简单的html静态网站所能比拟的。<br /><br />大型网站，比如门户网站。在面对大量用户访问、高并发请求方面，基本的解决方案集中在这样几个环节：使用高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。但是除了这几个方面，还没法根本解决大型网站面临的高负载和高并发问题。<br /><br />上面提供的几个解决思路在一定程度上也意味着更大的投入，并且这样的解决思路具备瓶颈，没有很好的扩展性，下面我从低成本、高性能和高扩张性的角度来说说我的一些经验。<br /><br />1、HTML静态化<br />其实大家都知道，效率最高、消耗最小的就是纯静态化的html页面，所以我们尽可能使我们的网站上的页面采用静态页面来实现，这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站，我们无法全部手动去挨个实现，于是出现了我们常见的信息发布系统CMS，像我们常访问的各个门户站点的新闻频道，甚至他们的其他频道，都是通过信息发布系统来管理和实现的，信息发布系统可以实现最简单的信息录入自动生成静态页面，还能具备频道管理、权限管理、自动抓取等功能，对于一个大型网站来说，拥有一套高效、可管理的CMS是必不可少的。<br /><br />除了门户和信息发布类型的网站，对于交互性要求很高的社区类型网站来说，尽可能的静态化也是提高性能的必要手段，将社区内的帖子、文章进行实时的静态化，有更新的时候再重新静态化也是大量使用的策略，像Mop的大杂烩就是使用了这样的策略，网易社区等也是如此。<br /><br />同时，html静态化也是某些缓存策略使用的手段，对于系统中频繁使用数据库查询但是内容更新很小的应用，可以考虑使用html静态化来实现，比如论坛中论坛的公用设置信息，这些信息目前的主流论坛都可以进行后台管理并且存储再数据库中，这些信息其实大量被前台程序调用，但是更新频率很小，可以考虑将这部分内容进行后台更新的时候进行静态化，这样避免了大量的数据库访问请求。<br /><br />2、图片服务器分离<br />大家知道，对于Web服务器来说，不管是Apache、IIS还是其他容器，图片是最消耗资源的，于是我们有必要将图片与页面进行分离，这是基本上大型网站都会采用的策略，他们都有独立的图片服务器，甚至很多台图片服务器。这样的架构可以降低提供页面访问请求的服务器系统压力，并且可以保证系统不会因为图片问题而崩溃，在应用服务器和图片服务器上，可以进行不同的配置优化，比如apache在配置ContentType的时候可以尽量少支持，尽可能少的LoadModule，保证更高的系统消耗和执行效率。<br /><br />3、数据库集群和库表散列<br />大型网站都有复杂的应用，这些应用必须使用数据库，那么在面对大量访问的时候，数据库的瓶颈很快就能显现出来，这时一台数据库将很快无法满足应用，于是我们需要使用数据库集群或者库表散列。<br /><br />在数据库集群方面，很多数据库都有自己的解决方案，Oracle、Sybase等都有很好的方案，常用的MySQL提供的Master/Slave也是类似的方案，您使用了什么样的DB，就参考相应的解决方案来实施即可。<br /><br />上面提到的数据库集群由于在架构、成本、扩张性方面都会受到所采用DB类型的限制，于是我们需要从应用程序的角度来考虑改善系统架构，库表散列是常用并且最有效的解决方案。我们在应用程序中安装业务和应用或者功能模块将数据库进行分离，不同的模块对应不同的数据库或者表，再按照一定的策略对某个页面或者功能进行更小的数据库散列，比如用户表，按照用户ID进行表散列，这样就能够低成本的提升系统的性能并且有很好的扩展性。sohu的论坛就是采用了这样的架构，将论坛的用户、设置、帖子等信息进行数据库分离，然后对帖子、用户按照板块和ID进行散列数据库和表，最终可以在配置文件中进行简单的配置便能让系统随时增加一台低成本的数据库进来补充系统性能。<br /><br />4、缓存<br />缓存一词搞技术的都接触过，很多地方用到缓存。网站架构和网站开发中的缓存也是非常重要。这里先讲述最基本的两种缓存。高级和分布式的缓存在后面讲述。<br />架构方面的缓存，对Apache比较熟悉的人都能知道Apache提供了自己的缓存模块，也可以使用外加的Squid模块进行缓存，这两种方式均可以有效的提高Apache的访问响应能力。<br />网站程序开发方面的缓存，Linux上提供的Memory Cache是常用的缓存接口，可以在web开发中使用，比如用Java开发的时候就可以调用MemoryCache对一些数据进行缓存和通讯共享，一些大型社区使用了这样的架构。另外，在使用web语言开发的时候，各种语言基本都有自己的缓存模块和方法，PHP有Pear的Cache模块，Java就更多了，.net不是很熟悉，相信也肯定有。<br /><br />5、镜像<br />镜像是大型网站常采用的提高性能和数据安全性的方式，镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异，比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点，数据进行定时更新或者实时更新。在镜像的细节技术方面，这里不阐述太深，有很多专业的现成的解决架构和产品可选。也有廉价的通过软件实现的思路，比如Linux上的rsync等工具。<br /><br />6、负载均衡<br />负载均衡将是大型网站解决高负荷访问和大量并发请求采用的终极解决办法。<br />负载均衡技术发展了多年，有很多专业的服务提供商和产品可以选择，我个人接触过一些解决方法，其中有两个架构可以给大家做参考。<br />硬件四层交换<br />第四层交换使用第三层和第四层信息包的报头信息，根据应用区间识别业务流，将整个区间段的业务流分配到合适的应用服务器进行处理。　第四层交换功能就象是虚IP，指向物理服务器。它传输的业务服从的协议多种多样，有HTTP、FTP、NFS、Telnet或其他协议。这些业务在物理服务器基础上，需要复杂的载量平衡算法。在IP世界，业务类型由终端TCP或UDP端口地址来决定，在第四层交换中的应用区间则由源端和终端IP地址、TCP和UDP端口共同决定。<br />在硬件四层交换产品领域，有一些知名的产品可以选择，比如Alteon、F5等，这些产品很昂贵，但是物有所值，能够提供非常优秀的性能和很灵活的管理能力。Yahoo中国当初接近2000台服务器使用了三四台Alteon就搞定了。<br /><br />软件四层交换<br />大家知道了硬件四层交换机的原理后，基于OSI模型来实现的软件四层交换也就应运而生，这样的解决方案实现的原理一致，不过性能稍差。但是满足一定量的压力还是游刃有余的，有人说软件实现方式其实更灵活，处理能力完全看你配置的熟悉能力。<br />软件四层交换我们可以使用Linux上常用的LVS来解决，LVS就是Linux Virtual Server，他提供了基于心跳线heartbeat的实时灾难应对解决方案，提高系统的鲁棒性，同时可供了灵活的虚拟VIP配置和管理功能，可以同时满足多种应用需求，这对于分布式的系统来说必不可少。<br /><br />一个典型的使用负载均衡的策略就是，在软件或者硬件四层交换的基础上搭建squid集群，这种思路在很多大型网站包括搜索引擎上被采用，这样的架构低成本、高性能还有很强的扩张性，随时往架构里面增减节点都非常容易。这样的架构我准备空了专门详细整理一下和大家探讨。<br /><br />对于大型网站来说，前面提到的每个方法可能都会被同时使用到，我这里介绍得比较浅显，具体实现过程中很多细节还需要大家慢慢熟悉和体会，有时一个很小的squid参数或者apache参数设置，对于系统性能的影响就会很大，希望大家一起讨论，达到抛砖引玉之效。</div><img src="http://www.cnblogs.com/sky1982/aggbug/1439445.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/sky1982/archive/2009/04/20/1439445.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/sky1982/archive/2009/04/20/1439445.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>在ASP.NET中记录错误日志（使用Global.asax） </title><link>http://www.cnblogs.com/sky1982/archive/2009/03/19/1416337.html</link><dc:creator>火龙sky</dc:creator><author>火龙sky</author><pubDate>Thu, 19 Mar 2009 02:25:00 GMT</pubDate><guid>http://www.cnblogs.com/sky1982/archive/2009/03/19/1416337.html</guid><description><![CDATA[<p>阅读: 132 评论: 0 作者: <a href="http://www.cnblogs.com/sky1982/" target="_blank">火龙sky</a> 发表于 2009-03-19 10:25 <a href="http://www.cnblogs.com/sky1982/archive/2009/03/19/1416337.html" target="_blank">原文链接</a></p><p><font style="background-color: #b9e3dd">在<font style="background-color: #b9e3dd" face="Verdana">Global.asax的<font style="background-color: #b9e3dd" face="Verdana">Application_Error</font>中的代码如下：</font></font></p>
<p>&nbsp;</p>
<p>void Application_Error(object sender, EventArgs e) <br />
&nbsp;&nbsp;&nbsp; { <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 在出现未处理的错误时运行的代码<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exception objErr = Server.GetLastError().GetBaseException();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string error = string.Empty;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string errortime = string.Empty;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string erroraddr = string.Empty;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string errorinfo = string.Empty;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string errorsource = string.Empty;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string errortrace = string.Empty;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error += "发生时间:" + System.DateTime.Now.ToString() + "&lt;br&gt;";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errortime = "发生时间:" + System.DateTime.Now.ToString();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error += "发生异常页: " + Request.Url.ToString() + "&lt;br&gt;";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; erroraddr = "发生异常页: " + Request.Url.ToString();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error += "异常信息: " + objErr.Message + "&lt;br&gt;";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorinfo = "异常信息: " + objErr.Message;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorsource = "错误源:" + objErr.Source;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errortrace = "堆栈信息:" + objErr.StackTrace;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; error += "--------------------------------------&lt;br&gt;";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Server.ClearError();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Application["error"] = error;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //独占方式，因为文件只能由一个进程写入.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.IO.StreamWriter writer = null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lock (this)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 写入日志<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string year = DateTime.Now.Year.ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string month = DateTime.Now.Month.ToString();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string path = string.Empty;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string filename = DateTime.Now.Day.ToString() + ".txt";<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = Server.MapPath("~/Error/") + year + "/" + month;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果目录不存在则创建<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!System.IO.Directory.Exists(path))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.IO.Directory.CreateDirectory(path);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.IO.FileInfo file = new System.IO.FileInfo(path + "/" + filename);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if (!file.Exists)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; file.Create();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //file.Open(System.IO.FileMode.Append);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer = new System.IO.StreamWriter(file.FullName, true);//文件不存在就创建,true表示追加<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteLine("用户IP:" + Request.UserHostAddress);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //if (Session["UserName"] != null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp;&nbsp;&nbsp; writer.WriteLine("用户名" + System.Web.HttpContext.Current.Session["UserName"].ToString());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteLine(errortime);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteLine(erroraddr);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteLine(errorinfo);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteLine(errorsource);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteLine(errortrace);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.WriteLine("--------------------------------------------------------------------------------------");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //writer.Close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finally<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (writer != null)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writer.Close();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Redirect("~/Error/ErrorPage.aspx");</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<img src="http://www.cnblogs.com/sky1982/aggbug/1416337.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/sky1982/archive/2009/03/19/1416337.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/sky1982/archive/2009/03/19/1416337.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>一个完美的的项目经理 </title><link>http://www.cnblogs.com/sky1982/archive/2009/03/17/1414274.html</link><dc:creator>火龙sky</dc:creator><author>火龙sky</author><pubDate>Tue, 17 Mar 2009 06:16:00 GMT</pubDate><guid>http://www.cnblogs.com/sky1982/archive/2009/03/17/1414274.html</guid><description><![CDATA[<p>阅读: 26 评论: 0 作者: <a href="http://www.cnblogs.com/sky1982/" target="_blank">火龙sky</a> 发表于 2009-03-17 14:16 <a href="http://www.cnblogs.com/sky1982/archive/2009/03/17/1414274.html" target="_blank">原文链接</a></p><div class="Content"><font face="Verdana">项目要能顺利执行其实并不简单，如果又渉及多个单位合作，困难程度又大增。取得PMP或IPMP认证，只是证明个人具备了项目管理的基本功夫，距离实际运用其实还有很大的一段距离。 </font>
<p><font face="Verdana">以下是一位项目经理的工作日志片段，我们从他的工作日志来看项目经理的工作：<br />
以上只是项目经理工作的片段，相信每个项目经理应该都有自已悲惨的故事，程度恐怕只有过之而无不及。项目经理到底应该有那些看家本领呢？ <br />
<br />
<strong>一个称职的项目经理应该要其备以下的能力：</strong> <br />
<br />
<strong>1. 要易于沟通</strong> <br />
<br />
笔者在2002年时曾经亲自问过美国的一位项目管理专家－Dr. William Wells（曾任美国阿波罗登月计划的计划主持人），问他一位项目经理最需要具备的功夫是什幺。那时他的回答是「一位项目管理最需具备的有三件事，第一是沟通，第二是沟通，第三还是沟通」。 <br />
<br />
请您回想一下，在执行项目时，你花费最多时间在什么部份？跟领导报告工作进度、跟客户介绍产品及说明工作成果、跟项目成员交待工作、跟单位内的其它人员争取支持、跟合作厂商协调配合事项．．．对项目经理来说，一天内大部份的时间几乎都是在跟人沟通。 <br />
<br />
沟通，可以很简单，也可以很复杂。对于部份人来说，反正沟通就是把我的意见表达出来吗，有什么难的。可是在项目过程中有那幺多的人与项目有关，因此要考量的，不仅是把意见表达出来而已，而在于「在什么样的时间，运用什么样的方式，将什么样的信息，传达给什么样的人」。 <br />
<br />
很多项目经理都是属于「被动式的项目经理」。就是「你先说你要什么项目信息，我想办法去弄这些信息出来给你」。因此，信息整理的工作基本上是没有列入工作管制的，只能够见招拆招，抱着应付的心态来面对信息的供应。 <br />
<br />
如果换个比较主动的角度来看，项目经理先了解每个与项目有关的人想要知道什么，这些信息一定有重复的地方，然后将这些信息做个整理归类，不等你开口要，我就先提供给你，让你对项目没有疑惑，化被动为主动。这些信息整理归类的动作，直接就纳入在项目经理的工作管制之中，这样对项目经理而言，也没有任何的「意外」。 <br />
<br />
讲起来简单，做起来其实也不难，二个小时就可以做好沟通计划，几个步骤掌握住就好：<br />
<br />
(1) 认识项目干系人<br />
(2) 分析项目干系人的信息需求<br />
(3) 依照信息需求找出信息种类<br />
(4) 将信息种类归类<br />
(5) 决定信息传递的周期<br />
(6) 决定信息传递方式<br />
(7) 搜集信息<br />
(8) 传递信息<br />
(9) 检讨信息传递成效<br />
<br />
<strong>2. 要想的周全</strong> <br />
<br />
项目经理有点像魔术师。事前先考虑要表演那些魔术，然后将道具准备好，跟助手、灯光及舞台配合，先仿真演练几遍，指示每个人互动方法，并且事先想到如果发生问题时如何处置；确认都没有问题后，开始表演；表演时要掌控会场气氛，使整个场子有高潮迭起的感觉；如果环节出了问题，要马上能够应变，使节目能够继续下去，而不是就此停顿；节目结束后，感谢每个人的合作，同时检讨整个表演的过程需要改进的地方，如此一段表演才算正式收尾。 <br />
<br />
项目经理的责任就是掌控全场，把这段表演完美无缺的呈现出来。不过太难了，执行过的项目的人都知道，首先客户的需求不容易了解，其次计划时间不够，再来执行时问题重重，等到收尾时只能草草了事。 <br />
<br />
表演魔术可以事先演练，找出问题先解决，执行项目可没办法先来一遍。因此项目经理能不能够将未来半年、一年或二年如何执行及因应先「演」过一遍，就对项目的成功有很大影响了。而这就靠项目经理做「计划」的功夫。做计划其实是很烦人的事，相信每个人都有经验。必须考量有多少时间、要怎幺做、有谁可以做、技术上是否可以支持、关键技术是否可以掌握等，做到这个地步，恐怕早已是满身大汗。 <br />
<br />
做个小练习：取一张白纸，在纸的上缘首先将要交给客户的产品以树状方式画出来。然后在纸的中间，将如何做出这项产品的主要工作步骤（5-6个即可），以流程图的方式由左至右用箭头连起来；需要供货商供货或其它单位配合的部份，以分支的方式指向各主要步骤。 <br />
<br />
上述步骤，就是整个计划的基础了。由上图，可以发展出细部的工作步骤及时间、所需的人力资源及预算需求、采购品项及合同商要求等。如何发展出这些细节，限于篇幅，尔后再论。 <br />
<br />
这样还不够的。再取一张白纸，将执行这些工作步骤所可能产生的问题列出来。这个是很关键的步骤，列的愈多，将来临机处理的状况愈少（试想如果项目执行过程中可能发生100个问题，你能事先考量到99个，你只要去担心那突然出现的1个；但如果你只事先考量到1个，那结果可就不得了了）。这些问题，就是你要先期处理，以减少处理意外状况的时间。 <br />
<br />
二张纸，一个计划的框架就成形了。这样其实还不足以执行项目，但是最起码项目经理先将整个项目执行过程大概想了一遍（就有如魔术师先行彩排一样），同时也建立一个以后细部计划的基础。由以上的练习来看，做计划并不难，重点在于去不去想，去不去做。 <br />
<br />
<strong>3. 要能够预测结果</strong> <br />
<br />
日前一个朋友赴美，飞机误点，航空公司没有宣布会担误多久时间，因此在机场枯坐了三个钟头。搭乘那班班机的乘客，有的人需要转机，有的人有亲友在目的地机场接机，有的人初次访美。此时在机场看到每个人都是焦虑的眼神，焦虑的原因在于他们无法知道误点多少时间，所以没有办法控制之后的行程。你的项目是不是也是如此？ <br />
<br />
计划是「想」，执行是「做」。真的去做的时候，碰到需求、能力、技术、管理、人力等问题，都会影响到执行效果。虽然最后都可以完成，但是如果无法推测完成的时间、成本及产出，项目经理就像是那些旅客一样──彷徨无助。所以项目经理除了要会做计划之外，还要能综合研判情势，预测项目时间、成本及产出的结果。 <br />
<br />
以一个一年的项目来说，开始之后，项目经理就负了成败责任，所有的压力都落在项目经理肩上。每天项目经理要想的，不应该只是谁的问题要怎幺解决，今天的日子要怎么过，而是一年后的今天，我是否可以将客户要的东西按时交付、公司的项目盈余目标可以达成、今天无法达成的，剩下的时间里我应该怎么处理才能达成。所以总的来看，项目经理不仅要做Micro Management（细节管理），同时还要做到Macro Management（总体管理）。而要做到Macro Management最基本的作法就是从全面预测项目结果，并且采取各种因应作法。 <br />
<br />
要如何预测结果？今天工作延误，明天也会延误，后天也照样会延误，以后到底要如何补回来呢？传统的项目经理在现在这个时点是没有概念的，结果是到项目要结束前才在赶工，到那时候才发现所要花的钱早就把利润吃光了。<br />
<br />
比较好的作法是今天发生问题了，找出原因，评估这个问题如何解决。如果一定得增加时间及人力，那幺假设今天这个工作得延长二周，照着时程表推下去，所有相关工作，包含对人力资源、合同商、成本的影响为何都要找出来；再往下看，推到项目完成期限，是否会延误（不是所有工作的延误都对项目完成时间有影响的！）；如果有影响，就要思考后续的工作要如何先期调整，以适度的调配资源。要做这些评估，较简单的方式，可能仍得借助项目管理软件。目前项目管理软件，不论是国内或国外的，都能做到计划功能，也能够经由计划的调整，去分析对整体的影响。 <br />
<br />
项目经理的工作其实是很复杂。对于一个不愿意看全局的项目经理，这些步骤全部在不知不觉中被省去。但是对于一个企业来说，由一位没有看家本领的项目经理来执行重要的项目，公司的时间、名誉、获利及质量保证，不仅仅是儿戏。您的项目经理有没有这些看家本领呢？</font></p>
</div>
 <img src="http://www.cnblogs.com/sky1982/aggbug/1414274.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/sky1982/archive/2009/03/17/1414274.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/sky1982/archive/2009/03/17/1414274.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>CuteEditor6.0 使用</title><link>http://www.cnblogs.com/sky1982/archive/2009/03/14/1411265.html</link><dc:creator>火龙sky</dc:creator><author>火龙sky</author><pubDate>Sat, 14 Mar 2009 01:50:00 GMT</pubDate><guid>http://www.cnblogs.com/sky1982/archive/2009/03/14/1411265.html</guid><description><![CDATA[<p>阅读: 161 评论: 0 作者: <a href="http://www.cnblogs.com/sky1982/" target="_blank">火龙sky</a> 发表于 2009-03-14 09:50 <a href="http://www.cnblogs.com/sky1982/archive/2009/03/14/1411265.html" target="_blank">原文链接</a></p><table style="table-layout: fixed">
    <tr>
            <td>
            <div class="cnt" id="blog_text">
            <div class="lh3" style="overflow: hidden; width: 100%">
            <table class="contentTable" cellspacing="0" cellpadding="0">
                <tr>
                        <td style="font-size: 12px; word-wrap: break-word" valign="top">
                        <div>&nbsp;<font style="line-height: 1.3em">&nbsp;&nbsp;&nbsp;&nbsp; CuteEditor是一款功能非常强大，支持图片上传、文件下载和word类似的文字编辑器。并且Vs2003和Vs2005都可以适用。对于新闻发布系统和博客之类的系统，是非常的方便的。对一个刚接触这款编辑器的朋友来说或许会遇到和我一样的许多问题，现在我就把我在使用这款编辑器的过程所得出的一些经验做个总结，如果您觉得好的话就支持我一下，我废话少说了，进入正题，先给个我的资源地址让大家下载，都是共享资源，可以放心下载，</font><wbr></wbr><br />
                        <a href="http://www.cnblogs.com/Files/hzuIT/CuteEditorDemo_51aspx.rar" target="_blank" link="http://www.cnblogs.com/Files/hzuIT/CuteEditorDemo_51aspx.rar">/Files/hzuIT/CuteEditorDemo_51aspx.rar</a><wbr></wbr><br />
                        当然首先这款编辑器，有的是直接下载.dll文件。我的资源中是破解版的，在bin目录下，请大家注意<br />
                        现在介绍使用步骤：<br />
                        1、将以下文件考贝到你站点根目录下的bin内(这些在CuteEditor6.0/bin下都可以找到）<br />
                        CuteEditor.dll<br />
                        CuteEditor.ImageEditor.dll（6.0增加的EditorImage功能）<br />
                        CuteEditor.lic（解密文件）<br />
                        NetSpell.SpellChecker.dll（拼写检查功能）<br />
                        注：（&#8220;.dic&#8221;为扩展名的文件是词典保存为纯文本文件的格式。将CuteEditor6.0/bin文件夹里的都拷到站点根目录下的bin内也可以）<br />
                        2、将CuteSoft_Client文件夹拷贝到项目的相应目录.（CuteSoft_Client包含CuteEditor文件夹和example.css,放了控件图片,文件之类的数据example.css它指定了编辑器的样式）<br />
                        注:FilesPath用来设置所对应的目录,如：FilesPath="~/admin/CuteSoft_Client/CuteEditor/"<br />
                        3、在根目录下建立Uploads的文件夹作为上传图片及附件的根目录。<br />
                        4、将CuteEditor.dll添加到工具箱<br />
                        5、CuteEditor属性设置(假设当前页在根目录下)：<br />
                        &nbsp;&nbsp;&nbsp;&nbsp; 1)AutoConfigure设为simple,即选择最简单的界面显示方式<br />
                        &nbsp;&nbsp;&nbsp;&nbsp; 2)EditorWysiwygModecss设为：CuteSoft_Client/example.cs<br />
                        &nbsp;&nbsp;&nbsp;&nbsp; 3)FilesPath设为：CuteSoft_Client/CuteEditor<br />
                        6、控件的调用代码如下：<br />
                        　　&lt;%@ Register TagPrefix="CE" Namespace="CuteEditor" Assembly="CuteEditor" %&gt;<br />
                        　　&lt;CE:EDITOR id="Editor1" runat="server" Width="700px" FilesPath="~/CuteSoft_Client/CuteEditor/"&nbsp;&nbsp; EditorWysiwygModeCss="../example.css" ThemeType="Office2003_BlueTheme"&gt;&lt;/CE:EDITOR&gt;<br />
                        7、修改Web.config文件<br />
                        &nbsp;&nbsp; &lt;appSettings&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp; &lt;add key="DictionaryFolder" value="bin" /&gt;<br />
                        &nbsp;&nbsp; &lt;/appSettings&gt;<br />
                        &nbsp;&nbsp; &lt;system.web&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp; &lt;browserCaps&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tagwriter=System.Web.UI.HtmlTextWriter<br />
                        &nbsp;&nbsp;&nbsp;&nbsp; &lt;/browserCaps&gt;<br />
                        &nbsp;&nbsp; &lt;/system.web&gt;<br />
                        注意：<br />
                        1)可以修改CuteSoft_Client\CuteEditor\Configuration\AutoConfigure文件夹下的文件，改便CuteEditor工具栏按钮的显示或排列。<br />
                        2)可以修改文件CuteSoft_Client\CuteEditor\Configuration\Shared\Common.config来添加字体。<br />
                        3)可以修改CuteSoft_Client\CuteEditor\Configuration\Security文件夹中的Admin.config，Default.config，Guest.config来控制权限上传图片和文件的问题。<br />
                        （在属性里设置：SecurityPolicyFile为这.config三个中的一种）<br />
                        特别提醒一下：有的系统可能要设置一下保存图片和文件的文件夹的访问权限，把Uploads文件夹的安全中everyone用户改为写入即可。不然文件会上传不上去，因为没有写入权限。<br />
                        8、出错总结：<br />
                        出错1：无法为类型 CuteEditor.Editor 授予有效的许可证。有关详细信息，请与组件的制造商联系。 <br />
                        原因：可能缺少CuteEditor.lic文件，把CuteEditor.lic文件考贝到Bin目录下即可。<br />
                        出错2：点击工具栏里的插入样板按钮弹出这样的错误页面：使用主题 css 文件要求页上有标头控件。(例如 &lt;head runat="server" /&gt;)。 <br />
                        原因：Asp.net2.0引入Theme后，要求&lt;Head&gt;标签runat="server"而CuteEditor是1.1版本引起的。<br />
                        解决办法：给CuteSoft_Client\CuteEditor夹下的template.aspx里的&lt;Head&gt;添加runat="server"能解决加载时闪过的错误。给CuteSoft_Client/CuteEditor/Help下的default.aspx里的&lt;Head&gt;添加能解决点击工具栏里的插入样板按钮也弹出的错误页面。若点击其他工具栏也弹出同样的错误，可以右键错误页面，查看该页面的路径，修改在CuteSoft_Client文件夹下对应的页面中的&lt;Head&gt;标签。<br />
                        上传文件配置admin.config：<br />
                        重命名为时间：&lt;security name="UseTimeStampRenameUploadedFiles"&gt;true&lt;/security&gt;<br />
                        文件大小<br />
                        文件格式<br />
                        可修改CuteSoft_Client\CuteEditor\Configuration\AutoConfigure文件夹下的文件，改便CuteEditor工具栏按钮的显示或排列。<br />
                        可修改文件CuteSoft_Client\CuteEditor\Configuration\Shared\Common.config来添加字体。<br />
                        修改文件的上传目录<br />
                        string path = "~/upload";<br />
                        Editor1.SetSecurityGalleryPath(path);<br />
                        步骤：1、将CuteEditor文件夹下bin文件夹里的CuteEditor.dl，CuteEditor.lic，CuteEditor.ImageEditor.dll （5.0增加的EditorImage功能）拷到项目的bin目录下。如果需要拼写检查功能则还要拷NetSpell.SpellChecker.dll，并修改web.config文件，如下<br />
                        &lt;appSettings&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp; &lt;add key="DictionaryFolder" value="bin"/&gt;<br />
                        &lt;/appSettings&gt;<br />
                        （&#8220;.dic&#8221;为扩展名的文件是词典保存为纯文本文件的格式。将bin文件夹里的都拷到项目的bin目录下也可以）<br />
                        2、将CuteEditor文件夹下CuteSoft_Client文件夹全部拷贝到应用程序的根目录下，并在项目根目录下建立一个uploads文件夹.<br />
                        3、打开VS,在工具栏上点击右键-添加/移除项,在自定义工具箱中的.NET Framework组件,流览将&nbsp;&nbsp; bin文件夹下的cuteEditor.dll文件引用，将Editor拖到页面即可<br />
                        CuteEditor 5.0属性设置<wbr></wbr><br />
                        1、插入数据库：Editor1.Text<br />
                        2、文件夹设置： Imports System.IO（引入命名空间）<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim str As String = Session("UserName")&nbsp;&nbsp;&nbsp;&nbsp;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim path As String = "~/UploadFile/" + str + ""<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim fullPath As String<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fullPath = Server.MapPath("UploadFile\") + str<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **判断以UserName命名的文件夹是否存在，不存在则创建以UserName命名的文件夹<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Not Directory.Exists(fullPath) Then<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Directory.CreateDirectory(fullPath)<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **将默认路径uploads改为&#8220;path&#8221;所表示的路径<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Editor1.SetSecurityGalleryPath(path)<br />
                        3、按纽设置：* 属性----外观----AutoConfigure<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 代码&nbsp;&nbsp; Editor1.AutoConfigure = AutoConfigure.Simple<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * CuteEditor文件夹HowTo目录下的AddButton例子<br />
                        4、上传文件大小设置（以flash为例）：Dim kb As Int32 = 200<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Editor1.SetSecurityMaxFlashSize(kb)<br />
                        CuteEditor真的是一款很好的web在线编辑器,但是5.0的安装和以前的版本有点不同,5.0的破解版的下载地址是:http://www.seaskyer.net,下载完后解下压缩吧,这个地球人都知道.<br />
                        我们在vs2005里面新建个web site吧.然后把CuteEditor添加到工具面板.我们在工具面板里面右键选择choose item,在出来的对话框里面选择browser,找到CuteEditor.dll,一路确定就可以拉.<br />
                        我们再添加个edit.asxp,把工具面板里面的Editor拖到页面上来.这个时候那个授权文件CuteEditor.lic应该也自动的到了bin目录下,如果没有我们必须手动烤进去.这个时候我们如果直接编译的话还是不可以的,会提示错误,因为5.0增加了个EditorImage的功能啊,所以我们必须要把CuteEditor.ImageEditor.dll和NetSpell.SpellChecker.dll(烤这个的原因是默认打开拼写检查)都烤到项目的bin目录下,同时我们也要把解压缩后的CuteSoft_Client目录全部拷贝到应用程序的根目录下.这个时候编译的时候应该没有错误了,如果还出现什么windows集成身份验证的错误,那么我们要修改IIS里面的配置,在iis的这个站点的属性里面有个目录安全性,再点身份验证和访问控制的编辑,把集成windows身份验证前面的小勾打上就是啊.<br />
                        上面的只是个最简单的安装,还有比如控制CueEditor的显示,已经安全性和那个什么上传的啊,还有控制用户上传的目录啊,或者给每个用户建个他们自己的图片目录啊,还必须要另外设置,如果可能我江另外写下.我们这里现在要开始用Ajax.Net来把CuteEditor的内容插入数据库拉.<br />
                        关于如何安装Ajax.Net,请见我的另外的一骗文章:<a href="http://pwqzc.cnblogs.com/archive/2005/11/11/273814.html" target="_blank" link="http://pwqzc.cnblogs.com/archive/2005/11/11/273814.html">Ajax.Net快速入门</a><wbr></wbr>.<br />
                        如何把CueEditor里面的内容用Ajax插入数据库呢?首先关键是获得CuteEditor的客户端ID,这个可以通过&lt;%=Editor1.ClietID%&gt;来获得.再就是如何在客户端获得Editor里面的内容.这个可以使用他的内在的JavaScript API,getHTML(),注意是HTML.下面是一个把CuteEditor的内容插入数据库的一个html按钮代码:<br />
                        &lt;input type="button" value="确定" /&gt;<br />
                        接着是一个js脚本:我们假设Editor的ID是Editor1<br />
                        &lt;script language="javascript" type="text/javascript"&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp; &lt;!--<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function insertEditor()<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var editor = document.getElementById('&lt;%=Editor1.ClientID %&gt;');<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var editorText = editor.getHTML();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WDDHY.EditMyPage.InsertEditor(editorText,onComplete);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function onComplete(ret)<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ret.value=="OK")<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("保存成功!");<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alert("失败!");<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
                        &nbsp;&nbsp;&nbsp;&nbsp; //--&gt;<br />
                        &nbsp;&nbsp;&nbsp;&nbsp; &lt;/script&gt;<br />
                        我们再看服务器段的Ajax方法:<br />
                        [AjaxPro.AjaxMethod]<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string InsertEditor(string insertStr)<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string connStr = System.Configuration.ConfigurationManager.AppSettings["ConnString"].ToString();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlConnection conn = new SqlConnection(connStr);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string cmdStr = "insert into userContent(this_content,this_name) values(@content,@name)";<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlCommand comm = new SqlCommand(cmdStr,conn);<br />
                        //2005里面给参数赋值简单多拉!!<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comm.Parameters.AddWithValue("@content", insertStr);<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comm.Parameters.AddWithValue("@name","pwqzc");<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.Open();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; try<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; comm.ExecuteNonQuery();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "OK";<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return "BAD";<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; finally<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conn.Close();<br />
                        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
                        运行,我们写点 内容到CuteEditor里面,点按钮,他一下就把数据插入进去拉!!!</div>
                        </td>
                    </tr>
                </table>
            </div>
            </div>
            </td>
        </tr>
    </table>
<img src="http://www.cnblogs.com/sky1982/aggbug/1411265.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/sky1982/archive/2009/03/14/1411265.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/sky1982/archive/2009/03/14/1411265.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>CE寻找游戏基址+偏移</title><link>http://www.cnblogs.com/sky1982/archive/2009/02/18/1393138.html</link><dc:creator>火龙sky</dc:creator><author>火龙sky</author><pubDate>Wed, 18 Feb 2009 05:46:00 GMT</pubDate><guid>http://www.cnblogs.com/sky1982/archive/2009/02/18/1393138.html</guid><description><![CDATA[<p>阅读: 1806 评论: 0 作者: <a href="http://www.cnblogs.com/sky1982/" target="_blank">火龙sky</a> 发表于 2009-02-18 13:46 <a href="http://www.cnblogs.com/sky1982/archive/2009/02/18/1393138.html" target="_blank">原文链接</a></p><!--文章内容开始-->&nbsp;
<div class="real_blog" id="veryContent" style="text-indent: 2em; line-height: 26px; height: auto! important">
<table id="blogContentTable" cellspacing="0" cellpadding="0">
    <tr>
            <td style="word-wrap: break-word" valign="top">
            <div id="blogContainer"><img id="paperPicArea0" style="display: none" height="1" alt="" src="http://imgcache.qq.com/ac/b.gif" width="1" />
            <div id="paperTitleArea" align="center"></div>
            <img id="paperPicArea" style="display: none" height="1" alt="" src="http://imgcache.qq.com/ac/b.gif" width="1" />
            <div id="blogDetailDiv" style="font-size: 16px">
            <center>首先打开CE，找游戏进程，搜索当前的金钱数量</center><wbr>
            <center><wbr><a href="http://sz4.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14a730572f5f7f4863e24e56cf2fa42c6b204b42493a774f045eed8afcca2791ed140ba243bfe527b4e41e7cf41a0202d82e2fdc089a3f73b6999f88468f23ba810bfff93b" target="_blank"><img height="492" alt="" src="http://sz4.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14a730572f5f7f4863e24e56cf2fa42c6b204b42493a774f045eed8afcca2791ed140ba243bfe527b4e41e7cf41a0202d82e2fdc089a3f73b6999f88468f23ba810bfff93b" width="572" /></a><wbr> </center><wbr>
            <center>进游戏改变一下金钱数量再次搜索</center><wbr>
            <center><wbr><a href="http://sz2.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f140b668180f6d117e6a902a535975eab2fd5b2eb93a3159d8a1b2df05f6d67a5cf484560e3f40125c32cc2230ebcbaf178135350b4f5d248fc3e99b16a58b0cd6aeedec4ff" target="_blank"><img height="413" alt="" src="http://sz2.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f140b668180f6d117e6a902a535975eab2fd5b2eb93a3159d8a1b2df05f6d67a5cf484560e3f40125c32cc2230ebcbaf178135350b4f5d248fc3e99b16a58b0cd6aeedec4ff" width="430" /></a><wbr> </center><wbr>
            <center>搜索出一个值，双击放到下面，右键找操作这个地址的代码，如果没有显示的话，可以再次进游戏改变金钱数量</center><wbr>
            <center><wbr><a href="http://sz1.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14d85152d927065f888fafdec929ec481a75fe3bae4391d53e0b5817b7fd7402c8b5581ddb7ac19a055ccc0a7ef9606efcbcaa09aef56bee4d691fa34e0bfa94cd6042d8c8" target="_blank"><img height="484" alt="" src="http://sz1.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14d85152d927065f888fafdec929ec481a75fe3bae4391d53e0b5817b7fd7402c8b5581ddb7ac19a055ccc0a7ef9606efcbcaa09aef56bee4d691fa34e0bfa94cd6042d8c8" width="520" /></a><wbr> </center><wbr>
            <center>记下ECX的值和偏移</center><wbr>
            <center><wbr><a href="http://sz2.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14530e53bd8b2c0b7daffe0b46d0cf1a5d09696ea3b8f391ad3f754416066f7ddb659bae06032bd74a68a387826fe40fd7ed0052d8cf42fd8282c70d4f6a28844ccca3c3c2" target="_blank"><img height="345" alt="" src="http://sz2.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14530e53bd8b2c0b7daffe0b46d0cf1a5d09696ea3b8f391ad3f754416066f7ddb659bae06032bd74a68a387826fe40fd7ed0052d8cf42fd8282c70d4f6a28844ccca3c3c2" width="447" /></a><wbr> </center><wbr>
            <center>用16进制的方式搜索ECX的</center><wbr>
            <center><wbr><a href="http://sz6.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14270197a301fbed57001c64d7e4315fce8eada1e30d2786205fc408f8ec3a28cb90255a530541d9282fe82af1bba29e758679c150ac203bfb269c972e34ff4066e33c746f" target="_blank"><img height="283" alt="" src="http://sz6.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14270197a301fbed57001c64d7e4315fce8eada1e30d2786205fc408f8ec3a28cb90255a530541d9282fe82af1bba29e758679c150ac203bfb269c972e34ff4066e33c746f" width="358" /></a><wbr> </center><wbr>
            <center>和前边的一样，只有一个是偏移10，其他都是偏移34，那么我们就找偏移34的。记录各值</center><wbr>
            <center><wbr><a href="http://sz2.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f147657708e371317b5705ce6e36c4dbc0123313dce0ce976eb47e791c7c1bb655cea41b80dfc85b74224ee03c752ba1f3435a4260850a006a9feececdadd97ed9e064c81e7" target="_blank"><img height="348" alt="" src="http://sz2.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f147657708e371317b5705ce6e36c4dbc0123313dce0ce976eb47e791c7c1bb655cea41b80dfc85b74224ee03c752ba1f3435a4260850a006a9feececdadd97ed9e064c81e7" width="583" /></a><wbr> </center><wbr>
            <center>搜索EDI的值，依次给他们偏移后，我们可以小退下游戏，找到不变的值。</center><wbr>
            <center><wbr><a href="http://sz3.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14e2c5e79d23fe21e3e3c936786a75896779e6a2df69edeb4741f876f3803651f1aa95ad1bc6eddf5bc5e4b1f5b023626bb90d4e89fb469a74d9e7475139cfcedada69299f" target="_blank"><img height="326" alt="" src="http://sz3.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14e2c5e79d23fe21e3e3c936786a75896779e6a2df69edeb4741f876f3803651f1aa95ad1bc6eddf5bc5e4b1f5b023626bb90d4e89fb469a74d9e7475139cfcedada69299f" width="481" /></a><wbr> </center><wbr>
            <center>再次以同样方式搜索，找到基址。那么这个游戏的钱的地址就是[[005e3e28+34]+7468] </center><wbr>
            <center><wbr><a href="http://sz1.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f149c1427ee7e2c64335214d88c85534de2529a07621e6a2381809fad47e0a9b8a5cf213328ede72854dd9e00c40a3d9c39220a693e197d7cb8848755775da091c4ab508a4b" target="_blank"><img height="316" alt="" src="http://sz1.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f149c1427ee7e2c64335214d88c85534de2529a07621e6a2381809fad47e0a9b8a5cf213328ede72854dd9e00c40a3d9c39220a693e197d7cb8848755775da091c4ab508a4b" width="636" /></a><wbr> </center><wbr>
            <center>------------------------------------END--------------------------------------</center><wbr>
            <center>关于游戏动态内存基址的查找方法</center><wbr>
            <center><font style="line-height: 1.5em" face="" color="#0000ff" size="3">老早就想讨论一下关于游戏动态内存基址的查找方法了，只不过没什么时间。还好今天比较闲，就以完美国际为列子吧！</font><wbr></center><wbr>
            <center><font style="line-height: 1.5em" face="" color="#0000ff" size="3">首先是要下载并安装ce，然后打开 </center><wbr>
            <center>选择好进程以后，填入要查找的数据。这里是以HP值1857为查找对象，一下查到了那么多地址</center><wbr>
            <center>恩，想办法改变一下HP的值，我是脱下了一件+HP的装备，现在是1807了。 </center><wbr>
            <center>OK，填入1807，按继续查找，现在只有两个地址了。（以后会发现，下面的那个是HP的上限）如图3： </center><wbr>
            <center>用鼠标双击第一个地址，加入到跟踪栏并选择&#8220;Find out what writes to this address"项 </center><wbr>
            <center>这个时候会弹出一个对话窗口</center><wbr>
            <center>选择&#8220;是&#8221;就可以了，然后会弹出跟踪窗口，想办法再改变一下HP的值，会发现跟踪窗口里有数据了 </center><wbr>
            <center>双击数据察看详细内容</center><wbr>
            <center>在这里可以看到，偏移量位450，并记下04c9ffd0这个值，我们把它填入查找，注意&#8220;HEX&#8221;选项要打&#8220;勾&#8221;。 </center><wbr>
            <center>按2次&#8220;new scan" 查找，能查到很多地址。我们只需要把前面的4个地址放入地址栏，然后游戏小退一下（到选择人物的画面就可以了） </center><wbr>
            <center>再进入游戏，重复第2-6步骤，得到"0a716318"这个值,查找后我们会发现，新找到的地址与刚才加入到地址栏的地址有相同。</center><wbr>
            <center>就可以确定&#8220;032f4660&#8221;为血量的二级基址。 </center><wbr><font style="line-height: 1.5em" face="" color="darkred" size="3">我是根据经验直接确定&#8220;032f4660&#8221;为血量的二级基址，所以没有以上的重复</font><wbr>
            <center>可以看到&#8220;032f4660&#8221;偏移20后，得到的地址为&#8220;032f4640&#8221;，那么我们把&#8221;032f4640&#8220;填入，然后再点搜索，得到&#8220;0092764c&#8221;，就是我们需要的一级基址了（人物基址） </center><wbr>
            <center>我们跟踪一级基址&#8220;0092764c&#8221;，得到偏移1C后，为基址（游戏总基址）,这里不再熬述 </center><wbr><font style="line-height: 1.5em" face="" color="red" size="3">总结：基址+偏移1c=一级基址 <br />
            <center>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一级基址+偏移20=二级基址 </center><wbr>
            <center>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二级基址+偏移450=血量地址 </center><wbr>
            <center>我们读取血量地址中的数据，就可以找到人物的HP了</font><wbr></center><wbr>
            <center><font style="line-height: 1.5em" face="" color="#ff0000" size="3">--------------------END--------------------</font><wbr></center><wbr>
            <center><wbr><a href="http://sz1.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f149c080c3d5376d328f274fad5d70574eb46375c14607952f8a7d070b09ee14e459a738f23784f0aa7f1fc656f959f88c807f30cc5591830771a2fc5627e762d903b7909e7" target="_blank"><img height="572" alt="" src="http://sz1.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f149c080c3d5376d328f274fad5d70574eb46375c14607952f8a7d070b09ee14e459a738f23784f0aa7f1fc656f959f88c807f30cc5591830771a2fc5627e762d903b7909e7" width="525" /></a><wbr><br />
            <br />
            <wbr><a href="http://sz5.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14cecab22a58962ea76291c8133758d65877142dd41719d6c5a1b46473f48faba1cd6b3dd9a57ea4535a7bef18d7caa2cfa08a9b5802a5c58406ad62579c963e5582e0b3f8" target="_blank"><img height="574" alt="" src="http://sz5.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14cecab22a58962ea76291c8133758d65877142dd41719d6c5a1b46473f48faba1cd6b3dd9a57ea4535a7bef18d7caa2cfa08a9b5802a5c58406ad62579c963e5582e0b3f8" width="531" /></a><wbr><br />
            <br />
            <wbr><a href="http://sz5.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f1488f412b5d90bb49509fa3fe9582a4fa7d66b21e7710e5ecc9ec8598da107ade569d750ab2e363ef3bd724dd1ef143fd1b29c85356b93f7d1e4ab9984bd7d7e2e5e11ed52" target="_blank"><img height="574" alt="" src="http://sz5.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f1488f412b5d90bb49509fa3fe9582a4fa7d66b21e7710e5ecc9ec8598da107ade569d750ab2e363ef3bd724dd1ef143fd1b29c85356b93f7d1e4ab9984bd7d7e2e5e11ed52" width="531" /></a><wbr><br />
            <br />
            <wbr><a href="http://sz3.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f1461bdbeb7a801bf1eca4afa202c10dbcd62ac89af6bf9540cd0a6e56fbbae8f20798f6b1215609fcfcc613e8caed90eaf6d4e8c3d1d226e1c8efe06a8c46f33b260edf9b8" target="_blank"><img height="574" alt="" src="http://sz3.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f1461bdbeb7a801bf1eca4afa202c10dbcd62ac89af6bf9540cd0a6e56fbbae8f20798f6b1215609fcfcc613e8caed90eaf6d4e8c3d1d226e1c8efe06a8c46f33b260edf9b8" width="531" /></a><wbr><br />
            <br />
            <wbr><a href="http://sz3.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14afb6c8688c928a154bfb69a5b1e9eea87cf5dcb3486cf30752215aaf8480b610473af88e219a684d3eaf70caf8c6f7100fea6054cefb6a84450854242a16feaa429bc129" target="_blank"><img height="574" alt="" src="http://sz3.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14afb6c8688c928a154bfb69a5b1e9eea87cf5dcb3486cf30752215aaf8480b610473af88e219a684d3eaf70caf8c6f7100fea6054cefb6a84450854242a16feaa429bc129" width="531" /></a><wbr><br />
            <br />
            <wbr><a href="http://sz5.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f1462ba7dcc50d58e2e6168a16c1d8097f877018e88cf94f6b74351e10347ad82c8af735cc48320e5bb43bce670e409f01c11122f44b246e01594eb0a4e456bb3e1cce7a84d" target="_blank"><img height="577" alt="" src="http://sz5.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f1462ba7dcc50d58e2e6168a16c1d8097f877018e88cf94f6b74351e10347ad82c8af735cc48320e5bb43bce670e409f01c11122f44b246e01594eb0a4e456bb3e1cce7a84d" width="532" /></a><wbr><br />
            <br />
            <wbr><a href="http://sz5.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14adf7a89c5080eb80fc58ffa5edb4ed567cb6c7b130aa522bed54b8a27abde49096e79a1b2376f622d8fc666d7be17b21f979d9759ddd3a3bf2ed7cdd7ee0392a2fd061fe" target="_blank"><img height="577" alt="" src="http://sz5.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14adf7a89c5080eb80fc58ffa5edb4ed567cb6c7b130aa522bed54b8a27abde49096e79a1b2376f622d8fc666d7be17b21f979d9759ddd3a3bf2ed7cdd7ee0392a2fd061fe" width="532" /></a><wbr><br />
            <br />
            <wbr><a href="http://sz6.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14a8c11459798f0d3db2ebeadb79b35e4e3944ff129b94c07191e95bd3a8ec26c54c0a2636cc20769b086c461517ff051cea3c4f7cd1e772088df4aa9b600558903b5bbe99" target="_blank"><img height="577" alt="" src="http://sz6.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14a8c11459798f0d3db2ebeadb79b35e4e3944ff129b94c07191e95bd3a8ec26c54c0a2636cc20769b086c461517ff051cea3c4f7cd1e772088df4aa9b600558903b5bbe99" width="532" /></a><wbr><br />
            <br />
            <wbr><a href="http://sz2.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14bf2d209060e69eec759e5293b22fe0d3006114ed8697c273abd58a3a7978a22163d5b16f71ab32816caadca00915d5d32d234206ceabacd71a7937f23c5d4d443c2cb037" target="_blank"><img height="577" alt="" src="http://sz2.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14bf2d209060e69eec759e5293b22fe0d3006114ed8697c273abd58a3a7978a22163d5b16f71ab32816caadca00915d5d32d234206ceabacd71a7937f23c5d4d443c2cb037" width="532" /></a><wbr><br />
            <br />
            <wbr><a href="http://sz5.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14b11a41c431b603a97227002906b699c1e018b983d0b74cacf83ae0473d87532fcaffe01e46d3e6dfcdf137c116b0c6863ad63147c52c7836f9857a411bc52d6301db67e1" target="_blank"><img height="577" alt="" src="http://sz5.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14b11a41c431b603a97227002906b699c1e018b983d0b74cacf83ae0473d87532fcaffe01e46d3e6dfcdf137c116b0c6863ad63147c52c7836f9857a411bc52d6301db67e1" width="532" /></a><wbr><br />
            <br />
            <wbr><a href="http://sz6.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14934164f9e44453da5569ce5231a89ac3be1daec0bf3b0b1a41b4a53f1bf119beae0b9b8344fcb7259c275a9a681ad6d6e70bd8c61d875874c7cb79cae4e618164c563d29" target="_blank"><img height="577" alt="" src="http://sz6.photo.store.qq.com/http_imgload.cgi?/rurl4_b=e15cf575a22fdce3567a5e7af78a7f14934164f9e44453da5569ce5231a89ac3be1daec0bf3b0b1a41b4a53f1bf119beae0b9b8344fcb7259c275a9a681ad6d6e70bd8c61d875874c7cb79cae4e618164c563d29" width="532" /></a><wbr><br />
            <br />
            </center><wbr></font></div>
            </div>
            </td>
        </tr>
    </table>
</div>
<font face="Verdana">http://qzone.qq.com/blog/1634790-1223992212</font>
<img src="http://www.cnblogs.com/sky1982/aggbug/1393138.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/sky1982/archive/2009/02/18/1393138.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/sky1982/archive/2009/02/18/1393138.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item><item><title>VirtualAllocEx函数</title><link>http://www.cnblogs.com/sky1982/archive/2009/02/16/1391610.html</link><dc:creator>火龙sky</dc:creator><author>火龙sky</author><pubDate>Mon, 16 Feb 2009 07:25:00 GMT</pubDate><guid>http://www.cnblogs.com/sky1982/archive/2009/02/16/1391610.html</guid><description><![CDATA[<p>阅读: 153 评论: 0 作者: <a href="http://www.cnblogs.com/sky1982/" target="_blank">火龙sky</a> 发表于 2009-02-16 15:25 <a href="http://www.cnblogs.com/sky1982/archive/2009/02/16/1391610.html" target="_blank">原文链接</a></p>VirtualAllocEx 函数的作用是在指定进程的虚拟空间保留或提交内存区域，除非指定MEM_RESET参数，否则将该内存区域置0。 <br />
<br />
LPVOID VirtualAllocEx( <br />
HANDLE hProcess, // 申请内存所在的进程句柄 <br />
LPVOID lpAddress, // 保留页面的内存地址；一般用NULL自动分配 <br />
SIZE_T dwSize, // 欲分配的内存大小，字节单位；注意实际分 配的内存大小是页内存大小的整数倍 <br />
DWORD flAllocationType, <br />
DWORD flProtect <br />
); <br />
flAllocationType，flProtect太多了，参数数值和意思MSDN上都有，不再赘述了.<br />
问题描述：我要选中其他进程的一个ListView窗口中的一个Item，事实上只要发消息就可以了： <br />
SendMessage( hWnd, LVM_SETITEMSTATE, (WPARAM)nItemIndex, (LPARAM)pLVItem ); <br />
可是其中的LPARAM要指向一个LVItem的结构，我们知道消息可以跨进程，但目标窗口收到消息时它需要寻址这个结构，而这个结构实际上存储在发送方 的地址空间里；所以我们必须把LVItem的内容写入到窗口过程所在的地址空间内，于是便需要VirtualAllocEx和VirtualFreeEx 了。 <br />
代码如下。 <br />
ListViewOperator::ListViewOperator( HWND hWnd ) // 初始化函数 <br />
{ <br />
m_hwnd = NULL; //目标窗口 <br />
m_hProcess = NULL; //目标进程 <br />
m_pLVItem = NULL; //写入目标进程的LVITEM结构 <br />
m_pTextBuffer = NULL; //其他用途 <br />
<br />
m_hwnd = hWnd; <br />
<br />
DWORD dwProcessId; <br />
GetWindowThreadProcessId( hWnd, &amp;dwProcessId ); //获取进程ID <br />
<br />
m_hProcess = OpenProcess( PROCESS_ALL_ACCESS, false, dwProcessId ); //打开进程 <br />
THROW_EXCEPTION( (m_hProcess == NULL), "Open process failed" ); <br />
<br />
m_pLVItem = (LVITEMA *)VirtualAllocEx( m_hProcess, NULL, sizeof(LVITEMA), MEM_COMMIT, PAGE_READWRITE ); 在目标进程空间中获得内存，允许读取和写入。 <br />
THROW_EXCEPTION( (m_pLVItem == NULL), "Memory alloc failed" ); <br />
m_pTextBuffer = (char *)VirtualAllocEx( m_hProcess, NULL, MAX_TEXT_BUFFER_LENGTH, MEM_COMMIT, PAGE_READWRITE ); <br />
THROW_EXCEPTION( (m_pTextBuffer == NULL), "Memory alloc failed" ); <br />
<br />
} <br />
<br />
void ListViewOperator::SetItemSelected( int nItemIndex ) //选中某一个ITEM <br />
{ <br />
LVITEMA lvitem; // 静态结构 <br />
<br />
lvitem.mask = LVIF_STATE; <br />
lvitem.iSubItem = 0; <br />
lvitem.state = LVIS_SELECTED|LVIS_FOCUSED; <br />
lvitem.stateMask = LVIS_SELECTED|LVIS_FOCUSED; <br />
<br />
int nRet = WriteProcessMemory( m_hProcess, m_pLVItem, &amp;lvitem, sizeof(LVITEM), NULL ); // 将本地进程中的结构写入到目标进程 <br />
THROW_EXCEPTION( (nRet == 0), "Write Process memory failed" ); <br />
<br />
HRESULT hRet = SendMessage( m_hwnd, LVM_SETITEMSTATE, (WPARAM)nItemIndex, (LPARAM)m_pLVItem );//发送消息 <br />
THROW_EXCEPTION( FAILED(hRet), "Send message failed" ); <br />
<br />
return ; <br />
}
<img src="http://www.cnblogs.com/sky1982/aggbug/1391610.html?type=1" width="1" height="1" alt=""/><p>评论: 0　<a href="http://www.cnblogs.com/sky1982/archive/2009/02/16/1391610.html#pagedcomment" target="_blank">查看评论</a>　<a href="http://www.cnblogs.com/sky1982/archive/2009/02/16/1391610.html#commentform" target="_blank">发表评论</a></p><hr/><p>最新新闻：<br/>· <a href="http://news.cnblogs.com/n/56793/" target="_blank">知名扩展 Firebug 的简化版登陆 Chrome</a><span style="color:gray">(2010-02-09 22:59)</span><br/>· <a href="http://news.cnblogs.com/n/56792/" target="_blank">Google 悄悄地启用 1e100.net，打枪地不要</a><span style="color:gray">(2010-02-09 22:57)</span><br/>· <a href="http://news.cnblogs.com/n/56791/" target="_blank">从 Google 代码库找到的好东西</a><span style="color:gray">(2010-02-09 22:46)</span><br/>· <a href="http://news.cnblogs.com/n/56789/" target="_blank">苹果在线商店临时关闭 或将推新Macbook</a><span style="color:gray">(2010-02-09 22:39)</span><br/>· <a href="http://news.cnblogs.com/n/56788/" target="_blank">豆瓣网推出豆瓣电台iPhone客户端</a><span style="color:gray">(2010-02-09 21:51)</span><br/></p><p>编辑推荐：<a href="http://news.cnblogs.com/n/56782/" target="_blank">2010年2月编程语言排行榜</a><br/></p><p>网站导航：<a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/" target="_blank">个人主页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://home.cnblogs.com/group/" target="_blank">小组</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://kb.cnblogs.com" target="_blank">知识库</a></p>]]></description></item></channel></rss>