問題タブ [hash-code-uniqueness]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vb6 - この関数によって生成されるハッシュ コードが一意でないのはなぜですか?
Google 検索から取得した以下の VB 関数をテストしています。これを使用して、文字列をすばやく比較するためのハッシュ コードを生成する予定です。ただし、2 つの異なる文字列が同じハッシュ コードを持つ場合があります。たとえば、これらの文字列
「122Gen 1 ヒープ サイズ (.NET CLR メモリ w3wp):mccsmtpteweb025.20833333333333E-02」
「122Gen 2 ヒープ サイズ (.NET CLR メモリ w3wp):mccsmtpteweb015.20833333333333E-02」
同じハッシュ コード 237117279 を持っています。
教えてください: - 関数の何が問題になっていますか? - どうすれば修正できますか?
ありがとうございました
マーティン
hash - ReSharper GetHashCodeオーバーライドに「397」が使用されるのはなぜですか?
多くの皆さんと同じように、私は ReSharper を使用して開発プロセスを高速化しています。クラスの等価メンバーをオーバーライドするために使用すると、生成されるコード生成はGetHashCode()
次のようになります。
もちろん、そこには私自身のメンバーもいますが、私が知りたいのは、なぜ 397 なのかということです。
- 編集:だから私の質問は、素数である以外に397の素数について「特別な」何かがあるのでしょうか?
c# - ローカルメタデータをリモートファイルに確実に関連付けますか?
WinForms / C#
私のアプリケーションでは、ユーザーは1)2)特定のファイルの追加情報を指定できます。どちらもサーバーにアップロードされます。2つの分離されたアップロードがあります。最初はファイルで、(おそらく)後でメタデータです。
ファイルは常に変更されておらず、(コードに対して)利用可能であると想定してください。
メタデータをアップロードするときは、そのファイルを再度アップロードせずに、指定されたファイルに関連付けられていることを確認する必要があります(大きなファイルです)。
私の計画は、ファイルの次の3つの属性のMD5ハッシュを使用することです。
- コンテンツ
- サイズ
- 作成日
ハッシュは、それぞれのアップロード(および最終的な永続性)でファイルとメタデータの両方に付随します。
私が見落としているよりスマートなソリューションは何ですか?
algorithm - Tinyurlスタイルの一意のコード:衝突を防ぐための潜在的なアルゴリズム
オブジェクトを表すために一意の6桁のコードを必要とするシステムがあり、それらを生成するための優れたアルゴリズムを考えようとしています。前提条件は次のとおりです。
- 私は基数20のシステムを使用しています(混乱やいたずらな言葉を防ぐために、キャップ、数字、母音、またはlは使用していません)
- ベース20は6400万の組み合わせを可能にします
- 一度に5〜1万のエントリを挿入する可能性があるため、理論的には一括挿入を使用します。つまり、一意のキーを使用すると、効率的またはきれいではない可能性があります(特に衝突が多く発生し始めた場合)。
- 組み合わせの10%を埋めることは問題外ではないので、多くの衝突の可能性が高くなります
- コードが連続していないことを確認したい
私はそれがうまくいくように聞こえるという考えを持っていましたが、それを実装する方法を理解するのに十分な数学がありません。いずれかを繰り返す前に、0〜63,999,999の各値をカウントできるNの値になります。
たとえば、N = 3(つまり、10 mod 3)を使用して0から9に移動すると、0、3、6、9、2、5、8、1、4、7になります。
繰り返さずに全範囲を数えることができるいくつかのより大きな数のNの値を計算するための魔法の数学の方法はありますか?理想的には、私が選んだ数字は、パターンがあることが明らかではないようにセットを飛び回るようなものですが、それがどれほど可能かはわかりません。
あるいは、0〜6400万の値の一意性を保証するハッシュアルゴリズムも機能しますが、それが可能かどうかを知るにはあまりにも愚かです。
hash - ハッシュ結果はソース値と同じですか?
これは暗号理論の質問ですが、ハッシュアルゴリズムの結果がソースと同じ値になる可能性はありますか?たとえば、文字列があるとします。
SHA1ハッシュを取得すると、結果は次のようになります。
理論的には、これら2つの値が一致する場合はありますか?ここでは特にSHA1について質問していません。これは単なる例です。これを防ぐような方法でハッシュアルゴリズムが構築されているのではないかと思っています。
c# - 複雑なオブジェクトグラフの高速HashCode
私はかなり複雑なオブジェクトを持っており、これらのオブジェクトの一意性を取得する必要があります。1つの解決策は、をオーバーライドすることで実行できますGetHashCode()
。以下に示すコードを実装しました。
これらの複雑なオブジェクトも、同様の操作をオーバーライド GetHashCode()
して実行します。
私のプロジェクトでは、これらを頻繁に扱うこれらのオブジェクトの一意性が必要であり、内部のデータもさまざまな方法や場所で変化します。
パフォーマンスとメモリを考慮する必要があるこれらの複雑なオブジェクトの一意性を見つけるためのより高速な方法が必要です。
よろしくお願いします
Munim
hash - ハッシュアルゴリズムが一意であることを保証できる状況はありますか?
データよりも大きなバイト サイズのハッシュ アルゴリズム (sha-256 など) を使用して、サイズが制限された同様のデータ (社会保障番号など) をハッシュしている場合、ハッシュはデータと同じレベルの一意性を保証しますか?元データ?
hash - 異なるファイル サイズでのハッシュの衝突は、同じファイル サイズと同じように発生する可能性がありますか?
私は多数のファイルをハッシュしており、ハッシュの衝突を避けるために、ファイルの元のサイズも保存しています。これにより、ハッシュの衝突があったとしても、ファイル サイズも同じになる可能性はほとんどありません。この音 (ハッシュの衝突はどのようなサイズでも同じように発生する可能性があります) ですか、それとも別の情報が必要ですか (衝突がオリジナルと同じ長さである可能性が高い場合)。
または、より一般的には、元のファイルのサイズに関係なく、すべてのファイルが特定のハッシュを生成する可能性は同じですか?
java - 3 つの long からハッシュ コードを生成する方法
座標をキーとして持つ HashMap があります。
座標には、x、y、z 座標を保持する 3 つの long があります。(座標はカスタム クラスである必要があり、座標は long である必要があります)。
ここで、次のようにして、たとえばフィールド [5, 10, 4] にアクセスできるようにしたいと考えていますhashMap.get(new Coordinate(5, 10, 4))
。
equals メソッドを実装しましたが、hashCode の実装も提供する必要があるようです。私の質問は、3 つの long から一意の hashCode を生成するにはどうすればよいですか? .
追加: 外部ライブラリからのハッシュ ジェネレーターの使用はオプションではありません。