Appearance
cache-eviction-demo
LRU / LFU 缓存淘汰可运行对照实验。
1. 实验目标
理解 LRU 与淘汰策略:
| 入口类 | 内容 |
|---|---|
LruLinkedHashMapDemo | JDK LinkedHashMap:accessOrder + removeEldestEntry |
SimpleLruCache | 手写 LRU:HashMap + 双向链表,moveToTail |
SimpleLfuCache | 手写 LFU:频率桶 + 同频 LRU tie-break |
2. 运行方式
bash
cd labs/foundations/cache-eviction-demo
javac -d out src/*.java
java -cp out LruLinkedHashMapDemo
java -cp out SimpleLruCache
java -cp out SimpleLfuCache3. 源码
| 文件 | 说明 |
|---|---|
| LruLinkedHashMapDemo.java | LinkedHashMap 逐步演示(含 get D×5 + put F) |
| SimpleLruCache.java | 手写 LRU,head 先淘汰 / tail 最近使用 |
| SimpleLfuCache.java | 手写 LFU,与 LRU 对比频率语义 |
4. 预期要点
LRU:踢最久未访问;get D 多次不改变已在队尾的顺序;满员踢 head.next。
LFU:踢频率最低;get A×3 后 A 更难被淘汰;满员踢 freq 最小的 C 而非 A。