小编Tib*_*ssy的帖子

线程安全实现max

我需要为Web服务器实现全局对象收集统计信息.我有Statistics 单身,有方法addSample(long sample),随后打电话updateMax.这显然是线程安全的.我有这个方法来更新整个统计信息的最大值:

AtomicLong max;

private void updateMax(long sample) {
    while (true) {
        long curMax = max.get();
        if (curMax < sample) {
            boolean result = max.compareAndSet(curMax, sample);
            if (result) break;
        } else {
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这个实现是否正确?我正在使用java.util.concurrent,因为我相信它会比简单快synchronized.是否有其他/更好的方法来实现这一点?

java thread-safety java.util.concurrent

23
推荐指数
3
解决办法
3870
查看次数

SonarQube:仅有条件地调用方法

以下部分代码引发了SonarQube的一个主要错误:"仅有条件地调用方法."
我该如何解决这个问题?

if(us != null){
    logger.info("Log this: {}", us.toString());
}
Run Code Online (Sandbox Code Playgroud)

java logging sonarqube

17
推荐指数
2
解决办法
1万
查看次数

TypeScript Compiler API:如何在没有绝对路径的情况下获取类型的完全限定名称?

我正在尝试使用 TypeScript 的 TypeChecker API 创建一个处理特定类型的工具。我需要唯一地标识特定类型——比如DomSanitizer来自@angular/platform-browser包的Angular 。我有以下代码来获取类型的完全限定名称

let type = typeChecker.getTypeAtLocation(node);
let fqn = typeChecker.getFullyQualifiedName(type.getSymbol());
Run Code Online (Sandbox Code Playgroud)

但是,这将返回包含node_modules目录绝对路径的名称,例如 "/home/user/project/node_modules/@angular/platform-browser/platform-browser".DomSanitizer

我想删除特定于项目的部分,只有类似@angular/plaform-browser/platform-browser.DomSanitizer. 我更喜欢使用 TypeScript API 而不是对这个值做一些字符串操作,因为我希望 API 更健壮。

typescript typescript-compiler-api

10
推荐指数
1
解决办法
130
查看次数

将类文字返回为交集类型

我有两个实现一些通用接口的枚举,我想从该方法返回类文字.但是我无法正确指定交集类型.请参阅下面的说明问题的代码示例.

public class GenericsTest {    
  interface Iface {   
  }

  enum E1 implements Iface {    
  }

  enum E2 implements Iface {    
  }

  <E extends Enum<E> & Iface> Class<E> getEnum1() {
    return E1.class;  //ERROR incompatible types: java.lang.Class<GenericsTest.E1> cannot be converted to java.lang.Class<E>
  }

  Class<? extends Enum<?>> getEnum3() {
    return E1.class;  //OK
  }

  Class<? extends Iface> getEnum4() {
    return E1.class;  //OK
  }

  <E extends Enum<E> & Iface> void enumParam(Class<E> p) {
    enumParam(E1.class);  //OK
  }

}
Run Code Online (Sandbox Code Playgroud)

#getEnum1方法不编译.有趣的是,它作为参数值起作用#enumParam.如何指定交集类型以便能够从方法返回类文字?

java generics enums

9
推荐指数
1
解决办法
146
查看次数

如何与团队共享 IntelliJ 中已安装的插件

我有一个项目想与我的团队分享,其中包括 IntelliJ 设置。该项目需要几个 IntelliJ 插件来方便工作。如何与我的团队轻松共享插件设置,这样他们就不需要一一安装插件?

intellij-idea

5
推荐指数
1
解决办法
1117
查看次数

如何分析SonarQube中.php文件中编写的JavaScript代码

我们使用SonarQube进行代码分析.SonarQube可以分析所有语言(我们删除了参数sonar.language=).我们有.php档案; file有PHP,还有编写的JavaScript代码.我们知道JavaScript代码有一些错误,但SonarQube分析没有检测到该错误.

如何执行SonarQube分析,以便在出现任何错误时纠正我们的JavaScript代码.

javascript php sonarqube sonarqube-scan

3
推荐指数
1
解决办法
112
查看次数

SonarQube 5.4的'声纳方式'质量配置文件是否包含Findbugs?

有人说'SonarQube Java Analyzer'将包含FindBug规则.所以我们不需要在声纳中添加任何外部的findbug规则.

http://www.sonarqube.org/sonarqube-java-analyzer-the-only-rule-engine-you-need/

这是否已在SonarQube 5.4中添加?

谢谢

Ganesh神

findbugs sonarqube sonarqube5.3

2
推荐指数
1
解决办法
1120
查看次数

基于 java 的项目环境设置的 sonar.java.binaries 属性中的错误

错误 | 爪哇| 声纳Qube | 请提供带有 sonar.java.binaries 属性的项目的编译类。

下面是我的 sonar-project.properties 文件。我已经提供了我的二进制文件路径。但是,我仍然收到错误消息。

sonar.projectKey=Hello
sonar.projectName=JavaPro
sonar.projectVersion=1.0
sonar.java.sources=java
sonar.java.binaries=bin/A.jar
sonar.java.file.suffixes=java
sonar.sourceEncoding=UTF-8
Run Code Online (Sandbox Code Playgroud)

java static-code-analysis sonar-runner sonarqube

-2
推荐指数
1
解决办法
1万
查看次数