半岛体育- 半岛体育官方网站- APP下载新手小白浅析哈希表
2026-01-23半岛,半岛体育,半岛体育app,半岛官网,半岛电竞,半岛真人,半岛棋牌,半岛体育官网注册,半岛体育官方app下载,半岛体育app下载,半岛体育怎么样,半岛体育官网,半岛体育登录入口,半岛体育官方网站
哈希函数:根据关键字设计的,有很多种函数,主要原理是根据数组的大小进行求模运算,其数组的大小一般设计为质数,因为需要均匀的散布
一般我们从头遍历到尾,先去查1然后2,最后3,如果有一万个、那岂不是需要遍历一万次呢,此种做法非常慢,不可以取
数组的结构可以使我们快速定位到3,数组有下标、索引的概念,把学号当做索引,根据索引计算对应的元素内存在哪里,
我们只需要看a[3]所对应的值是什么,不需要看a[1],a[2],,这样查询非常块,就算有一万个元素,也可以一步到位,不需要从头遍历到尾
以上也为一种意义上的哈希表,把key转换为索引,数组的元素存的是key对应的value的值
像HashMap里面有写好哈希表,当存储一对key-value键值对元素的时候,把key拿出来,通过一个hash函数,找到一个内存地址,然后key和value键值对Entry放在对应的内存地址上
举例:存学号1:张三把1 拿出来通过hash函数,找到内存地址a ,内存地址a上对应着键值对 1:张三1 a:1 张三2 b:2 李四3 c:3 王五
定义:两个不同的key,通过同一个hash函数,得到的相同的内存地址,此种情况为哈希碰撞
此时有数据 4:赵六,拿key 4 通过hash函数算的内存地址也是c,但此时内存地址c已经存储了元素,此种现象为哈希碰撞O(K),k为碰撞的元素个数
每个哈希表节点都有一个 next 指针, 多个哈希表节点可以用 next 指针构成一个单向链表, 被分配到同一个索引上的多个节点可以用这个单向链表连接起来,这就解决了键冲突的问题,此种方案叫链表式解决方案。
思想:与链表式解决方案相比,此种方案主要区别是不用next指针,把其它下标的位置都对外开放
tips:该方法不是很好,很容易把数字聚集到一个地方,查找容易浪费性能,执行很多次
如果遇到冲突,就往下一个地址寻找空位,新位置=原下标位置+i (i是查找的次数)如图:以下关键字2,38,28,4,12存入理解
hash(2)=2,此时数组下标的位置有元素,已被占用,就往下找,数组下标3的位置为空,因此关键字2存在数组下标为3的位置
hash(28)=2,下标2位置已被占用,由于是线性探测法,可一直往下找到空的位置,所以关键字28放入下标为4的位置,同理,关键字4存入下标为5的位置
hash(12)=12,位置已被占用,就会转回来从头开始寻找,存入下标为0的位置
如果遇到冲突,就往(原始位置+i²)的位置寻找空位,i是查找的次数即新位置=原始位置+i²1²,2²,3²,4²,5²,6² 距离越来越大比较分散,不扎堆,解决了线性探测法扎堆的问题
hash(2)=2,下标为2的位置已被占用,用平方探测法探测下一个位置是否为空,第一次探测1²=1,是空的,可以直接放入
hash(28)=2,下标为2位置已被占用,平方探测法探测第一次探测1²,下标2+1²=3的位置被关键字2占用,第二次探测2²,下标2+4=6的位置未被占用,可直接放入
hash(19)=6,下标为6的位置被占用,平方探测法探测第一次探测1²,下标6+1²=7的位置未被占用,可直接存入
如R=7: hash2(关键字)=7-(关键字 % 7) 也就是说二次hash的结果在1-7之间,不会等于0,(如果为0,则新位置=原位置,不合理)
如遇到冲突,新位置=原位置+i*hash2(key) 可以让数字没有太多规律的分配
hash(2)=2,数组下标为2的位置被占用,出现冲突,需要计算hash2(2)=5,新位置下标=2+5=7,位置为空,可以直接放入
场景:分布式缓存中,有三条服务器S0,S1,S2 同时有3万张图片想均匀的缓存到3台服务器
hash算法:hash(图片名称)=图片名称 mod 机器数3 结果为0,1,2三种情况,正好与服务器编号对应,缓存对应的服务器上
缺陷:服务器增加一台,由3台变成4台,同一图片名称hash函数计算,除数由3变成4,余数变化,即该缓存的服务器编号变化了
比如原先的图片名称6 ,hash(6)=6%4=2,程序会到服务器S2上去寻找图片,但实际上是存储在服务器S0上,读取不到数据。由于服务器数量发生变化,大量缓存在同一时间失效,称为缓存雪崩此时,只有去后端服务器上获取数据,压力都在后端服务器,整个系统可能被压垮,为避免此问题,需使用一致性hash算法。
有一个圆环(hash环),有2的32次方个点组成,还是有A,B,C三条服务器
hash(A)=A%(2的32次方) 得出的整数代表服务器A,hash环上必定有一点对应,服务器A映射到hash环上,服务器B、C一样的方法。
从图片的位置开始,顺时针查找,遇到的第一台服务,为该图片应该缓存的服务器
假设有a.jpg,b.jpg,c.jpg,由以下图片和服务在hash环上的位置,由此可确定
此时,加入增加一台服务器D,按一致性hash算法规则,现将服务器D映射到hash环上,此时一部分图片延顺时针方向遇到的服务器由A变成服务器D,增加一台服务会导致一小部分图片无法访问,但大部分图片顺时针方向遇到的服务器不变,可以正常访问。
缓存服务器的数量发生变化,只有一部分缓存失效,缓存依然能分担整个系统的大部分压力,不像hash算法,不是所有的压力同一时间集中在后端服务器上
以上hash算法,一致认为三条服务器均匀的映射到了hash环上,但在实际映射中,服务映射到hash环上很有可能是斜的,叫hash环偏斜
hash环偏斜时,大部分的缓存对象很有可能缓存到一台服务器上,导致缓存不均匀,三台服务器没有被平均使用。此时,如果缓存较多的那台服务器出现故障,由于失效缓存太多,在极端情况下,很有可能引起系统的故障,要想让服务器均匀分布在服务器上,服务器尽量多,但实际服务器数量固定,最好方案引入虚拟节点。
比如服务器A,映射出A1,A2,A3…An,n个虚拟节点,将这些虚拟节点加入hash环,引入后,hash化上的虚拟节点越多,服务器节点越多,缓存被均匀分布的概率越大,这样在一定程度上减小hash环倾斜带来的影响。
建立一个特殊存储空间,专门放冲突的数据,此种方法使用于数据和冲突较少的情况下
1月21日,“苍顽奇骨——陶博吾诗书画艺术展”“载文蕴艺——中国历代金石碑拓大展” “‘文明互鉴·一带一路’第三届图形印创新实验作品展暨西泠印社广东、香港、澳门社员作品展”“此间艺事:深圳美术馆人的50年艺术现场”等多场展览开幕式在深圳美术馆举办,同时也拉开了该馆“金石雅韵·笔墨
近期长春市连发多起针对商户的诈骗案件骗子冒充学校老师通过美团私信联系鲜花店、水果店以大额采购鲜花、水果为诱饵诱导商户添加微信随后发送伪造转账记录谎称公转私延迟到账再编造“不便出面”理由要求商户帮忙代购佛跳墙海鲜礼盒等贵重物品并垫资付款得手后直接拉黑失联!
山西警方通报:王某(女,35岁)冒充省领导,称能办理公务员入职,刑拘!
经查,自2022年12月至2025年11月期间,犯罪嫌疑人王某冒充陕西省领导,以能为受害人子女办理公务员入职为由,虚构“向领导送礼”等事由,诈骗一名受害人共计人民币424万余元。
海军原中将副政委王征,因病医治无效,于1月3日在北京逝世,享年64岁。王征是河北省石家庄市人,1977年入伍,1981年加入中国。
冬春季节是“小火亡人”的高发期近日辽宁消防公布两起发生在居民家中的火灾亡人事故为公众敲响安全警钟短短48小时内4条鲜活生命戛然而止“我们发现一位女性遇难者在床上,另一位男性遇难者在床下。
四川交通广播2026-01-22 18:45:39今天(1月22日)15时许,江西高速交警四支队发布警情通报称:2026年1月21日19时许,在沪昆高速往湖南方向970km处(萍乡市境内)路段,因雨雪冰冻天气道路结冰,发生多车碰撞的交通事故,共造成1人死亡、4人受伤。
青海省公路桥梁工程集团有限公司党委副书记、总经理仁青才让接受纪律审查和监察调查据青海省纪委监委驻省交通运输厅纪检监察组、西宁市大通县监委消息:青海省公路桥梁工程集团有限公司党委副书记、总经理仁青才让涉嫌严重违纪违法,目前正接受青海省纪委监委驻省交通运输厅纪检监察组纪律审查和大通县
向华强曝李亚鹏曾在香港办派对为嫣然天使基金筹款:自己捐了几百万,王菲、刘嘉玲等众星捧场
1月22日, 向华强在直播中回忆,2013年李亚鹏为嫣然天使基金在香港举办派对,王菲、刘嘉玲等众多明星捧场,自己当时也捐了几百万,嫣然天使基金由演员李亚鹏与王菲共同于2006年创立,旨在为唇腭裂儿童提供医疗救助。
寒假陆续开启,孩子们正迎来轻松时光,春节也日渐临近,但“神兽出笼”后的安全防护却容不得丝毫松懈。冬季低温冰冻、雨雪天气多发,叠加年前家长事务繁忙,各类安全隐患极易滋生。以往的无数案例都警示着我们:安全意识一旦失守,家庭幸福可能瞬间崩塌。
文木可法拉利老了还是法拉利。这句话简直是为周润发量身定制的。谁能想到年过70的周润发依旧帅的“惊为天人”。MAMA颁奖典礼上的一个神级运镜更是将周润发那种气场推到顶点。他哪怕只是缓缓走到话筒架前,站在那里微微颔首,都自带 “大佬登场” 的氛围感,完全看不出是年过七旬的人!


