2
我試圖爲DS中的每個請求生成唯一標識。我正在考慮連接請求收據的隨機整數和時間戳。因爲,得到一個隨機整數可能導致負值我決定打印十六進制表示:爲分佈式系統中的每個請求生成唯一標識
String randomPrefix = Integer.toHexString(RANDOM.nextInt()).toUpperCase();
java.util.Date date = new java.util.Date();
String timestamp = Long.toHexString(date.getTime()).toUpperCase();
String id = randomPrefix.concat(timestamp);
我在nt的概率非常好,但我想知道是否有可能導致同樣低的其他操作(或者更好的機會不會看到重複)在這個值與較短的字符串長度。
說起來像一個外行人,連接應該是X重複的機會,而加法會+它(它有更高的重複機會)。
請建議其他方法來產生更清晰,更短的ID(或確認這是否正確)。
P.S:請原諒我的外行語言,在它上面工作。 :(
如果您需要真正獨特的ID,請使用@NKukhar建議的UUID。如果程序運行時你需要一個唯一的ID,你可以增加一個AtomicInteger。 – agbinfo