Clojureマップが2^32-1キーの制限を持っている場合、Clojureがマップ実装に32ビットのハッシュを使用することを考慮したいと思います。それは衝突を管理します)、そのハッシュ実装がconsistentである場合 TIA!Clojureマップの制限と一貫性
6
A
答えて
10
Clojureのマップ(すなわち、それが不変のデータ構造で使用される場合、十分な性能を提供しないのJavaハッシュマップを使用していない)永続的不変であるカスタム実装です。
これは32ビットのハッシュコードを使用するため、2^32の可能なハッシュバケットです。衝突の場合、キーと値は各ハッシュバケットの配列に格納されるため、は2^32個以上のキーを持つことが可能です。 PersistentHashMap sourceを参照してください。特に、HashCollisionNode内部クラスは、単一のハッシュコード値に対してキー/値のバケットを格納するために使用されます。
可能なハッシュバケットの数は固定されているので、一貫したハッシュは無関係です。鍵を再マップする必要はありません。
も参照してください:
- http://www.infoq.com/presentations/Value-Identity-State-Rich-Hickey(同時性へのプレゼンテーションを説明するClojureのアプローチだけでなく、永続的な不変のデータ構造をカバー)
+0
本当にありがとう! –
関連する問題
- 1. 迅速な一貫性のないジェネリックプロトコル制限
- 2. Clojureのマップと等価性
- 3. Akka.Netとキャッシュの一貫性
- 4. PHP - 一貫性
- 5. カサンドラ:ジオの冗長性と一貫性
- 6. カサンドラ一貫性レベルとレプリケーションファクター
- 7. タブナビゲーションバーの一貫性
- 8. コスモスDB最終的な一貫性上限上限
- 9. コアデータ一貫性エラー
- 10. BigInt C++ライブラリのベースとの一貫性
- 11. リポジトリ/サービスのパターンとデータの一貫性
- 12. キャッシュの一貫性と競合条件
- 13. pygameと一貫性のない動き
- 14. Java同期とデータの一貫性
- 15. FOLモデルの一貫性チェック
- 16. バルカン:データの一貫性
- 17. マイクロサービス間のデータ一貫性
- 18. 一貫性のないアクセス
- 19. Djangoモデルのデータ一貫性
- 20. PythonコードのSolr一貫性
- 21. {} + "" vs "" + {} - 加算の一貫性
- 22. C#リスト間の一貫性
- 23. 一貫性のないアクセス
- 24. Cassandra DDLの一貫性レベル
- 25. コスモスDBの一貫性
- 26. Microsoftの一貫性は
- 27. システム設計:グローバルキャッシングと一貫性
- 28. 逐次的一貫性
- 29. 原子的一貫性
- 30. MongoDB tunable一貫性ベストプラクティス
は、あなたがソースコードを見たことがありますか? – pmdj
しかし、私はJavaの開発者ではないので、完全に理解できません。ハッシュ関数は、キーがIntegerでObject hasheqメソッドをキーとする特定のケースでIntegerに委譲するhasheqです。しかし、マップが衝突をサポートしていて、ハッシュ関数が一貫している場合、使用されているハッシュ関数を理解することはできません(またはバックトレース)。 –
(私はいくつかのdownvotesを理解することはありません) –