漫画编程(一)

发布时间:2019年09月10日 阅读:235 次

  1.  hashmap

    java 中的 hashmap 冲突处理方法采用的是 链地址法

    (hash 冲突解决法:开发定址法:(线性探测再散列,伪随机探测再散列,平方探测再散列)

    再哈希法,链地址法,建立公共溢出区)

    初始长度为16,自动扩展或者手动初始化是,长度必须是2的幂(减少冲突,只要hashcode本身分布均匀,算法结果就是均匀的)



    取模的时候&(len-1)。

  2. 布隆算法

    为了解决hashcode 算法占用内存太大的算法。

    结合bitmap算法,将整个字符串分成m部分,(每一部分都取得一个hash值,然后判断只有当这m个值都是1的时候,才判定发生冲突)。针对邮箱地址来说,为了减少误判,可以添加信任邮箱白名单。

    应用:爬虫大量url排序,垃圾邮箱地址的过滤。

    布隆算法

  3. bitmap算法

    位示图法

    解决冲突,mysql 表中采用一个标签对用多个用户的存储方式

    交 | 或 运算因为是位运算,所以比较快。

    要想支持非运算,可以维护一个全量用户,然后取非时采用异或操作。

    谷歌EWAHCompressedBitmap ,存储数据到long数组中,

    谷歌把这些子集叫word,随着数据的不断插入,word量会随之扩充。

     跨度信息简称RLW, 用于存储跨度信息的word,简称LW。

    LW的低32为表示横跨了多少空word,高32为当前RLW后方有多少个连续

    的LW。在RLW中插入数值的时候,会涉及部分word的移位。影响性能,所以

    谷歌官方建议使用者从小到大来插入数据。


Tag:
相关文章

发表评论: