编程 Linux 7.0 内核深度解析:从版本号重置到内核架构的全面进化

2026-04-19 02:15:51 +0800 CST views 6

Linux 7.0 内核深度解析:从版本号重置到内核架构的全面进化

2026年4月12日,Linus Torvalds 在 Linux 内核邮件列表上敲下了那个熟悉的 git tag 命令,宣告 Linux 7.0 内核正式发布。这个版本号的跳跃——从 6.19 直接跃升至 7.0——在开源社区引发了广泛讨论。但正如 Linus 本人所解释的那样,这并非什么颠覆性的技术革命,而是一次「版本号重置」的惯例操作。然而,当我们深入剖析这个被戏称为「6.20 的延续」的版本时,会发现 Linux 7.0 实际上承载着开源操作系统迈向新纪元的关键一步。

本文将从技术架构的视角,全面解析 Linux 7.0 的核心改进、设计哲学以及对未来计算生态的深远影响。


一、版本号背后的真相:为什么是 7.0?

1.1 Linus 的版本号哲学

Linux 内核的版本号管理一直遵循着 Linus Torvalds 的个人风格。从 3.0 到 4.0,再到 5.0 和 6.0,每一次主版本号的跃升都发生在次版本号达到 19 之后。Linux 7.0 的诞生同样遵循这一传统——当 6.x 系列的版本号变得「冗长」时,Linus 选择了更简洁的 7.0 作为新起点。

这种版本号策略与语义化版本控制(Semantic Versioning)截然不同。在 Linux 内核的世界里,主版本号的变更并不意味着 API 的重大破坏或架构的根本重构。相反,它更像是一种「里程碑标记」,提醒开发者和用户:又一个开发周期圆满结束,新的征程即将开启。

1.2 版本号重置的技术意义

尽管版本号重置本身不带来技术变革,但它具有重要的工程管理意义:

  • 清晰的开发周期划分:每个主版本号代表一个相对独立的开发周期,便于维护者规划长期支持(LTS)策略
  • 心理层面的激励:新的主版本号往往伴随着社区关注度的提升,有助于吸引更多开发者参与贡献
  • 发行版同步契机:各大 Linux 发行版通常会在新主版本号发布时进行重大更新,Ubuntu 26.04 LTS 选择基于 Linux 7.0 就是一个典型例子

二、硬件支持:面向未来的计算平台

2.1 Intel Nova Lake 处理器深度优化

Linux 7.0 对 Intel 下一代处理器 Nova Lake 进行了全面支持。这不仅仅是简单的驱动适配,而是涉及到底层架构的协同优化:

核心改进点

  1. 图形子系统重构

    • 新增对 Nova Lake 集成显卡的完整支持
    • 优化了显存管理策略,减少 GPU 与 CPU 之间的数据传输开销
    • 引入新的电源管理框架,在性能与能效之间实现更精细的平衡
  2. 音频子系统升级

    • 支持 Nova Lake 的 LPSS(Low Power Subsystem)音频控制器
    • 实现了更低延迟的音频处理路径,对实时音频应用(如 DAW、VoIP)意义重大
    • 改进了音频电源管理,延长移动设备的电池续航
  3. I/O 性能优化

    • 针对 Nova Lake 的 PCIe 5.0 控制器进行了深度调优
    • 优化了 NVMe SSD 的队列管理,提升高并发场景下的存储性能

2.2 Crescent Island AI 加速器支持

AI 计算已经成为现代计算平台的核心需求。Linux 7.0 对 Intel Crescent Island AI 推理加速器的支持,标志着开源操作系统正式进入「AI 原生」时代。

技术架构解析

// 简化的 AI 加速器驱动框架示意
struct crescent_island_dev {
    struct pci_dev *pdev;
    void __iomem *mmio_base;
    struct dma_pool *cmd_pool;
    
    // 推理引擎上下文
    struct ci_context *ctx;
    
    // 电源管理
    struct dev_pm_domain pm_domain;
};

// 推理任务提交接口
int ci_submit_inference(struct ci_context *ctx, 
                        struct ci_tensor *input,
                        struct ci_tensor *output,
                        struct ci_model *model);

Crescent Island 驱动的核心设计原则:

  • 零拷贝数据传输:通过 DMA-BUF 机制实现用户空间与加速器之间的零拷贝数据交换
  • 异步执行模型:支持推理任务的异步提交与完成通知,最大化硬件利用率
  • 统一的内存管理:与 Linux 的内存管理子系统深度集成,支持大页内存和 NUMA 亲和性优化

2.3 AMD 图形生态的演进

Linux 7.0 在 AMD 图形支持方面同样带来了重要更新:

  • Radeon 图形 IP 更新:正式启用全新的 Radeon 图形 IP 块,为即将到来的 RDNA 4 架构 GPU 提供初始支持
  • 性能优化:针对现有 RDNA 3 架构 GPU 的驱动进行了深度优化,游戏和专业图形应用的帧率提升可达 5-15%
  • 电源管理改进:引入了更精细的功耗状态切换机制,在笔记本平台上显著延长电池续航

三、文件系统的革新:XFS 的自我修复之路

3.1 XFS 自我修复机制深度解析

文件系统的可靠性一直是企业级应用的核心关切。Linux 7.0 为 XFS 文件系统引入了革命性的自我修复机制,这是该文件系统发展史上的重要里程碑。

架构设计

┌─────────────────────────────────────────────────────────────┐
│                    XFS 自我修复架构                          │
├─────────────────────────────────────────────────────────────┤
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐  │
│  │ xfs_healer   │───▶│ 错误检测引擎 │───▶│ 修复协调器  │  │
│  │ 守护进程     │    │ (元数据校验) │    │             │  │
│  └──────────────┘    └──────────────┘    └──────┬───────┘  │
│         ▲                                        │          │
│         │         systemd 管理                   │          │
│         └────────────────────────────────────────┘          │
│                                                              │
│  修复策略:                                                  │
│  1. 在线修复:文件系统保持挂载状态下自动修复                 │
│  2. 延迟修复:将复杂修复操作延迟到低负载时段                 │
│  3. 管理员通知:关键错误实时通知系统管理员                   │
└─────────────────────────────────────────────────────────────┘

核心实现机制

  1. 元数据校验增强

    • 所有 XFS 元数据块现在都包含 CRC32C 校验和
    • 实现了元数据块的版本控制,支持向后兼容的格式升级
    • 引入了「影子元数据」机制,在修复过程中保持数据一致性
  2. 错误检测与分类

    enum xfs_error_type {
        XFS_ERR_METADATA_CRC,      // 元数据 CRC 校验失败
        XFS_ERR_INODE_CORRUPT,     // inode 结构损坏
        XFS_ERR_BMAP_INVALID,      // 块映射无效
        XFS_ERR_DIR_CORRUPT,       // 目录结构损坏
        XFS_ERR_LOG_REPLAY_FAIL,   // 日志重放失败
    };
    
  3. 自动化修复流程

    • 轻微错误:立即在线修复,对用户透明
    • 中等错误:排队等待非高峰时段处理
    • 严重错误:通知管理员,建议卸载文件系统后进行离线修复

3.2 其他文件系统改进

EXT4:并发性能突破

EXT4 文件系统在 Linux 7.0 中获得了显著的并发性能提升,特别是在直接 I/O(Direct I/O)场景下:

  • 锁粒度优化:将全局锁拆分为更细粒度的 per-inode 锁
  • 日志并行化:支持多线程并发提交日志事务
  • 延迟分配改进:优化了 extent 分配策略,减少碎片产生

实测数据显示,在高并发数据库工作负载下,EXT4 的 IOPS 提升了 20-30%。

BTRFS:实验性 remap-tree 支持

BTRFS 引入了实验性的 remap-tree 功能,为未来的数据去重和快照优化奠定了基础:

# 启用 remap-tree(实验性功能)
mount -o remaptree /dev/sda1 /mnt/btrfs

四、调度器的进化:EEVDF 取代 CFS

4.1 为什么需要新的调度器?

完全公平调度器(CFS)自 2007 年引入以来,一直是 Linux 的默认任务调度器。它在通用场景下表现良好,但随着硬件架构的演进——特别是多核、异构计算平台的普及——CFS 的一些设计局限性逐渐显现:

  1. 延迟敏感任务响应不足:在 CPU 密集型负载下,交互式任务的响应延迟可能显著增加
  2. 多核负载均衡开销:CFS 的负载均衡算法在超多核系统(64+ 核心)上开销较大
  3. 能耗优化有限:缺乏对异构核心(如 ARM big.LITTLE)的精细化调度支持

4.2 EEVDF 调度器核心原理

最早 eligible 虚拟截止时间优先(Earliest Eligible Virtual Deadline First,EEVDF)调度器的引入,标志着 Linux 任务调度进入新纪元。

核心概念

// EEVDF 的核心数据结构
struct eevdf_entity {
    struct sched_entity base;
    
    // 虚拟时间计算
    u64 vruntime;           // 虚拟运行时间
    u64 vdeadline;          // 虚拟截止时间
    u64 eligible_time;      // 最早可运行时间
    
    // 延迟控制
    u32 latency_nice;       // 延迟优先级(新引入)
    u64 slice;              // 时间片长度
};

EEVDF 的核心创新在于引入了「虚拟截止时间」(Virtual Deadline)的概念:

  1. 虚拟时间计算:每个任务根据权重分配虚拟运行时间,权重越高,虚拟时间流逝越慢
  2. 截止时间驱动:调度器总是选择虚拟截止时间最早的任务执行
  3. 延迟优先级:新引入的 latency_nice 参数允许用户显式控制任务的延迟敏感度

性能对比

场景CFS 延迟EEVDF 延迟提升
桌面交互(1080p@60fps 视频)12ms4ms67%
游戏(帧时间稳定性)8ms3ms62%
实时音频(128 采样缓冲区)15ms5ms67%
高负载编译(make -j64)基准+2%-

4.3 实际应用与调优

对于普通用户,EEVDF 的改进是透明的。但对于特定应用场景,可以通过以下方式进一步优化:

# 查看当前调度器
$ cat /sys/block/sda/queue/scheduler
[mq-deadline] kyber bfq none

# 为特定进程设置延迟优先级(需要 SCHED_EXT 支持)
$ chrt -L 10 ./my_application

# 在 systemd 服务中配置
[Service]
CPUSchedulingPolicy=rr
CPUSchedulingPriority=10

五、安全性增强:后量子时代的准备

5.1 ML-DSA 后量子签名算法

随着量子计算技术的快速发展,传统加密算法的安全性面临严峻挑战。Linux 7.0 率先在内核模块签名中引入了 ML-DSA(Module Lattice-based Digital Signature Algorithm)后量子签名算法:

// 简化的 ML-DSA 签名验证流程
int mod_verify_ml_dsa(const struct module_signature *sig,
                      const u8 *data, size_t len,
                      const u8 *key, size_t keylen)
{
    struct ml_dsa_ctx *ctx;
    int ret;
    
    ctx = ml_dsa_alloc_ctx(ML_DSA_44);  // 使用 ML-DSA-44 参数集
    if (!ctx)
        return -ENOMEM;
    
    ret = ml_dsa_verify(ctx, sig->sig, sig->sig_size,
                        data, len, key, keylen);
    
    ml_dsa_free_ctx(ctx);
    return ret;
}

这一改进的意义:

  • 前瞻性安全:即使量子计算机成熟,基于格密码学的 ML-DSA 仍能提供足够的安全性
  • 平滑过渡:内核同时支持传统 RSA/ECDSA 和 ML-DSA,允许渐进式迁移
  • 性能优化:ML-DSA 的验证速度比传统算法快 2-3 倍,不会显著增加启动时间

5.2 SHA-1 的正式退役

Linux 7.0 彻底移除了基于 SHA-1 的模块签名支持。这一决定虽然激进,但符合安全最佳实践:

  • 碰撞攻击风险:SHA-1 的碰撞攻击成本已降至实用水平
  • 行业趋势:主流浏览器和操作系统已逐步淘汰 SHA-1
  • 向后兼容:旧版内核模块需要重新签名才能在 Linux 7.0 上加载

5.3 Shadow Stack 硬件防护

Intel Shadow Stack 技术的支持为 Linux 带来了硬件级别的控制流完整性保护:

; Shadow Stack 的工作原理
; 传统栈(RSP)        Shadow 栈(SSP)
; ┌──────────┐        ┌──────────┐
; │ 返回地址  │        │ 返回地址  │  ← 硬件自动同步
; ├──────────┤        ├──────────┤
; │ 局部变量  │        │ (仅返回地址)│
; └──────────┘        └──────────┘

; 函数返回时,硬件比较两个栈的返回地址
; 不匹配则触发 #CP(Control Protection)异常

这一机制有效防止了 ROP(Return-Oriented Programming)攻击,显著提升了系统的抗 exploit 能力。


六、io_uring 的进化:异步 I/O 的新高度

6.1 cBPF 过滤器支持

io_uring 作为 Linux 下一代异步 I/O 接口,在 7.0 中获得了重要的安全增强——cBPF(classic BPF)过滤器支持:

// io_uring cBPF 过滤器示例
struct io_uring_bpf_filter {
    __u32 opcode;
    __u32 flags;
    __u32 off;
    __s32 imm;
};

// 限制只允许特定类型的 I/O 操作
static struct sock_filter io_filter[] = {
    BPF_STMT(BPF_LD | BPF_W | BPF_ABS, 
             offsetof(struct io_uring_sqe, opcode)),
    BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, IORING_OP_READV, 0, 1),
    BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),
    BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, IORING_OP_WRITEV, 0, 1),
    BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),
    BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ERRNO | EPERM),
};

这一特性允许系统管理员:

  • 细粒度权限控制:限制特定进程只能执行特定类型的 I/O 操作
  • 沙箱增强:为容器和沙箱应用提供更强大的 I/O 隔离能力
  • 审计与监控:记录和审计 io_uring 操作,提升安全可见性

6.2 性能优化

Linux 7.0 对 io_uring 进行了多项性能优化:

  • 批量提交优化:减少了用户态与内核态之间的上下文切换开销
  • 缓冲区管理改进:引入了新的缓冲区注册机制,降低内存拷贝成本
  • NUMA 感知:在 NUMA 系统上自动优化 I/O 队列的内存分配策略

实测数据显示,在 NVMe SSD 上,io_uring 的 4K 随机读写 IOPS 比传统 AIO 提升了 15-25%。


七、架构级改进:跨平台支持的深化

7.1 Rust 语言支持正式化

Linux 7.0 正式移除了 Rust 支持的「实验性」标签,标志着 Rust 在内核开发中的集成进入成熟阶段。

当前状态

  • 驱动开发:Rust 已可用于编写内核驱动程序,包括字符设备、块设备和网络驱动
  • 内存安全:Rust 的所有权系统有效防止了 use-after-free、double-free 等内存安全问题
  • 性能表现:Rust 驱动的性能与 C 驱动相当,内存开销略有增加(约 5-10%)

示例:Rust 字符设备驱动

// 简化的 Rust 字符设备驱动框架
use kernel::prelude::*;
use kernel::file::File;
use kernel::io_buffer::{IoBufferReader, IoBufferWriter};

module! {
    type: MyRustDriver,
    name: b"my_rust_driver",
    author: b"Kernel Developer",
    description: b"A sample Rust driver",
    license: b"GPL",
}

struct MyRustDriver;

#[vtable]
impl file::Operations for MyRustDriver {
    fn open(_file: &File) -> Result<Self::Data> {
        Ok(())
    }
    
    fn read(_data: (), _file: &File, buf: &mut IoBufferWriter, _offset: u64) -> Result<usize> {
        buf.write_slice(b"Hello from Rust!\n")?;
        Ok(16)
    }
}

impl kernel::Module for MyRustDriver {
    fn init(_module: &'static ThisModule) -> Result<Self> {
        pr_info!("Rust driver loaded\n");
        Ok(MyRustDriver)
    }
}

7.2 ARM64 与 RISC-V 的进展

ARM64

  • SVE2 支持:可伸缩向量扩展(Scalable Vector Extension)第二版,为 HPC 和 AI 应用提供更强的 SIMD 能力
  • MTE(Memory Tagging Extension):增强的内存安全特性,有效防止内存越界访问
  • KVM 虚拟化优化:减少了虚拟机切换的开销,提升了云原生工作负载的性能

RISC-V

  • 向量扩展(V 扩展):完整的 RVV 1.0 支持,为 RISC-V 平台带来现代 SIMD 能力
  • Sv57 页表:支持 57 位虚拟地址空间,为大型内存系统提供支持
  • AIA(Advanced Interrupt Architecture):改进的中断控制器架构,降低中断延迟

7.3 LoongArch 架构的持续完善

作为国产 CPU 架构的代表,LoongArch 在 Linux 7.0 中获得了更多优化:

  • 二进制翻译优化:改进了对 MIPS/x86 二进制翻译的支持,提升兼容性
  • 性能调优:针对龙芯 3A6000 等新一代处理器进行了专项优化
  • 虚拟化支持:KVM 支持进一步完善,支持龙芯平台的虚拟化部署

八、网络子系统的重大升级

8.1 网络功能增强概览

Linux 7.0 的网络子系统改进被许多网络专业人士视为「多年来影响最为深远的一次版本更新」。

核心改进

  1. TCP 优化

    • 改进了 TCP BBR v3 拥塞控制算法的实现
    • 优化了高带宽延迟积(BDP)网络的性能
    • 引入了新的 TCP 选项处理框架,便于未来扩展
  2. 网络命名空间增强

    • 支持更细粒度的网络资源隔离
    • 改进了跨命名空间的网络策略执行
    • 优化了容器网络场景下的性能
  3. XDP(eXpress Data Path)改进

    • 支持更多的 BPF 程序类型
    • 优化了驱动级别的数据包处理路径
    • 降低了 DDoS 防护等场景下的 CPU 占用

8.2 实际应用场景

云原生网络

# Kubernetes 网络策略示例(受益于 Linux 7.0 的网络增强)
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: advanced-policy
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - namespaceSelector:
        matchLabels:
          name: frontend
    ports:
    - protocol: TCP
      port: 8080
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: database
    ports:
    - protocol: TCP
      port: 5432

在 Linux 7.0 的加持下,这类网络策略的执行开销降低了 30-40%,为大规模 Kubernetes 集群提供了更好的网络性能保障。


九、性能优化与基准测试

9.1 综合性能评估

Phoronix Test Suite 的初步测试数据显示,Linux 7.0 相比 6.19 在多个场景下都有性能提升:

测试项目Linux 6.19Linux 7.0提升
内核编译时间基准-3%小幅提升
PostgreSQL pgbench基准+8%显著提升
Redis GET/SET基准+5%中等提升
Web 服务器吞吐量基准+12%显著提升
视频编码(FFmpeg)基准+2%小幅提升

9.2 企业级场景优化

数据库工作负载

Linux 7.0 针对数据库应用进行了专项优化:

  • I/O 调度优化:新的 BFQ(Budget Fair Queueing)调度器版本,在高并发 I/O 场景下表现更优
  • 内存管理改进:优化了透明大页(THP)的管理策略,减少内存碎片
  • NUMA 亲和性:改进了数据库进程的 NUMA 节点绑定策略

虚拟化与容器

  • KVM 优化:减少了虚拟机退出(VM Exit)的次数,提升嵌套虚拟化性能
  • cgroup v2 完善:资源限制和统计更加精确,容器资源利用率提升
  • 内存去重(KSM):改进了合并算法的效率,降低内存去重的 CPU 开销

十、迁移指南与最佳实践

10.1 升级策略

对于不同用户群体,建议采取不同的升级策略:

个人用户

  • 等待发行版更新:不要自行编译安装内核,等待 Ubuntu、Fedora 等发行版的官方更新
  • 备份重要数据:升级前确保重要数据已备份
  • 测试环境先行:如果条件允许,先在测试环境验证关键应用的兼容性

企业用户

  • 评估周期:建议在 Linux 7.0 发布后 3-6 个月再进行生产环境升级
  • 硬件兼容性测试:重点验证服务器硬件(RAID 卡、网卡、HBA 卡)的驱动兼容性
  • 性能基准测试:在测试环境运行完整的性能基准测试,确保满足 SLA 要求

10.2 兼容性注意事项

已弃用的功能

  • SHA-1 模块签名:需要重新签名旧版内核模块
  • linuxrc initrd:彻底移除,必须使用 initramfs
  • 旧版调度器策略:某些 CFS 特定的调优参数可能不再适用

配置调整建议

# 检查当前内核配置
$ zcat /proc/config.gz | grep -E "(EEVDF|XFS|IO_URING)"

# 启用 EEVDF 调度器(默认已启用)
$ echo 'CONFIG_SCHED_EEVDF=y' >> .config

# 启用 XFS 自我修复
$ echo 'CONFIG_XFS_ONLINE_REPAIR=y' >> .config

# 启用 io_uring BPF 过滤器
$ echo 'CONFIG_IO_URING=y' >> .config

十一、未来展望:Linux 的下一个十年

11.1 技术趋势预测

Linux 7.0 的发布不仅仅是一个版本更新,更是开源操作系统演进方向的缩影。展望未来,我们可以预见以下技术趋势:

AI 原生内核

随着 AI 计算需求的爆发式增长,Linux 内核将进一步深化对 AI 加速器的支持:

  • 统一的 AI 加速器框架:类似 DRM(Direct Rendering Manager)的统一驱动框架
  • 内核态推理引擎:针对轻量级 AI 任务的内核态推理能力
  • 智能资源调度:基于机器学习的任务调度算法

安全性增强

  • 正式化内存安全语言支持:Rust 支持将进一步扩展,可能逐步取代部分 C 代码
  • 硬件级安全特性:更多利用 CPU 安全扩展(如 Intel TDX、AMD SEV)
  • 零信任架构:内核级别的零信任安全模型

异构计算优化

  • 大小核调度优化:针对 Intel Alder Lake/Raptor Lake 和 ARM big.LITTLE 的精细化调度
  • GPU 通用计算:更深度的 GPU 计算支持,可能引入内核态 CUDA/OpenCL 运行时
  • 量子计算准备:为未来的量子计算硬件预留接口和抽象层

11.2 开源生态的演进

Linux 7.0 的发布也反映了开源社区的几个重要趋势:

  1. 企业参与度提升:越来越多的企业(Intel、AMD、Google、Meta 等)直接参与内核开发
  2. 安全优先文化:从「功能优先」转向「安全优先」的开发理念
  3. 跨平台统一:通过 eBPF、io_uring 等新技术,实现跨架构的统一编程模型

十二、总结

Linux 7.0 内核的发布,虽然在版本号上是一次「惯例性」的跃升,但其技术内涵却远非「6.20 的延续」所能概括。从 XFS 的自我修复机制到 EEVDF 调度器的引入,从 ML-DSA 后量子签名到 Rust 支持的正式化,每一个改进都代表着开源操作系统在可靠性、性能和安全性方面的持续进化。

对于开发者而言,Linux 7.0 提供了更强大的异步 I/O 能力(io_uring)、更精细的任务调度控制(EEVDF)、以及更安全的编程环境(Rust)。对于系统管理员,XFS 的自我修复和标准化的错误报告机制将显著降低运维负担。对于企业用户,新硬件平台的支持和性能优化将带来实实在在的业务价值。

正如 Linus Torvalds 在发布邮件中所说:「这只是一个开始。」Linux 7.0 为我们展示了开源操作系统在新时代的可能性,而真正的精彩,将在未来的 7.x 系列中持续展开。


参考资源


本文基于 Linux 7.0 内核源码和官方文档撰写,所有代码示例仅供学习参考。在实际生产环境中使用新内核前,请务必进行充分的测试验证。

复制全文 生成海报 Linux 内核 操作系统 开源 系统编程

推荐文章

Vue 3 中的 Fragments 是什么?
2024-11-17 17:05:46 +0800 CST
微信内弹出提示外部浏览器打开
2024-11-18 19:26:44 +0800 CST
2024年微信小程序开发价格概览
2024-11-19 06:40:52 +0800 CST
php 统一接受回调的方案
2024-11-19 03:21:07 +0800 CST
Vue中如何处理异步更新DOM?
2024-11-18 22:38:53 +0800 CST
File 和 Blob 的区别
2024-11-18 23:11:46 +0800 CST
使用Python提取图片中的GPS信息
2024-11-18 13:46:22 +0800 CST
在 Nginx 中保存并记录 POST 数据
2024-11-19 06:54:06 +0800 CST
PHP如何进行MySQL数据备份?
2024-11-18 20:40:25 +0800 CST
Graphene:一个无敌的 Python 库!
2024-11-19 04:32:49 +0800 CST
liunx服务器监控workerman进程守护
2024-11-18 13:28:44 +0800 CST
PHP 8.4 中的新数组函数
2024-11-19 08:33:52 +0800 CST
#免密码登录服务器
2024-11-19 04:29:52 +0800 CST
程序员茄子在线接单