知识大全 Java程序性能优化-缓存(Cache)(2)

Posted

篇首语:有了知识不运用,等于耕耘播种。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java程序性能优化-缓存(Cache)(2)相关的知识,希望对你有一定的参考价值。

Java程序性能优化-缓存(Cache)(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

     缓存(Cache)( )

  以上代码将载入EHCache的配置文件 并生成CacheManager的实例 之后 就可以通过CacheManager对Cache进行管理

  将数据存入Cache的实现如下

  public static void put(String cachename Serializable key Serializable value)

  manager getCache(cachename) put(new Element(key value))

  

  在put()操作中 首先指定要使用的Cache名称 接着就是类似于HashMap的名值对 get()操作也是类似

  public static Serializable get(String cachename Serializable key)

  try

  Element e=manager getCache(cachename) get(key)

  if(e==null)return null;

  return e getValue()                 //取得缓存中的数据

   catch (IllegalStateException e)

  e printStackTrace()

   catch (CacheException e)

  e printStackTrace()

  

  return null;

  

  有了以上的工具类 便可以更方便地在实际工作中使用EHCache 从软件设计的角度来说 笔者建议在频繁使用且重负载的函数实现中 加入缓存 以提高它在频繁调用时的性能

  在为方法加入缓存时 可以使用最原始的硬编码方式 根据传入的参数构造key 然后去缓存中查找结果 如果找到则立即返回 如果找不到 则再进行相关的业务逻辑处理 得到最终结果 并将结果保存到缓存中 并返回这个结果 这种方式的实现好处是代码比较直白 缺点是缓存组件和业务层代码紧密耦合 依赖性强

  本小节介绍基于动态代理的缓存解决方案 对动态代理尚不了解的读者 可以回顾前文中 代理模式 一节 基于动态代理的缓存方案的最大好处是 在业务层 无需关注对缓存的操作 缓存操作代码被完全独立并隔离 并且对一个新的函数方法加入缓存不会影响原有的方法实现 是一种非常灵活的软件结构

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

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

  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 arg Method arg Object[] arg

  MethodProxy arg ) throws Throwable

  String v=(String)EHCacheUtil get( cache (Serializable)arg [ ])                                                       //查询缓存

  if(v==null)

  v=real heavyMethod((Integer)arg [ ])         //缓存中未找到结果

  EHCacheUtil put( cache (Integer)arg [ ] v)   //保存计算结果

  

  return v;

  

  //省略其他代码

       返回目录 Java程序性能优化 让你的Java程序更快 更稳定

  编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

       J ME移动开发实战教学视频

  Visual C++音频/视频技术开发与实战

  Oracle索引技术

cha138/Article/program/Java/gj/201311/27803

相关参考

知识大全 Java程序性能优化-缓存(Cache)(3)

Java程序性能优化-缓存(Cache)(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 Java程序性能优化(2)

Java程序性能优化(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  八如果只是查找单个字符

知识大全 Java程序性能优化-负载均衡(2)

Java程序性能优化-负载均衡(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-代理模式(2)

Java程序性能优化-代理模式(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!   

知识大全 Java程序性能优化-缓冲(Buffer)(2)[2]

Java程序性能优化-缓冲(Buffer)(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 Java程序性能优化-对象复用“池”(2)[2]

Java程序性能优化-对象复用“池”(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 Java程序性能优化-享元模式(2)[2]

Java程序性能优化-享元模式(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  pub

知识大全 Java程序性能优化-业务代理模式(2)[2]

Java程序性能优化-业务代理模式(2)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  i

知识大全 Java程序性能优化-空间换时间[2]

Java程序性能优化-空间换时间[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  publi

知识大全 Java程序性能优化-单例模式(2)

Java程序性能优化-单例模式(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!