私のシステムでは、マスタノードとn個のスレーブノードが存在します。マスタノードは着信要求をスレーブノードの1つに配信します。キャッシュメモリのコンテンツを利用するためには、スレーブノードがすでにサービスしていた最後の50リクエスト(受信リクエストのハッシュ)を追跡したいと思います(最後の50リクエストがキャッシュメモリに既に存在すると仮定してノードは要求を速やかに処理する)。 私が研究した限り、ブルームフィルターでは削除が困難です。しかし、それはフィルターを数えることによっても行うことができます。ブルームフィルタを移動ウィンドウのように保つことは本当に可能ですか(50リクエスト後は、新しいリクエストに対応するためにフロントエンドから削除する必要があります)。本当にそうすることが可能か、それともブルームフィルタ(要素の存在を確認するのに十分な速さでなければならない)のような他のフィルタがありますか?最後の50個のデータコンテンツだけを格納するブルームフィルタ
5
A
答えて
5
あなたが追跡しているものが50個しかない場合、Bloomフィルタは適切なデータ構造ではないと私は思います。 Bloomフィルタは、メモリに保持できないデータがあり、リモートデータベースなどの一部のリモートデータ構造で不要なルックアップを排除するためにプレフィルタリングを実行する必要がある場合、膨大な量がある場合に適しています。 50個の要素しか持たない場合は、ハッシュテーブルのようなものを使って値を格納する方が良いでしょう。スペースオーバーヘッドを最小限に抑えて、期待されるO(1)時間で正確な答えを得ることができるからです。
あなたが見た最後の50個の要素を追跡したい場合は、O(1)時間内にinsert、lookup、delete、およびdelete-eldestをサポートするリンクされたハッシュテーブルを調べることを検討してください。 JavaのLinkedHashMap
はここですばらしいはずです。
希望すると便利です。
関連する問題
- 1. PHP構文は配列の最後の値を格納するだけです
- 2. どのバージョン管理ツールが最後の 'N'コミットだけを格納するのに最適ですか?
- 3. JSONフィードの最後のオブジェクトのみを格納するコアデータ
- 4. 共通キーに個別のデータとグループを格納する
- 5. 行の数を格納するか、行を数えるだけですか?
- 6. C:、ユーザー入力を取得、保存、continueingその後、表示の最後の50個の入力
- 7. MySQLの最後の20個の値だけを表示するPHP動的テーブルを作成するには?
- 8. データベースだけで、最後の30日間
- 9. 変数に格納されている最後の数行のファイルを取得
- 10. R - nolptr - 最高のものだけでなく、50の優れたソリューションを見つける
- 11. mysqlデータベースに10個のオプションを格納する最良の方法は何ですか?
- 12. トピックの「ビュー」を格納するための最良の方法
- 13. ファイルをデータベースに格納するか、そのファイルの場所だけを格納する必要がありますか?
- 14. 最後の値だけを出力する
- 15. ユーザー入力を格納し、計算して最後に表示する
- 16. 最後に追加したアイテムの最後の10個のアイテム
- 17. SQLiteにArrayListsを格納するための最善のアプローチ
- 18. Minizinc - 解決の数をカウントして最初に印刷するだけで50をチェックする
- 19. Java:ArrayListの任意のインデックスに格納する最良の方法
- 20. Facebook Apiは最大25個のイベントを返すだけですか?
- 21. テーブルの配列を格納/取得する最適な方法
- 22. RSAキーを格納するのに最適なmysqlデータ型?
- 23. Java:グリッド参照を格納するのに最適なタイプ
- 24. シンプルなスキーマ - cmsテキストを格納するプロパティの最大値
- 25. 最後のn個の要素
- 26. 最初にリコールされた後にデバイスにデータを格納します。
- 27. ブルームフィルタの設計
- 28. ブルームフィルタの実装
- 29. apache poi最後の行だけを書きます
- 30. ループは最後の項目だけを返します