Tag: java

任何JVM的JIT编译器是否生成使用向量化浮点指令的代码?

假设我的Java程序的瓶颈确实是一些紧密的循环来计算一堆向量点产品。 是的,我已经介绍过了,是的,这是瓶颈,是的,这是重要的,是的,algorithm是如何,是的,我运行Proguard优化字节码等。 这项工作本质上是点产品。 如在,我有两个float[50] ,我需要计算成对产品的总和。 我知道存在处理器指令集来快速和批量执行这些操作,如SSE或MMX。 是的,我可以通过在JNI中编写一些本机代码来访问这些代码。 JNI电话变得非常昂贵。 我知道你不能保证什么JIT将编译或不编译。 有没有人听说过使用这些指令的JIT生成代码? 如果是这样的话,有没有什么关于Java代码可以帮助这样编译的? 可能是“不”; 值得问。

Java的genericstypes参数命名约定(带多个字符)?

在我写的一些接口中,我想用多于一个字符来命名genericstypes参数,以使代码更具可读性。 就像是…. Map<Key,Value> 而不是这个… Map<K,V> 但是,当涉及到方法时,types参数看起来像java类,这也是令人困惑的。 public void put(Key key, Value value) 这似乎是关键和价值是类。 我发现或想到了一些符号,但没有像太阳或一般的最佳做法的惯例。 替代品我find或find… Map<KEY,VALUE> Map<TKey,TValue>

从技术上说,Oracle JDK和Open JDK之间的主要区别是什么?

我一直在使用Open JDK的年龄,最初是为没有问题的小项目。 但是自从我开始玩大玩具,我开始注意到随机/未知的致命错误和崩溃(与x.264编解码器等),这是一个噩梦,直到​​然后得到乘坐系统崩溃+致命的错误,由开放JDK。 在使用Open JDK完全沮丧和厌倦之后,我终于决定切换到Oracle JDK 7.从那时起,我的致命错误/崩溃消失了。 仍然做跟踪,看看是否发生,但从来没有得到这些系统崩溃。 现在我想知道,如果Open JDK只是一个许可证问题,为什么稳定是不可能的呢? 为什么Open JDK会保持错误的存在,在那里有稳定的版本,但声称它的Oracle JDK的克隆(这不是真的),那么从JDK开放JDK和JDK的真正技术上是什么? (只有快速function的可用性?或着重于稳定性/可靠性?)

在log4j中,在logging提高性能之前检查isDebugEnabled吗?

我在我的应用程序中使用Log4J进行日志logging。 以前我使用debugging调用如: 选项1: logger.debug("some debug text"); 但是有些链接build议首先检查isDebugEnabled() ,比如: 选项2: boolean debugEnabled = logger.isDebugEnabled(); if (debugEnabled) { logger.debug("some debug text"); } 所以我的问题是“ 选项2以任何方式改善性能? ”。 因为在任何情况下,Log4J框架都有相同的debugEnabled检查。 对于选项2,如果我们在单个方法或类中使用多个debugging语句,那么框架不需要多次调用isDebugEnabled()方法(在每次调用时),可能会有好处。 在这种情况下,它只调用一次isDebugEnabled()方法,如果Log4J被configuration为debugging级别,那么实际上它调用两次isDebugEnabled()方法: 在为debugEnabledvariables赋值的情况下, 实际上由logger.debug()方法调用。 我不认为如果我们在方法或类中写入多个logger.debug()语句,并根据选项1调用debug()方法,那么Log4J框架与选项2相比是开销。由于isDebugEnabled()小的方法(在代码方面),它可能是很好的候选内联。

哪个循环具有更好的性能? 为什么?

String s = ""; for(i=0;i<….){ s = some Assignment; } 要么 for(i=0;i<..){ String s = some Assignment; } 我再也不需要在循环之外使用's'了。 第一个选项可能更好,因为每次都没有初始化一个新的string。 然而第二个会导致variables的范围被限制在循环本身。 编辑:在回应Milhous的答案。 将String分配给一个循环内的常量是没有意义的。 不,在这里“一些分配”意味着从列表中获得的变化值被迭代。 另外,这个问题不是因为我担心内存pipe理。 只是想知道哪个更好。

如何获取asynchronous调用的JNI接口指针(JNIEnv *)

我已经了解到,JNI接口指针(JNIEnv *)只在当前线程中有效。 假设我在本地方法中启动了一个新线程; 如何将事件asynchronous发送到Java方法? 由于这个新线程不能有(JNIEnv *)的引用。 (JNIEnv *)的全局variables显然不起作用?

Java Swing GUI的自动化testing

为使用Java Swing编写的GUI构build自动化testing,有哪些select? 我想testing一些使用NetBeans Swing GUI Builder编写的GUI ,因此不需要特别篡改被测代码就可以工作。

Mockito – doReturn()和when()之间的区别

我目前正在使用Mockito在我想testing我的Controller方法的Spring MVC应用程序中模拟我的服务层对象。 然而,正如我一直在阅读Mockito的具体细节,我发现方法doReturn(…).when(…)等于when(…).thenReturn(…) 。 所以,我的问题是有两个方法做同样的事情或什么是doReturn(…).when(…)之间的细微差别是什么doReturn(…).when(…)和when(…).thenReturn(…) ? 任何帮助,将不胜感激。

java:Class.isInstance与Class.isAssignableFrom

让clazz是一些Class和obj是一些Object 。 是 clazz.isAssignableFrom(obj.getClass()) 总是一样的 clazz.isInstance(obj) ? 如果不是,有什么区别?

什么是<? 超T>语法?

我无法理解以下语法: public class SortedList< T extends Comparable< ? super T> > extends LinkedList< T > 我看到类SortedList扩展了LinkedList。 我只是不知道 T extends Comparable< ? super T> 手段。 到目前为止,我的理解是,typesT必须是一个types,实现可比较…但是什么是< ? super T > < ? super T > ?