﻿<?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>IT博客-简单人生-随笔分类-Loving PHP</title><link>http://www.cnitblog.com/neatstudio/category/3374.html</link><description>&lt;span id="textRed"&gt;幻想指点江山，梦中激扬文字&lt;/span&gt;
&lt;script type="text/javascript"&gt;&lt;!--
google_ad_client = "pub-8108925208243412";
google_ad_width = 180;
google_ad_height = 60;
google_ad_format = "180x60_as_rimg";
google_cpa_choice = "CAAQ1YmgnAIaCN9kTfOCCwhkKPu_93M";
google_ad_channel = "2178876090";
//--&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"&gt;
&lt;/script&gt;
</description><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 09:42:41 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 09:42:41 GMT</pubDate><ttl>60</ttl><item><title>生成静态页面的函数,php爱好者站推荐</title><link>http://www.cnitblog.com/neatstudio/archive/2007/12/04/37313.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Tue, 04 Dec 2007 05:22:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/12/04/37313.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/37313.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/12/04/37313.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/37313.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/37313.html</trackback:ping><description><![CDATA[<font id=zoom>
<div class=smalltxt style="PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 6px 12px 2px; PADDING-TOP: 4px">&nbsp;</div>
<div class=altbg2 id=code535 style="CLEAR: both; BORDER-RIGHT: #f1f1f1 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #f1f1f1 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 3px; MARGIN: -5px 12px 0px; BORDER-LEFT: #f1f1f1 1px solid; WORD-BREAK: break-all; PADDING-TOP: 3px; BORDER-BOTTOM: #f1f1f1 1px solid"><code><span style="COLOR: #000000"><span style="COLOR: #0000bb"></span><span style="COLOR: #007700">&lt;?</span><span style="COLOR: #0000bb">php<br></span><span style="COLOR: #007700">function&nbsp;</span><span style="COLOR: #0000bb">CreateShtml</span><span style="COLOR: #007700">()<br>{<br></span><span style="COLOR: #0000bb">ob_start</span><span style="COLOR: #007700">(</span><span style="COLOR: #dd0000">"callback_CteateShtml"</span><span style="COLOR: #007700">);<br>}<br>function&nbsp;</span><span style="COLOR: #0000bb">callback_CteateShtml</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$buffer</span><span style="COLOR: #007700">)<br>{<br></span><span style="COLOR: #0000bb">$page&nbsp;</span><span style="COLOR: #007700">=&nbsp;</span><span style="COLOR: #0000bb">intval</span><span style="COLOR: #007700">(@</span><span style="COLOR: #0000bb">$_REQUEST</span><span style="COLOR: #007700">[</span><span style="COLOR: #dd0000">"page"</span><span style="COLOR: #007700">]);<br></span><span style="COLOR: #ff8000">//$fileName&nbsp;=&nbsp;$_SERVER['DOCUMENT_ROOT']&nbsp;.&nbsp;dirname($_SERVER['PHP_SELF'])&nbsp;.&nbsp;"/article/"&nbsp;.&nbsp;basename($_SERVER['PHP_SELF'],".php")&nbsp;.&nbsp;($page==0&nbsp;?&nbsp;""&nbsp;:&nbsp;"_"&nbsp;.&nbsp;strval($page))&nbsp;.&nbsp;".html";<br></span><span style="COLOR: #0000bb">$fileName&nbsp;</span><span style="COLOR: #007700">=&nbsp;</span><span style="COLOR: #0000bb">basename</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$_SERVER</span><span style="COLOR: #007700">[</span><span style="COLOR: #dd0000">'PHP_SELF'</span><span style="COLOR: #007700">],</span><span style="COLOR: #dd0000">".php"</span><span style="COLOR: #007700">)&nbsp;.&nbsp;(</span><span style="COLOR: #0000bb">$page</span><span style="COLOR: #007700">==</span><span style="COLOR: #0000bb">0&nbsp;</span><span style="COLOR: #007700">?&nbsp;</span><span style="COLOR: #dd0000">""&nbsp;</span><span style="COLOR: #007700">:&nbsp;</span><span style="COLOR: #dd0000">"_"&nbsp;</span><span style="COLOR: #007700">.&nbsp;</span><span style="COLOR: #0000bb">strval</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$page</span><span style="COLOR: #007700">))&nbsp;.&nbsp;</span><span style="COLOR: #dd0000">".html"</span><span style="COLOR: #007700">;</span><span style="COLOR: #ff8000">//可以在这里修改你的静态页面路径<br></span><span style="COLOR: #0000bb">$fp&nbsp;</span><span style="COLOR: #007700">=&nbsp;</span><span style="COLOR: #0000bb">fopen</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$fileName</span><span style="COLOR: #007700">,</span><span style="COLOR: #dd0000">"wb"</span><span style="COLOR: #007700">);<br></span><span style="COLOR: #0000bb">fwrite</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$fp</span><span style="COLOR: #007700">,</span><span style="COLOR: #0000bb">$buffer</span><span style="COLOR: #007700">);<br></span><span style="COLOR: #0000bb">fclose</span><span style="COLOR: #007700">(</span><span style="COLOR: #0000bb">$fp</span><span style="COLOR: #007700">);<br>return&nbsp;</span><span style="COLOR: #0000bb">$buffer</span><span style="COLOR: #007700">;<br>}<br>?&gt;&nbsp;</span></span></code></div>
<br><br><br>举个例<br>把上面的代码保存为 static.php<br>执行下面页面 phpfans.php
<div class=smalltxt style="PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; MARGIN: 6px 12px 2px; PADDING-TOP: 4px">&nbsp;</div>
<div class=altbg2 id=code536 style="CLEAR: both; BORDER-RIGHT: #f1f1f1 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #f1f1f1 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 3px; MARGIN: -5px 12px 0px; BORDER-LEFT: #f1f1f1 1px solid; WORD-BREAK: break-all; PADDING-TOP: 3px; BORDER-BOTTOM: #f1f1f1 1px solid"><code><span style="COLOR: #000000"><span style="COLOR: #0000bb"></span><span style="COLOR: #007700">&lt;?</span><span style="COLOR: #0000bb">php<br></span><span style="COLOR: #007700">include(</span><span style="COLOR: #dd0000">"static.php"</span><span style="COLOR: #007700">);<br></span><span style="COLOR: #0000bb">CreateShtml</span><span style="COLOR: #007700">();<br>?&gt;<br>&lt;</span><span style="COLOR: #0000bb">html&nbsp;xmlns</span><span style="COLOR: #007700">=</span><span style="COLOR: #dd0000">"http://www.w3.org/1999/xhtml"</span><span style="COLOR: #007700">&gt;<br>&lt;</span><span style="COLOR: #0000bb">head</span><span style="COLOR: #007700">&gt;<br>&lt;</span><span style="COLOR: #0000bb">meta&nbsp;http</span><span style="COLOR: #007700">-</span><span style="COLOR: #0000bb">equiv</span><span style="COLOR: #007700">=</span><span style="COLOR: #dd0000">"Content-Type"&nbsp;</span><span style="COLOR: #0000bb">content</span><span style="COLOR: #007700">=</span><span style="COLOR: #dd0000">"text/html;&nbsp;charset=gb2312"&nbsp;</span><span style="COLOR: #007700">/&gt;<br>&lt;</span><span style="COLOR: #0000bb">title</span><span style="COLOR: #007700">&gt;</span><span style="COLOR: #0000bb">无标题文档</span><span style="COLOR: #007700">&lt;/</span><span style="COLOR: #0000bb">title</span><span style="COLOR: #007700">&gt;<br>&lt;/</span><span style="COLOR: #0000bb">head</span><span style="COLOR: #007700">&gt;<br><br>&lt;</span><span style="COLOR: #0000bb">body</span><span style="COLOR: #007700">&gt;<br>&lt;?</span><span style="COLOR: #0000bb">php&nbsp;<br></span><span style="COLOR: #007700">echo&nbsp;</span><span style="COLOR: #dd0000">"php爱好者站欢迎你,http://www.phpfans.net"</span><span style="COLOR: #007700">;<br>?&gt;<br>&lt;/</span><span style="COLOR: #0000bb">body</span><span style="COLOR: #007700">&gt;<br>&lt;/</span><span style="COLOR: #0000bb">html</span><span style="COLOR: #007700">&gt;&nbsp;</span></span></code></div>
<br>将会生成一个 phpfans.html的静态页面<br><br>如果有参数,则用page来传递 如 phpfans.php?page=1<br>则生成 phpfans_1.html的静态页面<br>演示: http://www.phpfans.net 上的所有文章</font><img src ="http://www.cnitblog.com/neatstudio/aggbug/37313.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-12-04 13:22 <a href="http://www.cnitblog.com/neatstudio/archive/2007/12/04/37313.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[摘]PHP5.1时区设置 </title><link>http://www.cnitblog.com/neatstudio/archive/2007/10/26/35392.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Fri, 26 Oct 2007 05:42:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/10/26/35392.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/35392.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/10/26/35392.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/35392.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/35392.html</trackback:ping><description><![CDATA[<p>原文：<a href="http://www.jianglb.com/2006/12/15/php51-timezone.html">http://www.jianglb.com/2006/12/15/php51-timezone.html</a><br><br>&nbsp;从php5.1.0开始，php.ini里加入了date.timezone这个选项，默认情况下是关闭的</p>
<p>也就是显示的时间（无论用什么php命令）都是格林威治标准时间</p>
<p>和我们的时间差了正好8个小时，有以下3中方法可以恢复正常的时间</p>
<p>1，最简单的方法就是不要用php5.1以上的版本</p>
<p>2，如果一定要用，而且不能修改php.ini，则需要在关于时间的初始化的语句的<br>上面加上 date_default_timezone_set (XXX);<br>cp无此问题</p>
<p>3，一劳永逸，仅限能修改php.ini。打开php.ini查找date.timezone 去掉前面的分号<br>= 后面加XXX，重启http服务（如apache2或iis等）即可</p>
<p>关于XXX，大陆内地可用的值是：Asia/Chongqing ，Asia/Shanghai ，Asia/Urumqi （依次为重庆，上海，乌鲁木齐）<br>港台地区可用：Asia/Macao ，Asia/Hong_Kong ，Asia/Taipei （依次为澳门，香港，台北）<br>还有新加坡：Asia/Singapore</p>
<p>由于程序最后还是会把地名转为时区来计算，所以当你使用的不是内置的区域的时候，程序将自动使用格林威治标准时间<br></p><img src ="http://www.cnitblog.com/neatstudio/aggbug/35392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-10-26 13:42 <a href="http://www.cnitblog.com/neatstudio/archive/2007/10/26/35392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JS全选checkBox最佳方案。原创哦</title><link>http://www.cnitblog.com/neatstudio/archive/2007/10/17/35006.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Wed, 17 Oct 2007 09:44:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/10/17/35006.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/35006.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/10/17/35006.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/35006.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/35006.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; HEIGHT: 933px; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="button"</span><span style="COLOR: #ff0000">&nbsp;name</span><span style="COLOR: #0000ff">=""</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="不计算长度"</span><span style="COLOR: #ff0000">&nbsp;onclick</span><span style="COLOR: #0000ff">="a()"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="button"</span><span style="COLOR: #ff0000">&nbsp;name</span><span style="COLOR: #0000ff">=""</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="全选"</span><span style="COLOR: #ff0000">&nbsp;onclick</span><span style="COLOR: #0000ff">="b()"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="button"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="缓存"</span><span style="COLOR: #ff0000">&nbsp;&nbsp;onclick</span><span style="COLOR: #0000ff">="c()"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">input&nbsp;</span><span style="COLOR: #ff0000">type</span><span style="COLOR: #0000ff">="checkbox"</span><span style="COLOR: #ff0000">&nbsp;name</span><span style="COLOR: #0000ff">="test[]"</span><span style="COLOR: #ff0000">&nbsp;value</span><span style="COLOR: #0000ff">="0"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;测试测试</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">br</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_256_1086_Open_Image onclick="this.style.display='none'; Codehighlighter1_256_1086_Open_Text.style.display='none'; Codehighlighter1_256_1086_Closed_Image.style.display='inline'; Codehighlighter1_256_1086_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_256_1086_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_256_1086_Closed_Text.style.display='none'; Codehighlighter1_256_1086_Open_Image.style.display='inline'; Codehighlighter1_256_1086_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">language</span><span style="COLOR: #0000ff">="JavaScript"</span><span style="COLOR: #0000ff">&gt;</span><span id=Codehighlighter1_256_1086_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_256_1086_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;!--</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;ca&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;Array();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;a()<br><img id=Codehighlighter1_301_475_Open_Image onclick="this.style.display='none'; Codehighlighter1_301_475_Open_Text.style.display='none'; Codehighlighter1_301_475_Closed_Image.style.display='inline'; Codehighlighter1_301_475_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_301_475_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_301_475_Closed_Text.style.display='none'; Codehighlighter1_301_475_Open_Image.style.display='inline'; Codehighlighter1_301_475_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_301_475_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_301_475_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;m&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;document.getElementsByName('test[]');<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;m.length&nbsp;;&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;)<br><img id=Codehighlighter1_390_472_Open_Image onclick="this.style.display='none'; Codehighlighter1_390_472_Open_Text.style.display='none'; Codehighlighter1_390_472_Closed_Image.style.display='inline'; Codehighlighter1_390_472_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_390_472_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_390_472_Closed_Text.style.display='none'; Codehighlighter1_390_472_Open_Image.style.display='inline'; Codehighlighter1_390_472_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_390_472_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_390_472_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">==</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">?</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;m[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">false</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;m[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;b()<br><img id=Codehighlighter1_493_679_Open_Image onclick="this.style.display='none'; Codehighlighter1_493_679_Open_Text.style.display='none'; Codehighlighter1_493_679_Closed_Image.style.display='inline'; Codehighlighter1_493_679_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_493_679_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_493_679_Closed_Text.style.display='none'; Codehighlighter1_493_679_Open_Image.style.display='inline'; Codehighlighter1_493_679_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_493_679_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_493_679_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;m&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;document.getElementsByName('test[]');<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;l&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;m.length;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;l;&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br><img id=Codehighlighter1_593_676_Open_Image onclick="this.style.display='none'; Codehighlighter1_593_676_Open_Text.style.display='none'; Codehighlighter1_593_676_Closed_Image.style.display='inline'; Codehighlighter1_593_676_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_593_676_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_593_676_Closed_Text.style.display='none'; Codehighlighter1_593_676_Open_Image.style.display='inline'; Codehighlighter1_593_676_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_593_676_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_593_676_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">==</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">?</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;m[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">false</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;m[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;c()<br><img id=Codehighlighter1_697_884_Open_Image onclick="this.style.display='none'; Codehighlighter1_697_884_Open_Text.style.display='none'; Codehighlighter1_697_884_Closed_Image.style.display='inline'; Codehighlighter1_697_884_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_697_884_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_697_884_Closed_Text.style.display='none'; Codehighlighter1_697_884_Open_Image.style.display='inline'; Codehighlighter1_697_884_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_697_884_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_697_884_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;(ca.length&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">==</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br><img id=Codehighlighter1_723_744_Open_Image onclick="this.style.display='none'; Codehighlighter1_723_744_Open_Text.style.display='none'; Codehighlighter1_723_744_Closed_Image.style.display='inline'; Codehighlighter1_723_744_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_723_744_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_723_744_Closed_Text.style.display='none'; Codehighlighter1_723_744_Open_Image.style.display='inline'; Codehighlighter1_723_744_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_723_744_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_723_744_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;cache();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cl&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;ca.length;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;cl;&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br><img id=Codehighlighter1_795_881_Open_Image onclick="this.style.display='none'; Codehighlighter1_795_881_Open_Text.style.display='none'; Codehighlighter1_795_881_Closed_Image.style.display='inline'; Codehighlighter1_795_881_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_795_881_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_795_881_Closed_Text.style.display='none'; Codehighlighter1_795_881_Open_Image.style.display='inline'; Codehighlighter1_795_881_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_795_881_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_795_881_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ca[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">==</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">?</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;ca[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">false</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;ca[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;cache()<br><img id=Codehighlighter1_906_1076_Open_Image onclick="this.style.display='none'; Codehighlighter1_906_1076_Open_Text.style.display='none'; Codehighlighter1_906_1076_Closed_Image.style.display='inline'; Codehighlighter1_906_1076_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_906_1076_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_906_1076_Closed_Text.style.display='none'; Codehighlighter1_906_1076_Open_Image.style.display='inline'; Codehighlighter1_906_1076_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_906_1076_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_906_1076_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;m&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;document.getElementsByName('test[]');<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;cache&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">new</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;Array();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;l&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;m.length;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;l;&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">)<br><img id=Codehighlighter1_1033_1057_Open_Image onclick="this.style.display='none'; Codehighlighter1_1033_1057_Open_Text.style.display='none'; Codehighlighter1_1033_1057_Closed_Image.style.display='inline'; Codehighlighter1_1033_1057_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1033_1057_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1033_1057_Closed_Text.style.display='none'; Codehighlighter1_1033_1057_Open_Image.style.display='inline'; Codehighlighter1_1033_1057_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1033_1057_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1033_1057_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cache[i]&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;m[i];<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">return</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;cache;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--&gt;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span></div>
黑黑，至于那个input type="checkbox"的，你们就尽量复制吧，尽量不要超过1W，否则。。别怪我没有提醒你，当然了，也不需要把浏览器关掉，跑到外面抽根烟再回来就行了。<br><br>所以，我们要切实的记住，反正数组有长度的，坚决不能放在循环里面，而是先将这个长度取出来当成变量。PHP里也一样，循环数组的时候，先count数组的长度比较好。<br>当然了，我第三个采用了缓存，速度也是非常快的，比长度取好后再进行计算更快，因为连一次都不用取了（当然，除了第一次），全部扔给客户端了。<br><br>上面的例子还是比较方便的，因为，checkbox的 name值都一样，如果不一样怎么办？？？<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 id=Codehighlighter1_31_363_Open_Image onclick="this.style.display='none'; Codehighlighter1_31_363_Open_Text.style.display='none'; Codehighlighter1_31_363_Closed_Image.style.display='inline'; Codehighlighter1_31_363_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_31_363_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_31_363_Closed_Text.style.display='none'; Codehighlighter1_31_363_Open_Image.style.display='inline'; Codehighlighter1_31_363_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">script&nbsp;</span><span style="COLOR: #ff0000">language</span><span style="COLOR: #0000ff">="JavaScript"</span><span style="COLOR: #0000ff">&gt;</span><span id=Codehighlighter1_31_363_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_31_363_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;!--</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">function</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;check()<br><img id=Codehighlighter1_57_354_Open_Image onclick="this.style.display='none'; Codehighlighter1_57_354_Open_Text.style.display='none'; Codehighlighter1_57_354_Closed_Image.style.display='inline'; Codehighlighter1_57_354_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_57_354_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_57_354_Closed_Text.style.display='none'; Codehighlighter1_57_354_Open_Image.style.display='inline'; Codehighlighter1_57_354_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_57_354_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_57_354_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;inputs&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;document.getElementsByTagName('input');<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;inputsLen&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;inputs.length;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">for</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;(</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">var</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;i&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">0</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;&nbsp;i&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&lt;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;inputsLen&nbsp;;&nbsp;i</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">++</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;)<br><img id=Codehighlighter1_189_351_Open_Image onclick="this.style.display='none'; Codehighlighter1_189_351_Open_Text.style.display='none'; Codehighlighter1_189_351_Closed_Image.style.display='inline'; Codehighlighter1_189_351_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_189_351_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_189_351_Closed_Text.style.display='none'; Codehighlighter1_189_351_Open_Image.style.display='inline'; Codehighlighter1_189_351_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_189_351_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_189_351_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">if</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;(inputs[i].type.toLowerCase()&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">==</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;'checkbox')<br><img id=Codehighlighter1_245_347_Open_Image onclick="this.style.display='none'; Codehighlighter1_245_347_Open_Text.style.display='none'; Codehighlighter1_245_347_Closed_Image.style.display='inline'; Codehighlighter1_245_347_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_245_347_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_245_347_Closed_Text.style.display='none'; Codehighlighter1_245_347_Open_Image.style.display='inline'; Codehighlighter1_245_347_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_245_347_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_245_347_Open_Text><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inputs[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">==</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">?</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;inputs[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">false</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;inputs[i].checked&nbsp;</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">=</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span><span style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5">true</span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">//</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5">--&gt;</span><span style="COLOR: #008000; BACKGROUND-COLOR: #f5f5f5"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;</span></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">script</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
缓存方法同上，这里就不多讨论了<br><br><br>请求加精&#8230;&#8230;唉。没地方加精。<img src ="http://www.cnitblog.com/neatstudio/aggbug/35006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-10-17 17:44 <a href="http://www.cnitblog.com/neatstudio/archive/2007/10/17/35006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于PHP正则的取反和逻辑思想的问题</title><link>http://www.cnitblog.com/neatstudio/archive/2007/10/09/34596.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Tue, 09 Oct 2007 09:01:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/10/09/34596.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/34596.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/10/09/34596.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/34596.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/34596.html</trackback:ping><description><![CDATA[<p>众所周知，^这个符合在正则里非常有用，首先它代表了行首匹配，比如/^abc/，就代表了必须是abc开头，同样，它也是一个取反的标记。<br><br>何为取反？就说刚才吧^abc是以abc开头，那么取反的意思就是不以abc三个字母的开头。<br><br>正常情况下，这些都可以运用，不会有什么错误。<br><br>再举个例子：我要判断字符串是否有特殊字符，怎么办？<br>正常情况下，我会这样preg_match("/[_-~!@#$%^]+/",$string) ，当然特殊字符不止这么一些，只是举个简单的例子。<br>如果我的$string = 'abcdefg--hijklmn'，那么，我这样的匹配肯定是返回1的，因为有&#8220;-&#8221;被我匹配了。<br>现在反过来讲，如果我不想匹配这些特殊字符怎么办？<br>首先想到的就是取反，于是我preg_match("/[^-~!@#$%^]/",$string)，再匹配一下，结果还是返回1。<br>为啥呢？<br>起初想半天就没想明白，为什么我明明取反了却匹配仍然成功呢？<br>仔细思索了好久才明白，我取反之后，其实我的match的内容就变成了：与不是特殊字符匹配，那么我的string里面几乎全都不是特殊字符，当然就匹配成功了。<br>所以，对于这种情况，还是先判断是否有特殊字符，然后再根据返回值再判断是否没有特殊字符吧。（有点象绕口令了）。</p><img src ="http://www.cnitblog.com/neatstudio/aggbug/34596.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-10-09 17:01 <a href="http://www.cnitblog.com/neatstudio/archive/2007/10/09/34596.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FOR IIS6 的 fastCGI也推出了</title><link>http://www.cnitblog.com/neatstudio/archive/2007/09/29/34170.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Sat, 29 Sep 2007 02:13:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/09/29/34170.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/34170.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/09/29/34170.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/34170.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/34170.html</trackback:ping><description><![CDATA[微软提升PHP在IIS下的性能<br><br>
<p><span style="FONT-WEIGHT: bold">微软已经和PHP社区共同努力了一年之久,他们终于研发出能让IIS更快地解析PHP的方法,用户们甚至不需要做基准测试就可以明显感觉到PHP解析速度加快.</span><br style="FONT-WEIGHT: bold"><span style="FONT-WEIGHT: bold">早在2006年,微软就和Zend等厂商一起研发Windows Server下的优化工作,IIS产品组已经公布了IIS6和7的FastCGI扩展,它能让PHP执行效率更高.</span><br>PHP一直以来是IIS的尴尬,用PHP扩展的速度跟不上其它服务端(甚至还有一些致命问题例如在某内存地址报错),而PHP又比ASP.net普及得多,因此微软需要在IIS+PHP上突破市场.<br><br></p>
<p>微软在Go Live发行版本上提供了Microsoft FastCGI Extension for IIS 5.1/6.0,目前可以免费下载,使用IIS6和5.1的您不妨在您的测试环境上试一下,没准会有惊喜哦! <br><br><img alt="" src="http://www.cnbeta.com/articles/pic/down.gif"><strong>下载:</strong><a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;g=6&amp;i=1521" target=_blank>FastCGI Extension for IIS6.0 and IIS5.1 - Go Live</a><br><br>-------------------------------------------------------------------------------<br>以上转自CNBETA，IIS下的PHP性能提高了，在WIN下面几乎 就可以放弃APACHE了，APACHE效率实在是低啊。。N个人做测试做下来都这么说，只是在WIN下面用APACHE，可以让开发人员写的代码容易测试，容易移植。<br>毕竟，IIS和APACHE还是有一些变量和函数不一样的。HOHO<br>装了之后，没有测试成功，不知道有谁成功了</p><img src ="http://www.cnitblog.com/neatstudio/aggbug/34170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-09-29 10:13 <a href="http://www.cnitblog.com/neatstudio/archive/2007/09/29/34170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为文件名添加诸如_thumb这样的标记</title><link>http://www.cnitblog.com/neatstudio/archive/2007/09/06/33033.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Thu, 06 Sep 2007 01:33:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/09/06/33033.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/33033.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/09/06/33033.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/33033.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/33033.html</trackback:ping><description><![CDATA[<p>　　程序中经常会遇到这种情况，当你为图片生成缩略图时，往往需要保留原来的名字，而在其中插个thumb之类的字符，例如：原文件为test.jpg，生成缩略图的文件往往是test.thumb.jpg或者test_thumb.jpg这样。怎么样往里面插这样的字符呢？<br>　　插入这样的字符有几种方法：</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800080">$orig_filename</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">test.jpg</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800080">$exp_str</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">_thumb</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">first&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800080">$file_ext</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008080">strRchr</span><span style="COLOR: #000000">(&nbsp;</span><span style="COLOR: #800080">$orig_filename</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800080">$fst_file</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008080">preg_replace</span><span style="COLOR: #000000">(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">.</span><span style="COLOR: #800080">$file_ext</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)$/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$exp_str</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$file_ext</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$orig_filename</span><span style="COLOR: #000000">&nbsp;&nbsp;);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">second</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800080">$orig_info</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #008080">pathinfo</span><span style="COLOR: #000000">(&nbsp;</span><span style="COLOR: #800080">$orig_filename</span><span style="COLOR: #000000">&nbsp;);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #800080">$scd_file</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$orig_info</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">filename</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$exp_str</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">.</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #800080">$orig_info</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">extension</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">];<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">第三种用substr的我就不写了。。懒啊<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
呵呵，就写这个多了。。。<img src ="http://www.cnitblog.com/neatstudio/aggbug/33033.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-09-06 09:33 <a href="http://www.cnitblog.com/neatstudio/archive/2007/09/06/33033.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>apache rewrite 详解</title><link>http://www.cnitblog.com/neatstudio/archive/2007/07/31/30974.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Tue, 31 Jul 2007 04:02:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/07/31/30974.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/30974.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/07/31/30974.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/30974.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/30974.html</trackback:ping><description><![CDATA[<a href="http://www.infomall.cn/cgi-bin/mallnohead/20040514/http://hedong.3322.org/archives/000349.html">http://www.infomall.cn/cgi-bin/mallnohead/20040514/http://hedong.3322.org/archives/000349.html</a><br><br>收藏：<br>
<h1><a accessKey=1 href="http://www.infomall.cn/cgi-bin/mallgate/20040514/http://hedong.3322.org/"><font size=7>竹笋炒肉</font></a></h1>
<span class=description>东坡有诗&#8220;无竹则俗，无肉则廋；不俗不廋，竹笋炒肉&#8221;。：）<br>欢迎光临的每一位朋友。这是我的第一个BLOG，用来记录我的所学、所做、所思、所想、所经历、所感受。</span> <br><br>
<h3 class=title id=startcontent>Apache的Mod_rewrite学习（五）</h3>
<p>　　今天主要列出一些例子。由于有些例子是针对特殊路径或特别情况的，列出供大家在思路上参考。因为它们就是些例子。</p>
<a name=more></a>
<table border=1>
    <tbody>
        <tr>
            <td>目标</td>
            <td>重写设置</td>
            <td>说明</td>
        </tr>
        <tr>
            <td>规范化URL</td>
            <td>RewriteRule ^/~([^/]+)/?(.*) /u/$1/$2 [R] </td>
            <td>将/~user重写为/u/user的形式</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/([uge])/([^/]+)$ /$1/$2/ [R]</td>
            <td>将/u/user末尾漏掉的/补上</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>规范化HostName</td>
            <td>RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]</td>
            <td>域名不合格</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{HTTP_HOST} !^$</td>
            <td>不空</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{SERVER_PORT} !^80$</td>
            <td>不是80端口</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/(.*) http://fully.qualified.domain.name:%{SERVER_PORT}/$1 [L,R]</td>
            <td>重写</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{HTTP_HOST} !^fully\.qualified\.domain\.name [NC]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{HTTP_HOST} !^$</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/(.*) http://fully.qualified.domain.name/$1 [L,R]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>URL根目录转移</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/$ /e/www/ [R]</td>
            <td>从/移到/e/www/</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>末尾目录补斜线</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td>（目录范围内）</td>
            <td>RewriteBase /~quux/</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^foo$ foo/ [R]</td>
            <td>/~quux/foo是一个目录，补/</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteBase /~quux/</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{REQUEST_FILENAME} -d</td>
            <td>如果请文件名是个目录</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^(.+[^/])$ $1/ [R]</td>
            <td>URL末尾不是斜线时补上</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>Web集群</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteMap user-to-host txt:/path/to/map.user-to-host</td>
            <td>用户－服务器映射</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteMap group-to-host txt:/path/to/map.group-to-host</td>
            <td>组－服务器映射</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteMap entity-to-host txt:/path/to/map.entity-to-host</td>
            <td>实体－服务器映射</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/u/([^/]+)/?(.*) http://${user-to-host:$1|server0}/u/$1/$2</td>
            <td>用户均衡</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/g/([^/]+)/?(.*) http://${group-to-host:$1|server0}/g/$1/$2</td>
            <td>组均衡</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/e/([^/]+)/?(.*) http://${entity-to-host:$1|server0}/e/$1/$2</td>
            <td>实体均衡</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/([uge])/([^/]+)/?$ /$1/$2/.www/</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/([uge])/([^/]+)/([^.]+.+) /$1/$2/.www/$3\ </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>URL根目录搬迁</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/~(.+) http://newserver/~$1 [R,L] </td>
            <td>到其它服务器</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>所用户名首字母分</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/~(([a-z])[a-z0-9]+)(.*) /home/$2/$1/.www$3 </td>
            <td>内一层括号为$2</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>NCSA imagemap移</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td>植为mod_imap</td>
            <td>RewriteRule ^/cgi-bin/imagemap(.*) $1 [PT] </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>多目录查找资源</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td># first try to find it in custom/...</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond /your/docroot/dir1/%{REQUEST_FILENAME} -f</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^(.+) /your/docroot/dir1/$1 [L]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td># second try to find it in pub/...</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond /your/docroot/dir2/%{REQUEST_FILENAME} -f</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^(.+) /your/docroot/dir2/$1 [L]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td># else go on for other Alias or ScriptAlias directives,</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^(.+) - [PT] </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>据URL设置环境变量</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^(.*)/S=([^/]+)/(.*) $1/$3 [E=STATUS:$2] </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>虚拟主机</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{HTTP_HOST} ^www\.[^.]+\.host\.com$</td>
            <td>基于用户名</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^(.+) %{HTTP_HOST}$1 [C]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^www\.([^.]+)\.host\.com(.*) /home/$1$2 </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>内外人有别</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{REMOTE_HOST} !^.+\.ourdomain\.com$</td>
            <td>基于远程主机</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^(/~.+) http://www.somewhere.com/$1 [R,L] </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>错误重定向</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond /your/docroot/%{REQUEST_FILENAME} !-f</td>
            <td>不是regular文件</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^(.+) http://webserverB.dom/$1 </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>程序处理特殊协议</td>
            <td>RewriteRule ^xredirect:(.+) /path/to/nph-xredirect.cgi/$1 \</td>
            <td>Xredirect协议</td>
        </tr>
        <tr>
            <td></td>
            <td>[T=application/x-httpd-cgi,L] </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>最近镜像下载</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteMap multiplex txt:/path/to/map.cxan</td>
            <td>顶级域名与最近ftp服务器映射</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/CxAN/(.*) %{REMOTE_HOST}::$1 [C]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^.+\.([a-zA-Z]+)::(.*)$ ${multiplex:$1|ftp.default.dom}$2 [R,L] </td>
            <td>据顶级域名不同提供不同的FTP服务器</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>基于时间重写</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{TIME_HOUR}%{TIME_MIN} &gt;0700</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{TIME_HOUR}%{TIME_MIN} &lt;1900</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^foo\.html$ foo.day.html</td>
            <td>白天为早晚7点间</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^foo\.html$ foo.night.html </td>
            <td>其余为夜间</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>向前兼容扩展名</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteBase /~quux/</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td># parse out basename, but remember the fact</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^(.*)\.html$ $1 [C,E=WasHTML:yes]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td># rewrite to document.phtml if exists</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{REQUEST_FILENAME}.phtml -f</td>
            <td>如果存在$1.phtml则重写</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^(.*)$ $1.phtml [S=1]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td># else reverse the previous basename cutout</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{ENV:WasHTML} ^yes$</td>
            <td>如果不存在$1.phtml，则保持不变</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^(.*)$ $1.html </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>文件改名（目录级）</td>
            <td>RewriteEngine on</td>
            <td>内部重写</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteBase /~quux/</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^foo\.html$ bar.html </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteEngine on</td>
            <td>重定向由客户端再次提交</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteBase /~quux/</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^foo\.html$ bar.html [R] </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>据浏览器类型重写</td>
            <td>RewriteCond %{HTTP_USER_AGENT} ^Mozilla/3.*</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^foo\.html$ foo.NS.html [L]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{HTTP_USER_AGENT} ^Lynx/.* [OR]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{HTTP_USER_AGENT} ^Mozilla/[12].*</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^foo\.html$ foo.20.html [L]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^foo\.html$ foo.32.html [L] </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>动态镜像远程资源</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteBase /~quux/</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^hotsheet/(.*)$ http://www.tstimpreso.com/hotsheet/$1 [P]</td>
            <td>利用了代理模块</td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteBase /~quux/</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^usa-news\.html$ http://www.quux-corp.com/news/index.html [P]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>反向动态镜像</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond /mirror/of/remotesite/$1 -U </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^http://www\.remotesite\.com/(.*)$ /mirror/of/remotesite/$1 </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>负载均衡</td>
            <td>RewriteEngine on</td>
            <td>利用代理实现round-robin效果</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteMap lb prg:/path/to/lb.pl</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/(.+)$ ${lb:$1} [P,L]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>#!/path/to/perl</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>$| = 1;</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>$name = "www"; # the hostname base</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>$first = 1; # the first server (not 0 here, because 0 is myself) </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>$last = 5; # the last server in the round-robin</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>$domain = "foo.dom"; # the domainname</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>$cnt = 0;</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>while (&lt;STDIN&gt;) {</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>$cnt = (($cnt+1) % ($last+1-$first));</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>$server = sprintf("%s%d.%s", $name, $cnt+$first, $domain);</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>print "http://$server/$_";</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>}</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>##EOF##</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>静态页面变脚本</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteBase /~quux/</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^foo\.html$ foo.cgi [T=application/x-httpd-cgi] </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>阻击机器人</td>
            <td>RewriteCond %{HTTP_USER_AGENT} ^NameOfBadRobot.* </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{REMOTE_ADDR} ^123\.45\.67\.[8-9]$</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/~quux/foo/arc/.+ - [F] </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>阻止盗连你的图片</td>
            <td>RewriteCond %{HTTP_REFERER} !^$ </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{HTTP_REFERER} !^http://www.quux-corp.de/~quux/.*$ [NC]</td>
            <td>自己的连接可不能被阻止</td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule .*\.gif$ - [F]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{HTTP_REFERER} !^$ </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{HTTP_REFERER} !.*/foo-with-gif\.html$</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^inlined-in-foo\.gif$ - [F]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>拒绝某些主机访问</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteMap hosts-deny txt:/path/to/hosts.deny</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND [OR]</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/.* - [F] </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>用户授权</td>
            <td>RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend1@client1.quux-corp\.com$ </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend2@client2.quux-corp\.com$ </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteCond %{REMOTE_IDENT}@%{REMOTE_HOST} !^friend3@client3.quux-corp\.com$ </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/~quux/only-for-friends/ - [F] </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>外部重写程序模板</td>
            <td>RewriteEngine on</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteMap quux-map prg:/path/to/map.quux.pl</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/~quux/(.*)$ /~quux/${quux-map:$1}</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>#!/path/to/perl</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>$| = 1;</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>while (&lt;&gt;) {</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>s|^foo/|bar/|;</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>print $_;</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>}</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
        </tr>
        <tr>
            <td>搜索引擎友好</td>
            <td>RewriteRule ^/products$ /content.php </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/products/([0-9]+)$ /content.php?id=$1 </td>
            <td></td>
        </tr>
        <tr>
            <td></td>
            <td>RewriteRule ^/products/([0-9]+),([ad]*),([0-9]{0,3}),([0-9]*),([0-9]*$) /marso/content.php?id=$1&amp;sort=$2&amp;order=$3&amp;start=$4</td>
            <td></td>
        </tr>
    </tbody>
</table>
<p>参考文献：<br>URL Rewriting Guide<br>http://httpd.apache.org/docs/misc/rewriteguide.html</p>
<p>mod_rewrite: A Beginner's Guide to URL Rewriting<br>http://www.sitepoint.com/article/910</p><img src ="http://www.cnitblog.com/neatstudio/aggbug/30974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-07-31 12:02 <a href="http://www.cnitblog.com/neatstudio/archive/2007/07/31/30974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DBF与MYSQL互转（转自村子http://www.phpx.com/happy/archiver/tid-63834.html）</title><link>http://www.cnitblog.com/neatstudio/archive/2007/07/26/30715.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Thu, 26 Jul 2007 03:01:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/07/26/30715.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/30715.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/07/26/30715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/30715.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/30715.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &lt;?$dbftomysql=new&nbsp;convertdata;$dbftomysql-&gt;dbf_to_mysql("sourcedbf","jwcnewstudentlogin","sourcedbf.dbf","test");class&nbsp;convertdata{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;funct...&nbsp;&nbsp;<a href='http://www.cnitblog.com/neatstudio/archive/2007/07/26/30715.html'>阅读全文</a><img src ="http://www.cnitblog.com/neatstudio/aggbug/30715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-07-26 11:01 <a href="http://www.cnitblog.com/neatstudio/archive/2007/07/26/30715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL语句导入导出大全(转)</title><link>http://www.cnitblog.com/neatstudio/archive/2007/07/26/30702.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Thu, 26 Jul 2007 02:49:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/07/26/30702.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/30702.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/07/26/30702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/30702.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/30702.html</trackback:ping><description><![CDATA[备份资料：Copy from ---&gt; http://php.mydict.com/ziliao/7/2006_05/SQLYuJuDaoRuDaoChuDaQuan3016_1.html&nbsp;<br>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"><br>/******* 导出到excel<br>EXEC master..xp_cmdshell 'bcp SettleDB.dbo.shanghu out c:\temp1.xls -c -q -S"GNETDATA/GNETDATA" -U"sa" -P""'</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">/*********** 导入Excel<br>SELECT * <br>FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',<br>'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">/*动态文件名<br>declare @fn varchar(20),@s varchar(1000)<br>set @fn = 'c:\test.xls'<br>set @s ='''Microsoft.Jet.OLEDB.4.0'',<br>''Data Source="<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#102;&#110;&#32;&#39;&#38;&#97;&#109;&#112;&#59;&#113;&#117;&#111;&#116;&#59;&#59;&#85;&#115;&#101;&#114;"><u><font color=#0000ff>' @fn '";User</font></u></a> ID=Admin;Password=;Extended properties=Excel 5.0'''<br>set @s = 'SELECT * FROM OpenDataSource (<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#115;&#32;&#39;&#41;&#46;&#46;&#46;&#115;&#104;&#101;&#101;&#116;&#49;&#36;&#39;"><u><font color=#0000ff>' @s ')...sheet1$'</font></u></a><br>exec(@s)<br>*/</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">SELECT cast(cast(科目编号 as numeric(10,2)) as nvarchar(255)) '　' 转换后的别名<br>FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',<br>'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">/********************** EXCEL导到远程SQL<br>insert OPENDATASOURCE(<br>'SQLOLEDB',<br>'Data Source=远程ip;User ID=sa;Password=密码'<br>).库名.dbo.表名 (列名1,列名2)<br>SELECT 列名1,列名2<br>FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',<br>'Data Source="c:\test.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"><br>/** 导入文本文件<br>EXEC master..xp_cmdshell 'bcp dbname..tablename in c:\DT.txt -c -Sservername -Usa -Ppassword'</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">/** 导出文本文件<br>EXEC master..xp_cmdshell 'bcp dbname..tablename out c:\DT.txt -c -Sservername -Usa -Ppassword'<br>或<br>EXEC master..xp_cmdshell 'bcp "Select * from dbname..tablename" queryout c:\DT.txt -c -Sservername -Usa -Ppassword'</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">导出到TXT文本，用逗号分开<br>exec master..xp_cmdshell 'bcp "库名..表名" out "d:\tt.txt" -c -t ,-U sa -P password'</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"><br>BULK INSERT 库名..表名<br>FROM 'c:\test.txt'<br>WITH (<br>FIELDTERMINATOR = ';',<br>ROWTERMINATOR = '\n'<br>)</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"><br>--/* dBase IV文件<br>select * from <br>OPENROWSET('MICROSOFT.JET.OLEDB.4.0'<br>,'dBase IV;HDR=NO;IMEX=2;DATABASE=C:\','select * from [客户资料4.dbf]')<br>--*/</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">--/* dBase III文件<br>select * from <br>OPENROWSET('MICROSOFT.JET.OLEDB.4.0'<br>,'dBase III;HDR=NO;IMEX=2;DATABASE=C:\','select * from [客户资料3.dbf]')<br>--*/</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">--/* FoxPro 数据库<br>select * from openrowset('MSDASQL',<br>'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\',<br>'select * from [aa.DBF]')<br>--*/</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">/**************导入DBF文件****************/<br>select * from openrowset('MSDASQL',<br>'Driver=Microsoft Visual FoxPro Driver;<br>SourceDB=e:\VFP98\data;<br>SourceType=DBF',<br>'select * from customer where country != "USA" order by country')<br>go<br>/***************** 导出到DBF ***************/<br>如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">insert into openrowset('MSDASQL',<br>'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\',<br>'select * from [aa.DBF]')<br>select * from 表</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">说明:<br>SourceDB=c:\ 指定foxpro表所在的文件夹<br>aa.DBF 指定foxpro表的文件名.</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"></p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"><br>/*************导出到Access********************/<br>insert into openrowset('Microsoft.Jet.OLEDB.4.0', <br>'x:\A.mdb';'admin';'',A表) select * from 数据库名..B表</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">/*************导入Access********************/<br>insert into B表 selet * from openrowset('Microsoft.Jet.OLEDB.4.0', <br>'x:\A.mdb';'admin';'',A表)</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">文件名为参数<br>declare @fname varchar(20)<br>set @fname = 'd:\test.mdb'<br>exec('SELECT a.* FROM opendatasource(''Microsoft.Jet.OLEDB.4.0'',<br><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#39;&#39;&#32;&#64;&#102;&#110;&#97;&#109;&#101;&#32;&#39;&#39;&#39;&#59;&#39;&#39;&#97;&#100;&#109;&#105;&#110;&#39;&#39;&#59;&#39;&#39;&#39;&#39;"><u><font color=#0000ff>''' @fname ''';''admin'';''''</font></u></a>, topics) as a ')</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">SELECT * <br>FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',<br>'Data Source="f:\northwind.mdb";Jet OLEDB:Database Password=123;User ID=Admin;Password=;')...产品</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">********************* 导入 xml　文件</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">DECLARE @idoc int<br>DECLARE @doc varchar(1000)<br>--sample XML document<br>SET @doc ='<br>&lt;root&gt;<br>&lt;Customer cid= "C1" name="Janine" city="Issaquah"&gt;<br>&lt;Order oid="O1" date="1/20/1996" amount="3.5" /&gt;<br>&lt;Order oid="O2" date="4/30/1997" amount="13.4"&gt;Customer was very satisfied<br>&lt;/Order&gt;<br>&lt;/Customer&gt;<br>&lt;Customer cid="C2" name="Ursula" city="Oelde" &gt;<br>&lt;Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue <br>white red"&gt;<br>&lt;Urgency&gt;Important&lt;/Urgency&gt;<br>Happy Customer.<br>&lt;/Order&gt;<br>&lt;Order oid="O4" date="1/20/1996" amount="10000"/&gt;<br>&lt;/Customer&gt;<br>&lt;/root&gt;<br>'<br>-- Create an internal representation of the XML document.<br>EXEC sp_xml_preparedocument @idoc OUTPUT, @doc</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">-- Execute a SELECT statement using OPENXML rowset provider.<br>SELECT *<br>FROM OPENXML (@idoc, '/root/Customer/Order', 1)<br>WITH (oid char(5), <br>amount float, <br>comment ntext 'text()')<br>EXEC sp_xml_removedocument @idoc</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"></p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">???????</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">/**********************Excel导到Txt****************************************/<br>想用<br>select * into opendatasource(...) from opendatasource(...)<br>实现将一个Excel文件内容导入到一个文本文件</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">假设Excel中有两列，第一列为姓名，第二列为很行帐号(16位)<br>且银行帐号导出到文本文件后分两部分，前8位和后8位分开。</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"><br>邹健：<br>如果要用你上面的语句插入的话,文本文件必须存在,而且有一行:姓名,银行账号1,银行账号2<br>然后就可以用下面的语句进行插入<br>注意文件名和目录根据你的实际情况进行修改.</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">insert into<br>opendatasource('MICROSOFT.JET.OLEDB.4.0'<br>,'Text;HDR=Yes;DATABASE=C:\'<br>)...[aa#txt]<br>--,aa#txt)<br>--*/<br>select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) <br>from <br>opendatasource('MICROSOFT.JET.OLEDB.4.0'<br>,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls'<br>--,Sheet1$)<br>)...[Sheet1$]</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"></p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">如果你想直接插入并生成文本文件,就要用bcp</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">declare @sql varchar(8000),@tbname varchar(50)</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">--首先将excel表内容导入到一个全局临时表<br>select @tbname='[##temp' cast(newid() as varchar(40)) ']'<br>,@sql='select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) <br>into <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#116;&#98;&#110;&#97;&#109;&#101;&#32;&#39;"><u><font color=#0000ff>' @tbname '</font></u></a> from <br>opendatasource(''MICROSOFT.JET.OLEDB.4.0''<br>,''Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls''<br>)...[Sheet1$]'<br>exec(@sql)</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">--然后用bcp从全局临时表导出到文本文件<br>set @sql='bcp "<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#116;&#98;&#110;&#97;&#109;&#101;&#32;&#39;"><u><font color=#0000ff>' @tbname '</font></u></a>" out "c:\aa.txt" /S"(local)" /P"" /c'<br>exec master..xp_cmdshell @sql</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">--删除临时表<br>exec('drop table <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#116;&#98;&#110;&#97;&#109;&#101;"><u><font color=#0000ff>' @tbname</font></u></a>)</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"><br>/********************导整个数据库*********************************************/</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">用bcp实现的存储过程</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"><br>/*<br>实现数据导入/导出的存储过程<br>根据不同的参数,可以实现导入/导出整个数据库/单个表<br>调用示例:<br>--导出调用示例<br>----导出单个表<br>exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',1<br>----导出整个数据库<br>exec file2table 'zj','','','xzkh_sa','C:\docman',1</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">--导入调用示例<br>----导入单个表<br>exec file2table 'zj','','','xzkh_sa..地区资料','c:\zj.txt',0<br>----导入整个数据库<br>exec file2table 'zj','','','xzkh_sa','C:\docman',0</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">*/<br>if exists(select 1 from sysobjects where name='File2Table' and objectproperty(id,'IsProcedure')=1)<br>drop procedure File2Table<br>go<br>create procedure File2Table<br>@servername varchar(200) --服务器名<br>,@username varchar(200) --用户名,如果用NT验证方式,则为空''<br>,@password varchar(200) --密码<br>,@tbname varchar(500) --数据库.dbo.表名,如果不指定:.dbo.表名,则导出数据库的所有用户表<br>,@filename varchar(1000) --导入/导出路径/文件名,如果@tbname参数指明是导出整个数据库,则这个参数是文件存放路径,文件名自动用表名.txt<br>,@isout bit --1为导出,0为导入<br>as<br>declare @sql varchar(8000)</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">if @tbname like '%.%.%' --如果指定了表名,则直接导出单个表<br>begin<br>set @sql='bcp <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#116;&#98;&#110;&#97;&#109;&#101;"><u><font color=#0000ff>' @tbname</font></u></a><br>case when @isout=1 then ' out ' else ' in ' end<br>' "<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#102;&#105;&#108;&#101;&#110;&#97;&#109;&#101;&#32;&#39;"><u><font color=#0000ff>' @filename '</font></u></a>" /w'<br>' /S <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#115;&#101;&#114;&#118;&#101;&#114;&#110;&#97;&#109;&#101;"><u><font color=#0000ff>' @servername</font></u></a><br>case when isnull(@username,'')='' then '' else ' /U <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#117;&#115;&#101;&#114;&#110;&#97;&#109;&#101;"><u><font color=#0000ff>' @username</font></u></a> end<br>' /P ' isnull(@password,'')<br>exec master..xp_cmdshell @sql<br>end<br>else<br>begin --导出整个数据库,定义游标,取出所有的用户表<br>declare @m_tbname varchar(250)<br>if right(@filename,1)&lt;&gt;'\' set @filename=@filename '\'</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">set @m_tbname='declare #tb cursor for select name from <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#116;&#98;&#110;&#97;&#109;&#101;&#32;&#39;&#46;&#46;&#115;&#121;&#115;&#111;&#98;&#106;&#101;&#99;&#116;&#115;"><u><font color=#0000ff>' @tbname '..sysobjects</font></u></a> where xtype=''U'''<br>exec(@m_tbname)<br>open #tb<br>fetch next from #tb into @m_tbname<br>while @@fetch_status=0<br>begin<br>set @sql='bcp <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#116;&#98;&#110;&#97;&#109;&#101;&#32;&#39;&#46;&#46;&#39;&#32;&#64;&#109;&#95;&#116;&#98;&#110;&#97;&#109;&#101;"><u><font color=#0000ff>' @tbname '..' @m_tbname</font></u></a><br>case when @isout=1 then ' out ' else ' in ' end<br>' "<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#102;&#105;&#108;&#101;&#110;&#97;&#109;&#101;&#32;&#64;&#109;&#95;&#116;&#98;&#110;&#97;&#109;&#101;&#32;&#39;&#46;&#116;&#120;&#116;"><u><font color=#0000ff>' @filename @m_tbname '.txt</font></u></a> " /w'<br>' /S <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#115;&#101;&#114;&#118;&#101;&#114;&#110;&#97;&#109;&#101;"><u><font color=#0000ff>' @servername</font></u></a><br>case when isnull(@username,'')='' then '' else ' /U <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#39;&#32;&#64;&#117;&#115;&#101;&#114;&#110;&#97;&#109;&#101;"><u><font color=#0000ff>' @username</font></u></a> end<br>' /P ' isnull(@password,'')<br>exec master..xp_cmdshell @sql<br>fetch next from #tb into @m_tbname<br>end<br>close #tb<br>deallocate #tb <br>end<br>go</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"><br>/************* Oracle **************/<br>EXEC sp_addlinkedserver 'OracleSvr', <br>'Oracle 7.3', <br>'MSDAORA', <br>'ORCLDB'<br>GO</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">delete from openquery(mailser,'select * from yulin')</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">select * from openquery(mailser,'select * from yulin')</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">update openquery(mailser,'select * from yulin where id=15')set disorder=555,catago=888</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">insert into openquery(mailser,'select disorder,catago from yulin')values(333,777)</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"></p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">补充：</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">对于用bcp导出,是没有字段名的.</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">用openrowset导出,需要事先建好表.</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana">用openrowset导入,除ACCESS及EXCEL外,均不支持非本机数据导入</p>
<p style="FONT-SIZE: 12pt; FONT-FAMILY: Verdana"><br><br></p><img src ="http://www.cnitblog.com/neatstudio/aggbug/30702.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-07-26 10:49 <a href="http://www.cnitblog.com/neatstudio/archive/2007/07/26/30702.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数据库设计时由于字符集的关系而应当注意的几个小点</title><link>http://www.cnitblog.com/neatstudio/archive/2007/07/18/30212.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Wed, 18 Jul 2007 13:53:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/07/18/30212.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/30212.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/07/18/30212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/30212.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/30212.html</trackback:ping><description><![CDATA[1、如果字段中有中文，存储方式为GBK时，字节长度为预算的*2，如果存储方式为UTF8,字节长度为预算的*3；<br>&nbsp;&nbsp;&nbsp; 例如：姓名字段，假设名字最长为四个字，如上官飞云，存储方式为GBK时，应该是char(8);如果存储方式为UTF8时，应该是char(12);<br><br>2、4.0、4.1和5.0的varchar长度不一样，4.0、4.1时都是255长度，而到了5.0变成了65535,为了兼容性，这些一定要考虑到。<br><br>3、索引字段最好是纯英文的，这样select的时候即使是模糊查询速度也会快很多<br><br>4、能用char的尽量不要用varchar，虽然varchar比较节约数据库，但char的速度更快<br><br>5、知道字段可能会存在的值时，可以考虑用enum来存储，虽然可能会与其他类型的数据库不兼容，但仅仅在mysql下面使用的话，还是可以加快速度的，比如，学历字段，可以enum('小学','初中','高中','中专','大专','本科','硕士','博士','博士后','其他');而不需要再单独建个表来存储，不过。这样的话，缺点是冗余数据可能会多一点<br><br>其他的由您为我补上，谢谢&#8230;&#8230;<img src ="http://www.cnitblog.com/neatstudio/aggbug/30212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-07-18 21:53 <a href="http://www.cnitblog.com/neatstudio/archive/2007/07/18/30212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP4的时代即将结束……</title><link>http://www.cnitblog.com/neatstudio/archive/2007/07/13/29811.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Fri, 13 Jul 2007 09:15:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/07/13/29811.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/29811.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/07/13/29811.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/29811.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/29811.html</trackback:ping><description><![CDATA[<div class=newsItem><a id=2007-07-13-1 name=2007-07-13-1>
<h1>PHP 4 end of life announcement</h1>
</a>
<div><span class=newsdate>[12-Jul-2007]</span>
<p>Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP 4. PHP 5 is fast, stable &amp; production-ready and as PHP 6 is on the way, PHP 4 will be discontinued. </p>
<p>The PHP development team hereby announces that support for PHP 4 will continue until the end of this year only. After 2007-12-31 there will be no more releases of PHP 4.4. We will continue to make critical security fixes available on a case-by-case basis until 2008-08-08. Please use the rest of this year to make your application suitable to run on PHP 5. </p>
<p>For documentation on migration for PHP 4 to PHP 5, we would like to point you to our <a href="http://www.php.net/manual/en/migration5.php"><u><font color=#0000ff>migration guide</font></u></a>. There is additional information available in the <a href="http://www.php.net/manual/en/migration51.php"><u><font color=#0000ff>PHP 5.0 to PHP 5.1</font></u></a> and <a href="http://www.php.net/manual/en/migration52.php"><u><font color=#0000ff>PHP 5.1 to PHP 5.2</font></u></a> migration guides as well. </p>
</div>
</div>
如果还没有上PHP5的人，就等一下，干脆直接上PHP6了&#8230;&#8230;<img src ="http://www.cnitblog.com/neatstudio/aggbug/29811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-07-13 17:15 <a href="http://www.cnitblog.com/neatstudio/archive/2007/07/13/29811.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何取得当前数据的上一条和下一条的ID</title><link>http://www.cnitblog.com/neatstudio/archive/2007/07/10/29713.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Tue, 10 Jul 2007 15:20:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/07/10/29713.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/29713.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/07/10/29713.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/29713.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/29713.html</trackback:ping><description><![CDATA[经常在新闻系统中显示：上一条，上一条，在网上找了很久也没有发现有什么特别好的解决方案。在看了几个人的解决方案后，写了如下的sql语句。也算是抛砖引玉吧。<br><br>　　SQL是这样的： SELECT max(id) FROM table WHERE id&nbsp;&lt; 当前ID UNION SELECT min(id) FROM table WHERE ID&gt;当前ID<br><br>　　可是某人告诉我。ＭＳＳＱＬ居然不支持union，于是我写了这么一条，因为我不知道MSSQL是否能执行，希望给大家一个帮忙。呵呵。<br>　　SQL：select top 3 id from table where id &lt; (select min(id) from table where id &gt; 当前ID) order by id desc <br><br>　　权当做个笔记。 （希望有人指正，我也好多记一点多学一点）<img src ="http://www.cnitblog.com/neatstudio/aggbug/29713.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-07-10 23:20 <a href="http://www.cnitblog.com/neatstudio/archive/2007/07/10/29713.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>手动配置windows下面amp。。。</title><link>http://www.cnitblog.com/neatstudio/archive/2007/05/21/install_windows_apache_php_mysql.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Mon, 21 May 2007 06:30:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/05/21/install_windows_apache_php_mysql.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/27374.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/05/21/install_windows_apache_php_mysql.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/27374.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/27374.html</trackback:ping><description><![CDATA[<p>软件版本 <br>apache: apache_2.0.59-win32-x86-no_ssl.msi<br>php&nbsp;&nbsp;&nbsp;&nbsp; : php-5.2.2-Win32<br>mysql&nbsp; : mysql-noinstall-4.0.27-win32<br><br>具体的软件我就不提供下载了，自己去找吧。。。呵呵<br><br>本来自己装的时候，一直失败，在&nbsp;大米米 同志的指导下装的，才成功。。。以前一直是用集成包的，难得手工装一次，上一次手动安装已经是3年前的事情了。<br><br>步骤开始： 我的目录 一般是在 d:/usr/local/ 下面。<br>1、安装apache2，直接下一步下一步就结束了，安装好之后 apachemonitor 会自动启动，先关闭apache 。安装好的目录是：d:/usr/local/Apache2/<br>2、解压缩到 d:/usr/local/php目录下（如果怕偷懒，可以将几个DLL拷到c:/windows/system32目录下，当然也可以用apache的conf来LOAD）<br>3、修改 apache2/conf/httpd.conf，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 因为我默认的 WEB 目录在 local 目录下，为 public_html ，因此我搜索 d:/usr/local/Apache2/htdocs 替换成 d:/usr/local/public_html<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 然后添加以下代码：<br>&nbsp;&nbsp;&nbsp; # PHP的配置</p>
<p>PHPIniDir "d:/usr/local/php"</p>
<p>LoadFile d:/usr/local/php/php5ts.dll<br>LoadFile d:/usr/local/php/libmysql.dll<br>LoadFile d:/usr/local/php/libmcrypt.dll<br>LoadFile d:/usr/local/php/libmhash.dll<br>LoadFile d:/usr/local/php/libeay32.dll<br>LoadFile d:/usr/local/php/ssleay32.dll</p>
<p>LoadModule php5_module "d:/usr/local/php/php5apache2.dll"<br>AddType application/x-httpd-php .php</p>
<p>DirectoryIndex index.php index.html index.htm <br><br>注意：如果是php4那么就<br>LoadModule php4_module "d:/usr/local/php/php4apache2.dll"<br>php4apache2.dll 好象不在PHP的根目录下，好象在isapi目录下，切记拷到根目录下。<br>上面的loadFile 好象不在根目录下（实在没有PHP4了。自己配置一下吧）<br><br>4、修改 php.ini ，如果是本机测试，那么只需要改几处就行了。<br>把默认的 ;extension_dir = "./ext" 改为 extension_dir = "d:/usr/local/php/ext"<br>然后把一些扩展打开：<br>extension=php_mbstring.dll<br>extension=php_exif.dll<br>extension=php_curl.dll<br>extension=php_mhash.dll<br>extension=php_mcrypt.dll<br>extension=php_gd2.dll<br>extension=php_mysql.dll<br>extension=php_mysqli.dll<br>extension=php_pdo.dll<br>extension=php_pdo_mysql.dll<br><br>切记，php_mbstring.dll&nbsp; 要放在最前面，因为有部份DLL在加载的时候，要求先加载mbstring的，例如exif，当然具体开几个扩展，自己看自己的需求情况吧。<br>再然后，修改一下upload_max_filesize = 2M ,这个是默认的，如果有需要，可以改大一点，一般不要超过8M<br>再修改一下 session.save_path = "d:/usr/local/sessions" (前提是先建好这个目录)<br><br>5、解压缩mysql的压缩文件到 d:/usr/local/mysql目录，在目录下建一个bat文件，里面放上一句<br>copy my-huge.cnf my.ini<br>如果还有内容修改，可以参照网上的一些my.ini配置来进行修改<br>再到bin目录下建一个bat文件，名字是：installMysql.bat<br>内容为：<br>mysqld-nt --install mysql --default-file="d:/usr/local/mysql/my.ini"<br>net start mysql<br>这样的话，安装后的服务名为 mysql ,默认读取的文件是 my.ini ，可以避免将my.ini拷到C盘根目录下，方便下次重装系统后使用<br><br>6、现在再利用apache monitor打开apache，到public_html目录下建一个 phpinfo.php,内容为<br>&lt;?php<br>phpinfo();<br>?&gt;<br>到浏览器里看一下，是不是mysql,gd都加载好了？<br><br><br>7、如果你还需要zend的扩展，那么到我这里下载吧。。。(<a href="http://www.cnitblog.com/Files/neatstudio/Zend.rar">点击下载</a>)<br>步骤：先停掉apache，修改php.ini，在最后加上<br>[zend]<br>zend_extension_ts="d:/usr/local/zend/optimizer/ZendExtensionManager.dll"<br>zend_extension_manager.optimizer_ts="d:/usr/local/zend/optimizer/lib"<br>当然了，下载的压缩文件是解压到d:/usr/local/zend目录下（我提供的只支持php 5.2.x）如果你有特别需要，可以到zend的网站上下载，然后安装好之后，COPY 过来并卸载掉zend optimizer。<br></p><img src ="http://www.cnitblog.com/neatstudio/aggbug/27374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-05-21 14:30 <a href="http://www.cnitblog.com/neatstudio/archive/2007/05/21/install_windows_apache_php_mysql.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开发网页程序的时候，JS经常报错该如何处理？</title><link>http://www.cnitblog.com/neatstudio/archive/2007/05/21/27366.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Mon, 21 May 2007 03:32:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/05/21/27366.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/27366.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/05/21/27366.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/27366.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/27366.html</trackback:ping><description><![CDATA[<p>做网页的时候，JS一段没有写好的时候，老是会出错，弹出的窗口又难看，而且在IE里面，还死活找不到位置。。。因为IE的报错信息位置不准确，再加上，有时候一段网页是专门为IE写的，用FF或者OPERA就会报错，为避免报错信息弹窗，让客户体验更好，因此。。。找了一些资料后，发现以下解决方法比较好。<br><br>1、在代码前加入<br>&lt;script language="javascript"&gt;window.onerror = function(){return true;}&lt;/script&gt;<br>把这段代码放在你的head的JS引用前<br><br>2、在具体的代码前加入try catch<br>&lt;script language="javascript"&gt;<br>&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; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; catch(e){}<br>&lt;/script&gt;</p>
<p><br>3、自己写个小函数替代(COPY 自网上)<br>document._error_messages = new Array();<br>var w;</p>
<p>function doError(msg,url,ln) {<br>&nbsp;var _error_obj = {msg : msg, url : url, ln : ln};<br>&nbsp;<br>&nbsp;document._error_messages[document._error_messages.length] = _error_obj;<br>&nbsp;<br>&nbsp;str = ""<br>&nbsp;str += "&lt;title&gt;Error Dialogue (WebFX)&lt;/title&gt;"<br>&nbsp;str += "&lt;script&gt;window.onload=new Function('showError()');"<br>&nbsp;str += 'var nr=0;'<br>&nbsp;str += 'function next() {'<br>&nbsp;str += '&nbsp;&nbsp; nr=Math.min(window.opener.document._error_messages.length-1,nr+1);'<br>&nbsp;str += '&nbsp;&nbsp; showError();'<br>&nbsp;str += '}'<br>&nbsp;str += 'function previous() {'<br>&nbsp;str += '&nbsp;&nbsp; nr=Math.max(0,nr-1);'<br>&nbsp;str += '&nbsp;&nbsp; showError();'<br>&nbsp;str += '}'<br>&nbsp;str += 'function showError() {'<br>&nbsp;str += '&nbsp;&nbsp; errorArray = window.opener.document._error_messages;'<br>&nbsp;str += '&nbsp;&nbsp; if (errorArray.length != 0 &amp;&amp; nr &gt;= 0 &amp;&amp; nr &lt; errorArray.length) {'<br>&nbsp;str += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url.innerText = errorArray[nr].url;'<br>&nbsp;str += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msg.innerText = errorArray[nr].msg;'<br>&nbsp;str += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ln.innerText = errorArray[nr].ln;'<br>&nbsp;str += '&nbsp;&nbsp; }'<br>&nbsp;str += '}&lt;/script&gt;'<br>&nbsp;str += "&lt;style&gt;"<br>&nbsp;str += "body {background: white; color: black; border: 10 solid navy; font-family: tahoma, arial, helvitica; font-size: 12px; margin: 0;}"<br>&nbsp;str += "p {font-family: tahoma, arial, helvitica; font-size: 12px; margin-left: 10px; margin-right: 10px;}"<br>&nbsp;str += "h1&nbsp;{font-family: arial black; font-style: italic; margin-bottom: -15; margin-left: 10; color:navy}"<br>&nbsp;str += "button {margin: 0; border: 1 solid #dddddd; background: #eeeeee; color: black; font-family: tahoma, arial; width: 100}"<br>&nbsp;str += "a {color: navy;}"<br>&nbsp;str += "a:hover {color: blue;}"<br>&nbsp;str += "&lt;/style&gt;"<br>&nbsp;str += '&lt;body scroll="no"&gt;'<br>&nbsp;str += "&lt;h1&gt;Oops!&lt;/h1&gt;"<br>&nbsp;str += '&lt;p&gt;An error ocurred in the file &lt;br&gt;&lt;strong id="url"&gt;&lt;/strong&gt;&lt;br&gt;This might prevent the page from working correctly.&lt;/p&gt;'<br>&nbsp;str += '&lt;p style="margin-bottom: 5;"&gt;Please report this to &lt;a href="/contact.html#emil"&gt;EAE&lt;/a&gt; or &lt;a href="/contact.html#erik"&gt;Erik&lt;/a&gt;&lt;/p&gt;'<br>&nbsp;str += '&lt;table style="width: 100%;" cellspacing=0 cellpadding=10&gt;&lt;tr&gt;&lt;td&gt;'<br>&nbsp;str += '&lt;button onclick=\'if (infoArea.style.display!="block") {infoArea.style.display = "block";window.resizeTo(400,308);this.innerText="Hide Error";}else {infoArea.style.display="none";window.resizeTo(400,219);this.innerText="Show Error";}\''<br>&nbsp;str += 'onmouseover="this.style.borderColor=\'black\'" onmouseout="this.style.borderColor=\'#dddddd\'"&gt;Show Error&lt;/button&gt;'<br>&nbsp;str += '&lt;/td&gt;&lt;td align="RIGHT"&gt;&lt;button onclick="window.close()" onmouseover="this.style.borderColor=\'black\'" onmouseout="this.style.borderColor=\'#dddddd\'"&gt;Ok&lt;/button&gt;'<br>&nbsp;str += '&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;'<br>&nbsp;str += '&lt;div id="infoArea" style="display: none;"&gt;'<br>&nbsp;str += '&lt;div id="info" style="background: #eeeeee; margin: 10; margin-bottom: 0; border: 1 solid #dddddd;"&gt;'<br>&nbsp;str += '&lt;table&gt;'<br>&nbsp;str += '&lt;tr&gt;&lt;td&gt;&lt;p&gt;Message:&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p id="msg"&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;'<br>&nbsp;str += '&lt;tr&gt;&lt;td&gt;&lt;p&gt;Line:&lt;/p&gt;&lt;/td&gt;&lt;td&gt;&lt;p id="ln"&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;'<br>&nbsp;str += '&lt;/table&gt;'<br>&nbsp;str += '&lt;/div&gt;'<br>&nbsp;str += '&lt;table style="width: 100%;" cellspacing=0 cellpadding=10&gt;&lt;tr&gt;&lt;td&gt;'<br>&nbsp;str += '&lt;button onclick="previous()" onmouseover="this.style.borderColor=\'black\'" onmouseout="this.style.borderColor=\'#dddddd\'"&gt;Previous&lt;/button&gt;'<br>&nbsp;str += '&lt;/td&gt;&lt;td align=right&gt;&lt;button onclick="next()" onmouseover="this.style.borderColor=\'black\'" onmouseout="this.style.borderColor=\'#dddddd\'"&gt;Next&lt;/button&gt;'<br>&nbsp;str += '&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;'<br>&nbsp;str += '&lt;/div&gt;'<br>&nbsp;str += '&lt;/body&gt;'</p>
<p>&nbsp;if (!w || w.closed) {<br>&nbsp;&nbsp;w = window.open("","_webxf_error_win","width=390,height=190");<br>&nbsp;&nbsp;var d = w.document;<br>&nbsp;&nbsp;d.open();<br>&nbsp;&nbsp;d.write(str);<br>&nbsp;&nbsp;d.close();<br>&nbsp;&nbsp;w.focus();<br>&nbsp;}<br>&nbsp;return true;<br>}</p>
<p>window.onerror = doError<br></p><img src ="http://www.cnitblog.com/neatstudio/aggbug/27366.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-05-21 11:32 <a href="http://www.cnitblog.com/neatstudio/archive/2007/05/21/27366.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>javascript原来也可以这么用［从幻宇的网站上拷来，算是学习吧］</title><link>http://www.cnitblog.com/neatstudio/archive/2007/04/28/26365.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Sat, 28 Apr 2007 14:23:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/04/28/26365.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/26365.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/04/28/26365.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/26365.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/26365.html</trackback:ping><description><![CDATA[我自己的javascript是比较差的，所幸还能看得懂一些代码，只是自己比较懒，不太喜欢学习而已。<br>最近又偷偷的溜到国内JS强人幻宇的网站上兜了一圈。发现了一些自己以前从来没有注意过的东西！！！！！！<br><br>LOOK：<a href="http://script8.com/bbs/thread.asp?tid=322">http://script8.com/bbs/thread.asp?tid=322</a><br>标题为：有趣的script标签，大家想过用它来做些实际的事情吗？&nbsp; <br><br>内容为：<br>
<p>&nbsp;&nbsp;&nbsp;&nbsp;在网页中引入外部对象并传递参数，想来大家都有这个经历。一般来说，使用的标签是iframe和embed（针对flash），不过这两个标签都不能象xml一般设置参数，只能通过在url地址后追加查询字符串的方式来传值。htc倒是挺不错的，只是没有浏览器兼容性，想来大家也不考虑它了。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;用script标签可以把一个外部js文件载入到页面中，而且不管这个文件是否同域，都同样有效，这种跨域特性，可以说是独一无二的。一般情况下，我们都只是把js文件作为公用代码的一部分加以使用，在这里面集成一些公用函数和类。换个思维，我们把script标签看作是一个大的可视化的组件，对其传入参数，并根据参数进行不同的布局调整，这样做是很有意思的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;举个例子，&#8220;&lt;script width=300 height=200 filePath="<a hideFocus href="http://mp3.baidu.com/abc.mp3" target=_blank><u><font color=#0000ff>http://mp3.baidu.com/abc.mp3</font></u></a>"&nbsp;src=player.js&gt;&lt;/script&gt;&#8221;，这样的写法是不是挺直观，而且又具有实用性呢？大家会问，player.js如何取到script标签里的参数？其实这很简单，只需要在player.js里查找到最后一个script元素，就是当前的这个元素了，然后用getAttribute方法，想取多少个参数都可以。</p>
<br>实际例子：<br>
<p>有个应用，拿出来给大家分享</p>
<p>由于xp的补丁，一夜之间让大江南北的网站上的flash全部加上虚框，需要点击才能激活。大家在恨得牙痛之时，只好想出对应的方法，下面是新浪网插入flash的方法：</p>
<p>-----------------------------------------------------</p>
<p>&lt;script&nbsp;type="text/javascript"&nbsp;src="http://image2.sina.com.cn/home/sinaflash.js"&gt;&lt;/script&gt;</p>
<p>&lt;script&gt;</p>
<p>var&nbsp;objFlash&nbsp;=&nbsp;new&nbsp;sinaFlash("abc.swf",&nbsp;"",&nbsp;"100",&nbsp;"100",&nbsp;"7",&nbsp;"",&nbsp;false,"high");<br>objFlash.addParam("wmode",&nbsp;"opaque");<br>objFlash.write("flashcontent_1D194BAF55E2");</p>
<p>&lt;/script&gt;</p>
<p>-----------------------------------------------------</p>
<p>如果善用script标签，则可以简化为：</p>
<p>----------------------------------------------------- </p>
<p>&lt;script&nbsp;src="swf.js"&nbsp;movie="abc.swf" width="100" height="100" wmode="opaque"&gt;&lt;/script&gt;</p>
<p>-----------------------------------------------------</p>
<p>一句话足矣</p>
<p>&nbsp;</p>
<p>下面是swf.js文件的内容：</p>
<p>-----------------------------------------------------</p>
<p>var&nbsp;ol,oJs,flaID,sMovie<br>ol=document.getElementsByTagName("script")<br>oJs=ol[ol.length-1]<br>flaID=oJs.getAttribute("flaID")||""<br>sMovie=oJs.getAttribute("movie")<br>if(sMovie.slice(0,1)=="{"&amp;&amp;sMovie.slice(-1)=="}")<br>&nbsp;&nbsp;&nbsp;&nbsp;sMovie=eval(sMovie.slice(1,-1))<br>l="&lt;object&nbsp;classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'&nbsp;id='"+flaID+"'&nbsp;width='"+(oJs.getAttribute("width")||"100%")+"'&nbsp;height='"+(oJs.getAttribute("height")||"100%")+"'&gt;\<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;param&nbsp;name=movie&nbsp;value='"+sMovie+"'&nbsp;/&gt;\<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;param&nbsp;name=wmode&nbsp;value='"+(oJs.getAttribute("wmode")||"window")+"'&nbsp;/&gt;\<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;param&nbsp;name=allowscriptaccess&nbsp;value='always'&nbsp;/&gt;\<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;embed&nbsp;id='"+flaID+"'&nbsp;name='"+flaID+"'&nbsp;allowscriptaccess=always&nbsp;wmode=transparent&nbsp;src='"+sMovie+"'&nbsp;width=120%&nbsp;height=100%&nbsp;type='application/x-shockwave-flash'&gt;&lt;/embed&gt;\<br>&lt;/object&gt;"<br>document.write(l)</p>
<p>-----------------------------------------------------<br></p>
<br>他还说：<br>
<p><strong>如何响应script元素的onload事件呢？</strong></p>
<p><strong></strong>&nbsp;</p>
<p>有意思的是，在firefox中触发的是onload事件，而在IE中，触发的则是onreadystatechange。所以我们可以用下面的代码来实现：</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;o=document.createElement("script")<br>&nbsp;&nbsp;&nbsp;&nbsp;o.src="abc.js"<br>&nbsp;&nbsp;&nbsp;&nbsp;o[document.all?"onreadystatechange":"onload"]=function(){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//put your code here<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;document.body.appendChild(o)<br>&nbsp;&nbsp;&nbsp;&nbsp;o=null<br><br><br></p>
－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－－<br><br>再次佩服一下牛人们&#8230;&#8230;<br><img src ="http://www.cnitblog.com/neatstudio/aggbug/26365.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-04-28 22:23 <a href="http://www.cnitblog.com/neatstudio/archive/2007/04/28/26365.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基本算法（摘，转）</title><link>http://www.cnitblog.com/neatstudio/archive/2007/04/16/25758.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Mon, 16 Apr 2007 01:34:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/04/16/25758.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/25758.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/04/16/25758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/25758.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/25758.html</trackback:ping><description><![CDATA[基本算法 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.数论算法 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 求两数的最大公约数 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function gcd(a,b:integer):integer; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if b=0 then gcd:=a <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else gcd:=gcd (b,a mod b); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end ; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 求两数的最小公倍数 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function lcm(a,b:integer):integer; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if a&lt; b then swap(a,b); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lcm:=a; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while lcm mod b &gt;0 do inc(lcm,a); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 素数的求法 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.小范围内判断一个数是否为质数： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function prime (n: integer): Boolean; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var I: integer; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for I:=2 to trunc(sqrt(n)) do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if n mod I=0 then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prime:=false; exit; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prime:=true; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.判断longint范围内的数是否为素数（包含求50000以内的素数表）： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procedure getprime; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i,j:longint; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p:array[1..50000] of boolean; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fillchar(p,sizeof(p),true); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p[1]:=false; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i:=2; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while i&lt; 50000 do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if p[i] then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j:=i*2; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while j&lt; 50000 do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p[j]:=false; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc(j,i); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc(i); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; l:=0; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=1 to 50000 do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if p[i] then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc(l);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pr[l]:=i; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;{getprime} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function prime(x:longint):integer; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var i:integer; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prime:=false; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=1 to l do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if pr[i] &gt;=x then break <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if x mod pr[i]=0 then exit; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; prime:=true; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;{prime} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2． <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3． <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.求最小生成树 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.Prim算法： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procedure prim(v0:integer); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lowcost,closest:array[1..maxn] of integer; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i,j,k,min:integer; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lowcost[i]:=cost[v0,i]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closest[i]:=v0; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=1 to n-1 do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {寻找离生成树最近的未加入顶点k} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min:=maxlongint; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (lowcost[j]&lt; min) and (lowcost[j]&lt; &gt;0) then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min:=lowcost[j]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k:=j; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lowcost[k]:=0; {将顶点k加入生成树} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {生成树中增加一条新的边k到closest[k]} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {修正各点的lowcost和closest值} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if cost[k,j]&lt; lwocost[j] then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lowcost[j]:=cost[k,j]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; closest[j]:=k; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;{prim} <br>B.Kruskal算法：(贪心) <br>按权值递增顺序删去图中的边，若不形成回路则将此边加入最小生成树。 <br>function find(v:integer):integer; {返回顶点v所在的集合} <br>var i:integer; <br>begin <br>&nbsp;&nbsp;&nbsp;&nbsp; i:=1; <br>&nbsp;&nbsp;&nbsp;&nbsp; while (i&lt; =n) and (not v in vset[i]) do inc(i); <br>&nbsp;&nbsp;&nbsp;&nbsp; if i&lt; =n then find:=i <br>&nbsp;&nbsp;&nbsp;&nbsp; else find:=0; <br>end; <br>procedure kruskal; <br>var <br>tot,i,j:integer; <br>begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=1 to n do vset[i]:=[i];{初始化定义n个集合，第I个集合包含一个元素I} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p:=n-1; q:=1; tot:=0; {p为尚待加入的边数，q为边集指针} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sort; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {对所有边按权值递增排序，存于e[I]中，e[I].v1与e[I].v2为边I所连接的两个顶点的序号，e[I].len为第I条边的长度} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while p &gt;0 do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i:=find(e[q].v1);j:=find(e[q].v2); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if i&lt; &gt;j then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc(tot,e[q].len); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vset[i]:=vset[i]+vset[j];vset[j]:=[]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dec(p); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; inc(q); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; writeln(tot); <br>end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.最短路径 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A.标号法求解单源点最短路径： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a:array[1..maxn,1..maxn] of integer; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b:array[1..maxn] of integer; {b[i]指顶点i到源点的最短路径} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mark:array[1..maxn] of boolean; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procedure bhf; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; best,best_j:integer; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fillchar(mark,sizeof(mark),false); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mark[1]:=true; b[1]:=0;{1为源点} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; repeat <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; best:=0; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If mark[i] then {对每一个已计算出最短路径的点} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (not mark[j]) and (a[i,j] &gt;0) then&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (best=0) or (b[i]+a[i,j]&lt; best) then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; best:=b[i]+a[i,j]; best_j:=j; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if best &gt;0 then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b[best_j]:=best；mark[best_j]:=true; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; until best=0; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end;{bhf} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.Floyed算法求解所有顶点对之间的最短路径： <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; procedure floyed; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for I:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if a[I,j] &gt;0 then p[I,j]:=I else p[I,j]:=0; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {p[I,j]表示I到j的最短路径上j的前驱结点} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for k:=1 to n do {枚举中间结点} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for j:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if a[i,k]+a[j,k]&lt; a[i,j] then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a[i,j]:=a[i,k]+a[k,j]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p[I,j]:=p[k,j]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>C. Dijkstra 算法： <br>类似标号法，本质为贪心算法。 <br>var <br>a:array[1..maxn,1..maxn] of integer; <br>b,pre:array[1..maxn] of integer; {pre[i]指最短路径上I的前驱结点} <br>mark:array[1..maxn] of boolean; <br>procedure dijkstra(v0:integer); <br>begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fillchar(mark,sizeof(mark),false); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d[i]:=a[v0,i]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if d[i]&lt; &gt;0 then pre[i]:=v0 else pre[i]:=0; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mark[v0]:=true; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; repeat {每循环一次加入一个离1集合最近的结点并调整其他结点的参数} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min:=maxint; u:=0; {u记录离1集合最近的结点} <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (not mark[i]) and (d[i]&lt; min) then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; u:=i; min:=d[i]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if u&lt; &gt;0 then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mark[u]:=true;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (not mark[i]) and (a[u,i]+d[u]&lt; d[i]) then <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d[i]:=a[u,i]+d[u]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pre[i]:=u; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; until u=0; <br>end; <br>D.计算图的传递闭包 <br>Procedure Longlink; <br>Var <br>T:array[1..maxn,1..maxn] of boolean; <br>Begin <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fillchar(t,sizeof(t),false); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For k:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For I:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For j:=1 to n do <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T[I,j]:=t[I,j] or (t[I,k] and t[k,j]); <br>End;<img src ="http://www.cnitblog.com/neatstudio/aggbug/25758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-04-16 09:34 <a href="http://www.cnitblog.com/neatstudio/archive/2007/04/16/25758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>推荐一个PHP IDE ：PHPEDIT</title><link>http://www.cnitblog.com/neatstudio/archive/2007/04/02/25080.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Mon, 02 Apr 2007 15:35:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/04/02/25080.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/25080.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/04/02/25080.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/25080.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/25080.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; php 的IDE实在是太多了，多的我的手指头都数不过来，不过，最常被大家拿来进行开发的，我想也不外乎那么几种吧。<br>&nbsp;&nbsp;&nbsp; zend studio这款软件我不想再提了，网上关于它的教程和说明实在是多如牛毛，怎么帮他加插件，怎么用它进行调试，这些多的不能再多了，也就不提了。<br>&nbsp;&nbsp;&nbsp; PHPED 是nusphere出的一款软件，功能也是非常强大，也被N多的人所使用，但是它对中文的支持就和它的功能一样强大，强大的让我感到哭笑不得，好好的一段中文居然可以被截成N段，实在是佩服佩服啊。不过，如果是用来开发英文的程序，它确实是一款好软件。<br>&nbsp;&nbsp;&nbsp; PHP Expert Editor 4.1据说也是nusphere的软件，网上传言说这两款程序几乎一模一样，我也下载了进行试用，一模一样我是没有感觉出来，不过很多功能也确实让我郁闷。<br>&nbsp;&nbsp;&nbsp; php designer 2007是一款专为开发PHP的软件，但是功能偏向于网页和代码混合，很多快捷键都是网页和代码混合的。说实在的不适合真正的OO开发，而且项目管理也不是很佳，不过它好象TODO的日程管理的（记不清了，试的时候有一款软件有这个功能的，不知道是不是它了）<br>&nbsp;&nbsp;&nbsp; 还试了几款软件，因为不顺手就删了。<br>&nbsp;&nbsp;&nbsp; 直到下载了PHPEDIT，我才感觉这是一款相对比较顺手的软件，26M的软件，里面含了太多的插件，配置起来也比较繁，代码提示也没有zend方便，不过也算是比较方便的了。对数据库的操作也很方便，如果对于一个不太会数据库查询的人来说，它就显得比较方便了，DB插件里可以象视图一样进行操作，并会直接生成SQL语句，对开发人员来说它的功能可以说非常大。<br>&nbsp;&nbsp;&nbsp;&nbsp; 其它的象代码片段，代码库什么的，好象只有zend比较全，PHPED和其他的几款IDE虽然都有代码片断功能，但相对都不够强大，而PHPEDIT的强大也是建立在插件上的，内置的插件实在是让人感到适合用来开发和调试。由于我自己不用ezpublish,就直接到extensions目录下把Ezpublish目录删掉了，也可以让菜单空出来一大块，视觉也好多了。<br>&nbsp;&nbsp;&nbsp; phpedit&nbsp;在&lt;?php?&gt;的代码片断和&lt;HTML&gt;的片断里切换时，不属于同等代码的片断会变成灰色，可以让你一目了然自己在修改HTML还是在改PHP代码。<br>&nbsp;&nbsp;&nbsp; 调试的时候，也有DEBUG的输出，也支持HTML的输出。这些功能几乎上面所说的IDE都存在。<br>&nbsp;&nbsp;&nbsp; PHPEDIT 对开发人员还有几个好处是：code beautiful,code helpGenerator&nbsp; 。code beautiful的功能我就不多说了。code helpgenerator的功能就和php document差不多，生成一个关于某个文件的详细信息，比如文件中存在的静态变量，变量，类，函数，都会一一列出。适合写帮助或者写文档。<br>&nbsp;&nbsp;&nbsp; PHPEDIT 也支持单元测试，插件中含有xunit的插件，可是惭愧的是，我没有测试出该怎么用，如果有人会的，请告诉我一下。先谢了。<br>&nbsp;&nbsp;&nbsp; PHPEDIT的功能当然不止这些，它的帮助，工程，任务进程等插件都很不错，这里就不一一再提了。<br>&nbsp;&nbsp;&nbsp; 当然提了这么多优点，不提缺点，很多人会认为我是枪手，在这里推荐这个软件，好象这款软件给了我不少好处似的。<br>&nbsp;&nbsp;&nbsp;&nbsp; 所以，我对这个软件也是有感到不满的地方的，比如最重要的就是：代码折叠都没有，默认的code beautiful不能控制每行缩进，对指定元素进行编辑的时候，有时会无法换行。文件的查找功能不如editplus强大。很多功能不能自己指定快捷健，象注释之类的功能一定要通过菜单操作，太繁了。<br>&nbsp;&nbsp;&nbsp; 虽然有这些缺点，但是还是是值得一用的软件。如果你不习惯zend studio和eclipse编辑器都是采用java而导致速度太慢的话，可以考虑用这款软件；如果你不习惯editplus的功能相对略少的话，你也可以考虑使用这款软件。<br>&nbsp;&nbsp;&nbsp; 该公司网址：<a href="http://www.waterproof.fr/products/PHPEdit/">http://www.waterproof.fr/products/PHPEdit/</a><br><img src ="http://www.cnitblog.com/neatstudio/aggbug/25080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-04-02 23:35 <a href="http://www.cnitblog.com/neatstudio/archive/2007/04/02/25080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Delphi for PHP的试用</title><link>http://www.cnitblog.com/neatstudio/archive/2007/04/02/25079.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Mon, 02 Apr 2007 15:07:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/04/02/25079.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/25079.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/04/02/25079.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/25079.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/25079.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; Delphi for php的试用出来第一天就下了，到网站上发现只有一天的试用期，不过，这对我来说又有什么呢？聪明的程序员用delphi，我怎么着也得装装聪明呀。于是立马下载了delphi for php，准备试用一下。<br>&nbsp;&nbsp;&nbsp; 试用前看过一篇文章，说是李维先生拿着程序在上面拖来拖去的，就拖出了一个google地图，口水都看的流了下来。然后先到codegear网上下载了一点delphi for php的教学视频，看它拖来拖去的拖出一个数据表格，绝对适合懒人啊。<br>&nbsp;&nbsp;&nbsp; 打开delphi for php后，看到了那熟悉的图标，觉得一阵感动，这么多年了。borland还是出了一个新的软件，虽然不再完全属于borland公司了&#8230;&#8230;<br>&nbsp;&nbsp;&nbsp; delphi for php的界面和其他的PHP IDE界面都不一样，它的界面几乎和原来的delphi没有什么大区别，INPUT框和textarea框直接可以用鼠标拖到页面上了。NND，原来我也可以做美工，哇哈哈哈。<br>&nbsp;&nbsp;&nbsp; 本来以为这样的界面就可以脱离模板，而象VS的asp.net那样做页面了，突然在页面的属性里发现，居然支持模板，默认的delphi for php只支持smarty,不过我没有测试。<br>&nbsp;&nbsp;&nbsp; 由于我对delphi for php的数据grid的使用比较感兴趣，因为打开了ajax后，它可以支持直接在页面的grid中修改数据。兴致勃勃的拖了几个控件上去，并绑定了数据源，确实很方便，只需要在绑定数据源后，建个视图或者直接拖个table到页面上，就会立即生成三个控件，和一个grid表格。立刻执行&#8230;&#8230;黑黑，数据出现了！！<br>&nbsp;&nbsp;&nbsp; 这是激动人心的时刻啊，我的鼠标双击了grid，发现果然可以修改数据，改好后，敲了一下回车。数据变了&#8230;&#8230;变成修改后的了。接着，我打开浏览器，进入了PHPMYADMIN，让我失望的事情出现了，我的数据库是4.1的，字符集和连接字符校正都是UTF－8,我在delphi里把页面编码也设成了UTF－8,把文件建立的时候，格式也选的UTF8,可是，刚才修改的中文数据在数据库里显示竟然成了乱码！<br>&nbsp;&nbsp;&nbsp; 在试了很多次之后，发现都是这样，看来传说中的delphi for php支持unicode不佳是真的，让我比较失望，不过，它毕竟是测试版，希望在正式版中能够去掉这个问题吧。<br>&nbsp;&nbsp;&nbsp; 试完它，我的心都哇凉哇凉的。也就没有多测试其他的，我想的是，如果数据库的utf8解决不了，其他的，对我来说有什么意义呢？<br>&nbsp;&nbsp;&nbsp; 或者，也可能是因为我的水平太差，不会配置，也请各位成功的兄弟们教教我。写这篇文章的时候已经是测试的三天之后，再打开截图的时候，发现没有license，没有办法打开了。也就无法截图，抱歉了。</p><img src ="http://www.cnitblog.com/neatstudio/aggbug/25079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-04-02 23:07 <a href="http://www.cnitblog.com/neatstudio/archive/2007/04/02/25079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何让你的PHP比别人跑的快？</title><link>http://www.cnitblog.com/neatstudio/archive/2007/01/21/22169.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Sun, 21 Jan 2007 12:25:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2007/01/21/22169.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/22169.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2007/01/21/22169.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/22169.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/22169.html</trackback:ping><description><![CDATA[<p>     很多朋友问我，为什么我写的程序和别人写的程序相比，效率没有别人的高？为什么我的执行时间和他们相比总是高出很多？我在检查了他们写的程序后发现，抛开算法的因素，他们写的程序却并不比其他人差很多，可是……为什么效率却相差那么多呢？（<font color="#ee82ee">这里我不谈数据库缓存和模板及其他缓存技术</font>）<br />    于是我检查了一下他的common文件，发现他include和Require了很多文件，问他为什么这样，他回答说这样的话，我在开发的时候不会遇到哪个文件没有加载而要再临时加载了。于是我回答他，那么你知道这个每一次的include和require产生的IO的消耗如何计算？很多文件，你完全可以等到真正需要的时候再加载也可以啊。为什么非要在一开始就把所有的文件include进来？朋友回答说，这样的临时加载不错，可是太烦了，而且我现在都已经这样了，我怎么知道该如何才能知道该加载哪些文件不该加载哪些文件呢？<br />    我翻开手册，指了一个函数，说，就是它了。它就是：get_included_files<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">get_included_files<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />(PHP 4, PHP 5)<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />get_included_files --  Returns an array with the names of included or required files <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />Description<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />array get_included_files ( void )<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />Returns an array of the names of all files that have been included using include(), include_once(), require() or require_once(). <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />The script originally called is considered an "included file," so it will be listed together with the files referenced by include() and family. <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />Files that are included or required multiple times only show up once in the returned array. <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />注: Files included using the auto_prepend_file configuration directive are not included in the returned array. <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />例子 1. get_included_files() example (abc.php)<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">&lt;?</span>
				<span style="COLOR: #ff00ff">php<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />include 'test1.php';<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />include_once 'test2.php';<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />require 'test3.php';<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />require_once 'test4.php';<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />$included_files = get_included_files();<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />foreach ($included_files as $filename) {<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />    echo "$filename\n";<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />}<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span>
				<span style="COLOR: #0000ff">?&gt;</span>
				<span style="COLOR: #000000">  <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />will generate the following output: <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />abc.php<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />test1.php<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />test2.php<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />test3.php<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />test4.php<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /> <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />注: In PHP 4.0.1pl2 and previous versions get_included_files() assumed that the required files ended in the extension .php; other extensions would not be returned. The array returned by get_included_files() was an associative array and only listed files included by include() and include_once(). <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />See also include(), include_once(), require(), require_once(), and get_required_files(). <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span>
		</div>
		<p>    因此，在PHP文件的结束时，用print_r打印出哪些文件是可以不需加载的，可以在common文件中取消掉，可以提高不少速度。特别是一些比较大的类文件，可以节约很多哦。<br />    当然这也只是一家之言，其实在写程序的时候，大家都知道哪些类库是一开始就要加载，一开始不需要加载的，比如分页类，这种类文件到用的时候再加载都来得及，而不需要一开始就放到common文件里。<br />    希望文章可以给大家带来一点小小的帮助。</p><img src ="http://www.cnitblog.com/neatstudio/aggbug/22169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2007-01-21 20:25 <a href="http://www.cnitblog.com/neatstudio/archive/2007/01/21/22169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>EDITPLUS字体的设置</title><link>http://www.cnitblog.com/neatstudio/archive/2006/12/28/21190.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Thu, 28 Dec 2006 01:16:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2006/12/28/21190.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/21190.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2006/12/28/21190.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/21190.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/21190.html</trackback:ping><description><![CDATA[<p>来自UGIA.CN网站的内容。我看到标题的时候就想复制过来了，看了内容，果然……因为我自己也是用editplus的，在先用courier New字体后，平时也是不作任何更改的。中文宽了之后，我也当是字体本来就这样的，看到这篇文章后才知道，原来……是设置的问题。<br />虽然这篇BLOG后面有很多回复说其他的也行，但……我喜欢这个字体</p>
		<p> </p>
		<div class="postentry">
				<p>我一直在editplus中使用默认的courier new 9号字体，但是里面的汉字为了和英文字符等宽，被拉宽至两个英文字符宽度，看起来非常别扭，如图：<br /><img src="http://www.ugia.cn/wp-data/ep1.gif" /></p>
				<p>后来发现只要在字体设置中把language选项设成非Western中的任意一个，中文字体就不会拉宽了。<a id="more-114"></a>如图：<br /><img src="http://www.ugia.cn/wp-data/ep2.gif" /></p>
				<p>这样就比较清楚了：<br /><img src="http://www.ugia.cn/wp-data/ep3.gif" /></p>
		</div><img src ="http://www.cnitblog.com/neatstudio/aggbug/21190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2006-12-28 09:16 <a href="http://www.cnitblog.com/neatstudio/archive/2006/12/28/21190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MYSQL官方的文章：几种无限分类的算法……</title><link>http://www.cnitblog.com/neatstudio/archive/2006/12/18/20708.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Sun, 17 Dec 2006 16:26:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2006/12/18/20708.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/20708.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2006/12/18/20708.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/20708.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/20708.html</trackback:ping><description><![CDATA[我只贴一种，其余的去看：<a href="http://dev.mysql.com/tech-resources/articles/hierarchical-data.html">http://dev.mysql.com/tech-resources/articles/hierarchical-data.html</a><br /><br /><h3>The Adjacency List Model</h3><p>Typically the example categories shown above will be stored in a table like the following (I'm including full CREATE and INSERT statements so you can follow along):</p><pre>CREATE TABLE category(
category_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
parent INT DEFAULT NULL);


INSERT INTO category
VALUES(1,'ELECTRONICS',NULL),(2,'TELEVISIONS',1),(3,'TUBE',2),
(4,'LCD',2),(5,'PLASMA',2),(6,'PORTABLE ELECTRONICS',1),
(7,'MP3 PLAYERS',6),(8,'FLASH',7),
(9,'CD PLAYERS',6),(10,'2 WAY RADIOS',6);

SELECT * FROM category ORDER BY category_id;

+-------------+----------------------+--------+
| category_id | name                 | parent |
+-------------+----------------------+--------+
|           1 | ELECTRONICS          |   NULL |
|           2 | TELEVISIONS          |      1 |
|           3 | TUBE                 |      2 |
|           4 | LCD                  |      2 |
|           5 | PLASMA               |      2 |
|           6 | PORTABLE ELECTRONICS |      1 |
|           7 | MP3 PLAYERS          |      6 |
|           8 | FLASH                |      7 |
|           9 | CD PLAYERS           |      6 |
|          10 | 2 WAY RADIOS         |      6 |
+-------------+----------------------+--------+
10 rows in set (0.00 sec)
</pre><p>In the adjacency list model, each item in the table contains a pointer to its parent. The topmost element, in this case electronics, has a NULL value for its parent. The adjacency list model has the advantage of being quite simple, it is easy to see that FLASH is a child of mp3 players, which is a child of portable electronics, which is a child of electronics. While the adjacency list model can be dealt with fairly easily in client-side code, working with the model can be more problematic in pure SQL.</p><h3>Retrieving a Full Tree</h3><p>The first common task when dealing with hierarchical data is the display of the entire tree, usually with some form of indentation. The most common way of doing this is in pure SQL is through the use of a self-join:</p><pre>SELECT t1.name AS lev1, t2.name as lev2, t3.name as lev3, t4.name as lev4
FROM category AS t1
LEFT JOIN category AS t2 ON t2.parent = t1.category_id
LEFT JOIN category AS t3 ON t3.parent = t2.category_id
LEFT JOIN category AS t4 ON t4.parent = t3.category_id
WHERE t1.name = 'ELECTRONICS';

+-------------+----------------------+--------------+-------+
| lev1        | lev2                 | lev3         | lev4  |
+-------------+----------------------+--------------+-------+
| ELECTRONICS | TELEVISIONS          | TUBE         | NULL  |
| ELECTRONICS | TELEVISIONS          | LCD          | NULL  |
| ELECTRONICS | TELEVISIONS          | PLASMA       | NULL  |
| ELECTRONICS | PORTABLE ELECTRONICS | MP3 PLAYERS  | FLASH |
| ELECTRONICS | PORTABLE ELECTRONICS | CD PLAYERS   | NULL  |
| ELECTRONICS | PORTABLE ELECTRONICS | 2 WAY RADIOS | NULL  |
+-------------+----------------------+--------------+-------+
6 rows in set (0.00 sec)
</pre><img src ="http://www.cnitblog.com/neatstudio/aggbug/20708.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2006-12-18 00:26 <a href="http://www.cnitblog.com/neatstudio/archive/2006/12/18/20708.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我转贴的作者 穆亦风 (木头)  其他文章列表</title><link>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20265.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Sat, 09 Dec 2006 03:27:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20265.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/20265.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20265.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/20265.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/20265.html</trackback:ping><description><![CDATA[PHP has encountered an Access Violation解决方法总结       2006-3-31    6 / 1926 <br />[原创]Mysql 数据库字符集转换及版本升级/降级的详细教程     2006-1-4    21 / 7858 <br />win2000/2003 Discuz生存环境搭建及基础优化 攻略     2005-12-18    91 / 26157 <br />SYN攻击原理以及防范技术    2006-1-7    8 / 2035<br />【讲述】木头杂谈网站论坛管理（已完成）   2005-2-19    36 / 12357<br /><br />是不是没有链接很苦恼啊？HOHO，不要怕……链接在这里<br /><a href="http://www.discuz.net/digest.php?authorid=124511">http://www.discuz.net/digest.php?authorid=124511</a><br /><br />更多文章你们自己去搜吧。<br /><br />我只贴适合我自己的<br /><img src ="http://www.cnitblog.com/neatstudio/aggbug/20265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2006-12-09 11:27 <a href="http://www.cnitblog.com/neatstudio/archive/2006/12/09/20265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>win2000/2003 Discuz生存环境搭建及基础优化 攻略［转］</title><link>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20264.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Sat, 09 Dec 2006 03:18:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20264.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/20264.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20264.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/20264.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/20264.html</trackback:ping><description><![CDATA[虽然本文是搭建 discuz 的生存环境，但是我主要是想记下搭建PHP环境这段，最近很多人在群里面问我怎么搭建环境，我都坦白的告诉他，手册里有详细的步骤的。可是……懒人太多了。<br /><br />既然找到了这篇章，那就贴上，也算给其他人一个方便吧。如果觉得我贴的不够清楚，直接点原文链接去看吧。<br /><br /><br />副标题: win2000/2003 Php+ZendOptimizer+Mysql+eaccelerator配置及基础优化全攻略<br />关键字  discuz php zendoptimizer mysql eaccelerator my.ini php.ini 安装 优化 <br /><font color="red">本帖即我原创，欢迎转贴，但请注明出处，另外如果大家还有哪方面感兴趣的我没写到，请跟帖，我将补充（这个我，指<a class="bold" href="http://www.discuz.net/profile-uid-124511.html" target="_blank">穆亦风</a><font color="#000000"><span class="smalltxt">(木头)</span> ，俺也不知道是男是女。HOHO</font>）</font><br />原帖地址   <a href="http://club.muzone.cn/viewthread.php?tid=27794" target="_blank">http://club.muzone.cn/viewthread.php?tid=27794</a><br /><br />首先，下载需要安装的软件，我已经整理好，放到穆族社区的服务器，请根据连接下载。<br /><br />Php-4.4.1<br /><a href="http://www.muzone.cn/soft/php-4.4.1-Win32.zip" target="_blank">http://www.muzone.cn/soft/php-4.4.1-Win32.zip</a><br /><br />ZendOptimizer-2.6.0<br /><a href="http://www.muzone.cn/soft/ZendOptimizer-2.6.0-Windows-i386.exe" target="_blank">http://www.muzone.cn/soft/ZendOptimizer-2.6.0-Windows-i386.exe</a><br /><br />Mysql-4.0.26<br /><a href="http://www.muzone.cn/soft/mysql-4.0.26-win32.zip" target="_blank">http://www.muzone.cn/soft/mysql-4.0.26-win32.zip</a><br /><br />Eaccelerator 加速及缓存软件<br /><a href="http://www.muzone.cn/soft/eaccelerator.rar" target="_blank">http://www.muzone.cn/soft/eaccelerator.rar</a><br />当然，这个eaccelerator针对php有不同版本的,如果您安装的不是php4.4.1,可以在这里找到您需要的版本<br /><a href="http://www.arnot.info/eaccelerator/" target="_blank">http://www.arnot.info/eaccelerator/</a><br /><br /><br />phpMyAdmin-2.7.0-pl1  Mysql管理软件，日常维护必备<br /><a href="http://www.muzone.cn/soft/phpMyAdmin-2.7.0-pl1.zip" target="_blank">http://www.muzone.cn/soft/phpMyAdmin-2.7.0-pl1.zip</a><br /><br />第一节，基础安装。<br />一，安装mysql<br />首先，我们安装Mysql 4.0.26，之所以选择这个版本，是因为这个版本比较稳定，<br />而且有关字符集和兼容性也没那么麻烦，如果没有特殊需要，不推荐使用Mysql4.1和mysql5.0<br />新的版本，也许功能上更强，但是没有经历过太长时间的考验，稳定性和兼容性及使用便捷性不是很佳<br /><br />下载mysql-4.0.26-win32.zip，解压缩，直接运行安装文件。<br />我是装在D:/mysql 因为C盘经常会因为各种原因重装系统，数据放在该盘不易备份和转移<br />选择安装目录， D:/mysql  ，提示目录不存在，建立与否，确认，然后按照提示一路安装下去即可<br /><br />安装完毕后，运行 D:/mysql/bin/mysqld-nt.exe <br />然后运行  D:/mysql/bin/winmysqladmin.exe<br />输入帐号 root 密码 任意输入  (因为这一步的密码设置，实际上是不生效的，需要使用phpmyadmin修改确认)<br />重新启动服务器，检查系统服务中，是否如图所示<br /><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://club.muzone.cn/attachments/month_0512/sqlfuwu_Nxc7gFCN5ovB.gif');}" alt="" src="http://club.muzone.cn/attachments/month_0512/sqlfuwu_Nxc7gFCN5ovB.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /><br />至此mysql的基本 安装完成，进一步的设置和My.ini优化，将在下一节说明<br /><br />二，安装PHP<br /><br />需要说明的是<br />php有CGI和ISAPI是两种  运行的方式<br /><br />CGI 更消耗资源，容易因为超时而没有反映，但是实际上比较安全<br />ISAPI是大C推荐的模式，负载能力强，节省资源，但是安全性略差于CGI<br />我的教程中说的是ISAPI方式 <br /><br />解压缩php-4.4.1-Win32.zip，将第二层目录php-4.4.1-Win32，改名为 php<br />然后复制到 c:/ 成为 c:/php 并将其目录安全属性，添加 everyone 可读取和运行权限<br />但是鉴于NT系统种种怪异现象，我们可以给与everyone所有权限，只是安全性有一点点问题<br />(其理论性，只需要Guest组具备读取和运行权限，以及IIS所用到的IIS_WPG可以读取运行就行，但实际上往往会出现一些比较离奇的问题，本教程不作深入探讨)<br />然后将php.ini-dist 改名为 php.ini<br />将php4ts.dll复制到系统目录的 system32目录中 <br />win2000:  c:/winnt/system32/<br />win2003:  c:/windows/system32/<br />打开，php.ini 找到<br /><div class="msgheader"> </div><div class="msgborder" id="code0">extension_dir = "./" </div><br />改为<br /><br /><div class="msgheader">extension_dir = "c:/php/extensions/"</div><br />然后打开 Internet 信息服务(IIS)管理器 <br />修改你的站点属性，选中主目录，使其可以使用纯脚本<br /><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://club.muzone.cn/attachments/month_0512/zhandianshuxing_5cJgQmXWtolh.gif');}" alt="" src="http://club.muzone.cn/attachments/month_0512/zhandianshuxing_5cJgQmXWtolh.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /><br />然后点 配置  进入 应用程序配置 点添加 如图所示 <br /><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://club.muzone.cn/attachments/month_0512/isapi_ibuA24yn5cFM.gif');}" alt="" src="http://club.muzone.cn/attachments/month_0512/isapi_ibuA24yn5cFM.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /><br />可执行文件   C:\php\sapi\php4isapi.dll<br />扩展名   .php<br />将“脚本引擎”“确认文件是否存在”选中，然后确认。<br /><br />win2000中，到此一般就可以支持php脚本了。<br /><br />2K和03中也可以再设置ISAPI筛选其保其运行正常<br /><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://club.muzone.cn/attachments/month_0512/shaixuanqi_KzUMwSPLunXa.gif');}" alt="" src="http://club.muzone.cn/attachments/month_0512/shaixuanqi_KzUMwSPLunXa.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /><br />如果状态为绿色箭头，即可，该步非必要性操作。<br /><br />win2003中，还需要设置IIS的WEB服务扩展器<br />添加一个新的WEB扩展器，扩展名为.php，要求的文件C:\php\sapi\php4isapi.dll，设置扩展状态为允许。<br />设置完后如图<br /><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://club.muzone.cn/attachments/month_0512/kuozhan_sFJgn6QgypD8.gif');}" alt="" src="http://club.muzone.cn/attachments/month_0512/kuozhan_sFJgn6QgypD8.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /><br /><br />完成所有操作后，重新启动IIS服务。<br />到此，PHP的基本安装已经完成，我们已经使网站支持PHP脚本。<br />检查方法是，新建一个文本文件，内容为<br /><div class="msgheader"> </div><div class="msgborder" id="code2">&lt;?php phpinfo(); ?&gt;</div><br />改名为 php.php <br />放到您的网站根目录，访问这个文件，如果显示了您的php详细信息，即成功，类似<br /><br /><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://club.muzone.cn/attachments/month_0512/phpinfo_rbvx0BmBZvVK.gif');}" alt="" src="http://club.muzone.cn/attachments/month_0512/phpinfo_rbvx0BmBZvVK.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /><br /><br />关于进一步设置和php.ini的优化，我们将在下一节继续探讨。<br /><br />三，安装ZendOptimizer<br /><br />安装ZendOptimizer，不仅是一些商用PHP必备的条件，也可以大幅度的提高php文件运行的效率。<br />下载ZendOptimizer-2.6.0-Windows-i386.exe 直接运行安装<br />请注意如下提示，根据提示仔细安装。<br />必须选择您使用的WEB SERVER 为IIS，否则将有不可预知的错误发生。如图<br /><br /><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://club.muzone.cn/attachments/month_0512/zendiis_f79OPFkKwnrm.gif');}" alt="" src="http://club.muzone.cn/attachments/month_0512/zendiis_f79OPFkKwnrm.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /><br />确认后，下一步，点击浏览，选择您的php.ini所在目录，这一点也不能错。如图<br /><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://club.muzone.cn/attachments/month_0512/zendphp_oUeDkXEp0vG1.gif');}" alt="" src="http://club.muzone.cn/attachments/month_0512/zendphp_oUeDkXEp0vG1.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /><br /><br />然后根据提示安装，过程中，他会 停止 和 重新启动 您的IIS服务，并将原 php.ini 备份为 php.ini.Zend_Optimizer_bak<br />如果一切顺利，您的 php.ini文件的尾部，将多出<br /><br /><div class="msgheader"> </div><div class="msgborder" id="code3">[Zend]<br />zend_extension_manager.optimizer_ts="C:\Program Files\Zend\Optimizer\lib\Optimizer-2.6.0"<br />zend_extension_ts="C:\Program Files\Zend\Optimizer\lib\ZendExtensionManager.dll"<br />zend_optimizer.optimization_level=15</div><br />并且检查C:\Program Files\Zend\Optimizer\lib\Optimizer-2.6.0 的目录安全属性是否有系统读取和运行的权限<br /><br />至此，ZendOptimizer的基本安装已经完成，更多设置和优化，将在下一节说明。<br /><br />基本安装到此结束，此环境已经完全可以运行discuz及各种php程序。<br />下面我们来讲基本的设置和优化。<br /><br /><span class="bold">基础设置及优化</span><br /><br /><div style="FONT-SIZE: 12px">第二节，基础设置及优化 <br />关键字   my.ini  php.ini  eaccelerator 穆亦风<br /><br />一，Mysql的进一步设置及优化。<br />登录数据库<br />　　“命令提示字符”窗口录入，<br />　　录入cd C:\mysql\bin 并按下回车键，将目录切换为 cd C:\mysql\bin<br />　　再键入命令mysql -uroot -p，回车后提示你输密码，如果刚安装好MYSQL，超级用户root是没有密码的，故直接回车即可进入到MYSQL中了，MYSQL的提示符是：mysql&gt;<br /><br />　　修改密码<br />　　C:\mysql\bin提示符下录入：<br />　　格式：mysqladmin –u用户名 -p旧密码 password 新密码 <br />　　例如：给root加个密码ab12。键入以下命令：<br />　　mysqladmin -uroot password ab12<br /><br />　　建立数据库<br />　　格式：create database 库名;<br />　　例如：建立新数据库discuz<br />　　在MYSQL的提示符下：mysql&gt; 录入 create database discuz;<br /><br />　　显示数据库<br />　　格式：show databases;<br />　　注意是databases而不是database <br /><br />　　建立新用户<br />　　格式：grant all privileges on 数据库.* to 用户名@登录主机 identified by "密码"；<br />　　例如：增加一个用户test密码为1234,让他只可以在localhost上登录，并可以对数据库discuz进行所有的操作（localhost指本地主机，即MYSQL数据库所在的那台主机），<br />　　在MYSQL的提示符下：mysql&gt; 录入grant all privileges on discuz.* to test@localhost identified by "1234";<br /><br />　　通过以上操作，你建立一个新的数据库 discuz，并增加了一个名为test对discuz数据库有所有操作权限。<br /><br />　　注意：以上仅仅是简单的Mysql操作命令，如果你需要了解更加详细的资料，请查阅Mysql相关操作说明文档。<br /><br />点击  <a href="http://club.muzone.cn/viewthread.php?tid=27781" target="_blank">《MySQL管理员指南》 </a><br /><br />首先，在上一节，我们安装的mysql，实际上没有设置root帐号的密码，这是极不安全的<br />下载 phpMyAdmin-2.7.0-pl1.zip 将子目录 phpMyAdmin-2.7.0-pl1 修改为 任意名称，复制到您的网站根目录<br />这个目录的名称最好复杂，不易被猜解，防止他人使用<br />然后修改config.default.php<br />找到<br /><br /><div class="msgheader"> </div><div class="msgborder" id="code4">$cfg['PmaAbsoluteUri'] = '';<br />修改为</div><div class="msgheader">$cfg['PmaAbsoluteUri'] = 'http://test.muzone.cn/89xd983s';</div><br />即您的网站网址及phpmyadmin具体所在目录<br /><br />找到<br /><br /><div class="msgheader">$cfg['blowfish_secret'] = '';</div>修改为<br /><div class="msgheader">$cfg['blowfish_secret'] = 'muzone';<br />这个地方的值主要用作与加密您的cookie，可以任意设置<br /><br />找到<br /></div><div class="msgborder" id="code8">$cfg['Servers'][$i]['auth_type']     = 'config';</div>修改为<br /><div class="msgheader">$cfg['Servers'][$i]['auth_type']     = 'cookie';</div><br />此处为关键修改，设置完后，只有输入正确的帐号和密码才可以管理您的mysql<br /><br />全部修改完毕，保存后，通过您的phpmyadmin 访问并管理您的mysql<br />第一次登陆，由于我们没有设置root的密码，所以帐号填 root 密码空，即可登陆<br />进入后第一件事情，就是修改root帐号的密码<br />登陆以后，点权限，修改root帐号，点最后的编辑按钮<br />设置密码，如图<br /><br /><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://club.muzone.cn/attachments/month_0512/mysqlpass_OXnUdQnA3jKj.gif');}" alt="" src="http://club.muzone.cn/attachments/month_0512/mysqlpass_OXnUdQnA3jKj.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /><br /><br />密码设置成功后，需要重新登陆，至此，便可以对mysql进行各种管理，phpmyadmin的操作网上有很多教程<br />我这里就不详细讲了<br />至于 my.ini的设置，我们将在下一节详细讲解<br /><br />二，安装 Eaccelerator 加速及缓存软件<br />安装 Eaccelerator 加速及缓存软件，可以加速php文件的读取和运行速度，并将一些mysql查询及php文件缓存起来<br />减轻服务器的负担，从而达到对论坛的大幅度加速和负载能力的提高，这个软件我在许多大站上作过试验<br />效果非常显著！其效果可询问若干长期由我维护的大论坛站长。<br /><br />安装eaccelerator非常简单，<br />首先，下载eaccelerator.rar<br />解压缩后，一个是安装说明，一个是所需要的dll文件。<br />将eaccelerator_win_4.4.1.dll 复制到  c:/php/extensions/<br /><br /><div class="msgheader"> </div><div class="msgborder">打开c:/php/php.ini<br />找到<br /><br />[Zend]<br />zend_extension_manager.optimizer_ts="C:\Program Files\Zend\Optimizer\lib\Optimizer-2.6.0"<br />zend_extension_ts="C:\Program Files\Zend\Optimizer\lib\ZendExtensionManager.dll"<br />zend_optimizer.optimization_level=15<br /><br />替换为<br /><br />[Zend]<br />zend_extension_ts="C:\php\extensions\eaccelerator_win_4.4.1.dll"<br />eaccelerator.shm_size="16"<br />eaccelerator.cache_dir="c:\temp"<br />eaccelerator.enable="1"<br />eaccelerator.optimizer="1"<br />eaccelerator.check_mtime="1"<br />eaccelerator.debug="0"<br />eaccelerator.filter=""<br />eaccelerator.shm_max="0"<br />eaccelerator.shm_ttl="0"<br />eaccelerator.shm_prune_period="0"<br />eaccelerator.shm_only="0"<br />eaccelerator.compress="1"<br />eaccelerator.compress_level="9"<br />zend_extension_manager.optimizer_ts="C:\Program Files\Zend\Optimizer\lib\Optimizer-2.6.0"<br />zend_extension_ts="C:\Program Files\Zend\Optimizer\lib\ZendExtensionManager.dll"<br />zend_optimizer.optimization_level=15</div><br />在C盘根目录建立一个文件夹， c:/temp  将这个目录授予 everyone 所有权限(实际上只要有写入，修改，读取即可)<br />重新启动IIS <br />在phpmyadmin中，察看php信息，看看是否如图所示<br /><br /><img onmousewheel="return imgzoom(this);" onmouseover="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {return true;} else {window.open('http://club.muzone.cn/attachments/month_0512/eaphp_Ks0NGvQk239H.gif');}" alt="" src="http://club.muzone.cn/attachments/month_0512/eaphp_Ks0NGvQk239H.gif" onload="if(this.width&gt;screen.width*0.7) {this.resized=true; this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" border="0" /><br />如果有加载eaccelerator的信息，说明安装成功。<br /><br />至此，对于php的第一步优化完成。<br /><br />下面我们要修改php.ini的其它项<br /><br />二，对php.ini进行最基本的设置和优化<br />对于php.ini的优化和设置，非常多样化，根据不同的程序需要和服务器配置，各人都有不同的方案<br />这里我不会说的太过详细，仅提供一些基本的。<br />大家可以阅读 php.ini 基本 中文说明   http://club.muzone.cn/viewthread.php?tid=27800<br /><br />首先，由于discuz的验证码需要，我们需要打开GD库的支持<br />第一节中，我们已经设置好了扩展库的目录，即extension_dir = "c:/php/extensions/"<br />下面我们只需要找到<br /><br /><div class="msgheader">;extension=php_gd2.dll</div><br />将前面的冒号去掉，即<br /><br /><div class="msgheader">extension=php_gd2.dll</div><br />然后保存php.ini，即可<br /><br />然后，我们可以先做一项对于页面处理效果比较明显的设置<br /><br /><div class="msgheader"> </div><div class="msgborder">output_buffering = Off <br />　　输出缓存允许你甚至在输出正文内容之后发送 header（标头，包括cookies）行 其代价是输出层减慢一点点速度。你可以使用输出缓存在运行时打开输出缓存， 或者在这里将指示设为 On 而使得所有文件的输出缓存打开。 <br />　　output_handler = ; 你可以重定向你的脚本的所有输出到一个函数， <br />　　那样做可能对处理或以日志记录它有用。 <br />　　例如若你将这个output_handler 设为ob_gzhandler, 则输出会被透明地为支持gzip或deflate编码的浏览器压缩。 <br />　　设一个输出处理器自动地打开输出缓冲。</div><br />找到这个<br /><br /><div class="msgheader">output_buffering = Off </div>修改为<br /><div class="msgborder" id="code13">output_buffering = On</div><br />注意，不要设置数值，只需要设置为On即可。<br /><br />相应的，你还可以在你的discuz后台，打开gzip支持，也是优化的一项内容。<br /><br />有些朋友为了安全，还启用了php的安全模式，这个也是一办法，但是比较麻烦<br />大家可以到网上搜索一项相关的内容，我这里就不说了，毕竟对于效率没什么显著的意义。<br /><br />另外有些朋友需要使用全局变量和MAGIC，这是一些php程序的必备条件，discuz2.0也需要<br />可以打开，不过安全性能将降低，方法很简单。<br />找到<br /><br /><div class="msgheader">register_globals = Off ;</div>和<br /><div class="msgheader">magic_quotes_gpc = Off ; </div><br />将其修改为On即可<br /><br />还有，一些朋友经常反映无法上传较大的文件或者后台备份数据经常超时，那么可以找到<br /><br />max_execution_time = 30     ; 这个是每个脚本运行的最长时间，可以自己修改加长，单位秒<br />max_input_time = 60        ; 这是每个脚本可以消耗的时间，单位也是秒<br />memory_limit = 8M      ; 这个是脚本运行最大消耗的内存，也可以自己加大<br />upload_max_filesize = 2M ; 上载文件的最大许可大小 ，自己改吧，一些图片论坛需要这个更大的值<br /><br />关于效率，还有一个，就是，php.ini的zend配置，在php.ini中，底部<br />有一行<br /><br /><div class="msgheader">zend_optimizer.optimization_level=15</div><br />如果您的机器配置足够好，可以优化这里<br /><br /><div class="msgheader">QUOTE:</div><div class="msgborder">这里最为重点的部分，仔细看！Zend Opt总共有10个优化过程，从理论上说开的越多性能越好。当然，理论和实际永远都存在着差距。优化过程开启的越多对性能消耗也相对也越大，Zend Opt的10个优化过程并不相同也就是说效果不是平均的。Zend公司定义的最高值(High模式)为15，这里15指的是开启1-4号优化过程。当然，很多朋友并不满足于此，毕竟最高也只开启4个优化过程连总数的一半都没有。各个优化过程的对应的数字代码（值）如下：<br /><br />       不使用      0  &lt;= 如果这样不如不装，还能节约点内存说！<br />优化过程1(PASS1) 1<br />优化过程2(PASS2) 2<br />优化过程3(PASS3) 4<br />优化过程4(PASS4) 8<br />优化过程5(PASS5) 16<br />优化过程6(PASS6) 32<br />优化过程7(PASS7) 64<br />优化过程8(PASS8) 128<br />优化过程9(PASS9) 256<br />优化过程10(PASS10) 512</div><br />所以15只是开了前四个，如果您的内存足够多，也可以开更高，如设置为1023，即打开所有加速过程<br /><br />12月21日补充，一些朋友反映，php经常报错，显示PHP has encountered an Access Violation at XXXXXX<br />很多人说，是php版本的问题，其实不然，可以从四个地方来看这个问题<br />1，是否zend所需的dll文件所在目录给的权限不够，必须有读取和运行的权限<br />2，是否使用的2003，设置过应用池，比如池中限制了什么什么，调整一下再试试看，是否好了，呵呵<br />3，php.ini有两个地方没有设置，而且一些程序必须用到的<br /><br />A<br /><br />将;upload_tmp_dir该行的注释符，即前面的分号“；”去掉，使该行在php.ini文档中起作用。upload_tmp_dir是用来定义上传文件存放的临时路径，在这里你还可以给其定义一个绝对路径，例如：upload_tmp_dir = d:upload 　当然，此时你的d:upload目录必须有读写权限。 <br />这里我设置为 <br />upload_tmp_dir = c:\temp  (因为前面建立了这个文件夹，我图省事，呵呵)<br /><br />B<br />出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好，解决的方法是将session.save_path和session.cookie_path 设置置为 <br />   session_save_path = c:\temp <br />   session.cookie_path = c:\temp <br />   然后在c:\目录下建立一个temp目录，即可(前面我们的eaccelerarot正好用到，建立过这么一个文件夹)<br /><br />最后<br />还有一些关于邮件的设置，大家如果装了mail server 还有需要在win下使用邮件发送的，可能需要设置<br />大家根据我的中文说明自己调整<br /><br /><span class="bold"><strong>进阶设置及优化</strong></span><br /><br /><div style="FONT-SIZE: 12px">第三节中，暂时没有想到有什么可以给大家说得，只有大家比较关心的<br />mysql优化了<br /><br />所以先说说这个，其实这个，很复杂，对于不同的网站，其在线，访问量，帖子数量，网络情况，以及机器配置<br />都有关系，优化不是一次可以完成的，需要不断的观察和调试，以取得最佳效果<br />下面我引用 Asiwish和老高的两篇优化措施，给大家看看 <br /><br />这些设置，只要通过修改 win2000的c:/winnt/my.ini 或者 win2003的 c:/windows/my.ini 来实现<br /><br />首先，我们打开这个文件，先将最底部的密码项改成其它的，这个对数据库本身没影响，主要是防止一些有心人获取这个密码，对我们不利<br /><br />然后大家看看两个例子，其中一些设置，略懂的英文的，即明白是什么意思，<br />不懂得可以去 <a href="http://cb.kingsoft.com/" target="_blank">http://cb.kingsoft.com</a>  查单词，我懒得一个个对照写说明了<br />一个是 千人在线，1G内存的<br /><br /><div class="msgheader">#This File was made using the WinMySQLAdmin 1.4 Tool<br />#2004-2-23 16:28:14<br /><br />#Uncomment or Add only the keys that you know how works.<br />#Read the MySQL Manual for instructions<br /><br />[mysqld]<br />basedir=D:/mysql<br />#bind-address=210.5.*.*<br />datadir=D:/mysql/data<br />#language=D:/mysql/share/your language directory<br />#slow query log#=<br />#tmpdir#=<br />#port=3306<br />set-variable    = max_connections=1500<br />skip-locking<br />#skip-networking<br />set-variable        = key_buffer=384M<br />set-variable        = max_allowed_packet=1M<br />set-variable        = table_cache=512<br />set-variable        = sort_buffer=2M<br />set-variable        = record_buffer=2M<br />set-variable        = thread_cache=8<br /># Try number of CPU's*2 for thread_concurrency<br />set-variable        = thread_concurrency=8<br />set-variable        = myisam_sort_buffer_size=64M<br />#set-variable        = connect_timeout=5<br />#set-variable        = wait_timeout=5<br />server-id        = 1<br />[isamchk]<br />set-variable        = key_buffer=128M<br />set-variable        = sort_buffer=128M<br />set-variable        = read_buffer=2M<br />set-variable        = write_buffer=2M<br /><br />[myisamchk]<br />set-variable        = key_buffer=128M<br />set-variable        = sort_buffer=128M<br />set-variable        = read_buffer=2M<br />set-variable        = write_buffer=2M<br />[WinMySQLadmin]<br />Server=D:/mysql/bin/mysqld-nt.exe</div><br />这个方案，整体够用了，但是在pconnect和最大连接数上，需要研究<br />max_connections没必要那么大，我个人认为几百就够，否则给服务器加大了不少负担，经常会当机<br />连接超时的设置也要根据实际情况调整，大家可以自由调整，然后观察效果如何。<br /><br /><br /><br />下面是老高两年前的一些建议，大家参考一下<br /><br /><div class="msgheader">　　7、MYSQL 的优化（/etc/my.cnf）<br />        1)确认在“[mysqld]”部分加入了“skip-innodb”和“skip-bdb”参数；<br />        2)确认在“[mysqld]”部分加入了“skip-name-resolve”和“skip-locking”参数；<br />        3)如果不需要的话，可以将二进制日志（binlog）停掉，方法是将“log-bin”注释掉；<br />        4)在内存允许的情况下，对一些参数进行重新配置，目标在于将大部分操作集中于内存中，尽量不进行磁盘操作，对于我的 MYSQL 服务器我是如下修改的，基于 2G 内存情况：<br /><br />        [mysqld]<br />        set-variable    = key_buffer=512M<br />        set-variable    = max_allowed_packet=4M<br />        set-variable    = table_cache=1024<br />        set-variable    = thread_cache=64<br />        set-variable    = join_buffer_size=32M<br />        set-variable    = sort_buffer=32M<br />        set-variable    = record_buffer=32M<br />        set-variable    = max_connections=512<br />        set-variable    = wait_timeout=120<br />        set-variable    = interactive_timeout=120<br />        set-variable    = max_connect_errors=30000<br />        set-variable    = long_query_time=1<br />        set-variable    = max_heap_table_size=256M<br />        set-variable    = tmp_table_size=128M<br />        set-variable    = thread_concurrency=8<br />        set-variable    = myisam_sort_buffer_size=128M<br /><br />        你可以根据“show status”命令返回的状态进行微调。我主要注意以下变量的数值，越小越好，最好为零：）<br />        Created_tmp_disk_tables<br />        Created_tmp_tables<br />        Created_tmp_files<br />        Slow_queries</div><br />另外 mysql wait_timeout 那个值设置大了没用 做10左右就可了 (大C说得)<br /><br />wait_timeout是使用长久连线时 空闲进程的控制 只要数据库在连接状态 他是不进行干预的 不管是否有查询或更新操作 把这个设置小一点 再使用pconnect就比较理想了 ;) <br /><br />timeout的時間﹐我的經驗值是5-20﹐看你的SERVER的訪問量了~~ (梦飞说的)<br /><br />访问量越大 这个值就应该越小 否则留出的空闲进程太多 会占用不必要的内存<br />在一个15分钟在线3000人的论坛上 设置为3比较合适 同时打开pconnect<br /><br />另外，我再引用一篇文章<br /><br />数据库连接过多的错误，可能的原因分析及解决办法<br /><br /><div class="msgheader">分析 <br /><br />系统不能连接数据库，关键要看两个数据： <br />1、数据库系统允许的最大可连接数max_connections。这个参数是可以设置的。如果不设置，默认是100。最大是16384。 <br />2、数据库当前的连接线程数threads_connected。这是动态变化的。 <br />查看max_connections、max_connections的办法见后。 <br /><br />如果 threads_connected == max_connections 时，数据库系统就不能提供更多的连接数了，这时，如果程序还想新建连接线程，数据库系统就会拒绝，如果程序没做太多的错误处理，就会出现类似强坛的报错信息。 <br /><br />因为创建和销毁数据库的连接，都会消耗系统的资源。而且为了避免在同一时间同时打开过多的连接线程，现在编程一般都使用所谓数据库连接池技术。 <br /><br />但数据库连接池技术，并不能避免程序错误导致连接资源消耗殆尽。 <br /><br />这种情况通常发生在程序未能及时释放数据库连接资源或其他原因造成数据库连接资源不能释放，但强坛系统估计不会发生这种低级的编程错误。 <br />该错误的简便的检查办法是，在刷新强坛页面时，不断监视threads_connected的变化。如果max_connections足够大，而threads_connected值不断增加以至达到max_connections，那么，就应该检查程序了。当然，如果采用数据库连接池技术，threads_connected增长到数据库连接池的最大连接线程数时，就不再增长了。 <br /><br />从强坛出错的情况看，更大的可能性是数据库系统没能进行适当地配置。下面提出一点建议。供参考 <br /><br />让你们的工程师把MySQL的最大允许连接数从默认的100调成32000。这就不会老出现连接过多的问题了。 <br /><br /><br />查看max_connections <br /><br />进入MySQL，用命令：show variables <br />查看数据库最大可连接数的变量值：max_connections <br /><br /><br /><br />查看threads_connected <br /><br />进入MySQL，用命令：show status <br />查看当前活动的连接线程变量值：threads_connected <br /><br /><br />设置max_connections <br /><br />设置办法是在my.cnf文件中，添加下面的最后红色的一行： <br /><br />-------------------------------------------------------------------------------- <br /><br />[mysqld] <br />port=3306 <br />#socket=MySQL <br />skip-locking <br />set-variable = key_buffer=16K <br />set-variable = max_allowed_packet=1M <br />set-variable = thread_stack=64K <br />set-variable = table_cache=4 <br />set-variable = sort_buffer=64K <br />set-variable = net_buffer_length=2K <br />set-variable = max_connections=32000 <br /><br /><br />-------------------------------------------------------------------------------- <br /><br />修改完毕后，重启MySQL即可。当然，为了确保设置正确，应该查看一下max_connections。 <br /><br />注意： <br />1、虽然这里写的32000。但实际MySQL服务器允许的最大连接数16384； <br />2、除max_connections外，上述其他配置应该根据你们系统自身需要进行配置，不必拘泥； <br />3、添加了最大允许连接数，对系统消耗增加不大。 <br />4、如果你的mysql用的是my.ini作配置文件，设置类似，但设置的格式要稍作变通。</div><br />可见，mysql的优化，是多样化，且根据环境不同，必须灵活调整的，大家不可生搬硬套，自己慢慢体会吧<br /></div></div><img src ="http://www.cnitblog.com/neatstudio/aggbug/20264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2006-12-09 11:18 <a href="http://www.cnitblog.com/neatstudio/archive/2006/12/09/20264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转贴]Mysql 数据库字符集转换及版本升级/降级的详细教程</title><link>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20263.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Sat, 09 Dec 2006 03:04:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20263.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/20263.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20263.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/20263.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/20263.html</trackback:ping><description><![CDATA[经常写PHP程序的人都会发牢骚，说道：该死的，怎么用的是mysql4.0.20的数据库或者说怎么用的是4.1的数据库。确实，在使用4.1前的数据库时，很少有人会发现问题，因为在安装数据库的时候，默认字符集都是latin1，而到了4.1后，需要指定字符集，这时候如果你指定了其他字符集，在将4.0的数据库转移过来的时候，你就会遇到了乱码的问题，有经验的程序员会说，你可以在程序查询的第一行指定编码，如：mysql_query("SET NAMES gbk");之类的，可是，光这样，只是治标不治本。<br /><br />于是，在网上找资料的时候，看到了这个，立马复制过来……也算是给大家一点帮助吧。（其实是给我帮助，HOHO^_^）<br /><br />以下是转贴内容：<br /><br />本文为穆亦风原创，原帖地址 http://club.muzone.cn/viewthread.php?tid=28605<br />转贴请注明出处，非常感谢！<br /><br />最近discuz发布了新的版本，免费了，用的人更多了，以前使用其它论坛程序和discuz2.5/3.0的纷纷转换或升级到discuz4.0，可见discuz作为中国人开发的php论坛程序，确实是非常优秀的，在大家欣喜若狂的时候，也遇到了一些问题<br /><br />看到不少用户反映转换完以后是乱码的情况,出现这种现象的主要原因是这类用户使用的都是mysql4.1以上的版本.下面作一个说明,希望出现这个问题的朋友都能耐心的把这个文档看完!!!<br /><br />MySQL 4.1开始，对多语言的支持有了很大变化 (这导致了问题的出现)。尽管大部分的地方 (包括个人使用和主机提供商)，MySQL 3、4.0 仍然占主导地位；但 MySQL 4.1 乃至5.0是 MySQL 官方推荐的数据库，已经有主机提供商开始提供并将会越来越多；因为 latin1 在许多地方 (下边会详细描述具体是哪些地方) 作为默认的字符集，成功的蒙蔽了许多 PHP 程序的开发者和用户，掩盖了在中文等语言环境下会出现的问题。 <br /><br />MySQL 4.1开始把多国语言字符集分的更加详细，所以导致数据库迁移，或则dz论坛升级到4.0后（dz4.0开始使用gbk或utf-8编码）出现乱码问题。<br /><br />MySQL 4.1的字符集支持(Character Set Support)有两个方面：字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server)，数据库(database)，数据表(table)和连接(connection)。<br /><br />查看系统的字符集和排序方式的设定可以通过下面的两条命令：<br /><br /><div class="msgheader"> </div><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"><span style="COLOR: #000000">mysql&gt; SHOW VARIABLES LIKE 'character_set_%';<br />+--------------------------+----------------------------+<br />| Variable_name | Value |<br />+--------------------------+----------------------------+<br />| character_set_client | latin1 |<br />| character_set_connection | latin1 |<br />| character_set_database | latin1 |<br />| character_set_results | latin1 |<br />| character_set_server | latin1 |<br />| character_set_system | utf8 |<br />| character_sets_dir | /usr/share/mysql/charsets/ |<br />+--------------------------+----------------------------+<br />7 rows in set (0.00 sec)<br /><br />mysql&gt; SHOW VARIABLES LIKE 'collation_%'; <br />+----------------------+-------------------+<br />| Variable_name | Value |<br />+----------------------+-------------------+<br />| collation_connection | latin1_swedish_ci |<br />| collation_database | latin1_swedish_ci |<br />| collation_server | latin1_swedish_ci |<br />+----------------------+-------------------+<br />3 rows in set (0.00 sec)<br /></span></div><br />MySQL 4.1 对于字符集的指定可以细化到一台机器上安装的 MySQL，其中的一个数据库，其中的一张表，其中的一栏，应该用什么字符集。但是，传统的 Web 程序在创建数据库和数据表时并没有使用那么复杂的配置，它们用的是默认的配置，那么，默认的配置从何而来呢？ <br /><br />编译 MySQL 时，指定了一个默认的字符集，这个字符集是 latin1； <br />安装 MySQL 时，可以在配置文件 (my.ini) 中指定一个默认的的字符集，如果没指定，这个值继承自编译时指定的； <br />启动 mysqld 时，可以在命令行参数中指定一个默认的的字符集，如果没指定，这个值继承自配置文件中的； <br />此时 character_set_server 被设定为这个默认的字符集； <br />当创建一个新的数据库时，除非明确指定，这个数据库的字符集被缺省设定为 character_set_server； <br />当选定了一个数据库时，character_set_database 被设定为这个数据库默认的字符集； <br />在这个数据库里创建一张表时，表默认的字符集被设定为 character_set_database，也就是这个数据库默认的字符集； <br />当在表内设置一栏时，除非明确指定，否则此栏缺省的字符集就是表默认的字符集； <br />这个字符集就是数据库中实际存储数据采用的字符集，mysqldump 出来的内容就是这个字符集下的； <br />当我们按照原来的方式通过PHP存取MySQL数据库时，就算设置了表的默认字符集为utf8并且通过UTF-8编码发送查询，你会发现存入数据库的仍然是乱码。问题就出在这个connection连接层上。<br />想要进行“正确”的存储和得到“正确”的结果，最方便的是在所有query开始之前执行一下： <br /><br />SET NAMES 'gbk';<br />其中gbk是数据库字符集。 <br /><br />它相当于下面的三句指令：<br />SET character_set_client = gbk;<br />SET character_set_results = gbk;<br />SET character_set_connection = gbk;<br /><br />4.1和5.0默认使用的是latin1字符集(木头:妈的,老外真霸道,妄想让全世界都是使用瑞典字符集吗)<br />如果我们只想使用gbk字符集存储和获取数据,<br />我们在编译mysql 4.1和 5.0的时候，需要注意在my.ini或者my.cnf中添加两处参数<br /><div class="msgheader"><div class="right"> </div></div><div class="msgborder" id="code0"><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"><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">mysqld</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br />default-character-set</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">utf8</span></div></div><br /><br /><div class="msgheader"> </div><div class="msgborder" id="code1"><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"><span style="COLOR: #000000">#settings for clients (connection</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000"> results</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000"> clients)<br /></span><span style="FONT-WEIGHT: bold; COLOR: #800000">[</span><span style="COLOR: #800000">mysql</span><span style="FONT-WEIGHT: bold; COLOR: #800000">]</span><span style="COLOR: #000000"><br />default-character-set</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">utf8</span></div></div><br />下面我们来说主题，如何转换数据库字符集<br />两种方法，<br /><div class="msgheader"> </div><div class="msgborder">第一种----更改存储字符集<br />主要的思想就是把数据库的字符集有latin1改为gbk，big5,或者utf8; 以下操作必须拥有主机权限。假设当前操作的数据库名为：database <br /><br />导出<br />首先需要把数据导为mysql4.0的格式，具体的命令如下： <br />mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt databse &gt; d4.sql <br /><br />--default-characte-set 以前数据库的字符集，这个一般情况下都是latin1的， <br />--set-charset 导出的数据的字符集，这个可以设置为gbk，utf8,或者big5 <br />导入<br />首先使用下面语句新建一个GBK字符集的数据库（test） <br /><br />CREATE DATABASE `d4` DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;<br />然后把刚才导出的数据导入到当前的数据库中就ok了。 <br /><br />mysql -uroot -p --default-character-set=gbk -f d4&lt;d4.sql<br />通过以上的导出和导入就把数据库的字符集改为正确的存储方式了。<br /><br />其中d4为新建库的名称，d4.sql为导出文件的名字<br /><br />但是这种方法，发现数据库数据存储量无端变大30%，真是郁闷</div><br /><br /><br /><div class="msgborder">另外一种其实原理相同，但是需要手动操作，一般用于第一种方法失败后的选择<br />不过这种方法如果数据库很大，估计很难做，因为光打开文件就能让你死机<br /><br />首先还是用phpmyadmin或者用mysql本身的dump导出 .sql文件<br /><br />然后用UltraEdit打开你备份的所有xxxx.sql文件，查找<br /><div class="msgheader"> </div><div class="msgborder" id="code2">DEFAULT CHARSET=latin1 </div><br />latin1这里也许是别的，反正是你不想要的，要转成gbk或者big5的字符集<br />把这个替换为“空”<br />在查找<br /><div class="msgheader"> </div><div class="msgborder" id="code3">CREATE TABLE cdb_sessions (<br />  sid char(6) character set latin1 collate latin1_bin NOT NULL default '',<br />  ip1 tinyint(3) unsigned NOT NULL default '0',<br />  ip2 tinyint(3) unsigned NOT NULL default '0',<br />  ip3 tinyint(3) unsigned NOT NULL default '0',<br />  ip4 tinyint(3) unsigned NOT NULL default '0',<br />  uid mediumint(8) unsigned NOT NULL default '0',<br />  username char(15) NOT NULL default '',<br />  groupid smallint(6) unsigned NOT NULL default '0',<br />  styleid smallint(6) unsigned NOT NULL default '0',<br />  invisible tinyint(1) NOT NULL default '0',<br />  `action` tinyint(1) unsigned NOT NULL default '0',<br />  lastactivity int(10) unsigned NOT NULL default '0',<br />  fid smallint(6) unsigned NOT NULL default '0',<br />  tid mediumint(8) unsigned NOT NULL default '0',<br />  nickname char(15) NOT NULL default '',<br />  UNIQUE KEY sid (sid)<br />) ENGINE=HEAP MAX_ROWS=1000;</div><br />替换为<br /><br /><div class="msgheader">CREATE TABLE `cdb_sessions` (<br />  `sid` char(6) binary NOT NULL default '',<br />  `ip1` tinyint(3) unsigned NOT NULL default '0',<br />  `ip2` tinyint(3) unsigned NOT NULL default '0',<br />  `ip3` tinyint(3) unsigned NOT NULL default '0',<br />  `ip4` tinyint(3) unsigned NOT NULL default '0',<br />  `uid` mediumint(8) unsigned NOT NULL default '0',<br />  `username` char(15) NOT NULL default '',<br />  `groupid` smallint(6) unsigned NOT NULL default '0',<br />  `styleid` smallint(6) unsigned NOT NULL default '0',<br />  `invisible` tinyint(1) NOT NULL default '0',<br />  `action` tinyint(1) unsigned NOT NULL default '0',<br />  `lastactivity` int(10) unsigned NOT NULL default '0',<br />  `fid` smallint(6) unsigned NOT NULL default '0',<br />  `tid` mediumint(8) unsigned NOT NULL default '0',<br />  `nickname` char(15) NOT NULL default '',<br />  UNIQUE KEY `sid` (`sid`)<br />) TYPE=HEAP MAX_ROWS=2000;</div><br />这一步更为简单的办法就是删除掉关于cdb_sessions表的这一段，将来全新装一个d4，将这个表导出<br />将其内容复制，粘贴到 sql文件的最后面<br /><br />保存后，再把这个sql文件导入到你的库中<br /><br />就OK了</div><br />用这两种方法就可以很方便的把4.1和5.0的mysql数据库降级到4.0<br />简单的过程就是<br />A导出4.1/5.0的库<br />B进行处理，转换成gbk字符集<br />C彻底卸载4.1或者5.0<br />D安装4.0.26<br />E然后导入处理完的库<br /><br />降级的时候导出库可以用这个方法<br />mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt databse  --compatible=mysql40 &gt; d4.sql <br />这样导出的就是4.0的库勒<br /><br />至于mysql版本的升级，<br />如果数据文件中有中文信息，那么将MySQL 4.0的数据文件，直接拷贝到MySQL 4.1中就是不可以的，即便在my.ini中设置了default-character-set为正确的字符集。虽然貌似没有问题，但MySQL 4.1的字符集有一处非常恼人的地方，以gbk为例，原本MySQL 4.0数据中varchar,char等长度都会变为原来的一半，这样存储中文容量不变，而英文的存储容量就少了一半。这是直接拷贝数据文件带来的最大问题。 <br /><br />所以，升级的根本，如果想使用“正确”的字符集，还是先用mysqldump导出成文件，然后导入。 <br /><br /><br />这里顺便提一个我的好友深海写的<br />用于MySQL4.1的论坛数据库字符集整理工具。<br /><br />刚写的,处理部分代码可能写得有点龌龊,但是不影响使用,<br /><br /><br />主要用于处理整理MySQL4.1指定数据库、表、字段的字符集。<br /><br />适用于将非允许的字符集范围内的数据结构（无数据！！）整理为适合Discuz!允许的字符集范围。<br />点击下载：<a href="/Files/neatstudio/setnames.rar">http://www.cnitblog.com/Files/neatstudio/setnames.rar</a><img src ="http://www.cnitblog.com/neatstudio/aggbug/20263.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2006-12-09 11:04 <a href="http://www.cnitblog.com/neatstudio/archive/2006/12/09/20263.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>my.ini详解及mysql彻底优化讲述［摘］</title><link>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20258.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Fri, 08 Dec 2006 16:32:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20258.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/20258.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20258.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/20258.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/20258.html</trackback:ping><description><![CDATA[一直以来，用MYSQL都是直接把mysql当成服务安装好，然后就不管它了。也从来没有想过优化它。毕竟本机嘛。这么一点点的开发量是绝对不会把它拖垮的。然而，如果不配置它，在insert一些大数据量或者自己用AB等测试网站压力的时候，还是会崩溃，于是才想到要好好的优化一下。<br /><br />找啊找啊找，找到下面一些资料，希望对你们有点用处，当然，其中有很多东西也可以通过MYSQL的官方手册找到。只是……我比较偷懒了一些。<br /><br />文件来源：<a href="http://www.muzone.cn/viewnews_469.html">http://www.muzone.cn/viewnews_469.html</a><br /><br />(1)、back_log： <br />要求 MySQL 能有的连接数量。当主要MySQL线程在一个很短时间内得到非常多的连接请求，这就起作用，然后主线程花些时间(尽管很短)检查连接并且启动一个新线程。 <br />back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中。只有如果期望在一个短时间内有很多连接，你需要增加它，换句话说，这值对到来的TCP/IP连接的侦听队列的大小。你的操作系统在这个队列大小上有它自己的限制。 试图设定back_log高于你的操作系统的限制将是无效的。 <br />当你观察你的主机进程列表，发现大量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | NULL | Connect | NULL | login | NULL 的待连接进程时，就要加大 back_log 的值了。默认数值是50，我把它改为500。 <br /><br />(2)、interactive_timeout： <br />服务器在关闭它前在一个交互连接上等待行动的秒数。一个交互的客户被定义为对 mysql_real_connect()使用 CLIENT_INTERACTIVE 选项的客户。 默认数值是28800，我把它改为7200。 <br /><br />(3)、key_buffer_size： <br />索引块是缓冲的并且被所有的线程共享。key_buffer_size是用于索引块的缓冲区大小，增加它可得到更好处理的索引(对所有读和多重写)，到你能负担得起那样多。如果你使它太大，系统将开始换页并且真的变慢了。默认数值是8388600(8M)，我的MySQL主机有2GB内存，所以我把它改为402649088(400MB)。 <br /><br />(4)、max_connections： <br />允许的同时客户的数量。增加该值增加 mysqld 要求的<a onclick="javascript:tagshow(event, '%CE%C4%BC%FE');" href="javascript:;" target="_self"><u><strong>文件</strong></u></a>描述符的数量。这个数字应该增加，否则，你将经常看到 Too many connections 错误。 默认数值是100，我把它改为1024 。 <br /><br />(5)、record_buffer： <br />每个进行一个顺序扫描的线程为其扫描的每张表分配这个大小的一个缓冲区。如果你做很多顺序扫描，你可能想要增加该值。默认数值是131072(128K)，我把它改为16773120 (16M) <br /><br />(6)、sort_buffer： <br />每个需要进行排序的线程分配该大小的一个缓冲区。增加这值加速ORDER BY或GROUP BY操作。默认数值是2097144(2M)，我把它改为 16777208 (16M)。 <br /><br />(7)、table_cache： <br />为所有线程打开表的数量。增加该值能增加mysqld要求的文件描述符的数量。MySQL对每个唯一打开的表需要2个文件描述符。默认数值是64，我把它改为512。 <br /><br />(、thread_cache_size： <br />可以复用的保存在中的线程的数量。如果有，新的线程从缓存中取得，当断开连接的时候如果有空间，客户的线置在缓存中。如果有很多新的线程，为了提高性能可以这个变量值。通过比较 Connections 和 Threads_created 状态的变量，可以看到这个变量的作用。我把它设置为 80。 <br /><br />(10)、wait_timeout： <br />服务器在关闭它之前在一个连接上等待行动的秒数。 默认数值是28800，我把它改为7200。 <br /><br />注：参数的调整可以通过修改 /etc/my.cnf 文件并重启 MySQL 实现。这是一个比较谨慎的工作，上面的结果也仅仅是我的一些看法，你可以根据你自己主机的硬件情况（特别是内存大小）进一步修改。<img src ="http://www.cnitblog.com/neatstudio/aggbug/20258.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2006-12-09 00:32 <a href="http://www.cnitblog.com/neatstudio/archive/2006/12/09/20258.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CSS中background加载图片的路径问题</title><link>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20257.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Fri, 08 Dec 2006 16:29:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20257.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/20257.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2006/12/09/20257.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/20257.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/20257.html</trackback:ping><description><![CDATA[在CSS里面，我们很方便的使用类似于<br />input{<br />    background:url('./images/back.jpg');<br />}<br />这种方式来做为背景图，根据手册上说，可以使用相对路径和绝对路径，今天我就卡在这个相对路径上了。<br /><br />绝对路径，我想不用说，任何人都会明白。<br /><br />相对路径，是相对于页面的路径，我的文件结构如下<br />/root/<br />-----index.html<br />-----/images/background.jpg<br />-----/style/style.css<br />从我自己的想法来说，我在index.html里面引用了 ./style/style.css这个文件，那么，我在使用background的时候路径应该是 background:url( './images/background.jpg' )，然而……愿望总是美好的。事实上，如果按照我这样的写法，背景图是出不来的。<br />问了N个人，总于有人回复我说，CSS里面，为了避免HTML页面的深度加载图片或者其他信息出错，所有的相对路径都是直接相对于CSS文件而言的。因此，刚才的路径应该是 ../images/background.jpg<br /><br />记下此事，做个笔记。<img src ="http://www.cnitblog.com/neatstudio/aggbug/20257.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2006-12-09 00:29 <a href="http://www.cnitblog.com/neatstudio/archive/2006/12/09/20257.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHPMORE 第七期终于出来了（从国庆征文到现在都两个月了）</title><link>http://www.cnitblog.com/neatstudio/archive/2006/12/07/20169.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Thu, 07 Dec 2006 02:24:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2006/12/07/20169.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/20169.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2006/12/07/20169.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/20169.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/20169.html</trackback:ping><description><![CDATA[<p>本期主要是围绕 PHP/MySQL/Apache 的加速、优化文章。</p>
		<p>目录如下：</p>
		<ul>
				<li>PHP &amp; Memcached (Nio) 
</li>
				<li>使用 memcached 实现对象的自动缓存 (cid73) 
</li>
				<li>XCache: 加速你的 PHP (Static) 
</li>
				<li>扩展 PHP (Ben) 
</li>
				<li>MySQL 集群技术简介 (叶金荣) 
</li>
				<li>LAMP 系统优化实例分析 (Dalamar) 
</li>
				<li>Subversion PHP Binding (sirtoozee) </li>
		</ul>
		<p>
				<a href="http://www.phpmore.com/download/mag/download.php">
						<font color="#336699">点击此处下载！</font>
				</a>
		</p>
		<a href="http://qtutu.com/blog/wp-content/uploads/2006/12/v7.png">
				<img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" alt="" src="http://qtutu.com/blog/wp-content/uploads/2006/12/v7.png" />
		</a> <br />本期的内容比较丰富，值得下载看看啊……<br />我没有参与只是做个广告，HOHO<img src ="http://www.cnitblog.com/neatstudio/aggbug/20169.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2006-12-07 10:24 <a href="http://www.cnitblog.com/neatstudio/archive/2006/12/07/20169.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>［笔记｜摘录］IIS和APACHE共享端口</title><link>http://www.cnitblog.com/neatstudio/archive/2006/10/07/17706.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Sat, 07 Oct 2006 14:40:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2006/10/07/17706.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/17706.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2006/10/07/17706.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/17706.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/17706.html</trackback:ping><description><![CDATA[<p>
				<font color="#0000ff">［从朋友那里复制过来……作个笔记记录一下，因为……正好自己需要使用此功能］</font>
				<br />
				<br />同时使用apache和IIS,共用80端口的一个解决方案</p>
		<p>昨天晚上（精确的应该说是今天早上）发了一贴说配置成功了IIS和Apache共用（<a href="http://www.im286.com/viewthread">http://www.im286.com/viewthread</a>. ... page%3D2&amp;page=1），今天把它写下来吧。<br />另注：<a href="http://www.im286.com/viewthread">http://www.im286.com/viewthread</a>. ... page%3D2&amp;page=1这个帖子里面的回帖有不妥。</p>
		<p>将apache设为使用80端口，IIS使用其它端口，比如81，然后将apache作为IIS的代理。 <br />在httpd.conf里面，取消下面四行的注释： <br />LoadModule proxy_module modules/mod_proxy.so <br />LoadModule proxy_connect_module modules/mod_proxy_connect.so <br />LoadModule proxy_http_module modules/mod_proxy_http.so <br />LoadModule proxy_ftp_module modules/mod_proxy_ftp.so </p>
		<p>
				<br />然后建立一个虚拟主机，将该域名的所有访问转向81端口。</p>
		<p>CODE: <br />&lt;VirtualHost *:80&gt;<br />ServerName <a href="http://www.abc.com">www.abc.com</a><br />ProxyPass / <a href="http://localhost:81/">http://localhost:81/</a><br />ProxyPassReverse / <a href="http://localhost:81/">http://localhost:81/</a><br />&lt;/virtualHost&gt; <br /> </p>
		<p>
				<br /> </p><img src ="http://www.cnitblog.com/neatstudio/aggbug/17706.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2006-10-07 22:40 <a href="http://www.cnitblog.com/neatstudio/archive/2006/10/07/17706.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP的遍历目录另类办法</title><link>http://www.cnitblog.com/neatstudio/archive/2006/10/07/17696.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Sat, 07 Oct 2006 06:18:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2006/10/07/17696.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/17696.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2006/10/07/17696.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/17696.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/17696.html</trackback:ping><description><![CDATA[<p>　　一直以来，我们在PHP里遍历目录往 往用的都是opendir或者dir这两函数，然后再递归来递归去的，opendir打开目录后，一定要closedir的，而dir更是一个对象……象我这么懒的人，怎么可能用这种东西呢？如果我忘了closedir怎么办……开玩笑的啦。因此……在看到glob函数后写下了这样一个函数。抛抛砖引引玉吧……<br /><br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">    </span>
				<span style="COLOR: #0000ff">function</span>
				<span style="COLOR: #000000"> getDirCache ( </span>
				<span style="COLOR: #800080">$d</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">.</span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000"> )<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />    {<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #800080">$dirCache</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #008080">substr</span>
				<span style="COLOR: #000000">( </span>
				<span style="COLOR: #800080">$d</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">0</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">1</span>
				<span style="COLOR: #000000"> ) </span>
				<span style="COLOR: #000000">==</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">?</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #008080">glob</span>
				<span style="COLOR: #000000">( </span>
				<span style="COLOR: #800080">$d</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">.</span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">*</span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000"> ) </span>
				<span style="COLOR: #000000">:</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #008080">glob</span>
				<span style="COLOR: #000000">( </span>
				<span style="COLOR: #800080">$d</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">.</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000">/*</span>
				<span style="COLOR: #000000">'</span>
				<span style="COLOR: #000000"> );<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #0000ff">foreach</span>
				<span style="COLOR: #000000"> ( </span>
				<span style="COLOR: #800080">$dirCache</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">as</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #800080">$_key</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">=&gt;</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #800080">$_value</span>
				<span style="COLOR: #000000"> )<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />        {<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #0000ff">if</span>
				<span style="COLOR: #000000"> ( </span>
				<span style="COLOR: #008080">is_dir</span>
				<span style="COLOR: #000000">( </span>
				<span style="COLOR: #800080">$_value</span>
				<span style="COLOR: #000000"> ) )<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />            {<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />                getDirCache ( </span>
				<span style="COLOR: #800080">$_value</span>
				<span style="COLOR: #000000"> );<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />            }<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #0000ff">else</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />            {<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />            </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000">    @chmod( $_value , 0777  );<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />            //    @unlink( $_value );</span>
				<span style="COLOR: #008000">
						<br />
						<img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">                </span>
				<span style="COLOR: #0000ff">echo</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;pre&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />                </span>
				<span style="COLOR: #008080">print_r</span>
				<span style="COLOR: #000000"> ( </span>
				<span style="COLOR: #800080">$_value</span>
				<span style="COLOR: #000000"> ) ;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />                </span>
				<span style="COLOR: #0000ff">echo</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;/pre&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />            }<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />        }<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />    }<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">echo</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;pre&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #008080">print_r</span>
				<span style="COLOR: #000000"> ( getDirCache(</span>
				<span style="COLOR: #000000">''</span>
				<span style="COLOR: #000000">)) ;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">echo</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&lt;/pre&gt;</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">;</span>
		</div><img src ="http://www.cnitblog.com/neatstudio/aggbug/17696.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2006-10-07 14:18 <a href="http://www.cnitblog.com/neatstudio/archive/2006/10/07/17696.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>判断DIV的内容改变的方法</title><link>http://www.cnitblog.com/neatstudio/archive/2006/09/18/16999.html</link><dc:creator>简单人生</dc:creator><author>简单人生</author><pubDate>Mon, 18 Sep 2006 09:25:00 GMT</pubDate><guid>http://www.cnitblog.com/neatstudio/archive/2006/09/18/16999.html</guid><wfw:comment>http://www.cnitblog.com/neatstudio/comments/16999.html</wfw:comment><comments>http://www.cnitblog.com/neatstudio/archive/2006/09/18/16999.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/neatstudio/comments/commentRss/16999.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/neatstudio/services/trackbacks/16999.html</trackback:ping><description><![CDATA[<p>    近日，在帮朋友写一段小程序的时候，用到了iframe,在iframe返回值的时候，我用parent.InputText.value=returnValue;时，javascript报错，说是找不到InputText ，我看了一下在form里，有这么一个Input框，而且id,name都设定了。为什么不能返回值呢？或者说为什么不能接收值呢？于是我用div试了一下:parent.returnDiv.innerText = returnValue ; 发现这个div就是显示了returnValue的内容，这是怎么回事？<br /><br />    我没有深究原因，因为我比较懒，于是我就想了，既然div能够接收值，那干脆就用onchange属性来直接返回嘛。改成&lt;div id='returnDiv' onchange="document.getElementById('InputText').value = this.innerText;"&gt;这样不就完事了？<br /><br />    改完了测试，发现失败，查了一下DHTML手册，发现div是没有onchange这个事件的。于是看了手册下面的说明：<br /></p>
		<table class="clsStd" style="BACKGROUND: #ffffff" width="100%">
				<tbody>
						<tr>
								<th>事件</th>
								<th>描述</th>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onactivate.html">onactivate</a>
								</td>
								<td>当<span replace="1">对象</span>设置为<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/properties/activeElement.html">活动元素</a>时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onafterupdate.html">onafterupdate</a>
								</td>
								<td>当成功更新数据源对象中的关联对象后在数据绑定对象上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onbeforeactivate.html">onbeforeactivate</a>
										<img height="11" alt="Microsoft® Internet Explorer 6 新增" src="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/common/new.gif" width="21" border="0" />
								</td>
								<td>
										<span replace="1">对象</span>要被设置为<b>当前元素</b>前立即触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onbeforecopy.html">onbeforecopy</a>
								</td>
								<td>当选中区复制到系统剪贴板之前在源对象触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onbeforecut.html">onbeforecut</a>
								</td>
								<td>当选中区从文档中删除之前在源对象触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onbeforedeactivate.html">onbeforedeactivate</a>
								</td>
								<td>在 <a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/properties/activeElement.html">activeElement</a> 从当前<span replace="1">对象</span>变为父文档其它对象之前立即触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onbeforeeditfocus.html">onbeforeeditfocus</a>
								</td>
								<td>在包含于可编辑元素内的对象进入<span class="clsGLossary" title="被用户或方法所选中的显示的内容，以便可输入文本。激活区域通常被虚线包围。当用户按 Enter 键、单击拥有焦点的对象或双击对象时可导致对象进入用户界面(UI)激活状态。要以用户界面激活状态放置对象，文档或包含该对象的元素必须处于编辑模式。用户界面激活的对象也是当前对象。">用户界面激活</span>状态前或可编辑容器变成<span class="clsGlossary" title="显示用户选中的内容和缩放句柄。可使用对象的方法获取并修改选中区的 HTML 文本。元素的例子为选中包括图像、表格和任意绝对定位的元素中的控件。">控件选中区</span>前触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onbeforepaste.html">onbeforepaste</a>
								</td>
								<td>在选中区从系统剪贴板粘贴到文档前在目标对象上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onbeforeupdate.html">onbeforeupdate</a>
								</td>
								<td>当成功更新数据源对象中的关联对象前在数据绑定对象上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onblur.html">onblur</a>
								</td>
								<td>在<span replace="1">对象</span>失去输入焦点时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onclick.html">onclick</a>
								</td>
								<td>在用户用鼠标左键单击<span replace="1">对象</span>时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/oncontextmenu.html">oncontextmenu</a>
								</td>
								<td>在用户使用鼠标右键单击客户区打开上下文菜单时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/oncontrolselect.html">oncontrolselect</a>
								</td>
								<td>当用户将要对该<span replace="1">对象</span>制作一个<span class="clsGlossary" title="显示用户选中的内容和缩放句柄。可使用对象的方法获取并修改选中区的 HTML 文本。元素的例子为选中包括图像、表格和任意绝对定位的元素中的控件。">控件选中区</span>时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/oncopy.html">oncopy</a>
								</td>
								<td>当用户复制<span replace="1">对象</span>或选中区，将其添加到系统剪贴板上时在源元素上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/oncut.html">oncut</a>
								</td>
								<td>当<span replace="1">对象</span>或选中区从文档中删除并添加到系统剪贴板上时在源元素上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/ondblclick.html">ondblclick</a>
								</td>
								<td>当用户双击<span replace="1">对象</span>时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/ondeactivate.html">ondeactivate</a>
								</td>
								<td>当 <b>activeElement</b> 从当前<span replace="1">对象</span>变为父文档其它对象时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/ondrag.html">ondrag</a>
								</td>
								<td>当进行拖曳操作时在源对象上持续触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/ondragend.html">ondragend</a>
								</td>
								<td>当用户在拖曳操作结束后释放鼠标时在源对象上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/ondragenter.html">ondragenter</a>
								</td>
								<td>当用户拖曳<span replace="1">对象</span>到一个合法拖曳目标时在目标元素上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/ondragleave.html">ondragleave</a>
								</td>
								<td>当用户在拖曳操作过程中将鼠标移出合法拖曳目标时在目标对象上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/ondragover.html">ondragover</a>
								</td>
								<td>当用户拖曳<span replace="1">对象</span>划过合法拖曳目标时持续在目标元素上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/ondragstart.html">ondragstart</a>
								</td>
								<td>当用户开始拖曳文本选中区或选中对象时在源对象上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/ondrop.html">ondrop</a>
								</td>
								<td>当鼠标按钮在拖曳操作过程中释放时在目标对象上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onerrorupdate.html">onerrorupdate</a>
								</td>
								<td>更新数据源对象中的关联数据出错时在数据绑定对象上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onfilterchange.html">onfilterchange</a>
								</td>
								<td>当可视滤镜更改状态或完成转换时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onfocus.html">onfocus</a>
								</td>
								<td>当<span replace="1">对象</span>获得焦点时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onfocusin.html">onfocusin</a>
										<img height="11" alt="Microsoft® Internet Explorer 6 新增" src="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/common/new.gif" width="21" border="0" />
								</td>
								<td>当元素将要被设置为焦点之前触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onfocusout.html">onfocusout</a>
										<img height="11" alt="Microsoft® Internet Explorer 6 新增" src="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/common/new.gif" width="21" border="0" />
								</td>
								<td>在移动焦点到其它元素之后立即触发于当前拥有焦点的元素上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onhelp.html">onhelp</a>
								</td>
								<td>当用户在浏览器为当前窗口时按 F1 键时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onkeydown.html">onkeydown</a>
								</td>
								<td>当用户按下键盘按键时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onkeypress.html">onkeypress</a>
								</td>
								<td>当用户按下字面键时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onkeyup.html">onkeyup</a>
								</td>
								<td>当用户释放键盘按键时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onlayoutcomplete.html">onlayoutcomplete</a>
								</td>
								<td>当打印或打印预览版面处理完成用来自于源文档的内容填充当前 <a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/browser/hosting/printpreview/reference/behaviors/LayoutRect.html">LayoutRect</a> 对象时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onlosecapture.html">onlosecapture</a>
								</td>
								<td>当<span replace="1">对象</span>失去鼠标捕捉时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onmousedown.html">onmousedown</a>
								</td>
								<td>当用户用任何鼠标按钮单击<span replace="1">对象</span>时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onmouseenter.html">onmouseenter</a>
								</td>
								<td>当用户将鼠标指针移动到对象内时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onmouseleave.html">onmouseleave</a>
								</td>
								<td>当用户将鼠标指针移出<span replace="1">对象</span>边界时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onmousemove.html">onmousemove</a>
								</td>
								<td>当用户将鼠标划过<span replace="1">对象</span>时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onmouseout.html">onmouseout</a>
								</td>
								<td>当用户将鼠标指针移出<span replace="1">对象</span>边界时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onmouseover.html">onmouseover</a>
								</td>
								<td>当用户将鼠标指针移动到<span replace="1">对象</span>内时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onmouseup.html">onmouseup</a>
								</td>
								<td>当用户在鼠标位于<span replace="1">对象</span>之上时释放鼠标按钮时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onmousewheel.html">onmousewheel</a>
										<img height="11" alt="Microsoft® Internet Explorer 6 新增" src="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/common/new.gif" width="21" border="0" />
								</td>
								<td>当鼠标滚轮按钮旋转时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onmove.html">onmove</a>
								</td>
								<td>当<span replace="1">对象</span>移动时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onmoveend.html">onmoveend</a>
								</td>
								<td>当<span replace="1">对象</span>停止移动时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onmovestart.html">onmovestart</a>
								</td>
								<td>当<span replace="1">对象</span>开始移动时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onpaste.html">onpaste</a>
								</td>
								<td>当用户粘贴数据以便从系统剪贴板向文档传送数据时在目标对象上触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onpropertychange.html">onpropertychange</a>
								</td>
								<td>当在对象上发生<span replace="1">对象</span>上发生属性更改时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onreadystatechange.html">onreadystatechange</a>
								</td>
								<td>当<span replace="1">对象</span>状态变更时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onresize.html">onresize</a>
								</td>
								<td>当<span replace="1">对象</span>的大小将要改变时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onresizeend.html">onresizeend</a>
								</td>
								<td>当用户更改完控件选中区中<span replace="1">对象</span>的尺寸时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onresizestart.html">onresizestart</a>
								</td>
								<td>当用户开始更改控件选中区中<span replace="1">对象</span>的尺寸时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onscroll.html">onscroll</a>
								</td>
								<td>当用户滚动<span replace="1">对象</span>的滚动条时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/events/onselectstart.html">onselectstart</a>
								</td>
								<td>
										<span replace="1">对象</span>将要被选中时触发。</td>
						</tr>
						<tr>
								<td>
										<a href="mk:@MSITStore:C:\Documents%20and%20Settings\Administrator\桌面\DHTML手册(CHM)\DHTML%20手册.chm::/DHTMLref/time2/events/ontimeerror.html">ontimeerror</a>
								</td>
								<td>当特定时间错误发生时无条件触发，通常由将属性设置为无效值导致。</td>
						</tr>
				</tbody>
		</table>
		<br />最终选定了onpropertychange,于是上面的div的内容就变成了<br />&lt;div id='returnDiv' onpropertychange="document.getElementById('InputText').value = this.innerText;"&gt;，调试成功。呵呵。<br /><br />例子：<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">测试框：<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">INPUT </span><span style="COLOR: #ff0000">TYPE</span><span style="COLOR: #0000ff">="text"</span><span style="COLOR: #ff0000"> id</span><span style="COLOR: #0000ff">="test1"</span><span style="COLOR: #ff0000"> size</span><span style="COLOR: #0000ff">="30"</span><span style="COLOR: #ff0000"> onKeyup</span><span style="COLOR: #0000ff">="document.getElementById('receiveDiv').innerText=this.value;"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"> （在这里输入字符）</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BR</span><span style="COLOR: #0000ff">&gt;&lt;</span><span style="COLOR: #800000">BR</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">div </span><span style="COLOR: #ff0000">id</span><span style="COLOR: #0000ff">='receiveDiv' </span><span style="COLOR: #ff0000">onpropertychange</span><span style="COLOR: #0000ff">="document.getElementById('test2').value=this.innerText;"</span><span style="COLOR: #0000ff">&gt;&lt;/</span><span style="COLOR: #800000">div</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">INPUT </span><span style="COLOR: #ff0000">TYPE</span><span style="COLOR: #0000ff">="text"</span><span style="COLOR: #ff0000"> id</span><span style="COLOR: #0000ff">="test2"</span><span style="COLOR: #ff0000"> size</span><span style="COLOR: #0000ff">="30"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BR</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">BR</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" />这个测试只是测试 onpropertychange 的实现。<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /></span></div><img src ="http://www.cnitblog.com/neatstudio/aggbug/16999.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/neatstudio/" target="_blank">简单人生</a> 2006-09-18 17:25 <a href="http://www.cnitblog.com/neatstudio/archive/2006/09/18/16999.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>