Armv8与Armv9执行模型学习路径:从寄存器、异常到内存屏障
简介一份面向嵌入式软件工程师、BSP/系统工程师、芯片验证与安全架构师的Armv8/Armv9架构学习文档内容涵盖ARM基础、异常中断与GIC、Trustzone安全架构、虚拟化、Cache、MMU、电源管理和SOC架构等核心模块尤其突出异常中断作为ARM架构灵魂的地位并强调以安全为核心思想贯穿全篇。资源为单个PDF文件大小7.22MB包含课程大纲、讲师介绍、适用人群和详细知识点梳理结构完整适合从入门到进阶的系统学习也可用于资深工程师查漏补缺。已有106人学习下载。文档不仅讲透Cache等工程难点也分析了MMU等最具性价比的模块能帮助读者建立全局视野理解软硬件协同设计思路从而快速提升对ARM架构的掌握程度。1. 学好 ARM 让领导刮目相看这条路不是背手册是建立执行模型标题里那句“让领导刮目相看”听起来像夸张但在我带人的经历里确实成立同样工作三年的两位开发者一位学透了 Armv8 的执行模型遇到线上异常能直接判断是异常等级配错还是内存乱序另一位只会对着手册改寄存器地址同样的问题查了一周。差别不在记忆而在脑子有没有建立一套 ARM 的执行模型。这篇笔记想讲清楚 Armv8 和 Armv9 从入门到精通这条路怎么走先想明白架构演进解决什么问题再用最小实验把寄存器、异常、内存屏障这些核心脉络钉死最后把三期学习路径拆成能验证的阶段顺带把每个阶段最容易踩的坑提前指出来。2. Armv8 与 Armv9 的架构差异先搞清楚升级在哪再决定学什么很多人一上来就搜“Armv8 和 Armv9 有什么区别”然后被一堆新名词淹没。我的建议是反过来先问自己工作在哪个层次再去看对应层次的变化。Armv8 是一次执行模型的重构Armv9 是在前者之上的增量扩展。增量意味着你需要先能吃透 Armv8 的地基否则 Armv9 的机密计算、内存标记这些概念接不住。2.1 AArch64 执行状态Armv8 的历史性变化不是多了几条指令Armv8-A 最核心的变化是引入了 AArch64 执行状态。注意这不只是“寄存器从 32 位变成 64 位”而是整个指令集和执行模型都被重新设计了。在 AArch64 状态下通用寄存器是 X0-X30 共 31 个 64 位寄存器其中 X30 兼任链接寄存器 LRPC 不再是一个可以直接读写的通用寄存器只能通过分支、异常返回等指令间接修改。对比 AArch32 的 PC 可写这是一个让很多老手翻车的地方。指令集也去掉了大部分条件执行每条指令的长度固定为 32 位异常向量表每个入口固定为 16 字节。这些设计取舍的动机都是流水线效率和硬件实现的简化。学这一层时不要急着去记每条指令的编码先把“执行状态”这个概念理解透。AArch64 和 AArch32 可以在同一个处理器上共存通过异常等级切换时的工作状态决定当前用哪套寄存器视图。也就是说你写一个 64 位内核但用户态可能跑 32 位应用这种混合场景在实际产品中很常见。维度Armv8-A 之前Armv8-A对你的实际影响通用寄存器16 个 32 位AArch3231 个 64 位AArch64汇编传参和栈帧规则全变PC 可写性AArch32 中可写AArch64 中不可直接写跳转逻辑要改用分支指令指令长度16/32 位混合固定 32 位译码更简单缓存利用率不同异常向量入口可变固定 16 字节对齐中断处理程序布局方式变化2.2 Armv9 的关键特性CCA 机密计算、MTE 内存标记与 SVE2Armv9-A 不是推倒重来而是在 Armv8-A 的基础上叠加新能力。你不需要把它们全部学完但需要知道每个特性解决什么问题以及它依赖哪些前置知识。CCA机密计算架构引入 Realm 世界for 在 TrustZone 的 Secure/Non-Secure 之外再加一个隔离世界让云厂商能在不信任 Hypervisor 的情况下保护客户负载。要理解 Realm你首先得理解异常等级和地址翻译这就回到 Armv8 的地基。MTE内存标记扩展给每个内存地址打上 4 位标签硬件在每次访问时校验标签用来检测缓冲区溢出和 use-after-free 这类内存安全错误。这个特性对做系统软件和云原生基础设施的人价值很高但需要编译器和内核配合不是单靠硬件就能生效。SVE2 是可扩展向量扩展的第二代主要面向 HPC、多媒体编解码和 AI 推理场景。它和 NEON 的关系是NEON 是固定宽度SVE2 的向量长度由实现决定软件通过查询来适配。如果你不碰 DSP 或 AI 算子库短期内不用花太多时间。2.3 按入口选版本驱动、安全、虚拟化三条路的侧重点完全不同确定学 Armv8 还是 Armv9不如先确定你的工作入口。做底层驱动和系统移植的人Armv8 就够你用相当长时间重点在异常等级、MMU、中断控制器和 cache 管理切到 Armv9 之后你会多看到 MTE 和 CCA 对系统软件的影响。做安全相关工作的人入口在 TrustZone延伸出去才是 CCA。你需要把 EL3、Secure Monitor、可信固件这条链路走通这些概念在 Armv8 时代就已经成型。做虚拟化和云计算的人入口在 EL2 和虚拟化扩展VHE虚拟化宿主扩展让宿主机可以直接在 EL2 运行减少异常等级切换的代价。我见过太多人一上来就对着 Armv9 的新特性表兴奋结果发现自己连 EL0 和 EL1 的差异都说不清楚。选入口的原则很简单你当前项目里最缺什么就先把那条链路的 Armv8 地基补起来再把 Armv9 增量作为延伸。3. 把核心脉络跑一遍寄存器、异常与内存屏障的最小实验前面两章讲完了“为什么学”这一章讲“学什么才叫入门”。我用三个最小实验把 Armv8/Armv9 最核心的执行模型脉络串起来通用寄存器与程序状态、异常等级与异常切换、内存模型与屏障指令。这三个东西是后面学 MMU、中断控制器、虚拟化、安全世界的共同前提。3.1 通用寄存器与 PSTATEGDB 读一次你就知道黑匣子在哪学 ARM 的第一个拦路虎是“寄存器太多记不住”。我的建议是不要背用调试器去看。大部分开发板都支持通过 JTAG/SWD 连接 GDB连接上之后直接读寄存器。# 连接目标后先用 info registers 只看感兴趣的寄存器避免刷屏 info registers x0 x1 sp # 打印当前异常等级相关寄存器 p/x $spsr_el1 p/x $elr_el1 # 查看当前 PSTATE 中的标志位 p/x $cpsr这里有几个关键点。在 AArch64 中spsr_el1保存的是“进入 EL1 之前那一刻的程序状态”elr_el1保存的是“异常返回后要跳回去的地址”。如果当前正运行在 EL1读这两个寄存器能直接看到上一次异常切换发生时硬件帮你存了什么。这就是黑匣子被打开的地方。cpsr是 GDB 里查看 PSTATE 的常用方式里面包含 NZCV 条件标志位以及当前异常等级等关键信息。注意架构文档里管它叫 PSTATEGDB 里习惯叫 cpsr实质是同一个东西。调参说明如果你连的是多核处理器还要先确认当前调试器停在哪一个核心上。有些场景下你需要在 GDB 里执行thread命令切到目标核心否则读到的是别的核的寄存器状态分析会跑偏。3.2 异常等级与 SVC用三条汇编指令触发一次 EL0 到 EL1 的切换异常模型是 ARM 整个系统的骨架。Armv8-A 定义了 EL0 到 EL3 四个异常等级数字越大特权越高。用户态应用跑在 EL0操作系统内核跑在 EL1虚拟化层跑在 EL2固件和安全监控跑在 EL3。程序从 EL0 要进入 EL1最常见的途径是执行 SVC 指令触发一个同步异常。// 最小同步异常触发实验从 EL0 陷入 EL1 mov x0, #10 // 在 x0 里放一个参数模拟系统调用号 svc #0 // SVC 指令触发同步异常CPU 切到更高异常等级 // 异常处理完成后硬件会回到这里继续执行 add x0, x0, #1 // 用来验证是否真的回到了这条指令这段代码的逻辑是先随便设置一个参数值执行svc #0处理器会立即暂停当前流的执行硬件自动把当前的 PSTATE 保存到SPSR_EL1把返回地址保存到ELR_EL1然后跳转到异常向量表中对应同步异常的入口。等异常处理程序执行完eret指令后CPU 从ELR_EL1恢复地址从svc的下一条指令继续跑。参数说明svc的立即数有点像系统调用号但不一定被硬件使用具体含义由操作系统自己定义。x0传参是常见约定但不是 AAPCS64 强制要求的唯一方式只是大部分 OS 会沿用类似规则。这个实验的价值在于让你分清“硬件做了哪些事、软件做了哪些事”。硬件自动完成状态保存和跳转软件负责查异常原因、处理、恢复现场。很多排查方向搞错的人往往就是没想清这条线划在哪。3.3 内存模型与屏障指令为什么乱序会让锁失效DMB/DSB 怎么选ARM 采用弱内存模型意味着处理器、编译器都可能对内存访问重新排序。在多核场景下你在一个核心写入的数据另一个核心理论上可能看到旧值。这不是玄学是硬件为了性能做的取舍。为了控制顺序ARM 提供了 DMB、DSB、ISB 三条屏障指令。// 生产者一侧先写共享数据再写锁变量 str x1, [x2] // 普通数据写入 dsb ish // 数据同步屏障等前面所有读写完成 str x3, [x4] // 锁变量写入确保它在数据之后对其他核可见这里dsb ish表示在内部共享域内等待之前所有的数据访问完成。ish对应 Inner Shareable 域一般指多核处理器内部的缓存体系。如果操作涉及外设可能需要用nsh或osh等更广的域。参数说明DMB 和 DSB 的区别在“包含什么”。DMB数据内存屏障只排序内存访问不等指令执行完成DSB数据同步屏障会等之前所有指令和访问都完成更重。ISB指令同步屏障则用于刷新流水线比如修改页表之后必须用 ISB 让后续指令拿到新的翻译结果。选型建议普通加锁解锁场景用带获取/释放语义的独占指令族如ldxr/stlxr可以省掉显式屏障写外设寄存器或改页表这种需要严格顺序的操作用 DSB 更安全。实际调优时不是屏障越多越好因为每次 DSB 都可能消耗几十到几百个 cycle。提示在 EL0 里直接执行dsb ish是允许的但它只保证当前核的顺序不保证其他核立刻可见。真正的多核同步还需要配合缓存一致性协议来理解。4. 三期学习路径怎么排把“从入门到精通”拆成三个能验证的阶段《Armv8Armv9架构从入门到精通三期》这样的安排是合理的因为 ARM 学习天然应该分期第一期限打地基第二期突破异常和内存第三期选定方向做产出每一期都必须留下可见的成果。别信“学完就能精通”的速成论这条路最短也要半年关键不是时长是每个阶段有没有验证标准。阶段建议周期核心内容阶段产出物过关自测第一期1-2 个月AArch64 汇编阅读、启动流程、GDB 调试一份启动流程笔记能讲清 CPU 从复位到 main 之间发生了什么第二期2-3 个月异常模型、MMU 页表、中断控制器一个自写的异常处理实验能说清 SVC 之后硬件和软件各自做了什么第三期持续安全 / 虚拟化 / 性能调优方向深耕一次 15 分钟分享 量化数据报告能用数据回答你方向里的一个问题4.1 第一期会读汇编、看得懂启动流程建立整体地图第一期的目标不是写代码而是“能读懂”和“能定位”。挑一块便宜的 ARM 开发板找到它的出厂固件或者引导代码把最前面的汇编指令一行一行读懂画出 PC 从复位向量到 main 函数的路径。不要从第一行手册开始读。先读代码遇到不懂的指令再查手册效率高得多。遇到看不懂的寄存器用 GDB 在汇编单步模式下看它前后值的变化。这一阶段最重要的产出物不是代码量而是你用自己的话把启动流程写清楚。细节上要注意区分不同 EL 下初始化的寄存器视图比如第一个页表配置前 CPU 访问的是物理地址见到eret要知道它意味着异常返回并且会切换异常等级。做到这里你已经超过很多工作两年还在“配寄存器”的同行。4.2 第二期用最小实验钉死异常与内存这是分水岭第二期直接决定你能不能继续深入。很多人的学习死在第三个月就是因为在异常模型和内存模型这里没有动手做实验导致后面的虚拟化、安全、性能全学不进去。异常模型的标准实验是写一个极简异常处理程序用 SVC 触发进入 EL1在 EL1 里读ESR_EL1查异常原因处理后用eret返回。不要依赖现成操作系统直接在裸机或者最小运行时环境做一遍你会把“同步异常”“异步异常”“向量表”这几个概念彻底搞懂。内存模型的标准实验是开 MMU。从最简单的 4K 页表开始手动配置页表描述符打开 MMU再验证一个虚拟地址正确翻译到物理地址。做这个实验时你会自然接触到 cache、TLB、屏障指令之间的关系。把这两个实验做成笔记保留下来第二期就过关了。4.3 第三期选定方向做出产出让领导看得见你的变化第三期的原则是“选择战场而不是选择教材”。先看看团队业务方向是驱动稳定性问题多还是安全需求迫切还是性能优化常年靠猜。选一个方向然后围绕具体问题去深入。想做安全方向就沿着 TrustZone 走到 EL3理解 Secure Monitor 的作用再过渡到 Armv9 的 CCA/Realm 概念。想做虚拟化方向就要在 EL2 上下功夫熟悉虚拟化扩展和 VHE自己跑一个最小 Hypervisor 往往是最好的练习。想做性能调优方向就去啃 PMU、cache 层次和分支预测用数据说话。第三期没有结束时间但有一个最低验收标准能做一个 15 分钟的技术分享让团队里不懂 ARM 的同事听懂你解决的问题。这时候的你已经不再是“学习者”而是“能解决问题的人”——这正是标题里那句话真正生效的时刻。5. ARM 学习的五个常见坑每一个我都亲自踩过这一章的内容来自我带人过程中的血泪积累。这些问题几乎每个初学者都会碰到提前知道能省下大量时间。5.1 只啃手册不写代码一个月后什么都说不出来现象买了顶级厚的 ARM 架构参考手册认真读了前 300 页被同事问“异常等级有哪几个”一句话答不上来。原因参考手册是按“定义”组织的不是按“认知”组织的。它把每个术语定义得极其精确但不负责告诉你怎么串联。解决把学习顺序反过来。先在工作里找一个具体问题哪怕是“为什么我的中断处理程序进不去”带着问题去手册里找对应章节。每个概念配一个最小实验没有实验验证的概念不算学会。5.2 没背熟 AAPCS64 调用约定自己写的函数一调就崩现象写了一个汇编函数给 C 语言调用传参、返回值全乱仿真器里一跑就跑到异常向量表里去了。原因虽然参数按顺序放在 X0-X7但寄存器保存规则更关键。X19-X29 是由被调用者负责保存的X30 是链接寄存器用来存返回地址。如果函数里用了这些寄存器又没保存返回时跳转地址就被破坏了。解决动手写汇编函数前先把“用到哪些被调用者保存寄存器”列出来在函数开头把它们压栈结尾按顺序恢复。这个毛病一旦养成习惯后续写中断处理程序、上下文切换代码会少踩很多坑。5.3 只在模拟器上验证真机的缓存一致性直接翻车现象在 QEMU 里跑多核通信实验一切正常烧到真机上另一个核心读不到刚写入的数据。原因模拟器大多是纯软件实现没有真正模拟多核缓存一致性和乱序执行行为。弱内存模型的“弱”只有在真实硬件上才会原形毕露。解决从第一天起就在真实开发板上练习。哪怕只是跑一个 LED 翻转的实验也要真连调试器。这样你在入门阶段就会自然形成“缓存、屏障、一致性”的直觉而不是把这些概念留到项目救火时才补课。5.4 过早投入 Armv9 新特性根基没打牢增量学不动现象被 CCA 机密计算宣传吸引直接去读 Realm 相关文档越学越懵最后连异常等级和地址翻译都开始混淆了。原因Armv9 的新特性全都建立在 Armv8 的地基上。不理解异常等级就没法理解 Realm 隔离边界不理解地址翻译就没法理解内存标记的粒度。增量建立在存量之上这是客观依赖关系。解决强制自己先把 Armv8 的核心脉络跑通再回头看 Armv9。一旦地基打牢Armv9 的增量概念其实花一两周就能补上因为在底层机制上它们同源。5.5 学习不留产出物能力涨了领导没看见现象学了半年 ARM开会汇报时只能说出“我在学 ARM 架构”拿不出任何可以展示的东西。原因输入型学习没有留下可被验证的结论。解决每个阶段结束时强制自己留一个产出物。第一期的启动流程笔记、第二期的异常处理实验代码、第三期针对某个问题的性能报告随便哪一个都行。产出物不需要多正式哪怕是一份写满调试记录的文档也比“我在看书”有说服力得多。6. 让学习成果被看见一个十分钟的 CPU 性能实测技巧学完寄存器、异常和内存模型之后还有一个能力特别适合让领导看见用 ARM 自带的 PMU性能监视单元量化一段代码的执行代价。以前我们调性能基本靠“感觉哪里慢”但感觉不能作为结论数据可以。这个技巧可以现场演示不需要任何额外硬件开发板或者带虚拟化的模拟器都支持。先启用 PMU 计数器// 启用 PMU 并清零 cycle 计数器 msr pmcr_el0, xzr // 写 0 复位计数器同时保持关闭状态 mov x0, #0x1 // 把 bit0E置 1使能 cycle 计数 msr pmcr_el0, x0然后在你关心的代码段前后各读一次计数值// 测量点 A记录开始 cycle mrs x10, pmccntr_el0 // 被测代码段比如一次内存拷贝或一个内层循环 bl your_test_function // 测量点 B记录结束 cycle mrs x11, pmccntr_el0 // 差值就是这段代码实际消耗的 cycle 数 sub x20, x11, x10在 EL0 访问pmccntr_el0前需要先在 EL1 使能用户态访问权限写寄存器PMUSERENR_EL0的 bit0 为 1否则会直接触发异常。注意不同芯片的 PMU 实现细节略有差别但PMCR_EL0、PMCCNTR_EL0、PMUSERENR_EL0这套寄存器族在 Armv8-A 和 Armv9-A 上是通用的换平台也不用重新学。实测时你会发现一个很有意思的结论同样的内存拷贝操作加上内存屏障和不加屏障cycle 消耗能相差一半以上。这个数据就能直接支撑一个决策——在你的业务场景里是否需要为了换取严格顺序而付出这些性能代价。这种“带着数据做判断”的能力正是系统级工程师和普通业务开发者的分水岭。我现在遇到性能问题第一反应永远是先量化再下结论。这个习惯就是学 ARM 时养成的——寄存器可以查手册执行代价没法靠猜。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

Scapy实现TCP流分离:从五元组到状态机的工程实践

Scapy实现TCP流分离:从五元组到状态机的工程实践

1. 为什么“按TCP流分离PCAP”不是一句空话,而是网络分析的底层刚需你手头有一份200MB的pcap文件,里面混着HTTP、HTTPS、DNS、SSH、自定义协议的流量,还有几段持续3分钟的视频推流。你想单独提取其中某次HTTP上传的完整请求-响应过程&#xf…

2026/10/15 4:41:52 阅读更多 →
Scapy实现TCP流分离:基于五元组与状态机的PCAP解析

Scapy实现TCP流分离:基于五元组与状态机的PCAP解析

1. 项目概述:为什么需要按TCP流分离PCAP包?在日常网络分析、故障排查、安全审计或教学演示中,我们拿到的往往是一个混杂了成百上千个会话的原始pcap文件——比如Wireshark抓取的整段流量、IDS设备导出的告警关联包、或者某次渗透测试过程中记…

2026/10/15 4:41:52 阅读更多 →
PyTorch DataLoader性能调优实战:从卡顿到稳如磐石

PyTorch DataLoader性能调优实战:从卡顿到稳如磐石

1. 为什么一个数据加载器值得单独写五千字?——从“跑通就行”到“稳如磐石”的认知跃迁你有没有过这样的经历:模型训练时GPU利用率常年卡在30%,nvidia-smi里显存占满但计算单元却在摸鱼;或者训练突然卡住十几秒,DataL…

2026/10/15 4:41:52 阅读更多 →

最新新闻

Elasticsearch集群运维:索引模板与ILM生命周期策略实战

Elasticsearch集群运维:索引模板与ILM生命周期策略实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 5:22:10 阅读更多 →
MATLAB图像处理工具箱:交互式设计与性能优化

MATLAB图像处理工具箱:交互式设计与性能优化

1. 项目背景与设计思路去年在实验室带本科生做毕业设计时,发现很多同学虽然学了数字图像处理理论,但真正动手实现时却无从下手。市面上现有的MATLAB图像处理工具箱要么过于学术化,要么封装得太"黑箱"。于是花了三个月时间&#xff…

2026/10/15 5:22:10 阅读更多 →
Coze智能体开发实战:工作流逻辑与应用交付深度指南

Coze智能体开发实战:工作流逻辑与应用交付深度指南

1. 这不是又一个“Coze速成课”,而是我用三个月踩出的智能体开发真实路径你点开这个标题,大概率是被“B站讲得最好”“从入门到精通”这类词吸引来的。但我想先说清楚:Coze本身没有魔法,它只是一把结构清晰、手感扎实的螺丝刀——…

2026/10/15 5:22:10 阅读更多 →
字节Seed独立设立大模型安全与对齐部门,对齐到底在做什么

字节Seed独立设立大模型安全与对齐部门,对齐到底在做什么

据报道,10 月 13 日字节跳动 AI 模型部门 Seed 通过内部通知宣布,单独成立一个专门负责大模型安全与对齐的新部门,名叫 “Seed Model - Alignment & Preparedness”,由严林负责,直接向 Seed 负责人吴永辉汇报&…

2026/10/15 5:22:10 阅读更多 →
Nginx 限流实战:防 CC 攻击和爬虫的四个配置

Nginx 限流实战:防 CC 攻击和爬虫的四个配置

背景 服务器上有个公开的 dashboard,虽然不对外宣传,但日志里经常看到: 同一个 IP 一秒钟请求几十次 某个爬虫把整站扫了一遍 偶尔有恶意请求把 CPU 拉满 fail2ban 能封 IP,但它是事后——等攻击发生了才封。 想做到&#xf…

2026/10/15 5:22:10 阅读更多 →
Qt音频EQ曲线绘制重构:滤波器分层、对数采样与性能优化

Qt音频EQ曲线绘制重构:滤波器分层、对数采样与性能优化

做桌面音频工具这行,EQ曲线是个看似简单、实际一碰就头疼的模块。最近我把手头Qt源码里的EQ曲线绘制整体重写了一遍,完成了一次“升级版”重构。这次升级的重点不在样式的花活,而是把所有计算重新分层、把每个公式的来龙去脉整理成详尽注释&a…

2026/10/15 5:21:10 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →