锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国产亚洲一区二区三区在线观看,亚洲国产精品成人精品无码区在线,久久亚洲精品高潮综合色a片http://www.tkk7.com/mstar/archive/2010/08/11/328481.html榛戠伒榛戠伒Wed, 11 Aug 2010 01:59:00 GMThttp://www.tkk7.com/mstar/archive/2010/08/11/328481.htmlhttp://www.tkk7.com/mstar/comments/328481.htmlhttp://www.tkk7.com/mstar/archive/2010/08/11/328481.html#Feedback0http://www.tkk7.com/mstar/comments/commentRss/328481.htmlhttp://www.tkk7.com/mstar/services/trackbacks/328481.htmlC:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regiis.exe -i

Start installing ASP.NET (2.0.50727).
...
Finished installing ASP.NET (2.0.50727).


C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation>ServiceModelReg.exe //x


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

C:\WINDOWS\Microsoft.NET\Framework\v3.0\Windows Communication Foundation>ServiceModelReg.exe /s:W3SVC

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 /c

C:\WINDOWS\Microsoft.NET\Framework\v3.
5>WFServicesReg.exe /r

4.  鍙戠敓Error: Failed to access IIS metabase

aspnet_regiis -ga ASPNET
Start granting ASPNET access to the IIS metabase and other directories used by ASP.NET.
Finished granting ASPNET access to the IIS metabase and other directories used by ASP.NET.

榛戠伒 2010-08-11 09:59 鍙戣〃璇勮
]]>
Oracle寤哄畬绱㈠紩鍚庤analyze涓涓嬫墠琛?http://www.tkk7.com/mstar/archive/2009/11/25/303667.html榛戠伒榛戠伒Wed, 25 Nov 2009 09:33:00 GMThttp://www.tkk7.com/mstar/archive/2009/11/25/303667.htmlhttp://www.tkk7.com/mstar/comments/303667.htmlhttp://www.tkk7.com/mstar/archive/2009/11/25/303667.html#Feedback0http://www.tkk7.com/mstar/comments/commentRss/303667.htmlhttp://www.tkk7.com/mstar/services/trackbacks/303667.html         ownname=>'BTA',
        tabname=>'BTAM003TB',
        partname=> NULL,
        estimate_percent=>100,
        cascade=>TRUE,
        degree=>1);

榛戠伒 2009-11-25 17:33 鍙戣〃璇勮
]]>
Visual Studio寮鍙慟T紼嬪簭--鐜閰嶇疆http://www.tkk7.com/mstar/archive/2009/11/12/302152.html榛戠伒榛戠伒Thu, 12 Nov 2009 14:53:00 GMThttp://www.tkk7.com/mstar/archive/2009/11/12/302152.htmlhttp://www.tkk7.com/mstar/comments/302152.htmlhttp://www.tkk7.com/mstar/archive/2009/11/12/302152.html#Feedback0http://www.tkk7.com/mstar/comments/commentRss/302152.htmlhttp://www.tkk7.com/mstar/services/trackbacks/302152.html
浜? 瀹夎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鐩綍涓?



榛戠伒 2009-11-12 22:53 鍙戣〃璇勮
]]>
Tomcat閲岀殑cpappend.bat http://www.tkk7.com/mstar/archive/2009/11/05/301210.html榛戠伒榛戠伒Thu, 05 Nov 2009 01:43:00 GMThttp://www.tkk7.com/mstar/archive/2009/11/05/301210.htmlhttp://www.tkk7.com/mstar/comments/301210.htmlhttp://www.tkk7.com/mstar/archive/2009/11/05/301210.html#Feedback1http://www.tkk7.com/mstar/comments/commentRss/301210.htmlhttp://www.tkk7.com/mstar/services/trackbacks/301210.html 鍙互鎶婃寚瀹氱殑鍙傛暟娣誨姞鍒癱lasspath閲岄潰.
鍜宐at鑴氭湰for涓璧烽厤鍚?鍙互瀹炵幇鑷姩鐨勬妸鏌愪釜鐩綍涓嬬殑jar鍖呴兘鏀懼埌classpath閲?

rem ---------------------------------------------------------------------------
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 CURRENT_DIR=%cd%
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



榛戠伒 2009-11-05 09:43 鍙戣〃璇勮
]]>
鍒ゆ柇涓涓被鏄彟涓涓被鐨勫瓙綾?/title><link>http://www.tkk7.com/mstar/archive/2008/12/24/248076.html</link><dc:creator>榛戠伒</dc:creator><author>榛戠伒</author><pubDate>Wed, 24 Dec 2008 07:02:00 GMT</pubDate><guid>http://www.tkk7.com/mstar/archive/2008/12/24/248076.html</guid><wfw:comment>http://www.tkk7.com/mstar/comments/248076.html</wfw:comment><comments>http://www.tkk7.com/mstar/archive/2008/12/24/248076.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/mstar/comments/commentRss/248076.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mstar/services/trackbacks/248076.html</trackback:ping><description><![CDATA[浣跨敤Class鐨刬sAssignableFrom鏂規硶鍙槸瀹炵幇銆備絾鏄敞鎰忎笉瑕佸紕鍙嶄簡錛?br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">聽AssignableFromTest聽</span><span style="color: rgb(0, 0, 255);">extends</span><span style="color: rgb(0, 0, 0);">聽TestCase聽{<br /><br />聽聽聽聽</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">聽A聽{}<br />聽聽聽聽</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">聽B聽</span><span style="color: rgb(0, 0, 255);">extends</span><span style="color: rgb(0, 0, 0);">聽A{}<br />聽聽聽聽<br />聽聽聽聽</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">聽testIt(){<br />聽聽聽聽聽聽聽聽A聽a聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">聽A();<br />聽聽聽聽聽聽聽聽B聽b聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">聽B();<br />聽聽聽聽聽聽聽聽assertTrue(a.getClass().isAssignableFrom(b.getClass()));<br />聽聽聽聽}<br />}</span></div><br /><img src ="http://www.tkk7.com/mstar/aggbug/248076.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mstar/" target="_blank">榛戠伒</a> 2008-12-24 15:02 <a href="http://www.tkk7.com/mstar/archive/2008/12/24/248076.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[寰呯炕璇慮Categories of Java HotSpot VM Optionshttp://www.tkk7.com/mstar/archive/2007/12/26/Java_HotSpot_VM_Options.html榛戠伒榛戠伒Wed, 26 Dec 2007 06:23:00 GMThttp://www.tkk7.com/mstar/archive/2007/12/26/Java_HotSpot_VM_Options.htmlhttp://www.tkk7.com/mstar/comments/170579.htmlhttp://www.tkk7.com/mstar/archive/2007/12/26/Java_HotSpot_VM_Options.html#Feedback0http://www.tkk7.com/mstar/comments/commentRss/170579.htmlhttp://www.tkk7.com/mstar/services/trackbacks/170579.htmlThis document provides information on typical command-line options and environment variables that can affect the performance characteristics of the Java HotSpot Virtual Machine. Unless otherwise noted, all information in this document pertains to both the Java HotSpot Client VM and the Java HotSpot Server VM.

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.


Categories of Java HotSpot VM Options


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:

  • Options that begin with -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.
  • Options that are specified with -XX are not stable and are not recommended for casual use. These options are subject to change without notice.

Some Useful -XX Options


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.

  • Boolean options are turned on with -XX:+<option> and turned off with -XX:-<option>.
  • Numeric options are set with -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).
  • String options are set with -XX:<option>=<string>, are usually used to specify a file, a path, or a list of commands

Flags 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.



Behavioral Options


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.)


Back to Options


Performance Options


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]


Back to Options


Debugging Options


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.)


榛戠伒 2007-12-26 14:23 鍙戣〃璇勮
]]>
鐢↗akartaCommon鐨刵et緇勪歡鏉ュ仛ftp涓嬭澆http://www.tkk7.com/mstar/archive/2007/11/08/use_jakarka_common_net.html榛戠伒榛戠伒Thu, 08 Nov 2007 11:21:00 GMThttp://www.tkk7.com/mstar/archive/2007/11/08/use_jakarka_common_net.htmlhttp://www.tkk7.com/mstar/comments/159147.htmlhttp://www.tkk7.com/mstar/archive/2007/11/08/use_jakarka_common_net.html#Feedback5http://www.tkk7.com/mstar/comments/commentRss/159147.htmlhttp://www.tkk7.com/mstar/services/trackbacks/159147.html
棣栧厛鎶婁唬鐮佽創鍑烘潵:
聽1publicclass聽ClientTest聽{
聽2聽聽聽聽publicstaticvoid聽main(String[]聽args)聽{
聽3聽聽聽聽聽聽聽聽String聽url聽="172.17.1.38";
聽4聽聽聽聽聽聽聽聽String聽user聽="test";
聽5聽聽聽聽聽聽聽聽String聽pwd聽="test";
聽6
聽7聽聽聽聽聽聽聽聽FTPClient聽ftp聽=new聽FTPClient();
聽8聽聽聽聽聽聽聽聽ftp.setControlEncoding("GBK");
聽9聽聽聽聽聽聽聽聽FTPClientConfig聽conf聽=new聽FTPClientConfig(FTPClientConfig.SYST_NT);
10聽聽聽聽聽聽聽聽conf.setServerLanguageCode("zh");
11聽聽聽聽聽聽聽聽ftp.configure(conf);
12
13聽聽聽聽聽聽聽聽try聽{
14聽聽聽聽聽聽聽聽聽聽聽聽ftp.connect(url);
15聽聽聽聽聽聽聽聽聽聽聽聽if聽(ftp.login(user,聽pwd))聽{
16聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽int聽reply聽=聽ftp.getReplyCode();
17聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(!FTPReply.isPositiveCompletion(reply))聽{
18聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽ftp.disconnect();
19聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽System.out.println("disconnect");
20聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽{
21聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽ftp.enterLocalPassiveMode();
22聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽ftp.setFileType(FTP.BINARY_FILE_TYPE);
23
24聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽File聽dir聽=new聽File("down");
25聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(!dir.exists())聽{
26聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽dir.mkdirs();
27聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
28
29聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽String[]聽names聽=聽ftp.listNames();
30聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽for聽(String聽name聽:聽names)聽{
31聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽File聽file聽=new聽File(dir.getPath()聽+聽File.separator聽+聽name);
32聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(!file.exists())聽{
33聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽file.createNewFile();
34聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
35聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽long聽pos聽=聽file.length();
36聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽RandomAccessFile聽raf聽=new聽RandomAccessFile(file,聽"rw");
37聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽raf.seek(pos);
38聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽ftp.setRestartOffset(pos);
39
40聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽InputStream聽is聽=聽ftp.retrieveFileStream(name);
41聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(is聽==null)聽{
42聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽System.out.println("no聽such聽file:"+聽name);
43聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}聽else聽{
44聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽System.out.println("start聽getting聽file:"+聽name);
45
46聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽int聽b;
47聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽while聽((b聽=聽is.read())聽!=-1)聽{
48聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽raf.write(b);
49聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
50聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if聽(ftp.getReply()聽==聽FTPReply.CODE_226)聽{
51聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽System.out.println("done!");
52聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
53聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽is.close();
54聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
55聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽raf.close();
56聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
57聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}
58聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽ftp.logout();
59聽聽聽聽聽聽聽聽聽聽聽聽}
60聽聽聽聽聽聽聽聽}聽catch聽(IOException聽e)聽{
61聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();
62聽聽聽聽聽聽聽聽}
63聽聽聽聽}
64}


涓, 鏂囦歡鍚嶄腑鏂囦貢鐮侀棶棰?
寮濮嬬煡閬撹兘鐢‵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喅闂. 緇撴灉鍙戠幇鑷繁涔熸兂涓嶅嚭濂藉姙娉? 鏈鍚庤繕鏄斁寮冧簡.

浠婂ぉ鎵嶅彂鐜?鍘熸潵FTPClient鏈変釜completePendingCommand()鏂規硶灝辨槸鐢ㄦ潵騫茶繖浠朵簨鎯呯殑!

瀹屾垚鐨勭▼搴?涓婁紶,涓嬭澆,鍒犻櫎
http://www.tkk7.com/Files/mstar/ClientTest.zip


榛戠伒 2007-11-08 19:21 鍙戣〃璇勮
]]>
鐪熸鐤戣嚜宸辮繕鏄笉鏄▼搴忓憳http://www.tkk7.com/mstar/archive/2006/11/28/84111.html榛戠伒榛戠伒Tue, 28 Nov 2006 10:21:00 GMThttp://www.tkk7.com/mstar/archive/2006/11/28/84111.htmlhttp://www.tkk7.com/mstar/comments/84111.htmlhttp://www.tkk7.com/mstar/archive/2006/11/28/84111.html#Feedback1http://www.tkk7.com/mstar/comments/commentRss/84111.htmlhttp://www.tkk7.com/mstar/services/trackbacks/84111.html
紼嬪簭鍦ㄨ繖閲岋細
http://www.tkk7.com/Files/mstar/fuck_sort.zip

榛戠伒 2006-11-28 18:21 鍙戣〃璇勮
]]>
浠婂ぉ閬囧埌浜嗕竴涓狢alendar鐨勯棶棰橈紝澶у鐪嬬湅錛?/title><link>http://www.tkk7.com/mstar/archive/2006/08/31/66825.html</link><dc:creator>榛戠伒</dc:creator><author>榛戠伒</author><pubDate>Thu, 31 Aug 2006 03:59:00 GMT</pubDate><guid>http://www.tkk7.com/mstar/archive/2006/08/31/66825.html</guid><wfw:comment>http://www.tkk7.com/mstar/comments/66825.html</wfw:comment><comments>http://www.tkk7.com/mstar/archive/2006/08/31/66825.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.tkk7.com/mstar/comments/commentRss/66825.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mstar/services/trackbacks/66825.html</trackback:ping><description><![CDATA[浠婂ぉ鍙戠幇浜嗗墠涓孌墊椂闂村仛鐨勭郴緇熺殑涓涓叧浜庢棩鏈熺殑Bug銆傚紑濮嬭繕浠ヤ負鏄疌alendar鐨凚ug錛屾兂浜嗕竴浼氱獊鐒跺彂鐜版槸鑷繁鐨勯棶棰樸?br /><br />鍋囪浠婂ぉ緋葷粺鏃墮棿鏄?006騫?鏈?1鍙楓?br /><br />涓嬮潰鏄竴孌典唬鐮?br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #000000">{<br />聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">聽year聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">2006</span><span style="COLOR: #000000">;<br />聽聽聽聽聽聽聽聽</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">聽month聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">;<br />聽聽聽聽聽聽聽聽Calendar聽cal聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽Calendar.getInstance();<br />聽聽聽聽聽聽聽聽cal.set(Calendar.YEAR, year);<br />聽聽聽聽聽聽聽聽cal.set(Calendar.MONTH, month </span><span style="COLOR: #000000">- </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br />聽聽聽聽聽聽聽聽System.out.println(cal.get(Calendar.MONTH));聽</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">榪欓噷搴旇鏄灝戯紵</span><span style="COLOR: #008000"><br /></span><span style="COLOR: #000000">聽聽聽聽聽聽聽聽SimpleDateFormat聽df聽</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">聽</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">聽SimpleDateFormat(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">yyyyMM</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br />聽聽聽聽聽聽聽聽System.out.println(df.format(cal.getTime()));<br />}</span></div><br />鍘熸潵棰勬兂鐨勭粨鏋滄槸錛?8 鍜?00609<br />緇撴灉鏄?9 鍜?200610<br /><br />鎵浠ュ湪榪欎釜緋葷粺閲岋紝濡傛灉8鏈?1鍙鋒煡璇?鏈堢殑鍐呭錛屼細鎶?0鏈堢殑鏌ュ嚭鏉ャ?br /><br />鍏跺疄鏄疌alendar.getIntance()鏂規硶榪斿洖鐨凜alendar閲岄潰鐨勯粯璁ゆ椂闂存槸褰撳墠緋葷粺鏃墮棿銆?br />鎵浠ヨ繖鏃剁殑Calendar閲孌ay鏄?1.濡傛灉鎶奙onth璁劇疆鎴?錛堜節鏈堬級銆侰alendar涓殑鏃墮棿灝辨槸9鏈?1鍙鳳紝鑰?鏈堟病鏈?1鍙鳳紝鎵浠ュ氨鍙樻垚浜?0鏈?鍙楓傝繖鏃朵綘鍦ㄥ彇month鐨勫煎氨鍙樻垚浜?錛堝崄鏈堬級銆?br /><br />鎯蟲槑鐧戒互鍚庯紝鎴戞嵍鑳擱】瓚沖晩錛?浠ュ悗鐢–alendar鐨勬椂鍊欒灝忓績浜嗐?img src ="http://www.tkk7.com/mstar/aggbug/66825.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mstar/" target="_blank">榛戠伒</a> 2006-08-31 11:59 <a href="http://www.tkk7.com/mstar/archive/2006/08/31/66825.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[緲昏瘧]Tomcat5.5 Class Loader HOW-TOhttp://www.tkk7.com/mstar/archive/2006/08/24/65511.html榛戠伒榛戠伒Thu, 24 Aug 2006 06:39:00 GMThttp://www.tkk7.com/mstar/archive/2006/08/24/65511.htmlhttp://www.tkk7.com/mstar/comments/65511.htmlhttp://www.tkk7.com/mstar/archive/2006/08/24/65511.html#Feedback0http://www.tkk7.com/mstar/comments/commentRss/65511.htmlhttp://www.tkk7.com/mstar/services/trackbacks/65511.html http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html

Tomcat Class Loader HOW-TO

褰揟omcat5鍚姩浠ュ悗錛屽畠鍒涘緩涓緋誨垪綾誨姞杞藉櫒銆傝繖浜涚被鍔犺澆鍣ㄤ互鐖跺瓙鍏崇郴緇勭粐鍦ㄤ竴璧鳳紝鐖剁被鍔犺澆鍣ㄥ湪瀛愮被鍔犺澆鍣ㄧ殑涓婇潰錛?/p>

聽聽聽聽聽 Bootstrap
聽聽聽聽聽聽聽聽聽 |
聽聽聽聽聽聽 System
聽聽聽聽聽聽聽聽聽 |
聽聽聽聽聽聽 Common
聽聽聽聽聽 /聽聽聽聽聽 \
Catalina聽聽 Shared
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 聽 /聽聽 \
聽聽聽聽聽聽聽 Webapp1聽 Webapp2 ...

榪欎簺綾誨姞杞藉櫒鎵鎵紨鐨勮鑹詫紝浠ュ強瀹冧滑鍙互瑙佸埌鐨勭被鍜岃祫婧愮殑瑙勫垯濡備笅錛?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>

  • $CATALINA_HOME/bin/bootstrap.jar - 鍖呭惈Tomcat5 鏈嶅姟鍣ㄥ垵濮嬪寲鐨刴ain()鏂規硶錛屼互鍙婃墍闇鐨勭被鍔犺澆鍣ㄧ殑瀹炵幇綾匯?
  • $JAVA_HOME/lib/tools.jar - 鍖呮嫭鎶奐SP欏甸潰緙栬瘧鎴怱erlet綾繪墍闇鐨?javac"緙栬瘧鍣?
  • $CATALINA_HOME/bin/commons-logging-api.jar - Jakarta commons logging API.
  • $CATALINA_HOME/bin/commons-daemon.jar - Jakarta commons daemon API.
  • jmx.jar - The JMX 1.2 瀹炵幇.

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>聽聽聽聽聽聽聽聽聽

  • commons-el.jar - Jakarta commons el, Jasper鐢ㄧ殑EL琛ㄨ揪寮忓疄鐜?
  • jasper-compiler.jar - The JSP 2.0 緙栬瘧鍣?
  • jasper-compiler-jdt.jar - The Eclipse JDT Java 緙栬瘧鍣?
  • jasper-runtime.jar - The JSP 2.0 榪愯搴?
  • jsp-api.jar - The JSP 2.0 API.
  • naming-common.jar - Tomcat5鐨凧NDI 瀹炵幇錛岀敤浜庡唴瀛樺懡鍚嶇幆澧?
  • naming-factory.jar - Tomcat5鐨凧NDI 瀹炵幇錛岀敤浜庝紒涓氱駭璧勬簮寮曠敤(EJB, connection pools).
  • naming-factory-dbcp.jar - Jakarta commons DBCP, 涓篧eb搴旂敤紼嬪簭鎻愪緵JDBC榪炴帴姹犮傝繖涓被宸茬粡浠庨粯璁ょ殑org.apache.commons鍖呬腑縐誨嚭銆?
  • naming-java.jar -聽 java鍛藉悕絀洪棿澶勭悊鍣?
  • naming-resources.jar - The specialized JNDI naming context implementation used to represent the static resources of a web application. This is not related to the support of the J2EE ENC, and cannot be removed.
  • servlet-api.jar - The Servlet 2.4 API.
  • tomcat-i18n-**.jar - Optional JARs containing resource bundles for other languages. As default bundles are also included in each individual JAR, they can be safely removed if no internationalization of messages is needed.

Catalina - 榪欎釜綾誨姞杞藉櫒涓昏鍔犺澆Tomcat5鑷繁鎵闇瑕佺殑綾誨拰璧勬簮銆傝繖浜涚被鍜岃祫婧愬浜嶹eb搴旂敤紼嬪簭鏄畬鍏ㄤ笉鍙鐨勩傚湪$CATALINA_HOME/server/classes鐩綍涓嬬殑鎵鏈夌被鍜岃祫婧愶紝$CATALINA_HOME/server/lib涓嬬殑鎵鏈塉ar鍖呬腑綾誨拰璧勬簮鏄繖涓被鍔犺澆鍣ㄧ殑鍔犺澆瀵硅薄銆傞粯璁ゆ儏鍐碉紝鍖呮嫭涓涓嬪唴瀹癸細

  • catalina.jar - Tomcat5涓瑿atalina Servlet瀹瑰櫒鐨勫疄鐜伴儴鍒嗐?
  • catalina-ant.jar - 鍦ㄧ鐞唚eb搴旂敤紼嬪簭鏃惰鐢ㄥ掔殑涓浜汚nt浠誨姟銆?
  • catalina-optional.jar - 涓浜汣atalina鍙夌粍浠躲?
  • commons-modeler.jar - Tomcat閫氳繃JMX鏆撮湶鍏跺唴閮ㄥ璞℃槸鐢ㄧ殑涓浜汳Bean瀹炵幇銆?
  • servlets-xxxxx.jar - 榪欎簺綾誨悓鍐呴儴鐨凷ervlet涓璧鋒彁渚汿omcat鐨勯儴鍒嗗姛鑳斤紝瀹冧滑閮芥槸鐙珛鐨勶紝鎵浠ュ鏋滀笉闇瑕佺浉搴旂殑鏈嶅姟鍙互灝嗗叾鍒犻櫎銆傛垨鑰呭畠浠彲浠ヤ粠灞炰簬鐗瑰畾鐨勫畨鍏ㄧ鐞嗗櫒銆?
  • tomcat-coyote.jar - Coyote API.銆?
  • tomcat-http.jar - 鏍囧噯鐨凧ava HTTP/1.1 榪炴帴鍣?銆?
  • tomcat-ajp.jar -聽AJP web聽鏈嶅姟鍣ㄧ殑榪炴帴鍣紝涓鑸敤浜嶢pache錛宨Planet iAS鍜?iWS.銆?
  • tomcat-util.jar - Tomcat榪炴帴鍣ㄩ渶瑕佺殑宸ュ叿綾匯?

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>
/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>

榪欐牱鍦ㄤ竴涓獁eb搴旂敤紼嬪簭涓紝綾誨拰璧勬簮鐨勫姞杞介『搴忔槸榪欐牱錛?/p>

  • Bootstrap classes of your JVM
  • System class loader classses (described above)
  • /WEB-INF/classes of your web application
  • /WEB-INF/lib/*.jar of your web application
  • $CATALINA_HOME/common/classes
  • $CATALINA_HOME/common/endorsed/*.jar
  • $CATALINA_HOME/common/i18n/*.jar
  • $CATALINA_HOME/common/lib/*.jar
  • $CATALINA_BASE/shared/classes
  • $CATALINA_BASE/shared/lib/*.jar


榛戠伒 2006-08-24 14:39 鍙戣〃璇勮
]]>
ClassLoader涓殑鏂規硶http://www.tkk7.com/mstar/archive/2006/08/24/65508.html榛戠伒榛戠伒Thu, 24 Aug 2006 06:16:00 GMThttp://www.tkk7.com/mstar/archive/2006/08/24/65508.htmlhttp://www.tkk7.com/mstar/comments/65508.htmlhttp://www.tkk7.com/mstar/archive/2006/08/24/65508.html#Feedback2http://www.tkk7.com/mstar/comments/commentRss/65508.htmlhttp://www.tkk7.com/mstar/services/trackbacks/65508.htmlhttp://www.xici.net/b228402/d11821837.htm

鏂規硶 loadClass

ClassLoader.loadClass() 鏄?ClassLoader 鐨勫叆鍙g偣銆傚叾鐗瑰緛濡備笅錛?br />Class loadClass( String name, boolean resolve );
name 鍙傛暟鎸囧畾浜?JVM 闇瑕佺殑綾葷殑鍚嶇О錛岃鍚嶇О浠ュ寘琛ㄧず娉曡〃紺猴紝濡?Foo 鎴?java.lang.Object銆?resolve 鍙傛暟鍛婅瘔鏂規硶鏄惁闇瑕佽В鏋愮被銆傚湪鍑嗗鎵ц綾諱箣鍓嶏紝搴旇冭檻綾昏В鏋愩傚茍涓嶆繪槸闇瑕佽В鏋愩傚鏋?JVM 鍙渶瑕佺煡閬撹綾繪槸鍚﹀瓨鍦ㄦ垨鎵懼嚭璇ョ被鐨勮秴綾伙紝閭d箞灝變笉闇瑕佽В鏋愩?br />鍦?Java 鐗堟湰 1.1 鍜屼互鍓嶇殑鐗堟湰涓紝loadClass 鏂規硶鏄垱寤哄畾鍒剁殑 ClassLoader 鏃跺敮涓闇瑕佽鐩栫殑鏂規硶銆傦紙Java 2 涓?ClassLoader 鐨勫彉鍔ㄦ彁渚涗簡鍏充簬 Java 1.2 涓?findClass() 鏂規硶鐨勪俊鎭傦級


鏂規硶 defineClass


defineClass 鏂規硶鏄?ClassLoader 鐨勪富瑕佽瘈紿嶃傝鏂規硶鎺ュ彈鐢卞師濮嬪瓧鑺傜粍鎴愮殑鏁扮粍騫舵妸瀹冭漿鎹㈡垚 Class 瀵硅薄銆傚師濮嬫暟緇勫寘鍚浠庢枃浠剁郴緇熸垨緗戠粶瑁呭叆鐨勬暟鎹?br />
defineClass 綆$悊 JVM 鐨勮澶氬鏉傘佺縐樺拰鍊氳禆浜庡疄鐜扮殑鏂歸潰 -- 瀹冩妸瀛楄妭鐮佸垎鏋愭垚榪愯鏃舵暟鎹粨鏋勩佹牎楠屾湁鏁堟х瓑絳夈備笉蹇呮媴蹇冿紝鎮ㄦ棤闇浜茶嚜緙栧啓瀹冦備簨瀹炰笂錛屽嵆浣挎偍鎯寵榪欎箞鍋氫篃涓嶈兘瑕嗙洊瀹冿紝鍥犱負瀹冨凡琚爣璁版垚鏈緇堢殑銆?br />

鏂規硶 findSystemClass


findSystemClass 鏂規硶浠庢湰鍦版枃浠剁郴緇熻鍏ユ枃浠躲傚畠鍦ㄦ湰鍦版枃浠剁郴緇熶腑瀵繪壘綾繪枃浠訛紝濡傛灉瀛樺湪錛屽氨浣跨敤 defineClass 灝嗗師濮嬪瓧鑺傝漿鎹㈡垚 Class 瀵硅薄錛屼互灝嗚鏂囦歡杞崲鎴愮被銆傚綋榪愯 Java 搴旂敤紼嬪簭鏃訛紝榪欐槸 JVM 姝e父瑁呭叆綾葷殑緙虹渷鏈哄埗銆傦紙Java 2 涓?ClassLoader 鐨勫彉鍔ㄦ彁渚涗簡鍏充簬 Java 鐗堟湰 1.2 榪欎釜榪囩▼鍙樺姩鐨勮緇嗕俊鎭傦級

瀵逛簬瀹氬埗鐨?ClassLoader錛屽彧鏈夊湪灝濊瘯鍏跺畠鏂規硶瑁呭叆綾諱箣鍚庯紝鍐嶄嬌鐢?findSystemClass銆傚師鍥犲緢綆鍗曪細ClassLoader 鏄礋璐f墽琛岃鍏ョ被鐨勭壒孌婃楠わ紝涓嶆槸璐熻矗鎵鏈夌被銆備緥濡傦紝鍗充嬌 ClassLoader 浠庤繙紼嬬殑 Web 绔欑偣瑁呭叆浜嗘煇浜涚被錛屼粛鐒墮渶瑕佸湪鏈湴鏈哄櫒涓婅鍏ュぇ閲忕殑鍩烘湰 Java 搴撱傝岃繖浜涚被涓嶆槸鎴戜滑鎵鍏沖績鐨勶紝鎵浠ヨ JVM 浠ョ己鐪佹柟寮忚鍏ュ畠浠細浠庢湰鍦版枃浠剁郴緇熴傝繖灝辨槸 findSystemClass 鐨勭敤閫斻?br />
鍏跺伐浣滄祦紼嬪涓嬶細
璇鋒眰瀹氬埗鐨?ClassLoader 瑁呭叆綾匯?br />媯鏌ヨ繙紼?Web 绔欑偣錛屾煡鐪嬫槸鍚︽湁鎵闇瑕佺殑綾匯?br />濡傛灉鏈夛紝閭d箞濂斤紱鎶撳彇榪欎釜綾伙紝瀹屾垚浠誨姟銆?br />濡傛灉娌℃湁錛屽亣瀹氳繖涓被鏄湪鍩烘湰 Java 搴撲腑錛岄偅涔堣皟鐢?findSystemClass錛屼嬌瀹冧粠鏂囦歡緋葷粺瑁呭叆璇ョ被銆?br />

鍦ㄥぇ澶氭暟瀹氬埗 ClassLoaders 涓紝棣栧厛璋冪敤 findSystemClass 浠ヨ妭鐪佸湪鏈湴灝卞彲浠ヨ鍏ョ殑璁稿 Java 搴撶被鑰岃鍦ㄨ繙紼?Web 绔欑偣涓婃煡鎵炬墍鑺辯殑鏃墮棿銆傜劧鑰岋紝姝e錛屽湪涓嬩竴绔犺妭鎵鐪嬪埌鐨勶紝鐩村埌紜俊鑳借嚜鍔ㄧ紪璇戞垜浠殑搴旂敤紼嬪簭浠g爜鏃訛紝鎵嶈 JVM 浠庢湰鍦版枃浠剁郴緇熻鍏ョ被銆?br />

鏂規硶 resolveClass
姝e鍓嶉潰鎵鎻愬埌鐨勶紝鍙互涓嶅畬鍏ㄥ湴錛堜笉甯﹁В鏋愶級瑁呭叆綾伙紝涔熷彲浠ュ畬鍏ㄥ湴錛堝甫瑙f瀽錛夎鍏ョ被銆傚綋緙栧啓鎴戜滑鑷繁鐨?loadClass 鏃訛紝鍙互璋冪敤 resolveClass錛岃繖鍙栧喅浜?loadClass 鐨?resolve 鍙傛暟鐨勫箋?br />

鏂規硶 findLoadedClass
findLoadedClass 鍏呭綋涓涓紦瀛橈細褰撹姹?loadClass 瑁呭叆綾繪椂錛屽畠璋冪敤璇ユ柟娉曟潵鏌ョ湅 ClassLoader 鏄惁宸茶鍏ヨ繖涓被錛岃繖鏍峰彲浠ラ伩鍏嶉噸鏂拌鍏ュ凡瀛樺湪綾繪墍閫犳垚鐨勯夯鐑︺傚簲棣栧厛璋冪敤璇ユ柟娉曘?br />

榛戠伒 2006-08-24 14:16 鍙戣〃璇勮
]]>
ClassLoader鍘熺悊http://www.tkk7.com/mstar/archive/2006/08/24/65505.html榛戠伒榛戠伒Thu, 24 Aug 2006 06:01:00 GMThttp://www.tkk7.com/mstar/archive/2006/08/24/65505.htmlhttp://www.tkk7.com/mstar/comments/65505.htmlhttp://www.tkk7.com/mstar/archive/2006/08/24/65505.html#Feedback6http://www.tkk7.com/mstar/comments/commentRss/65505.htmlhttp://www.tkk7.com/mstar/services/trackbacks/65505.htmlClassLoader鍘熺悊

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*/

public class 聽LoaderSample1聽{
聽聽聽聽
public static void 聽main(String[]聽args)聽{
聽聽聽聽聽聽聽聽Class聽c;
聽聽聽聽聽聽聽聽ClassLoader聽cl;
聽聽聽聽聽聽聽聽cl聽
= 聽ClassLoader.getSystemClassLoader();
聽聽聽聽聽聽聽聽System.out.println(cl);
聽聽聽聽聽聽聽聽
while 聽(cl聽 != null )聽{
聽聽聽聽聽聽聽聽聽聽聽聽cl聽
= 聽cl.getParent();
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(cl);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽
try 聽{
聽聽聽聽聽聽聽聽聽聽聽聽c聽
= 聽Class.forName( " java.lang.Object " );
聽聽聽聽聽聽聽聽聽聽聽聽cl聽
= 聽c.getClassLoader();
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(
" java.lang.Object's聽loader聽is聽 " + 聽cl);
聽聽聽聽聽聽聽聽聽聽聽聽c聽
= 聽Class.forName( " LoaderSample1 " );
聽聽聽聽聽聽聽聽聽聽聽聽cl聽
= 聽c.getClassLoader();
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(
" LoaderSample1's聽loader聽is聽 " + 聽cl);
聽聽聽聽聽聽聽聽}聽
catch 聽(Exception聽e)聽{
聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();
聽聽聽聽聽聽聽聽}
聽聽聽聽}
}


鍦ㄦ垜鐨勬満鍣ㄤ笂(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*/

import 聽java.net. * ;
import 聽java.lang.reflect. * ;
public class 聽LoaderSample2聽{
聽聽聽聽
public static void 聽main(String[]聽args)聽{
聽聽聽聽聽聽聽聽
try 聽{
聽聽聽聽聽聽聽聽聽聽聽聽String聽path聽
= 聽System.getProperty( " user.dir " );
聽聽聽聽聽聽聽聽聽聽聽聽URL[]聽us聽
= 聽{ new 聽URL( " file:// " + 聽path聽 + " /sub/ " )};
聽聽聽聽聽聽聽聽聽聽聽聽ClassLoader聽loader聽
= new 聽URLClassLoader(us);
聽聽聽聽聽聽聽聽聽聽聽聽Class聽c聽
= 聽loader.loadClass( " LoaderSample3 " );
聽聽聽聽聽聽聽聽聽聽聽聽Object聽o聽
= 聽c.newInstance();
聽聽聽聽聽聽聽聽聽聽聽聽Field聽f聽
= 聽c.getField( " age " );
聽聽聽聽聽聽聽聽聽聽聽聽
int 聽age聽 = 聽f.getInt(o);
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(
" age聽is聽 " + 聽age);
聽聽聽聽聽聽聽聽}聽
catch 聽(Exception聽e)聽{
聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();
聽聽聽聽聽聽聽聽}
聽聽聽聽}
}


/*sub/Loadersample3.java*/

public class 聽LoaderSample3聽{
聽聽聽聽
static 聽{
聽聽聽聽聽聽聽聽System.out.println(
" LoaderSample3聽loaded " );
聽聽聽聽}
聽聽聽聽
public int 聽age聽 = 30 ;
}

緙栬瘧錛歫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>

聽聽聽聽 public 聽Class聽findClass(String聽name)
聽聽聽聽{
聽聽聽聽聽聽聽聽
byte []聽data聽 = 聽loadClassData(name);
聽聽聽聽聽聽聽聽
return 聽defineClass(name,聽data,聽 0 ,聽data.length);
聽聽聽聽}


聽聽聽鎴戜滑榪樺簲璇ユ彁渚涗竴涓柟娉昹oadClassData(String name)錛岄氳繃綾葷殑鍚嶇О榪斿洖class鏂囦歡鐨勫瓧
鑺傛暟緇勩傜劧鍚庝嬌鐢–lassLoader鎻愪緵鐨刣efineClass()鏂規硶鎴戜滑灝卞彲浠ヨ繑鍥濩lass瀵硅薄浜嗐?/strong>

聽聽聽聽 public byte []聽loadClassData(String聽name)
聽聽聽聽{
聽聽聽聽聽聽聽聽FileInputStream聽fis聽
= null ;
聽聽聽聽聽聽聽聽
byte []聽data聽 = null ;
聽聽聽聽聽聽聽聽
try
聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽fis聽
= new 聽FileInputStream( new 聽File(drive聽 + 聽name聽 + 聽fileType));
聽聽聽聽聽聽聽聽聽聽聽聽ByteArrayOutputStream聽baos聽
= new 聽ByteArrayOutputStream();
聽聽聽聽聽聽聽聽聽聽聽聽
int 聽ch聽 = 0 ;
聽聽聽聽聽聽聽聽聽聽聽聽
while 聽((ch聽 = 聽fis.read())聽 != - 1 )
聽聽聽聽聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽baos.write(ch);
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽聽聽聽聽data聽
= 聽baos.toByteArray();
聽聽聽聽聽聽聽聽}聽
catch 聽(IOException聽e)
聽聽聽聽聽聽聽聽{
聽聽聽聽聽聽聽聽聽聽聽聽e.printStackTrace();
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽
return 聽data;
聽聽聽聽}


榛戠伒 2006-08-24 14:01 鍙戣〃璇勮
]]>
utf-8 緙栫爜闂http://www.tkk7.com/mstar/archive/2006/08/23/65265.html榛戠伒榛戠伒Wed, 23 Aug 2006 06:09:00 GMThttp://www.tkk7.com/mstar/archive/2006/08/23/65265.htmlhttp://www.tkk7.com/mstar/comments/65265.htmlhttp://www.tkk7.com/mstar/archive/2006/08/23/65265.html#Feedback0http://www.tkk7.com/mstar/comments/commentRss/65265.htmlhttp://www.tkk7.com/mstar/services/trackbacks/65265.html http://blog.csdn.net/zhangxiaoxiang/archive/2006/08/22/1106714.aspx

闂錛?br />
public class TestUTF8
{
聽聽 public static void main(String [] args) throws Exception
聽聽 {
聽聽聽聽聽 聽byte[] bytes = {(byte)0xC0,(byte)0xB1};
聽聽聽聽聽聽 String str = new String(bytes,"UTF-8");
聽聽聽聽聽聽 System.out.println(str.getBytes("UTF-8").length);
聽聽 }
}

紼嬪簭榪愯鍚庢墦鍗扮殑緇撴灉濡備笅錛?br />1

榪欎釜紼嬪簭灝?涓や釜 瀛楄妭鐨刡ytes鏁扮粍鎸塙TF-8緙栫爜杞崲鎴愬瓧絎︿覆錛屽啀灝嗙粨鏋滃瓧絎︿覆杞崲鎴怳TF-8緙栫爜鐨勫瓧鑺傛暟緇勶紝鎵撳嵃鍑虹殑榪欎釜瀛楄妭鏁扮粍鐨勯暱搴︿負聽1 銆備負浠涔堜袱涓瓧鑺傜殑鏁扮粍杞崲鎴愮殑瀛楃涓插弽杞洖鍘葷殑瀛楄妭鏁扮粍鐨勯暱搴﹀嵈涓轟竴鍛紵聽

絳旀錛?/font>
榪欎釜闂搴旇鏄敱UTF-8緙栫爜鐨勭壒鐐歸犳垚鐨勩?
UTF-8鏄竴縐嶅彉闀垮瓧鑺傜紪鐮佹柟寮忋傚浜庢煇涓涓瓧絎︾殑UTF-8緙栫爜錛屽鏋滃彧鏈変竴涓瓧鑺傚垯鍏舵渶楂樹簩榪涘埗浣嶄負0錛涘鏋滄槸澶氬瓧鑺傦紝鍏剁涓涓瓧鑺備粠鏈楂樹綅寮濮嬶紝榪炵畫鐨勪簩榪涘埗浣嶅間負1鐨勪釜鏁板喅瀹氫簡鍏剁紪鐮佺殑浣嶆暟錛屽叾浣欏悇瀛楄妭鍧囦互10寮澶淬俇TF-8鏈澶氬彲鐢ㄥ埌6涓瓧鑺傘?
濡傝〃錛?
1瀛楄妭 0xxxxxxx
2瀛楄妭 110xxxxx 10xxxxxx
3瀛楄妭 1110xxxx 10xxxxxx 10xxxxxx
4瀛楄妭 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
5瀛楄妭 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
6瀛楄妭 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
鍥犳UTF-8涓彲浠ョ敤鏉ヨ〃紺哄瓧絎︾紪鐮佺殑瀹為檯浣嶆暟鏈澶氭湁31浣嶏紝鍗充笂琛ㄤ腑x鎵琛ㄧず鐨勪綅銆傞櫎鍘婚偅浜涙帶鍒朵綅錛堟瘡瀛楄妭寮澶寸殑10絳夛級錛岃繖浜泋琛ㄧず鐨勪綅涓嶶NICODE緙栫爜鏄竴涓瀵瑰簲鐨勶紝浣嶉珮浣庨『搴忎篃鐩稿悓銆?
瀹為檯灝哢NICODE杞崲涓篣TF-8緙栫爜鏃跺簲鍏堝幓闄ら珮浣?錛岀劧鍚庢牴鎹墍鍓╃紪鐮佺殑浣嶆暟鍐沖畾鎵闇鏈灝忕殑UTF-8緙栫爜浣嶆暟銆?
鍥犳閭d簺鍩烘湰ASCII瀛楃闆嗕腑鐨勫瓧絎︼紙UNICODE鍏煎ASCII錛夊彧闇瑕佷竴涓瓧鑺傜殑UTF-8緙栫爜錛?涓簩榪涘埗浣嶏級渚垮彲浠ヨ〃紺恒?

瀵逛簬涓婇潰鐨勯棶棰橈紝浠g爜涓粰鍑虹殑涓や釜瀛楄妭鏄?
鍗佸叚榪涘埗錛欳0 B1
浜岃繘鍒訛細11000000 10110001
瀵規瘮涓や釜瀛楄妭緙栫爜鐨勮〃紺烘柟寮忥細
110xxxxx 10xxxxxx
鎻愬彇鍑哄搴旂殑UNICODE緙栫爜錛?
00000 110001
鍙互鐪嬪嚭姝ょ紪鐮佸茍闈炩滄爣鍑嗏濈殑UTF-8緙栫爜錛屽洜涓哄叾絎竴涓瓧鑺傜殑鈥滄湁鏁堢紪鐮佲濆叏涓?錛屽幓闄ら珮浣?鍚庣殑緙栫爜浠呮湁6浣嶃傜敱鍓嶉潰鎵榪幫紝姝ゅ瓧絎︿粎鐢ㄤ竴涓瓧鑺傜殑UTF-8緙栫爜琛ㄧず灝卞浜嗐?
JAVA鍦ㄦ妸瀛楃榪樺師涓篣TF-8緙栫爜鏃訛紝鏄寜鐓р滄爣鍑嗏濈殑鏂瑰紡澶勭悊鐨勶紝鍥犳鎴戜滑寰楀埌鐨勬槸浠呮湁1涓瓧鑺傜殑緙栫爜銆?

澶у鍙互璇曡瘯榪愯榪欐浠g爜錛?
public class TestUTF8 {
public static void main(String[] args) throws Exception {
byte[][] bytes = {
// 00110001
{(byte)0x31},
// 11000000 10110001
{(byte)0xC0,(byte)0xB1},
// 11100000 10000000 10110001
{(byte)0xE0,(byte)0x80,(byte)0xB1},
// 11110000 10000000 10000000 10110001
{(byte)0xF0,(byte)0x80,(byte)0x80,(byte)0xB1},
// 11111000 10000000 10000000 10000000 10110001
{(byte)0xF8,(byte)0x80,(byte)0x80,(byte)0x80,(byte)0xB1},
// 11111100 10000000 10000000 10000000 10000000 10110001
{(byte)0xFC,(byte)0x80,(byte)0x80,(byte)0x80,(byte)0x80,(byte)0xB1},
};
for (int i = 0; i < 6; i++) {
String str = new String(bytes[i], "UTF-8");
System.out.println("鍘熸暟緇勯暱搴︼細" + bytes[i].length +
"\t杞崲涓哄瓧絎︿覆錛? + str +
"\t杞洖鍚庢暟緇勯暱搴︼細" + str.getBytes("UTF-8").length);
}
}
}
榪愯緇撴灉涓猴細
鍘熸暟緇勯暱搴︼細1 杞崲涓哄瓧絎︿覆錛? 杞洖鍚庢暟緇勯暱搴︼細1
鍘熸暟緇勯暱搴︼細2 杞崲涓哄瓧絎︿覆錛? 杞洖鍚庢暟緇勯暱搴︼細1
鍘熸暟緇勯暱搴︼細3 杞崲涓哄瓧絎︿覆錛? 杞洖鍚庢暟緇勯暱搴︼細1
鍘熸暟緇勯暱搴︼細4 杞崲涓哄瓧絎︿覆錛? 杞洖鍚庢暟緇勯暱搴︼細1
鍘熸暟緇勯暱搴︼細5 杞崲涓哄瓧絎︿覆錛? 杞洖鍚庢暟緇勯暱搴︼細1
鍘熸暟緇勯暱搴︼細6 杞崲涓哄瓧絎︿覆錛? 杞洖鍚庢暟緇勯暱搴︼細1


鍞墌~錛岀湅鏉ユ垜寰楀姞寮哄瓧絎︾紪鐮佹柟闈㈢殑鐭ヨ瘑浜嗭紒



榛戠伒 2006-08-23 14:09 鍙戣〃璇勮
]]>
[澶囦喚]璧峰姩SWT搴旂敤鐨勪竴孌電▼搴?/title><link>http://www.tkk7.com/mstar/archive/2006/06/03/50116.html</link><dc:creator>榛戠伒</dc:creator><author>榛戠伒</author><pubDate>Sat, 03 Jun 2006 04:54:00 GMT</pubDate><guid>http://www.tkk7.com/mstar/archive/2006/06/03/50116.html</guid><wfw:comment>http://www.tkk7.com/mstar/comments/50116.html</wfw:comment><comments>http://www.tkk7.com/mstar/archive/2006/06/03/50116.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/mstar/comments/commentRss/50116.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mstar/services/trackbacks/50116.html</trackback:ping><description><![CDATA[鍋氫竴涓兘鐭ラ亾浣犵殑SWT libraries鐨凜lassLoader<br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">聽SWTClassLoader聽</span><span style="color: rgb(0, 0, 255);">extends</span><span style="color: rgb(0, 0, 0);">聽URLClassLoader聽{<br />聽<br />聽聽聽聽</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">final</span><span style="color: rgb(0, 0, 0);">聽File聽workDir;<br />聽聽聽聽</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">final</span><span style="color: rgb(0, 0, 0);">聽Set聽loadedLibs聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">聽HashSet();<br />聽<br />聽聽聽聽</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">聽SWTClassLoader(URL[]聽urls,聽File聽workDir)聽{<br />聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);">super</span><span style="color: rgb(0, 0, 0);">(urls);<br />聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);">this</span><span style="color: rgb(0, 0, 0);">.workDir聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽workDir;<br />聽聽聽聽}<br />聽<br />聽聽聽聽</span><span style="color: rgb(0, 0, 255);">protected</span><span style="color: rgb(0, 0, 0);">聽String聽findLibrary(String聽libname)聽{<br />聽聽聽聽聽聽聽聽String聽filename聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽System.mapLibraryName(libname);<br />聽聽聽聽聽聽聽聽URL聽url聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽getResource(filename);<br />聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">聽(url聽</span><span style="color: rgb(0, 0, 0);">==</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">)<br />聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />聽<br />聽聽聽聽聽聽聽聽File聽file聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">聽File(workDir,聽filename);<br />聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);">if</span><span style="color: rgb(0, 0, 0);">聽(</span><span style="color: rgb(0, 0, 0);">!</span><span style="color: rgb(0, 0, 0);">loadedLibs.contains(file))<br />聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);">try</span><span style="color: rgb(0, 0, 0);">聽{<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽InputStream聽in聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽url.openStream();<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽FileOutputStream聽out聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">聽FileOutputStream(file);<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);">byte</span><span style="color: rgb(0, 0, 0);">[]聽buf聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">byte</span><span style="color: rgb(0, 0, 0);">[</span><span style="color: rgb(0, 0, 0);">4096</span><span style="color: rgb(0, 0, 0);">];<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);">int</span><span style="color: rgb(0, 0, 0);">聽c;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);">while</span><span style="color: rgb(0, 0, 0);">聽((c聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽in.read(buf))聽</span><span style="color: rgb(0, 0, 0);">!=</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">1</span><span style="color: rgb(0, 0, 0);">)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽out.write(buf,聽</span><span style="color: rgb(0, 0, 0);">0</span><span style="color: rgb(0, 0, 0);">,聽c);<br />聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽out.close();<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽loadedLibs.add(file);<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽in.close();<br />聽聽聽聽聽聽聽聽聽聽聽聽}聽</span><span style="color: rgb(0, 0, 255);">catch</span><span style="color: rgb(0, 0, 0);">聽(IOException聽e)聽{<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">;<br />聽聽聽聽聽聽聽聽聽聽聽聽}聽</span><span style="color: rgb(0, 0, 255);">finally</span><span style="color: rgb(0, 0, 0);">聽{<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽file.deleteOnExit();<br />聽聽聽聽聽聽聽聽聽聽聽聽}<br />聽<br />聽聽聽聽聽聽聽聽</span><span style="color: rgb(0, 0, 255);">return</span><span style="color: rgb(0, 0, 0);">聽file.getAbsolutePath();<br />聽聽聽聽}<br />}<br /></span></div>鍐嶆潵涓搗鍔ㄧ▼搴忕殑main鏂規硶 <br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">static</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">void</span><span style="color: rgb(0, 0, 0);">聽main(String[]聽args)聽</span><span style="color: rgb(0, 0, 255);">throws</span><span style="color: rgb(0, 0, 0);">聽Exception聽{<br />聽聽聽聽URL[]聽urls聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 0);">URLs聽to聽your聽application聽and聽SWT聽JARs</span><span style="color: rgb(0, 0, 0);">></span><span style="color: rgb(0, 0, 0);">;<br />聽聽聽聽File聽workDir聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 0);">working聽directory聽of聽your聽choice</span><span style="color: rgb(0, 0, 0);">></span><span style="color: rgb(0, 0, 0);">;<br />聽聽聽聽ClassLoader聽cl聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">聽SWTClassLoader(urls,聽workDir);<br />聽聽聽聽Class聽mainClass聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽cl.loadClass(</span><span style="color: rgb(0, 0, 0);"><</span><span style="color: rgb(0, 0, 0);">name聽of聽your聽original聽main聽</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">></span><span style="color: rgb(0, 0, 0);">);<br />聽聽聽聽Method聽main聽</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">聽mainClass.getMethod(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">main</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">,聽</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">聽Class[]聽{聽String[].</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">聽});<br />聽聽聽聽main.invoke(</span><span style="color: rgb(0, 0, 255);">null</span><span style="color: rgb(0, 0, 0);">,聽</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">聽Object[]聽{聽args聽});<br />}<br /></span></div><br /><img src ="http://www.tkk7.com/mstar/aggbug/50116.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mstar/" target="_blank">榛戠伒</a> 2006-06-03 12:54 <a href="http://www.tkk7.com/mstar/archive/2006/06/03/50116.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>[ZY]LinkedList vs. ArrayListhttp://www.tkk7.com/mstar/archive/2006/01/26/29272.html榛戠伒榛戠伒Thu, 26 Jan 2006 12:25:00 GMThttp://www.tkk7.com/mstar/archive/2006/01/26/29272.htmlhttp://www.tkk7.com/mstar/comments/29272.htmlhttp://www.tkk7.com/mstar/archive/2006/01/26/29272.html#Feedback2http://www.tkk7.com/mstar/comments/commentRss/29272.htmlhttp://www.tkk7.com/mstar/services/trackbacks/29272.htmlLinkedList vs. ArrayList

浠婂ぉ鐪嬪埌鐨勪竴涓?/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



榛戠伒 2006-01-26 20:25 鍙戣〃璇勮
]]>
鍔犺澆classpath涓殑鏂囦歡http://www.tkk7.com/mstar/archive/2005/07/20/8043.html榛戠伒榛戠伒Wed, 20 Jul 2005 06:46:00 GMThttp://www.tkk7.com/mstar/archive/2005/07/20/8043.htmlhttp://www.tkk7.com/mstar/comments/8043.htmlhttp://www.tkk7.com/mstar/archive/2005/07/20/8043.html#Feedback0http://www.tkk7.com/mstar/comments/commentRss/8043.htmlhttp://www.tkk7.com/mstar/services/trackbacks/8043.html
       URL url = this.getClass().getResource("EJBConfig.xml");
        
try {
            File xmlFile 
= new File(URLDecoder.decode(url.getFile(),"UTF-8"));
            
if(xmlFile.exists())
                System.
out.println("OK");
        } 
catch (UnsupportedEncodingException e) {
            e.printStackTrace();  
//To change body of catch statement use File | Settings | File Templates.
        }


榛戠伒 2005-07-20 14:46 鍙戣〃璇勮
]]>
Random鐨刵extInt(int i)鏂規硶鐨勮繑鍥炲?/title><link>http://www.tkk7.com/mstar/archive/2005/05/21/5026.html</link><dc:creator>榛戠伒</dc:creator><author>榛戠伒</author><pubDate>Sat, 21 May 2005 03:04:00 GMT</pubDate><guid>http://www.tkk7.com/mstar/archive/2005/05/21/5026.html</guid><wfw:comment>http://www.tkk7.com/mstar/comments/5026.html</wfw:comment><comments>http://www.tkk7.com/mstar/archive/2005/05/21/5026.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.tkk7.com/mstar/comments/commentRss/5026.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/mstar/services/trackbacks/5026.html</trackback:ping><description><![CDATA[docs涓榪斿洖鍊兼槸浠?鍒癷錛屼笉澶熷噯紜?br> 榪斿洖鍊煎簲璇ユ槸 >=0 , <i,灝辨槸璇存案榪滀篃涓嶄細榪斿洖i銆?br> <img src ="http://www.tkk7.com/mstar/aggbug/5026.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/mstar/" target="_blank">榛戠伒</a> 2005-05-21 11:04 <a href="http://www.tkk7.com/mstar/archive/2005/05/21/5026.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>感谢您访问我们的网站,您可能还对以下资源感兴趣:</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> 主站蜘蛛池模板: <a href="http://010youhua.com" target="_blank">亚洲福利在线播放</a>| <a href="http://sds54.com" target="_blank">成年女人午夜毛片免费看</a>| <a href="http://whdysdt.com" target="_blank">亚洲人成图片小说网站</a>| <a href="http://35633487.com" target="_blank">国产成人无码区免费网站</a>| <a href="http://nit8.com" target="_blank">亚洲国产精品成人精品无码区</a>| <a href="http://6609929.com" target="_blank">久久免费视频99</a>| <a href="http://ttays.com" target="_blank">亚洲日本乱码一区二区在线二产线 </a>| <a href="http://mychjp.com" target="_blank">一级成人毛片免费观看</a>| <a href="http://6nn5.com" target="_blank">国产成人精品日本亚洲专区61 </a>| <a href="http://www9797nn.com" target="_blank">久久久久免费看黄a级试看</a>| <a href="http://tha2008.com" target="_blank">亚洲不卡1卡2卡三卡2021麻豆</a>| <a href="http://vod8090.com" target="_blank">小小影视日本动漫观看免费</a>| <a href="http://lanoss.com" target="_blank">中国在线观看免费的www</a>| <a href="http://3838dydy.com" target="_blank">亚洲av片不卡无码久久</a>| <a href="http://998wc.com" target="_blank">亚洲无码精品浪潮</a>| <a href="http://xiaojiejieav.com" target="_blank">午夜国产精品免费观看</a>| <a href="http://rseav.com" target="_blank">久久国产一片免费观看</a>| <a href="http://xianliwang.com" target="_blank">亚洲第一男人天堂</a>| <a href="http://3x79.com" target="_blank">亚洲av色影在线</a>| <a href="http://my94ok.com" target="_blank">午夜亚洲国产成人不卡在线</a>| <a href="http://c7vl.com" target="_blank">国产四虎免费精品视频</a>| <a href="http://eaivan.com" target="_blank">91在线视频免费观看</a>| <a href="http://wxzg66.com" target="_blank">亚洲AV色欲色欲WWW</a>| <a href="http://www2019rz.com" target="_blank">亚洲精品美女在线观看</a>| <a href="http://3344088.com" target="_blank">久久久亚洲精品蜜桃臀</a>| <a href="http://qu41.com" target="_blank">女人18毛片a级毛片免费视频</a>| <a href="http://820111com.com" target="_blank">成全在线观看免费观看大全</a>| <a href="http://fennenll.com" target="_blank">国产成人亚洲午夜电影</a>| <a href="http://cnlawedu.com" target="_blank">亚洲午夜精品在线</a>| <a href="http://www045888.com" target="_blank">亚洲精品无码久久久久去q</a>| <a href="http://zzo8.com" target="_blank">国产嫩草影院精品免费网址</a>| <a href="http://456qqq.com" target="_blank">AV大片在线无码永久免费</a>| <a href="http://www33399.com" target="_blank">中文字幕免费在线看线人动作大片</a>| <a href="http://1314xxx.com" target="_blank">亚洲精品精华液一区二区</a>| <a href="http://longcais.com" target="_blank">在线电影你懂的亚洲</a>| <a href="http://xianliwang.com" target="_blank">77777亚洲午夜久久多人</a>| <a href="http://xmjcjc.com" target="_blank">国产免费直播在线观看视频</a>| <a href="http://xsdin.com" target="_blank">国产卡一卡二卡三免费入口</a>| <a href="http://wwwabxx.com" target="_blank">日韩免费无码视频一区二区三区</a>| <a href="http://plladay.com" target="_blank">selaoban在线视频免费精品</a>| <a href="http://jcthbank.com" 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>