zoukankan      html  css  js  c++  java
  • redis数据结构-sds

    sds-simple dynamic string简单的动态数组

    1、sds定义

    2、与c字符串比较

    3、sds特性

    1)获取长度时间复杂度为O(1)

    sds中有len长度字段

    2)缓冲器不会溢出

    首先sds有预留空闲free存储空间

    其次如果空间不够,会动态申请

    3)修改字符串最多需要执行N次内存重分配

    重分配策略

    a)空间预分配

    策略是当sds长度小于1m时,预分配空间=sds长度,当大于1m时,预分配1m

    b) 惰性空间释放

    当sds缩短时,程序不立即释放多出来的字节空间,而是使用free属性将这些字节的数量记录起来,以备将来用,可通过API释放这部分空间

    4)可以保存文本或者二进制数据

    c字符串除了末尾之外不能有空字符,否则空字符会被误认为字符串结尾,这就导致了c字符串不能报错图片、音频、视频以及二进制数据;而sds是根据len来判读字符串结尾的

  • 相关阅读:
    TCP/IP三次握手四次挥手
    注解(JDK1.5之后)
    枚举(JDK1.5之后)
    局部内部类
    非静态内部类
    静态内部类
    匿名内部类
    接口
    根父类:java.lang.Object
    native关键字
  • 原文地址:https://www.cnblogs.com/yanwei-wang/p/8072863.html
Copyright © 2011-2022 走看看