gpt4 book ai didi

java - 我可以多次从 Apache PropertiesConfiguration 读取相同的配置而不损失性能吗?

转载 作者:行者123 更新时间:2023-12-01 12:30:54 26 4
gpt4 key购买 nike

我有一个 PropertiesConfiguration 对象。我可以多次调用 getInt()、getString() 等而不关心性能吗?我的意思是,它不会每次都从文件中读取或以任何其他方式降低我的系统性能?

另一种方法是在我的类初始化期间将所有值读入映射,并使用它进行查找,但如果我可以在不损失性能的情况下避免这种情况,我显然会(更少的代码等)

谢谢

最佳答案

您必须选择并优先考虑您的要求:

  • 如果请求量较少且文件本身很小,则每次需要属性时读取文件并不是一个大问题。它还使您能够在不重新启动应用程序的情况下更改属性(有时应该这样做)。

  • 从另一方面(我更喜欢),您必须在启动期间读取文件并将信息存储在应用程序缓存中(如 HashMap 等)。如果此缓存在您的应用程序中共享,您可以在任何您想要的类中使用它,并且不会出现任何性能问题(但要注意并发访问,具体取决于您的实现)。
    此外,在这种情况下,您可以提供一些额外的管理屏幕来更改网页的属性,例如,通过某些servlet“动态”更新您的缓存(使用属性更新缓存的 map +更新具有属性的文件,无需重新启动应用程序))。

如果您使用 Apache Commons,如下所示:

Configuration config = new PropertiesConfiguration("usergui.properties");

如果你查看 PropertiesConfiguration 的源代码,你会发现如下。

/** stores the configuration key-value pairs */
private Map<String, Object> store = new LinkedHashMap<String, Object>();

如果你要寻找 getInt() 的实现,最终你会看到下面的内容:

/**
* Read property from underlying map.
*
* @param key key to use for mapping
*
* @return object associated with the given configuration key.
*/
public Object getProperty(String key)
{
return store.get(key);
}

这意味着这是第二种情况,其中属性一次加载到 map 中。我想如果您需要其他类中的“新鲜”属性,则必须再次配置它。

关于java - 我可以多次从 Apache PropertiesConfiguration 读取相同的配置而不损失性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25928147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com