当前位置: 首页 > news >正文

做幼儿园网站/广州网页seo排名

做幼儿园网站,广州网页seo排名,高端大气的企业网站模板,企业网站建设的经验心得1.整数集合简述 整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。 例如当我们创建只包含五个元素的集合键,并且集合键中所有元素都是整数…

1.整数集合简述

整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。
例如当我们创建只包含五个元素的集合键,并且集合键中所有元素都是整数值,那么这个集合键的底层实现就会是整数集合:

redis>SADD  1 2 3 4 6
(integer) 5
reids>OBJECT ENCODING numbers
"intset"

2.整数集合的实现

整数集合是Redis用于保存整数值的集合抽象数据结构,它可以保存类型为int16_t、int32_t或者int64_t的整数值,并且保证集合中不会出现重复元素。
每个intset.h/intset结构标识一个整数集合:

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

contents数组是整数集合的底层实现:整数集合的每个元素都是contents数组的一个数组项(item),各个项在数组中按值的大小从小到大有序排列,并且数组中不包含任何重复项。
length属性记录了整数集合包含的元素数量,也是contents数组的长度。
contents数组的类型取决于encoding属性的值:
🔲如果encoding属性的值为INTSET_ENC_INT16,那么contents就是一个int16_t类型的数组,数组中的每个项都是int16_t类型的整数值(最小值为-32768,最大值为32767).
🔲如果encoding属性的值为INTSET_ENC_INT32,那么contents就是一个int32_t类型的数组,数组中的每个项都是int32_t类型的整数值.
🔲如果encoding属性的值为INTSET_ENC_INT64,那么contents就是一个int64_t类型的数组,数组中的每个项都是int64_t类型的整数值
下图中是一个encoding属性值为INTSET_ENC_INT16的整数集合,该集合中保存的都是int16_t类型的整数值。
在这里插入图片描述

当向一个底层为int16_t数组的整数集合中添加一个int64_t类型的整数值时,整数集合中已有的所有元素都会被转换为int64_t类型,这就涉及到整数集合的升级。

3.升级

当我们将新元素添加到整数集合里面时,并且新元素的类型比整数集合现有的元素类型都要长时,整数集合需要先进行升级,然后才能将新元素添加到整数集合中。
升级整数集合并添加新元素共分为三步:

  1. 根据新元素的类型,扩展整数集合底层数组的空间大小,并未新元素分配空间。
  2. 将底层数组现有的所有元素都转换为与新元素相同的类型。并将类型转换后的元素放到正确的位置上,并且在防止元素过程中需要位置底层数组的有序性不变。
  3. 将新元素添加到底层数组里面。
    例如我们将65432添加到上图中的整数集合中,,因为65432的类型是int32_t,所以将该值添加到整数集合前需要对整数升级,升级首先要做的就是根据新类型的长度以及元素的数量,对底层数组进行空间分配,
    也就是需要对上图中的元素进行重新分配空间,可以看到上图中有五个元素,再加上65432新元素也就是有六个元素,每个元素的整数值(类型是int32_t)都是占用32位空间,所以底层数组大小应该为32*6=192位。
    重新分配空间后前五位仍然是16位,所以需要对这16位重新分配,分配过程如下图:
    在这里插入图片描述

最终将所有的数据都分配成占32位的元素。

4.升级好处

整数集合升级策略有两个好处:
• 提升整数集合的灵活性:这是因为C语言是静态类型语言,为了避免类型错误,通常不会将两种不同类型的值放到同一个数据结构里面。
• 尽可能节约内存:如果我们直接将数组的内存设置位int64_t,这样就能保存任一一种类型的整数,但是数组会分配int64_t内存去保存int16_t类型的数据,造成浪费内存的情况。

5.降级

整数集合不支持降级操作,一旦对数组进行升级,编码就会一直保持升级后的状态。

http://www.jmfq.cn/news/4824955.html

相关文章:

  • 专业做皮草的网站/网站自助搭建
  • 做cpa能用什么网站/宁波超值关键词优化
  • 网站正建设中/2023年6月份又封城了
  • 深圳最新新闻事件/网店产品seo如何优化
  • 太原建站模板搭建/百度客户管理系统登录
  • 做经营性的网站需要注册什么/网站seo排名优化
  • 网站的建设需要多少钱/关键词推广效果
  • 网站开发赚钱/seo营销推广平台
  • 哈尔滨做网站/营销方式
  • 网站建设技巧饣金手指排名27/seo推广代运营
  • 网站开发demo是什么/百度权重是什么意思
  • 网站建设的好不好/google首页
  • 网站标题会影响吗/优化服务是什么意思
  • 新疆建设厅造价网站/链接推广
  • 网站设计流程软件/网络推广方式有哪些
  • 上海自适应网站建设/搜索引擎整合营销
  • 礼信堂 网站开发/什么关键词可以搜到那种
  • 成都哪里做网站好/百度推广登录入口电脑
  • 如何建立一个大型的网站/网站推广seo设置
  • 网站舆情监控怎么做/seo排名优化什么意思
  • 邯郸网站建设地方/百度广告太多
  • 京东商城网站建设目标/电商运营基本知识
  • 做网站的快捷方式代码/搜索关键词网站
  • 设计师网站pintset/网站建设制作过程
  • 杭州手机网站制作公司/网站制作论文
  • 自适应网站什么意思/百度友情链接
  • 建设网站装配式建筑楼房/百度有钱花人工客服
  • 小米市场营销案例分析/深圳sem优化
  • 股权变更要在工商局网站做吗/网站推广关键词工具
  • 搜索引擎手机动态网站制作设计/免费发广告的平台