草庐IT

哈希表(HashTable)

全部标签

Java:基于磁盘的快速哈希集

我需要存储一个大哈希集,能够包含多达大约2亿个40位值。将其存储为2亿个64位值是可以接受的(尽管有2亿*16位丢失)。要求是:微小的内存占用(磁盘空间不是问题,内存才是)快速contains(longl)和add(longl)方法(比SQL快得多)嵌入式免费且没有令人讨厌的许可(没有BerkeleyDB)。LGPL很好。没有误报也没有漏报,所以像基于磁盘的布隆过滤器这样的东西不是我想要的SQL不是我在这里追求的东西。因为我真的认为我更追求像这样的快速(请注意该解决方案比SQL解决方案快得多):Fastdisk-basedhashtables?Google有这样的JavaAPI吗?在我

Java可恢复哈希计算

我想实现在服务器上上传的某些文件的可恢复的即时哈希生成。这些文件很大,所以我正在使用MessageDigest类的update(byte[])方法(如此处所述,例如:HowcanIgenerateanMD5hash?),因为新字节来自HttpServletRequest的InputStream。一切顺利,但是,当我想添加可恢复上传支持时,它变得很有趣。如果上传提前终止,不完整的文件将存储在磁盘上。但是,Controller(和底层服务)退出,因此MessageDigest对象丢失。在此之前,我可以将MessageDigest对象序列化到磁盘(或数据库,这无关紧要),当我再次反序列化对象

java - 检查两个图像文件是否相同..校验和或哈希?

我正在做一些图像处理代码,我从URL下载一些图像(如BufferedImage)并将其传递给图像处理器。我想避免将同一图像多次传递给图像处理器(因为图像处理操作的成本很高)。图像的URL端点(如果它们是相同的图像)可能会有所不同,因此我可以通过URL来防止这种情况。所以我打算做一个校验和或散列来确定代码是否再次遇到相同的图像。对于md5,我尝试了FastMD5,它为图像(一些样本)生成了一个20K+字符长度的十六进制校验和值。显然,当涉及到数据库存储时,存储这个20K+字符散列将是一个问题。因此我尝试了CRC32(来自java.util.zip.CRC32)。而且它确实生成了比散列小得

java - Java 中多重集的高效哈希码

我已经定义了一个java.util.Collection的子接口(interface),它实际上是一个多重集(又名包)。它可能不包含null元素,尽管这对我的问题并不重要。接口(interface)定义的equals契约如您所料:objinstanceofMyInterfaceobj包含与this相同的元素(通过equals)obj包含每个元素相同数量的重复项忽略元素的顺序现在我想编写我的hashCode方法。我最初的想法是:inthashCode=1;for(Objecto:this){hashCode+=o.hashCode();}但是,我注意到com.google.common.

区块链基础知识(上):区块链基本原理、加密哈希、公钥加密

目录 基本原理加密哈希:公钥加密:希望有人向你发送只有你才能打开的加密文档/消息时使用PKC希望向其他人发送加密文档/消息并证明它确实由你发送时使用PKC使用PKC和加密哈希对文档/消息进行数字签名 交易哈希链使用数字签名转让数字资产所有权;每个交易记录都保留有对哈希链中上一个交易的加密反向链接Merkle树: 基本原理区块链的基本原理理解起来并不复杂。首先来看三个基本概念:交易(Transaction):一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录;区块(Block):记录一段时间内发生的所有交易和状态结果等,是对当前账本状态的一次共识;链(Chain):由区块按照发生顺序串

java - java messagedigest 会在不同的 jdk 版本上生成不同的 MD5 哈希值吗?

我正在使用java消息摘要创建MD5哈希,用于身份验证。MD5哈希作为varchar2存储在数据库中。我做了一个测试,在我本地笔记本电脑上的tomcat服务器上创建一个用户。我在linuxredhat上部署war到测试tomcat服务器时,由于hash不匹配导致认证失败。我检查了用户名和密码:都是正确的。两个Web服务器都指向同一个数据库。我怀疑在我的本地笔记本电脑上生成的哈希值与测试服务器生成的哈希值不同。我对吗?下面是我用来生成散列的代码。publicstaticStringgetMD5Hash(Stringstr)throwsException{MessageDigestmd=M

github提交JavaScript或React.js中的提交哈希

我正在尝试创建一个替换静态HTML元素的JavaScript组件演示v0.1进入缩短的github提交哈希,例如6DA724DDemov0.1如何使用JavaScript代码编写gitrev-parseHEAD使它起作用?看答案IMO最正确的方法是分开编码(在GIT中)和部署阶段。在部署期间,您可以使用代码(替换字符串,例如)和修改的代码做任何您想做的事情,不会使您的存储库混乱。如果您坚持在工作室中的源文件中使用哈希,则可以使用干净/污迹git滤波器进行关键字替换。

java - 生成等号和哈希码时忽略属性

假设我有一个类客户:publicclassCustomer{privateStringfirstName;privateStringlastName;privateStringdoNotAddMeToEquals;//GettersandSettersbelow}我正在使用GuavaEclipsePlugin在Eclipse中生成我的equals()和hashCode()方法;但是,我也可以使用eclipse->Source->GenerateHashCode/Equals。无论哪种方式......都没关系。有没有一种方法可以注释属性doNotAddMeToEquals,这样当我使用g

java - Eclipse 调试器中显示的哈希表值

我在Eclipse中调试Hashtable时发现了一些奇怪的东西。我的Hashtable变量名称是“my_hashTable”,Eclipse调试器,如果我点击它,它显示它的值是三个:{first=0,third=2,second=1},这是正确的,计数是3,这也是正确的。但是,如果我在my_hashTable变量中单击“table”变量,它会显示只有两个非空值,[4]=2和[5]=0。其完整值如下:[null,null,null,null,third=2,first=0,null]为什么会这样?“second=1”对在哪里?这是我第一次在Eclipse中遇到这种奇怪的现象。知道发生了

C# 哈希码生成器

我以前经常使用apache哈希码生成器C#是否存在 最佳答案 这是我自制的生成器。用法:hash=newHashCodeBuilder().Add(a).Add(b).Add(c).Add(d).GetHashCode();a,b,c,d是什么类型的字段都无所谓,易于扩展,无需创建数组。来源:publicsealedclassHashCodeBuilder{privateinthash=17;publicHashCodeBuilderAdd(intvalue){unchecked{hash=hash*31+value;//seeEf