第 01 天:Linux 是什么?内核、发行版及其生态系统

第 01 天:Linux 是什么?内核、发行版及其生态系统

推荐超级课程:

目录

  • [第 01 天:Linux 是什么?内核、发行版及其生态系统](#第 01 天:Linux 是什么?内核、发行版及其生态系统)
    • [为什么要学习 Linux?](#为什么要学习 Linux?)
      • [为什么 Linux 对您(DevOps/SRE/云工程师)很重要](#为什么 Linux 对您(DevOps/SRE/云工程师)很重要)
    • [什么是 Linux?](#什么是 Linux?)
      • [Linux 简史](#Linux 简史)
    • [Linux 的核心组件](#Linux 的核心组件)
      • [(a) 硬件层](#(a) 硬件层)
      • [(b) 内核(Linux 操作系统的核心)](#(b) 内核(Linux 操作系统的核心))
      • [(c) Shell(命令行界面 - CLI)](#(c) Shell(命令行界面 - CLI))
      • [(d) 用户应用程序和系统实用程序](#(d) 用户应用程序和系统实用程序)
    • [Linux vs. Windows特点比较](#Linux vs. Windows特点比较)
    • [Linux 发行版(Distros)](#Linux 发行版(Distros))
      • [流行 Linux 发行版(按类别)](#流行 Linux 发行版(按类别))
    • [Linux 生态系统](#Linux 生态系统)
    • 动手实践和实验
      • 实验准备
      • [第 1 部分:实验 - 启动两个不同的 Linux 实例](#第 1 部分:实验 - 启动两个不同的 Linux 实例)
      • [第 2 部分:连接、探索和识别](#第 2 部分:连接、探索和识别)
      • [第 3 部分:实验和回顾问题](#第 3 部分:实验和回顾问题)
      • [第 4 部分:编写并运行一个简单的脚本](#第 4 部分:编写并运行一个简单的脚本)
      • [第 5 部分:DevOps/SRE/云工程师挑战](#第 5 部分:DevOps/SRE/云工程师挑战)
      • 问题答案
    • 关键术语词汇表
    • 面试准备问题

为什么要学习 Linux?

Linux 是现代技术的支柱。您每天其实都在与它互动,只是通常你没有意识到而已。从为科学研究提供动力的超级计算机,到运行互联网的服务器,再到家中的智能设备,Linux 无处不在。它是开发人员、系统管理员和网络安全专业人员的首选操作系统。了解 Linux 是任何从事技术职业的人都必备的技能。

为什么 Linux 对您(DevOps/SRE/云工程师)很重要

Linux 是现代基础设施的基础,使其成为 DevOps、站点可靠性工程师 (SRE) 和云工程师不可或缺的工具系统:

  • DevOps: Linux 为 CI/CD 流水线(例如 Jenkins、GitLab)和容器平台(例如 Docker、Kubernetes)提供支持。如Bash 脚本可以自动化部署工作流程。

  • SRE: Linux 的稳定性和可配置性确保了可靠、可扩展的系统。SREs 使用 Linux 应用系统进行监控(例如 Prometheus)、日志记录和高可用性设置等。

  • 云工程师: 主要云平台(AWS、GCP、Azure)都运行在 Linux 实例上。精通 Linux 是管理虚拟机、优化成本和配置云服务的关键。

  • 自动化和可扩展性: Linux 的命令行工具和脚本编写能力实现了自动化,而其轻量级的特性支持在数千台服务器上进行扩展。

  • 行业主导地位: 超过 96% 的前 100 万个 Web 服务器和 100% 的前 500 台超级计算机运行的是 Linux操作系统(数据截至 2025 年)。

  • 个人职业生涯需求: 大多数云原生工具(例如 Kubernetes、Terraform)都是 Linux 原生开发的,几乎所有雇主都期望对于 DevOps/SRE/云岗位上的人员是需要他们精通 Linux技术的。

什么是 Linux?

  • Linux 是一个由 Linus Torvalds 于 1991 年创建的免费、开源、类 Unix 的操作系统内核

  • 它构成了许多被称为"Linux 发行版"(distros)的操作系统的核心。

  • Linux 用于服务器、桌面、嵌入式系统、超级计算机、物联网 (IoT) 设备和移动设备(Android)。

Linux 简史

  • 1983 年: Richard Stallman 启动 GNU 项目,旨在创建一个免费、类 Unix 的操作系统。

  • 1991 年: Linus Torvalds 发布了第一个 Linux 内核(版本 0.01),作为个人项目。

  • 1993 年: 最古老的 Linux 发行版之一 Debian 成立。

  • 1994 年: Linux 内核 1.0 发布,标志着一个稳定的里程碑。

  • 2000 年代: Linux 在服务器、超级计算机和嵌入式系统中获得关注。

  • 2010 年代: Linux 为 Android、云平台(AWS、Azure)和容器(Docker)提供支持。

  • 2025 年: Linux 运行在超过 80% 的云工作负载上,是 AI 和 IoT 生态系统的基础。

目前 Linus Torvalds 仍然通过 Linux 内核邮件列表 (LKML) 监督 Linux 内核的开发。

Linux 的核心组件

Linux 的结构是分层的,从硬件到用户应用程序。以下是一个高级概述:

复制代码
+----------------------------------------------------+
| User Applications (Vim, Docker, Apache, etc.)     |
+----------------------------------------------------+
| Shell (Bash, Zsh, Fish, etc.)                     |  <-- 操作系统的一部分
+----------------------------------------------------+
| System Libraries (glibc, libc, OpenSSL, etc.)     |  <-- 操作系统的一部分
+----------------------------------------------------+
| System Utilities (ls, grep, systemctl, etc.)      |  <-- 操作系统的一部分
+----------------------------------------------------+
| Linux Kernel (Process, Memory, FS, Network)       |  <-- 操作系统的核心
+----------------------------------------------------+
| Hardware (CPU, RAM, Disk, Network, Peripherals)   |
+----------------------------------------------------+

(a) 硬件层

  • 物理组件(CPU、RAM、磁盘、网络接口等)。
  • 操作系统通过内核中的设备驱动程序与硬件交互。

(b) 内核(Linux 操作系统的核心)

  • 直接管理系统资源:
    • 进程管理: 调度进程并处理多任务。
    • 内存管理: 高效地分配和解除分配 RAM。
    • 设备驱动程序: 软件和硬件之间的接口。
    • 文件系统管理: 处理数据存储和检索。
    • 网络管理: 管理系统间通信。
  • 内核空间 vs. 用户空间:
    • 内核空间: 内核运行的特权模式,对硬件和系统资源拥有无限制的访问权。这允许直接控制 CPU、内存和 I/O 设备,但它是隔离的,以防止崩溃影响整个系统。
    • 用户空间: 针对用户应用程序和实用程序的受限模式。这里的应用程序不能直接访问硬件,以维护安全性和稳定性------防止有缺陷的应用程序使内核崩溃或危及系统。
    • 为何分离? 它增强了安全性(例如,权限提升攻击更困难)和可靠性(用户应用程序故障不会导致操作系统崩溃)。在 DevOps/SRE 环境中,这种设计实现了安全的容器化(例如,Docker 进程在用户空间运行,但利用 cgroups 等内核功能进行隔离)。
    • 系统调用: 空间之间的桥梁------用户应用程序通过系统调用请求内核服务(例如,open() 读取文件,fork() 创建进程)。这些操作暂时将 CPU 切换到内核模式,执行请求,然后返回结果。示例:运行 ls 时,用户空间中的 Shell 调用内核函数来列出目录内容。
  • 内核版本: 编号为 X.Y.Z(例如 5.15.0),其中 X=主版本,Y=次版本,Z=补丁。
  • 单体内核: 核心服务在内核空间运行以获得性能,这对于低延迟的云和容器应用程序至关重要。

© Shell(命令行界面 - CLI)

  • 一个命令解释器,将用户命令转换为内核系统调用。
  • 示例:Bash(大多数发行版的默认 Shell)、Zsh、Fish、Dash、Ksh。
  • 对于 DevOps 脚本和自动化至关重要。
运行命令时发生了什么?(示例:ls

当您输入 ls(列出目录内容)等命令并按下 Enter 键时,Shell 会协调一个涉及用户空间和内核空间的多步骤过程。以下是分步分解:

  1. 用户输入: 您在终端中输入 ls 并按下 Enter。终端捕获此输入。
  2. Shell 解析: Shell(例如 Bash)读取命令,解析它(检查参数、别名或内置命令),并确定它是一个外部程序(/bin/ls)。
  3. 路径解析: Shell 搜索 $PATH 环境变量以查找可执行文件(例如,找到 /bin/ls)。
  4. 进程创建: Shell 使用系统调用 (fork()) 来为 ls 创建一个子进程。
  5. 内核执行: 内核切换到内核模式,将 /bin/ls 加载到内存中(通过 execve() 系统调用),并在用户空间开始执行。
  6. 命令执行: ls 在用户空间运行,进行系统调用(例如,opendir() 打开目录,readdir() 读取条目)以通过内核与文件系统交互。
  7. 输出生成: ls 格式化输出(例如,文件名),并使用内核系统调用 (write()) 将其写入标准输出 (stdout)。
  8. 进程终止: ls 退出,子进程结束(exit() 系统调用),Shell 重新获得控制权,显示提示符。

这个过程突出了 Shell-内核的交互流程,确保了命令的安全高效的执行。

在 DevOps 中,理解这一点有助于更好地调试脚本和自动化。

flowchart TD A[用户输入 'ls' 并按 Enter] --> B[Shell 解析命令] B --> C[解析路径:查找 /bin/ls] C --> D[系统调用:fork - 创建子进程] D --> E[内核通过 execve 加载并执行 ls] E --> F[ls 在用户空间运行:调用 opendir, readdir] F --> G[系统调用:将输出写入终端] G --> H[ls 退出:exit 系统调用] H --> I[Shell 重新获得控制权:显示提示符]

(d) 用户应用程序和系统实用程序

  • 用户应用程序: 最终用户程序,如网页浏览器、文本编辑器 (Vim)、DevOps 工具 (Docker、Ansible) 和服务器 (Apache)。通过 Shell 或 GUI 通过系统调用与操作系统交互。
  • 系统实用程序: 用于系统交互的核心命令(例如 ls、grep、systemctl),由 GNU 项目提供。
  • 文件系统: 以分层结构组织数据;一切皆文件。
  • 进程: 程序的运行实例,由内核管理。
  • Init 系统: 管理系统启动和服务 (systemd, SysVinit)。

Linux vs. Windows特点比较

特性 Linux Windows 优势说明
源代码 开源 专有 开源允许检查、修改和分发,促进了对 DevOps 工作流程至关重要的透明度和协作。
文件系统 分层 (/) 驱动器盘符 (C:) Linux 的分层文件系统是一致的,是云环境中脚本和自动化的理想选择。
大小写敏感 严格的大小写敏感性防止歧义,对于健壮的 CI/CD 脚本至关重要。
用户 多用户 侧重单用户 Linux 的多用户设计确保了 SRE 的安全、稳定的服务器操作。
包管理 apt, yum 等 .exe, .msi 软件包管理器简化了软件和依赖项管理,这对于云自动化至关重要。
成本 免费(无许可费) 付费许可 降低了云集群中大规模部署的成本。
资源使用 轻量级 资源密集型 容器和可扩展基础设施具有更高的效率。
安全性 强大的权限,公开审查 频繁的漏洞 最大限度地减少恶意软件风险,并支持快速、透明的补丁,无需重新启动。
稳定性 高正常运行时间(数年不崩溃) 容易重启 确保生产环境中的 99.99%+ 可靠性。

Linux 发行版(Distros)

Linux 发行版 是一个完整的操作系统包,包括 Linux 内核GNU 工具、软件包管理器和应用程序。

不同的汽车制造商(例如丰田、法拉利)使用相似的发动机(内核),但制造用于不同目的的不同车辆(例如家用车 vs. 赛车)。每个都是一个不同的发行版。

流行 Linux 发行版(按类别)

  • 新手友好: Ubuntu、Linux Mint、Fedora
  • 企业/服务器: RHEL、CentOS Stream、Ubuntu Server
  • 侧重安全: Kali Linux、Parrot Security OS
  • 轻量级/嵌入式: Alpine Linux、Raspberry Pi OS
  • 高级/可定制: Arch Linux、Gentoo

对于 DevOps/SRE/云工程师:

  • Ubuntu ServerCentOS Stream:因稳定性和支持而被广泛用于云环境。
  • Alpine Linux:因其最小的占用空间而在轻量级容器中很受欢迎。
  • RHEL:因其长期支持和合规性而在企业中很常见。

Linux 生态系统

Linux 生态系统涵盖了使 Linux 多功能且强大的工具、技术和理念,它超越了内核和发行版。

  • GNU 项目: 提供用户态工具(例如 bash、ls、GCC),使发行版可用。因此,术语为 GNU/Linux
  • 桌面环境: GNOME、KDE、XFCE(与侧重服务器的角色关系不大)。
  • 容器技术: Docker、Podman 和 Kubernetes,对 DevOps 至关重要。
  • 云平台: AWS、GCP 和 Azure 依赖 Linux 实例。

生态系统中的软件包管理

软件包管理器是 Linux 生态系统的基石,它自动化了跨发行版的软件处理。

软件包管理器是一种自动化 Linux 中软件的安装、更新、配置和移除的工具,确保了高效的依赖项管理------这对于 DevOps 自动化和可重现的构建至关重要。

软件包管理器如何工作?
  1. 仓库(Repos): 从官方在线仓库(例如,Ubuntu 从 archive.ubuntu.com)获取软件。
  2. 安装软件: 下载软件包,解析依赖项,并自动配置。
  3. 更新软件: 单个命令即可将所有软件包更新到最新版本。
  4. 移除软件: 清理软件和未使用的文件,不留残余。
软件包管理器如何从仓库获取软件

软件包管理器检查仓库列表(例如,Ubuntu 中的 /etc/apt/sources.list),下载软件包/依赖项,并安装它们。

Ubuntu 仓库条目示例:

plaintext 复制代码
Types: deb
URIs: [http://ports.ubuntu.com/ubuntu-ports/](http://ports.ubuntu.com/ubuntu-ports/)
Suites: noble noble-updates noble-backports noble-security
Components: main universe restricted multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
为什么安装 Ubuntu 后要运行 apt update

Ubuntu 安装完成后,系统中可能包含过时的软件包。

因此运行以下命令可以进行包工具的更新:

bash 复制代码
apt install sudo
sudo apt update  # 更新仓库中的软件包列表
sudo apt upgrade -y  # 安装最新版本
Linux 中流行的软件包管理器
Linux 发行版 软件包管理器 命令示例
Ubuntu, Debian apt sudo apt install nginx
Fedora, RHEL, CentOS dnf (或 yum) sudo dnf install nginx
Arch Linux pacman sudo pacman -S nginx
OpenSUSE zypper sudo zypper install nginx
基本的软件包管理器命令
APT (Debian, Ubuntu)
bash 复制代码
sudo apt update         # 更新软件包列表
sudo apt upgrade -y     # 升级已安装的软件包
sudo apt install nginx  # 安装软件包
sudo apt remove nginx   # 移除软件包
sudo apt autoremove     # 移除未使用的依赖项
sudo apt search nginx   # 搜索软件包
DNF (Fedora, RHEL, CentOS)
bash 复制代码
sudo dnf check-update   # 检查更新
sudo dnf update         # 更新所有软件包
sudo dnf install nginx  # 安装软件包
sudo dnf remove nginx   # 移除软件包
Pacman (Arch Linux)
bash 复制代码
sudo pacman -Syu        # 同步并更新所有软件包
sudo pacman -S nginx    # 安装软件包
sudo pacman -R nginx    # 移除软件包
Zypper (OpenSUSE)
bash 复制代码
sudo zypper refresh     # 刷新软件包列表
sudo zypper update      # 更新所有软件包
sudo zypper install nginx  # 安装软件包
sudo zypper remove nginx   # 移除软件包
使用软件包管理器的最佳实践
  • 始终在安装前更新:sudo apt update && sudo apt upgrade -y
  • 清理:sudo apt autoremove
  • 启用自动安全更新 (Ubuntu):sudo apt install unattended-upgrades && sudo dpkg-reconfigure unattended-upgrades

Linux 系统的可视化工具

Linux 系统 Linux 内核 GNU 工具 桌面环境 软件包管理器 应用程序 硬件管理 Bash, Coreutils, GCC GNOME, KDE, XFCE apt, yum, dnf, pacman Firefox, LibreOffice, Docker

开源理念

Linux 建立在开源理念之上:

  • 自由: 任何人都可以使用、修改和分发代码。
  • 协作: 全球开发人员贡献力量,使 Linux 健壮且创新。
  • 透明度: 开放代码确保了信任和安全,这对于企业和云环境至关重要。

Linux 内核采用 GNU 通用公共许可证 (GPL) 授权,确保衍生作品保持免费。这推动了 DevOps 工具和云基础设施的创新。

讨论问题: 为什么像 Google、AWS 和 Red Hat 这样的公司要投资于开源 Linux 项目?

关于 DevOps/SRE/云工程师的 Linux 常见误区

  • 误区 1:Linux 对云工作来说过于复杂。 像 Ubuntu Server 这样的发行版和像 Docker 这样的工具简化了云管理。
  • 误区 2:Linux 没有用于生产环境。 超过 80% 的云工作负载和大多数 Kubernetes 集群运行在 Linux 上。
  • 误区 3:Linux 缺乏对 DevOps 工具的支持。 像 Jenkins、Terraform 和 Kubernetes 这样的工具都是支持 Linux 并基于其开发的,并且得到广泛支持。

动手实践和实验

实验准备

如果您没有 AWS 账户:

  • 虚拟机: 使用 VirtualBox/VMware 和 Ubuntu Server 或 CentOS Stream ISO 镜像。
  • 免费云替代方案: Oracle Cloud 免费套餐或 Google Cloud 的免费试用。
  • 本地终端: macOS/Linux 用户可以在本地练习命令。

SSH 故障排除:

  • "权限被拒绝 (Permission Denied)" :运行 chmod 400 my-key.pem 并验证用户名(Amazon Linux 为 ec2-user,Ubuntu 为 ubuntu)。
  • 连接超时 (Connection Timeout):确保安全组允许 SSH(端口 22)并检查公共 IP。

第 1 部分:实验 - 启动两个不同的 Linux 实例

  1. 启动您的第一个实例(基于 RHEL):

    • 登录 AWS 管理控制台,导航到 EC2 控制面板。
    • 点击**"启动实例"**并选择 Amazon Linux 2 AMI。
    • 选择 t2.micro 实例类型并创建新的密钥对(.pem 文件)。请安全地保存此文件。
    • 完成启动过程,等待实例状态变为"Running"。
  2. 启动您的第二个实例(基于 Debian):

    • 重复上述步骤,选择 Ubuntu Server AMI。
    • 为了简单起见,使用相同的密钥对
    • 完成启动过程,等待实例状态变为"Running"。

第 2 部分:连接、探索和识别

  1. 连接到 Amazon Linux 2:

    • 运行 chmod 400 my-key.pem
    • 连接:ssh -i "my-key.pem" ec2-user@<amazon_linux_ip_address>
  2. 连接到 Ubuntu:

    • 打开新的终端标签/窗口。
    • 连接:ssh -i "my-key.pem" ubuntu@<ubuntu_ip_address>

第 3 部分:实验和回顾问题

  1. 命令行基础:

    • 在任一实例上运行 pwdlsman ls
    • 问题: pwd 告诉您什么?man 为什么有用?
  2. 识别发行版:

    • 在两个实例上运行 cat /etc/os-release 并进行比较。
    • 问题: 输出中的主要区别是什么?
  3. 识别软件包管理器:

    • 在 Amazon Linux 2 上运行 sudo yum update,在 Ubuntu 上运行 sudo apt update
    • 问题: 发生了什么?用一句话解释区别,并参考上面的软件包管理器部分。
  4. 发行版与内核:

    • 问题: 用您自己的话解释 Linux 内核Linux 发行版之间的区别。
  5. GNU 项目的作用:

    • 问题: GNU 项目在 Linux 生态系统中的作用是什么?

第 4 部分:编写并运行一个简单的脚本

  1. 在任一实例上,创建 hello.sh

    bash 复制代码
    nano hello.sh
  2. 添加以下内容:

    bash 复制代码
    #!/bin/bash
    echo "Hello, Linux World!"
    echo "My current directory is: $(pwd)"
    echo "My distribution is:"
    cat /etc/os-release | grep PRETTY_NAME
  3. 保存(Ctrl+OEnterCtrl+X),使其可执行(chmod +x hello.sh),然后运行(./hello.sh)。

  4. 问题: 每行代码的作用是什么?比较两个实例上的输出。

第 5 部分:DevOps/SRE/云工程师挑战

  • 任务: 在任一实例上运行 uname -r 检查内核版本。将其与 kernel.org 上的最新稳定版本进行比较。为什么像 AWS 这样的云提供商可能会使用较旧的内核?
  • 提示: 考虑稳定性、与云工具的兼容性以及企业支持。

问题答案

  1. 命令行基础:

    • pwd 显示您在文件系统中的当前位置。
    • man 提供命令的文档和示例。
  2. 发行版识别:

    • 输出显示不同的名称/ID(例如,NAME="Amazon Linux"ID="amzn" 对比 NAME="Ubuntu"ID="ubuntu"),证明它们是不同的发行版。
  3. 软件包管理器:

    • sudo yum update 在 Amazon Linux 上成功,在 Ubuntu 上失败。
    • sudo apt update 在 Ubuntu 上成功,在 Amazon Linux 上失败。
    • 解释: 不同的发行版使用不同的软件包管理器(基于 RHEL 的使用 yum/dnf,基于 Debian 的使用 apt)。
  4. 发行版与内核:

    • 内核 管理硬件资源;发行版将内核与工具、软件包管理器和软件捆绑在一起,构成一个完整的操作系统。
  5. GNU 项目的作用:

    • 提供用户工具(例如 bash、核心工具)来补充内核,以创建功能齐全的操作系统。

关键术语词汇表

  • 内核 (Kernel): 操作系统的核心,用于管理硬件和系统资源。
  • 发行版 (Distribution/Distro): 围绕 Linux 内核构建的完整操作系统,包括工具和应用程序。
  • Shell: 用于与操作系统交互的命令行界面(例如 bash)。
  • 软件包管理器 (Package Manager): 用于安装、更新和管理软件的工具(例如 apt, yum)。
  • GNU: 提供补充 Linux 内核的基本工具的项目。
  • 开源 (Open Source): 源代码可自由获取、修改和分发的软件。
  • 仓库 (Repository): 软件软件包的在线存储,供软件包管理器使用。
  • 系统库 (System Libraries): 应用程序用于常见功能的共享代码(例如 glibc)。
  • 系统实用程序 (System Utilities): 用于系统交互的核心命令(例如 ls, grep)。

面试准备问题

通过这些常见的 DevOps、SRE 和云角色的面试问题来测试您学到的Linux知识。

目标是借鉴今天的课程内容,能够自信地回答它们:

  1. Linux 内核是什么,它与 Linux 发行版有何不同?

    (提示:侧重于内核在硬件管理中的作用 vs. 发行版添加用户工具。)

  2. 解释内核空间 vs. 用户空间。为什么这种分离对系统安全性和稳定性很重要?

    (提示:讨论系统调用和容器隔离等实际影响。)

  3. 说出三个流行的 Linux 发行版及其在云环境中的典型用例。

    (提示:提及用于通用云的 Ubuntu Server、用于容器的 Alpine 以及用于企业的 RHEL。)

  4. 像 apt 和 yum 这样的软件包管理器是如何工作的?为什么它们对 DevOps 工作流程至关重要?

    (提示:涵盖仓库、依赖项解析和自动化优势。)

  5. GNU 项目在 Linux 中的作用是什么?为什么全名通常是 "GNU/Linux"?

    (提示:解释像 bash 和 ls 这样的用户态工具。)

  6. 描述开源理念以及它如何使像 AWS 这样的公司在使用 Linux 时受益。

    (提示:强调自由、协作和透明度。)

  7. 在生产 SRE 角色中,您为什么可能更喜欢 Linux 而不是 Windows 作为服务器基础设施?

    (提示:参考比较表中的稳定性、成本和可扩展性。)

  8. 您如何检查 Linux 实例上的内核版本,为什么云提供商可能会使用较旧的版本?

    (提示:使用 uname -r 并讨论稳定性/测试。)

相关推荐
sulikey4 小时前
Qt 入门简洁笔记:信号与槽
前端·c++·笔记·qt·前端框架·1024程序员节·qt框架
在等晚安么4 小时前
记录自己写项目的第三天,springbot+redis+rabbitma高并发项目
java·spring boot·redis·1024程序员节
SepstoneTang4 小时前
前端新手入门-HBuilder工具安装
html·html5·1024程序员节
WebKoalaBoy4 小时前
前端埋点学习
1024程序员节
羑悻的小杀马特4 小时前
告别内网限制!用StirlingPDF+cpolar打造可远程访问的PDF工具站
pdf·cpolar·1024程序员节·stirlingpdf
鸽鸽程序猿4 小时前
【算法】【动态规划】斐波那契数模型
算法·动态规划·1024程序员节
小小的木头人4 小时前
APT 安装方式(适合生产环境)Zabbix 6.4 LTS
运维·zabbix
IvanCodes4 小时前
十六、Linux网络配置
linux·运维·网络
就是ping不通的蛋黄派4 小时前
CentOS7 部署主从复制MariaDB数据库
网络·1024程序员节