程序员常说的「哈希表」是个什么鬼?
今天聊聊「哈希表」,「哈希表」主要作用在于高效查找。
在编程实现中,常常面临着两个问题:存储和查找,存储和查找的效率往往决定了整个程序的效率。
脑补下,你在家里忘记了指甲刀放在哪里,通常要在你家所有抽屉中顺序寻找,直到找到,最差情况下,有N个抽屉,你就要打开N个抽屉。这种存储方式叫数组,查找方法称为「遍历」。
脑补下,你是一个整理控,所有物品必须分门别类放入整理箱,再将整理箱编号,比如1号放入针线,2号放入证件,3号放入细软。这种存储和查找方式称为「哈希」,如果这个时候要查找护照,你不许要再翻所有抽屉,直接可在2号整理箱中获取,通常只用一次查找即可,如何编号整理箱,称为哈希算法。
同样是查找,差距怎么那么大涅~,假设我们有100亿条数据记录,那差距就变得明显,遍历需要查找最多100亿次,最少1次,哈希只需1次。
让我们正式介绍哈希和哈希算法,哈希也称散列,哈希表是一种与数组、链表等不同的数据结构,与他们需要不断的遍历比较来查找的办法,哈希表设计了一个映射关系f(key)= address,根据key来计算存储地址address,这样可以1次查找,f既是存储数据过程中用来指引数据存储到什么位置的函数,也是将来查找这个位置的算法,叫做哈希算法。
让我们举个例子,比如下面这几个人物,按数组存储:
这样我要找到大胸姐的电话号码,需要顺序查找对比整个数组,第一个余罪,不是,第二个不是,第三个不是,直到第四个找到大胸姐。
如果以hash存储呢?首先让我们来看看如何设计哈希算法,哈希算法可以随意设计,教科书上一般会说以下几种方法:直接定址发,平方取中法,除数取余法,哈希算法的本质上是计算一个数字,如果用这几种方法讲解会稍显晦涩,我们假设我们的哈希算法是取姓名的首字母。所以f(余罪) = y, f(傅老大) = f,f(沈嘉文) = s,f(大胸姐) = d。
构建的hash表如下:
我们看到他们分别以姓名首字母的位置插入到这一张表格中,这样我们构建了这样一个Key-Value表格,此表就是哈希表,也称为Hash Table。未来,当我们要查找余罪的时候,通过计算,余罪在y位置,可以通过1次查找,找到这条记录,也即手机号。
这个时候有客官问了,那以首字母为哈希函数的话,应该有很多比如以y的姓名啊,这个时候就不是一次查找了吧,其实有很多条记录都映射到一个位置上,称为哈希冲突。
哈希冲突是跟哈希函数的设计正相关的,你的随机性越大,那么产生哈希冲突的可能性越小,在小概率下,如果还有冲突怎么办,这个时候要做些有损的设计,比如如果有两个首字母为y的姓名,那么可以接到余罪的后面,当查找的时候,需要先查找到y,然后再顺序查找,如图所示:
还有一些解决哈希冲突的办法叫「哈希再哈希」,也就是针对第一次哈希的结果再进行一次hash来减小冲突的概率。
这就是Hash表,首先Ta是一种数据结构,是一种效率极高的查找方式,哈希表的核心在于哈希函数的设计,哈希冲突了不要紧,我们要增加随机性以及对冲突进行适当的有损化的处理。
#专栏作家#
给产品经理讲技术,微信公众号(pm_teacher),人人都是产品经理专栏作家。资深程序猿,专注客户端开发若干年,对前端、后台技术略懂,热衷于对新的科技领域的探索。
本文原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自PEXELS,基于CC0协议
炉水检测设备维护操作——8362SC 超纯水pH ORP传感器
希作为水质分析仪器领域的专业制造商,始终致力于为各行业提供优质的产品和解决方案,同时在设备维护和操作方面密切关注用户的实际需求。为了帮助用户更好地理解和操作锅炉水仪表设备,哈希特别制作了一系列的演示视频,这些视频涵盖了设备维护和校准的各个方面,通过逐步的操作指导,旨在使水质守护者能够更直观地掌握相关仪表设备的使用方法,从而快速上手,轻松完成水质检测设备的维护和校准工作。
在哈希的这一系列演示视频中,尤其突出的是8362SC超纯水pH/ORP传感器的维护和校准操作。详细展示了以下几个重要步骤:
传感器维护 :首先引导用户进行传感器的拆卸操作,接着展示了电极的清洁过程,这是确保传感器准确性和稳定性的关键步骤。此外,对于浓度传感器的清洁工作同样不可忽视,这一步骤能有效提高传感器的响应速度和测量精度。流通池的拆卸和清洁则保证了样品的流动性和检测的准确性。最后,传感器和电极的重新安装确保了设备重新投入使用的可靠性。校准操作 :详细介绍了使用pH 7.0标准液进行传感器校准的过程,这是确保传感器准确读取pH值的关键一步。随后,视频指导用户如何正确更换标准液,并进行pH 4.0标准液的校准操作,这一步骤对于保持传感器测量精度至关重要。通过这些实物演示视频,不仅提供了详实的操作步骤,更通过直观的展示方式,使用户能够深入理解设备的工作原理和操作要点。这种形式的指导不仅增强了用户对设备操作的信心,也大大提高了工作效率,减少了操作错误的可能性,确保了水质检测的准确性和可靠性。
哈希公司推出的这一系列演示视频是对其在水质分析仪器制造领域专业水平的再次证明。通过这些视频,哈希不仅传递了实用的操作技巧,还展示了其对提高水质守护者工作效率和操作便利性的重视。对于广大用户而言,这无疑提供了一个学习和提升的宝贵机会,有助于他们更加轻松、高效地完成水质检测设备的维护及校准工作。具体视频内容请查看哈希官网。
相关参考资料:哈希(HACH)中国官网:Polymentron8362SC 超纯水pH / ORP传感器
视频观看链接:https://www.hach.com.cn/news/lushuijianceshe
相关问答
什么是哈希表大小?
哈希表大小通常指的是哈希表中的桶或槽的数量,它决定了哈希表可以容纳多少键值对。桶或槽的数量可以根据需要进行调整,以提高哈希表的性能和容量。哈希表大...
哈希仪表仪器推荐比较好的经销商?
[回答]没有了解过,但是现在我觉得需要了解了主要,现在环保查的真的挺严格的,一些生产型的厂子一定要做好前期的废气废水处理。我给你推荐一家比较靠谱的...
哈希仪表大概价格需要多少?
[回答]我们近期也想采购呢,但是一直没找到合适的生产厂家,有的就是价格不行太贵,还有的是听别人厂家的服务不太好,所以一直在纠结中不知道选择哪家公司呢,...
二次探测再散列设哈希表长M=14,哈希函数H(key)=keymod11.表...
[最佳回答]49mod11是5,和38那里冲突了,D=H(key)=5,ND=(D+di)%m,di先取1*1,得到ND=6,和61冲突;于是再是ND=(D+di)%m,di取2*2,得到ND=(5...
srayon是什么意思?
去中心化(p2p)的采用JSON格式基于UDP连接方式使用分布式哈希表的路由协议。非常有意思的东东,最近去中心化(p2p)很火啊。去中心化(p2p)的采用JSON格...
哈希函数的哈希表的构造方法?
关于这个问题,哈希函数是一种将任意大小的数据映射为固定大小值的函数。哈希表是基于哈希函数实现的数据结构,用于高效地存储和查找数据。哈希表的构造方法包...
请问哈希溶氧仪探头LDO的使用方法,–960化工网问答
按照说明书,讲电极接在仪表上,新探头的话,先将清洗液倒入膜头,静置3分钟,要3...请问哈希溶氧仪探头LDO的使用方法,960化工网专业团队、用户为您解答,有请问哈...
哈希表的查找效率取决于什么?
哈希表的查找效率取决于:1.哈希函数2.处理冲突的方法3.哈希表的装填因子哈希表的理想情况是无需比较一次存取便能找到所查的记录,但是在实际应用中,哈希表...
dht和dmp有什么区别?
DHT(分布式哈希表)和DMP(数据管理平台)是两个不同的概念。DHT是一种分布式系统,用于存储和检索大量数据的分布式哈希表。它将数据分布在多台计算机上,每台...
psamethod怎么加速?
2.使用并行计算,利用多核处理器或分布式计算来加快运算速度。3.使用更高效的数据结构和算法,如哈希表、索引等。4.使用硬件加速,如GPU加速、FPGA加速等。5...