自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

凌桓丶的博客

沙漠尽头必是绿洲

  • 博客(239)
  • 收藏
  • 关注

原创 新时代异步 IO 框架:IO_URING 的原理、用法、业界示例分析

I/O 模型同步 I/O 是目前应用最广的 I/O 模型,其缺点非常明显:大量内存拷贝、系统调用导致上下文切换频繁;随着设备性能越来越高,这种方式已经无法有效利用设备的全部性能。AIO 的优点就是通过异步方式和 Linux Kernel 交互,减少了对用户态应用程序的阻塞,提高了并发度,但其最大的缺点就是仅支持 Direct I/O,无法有效利用文件系统和 Page Cache。

2024-02-16 09:00:00 2607

原创 单机存储的容错机制:一文搞懂所有 RAID 级别的原理、性能、应用场景

RAID(Redundant Array of Independent Disks)即独立磁盘冗余阵列,是一种数据存储虚拟化技术,通过将多个物理磁盘驱动器组件组合到一个或多个逻辑单元中,以达到获取大容量、高性能、容错等目的。

2024-02-13 09:30:00 2410

原创 高级数据结构与算法 | 布谷鸟过滤器(Cuckoo Filter):原理、实现、LSM Tree 优化

布谷鸟过滤器(Cuckoo Filter)是一种节省内存空间的概率数据结构,基于布谷鸟哈希算法实现的过滤器,和布隆过滤器一样,用于检测指定元素是否存在于某个集合中

2024-02-08 22:28:19 3981

原创 分布式存储中常见的容错机制:多副本、纠删码(RS、LRC、SHEC)

分布式存储中常见的容错机制:多副本、纠删码(RS、LRC、SHEC)

2024-02-08 09:00:00 2918

原创 Docker 进阶实战:数据管理、网络

Docker 进阶实战:数据管理、网络

2023-05-08 09:30:00 525

原创 Docker 基础实战:环境搭建、容器、仓库、镜像

Docker 基础实战:环境搭建、容器、仓库、镜像

2023-05-07 16:26:19 2458

原创 什么是 Docker?它能用来做什么?

Docker 是一个能够把开发的应用程序自动部署到容器的开源引擎。由 Docker 公司(前 dotCloud)的团队编写,基于 Apache 2.0 开源授权协议发行

2023-05-02 10:00:00 1758

原创 高级数据结构与算法 | 自适应基数树(Adaptive Radix Tree)

Adaptive Radix Tree(ART)是由 Phil Bagwell 在 2000 年提出的一种基于 Trie Tree 实现的数据结构,旨在解决 Trie Tree 在空间效率和查找性能方面存在的问题。与其他基于 Trie 的数据结构(如 Radix Tree、Digital Search Tree)相比,其引入了自适应节点,高度压缩等特性,具有更好的空间效率和更快的查找速度。

2023-04-16 14:00:00 2732 1

原创 高级数据结构与算法 | 基数树(Radix Tree)

Radix Tree是一种基于 Trie(字典树)的数据结构,旨在解决字符串搜索和匹配的问题。它最早由 Fredkin 在 1960 年提出,并在之后被广泛应用于各种应用领域。其最大的特点就是在 Trie 的基础上,加入了路径压缩的逻辑,通*合并前缀的方式大大的减少了 Trie 中的节点冗余问题,不仅提高了查询效率,还减少了存储空间的使用。

2023-04-14 10:00:00 2486

原创 高级数据结构与算法 | 三元搜索树(Ternary Search Tree)

Ternary Search Tree(三元搜索树),它是由 Bentley 和 Sedgewick 在 1997 年提出的一种基于 Trie 的思想改良的一种数据结构,其目的在于优化 Trie 在大规模数据集下的时间、空间开销。

2023-04-13 10:00:00 1346

原创 BitCask:基于日志结构哈希表的高性能 KV 引擎

BitCask 是分布式数据库 RIAK KV 的存储引擎,同时也是世界上最高效的 KV 存储引擎之一,其基于日志结构哈希表(Log-Structured Hash Table)实现。

2023-03-29 11:47:16 688

原创 CMake 快速入门

CMake 是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile 或者 project 文件,CMake 的配置文件取名为 CMakeLists.txt。也就是在 CMakeLists.txt 这个文件中写 cmake 代码。 一句话:cmake 就是将多个 cpp、hpp 文件组合构建为一个大工程的语言。......

2022-07-11 14:00:00 961

原创 从实践到原理掌握 GDB

GDB(GNU Debugger),是一个由 GNU 开源组织发布的、UNIX/LINUX 操作系统下的、基于命令行的、功能强大的程序调试工具;GDB 支持断点、单步执行、打印变量、观察变量、查看寄存器、查看堆栈等调试手段;GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序。...

2022-07-10 14:00:00 1562 1

原创 一文学会使用Bazel构建C++项目

Bazel 是一个开源构建和测试工具,类似于 Make、Maven 和 Gradle。它使用人类可读的简要构建语言。Bazel 支持多种语言的项目,并针对多个平台构建输出。Bazel 支持跨多个代码库和大量用户的大型代码库。...

2022-07-04 10:00:00 1969

原创 一文掌握谷歌 C++ 单元测试框架 GoogleTest

GoogleTest(简称 GTest) 是 Google 开源的一个跨平台的(Liunx、Mac OS X、Windows等)的 C++ 单元测试框架,可以帮助程序员测试 C++ 程序的结果预期。不仅如此,它还提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”等等。......

2022-06-16 10:00:00 3216

原创 CPU Cache 一致性:Cache 结构、同步方式、Cache 一致性、总线嗅探、MESI 协议

随着时间的推移,CPU 和内存的访问性能相差越来越大,为了弥补 CPU 与内存两者之间的性能差异,就在 CPU 内部引入了 CPU Cache,也称高速缓存。CPU Cache 通常分为大小不等的三级缓存,分别是 L1 Cache、L2 Cache 和 L3 Cache。它们之间的层级关系如下图:介绍完了 CPU Cache 的层级关系后,再来聊聊它的构成。CPU Cache 其实是由多个 组成的,而 其实就是 CPU 从内存读取数据的基本单位,由 (标志)和 (数据块)组成。当我们把数据写入 Cach

2022-06-09 14:00:00 2532 1

原创 etcd Raft 源码剖析

etcd 是 coreOS 使用 golang 开发的分布式,一致性的 kv 存储系统,因其易用性和高可靠性被广泛运用于服务发现、消息发布和订阅、分布式锁和共享配置等方面,也被认为是 zookeeper 的强有力的竞争者。...

2022-06-04 14:00:00 1022

原创 新时代内存分配器:TCMalloc

TCMalloc 全称 Thread-Caching Malloc,即线程缓存的 `malloc`,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(`malloc`、`free`,`new`,`new[]` 等)。

2022-05-26 16:26:03 1694 1

原创 C++20的这些新特性,你都知道吗?

C++20的这些新特性,你都知道吗?

2022-04-28 15:04:17 3387 4

原创 一篇文章掌握C++17核心特性

C++ 17 新特性:折叠表达式、结构化绑定、类模板实参推导、内联变量、STL 并行算法、file_system、string_view、any 等

2022-04-25 09:00:00 1674 1

原创 C++14的这些新特性,你都知道吗?

C++14的这些新特性,你都知道吗?

2022-04-21 17:02:47 2153

原创 分布式系统中的一致性模型

一致性模型本质上是进程与数据存储的约定:如果进程遵循某些规则,那么进程对数据的读写操作都是可预期的。

2022-04-15 14:00:00 4412

原创 分布式系统概念 | 分布式时钟:物理时钟、逻辑时钟、Lamport 时间戳、向量时钟、版本向量

分布式系统概念 | 分布式时钟:物理时钟、逻辑时钟、Lamport 时间戳、向量时钟、版本向量

2022-04-12 15:12:34 3732

原创 LevelDB 源码剖析(九)DBImpl模块:Open、Get、Put、Delete、Write

LevelDB 源码剖析(九)DBImpl模块:Open、Get、Put、Delete、Write

2022-04-10 13:21:13 999

原创 LevelDB 源码剖析(八)Compaction模块:Minor Compaction、Major Compaction、文件选取、执行流程、垃圾回收

LevelDB 源码剖析(八)Compaction 模块:Minor Compaction、Major Compaction、文件选取、执行流程、垃圾回收

2022-04-08 16:11:56 1968 2

原创 LevelDB 源码剖析(七)版本管理:Manifest、Version、VersionEdit、VersionSet

LevelDB 源码剖析(七)版本管理:Manifest、Version、VersionEdit、VersionSet

2022-04-06 13:26:31 1755

原创 LevelDB 源码剖析(六)WAL模块:LOG 结构、读写流程、崩溃恢复

LevelDB 源码剖析(六)WAL模块:LOG 结构、读写流程、崩溃恢复

2022-04-04 16:38:15 1195

原创 LevelDB 源码剖析(五)SSTable模块:SSTable、Block、布隆过滤器、LRU Cache

LevelDB 源码剖析(五)SSTable模块:SSTable、Block、布隆过滤器、LRU Cache

2022-04-03 10:00:00 1198

原创 LevelDB 源码剖析(四)MemTable模块:SkipList、MemTable、持久化

LevelDB 源码剖析(四)MemTable模块:SkipList、MemTable、持久化

2022-04-01 14:00:00 1240

原创 LevelDB 源码剖析(三)公共基础:内存管理、数值编码、Env家族、文件操作

LevelDB 源码剖析(三)公共基础:内存管理、数值编码、Env家族、文件操作

2022-03-30 23:04:51 1325

原创 LevelDB 源码剖析(二)整体架构与基本组件:Comparator、Slice、Status、Iterator、Option

LevelDB 源码剖析(二)整体架构与基本组件:Comparator、Slice、Status、Iterator、Option

2022-03-30 15:49:54 2123

原创 LevelDB 源码剖析(一)准备工作:环境搭建、接口使用、常用优化

LevelDB 源码剖析(一):环境搭建、实战使用、常用优化

2022-03-29 14:11:00 2390

原创 LevelDB是什么?为什么我们需要K-V存储?

LevelDB 是一个由 Google 公司所研发的 K-V 存储嵌入式数据库管理系统编程库,以开源的 BSD 许可证发布。其作为 LSM Tree 的经典实现,具有很高的随机写,顺序读/写性能,但是随机读的性能很一般,也就是说,LevelDB很适合应用在查询较少,而写很多的场景。

2022-03-28 23:01:30 4308

原创 现代的缓存设计方案:Window-TinyLFU

现代的缓存设计方案:Window-TinyLFu

2022-03-27 21:30:30 2460 3

原创 为什么大部分NOSQL数据库选择使用LSM树而非B+树?

LSM树的架构介绍与核心执行流程

2021-08-24 20:27:46 1516 1

原创 ElasticSearch探索之路(六)实战:环境搭建、REST、CRUD、Search

ElasticSearch探索之路(六)实战:环境搭建、REST、CRUD、Search

2021-08-17 14:31:50 388

原创 ElasticSearch探索之路(五)集群与分片:选举、动态更新、近实时搜索、事务日志、段合并

ElasticSearch集群内部原理:选举、动态更新、近实时搜索、事务日志、段合并

2021-08-15 17:26:51 825

原创 ElasticSearch探索之路(四)索引原理:倒排索引、列式存储、Fielddata、索引压缩、联合索引

ElasticSearch索引结构、存储原理

2021-08-12 15:59:37 1700 1

原创 ElasticSearch探索之路(三)分布式原理:分布式路由、存储、搜索原理

ElasticSearch分布式存储、搜索原理

2021-08-11 14:33:34 964

原创 ElasticSearch探索之路(二)权重计算与文本分析:布尔模型、TF/IDF、向量空间模型、分析与分析器

ElasticSearch的权重计算与文本分析原理

2021-08-09 15:37:29 1251 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除