栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java中用于记忆的不同技术有哪些?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中用于记忆的不同技术有哪些?

使用普通的简单类型安全Java来进行记忆也很容易。

您可以使用以下可重复使用的类从头开始。

我将它们用作缓存,其寿命是Web应用程序上的请求。

当然,

MapMaker
如果您需要驱逐策略或更多功能(例如同步),请使用Guava 。

如果您需要记住一个带有许多参数的方法,只需将两种方法都将参数放在一个列表中,然后将该列表作为单个参数传递即可。

abstract public class Memoize0<V> {    //the memory    private V value;    public V get() {        if (value == null) { value = calc();        }        return value;    }        public abstract V calc();}abstract public class Memoize1<P, V> {    //The memory, it maps one calculation parameter to one calculation result    private Map<P, V> values = new HashMap<P, V>();    public V get(P p) {        if (!values.containsKey(p)) { values.put(p, calc(p));        }        return values.get(p);    }        public abstract V calc(P p); }

这是这样使用的

    Memoize0<String> configProvider = new Memoize0<String>() {        @Override        public String calc() { return fetchConfigFromVerySlowDatabase();        }    };    final String config = configProvider.get();    Memoize1<Long, String> usernameProvider = new Memoize1<Long, String>() {        @Override        public String calc(Long id) { return fetchUsernameFromVerySlowDatabase(id);        }    };    final String username = usernameProvider.get(123L);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/573800.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号