leveldb 学习记录 Slice
Posted itdef
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 只接受输入的字符串指针 并不负责内存的分配和释放管理
以上是关于leveldb 学习记录 Slice的主要内容,如果未能解决你的问题,请参考以下文章