`
tonysmith
  • 浏览: 175735 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

HashMap缓存 Java实现

阅读更多

一般是采用HashMap来作为缓存的存储结构,但Java没有全局变量的概念,怎么保证缓存中的数据不被垃圾回收器收集,而造成数据的丢失呢?  

   

  请问一般的缓存是怎样保证数据的独立性(即脱离垃圾回收器)的?  

做一个判断,HashMap取不到值就到数据库里再读数据

 

系统第一次起来,或是第一次取数据后将数据  

  保存在一个static的Map里即可,凡是缓存的东西  

  总是经常用到的,所以一般是保持强引用,GC应该  

  会清理

(1)jive[Jive 是一个开放的 Java 源代码项目。其目标是建设一个开放结构的,强壮的,易于扩展的基于 JSP 的 论坛。]里面,是使用单态模式维护一个工厂实例,做为程序的入口,就是无论有多少个在线用户,都只要从该入口进入.在这个工厂实例中,有一个缓存管理类(DatabaseCacheManager)变量,这个类有几个公有变量,如DbUserCache(就是缓存访问过的用户)等.当要获取一个user的用户信息时,它就会先在DbUserCache中查找,如果找不到,那么就从数据库中读取,再放入缓存中.  

     

singleton模式:  

  public   class   DataCache   {  

          protected   static   final   HashMap   map   =   new   HashMap();   //   Cache   table  

   

          private   static   final   Object   lock   =   new   Object();  

          private   DataCache()   {}   //   防止在外部实例化  

          public   static   Object   getData(Object   key)   {  

                  Object   v   =   map.get(key);  

                  if   (v   ==   null)   {  

                        synchronized(lock)   {    

                        v   =   map.get(key);     //   Check   again   to   avoid   re-load  

                        if   (v   ==   null)   loadDataSource(key);    

                        v   =   map.get(key);   //   retrieves   data.  

                        }  

   

                  }  

   

                  return   v;  

                   

          }  

          /*  

            *Load   data   from   data   source.  

            */  

          protected   static   synchronized   void   loadDataSource(Object   key)   {  

                  Object   value   =   new   Object();   //   Load   value   from   data   source  

                  map.put(key,   value);  

          }  

  }

分享到:
评论

相关推荐

    HASHMAP缓存.txt

    标题“HASHMAP缓存.txt”暗示了文档主要关注的是Java编程语言中HashMap作为缓存机制的应用,而描述中的重复文本可能是误操作,实际上并未提供额外的信息。标签同样重复,进一步确认了主题为HashMap缓存。接下来的...

    Java利用ConcurrentHashMap实现本地缓存demo

    Java利用ConcurrentHashMap实现本地缓存demo; 基本功能有缓存有效期、缓存最大数、缓存存入记录、清理线程、过期算法删除缓存、LRU算法删除、获取缓存值等功能。 复制到本地项目的时候,记得改包路径哦~

    java Map实现的cache manager,定时清除缓存里面的值

    java Map实现的cache manager,定时清除缓存里面的值,使数据一致保持最新

    java map 实现缓存技术

    在Java中,我们通常使用HashMap、ConcurrentHashMap等Map实现来创建缓存。这些数据结构具有O(1)的平均时间复杂度,能够快速地查找和存储元素,非常适合缓存应用场景。 在给定的描述中提到了"毫秒计算",这涉及到...

    高速缓存实现源码

    在Java中,高速缓存的实现通常依赖于数据结构如哈希表(HashMap)或并发容器如ConcurrentHashMap。哈希表提供快速的查找和插入操作,而ConcurrentHashMap则为多线程环境提供了线程安全的访问。在这个项目中,对比了...

    java使用hashMap缓存保存数据的方法

    本文将详细介绍如何在Java中使用HashMap来实现数据缓存,并通过实例分析其读写操作。 首先,我们创建一个静态的HashMap实例来存储数据,例如: ```java private static final HashMap, XXX> sCache = new HashMap,...

    Java缓存技术的使用实例

    它很可能包含了一个简单的Java缓存实现,可能使用了HashMap或者其他自定义的数据结构来模拟缓存操作。这样的实例通常会包括以下组件: 1. **缓存接口**:定义缓存的基本操作,如put、get、remove和clear。 2. **...

    Java 中常用缓存Cache机制的实现

    在 Java 中,缓存机制的实现可以通过各种方式,例如使用 HashMap、TreeMap、LinkedHashMap 等数据结构来存储缓存对象。下面是一个简单的缓存管理器的实现: CacheManager 类的实现: CacheManager 类是一个简单...

    java实现上传文件类型检测过程解析

    "Java 实现上传文件类型检测过程解析" Java 实现上传文件类型检测过程解析是指在进行文件上传时,对上传文件的格式进行控制,以防止黑客将病毒脚本上传。单纯的将文件名的类型进行截取的方式非常容易遭到破解,...

    java实现cache小实例

    下面是一个简单的Java缓存实现,使用HashMap作为基础存储结构,并实现了LRU淘汰策略: ```java import java.util.HashMap; import java.util.Map; public class SimpleCache, V> { private final int capacity; ...

    Java实现LRU算法.zip

    总的来说,Java实现LRU算法的关键在于利用数据结构特性来跟踪页面的使用频率,通过淘汰最近最少使用的页面来优化内存使用。通过学习和理解LRU算法的实现,我们可以更好地理解和处理内存限制问题,提高系统的性能和...

    java课件-HashMap

    HashMap是Java编程语言中一种非常重要的数据结构,它...总的来说,HashMap是Java编程中不可或缺的数据结构,广泛应用于各种场景,如缓存、配置管理等。理解其工作原理和使用注意事项,对于编写高效的Java代码至关重要。

    LRU算法 java实现

    在Java中,我们可以使用数据结构如HashMap和LinkedList来实现LRU缓存。 首先,我们需要一个双向链表来保存缓存中的元素,链表的节点包含元素的键值对以及前后节点的引用。链表的顺序反映了元素的使用情况,最近使用...

    redis缓存java类使用实例

    在Java应用中,我们可以利用Jedis库来与Redis进行交互,实现数据的存取。下面将详细介绍如何在Java中使用Redis缓存,特别是针对Map、List和Set的使用实例。 首先,你需要在项目中引入Jedis的依赖,如果你使用的是...

    HashMap总结

    1. 缓存机制:HashMap 可以用来实现缓存机制,例如缓存用户信息、缓存查询结果等。 2. 配置文件解析:HashMap 可以用来解析配置文件,例如将配置文件的键值对存储在 HashMap 中。 3. 数据统计:HashMap 可以用来统计...

    java 创建字符串缓存类

    同时,`Java.jpg`可能是一个相关的图片,可能展示了字符串缓存类在内存中的工作原理或者线程安全的实现细节。 总结一下,Java中创建字符串缓存类的主要目的是减少内存消耗和提高性能,特别是在频繁字符串操作的场景...

    JAVA的缓存应用介绍

    基本缓存的使用可能涉及简单的数据结构如HashMap或ConcurrentHashMap,用于临时存储常用的数据。随着应用复杂性的增加,开发者可能会转向使用专业的缓存框架,如 Ehcache、Guava Cache 或 Redis,这些框架提供更高级...

    Java实现简单LRU缓存机制的方法

    Java实现简单LRU缓存机制的方法 Java实现简单LRU缓存机制的方法是指通过Java语言实现的一种缓存机制,该机制可以根据最近最少使用的原则淘汰缓存中的数据。缓存机制的实现主要是通过哈希表和双向链表来实现的。 ...

    LRU缓存HashMap+双向链表

    LRU缓存HashMap+双向链表实现,java版本,导入即用

    Java cache 实现

    在这里,我们使用 Java 实现了一个简单的缓存系统,使用 HashMap 来存储缓存数据,并提供了获取、设置、删除缓存数据的方法。 缓存机制的作用 缓存机制的主要作用是将经常访问的数据存储在内存中,以提高应用程序...

Global site tag (gtag.js) - Google Analytics