草庐IT

java - 最高效 - 性能明智 - 用于 JVM 间通信

我有一个Java应用程序需要不同进程之间的通信。进程可以运行在相同的JVM或不同的JVM中,但运行在同一台机器上。我的应用程序需要向另一个进程(相同或不同的JVM)提交“消息”,但忘记了它。类似于IBM“MQ”之类的消息队列,但是简单,并且只使用内存,没有硬盘的IO以提高性能。我不确定性能规范的最佳方法是什么。我想知道RMI在性能方面是否高效,我认为它需要一些开销。使用本地主机的TCP/IP套接字怎么样?还有什么想法吗? 最佳答案 IwonderifRMIisefficientintermsofPerformance,Ithinki

java - 更有效地检查 int 是否为素数

我最近参加了学校的小型Java编程竞赛。我和我的搭档刚刚完成了我们的第一个纯oop类(class),大部分问题都超出了我们的范围,所以我们选择了这个(我稍微解释了一下):“给定一个输入整数n返回下一个素数int和它的反面也是质数,例如,如果n=18,您的程序应该打印31",因为31和13都是质数。然后,您的.class文件将传递一个包含1-2,000,000,000之间所有可能数字的测试用例,并且它必须在10秒内返回正确答案才能被视为有效。我们找到了解决方案,但如果测试用例较大,则需要10秒以上的时间。我相当确定有一种方法可以将循环范围从n,..2,000,000,000向下移动,因为

java - Java 如何让低效代码运行得比高效代码更快?

在下面的代码片段中,Foo1是一个每次调用方法bar()时都会递增计数器的类。Foo2做同样的事情,但多了一个间接级别。我希望Foo1比Foo2快,但在实践中,Foo2始终比Foo1。JVM如何优化代码,使Foo2比Foo1运行得更快?一些细节测试是使用java-serverCompositionTest执行的。使用java-clientCompositionTest运行测试产生了预期的结果,即Foo2比Foo1慢。切换循环的顺序没有什么不同。在sun和openjdk的JVM上使用java6验证了结果。代码publicclassCompositionTest{privatestatic

java - 不寻常的 Java 行为 - 为什么这有效?

我发现了一些有趣的行为......我无法确定这是错误还是无能,但目前倾向于无能。这段代码不会进入循环,即使有消息在等待:Messagemsg;while((msg=consumer.receiveNoWait())!=null){System.out.println(msg);}这段代码确实进入了循环,注意空赋值:Messagemsg=null;while((msg=consumer.receiveNoWait())!=null){System.out.println(msg);}此代码在Windows32位的Glassfish3.1.1b10HotSpot1.6_26上运行。我想不出

java - Java 8 findFirst().isPresent() 是否比 count() > 0 更有效?

假设我有一个流Streamstream=list.stream().filter(somepredicate)如果列表非常大,通过以下方式检查流是否非空是否更有效:stream.count()>0或者通过做:stream.findFirst().isPresent()? 最佳答案 如果你只想知道是否匹配,你应该使用list.stream().anyMatch(somepredicate),不仅因为它更高效,而且因为它是表达您意图的正确成语。正如其他人所说,anyMatch是短路的,这意味着它会在第一次匹配时停止,而count顾名思义

java - 我可以使这个功能更有效吗(欧拉计划 9)?

我刚刚完成了欧拉计划问题9(警告剧透):APythagoreantripletisasetofthreenaturalnumbers,a这是我的解决方案:publicstaticintspecPyth(intnum){for(inta=1;a我忍不住想到有一个只涉及一个循环的解决方案。有人有想法吗?我更喜欢只使用一个循环的答案,但任何比我目前拥有的更有效的东西都会很好。 最佳答案 ifa+b+c=1000然后a+b+sqroot(a²+b²)=1000->(a²+b²)=(1000-a-b)²->a²+b²=1000000-2000

java - 在编译时有效获取java源码中的行号

我有一个异常类,我想在其中传递当前行号line70:line71:thrownewLightException(FailureType.NOT_FOUND,this.getClass().getName(),linenum);有没有办法在不硬编码的情况下将linenum设置为72?eclipse是否提供任何可以在编译时替换为硬编码行号的东西。这样我就不必输入难看的硬编码行号classLightException(FailureTypetype,StringclassName,intlineNum)extendsRuntimeException{LightException(Failur

CSS 实现 3D 书本展开动效

一、前言本文将使用纯CSS实现一个简单的3D书本展开动效。二、实现思路实现这么一个书本动效乍一看可能会感觉有些复杂,实际上并不难,遇到这种组合动效的需求时,我们只要将整体拆分成多个小步骤去做,就很简单了。1.拆分主体在实现动效前,我们需要先将书本画出来,画一个本子,我们可以先简单分成三个元素:封皮、书脊、正文2.CSS变量声明与使用本不打算加入这段,但考虑到有些没有用过的读者,还是简单讲一下。在现代CSS中,在不使用预处理器的情况下,我们也可以声明CSS变量,在当前场景下,我们可以直接将书本的主题色与大小设置为变量,这样我们可以轻松的修改整个书本的样式。变量声明CSS变量定义:带有前缀--的属

java - 包装类 - 为什么整型文字对 Long 失败但对任何更小的东西都有效

我只是想了解自动装箱,除了一件事:Shorts=250;Longl=250;Longl的赋值失败。我预计,这是因为你不能加宽thenbox(即它试图将int值250加宽到long然后将其装箱这是它做不到的)。但是,对Shorts的赋值是有效的。是什么让这一切变得美好?我的假设是它仍在进行装箱和某种转换。但是,如果它知道250适合short,为什么它不知道250适合long? 最佳答案 通常,您不能在赋值(JLS§5.2AssignmentConversion)中应用多个(隐式)转换:Assignmentconversionoccur

java - 在 Java 中缓冲输出流是否比输入流更有效?

今天早些时候感到无聊,我开始思考Java中缓冲字节流和非缓冲字节流的相对性能。作为一个简单的测试,我下载了areasonablylargetextfile并编写了一个简短的程序来确定缓冲流在复制文件时的影响。进行了四项测试:使用无缓冲的输入和输出字节流复制文件。使用缓冲输入流和非缓冲输出流复制文件。使用无缓冲输入流和缓冲输出流复制文件。使用缓冲的输入和输出流复制文件。不出所料,使用缓冲输入和输出流比使用无缓冲流快几个数量级。然而,真正有趣的事情(至少对我而言)是案例2和案例3之间的速度差异。一些示例结果如下:Unbufferedinput,unbufferedoutputTime:36