文章506
标签266
分类65
使用Rust实现跳表Skiplist

使用Rust实现跳表Skiplist

Skiplist是一种数据结构,它允许快速查询一个有序连续元素的数据链表,跳跃列表的平均查找和插入时间复杂度都是O(logn),优于普通队列的O(n),Skiplist被用在Redis、LevelDb中;

本文首先讲解了Skiplist,随后给出了Rust实现;

源代码:

关联文章:


使用Rust实现布隆过滤器BloomFilter

使用Rust实现布隆过滤器BloomFilter

布隆过滤器(Bloom Filter)是一个基于Hash的概率性的数据结构,它是由一个很长的二进制数组组成,用来检查一个元素可能存在集合中,和一定不存在集合中;

它的优点是空间效率高,但是有一定false positive(假阳性:元素不在集合中,但是布隆过滤器显示在集合中);

本文首先介绍了BloomFilter,随后给出了Rust实现;

源代码:


LevelDB使用示例

LevelDB使用示例

LevelDB 是一个持久化的 k/v 数据库,Chrome浏览器中涉及的 IndexedDB,就是基于 LevelDB 构建而成的;

本文讲解了如何简单的使用 LevelDb,后面也会继续写系列文章对LevelDB的源码进行分析;

源代码:


mini-redis项目-6-测试与示例

mini-redis项目-6-测试与示例

mini-redis项目-5-客户端

mini-redis项目-5-客户端

mini-redis项目-4-服务端

mini-redis项目-4-服务端

mini-redis项目-3-连接层

mini-redis项目-3-连接层

上一篇文章 《mini-redis项目-2-存储层》 中讲解了mini-redis数据存储层的实现,这一篇在这个基础之上,讲解连接层的实现;

连接层负责建立服务端和客户端之间的连接,通过tokio框架我们可以异步的处理连接;

源代码:

系列文章:


mini-redis项目-2-存储层

mini-redis项目-2-存储层

mini-redis项目-1-简介

mini-redis项目-1-简介

最近看完了tokio,其中tokio官方提供的mini-redis项目非常的好,跟着教程完整的做了一遍,并且对很多地方根据自己的理解重新实现了(比如错误处理、文件组织等);

这里会分多篇文章进行总结,这里是第一篇;

源代码:

系列文章:


Rust的GRPC实现Tonic

Rust的GRPC实现Tonic