当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

用Java动态代理类实现记忆功效[Java编程]

赞助商链接



  本文“用Java动态代理类实现记忆功效[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

记忆是衍生自Lisp,Python,和Perl等历程性语言的一种计划情势,它可以对上次的计算后果举行记忆. 一个实现了记忆功效的函数, 带有显式的cache, 所以, 已经计算过的后果就可以直接从cache中得到, 而不用每次都举行计算.

记忆能明显的晋升大计算量代码的效率. 并且是一种可重用的筹划.

本文阐述了在Java中利用这一情势的办法,并供应了一个可以供应上述功效的"记忆类":

Foo foo = (Foo) Memoizer.memoize(new FooImpl());

这里,Foo是一个接口,它含有的办法是需求记忆的.FooImpl是Foo的一个实现.foo是Foo的一个引用.办法与FooImpl基本相同,辨别在于Foo返回的值,会被缓存起来.单个记忆类的长处在于为任何类增添记忆功效是很简单的:定义一个包含需求记忆的办法的接口,然后调用memoize来实现一个实例.

为了理解记忆类是怎么实现的,我们将分几步来注释.首先,我注释一下为什么缓存可以在需求它的类中实现.然后,我测试一下如作甚一个特定的类增添缓存包装器.最后,我注释一下若何才能使得一个缓存包装器可以通用于肆意的类.

为大计算量的程序增添缓存

作为一个大计算量程序的例子,我们考虑PiBinaryDigitsCalculator这个例子-计算二进制数据pi.唯一的public办法calculateBinaryDigit带有一个参数:整数n,代表需求切确到的位数.比方,1000000,将会返回小数点后的一百万位,通过byte值返回-每位为0大概1.

public class PiBinaryDigitsCalculator {
/**
* Returns the coefficient of 2^n in the binary
* expansion of pi.
* @param n the binary digit of pi to calculate.
* @throws ValidityCheckFailedException if the validity
* check fails, this means the implementation is buggy
* or n is too large for sufficient precision to be
* retained.
*/
public byte calculateBinaryDigit(final int n) {
return runBBPAlgorithm(n);
}
private byte runBBPAlgorithm(final int n) {
// Lengthy routine goes here ...
}
}


  以上是“用Java动态代理类实现记忆功效[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • <b>如安在Oracle中利用Java存储历程</b>
  • 用Java实现自动在数据库表中生成ID号
  • 利用javascript获得浏览器中的星号密码办法
  • 用javabean来实现MySQL的分页显示
  • 用Java 1.1 AWT制作窗口和程序片
  • 用Java ME举行无线消息传送
  • <b>用Java筹划COM服务器</b>
  • 用Java筹划COM客户
  • <b>用Java程序生成文本的捷径</b>
  • 用Java实现FTP服务器办理策划
  • 用Java实现多线程服务器程序
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .