接下来的文章是记录自己曾经的盲点,同时也透漏了自己的发展历程(可能发展也算不上,只能说是瞎混)。当然,一些盲点也在工作和探究过程中慢慢有些眉目,现在也愿意发扬奉献精神,拿出来和大家分享一下。开门见山,直接入题在进行Join的时候,数据库优化器是怎么进行联接呢?下面我们也详细的讲述。在SQL Server中,有3中Join的策略——哈希匹配(Hash)、合并(Merge)、嵌套循环(Nested L
转载
2024-02-05 01:24:10
55阅读
# MySQL 中的哈希索引与哈希冲突
在数据库管理系统中,索引是一种加速数据检索的重要工具。MySQL 中提供了多种索引类型,其中哈希索引因其高效的查找性能受到了不少开发者的欢迎。本文将阐述哈希索引的工作原理以及面对哈希冲突时的解决方法,并提供一些代码示例以帮助理解。
## 什么是哈希索引?
哈希索引使用哈希表的结构来存储数据。具体来说,数据的键值会通过哈希函数转换为一个固定长度的哈希值,
原创
2024-09-29 03:31:39
100阅读
哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表称为哈希表。这种方法的基本思想是:首先在元素的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),f称为哈希函数。创建哈希表时,把关键字为k的元素直接存入地址为f(k)的单元;以后当查找关键字为k的元素时,再利用哈希函数计算出该元素的存储位置p=f(k),从而达到按关键字直接存取元素的目的。当关键字集合很大时,关键字值不同的元
转载
2024-01-09 19:38:22
68阅读
1. 哈希表就是数组+哈希函数,其核心思想是利用数组可以按照下标索引随机访问数据的特性。2. 哈希冲突的原因:数组的有界,哈希函数的计算,哈希值的映射。3. 解决哈希冲突的方法:数组扩容,设计优秀的哈希函数,开放寻址法和链表法为哈希值找到合适的映射。4. 开放寻址法,插入、查找、删除都需要相
原创
2022-03-08 17:12:27
647阅读
1. 哈希表就是数组+哈希函数,其核心思想是利用数组可以按照下标索引随机访问数据
原创
2021-11-30 17:21:01
1507阅读
传送门 特别有意思的一道题 用了“分块”思想 没打代码,嘿嘿 ...
转载
2021-08-17 22:27:00
157阅读
2评论
哈希冲突详解一般来说哈希冲突有两大类解决方式[1]
Separate chaining
Open addressing
Java 中采用的是第一种 Separate chaining,即在发生碰撞的那个桶后面再加一条“链”来存储,那么这个“链”使用的具体是什么数据结构,不同的版本稍有不同:在 JDK1.6 和 1.7 中,是用链表存储的,这样如果碰撞很
转载
2023-12-19 17:48:32
56阅读
哈希冲突的产生原因哈希是通过对数据进行再压缩,提高效率的一种解决方法。但由于通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致经过哈希函数处理后仍然有不同的数据对应相同的值。这时候就产生了哈希冲突。产生哈希冲突的影响因素装填因子(装填因子=数据总数 / 哈希表长)、哈希函数、处理冲突的方法解决哈希冲突的四种方法1.开放地址方法 (1)线性探测 按顺序决定值时,如果某数据的值已经存在,则
转载
2023-08-07 21:18:18
159阅读
哈希桶:哈希桶就是盛放不同key链表的容器(即是哈希表),我们可以把每个key的位置看作是一个指针,该指针所指向的位置里放了一个链表,可以认为是指针数组,故该方法也叫开链式。 相比闭散列,哈希桶提高了空间利用率:在实现哈希表时,常见的方法是线性探测、二次探测,这两个算法的具体实现可以查看我的博客。但是这两个算法有一个共同点就是:空间利用率低。为
原创
2016-05-11 10:20:55
10000+阅读
HashMap 采用一种所谓的“Hash 算法”来决定每个元素的存储位置。当程序执行 map.put(String,Obect)方法 时,系统将调用String的 hashCode() 方法得到其 hashCode 值——每个 Java 对象都有 hashCode() 方法,都可通过该方法获得它的 hashCode 值。得到这个对象的 hashCode 值之后,
转载
2023-11-24 15:57:54
105阅读
背景其实这个问题我之前也看到过,刚好在前几天,洪教授在某个群里分享的一个《一些有意思的手段.pdf》,我觉得这个话题应该还是有不少人不清楚的,今天我就准备来“实战”一把,还请各位看官轻拍。洪强宁(洪教授),爱因互动创始人兼 CTO,曾任豆瓣首席架构师,为 Python 用户组(CPUG)的创立者之一。Hash 冲突啥叫 Hash 冲突?我们从 Hash 表(或者散列表)讲起,我们知道在一个
转载
2024-01-22 22:35:11
102阅读
class HashMap<K,V> extends AbstractMap<K,V>HashMap put()HashMap get()1.put() HashMap put()方法源码如下:public V put(K key, V value) {
if (key == null)
r
转载
2023-06-15 21:24:20
126阅读
目录一.引言二.哈希表和哈希冲突概念1.通过取模运算来建立一个简单的哈希表2.什么是哈希冲突3.哈希函数设计原则4.常见的哈希函数(1)直接定址法(2)除留余数法(3)平方取中法(4)折叠法(5)随机数法5.散列表的负载调节因子(与解决哈希冲突有关)三.解决哈希冲突的方法1.解决哈希冲突的第一种方法(闭散列)(1)线性探测法(2)二次探测法2.开散列/哈希桶来解决哈希冲突(解决哈希冲突的第二种方法
转载
2023-11-27 19:39:53
74阅读
在Java中,哈希碰撞(Hash Collision)是指不同的输入数据产生了相同的哈希值。哈希函数是将输入映射到固定大小的哈希值的函数,而碰撞指的是两个不同的输入映射到了相同的哈希值。 哈希碰撞可能导致哈希表、哈希集合或哈希映射等数据结构的性能下降。当两个不同的对象映射到相同的哈希值时,它们会被存储在哈希表的同一个位置,导致查找、插入和删除操作的效率降低。在极端情况下,哈希碰撞可能使得哈希表
转载
2023-08-19 15:23:53
84阅读
常用数据结构基本上是面试必问的问题,比如HashMap、LinkList、ConcurrentHashMap等。关于HashMap,有个学员私信了我一个面试题说: “HashMap是怎么解决哈希冲突的?”关于这个问题,我们来模拟一下普通人和高手对于这个问题的回答。普通人:嗯.... HashMap我好久之前看过它的源码,我记得好像是通过链表来解决的!高手:嗯,这个问题我从四个方面来回答。1.要了解
转载
2024-02-21 17:28:04
66阅读
Hash算法解决冲突的方法一般有以下几种常用的解决方法 1, 开放定址法: 所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入 公式为:fi(key) = (f(key)+di) MOD m (di=1,2,3,……,m-1) ※ 用开放定址法解决冲突的做法是:当冲突发生时,使用某种探测技术在散列表中形成一个探测序列。沿此序列逐个单
转载
2023-10-23 21:38:07
103阅读
文章目录哈希表概念哈希函数的构造平均数取中法折叠法保留余数法哈希冲突问题以及解决方法开放地址法再哈希函数法公共溢出区法链式地址法哈希表的填充因子代码实现哈希函数添加数据删除数据判断哈希表是否为空遍历哈希表获得哈希表已存键值对个数 哈希表概念散列表,又称为哈希表(Hash table),采用散列技术将记录存储在一块连续的存储空间中。在散列表中,我们通过某个函数f,使得存储位置 = f(关键字),这
转载
2023-08-16 21:06:50
90阅读
1 Hash算法 1 定义 哈希算法:也叫散列算法,就是把任意值(key)通过哈希函数变换为固定长度的 key 地址,通过这个地址进行具体数据的数据结构。 2
转载
2023-08-15 14:35:49
192阅读
# 哈希函数MySQL
## 引言
哈希函数是一种将数据映射为固定长度的值的函数。在计算机科学中,哈希函数广泛应用于数据结构和密码学等领域。在MySQL数据库中,哈希函数被用于加密密码、生成唯一标识符等场景。本文将介绍哈希函数在MySQL中的使用方法,并提供相关的代码示例。
## 哈希函数概述
哈希函数是一种将输入数据映射为固定长度的输出值的函数。它具有以下特点:
- 输入数据的任意变化
原创
2023-12-04 04:41:36
89阅读
哈希冲突详解一般来说哈希冲突有两大类解决方式[1]Separate chainingOpen addressingJava 中采用的是第一种 Separate chaining,即在发生碰撞的那个桶后面再加一条“链”来存储,那么这个“链”使用的具体是什么数据结构,不同的版本稍有不同:在 JDK1.6 和 1.7 中,是用链表存储的,这样如果碰撞很多的话,就变成了在链表上的查找,worst case
转载
2020-11-12 10:46:00
441阅读
2评论