什么是哈希,哈希表,哈希函数,哈希碰撞?

article/2025/9/22 18:20:14

什么是哈希?

比方我有个原始值,S=[“老铁双击666”,‘感谢老铁送的飞机’],
通过某种算法(比如java的hasecode(获得变量的物理地址))得到的666这个就是“哈希码“(将字符串转换成尽可能不重复的int类型数字),
然后通过“哈希算法“(如取余法等)获得的值比如1, 这个1就是“哈希值“,存储“1对应老铁双击666“这些关系的就是哈希表。

说明一下:上面的取余运算是666%N,N在下图的意思中是3,正常是count(S)/5,太长会产生很多空项,太短很多值会很长变成链式搜索

什么是哈希冲突?

1.拉链法:

在这里插入图片描述
上图为什么1位置后面有两个数据呢?因为其他值经过哈希运算后拿到的哈希值也可能是1,这就是哈希冲突(哈希碰撞),解决方法有很多,链地址法适用于经常进行插入和删除的情况。

2.开放地址法:

开放地址法又分线性探测法和双重哈西法

线性探测法
(图为线性探测法)

线性探测法

假设元素29哈希运算后还是29
插入元素29:元素29的哈希值为29,29%14=1,但1号元素已经有数值15了,然后检查下一个元素(2号元素),但2号元素已经有数值30了,然后检查下一个元素(3号元素),3号元素为空,插入到3号元素
搜索元素29:元素29的哈希值为29,29%14=1,检查1号元素,15!=29;然后检查下一个元素(2号元素),30!=29;然后检查下一个元素(3号元素),29=29,返回数值,查找完毕。

双重哈西法

又称再哈西法,再原来哈西函数的基础上再准备一个哈西函数2,如地址冲突,运行函数2,如又冲突,则函数2得到的值加一,再加二直到不在冲突。

总结

hash table哈希表是基于数组的一种存储方式,其存储上就是用于存储键值对(<key,value>)的集合(数组)。当要存储一个数据的时候,首先用一个函数计算 数据的地址,然后再将数据存进指定地址位置的数组里面。这个函数就是哈希函数,而这个数组就是哈希表,哈希的主要应用是哈希表和分布式缓存


注:自己的理解归纳,有错误敬请留言指正。

http://chatgpt.dhexx.cn/article/D4NKaseu.shtml

相关文章

解决哈希碰撞的方法

什么是hash表 根据设定的哈希函数H(key)和处理冲突的方法将一组关键字映像到一个有限的连续的地址集&#xff08;区间&#xff09;上&#xff0c;并以关键字在地址集中的“像”作为记录在表中的存储位置&#xff0c;这种表便称为哈希表&#xff0c;这一映像过程称为哈希造表或…

公网IP/内网IP:

转自&#xff1a;http://hi.baidu.com/qkjzsjqsehailte/item/1042151cc0959f426926bbb4 IP地址分配 IP地址标识着网络中一个系统的位置。我们知道每个IP地址都是由两部分组成的&#xff1a;网络号和主机号。其中网络号标识一个物理的网络&#xff0c;同一个网络上所有主机需要同…

公网ip、内网ip

首先解释一下“内网”与“外网”的概念&#xff1a; 内网&#xff1a;即所说的局域网&#xff0c;比如学校的局域网&#xff0c;局域网内每台计算机的IP地址在本局域网内具有互异性&#xff0c;是不可重复的。但两个局域网内的内网IP可以有相同的。 外网&#xff1a;即互联网&a…

什么是公网IP和内网IP?

1、引言 搞网络通信应用开发的程序员&#xff0c;可能会经常听到外网IP&#xff08;即互联网IP地址&#xff09;和内网IP&#xff08;即局域网IP地址&#xff09;&#xff0c;但他们的区别是什么&#xff1f;又有什么关系呢&#xff1f;另外&#xff0c;内行都知道&#xff0c…

内网地址与公网地址及作用

下个礼拜就要过年喽 每天离假期更近了一步&#xff0c;就充满了动力 大家回家路上也要注意防护安全哦 ———————————————————— 一般内网指的就是我们园区内网&#xff0c;用的地址一般都是私有地址 私有地址在RFC1918草案中被提到&#xff0c;指的就是10…

java如何获得内网ip、外网ip、以及如何根据ip查询地址

今天突发奇想地想要用java写一个小的工具类。 用来实现如何获得本机的内网ip&#xff0c;外网ip和根据ip获得相应的地址。 花了几个小时才弄清&#xff0c;然后整理了一下&#xff0c;希望有用。 首先要明白以下三种ip地址的区别&#xff1a; &#xff08;1&#xff09;127.0.0…

简单介绍 内网与外网IP地址,域名,子网掩码,网关与路由器,ping

IP地址 IP地址是在网络给主机分配的地址如53.159.232.5或者192.168.1.1 。具体格式就是00000000.00000000.00000000.00000000&#xff0c;32位二进制&#xff0c;平时都用十进制。 但是主机在网络上不是一个主机连一个主机&#xff0c;而是网络连接网络&#xff0c;在一个网络…

局域网固定内网IP地址的方法(亲测有效)

公司有十来台电脑&#xff0c;想要做文件共享&#xff0c;但是碍于内网IP经常变动共享文件很不方便。 网上查了一些资料&#xff0c;局域网中的电脑ip若不是设置固定的话&#xff0c;一般都是动态获取的ip&#xff0c;若是需要固定ip&#xff0c;那要如何设置呢&#xff1f; 经…

查询自己的IP地址(内网和外网)

查询自己的内网IP和外网IP的方法&#xff0c;以及判断是否直接连接到公网 本方法使用命令行&#xff0c;无需其他软件 内网IP&#xff0c;即局域网IP&#xff1a; 打开cmd窗口&#xff0c;输入 ipconfig 后回车 IPv4地址一栏下即为内网IP&#xff0c;我的电脑是192.168.3.19 顺…

192.168.和10.0.开头的IP、内网IP段、IP简介、分类——(IP观止)

在这三类地址中&#xff0c;绝大多数的IP地址都是公有地址&#xff0c;需要向国际互联网信息中心申请注册。但是在IPv4地址协议中预留了3个IP地址段&#xff0c;作为私有地址&#xff0c;供组织机构内部使用。 这三个地址段分别位于A、B、C三类地址内&#xff1a; A类地址&…

VS2019安装+IVF2020安装+abaqus2021安装+关联(亲测有效附安装包)

VS2019安装IVF2020安装abaqus2021安装关联&#xff08;亲测有效附安装包&#xff09; 0. 说明1. 安装与汉化abaqus20211.1 下载解压安装包1.2 参考以下链接的安装步骤安装1.3 安装注意事项和提示 2. VS2019安装IVF2020安装2.1 下载解压VS2019在线安装包2.2 安装配置VS20192.3 下…

abaqus一维固结模拟

初学者学习ABAQUS时&#xff0c;真可谓一头雾水&#xff0c;为什么&#xff1f; 第一因为它是全英文界面&#xff08;不过这是可以汉化的哦&#xff09;&#xff1b;第二因为它是有限元分析软件&#xff0c;俗称“CAE”即计算机辅助求解分析复杂工程&#xff08;不同于CAD即计算…

Abaqus安装在lincense server1出错

问题描述&#xff1a;LMtools显示启动成功&#xff0c;但是安装abaqus时填写过License Server1后测试链接不上 原因&#xff1a;Lincense server1中应为27011主机名&#xff08;格式不要错了&#xff09;&#xff0c;而我输入成了27500主机名&#xff08;原因是找的一个安装教程…

基于Python向Abaqus导入txt、dat数据(附abaqus中python二次开发课程)

这次推送聚焦于解决采用Python向Abaqus里导入txt、dat数据的问题&#xff08;dat文件只需要将txt文件的后缀名改为dat就可以生成dat文件&#xff09;&#xff0c;Abaqus基于Python读入txt、dat数据主要有read()、readlines()、readlines()、numpy.loadtxt()函数&#xff0c;导入…

ABAQUS后处理常用功能

ABAQUS分析完成后&#xff0c;除了看看动画&#xff0c;看看云图&#xff0c;可能还需要进行其他操作&#xff0c;此处记录自己常用的一些功能在哪设置。 使用版本6.14&#xff0c;进行了中文汉化 修改背景颜色 修改图例坐标轴标题文字大小 修改图例应力范围颜色 不显示模型上…

搅拌摩擦焊有限元仿真分析学习笔记(一)——comsol、abaqus相关案例学习

目录 COMSOL搅拌摩擦焊官方案例△ 原理及分析△ 操作流程△ 分析 ABAQUS搅拌摩擦焊有限元仿真△ 操作流程○ 创建模型○ 配置材料属性○ 模型装配○ 分析步设置○ 创建相互作用○ 创建载荷○ 划分网格○ 建立温度场○ 运算求解○ 结果与分析 △ 总结分析 ABAQUS搅拌摩擦焊CEL模…

abaqus帮助文档翻译,中英对照

abaqus2016在线帮助文档因为比较简洁&#xff0c;打开响应速度较快&#xff0c;相对于需要注册的高版本帮助文档算是一大优点。 但文档内容对于英文水平一般的同学不太友好&#xff0c;为了提高阅读效率隧寻找网页翻译的方法。 1.浏览器右键的网页翻译&#xff0c;实测无效。…

Abaqus运行脚本print时中文乱码问题

脚本打印输出时出现乱码问题 运行脚本想要直接输出位移数据&#xff0c;发现中文打印出现乱码。 #!/usr/bin/env python # -*- coding:utf-8 -*- #codingutf-8a 位移数据为:0.25555 print(a)运行上面代码出现以下情况 解决办法 将打印内容使用UTF-8解码&#xff0c;然后使…

Abaqus相关报错合集

1&#xff0c;Abaqus安装后打不开的解决办法 打开后显示错误提示&#xff08;如下图&#xff09;&#xff1a; &#xff08;如果不是此提示框&#xff0c;请尝试用右键管理员方式运行Abaqus CAE&#xff09; 解决方案 第一步&#xff1a;打开开始菜单 第二步&#xff1a;打开…