ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>成年网站在线视频网站,三级网站视频在在线播放,中文字幕亚洲在线http://www.aygfsteel.com/chenlb/category/17678.html好记性不如烂½W”头!zh-cnSat, 24 May 2008 18:29:53 GMTSat, 24 May 2008 18:29:53 GMT60[原]自己实现的优先队åˆ?PriorityQueuehttp://www.aygfsteel.com/chenlb/archive/2008/05/08/199368.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Thu, 08 May 2008 15:08:00 GMThttp://www.aygfsteel.com/chenlb/archive/2008/05/08/199368.htmlhttp://www.aygfsteel.com/chenlb/comments/199368.htmlhttp://www.aygfsteel.com/chenlb/archive/2008/05/08/199368.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/199368.htmlhttp://www.aygfsteel.com/chenlb/services/trackbacks/199368.html阅读全文

]]>
logging ¾U§åˆ«http://www.aygfsteel.com/chenlb/archive/2008/04/11/192134.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Fri, 11 Apr 2008 03:50:00 GMThttp://www.aygfsteel.com/chenlb/archive/2008/04/11/192134.htmlhttp://www.aygfsteel.com/chenlb/comments/192134.htmlhttp://www.aygfsteel.com/chenlb/archive/2008/04/11/192134.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/192134.htmlhttp://www.aygfsteel.com/chenlb/services/trackbacks/192134.htmljdk14çš„logging˜q˜æœ‰ç‚šwº»çƒ?要覆盖jre/lib/logging.properties的配¾|?˜q˜è¦åœ¨å¯åŠ¨æ—¶åŠ?Djava.util.logging.config.file=mylogging.properties





java 1.4
日志¾Uªå½•åœ?/span>java.util.logging.Level¾cÖM¸­å®šä¹‰äº†ä¸‹åˆ—日志çñ”别常æ•?/span>
Ø          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 GMThttp://www.aygfsteel.com/chenlb/archive/2008/02/01/178863.htmlhttp://www.aygfsteel.com/chenlb/comments/178863.htmlhttp://www.aygfsteel.com/chenlb/archive/2008/02/01/178863.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/178863.htmlhttp://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 futurehttp://www.aygfsteel.com/chenlb/archive/2007/12/13/167619.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Thu, 13 Dec 2007 15:13:00 GMThttp://www.aygfsteel.com/chenlb/archive/2007/12/13/167619.htmlhttp://www.aygfsteel.com/chenlb/comments/167619.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/12/13/167619.html#Feedback1http://www.aygfsteel.com/chenlb/comments/commentRss/167619.htmlhttp://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 GMThttp://www.aygfsteel.com/chenlb/archive/2007/10/31/157228.htmlhttp://www.aygfsteel.com/chenlb/comments/157228.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/10/31/157228.html#Feedback1http://www.aygfsteel.com/chenlb/comments/commentRss/157228.htmlhttp://www.aygfsteel.com/chenlb/services/trackbacks/157228.htmlfreiberg 的博客ã€?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 è¯?excelhttp://www.aygfsteel.com/chenlb/archive/2007/10/29/156614.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Mon, 29 Oct 2007 03:04:00 GMThttp://www.aygfsteel.com/chenlb/archive/2007/10/29/156614.htmlhttp://www.aygfsteel.com/chenlb/comments/156614.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/10/29/156614.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/156614.htmlhttp://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 å†?excelhttp://www.aygfsteel.com/chenlb/archive/2007/10/29/156613.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Mon, 29 Oct 2007 02:52:00 GMThttp://www.aygfsteel.com/chenlb/archive/2007/10/29/156613.htmlhttp://www.aygfsteel.com/chenlb/comments/156613.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/10/29/156613.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/156613.htmlhttp://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 GMThttp://www.aygfsteel.com/chenlb/archive/2007/10/25/155971.htmlhttp://www.aygfsteel.com/chenlb/comments/155971.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/10/25/155971.html#Feedback1http://www.aygfsteel.com/chenlb/comments/commentRss/155971.htmlhttp://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 GMThttp://www.aygfsteel.com/chenlb/archive/2007/10/18/153866.htmlhttp://www.aygfsteel.com/chenlb/comments/153866.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/10/18/153866.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/153866.htmlhttp://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, truetrue);
            
            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 下蝲文äšghttp://www.aygfsteel.com/chenlb/archive/2007/10/16/153408.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Tue, 16 Oct 2007 15:57:00 GMThttp://www.aygfsteel.com/chenlb/archive/2007/10/16/153408.htmlhttp://www.aygfsteel.com/chenlb/comments/153408.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/10/16/153408.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/153408.htmlhttp://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.HqlTokenhttp://www.aygfsteel.com/chenlb/archive/2007/10/07/150849.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Sun, 07 Oct 2007 08:37:00 GMThttp://www.aygfsteel.com/chenlb/archive/2007/10/07/150849.htmlhttp://www.aygfsteel.com/chenlb/comments/150849.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/10/07/150849.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/150849.htmlhttp://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 GMThttp://www.aygfsteel.com/chenlb/archive/2007/10/06/150758.htmlhttp://www.aygfsteel.com/chenlb/comments/150758.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/10/06/150758.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/150758.htmlhttp://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 GMThttp://www.aygfsteel.com/chenlb/archive/2007/10/06/150739.htmlhttp://www.aygfsteel.com/chenlb/comments/150739.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/10/06/150739.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/150739.htmlhttp://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 GMThttp://www.aygfsteel.com/chenlb/archive/2007/09/22/147449.htmlhttp://www.aygfsteel.com/chenlb/comments/147449.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/09/22/147449.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/147449.htmlhttp://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 GMThttp://www.aygfsteel.com/chenlb/archive/2007/09/09/143726.htmlhttp://www.aygfsteel.com/chenlb/comments/143726.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/09/09/143726.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/143726.htmlhttp://www.aygfsteel.com/chenlb/services/trackbacks/143726.htmlhttp://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, excelhttp://www.aygfsteel.com/chenlb/archive/2007/08/22/138588.html‹¹æµªæ±?/dc:creator>‹¹æµªæ±?/author>Wed, 22 Aug 2007 05:15:00 GMThttp://www.aygfsteel.com/chenlb/archive/2007/08/22/138588.htmlhttp://www.aygfsteel.com/chenlb/comments/138588.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/08/22/138588.html#Feedback0http://www.aygfsteel.com/chenlb/comments/commentRss/138588.htmlhttp://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 GMThttp://www.aygfsteel.com/chenlb/archive/2007/03/21/105346.htmlhttp://www.aygfsteel.com/chenlb/comments/105346.htmlhttp://www.aygfsteel.com/chenlb/archive/2007/03/21/105346.html#Feedback4http://www.aygfsteel.com/chenlb/comments/commentRss/105346.htmlhttp://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

:)

]]>
Ö÷Õ¾Ö©Öë³ØÄ£°å£º ÓñϪÊÐ| ËçÀâÏØ| Ìì×£| Ì쳤ÊÐ| ÂéÑô| ·ïÉ½ÏØ| Èð°²ÊÐ| ±Ï½ÚÊÐ| ·î»¯ÊÐ| Ìï¶«ÏØ| á°¸ÞÏØ| ºÍÁúÊÐ| Т²ýÏØ| ÀÖ²ýÊÐ| Ô½Î÷ÏØ| »Ý¶«ÏØ| ÓÀ³ÇÊÐ| ¸ùºÓÊÐ| ÔÀÆÕºþÏØ| ÖζàÏØ| À³Î÷ÊÐ| ÓÀÄêÏØ| ÄþÄÏÏØ| ¶þÁ¬ºÆÌØÊÐ| ¾Å½­ÏØ| °¢ÍßÌáÏØ| Çíº£ÊÐ| ±±¾©ÊÐ| ¹ãÈÄÏØ| ÔªÊÏÏØ| ºç¿ÚÇø| Î×ÏªÏØ| ÓÜÉçÏØ| ÄÏ·áÏØ| ºþ±±Ê¡| ÌïÑôÏØ| ËÄ´¨Ê¡| Ò˶¼ÊÐ| Ñ×ÁêÏØ| ÏÄÒØÏØ| ½òÊÐÊÐ|