锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产亚洲AV香蕉,亚洲一二成人精品区,亚洲视频在线观看不卡http://www.tkk7.com/jzone/category/39472.htmljava web, java wap ..My laboratory..zh-cnMon, 14 Jun 2010 15:54:48 GMTMon, 14 Jun 2010 15:54:48 GMT60commons-lang-2.4.jar 鍖呭父鐢ㄦ柟娉曢泦閿?/title><link>http://www.tkk7.com/jzone/articles/323107.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Tue, 08 Jun 2010 16:04:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/323107.html</guid><description><![CDATA[<p>import java.util.Iterator;<br /> import java.util.Map;</p> <p>import org.apache.commons.lang.ArrayUtils;<br /> import org.apache.commons.lang.ClassUtils;<br /> import org.apache.commons.lang.RandomStringUtils;<br /> import org.apache.commons.lang.StringEscapeUtils;<br /> import org.apache.commons.lang.StringUtils;<br /> import org.apache.commons.lang.math.NumberUtils;</p> <p>/**<br />  * commons-lang-2.4.jar 鍖呭父鐢ㄦ柟娉曢泦閿?br />  *<br />  */<br /> public class CommonsLang {</p> <p> public static void main(String[] args) {<br />   String[] test = {"33", "ddffd"};<br />   String[] test1 = {"ddffd", "33"};<br />   <br />   // 1.鍒ゆ柇涓や釜鏁版嵁鏄惁鐩哥瓑<br />   System.out.println(ArrayUtils.isEquals(test, test1));<br />   // 2.{33,ddffd} 灝嗘暟緇勫唴瀹逛互{,}褰㈠紡杈撳嚭錛?br />   System.out.println(ArrayUtils.toString(test));<br />   Map map = ArrayUtils.toMap(new String[][] { { "RED", "#FF0000" }, { "GREEN", "#00FF00" }, { "BLUE", "#0000FF" } });<br />   // 3.toMap 涓涓暟緇勶紝浣嗘瘡涓厓绱?Each element of the array<br />   // must be either a {@link java.util.Map.Entry} or an Array,<br />   // 鏂瑰紡涓 涓嬮潰鏄亶鍘唌ap鐨勬柟寮忥紝鍙栧緱鍏秌eySet.iterator();<br />   Iterator it = map.keySet().iterator();<br />   while (it.hasNext()) {<br />    String key = (String) it.next();<br />    // it.next()鍙寘鍚玨ey<br />    System.out.println("key:" + key + "value:" + map.get(key));<br />   }<br />   // 鏂瑰紡浜?鍙栧緱鍏秂ntrySet()闆嗗悎,<br />   Iterator it1 = map.entrySet().iterator();<br />   while (it.hasNext()) {<br />    Map.Entry entry = (Map.Entry) it1.next();<br />    // it1.next()涓寘鍚玨ey鍜寁alue<br />    System.out.println("key :" + entry.getKey() + "value :" + entry.getValue());<br />   }</p> <p>  // 4.鍙栧緱綾誨悕<br />   System.out.println(ClassUtils.getShortClassName(Test.class));<br />   // 鍙栧緱鍏跺寘鍚?br />   System.out.println(ClassUtils.getPackageName(Test.class));<br />   // 5.NumberUtils<br />   System.out.println(NumberUtils.stringToInt("6"));<br />   System.out.println(NumberUtils.stringToInt("7", 10));<br />   // 6.浜斾綅鐨勯殢鏈哄瓧姣嶅拰鏁板瓧<br />   System.out.println(RandomStringUtils.randomAlphanumeric(5));<br />   // 7.StringEscapeUtils<br />   System.out.println(StringEscapeUtils.escapeHtml("<html>"));<br />   // 杈撳嚭緇撴灉涓?amp;lt;html&gt;<br />   System.out.println(StringEscapeUtils.escapeJava("String"));<br />   // 8.StringUtils,鍒ゆ柇鏄惁鏄┖鏍煎瓧絎?br />   System.out.println(StringUtils.isBlank("   "));<br />   // 灝嗘暟緇勪腑鐨勫唴瀹逛互,鍒嗛殧<br />   System.out.println(StringUtils.join(test, ","));<br />   // 鍦ㄥ彸杈瑰姞涓嬪瓧絎?浣夸箣鎬婚暱搴︿負6<br />   System.out.println(StringUtils.rightPad("abc", 6, 'T'));<br />   // 棣栧瓧姣嶅ぇ鍐?br />   System.out.println(StringUtils.capitalize("abc"));<br />   // Deletes all whitespaces from a String 鍒犻櫎鎵鏈夌┖鏍?br />   System.out.println(StringUtils.deleteWhitespace("   ab  c  "));<br />   // 鍒ゆ柇鏄惁鍖呭惈榪欎釜瀛楃<br />   System.out.println(StringUtils.contains("abc", "ba"));<br />   // 琛ㄧず宸﹁竟涓や釜瀛楃<br />   System.out.println(StringUtils.left("abc", 2));<br />   System.out.println(StringUtils.right("abcd", 3));<br />  }<br /> }<br /> </p> <img src ="http://www.tkk7.com/jzone/aggbug/323107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2010-06-09 00:04 <a href="http://www.tkk7.com/jzone/articles/323107.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>String&InputStream鐨勭浉浜掕漿鍖?/title><link>http://www.tkk7.com/jzone/articles/311849.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Wed, 03 Feb 2010 14:15:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/311849.html</guid><description><![CDATA[1.InputStream ---> String<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"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">            InputStream is </span><span style="color: #000000">=</span><span style="color: #000000"> getMethod.getResponseBodyAsStream();<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />            BufferedReader br </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> BufferedReader(</span><span style="color: #0000ff">new</span><span style="color: #000000"> InputStreamReader(is, </span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">));<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />            StringBuffer buffer </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> StringBuffer();<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />            String str </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">""</span><span style="color: #000000">, response </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">""</span><span style="color: #000000">;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />            <br /> <img id="Codehighlighter1_257_307_Open_Image" onclick="this.style.display='none'; Codehighlighter1_257_307_Open_Text.style.display='none'; Codehighlighter1_257_307_Closed_Image.style.display='inline'; Codehighlighter1_257_307_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_257_307_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_257_307_Closed_Text.style.display='none'; Codehighlighter1_257_307_Open_Image.style.display='inline'; Codehighlighter1_257_307_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">while</span><span style="color: #000000">((str </span><span style="color: #000000">=</span><span style="color: #000000"> br.readLine())</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">)</span><span id="Codehighlighter1_257_307_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_257_307_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                response </span><span style="color: #000000">=</span><span style="color: #000000">buffer.append(str).toString();<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />            }</span></span></div> <br /> 2.String --->InputStream<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"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #000000">InputStream stream </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> ByteArrayInputStream(</span><span style="color: #000000">""</span><span style="color: #000000">.getBytes());</span></div> ByteArrayInputStream 鏄疘nputStream 鐨勫瓙綾?br /> <img src ="http://www.tkk7.com/jzone/aggbug/311849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2010-02-03 22:15 <a href="http://www.tkk7.com/jzone/articles/311849.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>java 鍫嗕笌鏍堢殑璇︾粏浠嬬粛http://www.tkk7.com/jzone/articles/309598.htmlGavin.leeGavin.leeThu, 14 Jan 2010 15:10:00 GMThttp://www.tkk7.com/jzone/articles/309598.htmlhttp://yysct2005.javaeye.com/category/8938

Gavin.lee 2010-01-14 23:10 鍙戣〃璇勮
]]>
HttpClient 涓鏂囬?錛堟憳錛?/title><link>http://www.tkk7.com/jzone/articles/309594.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Thu, 14 Jan 2010 15:08:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/309594.html</guid><description><![CDATA[<p>鍘熸枃鍑哄--------http://hi.baidu.com/wader2006/blog/item/7e7b3a291f7801fd99250a91.html  </p> <p>铏界劧鐢╰elnet榪欐牱鐨勭▼搴忛兘鍙妸欏甸潰鍙栧洖鏉ワ紝浣嗘槸鍦ㄤ笌web鏈嶅姟鍣ㄧ殑浜や簰涓紝濡傛灉娑夊強cookie鎴杊ttps鎴杝sl絳夊唴瀹癸紝涓鑸姛鑳界浉瀵瑰畬澶囩殑http瀹㈡埛绔繕鏄潪甯稿繀瑕佺殑銆侷E鎴朜etScape絳夋祻瑙堝櫒紜疄涓嶉敊錛屽彲鏄鏋滀負瀹炵幇鎸佺畫浜掑姩鑰屽湪紼嬪簭璋冪敤嫻忚鍣紝鎴戜釜浜鴻涓哄叾涓殑宸ヤ綔閲忚繕鏄笉灝忕殑錛岃繖榪樻病鑰冭檻鐗堟潈闂銆傛渶濂界殑鍔炴硶錛屽氨鏄兘鏈変竴涓紑婧愮殑鍖咃紝鑳藉疄鐜癶ttp瀹㈡埛绔殑鍔熻兘錛屼緵鎴戜滑寮鍙戠殑紼嬪簭璋冪敤銆?a >httpclient</a>灝辨槸榪欎箞涓涓寘錛屾垜鐩鎬俊鍙兘鏈夋瘮瀹冪殑瀹炵幇鏇村ソ鐨勶紝浣嗙洰鍓嶆垜鍙叧娉ㄨ繖涓傦細錛?br /> <a name="more">銆銆涓嬮潰鏄痭ogoop鍋氱殑鍔熻兘姣旇緝琛細<br /> </p> <table cellspacing="1" cellpadding="4" border="1"> <tbody> <tr> <td>Features</td> <td>nogoop</td> <td>Sun JRE < 1.4.2</td> <td>Sun JRE 1.4.2</td> <td>Innovation</td> <td>Apache/Jakarta</td> </tr> <tr> <td>cookies</td> <td> </td> <td> </td> <td> </td> <td>X</td> <td>X</td> </tr> <tr> <td>plug compatible</td> <td>X</td> <td>X</td> <td>X</td> <td>X</td> <td>[partial]</td> </tr> <tr> <td>true request output stream</td> <td> </td> <td> </td> <td> </td> <td>X</td> <td>X</td> </tr> <tr> <td>true response input stream</td> <td>X</td> <td> </td> <td> </td> <td>X</td> <td>X</td> </tr> <tr> <td>connection keep alive</td> <td>X</td> <td>X</td> <td>X</td> <td>X</td> <td>X</td> </tr> <tr> <td>connection pool throttling</td> <td>X</td> <td> </td> <td> </td> <td> </td> <td>X</td> </tr> <tr> <td>connection/request timeout</td> <td>X</td> <td> </td> <td>X [uns]</td> <td>X</td> <td>X</td> </tr> <tr> <td>idle connection timeout</td> <td>X</td> <td> </td> <td> </td> <td> </td> <td>X</td> </tr> <tr> <td>pipelining of requests</td> <td> </td> <td> </td> <td> </td> <td>X</td> <td> </td> </tr> <tr> <td>alternate DNS resolution (dnsjava)</td> <td>X</td> <td> </td> <td> </td> <td> </td> <td> </td> </tr> <tr> <td>SSL</td> <td>X</td> <td>X</td> <td>X</td> <td>X</td> <td>X</td> </tr> <tr> <td>basic authentication</td> <td>X</td> <td>X</td> <td>X</td> <td>X</td> <td>X</td> </tr> <tr> <td>digest authentication</td> <td>X</td> <td>X</td> <td>X</td> <td>X</td> <td>X</td> </tr> <tr> <td>NTLM authentication</td> <td>X</td> <td> </td> <td>[Windows only]</td> <td> </td> <td>X</td> </tr> <tr> <td>proxy authentication</td> <td>X</td> <td>X</td> <td>X</td> <td>X</td> <td>X</td> </tr> <tr> <td>minimum JRE version</td> <td>1.2</td> <td>1</td> <td>01騫?鏈?鏃?/td> <td>1.2</td> <td>1.2</td> </tr> <tr> <td>price</td> <td>$499</td> <td>free</td> <td>free</td> <td>free</td> <td>free</td> </tr> <tr> <td>source available</td> <td>X</td> <td> </td> <td> </td> <td>X</td> <td>X</td> </tr> <tr> <td>diagnostic tracing</td> <td>X</td> <td> </td> <td> </td> <td>X</td> <td>X</td> </tr> <tr> <td>actively supported</td> <td>X</td> <td>X</td> <td>X</td> <td> </td> <td>X</td> </tr> <tr> <td>fix turnaround</td> <td>fast</td> <td>slow</td> <td>slow</td> <td>none</td> <td>medium</td> </tr> <tr> <td>license</td> <td>purchase</td> <td>Sun JRE</td> <td>Sun JRE</td> <td>LGPL</td> <td>Apache</td> </tr> </tbody> </table> <p> <h4>1銆丠ttpClient鐨勫姛鑳?/h4> <ol> <li>鍩轟簬鏍囧噯錛岀函姝ava錛屽疄鐜頒簡http1.0鍜?.1銆? <li>鍦ㄤ竴涓彲鎵╁睍鐨凮O妗嗘灦鍐咃紝瀹炵幇浜咹TTP鐨勫叏閮ㄦ柟娉?GET, POST, <br /> PUT, DELETE, HEAD, OPTIONS, and TRACE) <li>鏀寔HTTPS(ssl涓婄殑HTTP)鐨勫姞瀵嗘搷浣? <li>閫忔槑鍦扮┛榪嘓TTP浠g悊寤虹珛榪炴帴 <li>閫氳繃CONNECT鏂規硶錛屽埄鐢ㄩ氳繃寤虹珛絀胯繃HTTP浠g悊鐨凥TTPS榪炴帴 <li>鍒╃敤鏈湴Java socket錛岄忔槑鍦扮┛榪嘢OCKS(鐗堟湰5鍜?錛変唬鐞嗗緩绔嬭繛鎺? <li>鏀寔鍒╃敤Basic銆丏igest鍜孨TLM鍔犲瘑鐨勮璇? <li>鏀寔鐢ㄤ簬涓婁紶澶ф枃浠剁殑Multi-Part琛ㄥ崟POST鏂規硶 <li>鎻掍歡寮忓畨鍏╯ocket瀹炵幇錛屾槗浜庝嬌鐢ㄧ涓夋柟鐨勮В鍐蟲柟妗? <li>榪炴帴綆$悊錛屾敮鎸佸綰跨▼搴旂敤錛屾敮鎸佽瀹氬崟涓富鏈烘昏繛鎺ュ拰鏈楂樿繛鎺ユ暟閲?鑷姩媯嫻嬪拰鍏抽棴澶辨晥榪炴帴 <li>鐩存帴灝嗚姹備俊鎭祦閫佸埌鏈嶅姟鍣ㄧ殑绔彛 <li>鐩存帴璇誨彇浠庢湇鍔″櫒鐨勭鍙i佸嚭鐨勫簲絳斾俊鎭? <li>鏀寔HTTP/1.0涓敤KeepAlive鍜孒TTP/1.1涓敤persistance璁劇疆鐨勬寔涔呰繛鎺? <li>鐩存帴璁塊棶鐢辨湇鍔″櫒閫佸嚭鐨勫簲絳斾唬鐮佸拰澶撮儴淇℃伅 <li>鍙緗繛鎺ヨ秴鏃舵椂闂? <li>HttpMethods 瀹炵幇Command Pattern錛屼互鍏佽騫惰璇鋒眰鎴栭珮鏁堣繛鎺ュ鐢? <li>閬靛驚the Apache Software License鍗忚錛屾簮鐮佸厤璐瑰彲寰?nbsp; </li> </ol> <h4>2銆侀澶囧伐浣?/h4> <p><br /> 銆銆瀵筳re1.3.*錛屽鏋滆HttpClient鏀寔https錛屽垯闇瑕佷笅杞藉茍瀹夎<a >jsse</a>鍜?a >jce</a>.瀹夎鐨勬楠ゅ涓嬶細<br /> 1)涓嬭澆jsse鍜宩ce.<br /> 2)媯鏌LASSPATH涓病鏈変笌jsse鍜宩ce鐩稿叧鐨刯ar鍖?br /> 3)灝?US_export_policy.jar銆乴ocal_policy.jar銆乯sse.jar銆乯net.jar銆乯ce1_2_x.jar銆乻unjce_provider.jar銆乯cert.jar澶嶅埗鍒扮洰褰曪細<br /> UNIX:$JDK_HOME/jre/lib/ext<br /> Windows:%JDK_HOME%\jre\lib\ext<br /> 4)淇敼涓嬭堪鐩綍涓嬬殑java.security鏂囦歡銆?br /> UNIX:$JDK_HOME/jre/lib/security/<br /> Windows:%JDK_HOME%\jre\lib\security\<br /> 5)</p> <div id="bfbhhht" class="code">灝?br /> #<br /> # List of providers and their preference orders:<br /> #<br /> security.provider.1=sun.security.provider.Sun<br /> security.provider.2=com.sun.rsajca.Provider<br /> 鏀逛負錛?br /> #<br /> # List of providers and their preference orders:<br /> #<br /> security.provider.1=com.sun.crypto.provider.SunJCE<br /> security.provider.2=sun.security.provider.Sun<br /> security.provider.3=com.sun.rsajca.Provider<br /> security.provider.4=com.sun.net.ssl.internal.ssl.Provider</div> <p><br /> 銆銆HttpClient榪樿姹傚畨瑁卌ommons-logging錛屼笅闈㈣窡httpclient涓鍧楀畨瑁呫?/p> <h4>3銆佸彇寰楁簮鐮?nbsp;</h4> <div id="tlbfbrj" class="code">cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic login<br /> password: anoncvs<br /> cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout jakarta-commons/logging<br /> cvs -d :pserver:anoncvs@cvs.apache.org:/home/cvspublic checkout jakarta-commons/httpclient</div> <p><br /> 銆銆緙栬瘧錛?/p> <div id="vtxbzbb" class="code">cd jakarta-commons/logging<br /> ant dist<br /> cp dis/*.jar ../httpclient/lib/<br /> cd ../httpclient<br /> ant dist</div> <p> </p> <h4>4銆佷嬌鐢℉ttpClient緙栫▼鐨勫熀鏈鑱?nbsp;</h4> <ol> <li>鍒涘緩 HttpClient 鐨勪竴涓疄渚? <li>鍒涘緩鏌愪釜鏂規硶錛圖eleteMethod錛孍ntityEnclosingMethod錛孍xpectContinueMethod錛孏etMethod錛孒eadMethod錛孧ultipartPostMethod錛孫ptionsMethod錛孭ostMethod錛孭utMethod錛孴raceMethod錛夌殑涓涓疄渚嬶紝涓鑸彲鐢ㄨ鐩爣URL涓哄弬鏁般? <li>璁?HttpClient 鎵ц榪欎釜鏂規硶. <li>璇誨彇搴旂瓟淇℃伅. <li>閲婃斁榪炴帴. <li>澶勭悊搴旂瓟. </li> </ol> <p><br /> 銆銆鍦ㄦ墽琛屾柟娉曠殑榪囩▼涓紝鏈変袱縐嶅紓甯革紝涓縐嶆槸HttpRecoverableException錛岃〃紺哄伓鐒舵ч敊璇彂鐢燂紝涓鑸啀璇曞彲鑳芥垚鍔燂紝鍙︿竴縐嶆槸IOException錛屼弗閲嶉敊璇?br /> 銆銆榪欏効鏈夎繖涓暀紼嬩腑鐨勪竴涓緥紼嬶紝鍙互<a >涓嬭澆</a>銆?/p> <h4>5銆佽璇?/h4> <p><br /> 銆銆HttpClient涓夌涓嶅悓鐨勮璇佹柟妗? Basic, Digest and NTLM. 榪欎簺鏂規鍙敤浜庢湇鍔″櫒鎴栦唬鐞嗗瀹㈡埛绔殑璁よ瘉錛岀畝縐版湇鍔″櫒璁よ瘉鎴栦唬鐞嗚璇併?br /> 1)鏈嶅姟鍣ㄨ璇?Server Authentication)<br /> 銆銆HttpClient澶勭悊鏈嶅姟鍣ㄨ璇佸嚑涔庢槸閫忔槑鐨勶紝浠呴渶瑕佸紑鍙戜漢鍛樻彁渚涚櫥褰曚俊鎭?login credentials)銆傜櫥褰曚俊鎭繚瀛樺湪HttpState綾葷殑瀹炰緥涓紝鍙互閫氳繃 setCredentials(String realm, Credentials cred)鍜実etCredentials(String realm)鏉ヨ幏鍙栨垨璁劇疆銆傛敞鎰忥紝璁懼畾瀵歸潪鐗瑰畾绔欑偣璁塊棶鎵闇瑕佺殑鐧誨綍淇℃伅錛屽皢realm鍙傛暟緗負null. HttpClient鍐呭緩鐨勮嚜鍔ㄨ璇侊紝鍙互閫氳繃HttpMethod綾葷殑setDoAuthentication(boolean doAuthentication)鏂規硶鍏抽棴錛岃屼笖榪欐鍏抽棴鍙獎鍝岺ttpMethod褰撳墠鐨勫疄渚嬨?br /> 銆銆鎶㈠厛璁よ瘉(Preemptive Authentication)鍙互閫氳繃涓嬭堪鏂規硶鎵撳紑.</p> <div id="ndxrjjp" class="code">client.getState().setAuthenticationPreemptive(true);</div> <p>銆銆鍦ㄨ繖縐嶆ā寮忔椂錛孒ttpClient浼氫富鍔ㄥ皢basic璁よ瘉搴旂瓟淇℃伅浼犵粰鏈嶅姟鍣紝鍗充嬌鍦ㄦ煇縐嶆儏鍐典笅鏈嶅姟鍣ㄥ彲鑳借繑鍥炶璇佸け璐ョ殑搴旂瓟錛岃繖鏍峰仛涓昏鏄負浜嗗噺灝戣繛鎺ョ殑寤虹珛銆備負浣挎瘡涓柊寤虹殑 HttpState瀹炰緥閮藉疄琛屾姠鍏堣璇侊紝鍙互濡備笅璁劇疆緋葷粺灞炴с?/p> <div id="tlfhtjp" class="code">setSystemProperty(Authenticator.PREEMPTIVE_PROPERTY, "true");</div> <p><br /> Httpclient瀹炵幇鐨勬姠鍏堣璇侀伒寰猺fc2617.<br /> 2)浠g悊璁よ瘉(proxy authentication)<br /> 銆銆闄や簡鐧誨綍淇℃伅闇鍗曠嫭瀛樻斁浠ュ錛屼唬鐞嗚璇佷笌鏈嶅姟鍣ㄨ璇佸嚑涔庝竴鑷淬傜敤 setProxyCredentials(String realm, Credentials cred)鍜?getProxyCredentials(String realm)璁俱佸彇鐧誨綍淇℃伅銆?br /> 3)璁よ瘉鏂規(authentication schemes)<br /> 銆銆Basic<br /> 銆銆鏄疕TTP涓瀹氭渶鏃╃殑涔熸槸鏈鍏煎(?)鐨勬柟妗堬紝閬楁喚鐨勬槸涔熸槸鏈涓嶅畨鍏ㄧ殑涓涓柟妗堬紝鍥犱負瀹冧互鏄庣爜浼犻佺敤鎴峰悕鍜屽瘑鐮併傚畠瑕佹眰涓涓猆sernamePasswordCredentials瀹炰緥錛屽彲浠ユ寚瀹氭湇鍔″櫒绔殑璁塊棶絀洪棿鎴栭噰鐢ㄩ粯璁ょ殑鐧誨綍淇℃伅銆?br /> 銆銆Digest<br /> 銆銆鏄湪HTTP1.1涓鍔犵殑涓涓柟妗堬紝铏界劧涓嶅Basic寰楀埌鐨勮蔣浠舵敮鎸佸錛屼絾榪樻槸鏈夊箍娉涚殑浣跨敤銆侱igest鏂規姣擝asic鏂規瀹夊叏寰楀錛屽洜瀹冩牴鏈氨涓嶉氳繃緗戠粶浼犻佸疄闄呯殑瀵嗙爜錛屼紶閫佺殑鏄埄鐢ㄨ繖涓瘑鐮佸浠庢湇鍔″櫒浼犳潵鐨勪竴涓殢鏈烘暟(nonce)鐨勫姞瀵嗕覆銆傚畠瑕佹眰涓涓猆sernamePasswordCredentials瀹炰緥錛屽彲浠ユ寚瀹氭湇鍔″櫒绔殑璁塊棶絀洪棿鎴栭噰鐢ㄩ粯璁ょ殑鐧誨綍淇℃伅銆?br /> 銆銆NTLM<br /> 銆銆榪欐槸HttpClient鏀寔鐨勬渶澶嶆潅鐨勮璇佸崗璁傚畠M$璁捐鐨勪竴涓鏈夊崗璁紝娌℃湁鍏紑鐨勮鑼冭鏄庛備竴寮濮嬬敱浜庤璁$殑緙洪櫡錛孨TLM鐨勫畨鍏ㄦф瘮Digest宸紝鍚庢潵緇忚繃涓涓猄ervicePack琛ヤ竵鍚庯紝瀹夊叏鎬у垯姣旇緝Digest楂樸侼TLM闇瑕佷竴涓狽TCredentials瀹炰緥. 娉ㄦ剰錛岀敱浜嶯TLM涓嶄嬌鐢ㄨ闂┖闂?realms)鐨勬蹇碉紝HttpClient鍒╃敤鏈嶅姟鍣ㄧ殑鍩熷悕浣滆闂┖闂寸殑鍚嶅瓧銆傝繕闇瑕佹敞鎰忥紝鎻愪緵緇橬TCredentials鐨勭敤鎴峰悕錛屼笉瑕佺敤鍩熷悕鐨勫墠緙 - 濡? "adrian" 鏄紜殑錛岃?"DOMAIN\adrian" 鍒欐槸閿欑殑.<br /> 銆銆NTLM璁よ瘉鐨勫伐浣滄満鍒朵笌basic鍜宒igest鏈夊緢澶х殑宸埆銆傝繖浜涘樊鍒竴鑸敱HttpClient澶勭悊錛屼絾鐞嗚В榪欎簺宸埆鏈夊姪閬垮厤鍦ㄤ嬌鐢∟TLM璁よ瘉鏃跺嚭鐜伴敊璇?/p> <ol> <li>浠嶩ttpClientAPI鐨勮搴︽潵鐪嬶紝NTLM涓庡叾瀹冭璇佹柟寮忎竴鏍風殑宸ヤ綔錛屽樊鍒槸闇瑕佹彁渚?NTCredentials'瀹炰緥鑰屼笉鏄?UsernamePasswordCredentials'(鍏跺疄錛屽墠鑰呭彧鏄墿灞曚簡鍚庤? <li>瀵筃TLM璁よ瘉錛岃闂┖闂存槸榪炴帴鍒扮殑鏈哄櫒鐨勫煙鍚嶏紝榪欏澶氬煙鍚嶄富鏈轟細鏈変竴浜涢夯鐑?鍙湁HttpClient榪炴帴涓寚瀹氱殑鍩熷悕鎵嶆槸璁よ瘉鐢ㄧ殑鍩熷悕銆傚緩璁皢realm璁句負null浠ヤ嬌鐢ㄩ粯璁ょ殑璁劇疆銆? <li>NTLM鍙槸璁よ瘉浜嗕竴涓繛鎺ヨ屼笉鏄竴璇鋒眰錛屾墍浠ユ瘡褰撲竴涓柊鐨勮繛鎺ュ緩绔嬪氨瑕佽繘琛屼竴嬈¤璇侊紝涓斿湪璁よ瘉鐨勮繃紼嬩腑淇濇寔榪炴帴鏄潪甯擱噸瑕佺殑銆?鍥犳錛孨TLM涓嶈兘鍚屾椂鐢ㄤ簬浠g悊璁よ瘉鍜屾湇鍔″櫒璁よ瘉錛屼篃涓嶈兘鐢ㄤ簬http1.0榪炴帴鎴栨湇鍔″櫒涓嶆敮鎸佹寔涔呰繛鎺ョ殑鎯呭喌銆?</li> </ol> <h4>6銆侀噸瀹氬悜</h4> <p><br /> 銆銆鐢變簬鎶鏈檺鍒訛紝浠ュ強涓轟繚璇?.0鍙戝竷鐗圓PI鐨勭ǔ瀹氾紝HttpClient榪樹笉鑳借嚜鍔ㄥ閲嶅畾鍚戯紝浣嗗閲嶅畾鍚戝埌鍚屼竴涓繪満銆佸悓涓绔彛涓旈噰鐢ㄥ悓涓鍗忚鐨勬儏鍐礖ttpClient鍙互鏀寔銆備笉鑳借嚜鍔ㄧ殑澶勭悊鐨勬儏鍐碉紝鍖呮嫭闇瑕佷漢宸ヤ氦浜掔殑鎯呭喌錛屾垨瓚呭嚭httpclient鐨勮兘鍔涖?br /> 銆銆褰撴湇鍔″櫒閲嶅畾鍚戞寚浠ゆ寚鍒頒笉鍚岀殑涓繪満鏃訛紝HttpClient鍙槸綆鍗曞湴灝嗛噸瀹氬悜鐘舵佺爜浣滀負搴旂瓟鐘舵併傛墍鏈夌殑300鍒?99錛堝寘鍚袱绔級鐨勮繑鍥炵爜錛岄兘琛ㄧず鏄噸瀹氬悜搴旂瓟銆傚父瑙佺殑鏈夛細</p> <ol> <li>301 姘鎬箙縐誨姩. HttpStatus.SC_MOVED_PERMANENTLY <li>302 涓存椂縐誨姩. HttpStatus.SC_MOVED_TEMPORARILY <li>303 See Other. HttpStatus.SC_SEE_OTHER <li>307 涓存椂閲嶅畾鍚? HttpStatus.SC_TEMPORARY_REDIRECT </li> </ol> <p><br /> 銆銆褰撴敹鍒扮畝鍗曠殑閲嶅畾鍚戞椂錛岀▼搴忓簲浠嶩ttpMethod瀵硅薄涓娊鍙栨柊鐨刄RL騫跺皢鍏朵笅杞姐傚彟澶?闄愬埗涓涓嬮噸瀹氬悜嬈℃暟鏄釜濂界殑涓繪剰錛岃繖鍙互閬垮厤閫掑綊寰幆銆傛柊鐨刄RL鍙互浠庡ご瀛楁Location涓娊鍙栵紝濡備笅錛?/p> <div id="rprdxxd" class="code">String redirectLocation;<br /> Header locationHeader = method.getResponseHeader("location");<br /> if (locationHeader != null) {<br /> redirectLocation = locationHeader.getValue();<br /> } else {<br /> // The response is invalid and did not provide the new location for<br /> // the resource. Report an error or possibly handle the response<br /> // like a 404 Not Found error.<br /> }</div> <p><br /> 鐗規畩閲嶅畾鍚戯細</p> <ol> <li>300 澶氶噸閫夋嫨. HttpStatus.SC_MULTIPLE_CHOICES <li>304 娌℃湁鏀瑰姩. HttpStatus.SC_NO T_MODIFIED <li>305 浣跨敤浠g悊. HttpStatus.SC_USE_PROXY 銆銆</li> </ol> <h4>7銆佸瓧絎︾紪鐮?character encoding)</h4> <p><br /> 銆銆涓涓狧TTP鍗忚鐨勮姹傛垨搴旂瓟鐨勫ご閮?鍦╤ttp鍗忚涓紝鏁版嵁鍖呭垎涓轟袱閮ㄥ垎錛屼竴閮ㄥ垎鏄ご閮紝鐢變竴浜涘悕鍊煎鏋勬垚錛屼竴閮ㄥ垎鏄富浣?body)錛屾槸鐪熸浼犲姙鐞嗙殑鏁版嵁錛堝HTML欏甸潰絳夛級錛夛紝蹇呴』浠S-ASCII緙栫爜錛岃繖鏄洜涓哄ご閮ㄤ笉浼犳暟鎹屽彧鎻忚堪琚浼犺緭鐨勬暟鎹殑涓浜涗俊鎭紝涓涓緥澶栨槸cookie錛屽畠鏄暟鎹絾鏄氳繃澶撮儴榪涜浼犺緭鐨勶紝鎵浠ュ畠涔熻鐢║S-ASCII緙栫爜銆?br /> 銆銆HTTP鏁版嵁鍖呯殑涓諱綋閮ㄥ垎錛屽彲浠ョ敤浠諱綍涓縐嶆柟寮忚繘琛岀紪鐮侊紝榛樿鏄疘SO-8859-1錛屽叿浣撳彲浠ョ敤澶撮儴瀛楁Content-Type鎸囧畾銆傚彲浠ュ埄鐢?addRequestHeader鏂規硶錛岃瀹氱紪鐮佹柟寮忥紱鐢?getResponseCharSet鍙栧緱緙栫爜鏂瑰紡銆傚HTML鎴朮ML絳夌被鍨嬬殑鏂囨。錛屽畠浠殑鏈韓鐨凜ontent-Type涔熷彲浠ユ寚瀹氱紪鐮佹柟寮忥紝涓昏鍖哄垎涓よ呯殑浣滅敤鑼冨洿浠ュ緱鍒版紜疄鐨勮В鐮併?br /> 銆銆URL鐨勭紪鐮佹爣鍑嗭紝鐢盧FC1738鎸囧畾涓猴紝鍙兘鏄敱鍙墦鍗?浣?瀛楄妭鐨剈s-ascii瀛楃緇勬垚錛?0-ff涓嶆槸us-ascii瀛楃錛岃?0-1F鏄帶鍒跺瓧絎︼紝榪欎袱涓尯鍩熶腑鐢ㄧ殑瀛楃閮介』鍔犱互緙栫爜(encoded)銆?br /> 銆銆</p> <h4>8銆丆ookies</h4> <p><br /> 銆銆 HttpClient鑳借嚜鍔ㄧ鐞哻ookie,鍖呮嫭鍏佽鏈嶅姟鍣ㄨ緗甤ookie騫跺湪闇瑕佺殑鏃跺欒嚜鍔ㄥ皢cookie榪斿洖鏈嶅姟鍣紝瀹冧篃鏀寔鎵嬪伐璁劇疆cookie鍚庡彂閫佸埌鏈嶅姟鍣ㄧ銆備笉騫哥殑鏄紝瀵瑰浣曞鐞哻ookie錛屾湁鍑犱釜瑙勮寖浜掔浉鍐茬獊錛歂etscape Cookie 鑽夋, RFC2109, RFC2965錛岃屼笖榪樻湁寰堝ぇ鏁伴噺鐨勮蔣浠跺晢鐨刢ookie瀹炵幇涓嶉伒寰換浣曡鑼? 涓轟簡澶勭悊榪欑鐘跺喌錛孒ttpClient鎻愪緵浜嗙瓥鐣ラ┍鍔ㄧ殑cookie綆$悊鏂瑰紡銆侶ttpClient鏀寔鐨刢ookie瑙勮寖鏈夛細</p> <ol> <li><a >Netscape cookie鑽夋</a>錛屾槸鏈鏃╃殑cookie瑙勮寖錛屽熀浜巖fc2109銆傚敖綆¤繖涓鑼冧笌rc2109鏈夎緝澶х殑宸埆錛岃繖鏍峰仛鍙互涓庝竴浜涙湇鍔″櫒鍏煎銆? <li><a title="cookie specification" >rfc2109</a>錛屾槸w3c鍙戝竷鐨勭涓涓畼鏂筩ookie瑙勮寖銆傜悊璁轟笂璁詫紝鎵鏈夌殑鏈嶅姟鍣ㄥ湪澶勭悊cookie(鐗堟湰1)鏃訛紝閮借閬靛驚姝よ鑼冿紝姝e洜濡傛錛孒ttpClient灝嗗叾璁句負榛樿鐨勮鑼冦傞仐鎲劇殑鏄紝榪欎釜瑙勮寖澶弗鏍間簡錛屼互鑷村緢澶氭湇鍔″櫒涓嶆紜殑瀹炴柦浜嗚瑙勮寖鎴栦粛鍦ㄤ綔鐢∟etscape瑙勮寖銆傚湪榪欑鎯呭喌涓嬶紝搴斾嬌鐢ㄥ吋瀹硅鑼冦? <li>鍏煎鎬ц鑼冿紝璁捐鐢ㄦ潵鍏煎灝藉彲鑳藉鐨勬湇鍔″櫒錛屽嵆浣垮畠浠茍娌℃湁閬靛驚鏍囧噯瑙勮寖銆傚綋瑙f瀽cookie鍑虹幇闂鏃訛紝搴旇冭檻閲囩敤鍏煎鎬ц鑼冦?</li> </ol> <p><br /> 銆銆 RFC2965瑙勮寖鏆傛椂娌℃湁琚獺ttpClient鏀寔錛堝湪浠ュ悗鐨勭増鏈負浼氬姞涓婏級錛屽畠瀹氫箟浜哻ookie鐗堟湰2錛屽茍璇存槑浜嗙増鏈?cookie鐨勪笉瓚籌紝RFC2965鏈夋剰鏈変箙鍙栦唬rfc2109.<br /> 銆銆鍦℉ttpClient涓紝鏈変袱縐嶆柟娉曟潵鎸囧畾cookie瑙勮寖鐨勪嬌鐢紝</p> <ol> <li> <div id="jptnhpx" class="code">HttpClient client = new HttpClient();<br /> client.getState().setCookiePolicy(CookiePolicy.COMPATIBILITY);</div> 榪欑鏂規硶璁劇疆鐨勮鑼冨彧瀵瑰綋鍓嶇殑HttpState鏈夋晥錛屽弬鏁板彲鍙栧糃ookiePolicy.COMPATIBILITY錛孋ookiePolicy.NETSCAPE_DRAFT鎴朇ookiePolicy.RFC2109銆? <li> <div id="lzdzjbz" class="code">System.setProperty("apache.commons.httpclient.cookiespec", "COMPATIBILITY");</div> 姝ゆ硶鎸囩殑瑙勮寖錛屽浠ュ悗姣忎釜鏂板緩绔嬬殑HttpState瀵硅薄閮芥湁鏁堬紝鍙傛暟鍙彇鍊?COMPATIBILITY","NETSCAPE_DRAFT"鎴?RFC2109"銆?br /> 銆銆甯告湁涓嶈兘瑙f瀽cookie鐨勯棶棰橈紝浣嗘洿鎹㈠埌鍏煎瑙勮寖澶ч兘鑳借В鍐熾?</li> </ol> <p>銆銆</p> <h4>9銆佷嬌鐢℉ttpClient閬囧埌闂鎬庝箞鍔? </h4> <ol> <li>鐢ㄤ竴涓祻瑙堝櫒璁塊棶鏈嶅姟鍣紝浠ョ‘璁ゆ湇鍔″櫒搴旂瓟姝e父 <li>濡傛灉鍦ㄤ嬌浠g悊錛屽叧鎺変唬鐞嗚瘯璇? <li>鍙︽壘涓涓湇鍔″櫒鏉ヨ瘯璇曪紙濡傛灉榪愯鐫涓嶅悓鐨勬湇鍔″櫒杞歡鏇村ソ錛? <li>媯鏌ヤ唬鐮佹槸鍚︽寜鏁欑▼涓鐨勬濊礬緙栧啓 <li>璁劇疆log綰у埆涓篸ebug錛屾壘鍑洪棶棰樺嚭鐜扮殑鍘熷洜 <li>鎵撳紑wiretrace錛屾潵榪借釜瀹㈡埛绔笌鏈嶅姟鍣ㄧ殑閫氫俊錛屼互紜疄闂鍑虹幇鍦ㄤ粈涔堝湴鏂? <li>鐢╰elnet鎴杗etcat鎵嬪伐灝嗕俊鎭彂閫佸埌鏈嶅姟鍣紝閫傚悎浜庣寽嫻嬪凡緇忔壘鍒頒簡鍘熷洜鑰岃繘琛岃瘯楠屾椂 <li>灝唍etcat浠ョ洃鍚柟寮忚繍琛岋紝鐢ㄤ綔鏈嶅姟鍣ㄤ互媯鏌ttpclient濡備綍澶勭悊搴旂瓟鐨勩? <li>鍒╃敤鏈鏂扮殑httpclient璇曡瘯錛宐ug鍙兘鍦ㄦ渶鏂扮殑鐗堟湰涓慨澶嶄簡 <li>鍚戦偖浠跺垪琛ㄦ眰甯姪 <li>鍚慴ugzilla鎶ュ憡bug. 銆銆</li> </ol> <h4>10銆丼SL</h4> <p><br /> 銆銆鍊熷姪Java Secure Socket Extension (JSSE)錛孒ttpClient鍏ㄩ潰鏀寔Secure Sockets Layer (SSL)鎴朓ETF Transport Layer Security (TLS)鍗忚涓婄殑HTTP銆侸SSE宸茬粡jre1.4鍙婁互鍚庣殑鐗堟湰涓紝浠ュ墠鐨勭増鏈垯闇瑕佹墜宸ュ畨瑁呰緗紝鍏蜂綋榪囩▼鍙傝<a >Sun緗戠珯</a>鎴栨湰瀛︿範絎旇銆?br /> 銆銆HttpClient涓嬌鐢⊿SL闈炲父綆鍗曪紝鍙傝冧笅闈袱涓緥瀛?</p> <div id="v7l9hf7" class="code">HttpClient httpclient = new HttpClient();<br /> GetMethod httpget = new GetMethod("https://www.verisign.com/"); <br /> httpclient.executeMethod(httpget);<br /> System.out.println(httpget.getStatusLine().toString());</div> <p>錛屽鏋滈氳繃闇瑕佹巿鏉冪殑浠g悊錛屽垯濡備笅錛?/p> <div id="zxnxpvt" class="code">HttpClient httpclient = new HttpClient();<br /> httpclient.getHostConfiguration().setProxy("myproxyhost", 8080);<br /> httpclient.getState().setProxyCredentials("my-proxy-realm", " myproxyhost",<br /> new UsernamePasswordCredentials("my-proxy-username", "my-proxy-password"));<br /> GetMethod httpget = new GetMethod("https://www.verisign.com/"); <br /> httpclient.executeMethod(httpget);<br /> System.out.println(httpget.getStatusLine().toString());</div> <p><br /> 銆銆鍦℉ttpClient涓畾鍒禨SL鐨勬楠ゅ涓嬶細</p> <ol> <li>鎻愪緵浜嗕竴涓疄鐜頒簡org.apache.commons.httpclient.protocol.SecureProtocolSocketFactory鎺ュ彛鐨剆ocket factory銆傝繖涓?socket factory璐熻矗鎵撲竴涓埌鏈嶅姟鍣ㄧ殑绔彛錛屼嬌鐢ㄦ爣鍑嗙殑鎴栫涓夋柟鐨凷SL鍑芥暟搴擄紝騫惰繘琛岃薄榪炴帴鎻℃墜絳夊垵濮嬪寲鎿嶄綔銆傞氬父鎯呭喌涓嬶紝榪欎釜鍒濆鍖栨搷浣滃湪绔彛琚垱寤烘椂鑷姩榪涜鐨勩? <li>瀹炰緥鍖栦竴涓猳rg.apache.commons.httpclient.protocol.Protocol瀵硅薄銆傚垱寤鴻繖涓疄渚嬫椂錛岄渶瑕佷竴涓悎娉曠殑鍗忚綾誨瀷(濡俬ttps)錛屼竴涓畾鍒剁殑socket factory錛屽拰涓涓粯璁ょ殑绔腑鍙?濡俬ttps鐨?43绔彛). <div id="vhhhbzj" class="code">Protocol myhttps = new Protocol("https", new MySSLSocketFactory(), 443);</div> 鐒跺悗錛岃繖涓疄渚嬪彲琚緗負鍗忚鐨勫鐞嗗櫒銆? <div id="pxhphfp" class="code">HttpClient httpclient = new HttpClient();<br /> httpclient.getHostConfiguration().setHost("www.whatever.com", 443, myhttps);<br /> GetMethod httpget = new GetMethod("/");<br /> httpclient.executeMethod(httpget);</div> <li>閫氳繃璋冪敤Protocol.registerProtocol鏂規硶錛屽皢姝ゅ畾鍒剁殑瀹炰緥錛屾敞鍐屼負鏌愪竴鐗瑰畾鍗忚鐨勯粯璁ょ殑澶勭悊鍣ㄣ傜敱姝わ紝鍙互寰堟柟渚垮湴瀹氬埗鑷繁鐨勫崗璁被鍨?濡俶yhttps)銆? <div id="7prb9bv" class="code">Protocol.registerProtocol("myhttps", <br /> new Protocol("https", new MySSLSocketFactory(), 9443));<br /> ...<br /> HttpClient httpclient = new HttpClient();<br /> GetMethod httpget = new GetMethod("myhttps://www.whatever.com/");<br /> httpclient.executeMethod(httpget);</div> 濡傛灉鎯崇敤鑷繁瀹氬埗鐨勫鐞嗗櫒鍙栦唬https榛樿鐨勫鐞嗗櫒錛屽彧闇瑕佸皢鍏舵敞鍐屼負"https"鍗沖彲銆? <div id="lnffzjh" class="code">Protocol.registerProtocol("https", <br /> new Protocol("https", new MySSLSocketFactory(), 443));<br /> HttpClient httpclient = new HttpClient();<br /> GetMethod httpget = new GetMethod("https://www.whatever.com/");<br /> httpclient.executeMethod(httpget);</div> </li> </ol> <p><br /> 銆銆宸茬煡鐨勯檺鍒跺拰闂</p> <ol> <li>鎸佺畫鐨凷SL榪炴帴鍦⊿un鐨勪綆浜?.4JVM涓婁笉鑳藉伐浣滐紝榪欐槸鐢變簬JVM鐨刡ug閫犳垚銆? <li>閫氳繃浠g悊璁塊棶鏈嶅姟鍣ㄦ椂錛岄潪鎶㈠厛璁よ瘉錛?Non-preemptive authentication錛変細澶辮觸錛岃繖鏄敱浜嶩ttpClient鐨勮璁$己闄烽犳垚鐨勶紝浠ュ悗鐨勭増鏈腑浼氫慨鏀廣?</li> </ol> <p><br /> 銆銆閬囧埌闂鐨勫鐞?br /> 銆銆寰堝闂錛岀壒鍒槸鍦╦vm浣庝簬1.4鏃訛紝鏄敱jsse鐨勫畨瑁呴犳垚鐨勩?br /> 銆銆涓嬮潰鐨勪唬鐮侊紝鍙綔涓烘渶緇堢殑媯嫻嬫墜孌點?/p> <div id="9tvtd97" class="code">import java.io.BufferedReader;<br /> import java.io.InputStreamReader;<br /> import java.io.OutputStreamWriter;<br /> import java.io.Writer;<br /> import java.net.Socket; import javax.net.ssl.SSLSocketFactory; public class Test {<br /> <br /> public static final String TARGET_HTTPS_SERVER = "www.verisign.com"; <br /> public static final int TARGET_HTTPS_PORT = 443; <br /> <br /> public static void main(String[] args) throws Exception {<br /> <br /> Socket socket = SSLSocketFactory.getDefault().<br /> createSocket(TARGET_HTTPS_SERVER, TARGET_HTTPS_PORT);<br /> try {<br /> Writer out = new OutputStreamWriter(<br /> socket.getOutputStream(), "ISO-8859-1");<br /> out.write("GET / HTTP/1.1\r\n"); <br /> out.write("Host: " + TARGET_HTTPS_SERVER + ":" + <br /> TARGET_HTTPS_PORT + "\r\n"); <br /> out.write("Agent: SSL-TEST\r\n"); <br /> out.write("\r\n"); <br /> out.flush(); <br /> BufferedReader in = new BufferedReader(<br /> new InputStreamReader(socket.getInputStream(), "ISO-8859-1"));<br /> String line = null;<br /> while ((line = in.readLine()) != null) {<br /> System.out.println(line);<br /> }<br /> } finally {<br /> socket.close(); <br /> }<br /> }<br /> }</div> <p>1銆乭ttpclient鐨勫綰跨▼澶勭悊</p> <p><br /> 銆銆浣跨敤澶氱嚎紼嬬殑涓昏鐩殑錛屾槸涓轟簡瀹炵幇騫惰鐨勪笅杞姐傚湪httpclient榪愯鐨勮繃紼嬩腑錛屾瘡涓猦ttp鍗忚鐨勬柟娉曪紝浣跨敤涓涓狧ttpConnection瀹炰緥銆傜敱浜庤繛鎺ユ槸涓縐嶆湁闄愮殑璧勬簮錛屾瘡涓繛鎺ュ湪鏌愪竴鏃跺埢鍙兘渚涗竴涓嚎紼嬪拰鏂規硶浣跨敤錛屾墍浠ラ渶瑕佺‘淇濆湪闇瑕佹椂姝g‘鍦板垎閰嶈繛鎺ャ侶ttpClient閲囩敤浜嗕竴縐嶇被浼糺dbc榪炴帴姹犵殑鏂規硶鏉ョ鐞嗚繛鎺ワ紝榪欎釜綆$悊宸ヤ綔鐢?MultiThreadedHttpConnectionManager瀹屾垚銆?/p> <div id="9zhz7fx" class="code">MultiThreadedHttpConnectionManager connectionManager = <br /> new MultiThreadedHttpConnectionManager();<br /> HttpClient client = new HttpClient(connectionManager);</div> <p>姝ゆ槸錛宑lient鍙互鍦ㄥ涓嚎紼嬩腑琚敤鏉ユ墽琛屽涓柟娉曘傛瘡嬈¤皟鐢℉ttpClient.executeMethod() 鏂規硶錛岄兘浼氬幓閾炬帴綆$悊鍣ㄧ敵璇蜂竴涓繛鎺ュ疄渚嬶紝鐢寵鎴愬姛榪欎釜閾炬帴瀹炰緥琚鍑?checkout)錛岄殢涔嬪湪閾炬帴浣跨敤瀹屽悗蹇呴』褰掕繕綆$悊鍣ㄣ傜鐞嗗櫒鏀寔涓や釜璁劇疆錛?</p> <table border="1"> <tbody> <tr> <td>maxConnectionsPerHost</td> <td>姣忎釜涓繪満鐨勬渶澶у茍琛岄摼鎺ユ暟錛岄粯璁や負2</td> </tr> <tr> <td>maxTotalConnections</td> <td>瀹㈡埛绔誨茍琛岄摼鎺ユ渶澶ф暟錛岄粯璁や負20</td> </tr> </tbody> </table> <br /> 銆銆綆$悊鍣ㄩ噸鏂板埄鐢ㄩ摼鎺ユ椂錛岄噰鍙栨棭褰掕繕鑰呭厛閲嶇敤鐨勬柟寮忥紙least recently used approach錛夈?br /> 銆銆鐢變簬鏄嬌鐢℉ttpClient鐨勭▼搴忚屼笉鏄疕ttpClient鏈韓鏉ヨ鍙栧簲絳斿寘鐨勪富浣擄紝鎵浠ttpClient鏃犳硶鍐沖畾浠涔堟椂闂磋繛鎺ヤ笉鍐嶄嬌鐢ㄤ簡錛岃繖涔熷氨瑕佹眰鍦ㄨ瀹屽簲絳斿寘鐨勪富浣撳悗蹇呴』鎵嬪伐鏄懼紡鍦拌皟鐢╮eleaseConnection()鏉ラ噴鏀劇敵璇風殑閾炬帴銆? <p> <div id="vfxfrj9" class="code">MultiThreadedHttpConnectionManager connectionManager = new MultiThreadedHttpConnectionManager();<br /> HttpClient client = new HttpClient(connectionManager);<br /> ...<br /> // 鍦ㄦ煇涓嚎紼嬩腑銆?br /> GetMethod get = new GetMethod("http://jakarta.apache.org/");<br /> try {<br /> client.executeMethod(get);<br /> // print response to stdout<br /> System.out.println(get.getResponseBodyAsStream());<br /> } finally {<br /> // be sure the connection is released back to the connection <br /> // manager<br /> get.releaseConnection();<br /> }</div> <p>瀵規瘡涓涓狧ttpClient.executeMethod欏繪湁涓涓猰ethod.releaseConnection()涓庝箣鍖歸厤.</p> <h4>12銆丠TTP鏂規硶</h4> <p><br /> 銆銆HttpClient鏀寔鐨凥TTP鏂規硶鏈?縐嶏紝涓嬮潰鍒嗚堪涔嬨?br /> <br /> 銆銆1銆丱ptions<br /> <br /> 銆銆HTTP鏂規硶Options鐢ㄦ潵鍚戞湇鍔″櫒鍙戦佽姹傦紝甯屾湜鑾峰緱閽堝鐢辮姹俇RL(request url)鏍囧織鐨勮祫婧愬湪璇鋒眰/搴旂瓟鐨勯氫俊榪囩▼鍙互浣跨敤鐨勫姛鑳介夐」銆傞氳繃榪欎釜鏂規硶錛屽鎴風鍙互鍦ㄩ噰鍙栧叿浣撹鍔ㄤ箣鍓嶏紝灝卞彲瀵規煇涓璧勬簮鍐沖畾閲囧彇浠涔堝姩浣滃拰/鎴栦互鍙婁竴浜涘繀瑕佹潯浠訛紝鎴栬呬簡瑙f湇鍔″櫒鎻愪緵鐨勫姛鑳姐傝繖涓柟娉曟渶鍏稿瀷鐨勫簲鐢紝灝辨槸鐢ㄦ潵鑾峰彇鏈嶅姟鍣ㄦ敮鎸佸摢浜汬TTP鏂規硶銆?br /> 銆銆HttpClient涓湁涓涓被鍙玂ptionsMethod錛屾潵鏀寔榪欎釜HTTP鏂規硶錛屽埄鐢ㄨ繖涓被鐨刧etAllowedMethods鏂規硶錛屽氨鍙互寰堢畝鍗曞湴瀹炵幇涓婅堪鐨勫吀鍨嬪簲鐢ㄣ?/p> <div id="vlddvfh" class="code">OptionsMethod options = new OptionsMethod("http://jakarta.apache.org");<br /> // 鎵ц鏂規硶騫跺仛鐩稿簲鐨勫紓甯稿鐞?br /> ...<br /> Enumeration allowedMethods = options.getAllowedMethods();<br /> options.releaseConnection();</div> <p><br /> 銆銆2銆丟et<br /> <br /> 銆銆 HTTP鏂規硶GET鐢ㄦ潵鍙栧洖璇鋒眰URI錛坮equest-URI錛夋爣蹇楃殑浠諱綍淇℃伅錛堜互瀹炰綋(entity)鐨勫艦寮忥級錛?get"榪欎釜鍗曡瘝鏈剰灝辨槸”鑾峰彇“鐨勬剰鎬濄傚鏋滆姹俇RI鎸囧悜鐨勪竴涓暟鎹鐞嗚繃紼嬶紝閭h繖涓繃紼嬬敓鎴愮殑鏁版嵁錛屽湪搴旂瓟涓互瀹炰綋鐨勫艦寮忚榪斿洖錛岃屼笉鏄皢榪欎釜榪囩▼鐨勪唬鐮佺殑榪斿洖銆?br /> 銆銆濡傛灉HTTP鍖呬腑鍚湁If-ModifiedSince, If-Unmodified-Since, If-Match, If-None-Match, 鎴?If-Range絳夊ご瀛楁錛屽垯GET涔熷氨鍙樻垚浜?#8221;鏉′歡GET“錛屽嵆鍙湁婊¤凍涓婅堪瀛楁鎻忚堪鐨勬潯浠剁殑瀹炰綋鎵嶈鍙栧洖錛岃繖鏍峰彲浠ュ噺灝戜竴浜涢潪蹇呴渶鐨勭綉緇滀紶杈擄紝鎴栬呭噺灝戜負鑾峰彇鏌愪竴璧勬簮鐨勫嬈¤姹傦紙濡傜涓嬈℃鏌ワ紝絎簩嬈′笅杞斤級銆傦紙涓鑸殑嫻忚鍣紝閮芥湁涓涓復鏃剁洰褰曪紝鐢ㄦ潵緙撳瓨涓浜涚綉欏典俊鎭紝褰撳啀嬈℃祻瑙堟煇涓〉闈㈢殑鏃跺欙紝鍙笅杞介偅浜涗慨鏀硅繃鐨勫唴瀹癸紝浠ュ姞蹇祻瑙堥熷害錛屽氨鏄繖涓亾鐞嗐傝嚦浜庢鏌ワ紝鍒欏父鐢ㄦ瘮GET鏇村ソ鐨勬柟娉旽EAD鏉ュ疄鐜般傦級濡傛灉HTTP鍖呬腑鍚湁Range澶村瓧孌碉紝閭d箞璇鋒眰URI鎸囧畾鐨勫疄浣撲腑錛屽彧鏈夊喅瀹氳寖鍥存潯浠剁殑閭i儴鍒嗘墠琚彇鍥炴潵銆傦紙鐢ㄨ繃澶氱嚎紼嬩笅杞藉伐鍏風殑鏈嬪弸錛屽彲鑳芥瘮杈冨鏄撶悊瑙h繖涓鐐癸級<br /> 銆銆榪欎釜鏂規硶鐨勫吀鍨嬪簲鐢紝鐢ㄦ潵浠巜eb鏈嶅姟鍣ㄤ笅杞芥枃妗c侶ttpClient瀹氫箟浜嗕竴涓被鍙獹etMethod鏉ユ敮鎸佽繖涓柟娉曪紝鐢℅etMethod綾諱腑getResponseBody, getResponseBodyAsStream 鎴?getResponseBodyAsString鍑芥暟灝卞彲浠ュ彇鍒板簲絳斿寘鍖呬綋涓殑鏂囨。錛堝HTML欏甸潰錛変俊鎭傝繖榪欎笁涓嚱鏁頒腑錛実etResponseBodyAsStream閫氬父鏄渶濂界殑鏂規硶錛屼富瑕佹槸鍥犱負瀹冨彲浠ラ伩鍏嶅湪澶勭悊涓嬭澆鐨勬枃妗d箣鍓嶇紦瀛樻墍鏈夌殑涓嬭澆鐨勬暟鎹?/p> <div id="hfnlntt" class="code">GetMethod get = new GetMethod("http://jakarta.apache.org");<br /> // 鎵ц鏂規硶錛屽茍澶勭悊澶辮觸鐨勮姹?<br /> ...<br /> InputStream in = get.getResponseBodyAsStream();<br /> // 鍒╃敤杈撳叆嫻佹潵澶勭悊淇℃伅銆?br /> get.releaseConnection();</div> <p><br /> 銆銆瀵笹etMethod鐨勬渶甯歌鐨勪笉姝g‘鐨勪嬌鐢紝鏄病鏈夊皢鍏ㄩ儴鐨勫簲絳斾富浣撶殑鏁版嵁璇誨嚭鏉ャ傝繕鏈夛紝蹇呴』娉ㄦ剰瑕佹墜宸ユ槑紜湴灝嗛摼鎺ラ噴鏀俱?br /> <br /> 銆銆3銆丠ead<br /> <br /> 銆銆HTTP鐨凥ead鏂規硶錛屼笌Get鏂規硶瀹屽叏涓鑷達紝鍞竴鐨勫樊鍒槸鏈嶅姟鍣ㄤ笉鑳藉湪搴旂瓟鍖呬腑鍖呭惈涓諱綋(message-body)錛岃屼笖涓瀹氫笉鑳藉寘鍚富浣撱備嬌鐢ㄨ繖涓柟娉曪紝鍙互浣垮緱瀹㈡埛鏃犻渶灝嗚祫婧愪笅杞藉洖灝卞彲灝變互寰楀埌涓浜涘叧浜庡畠鐨勫熀鏈俊鎭傝繖涓柟娉曞父鐢ㄦ潵媯鏌ヨ秴閾劇殑鍙闂т互鍙婅祫婧愭渶榪戞湁娌℃湁琚慨鏀廣?br /> 銆銆HTTP鐨刪ead鏂規硶鏈鍏稿瀷鐨勫簲鐢紝鏄幏鍙栬祫婧愮殑鍩烘湰淇℃伅銆侶ttpClient瀹氫箟浜咹eadMethod綾繪敮鎸佽繖涓柟娉曪紝HeadMethod綾諱笌鍏跺畠*Method綾諱竴鏍鳳紝鐢?getResponseHeaders()鍙栧洖澶撮儴淇℃伅錛岃屾病鏈夎嚜宸辯殑鐗規畩鏂規硶銆?/p> <div id="lvvfn9l" class="code">HeadMethod head = new HeadMethod("http://jakarta.apache.org");<br /> // 鎵ц鏂規硶錛屽茍澶勭悊澶辮觸鐨勮姹?<br /> ...<br /> // 鍙栧洖搴旂瓟鍖呯殑澶村瓧孌典俊鎭?<br /> Header[] headers = head.getResponseHeaders(); // 鍙彇鍥炴渶鍚庝慨鏀規棩鏈熷瓧孌電殑淇℃伅.<br /> String lastModified = head.getResponseHeader("last-modified").getValue();</div> <p><br /> <br /> 銆銆4銆丳ost<br /> <br /> 銆銆Post鍦ㄨ嫳鏂囨湁“媧鵑┗”鐨勬剰鎬濓紝HTTP鏂規硶POST灝辨槸瑕佹眰鏈嶅姟鍣ㄦ帴鍙楄姹傚寘涓殑瀹炰綋錛屽茍灝嗗叾浣滀負璇鋒眰URI鐨勪笅灞炶祫婧愩備粠鏈川涓婅錛岃繖鎰忓懗鐫鏈嶅姟鍣ㄨ淇濆瓨榪欎釜瀹炰綋淇℃伅錛岃屼笖閫氬父鐢辨湇鍔″櫒绔殑紼嬪簭榪涜澶勭悊銆侾ost鏂規硶鐨勮璁℃剰鍥撅紝鏄浠ヤ竴縐嶇粺涓鐨勬柟寮忓疄鐜頒笅鍒楀姛鑳斤細</p> <ol> <li>瀵瑰凡鏈夌殑璧勬簮鍋氳瘎娉? <li>灝嗕俊鎭彂甯冨埌BBS銆佹柊闂葷粍銆侀偖浠跺垪琛紝鎴栫被浼肩殑鏂囩珷緇勪腑 <li>灝嗕竴鍧楁暟鎹紝鎻愪氦緇欐暟鎹鐞嗚繘紼? <li>閫氳繃榪藉姞鎿嶄綔錛屾潵鎵╁睍涓涓暟鎹簱 </li> </ol> <p>銆銆榪欎簺閮芥搷浣滄湡寰呯潃鍦ㄦ湇鍔″櫒绔駭鐢熶竴瀹氱殑“鍓綔鐢?#8221;錛屽淇敼浜嗘暟鎹簱絳夈?br /> 銆銆HttpClient瀹氫箟PostMethod綾諱互鏀寔璇TTP鏂規硶錛屽湪httpclient涓紝浣跨敤post鏂規硶鏈変袱涓熀鏈殑姝ラ錛氫負璇鋒眰鍖呭噯澶囨暟鎹紝鐒跺悗璇誨彇鏈嶅姟鍣ㄦ潵鐨勫簲絳斿寘鐨勪俊鎭傞氳繃璋冪敤 setRequestBody()鍑芥暟錛屾潵涓鴻姹傚寘鎻愪緵鏁版嵁錛屽畠鍙互鎺ユ敹涓夌被鍙傛暟錛氳緭鍏ユ祦銆佸悕鍊煎鏁扮粍鎴栧瓧絎︿覆銆傝嚦浜庤鍙栧簲絳斿寘闇瑕佽皟鐢?getResponseBody* 閭d竴緋誨垪鐨勬柟娉曪紝涓嶨ET鏂規硶澶勭悊搴旂瓟鍖呯殑鏂規硶鐩稿悓銆?br /> 銆銆甯歌闂鏄紝娌℃湁灝嗗叏閮ㄥ簲絳旇鍙栵紙鏃犺瀹冨紼嬪簭鏄惁鏈夌敤錛夛紝鎴栨病鏈夐噴鏀鵑摼鎺ヨ祫婧愩?/p> <img src ="http://www.tkk7.com/jzone/aggbug/309594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2010-01-14 23:08 <a href="http://www.tkk7.com/jzone/articles/309594.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>java List 鍒嗛〉搴旂敤錛堜簩錛?/title><link>http://www.tkk7.com/jzone/articles/308885.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Sat, 09 Jan 2010 18:22:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/308885.html</guid><description><![CDATA[     鎽樿: 搴旂敤綾伙細 package com.Gavin.tools.util; import java.util.*; /** *//**  * 涓篖ist鍒嗛〉  * 鏍峰紡姣旇緝綆鍗曪紝閫傚悎WAP浣跨敤錛岀洿鎺ヨ緭鍑洪〉鐮佸埌欏甸潰  */ public class PagerUtil {...  <a href='http://www.tkk7.com/jzone/articles/308885.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/jzone/aggbug/308885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2010-01-10 02:22 <a href="http://www.tkk7.com/jzone/articles/308885.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>java List 鍒嗛〉搴旂敤錛堜竴錛?/title><link>http://www.tkk7.com/jzone/articles/308842.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Sat, 09 Jan 2010 06:35:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/308842.html</guid><description><![CDATA[     鎽樿: 搴旂敤綾伙細 package com.Gavin.tools.util; /** *//**    * List鍒嗛〉  * 瀹炵幇錛氬埄鐢↙ist鐨勮幏鍙栧瓙List鏂規硶錛屽疄鐜板List鐨勫垎欏? * @author 鏄炬  * @date 2010-1-8...  <a href='http://www.tkk7.com/jzone/articles/308842.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/jzone/aggbug/308842.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2010-01-09 14:35 <a href="http://www.tkk7.com/jzone/articles/308842.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>java 鏈夋晥鐨勯槻姝QL娉ㄥ叆http://www.tkk7.com/jzone/articles/307959.htmlGavin.leeGavin.leeThu, 31 Dec 2009 16:38:00 GMThttp://www.tkk7.com/jzone/articles/307959.html褰掔撼涓涓嬶紝涓昏鏈変互涓嬪嚑鐐癸細
1.姘歌繙涓嶈淇′換鐢ㄦ埛鐨勮緭鍏ャ傚鐢ㄦ埛鐨勮緭鍏ヨ繘琛屾牎楠岋紝鍙互閫氳繃姝e垯琛ㄨ揪寮忥紝鎴栭檺鍒墮暱搴︼紱瀵瑰崟寮曞彿鍜屽弻"-"榪涜杞崲絳夈?
2.姘歌繙涓嶈浣跨敤鍔ㄦ佹嫾瑁卻ql錛屽彲浠ヤ嬌鐢ㄥ弬鏁板寲鐨剆ql鎴栬呯洿鎺ヤ嬌鐢ㄥ瓨鍌ㄨ繃紼嬭繘琛屾暟鎹煡璇㈠瓨鍙栥?
3.姘歌繙涓嶈浣跨敤綆$悊鍛樻潈闄愮殑鏁版嵁搴撹繛鎺ワ紝涓烘瘡涓簲鐢ㄤ嬌鐢ㄥ崟鐙殑鏉冮檺鏈夐檺鐨勬暟鎹簱榪炴帴銆?
4.涓嶈鎶婃満瀵嗕俊鎭洿鎺ュ瓨鏀撅紝鍔犲瘑鎴栬卙ash鎺夊瘑鐮佸拰鏁忔劅鐨勪俊鎭?
5.搴旂敤鐨勫紓甯鎬俊鎭簲璇ョ粰鍑哄敖鍙兘灝戠殑鎻愮ず錛屾渶濂戒嬌鐢ㄨ嚜瀹氫箟鐨勯敊璇俊鎭鍘熷閿欒淇℃伅榪涜鍖呰銆?

鍙傝冿細
http://msdn.microsoft.com/en-us/magazine/cc163917.aspx
http://www.unixwiz.net/techtips/sql-injection.html
http://www.nextgenss.com/papers/more_advanced_sql_injection.pdf
http://www.securiteam.com/securityreviews/5DP0N1P76E.html
http://xkcd.com/327/
http://ferruh.mavituna.com/makale/sql-injection-cheatsheet/


http://bbs.xiakexing.com/cgi-bin/topic.cgi?forum=34&topic=18&show=0
http://www.cnblogs.com/iloveu/archive/2009/03/17/1414145.html
http://dang.javaeye.com/blog/338367



Gavin.lee 2010-01-01 00:38 鍙戣〃璇勮
]]>
java clonehttp://www.tkk7.com/jzone/articles/307738.htmlGavin.leeGavin.leeWed, 30 Dec 2009 04:27:00 GMThttp://www.tkk7.com/jzone/articles/307738.htmlhttp://lavasoft.blog.51cto.com/62575/43480

Gavin.lee 2009-12-30 12:27 鍙戣〃璇勮
]]>
Java 搴忓垪鍖栦笌鍙嶅簭鍒楀寲http://www.tkk7.com/jzone/articles/307577.htmlGavin.leeGavin.leeMon, 28 Dec 2009 16:39:00 GMThttp://www.tkk7.com/jzone/articles/307577.htmlhttp://blog.csdn.net/longronglin/archive/2009/02/09/3871682.aspx

Gavin.lee 2009-12-29 00:39 鍙戣〃璇勮
]]>
Junit 鍗曞厓嫻嬭瘯http://www.tkk7.com/jzone/articles/307576.htmlGavin.leeGavin.leeMon, 28 Dec 2009 16:38:00 GMThttp://www.tkk7.com/jzone/articles/307576.htmlhttp://blog.csdn.net/longronglin/archive/2008/04/15/2295237.aspx

Gavin.lee 2009-12-29 00:38 鍙戣〃璇勮
]]>
鍘嬬緝 XML 鏂囦歡浠ヤ究鏈夋晥鍦頒紶杈?/title><link>http://www.tkk7.com/jzone/articles/307561.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Mon, 28 Dec 2009 13:32:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/307561.html</guid><description><![CDATA[<a >http://www.ibm.com/developerworks/cn/xml/x-tipcomp.html</a> <img src ="http://www.tkk7.com/jzone/aggbug/307561.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-12-28 21:32 <a href="http://www.tkk7.com/jzone/articles/307561.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Java ClassLoader 綾誨姞杞界殑瀛︿範http://www.tkk7.com/jzone/articles/307447.htmlGavin.leeGavin.leeSun, 27 Dec 2009 11:51:00 GMThttp://www.tkk7.com/jzone/articles/307447.html

Gavin.lee 2009-12-27 19:51 鍙戣〃璇勮
]]>
浣跨敤 XStream 鍦?JavaBean 涓?XML/JSON 涔嬮棿鐩鎬簰杞崲錛堟憳錛?/title><link>http://www.tkk7.com/jzone/articles/307446.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Sun, 27 Dec 2009 11:40:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/307446.html</guid><description><![CDATA[<a href="http://www.tkk7.com/Unmi/archive/2009/08/11/290710.html">http://www.tkk7.com/Unmi/archive/2009/08/11/290710.html</a> <img src ="http://www.tkk7.com/jzone/aggbug/307446.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-12-27 19:40 <a href="http://www.tkk7.com/jzone/articles/307446.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍒╃敤java鏋勫緩http鏈嶅姟鍣紙鎽橈級http://www.tkk7.com/jzone/articles/307398.htmlGavin.leeGavin.leeSat, 26 Dec 2009 16:12:00 GMThttp://www.tkk7.com/jzone/articles/307398.html闃呰鍏ㄦ枃

Gavin.lee 2009-12-27 00:12 鍙戣〃璇勮
]]>
java 瀹炵幇URL閲嶅啓http://www.tkk7.com/jzone/articles/307331.htmlGavin.leeGavin.leeFri, 25 Dec 2009 17:56:00 GMThttp://www.tkk7.com/jzone/articles/307331.html

Gavin.lee 2009-12-26 01:56 鍙戣〃璇勮
]]>
HttpsURLConnection 瀹夊叏浼犺緭錛圚TTPS--Secure Hypertext Transfer Protocol-瀹夊叏瓚呮枃鏈紶杈撳崗璁級http://www.tkk7.com/jzone/articles/307329.htmlGavin.leeGavin.leeFri, 25 Dec 2009 16:56:00 GMThttp://www.tkk7.com/jzone/articles/307329.html闃呰鍏ㄦ枃

Gavin.lee 2009-12-26 00:56 鍙戣〃璇勮
]]>
Map<K, V> 閬嶅巻http://www.tkk7.com/jzone/articles/306869.htmlGavin.leeGavin.leeTue, 22 Dec 2009 01:21:00 GMThttp://www.tkk7.com/jzone/articles/306869.htmlpackage com.Gavin.tools.util;

import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/**  
 * 
@author Gavin.lee  
 * @date 2009-05-04 11:45am
 * 
@param <K>  
 * 
@param <V>  
 
*/

public class MapUtil<K, V> {
    
    
public void filter1(Map map) {
        Iterator it 
= map.entrySet().iterator();
        
while (it.hasNext()) {
            Map.Entry me 
= (Map.Entry) it.next();
            System.out.println(
"key:" + me.getKey() + ",value:" + me.getValue());
        }

        System.out.println(
"************************************filter1");
    }


    
public void filter2(Map map) {
        Hashtable
<String, String> ht = new Hashtable<String, String>();
        ht.put(
"Gavin""Kathy");
        ht.put(
"鏉ㄨ繃""灝忛緳濂?/span>");
        
        
for (Map.Entry<String, String> me : ht.entrySet()) {
            System.out.println(
"key:" + me.getKey() + ",value:" + me.getValue());
        }

        System.out.println(
"************************************filter2");
    }


    
public void filter3(Map map) {
        Iterator it 
= map.keySet().iterator();
        
while (it.hasNext()) {
            String key;
            key 
= (String) it.next();
            System.out.println(
"key:" + key + ",value:" + map.get(key));
        }

        System.out.println(
"************************************filter3");
    }


    
public void filter4(Map map) {
        
for (Object o : map.keySet()) {
            System.out.println(
"key:" + o + ",value:" + map.get(o));
        }

        System.out.println(
"************************************filter4");
    }

    
    
/**  
     * 鑾峰緱Map涓壒瀹歷alue鐨刱ey鍊?nbsp;    
     * 
@param map  
     * 
@param value  
     * 
@return  
     
*/

    
public K getMapKeyFromValue(Map<K, V> map, V value) {
        Set set 
= map.keySet();
        K key 
= null;
        Iterator it 
= set.iterator();
        
while (it.hasNext()) {
            key 
= (K) it.next();
            
if (value.equals(map.get(key))) {
                
return key;
            }

        }

        
return null;
    }


}



Gavin.lee 2009-12-22 09:21 鍙戣〃璇勮
]]>
Apache Common HttpClient鐨勪嬌鐢?/title><link>http://www.tkk7.com/jzone/articles/305967.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Mon, 14 Dec 2009 14:38:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/305967.html</guid><description><![CDATA[     鎽樿: HttpClient 鏄?Apache Jakarta Common 涓嬬殑瀛愰」鐩紝鍙互鐢ㄦ潵鎻愪緵楂樻晥鐨勩佹渶鏂扮殑銆佸姛鑳戒赴瀵岀殑鏀寔 HTTP 鍗忚鐨勫鎴風緙栫▼宸ュ叿鍖咃紝騫朵笖瀹冩敮鎸?HTTP 鍗忚鏈鏂扮殑鐗堟湰鍜屽緩璁?HTTP 鍗忚鍙兘鏄幇鍦?Internet 涓婁嬌鐢ㄥ緱鏈澶氥佹渶閲嶈鐨勫崗璁簡錛岃秺鏉ヨ秺澶氱殑 Java 搴旂敤紼嬪簭闇瑕佺洿鎺ラ氳繃 HTTP 鍗忚鏉ヨ闂綉緇滆祫婧愩傝櫧鐒跺湪 JDK 鐨?java.net 鍖呬腑宸?..  <a href='http://www.tkk7.com/jzone/articles/305967.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/jzone/aggbug/305967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-12-14 22:38 <a href="http://www.tkk7.com/jzone/articles/305967.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Apache commons 鍚勭緇勪歡錛堟憳錛?/title><link>http://www.tkk7.com/jzone/articles/305966.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Mon, 14 Dec 2009 14:36:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/305966.html</guid><description><![CDATA[<p>鍘熸枃錛?a href="http://www.tkk7.com/fatbear/archive/2007/05/23/119346.html">http://www.tkk7.com/fatbear/archive/2007/05/23/119346.html</a> <strong><br /> Apache Commons </strong><font size="2">鏄竴涓潪甯告湁鐢ㄧ殑宸ュ叿鍖咃紝瑙e喅鍚勭瀹為檯鐨勯氱敤闂錛屼綘浼氬彂鐜板畠浠鏄綘鍐ユ濊嫤鎯蟲墍闇瑕?br /> <br /> 鐨勪笢瑗褲傚畠浠笉鏄粷涓栨鍔燂紝浣嗙‘鏄釜闅忔墜鍙敤鐨勬搾鎷挎墜錛孋ommons涓鍑猴紝闂鎵嬪埌鎿掓潵銆?/font></p> <p><font size="2">涓嬮潰鏄竴涓叏闈㈢殑綆榪拌〃錛?/font></p> <p> <table cellspacing="0" cellpadding="0" width="80%" border="1"> <tbody> <tr> <td> <p align="left"><font size="2"><strong>緇勪歡</strong></font></p> </td> <td><font size="2"><strong>璇存槑</strong></font></td> </tr> <tr> <td width="100"><font size="2"><strong>BeanUtils</strong></font></td> <td><font size="2">Commons-BeanUtils 鎻愪緵瀵?Java 鍙嶅皠鍜岃嚜鐪丄PI鐨勫寘瑁?/font></td> </tr> <tr> <td><font size="2"><strong>Betwixt</strong></font></td> <td><font size="2">Betwixt鎻愪緵灝?JavaBean 鏄犲皠鑷?XML 鏂囨。錛屼互鍙婄浉鍙嶆槧灝勭殑鏈嶅姟.</font></td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Chain</strong></font></p> </td> <td> <p align="left"><font size="2">Chain 鎻愪緵瀹炵幇緇勭粐澶嶆潅鐨勫鐞嗘祦紼嬬殑“璐d換閾炬ā寮?#8221;.</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>CLI</strong></font></p> </td> <td> <p align="left"><font size="2">CLI 鎻愪緵閽堝鍛戒護琛屽弬鏁幫紝閫夐」錛岄夐」緇勶紝寮哄埗閫夐」絳夌殑綆鍗旳PI.</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Codec</strong> </font></p> </td> <td> <p align="left"><font size="2">Codec 鍖呭惈涓浜涢氱敤鐨勭紪鐮佽В鐮佺畻娉曘傚寘鎷竴浜涜闊崇紪鐮佸櫒錛?Hex, Base64, 浠ュ強URL encoder.</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Collections</strong> </font></p> </td> <td> <p align="left"><font size="2">Commons-Collections 鎻愪緵涓涓被鍖呮潵鎵╁睍鍜屽鍔犳爣鍑嗙殑 Java Collection妗嗘灦</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Configuration</strong></font></p> </td> <td> <p align="left"><font size="2">Commons-Configuration 宸ュ叿瀵瑰悇縐嶅悇寮忕殑閰嶇疆鍜屽弬鑰冩枃浠舵彁渚涜鍙栧府鍔? </font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Daemon</strong></font></p> </td> <td> <p align="left"><font size="2">涓縐?unix-daemon-like java 浠g爜鐨勬浛浠f満鍒?/font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>DBCP</strong> </font></p> </td> <td> <p align="left"><font size="2">Commons-DBCP 鎻愪緵鏁版嵁搴撹繛鎺ユ睜鏈嶅姟 </font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>DbUtils</strong> </font></p> </td> <td> <p align="left"><font size="2">DbUtils 鏄竴涓?JDBC helper 綾誨簱錛屽畬鎴愭暟鎹簱浠誨姟鐨勭畝鍗曠殑璧勬簮娓呴櫎浠g爜. </font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Digester</strong> </font></p> </td> <td> <p align="left"><font size="2">Commons-Digester 鏄竴涓?XML-Java瀵硅薄鐨勬槧灝勫伐鍏鳳紝鐢ㄤ簬瑙f瀽 XML閰嶇疆鏂囦歡. </font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Discovery</strong></font></p> </td> <td><font size="2">Commons-Discovery 鎻愪緵宸ュ叿鏉ュ畾浣嶈祫婧?(鍖呮嫭綾? 錛岄氳繃浣跨敤鍚勭妯″紡鏉ユ槧灝勬湇鍔?寮曠敤鍚嶇О鍜岃祫婧愬悕縐?</font></td> </tr> <tr> <td> <p align="left"><font size="2"><strong>EL</strong> </font></p> </td> <td> <p align="left"><font size="2">Commons-EL 鎻愪緵鍦↗SP2.0瑙勮寖涓畾涔夌殑EL琛ㄨ揪寮忕殑瑙i噴鍣?</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>FileUpload</strong> </font></p> </td> <td> <p align="left"><font size="2">FileUpload 浣垮緱鍦ㄤ綘鍙互鍦ㄥ簲鐢ㄥ拰Servlet涓鏄撶殑鍔犲叆寮哄ぇ鍜岄珮鎬ц兘鐨勬枃浠朵笂浼犺兘鍔?</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>HttpClient</strong></font></p> </td> <td> <p align="left"><font size="2">Commons-HttpClient 鎻愪緵浜嗗彲浠ュ伐浣滀簬HTTP鍗忚瀹㈡埛绔殑涓涓鏋?</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>IO</strong></font></p> </td> <td> <p align="left"><font size="2">IO 鏄竴涓?I/O 宸ュ叿闆?</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Jelly</strong></font></p> </td> <td><font size="2">Jelly鏄竴涓熀浜?XML 鐨勮剼鏈拰澶勭悊寮曟搸銆?Jelly 鍊熼壌浜?JSP 瀹氭寚鏍囩錛孷elocity, Cocoon鍜孹doclet涓殑鑴氭湰寮曟搸鐨勮澶氫紭鐐廣侸elly 鍙互鐢ㄥ湪鍛戒護琛岋紝 Ant 鎴栬?Servlet涔嬩腑.</font></td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Jexl</strong></font></p> </td> <td><font size="2">Jexl鏄竴涓〃杈懼紡璇█錛岄氳繃鍊熼壌鏉ヨ嚜浜嶸elocity鐨勭粡楠屾墿灞曚簡JSTL瀹氫箟鐨勮〃杈懼紡璇█. </font></td> </tr> <tr> <td> <p align="left"><font size="2"><strong>JXPath</strong></font></p> </td> <td><font size="2">Commons-JXPath 鎻愪緵浜嗕嬌鐢╔path璇硶鎿嶇旱絎﹀悎Java綾誨懡鍚嶈鑼冪殑 JavaBeans鐨勫伐鍏楓備篃鏀寔 maps, DOM 鍜屽叾浠栧璞℃ā鍨? </font></td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Lang</strong></font></p> </td> <td> <p align="left"><font size="2">Commons-Lang 鎻愪緵浜嗚澶氳澶氶氱敤鐨勫伐鍏風被闆嗭紝鎻愪緵浜嗕竴浜沯ava.lang涓被鐨勬墿灞曞姛鑳?</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Latka</strong></font></p> </td> <td> <p align="left"><font size="2">Commons-Latka 鏄竴涓狧TTP 鍔熻兘嫻嬭瘯鍖咃紝鐢ㄤ簬鑷姩鍖栫殑QA,楠屾敹鍜岃“鍑忔祴璇?</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Launcher</strong></font></p> </td> <td> <p align="left"><font size="2">Launcher 緇勪歡鏄竴涓氦鍙夊鉤鍙扮殑Java 搴旂敤杞藉叆鍣ㄣ?Commons-launcher 娑堥櫎浜嗛渶瑕佹壒澶勭悊鎴栬匰hell鑴氭湰鏉ヨ澆鍏ava 綾匯?鍘熷鐨?Java 綾繪潵鑷簬Jakarta Tomcat 4.0 欏圭洰.</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Logging</strong></font></p> </td> <td> <p align="left"><font size="2">Commons-Logging 鏄竴涓悇縐?logging API瀹炵幇鐨勫寘瑁圭被. </font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Math</strong></font></p> </td> <td> <p align="left"><font size="2">Math 鏄竴涓交閲忕殑錛岃嚜鍖呭惈鐨勬暟瀛﹀拰緇熻緇勪歡錛岃В鍐充簡璁稿闈炲父閫氱敤浣嗘病鏈夊強鏃跺嚭鐜板湪Java鏍囧噯璇█涓殑瀹炶返闂.</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Modeler</strong></font></p> </td> <td> <p align="left"><font size="2">Commons-Modeler 鎻愪緵浜嗗緩妯″吋瀹笿MX瑙勮寖鐨?Mbean鐨勬満鍒?</font></p> </td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Net</strong></font></p> </td> <td><font size="2">Net 鏄竴涓綉緇滃伐鍏烽泦錛屽熀浜?NetComponents 浠g爜錛屽寘鎷?FTP 瀹㈡埛绔瓑絳? </font></td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Pool</strong></font></p> </td> <td><font size="2">Commons-Pool 鎻愪緵浜嗛氱敤瀵硅薄姹犳帴鍙o紝涓涓敤浜庡垱寤烘ā鍧楀寲瀵硅薄姹犵殑宸ュ叿鍖咃紝浠ュ強閫氬父鐨勫璞℃睜瀹炵幇.</font></td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Primitives</strong></font></p> </td> <td><font size="2">Commons-Primitives鎻愪緵浜嗕竴涓洿灝忥紝鏇村揩鍜屾洿鏄撲嬌鐢ㄧ殑瀵笿ava鍩烘湰綾誨瀷鐨勬敮鎸併傚綋鍓嶄富瑕佹槸閽堝鍩烘湰綾誨瀷鐨?collection.</font></td> </tr> <tr> <td> <p align="left"><font size="2"><strong>Validator</strong></font></p> </td> <td><font size="2">The commons-validator鎻愪緵浜嗕竴涓畝鍗曠殑錛屽彲鎵╁睍鐨勬鏋舵潵鍦ㄤ竴涓猉ML鏂囦歡涓畾涔夋牎楠屽櫒 (鏍¢獙鏂規硶)鍜屾牎楠岃鍒欍傛敮鎸佹牎楠岃鍒欑殑鍜岄敊璇秷鎭殑鍥介檯鍖?</font></td> </tr> </tbody> </table> </p> <p><font size="2">璇︾粏淇℃伅浣嶄簬錛?a ><u><font color="#0000ff">http://jakarta.apache.org/commons/index.html</font></u></a></font></p> <p><font size="2">浠ュ強<a id="_da5a5345c8dc6105_HomePageDays_DaysList__ctl1_DayItem_DayList__ctl0_TitleUrl" ><u><font color="#800080">Jakarta Commons:宸х敤綾誨拰緇勪歡</font></u></a></font></p> <img src ="http://www.tkk7.com/jzone/aggbug/305966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-12-14 22:36 <a href="http://www.tkk7.com/jzone/articles/305966.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Java璺緞闂鏈緇堣В鍐蟲柟妗堬紙鍙畾浣嶆墍鏈夎祫婧愮殑鐩稿璺緞瀵誨潃錛?/title><link>http://www.tkk7.com/jzone/articles/305753.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Sat, 12 Dec 2009 15:18:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/305753.html</guid><description><![CDATA[     鎽樿: 鎽樿嚜錛歨ttp://www.matrix.org.cn/thread.shtml?topicId=6d0bbeed-9157-11db-ab77-2bbe780ebfbf&forumId=19 Java鐨勮礬寰勯棶棰橈紝闈炲父闅炬悶銆傛渶榪戠殑宸ヤ綔娑夊強鍒板垱寤哄拰璇誨彇鏂囦歡鐨勫伐浣滐紝榪欓噷鎴戝氨緇欏ぇ瀹跺交搴曞緱瑙e喅Java璺緞闂銆?鎴戠紪鍐欎簡涓涓柟娉曪紝姣擟lassLoader.getResource(String...  <a href='http://www.tkk7.com/jzone/articles/305753.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/jzone/aggbug/305753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-12-12 23:18 <a href="http://www.tkk7.com/jzone/articles/305753.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>鍗佸洓縐岼ava寮鍙戝伐鍏?---浜嗚Вhttp://www.tkk7.com/jzone/articles/304447.htmlGavin.leeGavin.leeTue, 01 Dec 2009 14:54:00 GMThttp://www.tkk7.com/jzone/articles/304447.html 
鍘熸枃錛?a >http://www.yesky.com/471/1825471.shtml

1銆丣DK 錛圝ava Development Kit錛?br /> 2銆丣ava Workshop
3銆丯etBeans 涓嶴un Java Studio 5
4銆丅orland 鐨凧Builder
5銆丱racle 鐨凧Developer
6銆両BM鐨刅isual Age for Java
7銆丅EA 鐨?WebLogic Workshop
8銆乄ebGain 鐨刅isual Cafe for Java
9銆丮acromedia鐨凧RUN
10銆丣Creator
11銆丮icrosoft VJ++
12銆丒clipse
13銆丄nt Another Neat Tool(Ant)
14銆両ntelliJ


Gavin.lee 2009-12-01 22:54 鍙戣〃璇勮
]]>
Java:綰跨▼鍫?--緇欒嚜宸辯郴緇熶腑鐨勭嚎紼嬪懡鍚嶏紝鐒跺悗閫氳繃dump瀵熺湅浣犵殑緋葷粺http://www.tkk7.com/jzone/articles/304328.htmlGavin.leeGavin.leeMon, 30 Nov 2009 15:41:00 GMThttp://www.tkk7.com/jzone/articles/304328.html 銆銆
銆銆騫歌繍鐨勬槸錛屾湁鍑犵宸ュ叿錛屼緥濡俵ogging搴旂敤紼嬪簭鎺ュ彛錛圓PI錛夋垨鑰匤ava Debugger鍙互鐢ㄦ潵璋冭瘯Java鏈嶅姟鍣ㄧ▼搴忋傚紑鍙戣呰繕鑳戒嬌鐢ㄤ竴涓郴緇熺殑綰跨▼鍫嗗湪浠諱綍鏃跺欒瀵熺郴緇熺殑鐘舵併傘銆
銆銆
銆銆榪愯鏈嶅姟鍣紝鐒跺悗鎸塠ctrl] [/]錛屼細榪愯涓涓郴緇熺嚎紼嬪爢錛岃繖鏍峰皢杈撳嚭褰撳墠榪愯鐨勬墍鏈夌嚎紼嬶紝渚嬪錛?銆銆
銆銆銆銆
銆銆^\Full thread dump: 銆銆
銆銆
銆銆Thread-1" prio=5 tid=0x87fe0 nid=0x800013b8 waiting on monitor [0..0xbfffe9f8] 銆銆
銆銆
銆銆"Thread-0" prio=5 tid=0xafde0 nid=0x72a00 runnable [0x173f000..0x173fb48]
銆銆
銆銆at java.net.PlainSocketImpl.socketAccept(Native Method)
銆銆
銆銆at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:421)
銆銆
銆銆at java.net.ServerSocket.implAccept(ServerSocket.java:243)
銆銆
銆銆at java.net.ServerSocket.accept(ServerSocket.java:222)
銆銆
銆銆at com.generationjava.net.PortListener.run(PortListener.java:38)
銆銆
銆銆at java.lang.Thread.run(Thread.java:496) 銆銆銆
銆銆
銆銆"Signal Dispatcher" daemon prio=10 tid=0xa5f80 nid=0x52af0 waiting on monitor [0..0] 銆銆銆銆
銆銆
銆銆"Finalizer" daemon prio=8 tid=0xa46c0 nid=0x4d930 waiting on monitor [0x10a8000..0x10a8b48]
銆銆
銆銆at java.lang.Object.wait(Native Method)
銆銆
銆銆at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:108)
銆銆
銆銆at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:123)
銆銆
銆銆at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:162) 銆銆銆銆
銆銆
銆銆"Reference Handler" daemon prio=10 tid=0xa3b70 nid=0x4cca0 waiting on monitor [0x1027000..0x1027b48]
銆銆
銆銆at java.lang.Object.wait(Native Method)
銆銆
銆銆at java.lang.Object.wait(Object.java:420)
銆銆
銆銆at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:110) 銆銆銆銆
銆銆
銆銆"VM Thread" prio=5 tid=0xa2de0 nid=0x4ca20 runnable 銆銆
銆銆
銆銆"VM Periodic Task Thread" prio=10 tid=0xa56b0 nid=0x52890 waiting on monitor 銆銆
銆銆
銆銆鍚庨潰鐨勫洓涓嚎紼嬫槸鏍囧噯綰跨▼錛岃屽叾浠栫殑鍒欒窡榪愯鐨勬湇鍔″櫒紼嬪簭鏈夊叧銆傝繖涓や釜綰跨▼琚懡鍚嶄負Thread-1鍜孴hread-0錛屽亣濡傜敤Thread th = new Thread(runnable,"Server")浠f浛Thread th = new Thread(runnable)鍘誨垱寤鴻繘紼嬶紝浣犲氨鍙互鍛藉悕鑷繁瑕佸垱寤虹殑綰跨▼銆傘銆
銆銆
銆銆鍙﹀錛屽亣濡備綘璋冪敤java.lang.Thread鐨剆etName(String)鏂規硶錛屼綘涔熻兘鍛藉悕浣犵殑綰跨▼錛屽茍涓斿彲浠ュ緢杞繪槗浠庣嚎紼嬪爢鐨勮緭鍑轟腑鍙戠幇鍘熸潵鐨凾hread-0鏄湇鍔″櫒紼嬪簭銆傘銆
銆銆
銆銆"Server" prio=5 tid=0xafde0 nid=0x72a00 runnable [0x173f000..0x173fb48] 銆銆
銆銆
銆銆鑰屽師鏉ョ殑Thread-1綰跨▼鐜板湪鍙樻垚浜員hread-0銆?銆銆銆銆
銆銆
銆銆閫氳繃鍛藉悕綰跨▼鍜屽彇寰楃嚎紼嬪爢錛屽紑鍙戣呭氨鑳界湅鍒癑ava铏氭嫙鏈猴紙JVM錛夌殑鍐呴儴鐘舵併傚亣濡傛兂寰楀埌鏇村淇℃伅鐨勮瘽錛屼綘灝卞緱鍘葷爺絀禞ava Debugger浜嗐?
璧勬枡鏉ユ簮:瀛︾綉(www.xue5.com),鍘熸枃鍦板潃:http://www.xue5.com/itedu/200702/91976.html

Gavin.lee 2009-11-30 23:41 鍙戣〃璇勮
]]>
Java浠g爜瑙﹀彂鐢熸垚ThreadDumphttp://www.tkk7.com/jzone/articles/304324.htmlGavin.leeGavin.leeMon, 30 Nov 2009 15:13:00 GMThttp://www.tkk7.com/jzone/articles/304324.html
package yixun.wap.tools;

import java.util.Map;

/**  
 * 浣跨敤 Java 榪滅▼浠g爜鐢熸垚 ThreadDump. 閫傜敤浜?nbsp;JDK 1.5+.  
 * 鍙傝? {
@link ThreadgetStackTrace()}  
 * {
@link ThrowablegetStackTrace()}  
 * 
@see StackTraceElement  
 
*/

public class ThreadDumpBuilder {
    
/**  
     * 鐢熸垚騫惰繑鍥?nbsp;Thread Dump.  
     * 
@return  
     
*/

    
public String build() {
        StringBuilder output 
= new StringBuilder(1000);
        
for (Map.Entry stackTrace : Thread.getAllStackTraces().entrySet()) {
            appendThreadStackTrace(output, (Thread) stackTrace.getKey(),
                    (StackTraceElement[]) stackTrace.getValue());
        }

        
return output.toString();
    }


    
/**  
     * 澶勭悊騫惰緭鍑哄爢鏍堜俊鎭?  
     * 
@param output  
     *            杈撳嚭鍐呭  
     * 
@param thread  
     *            綰跨▼  
     * 
@param stack  
     *            綰跨▼鍫嗘爤  
     
*/

    
private void appendThreadStackTrace(StringBuilder output, Thread thread,
            StackTraceElement[] stack) 
{
        
// 蹇界暐褰撳墠綰跨▼鐨勫爢鏍堜俊鎭?nbsp;  
        if (thread.equals(Thread.currentThread())) {
            
return;
        }


        output.append(thread).append(
"<br/>");
        
for (StackTraceElement element : stack) {
            output.append(
"\t").append(element).append("\n<br/>");
        }

    }


}


鐒跺悗鍦ㄤ竴涓狫SP閲屾垨鑰匰ervlet涓換鎰忚皟鐢ㄥ嵆鍙?
<%=new ThreadDumpBuilder().build() %>
===== END OF THREAD DUMP ===============
鍙傝冭祫鏂?
1. Atlassian Confluence 3.0 綆$悊鎺у埗鍙?/pre>
2. JDK鐨凞EMO
jdk1.5.0\demo\management\FullThreadDump
鍘熸枃錛?a >http://ajava.org/course/java/13843.html 
java.lang
綾?StackTraceElement 鏂規硶錛?/pre>
 boolean  equals(Object obj)
          濡傛灉鎸囧畾鐨勫璞℃槸鍙︿竴涓?StackTraceElement 瀹炰緥錛屽茍涓旇瀵硅薄琛ㄧず鐨勬墽琛岀偣涓庤瀹炰緥鐨勭浉鍚岋紝鍒欒繑鍥?ture銆?br />  String  getClassName()
          榪斿洖綾葷殑瀹屽叏闄愬畾鍚嶏紝璇ョ被鍖呭惈鐢辮鍫嗘爤璺熻釜鍏冪礌鎵琛ㄧず鐨勬墽琛岀偣銆?br />  String  getFileName()
          榪斿洖婧愭枃浠跺悕錛岃鏂囦歡鍖呭惈鐢辮鍫嗘爤璺熻釜鍏冪礌鎵琛ㄧず鐨勬墽琛岀偣銆?br />  int  getLineNumber()
          榪斿洖婧愯鐨勮鍙鳳紝璇ヨ鍖呭惈鐢辮鍫嗘爤璇ヨ窡韙厓绱犳墍琛ㄧず鐨勬墽琛岀偣銆?br />  String  getMethodName()
          榪斿洖鏂規硶鍚嶏紝姝ゆ柟娉曞寘鍚敱璇ュ爢鏍堣窡韙厓绱犳墍琛ㄧず鐨勬墽琛岀偣銆?br />  int  hashCode()
          榪斿洖姝ゅ爢鏍堣窡韙厓绱犵殑鍝堝笇鐮佸箋?br />  boolean  isNativeMethod()
          濡傛灉鍖呭惈鐢辮鍫嗘爤璺熻釜鍏冪礌鎵琛ㄧず鐨勬墽琛岀偣鐨勬柟娉曟槸涓涓湰鏈烘柟娉曪紝鍒欒繑鍥?true銆?br />  String  toString()
          榪斿洖琛ㄧず璇ュ爢鏍堣窡韙厓绱犵殑瀛楃涓層?/pre>
 


Gavin.lee 2009-11-30 23:13 鍙戣〃璇勮
]]>JAVA綰跨▼dump鐨勫垎鏋?--- jstack pidhttp://www.tkk7.com/jzone/articles/303979.htmlGavin.leeGavin.leeFri, 27 Nov 2009 14:02:00 GMThttp://www.tkk7.com/jzone/articles/303979.html 

Java 鐨勭嚎紼?/h3>
綰跨▼鏄寚鑳界嫭绔嬩簬紼嬪簭鐨勫叾瀹冮儴鍒嗚繍琛岀殑鎵ц鍗曞厓銆?JAVA璇█鑳藉寰堝ソ鐨勫疄鐜板綰跨▼鐨勭▼搴忋傛垜浠湪璋冭瘯紼嬪簭錛屾垨鑰呭湪寮鍙戝悗鏈熼渶瑕佸仛鎬ц兘璋冧紭鐨勬椂鍊欙紝寰寰涔熼渶瑕佷簡瑙e綋鍓嶇▼搴忔鍦ㄨ繍琛岀殑綰跨▼鐨勭姸鎬侊紝姝e湪鎵ц鐨勬搷浣滐紝浠庤屽垎鏋愮郴緇熷彲鑳藉瓨鍦ㄧ殑闂銆?

鍦ㄩ槄璇繪湰鏂囦箣闂達紝搴斿 Java綰跨▼鐨勭紪紼嬪師鐞嗭紝鍚屾鏈哄埗鏈変竴瀹氫簡瑙?.

浜х敓 JAVA綰跨▼ dump


JAVA 鐨勭嚎紼?DUMP錛屽氨璞″綋鍓?JAVA榪涚▼鐨勪竴涓揩鐓э紝鎵撳嵃鍑烘墍鏈夌嚎紼嬬殑鐘舵佸拰璋冪敤鍫嗘爤錛屼互鍙?Monitor鐨勭姸鎬併傚湪涓嶅悓鐨勬搷浣滅郴緇熶笅錛屼駭鐢熺嚎紼?DUMP鐨勬柟寮忔槸涓嶅悓鐨勩?

  • ·鍦?windows鐜涓紝
            鍦ㄥ惎鍔ㄧ▼搴忕殑鎺у埗鍙伴噷鏁詫細 Ctrl - Break錛岀嚎紼嬬殑 dump浼氫駭鐢熷湪鏍囧噯杈撳嚭涓紙 緙虹渷鏍囧噯杈撳嚭灝辨槸鎺у埗鍙幫紝濡傛灉瀵硅緭鍑鴻繘琛屼簡閲嶅畾鍚戯紝鍒欒鏌ョ湅杈撳嚭鏂囦歡錛夈?
  • 鍦?unix錛?linux鍜?MacOS 鐜涓紝
            鍦ㄦ帶鍒跺彴涓暡錛?Ctrl-\錛屾垨鑰咃紝
            鐢?“kill -3 <pid>” 錛屾垨鑰?“kill – QUIT <pid>”銆?Pid鏄敤鎵鍏蟲敞鐨?JAVA榪涚▼鍙鳳紝鎮ㄥ彲浠ョ敤 “ps -ef | grep java” 鎵懼埌錛屾垨鑰呬嬌鐢?JDK 5.0涓殑 “jps -v” 鍛戒護鑾峰緱銆?
  • 鍦ㄥ悇涓搷浣滅郴緇熷鉤鍙幫紝閮藉彲浠ョ敤 JDK 5.0宸ュ叿鍖呬腑鐨?jstack <pid>

榪欓噷瑕佹敞鎰忕殑鏄細

1.     涓嶅悓鐨?JAVA铏氭満鐨勭嚎紼?DUMP鐨勫垱寤烘柟娉曞拰鏂囦歡鏍煎紡鏄笉涓鏍風殑錛屼笉鍚岀殑 JVM鐗堟湰錛?dump淇℃伅涔熸湁宸埆銆傛湰鏂囦腑錛屽彧浠?SUN鐨?hotspot JVM 5.0_06 涓轟緥銆?

2.     鍦ㄥ疄闄呰繍琛屼腑錛屽線寰涓嬈?dump鐨勪俊鎭紝榪樹笉瓚充互紜闂銆傚緩璁駭鐢熶笁嬈?dump淇℃伅錛屽鏋滄瘡嬈?dump閮芥寚鍚戝悓涓涓棶棰橈紝鎴戜滑鎵嶇‘瀹氶棶棰樼殑鍏稿瀷鎬с?

綰跨▼鍒嗘瀽 錛?/h3>
1.     JVM 綰跨▼
鍦ㄧ嚎紼嬩腑錛屾湁涓浜?JVM鍐呴儴鐨勫悗鍙扮嚎紼嬶紝鏉ユ墽琛岃濡傚瀮鍦懼洖鏀訛紝鎴栬呬綆鍐呭瓨鐨勬嫻嬬瓑絳変換鍔★紝榪欎簺綰跨▼寰寰鍦?JVM鍒濆鍖栫殑鏃跺欏氨瀛樺湪錛屽涓嬫墍紺猴細

        "Low Memory Detector" daemon prio=10 tid=0x081465f8 nid=0x7 runnable [0x00000000..0x00000000]

        "CompilerThread0" daemon prio=10 tid=0x08143c58 nid=0x6 waiting on condition [0x00000000..0xfb5fd798]

        "Signal Dispatcher" daemon prio=10 tid=0x08142f08 nid=0x5 waiting on condition [0x00000000..0x00000000]

        "Finalizer" daemon prio=10 tid=0x08137ca0 nid=0x4 in Object.wait() [0xfbeed000..0xfbeeddb8]

        at java.lang.Object.wait(Native Method)

        - waiting on <0xef600848> (a java.lang.ref.ReferenceQueue$Lock)

        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:116)

        - locked <0xef600848> (a java.lang.ref.ReferenceQueue$Lock)

        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:132)

        at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

        "Reference Handler" daemon prio=10 tid=0x081370f0 nid=0x3 in Object.wait() [0xfbf4a000..0xfbf4aa38]

        at java.lang.Object.wait(Native Method)

        - waiting on <0xef600758> (a java.lang.ref.Reference$Lock)

        at java.lang.Object.wait(Object.java:474)

        at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)

        - locked <0xef600758> (a java.lang.ref.Reference$Lock)

        "VM Thread" prio=10 tid=0x08134878 nid=0x2 runnable

        "VM Periodic Task Thread" prio=10 tid=0x08147768 nid=0x8 waiting on condition

               

                鎴戜滑鏇村鐨勬槸瑕佽瀵熺敤鎴風駭鍒殑綰跨▼錛屽涓嬫墍紺猴細

 

        "Thread-1" prio=10 tid=0x08223860 nid=0xa waiting on condition [0xef47a000..0xef47ac38]

        at java.lang.Thread.sleep(Native Method)

        at testthread.MySleepingThread.method2(MySleepingThread.java:53)

        - locked <0xef63d600> (a testthread.MySleepingThread)

        at testthread.MySleepingThread.run(MySleepingThread.java:35)

        at java.lang.Thread.run(Thread.java:595)

 

        鎴戜滑鑳界湅鍒幫細

  • 綰跨▼鐨勭姸鎬侊細 waiting on condition
  • 綰跨▼鐨勮皟鐢ㄦ爤
  • 綰跨▼鐨勫綋鍓嶉攣浣忕殑璧勬簮錛?<0xef63d600>

        榪欎簺淇℃伅瀵規垜浠殢鍚庣殑鍒嗘瀽閮芥湁鐢ㄥ銆?

2.     綰跨▼鐨勭姸鎬佸垎鏋?

姝e鎴戜滑鍒氱湅鍒扮殑閭f牱錛岀嚎紼嬬殑鐘舵佹槸涓涓噸瑕佺殑鎸囨爣錛屽畠浼氭樉紺哄湪綰跨▼ Stacktrace鐨勫ご涓琛岀粨灝劇殑鍦版柟銆傞偅涔堢嚎紼嬪父瑙佺殑鏈夊摢浜涚姸鎬佸憿錛熺嚎紼嬪湪浠涔堟牱鐨勬儏鍐典笅浼氳繘鍏ヨ繖縐嶇姸鎬佸憿錛熸垜浠兘浠庝腑鍙戠幇浠涔堢嚎绱紵< /span>

1.1 Runnable

璇ョ姸鎬佽〃紺虹嚎紼嬪叿澶囨墍鏈夎繍琛屾潯浠訛紝鍦ㄨ繍琛岄槦鍒椾腑鍑嗗鎿嶄綔緋葷粺鐨勮皟搴︼紝鎴栬呮鍦ㄨ繍琛屻?

1.2 Wait on condition

璇ョ姸鎬佸嚭鐜板湪綰跨▼絳夊緟鏌愪釜鏉′歡鐨勫彂鐢熴傚叿浣撴槸浠涔堝師鍥狅紝鍙互緇撳悎 stacktrace鏉ュ垎鏋愩傛渶甯歌鐨勬儏鍐墊槸綰跨▼鍦ㄧ瓑寰呯綉緇滅殑璇誨啓錛屾瘮濡傚綋緗戠粶鏁版嵁娌℃湁鍑嗗濂借鏃訛紝綰跨▼澶勪簬榪欑絳夊緟鐘舵侊紝鑰屼竴鏃︽湁鏁版嵁鍑嗗濂借涔嬪悗錛岀嚎紼嬩細閲嶆柊嬋媧伙紝璇誨彇騫跺鐞嗘暟鎹傚湪 Java寮曞叆 NewIO涔嬪墠錛屽浜庢瘡涓綉緇滆繛鎺ワ紝閮芥湁涓涓搴旂殑綰跨▼鏉ュ鐞嗙綉緇滅殑璇誨啓鎿嶄綔錛屽嵆浣挎病鏈夊彲璇誨啓鐨勬暟鎹紝綰跨▼浠嶇劧闃誨鍦ㄨ鍐欐搷浣滀笂錛岃繖鏍鋒湁鍙兘閫犳垚璧勬簮嫻垂錛岃屼笖緇欐搷浣滅郴緇熺殑綰跨▼璋冨害涔熷甫鏉ュ帇鍔涖傚湪 NewIO閲岄噰鐢ㄤ簡鏂扮殑鏈哄埗錛岀紪鍐欑殑鏈嶅姟鍣ㄧ▼搴忕殑鎬ц兘鍜屽彲鎵╁睍鎬ч兘寰楀埌鎻愰珮銆?

濡傛灉鍙戠幇鏈夊ぇ閲忕殑綰跨▼閮藉湪澶勫湪 Wait on condition錛屼粠綰跨▼ stack鐪嬶紝 姝g瓑寰呯綉緇滆鍐欙紝榪欏彲鑳芥槸涓涓綉緇滅摱棰堢殑寰佸厗銆傚洜涓虹綉緇滈樆濉炲鑷寸嚎紼嬫棤娉曟墽琛屻備竴縐嶆儏鍐墊槸緗戠粶闈炲父蹇欙紝鍑?涔庢秷鑰椾簡鎵鏈夌殑甯﹀錛屼粛鐒舵湁澶ч噺鏁版嵁絳夊緟緗戠粶璇?鍐欙紱鍙︿竴縐嶆儏鍐典篃鍙兘鏄綉緇滅┖闂詫紝浣嗙敱浜庤礬鐢辯瓑闂錛屽鑷村寘鏃犳硶姝e父鐨勫埌杈俱傛墍浠ヨ緇撳悎緋葷粺鐨勪竴浜涙ц兘瑙傚療宸ュ叿鏉ョ患鍚堝垎鏋愶紝姣斿 netstat緇熻鍗曚綅鏃墮棿鐨勫彂閫佸寘鐨勬暟鐩紝濡傛灉寰堟槑鏄捐秴榪囦簡鎵鍦ㄧ綉緇滃甫瀹界殑闄愬埗 ; 瑙傚療 cpu鐨勫埄鐢ㄧ巼錛屽鏋滅郴緇熸佺殑 CPU鏃墮棿錛岀浉瀵逛簬鐢ㄦ埛鎬佺殑 CPU鏃墮棿姣斾緥杈冮珮錛涘鏋滅▼搴忚繍琛屽湪 Solaris 10騫沖彴涓婏紝鍙互鐢?dtrace宸ュ叿鐪嬬郴緇熻皟鐢ㄧ殑鎯呭喌錛屽鏋滆瀵熷埌 read/write鐨勭郴緇熻皟鐢ㄧ殑嬈℃暟鎴栬呰繍琛屾椂闂撮仴閬ラ鍏堬紱榪欎簺閮芥寚鍚戠敱浜庣綉緇滃甫瀹芥墍闄愬鑷寸殑緗戠粶鐡墮銆?

鍙﹀涓縐嶅嚭鐜?Wait on condition鐨勫父瑙佹儏鍐墊槸璇ョ嚎紼嬪湪 sleep錛岀瓑寰?sleep鐨勬椂闂村埌浜嗘椂鍊欙紝灝嗚鍞ら啋銆?

1.3 Waiting for monitor entry 鍜?in Object.wait()

鍦ㄥ綰跨▼鐨?JAVA紼嬪簭涓紝瀹炵幇綰跨▼涔嬮棿鐨勫悓姝ワ紝灝辮璇磋 Monitor銆?Monitor鏄?Java涓敤浠ュ疄鐜扮嚎紼嬩箣闂寸殑浜掓枼涓庡崗浣滅殑涓昏鎵嬫錛屽畠鍙互鐪嬫垚鏄璞℃垨鑰?Class鐨勯攣銆傛瘡涓涓璞¢兘鏈夛紝涔熶粎鏈変竴涓?monitor銆備笅 闈㈣繖涓浘錛屾弿榪頒簡綰跨▼鍜?Monitor涔嬮棿鍏崇郴錛屼互 鍙婄嚎紼嬬殑鐘舵佽漿鎹㈠浘錛?nbsp;


浠庡浘涓彲浠ョ湅鍑猴紝姣忎釜 Monitor鍦ㄦ煇涓椂鍒伙紝鍙兘琚竴涓嚎紼嬫嫢鏈夛紝璇ョ嚎紼嬪氨鏄?“Active Thread”錛岃屽叾瀹冪嚎紼嬮兘鏄?“Waiting Thread”錛屽垎鍒湪涓や釜闃熷垪 “ Entry Set”鍜?“Wait Set”閲岄潰絳夊欍傚湪 “Entry Set”涓瓑寰呯殑綰跨▼鐘舵佹槸 “Waiting for monitor entry”錛岃屽湪 “Wait Set”涓瓑寰呯殑綰跨▼鐘舵佹槸 “in Object.wait()”銆?

鍏堢湅 “Entry Set”閲岄潰鐨勭嚎紼嬨傛垜浠О琚?synchronized淇濇姢璧鋒潵鐨勪唬鐮佹涓轟復鐣屽尯銆傚綋涓涓嚎紼嬬敵璇瘋繘鍏ヤ復鐣屽尯鏃訛紝瀹冨氨榪涘叆浜?“Entry Set”闃熷垪銆傚搴旂殑 code灝卞儚錛?

synchronized(obj) {
.........

}

榪欐椂鏈変袱縐嶅彲鑳芥э細

·          璇?monitor涓嶈鍏跺畠綰跨▼鎷ユ湁錛?Entry Set閲岄潰涔熸病鏈夊叾瀹冪瓑寰呯嚎紼嬨傛湰綰跨▼鍗蟲垚涓虹浉搴旂被鎴栬呭璞$殑 Monitor鐨?Owner錛屾墽琛屼復鐣屽尯鐨勪唬鐮?

·          璇?monitor琚叾瀹冪嚎紼嬫嫢鏈夛紝鏈嚎紼嬪湪 Entry Set闃熷垪涓瓑寰呫?

鍦ㄧ涓縐嶆儏鍐典笅錛岀嚎紼嬪皢澶勪簬 “Runnable”鐨勭姸鎬侊紝鑰岀浜岀鎯呭喌涓嬶紝綰跨▼ DUMP浼氭樉紺哄浜?“waiting for monitor entry”銆傚涓嬫墍紺猴細

 

"Thread-0" prio=10 tid=0x08222eb0 nid=0x9 waiting for monitor entry [0xf927b000..0xf927bdb8]

at testthread.WaitThread.run(WaitThread.java:39)

- waiting to lock <0xef63bf08> (a java.lang.Object)

- locked <0xef63beb8> (a java.util.ArrayList)

at java.lang.Thread.run(Thread.java:595)

 

涓寸晫鍖虹殑璁劇疆錛屾槸涓轟簡淇濊瘉鍏跺唴閮ㄧ殑浠g爜鎵ц鐨勫師瀛愭у拰瀹屾暣鎬с備絾鏄洜涓轟復鐣屽尯鍦ㄤ換浣曟椂闂村彧鍏佽綰跨▼涓茶閫氳繃錛岃繖 鍜屾垜浠綰跨▼鐨勭▼搴忕殑鍒濊》鏄浉鍙嶇殑銆?濡傛灉鍦ㄥ綰跨▼鐨勭▼搴忎腑錛屽ぇ閲忎嬌鐢?synchronized錛屾垨鑰呬笉閫傚綋鐨勪嬌鐢ㄤ簡瀹冿紝浼氶犳垚澶ч噺綰跨▼鍦ㄤ復鐣屽尯鐨勫叆鍙g瓑寰咃紝閫犳垚緋葷粺鐨勬ц兘澶у箙涓嬮檷銆傚鏋滃湪綰跨▼ DUMP涓彂鐜頒簡榪欎釜鎯呭喌錛屽簲璇ュ鏌ユ簮鐮侊紝鏀硅繘紼嬪簭銆?

鐜板湪鎴戜滑鍐嶆潵鐪嬬幇鍦ㄧ嚎紼嬩負浠涔堜細榪涘叆 “Wait Set”銆傚綋綰跨▼鑾峰緱浜?Monitor錛岃繘鍏ヤ簡涓寸晫鍖轟箣鍚庯紝濡傛灉鍙戠幇綰跨▼緇х畫榪愯鐨勬潯浠舵病鏈夋弧瓚籌紝瀹冨垯璋冪敤瀵硅薄錛堜竴鑸氨鏄 synchronized 鐨勫璞★級鐨?wait() 鏂規硶錛屾斁寮冧簡 Monitor錛岃繘鍏?“Wait Set”闃熷垪銆傚彧鏈夊綋鍒殑綰跨▼鍦ㄨ瀵硅薄涓婅皟鐢ㄤ簡 notify() 鎴栬?notifyAll() 錛?“ Wait Set”闃熷垪涓嚎紼嬫墠寰楀埌鏈轟細鍘葷珵浜夛紝浣嗘槸鍙湁涓涓嚎紼嬭幏寰楀璞$殑 Monitor錛屾仮澶嶅埌榪愯鎬併傚湪 “Wait Set”涓殑綰跨▼錛?DUMP涓〃鐜頒負錛?in Object.wait()錛岀被浼間簬錛?

        "Thread-1" prio=10 tid=0x08223250 nid=0xa in Object.wait() [0xef47a000..0xef47aa38]

        at java.lang.Object.wait(Native Method)

        - waiting on <0xef63beb8> (a java.util.ArrayList)

        at java.lang.Object.wait(Object.java:474)

        at testthread.MyWaitThread.run(MyWaitThread.java:40)

        - locked <0xef63beb8> (a java.util.ArrayList)

        at java.lang.Thread.run(Thread.java:595)

 
浠旂粏瑙傚療涓婇潰鐨?DUMP淇℃伅錛屼綘浼氬彂鐜板畠鏈変互涓嬩袱琛岋細

- locked <0xef63beb8> (a java.util.ArrayList)

- waiting on <0xef63beb8> (a java.util.ArrayList)

榪欓噷闇瑕佽В閲婁竴涓嬶紝涓轟粈涔堝厛 lock浜嗚繖涓璞★紝鐒跺悗鍙?waiting on鍚屼竴涓璞″憿錛熻鎴戜滑鐪嬬湅榪欎釜綰跨▼瀵瑰簲鐨勪唬鐮侊細

 

        synchronized(obj) {
               .........
               obj.wait();
               .........
        }

綰跨▼鐨勬墽琛屼腑錛屽厛鐢?synchronized 鑾峰緱浜嗚繖涓璞$殑 Monitor錛堝搴斾簬 locked <0xef63beb8> 錛夈傚綋鎵ц鍒?obj.wait(), 綰跨▼鍗蟲斁寮冧簡 Monitor鐨勬墍鏈夋潈錛岃繘鍏?“wait set”闃熷垪錛堝搴斾簬 waiting on <0xef63beb8> 錛夈?

寰寰鍦ㄤ綘鐨勭▼搴忎腑錛屼細鍑虹幇澶氫釜綾諱技鐨勭嚎紼嬶紝浠栦滑閮芥湁鐩鎬技鐨?DUMP淇℃伅銆傝繖涔熷彲鑳芥槸姝e父鐨勩傛瘮濡傦紝鍦ㄧ▼搴忎腑錛屾湁澶氫釜鏈嶅姟綰跨▼錛岃璁℃垚浠庝竴涓槦鍒楅噷闈㈣鍙栬姹傛暟鎹傝繖涓槦鍒楀氨鏄?lock浠ュ強 waiting on鐨勫璞°傚綋闃熷垪涓虹┖鐨勬椂鍊欙紝榪欎簺綰跨▼閮戒細鍦ㄨ繖涓槦鍒椾笂絳夊緟錛岀洿鍒伴槦鍒楁湁浜嗘暟鎹紝榪欎簺綰跨▼琚?Notify錛屽綋鐒跺彧鏈変竴涓嚎紼嬭幏寰椾簡 lock錛岀戶緇墽琛岋紝鑰屽叾瀹冪嚎紼嬬戶緇瓑寰呫?

3.     JDK 5.0 鐨?lock

涓婇潰鎴戜滑鎻愬埌濡傛灉 synchronized鍜?monitor鏈哄埗榪愮敤涓嶅綋錛屽彲鑳戒細閫犳垚澶氱嚎紼嬬▼搴忕殑鎬ц兘闂銆傚湪 JDK 5.0涓紝寮曞叆浜?Lock鏈哄埗錛屼粠鑰屼嬌寮鍙戣呰兘鏇寸伒媧葷殑寮鍙戦珮鎬ц兘鐨勫茍鍙戝綰跨▼紼嬪簭錛屽彲浠ユ浛浠d互寰 JDK涓殑 synchronized鍜?Monitor鐨?鏈哄埗銆備絾鏄紝瑕佹敞鎰忕殑鏄紝鍥犱負 Lock綾誨彧鏄竴涓櫘閫氱被錛?JVM鏃犱粠寰楃煡 Lock瀵硅薄鐨勫崰鐢ㄦ儏鍐碉紝鎵浠ュ湪綰跨▼ DUMP涓紝涔熶笉浼氬寘鍚叧浜?Lock鐨勪俊鎭紝 鍏充簬姝婚攣絳夐棶棰橈紝灝變笉濡傜敤 synchronized鐨勭紪紼嬫柟寮忓鏄撹瘑鍒?

妗堜緥鍒嗘瀽


1.     姝婚攣

鍦ㄥ綰跨▼紼嬪簭鐨勭紪鍐欎腑錛屽鏋滀笉閫傚綋鐨勮繍鐢ㄥ悓姝ユ満鍒訛紝鍒欐湁鍙兘閫犳垚紼嬪簭鐨勬閿侊紝緇忓父琛ㄧ幇涓虹▼搴忕殑鍋滈】錛屾垨鑰呬笉鍐嶅搷搴旂敤鎴風殑璇鋒眰銆?

姣斿鍦ㄤ笅闈㈣繖涓ず渚嬩腑錛屾槸涓緝涓哄吀鍨嬬殑姝婚攣鎯呭喌錛?

 

"Thread-1" prio=5 tid=0x00acc490 nid=0xe50 waiting for monitor entry [0x02d3f000

..0x02d3fd68]

at deadlockthreads.TestThread.run(TestThread.java:31)

- waiting to lock <0x22c19f18> (a java.lang.Object)

- locked <0x22c19f20> (a java.lang.Object)

 

"Thread-0" prio=5 tid=0x00accdb0 nid=0xdec waiting for monitor entry [0x02cff000

..0x02cff9e8]

at deadlockthreads.TestThread.run(TestThread.java:31)

- waiting to lock <0x22c19f20> (a java.lang.Object)

- locked <0x22c19f18> (a java.lang.Object)

鍦?JAVA 5涓姞寮轟簡瀵規閿佺殑媯嫻嬨傜嚎紼?Dump涓彲浠ョ洿鎺ユ姤鍛婂嚭 Java綰у埆鐨勬閿侊紝濡備笅鎵紺猴細

 

Found one Java-level deadlock:

=============================

"Thread-1":

waiting to lock monitor 0x0003f334 (object 0x22c19f18, a java.lang.Object),

which is held by "Thread-0"

"Thread-0":

waiting to lock monitor 0x0003f314 (object 0x22c19f20, a java.lang.Object),

which is held by "Thread-1"

2.     鐑攣

鐑攣錛屼篃寰寰鏄鑷寸郴緇熸ц兘鐡墮鐨勪富瑕佸洜绱犮傚叾琛ㄧ幇鐗瑰緛涓猴紝鐢變簬澶氫釜綰跨▼瀵逛復鐣屽尯錛屾垨鑰呴攣鐨勭珵浜夛紝鍙兘鍑虹幇錛?amp; amp; lt; /span>

  • 棰戠箒鐨勭嚎紼嬬殑涓婁笅鏂囧垏鎹細浠庢搷浣滅郴緇熷綰跨▼鐨勮皟搴︽潵鐪嬶紝褰?綰跨▼鍦ㄧ瓑寰呰祫婧愯岄樆濉炵殑鏃跺欙紝鎿嶄綔緋葷粺浼氬皢涔嬪垏鎹㈠嚭鏉ワ紝鏀懼埌絳夊緟鐨勯槦鍒楋紝褰撶嚎紼嬭幏寰楄祫婧愪箣鍚庯紝璋冨害綆楁硶浼氬皢榪欎釜綰跨▼鍒囨崲榪涘幓錛屾斁鍒版墽琛岄槦鍒椾腑銆?amp; amp; amp; amp; lt; /li>
  • 澶ч噺鐨勭郴緇熻皟鐢細鍥犱負綰跨▼鐨勪笂涓嬫枃鍒囨崲錛屼互鍙婄儹閿佺殑绔炰簤錛屾垨 鑰呬復鐣屽尯鐨勯綣佺殑榪涘嚭錛岄兘鍙兘瀵艱嚧澶ч噺鐨勭郴緇熻皟鐢ㄣ侻 t < /span>
  • 澶ч儴鍒?CPU寮閿鐢ㄥ湪 “緋葷粺鎬?”錛氱嚎紼嬩笂涓嬫枃鍒囨崲錛屽拰緋葷粺璋冪敤錛岄兘浼氬鑷?CPU鍦?“緋葷粺鎬?”榪愯錛屾崲鑰岃█涔嬶紝铏界劧緋葷粺寰堝繖紕岋紝浣嗘槸 CPU鐢ㄥ湪 “鐢ㄦ埛鎬?”鐨勬瘮渚嬭緝灝忥紝搴旂敤紼嬪簭寰椾笉鍒板厖鍒嗙殑 CPU璧勬簮銆?
  • 闅忕潃 CPU鏁扮洰鐨勫澶氾紝緋葷粺鐨勬ц兘鍙嶈屼笅闄嶃傚洜涓?CPU鏁扮洰澶氾紝鍚?鏃惰繍琛岀殑綰跨▼灝辮秺澶氾紝鍙兘灝變細閫犳垚鏇撮綣佺殑綰跨▼涓婁笅鏂囧垏鎹㈠拰緋葷粺鎬佺殑 CPU寮閿錛屼粠鑰屽鑷存洿緋熺硶鐨勬ц兘銆?

涓婇潰鐨勬弿榪幫紝閮芥槸涓涓?scalability錛堝彲鎵╁睍鎬э級寰堝樊鐨勭郴緇熺殑琛ㄧ幇銆備粠鏁翠綋鐨勬ц兘鎸囨爣鐪嬶紝鐢變簬綰跨▼鐑攣鐨勫瓨鍦紝紼嬪簭鐨勫搷搴旀椂闂翠細鍙橀暱錛屽悶鍚愰噺浼氶檷浣庛?lt; /span>

閭d箞錛屾庝箞鍘諱簡瑙?“鐑攣 ”鍑虹幇鍦ㄤ粈涔堝湴鏂瑰憿錛熶竴涓噸瑕佺殑鏂規硶榪樻槸緇撳悎鎿嶄綔緋葷粺鐨勫悇縐嶅伐鍏瘋瀵熺郴緇熻祫婧愪嬌鐢ㄧ姸鍐碉紝浠ュ強鏀墮泦 Java綰跨▼鐨?DUMP淇℃伅錛岀湅綰跨▼閮介樆濉炲湪浠涔堟柟娉曚笂錛屼簡瑙e師鍥狅紝鎵嶈兘鎵懼埌瀵瑰簲鐨勮В鍐蟲柟娉曘?

鎴戜滑鏇劇粡閬囧埌榪囪繖鏍風殑渚嬪瓙錛岀▼搴忚繍琛屾椂錛屽嚭鐜頒簡浠ヤ笂鎸囧嚭鐨勫悇縐嶇幇璞★紝閫氳繃瑙傚療鎿嶄綔緋葷粺鐨勮祫婧愪嬌鐢ㄧ粺璁′俊鎭紝浠ュ強綰跨▼ DUMP淇℃伅錛岀‘瀹氫簡紼嬪簭涓儹閿佺殑瀛樺湪錛屽茍鍙戠幇澶у鏁扮殑綰跨▼鐘舵侀兘鏄?Waiting for monitor entry鎴栬?Wait on monitor錛屼笖鏄樆濉炲湪鍘嬬緝鍜岃В鍘嬬緝鐨勬柟娉曚笂銆傚悗鏉ラ噰鐢ㄧ涓夋柟鐨勫帇緙╁寘 javalib鏇夸唬 JDK鑷甫鐨勫帇緙╁寘鍚庯紝緋葷粺鐨勬ц兘鎻愰珮浜嗗嚑鍊嶃?

鎬葷粨


鏈枃灝變粙緇嶄簡 Java綰跨▼ DUMP鐨勫熀鏈煡璇嗗拰鍒嗘瀽鐨勫熀鏈柟娉曪紝騫朵笖瑙i噴浜嗗浣曞埄鐢ㄧ嚎紼嬬殑 DUMP淇℃伅錛屼互鍙婄粨鍚堟搷浣滅郴緇熺殑鍚勭璧勬簮浣跨敤鎯呭喌錛屽垎鏋愮▼搴忕殑鎬ц兘闂錛屼粠鑰岃揪鍒版敼榪涚▼搴忥紝鎻愰珮鎬ц兘鐨勭洰鐨勩?

Gavin.lee 2009-11-27 22:02 鍙戣〃璇勮
]]>
鍒ゆ柇瀛楃涓叉槸鍚︽槸鏁板瓧涓?/title><link>http://www.tkk7.com/jzone/articles/303312.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Mon, 23 Nov 2009 03:33:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/303312.html</guid><description><![CDATA[鍦ㄦ垜浠棩甯稿紑鍙戣繃紼嬩腑錛屼負浜嗗畨鍏ㄨ冭檻錛屼細鐢ㄥ埌瀵逛紶鍊艱繘琛岄檺鍒訛紝涓嬮潰榪欐鏄厛浜虹敤鐨?涓柟娉曪紝閮芥槸鍙浜嗭紝鐜拌創濡備笅<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"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #008000">//</span><span style="color: #008000">    1.浣跨敤Character.isDigit(char)鍒ゆ柇     </span><span style="color: #008000"><br /> <img id="Codehighlighter1_73_264_Open_Image" onclick="this.style.display='none'; Codehighlighter1_73_264_Open_Text.style.display='none'; Codehighlighter1_73_264_Closed_Image.style.display='inline'; Codehighlighter1_73_264_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_73_264_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_73_264_Closed_Text.style.display='none'; Codehighlighter1_73_264_Open_Image.style.display='inline'; Codehighlighter1_73_264_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span style="color: #000000">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">boolean</span><span style="color: #000000"> isNumeric(String str) </span><span id="Codehighlighter1_73_264_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_73_264_Open_Text"><span style="color: #000000">{<br /> <img id="Codehighlighter1_112_133_Open_Image" onclick="this.style.display='none'; Codehighlighter1_112_133_Open_Text.style.display='none'; Codehighlighter1_112_133_Closed_Image.style.display='inline'; Codehighlighter1_112_133_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_112_133_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_112_133_Closed_Text.style.display='none'; Codehighlighter1_112_133_Open_Image.style.display='inline'; Codehighlighter1_112_133_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">if</span><span style="color: #000000"> (str </span><span style="color: #000000">==</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000"> </span><span style="color: #000000">||</span><span style="color: #000000"> str.equals(</span><span style="color: #000000">""</span><span style="color: #000000">)) </span><span id="Codehighlighter1_112_133_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_112_133_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />        }</span></span><span style="color: #000000"><br /> <img id="Codehighlighter1_175_246_Open_Image" onclick="this.style.display='none'; Codehighlighter1_175_246_Open_Text.style.display='none'; Codehighlighter1_175_246_Closed_Image.style.display='inline'; Codehighlighter1_175_246_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_175_246_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_175_246_Closed_Text.style.display='none'; Codehighlighter1_175_246_Open_Image.style.display='inline'; Codehighlighter1_175_246_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">for</span><span style="color: #000000"> (</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> str.length(); </span><span style="color: #000000">--</span><span style="color: #000000">i </span><span style="color: #000000">>=</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">;) </span><span id="Codehighlighter1_175_246_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_175_246_Open_Text"><span style="color: #000000">{<br /> <img id="Codehighlighter1_219_242_Open_Image" onclick="this.style.display='none'; Codehighlighter1_219_242_Open_Text.style.display='none'; Codehighlighter1_219_242_Closed_Image.style.display='inline'; Codehighlighter1_219_242_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_219_242_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_219_242_Closed_Text.style.display='none'; Codehighlighter1_219_242_Open_Image.style.display='inline'; Codehighlighter1_219_242_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #000000">!</span><span style="color: #000000">Character.isDigit(str.charAt(i))) </span><span id="Codehighlighter1_219_242_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_219_242_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />                </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">false</span><span style="color: #000000">;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />            }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />        }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />     <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">    2.浣跨敤綾誨瀷杞崲鍒ゆ柇</span><span style="color: #008000"><br /> <img id="Codehighlighter1_324_435_Open_Image" onclick="this.style.display='none'; Codehighlighter1_324_435_Open_Text.style.display='none'; Codehighlighter1_324_435_Closed_Image.style.display='inline'; Codehighlighter1_324_435_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_324_435_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_324_435_Closed_Text.style.display='none'; Codehighlighter1_324_435_Open_Image.style.display='inline'; Codehighlighter1_324_435_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span style="color: #000000">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">boolean</span><span style="color: #000000"> isNumeric2 (String str) </span><span id="Codehighlighter1_324_435_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_324_435_Open_Text"><span style="color: #000000">{<br /> <img id="Codehighlighter1_332_383_Open_Image" onclick="this.style.display='none'; Codehighlighter1_332_383_Open_Text.style.display='none'; Codehighlighter1_332_383_Closed_Image.style.display='inline'; Codehighlighter1_332_383_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_332_383_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_332_383_Closed_Text.style.display='none'; Codehighlighter1_332_383_Open_Image.style.display='inline'; Codehighlighter1_332_383_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">try</span><span style="color: #000000"> </span><span id="Codehighlighter1_332_383_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_332_383_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            Integer.valueOf(str);   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">true</span><span style="color: #000000">;<br /> <img id="Codehighlighter1_405_430_Open_Image" onclick="this.style.display='none'; Codehighlighter1_405_430_Open_Text.style.display='none'; Codehighlighter1_405_430_Closed_Image.style.display='inline'; Codehighlighter1_405_430_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_405_430_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_405_430_Closed_Text.style.display='none'; Codehighlighter1_405_430_Open_Image.style.display='inline'; Codehighlighter1_405_430_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />        }</span></span><span style="color: #000000"> </span><span style="color: #0000ff">catch</span><span style="color: #000000"> (Exception e) </span><span id="Codehighlighter1_405_430_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_405_430_Open_Text"><span style="color: #000000">{   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> </span><span style="color: #0000ff">false</span><span style="color: #000000">; <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />        }</span></span><span style="color: #000000">  <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">    3.浣跨敤姝e垯琛ㄨ揪寮忓垽鏂?/span><span style="color: #008000"><br /> <img id="Codehighlighter1_492_617_Open_Image" onclick="this.style.display='none'; Codehighlighter1_492_617_Open_Text.style.display='none'; Codehighlighter1_492_617_Closed_Image.style.display='inline'; Codehighlighter1_492_617_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_492_617_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_492_617_Closed_Text.style.display='none'; Codehighlighter1_492_617_Open_Image.style.display='inline'; Codehighlighter1_492_617_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span style="color: #000000">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">boolean</span><span style="color: #000000"> isNumeric3(String str) </span><span id="Codehighlighter1_492_617_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_492_617_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> str.matches(</span><span style="color: #000000">"</span><span style="color: #000000">[0-9]+</span><span style="color: #000000">"</span><span style="color: #000000">);    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #008000">//</span><span style="color: #008000">    +琛ㄧず1涓垨澶氫釜錛堝"3"鎴?225"錛夛紝*琛ㄧず0涓垨澶氫釜錛圼0-9]*錛夛紙濡?"鎴?1"鎴?22"錛夛紝?琛ㄧず0涓垨1涓?[0-9]?)(濡?"鎴?7")   </span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" /></span><span style="color: #000000">    }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" />    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">    4.浣跨敤Pattern綾誨拰Matcher</span><span style="color: #008000"><br /> <img id="Codehighlighter1_684_828_Open_Image" onclick="this.style.display='none'; Codehighlighter1_684_828_Open_Text.style.display='none'; Codehighlighter1_684_828_Closed_Image.style.display='inline'; Codehighlighter1_684_828_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_684_828_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_684_828_Closed_Text.style.display='none'; Codehighlighter1_684_828_Open_Image.style.display='inline'; Codehighlighter1_684_828_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span style="color: #000000">    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">boolean</span><span style="color: #000000"> isNumeric4(String str) </span><span id="Codehighlighter1_684_828_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_684_828_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        Pattern pattern </span><span style="color: #000000">=</span><span style="color: #000000"> Pattern.compile(</span><span style="color: #000000">"</span><span style="color: #000000">[0-9]+</span><span style="color: #000000">"</span><span style="color: #000000">);   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        Matcher matcher </span><span style="color: #000000">=</span><span style="color: #000000"> pattern.matcher((CharSequence) str);   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">return</span><span style="color: #000000"> matcher.matches();   <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />    }</span></span></div> <img src ="http://www.tkk7.com/jzone/aggbug/303312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-11-23 11:33 <a href="http://www.tkk7.com/jzone/articles/303312.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>BigDecimal --鍒ゆ柇涓ゆ暟鐩擱櫎鏄惁涓烘棤絀?/title><link>http://www.tkk7.com/jzone/articles/299218.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Wed, 21 Oct 2009 08:27:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/299218.html</guid><description><![CDATA[     鎽樿: import java.math.BigDecimal; public class Test {     public static void main(String args[]) {       &n...  <a href='http://www.tkk7.com/jzone/articles/299218.html'>闃呰鍏ㄦ枃</a><img src ="http://www.tkk7.com/jzone/aggbug/299218.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-10-21 16:27 <a href="http://www.tkk7.com/jzone/articles/299218.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Math 鍙栨暣鍑芥暟http://www.tkk7.com/jzone/articles/298677.htmlGavin.leeGavin.leeSat, 17 Oct 2009 05:42:00 GMThttp://www.tkk7.com/jzone/articles/298677.html/**
 * 鍙栨暣鍑芥暟
 
*/

public class QuZheng {
    
public static void main(String[] args) {
        
//鍥涜垗浜斿叆   
        System.out.println(Math.round(3.40d));   //3
        System.out.println(Math.round(3.60d));   //4
        
//涓婂彇鏁?nbsp;  
        System.out.println(Math.ceil(3.4));   //4.0
        
//涓嬪彇鏁?nbsp;  
        System.out.println(Math.floor(3.40));   //3.0
        
        System.out.println((
int)3.45);    //3
    }

}


Gavin.lee 2009-10-17 13:42 鍙戣〃璇勮
]]>
DecimalFormat 鏁版嵁鏍煎紡鍖栫被鐨勪嬌鐢ㄥ皬緇?/title><link>http://www.tkk7.com/jzone/articles/292581.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Tue, 25 Aug 2009 16:06:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/292581.html</guid><description><![CDATA[<p>api錛?code>DecimalFormat</code> 鏄?<code>NumberFormat</code> 鐨勪竴涓叿浣撳瓙綾伙紝鐢ㄤ簬鏍煎紡鍖栧崄榪涘埗鏁板瓧銆傝綾昏璁℃湁鍚勭鍔熻兘錛屼嬌鍏惰兘澶熻В鏋愬拰鏍煎紡鍖栦換鎰忚璦鐜涓殑鏁幫紝鍖呮嫭瀵硅タ鏂硅璦銆侀樋鎷変集璇拰鍗板害璇暟瀛楃殑鏀寔銆傚畠榪樻敮鎸佷笉鍚岀被鍨嬬殑鏁幫紝鍖呮嫭鏁存暟 (123)銆佸畾鐐規暟 (123.4)銆佺瀛﹁鏁版硶琛ㄧず鐨勬暟 (1.23E4)銆佺櫨鍒嗘暟 (12%) 鍜岄噾棰?($123)銆傛墍鏈夎繖浜涘唴瀹歸兘鍙互鏈湴鍖栥?/p> <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"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #0000ff">import</span><span style="color: #000000"> java.text.DecimalFormat;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Random;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> java.util.Locale;<br /> <img id="Codehighlighter1_112_1741_Open_Image" onclick="this.style.display='none'; Codehighlighter1_112_1741_Open_Text.style.display='none'; Codehighlighter1_112_1741_Closed_Image.style.display='inline'; Codehighlighter1_112_1741_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_112_1741_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_112_1741_Closed_Text.style.display='none'; Codehighlighter1_112_1741_Open_Image.style.display='inline'; Codehighlighter1_112_1741_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> TestNumberFormat </span><span id="Codehighlighter1_112_1741_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_112_1741_Open_Text"><span style="color: #000000">{<br /> <img id="Codehighlighter1_154_1739_Open_Image" onclick="this.style.display='none'; Codehighlighter1_154_1739_Open_Text.style.display='none'; Codehighlighter1_154_1739_Closed_Image.style.display='inline'; Codehighlighter1_154_1739_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_154_1739_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_154_1739_Closed_Text.style.display='none'; Codehighlighter1_154_1739_Open_Image.style.display='inline'; Codehighlighter1_154_1739_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) </span><span id="Codehighlighter1_154_1739_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_154_1739_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">double</span><span style="color: #000000"> pi </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">3.1415927</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000"> 鍦嗗懆鐜?br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #008000">//</span><span style="color: #008000"> 鍙栦竴浣嶆暣鏁?/span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">).format(pi)); </span><span style="color: #008000">//</span><span style="color: #008000"> 3<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #008000">//</span><span style="color: #008000"> 鍙栦竴浣嶆暣鏁板拰涓や綅灝忔暟</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">0.00</span><span style="color: #000000">"</span><span style="color: #000000">).format(pi)); </span><span style="color: #008000">//</span><span style="color: #008000"> 3.14        <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #008000">//</span><span style="color: #008000"> 鍙栦袱浣嶆暣鏁板拰涓変綅灝忔暟錛屾暣鏁頒笉瓚抽儴鍒嗕互0濉ˉ銆?/span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">00.000</span><span style="color: #000000">"</span><span style="color: #000000">).format(pi)); </span><span style="color: #008000">//</span><span style="color: #008000"> 03.142<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #008000">//</span><span style="color: #008000"> 鍙栨墍鏈夋暣鏁伴儴鍒?/span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">#</span><span style="color: #000000">"</span><span style="color: #000000">).format(pi)); </span><span style="color: #008000">//</span><span style="color: #008000"> 3<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #008000">//</span><span style="color: #008000"> 浠ョ櫨鍒嗘瘮鏂瑰紡璁℃暟錛屽茍鍙栦袱浣嶅皬鏁?/span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">#.##%</span><span style="color: #000000">"</span><span style="color: #000000">).format(pi)); </span><span style="color: #008000">//</span><span style="color: #008000"> 314.16%</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">long</span><span style="color: #000000"> c </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #000000">299792458</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000"> 鍏夐?br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #008000">//</span><span style="color: #008000"> 鏄劇ず涓虹瀛﹁鏁版硶錛屽茍鍙栦簲浣嶅皬鏁?/span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">#.#####E0</span><span style="color: #000000">"</span><span style="color: #000000">).format(c)); </span><span style="color: #008000">//</span><span style="color: #008000"> 2.99792E8<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #008000">//</span><span style="color: #008000"> 鏄劇ず涓轟袱浣嶆暣鏁扮殑縐戝璁℃暟娉曪紝騫跺彇鍥涗綅灝忔暟</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">00.####E0</span><span style="color: #000000">"</span><span style="color: #000000">).format(c)); </span><span style="color: #008000">//</span><span style="color: #008000"> 29.9792E7<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #008000">//</span><span style="color: #008000"> 姣忎笁浣嶄互閫楀彿榪涜鍒嗛殧銆?/span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">,###</span><span style="color: #000000">"</span><span style="color: #000000">).format(c)); </span><span style="color: #008000">//</span><span style="color: #008000"> 299,792,458<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #008000">//</span><span style="color: #008000"> 灝嗘牸寮忓祵鍏ユ枃鏈?/span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">鍏夐熷ぇ灝忎負姣忕,###綾熾?/span><span style="color: #000000">"</span><span style="color: #000000">).format(c));        </span><span style="color: #008000">//</span><span style="color: #008000">鍏夐熷ぇ灝忎負姣忕299,792,458綾熾?br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #008000">//</span><span style="color: #008000">鐩存帴鎴彇</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(Math.floor(</span><span style="color: #000000">24.335</span><span style="color: #000000">*</span><span style="color: #000000">100</span><span style="color: #000000">)</span><span style="color: #000000">/</span><span style="color: #000000">100</span><span style="color: #000000">);            </span><span style="color: #008000">//</span><span style="color: #008000">24.33</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        System.out.println((</span><span style="color: #0000ff">int</span><span style="color: #000000">)Math.floor(</span><span style="color: #000000">23.45</span><span style="color: #000000">));        </span><span style="color: #008000">//</span><span style="color: #008000">鎴彇鏁存暟    23</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println((</span><span style="color: #0000ff">int</span><span style="color: #000000">)Math.ceil(</span><span style="color: #000000">23.2</span><span style="color: #000000">));        </span><span style="color: #008000">//</span><span style="color: #008000">鍑戞暣    24</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println((</span><span style="color: #0000ff">int</span><span style="color: #000000">)Math.rint(</span><span style="color: #000000">23.567</span><span style="color: #000000">));        </span><span style="color: #008000">//</span><span style="color: #008000">鍥涜垗浜斿叆鍙栨暣    24</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> DecimalFormat(</span><span style="color: #000000">"</span><span style="color: #000000">0</span><span style="color: #000000">"</span><span style="color: #000000">).format(</span><span style="color: #000000">25.5</span><span style="color: #000000">));        </span><span style="color: #008000">//</span><span style="color: #008000">鍥涜垗浜斿叆鍙栨暣    26</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        System.out.println(Math.random());        </span><span style="color: #008000">//</span><span style="color: #008000">闅忔満double 0.9786833725139645</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> Random().nextFloat());        </span><span style="color: #008000">//</span><span style="color: #008000">闅忔満嫻偣鏁?nbsp;0.5196178</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        System.out.println(</span><span style="color: #0000ff">new</span><span style="color: #000000"> Random().nextBoolean());        </span><span style="color: #008000">//</span><span style="color: #008000">闅忔満boolean<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">        Locale.setDefault(Locale.ENGLISH);<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">        DecimalFormat df = new DecimalFormat();<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">        df.applyPattern("00.00");        <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">        System.out.println(df.format(4.2355));</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" /></span><span style="color: #000000">    }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span></div> <img src ="http://www.tkk7.com/jzone/aggbug/292581.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-08-26 00:06 <a href="http://www.tkk7.com/jzone/articles/292581.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>澶氭佹葷粨http://www.tkk7.com/jzone/articles/292310.htmlGavin.leeGavin.leeSun, 23 Aug 2009 14:42:00 GMThttp://www.tkk7.com/jzone/articles/292310.html 瀹冧嬌鐢ㄤ笉鍚岀殑瀹炰緥鑰屾墽琛屼笉鍚屾搷浣?br /> 澶氭佸寘鎷潤鎬佸鎬佹у拰鍔ㄦ佸鎬佹?br />
1).闈欐佸鎬佹?--緙栬瘧鏃跺鎬?br /> 鍗崇敤鐩稿悓鐨勬柟娉曞悕瀹氫箟涓嶅悓鐨勬柟娉曞唴瀹廣傜紪璇戞椂鏍規嵁瀹冧滑鐨勭壒寰佹潵榪涜緙栬瘧. 鍗籌細鏂規硶閲嶈澆

2).鍔ㄦ佸鎬佹?--榪愯鏃跺鎬?br /> 涓縐嶅湪榪愯鏃惰皟鐢ㄩ噸鍐欐柟娉曠殑鏈哄埗銆傚瓙綾誨璞″彲浠ヤ綔涓虹埗綾誨璞′嬌鐢紝榪欐槸鍥犱負瀛愮被閫氳繃緇ф壙鍏峰浜嗙埗綾葷殑鎵鏈夊睘鎬с傚湪紼嬪簭涓嚒鏄彲浠ヤ嬌鐢ㄧ埗綾誨璞$殑鍦版柟錛岄兘鏈夊彲浠ョ敤瀛愮被瀵硅薄鏉ヤ唬鏇褲?br />
Java鎻愪緵浜?instanceof 榪愮畻絎︼紝鏉ュ垽鏂竴涓璞″睘浜庡摢涓被鐨勫疄渚嬨?

(閲嶈澆鏄牴鎹渶瑕侀噸鍐欎竴涓柟娉曟垨鍦ㄥ叾涓姞鍔熻兘     
澶氭佹槸鏍規嵁闇瑕佷紶鍏ヤ笉鍚屽弬鏁版瀯寤轟笉鍚岀殑瀹炰緥)

閲嶅啓錛氬姩鎬佸鎬佹?--榪愯鏃跺鎬?
package com.yixun.wap;

class Father {
    
protected void showInfo() {
        System.out.println(
"Father");
    }

}


class Son extends Father {
    
protected void showInfo() {
        System.out.println(
"Son");
    }


    
protected void showSex() {
        System.out.println(
"鐢?/span>");
    }

}


class Daughter extends Father {
    
protected void showInfo() {
        System.out.println(
"Daughter");
    }


    
protected void showSex() {
        System.out.println(
"濂?/span>");
    }

}

/**
 * ******************************************
 * @descripte 榪愯鏃跺鎬侊紝鍔ㄦ佸鎬佹?br />  * 鐖剁被寮曠敤鎸囧悜瀛愮被瀵硅薄錛屽疄闄呭璞′負瀛愮被
 * java鐨勮繖縐嶆満鍒墮伒寰竴涓師鍒欙細褰撹秴綾誨璞″紩鐢ㄥ彉閲忓紩鐢ㄥ瓙綾誨璞℃椂, 
 * 鏄寮曠敤瀵硅薄鐨勭被鍨嬭屼笉鏄紩鐢ㄥ彉閲忕殑綾誨瀷鍐沖畾浜嗚皟鐢ㄨ皝鐨勬垚鍛樻柟娉? 
 * 浣嗘槸榪欎釜琚皟鐢ㄧ殑鏂規硶蹇呴』鏄湪瓚呯被涓畾涔夎繃鐨?涔熷氨鏄琚瓙綾昏鐩栫殑鏂規硶銆?br />  * 
@author Gavin.lee
 * @date 2009-8-24涓嬪崍05:21:49
 * 
@version 1.0
 *
 ********************************************
 
*/

public class TestSon {
    
public static void main(String args[]) {
        Father fa;
        
        fa 
= new Son();     //鍚戜笂杞瀷錛岀埗綾誨紩鐢ㄦ寚鍚戝瓙綾誨璞?/span>
        fa.showInfo();
        
//        fa.showSex();    //鏃犳硶璋冪敤錛岀埗綾繪棤姝ゆ柟娉?nbsp;       
        Son son = (Son)fa;    //鍚戜笅杞瀷
        son.showSex();

        fa 
= new Daughter();        
        fa.showInfo();
    }

}

/**
 *    Son
 *    鐢?br />  *    Daughter
 *鍚屼竴涓紩鐢ㄨ皟鐢ㄤ簡鐩稿悓鍚嶇О鐨勬柟娉曪紝緇撴灉鍗翠笉涓鏍?--澶氭佺殑浣撶幇
 
*/



Gavin.lee 2009-08-23 22:42 鍙戣〃璇勮
]]>
java enum 綾?/title><link>http://www.tkk7.com/jzone/articles/289678.html</link><dc:creator>Gavin.lee</dc:creator><author>Gavin.lee</author><pubDate>Mon, 03 Aug 2009 14:49:00 GMT</pubDate><guid>http://www.tkk7.com/jzone/articles/289678.html</guid><description><![CDATA[<a >http://zhangli-lisa.javaeye.com/blog/394951</a> 鍏充簬enum鐨勮緇嗕粙緇嶄簡錛?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"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #0000ff">package</span><span style="color: #000000"> com.Gavin.testenum;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img id="Codehighlighter1_50_86_Open_Image" onclick="this.style.display='none'; Codehighlighter1_50_86_Open_Text.style.display='none'; Codehighlighter1_50_86_Closed_Image.style.display='inline'; Codehighlighter1_50_86_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_50_86_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_50_86_Closed_Text.style.display='none'; Codehighlighter1_50_86_Open_Image.style.display='inline'; Codehighlighter1_50_86_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">enum</span><span style="color: #000000"> TestEnum </span><span id="Codehighlighter1_50_86_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_50_86_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />one,two,three,middle,four,five;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span></div> <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"><img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><span style="color: #0000ff">package</span><span style="color: #000000"> com.Gavin.testenum;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> org.apache.log4j.Logger;<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /><br /> <img id="Codehighlighter1_80_839_Open_Image" onclick="this.style.display='none'; Codehighlighter1_80_839_Open_Text.style.display='none'; Codehighlighter1_80_839_Closed_Image.style.display='inline'; Codehighlighter1_80_839_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_80_839_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_80_839_Closed_Text.style.display='none'; Codehighlighter1_80_839_Open_Image.style.display='inline'; Codehighlighter1_80_839_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedBlock.gif" align="top" alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Test </span><span id="Codehighlighter1_80_839_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_80_839_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> Logger logger </span><span style="color: #000000">=</span><span style="color: #000000"> Logger.getLogger(Test.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    <br /> <img id="Codehighlighter1_187_367_Open_Image" onclick="this.style.display='none'; Codehighlighter1_187_367_Open_Text.style.display='none'; Codehighlighter1_187_367_Closed_Image.style.display='inline'; Codehighlighter1_187_367_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_187_367_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_187_367_Closed_Text.style.display='none'; Codehighlighter1_187_367_Open_Image.style.display='inline'; Codehighlighter1_187_367_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) </span><span id="Codehighlighter1_187_367_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_187_367_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        Test t </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Test();<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        logger.debug(TestEnum.one);        </span><span style="color: #008000">//</span><span style="color: #008000">one</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        logger.debug(TestEnum.values().length);        </span><span style="color: #008000">//</span><span style="color: #008000">5</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        t.enumvalues();        </span><span style="color: #008000">//</span><span style="color: #008000">渚濇鎵撳嵃</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">        <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        logger.debug(t.getRandomEnum());<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    <br /> <img id="Codehighlighter1_397_465_Open_Image" onclick="this.style.display='none'; Codehighlighter1_397_465_Open_Text.style.display='none'; Codehighlighter1_397_465_Closed_Image.style.display='inline'; Codehighlighter1_397_465_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_397_465_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_397_465_Closed_Text.style.display='none'; Codehighlighter1_397_465_Open_Image.style.display='inline'; Codehighlighter1_397_465_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> enumvalues() </span><span id="Codehighlighter1_397_465_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_397_465_Open_Text"><span style="color: #000000">{<br /> <img id="Codehighlighter1_437_462_Open_Image" onclick="this.style.display='none'; Codehighlighter1_437_462_Open_Text.style.display='none'; Codehighlighter1_437_462_Closed_Image.style.display='inline'; Codehighlighter1_437_462_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_437_462_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_437_462_Closed_Text.style.display='none'; Codehighlighter1_437_462_Open_Image.style.display='inline'; Codehighlighter1_437_462_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">for</span><span style="color: #000000">(TestEnum te: TestEnum.values()) </span><span id="Codehighlighter1_437_462_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_437_462_Open_Text"><span style="color: #000000">{<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            logger.debug(te);<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />        }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">private</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">int</span><span style="color: #000000"> number </span><span style="color: #000000">=</span><span style="color: #000000"> TestEnum.values().length ; </span><span style="color: #008000">//</span><span style="color: #008000">鏋氫婦綾葷殑鏁扮洰</span><span style="color: #008000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /></span><span style="color: #000000">    <br /> <img id="Codehighlighter1_568_832_Open_Image" onclick="this.style.display='none'; Codehighlighter1_568_832_Open_Text.style.display='none'; Codehighlighter1_568_832_Closed_Image.style.display='inline'; Codehighlighter1_568_832_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_568_832_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_568_832_Closed_Text.style.display='none'; Codehighlighter1_568_832_Open_Image.style.display='inline'; Codehighlighter1_568_832_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> TestEnum getRandomEnum()</span><span id="Codehighlighter1_568_832_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_568_832_Open_Text"><span style="color: #000000">{    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">long</span><span style="color: #000000"> random </span><span style="color: #000000">=</span><span style="color: #000000"> System.currentTimeMillis() </span><span style="color: #000000">%</span><span style="color: #000000"> number;    <br /> <img id="Codehighlighter1_654_825_Open_Image" onclick="this.style.display='none'; Codehighlighter1_654_825_Open_Text.style.display='none'; Codehighlighter1_654_825_Closed_Image.style.display='inline'; Codehighlighter1_654_825_Closed_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" alt="" /><img id="Codehighlighter1_654_825_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_654_825_Closed_Text.style.display='none'; Codehighlighter1_654_825_Open_Image.style.display='inline'; Codehighlighter1_654_825_Open_Text.style.display='inline';" src="http://www.tkk7.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">switch</span><span style="color: #000000"> ((</span><span style="color: #0000ff">int</span><span style="color: #000000">) random)</span><span id="Codehighlighter1_654_825_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.tkk7.com/Images/dot.gif" alt="" /></span><span id="Codehighlighter1_654_825_Open_Text"><span style="color: #000000">{    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">0</span><span style="color: #000000">:    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> TestEnum.one; <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">1</span><span style="color: #000000">:    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> TestEnum.two;  <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">case</span><span style="color: #000000"> </span><span style="color: #000000">2</span><span style="color: #000000">:    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">return</span><span style="color: #000000"> TestEnum.three;    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />        </span><span style="color: #0000ff">default</span><span style="color: #000000">:<br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" />            </span><span style="color: #0000ff">return</span><span style="color: #000000">    TestEnum.middle;  <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />        }</span></span><span style="color: #000000">    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" alt="" />    }</span></span><span style="color: #000000">    <br /> <img src="http://www.tkk7.com/images/OutliningIndicators/InBlock.gif" align="top" alt="" /><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" alt="" />}</span></span><span style="color: #000000"><br /> <img src="http://www.tkk7.com/images/OutliningIndicators/None.gif" align="top" alt="" /></span></div> <img src ="http://www.tkk7.com/jzone/aggbug/289678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/jzone/" target="_blank">Gavin.lee</a> 2009-08-03 22:49 <a href="http://www.tkk7.com/jzone/articles/289678.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://sh-shule.com" target="_blank">亚洲天堂一区二区三区</a>| <a href="http://fsszx888.com" target="_blank">亚洲精品蜜夜内射</a>| <a href="http://xx9911.com" target="_blank">亚洲av午夜福利精品一区人妖</a>| <a href="http://hnshlt.com" target="_blank">免费无码又爽又刺激高潮视频</a>| <a href="http://67f6.com" target="_blank">爽爽爽爽爽爽爽成人免费观看</a>| <a href="http://zjtuntex.com" target="_blank">亚洲欧洲无卡二区视頻</a>| <a href="http://5aa6.com" target="_blank">亚洲色www永久网站</a>| <a href="http://aa2176.com" target="_blank">亚洲啪啪AV无码片</a>| <a href="http://qulu999.com" target="_blank">亚洲国产另类久久久精品小说</a>| <a href="http://zxbj0471.com" target="_blank">成人免费视频一区</a>| <a href="http://zj1069.com" target="_blank">爽爽日本在线视频免费</a>| <a href="http://pjszlw.com" target="_blank">国产国产人免费视频成69大陆</a>| <a href="http://abab14.com" target="_blank">亚洲高清视频免费</a>| <a href="http://qzllw.com" target="_blank">成全动漫视频在线观看免费高清版下载</a>| <a href="http://2023852.com" target="_blank">免费无码作爱视频</a>| <a href="http://xmm5pkt.com" target="_blank">免费女人高潮流视频在线观看</a>| <a href="http://dw168cn.com" target="_blank">一区二区三区福利视频免费观看</a>| <a href="http://51xinshiji.com" target="_blank">永久看日本大片免费35分钟</a>| <a href="http://27simnjingmiguan.com" target="_blank">国产福利视精品永久免费</a>| <a href="http://asdfghjklzxcv.com" target="_blank">国产精品成人免费一区二区</a>| <a href="http://wwwy6x22.com" target="_blank">99热在线精品免费播放6</a>| <a href="http://www045888.com" target="_blank">最好看最新的中文字幕免费</a>| <a href="http://wwwxue1888.com" target="_blank">免费精品国产自产拍在 </a>| <a href="http://www-13696.com" target="_blank">自拍偷自拍亚洲精品情侣</a>| <a href="http://cztshw.com" target="_blank">日本v片免费一区二区三区</a>| <a href="http://xsdjiagu.com" target="_blank">国产成人无码免费视频97</a>| <a href="http://holdengong.com" target="_blank">亚洲男女内射在线播放</a>| <a href="http://xww678.com" target="_blank">国产又长又粗又爽免费视频</a>| <a href="http://147v.com" target="_blank">亚洲毛片不卡av在线播放一区</a>| <a href="http://cct68.com" target="_blank">亚洲人成中文字幕在线观看</a>| <a href="http://linmh.com" target="_blank">亚洲精品国产成人</a>| <a href="http://0330196.com" target="_blank">亚洲视频免费在线观看</a>| <a href="http://chenglide.com" target="_blank">亚洲国产日韩视频观看</a>| <a href="http://nb46.com" target="_blank">边摸边吃奶边做爽免费视频网站 </a>| <a href="http://qingdaostf.com" target="_blank">亚洲AV无码成人精品区在线观看 </a>| <a href="http://b2bautoparts.com" target="_blank">亚洲国产一区二区三区青草影视</a>| <a href="http://vankiz.com" target="_blank">亚洲精品无码久久久久久久</a>| <a href="http://2002tw.com" target="_blank">亚洲精品无码aⅴ中文字幕蜜桃</a>| <a href="http://24aabb.com" target="_blank">农村寡妇一级毛片免费看视频</a>| <a href="http://963315.com" target="_blank">国产一级片免费看</a>| <a href="http://amjt9.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>