截至今天,我已在最新的Java SE 11 LTS更新版本中检查了以下发行版:
为什么第一个不同步而第二个与第三个同步?
@编辑
可能感兴趣的基于 Java 时间的版本。
我想总结来自例如的数字。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 11新的 Z 垃圾收集器 (ZGC) 似乎很有前途。
文档说它使用了一些低延迟垃圾收集机制,这样GC暂停时间永远不会超过10 ms,非常好地处理大堆,并允许将未使用的堆内存返回给操作系统,而旧的 GC 不存在
我担心的是 - ZGC 的稳定性如何,如果在生产中继续推进,是否存在风险?
谢谢!
我正在阅读一个 CSV 文件,使用com.opencsv.CSVReader如下所示
String[] headers = csvReader.readNext();
Run Code Online (Sandbox Code Playgroud)
标头的值如下屏幕截图所示:
这里的编码器是什么(以黄色突出显示)?
为什么第一个索引的值为 1,所有其他索引的值为 0?
我的系统上安装了 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 11 中提供的新 HttpClient。不清楚如何进行双向 TLS(2 路身份验证,客户端和服务器都提供证书。)
有人可以提供一个使用 HttpClient 的双向 TLS 的例子吗?
我有一个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并希望它能工作(下面的截图)。
但我得到了错误: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) …
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/部署新的应用程序,我不知道这是原因还是其他原因。
提前致谢。
我有一个启用了 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 到字符串的转换。
我有一张地图,通过调用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 ×10
java-11 ×10
string ×2
aspectj ×1
clob ×1
csvreader ×1
h2 ×1
java-package ×1
java-stream ×1
javacompiler ×1
javafx ×1
jlink ×1
maven-plugin ×1
opencsv ×1
resources ×1
ssl ×1
zgc ×1