zoukankan      html  css  js  c++  java
  • redis数据结构-动态字符串sds

    大纲:

    1. sds结构
    2. sds优势

    一、sds结构

    sds结构

    struct sdshdr {
        int len;//数组中已使用的长度
        int free;//数组中未使用的长度
        char buf[];//字节数组
    }

    c语言以''空字符串表示结尾。用N+1个字符组数长度可以表示N长度的字符串。

    二、sds优势

    相较于c语言字符数组sds有以下优势

    1.常数复杂度获取字符串长度

    2.杜绝缓冲区溢出

    字符串在拼接操作时,当free长度小于待拼接字符串长度时,直接拼接的话就会产生缓冲区溢出

    字符串在进行截断操作时,直接截断字符串会产生内存泄漏

    3.减少修改字符串带来的内存重分配

    时空间预分配(一次性数组翻倍,超过1m时每次增加1m)

    惰性空间释放策略(不释放内存增加free)

    4.二进制安全

    可保存除字符串以外的其他类型数据如图片、音乐等。

    SDS 所有API都会以处理二进制的方式处理SDS存在buf数组里的数据

    5.兼容部分c字符串的函数

     

  • 相关阅读:
    jquery 选择器总结
    jQuery 添加元素和删除元素
    jQuery 操作
    jquery 事件
    jQuery对象与DOM对象
    jquery 在页面中三种写法
    CSS3制作立体导航
    开发常用技巧之css字体编码
    c语言快速入门3
    c语言快速入门2
  • 原文地址:https://www.cnblogs.com/liuboyuan/p/14645508.html
Copyright © 2011-2022 走看看