java配置⽂件参数_从Java的配置⽂件中读取配置参数的最佳
⽅法是什么?
I am thinking it will impact performance.
我怀疑这是真的。
去美国留学要考什么flash动画设计假设应⽤程序在启动时只读取配置⽂件⼀次,则读取⽂件所需的时间可能与应⽤程序的整体性能⽆关。实际上,应⽤程序运⾏的时间越长,启动时间越短。
只有在具体证据(即测量)来表⽰性能是重⼤问题时,才能优化应⽤程序性能,并且您正在寻求优化的代码是真正的瓶颈。
Can I use separate final class for configuration details
是的,可以做到这⼀点。没有⼈会阻⽌你。 (如果您的代码经过代码审查,有⼈可能会阻⽌您。)
不,这是⼀个坏主意。任何需要您重新编译代码以更改配置参数的事情都是⼀个坏主意。 IMO。
To read all configuration details at once from the configuration file and storing them as global constants 能效等级是什么意思
for later use in application.
啊,所以想要读取“常数”的值,⽽不是硬接线。
是的,那是可能的。⽽且,将代码中的配线参数配置成⽐配线更有意义。但这还不是⼀个好主意(IMO)。
为什么?好吧,看看代码如何:
public final class Config {
public static final int CONST_1;
public static final String CONST_2;
static {
int c1;
String c2;
try (Scanner s = new Scanner(new File(""))) {
虽然是精神病但没关系大结局c1 = s.nextInt();
c2 = s.next();
} catch (IOException ex) {
throw RuntimeException("Cannot load config properties", ex);
}
CONST_1 = c1;
网络工程师认证CONST_2 = c2;
中秋节发朋友圈的句子}
}
第⼀个观察是,班级是最终的没有区别。它将这些字段声明为final,使它们保持不变。 (将类声明为final可防⽌⼦类化,但对静态字段没有影响。静态字段不受继承影响。)
接下来的观察是,这个代码在许多⽅⾯是脆弱的:
>如果静态初始化程序块出现问题。由块抛出的未经检查的异常将被包装为ExceptionInInitializerError(是…它是⼀个错误!!),并且Config 类将被标记为错误。
>如果发⽣这种情况,没有现实的希望恢复,甚⾄可能是⼀个坏主意来尝试和诊断错误。
>上⾯的代码在Config类被初始化时被执⾏,但确定何时发⽣这样的事情可能很棘⼿。
>如果配置⽂件名是⼀个参数,那么在触发静态初始化之前,您有遇到参数值的问题。
接下来,与将状态加载到实例变量中相⽐,代码相当凌乱。⽽这种混乱主要是因为在静态初始化器的限制之内⼯作。以下是代码使⽤最终实例变量时的代码。
public final class Config {
public final int CONST_1;
public final String CONST_2;
public Config(File file) throws IOException {
try (Scanner s = new Scanner(file)) {
CONST_1 = s.nextInt();
CONST_2 = s.next();
}
}
}
最后,静态终场在终场领域的性能优势很⼩:
>每次访问其中⼀个常量时,⼤概有⼀个或两个机器指令,
>如果JIT编译器是智能的,可能没有什么,⽽且您可以适当地处理单例配置参考。
⽆论如何,在绝⼤多数情况下,收益将是微不⾜道的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论