锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
Start installing ASP.NET (2.0.50727).
...
Finished installing ASP.NET (2.0.50727).
Microsoft(R) Windows Communication Foundation Installation Utility
[Microsoft (R) Windows (R) Communication Foundation, Version 3.0.4506.2152]
Copyright (c) Microsoft Corporation. All rights reserved.
Installing: Machine.config Section Groups and Handlers
Installing: System.Web Build Provider
Installing: System.Web Compilation Assemblies
Installing: HTTP Handlers
Installing: HTTP Modules
Installing: Web Host Script Mappings
Installing: WMI Classes
Installing: Windows CardSpace (idsvc)
Installing: Net.Tcp Port Sharing Service (NetTcpPortSharing)
Installing: HTTP Namespace Reservations
Microsoft(R) Windows Communication Foundation Installation Utility
[Microsoft (R) Windows (R) Communication Foundation, Version 3.0.4506.2152]
Copyright (c) Microsoft Corporation. All rights reserved.
Installing: Web Host Script Mappings
3.
C:\WINDOWS\Microsoft.NET\Framework\v3.5>WFServicesReg.exe /r
4. 鍙戠敓Error: Failed to access IIS metabase
aspnet_regiis -ga ASPNET
Finished granting ASPNET access to the IIS metabase and other directories used by ASP.NET.
]]>
tabname=>'BTAM003TB',
partname=> NULL,
estimate_percent=>100,
cascade=>TRUE,
degree=>1);
]]>
浜? 瀹夎VS.
浠ヤ笂涓ゆ娌″暐濂借鐨?
涓? 緙栬瘧鏈湴Qt搴? 涓嶇劧浣犱細鍑虹幇鎵句笉鍒皅maind.lib鏂囦歡榪欐牱鐨勭紪璇戦敊璇?
閫氳繃Visual Studio 2008 Command Prompt榪涘叆鎺у埗鍙?
涓瀹氳閫氳繃榪欎釜. 涓嶈兘鍦ㄨ繍琛岄噷鐩存帴杈撳叆cmd榪涘叆. 榪欐牱鐨勮瘽鏄病鏈塚C緙栬瘧鐜鐨?
鍦ㄦ帶鍒跺彴閲宑d鍒癚T鐩綍, 鐩綍閲屾湁涓猚onfigure.exe
杈撳叆: configure -platform win32-msvc
闇瑕佷竴瀹氱殑鏃墮棿浣嗘潵閰嶇疆瀹屾垚.
鐒跺悗杈撳叆: nmake
鐒跺悗瑕佺瓑寰堥暱鏃墮棿絳夊緟Qt琚紪璇戞垚VC鐨刲ib鏍煎紡.
鍥? 鍒涘緩欏圭洰
鍦ㄩ」鐩洰褰曚笅:
鎺у埗鍙拌緭鍏? qmake -project
鐒跺悗: qmake -t vcapp -spec %QT_HOME%\mkspecs\win32-msvc2008
spec鍚庨潰鐨勯」鐩彲浠ョ湅mkspecs鐩綍涓嬬殑瀛愮洰褰? win32-msvc2005, win32-msvn2003浠涔堢殑閮芥湁.
鐒跺悗灝辨湁VC鐨勯」鐩枃浠朵簡.
浜? Visual Studio涓殑閰嶇疆
涓昏鏄痲make鐢熸垚鐨勯」鐩厤緗腑鐨剄t璺緞鏈夐棶棰?鎵浠ヨ閲嶆柊閰嶇疆.
涓昏鏄袱欏?
1. include. 閰嶇疆濡備笅鍥?
璇︾粏欏圭洰:
2. linker 閰嶇疆濡備笅鍥?
鍔犺澆鐨刲ib璇︾粏欏圭洰
榪欐牱灝卞簲璇ュ彲浠ヤ簡.
鍏蜂綋欏圭洰鍚嶇О瑕佺湅浣犵紪璇戝嚭鏉ョ殑鍚嶅瓧浜? 鎴戝湪鎴戞満鍣ㄤ笂緙栬瘧鍑烘潵鐨勬槸QtGuid4.lib鍜孮tCored4.lib
鍙﹀瑕佹兂榪愯緙栬瘧鍑烘潵鐨別xe, 璁板緱鍚х浉鍏崇殑dll鏂囦歡澶嶅埗鍒皊ystem32鐩綍涓?
]]>
鍜宐at鑴氭湰for涓璧烽厤鍚?鍙互瀹炵幇鑷姩鐨勬妸鏌愪釜鐩綍涓嬬殑jar鍖呴兘鏀懼埌classpath閲?
rem Append to CLASSPATH
rem
rem $Id: cpappend.bat 301115 2002-08-04 18:19:43Z patrickl $
rem ---------------------------------------------------------------------------
rem Process the first argument
if ""%1"" == """" goto end
set CLASSPATH=%CLASSPATH%;%1
shift
rem Process the remaining arguments
:setArgs
if ""%1"" == """" goto doneSetArgs
set CLASSPATH=%CLASSPATH% %1
shift
goto setArgs
:doneSetArgs
:end
閰嶅悎for涓璧風敤
set CLASSPATH=.
for %%i in (%CURRENT_DIR%\lib\*.jar) do call cpappend.bat %%i
start java -Duser.dir=%CURRENT_DIR% -cp %CLASSPATH% a.b.c.MainApp
]]>
聽聽聽聽class聽A聽{}
聽聽聽聽class聽B聽extends聽A{}
聽聽聽聽
聽聽聽聽public聽void聽testIt(){
聽聽聽聽聽聽聽聽A聽a聽=聽new聽A();
聽聽聽聽聽聽聽聽B聽b聽=聽new聽B();
聽聽聽聽聽聽聽聽assertTrue(a.getClass().isAssignableFrom(b.getClass()));
聽聽聽聽}
}
]]>
Users of JDKs older than 1.3.0 who wish to port to a Java HotSpot VM, should see Java HotSpot Equivalents of Exact VM flags.
Standard options recognized by the Java HotSpot VM are described on the Java Application Launcher reference pages for Windows, Solaris and Linux. This document deals exclusively with non-standard options recognized by the Java HotSpot VM:
-X
are non-standard (not guaranteed to be supported on all VM implementations), and are subject to change without notice in subsequent releases of the JDK.-XX
are not stable and are not recommended for casual use. These options are subject to change without notice.Default values are listed for Java SE 6 for Solaris Sparc with -server. Some options may vary per architecture/OS/JVM version. Platforms with a differing default value are listed in the description.
-XX:+<option>
and turned off with -XX:-<option>
.-XX:<option>=<number>
. Numbers can include 'm' or 'M' for megabytes, 'k' or 'K' for kilobytes, and 'g' or 'G' for gigabytes (for example, 32k is the same as 32768).-XX:<option>=<string>
, are usually used to specify a file, a path, or a list of commandsFlags marked as manageable are dynamically writeable through the JDK management interface (com.sun.management.HotSpotDiagnosticMXBean API) and also through JConsole. In Monitoring and Managing Java SE 6 Platform Applications, Figure 3 shows an example. The manageable flags can also be set through jinfo -flag.
The options below are loosely grouped into three categories.
Option and Default Value |
Description |
---|---|
-XX:-AllowUserSignalHandlers | Do not complain if the application installs signal handlers. (Relevant to Solaris and Linux only.) |
-XX:AltStackSize=16384 | Alternate signal stack size (in Kbytes). (Relevant to Solaris only, removed from 5.0.) |
-XX:-DisableExplicitGC | Disable calls to System.gc(), JVM still performs garbage collection when necessary. |
-XX:+FailOverToOldVerifier | Fail over to old verifier when the new type checker fails. (Introduced in 6.) |
-XX:+HandlePromotionFailure | The youngest generation collection does not require a guarantee of full promotion of all live objects. (Introduced in 1.4.2 update 11) [5.0 and earlier: false.] |
-XX:+MaxFDLimit | Bump the number of file descriptors to max. (Relevant聽 to Solaris only.) |
-XX:PreBlockSpin=10 | Spin count variable for use with -XX:+UseSpinning. Controls the maximum spin iterations allowed before entering operating system thread synchronization code. (Introduced in 1.4.2.) |
-XX:-RelaxAccessControlCheck | Relax the access control checks in the verifier. (Introduced in 6.) |
-XX:+ScavengeBeforeFullGC | Do young generation GC prior to a full GC. (Introduced in 1.4.1.) |
-XX:+UseAltSigs | Use alternate signals instead of SIGUSR1 and SIGUSR2 for VM internal signals. (Introduced in 1.3.1 update 9, 1.4.1. Relevant to Solaris only.) |
-XX:+UseBoundThreads | Bind user level threads to kernel threads. (Relevant to Solaris only.) |
-XX:-UseConcMarkSweepGC | Use concurrent mark-sweep collection for the old generation. (Introduced in 1.4.1) |
-XX:+UseGCOverheadLimit | Use a policy that limits the proportion of the VM's time that is spent in GC before an OutOfMemory error is thrown. (Introduced in 6.) |
-XX:+UseLWPSynchronization | Use LWP-based instead of thread based synchronization. (Introduced in 1.4.0. Relevant to Solaris only.) |
-XX:-UseParallelGC | Use parallel garbage collection for scavenges. (Introduced in 1.4.1) |
-XX:-UseParallelOldGC | Use parallel garbage collection for the full collections. Enabling this option automatically sets -XX:+UseParallelGC. (Introduced in 5.0 update 6.) |
-XX:-UseSerialGC | Use serial garbage collection. (Introduced in 5.0.) |
-XX:-UseSpinning | Enable naive spinning on Java monitor before entering operating system thread synchronizaton code. (Relevant to 1.4.2 and 5.0 only.) [1.4.2, multi-processor Windows platforms: true] |
-XX:+UseTLAB | Use thread-local object allocation (Introduced in 1.4.0, known as UseTLE prior to that.) [1.4.2 and earlier, x86 or with -client: false] |
-XX:+UseSplitVerifier | Use the new type checker with StackMapTable attributes. (Introduced in 5.0.)[5.0: false] |
-XX:+UseThreadPriorities | Use native thread priorities. |
-XX:+UseVMInterruptibleIO | Thread interrupt before or with EINTR for I/O operations results in OS_INTRPT. (Introduced in 6. Relevant to Solaris only.) |
Option and Default Value |
Description |
---|---|
-XX:+AggressiveOpts | Turn on point performance compiler optimizations that are expected to be default in upcoming releases. (Introduced in 5.0 update 6.) |
-XX:CompileThreshold=10000 | Number of method invocations/branches before compiling [-client: 1,500] |
-XX:LargePageSizeInBytes=4m | Sets the large page size used for the Java heap. (Introduced in 1.4.0 update 1.) [amd64: 2m.] |
-XX:MaxHeapFreeRatio=70 | Maximum percentage of heap free after GC to avoid shrinking. |
-XX:MaxNewSize=size | Maximum size of new generation (in bytes). Since 1.4, MaxNewSize is computed as a function of NewRatio. [1.3.1 Sparc: 32m; 1.3.1 x86: 2.5m.] |
-XX:MaxPermSize=64m | Size of the Permanent Generation.聽 [5.0 and newer: 64 bit VMs are scaled 30% larger; 1.4 amd64: 96m; 1.3.1 -client: 32m.] |
-XX:MinHeapFreeRatio=40 | Minimum percentage of heap free after GC to avoid expansion. |
-XX:NewRatio=2 | Ratio of new/old generation sizes. [Sparc -client: 8; x86 -server: 8; x86 -client: 12.]-client: 4 (1.3) 8 (1.3.1+), x86: 12] |
-XX:NewSize=2.125m | Default size of new generation (in bytes) [5.0 and newer: 64 bit VMs are scaled 30% larger; x86: 1m; x86, 5.0 and older: 640k] |
-XX:ReservedCodeCacheSize=32m | Reserved code cache size (in bytes) - maximum code cache size. [Solaris 64-bit, amd64, and -server x86: 48m; in 1.5.0_06 and earlier, Solaris 64-bit and and64: 1024m.] |
-XX:SurvivorRatio=8 | Ratio of eden/survivor space size [Solaris amd64: 6; Sparc in 1.3.1: 25; other Solaris platforms in 5.0 and earlier: 32] |
-XX:TargetSurvivorRatio=50 | Desired percentage of survivor space used after scavenge. |
-XX:ThreadStackSize=512 | Thread Stack Size (in Kbytes). (0 means use default stack size) [Sparc: 512; Solaris x86: 320 (was 256 prior in 5.0 and earlier); Sparc 64 bit: 1024; Linux amd64: 1024 (was 0 in 5.0 and earlier); all others 0.] |
-XX:+UseBiasedLocking | Enable biased locking. For more details, see this tuning example. (Introduced in 5.0 update 6.) [5.0: false] |
-XX:+UseFastAccessorMethods | Use optimized versions of Get<Primitive>Field. |
-XX:-UseISM | Use Intimate Shared Memory. [Not accepted for non-Solaris platforms.] For details, see Intimate Shared Memory. |
-XX:+UseLargePages | Use large page memory. (Introduced in 5.0 update 5.) For details, see Java Support for Large Memory Pages. |
-XX:+UseMPSS | Use Multiple Page Size Support w/4mb pages for the heap. Do not use with ISM as this replaces the need for ISM. (Introduced in 1.4.0 update 1, Relevant to Solaris 9 and newer.) [1.4.1 and earlier: false] |
Option and Default Value |
Description |
---|---|
-XX:-CITime | Prints time spent in JIT Compiler. (Introduced in 1.4.0.) |
-XX:ErrorFile=./hs_err_pid<pid>.log | If an error occurs, save the error data to this file. (Introduced in 6.) |
-XX:-ExtendedDTraceProbes | Enable performance-impacting dtrace probes. (Introduced in 6. Relevant to Solaris only.) |
-XX:HeapDumpPath=./java_pid<pid>.hprof | Path to directory or filename for heap dump. Manageable. (Introduced in 1.4.2 update 12, 5.0 update 7.) |
-XX:-HeapDumpOnOutOfMemoryError | Dump heap to file when java.lang.OutOfMemoryError is thrown. Manageable. (Introduced in 1.4.2 update 12, 5.0 update 7.) |
-XX:OnError="<cmd args>;<cmd args>" | Run user-defined commands on fatal error. (Introduced in 1.4.2 update 9.) |
-XX:OnOutOfMemoryError="<cmd args>; <cmd args>" |
Run user-defined commands when an OutOfMemoryError is first thrown. (Introduced in 1.4.2 update 12, 6) |
-XX:-PrintClassHistogram | Print a histogram of class instances on Ctrl-Break. Manageable. (Introduced in 1.4.2.) The jmap -histo command provides equivalent functionality. |
-XX:-PrintConcurrentLocks | Print java.util.concurrent locks in Ctrl-Break thread dump. Manageable. (Introduced in 6.) The jstack -l command provides equivalent functionality. |
-XX:-PrintCommandLineFlags | Print flags that appeared on the command line. (Introduced in 5.0.) |
-XX:-PrintCompilation | Print message when a method is compiled. |
-XX:-PrintGC | Print messages at garbage collection. Manageable. |
-XX:-PrintGCDetails | Print more details at garbage collection. Manageable. (Introduced in 1.4.0.) |
-XX:-PrintGCTimeStamps | Print timestamps at garbage collection. Manageable (Introduced in 1.4.0.) |
-XX:-PrintTenuringDistribution | Print tenuring age information. |
-XX:-TraceClassLoading | Trace loading of classes. |
-XX:-TraceClassLoadingPreorder | Trace all classes loaded in order referenced (not loaded). (Introduced in 1.4.2.) |
-XX:-TraceClassResolution | Trace constant pool resolutions. (Introduced in 1.4.2.) |
-XX:-TraceClassUnloading | Trace unloading of classes. |
-XX:-TraceLoaderConstraints | Trace recording of loader constraints. (Introduced in 6.) |
涓, 鏂囦歡鍚嶄腑鏂囦貢鐮侀棶棰?
寮濮嬬煡閬撹兘鐢‵TPClient鐨刲istNames鏂規硶寰楀埌褰撳墠鐩綍涓嬫墍鏈夋枃浠剁殑鍒楄〃. 浣嗘槸鍙戠幇涓枃鏂囦歡鍚嶆槸涔辯爜. 榛樿鎯呭喌涓婩TPClient浣跨敤UTF-8瀛楃闆嗕綔涓哄拰鏈嶅姟鍣ㄩ氳鐨勭紪鐮侀泦. 鑰屾垜浠殑ftp鏈嶅姟鍣ㄦ槸鍦ㄤ腑鏂噖indowsXP涓婅鐨凷ervU. 鎵鏈変嬌鐢℅BK鍋氫負閫氳緙栫爜闆? 緇忚繃鏌ユ壘api鏂囨。, 鎴戠湅鍒頒簡setControlEncoding鏂規硶, 璇曚簡涓涓?鏋滅劧濂戒嬌. 浜庢槸榪欎釜闂灝辮В鍐充簡:
絎?琛? ftp.setControlEncoding("GBK")
鑷充簬conf.setServerLanguageCode("zh")瀵硅繖涓湁浠涔堝獎鍝?鎴戣繕娌℃湁楠岃瘉. 浣嗘槸鍙湁榪欏彞鏄笉琛岀殑.
浜? 浼犺緭binary鏂囦歡, 鐢變簬FTPClient榛樿浣跨敤ASCII浣滀負浼犺緭妯″紡, 鎵鏈変笉鑳戒紶杈撲簩榪涘埗鏂囦歡. 閫氳繃
ftp.setFileType(FTP.BINARY_FILE_TYPE)涓彲浠ヨВ鍐寵繖涓棶棰? 浣嗘槸瑕佸湪login浠ュ悗鎵ц. 鍥犱負榪欎釜鏂規硶瑕佸悜鏈嶅姟鍣ㄥ彂閫?TYPE I"鍛戒護.
寮濮嬬殑鏃跺欑敤鐨勬槸setFileTransferMode, 涓嶈繃涓嶅ソ浣? 瀹冧細鎵ц MODE I鍛戒護, 鏈嶅姟鍣ㄤ笉鎺ュ彈.
涓? 鐢ㄨ鍔ㄦā寮忎紶杈? enterLocalPassiveMode()榪欎釜鍒頒笉鐢ㄥ湪login涔嬪悗鎵ц, 鍥犱負瀹冨彧鏀瑰彉FTPClient瀹炰緥鐨勫唴閮ㄥ睘鎬?
鍥? 鏂偣緇紶. 蹇冩兂搴旇鏈夋敮鎸佸惂, 浜庢槸鏌PI緇撴灉鎵懼埌浜唖etRestartOffset()鏂規硶, 璇曚簡涓涓?鏋滅湡濂戒嬌. 鐢≧andomAccessFile閰嶅悎浣跨敤, 瀹炵幇璧鋒潵榪樻槸铔畝鍗曠殑.
浜? 鍙兘浼犱竴涓枃浠?!
涓嶇煡閬撳ぇ瀹舵湁娌℃湁閬囧埌榪欎釜闂, 浼犺緭絎竴涓枃浠跺ソ浣? 鍚庨潰鐨勭殑retrieveFileStream(name)閮芥槸榪斿洖null. 榪欎釜瀹炲湪鏄護浜哄ご鐥涚殑闂, 闅句笉鎴愯浼犱竴涓枃浠墮噸鏂板緩绔嬩竴嬈¤繛鎺? 閭f牱涔熷お鍦熶簡鍚? 浣嗘槸鏂囨。閲屼篃娌℃湁鍐? 鏉ョ偣鐙犵殑,debug瀹冪殑婧愮爜, 鐪嬬湅瀹冪┒绔熷仛浜嗕粈涔堜簨鎯? 棣栧厛鐪嬩竴涓媐tp鏈嶅姟鍣ㄧ殑鏃ュ織, 鍙戠幇鏃ュ織娌¢棶棰? 榪囨潵鐨勫懡浠ゅ拰reply閮芥槸姝g‘鐨? 浣嗘槸鍙戠幇絎竴涓枃浠朵互鍚庢病鏈夋墽琛孯ETR鍛戒護. 浜庢槸璺熻釜PASV鍛戒護鐨剅eply浠g爜,鍙戠幇涓嶆槸227,鑰屾湇鍔″櫒涓婄殑鏃ュ織鏄庢槑榪斿洖鐨勬槸227. 闅鵑亾鏄疐TPClient瑙f瀽Reply鍑洪棶棰樹簡. 榪涗竴姝ヨ窡韙彂鐜頒簡闂, 鍘熸潵鍦ㄤ竴涓枃浠朵紶杈撹繃紼嬩腑浼氫駭鐢熶袱涓猂eply:
150 Opening BINARY mode data connection for a.sql (19890 Bytes).
226 Transfer complete.
鑰孎TPClient鑷姩娑堣垂鎺変竴涓?浜庢槸瑙f瀽Reply灝卞彂鐢熶簡閿欎綅, 涓嬩竴涓懡浠ょ殑浼氳В鏋?66閭f潯. 鎺ヤ笅鏉ョ殑鍛戒護閮戒笉鏄В鏋愯嚜宸辯殑Reply鑰屾槸鍓嶄竴嬈″懡浠ょ殑. 鎵鏈夊湪PASV鍛戒護鐨凴eply鐮佸氨涓嶅浜? FTPClient涔熷氨涓嶄細鎵ц鎺ヤ笅鏉ユ湰搴旇鎵цRETR鍛戒護.
浠栦笉娑堣垂,鎴戜滑鏉ユ秷璐瑰惂. 浜庢槸鍦ㄦ枃浠朵紶杈撳畬鎴愪互鍚? 涓誨姩璋冪敤涓嬈etReply()鎶婃帴涓嬫潵鐨?26娑堣垂鎺? 榪欐牱鍋氭槸鍙互瑙e喅榪欎釜鏆傛椂鐨勯棶棰? 浣嗕笉鐭ラ亾鍦ㄥ叾浠栫殑ftp鎿嶄綔涓婁細涓嶄細涔熸湁綾諱技鐨勬儏鍐? FTPClient榪欑偣鍙仛鐨勪笉澶уソ.
瀵逛簬涓婇潰榪欎釜闂, 鎴戞湰鏉ユ兂淇敼涓涓婩TPClient榪欎釜綾繪潵褰誨簳瑙e喅闂. 緇撴灉鍙戠幇鑷繁涔熸兂涓嶅嚭濂藉姙娉? 鏈鍚庤繕鏄斁寮冧簡.
褰揟omcat5鍚姩浠ュ悗錛屽畠鍒涘緩涓緋誨垪綾誨姞杞藉櫒銆傝繖浜涚被鍔犺澆鍣ㄤ互鐖跺瓙鍏崇郴緇勭粐鍦ㄤ竴璧鳳紝鐖剁被鍔犺澆鍣ㄥ湪瀛愮被鍔犺澆鍣ㄧ殑涓婇潰錛?/p>
榪欎簺綾誨姞杞藉櫒鎵鎵紨鐨勮鑹詫紝浠ュ強瀹冧滑鍙互瑙佸埌鐨勭被鍜岃祫婧愮殑瑙勫垯濡備笅錛?br />
濡備笂鍥炬墍紺猴紝Tomcat5 鍦ㄥ垵濮嬪寲鐨勬椂鍊欏垱寤哄涓嬬被鍔犺澆鍣細
Bootstrap - 榪欎釜綾誨姞杞藉櫒鍙互鍔犺澆Java铏氭嫙鏈虹殑榪愯鏃跺熀紜綾伙紝浠ュ強鍦ㄧ郴緇熸墿灞曠洰褰?$JAVA_HOME/jre/lib/ext
)涓殑鎵鏈塉ar鍖呬腑鐨勭被銆?strong>娉ㄦ剰錛嶄竴浜汮VM鍙兘鐢ㄥ涓被鍔犺澆鍣ㄦ潵瀹炵幇瀹冿紝鎴栬呭畠鏄牴鏈笉鑳借鐪嬭鐨勩?br />
System - 榪欎釜綾誨姞杞藉櫒涓鑸彲浠ュ姞杞?font face="Courier New">CLASSPATH鐜鍙橀噺鐨勫唴瀹廣傛墍鏈夎繖涓被瀵逛簬Tomcat鍐呴儴鐨勭被鍜寃eb搴旂敤紼嬪簭鐨勯兘鏄彲瑙佺殑銆傚敖綆″姝わ紝鏍囧噯鐨凾omcat5鍚姩鑴氭湰($CATALINA_HOME/bin/catalina.sh
聽鎴?%CATALINA_HOME%\bin\catalina.bat
)閮戒細蹇界暐CLASSPATH鐜鍙橀噺錛屽彇鑰屼唬涔嬬殑鏄粠濡備笅浠撳簱鍔犺澆錛?/font>
Common - 榪欎釜綾誨姞杞藉櫒鍙互浣夸竴浜涢檮鍔犵殑綾誨浜?font face="Courier New">Tomcat鍐呴儴鐨勭被鍜寃eb搴旂敤紼嬪簭鍙銆傛甯告儏鍐典笅錛屽簲鐢ㄧ▼搴忎笉搴旇鏇挎崲瀹冦傛墍鏈?CATALINA_HOME/common/classes鐩綍涓嬬殑鏈墦鍖呯被鍜岃祫婧愶紝浠ュ強$CATALINA_HOME/commons/endorsed銆?CATALINA_HOME/commons/i18n銆?CATALINA_HOME/common/lib鐩綍涓嬬殑Jar鍖呬腑鐨勭被鍜岃祫婧愰兘鏄繖涓被鍔犺澆鍣ㄧ殑鍔犺澆瀵硅薄銆傞粯璁ゆ儏鍐碉紝鍖呮嫭濡備笅鍐呭錛?/font>聽聽聽聽聽聽聽聽聽
Catalina - 榪欎釜綾誨姞杞藉櫒涓昏鍔犺澆Tomcat5鑷繁鎵闇瑕佺殑綾誨拰璧勬簮銆傝繖浜涚被鍜岃祫婧愬浜嶹eb搴旂敤紼嬪簭鏄畬鍏ㄤ笉鍙鐨勩傚湪$CATALINA_HOME/server/classes鐩綍涓嬬殑鎵鏈夌被鍜岃祫婧愶紝$CATALINA_HOME/server/lib涓嬬殑鎵鏈塉ar鍖呬腑綾誨拰璧勬簮鏄繖涓被鍔犺澆鍣ㄧ殑鍔犺澆瀵硅薄銆傞粯璁ゆ儏鍐碉紝鍖呮嫭涓涓嬪唴瀹癸細
AJP
web聽鏈嶅姟鍣ㄧ殑榪炴帴鍣紝涓鑸敤浜嶢pache錛宨Planet iAS鍜?iWS.銆?
Shared - 榪欎釜綾誨姞杞藉櫒鐢ㄤ簬鎶婁竴浜涚被鍜岃祫婧愬叡浜粰鎵鏈?/strong>鐨剋eb搴旂敤紼嬪簭銆?闄ら潪Tomcat鍐呴儴鐨勭被涔熼渶瑕佽闂繖浜涚被錛屽湪榪欑鎯呭喌涓嬩綘搴旇鎶婂畠浠斁鍦?strong>Common綾誨姞杞借兘鍔犺澆鐨勫湴鏂?. 鍦?font face="Courier New">$CATALINA_BASE/shared/classes鐩綍涓嬬殑鎵鏈夋湭鎵撳寘綾誨拰璧勬簮錛屼互鍙?CATALINA_BASE/shared/lib鐩綍涓嬬殑鎵鏈塉ar鍖呬腑鐨勭被鍜岃祫婧愬彲浠ヨ鍏跺姞杞姐傚鏋滈氳繃$CATALINA_BASE鐜鍙橀噺鏉ヤ粠鍚屼竴涓猼omcat紼嬪簭榪愯浜嗗涓湪瀹炰緥錛岄偅涔堣繖涓被鍔犺澆鍣ㄧ殑浠撳簱鏄浉瀵逛簬$CATALINA_BASE鑰屼笉鏄?CATALINA_HOME銆?/font>聽
WebappX - 緋葷粺浼氫負閮ㄧ講鍦ㄤ竴涓猅omcat瀹炰緥涓殑姣忎釜搴旂敤紼嬪簭鍒涘緩涓涓繖鏍風殑綾誨姞杞藉櫒錛屽畠浠負鎵灞炵殑搴旂敤紼嬪簭鍔犺澆綾匯傛墍鏈変綘鐨剋eb搴旂敤紼嬪簭鍖呯殑/WEB-INF/classes鐩綍涓嬬殑綾誨拰璧勬簮錛屼互鍙?/font> 榪欐牱鍦ㄤ竴涓獁eb搴旂敤紼嬪簭涓紝綾誨拰璧勬簮鐨勫姞杞介『搴忔槸榪欐牱錛?/p>
/WEB-INF/lib 鐩綍涓嬬殑鎵鏈塉ar鍖呬腑鐨勭被鍜岃祫婧愭槸榪欎釜綾葷殑鍔犺澆瀵硅薄銆傝繖浜涚被鍜岃祫婧愪粎瀵硅繖涓簲鐢ㄧ▼搴忓彲瑙侊紝騫朵笖榪欎釜搴旂敤紼嬪簭涔熺湅涓嶈鍏朵粬搴旂敤紼嬪簭鐨勭被鍜岃祫婧愩?br />
灝卞儚涓婇潰鎵鎻忚堪鐨勶紝web搴旂敤紼嬪簭鐨勭被鍔犺澆鐨勫姞杞芥祦紼嬩笌榛樿鐨凧ava 2鐨勭被璁拌澆鎵樼妯″瀷鏄?strong>涓嶄竴鏍?/strong>鐨勩傚綋鏈変竴涓姹傞渶瑕佸簲鐢ㄧ▼搴忕殑WebappX 綾誨姞杞藉櫒鍔犺澆涓涓被鐨勬椂鍊欙紝榪欎釜綾誨姞杞藉櫒鏄?strong>棣栧厛鍒拌嚜宸辯殑浠撳簱涓煡鎵撅紝鑰屼笉鏄厛浜ょ粰涓婇潰鐨勭被鍔犺澆鍣ㄦ煡鎵俱傝繖閲屾湁涓浜涗緥澶栥侸RE鐨勫熀紜綾繪槸涓嶈兘琚鐩栫殑銆傚浜庡叾浠栦竴浜涚被錛堝J2SE 1.4+涓殑XML瑙f瀽鍣ㄧ粍浠訛級錛屽彲浠ヤ嬌鐢↗2SE1.4鐨勭鍚嶇壒鎬с傛渶鍚庝換浣曞寘鎷瑂ervlet API綾葷殑Jar鍖呬細琚拷鐣ャ俆omcat5涓殑鍏朵粬鐨勭被鍔犺澆鍣ㄤ嬌鐢ㄦ甯告墭綆℃ā寮忋?/p>
]]>
http://jamesdu.blogchina.com/349567.html聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽JVM瑙勮寖瀹氫箟浜嗕袱縐嶇被鍨嬬殑綾昏杞藉櫒錛?strong>鍚姩鍐呰杞藉櫒(bootstrap)鍜岀敤鎴瘋嚜瀹氫箟瑁呰澆鍣?/strong>(user-defined class loader)銆?
聽
涓錛幝犅犅?ClassLoader鍩烘湰姒傚康
1錛?/strong>ClassLoader鍒嗙被
綾昏杞藉櫒鏄敤鏉ユ妸綾?class)瑁呰澆榪汮VM鐨勩?br />JVM瑙勮寖瀹氫箟浜嗕袱縐嶇被鍨嬬殑綾昏杞藉櫒錛?strong>鍚姩鍐呰杞藉櫒(bootstrap)鍜岀敤鎴瘋嚜瀹氫箟瑁呰澆鍣?/strong>(user-defined class loader)銆?
JVM鍦ㄨ繍琛屾椂浼氫駭鐢熶笁涓狢lassLoader:Bootstrap聽ClassLoader銆丒xtension聽ClassLoader鍜孉ppClassLoader.Bootstrap鏄敤C++緙栧啓鐨勶紝鎴戜滑鍦↗ava涓湅涓嶅埌瀹?鏄痭ull,鏄疛VM鑷甫鐨勭被瑁呰澆鍣紝鐢ㄦ潵瑁呰澆鏍稿績綾誨簱錛屽java.lang.*絳夈?br />AppClassLoader鐨?/strong>Parent鏄?/strong>ExtClassLoader錛岃?/strong>ExtClassLoader鐨?/strong>Parent涓?/strong>Bootstrap聽ClassLoader銆?/strong>
聽
Java鎻愪緵浜嗘娊璞$被ClassLoader錛屾墍鏈夌敤鎴瘋嚜瀹氫箟綾昏杞藉櫒閮藉疄渚嬪寲鑷?/strong>ClassLoader鐨勫瓙綾匯?/strong> System Class Loader鏄竴涓壒孌婄殑鐢ㄦ埛鑷畾涔夌被瑁呰澆鍣紝鐢?/strong>JVM鐨勫疄鐜拌呮彁渚涳紝鍦ㄧ紪紼嬭呬笉鐗瑰埆鎸囧畾瑁呰澆鍣ㄧ殑鎯呭喌涓嬮粯璁よ杞界敤鎴風被銆傜郴緇熺被瑁呰澆鍣ㄥ彲浠ラ氳繃ClassLoader.getSystemClassLoader() 鏂規硶寰楀埌銆?br />聽
渚?錛屾祴璇曚綘鎵浣跨敤鐨凧VM鐨凜lassLoader
/*LoaderSample1.java*/
鍦ㄦ垜鐨勬満鍣ㄤ笂(Sun Java 1.4.2)鐨勮繍琛岀粨鏋?br />sun.misc.Launcher$AppClassLoader@1a0c10f
sun.misc.Launcher$ExtClassLoader@e2eec8
null
java.lang.Object's loader is null
LoaderSample1's loader is sun.misc.Launcher$AppClassLoader@1a0c10f
絎竴琛岃〃紺猴紝緋葷粺綾昏杞藉櫒瀹炰緥鍖栬嚜綾籹un.misc.Launcher$AppClassLoader
絎簩琛岃〃紺猴紝緋葷粺綾昏杞藉櫒鐨刾arent瀹炰緥鍖栬嚜綾籹un.misc.Launcher$ExtClassLoader
絎笁琛岃〃紺猴紝緋葷粺綾昏杞藉櫒parent鐨刾arent涓篵ootstrap
絎洓琛岃〃紺猴紝鏍稿績綾籮ava.lang.Object鏄敱bootstrap瑁呰澆鐨?
絎簲琛岃〃紺猴紝鐢ㄦ埛綾籐oaderSample1鏄敱緋葷粺綾昏杞藉櫒瑁呰澆鐨?
聽
聽
浜岋紟parent delegation妯″瀷
浠?.2鐗堟湰寮濮嬶紝Java寮曞叆浜嗗弻浜插鎵樻ā鍨嬶紝浠庤屾洿濂界殑淇濊瘉Java騫沖彴鐨勫畨鍏ㄣ?strong>鍦ㄦ妯″瀷涓嬶紝褰撲竴涓杞藉櫒琚姹傝杞芥煇涓被鏃訛紝瀹冮鍏堝鎵樿嚜宸辯殑parent鍘昏杞斤紝鑻?/strong>parent鑳借杞斤紝鍒欒繑鍥炶繖涓被鎵瀵瑰簲鐨?/strong>Class瀵硅薄錛岃嫢parent涓嶈兘瑁呰澆錛屽垯鐢?/strong>parent鐨勮姹傝呭幓瑁呰澆銆?br />
鍥?1 parent delegation妯″瀷
濡傚浘1鎵紺猴紝loader2鐨刾arent涓簂oader1錛宭oader1鐨刾arent涓簊ystem class loader銆傚亣璁緇oader2琚姹傝杞界被MyClass錛屽湪parent delegation妯″瀷涓嬶紝loader2棣栧厛璇鋒眰loader1浠d負瑁呰澆錛宭oader1鍐嶈姹傜郴緇熺被瑁呰澆鍣ㄥ幓瑁呰澆MyClass銆傝嫢緋葷粺瑁呰澆鍣ㄨ兘鎴愬姛瑁呰澆錛屽垯灝哅yClass鎵瀵瑰簲鐨凜lass瀵硅薄鐨剅eference榪斿洖緇檒oader1錛宭oader1鍐嶅皢reference榪斿洖緇檒oader2錛屼粠鑰屾垚鍔熷皢綾籑yClass瑁呰澆榪涜櫄鎷熸満銆傝嫢緋葷粺綾昏杞藉櫒涓嶈兘瑁呰澆MyClass錛宭oader1浼氬皾璇曡杞組yClass錛岃嫢loader1涔熶笉鑳芥垚鍔熻杞斤紝loader2浼氬皾璇曡杞姐傝嫢鎵鏈夌殑parent鍙妉oader2鏈韓閮戒笉鑳借杞斤紝鍒欒杞藉け璐ャ?br />聽
鑻ユ湁涓涓兘鎴愬姛瑁呰澆錛屽疄闄呰杞界殑綾昏杞藉櫒琚О涓哄畾涔夌被瑁呰澆鍣紝鎵鏈夎兘鎴愬姛榪斿洖Class瀵硅薄鐨勮杞藉櫒錛堝寘鎷畾涔夌被瑁呰澆鍣級琚О涓哄垵濮嬬被瑁呰澆鍣ㄣ傚鍥?鎵紺猴紝鍋囪loader1瀹為檯瑁呰澆浜哅yClass錛屽垯loader1涓篗yClass鐨勫畾涔夌被瑁呰澆鍣紝loader2鍜宭oader1涓篗yClass鐨勫垵濮嬬被瑁呰澆鍣ㄣ?br />聽
闇瑕佹寚鍑虹殑鏄紝Class Loader鏄璞★紝瀹冪殑鐖跺瓙鍏崇郴鍜岀被鐨勭埗瀛愬叧緋繪病鏈変換浣曞叧緋匯?br />聽
閭d箞parent delegation妯″瀷涓轟粈涔堟洿瀹夊叏浜嗭紵鍥犱負鍦ㄦ妯″瀷涓嬬敤鎴瘋嚜瀹氫箟鐨勭被瑁呰澆鍣ㄤ笉鍙兘瑁呰澆搴旇鐢辯埗浜茶杞藉櫒瑁呰澆鐨勫彲闈犵被錛屼粠鑰岄槻姝笉鍙潬鐢氳嚦鎭舵剰鐨勪唬鐮佷唬鏇跨敱鐖朵翰瑁呰澆鍣ㄨ杞界殑鍙潬浠g爜銆傚疄闄呬笂錛岀被瑁呰澆鍣ㄧ殑緙栧啓鑰呭彲浠ヨ嚜鐢遍夋嫨涓嶇敤鎶婅姹傚鎵樼粰parent錛屼絾姝e涓婃墍璇達紝浼氬甫鏉ュ畨鍏ㄧ殑闂銆?/strong>
聽
聽
涓夛紟鍛藉悕絀洪棿鍙婂叾浣滅敤
姣忎釜綾昏杞藉櫒鏈夎嚜宸辯殑鍛藉悕絀洪棿錛屽懡鍚嶇┖闂寸敱鎵鏈変互姝よ杞藉櫒涓哄垱濮嬬被瑁呰澆鍣ㄧ殑綾葷粍鎴愩備笉鍚屽懡鍚嶇┖闂寸殑涓や釜綾繪槸涓嶅彲瑙佺殑錛屼絾鍙寰楀埌綾繪墍瀵瑰簲鐨凜lass瀵硅薄鐨剅eference錛岃繕鏄彲浠ヨ闂彟涓鍛藉悕絀洪棿鐨勭被銆?br />聽
渚?婕旂ず浜嗕竴涓懡鍚嶇┖闂寸殑綾誨浣曚嬌鐢ㄥ彟涓鍛藉悕絀洪棿鐨勭被銆傚湪渚嬪瓙涓紝LoaderSample2鐢辯郴緇熺被瑁呰澆鍣ㄨ杞斤紝LoaderSample3鐢辮嚜瀹氫箟鐨勮杞藉櫒loader璐熻矗瑁呰澆錛屼袱涓被涓嶅湪鍚屼竴鍛藉悕絀洪棿錛屼絾LoaderSample2寰楀埌浜哃oaderSample3鎵瀵瑰簲鐨凜lass瀵硅薄鐨剅eference錛屾墍浠ュ畠鍙互璁塊棶LoaderSampl3涓叕鍏辯殑鎴愬憳(濡俛ge)銆?br />渚?涓嶅悓鍛藉悕絀洪棿鐨勭被鐨勮闂?br />/*LoaderSample2.java*/
/*sub/Loadersample3.java*/
緙栬瘧錛歫avac LoaderSample2.java; javac sub/LoaderSample3.java
榪愯錛歫ava LoaderSample2
LoaderSample3 loaded
age is 30
浠庤繍琛岀粨鏋滀腑鍙互鐪嬪嚭錛屽湪綾籐oaderSample2涓彲浠ュ垱寤哄浜庡彟涓鍛藉悕絀洪棿鐨勭被LoaderSample3涓殑瀵硅薄騫跺彲浠ヨ闂叾鍏叡鎴愬憳age銆?br />榪愯鏃跺寘(runtime package)
鐢卞悓涓綾昏杞藉櫒瀹氫箟瑁呰澆鐨勫睘浜庣浉鍚屽寘鐨勭被緇勬垚浜嗚繍琛屾椂鍖咃紝鍐沖畾涓や釜綾繪槸涓嶆槸灞炰簬鍚屼竴涓繍琛屾椂鍖咃紝涓嶄粎瑕佺湅瀹冧滑鐨勫寘鍚嶆槸鍚︾浉鍚岋紝榪樿鐪嬬殑瀹氫箟綾昏杞藉櫒鏄惁鐩稿悓銆傚彧鏈夊睘浜庡悓涓榪愯鏃跺寘鐨勭被鎵嶈兘浜掔浉璁塊棶鍖呭彲瑙佺殑綾誨拰鎴愬憳銆傝繖鏍風殑闄愬埗閬垮厤浜嗙敤鎴瘋嚜宸辯殑浠g爜鍐掑厖鏍稿績綾誨簱鐨勭被璁塊棶鏍稿績綾誨簱鍖呭彲瑙佹垚鍛樼殑鎯呭喌銆傚亣璁劇敤鎴瘋嚜宸卞畾涔変簡涓涓被java.lang.Yes錛屽茍鐢ㄧ敤鎴瘋嚜瀹氫箟鐨勭被瑁呰澆鍣ㄨ杞斤紝鐢變簬java.lang.Yes鍜屾牳蹇冪被搴搄ava.lang.*鐢變笉鍚岀殑瑁呰澆鍣ㄨ杞斤紝瀹冧滑灞炰簬涓嶅悓鐨勮繍琛屾椂鍖咃紝鎵浠ava.lang.Yes涓嶈兘璁塊棶鏍稿績綾誨簱java.lang涓被鐨勫寘鍙鐨勬垚鍛樸?
聽
鎬葷粨
鍛藉悕絀洪棿騫舵病鏈夊畬鍏ㄧ姝㈠睘浜庝笉鍚岀┖闂寸殑綾葷殑浜掔浉璁塊棶錛屽弻浜插鎵樻ā鍨嬪姞寮轟簡Java鐨勫畨鍏紝榪愯鏃跺寘澧炲姞浜嗗鍖呭彲瑙佹垚鍛樼殑淇濇姢銆?/strong>
聽
浜岋紟聽聽聽 鎵╁睍ClassLoader鏂規硶
鎴戜滑鐩殑鏄粠鏈湴鏂囦歡緋葷粺浣跨敤鎴戜滑瀹炵幇鐨勭被瑁呰澆鍣ㄨ杞戒竴涓被銆?strong>涓轟簡鍒涘緩鑷繁鐨勭被瑁呰澆鍣ㄦ垜浠簲璇ユ墿灞?/strong>ClassLoader綾伙紝榪欐槸涓涓娊璞$被銆傛垜浠垱寤轟竴涓?/strong>FileClassLoader extends ClassLoader銆傛垜浠渶瑕佽鐩?/strong>ClassLoader涓殑findClass(String name)鏂規硶錛岃繖涓柟娉曢氳繃綾葷殑鍚嶅瓧鑰屽緱鍒頒竴涓?/strong>Class瀵硅薄銆?/strong>
聽聽聽鎴戜滑榪樺簲璇ユ彁渚涗竴涓柟娉昹oadClassData(String name)錛岄氳繃綾葷殑鍚嶇О榪斿洖class鏂囦歡鐨勫瓧
鑺傛暟緇勩傜劧鍚庝嬌鐢–lassLoader鎻愪緵鐨刣efineClass()鏂規硶鎴戜滑灝卞彲浠ヨ繑鍥濩lass瀵硅薄浜嗐?/strong>
鍞墌~錛岀湅鏉ユ垜寰楀姞寮哄瓧絎︾紪鐮佹柟闈㈢殑鐭ヨ瘑浜嗭紒
浠婂ぉ鐪嬪埌鐨勪竴涓?/SPAN>Blog涓婄殑鍐呭錛屾垜鎶婂ぇ鑷村唴瀹規憳褰曚笅鏉ワ紝浣滀負澶囧繕銆?/SPAN>
http://javachaos.crazyredpanda.com/?p=99
棣栧厛鐪嬩竴涓?/SPAN>LinkedList鍜?/SPAN>ArrayList鐨勭戶鎵垮叧緋匯?/SPAN>
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Queue<E>, Cloneable, Serializable
涓よ呴兘瀹炵幇List鎺ュ彛錛屽墠鑰呭疄鐜?/SPAN>RandomAccess鎺ュ彛錛屽悗鑰呭疄鐜?/SPAN>Queue鎺ュ彛銆?/SPAN>
ArrayList
ArrayList鍏跺疄鏄寘瑁呬簡涓涓暟緇?/SPAN> Object[]錛屽綋瀹炰緥鍖栦竴涓?/SPAN>ArrayList鏃訛紝涓涓暟緇勪篃琚疄渚嬪寲錛屽綋鍚?/SPAN>ArrayList涓坊鍔犲璞℃槸錛屾暟緇勭殑澶у皬涔熺浉搴旂殑鏀瑰彉銆傝繖鏍峰氨甯︽潵浠ヤ笅鏈夌己鐐癸細
蹇熼殢鍗寵闂?/SPAN> 浣犲彲浠ラ殢鍗寵闂瘡涓厓绱犺屼笉鐢ㄨ冭檻鎬ц兘闂錛岄氳繃璋冪敤get(i)鏂規硶鏉ヨ闂笅鏍囦負i鐨勬暟緇勫厓绱犮?/SPAN>
鍚戝叾涓坊鍔犲璞¢熷害鎱?/SPAN> 褰撲綘鍒涘緩鏁扮粍鏄茍涓嶈兘紜畾鍏跺閲忥紝鎵浠ュ綋鏀瑰彉榪欎釜鏁扮粍鏃跺氨蹇呴』鍦ㄥ唴瀛樹腑鍋氬緢澶氫簨鎯呫?/SPAN>
鎿嶄綔鍏朵腑瀵硅薄鐨勯熷害鎱?/SPAN> 褰撲綘瑕佹兂鏁扮粍涓換鎰忎袱涓厓绱犱腑闂存坊鍔犲璞℃椂錛屾暟緇勯渶瑕佺Щ鍔ㄦ墍鏈夊悗闈㈢殑瀵硅薄銆?/SPAN>
LinkedList
LinkedList鏄氳繃鑺傜偣鐩存帴褰兼榪炴帴鏉ュ疄鐜扮殑銆傛瘡涓涓妭鐐歸兘鍖呭惈鍓嶄竴涓妭鐐圭殑寮曠敤錛屽悗涓涓妭鐐圭殑寮曠敤鍜岃妭鐐瑰瓨鍌ㄧ殑鍊箋傚綋涓涓柊鑺傜偣鎻掑叆鏃訛紝鍙渶瑕佷慨鏀瑰叾涓繚鎸佸厛鍚庡叧緋葷殑鑺傜偣鐨勫紩鐢ㄥ嵆鍙紝褰撳垹闄よ褰曟椂涔熶竴鏍楓傝繖鏍峰氨甯︽潵浠ヤ笅鏈夌己鐐癸細
鎿嶄綔鍏朵腑瀵硅薄鐨勯熷害蹇?/SPAN> 鍙渶瑕佹敼鍙樿繛鎺ワ紝鏂扮殑鑺傜偣鍙互鍦ㄥ唴瀛樹腑鐨勪換浣曞湴鏂?/SPAN>
涓嶈兘闅忓嵆璁塊棶 铏界劧瀛樺湪get()鏂規硶錛屼絾鏄繖涓柟娉曟槸閫氳繃閬嶅巻鎺ョ偣鏉ュ畾浣嶇殑鎵浠ラ熷害鎱€?/SPAN>
涓浜涚粨璁猴細
褰撲竴浜涜瀹氫箟濂界殑鏁版嵁闇瑕佹斁鍒頒笌鏁扮粍瀵瑰簲鐨?/SPAN>List涓紝ArrayList鏄緢濂界殑閫夋嫨錛屽洜涓哄畠鍙互鍔ㄦ佸彉鍖栵紝浣嗘槸涓嶈鍦ㄦ暣涓簲鐢ㄧ▼搴忕敤棰戠箒鐨勪嬌鐢ㄣ傚綋浣犺寰堟柟渚跨殑鎿嶄綔鍏朵腑鐨勬暟鎹屼笉鐢ㄩ殢鍗寵闂椂LinkList鏄緢濂界殑閫夋嫨銆傚鏋滀綘瑕侀綣侀殢鍗寵闂緩璁嬌鐢ㄦ暟緇勩?/SPAN>
鍙﹀涓涓垜娌℃湁鎻愬埌鐨勬槸鍏充簬Queue銆?/SPAN>LinkedList鐨勫疄鐜頒嬌鍏跺叿鏈夊緢濂界殑鍙墿灞曟э紝鍙互鏂逛究鐨勫湪寮濮嬪拰緇撳熬娣誨姞鍒犻櫎鑺傜偣銆傛墍浠?/SPAN>LinkedList寰堥傚悎鐢ㄦ潵瀹炵幇Queue鍜?/SPAN>Stack錛屽敖綆″湪Java5縐嶅凡緇忔湁浜嗕竴涓?/SPAN>Stack鐨勫疄鐜般?/SPAN>
浠ヤ笂鏄師鏂囦腑鐨勮鐐癸紝浣嗘槸鍦ㄥ洖澶嶄腑涔熸湁浜哄弽瀵癸細
LinkedList鏈変互涓嬬己闄鳳細
瀵硅薄鍒嗛厤-姣忔坊鍔犱竴欏瑰氨鍒嗛厤涓涓璞?/SPAN>
鍥炴敹鍨冨溇-瀵硅薄鍒嗛厤鐨勭粨鏋?/SPAN>
闅忓嵆璁塊棶鎱?/SPAN>-璁捐涓婄殑鍘熷洜
娣誨姞鍒犻櫎鎱?/SPAN>-鍥犱負棣栧厛瑕佹壘鍒頒綅緗?/SPAN>
搴旇浣跨敤LinkedList鐨勬儏鍐甸潪甯稿皯銆傚ぇ澶氭暟鐨勫緩璁嬌浣跨敤LinkedList鏄敊璇殑銆?/SPAN>
JDK鐨?/SPAN>Stack灝辨槸鐢ㄦ暟緇勬潵瀹炵幇鐨勩?/SPAN>
鍦ㄥ鏁版椂闂撮噷浣犲茍涓嶆槸鍚?/SPAN>List涓棿娣誨姞鏁版嵁錛岃屾槸鍚戝湪緇撳熬娣誨姞錛岃繖鏍風殑鎿嶄綔ArrayList琛ㄧ幇鐨勫緢濂姐?/SPAN>
LinkedList鍦ㄥ疄鐜?/SPAN>Queue鏃跺緢鏈夌敤銆?/SPAN>
鐒跺悗鏄師鏂囦綔鑰呮彁渚涚殑涓浜涙暟鎹細
addFirst() to array list took 1422
addFirst() to linked list using general methods took 16
addFirst() to linked list using linked list methods took 16
addLast() to array list took 16
addLast() to linked list using general methods took 15
addLast() to linked list using linked list methods took 0
addMiddleTest() to array list took 735
addMiddleTest() to linked list using general methods took 11688
addMiddleTest() to linked list using linked list methods took 8406
removeFirst() to array list took 1422
removeFirst() to linked list using general methods took 0
removeFirst() to linked list using linked list methods took 0
removeLast() to array list took 0
removeLast() to linked list using general methods took 0
removeLast() to linked list using linked list methods took 0
removeMiddle() to array list took 734
removeMiddle() to linked list using general methods took 7594
removeMiddle() to linked list using linked list methods took 7719
fetchFirst() to array list took 0
fetchFirst() to linked list using general methods took 0
fetchFirst() to linked list using linked list methods took 0
fetchLast() to array list took 16
fetchLast() to linked list using general methods took 0
fetchLast() to linked list using linked list methods took 0
fetchMiddle() to array list took 15
fetchMiddle() to linked list using general methods took 9156
fetchMiddle() to linked list using linked list methods took 9234