zoukankan      html  css  js  c++  java
  • Redis设计与实现(五)整数列表

    整数集合是集合键的底层实现之一,当一个集合只包含整数元素,并且这个集合的元素不多的时候就会选择使用整数集合来存储。

    整数数组的结构相对简单一点,只有三个成员变量,encoding编码方式,length表示数组中的元素长度,contents[]用来存放整数数组。要注意的是因为是整数了所以在放入的时候是一个维持有序的过程,并且不会包含任何的重复。

    在C里面int是有不同的类型的,所有无论你放入的是什么int类型,最终的实现都是依靠encoding来进行的,如果encoding是一个16位的,你放入8位的,也会天然的变成16位的。

     如果在一个16位的数组中放入一个64位的元素需要进行什么样的前置条件整合呢?首先会根据新64位的元素拓展整个底层数组的空间大小,并给新元素分配空间。将底层数组现有的所有元素都转化为和64位相同的元素,然后再有序的把新的元素放入数组中去,要么要如果进行数组的调整呢?一般的思维可能新一个数组然后进行替换,不过这是C,C的话 如果数组内存不够大再去申请,如果够大的 直接进行扩容就行了。

    smartcat.994
  • 相关阅读:
    误差可视化小结
    快速排序算法
    解决堆损坏的一点心得
    合并两个有序数组
    nginx安装
    Spark官方3 ---------Spark Streaming编程指南(1.5.0)
    【译】Yarn上常驻Spark-Streaming程序调优
    【Kafka】操作命令
    【Kafka】
    Spark组件
  • 原文地址:https://www.cnblogs.com/SmartCat994/p/14144580.html
Copyright © 2011-2022 走看看