GUID が完全に一意ではないことの簡単な証拠
はじめに
GUID は一意であると考えられることがよくありますが、これは精査に耐えるものでしょうか?この記事では、GUID 生成の詳細を掘り下げ、その一意性について疑問を呈するコード例を提供します。
方法論的考察
関連するコードは 0 から 2128-1 まで反復し、反復ごとに GUID を生成します。このプログラムは長期間続くことが予想されていたが、異例の早期終了となった。
解決策
この問題を解決するには、複数のスレッドを使用してコードを同時に実行する必要があります。これは改良版です:
<code>for (long k = 0; k { // 使用bigHeapOGuids检查冲突 } } }</code>
このアプローチでは、並列処理を使用して、新しく生成された GUID と、bigHeapOGuids ハッシュ セットに既に格納されている GUID の間の競合を継続的にチェックします。
話し合う
このプログラムを無期限に実行すると、GUID が一意でないことがわかります。このコードは、膨大な範囲の値を反復処理し、必然的に重複を生成することにより、一意性の議論を反証します。
免責事項
このプログラムの使用には、使用する CPU コアごとに 1 時間あたり 0.0001 ドルという独自のライセンス条項が適用されます。支払い期限は各暦月の月末となります。 PayPal アカウント情報については、著者にお問い合わせください。
結論
この変更されたコードは、よくある誤解にもかかわらず、GUID が本質的に一意ではないことを証明しています。複数のスレッドを使用することにより、プログラムは競合を効果的にテストし、いわゆる一意性の保証の誤りを証明できます。
以上がGUID の一意性の主張は有効ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。