linjinhe的专栏

42 篇文章
26 人订阅

全部文章

linjinhe

[Paper Reading] Linux Block IO: Introducing Multi-queue SSD Access on Multi-core Systems

今天看到一篇论文:Linux Block IO: Introducing Multi-queue SSD Access on Multi-core System...

852
linjinhe

A Study of LSM-Tree

812
linjinhe

分布式系统设计经典论文

The Google File System (2003) MapReduce: Simplified Data Processing on Large Cl...

912
linjinhe

理解 CPU 利用率

在 Linux shell 上执行 top 命令,可以看到这样一行 CPU 利用率的数据:

2256
linjinhe

WiscKey:LSM-Tree 写放大优化WiscKey 简介WiscKey 带来的好处WiscKey 面临的问题和挑战参考文档

WiscKey 的提出,主要是为了优化 LSM-Tree 的写放大问题。此前已经有不少论文讨论过这个问题,如 LSM-trie 和 PebblesDB,但是大部...

1982
linjinhe

LSM-Tree 的写放大写放大、读放大、空间放大RockDB 写放大简单分析参考文档

基于 LSM-Tree 的存储系统越来越常见了,如 RocksDB、LevelDB。LSM-Tree 能将离散的随机写请求都转换成批量的顺序写请求(WAL + ...

1.4K2
linjinhe

Linux 存储架构图

1382
linjinhe

C++右值引用和移动语义学习小结

在 C++11 之前,将一个对象移动(move)到另一个对象的通用做法只有 copy constructor 或者 copy assignment ,然后销毁原...

1123
linjinhe

周末学了点 Rust简介工具链宏(macros)返回值和错误处理Ownership 和生命周期闭包小结参考文档

Rust 是最近几年开始兴起的编程语言,虽然目前还没看到要像 Go 一样”大火“的趋势。但是,官网的一些 featuring 看着就很让人心动(虽然还不知道现实...

1022
linjinhe

隔离级别、SI 和 SSIACID隔离级别Snapshot IsolationSerializable Snapshot Isolation

1354
linjinhe

LevelDB:读操作

前面写了两篇文章介绍 LevelDB 的整体架构和接口使用。这篇文章,我们从代码的角度看看 LevelDB 的设计与实现,先从读操作开始。

3203
linjinhe

LevelDB:Compaction

LevelDB 的写操作是 Append-Only 的,新的数据写入后,相应的旧数据就过期了。过期的数据需要被 Garbage Collection,不然数据文...

3916
linjinhe

LevelDB:使用介绍

Get 接口和 Put 接口比较像,除了 leveldb::ReadOptions 参数是用来控制读操作的,具体见链接指向的代码。

6465
linjinhe

LevelDB:整体架构

上图简单展示了 LevelDB 的整体架构。LevelDB 的静态结构主要由六个部分组成:

3333
linjinhe

TCP 为什么是三次握手四次挥手?

我们都知道 TCP 有建立连接时的三次握手和断开连接时的四次挥手,如上图所示。这个过程具体怎么样就不多说了。 今天主要想讨论一下,为什么 TCP 是三次握手,...

3435
linjinhe

LevelDB:写操作

其中,Put 和 Delete 的实现都是通过封装 Write 来实现的,函数调用关系如下:

2984
linjinhe

密码学工具箱

对称加密算法(Symmetric-key_algorithm)是指在加密和解密时使用同一密钥的方式,如AES。

2103
linjinhe

Linux进程内存管理(一)

Linux 环境下,进程的内存管理器默认是使用 glibc 实现的 ptmalloc 。另外,还有两个比较有名的内存管理器:google 的 tcmalloc ...

1863
linjinhe

LSM简介

2006年,Google 发表了 BigTable 的论文。这篇论文提到 BigTable 单机上所使用的数据结构就是 LSM。

6214
linjinhe

Linux进程内存管理(二)

进程启动后,在 jemalloc 载入的时候会调用 jemalloc_constructor 执行一些初始化操作。这里利用了编译器的一些特殊支持,让函数在库加载...

2324

扫码关注云+社区