jdk-9/jdk-8和jmh中的newInstance与new
我在这里看到了很多线程,它们可以比较并尝试回答哪个线程更快:newInstance或new operator. 查看源代码,似乎newInstance应该 ,我的意思是进行了许多安全检查并使用反射.我决定测量,首先运行JDK-8.这是使用jmh. 的代码 @BenchmarkMode(value = { Mode.AverageTime, Mode.SingleShotTime }) @Warmup(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS) @State(Scope.Benchmark) public class TestNewObject { public static void main(String[] args) throws RunnerExc
10 2023-05-23
编程技术问答社区
为什么在Java 9 G1工作约6小时后,在没有实际增加负载的情况下,会出现性能下降的情况?
我切换了1个实例(2 VCPU,2GB RAM,负载〜4K REQ/sec)至Java 9(来自最新Java 8).有一段时间,一切都很好,CPU的使用与以前相同.但是,在约6小时后,CPU消费量增加了4%(从21%增加到25%).我没有交通尖峰, 没有增加内存消耗,没有指标更改(我对代码中的每种方法都有计数器).什么都没有. 我将这个实例毫不动摇了约12个小时,期望它会恢复.但是什么都没有改变.它刚刚开始消耗更多的CPU. top命令表明,该实例的CPU尖峰比Java服务器进程的频率更高.我最近读到G1不适合高通量.因此,我得出的结论是,理性可能在G1中. 我重新启动实例: java -XX:+UseParallelGC -jar server-0.28.0.jar ,在监视20小时后,一切都很好. CPU消耗的水平为21%,因为很多天之前. Java 9部署(6h量表)之后的CPU用法: CPU在7个小时 + 12小时"未触及"(7D秤)上增加(7
4 2023-05-23
编程技术问答社区
为什么使用流的代码在Java9中运行得比Java8快得多?
我在求解问题205 of 项目欧拉.问题如下: 彼得有9个四面(锥体)骰子,每个骰子的面部为1、2、3、4. 科林有六个六面(立方)骰子,每个骰子都有1、2、3、4、5、6. 的面部. 彼得和科林掷骰子并比较总数:总胜利.结果是如果总体相等,则抽奖. 锥体皮特击败立方体Colin的概率是多少?给您的答案以0的形式为七个小数点. 我使用guava写了一个天真的解决方案: import com.google.common.collect.Sets; import com.google.common.collect.ImmutableSet; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; public class Problem205 { public static void
0 2023-05-23
编程技术问答社区
向JShell导入软件包-私有类
Java 9发行后,我正在与Jshell一起玩,我尝试导入我制作的包装.由于我要编码的整个应用程序将包含在该软件包中,因此除了一个(我尚未编码)外,每个类都是包装私有化的.我的类路径是正确的,但是我仍然无法使用JSHELL中包装中声明的任何类型(它抛出了"找不到符号"错误). 我是否需要公开它们才能访问它们,或者有某种方法可以测试软件包 - 私人类 ?这是我尝试的确切代码. 我的当前目录是 C:\Users\Sylvaenn\OneDrive\Documents\Programs\Java\src 我的班级路径是 C:\Users\Sylvaenn\OneDrive\Documents\Programs\Java\cls 和软件包目录(用于字节码)为 C:\Users\Sylvaenn\OneDrive\Documents\Programs\Java\cls\collatz CollatzSequence是collatz> 中包含的软件包私有类 P
6 2023-05-16
编程技术问答社区
java.sql.Time异常
有人遇到了这样的东西吗? 切换到Java 9后,我面临此类问题 Caused by: java.lang.NoClassDefFoundError: java/sql/Time at com.google.gson.Gson.(Gson.java:240) at com.google.gson.GsonBuilder.create(GsonBuilder.java:569) at net.thucydides.core.reports.json.gson.GsonJSONConverter.(GsonJSONConverter.java:50) at net.thucydides.core.reports.json.gson.GsonJSONConverter$$FastClassByGuice$$6794eb79.newInstance() at com.google.inject.intern
6 2023-05-15
编程技术问答社区
使用Java 9的module-info.java要放在哪里?
我有一个OSGI应用程序,我有大约30个捆绑包(JAR文件).今天,我决定看看它是如何工作的/是否与Java一起使用. 所以我启动了我的申请 WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.felix.framework.util.SecureAction (file:/home/.../jar/org.apache.felix.framework-5.4.0.jar) to method java.net.URLClassLoader.addURL(java.net.URL) WARNING: Please consider reporting this to the maintainers of org.apache.felix.framework.util.SecureAction WARNING:
0 2023-05-14
编程技术问答社区
如何简明扼要地写出a||b,其中a和b是可选值?
我对任何语言的答案感到满意,但我最终希望在Java中得到答案. (Java 8+很好.不限于Java 8.我尝试修复标签.) 如果我有两个Optional值,我如何简明地计算a || b的等效含义,含义:a,如果它是定义的;否则b,如果定义了;否则empty()? Optional a = ...; Optional b = ...; Optional aOrB = a || b; // How to write this in Java 8+? 我知道我可以写a.orElse(12),但是如果默认的"值"也是Optional? 显然,在C#中,操作员??做我想要的. 解决方案 Optional aOrB = a.isPresent() ? a : b; 其他解决方案 in Java-9 您可以关注其中的任何一个: ✓只需使用 Optional
2 2023-05-12
编程技术问答社区
java.util.Objects与Optional哪个更合适?
java.util.objects 班级使用多种新方法 扩展 分别 objects#seepentenonnullseget() Java-9中. ,如果它是非编号,则两者都会返回第一个参数,否则将返回非null第二参数或供应商的非null值.get() 的非编号值. jshell> String nullStr = null; nullStr ==> null jshell> Objects.requireNonNullElse(nullStr,"lorem ipsum"); $13 ==> "lorem ipsum" jshell> Objects.requireNonNullElseGet(nullStr,() -> "lorem ipsum"); $14 ==> "lorem ipsum" 但是,新功能与Optional类可选的#orelse 和可选的#orelseget jshell> Optional.ofNullable(nullStr).
2 2023-05-12
编程技术问答社区
Java 9 ifPresentOrElse的返回值
1/工作代码: public Student process (int id, name){ Optional studentOpt = myrepo.findById(id); studentOpt.isPresent() { return updateStudent(id, name); } else { return createStudent(id, name); } 2/i尝试将其更改为"完整的lambdas代码"(不工作): public Student process (int id, name){ Optional studentOpt = myrepo.findById(id); return studentOpt.ifPresentOrElse(student-> return updateStudent(id, name), () -> return createStuden
0 2023-05-12
编程技术问答社区
可选orElse在Java中可选
我一直在与新的可选类型在Java 8 中,我遇到了似乎不支持功能的常见操作 考虑以下模式: Optional resultFromServiceA = serviceA(args); if (resultFromServiceA.isPresent) return result; else { Optional resultFromServiceB = serviceB(args); if (resultFromServiceB.isPresent) return resultFromServiceB; else return serviceC(args); } 这种模式有多种形式,但它归结为在一个可选的可选函数上想要一个新的可选函数的" ORELSE",只有在当前不存在的情况下才称呼. 它的实现看起来像这样: public Optional orElse(Supplier
0 2023-05-12
编程技术问答社区
警告:发生了非法反射访问操作(Java的便携式OPENCV)
我想制作一个便携式opencv应用程序,将依赖项添加到maven文件pom.xml中. 简化的代码是: import org.opencv.core.Mat; public class Builder { public static void main(String[] args) { nu.pattern.OpenCV.loadShared(); System.loadLibrary(org.opencv.core.Core.NATIVE_LIBRARY_NAME); Mat mat = new Mat(4,3,1); System.out.println(mat.dump()); } } 我将其添加到pom.xml: org.openpnp opencv
4 2023-05-10
编程技术问答社区
Java10中sslSocketFactory的替代品
我正在使用OKHTTP,我需要忽略用于应用程序调试的SSL错误.这曾在Java 8中使用. final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { @Override public void checkClientTrusted(java.security.cert.X509Certificate[] chain, String authType) throws CertificateException { } @Override public void checkServerTrusted(java.security.cert.X509Certificate[] chain, String
4 2023-05-08
编程技术问答社区
在Java 9中不推荐使用Observer。我们应该用什么来代替它?
java 9出来了, 很高兴知道什么是更好的选择? 解决方案 为什么?这是否意味着我们不应该再实施观察者模式了? 首先回答后部 - 是 ,这确实意味着您不应该再实现Observer和Obervable s. 为什么他们弃用 - - 他们没有为应用程序提供足够丰富的事件模型.例如,他们只能支持某些事情发生了变化的观念,但没有传达有关发生了什么变化的任何信息. Alex的答案表明 Observer有一个弱点:所有Observable相同的.您必须实现基于instanceof的逻辑,并将对象施加到混凝土类型中Observable.update()方法. 要添加其中有一个错误,例如一个无法串连a>类,因为因为它没有实现Serializable接口,并且其所有成员都是私有的. 什么是更好的选择? 另一方面Listeners有很多类型,它们具有回调方法,并且不需要铸造.正如@ravi在他的对于其余部分,@Deprecation已标记了适当的文
0 2023-05-07
编程技术问答社区
为什么Map.of不允许空键和空值?
使用Java 9,已经为List,Set和Map接口引入了新的工厂方法.这些方法允许在一行中快速实例化具有值的地图对象.现在,如果我们考虑: Map map1 = new HashMap(Map.of(1, "value1", 2, "value2", 3, "value3")); map1.put(4, null); 如果我们这样做,则允许上述任何例外: Map map2 = Map.of(1, "value1", 2, "value2", 3, "value3", 4, null ); 它投掷: Exception in thread "main" java.lang.NullPointerException at java.base/java.util.Objects.requireNonNull(Objects.java:221) .. 我无
2 2023-04-30
编程技术问答社区
使用gradle在Java 9模块系统库中依赖遗留的jar
问题 您如何创建两个两者的Java库罐: 是java模块(module-info) 有一个依赖遗产(非模块)jar. (例如commons-exec)? 依赖关系是实现细节 - 不应导出. 来源 具有以下build.gradle(使用gradle-6.8): plugins { id 'java-library' } group = 'test' version = '0.0.1-SNAPSHOT' sourceCompatibility = '15' repositories { mavenCentral() } java { modularity.inferModulePath = true } dependencies { implementation 'org.apache.commons:commons-exec:1.3' } 和以下module-info.java: module test.
12 2023-04-27
编程技术问答社区
如何用"-Xlog:heap*=debug""-Xlog:gc*=debug "正确地从GC读取日志的某些部分?
假设我的代码非常简单: public class Sandbox { public static void main(String[] args) { Map map = new HashMap(); while (true) { map.put(new Random().toString(), new Random().nextInt()); } } } 它是多么"不正确",而是它的作用无关紧要.它最终会产生OutOfMemory.我运行它: java -Xms50M -Xmx50M "-Xlog:heap*=debug" "-Xlog:gc*=debug" Sandbox 将有很多伐木,我将它们切成我关心的最重要部分(我还从某些行中删除了一些信息,以便阅读) ) *****************************
12 2023-04-21
编程技术问答社区
如何隐藏警告��非法反射访问�� 在没有JVM参数的java 9中?
我刚刚尝试使用Java 9运行服务器并获得下一个警告: WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by io.netty.util.internal.ReflectionUtil (file:/home/azureuser/server-0.28.0-SNAPSHOT.jar) to constructor java.nio.DirectByteBuffer(long,int) WARNING: Please consider reporting this to the maintainers of io.netty.util.internal.ReflectionUtil WARNING: Use --illegal-access=warn to enable warnings of further illegal reflecti
4 2023-04-21
编程技术问答社区
无法为Java 9中自动生成的模块名称派生模块描述符?
我的项目取决于Netty Epoll运输.这是依赖性: io.netty netty-transport-native-epoll ${netty.version} ${epoll.os} 此依赖项的自动生成的模块名称是: netty.transport.native.epoll ,由于native关键字在Java 9中保留,因此我无法将此模块添加为我项目的依赖性: module core { requires netty.transport.native.epoll; } 由于: module not found: netty.transport. 此外,JAR工具-
12 2023-04-21
编程技术问答社区
如何在Netbeans中排除module-info.java (11)?
我们的源代码仍然是Java 8的配合,但是我们有两种不同的构建:一种使用JDK 11和module-info.java构建.一个带有JDK 8,没有module-info.java.使用Maven,这很容易完成不同的配置文件.对于JDK 8配置文件,module-info.java被排除在外: maven-compiler-plugin 3.8.1 ... module-info.java 当将该项目导入NetBeans 11并激活了正确的配置文件时,excludes的Maven配置将被忽略. 解决方案 使排
2 2023-04-21
编程技术问答社区
如何创建多版本jar并过滤输入内容?
我想通过jar命令创建多释放jar(对于Java 8和Java 9). 有几个NetBeans IDE项目:com.jdojo.mrjar.jdk8,com.jdojo.mrjar.jdk9. 项目源代码为 jar --create --file mrjars/com.jdojo.mrjar.jar -C com.jdojo.mrjar.jdk8/build/classes . --release 9 -C com.jdojo.mrjar.jdk9/build/classes . 我收到一条消息: Warning: entry META-INF/versions/9/.netbeans_automatic_build contains a class that is identical to an entry already in the jar Warning: entry META-INF/versions/9/.netbeans_update_resou
8 2023-04-21
编程技术问答社区