Posts by Tag

LLVM

LLVM 编译框架的设计决策

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

ClickHouse JIT 源码分析

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

LLVM/MLIR CMake 相关命令解析

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

Back to Top ↑

GCC

Linux 的共享库搜索规则

我们在 Linux 平台上开发 C/C++ 程序时,容易遇到一个问题:在编译时,我们通过 -L<dir> -l<lib_name> 选项指定了共享库,告诉编译器某些符号可以在哪个共享库中找到,但是在运行时,动态链接器却告诉我们无法找到所需的共享库。下面就让我们看看 Linux 平台上动态链...

理解静态链接

静态链接 (static linking) 是指将多个目标文件链接成一个可执行文件的过程:

Back to Top ↑

ELF

Linux 的共享库搜索规则

我们在 Linux 平台上开发 C/C++ 程序时,容易遇到一个问题:在编译时,我们通过 -L<dir> -l<lib_name> 选项指定了共享库,告诉编译器某些符号可以在哪个共享库中找到,但是在运行时,动态链接器却告诉我们无法找到所需的共享库。下面就让我们看看 Linux 平台上动态链...

理解静态链接

静态链接 (static linking) 是指将多个目标文件链接成一个可执行文件的过程:

Back to Top ↑

MLIR

LLVM/MLIR CMake 相关命令解析

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

Back to Top ↑

CMake

LLVM/MLIR CMake 相关命令解析

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

Back to Top ↑

OLAP

ClickHouse JIT 源码分析

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

Back to Top ↑

JIT

ClickHouse JIT 源码分析

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

Back to Top ↑

ClickHouse

ClickHouse JIT 源码分析

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

Back to Top ↑

Boost

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

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

Back to Top ↑

MPP

MPP 是什么?以 Doris 为例

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

Back to Top ↑

Doris

MPP 是什么?以 Doris 为例

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

Back to Top ↑

Batch Processing

MPP 是什么?以 Doris 为例

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

Back to Top ↑

Consensus Algorithm

论文阅读:Raft 共识算法

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

Back to Top ↑

C++20

C++20 Module 使用指南

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

Back to Top ↑