Linux 内核有 Bug,怎么不停机修复? Posted on 2022-07-15 | In 技术探究 随着线上问题的增多,在线修复内核漏洞的方式变得不可或缺。而内核热补丁便是一种以模块化的方式动态地给 Linux 内核打补丁而无需重启系统的一项技术。基于该技术,管理员可以在不重启机器的情况下,修复内核的 Bug 或安全漏洞,最大程度上减少系统宕机时间,以此来提升系统的可用性和稳定性。 Read more »
C++ 刷题最熟悉的陌生人 Posted on 2022-07-08 | In 学习笔记 C++ 刷题时经常会用到一些不是那么常用但是却非常有用的 STL 函数,如果忘记用法当场实现的话会非常麻烦,所以想在这里做统一整理。 Read more »
TCP/IP 寻址方法 Posted on 2022-07-01 | In 知识角落 TCP/IP 寻址方法是网络协议中容易被忽视的细节,如果没有对四种方法有清晰的认识,很可能会对具体协议的寻址方法有所疑惑。 Read more »
TCP 为什么要粘包和拆包? Posted on 2022-06-24 | In 知识角落 今天我们将从稳定性角度深挖 TCP 协议的运作机制。 如今,大半个互联网都建立在 TCP 协议之上,我们使用的 HTTP 协议、消息队列、存储、缓存,都需要用到 TCP 协议——这是因为 TCP 协议提供了可靠性。 简单来说,可靠性就是让数据无损送达。但若是考虑到成本,就会变得非常复杂——因为还需要尽可能地提升吞吐量、降低延迟、减少丢包率。 Read more »
小团队轻量级 Code Review 实践 Posted on 2022-06-17 | In 科研分享 就像很多其他有学习成本的事情一样,Code Review 最难的就是迈出第一步。 一旦开始,花在 Review 过程的每一分钟都会很快被成倍地赚回来。 Read more »
Linux 的进程和线程是如何使用内存的? Posted on 2022-06-03 | In 技术探究 毫无疑问,操作系统中内存的资源分配是由操作系统内核来完成的。以 32 位操作系统为例,它一共有 4G 的物理内存空间,为了让进程可以更方便地使用内存,不必关心底层的物理内存分配,内核以虚拟内存的方式为进程分配内存,每个进程都有 4G 的虚拟内存空间。 你可能会想问,一共只有 4G 的物理内存,那是怎么做到给每个进程都能分配 4G 虚拟内存空间的呢? Read more »
挂载到底是什么意思? Posted on 2022-05-27 | In 知识角落 对挂载这一词汇印象最深的是在使用 Docker 时,需要在启动 Docker 容器时制定要挂载的文件,一旦 Docker 容器启动了,就无法再新增加被挂载的文件。挂载显然是一个计算机领域的专属词汇,所以乍一看可能不能完全 get 到它的内涵。挂载来自于对英文单词 mount 的翻译,也有人把它翻译成了“绑定”,不过一旦我们真的明白了挂载到底是什么以及它的作用,倒是更能体会到为什么最终被翻译成“挂载”。 Read more »
多核处理器可以并行运行多个进程吗? Posted on 2022-05-20 | In 技术探究 最近在知乎上看到一个回答说多核 CPU 同时只能并行一个进程但是可以并行这个进程的多个线程。 我怎么记得多核 CPU 是可以并行运行多个进程的?刚想驳斥一下这个答案发现竟然有将近 100 人点了赞,于是乎我不禁陷入了自我怀疑中,难道是我记错了?虽然不记得在哪个文献上看到过,但确实记得看过类似的表述:「对多核处理器,同一时间只能运行一个进程里的多个线程」。一直没有深究过这句话的对错,直到最近深入研究 Linux 的进程、线程模型,才对这句话产生了怀疑。 Read more »
Linux 内核空间和用户空间 Posted on 2022-05-13 | In 知识角落 Linux 为了提高操作系统的稳定性和可用性将内存地址空间划分为内核空间(kernel space)和用户空间(user space),本文以 32 位系统为例介绍 Linux 系统的内核空间和用户空间。 Read more »