1 LRUとは何か LRU (Least Recently Used) は、最も最近使用されていないデータです。その基本的な考え方は、「データが最近アクセスされた場合、将来アクセスされる可能性が高くなる」というものです。したがって、LRU アルゴリズムは、過去のアクセス レコードに従ってデータを並べ替えます。十分なスペースがない場合は、最も最近使用されていないデータが削除されます。 2 LRU実装の原則 LRU アルゴリズムは最近使用されたデータを優先するため、ソートをサポートするデータ構造が必要であり、リンク リストが非常に適しています。 配列を検討してみませんか? LRU アルゴリズムは一般的にアクセス頻度の高いシナリオで使用されるため、データの移動は頻繁に行われます。配列を移動したら、移動した値の後ろにあるすべてのデータの位置を変更する必要があります。これは非効率的であり、推奨されません。 3. 双方向リンクリストのLinkedHashMap 先ほど、LRU アルゴリズムの実装はリンク リストを使用して実装できることを分析しました。Java の LinkedHashMap は双方向のリンク リストです。 LinkedHashMap は HashMap のサブクラスです。HashMap データ構造に基づいて、すべてのエントリをリンクする双方向リンク リストも維持します。このリンク リストは反復順序を定義します。これは通常、データが挿入される順序です。 LinkedHashMap のソースコードを見てみましょう。 ソース コードの定義から、accessOrder プロパティで LinkedHashMap をトラバースする順序を指定できることがわかります。true はアクセス順序、false は挿入順序を意味し、デフォルトは false です。 LRU はアクセス順序に敏感なので、単純に検証するために true を使用します。
結果は次のとおりです。
accessOrder = true を設定すると、LinkedHashMap をアクセス順にソートできることがわかります。 では、LinkedHashMap はどのようにそれを実現するのでしょうか? getメソッドを見てみましょう
afterNodeAccess メソッドをもう一度見てみると、ノードが移動されていることがわかります。ここまでで、ノードを移動する原理は理解できました。
現在、LinkedHashMap を LRU として使用する場合、容量が限られている場合に古いデータをどのように削除するかという、まだ気になる問題があります。 戻ってputメソッドを見てみましょう
put メソッドをステップごとに見ていくと、removeEldestEntry(first) メソッドが true を返すとヘッドが削除され、最近使用されていないデータが排除されることがわかります。完全に LRU に準拠しています。 4 最も単純なLRU実装 上記の分析に基づいて、最も単純なLRUを次のように実装できます。
|
>>: COVID-19パンデミックは不動産業界のインテリジェントな変革とアップグレードを加速させた
ここ数年、AIチップの新興企業が雨後の筍のように出現した。現在、初期の参加者グループは、優れたチップ...
私たちはここ数年、自動運転車について話し合い、議論してきました。しかし、道路上では見かけません。これ...
10月11日ニュース(南山)ガートナーは今年7月、「中国ICTハイプサイクル2023」レポートを発表...
[51CTO.comからのオリジナル記事] 同社は、世界のトップ500企業のうち52社、中国のトップ...
[[415365]]画像ソース: https://pixabay.com/images/id-358...
COVID-19の世界的パンデミックにより、医療におけるテクノロジーの活用が加速しました。 2021...
伝説のゲーム開発者ジョン・カーマック氏は、2030年頃に汎用人工知能(AGI)が登場する可能性がある...
▲ 画像出典:マッキンゼーこのレポートで、マッキンゼーは、AIが人間の仕事に取って代わる時期が早まっ...
アマゾンの従業員2人によると、同社は近年、いくつかの倉庫で数々の新技術を導入し始めており、その中には...
概要:ほんの数日前、ビッグ アイヴァンが携帯電話でソーシャル メディアをちょっとチェックしたとき、信...
編集者 | ヤン・ジェン現地時間1月25日、OpenAIは新モデルをリリースし、GPT-3.5 Tu...
時間と空間を結びつけるのは速度であり、エネルギーと質量を結びつけるのも速度です。事実と価値を結びつけ...