??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的loggingq有炚w?要覆盖jre/lib/logging.properties的配|?q要在启动时?Djava.util.logging.config.file=mylogging.properties





java 1.4
日志U录?/span>java.util.logging.LevelcM定义了下列日志别常?/span>
Ø          SERVERQ?/span>表示一个严重失败。常常将有一个伴随的Throwable?/span>
Ø          CONFIGQ?/span>为应用配|期间所生成的消息而设计的?/span>
Ø          INFOQ?/span>中等优先U。表CZ个构件正在做什么(例如Q监视一Q务的  q行q度Q,但不是用来帮助调试该构g?/span>
Ø          FINEQ?/span>跟踪信息。该U别和较低优先的别应该用来帮助调试某些类Q但不应该用来M的说明该应用的工作方式?/span>
Ø          FINERQ?/span>详细的跟t信息?/span>
Ø          FINESTQ?/span>非常详细的跟t信息?/span>
Log4j?/span>cM定义了下列日志别常?/span>
Ø          FATALQ?/span>表示一个严重失败。导?/span>application的中断?/span>
Ø          ERRORQ?/span>表示一个错误事件。可以允?/span>Application可以l箋q行?/span>
Ø          WARNQ?/span>表示一个有潜在的危险?/span>
Ø          INFOQ?/span>表示一个构件正在做重要q行情况Q信息比较粗p?/span>
Ø          DEBUGQ?/span>表示一个构件详l的q行情况Q用于调?/span>Application?/span>
Ø          ALLQ?/span>表示U录所有别的日志信息?/span>
Common-logging的日志别分?/span>6U,从低到高分别?/span>traceQ?/span>debugQ?/span>infoQ?/span>warnQ?/span>errorQ?/span>fatal?/span>
Ø          FATALQ?/span>表示一个严重失败。导?/span>application的中断?/span>
Ø          ERRORQ?/span>表示一个错误事件。可以允?/span>Application可以l箋q行?/span>
Ø          WARNQ?/span>表示一个有潜在的危险?/span>
Ø          INFOQ?/span>表示一个构件正在做重要q行情况Q信息比较粗p?/span>
Ø          DEBUGQ?/span>表示一个构件详l的q行情况Q用于调?/span>Application?/span>
Ø          TRACEQ?/span>非常详细的跟t信息,仅仅用于U录该日志而已?br />








]]>
下蝲文g保存提示文g名显CZ?/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,不会接收下一ơ用L输入)。后来才发现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读RTFq问题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个品,池中辑ֈMq待,通知{待的消费者。消费者有产品消费,到没有时通知生者,然后{待?br /> <br /> 1.生者:<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中,池的大小会超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也会通知?</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"> 休息1U?</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.消费者:<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程(主要是生产?但也会通知到生产者线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()因ؓ同步的是pool。否则会抛出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[      目中有appletQ现在想只编译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.写excelc?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没有写个压~文件的CZQ昨晚弄了下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是目?它一般ؓnew File(path), 作用?使输出的zip文g以此目录为根目录, 如果为null它只压羃文g, 不解压目?
     * 
@param zo 压羃输出?br />      * @param isRecursive 是否递归
     * 
@param isOutBlankDir 是否输出I目? 要输出I目录ؓtrue,同时baseFile不ؓ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一ơ会输出文字?

]]>
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 采用新的ZANTLR的HQL/SQL查询译器,在Hibernate的配|文件中Qhibernate.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中需要用到antlrQ然而这个包在weblogic.jar中已l包含了antrlcdQ就会生一些类加蝲的错误,无法扑ֈ在war或者ear中的hibernate3.jar?
出现q个错误之后Qantlr会调用System.exit()Q这样weblogic׃中止服务?
解决Ҏ(gu):
1.是在hibernate.properties文g中增加属性:hibernate.query.factory_classQ属性的值是org.hibernate.hql.classic.ClassicQueryTranslatorFactoryQ这样就可以解决问题了?
但是部分功能会有问题Q譬?
但本pd扚w删除和更C有问?本系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之前加上下面一句:
set PRE_CLASSPATH=%WL_HOME%\server\lib\antlr-2.7.5H3.jar;
在set CLASSPATH之后加上下面一句:
set CLASSPATH=%PRE_CLASSPATH%;%CLASSPATH%
一切OKQ?
具体原因可参照此:http://dev2dev.bea.com/blog/pmalani/archive/2005/07/configuring_web.html

 

我用antlr-2.7.6.jar可以Q我用的hibernate3.2.3ga

]]>
weblogic8.1作ؓ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
=
 
改ؓ
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"

改ؓ

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(jin)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>03U?/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.6Qhibernate 3.2.3Qstruts 1.2.9Qoracle 10.2Qweblogic 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没有用OpenSessionInViewFilterQstruts与spring的整合:DelegatingRequestProcessor、action path与bean name同名?/font>

 

页不过10ơ,服务器就没响应了Q最后出C面的错误的了?/font>

刚用weblogicQ也刚用ssh套餐。郁闗?br />
前天解决了?br />

问题解决Q问题的原因是数据库q接耗尽Q我用HiberanteDaoSupport的getSession()Ҏ(gu)取得Session后没有释放Session?/p>

出问题的代码处(U色部分Q:

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>


现在正确的代码:


public Page listByPage(Class entityClass, int pageNo, int pageSize, List criterions, List orders) {    
    Session session 
= getSession();    
    
//创徏criteria    
    Criteria criteria = session.createCriteria(entityClass);    
    
//为criteriadcriterions    
    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和serverQ按照缺省即?br />
如:
W二部后Q我Zl果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文gQ文件内容如下:
<?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>QWebModule1才是web应用的根地址Q访问地址成了这Phttp://localhost:7001/WebModule1/index.jsp

如果没有<context-root>/WebModule1</context-root>或没有weblogic.xml文gQ访问地址为: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.如果用springQ用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.htmlq里使用一个小技巧,是先将其{换ؓ可编辑的JSP文gQ然后再像操作其它的JSP面一h作,p么简单?/p>

因ؓms word和excel的文档都支持html文本格式Q因此可以先用word或excel做好模版Q另存ؓweb,然后该htmlҎ(gu)jspQ将数据部分动态填入即可,不用很辛苦的调整格式 ?/p>

word面只要在jsp头设|如下指令:
<%@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 />加入documentQ?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会中文ؕ?Jexcelapi不会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);

才不会中文ؕ?没有扑ֈ更好的方法一ơ性设|所有Cell的字W属?br />

用Jexcelapi试下发现不会出现中文问题,是因为它是韩国h写的?以多字节字符为根?br />
q是喜欢用Jexcelapi

下蝲: http://sourceforge.net/project/showfiles.php?group_id=79926

:)

]]>
վ֩ģ壺 տ| | ȳ| żҸ| ˮ| ͬ| | ˮ| ʯɽ| | Ӫɽ| | | н| | ٹ| | | ʩ| | Ž| Դ| ̷| | ׯ| | ƾ| ͩ| | | ʯ| | | Դ| | | | ϲ| | ɽ| |