深入底层
文章平均质量分 90
月光冷锋.
致力于开源的分布式系统设计和研发
展开
-
索引底层是如何实现的以及详细工作过程剖析
现在很多中间件系统的存储模块都会多少用到索引。由于网上大多对索引的介绍都是比较浅的逻辑视图描述,很少有真正从底层的索引存储以及其工作过程的详细描述的文章。所以本文重点在后者。重新梳理一遍,作为自己的知识总结,同时也分享给广大网友参阅。如果一个没有索引或索引结构的文件,你要从中拿到你想要的数据内容,那么你不得不遍历整个文件。即从文件的起始位置地址开始依次顺序读取文件内容,直到目标内容出现为止。如下图所示。我们需要寻找“天”这个字附近的相关内容。相关代码,我将以伪代码展示。...原创 2021-12-30 16:39:20 · 953 阅读 · 1 评论 -
Java生产环境JVM设置成固定堆大小深层原理
可能很多人都知道Java程序上生产后,运维人员都会设定好JVM的堆大小,而且还是把最大最小设置成一样的值。那究竟是为什么呢?一般而言,Java程序如果你不显示设定该值得话,会自动进行初始化设定。 -Xmx 的默认值为你当前机器最大内存的 1/4 -Xms 的默认值为你当前机器最大内存的 1/64 显然这样配置的意义是希望JVM可以根据当前运行的环境,动态伸缩堆内存大小。之所以生产上设置成固定大小,网上也是说法不一,很多时候都是使用“防止内存抖动”这样的模糊词语给出解释。但...原创 2021-11-28 15:59:44 · 1022 阅读 · 2 评论 -
mysql变长类型字段varchar值更新变长或变短底层文件存储原理
为了搞清楚MySQL对于可变长度字段值修改时,如何高效操作数据文件的机制。之前一直模糊不清,网上也搜不到现成的答案。经过多方资料搜集整理。写出此文供大家一起参阅。由于涉及众多非常底层的知识,我假设读者已经对操作系统和磁盘存取有一定的基础知识。文中如有疏漏,还请大佬指正。 为了探究这个问题,我们要先来回顾一下我之前的一篇文章《文件随机或顺序读写原理深入浅出》讲的文件存储的底层原理知识。如下图所示。一个文件的数据是以块为单位存储到物理磁盘的随机位置,这是由操作系统负责管理的,用户程序无权决...原创 2021-11-23 20:47:53 · 2549 阅读 · 1 评论 -
文件随机或顺序读写原理深入浅出
一、文件读写的用户程序、操作系统、磁盘交互原理最近为了彻底搞懂文件读写原理,我特意查询了很多资料,包括Java读写文件的API代码、操作系统处理文件以及磁盘硬件知识等。由于网上现存技术文章,几乎没有找到一篇能够彻底综合讲明白这个原理的文章。心中还是有很多疑问。且有不少文章包括书籍所阐述的随机/顺序读写原理讲述的都是错误或误导性的。所以我综合了一下我能查阅到的所有资料,深入细节知识,给大家彻底讲明白这事。原创文章,转发请保留第一作者著作权。谢谢!如下图所示。我们编写的用户程序读写文件时必须经过的OS和原创 2021-11-02 21:11:56 · 5183 阅读 · 4 评论