小编kaa*_*aan的帖子

为什么使用Epsilon和G1观察到重复的内存分配比较慢?

我很想知道使用G1和Epsilon在JDK 13中分配内存所花费的时间。我观察到的结果是出乎意料的,我对了解正在发生的事情感兴趣。最终,我希望了解如何使Epsilon的使用性能比G1高(或者,如果不可能,为什么)。

我写了一个小测试,反复地分配内存。根据命令行输入,它将:

  • 创建1,024个新的1 MB阵列,或者
  • 创建1,024个新的1 MB阵列,测量分配的时间,并打印出每个分配的经过时间。这不仅测量分配本身,而且还包括两次调用之间发生的任何其他事件所花费的时间System.nanoTime()-仍然,这似乎是一个有用的信号。

这是代码:

public static void main(String[] args) {
    if (args[0].equals("repeatedAllocations")) {
        repeatedAllocations();
    } else if (args[0].equals("repeatedAllocationsWithTimingAndOutput")) {
        repeatedAllocationsWithTimingAndOutput();
    }
}

private static void repeatedAllocations() {
    for (int i = 0; i < 1024; i++) {
        byte[] array = new byte[1048576]; // allocate new 1MB array
    }
}

private static void repeatedAllocationsWithTimingAndOutput() {
    for (int i = 0; i < 1024; i++) {
        long start = System.nanoTime();
        byte[] array = new byte[1048576]; // …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection

16
推荐指数
2
解决办法
1039
查看次数

Spotbugs 在 gradle 项目中排除过滤器

我是 gradle 新手,正在尝试配置 Spotbugs。我已将该插件添加到 build.gradle 中,并且出现了 Spotbugs 问题。不过,我想排除 Findbugs EI_EXPOSE_REP 和 EI_EXPOSE_REP2 规则,因为它们会出现在我的所有 getter 和 setter 中。我在 build.gradle 中有以下代码片段:

apply plugin: 'java'
apply plugin: 'com.github.spotbugs'
apply plugin: 'findbugs'

spotbugs {
    toolVersion = '5.0.0'
}

tasks.withType(SpotBugsTask) {
    reports {
        xml.enabled = false
        html.enabled = true
    }
}

findbugs {
    excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml")
    toolVersion = "3.0.1"
    effort = "max"
}
Run Code Online (Sandbox Code Playgroud)

exceptFilter.xml 包含以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
    <Match>
        <Bug pattern="EI_EXPOSE_REP"/>
    </Match>
    <Match>
        <Bug pattern="EI_EXPOSE_REP2"/>
    </Match>
</FindBugsFilter>
Run Code Online (Sandbox Code Playgroud)

我还尝试添加排除,如下所示:

tasks.withType(FindBugs) {
    excludeFilter = file("$rootProject.projectDir/config/findbugs/excludeFilter.xml")
} …
Run Code Online (Sandbox Code Playgroud)

java findbugs gradle spotbugs

6
推荐指数
1
解决办法
4464
查看次数

如何进行Hadoop集群的性能分析

有谁知道如何对Hadoop集群中运行的所有Java代码进行性能分析?

我将通过一个简单的示例进行解释。如果我们进行本地Java开发,则可以运行Yourkit来测量每个类的每个方法占用的CPU百分比。我们可以看到类A调用了方法X,这花费了整个应用程序90%的执行时间,然后修复了代码效率低下的问题。

但是,如果我们正在执行mapreduce工作并在集群中运行它,那么我也想看看是什么迟钝的东西:我们的map / reduce代码或框架本身。因此,我想拥有一个服务,该服务获取有关每个类/方法调用及其执行时间的信息,并将其收集到HDFS中,然后分析具有CPU消耗的方法调用树。

问题:有人知道这样的解决方案是否存在吗?

PS注意:我知道这样的事情会使群集速度变慢。而且我知道应该在测试集群上或与客户达成协议来完成此操作。现在的问题是“存在这样的东西吗?”。谢谢。

java profiling hadoop mapreduce apache-spark

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

java.lang.reflect.InaccessibleObjectException:无法使字段私有最终 java.lang.Object java.util.Optional.value 可访问:

java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.lang.Object java.util.Optional.value accessible: module java.base does not "opens java.util" to unnamed module @6b26e945
Run Code Online (Sandbox Code Playgroud)

当我运行 JUnit 代码时,出现此错误。以下代码块周围出现错误。

Optional<RolesDTO> roleDTOEmployee = roles.stream()
        .filter(r -> r.getName().equals(RolesEnum.valueOf(roleName).getRoleName())).findFirst();

if (logger.isInfoEnabled()) {
    logger.info("roleDTOEmployee {}", gson.toJson(roleDTOEmployee));
}
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:178)
    at java.base/java.lang.reflect.Field.setAccessible(Field.java:172)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:157)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:100)
    at com.google.gson.Gson.getAdapter(Gson.java:423)
    at com.google.gson.Gson.toJson(Gson.java:661)
    at com.google.gson.Gson.toJson(Gson.java:648)
    at com.google.gson.Gson.toJson(Gson.java:603)
    at com.google.gson.Gson.toJson(Gson.java:583)
Run Code Online (Sandbox Code Playgroud)

删除 logger.info() 后,JUnit 代码可以完美运行。我想了解这种行为。有没有解决方法,这样我就不必删除记录器。

java error-handling logging junit

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

您可以 Flux.zip 一个单声道和一个通量,并为每个通量值重复单声道值吗?

是否可以执行类似下面代码的操作?我有一项服务进行 API 调用,另一项服务返回值流。我需要根据 API 调用返回的值修改每个值。

return Flux.zip(
                     someMono.get(),
                     someFlux.Get(),
                     (d, t) -> {
                         //HERE D IS ALWAYS THE SAME AND T IS EVERY NEW FLUX VALUE
                     });
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用 Mono 的 .repeat() 并且它可以工作,但是每次有新的 Flux 值时它都会调用该方法,并且它是一个 API 调用,所以它不好。

是否可以?

java spring-webflux spring-reactive

3
推荐指数
2
解决办法
6073
查看次数

是否可以通过在 Java 中传递自定义的 equals() 方法来使用 Collections.removeAll()?

考虑到我有一个Student只有 getter 和 setter的 Java 对象,我无法更改,以及两个 Lists——students1而且students2都是 type ArrayList<Student>

如何students1.removeAll(students2)通过传递我自己的equals()方法来调用?

这是因为我无法修改Student类。

java collections

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

Cloudflare 工作节点 Node.js 中的环境变量使用

我看到很多文章在 Cloudflare 工作人员中设置环境变量。但我无法在 node.js 代码中读取或检索它:

async function handleRequest(request) {
  if ('OKOK' == process.env.API_KEY) {
    return new Response('found', {
      headers: { 'content-type': 'text/plain' },
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

牧马人.toml

name = "hello"
type = "javascript"

# account_id = ""
workers_dev = true
[env.production]
name = "API_KEY"
Run Code Online (Sandbox Code Playgroud)

cloudflare-workers

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

纠结于如何在首字母缩略词中“添加句点”

首字母缩略词是由一组短语中单词的首字母组成的单词。定义一个名为 createAcronym 的方法,该方法接受一个字符串参数并返回该字符串参数的首字母缩略词。在缩写词中的每个字母后添加句点 (.)。如果单词以小写字母开头,请勿在缩写词中包含该字母。然后编写一个主程序,从输入中读取短语,以输入短语作为参数调用 createAcronym(),并输出返回的首字母缩略词。假设输入至少有一个大写字母。

例如:如果输入是:

Institute of Electrical and Electronics Engineers
Run Code Online (Sandbox Code Playgroud)

输出应该是:

I.E.E.E.
Run Code Online (Sandbox Code Playgroud)

例如:如果输入是:

Association for computing MACHINERY
Run Code Online (Sandbox Code Playgroud)

输出应该是:

A.M.
Run Code Online (Sandbox Code Playgroud)

MACHINERY 中的字母 ACHINERY 不作为单词开头,因此这些字母被省略。

程序必须定义并调用一个方法:

public static String createAcronym(String userPhrase)
Run Code Online (Sandbox Code Playgroud)

到目前为止我的代码如下所示:

import java.util.Scanner;

public class LabProgram {
   
     public static String createAcronym(String userPhrase) {

       String[] separatedWords = userPhrase.split(" ");

       String acronymAlphabets = " ";

       for(int i = 0; i < separatedWords.length; ++i) {

           if(Character.isUpperCase(separatedWords [i].charAt(0))) {

               acronymAlphabets += Character.toUpperCase(separatedWords [i].charAt(0));

           }

       }

       return acronymAlphabets;

   }
   
   public static void main(String[] args) …
Run Code Online (Sandbox Code Playgroud)

java acronym

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

Java 结构化方法链接

请教一个关于在java中使用对象的问题。假设我有以下课程。

public class Example {

    private String ex1 = new String();
    private String ex2 = new String();
    private int varOne;

    public Example logicOne(/*Input variables*/) {
        // Do logic
        return this;
    }

    public Example logicTwo(/*Input variables*/) {
        // Do logic
        return this;
    }

    public int subLogicOne(/*Input variables*/) {
        return varOne;
    }

    public int subLogicTwo(/*Input variables*/) {
        return varTwo;
    }

    public int subLogicThree(/*Input variables*/) {
        return varThree;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道将方法类型设置为类名并使用return this将允许我在调用类对象时链接方法,如下所示。

Example obj = new Example;
obj.logicOne("inputOne").logicTwo("inputTwo");
Run Code Online (Sandbox Code Playgroud)

但是我如何限制可以调用哪些方法呢?例如,使logicOne和 …

java methods object

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

覆盖对象类方法中的交互与抽象类

以下代码编译得非常好。

据我了解,这不应该是因为Class C实施interface I

因为抽象类也无法编译。

interface I {
    public String toString();
}

class C implements I {

}
Run Code Online (Sandbox Code Playgroud)

抽象类未编译

abstract class MyAbstractClass {
    public abstract String toString();
}

public class MyClass extends MyAbstractClass {
}
Run Code Online (Sandbox Code Playgroud)

请帮助我理解这种行为为什么抽象没有编译而接口呢?

java abstract-class interface java-8

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

我不明白下面给出的代码的逻辑

我已在编译器中运行此代码并得到输出 1,但我不明白它将如何成为 1。请用答案解释。

public class Main {
    public static void main(String args[]) {
        int a = 10;
        int b = 2;
        System.out.println((a < b) ? a++ : --b);
    }
}
Run Code Online (Sandbox Code Playgroud)

java java-8

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

Java 扫描仪的问题:InputMismatchException

我有这个代码:

import java.util.Scanner;

public class Maggiore3Valori {
    public static void main(String[] args) {
        Scanner scanner = new Scanner("System.in");

        int num1, num2, num3;
        int max;

        System.out.println("Inserisci il primo numero: ");
        num1 = scanner.nextInt();

        System.out.println("Inserisci il secondo numero: ");
        num2 = scanner.nextInt();

        System.out.println("Inserisci il terzo numero: ");
        num3 = scanner.nextInt();

        if (num1 > num2 && num1 > num3) {
            max = num1;
        } else if (num2 > num1 && num2 > num3) {
            max = num2;
        } else {
            max = num3; …
Run Code Online (Sandbox Code Playgroud)

java java.util.scanner inputmismatchexception

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

为什么这个 Java 变量赋值是非法的?

这是代码

import java.util.*;
 class Example
 {
  public static void main(String args[])
  {
    final int x=127; int y=100;
    byte b;
    b=x; //Legal ?
    b=y; //Illegal 
  }
 }

Run Code Online (Sandbox Code Playgroud)

你能解释一下为什么b=y是非法的吗?我认为final意味着没有进一步的变化,对吗?

java

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