(一)htablepool介紹
htablepool是hbase api中的重要類,可以通過htablepool的gettable(string tablename)方法獲得相應的htable物件實體,用於進行對hbase表的增刪改成等操作。一般情況下,客戶端通過new 的方式來建立和銷毀htable的操作相對有較大的開銷,而是用htablepool方法建立的htable則可以在jvm程序的生命週期內迴圈使用,以降低開銷。
(二)htablepool的原理
如果對某錶的操作僅執行一次或連續執行的時間較短,則使用new的方法和使用htablepool的gettable()方法的開銷基本無區別,但是對於在jvm長期執行的程式(如web伺服器會在長時間內多次頻繁的對hbase的表進行操作),使用new建立的htable則會進行頻繁的建立和銷毀,而每次htable物件在建立時需要配置大量的選項並存入自帶的configuration物件中,另外每個htable還自帶乙個執行緒池用以進行多執行緒操作,綜合來看,使用htablepool將大大節省時間和類的載入效率。
下面介紹一下htablepool如何儲存和使用htable例項:
在htablepool中有幾個成員變數,分別是poolmap tables (用於按照表名存放htable例項)、int maxsize(限制poolmap中每個表存放例項的數目)、pooltype pooltype(型別,表示存放在poolmap中的htable如何使用:reusable, threadlocal, roundrobin;)在 gethtable(表名) 時,先查詢poolmap中是否有該錶的例項,若有則從map中取出,若沒有,新建乙個htable例項,並使用乙個htable的繼承類包裝一下(之所以包裝是因為在htable close方法中需要歸還例項到htablepool)。
poolmap類:內建了乙個currenthashmap>,實現map介面,自行實現了map的put及get方法。,pool是介面,按照pooltype分成三個子類,分別使用使用creatpool方法建立,常用的例項類是reusablepool類,該類繼承了concurrentlinkedqueue類,因此,每個htable首先按照表名存入乙個poolmap的value中,poolmap內部將相同表名的例項存在乙個並行佇列中。
靜態方法的實現
python 2.2中 對於新舊 同樣適用 新的內建staticmethod函式封裝了對於靜態函式的呼叫,只需要在類作用域範圍內幫定相應函式名稱到對應的靜態函式。class greeter def greet name print hello name greet staticmethod gree...
dropout的實現方法
dropout詳解 dropout的實現方法 演算法實現概述 1 其實dropout很容易實現,原始碼只需要幾句話就可以搞定了,讓某個神經元以概率p,停止工作,其實就是讓它的啟用值以概率p變為0。比如我們某一層網路神經元的個數為1000個,其啟用值為x1,x2 x1000,我們dropout比率選擇...
bind,call,apply方法的實現
1.call 方法 第乙個引數為 this 指向,第二個引數及以後 為傳入執行函式的引數。function mycall context function context const target this context context object context window 當傳入的為 un...