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パンデミックは不動産業界のインテリジェントな変革とアップグレードを加速させた
フロスト&サリバンによる最近の分析によると、スマートシティ技術への世界的な投資は2025年までに22...
1958 年、FHC クリックは、生物学における重要なセントラルドグマである DNA -> R...
人類はもはや人工知能(AI)の波から逃れることはできない。彼らが行くところすべてで、最新の AI ソ...
ChatGPTに代表される大規模モデル技術の急速な発展により、レコメンデーションシステムは革命的な変...
海外メディアの報道によると、元アップルのデザイナー、イムラン・チャウドリ氏とベサニー・ボンジョルノ氏...
近年、顔認識技術は、女性や有色人種の誤検出率の高さや、個人の自由やプライバシーへの悪影響など、常に世...
[[385416]]現在、両セッションは活発に行われており、全国のさまざまな分野の代表者が独自の提...
Microsoft は、仮想会議用に Mesh for Teams と呼ばれる没入型 3D プラット...
[[185648]]原著者 | ペル・ハラルド・ボルゲン編集:魏子民、頼暁娟、張立軍 「初心者にとっ...
ほとんどの人は、ロボットやアプリケーション ツールについて話すときにインテリジェンスについて言及しま...
チャットができる「インテリジェント音声アシスタント」から、さまざまな家電を操作できるスマートスピーカ...
ハッカーがネットワーク攻撃を開始すると、まず会社のパブリック IP で SSH サービスに使用される...
5月16日、天津梅江会議展示センターで第2回世界知能大会が開幕した。アリババグループ取締役会長のジャ...