`

动态代理缓存

阅读更多
使用动态代理无需修改一个逻辑方法的代码,便可以为它加上缓存功能,提高其性能。

现在,假设有一个可能被频繁调用的方法,它用于对一个整数做因式分解。实现如下:(由于本文不关注因式分解算法,故只列出该类的结构):

public class HeavyMethodDemo { 
    public String heavyMethod(int num) { 
        StringBuffer sb = new StringBuffer(); 
        //对 num 进行因式分解,将结果保存在sb中 
        return sb.toString(); 
    } 

使用CGLIB生成动态代理类的方法拦截器的逻辑如下:
public class CglibHeavyMethodInterceptor implements MethodInterceptor { 
    HeavyMethodDemo real=new HeavyMethodDemo(); 
    @Override 
    public Object intercept(Object arg0, Method arg1, Object[] arg2, 
            MethodProxy arg3) throws Throwable { 
        String v=(String)EHCacheUtil.get("cache1", (Serializable)arg2[0]);                                                      //查询缓存 
        if(v==null){ 
           v=real.heavyMethod((Integer)arg2[0]);        //缓存中未找到结果 
           EHCacheUtil.put("cache1", (Integer)arg2[0], v);  //保存计算结果 
        } 
        return v; 
    } 
分享到:
评论

相关推荐

    web代理服务器缓存设计

    特别是在局域网环境中,通过建立代理缓存服务器,能够显著降低远程服务器的请求频率,从而提升整体系统的响应速度。 #### 三、代理缓存服务器的设计 ##### 3.1 代理缓存服务器的角色划分 代理服务器在系统中扮演...

    ProxyCache socket buffer 代理缓存服务器TCP/IP,实现本地服务器网页的代理缓存

    实现一个基本的webProxy Cache,java代码,默认字符集请改为utf-8,目前只能缓存本地web服务器上的网页,图片。

    一篇讲动态代理的好文 <动态代理的前世今生>

    ### 动态代理的前世今生 #### 一、引言 动态代理作为一种广泛应用于软件开发中的设计模式,其重要性不言而喻。本文旨在深入探讨动态代理的概念、原理及其实现方式,并通过实例帮助读者更好地理解动态代理的应用...

    JDK动态代理源码

    动态代理在很多场景下都有应用,比如AOP(面向切面编程)、事件监听、缓存处理等。下面将深入解析JDK动态代理的核心知识点及其在实际中的应用。 1. **Java.lang.reflect.Proxy**:这是JDK动态代理的关键类,它提供...

    缓存代理服务器Squid-教程

    WEB缓存功能对于一个规模较大、访问繁忙的网络来说是有必要的,IBM网站上的一篇文章,详细分析介绍了WEB缓存给上网用户带来的好处: http://www-900.ibm.com/developerWorks/cn/web/webcachinga/index.shtml ...

    包含静态代理和动态代理demo代码

    代理模式通常用于数据访问、远程调用、安全控制、缓存等场景。在这个“包含静态代理和动态代理demo代码”的压缩包中,我们可能会看到两种常见的Java代理实现方式的示例:静态代理和动态代理。 首先,我们来详细讲解...

    NGINX反向代理缓存[参考].pdf

    8. **代理缓存路径**(proxy_cache_path):定义缓存存储的位置,例如`/cache/www_OOXX_com_cache`,并设置缓存的层级、空间大小、过期时间等参数。 在反向代理配置中,`proxy_cache`指令用于启用缓存,`proxy_...

    代理模式之动态代理

    例如,Spring AOP(面向切面编程)就大量使用了动态代理来实现切面的功能,如事务管理、缓存控制等。此外,动态代理也可以用于实现远程方法调用(RMI)、事件监听等复杂场景。 总的来说,动态代理是Java中一种强大...

    动态代理由浅入深

    动态代理的应用场景非常广泛,例如在 AOP(Aspect-Oriented Programming)中,动态代理可以用来实现日志记录、安全检查、缓存等方面的功能。 在本文中,我们通过一个简单的例子来演示动态代理的实现。我们定义了一...

    java动态代理实例

    Java动态代理是Java语言提供的一种在运行时创建代理对象的技术,它允许我们为已存在的接口创建代理类,...在实际开发中,我们常常利用动态代理来实现如事务管理、权限控制、缓存等功能,提高代码的可维护性和可扩展性。

    11 动态代理的例子

    在Java编程中,动态代理是一种强大的技术,它允许我们在运行时创建对象的代理,这个代理对象可以代替原对象执行某些额外的操作。动态代理通常用于实现AOP(面向切面编程)或者提供一种方式来增强已有类的功能,而...

    动态代理的前世今生-绝对经典

    例如,在AOP中,我们可以利用动态代理在方法执行前后插入切面逻辑,实现如缓存、事务控制等功能。在事件驱动的系统中,代理可以用于注册事件监听器,使得对象间的交互更加灵活。此外,还可以用于单元测试,模拟复杂...

    一种新型分布式代理缓存系统一双层集群缓存.pdf

    【分布式代理缓存系统】是一种优化网络访问性能的技术,它通过在多个节点上分散存储数据,减少对远程服务器的依赖,提高数据访问速度。本文提到的“双层集群缓存”是这种系统的一种新型实现方式。 双层集群缓存系统...

    java动态代理机制

    - **缓存机制**:在数据访问层,如果一个方法需要频繁访问数据库,可以使用动态代理在方法执行前先检查缓存,如果缓存中有结果则直接返回,避免了不必要的数据库访问。 - **事务管理**:动态代理可以用来管理事务...

    Asp.NET性能优化之反向代理缓存 varnish

    到目前为止,我们讨论了把缓存存放在ASP.NET的输出缓存中(内存和硬盘),以及浏览器缓存中,而大型站点的另一种常用做法是将缓存部署在反向代理服务器上,这类缓存我们通常称之为反向代理缓存,比如Squid和Varnish...

    java动态代理新java动态代理新java动态代理新

    - **缓存**:通过动态代理可以实现在调用方法之前检查缓存,如果缓存中有数据则直接返回,提高性能。 ### Tomcat配置与管理简析 #### 五、Tomcat的AdminWebApplication AdminWebApplication是Tomcat提供的一种...

    Java动态代理案例演示代码

    动态代理在很多场景下非常有用,例如AOP(面向切面编程)、事件监听、缓存处理、事务管理等。以下是对Java动态代理技术的详细解释。 ### 1. 动态代理的原理 Java动态代理基于JDK的`java.lang.reflect.Proxy`类和`...

    反向代理缓存视频.zip

    在IT行业中,网络性能优化是至关重要的一环,而“反向代理缓存”技术就是其中的一个关键要素。这个“反向代理缓存视频.zip”压缩包文件包含了多个关于这一主题的相关资料,包括“1-buffer-cache.rar”、“2浏览器dns...

    java 简答可复用动态代理类

    Java动态代理是一种强大的技术,它允许我们在运行时创建对象,这些对象可以作为其他对象的代理,从而在调用实际方法之前或之后执行额外的操作。在Java中,动态代理主要通过`java.lang.reflect.Proxy`类和`java.lang....

Global site tag (gtag.js) - Google Analytics