zoukankan      html  css  js  c++  java
  • 第六章 整数集合

    当一个集合只包含整数,且集合的元素数量不多时,Redis会使用整数集合作为底层实现。

    6.1 整数集合的实现

      可以保存int16_t、int32_t或者int64_t的整数值。并且保证集合中不会出现重复的元素。

    typedef struct intset{
        //编码方式
        uint32_t encoding;
    
        //集合包含的元素数量
        uint32_t length;
    
        //保存元素的数组
        int8_t contents[];
    
    }intset;

       在contents[]中,每个整数按照值的大小从小到大有序排列,并且不出现重复项。数组中元素的整数类型取决于encoding,例如encoding值为INTSET_ENC_INT32,那么contentds就是一个int32_t类型的数组,每一项都是一个int32_t类型的整数值。

    6.2 升级

      当新元素长度超过当前encoding规定的大小时,根据新类型的长度,以及集合元素的数量(包括新元素在内),对底层数组进行空间重分配。并保持依然按照大小顺序排序。升级虽然会增加复制和重新分配内存的开销,但是,可以节约内存,按照实际需要的最小内存分配。一旦升级之后,不能降级。

      

    人生就像蒲公英,看似自由,其实身不由己。
  • 相关阅读:
    Linux定时运行程序脚本
    git tips
    Python循环
    Head First Design Patterns
    animation过渡效果
    图像处理池化层pooling和卷积核
    TensorFlow的梯度裁剪
    神经网络优化方法总结:SGD,Momentum,AdaGrad,RMSProp,Adam
    CNN网络架构演进
    TensorFlow object detection API应用
  • 原文地址:https://www.cnblogs.com/walker993/p/14426395.html
Copyright © 2011-2022 走看看