【问题标题】:GAE which is better for global system contants?GAE 哪个更适合全局系统内容?
【发布时间】:2014-03-17 09:29:55
【问题描述】:

好的,所以这是一个普遍的问题......在我的 GAE 应用程序中,我需要保留 2 种类型的静态数据,可能会更改的参数,如用户名和密码(用于外部服务而不是我的用户数据库),所以最好方法是不要对它们进行硬编码并将它们保存在数据存储中,这样我就可以从管理系统设置面板中更改它们。但是,永远不会改变的东西怎么样,比如表格中选择器的国家列表。以下是我的选择:

选项 1:

将它们保存在 dataUitls 实体下的数据存储中。但是,这会对我的数据存储报价产生影响。

选项 2:

在类中硬编码。这不会影响我的数据存储报价,并且在 JSP 循环中服务速度会更快,因为我不必等待数据存储事务,但是,这将大大影响我的内存和实例。示例如下

package system.Tools;

import java.util.ArrayList;
import java.util.List;

public class SystemConstants 
{
public static String[] tmp = {"String1","String2"};
public static List<String>Countries = get(tmp);

private static List<String> get(String[]countries)
{
    List<String>result = new ArrayList<String>();
    for(String tmp:countries)
    {
        result.add(tmp);
    }
    return result;
}

// getters and setters for whatever other parameters I have here

}

毫无疑问,两者都可以,但我需要专业意见(最好是两者都尝试过的人)告诉我在这种特殊情况下哪种做法更好。

非常感谢大家!!让他们来吧!

【问题讨论】:

  • 我只是不明白一系列国家名称甚至是记忆问题吗?每个名称 20 个字节,100 个国家... 2000 个字节?不用担心吗?
  • 我在谈论这个概念......扩大规模......就是这样

标签: java google-app-engine jpa google-cloud-datastore


【解决方案1】:

硬编码常量的处理器开销远低于数据存储区查询,并且使用的内存也更少。 Datastore 访问类和对象的内存开销将超过相当大量的硬编码常量。

在极端情况下,Datastore 可能具有的唯一可能优势是,当您只需要大量数据的一小部分时,内存使用量会稍微减少。国家列表并不是那么极端。

最佳选择取决于您的具体情况。而不是推测、衡量和比较。

【讨论】:

    【解决方案2】:

    这取决于您的要求。如果您相信您的数据永远不会改变,那么硬编码就没有障碍。每当您想添加多语言支持时,由于硬编码,您最终可能会进行大量更改。

    不要太在意静态变量的内存使用。与您程序中的其他内存使用相比,它可以忽略不计。

    您还可以使用第三种方法。 将这些写入 .property 文件并将其与您的程序捆绑在一起。在启动时你读取文件并加载值。

    总之,不要过多考虑内存。如果您的列表在数据库中,则必须在使用前将其加载到内存中。如果可以通过 GUI 更改这些数据库解决方案,那么这些解决方案是很好的。基于属性文件的方法高效且易于编程。

    【讨论】:

      【解决方案3】:

      根据情况和数据,您有一些选择:

      Harcode:如果数据完全没有变化并且结构很简单并且没有增长(越来越多......),那可能没问题。

      属性文件:如果您的数据从一种环境更改到另一种环境,您可以在文件中获取数据。将文件从一种环境更改为另一种环境比重新编译更容易。

      Json 或类似的:如果数据结构可以改变(新属性)或者它是“复杂的”,那么将所有内容都放在一个 json 中更容易管理。如果您有 DTO/类,则使用 Jackson 或类似的代码进行解析。并且维护比硬编码数据更好。

      数据库:如果数据没有变化是“静态的”放入数据库不会给你任何优势,IMO。

      当然,无论你决定什么,你都可以在服务器启动时解析/读取并将数据写入内存或memcached。

      【讨论】:

        猜你喜欢
        • 2014-02-28
        • 1970-01-01
        • 2022-12-04
        • 2011-07-09
        • 1970-01-01
        • 1970-01-01
        • 2012-07-11
        • 2012-09-02
        • 2015-05-17
        相关资源
        最近更新 更多