<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_淘宝API-.net开发-数据库优化-seo优化-技术是手艺,语言是工具,驰骋在代码的海洋中</title><subtitle type="text">做个快乐的程序员</subtitle><id>http://feed.cnblogs.com/blog/u/24288/rss</id><updated>2012-05-28T01:27:13Z</updated><author><name>kevinLee</name><uri>http://www.cnblogs.com/kevinlzf/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kevinlzf/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/24288/rss"/><entry><id>http://www.cnblogs.com/kevinlzf/archive/2012/03/14/2396666.html</id><title type="text">IE7 绝对定位z-index问题</title><summary type="text">在进行网页布局设计的时候，经常会根据需要设置相对定位，绝对以及浮动定位最近突然发现了一个奇妙的现象：IE6下绝对定位元素神秘消失或被遮挡, 首先是IE绝对定位元素神秘消失,设置的绝对定位元素,突然从IE浏览器下消失了，然而火狐能正常显示. 尝试对绝对定位元素进行清除浮动操作,IE下能显示，但是出现了莫名的留白，火狐下正常显示.至少这个现象表明，绝对定位元素在IE6下神秘消失对相邻元素的浮动定位有关.类似如图的情景具体解决方案：参考：http://stackoverflow.com/questions/8680152/absolute-overlay-div-element-doesnt-co.</summary><published>2012-03-14T13:52:00Z</published><updated>2012-03-14T13:52:00Z</updated><author><name>kevinLee</name><uri>http://www.cnblogs.com/kevinlzf/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kevinlzf/archive/2012/03/14/2396666.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kevinlzf/archive/2012/03/14/2396666.html"/><content type="html">&lt;p&gt;　在进行网页布局设计的时候，经常会根据需要设置相对定位，绝对以及浮动定位最近突然发现了一个奇妙的现象：IE6下绝对定位元素神秘消失或被遮挡, 首先是IE绝对定位元素神秘消失,设置的绝对定位元素,突然从IE浏览器下消失了，然而火狐能正常显示. 尝试对绝对定位元素进行清除浮动操作,IE下能显示，但是出现了莫名的留白，火狐下正常显示.至少这个现象表明，绝对定位元素在IE6下神秘消失对相邻元素的浮动定位有关.&lt;/p&gt;&lt;p&gt;类似如图的情景&lt;/p&gt;&lt;p&gt;&lt;img style="width: 619px; height: 638px" border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kevinlzf/untitled.jpg" width="619" height="638" /&gt;&lt;/p&gt;&lt;p&gt;具体解决方案：&lt;/p&gt;&lt;p&gt;参考：&lt;/p&gt;&lt;p&gt;&lt;a href="http://stackoverflow.com/questions/8680152/absolute-overlay-div-element-doesnt-cover-relatively-positioned-elements/8680539"&gt;http://stackoverflow.com/questions/8680152/absolute-overlay-div-element-doesnt-cover-relatively-positioned-elements/8680539&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.k68.org/?p=272"&gt;http://www.k68.org/?p=272&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sweetwill.com/contentid155.htm"&gt;http://www.sweetwill.com/contentid155.htm&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.sub-273.com/archives/1706"&gt;http://www.sub-273.com/archives/1706&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/kevinlzf/aggbug/2396666.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/kevinlzf/archive/2012/03/14/2396666.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/kevinlzf/archive/2011/12/05/2276607.html</id><title type="text">推荐文章-2011.12.05</title><summary type="text">说说大型高并发高负载网站的系统架构定向抓取漫谈大型网站架构不得不考虑的10个问题</summary><published>2011-12-05T03:54:00Z</published><updated>2011-12-05T03:54:00Z</updated><author><name>kevinLee</name><uri>http://www.cnblogs.com/kevinlzf/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kevinlzf/archive/2011/12/05/2276607.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kevinlzf/archive/2011/12/05/2276607.html"/><content type="html">&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.kuqin.com/web/20080728/12654.html" target="_blank"&gt;&lt;span style="font-size: 14pt"&gt;说说大型高并发高负载网站的系统架构&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.kuqin.com/searchengine/20110709/92191.html" target="_blank"&gt;&lt;span style="font-size: 14pt"&gt;定向抓取漫谈&lt;/span&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.kuqin.com/web/20111126/315334.html" target="_blank"&gt;&lt;span style="font-size: 14pt"&gt;大型网站架构不得不考虑的10个问题&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/kevinlzf/aggbug/2276607.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/kevinlzf/archive/2011/12/05/2276607.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/kevinlzf/archive/2011/12/05/2276477.html</id><title type="text">QPS、PV和需要部署机器数量计算公式(转)</title><summary type="text">术语说明： QPS = req/sec = 请求数/秒 【QPS计算PV和机器的方式】 QPS统计方式 [一般使用 http_load 进行统计] QPS = 总请求数 / ( 进程总数 * 请求时间 ) QPS: 单个进程每秒请求服务器的成功次数 单台服务器每天PV计算 公式1：每天总PV = QPS * 3600 * 6 公式2：每天总PV = QPS * 3600 * 8 服务器计算 服务器数量 = ceil( 每天总PV / 单台服务器每天总PV ) 【峰值QPS和机器计算公式】 原理：每天80%的访问集中在20%的时间里，这20%时间叫做峰值时间 公式：( 总PV数 * 80% ) </summary><published>2011-12-05T02:36:00Z</published><updated>2011-12-05T02:36:00Z</updated><author><name>kevinLee</name><uri>http://www.cnblogs.com/kevinlzf/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kevinlzf/archive/2011/12/05/2276477.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kevinlzf/archive/2011/12/05/2276477.html"/><content type="html">术语说明： &lt;br /&gt;QPS = req/sec = 请求数/秒 &lt;br /&gt;&lt;br /&gt;【QPS计算PV和机器的方式】 &lt;br /&gt;&lt;br /&gt;QPS统计方式 [一般使用 http_load 进行统计] &lt;br /&gt;QPS = 总请求数 / ( 进程总数 *&amp;nbsp;&amp;nbsp; 请求时间 ) &lt;br /&gt;QPS: 单个进程每秒请求服务器的成功次数 &lt;br /&gt;&lt;br /&gt;单台服务器每天PV计算 &lt;br /&gt;公式1：每天总PV = QPS * 3600 * 6 &lt;br /&gt;公式2：每天总PV = QPS * 3600 * 8 &lt;br /&gt;&lt;br /&gt;服务器计算 &lt;br /&gt;服务器数量 =&amp;nbsp;&amp;nbsp; ceil( 每天总PV / 单台服务器每天总PV ) &lt;br /&gt;&lt;br /&gt;【峰值QPS和机器计算公式】 &lt;br /&gt;&lt;br /&gt;原理：每天80%的访问集中在20%的时间里，这20%时间叫做峰值时间 &lt;br /&gt;公式：( 总PV数 * 80% ) / ( 每天秒数 * 20% ) = 峰值时间每秒请求数(QPS) &lt;br /&gt;机器：峰值时间每秒QPS / 单台机器的QPS&amp;nbsp;&amp;nbsp; = 需要的机器 &lt;br /&gt;&lt;br /&gt;问：每天300w PV 的在单台机器上，这台机器需要多少QPS？ &lt;br /&gt;答：( 3000000 * 0.8 ) / (86400 * 0.2 ) = 139 (QPS) &lt;br /&gt;&lt;br /&gt;问：如果一台机器的QPS是58，需要几台机器来支持？ &lt;br /&gt;答：139 / 58 = 3 &lt;br /&gt;&lt;br /&gt;&lt;img src="http://www.cnblogs.com/kevinlzf/aggbug/2276477.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/kevinlzf/archive/2011/12/05/2276477.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/kevinlzf/archive/2011/11/25/2262628.html</id><title type="text">Cannot open the disk &amp;#39;XXX&amp;#39; or one of the snapshot disks it depends on. reason: failed to lock the file.</title><summary type="text">今天打开vmware的Ubuntu虚拟机，发现出现Cannot open the disk 'XXX' or one of the snapshot disks it depends on. reason: failed to lock the file警告，上网查了一下，发现原来是上次异常关机，原本文件夹里出现了.lck后缀的文件，将其所在的文件夹删除，就可以解决了。</summary><published>2011-11-25T01:22:00Z</published><updated>2011-11-25T01:22:00Z</updated><author><name>kevinLee</name><uri>http://www.cnblogs.com/kevinlzf/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kevinlzf/archive/2011/11/25/2262628.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kevinlzf/archive/2011/11/25/2262628.html"/><content type="html">&lt;p&gt;今天打开vmware的Ubuntu虚拟机，发现出现Cannot open the disk 'XXX' or one of the snapshot disks it depends on. reason: failed to lock the file警告，上网查了一下，发现原来是上次异常关机，原本文件夹里出现了.lck后缀的文件，将其所在的文件夹删除，就可以解决了。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/kevinlzf/aggbug/2262628.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/kevinlzf/archive/2011/11/25/2262628.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/kevinlzf/archive/2011/06/24/2089353.html</id><title type="text">Sql 2008查询优化-逻辑转换</title><summary type="text">Sql server 优化器在工作方式上，对or 逻辑处理在性能上存在问题，与 and 相比，性能差了些</summary><published>2011-06-24T13:21:00Z</published><updated>2011-06-24T13:21:00Z</updated><author><name>kevinLee</name><uri>http://www.cnblogs.com/kevinlzf/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kevinlzf/archive/2011/06/24/2089353.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kevinlzf/archive/2011/06/24/2089353.html"/><content type="html">&lt;p&gt;Sql 2008&lt;span style="font-family: 宋体"&gt;查询优化&lt;/span&gt;-&lt;span style="font-family: 宋体"&gt;逻辑转换&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; Sql server &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;优化器在工作方式上，对&lt;/span&gt;or &lt;span style="font-family: 宋体"&gt;逻辑处理在性能上存在问题，与&lt;/span&gt; and &lt;span style="font-family: 宋体"&gt;相比，性能差了些。为此，常看到&lt;/span&gt;sql&lt;span style="font-family: 宋体"&gt;优化中，提到减少用&lt;/span&gt;or &lt;span style="font-family: 宋体"&gt;，尽量用&lt;/span&gt; and&lt;span style="font-family: 宋体"&gt;的说法。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;在此，使用&lt;/span&gt;demo&lt;span style="font-family: 宋体"&gt;数据来验证此说法。&amp;#8220;逻辑转换&amp;#8221;，就是将逻辑&lt;/span&gt;or &lt;span style="font-family: 宋体"&gt;转换成&lt;/span&gt; and &lt;span style="font-family: 宋体"&gt;的优化，主要分析逻辑筛选条件。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;准备数据表：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;1.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;运行&lt;/span&gt;sql&lt;span style="font-family: 宋体"&gt;脚本生成&lt;/span&gt;order&lt;span style="font-family: 宋体"&gt;表,&lt;a href="http://files.cnblogs.com/kevinlzf/orderdata.txt"&gt;&lt;span style="font-family: 宋体"&gt;orderdata.txt&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;2.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;IF OBJECT_ID('dbo.MyOrders') IS NOT NULL&lt;/p&gt;&lt;p&gt;&amp;nbsp;DROP TABLE dbo.MyOrders;&lt;/p&gt;&lt;p&gt;GO&lt;/p&gt;&lt;p&gt;SELECT * INTO dbo.MyOrders FROM Sales.Orders&lt;/p&gt;&lt;p&gt;CREATE INDEX idx_dt ON dbo.MyOrders(orderdate);&lt;/p&gt;&lt;p&gt;GO&lt;/p&gt;&lt;p&gt;&lt;span&gt;3.&lt;span style="font: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: 宋体"&gt;一切准备好后，假设筛选条件为：&lt;/span&gt;orderdate&amp;gt;&amp;#8217;20080506&amp;#8217; or (orderdate=&amp;#8217;20050506&amp;#8217; and ordered&amp;gt;11075)&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;运行下列语句&lt;/span&gt;:&lt;/p&gt;&lt;p&gt;SELECT orderid, orderdate, custid, empid&lt;/p&gt;&lt;p&gt;FROM dbo.MyOrders&lt;/p&gt;&lt;p&gt;WHERE orderdate &amp;gt; '20080506'&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; OR (orderdate = '20080506' AND orderid &amp;gt; 11075);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;其统计信息如下，&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;(2 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;行受影响&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;表&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;'MyOrders'&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;。扫描计数&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;1&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;，逻辑读取&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;20 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次，物理读取&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;0 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次，预读&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;0 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次，&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;lob &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;逻辑读取&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;0 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次，&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;lob &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;物理读取&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;0 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次，&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;lob &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;预读&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;0 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次。&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;(1 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;行受影响&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;实际执行计划如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kevinlzf/sql2008-1.png" width="287" height="211" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;可以看出，这样的筛选条件，没有用上索引，而是执行表扫描。在现实中表的规模，将会是很大&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;i/o&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;开销。&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-family: 宋体"&gt;分析逻辑条件，改为&lt;/span&gt;orderdate &amp;gt;= '20080506' AND (orderdate &amp;gt; '20080506' OR orderid &amp;gt; 11075) &lt;span style="font-family: 宋体"&gt;即：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;SELECT orderid, orderdate, custid, empid&lt;/p&gt;&lt;p&gt;FROM dbo.MyOrders&lt;/p&gt;&lt;p&gt;WHERE orderdate &amp;gt;= '20080506'&lt;/p&gt;&lt;p&gt;&amp;nbsp;AND (orderdate &amp;gt; '20080506' OR orderid &amp;gt; 11075);&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;统计信息以下：&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;(2 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;行受影响&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;表&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;'MyOrders'&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;。扫描计数&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;1&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;，逻辑读取&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;6 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次，物理读取&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;0 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次，预读&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;0 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次，&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;lob &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;逻辑读取&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;0 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次，&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;lob &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;物理读取&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;0 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次，&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;lob &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;预读&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;0 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;次。&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;(1 &lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;行受影响&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: 8pt"&gt;)&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family: 宋体; font-size: 8pt"&gt;实际执行计划如下：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kevinlzf/sql2008-2.png" width="460" height="224" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;可以看出，逻辑读只有&lt;/span&gt;6&lt;span style="font-family: 宋体"&gt;次，且用上了索引。如果在&lt;/span&gt;orderdate&lt;span style="font-family: 宋体"&gt;和&lt;/span&gt;orderid&lt;span style="font-family: 宋体"&gt;上同时创建一个索引，性能会更好。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Ok&lt;span style="font-family: 宋体"&gt;，就到这了。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/kevinlzf/aggbug/2089353.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/kevinlzf/archive/2011/06/24/2089353.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/kevinlzf/archive/2011/04/13/2015464.html</id><title type="text">基于SQL Server 2008 Service Broker构建企业级消息系统(转)</title><summary type="text">Microsoft 在SQL Server 2005引入了服务代理 （Service Broker 简称SSB） 为技术支持代理设计模式和面向消息的中间件 (MOM) 的原则。Service Broker在SQL Server 2008上得到完善, SQL Server Service Broker 为消息和队列应用程序提供 SQL Server 数据库引擎本机支持。</summary><published>2011-04-13T15:00:00Z</published><updated>2011-04-13T15:00:00Z</updated><author><name>kevinLee</name><uri>http://www.cnblogs.com/kevinlzf/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kevinlzf/archive/2011/04/13/2015464.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kevinlzf/archive/2011/04/13/2015464.html"/><content type="html">&lt;p&gt;Microsoft 在SQL Server 2005引入了服务代理 （Service Broker 简称SSB） 为技术支持代理设计模式和面向消息的中间件 (MOM) 的原则。Service Broker在SQL Server 2008上得到完善, SQL Server Service Broker 为消息和队列应用程序提供 SQL Server 数据库引擎本机支持。这使开发人员可以轻松地创建使用数据库引擎组件在完全不同的数据库之间进行通信的复杂应用程序。开发人员可以使用 Service Broker 轻松生成可靠的分布式应用程序。使用 Service Broker 的应用程序开发人员无需编写复杂的内部通信和消息，即可跨多个数据库分发数据工作负荷。因为 Service Broker 会处理会话上下文中的通信路径，所以这就减少了开发和测试工作。同时还提高了性能。&lt;/p&gt;详细内容： &lt;a href="http://www.infoq.com/cn/articles/enterprisemessage-sqlserver-servicebroker"&gt;基于SQL Server 2008 Service Broker构建企业级消息系统&lt;/a&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/kevinlzf/aggbug/2015464.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/kevinlzf/archive/2011/04/13/2015464.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/kevinlzf/archive/2011/04/08/2009358.html</id><title type="text">Scrum框架及其背后的原则（上）——Scrum 框架的伪代码描述(转)</title><summary type="text">Scrum框架及其背后的原则（上）——Scrum 框架的伪代码描述http://www.infoq.com/cn/articles/scrum-pseudo-code</summary><published>2011-04-08T05:29:00Z</published><updated>2011-04-08T05:29:00Z</updated><author><name>kevinLee</name><uri>http://www.cnblogs.com/kevinlzf/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kevinlzf/archive/2011/04/08/2009358.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kevinlzf/archive/2011/04/08/2009358.html"/><content type="html">&lt;p&gt;Scrum框架及其背后的原则（上）&amp;#8212;&amp;#8212;Scrum 框架的伪代码描述&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.infoq.com/cn/articles/scrum-pseudo-code"&gt;http://www.infoq.com/cn/articles/scrum-pseudo-code&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/kevinlzf/aggbug/2009358.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/kevinlzf/archive/2011/04/08/2009358.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2002690.html</id><title type="text">随笔-项目管理的瞎想</title><summary type="text">项目管理看似简单容易，可真正能把控全局却不是一件容易的事。在项目前期，要做需求调研，这是项目开始的基础。不明确的、含糊的需求描述在后期都会给项目带来不可预料的问题。需求调研之后，进行相应的分析，将客户要求的，期望的东东整理成文档，做可行性分析。需求分析待双方都确认无误后，进入系统设计阶段。系统用如何搭建物理框架，既要满足当前的开发需求，又能有一定的可扩展性。根据项目中估算的数据量、并发量等参数选择合理的物理架构，前期不要大牛拉小车，浪费硬件的资源，同时又浪费老板的钱。物理框架设计好后，选择逻辑架构，用什么技术，如分布式，用remoting,还是wcf还是其他。等等。系统分层明细，秉着单一原则，</summary><published>2011-04-01T13:32:00Z</published><updated>2011-04-01T13:32:00Z</updated><author><name>kevinLee</name><uri>http://www.cnblogs.com/kevinlzf/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2002690.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2002690.html"/><content type="html">&lt;p&gt;项目管理看似简单容易，可真正能把控全局却不是一件容易的事。&lt;/p&gt;&lt;p&gt;在项目前期，要做需求调研，这是项目开始的基础。不明确的、含糊的需求描述在后期都会给项目带来不可预料的问题。&lt;/p&gt;&lt;p&gt;需求调研之后，进行相应的分析，将客户要求的，期望的东东整理成文档，做可行性分析。&lt;/p&gt;&lt;p&gt;需求分析待双方都确认无误后，进入系统设计阶段。系统用如何搭建物理框架，既要满足当前的开发需求，又能有一定的可扩展性。&lt;/p&gt;&lt;p&gt;根据项目中估算的数据量、并发量等参数选择合理的物理架构，前期不要大牛拉小车，浪费硬件的资源，同时又浪费老板的钱。&lt;/p&gt;&lt;p&gt;物理框架设计好后，选择逻辑架构，用什么技术，如分布式，用remoting,还是wcf还是其他。等等。系统分层明细，秉着单一原则，将建好各层（数据层、逻辑层、实体层、公共层、接口层、工厂层等），同时要考虑日后的修改或扩展。&lt;/p&gt;&lt;p&gt;公共层或组件，包括缓存、日志、邮件、上传文件、安全验证等一系列的公共的部分建立好，可为日后项目开发提供强有力的功能接口支持。&lt;/p&gt;&lt;p&gt;项目进入到正式开发阶段，前提是数据库设计等已完成，团队的成员根据计划分别进行需求功能开发。在分配任务时，一定要了解团队各成员的技术水平，这样可合理有效的分工，使项目事半功倍。&lt;/p&gt;&lt;p&gt;当然，还有代码规范，俗话说没有规矩，不成方圆。代码规范文档等在项目开始前一定给团队成员进行培训，在开发中不按要求者代码重写并扣绩效，呵。。强硬措施。&lt;/p&gt;&lt;p&gt;随笔，想到哪，就写到哪，今天到此！&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/kevinlzf/aggbug/2002690.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2002690.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2002653.html</id><title type="text">关于NoSQL你必须知道的九件事(转)</title><summary type="text">本文提到的列表来源于一篇文章，文章标题是关系型数据库使用者必须知道的一些NoSQL知识。其中总结的九点NoSQL与RDBMS的区别联系非常不错。NoSQLFan为大家翻译在此。 原文链接：NOSQL DB BASICS FOR THE RDBMS-SAVVY 1、理解ACID与BASE的区别(ACID是关系型数据库强一致性的四个要求，而BASE是NoSQL数据库通常对可用性及一致性的弱要求原则，它们的意思分别是，ACID：atomicity, consistency, isolation, durability;BASE：Basically Available, Soft-state, Eve</summary><published>2011-04-01T12:47:00Z</published><updated>2011-04-01T12:47:00Z</updated><author><name>kevinLee</name><uri>http://www.cnblogs.com/kevinlzf/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2002653.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2002653.html"/><content type="html">本文提到的列表来源于一篇文章，文章标题是关系型数据库使用者必须知道的一些NoSQL知识。其中总结的九点NoSQL与RDBMS的区别联系非常不错。&lt;a href="http://www.cnblogs.com/kevinlzf/admin/nosqlfan.com" target="_blank"&gt;&lt;font color="#3366ff"&gt;NoSQLFan&lt;/font&gt;&lt;/a&gt;为大家翻译在此。&lt;span class="displayclass"&gt;&lt;/span&gt; &lt;p&gt;原文链接：&lt;a href="http://www.evidentsoftware.com/nosql-basics-for-the-rdbms-savvy/" target="_blank"&gt;&lt;font color="#3366ff"&gt;NOSQL DB BASICS FOR THE RDBMS-SAVVY&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;span class="displayclass"&gt;&lt;/span&gt;&lt;p&gt;1、理解ACID与BASE的区别(ACID是关系型数据库强一致性的四个要求，而BASE是NoSQL数据库通常对可用性及一致性的弱要求原则，它们的意思分别是，ACID：atomicity, consistency, isolation, durability;BASE：Basically Available, Soft-state, Eventually Consistent。同时有意思的是ACID在英语里意为酸，BASE意思为碱)&lt;/p&gt;&lt;span class="displayclass"&gt;&lt;/span&gt;&lt;p&gt;2、理解持久化与非持久化的区别。这么说是因为有的NoSQL系统是纯内存存储的。&lt;/p&gt;&lt;span class="displayclass"&gt;&lt;/span&gt;&lt;p&gt;3、你必须意识到传统有关系型数据库与NoSQL系统在数据结构上的本质区别。传统关系型数据库通常是基于行的表格型存储，而NoSQL系统包括了列式存储(Cassandra)、key/value存储(Memcached)、文档型存储(CouchDB)以及图结构存储(Neo4j)&lt;/p&gt;&lt;span class="displayclass"&gt;&lt;/span&gt;&lt;p&gt;4、与传统关系数据库有统一的SQL语言操作接口不同，NoSQL系统通常有自己特有的API接口。&lt;/p&gt;&lt;span class="displayclass"&gt;&lt;/span&gt;&lt;p&gt;5、在架构上，你必须搞清楚，NoSQL系统是被设计用于成百上千台机器的集群中的，而非共享型数据库系统的架构。&lt;/p&gt;&lt;span class="displayclass"&gt;&lt;/span&gt;&lt;p&gt;6、在NoSQL系统中，可能你得习惯一下不知道你的数据具体存在何处的情况。&lt;/p&gt;&lt;span class="displayclass"&gt;&lt;/span&gt;&lt;p&gt;7、在NoSQL系统中，你最好习惯它的弱一致性。&amp;#8221;eventually consistent&amp;#8221;(最终一致性)正是BASE原则中的重要一项。比如在Twitter，你在Followers列表中经常会感受到数据的延迟。&lt;/p&gt;&lt;span class="displayclass"&gt;&lt;/span&gt;&lt;p&gt;8、在NoSQL系统中，你要理解，很多时候数据并不总是可用的。&lt;/p&gt;&lt;span class="displayclass"&gt;&lt;/span&gt;&lt;p&gt;9、你得理解，有的方案是拥有分区容忍性的，有的方案不一定有。&lt;/p&gt;&lt;span class="displayclass"&gt;&lt;/span&gt;&lt;span class="anniu"&gt;&lt;/span&gt;&lt;div style="font-size: 12px"&gt;原文出处：http://blog.nosqlfan.com/html/1535.html&lt;/div&gt;&lt;script language="javascript"&gt;var o=document.getElementById("ArticleContent");if(o!=null){o.style.display="block";}document.getElementById("DivMessage").style.display="none";//var j=document.getElementById("LoginAbstract");if(j!=null){j.style.display="none";}&lt;/script&gt;&lt;img src="http://www.cnblogs.com/kevinlzf/aggbug/2002653.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2002653.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2001785.html</id><title type="text">Web入侵安全检测之表单提交 （转）</title><summary type="text">Web入侵安全检测之表单提交文章内容有些过时，但基本思想还是可以学习的，自己保存个日志，以便自己查阅。</summary><published>2011-04-01T01:44:00Z</published><updated>2011-04-01T01:44:00Z</updated><author><name>kevinLee</name><uri>http://www.cnblogs.com/kevinlzf/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2001785.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2001785.html"/><content type="html">&lt;p&gt;文章内容有些过时，但基本思想还是可以学习的，自己保存个日志，以便自己查阅。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在Web程序设计中，处理表单提交的数据是客户端向SERVER传递数据的主要方法，表单数据的提交方法有两种Post方法和Get方法，当使用Post方法时，数据由标准的&lt;br /&gt;输入设备读入，当使用Get方法时，数据由CGI变量QUERY_STRING传递给表单数据处理程序，当Post方法一般不会在服务器上留下痕迹。具体的实现过程这里我就不多说，&lt;br /&gt;有兴趣的朋友可以去翻阅其他资料。不管是ASP程序还是PHP，CGI程序，表单提交的作用的大同小异的，所以这里仅以ASP为例。&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; 一.利用表单本地提交突破入侵限制&lt;br /&gt;&amp;nbsp; &amp;nbsp;既然表单是客户端与服务端的重要数据传递方法之一，那么它的安全性就难免会出现问题。&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;1:上传非法文件。&lt;br /&gt;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp;某同学录的popwindowupload1.asp的客户端代码如下：&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;/p&gt;&lt;p align="center"&gt;&amp;lt; HTML&amp;gt;&amp;nbsp; &amp;nbsp;....&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; Script language="javascript"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;function mysubmit(theform)&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp; &amp;nbsp; if(theform.big.value=="")&amp;nbsp; &amp;nbsp; {&amp;nbsp; &amp;nbsp; alert("请点击浏览按钮，选择您要上传的jpg或gif文件!")&amp;nbsp; &amp;nbsp; theform.big.focus;&amp;nbsp; &amp;nbsp; return (false);&amp;nbsp; &amp;nbsp; }&amp;nbsp; &amp;nbsp; else&amp;nbsp; &amp;nbsp; {&amp;nbsp; &amp;nbsp; str= theform.big.value;&amp;nbsp; &amp;nbsp; strs=str.toLowerCase();&amp;nbsp; &amp;nbsp; lens=strs.length;&amp;nbsp; &amp;nbsp; extname=strs.substring(lens-4,lens);&amp;nbsp; &amp;nbsp; if(extname!=".jpg" &amp;amp;&amp;amp; extname!=".gif")&amp;nbsp; &amp;nbsp; {&amp;nbsp; &amp;nbsp; alert("请选择jpg或gif文件!");&amp;nbsp; &amp;nbsp; return (false);&amp;nbsp; &amp;nbsp; }&amp;nbsp; &amp;nbsp; }&amp;nbsp; &amp;nbsp; return (true);&amp;nbsp; &amp;nbsp; }&amp;nbsp; &amp;nbsp; &amp;lt; /script&amp;gt;&amp;nbsp; &amp;nbsp; .....&amp;nbsp; &amp;nbsp; &amp;lt; input type="hidden" name="act" value="upload"&amp;gt;&amp;nbsp; &amp;nbsp; &amp;lt; input type="hidden" name="filepath" value="/alumni/class/classimage"&amp;gt;&amp;nbsp; &amp;nbsp; &amp;lt; input type="submit" name="Submit2" value="开始上传"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;....&amp;nbsp; &amp;nbsp; &amp;lt; /HTML&amp;gt;&lt;/p&gt;&amp;nbsp; &amp;nbsp;很明显，这个上传文件在客户端利用SCRIPT限制了上传类型，虽然用SCRIPT可以减轻ASP程序的负载，但象大部分好的方面一样也有它坏的一面，如果其只是在客户端做限制，并在服务端限制上传类型或禁止外部提交，那么它并不能阻止我们上传程序禁止上传的ASP，CER，PHP等文件，只要我们在本地构造一个表单也能能轻松的上传这些文件。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;构造的表单主要代码如下：&lt;br /&gt;&amp;nbsp; &amp;nbsp; .............&lt;br /&gt;&lt;p align="center"&gt;&amp;lt; form name="mainForm" enctype="multipart/form-data" action="http://www.***&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; w.com/alumni/class/pic/upfile.asp?userid2=" method=post"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; tr&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; td width="74" align="right" height="26"&amp;gt;标题：&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt; td width="399"&amp;gt;十二少&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt; /tr&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; tr&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; td width="74" align="right" height="26"&amp;gt;照片说明：&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt; td width="399"&amp;gt;十二少's照片&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt; /td&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; /tr&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; tr&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; td width="74" align="right" height="26"&amp;gt;图片路径：&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt; td width="399"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt; input type="file" name="big"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt; /td&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; /tr&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; tr align="center"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; td colspan="2" height="26"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt; input type="hidden" name="act" value="upload"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt; input type="hidden" name="filepath" value="/alumni/class/classimage"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt; input type="submit" name="Submit2" value="开始上传"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt; br&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt; /td&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; /tr&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; tr align="center"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; td colspan="2" height="26" class="di"&amp;gt;只支持jpg,gif文件，图片大小在&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;150k&amp;lt; /font&amp;gt;以内，上传时请耐心等待！&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;lt; /tr&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt; /form&amp;gt;&lt;/p&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;....&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; 只要将前面查看得到的代码中的验证文件类型的SCRIPT删掉，然后再修改ACTION后的URL保存为HTML文件即可&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;2：突破表格注入限制&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;这个和前面一差不多就不再多说了（呵呵，其实是找不到实例拉）&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;另外字符输入的长度限制也差不多，只要你看得懂这些HTML语言。&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; 二.HIDDEN隐藏字段缺陷&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;终于说到重点了。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;1：还是SQL注入问题。&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;目前SQL注入工击仍是入侵中的一大热点，不过随着时间的推移，一般的大型网站程序都已经将明显的&lt;br /&gt;&amp;nbsp;&amp;nbsp;注入点打好补丁拉，但是一些隐藏的比较深的注入点却还是有不少的，除非将它所有的代码都翻新一片。&lt;br /&gt;&amp;nbsp; &amp;nbsp;明显的注入点如：.asp?id=*，输入框等都已经过滤了，但这就能彻底的杜绝黑客的入侵吗？回答当然是NO&lt;br /&gt;&amp;nbsp;&amp;nbsp;这就要提到本文的重点HIDDEN隐藏字段拉。&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; 图1是某网游官方站点的帐号激活界面，查看源码，搜索"HIDDEN"字符串&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;br /&gt;&lt;p align="center"&gt;&amp;lt; form action="index_game.asp" method="post" name="form1" target="_blank" &amp;gt;&amp;nbsp; &amp;nbsp; ...&amp;nbsp; &amp;nbsp; &amp;lt; td height="25" align="center"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt; input type="submit" name="Submit" value="提交"&amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;...&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt; /form&amp;gt;&lt;/p&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; 如图2，看到了吗那个：&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;只要它没有在客户端做任何限制，&lt;br /&gt;&amp;nbsp;&amp;nbsp;这就是一个注入点拉，将"user_name"的值"norfolk"改为想要注入的代码，然后和前面的一样将"ACTION"&lt;br /&gt;&amp;nbsp;&amp;nbsp;的改为相应的URL，保存为HTML文件~~~~~~~~~&lt;br /&gt;&amp;nbsp; &amp;nbsp; 不过，它的安全还不错，提交后返回错误提示窗口，很显然它在服务端禁止了外部提交。&lt;br /&gt;2：非法修改其他用户密码。&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;典型的代表是leadbbs V2.77的那个密码修改漏洞：任何注册用户都可以修改管理员密码，从而入侵服务器，&lt;br /&gt;进而拿下主机。&lt;br /&gt;&amp;nbsp; &amp;nbsp;登陆后修改密码，查看源码，其主要漏洞代码如下：&lt;br /&gt;.......&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&amp;lt; form action=usermodify.asp method=post name=form1 &amp;gt; &amp;lt; tr&amp;gt; &amp;lt; td align=center height=25&amp;gt; &amp;lt; p&amp;gt;*用户名称： &amp;lt; td height=25&amp;gt; &amp;lt; p&amp;gt;norfolk&amp;nbsp;&amp;nbsp;&amp;lt; tr&amp;gt; &amp;lt; td align=center height=25&amp;gt; &amp;lt; p&amp;gt;*你的密码：&amp;nbsp;&amp;nbsp;&amp;lt; td height=25&amp;gt; &amp;lt; input class=fminpt name=submitflag type=hidden value=52norflk&amp;gt; &amp;lt; input class=fminpt name=form_id type=hidden value=265&amp;gt;&lt;/p&gt;&lt;br /&gt;........ &lt;br /&gt;&lt;br /&gt;其中我的from_id的值为265，在管理员例表中查看管理员ID，然后将它替换265，再将ACTION的URL相应的修改一下&lt;br /&gt;保存为HTML文件再提交就可以将管理员的密码改成52norfolk。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;这个漏洞早在2003.12月就已经公布，这里在拿出来只是为了说明一下这个HIDDEN隐藏字段的危害。不过我发现目前&lt;br /&gt;还是有不少程序可以任意修改其他用户的密码，至于方法如出一辙，(偶用这个漏洞拿下过不少站点的ADMIN):-_-&lt;br /&gt;&lt;br /&gt;3：任意修改价格以达到低价甚至不花一分钱网上购物。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; 早在几年前国内国外的一些大型网上购物网站就已经出现过类似的漏洞。 这些网站的后台程序的验证机制并不健全&lt;br /&gt;以至可以在外部提交数据，于是便出现了低价甚至不花一分钱购买商品的事件，导致这些网站造成重大的经济损失，&lt;br /&gt;由此观之，网络安全是马虎不得的，即使一丁点而问题，造成的损失也是不可估量的。希望之后的程序员在编写程序时能&lt;br /&gt;&amp;nbsp;&amp;nbsp;够尽量细心。这里我就不再将它的利用过程写出来了，反正它们的利用过程都基本相似。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;最后给大家介绍老外写的一个不错的检测WEB应用程序安全性的工具，一下是安全焦点的介绍：&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;Achilles是一个设计用来测试web应用程序安全性的工具。它是一个代理服务器，在一&lt;br /&gt;&amp;nbsp;&amp;nbsp;个HTTP会话中扮演着"中间人"（man-in-the-middle）的角色。一个典型的HTTP代理服&lt;br /&gt;&amp;nbsp;&amp;nbsp;务器将在客户浏览器和web服务器间转发数据包，但Achilles却载取发向任一方的HTTP会&lt;br /&gt;&amp;nbsp;&amp;nbsp;话数据，并且在转发数据前可以让用户修改这些数据.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;相信在WEB入侵方面可以为您提供不少的帮助，如果有可能下次再专门写篇文章介绍它吧，这里我就不多说了，有兴趣的&lt;br /&gt;&amp;nbsp;&amp;nbsp;朋友可以自己下载研究研究，它的下载地址：&lt;a onclick="return extendurl(this)" href="http://www.xfocus.net/tools/200403/achilles-0-27.zip" target="_blank"&gt;http://www.xfocus.net/tools/200403/achilles-0-27.zip&lt;/a&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;后记：&lt;br /&gt;&amp;nbsp; &amp;nbsp; 到这里还是说一下解决方法吧。&lt;br /&gt;&amp;nbsp; &amp;nbsp; 首先当然是禁止外部提交，这里有种不错的方法，大家可以参考参考：&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&amp;lt; %&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;server_v1=Cstr(Request.ServerVariables("HTTP_REFERER"))&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;server_v2=Cstr(Request.ServerVariables("SERVER_NAME"))&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;if&amp;nbsp;&amp;nbsp;mid(server_v1,8,len(server_v2))&amp;lt;&amp;gt;server_v2&amp;nbsp;&amp;nbsp;then&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;% &amp;gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;你想入侵我也不要这么麻烦嘛，直接打电话告诉我，我给你开WEBSHELL，呵呵&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;lt; %&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;Response.Redirect "Fuck-Hacker.asp"&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;end if&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;% &amp;gt;&lt;/p&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp;但这不能彻底杜绝黑客对传递的DIDDEN数据的修改，前面那个ACHILLES就能修改，所以在服务端还要有健全的验证机制。&lt;img src="http://www.cnblogs.com/kevinlzf/aggbug/2001785.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/kevinlzf/archive/2011/04/01/2001785.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
