加入收藏 | 设为首页 | 会员中心 | 我要投稿 阳江站长网 (https://www.0662zz.cn/)- 办公协同、云通信、区块链、物联平台、高性能计算!
当前位置: 首页 > 站长资讯 > 评论 > 正文

2021年热门企业架构趋势

发布时间:2021-01-27 12:54:45 所属栏目:评论 来源:互联网
导读:SDS 与 C 字符串区别 O(1) 时间复杂度获取字符串长度 C 语言字符串布吉路长度信息,需要遍历整个字符串时间复杂度为 O(n),C 字符串遍历时遇到 时结束。 SDS 中 len 保存这字符串的长度,O(1) 时间复杂度。 空间预分配 SDS 被修改后,程序不仅会为 SDS 分

SDS 与 C 字符串区别

O(1) 时间复杂度获取字符串长度

C 语言字符串布吉路长度信息,需要遍历整个字符串时间复杂度为 O(n),C 字符串遍历时遇到 '' 时结束。

SDS 中 len 保存这字符串的长度,O(1) 时间复杂度。

空间预分配

SDS 被修改后,程序不仅会为 SDS 分配所需要的必须空间,还会分配额外的未使用空间。

分配规则如下:如果对 SDS 修改后,len 的长度小于 1M,那么程序将分配和 len 相同长度的未使用空间。举个例子,如果 len=10,重新分配后,buf 的实际长度会变为 10(已使用空间)+10(额外空间)+1(空字符)=21。如果对 SDS 修改后 len 长度大于 1M,那么程序将分配 1M 的未使用空间。

惰性空间释放

当对 SDS 进行缩短操作时,程序并不会回收多余的内存空间,而是使用 free 字段将这些字节数量记录下来不释放,后面如果需要 append 操作,则直接使用 free 中未使用的空间,减少了内存的分配。

二进制安全

在 Redis 中不仅可以存储 String 类型的数据,也可能存储一些二进制数据。

二进制数据并不是规则的字符串格式,其中会包含一些特殊的字符如 '',在 C 中遇到 '' 则表示字符串的结束,但在 SDS 中,标志字符串结束的是 len 属性。

zipList 压缩列表

压缩列表是 List 、hash、 sorted Set 三种数据类型底层实现之一。

当一个列表只有少量数据的时候,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么 Redis 就会使用压缩列表来做列表键的底层实现。

ziplist 是由一系列特殊编码的连续内存块组成的顺序型的数据结构,ziplist 中可以包含多个 entry 节点,每个节点可以存放整数或者字符串。

ziplist 在表头有三个字段 zlbytes、zltail 和 zllen,分别表示列表占用字节数、列表尾的偏移量和列表中的 entry 个数;压缩列表在表尾还有一个 zlend,表示列表结束。
 

Flexiv完成超1亿美元B轮融资

1月4日消息,在刚刚结束的B轮融资中,Flexiv就获得了超过1亿美元的资金。投资者中包括了外卖巨头美团、农业巨头新希望集团、私募股权公司Longwood、马云的云锋基金,以及迈塔资本、高榕资本、GRS Ventures等风投。

地平线完成C2轮4亿美元融资

1月7日,地平线发布公告称完成C2轮4亿美元融资,由BaillieGifford、云锋基金、中信产业基金、宁德时代联合领投。至此,地平线计划中的7亿美元C轮融资已经完成5.5亿美元。本轮融资将主要用于加速新一代L4/L5级汽车智能芯片的研发和商业化进程,以及建设开放共赢的合作伙伴生态。

(编辑:阳江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读