亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Jakarta Commons項目研究--pool

2019-11-18 14:17:35
字體:
來源:轉載
供稿:網友

一.pool項目
到底什么是 pool, 簡單來說, 就是先建立一些存在的 object, 放在 pool 之中, 當你有需要的時候,
可以從 pool 中直接獲取, 不需要重新建立.. 最常聽到的就是 database connection pooling,
因為建立數據庫連結是一件耗時的工作, 假如我們先把連結建立好, 就可以節省這一些時間。database
connection pooling 即DBCP。
1.基礎類結構
pool的基礎類:
public interface ObjectPool {
Object borrowObject();
void returnObject(Object borrowed);
}
主要擴展類:
public interface KeyedObjectPool {
Object borrowObject(Object key);
void returnObject(Object key, Object borrowed);
}按照key來索引pool的對象

基礎類僅提供了最基本的兩個函數,用來創建和返回pool對象。
2.實現的基本類
BaSEObjectPool--PoolableObjectFactory--BasePoolableObjectFactory
KeyedObjectPool--KeyedPoolableObjectFactory--BaseKeyedPoolableObjectFactory
StackObjectPool--StackKeyedObjectPool--可以在初始化創建實例,提供有限的 idle 數量
GenericObjectPool--GenericKeyedObjectPool--包含了設定 idle, active
的數量以及回收到pool中的設置
SoftReferenceObjectPool--可以隨需要進行增加,他的回收是由垃圾回收站進行的
總的來說,它提供了 Pool 的 API 主要有三個方面:
提供一般性的對象 pool 接口, 可以簡單地去使用和實現. 比如BaseObjectPool和KeyedObjectPool.
提供小工具可以建立模塊化的 pool. 比如StackObjectPool.
實現出一些通用性的 pool. 比如GenericObjectPool.
3.實現

ObjectPool

Object obj = null;

try {
//創建對象
obj = pool.borrowObject();
//捕捉異常
} catch(Exception e) {
} finally {
//確認對象是否已經返回
if(null != obj) {
pool.returnObject(obj);
}
}

KeyedObjectPool

Object obj = null;
Object key = "Key";

try {
//創建對象
obj = pool.borrowObject(key);
//捕捉異常
} catch(Exception e) {
} finally {
//確認返回
if(null != obj) {
pool.returnObject(key,obj);
}
}
其它的類型繼續開發就可以了
4.范例(取自apache的commons組)
ReaderUtil.java

import java.io.Reader;
import java.io.IOException;

public class ReaderUtil {

public ReaderUtil() {
}

/**
* Dumps the contents of the {@link Reader} to a
* String, closing the {@link Reader} when done.
*/
public String readToString(Reader in)
throws IOException {
StringBuffer buf = new StringBuffer();
try {

for( int c = in.read(); c != -1; c = in.read()) {
buf.append((char)c);
}
return buf.toString();
} catch(IOException e) {
throw e;
} finally {
try {
in.close();
} catch (Exception e) {
// ignored
}
}
}
}

改換一下順序,先取得pool,再由pool取值(推薦使用)

import org.apache.commons.pool.ObjectPool;
import java.io.Reader;
import java.io.IOException;

public class ReaderUtil {
PRivate ObjectPool pool;

public ReaderUtil(ObjectPool pool) {
this.pool = pool;
}

/**
* Dumps the contents of the {@link Reader} to a
* String, closing the {@link Reader} when done.
*/
public String readToString(Reader in) throws IOException {
StringBuffer buf = null;
try {
buf = (StringBuffer)(pool.borrowObject());
for(int c = in.read(); c != -1; c = in.read()) {
buf.append((char)c);
}
return buf.toString();
} catch(IOException e) {
throw e;
} catch(Exception e) {
throw new RuntimeException("Unable to borrow buffer from pool" +
e.toString());
} finally {
try {
in.close();
} catch(Exception e) {
// ignored
}
try {
if(null != buf) {
pool.returnObject(buf);
}
} catch(Exception e) {
// ignored
}
}
}
}

用StringBuffer做pool的例子(不推薦使用,僅供熟悉知識)

StringBufferFactory.java

import org.apache.commons.pool.BasePoolableObjectFactory;

public class StringBufferFactory extends BasePoolableObjectFactory {
// for makeObject we′ll simply return a new buffer
public Object makeObject() {
return new StringBuffer();
}

// when an object is returned to the pool,
// we′ll clear it out
public void passivateObject(Object obj) {
StringBuffer buf = (StringBuffer)obj;
buf.setLength(0);
}

// for all other methods, the no-op
// implementation in BasePoolableObjectFactory
// will suffice
}

修改 ReaderUtil 由 StringBufferFactory Pool 得到 StringBuffer.


new ReaderUtil(
new StackObjectPool(
new StringBufferFactory()
)
)
5.總結
我們通常會在 io 的部分采用 pool 機制, 減少一些建立存取的時間, 對于最耗時的數據庫存取,
更是相對的重要,我將會在commons-DBCP專題進行介紹,本篇是本系列的第二篇,以后將陸續推出,下期主題就是DBCP,請繼續關注.
6.參考 -- 相關書目或相關文章
*Jakarta Commons:
http://jakarta.apache.org/commons/
*Jakarta Commons Pool
http://jakarta.apache.org/commons/pool/
*Jakarta Commons Pool API:
http://jakarta.apache.org/commons/pool/apidocs/index.Html
*Oreilly: Using the Jakarta Commons, Part 3: #3
http://www.onjava.com/pub/a/onjava/2003/07/23/commons.html?page=3

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
777午夜精品福利在线观看| 国产美女被下药99| 日本久久久久久久久久久| 日本一欧美一欧美一亚洲视频| 欧美日韩成人在线观看| 亚洲欧洲在线视频| 久久久www成人免费精品张筱雨| 亚洲国产精品视频在线观看| 久久人人看视频| 亚洲国产精品大全| 在线播放日韩精品| 免费91在线视频| 91免费观看网站| 久久精品中文字幕| 国产亚洲精品综合一区91| 日韩免费在线观看视频| 97精品久久久| 精品久久久久久中文字幕大豆网| 欧美在线视频网站| 91人成网站www| 久久人人爽人人爽爽久久| 国产精品亚洲网站| 亚洲自拍中文字幕| 日韩美女视频免费在线观看| 国产精品高潮粉嫩av| 国产日韩在线亚洲字幕中文| 亚洲欧美日韩第一区| 亚洲国产高清高潮精品美女| 亚洲欧洲国产精品| 在线视频精品一| 91视频8mav| 成人免费午夜电影| 久久精品99无色码中文字幕| 亚洲精品日韩在线| 国产丝袜精品第一页| 日韩在线视频线视频免费网站| 精品国产一区二区三区久久久狼| 久久成人亚洲精品| 亚洲国产成人精品久久久国产成人一区| 久久精品2019中文字幕| 亚洲美女精品久久| 日韩中文字幕在线免费观看| 亚洲人成电影网站色| 亚洲精品久久久久国产| 日韩精品在线免费观看视频| 亚洲精品自拍视频| 久久久国产精品一区| 亚洲女人被黑人巨大进入al| 欧日韩在线观看| 久久99精品国产99久久6尤物| 欧美成人精品不卡视频在线观看| 91精品国产99久久久久久| 国产亚洲一区二区在线| 亚洲成人中文字幕| 日韩美女视频免费看| 美女扒开尿口让男人操亚洲视频网站| zzjj国产精品一区二区| 在线日韩中文字幕| 久久久久久12| 不卡av在线网站| 亚洲国产成人91精品| 国产美女高潮久久白浆| 欧美性开放视频| 久久91精品国产| 黄色一区二区在线| 国产xxx69麻豆国语对白| 在线观看成人黄色| 欧美美女15p| 欧美美最猛性xxxxxx| 亚洲精品资源美女情侣酒店| 欧美在线xxx| 97av视频在线| …久久精品99久久香蕉国产| 日韩精品极品毛片系列视频| 中文字幕日韩欧美在线视频| 亚洲精品视频久久| 欧美黄网免费在线观看| 日韩有码在线播放| 久久国产精品99国产精| 国产午夜精品视频免费不卡69堂| 欧美性xxxx在线播放| 91精品国产91久久久久久不卡| 欧美亚州一区二区三区| 日韩一区二区福利| 成人免费在线视频网址| 4p变态网欧美系列| 国产精品久久久久久久久久ktv| 欧美日韩一区二区在线播放| 久久久国产视频| 精品视频中文字幕| 国产亚洲成精品久久| 国产精品视频区| 精品视频在线导航| 亚洲精品免费一区二区三区| 亚洲丁香婷深爱综合| 亚洲成人激情在线| 成人久久精品视频| 欧美激情免费观看| 欧美国产中文字幕| 亚洲精品国产成人| 日韩国产激情在线| 在线国产精品视频| 亚洲淫片在线视频| 欧洲成人免费视频| 77777少妇光屁股久久一区| 久久久噜噜噜久久中文字免| 国产亚洲成av人片在线观看桃| 91精品在线一区| 一色桃子一区二区| 久久99热精品这里久久精品| 日韩欧美亚洲成人| 欧美大学生性色视频| 国产一区二区三区在线观看网站| 成人黄色av网站| 欧美在线亚洲在线| 在线观看免费高清视频97| 95av在线视频| 一区二区亚洲欧洲国产日韩| 久久久久久久久久亚洲| 中文字幕不卡在线视频极品| 日韩免费不卡av| 最近中文字幕日韩精品| 青青久久av北条麻妃黑人| 亚洲乱码国产乱码精品精天堂| 91精品国产乱码久久久久久蜜臀| 亚洲天堂第二页| 日韩欧美在线一区| 国产综合久久久久久| 91精品国产电影| 国产精品小说在线| 亚洲精品狠狠操| 精品久久久久久久久久久久| 欧美性xxxx极品hd满灌| 国产精品欧美激情| 欧美韩日一区二区| 欧美精品情趣视频| 有码中文亚洲精品| 日韩亚洲第一页| 九九九久久国产免费| 亚洲国产成人久久| 插插插亚洲综合网| 91精品久久久久久久| 9.1国产丝袜在线观看| 国产91色在线|免| 久久免费在线观看| 亚洲国产高清高潮精品美女| 黑人巨大精品欧美一区免费视频| 久久久成人av| 日韩亚洲第一页| 中文字幕不卡在线视频极品| 久久久精品中文字幕| 欧美另类暴力丝袜| 国产午夜精品麻豆| 久久久久中文字幕2018| 欧美一级淫片aaaaaaa视频| 日韩精品视频免费| 国产成人鲁鲁免费视频a| 精品国产老师黑色丝袜高跟鞋| 日韩国产精品一区| 欧美中文字幕视频在线观看| 久久久黄色av| 日韩一区二区三区xxxx| 国产在线精品一区免费香蕉| 韩国国内大量揄拍精品视频|