一:应用背景
hashMap是一个好东西,之前没有太多关注,直到看了阿里的OceanBase源码,其块缓存和行缓存使用了LRU(最近最少使用算法),这个算法我的项目也简单实现过,有点不同的是它的访问缓存是通过hashmap来获取,我的是普通的map。
二:hashMap特性
哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。其基本原理是:使用一个下标范围比较大的数组来存储元素。可以设计一个函数(哈希函数,也叫做散列函数),使得每个元素的关键字都与一个函数值(即数组下标,hash值)相对应,于是用这个数组单元来存储这个元素;也可以简单的理解为,按照关键字为每一个元素“分类”,然后将这个元素存储在相应“类”所对应的地方,称为桶,一个桶里面可以放多个元素!
三:代码
请参考https://github.com/alibaba/oceanbase/blob/master/oceanbase_0.4/src/common/hash/ob_hashmap.h