草庐IT

sun-codemodel

全部标签

java - 为什么 HashMap containsKey 在 Sun JDK 中比 get 慢? (太阳-jdk-1.6.0.17)

为什么在HashMap上调用containsKey比get慢?测试:http://ideone.com/QsWXF(>15%的差异,在sun-jdk-1.6.0.17上运行) 最佳答案 因为它[稍微]做了更多工作,请参阅theOpenJDK7source.请注意containsKey调用getEntry而get直接“进行魔术查找”。我不知道为什么这样做,并且对getForNullKey的使用/不使用感到更加困惑:请参阅JohnB和TedHopps的评论,了解为什么会这样完成。get有一个针对空键的早期代码拆分(请注意,如果条目不存在

java - 为什么 sun.misc.Unsafe 存在,如何在现实世界中使用它?

前几天我遇到了sun.misc.Unsafe包,并对它的功能感到惊讶。当然,这个类没有记录,但我想知道是否有充分的理由使用它。您可能会在哪些情况下需要使用它?在现实场景中如何使用它?此外,如果您确实需要它,这是否表明您的设计可能有问题?为什么Java甚至包含这个类? 最佳答案 例子虚拟机“内在化”。即CAS(Compare-And-Swap)用于Lock-FreeHashTables例如:sun.misc.Unsafe.compareAndSwapInt它可以对包含CAS特殊指令的native代码进行真正的JNI调用在这里阅读更多关

java - com.sun.org.apache.xpath.internal.operations.String 的用途是什么?

我正在编写一个Java程序,当我尝试使用字符串时,弹出的建议是com.sun.org.apache.xpath.internal.operations.String.什么是com.sun.org.apache.xpath.internal.operations.String,我应该什么时候使用它?我在网上看过,但找不到文档。谢谢! 最佳答案 您可以根据包名称向后工作。Xpath让我们了解它的作用的第一个部分。然后是Apache,它是ApacheSoftwareFoundation.所以它是来自Apache的一个名为Xpath的API

java - 为什么 Java 11 运行时会忽略我包含 sun.misc 类的 jar?

我正在尝试将我的代码库升级到Java11。不幸的是,我的代码依赖于内部使用sun.misc.BASE64Encoder的第三方库和Decoder.自sun.misc包已从失败的Java11JRE中删除。该库的所有者尚未替换该依赖项,所以我坚持了一段时间。如果我能控制代码,我会使用java.util.BASE64类,但正如我所说,这些类是作为来自另一个库的传递依赖项出现的,我无法更改它。我以为我会很聪明,只用这些类创建一个新的jar,但由于某种原因,那个jar被忽略了。sun.miscBASE641.8system${project.basedir}/lib/sun.jar我也试过将它明

java - 我可以用 sun.misc.Unsafe 覆盖对象吗?

如果一个对象是同一类的实例,它们的大小相同,我可以使用sun.misc.Unsafe覆盖另一个对象吗?编辑:“覆盖”是指“删除”第一个对象,用第二个对象填充内存。可能吗? 最佳答案 By"override"Imeanto"delete"firstobject,anttofillthememorywiththesecondone.Isitpossible?是也不是。是-如果您使用Unsafe分配一些内存并写入long,然后在其中写入另一个long(例如),那么是的,您已经删除了第一个对象并用第二个对象填充了内存。这类似于您可以使用By

java - Java 代码生成器的更好方法?

我有一个里面有图表的类(class)。我迭代该图并创建一个构建该图的字符串,然后将该字符串写入Java文件。有没有更好的方法来做到这一点,我阅读了有关JDT和CodeModel的信息,但我确实需要一些关于如何使用它的提示。编辑我正在做一个正则表达式代码生成器,到目前为止,我已经将正则表达式转换为以有向图表示的DFA(使用grail库)。当我拥有DFA时,下一步是生成一个具有三种方法的类,第一种方法构建相同的图(DFA),第二种方法从一个节点移动到另一个节点,如果输入字符串被接受,第三种方法匹配。只有第一个方法根据正则表达式输入而改变,其他两个是静态的,并且对于每个生成的java类都是相

java - 当通过 -Xmx 分配更多内存时,Sun JVM 会变慢吗?

当有更多内存可用并通过-Xmx使用时,SunJVM是否会变慢?(假设:机器有足够的物理内存,因此虚拟内存交换不是问题。)我问是因为我的生产服务器要进行内存升级。我想将-Xmx值提高到一些颓废。这个想法是为了防止由于我自己的编程错误不时发生的任何堆空间耗尽故障。罕见事件,但如果我有一个令人讨厌的-Xmx值,比如2048mb或更高,我快速发展的webapp可以避免它们。该应用程序受到严密监控,因此会注意到JVM内存消耗的异常峰值,并修复任何缺陷。可能的重要细节:Java6(在64位模式下运行)4核至强RHEL464位Spring,hibernate高磁盘和网络IO编辑:我试图避免发布我的J

java - Oracle 接手后,sun SCJP/SCJA/SCEA tracks 有哪些变化?

上下文:看起来简单的scjp->scja->....sun认证的轨道已经与其他oracle风格的认证合并了...作为开发人员,我最近花了一些时间试图找出新的认证的“途径”。现有资源:这里有一个非常密集但信息丰富的页面:http://en.wikipedia.org/wiki/Sun_Certified_Professional当然,Oracle网站上也充满了不同认证事实的链接和图表。我的问题:不清楚是否出现了新的java认证范例或途径,因此旧的SCJP风格认证是否仍然存在(尽管名称不同),也不清楚整个认证是什么管道看起来像:例如,这张图(来自旧的sun认证)http://www.whi

java - com.sun.mail.smtp.SMTPSendFailedException : 530 5. 7.0 必须先发出 STARTTLS 命令

我正在play2.2.1中创建一个应用程序并尝试向其添加电子邮件功能。为此,我在我的build.sbt文件中添加了依赖项。但是出现了一个异常,解释如下我的代码StringsmtpHost=Play.application().configuration().getString("smtp.host");IntegersmtpPort=Play.application().configuration().getInt("smtp.port");StringsmtpUser=Play.application().configuration().getString("smtp.user");

java - 为什么sun jdk源码里没有javax.servlet包?

我试图在jdk源代码中找到javax.servlet包的源代码,但jdk似乎不包含该包。我在哪里可以下载包? 最佳答案 Whythesunjdksourcecodedosenotcontainsthejavax.servletpackage?因为它是JavaEE的一部分,而不是JavaSE。wherecanIdownloadthepackage?JAR是您的JavaEE平台的一部分;例如Tomcat、JBoss、Glassfish等 关于java-为什么sunjdk源码里没有javax.