u8,u8国际,u8国际官方网站,u8国际网站,u8国际网址,u8国际链接,u8体育,u8体育官网,u8体育网址,u8注册,u8体育网址,u8官方网站,u8体育APP,u8体育登录,u8体育入口
哈希函数:根据关键字设计的,有很多种函数,主要原理是根据数组的大小进行求模运算,其数组的大小一般设计为质数,因为需要均匀的散布
一般我们从头遍历到尾,先去查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环倾斜带来的影响。
建立一个特殊存储空间,专门放冲突的数据,此种方法使用于数据和冲突较少的情况下
据新华社6日消息,美军南方司令部5日宣称,当天在太平洋东部对一艘“贩毒船”实施打击,打死船上2人。美军南方司令部在社交媒体上说,美军“南方之矛”联合特遣部队对一艘由“被认定的恐怖组织”运营的船只实施“致命打击”。
3死1伤!警方通报:嫌疑人李某(男,35岁),在警方抓捕过程中畏罪自杀身亡,案件正在进一步侦办中
2026年2月6日晚,海南省海口市公安局秀英分局发布警情通报:2026年2月3日8时许,秀英区某小区内发生一起致3死1伤刑事案件。
本次活动由河南省体育局、河南省精神文明建设办公室、河南省农业农村厅、河南省体育总会、郑州市人民政府联合主办,以“全民健身迎新春,健康活力谱新篇”为主题,旨在丰富春节期间城乡群众体育文化生活,传播健康生活方式,营造喜庆祥和的节日氛围与浓厚的全民健身氛围。
青岛一男子大扫除把旧冰箱卖了,母亲傍晚回家告诉他:冰箱里有现金、金银首饰、玉器挂件,“我把家底卖了”
【来源:半岛都市报】有时候同在一个屋檐下做子女的也想不到家里的犄角旮旯都藏着什么宝贝马上春节了各家都忙着大扫除友情提醒各位扔旧衣服旧被子旧家电旧家具时一定问一下父母别把藏在里面的金子一起扔了还得麻烦警察蜀黍找前阵子上海的张女士将旧衣服扔进小区垃圾桶过了好多天母亲才告诉她衣服里藏着
中央批准:韩松,被开除党籍!他曾任西安市委政法委书记、市人大常委会主任!
中央纪委国家监委网站2月6日消息,经中央批准,中央纪委国家监委对陕西省西安市人大常委会原党组书记、主任韩松严重违纪违法问题进行了立案审查调查。
涉嫌37年前在西贡龙虾湾参与杀害一名酒楼侍应的最后一名在逃疑犯——香港62岁男子梅耀强2月2日在泰国曼谷农卓区被捕,并将于2月5日下午被押返香港。
中国黄金宣布:2月7日起,线下门店及线上渠道在周六、周日及法定节假日,暂停办理贵金属回购业务
黄金巨头中国黄金宣布,调整贵金属回购业务规则!2月6日,“中国黄金”官微发布《关于贵金属风险提示及调整贵金属回购业务规则的公告》(以下简称《公告》)。《公告》称,近期受多重因素影响,贵金属价格波动显著加剧,不确定性持续上升。
紧急返航!海航HU492飞北京航班起飞后挡风玻璃破裂,有乘客拍到飞机空中放油,全机人员平安,风挡破裂原因调查中
2月7日凌晨,有乘客反映,海南航空HU492航班起飞后返航,疑似因为飞机挡风玻璃破裂导致。7日上午,现代快报记者联系到海南航空客服,工作人员表示该航班确实返航了,系统显示是因飞机故障原因。
别翻星座,别看塔罗。今天聊点硬的:这世上真有“命中注定”那个人吗?有。但真相是,那个人不是“找”到的,是“修”来的。三个字,拆开给你看。一、先戳破一个幻想:数据说,多数“爱情”死于第一个字某婚恋平台发布过一份高达10万人的抽样报告:超67%的分手原因,归结为“你不懂我”。
一边是互联网大厂为抢占AI入口广撒红包,另一边是腾讯、阿里市值哗哗往下掉,几天蒸发千亿。有意思的是,这时候有不少声音跳出来:“都怪国产AI!就是元宝和千问搞崩了市场情绪!”