`
kdlan
  • 浏览: 13033 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Goodbye, MapMaker. Hello, CacheBuilder.

 
阅读更多
留个备份 免得每次翻wall
原文:http://jessitron.blogspot.com/2011/10/goodbye-mapmaker-hello-cachebuilder.html


Google has released a new version of Guava, and it's bad news for one of my favorite classes, MapMaker. The exciting feature of MapMaker is its ability to produce an insta-cache, a key-value mapping that calculates values on the fly, expires them, and limits the quantity stored -- all while maintaining thread safety.

In release ten, Guava added CacheBuilder. CacheBuilder produces a Cache: a key-value mapping that calculates values on the fly, expires them, and limits the quantity stored -- all while maintaining thread safety.

Wait, that sounds exactly like MapMaker. Poor MapMaker -- its methods are now deprecated. The king is dead, long live the king!

Here's a quick look at what CacheBuilder does:

  final Cache cache =
      CacheBuilder.newBuilder()
                  .expireAfterWrite(10, TimeUnit.MINUTES)
                  .maximumSize(50)
                  .build(CacheLoader.fromFunction(retrieveInterestingInfoByKey);

Here, retrieveInterestingInfoByKey is a Function that goes to the database, calls a service, or performs some calculation to get the value for a key.

What does this cache do?

The first time cache.get(key) is called, the cacheLoader loads the value, stores the entry in its map, then returns the value. If two threads make this call at the same time, one of them loads the value, and the other one blocks until the value is available. Values are never loaded more times than necessary.

If cache.get(key) is called more than ten minutes after that entry was created, the value will be loaded again. When the size of the cache gets close to the maximum, then the older, less-used entries are evicted.

What is this cache good for? Reference data, certainly. Any time you have data that's loaded over and over again, but doesn't change nearly as often as it's loaded. The whole process can share a single cache. It's a good candidate for a singleton Spring bean.

What is this cache not good for? Anything you want to cache across processes or machines. Anything you want to update. (You can evict entries from the cache, but not put them in.) Anything you want persisted.

I could write whole posts about exception handling in the load, testing and tuning hooks, and memory use optimization of the Cache. But those are decorations on the cake. The real point of CacheBuilder is how quickly and easily you can get a map that gets you the information you want, when you want it, without hitting the database every single time.

MapMaker, your name was fun to say, but we won't miss you now that we have CacheBuilder.
分享到:
评论

相关推荐

    L78Z MapMaker.rar

    《L78Z MapMaker——探索地图制作工具的源码与应用》 L78Z MapMaker是一款专注于地图制作的工具,其核心价值在于提供了一种便捷的方式,帮助用户创建和编辑自定义的地图。该工具可能包含有丰富的功能,如地形绘制、...

    MapMaker.rar

    C++三维程序

    mapmaker3.0.rar

    MapMaker 3.0是一款专为生物学家和遗传学家设计的高级软件工具,它主要用于构建遗传连锁图谱,并在此基础上进行复杂性状的基因定位。这个软件是交互式的,允许用户方便地处理实验数据,分析遗传标记之间的关系,以及...

    MAPmaker生物软件

    Mapmaker.help和Qtl.help是软件的帮助文档,分别提供了关于MAPmaker基本操作和QTL定位的详细指南,对于初学者来说是十分宝贵的资源。在这些文档中,用户可以找到如何输入数据、设置参数、解释结果等步骤的说明。 ...

    mapmaker exp V4.01.rar

    《Mapmaker EXP V4.01:遗传育种作图软件的进阶解析》 Mapmaker EXP是一款在遗传育种领域广泛应用的专业软件,其V4.01版本是基于3B版的升级优化,旨在为科研人员提供更精确、更高效的遗传图谱构建工具。在遗传育种...

    Mapmaker3.0_winQTLCart2.0简单中文教程和举例

    《Mapmaker3.0与winQTLCart2.0简单中文教程及实例解析》 Mapmaker3.0和winQTLCart2.0是两款在遗传学和基因组学研究中常用的软件工具,它们主要用于遗传图谱构建和连锁分析。本教程将详细解读这两款软件的使用方法,...

    MapMaker Exp3.0b.exe

    MapMaker Exp3.0b.exe

    mapmaker 中文使用说明

    ### MapMaker 3.0 在基因定位中的应用详解 MapMaker 3.0是一款功能强大的遗传图谱构建软件,广泛应用于分子遗传学研究领域,尤其是用于构建植物、动物及微生物的遗传图谱。本文将详细介绍如何使用MapMaker 3.0进行...

    mapmaker3.0中文使用说明书

    《Mapmaker 3.0中文使用说明书》详细阐述了这款广泛应用在遗传图谱构建和QTL定位领域的软件的功能、数据组织方式以及基本操作流程。Mapmaker 3.0是一款专为个人计算机(PC)设计的强大工具,它在生物信息学研究中...

    45MapMaker

    45MapMaker是一款专为创建斜45度视角游戏地图设计的编辑工具。在游戏开发领域,这种视角常用于像素艺术风格或者经典角色扮演游戏(RPG)中,它能为玩家提供一个清晰、直观的游戏环境视野。这款编辑器旨在简化地图...

    ants.zip

    6. **MapMaker.exe**:这是一个可执行文件,可能是地图编辑器的编译版本,用户可以直接运行它来创建或修改游戏地图,无需通过源代码。 7. **LEVEL.EXE**:这可能是游戏的主程序,负责运行游戏关卡。用户可能通过这...

    神秘花园

    在这个游戏中,玩家不仅可以体验到刺激的解谜乐趣,还可以通过“MapMaker.exe”工具亲自创作属于自己的地图,增加了游戏的可玩性和创新性。 游戏的核心在于智力挑战,标签中的“智力游戏”正是对这款游戏最精确的...

    Mapmaker作图软件使用演示资料PPT教案学习.pptx

    Mapmaker作图软件使用演示资料PPT教案学习.pptx

    com.google.common.collect jar包

    《谷歌集合库jar包详解——以google-collect-1.0-rc1.jar为例》 ...本文将围绕`google-collect-1.0-rc1.jar`这个特定版本的jar包进行深入探讨,揭示其在创建和操作列表(Lists)时的强大功能,特别是`Lists.new...

    google common jar包

    "Google Common Jar包"是Google开发的一套Java库,主要用于提供一些通用的工具类和实用方法,极大地简化了日常编程工作。这个包里的类和接口设计得非常实用且高效,可以提升代码质量和可读性。在Java开发中,尤其是...

    ChildrensHospitalApp

    它获取每个楼层的图像文件(在 MapMaker.cs 中配置),然后根据灰度值为每个楼层创建一个 bool[,]。 对于给定的像素,如果它比亮更暗,则该值被标记为真。 然后,每个正确的地方都会在其中放置一个立方体。 (出于...

    mapmaker:制作地图

    制图师-制作地图mapmaker为制作Map提供了一个更好的接口,因此您可以传递一个普通对象,而不是默认实现接受的2数组。使用 // default implementationnew Map ( [ [ 'key' , 'val' ] , [ 'greeting' , 'hi' ] ] )// ...

    视频图matlab代码-MAPmAKER:多机器人专用环境

    视频图matlab代码MAPmAKER:不确定性下执行多机器人LTL规划的工具 MAPmAKER是一个规划解决方案, 它基于去中心化算法 考虑时间逻辑中给出的复杂的高级任务 当只有部分环境知识可用时,此方法才有效。 作者 克劳迪奥...

Global site tag (gtag.js) - Google Analytics