id生成器算法設計
原理說明
1.每個數據庫存儲初始值
2.業務獲取值後修改數據庫的初始值 現初始值=源初始值+數據庫個數*步長 【原子操作】
3.業務拿到初始值後,獲取的數據集合是 開始值 ~ 開始值+步長
//設置步長
int bc=4;
Map<String,Integer> map=new HashMap<String, Integer>();
//設置初始值,各初始值間隔bc
map.put("db1", 0);
map.put("db2", 4);
map.put("db3", 8);
for(int i=0;i<3;i++){
for(Iterator<String> iterator= map.keySet().iterator();iterator.hasNext();){
StringBuffer sb=new StringBuffer();
String key=iterator.next();
sb.append("[").append(key).append("]");
for(int k=map.get(key),is=map.get(key)+bc;k<is;k++){
sb.append(k+",");
}
//修改下次的初始值
int ns=map.get(key)+map.size()*bc;
map.put(key, ns);
System.out.println(sb.toString());
sb.reverse();
}
}
最後更新:2017-05-24 11:01:25
上一篇:
《TensorFlow技術解析與實戰》——第1章 人工智能概述 1.8小結
下一篇:
阿裏下一代數據庫技術:把數據庫裝入容器不再是神話
Spark SQL Columnar模塊源碼分析
龐果網之高斯公式
廣東雲棲大會 | 政務雲上“國家級”加密保護,遊戲業內普惠的安全防禦
ASP.NET Core的配置(3): 將配置綁定為對象[上篇]
Predicate和Consumer接口– Java 8中java.util.function包下的接口
如何在 Ubuntu 16.10 的 Unity 8 上運行老式 Xorg 程序
多核時代:並行程序設計探討(4)——Windows和Linux對決(進程間通信)
使用CopyTable同步HBase數據
引用傳實參
2017雲棲大會·杭州峰會:《雲數據·大計算:海量日誌數據分析與應用》之《數據分析展現:可視化報表及嵌入應用》篇