首页
学习
活动
专区
工具
TVP
发布

linjinhe的专栏

专栏作者
68
文章
115735
阅读量
28
订阅数
WiscKey:LSM-Tree 写放大优化WiscKey 简介WiscKey 带来的好处WiscKey 面临的问题和挑战参考文档
WiscKey 的提出,主要是为了优化 LSM-Tree 的写放大问题。此前已经有不少论文讨论过这个问题,如 LSM-trie 和 PebblesDB,但是大部分优化方法都不是很彻底——简单说就是,优化效果太差,或者不够通用。WiscKey 提出的是一种比较通用、效果明显且简单易懂的方法。
linjinhe
2018-10-10
1.7K0
LSM-Tree 的写放大写放大、读放大、空间放大RockDB 写放大简单分析参考文档
基于 LSM-Tree 的存储系统越来越常见了,如 RocksDB、LevelDB。LSM-Tree 能将离散的随机写请求都转换成批量的顺序写请求(WAL + Compaction),以此提高写性能。但也带来了一些问题:
linjinhe
2018-10-10
16.8K0
C++右值引用和移动语义学习小结
在 C++11 之前,将一个对象移动(move)到另一个对象的通用做法只有 copy constructor 或者 copy assignment ,然后销毁原来的对象。如果这个对象的创建涉及动态内存分配的话,copy constructor 或者 copy assignment 的开销就可能比较大。
linjinhe
2018-09-26
7460
周末学了点 Rust简介工具链宏(macros)返回值和错误处理Ownership 和生命周期闭包小结参考文档
Rust 是最近几年开始兴起的编程语言,虽然目前还没看到要像 Go 一样”大火“的趋势。但是,官网的一些 featuring 看着就很让人心动(虽然还不知道现实如何~)。
linjinhe
2018-08-10
8900
LevelDB:读操作
前面写了两篇文章介绍 LevelDB 的整体架构和接口使用。这篇文章,我们从代码的角度看看 LevelDB 的设计与实现,先从读操作开始。
linjinhe
2018-06-06
1.8K0
LevelDB:Compaction
LevelDB 的写操作是 Append-Only 的,新的数据写入后,相应的旧数据就过期了。过期的数据需要被 Garbage Collection,不然数据文件的体积会持续膨胀,这是不可接受的。
linjinhe
2018-06-06
1.7K0
LevelDB:使用介绍
Get 接口和 Put 接口比较像,除了 leveldb::ReadOptions 参数是用来控制读操作的,具体见链接指向的代码。
linjinhe
2018-06-06
2.6K0
LevelDB:写操作
其中,Put 和 Delete 的实现都是通过封装 Write 来实现的,函数调用关系如下:
linjinhe
2018-06-06
1.4K0
密码学工具箱
对称加密算法(Symmetric-key_algorithm)是指在加密和解密时使用同一密钥的方式,如AES。
linjinhe
2018-06-06
1.2K0
Linux进程内存管理(一)
Linux 环境下,进程的内存管理器默认是使用 glibc 实现的 ptmalloc 。另外,还有两个比较有名的内存管理器:google 的 tcmalloc 和
linjinhe
2018-06-06
3.5K0
LSM简介
2006年,Google 发表了 BigTable 的论文。这篇论文提到 BigTable 单机上所使用的数据结构就是 LSM。
linjinhe
2018-06-06
3K0
Linux进程内存管理(二)
进程启动后,在 jemalloc 载入的时候会调用 jemalloc_constructor 执行一些初始化操作。这里利用了编译器的一些特殊支持,让函数在库加载的时候就执行了,有兴趣的可以根据代码看看 jemalloc_constructor 做了些什么。
linjinhe
2018-06-06
2.8K0
对称加密算法和分组密码的模式
由于加密出来的数据很可能有很多不可见字符,因此这里会将加密后的结果进行一次Base64Encode。
linjinhe
2018-06-06
2.4K0
Go语言:map使用笔记
Go 的 map 是 hash map; C++ 的 map 是 tree (主流实现是红黑树); C++ 的 hash map 是unordered_map。
linjinhe
2018-06-06
9260
Linux动态链接
曾经不止一次遇到过这样的情况:从机器A拷贝一个二进制文件到另一台机器B,两台机器的操作系统版本一样,可是在机器A能正常运行,在机器B却提示错误。最常见的就是提示动态链接库找不到,如:
linjinhe
2018-06-06
4.9K0
Page Cache的落地问题
除非特别说明,否则本文提到的写操作都是 buffer write/write back。
linjinhe
2018-06-06
2.1K0
MySQL半同步复制
MySQL通过复制(Replication)实现存储系统的高可用。目前,MySQL支持的复制方式有:
linjinhe
2018-06-06
4.6K3
Docker入门
本文测试环境Ubuntu 14.04 安装Docker # 如果安装速度太慢,可以尝试下面加速器方式 sudo apt-get install docker # 通过加速器安装Docker curl -sSL https://get.daocloud.io/docker | sh # 通过加速器安装Docker体验版 curl -sSL https://get.daocloud.io/docker-experimental | sh # 通过加速器安装Dokcer测试版 curl -sSL ht
linjinhe
2018-06-06
6840
论文笔记:MapReduce
简介 Google在2004年发表了一篇论文:MapReduce: Simplified Data Processing on Large Clusters,介绍了他们内部如何实现和使用MapReduce。 简单地说,MapReduce是一个受限的分布式并行编程模型,可用于处理和输出很大的数据集。而编写MapReduce任务的用户只需要实现两个函数: Map函数:输入一个key/value数据,输出一个key/value形式的中间数据集。 Reduce函数:输入是一个中间数据的key和一个与这个key对应的
linjinhe
2018-06-06
1.4K0
简单web安全入门
Secure by default, in software, means that the default configuration settings are the most secure settings possible……
linjinhe
2018-06-06
8210
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档