javaで簡単、シンプルに使えるLRUキャッシュ
2023-10-13 04:30:09
質問
実装は簡単なのですが、既にあるものを再利用したいのです。
私が解決したい問題は、異なるページ、ロール、...のために設定(XMLからなので、それらをキャッシュしたい)をロードするので、入力の組み合わせはかなり大きくなる可能性があります(しかし99%はそうではありません)。この1%を処理するために、私はキャッシュ内のアイテムのいくつかの最大数を持ちたい....
私はapache commonsでorg.apache.collections.map.LRUMapを見つけ、それはうまく見えるが、何か他のものもチェックしたいことを知るまでです。何か推奨されるものはありますか?
どのように解決するには?
あなたは LinkedHashMap (Java 1.4+) を使用します.
// Create cache
final int MAX_ENTRIES = 100;
Map cache = new LinkedHashMap(MAX_ENTRIES+1, .75F, true) {
// This method is called just after a new entry has been added
public boolean removeEldestEntry(Map.Entry eldest) {
return size() > MAX_ENTRIES;
}
};
// Add to cache
Object key = "key";
cache.put(key, object);
// Get object
Object o = cache.get(key);
if (o == null && !cache.containsKey(key)) {
// Object not in cache. If null is not a possible value in the cache,
// the call to cache.contains(key) is not needed
}
// If the cache is to be used by multiple threads,
// the cache must be wrapped with code to synchronize the methods
cache = (Map)Collections.synchronizedMap(cache);
関連
-
Javaでよくある構文エラー
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] ウェブサイト制作のためのChromeキャッシュの無効化
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スレッド "main "での例外 java.util.NoSuchElementException in Java 問題解決済み
-
executeQuery()でデータ操作文が発行できない。解決方法
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
StringBuilderが投げるArrayIndexOutOfBoundsExceptionの探索
-
Jsoup-Crawlingの動作
-
-bash: java: コマンドが見つからない 解決方法
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
API の戻り値を処理するために ResponseEntity を使用する
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
[解決済み] JavaでLRUキャッシュを実装するとしたら、どのようにしますか?