雪花演算法工具類

2021-09-05 11:11:06 字數 1300 閱讀 7932

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...