Linux 系统中的虚拟内存
现代操作系统使用虚拟内存进行内存管理,本文总结了虚拟内存的原理与一些应用场景。
现代操作系统使用虚拟内存进行内存管理,本文总结了虚拟内存的原理与一些应用场景。
LSM-Tree 被是一种面向写多读少应用场景的数据结构 ,被 Hbase、RocksDB 等面对亿级的海量数据存储和检索的 NoSQL 采用,作为这些强力数据库的底层文件组织方式。文中将会介绍 LSM-Tree 的设计思路,并分析使用这种数据结构的 LevelDB 是如何实现与优化的。
在现代的 CPU(大多数)上,所有的内存访问都需要通过层层的缓存来进行,了解 CPU 缓存更新的一致性问题对我们设计与调试程序具有很大的帮助。这篇文章会介绍 CPU 的缓存系统,以及使用内存屏障进行缓存同步。
5分钟法则(The Five-Minute Rule)是用来衡量数据驻留在内存还是从磁盘进行访问的经验法则:在数据被读写之前必须被移动到主存的情况下,如果某项数据被访问频率的足够高,那么将它缓存在内存中比驻留在二级存储(磁盘)中更划算。
分布式系统中最重要的抽象之一就是共识:所有的节点就某一项提议达成一致。分布式系统中的一个或多个节点可以提议某些值,由共识算法来决定最终值,而共识的核心思想在于,决定一致的结果,并且一旦决定,就不能发生改变。本篇文章总结了常见的共识算法与分布式领域的一些理论,希望能获得较为全面的认知。
ZooKeeper 是一个典型的分布式数据一致性解决方案,致力于提供一个高性能、高可用、且具有严格的顺序访问控制能力的分布式协调服务。在这篇文章中,我们看看 ZooKeeper 的实现思路。
etcd 是由 CoreOS 发起的开源项目,旨在构建一个高可用的分布式键值存储系统。etcd 可以用于存储关键数据和实现分布式调度,在现代化的集群运行中起到关键性的作用。
IEEE 二进制浮点数算术标准(IEEE 754)是 20 世纪 80 年代以来最广泛使用的浮点数运算标准,为许多 CPU 与浮点运算器所采用。但这种浮点数表示方法也会带来一定的精度问题,我们将对这一问题进行探讨。
CHAR 与 VARCHAR 是 MySQL 中常用的存储字符串的数据类型,在官方文档的介绍中 CHAR 类型的可定义最大长度为 255,而 VARCHAR 类型的最大长度为 65535,然而经过操作发现 VARCHAR 实际可创建的最大“长度”是一个不定值,这篇文章将会对这个问题进行分析。
在关系型数据库系统中,不合适的索引是造成性能低下的最常见原因。普遍的情况包括没有足够多的索引、一些 SELECT 语句可能没有有效的索引、索引列的顺序不对等等。一些开发人员认为如果一个 SQL 语句使用了索引,那么这个语句得查询性能就会得到很大的提升,而且专业的索引设计应该由 DBA 来完成。但只要掌握数据库内部对任务的处理方式,我们也可以设计出高效的索引。