现在在我的应用程序中,在某些时候我们将一些重要的东西记录到日志文件中.
基本上只针对日志记录,我们正在创建可用数据的JSON,然后登录到日志文件.这是以JSON格式记录数据的业务要求.
现在从可用数据创建JSON然后记录到FILE会花费大量时间并影响原始请求返回时间.现在的想法是改善引用.
我们讨论的一件事是使用创建线程池
Executors.newSingleThreadExecutor()
Run Code Online (Sandbox Code Playgroud)
在我们的代码中,然后将任务提交给它,将数据转换为JSON和后续日志记录.
这是一个很好的方法吗?由于我们正在管理线程池本身,是否会产生一些问题?
如果有人可以分享更好的解决方案,我将不胜 在某种程度上使用Log4j.我试图使用AsyncAppender但没有达到任何预期的结果.我们使用的是EJB 3,Jboss 5.0,Log4j,java6.
我们正在对我们的一个遗留应用程序进行性能测试,当时我们发现没有类加载持续增加,从而导致非堆内存的增加。
现在我正在寻找根本原因,我能想到的一件事是,在几个地方我们使用 Class.forName ,如下所示:
Test a = (Test) Class.forName(className, false, Test.class.getClassLoader()).newInstance();
Run Code Online (Sandbox Code Playgroud)
这能是一个理由吗?如果上述代码语句中的类名相同,则调用 class.forName 是否会一次又一次加载相同的类。
应用服务器:Jboss 6.1 EAP
JDK:1.6.27
我有以下代码:
String s1 = "a";
String s2 = "a";
if (s1 == s2) {
System.out.println("string not equal");
}
Run Code Online (Sandbox Code Playgroud)
当我使用 SonarLint 分析这段代码时,它没有被捕获。我希望这应该被以下规则所捕获
鱿鱼:S1698-“==”和“!=”当“等于”被覆盖时不应使用
我已经使用 Sonar Qube 7.0 在独立模式和连接模式下检查了这一点。有人知道为什么声纳会这样吗?
- - - - - - - -编辑 - - - - - - - - -
同样的情况也发生在:
Integer x= 500;
Integer y= 500;
if (x==y){
System.out.println("not equal");
}
Run Code Online (Sandbox Code Playgroud) 如果我们运行派生类,它将打印派生和parent..is有什么方法可以防止静态块的继承?
// 1级
public class parent {
static {
System.out.println("Parent");
}
}
Run Code Online (Sandbox Code Playgroud)
//类2
public class derived extends parent{
static {
System.out.println("derived");
}
public static void main(String [] args) {
}
}
Run Code Online (Sandbox Code Playgroud)
基本上我在父类中有一些我想要继承的方法,但是不希望在实例化派生类时发生在父静态块中发生的处理..有什么方法可以做到这一点,或者我将不得不复制代码?
java ×4
performance ×2
asynchronous ×1
inheritance ×1
java-6 ×1
jboss5.x ×1
jboss7.x ×1
jvm ×1
log4j ×1
sonarlint ×1
sonarqube ×1