前段时间写的ConnectionPool已经可用运行了,现在转向CachePool,偶还是菜鸟所以只是利用了j2se的api简单的实现了一个对象缓存器,顺便希望大家能够说说缓存器的设计思路(暂时不考虑分布式应用)。谢谢大家了!
这是缓存器核心类。
package cc.vicp.eden.cache;
import java.util.*;
public class CachePool {
private HashMap<Object, Object> pool;
private LinkedList list;
private int capacity;
public CachePool(int size) {
pool = new HashMap<Object, Object>();
list = new LinkedList<Object>();
this.capacity = size;
}
public synchronized Object get(Object key) {
Object value = pool.get(key);
if(value != null) {
list.remove(key);
list.addFirst(key);
}
return value;
}
public synchronized void put(Object key, Object value) {
Object obj = null;
if(pool.size() >= capacity) {
obj = list.removeLast();
pool.remove(obj);
}
obj = pool.get(key);
if(! value.equals(obj)) {
pool.remove(key);
}
pool.put(key, value);
list.remove(key);
list.addFirst(key);
}
public synchronized Object remove(Object key) {
Object value = pool.get(key);
list.remove(key);
return value;
}
public synchronized void clear() {
pool.clear();
list.clear();
}
}
分享到:
相关推荐
给一个方法加一个缓存特性,那这个方法就会进行缓存。 这个也是网上说的面向切面编程AOP。 AOP的概念也很好理解,跟中间件差不多,说白了,就是我可以任意地在方法的前面或后面添加代码,这很适合用于缓存、日志等...
自己实现一个内存缓存涉及到许多关键点,包括数据结构的选择、缓存淘汰策略、线程安全以及内存管理等。下面将详细讨论这些知识点。 首先,我们要考虑数据结构的选择。在内存缓存中,最常见的数据结构是哈希表(Hash...
在Android应用开发中,缓存技术是至关重要的,它能够提高应用性能,减少网络请求,提升用户体验。...通过分析提供的资源文件,开发者可以更好地理解和学习这一过程,从而在自己的项目中实现高效的缓存管理。
参考链接提供的CSDN博客文章《[Spring简单缓存实现](http://blog.csdn.net/maoyeqiu/article/details/50238035)》中,作者详细介绍了如何在Spring项目中实现缓存,包括配置、注解使用以及注意事项,是一个很好的学习...
本文档主要介绍了使用 Redis 实现页面缓存的方法,包括缓存 key 的设计、缓存实现的思路和代码实现。 页面缓存的目的:页面缓存的主要目的是为了提高网站的访问速度和用户体验。通过将页面缓存到 Redis 中,可以...
接下来,我们将探讨如何用AS3实现对象缓存池。首先,我们需要定义一个基类或接口,作为池中对象的模板。这个基类通常会包含一些通用的方法和属性,使得所有池中的对象具有相同的结构。然后,我们可以创建一个专门的...
通过这个简单的缓存类,开发者可以轻松地在自己的PHP应用程序中实现缓存功能,无需依赖第三方库。然而,值得注意的是,虽然这样的实现对于小型项目可能是足够的,但在高并发或大规模应用中,可能需要更强大且性能...
分布式缓存作为一种在多节点之间共享和分布数据的存储方式,是现代大型分布式系统中不可或缺的一个组件。它能够有效降低数据库的读写压力,加速数据访问速度,提高系统的响应性能。在分布式缓存的实现方式中,基于...
对象缓存
Java对象缓存系统的实现涉及到了内存管理、数据结构以及分布式通信等多个领域。本项目实现了LRU(Least Recently Used)算法,这是一种常用的页面替换策略,用于决定在内存空间有限的情况下,哪些对象应该被移出缓存...
总的来说,Java Map提供了一种简单而有效的方式实现缓存技术。开发者可以根据具体需求选择合适的Map实现,并结合各种策略来管理和维护缓存,以提升系统的响应速度和效率。在实际应用中,还可以考虑使用第三方库如...
Java利用ConcurrentHashMap实现本地缓存demo; 基本功能有缓存有效期、缓存最大数、缓存存入记录、清理线程、过期算法删除缓存、LRU算法删除、获取缓存值等功能。 复制到本地项目的时候,记得改包路径哦~
Ehcache 是一款广泛使用的开源Java缓存解决方案,它可以用于存储页面、对象和数据,以提升应用程序的性能和响应速度。Ehcache 提供了内存和磁盘存储的支持,并且包含多种淘汰策略,如LRU(Least Recently Used)、...
本文将深入探讨如何实现Android app的缓存清理,并基于提供的"CacheClear"压缩包文件,讲解如何封装一个获取和清理缓存的工具类。 首先,了解Android缓存的作用。缓存是为了提高数据读取速度,将常用但加载较慢的...
例如,可以自定义一个基于方法参数和返回值的键生成器,确保缓存键的唯一性。 5. **测试与监控** 使用`TestCache`类进行测试,确保缓存逻辑正确工作。同时,可以使用Ehcache提供的管理工具或监控界面,实时查看...
本项目通过源码实现了一个简单的高速缓存,展示了其在多线程并发环境下的性能优势。 在Java中,高速缓存的实现通常依赖于数据结构如哈希表(HashMap)或并发容器如ConcurrentHashMap。哈希表提供快速的查找和插入...
在IT行业中,Google Guava库是一个非常强大的工具集,它为Java开发人员提供了一系列实用的集合、缓存、并发和I/O工具。本篇文章将详细探讨如何利用Guava库实现定时缓存功能,以提高应用的性能和效率。 首先,Guava...
CacheManager 类是一个简单的缓存管理器,它使用 HashMap 来存储缓存对象。 CacheManager 类提供了多种方法来操作缓存,例如获取缓存对象、设置缓存对象、清除缓存对象等。 1. 获取缓存对象: CacheManager 类提供...