- 浏览: 224551 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (163)
- c++ (30)
- JavaScript (30)
- java (61)
- jQuery (3)
- ACE (2)
- oracle (9)
- jni (0)
- android (2)
- shell (1)
- myeclipse (1)
- Hibernate (1)
- linux (2)
- sqlserver (2)
- windows (2)
- sql (2)
- php (2)
- css (1)
- 学习 (1)
- ExtJs (1)
- RSS (1)
- 报文 (1)
- 跟我学Spring3 (6)
- dos (1)
- server (1)
- nosql (4)
- mongodb (6)
- photoshop (1)
- WebService (2)
- 股票 (1)
- OpenGL (3)
- Spring3MVC (6)
- 生活 (1)
- struts2 (1)
- 云盘 (1)
- blog (1)
- nosql nodejs mongoose (1)
最新评论
-
sblig:
配置分片: mongo -port 27017config ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
sblig:
配置路由:mongs: 40000 40100 40200sc ...
搭建Mongodb集群:分片Sharding+副本集Replica Set -
fuanyu:
哥们,干得漂亮。。
struts2 高危漏洞修复 -
sblig:
配置列子如下
<?xml version="1 ...
跟我学Spring3 学习笔记一 -
sblig:
307622798 写道博主你好,最近在看你的js系列文章,发 ...
JavaScript 学习笔记 二 对象的访问
缓存配置 ehcache.xml
<?xml version="1.0" encoding="UTF-8"?> <ehcache> <!-- 此处的路径可以自行定义,eg:“c://myapp//cache” ,即是自行定义的 <diskStore path="c://myapp//cache" />--> <!-- 而这个“java.io.tmpdir”则是window环境下的tmp ,寻找环境变量下的路 径方式:System.out.println(System.getProperty("java.io.tmpdir"));--> <diskStore path="java.io.tmpdir" /> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="12000" timeToLiveSeconds="12000" overflowToDisk="true" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU" /> <!-- maxElementsOnDisk="100000" 最大的磁盘存储数 而如果保持到缓存中的数据,超过了内存 缓存的最大数据,写入了一部分到磁盘中,此处的配置值不够大的话,就会导致取内存缓存中的 的数据时抛异常 --> <cache name="logBean" maxElementsInMemory="100" eternal="false" maxElementsOnDisk="100000000" overflowToDisk="true" timeToIdleSeconds="3600" timeToLiveSeconds="3600" memoryStoreEvictionPolicy="LFU" /> <cache name="logBean2" maxElementsInMemory="100" eternal="false" maxElementsOnDisk="100000000" overflowToDisk="true" timeToIdleSeconds="3600" timeToLiveSeconds="3600" memoryStoreEvictionPolicy="LFU" /> </ehcache>
实现部分
一、初始化 cache
private static CacheManager manager; static { init(); } private static void init() { String rootPath = ClassLoader.getSystemResource("").toString(); rootPath = rootPath.substring(5, rootPath.length()); String fileName = rootPath + "ehcache.xml"; manager = new CacheManager(fileName);// 引入写好的ehcache配置文件 }
二、 测试 aop 和 cache结合
public static void main(String[] args) { String time3 = DateUtil.getNowTimeStr("yyyy-MM-dd hh:mm:ss.sss"); for (int i = 0; i < 10000000; i++) { testJDKcache(); } String time4 = DateUtil.getNowTimeStr("yyyy-MM-dd hh:mm:ss.sss"); for (int i = 0; i < 10000000; i++) { testCGLIBcache(); } String time5 = DateUtil.getNowTimeStr("yyyy-MM-dd hh:mm:ss.sss"); } public static void testJDKcache() { Cache cache = manager.getCache("logBean"); IBusiness2 proxyBusiness; Element e = cache.get("testJDKcache"); if (e == null) { // 需要代理的接口,被代理类实现的多个接口都必须在这里定义 Class[] proxyInterface = new Class[] { IBusiness.class, IBusiness2.class }; // 构建AOP的Advice,这里需要歘如业务的实例 LogInvocationHandler handler = new LogInvocationHandler(new Business()); // 生成代理类的字节码加载器 ClassLoader classLoader = LogInvocationHandler.class.getClassLoader(); // 织入器,织入代码并生成代理类 proxyBusiness = (IBusiness2) Proxy.newProxyInstance( classLoader, proxyInterface, handler); Element element = new Element("testJDKcache", proxyBusiness); cache.put(element); cache.flush();// 将缓存中的数据写入磁盘中,但是只有在超出配置的最大内存缓存值时, //才会执行此操作,此处测试为100000才执行 } else { proxyBusiness = (IBusiness2)e.getValue(); } //使用代理类的实例调用方法 proxyBusiness.doSomeThing2(); ((IBusiness)proxyBusiness).doSomeThing(); } public static void testCGLIBcache(){ Cache cache = manager.getCache("logBean2"); IBusiness2 newBusiness; Element e = cache.get("testCGLIBcache"); if (e == null) { //创建一个织入器 Enhancer enhancer = new Enhancer(); //设置父类 enhancer.setSuperclass(Business.class); //设置需要织入的逻辑 enhancer.setCallback(new LogIntercept()); //使用织入器创建子类 newBusiness = (IBusiness2)enhancer.create(); Element element = new Element("testCGLIBcache", newBusiness); cache.put(element); cache.flush();// 将缓存中的数据写入磁盘中,但是只有在超出配置的最大内存缓存值时, //才会执行此操作,此处测试为100000才执行 } else { newBusiness = (IBusiness2)e.getValue(); } newBusiness.doSomeThing2(); ((IBusiness)newBusiness).doSomeThing(); }
三、测试结果
testJDKcache:6000
testCGLIBcache:4000
四、问题
1。 Cache cache = manager.getCache("logBean2"); 需要配置两个 不能一个对多个对象,有待找原因
2。 IBusiness 接口实现 extends Serializable 在cglib中可以提升很高
发表评论
-
[Java性能剖析]远程调试配置
2014-07-10 10:48 808一、服务器操作如下: 找到文件:apache-tomcat-5 ... -
[jdk工具命令]Java SE 文档
2014-07-10 10:43 778oracle java se documentation j ... -
[jdk命令工具]jconsole远程项目监控
2014-07-10 10:37 789入口:catalina.sh JAVA_OPTS=&quo ... -
[jvm参数]JVM简单配置
2014-07-10 10:35 1224-Xms256m -Xmx512M -XX:MaxPermSi ... -
struts2 高危漏洞修复
2013-07-23 10:30 11881. /** * 过滤器 */ ... -
转:调查服务器响应时间的利器 tcprstat
2012-11-16 13:50 1485http://rdc.taobao.com/blog/cs/? ... -
跟我学Spring3 学习笔记七 初始化与销毁
2012-10-18 16:45 2094最后 遗留一个问题, ... -
跟我学Spring3 学习笔记六 注入
2012-10-18 14:31 2232跟我学Spring3 学习笔 ... -
动态生成class
2012-10-16 11:17 1368ASM 进行动态生成class import org.obj ... -
FtpUtil ftp工具类 过滤文件名
2012-10-10 16:25 6946工具类: import java.io.Buff ... -
java 高性能网络编程 NIO
2012-09-28 16:31 1518服务器端: // 1. 分配一个 Serve ... -
java 高性能网络编程 mina
2012-09-28 10:52 1691服务器端: // 创建一个非阻塞的server端so ... -
代理 下载网页,挖掘数据
2012-09-25 13:51 899URL url = new URL("http:// ... -
java nio 编程学习 一
2012-09-21 16:08 1178Java.nio中的主要类ServerSocketChanne ... -
MongoDB 实战笔记 四
2012-09-20 14:12 1145import java.net.UnknownHostExce ... -
Json 添加元素拼接JSON字符串(转)
2012-09-20 13:55 7055package com.util; import jav ... -
MongoDB 实战笔记 三
2012-09-20 13:37 2479导出mongoexport -d m ... -
MongoDB 实战笔记 二
2012-09-20 11:45 938MongoDB 实战笔记 count 查询记录 ... -
MongoDB 实战笔记 一
2012-09-20 11:30 1181MongoDB 实战笔记 来建立一个 test 的集 ... -
Struts 学习笔记 二
2012-09-17 16:56 876login.jsp 登陆页面 <html:form ac ...
相关推荐
在IT行业中,Spring AOP(面向切面编程)和Ehcache是两个非常重要的概念,它们经常被结合在一起用于实现高效的应用程序缓存系统。在这个"AOP Cache源代码"项目中,我们可以看到如何利用这两者来提升应用性能。下面将...
在本实战项目"AOP-cache"中,我们将深入探讨如何利用面向切面编程(AOP)和Ehcache技术来实现高效的数据缓存处理。面向切面编程是一种编程范式,它允许开发者将关注点分离,比如日志、事务管理、性能监控等,从主...
在Spring AOP(面向切面编程)中,自定义缓存是一种常见的优化技术,它可以显著提高应用程序的性能,减少对数据库或远程服务的重复访问。本实例将介绍如何利用Spring AOP来实现自定义缓存功能。 首先,理解Spring ...
**AOP(面向切面编程)** 面向切面编程是一种编程范式,旨在提高软件的模块化程度,通过分离关注点来改善代码结构。在.NET中,AOP常用于处理如日志记录、事务管理、性能监控等横切关注点,这些关注点在多个类和方法...
在IT行业中,Spring AOP(面向切面编程)和EhCache是两个非常重要的概念,它们在提升应用程序性能和管理缓存方面发挥着关键作用。本文将深入探讨如何结合Spring AOP与EhCache实现一个简单的缓存实例,以便优化Java...
在IT行业中,面向切面编程(Aspect Oriented Programming,AOP)是一种强大的设计模式,它允许程序员将关注点从核心业务逻辑中分离出来,比如日志记录、事务管理、性能监控等。本例子是一个关于如何在Spring框架中...
在IT行业中,Spring AOP(面向切面编程)和ehCache是两个重要的工具,它们在构建高效、可扩展的应用程序时发挥着关键作用。本文将深入探讨如何利用这两个技术实现一个简单的缓存系统解决方案。 首先,Spring AOP是...
标题 "开源框架spring详解-----AOP的深刻理解" 指向的是对Spring框架中核心概念之一的面向切面编程(Aspect Oriented Programming, AOP)的深入探讨。AOP是Spring用来解决横切关注点问题的一种编程模式,它允许...
在IT行业中,Spring AOP(面向切面编程)是一个重要的概念,它允许程序员定义横切关注点,并将这些关注点与业务逻辑分离。本篇文章将深入探讨Spring AOP中的动态代理、责任链模式以及注解的使用。 首先,动态代理是...
在Spring框架中,AOP(面向切面编程)是一种强大的工具,它允许我们在不修改代码的情况下,对应用程序的特定部分进行增强或拦截。在大型企业级应用中,缓存管理是提高性能的关键因素之一,而EHCache是一款广泛使用的...
SpringBoot AOP,即面向切面编程,是Spring框架中的一个重要特性,用于实现代码的横切关注点,如日志记录、事务管理、权限验证等。AOP通过使用代理模式,将这些关注点与核心业务逻辑分离,使得代码更加模块化,更...
顾名思义是基于spring和memcached的一个插件,该插件目前实现了memcached的查询缓存,利用java的annotation方式和spring的AOP切面编程使得我们在业务层获得缓存数据非常的方便 ##开始使用 首先你必须实现CacheSupport...
在实际应用中,JBoss Cache通过其JBossCacheAop组件提供POJO缓存功能,允许开发者利用面向切面编程(AOP)来简化缓存操作,而无需直接修改业务逻辑代码。通过案例分析,我们可以更深入地理解如何在分布式环境中利用...
"利用MemoryCache和AOP进行昂贵的呼叫"这个主题聚焦于两种技术:System.Runtime.Caching.MemoryCache和面向切面编程(AOP)。这两种技术结合使用,可以有效地缓存计算昂贵或数据库查询结果,避免重复执行这些操作,...
Swoft2提供了强大的AOP(面向切面编程)功能,允许开发者通过定义切面来实现代码的解耦和复用。在这个场景中,我们将探讨如何在Swoft2中实现一个非侵入式的缓存策略,使得缓存功能可以无缝地融入到现有的业务逻辑中...
AutoLoadCache是一个强大的Java缓存管理工具,它利用AOP(面向切面编程)和注解技术来提供高效且灵活的缓存策略。在高并发的Web应用中,缓存管理是性能优化的关键部分,而AutoLoadCache正是为了解决这个问题而设计的...
在实际应用中,Spring Cache 还可以与其他 Spring 模块,如 AOP(面向切面编程)和 Transaction(事务管理)结合使用,实现更复杂的缓存策略。例如,可以利用 AOP 来实现缓存失效策略,如基于时间的过期、基于引用...
Spring Cache基于AOP(面向切面编程)提供了一个通用的缓存抽象层,它允许开发者在不修改代码的情况下,通过注解方式实现缓存的添加和管理。Spring Cache支持多种缓存提供商,包括Redis、 Ehcache、Gemfire等。在本...
为此,邓磊等人提出了一种基于面向方面编程(Aspect-Oriented Programming, AOP)技术的智能Web缓存框架——ABWC(AOP-Based Web Cache),旨在解决现有缓存技术中存在的问题,提高Web应用系统的整体性能。...