03 2024 档案
摘要:为什么要学习网络协议? 《圣经》中有一个通天塔的故事,大致是说,上帝为了阻止人类联合起来,就让人类说不同的语言。人类没法儿沟通,达不成“协议”,通天塔的计划就失败了。 但是,要想打造互联网世界的通天塔,只教给一台机器做什么是不够的,你需要学会教给一大片机器做什么。这就需要网络协议。只有通过网络协议,
阅读全文
摘要:案例篇:服务器总是时不时丢包,我该怎么办? 所谓丢包,是指在网络数据的收发过程中,由于种种原因,数据包还没传输到应用程序中,就被丢弃了。这些被丢弃包的数量,除以总的传输包数,也就是我们常说的丢包率。丢包率是网络性能中最核心的指标之一。 丢包通常会带来严重的性能下降,特别是对 TCP 来说,丢包通常意
阅读全文
摘要:关于 Linux 网络,你必须知道这些 网络模型 开放式系统互联通信参考模型(Open System Interconnection Reference Model),简称为 OSI 网络模型。 应用层,负责为应用程序提供统一的接口。 表示层,负责把数据转换成兼容接收系统的格式。 会话层,负责维护计
阅读全文
摘要:基础篇:Linux 文件系统是怎么工作的? 同 CPU、内存一样,磁盘和文件系统的管理,也是操作系统最核心的功能。 磁盘为系统提供了最基本的持久化存储。 文件系统则在磁盘的基础上,提供了一个用来管理文件的树状结构。 索引节点和目录项 在 Linux 中一切皆文件。不仅普通的文件和目录,就连块设备、套
阅读全文
摘要:基础篇:Linux内存是怎么工作的? 内存映射 Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存。 虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同字长(也就是单个 CPU 指令可以处理数据的最大长
阅读全文
摘要:基础篇:到底应该怎么理解“平均负载”? $ uptime 02:34:03 up 2 days, 20:14, 1 user, load average: 0.63, 0.83, 0.88 我相信你对前面的几列比较熟悉,它们分别是当前时间、系统运行时间以及正在登录用户数。 02:34:03 //当前
阅读全文
摘要:x86 架构 作为 Linux 操作系统,何尝不是这样。如果下面的硬件环境千差万别,就会很难集中精力做出让用户易用的产品。毕竟天天适配不同的平台,就已经够头大了。x86 架构就是这样一个开放的平台。今天我们就来解析一下它。 计算机的工作模式是什么样的? CPU 和内存是完成计算任务的核心组件,所以这
阅读全文
摘要:你可以把 Linux 内核当成一家软件外包公司的老板 操作系统其实就像一个软件外包公司,其内核就相当于这家外包公司的老板。所以接下来的整个课程中,请你将自己的角色切换成这家软件外包公司的老板,设身处地地去理解操作系统是如何协调各种资源,帮客户做成事情的。 趣谈操作系统组成,类比至外包软件公司 操作系
阅读全文
摘要:贪心算法 「贪心算法 greedy algorithm」是一种常见的解决优化问题的算法,其基本思想是在问题的每个决策阶段,都选择当前看起来最优的选择,即贪心地做出局部最优的决策,以期获得全局最优解。贪心算法简洁且高效,在许多实际问题中有着广泛的应用。 贪心算法和动态规划都常用于解决优化问题。它们之间
阅读全文
摘要:初探动态规划 「动态规划 dynamic programming」是一个重要的算法范式,它将一个问题分解为一系列更小的子问题,并通过存储子问题的解来避免重复计算,从而大幅提升时间效率。 给定一个共有 (n) 阶的楼梯,你每步可以上 (1) 阶或者 (2) 阶,请问有多少种方案可以爬到楼顶? 如图 1
阅读全文