zoukankan      html  css  js  c++  java
  • leveldb 学习记录(二) Slice

    基本每个KV库都有一个简洁的字符串管理类

    比如redis的sds  比如leveldb的slice

    管理一个字符串指针和数据长度

    通过对字符串指针 长度的管理实现一般的创建 判断是否为空 获取第N个位置元素等管理

    还可以进行字符串裁剪等操作 避免了一些复制拷贝的消耗性能的操作。

    class Slice {
    public:

    // Return the ith byte in the referenced data.
    // REQUIRES: n < size()

    //返回字符串中第N个字符
    char operator[](size_t n) const {
    assert(n < size());
    return data_[n];
    }

    // Return true iff "x" is a prefix of "*this"

    //判断是否以XXX开始作为前缀
    bool starts_with(const Slice& x) const {
    return ((size_ >= x.size_) &&
    (memcmp(data_, x.data_, x.size_) == 0));
    }

    //移除前N个前缀
    // Drop the first "n" bytes from this slice.
    void remove_prefix(size_t n) {
    assert(n <= size());
    data_ += n;
    size_ -= n;
    }

    private:
    const char* data_;
    size_t size_;

    }
    与redis不同的是
    Slice 只接受输入的字符串指针 并不负责内存的分配和释放管理

    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    配置文件和脚本文件区别
    .sh
    瘋耔思维空间
    vi编辑器的三种模式
    在ubuntu系统荣品开发配套JDK安装
    如何查看自己运行ubuntu是32位还是64位
    志气
    高仿微信朋友圈
    Java OCR tesseract 图像智能字符识别技术 Java代码实现
    构建基于Javascript的移动CMS——加入滑动
  • 原文地址:https://www.cnblogs.com/itdef/p/7722120.html
Copyright © 2011-2022 走看看