問題タブ [lru]
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.
java - JavaでLRUキャッシュをどのように実装しますか?
EHCacheやOSCacheなどとは言わないでください。この質問の目的のために、SDKだけを使用して自分で実装したいとします(実行して学習します)。キャッシュがマルチスレッド環境で使用されるとすると、どのデータ構造を使用しますか?LinkedHashMapとCollections#synchronizedMapを使用して既に実装しましたが、新しい同時コレクションのいずれかがより適切な候補になるかどうか知りたいです。
更新:このナゲットを見つけたとき、私はYeggeの最新情報を読んでいました:
一定時間のアクセスが必要で、挿入順序を維持したい場合は、本当に素晴らしいデータ構造であるLinkedHashMapよりも優れた方法はありません。それがおそらくもっと素晴らしいかもしれない唯一の方法は、同時バージョンがあったかどうかです。しかし悲しいかな。
上記のLinkedHashMap
+実装を使用する前は、ほぼ同じことを考えていました。Collections#synchronizedMap
私が何かを見落としていたのではないことを知ってうれしいです。
これまでの回答に基づくと、並行性の高いLRUに対する私の最善の策は、を使用するのと同じロジックのいくつかを使用してConcurrentHashMapLinkedHashMap
を拡張することであるように思われます。
java - Javaで簡単に使用できるLRUキャッシュ
実装は簡単ですが、既存のものを再利用したいと思います。
私が解決したい問題は、さまざまなページ、ロールなどの構成を(XMLからキャッシュしたいので)ロードすることです。そのため、入力の組み合わせはかなり大きくなる可能性があります(ただし、99%では大きくなりません)。この1%を処理するために、キャッシュに最大数のアイテムを入れたいです...
私がApacheCommonsでorg.apache.commons.collections.map.LRUMapを見つけたことがわかるまで、それは問題ないように見えますが、他の何かもチェックしたいと思います。何かお勧めはありますか?
javascript - Javascript での LRU キャッシュの実装
Java には LinkedHashMap があり、99% を LRU キャッシュに移動します。
LRU キャッシュの Javascript 実装はありますか (できれば信頼できるソースから)。
- 理解できる
- 効率的 (償却された O(1) get/put/delete)
? ウェブで検索しましたが、見つかりませんでした。Ajax Design Patternsで 1 つ見つけたと思いましたが、sendToTail()
メソッドを詳しく説明しており、O(n) のパフォーマンスを備えています (おそらく、キューと連想配列が分割されているため)。
私は自分で書くことができると思いますが、コアアルゴリズムの車輪を再発明することは健康に危険を及ぼす可能性があるという難しい方法を学びました:/
powershell - 空き容量が 5GB になるまで LRU フォルダを削除するにはどうすればよいですか?
フォルダが与えられたとします \\localhost\c$\work\
。
5 GB の空き容量を確保するために、15 分ごとに PowerShell スクリプトを実行したいと考えています。
使用可能な容量が 5GB 未満の場合は、5GB を超える容量が使用可能になるまで、work 内で最も使用頻度の低いフォルダーを削除します。
考え?
java - JavaでのLRUキャッシュの実装に関する質問
JavaでLRUキャッシュを実装するための標準的な例は、デポURLの例を示してい ますhttp://www.exampledepot.com/egs/java.util/coll_Cache.html
以下のコードスニペットに新しいエントリを追加した後、デフォルトでremoveEldestEntryはどのように呼び出されますか?
java - データが頻繁に変更される場合、どのタイプのJavaキャッシュを使用する必要がありますか?
多くの集計タイプでデータを表示するJSPがあります。例:市場別、カテゴリ別、サーバータイプ別など。私が持っているのは、発行元と時間別のデータです。私の場合、パブリッシャーは最も詳細なレベルのデータです。
現在、このデータは30分ごとに変更されます。30分あたりのデータ数はほぼ5Kで、一度に誰でも4時間から24時間データを検索します。このような場合、サーバーがロードされると、JSPのロード時間が急速に増加します。LinkedHashMapでLRUキャッシュを使用しようとしましたが、パフォーマンスがまだ良くないため、これは最適なソリューションではないようです。
どのデータ構造を使用するかについてのアイデアをいただければ幸いです。
c++ - プロダクション コードでの LRU の実装
LRU 手法を使用してキャッシュ置換を実装する必要がある C++ コードがいくつかあります。
これまでのところ、LRU キャッシュの置き換えを実装する 2 つの方法を知っています。
- キャッシュされたデータにアクセスするたびに timeStamp を使用し、最終的に置換時の timeStamp を比較します。
- キャッシュされたアイテムのスタックを使用し、それらが最近アクセスされた場合はそれらを一番上に移動するため、最終的に一番下に LRU 候補が含まれます。
では、製品コードで使用するのに適しているのはどれでしょうか?
彼らの他のより良い方法はありますか?
algorithm - LRU が FIFO より優れているのはなぜですか?
ページ ファイルに関して、FIFO よりもLeast Recent Usedの方が優れているのはなぜですか?
caching - FIFO/LRU ファイルストレージシステムを探しています
ディスクベースのキャッシュシステムを実装しようとしています。アイデアは、一定量のディスク領域を割り当て、そこに収まるデータ量を保存し、領域が不足すると古いファイルを破棄することです。
LRU は私の最初の削除戦略の選択肢ですが、FIFO で解決しても構わないと思っています。キャッシュ アルゴリズムをグーグルで検索すると、メモリ ベースのキャッシュが議論の中心になっているようです。たとえば、 Memcachedは、メモリベースであることを除いて、まさに私が探しているものです。一方、Memcachedb、couchdb などのソリューションには LRU 機能がないようです。
私が見つけた最も近いものは、squid プロキシサーバー ストレージ システムです。COSSは最も文書化されているもののようですが、これを使用するには、スタンドアロン プロセス (またはライブラリ) として書き直す必要があるでしょう。
そのようなことに使用できるプロジェクトまたは (java/python) ライブラリは何ですか?
編集:この関連する質問が見つかりました。