以下の要件を満たす Java アプリケーションの一意の番号を生成する必要があります -
- 16進数9桁
- 毎日生成される約 600,000 の数字
- 番号は、最低 7 日間は一意である必要があります。7 日以上繰り返されても問題ありません。
- 負荷のピーク時には、約 15 秒間、毎秒約 800 の一意の番号を生成する必要があります。
失敗した解決策 -
public static String getUniqueId() {
String uniqueTime = Long.toHexString(System.nanoTime());
String uniqueId = uniqueTime.substring(uniqueTime.length() - 9);
return uniqueId;
}
nanoTime を使用して 12 桁の 16 進数を生成します。左の 3 文字を切り捨てます。nanoTime は、ピーク負荷の処理に役立ちます。
これは正しくなく、重複が発生する可能性があると思います。
誰でも良いクイックアルゴリズムを提供できますか?