码迷,mamicode.com
首页 > 数据库 > 详细

leveldb 学习记录(二) Slice

时间:2017-10-24 11:31:09      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:有一个   res   接受   redis   避免   emc   first   ons   字符串   

基本每个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 只接受输入的字符串指针 并不负责内存的分配和释放管理

 

leveldb 学习记录(二) Slice

标签:有一个   res   接受   redis   避免   emc   first   ons   字符串   

原文地址:http://www.cnblogs.com/itdef/p/7722120.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!