缓存设计

/* 
* JBoss, Home of Professional Open Source 
* Copyright 2005, JBoss Inc., and individual contributors as indicated 
* by the @authors tag. See the copyright.txt in the distribution for a 
* full listing of individual contributors. 

* This is free software; you can redistribute it and/or modify it 
* under the terms of the GNU Lesser General Public License as 
* published by the Free Software Foundation; either version 2.1 of 
* the License, or (at your option) any later version. 

* This software is distributed in the hope that it will be useful, 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 
* Lesser General Public License for more details. 

* You should have received a copy of the GNU Lesser General Public 
* License along with this software; if not, write to the Free 
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 
* 02110-1301 USA, or see the FSF site: http://www.fsf.org. 
*/ 
package org.jbpm.pvm.internal.repository; 

import java.util.HashMap; 
import java.util.Map; 

/** 
* @author Tom Baeyens 
*/ 
public class RepositoryCacheImpl implements RepositoryCache { 
  
  Map<String, Map<String, Object>> deployments = new HashMap<String, Map<String,Object>>(); 

  public Object get(String deploymentId, String objectName) { 
    Map<String, Object> deploymentObjects = deployments.get(deploymentId); 
    if (deploymentObjects==null) { 
      return null; 
    } 
    return deploymentObjects.get(objectName); 
  } 

  public void set(String deploymentId, Map<String, Object> objects) { 
    if (objects==null) { 
      deployments.put(deploymentId, null); 
    } else { 
      Map<String, Object> deploymentObjects = deployments.get(deploymentId); 
      if (deploymentObjects==null) { 
        deploymentObjects = new HashMap<String, Object>(); 
        deployments.put(deploymentId, deploymentObjects); 
      } 
      for (String objectName: objects.keySet()) { 
        Object object = objects.get(objectName); 
        deploymentObjects.put(objectName, object); 
      } 
    } 
  } 

  public void remove(String deploymentDbid) { 
    if (deployments!=null) { 
      deployments.remove(deploymentDbid); 
    } 
  } 

  public void clear() { 
    deployments = new HashMap<String, Map<String,Object>>(); 
  } 

时间: 2024-09-20 00:22:22

缓存设计的相关文章

关于.Net开发下的分布式缓存设计

最近拜读了代振军同学写的关于.net开发下的Discuz!NT的缓存设计的一篇文 章Discuz!NT 缓存设计简析 [原创],颇有些想法,姑且写在这里让大家拍砖吧 .;) 缓存真是个好东西,在大型的系统中可以有效地提升系统的速度,此乃废话 就不多说了,在.Net 平台下面我把缓存从功用大致分为两类,数据对象缓存和 页面输出缓存. 对于数据缓存来讲是由System.Web.Caching.Cache这个类来实现 ,可以从上下文对象Context.Cache 来获取这个对象的引用.而页面/控件输出

.NET 缓存设计的使用说明_实用技巧

关于缓存的设计1.什么情况下用缓存 缓存是提高应用程序性能的最好方法之一.运用缓存可以优化数据查询,避免不必要的网络数据回传,和避免执行不必要的完全相同的数据处理逻辑.在实现缓存的时候我们要确定什么时候装入缓存数据.用异步装入缓存或用批处理方式来避免出现客户端数据延迟.一般来说在一定时间内请求了相同的业务逻辑而没有变更的话,可以采用缓存来设计.数据请求频繁的的请求不适合采用缓存,如论坛的回复,但是论坛的主题是可以采用缓存设计的. 2.缓存设计的步骤确定缓存数据结构:即设计中哪些数据用到了缓存,设

安卓应用开发-安卓开发当中什么情况下需要缓存设计

问题描述 安卓开发当中什么情况下需要缓存设计 安卓开发当中什么情况下需要缓存设计 需要用到什么类的什么方法 解决方案 Android自带的缓存LruCache 解决方案二: 任何设计都要考虑到缓存设计,为了减少访问量,提高响应速度

CYQ.Data V5 分布式自动化缓存设计介绍

前方: 其实完成这个功能之前,我就在思考:是先把想法写了来,和大伙讨论讨论后再实现,还是实现后再写文论述自己的思维. 忽然脑后传来一个声音说:你发文后会进入发呆阶段. 所以还是静下心,让我轻轻地把代码撸完再说. 最近这几天,自己在大脑里演练过各种技术难点,解决方案,推敲了各种该解决的问题,觉的差不多了,才决定撸码. 忽然发觉,原来代码是可以写在大脑里的. 要是你看到一个员工坐着2天没写一行代码,说明人家是高手,正在大脑编程. 好,不扯,回正文! 传统ORM的二级缓存为何失效? 有些ORM会提供:

CYQ.Data V5 分布式自动化缓存设计介绍(二)

CYQ.Data V5 分布式自动化缓存设计介绍(二) 前言: 最近一段时间,开始了<IT连>创业,所以精力和写的文章多数是在分享创业的过程. 而关于本人三大框架CYQ.Data.Aries.Taurus.MVC的相关文章,基本都很少写了. 但框架的维护升级,还是时不时的在进行中的,这点从开源的Github上的代码提交时间上就可以看出来了. 毕竟<IT连>的后台WebAPI,用的是Taurus.MVC,后台系统管理用的是Aries. 不过今天,就不写创业相关的文章了,先分享篇技术类

一起谈.NET技术,.Net下的分布式缓存--从Discuz!NT的缓存设计谈起

最近拜读了代振军同学写的关于Discuz!NT的缓存设计的一篇文章<Discuz!NT 缓存设计简析 [原创]>,颇有些想法,姑且写在这里让大家拍砖吧. 缓存真是个好东西,在大型的系统中可以有效地提升系统的速度,此乃废话就不多说了,在.Net 平台下面我把缓存从功用大致分为两类,数据对象缓存和页面输出缓存. 对于数据缓存来讲是由System.Web.Caching.Cache这个类来实现,可以从上下文对象Context.Cache 来获取这个对象的引用.而页面/控件输出缓存则是由.Net环境在

.Net下的分布式缓存--从Discuz!NT的缓存设计谈起

最近拜读了代振军同学写的关于Discuz!NT的缓存设计的一篇文章<Discuz!NT 缓存设计简析 [原创]>,颇有些想法,姑且写在这里让大家拍砖吧. 缓存真是个好东西,在大型的系统中可以有效地提升系统的速度,此乃废话就不多说了,在.Net 平台下面我把缓存从功用大致分为两类,数据对象缓存和页面输出缓存. 对于数据缓存来讲是由System.Web.Caching.Cache这个类来实现,可以从上下文对象Context.Cache 来获取这个对象的引用.而页面/控件输出缓存则是由.Net环境在

大型web系统数据缓存设计

1. 前言 在高访问量的web系统中,缓存几乎是离不开的:但是一个适当.高效的缓存方案设计却并不容易:所以接下来将讨论一下应用系统缓存的设计方面应该注意哪些东西,包括缓存的选型.常见缓存系统的特点和数据指标.缓存对象结构设计和失效策略以及缓存对象的压缩等等,以期让有需求的同学尤其是初学者能够快速.系统的了解相关知识. 2. 数据库的瓶颈 2.1 数据量 关系型数据库的数据量是比较小的,以我们常用的MySQL为例,单表数据条数一般应该控制在2000w以内,如果业务很复杂的话,可能还要低一些.即便是

缓存设计学习笔记

背景 最近在< redis 开发与运维>这是在看11章时候记得笔记 存在和合理性 缓存到处都是啊 先放个最简单的图, 这里面每一层都可以有缓存 client 缓存 最常见的浏览器的http缓存. 还有app一般也加缓存,比如陌陌,这么大活跃的情况下,不缓存服务端鸭梨太大,"更多帧"的菜单就是客户端缓存了的,每15分钟才会去刷新一次 web server 最常见的nginx 对不常更新的静态资源可以在location 段里配expire来设置缓存时间: 还有nginx作为反向

LeetCode: LRU Cache 最近最少使用算法 缓存设计

设计并实现最近最久未使用(Least Recently Used)缓存.   题目描述: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set. get(key) - Get the value (will always be positive) of the key if the key