欄位名稱
字段描述
biz_tag
業務標識
max_id
號段最大值
step
號段最小步長
description
描述資訊
update_time
號段切換時間
logger.
info
("update cache from db");
stopwatch sw =
newslf4jstopwatch()
;try
list
cachetags =
newarraylist
(cache.
keyset()
);list
inserttags =
newarraylist
(dbtags)
; list
removetags =
newarraylist
(cachetags)
;//db中新加的tags灌進cache
inserttags.
removeall
(cachetags)
;for
(string tag : inserttags)
from db to idcache, segmentbuffer {}"
, tag, buffer);}
//cache中已失效的tags從cache刪除
removetags.
removeall
(dbtags)
;for
(string tag : removetags)
from idcache"
, tag);}
}catch
(exception e)
finally
stopwatch sw =
newslf4jstopwatch()
;segmentbuffer buffer = segment.
getbuffer()
;leafalloc leafalloc;if(
!buffer.
isinitok()
)else
if(buffer.
getupdatetimestamp()
==0)else
else
}else
if(duration < segment_duration *2)
else
logger.
info
("leafkey[{}], step[{}], duration[{}mins], nextstep[{}]"
, key, buffer.
getstep()
, string.
format
("%.2f",(
(double
)duration /
(1000*60
))), nextstep)
;// 根據最新步長,更新最大值
leafalloc temp =
newleafalloc()
; temp.
setkey
(key)
; temp.
setstep
(nextstep)
; leafalloc = dao.
updatemaxidbycustomstepandgetleafalloc
(temp)
;// 設定號段切換時間
buffer.
setupdatetimestamp
(system.
currenttimemillis()
);// 設定最新步長
buffer.
setstep
(nextstep)
; buffer.
setminstep
(leafalloc.
getstep()
);}// 計算號段起始值
long value = leafalloc.
getmaxid()
- buffer.
getstep()
;// 設定號段起始值、最大值及步長
segment.
getvalue()
.set
(value)
;segment.
setmax
(leafalloc.
getmaxid()
);segment.
setstep
(buffer.
getstep()
);sw.stop
("updatesegmentfromdb"
, key +
" "+ segment)
;
1)從當前號段取值try
}finally
2)下一號段準備segment next = buffer.
getsegments()
[buffer.
nextpos()
];// 獲取下一號段
boolean updateok =
false
;// 判斷下一號段是否準備好
try from db {}"
, buffer.
getkey()
, next);}
catch
(exception e)
finally
else
}
3)號段切換// 自旋並休眠等待下一號段準備
waitandsleep
(buffer)
;try
// 判斷下一號段是否準備好
if(buffer.
isnextready()
)else
are not ready!"
, buffer)
;return
newresult
(exception_id_two_segments_are_null, status.exception);}
}finally
Fabric 原始碼解析 原始碼目錄解析
這裡對重要的一些目錄進行說明 bccsp 與密碼學 加密 簽名 證書等等 相關的加密服務 將fabric中用到的密碼學相關的函式抽象成了一組介面,便於拓展。bddtests 一種新型的軟體開發模式 行為驅動開 需求 開發 common 一些公共庫 錯誤處理 日誌處理 賬本儲存 策略以及各種工具等等 ...
Spring原始碼解析之 Aop原始碼解析(2)
spring aop 更多的是oop開發模式的乙個補充,幫助oop以更好的方式來解決對於需要解決業務功能模組之上統一管理 的功能 以一副圖來做為aop功能的說明更直觀些。對於類似系統的安全檢查,系統日誌,事務管理等相關功能,物件導向的開發方法並沒有更好的解決方法 aop引入了一些概念。更多的是spr...
Integer原始碼解析
public class test else integer i3 200 integer i4 200 if i3 i4 else 結果為 原因integer 類會快取 128 到 127 之間的整數 但是如果new interger的話就是不同的物件了 源 分析 如果是在 128到正的127之間...