﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-PS，1880后程序员</title><link>http://www.blogjava.net/amenglai/</link><description>看不完的牙，写不完的程序，跑不完的步。</description><language>zh-cn</language><lastBuildDate>Wed, 29 Apr 2026 16:49:51 GMT</lastBuildDate><pubDate>Wed, 29 Apr 2026 16:49:51 GMT</pubDate><ttl>60</ttl><item><title>MySQL 定义异常</title><link>http://www.blogjava.net/amenglai/archive/2013/10/24/405583.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Thu, 24 Oct 2013 02:24:00 GMT</pubDate><guid>http://www.blogjava.net/amenglai/archive/2013/10/24/405583.html</guid><wfw:comment>http://www.blogjava.net/amenglai/comments/405583.html</wfw:comment><comments>http://www.blogjava.net/amenglai/archive/2013/10/24/405583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amenglai/comments/commentRss/405583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amenglai/services/trackbacks/405583.html</trackback:ping><description><![CDATA[<div><div><h1><br /></h1>  <p>MySQL5.6<span style="font-family:宋体;">，使用</span>SIGNAL<span style="font-family:宋体;">可以根据变量的值，抛出</span>Exception<span style="font-family:宋体;">。</span></p>  <h2><span style="font-family:宋体;">测试数据</span></h2>  <p>create table t1(f1 int);</p>  <p>insert into t1(f1) values(2);</p>  <p>insert into t1(f1) values(12);</p>  <p>insert into t1(f1) values(4);</p>  <p>insert into t1(f1) values(6);</p>  <p>insert into t1(f1) values(7);</p>  <p>&nbsp;</p>  <h2><span style="font-family:宋体;">存储过程定义</span></h2>  <p>-- --------------------------------------------------------------------------------</p>  <p>-- Routine DDL</p>  <p>-- Note: comments before and after the routine body will not be stored by the server</p>  <p>-- --------------------------------------------------------------------------------</p>  <p>DELIMITER $$</p>  <p>&nbsp;</p>  <p>CREATE PROCEDURE `my_test` </p>  <p>&nbsp;(</p>  <p>&nbsp;&nbsp;&nbsp; in_c_t&nbsp;int</p>  <p>&nbsp;) </p>  <p>BEGIN</p>  <p>&nbsp;DECLARE my_n_t int;</p>  <p>&nbsp;DECLARE specialty CONDITION FOR SQLSTATE '45000';</p>  <p>&nbsp;</p>  <p>SELECT count(1) into my_n_t</p>  <p>&nbsp;&nbsp;&nbsp; FROM t1</p>  <p>&nbsp;&nbsp;&nbsp; WHERE f1 = in_c_t;</p>  <p>&nbsp;</p>  <p>IF my_n_t = 0 THEN</p>  <p>&nbsp;&nbsp;&nbsp; <span style="color:red">SIGNAL SQLSTATE '45000'</span></p>  <p><span style="color:red"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>SET MESSAGE_TEXT = 'Can not delete</span><span style="font-family:宋体;color:red">！</span><span style="color:red">';</span></p>  <p>end IF;</p>  <p>&nbsp;</p>  <p>&nbsp;delete from t1&nbsp;WHERE f1 = in_c_t;</p>  <p>&nbsp;COMMIT ;</p>  <p>&nbsp;</p>  <p>END</p>  <p>&nbsp;</p>  <h2><span style="font-family:宋体;">执行</span></h2>  <p>call my_test(2);</p>  <p><span style="font-family:宋体;">输出：<br /><br /><br /><img src="http://www.blogjava.net/images/blogjava_net/amenglai/无标题.png" width="775" height="32" alt="" /><br /><br /><br /></span></p></div></div><img src ="http://www.blogjava.net/amenglai/aggbug/405583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amenglai/" target="_blank">amenglai</a> 2013-10-24 10:24 <a href="http://www.blogjava.net/amenglai/archive/2013/10/24/405583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 这个SQL该怎么写？</title><link>http://www.blogjava.net/amenglai/archive/2013/10/09/404785.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Wed, 09 Oct 2013 03:12:00 GMT</pubDate><guid>http://www.blogjava.net/amenglai/archive/2013/10/09/404785.html</guid><wfw:comment>http://www.blogjava.net/amenglai/comments/404785.html</wfw:comment><comments>http://www.blogjava.net/amenglai/archive/2013/10/09/404785.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amenglai/comments/commentRss/404785.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amenglai/services/trackbacks/404785.html</trackback:ping><description><![CDATA[<div><p><font class="Apple-style-span" face="宋体"><br /></font></p>  <p><span style="font-family:宋体;">表</span>1 T1<span style="font-family:宋体;">，字段</span> ID VALUE</p>  <p><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">CREATE</span> <span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">TABLE</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;"> T1(</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">ID</span> <span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">VARCHAR2</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;">(</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:blue;background:white;">20</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">), </span><span style="font-size: 11.0pt;font-family:&quot;Courier New&quot;;color:teal;background:white;">VALUE</span> <span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">NUMBER</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">(</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:blue;background:white;">5</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:navy;background:white;">));</span></p>  <p><span style="font-family:宋体;">表</span>2 T2<span style="font-family:宋体;">，字段</span> ID VALUE</p>  <p><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">CREATE</span> <span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">TABLE</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;"> T2(</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">ID</span> <span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">VARCHAR2</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;">(</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:blue;background:white;">20</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">), </span><span style="font-size: 11.0pt;font-family:&quot;Courier New&quot;;color:teal;background:white;">VALUE</span> <span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">NUMBER</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">(</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:blue;background:white;">5</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:navy;background:white;">));</span></p>  <p><span style="font-family:宋体;">表</span>1<span style="font-family:宋体;">数据如下</span></p>  <table border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">  <tbody><tr>   <td width="189" valign="top" style="width:142.0pt;border:solid black 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">   <p>ID</p>   </td>   <td width="189" valign="top" style="width:142.05pt;border:solid black 1.0pt;border-left:none;padding:0cm 5.4pt 0cm 5.4pt">   <p>VALUE</p>   </td>  </tr>  <tr>   <td width="189" valign="top" style="width:142.0pt;border:solid black 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt">   <p>A</p>   </td>   <td width="189" valign="top" style="width:142.05pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;   border-right:solid black 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">   <p>2</p>   </td>  </tr>  <tr>   <td width="189" valign="top" style="width:142.0pt;border:solid black 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt">   <p>C</p>   </td>   <td width="189" valign="top" style="width:142.05pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;   border-right:solid black 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">   <p>12</p>   </td>  </tr> </tbody></table>  <p><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">INSERT</span> <span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">INTO</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;"> T1(</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">ID</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">,</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">VALUE</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;">) </span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">VALUES</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">(</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:blue;background:white;">'A'</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:navy;background:white;">,</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:blue;background:white;">2</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:navy;background:white;">);</span></p>  <p><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">INSERT</span> <span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">INTO</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;"> T1(</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">ID</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">,</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">VALUE</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;">) </span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">VALUES</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">(</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:blue;background:white;">'C'</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:navy;background:white;">,</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:blue;background:white;">12</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:navy;background:white;">);</span></p>  <p><span style="font-family:宋体;">表</span>2<span style="font-family:宋体;">数据如下：</span></p>  <table border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">  <tbody><tr>   <td width="189" valign="top" style="width:142.0pt;border:solid black 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">   <p>ID</p>   </td>   <td width="189" valign="top" style="width:142.05pt;border:solid black 1.0pt;border-left:none;padding:0cm 5.4pt 0cm 5.4pt">   <p>VALUE</p>   </td>  </tr>  <tr>   <td width="189" valign="top" style="width:142.0pt;border:solid black 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt">   <p>A</p>   </td>   <td width="189" valign="top" style="width:142.05pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;   border-right:solid black 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">   <p>23</p>   </td>  </tr>  <tr>   <td width="189" valign="top" style="width:142.0pt;border:solid black 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt">   <p>B</p>   </td>   <td width="189" valign="top" style="width:142.05pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;   border-right:solid black 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">   <p>7</p>   </td>  </tr> </tbody></table>  <p><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">INSERT</span> <span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">INTO</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;"> T2(</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">ID</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">,</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">VALUE</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;">) </span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">VALUES</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">(</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:blue;background:white;">'A'</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:navy;background:white;">,</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:blue;background:white;">23</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:navy;background:white;">);</span></p>  <p><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">INSERT</span> <span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">INTO</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;"> T2(</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">ID</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">,</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">VALUE</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:navy;background:white;">) </span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">VALUES</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">(</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:blue;background:white;">'B'</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:navy;background:white;">,</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:blue;background:white;">7</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:navy;background:white;">);</span></p>  <p>&nbsp;</p>  <p><span style="font-family:宋体;">希望得到的结果是：</span></p>  <table border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">  <tbody><tr>   <td width="189" valign="top" style="width:142.0pt;border:solid black 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">   <p>ID</p>   </td>   <td width="189" valign="top" style="width:142.05pt;border:solid black 1.0pt;border-left:none;padding:0cm 5.4pt 0cm 5.4pt">   <p>VALUE</p>   </td>  </tr>  <tr>   <td width="189" valign="top" style="width:142.0pt;border:solid black 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt">   <p>A</p>   </td>   <td width="189" valign="top" style="width:142.05pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;   border-right:solid black 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">   <p>25</p>   </td>  </tr>  <tr>   <td width="189" valign="top" style="width:142.0pt;border:solid black 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt">   <p>B</p>   </td>   <td width="189" valign="top" style="width:142.05pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;   border-right:solid black 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">   <p>7</p>   </td>  </tr>  <tr>   <td width="189" valign="top" style="width:142.0pt;border:solid black 1.0pt;border-top:none;padding:0cm 5.4pt 0cm 5.4pt">   <p>C</p>   </td>   <td width="189" valign="top" style="width:142.05pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;   border-right:solid black 1.0pt;padding:0cm 5.4pt 0cm 5.4pt">   <p>12</p>   </td>  </tr> </tbody></table>  <p>&nbsp;</p>  <p><span style="font-family:宋体;">其实就是要得到合集</span></p>  <p>&nbsp;</p>  <p>SQL<span style="font-family:宋体;">语句如下：</span></p>  <p align="left" style="text-align:left;text-autospace:none"><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">SELECT</span> <span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:teal;background:white;">ID</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:navy;background:white;">,</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:teal;background:white;">SUM</span><span style="font-size: 11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;">(</span><span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:teal;background:white;">VALUE</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:navy;background:white;">)</span></p>  <p align="left" style="text-align:left;text-autospace:none"><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">FROM</span> </p>  <p align="left" style="text-align:left;text-autospace:none"><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:navy;background:white;">(</span></p>  <p align="left" style="text-align:left;text-autospace:none"><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">SELECT</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;"> * </span><span style="font-size: 11.0pt;font-family:&quot;Courier New&quot;;color:teal;background:white;">FROM</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:navy;background:white;"> T1</span></p>  <p align="left" style="text-align:left;text-autospace:none"><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">UNION</span></p>  <p align="left" style="text-align:left;text-autospace:none"><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:teal;background:white;">SELECT</span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:navy;background:white;"> * </span><span style="font-size: 11.0pt;font-family:&quot;Courier New&quot;;color:teal;background:white;">FROM</span><span style="font-size:11.0pt; font-family:&quot;Courier New&quot;;color:navy;background:white;"> T2</span></p>  <p><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;; color:navy;background:white;">) </span><span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:teal;background:white;">GROUP</span> <span style="font-size:11.0pt;font-family: &quot;Courier New&quot;;color:teal;background:white;">BY</span> <span style="font-size:11.0pt;font-family:&quot;Courier New&quot;;color:teal;background:white;">ID</span></p>  <p>&nbsp;</p></div><img src ="http://www.blogjava.net/amenglai/aggbug/404785.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amenglai/" target="_blank">amenglai</a> 2013-10-09 11:12 <a href="http://www.blogjava.net/amenglai/archive/2013/10/09/404785.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle计算指定日期到月末的双休日的天数</title><link>http://www.blogjava.net/amenglai/archive/2013/08/28/403424.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Wed, 28 Aug 2013 15:15:00 GMT</pubDate><guid>http://www.blogjava.net/amenglai/archive/2013/08/28/403424.html</guid><wfw:comment>http://www.blogjava.net/amenglai/comments/403424.html</wfw:comment><comments>http://www.blogjava.net/amenglai/archive/2013/08/28/403424.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amenglai/comments/commentRss/403424.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amenglai/services/trackbacks/403424.html</trackback:ping><description><![CDATA[<div><div>业务逻辑：</div><div></div><div>count=0;</div><div>计算得到指定日期的下一个周日my_nextsunday</div><div>计算得到月末my_lastdate</div><div>IF 下一个周日&lt;=月末 THEN</div><div>&nbsp;&nbsp;周数=（月末-下一个周日的天数）/7</div><div>&nbsp;&nbsp;余数=（月末-下一个周日的天数）%7</div><div>&nbsp;&nbsp;IF 余数！=0 THEN count=1;</div><div>&nbsp;&nbsp;count+=周数*2</div><div>&nbsp;&nbsp;IF DAYOFWEEK（指定日期）=1 THEN count+=2；</div><div>&nbsp;&nbsp;ELSE count+=1；</div><div>ELSE</div><div>&nbsp;&nbsp;计算 DAYOFWEEK（指定日期）-&gt; DWS</div><div>&nbsp;&nbsp;计算 DAYOFWEEK（月末）-&gt; DWE</div><div>&nbsp;&nbsp;IF DWS&lt;=DME THEN --没有跨周</div><div>&nbsp;&nbsp; &nbsp;IF DWS=1 THEN count+=1；</div><div>&nbsp;&nbsp; &nbsp;IF DWE=7 THEN count+=1；</div><div>&nbsp;&nbsp;ELSE count=2；</div><div>END IF;</div><div><br /><div><div>CREATE OR REPLACE FUNCTION WEEKENDDAY( IN_APP_DATE IN DATE)</div><div>RETURN integer IS</div><div>&nbsp;&nbsp; &nbsp;my_lastdate DATE;</div><div>&nbsp;&nbsp; &nbsp;my_nextsunday DATE;</div><div>&nbsp;&nbsp; &nbsp;my_weeks integer;</div><div>&nbsp;&nbsp; &nbsp;my_n_diff integer;</div><div>&nbsp;&nbsp; &nbsp;my_remain integer;</div><div>&nbsp;&nbsp; &nbsp;my_dws integer;</div><div>&nbsp;&nbsp; &nbsp;my_dwe integer;</div><div>&nbsp;&nbsp; &nbsp;out_count integer :=0;</div><div>BEGIN</div><div>&nbsp;&nbsp; my_lastdate:=LAST_DAY(IN_APP_DATE);</div><div>&nbsp;&nbsp; select NEXT_DAY(IN_APP_DATE,1) INTO my_nextsunday from dual;</div><div>&nbsp;&nbsp; my_n_diff:=TRUNC( ( &nbsp;my_lastdate - my_nextsunday ), 0 )+1;</div><div>&nbsp;&nbsp; if(my_nextsunday&lt;=my_lastdate) THEN</div><div>&nbsp;&nbsp; &nbsp; my_weeks:=FLOOR(my_n_diff/7);</div><div>&nbsp;&nbsp; &nbsp; my_remain:=mod(my_n_diff,7);</div><div>&nbsp;&nbsp; &nbsp; if my_remain&gt;0 THEN&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; out_count:=1;&nbsp;</div><div>&nbsp;&nbsp; &nbsp; END IF; &nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp; out_count:=out_count+my_weeks*2;</div><div>&nbsp;&nbsp; &nbsp; IF to_number(to_char(IN_APP_DATE,'D'))=1 THEN&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; out_count:=out_count+2;</div><div>&nbsp;&nbsp; &nbsp; ELSE&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; out_count:=out_count+1;</div><div>&nbsp;&nbsp; &nbsp; END IF; &nbsp;&nbsp;</div><div>&nbsp;&nbsp; ELSE</div><div>&nbsp;&nbsp; &nbsp; my_dws:=to_number(to_char(IN_APP_DATE,'D'));</div><div>&nbsp;&nbsp; &nbsp; my_dwe:=to_number(to_char(my_lastdate,'D'));</div><div>&nbsp;&nbsp; &nbsp; IF my_dws&lt;=my_dwe THEN</div><div>&nbsp;&nbsp; &nbsp; &nbsp; IF my_dws=1 THEN&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; out_count:=out_count+1;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; END IF; &nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; IF my_dwe=7 THEN&nbsp;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; out_count:=out_count+1;</div><div>&nbsp;&nbsp; &nbsp; &nbsp; END IF; &nbsp; &nbsp;</div><div>&nbsp;&nbsp; &nbsp; ELSE</div><div>&nbsp;&nbsp; &nbsp; &nbsp; out_count:=2;</div><div>&nbsp;&nbsp; &nbsp; END IF; &nbsp;</div><div>&nbsp;&nbsp; end if;</div><div>&nbsp;&nbsp; return out_count;</div><div>END WEEKENDDAY;</div></div><div></div></div></div><img src ="http://www.blogjava.net/amenglai/aggbug/403424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amenglai/" target="_blank">amenglai</a> 2013-08-28 23:15 <a href="http://www.blogjava.net/amenglai/archive/2013/08/28/403424.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Xfire 部署错误</title><link>http://www.blogjava.net/amenglai/archive/2013/03/18/396591.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Mon, 18 Mar 2013 07:06:00 GMT</pubDate><guid>http://www.blogjava.net/amenglai/archive/2013/03/18/396591.html</guid><wfw:comment>http://www.blogjava.net/amenglai/comments/396591.html</wfw:comment><comments>http://www.blogjava.net/amenglai/archive/2013/03/18/396591.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amenglai/comments/commentRss/396591.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amenglai/services/trackbacks/396591.html</trackback:ping><description><![CDATA[<div><p><span style="font-family:宋体;">用</span>xfire<span style="font-family:宋体;">写了个</span> web service<span style="font-family:宋体;">，在开发环境没有任何问题，可以正常访问，但是部署到运行环境，我去，一堆的问题，无法使用。</span></p>  <p><span style="font-family:宋体;">一句一句的跟踪，执行到这句，系统就归西了</span></p>  <p><span style="color:red">Service srvcModel = new ObjectServiceFactory().create(EmsReportInterface.class);</span></p>  <p><span style="font-family:宋体;">查看后台的错误信息，发现都是由于缺少必要的</span>jar<span style="font-family:宋体;">包造成的，但是这些</span>jar<span style="font-family:宋体;">包在开发环境里并不需要：</span></p>  <p>Caused by: javax.xml.stream.FactoryConfigurationError: Provider com.bea.xml.stream.MXParserFactory not found</p>  <p><span style="font-family:宋体;">缺少</span>wstx-asl-3.2.0.jar<span style="font-family:宋体;">和</span>stax-api-1.0.1.jar,</p>  <p>Caused by: ognl.OgnlException: downloadFile [java.lang.NoClassDefFoundError: javax/xml/stream/XMLStreamReader]</p>  <p><span style="font-family:宋体;">缺少</span>jsr173_api-1.0.jar</p>  <p>Caused by: java.lang.NoClassDefFoundError: javax/activation/DataSource</p>  <p><span style="font-family:宋体;">缺少</span>activation.jar</p>  <p><span style="font-family:宋体;">以上这些</span>jar<span style="font-family:宋体;">包需要添加到</span>WEB-INF\lib<span style="font-family:宋体;">目录下。</span></p>  <p><span style="font-family:宋体;">另外</span>WEB-INF\classes<span style="font-family:宋体;">目录下的</span>wsdl<span style="font-family:宋体;">文件由于环境的差异，最好重新生成。</span></p>  <p><span style="font-family:宋体;">对应</span>url: <a href="http://127.0.0.1:8080/AppName/services/">http://127.0.0.1:8080/AppName/services/</a></p>  <p><span style="font-family:宋体;">例如：</span><a href="http://127.0.0.1:8080/ems/services/">http://127.0.0.1:8080/ems/services/</a></p>  <p>&nbsp;</p></div><img src ="http://www.blogjava.net/amenglai/aggbug/396591.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amenglai/" target="_blank">amenglai</a> 2013-03-18 15:06 <a href="http://www.blogjava.net/amenglai/archive/2013/03/18/396591.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EE Development without EJB读书笔记</title><link>http://www.blogjava.net/amenglai/archive/2013/02/22/395584.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Fri, 22 Feb 2013 08:31:00 GMT</pubDate><guid>http://www.blogjava.net/amenglai/archive/2013/02/22/395584.html</guid><wfw:comment>http://www.blogjava.net/amenglai/comments/395584.html</wfw:comment><comments>http://www.blogjava.net/amenglai/archive/2013/02/22/395584.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amenglai/comments/commentRss/395584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amenglai/services/trackbacks/395584.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Chapter 6 Lightweight Containers and Inversion of Control体会为何叫做BeanFactory？在xml文件中的定义，不管用于何种目的，其实定义的都是对象。只有对象才会有singleton。rod强调要把BeanFactory保存在ServletContext里，因为创建BeanFactory开销很大，并且建议使用singleton模式rod强...&nbsp;&nbsp;<a href='http://www.blogjava.net/amenglai/archive/2013/02/22/395584.html'>阅读全文</a><img src ="http://www.blogjava.net/amenglai/aggbug/395584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amenglai/" target="_blank">amenglai</a> 2013-02-22 16:31 <a href="http://www.blogjava.net/amenglai/archive/2013/02/22/395584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EE Development without EJB读后感</title><link>http://www.blogjava.net/amenglai/archive/2013/02/22/395583.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Fri, 22 Feb 2013 08:30:00 GMT</pubDate><guid>http://www.blogjava.net/amenglai/archive/2013/02/22/395583.html</guid><wfw:comment>http://www.blogjava.net/amenglai/comments/395583.html</wfw:comment><comments>http://www.blogjava.net/amenglai/archive/2013/02/22/395583.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amenglai/comments/commentRss/395583.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amenglai/services/trackbacks/395583.html</trackback:ping><description><![CDATA[<div><span style="color: #464646; font-family: simsun; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">伴随</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Spring</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">的流行，出现了大量的关于</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Spring</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">的书籍，这些书被冠以精通，入门，实战，巴拉巴拉。让人眼花缭乱。这些书大多讲的是</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">how to do</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">，而</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Spring</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">作者</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">rod</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">写的</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Spring</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">三部曲：</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">J2EE Design and Development</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">J2EE Development without EJB</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Professional Java Development with the Spring Framework</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">让我们明白的是</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">why to do</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><strong><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">读书的目标</span></strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">J2EE Development without EJB</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">讲述的就是</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">why to do</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">。所以你如果想知道</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Spring</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">中某个配置是怎么怎么写，参数是什么含义，这本书的确帮不上忙。如果是第一次接触</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Spring</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">，读完这本书，估计连个</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Spring</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">的配置文件都写不好。</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">5</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">年前我就是抱着</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">how to do</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">的想法读这本书的，以为想读完了，就可以在已有的系统引入</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Spring</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">。结果可想而知，当时我都觉得这书写的还不如在线文档。</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><strong><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">读哪些章节</span></strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Spring</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">是个很庞大的系统，涵盖企业级应用的所有内容。从后台数据库到前台展示的所有内容，但其实个人用到的很有限。例如现在的系统，用</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">EJB</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">的越来越少了，所以建议跳过关于</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">EJB</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">的章节。我选读了</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">6,7,9,10,14</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">章，其实</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">15</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">章性能与可伸缩性也应该读。</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><strong><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">如何读</span></strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">这本书首先值得反复读，而不是仅仅读一遍。因为它不是手册。每读一章，我都感觉在看一部大片，</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">rod</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">引导我们渐渐进入</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Spring</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">的神奇世界。为什么要反复读？大概是我笨的原因，经常读到最后才恍然大悟，然后就觉得前面似乎落下了什么。就像一部悬疑片小说，最后谜底揭开了，你恍然大悟，然后重新再看一遍，体会中间的蛛丝马迹。</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">千万不要提前翻看每章的小结部分，还是让</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">rod</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">带我们进入那个神奇的世界。不是每本书都有这样的体验的，珍惜。</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">另外，如果木有语言障碍，还是看原版吧。其实</span><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Javaeye</span><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">的翻译已经很出色了，但是毕竟不如直接读原文来的直接，当然最好手边能配上本中文版，晦涩难懂时翻下。不过，不过这本书的中文版已经是绝版书了，找到不容易了。哈哈，我有。</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><strong><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">然后呢</span></strong></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span style="word-wrap: normal; word-break: normal; line-height: 21px; font-family: 宋体; ">读完这本书，我为自己拉了个新的书单：</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Junit in Action</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">J2EE Design and Development</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Professional Java Development with the Spring Framework</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">Core J2EE patterns</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 5px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; list-style-type: none; list-style-position: initial; list-style-image: initial; border-style: initial; border-color: initial; word-wrap: normal; word-break: normal; line-height: 21px; "><span xml:lang="EN-US" style="word-wrap: normal; word-break: normal; line-height: 21px; ">PEAA</span></p></span></div><img src ="http://www.blogjava.net/amenglai/aggbug/395583.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amenglai/" target="_blank">amenglai</a> 2013-02-22 16:30 <a href="http://www.blogjava.net/amenglai/archive/2013/02/22/395583.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内存泄漏 - 开篇 数据库应用</title><link>http://www.blogjava.net/amenglai/archive/2013/01/18/394386.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Fri, 18 Jan 2013 03:14:00 GMT</pubDate><guid>http://www.blogjava.net/amenglai/archive/2013/01/18/394386.html</guid><wfw:comment>http://www.blogjava.net/amenglai/comments/394386.html</wfw:comment><comments>http://www.blogjava.net/amenglai/archive/2013/01/18/394386.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amenglai/comments/commentRss/394386.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amenglai/services/trackbacks/394386.html</trackback:ping><description><![CDATA[最近都在读那个该死的猪小弟写的代码，原因还不是因为压力测试后，发现TMD的内存泄漏啦！<br />边看代码边在心中鄙视这个猪小弟，该死的猪小弟，说你比猪笨，猪觉得这是对自己的侮辱都不乐意，<br />很多心得哦，慢慢整理出来。<br />先说说JDBC吧。<br /><strong>不关闭Connection</strong><br /><div><span class="Apple-style-span" style="font-weight: normal; ">这是最常见的错误，数据库增删改操作后，没有关闭数据库连接，导致占用大量内存，如果是用连接池，那么系统很快就木有可用的数据库连接了；如果是直接连接数据库，很快系统内存就耗尽了，要知道数据库连接很费资源的，否则要连接池干吗？而且这种错误很难查，一个系统上百个DB操作，就一个没关闭，惨了！</span><br /><strong>不关闭Statement,ResultSet</strong><br /><div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">这是另一种错误，数据库连接关闭了，但是Statement,ResultSet没关闭。谁说的关闭了数据库连接其它就不用关闭的。只关闭连接，那些Statement,ResultSet就如同孤坟野鬼一样占据你的Heap，而且还是阴魂不散的说，最后系统耗尽内存气绝身亡。</div></div><div><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><strong>频繁数据库连接</strong><br />大多数业务系统，一个业务操作可能会关联多张表的增删改。麻烦不要每操作一张表，就请求一次数据库连接。麻烦把请求数据库连接看做是请你学妹吃饭好不好，小学妹很矜持，请一次也不容易。这样想，你请求数据库连接时，就会谨慎些，尽可能一次数据库连接，对多张表进行操作。<br /><strong>经验</strong><br />不要把代码写成connection.close(); 或者&nbsp;<span class="Apple-style-span" style="color: #333333; font-family: Arial; line-height: 26px; ">datasource.getConnection();把他们都封装到工具类里面，这样测试的时候加进去debug代码，很容易就找到那个该死的连接没有关闭了。Statement, ResultSet也是这样。<br /><br /></span>最后，猪小弟是谁？<br />呵呵，猪小弟是5年前的我，或者是8年前的我。当年，年幼无知，无知者无畏，犯下无数的错误，感谢老板，感谢客户，你们太有牺牲精神了。<br /></div></div></div><img src ="http://www.blogjava.net/amenglai/aggbug/394386.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amenglai/" target="_blank">amenglai</a> 2013-01-18 11:14 <a href="http://www.blogjava.net/amenglai/archive/2013/01/18/394386.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Eclipse Memory Analyzer对Tomcat进行内存分析</title><link>http://www.blogjava.net/amenglai/archive/2013/01/17/394346.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Thu, 17 Jan 2013 02:55:00 GMT</pubDate><guid>http://www.blogjava.net/amenglai/archive/2013/01/17/394346.html</guid><wfw:comment>http://www.blogjava.net/amenglai/comments/394346.html</wfw:comment><comments>http://www.blogjava.net/amenglai/archive/2013/01/17/394346.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amenglai/comments/commentRss/394346.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amenglai/services/trackbacks/394346.html</trackback:ping><description><![CDATA[<div><p><strong><span style="font-size:12.0pt;font-family:宋体;">测试环境</span></strong><strong></strong></p>  <p>Java <span style="font-family:宋体;">：</span> JDK1.6</p>  <p>Tomcat<span style="font-family:宋体;">：</span> Tomcat 5.5</p>  <p>Eclipse Memory Analyzer<span style="font-family: 宋体;">：</span>EMA 1.2.1<span style="font-family:宋体;">（直接去</span>Eclipse<span style="font-family:宋体;">下载，无需安装哈）</span></p>  <p>&nbsp;</p>  <p><strong><span style="font-size:12.0pt;font-family:宋体;">获得</span></strong><strong><span style="font-size:12.0pt">Heap Dump</span></strong><strong><span style="font-size:12.0pt;font-family:宋体;">文件</span></strong><strong></strong></p>  <p>Eclipse Memory Analyzer<span style="font-family: 宋体;">是针对</span>Heap Dump<span style="font-family:宋体;">文件进行分析的，因此第一步就是要获得</span>Heap Dump<span style="font-family:宋体;">文件。</span></p>  <p><strong><span style="font-family:宋体;">步骤：</span></strong></p>  <p style="margin-bottom:9.0pt;line-height:18.75pt;background: white"><strong><span style="font-family:宋体;">获得线程</span>ID</strong><strong><span style="font-family:宋体;">。</span></strong><span style="font-family:宋体;">启动</span>jconsole.exe,<span style="font-family:宋体;">它</span><span style="font-family:宋体;color:#474747">位于</span><span style="font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:#474747">jdk</span><span style="font-family:宋体;color:#474747">目录下的</span><span style="font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:#474747">bin</span><span style="font-family:宋体;color:#474747">目录，</span><span style="font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:#474747;">jconsole</span><span style="font-family:宋体;color:#474747;">是</span><span style="font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:#474747;">jdk</span><span style="font-family:宋体;color:#474747;">自带的一个内存分析工具，它提供了图形界面。可以查看到被监控的</span><span style="font-family:&quot;Verdana&quot;,&quot;sans-serif&quot;;color:#474747;">jvm</span><span style="font-family:宋体;color:#474747;">的内存信息，线程信息，类加载信息，</span><span style="font-family: &quot;Verdana&quot;,&quot;sans-serif&quot;;color:#474747;">MBean</span><span style="font-family: 宋体;color:#474747;">信息。<br /><img src="http://www.blogjava.net/images/blogjava_net/amenglai/1.png" border="0" alt="" width="379" height="396" /><br /></span></p>  <p><span style="font-family:宋体;">此处我们可以找到需要检测的</span>Tomcat<span style="font-family:宋体;">的线程</span>ID<span style="font-family:宋体;">。</span></p>  <p><strong><span style="font-family:宋体;">获得</span>Heap Dump</strong><strong><span style="font-family:宋体;">文件。</span></strong><span style="font-family:宋体;">使用</span>jmap<span style="font-family:宋体;">来获得</span>Heap Dump<span style="font-family:宋体;">文件，命令行如下：</span></p>  <p>jmap -dump:format=b,file=heap.bin <span style="color:red">3888</span></p>  <p><span style="font-family:宋体;">此处</span>3888<span style="font-family:宋体;">就是</span>Tomcat<span style="font-family:宋体;">对应的线程</span>ID<br /><br /><img src="http://www.blogjava.net/images/blogjava_net/amenglai/2.png" border="0" alt="" width="633" height="55" /></p>  <p><strong><span style="font-size:12.0pt;font-family:宋体;">生成分析报告</span></strong><strong></strong></p>  <p><span style="font-family:宋体;">启动</span>MemoryAnalyzer.exe<span style="font-family:宋体;">，打开指定的</span>Heap Dump<span style="font-family:宋体;">文件。</span>File -&gt; Open Heap Dump<br /><img src="http://www.blogjava.net/images/blogjava_net/amenglai/3.png" border="0" alt="" width="282" height="122" /><br /></p>  <p>MAT<span style="font-family:宋体;">针对指定的</span>Heap Dump<span style="font-family:宋体;">文件进行分析，生成内存泄露检测报告<br /><img src="http://www.blogjava.net/images/blogjava_net/amenglai/4.png" border="0" alt="" width="528" height="419" /><br /><br /><img src="http://www.blogjava.net/images/blogjava_net/amenglai/5.png" border="0" alt="" width="730" height="477" /><br /></span></p>  <p><strong><span style="font-size:12.0pt;font-family:宋体;">看懂分析报告</span></strong><strong></strong></p>  <p><span style="font-family:宋体;">要想看懂</span>EAT<span style="font-family:宋体;">的报告，与其到网上去找各种神贴，不如老老实实找本书，先简单复习下</span>JVM<span style="font-family:宋体;">的</span>Heap<span style="font-family:宋体;">是怎么工作滴？</span>gc<span style="font-family:宋体;">的大概一个工作机制。否则</span>EAT<span style="font-family:宋体;">的报告就像天书一样。</span>EAT<span style="font-family:宋体;">只是工具，不是目的。</span></p></div><img src ="http://www.blogjava.net/amenglai/aggbug/394346.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amenglai/" target="_blank">amenglai</a> 2013-01-17 10:55 <a href="http://www.blogjava.net/amenglai/archive/2013/01/17/394346.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web应用中常出现的内存泄露</title><link>http://www.blogjava.net/amenglai/archive/2013/01/16/394286.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Wed, 16 Jan 2013 03:32:00 GMT</pubDate><guid>http://www.blogjava.net/amenglai/archive/2013/01/16/394286.html</guid><wfw:comment>http://www.blogjava.net/amenglai/comments/394286.html</wfw:comment><comments>http://www.blogjava.net/amenglai/archive/2013/01/16/394286.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amenglai/comments/commentRss/394286.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amenglai/services/trackbacks/394286.html</trackback:ping><description><![CDATA[企业级管理软件的web应用和普通的web站点，B2C等有很大的不同。内存泄露的检查点也会不同。<br /><strong>检查点一：什么信息需要缓存在session中</strong><br />在各种管理软件中，最常见的是把当前用户的权限等信息缓存在session中。好啦，问题来了，如果系统的权限很复杂：操作权限，管理权限，数据权限，字段权限，巴拉巴拉一大堆的话，那么把这大堆信息放到session中，一个用户就要占掉20M+的内存。访问用户一多，系统就挂了。而且管理软件一般都会把session的timeout设置的很多，除非用户手动的注销，否则即使木有操作也会吊在系统上很久。因此要评估此部分的设计，把不必要的或者访问不频繁的数据拖出session，放过session TA老人家吧。<br /><strong>检查点二：session数据传递<br /></strong><div><span style="font-weight: normal; ">管理系统很多都会采用帧结构，常见的上帧查询条件，下帧显示结果。问题来了，采用帧结构如果传递数据到页面，就要通过session。开发的时候，一般都是后台开发负责业务逻辑，前台开发负责数据展示。前后开发一脱节，后台向前台传递了一个集合对象，前台木有用，也不管清除。这堆垃圾数据全部都驻留内存，所以系统跑着跑着就宕机了。<br /><div><strong>检查点三：不要试图通过页面来实现分页<br /></strong><div style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><span style="font-weight: normal; ">管理系统由于业务复杂性等要求，大家都把注意力首先放在实现业务功能上，有时对数据的量级不是很关注。有的系统刚开始好好的，用着用着不不爽了，原因就是数据量一增加，很多相关的问题都会暴露出来。最常见的是分页处理，先把数据都取过来，在前台分页显示。千万不要这样，100条数据木有问题，1000条，10000条呢，结果就是前台很忙，然后就挂掉了。</span></div></div></span></div><img src ="http://www.blogjava.net/amenglai/aggbug/394286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amenglai/" target="_blank">amenglai</a> 2013-01-16 11:32 <a href="http://www.blogjava.net/amenglai/archive/2013/01/16/394286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 11g 数据库连接池DBCP和Proxool性能对比</title><link>http://www.blogjava.net/amenglai/articles/394182.html</link><dc:creator>amenglai</dc:creator><author>amenglai</author><pubDate>Mon, 14 Jan 2013 06:27:00 GMT</pubDate><guid>http://www.blogjava.net/amenglai/articles/394182.html</guid><wfw:comment>http://www.blogjava.net/amenglai/comments/394182.html</wfw:comment><comments>http://www.blogjava.net/amenglai/articles/394182.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/amenglai/comments/commentRss/394182.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/amenglai/services/trackbacks/394182.html</trackback:ping><description><![CDATA[<p><strong><span style="font-family:宋体;">背景</span></strong></p>  <p style="text-indent:21.0pt;"><span style="font-family:宋体;">公司的产品一直使用的是</span>DBCP<span style="font-family:宋体;">作为连接池。但是最近在客户环境发现当并发增加时，宕机鸟。已经对数据库查询进行了优化，但是还是会发生</span>Tomcat<span style="font-family:宋体;">宕机的情况，想到更换数据库连接池。</span></p>  <p style="text-indent:21.0pt;">But<span style="font-family:宋体;">换或者不换都要有数据佐证喽。因此着手测试对比。</span></p>  <p><strong><span style="font-family:宋体;">测试环境</span></strong></p>  <table border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">  <tbody><tr>   <td width="284" valign="top" style="width:213.05pt;border:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-family:宋体;">应用服务器</span></p>   </td>   <td width="284" valign="top" style="width:213.05pt;border:solid black 1.0pt;   border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p>Tomcat 5.5</p>   </td>  </tr>  <tr>   <td width="284" valign="top" style="width:213.05pt;border:solid black 1.0pt;   border-top:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-family:宋体;">测试工具</span></p>   </td>   <td width="284" valign="top" style="width:213.05pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt">   <p>JMete 2.8</p>   </td>  </tr>  <tr>   <td width="284" valign="top" style="width:213.05pt;border:solid black 1.0pt;   border-top:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-family:宋体;">数据库</span></p>   </td>   <td width="284" valign="top" style="width:213.05pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt">   <p>Oracle 11g</p>   </td>  </tr> </tbody></table>  <p>DBCP &amp; Proxool</p>  <table border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">  <tbody><tr>   <td width="284" valign="top" style="width:213.05pt;border:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt">   <p>maxId</p>   </td>   <td width="284" valign="top" style="width:213.05pt;border:solid black 1.0pt;   border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p>10</p>   </td>  </tr>  <tr>   <td width="284" valign="top" style="width:213.05pt;border:solid black 1.0pt;   border-top:none;   padding:0in 5.4pt 0in 5.4pt">   <p>minId</p>   </td>   <td width="284" valign="top" style="width:213.05pt;border-top:none;border-left:   none;border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt">   <p>5</p>   </td>  </tr> </tbody></table>  <p><span style="font-family:宋体;">测试场景：系统登录（一次登录操作需要</span>&gt;14<span style="font-family:宋体;">次的数据库连接操作）</span></p>  <span style="font-size:10.5pt;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;Times New Roman&quot;;"><br clear="all" style="page-break-before: always" /> </span>  <p>&nbsp;</p>  <p><strong><span style="font-family:宋体;">测试结果（</span>20</strong><span style="font-family:宋体;">秒内模拟</span>50<span style="font-family:宋体;">个进程循环</span>3<span style="font-family:宋体;">次<strong>）</strong></span><strong></strong></p>  <p>DBCP</p>  <table border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">  <tbody><tr>   <td width="65" style="width:48.85pt;border:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">sampler_label</span></p>   </td>   <td width="74" style="width:55.8pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_count</span></p>   </td>   <td width="47" style="width:35.45pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">average</span></p>   </td>   <td width="108" style="width:81.15pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_median</span></p>   </td>   <td width="114" style="width:85.6pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_90%_line</span></p>   </td>   <td width="95" style="width:71.3pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_min</span></p>   </td>   <td width="96" style="width:72.3pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_max</span></p>   </td>   <td width="96" style="width:71.75pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_rate</span></p>   </td>   <td width="120" style="width:90.1pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_bandwidth</span></p>   </td>  </tr>  <tr>   <td width="65" style="width:48.85pt;border:solid black 1.0pt;border-top:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">login:HTTP</span><span style="font-size:11.0pt;font-family:宋体;color:black">请求</span></p>   </td>   <td width="74" style="width:55.8pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">150</span></p>   </td>   <td width="47" style="width:35.45pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">6906</span></p>   </td>   <td width="108" style="width:81.15pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">6262</span></p>   </td>   <td width="114" style="width:85.6pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">13137</span></p>   </td>   <td width="95" style="width:71.3pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">461</span></p>   </td>   <td width="96" style="width:72.3pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">16022</span></p>   </td>   <td width="96" style="width:71.75pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">3.071505</span></p>   </td>   <td width="120" style="width:90.1pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">1.643735</span></p>   </td>  </tr>  <tr>   <td width="65" style="width:48.85pt;border:solid black 1.0pt;border-top:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;font-family:宋体;color:black">总体</span></p>   </td>   <td width="74" style="width:55.8pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">150</span></p>   </td>   <td width="47" style="width:35.45pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black;background:yellow;">6906</span></p>   </td>   <td width="108" style="width:81.15pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">6262</span></p>   </td>   <td width="114" style="width:85.6pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black;background:yellow;">13137</span></p>   </td>   <td width="95" style="width:71.3pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">461</span></p>   </td>   <td width="96" style="width:72.3pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">16022</span></p>   </td>   <td width="96" style="width:71.75pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">3.071505</span></p>   </td>   <td width="120" style="width:90.1pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">1.643735</span></p>   </td>  </tr> </tbody></table>  <p>proxool</p>  <table border="1" cellspacing="0" cellpadding="0" style="border-collapse:collapse;border:none;">  <tbody><tr>   <td width="65" style="width:48.85pt;border:solid black 1.0pt;padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">sampler_label</span></p>   </td>   <td width="74" style="width:55.8pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_count</span></p>   </td>   <td width="47" style="width:35.45pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">average</span></p>   </td>   <td width="108" style="width:81.15pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_median</span></p>   </td>   <td width="114" style="width:85.6pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_90%_line</span></p>   </td>   <td width="95" style="width:71.3pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_min</span></p>   </td>   <td width="96" style="width:72.3pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_max</span></p>   </td>   <td width="96" style="width:71.75pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_rate</span></p>   </td>   <td width="120" style="width:90.1pt;border:solid black 1.0pt;border-left:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">aggregate_report_bandwidth</span></p>   </td>  </tr>  <tr>   <td width="65" style="width:48.85pt;border:solid black 1.0pt;border-top:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;color:black">login:HTTP</span><span style="font-size:11.0pt;font-family:宋体;color:black">请求</span></p>   </td>   <td width="74" style="width:55.8pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">150</span></p>   </td>   <td width="47" style="width:35.45pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">2959</span></p>   </td>   <td width="108" style="width:81.15pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">3165</span></p>   </td>   <td width="114" style="width:85.6pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">4620</span></p>   </td>   <td width="95" style="width:71.3pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">8</span></p>   </td>   <td width="96" style="width:72.3pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">5522</span></p>   </td>   <td width="96" style="width:71.75pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">4.797083</span></p>   </td>   <td width="120" style="width:90.1pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">5.380354</span></p>   </td>  </tr>  <tr>   <td width="65" style="width:48.85pt;border:solid black 1.0pt;border-top:none;   padding:0in 5.4pt 0in 5.4pt">   <p><span style="font-size:11.0pt;font-family:宋体;color:black">总体</span></p>   </td>   <td width="74" style="width:55.8pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">150</span></p>   </td>   <td width="47" style="width:35.45pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black;background:yellow;">2959</span></p>   </td>   <td width="108" style="width:81.15pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">3165</span></p>   </td>   <td width="114" style="width:85.6pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black;background:yellow;">4620</span></p>   </td>   <td width="95" style="width:71.3pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">8</span></p>   </td>   <td width="96" style="width:72.3pt;border-top:none;border-left:none;border-bottom:   solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">5522</span></p>   </td>   <td width="96" style="width:71.75pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">4.797083</span></p>   </td>   <td width="120" style="width:90.1pt;border-top:none;border-left:none;   border-bottom:solid black 1.0pt;border-right:solid black 1.0pt;   padding:0in 5.4pt 0in 5.4pt">   <p align="right" style="text-align:right"><span style="font-size:11.0pt;color:black">5.380354</span></p>   </td>  </tr> </tbody></table>  <p>&nbsp;</p>  <p><strong><span style="font-family:宋体;">结论</span></strong></p>  <p style="margin-left:21.0pt;text-indent:-21.0pt;"><span><span>1.<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family:宋体;">从以上测试结果看，</span>proxool<span style="font-family:宋体;">的性能明显优于</span>DBCP<span style="font-family:宋体;">。</span></p>  <p style="margin-left:21.0pt;text-indent:-21.0pt;"><span><span>2.<span style="font:7.0pt &quot;Times New Roman&quot;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family:宋体;">另外针对</span>Tomcat 5.5<span style="font-family:宋体;">和</span>Tomcat 6.0<span style="font-family:宋体;">也做了测试，发现</span>Tomcat<span style="font-family:宋体;">不同版本间的差异并不大，因此决定暂时不更换应用服务器。</span></p>  <p>&nbsp;</p>  <p><strong><span style="font-family:宋体;">下一步</span></strong></p>  <p><span style="font-family:宋体;">利用</span>jrockit<span style="font-family:宋体;">分析系统内存泄露情况，进行改进。</span></p><img src ="http://www.blogjava.net/amenglai/aggbug/394182.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/amenglai/" target="_blank">amenglai</a> 2013-01-14 14:27 <a href="http://www.blogjava.net/amenglai/articles/394182.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>