Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。
今天我们就一起来探索一下,哈希最底层的奥秘。
构造一种储存结构,通过某种函数,使得其元素的储存位置与他的关键码之间能够建立一一映射关系,那么在查找时通过该函数很快找到相应元素。
Solana:NFT Showdown提交窗口将于本周六关闭:金色财经报道,据Solana官推发布公告,Solana基金会的NFT Showdown提交窗口目前已正式开启,关闭时间为太平洋时间周五晚上11点59分(北京时间周六下午3点59分)。Solana NFT Showdown旨在培育下一代NFT品牌,旨在在时尚、娱乐、游戏、创意机构等垂直领域创造真实世界的产品。入围者和获胜者将获得Solana团队的指导、访问和利用各种提供灵活性和规模的新Solana工具、以及参加由行业专家和 NFT 社区领袖主持的策划研讨会等。[2023/6/5 21:17:15]
简言之,就是设定某一固定函数(hashFunc),通过此函数来使插入元素的值与元素位置相对应,往后我们需要查找此元素时就可以通过此函数(hashFunc)找到该值。
区块链图书出版平台Libraro完成200万英镑融资:金色财经报道,区块链图书出版平台 Libraro 宣布完成 200 万英镑融资,投资方包括 nChain 和 Web3 孵化项目 Block Dojo 等。Libraro 允许作家将自己的作品内容发布到其平台,并通过区块链技术记录和保护上传材料版权来确保平台「完整性」,该公司还推出了 NFT 数字藏品作为用户激励。[2023/4/25 14:26:03]
散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。
三箭联创:LUNA事件中其头寸遭FTX/Alameda猎杀,导致损失全部资金:11月13日消息,三箭资本联合创始人Kyle Davies在其个人社交媒体平台发文称,今年5月时,LUNA暴雷后的一系列事件让其极为震惊。如今他了解到,是FTX/Alameda在该事件中对三箭资本头寸进行了猎杀,最终导致其损失自身和LP/债权人的全部资金。
Kyle Davies补充表示,他认为LUNA/UST是前所未有的项目,三箭资本被其赞助人、创立者和团队的质量所吸引,确实没有在机制上投入足够的调查时间,但三箭也没有想到会被FTX这样的主流交易平台猎杀。LUNA事件中让他明白了永远不要盲目相信的道理。[2022/11/13 12:59:28]
该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。
哈希函数使得计算出来的地址均匀分布在整个空间。
根据待插入元素的关键码,根据哈希函数计算出其存储位置。
我们用除留余数法的哈希函数进行介绍:
例: 现有 1 ,3,4,5,6,9几个数进行储存,将n%10求模运算的结果作为哈希地址进行元素插入。
若想查找某一元素时,则只需要对查找元素进行哈希函数运算,得到其存放地址,就能找到该元素。
当出现插入一个元素,其根据哈希函数计算出的地址,已经被其他元素占用的情况称为哈希冲突。
如:
为了能更好的识别当前位置是否被占用,我们需要对每个位置进行标记
enum state{EMPTY,FULL,DELETE};注意:如果我们要删除某一元素时,不能将其直接删除,如果直接删除,会对当前结构产生影响,导致其他元素的搜索出错,所以当我们要删除一个元素时,需要将其标记为删除,而非空。
开散列又称链地址法,首先对关键码集合用哈希函数计算哈希地址,当具有相同地址的关键码时,将所有同一地址的元素,通过单链表的形式链接起来,而各链表的头结点存储在哈希表中。
这下,你该了解哈希的思想和哈希表构造了吧?欢迎在评论区和我们分享你的想法!
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。