我很想知道使用G1和Epsilon在JDK 13中分配内存所花费的时间。我观察到的结果是出乎意料的,我对了解正在发生的事情感兴趣。最终,我希望了解如何使Epsilon的使用性能比G1高(或者,如果不可能,为什么)。
我写了一个小测试,反复地分配内存。根据命令行输入,它将:
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) 我是 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) 有谁知道如何对Hadoop集群中运行的所有Java代码进行性能分析?
我将通过一个简单的示例进行解释。如果我们进行本地Java开发,则可以运行Yourkit来测量每个类的每个方法占用的CPU百分比。我们可以看到类A调用了方法X,这花费了整个应用程序90%的执行时间,然后修复了代码效率低下的问题。
但是,如果我们正在执行mapreduce工作并在集群中运行它,那么我也想看看是什么迟钝的东西:我们的map / reduce代码或框架本身。因此,我想拥有一个服务,该服务获取有关每个类/方法调用及其执行时间的信息,并将其收集到HDFS中,然后分析具有CPU消耗的方法调用树。
问题:有人知道这样的解决方案是否存在吗?
PS注意:我知道这样的事情会使群集速度变慢。而且我知道应该在测试集群上或与客户达成协议来完成此操作。现在的问题是“存在这样的东西吗?”。谢谢。
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 代码可以完美运行。我想了解这种行为。有没有解决方法,这样我就不必删除记录器。
是否可以执行类似下面代码的操作?我有一项服务进行 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 调用,所以它不好。
是否可以?
考虑到我有一个Student只有 getter 和 setter的 Java 对象,我无法更改,以及两个 Lists——students1而且students2都是 type ArrayList<Student>。
如何students1.removeAll(students2)通过传递我自己的equals()方法来调用?
这是因为我无法修改Student类。
我看到很多文章在 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) 首字母缩略词是由一组短语中单词的首字母组成的单词。定义一个名为 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中使用对象的问题。假设我有以下课程。
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和 …
以下代码编译得非常好。
据我了解,这不应该是因为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)
请帮助我理解这种行为为什么抽象没有编译而接口呢?
我已在编译器中运行此代码并得到输出 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) 我有这个代码:
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) 这是代码
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意味着没有进一步的变化,对吗?