Java – TreeSet和hashCode()

我有一个关于TreeSet集合和hashCode方法的快速问题。 我有一个TreeSet ,我正在添加对象,在添加对象之前,我使用contains方法检查它是否存在于TreeSet contains 。 我有2个不同的对象,每个对象使用我的hashCode方法实现产生一个不同的hashCode,例如: public int hashCode() { int hash = 7; hash = hash * 31 + anAttribute.hashCode(); hash = hash * 31 + anotherAttribute.hashCode(); hash = hash * 31 + yetAnotherAttribute.hashCode(); return hash; } 特定运行的hashCodes是:76126352和76126353(对象在一个属性中仅相差一位)。 即使hashCodes不同,contains方法也会为这些对象返回true。 有什么想法吗? 这真的令人困惑,真的很感激帮助。

如何保护/加密Java类?

前段时间,在我的工作中,我需要保护一些课程,以防止其他人阅读代码。 为此,我创建了一个EncryptedClassLoader,它加载了以前加密的类,并且还可以加载普通(未加密)类。 以这种方式工作有点复杂,并且也进行测试(编译,然后加密,然后解密)。 是否有任何免费的框架可以做我需要的,并且易于处理? 我的意思是,不仅混淆,而且还加密文件,所以没有人可以读取或调试这部分代码。 我可以很容易地更改加密密钥(在我的应用程序中,它是硬编码的)。 提前致谢。

CryptoJS AES加密和Java AES解密

我只是问这个,因为我已经阅读了很多关于加密AES加密的post2天了,就在我认为我得到它的时候,我意识到我根本没有得到它。 这篇文章是我最接近我的问题,我有完全相同的问题,但没有答案: CryptoJS AES加密和JAVA AES解密值不匹配 我试过很多方面,但我没有把它做对。 首先 我正在获取已经加密的字符串(我只有代码才能看到它们是如何做的),因此修改加密方式不是一种选择。 这就是为什么所有类似的问题对我都没有用。 第二 我有权访问密钥,我可以修改它(所以如果需要,调整长度是一个选项)。 加密是在CryptoJS上完成的,它们将加密的字符串作为GET参数发送。 GetParamsForAppUrl.prototype.generateUrlParams = function() { const self = this; return new Promise((resolve, reject) => { const currentDateInMilliseconds = new Date().getTime(); const secret = tokenSecret.secret; var encrypted = CryptoJS.AES.encrypt(self.authorization, secret); encrypted = encrypted.toString(); self.urlParams = { token: encrypted, time: currentDateInMilliseconds }; resolve(); }); }; 我可以使用CryptoJS在javascript上轻松解密这个: […]

写入和读取多个对象到文件

我正在为android设计一个手写应用程序。 每次用户按下回车键时,我class LogInfo将信息( class LogInfo )写入日志文件。 之后,我想阅读存储的信息。 这是我的类的一部分,具有自定义写入方法: public class LogInfo implements Serializable { private static final long serialVersionUID = -5777674941129067422L; public static List strokes; public static List codes; // Only write and read methods shown private void writeObject(ObjectOutputStream stream) throws IOException { stream.defaultWriteObject(); stream.writeInt(strokes.size()); Point[][] pointsArray = null; for (int i = 0; i […]

ClassLoader getResourceAsStream返回null

我的项目目录结构(在Eclipse中): MyProject/ src/ –> “source directory” on Eclipse’s classpath/buildpath com.me.myapp Driver myconfig.txt 在Driver ,我有以下代码: public class Driver { public static void main(String[] args) { InputStream is = ClassLoader.getSystemClassLoader.getResourceAsStream(“myconfig.txt”); if(is == null) System.out.println(“input stream is null”); else System.out.println(“input stream is NOT null :-)”); } } 当我运行这个时,我得到以下控制台输出: input stream is null 为什么? 我是否将myconfig.txt放在了错误的位置? 我是否错误地使用了ClassLoader API? 别的什么? 提前致谢!

我如何取消jar子?

有没有办法取消签名java jar文件? 我有一些我正在尝试在我的开发环境中使用的签名jar子,但我得到安全例外,所以我想取消签名这些jar子,我可以在以后准备部署时签名。

HttpClient 4.1的SSL“Peer Not Authenticated”错误

我正在构建一个简单的应用程序监视器来轮询我们的一个API URL并向我们发送电子邮件,如果它无法从响应中获取HTTP 200状态代码(这表明我们的API因某种原因而关闭)。 我正在使用HttpClient 4.1 (这很重要,因为它的API与3.x差别很大 )。 我们的API使用SSL是安全的,但输入: http://example.com/our-api 进入Web浏览器重定向到 https://example.com/our-api 没有造成任何错误。 当HttpClient尝试访问此URL( http://example.com/our-api )时,它会因javax.net.ssl.SSLPeerUnverifiedExceptionexception而失败,并显示一条消息: 同行未经过身份validation 我发现这对其他人来说发生了很多事情,正如这篇文章所certificate的那样(这也提供了一些规避这个问题的方法 – 我今晚将尝试和实施的解决方案)。 这个其他post(和其他类似的post)没有做的是解释为什么这首先发生! 所以,而不是问“我该如何解决这个问题?” 我想我会问“ 为什么会发生这种情况? ”在我提前解决其中一个建议的解决方案之前,我想知道我试图解决的问题是什么;-)

toString数组的java

我在一个类中有几个数组 我想实现toString()来打印所有值。 这个怎么做? public String var1[]; public int var2[]; public String var3[][]; public int var4[]; public int var5[][]; public String toString() { for(String s : var1) { System.out.println(s.toString()); } return null; } 打印所有var1 []内容,但如何打印所有? 我是否必须为每一个都设置一个循环?

为什么传递给runnable的变量需要是最终的?

如果我有一个变量int x = 1 ,比如说,我在主线程中声明了一个runnable,并且我想将x传递给runnable的run()方法,那么它必须被声明为final 。 为什么? final int x = 0;//<—-must be final… private class myRun implements Runnable { @Override public void run() { x++;// } }

RabbitMQ – 获取入队消息的总数

我有一个Java客户端监视RabbitMQ队列。 我能够使用此代码获取当前队列中的消息计数 @Resource RabbitAdmin rabbitAdmin; ………. DeclareOk declareOk = rabbitAdmin.getRabbitTemplate().execute(new ChannelCallback() { public DeclareOk doInRabbit(Channel channel) throws Exception { return channel.queueDeclarePassive(“test.pending”); } }); return declareOk.getMessageCount(); 我想获得更多其他细节,例如 – 当前排队项目的消息正文。 自创建队列以来在队列中排队的消息总数。 有没有办法在Java客户端中检索这些数据?