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

java实现简单的缓存机制原理[回钦波原创]

阅读更多

package com.qinbo.hui;
/*
  设计思想来自-回钦波(qq:444084929)
*/
public class CacheConfModel implements java.io.Serializable{
  private long beginTime;
  private boolean isForever = false;
  private int durableTime;
  public long getBeginTime() {
   return beginTime;
  }
  public void setBeginTime(long beginTime) {
   this.beginTime = beginTime;
  }
  public boolean isForever() {
   return isForever;
  }
  public void setForever(boolean isForever) {
   this.isForever = isForever;
  }
  public int getDurableTime() {
   return durableTime;
  }
  public void setDurableTime(int durableTime) {
   this.durableTime = durableTime;
  }
 }

 

 

 

 

package com.qinbo.hui;
import java.util.*;

import test4.CacheConfModel;
/*
  设计思想来自-回钦波(qq:444084929)
*/
public class CacheMgr {
 private static Map cacheMap = new HashMap();
 private static Map cacheConfMap = new HashMap();
 
 private CacheMgr(){
 
 }
 private static CacheMgr cm = null;
 public static CacheMgr getInstance(){
  if(cm==null){
   cm = new CacheMgr();
   Thread t = new ClearCache();
   t.start();
  }
  return cm;
 }
 /**
  * 增加缓存
  * @param key
  * @param value
  * @param ccm 缓存对象
  * @return
  */
 public  boolean addCache(Object key,Object value,CacheConfModel ccm){
  boolean flag = false;
  cacheMap.put(key, value);
  cacheConfMap.put(key, ccm);
 
  System.out.println("now addcache=="+cacheMap.size());
  return true;
 }
 /**
  * 删除缓存
  * @param key
  * @return
  */
 public  boolean removeCache(Object key){
  cacheMap.remove(key);
  cacheConfMap.remove(key);
 
  System.out.println("now removeCache=="+cacheMap.size());
 
  return true;
 }
 /**
  * 清除缓存的类
  * @author wanglj
  * 继承Thread线程类
  */
 private static class ClearCache extends Thread{
  public void run(){
   while(true){
    Set tempSet = new HashSet();
    Set set = cacheConfMap.keySet();
    Iterator it = set.iterator();
    while(it.hasNext()){
     Object key = it.next();
     CacheConfModel ccm = (CacheConfModel)cacheConfMap.get(key);
     //比较是否需要清除
     if(!ccm.isForever()){
      if((new Date().getTime()-ccm.getBeginTime())>= ccm.getDurableTime()*60*1000){
       //可以清除,先记录下来
       tempSet.add(key);
      }
     }
    }
    //真正清除
    Iterator tempIt = tempSet.iterator();
    while(tempIt.hasNext()){
     Object key = tempIt.next();
     cacheMap.remove(key);
     cacheConfMap.remove(key);
    
    }
    System.out.println("now thread================>"+cacheMap.size());
    //休息
    try {
     Thread.sleep(60*1000L);
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }
 }
}

 

 

分享到:
评论

相关推荐

    Java实现LRU缓存机制:深入解析与高效编码实践

    本文将详细介绍如何在Java中实现LRU缓存机制,包括其原理、实现方式以及编码实践。 LRU缓存机制是一种非常实用的缓存淘汰策略,它在很多应用场景中都有广泛的应用。在Java中实现LRU缓存,可以通过使用LinkedHashMap...

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

    Java 中常用缓存Cache机制的实现 缓存机制是指将程序或系统经常要调用的对象存在内存中,以便快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。缓存主要可分为二大类:一、通过文件...

    java map 实现缓存技术

    总的来说,Java Map提供了一种简单而有效的方式实现缓存技术。开发者可以根据具体需求选择合适的Map实现,并结合各种策略来管理和维护缓存,以提升系统的响应速度和效率。在实际应用中,还可以考虑使用第三方库如...

    Java利用ConcurrentHashMap实现本地缓存demo

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

    Java并发机制的底层实现原理.pdf

    Java并发机制的底层实现原理涉及到多个方面,包括了本地内存与线程安全的问题、volatile关键字的使用、synchronized关键字的原理以及Java并发在处理器层面是如何实现的。通过这些机制,Java能够有效地管理多线程环境...

    揭秘Java虚拟机-JVM设计原理与实现

    《揭秘Java虚拟机-JVM设计原理与实现》这本书深入探讨了Java虚拟机(JVM)的工作原理及其在Java编程中的核心地位。Java虚拟机是Java平台的核心组成部分,它负责执行字节码,为开发者提供了跨平台的运行环境。以下是...

    java 通过文件实现缓存

    java实现缓存可以通过读取本地文件的方式实现,改代码就是通过读取本地文件实现缓存的简单例子

    WebView深度学习之WebView的内存泄漏、漏洞以及缓存机制原理和解决方案.docx

    WebView 深度学习之 WebView 的内存泄漏、漏洞以及缓存机制原理和解决方案 WebView 是 Android 中一个非常重要的组件,它可以将网页加载到移动设备上,但同时它也存在一些问题,如内存泄漏、漏洞和缓存机制等。本文...

    java类加载机制原理与实现

    Java 类加载机制原理与实现 Java 类加载机制是 Java 虚拟机(JVM)的一部分,负责将编译后的 Java 字节码文件加载到 JVM 中,以便执行 Java 程序。类加载机制是 JVM 的核心组件之一,对 Java 程序的执行和安全性起...

    编译原理课程设计 java实现编译器

    《编译原理课程设计——Java实现C语言编译器》 在计算机科学领域,编译器扮演着至关重要的角色,它将高级编程语言转化为机器可理解的二进制代码。本项目聚焦于编译原理,以Java语言为工具,实现了C语言的编译器,...

    仿redis缓存Java版轻量级缓存组件LocalCache

    仿redis缓存Java版轻量级缓存组件LocalCache,基于JVM内存实现数据缓存及过期机制

    java之数据库缓存

    本文将深入探讨Java与数据库缓存的相关知识点,并结合给定的标签“源码”和“工具”,来讨论其在实际应用中的实现和作用。 首先,我们需要理解数据库缓存的基本原理。当应用程序请求数据时,如果这些数据已经在内存...

    snmp实现的原理以及用java实现源程序

    本篇文章详细介绍了SNMP的基本原理,特别是Trap机制的运作方式,并基于提供的代码片段分析了如何使用Java实现一个简单的SNMP代理,包括设置监听地址、创建SNMP实例、处理Trap消息等关键步骤。通过这样的实现,可以在...

    语法分析器java实现

    总的来说,构建一个Java实现的语法分析器涉及到对编译原理的深入理解,包括词法分析、语法分析的理论和技术,以及如何利用Java语言特性来实现这些概念。在这个过程中,开发者需要考虑如何有效地处理源代码的结构,...

    几个推荐算法的java实现

    本项目提供了一些推荐算法的Java实现,包括slopeone、SVD(奇异值分解)以及基于物品邻接的SVD(ItemNeighborSVD)。下面我们将详细探讨这些算法及其在Java中的实现。 1. **slopeone**: - Slope One是一种简单的...

    单点登录sso的原理与java实现详细讲解与示例(文档与源码)

    提供的源码可能包含了以上配置的实现,以及一个简单的Java Web应用示例,用于展示如何在实际项目中整合SSO。通过阅读和理解这些源码,你可以更好地掌握SSO的Java实现。 总结来说,SSO通过中央认证服务实现了跨应用...

    java实现课程表

    【Java实现课程表】是一个基于Java编程语言设计的特定于某个学校的教务系统课程表程序。这个程序的主要目的是为了展示如何使用Java技术来构建一个能够显示、管理个人课程的工具。由于不同学校的教务系统差异,这个...

    如何基于LoadingCache实现Java本地缓存

    Java 本地缓存基于 LoadingCache 实现详解 在 Java 中,缓存是一种提高应用程序性能的重要手段。 LoadingCache 是 Guava 库提供的一种缓存实现方式,本文将详细介绍如何基于 LoadingCache 实现 Java 本地缓存。 一...

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

    总的来说,Java中的缓存机制可以通过多种方式实现,包括但不限于简单的HashMap、使用并发容器、或者集成专业的缓存服务。理解这些缓存机制并选择合适的实现方式,对于优化Java应用的性能至关重要。

Global site tag (gtag.js) - Google Analytics