• HASH表解决冲突的两种方式


    HASH表解决冲突有两种方式,一种是开放地址,一种是链表。后者的删除比较简单,就是从链表上删除一个数据。但是很多场合下,前者更适合应用。前者的优点是,CACHE命中率高,内存管理简单。但是从前者删除数据却很困难。

    如果简单地把待删除结点删除,则因为冲突,而被放到它后面的结点将会无法访问。可以设一个简单的删除标志,这样查询的时候,直接访问它的下一位,增加的时候,把它当空闲节点。但是,经过大量的增删之后,假设每次增删都是随机的,将会有大量被标志为删除的结点,这样会降低查找的速度。一种方案是,经过一定次数的删除后,重组HASH,把这些标志位去掉,这个过程也会比较麻烦,而且会导致,系统在一段时间内压力过大,所以下面讨论一种渐进的方式。

    在删除一个结点后,把后面受它影响的结点往前挪。但是怎么知道哪些结点受它影响呢?跟它HASH到同一个位置的节点会受影响,不HASH到同一个位置的节点也可能会受影响。

  • 相关阅读:
    Haproxy基于ACL做访问控制
    K8s之Prometheus监控
    kubernetes之PV及PVC案例
    K8s常见示例
    K8s之Web服务
    Ansible 部署k8s
    K8s之网络通信
    创建资源对象实例
    kubeadm搭建K8s集群
    Go基础之函数递归实现汉诺塔
  • 原文地址:https://www.cnblogs.com/dsky/p/2466675.html
Copyright © 2020-2023  润新知