跳表数据结构SkipList
-------------------------------------------
class SkipList {
private:
struct node;
public:
explicit SkipList(Comparator cmp, Arena *arena);
SkipList(const SkipList&) == delete;
SkipList& operator=(const SkipList&) == delete;
void insert(const Key& key);
bool Contains(const Key& key) const;
class Iterator {
public:
explicit Iterator(const SkipList *list);
bool Valid() const;
const Key& key() const;
void Next();
void Prev();
void Seek(const Key& target);
void seekToFirst();
private:
const SkipList *list_;
Node *node_;
};
private:
enum { kMaxHeight = 12 };
inline int GetMaxHeight() const {
return max_height_.load(std::memory_order_relaxed);
}
Node *NewNode(const Key &key, int height);
int RandomHeight();
bool Equal(const Key &a, const Key &b) const { return (compare_(a,b) == 0); }
bool
leveldb之put过程分析
最新推荐文章于 2022-04-10 13:21:13 发布
这篇博客详细分析了leveldb的put过程,涵盖了leveldb中的各种文件类型,如kLogFile、kDescriptorFile、kTableFile、kTempFile、kCurrentFile和kDBLockFile等,探讨了这些文件在put操作中的作用和保留条件。
摘要由CSDN通过智能技术生成