我看到了实现Comparable和Comparator的类 。 这是什么意思? 为什么我会用另一个呢?
请用代码示例告诉为什么SimpleDateFormat不是线程安全的。 这个class有什么问题? 是与SimpleDateFormat的格式function的问题 ? 请给出一个在课堂上certificate这个错误的代码。 FastDateFormat是线程安全的。 为什么? SimpleDateFormat和FastDateFormat有什么区别? 请解释说明这个问题的代码?
我只是想知道为什么我们通常使用逻辑OR || 两个布尔之间不是按位或| ,虽然他们都运作良好。 我的意思是,看看下面的内容: if(true | true) // pass if(true | false) // pass if(false | true) // pass if(false | false) // no pass if(true || true) // pass if(true || false) // pass if(false || true) // pass if(false || false) // no pass 我们可以使用| 而不是|| ? 和&和&&一样的东西。
从Java 5开始,我们对原始types进行了装箱/拆箱操作,以便int被封装为java.lang.Integer ,等等。 我最近看到很多新的Java项目(这绝对需要JRE至less是版本5,如果不是6),使用int而不是java.lang.Integer ,尽pipe使用后者更方便一些辅助方法转换为long值等。 为什么有些人仍然在Java中使用原始types? 有没有实实在在的好处?
我试图从ArrayList删除一些元素,而像这样迭代它: for (String str : myArrayList) { if (someCondition) { myArrayList.remove(str); } } 当然,当迭代myArrayList ConcurrentModificationException尝试从列表中删除项目时,我得到了ConcurrentModificationException 。 有没有一些简单的解决scheme来做到这一点?
什么是我听说过的“执行”成语(或类似)? 为什么我可以使用它,为什么我不想使用它?
这是在面试中问我的,这是我提供的解决scheme: public static int[] merge(int[] a, int[] b) { int[] answer = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) { if (a[i] < b[j]) { answer[k] = a[i]; i++; } else { answer[k] = b[j]; j++; } k++; } while […]
我想在Java中监视以下系统信息: 当前CPU使用率**(百分比) 可用内存*(免费/总计) 可用磁盘空间(免费/总计) *请注意,我的意思是整个系统可用的全部内存,而不仅仅是JVM。 我正在寻找一种跨平台的解决scheme(Linux,Mac和Windows),它不依赖我自己的调用外部程序或使用JNI的代码。 虽然这些是可行的select,但如果有人已经有了更好的解决scheme,我宁愿不自己维护特定于操作系统的代码。 如果有一个免费的库,它以可靠的,跨平台的方式做到这一点,这将是伟大的(即使它使外部调用或使用本机代码本身)。 任何build议,非常感谢。 为了澄清,我想获得整个系统的当前CPU使用率,而不仅仅是Java进程。 SIGAR API提供了我正在寻找的所有function,所以这是迄今为止我的问题的最佳答案。 但是,由于它是根据GPL许可的,我不能将其用于我原来的目的(封闭源代码,商业产品)。 Hyperic有可能将SIGAR许可用于商业用途,但我没有仔细研究过它。 对于我的GPL项目,我将来肯定会考虑SIGAR。 对于我目前的需求,我倾向于以下几点: 对于CPU使用率,OperatingSystemMXBean.getSystemLoadAverage()/ OperatingSystemMXBean.getAvailableProcessors()(每个CPU的平均负载) 对于内存,OperatingSystemMXBean.getTotalPhysicalMemorySize()和OperatingSystemMXBean.getFreePhysicalMemorySize() 对于磁盘空间,File.getTotalSpace()和File.getUsableSpace() 限制: getSystemLoadAverage()和磁盘空间查询方法仅在Java 6下可用。另外,某些JMXfunction可能不适用于所有平台(即,据报道getSystemLoadAverage()在Windows上返回-1)。 虽然最初是根据GPL授权的,但它已经改为 Apache 2.0 ,通常可以用于封闭源代码的商业产品。
我有一个ArrayList ,我想完全作为一个string输出。 基本上我想输出它使用由制表符分隔的每个元素的toString 。 有没有快速的方法来做到这一点? 你可以遍历它(或删除每个元素)并将其连接到一个string,但我认为这将是非常缓慢的。
在这个应用程序中,我们正在开发,我们注意到一个看法特别慢。 我对该视图进行了剖析,并注意到有一个由hibernate执行的查询,即使数据库中只有两个对象要获取,也需要10秒。 所有OneToMany和ManyToMany关系都是懒惰的,所以这不是问题。 在检查正在执行的实际SQL时,我注意到查询中有超过80个连接。 进一步检查问题,我注意到问题是由OneToOne和ManyToOne实体类之间的深层次关系造成的。 所以,我想,我只是让他们偷懒,这应该解决问题。 但注释@OneToOne(fetch=FetchType.LAZY)或@ManyToOne(fetch=FetchType.LAZY)似乎不工作。 要么我得到一个exception,或者他们实际上并没有被代理对象取代,因此懒惰。 任何想法,我将如何得到这个工作? 请注意,我不使用persistence.xml来定义关系或configuration细节,一切都在java代码中完成。