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パンデミックは不動産業界のインテリジェントな変革とアップグレードを加速させた
情報化時代において、人工知能は急速に社会の変化と発展を推進しています。世界中の研究機関、企業、大学が...
論文:混合モデルアプローチによる電子商取引プッシュ通知での補完製品の推奨論文リンク: https:/...
翻訳者 | 李睿レビュー | Chonglou今日、多くの企業幹部は人工知能を将来の発展方向と見てお...
2019年10月26日、Testinが主催する第2回NCTS中国クラウドテスト業界サミットが北京で開...
テンセントは本日、初のAI医療支援診断・治療オープンプラットフォーム(以下、AI支援診断オープンプラ...
マシンビジョンは急速に発展している人工知能の分野です。簡単に言えば、マシンビジョンとは、測定と判断の...
先日、人工知能技術の可能性とそれに対する人々の懸念について語った際、人工知能研究会社OpenAIのC...
OpenAIはDALL-Eに関するいくつかの論文と実装コードを公開しました。今年初め、OpenAI...
「ブレーキをかけないで、ただぶつかってください!」少し前、ネット上で出回った動画には、顧客が唐DM...
[51CTO.com クイック翻訳]現在の世界は、コンクリートやアスファルトでできた巨大な迷路のよう...
衛星から都市計画まで、人工知能の進歩は新たな洞察をもたらしています。 [[270081]]宇宙技術と...
Amazon Rekognition を使用すると、アプリケーションに画像およびビデオ分析機能を簡単...