草庐IT

hash-char-semicolon

全部标签

java - 为什么使用 char[] 而不是 String?

在Thread.java,第146行,我注意到作者在名称字段中使用了char[]而不是String。是否有任何我不知道的性能原因?getName()还在返回名称之前将字符包装在一个字符串中。只使用String不是更好吗? 最佳答案 一般来说,是的。我怀疑char[]是出于性能原因在Thread中使用的,那时候Java中的这些东西需要尽一切努力才能获得不错的性能。随着现代JVM的出现,这种微优化早已变得不重要,但它只是被遗弃了。旧的Java1.0时代的源代码中有很多奇怪的代码,我不会太在意它。

Java 将敏感的 'key' 存储为 String 或 char[]?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whyischar[]preferredoverstringforpasswords?我在某处读到,将敏感key存储为char[]而不是String更好,因为后者可以在内存中找到。由于JPasswordField的getText()方法已弃用,这也有点意义。这是真的吗?

java - 为什么 Objects.hash() 为相同的输入返回不同的值?

我运行了以下脚本(java),它给了我奇怪的结果。有没有人可以帮忙解释一下?importjava.util.Objects;importorg.apache.log4j.Logger;publicclassCacheTester{privatestaticfinalLoggerlog=Logger.getLogger(CacheTester.class);@TestpublicvoidhashCodeTest(){for(inti=0;iLogResult(各不相同)://...2015-04-2917:43:20INFOCacheTester:42-14319045402015-04

java - Hash(#) 在查询字符串中的行为是什么

我正在发送以下带有查询字符串的url。在查询字符串一个参数“approverCmt”具有哈希值(#)。"/abc/efd/xyz.jas?approverCmt=TransactionLog#459505&batchNm=XS_10APR2015_082224&mfrNm=Timberland"在服务器端,当我试图从我收到的请求中检索它时approverCmt=TransactionLog----->"#459505"ismissingbatchNm=nullmfrNm=null如果我从查询字符串中删除散列(#)或者如果我将#替换为%23一切正常我不明白为什么如果另一个参数包含井号(#

java - Java中的char零(0)是什么意思?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:JavastringreplaceandtheNUL(NULL,ASCII0)character?我正在用Java做一些字符串算法,我注意到无论我在哪里包含一个值为0(零)的char,它都标志着字符串的结尾。像这样:StringaString="I'maString";char[]aStringArray=aString.toCharArray();aStringArray[1]=0;System.out.println(newString(aStringArray));//Itoutputs"I"这种行为的

java - JPA/Hibernate DDL 生成; CHAR 与 VARCHAR

我有一个JPA/Hibernate数据模型,我正在使用Hibernatehbm2ddl工具生成数据库DDL。我有一些字符串应该是CHAR和一些可能是数据库中的VARCHAR。我想尽量减少对DDL的手动编辑(我意识到有些事情将不得不发生)。有人知道我应该怎么做吗?我意识到我可以通过黑客方言制作所有字符串VARCHARS或CHARS,但这并不总是适合数据库。我希望能够使用注释或aop来做到这一点,避免在我的类中使用自定义列定义文本。谢谢。 最佳答案 注释要映射到数据库中的CHAR的字符串@Column(columnDefinition=

java - 为什么 HashSet 的名称中有 "Hash"?

为什么Hashset被称为“哈希”集?我知道我们称之为哈希表或HashMap,因为它是键值存储,当我们put()时,键会被哈希并使用一个好的哈希函数均匀分布。我假设它称为HashSet,因为当我们添加()时,该值被散列并存储以保持其唯一性。但为什么矫枉过正?我们并不真正关心数据的“平均分配”,就像我们在哈希表中所做的那样。 最佳答案 我们确实关心平均分配,因为我们希望我们的基本Collection操作具有恒定的时间性能。为了尊重SET的基本规则,没有两个对象是相等的,我们希望快速找到一个可能相等的匹配项。HashSet是一种相当不错

java - 如何在 switch-case 中使用 char 作为 case?

如何在switch-case中使用字符?无论用户输入什么,我都会得到第一个字母。importjavax.swing.*;publicclassSwitchCase{publicstaticvoidmain(String[]args){Stringhello="";hello=JOptionPane.showInputDialog("Inputaletter:");charhi=hello;switch(hi){case'a':System.out.println("a");}}} 最佳答案 publicclassSwitCase{p

java - 性能问题 : Fastest way to convert hexadecimal char to its number value in Java?

我想将表示十六进制值(大写或小写)的字符转换为字节,例如'0'->0,'1'->1,'A'->10,'a'->10,'f'->15etc...我会非常频繁地调用此方法,因此性能很重要。有没有比使用预初始化的HashMap更快的方法?从中获取值(value)?回答这似乎是在使用switch-case和JonSkeet的直接计算解决方案之间的折腾-不过,switch-case解决方案似乎略有优势。Greg的数组方法胜出。以下是各种方法运行200,000,000次的性能结果(以毫秒为单位):Character.getNumericValue:8360Character.digit:8453H

java - 计算 java.util.hash 的 hashcode 值时使用的常量说明

谁能解释这些常量的意义以及选择它们的原因?staticinthash(inth){//ThisfunctionensuresthathashCodesthatdifferonlyby//constantmultiplesateachbitpositionhaveabounded//numberofcollisions(approximately8atdefaultloadfactor).h^=(h>>>20)^(h>>>12);returnh^(h>>>7)^(h>>>4);}来源:java-se6库 最佳答案 理解什么是好的哈希函