小编hen*_*nry的帖子

java的AtomicBitSet实现

标准api不包含AtomicBitSet实现.我可以在AtomicIntegerArray之上滚动自己,但也不愿意.

是否有人知道在与Apache 2兼容的许可下发布的现有实现?我只需要基本操作来设置和检查位.

编辑:

代码是性能和内存关键,所以我想尽可能避免同步或每个标志的整数.

java concurrency

19
推荐指数
1
解决办法
3207
查看次数

kotlin.MetaData中保存的数据格式是否记录在何处?

我很想知道添加到每个Kotlin类的MetaData注释中包含哪些数据.

但大多数领域都没有提供更多细节

"自定义格式的元数据.不同类型的格式可能不同(甚至不存在)."

https://github.com/JetBrains/kotlin/blob/master/core/runtime.jvm/src/kotlin/Metadata.kt

是否有参考解释如何解释这些数据?

kotlin

12
推荐指数
1
解决办法
2424
查看次数

在字节码级别了解Java 8 Streams

关于Java 8中的流,有大量关于流的信息和教程.我发现的大部分内容都很好地解释了流的各个元素如何在概念层面上工作.但是,我没有遇到过很多材料,这些材料描述了JVM实际上如何实现和执行流.

考虑比较Collection使用流和使用旧学前Java 8方式的操作.底层的Bytecodes在这两种方法之间看起来是否相同?性能是否相同?

为了使这个具体,请考虑以下示例,其中我需要找到名称中包含单词"fish"的所有鱼,然后将每个匹配鱼的第一个字母大写.(是的,我知道Hagfish实际上并不是一条鱼,但是我用完了匹配的鱼名.)

List<String> fishList = Arrays.asList("catfish", "hagfish", "salmon", "tuna", "blowfish");

// Pre Java-8 solution
List<String> hasFishList = new ArrayList<String>();

for (String fish : fishList) {
    if (fish.contains("fish")) {
        String fishCap = fish.substring(0, 1).toUpperCase() + fish.substring(1); 
        hasFishList.add(fishCap);
    }
}

// Java-8 solution using streams
List<String> hasFishList = fishList.stream()
    .filter(f -> f.contains("fish"))
    .map(f -> f.substring(0, 1).toUpperCase() + f.substring(1))
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

您可能对这两种方法在Bytecode级别下可能有何不同的见解会很有帮助.而一些实际的字节代码会更好.

java lambda bytecode java-8 java-stream

11
推荐指数
1
解决办法
2578
查看次数

JVM可以检索已通过attach api加载到其中的代理列表吗?

是否有可能通过Java 1.6 attach api获取加载到当前JVM中的代理列表?如果是这样的话?

在启动时加载的代理可以通过RuntimeMXBean确定,但我找不到一种方法来处理启动后添加的代理.

java jvm javaagents

8
推荐指数
1
解决办法
538
查看次数

使用方法引用vs lambdas时,堆栈跟踪是否更少可导航?

我刚刚在Eclipse中进行了快速实验.

public class StackTractTest {

  static class Nasty {
    public Integer toInt() {
      if (1 == 1) throw new RuntimeException();
      return 1;
    }
  }

  @Test
  public void methodReference() {
    Stream.of(new Nasty())
      .map(Nasty::toInt)
      .findFirst();
  }

  @Test
  public void lambda() {
    Stream.of(new Nasty())
      .map(n -> n.toInt())
      .findFirst();
  }

}
Run Code Online (Sandbox Code Playgroud)

当方法引用测试失败时,跟踪开始

java.lang.RuntimeException
    at com.example.StackTractTest$Nasty.toInt(StackTractTest.java:11)
    at com.example.StackTractTest$$Lambda$1/1681433494.apply(Unknown Source)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
Run Code Online (Sandbox Code Playgroud)

虽然跟踪的末尾(未显示)确实链接回到具有findFirston的行,但是没有对使用方法引用的行的引用.

而lamdba stacktrace开始了

java.lang.RuntimeException
    at com.example.StackTractTest$Nasty.toInt(StackTractTest.java:11)
    at com.example.StackTractTest.lambda$0(StackTractTest.java:26)
    at com.example.StackTractTest$$Lambda$1/1681433494.apply(Unknown Source)
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
Run Code Online (Sandbox Code Playgroud)

第26行使用了正确识别lambda的方法.

这是Eclipse编译器的特性还是使用方法引用的一般缺点,在选择它们和lambda时应该考虑这些引用?

java lambda stack-trace java-8 method-reference

8
推荐指数
1
解决办法
183
查看次数

Java 6中的空枚举

Java 7提供了方便的方法

Collections.emptyEnumeration()

但这在Java 6中不可用.

是否有一个空的枚举类潜伏在JDK的其他地方,或者我需要自己滚动吗?

java

6
推荐指数
2
解决办法
3004
查看次数

scala如何映射到jvm字节码的良好参考

有没有关于Scala编译器如何将各种Scala功能映射到字节码的好文章?

快速谷歌出现了David Pollak 2009年演讲的支持材料

https://github.com/dpp/jvm_summit_2009/blob/master/scala_fancy_pants.pdf

但我怀疑这可能是过时的和不完整的.

我可以尝试通过scalap javap 自己收集这些数据,但是从别人的努力和洞察中获益将会很愉快.

jvm scala bytecode

5
推荐指数
2
解决办法
1029
查看次数

如何从 PIT 突变分析中排除测试?

我现在正处于一个旷日持久的境地,有一个困难的项目,其中很大一部分被重构并检查了大量失败的测试。

我在 Maven 中运行 PIT,但很长一段时间都无法运行,因为测试必须是绿色的,但我希望至少在运行的测试上有 PIT 概述。

将失败的测试与 PIT 隔离的最有效方法是什么?

junit unit-testing mutation-testing maven pitest

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

未发现PIT突变

C:\Users\TZ>java -cp C:\Users\TZ\Desktop\femr-master\pitest-command-line-
1.2.4.jar;C:\Users\TZ\Desktop\femr-master\pitest-
1.2.4.jar;C:\Users\TZ\Desktop\femr-master\pitest-entry-
1.2.4.jar;C:\Users\TZ\Desktop\femr-master\junit-
4.12.jar;C:\Users\TZ\Desktop\batch-import-3.0\target\batch-import-
3.0.4.jar;C:\Users\TZ\Desktop\femr-
master\xmlpull_1_0_5.jar;C:\Users\TZ\Desktop\femr-master\xstream-1.4.10.jar 
org.pitest.mutationtest.commandline.MutationCoverageReport --reportDir 
C:\Users\TZ\Desktop --targetClasses org.neo4j.batchimport.* --targetTests 
org.neo4j.batchimport.* --sourceDirs C:\Users\TZ\Desktop\batch-import-
3.0\src
Run Code Online (Sandbox Code Playgroud)

输出:

6:07:23 PM PIT >> INFO : Verbose logging is disabled. If you encounter an 
problem please enable it before reporting an issue.
6:07:23 PM PIT >> INFO : Sending 0 test classes to minion
6:07:23 PM PIT >> INFO : Sent tests to minion
6:07:23 PM PIT >> INFO : Calculated coverage in 0 seconds.
6:07:23 PM PIT >> INFO …
Run Code Online (Sandbox Code Playgroud)

java pitest

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