我在我的应用程序中使用Log4J进行日志记录.以前我使用调试调用如:
选项1:
logger.debug("some debug text");
Run Code Online (Sandbox Code Playgroud)
但有些链接表明最好先检查一下isDebugEnabled(),例如:
选项2:
boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
logger.debug("some debug text");
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是" 选项2能否以任何方式提高性能? ".
因为在任何情况下Log4J框架都对debugEnabled进行相同的检查.对于选项2,如果我们在单个方法或类中使用多个调试语句可能是有益的,其中框架不需要isDebugEnabled()多次调用方法(在每次调用时); 在这种情况下,它只调用isDebugEnabled()一次方法,如果Log4J配置为调试级别,那么实际上它调用isDebugEnabled()方法两次:
我不认为如果我们logger.debug()在方法或类中编写多个语句并debug()根据选项1 调用方法,那么与选项2相比,它是Log4J框架的开销.因为它isDebugEnabled()是一个非常小的方法(就代码而言),它可能是内联的好人选.
目前我们正在使用4个带有8GB RAM的cpu windows box,并在同一个盒子上安装了MySQL 5.x. 我们在我们的应用程序中使用Weblogic应用程序服务器.我们针对我们的应用程序定位了200个并发用户(显然不是针对相同的模块/屏幕).那么我们应该在连接池中配置什么是最佳连接数(最小和最大数量)(我们使用的是weblogic AS'连接池机制)?
如何StackOverflowError在Java中处理?
我想以编程方式创建chrome扩展crx文件(不使用chrome.exe,因为它会打开新的chrome窗口).那么有什么替代方案呢?我的偏好是java,但如果它可能用其他语言,那么我也没关系.
Java具有原始数据类型,它不像Ruby中的对象派生.那么我们可以将Java视为100%面向对象的语言吗?另一个问题:为什么Java没有设计原始数据类型的对象方式?
我在一些设计书中读到,不可变类提高了可伸缩性,并且尽可能地编写不可变类.但我认为如此不可改变的阶级会增加对象的扩散.因此,为了提高可伸缩性,使用静态类(具有所有静态方法的类)更好地进行不可变类或更好吗?
Java不允许从多个类继承(仍允许从多个接口继承.),我知道它非常符合经典的钻石问题.但是我的问题是,当从多个基类继承时没有歧义(因此没有钻石问题的可能性)时,java不允许像C++这样的多重继承?
目前我正在开发基于Web的应用程序.我想知道设计人员在设计可扩展的基于Web的应用程序时应该注意哪些关键因素?
我的问题与java中没有数据成员的类的内存占用有关.假设在java中我有一个没有数据成员的类,它只包含方法.因此,如果我正在创建特定类的实例,那么除了对象引用内存之外它是否占用主内存中的内存?
静态方法和类是否有利于可伸缩性?我认为静态类/方法可以提高应用程序的可伸缩性,而实例方法不会扩展太多.那么在可能的情况下编写静态方法是一种很好的编程习惯吗?
java ×9
performance ×3
scalability ×3
oop ×2
command-line ×1
crx ×1
exception ×1
immutability ×1
java-ee ×1
log4j ×1
logging ×1
mysql ×1
weblogic ×1