<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>覃伟帆博客 &#187; 学习资料</title>
	<atom:link href="http://www.kuigg.com/cat/learning/feed" rel="self" type="application/rss+xml" />
	<link>http://www.kuigg.com</link>
	<description></description>
	<lastBuildDate>Tue, 07 Feb 2012 14:15:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>你应该知道的PHP十件事</title>
		<link>http://www.kuigg.com/php-10jiansh</link>
		<comments>http://www.kuigg.com/php-10jiansh#comments</comments>
		<pubDate>Thu, 10 Jun 2010 14:16:51 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=291</guid>
		<description><![CDATA[1.使用ip2long() 和long2ip()函数来把IP地址转化成整型存储到数据库里。 这种方法把存储空间降到了接近四分之一（char(15)的15个字节对整形的4个字节），计算一个特定的地址是不是在一个区段内也更简单了，而且加快了搜索和排序的速度（虽然有时仅仅是快了一点）。 2.在验证Email地址的时候使用checkdnsrr() 函数验证域名是否存在。 这个内置函数能够确认指定的域名能够解析成IP地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数，这个函数基于checkdnsrr()，用来验证 email 地址的合法性。对于那些认为自己的Email地址是user@www163.com而不是user@163.com的家伙们，这个方法可以很方便的抓住他们。 3.如果你使用的是PHP 5和MySQL 4.1 或者更高的版本，考虑用mysqli_* 系列函数。 一个很好的功能就是你可以使用预处理语句，如果你在维护一个数据库密集型站点，这个功能能够加快查询速度。一些评估分数。 4.学会爱上三元运算符。 5.如果你在项目中感觉到有可复用的部分，在你写下一行代码前先看看PEAR中是否已经有了。 很多PHP程序员都知道 PEAR 是一个很好的资源库，虽然还有很多程序员不知道。这个在线资源库包含了超过400个可以复用的程序片段，这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的，你总能找到帮你节省时间的 PEAR包。 6.用 highlight_file()来自动的打印出格式化的很漂亮的源代码。 如果你在留言板、IRC 这些地方寻求一个脚本的帮助的话，这个函数用起来非常的顺手。当然了，要小心不要意外的泄露出你的数据库连接信息和密码等。 7.使用 error_reporting(0)函数来防止用户看到潜在的敏感错误信息。 在理想情况下，发布服务器应该在php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话，你没有自己的 php.ini 文件，那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);（或者使用 require_once() 方法）。这就能够在出错的时候完全屏蔽敏感的SQL查询语句和路径名。 8.在网数据库中存储很大的字符串之前使用 gzcompress() 和 gzuncompress() 来显式的压缩/解压字符串。 这个PHP内置函数使用 gzip 算法，可以压缩普通文本达 90%。在我每次要读写BLOB类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。 9.通过“引用”传递参数的方法从一个函数中得到多个返回值。 就像三元运算符一样，大部分受过正式编程训练的程序员都知道这个技巧。但是那些 HTML 背景大于 Pascal 背景的程序员都或多或少的有过这样的疑问“在仅能使用一次 return 的情况下，从一个函数里返回多个值？”答案就是在变量前加上一个 “&#38;” 符号，通过“引用”传递而非“值”传递。 [...]]]></description>
			<content:encoded><![CDATA[<p>1.使用ip2long() 和long2ip()函数来把IP地址转化成整型存储到数据库里。<br />
这种方法把存储空间降到了接近四分之一（char(15)的15个字节对整形的4个字节），计算一个特定的地址是不是在一个区段内也更简单了，而且加快了搜索和排序的速度（虽然有时仅仅是快了一点）。</p>
<p>2.在验证Email地址的时候使用checkdnsrr() 函数验证域名是否存在。</p>
<p>这个内置函数能够确认指定的域名能够解析成IP地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数，这个函数基于checkdnsrr()，用来验证 email 地址的合法性。对于那些认为自己的Email地址是<a href="mailto:user@www163.com">user@www163.com</a>而不是<a href="mailto:user@163.com">user@163.com</a>的家伙们，这个方法可以很方便的抓住他们。</p>
<p>3.如果你使用的是PHP 5和MySQL 4.1 或者更高的版本，考虑用mysqli_* 系列函数。</p>
<p>一个很好的功能就是你可以使用预处理语句，如果你在维护一个数据库密集型站点，这个功能能够加快查询速度。一些评估分数。</p>
<p>4.学会爱上三元运算符。</p>
<p>5.如果你在项目中感觉到有可复用的部分，在你写下一行代码前先看看PEAR中是否已经有了。</p>
<p>很多PHP程序员都知道 PEAR 是一个很好的资源库，虽然还有很多程序员不知道。这个在线资源库包含了超过400个可以复用的程序片段，这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的，你总能找到帮你节省时间的 PEAR包。</p>
<p>6.用 highlight_file()来自动的打印出格式化的很漂亮的源代码。</p>
<p>如果你在留言板、IRC 这些地方寻求一个脚本的帮助的话，这个函数用起来非常的顺手。当然了，要小心不要意外的泄露出你的数据库连接信息和密码等。</p>
<p>7.使用 error_reporting(0)函数来防止用户看到潜在的敏感错误信息。</p>
<p>在理想情况下，发布服务器应该在php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话，你没有自己的 php.ini 文件，那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);（或者使用 require_once() 方法）。这就能够在出错的时候完全屏蔽敏感的SQL查询语句和路径名。</p>
<p>8.在网数据库中存储很大的字符串之前使用 gzcompress() 和 gzuncompress() 来显式的压缩/解压字符串。</p>
<p>这个PHP内置函数使用 gzip 算法，可以压缩普通文本达 90%。在我每次要读写BLOB类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。</p>
<p>9.通过“引用”传递参数的方法从一个函数中得到多个返回值。</p>
<p>就像三元运算符一样，大部分受过正式编程训练的程序员都知道这个技巧。但是那些 HTML 背景大于 Pascal 背景的程序员都或多或少的有过这样的疑问“在仅能使用一次 return 的情况下，从一个函数里返回多个值？”答案就是在变量前加上一个 “&amp;” 符号，通过“引用”传递而非“值”传递。</p>
<p>10.完全理解“魔术引号”和 SQL 注入的危险性。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/php-10jiansh/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>收集一些常用的正则表达式</title>
		<link>http://www.kuigg.com/changyong-zhengze</link>
		<comments>http://www.kuigg.com/changyong-zhengze#comments</comments>
		<pubDate>Thu, 10 Jun 2010 13:00:50 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=287</guid>
		<description><![CDATA[“^\d+$”　　//非负整数（正整数 + 0） “^[0-9]*[1-9][0-9]*$”　　//正整数 “^((-\d+)&#124;(0+))$”　　//非正整数（负整数 + 0） “^-[0-9]*[1-9][0-9]*$”　　//负整数 “^-?\d+$”　　　　//整数 “^\d+(\.\d+)?$”　　//非负浮点数（正浮点数 + 0） “^(([0-9]+\.[0-9]*[1-9][0-9]*)&#124;([0-9]*[1-9][0-9]*\.[0-9]+)&#124;([0-9]*[1-9][0-9]*))$”　　//正浮点数 “^((-\d+(\.\d+)?)&#124;(0+(\.0+)?))$”　　//非正浮点数（负浮点数 + 0） “^(-(([0-9]+\.[0-9]*[1-9][0-9]*)&#124;([0-9]*[1-9][0-9]*\.[0-9]+)&#124;([0-9]*[1-9][0-9]*)))$”　　//负浮点数 “^(-?\d+)(\.\d+)?$”　　//浮点数 “^[A-Za-z]+$”　　//由26个英文字母组成的字符串 “^[A-Z]+$”　　//由26个英文字母的大写组成的字符串 “^[a-z]+$”　　//由26个英文字母的小写组成的字符串 “^[A-Za-z0-9]+$”　　//由数字和26个英文字母组成的字符串 “^\w+$”　　//由数字、26个英文字母或者下划线组成的字符串 “^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”　　　　//email地址 “^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$”　　//url /^(d{2}&#124;d{4})-((0([1-9]{1}))&#124;(1[1&#124;2]))-(([0-2]([1-9]{1}))&#124;(3[0&#124;1]))$/   //  年-月-日 /^((0([1-9]{1}))&#124;(1[1&#124;2]))/(([0-2]([1-9]{1}))&#124;(3[0&#124;1]))/(d{2}&#124;d{4})$/   // 月/日/年 “^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)&#124;(([w-]+.)+))([a-zA-Z]{2,4}&#124;[0-9]{1,3})(]?)$”   //Emil /^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)&#124;([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码 “^(d{1,2}&#124;1dd&#124;2[0-4]d&#124;25[0-5]).(d{1,2}&#124;1dd&#124;2[0-4]d&#124;25[0-5]).(d{1,2}&#124;1dd&#124;2[0-4]d&#124;25[0-5]).(d{1,2}&#124;1dd&#124;2[0-4]d&#124;25[0-5])$”   //IP地址 匹配中文字符的正则表达式： [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内)：[^\x00-\xff] 匹配空行的正则表达式：\n[\s&#124; ]*\r 匹配HTML标记的正则表达式：/&#60;(.*)&#62;.*&#60;\/\1&#62;&#124;&#60;(.*) \/&#62;/ 匹配首尾空格的正则表达式：(^\s*)&#124;(\s*$) 匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配网址URL的正则表达式：^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$ 匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$ 匹配国内电话号码：(\d{3}-&#124;\d{4}-)?(\d{8}&#124;\d{7})? 匹配腾讯QQ号：^[1-9]*[1-9][0-9]*$ 元字符及其在正则表达式上下文中的行为： \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。 ^ 匹配输入字符串的开始位置。如果设置了 [...]]]></description>
			<content:encoded><![CDATA[<p>“^\d+$”　　//非负整数（正整数 + 0）<br />
“^[0-9]*[1-9][0-9]*$”　　//正整数<br />
“^((-\d+)|(0+))$”　　//非正整数（负整数 + 0）<br />
“^-[0-9]*[1-9][0-9]*$”　　//负整数<br />
“^-?\d+$”　　　　//整数<br />
“^\d+(\.\d+)?$”　　//非负浮点数（正浮点数 + 0）<br />
“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$”　　//正浮点数<br />
“^((-\d+(\.\d+)?)|(0+(\.0+)?))$”　　//非正浮点数（负浮点数 + 0）<br />
“^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$”　　//负浮点数<br />
“^(-?\d+)(\.\d+)?$”　　//浮点数<br />
“^[A-Za-z]+$”　　//由26个英文字母组成的字符串<br />
“^[A-Z]+$”　　//由26个英文字母的大写组成的字符串<br />
“^[a-z]+$”　　//由26个英文字母的小写组成的字符串<br />
“^[A-Za-z0-9]+$”　　//由数字和26个英文字母组成的字符串<br />
“^\w+$”　　//由数字、26个英文字母或者下划线组成的字符串<br />
“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”　　　　//email地址<br />
“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$”　　//url<br />
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日<br />
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年<br />
“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$”   //Emil<br />
/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码<br />
“^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$”   //IP地址</p>
<p>匹配中文字符的正则表达式： [\u4e00-\u9fa5]<br />
匹配双字节字符(包括汉字在内)：[^\x00-\xff]<br />
匹配空行的正则表达式：\n[\s| ]*\r<br />
匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;/<br />
匹配首尾空格的正则表达式：(^\s*)|(\s*$)<br />
匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*<br />
匹配网址URL的正则表达式：^[a-zA-z]+://(<a href="file://w+(-//w+)*)(//.(//w+(-//w+)*))*(//?\\S*)?$">\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$</a><br />
匹配帐号是否合法(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$<br />
匹配国内电话号码：(\d{3}-|\d{4}-)?(\d{8}|\d{7})?<br />
匹配腾讯QQ号：^[1-9]*[1-9][0-9]*$<br />
元字符及其在正则表达式上下文中的行为：</p>
<p>\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。</p>
<p>^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性，^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。</p>
<p>$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性，$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。</p>
<p>* 匹配前面的子表达式零次或多次。</p>
<p>+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。</p>
<p>? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。</p>
<p>{n} n 是一个非负整数，匹配确定的n 次。</p>
<p>{n,} n 是一个非负整数，至少匹配n 次。</p>
<p>{n,m} m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。</p>
<p>? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。</p>
<p>. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符，请使用象 ’[.\n]’ 的模式。<br />
(pattern) 匹配pattern 并获取这一匹配。</p>
<p>(?:pattern) 匹配pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。</p>
<p>(?=pattern) 正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。</p>
<p>(?!pattern) 负向预查，与(?=pattern)作用相反</p>
<p>x|y 匹配 x 或 y。</p>
<p>[xyz] 字符集合。</p>
<p>[^xyz] 负值字符集合。</p>
<p>[a-z] 字符范围，匹配指定范围内的任意字符。</p>
<p>[^a-z] 负值字符范围，匹配任何不在指定范围内的任意字符。</p>
<p>\b 匹配一个单词边界，也就是指单词和空格间的位置。</p>
<p>\B 匹配非单词边界。</p>
<p>\cx 匹配由x指明的控制字符。</p>
<p>\d 匹配一个数字字符。等价于 [0-9]。</p>
<p>\D 匹配一个非数字字符。等价于 [^0-9]。</p>
<p>\f 匹配一个换页符。等价于 \x0c 和 \cL。</p>
<p>\n 匹配一个换行符。等价于 \x0a 和 \cJ。</p>
<p>\r 匹配一个回车符。等价于 \x0d 和 \cM。</p>
<p>\s 匹配任何空白字符，包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。</p>
<p>\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。</p>
<p>\t 匹配一个制表符。等价于 \x09 和 \cI。</p>
<p>\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。</p>
<p>\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。</p>
<p>\W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。</p>
<p>\xn 匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。</p>
<p>\num 匹配 num，其中num是一个正整数。对所获取的匹配的引用。</p>
<p>\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为后向引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。</p>
<p>\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式，则 nm 为后向引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足，若 n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。</p>
<p>\nml 如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。</p>
<p>\un 匹配 n，其中 n 是一个用四个十六进制数字表示的Unicode字符。</p>
<p>匹配中文字符的正则表达式： [u4e00-u9fa5]</p>
<p>匹配双字节字符(包括汉字在内)：[^x00-xff]</p>
<p>匹配空行的正则表达式：n[s| ]*r</p>
<p>匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;/1&gt;|&lt;(.*) /&gt;/</p>
<p>匹配首尾空格的正则表达式：(^s*)|(s*$)</p>
<p>匹配Email地址的正则表达式：w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*</p>
<p>匹配网址URL的正则表达式：<a href="http://([w-]+.)+[w-]+(/[w">http://([w-]+.)+[w-]+(/[w</a>- ./?%&amp;=]*)?</p>
<p>利用正则表达式限制网页表单里的文本框输入内容：</p>
<p>用正则表达式限制只能输入中文：onkeyup=”value=value.replace(/[^u4E00-u9FA5]/g,”)” onbeforepaste=”clipboardData.setData(&#8216;text&#8217;,clipboardData.getData(&#8216;text&#8217;).replace(/[^u4E00-u9FA5]/g,”))”</p>
<p>用正则表达式限制只能输入全角字符： onkeyup=”value=value.replace(/[^uFF00-uFFFF]/g,”)” onbeforepaste=”clipboardData.setData(&#8216;text&#8217;,clipboardData.getData(&#8216;text&#8217;).replace(/[^uFF00-uFFFF]/g,”))”</p>
<p>用正则表达式限制只能输入数字：onkeyup=”value=value.replace(/[^d]/g,”) “onbeforepaste=”clipboardData.setData(&#8216;text&#8217;,clipboardData.getData(&#8216;text&#8217;).replace(/[^d]/g,”))”</p>
<p>用正则表达式限制只能输入数字和英文：onkeyup=”value=value.replace(/[W]/g,”) “onbeforepaste=”clipboardData.setData(&#8216;text&#8217;,clipboardData.getData(&#8216;text&#8217;).replace(/[^d]/g,”))”</p>
<p>=========常用正则式</p>
<p>匹配中文字符的正则表达式： [\u4e00-\u9fa5]</p>
<p>匹配双字节字符(包括汉字在内)：[^\x00-\xff]</p>
<p>匹配空行的正则表达式：\n[\s| ]*\r</p>
<p>匹配HTML标记的正则表达式：/&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;/</p>
<p>匹配首尾空格的正则表达式：(^\s*)|(\s*$)</p>
<p>匹配IP地址的正则表达式：/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //</p>
<p>匹配Email地址的正则表达式：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*</p>
<p>匹配网址URL的正则表达式：<a href="http://(/[/w-]+/.)+[/w-]+(/[/w">http://(/[\w-]+\.)+[\w-]+(/[\w</a>- ./?%&amp;=]*)?</p>
<p>sql语句：^(select|drop|delete|create|update|insert).*$</p>
<p>1、非负整数：^\d+$</p>
<p>2、正整数：^[0-9]*[1-9][0-9]*$</p>
<p>3、非正整数：^((-\d+)|(0+))$</p>
<p>4、负整数：^-[0-9]*[1-9][0-9]*$</p>
<p>5、整数：^-?\d+$</p>
<p>6、非负浮点数：^\d+(\.\d+)?$</p>
<p>7、正浮点数：^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$</p>
<p>8、非正浮点数：^((-\d+\.\d+)?)|(0+(\.0+)?))$</p>
<p>9、负浮点数：^(-((正浮点数正则式)))$</p>
<p>10、英文字符串：^[A-Za-z]+$</p>
<p>11、英文大写串：^[A-Z]+$</p>
<p>12、英文小写串：^[a-z]+$</p>
<p>13、英文字符数字串：^[A-Za-z0-9]+$</p>
<p>14、英数字加下划线串：^\w+$</p>
<p>15、E-mail地址：^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$</p>
<p>16、URL：^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$<br />
或：^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&amp;_~`@[\]\&#8217;:+!]*([^&lt;&gt;\"\"])*$</p>
<p>17、邮政编码：^[1-9]\d{5}$</p>
<p>18、中文：^[\u0391-\uFFE5]+$</p>
<p>19、电话号码：^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$</p>
<p>20、手机号码：^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$</p>
<p>21、双字节字符(包括汉字在内)：^\x00-\xff</p>
<p>22、匹配首尾空格：(^\s*)|(\s*$)（像vbscript那样的trim函数）</p>
<p>23、匹配HTML标记：&lt;(.*)&gt;.*&lt;\/\1&gt;|&lt;(.*) \/&gt;</p>
<p>24、匹配空行：\n[\s| ]*\r</p>
<p>25、提取信息中的网络链接：(h|H)(r|R)(e|E)(f|F) *= *(&#8216;|”)?(\w|\\|\/|\.)+(&#8216;|”| *|&gt;)?</p>
<p>26、提取信息中的邮件地址：\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*</p>
<p>27、提取信息中的图片链接：(s|S)(r|R)(c|C) *= *(&#8216;|”)?(\w|\\|\/|\.)+(&#8216;|”| *|&gt;)?</p>
<p>28、提取信息中的IP地址：(\d+)\.(\d+)\.(\d+)\.(\d+)</p>
<p>29、提取信息中的中国手机号码：(86)*0*13\d{9}</p>
<p>30、提取信息中的中国固定电话号码：(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}</p>
<p>31、提取信息中的中国电话号码（包括移动和固定电话）：(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}</p>
<p>32、提取信息中的中国邮政编码：[1-9]{1}(\d+){5}</p>
<p>33、提取信息中的浮点数（即小数）：(-?\d*)\.?\d+</p>
<p>34、提取信息中的任何数字 ：(-?\d*)(\.\d+)?</p>
<p>35、IP：(\d+)\.(\d+)\.(\d+)\.(\d+)</p>
<p>36、电话区号：/^0\d{2,3}$/</p>
<p>37、腾讯QQ号：^[1-9]*[1-9][0-9]*$</p>
<p>38、帐号(字母开头，允许5-16字节，允许字母数字下划线)：^[a-zA-Z][a-zA-Z0-9_]{4,15}$</p>
<p>39、中文、英文、数字及下划线：^[\u4e00-\u9fa5_a-zA-Z0-9]+$</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/changyong-zhengze/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>键盘上每个键作用!!!</title>
		<link>http://www.kuigg.com/jianpan-meigejian-zuoyong</link>
		<comments>http://www.kuigg.com/jianpan-meigejian-zuoyong#comments</comments>
		<pubDate>Fri, 06 Feb 2009 07:24:20 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[其它]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=104</guid>
		<description><![CDATA[F1帮助 F2改名 F3搜索 F4地址 F5刷新 F6切换 F10菜单 CTRL+A全选 CTRL+C复制 CTRL+X剪切 CTRL+V粘贴 CTRL+Z撤消 CTRL+O打开 SHIFT+DELETE永久删除 DELETE删除 ALT+ENTER属性 ALT+F4关闭 CTRL+F4关闭 ALT+TAB切换 ALT+ESC切换 ALT+空格键窗口菜单 CTRL+ESC开始菜单 拖动某一项时按CTRL复制所选项目 拖动某一项时按CTRL+SHIFT创建快捷方式 将光盘插入到CD-ROM驱动器时按SHIFT键阻止光盘自动播放 Ctrl+1,2,3&#8230;　切换到从左边数起第1,2,3&#8230;个标签 Ctrl+A　全部选中当前页面内容 Ctrl+C　复制当前选中内容 Ctrl+D　打开“添加收藏”面版(把当前页面添加到收藏夹中) Ctrl+E　打开或关闭“搜索”侧边栏(各种搜索引擎可选) Ctrl+F　打开“查找”面版 Ctrl+G　打开或关闭“简易收集”面板 Ctrl+H　打开“历史”侧边栏 Ctrl+I　打开“收藏夹”侧边栏/另:将所有垂直平铺或水平平铺或层叠的窗口恢复 Ctrl+K　关闭除当前和锁定标签外的所有标签 Ctrl+L　打开“打开”面版(可以在当前页面打开Iternet地址或其他文件&#8230;) Ctrl+N　新建一个空白窗口(可更改,Maxthon选项→标签→新建) Ctrl+O　打开“打开”面版(可以在当前页面打开Iternet地址或其他文件&#8230;) Ctrl+P　打开“打印”面板(可以打印网页,图片什么的&#8230;) Ctrl+Q　打开“添加到过滤列表”面板(将当前页面地址发送到过滤列表) Ctrl+R　刷新当前页面 Ctrl+S　打开“保存网页”面板(可以将当前页面所有内容保存下来) Ctrl+T　垂直平铺所有窗口 Ctrl+V　粘贴当前剪贴板内的内容 Ctrl+W　关闭当前标签(窗口) Ctrl+X　剪切当前选中内容(一般只用于文本操作) Ctrl+Y　重做刚才动作(一般只用于文本操作) Ctrl+Z　撤消刚才动作(一般只用于文本操作) Ctrl+F4　关闭当前标签(窗口) Ctrl+F5　刷新当前页面 Ctrl+F6　按页面打开的先后时间顺序向前切换标签(窗口) Ctrl+F11　隐藏或显示菜单栏 Ctrl+Tab　以小菜单方式向下切换标签(窗口) Ctrl+Enter　域名自动完成http://www.XXX.com(内容可更改,Maxthon选项→地址栏→常规)/另:当输入焦点在搜索栏中时,为高亮关键字 Ctrl+拖曳　保存该链接的地址或已选中的文本或指定的图片到一个文件夹中(保存目录可更改,Maxthon选项→保存) [...]]]></description>
			<content:encoded><![CDATA[<p>F1帮助<br />
F2改名<br />
F3搜索<br />
F4地址<br />
F5刷新<br />
F6切换<br />
F10菜单<br />
CTRL+A全选<br />
CTRL+C复制<br />
CTRL+X剪切<br />
CTRL+V粘贴<br />
CTRL+Z撤消<br />
CTRL+O打开<br />
SHIFT+DELETE永久删除<br />
DELETE删除<br />
ALT+ENTER属性<br />
ALT+F4关闭<br />
CTRL+F4关闭<br />
ALT+TAB切换<br />
ALT+ESC切换<br />
ALT+空格键窗口菜单<br />
CTRL+ESC开始菜单<br />
拖动某一项时按CTRL复制所选项目<br />
拖动某一项时按CTRL+SHIFT创建快捷方式<br />
将光盘插入到CD-ROM驱动器时按SHIFT键阻止光盘自动播放 </p>
<p>Ctrl+1,2,3&#8230;　切换到从左边数起第1,2,3&#8230;个标签<br />
Ctrl+A　全部选中当前页面内容<br />
Ctrl+C　复制当前选中内容<br />
Ctrl+D　打开“添加收藏”面版(把当前页面添加到收藏夹中)<br />
Ctrl+E　打开或关闭“搜索”侧边栏(各种搜索引擎可选)<br />
Ctrl+F　打开“查找”面版<br />
Ctrl+G　打开或关闭“简易收集”面板<br />
Ctrl+H　打开“历史”侧边栏<br />
Ctrl+I　打开“收藏夹”侧边栏/另:将所有垂直平铺或水平平铺或层叠的窗口恢复<br />
Ctrl+K　关闭除当前和锁定标签外的所有标签<br />
Ctrl+L　打开“打开”面版(可以在当前页面打开Iternet地址或其他文件&#8230;)<br />
Ctrl+N　新建一个空白窗口(可更改,Maxthon选项→标签→新建)<br />
Ctrl+O　打开“打开”面版(可以在当前页面打开Iternet地址或其他文件&#8230;)<br />
Ctrl+P　打开“打印”面板(可以打印网页,图片什么的&#8230;)<br />
Ctrl+Q　打开“添加到过滤列表”面板(将当前页面地址发送到过滤列表)<br />
Ctrl+R　刷新当前页面<br />
Ctrl+S　打开“保存网页”面板(可以将当前页面所有内容保存下来)<br />
Ctrl+T　垂直平铺所有窗口<br />
Ctrl+V　粘贴当前剪贴板内的内容<br />
Ctrl+W　关闭当前标签(窗口)<br />
Ctrl+X　剪切当前选中内容(一般只用于文本操作)<br />
Ctrl+Y　重做刚才动作(一般只用于文本操作)<br />
Ctrl+Z　撤消刚才动作(一般只用于文本操作)<br />
Ctrl+F4　关闭当前标签(窗口)<br />
Ctrl+F5　刷新当前页面<br />
Ctrl+F6　按页面打开的先后时间顺序向前切换标签(窗口)<br />
Ctrl+F11　隐藏或显示菜单栏<br />
Ctrl+Tab　以小菜单方式向下切换标签(窗口)<br />
Ctrl+Enter　域名自动完成http://www.XXX.com(内容可更改,Maxthon选项→地址栏→常规)/另:当输入焦点在搜索栏中时,为高亮关键字<br />
Ctrl+拖曳　保存该链接的地址或已选中的文本或指定的图片到一个文件夹中(保存目录可更改,Maxthon选项→保存)<br />
Ctrl+小键盘&#8217;+'　当前页面放大20%<br />
Ctrl+小键盘&#8217;-'　当前页面缩小20%<br />
Ctrl+小键盘&#8217;*'　恢复当前页面的缩放为原始大小<br />
Ctrl+Alt+S　自动保存当前页面所有内容到指定文件夹(保存路径可更改,Maxthon选项→保存)<br />
Ctrl+Shift+小键盘&#8217;+'　所有页面放大20%<br />
Ctrl+Shift+小键盘&#8217;-'　所有页面缩小20%<br />
Ctrl+Shift+F　输入焦点移到搜索栏<br />
Ctrl+Shift+G　关闭“简易收集”面板<br />
Ctrl+Shift+H　打开并激活到你设置的主页<br />
Ctrl+Shift+N　在新窗口中打开剪贴板中的地址,如果剪贴板中为文字,则调用搜索引擎搜索该文字(搜索引擎可选择,Maxthon选项→搜索)<br />
Ctrl+Shift+S　打开“保存网页”面板(可以将当前页面所有内容保存下来,等同于Ctrl+S)　<br />
Ctrl+Shift+W　关闭除锁定标签外的全部标签(窗口)<br />
Ctrl+Shift+F6　按页面打开的先后时间顺序向后切换标签(窗口)<br />
Ctrl+Shift+Tab　以小菜单方式向上切换标签(窗口)<br />
Ctrl+Shift+Enter　域名自动完成http://www.XXX.com.cn(内容可更改,Maxthon选项→地址栏→常规) </p>
<p>Alt+1　保存当前表单<br />
Alt+2　保存为通用表单<br />
Alt+A　展开收藏夹列表 </p>
<p>资源管理器 </p>
<p>END显示当前窗口的底端<br />
HOME显示当前窗口的顶端<br />
NUMLOCK+数字键盘的减号(-)折叠所选的文件夹<br />
NUMLOCK+数字键盘的加号(+)显示所选文件夹的内容<br />
NUMLOCK+数字键盘的星号(*)显示所选文件夹的所有子文件夹<br />
向左键当前所选项处于展开状态时折叠该项，或选定其父文件夹<br />
向右键当前所选项处于折叠状态时展开该项，或选定第一个子文件夹 </p>
<p>自然键盘 </p>
<p>【窗口】显示或隐藏“开始”菜单<br />
【窗口】+F1帮助<br />
【窗口】+D显示桌面<br />
【窗口】+R打开“运行”<br />
【窗口】+E打开“我的电脑”<br />
【窗口】+F搜索文件或文件夹<br />
【窗口】+U打开“工具管理器”<br />
【窗口】+BREAK显示“系统属性”<br />
【窗口】+TAB在打开的项目之间切换 </p>
<p>辅助功能 </p>
<p>按右边的SHIFT键八秒钟切换筛选键的开和关<br />
按SHIFT五次切换粘滞键的开和关<br />
按NUMLOCK五秒钟切换切换键的开和关<br />
左边的ALT+左边的SHIFT+NUMLOCK切换鼠标键的开和关<br />
左边的ALT+左边的SHIFT+PRINTSCREEN切换高对比度的开和关 </p>
<p>运行 </p>
<p>按“开始”－“运行”，或按WIN键+R，在『运行』窗口中输入：<br />
（按英文字符顺序排列）<br />
%temp%&#8212;&#8212;&#8212;打开临时文件夹<br />
.&#8212;&#8212;&#8212;&#8212;&#8211;C:\DocumentsandSettings\用户名所在文件夹<br />
..&#8212;&#8212;&#8212;&#8212;-C:\DocumentsandSettings<br />
&#8230;&#8212;&#8212;&#8212;&#8212;我的电脑<br />
\&#8212;&#8212;&#8212;&#8212;&#8211;C盘<br />
appwize.cpl&#8212;-添加、删除程序<br />
access.cpl&#8212;&#8211;辅助功能选项<br />
Accwiz&#8212;&#8212;&#8212;辅助功能向导<br />
cmd&#8212;&#8212;&#8212;&#8212;CMD命令提示符<br />
command&#8212;&#8212;&#8211;CMD命令提示符<br />
chkdsk.exe&#8212;&#8211;Chkdsk磁盘检查<br />
certmgr.msc&#8212;-证书管理实用程序<br />
calc&#8212;&#8212;&#8212;&#8211;启动计算器<br />
charmap&#8212;&#8212;&#8211;启动字符映射表<br />
cintsetp&#8212;&#8212;-仓颉拼音输入法<br />
cliconfg&#8212;&#8212;-SQLSERVER客户端网络实用程序<br />
clipbrd&#8212;&#8212;&#8211;剪贴板查看器<br />
control&#8212;&#8212;&#8211;打开控制面板<br />
conf&#8212;&#8212;&#8212;&#8211;启动netmeeting<br />
compmgmt.msc&#8212;计算机管理<br />
cleanmgr&#8212;&#8212;-垃圾整理<br />
ciadv.msc&#8212;&#8212;索引服务程序<br />
dcomcnfg&#8212;&#8212;-打开系统组件服务<br />
ddeshare&#8212;&#8212;-打开DDE共享设置<br />
dxdiag&#8212;&#8212;&#8212;检查DirectX信息<br />
drwtsn32&#8212;&#8212;-系统医生<br />
devmgmt.msc&#8212;-设备管理器<br />
desk.cpl&#8212;&#8212;-显示属性<br />
dfrg.msc&#8212;&#8212;-磁盘碎片整理程序<br />
diskmgmt.msc&#8212;磁盘管理实用程序<br />
dvdplay&#8212;&#8212;&#8211;DVD播放器<br />
eventvwr&#8212;&#8212;-事件查看器<br />
eudcedit&#8212;&#8212;-造字程序<br />
explorer&#8212;&#8212;-打开资源管理器<br />
fsmgmt.msc&#8212;&#8211;共享文件夹管理器<br />
firewall.cpl&#8212;WINDOWS防火墙<br />
gpedit.msc&#8212;&#8211;组策略<br />
hdwwiz.cpl&#8212;&#8211;添加硬件<br />
iexpress&#8212;&#8212;-木马捆绑工具，系统自带<br />
inetcpl.cpl&#8212;-INTETNET选项<br />
intl.cpl&#8212;&#8212;-区域和语言选项（输入法选项）<br />
irprops.cpl&#8212;-无线链接<br />
joy.cpl&#8212;&#8212;&#8211;游戏控制器<br />
lusrmgr.msc&#8212;-本机用户和组<br />
logoff&#8212;&#8212;&#8212;注销命令<br />
main.cpl&#8212;&#8212;-鼠标<br />
mem.exe&#8212;&#8212;&#8211;显示内存使用情况<br />
migwiz&#8212;&#8212;&#8212;文件转移向导<br />
mlcfg32.cpl&#8212;-邮件<br />
mplayer2&#8212;&#8212;-简易widnowsmediaplayer<br />
mspaint&#8212;&#8212;&#8211;画图板<br />
msconfig.exe&#8212;系统配置实用程序<br />
mstsc&#8212;&#8212;&#8212;-远程桌面连接<br />
magnify&#8212;&#8212;&#8211;放大镜实用程序<br />
mmc&#8212;&#8212;&#8212;&#8212;打开控制台<br />
mmsys.cpl&#8212;&#8212;声音和音频设备<br />
mobsync&#8212;&#8212;&#8211;同步命令<br />
ncpa.cpl&#8212;&#8212;-网络连接<br />
nslookup&#8212;&#8212;-IP地址侦测器<br />
netstartX&#8212;-开始X服务<br />
netstopX&#8212;&#8211;停止X服务<br />
netstat-an&#8212;-命令检查接口<br />
netsetup.cpl&#8212;无线网络安装向导<br />
notepad&#8212;&#8212;&#8211;打开记事本<br />
nslookup&#8212;&#8212;-IP地址侦探器<br />
narrator&#8212;&#8212;-屏幕“讲述人”<br />
ntbackup&#8212;&#8212;-系统备份和还原<br />
ntmsmgr.msc&#8212;-移动存储管理器<br />
ntmsoprq.msc&#8212;移动存储管理员操作请求<br />
nusrmgr.cpl&#8212;-用户账户<br />
nwc.cpl&#8212;&#8212;&#8211;NetWare客户服务<br />
osk&#8212;&#8212;&#8212;&#8212;打开屏幕键盘<br />
odbcad32&#8212;&#8212;-ODBC数据源管理器<br />
odbccp32.cpl&#8212;ODBC数据源管理器<br />
oobe/msoobe/a-检查XP是否激活<br />
packager&#8212;&#8212;-对象包装程序<br />
perfmon.msc&#8212;-计算机性能监测程序<br />
powercfg.cpl&#8212;电源选项<br />
progman&#8212;&#8212;&#8211;程序管理器<br />
regedit&#8212;&#8212;&#8211;注册表<br />
rsop.msc&#8212;&#8212;-组策略结果集<br />
regedt32&#8212;&#8212;-注册表编辑器<br />
regsvr32/?&#8212;-调用、卸载DLL文件运行（详细请在cmd中输入regsvr32/?）<br />
sapi.cpl&#8212;&#8212;-语音<br />
services.msc&#8212;本地服务设置<br />
syncapp&#8212;&#8212;&#8211;创建一个公文包<br />
sysedit&#8212;&#8212;&#8211;系统配置编辑器<br />
sigverif&#8212;&#8212;-文件签名验证程序<br />
sndrec32&#8212;&#8212;-录音机<br />
sndvol32&#8212;&#8212;-音量控制程序<br />
shrpubw&#8212;&#8212;&#8211;共享文件夹设置工具<br />
secpol.msc&#8212;&#8211;本地安全策略<br />
sysdm.cpl&#8212;&#8212;系统<br />
syskey&#8212;&#8212;&#8212;系统加密（一旦加密就不能解开，保护windowsxp系统的双重密码）<br />
services.msc&#8212;本地服务设置<br />
sfc.exe&#8212;&#8212;&#8211;系统文件检查器<br />
sfc/scannow&#8212;windows文件保护<br />
shutdown&#8212;&#8212;-关机命令（详细请在cmd中输入shutdown/?）<br />
taskmgr&#8212;&#8212;&#8211;任务管理器<br />
telephon.cpl&#8212;电话和调制解调器选项<br />
telnet&#8212;&#8212;&#8212;远程连接程序<br />
timedate.cpl&#8212;日期和时间<br />
tourstart&#8212;&#8212;xp简介（安装完成后出现的漫游xp程序）<br />
tsshutdn&#8212;&#8212;-60秒倒计时关机命令<br />
utilman&#8212;&#8212;&#8211;辅助工具管理器<br />
winver&#8212;&#8212;&#8212;检查Windows版本<br />
winmsd&#8212;&#8212;&#8212;系统信息<br />
wiaacmgr&#8212;&#8212;-扫描仪和照相机向导<br />
winchat&#8212;&#8212;&#8211;XP自带局域网聊天<br />
wmimgmt.msc&#8212;-打开windows管理体系结构(WMI)<br />
wordpad&#8212;&#8212;&#8211;写字板<br />
wuaucpl.cpl&#8212;-自动更新<br />
wupdmgr&#8212;&#8212;&#8211;windows更新程序<br />
write&#8212;&#8212;&#8212;-写字板<br />
w<A><A><A>script&#8212;&#8212;&#8211;windows脚本宿主设置<br />
wscui.cpl&#8212;&#8212;安全中心<br />
C:/windows/fonts字体<br />
hcp://services/centers/homepage帮助和支持 </p>
<p></A></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/jianpan-meigejian-zuoyong/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>两个PHP冷门函数的简要使用</title>
		<link>http://www.kuigg.com/levenshtein-similar_text</link>
		<comments>http://www.kuigg.com/levenshtein-similar_text#comments</comments>
		<pubDate>Mon, 05 Jan 2009 20:08:03 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=99</guid>
		<description><![CDATA[相信你在使用Google或者Baidu搜索的时候，肯定碰到过他们的关键词提示。 对于搜索引擎来说，他们有一整套分词技术及完整的词库。而对于一般简单的PHP应用来说，做到这种完善的分词又是很困难的。 其实php中有两个函数，可以近似的完成这样的功能。 这两个函数就是：levenshtein 和 similar_text 以下分别是这两个函数的官方解释： http://www.php.net/manual/en/function.levenshtein.php http://www.php.net/manual/en/function.similar-text.php 我们来简单看一下使用这两个函数的效果。 echo levenshtein(“ubuntu”,”ubuntw”); &#160;&#160;&#160; echo “&#60;br&#62;”; &#160;&#160;&#160; echo levenshtein(“ubuntu”,”aubvntu”); &#160;&#160;&#160;&#160;&#160;&#160;&#160; echo “&#60;br&#62;”; &#160;&#160;&#160; echo levenshtein(“ubuntu”,”vbvntw”); &#160;&#160;&#160;&#160;&#160;&#160;&#160; echo “&#60;br&#62;”; &#160;&#160;&#160; echo levenshtein(“ubuntu”,”ubuntu”); 这段代码的输出是： 1 2 3 0 也就是说，对于levenshtein函数，两个字符相似度越高，其返回值越小，如果相等，则函数返回0。 再来看看similar_text函数 similar_text(“ubuntu”,”ubuntw”,$a); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; echo $a; &#160;&#160;&#160; echo “&#60;br&#62;”; &#160;&#160;&#160;&#160; similar_text(“ubuntu”,”aubvntu”,$a); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; echo $a; &#160;&#160;&#160;&#160;&#160;&#160;&#160; echo “&#60;br&#62;”; &#160;&#160;&#160;&#160; similar_text(“ubuntu”,”vbvntw”,$a); &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>相信你在使用Google或者Baidu搜索的时候，肯定碰到过他们的关键词提示。</p>
<p>对于搜索引擎来说，他们有一整套分词技术及完整的词库。而对于一般简单的PHP应用来说，做到这种完善的分词又是很困难的。<br />
其实php中有两个函数，可以近似的完成这样的功能。</p>
<p>这两个函数就是：levenshtein 和 similar_text<br />
以下分别是这两个函数的官方解释：<br />
<A href="http://www.php.net/manual/en/function.levenshtein.php">http://www.php.net/manual/en/function.levenshtein.php</A><br />
<A href="http://www.php.net/manual/en/function.similar-text.php">http://www.php.net/manual/en/function.similar-text.php</A></p>
<p>我们来简单看一下使用这两个函数的效果。</p>
<p>echo levenshtein(“ubuntu”,”ubuntw”);<br />
&nbsp;&nbsp;&nbsp; echo “&lt;br&gt;”;<br />
&nbsp;&nbsp;&nbsp; echo levenshtein(“ubuntu”,”aubvntu”);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo “&lt;br&gt;”;<br />
&nbsp;&nbsp;&nbsp; echo levenshtein(“ubuntu”,”vbvntw”);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo “&lt;br&gt;”;<br />
&nbsp;&nbsp;&nbsp; echo levenshtein(“ubuntu”,”ubuntu”);</p>
<p>这段代码的输出是：</p>
<p>1<br />
2<br />
3<br />
0</p>
<p>也就是说，对于levenshtein函数，两个字符相似度越高，其返回值越小，如果相等，则函数返回0。</p>
<p>再来看看similar_text函数</p>
<p>similar_text(“ubuntu”,”ubuntw”,$a);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo $a;<br />
&nbsp;&nbsp;&nbsp; echo “&lt;br&gt;”;<br />
&nbsp;&nbsp;&nbsp;&nbsp; similar_text(“ubuntu”,”aubvntu”,$a);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo $a;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo “&lt;br&gt;”;<br />
&nbsp;&nbsp;&nbsp;&nbsp; similar_text(“ubuntu”,”vbvntw”,$a);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo $a;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo “&lt;br&gt;”;<br />
&nbsp;&nbsp;&nbsp;&nbsp; similar_text(“ubuntu”,”ubuntu”,$a);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo $a;</p>
<p>代码输出：</p>
<p>83.333333333333<br />
76.923076923077<br />
50<br />
100</p>
<p>与levenshtein相反，similar_text则是相似度越高，其值越大，如果相等，则返回100。</p>
<p>了解了这两个函数的用法，我们可以通过这两个函数来达成类似最开始Google的那种效果了。当然还得有一些技术前提，<br />
比如在某些CMS中，像DedeCMS，它本身维护了一个关键词的数据表，这样我们在每次搜索的时候，可以使用上面两个<br />
函数对DedeCMS的关键词表进行逐一匹配，然后设定一个匹配限制，如果大于（小于）该值，则可以给出类似Google那样<br />
的提示了。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/levenshtein-similar_text/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>网站之MySQL 索引分析和优化</title>
		<link>http://www.kuigg.com/mysql-suoyin-fenxiyouhua</link>
		<comments>http://www.kuigg.com/mysql-suoyin-fenxiyouhua#comments</comments>
		<pubDate>Sun, 04 Jan 2009 01:43:03 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=98</guid>
		<description><![CDATA[&#160;　　一、什么是索引？ 　　索引用来快速地寻找那些具有特定值的记录，所有MySQL索引都以B-树的形式保存。如果没有索引，执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录，直至找到符合要求的记录。表里面的记录数量越多，这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引，MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录，通过索引查找记录至少要比顺序扫描记录快100倍。 　　 　　假设我们创建了一个名为people的表： 　　 　　CREATE TABLE people ( peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL ); 　　 　　然后，我们完全随机把1000个不同name值插入到people表。下图显示了people表所在数据文件的一小部分： 　　 　　可以看到，在数据文件中name列没有任何明确的次序。如果我们创建了name列的索引，MySQL将在索引中排序name列： 　　 　　对于索引中的每一项，MySQL在内部为它保存一个数据文件中实际记录所在位置的“指针”。因此，如果我们要查找name等于“Mike”记录的peopleid（SQL命令为“SELECT peopleid FROM people WHERE name=&#8217;Mike&#8217;;”），MySQL能够在name的索引中查找“Mike”值，然后直接转到数据文件中相应的行，准确地返回该行的peopleid（999）。在这个过程中，MySQL只需处理一个行就可以返回结果。如果没有“name”列的索引，MySQL要扫描数据文件中的所有记录，即1000个记录！显然，需要MySQL处理的记录数量越少，则它完成任务的速度就越快。 　　 　　二、索引的类型 　　MySQL提供多种索引类型供选择： 　　 　　普通索引 　　这是最基本的索引类型，而且它没有唯一性之类的限制。普通索引可以通过以下几种方式创建： 　　创建索引，例如CREATE INDEX &#60;索引的名字&#62; ON tablename (列的列表); 　　修改表，例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表); 　　创建表的时候指定索引，例如CREATE TABLE tablename ( [...], INDEX [索引的名字] [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;　　一、什么是索引？<br />
　　索引用来快速地寻找那些具有特定值的记录，所有MySQL索引都以B-树的形式保存。如果没有索引，执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录，直至找到符合要求的记录。表里面的记录数量越多，这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引，MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录，通过索引查找记录至少要比顺序扫描记录快100倍。<br />
　　<br />
　　假设我们创建了一个名为people的表：<br />
　　<br />
　　CREATE TABLE people ( peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL );<br />
　　<br />
　　然后，我们完全随机把1000个不同name值插入到people表。下图显示了people表所在数据文件的一小部分：<br />
　　<br />
　　可以看到，在数据文件中name列没有任何明确的次序。如果我们创建了name列的索引，MySQL将在索引中排序name列：<br />
　　<br />
　　对于索引中的每一项，MySQL在内部为它保存一个数据文件中实际记录所在位置的“指针”。因此，如果我们要查找name等于“Mike”记录的peopleid（SQL命令为“SELECT peopleid FROM people WHERE name=&#8217;Mike&#8217;;”），MySQL能够在name的索引中查找“Mike”值，然后直接转到数据文件中相应的行，准确地返回该行的peopleid（999）。在这个过程中，MySQL只需处理一个行就可以返回结果。如果没有“name”列的索引，MySQL要扫描数据文件中的所有记录，即1000个记录！显然，需要MySQL处理的记录数量越少，则它完成任务的速度就越快。<br />
　　<br />
　　二、索引的类型<br />
　　MySQL提供多种索引类型供选择：<br />
　　<br />
　　普通索引<br />
　　这是最基本的索引类型，而且它没有唯一性之类的限制。普通索引可以通过以下几种方式创建：<br />
　　创建索引，例如CREATE INDEX &lt;索引的名字&gt; ON tablename (列的列表);<br />
　　修改表，例如ALTER TABLE tablename ADD INDEX [索引的名字] (列的列表);<br />
　　创建表的时候指定索引，例如CREATE TABLE tablename ( [...], INDEX [索引的名字] (列的列表) );<br />
　　<br />
　　唯一性索引<br />
　　这种索引和前面的“普通索引”基本相同，但有一个区别：索引列的所有值都只能出现一次，即必须唯一。唯一性索引可以用以下几种方式创建：<br />
　　创建索引，例如CREATE UNIQUE INDEX &lt;索引的名字&gt; ON tablename (列的列表);<br />
　　修改表，例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);<br />
　　创建表的时候指定索引，例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );<br />
　　<br />
　　主键<br />
　　主键是一种唯一性索引，但它必须指定为“PRIMARY KEY”。如果你曾经用过AUTO_INCREMENT类型的列，你可能已经熟悉主键之类的概念了。主键一般在创建表的时候指定，例如“CREATE TABLE tablename ( [...], PRIMARY KEY (列的列表) ); ”。但是，我们也可以通过修改表的方式加入主键，例如“ALTER TABLE tablename ADD PRIMARY KEY (列的列表); ”。每个表只能有一个主键。<br />
　　<br />
　　全文索引<br />
　　MySQL从3.23.23版开始支持全文索引和全文检索。在MySQL中，全文索引的索引类型为FULLTEXT。全文索引可以在VARCHAR或者TEXT类型的列上创建。它可以通过CREATE TABLE命令创建，也可以通过ALTER TABLE或CREATE INDEX命令创建。对于大规模的数据集，通过ALTER TABLE（或者CREATE INDEX）命令创建全文索引要比把记录插入带有全文索引的空表更快。本文下面的讨论不再涉及全文索引，要了解更多信息，请参见MySQL documentation。<br />
　　<br />
　　三、单列索引与多列索引<br />
　　索引可以是单列索引，也可以是多列索引。下面我们通过具体的例子来说明这两种索引的区别。假设有这样一个people表：<br />
　　<br />
　　CREATE TABLE people ( peopleid SMALLINT NOT NULL AUTO_INCREMENT, firstname CHAR(50) NOT NULL, lastname CHAR(50) NOT NULL, age SMALLINT NOT NULL, townid SMALLINT NOT NULL, PRIMARY KEY (peopleid) );<br />
　　<br />
　　下面是我们插入到这个people表的数据：<br />
　　<br />
　　这个数据片段中有四个名字为“Mikes”的人（其中两个姓Sullivans，两个姓McConnells），有两个年龄为17岁的人，还有一个名字与众不同的Joe Smith。<br />
　　<br />
　　这个表的主要用途是根据指定的用户姓、名以及年龄返回相应的peopleid。例如，我们可能需要查找姓名为Mike Sullivan、年龄17岁用户的peopleid（SQL命令为SELECT peopleid FROM people WHERE firstname=&#8217;Mike&#8217; AND lastname=&#8217;Sullivan&#8217; AND age=17;）。由于我们不想让MySQL每次执行查询就去扫描整个表，这里需要考虑运用索引。&nbsp;<br />
&nbsp;<br />
　　首先，我们可以考虑在单个列上创建索引，比如firstname、lastname或者age列。如果我们创建firstname列的索引（ALTER TABLE people ADD INDEX firstname (firstname);），MySQL将通过这个索引迅速把搜索范围限制到那些firstname=&#8217;Mike&#8217;的记录，然后再在这个“中间结果集”上进行其他条件的搜索：它首先排除那些lastname不等于“Sullivan”的记录，然后排除那些age不等于17的记录。当记录满足所有搜索条件之后，MySQL就返回最终的搜索结果。<br />
　　<br />
　　由于建立了firstname列的索引，与执行表的完全扫描相比，MySQL的效率提高了很多，但我们要求MySQL扫描的记录数量仍旧远远超过了实际所需要的。虽然我们可以删除firstname列上的索引，再创建lastname或者age列的索引，但总地看来，不论在哪个列上创建索引搜索效率仍旧相似。<br />
　　<br />
　　为了提高搜索效率，我们需要考虑运用多列索引。如果为firstname、lastname和age这三个列创建一个多列索引，MySQL只需一次检索就能够找出正确的结果！下面是创建这个多列索引的SQL命令：<br />
　　<br />
　　ALTER TABLE people ADD INDEX fname_lname_age (firstname,lastname,age);<br />
　　<br />
　　由于索引文件以B-树格式保存，MySQL能够立即转到合适的firstname，然后再转到合适的lastname，最后转到合适的age。在没有扫描数据文件任何一个记录的情况下，MySQL就正确地找出了搜索的目标记录！<br />
　　<br />
　　那么，如果在firstname、lastname、age这三个列上分别创建单列索引，效果是否和创建一个firstname、lastname、age的多列索引一样呢？答案是否定的，两者完全不同。当我们执行查询的时候，MySQL只能使用一个索引。如果你有三个单列的索引，MySQL会试图选择一个限制最严格的索引。但是，即使是限制最严格的单列索引，它的限制能力也肯定远远低于firstname、lastname、age这三个列上的多列索引。<br />
　　<br />
　　四、最左前缀<br />
　　多列索引还有另外一个优点，它通过称为最左前缀（Leftmost Prefixing）的概念体现出来。继续考虑前面的例子，现在我们有一个firstname、lastname、age列上的多列索引，我们称这个索引为fname_lname_age。当搜索条件是以下各种列的组合时，MySQL将使用fname_lname_age索引：<br />
　　<br />
　　firstname，lastname，age<br />
　　firstname，lastname<br />
　　firstname<br />
　　从另一方面理解，它相当于我们创建了(firstname，lastname，age)、(firstname，lastname)以及(firstname)这些列组合上的索引。下面这些查询都能够使用这个fname_lname_age索引：<br />
　　<br />
　　SELECT peopleid FROM people WHERE firstname=&#8217;Mike&#8217; AND lastname=&#8217;Sullivan&#8217; AND age=&#8217;17&#8242;; SELECT peopleid FROM people WHERE firstname=&#8217;Mike&#8217; AND lastname=&#8217;Sullivan&#8217;; SELECT peopleid FROM people WHERE firstname=&#8217;Mike&#8217;; The following queries cannot use the index at all: SELECT peopleid FROM people WHERE lastname=&#8217;Sullivan&#8217;; SELECT peopleid FROM people WHERE age=&#8217;17&#8242;; SELECT peopleid FROM people WHERE lastname=&#8217;Sullivan&#8217; AND age=&#8217;17&#8242;;<br />
　　<br />
　　五、选择索引列<br />
　　在性能优化过程中，选择在哪些列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有两种类型的列：在WHERE子句中出现的列，在join子句中出现的列。请看下面这个查询：<br />
　　<br />
　　SELECT age ## 不使用索引<br />
　　FROM people WHERE firstname=&#8217;Mike&#8217; ## 考虑使用索引<br />
　　AND lastname=&#8217;Sullivan&#8217; ## 考虑使用索引<br />
　　<br />
　　这个查询与前面的查询略有不同，但仍属于简单查询。由于age是在SELECT部分被引用，MySQL不会用它来限制列选择操作。因此，对于这个查询来说，创建age列的索引没有什么必要。下面是一个更复杂的例子：<br />
　　<br />
　　SELECT people.age, ##不使用索引<br />
　　town.name ##不使用索引<br />
　　FROM people LEFT JOIN town ON<br />
　　people.townid=town.townid ##考虑使用索引<br />
　　WHERE firstname=&#8217;Mike&#8217; ##考虑使用索引<br />
　　AND lastname=&#8217;Sullivan&#8217; ##考虑使用索引<br />
　　<br />
　　与前面的例子一样，由于firstname和lastname出现在WHERE子句中，因此这两个列仍旧有创建索引的必要。除此之外，由于town表的townid列出现在join子句中，因此我们需要考虑创建该列的索引。<br />
　　<br />
　　那么，我们是否可以简单地认为应该索引WHERE子句和join子句中出现的每一个列呢？差不多如此，但并不完全。我们还必须考虑到对列进行比较的操作符类型。MySQL只有对以下操作符才使用索引：&lt;，&lt;=，=，&gt;，&gt;=，BETWEEN，IN，以及某些时候的LIKE。可以在LIKE操作中使用索引的情形是指另一个操作数不是以通配符（%或者_）开头的情形。例如，“SELECT peopleid FROM people WHERE firstname LIKE &#8216;Mich%&#8217;;”这个查询将使用索引，但“SELECT peopleid FROM people WHERE firstname LIKE &#8216;%ike&#8217;;”这个查询不会使用索引。　　六、分析索引效率<br />
　　现在我们已经知道了一些如何选择索引列的知识，但还无法判断哪一个最有效。MySQL提供了一个内建的SQL命令帮助我们完成这个任务，这就是EXPLAIN命令。EXPLAIN命令的一般语法是：EXPLAIN 。你可以在MySQL文档找到有关该命令的更多说明。下面是一个例子：<br />
　　<br />
　　EXPLAIN SELECT peopleid FROM people WHERE firstname=&#8217;Mike&#8217; AND lastname=&#8217;Sullivan&#8217; AND age=&#8217;17&#8242;;<br />
　　<br />
　　这个命令将返回下面这种分析结果：<br />
　　<br />
　　下面我们就来看看这个EXPLAIN分析结果的含义。<br />
　　<br />
　　<br />
　　table：这是表的名字。<br />
　　type：连接操作的类型。下面是MySQL文档关于ref连接类型的说明：<br />
　　<br />
　　“对于每一种与另一个表中记录的组合，MySQL将从当前的表读取所有带有匹配索引值的记录。如果连接操作只使用键的最左前缀，或者如果键不是UNIQUE或PRIMARY KEY类型（换句话说，如果连接操作不能根据键值选择出唯一行），则MySQL使用ref连接类型。如果连接操作所用的键只匹配少量的记录，则ref是一种好的连接类型。”<br />
　　<br />
　　在本例中，由于索引不是UNIQUE类型，ref是我们能够得到的最好连接类型。<br />
　　<br />
　　如果EXPLAIN显示连接类型是“ALL”，而且你并不想从表里面选择出大多数记录，那么MySQL的操作效率将非常低，因为它要扫描整个表。你可以加入更多的索引来解决这个问题。预知更多信息，请参见MySQL的手册说明。<br />
　　<br />
　　possible_keys：<br />
　　可能可以利用的索引的名字。这里的索引名字是创建索引时指定的索引昵称；如果索引没有昵称，则默认显示的是索引中第一个列的名字（在本例中，它是“firstname”）。默认索引名字的含义往往不是很明显。<br />
　　<br />
　　Key：<br />
　　它显示了MySQL实际使用的索引的名字。如果它为空（或NULL），则MySQL不使用索引。<br />
　　<br />
　　key_len：<br />
　　索引中被使用部分的长度，以字节计。在本例中，key_len是102，其中firstname占50字节，lastname占50字节，age占2字节。如果MySQL只使用索引中的firstname部分，则key_len将是50。<br />
　　<br />
　　ref：<br />
　　它显示的是列的名字（或单词“const”），MySQL将根据这些列来选择行。在本例中，MySQL根据三个常量选择行。<br />
　　<br />
　　rows：<br />
　　MySQL所认为的它在找到正确的结果之前必须扫描的记录数。显然，这里最理想的数字就是1。<br />
　　<br />
　　Extra：<br />
　　这里可能出现许多不同的选项，其中大多数将对查询产生负面影响。在本例中，MySQL只是提醒我们它将用WHERE子句限制搜索结果集。<br />
　　<br />
　　七、索引的缺点<br />
　　到目前为止，我们讨论的都是索引的优点。事实上，索引也是有缺点的。<br />
　　<br />
　　首先，索引要占用磁盘空间。通常情况下，这个问题不是很突出。但是，如果你创建每一种可能列组合的索引，索引文件体积的增长速度将远远超过数据文件。如果你有一个很大的表，索引文件的大小可能达到操作系统允许的最大文件限制。<br />
　　<br />
　　第二，对于需要写入数据的操作，比如DELETE、UPDATE以及INSERT操作，索引会降低它们的速度。这是因为MySQL不仅要把改动数据写入数据文件，而且它还要把这些改动写入索引文件。<br />
　　<br />
　　【结束语】在大型数据库中，索引是提高速度的一个关键因素。不管表的结构是多么简单，一次500000行的表扫描操作无论如何不会快。如果你的网站上也有这种大规模的表，那么你确实应该花些时间去分析可以采用哪些索引，并考虑是否可以改写查询以优化应用。要了解更多信息，请参见MySQL manual。另外注意，本文假定你所使用的MySQL是3.23版，部分查询不能在3.22版MySQL上执行。<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/mysql-suoyin-fenxiyouhua/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MYSQL列类型选择与MYSQL查询效率</title>
		<link>http://www.kuigg.com/mysql-leixing-xiaolv</link>
		<comments>http://www.kuigg.com/mysql-leixing-xiaolv#comments</comments>
		<pubDate>Sun, 04 Jan 2009 01:29:50 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=97</guid>
		<description><![CDATA[要选择有助于使查询执行更快的列，应遵循如下规则（这里，“BLOB 类型”应该理解为即包含B L O B也包含TEXT 类型）： &#160;&#160; ■ 使用定长列，不使用可变长列。这条准则对被经常修改，从而容易产生碎片的表来说特别重要。例如，应该选择CHAR 列而不选择VARCHAR 列。所要权衡的是使用定长列时，表所占用的空间更多，但如果能够承担这种空间的耗费，使用定长行将比使用可变长的行处理快得多。 &#160;&#160; ■ 在较短的列能够满足要求时不要使用较长的列。如果正使用的是定长的CHAR 列，应该使它们尽量短。如果列中所存储的最长值为40 个字符，那么就不要将其定义为CHAR ( 2 5 5 )；只要定义为CHAR(40) 即可。如果能够使用MEDIUMINT 而不是BIGINT，表将会更小（磁盘I/O 也较少），其值在计算中也可以处理得更快。 &#160;&#160; ■ 将列定义为NOT NULL。这样处理更快，所需空间更少。而且有时还能简化查询，因为不需要检查是否存在特例NULL。 &#160;&#160; ■ 考虑使用ENUM 列。如果有一个只含有限数目的特定值的列，那么应该考虑将其转换为ENUM 列。ENUM 列的值可以更快地处理，因为它们在内部是以数值表示的。 &#160;&#160; ■ 使用PROCEDURE ANALYSE( )。如果使用的是MySQL3.23 或更新的版本，应该执行PROCEDURE ANALYSE( )，查看它所提供的关于表中列的信息： &#160;&#160;&#160; 相应输出中有一列是关于表中每列的最佳列类型的建议。第二个例子要求PROCEDURE ANALYSE( ) 不要建议含有多于16 个值或取多于256 字节的ENUM 类型（可根据需要更改这些值）。如果没有这样的限制，输出可能会很长；ENUM 的定义也会很难阅读。根据PROCEDURE ANALYSE( ) 的输出，会发现可以对表进行更改以利用更有效的类型。如果希望更改值类型，使用ALTER TABLE [...]]]></description>
			<content:encoded><![CDATA[<p>要选择有助于使查询执行更快的列，应遵循如下规则（这里，“BLOB 类型”应该理解为即包含B L O B也包含TEXT 类型）：</p>
<p>&nbsp;&nbsp; ■ 使用定长列，不使用可变长列。这条准则对被经常修改，从而容易产生碎片的表来说特别重要。例如，应该选择CHAR 列而不选择VARCHAR 列。所要权衡的是使用定长列时，表所占用的空间更多，但如果能够承担这种空间的耗费，使用定长行将比使用可变长的行处理快得多。</p>
<p>&nbsp;&nbsp; ■ 在较短的列能够满足要求时不要使用较长的列。如果正使用的是定长的CHAR 列，应该使它们尽量短。如果列中所存储的最长值为40 个字符，那么就不要将其定义为CHAR ( 2 5 5 )；只要定义为CHAR(40) 即可。如果能够使用MEDIUMINT 而不是BIGINT，表将会更小（磁盘I/O 也较少），其值在计算中也可以处理得更快。</p>
<p>&nbsp;&nbsp; ■ 将列定义为NOT NULL。这样处理更快，所需空间更少。而且有时还能简化查询，因为不需要检查是否存在特例NULL。</p>
<p>&nbsp;&nbsp; ■ 考虑使用ENUM 列。如果有一个只含有限数目的特定值的列，那么应该考虑将其转换为ENUM 列。ENUM 列的值可以更快地处理，因为它们在内部是以数值表示的。</p>
<p>&nbsp;&nbsp; ■ 使用PROCEDURE ANALYSE( )。如果使用的是MySQL3.23 或更新的版本，应该执行PROCEDURE ANALYSE( )，查看它所提供的关于表中列的信息：</p>
<p>&nbsp;&nbsp;&nbsp; 相应输出中有一列是关于表中每列的最佳列类型的建议。第二个例子要求PROCEDURE ANALYSE( ) 不要建议含有多于16 个值或取多于256 字节的ENUM 类型（可根据需要更改这些值）。如果没有这样的限制，输出可能会很长；ENUM 的定义也会很难阅读。根据PROCEDURE ANALYSE( ) 的输出，会发现可以对表进行更改以利用更有效的类型。如果希望更改值类型，使用ALTER TABLE 语句即可。</p>
<p>&nbsp;&nbsp;&nbsp; ■ 将数据装入B L O B。用BLOB 存储应用程序中包装或未包装的数据，有可能使原来需要几个检索操作才能完成的数据检索得以在单个检索操作中完成。而且还对存储标准表结构不易表示的数据或随时间变化的数据有帮助。在第3 章ALTER TABLE 语句的介绍中，有一个例子处理存储来自Web 问卷的结果的表。该例子中讨论了在问卷中增加问题时，怎样利用ALTER TABLE 向该表追加列。</p>
<p>&nbsp;&nbsp;&nbsp; 解决该问题的另一个方法是让处理Web 的应用程序将数据包装成某种数据结构，然后将其插入单个BLOB 列。这样会增加应用程序对数据进行解码的开销（而且从表中检索出记录后要对其进行编码），但是简化了表的结构，并且不用在更改问卷时对表进行更改。另一方面， BLOB 值也有自己的固有问题，特别是在进行大量的DELETE 或UPDATE 操作时更是如此。删除BLOB 会在表中留下一个大空白，在以后将需用一个记录或可能是不同大小的多个记录来填充。</p>
<p>&nbsp;&nbsp;&nbsp; ■ 对容易产生碎片的表使用OPTIMIZE TABLE。大量进行修改的表，特别是那些含有可变长列的表，容易产生碎片。碎片不好，因为它在存储表的磁盘块中产生不使用的空间。随着时间的增长，必须读取更多的块才能取到有效的行，从而降低了性能。任意具有可变长行的表都存在这个问题，但这个问题对BLOB 列更为突出，因为它们尺寸的变化非常大。经常使用OPTIMIZE TABLE 有助于保持性能不下降。</p>
<p>&nbsp;&nbsp;&nbsp; ■ 使用合成索引。合成索引列有时很有用。一种技术是根据其他列建立一个散列值，并将其存储在一个独立的列中，然后可通过搜索散列值找到行。这只对精确匹配的查询有效。（散列值对具有诸如“ &lt;”或“ &gt; =”这样的操作符的范围搜索没有用处）。在MySQL3.23版及以上版本中，散列值可利用MD5( ) 函数产生。散列索引对BLOB 列特别有用。有一事要注意，在MySQL3.23.2 以前的版本中，不能索引BLOB 类型。甚至是在3.23.2 或更新的版本中，利用散列值作为标识值来查找BLOB 值也比搜索BLOB 列本身更快。</p>
<p>&nbsp;&nbsp;&nbsp; ■ 除非有必要，否则应避免检索较大的BLOB 或TEXT 值。例如，除非肯定WHERE 子句能够将结果恰好限制在所想要的行上，否则SELECT * 查询不是一个好办法。这样做可能会将非常大的BLOB 值无目的地从网络上拖过来。这是存储在另一列中的BLOB 标识信息很有用的另一种情形。可以搜索该列以确定想要的行，然后从限定的行中检索BLOB 值。</p>
<p>&nbsp;&nbsp;&nbsp; ■ 将BLOB 值隔离在一个独立的表中。在某些情况下，将BLOB 列从表中移出放入另一个副表可能具有一定的意义，条件是移出BLOB 列后可将表转换为定长行格式。这样会减少主表中的碎片，而且能利用定长行的性能优势。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/mysql-leixing-xiaolv/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP function : preg_match_all</title>
		<link>http://www.kuigg.com/preg_match_all</link>
		<comments>http://www.kuigg.com/preg_match_all#comments</comments>
		<pubDate>Wed, 24 Dec 2008 13:54:31 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=92</guid>
		<description><![CDATA[&#60;?php &#160; /* preg_match_all &#8211; Perform a global regular expression match. int preg_match_all (string $pattern , string $subject , array &#38;$matches [ , int $flags [ , int $offset]]) Search $subject for all matches to the regular expression given in $pattern and put them in $matches in the order specified by $flags. After the first [...]]]></description>
			<content:encoded><![CDATA[<p>&lt;?php<br />
&nbsp;<br />
/*</p>
<p>preg_match_all &#8211; Perform a global regular expression match.</p>
<p>int preg_match_all (string $pattern , string $subject , array &amp;$matches [ , int $flags [ , int $offset]])<br />
Search $subject for all matches to the regular expression given in $pattern and put them in $matches in the order specified by $flags.<br />
After the first match is found , the subsequent searches are continue on from the end of the last match.</p>
<p>parameters:<br />
$pattern : The pattern to search for , as a string.<br />
$subject : The input string.<br />
$matches : Array of all matches in muti-dimensional array ordered according to $flags.<br />
$flags : Can be combination of following flags (note that it doesn&#8217;t make sense to use PREG_PATTERN_ORDER together with PREG_SET_ORDER):<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PREG_PATTERN_ORDER: Orders result so that $matches[0] is an array of full pattern matches , $matches[1] is an array of strings matched by the first parenthesized subpattern , and so on.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If no order flag is given , PREG_PATTERN_ORDER is assummed.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PREG_SET_ORDER: Orders result so that $matches[0] is an array of first set of matches , $matches[1] is an array of second set of matches , and so on.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PREG_OFFSET_CAPTURE: If this flag is passed , for every occurring match the appendant string offset will also be returned. Note that this changes the value of $matches in an array where every element is an array consisting of the matched string at offset 0 and its string offset into $subject at offset 1.</p>
<p>$offset : Normally , the search start from the beginning of the $subject string. The optional parameter $offset can be used to specify the alternate place from which to start the search (in bytes).</p>
<p>return:<br />
Return the number of full pattern matches (which might be zero) , or FALSE if an erro occrred.</p>
<p>*/&nbsp;</p>
<p>&nbsp;</p>
<p>$str = &#8216;&lt;b&gt;yes&lt;/b&gt; &lt;strong&gt;no&lt;/strong&gt;&lt;br /&gt; &lt;a href=”<A href="http://kuigg.com/">http://kuigg.com</A>“&gt;&nbsp;kuigg &lt;/a&gt;&#8217;;<br />
$reg = &#8216;/&lt;\s*(\w+)[^&gt;]*&gt;(.*)&lt;\s*\/\s*\1\s*&gt;/&#8217;;<br />
preg_match_all ($reg , $str , $arr , PREG_SET_ORDER);<br />
var_dump ($arr);<br />
&nbsp;<br />
&nbsp;echo &#8216;&lt;br /&gt;<br />
&nbsp;&#8217;;<br />
&nbsp;<br />
preg_match_all ($reg , $str , $arr , PREG_PATTERN_ORDER);<br />
var_dump ($arr);</p>
<p>&nbsp;</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/preg_match_all/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php正则表达式专题</title>
		<link>http://www.kuigg.com/php-zhengze</link>
		<comments>http://www.kuigg.com/php-zhengze#comments</comments>
		<pubDate>Sat, 23 Feb 2008 16:35:28 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=79</guid>
		<description><![CDATA[一个正则表达式就是由普通字符（例如字符 a 到 z）以及特殊字符（称为元字符）组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。 这里有一些可能会遇到的正则表达式示例： Visual Basic Scripting Edition VBScript 匹配 /^\[ \t]*$/ “^\[ \t]*$” 匹配一个空白行。 /\d{2}-\d{5}/ “\d{2}-\d{5}” 验证一个ID 号码是否由一个2位数字，一个连字符以及一个5位数字组成。 /&#60;(.*)&#62;.*&#60;\/\1&#62;/ “&#60;(.*)&#62;.*&#60;\/\1&#62;” 匹配一个 HTML 标记。 下表是元字符及其在正则表达式上下文中的行为的一个完整列表： 字符 描述 \ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如，&#8217;n&#8217; 匹配字符 “n”。&#8217;\n&#8217; 匹配一个换行符。序列 &#8216;\\&#8217; 匹配 “\” 而 “\(” 则匹配 “(“。 ^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性，^ 也匹配 &#8216;\n&#8217; 或 &#8216;\r&#8217; 之后的位置。 $ 匹配输入字符串的结束位置。如果设置了RegExp 对象的 [...]]]></description>
			<content:encoded><![CDATA[<p>一个正则表达式就是由普通字符（例如字符 a 到 z）以及特殊字符（称为元字符）组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。<br />
这里有一些可能会遇到的正则表达式示例：<br />
Visual Basic Scripting Edition<br />
VBScript<br />
匹配<br />
/^\[ \t]*$/<br />
“^\[ \t]*$”<br />
匹配一个空白行。<br />
/\d{2}-\d{5}/<br />
“\d{2}-\d{5}”<br />
验证一个ID 号码是否由一个2位数字，一个连字符以及一个5位数字组成。<br />
/&lt;(.*)&gt;.*&lt;\/\1&gt;/<br />
“&lt;(.*)&gt;.*&lt;\/\1&gt;”<br />
匹配一个 HTML 标记。<br />
下表是元字符及其在正则表达式上下文中的行为的一个完整列表：<br />
字符<br />
描述<br />
\<br />
将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如，&#8217;n&#8217; 匹配字符 “n”。&#8217;\n&#8217; 匹配一个换行符。序列 &#8216;\\&#8217; 匹配 “\” 而 “\(” 则匹配 “(“。<br />
^<br />
匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性，^ 也匹配 &#8216;\n&#8217; 或 &#8216;\r&#8217; 之后的位置。<br />
$<br />
匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性，$ 也匹配 &#8216;\n&#8217; 或 &#8216;\r&#8217; 之前的位置。<br />
*<br />
匹配前面的子表达式零次或多次。例如，zo* 能匹配 “z” 以及 “zoo”。 * 等价于{0,}。<br />
+<br />
匹配前面的子表达式一次或多次。例如，&#8217;zo+&#8217; 能匹配 “zo” 以及 “zoo”，但不能匹配 “z”。+ 等价于 {1,}。<br />
?<br />
匹配前面的子表达式零次或一次。例如，”do(es)?” 可以匹配 “do” 或 “does” 中的”do” 。? 等价于 {0,1}。<br />
{n}<br />
n 是一个非负整数。匹配确定的 n 次。例如，&#8217;o{2}&#8217; 不能匹配 “Bob” 中的 &#8216;o&#8217;，但是能匹配 “food” 中的两个 o。<br />
{n,}<br />
n 是一个非负整数。至少匹配n 次。例如，&#8217;o{2,}&#8217; 不能匹配 “Bob” 中的 &#8216;o&#8217;，但能匹配 “foooood” 中的所有 o。&#8217;o{1,}&#8217; 等价于 &#8216;o+&#8217;。&#8217;o{0,}&#8217; 则等价于 &#8216;o*&#8217;。<br />
{n,m}<br />
m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。 “o{1,3}” 将匹配 “fooooood” 中的前三个 o。&#8217;o{0,1}&#8217; 等价于 &#8216;o?&#8217;。请注意在逗号和两个数之间不能有空格。<br />
?<br />
当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串 “oooo”，&#8217;o+?&#8217; 将匹配单个 “o”，而 &#8216;o+&#8217; 将匹配所有 &#8216;o&#8217;。<br />
.<br />
匹配除 “\n” 之外的任何单个字符。要匹配包括 &#8216;\n&#8217; 在内的任何字符，请使用象 &#8216;[.\n]&#8216; 的模式。<br />
(pattern)<br />
匹配pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到，在VBScript 中使用 SubMatches 集合，在Visual Basic Scripting Edition 中则使用 $0…$9 属性。要匹配圆括号字符，请使用 &#8216;\(&#8216; 或 &#8216;\)&#8217;。<br />
(?:pattern)<br />
匹配 pattern 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 “或” 字符 (|) 来组合一个模式的各个部分是很有用。例如， &#8216;industr(?:y|ies) 就是一个比 &#8216;industry|industries&#8217; 更简略的表达式。<br />
(?=pattern)<br />
正向预查，在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如， &#8216;Windows (?=95|98|NT|2000)&#8217; 能匹配 “Windows 2000&#8243; 中的 “Windows” ，但不能匹配 “Windows 3.1&#8243; 中的 “Windows”。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。<br />
(?!pattern)<br />
负向预查，在任何不匹配Negative lookahead matches the search string at any point where a string not matching pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如&#8217;Windows (?!95|98|NT|2000)&#8217; 能匹配 “Windows 3.1&#8243; 中的 “Windows”，但不能匹配 “Windows 2000&#8243; 中的 “Windows”。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始<br />
x|y<br />
匹配 x 或 y。例如，&#8217;z|food&#8217; 能匹配 “z” 或 “food”。&#8217;(z|f)ood&#8217; 则匹配 “zood” 或 “food”。<br />
[[I]xyz[/I]]<br />
字符集合。匹配所包含的任意一个字符。例如， &#8216;[abc]&#8216; 可以匹配 “plain” 中的 &#8216;a&#8217;。<br />
[^[I]xyz[/I]]<br />
负值字符集合。匹配未包含的任意字符。例如， &#8216;[^abc]&#8216; 可以匹配 “plain” 中的&#8217;p'。<br />
[[I]a-z[/I]]<br />
字符范围。匹配指定范围内的任意字符。例如，&#8217;[a-z]&#8216; 可以匹配 &#8216;a&#8217; 到 &#8216;z&#8217; 范围内的任意小写字母字符。<br />
[^[I]a-z[/I]]<br />
负值字符范围。匹配任何不在指定范围内的任意字符。例如，&#8217;[^a-z]&#8216; 可以匹配任何不在 &#8216;a&#8217; 到 &#8216;z&#8217; 范围内的任意字符。<br />
\b<br />
匹配一个单词边界，也就是指单词和空格间的位置。例如， &#8216;er\b&#8217; 可以匹配”never” 中的 &#8216;er&#8217;，但不能匹配 “verb” 中的 &#8216;er&#8217;。<br />
\B<br />
匹配非单词边界。&#8217;er\B&#8217; 能匹配 “verb” 中的 &#8216;er&#8217;，但不能匹配 “never” 中的 &#8216;er&#8217;。<br />
\cx<br />
匹配由x指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。 x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 &#8216;c&#8217; 字符。<br />
\d<br />
匹配一个数字字符。等价于 [0-9]。<br />
\D<br />
匹配一个非数字字符。等价于 [^0-9]。<br />
\f<br />
匹配一个换页符。等价于 \x0c 和 \cL。<br />
\n<br />
匹配一个换行符。等价于 \x0a 和 \cJ。<br />
\r<br />
匹配一个回车符。等价于 \x0d 和 \cM。<br />
\s<br />
匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。<br />
\S<br />
匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。<br />
\t<br />
匹配一个制表符。等价于 \x09 和 \cI。<br />
\v<br />
匹配一个垂直制表符。等价于 \x0b 和 \cK。<br />
\w<br />
匹配包括下划线的任何单词字符。等价于&#8217;[A-Za-z0-9_]&#8216;。<br />
\W<br />
匹配任何非单词字符。等价于 &#8216;[^A-Za-z0-9_]&#8216;。<br />
\xn<br />
匹配 n，其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如， &#8216;\x41&#8242; 匹配 “A”。&#8217;\x041&#8242; 则等价于 &#8216;\x04&#8242; &amp; “1&#8243;。正则表达式中可以使用 ASCII 编码。.<br />
\num<br />
匹配 num，其中 num 是一个正整数。对所获取的匹配的引用。例如，&#8217;(.)\1&#8242; 匹配两个连续的相同字符。<br />
\n<br />
标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式，则 n 为后向引用。否则，如果 n 为八进制数字 (0-7)，则 n 为一个八进制转义值。<br />
\nm<br />
标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式，则 nm 为后向引用。如果 \nm 之前至少有 n 个获取，则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足，若&nbsp; n 和 m 均为八进制数字 (0-7)，则 \nm 将匹配八进制转义值 nm。<br />
\nml<br />
如果 n 为八进制数字 (0-3)，且 m 和 l 均为八进制数字 (0-7)，则匹配八进制转义值 nml。<br />
\un<br />
匹配 n，其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如， \u00A9 匹配版权符号 (?)。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/php-zhengze/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>优化PHP代码的40条建议</title>
		<link>http://www.kuigg.com/php-youhua</link>
		<comments>http://www.kuigg.com/php-youhua#comments</comments>
		<pubDate>Sat, 23 Feb 2008 16:27:43 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=78</guid>
		<description><![CDATA[优化PHP代码的40条建议 40 Tips for optimizing your php Code 原文地址：http://reinholdweber.com/?p=3 英文版权归Reinhold Weber所有，中译文作者yangyang（aka davidkoree）。双语版可用于非商业传播，但须注明英文版作者、版权信息，以及中译文作者。翻译水平有限，请广大PHPer指正。 1.&#160;&#160;&#160; If a method can be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化，就对它做静态声明。速率可提升至4倍。 2.&#160;&#160;&#160; echo is faster than print. echo 比 print 快。 3.&#160;&#160;&#160; Use echo’s multiple parameters instead of string concatenation. 使用echo的多重参数（译注：指用逗号而不是句点）代替字符串连接。 4.&#160;&#160;&#160; Set the maxvalue [...]]]></description>
			<content:encoded><![CDATA[<p>优化PHP代码的40条建议</p>
<p>40 Tips for optimizing your php Code</p>
<p>原文地址：<A href="http://reinholdweber.com/?p=3">http://reinholdweber.com/?p=3</A></p>
<p>英文版权归Reinhold Weber所有，中译文作者yangyang（aka davidkoree）。双语版可用于非商业传播，但须注明英文版作者、版权信息，以及中译文作者。翻译水平有限，请广大PHPer指正。</p>
<p>1.&nbsp;&nbsp;&nbsp; If a method can be static, declare it static. Speed improvement is by a factor of 4. 如果一个方法可静态化，就对它做静态声明。速率可提升至4倍。</p>
<p>2.&nbsp;&nbsp;&nbsp; echo is faster than print. echo 比 print 快。</p>
<p>3.&nbsp;&nbsp;&nbsp; Use echo’s multiple parameters instead of string concatenation. 使用echo的多重参数（译注：指用逗号而不是句点）代替字符串连接。</p>
<p>4.&nbsp;&nbsp;&nbsp; Set the maxvalue for your for-loops before and not in the loop. 在执行for循环之前确定最大循环数，不要每循环一次都计算最大值。</p>
<p>5.&nbsp;&nbsp;&nbsp; Unset your variables to free memory, especially large arrays. 注销那些不用的变量尤其是大数组，以便释放内存。</p>
<p>6.&nbsp;&nbsp;&nbsp; Avoid magic like __get, __set, __autoload 尽量避免使用__get，__set，__autoload。</p>
<p>7.&nbsp;&nbsp;&nbsp; require_once() is expensive require_once()代价昂贵。</p>
<p>8.&nbsp;&nbsp;&nbsp; Use full paths in includes and requires, less time spent on resolving the OS paths. 在包含文件时使用完整路径，解析操作系统路径所需的时间会更少。</p>
<p>9.&nbsp;&nbsp;&nbsp; If you need to find out the time when the script started executing, $_SERVER[’REQUEST_TIME’] is preferred to time() 如果你想知道脚本开始执行（译注：即服务器端收到客户端请求）的时刻，使用$_SERVER[‘REQUEST_TIME’]要好于time()。</p>
<p>10.&nbsp;&nbsp;&nbsp; See if you can use strncasecmp, strpbrk and stripos instead of regex. 检查是否能用strncasecmp，strpbrk，stripos函数代替正则表达式完成相同功能。</p>
<p>11.&nbsp;&nbsp;&nbsp; str_replace is faster than preg_replace, but strtr is faster than str_replace by a factor of 4. str_replace函数比preg_replace函数快，但strtr函数的效率是str_replace函数的四倍。</p>
<p>12.&nbsp;&nbsp;&nbsp; If the function, such as string replacement function, accepts both arrays and single characters as arguments, and if your argument list is not too long, consider writing a few redundant replacement statements, passing one character at a time, instead of one line of code that accepts arrays as search and replace arguments. 如果一个字符串替换函数，可接受数组或字符作为参数，并且参数长度不太长，那么可以考虑额外写一段替换代码，使得每次传递参数是一个字符，而不是只写一行代码接受数组作为查询和替换的参数。</p>
<p>13.&nbsp;&nbsp;&nbsp; It’s better to use select statements than multi if, else if, statements. 使用选择分支语句（译注：即switch case）好于使用多个if，else if语句。</p>
<p>14.&nbsp;&nbsp;&nbsp; Error suppression with @ is very slow. 用@屏蔽错误消息的做法非常低效。</p>
<p>15.&nbsp;&nbsp;&nbsp; Turn on apache’s mod_deflate 打开apache的mod_deflate模块。</p>
<p>16.&nbsp;&nbsp;&nbsp; Close your database connections when you’re done with them. 数据库连接当使用完毕时应关掉。</p>
<p>17.&nbsp;&nbsp;&nbsp; $row[’id’] is 7 times faster than $row[id]. $row[‘id’]的效率是$row[id]的7倍。</p>
<p>18.&nbsp;&nbsp;&nbsp; Error messages are expensive. 错误消息代价昂贵。</p>
<p>19.&nbsp;&nbsp;&nbsp; Do not use functions inside of for loop, such as for ($x=0; $x &lt; count($array); $x) The count() function gets called each time. 尽量不要在for循环中使用函数，比如for ($x=0; $x &lt; count($array); $x)每循环一次都会调用count()函数。</p>
<p>20.&nbsp;&nbsp;&nbsp; Incrementing a local variable in a method is the fastest. Nearly the same as calling a local variable in a function. 在方法中递增局部变量，速度是最快的。几乎与在函数中调用局部变量的速度相当。</p>
<p>21.&nbsp;&nbsp;&nbsp; Incrementing a global variable is 2 times slow than a local var. 递增一个全局变量要比递增一个局部变量慢2倍。</p>
<p>22.&nbsp;&nbsp;&nbsp; Incrementing an object property (eg. $this-&gt;prop++) is 3 times slower than a local variable. 递增一个对象属性（如：$this-&gt;prop++）要比递增一个局部变量慢3倍。</p>
<p>23.&nbsp;&nbsp;&nbsp; Incrementing an undefined local variable is 9-10 times slower than a pre-initialized one. 递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。</p>
<p>24.&nbsp;&nbsp;&nbsp; Just declaring a global variable without using it in a function also slows things down (by about the same amount as incrementing a local var). PHP probably does a check to see if the global exists. 仅定义一个局部变量而没在函数中调用它，同样会减慢速度（其程度相当于递增一个局部变量）。PHP大概会检查看是否存在全局变量。</p>
<p>25.&nbsp;&nbsp;&nbsp; Method invocation appears to be independent of the number of methods defined in the class because I added 10 more methods to the test class (before and after the test method) with no change in performance. 方法调用看来与类中定义的方法的数量无关，因为我（在测试方法之前和之后都）添加了10个方法，但性能上没有变化。</p>
<p>26.&nbsp;&nbsp;&nbsp; Methods in derived classes run faster than ones defined in the base class. 派生类中的方法运行起来要快于在基类中定义的同样的方法。</p>
<p>27.&nbsp;&nbsp;&nbsp; A function call with one parameter and an empty function body takes about the same time as doing 7-8 $localvar++ operations. A similar method call is of course about 15 $localvar++ operations. 调用带有一个参数的空函数，其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。</p>
<p>28.&nbsp;&nbsp;&nbsp; Surrounding your string by ‘ instead of ” will make things interpret a little faster since php looks for variables inside “…” but not inside ‘…’. Of course you can only do this when you don’t need to have variables in the string. 用单引号代替双引号来包含字符串，这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量，单引号则不会。当然，只有当你不需要在字符串中包含变量时才可以这么做。</p>
<p>29.&nbsp;&nbsp;&nbsp; When echoing strings it’s faster to separate them by comma instead of dot. Note: This only works with echo, which is a function that can take several strings as arguments. 输出多个字符串时，用逗号代替句点来分隔字符串，速度更快。注意：只有echo能这么做，它是一种可以把多个字符串当作参数的“函数”（译注：PHP手册中说echo是语言结构，不是真正的函数，故把函数加上了双引号）。</p>
<p>30.&nbsp;&nbsp;&nbsp; A PHP script will be served at least 2-10 times slower than a static HTML page by Apache. Try to use more static HTML pages and fewer scripts. Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面，少用脚本。</p>
<p>31.&nbsp;&nbsp;&nbsp; Your PHP scripts are recompiled every time unless the scripts are cached. Install a PHP caching product to typically increase performance by 25-100% by removing compile times. 除非脚本可以缓存，否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能，以免除编译开销。</p>
<p>32.&nbsp;&nbsp;&nbsp; Cache as much as possible. Use memcached &#8211; memcached is a high-performance memory object caching system intended to speed up dynamic web applications by alleviating database load. OP code caches are useful so that your script does not have to be compiled on every request. 尽量做缓存，可使用memcached。memcached是一款高性能的内存对象缓存系统，可用来加速动态Web应用程序，减轻数据库负载。对运算码(OP code)的缓存很有用，使得脚本不必为每个请求做重新编译。</p>
<p>33.&nbsp;&nbsp;&nbsp; When working with strings and you need to check that the string is either of a certain length you’d understandably would want to use the strlen() function. This function is pretty quick since it’s operation does not perform any calculation but merely return the already known length of a string available in the zval structure (internal C struct used to store variables in PHP). However because strlen() is a function it is still somewhat slow because the function call requires several operations such as lowercase &amp; hashtable lookup followed by the execution of said function. In some instance you can improve the speed of your code by using an isset() trick. 当操作字符串并需要检验其长度是否满足某种要求时，你想当然地会使用strlen()函数。此函数执行起来相当快，因为它不做任何计算，只返回在zval结构（C的内置数据结构，用于存储PHP变量）中存储的已知字符串长度。但是，由于strlen()是函数，多多少少会有些慢，因为函数调用会经过诸多步骤，如字母小写化（译注：指函数名小写化，PHP不区分函数名大小写）、哈希查找，会跟随被调用的函数一起执行。在某些情况下，你可以使用isset()技巧加速执行你的代码。</p>
<p>Ex.（举例如下）</p>
<p>if (strlen($foo) &lt; 5) { echo “Foo is too short”; }</p>
<p>vs.（与下面的技巧做比较）</p>
<p>if (!isset($foo{5})) { echo “Foo is too short”; }</p>
<p>Calling isset() happens to be faster then strlen() because unlike strlen(), isset() is a language construct and not a function meaning that it’s execution does not require function lookups and lowercase. This means you have virtually no overhead on top of the actual code that determines the string’s length. 调用isset()恰巧比strlen()快，因为与后者不同的是，isset()作为一种语言结构，意味着它的执行不需要函数查找和字母小写化。也就是说，实际上在检验字符串长度的顶层代码中你没有花太多开销。</p>
<p>34.&nbsp;&nbsp;&nbsp; When incrementing or decrementing the value of the variable $i++ happens to be a tad slower then ++$i. This is something PHP specific and does not apply to other languages, so don’t go modifying your C or Java code thinking it’ll suddenly become faster, it won’t. ++$i happens to be faster in PHP because instead of 4 opcodes used for $i++ you only need 3. Post incrementation actually causes in the creation of a temporary var that is then incremented. While pre-incrementation increases the original value directly. This is one of the optimization that opcode optimized like Zend’s PHP optimizer. It is still a good idea to keep in mind since not all opcode optimizers perform this optimization and there are plenty of ISPs and servers running without an opcode optimizer. 当执行变量$i的递增或递减时，$i++会比++$i慢一些。这种差异是PHP特有的，并不适用于其他语言，所以请不要修改你的C或Java代码并指望它们能立即变快，没用的。++$i更快是因为它只需要3条指令(opcodes)，$i++则需要4条指令。后置递增实际上会产生一个临时变量，这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种，正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为一个好主意，因为并不是所有的指令优化器都会做同样的优化处理，并且存在大量没有装配指令优化器的互联网服务提供商（ISPs）和服务器。</p>
<p>35.&nbsp;&nbsp;&nbsp; Not everything has to be OOP, often it is too much overhead, each method and object call consumes a lot of memory. 并不是事必面向对象(OOP)，面向对象往往开销很大，每个方法和对象调用都会消耗很多内存。</p>
<p>36.&nbsp;&nbsp;&nbsp; Do not implement every data structure as a class, arrays are useful, too. 并非要用类实现所有的数据结构，数组也很有用。</p>
<p>37.&nbsp;&nbsp;&nbsp; Don’t split methods too much, think, which code you will really re-use. 不要把方法细分得过多，仔细想想你真正打算重用的是哪些代码？</p>
<p>38.&nbsp;&nbsp;&nbsp; You can always split the code of a method later, when needed. 当你需要时，你总能把代码分解成方法。</p>
<p>39.&nbsp;&nbsp;&nbsp; Make use of the countless predefined functions. 尽量采用大量的PHP内置函数。</p>
<p>40.&nbsp;&nbsp;&nbsp; If you have very time consuming functions in your code, consider writing them as C extensions. 如果在代码中存在大量耗时的函数，你可以考虑用C扩展的方式实现它们。</p>
<p>41.&nbsp;&nbsp;&nbsp; Profile your code. A profiler shows you, which parts of your code consumes how many time. The Xdebug debugger already contains a profiler. Profiling shows you the bottlenecks in overview. 评估检验(profile)你的代码。检验器会告诉你，代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序，评估检验总体上可以显示出代码的瓶颈。</p>
<p>42.&nbsp;&nbsp;&nbsp; mod_gzip which is available as an Apache module compresses your data on the fly and can reduce the data to transfer up to 80%. mod_zip可作为Apache模块，用来即时压缩你的数据，并可让数据传输量降低80%。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/php-youhua/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL中代替Like语句的另一种写法</title>
		<link>http://www.kuigg.com/mysql-charindex</link>
		<comments>http://www.kuigg.com/mysql-charindex#comments</comments>
		<pubDate>Thu, 27 Sep 2007 10:28:48 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=73</guid>
		<description><![CDATA[如查找用户名包含有”c”的所有用户, 可以用 use mydatabase select * from table1 where username like&#8217;%c%” 下面是完成上面功能的另一种写法: use mydatabase select * from table1 where charindex(&#8216;c&#8217;,username)&#62;0 这种方法理论上比上一种方法多了一个判断语句,即&#62;0, 但这个判断过程是最快的, 我想信80%以上的运算都是花在查找字 符串及其它的运算上, 所以运用charindex函数也没什么大不了. 用这种方法也有好处, 那就是对%,&#124;等在不能直接用like 查找到的字符中可以直接在这charindex中运用, 如下: use mydatabase select * from table1 where charindex(&#8216;%&#8217;,username)&#62;0 也可以写成: use mydatabase select * from table1 where charindex(char(37),username)&#62;0 ASCII的字符即为%]]></description>
			<content:encoded><![CDATA[<p>如查找用户名包含有”c”的所有用户, 可以用</p>
<p>use mydatabase<br />
select * from table1 where username like&#8217;%c%”</p>
<p>下面是完成上面功能的另一种写法:<br />
use mydatabase<br />
select * from table1 where charindex(&#8216;c&#8217;,username)&gt;0<br />
这种方法理论上比上一种方法多了一个判断语句,即&gt;0, 但这个判断过程是最快的, 我想信80%以上的运算都是花在查找字<br />
符串及其它的运算上, 所以运用charindex函数也没什么大不了. 用这种方法也有好处, 那就是对%,|等在不能直接用like<br />
查找到的字符中可以直接在这charindex中运用, 如下:<br />
use mydatabase<br />
select * from table1 where charindex(&#8216;%&#8217;,username)&gt;0<br />
也可以写成:<br />
use mydatabase<br />
select * from table1 where charindex(char(37),username)&gt;0<br />
ASCII的字符即为%</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/mysql-charindex/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apache中的 .htaccess文件使用手册</title>
		<link>http://www.kuigg.com/apache-htaccess</link>
		<comments>http://www.kuigg.com/apache-htaccess#comments</comments>
		<pubDate>Thu, 27 Sep 2007 10:23:17 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=72</guid>
		<description><![CDATA[.htaccess文件提供了针对目录改变配置的方法。 * .htaccess文件 * 工作原理和使用方法 * 使用.htaccess文件的场合 * 指令的生效 * 认证举例 * 服务器端包含举例 * CGI举例 * 疑难解答 top .htaccess文件 相关模块 相关指令 * core * mod_auth * mod_cgi * mod_include * mod_mime * AccessFileName * AllowOverride * Options * AddHandler * SetHandler * AuthType * AuthName * AuthUserFile * AuthGroupFile * Require top 工作原理和使用方法 .htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法， 即，在一个特定的文档目录中放置一个包含一个或多个指令的文件， [...]]]></description>
			<content:encoded><![CDATA[<p>.htaccess文件提供了针对目录改变配置的方法。 </p>
<p>* .htaccess文件<br />
* 工作原理和使用方法<br />
* 使用.htaccess文件的场合<br />
* 指令的生效<br />
* 认证举例<br />
* 服务器端包含举例<br />
* CGI举例<br />
* 疑难解答 </p>
<p>top<br />
.htaccess文件<br />
相关模块 相关指令 </p>
<p>* core<br />
* mod_auth<br />
* mod_cgi<br />
* mod_include<br />
* mod_mime </p>
<p>* AccessFileName<br />
* AllowOverride<br />
* Options<br />
* AddHandler<br />
* SetHandler<br />
* AuthType<br />
* AuthName<br />
* AuthUserFile<br />
* AuthGroupFile<br />
* Require </p>
<p>top<br />
工作原理和使用方法 </p>
<p>.htaccess文件(或者”分布式配置文件”)提供了针对目录改变配置的方法， 即，在一个特定的文档目录中放置一个包含一个或多个指令的文件， 以作用于此目录及其所有子目录。 </p>
<p>说明：如果需要使用.htaccess以外的其他文件名，可以用AccessFileName指令来改变。 例如，需要使用.config，则可以在服务器配置文件中按以下方法配置： </p>
<p>AccessFileName .config </p>
<p>允许放在这些文件中的指令取决于AllowOverride指令， 此指令按类别决定了.htaccess文件中哪些指令才是有效的。 如果一个指令允许放在.htaccess文件中，则，在本手册的说明中，此指令会有一个覆盖段， 其中说明了为使此指令生效而必须在AllowOverride指令中设置的值。 </p>
<p>例如，本手册对AddDefaultCharset指令的说明表明了， 此指令可以用于.htaccess文件(见 Context一行)，而Override一行是”FileInfo”， 那么为使.htaccess中的此指令有效，则至少要设置”AllowOverride FileInfo”。<br />
例子:<br />
Context: server config, virtual host, directory, .htaccess<br />
Override: FileInfo </p>
<p>如果不能确定一个特定的指令是否允许用于.htaccess文件， 可以查阅手册中对指令的说明，看在Context(“上下文”)行中是否有”.htaccess.”。<br />
top<br />
使用.htaccess文件的场合 </p>
<p>一般情况下，不应该使用.htaccess文件，除非你对主服务器配置文件没有存取权限。 有一种很常见的误解，认为用户认证只能通过.htaccess文件实现，但并不是这样， 把用户认证写在主服务器配置中是完全可行的，而且是一种很好的方法。 </p>
<p>在内容提供者需要针对目录改变服务器的配置而对服务器系统没有root权限时， 则应该使用.htaccess文件。如果服务器管理员不愿意频繁修改配置， 则可以允许用户通过.htaccess文件自己修改配置，尤其是ISP在一个机器上 宿主多个用户站点，而又希望用户可以自己改变配置的情况下。 </p>
<p>虽然如此，一般都应该尽可能地避免使用.htaccess文件。 任何希望放在.htaccess文件中的配置，都可以放在主服务器的&lt;Directory&gt;段中，而且更高效。 </p>
<p>避免使用.htaccess文件有两个主要原因。 </p>
<p>首先是性能。 如果AllowOverride允许使用.htaccess文件， 则，Apache需要在每个目录中查找.htaccess文件，因此，无论是否真正用到， 允许使用.htaccess文件都会导致性能的下降。 另外，每次请求一个页面时，都需要读取.htaccess文件。 </p>
<p>还有，Apache必须在所有更高级的目录中查找.htaccess文件， 使所有有效的指令都起作用(参见how directives are applied.)，所以， 如果有对/www/htdocs/example中页面的请求，Apache必须查找以下文件： </p>
<p>/.htaccess<br />
/www/.htaccess<br />
/www/htdocs/.htaccess<br />
/www/htdocs/example/.htaccess </p>
<p>而且，对此目录以外的每个文件访问，还有4个附加的文件系统访问，即使这些文件都不存在。 (注意，这可能仅仅发生在 / 允许使用.htaccess文件的情况下，虽然这种情况并不多。) </p>
<p>其次是安全。 如此，会允许用户修改服务器的配置，可能会导致未加限制的修改，请认真考虑是否给予用户这样的特权。 但是，如果给予用户较少的特权而不能满足其需要，则会带来额外的技术支持请求， 所以，必须明确地告诉用户已经给予他们的权限，说明AllowOverride设置的值， 并引导他们参阅相应的说明，以免日后许多麻烦。 </p>
<p>注意，在/www/htdocs/example目录下.htaccess文件中放置指令，与， 在主服务器配置文件中&lt;Directory /www/htdocs/example&gt;段中放置相同指令， 是等效的。： </p>
<p>/www/htdocs/example中的.htaccess:<br />
/www/htdocs/example中.htaccess文件的内容 </p>
<p>AddType text/example .exm<br />
httpd.conf文件中的段 </p>
<p>&lt;Directory /www/htdocs/example&gt;<br />
AddType text/example .exm<br />
&lt;/Directory&gt; </p>
<p>但是，把这个配置放置在服务器配置文件中则更加高效，因为只需要在Apache启动时读取一次， 而不是在有文件请求时每次都读取。 </p>
<p>将AllowOverride设置为”none”可以完全禁止使用.htaccess文件。 </p>
<p>AllowOverride None<br />
top<br />
指令的生效 </p>
<p>.htaccess文件中的配置指令作用于.htaccess文件所在的目录及其所有子目录， 但是，很重要需要记住的是，其更高级的目录也可能会有.htaccess文件， 而指令是按查找顺序依次生效，所以， 一个特定目录下的.htaccess文件中的指令可能会覆盖其更高级目录中的 .htaccess文件的指令，即， 子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。 </p>
<p>例如: </p>
<p>目录/www/htdocs/example1中的.htaccess文件有如下内容： </p>
<p>Options +ExecCGI </p>
<p>(注意: 必须设置”AllowOverride Options”以允许在.htaccess文件中使用 “Options”指令。) </p>
<p>在目录/www/htdocs/example1/example2中的.htaccess文件有如下内容： </p>
<p>Options Includes </p>
<p>由于第二个.htaccess文件的存在，/www/htdocs/example1/example2中 的CGI执行是不允许的，而只允许Options Includes，它完全覆盖了之前的设置。<br />
top<br />
认证举例 </p>
<p>如果你为了知道如何认证，直接从这里开始看，有很重要的一点需要注意，有一种常见的误解， 认为实现密码认证必须要使用.htaccess文件，其实不是这样。 把认证指令放在主服务器配置文件的&lt;Directory&gt;段中，是一个更好的方法， 而.htaccess文件应该仅仅用于无权访问主服务器配置文件的时候。 参见上述的使用.htaccess文件的场合。 </p>
<p>有此声明在先，如果你仍然需要使用.htaccess文件，请看以下说明。 </p>
<p>必须设置”AllowOverride AuthConfig”以允许这些指令生效 </p>
<p>.htaccess文件的内容: </p>
<p>AuthType Basic<br />
AuthName “Password Required”<br />
AuthUserFile /www/passwords/password.file<br />
AuthGroupFile /www/passwords/group.file<br />
Require Group admins </p>
<p>注意，必须设置AllowOverride AuthConfig以允许这些指令生效 </p>
<p>更详细的有关身份识别和认证的说明，请参见authentication tutorial。<br />
top<br />
服务器端包含举例 </p>
<p>.htaccess文件的另一个常见用途是允许一个特定目录的服务器端包含(Server Side Includes)， 可以在需要的目录中放置.htaccess文件，并如下配置： </p>
<p>Options +Includes<br />
AddType text/html shtml<br />
AddHandler server-parsed shtml </p>
<p>注意，必须同时设置AllowOverride Options和 AllowOverride FileInfo使这些指令生效。 </p>
<p>更详细的有关服务器端包含的说明，请参见SSI tutorial。<br />
top<br />
CGI举例 </p>
<p>最后，可以通过.htaccess文件允许在特定目录中执行CGI程序，需按如下配置： </p>
<p>Options +ExecCGI<br />
AddHandler cgi-script cgi pl </p>
<p>另外，如下，可以使给定目录下所有文件被视为CGI程序： </p>
<p>Options +ExecCGI<br />
SetHandler cgi-script </p>
<p>注意，必须设置AllowOverride Options使这些指令生效。 </p>
<p>更详细的有关CGI编程和配置的说明，请参见CGI tutorial。<br />
top<br />
疑难解答 </p>
<p>如果在.htaccess文件中写入了配置指令但不起作用，可能有多种原因。 </p>
<p>最常见的原因是，AllowOverride指令没有被正确设置， 必须确保没有对此文件区域设置AllowOverride None。有一个很好的测试方法，即， 在.htaccess文件随便增加点没用的内容，如果服务器没有返回了一个错误消息， 那么几乎可以断定设置了AllowOverride None。 </p>
<p>在访问文档时，如果收到服务器的出错消息，应该检查Apache的出错日志， 可以知道.htaccess文件中哪些指令是不允许使用的，也可能会发现需要纠正的语法错误。 </p>
<p>.htaccess文件使用手册 </p>
<p>- .htaccess文件(或者”分布式配置文件”提供了针对目录改变配置的方法， 即，在一个特定的文档目录中放置一个包含一个或多个指令的文件，以作用于此目录及其所有子目录。作为用户，所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。 </p>
<p>- 子目录中的指令会覆盖更高级目录或者主服务器配置文件中的指令。 </p>
<p>- .htaccess必须以ASCII模式上传，最好将其权限设置为644。 </p>
<p>错误文档的定位 </p>
<p>常用的客户端请求错误返回代码：<br />
401 Authorization Required<br />
403 Forbidden<br />
404 Not Found<br />
405 Method Not Allowed<br />
408 Request Timed Out<br />
411 Content Length Required<br />
412 Precondition Failed<br />
413 Request Entity Too Long<br />
414 Request URI Too Long<br />
415 Unsupported Media Type<br />
常见的服务器错误返回代码：<br />
500 Internal Server Error </p>
<p>用户可以利用.htaccess指定自己事先制作好的错误提醒页面。一般情况下，人们可以专门设立一个目录，例如errors放置这些页面。然后再.htaccess中，加入如下的指令： </p>
<p>ErrorDocument 404 /errors/notfound.html<br />
ErrorDocument 500 /errors/internalerror.html </p>
<p>一条指令一行。上述第一条指令的意思是对于404，也就是没有找到所需要的文档的时候得显示页面为/errors目录下的notfound.html页面。不难看出语法格式为： </p>
<p>ErrorDocument 错误代码 /目录名/文件名.扩展名 </p>
<p>如果所需要提示的信息很少的话，不必专门制作页面，直接在指令中使用HTML号了，例如下面这个例子： </p>
<p>ErrorDocument 401 “&lt;body bgcolor=#ffffff&gt;&lt;h1&gt;你没有权限访问该页面，请放弃！&lt;/h1&gt;&lt;/body&gt;” </p>
<p>文档访问的密码保护 </p>
<p>要利用.htaccess对某个目录下的文档设定访问用户和对应的密码，首先要做的是生成一个.htpasswd的文本文档，例如： </p>
<p>zheng:y4E7Ep8e7EYV </p>
<p>这里密码经过加密，用户可以自己找些工具将密码加密成.htaccess支持的编码。该文档最好不要放在www目录下，建议放在www根目录文档之外，这样更为安全些。 </p>
<p>有了授权用户文档，可以在.htaccess中加入如下指令了： </p>
<p>AuthUserFile .htpasswd的服务器目录<br />
AuthGroupFile /dev/null （需要授权访问的目录）<br />
AuthName EnterPassword<br />
AuthType Basic （授权类型） </p>
<p>require user wsabstract （允许访问的用户，如果希望表中所有用户都允许，可以使用 require valid-user） </p>
<p>注，括号部分为学习时候自己添加的注释 </p>
<p>拒绝来自某个IP的访问 </p>
<p>如果我不想某个政府部门访问到我的站点的内容，那可以通过.htaccess中加入该部门的IP而将它们拒绝在外。 </p>
<p>例如： </p>
<p>order allow,deny<br />
deny from 210.10.56.32<br />
deny from 219.5.45.<br />
allow from all </p>
<p>第二行拒绝某个IP，第三行拒绝某个IP段，也就是219.5.45.0~219.2.45.255 </p>
<p>想要拒绝所有人？用deny from all好了。不止用IP，也可以用域名来设定。 </p>
<p>保护.htaccess文档 </p>
<p>在使用.htaccess来设置目录的密码保护时，它包含了密码文件的路径。从安全考虑，有必要把.htaccess也保护起来，不让别人看到其中的内容。虽然可以用其他方式做到这点，比如文档的权限。不过，.htaccess本身也能做到，只需加入如下的指令： </p>
<p>&lt;Files .htaccess&gt;<br />
order allow,deny<br />
deny from all<br />
&lt;/Files&gt; </p>
<p>URL转向 </p>
<p>我们可能对网站进行重新规划，将文档进行了迁移，或者更改了目录。这时候，来自搜索引擎或者其他网站链接过来的访问就可能出错。这种情况下，可以通过如下指令来完成旧的URL自动转向到新的地址： </p>
<p>Redirect /旧目录/旧文档名 新文档的地址 </p>
<p>或者整个目录的转向： </p>
<p>Redirect 旧目录 新目录 </p>
<p>改变缺省的首页文件 </p>
<p>一般情况下缺省的首页文件名有default、index等。不过，有些时候目录中没有缺省文件，而是某个特定的文件名，比如在pmwiki中是pmwiki.php。这种情况下，要用户记住文件名来访问很麻烦。在.htaccess中可以轻易的设置新的缺省文件名： </p>
<p>DirectoryIndex 新的缺省文件名 </p>
<p>也可以列出多个，顺序表明它们之间的优先级别，例如： </p>
<p>DirectoryIndex filename.html index.cgi index.pl default.htm </p>
<p>防止盗链 </p>
<p>如果不喜欢别人在他们的网页上连接自己的图片、文档的话，也可以通过htaccess的指令来做到。 </p>
<p>所需要的指令如下： </p>
<p>RewriteEngine on<br />
RewriteCond % !^$<br />
RewriteCond % !^http://(www\.)?mydomain.com/.*$ [NC]<br />
RewriteRule \.(gif|jpg)$ &#8211; [F] </p>
<p>如果觉得让别人的页面开个天窗不好看，那可以用一张图片来代替： </p>
<p>RewriteEngine on<br />
RewriteCond % !^$<br />
RewriteCond % !^http://(www\.)?mydomain.com/.*$ [NC]<br />
RewriteRule \.(gif|jpg)$ http://www.mydomain.com/替代图片文件名 [R,L] </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/apache-htaccess/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP初学者头痛的十四个问题</title>
		<link>http://www.kuigg.com/php-chuxuezhe-40</link>
		<comments>http://www.kuigg.com/php-chuxuezhe-40#comments</comments>
		<pubDate>Thu, 27 Sep 2007 10:18:51 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=71</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160; 【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的，所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到。当然也可以修改自动全局变量为开(php.ini改为register_globals = On)；考虑到兼容性，还是强迫自己熟悉新的写法比较好。 　　【2】Win32下apache2 用get方法传递中文参数会出错： 　　test.php?a=你好&#38;b=你也好 　　传递参数是会导致一个内部错误 　 　　解决办法:”test.php?a=”.urlencode(你好).”&#38;b=”.urlencode(你也好) 　　 &#8230;&#8230;&#8230;&#8230;. 　　【3】win32下的session不能正常工作 　　php.ini默认的session.save_path = /tmp 　　这显然是linux下的配置，win32下php无法读写session文件导致session无法使用，把它改成一个绝对路径就可以了，例如session.save_path = c:windows emp 　　【4】显示错误信息 　　当php.ini的display_errors = On并且error_reporting = E_ALL时，将显示所有的错误和提示，调试的时候最好打开以便纠错，如果你用以前php写法错误信息多半是关于未定义变量的。变量在赋值以前调用会有提示，解决办法是探测或者屏蔽。 　　例如显示$foo，可以if(isset($foo)) echo $foo 或者echo @$foo 　　【5】Win32下mail()不能发送电子邮件 　　在linux下配置好的sendmail可以发送，在win32下需要调用smtp服务器来发送电子邮件，修改php.ini的SMTP = ip //ip是不带验证功能的smtp服务器(网上很难找到) 　　php发送邮件的最好解决方法是用socket直接发送到对方email服务器而不用转发服务器。 　　【6】初装的mysql如果没有设置密码，应该使用update mysql.user set password=”yourpassword” where user=”root” 修改密码 　　【7】header already sent 　　这个错误通常会在你使用HEADER的时候出现，他可能是几种原因：1，你在使用HEADER前PRING或者ECHO了2.你当前文件前面有空行3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。！ 　　【8】更改php.ini后没有变化 　　重新启动web server，比如IIS，Apache等等，然后才会应用最新的设置。 　　【9】php在2003上面安装（ISAPI的安装方法恳请高手指教） 　　PHP4的php4isapi.dll好像和2003有些冲突，只能用CGI模式安装 　　步骤一，先www.php.net [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的，所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到。当然也可以修改自动全局变量为开(php.ini改为register_globals = On)；考虑到兼容性，还是强迫自己熟悉新的写法比较好。 </p>
<p>　　【2】Win32下apache2 用get方法传递中文参数会出错：</p>
<p>　　test.php?a=你好&amp;b=你也好 </p>
<p>　　传递参数是会导致一个内部错误<br />
　<br />
　　解决办法:”test.php?a=”.urlencode(你好).”&amp;b=”.urlencode(你也好) </p>
<p>　　 &#8230;&#8230;&#8230;&#8230;. </p>
<p>　　【3】win32下的session不能正常工作 </p>
<p>　　php.ini默认的session.save_path = /tmp </p>
<p>　　这显然是linux下的配置，win32下php无法读写session文件导致session无法使用，把它改成一个绝对路径就可以了，例如session.save_path = c:windows emp </p>
<p>　　【4】显示错误信息 </p>
<p>　　当php.ini的display_errors = On并且error_reporting = E_ALL时，将显示所有的错误和提示，调试的时候最好打开以便纠错，如果你用以前php写法错误信息多半是关于未定义变量的。变量在赋值以前调用会有提示，解决办法是探测或者屏蔽。</p>
<p>　　例如显示$foo，可以if(isset($foo)) echo $foo 或者echo @$foo </p>
<p>　　【5】Win32下mail()不能发送电子邮件 </p>
<p>　　在linux下配置好的sendmail可以发送，在win32下需要调用smtp服务器来发送电子邮件，修改php.ini的SMTP = ip //ip是不带验证功能的smtp服务器(网上很难找到) </p>
<p>　　php发送邮件的最好解决方法是用socket直接发送到对方email服务器而不用转发服务器。</p>
<p>　　【6】初装的mysql如果没有设置密码，应该使用update mysql.user set password=”yourpassword” where user=”root” 修改密码</p>
<p>　　【7】header already sent </p>
<p>　　这个错误通常会在你使用HEADER的时候出现，他可能是几种原因：1，你在使用HEADER前PRING或者ECHO了2.你当前文件前面有空行3.你可能INCLUDE了一个文件,该文件尾部有空行或者输出也会出现这种错误。！ </p>
<p>　　【8】更改php.ini后没有变化 </p>
<p>　　重新启动web server，比如IIS，Apache等等，然后才会应用最新的设置。</p>
<p>　　【9】php在2003上面安装（ISAPI的安装方法恳请高手指教） </p>
<p>　　PHP4的php4isapi.dll好像和2003有些冲突，只能用CGI模式安装 </p>
<p>　　步骤一，先www.php.net 下在一个安装程序，我是装的是：php-4.2.3-installer.exe，你也可以去找最新的版本，在安装php-4.2.3-installer.exe之前保证你的IIS6.0启动了，并能够访问。安装好以后，在默认网站&#8211;＞应用程序配置。</p>
<p>　　步骤二：点击 web服务扩展 &#8211;＞新建web服务扩展。</p>
<p>　　步骤三： 扩展名&#8211;＞php,然后添加 </p>
<p>　　步骤四：找到php.exe的路径添加上去。 </p>
<p>　　步骤五： 确定就可以了！<br />
　<br />
　　步骤六： 选择php的服务扩展，然后点击允许。 </p>
<p>　　【10】有时候sql语句不起作用，对数据库操作失败，最简便的调试方法，echo那句sql，看看变量的值能得到不。</p>
<p>　　【11】include和require的区别 </p>
<p>　　两者没有太大的区别，如果要包含的文件不存在，include提示notice，然后继续执行下面的语句，require提示致命错误并且退出。</p>
<p>　　据我测试，win32平台下它们都是先包含后执行，所以被包含文件里最好不要再有include或require语句，这样会造成目录混乱。或许*nux下情况不同，暂时还没测试。</p>
<p>　　如果一个文件不想被包含多次可以使用include_once或require_once## 读取，写入文档数据。</p>
<p> function r($file_name) {<br />
　$filenum=@fopen($file_name,”r”);<br />
　@flock($filenum,LOCK_SH);<br />
　$file_data=@fread($filenum,filesize($file_name));<br />
　@fclose($filenum);<br />
　return $file_data;<br />
}<br />
function w($file_name,$data,$method=”w”){<br />
　$filenum=@fopen($file_name,$method);<br />
　flock($filenum,LOCK_EX);<br />
　$file_data=fwrite($filenum,$data);<br />
　fclose($filenum);<br />
　return $file_data;<br />
} </p>
<p>　　【12】isset()和empty()的区别 </p>
<p>　　两者都是测试变量用的，但是isset()是测试变量是否被赋值，而empty()是测试一个已经被赋值的变量是否为空。</p>
<p>　　如果一个变量没被赋值就引用在php里是被允许的,但会有notice提示，如果一个变量被赋空值，$foo=”"或者$foo=0或者 $foo=false,那么empty($foo)返回真，isset($foo)也返回真，就是说赋空值不会注销一个变量。<br />
　<br />
　　要注销一个变量，可以用 unset($foo)或者$foo=NULL </p>
<p>　　【13】mysql查询语句包含有关键字 </p>
<p>　　php查询mysql的时候，有时候mysql表名或者列名会有关键字，这时候查询会有错误。例如表名是order,查询时候会出错，简单的办法是sql语句里表名或者列名加上`[tab键上面]来加以区别，例如select * from `order` </p>
<p>　　【14】通过HTTP协议一次上传多个文件的方法 </p>
<p>　　有两个思路，是同一个方法的两种实现。具体程序还需自己去设计。</p>
<p>　　1、在form中设置多个文件输入框，用数组命名他们的名字，如下： </p>
<p> ＜form action=”" method=post＞<br />
＜input type=file name=usefile[]＞<br />
＜input type=file name=usefile[]＞<br />
＜input type=file name=usefile[]＞<br />
＜/form＞ </p>
<p>　　这样，在服务器端做以下测试：</p>
<p> echo “＜pre＞”;<br />
print_r($_FILES);<br />
echo “＜/pre＞”; </p>
<p>　　2、在form中设置多个文件输入框，但名字不同，如下： </p>
<p> ＜form action=”" method=post＞<br />
＜input type=file name=usefile_a＞<br />
＜input type=file name=usefile_b＞<br />
＜input type=file name=usefile_c＞<br />
＜/form＞ </p>
<p>　　在服务器端做同样测试： </p>
<p> echo “＜pre＞”;<br />
print_r($_FILES);<br />
echo “＜/pre＞”;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/php-chuxuezhe-40/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mysql错误代码</title>
		<link>http://www.kuigg.com/mysql-error</link>
		<comments>http://www.kuigg.com/mysql-error#comments</comments>
		<pubDate>Thu, 27 Sep 2007 10:14:01 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=70</guid>
		<description><![CDATA[mysql的出错代码表，根据mysql的头文件mysql/include/mysqld_error.h整理而成 1005：创建表失败 1006：创建数据库失败 1007：数据库已存在，创建数据库失败 1008：数据库不存在，删除数据库失败 1009：不能删除数据库文件导致删除数据库失败 1010：不能删除数据目录导致删除数据库失败 1011：删除数据库文件失败 1012：不能读取系统表中的记录 1020：记录已被其他用户修改 1021：硬盘剩余空间不足，请加大硬盘可用空间 1022：关键字重复，更改记录失败 1023：关闭时发生错误 1024：读文件错误 1025：更改名字时发生错误 1026：写文件错误 1032：记录不存在 1036：数据表是只读的，不能对它进行修改 1037：系统内存不足，请重启数据库或重启服务器 1038：用于排序的内存不足，请增大排序缓冲区 1040：已到达数据库的最大连接数，请加大数据库可用连接数 1041：系统内存不足 1042：无效的主机名 1043：无效连接 1044：当前用户没有访问数据库的权限 1045：不能连接数据库，用户名或密码错误 1048：字段不能为空 1049：数据库不存在 1050：数据表已存在 1051：数据表不存在 1054：字段不存在 1065：无效的SQL语句，SQL语句为空 1081：不能建立Socket连接 1114：数据表已满，不能容纳任何记录 1116：打开的数据表太多 1129：数据库出现异常，请重启数据库 1130：连接数据库失败，没有连接数据库的权限 1133：数据库用户不存在 1141：当前用户无权访问数据库 1142：当前用户无权访问数据表 1143：当前用户无权访问数据表中的字段 1146：数据表不存在 1147：未定义用户对数据表的访问权限 1149：SQL语句语法错误 1158：网络错误，出现读错误，请检查网络连接状况 1159：网络错误，读超时，请检查网络连接状况 1160：网络错误，出现写错误，请检查网络连接状况 1161：网络错误，写超时，请检查网络连接状况 1062：字段值重复，入库失败 1169：字段值重复，更新记录失败 1177：打开数据表失败 1180：提交事务失败 1181：回滚事务失败 1203：当前用户和数据库建立的连接已到达数据库的最大连接数，请增大可用的数据库连接数或重启数据库 1205：加锁超时 [...]]]></description>
			<content:encoded><![CDATA[<p>mysql的出错代码表，根据mysql的头文件mysql/include/mysqld_error.h整理而成 </p>
<p>1005：创建表失败<br />
1006：创建数据库失败<br />
1007：数据库已存在，创建数据库失败<br />
1008：数据库不存在，删除数据库失败<br />
1009：不能删除数据库文件导致删除数据库失败<br />
1010：不能删除数据目录导致删除数据库失败<br />
1011：删除数据库文件失败<br />
1012：不能读取系统表中的记录<br />
1020：记录已被其他用户修改<br />
1021：硬盘剩余空间不足，请加大硬盘可用空间<br />
1022：关键字重复，更改记录失败<br />
1023：关闭时发生错误<br />
1024：读文件错误<br />
1025：更改名字时发生错误<br />
1026：写文件错误<br />
1032：记录不存在<br />
1036：数据表是只读的，不能对它进行修改<br />
1037：系统内存不足，请重启数据库或重启服务器<br />
1038：用于排序的内存不足，请增大排序缓冲区<br />
1040：已到达数据库的最大连接数，请加大数据库可用连接数<br />
1041：系统内存不足<br />
1042：无效的主机名<br />
1043：无效连接<br />
1044：当前用户没有访问数据库的权限<br />
1045：不能连接数据库，用户名或密码错误<br />
1048：字段不能为空<br />
1049：数据库不存在<br />
1050：数据表已存在<br />
1051：数据表不存在<br />
1054：字段不存在<br />
1065：无效的SQL语句，SQL语句为空<br />
1081：不能建立Socket连接<br />
1114：数据表已满，不能容纳任何记录<br />
1116：打开的数据表太多<br />
1129：数据库出现异常，请重启数据库<br />
1130：连接数据库失败，没有连接数据库的权限<br />
1133：数据库用户不存在<br />
1141：当前用户无权访问数据库<br />
1142：当前用户无权访问数据表<br />
1143：当前用户无权访问数据表中的字段<br />
1146：数据表不存在<br />
1147：未定义用户对数据表的访问权限<br />
1149：SQL语句语法错误<br />
1158：网络错误，出现读错误，请检查网络连接状况<br />
1159：网络错误，读超时，请检查网络连接状况<br />
1160：网络错误，出现写错误，请检查网络连接状况<br />
1161：网络错误，写超时，请检查网络连接状况<br />
1062：字段值重复，入库失败<br />
1169：字段值重复，更新记录失败<br />
1177：打开数据表失败<br />
1180：提交事务失败<br />
1181：回滚事务失败<br />
1203：当前用户和数据库建立的连接已到达数据库的最大连接数，请增大可用的数据库连接数或重启数据库<br />
1205：加锁超时<br />
1211：当前用户没有创建用户的权限<br />
1216：外键约束检查失败，更新子表记录失败<br />
1217：外键约束检查失败，删除或修改主表记录失败<br />
1226：当前用户使用的资源已超过所允许的资源，请重启数据库或重启服务器<br />
1227：权限不足，您无权进行此操作<br />
1235：MySQL版本过低，不具有本功能 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/mysql-error/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google新鲜技巧玩法你听说过吗？</title>
		<link>http://www.kuigg.com/google-xinwanfa</link>
		<comments>http://www.kuigg.com/google-xinwanfa#comments</comments>
		<pubDate>Fri, 31 Aug 2007 17:20:12 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[其它]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=60</guid>
		<description><![CDATA[&#160; &#160; &#160; &#160; &#160; 1.搜索在线摄像头监视站点　　 　　在Google中输入“inurl:”ViewerFrame?Mode=””或者“inurl:”MultiCameraFrame?Mode=””、“inurl:”view/index.shtml””(输入时不带外面的双引号，在英文状态下输入)，你会获得无数个未经加密的网络摄像机监视到的画面。无聊的时候玩玩，可以满足一下我们的好奇心。此外，打开这个站点：www.opentopia.com/hiddencam.php，在“from”中选择“China”，你还可以看到国内的某处网络摄像机画面。　　 　　2.让Google搜索结果在新窗口中打开 　　 　　默认情况下Google的搜索结果跟百度等搜索引擎不一样，它是直接在当前网页中打开搜索结果，这对我们的使用会感到不方便，其实我们可以通过设置来达到目的。打开Google后，选择“使用偏好”链接，在打开页面的“结果视窗”中勾选“开启新视窗以显示查询结果。”一项，单击“存储偏好设置”按钮即可　　 　　3.比较两个关键词在Google中搜索结果数量 　　 　　想知道克里和布什谁更火？那就比较一下Google的搜索结果数量就知道了。打开www.googlefight.com/，在“Keyword #1”和“Keyword #2”中分别输入“克里”和“布什”，单击“Make a fight!”按钮即可看到他们各自的结果。笔者试过，克里有741000个搜索结果，布什有4020000个搜索结果，布什获胜！　　 　　4.让Google来告诉去哪儿旅游　　 　　想好去哪儿旅游了吗？问问Google吧。打开douweosinga.com/projects/besttimetovisit站点，在“Enter the name of destination”栏中输入你想要去的城市名字，比如“北京”，点击“Go”即可获得结果。　　 　　5.有趣的关键字　　 　　在Google中输入“_*_”这个关键字，不管你是“搜索所有网页”还是“仅搜索中文网页”，你都只能搜索到一大堆中文页面。想明白这是为什么吗？到blog.outer-court.com/forum/5066.html去看看就知道了，原来这是ASCII字符和Google之间的矛盾。 　　6.中英文字典 　　 　　这项中(英)文单词翻译服务是由DrEye译典通网站所提供的，其查询格式为：“fy+中(英)文单词”(实际操作时，请勿输入+号和“”号)。例如:Google搜索框中输入fy innocent后，Google就会在搜索结果页面的最上方显示出“innocent的中文翻译”链接，点击它，你就能查到该单词的中文意思了。另外，假如我们要翻译“无辜”这个词语的话，那只要输入fy 无辜这样的格式就行了，Google会直接显示其所对应的英文单词，点下方的“Dr.eye线上字典”链接，保证你还能查到更多的内容。如果手边没有翻译软件，Google提供的单词翻译服务就显得很便利。　　 　　7.天气查询 　　 　　其查询格式为：“tq+城市名称”，例如输入 tq 北京，再点击搜索结果页面上方的“北京天气预报”链接后，你就能在t7online网站上查询到北京今后3天内的天气状况了。　　 　　8.查询邮编或长途区号　　 　　虽然现在网络已非常发达，但偶尔也难免要写封信，打个电话，这时此项功能就能帮上忙了。查询格式为：“yb+城市名称”或“qh+城市名称”，借助此命令，我们还可以输入相应的邮编或长途区号，反向查询到城市名称。不过，经过笔者的试用，发现Google所收录的邮编和长途区号的信息还十分不完整，有待于补充改进。　　 　　9.股票查询　　 　　其查询格式为：“gp+股票名称或代码”，如：gp 宝钢股份或gp 600019，其数据是由新浪财经提供的。 　　 　　10.查询手机号码归属地　 　　直接输入移动或联通的手机号码后，通过相应链接，你就能知道该号码的所属省份、所属城市和手机卡类型等信息，十分方便。 &#160; &#160;]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; <A></A>&nbsp;   &nbsp; &nbsp; 1.搜索在线摄像头监视站点　　 　　在Google中输入“inurl:”ViewerFrame?Mode=””或者“inurl:”MultiCameraFrame?Mode=””、“inurl:”view/index.shtml””(输入时不带外面的双引号，在英文状态下输入)，你会获得无数个未经加密的网络摄像机监视到的画面。无聊的时候玩玩，可以满足一下我们的好奇心。此外，打开这个站点：www.opentopia.com/hiddencam.php，在“from”中选择“China”，你还可以看到国内的某处网络摄像机画面。　　<br />
 　　2.让Google搜索结果在新窗口中打开 　　<br />
 　　默认情况下Google的搜索结果跟百度等搜索引擎不一样，它是直接在当前网页中打开搜索结果，这对我们的使用会感到不方便，其实我们可以通过设置来达到目的。打开Google后，选择“使用偏好”链接，在打开页面的“结果视窗”中勾选“开启新视窗以显示查询结果。”一项，单击“存储偏好设置”按钮即可　　<br />
 　　3.比较两个关键词在Google中搜索结果数量 　　<br />
 　　想知道克里和布什谁更火？那就比较一下Google的搜索结果数量就知道了。打开www.googlefight.com/，在“Keyword #1”和“Keyword #2”中分别输入“克里”和“布什”，单击“Make a fight!”按钮即可看到他们各自的结果。笔者试过，克里有741000个搜索结果，布什有4020000个搜索结果，布什获胜！　　<br />
 　　4.让Google来告诉去哪儿旅游　　<br />
 　　想好去哪儿旅游了吗？问问Google吧。打开douweosinga.com/projects/besttimetovisit站点，在“Enter the name of destination”栏中输入你想要去的城市名字，比如“北京”，点击“Go”即可获得结果。　　<br />
 　　5.有趣的关键字　　<br />
 　　在Google中输入“_*_”这个关键字，不管你是“搜索所有网页”还是“仅搜索中文网页”，你都只能搜索到一大堆中文页面。想明白这是为什么吗？到blog.outer-court.com/forum/5066.html去看看就知道了，原来这是ASCII字符和Google之间的矛盾。<br />
 　　6.中英文字典 　　<br />
 　　这项中(英)文单词翻译服务是由DrEye译典通网站所提供的，其查询格式为：“fy+中(英)文单词”(实际操作时，请勿输入+号和“”号)。例如:Google搜索框中输入fy innocent后，Google就会在搜索结果页面的最上方显示出“innocent的中文翻译”链接，点击它，你就能查到该单词的中文意思了。另外，假如我们要翻译“无辜”这个词语的话，那只要输入fy 无辜这样的格式就行了，Google会直接显示其所对应的英文单词，点下方的“Dr.eye线上字典”链接，保证你还能查到更多的内容。如果手边没有翻译软件，Google提供的单词翻译服务就显得很便利。　　<br />
 　　7.天气查询 　　<br />
 　　其查询格式为：“tq+城市名称”，例如输入 tq 北京，再点击搜索结果页面上方的“北京天气预报”链接后，你就能在t7online网站上查询到北京今后3天内的天气状况了。　　<br />
 　　8.查询邮编或长途区号　　<br />
 　　虽然现在网络已非常发达，但偶尔也难免要写封信，打个电话，这时此项功能就能帮上忙了。查询格式为：“yb+城市名称”或“qh+城市名称”，借助此命令，我们还可以输入相应的邮编或长途区号，反向查询到城市名称。不过，经过笔者的试用，发现Google所收录的邮编和长途区号的信息还十分不完整，有待于补充改进。　　<br />
 　　9.股票查询　　<br />
 　　其查询格式为：“gp+股票名称或代码”，如：gp 宝钢股份或gp 600019，其数据是由新浪财经提供的。 　　<br />
 　　10.查询手机号码归属地　<br />
 　　直接输入移动或联通的手机号码后，通过相应链接，你就能知道该号码的所属省份、所属城市和手机卡类型等信息，十分方便。<br />
 &nbsp;<br />
 &nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/google-xinwanfa/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Trojan.BlueFire.B ——蓝色火焰木马清除方法</title>
		<link>http://www.kuigg.com/trojan-bluefire-b</link>
		<comments>http://www.kuigg.com/trojan-bluefire-b#comments</comments>
		<pubDate>Fri, 24 Aug 2007 01:03:01 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[其它]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=52</guid>
		<description><![CDATA[木马蓝色火焰 全名是：Trojan.BlueFire.B Trojan.BlueFire.B是一个黑客程序,运行后复制两份放在系统目录(如:c:\windows\system)下, 名为tasksvc.exe和sysexpl.exe,并在注册表的HKEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\run键值添加一项指向tasksvc.exe文件,使系统启动时, 黑客程序自运行。改动HKEY_CLASSES_ROOT\txtfile\shell\open\command默认值为sysexpl.exe, 使每次打开txt文件时自动运行. 此类木马为dll类型木马，因此我在安全模式下删除了windows/system32/下的 fbhook.dll，但一开机该死的fbhook.dll又出现了，因此可以得出，它肯定在注册表中做 了手脚，打开注册表Regedit 点击目录至： : HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run 发现有“C:\\windows\\system32\\ tasksvc.exe” 将之删除，再删除C:\\windows\\system32\\ tasksvc.exe 到安全模式下将windows/system32/下的fbhook.dll删除. 右击任意一个文本文件，发现在打开方式中出现了一个win32 network interface service process方式，在注册表中查找之，发现它还指向一个windows\\system32\\sysexpl.EXE 将之删除。 svchovst.EXE C:\WINDOWS\svchovst.EXE /svchovst:Kernel32.Dll]]></description>
			<content:encoded><![CDATA[<p>木马蓝色火焰<br />
全名是：Trojan.BlueFire.B<br />
Trojan.BlueFire.B是一个黑客程序,运行后复制两份放在系统目录(如:c:\windows\system)下, 名为tasksvc.exe和sysexpl.exe,并在注册表的HKEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\run键值添加一项指向tasksvc.exe文件,使系统启动时, 黑客程序自运行。改动HKEY_CLASSES_ROOT\txtfile\shell\open\command默认值为sysexpl.exe, 使每次打开txt文件时自动运行. </p>
<p>此类木马为dll类型木马，因此我在安全模式下删除了windows/system32/下的<br />
fbhook.dll，但一开机该死的fbhook.dll又出现了，因此可以得出，它肯定在注册表中做<br />
了手脚，打开注册表Regedit 点击目录至：<br />
: HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run<br />
发现有“C:\\windows\\system32\\ tasksvc.exe”<br />
将之删除，再删除C:\\windows\\system32\\ tasksvc.exe<br />
到安全模式下将windows/system32/下的fbhook.dll删除. </p>
<p>右击任意一个文本文件，发现在打开方式中出现了一个win32 network interface service process方式，在注册表中查找之，发现它还指向一个windows\\system32\\sysexpl.EXE<br />
将之删除。<br />
svchovst.EXE<br />
C:\WINDOWS\svchovst.EXE /svchovst:Kernel32.Dll</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/trojan-bluefire-b/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ros routeros限速和限线程脚本</title>
		<link>http://www.kuigg.com/ros-routeros-xiansu</link>
		<comments>http://www.kuigg.com/ros-routeros-xiansu#comments</comments>
		<pubDate>Mon, 06 Aug 2007 19:47:23 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[RouterOS]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=51</guid>
		<description><![CDATA[限线程脚本： :for aaa from 2 to 254 do={/ip firewall filter add chain=forward src-address=(192.168.0. . $aaa) protocol=tcp connection-limit=50,32 action=drop} 限速脚本： :for aaa from 2 to 254 do={/queue simple add name=(queue . $aaa) dst-address=(192.168.0. . $aaa) limit-at=0/0 max-limit=2000000/2000000} 说明： 脚本为一行不是两行 aaa是变量 2 to 254是2~254 192.168.0. . $aaa是IP 上两句加起来是192.168.0.2~192.168.0.254的意思 connection-limit=50是线程数这里为50 max-limit=2000000/2000000是上行2m／下行2m 使用： WinBox-System-Scripts-＋ Name(脚本名程) Source(脚本) OK-选择要运行的脚本-Run Script 查看规则是否填加进来： [...]]]></description>
			<content:encoded><![CDATA[<p>限线程脚本：</p>
<p>:for aaa from 2 to 254 do={/ip firewall filter add chain=forward src-address=(192.168.0. . $aaa) protocol=tcp connection-limit=50,32 action=drop}</p>
<p>限速脚本：</p>
<p>:for aaa from 2 to 254 do={/queue simple add name=(queue . $aaa) dst-address=(192.168.0. . $aaa) limit-at=0/0 max-limit=2000000/2000000}</p>
<p>说明：<br />
脚本为一行不是两行<br />
aaa是变量<br />
2 to 254是2~254<br />
192.168.0. . $aaa是IP<br />
上两句加起来是192.168.0.2~192.168.0.254的意思<br />
connection-limit=50是线程数这里为50<br />
max-limit=2000000/2000000是上行2m／下行2m</p>
<p>使用：<br />
WinBox-System-Scripts-＋<br />
Name(脚本名程)<br />
Source(脚本)<br />
OK-选择要运行的脚本-Run Script</p>
<p>查看规则是否填加进来：<br />
限线程：WinBox-IP-Firewall-Filter Rules<br />
限速：WinBox-Queues-Simple Queues<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
手动设置限速<br />
winbox&#8212;queues&#8212;-simple queues</p>
<p>点“+”，NAME里随便填，下面是IP地址的确定</p>
<p>①Target Address 不管，Dst. Address里填 你要限制的内网机器的IP，比如我这里有个 1号机器 IP为 192.168.1.101，那dst.address 里就填 192.168.1.101 然后是/32（这里的32不是指掩码了，个人理解为指定的意思）！</p>
<p>②interface里 记着要选你连接外网那个卡，我这里分了“local和public”，所以选public</p>
<p>③ 其他的不管，我们来看最重要的东西拉，Max limit ，这个东西是你限制的上限，注意的是 这里的数值是比特位，比如我要限制 下载的速度为 500K 那么就填入多少呢？ 500 X 1000 X 8=400 0000=4M。</p>
<p>④ 另外，很多朋友都有个疑问，到底一般的用户会有多大流量呢？一般的网络游戏，如 梦幻西游 传奇 封神榜 等等，其下行在 20Kbps以内！ 最耗网络资源的就是下载&#8212;&#8211;我们就是为了限制它拉，其次是VOD点播，一般DVD格式的大约要 2M多吧，所以你看情况限制拉 别搞的太绝！！！</p>
<p>您如果觉得好用，别忘记了给我留言啊，希望能让大家都受益！</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/ros-routeros-xiansu/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Router OS 的详细的设置方法</title>
		<link>http://www.kuigg.com/router-os</link>
		<comments>http://www.kuigg.com/router-os#comments</comments>
		<pubDate>Mon, 06 Aug 2007 19:46:03 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[RouterOS]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=50</guid>
		<description><![CDATA[&#160;&#160; 现在能够使用的routeos版本只有2.7.14了，因为只有这个有算号器，新版的2.8由于算法改变，目前还没有新的算号器出来。 &#160;&#160;&#160; Routeos的发行版本有光盘版及软盘版（9张），但是在vmware或vpc之下，这些盘均不能正常读取，所以本人在介绍安装过程的时候只有使用文本方式，就不附图了。 &#160;&#160;&#160; 首先将下载的光盘镜像或安装软盘制作成盘，在cmos中设置好启动顺序后从光盘或软盘启动。第一步安装程序会让你选择需要安装的组件，选择好后按i开始安装，然后一路按y即可完成。 &#160;&#160;&#160; 安装完成后第一次进入会要求输入注册码，这时使用算号器，在算号器上面一栏输入机器码即可得到注册码（注意输入的大小写）。第一次进入的默认帐号为：admin，密码为空。 &#160;&#160;&#160; 基本的设置：（以下本人以telnet及该路由自带的winbox来说明） &#160;&#160;&#160; 1、设置网卡（这一步需要在本机执行，不设置好ip则telnet等工具是无法使用的） &#160;&#160;&#160; 输入set设置网卡，在enable interface这行输入网卡名称（第一次可以用ether1或ether2等代表第一张及第二张网卡）；在ip address这行输入该网卡ip（可以为一张网卡绑定多个ip）；在netmask这行输入子网掩码。 &#160;&#160;&#160; routeos一个强大的地方在于其可以使用多张网卡，而且可以自由地将这些网卡指定为不同的网段（无论是外网还是内网） &#160;&#160;&#160; 所有网卡set完以后，就可以用telnet登录这个路由了，或者你也可以使用http://路由ip来访问该路由，在这个路由自带网页上带了一个叫做winbox的工具，可以用这个工具来访问路由。 &#160;&#160;&#160; winbox的样子如图 &#160;&#160;&#160; 设置好网卡ip的routeos还是不能让局域网的机器上网的，要使局域网机器上网还需要设置ip欺骗。 &#160;&#160;&#160; 设置ip欺骗可以使用以下两句：/ip firewall src-nat add action masquerade /ip firewall mangle add protocol tcp tcp-options syn-only tcp-mss 1448 &#160;&#160;&#160; 配置路由使用以下语句：/ip route add dst 0.0.0.0/0 gat 公网网关ip配置adsl线路使用以下语句：/interface pppoe-client add name 随意 service 服务器名（随意） [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp; 现在能够使用的routeos版本只有2.7.14了，因为只有这个有算号器，新版的2.8由于算法改变，目前还没有新的算号器出来。<br />
&nbsp;&nbsp;&nbsp; Routeos的发行版本有光盘版及软盘版（9张），但是在vmware或vpc之下，这些盘均不能正常读取，所以本人在介绍安装过程的时候只有使用文本方式，就不附图了。</p>
<p>&nbsp;&nbsp;&nbsp; 首先将下载的光盘镜像或安装软盘制作成盘，在cmos中设置好启动顺序后从光盘或软盘启动。第一步安装程序会让你选择需要安装的组件，选择好后按i开始安装，然后一路按y即可完成。</p>
<p>&nbsp;&nbsp;&nbsp; 安装完成后第一次进入会要求输入注册码，这时使用算号器，在算号器上面一栏输入机器码即可得到注册码（注意输入的大小写）。第一次进入的默认帐号为：admin，密码为空。</p>
<p>&nbsp;&nbsp;&nbsp; 基本的设置：（以下本人以telnet及该路由自带的winbox来说明）</p>
<p>&nbsp;&nbsp;&nbsp; 1、设置网卡（这一步需要在本机执行，不设置好ip则telnet等工具是无法使用的）</p>
<p>&nbsp;&nbsp;&nbsp; 输入set设置网卡，在enable interface这行输入网卡名称（第一次可以用ether1或ether2等代表第一张及第二张网卡）；在ip address这行输入该网卡ip（可以为一张网卡绑定多个ip）；在netmask这行输入子网掩码。</p>
<p>&nbsp;&nbsp;&nbsp; routeos一个强大的地方在于其可以使用多张网卡，而且可以自由地将这些网卡指定为不同的网段（无论是外网还是内网）</p>
<p>&nbsp;&nbsp;&nbsp; 所有网卡set完以后，就可以用telnet登录这个路由了，或者你也可以使用http://路由ip来访问该路由，在这个路由自带网页上带了一个叫做winbox的工具，可以用这个工具来访问路由。</p>
<p>&nbsp;&nbsp;&nbsp; winbox的样子如图</p>
<p>&nbsp;&nbsp;&nbsp; 设置好网卡ip的routeos还是不能让局域网的机器上网的，要使局域网机器上网还需要设置ip欺骗。</p>
<p>&nbsp;&nbsp;&nbsp; 设置ip欺骗可以使用以下两句：/ip firewall src-nat add action masquerade /ip firewall mangle add protocol tcp tcp-options syn-only tcp-mss 1448</p>
<p>&nbsp;&nbsp;&nbsp; 配置路由使用以下语句：/ip route add dst 0.0.0.0/0 gat 公网网关ip配置adsl线路使用以下语句：/interface pppoe-client add name 随意 service 服务器名（随意） user 拔号用户名 password 拔号密码 interface 绑定网卡名 use-peer-dns yes mtu 1492 mru 1492</p>
<p>&nbsp;&nbsp;&nbsp; routeos可以使用的功能非常强大，不过本人会使用的不多，在此先简单介绍一下基本的使用方法，希望有兴趣的网友一起来发掘这个东东的潜力。</p>
<p>&nbsp;&nbsp;&nbsp; 过几天本人空下来了会提供以上软件的下载</p>
<p>&nbsp;&nbsp;&nbsp; RouterOS的端口映射很简单。</p>
<p>&nbsp;&nbsp;&nbsp; 在终端中的ip/firewall/dst-nat里面比如我要映射80端口到192.168.0.100，外网地址是218.26.x.x（假设）</p>
<p>&nbsp;&nbsp;&nbsp; 输入add action=nat protocol=tcp dst-address=218.26.x.x/32：80 to-dst-address=192.168.0.100就ok了，需要注意的是做nat的时候，dst-address的子网掩码必须是32，也就是255.255.255.255，否则不行，很多朋友出问题就是出在这里。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/router-os/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>routeros在网通、电信双线路的应用实例</title>
		<link>http://www.kuigg.com/router-os-shili</link>
		<comments>http://www.kuigg.com/router-os-shili#comments</comments>
		<pubDate>Mon, 06 Aug 2007 19:45:36 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[RouterOS]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=49</guid>
		<description><![CDATA[首先定义了4个网络接口，分别连接 cnc&#8211;连接中国网通的线路 ctc&#8211;连接中国电信的线路 lan&#8211;连接局域网 server&#8211;连接服务器 [admin@MikroTik]&#160;interface&#62;&#160;pr Flags:&#160;X&#160;-&#160;disabled,&#160;D&#160;-&#160;dynamic,&#160;R&#160;-&#160;running&#160; #&#160;NAME&#160;TYPE&#160;RX-RATE&#160;TX-RATE&#160;MTU&#160; 0&#160;R&#160;server&#160;ether&#160;0&#160;0&#160;1500&#160; 1&#160;R&#160;ctc&#160;ether&#160;0&#160;0&#160;1500&#160; 2&#160;R&#160;cnc&#160;ether&#160;0&#160;0&#160;1500&#160; 3&#160;R&#160;lan&#160;ether&#160;0&#160;0&#160;1500&#160; 然后为这些端口指定ip,网通分到了两个ip:a.a.a.1,a.a.a.2;电信分到了3个ip： b.b.b.1,b.b.b.2,b.b.b.3 局域网使用192.168.0.0/24,lan口ip定义为192.168.0.100,server口使用 192.168.100.0/24，ip为192.168.100.1 [admin@MikroTik]&#160;ip&#160;address&#62;&#160;pr Flags:&#160;X&#160;-&#160;disabled,&#160;I&#160;-&#160;invalid,&#160;D&#160;-&#160;dynamic&#160; #&#160;ADDRESS&#160;NETWORK&#160;BROADCAST&#160;INTERFACE 0&#160;192.168.0.100/24&#160;192.168.0.0&#160;192.168.0.255&#160;lan&#160; 1&#160;a.a.a.1/29&#160;cnc&#160; 2&#160;b.b.b.1/25&#160;ctc&#160; 3&#160;192.168.100.1/24&#160;192.168.100.0&#160;192.168.100.255&#160;server&#160; 4&#160;a.a.a.2/29&#160;cnc&#160; 5&#160;b.b.b.2/25&#160;ctc&#160; 6&#160;b.b.b.3/25&#160;ctc&#160; 网通和电信存在互联互通的问题，所以这里默认使用电信的线路，在访问网通的线路 时，使用网通的线路。全部的路由表论坛的帖子里有 [admin@MikroTik]&#160;ip&#160;route&#62;&#160;pr Flags:&#160;X&#160;-&#160;disabled,&#160;I&#160;-&#160;invalid,&#160;D&#160;-&#160;dynamic,&#160;J&#160;-&#160;rejected,&#160; C&#160;-&#160;connect,&#160;S&#160;-&#160;static,&#160;r&#160;-&#160;rip,&#160;o&#160;-&#160;ospf,&#160;b&#160;-&#160;bgp&#160; #&#160;DST-ADDRESS&#160;G&#160;GATEWAY&#160;DISTANCE&#160;INTERFACE 0&#160;S&#160;0.0.0.0/0&#160;r&#160;电信的网关&#160;1&#160;ctc&#160; 1&#160;S&#160;60.0.0.0/13&#160;r&#160;网通的网关&#160;1&#160;cnc&#160; 2&#160;S&#160;60.8.0.0/15&#160;r&#160;网通的网关&#160;1&#160;cnc&#160; 3&#160;S&#160;60.10.0.0/16&#160;r&#160;网通的网关&#160;1&#160;cnc&#160; 下面略&#8230;.. 建立1个DNS缓存，分别设置一个电信、网通的DNS&#160;，内网的机器dns设置为ros的ip 192.168.0.0/24访问internet上的网通线路用a.a.a.1，访问internet上的电信线路 和为指定用b.b.b.1 192.168.100.0/24访问internet上的网通线路用a.a.a.2，访问internet上的电信线 路和为指定用b.b.b.2 [admin@MikroTik]&#160;ip&#160;firewall&#160;src-nat&#62;&#160;pr Flags:&#160;X&#160;-&#160;disabled,&#160;I&#160;-&#160;invalid,&#160;D&#160;-&#160;dynamic&#160; 0&#160;src-address=192.168.100.0/24&#160;out-interface=cnc&#160;action=nat&#160;to-src- address=a.a.a.2&#160; 1&#160;src-address=192.168.100.0/24&#160;out-interface=ctc&#160;action=nat&#160;to-src- address=b.b.b.2 2&#160;src-address=192.168.0.0/24&#160;out-interface=ctc&#160;action=nat&#160;to-src- address=b.b.b.1&#160; 3&#160;src-address=192.168.0.0/24&#160;out-interface=cnc&#160;action=nat&#160;to-src- address=a.a.a.1 这里192.168.100.0/24基本上都是用来做服务器的，然后映射到外网。 [admin@MikroTik]&#160;ip&#160;firewall&#160;dst-nat&#62;&#160;pr Flags:&#160;X&#160;-&#160;disabled,&#160;I&#160;-&#160;invalid,&#160;D&#160;-&#160;dynamic&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>首先定义了4个网络接口，分别连接<br />
cnc&#8211;连接中国网通的线路<br />
ctc&#8211;连接中国电信的线路<br />
lan&#8211;连接局域网<br />
server&#8211;连接服务器</p>
<p>[admin@MikroTik]&nbsp;interface&gt;&nbsp;pr<br />
Flags:&nbsp;X&nbsp;-&nbsp;disabled,&nbsp;D&nbsp;-&nbsp;dynamic,&nbsp;R&nbsp;-&nbsp;running&nbsp;<br />
#&nbsp;NAME&nbsp;TYPE&nbsp;RX-RATE&nbsp;TX-RATE&nbsp;MTU&nbsp;<br />
0&nbsp;R&nbsp;server&nbsp;ether&nbsp;0&nbsp;0&nbsp;1500&nbsp;<br />
1&nbsp;R&nbsp;ctc&nbsp;ether&nbsp;0&nbsp;0&nbsp;1500&nbsp;<br />
2&nbsp;R&nbsp;cnc&nbsp;ether&nbsp;0&nbsp;0&nbsp;1500&nbsp;<br />
3&nbsp;R&nbsp;lan&nbsp;ether&nbsp;0&nbsp;0&nbsp;1500&nbsp;</p>
<p>然后为这些端口指定ip,网通分到了两个ip:a.a.a.1,a.a.a.2;电信分到了3个ip：<br />
b.b.b.1,b.b.b.2,b.b.b.3<br />
局域网使用192.168.0.0/24,lan口ip定义为192.168.0.100,server口使用<br />
192.168.100.0/24，ip为192.168.100.1</p>
<p>[admin@MikroTik]&nbsp;ip&nbsp;address&gt;&nbsp;pr<br />
Flags:&nbsp;X&nbsp;-&nbsp;disabled,&nbsp;I&nbsp;-&nbsp;invalid,&nbsp;D&nbsp;-&nbsp;dynamic&nbsp;<br />
#&nbsp;ADDRESS&nbsp;NETWORK&nbsp;BROADCAST&nbsp;INTERFACE<br />
0&nbsp;192.168.0.100/24&nbsp;192.168.0.0&nbsp;192.168.0.255&nbsp;lan&nbsp;<br />
1&nbsp;a.a.a.1/29&nbsp;cnc&nbsp;<br />
2&nbsp;b.b.b.1/25&nbsp;ctc&nbsp;<br />
3&nbsp;192.168.100.1/24&nbsp;192.168.100.0&nbsp;192.168.100.255&nbsp;server&nbsp;<br />
4&nbsp;a.a.a.2/29&nbsp;cnc&nbsp;<br />
5&nbsp;b.b.b.2/25&nbsp;ctc&nbsp;<br />
6&nbsp;b.b.b.3/25&nbsp;ctc&nbsp;</p>
<p>网通和电信存在互联互通的问题，所以这里默认使用电信的线路，在访问网通的线路<br />
时，使用网通的线路。全部的路由表论坛的帖子里有</p>
<p>[admin@MikroTik]&nbsp;ip&nbsp;route&gt;&nbsp;pr<br />
Flags:&nbsp;X&nbsp;-&nbsp;disabled,&nbsp;I&nbsp;-&nbsp;invalid,&nbsp;D&nbsp;-&nbsp;dynamic,&nbsp;J&nbsp;-&nbsp;rejected,&nbsp;<br />
C&nbsp;-&nbsp;connect,&nbsp;S&nbsp;-&nbsp;static,&nbsp;r&nbsp;-&nbsp;rip,&nbsp;o&nbsp;-&nbsp;ospf,&nbsp;b&nbsp;-&nbsp;bgp&nbsp;<br />
#&nbsp;DST-ADDRESS&nbsp;G&nbsp;GATEWAY&nbsp;DISTANCE&nbsp;INTERFACE<br />
0&nbsp;S&nbsp;0.0.0.0/0&nbsp;r&nbsp;电信的网关&nbsp;1&nbsp;ctc&nbsp;<br />
1&nbsp;S&nbsp;60.0.0.0/13&nbsp;r&nbsp;网通的网关&nbsp;1&nbsp;cnc&nbsp;<br />
2&nbsp;S&nbsp;60.8.0.0/15&nbsp;r&nbsp;网通的网关&nbsp;1&nbsp;cnc&nbsp;<br />
3&nbsp;S&nbsp;60.10.0.0/16&nbsp;r&nbsp;网通的网关&nbsp;1&nbsp;cnc&nbsp;<br />
下面略&#8230;..</p>
<p>建立1个DNS缓存，分别设置一个电信、网通的DNS&nbsp;，内网的机器dns设置为ros的ip</p>
<p>192.168.0.0/24访问internet上的网通线路用a.a.a.1，访问internet上的电信线路<br />
和为指定用b.b.b.1<br />
192.168.100.0/24访问internet上的网通线路用a.a.a.2，访问internet上的电信线<br />
路和为指定用b.b.b.2</p>
<p>[admin@MikroTik]&nbsp;ip&nbsp;firewall&nbsp;src-nat&gt;&nbsp;pr<br />
Flags:&nbsp;X&nbsp;-&nbsp;disabled,&nbsp;I&nbsp;-&nbsp;invalid,&nbsp;D&nbsp;-&nbsp;dynamic&nbsp;<br />
0&nbsp;src-address=192.168.100.0/24&nbsp;out-interface=cnc&nbsp;action=nat&nbsp;to-src-<br />
address=a.a.a.2&nbsp;</p>
<p>1&nbsp;src-address=192.168.100.0/24&nbsp;out-interface=ctc&nbsp;action=nat&nbsp;to-src-<br />
address=b.b.b.2</p>
<p>2&nbsp;src-address=192.168.0.0/24&nbsp;out-interface=ctc&nbsp;action=nat&nbsp;to-src-<br />
address=b.b.b.1&nbsp;</p>
<p>3&nbsp;src-address=192.168.0.0/24&nbsp;out-interface=cnc&nbsp;action=nat&nbsp;to-src-<br />
address=a.a.a.1</p>
<p>这里192.168.100.0/24基本上都是用来做服务器的，然后映射到外网。</p>
<p>[admin@MikroTik]&nbsp;ip&nbsp;firewall&nbsp;dst-nat&gt;&nbsp;pr<br />
Flags:&nbsp;X&nbsp;-&nbsp;disabled,&nbsp;I&nbsp;-&nbsp;invalid,&nbsp;D&nbsp;-&nbsp;dynamic&nbsp;<br />
0&nbsp;;;;&nbsp;ftp&nbsp;@&nbsp;web&nbsp;server<br />
dst-address=a.a.a.2/32:2121&nbsp;protocol=tcp&nbsp;action=nat&nbsp;to-dst-<br />
address=192.168.100.2&nbsp;to-dst-port=2121&nbsp;</p>
<p>1&nbsp;;;;&nbsp;web&nbsp;server<br />
dst-address=a.a.a.2/32:80&nbsp;protocol=tcp&nbsp;action=nat&nbsp;to-dst-<br />
address=192.168.100.2&nbsp;to-dst-port=80&nbsp;</p>
<p>2&nbsp;;;;&nbsp;radmin<br />
in-interface=cnc&nbsp;dst-address=a.a.a.2/32:xxxx&nbsp;protocol=tcp&nbsp;action=nat&nbsp;<br />
to-dst-address=192.168.100.2&nbsp;<br />
to-dst-port=3389&nbsp;</p>
<p>3&nbsp;;;;&nbsp;cs&nbsp;1.5&nbsp;server<br />
in-interface=ctc&nbsp;dst-address=b.b.b.1/32:27015&nbsp;protocol=udp&nbsp;action=nat&nbsp;<br />
to-dst-address=192.168.0.195&nbsp;to-dst-port=27015&nbsp;</p>
<p>4&nbsp;in-interface=cnc&nbsp;dst-address=a.a.a.1/32:27015&nbsp;protocol=udp&nbsp;<br />
action=nat&nbsp;to-dst-address=192.168.0.195&nbsp;<br />
to-dst-port=27015&nbsp;</p>
<p>下面略&#8230;..</p>
<p>在家用网通，单位用电信，有时因互联的问题确实很不方便。这里既然能够实现网<br />
通、电信的互联互通，我就要给自己留个方便了：设置了pptp-server,留下了几个ppp<br />
账号，在需要的时候，可以连上来用用，确实很不错。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/router-os-shili/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RouterOS 常用命令</title>
		<link>http://www.kuigg.com/router-os-mingling</link>
		<comments>http://www.kuigg.com/router-os-mingling#comments</comments>
		<pubDate>Mon, 06 Aug 2007 19:45:00 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[RouterOS]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=48</guid>
		<description><![CDATA[/sy reset&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;恢复路由原始状态 /sy reboot&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;重启路由 /sy showdown&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;关机 /sy ide set /export&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;查看配置 /ip export&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;查看IP配置 /sy backup 回车 save &#62; LOAD &#62; /interface print&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 查看网卡状态 0 X ether1 ether 1500 这个是网卡没有开启 0 R ether1 ether 1500 这个是正常状态 /int&#160;&#160;en 0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 激活0网卡 /int&#160;&#160;di 0&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 禁掉0网卡 /ip fir con print&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;查看当前所有网络边接 /ip service set www port=81&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;改变www服务端口为81 /ip hotspot user add password=1&#160;&#160;增加用户 &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>/sy reset&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>
<p>/sy reboot&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;重启路由</p>
<p>/sy showdown&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>
<p>/sy ide set </p>
<p>/export&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;查看配置 </p>
<p>/ip export&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;查看IP配置</p>
<p>/sy backup 回车<br />
save &gt; </p>
<p>LOAD &gt;<br />
/interface print&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 查看网卡状态<br />
0 X ether1 ether 1500 这个是网卡没有开启<br />
0 R ether1 ether 1500 这个是正常状态<br />
/int&nbsp;&nbsp;en 0&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; 激活0网卡<br />
/int&nbsp;&nbsp;di 0&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; 禁掉0网卡</p>
<p>/ip fir con print&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>
<p>/ip service set www port=81&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;改变www服务端口为81</p>
<p>/ip hotspot user add password=1&nbsp;&nbsp;增加用户</p>
<p>&nbsp;<br />
 router os 常用命令详解 </p>
<p> 看了很多router os 的资料都是关于如何安装的，却很少见到关于router os的命令资料（也许因为有winbox了），虽然在router os 的手册中有说明，但是是英文版本的，很不好看懂。下面就我就写出一些常用的命令，希望对大家有所帮助： </p>
<p> 1、开机登陆以后常用的一个 ？ 是常用的帮助命令，可以列出可用的命令及简单的说明。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;2、有些英文命令很长，可以简写如interface ，你输入in后回车自动就会进入interface了。或者你可以按下tab键来帮你完成长英文命令的输入。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;3、有些命令的参数很多，你不知道的时候可以输入命令后加空格？，如print ？ </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;可以显示该命令的参数。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;4、setup 该命令可是谁都要记得的，因为最初安装完router os 必须用它分配网卡的ip地址。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;5、ip route add gate=211.12.*.14，220.163.*.12 该命令用于多线路接入时加入多个网关用的。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;6、ip firewall add action=nat protocol=tcp dst-address=212.12.*.*/32：80 to-dst-address=192.168.0.198 该命令用于映射端口80到本地的192.168.0.198上。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;7、print 该命令有点用于列出所有的项目。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;8、interface monitor-traffice 0，1，2 可以监视当前0，1，2网卡的活动情况。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;9、ip firewall connection print 显示当前的所有的连接。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;10、ip arp print 显示所有router os 知道的ip地址和mac地址的对应列表。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;11、user active print 显示所有的router os 的活动用户。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;12、system reboot 、system shutdown分别是重启和关机。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;13、system reset 删除所有原来的配置，并重新启动router os. 14、system resource monitor 可以监视当前的cpu，和内存的使用情况。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;15、log print 可以显示router os 的日志。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;16、tool ping-speed 210.13.14.* 可以显示ping 的速度。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;17、tool sniffer start，和tool sniffer stop 可以开启和停止嗅探器。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;18、tool sniffer packet print 可列出嗅探的包。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;19 、system backup 可以将系统的配置备份到文件2004107.bak，可以用file print看到。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;还有什么enable，disable，remove，set 那些常用的就不说了。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;以上是我用了router os接入两个光纤后，常使用的一些命令，发现router os 真是个好东西，所以忍不住写出来，为router os 宣传一下。有很多不成熟的东西，希望大家多原谅。 </p>
<p> &nbsp;&nbsp;&nbsp;&nbsp;具我观察我没设置什么负载均衡，但是两个光纤基本上是收发的包是均衡的，而且很稳定。 </p>
<p> Router OS的备份和恢复 </p>
<p> 1、备份和恢复设置 </p>
<p> 　　绝对是好东东！你想想辛辛苦苦设置好的防火墙规则，网卡设置，各个路由，端口映射万一弄错了或重新安装时，是不是都要重新自已设置？这个巨麻烦！！！但ROUETOS却为你考虑得很周到，可以手工备份你的设置文件，需要时只要一个命令即可恢复！ </p>
<p> 　　大家可以用WINBOX登陆，注意用ADMIN帐号，在左边是不是有个FILES？点开，再点对话框上面的BACKUP，这样就把当前的设置保存一个文件里面了，再用IE登陆你的路由，用<A href="ftp://网/">ftp://网</A>管帐号：密码@路由IP:端口，登陆到你的路由后就会到你保存的文件了！用IE直接下载吧！ </p>
<p> 　　当你重新安装时，只要把内网弄通，用IE再登陆你的路由，把这个设置文件传上去，在WINBOX左边下面有个TE开头的英文，这是终端模拟，点开后就像在路由上操作一样，用以下命令恢复你以前的设置： </p>
<p> system回车 </p>
<p> backup回车 </p>
<p> load 回车 </p>
<p> 提示重启就一下子恢复到你以前设置了！！ </p>
<p> 是不是方便实用啊？ </p>
<p> 大家可能会说用WINBOX备份不爽，那我们也可以用终端备份呀！ </p>
<p> 　　在WINBOX左边下面有个TE开头的英文，这是终端模拟，点开后就像在路由上操作一样，用以下命令备份你以前的设置： </p>
<p> system回车 </p>
<p> backup回车 </p>
<p> save 回车 </p>
<p> 　　建议文件名用日期表示可以很直观。这样就按你的文件名保存了。 </p>
<p> 　　用LOAD NAME命令就是恢复了。。。] </p>
<p> 2、恢复路由本身默认值。 </p>
<p> 　　如果设错了规则或者地址，造成win不能进入管理界面，可以这样复原：<br />
 　　使用 admin 登陆<br />
 system 回车<br />
 reset 选择 y<br />
 　　将删除所有改动，恢复新装的状态 </p>
<p> 这个是恢复到出厂设置，很适合刚开始设置ROUTEOS时用用！ </p>
<p> 3、备份ROUTEOS </p>
<p> 　　可以用GHOST8。0备份，注意是要用全盘备份，DISK TO IMG才行。 </p>
<p> 4、简单化输入 </p>
<p> 在ROUTEOS是不是感觉输入命令很麻烦？ </p>
<p> 其实ROUTEOS可以只要输入前两位字母就可以了。。。 </p>
<p> 比如上面的命令： </p>
<p> system </p>
<p> backup </p>
<p> 这是进入目录的，可以简化成： </p>
<p> sy </p>
<p> ba </p>
<p> 即可！很适合一些懒人。。。哈哈 </p>
<p> 5、检查磁盘 </p>
<p> 　　在路由或终端模拟下用下面命令： </p>
<p> system </p>
<p> check-disk </p>
<p> 　　检查磁盘，要重启。 但是很慢，一分钟一G。。。哈哈 </p>
<p> 6、关机 </p>
<p> 可以在WINBOX中关机，也可以用命令关： </p>
<p> system </p>
<p> sh </p>
<p> 　　即可。。。不过ROUTEOS关机不太好，像IPCOP可以直接关掉电源。。。ROUTEOS不行。。 </p>
<p> 　　还有，在IP&#8212;SERVICE里面可以打开或关闭路由本身各个端口，大家看着办吧，不过强列要求不要关闭WEB端口！！否则你的WINBOX连不上去。。FTP功能可以关掉，再把端口换掉。用的时候打开就行了。 </p>
<p> 　　ROUEOS功能太强大了。。。。绝非普通路由所能比拟的，可以支持VPPP，就是多路由备份，主路由出现问题后可以自动调用备份路由。。。强大。 </p>
<p> 支持SNMP，可以直接读取SNMP交换机的数据。。。强大。。 </p>
<p> RouterOS2.96脚本详解global &#8211; 定义全局变量, 可以要所有的脚本中调用共享local &#8211; 定义本地变量，只能在其所要的脚本下调用，不能被其它脚本共享loop index variables &#8211; 定义在for或foreach里的索引号变量monitor variables &#8211; 监视变量ROS算术操作-&nbsp;&nbsp; 负号；相减。!&nbsp;&nbsp; 逻辑非。/&nbsp;&nbsp; 相除。.&nbsp;&nbsp; 连接。两个符串的连接，添加元素到列表^&nbsp;&nbsp; 异或(XOR)<br />
 ~&nbsp;&nbsp; 取反*&nbsp;&nbsp; 相剩&amp;&nbsp;&nbsp; 与(AND)<br />
 &amp;&amp;&nbsp;&nbsp;逻辑与+&nbsp;&nbsp; 相加&lt;&nbsp;&nbsp; 小于&lt;&lt;&nbsp;&nbsp;向左位移&lt;=&nbsp;&nbsp;小于等于&gt;&nbsp;&nbsp; 大于&gt;=&nbsp;&nbsp;大于等于&gt;&gt;&nbsp;&nbsp;向右位移|&nbsp;&nbsp; 或||&nbsp;&nbsp;逻辑或ROS说明书里的例子：计算顺序[admin@MikroTik]&gt; :put (10+1-6*2=11-12=2+(-3)=-1)<br />
 false<br />
 [admin@MikroTik]&gt; :put (10+1-6*2=11-12=(2+(-3)=-1))<br />
 true<br />
 逻辑非[admin@MikroTik]&gt; :put (!true)<br />
 false<br />
 [admin@MikroTik]&gt; :put (!(2&gt;3))<br />
 true<br />
 数位取反[admin@MikroTik]&gt; :put (~255.255.0.0)<br />
 0.0.255.255<br />
 加法[admin@MikroTik]&gt; :put (3ms + 5s)<br />
 00:00:05.003<br />
 [admin@MikroTik]&gt; :put (10.0.0.15 + 0.0.10.0)<br />
 cannot add ip address to ip address<br />
 [admin@MikroTik]&gt; :put (10.0.0.15 + 10)<br />
 10.0.0.25<br />
 减法[admin@MikroTik]&gt; :put (15 &#8211; 10)<br />
 5<br />
 [admin@MikroTik]&gt; :put (10.0.0.15 &#8211; 10.0.0.3)<br />
 12<br />
 [admin@MikroTik]&gt; :put (10.0.0.15 &#8211; 12)<br />
 10.0.0.3<br />
 [admin@MikroTik]&gt; :put (15h &#8211; 2s)<br />
 14:59:58<br />
 乘法[admin@MikroTik]&gt; :put (12s * 4)<br />
 00:00:48<br />
 [admin@MikroTik]&gt; :put (-5 * -2)<br />
 10<br />
 除法[admin@MikroTik]&gt; :put (10s / 3)<br />
 00:00:03.333<br />
 [admin@MikroTik]&gt; :put (5 / 2)<br />
 2<br />
 [admin@MikroTik]&gt; :put (0:0.10 / 3)<br />
 00:00:02<br />
 比较[admin@MikroTik]&gt; :put (10.0.2.3&lt;=2.0.3.10)<br />
 false<br />
 [admin@MikroTik]&gt; :put (100000s&gt;27h)<br />
 true<br />
 [admin@MikroTik]&gt; :put (60s,1d!=1m,3600s)<br />
 true<br />
 [admin@MikroTik]&gt; :put (bridge=routing)<br />
 false<br />
 [admin@MikroTik]&gt; :put (yes=false)<br />
 false<br />
 [admin@MikroTik]&gt; :put (true=aye)<br />
 false<br />
 逻辑与 AND, 逻辑或 OR<br />
 [admin@MikroTik]&gt; :put ((yes &amp;&amp; yes) || (yes &amp;&amp; no))<br />
 true<br />
 [admin@MikroTik]&gt; :put ((no || no) &amp;&amp; (no || yes))<br />
 false<br />
 数位与AND, 或OR, 异或XOR<br />
 [admin@MikroTik]&gt; :put (10.16.0.134 &amp; ~255.255.255.0)<br />
 0.0.0.134<br />
 位移操作[admin@MikroTik]&gt; :put (~((0.0.0.1 &lt;&lt; 7) &#8211; 1))<br />
 255.255.255.128<br />
 连接操作[admin@MikroTik]&gt; :put (1 . 3)<br />
 13<br />
 [admin@MikroTik]&gt; :put (1,2 . 3)<br />
 1,2,3<br />
 [admin@MikroTik]&gt; :put (1 . 3,4)<br />
 13,4<br />
 [admin@MikroTik]&gt; :put (1,2 . 3,4)<br />
 1,2,3,4<br />
 [admin@MikroTik]&gt; :put ((1 . 3) + 1)<br />
 14<br />
 [admin@MikroTik]&gt; :set&nbsp;&nbsp;a “It&#8217;s ”<br />
 [admin@MikroTik]&gt; :put ($a . OK)<br />
 It&#8217;s OK<br />
 ROS脚本保留字beep execute global list pick time toip typeof<br />
 delay find if local put toarray tonum while<br />
 do for led log resolve tobool tostr<br />
 environment foreach len nothing set toid totime<br />
 :beep length=2s frequency=10000<br />
 产生2秒10kHz的音频length缺省值为100ms<br />
 frequency缺省值为1000Hz<br />
 :set a “/int dis lan\n/int dis wan”<br />
 :execute $a<br />
 执行多条命令,例子里执行了两条命令。\n是换行:global<br />
 定义全局变量:list interface<br />
 显示相关命令。显示当前目录及子目录下有关interface的命令:pick<br />
 取字符串或数组的某一断。字符串（数组）的第一个为0。[admin@MikroTik]&gt;:put [:pick "I love you" 2 6]<br />
 love<br />
 :time<br />
 执行命令所需的时间[admin@MikroTik]&gt; :put [:time [:resole <A href="http://www.sina.com.cn/">www.sina.com.cn</A>]]<br />
 00:00:00.006<br />
 执行解析<A href="http://www.sina.com.cn/">www.sina.com.cn</A>这个域名所需的时间toip toarray tonum tobool tostr toid totime<br />
 转换值类型:delay 3<br />
 延时3秒，缺省为1秒:find<br />
 查找字符串或数组中第一个出现查找内容的位置[admin@MikroTik]&gt;:put [:find abcdcba cd]<br />
 2<br />
 [admin@MikroTik]&gt;:put [:find "1,2,3,4,3,2,1" 2]<br />
 1<br />
 :put<br />
 输出到屏幕上，上面就很多例子了。:if<br />
 条件选择[admin@MikroTik]&gt;:if(1&lt;2) do={:put true}<br />
 true<br />
 如果条件为真，执行do={}里面的命令[admin@MikroTik]&gt;:if(1&gt;2) do={:put true} else={:put flase}<br />
 flase<br />
 如果条件为真，执行do={}里面的命令，否则执行else={}里有命令:local<br />
 定义本地变量:while<br />
 条件为真时循环执行do={}里的脚本命令[admin@MikroTik]&gt;:set i 0;:while($i&lt;5) do={:put $i;:set i ($i+1)}<br />
 0<br />
 1<br />
 2<br />
 3<br />
 4<br />
 5<br />
 :for<br />
 循环执行do={}里的脚本命令:for i from=1 to=100 step=30 do={:put $i}<br />
 1<br />
 31<br />
 61<br />
 91<br />
 :foreach<br />
 在集合（数组）里循环执行do={}里的脚本命令:foreach i in=[/interface find type=ether] do={:put [/interface get $i name]}<br />
 ether1<br />
 ether2<br />
 ether3<br />
 ether4<br />
 在[/interface find type=ether]的集合（类型为ether的interface ID）循环输出interface的名称。我这时有四张网卡:log 日志类型 日志内容写文本到日志（script log）类型在/system logging里可以找到:log info “系统信息”<br />
 到LOG里查查运行结果吧:resolve<br />
 解析域名的IP地址[admin@MikroTik] &gt; :put [:resolve <A href="http://www.sina.com.cn/">www.sina.com.cn</A>]<br />
 61.172.201.240<br />
 :environment print<br />
 显示所有变量及其值:len<br />
 字符串或数组的长度[admin@MikroTik] &gt; :put [:len hello]<br />
 5<br />
 [admin@MikroTik] &gt; :put [:len "1,2,23,65,54,6"]<br />
 6<br />
 :nothing<br />
 空值。nothing不等0,不等于空字符”"<br />
 :find abc a的结果是0<br />
 :find abc d的结果是nothing<br />
 :set<br />
 赋值[admin@MikroTik] &gt; :set a test<br />
 将abc字符赋给变量a<br />
 [admin@MikroTik] &gt; :put $a<br />
 test<br />
 [admin@MikroTik] &gt; :put a<br />
 a<br />
 引用变量的值要在变量前面加$<br />
 &nbsp;<br />
 &nbsp;</p>
<p> [admin@MikroTik] &gt;<br />
 Certificate&#8212;&#8212;&#8212;-证书管理<br />
 Driver&#8212;&#8212;&#8212;&#8212;&#8212;设备管理<br />
 File&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;当地路由器文件的存储<br />
 interface &#8212;&#8212;&#8212;&#8212;接口配置<br />
 log &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;系统记录<br />
 password &#8212;&#8212;&#8212;&#8212;改变密码<br />
 ping &#8212;&#8212;&#8212;&#8212;&#8212;-发送,回送ICMP数据包<br />
 port &#8212;&#8212;&#8212;&#8212;&#8212;&#8211;串行端口<br />
 quit &#8212;&#8212;&#8212;&#8212;&#8212;-退出控制<br />
 radius&#8212;&#8212;&#8212;&#8212;&#8212;Radius客户机设置<br />
 redo&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- Redo previosly undone action<br />
 setup &#8212;&#8212;&#8212;&#8212;&#8212;-基本的系统设置<br />
 snmp &#8212;&#8212;&#8212;&#8212;&#8212;&#8211;SNMP 设置<br />
 special-login&#8212;&#8212;&#8212;&#8211;专用的登陆用户<br />
 undo&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; 取先前的效果<br />
 user&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-用户管理<br />
 ip&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; IP 选项<br />
 queue &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-带宽管理<br />
 system&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 系统信息和有效的程序<br />
 tool&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; 诊断工具<br />
 export &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;显示或保存导出的脚本那是用来恢复的<br />
 配置<br />
 [admin@MikroTik] &gt;<br />
 [admin@MikroTik] ip&gt;<br />
 accounting &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;交通统计<br />
 address &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;地址管理<br />
 arp &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;ARP 进入管理<br />
 dns &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;DNS 设置<br />
 firewall &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;防火墙管理<br />
 neighbor &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;邻居<br />
 packing &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;数据打包设定<br />
 pool &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-IP地址池<br />
 route&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; 路由管理<br />
 service &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;IP 服务<br />
 policy-routing &#8212;&#8212;&#8212;&#8212;&#8212;-路由政策<br />
 upnp &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- Universal 即插即用<br />
 vrrp&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;虚拟路由沉余协议<br />
 socks &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-SOCKS 版本4代理<br />
 hotspot&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; HotSpot 管理<br />
 ipsec &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;IP安全<br />
 web-proxy &#8212;&#8212;&#8212;&#8212;&#8212;&#8211;HTTP 代理<br />
 export&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;显示或保存导出的脚本那是用来恢复的configuration </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/router-os-mingling/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>王志东：农村包围城市与长尾的主心骨</title>
		<link>http://www.kuigg.com/changwei-wangzhidong</link>
		<comments>http://www.kuigg.com/changwei-wangzhidong#comments</comments>
		<pubDate>Wed, 18 Jul 2007 02:22:05 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[学习资料]]></category>
		<category><![CDATA[网站推广]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=44</guid>
		<description><![CDATA[&#160;&#160;&#160; 几周前在一个业内聚会上遇到老朋友姜奇平，大家谈起了“长尾战略”。他问我对长尾战略的看法，我说，其实长尾并不是Web 2.0的专利，甚至也不是高科技行业的专利。作为战略已经有很多成功案例了，毛主席农村包围城市战略其实就是长尾的经典。没想到这一句话让姜奇平大为感慨，非要我在他的新书里写个推荐。 &#160; &#160;&#160;&#160; 所谓“长尾理论”这个词语最早是随着Web 2.0概念同时被大家提及的，并且和“用户产生内容（UGC）”、“去中心化”一道成为Web 2.0的三大特征。也正因如此，当Web 2.0的投资热潮似乎正在退下的时候，长尾也就从一些时髦人士的词典里悄然消失。然而，也有一些人士还在坚持去探讨一些时髦概念背后的本质。在今年年初的一次中国企业家论坛的午餐会上，吕本富发表有关长尾理论的演讲，引发了大家很热烈的讨论。这次，姜奇平出书并把长尾定位成“战略”，是非常有深度的。 &#160; &#160;&#160;&#160; 长尾理论其实是针对著名的“2/8法则”而提出来的。2/8法则讲，80％的价值往往集中在20％的主体里。2/8法则从被提出以来一直得到非常广泛的应用，并且至今基本上也是正确的。例如，我们处理问题时应该抓大放小、销售时应该关注重点的客户等等，都是2/8法则的体现。然而，事情似乎也不是那么简单。比如我们钓鱼时都希望能钓到大鱼，因为一条大鱼完全有可能是四条小鱼加起来的重量的四倍——如果恰好这样的话，这就是最最经典的2/8法则了，但是如果我们改用鱼网呢？一条大鱼与一网小鱼哪一个更具价值？再比如说，“捡了芝麻丢了西瓜”是嘲笑不懂2/8法则的，然而，如果捡了一大袋芝麻丢了一个西瓜呢？ &#160; &#160;&#160;&#160; 我们还可以看到更多的例子： &#160; －共产党打天下（解放全中国），按2/8法则，首先应该攻打大城市。试过，但失败了。后来毛主席提出农村包围城市的战略，成功了； &#160; －作为软件公司，按2/8法则应该重点关注大客户，特别是那些大型企业的应用系统。IBM、Oracle、EPR等等都是这样做的，他们成功了。然而Microsoft却把关注点放到桌面上，重点占领的是低价值（单价）的个人软件，他也成功了，而且比前者更成功； &#160; －你要做一个超级网站，向用户提供互联网上的内容。按2/8法则，应该把重点放到象门户网站这样的大型网站上，至少应该是各种优质网站上。Lycos、Alta Vista、Excite是这样做的，所以把网站分类作为重点，后来做不下去了。而Google、百度却把重点放到互联网上的所有网页上，让用户从搜索网站改为搜索网页内容，成功了； &#160; －你要做一个消费市场的产品，一定希望找到最具消费能力的消费者，而忽视那些较低收的人群，很多分析师与管理专家都是这样说的，新浪网当初也是这样做的，也成功了。但到了今天，我们发现把自己的用户群定位在人均月消费只有几十块钱的超低端消费者的QQ，取得更大的成功； &#160; － …… &#160; &#160;&#160;&#160; 从上面的例子我们可以看到了，长尾不仅仅是一个现象、一类效应，更是一种有效的战略；长尾不是让你放弃主流，而是告诉你应该挖掘那些被2/8法则所忽视的资源，让那些占具总量80％的主体发挥出100％的价值；长尾并没有推翻2/8法则，在长尾战略的实施过程中还需要经常运用2/8法则，但长尾战略的确让我们突破了2/8法则的盲点；长尾战略首先让长尾受益，然而长尾往往并不是战略的目标，长尾最终是可以成就大事业的。 &#160; &#160;&#160;&#160; 既然长尾理论不是一个很艰深的科学，不是一个我们只是知道却没机会运用的概念，那么我们就该想想如何让长尾理论真正的发扬光大？举个例子来说，今年是猪年，我们就拿猪尾巴来解剖一下，记得有一首流行歌是这样唱的“&#160;！你的尾巴是卷又卷，原来跑跑跳跳还离不开它。” &#160; &#160;&#160;&#160; 猪尾巴之所以能够舞动起来，就我看来，得益于猪尾巴里的一根主心骨，因为有那一根骨头，才能够指挥着猪尾巴甩来甩去。那么长尾呢？同理，长尾是由很多的细胞组织起来的，要想长尾上的各个细胞都能够听从指挥，发挥出巨大的效用，我们要做的首要任务就是找到长尾里的那根主心骨——如何挖掘长尾价值既经济又有效的办法，才能让长尾理论真正得到运用。 &#160; &#160;&#160;&#160; 技术创新存在这个可能性，技术的价值在于它能够让一些畅想、一些想象能变成可能。互联网是实现长尾价值的最有效的技术，并且在互联网上有更多的技术能够实现、体验长尾的价值。如何聚合互联网中的长尾资源，例如用户资源、商业模式资源呢，这就得靠技术了，比如P2P技术就是聚合网络上各种计算资源的，它能够把互联网上的所有联网计算机的CPU、内存、带宽、存储很好的聚合起来。所以P2P技术是实现长尾价值非常有效的技术。如何去关注最终的用户即个人用户？如何去整合、聚合中小型网站？这些都是聚合长尾资源的最重要的思路。 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160; 什么时候长尾能够创造最大的价值呢？就在于长尾的平台。比如Google、eBay、阿里巴巴，它都是做为长尾资源进行聚合和发挥它价值的平台，这样的平台在商业上蕴含了巨大的商业价值，我们把这个也叫做长尾的主心骨。只要有了长尾的主心骨就可以让长尾舞动起来。通过这个平台能够把互联网上的中小企业和个体用户真正聚合起来。而点击现在推出的Lava-Lava就是一个开放的平台，通过联盟的方式就是OEM战略来实现这个长尾平台——向广大互联网的用户和互联网的服务商提供即时通讯和社区应用的平台，通过基于这个平台的联盟来实现多方的共赢。 &#160; &#160;&#160;&#160; 所以我认为，技术创新就是长尾的主心骨，只有找到创新点：P2P技术也好，平台也罢，或者其他更好更准确的聚合长尾所需要的资源的方法，才能够真正的让长尾舞动起来，才能够让企业立于不败之地。 &#160;]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp; 几周前在一个业内聚会上遇到老朋友姜奇平，大家谈起了“长尾战略”。他问我对长尾战略的看法，我说，其实长尾并不是Web 2.0的专利，甚至也不是高科技行业的专利。作为战略已经有很多成功案例了，毛主席农村包围城市战略其实就是长尾的经典。没想到这一句话让姜奇平大为感慨，非要我在他的新书里写个推荐。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 所谓“长尾理论”这个词语最早是随着Web 2.0概念同时被大家提及的，并且和“用户产生内容（UGC）”、“去中心化”一道成为Web 2.0的三大特征。也正因如此，当Web 2.0的投资热潮似乎正在退下的时候，长尾也就从一些时髦人士的词典里悄然消失。然而，也有一些人士还在坚持去探讨一些时髦概念背后的本质。在今年年初的一次中国企业家论坛的午餐会上，吕本富发表有关长尾理论的演讲，引发了大家很热烈的讨论。这次，姜奇平出书并把长尾定位成“战略”，是非常有深度的。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 长尾理论其实是针对著名的“2/8法则”而提出来的。2/8法则讲，80％的价值往往集中在20％的主体里。2/8法则从被提出以来一直得到非常广泛的应用，并且至今基本上也是正确的。例如，我们处理问题时应该抓大放小、销售时应该关注重点的客户等等，都是2/8法则的体现。然而，事情似乎也不是那么简单。比如我们钓鱼时都希望能钓到大鱼，因为一条大鱼完全有可能是四条小鱼加起来的重量的四倍——如果恰好这样的话，这就是最最经典的2/8法则了，但是如果我们改用鱼网呢？一条大鱼与一网小鱼哪一个更具价值？再比如说，“捡了芝麻丢了西瓜”是嘲笑不懂2/8法则的，然而，如果捡了一大袋芝麻丢了一个西瓜呢？</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 我们还可以看到更多的例子：</p>
<p>&nbsp; －共产党打天下（解放全中国），按2/8法则，首先应该攻打大城市。试过，但失败了。后来毛主席提出农村包围城市的战略，成功了；</p>
<p>&nbsp; －作为软件公司，按2/8法则应该重点关注大客户，特别是那些大型企业的应用系统。IBM、Oracle、EPR等等都是这样做的，他们成功了。然而Microsoft却把关注点放到桌面上，重点占领的是低价值（单价）的个人软件，他也成功了，而且比前者更成功；</p>
<p>&nbsp; －你要做一个超级网站，向用户提供互联网上的内容。按2/8法则，应该把重点放到象门户网站这样的大型网站上，至少应该是各种优质网站上。Lycos、Alta Vista、Excite是这样做的，所以把网站分类作为重点，后来做不下去了。而Google、百度却把重点放到互联网上的所有网页上，让用户从搜索网站改为搜索网页内容，成功了；</p>
<p>&nbsp; －你要做一个消费市场的产品，一定希望找到最具消费能力的消费者，而忽视那些较低收的人群，很多分析师与管理专家都是这样说的，新浪网当初也是这样做的，也成功了。但到了今天，我们发现把自己的用户群定位在人均月消费只有几十块钱的超低端消费者的QQ，取得更大的成功；</p>
<p>&nbsp; － ……</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 从上面的例子我们可以看到了，长尾不仅仅是一个现象、一类效应，更是一种有效的战略；长尾不是让你放弃主流，而是告诉你应该挖掘那些被2/8法则所忽视的资源，让那些占具总量80％的主体发挥出100％的价值；长尾并没有推翻2/8法则，在长尾战略的实施过程中还需要经常运用2/8法则，但长尾战略的确让我们突破了2/8法则的盲点；长尾战略首先让长尾受益，然而长尾往往并不是战略的目标，长尾最终是可以成就大事业的。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 既然长尾理论不是一个很艰深的科学，不是一个我们只是知道却没机会运用的概念，那么我们就该想想如何让长尾理论真正的发扬光大？举个例子来说，今年是猪年，我们就拿猪尾巴来解剖一下，记得有一首流行歌是这样唱的“<IMG src="http://s2.album.sina.com.cn/pic/4cc3de0c02000s61">&nbsp;！你的尾巴是卷又卷，原来跑跑跳跳还离不开它。”</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 猪尾巴之所以能够舞动起来，就我看来，得益于猪尾巴里的一根主心骨，因为有那一根骨头，才能够指挥着猪尾巴甩来甩去。那么长尾呢？同理，长尾是由很多的细胞组织起来的，要想长尾上的各个细胞都能够听从指挥，发挥出巨大的效用，我们要做的首要任务就是找到长尾里的那根主心骨——如何挖掘长尾价值既经济又有效的办法，才能让长尾理论真正得到运用。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 技术创新存在这个可能性，技术的价值在于它能够让一些畅想、一些想象能变成可能。互联网是实现长尾价值的最有效的技术，并且在互联网上有更多的技术能够实现、体验长尾的价值。如何聚合互联网中的长尾资源，例如用户资源、商业模式资源呢，这就得靠技术了，比如P2P技术就是聚合网络上各种计算资源的，它能够把互联网上的所有联网计算机的CPU、内存、带宽、存储很好的聚合起来。所以P2P技术是实现长尾价值非常有效的技术。如何去关注最终的用户即个人用户？如何去整合、聚合中小型网站？这些都是聚合长尾资源的最重要的思路。</p>
<p>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 什么时候长尾能够创造最大的价值呢？就在于长尾的平台。比如Google、eBay、阿里巴巴，它都是做为长尾资源进行聚合和发挥它价值的平台，这样的平台在商业上蕴含了巨大的商业价值，我们把这个也叫做长尾的主心骨。只要有了长尾的主心骨就可以让长尾舞动起来。通过这个平台能够把互联网上的中小企业和个体用户真正聚合起来。而点击现在推出的<A href="http://blog.sina.com.cn/control/writing/scriber/www.Lava-Lava.com" target=_blank>Lava-Lava</A>就是一个开放的平台，通过联盟的方式就是OEM战略来实现这个长尾平台——向广大互联网的用户和互联网的服务商提供即时通讯和社区应用的平台，通过基于这个平台的联盟来实现多方的共赢。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 所以我认为，技术创新就是长尾的主心骨，只有找到创新点：P2P技术也好，平台也罢，或者其他更好更准确的聚合长尾所需要的资源的方法，才能够真正的让长尾舞动起来，才能够让企业立于不败之地。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/changwei-wangzhidong/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>URL网址规范化</title>
		<link>http://www.kuigg.com/url-guifan</link>
		<comments>http://www.kuigg.com/url-guifan#comments</comments>
		<pubDate>Wed, 04 Jul 2007 15:44:51 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=36</guid>
		<description><![CDATA[网址URL规范化（URL canonicalization）是近一年来在Google搜索结果中出现的一个很大的问题。它指的是搜索引擎挑选最好的URL网址作为真正网址的过程。举例来说，下面这几个URL一般来说指的是同一个文件或网页： http://www.domainname.com http://domainname.com http://www.domainname.com/index.html http://domainname.com/index.html 但是从技术上来讲，这几个URL网址都是不同的。虽然在绝大部分情况下，这些网址所返回的都是相同的文件，也就是你的主页。但是从技术上来说，主机完全可以对这几个网址返回不同的内容。 当搜索引擎要规范化网址时，搜索引擎需要从这些选择当中挑一个最好的代表。一般来说，你的主页应该是固定的，只有一个。但是有的时候，在很多网站上站长在链接回主页时，所使用的URL并不是唯一的。很可能在你的网站上，一会连到URL http://www.domainname.com，一会儿连到URL http://www.domainname.com/index.html 。 虽然这不会给访客造成什么麻烦，因为这些网址都是同一个文件，但是对Google来说却是造成了困惑，哪一个网址是你真正的主页呢？如果在你的网站上，不同的版本网址都大量出现，那么这两个URL可能都会被Google收录进数据库，这时就会造成复制内容网页。 所谓复制内容网页，指的是两个或多个网页的内容是相同或大部分相似的。很多时候，复制网页有可能是作弊手段。就算不是作弊手段的时候，搜索引擎通常也只会挑出其中一个返回搜索结果，而把其他的复制网页都排在最后面，以至于根本找不到。 当你的网站出现网址URL规范化问题的时候，就有可能造成被怀疑为复制网页，因而影响搜索引擎结果排名。 从Google的角度来说，他们正在发展所谓大爸爸数据中心基本架构，来解决包括URL规范化的问题。但谁知道能不能解决呢？ 从站长的角度来考虑，你应该做两件事： 1）你的网站内部在链接到其他网页，尤其是主页时，只使用一种URL。不管是包含www或不包含www，你要由始至终只使用一个版本。这样搜索引擎也就明白哪一个是规范化的主页网址。 2）但是你没办法控制别的网站用哪一个网址连向你的主页。所以你应该在你的主机服务器上，把所有有可能成为主页网址的URL，做301重定向到你所选择的主页网址版本。也就是说，从下面这几个网址 http://domainname.com http://www.domainname.com/index.html http://domainname.com/index.html 都要做301重定向到这个网址 http://www.domainname.com 很重要的一点是，如果你的网站出现了URL规范化的问题，千万不能使用Google的网址删除反馈表，来要求删除其中的一个网址版本。比如说，你所要的是带有www的版本 http://www.domainname.com 你千万不能到Google的网站上填表，要求没有www的主页网址 http://domainname.com 被删除掉。因为那样做的话，你整个的域名有可能被删除6个月。 当然，除了包含www和不包含www的两个版本以外，还有其他类型的URL规范化问题。比如有的时候，搜索引擎会去掉或加上网址尾端最后的斜线。有的时候会尝试把大写字母换成小写字母，有的时候可能尝试去掉会话ID（session ID）等等，这些都有可能造成网址规范化问题。 作者: Zac@SEO每天一贴 版权所有。转载时必须以链接形式注明作者和原始出处及本声明。]]></description>
			<content:encoded><![CDATA[<p>网址URL规范化（URL canonicalization）是近一年来在Google搜索结果中出现的一个很大的问题。它指的是搜索引擎挑选最好的URL网址作为真正网址的过程。举例来说，下面这几个URL一般来说指的是同一个文件或网页：<IMG height=1 hspace=0 src="http://www.chinamyhosting.com/seoblog/dooooot.gif" width=1></p>
<p>http://www.domainname.com</p>
<p>http://domainname.com</p>
<p>http://www.domainname.com/index.html</p>
<p>http://domainname.com/index.html</p>
<p>但是从技术上来讲，这几个URL网址都是不同的。虽然在绝大部分情况下，这些网址所返回的都是相同的文件，也就是你的主页。但是从技术上来说，主机完全可以对这几个网址返回不同的内容。</p>
<p>当搜索引擎要规范化网址时，搜索引擎需要从这些选择当中挑一个最好的代表。一般来说，你的主页应该是固定的，只有一个。但是有的时候，在很多网站上站长在链接回主页时，所使用的URL并不是唯一的。很可能在你的网站上，一会连到URL http://www.domainname.com，一会儿连到URL http://www.domainname.com/index.html 。</p>
<p>虽然这不会给访客造成什么麻烦，因为这些网址都是同一个文件，但是对Google来说却是造成了困惑，哪一个网址是你真正的主页呢？如果在你的网站上，不同的版本网址都大量出现，那么这两个URL可能都会被Google收录进数据库，这时就会造成复制内容网页。</p>
<p>所谓复制内容网页，指的是两个或多个网页的内容是相同或大部分相似的。很多时候，复制网页有可能是作弊手段。就算不是作弊手段的时候，搜索引擎通常也只会挑出其中一个返回搜索结果，而把其他的复制网页都排在最后面，以至于根本找不到。</p>
<p>当你的网站出现网址URL规范化问题的时候，就有可能造成被怀疑为复制网页，因而影响搜索引擎结果排名。</p>
<p>从Google的角度来说，他们正在发展所谓大爸爸数据中心基本架构，来解决包括URL规范化的问题。但谁知道能不能解决呢？</p>
<p>从站长的角度来考虑，你应该做两件事：</p>
<p>1）你的网站内部在链接到其他网页，尤其是主页时，只使用一种URL。不管是包含www或不包含www，你要由始至终只使用一个版本。这样搜索引擎也就明白哪一个是规范化的主页网址。</p>
<p>2）但是你没办法控制别的网站用哪一个网址连向你的主页。所以你应该在你的主机服务器上，把所有有可能成为主页网址的URL，做301重定向到你所选择的主页网址版本。也就是说，从下面这几个网址</p>
<p>http://domainname.com</p>
<p>http://www.domainname.com/index.html</p>
<p>http://domainname.com/index.html</p>
<p>都要做301重定向到这个网址</p>
<p>http://www.domainname.com</p>
<p>很重要的一点是，如果你的网站出现了URL规范化的问题，千万不能使用<A href="http://www.google.cn/intl/zh-CN/remove.html" target=_blank>Google的网址删除反馈表</A>，来要求删除其中的一个网址版本。比如说，你所要的是带有www的版本</p>
<p>http://www.domainname.com</p>
<p>你千万不能到Google的网站上填表，要求没有www的主页网址</p>
<p>http://domainname.com</p>
<p>被删除掉。因为那样做的话，你整个的域名有可能被删除6个月。</p>
<p>当然，除了包含www和不包含www的两个版本以外，还有其他类型的URL规范化问题。比如有的时候，搜索引擎会去掉或加上网址尾端最后的斜线。有的时候会尝试把大写字母换成小写字母，有的时候可能尝试去掉会话ID（session ID）等等，这些都有可能造成网址规范化问题。<br />
 作者: <A href="mailto:Zac@SEO每天一贴">Zac@SEO每天一贴</A></p>
<p>版权所有。转载时必须以链接形式注明作者和原始出处及本声明。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/url-guifan/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Internet服务器安全配置</title>
		<link>http://www.kuigg.com/windows-web-anquan</link>
		<comments>http://www.kuigg.com/windows-web-anquan#comments</comments>
		<pubDate>Mon, 02 Jul 2007 19:36:21 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[其它]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=33</guid>
		<description><![CDATA[Windows Internet服务器安全配置 Windows 2003版本区别 1）Windows Server 2003, Standard Edition （标准版） 针对中小型企业的核心产品，他也是支持双路处理器，4GB的内存。它除了具备 Windows Server 2003 Web Edition 所有功能外，还支持像证书服务、UDDI服务、传真服务、IAS因特网验证服务、可移动存储、RIS、智能卡、终端服务、WMS和 Services for Macintosh。 支持文件和打印机共享。 提供安全的网络联接。 2）Windows Server 2003, Enterprise Edition （企业版） 这个产品被定义为新一带高端产品，它最多能够支持8路处理器，32 GB内存，和28个节点的集群。它是 Windows Server 2003 Standard Edition 的扩展版本，增加了 Metadirectory Services Support、终端服务会话目录、集群、热添加（ Hot-Add）内存和 NUMA非统一内存访问存取技术。这个版本还另外增加了一个支持64位计算的版本。 全功能的操作系统支持多达8个处理器。 提供企业级的功能例如8节点的集群，支持32GB内存。 支持英特尔 安腾Itanium 处理器。 将推出支持64位计算机的版本，可以支持8个64位处理器以及64GB的内存。 3）Windows Server 2003, Datacenter Edition （数据中心） 像以往一样，这是个一直代表微软产品最高性能的产品，他的市场对象一直定位在最高端应用上，有着极其可靠的稳定性和扩展性能。他支持高达8-32路处理器，64GB的内存、2-8节点的集群。与 Windows [...]]]></description>
			<content:encoded><![CDATA[<p>    Windows Internet服务器安全配置</p>
<p>Windows 2003版本区别</p>
<p>1）Windows Server 2003, Standard Edition （标准版）</p>
<p>针对中小型企业的核心产品，他也是支持双路处理器，4GB的内存。它除了具备 Windows Server 2003 Web Edition 所有功能外，还支持像证书服务、UDDI服务、传真服务、IAS因特网验证服务、可移动存储、RIS、智能卡、终端服务、WMS和 Services for Macintosh。</p>
<p>支持文件和打印机共享。 提供安全的网络联接。</p>
<p>2）Windows Server 2003, Enterprise Edition （企业版）</p>
<p>这个产品被定义为新一带高端产品，它最多能够支持8路处理器，32 GB内存，和28个节点的集群。它是 Windows Server 2003 Standard Edition 的扩展版本，增加了 Metadirectory Services Support、终端服务会话目录、集群、热添加（ Hot-Add）内存和 NUMA非统一内存访问存取技术。这个版本还另外增加了一个支持64位计算的版本。</p>
<p>全功能的操作系统支持多达8个处理器。 提供企业级的功能例如8节点的集群，支持32GB内存。 支持英特尔 安腾Itanium 处理器。 将推出支持64位计算机的版本，可以支持8个64位处理器以及64GB的内存。</p>
<p>3）Windows Server 2003, Datacenter Edition （数据中心）</p>
<p>像以往一样，这是个一直代表微软产品最高性能的产品，他的市场对象一直定位在最高端应用上，有着极其可靠的稳定性和扩展性能。他支持高达8-32路处理器，64GB的内存、2-8节点的集群。与 Windows Server 2003 Enterprise Edition 相比， Windows Server 2003 Datacenter Edition 增加了一套 Windows Datacenter Program 程序包。这个产品同样也为另外一个64位版本做了支持。</p>
<p>微软迄今为止提供的最强大、功能最为强劲的服务器操作系统。 支持32路处理器和64GB内存。 同时提供8点集群和负载均衡。 提供64位处理器平台，可支持惊人的64路处理器和512GB的内存。</p>
<p>4）Windows Server 2003, Web Edition （Web版）</p>
<p>这个版本是专门针对Web服务优化的，它支持双路处理器，2GB的内存。该产品同时支持ASP.NET、DFS分布式文件系统、EFS文件加密系统、IIS6.0、智能镜像、ICF因特网防火墙、IPv6、Mircrosoft.Net Framework、NLB网络负载均衡、PKI、Print Services for UNIX、RDP、远程OS安装（非RIS服务）、RSoP策略的结果集、影子拷贝恢复（Shadow Copy Restore)、VPN和WMI命令行模式等功能。Windows Server 2003 Web Edition 唯一和其他版本不同的是它仅能够在AD域中做成员服务器，而不能够做DC域控制器。</p>
<p>可以架构各种网页应用，XML页面服务。 IIS 6.0。 轻松迅速开发各种基于 XML以及 ASP.NET服务项目的平台。<br />
5）Windows Server 2003,64-bit Edition （64位版本）</p>
<p>专门针对64位处理器 安腾Itanium而开发的版本。<br />
包括两个版本：</p>
<p>Windows Server 2003 Enterprise Server<br />
64-bit Edition。</p>
<p>Windows Server 2003 Datacenter Server<br />
64-bit Edition。<br />
实践篇</p>
<p>下面我用的例子.将是一台标准的虚拟主机.<br />
系统:windows2003<br />
服务:[IIS] [SERV-U] [IMAIL] [SQL SERVER 2000] [PHP] [MYSQL]<br />
描述:为了演示,绑定了最多的服务.大家可以根据实际情况做筛减</p>
<p>1.WINDOWS本地安全策略 端口限制<br />
A.对于我们的例子来说.需要开通以下端口<br />
外-&gt;本地 80<br />
外-&gt;本地 20<br />
外-&gt;本地 21<br />
外-&gt;本地 PASV所用到的一些端口<br />
外-&gt;本地 25<br />
外-&gt;本地 110<br />
外-&gt;本地 3389<br />
然后按照具体情况.打开SQL SERVER和MYSQL的端口<br />
外-&gt;本地 1433<br />
外-&gt;本地 3306<br />
B.接着是开放从内部往外需要开放的端口<br />
按照实际情况,如果无需邮件服务,则不要打开以下两条规则<br />
本地-&gt;外 53 TCP,UDP<br />
本地-&gt;外 25<br />
按照具体情况.如果无需在服务器上访问网页.尽量不要开以下端口<br />
本地-&gt;外 80<br />
C.除了明确允许的一律阻止.这个是安全规则的关键.<br />
外-&gt;本地 所有协议 阻止</p>
<p>2.用户帐号<br />
a.将administrator改名,例子中改为root<br />
b.取消所有除管理员root外所有用户属性中的<br />
远程控制-&gt;启用远程控制 以及<br />
终端服务配置文件-&gt;允许登陆到终端服务器<br />
c.将guest改名为administrator并且修改密码<br />
d.除了管理员root,IUSER以及IWAM以及ASPNET用户外.禁用其他一切用户.包括SQL DEBUG以及TERMINAL USER等等</p>
<p>3.目录权限<br />
将所有盘符的权限,全部改为只有<br />
administrators组 全部权限<br />
system 全部权限<br />
将C盘的所有子目录和子文件继承C盘的administrator(组或用户)和SYSTEM所有权限的两个权限<br />
然后做如下修改<br />
C:\Documents and Settings\All Users 开放默认的读取及运行 列出文件目录 读取三个权限<br />
C:\Documents and Settings\ 增加Users用户组的读取运行权限，避免出现LoadUserProfile失败<br />
C:\Program Files\Common Files 开放Everyone　默认的读取及运行 列出文件目录 读取三个权限 可以增加ASP ASP.net的Access数据库访问权限<br />
C:\Windows如下的操作可能导致采用Ghost的操作失败,系统可以Ghost成功，但在启动后会自动重启，等待解决<br />
C:\WINDOWS\ 开放Everyone　默认的读取及运行 列出文件目录 读取三个权限<br />
C:\WINDOWS\Temp 开放Everyone 修改,读取及运行,列出文件目录,读取,写入权限<br />
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files 如果需要支持ASP.net请开发该目录的读写权限<br />
同时注意下列相关目录权限不足IIS_WPG及Service用户的权限：<br />
C:\WINDOWS\Help\IISHelp\Common<br />
C:\WINDOWS\System32\Inetsrv\ASP Compiled Templates<br />
C:\WINDOWS\IIS Temporary Compressed Files</p>
<p>现在WebShell就无法在系统目录内写入文件了.<br />
当然也可以使用更严格的权限.<br />
在WINDOWS下分别目录设置权限.<br />
可是比较复杂.效果也并不明显.</p>
<p>4.IIS<br />
在IIS 6下.应用程序扩展内的文件类型对应ISAPI的类型已经去掉了IDQ,PRINT等等危险的脚本类型,<br />
在IIS 5下我们需要把除了ASP以及ASA以外所有类型删除.<br />
安装URLSCAN<br />
在[DenyExtensions]中<br />
一般加入以下内容<br />
.cer<br />
.cdx<br />
.mdb<br />
.bat<br />
.cmd<br />
.com<br />
.htw<br />
.ida<br />
.idq<br />
.htr<br />
.idc<br />
.shtm<br />
.shtml<br />
.stm<br />
.printer<br />
这样入侵者就无法下载.mdb数据库.这种方法比外面一些在文件头加入特殊字符的方法更加彻底.<br />
因为即便文件头加入特殊字符.还是可以通过编码构造出来的</p>
<p>5.WEB目录权限<br />
作为虚拟主机.会有许多独立客户<br />
比较保险的做法就是为每个客户,建立一个windows用户<br />
然后在IIS的响应的站点项内<br />
把IIS执行的匿名用户.绑定成这个用户<br />
并且把他指向的目录<br />
权限变更为<br />
administrators 全部权限<br />
system 全部权限<br />
单独建立的用户(或者IUSER) 选择高级-&gt;打开除 完全控制,遍历文件夹/运行程序,取得所有权 3个外的其他权限.</p>
<p>如果服务器上站点不多.并且有论坛<br />
我们可以把每个论坛的上传目录<br />
去掉此用户的执行权限.<br />
只有读写权限<br />
这样入侵者即便绕过论坛文件类型检测上传了webshell<br />
也是无法运行的.</p>
<p>6.MS SQL SERVER2000<br />
使用系统帐户登陆查询分析器<br />
运行以下脚本<br />
use master<br />
exec sp_dropextendedproc ‘xp_cmdshell’<br />
exec sp_dropextendedproc ‘xp_dirtree’<br />
exec sp_dropextendedproc ‘xp_enumgroups’<br />
exec sp_dropextendedproc ‘xp_fixeddrives’<br />
exec sp_dropextendedproc ‘xp_loginconfig’<br />
exec sp_dropextendedproc ‘xp_enumerrorlogs’<br />
exec sp_dropextendedproc ‘xp_getfiledetails’<br />
exec sp_dropextendedproc ‘Sp_OACreate’<br />
exec sp_dropextendedproc ‘Sp_OADestroy’<br />
exec sp_dropextendedproc ‘Sp_OAGetErrorInfo’<br />
exec sp_dropextendedproc ‘Sp_OAGetProperty’<br />
exec sp_dropextendedproc ‘Sp_OAMethod’<br />
exec sp_dropextendedproc ‘Sp_OASetProperty’<br />
exec sp_dropextendedproc ‘Sp_OAStop’<br />
exec sp_dropextendedproc ‘Xp_regaddmultistring’<br />
exec sp_dropextendedproc ‘Xp_regdeletekey’<br />
exec sp_dropextendedproc ‘Xp_regdeletevalue’<br />
exec sp_dropextendedproc ‘Xp_regenumvalues’<br />
exec sp_dropextendedproc ‘Xp_regread’<br />
exec sp_dropextendedproc ‘Xp_regremovemultistring’<br />
exec sp_dropextendedproc ‘Xp_regwrite’<br />
drop procedure sp_makewebtask<br />
go<br />
删除所有危险的扩展.</p>
<p>7.修改CMD.EXE以及NET.EXE权限<br />
将两个文件的权限.修改到特定管理员才能访问,比如本例中.我们如下修改<br />
cmd.exe root用户 所有权限<br />
net.exe root用户 所有权现<br />
这样就能防止非法访问.<br />
还可以使用例子中提供的comlog程序<br />
将com.exe改名_com.exe,然后替换com文件.这样可以记录所有执行的命令行指令</p>
<p>单独对cmd.exe net.exe net1.exe ping.exe netstat.exe ftp.exe tftp.exe telnet.exe regedit.exe at.exe attrib.exe cacls.exe format.exe 设置为只允许administrators组访问，这样就可以防范通过Serv-U的本地提升权限漏洞来运行这些关键的程序了，再删除cacls.exe这个程序，防止有人通过命令行来修改权限</p>
<p>8.备份<br />
使用ntbackup软件.备份系统状态.<br />
使用reg.exe 备份系统关键数据<br />
如reg export HKLM\SOFTWARE\ODBC e:\backup\system\odbc.reg /y<br />
来备份系统的ODBC</p>
<p>9.杀毒<br />
这里介绍MCAFEE 8i 中文企业版<br />
因为这个版本对于国内的许多恶意代码和木马都能够及时的更新.<br />
比如已经能够检测到海阳顶端2006<br />
而且能够杀除IMAIL等SMTP软件使用的队列中MIME编码的病毒文件<br />
而很多人喜欢安装诺顿企业版.而诺顿企业版,对于WEBSHELL.基本都是没有反应的.<br />
而且无法对于MIME编码的文件进行杀毒.<br />
在MCAFEE中.<br />
我们还能够加入规则.阻止在windows目录建立和修改EXE.DLL文件等<br />
我们在软件中加入对WEB目录的杀毒计划.<br />
每天执行一次<br />
并且打开实时监控.<br />
注意：安装一些杀毒软件会影响ASP地执行，是因为禁用了jscript.dll和vbscript.dll组件<br />
在dos方式下运行 regsvr32 jscript.dll, regsvr32 vbscript.dll解除限制即可</p>
<p>10.关闭无用的服务<br />
我们一般关闭如下服务<br />
Computer Browser<br />
Help and Support<br />
Messenger<br />
Print Spooler<br />
Remote Registry<br />
TCP/IP NetBIOS Helper<br />
如果服务器不用作域控,我们也可以禁用<br />
Workstation禁止探针探测进程和用户信息</p>
<p>关闭“远程注册表服务”</p>
<p>　　安全隐患:如果黑客连接到了我们的计算机，而且计算机启用了远程注册表服务(Remote Registry)，那么黑客就可远程设置注册表中的服务，因此远程注册表服务需要特别保护。</p>
<p>　　解决方法:我们可将远程注册表服务(Remote Registry)的启动方式设置为禁用。不过，黑客在入侵我们的计算机后，仍然可以通过简单的操作将该服务从“禁用”转换为“自动启动”。因此我们有必要将该服务删除。</p>
<p>　　找到注册表中“HKEY_LOCAL_ MACHINESYSTEMCurrentControlSet Services”下的RemoteRegistry项，右键点击该项选择“删除”(图1)，将该项删除后就无法启动该服务了。</p>
<p>11.取消危险组件<br />
如果服务器不需要FSO<br />
regsvr32 /u c:\windows\system32\scrrun.dll<br />
注销组件<br />
regsvr32 /u c:\windows\system32\wshom.ocx<br />
regsvr32 /u c:\windows\system32\wshext.dll<br />
regsvr32 /u c:\windows\system32\shell32.dll<br />
如果有可能删除这些组件</p>
<p>使用regedit在注册表中进行如下操作<br />
将/HKEY_CLASSES_ROOT下的<br />
WScript.Network<br />
WScript.Network.1<br />
WScript.Shell<br />
WScript.Shell.1<br />
Shell.Application<br />
Shell.Application.1<br />
键值改名或删除<br />
将这些键值下CLSID中包含的字串<br />
如<br />
{13709620-C279-11CE-A49E-444553540000}<br />
{72C24DD5-D70A-438B-8A42-98424B88AFB8}<br />
到/HKEY_CLASSES_ROOT/CLSID下找到以这些字串命名的键值<br />
全部删除<br />
修改注册表，让系统更强壮</p>
<p>1、隐藏重要文件/目录可以修改注册表实现完全隐藏：HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ Current-Version\Explorer\Advanced\Folder\Hi-dden\SHOWALL”，鼠标右击 “CheckedValue”，选择修改，把数值由1改为0<br />
2、启动系统自带的Internet连接_blank”&gt;防火墙，在设置服务选项中勾选Web服务器。<br />
3、防止SYN洪水攻击&nbsp;&nbsp;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters<br />
新建DWORD值，名为SynAttackProtect，值为2<br />
EnablePMTUDiscovery REG_DWORD 0<br />
NoNameReleaseOnDemand REG_DWORD 1<br />
EnableDeadGWDetect REG_DWORD 0<br />
KeepAliveTime REG_DWORD 300,000<br />
PerformRouterDiscovery REG_DWORD 0<br />
EnableICMPRedirects REG_DWORD 0 </p>
<p>4. 禁止响应ICMP路由通告报文<br />
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interface 　　 新建DWORD值，名为PerformRouterDiscovery 值为0 </p>
<p>5. 防止ICMP重定向报文的攻击<br />
　 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters<br />
　 将EnableICMPRedirects 值设为0<br />
6. 不支持IGMP协议<br />
　HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters<br />
&nbsp; &nbsp;新建DWORD值，名为IGMPLevel 值为0<br />
7.修改终端服务端口<br />
&nbsp; &nbsp;[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ Wds \ rdpwd \ Tds \ tcp]，看到右边的PortNumber了吗？在十进制状态下改成你想要的端口号吧，比如7126之类的，只要不与其它冲突即可。<br />
&nbsp; &nbsp;第二处HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ WinStations \ RDP-Tcp，方法同上，记得改的端口号和上面改的一样就行了。</p>
<p>8、禁止IPC空连接：<br />
cracker可以利用net use命令建立空连接，进而入侵，还有net view，nbtstat这些都是基于空连接的，禁止空连接就好了。打开注册表，找到Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 把这个值改成”1”即可。</p>
<p>9、更改TTL值<br />
cracker可以根据ping回的TTL值来大致判断你的操作系统，如：<br />
TTL=107(WINNT);<br />
TTL=108(win2000);<br />
TTL=127或128(win9x);<br />
TTL=240或241(linux);<br />
TTL=252(solaris);<br />
TTL=240(Irix);<br />
实际上你可以自己更改的：HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters：DefaultTTL REG_DWORD 0-0xff(0-255 十进制,默认值128)改成一个莫名其妙的数字如258，起码让那些小菜鸟晕上半天，就此放弃入侵你也不一定哦</p>
<p>10. 删除默认共享<br />
有人问过我一开机就共享所有盘，改回来以后，重启又变成了共享是怎么回事，这是2K为管理而设置的默认共享，必须通过修改注册表的方式取消它：HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters：AutoShareServer类型是REG_DWORD把值改为0即可</p>
<p>11. 禁止建立空连接</p>
<p>默认情况下，任何用户通过通过空连接连上服务器，进而枚举出帐号，猜测密码。我们可以通过修改注册表来禁止建立空连接：<br />
Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous 的值改成”1”即可。<br />
12.审计<br />
本地安全策略-&gt;本地策略-&gt;审核策略<br />
打开以下内容<br />
审核策略更改 成功,失败<br />
审核系统事件 成功,失败<br />
审核帐户登陆事件 成功,失败<br />
审核帐户管理 成功,失败<br />
本地安全策略-&gt;本地策略-&gt;安全选项<br />
交互式登陆：不显示上次地用户名　　启用<br />
交互式登陆：会话锁定不显示上次地用户名　　启用<br />
网络访问:限制匿名访问命名管道和共享　启用</p>
<p>13.解除上传附件限制<br />
Windows2003中IIS6默认无法上传超过200K的附件以及无法下载超过4M的附件问题<br />
解决办法：<br />
1、先在服务里关闭 iis admin service 服务。<br />
2、找到 windows\system32\inetsrv\ 下的 metabase.xml 文件。<br />
3、用纯文本方式打开，找到 ASPMaxRequestEntityAllowed 把它修改为需要的值（可修改为10M即：10240000），默认为：204800，即：200K。<br />
4、存盘，然后重启 iis admin service 服务。</p>
<p>在 IIS 6.0 中，无法下载超过4M的附件时，可以按以下步骤解决：<br />
1、先在服务里关闭 iis admin service 服务。<br />
2、找到 windows\system32\inetsrv\ 下的 metabase.xml 文件。<br />
3、用纯文本方式打开，找到 AspBufferingLimit 把它修改为需要的值（可修改为20M即：20480000）。<br />
4、存盘，然后重启 iis admin service 服务。</p>
<p>14防止Serv-U权限提升<br />
其实，注销了Shell组件之后，侵入者运行提升工具的可能性就很小了，但是prel等别的脚本语言也有shell能力，为防万一，还是设置一下为好。</p>
<p>用Ultraedit打开ServUDaemon.exe查找Ascii：LocalAdministrator，和#l@$ak#.lk;0@P，修改成等长度的其它字符就可以了，ServUAdmin.exe也一样处理。</p>
<p>另外注意设置Serv-U所在的文件夹的权限，不要让IIS匿名用户有读取的权限，否则人家下走你修改过的文件，照样可以分析出你的管理员名和密码。</p>
<p>后续安装的<br />
PHP 4.4.1版本<br />
下载解压缩 c:\PHP, 在Windows的Path加入 c:\PHP 添加环境变量 PHPRC指向C:\PHP\php.ini 表示php.ini的位置,<br />
拷贝 C:\PHP\dll\*.* 到 c:\PHP目录 记得设置 upload_directory = “C:\WINDOWS\TEMP”<br />
session_directory = “C:\WINDOWS\TEMP” 设置upload的最大文件为10M</p>
<p>Zend Optimizer 2.6.2 版本 3.0.1版本已经推出 下载地址: <A href="http://downloads.zend.com/optimizer/" target=_blank>http://downloads.zend.com/optimizer/</A><br />
eAccelerator 加速器 WINDOWS版本下载地址: <A href="http://www.arnot.info/eaccelerator/" target=_blank>http://www.arnot.info/eaccelerator/</A><br />
在extension=php_zip.dll下面添加</p>
<p>extension=eaccelerator.dll<br />
eaccelerator.shm_size=”64″ //默认为16M，我改为64M<br />
eAccelerator.cache_dir=”C:\Windows\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 />
eaccelerator.admin.name=”adminusername”<br />
eaccelerator.admin.password=”password”</p>
<p>下载网址:<br />
MySQL 采用 4.0.27的稳定版本 避免出现中文的编码问题，获取稳定的服务性能<br />
下载后解压缩 c:\mysql 数据库目录存放到e:\mysql\data<br />
修改c:\mysql\my-large.cnf文件 添加 basedir=C:\\mysql datadir = e:\\mysql\\data<br />
安装时选择mysqld-opt.exe 该版本拥有高速的运行效率,去处了不是特殊需要的特色功能和windows下的name pipe功能,安装成windows服务方式 mysqld-ope –install MySQL40 –defaults-file=c:\mysql\my-large.cnf</p>
<p>phpMyAdmin config.inc.php</p>
<p>/*<br />
* Generated configuration file<br />
* Generated by: phpMyAdmin 2.8.2.1 setup script by Michal ?iha?<br />
* Version: $Id: setup.php,v 1.23.2.10.2.1 2006/08/01 14:01:37 lem9 Exp $<br />
* Date: Sun, 06 Aug 2006 09:57:32 GMT<br />
*/</p>
<p>/* Servers configuration */<br />
$i = 0;</p>
<p>/* Server localhost (cookie) [1] */<br />
$i++;<br />
$cfg[’Servers’][$i][’host’] = ‘localhost’;<br />
$cfg[’Servers’][$i][’extension’] = ‘mysql’;<br />
$cfg[’Servers’][$i][’connect_type’] = ‘tcp’;<br />
$cfg[’Servers’][$i][’compress’] = false;<br />
$cfg[’Servers’][$i][’auth_type’] = ‘cookie’;</p>
<p>/* End of servers configuration */</p>
<p>$cfg[’blowfish_secret’] = ‘44d5bcf6cf1d61.77359436′;<br />
$cfg[’TextareaCols’] = 40;<br />
$cfg[’TextareaRows’] = 7;<br />
$cfg[’LongtextDoubleTextarea’] = true;<br />
$cfg[’TextareaAutoSelect’] = true;<br />
$cfg[’CharEditing’] = ‘input’;<br />
$cfg[’CharTextareaCols’] = 40;<br />
$cfg[’CharTextareaRows’] = 2;<br />
$cfg[’CtrlArrowsMoving’] = true;<br />
$cfg[’DefaultPropDisplay’] = ‘horizontal’;<br />
$cfg[’InsertRows’] = 2;</p>
<p>$cfg[’ShowChgPassword’] = true;<br />
?&gt;</p>
<p>安装组件:<br />
AspEmail<br />
AspUpload<br />
AspJpeg</p>
<p>动易组件2006 SP3 <A href="http://www.powereasy.net/Soft/PE_soft/192.html" target=_blank>http://www.powereasy.net/Soft/PE_soft/192.html</A></p>
<p>URL Rewrite静态化<br />
　　Discuz! URL静态化功能受到论坛所在服务器环境的制约，在开启此功能之前，请根据你的Web服务器环境，选择相应的环境配置方法，以下提供的iis6下的服务器配置..其它服务器(如apache,zeus)你可以根据原理自行配置。</p>
<p>　　1、下载IIS Rewrite模块：<A href="http://download.discuz.net/4.1.0/discuz_iis_rewrite.zip" target=_blank>http://download.discuz.net/4.1.0/discuz_iis_rewrite.zip</A>；</p>
<p>　　2、将压缩包解压到任意目录,（如：C:\Rewrite）。然后打开“控制面板”－“管理工具”－“IIS信息服务管理器”－“网站”－“您的站点”－“属性”。在“ISAPI筛选器”项点击“添加”，筛选器名称填入Rewrite，可执行文件为C:\Rewrite\Rewrite.dll；</p>
<p>　　3、重新启动IIS就可以生效了。</p>
<p>　　通过上述配置后，您就可以在Discuz!4.1.0后台中根据需要开启影响的静态功能了。</p>
<p>　　无：不启用URL静态化功能。</p>
<p>　　Discuz!Archiver静态化：当论坛启用Archiver功能时，Archiver内的所有链接均采用*.html形式。</p>
<p>　　普通页面静态化：对论坛常用页面(如forumdisplay.php、viewthread.php、viewpro.php等)进行URL静态化转换。</p>
<p>　　Archiver和普通页面均静态化：对Archiver以及论坛常用页面(如forumdisplay.php、viewthread.php、viewpro.php等)进行URL静态化转换。</p>
<p>　　使用注意事项：</p>
<p>　　您可以通过系统设置中Discuz!选项来控制URL静态化的打开或关闭及其工作状态，本功能对服务器环境有特殊要求，独立主机用户需要对Web服务器增加相应的Rewrite规则，因此需要服务器权限才可使用；对于虚拟主机用户，您需要向您的空间服务商进行咨询：空间是否支持Rewrite以及是否支持对站点目录中.htaccess的文件解析，只有满足这两条件，URL静态化功能才会生效。打开URL静态化后，论坛一些常用链接会变成类似discuz/forum-1-1.html形式，如果您的服务器环境不支持或者尚未配置好，访问这些链接会出现“网页无法显示”的错误信息，论坛将无法正常访问。发生无法访问的现象时，请您进入管理后台，关闭URL静态化功能，论坛即可恢复正常状态。</p>
<p>　　本文提供的压缩包中还有一个httpd.ini文件，该文件是rewrite规则的配置文件。内容如下（无需修改）：</p>
<p>[ISAPI_Rewrite]<br />
# 3600 = 1 hour</p>
<p>CacheClockRate 3600</p>
<p>RepeatLimit 32<br />
# Protect httpd.ini and httpd.parse.errors files<br />
# from accessing through HTTP<br />
RewriteRule ^(.*)/archiver/([a-z0-9\-]+\.html)$ $1/archiver/index\.php\?$2<br />
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay\.php\?fid=$2&amp;page=$3<br />
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$$1/viewthread\.php\?tid=$2&amp;extra=page\%3D$4&amp;page=$3<br />
RewriteRule ^(.*)/profile-(username|uid)-(.+)\.html$ $1/viewpro\.php\?$2=$3</p>
<p>安装探针, AJiang ASP探针 , COONN的ASP探针和ASP.net探针,IProber的PHP探针</p>
<p>MSDTC错误<br />
系统日志提示：<br />
Distributed Transaction Coordinator 服务因 3221229584 服务性错误而停止。<br />
Distributed Transaction Coordinator就是MSDTC服务<br />
原因由于MSDTC日志出现问题<br />
启动时找日志出错</p>
<p>解决办法<br />
system32\dtclog目录改名<br />
同位置新建同名目录</p>
<p>cmd<br />
执行<br />
msdtc -resetlog  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/windows-web-anquan/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google不曾告诉你：Adsense优化大法</title>
		<link>http://www.kuigg.com/google-adsense-youhua</link>
		<comments>http://www.kuigg.com/google-adsense-youhua#comments</comments>
		<pubDate>Mon, 02 Jul 2007 17:54:10 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[学习资料]]></category>
		<category><![CDATA[网站盈利]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=30</guid>
		<description><![CDATA[&#160; 【申请Google广告请到 ：http://googleguanggao.com】 序言 亲爱的读者， 感谢你购买《Google不曾告诉你：用Adsense挣大钱三部曲》！ 这本书的内容是有关Google Adsense的高级应用，因此我在写作的过程中假设本书的读者已经具备了有关Adsense的基础知识。 别让这句话吓住了你，因为这本书确实是非常的简单易懂。 如果你是一个Adsense新手，那么你在阅读过程中可能需要查阅Adsense Support Pages或者在线索引Glossary来获取帮助。 我尽量保证本书结构的紧凑，并把主要内容集中在如何提高你的Adsense收入上。在此书中你将会发现一些非常实用的解决方案，如吸引目标访问流量、增强内容相关性、提高adsense广告关注度等等，这些都是网站主非常关心和棘手的问题。通过运用书中所授的一些简单合法的方法已经使很多人（包括我自己）获益匪浅。 无论你经营的是哪一类网站，也? 如何用Google Adsense赚更多的钱 google只想要你的网站流量中很小的一部分。而他们愿意为这一小部分流量付一大笔钱！ 对于那些抱怨自己有个高流量但是低收入的网站的人们来说，没有比这更好更简单的办法来从那些吝啬的访问者那里获利了。 而Adsense使这变得更容易！ 你不必安装复杂的软件，不必调查访问来源，不必购买任何东西，甚至连一个银行帐号都不要。那么&#8230;&#8230;. 为什么不是人人都在用adsense挣钱呢？其实，关键的问题是，并不是人人都懂得如何使用adsense来挣钱。 这些钱藏在了你看不见的地方。 人们说“眼见为实”。大多数的网站管理员热衷于追踪网站访问者，每天无数次地查看收入和点击率。他们喜欢看到已经到手的东西，但是经常忽视还没到手但是可以得到的东西。 adsense不会让你自己选择广告的内容，不会告诉你广告展示的规律，也不会告诉你每个点击值多少钱。不过这是好事情，因为可以省掉你很多麻烦。（它确实提供了一些控制功能，在本书中我会教你如何使用这些资源来更好地控制adsense。） 但是很多网管仍然认为一旦把adsense代码粘贴到网页上之后，你所能做的就只剩下等待和观望。 事实原非如此！google提供了很多功能来控制你的广告，尤其是一些可视化的图行和表格。很好地利用这些资源，你可以很容易地在几分钟之内就把你的点击率翻上好几番。 我的Adsense经验 我是从2003年6月开始使用adsense的，起初只是在几个网页上投放了很少的adsense广告。 第一天结束的时候，我已经有了几千个adsense展示，带来了总计&#8230;..3.00美元的收入。我气得差点一把火把房子烧了。 尽管那时我没看出adsense有什么潜力，但是我想多放它几个页面也没有坏处。几个月之后，我的adsense展示提高了25倍，收入却仍然没什么变化。那是我作为一个网站广告发布商最低潮的时候。我的点击率太低了，每天需要几千个访问者才能挣到30美元。 就在那时候，我想不能再这样了——必须要改变一些东西了！ 2004年4月末——我注册adsense十个月之后——终于发现了一直以来所忽略的东西。那是一个激动人心的时刻，我感觉就像突然开了窍一样。 于是我立刻开始试验我的google广告，尝试各种不同的广告位置和颜色，看看我的想法是否有效。 很快有了结果——而且简直太好了！ 我仅仅运用了几个很简单的方法（后面将会介绍），就把点击率提高了将近三倍，而收入提高到了600美元/天。我仍然记得2004年4月份那个金色的日子——对我来说过去的所有霉运都已经结束了。 我从一个adsense无名小卒到成为这个领域的指导者，现在每个月有5位数的adsense收入也不会让我吃惊。这是一个充满了学习和体验的精彩旅程。 细节驱动的Adsense 挣如此多的钱是一件容易令人激动的事情。但是我从未因此而忽视了细节，从adsense挣大钱依靠的正是一些微不足道的细节。 每一个adsense发布商都知道，当一天结束的时候，所有的事情都归结到一点：统计数据！你的adsense报表也许并不令人惊异，但是养成一个仔细研读报表的好习惯是很重要的。当你开始从这些小数字中读出意义的时候，大的支票很快就要来了。 图1.1中所示的数据是互联网营销传说中的经典。这是一个我最近的一张adsense统计页面的截图，图中所有数据都是真实的。你可以看出我每天的收入，但是CPM和CTR等一些具体的数据被屏蔽了，因为根据google的条款我不能公开它们。 发adsense的大财！ 如你所见，今天adsense能够支付我买车的账单，我的住房贷款，我的上网费用，很多很多。 你是不是很想知道&#8230;&#8230;. 我究竟做了什么变得一夜之间腰缠万贯？！ 这并不重要，重要的是，你要明白哪些是你现在立刻就能做的运用adsense发财的手段。 我的建议很简单&#8230;&#8230;. 不要被动接受你现在的adsense收入，现在开始努力去改善它。但是在你开始应用那些从论坛里找到的新方法之前，请注意一定要先了解google adsense使用条款。总有些网站发布商痛失他们的大笔adsense支票，仅仅因为他们太忙了没有时间去注意那些最基础的，同时也是性命攸关的adsense条款。 我喜欢按照规则游戏，非常小心地保证自己采用的那些adsense技巧和窍门都在规则允许的范围内。既然能够从adsense挣到如此多的钱，总是会有某些“利欲熏心的”想法挑逗着去我越轨，而这么做的结果只会让我的adsense帐号被封掉。 对许多网站发布商来说，adsesne就像是一只能够下金蛋的鹅。小心照看你的鹅——别为了一时的急功近利而断送了大好的钱途。 开始使用Google Adsense 2.1 基础：建立你的网站 本书的上一版发行之后，无数的人向我询问如何用adsense挣钱。我总是很愿意帮助他们，但是他们中的许多人甚至连个网站都没有。 [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>【申请Google广告请到 ：<A href="http://googleguanggao.com/" target=_blank>http://googleguanggao.com</A>】</p>
<p>序言<br />
亲爱的读者，</p>
<p>感谢你购买《Google不曾告诉你：用Adsense挣大钱三部曲》！<br />
这本书的内容是有关Google Adsense的高级应用，因此我在写作的过程中假设本书的读者已经具备了有关Adsense的基础知识。<br />
别让这句话吓住了你，因为这本书确实是非常的简单易懂。</p>
<p>如果你是一个Adsense新手，那么你在阅读过程中可能需要查阅Adsense Support Pages或者在线索引Glossary来获取帮助。</p>
<p>我尽量保证本书结构的紧凑，并把主要内容集中在如何提高你的Adsense收入上。在此书中你将会发现一些非常实用的解决方案，如吸引目标访问流量、增强内容相关性、提高adsense广告关注度等等，这些都是网站主非常关心和棘手的问题。通过运用书中所授的一些简单合法的方法已经使很多人（包括我自己）获益匪浅。</p>
<p>无论你经营的是哪一类网站，也?</p>
<p>如何用Google Adsense赚更多的钱</p>
<p>google只想要你的网站流量中很小的一部分。而他们愿意为这一小部分流量付一大笔钱！</p>
<p>对于那些抱怨自己有个高流量但是低收入的网站的人们来说，没有比这更好更简单的办法来从那些吝啬的访问者那里获利了。</p>
<p>而Adsense使这变得更容易！<br />
你不必安装复杂的软件，不必调查访问来源，不必购买任何东西，甚至连一个银行帐号都不要。那么&#8230;&#8230;.</p>
<p>为什么不是人人都在用adsense挣钱呢？其实，关键的问题是，并不是人人都懂得如何使用adsense来挣钱。</p>
<p>这些钱藏在了你看不见的地方。</p>
<p>人们说“眼见为实”。大多数的网站管理员热衷于追踪网站访问者，每天无数次地查看收入和点击率。他们喜欢看到已经到手的东西，但是经常忽视还没到手但是可以得到的东西。</p>
<p>adsense不会让你自己选择广告的内容，不会告诉你广告展示的规律，也不会告诉你每个点击值多少钱。不过这是好事情，因为可以省掉你很多麻烦。（它确实提供了一些控制功能，在本书中我会教你如何使用这些资源来更好地控制adsense。）</p>
<p>但是很多网管仍然认为一旦把adsense代码粘贴到网页上之后，你所能做的就只剩下等待和观望。</p>
<p>事实原非如此！google提供了很多功能来控制你的广告，尤其是一些可视化的图行和表格。很好地利用这些资源，你可以很容易地在几分钟之内就把你的点击率翻上好几番。</p>
<p>我的Adsense经验</p>
<p>我是从2003年6月开始使用adsense的，起初只是在几个网页上投放了很少的adsense广告。</p>
<p>第一天结束的时候，我已经有了几千个adsense展示，带来了总计&#8230;..3.00美元的收入。我气得差点一把火把房子烧了。</p>
<p>尽管那时我没看出adsense有什么潜力，但是我想多放它几个页面也没有坏处。几个月之后，我的adsense展示提高了25倍，收入却仍然没什么变化。那是我作为一个网站广告发布商最低潮的时候。我的点击率太低了，每天需要几千个访问者才能挣到30美元。</p>
<p>就在那时候，我想不能再这样了——必须要改变一些东西了！</p>
<p>2004年4月末——我注册adsense十个月之后——终于发现了一直以来所忽略的东西。那是一个激动人心的时刻，我感觉就像突然开了窍一样。</p>
<p>于是我立刻开始试验我的google广告，尝试各种不同的广告位置和颜色，看看我的想法是否有效。<br />
很快有了结果——而且简直太好了！</p>
<p>我仅仅运用了几个很简单的方法（后面将会介绍），就把点击率提高了将近三倍，而收入提高到了600美元/天。我仍然记得2004年4月份那个金色的日子——对我来说过去的所有霉运都已经结束了。</p>
<p>我从一个adsense无名小卒到成为这个领域的指导者，现在每个月有5位数的adsense收入也不会让我吃惊。这是一个充满了学习和体验的精彩旅程。<br />
细节驱动的Adsense</p>
<p>挣如此多的钱是一件容易令人激动的事情。但是我从未因此而忽视了细节，从adsense挣大钱依靠的正是一些微不足道的细节。</p>
<p>每一个adsense发布商都知道，当一天结束的时候，所有的事情都归结到一点：统计数据！你的adsense报表也许并不令人惊异，但是养成一个仔细研读报表的好习惯是很重要的。当你开始从这些小数字中读出意义的时候，大的支票很快就要来了。</p>
<p>图1.1中所示的数据是互联网营销传说中的经典。这是一个我最近的一张adsense统计页面的截图，图中所有数据都是真实的。你可以看出我每天的收入，但是CPM和CTR等一些具体的数据被屏蔽了，因为根据google的条款我不能公开它们。<br />
发adsense的大财！</p>
<p>如你所见，今天adsense能够支付我买车的账单，我的住房贷款，我的上网费用，很多很多。</p>
<p>你是不是很想知道&#8230;&#8230;.</p>
<p>我究竟做了什么变得一夜之间腰缠万贯？！</p>
<p>这并不重要，重要的是，你要明白哪些是你现在立刻就能做的运用adsense发财的手段。</p>
<p>我的建议很简单&#8230;&#8230;.</p>
<p>不要被动接受你现在的adsense收入，现在开始努力去改善它。但是在你开始应用那些从论坛里找到的新方法之前，请注意一定要先了解google adsense使用条款。总有些网站发布商痛失他们的大笔adsense支票，仅仅因为他们太忙了没有时间去注意那些最基础的，同时也是性命攸关的adsense条款。</p>
<p>我喜欢按照规则游戏，非常小心地保证自己采用的那些adsense技巧和窍门都在规则允许的范围内。既然能够从adsense挣到如此多的钱，总是会有某些“利欲熏心的”想法挑逗着去我越轨，而这么做的结果只会让我的adsense帐号被封掉。</p>
<p>对许多网站发布商来说，adsesne就像是一只能够下金蛋的鹅。小心照看你的鹅——别为了一时的急功近利而断送了大好的钱途。</p>
<p>开始使用Google Adsense</p>
<p>2.1 基础：建立你的网站</p>
<p>本书的上一版发行之后，无数的人向我询问如何用adsense挣钱。我总是很愿意帮助他们，但是他们中的许多人甚至连个网站都没有。</p>
<p>这里有个基本的事实：想用adsense挣钱，你必须得有个网站。这一点没有替代方案。不过别害怕，天下没有比建网站更容易的事情了。然后你就可以用它赚到真正的钱。</p>
<p>我在这里简单介绍一下如何建立一个网站。你也可以从网络上找到大量的相关信息，我会告诉你一些有用的网址。如果你已经有了自己的网站，那么可以跳过这一段，直接到2.10看有关提高adsense收入的部分。</p>
<p>2.2 给网站取个好名字</p>
<p>首先当然要给你的网站想一个域名。不过这可不像说得那么简单。字典里几乎所以的好词都已经被注册得差不多了，很多被人拿来做投资。</p>
<p>然而这并不意味着你不能拥有一个又漂亮又廉价的域名。把两个词语用一个横杠连起来就是一个非常好的方法（比如：<A href="http://www.south-books.com/" target=_blank>www.south-books.com</A>）。而且如果你不用.com的域名，那么.net和.biz还是有很多很好的域名在等着你。</p>
<p>所以第一步应该是注册域名然后购买服务器空间。我最喜欢的站点之一是Globat，里面经常会提供一些诸如免费或降价一年之类的优惠服务。</p>
<p>其实域名注册服务商通常会提供一整套的解决方案：从拟定域名，注册域名到提供服务器空间，甚至包括提交网站到搜索引擎的服务。在拟定</p>
<p>域名的时候，你可以先考虑十个备选的方案，然后他们会告诉你其中哪些是可用的。购买一个域名的价格一般不会超过20美元/年。</p>
<p>如果你找不到一个可以用的好域名，那么我建议你去moderndomains.com或bestnames.com看看。那里有很多以兜售域名为生的公司。你会在其中发现一些好域名，但是价格也有可能从50美元到50000美元。认真考虑域名的性价比，一个好名字可能价格不菲，但是它会给你的网站带来源源不断地访问量。但是话说回来，12年前没有人知道Yahoo、Ebay、Google都是些什么东西。</p>
<p>2.3 选择服务器提供商</p>
<p>你需要找一个网络服务器提供商，把网站放到他的服务器里。你同样可以有很多的选择，这取决于你打算花多少钱以及你需要什么的服务。</p>
<p>一般来说，50兆的空间（足够存贮100张网页），完善的统计报告和7*24小时的服务是必须的。一旦你的网站出了问题无法访问，那么这期间的每一个小时你都在损失大笔的钞票。所以，确保服务器提供商会在最短的时间内修复你的服务器。</p>
<p>专业的网站服务器往往会比较昂贵，但是安全性比那些免费的空间存储服务要高得多，所以也是物有所值。</p>
<p>2.4 设计你的网站</p>
<p>过去你要懂得HTML才可以制作网站。现在Microsoft Frontpage或者NVU这样的软件省去了这种麻烦。只要你会用Word，你就能够制作网站。</p>
<p>你可以从使用这些软件中获得很多的乐趣，或者干脆雇一个专业人士来为你工作。</p>
<p>2.5 创建内容</p>
<p>在第八章中，我会详细说明如何创建内容以及如何通过优化内容来获得更多的流量和更高的adsense收入。现在你只需要记住一点：网站的内容决定了在你网站上的将会出现什么样的广告。这就是adsense的工作原理：用户点击广告因为它们和你的网站内容是相关的。</p>
<p>但是仅仅为了某个高价的关键词去建立一个网站是得不偿失的。google不喜欢这样的网站，你的访问者也不会喜欢。如果你的网站不能吸引访问者，就很难带来流量、链接和广告点击数。</p>
<p>但是仍然有很多简单的方法来创建内容。你会在第八章看到。</p>
<p>还要记住一点：google不会在某些特殊的网站展示广告。如果你打算在一个赌博的网站上投放adsense广告，还是趁早打消这个念头为好。</p>
<p>对于那些有争议的内容，我建议你参考adsense的服务条款，来判断哪些内容是google允许的的，哪些不是。那上面已经说得很清楚了。</p>
<p>2.6 搜索引擎优化</p>
<p>一旦你的网站建好了，你得让人们知道它。办法之一就是让它在搜索引擎上获得个很高的排名。</p>
<p>在互联网成千上万的搜索引擎中，只有三个是最重要的：Google、Yahoo和MSN。在第17章中，我们会讨论一些有关提高搜索引擎排名的具体方法。</p>
<p>如果你想走捷径，那么有很多的网络公司在做这种事情。他们会把你的网站提交给搜索引擎，并且优化你的网站直至它出现在搜索引擎一个很靠前的位置上。Submit Express提供了一些免费的服务，希望能够对你有所帮助。</p>
<p>2.7 链接</p>
<p>搜索引擎的排名取决于很多因素。其中一个就是你的网站所获得外部链接的数量。至少google是这样思考的：如果你有一个介绍铁路模型的网</p>
<p>站，同时有很多其他的铁路模型网站都和你的网站做了链接，那么这就说明了铁路模型爱好者们认为你的网站相当不错。搜索引擎也就愿意把</p>
<p>你的网站推荐给那些正在搜索铁路模型的人们。如此一来，你就可以免费获得很多的访问量。</p>
<p>和别的网站交换链接是一个获得外部链接的好办法。你甚至可以在自己的网站上专门建立一个页面来放置它们。</p>
<p>在第17章里你会看到很多关于搜索引擎优化的技巧和策略。</p>
<p>2.8 Adsense——开始赚钱吧！</p>
<p>当你已经完成了上面的步骤，准备好——你可以开始用Adsense赚钱了。Adsense的申请步骤非常的简单易懂。</p>
<p>首先，你要告诉google你是代表公司还是个人。这一点很重要，因为他们得知道把你的支票寄到哪里。然后，你还要选择内容相关广告还是搜索广告，或者两者都要。（内容相关广告是更好的选择，但是我也会告诉你如何从搜索广告中获利。）</p>
<p>一旦你的申请审核通过，只要复制粘贴几行代码到网页中就大功告成了。</p>
<p>2.9 Google的政策</p>
<p>Adsense在工作。我知道它在工作，因为我看到了统计数据，支票和银行存款。我所采用的所有提高adsense收入的方法都是完全“合法的”，都是严格按照google的政策来执行的。</p>
<p>这一点至关重要。你可以欺骗adsense，但是后果很严重。你可以按照google的游戏规则赚很多钱，但是如果你把广告放到没有任何内容的网页上或者鼓动人们来点击广告，那么结果只能是被踢出局，而你一个子儿都拿不到。</p>
<p>你可以在这里<A href="http://www.google.com/adsense/policies" target=_blank>http://www.google.com/adsense/policies</A>看到哪些行为是允许的，哪些是被禁止的。尤其要注意的是以下几方面：</p>
<p>不要改动代码</p>
<p>你必须把adsense广告代码原原本本地复制到网页中，不要改动任何东西！Adsense程序允许你选择颜色和广告位置（这些正是增加你的广告收入的因素）。冒改动广告代码的风险可能会给你带来终身出局的悲剧。</p>
<p>不要禁不住诱惑</p>
<p>当广告出现在你的网页上之后，你还是离它们远一点为好。你可能会企图告诉你的浏览者“点我的广告吧”，但是一旦这种做法被google发现，你就完了。google当然也希望浏览者多点击广告，但前提是他们对广告本身有兴趣，而不是其他的原因。其实，只要你用对了方法，他们自然会去点。</p>
<p>网站内容问题</p>
<p>google非常关注它的广告出现在什么地方。它不想总是有广告商向它抱怨自己的广告出现在某个赌博或者色情网站上，或者出现在某个广告比内容还多的页面上。如果你的网站内容有这方面的问题，赶快改一下。</p>
<p>无效点击</p>
<p>最严重的作弊行为莫过于自己点击自己的广告了，使用某些自动点击广告的程序也属于此范畴。</p>
<p>按规则赚钱是很容易的事情，不要做任何越轨的事情！</p>
<p>2.10 像1-2-3那么简单！</p>
<p>只需要做以下三步就可以提高你的adsense收入。</p>
<p>1. 优化广告</p>
<p>使广告更加吸引访问者；</p>
<p>2. 优化网站</p>
<p>带来更有针对性的广告（google的话说“内容相关性更高”）；</p>
<p>3. 跟踪访问者行为</p>
<p>如果你搞不清楚你采用的方法哪些是有效的，哪些是无效的，就好比在黑夜里射击。</p>
<p>好的跟踪工具可以告诉你很多有关访问者的行为，回答诸如“他们在我的网站上寻找什么？”和“他们点击什么广告”之类的问题。一旦你搞懂了其中的含义，发大财的日子就不远了！</p>
<p>但是这不是那么容易就看明白的，否则就不会有那么多人挤在adsense论坛里抱怨他们那少的可怜的adsense账单了。</p>
<p>其实这些人并不是懒汉，他们只是不知道该怎么做而已。</p>
<p>在这里，我再次想你保证，如果你认真地按照我教给你的方法去做，你一定会挣得和我一样多。</p>
<p>如何通过优化广告提高点击率</p>
<p>3.1 广告形式：美化你的广告</p>
<p>你喜欢哪一种类型的广告：旗帜？摩天大楼？长方形，还是正方形？边框和背景用什么颜色？</p>
<p>有成千上万种方案可以供你选择。许多人让google替他们决定，结果通常是adsense系统默认的外观设置。他们犯了多大的错啊！我的经验告诉我，这种做法无异于把到手的钱丢进河里。</p>
<p>我也曾经浪费了几乎一整年的时间，只挣到了我本应得到的十分之一的收入，仅仅因为我懒得去调整广告的颜色和位置。</p>
<p>展示在网页上的adsense广告，它们的形状、颜色、位置可以有无数种组合方式。你可以每天花上几个小时来试验每一种可能的组合。但是，谁会做这么蠢的事呢？</p>
<p>让我来告诉你几条最基本的规律，然后你的点击率就会成倍的增加。</p>
<p>3.2 别让你的广告看起来像广告</p>
<p>人们不是为了看广告而访问你的网站，他们要的是内容。</p>
<p>如果你的广告使用非常刺眼的颜色，很粗的边框或者醒目的图片，那么访问者很容易就认出这是广告，结果就是对它们视而不见。</p>
<p>如果你的广告位于网页的顶端或者底部，或者别的什么角落里，等待它们的也将是被人忽视的命运。所以，你明白了吧，让广告看上去像是网页正文的一部分，才会被人重视，也才会被点击。</p>
<p>今天的人们已经习惯了对旗帜状的东西熟视无睹，他们痛恨弹出窗口，厌倦了广告，对所有免费赠送之类的事情都保持怀疑主义的态度。</p>
<p>那么，怎样赢得他们的信任？很简单——不要让他们以为那是广告。</p>
<p>下面几个小窍门可以大大提高你的点击率。</p>
<p>3.3 用文字广告代替图片广告</p>
<p>文字广告的优势比图片广告多得多。</p>
<p>A.采用合适的广告形式，文字广告可以很好的和网站内容结合成一体。而图片广告在外观上则不会有那么多的选择，你只能改变它的尺寸和位置。</p>
<p>B.你可以在一个旗帜广告的空间里放置多个文字广告，人们喜欢拥有更多的选择。</p>
<p>C.几个外观协调的文字广告放在一起不会显得乱七八糟，而旗帜广告就没那么容易做到。</p>
<p>D.人们讨厌旗帜广告，看都不看它们。许多试验也证实浏览者更关注与网站内容相关的文字广告。</p>
<p>图3.1 这个旗帜广告很醒目地展现在那里，但是谁会去点击它呢？想要比较不同的广告形式和外观，没有比Google官方的指南更好的资料了<A href="https://www.google.com/adsense/adformats" target=_blank>https://www.google.com/adsense/adformats</A>。</p>
<p>3.4 最佳的广告尺寸</p>
<p>现在你已经会使用文字广告了，并且使它看上去不那么像广告。接下来它还需要给一个特定的尺寸。多大的尺寸比较好呢？</p>
<p>答案是336*280的大矩形。</p>
<p>为什么？原因很简单，因为它能够带来最高的点击率。我自己的研究表明，这种尺寸的广告看上去非常像是网页正文的一部分。我对所有的adsense广告尺寸都做过试验，它的效果是最好的。<br />
其他人也告诉过我相同的结论。我只要知道这一条就足够了！</p>
<p>其次的选择是300*250的中等矩形。两个这种大小的广告并排放在一起效果非常好，而且对大多数网页都合适。</p>
<p>我也推荐你采用“宽幅摩天大楼”，当然，只要文字的，并且把它放在网页紧贴右侧边缘的位置。在第四章中我会告诉你为什么要把这三条结合起来。</p>
<p>你是否想过这个问题，几乎所有的PC机使用者都是右手拿鼠标（即使像我这样的左撇子也是用右手）。显示在右侧边缘的广告在“心理上”缩短你的右手和屏幕之间的距离。我认为，这种“亲密”的关系会使浏览者感觉更加舒适，因而也更容易去点击链接。</p>
<p>远离468*60的广告！</p>
<p>很多人注册adsense之后的第一件事情就是去弄一个468*60的广告。</p>
<p>大错特错！</p>
<p>我有一个理论能够解释他们为什么会这么做，同样的道理也可以解释为什么468*60的广告是点击率最差的。</p>
<p>大部分网站管理员有这么一个思维定势：他们认为自己的广告最好能够和传统的网络广告保持一致。那应该是什么样子的呢？对了，就是468*60这个样子的。我们对它太熟悉了，太喜欢了，所以&#8230;&#8230;结果&#8230;&#8230;就是被忽略。</p>
<p>所以它的点击率是如此的低，即使某些有图片作装饰也好不到哪里。</p>
<p>468*60的广告仿佛在向人们大叫：“嘿，我是广告！千万别点我！实际上，你应该里我越远越好！”</p>
<p>我很少发现这种广告的效果有好的时候，所以建议你别用它，也建议你的浏览者别去睬它。</p>
<p>色彩可以提高你的点击率</p>
<p>4.1 设计你的网站</p>
<p>我曾经出席过一个时装展示会，整场展示会所有的模特都穿着同样的黑色套装。太单调了？不一定！这个展示会是用来展示白金首饰的，所以所有的服装都被设计成衬托首饰的目的——而不能分散观众的注意力。</p>
<p>你当然不必把整个网站都弄成同一种颜色，而是要想办法让广告成为整个页面中最吸引浏览者注意的部分，就像那些白金首饰一样。</p>
<p>许多带有强烈图形元素的网站确实很能吸引眼球，但同时也会影响广告的效果。</p>
<p>好的Adsense广告的展示页面需要非常审慎的设计，诸多视觉元素例如字体、字号、颜色、图片、表格，等等，都不能随随便便地选择。</p>
<p>仔细装扮你的adsense广告，让它们成为网站上璀璨的明珠。</p>
<p>图4.1 在这个网页中，Tim Carter运用巧妙的设计使得广告处于整个页面注意力中心的位置。<br />
<A href="http://www.askthebuilder.com/457" target=_blank>http://www.askthebuilder.com/457</A> &#8230; iveway_Update.shtml</p>
<p>4.2 让边框走开！</p>
<p>这个再简单不过的小窍门可以让你的点击率翻一番！</p>
<p>早在互联网出现之前，报纸和杂志上的广告就被一个又粗又重的边框很醒目地标记出来，所以边框和方块渐渐成为广告信息的象征。</p>
<p>带有明显的边框的广告会让你的网页看上去乱糟糟的。而且它们在把广告和其它信息分隔开来的时候，也分散了访问者对广告内容的关注。</p>
<p>Google提供了一个功能强大的调色板，你可以用它来给广告上色。</p>
<p>你只需要点击一下，就可以设置广告边框的颜色和网页的背景色一致，这不但节省网页的所占的服务器空间，而且页面看上去显得干净整洁，广告也更有吸引力。</p>
<p>你还要给广告背景色选一个和网页背景色一样的颜色。同样，如果广告是在一个表格里，那么使广告背景色和表格的背景色一致。所以关键就是让广告的边框和背景色与网页一致，这样广告看上去才像是网页内容的一部分。</p>
<p>图4.2 白的背景色总是很容易处理。如果你的网页背景色是白色，你马上就可以在调色板旁边的广告示例中看到调整的效果。</p>
<p>图4.3 千万要记住让广告的背景色和网页的背景色一致。即使看不到边框，上图的广告示例还是很明显地突出在白色的背景上。</p>
<p>4.3 文字也需要设计！</p>
<p>没错，字体、字号、字的颜色、广告颜色都必须和网页其它的文字元素相一致。这可以让广告更好地融入网页，也可以使访问者感觉到你很赞同这些广告的内容。</p>
<p>广告字体和正文一致也具有同样的效果：它们看上去天生就是你网站的一部分，而不是google带来的。</p>
<p>这样做的好处就是能够带来点击率。</p>
<p>图4.5 设计你的文字广告，提高点击率！在我的博客上，我选择了728*90的广告放在网页的顶部。</p>
<p>我在自己的博客上做了一个试验，把广告标题的颜色设置成了和网页正文标题一样的颜色，把广告正文的颜色设置成和网页正文一样，把广告背景色设置成网页的背景色，（我还改变了字体的大小），来观察点击率会有什么变化。</p>
<p>结果证明这种“三元素一致”（标题，正文和背景）的方法能够极大地提高点击率。</p>
<p>使用太多不同的字体会使网页变得难看，也容易让访问者感到迷惑。现在，尝试每一种合法的方法让广告“变成”网站内容的一部分。</p>
<p>还是那句话，别让你的广告看上去像广告！</p>
<p>4.4 蓝色是最好的</p>
<p>现在你明白了要把广告边框去掉，也会把字体和背景设置成和网页一致。</p>
<p>但是链接怎么办？访问者要点击就是它，它应该是什么颜色呢？</p>
<p>很简单——蓝色。</p>
<p>我过去常说所有的广告文字的颜色都应该和页面文字一样，包括链接。但是在我看过一篇关于蓝色链接的优点以及验证结果之后，我再也不说这话了。</p>
<p>这意味着相对于其它颜色，人们更喜欢点击蓝色的链接。</p>
<p>Adsense广告代码中设置链接颜色的那一行代码是：Google_color_link=”#color”;</p>
<p>“#color”是十二进制的颜色数字，你应该把它设置成#0000FF。</p>
<p>使用蓝颜色的链接可以让你的点击率提高至少25%。</p>
<p>4.5 我的URL指向哪里？</p>
<p>那么你已经会设置广告文字的颜色和链接的颜色了。</p>
<p>但是还有URL。让URL出现在广告上，是Google的规则之一。但是你不一定非要让浏览者看到它。</p>
<p>一个可行的办法是把URL设置成和广告文字一样的颜色，这样它看上去就非常不明显，不至于分散浏览者的注意力——它应该是在链接上的。既然google提供了这些工具给你，为什么不用呢？</p>
<p>请注意728*90和468*60的广告是不会显示URL的。这并不是Google的错误，它就是这样设计的。</p>
<p>4.6 故意的不一致</p>
<p>除了上面所说的几种方法之外，还有一种策略效果也很好。</p>
<p>如果你把广告放在网页顶端，你可以故意把它的颜色和外观设置成不一致。</p>
<p>这种不一致会产生两个强有力的视觉区域，带给浏览者两种不同的体验。</p>
<p>第一个区域总是在网站首页的顶部，在主要内容上方。把广告标题和文字的颜色设置成和正文标题一致。（重要的一点——这种广告的URL是隐藏的，所以只有某些文字广告才可以这么做。）</p>
<p>这种做法的效果是这些在正文上方的广告看起来就像是你网站内容的关键之处，因此更容易被点击。浏览者感觉他们正在访问网站中另一个重要的区域。</p>
<p>图4.6 <A href="http://www.dressesforthewedding.com/weddingdresses/" target=_blank>http://www.dressesforthewedding.com/weddingdresses/</A> 有两个区域：顶部的广告区和下方的文章区。这种设计使他们的广告收入提高了五倍。</p>
<p>第五章&nbsp;&nbsp;最大化广告的可见度和用户响应度</p>
<p>5.1 广告位置：你把它们放在哪儿？</p>
<p>位置就是一切。如果不在第一位置让观众看见，就算是全世界最漂亮的广告也等于一张白纸。但是经过这么多次的Google Adsense投放之后，我想告诉你的是：最可见的位置并不总意味着最好的效果。实际上，很可能正因为它们“太显眼”了而被浏览者视而不见。</p>
<p>真正起作用的广告位置是那些最有可能吸引浏览者注意、占用他们最多时间的地方。</p>
<p>你可以巧妙地利用图形、表格和其他的布局手段在网页上创建几个“景点”来吸引浏览者。</p>
<p>一旦他们被这些有意思的内容抓住，就很有可能阅读并点击相关的广告。这才是不折不扣的google所需要的“真正有意图”的、而不是盲无目的的点击率。</p>
<p>这里有几个小技巧来帮助你获得这类的点击率。</p>
<p>5.2 随流而动</p>
<p>确定浏览者的阅读模式。最先吸引他们注意的是什么？让他们产生点击的又是什么？</p>
<p>就像我说的，你要把广告放在能吸引浏览者注意的内容上，而不是没有人会看的地方。</p>
<p>网站的访问者会跟随内容而动，所以要保证你的广告也跟随内容而动。</p>
<p>仔细看一看网页的设计和布局，确定大多数访问者都能看到的地方，把这些地方标记出来作为可能的广告位。</p>
<p>实际上，Google已经为我们提供了一张“热图”，它能够帮助我们更有效率地做这个工作。<br />
<A href="https://www.google.com/adsense/support/bin/answer.py?answer=17954" target=_blank>https://www.google.com/adsense/support/bin/answer.py?answer=17954</A></p>
<p>图5.1 Google的“热图”显示了一个“普通”网页的热点区域。颜色较深的地方是浏览者最经常关注的区域。但是，记住，没有哪个网页是“普通”的，所以，确认你自己的热点区域。</p>
<p>Google承认网页上某些区域相对其它区域的广告效果更好。研究者也发现当访问者浏览一个网页时，他们的视线总是先从左上角开始，然后从左至右，逐行向下。</p>
<p>上面说的这些都没错。但是每一个网页的热点区域都是不同的，只有实践才能出真知。</p>
<p>5.3 折页线以上</p>
<p>互联网中有个通用的规律：人们花大部分的时间在网页的“折页线以上”。</p>
<p>当人们打开一个网页时，所做第一件事情就是在拖拉滚动条之前获取尽量多的信息。那个不用拖动鼠标就可以看到的区域被称作“折页线以上”。</p>
<p>这里就是你的广告应该出现的地方。</p>
<p>在折页线以上出现的链接数目对广告的点击率有很大的影响。所以广告越多不一定意味着钱也越多。</p>
<p>Google总是把价格最高的广告放在最上面，把价格最低的放在最底下。</p>
<p>如果你在一个网页上放了三、四个广告，那么价格低的广告有可能“偷走”浏览者的注意力，并弄乱你的网页。</p>
<p>最好不要使广告之间互相竞争。如果你想增加点击单价，记住：越少广告越好！尤其是在折页线以上。</p>
<p>让我们看两个例子：</p>
<p>图5.2 MegaBookshop.com这个页面的折页线以上有一个搜索框，一个推荐产品，一个产品目录和一个Adsense广告。</p>
<p>图5.3 SafetySurf.com并不是最吸引人的那种网站，但是注意它在折页线之上的adsense广告链接。</p>
<p>你猜一猜哪一个网站会有比较高的点击率呢？答案是后者的点击率是前者的三倍。所以，不要让你的访问者在折页线之上有太多的选择。</p>
<p>5.4 利用表格</p>
<p>我在前面说过，高点击率的原则之一就是把广告融入内容。表格就是一个很好的把广告融入内容的方法。</p>
<p>在下面的例子中，Chris Pirillo很巧妙地把广告放到了一个表格中，从而使页面变得整洁美观，广告点击率也创了新高。让我们看看他是如何做的 <A href="http://www.lockergnome.com/" target=_blank>http://www.lockergnome.com/</A></p>
<p>图5.4 注意这些表格使网页看上去非常整齐。</p>
<p>想要在你的网页上实现上面的效果吗？</p>
<p>Dave Taylor共享了这段简单的代码来创建一个左对齐的包含广告的表格。你只要把这段代码粘贴到你希望广告出现的位置就可以了。</p>
<p>非常容易！</p>
<p>包含adsense的左对齐的表格：<br />
&lt;table border=”0&#8243; align=”left”&gt;&lt;tr&gt;&lt;td&gt;<br />
google adsense代码放在这里<br />
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</p>
<p>包含adsense的右对齐的表格：<br />
&lt;table border=”0&#8243; align=”right”&gt;&lt;tr&gt;&lt;td&gt;<br />
google adsense代码放在这里<br />
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</p>
<p>5.5 Adsense链接单元</p>
<p>在我们讨论了以上这些方法之后，你可能还会想知道哪一类广告应该放在什么地方。</p>
<p>Adsense链接单元允许你在一个方框内放4-5个链接，尺寸从20*90到200*90，这就意味着你可以把它放在网页边栏。</p>
<p>在同一个页面中，除了一个链接单元你还可以投放三个其它的广告单元。你也许会发现：如果浏览者在某一类的广告单元中找不到对他有帮助的信息，他有可能去找另一个。</p>
<p>Adsense链接单元和其它类型的广告不同之处在于它仅仅显示一个相关的主题列表，而不直接显示广告。当访问者点击一个主题时，Google会在一个弹出的新窗口中显示广告。</p>
<p>也许有人认为链接单元的效果不好，因为人们必须点击两次你才能收到钱。没错，只有第二次点击才会带来收入。</p>
<p>但是这么想也不无道理：如果某个访问者愿意花时间去点击一个主题，那么他也很可能非常有兴趣（有可能）在结果页面中点击一个真正的广告。因为有人发现：几乎每一个点击链接单元的人都会去点击下一页中的广告。</p>
<p>我在多个网站上测试过链接单元，结果也差别很大。所以很难说它适不适合你。</p>
<p>在第一个案例中，我把链接单元放在一个以资讯为主的网站上，它的访问者都是些最普通的网民。结果根本不值一提。这么说吧，你大概可以用这些钱来买一大块巧克力。</p>
<p>在第二个案例中，我把链接单元放在一个产品介绍网站上，访问者范围比较窄。但是结果令人难以置信的好！</p>
<p>结果是显而易见的，如果你想在网页上投放adsense链接单元，你需要把它们放在：</p>
<p>1. 一个专注于特殊行业内容的网站上。大众化的网站也只能给你带来大众化的广告收入。</p>
<p>2. 折页线之上，不要太多其它的链接。对于链接单元，这一点很关键：如果你的访问者打算点击一个链接，它一定要能够给你带来钱。</p>
<p>在高价关键词的网站上投放链接单元是个好主意。如果有人到你的网站上寻找与某个高价关键词有关的信息或产品，他们很可能会点击链接单元。</p>
<p>让我们看一个例子：</p>
<p>图5.5 LockerGnome.com把链接单元放在了一个链接列表之上，很好与网页融为一体。</p>
<p>我已经把Chris Pirillo的网站作为一个很好的adsense广告样板介绍过了。我没有看过他的adsense统计数据，但是我关注他的网站有很长的时间了，有充分的理由相信他的广告收入肯定非常高。</p>
<p>这页中间的一列是经典的adsesne广告位置。他用了一个中等（或大）矩形、蓝色链接、黑色文字和浅色的URL。把广告放在右侧内置的位置是有道理的。人们总是从左向右看。我的实验也证明了放在右边的广告效果是最好的。</p>
<p>看看他的连接单元在哪里：左上角那一列，折页线以上。这使得浏览者第一眼就能看见它，只要链接单元与网页内容相关，就能获得1%-2%的点击率。如果你的网站中也有这样的位置，不妨也来试一试。</p>
<p>5.6 水平的链接单元</p>
<p>Google最近推出了一种新的水平的链接单元形式。这带来了很大的变化。有的广告用户用这种链接单元把点击率提高了200%以上。</p>
<p>把一堆链接放在另外一堆链接上面虽然效果不错，但是如果把它放在文字中间就太显眼了。现在这种水平的链接单元可以很完美地融入到文章中。</p>
<p>图5.6 新的水平广告链接非常适合放在文章中，而且能够很清楚地显示出一系列关键字。</p>
<p>每个页面只能放一个链接单元，而访问者必须点击两次你才能挣到钱。但是这仍然值得你把链接单元偷偷放到一大篇文章中去。我的建议是你把它放在文章的上面或者中间，千万别放在文章的结尾。</p>
<p>5.7 使用多个广告单元</p>
<p>Google允许在同一个页面上放置三个广告单元，一个链接单元，和一个搜索框。这对网站发布商来说意味着什么呢？</p>
<p>一个真正的金矿：你现在可以有更多的选择来留住访问者，因为google在每个一广告单元中显示的广告都是不一样的。</p>
<p>抓住这个机会，在你访问量最高的页面加入新的内容。利用漂亮的小图片来吸引访问者向下浏览，或者把他们引导到你的广告上去。B2B的网站不妨用一个每天更新的卡通栏目来播出商业信息和新闻。而放在这个栏目下面的广告则会获</p>
<p>得很高的“收视率”。</p>
<p>这就是增加你的广告曝光率的策略，高曝光率就意味着更高的点击率和更多的钱。</p>
<p>使用多个广告单元，你可以在最合适的位置放置最合适同的广告。</p>
<p>第六章 控制你的广告</p>
<p>6.1 吸引相关的广告</p>
<p>合适的颜色和位置可以帮助你提高点击率，但是它们决定不了哪些广告会出现在你的网站上。</p>
<p>理论上说，这是由Google控制的，用户无法选择。实际上，你还是可以用一些办法来阻止那些与网站内容不相关的广告出现在你的网页上。</p>
<p>广告的相关性越强，浏览者点击广告的几率就越大。</p>
<p>最关键的影响因素当然是你网站的内容。Google的机器人会检查你的网站并根据网站的内容和某些关键词来展示广告。</p>
<p>记住一点，google机器人读不懂图片、flash或者其它任何非文字的内容。在第八章我们会详细讨论有关内容的问题，不过记住，你必须给google能得看懂的网页，google才会给你所希望的广告。</p>
<p>6.2 让title、目录和标题相关</p>
<p>google机器人阅读网页的机理是和可口可乐的配方一样的绝对机密。但是网站的title确实会对它产生一定的影响。</p>
<p>如果你在把网页文件上传到服务器之前，用本地机浏览这些网页，你会发现adsense是根据网页文件所在的目录的名称来展示相关的广告。这给了我们很大的一条线索，至少是决定因素之一：google分析目录名。</p>
<p>实际上，不单目录名如此重要，文件名本身也一样。</p>
<p>如果你有一个关于婚纱（wedding trains）的网站，其中一个网页的文件名，比方说是trains.php，那么有很大可能你会在这一页看到美国铁路公司（Amtrak）和Caltrain的广告。很显然，它们不会带给你多少点击。试试把文件名改成weddingtrains.php，你看到婚礼相关广告的机会会大得多。</p>
<p>如果你发现网站上出现的广告和网站内容毫不相干，那么首先应该纠正的是目录名和title，重新给它们起一个更相关的名字。</p>
<p>标题也很重要。不要给它们用&lt;font&gt;标签，尝试一下&lt;h1&gt;。标题最好能包含内容关键字，这有助于机器人的识别。</p>
<p>如果整个网页中一个标题都没有，试着加几个上去。</p>
<p>6.3 找出关键字</p>
<p>google的机器人在网站上寻找关键字，然后向上递交一个报告，adsense根据这个报告决定投放哪些广告到网站上。假如你有一个关于养老金计划（pension plan）的网站，那么你的关键词就应该是“退休(retirement）”、“401k”、“养老金（pension）”之类的词。</p>
<p>选择正确的关键词不仅能使你得到相关的广告，而且还能帮助你找到价格最高的广告。</p>
<p>网上有很多工具可以告诉你人们打算为这些关键词出多少钱。<A href="http://www.overture.com/" target=_blank>www.overture.com</A>，<A href="http://www.googlest.com/" target=_blank>www.googlest.com</A>，</p>
<p>keywords.clickhereforit.com都是这一类的网站。</p>
<p>再次提醒读者，不要为了某个高价关键词专门建一个网站。但是如果你已经知道“401k”比“退休”的价格高，那么当然要用高价的关键词啦。</p>
<p>12.4节有更多关于查询最新的高价关键词的方法。</p>
<p>6.4 关键词密度</p>
<p>好的关键词能带来好的广告，但是，也并非多多益善。</p>
<p>没有公式来教你如何计算一个页面上合适的关键词数量。你必须不断的实验。关键词，尤其是高价关键词的密度，是一个很难说清楚的事情。如果你打算在一个汽车网站设计一个关于的汽车租赁（高价关键词）的页面，你也许会发现必须要建立好几个相关的网页才会出现这类的广告。</p>
<p>通常的看法认为，在标题正确的前提下，如果广告和网页的内容不匹配，那么你需要在网页中多次重复关键词，并且意义越精确越好。例如，“灭火器”这个词的效果就要比“消防设备”好得多。</p>
<p>6.5 关键词位置</p>
<p>关键词的位置并不是那么重要，只要它们的意义正确，数量合适，并且出现在合适的网页上就可以带来相关的广告了，对吗？</p>
<p>错。</p>
<p>在Adsense应用中，最让人匪夷所思的现象之一就是你把同一个关键词放在网页不同的位置结果会带来不同的广告。</p>
<p>根据我的经验，最重要的位置是在adsense广告的正下方，那个位置的关键词最容易对广告产生影响。举个例子，如果在adsense广告的正下方出现“小丑”这个词，那么广告很可能是关于马戏团和小丑的。</p>
<p>记住这一点，你就可以让广告花样翻新。比如你有一个关于“野营”的网站，你也许会发现很多帐篷和睡袋的广告，这很好。但是如果你想要几个关于Yosemite或者移动房屋的广告，在广告位置正下方提及一两次这类的关键词也许就能实现。</p>
<p>尽管如此，adsense还是试图展示包含整个网页内容的广告。假设你有一个园艺网站，在广告位下方出现了“卷心菜”这个词，那么你看到的关于种植卷心菜的广告还是要比卷心菜食品广告要多。</p>
<p>关键词位置的技巧可以让你得到至少一两个与众不同的广告，所以确实值得一试。</p>
<p>6.6 关键词框架</p>
<p>网页经常得不到正确的关键词的原因之一是导航条和其他的非内容信息影响了google阅读网页。如果链接和不相关的词占据了很多的网页空间，影响会很糟糕。</p>
<p>避免上述情况出现的办法之一是建立框架。把所有的主要内容放在一个框架里，导航信息放在另一个框架里。只有前者带有广告代码，这样你的关键词就不会受其他无关内容的影响。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/google-adsense-youhua/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>逃离Google补充材料的五个技巧</title>
		<link>http://www.kuigg.com/google-buchongcailiao</link>
		<comments>http://www.kuigg.com/google-buchongcailiao#comments</comments>
		<pubDate>Mon, 02 Jul 2007 17:33:49 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=28</guid>
		<description><![CDATA[现在的Google Sandbox不幸有两个级别，你只有获得了Google的信任，才会得到网页排名。实际上，这时考虑网页排名为时尚早，因为网页首先必须被编入索引才有排名这个问题。因为，如果当你的页面大多数被归类于补充材料时，你其实并没有真正被索引! 为什么页面会被归类于“补充材料”，究竟发生了什么事?显然，Google索引页面文件是非常挑剔的，据传她唯一感兴趣的站点是那些长期的、值得信赖的站点。 “那么补充材料到底是什么?” 我不会根据Google的官方答案来鹦鹉学舌，我总结了以下几条： Google补充材料会把页面打入西伯利亚的牢房。 Google补充材料是和正常Google索引相对的。 Google补充材料会被赋予极低的信任值。 Google补充材料不会被用于任何重要的排名。 现在，假定你的页面已经进入了Google的补充材料，这里有五个方法，可以助你尽快逃离这个地狱。 给每个页面不同的标题尽管这极其简单，但依旧很多人没有这么做。我们绝对没有理由不这样做，这有助于SEO，可读性提高，获得高点击率等。 给每个页面不同的META DESCRIPTION 标记记得我们都以为META标记已经没用了，不，Google还在利用这些标记。让我们不要浪费时间了，只要给所有页面一个唯一的 META DESCRIPTION 就可以了，甚至只是复制一下标题内容到里面也可以。 做到每页都具有良好的独特的内容这个问题很常见，原因也有不少，最常见的是在不同的URL地址中有很多内容块是相同的，这通常是因为网站的CMS或者购物车造成的，一些内容较少的页面或者空白也会存在这样的问题，凭我的经验(可能权威性不够，只是我的猜测)，一个页面要有至少100个字才能成为较为独特的内容。 多增加一些权威度高的反向链接链接通常是很有效的，少数几个来自已被评级的老域名的链接会使得一个新站具有更高的权威度，从一个高PageRank的网站获得链接的效果更佳。 在站内页面中多建立内部链接这可以让Google觉得你的网站并不是一个空架子，想想看，当一个只有20多页、数十个坏链接，而且这些无效链接百分之百是指向同一个页面。通常情况下，网站页面会被正常索引，不过大多数内部页面已经进入补充材料了。 做到上面那些后，大致就可以恢复正常了。通常情况下最难的部分是建立外部的有效反向链接，以取得可信的权威度，这方面的只是可以参考我的其他相关内容。 翻译人：William Long 英文原文：How to： Escape Google‘s Supplemental Index 原载: 点石互动搜索引擎优化博客]]></description>
			<content:encoded><![CDATA[<p>现在的Google Sandbox不幸有两个级别，你只有获得了Google的信任，才会得到网页排名。实际上，这时考虑网页排名为时尚早，因为网页首先必须被编入索引才有排名这个问题。因为，如果当你的页面大多数被归类于补充材料时，你其实并没有真正被索引!<br />
 为什么页面会被归类于“补充材料”，究竟发生了什么事?显然，Google索引页面文件是非常挑剔的，据传她唯一感兴趣的站点是那些长期的、值得信赖的站点。<br />
 “那么补充材料到底是什么?”<br />
 我不会根据Google的官方答案来鹦鹉学舌，我总结了以下几条：<br />
 Google补充材料会把页面打入西伯利亚的牢房。<br />
 Google补充材料是和正常Google索引相对的。<br />
 Google补充材料会被赋予极低的信任值。<br />
 Google补充材料不会被用于任何重要的排名。<br />
 现在，假定你的页面已经进入了Google的补充材料，这里有五个方法，可以助你尽快逃离这个地狱。<br />
 给每个页面不同的标题尽管这极其简单，但依旧很多人没有这么做。我们绝对没有理由不这样做，这有助于SEO，可读性提高，获得高点击率等。<br />
 给每个页面不同的META DESCRIPTION 标记记得我们都以为META标记已经没用了，不，Google还在利用这些标记。让我们不要浪费时间了，只要给所有页面一个唯一的 META DESCRIPTION 就可以了，甚至只是复制一下标题内容到里面也可以。<br />
 做到每页都具有良好的独特的内容这个问题很常见，原因也有不少，最常见的是在不同的URL地址中有很多内容块是相同的，这通常是因为网站的CMS或者购物车造成的，一些内容较少的页面或者空白也会存在这样的问题，凭我的经验(可能权威性不够，只是我的猜测)，一个页面要有至少100个字才能成为较为独特的内容。<br />
 多增加一些权威度高的反向链接链接通常是很有效的，少数几个来自已被评级的老域名的链接会使得一个新站具有更高的权威度，从一个高PageRank的网站获得链接的效果更佳。<br />
 在站内页面中多建立内部链接这可以让Google觉得你的网站并不是一个空架子，想想看，当一个只有20多页、数十个坏链接，而且这些无效链接百分之百是指向同一个页面。通常情况下，网站页面会被正常索引，不过大多数内部页面已经进入补充材料了。<br />
 做到上面那些后，大致就可以恢复正常了。通常情况下最难的部分是建立外部的有效反向链接，以取得可信的权威度，这方面的只是可以参考我的其他相关内容。<br />
 翻译人：William Long<br />
 英文原文：How to： Escape Google‘s Supplemental Index<br />
 原载: 点石互动<A href="http://www.dunsh.org/" target=_blank>搜索引擎优化</A>博客</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/google-buchongcailiao/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>45个影响网站排名的因素</title>
		<link>http://www.kuigg.com/wangzhan-paiming-yinsu</link>
		<comments>http://www.kuigg.com/wangzhan-paiming-yinsu#comments</comments>
		<pubDate>Mon, 02 Jul 2007 17:27:42 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=27</guid>
		<description><![CDATA[&#160; 内部因素 URL中出现关键词 网页Title中出现关键词 常规内容中出现关键词 在页面的第一段中出现关键词 在页面的最后一段中出现关键词 Heading 标签 比如h1,h2中出现关键词 站内的链接中出现关键词 导向相关内容的导出链接 导出链接中出现关键词 图片文件名中出现关键词 Alt标签中出现关键词 comment中出现关键词 合理的频率更新内容 内容对搜索引擎的展示位置 网站结构循环PR，而非散发PR 外部因素 大量的导入链接 从高PR值得网页获得导入链接 从相关内容网站获得导入链接 导入链接指向的网页有具体内容 锚文字中有关键词 锚文字周围有相关词 锚文字存在于文章或句子中 导入链接的时间长度，一般导入链接的存在时间有3-6个月 单向链接的价值高于交换链接 导入链接的页面的导出链接小于100个，流出链接越少越好 链接来自不同IP 合理的导入链接增长频率 你需要避免的事情 关键词堆积 所有的锚文字都相同 使用CSS或背景色隐藏内容，这是十恶不赦的大恶 使用JavaScript跳转 相同ip之下的网页直接进行大量交换链接 桥页和Cloaking，诱导搜索引擎的爬虫，这是十恶不赦的大恶 成人内容，违禁药品，赌博相关内容 内容重复 连向作弊的网站 站内的绝大部分网页有相同的网页title 加入到Link Farm或则Link交换类网站 尽量避免的问题 地址中存在动态变量 单一图片和Flash的网站 用Javascript制作的网站导航条或目录 用图片做网站导航而不加ALT标签 〈head〉〈/head〉之间有太多的代码 存在太多与网站主题无关的内容 导入链接中购买链接占多数]]></description>
			<content:encoded><![CDATA[<p>&nbsp;<br />
 内部因素<br />
 URL中出现关键词<br />
 网页Title中出现关键词<br />
 常规内容中出现关键词<br />
 在页面的第一段中出现关键词<br />
 在页面的最后一段中出现关键词<br />
 Heading 标签 比如h1,h2中出现关键词<br />
 站内的链接中出现关键词<br />
 导向相关内容的导出链接<br />
 导出链接中出现关键词<br />
 图片文件名中出现关键词<br />
 Alt标签中出现关键词<br />
 comment中出现关键词<br />
 合理的频率更新内容<br />
 内容对搜索引擎的展示位置<br />
 网站结构循环PR，而非散发PR<br />
 外部因素<br />
 大量的导入链接<br />
 从高PR值得网页获得导入链接<br />
 从相关内容网站获得导入链接<br />
 导入链接指向的网页有具体内容<br />
 锚文字中有关键词<br />
 锚文字周围有相关词<br />
 锚文字存在于文章或句子中<br />
 导入链接的时间长度，一般导入链接的存在时间有3-6个月<br />
 单向链接的价值高于交换链接<br />
 导入链接的页面的导出链接小于100个，流出链接越少越好<br />
 链接来自不同IP<br />
 合理的导入链接增长频率<br />
 你需要避免的事情<br />
 关键词堆积<br />
 所有的锚文字都相同<br />
 使用CSS或背景色隐藏内容，这是十恶不赦的大恶<br />
 使用JavaScript跳转<br />
 相同ip之下的网页直接进行大量交换链接<br />
 桥页和Cloaking，诱导搜索引擎的爬虫，这是十恶不赦的大恶<br />
 成人内容，违禁药品，赌博相关内容<br />
 内容重复<br />
 连向作弊的网站<br />
 站内的绝大部分网页有相同的网页title<br />
 加入到Link Farm或则Link交换类网站<br />
 尽量避免的问题<br />
 地址中存在动态变量<br />
 单一图片和Flash的网站<br />
 用Javascript制作的网站导航条或目录<br />
 用图片做网站导航而不加ALT标签<br />
 〈head〉〈/head〉之间有太多的代码<br />
 存在太多与网站主题无关的内容<br />
 导入链接中购买链接占多数</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/wangzhan-paiming-yinsu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>各省、自治区、直辖市通信管理局备案咨询热线号码</title>
		<link>http://www.kuigg.com/tongxinguanliju-dianhua</link>
		<comments>http://www.kuigg.com/tongxinguanliju-dianhua#comments</comments>
		<pubDate>Mon, 02 Jul 2007 17:23:12 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[其它]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=26</guid>
		<description><![CDATA[各省、自治区、直辖市通信管理局备案咨询热线号码&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 序号&#160; &#160; &#160; &#160; 名称&#160; &#160; &#160; &#160; 备案咨询热线 1&#160; &#160; &#160; &#160; 河北省通信管理局&#160; &#160; &#160; &#160; 0311-12300 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 0311-86699039 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; 0311-86859958 2&#160; &#160; &#160; &#160; 四川省通信管理局&#160; &#160; &#160; &#160; 028-87013129 3&#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>各省、自治区、直辖市通信管理局备案咨询热线号码&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br />
序号&nbsp; &nbsp; &nbsp; &nbsp; 名称&nbsp; &nbsp; &nbsp; &nbsp; 备案咨询热线<br />
1&nbsp; &nbsp; &nbsp; &nbsp; 河北省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0311-12300<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0311-86699039<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0311-86859958<br />
2&nbsp; &nbsp; &nbsp; &nbsp; 四川省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 028-87013129<br />
3&nbsp; &nbsp; &nbsp; &nbsp; 海南省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0898-66533681<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0898-66533682<br />
4&nbsp; &nbsp; &nbsp; &nbsp; 山东省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0531-82092828<br />
5&nbsp; &nbsp; &nbsp; &nbsp; 广东省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 020-87626810,87628386<br />
6&nbsp; &nbsp; &nbsp; &nbsp; 江苏省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 025-85039806<br />
7&nbsp; &nbsp; &nbsp; &nbsp; 青海省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0971-8588284<br />
8&nbsp; &nbsp; &nbsp; &nbsp; 陕西省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 029-88333377<br />
9&nbsp; &nbsp; &nbsp; &nbsp; 湖北省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 027-87796899<br />
10&nbsp; &nbsp; &nbsp; &nbsp; 山西省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0351-8788032<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0351-8788039<br />
11&nbsp; &nbsp; &nbsp; &nbsp; 内蒙古自治区通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0471-6684145<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0471-6684170<br />
12&nbsp; &nbsp; &nbsp; &nbsp; 西藏自治区通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0891-6329494<br />
13&nbsp; &nbsp; &nbsp; &nbsp; 广西壮族自治区通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0771-2628411<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0771-2639992<br />
14&nbsp; &nbsp; &nbsp; &nbsp; 安徽省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0551-5680622<br />
15&nbsp; &nbsp; &nbsp; &nbsp; 重庆市通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 023-68583779<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 023-12300<br />
16&nbsp; &nbsp; &nbsp; &nbsp; 宁夏回族自治区通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0951-12300<br />
17&nbsp; &nbsp; &nbsp; &nbsp; 天津市通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 022-60351158<br />
18&nbsp; &nbsp; &nbsp; &nbsp; 黑龙江省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0451-53005815<br />
19&nbsp; &nbsp; &nbsp; &nbsp; 吉林省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0431-8925397<br />
20&nbsp; &nbsp; &nbsp; &nbsp; 江西省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0791-6218176<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0791-6252504<br />
21&nbsp; &nbsp; &nbsp; &nbsp; 湖南省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0731-2338652<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0731-2338625<br />
22&nbsp; &nbsp; &nbsp; &nbsp; 甘肃省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0931-4501253<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0931-4501254<br />
23&nbsp; &nbsp; &nbsp; &nbsp; 上海市通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 021-63905006<br />
24&nbsp; &nbsp; &nbsp; &nbsp; 河南省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0371-65795110<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0371-65795119<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0371-65330166<br />
25&nbsp; &nbsp; &nbsp; &nbsp; 福建省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0591-28355716<br />
26&nbsp; &nbsp; &nbsp; &nbsp; 云南省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0871-3557966<br />
27&nbsp; &nbsp; &nbsp; &nbsp; 浙江省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0571-87078277<br />
28&nbsp; &nbsp; &nbsp; &nbsp; 新疆维吾尔自治区通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0991-5858733<br />
29&nbsp; &nbsp; &nbsp; &nbsp; 贵州省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 0851-12300<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0851-5624224<br />
30&nbsp; &nbsp; &nbsp; &nbsp; 辽宁省通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 024-86581199<br />
31&nbsp; &nbsp; &nbsp; &nbsp; 北京市通信管理局&nbsp; &nbsp; &nbsp; &nbsp; 010-63310094</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/tongxinguanliju-dianhua/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SEO工具集(最新整理)</title>
		<link>http://www.kuigg.com/seo-gongju-2007</link>
		<comments>http://www.kuigg.com/seo-gongju-2007#comments</comments>
		<pubDate>Mon, 02 Jul 2007 16:39:08 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=25</guid>
		<description><![CDATA[SEO工具集(最新整理) (1)内容与结构工具 搜索引擎抓取内容模拟器——可以模拟蜘蛛抓取指定网页Text,Link,Keywords及Description信息 http://www.webconfs.com/search-engine-spider-simulator.php 相似页面检测工具——检验两个页面的相似度.如果相似度达80%以上,将可能受到惩罚 http://www.webconfs.com/similar-page-checker.php Google Sitemaps 在线创建——在线创建 Google Sitemaps 网站地图文件 中文:http://www.xinqj.com/sitemap/sitemap.asp 英文:http://www.xml-sitemaps.com/ (2)综合查询工具 Webmaster Toolbox——可查询某个站点的Google Pagerank、Alexa世界排名、中国网站排名，以及在几大主要搜索引擎中的收录反向链接的情况。 http://www.flashplayer.cn/webmaster-toolbox/ 网站收录查询——同时查询Google,百度,Yahoo等8个搜索引擎的收录状况 http://tool.cndw.com/Shoulu/Index.asp 关键词排名查询——可以同时在3个搜索引擎中查询指定网页指定关键词的排名情况. http://www.seores.com/search/keywordrank.asp Google各服务器关键词排名查询——查询在Google各个服务器中,指定网页指定关键词的排名情况,可以作为一个升降的参考 http://tool.cndw.com/Rank/Index.asp &#160; (3)关键词工具 Google Adwords关键词工具——查询指定关键词的扩展匹配,搜索量,趋势和受欢迎度. https://adwords.google.com/select/KeywordToolExternal 百度相关搜索——按热门程序排序,列出指定关键词相关的扩展匹配及热门程度 http://d.baidu.com/rs.php 关键词密度分析工具——分析指定关键词在指定页面中出现的次数,及相应的百分比密度 中文:http://tool.cndw.com/Seo/Key_Density.asp 英文:http://www.keyworddensity.com/ (4)关键词热门排行及指数 百度排行榜:http://top.baidu.com 百度指数:http://index.baidu.com/ Yahoo排行榜:http://misc.yahoo.com.cn/top_index.html 搜狗指数:http://www.sogou.com/top/?IPLOC=CN1102 搜搜龙虎榜:http://www.soso.com/lhb/s_i_sosolhb.shtml (5)Google工具 Google Sitemaps——Google推出的一项免费服务,一个杰出的SEO工具 http://www.google.com/webmasters/sitemaps/docs/zh_CN/about.html Google Analytics——Google推出的免费分析服务.在市场营销和内容优化上提供很多专业报表.对搜索引擎营销有很大帮助. http://www.google.com/analytics/zh-CN/ Google Dance 查询工具——不仅可以查询Dance情况,还可以通过E-mail及时获得每月google dance通知 http://www.seochat.com/googledance/ 查看在GOOGLE各服务器上的PR值——利用这个工具,可以判断PR是否更新,预测更新后的PR值 http://www.seochat.com/seo-tools/future-pagerank [...]]]></description>
			<content:encoded><![CDATA[<p>    <A title="评分 0" href="http://www.im286.com/misc.php?action=viewratings&amp;tid=1986944&amp;pid=19777579"></A>SEO工具集(最新整理)</p>
<p> (1)内容与结构工具<br />
搜索引擎抓取内容模拟器——可以模拟蜘蛛抓取指定网页Text,Link,Keywords及Description信息<br />
<A href="http://www.webconfs.com/search-engine-spider-simulator.php" target=_blank>http://www.webconfs.com/search-engine-spider-simulator.php</A><br />
相似页面检测工具——检验两个页面的相似度.如果相似度达80%以上,将可能受到惩罚<br />
<A href="http://www.webconfs.com/similar-page-checker.php" target=_blank>http://www.webconfs.com/similar-page-checker.php</A><br />
Google Sitemaps 在线创建——在线创建 Google Sitemaps 网站地图文件<br />
中文:http://www.xinqj.com/sitemap/sitemap.asp<br />
英文:http://www.xml-sitemaps.com/<br />
(2)综合查询工具<br />
Webmaster Toolbox——可查询某个站点的Google Pagerank、Alexa世界排名、中国网站排名，以及在几大主要搜索引擎中的收录反向链接的情况。<br />
<A href="http://www.flashplayer.cn/webmaster-toolbox/" target=_blank>http://www.flashplayer.cn/webmaster-toolbox/</A><br />
网站收录查询——同时查询Google,百度,Yahoo等8个搜索引擎的收录状况<br />
<A href="http://tool.cndw.com/Shoulu/Index.asp" target=_blank>http://tool.cndw.com/Shoulu/Index.asp</A><br />
关键词排名查询——可以同时在3个搜索引擎中查询指定网页指定关键词的排名情况.<br />
<A href="http://www.seores.com/search/keywordrank.asp" target=_blank>http://www.seores.com/search/keywordrank.asp</A><br />
Google各服务器关键词排名查询——查询在Google各个服务器中,指定网页指定关键词的排名情况,可以作为一个升降的参考<br />
<A href="http://tool.cndw.com/Rank/Index.asp" target=_blank>http://tool.cndw.com/Rank/Index.asp</A><br />
&nbsp;<br />
(3)关键词工具<br />
Google Adwords关键词工具——查询指定关键词的扩展匹配,搜索量,趋势和受欢迎度.<br />
<A href="https://adwords.google.com/select/KeywordToolExternal" target=_blank>https://adwords.google.com/select/KeywordToolExternal</A><br />
百度相关搜索——按热门程序排序,列出指定关键词相关的扩展匹配及热门程度<br />
<A href="http://d.baidu.com/rs.php" target=_blank>http://d.baidu.com/rs.php</A><br />
关键词密度分析工具——分析指定关键词在指定页面中出现的次数,及相应的百分比密度<br />
中文:http://tool.cndw.com/Seo/Key_Density.asp<br />
英文:http://www.keyworddensity.com/<br />
(4)关键词热门排行及指数<br />
百度排行榜:http://top.baidu.com<br />
百度指数:http://index.baidu.com/<br />
Yahoo排行榜:http://misc.yahoo.com.cn/top_index.html<br />
搜狗指数:http://www.sogou.com/top/?IPLOC=CN1102<br />
搜搜龙虎榜:http://www.soso.com/lhb/s_i_sosolhb.shtml<br />
(5)Google工具<br />
Google Sitemaps——Google推出的一项免费服务,一个杰出的SEO工具<br />
<A href="http://www.google.com/webmasters/sitemaps/docs/zh_CN/about.html" target=_blank>http://www.google.com/webmasters/sitemaps/docs/zh_CN/about.html</A><br />
Google Analytics——Google推出的免费分析服务.在市场营销和内容优化上提供很多专业报表.对搜索引擎营销有很大帮助.<br />
<A href="http://www.google.com/analytics/zh-CN/" target=_blank>http://www.google.com/analytics/zh-CN/</A><br />
Google Dance 查询工具——不仅可以查询Dance情况,还可以通过E-mail及时获得每月google dance通知<br />
<A href="http://www.seochat.com/googledance/" target=_blank>http://www.seochat.com/googledance/</A><br />
查看在GOOGLE各服务器上的PR值——利用这个工具,可以判断PR是否更新,预测更新后的PR值<br />
<A href="http://www.seochat.com/seo-tools/future-pagerank" target=_blank>http://www.seochat.com/seo-tools/future-pagerank</A><br />
Google PR历史更新时间表——看看Google 2000看至今更新PR的具体时间和周期时长<br />
<A href="http://www.seocompany.ca/pagerank/page-rank-update-list.html" target=_blank>http://www.seocompany.ca/pagerank/page-rank-update-list.html</A><br />
(6)链接工具<br />
链接广泛度检测工具——反向链接查询工具.同时支持Google,百度,Yahoo等8个搜索引擎<br />
<A href="http://tool.cndw.com/LinkIn/Index.asp" target=_blank>http://tool.cndw.com/LinkIn/Index.asp</A><br />
查询Google中链接的工具——可以抓取文本标题和链接.中文标题显示的是乱码<br />
<A href="http://www.webconfs.com/google-backlink-checker.php" target=_blank>http://www.webconfs.com/google-backlink-checker.php</A><br />
Yahoo新推出的链接检查工具——可以查询网站中所有被检索的页面以及反向链接情况<br />
<A href="http://siteexplorer.search.yahoo.com/" target=_blank>http://siteexplorer.search.yahoo.com/</A><br />
同时查询Google,Yahoo,MSN中的链接数量<br />
<A href="http://www.trafficzap.com/linkpopularity.php" target=_blank>http://www.trafficzap.com/linkpopularity.php</A><br />
(7)无效链接检查工具<br />
检查指定页面内的链接——包括链接有效性检查,链接文字,链接类型<br />
<A href="http://www.seores.com/search/checkurl.asp" target=_blank>http://www.seores.com/search/checkurl.asp</A><br />
W3C GLink Checker<br />
<A href="http://validator.w3.org/checklink" target=_blank>http://validator.w3.org/checklink</A><br />
(8)其他工具<br />
PageRank 查询<br />
<A href="http://www.521yy.com/tools/php/pr.php" target=_blank>http://www.521yy.com/tools/php/pr.php</A><br />
网站历史查询工具——美国互联网档案馆(The Internet Archive)保存了自1996年开始,借助Alexa搜索引擎获取的网站资料<br />
<A href="http://web.archive.org/collections/web/advanced.html" target=_blank>http://web.archive.org/collections/web/advanced.html</A><br />
分类目录收录查询——检查网站是否登录多个重要分类目录<br />
<A href="http://www.123promotion.co.uk/directory/index.php" target=_blank>http://www.123promotion.co.uk/directory/index.php</A><br />
&nbsp;  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/seo-gongju-2007/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SEO之吸星大法</title>
		<link>http://www.kuigg.com/seo-xixingdafa</link>
		<comments>http://www.kuigg.com/seo-xixingdafa#comments</comments>
		<pubDate>Mon, 02 Jul 2007 16:36:47 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[seo]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=24</guid>
		<description><![CDATA[此招是非常恐怖的一招，如果把握不好，会因为外链太多而被搜索引擎注意到，可能会过尤不及地受到负面影响。新网站绝不适合用此招，就算是很强的老网站在使用此招时也必须想方设法控制外链的增长速率。 吸星大法并不好练，需要很强的实力，适合于行政部门，拥有数量众多的员工的大公司，拥有很多“人力资源”的学校，拥有众多用户的网站或者软件，军队的小领导也可以用这招（不过要注意别引起更高领导的注意，使用时要讲究技巧。 有史以来吸星大法炼到了最高境界的是——你看看每个网站首页的底部就知道了，那几个字：沪ICP备XXXXX。呵呵，对了，就是君临中国互联网的信产部备案网站，它要求每个备案的网站都必须在首页放置备案号，并有链接指向它的网站。 导出链接何其宝贵，虽然从没有见百度等搜索引擎官方承认no follow标签，我还是给备案网站的导出链接加了no follow，以示不满，吸星大法就是邪教的功夫，讨厌！中国PR值最高的网站，就是吸星大法带来的SEO成就。 写到这里，可能有些朋友对这招吸星大法感到失望了，我又不是日月神教，又不是官府，哪来那么强的资源去练吸星大法啊？呵呵，这仅仅是举出一个例子，咱们布衣百姓自然也可以学小成境界的吸星大法，比如：建立一个广告联盟。 大家有没有发现很多的小广告联盟都要求你在首页放置他们的链接，以便“检查”，当然这个检查是名，造链接是实。这些小联盟，不需要很多的资金就可以建一个，它带来的丰厚链接回报，是你意料之外的。中国有太多的站长们，至今找不到适合的网络广告，他们总想改变一下，特别对于新手。 你也可以发起一次营销活动，什么征文啊，什么象棋比赛啊，什么SEO大赛啊，作为官方网站，参赛的选手自然把你看成了临时的“官府”，造链有门路。在国外的链接建设理论中，营销活动是经常被提到，而且被实践检验认为非常有效的链接诱饵。 如果你有一个公司，员工足够多，可以要求或鼓励他们写博客，免费空间也可以，独立博客也可以。这里提醒一下：百度空间的友情链接是放在 JavaScript里面的，真贼。如果你公司没有那么多的员工，可以来一场博客招聘，要求他们在博客中展示自己的能力和对公司所在行业的看法，诸如此类。让前来应聘的人未入职先做贡献。中国的人力资源极大丰富，这招用得好，恐怕也是一种很厉害的吸星大法。欣赏一下兔兔的漫画： 我知道，你想问有没有免费的、简单的、轻轻松松立等可取的吸星大法。答案是：有。但是吸星大法的核心在于用权威去强行夺取链接，如果你真的没有权威在手上，恐怕只能用孙子兵法里的“兵者，诡道也”和“不能而示之能”了。具体的就不能说了，有兴趣玩的可以自己想出一个诡道来。]]></description>
			<content:encoded><![CDATA[<p>此招是非常恐怖的一招，如果把握不好，会因为外链太多而被搜索引擎注意到，可能会过尤不及地受到负面影响。新网站绝不适合用此招，就算是很强的老网站在使用此招时也必须想方设法控制外链的增长速率。</p>
<p>吸星大法并不好练，需要很强的实力，适合于行政部门，拥有数量众多的员工的大公司，拥有很多“人力资源”的学校，拥有众多用户的网站或者软件，军队的小领导也可以用这招（不过要注意别引起更高领导的注意，使用时要讲究技巧。</p>
<p>有史以来吸星大法炼到了最高境界的是——你看看每个网站首页的底部就知道了，那几个字：沪ICP备XXXXX。呵呵，对了，就是君临中国互联网的信产部备案网站，它要求每个备案的网站都必须在首页放置备案号，并有链接指向它的网站。</p>
<p>导出链接何其宝贵，虽然从没有见百度等搜索引擎官方承认no follow标签，我还是给备案网站的导出链接加了no follow，以示不满，吸星大法就是邪教的功夫，讨厌！中国PR值最高的网站，就是吸星大法带来的SEO成就。</p>
<p>写到这里，可能有些朋友对这招吸星大法感到失望了，我又不是日月神教，又不是官府，哪来那么强的资源去练吸星大法啊？呵呵，这仅仅是举出一个例子，咱们布衣百姓自然也可以学小成境界的吸星大法，比如：建立一个广告联盟。</p>
<p>大家有没有发现很多的小广告联盟都要求你在首页放置他们的链接，以便“检查”，当然这个检查是名，造链接是实。这些小联盟，不需要很多的资金就可以建一个，它带来的丰厚链接回报，是你意料之外的。中国有太多的站长们，至今找不到适合的网络广告，他们总想改变一下，特别对于新手。</p>
<p>你也可以发起一次营销活动，什么征文啊，什么象棋比赛啊，什么SEO大赛啊，作为官方网站，参赛的选手自然把你看成了临时的“官府”，造链有门路。在国外的链接建设理论中，营销活动是经常被提到，而且被实践检验认为非常有效的链接诱饵。</p>
<p>如果你有一个公司，员工足够多，可以要求或鼓励他们写博客，免费空间也可以，独立博客也可以。这里提醒一下：百度空间的友情链接是放在 JavaScript里面的，真贼。如果你公司没有那么多的员工，可以来一场博客招聘，要求他们在博客中展示自己的能力和对公司所在行业的看法，诸如此类。让前来应聘的人未入职先做贡献。中国的人力资源极大丰富，这招用得好，恐怕也是一种很厉害的吸星大法。欣赏一下兔兔的漫画：</p>
<p>我知道，你想问有没有免费的、简单的、轻轻松松立等可取的吸星大法。答案是：有。但是吸星大法的核心在于用权威去强行夺取链接，如果你真的没有权威在手上，恐怕只能用孙子兵法里的“兵者，诡道也”和“不能而示之能”了。具体的就不能说了，有兴趣玩的可以自己想出一个诡道来。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/seo-xixingdafa/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>海外推广英文站必备的登陆网址大全【转】</title>
		<link>http://www.kuigg.com/yingwenzhan-dengluwangzhi</link>
		<comments>http://www.kuigg.com/yingwenzhan-dengluwangzhi#comments</comments>
		<pubDate>Tue, 05 Jun 2007 07:35:57 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[学习资料]]></category>
		<category><![CDATA[网站推广]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=23</guid>
		<description><![CDATA[&#160; No Domain Price PR 1 http://www.121-shop.de/ free 5 2 http://www.abilogic.com/ free 5 3 http://www.addyourlinks.net/ free 0 4 http://www.agada.info/web-directory/ free 3 5 http://www.alldotnet.com/ free 2 6 http://www.allfreethings.com/ free 4 7 http://www.allthewebsites.org/ free 5 8 http://www.askrobo.com/ free 5 9 http://www.axelis.com/ free 5 10 http://www.bdcconcepts.com/directory/ free 0 11 http://www.bestbusinessdirectory.com/ free 4 12 http://www.businessplexus.com/ free 4 13 http://www.buzzle.com/ [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;<br />
No Domain Price PR<br />
1 <A href="http://www.121-shop.de/">http://www.121-shop.de/</A> free 5<br />
2 <A href="http://www.abilogic.com/">http://www.abilogic.com/</A> free 5<br />
3 <A href="http://www.addyourlinks.net/">http://www.addyourlinks.net/</A> free 0<br />
4 <A href="http://www.agada.info/web-directory/">http://www.agada.info/web-directory/</A> free 3<br />
5 <A href="http://www.alldotnet.com/">http://www.alldotnet.com/</A> free 2<br />
6 <A href="http://www.allfreethings.com/">http://www.allfreethings.com/</A> free 4<br />
7 <A href="http://www.allthewebsites.org/">http://www.allthewebsites.org/</A> free 5<br />
8 <A href="http://www.askrobo.com/">http://www.askrobo.com/</A> free 5<br />
9 <A href="http://www.axelis.com/">http://www.axelis.com/</A> free 5<br />
10 <A href="http://www.bdcconcepts.com/directory/">http://www.bdcconcepts.com/directory/</A> free 0<br />
11 <A href="http://www.bestbusinessdirectory.com/">http://www.bestbusinessdirectory.com/</A> free 4<br />
12 <A href="http://www.businessplexus.com/">http://www.businessplexus.com/</A> free 4<br />
13 <A href="http://www.buzzle.com/">http://www.buzzle.com/</A> free 6<br />
14 <A href="http://www.c2000.com/">http://www.c2000.com/</A> free 4<br />
15 <A href="http://www.canlinks.net/">http://www.canlinks.net/</A> free 6<br />
16 <A href="http://www.cannylink.com/">http://www.cannylink.com/</A> free 6<br />
17 <A href="http://www.cantufind.com/">http://www.cantufind.com/</A> free 5<br />
18 <A href="http://www.chickendirectory.com/">http://www.chickendirectory.com/</A> free 2<br />
19 <A href="http://directory.cipinet.com/">http://directory.cipinet.com/</A> free 5<br />
20 <A href="http://www.foundya.co.uk/">http://www.foundya.co.uk/</A> free 4<br />
21 <A href="http://www.friendly-directory.co.uk/">http://www.friendly-directory.co.uk/</A> free 3<br />
22 <A href="http://www.inneedof.co.uk/">http://www.inneedof.co.uk/</A> free 4<br />
23 <A href="http://www.jimac.co.uk/">http://www.jimac.co.uk/</A> free 4<br />
24 <A href="http://www.pedsters-planet.co.uk/">http://www.pedsters-planet.co.uk/</A> free 4<br />
25 <A href="http://www.pr3.co.uk/">http://www.pr3.co.uk/</A> free 3<br />
26 <A href="http://www.putmyfinger.co.uk/">http://www.putmyfinger.co.uk/</A> free 3<br />
27 <A href="http://www.netexposure.com.au/">http://www.netexposure.com.au/</A> free 5<br />
28 <A href="http://www.aindabem.com.br/">http://www.aindabem.com.br/</A> free 3<br />
29 <A href="http://www.gloose.com/dir.html">http://www.gloose.com/dir.html</A> free 2<br />
30 <A href="http://www.coolgrandma.com/odp/directory.php">http://www.coolgrandma.com/odp/directory.php</A> free 4<br />
31 <A href="http://www.jameshendrix.com/seo.html">http://www.jameshendrix.com/seo.html</A> free 0<br />
32 <A href="http://www.completeonlinedirectory.com/">http://www.completeonlinedirectory.com/</A> free 2<br />
33 <A href="http://www.consultant-directory.com/">http://www.consultant-directory.com/</A> free 4<br />
34 <A href="http://www.deep-directory.com/">http://www.deep-directory.com/</A> free 4<br />
35 <A href="http://www.demotte411.com/">http://www.demotte411.com/</A> free 2<br />
36 <A href="http://www.demottedirectory.com/">http://www.demottedirectory.com/</A> free 1<br />
37 <A href="http://www.deregular.com/">http://www.deregular.com/</A> free 4<br />
38 <A href="http://www.dhundo.com/">http://www.dhundo.com/</A> free 4<br />
39 <A href="http://www.direct-o-ry.com/">http://www.direct-o-ry.com/</A> free 3<br />
40 <A href="http://www.directorybabe.com/">http://www.directorybabe.com/</A> free 1<br />
41 <A href="http://www.directorybuddy.com/">http://www.directorybuddy.com/</A> free 4<br />
42 <A href="http://www.directorybytes.com/">http://www.directorybytes.com/</A> free 1<br />
43 <A href="http://www.directorychick.com/">http://www.directorychick.com/</A> free 1<br />
44 <A href="http://www.directorydude.com/">http://www.directorydude.com/</A> free 3<br />
45 <A href="http://www.dirspace.com/">http://www.dirspace.com/</A> free 4<br />
46 <A href="http://www.dmole.org/">http://www.dmole.org/</A> free 4<br />
47 <A href="http://www.dmoz.org/">http://www.dmoz.org/</A> free 8<br />
48 <A href="http://www.e-commerce-directory.com/">http://www.e-commerce-directory.com/</A> free 0<br />
49 <A href="http://www.easyeraserpro.com/">http://www.easyeraserpro.com/</A> free 2<br />
50 <A href="http://www.easyfilelock.com/">http://www.easyfilelock.com/</A> free 2<br />
51 <A href="http://www.easyfolders.com/">http://www.easyfolders.com/</A> free 0<br />
52 <A href="http://www.easyinterneteraser.com/">http://www.easyinterneteraser.com/</A> free 0<br />
53 <A href="http://www.easylockit.com/">http://www.easylockit.com/</A> free 1<br />
54 <A href="http://www.easyprivacysoftware.com/">http://www.easyprivacysoftware.com/</A> free 2<br />
55 <A href="http://www.ecommerce-directory.org/">http://www.ecommerce-directory.org/</A> free 0<br />
56 <A href="http://www.eplanit.biz/">http://www.eplanit.biz/</A> free 3<br />
57 <A href="http://www.eurofind.biz/">http://www.eurofind.biz/</A> free 4<br />
58 <A href="http://www.ezilon.com/">http://www.ezilon.com/</A> free 6<br />
59 <A href="http://www.familyfriendlysites.com/">http://www.familyfriendlysites.com/</A> free 6<br />
60 <A href="http://www.findhopper.com/">http://www.findhopper.com/</A> free 3<br />
61 <A href="http://www.findrex.com/">http://www.findrex.com/</A> free 4<br />
62 <A href="http://www.findwhatwhere.info/">http://www.findwhatwhere.info/</A> free 1<br />
63 <A href="http://www.firstdirectory.org/">http://www.firstdirectory.org/</A> free 4<br />
64 <A href="http://www.flyingpopups.com/">http://www.flyingpopups.com/</A> free 3<br />
65 <A href="http://www.freedigitalmarketingreport.com/">http://www.freedigitalmarketingreport.com/</A> free 3<br />
66 <A href="http://www.geeksonsteroids.com/directory/">http://www.geeksonsteroids.com/directory/</A> free 5<br />
67 google.com/” target=_blank&gt;http://dir.google.com/ free 8<br />
68 <A href="http://www.grizzlyweb.com/">http://www.grizzlyweb.com/</A> free 4<br />
69 <A href="http://www.hedir.com/">http://www.hedir.com/</A> free 5<br />
70 <A href="http://www.hotsitesdirectory.com/">http://www.hotsitesdirectory.com/</A> free 1<br />
71 <A href="http://www.htmleasy.com/">http://www.htmleasy.com/</A> free 3<br />
72 <A href="http://www.illumirate.com/">http://www.illumirate.com/</A> free 5<br />
73 <A href="http://www.indianafinder.com/">http://www.indianafinder.com/</A> free 2<br />
74 <A href="http://www.infignos.com/">http://www.infignos.com/</A> free 5<br />
75 <A href="http://www.info-listings.com/">http://www.info-listings.com/</A> free 6<br />
76 <A href="http://www.info-places.com/">http://www.info-places.com/</A> free 3<br />
77 <A href="http://www.infoclicks.net/">http://www.infoclicks.net/</A> free 6<br />
78 <A href="http://www.infowebworld.com/">http://www.infowebworld.com/</A> free PR5<br />
79 <A href="http://www.iozoo.com/">http://www.iozoo.com/</A> free 6<br />
80 <A href="http://www.itzalist.com/">http://www.itzalist.com/</A> free 5<br />
81 <A href="http://www.jaspercountydirectory.com/">http://www.jaspercountydirectory.com/</A> free 2<br />
82 <A href="http://www.jayde.com/">http://www.jayde.com/</A> free 6<br />
83 <A href="http://www.kingbloom.com/">http://www.kingbloom.com/</A> free 4<br />
84 <A href="http://www.kwikgoblin.com/">http://www.kwikgoblin.com/</A> free 3<br />
85 <A href="http://www.landoflinks.com/">http://www.landoflinks.com/</A> free 5<br />
86 <A href="http://www.linketeria.com/">http://www.linketeria.com/</A> free 4<br />
87 <A href="http://www.linksmatch.com/">http://www.linksmatch.com/</A> free 4<br />
88 <A href="http://www.losttraffic.com/">http://www.losttraffic.com/</A> free 3<br />
89 <A href="http://www.lybot.com/">http://www.lybot.com/</A> free 4<br />
90 <A href="http://www.megri.com/">http://www.megri.com/</A> free 4<br />
91 <A href="http://www.mojoo.com/">http://www.mojoo.com/</A> free 2<br />
92 <A href="http://www.monkeydirectory.com/">http://www.monkeydirectory.com/</A> free 3<br />
93 <A href="http://directory.nawigator.biz/">http://directory.nawigator.biz/</A> free 4<br />
94 <A href="http://www.nwindianadirectory.com/">http://www.nwindianadirectory.com/</A> free 2<br />
95 <A href="http://www.ohgoodysites.com/">http://www.ohgoodysites.com/</A> free 3<br />
96 <A href="http://www.okaydirectory.com/">http://www.okaydirectory.com/</A> free 3<br />
97 <A href="http://www.onebigindex.com/">http://www.onebigindex.com/</A> free 4<br />
98 <A href="http://www.onestop-directory.com/">http://www.onestop-directory.com/</A> free 5<br />
99 <A href="http://www.openhere.com/">http://www.openhere.com/</A> free 0<br />
100 <A href="http://www.osy-directory.com/">http://www.osy-directory.com/</A> free 4 </p>
<p>No Domain Price PR<br />
101 <A href="http://www.perfext.com/">http://www.perfext.com/</A> free 4<br />
102 <A href="http://www.pharos-search.com/">http://www.pharos-search.com/</A> free 5<br />
103 <A href="http://www.phatlinks.com/">http://www.phatlinks.com/</A> free 4<br />
104 <A href="http://www.pileiton.com/">http://www.pileiton.com/</A> free 4<br />
105 <A href="http://www.pleaseretrieve.com/">http://www.pleaseretrieve.com/</A> free 4<br />
106 <A href="http://www.poddys.com/">http://www.poddys.com/</A> free 5<br />
107 <A href="http://www.ranked1.net/">http://www.ranked1.net/</A> free 4<br />
108 <A href="http://www.redjuniper.com/">http://www.redjuniper.com/</A> free 3<br />
109 <A href="http://www.refrozen.com/">http://www.refrozen.com/</A> free 5<br />
110 <A href="http://www.relevant-links.com/">http://www.relevant-links.com/</A> free 0<br />
111 <A href="http://www.resourcehelp.com/">http://www.resourcehelp.com/</A> free 5<br />
112 <A href="http://www.san24.com/">http://www.san24.com/</A> free 5<br />
113 <A href="http://www.search-the-world.com/">http://www.search-the-world.com/</A> free 4<br />
114 <A href="http://www.searchave.com/">http://www.searchave.com/</A> free 4<br />
115 <A href="http://www.searchpole.com/">http://www.searchpole.com/</A> free 5<br />
116 <A href="http://www.searchtheweb.com/">http://www.searchtheweb.com/</A> free 5<br />
117 <A href="http://www.searchwarp.com/">http://www.searchwarp.com/</A> free 4<br />
118 <A href="http://www.searchwiz.org/">http://www.searchwiz.org/</A> free 3<br />
119 <A href="http://www.secrethole.net/">http://www.secrethole.net/</A> free 3<br />
120 <A href="http://www.sedsearch.com/">http://www.sedsearch.com/</A> free 3<br />
121 <A href="http://www.seekon.com/">http://www.seekon.com/</A> free 0<br />
122 <A href="http://dir.seo7.net/">http://dir.seo7.net/</A> free 1<br />
123 <A href="http://www.sezza.com/">http://www.sezza.com/</A> free 4<br />
124 <A href="http://www.shoula.com/">http://www.shoula.com/</A> free 4<br />
125 <A href="http://www.sitefolders.com/">http://www.sitefolders.com/</A> free 3<br />
126 <A href="http://www.sitelibrary.net/directory/">http://www.sitelibrary.net/directory/</A> free 0<br />
127 <A href="http://www.sitesondisplay.com/">http://www.sitesondisplay.com/</A> free 5<br />
128 <A href="http://www.slidingads.com/">http://www.slidingads.com/</A> free 4<br />
129 <A href="http://www.sloogle.com/directory/">http://www.sloogle.com/directory/</A> free 0<br />
130 <A href="http://www.software-pointers.com/">http://www.software-pointers.com/</A> free 5<br />
131 <A href="http://www.softwaresells.com/">http://www.softwaresells.com/</A> free 4<br />
132 <A href="http://www.softzdirectory.com/">http://www.softzdirectory.com/</A> free 4<br />
133 <A href="http://www.somuch.com/">http://www.somuch.com/</A> free 5<br />
134 <A href="http://www.sonicquest.com/">http://www.sonicquest.com/</A> free 4<br />
135 <A href="http://www.sootle.com/">http://www.sootle.com/</A> free 5<br />
136 <A href="http://www.speedydirectory.com/">http://www.speedydirectory.com/</A> free 4<br />
137 <A href="http://www.spheri.com/">http://www.spheri.com/</A> free 5<br />
138 <A href="http://www.stormer.net/">http://www.stormer.net/</A> free 5<br />
139 <A href="http://www.sumwd.com/">http://www.sumwd.com/</A> free 3<br />
140 <A href="http://www.synergy-dti.com/">http://www.synergy-dti.com/</A> free 5<br />
141 <A href="http://www.synergyslist.com/">http://www.synergyslist.com/</A> free 1<br />
142 <A href="http://www.thewebknot.com/">http://www.thewebknot.com/</A> free 3<br />
143 <A href="http://www.turnpike.net/">http://www.turnpike.net/</A> free 5<br />
144 <A href="http://blue.daffodil.uk.com/">http://blue.daffodil.uk.com/</A> free 3<br />
145 <A href="http://directory.uquick.com/">http://directory.uquick.com/</A> free 5<br />
146 <A href="http://www.webdesigncorp.com/">http://www.webdesigncorp.com/</A> free 3<br />
147 <A href="http://www.webgirldirectory.com/">http://www.webgirldirectory.com/</A> free 1<br />
148 <A href="http://www.websavvy.cc/">http://www.websavvy.cc/</A> free 5<br />
149 <A href="http://www.websearches.info/">http://www.websearches.info/</A> free 3<br />
150 <A href="http://www.websitetop.com/">http://www.websitetop.com/</A> free 2<br />
151 <A href="http://www.websmadeeasy.com/">http://www.websmadeeasy.com/</A> free 3<br />
152 <A href="http://www.wholesalepimp.com/">http://www.wholesalepimp.com/</A> free 5<br />
153 <A href="http://www.worldhot.com/">http://www.worldhot.com/</A> free 7<br />
154 <A href="http://www.xeit.com/">http://www.xeit.com/</A> free 5<br />
155 <A href="http://www.yourfreelink.com/">http://www.yourfreelink.com/</A> free 0<br />
156 <A href="http://www.yourwebloghere.com/">http://www.yourwebloghere.com/</A> free 5<br />
157 <A href="http://www.zeal.com/">http://www.zeal.com/</A> free 8<br />
158 <A href="http://www.zeezo.com/">http://www.zeezo.com/</A> free 6 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/yingwenzhan-dengluwangzhi/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于set_magic_quotes_runtime()</title>
		<link>http://www.kuigg.com/set_magic_quotes_runtime</link>
		<comments>http://www.kuigg.com/set_magic_quotes_runtime#comments</comments>
		<pubDate>Sun, 22 Apr 2007 15:01:06 +0000</pubDate>
		<dc:creator>kuiGG</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[学习资料]]></category>

		<guid isPermaLink="false">http://kuigg.com/?p=22</guid>
		<description><![CDATA[&#160;先来了解一下 magic_quotes_runtime&#160;&#160;这是php.ini里面的环境配置变量，可以直接在php.ini里面设置为ON，那么PHP将会为所有的溢出字符，当遇到反斜杆、单引号，将会自动加上一个反斜杆，保护系统和数据库的安全。 那么 set_magic_quotes_runtime()&#160;&#160;就是在php.ini没有配置的情况下，一个设置的开关 0 为关闭 1为打开，就等于用程序手动打开 magic_quotes_runtime 。]]></description>
			<content:encoded><![CDATA[<p>&nbsp;先来了解一下 magic_quotes_runtime&nbsp;&nbsp;这是php.ini里面的环境配置变量，可以直接在php.ini里面设置为ON，那么PHP将会为所有的溢出字符，当遇到反斜杆、单引号，将会自动加上一个反斜杆，保护系统和数据库的安全。</p>
<p>那么 set_magic_quotes_runtime()&nbsp;&nbsp;就是在php.ini没有配置的情况下，一个设置的开关 0 为关闭 1为打开，就等于用程序手动打开 magic_quotes_runtime 。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.kuigg.com/set_magic_quotes_runtime/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

