OSCache缓存监控实现

OSCache缓存技术(6)【实例】 NULL 博文链接:https://baobeituping.iteye.com/blog/748346 立即下载

最近一个项目用到OsCache的页面片段缓存,google了一下居然没有找到OsCache的监控工具(list all keys from cache),于是大略读了一下OSCache-2.4.1的源码,发现Cache.java类的cacheMap定义成了私有变量,如下:

 

    /** 
        * The actual cache map. This is where the cached objects are held. 
        */  
       private AbstractConcurrentReadCache cacheMap = null;  


所以只能用反射机制暴力破解了(按照Sun公司的JVM规范是许可的^_^),主要代码如下:


1) OsCacheUtil.java

 

    /** 
          * 通过反射机制获取Cache私有成员变量cacheMap, 2012/10/8, by jeffsang 
          * @return 
          */  
         public static AbstractConcurrentReadCache getCacheMap(ServletContext ctx) {  
                //获取Cache对象实例  
               Cache cache = ServletCacheAdministrator.getInstance(ctx).getAppScopeCache(ctx);  
                 
                //通过反射机制获取Cache私有成员变量cacheMap  
               AbstractConcurrentReadCache cacheMap = null;  
                try {  
                Field field = Cache.class.getDeclaredField("cacheMap" );  
                field.setAccessible( true);  
                cacheMap = (AbstractConcurrentReadCache) field.get(cache);  
                field.setAccessible( false);  
            }  
            catch (Exception e) {  
                log.warn( "can't acquire oscache Cache.cacheMap! " , e);  
            }  
                return cacheMap;  
         }  
      
      
         /** 
          * 获取ServletCache的全部Application Scope的cache, 2012/10/8, by jeffsang 
          * @return 
          */  
         public static Map getAppScopeCaches(ServletContext ctx) {  
               Map map = new HashMap();  
      
               //获取Cache对象实例  
               Cache cache = ServletCacheAdministrator.getInstance(ctx).getAppScopeCache(ctx);  
      
                //通过反射机制获取Cache私有成员变量cacheMap  
               AbstractConcurrentReadCache cacheMap = getCacheMap(ctx);  
                 
                 
                //返回包含在cacheMap中的Map关系的 Set视图。  
               @SuppressWarnings("unchecked")  
               Set> setEntry = cacheMap.entrySet();  
                 
                //使用Iterator遍历器  
                //Iterator> it = cacheMap.entrySet().iterator();  
                 
                //使用for遍历cacheMap中的entrySet  
                for (Map.Entry entry : setEntry) {  
                    String key = entry.getKey();  
                    Object value = cache.getFromCache(key);  
                      
                     //以下方法只能得到CacheEntry对象实例Id  
                     //Object value = entry.getValue();  
                      
                    map.put(key, value);  
               }  
      
                return map;  
         }  


2)  oscache_list.jsp

 

    <%@ page contentType="text/html; charset=UTF-8" %>  
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>  
    <%@ page import="java.util.*" %>  
    <%@ page import="com.lasun.util.OsCacheUtil" %>  
      
    <%  
    Map<String, Object> map = OsCacheUtil.getAppScopeCaches(request.getServletContext());  
    request.setAttribute("map", map);  
    %>  
      
    <table border="1">  
    <tr>  
        <th>No</th>  
        <th>Key</th>  
        <th>Value</th>  
    </tr>  
    <c:forEach var="entry" items="${map}" varStatus="status">  
    <tr>  
        <td>${status.index+1}</td>  
        <td>${entry.key}</td>  
        <td>${entry.value}</td>  
    </tr>  
    </c:forEach>  
    </table>  


小结:


本例子只实现ServletCache中的Application Scop的cache list功能;通过Listener或持久化也能实现监控。

 

避坑指南:为什么你的conda环境装不上Mamba?从CUDA到ABI的深度排查 本文深入解析conda环境中安装Mamba架构时常见的CUDA版本冲突、ABI不匹配等问题,提供从基础检查到深度排查的系统化解决方案。针对`causal-conv1d`和`mamba-ssm`安装失败场景,详细讲解PyTorch版本绑定、编译器工具链兼容性等关键技术要点,并给出预编译wheel选择、动态链接库配置等实用修复方案。 阅读详情

相关推荐

FICO F.27 Customer statement 打印

需求,定制化打印,替换标准的F.27打印 类似于采购订单的打印,但是略有不同,查阅资料之后步骤如下: T-code F.27 is SAP standard program to produce customer/vendor correspondence (letter). Correspondence Type is used to specify the related printing program and form for the particular correspondence. SAP

IamRunjiang的博客 1965

OsCache缓存监控刷新工具

OSCache是一套用Java编写的缓存框架(或者说解决方案),它主要用于页面缓存,Servlet缓存,或者其它任意的对象,且支持集群。 但是居然没有OsCache的监控工具,所以只能用反射机制暴力破解了! OsCacheUtil.java package com.fly.core; import java.lang.reflect.Field; import java.util.H...

爱码少年 00fly.online 的博客 2万+

ICG setup timing violation介绍?

门控时钟(clock gating)在RTL级电路设计过程中进行低功耗优化常用方法,能够有效降低动态功耗(翻转功耗)。Clock gating cell 可以由与门,与非门,或门或者或非门构成,但很容易产生Glitch。在实际使用中,一般用ICG(集成门控时钟单元)来完成clock gating。 下图展示了glitch的产生原因 在CTS时钟树综合的时候,ICG不会被看作sink,通常放置在source点附近,因此就会出现如上图这种结果。上图可以看出,在分析DFF到ICG的setup timing

m0_61003348的博客 9807

OSCache框架源码解析

OSCache是一个受到争议的开源缓存框架,OpenSymphony网站已经关闭(OpenSymphony可是诞生过Quartz、WebWork、SiteMesh和OGNL等数个非常有名的框架的)了,它也已经不维护了。在JavaEE的缓存框架领域,似乎已经是EhCache等其它支持分布式的缓存框架的天下了,OSCache垂垂老矣?但是OSCache的源代码依然值得一读,一度作为最常用的缓存框架,代...

四火专栏 330

Vue - 解决 Property or method “__v_isRef“ is not defined on the instance but referenced(浏览器控制台报错,代码没错)

vue,vue2控制台报错,vue报错Propertyormethod"__v_isRef"isnotdefinedontheinstancebutreferenced,vue代码没问题,但是报错Propertyormethod"__v_isRef"isnotdefinedontheinstancebutreferenced,vue2如何解决报错,vue怎么解决报错问题,vue2Propertyormethod"__v_isRef"isnotdefi

🏆 前端领域优质创作者 4501

7、布尔网络的基础定义

本文介绍了布尔网络的基础定义及其在系统生物学中的应用。布尔网络是一种描述复杂系统动态行为的数学模型,由布尔变量和布尔函数组成,能够模拟生物系统中基因调控、信号传导和细胞代谢等过程。文章详细阐述了布尔网络的基本结构、动力学特征(如状态转移图和吸引子),以及其在生物建模中的重要价值,并探讨了优化和简化技术(如Backward Boolean Equivalence)如何提升其计算效率。

yhn45678901的博客 262

oscache源代码阅读(二) -- 从缓存中读取pojo

现在开始要介绍的从缓存中读取数据的过程,还是在GeneralCacheAdministrator#getFromCache(),这里有3个同名方法,还是找一个参数最多的: [code="java"] /** * Get an object from the cache * * @param key * The key entered by th...

臭美 235

Claude Code 错误解决方案 使用策略拒绝 Usage Policy refusal

摘要:本文分析了Claude Code API请求被拒绝的问题,当违反Usage Policy时会显示错误提示。根因包括请求内容违规、模型敏感度差异或历史消息影响。解决方案包括修改请求措辞、切换至Sonnet 4.5模型或开启新会话。文章详细追踪了错误链路,提供了核心代码分析,并给出验证方法和最佳实践建议,帮助用户避免触发API拒绝机制。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 973

IDEA: 遇到问题Error during artifact deployment. See server log for details.

IDEA: 遇到问题Error during artifact deployment. See server log for details. 正常情况下都是war出错 重新配置一下Project Structure和Deployment的内容 这次我的错误其实是因为Tomcat的lib下存在了两个不同版本的servlet-api,导致出现此问题,保留其中tomcat应该使用的servlet-api,删除不同于应该使用的其他版本。 报此错误还有很多其他的问题,由于我的tomcat控制台乱码(我不想改

weixin_46454824的博客 1557

利用dpabi和restplus提取ROI灰质体积学习笔记

目录前言一、数据准备二、利用dpabi提取ROI灰质体积三、restplus提取ROI灰质体积 前言 我利用SPM/CAT12进行灰质、白质、脑脊液分割之后分别已经得到各自的图像文件,在全脑水平已经做了统计分析。如果还想要进一步进行ROI的统计分析或者与量表等临床资料做相关分析,就需要提取ROI灰质体积。几个月没动过这数据了,突然心血来潮想学一下如何提取ROI灰质体积,以此篇博客记录我的提取ROI灰质体积学习过程。提取ROI灰质体积的方法及软件有许多种,本人尝试了dpabi和restplus。 一、数据准备

weixin_52073820的博客 9224

黑猫带你学UFS协议第1篇:全网最全UFS协议中文详讲,这份学习框架图,你值得拥有!!!(持续更新中...)

本文由黑猫学长撰写,深入解析UFS协议,覆盖从基础概念到高级特性的全方位教程。适合存储芯片行业从业者和嵌入式开发者,旨在帮助读者快速掌握UFS协议,适用于高端智能手机、平板等智能设备。预计15万字,涵盖UFS 3.1协议,讲解UFS协议栈、物理层、链路层、传输层等内容。

黑猫奥利奥的博客 3692

MyBatis3 配置OSCache

配置步骤很简单,大概分为: 1、

nano-dhh 1493

js逆向-逆向部分技巧总结

js逆向-逆向部分技巧总结

Deng872347348的博客 2133

oscache、ehcache缓存内容存入硬盘的方法

1.oscache将缓存内容存入硬盘: cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.DiskPersistenceListener cache.persistence.overflow.only=false cache.path=d\:\\temp\\cache *cache.persis...

dawuafang 535

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java oscache 缓存,单机缓存JCS Ehcache OSCache Cache4J测试比较

最近兵马俑terracotta收购了EhCache,从而将单机缓存能够无缝拓展到分布式缓存,形成内存计算矩阵,所以,从可伸缩性拓展方面,目前EhCache无疑已经遥遥领先,最近一篇文章对单机环境下缓存产品进行了一次测试比较:缓存产品名称和版本 GetPutRemoveT GetPutRemove Get-----------------------------------------------...

weixin_42366533的博客 194

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Oscache与memcached区别

缓存在互联网平台大量使用以提高性能,降低数据库负担,更快的响应用户的请求。原因主要是缓存的使用场景是性能要求高,实时性或准确性要求稍差。 其他提高性能手段: 1,数据库方面改革,效果最明显。如主从服务器。数据库水平和垂直拆分(一般用户表不能拆分)。数据库索引,全文索引。数据库是否用事务表,慢查询监控 2, Lucene,蜘蛛的使用,利用文件索引减少查询数据库 3, Web服务器或应用服务器

jingtingtiantanghai的专栏 629

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

缓存技术讨论

Oscache与memcached  前言 缓存在互联网平台大量使用以提高性能,降低数据库负担,更快的响应用户的请求。原因主要是缓存的使用场景是性能要求高,实时性或准确性要求稍差。 其他提高性能手段: 1, 数据库方面改革,效果最明显。如主从服务器。数据库水平和垂直拆分(一般用户表不能拆分)。数据库索引,全文索引。数据库是否用事务表,慢查询监控 2, Lucene,蜘蛛的使用,利用文件...

xiang_xun_xue的博客 279

粗浅看 缓存技术

关于缓存技术的介绍基本上就是个人的理解,其中,在很早以前个人对于缓存的理解呢,就是你的“速度”赶不上我的“速度”,我需要找个树林歇一会儿等等你,就是缓存嘛。了解其基本原理还是很简单的,大家有什么补充的,欢迎交流。

吴士龙 2723
上一篇: 利用java迭代器Itetator遍历并删除HashMap中的元素问题
下一篇: java synchronized详解
Johnny__Tang
博客等级 码龄18年 9粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值