生成隨機id對比

2021-08-04 14:16:08 字數 1210 閱讀 6659

生成隨機id

最近公司的專案遊戲生成的隨機不重複id,重複概率有點大,

**如下:

1

private

static

int id = 0;

2public

static

int serverid = 0;

3private

static

final object obj = new

object();45

public

static

long

getid1()

10 }

我做了乙個效能測試

測試**如下

1

public

static

void

main(string args) 12}

13long stops =system.currenttimemillis();

14 system.out.println("生產次數:" + fcount + " 成功生產次數:" + longs.size() + " 重複次數:" + lcount + " 耗時: " + (stops -starts));

15 }

測試生成次數和時間,

經過測試,這段**支援99999組伺服器同時生成id,保證不重複,但是前提條件是每一秒生成次數不超過65536個,
而且在不同伺服器產生重複概率還是有點高,

優點就是生產速度快,重複概率相對較低。

缺點就是每一秒生成的數量有限,

且不同伺服器id會產生相同的id

public

static

long

getid2()

return

num;

}

根據uuid生成long型隨機數,重複概率極低

生產次數:100000 成功生產次數:99999 重複次數:1 耗時: 579
看看這個結果,重複概率極低,極低,但是耗時相對較長,但也還算是在接受範圍內。

這個耗時加上了hashset的判斷耗時。

如果拋開hashet判斷會減少100多毫秒的生成時間;

mysql生成隨機id

mysql中生成隨機id的函式是uuid 但是這樣生成出來的隨機id是36位帶 符號的。select uuid 37747019 90a2 11e9 9806 00505683703f 我們可以配合replace 函式替換掉 符號來生成32位的不帶 符號的隨機id。select replace uu...

sql server生成隨機id

sql server中生成隨機id的函式是newid 但是這樣生成出來的隨機id是36位帶 符號的。select newid 746516e0 95d6 4baf 8826 6c2f76e9c2ab 我們可以配合replace 函式替換掉 符號來生成32位的不帶 符號的隨機id。select rep...

NPM酷庫 uuid,生成隨機ID

npm酷庫,每天兩分鐘,了解乙個流行npm庫。在中心化應用中,資料記錄的id往往是資料庫生成的自增id,但是在分布式應用中,就會存在一些問題 uuid 就是應用在分布式環境中的隨機字串id,uuid有統一的格式,uuid的標準型式包含32個16進製制數字,以連字型大小分為五段,形式為8 4 4 4 ...