首頁  >  文章  >  Java  >  Java之流水號產生器

Java之流水號產生器

黄舟
黄舟原創
2017-01-17 15:18:342437瀏覽

提出問題

如何使用jAVA產生流水號,同時支援可配置和高並發???

解決問題

假設你們專案已經整合快取技術 

假如你有一定的Java基礎 
下面的程式碼實現的是一個支援高並發,可配置,效率高的流水號產生器,可同時為一個專案的多個模組使用,流水號支援緩存,即每次會預先產生一定數量的流水號存放在快取中,需要的時候,優先到快取中去,快取中的序號使用完之後,重新產生一定數量的流水號放到快取中,如此循環,提高效率… 

同時,該流水號生成器是線程安全的,使用線程鎖進行保護,已經真正的投入到項目中使用……

數據庫表設計

[code]CREATE TABLE sys_serial_number2 (
    "id" varchar(32) COLLATE "default" NOT NULL,
    "module_name" varchar(50) COLLATE "default",
    "module_code" varchar(50) COLLATE "default",
    "config_templet" varchar(50) COLLATE "default",
    "max_serial" varchar(32) COLLATE "default",
    "pre_max_num" varchar(32) COLLATE "default",
    "is_auto_increment" char(1) COLLATE "default"
)

說明:
[code]module_name:模块名称
module_code:模块编码
config_templet:当前模块 使用的序列号模板
max_serial:存放当前序列号的值
pre_max_num:预生成序列号存放到缓存的个数
is_auto_increment:是否自动增长模式,0:否  1:是

注意:目前序號模板只支援字母,動態數字(0000代表1-9999),和日期用${DATE}的組合形式 

is_auto_increment配置為1 ,這時配置模板為CX000000產生的序號為:CX1 ,CX2,CX3….. 




,這時配置模板為CX0000000產生的序號為:CX00000001,CX0000002,CX00000003

資料庫設定說明:如需要項目模組的項目編號,則需要在資料庫表sys_serial_n
資料庫設定說明:如需要項目模組的項目編號,則需要在資料庫表sys_serial_n

資料庫設定說明:如需要項目模組的項目編號,則需要在資料庫表sys_serial_nnumber中設定一筆:的序號類似:CX0000000120160522 ,CX0000000220160522,CX00000003201605222 …


Service設計機之流水號產生器的內容,更多相關內容請關注PHP中文網(www.php.cn)!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn