`
xiaoan2345
  • 浏览: 13325 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用单例模式和Map实现Java缓存的工作原理

    博客分类:
  • Java
阅读更多

       关于为什么要采用缓存技术,在网上一搜一大堆,我在这方面就不罗嗦了,我今天主要是想讲讲如何通过单例模式来实现缓存技术。

       其实Java缓存技术的实现并不复杂,其关键步骤主要是建立一个Map集合类实现把缓存的内容保存到内存里面,只要服务器没有关闭缓存就不会被清除,除非人为清除,下面来看看我编写的代码:

新建一个类,用于编写相应的实体类

public class CacheManager {

 private static Map<String, Object> caches;
 
 private CacheManager() {}
 
 static {
  caches = new HashMap<String, Object>();
 }
 
 //用于保存缓存
 public static void addCache(String key, Object value) {
  caches.put(key, value);
 }
 
 //用于得到缓存
 public static Object getCache(String key) {
  return caches.get(key);
 }
 
 //用于清除缓存信息
 public static void clearCache() {
  caches.clear();
 }
 
 //用于清除指定的缓存信息
 public static void removeCache(String key) {
  caches.remove(key);
 }
}

 

下面是编写相应的测试类:

public class SearchArticleServlet extends HttpServlet {

 /**
  *
  */
 private static final long serialVersionUID = -1793489994204808165L;
 
 Dao dao = new Dao();

 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  response.setContentType("text/html; charset=utf-8");
  
  List<Dao> article = new ArrayList<Dao>();
  
  //首先判断在HashMap中是否存在相应的值,如果没有则从数据库中读取
  article = CacheManager.getCache("t") == null ? null : (List<Dao>) CacheManager.getCache("t");
  
  if (article == null) {
   article = DaoFactory.getDaoInstance().search(dao);
   CacheManager.addCache("t", article);
  }
  
  request.setAttribute("article", article);
  request.getRequestDispatcher("main.jsp").forward(request, response);
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

  doPost(request, response);
 }

}

 

这样就完成了缓存,这是一个简单的Java缓存的实例,至于相关的连接数据库这些语句,我想如果能学习到缓存这里的,这些应该都没有多大的问题

分享到:
评论

相关推荐

    Java单例模式.pdf

    除了上述三种单例模式外,在Java中还可以使用枚举类型来实现单例模式。Java枚举的特性保证了枚举类型的单例性,因为枚举实例是类加载时创建的,且Java虚拟机保证不会创建重复的实例。 单例模式在很多情况下都是很...

    单例模式的要点及模式

    单例模式是软件设计模式中的一种经典模式,其核心思想在于限制类的实例化过程,确保在整个应用程序中只有一个实例存在。这种模式常用于管理共享资源,例如数据库连接、线程池或者全局配置等,以避免资源浪费和状态...

    java单例设计模式的好处

    在Java中,单例模式通常用于控制特定类的实例化过程,以达到节省系统资源、控制并发访问和实现数据共享等目的。 1. **节省内存**:由于单例模式限制了类的实例只有一个,所以在内存中只会创建一次,减少了内存的...

    Java缓存Map设置过期时间实现解析

    使用Java缓存Map设置过期时间可以解决项目中需要设置过期时间的K,V存储问题,提高了系统的性能和安全性。 6. Java缓存Map设置过期时间实现解析的应用场景: Java缓存Map设置过期时间实现解析可以应用于各种需要设置...

    Android单例模式

    单例模式适用于那些需要频繁访问但只需一个实例来管理资源的情况,例如线程池、缓存、日志对象、对话框等。在Android开发中,单例模式也经常被用来管理全局状态或者提供共享资源。 #### 二、实现方式 单例模式的...

    Java单例模式、饥饿模式代码实例

    Java中的单例模式是一种设计模式,它保证一个类只有一个实例,并提供一个全局访问点。这样做的目的是为了控制类的实例化过程,节省系统资源,同时确保在任何情况下,对单例对象的操作都是线程安全的。单例模式常用于...

    java面试题.docx

    Java 面试题大全 Java 是一门广泛使用的编程语言,拥有庞大...答:Java 中的 Redis 是指使用 Redis 来实现高速缓存和数据存储。 本文仅仅是 Java 面试题大全的一部分,旨在帮助开发者更好地准备面试和提高技术能力。

    java设计模式:多例模式.docx

    在某些场景下,多例模式比单例模式更合适,因为它提供了更多的灵活性,比如在缓存或者资源池的实现中。 在Java设计模式中,多例模式常常结合缓存一起使用,以提高程序性能。缓存是一种常用的设计策略,它存储了先前...

    java设计模式:多例模式.pdf

    多例模式是设计模式中的一种,它在Java中是一种扩展了单例模式的概念。单例模式确保一个类只有一个实例,并提供了全局访问点。而多例模式则允许一个类有多个实例,但同样提供了全局访问点,并且这些实例可以通过特定...

    计算机后端-Java-图解java设计模式笔记.zip

    在Java集合框架中,`List`, `Set`, `Map`接口与其实现类如`ArrayList`, `HashSet`, `HashMap`的关系就是桥接模式的体现。 11. **组合模式**:允许你将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式...

    JAVA设计模式

    Java的`java.util.Observable`和`java.util.Observer`接口实现了这一模式。 12. 模板方法模式(Template Method):模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。在Java中,很多框架如...

    HASHMAP缓存.txt

    综上所述,《HASHMAP缓存.txt》文档不仅介绍了HashMap作为缓存的基本概念和实现方式,还涉及到了单例模式、线程安全、性能优化等高级主题,为开发者提供了丰富的技术细节和实用建议。在实际开发中,合理运用这些知识...

    java开发设计模式

    在Java集合框架中,`List`, `Set`, `Map`接口与其实现类之间的关系就是桥接模式的体现。 10. **组合模式**:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合模式使得用户可以一致地处理单个对象和...

    多例模式学习笔记

    在软件设计模式中,多例模式(Multiton)是一种扩展了单例模式的设计模式。单例模式确保一个类只有一个实例,而多例模式则允许一个类有多个实例,但通常数量是有限的。这种模式常用于资源管理,如数据库连接池、...

    java面试宝典2017版

    【Java面试宝典2017版】是针对java软件开发职位面试精心编纂的一份指南,旨在帮助没有实际工作经验的求职者在笔试和面试中脱颖而出。这份资料全面覆盖了Java编程的基础到高级知识,包括但不限于语法、面向对象设计、...

Global site tag (gtag.js) - Google Analytics