勇往直前的专栏

写给以后的自己

不同时重写equals和hashCode又会怎样?

作者:flyhero 微信公众号:码上实战(ID:Push-Code) 可能一问到equals和hashCode相关的问题,就会有人讲他们的自反性,对称性,一致性,传递性等几条约定了,此时我不得不佩服,这么多约定竟然都能记得,但我不知道你是不是真的理解呢。 一、我不同时重写又能如何呢? ...

2019-06-11 20:36:03

阅读数 257

评论数 0

科普:String hashCode 方法为什么选择数字31作为乘子

1. 背景 某天,我在写代码的时候,无意中点开了 String hashCode 方法。然后大致看了一下 hashCode 的实现,发现并不是很复杂。但是我从源码中发现了一个奇怪的数字,也就是本文的主角31。这个数字居然不是用常量声明的,所以没法从字面意思上推断这个数字的用途。后来带着疑问和好奇...

2018-11-13 11:21:45

阅读数 122

评论数 0

对一致性Hash算法,Java代码实现的深入研究

一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法、一致性Hash算法的算法原理做了详细的解读。 算法的具体原理这里再次贴上: 先构造...

2018-11-10 13:47:11

阅读数 75

评论数 0

MemCache详细解读

MemCache是什么 MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字...

2018-11-10 13:30:34

阅读数 57

评论数 0

哈希碰撞与生日攻击

一、哈希碰撞是什么? 所谓哈希(hash),就是将不同的输入映射成独一无二的、固定长度的值(又称"哈希值")。它是最常见的软件运算之一。 如果不同的输入得到了同一个哈希值,就发生了"哈希碰撞"(collision)。 ...

2018-10-30 08:13:37

阅读数 669

评论数 0

一致 Hash 算法

当我们在做数据库分库分表或者是分布式缓存时,不可避免的都会遇到一个问题: 如何将数据均匀的分散到各个节点中,并且尽量的在加减节点时能使受影响的数据最少。 Hash 取模 随机放置就不说了,会带来很多问题。通常最容易想到的方案就是 hash 取模了。 可以将传入的 Key 按照 index ...

2018-09-06 14:07:13

阅读数 92

评论数 0

提示
确定要删除当前文章?
取消 删除