Posts by Category

Database

MPP 是什么?以 Doris 为例

实验室的 OLAP 项目被砍,不知之后是否还有机会再学习 OLAP。我会把这段时间看到的资料整理出来,第一篇就讲讲 MPP 以及分布式优化。本文主要来源于 Doris 在 B 站开设的课程的第四讲和第八讲,该课程是了解 Doris 非常好的资料。

论文阅读:Sub-Operators

本文是对论文 Database Technology for the Masses: Sub-Operators as First-Class Entities 的翻译和解释。

论文阅读:Radix Hash Join

本文是对 Main-memory hash joins on multi-core CPUs: Tuning to the underlying hardware 论文 Part II 的翻译和解释。

ClickHouse JIT 源码分析

和 PostgreSQL 一样,ClickHouse 也支持表达式级别的 JIT。但是由于 ClickHouse 是列式存储,具体细节上和 PostgreSQL 有所不同。本文将对 ClickHouse 的 JIT 进行源码分析,从查询计划构建到执行,分析 ClickHouse 是如何利用 LLVM 实现表达式的...

Back to Top ↑

Compiler

LLVM 编译框架的设计决策

这篇文章是为那些完全不了解 LLVM 但对编译器感兴趣的人准备的。我会从 LLVM 的架构开始介绍,然后是 LLVM IR,LLVM 的代码生成器,也会涉及一些 LLVM 后端内容,但不深入到细节。读完这篇文章,希望你能对 LLVM 的设计思路有一个大致的了解。

LLVM/MLIR CMake 相关命令解析

我们想要使用 LLVM 和 MLIR 的代码构建自己的项目时,通常会被 LLVM/MLIR 特殊的 CMake 命令搞得一头雾水。本文将对这些 LLVM/MLIR 内的特殊命令进行解析。

Back to Top ↑

Network

Boost.Asio 网络库的 I/O 模型

Asio 是一个用于网络和低级 I/O(直接对文件描述符进行的 I/O)编程的跨平台 C++ 库,它使用现代 C++ 方法为开发人员提供一致的异步模型。本文基于 Boost 1.83.0 版本介绍 Asio 的 I/O 模型,以及它在网络编程中的应用。

Back to Top ↑

Distributed System

论文阅读:Raft 共识算法

本文是对 Raft 论文 In Search of an Understandable Consensus Algorithm (Extended Version) 的翻译和解释。

Back to Top ↑

C++

C++20 Module 使用指南

Module 是 C++20 的新特性,用于替换头文件的功能。C++ 经常需要在多个翻译单元间共享声明和定义,过去使用头文件做到这一点,而 module 是一个实现该功能全新机制。

Back to Top ↑