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パンデミックは不動産業界のインテリジェントな変革とアップグレードを加速させた
2021年の欧州選手権でイングランドはデンマークを破り、初めて欧州選手権決勝に進出した。歴史に名を残...
ディープラーニング プロジェクトを開始する前に、適切なフレームワークを選択することが非常に重要です。...
制作:ビッグデータダイジェスト編集部長い間待ち望まれていた『ゲーム・オブ・スローンズ』の最終シーズン...
2月6日、崑崙万為はMoE大規模言語モデルの新バージョン「天宮2.0」と「天宮AIスマートアシスタン...
人工知能はもはや未来の技術ではありません。私たちの日常の作業を自動化する機械はますます賢くなり、人工...
米国の研究チームは最近、ウェアラブルデバイスから得られる生体認証データを分析することで、一見健康そう...
今週の金曜日、待望の NVIDIA 奨学金の受賞者リストが発表されました。 NVIDIA 大学院フェ...
昨今、人工知能(AI)という言葉は至るところで聞かれます。科学技術革新を支援する国や地方政府の政策か...
人工知能はどこから来たのでしょうか? 人工知能は人類をどこへ連れて行くのでしょうか? 人工知能は「見...
2017年、人工知能は最高熱に達し、最高情報責任者、コンサルタント、学者らは、この技術によってビジネ...
[[431746]]自動車業界は、新しい技術の最前線に立つことが多いです。業界では数十年にわたって組...