我在这里看到了很多线程,它们可以比较并尝试回答哪个线程更快: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
以下是关于 java-9 的编程技术问答
我切换了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
我在求解问题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
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
有人遇到了这样的东西吗? 切换到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
我有一个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:
我对任何语言的答案感到满意,但我最终希望在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
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).
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
我一直在与新的可选类型在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
我想制作一个便携式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
我正在使用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
java 9出来了, 很高兴知道什么是更好的选择? 解决方案 为什么?这是否意味着我们不应该再实施观察者模式了? 首先回答后部 - 是 ,这确实意味着您不应该再实现Observer和Obervable s. 为什么他们弃用 - - 他们没有为应用程序提供足够丰富的事件模型.例如,他们只能支持某些事情发生了变化的观念,但没有传达有关发生了什么变化的任何信息. Alex的答案表明 Observer有一个弱点:所有Observable相同的.您必须实现基于instanceof的逻辑,并将对象施加到混凝土类型中Observable.update()方法. 要添加其中有一个错误,例如一个无法串连a>类,因为因为它没有实现Serializable接口,并且其所有成员都是私有的. 什么是更好的选择? 另一方面Listeners有很多类型,它们具有回调方法,并且不需要铸造.正如@ravi在他的对于其余部分,@Deprecation已标记了适当的文
使用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) .. 我无
问题 您如何创建两个两者的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.
假设我的代码非常简单: 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 将有很多伐木,我将它们切成我关心的最重要部分(我还从某些行中删除了一些信息,以便阅读) ) *****************************
我刚刚尝试使用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
我的项目取决于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工具-
我想通过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