• Memcached缓存


    1. 一次申请很大一块内存,再不释放,每次使用从中分割一块。

    2.每次需要内存用malloc申请一块,但不free,delete时进行标记失效,方便之后使用。

    内容点:架构,代码结构,核心数据结构(settings, stats), 内存机制(简述,数据结构,代码解析)

    每个slab是1M大小的内存,slab+(1M*n)访问第n个slab。

    slabClass集合通过end_page_ptr访问第一个可用的trunk, 或者通过*slot访问无效的items。

    第三种方式是:淘汰已有的,引入新的,并把链接位置换到下一个大的slabClass集合中。

    一致性Hash:
    1. 实体A,B,C,D
    2. 实体虚拟节点个数。

    虚拟节点
    1. 指向实体的指针。
    2. long型的hash值。

    用红黑树(key, VirtualNode)存储虚拟节点。
    用MD5计算节点的hash值。

    machineA0, 9, MD5码,存入char digest[16]中,4个32位分组组成,生成hash为-1271248791。
    machineA01, 10, MD5码,hash值为290358157.
    machineA012
    machineA0123

    130.137.211.198, MD5码, 值为hash=1394015758。在红黑树中查找key值比hash大的最小节点。


    if (node->key < x->key) then x=x->left; 左小。

    红黑树:
    红黑树是每个节点都带有颜色属性的二叉查找树,颜色或红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:   性质1. 节点是红色或黑色。   性质2. 根节点是黑色。   性质3 每个叶节点是黑色的。   性质4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)   性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

    从根到叶子的最长的可能路径不多于最短的可能路径的两倍长。结果是这个树大致上是平衡的。因为操作比如插入、删除和查找某个值的最坏情况时间都要求与树的高度成比例,这个在高度上的理论上限允许红黑树在最坏情况下都是高效的,而不同于普通的二叉查找树。


    原因:性质4导致了路径不能有两个毗连的红色节点就足够了。最短的可能路径都是黑色节点,最长的可能路径有交替的红色和黑色节点。因为根据性质5所有最长的路径都有相同数目的黑色节点,这就表明了没有路径能多于任何其他路径的两倍长。

    https://files.cnblogs.com/qingxia/Consistenthashalgorithm.zip

  • 相关阅读:
    小白学 Python(11):基础数据结构(元组)
    小白学 Python(10):基础数据结构(列表)(下)
    小白学 Python(9):基础数据结构(列表)(上)
    小白学 Python(8):基础流程控制(下)
    小白学 Python(7):基础流程控制(上)
    小白学 Python(6):基础运算符(下)
    小白学 Python(5):基础运算符(上)
    小白学 Python(4):变量基础操作
    小白学 Python(3):基础数据类型(下)
    小白学 Python(2):基础数据类型(上)
  • 原文地址:https://www.cnblogs.com/qingxia/p/2654433.html
Copyright © 2020-2023  润新知