package com.baizhi.zcn.util;
public class snowflake
if (datacenterid > maxdatacenterid || datacenterid < 0)
this.workerid = workerid;
this.datacenterid = datacenterid;
}// ******************************methods****************************************==
/*** 獲得下乙個id (該方法是執行緒安全的)
* @return snowflakeid
*/public synchronized long nextid()
//如果是同一時間生成的,則進行毫秒內序列
if (lasttimestamp == timestamp)
}//時間戳改變,毫秒內序列重置
else
//上次生成id的時間截
lasttimestamp = timestamp;
//移位並通過或運算拼到一起組成64位的id
return ((timestamp - twepoch) << timestampleftshift) //
| (datacenterid << datacenteridshift) //
| (workerid << workeridshift) //
| sequence;
}/**
* 阻塞到下乙個毫秒,直到獲得新的時間戳
* @param lasttimestamp 上次生成id的時間截
* @return 當前時間戳
*/protected long tilnextmillis(long lasttimestamp)
return timestamp;
}/**
* 返回以毫秒為單位的當前時間
* @return 當前時間(毫秒)
*/protected long timegen()
public snowflake()
//生成id
public string getid()
//******************************test*********************************************
/** 測試 */
public static void main(string args) */
}}
SpringBoot 雪花演算法工具類
多用於生成訂單號 eg 779281037489340416 package com.ldh.util public class snowflake if datacenterid maxdatacenterid datacenterid 0 this workerid workerid this ...
Mybatis工具(五) 雪花演算法
snowflake 演算法,是 twitter 開源的分布式 id 生成演算法。其核心思想就是 使用乙個 64 bit 的 long 型的數字作為全域性唯一 id 在分布式系統中的應用十分廣泛。給大家舉個例子吧,比如下面這個 64 bit 的 long 型數字,就是由雪花演算法生成的id。1 bit...
工具類 雪花演算法生成分布式ID
工具類 雪花演算法生成分布式id snowflake 演算法,是 twitter 開源的分布式 id 生成演算法。其核心思想就是 使用乙個 64 bit 的 long 型的數字作為全域性唯一 id。在分布式系統中的應用十分廣泛,且id 引入了時間戳,基本上保持自增的,後面的 中有詳細的註解。這 64...