ï»??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲午夜久久久久,久久电影tv,综合久久婷婷http://www.aygfsteel.com/chars/在对象的天地快乐的成é•?......zh-cnSat, 26 Jul 2025 01:30:22 GMTSat, 26 Jul 2025 01:30:22 GMT60˜qžæŽ¥æ± çš„一¿Uå®žçŽ°æ–¹å¼?/title><link>http://www.aygfsteel.com/chars/archive/2007/07/02/127644.html</link><dc:creator>chars</dc:creator><author>chars</author><pubDate>Mon, 02 Jul 2007 09:46:00 GMT</pubDate><guid>http://www.aygfsteel.com/chars/archive/2007/07/02/127644.html</guid><wfw:comment>http://www.aygfsteel.com/chars/comments/127644.html</wfw:comment><comments>http://www.aygfsteel.com/chars/archive/2007/07/02/127644.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/chars/comments/commentRss/127644.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/chars/services/trackbacks/127644.html</trackback:ping><description><![CDATA[<blockquote dir=ltr style="MARGIN-RIGHT: 0px"> <p>package chars.pool;<br>import java.sql.Connection;<br>import java.sql.DatabaseMetaData;<br>import java.sql.Driver;<br>import java.sql.DriverManager;<br>import java.sql.SQLException;<br>import java.util.ArrayList;<br>import java.util.List;<br>import java.util.Properties;</p> <p>import COM.ibm.db2.jdbc.app.DB2Driver;</p> <p>/**<br> * JDK version used : jdk1.4.2_07 <br><br> * Description : 一个数据库˜qžæŽ¥æ± çš„实现 <br><br> * Comments Name : CharsConnectionPool <br><br> * author åQšchars <br><br> * date åQ?007-06-11<br><br> * Version : 1.00 <br><br> */<br>public class CharsConnectionPool<br>{<br>   //---------------˜qžæŽ¥æ•°æ®åº“所需要的元素---------------<br> private String driver;</p> <p> private String url;</p> <p> private String userName;</p> <p> private String password;</p> <p>  //----------------------------------------------<br> private List connections = null;//˜qžæŽ¥æ± çš„容器</p> <p> private  int intiateCount = 10;// 初始化连接数</p> <p> private  int maxCount = 100;// ˜qžæŽ¥æ± å¯ä»¥äñ”生的最大连接数</p> <p> private  int rateCount = 10;// ˜qžæŽ¥ä¸å¤Ÿæ—¶ä¸€‹Æ¡å¯ä»¥ç”³è¯ïL(f¨¥ng)š„˜qžæŽ¥æ•?br> <br> public static int ACTIVE_ACOUNT = 0;//记录目前的活动连接数</p> <p> public String getDriver()<br> {<br>     return driver;<br> }</p> <p> public void setDriver(String driver)<br> {<br>     this.driver = driver;<br> }</p> <p> public int getIntiateCount()<br> {<br>     return intiateCount;<br> }</p> <p> public void setIntiateCount(int intiateCount)<br> {<br>     this.intiateCount = intiateCount;<br> }</p> <p> public int getMaxCount()<br> {<br>     return maxCount;<br> }</p> <p> public void setMaxCount(int maxCount)<br> {<br>     this.maxCount = maxCount;<br> }</p> <p> public String getPassword()<br> {<br>     return password;<br> }</p> <p> public void setPassword(String password)<br> {<br>     this.password = password;<br> }</p> <p> public int getRateCount()<br> {<br>     return rateCount;<br> }</p> <p> public void setRateCount(int rateCount)<br> {<br>     this.rateCount = rateCount;<br> }</p> <p> public String getUrl()<br> {<br>     return url;<br> }</p> <p> public void setUrl(String url)<br> {<br>     this.url = url;<br> }</p> <p> public String getUserName()<br> {<br>     return userName;<br> }</p> <p> public void setUserName(String userName)<br> {<br>     this.userName = userName;<br> }<br>    /**<br>     * ˜qžæŽ¥æ± æž„造函æ•?br>     * @param driver<br>     * @param url<br>     * @param userName<br>     * @param password<br>     * @param connections<br>     */<br> public CharsConnectionPool(String driver, String url, String userName, String password)<br> {<br>    super();<br>    this.driver = driver;<br>    this.url = url;<br>    this.userName = userName;<br>    this.password = password;<br> }<br> <br> public CharsConnectionPool(Properties p)<br> {<br>    super();<br>    this.driver = p.getProperty("driver");<br>    this.url =  p.getProperty("url");<br>    this.userName = p.getProperty("userName");<br>    this.password = p.getProperty("password");<br> }</p> <p> /**<br>  * 初始化连接池<br>  * <br>  */<br> public void initiatePools()throws Exception<br> {<br>     if (connections != null)return;//如果˜qžæŽ¥æ± å·²¾lå¾ç«‹åˆ™ä¸å†‹Æ¡è¿›è¡Œåˆå§‹åŒ–<br>  <br>     connections = new ArrayList();<br>     initParamters();//æ ÒŽ(gu¨©)®æ•°æ®åº“支持的最大连接数配置该连接池的相兛_‚æ•?<br>     for (int i = 0; i < intiateCount; i++){<br>     connections.add(newCharsConnection());<br>  }<br> }<br> /**<br>  * 销毁连接池<br>  * @throws Exception<br>  */<br> public void destoryPools()throws Exception<br> {<br>     if (connections == null) return ;<br>     for(int i=0; i<connections.size();i++){<br>     CharsPoolConnection conn = (CharsPoolConnection)connections.get(i);<br>   <br>     if(conn.isBusy()) Thread.sleep(5000);//如果该连接正在ä‹É用则再给5¿U’æ—¶é—?br>     closeConnection(conn.getConnection());<br>     connections.remove(conn);<br>  }<br>  connections = null;<br> }<br>    /**<br>     * 从连接池获取˜qžæŽ¥<br>     *<br>     */<br> public Connection getConnection()throws SQLException<br> {<br>        Connection conn = null;<br>        try{<br>         <br>         conn = getFreeConnection();        <br>         if(conn == null) {<br>           Thread.sleep(3000);//暂停3¿U’钟再试着获取˜qžæŽ¥<br>           conn = getFreeConnection();<br>         }       <br>         if(conn == null) {//此时如果˜q˜ä¸èƒ½èŽ·å¾—è¿žæŽ¥åˆ™è¡¨ç¤º,˜qžæŽ¥æ± ä¸­çš„连接已¾lç”¨å®?br>          throw new SQLException("˜qžæŽ¥æ± è¿žæŽ¥è¿žæŽ¥ä‹É用枯ç«?è¯ïL(f¨¥ng)¨åŽå†è¯?!");<br>         }<br>        }catch(Exception e)<br>        {<br>         e.printStackTrace();<br>        }<br>        return conn;<br> }<br>    /**<br>     * 归还˜qžæŽ¥åˆ°è¿žæŽ¥æ± (当连接用完时)<br>     * @param conn<br>     */<br> public void rebackConnection(Connection conn)<br> {<br>           for(int i = 0;i < connections.size();i++){<br>            CharsPoolConnection charsCon = (CharsPoolConnection)connections.get(i);<br>            if(charsCon.getConnection() == conn){<br>             charsCon.setBusy(false);<br>             conn = null;//外部引用为空.<br>             ACTIVE_ACOUNT --;<br>             break;<br>            }<br>           }<br> }<br>    <br> // ---------------------------------------------------------------------------------------------------<br>    /**<br>     * 加蝲驱动½E‹åº,配置实际上可以用的最大连接数<br>     */<br> private void initParamters() throws Exception<br> {<br>    int realMaxCount = -1;<br>   Connection con = null;<br>   try<br>  {<br>      Driver driver1 = new DB2Driver();<br>      DriverManager.registerDriver(driver1);   <br>      con = DriverManager.getConnection(this.url, this.userName, this.password);   <br>      DatabaseMetaData dmd = con.getMetaData();<br>      realMaxCount = dmd.getMaxConnections();<br>   <br>     if(realMaxCount == 0){//如果˜q”回的å€égØ“0,则表½Cºæœ€å¤§çš„˜qžæŽ¥æ•îC¸å—限åˆ?br>      realMaxCount = 1000;//那么默认赋一个较大的值给å®?br>   }<br>  }<br>  finally{<br>     if(con == null) con.close();<br>  }<br>  <br>  if(realMaxCount < intiateCount) {//如果数据库允许的最大活动连接数ž®äºŽåˆå§‹åŒ–çš„˜qžæŽ¥æ•?br>    intiateCount = maxCount;     //则实际上初始化的˜qžæŽ¥æ•°åº”该等于数据库允许的最大活动连接数æ?br>    maxCount = realMaxCount;<br>  }<br>  else if(intiateCount < realMaxCount && maxCount >= realMaxCount){//如果数据库最大的‹zÕdЍ˜qžæŽ¥æ•°å¤§äºŽåˆå§‹åŒ–˜qžæŽ¥æ•îC½†æ˜¯å°äºŽè¯¥˜qžæŽ¥æ± å…è®¸çš„æœ€å¤§è¿žæŽ¥æ•°<br>    maxCount = realMaxCount;                                     //则该池的最大连接数½{‰äºŽæ•°æ®åº“允许的最大活动连接数<br>  }<br> }<br> /**<br>  * 获取可以用的˜qžæŽ¥,如果没有查找到则æ ÒŽ(gu¨©)®æ¡äšg在池中加入新的连æŽ?br>  * @return<br>  * @throws SQLException<br>  */<br> private Connection getFreeConnection()throws SQLException<br> {<br>     Connection conn = null;<br>     conn = findFreeConnection();//首先到连接池中找½Iºé—²çš„连æŽ?br>     if(conn == null){//如果没有扑ֈ°,则试着产生新的˜qžæŽ¥æ”‘Ö…¥æ± ä¸­<br>     for(int i = 1; connections.size() < maxCount && i <= rateCount;i++){//是否再能在连接池中增加连接取决与maxCount<br>     connections.add(newCharsConnection());<br>    }<br>    conn = findFreeConnection();//再次在连接池中找<br>  }  <br>   return conn;<br> }<br> /**<br>  * 在池中查扑֏¯ä»¥ä‹É用的˜qžæŽ¥<br>  * @return<br>  */<br> private Connection findFreeConnection()throws SQLException<br> {<br>     CharsPoolConnection charsConn = null;<br>     Connection conn = null;<br>     for(int i = 0; i < connections.size();i++){<br>     charsConn = (CharsPoolConnection)connections.get(i);<br>     if(charsConn.isBusy())continue;<br>     else {<br>         if(!isAvalidConnection(charsConn.getConnection())) {<br>          charsConn.setConnection(newConnection());<br>          }<br>      conn = charsConn.getConnection();//得到可以用的˜qžæŽ¥<br>      charsConn.setBusy(true);//表明ä¸ÞZ‹É用状æ€?br>      ACTIVE_ACOUNT++;<br>      break;<br>      }<br>    }<br>    return conn;<br> }<br> <br> /**<br>  * 判断池中的连接是否因为其他原因变得不可以ç”?br>  * @param conn<br>  * @return<br>  */<br> private boolean isAvalidConnection(Connection conn)<br> {<br>    try<br>    {<br>         conn.setAutoCommit(true);//模拟动作,如果能够能够操作则说明该˜qžæŽ¥å¯ç”¨<br>     }catch(SQLException e)<br>    {<br>       closeConnection(conn);<br>       return false;<br>    }<br>    return true;<br> }<br> <br> /**<br>  * 判断一个连接是否还可以ç”?如果不可以用则创å»ÞZ¸€ä¸ªæ–°çš„连接代替它<br>  * @param conn<br>  * @return<br>  */<br> private CharsPoolConnection newCharsConnection()throws SQLException<br> {<br>  <br>     CharsPoolConnection charsCon = new CharsPoolConnection();<br>     charsCon.setConnection(newConnection());<br>     charsCon.setBusy(false);<br>  <br>     return charsCon;<br> }<br> /**<br>  * 获取一个新的数据库˜qžæŽ¥<br>  * @return<br>  * @throws SQLException<br>  */<br> private Connection newConnection()throws SQLException<br> {<br>      return DriverManager.getConnection(this.url,this.userName,this.password);<br> }<br> /**<br>  * 关闭数据库连æŽ?br>  * @param conn<br>  */<br> private void closeConnection(Connection conn)<br> {<br>  try<br>  {<br>       conn.close();<br>  }catch(SQLException se)<br>  {<br>      System.out.println("关闭˜qžæŽ¥å‘生异常...");<br>  }<br> }<br>}<br><br><br>ž®è£…˜qžæŽ¥æ± çš„˜qžæŽ¥:<br>package chars.pool;</p> <p>public class CharsPoolConnection<br>{<br>    private boolean isBusy;<br>    <br>    private java.sql.Connection connection;</p> <p>   public java.sql.Connection getConnection()<br>  {<br>       return connection;<br>  }</p> <p>  public void setConnection(java.sql.Connection connection)<br> {<br>      this.connection = connection;<br> }</p> <p> public boolean isBusy()<br> {<br>      return isBusy;<br> }</p> <p> public void setBusy(boolean isBusy)<br> {<br>      this.isBusy = isBusy;<br> }<br>}<br><br>调用的方式大致可以这æ ?<br>    CharsConnectionPool pool = new CharsConnectionPool(env);<br>     pool.initiatePools();<br>    Connection conn= pool.getConnection(); //获取˜qžæŽ¥<br>    //do something with your code;<br>    pool .rebackConnection(conn); 归还˜qžæŽ¥åˆ°è¿žæŽ¥æ± </p> </blockquote> <img src ="http://www.aygfsteel.com/chars/aggbug/127644.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/chars/" target="_blank">chars</a> 2007-07-02 17:46 <a href="http://www.aygfsteel.com/chars/archive/2007/07/02/127644.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> Ö÷Õ¾Ö©Öë³ØÄ£°å£º <a href="http://" target="_blank">¹ȪÊÐ</a>| <a href="http://" target="_blank">Ê©µéÏØ</a>| <a href="http://" target="_blank">ÆåÅÆ</a>| <a href="http://" target="_blank">ÎäÚìÏØ</a>| <a href="http://" target="_blank">»ÔÄÏÏØ</a>| <a href="http://" target="_blank">ÈôÇ¼ÏØ</a>| <a href="http://" target="_blank">ãèÂÞÊÐ</a>| <a href="http://" target="_blank">ÕÑÆ½ÏØ</a>| <a href="http://" target="_blank">¹ãÎ÷</a>| <a href="http://" target="_blank">·áÕòÊÐ</a>| <a href="http://" target="_blank">ÄÏÁêÏØ</a>| <a href="http://" target="_blank">ÂåÄþÏØ</a>| <a href="http://" target="_blank">ÈÊ»¯ÏØ</a>| <a href="http://" target="_blank">À¶ÌïÏØ</a>| <a href="http://" target="_blank">ÒËÀ¼ÊÐ</a>| <a href="http://" target="_blank">Ǩ°²ÊÐ</a>| <a href="http://" target="_blank">¹þÃÜÊÐ</a>| <a href="http://" target="_blank">Àײ¨ÏØ</a>| <a href="http://" target="_blank">ÓÀ¸£ÏØ</a>| <a href="http://" target="_blank">¾²°²Çø</a>| <a href="http://" target="_blank">²Æ¾­</a>| <a href="http://" target="_blank">ÏÌ·áÏØ</a>| <a href="http://" target="_blank">ÁúÑÒÊÐ</a>| <a href="http://" target="_blank">Ä«Öñ¹¤¿¨ÏØ</a>| <a href="http://" target="_blank">¸»ÑôÊÐ</a>| <a href="http://" target="_blank">äü¹ØÏØ</a>| <a href="http://" target="_blank">¶¼²ýÏØ</a>| <a href="http://" target="_blank">»áÄþÏØ</a>| <a href="http://" target="_blank">ÑÎÍ¤ÏØ</a>| <a href="http://" target="_blank">Ìì½òÊÐ</a>| <a href="http://" target="_blank">¼ÃÔ´ÊÐ</a>| <a href="http://" target="_blank">²ßÀÕÏØ</a>| <a href="http://" target="_blank">¶î¼ÃÄÉÆì</a>| <a href="http://" target="_blank">µ¤½­¿ÚÊÐ</a>| <a href="http://" target="_blank">²©°×ÏØ</a>| <a href="http://" target="_blank">ÄÉÓºÏØ</a>| <a href="http://" target="_blank">ƽÄÏÏØ</a>| <a href="http://" target="_blank">Á¬Æ½ÏØ</a>| <a href="http://" target="_blank">µÂ²ýÏØ</a>| <a href="http://" target="_blank">÷ÖÝÊÐ</a>| <a href="http://" target="_blank">ºþ±±Ê¡</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>