没有合适的资源?快使用搜索试试~ 我知道了~
JiangLiruii#algorithm#第18讲-散列表(中)1
需积分: 0 0 下载量 32 浏览量
2022-07-25
14:29:16
上传
评论
收藏 6KB MD 举报
温馨提示
![preview](https://csdnimg.cn/release/download/static_files/pc/images/thumbnail/UNKNOWN.png)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
试读
如何设计散列函数散列函数的好坏直接决定了散列表冲突的概率大小, 也直接决定了散列表的性能, 好的散列表需要满足以下几点:设计不能太复杂, 否则会消耗很多的计算时
资源推荐
资源详情
资源评论
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083646.png)
![rpm](https://img-home.csdnimg.cn/images/20210720083646.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![jar](https://img-home.csdnimg.cn/images/20210720083455.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![tar](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![md](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
# 散列表中: 如何打造一个工业级水平的散列表
## 通过散列表上已知散列表的查询效率不能笼统的说成是 O(1), 跟散列函数, 装载因子, 散列冲突等都有关系.
### 在极端情况下, 有恶意的攻击者通过设计的构造数据, 使所有的数据都到一个槽里, 如果我们使用的是基于链表的冲突解决办法, 那么散列表就会退化为链表, 查询的时间复杂度也从 O(1)急剧退化到O(n).如果有10w 个数据, 退化后的查询效率就下降了10w 倍, 从时间上来说, 如果之前查询只需要0.1s, 现在就需要1w 秒 ,这回极大的消耗 CPU 或线程资源, 导致无法响应请求, 达到拒绝服务(DoS)的攻击目的.这也是**散列表冲撞的基本原理**
## 如何设计一个可以应对各种异常的工业级散列表, 避免在散列冲突的情况下, 散列表的性能急剧下降并且能抵抗散列碰撞攻击?
### 如何设计散列函数
#### 散列函数的好坏直接决定了散列表冲突的概率大小, 也直接决定了散列表的性能, 好的散列表需要满足以下几点:
- 设计不能太复杂, 否则会消耗很多的计算时间.
- 生成的值尽可能随机并且均匀分布, 1是最小化散列冲突2是即使冲突, 散列到每个槽里的数据也会比较平均
#### 几个常用的散列函数设计方法
- 数据分析法: 通过分析数据得出散列值,手机尾号后四位是比较不容易冲突的, 反之, 手机号的前三位的冲突概率大很多, 所以选择后四位作为散列值.
- 公式法: 上次说到的 word 拼写检查, 我们可以将单词中每个字母的 ASCII 码值进行相加, 然后再跟散列表的大小求余, 取模, 作为散列值. 比如英文单词 nice
点击阅读更多
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/905b96daf780412da8debde3356d454e_weixin_35735685.jpg!1)
神康不是狗
- 粉丝: 31
- 资源: 338
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 基于MATLAB的车牌识别系统
- Screenshot_20240628_090154.jpg
- 符合IEC 61850标准的数字化变电站内部通信的实现
- 1688 7350_20240628104206.amr
- 基于python实现的linux后台日志监控小项目
- 在matlab中生成OFDM信号源,并画图观察频谱
- UPA2712GR-VB一款P-Channel沟道SOP8的MOSFET晶体管参数介绍与应用说明
- 基于python实现的福利图嗅探器工具
- 基于yolov5-MobileNeXt的猫种类识别,本项目修改了yolov5的骨干网络,用于猫种类识别(整套项目源码)
- 毕业设计springboot社区医院管理系统源码含文档含教程
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)