标签: java-11

使 JDK 风格保持最新的策略

截至今天,我已在最新的Java SE 11 LTS更新版本中检查了以下发行版:

为什么第一个不同步而第二个与第三个同步?

@编辑

可能感兴趣的基于 Java 时间的版本

java java-11

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

如何以功能方式将字符串中的数字求和直到特定索引

我想总结来自例如的数字。String像 "153" 直到索引 2 并6因为 1+5=6而收到结果。在正常情况下,我会使用经典的循环解决方案,例如检查当前索引是否低于 2:

static int sum(String s){
       int sum = 0;
        for(int i = 0; i < s.length() ; i++){
            if( Character.isDigit(s.charAt(i)) ){
                sum = sum + Character.getNumericValue(s.charAt(i));
            }
        }
        return sum;
}
Run Code Online (Sandbox Code Playgroud)

上面的方法可以正常工作,但我想将此逻辑重写为 Javastream方法。

我有一个实现,如:

  public static int sumDigitsTillIndex(String number) {
    return IntStream.range(0, number.length())
        .filter(i -> i < 2)
        .map(number::charAt)
        .sum();
  }
Run Code Online (Sandbox Code Playgroud)

对于这个参数 153,我收到了 102,这对我来说是一个惊喜。

我找到了另一个类似的解决方案,例如:

   return String
    .valueOf(number)
    .chars()
    .map(Character::getNumericValue)
    .sum();
Run Code Online (Sandbox Code Playgroud)

这是正确地对数字求和,但使用其他filter方法,例如: .filter(index -> number.charAt(index) < …

java functional-programming java-stream java-11

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

Java11 引入的 Z 垃圾收集器有多稳定?

我正在使用Java 11新的 Z 垃圾收集器 (ZGC) 似乎很有前途。

文档说它使用了一些低延迟垃圾收集机制,这样GC暂停时间永远不会超过10 ms,非常好地处理大堆,并允许将未使用的堆内存返回给操作系统,而旧的 GC 不存在

我担心的是 - ZGC 的稳定性如何,如果在生产中继续推进,是否存在风险?

谢谢!

java garbage-collection java-11 zgc

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

什么是字符串值中的编码器?

我正在阅读一个 CSV 文件,使用com.opencsv.CSVReader如下所示

String[] headers = csvReader.readNext();
Run Code Online (Sandbox Code Playgroud)

标头的值如下屏幕截图所示:

在此处输入图片说明

这里的编码器是什么(以黄色突出显示)?

为什么第一个索引的值为 1,所有其他索引的值为 0?

java string opencsv java-11 csvreader

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

aspectj-maven-plugin 1.11:jdk 11 缺少 tools.jar 问题

我的系统上安装了 pom 和 jdk 11 中的 aspectj-maven-plugin:1.11。Jdk 11 在 lib 目录中没有 tools.jar。这导致 maven 构建失败并出现错误:

[错误] 无法执行目标 org.codehaus.mojo:aspectj-maven-plugin:1.11:compile (default) on project groundtruth-storage-writer: 目标 org.codehaus.mojo 的执行默认:aspectj-maven-plugin:1.11 :compile failed: Plugin org.codehaus.mojo:aspectj-maven-plugin:1.11 或其依赖项之一无法解析:在指定路径找不到工件 com.sun:tools:jar:11.0.7 ...\ Java\jdk-11.0.7/../lib/tools.jar

如何解决这个问题?

有一个答案在这里,但超过2岁。

java aspectj maven-plugin java-11

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

JDK11 HttpClient 相互 tls

我希望使用java 11 中提供新 HttpClient。不清楚如何进行双向 TLS(2 路身份验证,客户端和服务器都提供证书。)

有人可以提供一个使用 HttpClient 的双向 TLS 的例子吗?

java ssl java-http-client java-11

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

使用包时获取 java.lang.ClassNotFoundException

我有一个ComPac.java带有以下代码的java文件:

package com;
public class ComPac{
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
Run Code Online (Sandbox Code Playgroud)

该文件位于路径: /home/ec2-user/java_c

为了编译这个文件,我运行了javac Compac.java,然后生成了类文件。

在此处输入图片说明

现在轮到运行类文件了。

所以我做了java ComPac(下面的截图)

压缩包

可以理解的是,我得到了错误Error: Could not find or load main class ComPac. Caused by: java.lang.NoClassDefFoundError: com/ComPac (wrong name: ComPac). 我假设这是因为 java 文件中com声明了包。

所以我尝试了,java com.ComPac并希望它能工作(下面的截图)。

java com.comPac

但我得到了错误:Error: Could not find or load main class com.ComPac. Caused by: java.lang.ClassNotFoundException: com.ComPac.

那么我该如何运行呢?当涉及到 java 中的包时,运行的逻辑究竟是什么?

使用的Java- openjdk version "11.0.8" 2020-07-14 LTS(AWS Corretto) …

java java-package javacompiler java-11

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

我无法从使用 Java JLink 工具创建的应用程序映像中读取外部文件

mvn javaf:jlink当应用程序运行时,我无法从我使用 JLink 工具 ( )创建的应用程序映像中读取外部文件。外部文件放置在资源文件夹中。这是我得到的错误:

ERROR ExecutorOfFiles Script failed to read or load: SampleScript.jsh
java.nio.file.NoSuchFileException: /com.luisosv/com/luisosv/SampleScript.jsh
        at java.base/jdk.internal.jrtfs.JrtFileSystem.checkNode(JrtFileSystem.java:494)
        at java.base/jdk.internal.jrtfs.JrtFileSystem.getFileContent(JrtFileSystem.java:253)
        at java.base/jdk.internal.jrtfs.JrtFileSystem.newByteChannel(JrtFileSystem.java:351)
        at java.base/jdk.internal.jrtfs.JrtPath.newByteChannel(JrtPath.java:696)
        at java.base/jdk.internal.jrtfs.JrtFileSystemProvider.newByteChannel(JrtFileSystemProvider.java:302)
        at java.base/java.nio.file.Files.newByteChannel(Files.java:370)
        at java.base/java.nio.file.Files.newByteChannel(Files.java:421)
        at java.base/java.nio.file.Files.readAllBytes(Files.java:3205)
        at com.luisosv@1.0-SNAPSHOT/com.luisosv.ExecutorOfFiles.loadSnippetsFromFile(ExecutorOfFiles.java:55)
Run Code Online (Sandbox Code Playgroud)

我正在使用以下内容来读取外部文件:

String sourceCode = new String(Files.readAllBytes(
                Paths.get(
                        this.getClass().getResource(scriptFileName).toURI())));
Run Code Online (Sandbox Code Playgroud)

但是,从命令行使用该应用程序可以正常工作mvn javafx:run

我读过应用程序映像一旦创建,就无法更新或修补。对于任何更改,都需要从https://www.studytrails.com/java/java-9/java-9-jlink/部署新的应用程序,我不知道这是原因还是其他原因。

提前致谢。

java resources javafx jlink java-11

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

将 CLOB 转换为 String 会删除所有换行符

我有一个启用了 AES 加密的 H2 数据库。它有一个 CLOB 类型的列。该列包含带有换行符的长文本(有时)。当我在 H2 控制台中检查表格时,我得到所有插入新行的输出,但是当我查询表格时,没有新行字符。我正在使用此代码将 CLOB 对象转换为 String 对象:

public String clobToString(Clob data) {
    StringBuilder sb = new StringBuilder();
    try {
        Reader reader = data.getCharacterStream();
        BufferedReader br = new BufferedReader(reader);

        String line;
        while(null != (line = br.readLine())) {
            sb.append(line);
        }
        br.close();
    } catch (SQLException | IOException e) {
        e.printStackTrace();
    }
    return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)

我觉得这里有事。有没有其他有效的方法来进行这种 CLOB 到字符串的转换。

java string clob h2 java-11

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

未初始化时在java map中初始化一个值

我有一张地图,通过调用increaseValue方法我需要增加它的价值。在该方法中,我检查值是否存在,如果不存在,则对其进行初始化并增加它。

private final Map<String, AtomicInteger> map = new ConcurrentHashMap<>();
 
public void increaseValue(String key) {
    map.putIfAbsent(key, new AtomicInteger(0));
    map.get(key).incrementAndGet();
}
Run Code Online (Sandbox Code Playgroud)

据我记得在java 11中这两个操作可以在一行中完成,不是吗?

java concurrenthashmap java-11

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