锘??xml version="1.0" encoding="utf-8" standalone="yes"?>精品日韩免费,日韩极品一区,欧美日韩高清在线观看http://www.aygfsteel.com/freeman1984/category/43783.htmlSTANDING ON THE SHOULDERS OF GIANTS zh-cnMon, 05 Jun 2017 07:53:49 GMTMon, 05 Jun 2017 07:53:49 GMT60oracle 绱㈠紩瀛楁鍖呭惈date綾誨瀷錛屼嬌鐢╯pring jdbc鏇存柊鏃朵笉璧扮儲(chǔ)寮曪紝鑰屾槸璧皌able access full鐨勯棶棰?/title><link>http://www.aygfsteel.com/freeman1984/archive/2015/11/15/428197.html</link><dc:creator>鐤媯</dc:creator><author>鐤媯</author><pubDate>Sat, 14 Nov 2015 16:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2015/11/15/428197.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/428197.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2015/11/15/428197.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/428197.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/428197.html</trackback:ping><description><![CDATA[     鎽樿: oracle 绱㈠紩瀛楁鍖呭惈date綾誨瀷錛屼嬌鐢╯pring jdbc鏇存柊鏃朵笉璧扮儲(chǔ)寮曪紝鑰屾槸璧皌able access full鐨勯棶棰?nbsp; <a href='http://www.aygfsteel.com/freeman1984/archive/2015/11/15/428197.html'>闃呰鍏ㄦ枃</a><img src ="http://www.aygfsteel.com/freeman1984/aggbug/428197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">鐤媯</a> 2015-11-15 00:04 <a href="http://www.aygfsteel.com/freeman1984/archive/2015/11/15/428197.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>A/B嫻嬭瘯(杞澆)http://www.aygfsteel.com/freeman1984/archive/2012/08/28/386419.html鐤媯鐤媯Tue, 28 Aug 2012 03:41:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2012/08/28/386419.htmlhttp://www.aygfsteel.com/freeman1984/comments/386419.htmlhttp://www.aygfsteel.com/freeman1984/archive/2012/08/28/386419.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/386419.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/386419.htmlA / B嫻嬭瘯涓嶆槸涓€涓椂楂﹀悕璇嶃€傜幇鍦ㄥ緢澶氭湁緇忛獙鐨勮惀閿€鍜岃璁″伐浣滆€呯敤瀹冩潵鑾峰緱璁垮琛屼負(fù)淇℃伅錛屾潵鎻愰珮杞崲鐜囥€傜劧鑰岋紝 A / B嫻嬭瘯涓嶴EO涓嶅悓鐨勬槸錛屼漢浠兘涓嶅お鐭ラ亾寰掓渤榪涜緗戠珯鍒嗘瀽鍜屽彲鐢ㄦ€у垎鏋愩€備粬浠茍涓嶅畬鍏ㄦ槑鐧藉畠鏄粈涔堟垨濡備綍鏇存湁鏁堢殑浣跨敤瀹冦€傛湰鏂囧皢涓轟綘鎻愪緵鏈夊彶浠ユ潵鏈€濂界殑A / B嫻嬭瘯鏁欑▼銆?/p>

浠€涔堟槸A/B嫻嬭瘯?

A / B嫻嬭瘯鐨勬牳蹇?jī)灏辨槸锛?xì)紜畾涓や釜鍏冪礌鎴栫増鏈紙A鍜孊錛夊摢涓増鏈洿濂斤紝浣犻渶瑕佸悓鏃跺疄楠屼袱涓増鏈€傛渶鍚庯紝閫夋嫨鏈€濂界殑鐗堟湰浣跨敤銆?/p>

緗戠粶涓婄殑A / B嫻嬭瘯錛屽嵆浣犺璁$殑欏甸潰鏈変袱涓増鏈紙A鍜孊錛夛紝A涓虹幇琛岀殑璁捐錛堢О涓烘帶鍒訛級(jí) 錛?B鏄柊鐨勮璁°€傛瘮杈冭繖涓や釜鐗堟湰涔嬮棿浣犳墍鍏沖績(jī)鐨勬暟鎹紙杞寲鐜囷紝涓氱嘩錛岃煩鍑虹巼絳夛級(jí) 銆傛渶鍚庯紝鎮(zhèn)ㄩ€夋嫨鏁堟灉鏈€濂界殑鐗堟湰銆?/p>

嫻嬭瘯鍝簺涓滆タ?

浣犺閫夋嫨浠€涔堝幓嫻嬭瘯鍙栧喅浜庝綘鐨勭洰鏍囥€備緥濡傦紝濡傛灉浣犵殑鐩爣鏄鍔犻【瀹㈡暟閲忥紝閭d箞鎮(zhèn)ㄥ彲鑳芥祴璇曚笅鍒楀唴瀹癸細(xì)娉ㄥ唽琛ㄥ崟鏁伴噺錛屽瓧孌電被鍨嬭姹傦紝闅愮鏀跨瓥絳夈€傚湪榪欑鎯呭喌涓婣 / B嫻嬭瘯鐨勭洰鏍囨槸瑕佸紕娓呮浠€涔堥樆姝簡(jiǎn)娓稿娉ㄥ唽銆傞渶瑕佸~鍐欑殑琛ㄥ崟鐨勬暟閲忥紵鐢ㄦ埛鐨勯殣縐侊紵榪樻槸璇ョ綉绔欏仛浜?jiǎn)璁╂父瀹笉淇′蝗潥勪簨鎯呭Q熸墍鏈夎繖浜涢棶棰橀兘鍙互閫氳繃涓€涓釜A/B 嫻嬭瘯鑾峰緱絳旀銆?/p>

姣忎竴涓狝 / B嫻嬭瘯鍐呭閮芥槸鐙竴鏃犱簩鐨勶紝鍗曢€氬父嫻嬭瘯涓€涓嬭繖浜涘唴瀹癸細(xì)

  • 琛屽姩鎸夐挳鐨勬帾杈烇紝澶у皬錛岄鑹插拰浣嶇疆錛?/li>
  • 鏍囬鎴栦駭鍝佽鏄庯紝
  • 琛ㄥ崟鐨勬暟閲忓拰瀛楁綾誨瀷錛?/li>
  • 緗戠珯鐨勫竷灞€鍜岄鏍鹼紝
  • 浜у搧瀹氫環(huán)鍜屼績(jī)閿€媧誨姩錛?/li>
  • 鐫€闄嗗拰浜у搧欏甸潰涓婄殑鍥劇墖錛?/li>
  • 欏甸潰涓婃枃瀛楃殑闀垮害錛堝皯Vs澶氾級(jí)銆?/li>

涓€鏃︿綘鍐沖畾瑕佹祴璇曚粈涔堬紝涓嬩竴姝ュ綋鐒舵槸瑕侀€夋嫨涓€涓悎閫傜殑嫻嬭瘯宸ュ叿銆傚鏋滀綘鎯寵涓€涓熀紜€鐨勫厤璐瑰伐鍏鳳紝鍙互浣跨敤Google Website Optimizer銆傚鏋滀綘鎯寵鍔熻兘鏇村姞寮哄ぇ鐨勫伐鍏鳳紝鍙互浣跨敤Visual Website Optimizer  銆傚叾浠栫殑涓€浜涢€夋嫨閮芥槸鍙互鐨勶紝寤虹珛璇曢獙鍦ㄦ墍鏈夊伐鍏蜂腑閮藉緢鐩鎬技錛屾墍浠ユ垜浠彧闇€璁ㄨ涓€縐嶅嵆鍙€?/p>

浣犲彲浠ラ€氳繃涓ょ鏂規(guī)硶寤虹珛A / B嫻嬭瘯錛?/p>

  • 鍦ㄩ〉闈㈡祴璇曞姞杞藉墠鏇挎崲鍏冪礌
    濡傛灉浣犳祴璇曠殑鏄〉闈笂鐨勫崟涓厓绱狅紝濡傛敞鍐屾寜閽紝鐒跺悗闇€瑕佸湪嫻嬭瘯宸ュ叿涓緗寜閽€傚綋嫻嬭瘯鏃訛紝鍦ˋ / B宸ュ叿灝嗗湪欏甸潰緇欑敤鎴峰墠闅忔満鏇挎崲鎸夐挳銆?/li>
  • 閲嶅畾鍚戝埌鍙︿竴欏甸潰
    濡傛灉浣犳兂閫氳繃A / B嫻嬭瘯鏁翠釜欏甸潰錛屾瘮濡傝錛屼竴涓豢鑹茬殑涓婚鍜屼竴涓孩鑹蹭富棰橈紝閭d箞浣犲氨闇€瑕佸垱寤哄拰涓婁紶鏂扮殑欏甸潰銆備緥濡傦紝濡傛灉鎮(zhèn)ㄧ殑涓婚〉鏄?http://www.example.com/index.html錛岄偅涔堜綘闇€瑕佸垱寤哄彟澶栦竴涓〉闈?http://www.example.com/index1.html銆傚綋嫻嬭瘯榪愯鏃訛紝鎮(zhèn)ㄧ殑嫻嬭瘯宸ュ叿灝嗕竴閮ㄥ垎璁塊棶鑰呴噸瀹氬悜鍒扮浜屼釜緗戝潃銆?/li>

涓€鏃︽?zhèn)ㄤ娇鐢ㄤ簡(jiǎn)涓婇潰鐨勪袱绉嶅彉鎹㈡栆?guī)硶錛屼笅涓€姝ユ槸寤虹珛鎮(zhèn)ㄧ殑杞崲鐩爣銆傞€氬父錛屼綘浼?xì)寰楀堫C竴涓狫avaScript浠g爜錛屾?zhèn)ㄥ彲浠ュ鍒厄q剁矘璐村埌涓€涓渶瑕佹父瀹㈠埌杈劇殑鐩爣緗戦〉銆備緥濡傦紝濡傛灉鎮(zhèn)ㄦ湁涓€涓數(shù)瀛愬晢鍔$綉绔欙紝浣犳鍦ㄦ祴璇曠殑“绔嬪嵆璐拱“鎸夐挳鐨勯鑹詫紝鐒跺悗鎮(zhèn)ㄧ殑杞崲鐩爣灝嗘槸璐拱鎴愬姛鍚庣殑“璋㈣阿鎮(zhèn)?#8220;欏甸潰銆?/p>

鍦ㄨ漿鎹簨浠跺彂鐢熺殑鍚屾椂錛屽湪A / B嫻嬭瘯宸ュ叿錛岃褰曚簡(jiǎn)鍝欏甸潰鏄劇ず緇欎簡(jiǎn)璁塊棶鑰呫€傜粡榪囪凍澶熸暟閲忕殑娓稿錛屾?zhèn)ㄥ彲浠ゼ嫯瀹氬摢涓獧宓闈㈠甫鏉ヤ簡(jiǎn)鏈€澶氱殑杞寲錛佸緩绔嬪拰榪愯鐨凙 / B嫻嬭瘯錛屽叾瀹炲緢綆€鍗曘€?/p>

璇ュ仛浠€涔堝拰涓嶈鍋氫粈涔?/strong>

铏界劧A / B嫻嬭瘯鏄秴綰х畝鍗曠殑姒傚康錛屼絾鏄璁頒綇錛屼互涓嬭繖浜涢兘鍙槸鎴戣嚜宸辯殑緇忛獙銆?/p>

娉ㄦ剰浜嬮」

闇€瑕佸仛鐨?/strong>

  • 鐭ラ亾榪愯嫻嬭瘯澶氫箙銆傜粨鏉熷お鏃╋紝鍙兘浼?xì)鋴射綘鑺变簡(jiǎn)鏃堕棿浣嗘槸娌℃湁寰楀埌鏈夋剰涔夌殑缁撴灉銆傜粨鏉熷お鏅氫篃涓嶅ソ錛屽洜涓烘晥鏋滀笉浣崇殑欏甸潰鍙兘褰卞搷浣犵殑杞寲鍜屼笟緇┿€備嬌鐢ㄤ竴涓?a href="http://visualwebsiteoptimizer.com/ab-split-test-duration/">璁$畻鍣?/a>錛屾潵紜畾嫻嬭瘯澶氫箙浠ュ悗鏉ョ粨鏉熷畠銆?/li>
  • 灝嗙浉鍚岀殑欏甸潰鍛堢尞緇欏悓涓€涓瀹€€傛?zhèn)ㄧ殑宸ュ叿搴旇鏈変竴涓蹇嗚闂€呭凡緇忕湅鍒扮殑欏甸潰鐨勫姛鑳姐€傝繖鏍峰彲浠ラ槻姝㈠悜鍚屼竴鐢ㄦ埛鏄劇ず涓€涓嶅悓鐨勪環(huán)鏍兼垨涓嶅悓鐨勪績(jī)閿€浼樻儬銆?/li>
  • 璁╂?zhèn)ㄧ殑A / B嫻嬭瘯鍦ㄦ暣涓綉绔欎繚鎸佷竴鑷淬€傚鏋滀綘姝e湪嫻嬭瘯鐨勭櫥褰曟寜閽湪澶氫釜鍦扮偣鍑虹幇錛岀劧鍚庝竴涓闂€呭簲鍦ㄦ墍鏈夌殑鍦版柟鐪嬪埌鍚屾牱鐨勫彉鍖栥€傚湪欏甸潰1鏄劇ず涓€涓牱瀛愶紝鍦ㄩ〉闈?鏄劇ず涓ゅ涓€涓牱瀛愶紝浼?xì)鋴设瘯楠尵l撴灉琚共鎵般€?/li>
  • 鍋氬緢澶氱殑A / B嫻嬭瘯銆傝鎴戜滑闈㈠鐜板疄鍚э細(xì)浣犵殑絎竴涓狝 / B嫻嬭瘯鍙兘浼?xì)鏃犳晥銆備絾鏄笉瑕佺粷鏈涖€備竴涓狝 / B嫻嬭瘯鍙兘鏈変笁涓粨鏋滐細(xì)娌℃湁緇撴灉錛屼笉濂界殑緇撴灉鍜屽ソ鐨勭粨鏋溿€備紭鍖栬漿鎹㈢巼鐨勫叧閿槸瑕佸仛澶ч噺鐨凙 / B嫻嬭瘯錛屾妸鎵€鏈夌殑濂界殑緇撴灉鎷兼帴璧鋒潵錛屾渶緇堟帹鍔ㄤ笟緇┿€?/li>

緇忓吀A/B嫻嬭瘯妗堜緥鐮旂┒

榪欓噷鏈変竴浜涘浣曡繘琛孉/B嫻嬭瘯鐨勬渚嬬爺絀躲€?/p>

Writing Decisions: Headline Tests on the Highrise Sign-Up Page 37Signals嫻嬭瘯浠栦滑鐨勪環(huán)鏍奸〉闈㈢殑鏍囬銆傛渶緇堝彂鐜幫紝 “30-Day Free Trial on All Accounts “姣斿師鏉ョ殑“Start a Highrise Account. “澶氫駭鐢?0 錛呬互涓婄殑璁㈠崟銆?/p>

“You Should Follow Me on Twitter Here” (Dustin Curtis) 榪欐槸涓€涓敤鏉ユ祴璇曞彫鍞ょ敤鎴峰湪Twitter涓婂叧娉ㄨ嚜宸辯殑璇曢獙銆? Dustin 鍙戠幇鎻愮ず鏂囧瓧鏄?#8220;You should follow me on Twitter here” 鐨勬晥鏋滄槸“I’m on Twitter.” 173%

Human Photos Double Conversion Rates 浠庝袱涓笉鍚岀殑A / B嫻嬭瘯灝嗗湪緗戠珯涓婂鍔犺漿鎹㈢巼鐨勪漢鐨勭収鐗囷細(xì)涓€涓護(hù)浜轟護(hù)浜烘儕璁剁殑緇撹錛孉/B嫻嬭瘯涓ゅ紶鍥劇墖錛屽皢鐪熶漢鐓х墖鏀懼湪緗戠珯涓婁細(xì)鑾峰緱涓€鍊嶇殑杞寲銆傜爺絀惰鏄庯紝鎴戜滑娼滄剰璇嗚鐓х墖鍚稿紩浜?jiǎn)銆?/p>

Google Website Optimizer Case Study: Daily Burn, 20%+ Improvement (Tim Ferriss) 涓€涓皢鐢ㄦ埛閫夋嫨鍑忓皯鐨勫彉鍖栦嬌杞寲鎻愰珮浜?0%錛屾渶緇堢殑鐗堟湰鍦ㄧ粏鑺傚拰鏂囧瓧涓婃洿鏄撳惛寮曠洰鍏夈€?/p>

Two Magical Words Increased Conversion Rate by 28% “It’s free” 榪欎釜鍗曡瘝澧炲姞浜?jiǎn)娉ㄥ唽鎸夐挳鐐瑰嚴(yán)L鏁扮殑28%, 嫻嬭瘯緇撴灉琛ㄦ槑錛屽湪琛屽姩鍙敜涓婁竴浜涘緢灝忕殑鍙樺寲浼?xì)甯︽潵渥o(hù)浜烘儕璁剁殑緇撴灉銆?/p>

Changing the Sign-Up Button from Green to Red 渚濋潬A / B嫻嬭瘯錛?CareLogger鎶婃敞鍐屾寜閽粠緇胯壊淇敼涓虹孩鑹插鍔犱簡(jiǎn)34錛呰漿鎹㈢巼錛?/p>

Single page vs. multi-step checkout 濡傛灉浣犳湁涓€涓湪綰垮晢搴楋紝寰堝父瑙佺殑灝辨槸鏀粯?gòu)箒绋嬨€傝繖涓狝 / B嫻嬭瘯鍙戠幇錛屽涓敮浠樻祦紼嬫瘮鍗曚釜鏀粯?gòu)箒绋嬪畬鎴愮殑閿€鍞洿濂姐€?/p>

“Mad Libs” style form increases conversion 25-40% 鎵撹觸浼犵粺鐨勬櫤鎱э紝姝 / B嫻嬭瘯鍙戠幇涓€孌甸鏍?/em>褰㈠紡杈撳叆瀛楁姣斾紶緇熷艦寮忕殑甯冨眬鏇村ソ銆?/p>

Complete redesign of product page increased sales by 20% 涓€涓蔣浠朵駭鍝佺殑鍏徃閲嶆柊璁捐浠栦滑鐨勪駭鍝侀〉緇欏畠涓€涓幇浠g殑澶栬鍜屽鍔犱俊浠繪ā鍧椼€傛渶緇堢粨鏋滐細(xì)浠栦滑鎴愬姛鍦板鍔?0 錛呯殑鎬婚攢鍞銆傛湰妗堜緥鐮旂┒璇佹槑浜?jiǎn)璁捐瀵归攢鍞殑褰卞搷銆?/p>

Marketing Experiments response capture case study – triple digit increase in conversions 閫氳繃浼樺寲閭歡鍦板潃鑾峰彇鎻愰珮浜?58 錛呫€傞噸鐐規(guī)槸娑堥櫎鎵€鏈夌殑騫叉壈錛屽茍瑕佹眰娓稿鍙渶鎻愪緵鐢?shù)瀛愰偖錃g鍦板潃銆備嬌鐢ㄤ簹椹€婄ぜ鍝佸崱璁╀粬/濂圭殑瀹屾垚涓漢璧勬枡銆?/p>

A/B嫻嬭瘯宸ュ叿

鏈夎澶氫晶閲嶇偣錛屼環(huán)浣嶅拰鍔熻兘涓嶅悓鐨凙 / B嫻嬭瘯宸ュ叿錛岃繖閲屾槸涓€浜涳細(xì)

  • Google Website Optimizer
    鎼滅儲(chǔ)宸ㄥご鎻愪緵鐨勫厤璐笰/B嫻嬭瘯宸ュ叿銆備竴涓緢濂界殑鍏ラ棬綰у伐鍏鳳紝浣嗘槸娌℃湁涓€浜涘厛榪涚殑鍔熻兘銆?/li>
  • A/Bingo and Vanity
    鍩轟簬Ruby on Rails寮€鍙戠殑鏈嶅姟鍣ㄧ粍浠躲€傞渶瑕佺紪紼嬪拰浠g爜闆嗘垚銆?/li>
  • Visual Website Optimizer
    涓€涓槗浜庝嬌鐢ㄧ殑A / B嫻嬭瘯宸ュ叿錛屽寘鍚竴浜涘厛榪涚殑鍔熻兘錛屽鎵€瑙佸嵆鎵€寰楃殑緙栬緫鍣紝鍗曞嚮鍦板浘錛岃闂€呭垎鍓插拰鏍囩絳夈€?/li>
  • Unbounce and Performable
    闆嗘垚鐫€闄嗛〉璁捐鐨凙 / B嫻嬭瘯宸ュ叿銆?/li>
  • Vertster, SiteSpect, Webtrends Optimize and Omniture’s Test&Target
    浼佷笟綰ф祴璇曞伐鍏楓€?/li>

涓€浜涙繁鍏ョ爺絀剁殑A/B嫻嬭瘯璧勬枡

濡傛灉浣犲凡緇忚鍒拌繖閲岋紝閭d箞A / B嫻嬭瘯澶ф宸茬粡嬋€璧蜂綘鐨勫叴瓚c€傚湪榪欓噷錛屾湁涓€浜涢潪甯稿ソ鐨凙/B嫻嬭瘯璧勬簮銆?/p>

瀵繪壘浣犱笅涓€涓狝/B嫻嬭瘯鐨勭伒鎰?/strong>

  • Which Test Won?
    涓€涓寽嫻嬮偅縐嶆儏鍐典細(xì)鏈€緇堣儨鍒╃殑娓告垙銆?/li>
  • 101 A/B Testing Tips
    澶ч噺鐨凙/B嫻嬭瘯鎶€宸у拰鏂規(guī)硶銆?/li>
  • ABtests.com
    涓€涓彲浠ュ垎浜拰闃呰A/B嫻嬭瘯緇撴灉鐨勫湴鏂廣€?/li>
  • A/B Ideafox
    鎼滅儲(chǔ)寮曟搸鐨凙 / B鍜屽鍙橀噺鐨勬渚嬬爺絀躲€?/li>

涓€浜涗粙緇嶆€ф枃绔?/strong>

A/B嫻嬭瘯涓殑鏁板

鍘熸枃鍦板潃錛?a >http://www.smashingmagazine.com/2010/06/24/the-ultimate-guide-to-a-b-testing/
杞澆鑷細(xì)http://ucdchina.com/snap/7203



鐤媯 2012-08-28 11:41 鍙戣〃璇勮
]]>
apache鎬ц兘嫻嬭瘯宸ュ叿abhttp://www.aygfsteel.com/freeman1984/archive/2011/12/13/366235.html鐤媯鐤媯Tue, 13 Dec 2011 06:36:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/12/13/366235.htmlhttp://www.aygfsteel.com/freeman1984/comments/366235.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/12/13/366235.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/366235.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/366235.html浣跨敤鏍煎紡錛?./ab [options] [http://]hostname[:port]/path
鍙傛暟璇存槑錛?br />    -n requests     Number of requests to perform
    //鍦ㄦ祴璇曚細(xì)璇濅腑鎵€鎵ц鐨勮姹備釜鏁般€傞粯璁ゆ椂錛屼粎鎵ц涓€涓姹?/font>
    -c concurrency Number of multiple requests to make
    //涓€嬈′駭鐢熺殑璇鋒眰涓暟銆傞粯璁ゆ槸涓€嬈′竴涓€?/font>
    -t timelimit    Seconds to max. wait for responses
    //嫻嬭瘯鎵€榪涜鐨勬渶澶х鏁般€傚叾鍐呴儴闅愬惈鍊兼槸-n 50000銆傚畠鍙互浣垮鏈嶅姟鍣ㄧ殑嫻嬭瘯闄愬埗鍦ㄤ竴涓浐瀹氱殑鎬繪椂闂翠互鍐呫€傞粯璁ゆ椂錛屾病鏈夋椂闂撮檺鍒躲€?br />    -p postfile     File containing data to POST
    //鍖呭惈浜?jiǎn)闇€瑕丳OST鐨勬暟鎹殑鏂囦歡.
    -T content-type Content-type header for POSTing
    //POST鏁版嵁鎵€浣跨敤鐨凜ontent-type澶翠俊鎭€?/font>
    -v verbosity    How much troubleshooting info to print
    //璁劇疆鏄劇ず淇℃伅鐨勮緇嗙▼搴?- 4鎴栨洿澶у€間細(xì)鏄劇ず澶翠俊鎭紝 3鎴栨洿澶у€煎彲浠ユ樉紺哄搷搴斾唬鐮?404, 200絳?, 2鎴栨洿澶у€煎彲浠ユ樉紺鴻鍛婂拰鍏朵粬淇℃伅銆?-V 鏄劇ず鐗堟湰鍙峰茍閫€鍑恒€?br />    -w              Print out results in HTML tables
    //浠TML琛ㄧ殑鏍煎紡杈撳嚭緇撴灉銆傞粯璁ゆ椂錛屽畠鏄櫧鑹茶儗鏅殑涓ゅ垪瀹藉害鐨勪竴寮犺〃銆?br />    -i              Use HEAD instead of GET
   // 鎵цHEAD璇鋒眰錛岃€屼笉鏄疓ET銆?/font>
    -x attributes   String to insert as table attributes
    //
    -y attributes   String to insert as tr attributes
    //
    -z attributes   String to insert as td or th attributes
    //
    -C attribute    Add cookie, eg. 'Apache=1234. (repeatable)
    //-C cookie-name=value 瀵硅姹傞檮鍔犱竴涓狢ookie:琛屻€傚叾鍏稿瀷褰㈠紡鏄痭ame=value鐨勪竴涓弬鏁板銆傛鍙傛暟鍙互閲嶅銆?/font>
    -H attribute    Add Arbitrary header line, eg. 'Accept-Encoding: gzip'
                    Inserted after all normal header lines. (repeatable)
    -A attribute    Add Basic WWW Authentication, the attributes
                    are a colon separated username and password.
    -P attribute    Add Basic Proxy Authentication, the attributes
                    are a colon separated username and password.
    //-P proxy-auth-username:password 瀵逛竴涓腑杞唬鐞嗘彁渚汢ASIC璁よ瘉淇′換銆傜敤鎴峰悕鍜屽瘑鐮佺敱涓€涓?闅斿紑錛屽茍浠ase64緙栫爜褰㈠紡鍙戦€併€傛棤璁烘湇鍔″櫒鏄惁闇€瑕?鍗? 鏄惁鍙戦€佷簡(jiǎn)401璁よ瘉闇€姹備唬鐮?錛屾瀛楃涓查兘浼?xì)琚彂閫併€?/font>
    -X proxy:port   Proxyserver and port number to use
    -V              Print version number and exit
    -k              Use HTTP KeepAlive feature
    -d              Do not show percentiles served table.
    -S              Do not show confidence estimators and warnings.
    -g filename     Output collected data to gnuplot format file.
    -e filename     Output CSV file with percentages served
    -h              Display usage information (this message)
    //-attributes 璁劇疆 灞炴€х殑瀛楃涓? 緙洪櫡紼嬪簭涓湁鍚勭闈?rùn)鎬佸0鏄庣殑鍥哄畾闀垮害鐨勭紦鍐插尯銆傚彟澶栵紝瀵瑰懡浠よ鍙傛暟銆佹湇鍔″櫒鐨勫搷搴斿ご鍜屽叾浠栧閮ㄨ緭鍏ョ殑瑙f瀽涔熷緢綆€鍗曪紝榪欏彲鑳戒細(xì)鏈変笉鑹悗鏋溿€傚畠娌℃湁瀹屾暣鍦板疄鐜癏TTP/1.x; 浠呮帴鍙楁煇浜?棰勬兂'鐨勫搷搴旀牸寮忋€?strstr(3)鐨勯綣佷嬌鐢ㄥ彲鑳戒細(xì)甯︽潵鎬ц兘闂錛屽嵆, 浣犲彲鑳芥槸鍦ㄦ祴璇昦b鑰屼笉鏄湇鍔″櫒鐨勬€ц兘銆?

鍙傛暟寰堝,涓€鑸垜浠敤 -c 鍜?-n 鍙傛暟灝卞彲浠ヤ簡(jiǎn). 渚嬪:

./ab -c 1000 -n 1000 http://10.88.15.77/test.php

榪欎釜琛ㄧず鍚屾椂澶勭悊1000涓姹傚茍榪愯1000嬈ndex.php鏂囦歡.
#ab -c 1000 -n 1000 http://10.88.15.77/test.php


Benchmarking 10.88.15.77 (be patient)

Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Finished 1000 requests


Server Software:        Apache/2.2.8
//騫沖彴apache 鐗堟湰2.2.8
Server Hostname:        10.88.15.77
//鏈嶅姟鍣ㄤ富鏈哄悕
Server Port:            80
//鏈嶅姟鍣ㄧ鍙?/font>

Document Path:          /test.php

//嫻嬭瘯鐨勯〉闈㈡枃妗?/font>
Document Length:        1018 bytes
//鏂囨。澶у皬

Concurrency Level:      1000
//騫跺彂鏁?br />Time taken for tests:   8.188731 seconds
//鏁翠釜嫻嬭瘯鎸佺畫鐨勬椂闂?/font>
Complete requests:      1000
//瀹屾垚鐨勮姹傛暟閲?/font>
Failed requests:        0
//澶辮觸鐨勮姹傛暟閲?/font>
Write errors:           0

Total transferred:      1361581 bytes
//鏁翠釜鍦烘櫙涓殑緗戠粶浼犺緭閲?/font>
HTML transferred:       1055666 bytes
//鏁翠釜鍦烘櫙涓殑HTML鍐呭浼犺緭閲?br />Requests per second:    122.12 [#/sec] (mean)
//澶у鏈€鍏沖績(jī)鐨勬寚鏍囦箣涓€錛岀浉褰撲簬 LR 涓殑 姣忕浜嬪姟鏁?/span> 錛屽悗闈㈡嫭鍙蜂腑鐨?/span> mean 琛ㄧず榪欐槸涓€涓鉤鍧囧€?/span>
Time per request:       8188.731 [ms] (mean)
//澶у鏈€鍏沖績(jī)鐨勬寚鏍囦箣浜岋紝鐩稿綋浜?/span> LR 涓殑 騫沖潎浜嬪姟鍝嶅簲鏃墮棿 錛屽悗闈㈡嫭鍙蜂腑鐨?/span> mean 琛ㄧず榪欐槸涓€涓鉤鍧囧€?/span>
Time per request:       8.189 [ms] (mean, across all concurrent requests)
//姣忎釜璇鋒眰瀹為檯榪愯鏃墮棿鐨勫鉤鍧囧€?/font>
Transfer rate:          162.30 [Kbytes/sec] received
//騫沖潎姣忕緗戠粶涓婄殑嫻侀噺錛屽彲浠ュ府鍔╂帓闄ゆ槸鍚﹀瓨鍦ㄧ綉緇滄祦閲忚繃澶у鑷村搷搴旀椂闂村歡闀跨殑闂

Connection Times (ms)
              min mean[+/-sd] median   max
Connect:        4 646 1078.7     89    3291
Processing:   165 992 493.1    938    4712
Waiting:      118 934 480.6    882    4554
Total:        813 1638 1338.9   1093    7785
//緗戠粶涓婃秷鑰楃殑鏃墮棿鐨勫垎瑙o紝鍚勯」鏁版嵁鐨勫叿浣撶畻娉曡繕涓嶆槸寰堟竻妤?/span>

Percentage of the requests served within a certain time (ms)
50%   1093
66%   1247
75%   1373
80%   1493
90%   4061
95%   4398
98%   5608
99%   7368
100%   7785 (longest request)
//鏁翠釜鍦烘櫙涓墍鏈夎姹傜殑鍝嶅簲鎯呭喌銆傚湪鍦烘櫙涓瘡涓姹傞兘鏈変竴涓搷搴旀椂闂達(dá)紝鍏朵腑50錛呯殑鐢ㄦ埛鍝嶅簲鏃墮棿灝忎簬1093 姣錛?0錛?鐨勭敤鎴峰搷搴旀椂闂村皬浜?247 姣錛屾渶澶х殑鍝嶅簲鏃墮棿灝忎簬7785 姣

      鐢變簬瀵逛簬騫跺彂璇鋒眰錛宑pu瀹為檯涓婂茍涓嶆槸鍚屾椂澶勭悊鐨勶紝鑰屾槸鎸夌収姣忎釜璇鋒眰鑾峰緱鐨勬椂闂寸墖閫愪釜杞漿澶勭悊鐨勶紝鎵€浠ュ熀鏈笂絎竴涓猅ime per request鏃墮棿綰︾瓑浜庣浜屼釜Time per request鏃墮棿涔樹互騫跺彂璇鋒眰鏁?br />杞嚜錛?a >http://blog.sina.com.cn/s/blog_3c9872d00100dbox.html



鐤媯 2011-12-13 14:36 鍙戣〃璇勮
]]>
select, iocp, epoll,kqueue鍙?qiáng)鍚効U岻/O澶嶇敤鏈哄埗http://www.aygfsteel.com/freeman1984/archive/2011/12/07/365746.html鐤媯鐤媯Wed, 07 Dec 2011 05:45:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/12/07/365746.htmlhttp://www.aygfsteel.com/freeman1984/comments/365746.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/12/07/365746.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/365746.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/365746.html棣栧厛錛屼粙緇嶅嚑縐嶅父瑙佺殑I/O妯″瀷鍙?qiáng)鍏跺尯鍒?/strong>錛屽涓嬶細(xì)

  • blocking I/O

  • nonblocking I/O

  • I/O multiplexing (select and poll)

  • signal driven I/O (SIGIO)

  • asynchronous I/O (the POSIX aio_functions)

blocking I/O
榪欎釜涓嶇敤澶氳В閲婂惂錛岄樆濉炲鎺ュ瓧銆備笅鍥炬槸瀹冭皟鐢ㄨ繃紼嬬殑鍥劇ず錛?/p>

閲嶇偣瑙i噴涓嬩笂鍥撅紝涓嬮潰渚嬪瓙閮戒細(xì)璁插埌銆傞鍏坅pplication璋冪敤 recvfrom()杞叆kernel錛屾敞鎰弅ernel鏈?涓繃紼嬶紝wait for data鍜宑opy data from kernel to user銆傜洿鍒版渶鍚巆opy complete鍚庯紝recvfrom()鎵嶈繑鍥炪€傛榪囩▼涓€鐩存槸闃誨鐨勩€?/p>

nonblocking I/O錛?/strong>
涓巄locking I/O瀵圭珛鐨勶紝闈為樆濉炲鎺ュ瓧錛岃皟鐢ㄨ繃紼嬪浘濡備笅錛?/p>

鍙互鐪嬭錛屽鏋滅洿鎺ユ搷浣滃畠錛岄偅灝辨槸涓疆璇€€傘€傜洿鍒板唴鏍哥紦鍐插尯鏈夋暟鎹€?/p>

I/O multiplexing (select and poll)
鏈€甯歌鐨処/O澶嶇敤妯″瀷錛宻elect銆?/p>

select鍏堥樆濉烇紝鏈夋椿鍔ㄥ鎺ュ瓧鎵嶈繑鍥炪€備笌blocking I/O鐩告瘮錛宻elect浼?xì)鏈変袱娆【p葷粺璋冪敤錛屼絾鏄痵elect鑳藉鐞嗗涓鎺ュ瓧銆?/p>

signal driven I/O (SIGIO)
鍙湁UNIX緋葷粺鏀寔錛屾劅鍏磋叮鐨勮鏌ラ槄鐩稿叧璧勬枡

涓?strong>I/O multiplexing (select and poll)鐩告瘮錛屽畠鐨勪紭鍔挎槸錛屽厤鍘諱簡(jiǎn)select鐨勯樆濉炰笌杞錛屽綋鏈夋椿璺冨鎺ュ瓧鏃訛紝鐢辨敞鍐岀殑handler澶勭悊銆?/p>

asynchronous I/O (the POSIX aio_functions)
寰堝皯鏈?nix緋葷粺鏀寔錛寃indows鐨処OCP鍒欐槸姝ゆā鍨?/p>

瀹屽叏寮傛鐨処/O澶嶇敤鏈哄埗錛屽洜涓虹旱瑙備笂闈㈠叾瀹冨洓縐嶆ā鍨嬶紝鑷沖皯閮戒細(xì)鍦ㄧ敱kernel copy data to appliction鏃墮樆濉炪€傝€岃妯″瀷鏄綋copy瀹屾垚鍚庢墠閫氱煡application錛屽彲瑙佹槸綰紓姝?/font>鐨勩€傚ソ鍍忓彧鏈墂indows鐨?font color="#ff0000">瀹屾垚绔彛鏄繖涓ā鍨嬶紝鏁堢巼涔熷緢鍑?guó)檳层€?/p>

涓嬮潰鏄互涓婁簲縐嶆ā鍨嬬殑姣旇緝

鍙互鐪嬪嚭錛岃秺寰€鍚庯紝闃誨瓚婂皯錛岀悊璁轟笂鏁堢巼涔熸槸鏈€浼樸€?/p>

=====================鍒嗗壊綰?=================================

5縐嶆ā鍨嬬殑姣旇緝姣旇緝娓呮櫚浜?jiǎn)锛屽墿涓嬬殑灏辨槸鎶妔elect,epoll,iocp,kqueue鎸夊彿鍏ュ駭閭e氨O(jiān)K浜?jiǎn)銆?/p>

select鍜宨ocp鍒嗗埆瀵瑰簲絎?縐嶄笌絎?縐嶆ā鍨嬶紝閭d箞epoll涓巏queue鍛紵鍏跺疄涔熶簬select灞炰簬鍚屼竴縐嶆ā鍨嬶紝鍙槸鏇撮珮綰т竴浜涳紝鍙互鐪嬩綔鏈変簡(jiǎn)絎?縐嶆ā鍨嬬殑鏌愪簺鐗規(guī)€э紝濡俢allback鏈哄埗銆?/p>

閭d箞錛屼負(fù)浠€涔坋poll,kqueue姣攕elect楂樼駭錛?

絳旀鏄紝浠栦滑鏃?font color="#ff0000">杞銆傚洜涓轟粬浠敤callback鍙栦唬浜?jiǎn)銆傛兂鎯崇湅錛屽綋濂楁帴瀛楁瘮杈冨鐨勬椂鍊欙紝姣忔select()閮借閫氳繃閬嶅巻FD_SETSIZE涓猄ocket鏉ュ畬鎴愯皟搴?涓嶇鍝釜Socket鏄椿璺冪殑,閮介亶鍘嗕竴閬嶃€傝繖浼?xì)娴垂寰堝CPU鏃墮棿銆傚鏋滆兘緇欏鎺ュ瓧娉ㄥ唽鏌愪釜鍥炶皟鍑芥暟錛屽綋浠栦滑媧昏穬鏃訛紝鑷姩瀹屾垚鐩稿叧鎿嶄綔錛岄偅灝遍伩鍏嶄簡(jiǎn)杞錛岃繖姝f槸epoll涓巏queue鍋氱殑銆?/p>

windows or *nix 錛圛OCP or kqueue/epoll錛夛紵

璇氱劧錛學(xué)indows鐨処OCP闈炲父鍑?guó)檳插Q岀洰鍓嶅緢灝戞湁鏀寔asynchronous I/O鐨勭郴緇燂紝浣嗘槸鐢變簬鍏剁郴緇熸湰韜殑灞€闄愭€э紝澶у瀷鏈嶅姟鍣ㄨ繕鏄湪UNIX涓嬨€傝€屼笖姝e涓婇潰鎵€榪幫紝kqueue/epoll 涓?IOCP鐩告瘮錛屽氨鏄浜?jiǎn)涓€灞備粠鍐呮牳copy鏁版嵁鍒板簲鐢ㄥ眰鐨勯樆濉烇紝浠庤€屼笉鑳界畻浣?strong>asynchronous I/O綾匯€?/strong>浣嗘槸錛岃繖灞傚皬灝忕殑闃誨鏃犺凍杞婚噸錛宬queue涓巈poll宸茬粡鍋氬緱寰堜紭縐€浜?jiǎn)銆?/p>

鎻愪緵涓€鑷寸殑鎺ュ彛錛孖O Design Patterns

瀹為檯涓婏紝涓嶇鏄摢縐嶆ā鍨嬶紝閮藉彲浠ユ娊璞′竴灞傚嚭鏉ワ紝鎻愪緵涓€鑷寸殑鎺ュ彛錛屽箍涓轟漢鐭ョ殑鏈堿CE,Libevent榪欎簺錛屼粬浠兘鏄法騫沖彴鐨勶紝鑰屼笖浠栦滑鑷姩閫夋嫨鏈€浼樼殑I/O澶嶇敤鏈哄埗錛岀敤鎴峰彧闇€璋冪敤鎺ュ彛鍗沖彲銆傝鍒拌繖閲屽張寰楄璇?涓璁℃ā寮忥紝Reactor and Proactor銆?/strong>鏈変竴綃囩粡鍏告枃绔?a >http://www.artima.com/articles/io_design_patterns.html鍊煎緱闃呰錛孡ibevent鏄?strong>Reactor妯″瀷錛孉CE鎻愪緵Proactor妯″瀷銆傚疄闄呴兘鏄鍚勭I/O澶嶇敤鏈哄埗鐨勫皝瑁呫€?/p>

Java nio鍖呮槸浠€涔圛/O鏈哄埗錛?/strong>

鎴戞浘澶╃湡鐨勮涓簀ava nio灝佽鐨勬槸IOCP銆傘€傜幇鍦ㄥ彲浠ョ‘瀹氾紝鐩墠鐨刯ava鏈川鏄痵elect()妯″瀷錛屽彲浠ユ鏌?jre/bin/nio.dll寰楃煡銆傝嚦浜巎ava鏈嶅姟鍣ㄤ負(fù)浠€涔堟晥鐜囪繕涓嶉敊銆傘€傛垜涔熶笉寰楄€岀煡錛屽彲鑳芥槸璁捐寰楁瘮杈冨ソ鍚с€傘€?_-銆?/p>

=====================鍒嗗壊綰?=================================

鎬葷粨涓€浜涢噸鐐癸細(xì)

  1. 鍙湁IOCP鏄痑synchronous I/O錛屽叾浠栨満鍒舵垨澶氭垨灝戦兘浼?xì)鏈変竴鐐歸樆濉炪€?
  2. select浣庢晥鏄洜涓烘瘡嬈″畠閮介渶瑕佽疆璇€€備絾浣庢晥涔熸槸鐩稿鐨勶紝瑙嗘儏鍐佃€屽畾錛屼篃鍙€氳繃鑹ソ鐨勮璁℃敼鍠?
  3. epoll, kqueue鏄疪eacor妯″紡錛孖OCP鏄疨roactor妯″紡銆?
  4. java nio鍖呮槸select妯″瀷銆傘€?

杞澆鑷細(xì)http://blog.csdn.net/shallwake/article/details/5265287



鐤媯 2011-12-07 13:45 鍙戣〃璇勮
]]>nginx鍜宼omcat璐熻澆綆€鍗曢厤緗?windows鐜)http://www.aygfsteel.com/freeman1984/archive/2011/12/07/365726.html鐤媯鐤媯Wed, 07 Dec 2011 02:40:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/12/07/365726.htmlhttp://www.aygfsteel.com/freeman1984/comments/365726.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/12/07/365726.html#Feedback2http://www.aygfsteel.com/freeman1984/comments/commentRss/365726.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/365726.html闃呰鍏ㄦ枃

鐤媯 2011-12-07 10:40 鍙戣〃璇勮
]]>
楂樻€ц兘JavaScript(鏉ヨ嚜楂樻€ц兘JavaScript涓€涔?http://www.aygfsteel.com/freeman1984/archive/2011/10/09/360260.html鐤媯鐤媯Sun, 09 Oct 2011 03:56:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/10/09/360260.htmlhttp://www.aygfsteel.com/freeman1984/comments/360260.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/10/09/360260.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/360260.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/360260.html楂樻€ц兘JavaScript

涓€涓嬪唴瀹規(guī)槸杞澆鐨勶紝鍐呭搴旇鍑?guó)檱珮鎬ц兘JavaScript涓€涔︿腑錛屾涔﹀€煎緱涓€璇匯€?br />
瀛︿範(fàn)榪囩▼涓啓鐨勭瑪璁幫紝鏈夎璇鋒寚姝c€?/p>

鎬ц兘騫朵笉鏄敮涓€鐨勮€冭檻鍥犵礌錛屽湪瀵規(guī)€ц兘瑕佹眰騫墮潪鑻涘埢鐨勭幆澧冧腑錛屾€ц兘涔熷彲璁╀綅浜庯細(xì)鍥㈤槦緙栫爜瑙勮寖錛屼釜浜虹紪鐮佷範(fàn)鎯紝浠g爜鍙鎬э紝妯″潡鍙墿灞曟€х瓑鍥犵礌銆?/p>

浠ヤ笅鎻愬埌鐨勫鎬ц兘鐨勪紭鍖栵紝浠呬粎鎻愪緵浜?jiǎn)浠庢€ц兘鐨勮搴﹀幓闃愰噴涓€浜涜璁℃€濊礬錛屼絾瀹為檯涓婏紝嫻忚鍣ㄦ湰韜細(xì)閫愭浼樺寲鑷韓鐨勬€ц兘闂錛岃€屾垜浠偅浜涙彁楂樻€ц兘鐨刪ack錛屽彲鑳戒細(xì)鍥犱負(fù)嫻忚鍣ㄧ殑鐗堟湰鏇存柊錛屽鑷存垚涓轟竴縐嶆棤鐢ㄧ殑hack錛岀敋鑷寵鎬ц兘鏇存參錛屾墍浠ヤ笉瑕佹棤璋撶殑浣跨敤涓€浜沨ack錛屽幓浼樺寲涓€浜涙墽琛屾鏁板緢灝戠殑浠g爜錛岃€岄檷浣庝唬鐮佺殑鍙鎬э紝鎴栧鍔犱唬鐮侀噺錛岋紝涓€鍙ヨ瘽錛氬闈炲繀瑕侊紝璇峰嬁hack銆?/p>

涓€ javascript鍔犺澆鍜屾墽琛?/strong>

1 鏃犺鏄閾捐繕鏄唴鑱旓紝script鏍囩閮戒細(xì)闃誨欏甸潰鐨勬覆鏌擄紝鎵€浠cript鏍囩鐨勪綅緗渶濂芥槸</body>鍓?br />2 鍑忓皯http璇鋒眰錛屽悎騫跺涓猻cript鏂囦歡涓轟竴涓紝1涓?0k鐨勬枃浠舵瘮3涓?0k鐨勬枃浠惰澆鍏ラ€熷害瑕佸揩
3 濡備綍涓嶉樆濉為〉闈紝鑰岃澆鍏ヤ竴涓剼鏈憿錛?br />1錛夌粰script鏍囩鍔燿efer灞炴€э細(xì)<script src=”xxx” defer></script>錛岃繖鏍蜂笉浼?xì)鋴蓹宓闈㈡墽琛寴q囩▼闃誨錛屼絾騫朵笉鏄墍鏈夋祻瑙堝櫒閮芥敮鎸佽繖涓猟efer灞炴€?br />2錛墄mlHttpRequest鏉ヨ姹傝剼鏈唴瀹瑰茍eval錛岃櫧鐒惰繖鏍峰彲浠ョ伒媧葷殑鎺у埗鑴氭湰涓嬭澆榪囩▼ 鍙?浣曟椂鎵ц錛屼絾涓嶈兘璺ㄥ煙鏄釜紜激
3錛塩reateElement(‘script’)鐒跺悗append鏄釜涓嶉敊鐨勬柟妗堬紝鏃犻樆濉烇紝鏈塷nload鐢╫nload錛孖E娌℃湁灝辯敤onreadystatechange瀹炵幇鍔犺澆瀹屾垚鐨勪簨浠訛紝娉ㄦ剰readyState灞炴€х殑鍊兼槸complete鎴栬€卨oaded閮借鎵ц鍥炶皟鍑芥暟騫舵竻闄nreadystatechange錛屽洜涓鴻繖涓や釜鐘舵€佸€間笉紼沖畾銆?/p>

4 鎵€浠ユ帹鑽愮殑鏂瑰紡鏄涓夌錛氬湪杞藉叆js-loader閮ㄥ垎鐨勫皯閲忎唬鐮佸悗錛屽氨鐢╨oader鍘誨姞杞藉叾浠杍s鍚э紝娉ㄦ剰涓€浜涘競(jìng)闈笂嫻佽鐨勫簱濡俵abjs瀹炵幇浜?jiǎn)杩欎簺鍔熻?騫垮憡涓嬶細(xì)qwrap瀹炵幇浜?jiǎn)渚濊禆绠$悊鍙?qiáng)鍔ㄦ€佸姞杞?/font>)

浜?鏁版嵁璁塊棶
鏁版嵁瀛樺偍鍦細(xì)鐩存帴閲忥紝鍙橀噺錛屾暟緇勫厓绱狅紝瀵硅薄鎴愬憳涓€?br />榪欏張璁╂垜鎯寵搗浜?jiǎn)缂栬瘧鍨嬬殑璇a€錛岀洿鎺ラ噺瀛樺湪浜巔e鏂囦歡鐨?rdata孌典腑錛屽彉閲忓湪璋冪敤鏍堜笂錛屾暟緇勫厓绱犲拰瀵硅薄鎴愬憳鐨勮闂渶瑕佸熀鍧€+鍋忕Щ閲忔潵瀹氫綅錛屽灞傚璞″祵濂楅渶瑕佸嬈¤綆楀熀鍧€+鍋忕Щ閲忔潵瀹氫綅銆?/p>

榪欎簺鍦╦avascript涓緷鐒舵病鏈夊お澶у彉鍖栵細(xì)

1 鐩存帴閲忕殑璁塊棶鏃犵枒鏄繀閫熺殑

2 鍙橀噺鐨勮闂渶瑕佽€冭檻javascript鍏佽鍑芥暟榪涜宓屽瀹氫箟錛屼篃灝卞艦鎴愪簡(jiǎn)鍩轟簬鍑芥暟瀹氫箟鐨勪綔鐢ㄥ煙閾撅紝鑰屽彉閲忕殑璁塊棶錛屽彲鑳介渶瑕佽法浣滅敤鍩熸潵璁塊棶錛屾墍浠ヨ繖閲屾湁涓€鐐規(guī)€ц兘鎹熷け錛屼絾鍏堣繘鐨刯s寮曟搸鐢ㄧ┖闂存崲鏃墮棿錛堢寽嫻嬪湪瀛愪綔鐢ㄥ煙涓紦瀛樹簡(jiǎn)鎵€鏈夌埗灞備綔鐢ㄥ煙閾句笂鍙橀噺鐨刵ame鍜屽湴鍧€錛屾墍浠ヤ笉浼?xì)杩涜涓婃函浣滅敤鍩熼摼锛岀洿鎺ユ墽琛宧ash瀹氫綅鍗沖彲錛屼絾涓€涓嚱鏁頒腑濡傛灉鍖呭惈eval,with,catch鍧楃殑璇濓紝閫氳繃闈?rùn)鎬佷唬鐮佸垎鏋愬氨娌″姙娉曠煡閬撹鍑芥暟涓0鏄庝簡(jiǎn)鍝簺鍙橀噺錛屼篃灝辨棤娉曞仛鍒拌繖涓紭鍖栵級(jí)錛岋紝涓嶈繃錛屼粠鎬ц兘涓婃潵鐪嬶紝涓庢垜鐨勫疄闄呮祴璇曪紝澶у緙栫爜鐨勬椂鍊欎笉闇€瑕佹敞鎰忚繖縐嶆€ц兘鑰冭檻錛屾寜鍥㈤槦緙栫爜瑙勮寖鍜屼釜浜虹紪鐮佷範(fàn)鎯潵鍚с€?/p>

3 瀵硅薄鎴愬憳鐨勮闂鑰冭檻涓婃函鍘熷瀷閾撅紝鎵€浠ョ悊璁轟笂鏉ヨ璁塊棶瀹炰緥鏈韓涓婄殑鎴愬憳姣旇闂師鍨嬬殑鎴愬憳閫熷害瑕佸揩銆?/p>

4 澶氬眰瀵硅薄鐨勫祵濂楄鎱紝浣嗘槸鍦ㄥ鎬ц兘瑕佹眰騫墮潪寰堣嫑鍒葷殑鐜涓笉鐢ㄥ叧蹇?jī)杩欎簺銆?/p>

涓?dom緙栫▼

1 dom鐨勮闂拰淇敼
1) 鏍囧噯dom鏂瑰紡(createElement,createTextNode,appendChild) 鍜?瀛楃涓叉嫾鎺ュ悗璁劇疆innerHTML 涔嬮棿鐨勬€ц兘鐩稿樊鏃犲嚑錛屽悇涓祻瑙堝櫒涓嶅悓
2) 鑺傜偣鍏嬮殕閫熷害蹇竴浜涳紝鍏堢敤createElement鍒涘緩濂介渶瑕佺敤鍒扮殑鍏冪礌綾誨瀷鍚庯紝浠ュ悗鍦ㄥ驚鐜腑璋冪敤鍏冪礌鐨刢loneNode鏉ュ厠闅?br />3) getElementsByName,getElementsByClassName,getElementsByTagName浠ュ強(qiáng).images,.links,.forms灞炴€ц繑鍥炵殑閮芥槸html闆嗗悎錛屾槸涓被鏁扮粍錛屾病鏈夋暟緇勭殑鏂規(guī)硶錛屼絾鎻愪緵浜?jiǎn)length灞炴€у拰绱㈠紩鍣紝錛孒TML闆嗗悎澶勪簬“瀹炴椂鐘舵€?#8221;錛屽簳灞傛枃妗e璞℃洿鏂版椂鍚庤嚜鍔ㄦ洿鏂癹avascript涓殑闆嗗悎錛岃闂甽ength鏃跺€欎篃浼?xì)鍘绘煡璇㈠Q屾墍浠ラ亶鍘嗛泦鍚堟椂鍊欒緙撳瓨length鏉ユ彁楂樻晥鐜?br />4) 閬嶅巻闆嗗悎鍓嶈褰昹ength錛屽驚鐜綋涓伩鍏嶅闆嗗悎涓煇鐩稿悓鍏冪礌榪涜澶氭绱㈠紩錛屼竴嬈$儲(chǔ)寮曞埌灞€閮ㄥ彉閲忎腑錛屽洜涓哄html闆嗗悎鐨勭儲(chǔ)寮曟€ц兘寰堝樊錛岀壒鍒湪鏌愪簺鑰佹祻瑙堝櫒涓?br />5) 閬嶅巻dom鑺傜偣鐨勮瘽錛岀患鍚堟潵璇翠嬌鐢╪extSibling鎬ц兘浼?xì)姣攃hildNodes蹇竴鐐癸紝濡傛灉鍙亶鍘唀lement鐨勮瘽錛宑hildren琚墍鏈夋祻瑙堝櫒鏀寔錛屾墍浠ュ敖閲忕敤children鑰屼笉瑕佺敤childNodes鍐嶈嚜琛岀瓫閫夛紝鍏朵粬鐨勫childElementCount,firstElementChild,lastElementChild,nextElementSibling,previousElementSibling涓嶈鍏ㄩ潰鏀寔錛屾敞鎰忓仛鐗規(guī)€ф嫻嬪強(qiáng)鍏煎澶勭悊
6) 娉ㄦ剰鎵€浣跨敤鐨勭被搴撴槸鍚︽敮鎸佸師鐢熺殑querySelectorAll浼樺厛瑙勫垯錛宷uerySelectorAll榪斿洖NodeList鑰屼笉浼?xì)杩斿洖HTML闆嗗悎錛屼笉瀛樺湪瀹炴椂鏂囨。緇撴瀯鐨勬€ц兘闂

2 閲嶇粯鍜岄噸鎺?/p>

鏀瑰彉dom鑺傜偣鐨勫嚑浣曞睘鎬т細(xì)寮曡搗閲嶆帓(reflow)錛岃€屽悗鍙戠敓閲嶇粯(repaint)銆?/p>

鐢變簬閲嶆帓闇€瑕佷駭鐢熷ぇ閲忕殑璁$畻錛屾墍浠ユ祻瑙堝櫒涓€鑸細(xì)閫氳繃闃熷垪鍖栦慨鏀瑰茍鎵歸噺鎵ц鏉ヤ紭鍖栭噸鎺掞紝鑾峰彇鏈€鏂板竷灞€淇℃伅鐨勬搷浣滀細(xì)瀵艱嚧寮哄埗瑙﹀彂闃熷垪鐨勬墽琛岋紝濡傝幏鍙杘ffsetTop,scrollTop,clientTop鎴栬皟鐢╣etComputedStyle鏂規(guī)硶(currentStyle in IE)鐨勬椂鍊欙紝瑕佽繑鍥炶濡傛綾葷殑鏈€鏂扮殑甯冨眬淇℃伅鐨勬椂鍊欙紝嫻忚鍣ㄥ氨浼?xì)绔嬪嵪x覆鏌撻槦鍒椾腑鐨勫彉鍖栵紝瑙﹀彂閲嶆帓錛岀劧鍚庤繑鍥炴紜殑鍊箋€?/p>

鐢變簬鍔ㄤ綔鐨勯槦鍒楁槸鍩轟簬欏甸潰鐨勶紝鎵€浠ワ紝鍗充嬌浣犺幏鍙栫殑鏈€鏂板竷灞€淇℃伅鐨勮妭鐐規(guī)病鏈夊緟鎵ц鐨勫姩浣滐紝涔熶細(xì)瑙﹀彂閲嶆帓銆?/p>

鎵€浠ワ紝灝介噺灝嗕慨鏀瑰厓绱犳牱寮忕殑鎿嶄綔鏀懼湪涓€璧鳳紝鐒跺悗鍐嶆墽琛岃幏鍙栧厓绱犳渶鏂板竷灞€淇℃伅鐨勬搷浣滐紝灝介噺涓嶈浜ゅ弶榪涜錛屽洜涓烘瘡嬈¤幏鍙栧厓绱犵殑鏈€鏂板竷灞€淇℃伅錛岄兘灝嗚Е鍙戦噸鎺掑拰閲嶇粯鎿嶄綔銆?/p>

铏界劧錛岀幇浠f祻瑙堝櫒榪涜浜?jiǎn)浼樺寲锛岒q朵笉浼?xì)鍦ㄦ瘡娆¤畡〗厓绱犵殑鏍峰紡鎴栨敼鍙榙om鐨勭粨鏋勬椂閮戒細(xì)閲嶇粯鍜岄噸鎺掞紝錛屼絾鏃х増嫻忚鍣ㄤ粛浼?xì)鏈夋€ц兘闂錛屾墍浠ュ敖閲忕敤浠ヤ笅瑙勫垯鏉ユ渶灝忓寲閲嶇粯鍜岄噸鎺掞細(xì)
1錛?璁劇疆鏍峰紡錛氫嬌鐢╟ssText灞炴€ф潵鍚堝茍鏇存柊鐨勬牱寮忎俊鎭細(xì) el.style.cssText=”padding-left:10px;border:1px”
2錛?鏀瑰彉dom緇撴瀯錛氬皢鍏冪礌鑴辯鏂囨。嫻侊紝鐒跺悗榪涜涓€緋誨垪鏀瑰彉錛岀劧鍚庡啀甯﹀洖鏂囨。嫻佷腑錛屾柟娉曞涓嬶細(xì)
(1) 闅愯棌鍏冪礌錛屽鍏冪礌鐨刣om緇撴瀯榪涜涓€緋誨垪鏇存敼錛屽啀鏄劇ず鍏冪礌
(2) 浣跨敤createDocumentFragment鍒涘緩鏂囨。紕庣墖錛岄拡瀵規(guī)枃妗g鐗囪繘琛屾壒閲忔搷浣滐紝鐒跺悗涓€嬈℃€ф坊鍔犲埌鏂囨。涓?br />(3) 灝嗗師濮嬪厓绱燾lone鍒頒竴涓劚紱繪枃妗f祦鐨勮妭鐐逛腑錛屼慨鏀硅繖涓壇鏈悗錛屾浛鎹㈠師濮嬪厓绱?br />3錛?緙撳瓨甯冨眬淇℃伅
灝介噺鍑忓皯甯冨眬淇℃伅鐨勮幏鍙栨鏁幫紝濡傛灉鏈夐拡瀵瑰竷灞€淇℃伅鐨勮凱浠f搷浣滐紝鍏堝皢甯冨眬淇℃伅淇濆瓨鍒板眬閮ㄥ彉閲忎腑錛屽璇ュ眬閮ㄥ彉閲忚繘琛岃凱浠f洿鏂幫紝鐒跺悗灝嗚灞€閮ㄥ彉閲忔洿鏂板埌dom涓?br />4錛?鍔ㄧ敾鏁堟灉鏃惰劚紱繪枃妗f祦
  涓€涓厓绱犺繘琛屽姩鐢繪晥鏋滄椂錛?br />(1) 灝嗚鍏冪礌鑴辯鏂囨。嫻侊紝姣斿緇濆瀹氫綅璇ュ厓绱?br />(2) 瀵硅鍏冪礌榪涜鍔ㄧ敾鎿嶄綔錛岃繖鏍蜂笉浼?xì)瑙﹀彂鍏朵粬鍖哄煙鐨勯噸鎺掑拰閲嵕l?br />(3) 鍔ㄧ敾緇撴潫鏃訛紝灝嗗厓绱犳仮澶嶆枃妗f祦浣嶇疆錛岃繖鏍峰彧浼?xì)瀵瑰叾浣欏尯鍩煒q涜涓€嬈¢噸鎺掑拰閲嶇粯

3 浣跨敤浜嬩歡濮旀墭鏉ュ噺灝慸om鏍?wèi)涓婄殑浜嬩欢鍝嶅簲鍑芥?br />瀵規(guī)枃妗d腑澶ч噺鐨勫厓绱犺繘琛屼簨浠剁粦瀹氫細(xì)瀵艱嚧榪愯鏃舵晥鐜囦笅闄嶏紝鍩轟簬浜嬩歡閮戒細(xì)鍐掓場(chǎng)鍒扮埗灞傦紝鍙互鍦ㄧ埗灞備笂緇戝畾涓€涓簨浠訛紝鐒跺悗璇嗗埆target(srcElement)鏉ヨ嚜琛宒ispatch浜嬩歡銆?/p>

鍥?綆楁硶鍜屾祦紼嬫帶鍒?/strong>
1 寰幆
1) while,for,do-while鎬ц兘涓婂熀鏈病宸埆錛屼笉榪噖hile鍜宒o-while涓€鑸鐢ㄤ簬鍩轟簬鏌愪釜鏉′歡鐨勫驚鐜紝鑰宖or鐢ㄤ簬鏁扮粍鐨勮凱浠f垨綰挎€х殑宸ヤ綔錛岃€宖or-in鐢ㄤ簬瀵硅薄鐨勬灇涓?br />2錛夊噺灝戝驚鐜鏁版垨鍑忓皯寰幆涓殑宸ヤ綔閲忛兘鍙互浼樺寲鎬ц兘錛屽duff寰幆錛屼絾鎬ц兘鎻愬崌寰箮鍏跺井錛屽疄闄呮祴璇曪紝鍦ㄦ煇浜涙祻瑙堝櫒涓媎uff寰幆涓嶄粎涓嶄細(xì)鎻愬崌鎬ц兘錛岃繕浼?xì)闄嶄綆鎬ц兘錛屽彟澶栧€掑簭寰幆鍙兘浼?xì)蹇竴浜涳紝姣曠珶姝e簭鏄笌闀垮害榪涜瀵規(guī)瘮鍚庣殑boolean鍊鹼紝鑰屽€掑簭寰幆鏄皢琛ㄧず褰撳墠寰幆榪涘害鐨勬暟鍊艱漿鎹負(fù)boolean
3) 榪唬鍣ㄥjs1.6鐨刦orEach鏂規(guī)硶絳夛紝鎬ц兘姣旂敤for榪涜寰幆瑕佹參涓€浜涳紝浣嗘洿璇箟鍖?br />闄?鎴戝啓鐨勪竴涓猟uff寰幆鐨刯s鐗堟湰)

  1. //娉?duff鐨勫師鐞嗘槸鍑忓皯寰幆嬈℃暟錛屼粠鑰屽噺灝戝寰幆鏉′歡鐨勫垽鏂紝鎵€浠uff鐨勬€ц兘浼樺寲鍙瓚呭ぇ鏁扮粍(10涓囨鏉′歡鍒ゆ柇浼?xì)闄嶄綆湄?fù)10涓?8嬈℃潯浠跺垽鏂?鏈夋剰涔夛紝涓庡驚鐜綋涓殑璇彞鏁伴噺鏃犲叧錛屾墍浠ワ紝duff鍙€傜敤浜庡驚鐜綋鎵ц閫熷害闈炲父蹇紝鑰屽驚鐜妯¢潪甯稿ぇ鐨勭姸鍐碉紝鍦╦s涓彧鏈夌暐寰殑鎬ц兘鎻愬崌
  2. function duff(list,callback){
  3.     var i = list.length % 8;
  4.     var tails = i;
  5.     while(i){
  6.         callback(list[--i]);
  7.     }
  8.     var greatest_factor = list.length-1;
  9.     do{
  10.         process(list[greatest_factor]);
  11.         process(list[greatest_factor-1]);
  12.         process(list[greatest_factor-2]);
  13.         process(list[greatest_factor-3]);
  14.         process(list[greatest_factor-4]);
  15.         process(list[greatest_factor-5]);
  16.         process(list[greatest_factor-6]);
  17.         process(list[greatest_factor-7]);
  18.         greatest_factor-=8;
  19.     }while(greatest_factor>tails);
  20. }

2 鏉′歡璇彞
1)switch姣攊f-else蹇竴浜涳紝浣嗘€ц兘寰箮鍏跺井錛屽緩璁湪鏁伴噺杈冨鐨勫垎鏀椂浣跨敤switch錛岃€岃繘琛岃寖鍥村垽鏂垨澶氶噸鏉′歡鐨勬椂鍊欎嬌鐢╥f-else
2)if-else鐨勬帓鍒椾粠澶ф鐜囧悜灝忔鐜?br />3)濡傛灉鏉′歡澶錛屽緩璁嬌鐢ㄦ煡鎵捐〃錛岃€屼笖鏌ユ壘琛ㄥ叿鏈夊姩鎬佹墿鍏呯殑鑳藉姏
3 閫掑綊
1) 鐢變簬璋冪敤鏍堢殑闄愬埗錛岄€掑綊鏄緢鍗遍櫓鐨?br />2) 闈炶嚜璋冪敤錛岃€屾槸浜ゅ弶璋冪敤褰㈡垚鐨?#8220;闅愪紡閫掑綊”鏄緢鍗遍櫓鐨勶紝鍑洪敊涔嬪悗寰堥毦鎺掗敊
3) 灝介噺灝嗛€掑綊杞寲涓鴻凱浠o紝姣斿鏍?wèi)鐨勯亶鍘嗗Q岀敤闈為€掑綊鐨刣fs,bfs鏉ュ疄鐜板氨濂?br />4) 寰堝父鐢ㄧ殑鍑芥暟錛岃繘琛宮emoize,鐢ㄧ┖闂存崲鍙栨椂闂?/p>

浜?瀛楃涓插拰姝e垯琛ㄨ揪寮?/strong>

1 鐞嗚В鍚勪釜嫻忚鍣ㄧ殑js寮曟搸瀛楃涓插悎騫剁殑鍐呴儴鏈哄埗錛?br />1) 閬垮厤浜х敓涓存椂瀛楃涓詫紝濡傜敤str+=’abc’;str+=’def’  鑰屼笉瑕佺敤 str+=’abc’+'def’
2) firefox浼?xì)鍦ň~栬瘧鏈熷悎騫跺瓧絎︿覆甯擱噺錛屽str+= ‘abc’+'def’浼?xì)琚浆鍖栦负str+=’abcdef’錛寉ur-compressor涔熸湁榪欎釜鍔熻兘
3) 鏁扮粍鐨刯oin鏂規(guī)硶錛屾€ц兘涓嶄細(xì)姣?榪炴帴絎︽洿蹇紝鍥犱負(fù)澶у鏁版祻瑙堝櫒鐨?榪炴帴絎︿笉浼?xì)寮€杈熸柊鍐呭瓨絀洪棿錛岃€宨e7,ie6鍗翠細(xì)寮€杈熸柊絀洪棿錛屾墍浠e6,7涓瓧絎︿覆榪炴帴搴旇鐢ㄦ暟緇勭殑join錛岃€屽叾浠栨祻瑙堝櫒鐢?榪炴帴絎︼紝錛宑oncat鏂規(guī)硶鏄渶鎱㈢殑鏂瑰紡

2 姝e垯琛ㄨ揪寮忎紭鍖?br />鍩轟簬鍚刯s寮曟搸涓鍒欒〃杈懼紡寮曟搸鐨勪笉鍚岋紝浠ヤ笅鏌愪簺鏂規(guī)硶浼?xì)甯︽潵鏌愬紩鎿庢€ц兘鐨勬彁鍗囦絾鍙兘鍚屾牱瀵艱嚧鍏朵粬寮曟搸鎬ц兘鐨勪笅闄嶏紝鎵€浠ュ師涔﹀師鏂囦篃鍙槸鍘熺悊鎬ч槓榪幫紝瀹為檯寮€鍙戞椂瑙嗗叿浣撴儏鍐佃€屽畾銆?br />1) 寰幆涓嬌鐢ㄧ殑姝e垯瀵硅薄灝介噺鍦ㄥ驚鐜墠鍒濆鍖栵紝騫惰祴浜堜竴涓彉閲?br />2) 緙栧啓姝e垯琛ㄨ揪寮忔椂錛屽敖閲忚€冭檻杈冨皯鐨勫洖婧紝姣斿緙栧啓鍒嗘敮鏃跺皢澶ф鐜囧垎鏀斁鍦ㄥ墠闈紝鍦ㄨ椽濠ā寮忔槸浠庡熬閮ㄥ悜鍓嶅洖婧紝鎳掓儼妯″紡浠巋eadPart鍚戝熬閮ㄩ€愬瓧絎﹀洖婧?br />3) 鍏充簬鍥炴函澶辨帶錛岃搗鍥犳槸澶娉涚殑鍖歸厤妯″紡錛屽鏈€鍚庣殑part娌¤兘鎴愬姛鍖歸厤錛屽垯浼?xì)璁颁綇鍥炴函浣嵕|紝灝濊瘯淇敼鍓嶉潰鐨刾art鐨勫尮閰嶆柟寮忥紝濡傚皾璇曡鍓嶉潰鐨勬噿鎯版ā寮忓寘鍚竴嬈ndPart錛岀劧鍚庝粠鏂頒綅緗啀灝濊瘯鍖歸厤錛屾鍒欏紩鎿庝細(xì)涓€鐩村皾璇曪紝鏈€緇堝鑷村洖婧け鎺?br />4) 鍦ㄥ彧鏄悳绱㈢‘瀹氱殑瀛楅潰閲忥紝鍙?qiáng)瀛楅潰閲忎綅缃篃纭畾濡傝棣栧Q岃灝劇瓑錛屾鍒欓潪鏈€浣?jīng)_伐鍏?br />(璇︾粏鐨勬鍒欎紭鍖栧厛鐣ヨ繃錛岀瓑浠ュ悗鍐嶅洖鏉ュ啓鍚?

鍏?蹇€熷搷搴旂敤鎴風(fēng)晫闈?/strong>

1 嫻忚鍣║I綰跨▼鍜孶I闃熷垪
UIThread:javascript鍜寀i鏄叡鐢ㄥ悓涓€涓嚎紼嬬殑錛岃繖鏍峰仛鐨勫ソ澶勬槸鏃犻渶鑰冭檻榪愯鏃剁殑鐢ㄦ埛鎬佹垨鏍稿績(jī)鎬佺殑綰跨▼鍚屾錛屼篃鏃犻渶鍦ㄨ璦€灞傞潰瀹炵幇涓寸晫鍖?critical section)錛屽湪鎴戞渶鍒濊嚜宸辨懜绱avascript鐨勬椂鍊欙紝璁や負(fù)javascript涔熸槸澶氱嚎紼嬬殑錛屽悗鏉ュ啓浠g爜嫻嬭瘯鍚庡彂鐜幫紝javascript騫墮潪澶氱嚎紼嬶紝涓攋avascript浠g爜鐨勬墽琛屼細(xì)闃誨鍜寀i鍏辯敤鐨勮繖鍞竴鐨勭嚎紼嬶紝浣跨敤鎴風(fēng)殑鎿嶄綔寰椾笉鍒皍i鐨勫弽棣堛€?/p>

UIQueue:涓婇潰鐨刄IThread璐熻矗鎵цUIQueue涓殑task錛屾棤璁虹敤鎴峰UI閲囧彇鐨勫姩浣滆Е鍙戠殑dom浜嬩歡鍝嶅簲鍑芥暟錛岃繕鏄痡avascript鎵ц榪囩▼涓敤setTimeout鎴杝etInterval鍒涘緩鐨勫畾鏃跺櫒浜嬩歡鍝嶅簲鍑芥暟錛岄兘浼?xì)琚彃鍏ュ埌UIQueue涓紝褰揢IThread澶勪簬busy鐘舵€佹椂錛屽彲鑳戒細(xì)蹇界暐鎺変竴浜泃ask錛屼笉緗叆UIQueue錛屾瘮濡傜敤鎴峰姩浣滅殑浜х敓鐨剈i鏇存柊task鍜岃Е鍙戠殑dom-event涓よ€咃紝ui鏇存柊鐨則ask浼?xì)琚拷鐣ヤ笉鏀惧叆UIQueue錛岃€宒om-event浼?xì)鏀惧叆UIQueue絳夊緟UIThread澶勪簬idle鐘舵€佹椂鎵ц錛岃€宻etInterval鍑芥暟鐨勫懆鏈熸€у畾鏃跺櫒浜嬩歡錛屼細(xì)瑙哢IQueue涓槸鍚︽湁鐩稿悓鐨勪簨浠跺搷搴斿嚱鏁幫紝濡傛病鏈夋墠浼?xì)灏嗚task緗叆UIQueue銆?br />UIQueue鐨則ask鏉ユ簮錛?br />1) 鐢ㄦ埛鎿嶄綔浜х敓鐨剈i鏇存柊閲嶇粯
2) 鐢ㄦ埛鎿嶄綔瑙﹀彂鐨勭粦瀹氬湪dom涓婄殑javascript浜嬩歡
3) dom鑺傜偣鑷韓鐘舵€佹敼鍙樿Е鍙戠殑緇戝畾鍦ㄨ嚜韜笂鐨刯avascript浜嬩歡錛屽鐨刼nload
4) setTimeout涓巗etInterval璁劇疆鐨勫畾鏃跺櫒浜嬩歡
5) ajax榪囩▼涓殑onreadystatechange浜嬩歡錛岃繖涓猨avascript鍑芥暟騫墮潪緇戝畾鍦╠om涓婏紝鑰屾槸緇戝畾鍦▁mlHttpRequest瀵硅薄涓?/p>

嫻忚鍣ㄩ檺鍒訛細(xì)涓轟簡(jiǎn)閬垮厤鏌愪釜javascript浜嬩歡鍑芥暟鎵ц鏃墮棿榪囬暱錛屼竴鐩村崰鎹甎IThread錛屼粠鑰屽鑷寸敤鎴鋒搷浣滆Е鍙戠殑UIUpdate浠誨姟寰椾笉鍒版墽琛岋紝鍚勪釜嫻忚鍣ㄤ嬌鐢ㄤ笉鍚岀殑鏂規(guī)闄愬埗浜?jiǎn)鍗曚釜javascript浜嬩歡鍑芥暟鐨勬墽琛屾椂闂?br />1) ie:500涓囨潯錛屽湪娉ㄥ唽琛ㄦ湁璁劇疆
2) firefox: 10縐掞紝鍦ㄦ祻瑙堝櫒閰嶇疆璁劇疆涓?about:config->dom.max_script_run_time)
3) safari: 5縐掞紝鏃犳硶淇敼
4) chrome: 渚濊禆閫氱敤宕╂簝媯€(gè)嫻嬬郴緇?br />5) opera: 鏃?/p>

鐣岄潰澶氫箙鏃犲弽搴斾細(xì)璁╃敤鎴鋒棤娉曞繊鍙楋細(xì) 鏈€闀?00姣錛岀敤鎴風(fēng)殑鍔ㄤ綔涔嬪悗瓚呰繃100姣鐣岄潰娌℃湁鍋氬嚭鍝嶅簲錛岀敤鎴峰氨浼?xì)璁や给檱繁鍜岀晫闈㈠け鍘讳簡(jiǎn)鑱斁p匯€?/p>

2 鐢ㄥ畾鏃跺櫒璁╁嚭鏃墮棿鐗囨柇(鍒嗚В浠誨姟)
浠誨姟鍒嗚В榪囩▼錛氱敤鎴鋒棤娉曞繊鍙椾竴涓?0縐掔殑浠誨姟鍗犳嵁UI綰跨▼錛岃€岃嚜宸辯殑浠諱綍鎿嶄綔寰椾笉鍒板弽棣堬紝浜庢槸鎴戜滑鍙互灝嗚繖涓?0縐掔殑浠誨姟鍒嗕負(fù)200嬈?0姣鐨勪換鍔★紝姣忔墽琛?0姣錛岃鍑篣I綰跨▼鍘繪墽琛孶I闃熷垪涓殑鐣岄潰鏇存柊鐨勪換鍔★紝璁╃敤鎴峰強(qiáng)鏃跺緱鍒板弽棣堬紝鐒跺悗鍐嶆墽琛?0姣錛岀洿鍒版墽琛屽畬姣曘€?br />鍩轟簬澶у鏁伴暱鏃墮棿UI浠誨姟閮芥槸瀵規(guī)暟緇勭殑寰幆鎿嶄綔錛屼簬鏄垜浠彲浠ュ皢榪欎釜寰幆榪囩▼榪涜鎷嗚В錛岀ず渚嬩唬鐮侊細(xì)

  1. function timedProcessArray(list, callback, complete, progress){
  2.     var total = list.length;
  3.     var curProgress = 0;
  4.     var preProgress = 0;
  5.    
  6.     (function(list, iteration){
  7.         var fn = arguments.callee;
  8.         var st = +new Date();
  9.         while(list.length && (+new Date() - st < 50) ){
  10.             iteration = callback(list.shift(), iteration);
  11.         }
  12.         if(list.length){
  13.             if(progress){ //濡傛灉闇€瑕佸榪涘害榪涜閫氱煡)
  14.                 curProgress = 100 - (100 / total * list.length ^ 0);
  15.                 if(curProgress != preProgress){
  16.                     preProgress = curProgress;
  17.                     progress(curProgress);
  18.                 }
  19.             }
  20.             setTimeout(function(){
  21.                 fn.call(null, list, iteration);
  22.             }, 25);
  23.         }else{
  24.             progress && progress(100);
  25.             complete && complete(iteration);
  26.         }
  27.     })(list.concat(),0);
  28.    
  29. }

闃誨鍜岄潪闃誨(浠誨姟鍒嗗壊)鏂瑰紡鐨勭ず渚嬶紝:http://lichaosoft.net/case/progress.html

3 web-workers
鍦╳eb-workers涔嬪墠錛宩avascript鏄病鏈夊綰跨▼鐨勶紝web-workers鏍囧噯甯︽潵浜?jiǎn)鐪熸鐨勫绾拷E嬶紝web-workers鏈潵鏄痟tml5鐨勪竴閮ㄥ垎錛岀幇鍦ㄥ凡緇忓垎紱誨嚭鍘繪垚涓虹嫭绔嬬殑瑙勮寖錛歨ttp://www.w3.org/TR/workers/

鍜寃eb-workers涔嬮棿浠呰兘閫氳繃onmessage鍜宲ostMessage浜や簰銆?/p>

浣跨敤web-workers浠ヨ緟鍔╃嚎紼嬭繘琛岃綆楀茍鎷ユ湁榪涘害閫氱煡鐨勭ず渚嬶細(xì)
http://lichaosoft.net/case/worker.html錛堣浣跨敤鏀寔web-workers鐨刢hrome鎴杝afari嫻忚錛?/p>

web-workers閫傜敤浜庨偅浜涙棤娉曟媶瑙g殑浠誨姟錛屽鏁扮粍鐨勯亶鍘嗘槸涓€涓彲浠ヨ鎷嗚В鐨勪換鍔★紝瀵規(guī)爲(wèi)鐨勯亶鍘嗛€氳繃浣跨敤dfs鎴朾fs灝嗘爲(wèi)騫沖潶鍖栦負(fù)鏁扮粍鍚庝篃鍙互榪涜鎷嗚В錛屼笉鑳芥媶瑙g殑浠誨姟:
1) 緙栫爜/瑙g爜澶у瓧絎︿覆
2) 澶嶆潅鏁板榪愮畻
3) 澶ф暟緇勬帓搴?/p>

瓚呰繃100姣鐨勪換鍔★紝濡傛祻瑙堝櫒鏀寔web-workers錛屼紭鍏堜嬌鐢╳eb-workers錛屽涓嶆敮鎸佸垯浣跨敤timedProcessArray榪涜鍒嗗壊榪愯銆?/p>

娌℃湁浠諱綍javascript浠g爜鐨勯噸瑕佸害楂樹簬鐢ㄦ埛浣撻獙錛岀敤鎴蜂綋楠屾槸鑷抽珮閲嶈鐨勶紝鏃犺濡備綍涓嶈兘璁╃敤鎴瘋寰楃晫闈㈠弽搴旈€熷害鎱€€?/p>

涓?AJAX
浠庡箍涔変笂鏉ョ湅錛孉JAX鏄寚涓嶉噸杞芥暣涓〉闈㈢殑鎯呭喌涓嬶紝涓庢湇鍔$榪涜鏁版嵁浼犺緭錛岃В鏋愭暟鎹紝騫跺眬閮ㄥ埛鏂伴〉闈㈠尯鍩熺殑鏀瑰杽鐢ㄦ埛浣撻獙鐨勮涓猴紝閭d箞鎴戜滑涓嬮潰浠嬬粛錛氭暟鎹紶杈擄紝鏁版嵁鏍煎紡銆?/p>

1 鏁版嵁浼犺緭
1) XHR: 鍒涘緩涓€涓猉MLHttpRequest瀵硅薄涓庢湇鍔$閫氫俊
2) 鍔ㄦ€佽剼鏈敞鍏? 榪欐槸涓€涓猦ack錛屽垱寤轟竴涓猻cript鍏冪礌騫惰緗畇rc涓轟換鎰弖ri-A(鍙法鍩?錛屽彲鍦ㄩ〉闈腑鍏堝畾涔変竴涓暟鎹鐞嗗嚱鏁板function newsListProc(list){}錛岀劧鍚庡湪璇ri-A鎸囧悜鐨剆cript鏂囦歡涓皟鐢╪ewsListProc騫跺皢鏁版嵁浼犲叆錛岃繖欏規(guī)妧鏈篃縐頒負(fù)錛欽SON-P銆?br />3) mXHR: 灝嗗涓祫婧愭枃浠朵嬌鐢╔HR浼犺緭鍒版祻瑙堝櫒绔紝js璐熻矗瀵規(guī)暟鎹祦鍒嗗壊錛岀劧鍚巇ispath緇欎笉鍚岀被鍨嬭祫婧愭枃浠剁殑澶勭悊鍑芥暟
4) 嫻佸紡XHR: 鍦ㄦ敮鎸乺eadyState涓?鏃訛紝鍙闂凡瑙f瀽濂界殑閮ㄥ垎xhr鏁版嵁錛屾棦鏄敮鎸佹祦寮廥HR錛屽彲榪涜嫻佸紡澶勭悊鏉ヤ紭鍖栨墽琛屾晥鐜囷紝鐩墠瀹為檯嫻嬭瘯ff3.6鏀寔錛岃€宨e6,7,8鍙?qiáng)chrome閮戒笉鏀寔嫻佸紡XHR銆?br />5) iframes: 寰呯畫
6) comet: 寰呯畫

娉?錛氬叧浜巑XHR鍜屾祦寮廥HR錛屾垜鍐欎簡(jiǎn)涓€涓猟emo鐢ㄦ潵婕旂ず澶氳祫婧愭枃浠跺悎騫訛紝鐢盭HR鍚戝鎴風(fēng)浼犺緭錛屽茍鍦ㄦ敮鎸佹祦寮廥HR鐨勬祻瑙堝櫒涓嬌鐢ㄦ祦寮廥HR錛孌EMO鍦板潃錛?/p>

娉?錛氱函綺圭殑鍙戦€佹暟鎹€屾棤闇€鎺ュ彈鏁版嵁錛屽彲鐢╞eacons鏂瑰紡錛岀被浼煎姩鎬佽剼鏈敞鍏ワ紝涓嶈繃鍒涘緩鐨勪笉鏄痵cript鍏冪礌錛岃€屾槸Image瀵硅薄錛屽茍璁劇疆src涓鴻璇鋒眰鐨刄RI錛屾墍浠ヨ繖縐嶆柟寮忓彧鑳戒嬌鐢℅ET鏂瑰紡錛屼唬鐮佺ず渚?

  1. function keepalive(uri, delay){
  2.     var beacon, delay = delay || 1000,
  3.     timer = setTimeout(function(){
  4.         var fn = arguments.callee;
  5.         beacon = new Image();
  6.         beacon.onload = beacon.onerror = function(){
  7.             timer = setTimeout(fn, delay);
  8.         }
  9.         beacon.src = uri;
  10.     }, delay);
  11.     return function(){
  12.         console.log('stop');
  13.         clearTimeout(timer);
  14.     };
  15. }

2 鏁版嵁鏍煎紡
1) XML: 浣跨敤responseXML瀵硅薄鐨刧etElementsByTagName,getElementById,node.getAttribute絳塧pi瀵箈ml鏂囨。榪涜瑙f瀽錛屼篃鍙互鐢╔Path榪涜瑙f瀽錛屾€ц兘鏇村ソ浜涳紝紜激鏄細(xì)
(1) “緇撴瀯/鏁版嵁”姣?澶珮
(2) XPath鍦ㄦ敮鎸佸茍涓嶅箍娉?br />(3) 鏈€閲嶈鐨勫氨鏄渶瑕佸厛鐭ラ亾鍐呭鐨勮緇嗙粨鏋勶紝閽堝姣忎釜鏁版嵁緇撴瀯緙栧啓鐗瑰畾鐨勮В鏋愭柟娉?br />2) JSON: 鏈€騫挎硾鐨勬暟鎹牸寮忥紝瑙f瀽鎬ц兘杈冧箣xml楂橈紝”緇撴瀯/鏁版嵁”姣斾綆錛屽浣跨敤緙╃暐灞炴€у悕鎴栧畬鍏ㄤ嬌鐢ㄥ灞傛暟緇勬牸寮忥紝緇撴瀯鏁版嵁姣旀洿浣庯紝浼犺緭鎬ц兘鏇撮珮
3) JSON-P: 鏃犻渶瑙f瀽錛屽睘浜巎avascript鐨勬甯稿嚱鏁拌皟鐢紝鎬ц兘鏈€楂?br />4) HTML: 鏃犻渶瑙f瀽錛屾湇鍔$宸叉瀯閫犲ソ鐢ㄤ簬灞€閮ㄦ洿鏂扮殑html鏁版嵁錛岀洿鎺ョ敤innerHTML鏇存柊錛屾暟鎹粨鏋勬瘮澶珮錛屽帇鍔涜闆嗕腑鍦ㄦ湇鍔$錛岀綉緇滀紶杈撴暟鎹噺楂?br />5) 鑷畾涔夊垎闅旂: 鎬ц兘鏈€楂橈紝緇撴瀯鏁版嵁姣旀渶浣庯紝瀵逛簬鎬ц兘瑕佹眰姣旇緝鑻涘埢鐨勭幆澧冧腑浣跨敤

闄?鍒涘緩xhr瀵硅薄鐨勪唬鐮侊細(xì)

  1. function createXhrObject(){
  2.     if(window.XMLHttpRequest){
  3.         return new XMLHttpRequest();
  4.     }else{
  5.         var msxml_progid = [
  6.             'MSXML2.XMLHTTP.6.0', //鏀寔readyState鐨?鐘舵€侊紝浣嗘鐘舵€佹椂璇誨彇responseText涓虹┖錛岃寰椾技涔庢病鎰忎箟銆傘€?/span>
  7.             'MSXML3.XMLHTTP',
  8.             'Microsoft.XMLHTTP',
  9.             'MSXML2.XMLHTTP.3.0'
  10.         ];
  11.         var req;
  12.         for(var i=0;i<msxml_progid.length;i++){
  13.             try{
  14.                 req = new ActiveXObject(msxml_progid[i]);
  15.                 break;
  16.             }catch(ex){}
  17.         }
  18.         return req;
  19.     }
  20. }

浠庡瓧絎︽祦涓紓姝ヨВ鏋愭暟鎹殑宸ュ叿綾?/p>

  1. /*
  2. * @method StringStreamParser 嫻佸紡瀛楃涓插紓姝ヨВ鏋愮被
  3. * @param onRow 瑙f瀽鍑烘暟鎹鐨勫洖璋冨嚱鏁?/span>
  4. * @param RowSeperator 琛屽垎闅旂,榛樿'u0001'
  5. * @param ColSeperator 鍒楀垎闅旂,榛樿'u0002'
  6. */
  7. function StringStreamParser(onRow, rowSeperator, colSeperator){
  8.     if (!(this instanceof arguments.callee)){
  9.         return new arguments.callee(onRow, rowSeperator, colSeperator);
  10.     }
  11.     var stream = '';                               
  12.     rowSeperator = rowSeperator || 'u0001';
  13.     colSeperator = colSeperator || 'u0002';
  14.    
  15.     /* @method write 鍚戝瓧絎︽祦鍐欏叆鍖?/span>
  16.      * @param packet 鍐欏叆鐨勫寘
  17.      * @param lastPacket 鏄惁涓烘渶鍚庝竴涓寘錛岄粯璁alse
  18.      */
  19.     this.write = function(packet, lastPacket){
  20.         stream += packet;
  21.         var rowIdx = stream.indexOf(rowSeperator);
  22.         var colIdx,strRow, dataRow;
  23.        
  24.         while(rowIdx!==-1 || lastPacket){
  25.        
  26.             if(rowIdx===-1){   
  27.                 strRow = stream.substr(0);
  28.                 lastPacket = false;
  29.             }else{
  30.                 strRow = stream.substr(0,rowIdx);
  31.                 stream = stream.substr(rowIdx+1);
  32.                 rowIdx = stream.indexOf(rowSeperator);                   
  33.             }
  34.            
  35.             dataRow = [];
  36.             while(colIdx = strRow.indexOf(colSeperator)){
  37.                 if(colIdx !== -1){
  38.                     dataRow.push(strRow.substr(0, colIdx));
  39.                     strRow = strRow.substr(colIdx+1);
  40.                 }else{
  41.                     dataRow.push(strRow.substr(0));
  42.                     break;
  43.                 }
  44.             }
  45.             onRow.call(null, dataRow);
  46.            
  47.         }
  48.     }
  49. }

3 鍏朵粬
鍦ㄧ‘瀹氫簡(jiǎn)鍚堥€傜殑鏁版嵁浼犺緭鎶€鏈紝鍜屾暟鎹紶杈撴牸寮忎箣鍚庯紝榪樺彲浠ラ噰鍙栦互涓嬫柟寮忛厡鎯呬紭鍖朼jax:
1) 緙撳瓨鏁版嵁: 鏈€蹇殑璇鋒眰錛屾槸涓嶈姹傦紝鏈変互涓嬩袱縐嶆柟寮忕紦瀛?
  (1) 瀵逛簬GET璇鋒眰錛屽湪response涓紝璁劇疆expires澶翠俊鎭紝嫻忚鍣ㄥ嵆浼?xì)灏嗘璇锋眰缂撳瓨锛寴q欑緙撳瓨鏄法浼?xì)璇濅篃鏄法椤甸潰鐨?br />(2) 鍦╦avascript涓紝浠rl浣滀負(fù)鍞竴鏍囪瘑絎︾紦瀛樿姹傚埌鐨勬暟鎹紝鏃犳硶璺ㄩ〉闈篃鏃犳硶璺ㄤ細(xì)璇濓紝浣嗗彲緙栫▼鎺у埗緙撳瓨榪囩▼錛堜笉鑳借法浼?xì)璇濅篃涓嶈兘璺宓闈㈠Q岃繖縐嶇紦瀛樺熀鏈笂鏄棤鎰忎箟鐨勶級(jí)
2) 鍦ㄥ繀瑕佺殑鏃跺€欙紝鐩存帴浣跨敤XHR瀵硅薄鑰岄潪ajax搴擄紝濡傞渶瑕佹祦寮忕殑鏁版嵁澶勭悊

鍏?甯歌緙栫爜涓殑鎬ц兘鎻愰珮鐐?br />1 閬垮厤鍙岄噸姹傚€? eval,Function,setTimeout鍜宻etInterval閮藉厑璁鎬紶鍏ュ瓧絎︿覆錛岃€屾鏃朵細(xì)鍒涘緩涓€涓柊鐨勭紪璇戝櫒鐨勫疄渚嬶紝灝嗕細(xì)瀵艱嚧寰堝ぇ鐨勬€ц兘鎹熷け銆?鍙﹀榪欎簺鏂瑰紡鎵ц浠g爜鏃訛紝浠g爜鐨勪綔鐢ㄥ煙鍦ㄥ悇涓祻瑙堝櫒涔熶笉灝界浉鍚岋紝瀹規(guī)槗鎺夊潙)
2 浣跨敤Object/Array鐨勭洿鎺ラ噺榪涜瀹氫箟(涓旂洿鎺ラ噺姣攏ew Object()鐒跺悗璁劇疆灞炴€ф洿鑺傜渷浠g爜)
3 涓嶈璁╀唬鐮侀噸澶嶈繍琛?br />1) 寤惰繜瀹氫箟

2) 鏉′歡棰勫畾涔?br />4 灝介噺浣跨敤鍘熺敓javascript
杞澆鑷細(xì)http://www.cnblogs.com/pansly/archive/2011/06/29/2093769.html



鐤媯 2011-10-09 11:56 鍙戣〃璇勮
]]>
杞澆涓€綃囨枃绔爋racle鐨勪竴浜涙搷浣?/title><link>http://www.aygfsteel.com/freeman1984/archive/2011/08/03/355643.html</link><dc:creator>鐤媯</dc:creator><author>鐤媯</author><pubDate>Wed, 03 Aug 2011 02:33:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2011/08/03/355643.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/355643.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2011/08/03/355643.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/355643.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/355643.html</trackback:ping><description><![CDATA[     鎽樿: 杞嚜: http://renjie120.iteye.com/ 娉ㄦ剰:鏁版嵁搴撶増鏈槸10g,涓嶈繃澶ч儴鍒?i鐨勪篃閫傜敤,闂洖9i灝辨病鏈?   1.鏇劇粡涓嶅皬蹇?jī)鎶婂紑鍙戝簱鐨勬暟鎹簱琛ㄥ叏閮ㄥ垹闄わ紝褰撴椂鍚撶殑瑕佹銆傜粨鏋滄壘鍒頒笅闈㈢殑璇彞鎭㈠鍒頒簡(jiǎn)1涓皬鏃朵箣鍓嶇殑鏁版嵁錛佸緢綆€鍗曘€?娉ㄦ剰浣跨敤綆$悊鍛樼櫥褰曠郴緇燂細(xì) select * from 琛ㄥ悕 as of timestamp sysdate-1/12&...  <a href='http://www.aygfsteel.com/freeman1984/archive/2011/08/03/355643.html'>闃呰鍏ㄦ枃</a><img src ="http://www.aygfsteel.com/freeman1984/aggbug/355643.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">鐤媯</a> 2011-08-03 10:33 <a href="http://www.aygfsteel.com/freeman1984/archive/2011/08/03/355643.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>榪噕$sqlarea,v$sql鏌ヨ鏈€鍗犵敤璧勬簮鐨勬煡璇?/title><link>http://www.aygfsteel.com/freeman1984/archive/2011/08/03/355634.html</link><dc:creator>鐤媯</dc:creator><author>鐤媯</author><pubDate>Wed, 03 Aug 2011 01:47:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2011/08/03/355634.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/355634.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2011/08/03/355634.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/355634.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/355634.html</trackback:ping><description><![CDATA[<div><span style="color: #0000ff">浠嶸$SQLAREA涓煡璇㈡渶鍗犵敤璧勬簮鐨勬煡璇?/span></div> <div>select b.username username,a.disk_reads reads,<br />    a.executions exec,a.disk_reads/decode(a.executions,0,1,a.executions) rds_exec_ratio,<br />    a.sql_text Statement<br />from  v$sqlarea a,dba_users b<br />where a.parsing_user_id=b.user_id<br /> and a.disk_reads > 100000<br />order by a.disk_reads desc;</div> <div>鐢╞uffer_gets鍒楁潵鏇挎崲disk_reads鍒楀彲浠ュ緱鍒板崰鐢ㄦ渶澶氬唴瀛樼殑sql璇彞鐨勭浉鍏充俊鎭€?/div> <div> </div> <div>V$SQL鏄唴瀛樺叡浜玈QL鍖哄煙涓凡緇忚В鏋愮殑SQL璇彞銆?/div> <div><br /><span style="color: #0000ff">鍒楀嚭浣跨敤棰戠巼鏈€楂樼殑5涓煡璇細(xì)</span> </div> <div>select sql_text,executions<br />from (select sql_text,executions,<br />   rank() over<br />    (order by executions desc) exec_rank<br />   from v$sql)<br />where exec_rank <=5;</div> <div><span style="color: #0000ff">娑堣€楃鐩樿鍙栨渶澶氱殑sql top5錛?br /></span>select disk_reads,sql_text<br />from (select sql_text,disk_reads,<br />   dense_rank() over<br />     (order by disk_reads desc) disk_reads_rank<br />   from v$sql)<br />where disk_reads_rank <=5;</div> <div><br /><span style="color: #0000ff">鎵懼嚭闇€瑕佸ぇ閲忕紦鍐茶鍙栵紙閫昏緫璇伙級(jí)鎿嶄綔鐨勬煡璇細(xì)</span> </div> <div>select buffer_gets,sql_text<br />from (select sql_text,buffer_gets,<br />   dense_rank() over<br />     (order by buffer_gets desc) buffer_gets_rank<br />   from v$sql)<br />where buffer_gets_rank<=5;</div><img src ="http://www.aygfsteel.com/freeman1984/aggbug/355634.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">鐤媯</a> 2011-08-03 09:47 <a href="http://www.aygfsteel.com/freeman1984/archive/2011/08/03/355634.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>JVM鍐呭瓨妯″瀷浠ュ強(qiáng)鍨冨溇鍥炴敹http://www.aygfsteel.com/freeman1984/archive/2011/03/08/345929.html鐤媯鐤媯Tue, 08 Mar 2011 05:16:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/03/08/345929.htmlhttp://www.aygfsteel.com/freeman1984/comments/345929.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/03/08/345929.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/345929.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/345929.htmlJVM鍐呭瓨妯″瀷浠ュ強(qiáng)鍨冨溇鍥炴敹
鍐呭瓨鐢?Perm 鍜?Heap 緇勬垚. 鍏朵腑

Heap = {Old + NEW = { Eden , from, to } }
鍏蜂綋鍙煡鐪媕avavisualvm

JVM鍐呭瓨妯″瀷涓垎涓ゅぇ鍧楋紝涓€鍧楁槸 NEW Generation, 鍙︿竴鍧楁槸Old Generation. 鍦∟ew Generation涓紝鏈変竴涓彨Eden鐨勭┖闂達(dá)紝涓昏鏄敤鏉ュ瓨鏀炬柊鐢熺殑瀵硅薄錛岃繕鏈変袱涓猄urvivor Spaces錛坒rom,to錛? 瀹冧滑鐢ㄦ潵瀛樻斁姣忔鍨冨溇鍥炴敹鍚庡瓨?gòu)z諱笅鏉ョ殑瀵硅薄銆傚湪Old Generation涓紝涓昏瀛樻斁搴旂敤紼嬪簭涓敓鍛藉懆鏈熼暱鐨勫唴瀛樺璞★紝榪樻湁涓狿ermanent Generation錛屼富瑕佺敤鏉ユ斁JVM鑷繁鐨勫弽灝勫璞★紝姣斿綾誨璞″拰鏂規(guī)硶瀵硅薄絳夈€?
 

鍨冨溇鍥炴敹鎻忚堪錛?/p>


鍦∟ew Generation鍧椾腑錛屽瀮鍦懼洖鏀朵竴鑸敤Copying鐨勭畻娉曪紝閫熷害蹇€傛瘡嬈C鐨勬椂鍊欙紝瀛樻椿涓嬫潵鐨勫璞¢鍏堢敱Eden鎷瘋礉鍒版煇涓猄urvivor Space, 褰揝urvivor Space絀洪棿婊′簡(jiǎn)鍚? 鍓╀笅鐨刲ive瀵硅薄灝辮鐩存帴鎷瘋礉鍒癘ld Generation涓幓銆傚洜姝わ紝姣忔GC鍚庯紝Eden鍐呭瓨鍧椾細(xì)琚竻絀恒€傚湪Old Generation鍧椾腑錛屽瀮鍦懼洖鏀朵竴鑸敤mark-compact鐨勭畻娉曪紝閫熷害鎱簺錛屼絾鍑忓皯鍐呭瓨瑕佹眰.
鍨冨溇鍥炴敹鍒嗗綰э紝0綰т負(fù)鍏ㄩ儴(Full)鐨勫瀮鍦懼洖鏀訛紝浼?xì)鍥炴敹OLD孌典腑鐨勫瀮鍦撅紱1綰ф垨浠ヤ笂涓洪儴鍒嗗瀮鍦懼洖鏀訛紝鍙細(xì)鍥炴敹NEW涓殑鍨冨溇錛屽唴瀛樻孩鍑洪€氬父鍙戠敓浜嶰LD孌墊垨Perm孌靛瀮鍦懼洖鏀跺悗錛屼粛鐒舵棤鍐呭瓨絀洪棿瀹圭撼鏂扮殑Java瀵硅薄鐨勬儏鍐點(diǎn)€?/p>

褰撲竴涓猆RL琚闂椂錛屽唴瀛樼敵璇瘋繃紼嬪涓嬶細(xì)
A. JVM浼?xì)璇曞浘湄?fù)鐩稿叧Java瀵硅薄鍦‥den涓垵濮嬪寲涓€鍧楀唴瀛樺尯鍩?br /> B. 褰揈den絀洪棿瓚沖鏃訛紝鍐呭瓨鐢寵緇撴潫銆傚惁鍒欏埌涓嬩竴姝?br /> C. JVM璇曞浘閲婃斁鍦‥den涓墍鏈変笉媧昏穬鐨勫璞★紙榪欏睘浜?鎴栨洿楂樼駭鐨勫瀮鍦懼洖鏀訛級(jí), 閲婃斁鍚庤嫢Eden絀洪棿浠嶇劧涓嶈凍浠ユ斁鍏ユ柊瀵硅薄錛屽垯璇曞浘灝嗛儴鍒咵den涓椿璺冨璞℃斁鍏urvivor鍖?br /> D. Survivor鍖鴻鐢ㄦ潵浣滀負(fù)Eden鍙?qiáng)OLD鐨勪腑闂翠氦鎹㈠尯鍩燂紝褰揙LD鍖虹┖闂磋凍澶熸椂錛孲urvivor鍖虹殑瀵硅薄浼?xì)琚U誨埌Old鍖猴紝鍚﹀垯浼?xì)琚繚鐣欏湪Survivor鍖?br /> E. 褰揙LD鍖虹┖闂翠笉澶熸椂錛孞VM浼?xì)鍦∣LD鍖鴻繘琛屽畬鍏ㄧ殑鍨冨溇鏀墮泦錛?綰э級(jí)
F. 瀹屽叏鍨冨溇鏀墮泦鍚庯紝鑻urvivor鍙?qiáng)OLD鍖轟粛鐒舵棤娉曞瓨鏀句粠Eden澶嶅埗榪囨潵鐨勯儴鍒嗗璞★紝瀵艱嚧JVM鏃犳硶鍦‥den鍖轟負(fù)鏂板璞″垱寤哄唴瀛樺尯鍩燂紝鍒欏嚭鐜?#8221;out of memory閿欒”

JVM璋冧紭寤鴻:

ms/mx錛氬畾涔塝OUNG+OLD孌電殑鎬誨昂瀵革紝ms涓篔VM鍚姩鏃禮OUNG+OLD鐨勫唴瀛樺ぇ灝忥紱mx涓烘渶澶у彲鍗犵敤鐨刌OUNG+OLD鍐呭瓨澶у皬銆傚湪鐢ㄦ埛鐢熶駭鐜涓婁竴鑸皢榪欎袱涓€艱涓虹浉鍚岋紝浠ュ噺灝戣繍琛屾湡闂寸郴緇熷湪鍐呭瓨鐢寵涓婃墍鑺辯殑寮€閿€銆?br /> NewSize/MaxNewSize錛氬畾涔塝OUNG孌電殑灝哄錛孨ewSize涓篔VM鍚姩鏃禮OUNG鐨勫唴瀛樺ぇ灝忥紱MaxNewSize涓烘渶澶у彲鍗犵敤鐨刌OUNG鍐呭瓨澶у皬銆傚湪鐢ㄦ埛鐢熶駭鐜涓婁竴鑸皢榪欎袱涓€艱涓虹浉鍚岋紝浠ュ噺灝戣繍琛屾湡闂寸郴緇熷湪鍐呭瓨鐢寵涓婃墍鑺辯殑寮€閿€銆?br /> PermSize/MaxPermSize錛氬畾涔塒erm孌電殑灝哄錛孭ermSize涓篔VM鍚姩鏃禤erm鐨勫唴瀛樺ぇ灝忥紱MaxPermSize涓烘渶澶у彲鍗犵敤鐨凱erm鍐呭瓨澶у皬銆傚湪鐢ㄦ埛鐢熶駭鐜涓婁竴鑸皢榪欎袱涓€艱涓虹浉鍚岋紝浠ュ噺灝戣繍琛屾湡闂寸郴緇熷湪鍐呭瓨鐢寵涓婃墍鑺辯殑寮€閿€銆?br /> SurvivorRatio錛氳緗甋urvivor絀洪棿鍜孍den絀洪棿鐨勬瘮渚?/p>

鍐呭瓨婧㈠嚭鐨勫彲鑳芥€?/p>

1. OLD孌墊孩鍑?br /> 榪欑鍐呭瓨婧㈠嚭鏄渶甯歌鐨勬儏鍐典箣涓€錛屼駭鐢熺殑鍘熷洜鍙兘鏄細(xì)
1) 璁劇疆鐨勫唴瀛樺弬鏁拌繃灝?ms/mx, NewSize/MaxNewSize)
2) 紼嬪簭闂
鍗曚釜紼嬪簭鎸佺畫榪涜娑堣€楀唴瀛樼殑澶勭悊錛屽寰幆鍑犲崈嬈$殑瀛楃涓插鐞嗭紝瀵瑰瓧絎︿覆澶勭悊搴斿緩璁嬌鐢⊿tringBuffer銆傛鏃朵笉浼?xì)鎶ュ唴瀛樻孩鍑洪敊锛屽嵈浼?xì)浣跨郴緇熸寔緇瀮鍦炬敹闆嗭紝鏃犳硶澶勭悊鍏跺畠璇鋒眰錛岀浉鍏抽棶棰樼▼搴忓彲閫氳繃Thread Dump鑾峰彇錛堣緋葷粺闂璇婃柇涓€绔狅級(jí)鍗曚釜紼嬪簭鎵€鐢寵鍐呭瓨榪囧ぇ錛屾湁鐨勭▼搴忎細(xì)鐢寵鍑犲崄涔冭嚦鍑犵櫨鍏嗗唴瀛橈紝姝ゆ椂JVM涔熶細(xì)鍥犳棤娉曠敵璇峰埌璧勬簮鑰屽嚭鐜板唴瀛樻孩鍑猴紝瀵規(guī)棣栧厛瑕佹壘鍒扮浉鍏沖姛鑳斤紝鐒跺悗浜や簣紼嬪簭鍛樹慨鏀癸紝瑕佹壘鍒扮浉鍏崇▼搴忥紝蹇呴』鍦ˋpache鏃ュ織涓鎵俱€?br /> 褰揓ava瀵硅薄浣跨敤瀹屾瘯鍚庯紝鍏舵墍寮曠敤鐨勫璞″嵈娌℃湁閿€姣侊紝浣垮緱JVM璁や負(fù)浠栬繕鏄椿璺冪殑瀵硅薄鑰屼笉榪涜鍥炴敹錛岃繖鏍風(fēng)瘡璁″崰鐢ㄤ簡(jiǎn)澶ч噺鍐呭瓨鑰屾棤娉曢噴鏀俱€傜敱浜庣洰鍓嶅競(jìng)闈笂榪樻病鏈夊緋葷粺褰卞搷灝忕殑鍐呭瓨鍒嗘瀽宸ュ叿錛屾晠姝ゆ椂鍙兘鍜岀▼搴忓憳涓€璧峰畾浣嶃€?/p>


2. Perm孌墊孩鍑?br /> 閫氬父鐢變簬Perm孌佃杞戒簡(jiǎn)澶ч噺鐨凷ervlet綾昏€屽鑷存孩鍑猴紝鐩墠鐨勮В鍐沖姙娉曪細(xì)
1) 灝哖ermSize鎵╁ぇ錛屼竴鑸?56M鑳藉婊¤凍瑕佹眰
2) 鑻ュ埆鏃犻€夋嫨錛屽垯鍙兘灝唖ervlet鐨勮礬寰勫姞鍒癈LASSPATH涓紝浣嗕竴鑸笉寤鴻榪欎箞澶勭悊

3. C Heap婧㈠嚭
緋葷粺瀵笴 Heap娌℃湁闄愬埗錛屾晠C Heap鍙戠敓闂鏃訛紝Java榪涚▼鎵€鍗犲唴瀛樹細(xì)鎸佺畫澧為暱錛岀洿鍒板崰鐢ㄦ墍鏈夊彲鐢ㄧ郴緇熷唴瀛?/p>

鍏朵粬錛?/p>

JVM鏈?涓狦C綰跨▼銆傜涓€涓嚎紼嬭礋璐e洖鏀禜eap鐨刌oung鍖恒€傜浜屼釜綰跨▼鍦℉eap涓嶈凍鏃訛紝閬嶅巻Heap錛屽皢Young 鍖哄崌綰т負(fù)Older鍖恒€侽lder鍖虹殑澶у皬絳変簬-Xmx鍑忓幓-Xmn錛屼笉鑳藉皢-Xms鐨勫€艱鐨勮繃澶э紝鍥犱負(fù)絎簩涓嚎紼嬭榪繍琛屼細(xì)闄嶄綆JVM鐨勬€ц兘銆?/p>

涓轟粈涔堜竴浜涚▼搴忛綣佸彂鐢烥C錛熸湁濡備笅鍘熷洜錛?br /> l         紼嬪簭鍐呰皟鐢ㄤ簡(jiǎn)System.gc()鎴朢untime.gc()銆?br /> l         涓€浜涗腑闂翠歡杞歡璋冪敤鑷繁鐨凣C鏂規(guī)硶錛屾鏃墮渶瑕佽緗弬鏁扮姝㈣繖浜汫C銆?br /> l         Java鐨凥eap澶皬錛屼竴鑸粯璁ょ殑Heap鍊奸兘寰堝皬銆?br /> l         棰戠箒瀹炰緥鍖栧璞★紝Release瀵硅薄銆傛鏃跺敖閲忎繚瀛樺茍閲嶇敤瀵硅薄錛屼緥濡備嬌鐢⊿tringBuffer()鍜孲tring()銆?br /> 濡傛灉浣犲彂鐜版瘡嬈C鍚庯紝Heap鐨勫墿浣欑┖闂翠細(xì)鏄€葷┖闂寸殑50%錛岃繖琛ㄧず浣犵殑Heap澶勪簬鍋ュ悍鐘舵€併€傝澶歋erver绔殑Java紼嬪簭姣忔GC鍚庢渶濂借兘鏈?5%鐨勫墿浣欑┖闂淬€?br /> 緇忛獙涔嬭皥錛?br /> 1錛嶴erver绔疛VM鏈€濂藉皢-Xms鍜?Xmx璁句負(fù)鐩稿悓鍊箋€備負(fù)浜?jiǎn)浼樺寲GC錛屾渶濂借-Xmn鍊肩害絳変簬-Xmx鐨?/3[2]銆?
2錛庝竴涓狦UI紼嬪簭鏈€濂芥槸姣?0鍒?0縐掗棿榪愯涓€嬈C錛屾瘡嬈″湪鍗婄涔嬪唴瀹屾垚[2]銆?
娉ㄦ剰錛?br /> 1錛庡鍔燞eap鐨勫ぇ灝忚櫧鐒朵細(xì)闄嶄綆GC鐨勯鐜囷紝浣嗕篃澧炲姞浜?jiǎn)姣弸啤GC鐨勬椂闂淬€傚茍涓擥C榪愯鏃訛紝鎵€鏈夌殑鐢ㄦ埛綰跨▼灝嗘殏鍋滐紝涔熷氨鏄疓C鏈熼棿錛孞ava搴旂敤紼嬪簭涓嶅仛浠諱綍宸ヤ綔銆?br /> 2錛嶩eap澶у皬騫朵笉鍐沖畾榪涚▼鐨勫唴瀛樹嬌鐢ㄩ噺銆傝繘紼嬬殑鍐呭瓨浣跨敤閲忚澶т簬-Xmx瀹氫箟鐨勫€鹼紝鍥犱負(fù)Java涓哄叾浠栦換鍔″垎閰嶅唴瀛橈紝渚嬪姣忎釜綰跨▼鐨凷tack絳夈€?br /> 2錛嶴tack鐨勮瀹?br /> 姣忎釜綰跨▼閮芥湁浠栬嚜宸辯殑Stack銆?/p>

-Xss 姣忎釜綰跨▼鐨凷tack澶у皬

Stack鐨勫ぇ灝忛檺鍒剁潃綰跨▼鐨勬暟閲忋€傚鏋淪tack榪囧ぇ灝卞ソ瀵艱嚧鍐呭瓨婧㈡紡銆?Xss鍙傛暟鍐沖畾Stack澶у皬錛屼緥濡?Xss1024K銆傚鏋淪tack澶皬錛屼篃浼?xì)瀵艰嚧Stack婧㈡紡銆?br /> 3錛庣‖浠剁幆澧?br /> 紜歡鐜涔熷獎(jiǎng)鍝岹C鐨勬晥鐜囷紝渚嬪鏈哄櫒鐨勭綾伙紝鍐呭瓨錛宻wap絀洪棿錛屽拰CPU鐨勬暟閲忋€?br /> 濡傛灉浣犵殑紼嬪簭闇€瑕侀綣佸垱寤哄緢澶歵ransient瀵硅薄錛屼細(xì)瀵艱嚧JVM棰戠箒GC銆傝繖縐嶆儏鍐典綘鍙互澧炲姞鏈哄櫒鐨勫唴瀛橈紝鏉ュ噺灝慡wap絀洪棿鐨勪嬌鐢╗2]銆?br /> 4錛?縐岹C
絎竴縐嶄負(fù)鍗曠嚎紼婫C錛屼篃鏄粯璁ょ殑GC銆傦紝璇C閫傜敤浜庡崟CPU鏈哄櫒銆?br /> 絎簩縐嶄負(fù)Throughput GC錛屾槸澶氱嚎紼嬬殑GC錛岄€傜敤浜庡CPU錛屼嬌鐢ㄥぇ閲忕嚎紼嬬殑紼嬪簭銆傜浜岀GC涓庣涓€縐岹C鐩鎬技錛屼笉鍚屽湪浜嶨C鍦ㄦ敹闆哬oung鍖烘槸澶氱嚎紼嬬殑錛屼絾鍦∣ld鍖哄拰絎竴縐嶄竴鏍鳳紝浠嶇劧閲囩敤鍗曠嚎紼嬨€?XX:+UseParallelGC鍙傛暟鍚姩璇C銆?br /> 絎笁縐嶄負(fù)Concurrent Low Pause GC錛岀被浼間簬絎竴縐嶏紝閫傜敤浜庡CPU錛屽茍瑕佹眰緙╃煭鍥燝C閫犳垚紼嬪簭鍋滄粸鐨勬椂闂淬€傝繖縐岹C鍙互鍦∣ld鍖虹殑鍥炴敹鍚屾椂錛岃繍琛屽簲鐢ㄧ▼搴忋€?XX:+UseConcMarkSweepGC鍙傛暟鍚姩璇C銆?br /> 絎洓縐嶄負(fù)Incremental Low Pause GC錛岄€傜敤浜庤姹傜緝鐭洜GC閫犳垚紼嬪簭鍋滄粸鐨勬椂闂淬€傝繖縐岹C鍙互鍦╕oung鍖哄洖鏀剁殑鍚屾椂錛屽洖鏀朵竴閮ㄥ垎Old鍖哄璞°€?Xincgc鍙傛暟鍚姩璇C銆?/p>

鐤媯 2011-03-08 13:16 鍙戣〃璇勮
]]>
鎻愰珮AJAX瀹㈡埛绔搷搴旈€熷害(杞澆)http://www.aygfsteel.com/freeman1984/archive/2011/02/11/344056.html鐤媯鐤媯Fri, 11 Feb 2011 07:23:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2011/02/11/344056.htmlhttp://www.aygfsteel.com/freeman1984/comments/344056.htmlhttp://www.aygfsteel.com/freeman1984/archive/2011/02/11/344056.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/344056.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/344056.html鎻愰珮AJAX瀹㈡埛绔搷搴旈€熷害

(鏂囷細(xì)鍖呬竴紓?/span>)

AJAX鐨勫嚭鐜版瀬澶х殑鏀瑰彉浜?/span>Web搴旂敤瀹㈡埛绔殑鎿嶄綔妯″紡錛屽畠浣跨殑鐢ㄦ埛鍙互鍦ㄥ叏蹇?jī)宸ヤ綔鏃朵笉蹇呴绻佺殑蹇嶅彈閭d护錆h鍘屾伓鐨勯〉闈㈠埛鏂般€傜悊璁轟笂AJAX鎶€鏈湪寰堝ぇ鐨勭▼搴︿笂鍙互鍑忓皯鐢ㄦ埛鎿嶄綔鐨勭瓑寰呮椂闂達(dá)紝鍚屾椂鑺傜害緗戠粶涓婄殑鏁版嵁嫻侀噺銆傝€岀劧錛屽疄闄呮儏鍐靛嵈騫朵笉鎬繪槸榪欐牱銆傜敤鎴鋒椂甯鎬細(xì)鎶辨€ㄧ敤浜?/span>AJAX鐨勭郴緇熷搷搴旈€熷害鍙嶈€岄檷浣庝簡(jiǎn)銆?/span>

絎旇€呬粠浜?/span>AJAX鏂歸潰鐨勭爺鍙戝騫達(dá)紝鍙備笌寮€鍙戜簡(jiǎn)鐩墠鍥藉唴杈冧負(fù)鎴愮啛鐨?/span>AJAX騫沖彴-dorado銆傛牴鎹瑪鑰呯殑緇忛獙錛屽鑷磋繖縐嶇粨鏋滅殑鏍規(guī)湰鍘熷洜騫朵笉鍦?/span>AJAX銆傚緢澶氭椂鍊欑郴緇熷搷搴旈€熷害鐨勯檷浣庨兘鏄敱涓嶅鍚堢悊鐨勭晫闈㈣璁″拰涓嶅楂樻晥鐨勭紪紼嬩範(fàn)鎯€犳垚鐨勩€備笅闈㈡垜浠氨鏉ュ垎鏋愬嚑涓?/span>AJAX寮€鍙戣繃紼嬩腑闇€瑕佹椂鍒繪敞鎰忕殑鐜妭銆?/span>

鍚堢悊鐨勪嬌鐢ㄥ鎴風(fēng)緙栫▼鍜岃繙紼嬭繃紼嬭皟鐢ㄣ€?/span>

瀹㈡埛绔殑緙栫▼涓昏閮芥槸鍩轟簬JavaScript鐨勩€傝€?/span>JavaScript鏄竴縐嶈В閲婂瀷鐨勭紪紼嬭璦€錛屽畠鐨勮繍琛屾晥鐜囩浉瀵逛簬Java絳夐兘瑕佺◢閫婁竴絳廣€傚悓鏃?/span>JavaScript鍙堟槸榪愯鍦ㄦ祻瑙堝櫒榪欐牱涓€涓弗鏍煎彈闄愮殑鐜褰撲腑銆傚洜姝ゅ紑鍙戜漢鍛樺浜庡摢浜涢€昏緫鍙互鍦ㄥ鎴風(fēng)鎵ц搴旇鏈変竴涓竻閱掔殑璁よ瘑銆?/span>

鍦ㄥ疄闄呯殑搴旂敤涓┒绔熷簲璇ユ€庢牱浣跨敤瀹㈡埛绔紪紼嬶紝榪欎緷璧栦簬寮€鍙戜漢鍛樼殑緇忛獙鍒ゆ柇銆傝繖閲屽緢澶氶棶棰樻槸鍙彲鎰忎細(xì)鐨勩€傜敱浜庣瘒騫呮湁闄愶紝鍦ㄨ繖閲屾垜浠ぇ鑷村綊綰沖嚭涓嬮潰榪欏嚑涓敞鎰忎簨欏癸細(xì)

灝藉彲鑳介伩鍏嶉綣佺殑浣跨敤榪滅▼榪囩▼璋冪敤錛屼緥濡傞伩鍏嶅湪寰幆浣撲腑浣跨敤榪滅▼榪囩▼璋冪敤銆?/span>

濡傛灉鍙兘鐨勮瘽灝藉彲鑳戒嬌鐢?/span>AJAX鏂瑰紡鐨勮繙紼嬭繃紼嬭皟鐢紙寮傛鏂瑰紡鐨勮繙紼嬭繃紼嬭皟鐢級(jí)銆?/span>

閬垮厤灝嗛噸閲忕駭鐨勬暟鎹搷浣滄斁緗湪瀹㈡埛绔€備緥濡傦細(xì)澶ф壒閲忕殑鏁版嵁澶嶅埗鎿嶄綔銆侀渶瑕侀€氳繃澶ч噺鐨勬暟鎹亶鍘嗗畬鎴愮殑璁$畻絳夈€?/span>

鏀硅繘瀵?/span>DOM瀵硅薄鐨勬搷浣滄柟寮忋€?/span>

瀹㈡埛绔殑緙栫▼涓紝瀵?/span>DOM瀵硅薄鐨勬搷浣滃線寰€鏄渶瀹規(guī)槗鍗犵敤CPU鏃墮棿鐨勩€傝€屽浜?/span>DOM瀵硅薄鐨勬搷浣滐紝涓嶅悓鐨勭紪紼嬫柟娉曚箣闂寸殑鎬ц兘宸紓鍙堝線寰€鏄潪甯稿ぇ鐨勩€?/span>

浠ヤ笅鏄笁孌佃繍琛岀粨鏋滃畬鍏ㄧ浉鍚岀殑浠g爜錛屽畠浠殑浣滅敤鏄湪緗戦〉涓垱寤轟竴涓?/span>10x1000鐨勮〃鏍箋€傜劧鑰屽畠浠殑榪愯閫熷害鍗存湁鐫€澶╁¥涔嬪埆銆?/span>

/* 嫻嬭瘯浠g爜1 - 鑰楁椂: 41縐?/span>*/

var table = document.createElement("TABLE");

document.body.appendChild(table);

for(var i = 0; i < 1000; i++){

 var row = table.insertRow(-1);

 for(var j = 0; j < 10; j++){

    var cell = objRow.insertCell(-1);

     cell.innerText = "( " + i + " , " + j + " )";

 }

}

/* 嫻嬭瘯浠g爜2 - 鑰楁椂: 7.6縐?/span> */

var table = document.getElementById("TABLE");

document.body.appendChild(table);

var tbody = document.createElement("TBODY");

table.appendChild(tbody);

for(var i = 0; i < 1000; i++){

 var row = document.createElement("TR");

 tbody.appendChild(row);

 for(var j = 0; j < 10; j++){

    var cell = document.createElement("TD");

     row.appendChild(cell);

     cell.innerText = "( " + i + " , " + j + " )";

 }

}

/* 嫻嬭瘯浠g爜3 - 鑰楁椂: 1.26縐?/span> */

var tbody = document.createElement("TBODY");

for(var i = 0; i < 1000; i++){  

 var row = document.createElement("TR");

       for(var j = 0; j < 10; j++){

    var cell = document.createElement("TD");

     cell.innerText = "( " + i + " , " + j + " )";

     row.appendChild(cell);

 }

 tbody.appendChild(row);

}

var table = document.getElementById("TABLE");

table.appendChild(tbody);

document.body.appendChild(table);

榪欓噷鐨?#8220;嫻嬭瘯浠g爜1”鍜?#8220;嫻嬭瘯浠g爜2”涔嬮棿鐨勫樊鍒湪浜庡湪鍒涘緩琛ㄦ牸鍗曞厓鏃朵嬌鐢ㄤ簡(jiǎn)涓嶅悓鐨?/span>API鏂規(guī)硶銆傝€?#8220;嫻嬭瘯浠g爜2”鍜?#8220;嫻嬭瘯浠g爜3涔嬮棿鐨勫樊鍒湪浜庡鐞嗛『搴忕殑鐣ュ井涓嶅悓銆?/span>

“嫻嬭瘯浠g爜1”鍜?#8220;嫻嬭瘯浠g爜2”涔嬮棿濡傛澶х殑鎬ц兘宸埆鎴戜滑鏃犱粠鍒嗘瀽錛岀洰鍓嶆墍鐭ョ殑鏄?/span>insertRow鍜?/span>insertCell鏄?/span>DHTML涓〃鏍肩壒鏈夌殑API錛?/span>createElement鍜?/span>appendChild鏄?/span>W3C DOM鐨勫師鐢?/span>API銆傝€屽墠鑰呭簲璇ユ槸瀵瑰悗鑰呯殑灝佽銆備笉榪囷紝鎴戜滑騫朵笉鑳藉洜姝よ€屽緱鍑虹粨璁鴻涓?/span>DOM鐨勫師鐢?/span>API鎬繪槸浼樹簬瀵硅薄鐗規(guī)湁鐨?/span>API銆傚緩璁ぇ瀹跺湪闇€瑕侀綣佽皟鐢ㄦ煇涓€API鏃訛紝瀵瑰叾鎬ц兘琛ㄧ幇鍋氫竴浜涘熀鏈殑嫻嬭瘯銆?/span>

“嫻嬭瘯浠g爜2”鍜?#8220;嫻嬭瘯浠g爜3”涔嬮棿鐨勬€ц兘宸紓涓昏鏉ヨ嚜浜庝粬浠殑鏋勫緩欏哄簭涓嶅悓銆?#8220;嫻嬭瘯浠g爜2”鐨勫仛娉曟槸棣栧厛鍒涘緩鏈€澶栧眰鐨?/span><TABLE>瀵硅薄錛岀劧鍚庡啀鍦ㄥ驚鐜腑渚濇鍒涘緩<TR>鍜?/span><TD>銆傝€?#8220;嫻嬭瘯浠g爜3”鐨勫仛娉曟槸棣栧厛鍦ㄥ唴瀛樹腑鐢卞唴鍒板鐨勬瀯寤哄ソ鏁翠釜琛ㄦ牸錛屾渶鍚庡啀灝嗗畠娣誨姞鍒扮綉欏典腑銆傝繖鏍峰仛鐨勭洰鐨勬槸灝藉彲鑳界殑鍑忓皯嫻忚鍣ㄩ噸鏂拌綆楅〉闈㈠竷灞€鐨勬鏁般€傛瘡褰撴垜浠皢涓€涓璞℃坊鍔犲埌緗戦〉涓椂錛屾祻瑙堝櫒閮戒細(xì)灝濊瘯瀵歸〉闈腑鐨勬帶浠剁殑甯冨眬榪涜閲嶆柊璁$畻銆傛墍浠ワ紝濡傛灉鎴戜滑鑳藉棣栧厛鍦ㄥ唴瀛樹腑灝嗘暣涓鏋勯€犵殑瀵硅薄鍏ㄩ儴鍒涘緩濂斤紝鐒跺悗鍐嶄竴嬈℃€х殑娣誨姞鍒扮綉欏典腑銆傞偅涔堬紝嫻忚鍣ㄥ皢鍙細(xì)鍋氫竴嬈″竷灞€鐨勯噸璁$畻銆傛€葷粨涓轟竴鍙ヨ瘽閭e氨鏄秺鏅氭墽琛?/span>appendChild瓚婂ソ銆傛湁鏃朵負(fù)浜?jiǎn)鎻愰珮杩愯鏁堢巼锛屾垜浠敋鑷冲彲浠ヨ€冭檻鍏堜嬌鐢?/span>removeChild灝嗗凡瀛樺湪鐨勬帶浠朵粠欏甸潰涓Щ闄わ紝鐒跺悗鏋勯€犲畬鎴愬悗鍐嶉噸鏂板皢鍏舵斁緗洖欏甸潰褰撲腑銆?/span>

鎻愰珮瀛楃涓茬瘡鍔犵殑閫熷害

鍦ㄤ嬌鐢?/span>AJAX鎻愪氦淇℃伅鏃訛紝鎴戝彲鑳藉父甯擱渶瑕佹嫾瑁呬竴浜涙瘮杈冨ぇ鐨勫瓧絎︿覆閫氳繃XmlHttp鏉ュ畬鎴?/span>POST鎻愪氦銆傚敖綆℃彁浜よ繖鏍峰ぇ鐨勪俊鎭殑鍋氭硶鐪嬭搗鏉ュ茍涓嶄紭闆咃紝浣嗘湁鏃舵垜浠彲鑳戒笉寰椾笉闈㈠榪欐牱鐨勯渶姹傘€傞偅涔?/span>JavaScript涓瀛楃涓茬殑绱姞閫熷害濡備綍鍛紵鎴戜滑鍏堟潵鍋氫笅闈㈢殑榪欎釜瀹為獙銆傜瘡鍔犱竴涓暱搴︿負(fù)30000鐨勫瓧絎︿覆銆?/span>

/* 嫻嬭瘯浠g爜1 - 鑰楁椂: 14.325縐?/span> */

var str = "";

for (var i = 0; i < 50000; i++) {

       str += "xxxxxx";

}

榪欐浠g爜鑰楁椂14.325縐掞紝緇撴灉騫朵笉鐞嗘兂銆傜幇鍦ㄦ垜浠皢浠g爜鏀逛負(fù)濡備笅鐨勫艦寮忥細(xì)

/* 嫻嬭瘯浠g爜2 - 鑰楁椂: 0.359縐?/span> */

var str = "";

for (var i = 0; i < 100; i++) {

       var sub = "";

       for (var j = 0; j < 500; j++) {

              sub += "xxxxxx";

       }

       str += sub;

}

榪欐浠g爜鑰楁椂0.359縐掞紒鍚屾牱鐨勭粨鏋滐紝鎴戜滑鍋氱殑鍙槸棣栧厛鎷艱涓€浜涜緝?yōu)畯鐨勫瓧绗︿覆鐒跺悗鍐嵕l勮鎴愭洿澶х殑瀛楃涓層€傝繖縐嶅仛娉曞彲浠ユ湁鏁堢殑鍦ㄥ瓧絎︿覆鎷艱鐨勫悗鏈熷噺灝忓唴瀛樺鍒剁殑鏁版嵁閲忋€傜煡閬撲簡(jiǎn)榪欎竴鍘熺悊涔嬪悗鎴戜滑榪樺彲浠ユ妸涓婇潰鐨勪唬鐮佽繘涓€姝ユ媶鏁d互鍚庤繘琛屾祴璇曘€備笅闈㈢殑浠g爜浠呰€楁椂0.140縐掋€?/span>

/* 嫻嬭瘯浠g爜3 - 鑰楁椂: 0.140縐?/span> */

var str = ""; 

for (var i1 = 0; i1 < 5; i1++) {

       var str1 = "";

       for (var i2 = 0; i2 < 10; i2++) {

              var str2 = "";

              for (var i3 = 0; i3 < 10; i3++) {

                     var str3 = "";

                     for (var i4 = 0; i4 < 10; i4++) {

                            var str4 = "";

                            for (var i5 = 0; i5 < 10; i5++) {

                                   str4 += "xxxxxx";

                            }

                            str3 += str4;

                     }

                     str2 += str3;

              }

              str1 += str2;      

       }

       str += str1; 

}

涓嶈繃錛屼笂闈㈣繖縐嶅仛娉曚篃璁稿茍涓嶆槸鏈€濂界殑錛佸鏋滄垜浠渶瑕佹彁浜ょ殑淇℃伅鏄?/span>XML鏍煎紡鐨勶紙鍏跺疄緇濆ぇ澶氭暟鎯呭喌涓嬶紝鎴戜滑閮藉彲浠ヨ娉曞皢瑕佹彁浜ょ殑淇℃伅緇勮鎴?/span>XML鏍煎紡錛夛紝鎴戜滑榪樿兘鎵懼埌鏇撮珮鏁堟洿浼橀泤鐨勬柟娉?/span>鈥?span style="font-family: 瀹嬩綋">鍒╃敤DOM瀵硅薄涓烘垜浠粍瑁呭瓧絎︿覆銆備笅闈㈣繖孌典唬涔扮粍瑁呬竴涓暱搴︿負(fù)950015鐨勫瓧絎︿覆浠呴』鑰楁椂0.890縐掋€?/span>

/* 鍒╃敤DOM瀵硅薄緇勮淇℃伅 - 鑰楁椂: 0.890縐?/span> */

var xmlDoc; 

if (browserType == BROWSER_IE) {

       xmlDoc = new ActiveXObject("Msxml.DOMDocument");

}

else {

       xmlDoc = document.createElement("DOM");

}

var root = xmlDoc.createElement("root");

for (var i = 0; i < 50000; i++) {

       var node = xmlDoc.createElement("data");

       if (browserType == BROWSER_IE) {

              node.text = "xxxxxx";

       }

       else {

              node.innerText = "xxxxxx";

       }

       root.appendChild(node);

}

xmlDoc.appendChild(root);

var str;

if (browserType == BROWSER_IE) {

       str = xmlDoc.xml;

}

else {

       str = xmlDoc.innerHTML;

}

閬垮厤DOM瀵硅薄鐨勫唴瀛樻硠婕忋€?/span>

鍏充簬IE涓?/span>DOM瀵硅薄鐨勫唴瀛樻硠闇叉槸涓€涓父甯歌寮€鍙戜漢鍛樺拷鐣ョ殑闂銆傜劧鑰屽畠甯︽潵鐨勫悗鏋滃嵈鏄潪甯鎬弗閲嶇殑錛佸畠浼?xì)瀵艰?/span>IE鐨勫唴瀛樺崰鐢ㄩ噺鎸佺畫涓婂崌錛屽茍涓旀祻瑙堝櫒鐨勬暣浣撹繍琛岄€熷害鏄庢樉涓嬮檷銆傚浜庝竴浜涙硠闇叉瘮杈冧弗閲嶇殑緗戦〉錛岀敋鑷沖彧瑕佸埛鏂板嚑嬈★紝榪愯閫熷害灝變細(xì)闄嶄綆涓€鍊嶃€?/span>

姣旇緝甯歌鐨勫唴瀛樻硠婕忕殑妯″瀷鏈?#8220;寰幆寮曠敤妯″瀷”銆?#8220;闂寘鍑芥暟妯″瀷”鍜?#8220;DOM鎻掑叆欏哄簭妯″瀷”,瀵逛簬鍓嶄袱縐嶆硠婕忔ā鍨嬶紝鎴戜滑閮藉彲浠ラ€氳繃鍦ㄧ綉欏墊瀽鏋勬椂瑙i櫎寮曠敤鐨勬柟寮忔潵閬垮厤銆傝€屽浜?#8220;DOM鎻掑叆欏哄簭妯″瀷”鍒欓渶瑕侀€氳繃鏀瑰彉涓€浜涙儻鏈夌殑緙栫▼涔?fàn)鎯殑鏂瑰紡鏉ラ伩鍏嶃€?/span>

鏈夊叧鍐呭瓨娉勬紡鐨勬ā鍨嬬殑鏇村浠嬬粛鍙互閫氳繃Google寰堝揩鐨勬煡鍒幫紝鏈枃涓嶅仛榪囧鐨勯槓榪般€備笉榪囷紝榪欓噷鎴戝悜鎮(zhèn)ㄦ帹鑽愪竴涓彲鐢ㄤ簬鏌ユ壘鍜屽垎鏋愮綉欏靛唴瀛樻硠闇茬殑灝忓伐鍏?/span>鈥?span style="font-family: 'Verdana', 'sans-serif'">Drip錛岀洰鍓嶇殑杈冩柊鐗堟湰鏄?/span>0.5錛屼笅杞藉湴鍧€鏄?/span>http://outofhanwell.com/ieleak/index.php

澶嶆潅欏甸潰鐨勫垎孌佃杞藉拰鍒濆鍖?/span>

瀵圭郴緇熷綋涓煇浜涚‘瀹炴瘮杈冨鏉傝€屽張涓嶄究浣跨敤IFrame鐨勭晫闈紝鎴戜滑鍙互瀵瑰叾瀹炴柦鍒嗘瑁呰澆銆備緥濡傚浜庡欏墊爣絳劇殑鐣岄潰錛屾垜浠彲浠ラ鍏堜笅杞藉拰鍒濆鍖栧欏墊爣絳劇殑榛樿欏碉紝鐒跺悗鍒╃敤AJAH錛?/span>asynchronous JavaScript and HTML錛夋妧鏈潵寮傛鐨勮杞藉叾浠栨爣絳鵑〉涓殑鍐呭銆傝繖鏍峰氨鑳戒繚璇佺晫闈㈠彲浠ュ湪絎竴鏃墮棿棣栧厛灞曠幇緇欑敤鎴楓€傛妸鏁翠釜澶嶆潅鐣岄潰鐨勮杞借繃紼嬪垎鏁e埌鐢ㄦ埛鐨勬搷浣滆繃紼嬪綋涓€?/span>

鍒╃敤GZIP鍘嬬緝緗戠粶嫻侀噺銆?/span>

闄や簡(jiǎn)涓婇潰鎻愬埌鐨勮繖浜涗唬鐮佺駭鐨勬敼鑹箣澶栵紝鎴戜滑榪樺彲浠ュ埄鐢?/span>GZIP鏉ユ湁鏁堢殑闄嶄綆緗戠粶嫻侀噺銆傜洰鍓嶅父瑙佺殑涓繪祦嫻忚鍣ㄥ凡緇忓叏閮ㄦ敮鎸?/span>GZIP綆楁硶錛屾垜浠線寰€鍙渶瑕佺紪鍐欏皯閲忕殑浠g爜灝卞彲浠ユ敮鎸?/span>GZIP浜?jiǎn)銆備緥濡傚湪J2EE涓垜浠彲浠ュ湪Filter涓€氳繃涓嬮潰鐨勪唬鐮佹潵鍒ゆ柇瀹㈡埛绔祻瑙堝櫒鏄惁鏀寔GZIP綆楁硶錛岀劧鍚庢牴鎹渶瑕佸埄鐢?/span>java.util.zip.GZIPOutputStream鏉ュ疄鐜?/span>GZIP鐨勮緭鍑恒€?/span>

/* 鍒ゆ柇嫻忚鍣ㄥGZIP鏀寔鏂瑰紡鐨勪唬鐮?/span> */

private static String getGZIPEncoding(HttpServletRequest request) {

 String acceptEncoding = request.getHeader("Accept-Encoding");

 if (acceptEncoding == null) return null;

 acceptEncoding = acceptEncoding.toLowerCase();

 if (acceptEncoding.indexOf("x-gzip") >= 0) return "x-gzip";

 if (acceptEncoding.indexOf("gzip") >= 0) return "gzip";

 return null;

}

涓€鑸€岃█錛?/span>GZIP瀵逛簬HTML銆?/span>JSP鐨勫帇緙╂瘮鍙互杈懼埌80%宸﹀彸錛岃€屽畠閫犳垚鐨勬湇鍔$鍜屽鎴風(fēng)鐨勬€ц兘鎹熻€楀嚑涔庢槸鍙互蹇界暐鐨勩€傜粨鍚堝叾浠栧洜绱狅紝鏀寔GZIP鐨勭綉绔欐湁鍙兘涓烘垜浠妭綰?/span>50%鐨勭綉緇滄祦閲忋€傚洜姝?/span>GZIP鐨勪嬌鐢ㄥ彲浠ヤ負(fù)閭d簺緗戠粶鐜涓嶆槸鐗瑰埆濂界殑搴旂敤甯︽潵鏄捐憲鐨勬€ц兘鎻愬崌銆備嬌鐢?/span>Http鐨勭洃瑙嗗伐鍏?/span>Fiddler鍙互鏂逛究鐨勬嫻嬪嚭緗戦〉鍦ㄤ嬌鐢?/span>GZIP鍓嶅悗鐨勯€氳鏁版嵁閲忋€?/span>Fiddler鐨勪笅杞藉湴鍧€鏄?/span>http://www.fiddlertool.com/fiddler/

鍏充簬Web搴旂敤鐨勬€ц兘浼樺寲鍏跺疄鏄竴涓潪甯稿ぇ鐨勮瘽棰樸€傛湰鏂囩敱浜庣瘒騫呮湁闄愶紝鍙兘娑夊強(qiáng)鍏朵腑鐨勫嚑涓粏鑺傦紝騫朵笖涔熸棤娉曞皢榪欎簺緇嗚妭鐨勪紭鍖栨柟寮忓叏闈㈢殑灞曠幇緇欏ぇ瀹躲€傛湡鏈涙湰鏂囪兘澶熷紩璧峰ぇ瀹跺Web搴旂敤灝ゅ叾鏄鎴風(fēng)鎬ц兘浼樺寲鐨勫厖鍒嗛噸瑙嗐€傛瘯绔熸湇鍔$緙栫▼鎶€宸у凡涓哄ぇ瀹剁啛鐭ュ騫達(dá)紝鍦ㄦ湇鍔$鎸栨帢鎬ц兘鐨勬綔鍔涘凡緇忎笉澶т簡(jiǎn)銆傝€屽湪瀹㈡埛绔殑鏂規(guī)硶鏀硅繘寰€寰€鑳藉寰楀埌浠や漢鎯婂鐨勬€ц兘鎻愬崌銆?/span>



鐤媯 2011-02-11 15:23 鍙戣〃璇勮
]]>
鍔犻€烰avascript錛欴OM鎿嶄綔浼樺寲http://www.aygfsteel.com/freeman1984/archive/2010/10/17/335395.html鐤媯鐤媯Sun, 17 Oct 2010 15:53:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2010/10/17/335395.htmlhttp://www.aygfsteel.com/freeman1984/comments/335395.htmlhttp://www.aygfsteel.com/freeman1984/archive/2010/10/17/335395.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/335395.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/335395.html鍘熸枃錛氥€奡peeding up JavaScript: Working with the DOM銆?/p>

浣滆€咃細(xì) KeeKim Heng, Google Web Developer

鍦ㄦ垜浠紑鍙戜簰鑱旂綉瀵屽簲鐢紙RIA錛夋椂錛屾垜浠粡甯稿啓涓€浜沯avascript鑴氭湰鏉ヤ慨鏀規(guī)垨鑰呭鍔犻〉闈㈠厓绱狅紝榪欎簺宸ヤ綔鏈€緇堟槸DOM鈥斺€旀垨鑰呰鏂囨。瀵硅薄妯″瀷鈥斺€旀潵瀹屾垚鐨勶紝鑰屾垜浠殑瀹炵幇鏂瑰紡浼?xì)濯?jiǎng)鍝嶅埌搴旂敤鐨勫搷搴旈€熷害銆?/p>

DOM鎿嶄綔浼?xì)瀵艰嚧娴忚鍣ㄩ噸瑙f?reflow)錛岃繖鏄祻瑙堝櫒鐨勪竴涓喅瀹氶〉闈㈠厓绱犲浣曞睍鐜扮殑璁$畻榪囩▼銆傜洿鎺ヤ慨鏀笵OM錛屼慨鏀瑰厓绱犵殑CSS鏍峰紡錛屼慨鏀規(guī)祻瑙堝櫒鐨勭獥鍙eぇ灝忥紝閮戒細(xì)瑙﹀彂閲嶈В鏋愩€傝鍙栧厓绱犵殑甯冨眬灞炴€ф瘮濡俹ffsetHeithe鎴栬€卭ffsetWidth涔熶細(xì)瑙﹀彂閲嶈В鏋愩€傞噸瑙f瀽闇€瑕佽姳璐硅綆楁椂闂達(dá)紝鍥犳閲嶈В鏋愯Е鍙戠殑瓚婂皯錛屽簲鐢ㄥ氨浼?xì)瓒婂揩銆?/p>

DOM鎿嶄綔閫氬父瑕佷笉灝辨槸淇敼宸茬粡瀛樺湪鐨勯〉闈笂鐨勫厓绱狅紝瑕佷笉灝辨槸鍒涘緩鏂扮殑欏甸潰鍏冪礌銆備笅闈㈢殑4縐嶄紭鍖栨柟妗堣鐩栦簡(jiǎn)淇敼鍜屽垱寤篋OM鑺傜偣涓ょ鏂瑰紡錛屽府鍔╀綘鍑忓皯瑙﹀彂嫻忚鍣ㄩ噸瑙f瀽鐨勬鏁般€?/p>

鏂規(guī)涓€錛氶€氳繃CSS綾誨悕鍒囨崲鏉ヤ慨鏀笵OM

 

榪欎釜鏂規(guī)璁╂垜浠彲浠ヤ竴嬈℃€т慨鏀逛竴涓厓绱犲拰瀹冪殑瀛愬厓绱犵殑澶氫釜鏍峰紡灞炴€ц€屽彧瑙﹀彂涓€嬈¢噸瑙f瀽銆?/p>

闇€姹傦細(xì)

錛坋mu娉細(xì)鍘熸枃浣滆€呭啓鍒拌繖閲岀殑鏃跺€欒剳瀛愭樉鐒剁煭璺簡(jiǎn)涓€涓嬶紝鎶婂悗闈㈢殑Out-of-the-flow DOM Manipulation妯″紡瑕佽В鍐崇殑闂緇欐憜鍒拌繖閲屾潵浜?jiǎn)锛屼笉杩囦粠绀鸿寖浠g爜涓緢瀹规槗鏄庣櫧浣滆€呯湡姝f兂鎻忚堪鐨勯棶棰橈紝鍥犳emu灝變笉鐓х炕鍘熸枃浜?jiǎn)锛?jí)

鎴戜滑鐜板湪闇€瑕佸啓涓€涓嚱鏁版潵淇敼涓€涓秴閾炬帴鐨勫嚑涓牱寮忚鍒欍€傝瀹炵幇寰堢畝鍗曪紝鎶婅繖鍑犱釜瑙勫垯瀵瑰簲鐨勫睘鎬ч€愪竴鏀逛簡(jiǎn)灝卞ソ浜?jiǎn)銆備絾鏄甫鏉ョ殑闂鏄紝姣忎慨鏀逛竴涓牱寮忓睘鎬э紝閮戒細(xì)瀵艱嚧涓€嬈¢〉闈㈢殑閲嶈В鏋愩€?/p>

view plaincopy to clipboardprint?
function selectAnchor(element) {  
  element.style.fontWeight = 'bold';  
  element.style.textDecoration = 'none';  
  element.style.color = '#000';  

function selectAnchor(element) {
  element.style.fontWeight = 'bold';
  element.style.textDecoration = 'none';
  element.style.color = '#000';
}

瑙e喅鏂規(guī)

瑕佽В鍐寵繖涓棶棰橈紝鎴戜滑鍙互鍏堝垱寤轟竴涓牱寮忓悕錛屽茍涓旀妸瑕佷慨鏀圭殑鏍峰紡瑙勫垯閮芥斁鍒拌繖涓被鍚嶄笂錛岀劧鍚庢垜浠粰瓚呴摼鎺ユ坊鍔犱笂榪欎釜鏂扮被鍚嶏紝灝卞彲浠ュ疄鐜版坊鍔犲嚑涓牱寮忚鍒欒€屽彧瑙﹀彂涓€嬈¢噸瑙f瀽浜?jiǎn)銆傝繖涓ā寮忚繕鏈変釜濂藉鏄篃瀹炵幇浜?jiǎn)琛ㄧ幇鍜岄€昏緫鐩稿垎紱匯€?/p>

view plaincopy to clipboardprint?
.selectedAnchor {  
  font-weight: bold;  
  text-decoration: none;  
  color: #000;  
}  
 
function selectAnchor(element) {  
  element.className = 'selectedAnchor';  

.selectedAnchor {
  font-weight: bold;
  text-decoration: none;
  color: #000;
}

function selectAnchor(element) {
  element.className = 'selectedAnchor';
}

 鏂規(guī)浜岋細(xì)鍦ㄩ潪娓叉煋鍖轟慨鏀笵OM

錛坋mu娉細(xì)浣滆€呭湪榪欓噷鍐嶆鑴戝瓙鐭礬錛屾妸DocumentFragment DOM Generation妯″紡鐨勪粙緇嶆彁鍓嶅埌榪欓噷鏉ヤ簡(jiǎn)錛宔mu鍙ソ鍐嶆鍙戞尌涓€涓嬶級(jí)
涓婁竴涓柟妗堣В鍐崇殑鏄慨鏀逛竴涓秴閾炬帴鐨勯棶棰橈紝褰撲竴嬈¢渶瑕佸寰堝涓秴閾炬帴榪涜鐩稿悓淇敼鐨勬椂鍊欙紝榪欎釜鏂規(guī)灝卞彲浠ュぇ鏄捐韓鎵嬩簡(jiǎn)銆?/p>

闇€姹?/p>

闇€姹傛槸榪欐牱鐨勶紝鎴戜滑瑕佸啓涓€涓嚱鏁版潵淇敼涓€涓寚瀹氬厓绱犵殑瀛愬厓绱犱腑鎵€鏈夌殑瓚呴摼鎺ョ殑鏍峰紡鍚嶏紙className錛夊睘鎬с€傝瀹炵幇寰堢畝鍗曪紝鎴戜滑鍙互閫氳繃閬嶅巻姣忎釜瓚呴摼鎺ュ茍涓斾慨鏀瑰畠浠殑鏍峰紡鍚嶆潵瀹屾垚浠誨姟銆備絾鏄甫鏉ョ殑闂灝辨槸錛屾瘡淇敼涓€涓秴閾炬帴閮戒細(xì)瀵艱嚧涓€嬈¢噸瑙f瀽銆?/p>

view plaincopy to clipboardprint?
function updateAllAnchors(element, anchorClass) {  
  var anchors = element.getElementsByTagName('a');  
  for (var i = 0, length = anchors.length; i < length; i ++) {  
    anchors[i].className = anchorClass;  
  }  

function updateAllAnchors(element, anchorClass) {
  var anchors = element.getElementsByTagName('a');
  for (var i = 0, length = anchors.length; i < length; i ++) {
    anchors[i].className = anchorClass;
  }
}
 

瑙e喅鏂規(guī)

瑕佽В鍐寵繖涓棶棰橈紝鎴戜滑鍙互鎶婅淇敼鐨勬寚瀹氬厓绱犱粠DOM閲岄潰縐婚櫎錛屽啀淇敼鎵€鏈夌殑瓚呴摼鎺ワ紝鐒跺悗鍦ㄦ妸榪欎釜鍏冪礌鎻掑叆鍥炲埌瀹冨師鏉ョ殑浣嶇疆涓娿€備負(fù)浜?jiǎn)瀹屾垚杩欎釜澶嶆潅鐨勬搷浣滃Q屾垜浠彲浠ュ厛鍐欎竴涓彲閲嶇敤鐨勫嚱鏁幫紝瀹冧笉浣嗙Щ闄や簡(jiǎn)榪欎釜DOM鑺傜偣錛岃繕榪斿洖浜?jiǎn)涓€涓妸鍏冪礌鎻掑洖鍒板師鏉ョ殑浣嶇疆鐨勫嚱鏁般€?/p>

view plaincopy to clipboardprint?
/** 
 * Remove an element and provide a function that inserts it into its original position 
 * @param element {Element} The element to be temporarily removed 
 * @return {Function} A function that inserts the element into its original position 
 **/ 
function removeToInsertLater(element) {  
  var parentNode = element.parentNode;  
  var nextSibling = element.nextSibling;  
  parentNode.removeChild(element);  
  return function() {  
    if (nextSibling) {  
      parentNode.insertBefore(element, nextSibling);  
    } else {  
      parentNode.appendChild(element);  
    }  
  };  

/**
 * Remove an element and provide a function that inserts it into its original position
 * @param element {Element} The element to be temporarily removed
 * @return {Function} A function that inserts the element into its original position
 **/
function removeToInsertLater(element) {
  var parentNode = element.parentNode;
  var nextSibling = element.nextSibling;
  parentNode.removeChild(element);
  return function() {
    if (nextSibling) {
      parentNode.insertBefore(element, nextSibling);
    } else {
      parentNode.appendChild(element);
    }
  };
}

鏈変簡(jiǎn)涓婇潰榪欎釜鍑芥暟錛岀幇鍦ㄦ垜浠氨鍙互鍦ㄤ竴涓笉闇€瑕佽В鏋愭覆鏌撶殑鍏冪礌涓婇潰淇敼閭d簺瓚呴摼鎺ヤ簡(jiǎn)銆傝繖鏍峰彧鍦ㄧЩ闄ゅ拰鎻掑叆鍏冪礌鐨勬椂鍊欏悇瑙﹀彂涓€嬈¢噸瑙f瀽銆?/p>

view plaincopy to clipboardprint?
function updateAllAnchors(element, anchorClass) {  
  var insertFunction = removeToInsertLater(element);  
  var anchors = element.getElementsByTagName('a');  
  for (var i = 0, length = anchors.length; i < length; i ++) {  
    anchors[i].className = anchorClass;  
  }  
  insertFunction();  

function updateAllAnchors(element, anchorClass) {
  var insertFunction = removeToInsertLater(element);
  var anchors = element.getElementsByTagName('a');
  for (var i = 0, length = anchors.length; i < length; i ++) {
    anchors[i].className = anchorClass;
  }
  insertFunction();
}
 

鏂規(guī)涓夛細(xì)涓€嬈℃€х殑DOM鍏冪礌鐢熸垚

榪欎釜鏂規(guī)璁╂垜浠垱寤轟竴涓厓绱犵殑榪囩▼鍙Е鍙戜竴嬈¢噸瑙f瀽銆傚湪鍒涘緩瀹屽厓绱犱互鍚庯紝鍏堣繘琛屾墍鏈夐渶瑕佺殑淇敼錛屾渶鍚庢墠鎶婂畠鎻掑叆鍒癉OM閲岄潰鍘誨氨鍙互浜?/p>

闇€姹?/p>

闇€姹傛槸榪欐牱鐨勶紝瀹炵幇涓€涓嚱鏁幫紝寰€涓€涓寚瀹氱殑鐖跺厓绱犱笂鎻掑叆涓€涓秴閾炬帴鍏冪礌銆傝繖涓嚱鏁拌鍚屾椂鍙互璁劇疆榪欎釜瓚呴摼鎺ョ殑鏄劇ず鏂囧瓧鍜屾牱寮忕被銆傛垜浠彲浠ヨ繖鏍峰仛錛氬垱寤哄厓绱狅紝鎻掑叆鍒癉OM閲岄潰錛岀劧鍚庤緗浉搴旂殑灞炴€с€傝繖灝辮瑙﹀彂3嬈¢噸瑙f瀽銆?/p>

view plaincopy to clipboardprint?
function addAnchor(parentElement, anchorText, anchorClass) {  
  var element = document.createElement('a');  
  parentElement.appendChild(element);  
  element.innerHTML = anchorText;  
  element.className = anchorClass;  

function addAnchor(parentElement, anchorText, anchorClass) {
  var element = document.createElement('a');
  parentElement.appendChild(element);
  element.innerHTML = anchorText;
  element.className = anchorClass;
}
 

瑙e喅鏂規(guī)

寰堢畝鍗曪紝鎴戜滑鍙鎶婃彃鍏ュ厓绱犺繖涓搷浣滄斁鍒版渶鍚庡仛錛屽氨鍙互鍙繘琛屼竴嬈¢噸瑙f瀽浜?jiǎn)銆?/p>

view plaincopy to clipboardprint?
function addAnchor(parentElement, anchorText, anchorClass) {  
  var element = document.createElement('a');  
  element.innerHTML = anchorText;  
  element.className = anchorClass;  
  parentElement.appendChild(element);  

function addAnchor(parentElement, anchorText, anchorClass) {
  var element = document.createElement('a');
  element.innerHTML = anchorText;
  element.className = anchorClass;
  parentElement.appendChild(element);
}

涓嶈繃錛岃鏄垜浠兂瑕佹彃鍏ュ緢澶氫釜瓚呴摼鎺ュ埌涓€涓厓绱犻噷闈㈢殑璇濓紝閭d箞榪欎釜鍋氭硶榪樻槸鏈夐棶棰橈細(xì)姣忔彃鍏ヤ竴涓秴閾炬帴榪樻槸瑕佽Е鍙戜竴嬈¢噸瑙f瀽銆備笅涓€涓柟妗堝彲浠ヨВ鍐寵繖涓棶棰樸€?/p>

鏂規(guī)鍥涳細(xì)閫氳繃鏂囨。鐗囨瀵硅薄錛圖ocumentFragment錛夊垱寤轟竴緇勫厓绱?/p>

榪欎釜鏂規(guī)鍏佽鎴戜滑鍒涘緩騫舵彃鍏ュ緢澶氫釜鍏冪礌鑰屽彧瑙﹀彂涓€嬈¢噸瑙f瀽銆傝瀹炵幇榪欑偣闇€瑕佺敤鍒版墍璋撶殑鏂囨。鐗囨瀵硅薄錛圖ocumentFragment錛夈€傛垜浠厛鍦―OM涔嬪鍒涘緩涓€涓枃妗g墖孌靛璞★紙榪欐牱瀹冧篃灝變笉闇€瑕佽В鏋愬拰娓叉煋錛夛紝鐒跺悗鎴戜滑鍦ㄦ枃妗g墖孌靛璞′腑鍒涘緩寰堝涓厓绱狅紝鏈€鍚庢垜浠妸榪欎釜鏂囨。鐗囨瀵硅薄涓墍鏈夌殑鍏冪礌涓€嬈℃€ф斁鍒癉OM閲岄潰鍘伙紝鍙Е鍙戜竴嬈¢噸瑙f瀽銆?/p>

闇€姹?/p>


鎴戜滑瑕佸啓涓€涓嚱鏁幫紝寰€涓€涓寚瀹氱殑鍏冪礌涓婇潰澧炲姞10涓秴閾炬帴銆傚鏋滄垜浠畝鍗曠殑鐩存帴鎻掑叆10涓秴閾炬帴鍒板厓绱犱笂闈紝灝變細(xì)瑙﹀彂10嬈¢噸瑙f瀽銆?/p>

view plaincopy to clipboardprint?
function addAnchors(element) {  
  var anchor;  
  for (var i = 0; i < 10; i ++) {  
    anchor = document.createElement('a');  
    anchor.innerHTML = 'test';  
    element.appendChild(anchor);  
  }  

function addAnchors(element) {
  var anchor;
  for (var i = 0; i < 10; i ++) {
    anchor = document.createElement('a');
    anchor.innerHTML = 'test';
    element.appendChild(anchor);
  }
}

瑙e喅鏂規(guī)

瑕佽В鍐寵繖涓棶棰橈紝鎴戜滑瑕佸厛鍒涘緩涓€涓枃妗g墖孌靛璞★紝鐒跺悗鎶婃瘡涓柊鍒涘緩鐨勮秴閾炬帴閮芥彃鍏ュ埌瀹冮噷闈㈠幓銆傚綋鎴戜滑鎶婃枃妗g墖孌靛璞$敤appendChild鍛戒護(hù)鎻掑叆鍒版寚瀹氱殑鑺傜偣鏃訛紝榪欎釜鏂囨。鐗囨瀵硅薄鐨勬墍鏈夊瓙鑺傜偣灝變竴璧瘋鎻掑叆鍒版寚瀹氱殑鍏冪礌閲岄潰錛岃€屼笖鍙渶瑕佽Е鍙戜竴嬈¢噸瑙f瀽銆?/p>

view plaincopy to clipboardprint?
function addAnchors(element) {  
  var anchor, fragment = document.createDocumentFragment();  
  for (var i = 0; i < 10; i ++) {  
    anchor = document.createElement('a');  
    anchor.innerHTML = 'test';  
    fragment.appendChild(anchor);  
  }  
  element.appendChild(fragment);  

 

鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/emu/archive/2010/03/01/5334583.aspx



鐤媯 2010-10-17 23:53 鍙戣〃璇勮
]]>
Tomcat鍐呭瓨婧㈠嚭鐨勪笁縐嶆儏鍐靛強(qiáng)瑙e喅鍔炴硶鍒嗘瀽 http://www.aygfsteel.com/freeman1984/archive/2010/10/16/335295.html鐤媯鐤媯Sat, 16 Oct 2010 05:28:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2010/10/16/335295.htmlhttp://www.aygfsteel.com/freeman1984/comments/335295.htmlhttp://www.aygfsteel.com/freeman1984/archive/2010/10/16/335295.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/335295.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/335295.html Tomcat鍐呭瓨婧㈠嚭鐨勫師鍥?

    鍦ㄧ敓浜х幆澧冧腑tomcat鍐呭瓨璁劇疆涓嶅ソ寰堝鏄撳嚭鐜板唴瀛樻孩鍑恒€傞€犳垚鍐呭瓨鍘熷洜鏄笉涓€鏍風(fēng)殑錛屽綋鐒跺鐞嗘柟寮忎篃涓嶄竴鏍楓€?/p>

    榪欓噷鏍規(guī)嵁騫蟲椂閬囧埌鐨勬儏鍐靛拰鐩稿叧璧勬枡榪涜涓€涓€葷粨銆傚父瑙佺殑涓€鑸細(xì)鏈変笅闈笁縐嶆儏鍐碉細(xì)

    1.OutOfMemoryError錛?Java heap space

    2.OutOfMemoryError錛?PermGen space

    3.OutOfMemoryError錛?unable to create new native thread.

    Tomcat鍐呭瓨婧㈠嚭瑙e喅鏂規(guī)

    瀵逛簬鍓嶄袱縐嶆儏鍐碉紝鍦ㄥ簲鐢ㄦ湰韜病鏈夊唴瀛樻硠闇茬殑鎯呭喌涓嬪彲浠ョ敤璁劇疆tomcat jvm鍙傛暟鏉ヨВ鍐熾€傦紙-Xms -Xmx -XX錛歅ermSize  -XX錛歁axPermSize錛?/p>

    鏈€鍚庝竴縐嶅彲鑳介渶瑕佽皟鏁存搷浣滅郴緇熷拰tomcat jvm鍙傛暟鍚屾椂璋冩暣鎵嶈兘杈懼埌鐩殑銆?/p>

    絎竴縐嶏細(xì)鏄爢婧㈠嚭銆?

    鍦↗VM涓鏋?8錛呯殑鏃墮棿鏄敤浜嶨C涓斿彲鐢ㄧ殑 Heap size 涓嶈凍2錛呯殑鏃跺€欏皢鎶涘嚭姝ゅ紓甯鎬俊鎭€?/p>

    娌℃湁鍐呭瓨娉勯湶鐨勬儏鍐典笅錛岃皟鏁?Xms -Xmx鍙傛暟鍙互瑙e喅銆?/p>

    -Xms錛氬垵濮嬪爢澶у皬

    -Xmx錛氭渶澶у爢澶у皬

    浣嗗爢鐨勫ぇ灝忓彈涓嬮潰涓夋柟闈㈠獎(jiǎng)鍝嶏細(xì)

    1.鐩稿叧鎿嶄綔緋葷粺鐨勬暟鎹ā鍨嬶紙32-bt榪樻槸64-bit錛夐檺鍒訛紱錛?2浣嶇郴緇熶笅錛屼竴鑸檺鍒跺湪1.5G~2G錛涙垜鍦?003 server 緋葷粺涓嬶紙鐗╃悊鍐呭瓨錛?G鍜?G錛宩dk錛?.6錛夋祴璇?1612M錛?4涓烘搷浣滅郴緇熷鍐呭瓨鏃犻檺鍒躲€傦級(jí)

    2.緋葷粺鐨勫彲鐢ㄨ櫄鎷熷唴瀛橀檺鍒訛紱

    3.緋葷粺鐨勫彲鐢ㄧ墿鐞嗗唴瀛橀檺鍒躲€?/p>

    鍫嗙殑澶у皬鍙互浣跨敤 java -Xmx***M  version 鍛戒護(hù)鏉ユ祴璇?銆傛敮鎸佺殑璇濅細(xì)鍑虹幇jdk鐨勭増鏈彿錛屼笉鏀寔浼?xì)鎶ラ敊銆?/p>

    -Xms -Xmx涓€鑸厤緗垚涓€鏍鋒瘮杈冨ソ姣斿set JAVA_OPTS= -Xms1024m -Xmx1024m

    絎簩縐嶏細(xì)姘鎬箙淇濆瓨鍖哄煙婧㈠嚭

    PermGen space鐨勫叏縐版槸Permanent Generation space錛屾槸鎸囧唴瀛樼殑姘鎬箙淇濆瓨鍖哄煙銆傝繖涓€閮ㄥ垎鐢ㄤ簬瀛樻斁Class鍜孧eta鐨勪俊鎭紝Class鍦ㄨ Load鐨勬椂鍊欒鏀懼叆PermGen space鍖哄煙錛屽畠鍜屽拰瀛樻斁Instance鐨凥eap鍖哄煙涓嶅悓錛孏C錛圙arbage Collection錛変笉浼?xì)鍦ㄤ溉潹嬪簭杩愯鏈熷PermGen space榪涜娓呯悊錛屾墍浠ュ鏋滀綘鐨凙PP浼?xì)LOAD寰堝CLASS鐨勮瘽錛屽氨寰堝彲鑳藉嚭鐜癙ermGen space閿欒銆傝繖縐嶉敊璇父瑙佸湪web鏈嶅姟鍣?瀵笿SP榪涜pre compile鐨勬椂鍊欍€備絾鐩墠鐨刪ibernate鍜宻pring欏圭洰涓篃寰堝鏄撳嚭鐜拌繖鏍風(fēng)殑闂銆俬ttp://www.javaeye.com/topic/80620 ?page=1 鐨勫笘瀛愭湁璁ㄨ鐨勮繖涓棶棰樸€傚彲鑳芥槸鐢變簬榪欎簺妗嗘灦浼?xì)鍔ㄦ€乧lass錛岃€屼笖jvm鐨刧c鏄笉浼?xì)娓呯悊PemGen space鐨勶紝瀵艱嚧鍐呭瓨婧㈠嚭銆?/p>

    榪欎竴涓竴鑸槸鍔犲ぇ-XX錛歅ermSize  -XX錛歁axPermSize 鏉ヨВ鍐抽棶棰樸€?/p>

    -XX錛歅ermSize 姘鎬箙淇濆瓨鍖哄煙鍒濆澶у皬

    -XX錛歅ermSize 姘鎬箙淇濆瓨鍖哄煙鍒濆鏈€澶у€?/p>

    榪欎竴鑸粨鍚堢涓€鏉′嬌鐢紝姣斿 set JAVA_OPTS= -Xms1024m -Xmx1024m  -XX錛歅ermSize=128M -XX錛歅ermSize=256M

    鏈変竴鐐歸渶瑕佹敞鎰忥細(xì)java -Xmx***M  version 鍛戒護(hù)鏉ユ祴璇曠殑鏈€澶у爢鍐呭瓨鏄?-Xmx涓?-XX錛歅ermSize鐨?鍜?姣斿緋葷粺鏀寔鏈€澶х殑jvm鍫嗗ぇ灝忎簨1.5G錛岄偅  -Xmx1024m  -XX錛歅ermSize=768M 鏄棤娉曡繍琛岀殑銆?/p>

    絎笁縐嶏細(xì)鏃犳硶鍒涘緩鏂扮殑綰跨▼銆?

    榪欑鐜拌薄姣旇緝?yōu)畱瑙佸Q屼篃姣旇緝濂囨€紝涓昏鏄拰jvm涓庣郴緇熷唴瀛樼殑姣斾緥鏈夊叧銆?/p>

    榪欑鎬簨鏄洜涓篔VM宸茬粡琚郴緇熷垎閰嶄簡(jiǎn)澶ч噺鐨勫唴瀛橈紙姣斿1.5G錛夛紝騫朵笖瀹冭嚦灝戣鍗犵敤鍙敤鍐呭瓨鐨勪竴鍗娿€傛湁浜哄彂鐜幫紝鍦ㄧ嚎紼嬩釜鏁板緢澶氱殑鎯呭喌涓嬶紝浣犲垎閰嶇粰JVM 鐨勫唴瀛樿秺澶氾紝閭d箞錛屼笂榪伴敊璇彂鐢熺殑鍙兘鎬у氨瓚婂ぇ銆?/p>

    浜х敓榪欑鐜拌薄鐨勫師鍥犲涓嬶紙浠庤繖涓猙log涓簡(jiǎn)瑙e埌鍘熷洜錛歨ttp://hi.baidu.com/hexiong/blog/item/16dc9e518fb10c2542a75b3c.html 錛夛細(xì)

    姣忎竴涓?2浣嶇殑榪涚▼鏈€澶氬彲浠ヤ嬌鐢?G鐨勫彲鐢ㄥ唴瀛橈紝鍥犱負(fù)鍙﹀2G琚搷浣滅郴緇熶繚鐣欍€傝繖閲屽亣璁句嬌鐢?.5G緇橨VM錛岄偅涔堣繕浣欎笅500M鍙敤鍐呭瓨銆傝繖500M鍐呭瓨涓殑涓€閮ㄥ垎蹇呴』鐢ㄤ簬緋葷粺dll鐨勫姞杞斤紝閭d箞鐪熸鍓╀笅鐨勪篃璁稿彧鏈?00M錛岀幇鍦ㄥ叧閿殑鍦版柟鍑虹幇浜?jiǎn)锛?xì)褰撲綘浣跨敤Java 鍒涘緩涓€涓嚎紼嬶紝鍦↗VM鐨勫唴瀛橀噷涔熶細(xì)鍒涘緩涓€涓猅hread瀵硅薄錛屼絾鏄悓鏃朵篃浼?xì)鍦ㄦ搷浣溇p葷粺閲屽垱寤轟竴涓湡姝g殑鐗╃悊綰跨▼錛堝弬鑰僇VM瑙勮寖錛夛紝鎿嶄綔緋葷粺浼?xì)鍦ㄤ綑涓嬬?00鍏嗗唴瀛橀噷鍒涘緩榪欎釜鐗╃悊綰跨▼錛岃€屼笉鏄湪JVM鐨?500M鐨勫唴瀛樺爢閲屽垱寤恒€傚湪jdk1.4閲屽ご錛岄粯璁ょ殑鏍堝ぇ灝忔槸256KB錛屼絾鏄湪jdk1.5閲屽ご錛岄粯璁ょ殑鏍堝ぇ灝忎負(fù)1M姣忕嚎紼嬶紝鍥犳錛屽湪浣欎笅400M鐨勫彲鐢ㄥ唴瀛橀噷杈規(guī)垜浠渶澶氫篃鍙兘鍒涘緩400涓彲鐢ㄧ嚎紼嬨€?/p>

    榪欐牱緇撹灝卞嚭鏉ヤ簡(jiǎn)錛岃鎯沖垱寤烘洿澶氱殑綰跨▼錛屼綘蹇呴』鍑忓皯鍒嗛厤緇橨VM鐨勬渶澶у唴瀛樸€傝繕鏈変竴縐嶅仛娉曟槸璁㎎VM瀹夸富鍦ㄤ綘鐨凧NI浠g爜閲岃竟銆?/p>

    緇欏嚭涓€涓湁鍏寵兘澶熷垱寤虹嚎紼嬬殑鏈€澶т釜鏁扮殑浼扮畻鍏紡錛?/p>

    錛圡axProcessMemory - JVMMemory - ReservedOsMemory錛?/ 錛圱hreadStackSize錛?= Number of threads

    瀵逛簬jdk1.5鑰岃█錛屽亣璁炬搷浣滅郴緇熶繚鐣?20M鍐呭瓨錛?/p>

    1.5GB JVM錛?錛?GB-1.5Gb-120MB錛?錛?MB錛?= ~380 threads

    1.0GB JVM錛?錛?GB-1.0Gb-120MB錛?錛?MB錛?= ~880 threads

    鍦?000/XP/2003鐨刡oot.ini閲屽ご鏈変竴涓惎鍔ㄩ€夐」錛屽ソ鍍忔槸錛?PAE /3G 錛屽彲浠ヨ鐢ㄦ埛榪涚▼鏈€澶у唴瀛樻墿鍏呰嚦3G錛岃繖鏃舵搷浣滅郴緇熷彧鑳藉崰鐢ㄦ渶澶?G鐨勮櫄瀛樸€傞偅鏍峰簲璇ュ彲浠ヨJVM鍒涘緩鏇村鐨勭嚎紼嬨€?/p>

    鍥犳榪欑鎯呭喌闇€瑕佺粨鍚堟搷浣滅郴緇熻繘琛岀浉鍏寵皟鏁淬€?/p>

    鍥犳錛氭垜浠渶瑕佺粨鍚堜笉鍚屾儏鍐靛tomcat鍐呭瓨鍒嗛厤榪涜涓嶅悓鐨勮瘖鏂墠鑳戒粠鏍規(guī)湰涓婅В鍐抽棶棰樸€?/p>

    浠ヤ笂灝辨槸閽堝Tomcat鍐呭瓨婧㈠嚭鐨勫嚑縐嶈В鍐蟲柟妗堛€傛湰鏂囨潵鑷狦eorge鐨勫崥瀹細(xì)銆妕omcat鍐呭瓨婧㈠嚭鎬葷粨銆?/p>


鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/Senton/archive/2010/07/01/5707446.aspx



鐤媯 2010-10-16 13:28 鍙戣〃璇勮
]]>
Tomcat鍚姩鍒嗘瀽server.xml http://www.aygfsteel.com/freeman1984/archive/2010/10/11/334485.html鐤媯鐤媯Mon, 11 Oct 2010 15:13:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2010/10/11/334485.htmlhttp://www.aygfsteel.com/freeman1984/comments/334485.htmlhttp://www.aygfsteel.com/freeman1984/archive/2010/10/11/334485.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/334485.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/334485.html

1 - Tomcat Server鐨勭粍鎴愰儴鍒?
1.1 - Server

A Server element represents the entire Catalina servlet container. (Singleton)

1.2 - Service

A Service element represents the combination of one or more Connector components that share a single Engine
Service鏄繖鏍蜂竴涓泦鍚堬細(xì)瀹冪敱涓€涓垨鑰呭涓狢onnector緇勬垚錛屼互鍙?qiáng)涓€涓狤ngine錛岃礋璐e鐞嗘墍鏈塁onnector鎵€鑾峰緱鐨勫鎴瘋姹?/font>

1.3 - Connector

涓€涓狢onnector灝嗗湪鏌愪釜鎸囧畾绔彛涓婁睛鍚鎴瘋姹傦紝騫跺皢鑾峰緱鐨勮姹備氦緇橢ngine鏉ュ鐞嗭紝浠嶦ngine澶勮幏寰楀洖搴斿茍榪斿洖瀹㈡埛
TOMCAT鏈変袱涓吀鍨嬬殑Connector錛屼竴涓洿鎺ヤ睛鍚潵鑷猙rowser鐨刪ttp璇鋒眰錛屼竴涓睛鍚潵鑷叾瀹僕ebServer鐨勮姹?br /> Coyote Http/1.1 Connector 鍦ㄧ鍙?080澶勪睛鍚潵鑷鎴穊rowser鐨刪ttp璇鋒眰
Coyote JK2 Connector 鍦ㄧ鍙?009澶勪睛鍚潵鑷叾瀹僕ebServer(Apache)鐨剆ervlet/jsp浠g悊璇鋒眰

1.4 - Engine

The Engine element represents the entire request processing machinery associated with a particular Service
It receives and processes all requests from one or more Connectors
and returns the completed response to the Connector for ultimate transmission back to the client
Engine涓嬪彲浠ラ厤緗涓櫄鎷熶富鏈篤irtual Host錛屾瘡涓櫄鎷熶富鏈洪兘鏈変竴涓煙鍚?br /> 褰揈ngine鑾峰緱涓€涓姹傛椂錛屽畠鎶婅璇鋒眰鍖歸厤鍒版煇涓狧ost涓婏紝鐒跺悗鎶婅璇鋒眰浜ょ粰璇ost鏉ュ鐞?br /> Engine鏈変竴涓粯璁よ櫄鎷熶富鏈猴紝褰撹姹傛棤娉曞尮閰嶅埌浠諱綍涓€涓狧ost涓婄殑鏃跺€欙紝灝嗕氦緇欒榛樿Host鏉ュ鐞?/font>

1.5 - Host

浠h〃涓€涓猇irtual Host錛岃櫄鎷熶富鏈猴紝姣忎釜铏氭嫙涓繪満鍜屾煇涓綉緇滃煙鍚岲omain Name鐩稿尮閰?br /> 姣忎釜铏氭嫙涓繪満涓嬮兘鍙互閮ㄧ講(deploy)涓€涓垨鑰呭涓猈eb App錛屾瘡涓猈eb App瀵瑰簲浜庝竴涓狢ontext錛屾湁涓€涓狢ontext path
褰揌ost鑾峰緱涓€涓姹傛椂錛屽皢鎶婅璇鋒眰鍖歸厤鍒版煇涓狢ontext涓婏紝鐒跺悗鎶婅璇鋒眰浜ょ粰璇ontext鏉ュ鐞?br /> 鍖歸厤鐨勬柟娉曟槸“鏈€闀垮尮閰?#8221;錛屾墍浠ヤ竴涓猵ath==""鐨凜ontext灝嗘垚涓鴻Host鐨勯粯璁ontext
鎵€鏈夋棤娉曞拰鍏跺畠Context鐨勮礬寰勫悕鍖歸厤鐨勮姹傞兘灝嗘渶緇堝拰璇ラ粯璁ontext鍖歸厤


1.6 - Context

涓€涓狢ontext瀵瑰簲浜庝竴涓猈eb Application錛屼竴涓猈eb Application鐢變竴涓垨鑰呭涓猄ervlet緇勬垚
Context鍦ㄥ垱寤虹殑鏃跺€欏皢鏍規(guī)嵁閰嶇疆鏂囦歡錛凜ATALINA_HOME/conf/web.xml鍜岋紕WEBAPP_HOME/WEB-INF/web.xml杞藉叆Servlet綾?br /> 褰揅ontext鑾峰緱璇鋒眰鏃訛紝灝嗗湪鑷繁鐨勬槧灝勮〃(mapping table)涓鎵劇浉鍖歸厤鐨凷ervlet綾?br /> 濡傛灉鎵懼埌錛屽垯鎵ц璇ョ被錛岃幏寰楄姹傜殑鍥炲簲錛屽茍榪斿洖

2 - Tomcat Server鐨勭粨鏋勫浘
 
3 - 閰嶇疆鏂囦歡錛凜ATALINA_HOME/conf/server.xml鐨勮鏄?
璇ユ枃浠舵弿榪頒簡(jiǎn)濡備綍鍚姩Tomcat Server


<!----------------------------------------------------------------------------------------------->


<!-- 鍚姩Server
     鍦ㄧ鍙?005澶勭瓑寰呭叧闂懡浠?br />      濡傛灉鎺ュ彈鍒?SHUTDOWN"瀛楃涓插垯鍏抽棴鏈嶅姟鍣?br />      -->

<Server port="8005" shutdown="SHUTDOWN" debug="0">


  <!-- Listener ???
       鐩墠娌℃湁鐪嬪埌榪欓噷
       -->

  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" debug="0"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" debug="0"/>


  <!-- Global JNDI resources ???
       鐩墠娌℃湁鐪嬪埌榪欓噷錛屽厛鐣ュ幓
       -->

  <GlobalNamingResources>
    ... ... ... ...
  </GlobalNamingResources>

  <!-- Tomcat鐨凷tandalone Service
       Service鏄竴緇凜onnector鐨勯泦鍚?br />        瀹冧滑鍏辯敤涓€涓狤ngine鏉ュ鐞嗘墍鏈塁onnector鏀跺埌鐨勮姹?br />        -->

  <Service name="Tomcat-Standalone">


    <!-- Coyote HTTP/1.1 Connector
         className : 璇onnector鐨勫疄鐜扮被鏄痮rg.apache.coyote.tomcat4.CoyoteConnector
         port : 鍦ㄧ鍙e彿8080澶勪睛鍚潵鑷鎴穊rowser鐨凥TTP1.1璇鋒眰
         minProcessors : 璇onnector鍏堝垱寤?涓嚎紼嬬瓑寰呭鎴瘋姹傦紝姣忎釜璇鋒眰鐢變竴涓嚎紼嬭礋璐?br />          maxProcessors : 褰撶幇鏈夌殑綰跨▼涓嶅鏈嶅姟瀹㈡埛璇鋒眰鏃訛紝鑻ョ嚎紼嬫€繪暟涓嶈凍75涓紝鍒欏垱寤烘柊綰跨▼鏉ュ鐞嗚姹?br />          acceptCount : 褰撶幇鏈夌嚎紼嬪凡緇忚揪鍒版渶澶ф暟75鏃訛紝涓哄鎴瘋姹傛帓闃?br />                        褰撻槦鍒椾腑璇鋒眰鏁拌秴榪?00鏃訛紝鍚庢潵鐨勮姹傝繑鍥濩onnection refused閿欒
         redirectport : 褰撳鎴瘋姹傛槸https鏃訛紝鎶婅璇鋒眰杞彂鍒扮鍙?443鍘?br />          鍏跺畠灞炴€х暐
         -->

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
               port="8080"
               minProcessors="5" maxProcessors="75" acceptCount="100"
               enableLookups="true"
               redirectPort="8443"
               debug="0"
               connectionTimeout="20000"
               useURIValidationHack="false"
               disableUploadTimeout="true" />


    <!-- Engine鐢ㄦ潵澶勭悊Connector鏀跺埌鐨凥ttp璇鋒眰
         瀹冨皢鍖歸厤璇鋒眰鍜岃嚜宸辯殑铏氭嫙涓繪満錛屽茍鎶婅姹傝漿浜ょ粰瀵瑰簲鐨凥ost鏉ュ鐞?br />          榛樿铏氭嫙涓繪満鏄痩ocalhost
         -->

    <Engine name="Standalone" defaultHost="localhost" debug="0">
   

      <!-- 鏃ュ織綾伙紝鐩墠娌℃湁鐪嬪埌錛岀暐鍘誨厛 -->

      <Logger className="org.apache.catalina.logger.FileLogger" .../>

      <!-- Realm錛岀洰鍓嶆病鏈夌湅鍒幫紝鐣ュ幓鍏?-->

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm" .../>


      <!-- 铏氭嫙涓繪満localhost
           appBase : 璇ヨ櫄鎷熶富鏈虹殑鏍圭洰褰曟槸webapps/
           瀹冨皢鍖歸厤璇鋒眰鍜岃嚜宸辯殑Context鐨勮礬寰勶紝騫舵妸璇鋒眰杞氦緇欏搴旂殑Context鏉ュ鐞?br />            -->

      <Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true">
     

        <!-- 鏃ュ織綾伙紝鐩墠娌℃湁鐪嬪埌錛岀暐鍘誨厛 -->

        <Logger className="org.apache.catalina.logger.FileLogger" .../>
     

        <!-- Context錛屽搴斾簬涓€涓猈eb App
             path : 璇ontext鐨勮礬寰勫悕鏄?"錛屾晠璇ontext鏄Host鐨勯粯璁ontext
             docBase : 璇ontext鐨勬牴鐩綍鏄痺ebapps/mycontext/
             -->

        <Context path="" docBase="mycontext" debug="0"/>
       

        <!-- 鍙﹀涓€涓狢ontext錛岃礬寰勫悕鏄?wsota -->

        <Context path="/wsota" docBase="wsotaProject" debug="0"/>
            
       
      </Host>
     
    </Engine>

  </Service>

</Server>


<!----------------------------------------------------------------------------------------------->

 

4 - Context鐨勯儴緗查厤緗枃浠秝eb.xml鐨勮鏄?
涓€涓狢ontext瀵瑰簲浜庝竴涓猈eb App錛屾瘡涓猈eb App鏄敱涓€涓垨鑰呭涓猻ervlet緇勬垚鐨?br /> 褰撲竴涓猈eb App琚垵濮嬪寲鐨勬椂鍊欙紝瀹冨皢鐢ㄨ嚜宸辯殑ClassLoader瀵硅薄杞藉叆“閮ㄧ講閰嶇疆鏂囦歡web.xml”涓畾涔夌殑姣忎釜servlet綾?br /> 瀹冮鍏堣澆鍏ュ湪錛凜ATALINA_HOME/conf/web.xml涓儴緗茬殑servlet綾?br /> 鐒跺悗杞藉叆鍦ㄨ嚜宸辯殑Web App鏍圭洰褰曚笅鐨刉EB-INF/web.xml涓儴緗茬殑servlet綾?br /> web.xml鏂囦歡鏈変袱閮ㄥ垎錛歴ervlet綾誨畾涔夊拰servlet鏄犲皠瀹氫箟
姣忎釜琚澆鍏ョ殑servlet綾婚兘鏈変竴涓悕瀛楋紝涓旇濉叆璇ontext鐨勬槧灝勮〃(mapping table)涓紝鍜屾煇縐峌RL PATTERN瀵瑰簲
褰撹Context鑾峰緱璇鋒眰鏃訛紝灝嗘煡璇apping table錛屾壘鍒拌璇鋒眰鐨剆ervlet錛屽茍鎵ц浠ヨ幏寰楄姹傚洖搴?/font>


銆€銆€鍒嗘瀽涓€涓嬫墍鏈夌殑Context鍏變韓鐨剋eb.xml鏂囦歡錛屽湪鍏朵腑瀹氫箟鐨剆ervlet琚墍鏈夌殑Web App杞藉叆

 


<!----------------------------------------------------------------------------------------------->


<web-app>


  <!-- 姒傝堪錛?br />        璇ユ枃浠舵槸鎵€鏈夌殑WEB APP鍏辯敤鐨勯儴緗查厤緗枃浠訛紝
       姣忓綋涓€涓猈EB APP琚獶EPLOY錛岃鏂囦歡閮藉皢鍏堣澶勭悊錛岀劧鍚庢墠鏄疻EB APP鑷繁鐨?WEB-INF/web.xml
       -->

 

  <!--  +-------------------------+  -->
  <!--  |    servlet綾誨畾涔夐儴鍒?nbsp;   |  -->
  <!--  +-------------------------+  -->

  <!-- DefaultServlet
       褰撶敤鎴風(fēng)殑HTTP璇鋒眰鏃犳硶鍖歸厤浠諱綍涓€涓猻ervlet鐨勬椂鍊欙紝璇ervlet琚墽琛?br />        URL PATTERN MAPPING : /
       -->

    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.DefaultServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>


  <!-- InvokerServlet
       澶勭悊涓€涓猈EB APP涓殑鍖垮悕servlet
       褰撲竴涓猻ervlet琚紪鍐欏茍緙栬瘧鏀懼叆/WEB-INF/classes/涓紝鍗存病鏈夊湪/WEB-INF/web.xml涓畾涔夌殑鏃跺€?br />        璇ervlet琚皟鐢紝鎶婂尶鍚峴ervlet鏄犲皠鎴?servlet/ClassName鐨勫艦寮?br />        URL PATTERN MAPPING : /servlet/*
       -->

    <servlet>
        <servlet-name>invoker</servlet-name>
        <servlet-class>
          org.apache.catalina.servlets.InvokerServlet
        </servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <load-on-startup>2</load-on-startup>
    </servlet>


  <!-- JspServlet
       褰撹姹傜殑鏄竴涓狫SP欏甸潰鐨勬椂鍊欙紙*.jsp錛夎servlet琚皟鐢?br />        瀹冩槸涓€涓狫SP緙栬瘧鍣紝灝嗚姹傜殑JSP欏甸潰緙栬瘧鎴愪負(fù)servlet鍐嶆墽琛?br />        URL PATTERN MAPPING : *.jsp
       -->

    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <init-param>
            <param-name>logVerbosityLevel</param-name>
            <param-value>WARNING</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

 

  <!--  +---------------------------+  -->
  <!--  |    servlet鏄犲皠瀹氫箟閮ㄥ垎    |  -->
  <!--  +---------------------------+  -->

   
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>invoker</servlet-name>
        <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jsp</url-pattern>
    </servlet-mapping>


  <!--  +------------------------+  -->
  <!--  |    鍏跺畠閮ㄥ垎錛岀暐鍘誨厛    |  -->
  <!--  +------------------------+  -->

    ... ... ... ...

</web-app>


<!----------------------------------------------------------------------------------------------->

 

5 - Tomcat Server澶勭悊涓€涓猦ttp璇鋒眰鐨勮繃紼?
鍋囪鏉ヨ嚜瀹㈡埛鐨勮姹備負(fù)錛?br />
http://localhost:8080/wsota/wsota_index.jsp

1) 璇鋒眰琚彂閫佸埌鏈満绔彛8080錛岃鍦ㄩ偅閲屼睛鍚殑Coyote HTTP/1.1 Connector鑾峰緱

2) Connector鎶婅璇鋒眰浜ょ粰瀹冩墍鍦ㄧ殑Service鐨凟ngine鏉ュ鐞嗭紝騫剁瓑寰呮潵鑷狤ngine鐨勫洖搴?/font>

3) Engine鑾峰緱璇鋒眰localhost/wsota/wsota_index.jsp錛屽尮閰嶅畠鎵€鎷ユ湁鐨勬墍鏈夎櫄鎷熶富鏈篐ost

4) Engine鍖歸厤鍒板悕涓簂ocalhost鐨凥ost錛堝嵆浣垮尮閰嶄笉鍒頒篃鎶婅姹備氦緇欒Host澶勭悊錛屽洜涓鴻Host琚畾涔変負(fù)璇ngine鐨勯粯璁や富鏈猴級(jí)

5) localhost Host鑾峰緱璇鋒眰/wsota/wsota_index.jsp錛屽尮閰嶅畠鎵€鎷ユ湁鐨勬墍鏈塁ontext

6) Host鍖歸厤鍒拌礬寰勪負(fù)/wsota鐨凜ontext錛堝鏋滃尮閰嶄笉鍒板氨鎶婅璇鋒眰浜ょ粰璺緞鍚嶄負(fù)""鐨凜ontext鍘誨鐞嗭級(jí)

7) path="/wsota"鐨凜ontext鑾峰緱璇鋒眰/wsota_index.jsp錛屽湪瀹冪殑mapping table涓鎵懼搴旂殑servlet

8) Context鍖歸厤鍒癠RL PATTERN涓?.jsp鐨剆ervlet錛屽搴斾簬JspServlet綾?/font>

9) 鏋勯€燞ttpServletRequest瀵硅薄鍜孒ttpServletResponse瀵硅薄錛屼綔涓哄弬鏁拌皟鐢↗spServlet鐨刣oGet鎴杁oPost鏂規(guī)硶

10)Context鎶婃墽琛屽畬浜?jiǎn)涔嬪悗鐨凥ttpServletResponse瀵硅薄榪斿洖緇橦ost

11)Host鎶奌ttpServletResponse瀵硅薄榪斿洖緇橢ngine

12)Engine鎶奌ttpServletResponse瀵硅薄榪斿洖緇機(jī)onnector

13)Connector鎶奌ttpServletResponse瀵硅薄榪斿洖緇欏鎴穊rowser

杞澆鑷細(xì)http://www.360doc.com/content/05/1116/10/2689_31126.shtml

鐤媯 2010-10-11 23:13 鍙戣〃璇勮
]]>
Java铏氭嫙鏈哄弬鏁?-XX絳夌浉鍏沖弬鏁板簲鐢?/title><link>http://www.aygfsteel.com/freeman1984/archive/2010/10/11/334483.html</link><dc:creator>鐤媯</dc:creator><author>鐤媯</author><pubDate>Mon, 11 Oct 2010 15:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2010/10/11/334483.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/334483.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2010/10/11/334483.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/334483.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/334483.html</trackback:ping><description><![CDATA[<p><br />瀹樻柟緲昏瘧鏂囨。瑙侊細(xì)<a >http://www.cnblogs.com/z-zw/archive/2010/09/30/1839394.html</a><br />閫氬父錛屾垜浠負(fù)浜?jiǎn)閬垮厤鍐呭瓨婧㈠嚭绛夐棶棰樺Q岄渶瑕佽緗幆澧冨彉閲?br />JAVA_OPTS    -Xms256M -Xmx512M 絳夛紝銆愬浜庢湇鍔″櫒錛屼竴鑸兘璁劇疆鎴愪竴鏍風(fēng)殑銆?br />浣嗘槸鏈夌殑鏃跺€欏彲鑳借繖鏍風(fēng)殑璁劇疆榪樹細(xì)涓嶈(姣斿錛屽綋Server搴旂敤紼嬪簭鍔犺澆杈冨綾繪椂錛屽嵆jvm鍔犺澆綾繪椂錛屾案涔呭煙涓殑瀵硅薄鎬ュ墽澧炲姞錛屼粠鑰屼嬌jvm涓嶆柇璋冩暣姘鎬箙鍩熷ぇ灝忥紝涓轟簡(jiǎn)閬垮厤璋冩暣)錛屼綘鍙互浣跨敤鏇村鐨勫弬鏁伴厤緗紝濡傦細(xì) java -Xms512m -Xmx512m -XX:PermSize=64m -XX:MaxPermSize=128m<br />鍏朵腑錛屼嬌鐢?nbsp;  -XX:MaxPerSize鏍囧織鏉ュ鍔犳案涔呭煙鐨勫ぇ灝忥紝-XX:PerSize鏍囧織璁劇疆鍒濆鍊?/p> <p>-XX</p> <p>鍩轟簬 Sun 鐨?Java 2 Standard Edition錛圝2SE錛? 鏈夌敓鎴愬瀮鍦懼洖鏀跺姛鑳斤紝榪欏厑璁稿垎闅斿唴瀛樻睜浠ュ寘鍚笉鍚屾椂鏁堢殑瀵硅薄銆傚瀮鍦懼洖鏀跺驚鐜牴鎹椂鏁堟敹闆嗕笌鍏朵粬瀵硅薄褰兼鐙珛鐨勫璞°€備嬌鐢ㄥ叾浠栧弬鏁幫紝鎮(zhèn)ㄥ彲浠ュ崟鐙緗唴瀛樻睜鐨?澶у皬銆備負(fù)浜?jiǎn)瀹炵幇鏇村ソ鐨勬€ц兘錛屾?zhèn)ㄥ簲璇ュ鍖呭惈鐭湡瀛構(gòu)z誨璞$殑姹犵殑澶у皬榪涜璁劇疆錛屼互浣胯姹犱腑鐨勫璞$殑瀛樻椿鏃墮棿涓嶄細(xì)瓚呰繃涓€涓瀮鍦懼洖鏀跺驚鐜€傛柊鐢熸垚鐨勬睜鐨勫ぇ灝忕敱 NewSize 鍜?MaxNewSize 鍙傛暟紜畾銆?/p> <p>絎竴嬈″瀮鍦懼洖鏀跺驚鐜腑瀛樻椿涓嬫潵鐨勫璞¤漿縐誨埌鍙︿竴涓睜涓€傜敓榪樿€呮睜鐨勫ぇ灝忕敱鍙傛暟 SurvivorRatio 紜畾銆?濡傛灉鍨冨溇鍥炴敹鍙樻垚浜?jiǎn)鐡堕锛屾?zhèn)ㄥ彲浠ュ皾璇曞畾鍒剁敓鎴愭睜璁劇疆銆傝鐩戞帶鍨冨溇鍥炴敹緇熻淇℃伅錛屼嬌鐢?Tivoli Performance Viewer 涓殑瀵硅薄緇熻淇℃伅鎴?verbose:gc 閰嶇疆璁劇疆銆?杈撳叆涓嬪垪鍊鹼細(xì) <br />-XX:NewSize (lower bound)<br />-XX:MaxNewSize (upper bound)<br />-XX:SurvivorRatio=NewRatioSize <br />-XX:NewSize 320m 姝ゅ€艱澶у彲璋冨ぇ鏂板璞″尯錛屽噺灝慒ull GC嬈℃暟<br />-XX:+UseParNewGC 錛氱緝鐭璵inor鏀墮泦鐨勬椂闂?鍙敤鏉ヨ緗茍琛屾敹闆嗐€愬CPU銆?br />-XX:+ParallelGCThreads 鍙敤鏉ュ鍔犲茍琛屽害銆愬CPU銆?br />-XX:+UseParallelGC 璁劇疆鍚庡彲浠ヤ嬌鐢ㄥ茍琛屾竻闄ゆ敹闆嗗櫒銆愬CPU銆?Xss錛氭瘡涓嚎紼嬬殑Stack澶у皬</p> <p>-verbose:gc 鏄劇ず鍨冨溇鏀墮泦淇℃伅<br />-Xloggc:gc.log 鎸囧畾鍨冨溇鏀墮泦鏃ュ織鏂囦歡<br />鍒氬垰浜?jiǎn)瑙e埌鐨勪竴浜涘弬鏁幫紙寰呭疄璺墊祴璇曪級(jí)<br />-Xmn錛歽oung generation鐨刪eap澶у皬錛屼竴鑸緗負(fù)Xmx鐨?銆?鍒嗕箣涓€<br />-XX:+UseConcMarkSweepGC 錛氱緝鐭璵ajor鏀墮泦鐨勬椂闂?br />鎻愮ず錛氭閫夐」鍦℉eap Size 姣旇緝澶ц€屼笖Major鏀墮泦鏃墮棿杈冮暱鐨勬儏鍐典笅浣跨敤鏇村悎閫?/p> <p>涓嬮潰鐨勫懡浠ゆ妸鏁翠釜鍫嗚緗垚128m錛屾柊鍩熸瘮鐜囪緗垚3錛屽嵆鏂板煙涓庢棫鍩熸瘮渚嬩負(fù)1錛?錛屾柊鍩熶負(fù)鍫嗙殑1/4鎴?2M錛?/p> <p>java –Xms128m –Xmx128m –XX:NewRatio =3緙虹渷鍊間負(fù)錛歂ewSize=2m MaxNewSize=32m SurvivorRatio=2銆備絾鏄紝濡傛灉 JVM 鐨勫爢澶у皬澶т簬 1GB錛屽垯搴旇浣跨敤鍊鹼細(xì)-XX:newSize=640m -XX:MaxNewSize=640m -XX:SurvivorRatio=16錛屾垨鑰呭皢鍫嗙殑鎬誨ぇ灝忕殑 50% 鍒?60% 鍒嗛厤緇欐柊鐢熸垚鐨勬睜銆?/p> <p>          涓句緥錛氭案涔呭煙榛樿澶у皬涓?m銆傝繍琛岀▼搴忔椂錛宩vm浼?xì)璋冩暣姘镐箙鍩熺殑澶畯浠ユ弧鑳鲩渶瑕併€傛瘡嬈¤皟鏁存椂錛宩vm浼?xì)瀵瑰爢杩涜涓€嬈″畬鍏ㄧ殑鍨冨溇鏀墮泦銆?/p> <p>浣跨敤-XX:MaxPerSize鏍囧織鏉ュ鍔犳案涔呭煙鐨勫ぇ灝忋€傚湪WebLogic Server搴旂敤紼嬪簭鍔犺澆杈冨綾繪椂錛岀粡甯擱渶瑕佸鍔犳案涔呭煙鐨勬渶澶у€箋€傚綋jvm鍔犺澆綾繪椂錛屾案涔呭煙涓殑瀵硅薄鎬ュ墽澧炲姞錛屼粠鑰屼嬌jvm涓嶆柇璋冩暣姘鎬箙鍩熷ぇ灝忋€備負(fù)浜?jiǎn)閬垮?璋冩暣錛屽彲浣跨敤-XX:PerSize鏍囧織璁劇疆鍒濆鍊箋€?br />   涓嬮潰鎶婃案涔呭煙鍒濆鍊艱緗垚32m錛屾渶澶у€艱緗垚64m銆?br />    java -Xms512m -Xmx512m -Xmn128m -XX:PermSize=32m -XX:MaxPermSize=64m</p> <p>榛樿鐘舵€佷笅錛孒otSpot鍦ㄦ柊鍩熶腑浣跨敤澶嶅埗鏀墮泦鍣ㄣ€傝鍩熶竴鑸垎涓轟笁涓儴鍒嗐€傜涓€閮ㄥ垎涓篍den錛岀敤浜庣敓鎴愭柊鐨勫璞°€傚彟涓ら儴鍒嗙О涓烘晳鍔╃┖闂達(dá)紝褰揈den鍏?婊℃椂錛屾敹闆嗗櫒鍋滄搴旂敤紼嬪簭錛屾妸鎵€鏈夊彲鍒拌揪瀵硅薄澶嶅埗鍒板綋鍓嶇殑from鏁戝姪絀洪棿錛屼竴鏃﹀綋鍓嶇殑from鏁戝姪絀洪棿鍏呮弧錛屾敹闆嗗櫒鍒欐妸鍙埌杈懼璞″鍒跺埌褰撳墠鐨則o鏁戝姪 絀洪棿銆侳rom鍜宼o鏁戝姪絀洪棿浜掓崲瑙掕壊銆傜淮鎸佹椿鍔ㄧ殑瀵硅薄灝嗗湪鏁戝姪絀洪棿涓嶆柇澶嶅埗錛岀洿鍒板畠浠幏寰椾嬌鐢ㄦ湡騫惰漿鍏ユ棫鍩熴€備嬌鐢?XX:SurvivorRatio鍙?鎺у埗鏂板煙瀛愮┖闂寸殑澶у皬銆?/p> <p>鐩墠錛屾垜鐨勭殑寮€鍙戠幆澧?2G鍐呭瓨錛宼omcat+eclipse 澶у瀷搴旂敤紼嬪簭<br />java -Xmx1024m -XX:PermSize=512m   鍩烘湰灝眔k澶ч儴鍒嗗簲鐢ㄤ簡(jiǎn)</p> <p> </p> <p>鎴戠殑鏈嶅姟鍣ㄥ弬鏁伴厤緗?<br />MY_PARAMS="-Xmn340m -Xss128k -XX:NewSize=640m -XX:MaxNewSize=640m -XX:PermSize=512m -XX:MaxPermSize=512m -XX:+UseParNewGC -Xloggc:gc.log"</p> <p>鏈枃鍑哄錛歨ttp://hi.baidu.com/china8jie/blog/item/7c4ac1a2e25a9fa5caefd0d1.html</p> <p> </p> <ol><li><strong>甯歌閰嶇疆姹囨€?/strong> </li><li>鍫嗚緗? <ul><li><strong>-Xms</strong> :鍒濆鍫嗗ぇ灝?</li><li><strong>-Xmx</strong> :鏈€澶у爢澶у皬 </li><li><strong>-XX:NewSize=n</strong> :璁劇疆騫磋交浠eぇ灝?</li><li><strong>-XX:NewRatio=n:</strong> 璁劇疆騫磋交浠e拰騫磋€佷唬鐨勬瘮鍊箋€傚:涓?錛岃〃紺哄勾杞諱唬涓庡勾鑰佷唬姣斿€間負(fù)1錛?錛屽勾杞諱唬鍗犳暣涓勾杞諱唬騫磋€佷唬鍜岀殑1/4 </li><li><strong>-XX:SurvivorRatio=n</strong> :騫磋交浠d腑Eden鍖轟笌涓や釜Survivor鍖虹殑姣斿€箋€傛敞鎰廠urvivor鍖烘湁涓や釜銆傚錛?錛岃〃紺篍den錛歋urvivor=3錛?錛屼竴涓猄urvivor鍖哄崰鏁翠釜騫磋交浠g殑1/5 </li><li><strong>-XX:MaxPermSize=n</strong> :璁劇疆鎸佷箙浠eぇ灝?/li></ul></li><li>鏀墮泦鍣ㄨ緗? <ul><li><strong>-XX:+UseSerialGC</strong> :璁劇疆涓茶鏀墮泦鍣?</li><li><strong>-XX:+UseParallelGC</strong> :璁劇疆騫惰鏀墮泦鍣?</li><li><strong>-XX:+UseParalledlOldGC</strong> :璁劇疆騫惰騫磋€佷唬鏀墮泦鍣?</li><li><strong>-XX:+UseConcMarkSweepGC</strong> :璁劇疆騫跺彂鏀墮泦鍣?/li></ul></li><li>鍨冨溇鍥炴敹緇熻淇℃伅 <ul><li><strong>-XX:+PrintGC</strong> </li><li><strong>-XX:+PrintGCDetails</strong> </li><li><strong>-XX:+PrintGCTimeStamps</strong> </li><li><strong>-Xloggc:filename</strong> </li></ul></li><li>騫惰鏀墮泦鍣ㄨ緗? <ul><li><strong>-XX:ParallelGCThreads=n</strong> :璁劇疆騫惰鏀墮泦鍣ㄦ敹闆嗘椂浣跨敤鐨凜PU鏁般€傚茍琛屾敹闆嗙嚎紼嬫暟銆?</li><li><strong>-XX:MaxGCPauseMillis=n</strong> :璁劇疆騫惰鏀墮泦鏈€澶ф殏鍋滄椂闂?</li><li><strong>-XX:GCTimeRatio=n</strong> :璁劇疆鍨冨溇鍥炴敹鏃墮棿鍗犵▼搴忚繍琛屾椂闂寸殑鐧懼垎姣斻€傚叕寮忎負(fù)1/(1+n)</li></ul></li><li>騫跺彂鏀墮泦鍣ㄨ緗? <ul><li><strong>-XX:+CMSIncrementalMode</strong> :璁劇疆涓哄閲忔ā寮忋€傞€傜敤浜庡崟CPU鎯呭喌銆?</li><li><strong>-XX:ParallelGCThreads=n</strong> :璁劇疆騫跺彂鏀墮泦鍣ㄥ勾杞諱唬鏀墮泦鏂瑰紡涓哄茍琛屾敹闆嗘椂錛屼嬌鐢ㄧ殑CPU鏁般€傚茍琛屾敹闆嗙嚎紼嬫暟銆?/li></ul></li></ol> <p><br /></p><img src ="http://www.aygfsteel.com/freeman1984/aggbug/334483.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">鐤媯</a> 2010-10-11 23:03 <a href="http://www.aygfsteel.com/freeman1984/archive/2010/10/11/334483.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Oracle 10g SQL 浼樺寲鍐嶅涔?/title><link>http://www.aygfsteel.com/freeman1984/archive/2010/10/10/334235.html</link><dc:creator>鐤媯</dc:creator><author>鐤媯</author><pubDate>Sun, 10 Oct 2010 15:52:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2010/10/10/334235.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/334235.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2010/10/10/334235.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/334235.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/334235.html</trackback:ping><description><![CDATA[<p> </p> <p>浠?i鍒?0g錛孫racle涓嶆柇榪涘寲鑷繁鐨凷QL Tuning鏅鴻兘錛屼竴浜涚綾嶇駭鐨勪紭鍖栧彛璇€宸茬粡澶辨晥銆?br />    浣嗘垜鍠滄澶辨晥錛屼笉鐢ㄨ鍙h瘈錛屾搷涓猅oad for Oracle Xpert 錛屾寜鐓уぇ鏂瑰悜鑸掕垝鏈嶆湇鐨勮皟浼樻墠鏄埍鍋氱殑浜嬫儏銆?/p> <p>1.Excution Plan<br />      Excution Plan鏄渶鍩烘湰鐨勮皟浼樻蹇碉紝涓嶇浣犵殑璋冧紭鍚瑰緱濡備綍澶╄姳涔卞爼錛岀粨鏋滆繕鏄鐢盓xcution plan鏉ユ樉紺篛racle 鏈€緇堢敤浠€涔堢儲(chǔ)寮曘€佹寜浠€涔堥『搴忚繛鎺ュ悇琛紝Full Table Scan榪樻槸Access by Rowid Index錛岀摱棰堝湪浠€涔堝湴鏂廣€傚鏋滄病鏈夊畠鐨勬寚瀵鹼紝涓€鍒囪皟浼橀兘鏄挋鐨勩€?/p> <p><br /> 2.Toad for Oracle Xpert<br />     鐢ㄥ畠鏉ヨ皟浼樺湪鐪熺殑濂借垝鏈嶃€俀uest 鍚炲茍浜?jiǎn)Lecco鍚庯紝灝嗗畠鏁村悎鍒頒簡(jiǎn)Toad 鐨凷QL Tunning閲岄潰錛氭渶娓呮櫚鐨勬墽琛岃鍒掓樉紺猴紝鑷姩鐢熸垚N鏉$瓑浠稴QL銆佺粰鍑轟紭鍖栧緩璁紝涓嶅悓SQL鎵ц璁″垝鐨勫姣旓紝榪樻湁瀹為檯鎵ц鐨勯€昏緫璇匯€佺墿鐞嗚鏁版嵁絳夌瓑涓€鐩簡(jiǎn)鐒躲€?/p> <p><br /> 3.绱㈠紩<br />    澶ч儴鍒嗙殑鎬ц兘闂鍏跺疄閮芥槸绱㈠紩搴旂敤鐨勯棶棰橈紝W(xué)here瀛愬彞銆丱rder By銆丟roup By 閮借鐢ㄥ埌绱㈠紩銆?br />    涓€鑸紑鍙戜漢鍛樿涓哄皢绱㈠紩寤哄叏浜?jiǎn)灏卞彲浠ヤ笅鐝洖瀹朵簡(jiǎn)锛屽疄鍒櫂q樻湁棰囧鐨勬€濋噺鍜岄櫡闃便€?/p> <p>3.1 绱㈠紩鍒椾笂涓嶈榪涜璁$畻<br />       榪欐槸鏈€鏈€鏅亶鐨勫け鏁堥櫡闃憋紝姣斿where trunc(order_date)=trunc(sysdate), i+2>4銆傜儲(chǔ)寮曞け鏁堢殑鍘熷洜涔熺畝鍗曪紝绱㈠紩鏄拡瀵瑰師鍊煎緩鐨勪簩鍙夋爲(wèi)錛屼綘灝嗗垪鍊?3/4+2鎶樿吘涓€鐣悗錛屽師鏉ョ殑浜屽弶鏍?wèi)褰撶劧灏辩敤涓嶄笂浜?jiǎn)銆傝В鍐崇殑鏂規(guī)硶:<br /> 銆€ 1.銆€鎹㈡垚絳変環(huán)璇硶錛屾瘮濡倀runc(order_date) 鎹㈡垚</p> <p>where order_date>trunc(sysdate)-1 and order_date<trunc(sysdate)+1銆€ 2.    鐗瑰埆涓鴻綆楀緩绔嬪嚱鏁扮儲(chǔ)寮?/p> <p>create index 錛XXXX on shop_order(trunc(order_date))    3.    灝嗚綆椾粠絳夊彿宸﹁竟縐誨埌鍙寵竟<br /> 銆€榪欐槸閽堝鏌愪簺鏃犲績(jī)涔嬪け鐨勭籂姝o紝鎶奱*2>4銆€鏀逛負(fù)a>4/2錛涙妸TO_CHAR(zip) = '94002' 鏀逛負(fù)zip = TO_NUMBER('94002');</p> <p>3.2 CBO涓庣儲(chǔ)寮曢€夋嫨鎬?br />      寤轟簡(jiǎn)绱㈠紩涔熶笉涓€瀹氫細(xì)琚玂racle鐢ㄧ殑錛屽氨鍍忎釜鎸戦鐨勫瀛愩€傚熀浜庢垚鏈殑浼樺寲鍣?CBO, Cost-Based Optimizer)錛屼細(xì)鍏堢湅鐪嬭〃鐨勫ぇ灝忥紝榪樻湁绱㈠紩鐨勯噸澶嶅害錛屽啀鍐沖畾鐢ㄨ繕鏄笉鐢ㄣ€傝〃涓湁100 鏉¤褰曡€屽叾涓湁80 涓笉閲嶅鐨勭儲(chǔ)寮曢敭鍊? 榪欎釜绱㈠紩鐨勯€夋嫨鎬у氨鏄?0/100 = 0.8錛岀暀鎰廡oad閲屾樉紺虹儲(chǔ)寮曠殑Selective鍜孋ardinailty銆傚疄鍦ㄤ笉鍚瘽鏃訛紝灝辮鐢╤ints鏉ヨ皟鏁欍€?br />      鍙﹀錛寃here璇彞瀛樺湪澶氭潯绱㈠紩鍙敤鏃訛紝鍙細(xì)閫夋嫨鍏朵腑涓€鏉°€傛墍浠ョ儲(chǔ)寮曚篃涓嶆槸瓚婂瓚婂ソ錛氾級(jí)</p> <p>3.3 绱㈠紩閲嶅緩<br />      浼犺涓暟鎹洿鏂伴綣佸鑷存湁20%鐨勭鐗囨椂錛孫racle灝變細(xì)鏀懼純榪欎釜绱㈠紩銆傚畞鍙俊鍏舵湁涔嬩笅錛屽簲璇ユ椂甯竌lter index <INDEXNAME> rebuild涓€涓嬨€?/p> <p>3.4 鍏朵粬瑕佹敞鎰忕殑鍦版柟<br />       涓嶈浣跨敤Not錛屽goods_no != 2錛岃鏀逛負(fù)</p> <p>where goods_no>2 or goods_no<2      涓嶈浣跨敤is null , 濡俉HERE DEPT_CODE IS NOT NULL 瑕佹敼涓?/p> <p>WHERE DEPT_CODE >=0;3.5 select 鐨勫垪濡傛灉鍏ㄦ槸绱㈠紩鍒楁椂<br />    鍙堝鏋滄病鏈墂here 鏉′歡錛屾垨鑰厀here鏉′歡鍏ㄩ儴鏄儲(chǔ)寮曞垪鏃訛紝Oracle 灝嗙洿鎺ヤ粠绱㈠紩閲岃幏鍙栨暟鎹€屼笉鍘昏鐪熷疄鐨勬暟鎹〃錛岃繖鏍峰瓙鐞嗚涓婁細(xì)蹇緢澶氾紝姣斿</p> <p>select order_no,order_time from shop_order where shop_no=4褰搊rder_no,order_time,shop_no 榪欎笁鍒楀叏涓虹儲(chǔ)寮曞垪鏃訛紝浣犲皢鐪嬪埌涓€涓拰騫蟲椂瀹屽叏涓嶅悓鐨勬墽琛岃鍒掋€?/p> <p>3.6 浣嶅浘绱㈠紩<br />      浼犺涓綋鏁版嵁鍊艱緝?yōu)畱锛屾瘮濡傛煇浜涜〃绀哄垎绫汇€佺姸鎬佺殑鍒楋紝搴旇寤轟綅鍥劇儲(chǔ)寮曡€屼笉鏄櫘閫氱殑浜屽弶鏍?wèi)鐑?chǔ)寮曪紝鍚﹀垯鏁堢巼浣庝笅銆備笉榪囩湅鎵ц璁″垝錛岃繖浜涗綅鍥劇儲(chǔ)寮曢矞鏈夎Oracle涓村垢鐨勩€?br />   </p> <p><br /> 4.鍑忓皯鏌ヨ寰€榪斿拰鏌ヨ鐨勮〃<br /> 榪欎篃鏄緢綆€鍗曠殑澶ч亾鐞嗭紝紼嬪簭涓嶰racle浜や簰鐨勬垚鏈瀬楂橈紝鎵€浠ヤ竴涓煡璇㈣兘瀹屾垚鐨勪笉瑕佸垎寮€涓ゆ鏌ワ紝濡傛灉涓€涓驚鐜墽琛岋紤涓囨潯鏌ヨ鐨勶紝鎬庝箞閮藉揩涓嶅埌鍝噷鍘諱簡(jiǎn)銆?/p> <p>4.1 灝佽PL/SQL瀛樺偍榪囩▼<br /> 銆€ 鏈€楂樼駭鐨勫仛娉曟槸鎶婂驚鐜殑鎿嶄綔灝佽鍒癙L/SQL鍐欑殑瀛樺偍榪囩▼閲岋紝鍥犱負(fù)瀛樺偍榪囩▼閮藉湪鏈嶅姟绔墽琛岋紝鎵€浠ユ病鏈夋暟鎹線榪旂殑娑堣€椼€?/p> <p><br /> 4.2 灝佽PL/SQL鍐呴儴鍑芥暟<br />   鏈夋満浼?xì)锛尀畣涓€浜涙煡璇㈠皝瑁呭埌鍑芥暟閲岋紝鑰屽湪鏅€歋QL閲屼嬌鐢ㄨ繖浜涘嚱鏁幫紝鍚屾牱鏄緢鏈夋晥鐨勪紭鍖栥€?/p> <p>4.3 Decode/Case<br /> 銆€ 浣嗗瓨鍌ㄨ繃紼嬩篃楹葷儲(chǔ)錛屾墍浠ユ湁case/decode鎶婂嚑鏉℃潯浠跺熀鏈浉鍚岀殑閲嶅鏌ヨ鍚堝茍涓轟竴鏉$殑鐢ㄦ硶錛?/p> <p>SELECT<br />  COUNT(CASE WHEN price < 13 THEN 1 ELSE null END) low,<br />  COUNT(CASE WHEN price BETWEEN 13 AND 15 THEN 1 ELSE null END) med,<br />  COUNT(CASE WHEN price > 15 THEN 1 ELSE null END) high<br /> FROM products;4.4 涓€縐峎here/Update璇硶</p> <p>SELECT TAB_NAME銆€FROM TABLES<br /> WHERE (TAB_NAME,DB_VER) = 錛? SELECT TAB_NAME,DB_VER)<br /> FROM TAB_COLUMNS WHERE VERSION = 604)</p> <p>UPDATE EMP<br /> SET (EMP_CAT, SAL_RANGE)<br /> = (SELECT MAX(CATEGORY)FROM EMP_CATEGORIES)<br /> 5.鍏朵粬浼樺寲<br /> 5.1RowID鍜孯OWNUM<br />      榪濰ibernate 鏂扮増涔熸敮鎸丷OWID浜?jiǎn)锛岃瘉鏄庡畠闈炲父鏈夌敤銆傛瘮濡傚彿縐板垹闄ら噸澶嶆暟鎹殑鏈€蹇啓娉曪細(xì)</p> <p>DELETE FROM EMP E<br /> WHERE E.ROWID > (SELECT MIN(X.ROWID)<br /> FROM EMP X<br /> WHERE X.EMP_NO = E.EMP_NO);6.緇堟瀬縐樻妧 - Hints<br />    榪欐槸Oracle DBA鐨勭帺鍏鳳紝涔熸槸緇堟瀬姝﹀櫒錛屾瘮濡侽racle鍦–BO,RBO涓墍鍋氱殑閫夋嫨鎬諱笉鍚堣嚜宸卞績(jī)姘存椂錛屽彲浠ョ敤瀹冩潵寮哄姏璋冩暀涓€涓婳racle錛岀粨鏋滅粡甯歌浜哄枩鍑烘湜澶栥€?br />    濡傛灉寮€鍙戜漢鍛樻病閭d箞澶氭椂闂存潵涓撻棬瀛︿範(fàn)瀹冿紝鍙互渚濋潬Toad SQL opmitzer 鏉ヨ嚜鍔ㄧ敓鎴愯繖浜涙彁紺猴紝鐒跺悗瀵規(guī)瘮涓€涓嬪悇縐嶆彁紺虹殑瀹為檯鏁堟灉銆備笉榪囬殢鐫€10g鏅鴻兘鐨勮繘鍖栵紝hints鐨勬儕鍠滃皯浜?jiǎn)銆?/p> <p>7. 鎵懼嚭瑕佷紭鍖栫殑Top SQL<br />     紓ㄤ簡(jiǎn)榪欎箞涔呯殑鏋紝濡傛灉鎵句笉鍒版晫浜烘槸浠墮儊闂風(fēng)殑浜嬫儏銆?br />     騫鎬簭10g榪欐柟闈㈠仛寰楅潪甯稿ソ銆傝繘鍏eb綆$悊鐣岄潰錛屽氨鑳界湅鍒板綋鍓嶆垨鑰呬換鎰忎竴澶╃殑SQL鍒楄〃錛屾寜鎬ц兘鎺掑簭銆?br />     鏈変簡(jiǎn)瀹冿紝SQL Trace鍜孴KPROF閮藉彲浠ヤ笉鐢ㄤ簡(jiǎn)銆?/p> <p><br /> 鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/calvinxiu/archive/2005/11/15/529756.aspx</p> <img src ="http://www.aygfsteel.com/freeman1984/aggbug/334235.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">鐤媯</a> 2010-10-10 23:52 <a href="http://www.aygfsteel.com/freeman1984/archive/2010/10/10/334235.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>google Analytics 鍒濇帰http://www.aygfsteel.com/freeman1984/archive/2010/09/16/332234.html鐤媯鐤媯Thu, 16 Sep 2010 13:37:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2010/09/16/332234.htmlhttp://www.aygfsteel.com/freeman1984/comments/332234.htmlhttp://www.aygfsteel.com/freeman1984/archive/2010/09/16/332234.html#Feedback2http://www.aygfsteel.com/freeman1984/comments/commentRss/332234.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/332234.html http://code.google.com/intl/zh-CN/apis/analytics/docs/gaJS/gaJSApiBasicConfiguration.html
褰撶劧瑕佹兂鐢ㄧ殑鏇村ソ灝遍渶瑕佸幓鐮旂┒涓嬩粬鐨刟pi錛屽寘鎵╀竴浜涙柊鐗規(guī)柊錛屽拰涓€浜涚粺璁$殑api銆傝繖綃囨枃绔犳槸鍏充簬璞嗙摚緗戠殑浣跨敤緇忛獙錛屽悗闈㈣繕闄勫姞浜?jiǎn)鐐硅瘎缃戠殑浠g爜銆?br />    鍐呭濡備笅錛?

璞嗙摚浠庝粖騫村紑濮嬩篃鍔犲叆 Google Analytics 鐨勭粺璁¢樀钀ャ€傝鎴戜滑閫氳繃瀹冨姞杞界殑 Google Analytics 婧愮爜錛岀畝鍗曞垎鏋愪竴涓嬪畠閮芥槸鎬庝箞搴旂敤鐨勩€?/p>

鎴戜滑鍏堜粠璞嗙摚鐨勬簮鐮佹潵鐪嬬湅瀹冪殑Google Analytics緇熻浠g爜

璞嗙摚 Google Analytics 浠g爜
璞嗙摚 Google Analytics 浠g爜

鎴戜滑鐭ラ亾涓€鑸粯璁ょ殑 Google Analytics浠g爜濡備笅錛?/p>

榛樿  Google Analytics 緇熻浠g爜
榛樿 Google Analytics 緇熻浠g爜

涓ょ浉瀵規(guī)瘮錛屾垜浠氨浼?xì)鍙戠幇璞嗙摚鍔犺?ga.js 鐨勬柟寮忎笌榛樿鐨勬柟寮忔湁浜涗笉澶竴鏍鳳紝鐢變簬璞嗙摚騫舵病鏈夐噰鐢?https 鍔犲瘑璁塊棶錛屾墍浠ユ拠寮冧簡(jiǎn)榛樿鐨刧a.js鍔犺澆鏂瑰紡銆?/p>

榛樿鐨勭粺璁″嚱鏁幫紝pageTracker 涔熻璞嗙摚鏀規(guī)垚浜?_ga 錛岃繖涓彧鏄悕縐板畾涔変笂鐨勫尯鍒紝騫舵病鏈変粈涔堝疄璐ㄧ殑鏀瑰彉銆傝眴鐡g殑涓昏搴旂敤鏄笅闈袱涓嚱鏁幫細(xì)

浣跨敤 _ga._addOrganic 璇嗗埆闈炰富嫻佹悳绱㈠紩鎿?/h3>

鍐嶆潵鐪嬭眴鐡f瘮榛樿 Google Analytics 浠g爜澧炲姞鐨勯儴鍒嗭紝閭e氨鏄浜?jiǎn)鏁颁?_ga._addOrganic 錛岃繖鏄?Google Analytics 娣誨姞鑷畾涔夋悳绱㈠紩鎿庣殑浠g爜銆傚敖綆?Google Analytics 瀵逛簬涓繪祦鐨勬悳绱㈠紩鎿庨兘鑳借嚜鍔ㄨ瘑鍒紝浣嗘瘯绔熻兘璇嗗埆鐨勬槸鍥藉鐨勪富嫻佹悳绱㈠紩鎿庯紝鍦ㄥ浗鍐咃紝鍍忔悳鐙愮殑 Sogou錛孮Q 鐨?soso錛岀綉鏄撶殑鏈夐亾絳夋悳绱㈠紩鎿庯紝閮戒笉鑳借 Google Analytics 姝g‘璇嗗埆錛岃€岃褰撲綔鎺ㄨ崘鏉ユ簮銆傝繖鏃跺€欐垜浠氨鍙互鍒╃敤_addOrganic 鍙傛暟鏉ヨ瘑鍒繖浜涢潪涓繪祦鎼滅儲(chǔ)寮曟搸錛屽璞嗙摚鐨勫仛娉曘€?/p>

浣跨敤 _addIgnoredOrganic 蹇界暐鍏抽敭瀛?/h3>

闄や簡(jiǎn)娣誨姞鑷畾涔夋悳绱㈠紩鎿庯紝璞嗙摚鍦ㄦ渶鍚庤繕娣誨姞浜?jiǎn)濡備笅杩欎簺浠g?

_ga._addIgnoredOrganic("璞嗙摚");
_ga._addIgnoredOrganic("douban");
_ga._addIgnoredOrganic("璞嗙摚緗?);
_ga._addIgnoredOrganic("www.douban.com");

榪欎簺浠g爜鐢ㄦ潵鎶婂紩鍙蜂腑鐨勫叧閿瘝浠庢悳绱㈠紩鎿庣殑鍏抽敭璇嶆姤鍛婁腑鎺掗櫎錛岃€屽綋鎴愮洿鎺ョ偣鍑婚噺鏉ユ簮銆?/p>

涓轟粈涔堣榪欎箞鍋氾紵鍥犱負(fù)涓€涓煡鍚嶇殑澶х綉绔欙紝鏉ヨ嚜榪欎簺鍝佺墝璇嶇殑鎼滅儲(chǔ)嫻侀噺閮介潪甯稿ぇ錛屽父甯告槸鎺掑湪鍓嶅嚑浣嶇殑鎼滅儲(chǔ)鍏抽敭璇嶆潵婧愶紝鑰岃繖閫氬父鏄洜涓烘悳绱㈠紩鎿庡吇鎴愮幇鍦ㄧ殑浜洪兘鎳掑緱璁扮綉鍧€錛岀洿鎺ユ悳绱㈠搧鐗屽悕鏉ヨ浣忓煙鍚嶃€傝繖浜涘搧鐗岃瘝瀵逛簬緗戠珯鐨勫叧閿瘝鏉ユ簮鍒嗘瀽騫舵病鏈夊緢鐩存帴鐨勫府鍔╋紝鎵€浠ュ湪鏉ヨ嚜鍝佺墝璇嶇殑嫻侀噺寰堝ぇ鐨勬儏鍐典笅錛屽彲浠ョ洿鎺ユ妸榪欎簺鍏抽敭璇嶈瘑鍒垚鐩存帴鐐瑰嚮閲忔潵婧愩€?/p>

鍏充簬鑷畾涔?Google Analytics 鎼滅儲(chǔ)寮曟搸鍜?strong>鎺掗櫎鐗瑰畾鍏抽敭璇嶄負(fù)鐩存帴鐐瑰嚮閲忔潵婧?/strong>鐨勮娉曪紝鍙互鍙傝€?a class="external" title="_addOrganic() 涓?_addIgnoredOrganic() 鐢ㄦ硶浠嬬粛" target="_blank"> Google Code 涓婂叧浜庤繖鏂歸潰鐨勮緇嗕粙緇嶃€?/a>

閫氳繃 _setVar 璇嗗埆鐢ㄦ埛

褰撴垜浠櫥褰曡眴鐡e悗錛屽啀鏉ュ垎鏋愯眴鐡g殑婧愮爜錛屼細(xì)鍙戠幇澶氫簡(jiǎn)涓€涓?code>ga._setVar(”xxxx”)鐨?Google Analytics 鍙傛暟銆?/p>

璞嗙摚浣跨敤 Google Analytics 鐨?_setVar鍙傛暟鏉ヨ窡韙櫥褰曠敤鎴瘋涓? src=
璞嗙摚浣跨敤 Google Analytics 鐨?_setVar鍙傛暟鏉ヨ窡韙櫥褰曠敤鎴瘋涓?

_setVar() 鍑芥暟鏄?Google Analytics 鐨勭敤鎴峰畾涔夊嚱鏁幫紝涓昏鐢ㄤ簬瀵圭壒瀹氭潵婧愮殑鐢ㄦ埛琛屼負(fù)榪涜鍒嗙被錛屼緥濡傚彲浠ュ鐧誨綍嫻忚鐨勭敤鎴瘋緗竴涓暟鍊鹼紝鐒跺悗鍦?Google Analytics 鍚庡彴鐨?strong>璁塊棶鑰?鐢ㄦ埛瀹氫箟 涓煡鐪嬪叾嫻忚灞炴€с€?/p>

Google Analytics 璁塊棶鑰?鐢ㄦ埛瀹氫箟鎶ュ憡
Google Analytics 璁塊棶鑰?鐢ㄦ埛瀹氫箟鎶ュ憡

鍒嗘瀽璞嗙摚鐨勬簮鐮佸彲浠ョ煡閬擄紝璞嗙摚瀵規(guī)瘡涓€涓櫥褰曞悗鐨勭敤鎴鳳紝閮借祴浠ヤ竴涓笓闂ㄧ殑 id 鍊鹼紝榪欐牱鍙互鍦ㄧ敤鎴峰畾涔夋姤鍛婇噷錛岀湅鍒版暣浣撶殑鐧誨綍鐢ㄦ埛璁塊棶琛屼負(fù)錛屼箖鑷蟲瘡涓櫥褰曠敤鎴風(fēng)殑嫻忚琛屼負(fù)銆傞€氳繃榪欐牱璁懼畾鍚庯紝璞嗙摚渚垮彲浠ヨ交鏄撹幏鍙栭珮蹇犺瘹搴﹁闂敤鎴風(fēng)殑璁塊棶琛屼負(fù)銆?a class="external" title="_setVar 璁劇疆璇存槑" target="_blank">鍏充簬_setVar()鐨勬洿澶氳鏄庯紝璇峰弬闃?Google Analytics鐨勬妧鏈枃妗?/a>

濡備綍鏍規(guī)嵁璁塊棶鑰呭湪鎴戠殑緗戠珯涓婅闂殑欏甸潰鎴栧湪琛ㄥ崟涓婂仛鍑虹殑鍝嶅簲瀵瑰叾榪涜鍒嗙被錛?a class="external" title=" 濡備綍鏍規(guī)嵁璁塊棶鑰呭湪鎴戠殑緗戠珯涓婅闂殑欏甸潰鎴栧湪琛ㄥ崟涓婂仛鍑虹殑鍝嶅簲瀵瑰叾榪涜鍒嗙被錛? target="_blank">鍦?Google Analytics 瀹樻柟鐨勫府鍔╂枃浠訛紝涔熺粰鍑轟簡(jiǎn)鍙﹀涓€涓簲鐢ㄦ渚?/a>

鍊煎緱娉ㄦ剰鐨勬槸錛屽師鏉ュ湪璁劇疆 _setVar() 鍑芥暟鐨勬椂鍊欙紝鏁翠釜緗戠珯鐨勮煩鍑虹巼浼?xì)鍑虹幇閲嶅ぇ鐨勫亸宸Q屼笉榪囧湪鏈€榪戠殑google analytics瀹樻柟鍗氬錛屾寚鍑?guó)櫙ug宸茬粡淇錛屽鎴峰湪榪涜榪欐柟闈㈣緗殑鏃跺€欙紝榪樻槸瑕佹敞鎰忓姣斿墠鍚庢暟鎹槸鍚︽湁閲嶅ぇ鍋忓樊銆?/p>

閫氳繃 _trackPageview 鍖哄垎涓嶅悓綾誨瀷鐨勮瘎璁?/h2>

璞嗙摚涓婄殑涔﹁瘎錛屽獎(jiǎng)璇勫拰涔愯瘎鍙互璇存槸璞嗙摚緗戠珯鐨勬牳蹇?jī)洵h(huán)鍊兼墍鍦ㄣ€備竴鑸瘎璁虹殑URL鏍煎紡濡備笅錛?/p>

璞嗙摚涓婂崟鏉¤瘎璁虹殑URL
璞嗙摚涓婂崟鏉¤瘎璁虹殑URL

褰撴垜浠煡鐪嬭欏甸潰鐨勭綉欏墊簮浠g爜鏃訛紝浼?xì)鍙戠幇鏈壄懀鐨勭幇璞?

璞嗙摚鍗曟潯璇勮欏電殑 Google Analytics 浠g爜
璞嗙摚鍗曟潯璇勮欏電殑 Google Analytics 浠g爜

鎴戜滑鐭ラ亾錛屼竴鑸?Google Analytics 鐨?code>_trackPageview() 鎷姬涓殑鍙傛暟鏄暀絀虹殑錛?Google Analytics 浼?xì)鑷姩鎹曡庯L(fēng)綉鍧€鐨?URL 鍙傛暟錛屽鏋滃湪 _trackPageview()鎷姬涓緭鍏ョ壒瀹氱殑鏁板€鹼紝閭d箞鍦?Google Analytics 鐨勬姤琛ㄤ腑錛孶RL 灝嗘槸鎴戜滑鎸囧畾鐨勫弬鏁幫紝鑰屼笉鍐嶆槸鎴戜滑鍦ㄥ湴鍧€鏍忕湅鍒扮殑 URL銆?/p>

濡備笂闈㈢殑渚嬪瓙錛屾垜浠湪 Google Analytics 涓湅鍒扮殑URL灝嗘槸/book/review/1946018/錛岃€屼笉鍐嶆槸鎴戜滑鍦ㄦ祻瑙堝櫒鍦板潃鏍忕湅鍒扮殑/review/1946018/

褰撴墍鍦ㄩ閬撴槸鐢?shù)濯?jiǎng)鎴栬€呴煶涔愭椂錛?code>_trackPageview() 涓殑鍙傛暟灝嗘牴鎹墍鍦ㄩ閬撶殑灞炴€э紝鍙樹負(fù)/movie/xxxxx 鎴栬€?/music/xxxxx鐨勬暟鍊箋€?/p>

璞嗙摚閫氳繃瀵圭殑鍙傛暟榪涜閲嶆柊鎸囧畾錛屼富瑕佹湁浠ヤ笅鐨勫ソ澶勶細(xì)

淇濊瘉浜?jiǎn)鐢ㄦ埛鍜屾悳鐑?chǔ)寮曟搸鐪嬪埌鐨?URL 姣旇緝綆€鐭紝杈懼埌 URL 瀵圭敤鎴峰弸濂藉拰瀵規(guī)悳绱㈠紩鎿庡弸濂界殑鐩殑錛涜€屽湪 Google Analytics 鎶ュ憡涓紝閫氳繃 鍐呭/鍐呭緇嗙洰/ 鎶ュ憡錛屽張鑳戒簡(jiǎn)瑙e埌鍚勪釜棰戦亾鎬葷殑嫻忚鎯呭喌銆?/p>

鍦℅A鐨?span style="color: #ff0000">鍐呭緇嗙洰鎶ュ憡涓紝灝嗕細(xì)澶氬嚭 /book/ /music/ /movie/ 榪欐牱鐨勬枃浠跺す鏉ワ紝鎬昏€岃幏寰楀悇涓閬撶殑鍚堣嫻忚鏁版嵁銆?/p>

鑰屽鏋滃彧鏄嬌鐢ㄩ粯璁?_trackPageview()錛屼綘灝嗗彧鑳藉緱鍒版墍鏈夎瘎璁洪〉闈㈢殑嫻忚鏁版嵁錛岃€屾棤娉曞緱鍒扮粏鍒嗙殑鍚勪釜棰戦亾鐨勬祻瑙堟暟鎹€?/p>

鍏充簬_trackPageview()鐨勫叿浣撶殑浣跨敤鏂規(guī)硶鍙弬鐓?Google Code 鐨勮鏄?/a>

娉ㄦ剰浜嬮」:浣跨敤 _trackPageview() 鍙傛暟閲嶆柊鎸囧畾 URL 涔嬪悗錛岀綉绔欒鐩栧浘鐨勬暟鎹皢鍙楀埌褰卞搷銆?a class="external" target="_blank">鍙弬闃?Google Analytics 鐨勫畼鏂瑰府鍔╂枃浠?/a>

闄や簡(jiǎn)璞嗙摚浣跨敤 _trackPageview() 鏉ュURL榪涜閲嶅啓錛?a class="external" target="_blank">澶т紬鐐硅瘎緗?/a>涔熼噰鐢ㄤ簡(jiǎn)綾諱技鐨勫仛娉曪紙搴旇鏄瘮璞嗙摚鏇存棭閲囩敤銆傘€傘€傚洜涓烘槸鎴戝湪鐐硅瘎緗戜換鑱屾椂鍊欏疄楠岀殑鍋氭硶;閭f椂鍊欒眴鐡h繕娌℃湁浣跨敤 Google Analytis 緇熻浠g爜錛屽懙鍛碉級(jí)錛屾湁鍏磋叮鐨勫悓瀛﹀彲浠ヨ嚜宸卞幓鐮旂┒鐐硅瘎鐨?Google Analytis 浠g爜銆?br />

鏂囩珷鏉ヨ嚜錛歨ttp://fairyfish.net/2009/06/30/google-analytics-in-douban/

----------------------------------------澶т紬鐐硅瘎緗戠殑鐨勪唬鐮侊紝涓婚〉鐨?br /> <script type="text/javascript">
var pageTracker = _gat._getTracker("UA-464026-1");
pageTracker._addOrganic("soso", "w");
pageTracker._addOrganic("sogou", "query");
pageTracker._addOrganic("yodao", "q");
pageTracker._addOrganic("bing", "q");
pageTracker._addOrganic("gougou", "search");
pageTracker._initData();
pageTracker._trackPageview("home/beijing_all");
</script>
     
   榪欎釜鏄瓙欏甸潰search/category/2/10/g328
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-464026-1");
pageTracker._addOrganic("soso", "w");
pageTracker._addOrganic("sogou", "query");
pageTracker._addOrganic("yodao", "q");
pageTracker._addOrganic("bing", "q");
pageTracker._addOrganic("gougou", "search");
pageTracker._initData();
pageTracker._trackPageview("dp_searchpv_card");
pageTracker._trackPageview("dp_searchpv_promo");
pageTracker._trackPageview("search/beijing_food_category/g328");
</script>
鍙互鐪嬪嚭鍏朵腑鐨刾ageTracker._trackPageview("銆傘€傘€?);鏄姩鎬佺殑涔熷氨鏄〉闈㈢殑錛屾垜浠彲浠ュ姩鎬佺殑璧嬪€鹼紝榪欐牱灝卞彲浠ユ樉紺烘紜殑鍦板潃浜?jiǎn)銆?/p>

 

  澶у濡傛灉鏈変粈涔堣繖鏂歸潰鐨勭粡楠屽彲浠ヤ竴鍚屽垎浜笅銆?br />
   



鐤媯 2010-09-16 21:37 鍙戣〃璇勮
]]>浣跨敤tomcat鐨刢ompression鏉ユ彁楂樼綉欏靛姞杞介€熷害http://www.aygfsteel.com/freeman1984/archive/2010/09/15/332121.html鐤媯鐤媯Wed, 15 Sep 2010 15:39:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2010/09/15/332121.htmlhttp://www.aygfsteel.com/freeman1984/comments/332121.htmlhttp://www.aygfsteel.com/freeman1984/archive/2010/09/15/332121.html#Feedback4http://www.aygfsteel.com/freeman1984/comments/commentRss/332121.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/332121.html         tomcat浣跨敤HTTP/1.1 GZIP 鏉ュ帇緙╋紝浠ュ噺灝戝甫瀹藉帇鍔涳紝
       棣栧厛浠嬬粛涓媑zip錛?br />         HTTP鍗忚涓婄殑GZIP緙栫爜鏄竴縐嶇敤鏉ユ敼榪沇EB搴旂敤紼嬪簭鎬ц兘鐨勬妧鏈€傚ぇ嫻侀噺鐨刉EB绔欑偣甯稿父浣跨敤GZIP鍘嬬緝鎶€鏈潵璁╃敤鎴鋒劅鍙楁洿蹇殑閫熷害銆傝繖涓€鑸槸鎸嘩WW鏈嶅姟鍣ㄤ腑瀹夎鐨勪竴涓姛鑳?褰撴湁浜烘潵璁塊棶榪欎釜鏈嶅姟鍣ㄤ腑鐨勭綉绔欐椂,鏈嶅姟鍣ㄤ腑鐨勮繖涓姛鑳藉氨灝嗙綉欏靛唴瀹瑰帇緙╁悗浼犺緭鍒版潵璁跨殑鐢?shù)鑴憢箯瑙堝櫒涓槃·哄嚭鏉?涓€鑸綰枃鏈唴瀹瑰彲鍘嬬緝鍒板師澶у皬鐨?0錛?榪欐牱浼犺緭灝卞揩浜?鏁堟灉灝辨槸浣犵偣鍑葷綉鍧€鍚庝細(xì)寰堝揩鐨勬樉紺哄嚭鏉?褰撶劧榪欎篃浼?xì)澧炲姞鏈嶅姟鍣ㄧ殑璐熻? 涓€鑸湇鍔″櫒涓兘瀹夎鏈夎繖涓姛鑳芥ā鍧楃殑.
      鎴戜滑浣跨敤綆€鍗曠殑渚嬪瓙鏉ヤ粙緇峵omcat鐨勫帇緙╀嬌鐢細(xì)錛堜嬌鐢╢irebug鏌ョ湅璇鋒眰鎯呭喌錛?br />
 棣栧厛鏄竴涓畝鍗曠殑servlet錛?br /> 鍐呭錛?br />
public void doPost(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, IOException {

        response.setContentType(
"text/html");
        PrintWriter out 
= response.getWriter();
        out
                .println(
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println(
"  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println(
"  <BODY>");
        out.print(
" <select> ");
        
for (int i = 0; i < 100000; i++{
            out.print(
"<option>testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"+i+"</option>");
        }

        out.println(
"</select>");
        out.println(
"  </BODY>");
        out.println(
"</HTML>");
        out.flush();
        out.close();
    }

鎴戜滑灝嗚緭鍑轟竴涓崄涓囦釜閫夐」鐨勪笅鎷夋錛屽湪涓嶄嬌鐢ㄧ殑鍘嬬緝鐨勬椂鍊欙細(xì)


    璇鋒眰鏁版嵁杈懼埌9m ,澶ф鐨勮綆椾笅鎴戠殑涓嬭澆鐢ㄦ椂錛?m闀垮煄瀹藉甫錛夛細(xì)9*1024/(4*1024/8)=18m  錛屽姞涓婂浜哄叡浜甫瀹斤紝涔熷氨鏄樊涓嶅20m銆俧irebug鏄劇ず20.96銆?br />
    榪欎釜閫熷害緗戠珯浣撻獙鑲畾鏄緢宸殑錛屾帴涓嬫潵浣跨敤tomcat鐨勫帇緙╀互鍚庣湅鐪嬶細(xì)

   褰撶劧鏄瀵瑰叾榪涜閰嶇疆錛?br />    鏈変互涓嬪嚑涓弬鏁板彲浠ヤ嬌鐢細(xì)

    compression="on" 
鏄惁鍚敤鍘嬬緝 on涓哄惎鐢紙鏂囨湰鏁版嵁鍘嬬緝錛?off涓轟笉鍚敤錛?force 鍘嬬緝鎵€鏈夋暟鎹?br /> compressionMinSize1="2048" 
褰撹秴榪囨渶灝忔暟鎹ぇ灝忔墠榪涜鍘嬬緝
 noCompressionUserAgents="gozilla, traviata" 
鍝簺瀹㈡埛绔彂鍑虹殑璇鋒眰涓嶅帇緙╋紝榛樿鏄笉闄愬埗
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
閰嶇疆鎯沖帇緙╃殑鏁版嵁綾誨瀷錛岄粯璁ゆ槸 text/html,text/xml,text/plain

閰嶇疆浠ュ悗鏄繖鏍風(fēng)殑錛?br />
<Connector port="8088" protocol="HTTP/1.1" 
               connectionTimeout
="20000" 
               redirectPort
="8443"
               compression
="on" 
               compressionMinSize1
="2048" 
               noCompressionUserAgents
="gozilla, traviata" 
               compressableMimeType
="text/html,text/xml,text/javascript,text/css,text/plain"/>

鍚姩鍚庡啀鐪嬶細(xì)

 
榪欐鏁版嵁琚帇緙╁埌274.7k錛屽搷搴旈€熷害涔熷噺灝戜簡(jiǎn)涓€鍗婏紝褰撶劧錛屾湇鍔″櫒鐨勬暟鎹帇緙╁拰嫻忚鍣ㄧ殑鏁版嵁瑙e帇閮介渶瑕佷嬌鐢ㄦ椂闂淬€?br />
 
渚嬪瓙瀹屾瘯錛?br />    褰撶劧tomcat鐨勫帇緙╂妧鏈繕鏈夊緢澶氬叾浠栫殑鐗規(guī)€э紝鐒惰€屽浜庡ぇ鏁版嵁閲忕殑璇鋒眰涓嶅厜鏄浣跨敤榪欑鎶€鏈紝榪橀渶瑕佸湪鍏朵粬鍦版柟涓嬪姛澶紝姣斿ajax鎶€鏈紝緙撳瓨絳夌瓑錛?br /> 涔熷笇鏈涘ぇ瀹惰ˉ鍏呭涔?fàn)锛岃阿璋€€?br />  


鐤媯 2010-09-15 23:39 鍙戣〃璇勮
]]>
QQ 瀵艱嚧mysql 鏈嶅姟鏃犳硶鍚姩http://www.aygfsteel.com/freeman1984/archive/2010/09/06/331173.html鐤媯鐤媯Mon, 06 Sep 2010 02:59:00 GMThttp://www.aygfsteel.com/freeman1984/archive/2010/09/06/331173.htmlhttp://www.aygfsteel.com/freeman1984/comments/331173.htmlhttp://www.aygfsteel.com/freeman1984/archive/2010/09/06/331173.html#Feedback0http://www.aygfsteel.com/freeman1984/comments/commentRss/331173.htmlhttp://www.aygfsteel.com/freeman1984/services/trackbacks/331173.html

緇撴灉涓€鐪嬬珶鐒惰qq榪涚▼鍗犵敤鐫€錛屽茍涓斿浜巆lose_wait鐘舵€併€?br /> 澶勭悊鏂規(guī)硶錛氱洿鎺ュ共鎺塹q榪涚▼錛岀劧鍚庡惎鍔╩ysql鍗沖彲銆?br />
浠ヤ笅鏄叧浜巘cp 鐘舵€佷竴浜涗粙緇?渚涘ぇ瀹跺弬鑰冿細(xì)
 Close_Wait鐘舵€佽В閲?/span>

CLOSE_WAIT鐘舵€佺殑鐢熸垚鍘熷洜
閫氳繃TCP鐨勭姸鎬佸浘鎴戜滑鍙互鐪嬪嚭鍙湁琚姩鍏抽棴鐨勪竴绔墠鏈塁LOSE_WAIT鐘舵€侊紝褰撴敹鍒癋in騫跺彂閫佷簡(jiǎn)Ack鍚?br /> 鏈嶅姟鍣ㄧ姸鎬佸氨鍙樻垚浜?jiǎn)CLOSE_WAIT鐘舵€侊紝濡傛灉鎴戜滑鐨勬湇鍔″櫒涓€鐩村浜嶤LOSE_WAIT鐘舵€佺殑璇濓紝璇存槑濂楁帴瀛楁槸琚姩鍏抽棴鐨勶紒錛屽茍涓旀病鏈夊彂閫丗in淇′護(hù)錛屽師鍥犲線寰€鏄病鏈夎皟鐢═CP鐨凜loseSocket銆?/p>

瑙e喅CLOSE_WAIT鐨勬柟娉?
1 涓€鑸師鍥犻兘鏄疶CP榪炴帴娌℃湁璋冪敤鍏抽棴鏂規(guī)硶銆傞渶瑕佸簲鐢ㄦ潵澶勭悊緗戠粶閾炬帴鍏抽棴銆?br /> 2 瀵逛簬Web璇鋒眰鍑虹幇榪欎釜鍘熷洜錛岀粡甯告槸鍥犱負(fù)Response鐨凚odyStream娌℃湁璋冪敤Close.
姣斿Widnows涓?
浣跨敤HttpWebRequest 涓€瀹氳淇濊瘉GetRequestStream鍜孏etResponse瀵硅薄鍏抽棴錛屽惁鍒欏鏄撻€犳垚榪炴帴澶勪簬CLOSE_WAIT鐘舵€?br /> 3 TCP鐨凨eepLive鍔熻兘錛屽彲浠ヨ鎿嶄綔緋葷粺鏇挎垜浠嚜鍔ㄦ竻鐞嗘帀CLOSE_WAIT鐨勮繛鎺ャ€?br /> 浣嗘槸KeepLive鍦╓indows鎿嶄綔緋葷粺涓嬮粯璁ゆ槸7200縐掞紝涔熷氨鏄?涓皬鏃舵墠娓呯悊涓€嬈°€傚線寰€婊¤凍涓嶄簡(jiǎn)瑕佹眰銆傚彲浠ヨ皟?yōu)畯璇ユ暟鍊箋€?br /> Windows涓嬬殑璋冩暣鏂規(guī)硶涓?br /> HKEY_LOCAL_MACHINE"CurrentControlSet"Services"Tcpip"Parameters涓嬬殑浠ヤ笅涓変釜鍙傛暟錛?
KeepAliveInterval,璁劇疆鍏跺€間負(fù)1000
KeepAliveTime,璁劇疆鍏跺€間負(fù)300000(鍗曚綅涓烘縐掞紝300000浠h〃5鍒嗛挓)
TcpMaxDataRetransmissions,璁劇疆鍏跺€間負(fù)5

Close_Wait寮曞彂鐨勯棶棰?
Close_Wait浼?xì)鍗犵敤涓€涓繛鎺ワ紝緗戠粶鍙敤榪炴帴灝忋€傛暟閲忚繃澶氾紝鍙兘浼?xì)寮曡碉L(fēng)綉緇滄€ц兘涓嬮檷錛屽茍鍗犵敤緋葷粺闈炴崲欏靛唴瀛樸€?灝ゅ叾鏄湪鏈夎繛鎺ユ睜鐨勬儏鍐典笅(姣斿HttpRequest)
浼?xì)鑰楀敖榪炴帴姹犵殑緗戠粶榪炴帴鏁幫紝瀵艱嚧鏃犳硶寤虹珛緗戠粶榪炴帴

--------------------------------------------
TCP鐘舵€佽漿縐昏鐐?br />     TCP鍗忚瑙勫畾錛屽浜庡凡緇忓緩绔嬬殑榪炴帴錛岀綉緇滃弻鏂硅榪涜鍥涙鎻℃墜鎵嶈兘鎴愬姛鏂紑榪炴帴錛屽鏋滅己灝戜簡(jiǎn)鍏朵腑鏌愪釜姝ラ錛屽皢浼?xì)鋴蓸q炴帴澶勪簬鍋囨鐘舵€侊紝榪炴帴鏈韓鍗犵敤鐨勮祫婧愪笉浼?xì)琚噴鏀俱€傜綉緇滄湇鍔″櫒紼嬪簭瑕佸悓鏃剁鐞嗗ぇ閲忚繛鎺ワ紝鎵€浠ュ緢鏈夊繀瑕佷繚璇佹棤鐢ㄨ繛鎺ュ畬鍏ㄦ柇寮€錛屽惁鍒欏ぇ閲忓兊姝葷殑榪炴帴浼?xì)娴垂璁稿鏈嶅姟鍣ㄨ祫婧愩€傚湪浼楀TCP鐘舵€佷腑錛屾渶鍊煎緱娉ㄦ剰鐨勭姸鎬佹湁涓や釜錛欳LOSE_WAIT鍜孴IME_WAIT銆?nbsp; 

1銆丩ISTENING鐘舵€?br /> 銆€銆€FTP鏈嶅姟鍚姩鍚庨鍏堝浜庝睛鍚紙LISTENING錛夌姸鎬併€?br /> 2銆丒STABLISHED鐘舵€?br /> 銆€銆€ESTABLISHED鐨勬剰鎬濇槸寤虹珛榪炴帴銆傝〃紺轟袱鍙版満鍣ㄦ鍦ㄩ€氫俊銆?br /> 3銆丆LOSE_WAIT
    瀵規(guī)柟涓誨姩鍏抽棴榪炴帴鎴栬€呯綉緇滃紓甯稿鑷磋繛鎺ヤ腑鏂紝榪欐椂鎴戞柟鐨勭姸鎬佷細(xì)鍙樻垚CLOSE_WAIT 姝ゆ椂鎴戞柟瑕佽皟鐢╟lose()鏉ヤ嬌寰楄繛鎺ユ紜叧闂?br /> 4銆乀IME_WAIT
    鎴戞柟涓誨姩璋冪敤close()鏂紑榪炴帴錛屾敹鍒板鏂圭‘璁ゅ悗鐘舵€佸彉涓篢IME_WAIT銆俆CP鍗忚瑙勫畾TIME_WAIT鐘舵€佷細(xì)涓€鐩存寔緇?MSL(鍗充袱鍊嶇殑鍒嗘鏈€澶х敓瀛樻湡)錛屼互姝ゆ潵紜繚鏃х殑榪炴帴鐘舵€佷笉浼?xì)瀵规柊杩炴帴漶旂敓濯?jiǎng)鍝嶃€傚浜嶵IME_WAIT鐘舵€佺殑榪炴帴鍗犵敤鐨勮祫婧愪笉浼?xì)琚唴鏍搁噴鏀惧Q屾墍浠ヤ綔涓烘湇鍔″櫒錛屽湪鍙兘鐨勬儏鍐典笅錛屽敖閲忎笉瑕佷富鍔ㄦ柇寮€榪炴帴錛屼互鍑忓皯TIME_WAIT鐘舵€侀€犳垚鐨勮祫婧愭氮璐廣€?
    鐩墠鏈変竴縐嶉伩鍏峊IME_WAIT璧勬簮嫻垂鐨勬柟娉曪紝灝辨槸鍏抽棴socket鐨凩INGER閫夐」銆備絾榪欑鍋氭硶鏄疶CP鍗忚涓嶆帹鑽愪嬌鐢ㄧ殑錛屽湪鏌愪簺鎯呭喌涓嬭繖涓搷浣滃彲鑳戒細(xì)甯︽潵閿欒銆?

璇︾粏涓€鐐圭殑鏂囨。錛?br /> http://apps.hi.baidu.com/share/detail/10908121

鐤媯 2010-09-06 10:59 鍙戣〃璇勮
]]>
灝藉彲鑳戒嬌鐢ㄥ爢鏍堝彉閲?/title><link>http://www.aygfsteel.com/freeman1984/archive/2010/01/29/311223.html</link><dc:creator>鐤媯</dc:creator><author>鐤媯</author><pubDate>Fri, 29 Jan 2010 06:56:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2010/01/29/311223.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/311223.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2010/01/29/311223.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/311223.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/311223.html</trackback:ping><description><![CDATA[<p>濡傛灉鎮(zhèn)ㄩ綣佸瓨鍙栧彉閲忥紝灝遍渶瑕佽€冭檻浠庝綍澶勫瓨鍙栬繖浜涘彉閲忋€傚彉閲忔槸 <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">static</pre> </td> </tr> </tbody> </table> <br /> 鍙橀噺錛岃繕鏄爢鏍堝彉閲忥紝鎴栬€呮槸綾葷殑瀹炰緥鍙橀噺錛熷彉閲忕殑瀛樺偍浣嶇疆瀵瑰瓨鍙栧畠鐨勪唬鐮佺殑鎬ц兘鏈夋槑鏄劇殑褰卞搷錛熶緥濡傦紝璇瘋€(gè)冭檻涓嬮潰榪欐浠g爜錛?</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">class StackVars { private int instVar; private static int staticVar; //瀛樺彇鍫嗘爤鍙橀噺 void stackAccess(int val) { int j=0; for (int i=0; i<val; i++) j += 1; } //瀛樺彇綾葷殑瀹炰緥鍙橀噺 void instanceAccess(int val) { for (int i=0; i<val; i++) instVar += 1; } //瀛樺彇綾葷殑 static 鍙橀噺 void staticAccess(int val) { for (int i=0; i<val; i++) staticVar += 1; } } </pre> </td> </tr> </tbody> </table> <br /> <p>榪欐浠g爜涓殑姣忎釜鏂規(guī)硶閮芥墽琛岀浉鍚岀殑寰幆錛屽茍鍙嶅鐩稿悓鐨勬鏁般€傚敮涓€鐨勪笉鍚屾槸姣忎釜寰幆浣夸竴涓笉鍚岀被鍨嬬殑鍙橀噺閫掑銆傛柟娉? <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">stackAccess</pre> </td> </tr> </tbody> </table> <br /> 浣夸竴涓眬閮ㄥ爢鏍堝彉閲忛€掑錛?<code>instanceAccess</code> 浣跨被鐨勪竴涓疄渚嬪彉閲忛€掑錛岃€?<code>staticAccess</code> 浣跨被鐨勪竴涓?<code>static</code> 鍙橀噺閫掑銆?</p> <p><code>instanceAccess</code> 鍜?<code>staticAccess</code> 鐨勬墽琛屾椂闂村熀鏈浉鍚屻€備絾鏄紝 <code>stackAccess</code> 瑕佸揩涓ゅ埌涓夊€嶃€傚瓨鍙栧爢鏍堝彉閲忓姝ゅ揩鏄洜涓猴紝JVM 瀛樺彇鍫嗘爤鍙橀噺姣斿畠瀛樺彇 <code>static</code> 鍙橀噺鎴栫被鐨勫疄渚嬪彉閲忔墽琛岀殑鎿嶄綔灝戙€傝鐪嬩竴涓嬩負(fù)榪欎笁涓柟娉曠敓鎴愮殑瀛楄妭鐮侊細(xì) </p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">Method void stackAccess(int) 0 iconst_0 //灝?0 鍘嬪叆鍫嗘爤銆? 1 istore_2 //寮瑰嚭 0 騫跺皢瀹冨瓨鍌ㄥ湪灞€閮ㄥ垎鍙橀噺琛ㄤ腑绱㈠紩涓?2 鐨勪綅緗?(j)銆? 2 iconst_0 //鍘嬪叆 0銆? 3 istore_3 //寮瑰嚭 0 騫跺皢瀹冨瓨鍌ㄥ湪灞€閮ㄥ彉閲忚〃涓儲(chǔ)寮曚負(fù) 3 鐨勪綅緗?(i)銆? 4 goto 13 //璺寵嚦浣嶇疆 13銆? 7 iinc 2 1 //灝嗗瓨鍌ㄥ湪绱㈠紩 2 澶勭殑 j 鍔?1銆? 10 iinc 3 1 //灝嗗瓨鍌ㄥ湪绱㈠紩 3 澶勭殑 i 鍔?1銆? 13 iload_3 //鍘嬪叆绱㈠紩 3 澶勭殑鍊?(i)銆? 14 iload_1 //鍘嬪叆绱㈠紩 1 澶勭殑鍊?(val)銆? 15 if_icmplt 7 //寮瑰嚭 i 鍜?val銆傚鏋?i 灝忎簬 val錛屽垯璺寵嚦浣嶇疆 7銆? 18 return //榪斿洖璋冪敤鏂規(guī)硶銆? Method void instanceAccess(int) 0 iconst_0 //灝?0 鍘嬪叆鍫嗘爤銆? 1 istore_2 //寮瑰嚭 0 騫跺皢瀹冨瓨鍌ㄥ湪灞€閮ㄥ彉閲忚〃涓儲(chǔ)寮曚負(fù) 2 鐨勪綅緗?(i)銆? 2 goto 18 //璺寵嚦浣嶇疆 18銆? 5 aload_0 //鍘嬪叆绱㈠紩 0 (this)銆? 6 dup //澶嶅埗鍫嗘爤欏剁殑鍊煎茍灝嗗畠鍘嬪叆銆? 7 getfield #19 <Field int instVar> //寮瑰嚭 this 瀵硅薄寮曠敤騫跺帇鍏?instVar 鐨勫€箋€? 10 iconst_1 //鍘嬪叆 1銆? 11 iadd //寮瑰嚭鏍堥《鐨勪袱涓€鹼紝騫跺帇鍏ュ畠浠殑鍜屻€? 12 putfield #19 <Field int instVar> //寮瑰嚭鏍堥《鐨勪袱涓€煎茍灝嗗拰瀛樺偍鍦?instVar 涓€? 15 iinc 2 1 //灝嗗瓨鍌ㄥ湪绱㈠紩 2 澶勭殑 i 鍔?1銆? 18 iload_2 //鍘嬪叆绱㈠紩 2 澶勭殑鍊?(i)銆? 19 iload_1 //鍘嬪叆绱㈠紩 1 澶勭殑鍊?(val)銆? 20 if_icmplt 5 //寮瑰嚭 i 鍜?val銆傚鏋?i 灝忎簬 val錛屽垯璺寵嚦浣嶇疆 5銆? 23 return //榪斿洖璋冪敤鏂規(guī)硶銆? Method void staticAccess(int) 0 iconst_0 //灝?0 鍘嬪叆鍫嗘爤銆? 1 istore_2 //寮瑰嚭 0 騫跺皢瀹冨瓨鍌ㄥ湪灞€閮ㄥ彉閲忚〃涓儲(chǔ)寮曚負(fù) 2 鐨勪綅緗?(i)銆? 2 goto 16 //璺寵嚦浣嶇疆 16銆? 5 getstatic #25 <Field int staticVar> //灝嗗父鏁板瓨鍌ㄦ睜涓?staticVar 鐨勫€煎帇鍏ュ爢鏍堛€? 8 iconst_1 //鍘嬪叆 1銆? 9 iadd //寮瑰嚭鏍堥《鐨勪袱涓€鹼紝騫跺帇鍏ュ畠浠殑鍜屻€? 10 putstatic #25 <Field int staticVar> //寮瑰嚭鍜岀殑鍊煎茍灝嗗畠瀛樺偍鍦?staticVar 涓€? 13 iinc 2 1 //灝嗗瓨鍌ㄥ湪绱㈠紩 2 澶勭殑 i 鍔?1銆? 16 iload_2 //鍘嬪叆绱㈠紩 2 澶勭殑鍊?(i)銆? 17 iload_1 //鍘嬪叆绱㈠紩 1 澶勭殑鍊?(val)銆? 18 if_icmplt 5 //寮瑰嚭 i 鍜?val銆傚鏋?i 灝忎簬 val錛屽垯璺寵嚦浣嶇疆 5銆? 21 return //榪斿洖璋冪敤鏂規(guī)硶銆? </pre> </td> </tr> </tbody> </table> <br /> <p>鏌ョ湅瀛楄妭鐮佹彮紺轟簡(jiǎn)鍫嗘爤鍙橀噺鏁堢巼鏇撮珮鐨勫師鍥犮€侸VM 鏄竴縐嶅熀浜庡爢鏍堢殑铏氭嫙鏈猴紝鍥犳浼樺寲浜?jiǎn)瀵瑰爢鏍堟暟鎹殑瀛樺彇鍜屽鐞嗐€傛墍鏈夊眬閮ㄥ彉閲忛兘瀛樺偍鍦ㄤ竴涓眬閮ㄥ彉閲忚〃涓紝鍦?Java 鎿嶄綔鏁板爢鏍堜腑榪涜澶勭悊錛屽茍鍙楂樻晥鍦板瓨鍙栥€傚瓨鍙?<code>static</code> 鍙橀噺鍜屽疄渚嬪彉閲忔垚鏈洿楂橈紝鍥犱負(fù) JVM 蹇呴』浣跨敤浠d環(huán)鏇撮珮鐨勬搷浣滅爜錛屽茍浠庡父鏁板瓨鍌ㄦ睜涓瓨鍙栧畠浠€傦紙甯告暟瀛樺偍姹犱繚瀛樹竴涓被鍨嬫墍浣跨敤鐨勬墍鏈夌被鍨嬨€佸瓧孌靛拰鏂規(guī)硶鐨勭鍙峰紩鐢ㄣ€傦級(jí) </p> <p>閫氬父錛屽湪絎竴嬈′粠甯告暟瀛樺偍姹犱腑璁塊棶 <code>static</code> 鍙橀噺鎴栧疄渚嬪彉閲忎互鍚庯紝JVM 灝嗗姩鎬佹洿鏀瑰瓧鑺傜爜浠ヤ嬌鐢ㄦ晥鐜囨洿楂樼殑鎿嶄綔鐮併€傚敖綆℃湁榪欑浼樺寲錛屽爢鏍堝彉閲忕殑瀛樺彇浠嶇劧鏇村揩銆?</p> <p>鑰冭檻鍒拌繖浜涗簨瀹烇紝灝卞彲浠ラ噸鏂版瀯寤哄墠闈㈢殑浠g爜錛屼互渚塊€氳繃瀛樺彇鍫嗘爤鍙橀噺鑰屼笉鏄疄渚嬪彉閲忔垨 <code>static</code> 鍙橀噺浣挎搷浣滄洿楂樻晥銆傝鑰冭檻淇敼鍚庣殑浠g爜錛?</p> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tbody> <tr> <td class="code-outline"> <pre class="displaycode">class StackVars { //涓庡墠闈㈢浉鍚?.. void instanceAccess(int val) { int j = instVar; for (int i=0; i<val; i++) j += 1; instVar = j; } void staticAccess(int val) { int j = staticVar; for (int i=0; i<val; i++) j += 1; staticVar = j; } } </pre> </td> </tr> </tbody> </table> <br /> <p>鏂規(guī)硶 <code>instanceAccess</code> 鍜?<code>staticAccess</code> 琚慨鏀逛負(fù)灝嗗畠浠殑瀹炰緥鍙橀噺鎴?<code>static</code> 鍙橀噺澶嶅埗鍒板眬閮ㄥ爢鏍堝彉閲忎腑銆傚綋鍙橀噺鐨勫鐞嗗畬鎴愪互鍚庯紝鍏跺€煎張琚鍒跺洖瀹炰緥鍙橀噺鎴?<code>static</code> 鍙橀噺涓€傝繖縐嶇畝鍗曠殑鏇存敼鏄庢樉鎻愰珮浜?<code>instanceAccess</code> 鍜?<code>staticAccess</code> 鐨勬€ц兘銆傝繖涓変釜鏂規(guī)硶鐨勬墽琛屾椂闂寸幇鍦ㄥ熀鏈浉鍚岋紝 <code>instanceAccess</code> 鍜?<code>staticAccess</code> 鐨勬墽琛岄€熷害鍙瘮 <code>stackAccess</code> 鐨勬墽琛岄€熷害鎱㈠ぇ綰?4%銆?</p> <p>榪欏茍涓嶈〃紺烘?zhèn)ㄥ簲璇ラ伩鍏嶄娇鐢?<code>static</code> 鍙橀噺鎴栧疄渚嬪彉閲忋€傛?zhèn)ㄥ簲璇ヤ娇鐢ㄥ?guī)偍鐨勮璁℃湁鎰忎箟鐨勫瓨鍌ㄦ満鍒躲€備緥濡傦紝濡傛灉鎮(zhèn)ㄥ湪涓€涓驚鐜腑瀛樺彇 <code>static</code> 鍙橀噺鎴栧疄渚嬪彉閲忥紝鍒欐?zhèn)ㄥ彲浠ヤ复鏃稙畣瀹冧滑瀛樺偍鍦ㄤ竴涓眬閮ㄥ爢鏍堝彉閲忎腑錛岃繖鏍峰氨鍙互鏄庢樉鍦版彁楂樹唬鐮佺殑鎬ц兘銆傝繖灝嗘彁渚涙渶楂樻晥鐨勫瓧鑺傜爜鎸囦護(hù)搴忓垪渚?JVM 鎵ц<br /> 杞澆鑷猧bm</p> <img src ="http://www.aygfsteel.com/freeman1984/aggbug/311223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">鐤媯</a> 2010-01-29 14:56 <a href="http://www.aygfsteel.com/freeman1984/archive/2010/01/29/311223.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> 主站蜘蛛池模板: <a href="http://" target="_blank">万盛区</a>| <a href="http://" target="_blank">东丰县</a>| <a href="http://" target="_blank">台北市</a>| <a href="http://" target="_blank">宿州市</a>| <a href="http://" target="_blank">新巴尔虎左旗</a>| <a href="http://" target="_blank">汤阴县</a>| <a href="http://" target="_blank">桐乡市</a>| <a href="http://" target="_blank">安丘市</a>| <a href="http://" target="_blank">富锦市</a>| <a href="http://" target="_blank">苏尼特右旗</a>| <a href="http://" target="_blank">洪雅县</a>| <a href="http://" target="_blank">高邮市</a>| <a href="http://" target="_blank">西充县</a>| <a href="http://" target="_blank">卓资县</a>| <a href="http://" target="_blank">江口县</a>| <a href="http://" target="_blank">静乐县</a>| <a href="http://" target="_blank">志丹县</a>| <a href="http://" target="_blank">密山市</a>| <a href="http://" target="_blank">临清市</a>| <a href="http://" target="_blank">韶关市</a>| <a href="http://" target="_blank">广水市</a>| <a href="http://" target="_blank">尼木县</a>| <a href="http://" target="_blank">房产</a>| <a href="http://" target="_blank">综艺</a>| <a href="http://" target="_blank">宕昌县</a>| <a href="http://" target="_blank">娱乐</a>| <a href="http://" target="_blank">隆化县</a>| <a href="http://" target="_blank">遂昌县</a>| <a href="http://" target="_blank">休宁县</a>| <a href="http://" target="_blank">正蓝旗</a>| <a href="http://" target="_blank">博湖县</a>| <a href="http://" target="_blank">西城区</a>| <a href="http://" target="_blank">兴文县</a>| <a href="http://" target="_blank">新巴尔虎右旗</a>| <a href="http://" target="_blank">房山区</a>| <a href="http://" target="_blank">黄山市</a>| <a href="http://" target="_blank">利川市</a>| <a href="http://" target="_blank">高雄市</a>| <a href="http://" target="_blank">乌兰浩特市</a>| <a href="http://" target="_blank">石首市</a>| <a href="http://" target="_blank">白朗县</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>