MySQL 索引结构 hash 有序数组 除了最常见的树形索引结构,Hash索引也有它的独到之处。 Hash算法 Hash本身是一种函数,又被称为散列函数。 它的思路很简单:将key放在数组里,用一个hash算法把不同的key转换成一个确定的value,然后放在这个数组的指定位置 相同的输入永远可以 ...
分类:
数据库 时间:
2020-07-05 15:44:04
阅读次数:
74
讲解分布式数据存储的核心算法,数据分布的算法 hash 算法 -> 一致性 hash 算法(memcached) -> redis cluster 的 hash slot 算法 用不同的算法,就决定了在多个 master 节点的时候,数据如何分布到这些节点上去,解决这个问题 看到这里的时候,已经明白 ...
分类:
编程语言 时间:
2020-07-04 18:41:36
阅读次数:
62
一致性Hash算法 概念:先构造一个长度为232的整数环(这个环被称为一致性Hash环),根据节点名称的Hash值(其分布为[0, 232-1])将服务器节点放置在这个Hash环上,然后根据数据的Key值计算得到其Hash值(其分布也为[0, 232-1]),接着在Hash环上顺时针查找距离这个Ke ...
分类:
其他好文 时间:
2020-07-03 19:42:35
阅读次数:
43
三种散列表的公共部分 三者都是存储键值对的Key-Value key会被映射到数组索引, Entry对象则是数组中对应的值。 Key通过Hash算法得到哈希码(HashCode), 通过哈希码与数组中的索引对应。 因此所有的键值对Hash表都是无序储存的。 键值对的查找过程: (hashCode() ...
分类:
其他好文 时间:
2020-06-30 16:04:40
阅读次数:
88
simhash是google用来处理海量文本去重的算法。 google出品,你懂的。 simhash最牛逼的一点就是将一个文档,最后转换成一个64位的字节,暂且称之为特征字,然后判断重复只需要判断他们的特征字的距离是不是 原理 simhash值的生成图解如下: 大概花三分钟看懂这个图就差不多怎么实现 ...
分类:
其他好文 时间:
2020-06-27 16:07:33
阅读次数:
63
在QT的Reference中无意看到了QString及其他类型数据结构内存的分配策略,翻译并记录一下。 在QString的数据结构中,QString通过一次附加一个字符来动态构建字符串。假设我们向QString字符串追加15000个字符。然后,当QString空间不足时,会发生以下18个重新分配的过 ...
分类:
其他好文 时间:
2020-06-09 20:22:18
阅读次数:
83
1.你知道HashMap底层的数据结构是什么样的吗? 底层最核心的数据结构是数组,我们构造一个map,往里面放入数据,比如我们放入key为张三,value为测试数据,对张三计算出一个hash值,根据这个hash值对数组进行取模,就会定位到数组里的一个元素中去 2.jdk1.8中对hash算法和寻址算 ...
分类:
其他好文 时间:
2020-05-31 22:10:53
阅读次数:
101
什么是哈希hash hash一类算法:该算法接收传入的内容,经过运算得到一串hash值 hash值的特点: 1.只要传入的内容一样,得到的hash值必然一样 >要用明文传输密码文件完整性校验 2.不能由hash值返解成内容 》把密码做成hash值,不应该在网络传输明文密码 3.只要使用的hash算法 ...
分类:
其他好文 时间:
2020-05-29 21:45:09
阅读次数:
90
Java的字符串拼接问题已经是老生常谈的问题了,目前遇到一个业务场景是,在游戏底层新使用了一套事件监听的组件,字符串作为事件的条件值,所以需要较为频繁的拼接和将数字转换为字符串,去匹配事件监听的条件。在条件值已知有限的情况下,可不可以通过空间换时间的方式,用HashMap缓存条件对应字符串的关系,去 ...
分类:
编程语言 时间:
2020-05-26 15:34:49
阅读次数:
72
问题 在解决分布式系统中负载均衡的问题时候可以使用Hash算法让固定的一部分请求落到同一台服务器上,这样每台服务器固定处理一部分请求(并维护这些请求的信息),起到负载均衡的作用。 但是普通的余数hash(hash(比如用户id)%服务器机器数)算法伸缩性很差,当新增或者下线服务器机器时候,用户id与 ...
分类:
编程语言 时间:
2020-05-24 18:04:15
阅读次数:
54