• 字符串对象


    字符串对象的编码可以是int、raw和embstr

    1. 一个字符串对象保存的是整数值,并且这个整数值可以用long类型来表示,那么用long类型的整数保存,即编码为int
    2. 一个字符串对象保存的是浮点数值,并且这个浮点数值可以用long double类型来表示,
      那么用embstr编码的简单动态字符串(SDS) 或者 简单动态字符串(SDS)保存,即编码为embstr 或者 raw
    3. 一个字符串对象保存的是字符串值,并且这个字符串值的长度 > 39 byte,那么用简单动态字符串(SDS)保存,即编码为raw
    4. 一个字符串对象保存的是字符串值,并且这个字符串值的长度 <= 39 byte,那么用embstr编码的简单动态字符串(SDS)保存,即编码为embstr

    使用embstr编码的字符串对象来保存短字符串值的好处

    1. embstr编码将创建字符串对象所需的 内存分配次数 从raw编码的 2次 降低为 1次
    2. embstr编码将释放字符串对象所需的 内存释放函数 从raw编码的 2次 降低为 1次
    3. 因为embstr编码的字符串对象的所有数据都保存在一块连续的内存里面,所以embstr编码的字符串对象能够更好地利用缓存的优势

    编码的转换

    int编码的字符串对象和embstr编码的字符串对象在条件满足的情况下,会被转换为raw编码的字符串对象

    1. 对于int编码的字符串对象来说,如果我们向对象执行了一些命令,
      使得这个对象保存的不再是整数值,而是一个字符串值,
      那么字符串对象的编码将从int变为raw,比如append命令

    2. 对于embstr编码的字符串对象来说,embstr编码的字符串对象实际上是只读的,
      当对embstr编码的字符串对象执行 任何修改命令 时,那么字符串对象的编码将从embstr变为raw

    源码阅读

    1. 文件:src/t_string.c
    只言片语任我说,提笔句句无需忖。落笔不知寄何人,唯有邀友共斟酌。
  • 相关阅读:
    重新学习C#系列-02.静态类、静态字段和静态方法
    Appcan学习笔记(3)——tabview 静止页面左右滑动切换
    Appcan学习笔记(2)——子页面调用父页面的方法
    Appcan学习笔记(1)——父页面调用子页面的方法
    重新学习C#系列-01.方法参数
    WP8.1 Runtime应用利用HttpClient初始化数据的一些考虑
    C# socket通讯使用域名的方法
    RSA私钥加密
    RSA公钥加密
    13位时间戳转换成标准时间C#代码
  • 原文地址:https://www.cnblogs.com/phonecom/p/15129300.html
Copyright © 2020-2023  润新知