当前位置: 首页 > 知识库问答 >
问题:

使用Map(作为缓存)在类之间共享变量

凤凡
2023-03-14

我想实现一个公共缓存变量存储,以便在类之间共享。我有很多类,因为我使用cucumber java webdriver并且有必要在步骤、页面对象/类之间共享。

我有课

public class Cache {
    private HashMap<String, String> cache = new HashMap<String, String>();

    public HashMap<String, String> getCache() {
        return cache;
    }
}

但问题是,设置键值对的最有效的方法是什么?

我的想法是使用getter获取并使用存储的变量,如cache.get(“key”),然后我获取值。如何在这个缓存中以有效的方式存储变量?

任何示例代码将是赞赏的。

共有1个答案

冷善
2023-03-14

>

  • 在使用'cache.set(key,val)'时,明显的效率因素是键和哈希函数的选择。然而,在我99%的项目中,使用简单直观的字符串键(例如,如果您的业务需要按出版商+标题缓存书籍,那么“Penguin_PrideAndPrevience”可能会很好)是足够有效的(例如,如果您的业务需要按Publisher+Title缓存书籍,那么“Penguin_PrideAndPrevience”就可以了)。然而,唯一能确定的方法是在数据样本上测试它!

  •  类似资料:
    • 问题内容: 我有一个下载器功能,可以并行下载多个文件。我使用以便下载同一文件的不同块。我想显示下载的状态栏。为此,我需要知道已经下载的总字节数()。 是否有一种方法可以设置将在所有这些进程和主进程之间共享的变量,以便每个进程都可以追加刚刚下载的字节数? 问题答案: 解决方案是利用新进程并传递共享的ctypes值:

    • 我们正在使用.NET的StackExchange Redis客户端。 PS:我们尝试使用廉价的250GB(共享基础设施),但性能非常慢。读操作在600-800ms之间是一致的。不加载(对于一个~300KB的对象)。升级到专用的1GB服务将其更改为30-40毫秒。在这里查看更多:带有Azure Redis的StackExchange.Redis速度慢或引发超时错误

    • 我很想知道Hibernate二级缓存是否可以在运行在两个不同JVM上的两个不同Hibernate会话之间共享。 我正在使用Hibernate 3.1和Ehcache来提供二级缓存,并且在Ehcache中。xml配置文件我们可以指定在磁盘上创建缓存的位置 因此,如果我现在在不同的JVM中打开两个不同的Hibernate会话,它们都指向同一个JVM,那么这将允许我在两个JVM之间共享二级缓存。 如果是

    • 我有一个Jenkins文件,我正在尝试从共享库实例化groovy类。我得到“无法解决类测试” 我有一个src/com/org/foo。共享库中的groovy文件: 我正试图在我的Jenkins文件中实例化它 如果我将文件作为一个类引用(我没有对其构造函数的访问权限),那么它就会起作用。即: 这很好,让我使用foo函数。但是,我失去了赋予类常量并用参数构造它的能力。 知道如何定义和使用共享库中的类吗

    • 当我试图打开我的Apache POI excel文件时,我遇到了一些问题,该文件包含大量数据(600.000/700000行),为三个不同的表中生成的三个枢轴提供数据(使用流式SXSSFWorkbook)。 当我试图打开创建的Excel di MSExcel时,出现了这样的消息:“Excel无法用可用的Excel资源完成此活动...试着关闭一些东西……”。所以,为了节省资源,我尝试在前两个pivo

    • 问题内容: 我有一个关于JAX-RS的非常基本的问题,但我无法以某种方式轻易找到答案。 我正在尝试将使用“标准” Javax servlet的REST服务重构为“手工”将请求路由到方法的“ REST服务”,使其成为“更干净的” JAX- RS实现。当前应用程序在servlet init()期间设置一些变量。它将那些属性分配为HttpServlet类的属性,因此它们在每个doGet()期间都可用,并