ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>
而且˜q˜å¯ä»¥ç›´æŽ¥åœ¨™åµé¢ä¸ŠæŽ§åˆ?span lang=EN-US>Table的高度长度ã€?span lang=EN-US>TABLE布局最大的¾~ºç‚¹åQŒé™¤äº†æ²‰é•¿çš„TR,TD之外åQŒè¨€è®ºæœ€å¤šçš„ž®±æ˜¯SEO里对Table布局的鄙视。大部分SEO人都会觉å¾?span lang=EN-US>Table布局ä¸åˆ©äº?span lang=EN-US>SEO优化。这ç‚V€‚。到真是有点关系åQŒæˆ‘试过两个完全一æ ïLš„¾|‘ç«™åQŒä¸€ä¸ªæ˜¯ç”?span lang=EN-US>Table布局的,我是ç”?span lang=EN-US>CSS+DIV布局的,òq‰™€‚当的ä‹É用了Hæ ‡è®°åQŒåœ¨GOOGLEæœçƒ¦ä¸Šï¼Œæˆ?span lang=EN-US>CSS+divå¸ƒå±€çš„ç½‘ç«™è¦æ¯?span lang=EN-US>Table布局的è¦é å‰ã€‚ã€‚ã€‚è‡³äºŽäØ“ä»€ä¹ˆï¼Œé‚£ä¸ªä¸æ˜¯æœ¬æ–‡çš„é‡ç‚V€‚。忽略掉ã€?span lang=EN-US>
CSS+DIV布局最大的特点ž®±æ˜¯HTMLæ–‡äšg里的代ç 相对比较ž®‘ï¼Œä½†æ˜¯ä¹Ÿé€ æˆäº†æµè§ˆå™¨å¸ƒå±€é—®é¢˜ã€‚。网上很多äh都在è¯ß_¼Œæˆ‘布局åœ?span lang=EN-US>IE里显½Cºæ£å¸¸ï¼Œåœ?span lang=EN-US>FF下全部å˜å½¢äº†ã€‚å…¶å®žé€ æˆ˜q™æ ·é—®é¢˜çš„åŽŸå› æ˜¯ä½ å†™çš?span lang=EN-US>CSSòq¶ä¸æ ‡å‡†åQŒå¯ä»¥è¯´ä½ 写çš?span lang=EN-US>CSSéƒ½æ˜¯æ ¹ç»IEçš„æ ‡å‡†æ¥å†™çš„åQŒè€Œä¸æ˜?span lang=EN-US>CSS2.0çš„å›½é™…æ ‡å‡†ï¼Œæ— è®ºæ˜?span lang=EN-US>IE˜q˜æ˜¯FFåQ?span lang=EN-US>3.0版å‰çš„æˆ‘没留æ„)都是支æŒCSS2.0的,但是在技术上åQ?span lang=EN-US>IE有写模糊功能åQŒå¯ä»¥ä×oåˆ°éžæ ‡å‡†çš?span lang=EN-US>CSS布局也能æ£ç¡®è§£æžåQŒä¸€ä¸‹æ˜¯æˆ‘写CSS代ç çš„äº”ä¸ªä¹ æƒ¯ï¼Œæˆ‘ä¸æ•¢è¯´æˆ‘è¿™äº”ä¸ªä¹ æƒ¯éƒ½æ˜¯å¥½ä¹ æƒ¯ï¼Œè‡›_°‘我写çš?span lang=EN-US>CSS布局ä¸ä¼šäº§ç”Ÿä¸è‰¯æ•ˆæžœåQŒä¹Ÿž®±æ˜¯æˆ‘写çš?span lang=EN-US>CSS有跨l‹¹è§ˆå™¨èƒ½åŠ›ã€?span lang=EN-US>
½W¬ä¸€åQšå®¹å™¨ç±»DIVå¿…é¡»è¦æœ‰5个东è¥?span lang=EN-US>{marginåQ?span lang=EN-US>paddingåQ?span lang=EN-US>widthåQ?span lang=EN-US>heightåQ?span lang=EN-US>overflow}åQŒä»€ä¹ˆå«å®¹å™¨¾c»ï¼Œž®±æ˜¯˜q™ä¸ªDIVåªæ˜¯ç”¨æ¥æ”‘Ö†…部的DIV的,也å¯ä»¥è¯´æ˜¯ä¸€ä¸ªå®šä½çš„div..例如åQšæˆ‘ä»¬ç»å¸æ€‹É用居ä¸ï¼Œä¸€èˆ¬æ˜¯˜q™æ ·åšçš„
½W¬äºŒåQšæÕQ动对象,都拥有独立的çˆ?span lang=EN-US>DIVåQ›å…³äºŽè¿™ç‚V€‚。有æ„è§çš„ähå¯èƒ½ä¸å°‘åQŒæŒæœ‰çš„观点ž®±æ˜¯åQ?span lang=EN-US>“ä½ è¿™æ ·åšåªä¼šä»?span lang=EN-US>DIV˜q‡åˆ†çš„多åQŒè¿‡äºŽå¤æ?span lang=EN-US>”åQŒå…¶å®žï¼Œæˆ‘ä¹Ÿä¸æƒ³˜q™æ ·åšï¼Œä½†æ˜¯- -åQ?span lang=EN-US>IE对于‹¹®åŠ¨å¯¹è±¡çš?span lang=EN-US>{marginåQ?span lang=EN-US>padding}å˜åœ¨BUGæ‰€ä»¥äØ“äº†å‡ž®‘一切å¯èƒ½çš„出错åQŒæˆ‘唯有多花费一点代ç ï¼Œè¯´å®žåœ¨çš„æˆ‘åªæ˜¯æƒ³å®ƒæ›´å¥åº·ã€‚这个父DIV主è¦ä½œç”¨å…¶å®žž®±æ˜¯ä»¤åˆ°å†…部‹¹®åŠ¨å¯¹è±¡æ›´å¯æŽ§åˆ¶åQŒè¿™ä¸ªçˆ¶DIVž®±æ˜¯ä¸€ä¸ªå•¾U¯çš„容器DIV
½W¬ä¸‰åQšæ‰€æœ‰çš„‹¹®åŠ¨éƒ½éœ€è¦é—åˆï¼›˜q™ä¸ªæœ‰ç»éªŒçš„人都知é“。。用完æÕQåŠ¨ä½ è‚¯å®šéœ€è¦æŠŠå®ƒé—åˆæŽ‰çš„ï¼Œä¸é—åˆï¼Œå¯èƒ½ä¸åŒ‹¹è§ˆå™¨åœ¨è§£æžçš„æ—¶å€™ä¼šæŠŠä½ çš„æÕQåŠ¨å˜æˆå‘下默认,åQˆå¯ä»¥è¿™æ ¯‚§£æžï¼šž®±æ˜¯å…ƒç´ 内部的åå…ƒç´ éƒ½é»˜è®¤å…·æœ‰æÕQ动属性)
½W¬å››åQšä¸€ä¸ªè¡Œå‘æÕQ动如果超˜q?span lang=EN-US>3个那么请使用ULæ¥å®žçްæÕQåŠ?span lang=EN-US>
½W¬äº”åQšçµ‹zÖM‹É用类选择åQŒæˆ‘个ähçš„åšæ³•是åQŒæ‰€æœ‰çš„id选择器都是用于布局的,¾c»é€‰æ‹©å™¨éƒ½æ˜¯ç”¨äºŽå‘ˆçŽ°æ•ˆæžœçš„åQŒè¿™æ ·åšçš„å¥½å¤„å°±æ˜¯ï¼Œå½“ä½ æƒŒ™¦çš„æ•ˆæžœå‡ºçŽ°é—®é¢˜çš„æ—¶å€™ï¼Œæ›´å¿«é€Ÿåœ°æ‰‘Öˆ°é”™è¯¯ã€‚这个是我有æ„识的把“æž¶æž„”å’?span lang=EN-US>“内容”分离ã€?/span>
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\lib\servlet-api.jar;
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;D:\apache-tomcat-6.0.18\lib\servlet-api.jar
修改文äšgåQšC:\jakarta-tomcat-5.0.28\conf\server.xml
æ’å…¥ä½ç½®åQ?/font> <Host name="localhost" debug="0" appBase="webapps" å‚考URL http://hi.baidu.com/net_plz/blog/item/966ee6dc25f908a5cc116635.html http://blog.163.com/jianhuren2005@126/blog/static/1715817120071015115620650/
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="/myapp" docBase="C:/jakarta-tomcat-5.0.28/webapps/myapp" debug="0" reloadable="true"/>
‹¹è¡Œçš?JavaScript 库ä¸èƒœæžšä¸¾ï¼ŒjQuery, MooTools, Prototype, Dojo, YUI。这äº?JavaScript åº“åŠŸèƒ½ä¸°å¯Œï¼ŒåŠ ä¸Šå®ƒä»¬çš„æ’ä»Óž¼Œå‡ 乎能胜ä»ÖM“Q何工作,然而这是有代äh的,˜q™äº›åº“往往坯D‡´ä½ çš„¾|‘页ž®ºå¯¸è‡ƒè‚¿ã€‚在æŸäº›åœºåˆåQŒå¦‚æžœä½ åªæƒ³å®Œæˆç‰¹å®šçš„工作,å¯ä»¥ä½¿ç”¨ä¸€äº›åŠŸèƒ½æ›´ä¸“ä¸€çš„è½»é‡åº“åQŒæœ¬æ–‡ä»‹¾l了40个éžå¸¸å‡ºè‰²çš„轻釾U?JavaScript 库ã€?
˜q™æ˜¯æœ¬æ–‡çš„第一部分åQŒç¬¬äºŒéƒ¨åˆ†è¯·å‚阅40 个轻é‡çñ” JavaScript 库(下)ã€?
wForms
一个低调的开æºé¡¹ç›®ï¼Œ½Ž€åŒ–了¾l大多数常用 JavaScript 表å•功能åQŒåŒ…å«å¯ä»¥ç›´æŽ¥ä‹É用的表å•验è¯åŠŸèƒ½åQŒå¦å¤–,˜q˜åŒ…å«å¼ºå¤§çš„表å•åŒæ¥ä»¥åŠè¡¨å•æ¡äšg判æ–功能ã€?
Validanguage
åˆä¸€ä¸ªä½Žè°ƒçš„ JavaScript 表å•éªŒè¯æ¡†æž¶ã€‚它拥有集æˆé€»è¾‘åQŒä¸€äº›è®¾¾|®å¯ä»¥é’ˆå¯¹å…¨å±€åQŒå•ä¸ªè¡¨å•æˆ–å•个对象。æä¾›ä¸¤ä¸ªAPIåQŒé›†æˆ?AJAX 支æŒåQŒç¼“å˜ï¼Œä»¥åŠå›žè°ƒå‡½æ•°ã€‚它æä¾›¾cÖM¼¼ HTML çš?API è¯å¥åQŒä»¥åŠé¢å‘对象的 JavaScript API ã€?
LiveValidation
一个轻é‡çš„表å•验è¯åº“ã€‚é™¤äº†ä¼ ¾lŸçš„验è¯åŠŸèƒ½åQŒè¿˜æä¾›å®žæ—¶éªŒè¯åQŒå¯ä»¥ä¸€è¾¹è¾“入一é验è¯ã€?strong>Ruby on Rails 用户å¯èƒ½ä¼šå‘现这个库éžå¸¸å¥½ç”¨åQŒå› ä¸ÞZ»–们的命åè§„åˆ™å’Œå‚æ•°å分近伹{€‚è¯¥åº“æ—¢æœ‰ç‹¬ç«‹ç‰ˆæœ¬ï¼Œåˆæœ‰ä¸€ä¸?Prototype 版本ã€?
yav
一个强大,ç‰|´»åQŒå¯æ‰©å±•的表å•验è¯åº“。支æŒå„¿U场åˆï¼Œä»Žç®€å•的如日期,电åé‚®äšg地å€ä»¥åŠæ•´æ•°çš„验è¯ï¼Œåˆ°å¤æ‚çš„åQŒå¦‚æ£åˆ™è¡¨è¾¾å¼ã€‚内¾|?AJAX 支æŒåQŒè¾“出的错误消æ¯å¯ä»¥å®šä½åˆ°å¯¹è±¡çñ”ã€?
qForms
处ç†è¡¨å•的整套方案。功能包括儿U验è¯è§„则,防æ¢å¤šæ¬¡å‘布的机åˆÓž¼Œä»¥åŠé”定或解é”制定输入框ã€?
formreform
ä¸åŸºäº?table 的多æ è®¾è®¡å‘æ¥æ˜¯ä¸€ä¸ªæŒ‘战。这个微型库ž®†ä¼ ¾lŸçš„表å•å˜æˆæ¼‚亮的多æ åÅžå¼ã€?a >
$fx()
一个用æ¥è®© HTML 对象˜q动的轻é‡åº“ã€‚ä½ å¯ä»¥åœ¨ä¸€ä¸ªæ—¶é—´èáu上改å˜ä“Qä½?CSS å±žæ€§ï¼Œå¯¹äºŽå¤æ‚动画åQŒä½ å¯ä»¥ž®†å„¿U效果结åˆè“væ¥ï¼Œž®†å¯¹è±¡åˆ†¾l„ï¼Œè®©å®ƒä»¬åÆˆè¡Œè¿åЍã€?
JSTweener
一个生æˆä¸é—´å“áçš?JavaScript 库,它的 API ¾cÖM¼¼è‘—åçš„ä¸é—´å“á引擎 Tweenerã€‚ä½ å¯ä»¥æŒ‡å®šåŠ¨ç”»æ—‰™—´åQŒå®šä¹‰åˆ‡æ¢æ•ˆæžœä»¥åŠæ—¶å»¶ã€‚åœ¨å‡ ä¹Žä»ÖM½•炚wƒ½å¯ä»¥è§¦åŠ¨äº‹äšgã€?
Facebook Animation
一个强大的åQŒç”¨æ¥åˆ›å»ºå¯å®šåˆ¶çš„,åŸÞZºŽ CSS 的动甅R€‚在 Facebook 动画ä¸ï¼Œå‡ è¡Œä»£ç ž®±å¯ä»¥æ”¹å–?UIã€‚è¯æ³•å’Œ FBJS åQˆç”¨äº?Facebook 的库åQ‰ä¸€æ —÷€?
FX
ä¸€ä¸ªè¯æ³•ç±»ä¼?YUI 的轻é‡?JavaScript 库,å¯ä»¥ä¸ºå‡ 乎ä“Qä½?CSS 属性创å»ÞZ¸é—´å“á。支æŒé¢œè‰²å’Œæ»šåŠ¨åŠ¨ç”»åQŒäؓ对象讄¡½® to å’?from 值就å¯ä»¥äº†ã€?
JS charts
æ”¯æŒæŸÞqŠ¶å›¾ï¼Œåœ†é¥¼å›¾ä»¥åŠç®€å•的曲线图。直接将˜q™ä¸ªåº“æ’入网™åµï¼Œç„¶åŽä»?XML æ–‡äšgæˆ?JavaScript 数组å˜é‡è°ƒç”¨æ•°æ®ã€‚PNG æ ¼å¼åQŒå…¼å®Òމ€æœ‰ä¸»è¦æµè§ˆå™¨ã€?
Canvas 3D JS Library (C3DL)
C3DL ä½?3D ½E‹åºçš„编写å˜å¾—简å•。æä¾›ä¸€å¥—æ•°å¦ï¼Œåœºæ™¯ä¸?3D 对象¾c»ï¼Œå¯ä»¥ç›´æŽ¥åœ¨æµè§ˆå™¨ä¸å¼€å?3D 内容åQŒä¸éœ€è¦å¾ˆæ·Þqš„ 3D 知识ã€?
Processing.js
˜q™æ˜¯ Processing è¯è¨€åœ?JavaScript 的移æ¤ã€?D输出功能丰富。æä¾›äº†¾l˜å›¾åQŒè‰²å½©å¤„ç†ï¼Œå—体åQŒå¯¹è±¡ç‰å¤„ç†å‡½æ•°ã€?
Rapha?l
一个让人惊å¹çš„ JavaScript 库,å¯ä»¥åœ?Web 上实现矢é‡å›¾ã€‚ä‹Éç”?SVG, VML 创å¾çš„图形å¯ä»¥è¢«æ›´æ”¹æˆ–绑定事件。功能æžå…¶ä¸°å¯Œï¼ŒåŒ…括旋è{åQŒåŠ¨ç”»ï¼Œ¾~©æ”¾½{‰ã€?
ImageFX
è¯?JavaScript åº“äØ“å›„¡‰‡æ·ÕdŠ æ•ˆæžœåQŒå¦‚虚化åQŒé”化,‹¹®é›•åQŒåŠ äº®ç‰ã€‚ImageFX 使用ç”Õd¸ƒå¯¹è±¡å®žçް˜q™äº›æ•ˆæžœåQŒå…¼å®Òމ€æœ‰ä¸»‹¹æµè§ˆå™¨ã€‚这个库éžå¸¸å®ÒŽ˜“使用åQŒåªè¦å°† .js 库文件æ’入网™åµï¼Œè°ƒç”¨é‚£äº›å‡½æ•°å›_¯ã€?
Pixastic
Pixastic 使用 HTML5 ç”Õd¸ƒå¯¹è±¡åQŒå…许对原始åƒç´ ˜q›è¡Œæ“作。效果包括去饱和度,ç°åº¦¾U§ï¼Œåè{åQŒäº®åº¦ï¼Œå¯Òޝ”度调æ•ß_¼Œè‰²è°ƒåQŒé¥±å’Œåº¦è°ƒæ•´åQŒä»¥åŠæÕQ雕,虚化½{‰æ•ˆæžœã€‚å› ä¸ºç”¨åˆîCº† HTML 5 çš„ç”»å¸ƒå¯¹è±¡ï¼Œå› æ¤˜q˜æ— 法兼å®Òމ€æœ‰æµè§ˆå™¨ã€?
Reflection.js
一个很低调çš?JavaScript è‡ªåŠ¨å®žçŽ°å€’åª„æ•ˆæžœã€‚å€’åª„çš„é«˜åº¦ï¼Œé€æ˜Žåº¦å¯ä»¥è°ƒæ•´ã€‚æ”¯æŒæ‰€æœ‰ä¸»‹¹æµè§ˆå™¨åQŒæ–‡ä»¶å°ºå¯¸å°äº?Kã€?
Taffy DB
一ä¸?JavaScript 库,å¯ä»¥çœ‹ä½œ‹¹è§ˆå™¨ä¸çš?SQL ServeråQŒæˆ–高çñ”数组½Ž¡ç†å™¨ã€‚在使用äº?AJAX 的程åºä¸åQŒå¯ä»¥ç”¨ä½œæ•°æ®åº“层,å¯ä»¥åˆ›å¾åQŒè¯»å–,¾~–辑åQŒåˆ 除数æ®ï¼Œä½¿ç”¨å¾ªçޝåQŒæŽ’åºä»¥åŠé«˜¾U§æŸ¥è¯¢ã€?
ActiveRecord.js
˜q™ä¸ªåº“支æŒ?Google Gears ä»¥åŠ ChromeåQŒAptana Jaxer, Adobe AIR 以åŠä»ÖM½•æ”¯æŒ HTML 5 SQL ¾l†åˆ™çš„åã^åŽÍ¼ˆç›®å‰æœ?Webkit ä»¥åŠ iPhoneåQ‰ã€‚å¯ä»¥è‡ªåŠ¨åˆ›å»ø™¡¨åQŒéªŒè¯å’ŒåŒæ¥æ•°æ®ã€?
http://www.comsharp.com/GetKnowledge/zh-CN/TeamBlogTimothyPage_K742.aspx
‹¹è¡Œçš?JavaScript 库ä¸èƒœæžšä¸¾ï¼ŒjQuery, MooTools, Prototype, Dojo, YUI。这äº?JavaScript åº“åŠŸèƒ½ä¸°å¯Œï¼ŒåŠ ä¸Šå®ƒä»¬çš„æ’ä»Óž¼Œå‡ 乎能胜ä»ÖM“Q何工作,然而这是有代äh的,˜q™äº›åº“往往坯D‡´ä½ çš„¾|‘页ž®ºå¯¸è‡ƒè‚¿ã€‚在æŸäº›åœºåˆåQŒå¦‚æžœä½ åªæƒ³å®Œæˆç‰¹å®šçš„工作,å¯ä»¥ä½¿ç”¨ä¸€äº›åŠŸèƒ½æ›´ä¸“ä¸€çš„è½»é‡åº“åQŒæœ¬æ–‡ä»‹¾l了40个éžå¸¸å‡ºè‰²çš„轻釾U?JavaScript 库ã€?
˜q™æ˜¯æœ¬æ–‡çš„第二部分,½W¬ä¸€éƒ¨åˆ†å‚è§40 个轻é‡çñ” JavaScript åº?åQˆä¸ŠåQ?/a>ã€? Date.js Sylvester Pretty Date XRegExp JavaScript URL Library typeface.js5. å—符串与数å¦å‡½æ•°
和日期打交é“䏿˜¯ä»¶å®¹æ˜“事åQŒæœ‰å¾ˆå¤šæ ¼å¼è¦å¤„ç†ã€?strong>Datejs å¯ä»¥å¾ˆå¥½åœ°å¤„ç†ç®€å•æˆ–å¤æ‚的日期函数。å¯ä»¥å°†æ—¥æœŸè§£æžå‡ø™¯¸å¦‚“Next thursdayâ€ï¼Œâ€?2 yearsâ€ä¸€¾cÈš„æ ¼å¼åQŒä¹Ÿæ”¯æŒæ‰€æœ‰æ—¥æœŸåÅžå¼ï¼Œå¦?2009.01.08, 12/6/2001ã€?
一个处ç†çŸ¢é‡å’Œç‚šw˜µçš„æ•°å?JavaScript 库,包å«å¤šç»´çŸ¢é‡å’Œç‚¹é˜µå¾æ¨¡ç±»åQŒä»¥åŠåœ¨3D½Iºé—´çš„一些模型ã€?
ä¸€ä¸ªå¾ˆå‡ø™‰²çš?JavaScript 库,用一¿U很漂亮åQŒå¾ˆå‹å¥½çš„æ–¹å¼æ˜¾½Cºæ—¥æœŸï¼Œå¦‚下图所½Cºã€?
JavaScript ä¸çš„ RegExp å¯¹è±¡å·²ç»æ”¯æŒæ£åˆ™è¡¨è¾¾å¼ï¼ŒXRegExp å¢žåŠ äº†æ›´å¤šæœªæ¥æµè§ˆå™¨å¯èƒ½åŒ…å«çš„功能(ECMAScript 4 - ES4åQ‰ã€‚该库对 RegExp 对象˜q›è¡Œ¾~“å˜åQŒé‡ç”¨åÆˆå¢žåŠ äº†ä¼—å¤šæ–°åŠŸèƒ½ã€?
一个用æ¥å¤„ç?URL çš?JavaScript 库,å¯ä»¥å¯?URL ä¸çš„ä»ÀL„部分˜q›è¡Œå¤„ç†ã€?6. Fonts
˜q™ä¸ªåº“å¯ä»¥è®©ä½ 在¾|‘页ä¸ä‹É用ä“Qæ„å—体,但和 sIFR ä»¥åŠ FLIR ˜q™äº›åŸÞZºŽ Flash 的方案ä¸ä¸€æ øP¼Œtypeface.js 100% åŸÞZºŽ JavaScriptåQŒåªéœ€ž®†ä½ çš„å—ä½“æ–‡ä»¶ä¸Šä¼ åˆ°ä¸€ä¸?a >åŸÞZºŽ Web 的生æˆå™¨
CufÙQn
å’?typeface.js 很相åƒï¼ŒCufÙQn 也å¯ä»¥è®©ä½ 在¾|‘页ä¸ä‹É用ä“Qæ„å—ä½“ï¼ŒåŒæ ·åQŒå®ƒä¹Ÿæ˜¯ä½¿ç”¨ä¸€ä¸ªç”Ÿæˆå™¨åQŒå°†å—ä½“è½¬æ¢æˆ?VMLåQŒå°†ç”Ÿæˆçš?.js æ–‡äšg包å«åˆ°ç½‘™åµå³å¯ã€?
Blackbird
äºÞZ»¬¾l常使用 Alert() 调试 JavaScript ½E‹åºåQ?strong>Blackbird æä¾›äº†ä¸€ä¸ªæ¼‚亮的控制å°è®°å½•,查看åQŒè¿‡æ»¤ç¨‹åºçš„˜q行ã€?
NitobiBug
åŸÞZºŽ‹¹è§ˆå™¨çš„è·¨æµè§ˆå™¨ javaScript 对象记录与检查工兗÷€?
Firebug Lite
ç›®å‰æœ€å¥½çš„ JavaScript 调试工具é?Firebug 莫属åQŒç„¶è€Œè¯¥å·¥å…·åªæ”¯æŒ?FireFoxåQŒå°† Firebug Lite .js æ–‡äšgæ’å…¥ä½ çš„¾|‘页åQŒå°±å¯ä»¥åœ¨æ‰€æœ‰æµè§ˆå™¨éƒ½å®žçŽ?FireBug 功能ã€?
swfobject
˜q™æ˜¯ä¸€ä¸ªæœ€å—欢˜qŽçš„å¯?Flash 对象˜q›è¡Œå¼•用的方法。å¯ä»¥ç”Ÿæˆæ ‡å‡?swf 引用代ç åQŒåÆˆæŽ¢æµ‹ç”¨æˆ·æ’æ”¾å™¨ç‰ˆæœ¬ã€‚如果用æˆïL‰ˆæœ¬ä¸æ”¯æŒåQŒä¼šæ˜„¡¤ºå¤‡ç”¨å†…容ã€?
sorttable �dragtable
ä¸ç®¡ä½ å–œ‹Æ¢ä¸Žå¦ï¼Œtable ä»ç„¶æ˜¯æœ€å¥½çš„表现数æ®çš„æ–¹å¼ï¼Œä½†å¯ä»¥æ›´å¥½åœ°åˆ©ç”¨ã€?strong>sorttable å¯ä»¥è®©è¡¨æ ¼æ•°æ®æŽ’åºï¼Œåªéœ€åœ?table ä¸ŠåŠ ä¸€ä¸?class="sortable" æ ‡å¿—åQŒè¿˜å¯ä»¥æŽ’除指定的æ ã€?strong>dragtable è®©è¡¨æ ¼çš„æ å¯ä»¥æ‹–动,在表æ ég¸ŠåŠ ä¸Š class="dragable" æ ‡å¿—å›_¯åQŒè¿™ä¸¤ä¸ª¾cÕd¯ä»¥ç»“åˆè“væ¥ä‹É用,åªéœ€åŠ ä¸Š class="sortable dragtable" å›_¯ã€?
DD_roundies �DD_belatedPNG
DD_roundies å¯ä»¥ä¸ä¾èµ–图片实现圆角功能,åªé¢å?IEåQ?通过 VML 实现åQŒå…¶å®ƒæµè§ˆå™¨ä¼šè¢«ç•¥è¿‡åQŒå› 为那些æµè§ˆå™¨æœ¬èínæ”¯æŒ CSS 圆角ã€?
DD_belatedPNG æ˜¯äØ“äº†è§£å†?IE6 å¯?PNG 支æŒä¸å¥½é—®é¢˜è€Œå¼€å‘çš„åQŒä¸½Ž?PNG 囄¡‰‡ç”¨äºŽ src ˜q˜æ˜¯ background-imageåQ?strong>DD_belatedPNG 都能æä¾›ä¿®è¡¥ã€?
Custom JavaScript Dialog Boxes
ä¸€ä¸ªåªæœ?4.5K 的轻é‡?JavaScript 库,å¯ä»¥åˆ›å¾ç”¨æˆ·å®šåˆ¶å¯¹è¯æ¡†ï¼Œå¯æ˜¾½C?¿Uç±»åž‹çš„æ¶ˆæ¯æ¡†ï¼Œalerts, warnings, prompts, success。å¯ä»¥è®¾å®šæ¶ˆæ¯æ¡†æ ‡é¢˜åQŒå†…容,以劘q‡å¤šé•¿æ—¶é—´æ˜¾½Cºã€?
GameJS
GameJS 是微软的 XNA æ¸¸æˆæ¡†æž¶åœ?JavaScript 上的¿UÀL¤åQŒä‹Éç”?canvas å¯¹è±¡ä½œäØ“è¾“å‡ºè®‘Ö¤‡ã€‚JavaScript 䏿˜¯æœ€ä½Ïx¸¸æˆåã^åŽÍ¼Œä½†å¯¹é‚£äº›å¸§çŽ‡è¾ƒä½Žçš„æ¸¸æˆä¹Ÿæ²¡æœ‰é—®é¢˜ã€?
Shortcuts.js
ä»?Google Reader å’?Gmail 开始,Web ½E‹åºä¸çš„å¿«æ·é”®å¼€å§‹æµè¡Œè“væ¥ã€?strong>Shorcuts.js 让快æ·é”®çš„处ç†å˜å¾—简å•ã€?
Mapstraction
有丞®‘地图æä¾›å•†éƒ½æä¾›ä¸å?APIåQŒå¦‚æžœä½ è¦æ›´æ¢æä¾›å•†åQŒæ¯”如从 Google Maps åˆ?MapQueståQŒéœ€è¦æ›´æ–îC»£ç ,Mapstraction æä¾›äº†å¸¸ç”¨åœ°å›¾æä¾›å•†çš?APIåQŒåªéœ€è¯¥ä¸€è¡Œä»£ç 就能完æˆè{æ¢ã€?
Amberjack
ä¸€ä¸ªåªæœ?4K 的微åž?JavaScript 库,å¯ä»¥ä¸ÞZ½ çš„ç½‘ç«™æ·»åŠ æ¼‚äº®çš„æ•™ç¨‹åŠŸèƒ½åQŒä¸€ä¸ªæ¨¡å¼çª—å£ä¼šä»¥æ•™½E‹çš„形弿˜„¡¤ºä»ÀL„内容åQŒæ•™½E‹ä¸çš„æ¥éª¤å¯ä»¥é€šè¿‡æ‰‹å·¥¾~–ç 实现æˆ?a >在线自动生æˆã€‚å¯ä»¥ä‹Éç”?a >主题æˆ?CSS æŽ§åˆ¶å†…å®¹çš„æ ¼å¼ã€?
JsLoad
JsLoad å¯ä»¥ä»?Google server ˜qœç¨‹åŠ è²å„ç§ JavaScript 库,å¯ä»¥è‡ªåŠ¨åŠ è²å„ç§ç‰ˆæœ¬çš„æ”¯æ’‘库ã€?/p>
  Googleçš?span lang="EN-US">PageRankæ ÒŽ®¾|‘站的外部链接和内部链接的数é‡å’Œè´¨é‡ä¿©è¡¡é‡ç½‘站的价倹{€?span lang="EN-US">PageRank背åŽçš„æ¦‚忉|˜¯åQŒæ¯ä¸ªåˆ°™åµé¢çš„链接都是对该页é¢çš„一‹Æ¡æŠ•¼œ¨ï¼Œè¢«é“¾æŽ¥çš„‘Šå¤šåQŒå°±æ„味ç€è¢«å…¶ä»–网站投¼œ¨è¶Šå¤šã€‚这个就是所谓的â€?/span>链接‹¹è¡Œåº?span lang="EN-US">â€â€”â€?/span>è¡¡é‡å¤šå°‘人愿æ„å°†ä»–ä»¬çš„ç½‘ç«™å’Œä½ çš„¾|‘站挂钩ã€?span lang="EN-US">PageRank˜q™ä¸ªæ¦‚å¿µå¼•è‡ªå¦æœ¯ä¸ä¸€½‹‡è®ºæ–‡çš„被引˜q°çš„频度—â€?/span>匙¢«åˆ«äh引述的次数越多,一般判æ–è¿™½‹‡è®ºæ–‡çš„æƒå¨æ€§å°±‘Šé«˜ã€?span lang="EN-US">
  Google有一套自动化æ–ÒŽ³•æ¥è®¡½Ž—这些投¼œ¨ã€?span lang="EN-US">Googleçš?span lang="EN-US">PageRank分å€ég»Ž0åˆ?span lang="EN-US">10åQ?span lang="EN-US">PageRankä¸?span lang="EN-US">10表示最佻I¼Œä½†éžå¸¸å°‘è§ï¼Œ¾cÖM¼¼é‡Œæ°éœ‡çñ”åQ?span lang="EN-US">Richter scaleåQ‰ï¼ŒPageRank¾U§åˆ«ä¹Ÿä¸æ˜¯çº¿æ€§çš„åQŒè€Œæ˜¯æŒ‰ç…§ä¸€¿U指数刻度。这是一¿Uå¥‡ç‰¹çš„æ•°å¦æœ¯è¯åQŒæ„æ€æ˜¯PageRank4䏿˜¯æ¯?span lang="EN-US">PageRank3好一¾U?span lang="EN-US">—â€?/span>而å¯èƒ½ä¼šå¥?span lang="EN-US">6åˆ?span lang="EN-US">7å€ã€‚å› æ¤ï¼Œä¸€ä¸?span lang="EN-US">PageRank5的网™åµå’ŒPageRank8的网™åµä¹‹é—´çš„å·®è·ä¼šæ¯”ä½ å¯èƒ½è®¤ä¸ºçš„è¦å¤§çš„多ã€?span lang="EN-US">
  PageRank较高的页é¢çš„æŽ’åå¾€å¾€è¦æ¯”PageRank较低的页é¢é«˜åQŒè€Œè¿™å¯ÆD‡´äº†äh们对链接的瀙ì”。在整个SEO½C‘ÖŒºåQŒäh们忙于争夺ã€äº¤æ¢ç”šè‡³é”€å”®é“¾æŽ¥ï¼Œå®ƒæ˜¯˜q‡åŽ»å‡ å¹´æ¥äh们关注的焦点åQŒä»¥è‡³äºŽGoogle修改了他的系¾lŸï¼Œòq¶å¼€å§‹æ”¾å¼ƒæŸäº›ç±»åž‹çš„链接。比如,被äh们广泛接å—的一æ¡è§„定,æ¥è‡ª¾~ÞZ¹å†…容çš?span lang="EN-US">“link farmâ€?/span>åQˆé“¾æŽ¥å·¥åŽ‚ï¼‰¾|‘站的链接将ä¸ä¼šæä¾›™åµé¢çš?span lang="EN-US">PageRankåQŒä»ŽPageRank较高的页é¢å¾—到链接但是内容ä¸ç›¸å…³åQˆæ¯”如说æŸä¸ª‹¹è¡Œçš„æ˜Oç”ÖM¹¦¾|‘站链接åˆîC¸€ä¸ªå‰è½¦è§„范页é¢ï¼‰åQŒä¹Ÿä¸ä¼šæä¾›™åµé¢çš?span lang="EN-US">PageRankã€?span lang="EN-US">Google选择é™ä½Žäº?span lang="EN-US">PageRankå¯ÒŽ›´æ–°é¢‘率,以便ä¸é¼“åŠ×ƒh们䏿–的对其˜q›è¡Œç›‘测ã€?span lang="EN-US">
  Google PageRank一般一òq´æ›´æ–°å››‹Æ¡ï¼Œæ‰€ä»¥åˆšä¸Šçº¿çš„æ–°¾|‘ç«™ä¸å¯èƒ½èŽ·å¾?span lang="EN-US">PR倹{€‚ä½ çš„ç½‘ç«™å¾ˆå¯èƒ½åœ¨ç›¸å½“长的时间里é¢çœ‹ä¸åˆ°PR值的å˜åŒ–åQŒç‰¹åˆ«æ˜¯ä¸€äº›æ–°çš„网站ã€?span lang="EN-US">PR值暂时没有,˜q™ä¸æ˜¯ä»€ä¹ˆä¸å¥½çš„事情åQŒè€å¿ƒ½{‰å¾…ž®±å¥½äº†ã€?span lang="EN-US">
  为您的网站获å–å¤–éƒ¨é“¾æŽ¥æ˜¯ä¸€ä»¶å¥½äº‹ï¼Œä½†æ˜¯æ— è§†å…¶ä»–SEO领域的工作而进行急迫的链接å¾è®‘Ö°±æ˜¯æµªè´ÒŽ—¶é—ß_¼Œè¦æ—¶åˆÖM¿æŒä¸€ä¸ªæ•´ä½“æ€èµ\òq¶è®°ä½ä»¥ä¸‹å‡ 点:
  ·Google的排åç®—æ³•åÆˆä¸æ˜¯å®Œå…¨åŸÞZºŽå¤–部链接çš?span lang="EN-US">
  ·é«?span lang="EN-US">PageRankòq¶ä¸èƒ½ä¿è¯?span lang="EN-US">Google高排å?span lang="EN-US">
  ·PageRank值更新的比较慢,今天看到çš?span lang="EN-US">PageRank值å¯èƒ½æ˜¯ä¸‰ä¸ªæœˆå‰çš„å€?span lang="EN-US">
ã€€ã€€å› æ¤æˆ‘们ä¸é¼“励刻æ„的去追æ±?span lang="EN-US">PageRankåQŒå› 为决定排åçš„å› ç´ å¯ä»¥æœ‰ä¸Šç™„¡§ã€‚å°½½Ž¡å¦‚æ¤ï¼ŒPageRank˜q˜æ˜¯ä¸€ä¸ªç”¨æ¥äº†è§?span lang="EN-US">Googleå¯ÒŽ‚¨çš„网站页é¢å¦‚何评ä»ïLš„相当好的指示åQŒå¾è®®ç½‘站设计者è¦å……分认识PageRankåœ?span lang="EN-US">Google判斾|‘站质é‡ä¸çš„é‡è¦ä½œç”¨åQŒä»Žè®¾è®¡å‰çš„è€ƒè™‘åˆ°åŽæœŸç½‘站更新都è¦ç»™äº?span lang="EN-US">PageRank‘›_¤Ÿçš„分æžï¼Œå¾ˆå¥½çš„利用。我们覞®?span lang="EN-US">PageRank看作是一¿Uä¸šä½™çˆ±å¥½è€Œä¸æ˜¯ä¸€¿Uä¿¡ä»°ã€?span lang="EN-US">
  ---------------------------------------------------------------------------------------------------------------------
  通过对由‘…过 50,000 万个å˜é‡å’?span lang="EN-US"> 20 äº¿ä¸ªè¯æ±‡¾l„æˆçš„æ–¹½E‹è¿›è¡Œè®¡½Ž—,PageRank 能够对网™å늚„é‡è¦æ€§åšå‡ºå®¢è§‚的评ähã€?span lang="EN-US">PageRank òq¶ä¸è®¡ç®—直接链接的数é‡ï¼Œè€Œæ˜¯ž®†ä»Ž¾|‘页 A 指呾|‘页 B çš„é“¾æŽ¥è§£é‡ŠäØ“ç”Þq½‘™å?span lang="EN-US"> A 对网™å?span lang="EN-US"> B 所投的一¼œ¨ã€‚è¿™æ øP¼ŒPageRank ä¼šæ ¹æ®ç½‘™å?span lang="EN-US"> B 所收到的投¼œ¨æ•°é‡æ¥è¯„估该页的é‡è¦æ€§ã€?span lang="EN-US">
  æ¤å¤–åQ?span lang="EN-US">PageRank ˜q˜ä¼šè¯„ä¼°æ¯ä¸ªæŠ•票¾|‘页的é‡è¦æ€§ï¼Œå› 䨓æŸäº›¾|‘页的投¼œ¨è¢«è®¤äØ“å…ähœ‰è¾ƒé«˜çš„ähå€û|¼Œ˜q™æ ·åQŒå®ƒæ‰€é“¾æŽ¥çš„网™åµå°±èƒ½èŽ·å¾—è¾ƒé«˜çš„ä»·å€¹{€‚é‡è¦ç½‘™åµèŽ·å¾—çš„ PageRankåQˆç½‘™å‰|Ž’å)较高åQŒä»Žè€Œæ˜¾½Cºåœ¨æœçƒ¦¾l“果的顶部ã€?span lang="EN-US">Google 技术ä‹É用网上å馈的¾l¼åˆä¿¡æ¯æ¥ç¡®å®šæŸä¸ªç½‘™å늚„é‡è¦æ€§ã€‚æœç´¢ç»“果没有äh工干预或æ“纵åQŒè¿™ä¹Ÿæ˜¯ä¸ÞZ»€ä¹?span lang="EN-US"> Google 会æˆä¸ÞZ¸€ä¸ªå¹¿å—用户信赖ã€ä¸å—付è´ÒŽŽ’å媄å“且公æ£å®¢è§‚çš„ä¿¡æ¯æ¥æºã€?span lang="EN-US">
  åQï¼åQï¼åQï¼åQï¼åQï¼åQï¼åQï¼åQ?span lang="EN-US">
  其实½Ž€å•说ž®±æ˜¯æ°‘主表决。打个比方,å‡å¦‚æˆ‘ä»¬è¦æ‰¾æŽå¼€å¤åšå£«ï¼Œæœ‰ä¸€ç™¾ä¸ªäºÞZ‹D手说自己是æŽå¼€å¤ã€‚é‚£ä¹ˆè°æ˜¯çœŸçš„å‘¢åQŸä¹Ÿè®¸æœ‰å¥½å‡ 个真的,但å³ä½¿å¦‚æ¤è°åˆæ˜¯å¤§å®¶çœŸæ£æƒÏx‰¾çš„å‘¢åQ?span lang="EN-US">:-) 如果大家都说åœ?span lang="EN-US"> Google å…¬å¸çš„那个是真的åQŒé‚£ä¹ˆä»–ž®±æ˜¯çœŸçš„ã€?span lang="EN-US">
  在互è”网上,如果一个网™åµè¢«å¾ˆå¤šå…¶å®ƒ¾|‘页所链接åQŒè¯´æ˜Žå®ƒå—到普é的承认和信赖åQŒé‚£ä¹ˆå®ƒçš„æŽ’å就高。这ž®±æ˜¯ Page Rank çš„æ ¸å¿ƒæ€æƒ³ã€?当然 Google çš?span lang="EN-US"> Page Rank ½Ž—法实际上è¦å¤æ‚得多。比如说åQŒå¯¹æ¥è‡ªä¸åŒ¾|‘页的链接对待ä¸åŒï¼Œæœ¬èín¾|‘页排å高的链接更å¯é ,于是¾l™è¿™äº›é“¾æŽ¥äºˆè¾ƒå¤§çš„æƒé‡ã€?span lang="EN-US">Page Rank è€ƒè™‘äº†è¿™ä¸ªå› ç´ ï¼Œå¯æ˜¯çŽ°åœ¨é—®é¢˜åˆæ¥äº†ï¼Œè®¡ç®—æœçƒ¦¾l“果的网™å‰|Ž’å过½E‹ä¸éœ€è¦ç”¨åˆ°ç½‘™å‰|œ¬íw«çš„æŽ’ååQŒè¿™ä¸æˆäº†å…ˆæœ‰é¸¡˜q˜æ˜¯å…ˆæœ‰è›‹çš„问题了å—åQ?span lang="EN-US">
  Google 的两个创始äh拉里·佩奇åQ?span lang="EN-US">Larry Page åQ‰å’Œè°¢å°”ç›?span lang="EN-US">·布林 (Sergey Brin) æŠŠè¿™ä¸ªé—®é¢˜å˜æˆäº†ä¸€ä¸ªäºŒ¾l´çŸ©é˜ëŠ›¸ä¹˜çš„问题åQŒåƈ且用˜q代的方法解决了˜q™ä¸ªé—®é¢˜ã€‚他们先å‡å®šæ‰€æœ‰ç½‘™å늚„æŽ’åæ˜¯ç›¸åŒçš„åQŒåÆˆä¸”æ ¹æ®è¿™ä¸ªåˆå§‹å€û|¼Œ½Ž—出å„个¾|‘页的第一‹Æ¡è„P代排å,然åŽå†æ ¹æ®ç¬¬ä¸€‹Æ¡è„P代排å算出第二次的排å。他们两äºÞZ»Žç†è®ºä¸Šè¯æ˜Žäº†ä¸è®ºåˆå§‹å€¼å¦‚何选å–åQŒè¿™¿U算法都ä¿è¯äº†ç½‘™å‰|Ž’åçš„ä¼°è®¡å€ÆDƒ½æ”¶æ•›åˆîC»–们的真实倹{€‚值得一æçš„事,˜q™ç§½Ž—法是完全没有ä“Q何äh工干预的ã€?span lang="EN-US">
  ç†è®ºé—®é¢˜è§£å†³äº†ï¼Œåˆé‡åˆ°å®žé™…é—®é¢˜ã€‚å› ä¸ÞZº’è”网上网™å늚„æ•°é‡æ˜¯å·¨å¤§çš„åQŒä¸Šé¢æåˆ°çš„二维矩阵从ç†è®ÞZ¸Šè®²æœ‰¾|‘页数目òqÏx–¹ä¹‹å¤šä¸ªå…ƒç´ 。如果我们å‡å®šæœ‰å亿个网™åµï¼Œé‚£ä¹ˆ˜q™ä¸ªçŸ©é˜µž®±æœ‰ä¸€ç™¾äº¿äº¿ä¸ªå…ƒç´ ã€‚è¿™æ ·å¤§çš„çŸ©é˜ëŠ›¸ä¹˜ï¼Œè®¡ç®—釿˜¯éžå¸¸å¤§çš„。拉里和谢尔盖两人利用稀ç–矩阵计½Ž—的技巧,大大的简化了计算é‡ï¼Œòq¶å®žçŽîCº†˜q™ä¸ª¾|‘页排彎—法。今å¤?span lang="EN-US"> Google 的工½E‹å¸ˆæŠŠè¿™ä¸ªç®—法移æ¤åˆ°òq¶è¡Œçš„计½Ž—机ä¸ï¼Œ˜q›ä¸€æ¥ç¾ƒçŸäº†è®¡ç®—æ—‰™—´åQŒä‹É¾|‘页更新的周期比以å‰çŸäº†è®¸å¤šã€?span lang="EN-US">
ã€€ã€€æˆ‘æ¥ Google åŽï¼Œæ‹‰é‡Œ (Larry) åœ¨å’Œæˆ‘ä»¬å‡ ä¸ªæ–°å‘˜å·¥åñ”谈时åQŒè®²èµ·ä»–当年和谢ž®”ç›–(Sergey) 是怎么惛_ˆ°¾|‘页排彎—法的。他è¯ß_¼š"当时我们觉得整个互蔾|‘å°±åƒä¸€å¼ 大的图 åQ?span lang="EN-US">Graph)åQŒæ¯ä¸ªç½‘站就åƒä¸€ä¸ªèŠ‚ç‚¹ï¼Œè€Œæ¯ä¸ªç½‘™å늚„链接ž®±åƒä¸€ä¸ªå¼§ã€‚我惻I¼Œäº’蔾|‘å¯ä»¥ç”¨ä¸€ä¸ªå›¾æˆ–者矩阉|˜qŽÍ¼Œæˆ‘也许å¯ä»¥ç”¨˜q™ä¸ªå‘现åšä¸ªåšå£«è®ºæ–‡ã€?span lang="EN-US">" 他和谢尔盖就˜q™æ ·å‘明äº?span lang="EN-US"> Page Rank 的算法ã€?span lang="EN-US">
  ¾|‘页排å的高明之处在于它把整个互è”ç½‘å½“ä½œäº†ä¸€ä¸ªæ•´ä½“å¯¹å¾…ã€‚å®ƒæ— æ„识丽W¦åˆäº†ç³»¾lŸè®ºçš„è§‚ç‚V€‚相比之下,以å‰çš„ä¿¡æ¯æ£€ç´¢å¤§å¤šæŠŠæ¯ä¸€ä¸ªç½‘™åµå½“作独立的个体对待åQŒå¾ˆå¤šäh当åˆåªæ³¨æ„了¾|‘页内容和查询è¯å¥çš„相关性,忽略了网™åµä¹‹é—´çš„关系ã€?
  今天åQ?span lang="EN-US">Google æœçƒ¦å¼•擎比最åˆå¤æ‚ã€å®Œå–„了许多。但是网™å‰|Ž’å在 Google 所有算法ä¸ä¾ç„¶æ˜¯è‡³å…³é‡è¦çš„ã€‚åœ¨å¦æœ¯ç•?span lang="EN-US">, ˜q™ä¸ª½Ž—æ³•è¢«å…¬è®¤äØ“æ˜¯æ–‡çŒ®æ£€ç´¢ä¸æœ€å¤§çš„贡献之一åQŒåƈ且被很多大å¦å¼•å…¥äº†ä¿¡æ¯æ£€ç´¢è¯¾½E?span lang="EN-US"> (Information Retrieval) 的教½E‹ã€?
  如何æé«˜ä½ 网™å늚„ PR å€û|¼Ÿ
  什么是PR值呢? PR值全¿UîCØ“PageRankåQ?span lang="EN-US">PR是英æ–?span lang="EN-US">Pagerank 的羃写åÅžå¼ï¼ŒPagerankå–自Google的创始ähLarryPageåQŒå®ƒæ˜?span lang="EN-US">Google排å˜q算法则åQˆæŽ’åå…¬å¼ï¼‰çš„一部分åQ?span lang="EN-US">Pagerankæ˜?span lang="EN-US">Google对网™åµé‡è¦æ€§çš„评估åQŒæ˜¯Google用æ¥è¡¡é‡ä¸€ä¸ªç½‘站的好åçš„å”¯ä¸€æ ‡å‡†ã€?span lang="EN-US">PageRank(¾|‘页¾U§åˆ«)æ˜?span lang="EN-US">Google用于评测一个网™å?span lang="EN-US">â€?/span>é‡è¦æ€?span lang="EN-US">â€?/span>的一¿U方法。在æ‰åˆäº†è¯¸å¦?span lang="EN-US">Titleæ ‡è¯†å’?span lang="EN-US">Keywordsæ ‡è¯†½{‰æ‰€æœ‰å…¶å®ƒå› ç´ ä¹‹åŽï¼ŒGoogle通过PageRankæ¥è°ƒæ•´ç»“果,佉K‚£äº›æ›´å…?span lang="EN-US">â€?/span>é‡è¦æ€?span lang="EN-US">â€?/span>的网™åµåœ¨æœçƒ¦¾l“æžœä¸å¦¾|‘站排å获得æå‡åQŒä»Žè€Œæé«˜æœç´¢ç»“果的相关性和质é‡ã€?span lang="EN-US"> PR值的¾U§åˆ«ä»?span lang="EN-US">1åˆ?span lang="EN-US">10¾U§ï¼Œ10¾U§äؓ满分ã€?span lang="EN-US">PR倯D¶Šé«˜è¯´æ˜Žè¯¥¾|‘页‘Šå—‹Æ¢è¿Žã€?span lang="EN-US">Google把自å·Þqš„¾|‘ç«™çš?span lang="EN-US">PR值定åˆ?span lang="EN-US">10åQŒè¿™è¯´æ˜ŽGoogle˜q™ä¸ª¾|‘站是éžå¸¸å—‹Æ¢è¿Žçš„,也å¯ä»¥è¯´˜q™ä¸ª¾|‘ç«™éžå¸¸é‡è¦ã€?span lang="EN-US">Google大å—é’ççš„å¦ä¸€ä¸ªåŽŸå› å°±æ˜¯å®ƒçš„ç½‘ç«™çƒ¦å¼•é€Ÿåº¦ã€‚å‘Googleæäº¤ä½ çš„¾|‘站直到ä¸?span lang="EN-US">Google收录åQŒä¸€èˆ¬åªéœ€ä¸¤ä¸ªæ˜ŸæœŸã€‚å¦‚æžœä½ çš„ç½‘ç«™å·²¾l䨓Google收录åQŒé‚£ä¹ˆé€šå¸¸Googleä¼šæ¯æœˆä¸€‹Æ¡é历和更新(釿–°ç´¢å¼•)ä½ çš„¾|‘站信æ¯ã€‚丘q‡å¯¹äºŽé‚£äº?span lang="EN-US">PRå€?span lang="EN-US">(Pagerank)较高的网站,Google索引周期会相应的çŸä¸€äº›ã€‚一ä¸?span lang="EN-US">PRå€égØ“1的网站表明这个网站ä¸å¤ªå…·æœ‰æµè¡Œåº¦åQŒè€?span lang="EN-US">PRå€égØ“7åˆ?span lang="EN-US">10则表明这个网站éžå¸¸å—‹Æ¢è¿Žã€?span lang="EN-US">PRå€¼æœ€é«˜äØ“10åQŒä¸€èˆ?span lang="EN-US">PR倯D¾¾åˆ?span lang="EN-US">4åQŒå°±½Ž—是一个ä¸é”™çš„¾|‘站了。那ä¹?span lang="EN-US">PR值都å—é‚£äº›å› ç´ åª„å“å‘¢åQŸä¸‹é¢æˆ‘们一èµäh¥çœ‹çœ‹ã€?span lang="EN-US">
  ½W¬ä¸€åQšç½‘站外部链接的数é‡å’Œè´¨é‡?span lang="EN-US">
  在计½Ž—ç½‘ç«™æŽ’åæ—¶åQ?span lang="EN-US">Pagerank会将¾|‘站的外部链接数考虑˜q›åŽ»ã€‚åÆˆä¸èƒ½è¯´ä¸€ä¸ªç½‘站的外部链接数越多其PR值就‘Šé«˜åQŒå¦‚果这æ ïLš„è¯ï¼Œä¸€ä¸ªç½‘站尽å¯èƒ½èŽ·å¾—æœ€å¤šçš„å¤–éƒ¨é“¾æŽ¥ž®?span lang="EN-US">OK了,有这¿U想法是错误的ã€?span lang="EN-US">Google对一个网站上的外部链接数的é‡è§†ç¨‹åº¦åÆˆä¸æ„味ç€ä½ å› æ¤å¯ä»¥ä¸æ±‚ç–略地与ä“Q何网站å¾ç«‹è¿žæŽ¥ã€‚è¿™æ˜¯å› ä¸?span lang="EN-US">Googleòq¶ä¸æ˜¯ç®€å•地ç”Þp®¡½Ž—网站的外部链接数æ¥å†›_®šå…¶ç‰¾U§ã€?span lang="EN-US">Googleçš?span lang="EN-US">Pagerank¾pÈ»Ÿä¸å•考虑一个网站的外部链接质é‡åQŒä¹Ÿä¼šè€ƒè™‘å…¶æ•°é‡ã€‚这个问题看æ¥å¾ˆæœ‰å¤æ‚。首先让我们æ¥è§£é‡Šä¸€ä¸‹ä»€ä¹ˆæ˜¯é˜Õd°¼å› æ•°(damping factor)。阻ž®¼å› ç´ å°±æ˜¯å½“ä½ æŠ•¼œ¨æˆ–链接到å¦å¤–一个站ç‚ÒŽ—¶æ‰€èŽ·å¾—çš„å®žé™?span lang="EN-US">PR分倹{€‚阻ž®¼å› æ•îC¸€èˆ¬æ˜¯0.85ã€‚å½“ç„¶æ¯”èµ·ä½ ¾|‘站的实é™?span lang="EN-US">PRå€û|¼Œå®ƒå°±æ˜‘Ö¾—微丑³é“了ã€?
  现在让我们æ¥çœ‹çœ‹˜q™ä¸ªPR分值的计算公å¼åQ?span lang="EN-US">PR(A)=(1-d)+d(PR(t1)/C(t1)+...+PR(tn)/C(tn)) å…¬å¼è§£é‡ŠåQšå…¶ä¸?span lang="EN-US">PR(A)表示的是从一个外部链接站ç‚?span lang="EN-US">t1ä¸Šï¼Œä¾æ®Pagerank?¾pÈ»Ÿ¾l™ä½ çš„ç½‘ç«™æ‰€å¢žåŠ çš?span lang="EN-US">PR分å€û|¼›PR(t1)表示该外部链接网站本íw«çš„PR分å€û|¼›C(t1)则表½Cø™¯¥å¤–部链接站点所拥有的外部链接数é‡ã€‚大家è¦è°¨è®°åQšä¸€ä¸ªç½‘站的投票æƒå€¼åªæœ‰è¯¥¾|‘ç«™PR分值的0.85åQ?
  那么åQŒæ˜¯ä¸æ˜¯è¯´å¯¹ä¸€ä¸ªç½‘站而言åQŒå®ƒæ‰€æ‹¥æœ‰çš„较高网站质é‡å’Œè¾ƒé«˜PR分值的外部链接数金Šå¤šž®Þp¶Šå¥½å‘¢åQŸé”™åQŒå› 为ï¼Googleçš?span lang="EN-US">Pagerank¾pÈ»Ÿä¸å•考虑一个网站的外部链接质é‡åQŒä¹Ÿä¼šè€ƒè™‘å…¶æ•°é‡?span lang="EN-US">.比方è¯ß_¼Œå¯¹ä¸€ä¸ªæœ‰ä¸€å®?span lang="EN-US">PR值的¾|‘ç«™Xæ¥è¯´åQŒå¦‚æžœä½ çš„ç½‘ç«?span lang="EN-US">Y是它的唯一一个外部链接,那么Googlež®Þq›¸ä¿¡ç½‘ç«?span lang="EN-US">Xž®†ä½ 的网ç«?span lang="EN-US">Y视åšå®ƒæœ€å¥½çš„一个外部链接,从而会¾l™ä½ 的网ç«?span lang="EN-US">Y更多的分倹{€‚坿˜¯ï¼Œå¦‚æžœ¾|‘ç«™X上已¾l有49个外部链接,那么Googlež®Þq›¸ä¿¡ç½‘ç«?span lang="EN-US">Xåªæ˜¯ž®†ä½ 的网站视åšå®ƒ½W?span lang="EN-US">50ä¸ªå¥½çš„ç½‘ç«™ã€‚å› è€Œä½ çš„å¤–éƒ¨é“¾æŽ¥ç«™ç‚¹ä¸Šçš„å¤–éƒ¨é“¾æŽ¥æ•°‘Šå¤šåQŒä½ 所能够得到çš?span lang="EN-US">PR分值å而会‘Šä½ŽåQŒå®ƒä»¬å‘ˆå比关系ã€?span lang="EN-US">
  说它å¯ÒŽ˜¯å› 䨓åQ一般情况下åQŒä¸€ä¸?span lang="EN-US">PR分值大于ç‰äº?span lang="EN-US">6çš„å¤–éƒ¨é“¾æŽ¥ç«™ç‚¹ï¼Œå¯æ˜¾è‘—æå‡ä½ çš?span lang="EN-US">PR分倹{€‚但如果˜q™ä¸ªå¤–éƒ¨é“¾æŽ¥ç«™ç‚¹å·²ç»æœ?span lang="EN-US">100个其它的外部链接æ—Óž¼Œé‚£ä½ 能够得到çš?span lang="EN-US">PRåˆ†å€¼å°±å‡ ä¹Žä¸ºé›¶äº†ã€‚åŒæ øP¼Œå¦‚果一个外部链接站点的PRå€ég»…ä¸?span lang="EN-US">2åQŒä½†ä½ å´æ˜¯å®ƒçš„å”¯ä¸€ä¸€ä¸ªå¤–éƒ¨é“¾æŽ¥ï¼Œé‚£ä¹ˆä½ æ‰€èŽ·å¾—çš?span lang="EN-US">PR倯D¦˜qœè¿œå¤§äºŽé‚£ä¸ªPRå€égØ“6åQŒå¤–部链接数ä¸?span lang="EN-US">100的网站ã€?
  而且˜q™ä¸ª0.85çš„æƒå€¼åã^å‡åˆ†é…给光™“¾æŽ¥çš„æ¯ä¸ªå¤–éƒ¨¾|‘ç«™ã€?
  ½W¬äºŒåQ?span lang="EN-US">Googleåœ¨ä½ çš„ç½‘ç«™æŠ“å–çš„™åµé¢æ•?span lang="EN-US">
  Googleåœ¨ä½ çš„ç½‘ç«™æŠ“å–çš„™åµé¢æ•ŽÍ¼Œæ•°ç›®‘Šå¤šåQ?span lang="EN-US">Pagerank倯D¶Šé«˜ã€‚但通常Googleòq¶ä¸ä¼šä¸»åŠ¨æŠ“å–ä½ çš„ç½‘ç«™çš„æ‰€æœ‰é¡µé¢ï¼Œž®¤å…¶æ˜¯ç½‘å€é‡Œå¸¦æœ?span lang="EN-US">â€?â€?/span>的动æ€é“¾æŽ¥ï¼ŒGoogleä¸ä¸»åŠ¨ï¼Œé‚£å°±è¦æˆ‘们主动了åQŒæœ€½W¨çš„办法是把¾|‘站所有的™åµé¢éƒ½æäº¤ç»™GoogleåQŒä½†æˆ‘想没有è°çœŸä¼šè¿™ä¹ˆåšåQŒä½†™åµé¢ä¸å¤šçš„è¯å¯ä»¥è¯•è¯•ã€‚æ›´å¥½çš„åŠžæ³•æ˜¯åˆ¶ä½œä¸€ä¸ªé™æ€?span lang="EN-US">Html™åµé¢åQŒé€šå¸¸è¢«ç§°ä½?span lang="EN-US">â€?/span>¾|‘站地图â€?/span>æˆ?span lang="EN-US">â€?/span>¾|‘ç«™å¯ÆDˆªâ€?/span>åQŒå®ƒé‡Œé¢åŒ…å«ä½ è¦æ·ÕdŠ çš„æ‰€æœ‰ç½‘å€åQŒç„¶åŽæŠŠ˜q™ä¸ªé™æ€é¡µé¢æäº¤ç»™Googleã€?span lang="EN-US">
  ½W¬ä¸‰åQšç½‘站被世界三大知å¾|‘ç«™ DMOZåQ?span lang="EN-US">Yahooå’?span lang="EN-US">Looksmart 收录
  众所周知åQ?span lang="EN-US">Googleçš?span lang="EN-US">Pagerank¾pÈ»Ÿå¯šw‚£äº›é—¨æˆïL½‘¾lœç›®å½•如DMOZåQ?span lang="EN-US">Yahooå’?span lang="EN-US">Looksmartž®¤äؓ器é‡ã€‚特别是å¯?span lang="EN-US">DMOZ。一个网站上çš?span lang="EN-US">DMOZ链接å¯?span lang="EN-US">Googleçš?span lang="EN-US">Pagerank?æ¥è¯´åQŒå°±å¥½åƒä¸€å—金å一æ ïLè´üc€‚å¦‚æžœä½ çš„ç½‘ç«™äØ“ODP收录åQŒåˆ™å¯æœ‰æ•ˆæå‡ä½ 的页é¢ç‰¾U§ã€‚å‘ODPæäº¤ä½ 的站点òq¶äؓ它收录,其实òq¶ä¸æ˜¯ä¸€ä»‰™š¾äº‹ï¼Œåªæ˜¯è¦å¤šèŠÞq‚¹æ—‰™—´è€Œå·²ã€‚åªè¦ç¡®ä¿ä½ 的网站æä¾›äº†è‰¯å¥½çš„内容,然åŽåœ?span lang="EN-US">ODPåˆé€‚的目录下点å‡?span lang="EN-US">"å¢žåŠ ç«™ç‚¹"åQŒæŒ‰ç…§æ½CÞZ¸€æ¥æ¥æ¥å°±OK了。至ž®‘è¦ä¿è¯ä½ 的索引™å?span lang="EN-US">(INDEX PAGE)被收录进厅R€‚æ‰€ä»¥ï¼Œå¦‚æžœä½ çš„¾|‘站内容涉åŠå®Œå…¨ä¸åŒçš„å‡ å—å†…å®¹ï¼Œä½ å¯ä»¥æŠŠæ¯ä¸ªå†…容的网™åµåˆ†åˆ«å‘ODPæäº¤åQ丘q‡è¯·è®îC½"‹Æ²é€Ÿåˆ™ä¸è¾¾"。ç‰åˆ?span lang="EN-US">Google对其目录更新åŽï¼Œä½ 就能看åˆîC½ çš?span lang="EN-US">PRå€ég¼šæœ‰ä»€ä¹ˆå˜åŒ–äº†ã€‚å¦‚æžœä½ çš„ç½‘ç«™äØ“Yahooå’?span lang="EN-US">Looksmart所收录åQŒé‚£ä¹ˆä½ çš?span lang="EN-US">PRå€ég¼šå¾—到显著æå‡ã€‚å¦‚æžœä½ çš„ç½‘ç«™æ˜¯éžå•†ä¸šæ€§è´¨çš„æˆ–å‡ ä¹Žå®Œå…¨æ˜¯éžå•†ä¸šæ€§è´¨çš„å†…å®¹ï¼Œé‚£ä¹ˆä½ å¯ä»¥é€šè¿‡zeall.comä½¿ä½ çš„ç½‘ç«™äØ“è‘—å的网¾lœç›®å½?span lang="EN-US">Looksmart所收录ã€?span lang="EN-US">Looksmart也是ä»?span lang="EN-US">Zeal¾|‘络目录获得éžå•†ä¸šæœç´¢åˆ—表ã€?
  Google PR值的更新周期是多长时é—ß_¼Ÿ
  一般情况下PR值更新的周期æ˜?span lang="EN-US">2.5ï½?span lang="EN-US">3个月åQ最˜q‘一‹Æ?span lang="EN-US">PRæ›´æ–°æ˜?span lang="EN-US">2008òq?span lang="EN-US">1æœˆä¸æ—¬ã€?
  PageRank相关½Ž—法æ€È»“åQ?span lang="EN-US">
  1.PageRank
ã€€ã€€åŸºæœ¬æ€æƒ³åQšå¦‚果网™å?span lang="EN-US">Tå˜åœ¨ä¸€ä¸ªæŒ‡å‘网™å?span lang="EN-US">A的连接,则表æ˜?span lang="EN-US">T的所有者认ä¸?span lang="EN-US">A比较é‡è¦åQŒä»Žè€ŒæŠŠT的一部分é‡è¦æ€§å¾—分赋äº?span lang="EN-US">A。这个é‡è¦æ€§å¾—分å€égØ“åQ?span lang="EN-US">PRåQ?span lang="EN-US">TåQ?span lang="EN-US">/C(T)
  其ä¸PRåQ?span lang="EN-US">TåQ‰äØ“Tçš?span lang="EN-US">PageRankå€û|¼ŒC(T)ä¸?span lang="EN-US">T的出链数åQŒåˆ™Açš?span lang="EN-US">PageRankå€égؓ一¾pÕdˆ—¾cÖM¼¼äº?span lang="EN-US">T的页é¢é‡è¦æ€§å¾—åˆ†å€¼çš„ç´¯åŠ ã€?span lang="EN-US">
  优点åQšæ˜¯ä¸€ä¸ªä¸ŽæŸ¥è¯¢æ— å…³çš„é™æ€ç®—法,所有网™å늚„PageRank值通过¼›Èº¿è®¡ç®—获得åQ›æœ‰æ•ˆå‡ž®‘在¾U¿æŸ¥è¯¢æ—¶çš„计½Ž—é‡åQŒæžå¤§é™ä½Žäº†æŸ¥è¯¢å“应旉™—´ã€?span lang="EN-US">
  ä¸èƒöåQšäh们的查询å…ähœ‰ä¸»é¢˜ç‰¹å¾åQ?span lang="EN-US">PageRank忽略了主题相å…Ïx€§ï¼Œå¯ÆD‡´¾l“果的相å…Ïx€§å’Œä¸»é¢˜æ€§é™ä½Žï¼›å¦å¤–åQ?span lang="EN-US">PageRank有很严é‡çš„对新网™å늚„æ§è§†ã€?span lang="EN-US">
  2.Topic-Sensitive PageRankåQˆä¸»é¢˜æ•感的PageRankåQ?span lang="EN-US">
ã€€ã€€åŸºæœ¬æ€æƒ³åQšé’ˆå¯?span lang="EN-US">PageRank对主题的忽略而æå‡ºã€‚æ ¸å¿ƒæ€æƒ³åQšé€šè¿‡¼›Èº¿è®¡ç®—å‡ÞZ¸€ä¸?span lang="EN-US">PageRankå‘é‡é›†åˆåQŒè¯¥é›†åˆä¸çš„æ¯ä¸€ä¸ªå‘é‡ä¸ŽæŸä¸€ä¸»é¢˜ç›¸å…³åQŒå³è®¡ç®—æŸä¸ª™åµé¢å…³äºŽä¸åŒä¸»é¢˜çš„得分。主è¦åˆ†ä¸ÞZ¸¤ä¸ªé˜¶ŒDµï¼šä¸»é¢˜ç›¸å…³çš?span lang="EN-US">PageRankå‘é‡é›†åˆçš„计½Ž—和在线查询时主题的¼‹®å®šã€?span lang="EN-US">
  优点åQšæ ¹æ®ç”¨æˆïLš„æŸ¥è¯¢è¯äh±‚和相关上下文判æ–用户查询相关的主题(用户的兴‘£ï¼‰˜q”回查询¾l“果准确性高ã€?span lang="EN-US">
  ä¸èƒöåQšæ²¡æœ‰åˆ©ç”¨ä¸»é¢˜çš„ç›¸å…³æ€§æ¥æé«˜é“¾æŽ¥å¾—åˆ†çš„å‡†¼‹®æ€§ã€?span lang="EN-US">
  3.Hilltop
ã€€ã€€åŸºæœ¬æ€æƒ³åQšä¸ŽPageRankçš„ä¸åŒä¹‹å¤„:仅考虑专家™åµé¢çš„链接。主è¦åŒ…括两个æ¥éª¤ï¼šä¸“å®¶™åµé¢æœçƒ¦å’Œç›®æ ‡é¡µé¢æŽ’åºã€?span lang="EN-US">
  优点åQšç›¸å…Ïx€§å¼ºåQŒç»“果准¼‹®ã€?span lang="EN-US">
  ä¸èƒöåQšä¸“安™¡µé¢çš„æœçƒ¦å’Œç¡®å®šå¯¹½Ž—法起关键作用,专家™åµé¢çš„è´¨é‡å†³å®šäº†½Ž—法的准¼‹®æ€§ï¼Œè€Œä¸“安™¡µé¢çš„è´¨é‡å’Œå…¬òqÏx€§éš¾ä»¥ä¿è¯ï¼›å¿½ç•¥äº†å¤§é‡éžä¸“å®¶™åµé¢çš„媄å“,ä¸èƒ½å应整个Internet的民æ„;当没有èƒö够的专家™åµé¢å˜åœ¨æ—Óž¼Œ˜q”回½Iºï¼Œæ‰€ä»?span lang="EN-US">Hilltop适åˆå¯¹äºŽæŸ¥è¯¢æŽ’庘q›è¡Œæ±‚ç²¾ã€?span lang="EN-US">
  那么影å“google PageRankçš„å› ç´ æœ‰å“ªäº›å‘?span lang="EN-US">?
  1 ä¸?span lang="EN-US">pr高的¾|‘ç«™åšé“¾æŽ?span lang="EN-US">:
  2 内容质é‡é«˜çš„¾|‘站链接
  3åŠ å…¥æœçƒ¦å¼•擎分类目录
  4 åŠ å…¥å…费开æºç›®å½?span lang="EN-US">
  5 ä½ çš„é“¾æŽ¥å‡ºçŽ°åœ¨æµé‡å¤§ã€çŸ¥å度高ã€é¢‘¾Jæ›´æ–°çš„é‡è¦¾|‘ç«™ä¸?span lang="EN-US">
  6googleå¯?span lang="EN-US">DPFæ ¼å¼çš„æ–‡ä»¶æ¯”较看é‡ã€?span lang="EN-US">
  7安装Google工具æ?span lang="EN-US">
  8域åå’?span lang="EN-US">tilteæ ‡é¢˜å‡ºçŽ°å…³é”®è¯ä¸Žmetaæ ‡ç¾½{?span lang="EN-US">
  9å员qžæŽ¥æ•°é‡å’Œåå‘连接的½{‰çñ”
  10GoogleæŠ“å–æ‚¨ç½‘站的™åµé¢æ•°é‡
  11导出链接数é‡
  PageRank¿U‘妿ޒå鿢关键å—垃åœ?span lang="EN-US">
  目å‰åQŒäº”花八门的¾|‘ç«™ä¸ÞZº‰å¤ºç½‘上排åé‡‡ç”¨æ¶æ„点å‡Õd’Œè¾“入关键å—垃圄¡š„手段æ¥å¸å¼•网民的眼çƒåQŒæ— 论对于互è”网ä¼ä¸š˜q˜æ˜¯äº’蔾|‘ç”¨æˆøP¼Œ˜q™éƒ½ä¸æ˜¯ä¸€ä¸ªå¥½çŽ°è±¡ã€?span lang="EN-US">
  ä¸ÞZº†è§£å†³˜q™æ ·çš„问题,Google 创始äºÞZ¹‹ä¸€æ‹‰é‡Œ.佩奇åQ?span lang="EN-US">Larry PageåQ‰å‘明了一¿Uç®—æ³?span lang="EN-US">PageRankåQŒæ˜¯ç”±æœç´¢å¼•æ“Žæ ¹æ®ç½‘™åµä¹‹é—´ç›¸äº’çš„‘…链接进行计½Ž—çš„¾|‘页排å。它¾l常和æœç´¢å¼•擎优化有兟ë€?span lang="EN-US">PageRank ¾pÈ»Ÿç›®å‰è¢?span lang="EN-US">Google 用æ¥ä½“现¾|‘页的相å…Ïx€§å’Œé‡è¦æ€§ï¼Œä»¥ä¾¿¿U‘妿ޒååQŒéæ¢å…³é”®å—垃圾ã€?span lang="EN-US">
  PageRank˜q™ä¸ªæ¦‚念引自一½‹‡å¦æœ¯è®ºæ–‡çš„被媒体è{载的频度åQŒä¸€èˆ¬è¢«è½¬è²çš„æ¬¡æ•°è¶Šå¤šï¼Œ˜q™ç¯‡è®ºæ–‡çš„æƒå¨æ€§å°±‘Šé«˜åQŒähå€ég¹Ÿž®Þp¶Šé«˜ã€?span lang="EN-US">PageRankæ˜?span lang="EN-US">1998òq´åœ¨æ–¯å¦¼›å¤§å¦é—®ä¸–çš„åQ?span lang="EN-US">2001
  òq?span lang="EN-US">9 月被授予¾ŸŽå›½ä¸“利。如今它åœ?span lang="EN-US"> Google 所有算法ä¸ä¾ç„¶æ˜¯è‡³å…³é‡è¦çš„ã€‚åœ¨å¦æœ¯ç•?span lang="EN-US">, ˜q™ä¸ª½Ž—æ³•è¢«å…¬è®¤äØ“æ˜¯æ–‡çŒ®æ£€ç´¢ä¸æœ€å¤§çš„贡献之一åQŒåƈ且被很多大å¦å¼•å…¥äº†ä¿¡æ¯æ£€ç´¢è¯¾½E?span lang="EN-US">(Information Retrieval) 的教½E‹ã€?span lang="EN-US">
  PageRank 通过对由‘…过 5 亿个å˜é‡å’?span lang="EN-US"> 20 äº¿ä¸ªè¯æ±‡¾l„æˆçš„æ–¹½E‹è¿›è¡Œè®¡½Ž—,能科å¦å…¬æ£åœ°æ ‡è¯†¾|‘页的牾U§æˆ–é‡è¦æ€§ã€?span lang="EN-US">PR¾U§åˆ«ä¸?span lang="EN-US">1åˆ?span lang="EN-US">10åQ?span lang="EN-US">PR倯D¶Šé«˜è¯´æ˜Žè¯¥¾|‘页‘Šé‡è¦ã€‚例如:一ä¸?span lang="EN-US">PR å€égØ“1 的网站表明这个网站ä¸å¤ªå…·æœ‰æµè¡Œåº¦åQŒè€?span lang="EN-US">PR å€égØ“7åˆ?span lang="EN-US">10则表明这个网站æžå…‰™‡è¦ã€?span lang="EN-US">PageRank¾U§åˆ«ä¸æ˜¯ä¸€èˆ¬çš„½Ž—术¾U§æ•°åQŒè€Œæ˜¯æŒ‰ç…§ä¸€¿Uå‡ ä½•çñ”æ•°æ¥åˆ’分的ã€?span lang="EN-US">PageRank3 䏿˜¯æ¯?span lang="EN-US">PageRank2 好一¾U§ï¼Œè€Œå¯èƒ½ä¼šå¥½åˆ°æ•°å€ã€?span lang="EN-US">
  PageRankæ ÒŽ®¾|‘站的外部链接和内部链接的数é‡å’Œè´¨é‡æ¥è¡¡é‡ç½‘站的价倹{€?span lang="EN-US">PageRank的概忉|˜¯åQŒæ¯ä¸ªåˆ°™åµé¢çš„链接都是对该页é¢çš„一‹Æ¡æŠ•¼œ¨ï¼Œè¢«é“¾æŽ¥å¾—‘Šå¤šåQŒå°±æ„味ç€è¢«å…¶ä»–网站投¼œ¨è¶Šå¤šã€?span lang="EN-US">Google 有一套自动化æ–ÒŽ³•æ¥è®¡½Ž—这些投¼œ¨ï¼Œä½?span lang="EN-US">Google 的排å算法ä¸å®Œå…¨åŸÞZºŽå¤–部链接ã€?span lang="EN-US">PageRank å¯ÒŽ¥è‡ªä¸åŒç½‘™å늚„链接会区别对待,æ¥è‡ª¾|‘页本èín排å高的链接更å—é’çåQŒç»™˜q™äº›é“¾æŽ¥æœ‰è¾ƒå¤§çš„æƒé‡ã€?span lang="EN-US">
ã€€ã€€åŒæ—¶åQ?span lang="EN-US">Google ä¸åªæ˜¯çœ‹ä¸€ä¸ªç½‘站的投票数é‡åQŒæˆ–者这个网站的外部链接数é‡ã€‚它会对那些投票的网站进行分æžã€‚如果这些网站的PR 值比较高åQŒåˆ™å…¶æŠ•¼œ¨çš„¾|‘ç«™å¯ä»Žä¸å—ç›Šã€‚å› æ¤ï¼ŒGoogle 的技术专家æé†’äh们,在å¾è®„¡½‘站的外部链接æ—Óž¼Œåº”å°½å¯èƒ½çž„准那些PR 值高且外部链接数åˆå°‘的网站。这æ ïLš„外部链接站点‘Šå¤šåQŒä½ çš?span lang="EN-US">PR 值就会越高,从而ä‹Éå¾—ä½ çš?span lang="EN-US">Google 排å得到显著æå‡ã€?span lang="EN-US">
  PageRankçš„å¦ä¸€ä½œç”¨æ˜¯å¯¹å…³é”®å—垃圾è“v到巨大的é制作用。眼下,一些垃圄¡½‘ç«™äØ“äº†æé«˜ç‚¹å‡ÈއåQŒç”¨ä¸€äº›ä¸Žç«™ç‚¹å†…å®¹æ— å…³çš„å…³é”®å—垃圾壮声å¨ï¼Œæ¯”如用明星的åå—ã€ç”¨å…¬å…±½H?span lang="EN-US">
  å‘事件称谓ç‰ã€‚这些网™å늚„目的或是ä¸ÞZº†éª—å–òq¿å‘Šç‚¹å‡»åQŒæˆ–æ˜¯äØ“äº†ä¼ æ’ç—…æ¯’ã€‚è¿˜æœ‰ä¸€äº›æ— èµ–å¼çš„åšå®¢è¯„è®ÞZ¹Ÿä»Žä¸æ…å±€åQŒåœ¨¾|‘上招摇˜q‡å¸‚åQŒéª—å–网民的注æ„力,˜q™ä¹Ÿè¢«ç½‘¾lœæŠ€æœ¯ähå‘?span lang="EN-US">
ã€€ã€€è§†äØ“åžƒåœ¾ã€?span lang="EN-US">
  PageRankç›®å‰ä½¿ç”¨ä¸€¿U基于信ä»Õd’Œåèª‰çš„ç®—æ³•å¸®åŠ©éæ¢å…³é”®å—垃圾åQŒå®ƒå¿½è§†˜q™äº›å…³é”®å—垃圄¡š„å˜åœ¨åQŒä»¥¾|‘é¡µç›æ€º’链接评çñ”别论高低ã€?span lang="EN-US">Google 排å之所以大å—追æ§ï¼Œæ˜¯ç”±äºŽå®ƒòq‰™ž
  åªä‹Éç”¨å…³é”®å—æˆ–ä»£ç†æœç´¢æŠ€æœ¯ï¼Œ 而是ž®†è‡ªíw«å¾ç«‹åœ¨é«˜çñ”的网™åëŠñ”别技术基¼‹€ä¹‹ä¸Šã€?别的æœçƒ¦å¼•擎æä¾›¾l™æœç´¢è€…的是多¿Uæ¸ é“å€égØ“ 8 的网站信æ¯å¾—æ¥çš„一个粗略的æœçƒ¦¾l“æžœåQŒè€?span lang="EN-US">Google æä¾›¾l™å®ƒçš„æœç´¢è€…çš„åˆ™æ˜¯å®ƒè‡ªå·×ƒñ”生的高度¾_„¡¡®çš„æœç´¢ç»“æžœã€‚è¿™ž®±æ˜¯ä¸ÞZ»€ä¹ˆç½‘站管ç†å‘˜ä¼šåƒæ–¹ç™¾è®¡åŽ»æé«˜è‡ªå·±¾|‘ç«™åœ?span lang="EN-US">Google 的排å了ã€?span lang="EN-US">
  PageRank一般一òq´æ›´æ–°å››‹Æ¡ï¼Œæ‰€ä»¥åˆšä¸Šçº¿çš„æ–°¾|‘ç«™ä¸å¯èƒ½èŽ·å¾?span lang="EN-US">PR 倹{€‚丘q?span lang="EN-US">PR 值暂时没有,òq¶ä¸æ˜¯ä»€ä¹ˆä¸å¥½çš„事情åQŒè€å¿ƒ½{‰å¾…ž®Þpƒ½å¾—到Google çš„é’çã€?/span>
ä¸€ã€æ·±åº¦ä¼˜å…ˆæœç´?span lang="EN-US">
深度优先æœçƒ¦ž®±æ˜¯åœ¨æœç´¢æ ‘çš„æ¯ä¸€å±‚å§‹¾lˆå…ˆåªæ‰©å±•一个å节点åQŒä¸æ–地å‘纵深剘q›ç›´åˆîC¸èƒ½å†å‰è¿›åQˆåˆ°è¾‘Ö¶å节ç‚ÒŽˆ–å—到深度é™åˆ¶åQ‰æ—¶åQŒæ‰ä»Žå½“å‰èŠ‚ç‚¹è¿”å›žåˆ°ä¸Šä¸€¾U§èŠ‚ç‚¹ï¼Œæ²¿å¦ä¸€æ–¹å‘åˆç‘ô¾l剘q›ã€‚è¿™¿U方法的æœçƒ¦æ ‘æ˜¯ä»Žæ ‘æ ¹å¼€å§‹ä¸€æžä¸€æžé€æ¸å½¢æˆçš„ã€?
深度优先æœçƒ¦äº¦ç§°ä¸ºçºµå‘æœç´¢ã€‚ç”±äºŽä¸€ä¸ªæœ‰è§£çš„é—®é¢˜æ ‘å¯èƒ½å«æœ‰æ— ½I·åˆ†æžï¼Œæ·±åº¦ä¼˜å…ˆæœçƒ¦å¦‚æžœè¯¯å…¥æ— ç©·åˆ†æžåQˆå³æ·±åº¦æ— é™åQ‰ï¼Œåˆ™ä¸å¯èƒ½æ‰‘Öˆ°ç›®æ ‡èŠ‚ç‚¹ã€‚æ‰€ä»¥ï¼Œæ·±åº¦ä¼˜å…ˆæœçƒ¦½{–略是ä¸å®Œå¤‡çš„。å¦å¤–,应用æ¤ç–略得到的解ä¸ä¸€å®šæ˜¯æœ€ä½Œ™§£åQˆæœ€çŸèµ\径)ã€?span lang="EN-US">
二ã€?span lang="EN-US"> 釿ޒä¹å®«é—®é¢˜æ¸¸æˆ
在一ä¸?span lang="EN-US">3ä¹?span lang="EN-US">3çš„ä¹å®«ä¸æœ?span lang="EN-US">1-8çš?span lang="EN-US">8个数åŠä¸€ä¸ªç©ºæ ¼éšæœºæ‘†æ”‘Öœ¨å…¶ä¸çš„æ ¼å里。如下é¢å·¦å›¾æ‰€½Cºã€‚çŽ°åœ¨è¦æ±‚实现这æ ïLš„问题åQšå°†è¯¥ä¹å®«è°ƒæ•´äؓ如下囑ֳ图所½Cºçš„å½¢å¼ã€‚调整规则是åQšæ¯‹Æ¡åªèƒ½å°†ä¸Žç©ºæ û|¼ˆä¸Šï¼Œä¸‹æˆ–左,å»I¼‰ç›æ€Í的一个数å—åã^¿UÕdˆ°½Iºæ ¼ä¸ã€‚试¾~–程实现ã€?span lang="EN-US">
| 2 | 8 | 3 | | 1 | 2 | 3 |
-
| 1 | | 4 | | 8 | | 4 |
| 7 | 6 | 5 | | 7 | 6 | 5 |
深度优先æœçƒ¦çš„èµ\径示æ„图åQ?span lang="EN-US">
 
三ã€å¹¿åº¦ä¼˜å…ˆæœç´?span lang="EN-US">
在深度优先æœç´¢ç®—法ä¸åQŒæ˜¯æ·±åº¦‘Šå¤§çš„结点越先得到扩展。如果在æœçƒ¦ä¸æŠŠ½Ž—æ³•æ”¹äØ“æŒ‰ç»“ç‚¹çš„å±‚æ¬¡˜q›è¡Œæœçƒ¦åQŒæœ¬å±‚çš„¾l“点没有æœçƒ¦å¤„ç†å®Œæ—¶åQŒä¸èƒ½å¯¹ä¸‹å±‚¾l“点˜q›è¡Œå¤„ç†åQŒå³æ·±åº¦‘Šå°çš„结点越先得到扩展,也就是说先äñ”生的¾l“点先得以扩展处ç†ï¼Œ˜q™ç§æœçƒ¦½Ž—法¿UîCØ“òq¿åº¦ä¼˜å…ˆæœçƒ¦æ³•ã€?
òq¿åº¦ä¼˜å…ˆæœçƒ¦è·¯å¾„½Cºæ„图:
å››ã€èˆªç问题(æ¥è‡ªã€?span lang="EN-US">The Art of Javaã€?span lang="EN-US">)
一ä½é¡¾å®¢è¦é¢„å®šä¸€å¼ ä»ŽNew Yorkåˆ?span lang="EN-US">Los Angelesçš„èˆªçæœº¼œ¨ï¼Œä¸‹é¢æ˜¯èˆªççº¿è·¯ï¼Œè¯·ä½ ä¸ºé¡¾å®¢æ‰¾ä¸€¿Uè´¼œ¨æ–¹æ¡ˆã€?span lang="EN-US">
航ç | è·ç¦» |
New York�span lang="EN-US">Chicago | 900英里 |
Chicago�span lang="EN-US">Denver | 1000英里 |
New York�span lang="EN-US">Toronto | 500英里 |
New York�span lang="EN-US">Denver | 1800英里 |
Toronto�span lang="EN-US">Calgary | 1700英里 |
Toronto�span lang="EN-US">Los Angeles | 2500英里 |
Toronto�span lang="EN-US">Chicago | 500英里 |
Denver�span lang="EN-US">Urbana | 1000英里 |
Denver�span lang="EN-US">Houston | 1000英里 |
Houston�span lang="EN-US">Los Angeles | 1500英里 |
Denver�span lang="EN-US">Los Angeles | 1000英里 |
䏋颿˜¯ç”¨æ·±åº¦ä¼˜å…ˆæœçƒ¦æ±‚解的程åº?span lang="EN-US">:
// Find connections using a depth-first search.
import java.util.*;
import java.io.*;
// Flight information.
class FlightInfo {
String from;
String to;
int distance;
boolean skip; // used in backtracking
FlightInfo(String f, String t, int d) {
from = f;
to = t;
distance = d;
skip = false;
}
}
class Depth {
final int MAX = 100;
// This array holds the flight information.
FlightInfo flights[] = new FlightInfo[MAX];
int numFlights = 0; // number of entries in flight array
Stack btStack = new Stack(); // backtrack stack
public static void main(String args[])
{
String to, from;
Depth ob = new Depth();
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));
ob.setup();
try {
System.out.print("From? ");
from = br.readLine();
System.out.print("To? ");
to = br.readLine();
ob.isflight(from, to);
if(ob.btStack.size() != 0)
ob.route(to);
} catch (IOException exc) {
System.out.println("Error on input.");
}
}
// Initialize the flight database.
void setup()
{
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
}
// Put flights into the database.
void addFlight(String from, String to, int dist)
{
if(numFlights < MAX) {
flights[numFlights] =
new FlightInfo(from, to, dist);
numFlights++;
}
else System.out.println("Flight database full.\n");
}
// Show the route and total distance.
void route(String to)
{
Stack rev = new Stack();
int dist = 0;
FlightInfo f;
int num = btStack.size();
// Reverse the stack to display route.
for(int i=0; i < num; i++)
rev.push(btStack.pop());
for(int i=0; i < num; i++) {
f = (FlightInfo) rev.pop();
System.out.print(f.from + " to ");
dist += f.distance;
}
System.out.println(to);
System.out.println("Distance is " + dist);
}
/* If there is a flight between from and to,
return the distance of flight;
otherwise, return 0. */
int match(String from, String to)
{
for(int i=numFlights-1; i > -1; i--) {
if(flights[i].from.equals(from) &&
flights[i].to.equals(to) &&
!flights[i].skip)
{
flights[i].skip = true; // prevent reuse
return flights[i].distance;
}
}
return 0; // not found
}
// Given from, find any connection.
FlightInfo find(String from)
{
for(int i=0; i < numFlights; i++) {
if(flights[i].from.equals(from) &&
!flights[i].skip)
{
FlightInfo f = new FlightInfo(flights[i].from,
flights[i].to,
flights[i].distance);
flights[i].skip = true; // prevent reuse
return f;
}
}
return null;
}
// Determine if there is a route between from and to.
void isflight(String from, String to)
{
int dist;
FlightInfo f;
// See if at destination.
dist = match(from, to);
if(dist != 0) {
btStack.push(new FlightInfo(from, to, dist));
return;
}
// Try another connection.
f = find(from);
if(f != null) {
btStack.push(new FlightInfo(from, to, f.distance));
isflight(f.to, to);
}
else if(btStack.size() > 0) {
// Backtrack and try another connection.
f = (FlightInfo) btStack.pop();
isflight(f.from, f.to);
}
}
}
解释åQ?span lang="EN-US">isflight()æ–ÒŽ³•用递归æ–ÒŽ³•˜q›è¡Œæ·±åº¦ä¼˜å…ˆæœçƒ¦åQŒå®ƒå…ˆè°ƒç”?span lang="EN-US">match()æ–ÒŽ³•‹‚€æŸ¥èˆªç的数æ®åº“,判æ–åœ?span lang="EN-US">fromå’?span lang="EN-US">to之间有没有航çå¯è¾¾ã€‚如果有åQŒåˆ™èŽ·å–ç›®æ ‡ä¿¡æ¯åQŒåƈž®†è¯¥¾U¿èµ\åŽ‹å…¥æ ˆä¸åQŒç„¶åŽè¿”回(扑ֈ°ä¸€ä¸ªæ–¹æ¡ˆï¼‰ã€‚å¦åˆ™ï¼Œž®Þp°ƒç”?span lang="EN-US">find()æ–ÒŽ³•查找from与ä“Qæ„其它城市之间的¾U¿èµ\åQŒå¦‚果找åˆîC¸€æ¡å°±˜q”回æè¿°è¯¥çº¿è·¯çš„FlightInfo对象åQŒå¦åˆ™è¿”å›?span lang="EN-US">null。如果å˜åœ¨è¿™æ ïLš„一æ¡çº¿è·¯ï¼Œé‚£ä¹ˆž®±æŠŠè¯¥çº¿è·¯ä¿å˜åœ¨fä¸ï¼Œòq¶å°†å½“å‰èˆªçä¿¡æ¯åŽ‹åˆ°æ ˆçš„™å‰™ƒ¨åQŒç„¶åŽé€’归调用isflight()æ–ÒŽ³• ,æ¤æ—¶ä¿å˜åœ?span lang="EN-US">f.toä¸çš„城市æˆäؓ新的出å‘城市.å¦åˆ™ž®Þp¿›è¡Œå›žé€€,å¼¹å‡ºæ ˆé¡¶çš„ç¬¬ä¸€ä¸ªèŠ‚ç‚?span lang="EN-US">,ç„¶åŽé€’归调用isflight()æ–ÒŽ³•。该˜q‡ç¨‹ž®†ä¸€ç›´æŒ¾l到扑ֈ°ç›®æ ‡ä¸ºæ¢ã€?
½E‹åº˜q行¾l“æžœåQ?span lang="EN-US">
C:\java>java Depth
From?
To?
Distance is 2900
C:\java>
深度优先æœçƒ¦èƒ½å¤Ÿæ‰‘Öˆ°ä¸€ä¸ªè§£åQŒåŒæ—Óž¼Œå¯¹äºŽä¸Šé¢˜q™ä¸ªç‰¹å®šé—®é¢˜åQŒæ·±åº¦ä¼˜å…ˆæœç´¢æ²¡æœ‰ç»˜q‡å›žé€€åQŒä¸€‹Æ¡å°±æ‰‘Öˆ°äº†ä¸€ä¸ªè§£åQ›ä½†å¦‚果数æ®çš„组¾l‡æ–¹å¼ä¸åŒï¼Œå¯ÀL‰¾è§£æ—¶ž®±æœ‰å¯èƒ½˜q›è¡Œå¤šæ¬¡å›žé€€ã€‚å› æ¤è¿™ä¸ªä¾‹å的输出òq¶ä¸å…ähœ‰æ™®é性。而且åQŒåœ¨æœçƒ¦ä¸€ä¸ªå¾ˆé•¿ï¼Œä½†æ˜¯å…¶ä¸òq¶æ²¡æœ‰è§£çš„分支的时候,深度优先æœçƒ¦çš„æ€§èƒ½ž®†ä¼šå¾ˆå·®åQŒåœ¨˜q™ç§æƒ…况下,深度优先æœçƒ¦ä¸ä»…在æœç´¢è¿™æ¡èµ\径时‹¹ªè´¹æ—‰™—´åQŒè€Œä¸”˜q˜åœ¨å‘ç›®æ ‡çš„å›žé€€ä¸æµªè´ÒŽ—¶é—´ã€?span lang="EN-US">
å†çœ‹å¯¹è¿™ä¸ªä¾‹åä‹É用广度优先æœç´¢çš„½E‹åºåQ?span lang="EN-US">
// Find connections using a breadth-first search.
import java.util.*;
import java.io.*;
// Flight information.
class FlightInfo {
String from;
String to;
int distance;
boolean skip; // used in backtracking
FlightInfo(String f, String t, int d) {
from = f;
to = t;
distance = d;
skip = false;
}
}
class Breadth {
final int MAX = 100;
// This array holds the flight information.
FlightInfo flights[] = new FlightInfo[MAX];
int numFlights = 0; // number of entries in flight array
Stack btStack = new Stack(); // backtrack stack
public static void main(String args[])
{
String to, from;
Breadth ob = new Breadth();
BufferedReader br = new
BufferedReader(new InputStreamReader(System.in));
ob.setup();
try {
System.out.print("From? ");
from = br.readLine();
System.out.print("To? ");
to = br.readLine();
ob.isflight(from, to);
if(ob.btStack.size() != 0)
ob.route(to);
} catch (IOException exc) {
System.out.println("Error on input.");
}
}
// Initialize the flight database.
void setup()
{
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
addFlight("
}
// Put flights into the database.
void addFlight(String from, String to, int dist)
{
if(numFlights < MAX) {
flights[numFlights] =
new FlightInfo(from, to, dist);
numFlights++;
}
else System.out.println("Flight database full.\n");
}
// Show the route and total distance.
void route(String to)
{
Stack rev = new Stack();
int dist = 0;
FlightInfo f;
int num = btStack.size();
// Reverse the stack to display route.
for(int i=0; i < num; i++)
rev.push(btStack.pop());
for(int i=0; i < num; i++) {
f = (FlightInfo) rev.pop();
System.out.print(f.from + " to ");
dist += f.distance;
}
System.out.println(to);
System.out.println("Distance is " + dist);
}
/* If there is a flight between from and to,
return the distance of flight;
otherwise, return 0. */
int match(String from, String to)
{
for(int i=numFlights-1; i > -1; i--) {
if(flights[i].from.equals(from) &&
flights[i].to.equals(to) &&
!flights[i].skip)
{
flights[i].skip = true; // prevent reuse
return flights[i].distance;
}
}
return 0; // not found
}
// Given from, find any connection.
FlightInfo find(String from)
{
for(int i=0; i < numFlights; i++) {
if(flights[i].from.equals(from) &&
!flights[i].skip)
{
FlightInfo f = new FlightInfo(flights[i].from,
flights[i].to,
flights[i].distance);
flights[i].skip = true; // prevent reuse
return f;
}
}
return null;
}
/* Determine if there is a route between from and to
using breadth-first search. */
void isflight(String from, String to)
{
int dist, dist2;
FlightInfo f;
// This stack is needed by the breadth-first search.
Stack resetStck = new Stack();
// See if at destination.
dist = match(from, to);
if(dist != 0) {
btStack.push(new FlightInfo(from, to, dist));
return;
}
/* Following is the first part of the breadth-first
modification. It checks all connecting flights
from a specified node. */
while((f = find(from)) != null) {
resetStck.push(f);
if((dist = match(f.to, to)) != 0) {
resetStck.push(f.to);
btStack.push(new FlightInfo(from, f.to, f.distance));
btStack.push(new FlightInfo(f.to, to, dist));
return;
}
}
/* The following code resets the skip fields set by
preceding while loop. This is also part of the
breadth-first modifiction. */
int i = resetStck.size();
for(; i!=0; i--)
resetSkip((FlightInfo) resetStck.pop());
// Try another connection.
f = find(from);
if(f != null) {
btStack.push(new FlightInfo(from, to, f.distance));
isflight(f.to, to);
}
else if(btStack.size() > 0) {
// Backtrack and try another connection.
f = (FlightInfo) btStack.pop();
isflight(f.from, f.to);
}
}
// Reset skip field of specified flight.
void resetSkip(FlightInfo f) {
for(int i=0; i< numFlights; i++)
if(flights[i].from.equals(f.from) &&
flights[i].to.equals(f.to))
flights[i].skip = false;
}
}
½E‹åº˜q行¾l“æžœåQ?span lang="EN-US">
C:\java>java Breadth
From? New York
To? Los Angeles
New York to Toronto to Los Angeles
Distance is 3000
C:\java>
它找åˆîCº†ä¸€ä¸ªåˆç†çš„解,但这ä¸å…·æœ‰ä¸€èˆ¬æ€§ã€‚å› ä¸ºæ‰¾åˆ°çš„½W¬ä¸€æ¡èµ\径å–决于信æ¯çš„物ç†ç»„¾l‡åÅžå¼ã€?span lang="EN-US">
å¦‚æžœç›®æ ‡åœ¨æœç´¢ç©ºé—´ä¸éšè—得䏿˜¯å¤ªæ·±ï¼Œé‚£ä¹ˆòq¿åº¦ä¼˜å…ˆæœçƒ¦çš„æ€§èƒ½ä¼šå¾ˆå¥½ã€?span lang="EN-US">
Larbinåªæ˜¯ä¸€ä¸ªçˆ¬è™«ï¼Œä¹Ÿå°±æ˜¯è¯´larbinåªæŠ“å–网™åµï¼Œè‡³äºŽå¦‚何parse的事情则ç”Þq”¨æˆ¯‚‡ªå·±å®Œæˆã€‚å¦å¤–,如何å˜å‚¨åˆ°æ•°æ®åº“以åŠå»ºç«‹ç´¢å¼•的事æƒ?span lang="EN-US"> larbinä¹Ÿä¸æä¾›ã€?span lang="EN-US">
latbin最åˆçš„è®¾è®¡ä¹Ÿæ˜¯ä¾æ®è®¾è®¡½Ž€å•但是高度å¯é…置性的原则åQŒå› æ¤æˆ‘们å¯ä»¥çœ‹åˆŽÍ¼Œä¸€ä¸ªç®€å•çš„larbin的爬虫å¯ä»¥æ¯å¤©èŽ·å–5åQï¼ä¸‡çš„¾|‘页åQŒå®žåœ¨æ˜¯éžå¸¸é«˜æ•ˆã€?span lang="EN-US">
2] Larbin的性能特å¾
高效是我å¯?span lang="EN-US"> larbin 的评仗÷€?span lang="EN-US">
今年四月份的时候我å¯?span lang="EN-US">larbin的性能åšè¿‡ä¸€ä¸ªæµ‹è¯•,luliang.dhs.org是我自己常用的æœåС噍åQ?span lang="EN-US">CPU ä¸??xml:namespace prefix = st1 />
我将我自å·Þqš„¾|‘页 å…ç¿¼ä½œäØ“å…¥å£åQŒè¿è¡?span lang="EN-US">larbin˜q›è¡ŒåQ•层内的url的抓å–ã€?span lang="EN-US">
当时¾Uªå½•的一些数æ®ï¼š
Internet IO: 500-700k/per second åQˆæˆ‘惛_¤§¾U¦æˆ‘的网¾lœä¸‹è½½çš„瓉™¢ˆäº†å§åQ?span lang="EN-US">
CPU top: 5%-15%
disk consume:
url è§£æž: 200万ï¼300万毞®æ—¶
3] larbin 的作�span lang="EN-US">
很多人åˆè§?span lang="EN-US"> larbin ä¸çŸ¥é“从哪里下手åQŒé‚£ä¹ˆæˆ‘æ¥ç®€å•介¾l一ä¸?span lang="EN-US"> larbin 的功能和实际应用ã€?span lang="EN-US">
1. larbin 获å–å•个ã€ç¡®å®šç½‘站的所有蔾l“,甚至å¯ä»¥é•œåƒä¸€ä¸ªç½‘ç«™ã€?span lang="EN-US">
2. larbin建立 url 列表¾Ÿ¤ï¼Œä¾‹å¦‚针对所有的¾|‘页˜q›è¡Œ url retriveåŽï¼Œ˜q›è¡Œxml的蔾l“的获å–。或者是 mp3 ã€?span lang="EN-US">
3. larbin 定制åŽå¯ä»¥ä½œä¸ºæœç´¢å¼•擎的信æ¯çš„æ¥æºï¼ˆä¾‹å¦‚å¯ä»¥ž®†æŠ“å–下æ¥çš„¾|‘页æ¯?span lang="EN-US">2000一¾l„å˜æ”‘Öœ¨ä¸€¾pÕdˆ—的目录结构里é¢ï¼‰ã€?span lang="EN-US">
æ€Õd½’åQ?span lang="EN-US">larbin应当是一个被òq¿å¤§æœçƒ¦å¼•擎爱好者应当引èµäh³¨æ„的一个äñ”å“ï¼Œè™½ç„¶å…¶åŠŸèƒ½é€æ¸è¢?span lang="EN-US"> Nutch 所接å—和替代,但是其在爬虫上的优美设计的确值得¿U°é“ã€?span lang="EN-US">
ã€€ã€€ä¸‹é¢æˆ‘们æ¥çœ‹ä¸€ŒDµä»£ç ,了解一ä¸?span lang="EN-US">cookie½I¶ç«Ÿæ˜¯æ€Žæ ·å»ºç«‹çš„:
  
  <HTML>
  <HEAD>
  <TITLE>Set a cookie based on a form</TITLE>
  <SCRIPT LANGUAGE="java script" TYPE="TEXT/java script">
  <!-- Hide script from older browsers
  
  expireDate = new Date
  expireDate.setMonth(expireDate.getMonth()+6)
  
  userName = ""
  if (documents .cookie != "") {
  userName = documents .cookie.split("=")[1]
  }
  
  function setCookie() {
  userName = document.myform.nameField.value
  documents .cookie = "userName="+userName+";expires=" + expireDate.toGMTString()
  }
  
  // End hiding script -->
  </SCRIPT>
  </HEAD>
  <BODY BGCOLOR="WHITE" onLoad="document.myform.nameField.value = userName">
  <form NAME="myform">
  <H1>Enter your name:<INPUT TYPE="TEXT" NAME="nameField" onBlur="setCookie()"></H1>
  </form>
  </BODY>
  </HTML>
  ˜q™æ˜¯ä¸€é”È®€å•的建立cookie的脚本ã€?span lang="EN-US">
  
  1åQ?span lang="EN-US"><SCRIPT LANGUAGE="java script" TYPE="TEXT/java script">
  
ã€€ã€€è„šæœ¬å¼€å§‹çš„æ ‡è®°åQŒç”±æ¤ä¸€å¥å‘Šè¯‰æµè§ˆå™¨ä»¥ä¸‹ž®†æ˜¯java script.
  
  2,<!-- Hide script from older browsers
  
  ä¸ÞZº†é˜²æ¢‹¹è§ˆå™¨ä¸èƒ½è¯†åˆ«è„šæœ¬ï¼Œè€Œè®©‹¹è§ˆå™¨è¯¯ä»¥äØ“æ˜?span lang="EN-US">HTML注释而忽略它ã€?span lang="EN-US">
  
  3åQ?span lang="EN-US">expireDate = new Date
  
  获å–当剿—¥æœŸåQŒåƈå˜å…¥å˜é‡expireDateä¸ã€?span lang="EN-US">
  
  4åQ?span lang="EN-US">expireDate.setMonth(expireDate.getMonth()+6)
  
  获å–当剿œˆä†¾å€û|¼Œž®†å…¶åŠ?span lang="EN-US">6åŽè®¾¾|®äØ“expireDate的月份æ€Õd€¼éƒ¨åˆ†ã€‚è¿™æ„å‘³ç€æœ?span lang="EN-US">cookie的有效期ä¸?span lang="EN-US">6个月ã€?span lang="EN-US">
  
  5åQ?span lang="EN-US">if (documents .cookie != "")
  
  如果documentçš„å€ég¸ä¸ºç©ºåQŒç›¸å½“于‹‚€æŸ¥ç”¨æˆïL¡¬ç›˜ä¸Šæ˜¯å¦å·²ç»æœ‰äº†cookieã€?span lang="EN-US">
  
  6åQ?span lang="EN-US">userName = documents .cookie.split("=")[1]
  
  æ¤å¤„用到äº?span lang="EN-US">split("=")函数åQŒå®ƒçš„功能是æŠ?span lang="EN-US">cookie记录分割为数¾l„,cookieçš„åä¸?span lang="EN-US">cookie[0],å€égØ“cookie[1],以æ¤ç´¯æŽ¨ã€‚所以æ¤å¤?span lang="EN-US">documents .cookie.split("=")[1]˜q”回的值是æ?span lang="EN-US">cookie的倹{€‚在æ¤å¥ä¸å°†å€ÆDµ‹¾l™äº†å˜é‡usernameã€?span lang="EN-US">
  
  7åQ?span lang="EN-US">function setCookie()
  
  讄¡½®å䨓setCookie的函数ã€?span lang="EN-US">
  
  8åQ?span lang="EN-US">documents .cookie = "userName="+userName+";expires=" + expireDate.toGMTString()
  
  æ¤å¥æ˜¯å°†è®„¡½®å¥½çš„cookie写入用户¼‹¬ç›˜ã€?span lang="EN-US">expireDate.toGMTString()æŠ?span lang="EN-US">expireDateä¸çš„倯D{æ¢äؓ文本å—符ä¸ÔŒ¼Œ˜q™æ ·æ‰èƒ½å†™å…¥cookieä¸ã€?span lang="EN-US">
  
  9åQ?span lang="EN-US">onLoad="document.myform.nameField.value = userName"
  
  当页é¢è²å…¥æ—¶åQŒæŠŠusername的值写入文本框(如果有的è¯?span lang="EN-US">)ã€?span lang="EN-US">
  
  10åQ?span lang="EN-US">onBlur="setCookie()"
  
  当用æˆïL¦»å¼€æ–‡æœ¬æ¡†æ—¶åQ?span lang="EN-US">onBlur调用函数setCookieã€?span lang="EN-US">
  
  ¾l“åˆä¸Šé¢çš„æ³¨é‡Šï¼Œè¯»é‚£ŒDµä»£ç ç›¸ä¿¡ä¸æˆé—®é¢˜å§!既然我们å¯ä»¥å»ºç«‹cookieåQŒé‚£ä¹ˆè¯»å–ä¹Ÿä¸æ˜¯ä»€ä¹ˆéš¾äº‹ï¼Œè¯ähŽ¥ç€å¾€ä¸‹çœ‹!
  二ã€è¯»å–和昄¡¤ºcookie
  
  一般æ¥è¯ß_¼Œcookieçš„ä½œè€…åÆˆä¸å¸Œæœ?span lang="EN-US">cookie被显½Cºå‡ºæ¥ï¼Œ˜q™æ˜¯å½“ç„¶çš?span lang="EN-US">!天知é“里é¢å†™äº†äº›ä»€ä¹?span lang="EN-US">!åQŸç„¶è€Œè¿™ä¹Ÿæ˜¯æˆ‘们惌™¦è¯Õd‡ºå®ƒçš„åŽŸå› !~~~:D
  
  <HTML>
  <HEAD>
  <TITLE>Cookie Check</TITLE>
  </HEAD>
  <BODY BGCOLOR="WHITE">
  <H2>
  <SCRIPT LANGUAGE="java script" TYPE="TEXT/java script">
  <!-- Hide script from older browsers
  
  if (documents .cookie == "") {
  document.write("There are no cookies here")
  }
  else {
  thisCookie = documents .cookie.split("; ")
  
  for (i=0; i<thisCookie.length; i++) {
  document.write("Cookie name is �+thisCookie.split("=")[0])
  document.write("� and the value is �+thisCookie.split("=")[1]+"�lt;BR>")
  }
  }
  
  // End hiding script -->
  </SCRIPT>
  </H2>
  </BODY>
  </HTML>
  
  以上的便是一ŒDµè¯»å?span lang="EN-US">cookieçš„åå—和值的脚本。上文ä¸è§£é‡Š˜q‡çš„è¯å¥åœ¨æ¤ä¸å¤šèµ˜è¿°åQŒä¸”çœ‹æœ‰ä»€ä¹ˆæ–°çš„è¯æ³•:
  
  1åQ?span lang="EN-US">thisCookie = documents .cookie.split("; ")[注æ„åQšåƈéžå‰æ–‡ä¸å‡ºçް˜q‡çš„split("=")ã€?span lang="EN-US">
  
  split("; ")å¯ä»¥äº§ç”Ÿæ•°ç»„的结果,本å¥ä¸ï¼Œç”?span lang="EN-US">documents .cookie.split("; ")æ¥èŽ·å?span lang="EN-US">cookieçš„å€û|¼Œòq¶å°†˜q™ä¸ªæ•°ç»„赋值缎带å˜é‡ï¼šthisCookieã€?span lang="EN-US">
  
  2åQ?span lang="EN-US">for (i=0; i<thisCookie.length; i++)
  
  讄¡½®è®¡ç®—器å˜é‡?span lang="EN-US">içš„å€égØ“0åQŒå¦‚果其值å°äº?span lang="EN-US">thisCookie.length(thisCookieä¸å€¼çš„个数)åQŒå°†içš„å€¼åŠ 1ã€?span lang="EN-US">
  
  3åQ?span lang="EN-US">document.write("Cookie name is â€?+thisCookie.split("=")[0])
  
  æ¤å¥ä¸?span lang="EN-US">thisCookie.split("=")[0]较难ç†è§£åQŒä¸Šé¢çš„脚本ä¸ï¼Œthiscookieå·²ç»è¢«èµ‹å€égؓ一个数¾l„çš„å€û|¼Œé‚£ä¹ˆthisCookie是指数组ä¸ç¬¬i个å€û|¼Œä¹Ÿå°±æ˜¯ç¬¬iä¸?span lang="EN-US">cookieåQŒè€Œç”±ä¸Šæ–‡å¯çŸ¥split("=")[0]是指cookieçš„åå—ã€?span lang="EN-US">
  ˜q™æ ·thisCookie.split("=")[0]便是½W?span lang="EN-US">içš?span lang="EN-US">cookieä¸?span lang="EN-US">cookieçš„åå?span lang="EN-US">!
  
  4,document.write("� and the value is �+thisCookie.split("=")[1]
  
  è·?span lang="EN-US">3æžäØ“ç›æ€¼¼åQŒå³æ˜¯ç¬¬iä¸?span lang="EN-US">cookieä¸?span lang="EN-US"> cookie的倹{€?span lang="EN-US">
  
  到æ¤åQŒæˆ‘们已¾l熟悉了如何建立cookie以åŠå®ƒçš„è¯Õd–ã€‚è¿™äº›ä¹Ÿæ£æ˜¯cookie‹Æºéª—也需è¦çš„ä¸»è¦æŠ€æœ?/span>!
  三ã€?span lang="EN-US">cookie‹Æºéª—的实çŽ?
  
  è¦åšåˆ?span lang="EN-US">cookie‹Æºéª—åQŒæœ€é‡è¦çš„æ˜¯ç†è§£ç›®æ ‡cookieä¸çš„储值情况,òq¶è®¾æ³•改å˜å®ƒã€‚由上é¢çš„å¦ä¹ 我们知é“,åŸÞZºŽcookieçš„æ ¼å¼æ‰€é™ï¼Œä¸€èˆ¬æ¥è¯ß_¼Œåªæœ‰åœ?span lang="EN-US">Cookie.split("=")[0]å’?span lang="EN-US">Cookie.split("=")[1]ä¸çš„å€¼å¯¹æˆ‘ä»¬æ‰æ˜¯æœ‰ç”¨çš„。也ž®±æ˜¯è¯´åªéœ€æ”¹å˜˜q™ä¸¤å¤„或是处的值å³å¯è¾¾åˆ°æˆ‘们的目的ã€?span lang="EN-US">
  而在实际æ“作ä¸ï¼Œ˜q˜å¾—先解军_¦ä¸€ä¸ªé—®é¢˜ã€‚由于嗋¹è§ˆå™¨çš„内部cookie机制所é™ï¼Œæ¯ä¸ªcookieåªèƒ½è¢«å®ƒçš„原æœåŠ¡å™¨æ‰€è®‰K—®!坿ˆ‘们æ€ÖM¸èƒ½è·‘åˆîChå®?span lang="EN-US">æœåŠ¡å™¨ä¸Šæ“作å?span lang="EN-US">!˜q™é‡Œž®±éœ€è¦ä¸€ä¸ªå°æŠ€å·§äº†ã€?span lang="EN-US">
ã€€ã€€åœ¨ä¸Šé¢æˆ‘们æåˆ°è¿‡cookieçš„æ ¼å¼ï¼Œæœ€åŽä¸¤™å¹ä¸åˆ†åˆ«æ˜¯å®ƒçš?span lang="EN-US">url路径å’?span lang="EN-US">域å。ä¸éš¾æƒ³åˆŽÍ¼ŒæœåС噍坹cookie的识别é 的就是这ä¸?span lang="EN-US">!
  而在òqÏx—¶åQŒæˆ‘们見¹è§ˆä¸€ä¸ªç½‘站时åQŒè¾“入的url便是它的域ååQŒéœ€è¦ç»˜q?span lang="EN-US">域彎¡ç†¾pÈ»Ÿdnsž®†å…¶è½¬åŒ–ä¸?span lang="EN-US">IP地å€åŽè¿›è¡Œè¿žæŽ¥çš„。这其丞®±æœ‰ä¸€ä¸ªç©ºå½“。如果能åœ?span lang="EN-US">dnsä¸Šåšæ‰‹è„šåQŒæŠŠç›®æ ‡åŸŸåçš?span lang="EN-US">IP地å€å¯¹åº”到其它站点上åQŒæˆ‘们便å¯ä»¥éžæ³•讉K—®ç›®æ ‡ç«™ç‚¹çš?span lang="EN-US">cookieäº?span lang="EN-US">!
  åšåˆ°˜q™ä¸€ç‚¹åƈä¸éš¾åQŒå½“然我ä¸åÆˆä¸æ˜¯è¦åŽ»æ“纵dnsåQŒè€Œä¸”那也是ä¸å¯èƒ½çš„事情。在win9下的安装目录下,有一 å䨓hosts.sam的文ä»Óž¼Œä»¥æ–‡æœ¬æ–¹å¼æ‰“å¼€åŽä¼šçœ‹åˆ°˜q™æ ·çš„æ ¼å¼ï¼š
  127.0.0.1 lockhost #注释
  利用它,我们便å¯ä»¥å®žçŽ?span lang="EN-US">域åè§£æžçš„æœ¬åœ°åŒ–!而且其优先æƒé«˜äºŽ¾|‘络ä¸çš„dns!
  具体使用æ—Óž¼Œåªéœ€ž®?span lang="EN-US">IPå’?span lang="EN-US">域åä¾ä¸Šé¢çš„æ ¼å¼æ·ÕdŠ åQŒåƈå¦å˜ä¸?span lang="EN-US">hostså›_¯!(注æ„åQ𿤿–‡äšgæ— åŽèµ˜ååQŒåƈé?span lang="EN-US">hosts.sam æ–‡äšg本èín!)
  
  到æ¤åQ?span lang="EN-US">cookie‹Æºéª—所需的所以知识已¾lé½å¤‡ã€‚下é¢ä»¥ä¸€ä¸?span lang="EN-US">â€?/span>å?span lang="EN-US">â€?/span>的例å,演示一下如何进入实æˆ?span lang="EN-US">.(ä¸ä¾¿¾l™å‡ºçœŸå®žåœ°å€åQŒä»¥å…引èµïLН¾|?span lang="EN-US">!~~~:P)
  å‡è®¾ç›®æ ‡ç«™ç‚¹æ˜?www.xxx.com
  www.self.com是自å·Þqš„站点ã€?span lang="EN-US">(å¯ä»¥ç”¨æ¥å˜æ”¾‹Æºéª—ç›®æ ‡æ‰€éœ€çš„æ–‡ä»Óž¼Œç”¨æ¥è¯Õd–和修改对方的cookie.)
  首先pingå‡?span lang="EN-US">www.self.comçš?span lang="EN-US">IP地å€åQ?span lang="EN-US">
  ping www.self.com
  
  Reply from
  
  然åŽä¿®æ”¹hosts.samæ–‡äšg如下åQ?span lang="EN-US">
  
  òq¶ä¿å˜äØ“hostsã€?span lang="EN-US">
  
  ž®†ç”¨æ¥è¯»å?span lang="EN-US">cookie的页é¢ä¼ è‡?span lang="EN-US">www.self.com(脚本如二所½C?span lang="EN-US">)ã€?span lang="EN-US">
ã€€ã€€æ¤æ—¶˜qžä¸Šwww.xxx.com。由于我们已¾l对hosts动过手脚åQŒè¿™æ—¶æ¥åˆ°çš„òq¶ä¸æ˜?span lang="EN-US">www.xxx.comåQŒè€Œæ˜¯www.self.com
  www.xxx.com讑֜¨æœ¬åœ°çš?span lang="EN-US">cookie便å¯è¢«è¯»å‡?span lang="EN-US">!~~:D
ã€€ã€€ç„¶åŽæ ÒŽ®å…·ä½“æƒ…å†µä¿®æ”¹ä¸€çš„è„šæœ¬ï¼Œç”¨åŒæ ïLš„æ–ÒŽ³•åQŒå‘æ?span lang="EN-US">cookieä¸å†™å…?span lang="EN-US">æ•°æ®ã€‚修改完毕åŽåQŒåˆ æŽ?span lang="EN-US">hostsæ–‡äšgåQŒå†é‡æ–°˜q›å…¥www.xxx.comåQŒæ¤æ—¶å·²¾l大功告æˆï¼Œå¯äínå—ä½ çš?span lang="EN-US">hackæˆæžœäº?span lang="EN-US">!~~~:)
  
  ¾~–åŽ
  cookie‹Æºéª—是一¿Uå‘现较早,且较难ä‹É用的hack手法åQŒé™¤äº?span lang="EN-US">java script å¯ä»¥æŽ§åˆ¶ä»¥å¤–åQ?span lang="EN-US">asp½{‰ä¹Ÿå¯ä»¥ç”¨æ¥å¯¹å…¶˜q›è¿›è®„¡½®ã€‚所以在æ¤å£°æ˜Žï¼Œæœªå¿…能对所有站ç‚ÒŽœ‰è¾ƒã€‚但技æœ?/span>真实åQŒæ— ™åȽ®ç–?span lang="EN-US">!
  
  补充åQšåœ¨win2000ä¸?span lang="EN-US">hostsæ–‡äšgçš„å¾ç«‹ä¸Žwin98ä¸åŒåQŒéœ€è¦?span lang="EN-US">c:\winnt\system32\drivers\etcæ–‡äšg夹ä¸åˆ›å¾!
iedevtoolbar下è²åœ°å€å¦‚下:
本地åQˆè¾ƒè€ç‰ˆæœ¬ï¼‰åQ?span lang="EN-US">http://files.cnblogs.com/JustinYoung/iedevtoolbar.rar
官方åQˆæœ€æ–°ç‰ˆæœ¬ï¼‰åQ?span lang="EN-US">http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&DisplayLang=en
½W¬äºŒä¸ªæ˜¯httpwatchpro,˜q™ä¸ªå·¥å…·ä¸»è¦åŠŸèƒ½æ˜¯ç›‘è§?span lang="EN-US">http的数æ?span lang="EN-US">,ä½†æ˜¯å®ƒä¹Ÿèƒ½è®©ä½ çœ‹åˆ°ç›¸å…³ç½‘™å‰|ˆ–è€…æ ·å¼è¡¨æ–‡äšg的内å®?span lang="EN-US">.
httpwatchpro下è²ä¸‹è²åœ°å€å¦‚下:
大å°é™åˆ¶åQŒåˆ†å·åŽ‹¾~©ã€?span lang="EN-US">
http://files.cnblogs.com/JustinYoung/httpwatchpro-v4.1.part1.rar
http://files.cnblogs.com/JustinYoung/httpwatchpro-v4.1.part2.rar
˜q™ä¸¤ä¸ªèÊY仉™ƒ½å¾ˆç®€å?span lang="EN-US">,åªæœ‰½Ž€å•çš„å‡ ä¸ªè‹±æ–‡å•è¯,所以也没有必è¦ç”¨æ±‰åŒ–版.估计也没有ähä¼šåŽ»åšæ±‰åŒ–版.但是真是˜q™äº›½Ž€å•å°å·§çš„软äšg让我们的工作效率有了很大的æé«?span lang="EN-US">.工欲善其äº?span lang="EN-US">,必先善其å™?span lang="EN-US">.
KeyWordåQ?span lang="EN-US">webå¼€å‘å·¥å…?span lang="EN-US">,webå¼€å‘å°è½¯äšg,¾|‘页开å‘å·¥å…?span lang="EN-US">,¾|‘页开å‘å°è½¯äšg,iedevtoolbar下è²,iedevtoolbar教程,iedevtoolbar使用,iedevtoolbar帮助,httpwatch下è²,httpwatch教程,httpwatch帮助,httpwatch使用,httpwatchpro下è²,httpwatchpro教程,httpwatchpro帮助
¾|‘站最é‡è¦çš„东西是什么?
—â€?/span>内容åQ?span lang="EN-US">SEOåQˆæœç´¢å¼•擎优化)åQ?span lang="EN-US">UEåQˆç”¨æˆ·ä½“验)åQŸéƒ½ä¸å¯¹åQ是速度åQ?span lang="EN-US">
内容å†ä¸°å¯Œçš„¾|‘ç«™åQŒå¦‚æžœæ…¢åˆ°æ— æ³•è®¿é—®ä¹Ÿæ˜¯æ¯«æ— æ„义的åQ?SEOåšçš„å†å¥½çš„网站,如果æœçƒ¦èœ˜è››æŠ“ä¸åˆîC¹Ÿæ˜¯ç™½æ?span lang="EN-US">(™åµé¢æ•ˆçŽ‡å’Œæœç´¢èœ˜è››ä¹‹é—´çš„关系åQŒéœ€è¦è¿›ä¸€æ¥çš„¼‹®è®¤åQŒæ¤ä¸ºå’Œä¸Šç¯‡ä¿æŒ¾lŸä¸€)åQ?span lang="EN-US"> UE设计的å†äººæ€§åŒ–的网站,如果用户˜qžçœ‹éƒ½çœ‹ä¸åˆ°ä¹Ÿæ˜¯½Iø™°ˆã€?
所以网™å늚„效率¾l对是最值得å…Ïx³¨çš„æ–¹é¢ã€‚虽然我们在 《如何æé«˜ç½‘™å늚„效率åQˆä¸Š½‹‡ï¼‰â€”â€?/span>æé«˜¾|‘页效率çš?4æ¡å‡†åˆ™ã€?/span>æåˆ°äº†å¦‚何æé«˜ç½‘™å‰|•ˆçŽ‡çš„14æ¡å‡†åˆ™ï¼Œä½†æ˜¯å¦‚ä½•çŸ¥é“æˆ‘们现在的网™å늚„效率到底如何åQŸåˆ°åº•å¤„äºŽæ€Žæ ·ä¸€ä¸ªçñ”åˆ«ï¼Ÿåˆæœ‰å“ªäº›æ–šw¢åšçš„ä¸å¤Ÿå¥½ï¼Œéœ€è¦æ”¹˜q›å‘¢åQŸä¹Ÿè®¸ï¼Œä½ 会è¯ß_¼Œé—®ä¸€ä¸‹ç”¨æˆ·ä¸ž®ÞqŸ¥é“了å—ï¼Ÿä½†æ˜¯ç›¸æ¯”æ„Ÿæ€§æ¯”ä¾‹å æ®å¤ªå¤§çš„用户感å—而言åQŒç†æ€§çš„å·¥å…·å’Œæ•°æ®æ›´å…ähœ‰è¯´æœåŠ›ã€‚æœ¬½‹‡å°±ž®†å‘ä½ ä»‹¾l一‹Æ¾è¯„‹¹‹ç½‘™å‰|•ˆçŽ‡çš„å·¥å…·â€”â€”YSlowåQ?span lang="EN-US">why slowåQŒè¿™ä¸ªåå—è“v的太好了åQ‰ã€?span lang="EN-US">
YSlow是由Yahooå¼€å‘者团é˜?/span>å‘布的一‹Æ‘ÖŸºäº?span lang="EN-US">Firebugçš„æ’件。è€?span lang="EN-US">Firebug åˆæ˜¯ä¸€‹Æ‘ÖŸºäº?span lang="EN-US">FireFoxçš„æ’件。所以说YSlow是一‹Æ‘ÖŸºäº?span lang="EN-US">FireFoxæ’äšgçš„æ’件。虽然有点绕åQŒä½†æ˜¯æœ€¾lˆè¯´æ˜Žçš„问题是:
· å¾ˆé—æ†¾ï¼Œå¾®èÊYçš?span lang="EN-US">IE¾pÕdˆ—‹¹è§ˆå™¨ä¸èƒ½ä‹Éç”?span lang="EN-US">YSlowã€?
· YSlowåªèƒ½ä½¿ç”¨åœ?span lang="EN-US">FireFox‹¹è§ˆå™¨ä¸Šã€?
· å¦‚æžœè¦æƒ³ä½¿ç”¨YSlowåQŒé‚£ä¹ˆä½ 必须先安è£?span lang="EN-US">FireFoxã€?
· å¦‚æžœè¦æƒ³ä½¿ç”¨YSlowåQŒé‚£ä¹ˆä½ ž®Þp¦å®‰è£…FireFox上的Firebugæ’äšgã€?
˜q™çœ‹ä¸ŠåŽ»å¥½åƒæœ‰ç‚¹ä»¤ähæ²®ä“áåQŒä½†æ˜¯äº‹å®žä¸Šå®ƒåƈä¸åƒæƒŒ™±¡ä¸çš„那么éºÈƒ¦åQŒåªè¦æŒ‰ç…§ä¸‹é¢çš„æ¥éª¤ä½ å°†èƒ½å¾ˆå¿«çš„ä½¿ç”¨YSlowåQ?span lang="EN-US">
1. åˆ?span lang="EN-US">http://www.mozilla.net.cn/firefox/ ä¸‹è²æœ€æ–°ç‰ˆçš?span lang="EN-US">FireFoxåQŒåÆˆå®‰è£…å®ƒã€‚å½“ç„¶å¦‚æžœä½ å·²ç»å®‰è£…äº?span lang="EN-US">FireFoxå¯ä»¥è·Œ™¿‡æ¤æ¥ã€?
2. åˆ?span lang="EN-US">https://addons.mozilla.org/en-US/firefox/addon/1843/ ä¸‹è²æœ€æ–°ç‰ˆçš?span lang="EN-US">FirebugåQŒåÆˆå®‰è£…å®ƒã€‚å½“ç„¶å¦‚æžœä½ å·²ç»å®‰è£…äº?span lang="EN-US">Firebugå¯ä»¥è·Œ™¿‡æ¤æ¥ã€?
3. åˆ?span lang="EN-US">https://addons.mozilla.org/en-US/firefox/addon/5369/ ä¸‹è²æœ€æ–°ç‰ˆçš?span lang="EN-US">YSlowåQŒåÆˆå®‰è£…å®ƒã€‚å½“ç„¶å¦‚æžœä½ å·²ç»å®‰è£…äº?span lang="EN-US">YSlowå¯ä»¥è·Œ™¿‡æ¤æ¥ã€?
å›?span lang="EN-US">2åQšåœ¨èœå•ä¸å…ˆæ‰“å¼€Firebugæ’äšg
˜q™æ—¶å€™æ‰“å¼€FireFoxåQŒä½ ž®†åœ¨ã€å·¥å…—÷€‘èœå•ä¸çœ‹åˆ°ã€?span lang="EN-US">firebug】(如图2åQ‰ã€‚打开firebugåQŒç„¶åŽåœ¨firebugä¸ç‚¹å‡?span lang="EN-US">YSlowèœå•åQŒä¾¿çœ‹è¿›å…?span lang="EN-US">YSlow的主界é¢åQˆå¦‚å›?span lang="EN-US">3åQ‰ã€?span lang="EN-US">
å›?span lang="EN-US">3åQšåœ¨èœå•ä¸å…ˆæ‰“å¼€Firebugæ’äšg(点击ž®å›¾æŸ¥çœ‹å®Œæ•´å¤§å›¾)
YSlowä¾¿å¼€å§‹åˆ†æžæ¤™å늚„效率åQŒåƈä»?span lang="EN-US">13个最影哾|‘页效率的方é¢ç»™å‡ø™¯„伎ͼˆå¦‚图4åQ‰ã€?span lang="EN-US">
å›?span lang="EN-US">4åQ?span lang="EN-US">YSlow¾l™å‡ºçš„æœ¬™åµé¢æ•ˆçŽ‡è¯„ä¼°
å¯ä»¥çœ‹å‡ºæ¥ï¼ŒYSlowè¯„ä¼°çš„ä¾æ®å°±æ˜¯æˆ‘们在 《如何æé«˜ç½‘™å늚„效率åQˆä¸Š½‹‡ï¼‰â€”â€?/span>æé«˜¾|‘页效率çš?4æ¡å‡†åˆ™ã€?/span>ä¸æåˆ°çš„å‰é¢13æ¡ã€‚å‰é¢è“è‰²çš„å—æ¯è¡¨ç¤º˜q™ä¸€æ¡å‡†åˆ™çš„得分ã€?span lang="EN-US">A最高。点å‡Õd³é¢çš„三角形å¯ä»¥å¾—到更多的信æ¯å’Œå¾è®®ï¼Œæœ‰äº›ä¿¡æ¯é‡Œé¢˜q˜æœ‰â€?/span>攑֤§é•?span lang="EN-US">â€?å›¾æ ‡åQŒç‚¹å‡ÖM¹Ÿž®†å±•½Cºæ›´ä¸ø™¯¦¾l†çš„ä¿¡æ¯å’Œå¾è®®ã€‚(如图5所½Cºï¼‰
å›?span lang="EN-US">5åQ?span lang="EN-US">YSlowå¯ä»¥¾l™å‡ºæ¯æ¡å‡†åˆ™çš„详¾l†è¯„ä¼îC¿¡æ¯å’Œå»ø™®®
˜q™ä¸ªè§†å›¾ä¼šå‘Šè¯‰ä½ ™åµé¢çš„æ€ÖM½“¾lŸè®¡ä¿¡æ¯ã€‚包括页é¢å¤§ž®ã€?span lang="EN-US">cssæ ·å¼è¡¨å¤§ž®ã€è„šæœ¬æ–‡ä»¶å¤§ž®ã€æ€ÖM½“囄¡‰‡å¤§å°ã€?span lang="EN-US">flashæ–‡äšg大å°å’?span lang="EN-US">cssä¸ç”¨åˆ°çš„囄¡‰‡æ–‡äšg大å°ã€‚è¿˜ä¼šå‘Šè¯‰ä½ åQŒå“ªäº›ä¸œè¥¿è¢«¾~“å˜äº†ï¼Œ¾~“å˜äº†å¤šž®‘牽{‰ã€?span lang="EN-US">
å›?span lang="EN-US">6åQšã€?span lang="EN-US">Stats】视图信æ?span lang="EN-US">
˜q™ä¸ªè§†å›¾æ˜¯ä¸€ä¸ªé¡µé¢æ‰€æœ‰éƒ¨ä»¶çš„ä¿¡æ¯åˆ—è¡¨ã€‚ä»Žä¸æˆ‘们å¯ä»¥å¾—知æ¯ä¸ªéƒ¨ä»¶çš„å„ç§è¯¦ç»†ä¿¡æ¯ã€‚如åQšç±»åž‹ã€?span lang="EN-US">URLã€?span lang="EN-US">Expiresæ•°æ®ã€çжæ€ã€å¤§ž®ã€è¯»å–æ—¶é—´ã€?span lang="EN-US">ETag信毽{‰ç‰ã€‚通过对这个列表的分æžåQŒæˆ‘们就å¯ä»¥çŸ¥é“到底是什么东西最耗费我们的资æºï¼Œä»Žè€Œæœ‰é’ˆå¯¹æ€§çš„˜q›è¡Œä¼˜åŒ–ã€?span lang="EN-US">
å›?span lang="EN-US">7åQšã€?span lang="EN-US">Components】视图信æ¯ï¼Œç‚¹å‡»â€?/span>攑֤§é•?span lang="EN-US">â€?/span>å›¾æ ‡æˆ‘ä»¬å¯ä»¥çŸ¥é“更详¾l†çš„ä¿¡æ¯åQˆç‚¹å‡Õd°å›¾æŸ¥çœ‹å®Œæ•´å¤§å›¾ï¼‰
ã€?span lang="EN-US">Tools】èœå•包å?span lang="EN-US">4个åèœå•åQŒå°±æ˜?span lang="EN-US">4个实用工兗÷€‚ã€?span lang="EN-US">JSLine】工具会生æˆJSLine报表åQŒæŠ¥è¡¨æ˜¯å¯ÒŽœ¬¾|‘页ä¸?span lang="EN-US">JSè„šæœ¬çš„åˆ†æžæŠ¥å‘Šï¼ŒåŒ…å«é”™è¯¯å’Œå¾è®®ã€‚ã€?span lang="EN-US">ALL JSã€‘å·¥å…øP¼Œž®†ç”Ÿæˆæœ¬™åµé¢æ‰€æœ‰è„šæœ¬ä»£ç 便于阅è¯Õd’Œæ‰“å°çš„æŠ¥è¡¨é¡µé¢ã€‚ã€?span lang="EN-US">ALL CSSã€‘å·¥å…øP¼Œž®†ç”Ÿæˆæœ¬™åµé¢æ‰€æœ?span lang="EN-US">CSSæ ·å¼è¡¨ä»£ç 便于阅è¯Õd’Œæ‰“å°çš„æŠ¥è¡¨é¡µé¢ã€‚ã€?span lang="EN-US">Printable View】将ã€?span lang="EN-US">Performance】和ã€?span lang="EN-US">Stats】视图ä¸çš„ä¿¡æ¯ç”Ÿæˆä¸€ä»½æ›´é€‚åˆé˜…读和打å°çš„æŠ¥è¡¨™åµé¢ã€?span lang="EN-US">
å›?span lang="EN-US">8åQšã€?span lang="EN-US">Tools】èœå•,包å«äº?span lang="EN-US">4个åèœå•
ã€?span lang="EN-US">Helpã€‘ä¸»è¦æ˜¯äº›å¸¸ç”¨çš„帮助途径的入å£ã€‚从˜q™é‡Œä½ å¯ä»¥å¾ˆæ–šw¢çš„访é—?span lang="EN-US">YSlow的官方网¾lœå’Œåšå®¢ã€‚å¦‚æžœä½ ˜q˜å¯¹YSlowçš„ä‹É用有什么疑惑的è¯ï¼Œé‚£ä¹ˆåœ¨è¿™é‡Œä½ ž®†èŽ·å¾—æ»¡æ„的解ç”ã€?span lang="EN-US">
å›?span lang="EN-US">8åQšã€?span lang="EN-US">Help】èœå•是些常用的帮助入å£