锘??xml version="1.0" encoding="utf-8" standalone="yes"?>无码乱人伦一区二区亚洲,日韩亚洲翔田千里在线,国产亚洲一卡2卡3卡4卡新区http://www.tkk7.com/limq/archive/2006/01/19/28585.htmllimqlimqWed, 18 Jan 2006 18:16:00 GMThttp://www.tkk7.com/limq/archive/2006/01/19/28585.htmlhttp://www.tkk7.com/limq/comments/28585.htmlhttp://www.tkk7.com/limq/archive/2006/01/19/28585.html#Feedback27http://www.tkk7.com/limq/comments/commentRss/28585.htmlhttp://www.tkk7.com/limq/services/trackbacks/28585.html闃呰鍏ㄦ枃

limq 2006-01-19 02:16 鍙戣〃璇勮
]]>
鍥涜垗浜斿叆淇濈暀灝忔暟鍚庝袱浣?/title><link>http://www.tkk7.com/limq/archive/2005/09/21/13694.html</link><dc:creator>limq</dc:creator><author>limq</author><pubDate>Wed, 21 Sep 2005 15:59:00 GMT</pubDate><guid>http://www.tkk7.com/limq/archive/2005/09/21/13694.html</guid><wfw:comment>http://www.tkk7.com/limq/comments/13694.html</wfw:comment><comments>http://www.tkk7.com/limq/archive/2005/09/21/13694.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.tkk7.com/limq/comments/commentRss/13694.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/limq/services/trackbacks/13694.html</trackback:ping><description><![CDATA[<P> </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"><SPAN style="COLOR: #008080"> 1</SPAN> <SPAN style="COLOR: #008000">/**</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080"> 2</SPAN> <SPAN style="COLOR: #008000"> * Contains static utility methods.<BR></SPAN><SPAN style="COLOR: #008080"> 3</SPAN> <SPAN style="COLOR: #008000"> </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080"> 4</SPAN> <SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000"> BOUtils {<BR></SPAN><SPAN style="COLOR: #008080"> 5</SPAN> <SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080"> 6</SPAN> <SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000"> Double getRoundedDouble( </SPAN><SPAN style="COLOR: #0000ff">double</SPAN><SPAN style="COLOR: #000000"> unroundedValue ){<BR></SPAN><SPAN style="COLOR: #008080"> 7</SPAN> <SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Get the integer portion of the value</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080"> 8</SPAN> <SPAN style="COLOR: #008000"></SPAN><SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #0000ff">double</SPAN><SPAN style="COLOR: #000000"> intPortion </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> Math.floor( unroundedValue );<BR></SPAN><SPAN style="COLOR: #008080"> 9</SPAN> <SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">10</SPAN> <SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Get the unrounded decimal portion</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">11</SPAN> <SPAN style="COLOR: #008000"></SPAN><SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #0000ff">double</SPAN><SPAN style="COLOR: #000000"> unroundedDecimalPortion </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> ( unroundedValue </SPAN><SPAN style="COLOR: #000000">-</SPAN><SPAN style="COLOR: #000000"> intPortion );<BR></SPAN><SPAN style="COLOR: #008080">12</SPAN> <SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">13</SPAN> <SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> ALERT - This next code interferes with I18N. We eventually need   </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">14</SPAN> <SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000">         to change this not assume only round to 2 decimal places. </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">15</SPAN> <SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">16</SPAN> <SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #008000">/*</SPAN><SPAN style="COLOR: #008000"> Multiply the decimal places by 100, which shitfs the decimal point<BR></SPAN><SPAN style="COLOR: #008080">17</SPAN> <SPAN style="COLOR: #008000">    /* two places to the left. Then round it so that we get a round to<BR></SPAN><SPAN style="COLOR: #008080">18</SPAN> <SPAN style="COLOR: #008000">    /* two decimal places. For example, if we started with 17.655 and stripped<BR></SPAN><SPAN style="COLOR: #008080">19</SPAN> <SPAN style="COLOR: #008000">    /* off the int portion, which left .655. After we shift, we are left with<BR></SPAN><SPAN style="COLOR: #008080">20</SPAN> <SPAN style="COLOR: #008000">    /* 65.5. Then a round will gives us 66. We can then put it all back<BR></SPAN><SPAN style="COLOR: #008080">21</SPAN> <SPAN style="COLOR: #008000">    /* together </SPAN><SPAN style="COLOR: #008000">*/</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">22</SPAN> <SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #0000ff">double</SPAN><SPAN style="COLOR: #000000"> roundedDecimalPortion </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> Math.round( unroundedDecimalPortion </SPAN><SPAN style="COLOR: #000000">*</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">100</SPAN><SPAN style="COLOR: #000000"> );<BR></SPAN><SPAN style="COLOR: #008080">23</SPAN> <SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">24</SPAN> <SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Shift the decimal point back two places to the right</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">25</SPAN> <SPAN style="COLOR: #008000"></SPAN><SPAN style="COLOR: #000000">    roundedDecimalPortion </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> roundedDecimalPortion </SPAN><SPAN style="COLOR: #000000">/</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #000000">100</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">26</SPAN> <SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">27</SPAN> <SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000"> Add the int portion and decimal portions back together</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">28</SPAN> <SPAN style="COLOR: #008000"></SPAN><SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #0000ff">double</SPAN><SPAN style="COLOR: #000000"> total </SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"> intPortion </SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000"> roundedDecimalPortion;<BR></SPAN><SPAN style="COLOR: #008080">29</SPAN> <SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">30</SPAN> <SPAN style="COLOR: #000000">    </SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000"> </SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000"> Double( total );<BR></SPAN><SPAN style="COLOR: #008080">31</SPAN> <SPAN style="COLOR: #000000">  }<BR></SPAN><SPAN style="COLOR: #008080">32</SPAN> <SPAN style="COLOR: #000000">}</SPAN></DIV><img src ="http://www.tkk7.com/limq/aggbug/13694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/limq/" target="_blank">limq</a> 2005-09-21 23:59 <a href="http://www.tkk7.com/limq/archive/2005/09/21/13694.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Jakarta Commons:宸х敤綾誨拰緇勪歡錛堣漿錛?/title><link>http://www.tkk7.com/limq/archive/2005/09/21/13611.html</link><dc:creator>limq</dc:creator><author>limq</author><pubDate>Wed, 21 Sep 2005 02:03:00 GMT</pubDate><guid>http://www.tkk7.com/limq/archive/2005/09/21/13611.html</guid><wfw:comment>http://www.tkk7.com/limq/comments/13611.html</wfw:comment><comments>http://www.tkk7.com/limq/archive/2005/09/21/13611.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/limq/comments/commentRss/13611.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/limq/services/trackbacks/13611.html</trackback:ping><description><![CDATA[Jakarta Commons鏄疛akarta鐨勫瓙欏圭洰錛屽畠鍒涘緩鍜岀淮鎶ょ潃璁稿鐙珛杞歡鍖咃紝榪欎簺鍖呬竴鑸笌鍏朵粬妗嗘灦鎴栦駭鍝佹棤鍏籌紝鍏朵腑鏀墮泦浜嗗ぇ閲忓皬鍨嬨佸疄鐢ㄧ殑緇勪歡錛屽ぇ閮ㄥ垎闈㈠悜鏈嶅姟鍣ㄧ緙栫▼銆?<br /><br />銆銆Commons鐨勫寘鍒嗘垚涓ら儴鍒嗭細Sandbox錛孋ommons浠g爜搴撱係andbox鏄竴涓祴璇曞鉤鍙幫紝鐢ㄦ潵媯楠屽悇縐嶈鎯熾佽鍒掋傛湰鏂囦粙緇嶇殑緇勪歡灞炰簬Commons浠g爜搴擄紝鏂囩珷灝嗗睍紺哄悇涓粍浠剁殑鍔熻兘銆侀傜敤鍦哄悎錛屽茍閫氳繃綆鍗曠殑渚嬪瓙浠嬬粛鍏剁敤娉曘?<br /><br />銆銆<b>涓銆佹榪?/b><br /><br />銆銆鍙噸鐢ㄦф槸Jakarta Commons欏圭洰鐨勭伒欖傛墍鍦ㄣ傝繖浜涘寘鍦ㄨ璁¢樁孌靛氨宸茬粡鑰冭檻浜嗗彲閲嶇敤鎬ч棶棰樸傚叾涓竴浜涘寘錛屼緥濡侰ommons閲岄潰鐢ㄦ潵璁板綍鏃ュ織鐨凩ogging鍖咃紝鏈鍒濇槸涓哄叾浠栭」鐩璁$殑錛屼緥濡侸akarta Struts欏圭洰錛屽綋浜轟滑鍙戠幇榪欎簺鍖呭浜庡叾浠栭」鐩篃闈炲父鏈夌敤錛岃兘澶熸瀬澶у湴甯姪鍏朵粬欏圭洰鐨勫紑鍙戯紝浠栦滑鍐沖畾涓鴻繖浜涘寘鏋勯犱竴涓?鍏叡"鐨勫瓨鏀句綅緗紝榪欏氨鏄疛akarta Commons欏圭洰銆?<br /><br />銆銆涓轟簡鐪熸鎻愰珮鍙噸鐢ㄦэ紝姣忎竴涓寘閮藉繀欏諱笉渚濊禆浜庡叾浠栧ぇ鍨嬬殑妗嗘灦鎴栭」鐩傚洜姝わ紝Commons欏圭洰鐨勫寘鍩烘湰涓婇兘鏄嫭绔嬬殑錛屼笉浠呮槸鐩稿浜庡叾浠栭」鐩殑鐙珛錛岃屼笖鐩稿浜嶤ommons鍐呴儴鐨勫ぇ閮ㄥ垎鍏朵粬鍖呯嫭绔嬨傝櫧鐒跺瓨鍦ㄤ竴浜涗緥澶栫殑鎯呭喌錛屼緥濡侭etwixt鍖呰鐢ㄥ埌XML API錛屼絾緇濆ぇ閮ㄥ垎鍙嬌鐢ㄦ渶鍩烘湰鐨凙PI錛屽叾涓昏鐩殑灝辨槸瑕佽兘澶熼氳繃綆鍗曠殑鎺ュ彛鏂逛究鍦拌皟鐢ㄣ?<br /><br />銆銆涓嶈繃鐢變簬宕囧皻綆媧侊紝璁稿鍖呯殑鏂囨。鍙樺緱榪囦簬綆闄嬶紝緙轟箯緇存姢鍜屾敮鎸侊紝鐢氳嚦鏈変竴閮ㄥ垎榪樻湁閿欒鐨勯摼鎺ワ紝鏂囨。涔熷皯寰楀彲鎬溿傚ぇ閮ㄥ垎鐨勫寘闇瑕佹垜浠嚜宸卞幓鎵懼嚭鍏剁敤娉曪紝鐢氳嚦鏈夋椂榪橀渶瑕佹垜浠嚜宸卞幓鍒嗘瀽鍏墮傜敤鍦哄悎銆傛湰鏂囧皢閫愪竴浠嬬粛榪欎簺鍖咃紝甯屾湜鑳藉甯姪浣犺繀閫熸帉鎻¤繖涓縐瘡浜嗚澶氫漢蹇冭鐨勫厤璐逛唬鐮佸簱銆?<br /><br />銆銆璇存槑錛欽akarta Commons鍜?a target="_blank">Apache Commons</a>鏄笉鍚岀殑錛屽悗鑰呮槸Apache Software Foundation鐨勪竴涓《灞傞」鐩紝鍓嶈呭垯鏄疛akarta欏圭洰鐨勪竴涓瓙欏圭洰錛屽悓鏄篃鏄湰鏂囪璁ㄨ鐨勪富瑙掋傛湰鏂囧悗闈㈠嚒鏄彁鍒癈ommons鐨勫湴鏂歸兘鏄寚Jakarta鐨凜ommons銆?<br /><br />銆銆涓轟簡渚夸簬璇存槑錛屾湰鏂囨妸Commons欏圭洰鍗佸叓涓垚鍝佺駭鐨勭粍浠訛紙鎺掗櫎浜咵L銆丩atka鍜孞exl錛夊垎鎴?綾伙紝濡備笅琛ㄦ墍紺恒?<br /><br /><br />鍙傝?<a href="/sean/archive/2005/08.html">http://www.tkk7.com/sean/archive/2005/08.html</a><br /><br /><center>聽</center><br /><br />銆銆蹇呴』鎸囧嚭鐨勬槸錛岃繖縐嶅垎綾誨彧鏄負浜嗘柟渚挎枃绔犺鏄庯紝Commons欏圭洰閲岄潰瀹為檯涓婂茍涓嶅瓨鍦ㄨ繖縐嶅垎綾伙紝鍚屾椂榪欎簺鍒嗙被鐨勮竟鐣屾湁鏃朵篃瀛樺湪涓瀹氱殑閲嶅彔銆?<br /><br />銆銆鏈枃棣栧厛浠嬬粛Web鐩稿叧綾誨拰鍏朵粬綾婚噷闈㈢殑緇勪歡錛屼笅涓綃囨枃绔犲皢娑夊強XML鐩稿叧銆佸寘瑁呰繖涓ょ被錛屾渶鍚庝竴綃囨枃绔犱笓闂ㄤ粙緇嶅睘浜庡伐鍏風被鐨勫寘銆?<br /><br />銆銆<b>浜屻佸叾浠栫被</b><br /><br />銆銆CLI銆丏iscovery銆丩ang鍜孋ollections鍖呭綊鍏ュ叾浠栫被錛岃繖鏄洜涓哄畠浠兘鍚勮嚜閽堝鏌愪釜鏄庣‘銆佸疄鐢ㄧ殑灝忕洰鏍囷紝鍙皳涓撹岀簿銆?<br /><br />銆銆<b>2.1 CLI</b><br /><br />銆銆鈻?姒傚喌錛欳LI鍗矯ommand Line Interface錛屼篃灝辨槸"鍛戒護琛屾帴鍙?錛屽畠涓篔ava紼嬪簭璁塊棶鍜岃В鏋愬懡浠よ鍙傛暟鎻愪緵浜嗕竴縐嶇粺涓鐨勬帴鍙c?<br /><br />銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉</a>錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a><br /><br />銆銆鈻?浣曟椂閫傜敤錛氬綋浣犻渶瑕佷互涓縐嶄竴鑷寸殑銆佺粺涓鐨勬柟寮忚闂懡浠よ鍙傛暟涔嬫椂銆?<br /><br />銆銆鈻?紺轟緥搴旂敤錛欳LIDemo.java銆侰LASSPATH涓繀欏誨寘鍚玞ommons-cli-1.0.jar銆?<br /><br />銆銆鈻?璇存槑錛?<br /><br />銆銆鏈夊灝戞浣犱笉寰椾笉涓轟竴涓柊鐨勫簲鐢ㄧ▼搴忛噸鏂拌璁℃柊鐨勫懡浠よ鍙傛暟澶勭悊鏂瑰紡錛熷鏋滆兘澶熷彧鐢ㄦ煇涓崟涓鐨勬帴鍙o紝緇熶竴瀹屾垚璇稿瀹氫箟杈撳叆鍙傛暟錛堟槸鍚︿負寮哄埗鍙傛暟錛屾暟鍊艱繕鏄瓧絎︿覆錛岀瓑絳夛級銆佹牴鎹竴緋誨垪瑙勫垯鍒嗘瀽鍙傛暟銆佺‘瀹氬簲鐢ㄨ閲囩敤鐨勮礬寰勭瓑浠誨姟錛岄偅璇ュ濂斤紒絳旀灝卞湪CLI銆?<br /><br />銆銆鍦–LI涓紝姣忎竴涓兂瑕佸湪鍛戒護涓寚瀹氱殑鍙傛暟閮芥槸涓涓狾ption瀵硅薄銆傞鍏堝垱寤轟竴涓狾ptions瀵硅薄錛屽皢鍚勪釜Option瀵硅薄鍔犲叆Options瀵硅薄錛岀劧鍚庡埄鐢–LI鎻愪緵鐨勬柟娉曟潵瑙f瀽鐢ㄦ埛鐨勮緭鍏ュ弬鏁般侽ption瀵硅薄鍙互瑕佹眰鐢ㄦ埛蹇呴』杈撳叆鏌愪釜鍙傛暟錛屼緥濡傚繀欏誨湪鍛戒護琛屾彁渚涙枃浠跺悕瀛椼傚鏋滄煇涓弬鏁版槸蹇呴』鐨勶紝鍒涘緩Option瀵硅薄鐨勬椂鍊欏氨瑕佹樉寮忓湴鎸囧畾銆?<br /><br />銆銆涓嬮潰鏄嬌鐢–LI鐨勬楠ゃ?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>// 鈥? // 鈶? 鍒涘緩涓涓狾ptions錛? Options options = new Options(); options.addOption("t", false, "current time"); // 鈥? // 鈶?鍒涘緩涓涓В鏋愬櫒錛屽垎鏋愯緭鍏ワ細 CommandLineParser parser = new BasicParser(); CommandLine cmd; try { cmd = parser.parse(options, args); } catch (ParseException pe) { usage(options); return; } // 鈥? // 鈶?鏈鍚庡氨鍙互鏍規嵁鐢ㄦ埛鐨勮緭鍏ワ紝閲囧彇鐩稿簲鐨勬搷浣滐細 if (cmd.hasOption("n")) { System.err.println("Nice to meet you: " + cmd.getOptionValue('n')); }</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆榪欏氨鏄嬌鐢–LI鐨勫畬鏁磋繃紼嬩簡銆傚綋鐒訛紝CLI榪樻彁渚涗簡鍏朵粬楂樼駭閫夐」錛屼緥濡傛帶鍒舵牸寮忓拰瑙f瀽榪囩▼絳夛紝浣嗗熀鏈殑浣跨敤鎬濊礬浠嶆槸涓鑷寸殑銆傝鍙傝鏈枃鏈鍚庢彁渚涚殑紺轟緥紼嬪簭銆?<br /><br />銆銆<b>2.2 Discovery</b><br /><br />銆銆鈻?姒傚喌錛欴iscovery緇勪歡鏄彂鐜版ā寮忥紙Discovery Pattern錛夌殑涓涓疄鐜幫紝瀹冪殑鐩爣鏄寜鐓т竴縐嶇粺涓鐨勬柟寮忓畾浣嶅拰瀹炰緥鍖栫被浠ュ強鍏朵粬璧勬簮銆?<br /><br />銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉</a>錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a>銆?<br /><br />銆銆鈻?浣曟椂閫傜敤錛氬綋浣犳兂鐢ㄦ渶浣崇殑綆楁硶鍦↗ava紼嬪簭涓煡鎵綣ava鎺ュ彛鐨勫悇縐嶅疄鐜頒箣鏃躲?<br /><br />銆銆鈻?搴旂敤瀹炰緥錛欴iscoveryDemo.java錛孧yInterface.java錛孧yImpl1.java錛孧yImpl2.java錛孧yInterface銆傝姹侰LASSPATH涓繀欏誨寘鍚玞ommons-discovery.jar鍜宑ommons-logging.jar銆?<br /><br />銆銆鈻?璇存槑錛?<br /><br />銆銆Discovery鐨勬剰鎬濆氨鏄?鍙戠幇"錛屽畠璇曞浘鐢ㄦ渶浣崇殑綆楁硶鏌ユ壘鏌愪釜鎺ュ彛鐨勬墍鏈夊凡鐭ョ殑瀹炵幇銆傚湪浣跨敤鏈嶅姟鐨勫満鍚堬紝褰撴垜浠兂瑕佹煡鎵炬煇涓湇鍔$殑鎵鏈夊凡鐭ョ殑鎻愪緵鑰呮椂錛孌iscovery緇勪歡灝ゅ叾鏈夌敤銆?<br /><br />銆銆鑰冭檻涓涓嬭繖縐嶆儏褰細鎴戜滑涓烘煇涓壒鍒鏉傜殑浠誨姟緙栧啓浜嗕竴涓帴鍙o紝鎵鏈夎鎺ュ彛鐨勫疄鐜伴兘鐢ㄥ悇涓嶇浉鍚岀殑鏂瑰紡鏉ュ畬鎴愯繖涓鏉備換鍔★紝鏈緇堢敤鎴峰彲浠ユ牴鎹渶瑕佹潵閫夋嫨瀹屾垚浠誨姟鐨勫叿浣撴柟寮忋傞偅涔堬紝鍦ㄨ繖縐嶆儏褰笅錛屾渶緇堢敤鎴峰簲璇ョ敤浠涔堝姙娉曟潵鎵懼嚭鎺ュ彛鐨勬墍鏈夊彲鐢ㄥ疄鐜幫紙鍗沖彲鑳界殑瀹屾垚浠誨姟鐨勬柟寮忥級鍛紵 <br /><br />銆銆涓婇潰鎻忚堪鐨勬儏褰㈠氨鏄墍璋撶殑鏈嶅姟-鏈嶅姟鎻愪緵鑰呬綋緋匯傛湇鍔$殑鍔熻兘鐢辨帴鍙f弿榪幫紝鏈嶅姟鎻愪緵鑰呭垯鎻愪緵鍏蜂綋鐨勫疄鐜般傜幇鍦ㄧ殑闂鏄渶緇堢敤鎴瘋鐢ㄦ煇縐嶅姙娉曟潵瀵繪壘緋葷粺涓凡緇忓畨瑁呬簡鍝簺鏈嶅姟鎻愪緵鑰呫傚湪榪欑鎯呭艦涓嬶紝Discovery緇勪歡灝卞緢鏈夌敤浜嗭紝瀹冧笉浠呭彲浠ョ敤鏉ユ煡鎵鵑偅浜涘疄鐜頒簡鐗瑰畾鎺ュ彛鐨勭被錛岃屼笖榪樺彲浠ョ敤鏉ユ煡鎵捐祫婧愶紝渚嬪鍥劇墖鎴栧叾浠栨枃浠剁瓑銆傚湪鎵ц榪欎簺鎿嶄綔鏃訛紝Discovery閬典粠Sun鐨勬湇鍔℃彁渚涜呬綋緋繪墍瀹氫箟鐨勮鍒欍?<br /><br />銆銆鐢變簬榪欎釜鍘熷洜錛屼嬌鐢―iscovery緇勪歡紜疄甯︽潵璁稿鏂逛究銆傝璇昏呭弬闃呮湰鏂囧悗闈㈢ず渚嬬▼搴忎腑鐨勬帴鍙yInterface.java鍜屼袱涓疄鐜扮被MyImpl1.java銆丮yImple2.java錛屼簡瑙d笅闈緥瀛愮殑緇嗚妭銆傚湪浣跨敤Discovery鐨勬椂鍊欒鎻愪緵MyInterface鏂囦歡錛屾妸瀹冩斁鍏ETA-INF/services鐩綍錛屾敞鎰忚鏂囦歡鐨勫悕瀛楀搴旀帴鍙g殑瀹屾暣闄愬畾鍚嶇О錛團ully Qualified Name錛夛紝濡傛灉鎺ュ彛灞炰簬鏌愪釜鍖咃紝璇ユ枃浠剁殑鍚嶅瓧涔熷繀欏葷浉搴斿湴鏀瑰彉銆?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>// 鈥? // 鈶?鍒涘緩涓涓被瑁呭叆鍣ㄧ殑瀹炰緥銆? ClassLoaders loaders = ClassLoaders.getAppLoaders(MyInterface.class, getClass(), false); // 鈥? // 鈶?鐢―iscoverClass鐨勫疄渚嬫潵鏌ユ壘瀹炵幇綾匯? DiscoverClass discover = new DiscoverClass(loaders); // 鈥? // 鈶?鏌ユ壘瀹炵幇浜嗘寚瀹氭帴鍙g殑綾伙細 Class implClass = discover.find(MyInterface.class); System.err.println("Implementing Provider: " + implClass.getName());</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆榪愯涓婇潰鐨勪唬鐮侊紝灝卞彲浠ュ緱鍒板湪MyInterface鏂囦歡涓敞鍐岀殑綾匯傚啀嬈℃彁閱掞紝濡傛灉浣犵殑瀹炵幇鏄皝瑁呭湪鍖呴噷闈㈢殑錛屽湪榪欓噷娉ㄥ唽鐨勫悕瀛椾篃搴旇浣滅浉搴斿湴淇敼錛屽鏋滆鏂囦歡娌℃湁鏀懼湪姝g‘鐨勪綅緗紝鎴栬呮寚瀹氬悕瀛楃殑瀹炵幇綾諱笉鑳芥壘鍒版垨瀹炰緥鍖栵紝紼嬪簭灝嗘姏鍑篋iscoverException錛岃〃紺烘壘涓嶅埌絎﹀悎鏉′歡鐨勫疄鐜般備笅闈㈡槸MyInterface鏂囦歡鍐呭鐨勪竴涓緥瀛愶細MyImpl2 # Implementation 2銆?<br /><br />銆銆褰撶劧錛屽疄鐜扮被鐨勬敞鍐屽姙娉曞茍闈炲彧鏈夎繖涔堜竴縐嶏紝鍚﹀垯鐨勮瘽Discovery鐨勫疄鐢ㄦу氨瑕佸ぇ鎵撴姌鎵d簡錛佸疄闄呬笂錛屾寜鐓iscovery鍐呴儴鐨勭被鏌ユ壘鏈哄埗錛屾寜鐓ц繖縐嶆柟娉曟敞鍐岀殑綾誨皢鏄疍iscovery鏈鍚庢壘鍒扮殑綾匯傚彟涓縐嶅父鐢ㄧ殑娉ㄥ唽鏂規硶鏄氳繃緋葷粺灞炴ф垨鐢ㄦ埛瀹氫箟鐨勫睘鎬ф潵浼犻掑疄鐜扮被鐨勫悕瀛楋紝渚嬪錛屾斁寮僊ETA-INF/services鐩綍涓嬬殑鏂囦歡錛屾敼涓烘墽琛宩ava -DMyInterface=MyImpl1 DiscoveryDemo鍛戒護鏉ヨ繍琛岀ず渚嬬▼搴忥紝榪欓噷鐨勭郴緇熷睘鎬ф槸鎺ュ彛鐨勫悕瀛楋紝鍊兼槸璇ユ帴鍙g殑鎻愪緵鑰咃紝榪愯鐨勭粨鏋滄槸瀹屽叏涓鏍風殑銆?<br /><br />銆銆Discovery榪樺彲浠ョ敤鏉ュ垱寤烘湇鍔℃彁渚涜呯殑(singleton)瀹炰緥騫惰皟鐢ㄥ叾鏂規硶錛岃娉曞涓嬶細((MyInterface)discover.newInstance(MyInterface.class)).myMethod();銆傛敞鎰忓湪榪欎釜渚嬪瓙涓紝鎴戜滑騫朵笉鐭ラ亾鍒板簳鍝竴涓湇鍔℃彁渚涜呭疄鐜頒簡myMethod錛岀敋鑷蟲垜浠牴鏈笉蹇呭叧蹇冭繖涓鐐廣傚叿浣撶殑鎯呭艦涓庤繍琛岃繖孌典唬鐮佺殑鏂瑰紡浠ュ強榪愯鐜涓凡緇忔敞鍐屼簡浠涔堟湇鍔℃彁渚涜呮湁鍏籌紝鍦ㄤ笉鍚岀殑鐜涓嬭繍琛岋紝瀹為檯寰楀埌鐨勬湇鍔℃彁渚涜呭彲鑳戒笉鍚屻?<br /><br />銆銆<b>2.3 Lang</b><br /><br />銆銆鈻?姒傚喌錛歀ang鏄痡ava.lang鐨勪竴涓墿灞曞寘錛屽鍔犱簡璁稿鎿嶄綔String鐨勫姛鑳斤紝鍙﹀榪樻敮鎸丆椋庢牸鐨勬灇涓鵑噺銆?<br /><br />銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉</a>錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a>銆?<br /><br />銆銆鈻?浣曟椂閫傜敤錛氬綋java.lang鍖呮彁渚涚殑鏂規硶鏈兘婊¤凍闇瑕侊紝鎯寵鏇村鐨勫姛鑳芥潵澶勭悊String銆佹暟鍊煎拰System灞炴ф椂錛涜繕鏈夛紝褰撲綘鎯寵浣跨敤C椋庢牸鐨勬灇涓鵑噺鏃躲?<br /><br />銆銆鈻?紺轟緥搴旂敤錛歀angDemo.java錛孧ortgage.java錛孫nTV.java銆侰LASSPATH涓繀欏誨寘鍚玞ommons-lang.jar銆?<br /><br />銆銆鈻?璇存槑錛?<br /><br />銆銆榪欎釜鍖呮彁渚涗簡璁稿鍑轟簬鏂逛究鐩殑鑰屾彁渚涚殑鏂規硶錛屽畠浠腑鐨勫ぇ澶氭暟鏄潤鎬佺殑錛岀畝鍖栦簡鏃ュ父緙栫爜宸ヤ綔銆係tringUtils綾繪槸鍏朵腑鐨勪竴涓唬琛紝瀹冧嬌寰楀紑鍙戣呰兘澶熻秴瓚婃爣鍑嗙殑java.lang.String鍖呮潵澶勭悊瀛楃涓層備嬌鐢ㄨ繖浜涙柟娉曞緢綆鍗曪紝閫氬父鍙鍦ㄨ皟鐢ㄩ潤鎬佹柟娉曟椂鎻愪緵閫傚綋鐨勫弬鏁板氨鍙互浜嗐備緥濡傦紝濡傛灉瑕佸皢鏌愪釜鍗曡瘝鐨勯瀛楃鏀逛負澶у啓錛屽彧闇璋冪敤錛歋tringUtils.capitalise("name")錛岃皟鐢ㄧ殑杈撳嚭緇撴灉鏄疦ame銆傝嫻忚StringUtils API鏂囨。浜嗚В鍏朵粬闈欐佹柟娉曪紝涔熻浣犱細鎵懼埌涓浜涘彲浠ョ洿鎺ユ嬁鏉ヤ嬌鐢ㄧ殑浠g爜銆傛湰鏂囨彁渚涚殑紺轟緥紼嬪簭紺鴻寖浜嗗叾涓竴浜涙柟娉曠殑浣跨敤銆?<br /><br />銆銆鍙︿竴涓煎緱娉ㄦ剰鐨勭被鏄疪andomStringUtils錛屽畠鎻愪緵浜嗙敓鎴愰殢鏈哄瓧絎︿覆鐨勬柟娉曪紝鐢ㄦ潵鍒涘緩闅忔満瀵嗙爜瀹炲湪澶柟渚夸簡銆?<br /><br />銆銆NumberUtils綾繪彁渚涗簡澶勭悊鏁板兼暟鎹殑鏂規硶錛岃澶氭柟娉曞煎緱涓鐢紝渚嬪瀵繪壘鏈澶с佹渶灝忔暟鐨勬柟娉曪紝灝哠tring杞崲鎴愭暟鍊肩殑鏂規硶錛岀瓑絳夈侼umberRange鍜孋harRange綾誨垎鍒彁渚涗簡鍒涘緩鍜屾搷浣滄暟鍊艱寖鍥淬佸瓧絎﹁寖鍥寸殑鏂規硶銆?<br /><br />銆銆Builder鍖呴噷鐨勭被鎻愪緵浜嗕竴浜涚壒孌婄殑鏂規硶錛屽彲鐢ㄦ潵鏋勯犵被鐨則oString銆乭ashCode銆乧ompareTo鍜宔quals鏂規硶錛屽叾鍩烘湰鎬濊礬灝辨槸鏋勯犲嚭綾葷殑楂樿川閲忕殑toString銆乭ashCode銆乧ompareTo鍜宔quals鏂規硶錛屼粠鑰屽厤鍘諱簡鐢ㄦ埛鑷繁瀹氫箟榪欎簺鏂規硶涔嬪姵錛屽彧瑕佽皟鐢ㄤ竴涓婤uilder鍖呴噷闈㈢殑鏂規硶灝卞彲浠ヤ簡銆備緥濡傦紝鎴戜滑鍙互鐢═oStringBuilder鏉ユ瀯閫犲嚭綾葷殑toString鎻忚堪錛屽涓嬩緥鎵紺猴細 <br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>public class Mortgage { private float rate; private int years; .... public String toString() { return new ToStringBuilder(this). append("rate", this.rate). append("years", this.years). toString(); } }</ccid_code></pre></td></tr></tbody></table><span id="46ie6m2" class="myp11"><font id="zoom">銆銆浣跨敤榪欑被鏂規硶鏈変粈涔堝ソ澶勫憿錛熸樉鐒訛紝瀹冧嬌寰楁垜浠湁鍙兘閫氳繃涓縐嶇粺涓鐨勬柟寮忓鐞嗘墍鏈夋暟鎹被鍨嬨傛墍鏈塀uilder鏂規硶鐨勭敤娉曢兘鍜屼笂渚嬬浉浼箋?<br /><br />銆銆Java娌℃湁C椋庢牸鐨勬灇涓鵑噺錛屼負姝わ紝lang鍖呮彁渚涗簡涓涓被鍨嬪畨鍏ㄧ殑Enum綾誨瀷錛屽~琛ヤ簡絀虹櫧銆侲num綾繪槸鎶借薄鐨勶紝濡傛灉浣犺鍒涘緩鏋氫婦閲忥紝灝辮鎵╁睍Enum綾匯備笅闈㈢殑渚嬪瓙娓呮鍦拌鏄庝簡Enum鐨勭敤娉曘?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>import org.apache.commons.lang.enum.Enum; import java.util.Map; import java.util.List; import java.util.Iterator; public final class OnTV extends Enum { public static final OnTV IDOL= new OnTV("Idol"); public static final OnTV SURVIVOR = new OnTV("Survivor"); public static final OnTV SEINFELD = new OnTV("Seinfeld"); private OnTV(String show) { super(show); } public static OnTV getEnum(String show){ return (OnTV) getEnum(OnTV.class, show); } public static Map getEnumMap() { return getEnumMap(OnTV.class); } public static List getEnumList() { return getEnumList(OnTV.class); } public static Iterator iterator() { return iterator(OnTV.class); } }</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆浠ュ悗鎴戜滑灝卞彲浠ユ寜鐓т笅闈㈢殑鏂瑰紡浣跨敤鏋氫婦鍙橀噺錛歄nTV.getEnum("Idol")銆傝璋冪敤浠庡墠闈㈠垱寤虹殑鏋氫婦鏁版嵁綾誨瀷榪斿洖Idol銆傝繖涓緥瀛愭瘮杈冪畝鍗曪紝瀹為檯涓奅num綾昏繕鎻愪緵浜嗚澶氭湁鐢ㄧ殑鏂規硶錛岃鍙傝鏈枃鍚庨潰鎻愪緵鐨勫畬鏁村疄渚嬨?<br /><br />銆銆<b>2.4 Collections</b><br /><br />銆銆鈻?姒傚喌錛氭墿灞曚簡Java Collection妗嗘灦錛屽娣諱簡鏂扮殑鏁版嵁緇撴瀯銆佽凱浠f満鍒跺拰姣旇緝鎿嶄綔絎︺?<br /><br />銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉</a>錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a>銆?<br /><br />銆銆鈻?浣曟椂閫傜敤錛氬嚑涔庢墍鏈夐渶瑕佹搷浣滄暟鎹粨鏋勭殑閲嶈Java寮鍙戦」鐩兘鍙互浣跨敤Collections API銆傚拰Java鐨勬爣鍑嗗疄鐜扮浉姣旓紝Collections API鏈夌潃璇稿浼樺娍銆?<br /><br />銆銆鈻?紺轟緥搴旂敤錛欳ollectionsDemo.java銆傝姹侰LASSPATH涓寘鍚玞ommons-collections.jar銆?<br /><br />銆銆鈻?璇存槑錛?<br /><br />銆銆瑕佸湪鏈夐檺鐨勬枃绔犵瘒騫呬箣鍐呰灝藉湴浠嬬粛 Collections API瀹炲湪鏄お鍥伴毦浜嗭紝涓嶈繃榪欓噷浠嶅皢娑電洊澶у鏁版渶閲嶈鐨勭被錛屽笇鏈涜兘澶熷紩璧蜂綘鐨勫叴瓚o紝璁ょ湡浜嗚В涓涓嬪叾浣欑殑綾匯侰ollections鏈韓鐨勬枃妗d篃鎻愪緵浜嗚澶氳祫鏂欏茍瑙i噴浜嗘瘡涓涓被鐨勭敤娉曘?<br /><br />銆銆Bag鎺ュ彛鎵╁睍鏍囧噯鐨凧ava Collection錛屽厑璁哥敓鎴愯鏁板櫒鏉ヨ窡韙狟ag閲岄潰鐨勬墍鏈夊厓绱犮傚綋浣犳兂瑕佽窡韙繘鍑烘煇涓泦鍚堢殑鍏冪礌鐨勬繪暟鏃訛紝Bag鏄潪甯告湁鐢ㄧ殑銆傜敱浜嶣ag鏈韓鏄竴涓帴鍙o紝鎵浠ュ疄闄呬嬌鐢ㄧ殑搴旇鏄疄鐜頒簡璇ユ帴鍙g殑綾伙紝渚嬪HashBag鎴朤reeBag--浠庤繖浜涚被鐨勫悕瀛椾篃鍙互鐪嬪嚭錛孒ashBag瀹炵幇鐨勬槸涓涓狧ashMap鐨凚ag錛岃孴reeBag瀹炵幇鐨勬槸TreeMap鐨凚ag銆侭ag鎺ュ彛涓袱涓渶閲嶈鐨勬柟娉曟槸錛歡etCount(Object o)錛岀敤鏉ヨ繑鍥濨ag閲岄潰鐗瑰畾瀵硅薄鐨勫嚭鐜版鏁幫紱uniqueSet()錛岃繑鍥炴墍鏈夊敮涓鍏冪礌銆?<br /><br />銆銆Buffer鎺ュ彛鍏佽鎸夌収棰勫畾涔夌殑嬈″簭鍒犻櫎闆嗗悎涓殑瀵硅薄錛屽垹闄ゆ搴忓彲浠ユ槸LIFO錛圠ast In First Out錛屽悗榪涘厛鍑猴級錛屾垨FIFO錛團irst In First Out錛屽厛榪涘厛鍑猴級錛屽彟澶栬繕鍙互鏄嚜瀹氫箟鐨勬搴忋備笅闈㈡潵鐪嬬湅濡備綍瀹炵幇涓涓狟uffer錛屾寜鐓ц嚜鐒舵搴忓垹闄ゅ厓绱犮?<br /><br />銆銆BinaryHeap綾誨疄鐜頒簡Buffer鎺ュ彛錛岃兘澶熸寜鐓ц嚜鐒舵搴忓垹闄ゅ厓绱犮傚鏋滆棰犲掓搴忥紝鍒欏繀欏諱紶鍏ヤ竴涓猣alse錛屽憡璇塇eap閲囩敤鑷劧嬈″簭鐨勯嗗簭銆?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>BinaryHeap heap = new BinaryHeap(); // 鈥? // 灝嗗厓绱犲姞鍏ヨHeap heap.add(new Integer(-1)); heap.add(new Integer(-10)); heap.add(new Integer(0)); heap.add(new Integer(-3)); heap.add(new Integer(5)); //鈥? // 鍒犻櫎涓涓厓绱? heap.remove();</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆璋冪敤璇eap鐨剅emove錛屾寜鐓ц嚜鐒舵搴忥紝鍏冪礌闆嗗悎涓殑-10灝嗚鍒犻櫎銆傚鏋滄垜浠姹傛寜鐓ч嗗簭鎺掑簭錛屽垯琚垹闄ょ殑灝嗘槸5銆?<br /><br />銆銆FastArrayList銆丗astHashMap鍜孎astTreeMap綾昏兘澶熸寜鐓т袱縐嶆ā寮忔搷浣滐紝瓚呰秺浜嗕笌瀹冧滑瀵瑰簲鐨勬爣鍑咰ollection銆傜涓縐嶆ā寮忔槸"鎱㈡ā寮?錛岀被鐨勪慨鏀規搷浣滐紙娣誨姞銆佸垹闄ゅ厓绱狅級鏄悓姝ョ殑銆備笌姝ょ浉瀵癸紝鍙︿竴縐嶆ā寮忔槸"蹇ā寮?錛屽榪欎簺綾葷殑璁塊棶鍋囧畾涓哄彧璇繪搷浣滐紝鍥犳涓嶉渶瑕佸悓姝ワ紝閫熷害杈冨揩銆傚湪蹇ā寮忎腑錛岀粨鏋勬х殑鏀瑰姩閫氳繃涓嬪垪鏂瑰紡瀹屾垚錛氶鍏堝厠闅嗙幇鏈夌殑綾伙紝淇敼鍏嬮殕寰楀埌鐨勭被錛屾渶鍚庣敤鍏嬮殕寰楀埌鐨勭被鏇挎崲鍘熸湁鐨勭被銆侳astArrayList銆丗astHashMap鍜孎astTreeMap綾葷壒鍒傚悎浜庨偅縐嶅垵濮嬪寲涔嬪悗澶ч儴鍒嗘搷浣滈兘鏄彧璇繪搷浣滅殑澶氱嚎紼嬬幆澧冦?<br /><br />銆銆iterators鍖呬負鍚勭闆嗗悎鍜屽璞℃彁渚涙爣鍑咼ava Collection鍖呮病鏈夋彁渚涚殑榪唬鍣ㄣ傛湰鏂囩殑紺轟緥搴旂敤紺鴻寖浜咥rrayIterator錛岄氳繃榪唬鏂瑰紡璁塊棶Array鐨勫唴瀹廣俰terators鍖呴噷闈㈠悇縐嶈凱浠e櫒鐨勭敤娉曞熀鏈笂涓庢爣鍑咼ava榪唬鍣ㄤ竴鏍楓?<br /><br />銆銆鏈鍚庯紝comparators鍖呮彁渚涗簡涓浜涘疄鐢ㄧ殑姣旇緝絎︺傛墍璋撴瘮杈冪鍏跺疄涔熸槸涓涓被錛屽畠瀹氫箟鐨勬槸濡備綍姣旇緝涓や釜灞炰簬鍚屼竴綾葷殑瀵硅薄錛屽喅瀹氬畠浠殑鎺掑簭嬈″簭銆備緥濡傦紝鍦ㄥ墠闈㈡彁鍒扮殑Buffer綾諱腑錛屾垜浠彲浠ュ畾涔夎嚜宸辯殑姣旇緝絎︼紝鐢ㄨ嚜瀹氫箟鐨勬瘮杈冪鏉ュ喅瀹氬厓绱犵殑鎺掑簭嬈″簭錛岃屼笉鏄噰鐢ㄥ厓绱犵殑鑷劧鎺掑簭嬈″簭銆備笅闈㈡潵鐪嬬湅鍏蜂綋鐨勫疄鐜扮粡榪囥?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>// 鈥? // 鈶?鍒涘緩涓涓狟inaryHeap綾伙紝浣嗚繖涓嬈″弬鏁頒腑 // 鎸囧畾NullComparator銆侼ullComparator姣旇緝 // null涓庡叾浠栧璞★紝鏍規嵁nullsAreHigh鏍囪鏉? // 鍒ゆ柇null鍊兼瘮鍏朵粬瀵硅薄澶ц繕鏄皬錛氬鏋? // nullsAreHigh鐨勫兼槸false錛屽垯璁や負null瑕佹瘮 // 鍏朵粬瀵硅薄灝忋? BinaryHeap heap2 = new BinaryHeap (new NullComparator(false)); // 鈥? // 鈶?灝嗕竴浜涙暟鎹紙鍖呮嫭鍑犱釜null鍊鹼級鍔犲叆heap錛? heap2.add(null); heap2.add(new Integer("6")); heap2.add(new Integer("-6")); heap2.add(null); // 鈥? // 鈶?鏈鍚庡垹闄や竴涓厓绱狅紝Bag鍖呭惈鐨刵ull灝嗗噺灝? // 涓涓紝鍥犱負null瑕佹瘮鍏朵粬瀵硅薄灝忋? heap2.remove();</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆鏈夊叧鍏朵粬綾籆ommons緇勪歡鐨勪粙緇嶅氨鍒拌繖閲岀粨鏉熴傚鏋滀綘鎯充簡瑙f洿澶氱粏鑺備俊鎭紝璇峰弬瑙丄PI鏂囨。錛屾渶濂藉啀鐪嬬湅榪欎簺鍖呯殑婧愪唬鐮併?<br /><br />銆銆<b>涓夈乄eb綾?/b><br /><br />銆銆Web綾葷殑緇勪歡鐢ㄦ潵鎵ц涓嶹eb鐩稿叧鐨勪換鍔°?<br /><br />銆銆<b>3.1 FileUpload</b><br /><br />銆銆鈻?姒傚喌錛氫竴涓彲浠ョ洿鎺ヤ嬌鐢ㄧ殑鏂囦歡涓婅澆緇勪歡銆?<br /><br />銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉</a>銆傜敱浜庤繖涓粍浠跺皻鏈寮忓彂甯冿紝浠婂勾浜屾湀鍙戝竷鐨凚eta鐗堝張鏈夎澶欱UG錛屾墍浠ュ緩璁粠<a target="_blank">nightly builds</a>涓嬭澆鏈鏂扮殑鐗堟湰銆?<br /><br />銆銆鈻?浣曟椂閫傜敤錛氬綋浣犳兂瑕佸湪Java鏈嶅姟鍣ㄧ幆澧冧腑鍔犲叆涓涓槗鐢ㄣ侀珮鎬ц兘鐨勬枃浠朵笂杞界粍浠朵箣鏃躲?<br /><br />銆銆鈻?紺轟緥搴旂敤錛歠ileuploaddemo.jsp錛宖ileuploaddemo.htm錛屽拰msg.jsp銆傝姹傛湇鍔″櫒绔簲鐢ㄧ洰褰曠殑WEB-INF/lib涓嬮潰鏈塩ommons-fileupload-1.0-dev.jar銆?<br /><br />銆銆鈻?璇存槑錛?<br /><br />銆銆FileUpload緇勪歡瑙e喅浜嗗父瑙佺殑鏂囦歡涓婅澆闂銆傚畠鎻愪緵浜嗕竴涓槗鐢ㄧ殑鎺ュ彛鏉ョ鐞嗕笂杞藉埌鏈嶅姟鍣ㄧ殑鏂囦歡錛屽彲鐢ㄤ簬JSP鍜孲ervlet涔嬩腑銆侳ileUpload緇勪歡閬典粠RFC1867錛屽畠鍒嗘瀽杈撳叆璇鋒眰錛屽悜搴旂敤紼嬪簭鎻愪緵涓緋誨垪涓婅澆鍒版湇鍔″櫒鐨勬枃浠躲備笂杞界殑鏂囦歡鍙互淇濈暀鍦ㄥ唴瀛樹腑錛屼篃鍙互鏀懼叆涓涓復鏃朵綅緗紙鍏佽閰嶇疆涓涓〃紺烘枃浠跺ぇ灝忕殑鍙傛暟錛屽鏋滀笂杞界殑鏂囦歡瓚呰繃浜嗚鍙傛暟鎸囧畾鐨勫ぇ灝忥紝鍒欐妸鏂囦歡鍐欏叆涓涓復鏃朵綅緗級銆傚彟澶栬繕鏈変竴浜涘弬鏁板彲渚涢厤緗紝鍖呮嫭鍙帴鍙楃殑鏈澶ф枃浠躲佷復鏃舵枃浠剁殑浣嶇疆絳夈?<br /><br />銆銆涓嬮潰浠嬬粛涓涓嬩嬌鐢‵ileUpload緇勪歡鐨勬楠ゃ?<br /><br />銆銆棣栧厛鍒涘緩涓涓狧TML欏甸潰銆傛敞鎰忥紝鍑℃槸瑕佷笂杞芥枃浠剁殑琛ㄥ崟閮藉繀欏昏緗甧nctype灞炴э紝涓斿睘鎬х殑鍊煎繀欏繪槸multipart/form-data錛屽悓鏃惰姹傛柟娉曞繀欏繪槸POST銆備笅闈㈢殑琛ㄥ崟闄や簡涓婅澆涓や釜鏂囦歡錛屽彟澶栬繕鏈変竴涓櫘閫氱殑鏂囨湰杈撳叆妗嗭細 <br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code><form name="myform" action="fileuploaddemo.jsp" method="post" enctype="multipart/form-data"> 杈撳叆浣犵殑鍚嶅瓧:<br /><input size="15" name="name" /><br /> 鍥懼艦:<br /><input type="file" name="myimage" /><br /> 鏂囦歡:<br /><input type="file" name="myfile" /><br /><br /><input type="submit" value="Submit your files" name="Submit" /></form></ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆鎺ヤ笅鏉ュ垱寤篔SP欏甸潰銆?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>// 鈥? // 鈶?媯鏌ヨ緭鍏ヨ姹傛槸鍚︿負multipart鐨勮〃鍗曟暟鎹? boolean isMultipart = FileUpload. isMultipartContent(request); // 鈥? // 鈶?涓鴻璇鋒眰鍒涘緩涓涓彞鏌勶紝閫氳繃瀹冩潵瑙f瀽璇鋒眰銆傛墽琛? // 瑙f瀽鍚庯紝鎵鏈夌殑琛ㄥ崟欏圭洰閮戒繚瀛樺湪涓涓狶ist涓? DiskFileUpload upload = new DiskFileUpload(); // 閫氳繃鍙ユ焺瑙f瀽璇鋒眰錛岃В鏋愬緱鍒扮殑欏圭洰淇濆瓨鍦ㄤ竴涓狶ist涓? List items = upload.parseRequest(request); // 鈥? // 鈶?閫氳繃寰幆渚濇鑾峰緱List閲岄潰鐨勬枃浠墮」鐩傝鍖哄垎琛ㄧず // 鏂囦歡鐨勯」鐩拰鏅氱殑琛ㄥ崟杈撳叆欏圭洰錛屼嬌鐢╥sFormField() // 鏂規硶銆傛牴鎹鐞嗚姹傜殑瑕佹眰錛屾垜浠彲浠ヤ繚瀛樹笂杞界殑鏂? // 浠訛紝鎴栬呬竴涓瓧鑺備竴涓瓧鑺傚湴澶勭悊鏂囦歡鍐呭錛屾垨鑰呮墦 // 寮鏂囦歡鐨勮緭鍏ユ祦銆? Iterator itr = items.iterator(); while(itr.hasNext()) { FileItem item = (FileItem) itr.next(); // 媯鏌ュ綋鍓嶇殑欏圭洰鏄櫘閫氱殑琛ㄥ崟鍏冪礌錛岃繕鏄竴涓笂杞界殑鏂囦歡 if(item.isFormField()) { // 鑾峰緱琛ㄥ崟鍩熺殑鍚嶅瓧 String fieldName = item.getFieldName(); // 濡傛灉琛ㄥ崟鍩熺殑鍚嶅瓧鏄痭ame鈥? if(fieldName.equals("name")) request.setAttribute("msg", "Thank You: " + item.getString()); } else { // 璇ラ」鐩槸涓涓笂杞界殑鏂囦歡錛屾妸瀹冧繚瀛樺埌紓佺洏銆? // 娉ㄦ剰item.getName() // 浼氳繑鍥炰笂杞芥枃浠跺湪瀹㈡埛绔殑瀹屾暣璺緞鍚嶇О錛岃繖浼間箮鏄竴涓狟UG銆? // 涓鴻В鍐寵繖涓棶棰橈紝榪欓噷浣跨敤浜唂ullFile.getName()銆? File fullFile = new File(item.getName()); File savedFile = new File (getServletContext().getRealPath("/"), fullFile.getName()); item.write(savedFile); } }</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆鎴戜滑鍙互閫氳繃涓婅澆鍙ユ焺鐨剈pload.setSizeMax鏉ラ檺鍒朵笂杞芥枃浠剁殑澶у皬銆傚綋涓婅澆鏂囦歡鐨勫ぇ灝忚秴榪囧厑璁哥殑鍊兼椂錛岀▼搴忓皢閬囧埌寮傚父銆傚湪涓婇潰鐨勪緥瀛愪腑錛屾枃浠跺ぇ灝忕殑闄愬埗鍊兼槸-1錛岃〃紺哄厑璁鎬笂杞戒換鎰忓ぇ灝忕殑鏂囦歡銆?<br /><br />銆銆榪樻湁鍏朵粬涓浜涚暐鏈夊彉鍖栫殑浣跨敤褰㈠紡錛屾濡傚墠闈㈡墍鎸囧嚭鐨勶紝鎴戜滑鍙互鍦ㄤ笂杞界殑鏂囦歡涓婃墦寮涓涓緭鍏ユ祦錛屾垨鑰呰瀹冧滑椹葷暀鍦ㄥ唴瀛樹腑鐩磋嚦絀洪棿鍗犵敤杈懼埌涓瀹氱殑闄愬埗鍊鹼紝鎴栬呭湪鍒ゆ柇鏂囦歡綾誨瀷鐨勫熀紜涓婏紝浠tring鎴朆yte鏁扮粍鐨勫艦寮忚幏鍙栧叾鍐呭錛屾垨鑰呯洿鎺ュ垹闄ゆ枃浠躲傝繖涓鍒囬兘鍙浣跨敤FileItem綾繪彁渚涚殑鏂規硶灝卞彲浠ユ柟渚垮湴鍋氬埌錛圖efaultFileItem鏄疐ileItem鐨勪竴涓疄鐜幫級銆?/font></span><span id="soaae2c" class="myp11"><font id="zoom">銆銆<b>3.2 HttpClient</b><br /><br />銆銆鈻?姒傚喌錛氳繖涓狝PI鎵╁睍浜唈ava.net鍖咃紝鎻愪緵浜嗘ā鎷熸祻瑙堝櫒鐨勫姛鑳姐?<br /><br />銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉</a>錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a>銆?<br /><br />銆銆鈻?浣曟椂閫傜敤錛氬綋浣犺鏋勯燱eb嫻忚鍣ㄧ殑鍔熻兘錛涘綋浣犵殑搴旂敤闇瑕佷竴縐嶉珮鏁堢殑鍔炴硶榪涜HTTP/HTTPS閫氫俊鏃躲?<br /><br />銆銆鈻?紺轟緥搴旂敤錛欻ttpClientDemo.java銆傝姹侰LASSPATH涓湁commons-httpclient.jar錛宑ommon-logging.jar銆傝姹備嬌鐢↗DK 1.4鎴栨洿楂樼増鏈?<br /><br />銆銆鈻?璇存槑錛?<br /><br />銆銆HttpClient鎵╁睍鍜屽寮轟簡鏍囧噯java.net鍖咃紝鏄竴涓唴瀹瑰箍娉涚殑浠g爜搴擄紝鍔熻兘鏋佸叾涓板瘜錛岃兘澶熸瀯閫犲嚭鍚勭浣跨敤HTTP鍗忚鐨勫垎甯冨紡搴旂敤錛屾垨鑰呬篃鍙互宓屽叆鍒扮幇鏈夊簲鐢紝涓哄簲鐢ㄥ鍔犺闂瓾TTP鍗忚鐨勮兘鍔涖傚湪Commons紼沖畾鐗堜腑錛孒ttpClient鐨勬枃妗d技涔庤姣斿叾浠栧寘鏇村畬鍠勪竴浜涳紝鑰屼笖榪樺甫鏈夊嚑涓疄渚嬨備笅闈㈡垜浠氳繃涓涓畝鍗曠殑渚嬪瓙鏉ヤ簡瑙e浣曟彁鍙栦竴涓猈eb欏甸潰錛孒ttpClient鏂囨。涓篃鏈変竴涓被浼肩殑渚嬪瓙錛屾垜浠皢鎵╁厖閭d釜渚嬪瓙浣垮叾鏀寔SSL銆傛敞鎰忔湰渚嬮渶瑕丣DK 1.4鏀寔錛屽洜涓哄畠瑕佺敤鍒癑ava Secure Socket Connection搴擄紝鑰岃繖涓簱鍙湁JDK 1.4鍙婃洿楂樼殑鐗堟湰鎵嶆彁渚涖?<br /><br />銆銆鈶?棣栧厛紜畾涓涓彲浠ラ氳繃HTTPS涓嬭澆鐨勯〉闈紝鏈緥浣跨敤鐨勬槸https://www.paypal.com/銆傚悓鏃剁‘淇?JAVA_HOME%/jre/lib/security/java.security鏂囦歡鍖呭惈浜嗕笅闈㈣繖琛屼唬鐮侊細security.provider.2=com.sun.net.ssl.internal.ssl.Provider銆?<br /><br />銆銆闄や簡榪欎簺璁劇疆涔嬪錛孒TTPS榪炴帴鐨勫鐞嗘柟寮忔病鏈夊叾浠栫壒鍒殑鍦版柟--鑷沖皯瀵逛簬鏈緥鏉ヨ濡傛銆備笉榪囷紝濡傛灉榪滅▼緗戠珯浣跨敤鐨勬牴璇佷功涓嶈浣犱嬌鐢ㄧ殑Java璁ゅ彲錛屽垯棣栧厛蹇呴』瀵煎叆瀹冪殑璇佷功銆?<br /><br />銆銆鈶?鍒涘緩涓涓狧ttpClient鐨勫疄渚嬨侶ttpClient綾誨彲浠ョ湅鎴愭槸搴旂敤鐨勪富椹卞姩紼嬪簭錛屾墍鏈夐拡瀵圭綉緇滅殑鍔熻兘閮戒緷璧栦簬瀹冦侶ttpClient綾婚渶瑕佷竴涓狢onnection Manager鏉ョ鐞嗚繛鎺ャ侶ttpConnectionManager鍏佽鎴戜滑鍒涘緩鑷繁鐨勮繛鎺ョ鐞嗗櫒錛屾垨鑰咃紝鎴戜滑涔熷彲浠ョ洿鎺ヤ嬌鐢ㄥ唴寤虹殑SimpleHttpConnectionManager鎴朚ultiThreadedHttpConnectionManager綾匯傚鏋滃湪鍒涘緩HttpClient鏃舵病鏈夋寚瀹氳繛鎺ョ鐞嗗櫒錛孒ttpClient榛樿浣跨敤SimpleHttpConnectionManager銆?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>// 鍒涘緩涓涓狧ttpClient鐨勫疄渚? HttpClient client = new HttpClient();</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆鈶?鍒涘緩涓涓狧ttpMethod鐨勫疄渚嬶紝鍗崇‘瀹氫笌榪滅▼鏈嶅姟鍣ㄧ殑閫氫俊瑕侀噰鐢ㄥ摢縐嶄紶杈撴柟寮忥紝HTTP鍏佽閲囩敤鐨勪紶杈撴柟寮忓寘鎷細GET錛孭OST錛孭UT錛孌ELETE錛孒EAD錛孫PTIONS錛屼互鍙奣RACE銆傝繖浜涗紶杈撴柟寮忓垎鍒綔涓轟竴涓嫭绔嬬殑綾誨疄鐜幫紝浣嗘墍鏈夎繖浜涚被閮藉疄鐜癏ttpMethod鎺ュ彛銆傚湪鏈緥涓紝鎴戜滑浣跨敤鐨勬槸GetMethod錛屽垱寤篏etMethod瀹炰緥鏃跺湪鍙傛暟涓寚瀹氭垜浠兂瑕丟ET鐨刄RL銆?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>// 鍒涘緩涓涓狧ttpMethod鐨勫疄渚? HttpMethod method = new GetMethod(url);</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆鈶?鎵цHttpMethod瀹氫箟鐨勬彁鍙栨搷浣溿傛墽琛屽畬姣曞悗錛宔xecuteMethod鏂規硶灝嗚繑鍥炶繙紼嬫湇鍔″櫒鎶ュ憡鐨勭姸鎬佷唬鐮併傛敞鎰廵xecuteMethod灞炰簬HttpClient錛岃屼笉鏄疕ttpMethod銆?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>// 鎵цHttpMethod瀹氫箟鐨勬彁鍙栨搷浣? statusCode = client.executeMethod(method);</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆鈶?璇誨彇鏈嶅姟鍣ㄨ繑鍥炵殑搴旂瓟銆傚鏋滃墠闈㈢殑榪炴帴鎿嶄綔澶辮觸錛岀▼搴忓皢閬囧埌HttpException鎴朓OException錛屽叾涓璉OException涓鑸剰鍛崇潃緗戠粶鍑洪敊錛岀戶緇皾璇曚篃涓嶅お鍙兘鑾峰緱鎴愬姛銆傛湇鍔″櫒榪斿洖鐨勫簲絳斿彲浠ユ寜鐓у縐嶆柟寮忚鍙栵紝渚嬪浣滀負涓涓瓧鑺傛暟緇勶紝浣滀負涓涓緭鍏ユ祦錛屾垨鑰呬綔涓轟竴涓猄tring銆傝幏寰楁湇鍔″櫒榪斿洖鐨勫簲絳斿悗錛屾垜浠氨鍙互鎸夌収鑷繁鐨勯渶瑕佷換鎰忓緗畠浜嗐?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>byte[] responseBody = method.getResponseBody();</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆鈶?鏈鍚庤鍋氱殑灝辨槸閲婃斁榪炴帴銆?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>method.releaseConnection();</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆浠ヤ笂鍙槸闈炲父綆鍗曞湴浠嬬粛浜嗕竴涓婬ttpClient搴擄紝HttpClient瀹為檯鐨勫姛鑳借姣旀湰鏂囦粙緇嶇殑涓板瘜寰楀錛屼笉浠呭仴澹屼笖楂樻晥錛岃鍙傞槄API鏂囨。浜嗚В璇︽儏銆?<br /><br />銆銆<b>3.3 Net</b><br /><br />銆銆鈻?姒傚喌錛氫竴涓敤浜庢搷浣淚nternet鍩虹鍗忚鐨勫簳灞侫PI銆?<br /><br />銆銆鈻?瀹樻柟璧勬簮錛?a target="_blank">涓婚〉</a>錛?a target="_blank">浜岃繘鍒?/a>錛?a target="_blank">婧愪唬鐮?/a>銆?<br /><br />銆銆鈻?浣曟椂閫傜敤錛氬綋浣犳兂瑕佽闂悇縐岻nternet搴曞眰鍗忚涔嬫椂錛團inger錛學hois錛孴FTP錛孴elnet錛孭OP3錛孎TP錛孨NTP錛屼互鍙奡MTP錛夈?<br /><br />銆銆鈻?紺轟緥搴旂敤錛歂etDemo.java銆傝姹侰LASSPATH涓寘鍚玞ommons-net-1.0.0.jar銆?<br /><br />銆銆鈻?璇存槑錛?<br /><br />銆銆Net鍖呮槸涓涓己澶с佷笓涓氱殑綾誨簱錛岀被搴撻噷鐨勭被鏈鍒濆睘浜庝竴涓彨鍋歂etComponents鐨勫晢涓氫駭鍝併?<br /><br />銆銆Net鍖呬笉浠呮敮鎸佸鍚勭浣庡眰嬈″崗璁殑璁塊棶錛岃屼笖榪樻彁渚涗簡涓涓珮灞傜殑鎶借薄銆傚ぇ澶氭暟鎯呭喌涓嬶紝Net鍖呮彁渚涚殑鎶借薄宸茶兘婊¤凍涓鑸渶瑕侊紝瀹冧嬌寰楀紑鍙戣呬笉鍐嶉渶瑕佺洿鎺ラ潰瀵瑰悇縐嶅崗璁殑Socket綰х殑浣庡眰鍛戒護銆備嬌鐢ㄩ珮灞傛娊璞″茍涓嶅噺灝戜換浣曞姛鑳斤紝Net API鍦ㄨ繖鏂歸潰鍋氬緱寰堝嚭鑹詫紝鏃㈡彁渚涗簡瓚沖鐨勫姛鑳斤紝鍙堜笉鑷充簬鍦ㄧ壒鑹叉柟闈綔榪囧鐨勫Ε鍗忋?<br /><br />銆銆SocketClient鏄敮鎸佹墍鏈夊崗璁殑鍩虹綾伙紝瀹冩槸涓涓娊璞$被錛岃仛鍚堜簡鍚勭鍗忚閮介渶瑕佺殑鍏敤鍔熻兘銆傚悇縐嶄笉鍚屽崗璁殑浣跨敤榪囩▼鍏跺疄寰堢浉浼鹼紝棣栧厛鍒╃敤connect鏂規硶寤虹珛涓涓寚鍚戣繙紼嬫湇鍔″櫒鐨勮繛鎺ワ紝鎵ц蹇呰鐨勬搷浣滐紝鏈鍚庣粓姝笌鏈嶅姟鍣ㄧ殑榪炴帴銆備笅闈㈤氳繃瀹炰緥浠嬬粛鍏蜂綋鐨勪嬌鐢ㄦ楠ゃ?<br /><br /><ccid_nobr><table cellspacing="0" bordercolordark="#ffffff" cellpadding="2" width="540" align="center" bordercolorlight="black" border="1"><tbody><tr><td class="code" bgcolor="#e6e6e6"><pre><ccid_code>// 鈥? // 鈶?鍒涘緩涓涓鎴風銆傛垜浠皢鐢∟NTPClient //銆銆浠庢柊闂繪湇鍔″櫒涓嬭澆鏂伴椈緇勬竻鍗曘? client = new NNTPClient(); // 鈥? // 鈶?鍒╃敤鍓嶉潰鍒涘緩鐨勫鎴風榪炴帴鍒版柊闂繪湇鍔″櫒銆? //銆銆榪欓噷閫夌敤鐨勬槸涓涓柊闂葷粍杈冨皯鐨勬湇鍔″櫒銆? client.connect("aurelia.deine.net"); // 鈥? // 鈶?鎻愬彇鏂伴椈緇勬竻鍗曘備笅闈㈢殑鍛戒護灝嗚繑鍥炰竴涓? //銆銆NewsGroupInfo瀵硅薄鐨勬暟緇勩傚鏋滄寚瀹氱殑鏈? //銆銆鍔″櫒涓婁笉鍖呭惈鏂伴椈緇勶紝榪斿洖鐨勬暟緇勫皢鏄┖鐨勶紝 //銆銆濡傛灉閬囧埌浜嗛敊璇紝鍒欒繑鍥炲兼槸null銆? list = client.listNewsgroups(); //... // 鈶?鏈鍚庣粓姝笌鏈嶅姟鍣ㄧ殑榪炴帴銆? if (client.isConnected()) client.disconnect();</ccid_code></pre></td></tr></tbody></table></ccid_nobr><br /><br />銆銆蹇呴』璇存槑鐨勬槸錛宭istNewsgroups鍛戒護鍙兘闇瑕佽緝闀跨殑鏃墮棿鎵嶈兘榪斿洖錛屼竴鏂歸潰鏄洜涓虹綉緇滈熷害鐨勫獎鍝嶏紝鍙﹀涔熷彲鑳芥槸鐢變簬鏂伴椈緇勬竻鍗曞線寰鏄緢搴炲ぇ鐨勩侼ewsGroupInfo瀵硅薄鍖呭惈鏈夊叧鏂伴椈緇勭殑璇︾粏淇℃伅錛屽茍鎻愪緵浜嗕竴浜涙搷浣滄柊闂葷粍鐨勫懡浠わ紝姣斿鎻愬彇鏂囩珷鎬繪暟銆佹渶鍚庡彂甯冪殑鏂囩珷銆佸彂甯冩枃绔犵殑鏉冮檺錛岀瓑絳夈?<br /><br />銆銆鍏朵粬瀹㈡埛绔紝渚嬪FingerClient銆丳OP3Client銆乀elnetClient絳夛紝鐢ㄦ硶涔熷樊涓嶅銆?<br /><br />銆銆緇撴潫璇細鏈夊叧Web鐩稿叧綾誨拰鍏朵粬綾葷殑浠嬬粛灝卞埌姝ょ粨鏉熴傚湪涓嬩竴綃囨枃绔犱腑錛屾垜浠皢鎺㈣XML綾誨拰鍖呰綾伙紝鏈鍚庝竴綃囨枃绔犲垯浠嬬粛宸ュ叿綾匯?<br /><br />銆銆甯屾湜璇昏呮湁鍏磋叮璇曡瘯鏈枃鎻愪緵鐨勭▼搴忓疄渚嬨傚緢澶氭椂鍊橨akarta Commons緇欎漢浠ユ販涔辯殑鎰熻錛屽笇鏈涙湰鏂囦嬌浣犲姞娣變簡瀵笿akarta Commons浜嗚В錛屾垨鑰呰嚦灝戝紩璧蜂簡浣犲Commons瀛愰」鐩互鍙婂畠鎻愪緵鐨勫悇縐嶅疄鐢ˋPI鍜屽簱鐨勫叴瓚c?<br /><br />璇蜂粠榪欓噷涓嬭澆鏈枃浠g爜錛?a target="_blank">JakartaCommons1_code.zip</a><br /></font></span></ccid_nobr><img src ="http://www.tkk7.com/limq/aggbug/13611.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/limq/" target="_blank">limq</a> 2005-09-21 10:03 <a href="http://www.tkk7.com/limq/archive/2005/09/21/13611.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://nonobo.com" target="_blank">亚洲大成色www永久网站</a>| <a href="http://cshjjc.com" target="_blank">国产伦精品一区二区三区免费迷</a>| <a href="http://zygwkqf.com" target="_blank">亚洲日本韩国在线</a>| <a href="http://ydysmedia.com" target="_blank">国产亚洲精品仙踪林在线播放</a>| <a href="http://jgxsdst.com" target="_blank">最近中文字幕无吗高清免费视频</a>| <a href="http://asdfghjklzxcv.com" target="_blank">亚洲欧洲中文日产</a>| <a href="http://qq2071.com" target="_blank">182tv免费观看在线视频</a>| <a href="http://952268.com" target="_blank">亚洲日产2021三区</a>| <a href="http://igo98.com" target="_blank">无码人妻一区二区三区免费手机</a>| <a href="http://www-2236444.com" target="_blank">亚洲av日韩av综合</a>| <a href="http://33338x.com" target="_blank">日韩成全视频观看免费观看高清</a>| <a href="http://mmm19.com" target="_blank">国产精品亚洲专区无码WEB</a>| <a href="http://bcz123.com" target="_blank">亚洲AV成人潮喷综合网</a>| <a href="http://www-33758.com" target="_blank">国产国产人免费人成成免视频</a>| <a href="http://91packing.com" target="_blank">在线播放亚洲第一字幕</a>| <a href="http://yongfu-sh.com" target="_blank">日韩精品在线免费观看</a>| <a href="http://my533.com" target="_blank">亚洲高清中文字幕综合网</a>| <a href="http://minliusoft.com" target="_blank">青娱乐免费视频在线观看</a>| <a href="http://123470c.com" target="_blank">亚洲女女女同性video</a>| <a href="http://kdltuliao.com" target="_blank">亚洲国产成人精品无码久久久久久综合 </a>| <a href="http://blbkl.com" target="_blank">狠狠色婷婷狠狠狠亚洲综合</a>| <a href="http://whdy888.com" target="_blank">国产性生大片免费观看性 </a>| <a href="http://zjj100.com" target="_blank">中中文字幕亚洲无线码</a>| <a href="http://mironpress.com" target="_blank">精品国产免费观看一区</a>| <a href="http://qqcnm.com" target="_blank">又粗又长又爽又长黄免费视频</a>| <a href="http://www22432.com" target="_blank">国产亚洲成AV人片在线观黄桃 </a>| <a href="http://wwwdf221.com" target="_blank">亚洲国产综合自在线另类</a>| <a href="http://jufandev.com" target="_blank">日本免费电影一区</a>| <a href="http://4438xx21.com" target="_blank">中文字幕乱码系列免费</a>| <a href="http://yw5168.com" target="_blank">亚洲午夜精品国产电影在线观看</a>| <a href="http://51comcomcom.com" target="_blank">免费看美女被靠到爽的视频</a>| <a href="http://chaikexin.com" target="_blank">国产精品福利片免费看</a>| <a href="http://zzo8.com" target="_blank">亚洲成人网在线观看</a>| <a href="http://zhuguangbaoyu.com" target="_blank">在线观看免费精品国产</a>| <a href="http://shaiyahx.com" target="_blank">永久免费av无码入口国语片</a>| <a href="http://2121065.com" target="_blank">亚洲av乱码一区二区三区</a>| <a href="http://huianpawn.com" target="_blank">亚洲日韩在线第一页</a>| <a href="http://527352.com" target="_blank">曰批全过程免费视频网址</a>| <a href="http://yanhx.com" target="_blank">直接进入免费看黄的网站</a>| <a href="http://fenxue520.com" target="_blank">亚洲人成亚洲精品</a>| <a href="http://ystchem.com" target="_blank">四虎1515hm免费国产</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>