使用Rust实现跳表Skiplist
Skiplist是一种数据结构,它允许快速查询一个有序连续元素的数据链表,跳跃列表的平均查找和插入时间复杂度都是O(logn),优于普通队列的O(n),Skiplist被用在Redis、LevelDb中;
本文首先讲解了Skiplist,随后给出了Rust实现;
源代码:
关联文章:
使用Rust实现布隆过滤器BloomFilter
布隆过滤器(Bloom Filter)是一个基于Hash的概率性的数据结构,它是由一个很长的二进制数组组成,用来检查一个元素可能存在集合中,和一定不存在集合中;
它的优点是空间效率高,但是有一定false positive(假阳性:元素不在集合中,但是布隆过滤器显示在集合中);
本文首先介绍了BloomFilter,随后给出了Rust实现;
源代码:
LevelDB使用示例
LevelDB 是一个持久化的 k/v 数据库,Chrome浏览器中涉及的 IndexedDB,就是基于 LevelDB 构建而成的;
本文讲解了如何简单的使用 LevelDb,后面也会继续写系列文章对LevelDB的源码进行分析;
源代码:
mini-redis项目-3-连接层
上一篇文章 《mini-redis项目-2-存储层》 中讲解了mini-redis数据存储层的实现,这一篇在这个基础之上,讲解连接层的实现;
连接层负责建立服务端和客户端之间的连接,通过tokio框架我们可以异步的处理连接;
源代码:
系列文章:
mini-redis项目-1-简介
最近看完了tokio,其中tokio官方提供的mini-redis项目非常的好,跟着教程完整的做了一遍,并且对很多地方根据自己的理解重新实现了(比如错误处理、文件组织等);
这里会分多篇文章进行总结,这里是第一篇;
源代码:
系列文章:
Rust的GRPC实现Tonic
tonic 是rust中的一个GRPC客户端和服务端的异步实现,底层使用了tokio的prost
生成Protocol Buffers对应的代码;
本文讲解了如何使用Tonic,并提供了一个包含多个proto文件的项目案例;
源代码: