1. LRU缓存
LRU是Least Recently Used 近期最少使用算法
import java.util.LinkedHashMap; import java.util.Map; public class LRUCache<K, V> extends LinkedHashMap<K, V> { private static final long serialVersionUID = -1882071901467368406L; static final int DEFAULT_INITIAL_CAPACITY = 16; static final float DEFAULT_LOAD_FACTOR = 0.75f; static final int DEFAULT_CACHE_SIZE = 1024; private final int cacheSize; public LRUCache() { this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR, DEFAULT_CACHE_SIZE); } public LRUCache(int capacity, float loadFactor, int cacheSize) { super(capacity, loadFactor, true); this.cacheSize = cacheSize; } protected boolean removeEldestEntry(Map.Entry<K,V> eldest) { return size() > cacheSize; } }
1. FIFO缓存
import java.util.LinkedHashMap; public class CommonCache<K, V> extends LinkedHashMap<K, V> { /** UID。 */ private static final long serialVersionUID = 1L; /** 默认缓存SIZE。 */ private static final int DEFAULT_CACHE_SIZE = 1024; /** 缓存SIZE。 */ private int cacheSize = DEFAULT_CACHE_SIZE; /** * 构造方法。 */ public CommonCache() { } /** * @return cacheSize */ public int getCacheSize() { return cacheSize; } /** * @param cacheSize */ public void setCacheSize(int cacheSize) { this.cacheSize = cacheSize; } @Override protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) { return size() > cacheSize; } }
相关推荐
### Redis与Memcached的主要区别 #### 数据结构支持 ...以上示例中,`LRUCache`类继承自`LinkedHashMap`,通过重写`removeEldestEntry`方法实现LRU缓存策略。当缓存达到预设的容量时,最久未访问的键会被自动移除。
- 在Java中,可以利用集合来实现高效的缓存管理机制,如使用`LinkedHashMap`作为缓存容器,通过设定访问顺序或者容量限制等方式实现自动淘汰旧数据。 #### 三、Collection 接口 - **Collection**是Java集合框架的...
- **Java中的Map接口**:提供了键值对的存储和检索功能,常见的实现类有`HashMap`、`TreeMap`、`LinkedHashMap`等。 - **HashMap**: - **应用举例**:展示如何使用`HashMap`存储和检索数据。 - **Map与HashCode*...
Java提供了多种哈希算法,如`java.security.MessageDigest`类用于计算MD5或SHA哈希,或者使用`java.util.HashMap`或`java.util.LinkedHashMap`来建立URL和短链接之间的映射关系。 3. **数据库操作**:存储生成的短...
3. **改进的集合框架**:在JDK 6中,集合框架得到了进一步增强,包括新增的`LinkedHashMap`的`removeEldestEntry()`方法,用于实现自定义缓存策略,以及`Collections.sort()`和`Arrays.sort()`方法对自定义比较器的...
- **概念**:Java程序编译后的字节码文件,由编译器生成,JVM解释执行。 - **组成**:主要包括常量池、方法区域、代码段等部分。 #### 二、类的加载过程与双亲委派模型 - **类加载过程**:加载、验证、准备、解析...
8. **Java LinkedHashMap的应用**:`LinkedHashMap`保持了插入顺序,常用于实现LRU缓存等场景。 9. **cloneable接口实现原理**:实现了`Cloneable`接口的对象可以通过`clone()`方法进行浅复制,深复制需要自定义...
6. **缓存策略**:LRU(Least Recently Used)和LFU(Least Frequently Used)是最常用的缓存淘汰策略,用于优化内存使用。Java的`LinkedHashMap`就支持LRU策略。 7. **哈希算法**:MD5、SHA系列等哈希算法用于生成...