2

私たちの Java アプリケーションには、一意の ID を保持するための 4 バイトのサイズ制限があります。

サイズが 4 バイトの一意の ID を作成する戦略を実装する必要があります。

それを作成するための戦略を知っている人はいますか

4

3 に答える 3

5

はい、ランダムな 32 ビット整数から始めてインクリメントします。

スケールアップするにつれて、それ以外のものはすべて要求が高すぎます (たとえば、10 億の ID が既に作成されていて、新しい ID をランダムに生成する必要がある場合、内部の存在を確認するために 10 億のエントリ テーブルが必要です... 痛い!)。

しかし、絶対にランダムでユニークでなければならない場合は、次の 2 つの戦略を使用できます。

1)HashSetこれまでに使用されたすべてのIDを大きくして、新しいランダムIDを生成するたびにセット内に存在するかどうかを確認します. その場合は、破棄して再試行してください。

2) ランダムに使用されたすべての ID をデータベースに保存し、 aを実行しSELECTて、新しく生成されたランダム ID が存在するかどうかを確認します。その場合は、破棄して再試行してください。

一意の ID がこれよりも大きい場合は、Guid (uuid とも呼ばれます) を使用できます。この Guid は十分に大きく生成され、2 つの Guid が同じ値を持つことは決してないので、確認する必要はありません。

Java の Guid/UUID については、 http: //docs.oracle.com/javase/7/docs/api/java/util/UUID.html を参照してください。

于 2013-05-03T04:46:28.560 に答える
0

あなたはこのように試すことができます

private static byte[] synhead = {(byte)0xAA,0x55,0x7E,0x0B};
于 2013-05-03T04:47:01.700 に答える
0

intご要望にお応えできると思います。

于 2013-05-03T04:42:08.147 に答える