Ø SERVERåQ?/span>表示一个严é‡å¤±è´¥ã€‚常常将有一个伴éšçš„Throwableã€?/span>
Ø CONFIGåQ?/span>为应用酾|®æœŸé—´æ‰€ç”Ÿæˆçš„æ¶ˆæ¯è€Œè®¾è®¡çš„ã€?/span>
Ø INFOåQ?/span>ä¸ç‰ä¼˜å…ˆ¾U§ã€‚表½CÞZ¸€ä¸ªæž„ä»¶æ£åœ¨åšä»€ä¹ˆï¼ˆä¾‹å¦‚åQŒç›‘视一™å¹ä“Q务的 ˜q行˜q›åº¦åQ‰ï¼Œä½†ä¸æ˜¯ç”¨æ¥å¸®åŠ©è°ƒè¯•è¯¥æž„äšgã€?/span>
Ø FINEåQ?/span>跟踪信æ¯ã€‚该¾U§åˆ«å’Œè¾ƒä½Žä¼˜å…ˆçñ”çš„çñ”别应该用æ¥å¸®åŠ©è°ƒè¯•æŸäº›ç±»åQŒä½†ä¸åº”è¯¥ç”¨æ¥æ€ÖM½“的说明该应用的工作方å¼ã€?/span>
Ø FINERåQ?/span>详细的跟ítªä¿¡æ¯ã€?/span>
Ø FINESTåQ?/span>éžå¸¸è¯¦ç»†çš„è·Ÿítªä¿¡æ¯ã€?/span>
Log4jåœ?/span>¾cÖM¸å®šä¹‰äº†ä¸‹åˆ—日志çñ”别常æ•?/span>
Ø FATALåQ?/span>表示一个严é‡å¤±è´¥ã€‚导è‡?/span>applicationçš„ä¸æ–ã€?/span>
Ø ERRORåQ?/span>表示一个错误事件。å¯ä»¥å…è®?/span>Applicationå¯ä»¥¾l§ç®‹˜q行ã€?/span>
Ø WARNåQ?/span>表示一个有潜在的å±é™©ã€?/span>
Ø INFOåQ?/span>表示一个构件æ£åœ¨åšé‡è¦˜q行情况åQŒä¿¡æ¯æ¯”较粗¾p™ã€?/span>
Ø DEBUGåQ?/span>表示一个构件详¾l†çš„˜q行情况åQŒç”¨äºŽè°ƒè¯?/span>Applicationã€?/span>
Ø ALLåQ?/span>表示¾Uªå½•所有çñ”别的日志信æ¯ã€?/span>
Common-logging的日志çñ”别分ä¸?/span>6¿U,从低到高分别ä¸?/span>traceåQ?/span>debugåQ?/span>infoåQ?/span>warnåQ?/span>erroråQ?/span>fatalã€?/span>
Ø FATALåQ?/span>表示一个严é‡å¤±è´¥ã€‚导è‡?/span>applicationçš„ä¸æ–ã€?/span>
Ø ERRORåQ?/span>表示一个错误事件。å¯ä»¥å…è®?/span>Applicationå¯ä»¥¾l§ç®‹˜q行ã€?/span>
Ø WARNåQ?/span>表示一个有潜在的å±é™©ã€?/span>
Ø INFOåQ?/span>表示一个构件æ£åœ¨åšé‡è¦˜q行情况åQŒä¿¡æ¯æ¯”较粗¾p™ã€?/span>
Ø DEBUGåQ?/span>表示一个构件详¾l†çš„˜q行情况åQŒç”¨äºŽè°ƒè¯?/span>Applicationã€?/span>
Ø TRACEåQ?/span>éžå¸¸è¯¦ç»†çš„è·Ÿítªä¿¡æ¯ï¼Œä»…仅用于¾Uªå½•该日志而已ã€?br />

]]>
ä¸‹è²æ–‡äšgä¿å˜æç¤ºæ–‡äšgåæ˜¾½CÞZ¸æ–?/title><link>http://www.aygfsteel.com/chenlb/archive/2008/03/16/186609.html</link><dc:creator>‹¹æµªæ±?/dc:creator><author>‹¹æµªæ±?/author><pubDate>Sun, 16 Mar 2008 06:29:00 GMT</pubDate><guid>http://www.aygfsteel.com/chenlb/archive/2008/03/16/186609.html</guid><wfw:comment>http://www.aygfsteel.com/chenlb/comments/186609.html</wfw:comment><comments>http://www.aygfsteel.com/chenlb/archive/2008/03/16/186609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/chenlb/comments/commentRss/186609.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/chenlb/services/trackbacks/186609.html</trackback:ping><description><![CDATA[ 用URLEncoder转æ¢ã€?br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #000000">String filename </span><span style="color: #000000">=</span><span style="color: #000000"> URLEncoder.encode(</span><span style="color: #000000">"</span><span style="color: #000000">䏿–‡.zip</span><span style="color: #000000">"</span><span style="color: #000000">, </span><span style="color: #000000">"</span><span style="color: #000000">UTF-8</span><span style="color: #000000">"</span><span style="color: #000000">); <br />
response.addHeader(</span><span style="color: #000000">"</span><span style="color: #000000">Content-Disposition</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">"</span><span style="color: #000000">attachment;filename=</span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">filename); </span></div>
<img src ="http://www.aygfsteel.com/chenlb/aggbug/186609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenlb/" target="_blank">‹¹æµªæ±?/a> 2008-03-16 14:29 <a href="http://www.aygfsteel.com/chenlb/archive/2008/03/16/186609.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>System.iné‡å¤æŽ¥æ”¶ç”¨æˆ·è¾“入一行命ä»?/title><link>http://www.aygfsteel.com/chenlb/archive/2008/03/11/185490.html</link><dc:creator>‹¹æµªæ±?/dc:creator><author>‹¹æµªæ±?/author><pubDate>Tue, 11 Mar 2008 13:49:00 GMT</pubDate><guid>http://www.aygfsteel.com/chenlb/archive/2008/03/11/185490.html</guid><wfw:comment>http://www.aygfsteel.com/chenlb/comments/185490.html</wfw:comment><comments>http://www.aygfsteel.com/chenlb/archive/2008/03/11/185490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/chenlb/comments/commentRss/185490.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/chenlb/services/trackbacks/185490.html</trackback:ping><description><![CDATA[ 以剿ƒ³ç”¨å¾ªçޝæ¥System.in (或是其它输入方å¼è€æ˜¯è¾¾ä¸é¢„想的效æž?½W¬ä¸€‹Æ¡è¾“å…¥åŽå›žèžR,ä¸ä¼š(x¨¬)接收下一‹Æ¡ç”¨æˆïL(f¨¥ng)š„输入)ã€‚åŽæ¥æ‰å‘现readline() != nullæ‰èƒ½è¾‘Öˆ°æ•ˆæžœã€?br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #0000ff">package</span><span style="color: #000000"> net.blogjava.chenlb;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.BufferedReader;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.IOException;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000"> java.io.InputStreamReader;<br />
<br />
</span><span style="color: #008000">/**</span><span style="color: #008000"><br />
* é‡å¤æŽ¥æ”¶ç”¨æˆ·è¾“入一行命ä»?br />
* </span><span style="color: #808080">@author</span><span style="color: #008000"> chenlb 2008-3-11 下åˆ09:24:50<br />
</span><span style="color: #008000">*/</span><span style="color: #000000"><br />
</span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> UserInput {<br />
<br />
<br />
</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 style="color: #0000ff">throws</span><span style="color: #000000"> IOException {<br />
System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">说明: 输入QUIT退�/span><span style="color: #000000">"</span><span style="color: #000000">);<br />
System.out.print(</span><span style="color: #000000">"</span><span style="color: #000000">\ninput></span><span style="color: #000000">"</span><span style="color: #000000">);<br />
String inputStr </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
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(System.in));<br />
</span><span style="color: #0000ff">while</span><span style="color: #000000">((inputStr </span><span style="color: #000000">=</span><span style="color: #000000"> br.readLine()) </span><span style="color: #000000">!=</span><span style="color: #000000"> </span><span style="color: #0000ff">null</span><span style="color: #000000">) {<br />
</span><span style="color: #0000ff">if</span><span style="color: #000000">(inputStr.equals(</span><span style="color: #000000">"</span><span style="color: #000000">QUIT</span><span style="color: #000000">"</span><span style="color: #000000">)) {<br />
System.exit(</span><span style="color: #000000">0</span><span style="color: #000000">);<br />
}<br />
System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">ä½ è¾“å…¥çš„æ˜? </span><span style="color: #000000">"</span><span style="color: #000000">+</span><span style="color: #000000">inputStr); </span><span style="color: #008000">//</span><span style="color: #008000">处ç†ä½ 的逻辑</span><span style="color: #008000"><br />
</span><span style="color: #000000"> System.out.print(</span><span style="color: #000000">"</span><span style="color: #000000">\ninput></span><span style="color: #000000">"</span><span style="color: #000000">);<br />
}<br />
<br />
}<br />
<br />
}<br />
</span></div>
<img src ="http://www.aygfsteel.com/chenlb/aggbug/185490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenlb/" target="_blank">‹¹æµªæ±?/a> 2008-03-11 21:49 <a href="http://www.aygfsteel.com/chenlb/archive/2008/03/11/185490.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>Java读RTFä¹Þq 问题 http://www.aygfsteel.com/chenlb/archive/2008/02/01/178863.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Fri, 01 Feb 2008 09:05:00 GMT http://www.aygfsteel.com/chenlb/archive/2008/02/01/178863.html http://www.aygfsteel.com/chenlb/comments/178863.html http://www.aygfsteel.com/chenlb/archive/2008/02/01/178863.html#Feedback 0 http://www.aygfsteel.com/chenlb/comments/commentRss/178863.html http://www.aygfsteel.com/chenlb/services/trackbacks/178863.html
òq¸å¥½æ‰‘Öˆ° ANGEL SKY çš„åšå®¢ã€‚用ISO8859_1¾~–ç 转æ¢ã€?br />
代ç 片æ–åQ?br />
String bodyText = null;
DefaultStyledDocument styledDoc = new DefaultStyledDocument(); //javax.swing.text.Document的一个实�/span>
try {
InputStream is = new FileInputStream(new File("data/java.swing.text读RTF文档‹¹‹è¯•.rtf"));
new RTFEditorKit().read(is, styledDoc, 0);
bodyText = new String(styledDoc.getText(0, styledDoc.getLength()).getBytes("ISO8859_1")); //æå–文本
} catch (IOException e) {
throw new DocumentHandlerException("ä¸èƒ½ä»ŽRTF䏿‘˜å½•æ–‡æœ?", e);
} catch (BadLocationException e) {
throw new DocumentHandlerException("ä¸èƒ½ä»ŽRTF䏿‘˜å½•æ–‡æœ?", e);
}
System.out.println(bodyText);

]]> 生äñ”è€?消费è€?/title><link>http://www.aygfsteel.com/chenlb/archive/2008/01/24/177452.html</link><dc:creator>‹¹æµªæ±?/dc:creator><author>‹¹æµªæ±?/author><pubDate>Thu, 24 Jan 2008 03:36:00 GMT</pubDate><guid>http://www.aygfsteel.com/chenlb/archive/2008/01/24/177452.html</guid><wfw:comment>http://www.aygfsteel.com/chenlb/comments/177452.html</wfw:comment><comments>http://www.aygfsteel.com/chenlb/archive/2008/01/24/177452.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/chenlb/comments/commentRss/177452.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/chenlb/services/trackbacks/177452.html</trackback:ping><description><![CDATA[ ˜q™å¦æœŸï¼Œåº”è˜çš„æ—¶å€™æœ‰ä¸€äº›æ˜¯¾U¿ç¨‹ç›¸å…³çš„,虽然自己对线½E‹ç¼–½E‹æœ‰ç‚ÒŽ(gu¨©)¦‚念,但没有写˜q‡ç»å…¸çš„例å。放å‡äº†æœ‰ç‚¹æ—¶å€™ï¼Œž®±æƒ³å†™å¤š¾U¿ç¨‹çš„例åã€?br />
<br />
½W”试的题目类似地åQšä¸€ä¸ªç”Ÿäº§è€…一‹Æ¡ç”Ÿäº?0个,满了åŽé€šçŸ¥æ¶ˆè´¹è€…,然厽{‰å¾…。一个消费者äñ”哿œ‰æ»¡äº†ž®±æ¶ˆè´V€‚到½Iºæ—¶é€šçŸ¥ç”Ÿäñ”者,然厽{‰å¾…ã€?br />
<br />
那时对ç‰å¾?通知机制没怎么写过åQŒé‚£‹Æ¡ç¬”试应该写的大概对åQˆæƒ³æ³•对åQ‰ï¼Œä½†å†™çš„wait()å’ŒnotifyAll()的佾|®ä¸å¯V€‚现在有旉™—´ž®±å†™äº†è¿™ä¸ªä¾‹åã€?br />
æè¿°åQšç”Ÿäº§è€…一‹Æ¡ç”Ÿäº§N个äñ”å“ï¼Œæ± ä¸è¾‘Öˆ°Mž®Þq‰å¾…,通知½{‰å¾…的消费者。消费者有产哞®±æ¶ˆè´¹ï¼Œåˆ°æ²¡æœ‰æ—¶ž®±é€šçŸ¥ç”Ÿäñ”者,然厽{‰å¾…ã€?br />
<br />
1.生äñ”者:(x¨¬)<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" twffan="done"><span style="color: #0000ff" twffan="done">package</span><span style="color: #000000" twffan="done"> net.blogjava.chenlb.multithreaded;<br />
<br />
</span><span style="color: #0000ff" twffan="done">import</span><span style="color: #000000" twffan="done"> java.util.List;<br />
<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
* </span><span style="color: #808080" twffan="done">@author</span><span style="color: #008000" twffan="done"> chenlb<br />
* <br />
* 生äñ”è€?<br/><br />
* é»˜è®¤äº§å“æ± 大ž®M=20,äº§å“æ¢¯é˜¶å¤§å°N=5.在生产过½E‹ä¸,æ± çš„å¤§å°ä¼?x¨¬)è¶…˜q?0,ä½†æ± ä¸æœ€å¤§åº”该是M+N-1.<br />
</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">class</span><span style="color: #000000" twffan="done"> Producer </span><span style="color: #0000ff" twffan="done">implements</span><span style="color: #000000" twffan="done"> Runnable {<br />
<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
* æ± é»˜è®¤å¤§ž®?br />
</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">final</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done"> DEFALUT_SIZE </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #000000" twffan="done">20</span><span style="color: #000000" twffan="done">;<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
* 默认一‹Æ¡ç”Ÿäº§çš„æ•°é‡<br />
</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">final</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done"> DEFALUT_STEP_SIZE </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #000000" twffan="done">5</span><span style="color: #000000" twffan="done">;<br />
<br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done"> PRODUCER_ID </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">; </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">生äñ”者å·</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> <br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> List</span><span style="color: #000000" twffan="done"><</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">></span><span style="color: #000000" twffan="done"> pool </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">null</span><span style="color: #000000" twffan="done">;<br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done"> size </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> DEFALUT_SIZE;<br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done"> stepSize </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> DEFALUT_STEP_SIZE;<br />
<br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> String name </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">Producer_</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">(</span><span style="color: #000000" twffan="done">++</span><span style="color: #000000" twffan="done">PRODUCER_ID); </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">生äñ”者å</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> <br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">boolean</span><span style="color: #000000" twffan="done"> isRun </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">true</span><span style="color: #000000" twffan="done">;<br />
<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
* é»˜è®¤äº§å“æ± 大ž®?0, 默认产å“增长梯阶大å°5<br />
</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> Producer(List</span><span style="color: #000000" twffan="done"><</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">></span><span style="color: #000000" twffan="done"> pool) {<br />
</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.pool </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> pool;<br />
}<br />
<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
* </span><span style="color: #808080" twffan="done">@param</span><span style="color: #008000" twffan="done"> pool<br />
* </span><span style="color: #808080" twffan="done">@param</span><span style="color: #008000" twffan="done"> size æ± å¤§ž®?br />
</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> Producer(List</span><span style="color: #000000" twffan="done"><</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">></span><span style="color: #000000" twffan="done"> pool, </span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done"> size) {<br />
</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.pool </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> pool;<br />
</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.size </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> size;<br />
}<br />
<br />
<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
* </span><span style="color: #808080" twffan="done">@param</span><span style="color: #008000" twffan="done"> pool<br />
* </span><span style="color: #808080" twffan="done">@param</span><span style="color: #008000" twffan="done"> size æ± å¤§ž®?br />
* </span><span style="color: #808080" twffan="done">@param</span><span style="color: #008000" twffan="done"> stepSize 一‹Æ¡ç”Ÿäº§å¤šž®?br />
</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> Producer(List</span><span style="color: #000000" twffan="done"><</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">></span><span style="color: #000000" twffan="done"> pool, </span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done"> size, </span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done"> stepSize) {<br />
</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.pool </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> pool;<br />
</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.size </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> size;<br />
</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.stepSize </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> stepSize;<br />
}<br />
<br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">void</span><span style="color: #000000" twffan="done"> run() {<br />
</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done"> TODO 生äñ”者线½E?br />
</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">int pi = 0;</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">while</span><span style="color: #000000" twffan="done">(isRun) {</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">&& pi<10<br />
</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">pi++;</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">synchronized</span><span style="color: #000000" twffan="done"> (pool) { </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">åŒæ¥äº§å“æ±?/span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">if</span><span style="color: #000000" twffan="done">(pool.size() </span><span style="color: #000000" twffan="done">>=</span><span style="color: #000000" twffan="done"> size) {<br />
</span><span style="color: #0000ff" twffan="done">try</span><span style="color: #000000" twffan="done"> {<br />
System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done"> ½{‰å¾…!</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
pool.wait(); </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">åŒæ¥ä»€ä¹ˆå°±½{‰å¾…什ä¹?å¦åˆ™æŠ›å‡ºjava.lang.IllegalMonitorStateException</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> } </span><span style="color: #0000ff" twffan="done">catch</span><span style="color: #000000" twffan="done"> (InterruptedException e) {<br />
isRun </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">false</span><span style="color: #000000" twffan="done">;<br />
System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done"> thread interrupt!</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">); <br />
}<br />
} </span><span style="color: #0000ff" twffan="done">else</span><span style="color: #000000" twffan="done"> {<br />
<br />
</span><span style="color: #0000ff" twffan="done">for</span><span style="color: #000000" twffan="done">(</span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done"> i</span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">; i</span><span style="color: #000000" twffan="done"><</span><span style="color: #000000" twffan="done">stepSize; i</span><span style="color: #000000" twffan="done">++</span><span style="color: #000000" twffan="done">) { </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">一‹Æ¡ç”Ÿäº§stepSize个äñ”å“?/span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> pool.add(product()); </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">生äñ”产å“</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> }<br />
System.out.println(</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">äº§å“æ± 䏿œ? </span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">pool.size());<br />
pool.notifyAll(); </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">通知½{‰å¾…的线½E?主è¦ç”¨æ¥é€šçŸ¥æ¶ˆè´¹è€? 但生产者线½E‹ä¹Ÿä¼?x¨¬)通知åˆ?</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> }<br />
}<br />
<br />
</span><span style="color: #0000ff" twffan="done">try</span><span style="color: #000000" twffan="done"> {<br />
System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done"> 休æ¯1¿U?</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
Thread.sleep(</span><span style="color: #000000" twffan="done">1000</span><span style="color: #000000" twffan="done">); </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">调试�/span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> } </span><span style="color: #0000ff" twffan="done">catch</span><span style="color: #000000" twffan="done"> (InterruptedException e) {<br />
System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done"> sleep 1s thread interrupt</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
}<br />
}<br />
System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done"> end! pool size: </span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">pool.size());<br />
}<br />
<br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done"> P_ID </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">;<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
* 生äñ”产å“<br />
* </span><span style="color: #808080" twffan="done">@return</span><span style="color: #008000" twffan="done"> 产å“<br />
</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> Product product() {<br />
String name </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">product_</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">(</span><span style="color: #000000" twffan="done">++</span><span style="color: #000000" twffan="done">P_ID);<br />
System.out.println(</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done"> 生äñ”äº? </span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">name);<br />
</span><span style="color: #0000ff" twffan="done">return</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done"> Production(name);<br />
}<br />
<br />
}<br />
</span></div>
<br />
<br />
2.消费者:(x¨¬)<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" twffan="done"><span style="color: #0000ff" twffan="done">package</span><span style="color: #000000" twffan="done"> net.blogjava.chenlb.multithreaded;<br />
<br />
</span><span style="color: #0000ff" twffan="done">import</span><span style="color: #000000" twffan="done"> java.util.List;<br />
<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
* </span><span style="color: #808080" twffan="done">@author</span><span style="color: #008000" twffan="done"> chenlb<br />
* <br />
* 消费�br />
</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">class</span><span style="color: #000000" twffan="done"> Consumer </span><span style="color: #0000ff" twffan="done">implements</span><span style="color: #000000" twffan="done"> Runnable {<br />
<br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">int</span><span style="color: #000000" twffan="done"> C_ID </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">; </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">消费者ID</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> <br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> List</span><span style="color: #000000" twffan="done"><</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">></span><span style="color: #000000" twffan="done"> pool </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">null</span><span style="color: #000000" twffan="done">;<br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> String name </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">Consumer_</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">(</span><span style="color: #000000" twffan="done">++</span><span style="color: #000000" twffan="done">C_ID);<br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">boolean</span><span style="color: #000000" twffan="done"> isRun </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">true</span><span style="color: #000000" twffan="done">;<br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> Consumer(List</span><span style="color: #000000" twffan="done"><</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">></span><span style="color: #000000" twffan="done"> pool) {<br />
</span><span style="color: #0000ff" twffan="done">this</span><span style="color: #000000" twffan="done">.pool </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> pool;<br />
}<br />
<br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">void</span><span style="color: #000000" twffan="done"> run() {<br />
</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done"> TODO 消费者线½E?br />
</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">int pi = 0;</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">while</span><span style="color: #000000" twffan="done">(isRun) {</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">&& pi<10<br />
</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">pi++;</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">synchronized</span><span style="color: #000000" twffan="done"> (pool) {<br />
</span><span style="color: #0000ff" twffan="done">if</span><span style="color: #000000" twffan="done">(pool.size() </span><span style="color: #000000" twffan="done"><</span><span style="color: #000000" twffan="done"> </span><span style="color: #000000" twffan="done">1</span><span style="color: #000000" twffan="done">) {<br />
</span><span style="color: #0000ff" twffan="done">try</span><span style="color: #000000" twffan="done"> {<br />
System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done"> ½{‰å¾…!</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
pool.notifyAll(); </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">通知¾U¿ç¨‹(ä¸»è¦æ˜¯ç”Ÿäº§è€?但也ä¼?x¨¬)通知到生产者线½E?</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> pool.wait();<br />
} </span><span style="color: #0000ff" twffan="done">catch</span><span style="color: #000000" twffan="done"> (InterruptedException e) {<br />
isRun </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">false</span><span style="color: #000000" twffan="done">;<br />
System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done"> thread interrupt!</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
}<br />
} </span><span style="color: #0000ff" twffan="done">else</span><span style="color: #000000" twffan="done"> {<br />
Product p </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> pool.remove(</span><span style="color: #000000" twffan="done">0</span><span style="color: #000000" twffan="done">); </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">消费</span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> printProduct(p);<br />
<br />
}<br />
}<br />
</span><span style="color: #0000ff" twffan="done">try</span><span style="color: #000000" twffan="done"> {<br />
Thread.sleep(</span><span style="color: #000000" twffan="done">1000</span><span style="color: #000000" twffan="done">); </span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">调试�/span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> } </span><span style="color: #0000ff" twffan="done">catch</span><span style="color: #000000" twffan="done"> (InterruptedException e) {<br />
<br />
System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done"> sleep 1s thread interrupt</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">);<br />
}<br />
}<br />
System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done"> end! pool size: </span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">pool.size());<br />
}<br />
<br />
</span><span style="color: #0000ff" twffan="done">private</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">void</span><span style="color: #000000" twffan="done"> printProduct(Product p) {<br />
System.out.println(name</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done"> 消费� </span><span style="color: #000000" twffan="done">"</span><span style="color: #000000" twffan="done">+</span><span style="color: #000000" twffan="done">p.getName());<br />
}<br />
}<br />
</span></div>
<br />
<br />
3.Demo<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" twffan="done"><span style="color: #0000ff" twffan="done">package</span><span style="color: #000000" twffan="done"> net.blogjava.chenlb.multithreaded;<br />
<br />
</span><span style="color: #0000ff" twffan="done">import</span><span style="color: #000000" twffan="done"> java.util.LinkedList;<br />
</span><span style="color: #0000ff" twffan="done">import</span><span style="color: #000000" twffan="done"> java.util.List;<br />
<br />
</span><span style="color: #008000" twffan="done">/**</span><span style="color: #008000" twffan="done"><br />
* </span><span style="color: #808080" twffan="done">@author</span><span style="color: #008000" twffan="done"> chenlb<br />
*<br />
</span><span style="color: #008000" twffan="done">*/</span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">class</span><span style="color: #000000" twffan="done"> Sale {<br />
<br />
<br />
</span><span style="color: #0000ff" twffan="done">public</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">static</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">void</span><span style="color: #000000" twffan="done"> main(String[] args) {<br />
</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">é“¾è¡¨äº§å“æ±?/span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> List</span><span style="color: #000000" twffan="done"><</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">></span><span style="color: #000000" twffan="done"> pool </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done"> LinkedList</span><span style="color: #000000" twffan="done"><</span><span style="color: #000000" twffan="done">Product</span><span style="color: #000000" twffan="done">></span><span style="color: #000000" twffan="done">();<br />
</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">两个生äñ”è€?/span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> Producer p1 </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done"> Producer(pool);<br />
Producer p2 </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done"> Producer(pool);<br />
<br />
Thread tp1 </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done"> Thread(p1);<br />
Thread tp2 </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done"> Thread(p2);<br />
<br />
tp1.start();<br />
tp2.start();<br />
<br />
</span><span style="color: #008000" twffan="done">//</span><span style="color: #008000" twffan="done">两个消费�/span><span style="color: #008000" twffan="done"><br />
</span><span style="color: #000000" twffan="done"> Consumer c1 </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done"> Consumer(pool);<br />
Consumer c2 </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done"> Consumer(pool);<br />
<br />
Thread tc1 </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done"> Thread(c1);<br />
Thread tc2 </span><span style="color: #000000" twffan="done">=</span><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done">new</span><span style="color: #000000" twffan="done"> Thread(c2);<br />
<br />
tc1.start();<br />
tc2.start();<br />
<br />
<br />
<br />
}<br />
<br />
}<br />
</span></div>
<br />
注æ„åQšç‰å¾…时候è¦ç”¨pool.wait()å› äØ“(f¨´)åŒæ¥çš„æ˜¯pool。å¦åˆ™ä¼š(x¨¬)抛出java.lang.IllegalMonitorStateException<br />
<br />
^_^ <br />
<br />
<a href="http://www.aygfsteel.com/Files/chenlb/p-c-src.rar">代ç 下è²</a>
<img src ="http://www.aygfsteel.com/chenlb/aggbug/177452.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenlb/" target="_blank">‹¹æµªæ±?/a> 2008-01-24 11:36 <a href="http://www.aygfsteel.com/chenlb/archive/2008/01/24/177452.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>ant ¾~–译特定包下é¢çš„æºæ–‡ä»?/title><link>http://www.aygfsteel.com/chenlb/archive/2007/12/15/167926.html</link><dc:creator>‹¹æµªæ±?/dc:creator><author>‹¹æµªæ±?/author><pubDate>Sat, 15 Dec 2007 04:13:00 GMT</pubDate><guid>http://www.aygfsteel.com/chenlb/archive/2007/12/15/167926.html</guid><wfw:comment>http://www.aygfsteel.com/chenlb/comments/167926.html</wfw:comment><comments>http://www.aygfsteel.com/chenlb/archive/2007/12/15/167926.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/chenlb/comments/commentRss/167926.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/chenlb/services/trackbacks/167926.html</trackback:ping><description><![CDATA[ ™å¹ç›®ä¸æœ‰appletåQŒçŽ°åœ¨æƒ³åªç¼–译applet包下é¢çš„内容ã€?br />
<br />
部分代ç åQ?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" twffan="done"><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done"><</span><span style="color: #800000" twffan="done">target </span><span style="color: #ff0000" twffan="done">name</span><span style="color: #0000ff" twffan="done">="compile.applet"</span><span style="color: #ff0000" twffan="done"> depends</span><span style="color: #0000ff" twffan="done">="compile.java"</span><span style="color: #0000ff" twffan="done">></span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done"><</span><span style="color: #800000" twffan="done">mkdir </span><span style="color: #ff0000" twffan="done">dir</span><span style="color: #0000ff" twffan="done">="${deploy.applet.dir}"</span><span style="color: #ff0000" twffan="done"> </span><span style="color: #0000ff" twffan="done">/></span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done"><</span><span style="color: #800000" twffan="done">javac </span><span style="color: #ff0000" twffan="done">destdir</span><span style="color: #0000ff" twffan="done">="${deploy.applet.dir}"</span><span style="color: #ff0000" twffan="done"> encoding</span><span style="color: #0000ff" twffan="done">="UTF-8"</span><span style="color: #ff0000" twffan="done"> source</span><span style="color: #0000ff" twffan="done">="1.4"</span><span style="color: #ff0000" twffan="done"><br />
srcdir</span><span style="color: #0000ff" twffan="done">="${src.java.dir}"</span><span style="color: #ff0000" twffan="done"> includes</span><span style="color: #0000ff" twffan="done">="**/applet/**/*.java"</span><span style="color: #0000ff" twffan="done">></span><span style="color: #000000" twffan="done"><br />
<br />
</span><span style="color: #0000ff" twffan="done"><</span><span style="color: #800000" twffan="done">classpath </span><span style="color: #ff0000" twffan="done">refid</span><span style="color: #0000ff" twffan="done">="project.classpath"</span><span style="color: #ff0000" twffan="done"> </span><span style="color: #0000ff" twffan="done">/></span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done"></</span><span style="color: #800000" twffan="done">javac</span><span style="color: #0000ff" twffan="done">></span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done"></</span><span style="color: #800000" twffan="done">target</span><span style="color: #0000ff" twffan="done">></span></div>
<br />
åŒæ—¶ä¹Ÿç›¸å¤åˆ¶ç‰¹å®šå目录下的文件夹åQ?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" twffan="done"><span style="color: #000000" twffan="done"> </span><span style="color: #0000ff" twffan="done"><</span><span style="color: #800000" twffan="done">target </span><span style="color: #ff0000" twffan="done">name</span><span style="color: #0000ff" twffan="done">="deploy.applet"</span><span style="color: #ff0000" twffan="done"> depends</span><span style="color: #0000ff" twffan="done">="compile.java"</span><span style="color: #0000ff" twffan="done">></span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done"><</span><span style="color: #800000" twffan="done">copy </span><span style="color: #ff0000" twffan="done">todir</span><span style="color: #0000ff" twffan="done">="${deploy.applet.dir}"</span><span style="color: #ff0000" twffan="done"> preservelastmodified</span><span style="color: #0000ff" twffan="done">="true"</span><span style="color: #0000ff" twffan="done">></span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done"><</span><span style="color: #800000" twffan="done">fileset </span><span style="color: #ff0000" twffan="done">dir</span><span style="color: #0000ff" twffan="done">="${build.java.dir}"</span><span style="color: #0000ff" twffan="done">></span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done"><</span><span style="color: #800000" twffan="done">include </span><span style="color: #ff0000" twffan="done">name</span><span style="color: #0000ff" twffan="done">="**/applet/**/*.class"</span><span style="color: #0000ff" twffan="done">/></span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done"></</span><span style="color: #800000" twffan="done">fileset</span><span style="color: #0000ff" twffan="done">></span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done"></</span><span style="color: #800000" twffan="done">copy</span><span style="color: #0000ff" twffan="done">></span><span style="color: #000000" twffan="done"><br />
</span><span style="color: #0000ff" twffan="done"></</span><span style="color: #800000" twffan="done">target</span><span style="color: #0000ff" twffan="done">></span></div>
<br />
<br />
两个都用到inclue方便�
<img src ="http://www.aygfsteel.com/chenlb/aggbug/167926.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenlb/" target="_blank">‹¹æµªæ±?/a> 2007-12-15 12:13 <a href="http://www.aygfsteel.com/chenlb/archive/2007/12/15/167926.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>ant build 出现 warning modified in the future http://www.aygfsteel.com/chenlb/archive/2007/12/13/167619.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Thu, 13 Dec 2007 15:13:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/12/13/167619.html http://www.aygfsteel.com/chenlb/comments/167619.html http://www.aygfsteel.com/chenlb/archive/2007/12/13/167619.html#Feedback 1 http://www.aygfsteel.com/chenlb/comments/commentRss/167619.html http://www.aygfsteel.com/chenlb/services/trackbacks/167619.html
^_^

]]> org.apache.struts.action.InvalidCancelException 错误问题 http://www.aygfsteel.com/chenlb/archive/2007/10/31/157228.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Wed, 31 Oct 2007 08:25:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/10/31/157228.html http://www.aygfsteel.com/chenlb/comments/157228.html http://www.aygfsteel.com/chenlb/archive/2007/10/31/157228.html#Feedback 1 http://www.aygfsteel.com/chenlb/comments/commentRss/157228.html http://www.aygfsteel.com/chenlb/services/trackbacks/157228.html freiberg çš„åšå®¢ã€?br />
说到�br />
<set-property property="cancellable" value="true"/>
å¯ä»¥è§£å†³åQŒé©¬ä¸Šå¤åˆ¶åŽ»è¯•ä¸‹åQŒè¡Œå–”,^_^ã€?br />
---------------------------------引用--------------------------------------
Any existing applications that use the Cancel processing will need to modify their struts-config.xml to set the cancellable property for actions which require it.
In Struts 1.2.9 the <set-property> is used to set the cancellable property for an action....
<action path="/fooAction"
input="/foo.jsp"
validate="true">
<set-property property="cancellable" value="true"/>
<forward name="success" path="/bar.jsp"/>
</action>
From Struts 1.3.x a new cancellable attribute can be used....
<action path="/fooAction"
input="/foo.jsp"
validate="true"
cancellable="true">
<forward name="success" path="/bar.jsp"/>
</action>
In both Struts 1.2.9 and Struts 1.3.x an exception handler can be configured to handle the InvalidCancelException
<action path="/fooAction"
input="/foo.jsp"
validate="true"
cancellable="true">
<forward name="success" path="/bar.jsp"/>
<exception key="errors.cancel"
type="org.apache.struts.action.InvalidCancelException"
path="/foo.jsp"/>
</action>
---------------------------------------end-----------------------------------------------------
刚好我用的是struts�.2.9�br />
原文åQ?a href="http://www.aygfsteel.com/freiberg/archive/2007/10/20/154384.html">http://www.aygfsteel.com/freiberg/archive/2007/10/20/154384.html

]]> jxl è¯?excel http://www.aygfsteel.com/chenlb/archive/2007/10/29/156614.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Mon, 29 Oct 2007 03:04:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/10/29/156614.html http://www.aygfsteel.com/chenlb/comments/156614.html http://www.aygfsteel.com/chenlb/archive/2007/10/29/156614.html#Feedback 0 http://www.aygfsteel.com/chenlb/comments/commentRss/156614.html http://www.aygfsteel.com/chenlb/services/trackbacks/156614.html 与写对应的是è¯?
package net.blogjava.chenlb;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
/**
* jxl 的Excel阅读�
* @author chenlb 2007-10-20 下åˆ01:36:01
*/
public class JxlExcelReader {
/**
* @return ˜q”回String[] 的列è¡?br />
*/
public List readExcel(InputStream in) {
List lt = new ArrayList();
Workbook wb = null;
try {
wb = Workbook.getWorkbook(in);
Sheet[] sheets = wb.getSheets(); //获å–工作
for(int i=0; i<sheets.length; i++) {
Sheet sheet = sheets[i];
for(int j=0; j<sheet.getRows(); j++) {
Cell[] cells = sheet.getRow(j); //è¯Õd–一è¡?/span>
if(cells != null && cells.length > 0) { //˜q™ä¸€è¡Œæœ‰å†…å®¹æ‰æ·»åŠ?/span>
String[] dataCells = new String[cells.length];
for(int k=0; k<cells.length; k++) {
dataCells[k] = ""+cells[k].getContents(); //è¯Õd†…å®?/span>
}//column
lt.add(dataCells);
}
}//one sheet
}//xls file
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(wb != null) {
wb.close();
}
}
return lt;
}
}

]]> jxl å†?excel http://www.aygfsteel.com/chenlb/archive/2007/10/29/156613.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Mon, 29 Oct 2007 02:52:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/10/29/156613.html http://www.aygfsteel.com/chenlb/comments/156613.html http://www.aygfsteel.com/chenlb/archive/2007/10/29/156613.html#Feedback 0 http://www.aygfsteel.com/chenlb/comments/commentRss/156613.html http://www.aygfsteel.com/chenlb/services/trackbacks/156613.html
1.写excel¾c?br />
package net.blogjava.chenlb;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
/**
* Jxl çš?nbsp;Excel写数æ®å™¨.
* @author chenlb 2007-10-29 上åˆ10:39:31
*/
public class JxlExcelWriter {
/**
* @param datas ž®è£…ç€Object[]的列è¡? 一般是String内容.
* @param title æ¯ä¸ªsheeté‡Œçš„æ ‡é¢˜.
*/
public void writeExcel(OutputStream out, List datas, String[] title) {
if(datas == null) {
throw new IllegalArgumentException("写excel‹¹éœ€è¦List傿•°!");
}
try {
WritableWorkbook workbook = Workbook.createWorkbook(out);
WritableSheet ws = workbook.createSheet("sheet 1", 0);
int rowNum = 0; //è¦å†™çš„行
if(title != null) {
putRow(ws, 0, title);//åŽ‹å…¥æ ‡é¢˜
rowNum = 1;
}
for(int i=0; i<datas.size(); i++, rowNum++) {//写sheet
Object[] cells = (Object[]) datas.get(i);
putRow(ws, rowNum, cells); //压一行到sheet
}
workbook.write();
workbook.close(); //一定è¦å…³é—, å¦åˆ™æ²¡æœ‰ä¿å˜Excel
} catch (RowsExceededException e) {
System.out.println("jxl write RowsExceededException: "+e.getMessage());
} catch (WriteException e) {
System.out.println("jxl write WriteException: "+e.getMessage());
} catch (IOException e) {
System.out.println("jxl write file i/o exception!, cause by: "+e.getMessage());
}
}
private void putRow(WritableSheet ws, int rowNum, Object[] cells) throws RowsExceededException, WriteException {
for(int j=0; j<cells.length; j++) {//写一�/span>
Label cell = new Label(j, rowNum, ""+cells[j]);
ws.addCell(cell);
}
}
}
2.使用
public void testWriteExcel() {
List datas = new ArrayList();
String[] data = {"1", "chenlb"};
datas.add(data);
try {
OutputStream out = new FileOutputStream(new File("doc/chenlb.blogjava.net.xls"));
JxlExcelWriter jxlExcelWriter = new JxlExcelWriter();
jxlExcelWriter.writeExcel(out, datas, new String[] {"Id", "name"});
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

]]> jstl 1.0 formatDate yyyy-mm ä¸èƒ½æ£å¸¸å·¥ä½œ http://www.aygfsteel.com/chenlb/archive/2007/10/25/155971.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Thu, 25 Oct 2007 14:38:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/10/25/155971.html http://www.aygfsteel.com/chenlb/comments/155971.html http://www.aygfsteel.com/chenlb/archive/2007/10/25/155971.html#Feedback 1 http://www.aygfsteel.com/chenlb/comments/commentRss/155971.html http://www.aygfsteel.com/chenlb/services/trackbacks/155971.html
]]> java 压羃目录ä¸?zip http://www.aygfsteel.com/chenlb/archive/2007/10/18/153866.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Thu, 18 Oct 2007 05:53:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/10/18/153866.html http://www.aygfsteel.com/chenlb/comments/153866.html http://www.aygfsteel.com/chenlb/archive/2007/10/18/153866.html#Feedback 0 http://www.aygfsteel.com/chenlb/comments/commentRss/153866.html http://www.aygfsteel.com/chenlb/services/trackbacks/153866.html 用java好久了,˜q˜æ²¡æœ‰å†™ä¸ªåŽ‹¾~©æ–‡ä»¶çš„½CÞZ¾‹åQŒæ˜¨æ™šå¼„了下åQŒæŠŠå†™ä¸‹æ¥ï¼Œä»¥åŽå¯ä»¥çœ‹ã€?br />
关系�br />
java.util.zip.ZipEntry
java.util.zip.ZipOutputStream
如果è¦è§£å†³ä¸æ–‡æ–‡ä»¶å问题åQŒç”¨åˆ°ant.jar
˜q™ä¸¤ä¸ªç±»ã€?/p>
ZipOutputStream.putNextEntry(ZipEntry);ž®±å¯ä»¥äº†åQŒç„¶åŽZipOutputStream.wirte();ž®±å¾—了ã€?br />
package net.blogjava.chenlb.zip;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipOutputStream;
//用ant.jarçš„zip.*å¯ä»¥è§£å†³ä¸æ–‡æ–‡äšgåé—®é¢?/span>
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
/**
* 压羃文äšg.
* 2007-10-17 下åˆ11:19:50
* @author chenlb
*/
public class RecursiveZip {
public static void main(String[] args) {
RecursiveZip recursiveZip = new RecursiveZip();
System.out.println("====开�===");
try {
OutputStream os = new FileOutputStream("e:/doc-recursive.zip");
BufferedOutputStream bs = new BufferedOutputStream(os);
ZipOutputStream zo = new ZipOutputStream(bs);
//recursiveZip.zip("e:/recursive-zip/䏿–‡æ–‡äšgå?txt", new File("e:/recursive-zip"), zo, true, true);
recursiveZip.zip("e:/recursive-zip", new File("e:/recursive-zip"), zo, true, true);
zo.closeEntry();
zo.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("====完æˆ====");
}
/**
* @param path è¦åŽ‹¾~©çš„路径, å¯ä»¥æ˜¯ç›®å½? 也å¯ä»¥æ˜¯æ–‡äšg.
* @param basePath 如果path是目å½?å®ƒä¸€èˆ¬äØ“(f¨´)new File(path), 作用æ˜?使输出的zipæ–‡äšg以æ¤ç›®å½•ä¸ºæ ¹ç›®å½•, 如果为null它åªåŽ‹ç¾ƒæ–‡äšg, ä¸è§£åŽ‹ç›®å½?
* @param zo 压羃输出‹¹?br />
* @param isRecursive 是å¦é€’å½’
* @param isOutBlankDir 是å¦è¾“出½Iºç›®å½? è¦ä‹É输出½Iºç›®å½•䨓(f¨´)true,åŒæ—¶baseFileä¸äØ“(f¨´)null.
* @throws IOException
*/
public void zip(String path, File basePath, ZipOutputStream zo, boolean isRecursive, boolean isOutBlankDir) throws IOException {
File inFile = new File(path);
File[] files = new File[0];
if(inFile.isDirectory()) { //是目�/span>
files = inFile.listFiles();
} else if(inFile.isFile()) { //是文�/span>
files = new File[1];
files[0] = inFile;
}
byte[] buf = new byte[1024];
int len;
//System.out.println("baseFile: "+baseFile.getPath());
for(int i=0; i<files.length; i++) {
String pathName = "";
if(basePath != null) {
if(basePath.isDirectory()) {
pathName = files[i].getPath().substring(basePath.getPath().length()+1);
} else {//æ–‡äšg
pathName = files[i].getPath().substring(basePath.getParent().length()+1);
}
} else {
pathName = files[i].getName();
}
System.out.println(pathName);
if(files[i].isDirectory()) {
if(isOutBlankDir && basePath != null) {
zo.putNextEntry(new ZipEntry(pathName+"/")); //å¯ä»¥ä½¿ç©ºç›®å½•也放˜q›åŽ»
}
if(isRecursive) { //递归
zip(files[i].getPath(), basePath, zo, isRecursive, isOutBlankDir);
}
} else {
FileInputStream fin = new FileInputStream(files[i]);
zo.putNextEntry(new ZipEntry(pathName));
while((len=fin.read(buf))>0) {
zo.write(buf,0,len);
}
fin.close();
}
}
}
}

]]> jsp ä¸‹è²æ–‡äšg http://www.aygfsteel.com/chenlb/archive/2007/10/16/153408.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Tue, 16 Oct 2007 15:57:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/10/16/153408.html http://www.aygfsteel.com/chenlb/comments/153408.html http://www.aygfsteel.com/chenlb/archive/2007/10/16/153408.html#Feedback 0 http://www.aygfsteel.com/chenlb/comments/commentRss/153408.html http://www.aygfsteel.com/chenlb/services/trackbacks/153408.html
download.jsp
<%@ page language="java" pageEncoding="utf-8"%>
<%@ page import="java.io.*" %>
<%
try {
FileInputStream fin = new FileInputStream(application.getRealPath("/")+"/readme.zip");
response.addHeader("Content-Disposition","attachment;filename=read.zip");
byte[] buf = new byte[1024];
int readSize = fin.read(buf);
OutputStream os = response.getOutputStream();
while(readSize != -1) {
os.write(buf, 0, readSize);
readSize = fin.read(buf);
}
os.flush();
os.close();
os = null ;
response.flushBuffer();
out.clear();
out = pageContext.pushBody();
} catch (IllegalStateException e) {
}
%>
webapps/test/readme.zipæ–‡äšgå¯ä»¥è¢«ä¸‹è½½ï¼Œå¯èƒ½½W¬ä¸€‹Æ¡ä¼š(x¨¬)输出文å—ã€?

]]> weblogic 8.1.4 hibernate3 异常 org.hibernate.hql.ast.HqlToken http://www.aygfsteel.com/chenlb/archive/2007/10/07/150849.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Sun, 07 Oct 2007 08:37:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/10/07/150849.html http://www.aygfsteel.com/chenlb/comments/150849.html http://www.aygfsteel.com/chenlb/archive/2007/10/07/150849.html#Feedback 0 http://www.aygfsteel.com/chenlb/comments/commentRss/150849.html http://www.aygfsteel.com/chenlb/services/trackbacks/150849.html
多谢 íy’跚而行的åšå®?http://blog.chinajavaworld.com/entry.jspa?id=829
转è²ä»–çš„
ClassNotFoundException: org.hibernate.hql.ast.HqlToken 错误weblogic异常退出�
åŽŸå› :
Hibernate3.0 采用新的åŸÞZºŽANTLRçš„HQL/SQL查询¾˜»è¯‘器,在Hibernate的酾|®æ–‡ä»¶ä¸åQŒhibernate.query.factory_class属性用æ¥é€‰æ‹©æŸ¥è¯¢¾˜»è¯‘器ã€?
åQ?åQ‰é€‰æ‹©Hibernate3.0的查询翻译器åQ?
hibernate.query.factory_class= org.hibernate.hql.ast.ASTQueryTranslatorFactory
åQ?åQ‰é€‰æ‹©Hibernate2.1的查询翻译器
hibernate.query.factory_class= org.hibernate.hql.classic.ClassicQueryTranslatorFactory
ä¸ÞZº†ä½¿ç”¨3.0çš„æ‰¹é‡æ›´æ–°å’Œåˆ 除功能åQŒåªèƒ½é€‰æ‹©åQ?åQ‰å¦åˆ™ä¸èƒ½è§£é‡Šæ‰¹é‡æ›´æ–°çš„è¯å¥åQŒå½“使用的时候出çŽîCº†ä¸æ”¯æŒæ¡ä»¶è¾“入䏿–‡çš„æƒ…况。选择åQ?åQ‰å¯ä»¥æ”¯æŒè¾“入䏿–‡ï¼Œä½†æ²¡æ³•è§£é‡Šæ‰¹é‡æ›´æ–°è¯å¥äº†
在hibernate3ä¸éœ€è¦ç”¨åˆ°antlråQŒç„¶è€Œè¿™ä¸ªåŒ…在weblogic.jarä¸å·²¾l包å«äº†antrl¾cÕdº“åQŒå°±ä¼?x¨¬)äñ”ç”Ÿä¸€äº›ç±»åŠ è²çš„é”™è¯¯ï¼Œæ— æ³•æ‰‘Öˆ°åœ¨war或者earä¸çš„hibernate3.jarã€?
出现˜q™ä¸ªé”™è¯¯ä¹‹åŽåQŒantlrä¼?x¨¬)调用System.exit()åQŒè¿™æ ·weblogicž®×ƒ¼š(x¨¬)䏿¢æœåŠ¡ã€?
解决æ–ÒŽ(gu¨©)³•:
1.是在hibernate.propertiesæ–‡äšgä¸å¢žåŠ å±žæ€§ï¼š(x¨¬)hibernate.query.factory_classåQŒå±žæ€§çš„值是org.hibernate.hql.classic.ClassicQueryTranslatorFactoryåQŒè¿™æ ·å°±å¯ä»¥è§£å†³é—®é¢˜äº†ã€?
但是部分功能ä¼?x¨¬)有问题åQŒè¬å¦?
但本¾pÕdœ¨æ‰šw‡åˆ 除和更æ–îC¼š(x¨¬)有问é¢?本系¾lŸä¸é‡‡ç”¨
2.ž®†antlr-2.7.5H3.jar到Weblogicçš„pre_Classpath :用WinRar或Winzip打开C:\bea\weblogic81\server\lib\weblogic.jar åˆ é™¤é‡Œé¢çš„antlr目录, ç„¶åŽå†antlr-2.7.5H3.jar攑֜¨weblogic.jarçš„åŒä¸€ç›®å½•(æ³?替æ¢ä¹‹åŽæ²¡åšåšè¿‡ä¸¥æ ¼‹¹‹è¯•,ž®šä¸çŸ¥æ˜¯å¦æœ‰åŽé—ç—?
3. 1ã€æ‹·è´Hibernate3里带的包antlr-2.7.5H3.jaråˆ?WL_HOME%\server\libä¸?
2ã€ä¿®æ”? mydomain% \ startWebLogic.cmd åQ?
在set CLASSPATH之å‰åŠ ä¸Šä¸‹é¢ä¸€å¥ï¼š(x¨¬)
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.5H3.jar;
在set CLASSPATH之åŽåŠ ä¸Šä¸‹é¢ä¸€å¥ï¼š(x¨¬)
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
一切OKåQ?
å…·ä½“åŽŸå› å¯å‚照椙åµï¼š(x¨¬)http://dev2dev.bea.com/blog/pmalani/archive/2005/07/configuring_web.html
我用antlr-2.7.6.jarå¯ä»¥åQŒæˆ‘用的hibernate3.2.3ga

]]> weblogic8.1ä½œäØ“(f¨´)windowsæœåŠ¡˜q行 http://www.aygfsteel.com/chenlb/archive/2007/10/06/150758.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Sat, 06 Oct 2007 15:02:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/10/06/150758.html http://www.aygfsteel.com/chenlb/comments/150758.html http://www.aygfsteel.com/chenlb/archive/2007/10/06/150758.html#Feedback 0 http://www.aygfsteel.com/chenlb/comments/commentRss/150758.html http://www.aygfsteel.com/chenlb/services/trackbacks/150758.html
D:\bea\user_projects\domains\mydomain目录下的installService.cmdæ–‡äšgä¸çš„:runAdmin下é¢çš„内å®?br />
1.
set WLS_USER=weblogic
set WLS_PW=
æ”¹äØ“(f¨´)
set WLS_USER=weblogic
set WLS_PW=weblogic
2.
set CMDLINE="%JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -classpath \"%CLASSPATH%\" -Dweblogic.Name=%SERVER_NAME% -Dweblogic.management.username=%WLS_USER% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy=\"%WL_HOME%\server\lib\weblogic.policy\" weblogic.Server"
æ”¹äØ“(f¨´)
set CMDLINE="%JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -classpath \"%CLASSPATH%\" -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server"
åŒå‡»installService.cmd,ž®±O(ji¨¡n)Käº?br />
注æ„防ç«å¢™è¦å…许7001端å£
éžå¸¸æ„Ÿè°¢å›«å›µä¸åžæž?br />
çš„åšå®?http://blog.sina.com.cn/s/blog_3ec64d78010005wu.html
^_^

]]> weblogic 8.1.4æœåŠ¡å™¨æŒ‚èµ?出现StuckThreadMaxTime错误 http://www.aygfsteel.com/chenlb/archive/2007/10/06/150739.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Sat, 06 Oct 2007 13:10:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/10/06/150739.html http://www.aygfsteel.com/chenlb/comments/150739.html http://www.aygfsteel.com/chenlb/archive/2007/10/06/150739.html#Feedback 0 http://www.aygfsteel.com/chenlb/comments/commentRss/150739.html http://www.aygfsteel.com/chenlb/services/trackbacks/150739.html å‰å‡ 天用spring+hibernate+struts写了个增/åˆ?æ”?查的例å。调试期间问题就æ¥äº†åQŒå½“查询¾l“æžœ¾˜»é¡µå¥½å‡ ‹Æ¡å°±æ²¡N久没有å“åº”äº†ã€‚æœ€åŽæŽ§åˆ¶æŠ¥é”™ã€‚ç½‘ä¸ŠæŸ¥äº†ï¼Œå®ƒè¯´æ•°æ®åº“è¿žæŽ¥ï¼ˆæ± ï¼‰é—®é¢˜ã€?/font>
出现错误如下:
<2007-9-30 下åˆ12æ—?/span>03åˆ?/span>03¿U?/span> CST> <Error> <WebLogicServer> <BEA-000337> <ExecuteThread: '13' for queue: 'weblogic.kernel.Default' has been busy for "901" seconds working on the request "Http Request: /admin/school.do", which is more than the configured time (StuckThreadMaxTime) of "600" seconds.>
先说下我é…ç½®
1.环境åQ?/p>
spring 2.0.6åQŒhibernate 3.2.3åQŒstruts 1.2.9åQŒoracle 10.2åQŒweblogic 8.1.4
jdbc是ojdbc14.jar
2.˜qžæŽ¥æ± 用DBCP
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
bean>
3.分页æ–ÒŽ(gu¨©)³•åQˆå‚考springside的)åQŒæ¤¾cÈ‘ô承HibernateDaoSupport
public Page listByPage(Class entityClass, int pageNo, int pageSize, List criterions, List orders) {
Criteria criteria = createCriteria(entityClass, criterions);
CriteriaImpl impl = (CriteriaImpl) criteria;
// 先把Projectionå’ŒOrderByæ¡äšgå–出æ?æ¸…ç©ºä¸¤è€…æ¥æ‰§è¡ŒCountæ“作
Projection projection = impl.getProjection();
//èŽ·å–æ€»è®°å½•æ•°
int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
if(totalCount < 1) {
return new Page();
}
//åŠ æŽ’åº?nbsp;
if(orders != null) {
for(int i=0; i
criteria.addOrder((Order) orders.get(i));
}
}
//原æ¥çš„æŠ•å½?nbsp;
criteria.setProjection(projection);
int startIndex = Page.getStartOfPage(pageNo, pageSize);
//å–å¾—¾l“æžœ
List list = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();
return new Page(startIndex, totalCount, pageSize, list);
}
public Criteria createCriteria(Class entityClass, List criterions) {
Criteria criteria = getSession().createCriteria(entityClass);
if(criterions != null) {
for(int i=0; i
criteria.add((Criterion) criterions.get(i));
}
}
return criteria;
}
å¦å¤–åQŒæ²¡æœ‰ç”¨OpenSessionInViewFilteråQŒstruts与spring的整åˆï¼š(x¨¬)DelegatingRequestProcessorã€action path与bean nameåŒåã€?/font>
¾˜»é¡µä¸è¿‡10‹Æ¡ï¼ŒæœåŠ¡å™¨å°±æ²¡å“应了åQŒæœ€åŽå‡ºçŽîC¸Šé¢çš„错误的了ã€?/font>
刚用weblogicåQŒä¹Ÿåˆšç”¨ssh套é¤ã€‚éƒé——÷€?br />
å‰å¤©è§£å†³äº†ã€?br />
问题解决åQŒé—®é¢˜çš„åŽŸå› æ˜¯æ•°æ®åº“˜qžæŽ¥è€—å°½åQŒæˆ‘用HiberanteDaoSupportçš„getSession()æ–ÒŽ(gu¨©)³•å–å¾—SessionåŽæ²¡æœ‰é‡Šæ”¾Sessionã€?/p>
出问题的代ç 处(¾U¢è‰²éƒ¨åˆ†åQ‰ï¼š(x¨¬)
public Criteria createCriteria(Class entityClass, List criterions) {
Criteria criteria = getSession().createCriteria(entityClass);
if(criterions != null) {
for(int i=0; i
criteria.add((Criterion) criterions.get(i));
}
}
return criteria;
}
用完Session释放åŽå°±æ²¡äº‹äº†ï¼Œè°ƒç”¨HiberanteDaoSupportçš?font face="Arial">releaseSession(session);æ–ÒŽ(gu¨©)³•åŽå³å¯è§£å†Ÿë€?/font>
现在æ£ç¡®çš„代ç :(x¨¬)
public Page listByPage(Class entityClass, int pageNo, int pageSize, List criterions, List orders) {
Session session = getSession();
//创å¾criteria
Criteria criteria = session.createCriteria(entityClass);
//为criteriaæ·ÕdŠ criterions
createCriteria(entityClass, criteria, criterions);
CriteriaImpl impl = (CriteriaImpl) criteria;
// 先把Projectionå’ŒOrderByæ¡äšgå–出æ?æ¸…ç©ºä¸¤è€…æ¥æ‰§è¡ŒCountæ“作
Projection projection = impl.getProjection();
//èŽ·å–æ€»è®°å½•æ•°
int totalCount = ((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
if(totalCount < 1) {
return new Page();
}
//åŠ æŽ’åº?nbsp;
if(orders != null) {
for(int i=0; i
criteria.addOrder((Order) orders.get(i));
}
}
//原æ¥çš„æŠ•å½?nbsp;
criteria.setProjection(projection);
int startIndex = Page.getStartOfPage(pageNo, pageSize);
//å–å¾—¾l“æžœ
List list = criteria.setFirstResult(startIndex).setMaxResults(pageSize).list();
//释放hiberante资æº,一定è¦é‡Šæ”¾,è¦ä¸ç„¶å°±æ•°æ®åº“连接耗尽.
releaseSession(session);
return new Page(startIndex, totalCount, pageSize, list);
}
public Criteria createCriteria(Class entityClass, Criteria criteria, List criterions) {
if(criterions != null) {
for(int i=0; i
criteria.add((Criterion) criterions.get(i));
}
}
return criteria;
}
^_^

]]> Weblogic ä¸éƒ¨¾|?Web 应用½E‹åº http://www.aygfsteel.com/chenlb/archive/2007/09/22/147449.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Sat, 22 Sep 2007 10:48:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/09/22/147449.html http://www.aygfsteel.com/chenlb/comments/147449.html http://www.aygfsteel.com/chenlb/archive/2007/09/22/147449.html#Feedback 0 http://www.aygfsteel.com/chenlb/comments/commentRss/147449.html http://www.aygfsteel.com/chenlb/services/trackbacks/147449.html
1ã€å®‰è£…好weblogic8.1
2ã€åˆ©ç”¨Configuration Wizardé…ç½®Domainå’ŒserveråQŒæŒ‰ç…§ç¼ºçœå³å?br />
如:(x¨¬)
½W¬äºŒéƒ¨åŽåQŒæˆ‘æœÞZ¸Š¾l“æžœåQšæœ‰äº†D:\bea\user_projects\domains\mydomain目录其ä¸mydomain是å‘å¯ég¸è‡ªå·±å†™çš„ã€‚ç„¶åŽæŠŠweb应用½E‹åºæ”‘Öˆ°D:\bea\user_projects\domains\mydomain\applications目录ä¸ï¼Œapplications相当于Tomcatä¸çš„webapps目录ã€?br />
WEB-INF目录下å¯ä»¥ä¸ç”¨weblogic.xmlæ–‡äšgåQŒæ–‡ä»¶å†…容如下:(x¨¬)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<context-root>/WebModule1</context-root>
</weblogic-web-app>
如果æœ?lt;context-root>/WebModule1</context-root>åQŒW(xu¨¦)ebModule1æ‰æ˜¯webåº”ç”¨çš„æ ¹åœ°å€åQŒè®¿é—®åœ°å€ž®±æˆäº†è¿™æ øP¼š(x¨¬)http://localhost:7001/WebModule1/index.jsp
如果没有<context-root>/WebModule1</context-root>或没有weblogic.xmlæ–‡äšgåQŒè®¿é—®åœ°å€ä¸ºï¼š(x¨¬)http://localhost:7001/blank/index.jsp
å…¶ä¸blank是applications下的Web应用½E‹åºçš„æ ¹ç›®å½•ã€?

]]> jsp æäº¤è¡¨å•䏿–‡é—®é¢˜è§£å†³ http://www.aygfsteel.com/chenlb/archive/2007/09/09/143726.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Sun, 09 Sep 2007 01:47:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/09/09/143726.html http://www.aygfsteel.com/chenlb/comments/143726.html http://www.aygfsteel.com/chenlb/archive/2007/09/09/143726.html#Feedback 0 http://www.aygfsteel.com/chenlb/comments/commentRss/143726.html http://www.aygfsteel.com/chenlb/services/trackbacks/143726.html http://www.aygfsteel.com/chenlb/archive/2007/07/17/130922.html
1.用tomcat里é¢çš„例å?在webapps\servlets-examples\WEB-INF\classes\里把filters目录攑ֈ°ä½ çš„classer\ä¸?其实åªè¦SetCharacterEncodingFilterž®±å¯ä»¥äº†,在web.xml里åŠ
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.如果用springåQŒç”¨springæä¾›çš„过虑器åQŒåŒæ ·åœ¨web.xml里åŠ
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

]]> [转è²]jsp 实现 word, excel http://www.aygfsteel.com/chenlb/archive/2007/08/22/138588.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Wed, 22 Aug 2007 05:15:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/08/22/138588.html http://www.aygfsteel.com/chenlb/comments/138588.html http://www.aygfsteel.com/chenlb/archive/2007/08/22/138588.html#Feedback 0 http://www.aygfsteel.com/chenlb/comments/commentRss/138588.html http://www.aygfsteel.com/chenlb/services/trackbacks/138588.html ˜q™é‡Œä½¿ç”¨ä¸€ä¸ªå°æŠ€å·§ï¼Œž®±æ˜¯å…ˆå°†å…¶è{æ¢äØ“(f¨´)å¯ç¼–辑的JSPæ–‡äšgåQŒç„¶åŽå†åƒæ“作其它的JSP™åµé¢ä¸€æ äh“作,ž®Þp¿™ä¹ˆç®€å•ã€?/p>
å› äØ“(f¨´)ms wordå’Œexcel的文档都支æŒhtmlæ–‡æœ¬æ ¼å¼åQŒå› æ¤å¯ä»¥å…ˆç”¨word或excelåšå¥½æ¨¡ç‰ˆåQŒå¦å˜äØ“(f¨´)web™åµï¼Œç„¶åŽž®†è¯¥htmlæ”ÒŽ(gu¨©)ˆjspåQŒå°†æ•°æ®éƒ¨åˆ†åЍæ€å¡«å…¥å³å¯ï¼Œä¸ç”¨å¾ˆè¾›è‹¦çš„è°ƒæ•´æ ¼å¼ ã€?/p>
word™åµé¢åªè¦åœ¨jsp头设¾|®å¦‚下指令:(x¨¬)
<%@page contentType="application/msword;charset=gb2312" %>
excel如下åQ?
<%@page contentType="application/vnd.ms-excel;charset=gb2312" %>
使用˜q™ç§æ–¹å¼åQŒå°±ä¸ç”¨ä½¿ç”¨å…¶å®ƒçš„夿‚技术,òq¶ä¸”å¯ä»¥è¾‘Öˆ°å¾ˆå¥½çš„æ•ˆæžœï¼Œæ‰€è°“走路走æ·å¾„åQŒå‘µå‘µï¼Œä¾‹åž®×ƒ¸¾l™äº†ã€?br>
http://blog.csdn.net/fenglibing/archive/2007/06/27/1668809.aspx

]]> itest生æˆpdf䏿–‡ä¸ºç©ºç™?/title><link>http://www.aygfsteel.com/chenlb/archive/2007/03/21/105355.html</link><dc:creator>‹¹æµªæ±?/dc:creator><author>‹¹æµªæ±?/author><pubDate>Wed, 21 Mar 2007 11:52:00 GMT</pubDate><guid>http://www.aygfsteel.com/chenlb/archive/2007/03/21/105355.html</guid><wfw:comment>http://www.aygfsteel.com/chenlb/comments/105355.html</wfw:comment><comments>http://www.aygfsteel.com/chenlb/archive/2007/03/21/105355.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/chenlb/comments/commentRss/105355.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/chenlb/services/trackbacks/105355.html</trackback:ping><description><![CDATA[
<p>è¦ä¸‹è½½iTextAsian.jar<br /><br />地å€: <a >http://<span id="wmqeeuq" class="a" twffan="done"><font color="#008000" size="2">prdownloads.sourceforge.net/<wbr>itext/<b>iTextAsian</b>.jar?download</wbr></font></span></a><br /><br />import com.lowagie.text.Font;<br />import com.lowagie.text.pdf.BaseFont;<br /><br /><br />BaseFont bfChinese = BaseFont.createFont("STSong-Light",  "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);<br />Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);<br /><br />åŠ å…¥documentåQ?br /><br />Paragraph chunk = new Paragraph("䏿–‡", FontChinese);<br />document.add(chunk);<br /></p>
<img src ="http://www.aygfsteel.com/chenlb/aggbug/105355.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chenlb/" target="_blank">‹¹æµªæ±?/a> 2007-03-21 19:52 <a href="http://www.aygfsteel.com/chenlb/archive/2007/03/21/105355.html#Feedback" target="_blank" style="text-decoration:none;">å‘表评论</a></div>]]></description></item><item><title>poiä¼?x¨¬)䏿–‡äØ•ç?Jexcelapiä¸ä¼š(x¨¬) http://www.aygfsteel.com/chenlb/archive/2007/03/21/105346.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Wed, 21 Mar 2007 11:06:00 GMT http://www.aygfsteel.com/chenlb/archive/2007/03/21/105346.html http://www.aygfsteel.com/chenlb/comments/105346.html http://www.aygfsteel.com/chenlb/archive/2007/03/21/105346.html#Feedback 4 http://www.aygfsteel.com/chenlb/comments/commentRss/105346.html http://www.aygfsteel.com/chenlb/services/trackbacks/105346.html ç›®å‰æ¯”较‹¹è¡Œçš„生æˆExcelæ–‡äšg的有poiå’ŒJexcelapi
poiåŠ ä¸æ–‡æœ‰é—®é¢˜
必需å¯ÒŽ(gu¨©)¯ä¸€ä¸ªCellè®?
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
æ‰ä¸ä¼?x¨¬)䏿–‡äØ•ç?没有扑ֈ°æ›´å¥½çš„æ–¹æ³•一‹Æ¡æ€§è®¾¾|®æ‰€æœ‰Cell的嗽W¦å±žæ€?br />
用Jexcelapi试下å‘现ä¸ä¼š(x¨¬)å‡ºçŽ°ä¸æ–‡é—®é¢˜,æ˜¯å› ä¸ºå®ƒæ˜¯éŸ©å›½äh写的å?以多å—节å—ç¬¦ä¸ºæ ¹ç‚?br />
˜q˜æ˜¯å–œæ¬¢ç”¨Jexcelapi
下è²: http://sourceforge.net/project/showfiles.php?group_id=79926
:)
]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º
ÓñϪÊÐ|
ËçÀâÏØ|
Ìì×£|
Ì쳤ÊÐ|
ÂéÑô|
·ïÉ½ÏØ|
Èð°²ÊÐ|
±Ï½ÚÊÐ|
·î»¯ÊÐ|
Ìï¶«ÏØ|
á°¸ÞÏØ|
ºÍÁúÊÐ|
Т²ýÏØ|
ÀÖ²ýÊÐ|
Ô½Î÷ÏØ|
»Ý¶«ÏØ|
ÓÀ³ÇÊÐ|
¸ùºÓÊÐ|
ÔÀÆÕºþÏØ|
ÖζàÏØ|
À³Î÷ÊÐ|
ÓÀÄêÏØ|
ÄþÄÏÏØ|
¶þÁ¬ºÆÌØÊÐ|
¾Å½ÏØ|
°¢ÍßÌáÏØ|
Çíº£ÊÐ|
±±¾©ÊÐ|
¹ãÈÄÏØ|
ÔªÊÏÏØ|
ºç¿ÚÇø|
Î×ÏªÏØ|
ÓÜÉçÏØ|
ÄÏ·áÏØ|
ºþ±±Ê¡|
ÌïÑôÏØ|
ËÄ´¨Ê¡|
Ò˶¼ÊÐ|
Ñ×ÁêÏØ|
ÏÄÒØÏØ|
½òÊÐÊÐ|