汇编语言上机四阶段:从.asm源文件到GDB调试的完整流程
汇编语言与计算机系统结构这门课真正让人卡住的往往不是指令语法而是第一次上机时对完整流程没有概念。我见过不少同学在编辑器里写好了汇编源文件却不知道接下来该敲什么命令也不知道每个命令到底做了什么。这篇笔记就来聊一个最简单的上机过程示例从编写一份 .asm 源文件开始经过汇编、链接再到用调试器逐条观察指令。整条链路走通之后你后面做任何实验都会顺手很多尤其是当成系统结构课程的底层基础来用。1. 上机前为什么要先搞懂四个阶段1.1 汇编这个词新手最容易搞混上课时老师随口说你先汇编一下新手很容易懵汇编不是语言吗怎么变成动作了但在这个语境里汇编指调用汇编器把汇编语言源文件转换成目标文件的过程。类似地编译指把 C 语言源文件转换成目标文件或可执行文件。中文术语的动词化算是第一道坎。我建议把所有操作拆成编辑、汇编、链接、运行调试。每一阶段都会产出一个你能拿在手里的文件编辑阶段得到 .asm 文本文件汇编阶段得到 .o 目标文件链接阶段得到可执行文件运行调试阶段看到进程在操作系统里的表现。这四个产物分别在什么环节检查是上机最该建立的心智模型。可以打个比方你有一份菜谱但不代表菜已经上桌。汇编相当于把菜谱里的步骤翻译成后厨能执行的切配动作链接相当于把切好的食材按顺序拼成完整菜品加载运行才是真正开火。哪个环节出了问题表现都不同排查思路也不同。1.2 每个阶段的输入输出和检查手段先看编辑阶段。输入是你的想法输出是 .asm。这个阶段没有程序能否运行的概念只有文本内容是否符合汇编语法。最容易犯的错误是用了中文标点、文件保存成了带 BOM 的 UTF-8 编码、行尾是 CRLF。NASM 对这类问题比较敏感。检查手段很简单用 cat、less 或编辑器打开源码看就能发现大部分问题。汇编阶段。输入 .asm输出 .o。汇编器逐行读入把每条指令翻译成机器码同时建立符号表。符号表是什么简单说就是变量名和标签名在目标文件里的记录比如 msg、_start。此时程序还不能运行因为地址还没有被最终确定。同一个 msg 符号可能被多个模块引用汇编器需要把这些信息留给链接器处理。链接阶段。输入一个或多个 .o输出可执行文件。链接器主要做这几件事合并相同 section、解析符号引用、分配虚拟地址、记录入口点。所以链接器报错多是找不到符号重复定义。你会发现汇编阶段顺利通过的程序在链接阶段同样可能失败。运行调试阶段。你在 shell 里执行一个名为 hello 的程序时操作系统加载器读取可执行文件头把代码段和数据段映射到虚拟内存设置好栈然后跳到入口地址。现代操作系统下程序不会直接碰硬件而是通过 syscall 请求内核输出。这正好是系统结构课后面重点讲的用户态与内核态。1.3 为什么课上非要安排上机有人觉得汇编语法过时没必要花时间。但上机不是学怎么打字而是把寄存器、内存地址、栈偏移这些抽象概念变成可观察的东西。你在 C 语言里写一句 return 0编译器帮你处理了退出码在汇编里你得自己决定用哪条系统调用有没有把返回值放到正确寄存器。这个亲手操控细节的过程对建立系统结构的直觉非常关键。举个例子C 语言函数调用时栈帧的建立和销毁如果你只用高级语言看永远只是图但当你用汇编单步调试看到 rsp 在 call 前后变化看到返回地址被压栈这些概念就真正落地了。上机示例虽然简单却包含了后续复杂实验的全部骨架。2. 环境准备我用的工具链与为什么这样选2.1 主流工具链选型对比我推荐的组合是 Linux 下的 NASM 加 ld 加 GDB。原因很简单NASM 使用 Intel 语法和大多数教材中的 8086 汇编写法接近ld 足够轻量能让你看清链接器到底做了什么GDB 则是观察寄存器和内存的最佳工具。有些同学习惯 Windows 下的 MASM 加 DOSBox好处是贴近 8086 真实模式能用到 INT 21H 这类 DOS 中断坏处是环境老、调试手段弱而且很多语法细节与现代系统不兼容。macOS 也能装 NASM但它的系统调用号和参数传递方式与 Linux 不同跑课内示例前要单独适配。组合优点需要注意Linux NASM ld GDB现代、可调试性好、与系统结构课衔接自然与教材 8086 的真实模式语法有差异Windows MASM DOSBox贴近 8086 教材INT 21H 直观环境老旧调试能力有限macOS NASM ld能跑通基本程序syscall 编号和传参方式不同需额外适配如果你跟着这门课做实验我的建议是别折腾多重组合选定一套主环境把精力放在流程和原理上。2.2 安装与验证如果你用的是 Ubuntu 或 Debian 系安装就三条命令sudo apt update sudo apt install -y nasm gdb binutils安装完之后务必确认版本号能正常打印nasm -v ld --version gdb --versionbinutils 是一个非常关键的包它包含 ld、objdump、readelf 等全套二进制工具。后面检查目标文件格式、反汇编、查看符号表全靠它。GDB 可能系统已经自带但明确定位到版本会让你心里有底。Windows 用户建议装一个 Linux 虚拟机或使用 WSL尽量获得原生命令行体验。这一步不需要纠结版本新旧略新即可。真正重要的是后面的命令流程。2.3 源文件书写的基本规范动手之前先把源文件的格式规范说清楚可以省掉后面一半的报错。第一文件名以 .asm 结尾。第二推荐 UTF-8 无 BOM 编码、LF 换行。如果你用 Windows 记事本保存默认 CRLF 可能会让 NASM 在某些字符串场景下多出不可见字符。第三全文使用英文标点特别是逗号、冒号、引号。汇编语法里标签后面必须有冒号比如_start:。漏了冒号时NASM 不会直接报你漏了冒号而是给一个看似奇怪的警告label alone on a line without colon might be an instruction。意思是说一个单独出现的标识符后面没跟冒号NASM 会把它当成指令助记符去解析自然就乱套了。此外建议每一行只写一条指令操作数之间用英文逗号并留一个空格。把声明区.data和代码区.text分开是后面所有示例都会遵守的约定。3. 手把手走一遍上机流程从源码到调试器3.1 一个最小的 Linux x86-64 汇编程序下面是完整的 hello.asm。它在屏幕上输出一行Hello, assembly!然后正常退出。你可以把这段代码视为后续所有上机实验的基础模板。; hello.asm - 最小Linux x86-64汇编程序 section .data msg db Hello, assembly!, 10 len equ $ - msg section .text global _start _start: mov rax, 1 ; sys_write mov rdi, 1 ; fd stdout mov rsi, msg ; buffer address mov rdx, len ; length syscall mov rax, 60 ; sys_exit xor rdi, rdi ; status 0 syscall在.data段里msg db Hello, assembly!, 10定义了一串字节先是 H、e、l、l、o 这样的 ASCII 字符最后是数字 10。10 在 ASCII 里是换行符不是字母。紧接着的len equ $ - msg用当前位置$减去 msg 的起始地址得到字符串的字节长度。这种写法很常见你不需要自己数有多少字符汇编器会替你算。.text段里的global _start是导出符号。_start是程序入口。为什么叫_start因为后面链接器默认寻找这个符号作为入口点。你可以通过-e参数改名字但课程里建议始终用_start和教材、工具链的习惯保持一致。指令部分四行 mov 分别设置系统调用号和三个参数然后syscall触发内核调用。整体含义是调用 write 系统调用往标准输出文件描述符 1写入一段地址从 msg 开始、长度为 len 的内容。3.2 为什么用 syscall 而不是 DOS 中断写 Linux 系统调用时遵循一套固定规则rax 放系统调用号rdi、rsi、rdx、r10、r8、r9 依次放前六个参数。我们的 write 需要三个参数文件描述符、缓冲区地址、字节数。所以 rax1rdi1rsimsgrdxlen。最后用 exit 系统调用让程序结束rax60rdi0 表示退出状态为 0。如果不调用 exit程序会继续执行后续内存中的随机内容导致段错误。这里涉及一个很多新手困惑的点为什么不是 int 21h因为那是 DOS 时代的接口。Linux 内核向用户态提供的接口是 syscall 指令配合寄存器传参。两者思路相同都是把请操作系统帮忙的请求号和参数放到约定位置然后触发切换。我们在系统结构课上理解用户态与内核态syscall 就是最直接的例子。3.3 汇编、链接、运行三条命令文件写好后进入终端nasm -f elf64 -g -F dwarf hello.asm -o hello.o ld -o hello hello.o ./hello第一行命令中-f elf64表示生成 64 位 ELF 目标文件。ELF 是 Linux 可执行文件的标准格式.o和可执行文件都用它。-g表示生成调试信息-F dwarf指定调试信息格式为 DWARF。没有调试信息也能汇编链接但 GDB 里看不到变量名和源码行所以课程中建议默认带上。第二行 ld 只需给出输出文件名和输入目标文件。它默认去找_start作为入口符号并把代码段、数据段安排到虚拟地址空间。如果你之前忘了global _start这一步就会报错。运行./hello会看到输出。再用echo $?查看退出码应该为 0。这一步虽然简单但建立了一个闭环你写了一个程序通过汇编和链接变成了可执行文件执行后向内核请求了输出并以指定状态退出。3.4 利用 file、readelf、objdump 检查各阶段产物上机过程不只是敲三条命令。建议每产生一个文件都检查一下类型file hello.asm hello.o hello readelf -h hello | grep Entry objdump -d hellofile 会告诉你 hello.o 是ELF 64-bit LSB relocatablehello 是ELF 64-bit LSB executablereadelf 能看到程序入口地址objdump 能反汇编出来验证你写的 mov 是否和机器码一一对应。这一组工具能让你把黑盒拆开看为后续实验打基础。4. 上机最常见的报错与一次段错误的完整排查链路4.1 汇编阶段的常见语法报错看到错误先别慌。下面是几类我见过无数次的 NASM 报错第一次上机前扫一眼能省掉很多时间。报错信息通常原因解决办法error: parser: instruction expected指令名打错、全角逗号、行尾多余字符检查对应行改成英文标点error: symbol msg undefined变量名拼写不一致或引用在定义之前统一大小写与拼写warning: label alone on a line without colon标签漏了冒号在标签后面补冒号error: comma expected操作数之间不是英文逗号把全角逗号改成英文逗号error: attempt to define a local label局部标签使用方式有误检查%%用法或直接改用普通标签定位语法错误最直接的办法就是看 NASM 输出里的文件名和行号。先改那一行如果改了还报错可能是它上面某条指令没有闭合例如字符串引号没写全导致汇编器把后续内容都当成字符串直到遇到下一个引号。这类错误报出来的行号可能远在错误点之后所以不要机械地只看行号。4.2 链接阶段的_start经典问题链接阶段最常见的报错都和_start相关。如果你在 .asm 里写了_start却没有global _start链接器会警告cannot find entry symbol _start; defaulting to ...。在某些情况下如果多个目标文件都没有入口会变成undefined reference to _start。我把这个坑单独拿出来是因为它和符号可见性有关。global 关键字告诉汇编器这个符号要写进目标文件的符号表并且允许外部模块引用。没有 global标签只在当前文件内部有效链接器从目标文件找入口符号时自然找不到。另一个易错点如果你的项目有多个 .asm 文件_start只能出现一次因为链接器不能同时跳到两个入口。4.3 运行时段错误一次完整排查运行时最常见的错误是段错误。我的建议是不要靠猜用 GDB 定位到出错的那条指令。比如下面这段故意写错的程序; 有问题的写法 section .data msg db Hello, 10 section .text global _start _start: mov rax, 1 mov rdi, 1 mov rsi, 0 ; 故意把缓冲区地址设为 0 mov rdx, 5 syscall运行./hello会直接 Segmentation fault。原因很清楚让内核从地址 0 读取 5 字节内核检查到非法地址后杀掉了进程。但如果你的程序更复杂可能很难一眼看出问题。排查步骤是这样的。先用gdb ./hello启动然后break _start再run到入口。执行info registers看看 rsi 当前值。接着用stepi一条一条走在 syscall 之前停住检查 rsi、rdx。也可以x/5i $rip看即将执行的指令或x/5bx $rsi看指针指向的内存是否可读。一旦发现 rsi0问题就出来了。这个思路对一切段错误都有效先找是哪条指令触发了非法访问再看访问了哪个地址最后看这个地址为什么非法。常见原因无非几种寄存器没赋值、字符串长度算错、缓冲区地址被覆盖、栈指针越界。这里还要强调一个容易误导人的点段错误的崩溃位置不一定是真正的错误源头。比如你之前把 rsi 改成 0然后中间又执行了几条不相关的指令最后在 syscall 处才崩溃。GDB 单步可以让你看到崩溃前的完整指令序列再往前翻几行错误源头就出来了。5. 用 GDB 看清每条指令寄存器、内存和栈的观察方法5.1 在入口处中断查看寄存器初值回到正确程序上用 GDB 把运行过程完整看一遍。启动后先break _start再run。程序会停在入口处还没有执行任何指令。这时候info registers看到的就是操作系统加载程序后、第一条指令执行前的现场。常用寄存器的用途可以整理成一张表寄存器在本示例中的作用rax系统调用号也保存 syscall 返回值rdi第一个参数这里是文件描述符 1rsi第二个参数这里是缓冲区地址rdx第三个参数这里是字节长度rsp栈顶指针指向操作系统布置好的初始栈rbp栈帧基址本例未使用rip当前指令地址GDB 里可见RSP 指向栈顶栈顶存放 argc也就是命令行参数的个数。对于./helloargc1。用x/8gx $rsp能看到这个数字和后面的 argv 指针数组这是程序与操作系统交互的公共区域。很多 C 语言书里说main(int argc, char **argv)其实在入口之前这些参数已经被内核按约定放在栈上了。RAX 等通用寄存器在入口处一般没有保证值你不要依赖它。程序第一条指令会重新给它们赋值。5.2 单步执行与动态观察寄存器GDB 里单步执行汇编指令用stepi简写si。每次执行 siRIP 就推进一条指令。可以用info registers持续观察 RAX、RDI、RSI、RDX也可以提前设置display/x $rax让它在每次停下来后自动显示这样不用反复敲命令。更直观的方式是切到 TUI 模式。layout asm会显示汇编指令窗口当前指令被高亮layout regs会显示寄存器窗口每次执行完自动刷新。再执行一次set disassembly-flavor intel反汇编风格就和 NASM 一致读起来不别扭。走几步到 syscall 之前你会发现寄存器值变成了 1、1、msg 地址、5。这里每一步 mov 都在为 syscall 准备参数。你完全可以当场改一个值比如set $rdx2再continue程序输出会变短。这种直接改寄存器的手法比反复改源码再重新汇编高效很多。5.3 查看内存里的字符串和初始栈汇编程序里没有高级语言那样的变量名可以直接 print但可以按地址看内存。x/s msg能按字符串格式打印x/16bx msg按字节打印十六进制和 ASCII你会亲眼看到 Hello 末尾的换行符 0a。这个 0a 之所以存在是因为你在 db 里写的数字 10。栈的观察更有意思。入口处 RSP 是栈顶x/10gx $rsp可以看到 8 字节一组的数据。第一组是 argc第二组开始是 argv 指针数组。数组里的每个指针指向一个字符串也就是命令行参数。想看第一个参数的内容可以执行x/s *(void**)($rsp8)。这些细节在系统结构课上讲程序启动时非常有用。5.4 在 syscall 上设置断点汇编程序没有函数名怎么在 syscall 上断两种简单办法。一是先disassemble _start得到每条指令的地址再用break *0x...设地址断点。二是从入口用 si 步进等看到 RIP 指向那条 syscall 时输入break *$rip。第二种更动态注意$rip是 GDB 变量取的是当前指令地址。如果想让程序连续执行到下一个断点用continue。调试多个系统调用序列时可以先在入口断一次观察寄存器再在第二个 syscall 处断比较两处参数分布。这对理解系统调用上下文很有帮助。6. 把上机练成底层切片一些实用经验6.1 问题定位顺序先判断阶段再看细节分享一个我自己用过无数次的排查顺序遇到问题先问自己程序卡在哪个阶段。汇编报错看源码语法链接报错看符号和入口运行崩溃用 GDB 找指令。这个顺序看起来简单但很多人一上来就盯着代码改忽略了阶段判断结果把语法错当成逻辑错越改越乱。每个阶段都有固定的验收命令汇编通过会生成 .o链接通过会生成可执行文件运行通过会看到输出。你在心里把已完成步骤划掉剩下没完成的自然就是问题所在。这个习惯比记住任何一条具体指令都值钱。6.2 把 hello.asm 当成模板配一个 Makefile我建议把可用的 hello.asm 存成一个模板。后续实验要输出数字、读文件、调用 C 库都可以在这个骨架上改。模板固定包含.data、.text、global _start、以及写入和退出的系统调用段。这样每次面对新实验只需要关注新增逻辑而不是重复纠结环境问题。Makefile 不是汇编课必学内容但写一个十几行的文件能让你后续上机舒服很多。下面这个版本够用hello: hello.o ld -o $ $^ hello.o: hello.asm nasm -f elf64 -g -F dwarf hello.asm -o $ clean: rm -f hello hello.o$表示目标文件名$^表示所有依赖文件。注意 Makefile 的缩进必须是 Tab不能是空格否则会报错。6.3 程序跑通之后可以接着做的几件事程序跑通只是开始。想做点更有价值的练习按这个顺序来第一给程序加一个读键盘输入的片段观察 read 系统调用的参数第二用 GDB 把寄存器改乱观察程序行为如何变化这比反复改源码更接近底层调试第三用 objdump 把自己的可执行文件反汇编对比你写的汇编和机器码之间的关系第四如果课程进入函数调用章节在 call 和 ret 之间设断点看返回地址如何被压在栈顶。把这个最小的上机示例延伸出去你会慢慢发现汇编语言实验的真正价值不是记住指令而是让你对程序的每一步行为都有确定的、可观察的解释。这种解释能力正是后面学系统结构时最需要的东西。我当年学汇编时最吃亏的一件事就是急着写复杂功能结果一遇到问题就在一堆代码里找效率极低。后来我给自己定了一个规则每次上机先跑通一个空的最小程序再往里面加功能。这个方法听起来很笨却是我能想到的最快路径。如果你想在上机环节少走弯路不妨也试试先看懂四个阶段再动手写第一条指令。

相关新闻

pure_live v2.6.0 阶段稳定版全解析:上游整合、稳定性设计与五平台构建

pure_live v2.6.0 阶段稳定版全解析:上游整合、稳定性设计与五平台构建

音视频直播移动开发 【免费下载链接】pure_live 纯粹直播:哔哩哔哩/虎牙/斗鱼/快手/抖音/网易cc/YY直播/Twitch直播/SOOP直播/M38自定义源应有尽有。 项目地址: https://gitcode.com/gh_mirrors/pur/pure_live 点击查看 免费下载 pure_live 是一款开源的多平台直播…

2026/10/15 20:50:49 阅读更多 →
Apple Watch录音到AI总结全链路打通:BYOK开源方案Nomily实战

Apple Watch录音到AI总结全链路打通:BYOK开源方案Nomily实战

录音这件事,我折腾过不少方案。最早是用手机录,后来换了录音笔,再后来戴 Apple Watch 图个方便,但每次录完都面临同一个尴尬:音频躺在设备里,想整理成文字得导出来、传电脑、跑一遍转写、再丢给 AI 总结&am…

2026/10/15 20:49:48 阅读更多 →
2007-2024年 地级市物流标准化政策试点DID数据+文献

2007-2024年 地级市物流标准化政策试点DID数据+文献

1、数据背景与研究设计‌ 物流标准化政策作为降低全社会物流成本、支撑全国统一大市场建设的重要制度安排,自2014年起在各地陆续开展试点。该政策通过统一物流关键设施的规格尺寸,配套标准化信息系统,实现跨运输方式、跨区域物流的无缝衔接。…

2026/10/15 20:49:48 阅读更多 →

最新新闻

2026前端AI编程工具实测:从Figma2Code到Agent闭环,TaoToken统一Key怎么配

2026前端AI编程工具实测:从Figma2Code到Agent闭环,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/15 21:39:55 阅读更多 →
给 Coding Agent 装上 LSP:别再让它靠 grep 猜代码,TaoToken 统一 Key 打通工具链

给 Coding Agent 装上 LSP:别再让它靠 grep 猜代码,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/15 21:39:55 阅读更多 →
蓝桥杯CT107D实战:DS18B20单总线驱动与避坑指南

蓝桥杯CT107D实战:DS18B20单总线驱动与避坑指南

1. 为什么CT107D上的DS18B20值得单独拿出来讲蓝桥杯单片机组的板子——CT107D,几乎是每个参赛选手绕不开的硬件平台。这块板子上集成了不少外设,数码管、独立按键、矩阵键盘、蜂鸣器、继电器、DS1302、AT24C02、DS18B20、超声波、红外接收等等&#xff0…

2026/10/15 21:39:55 阅读更多 →
Java爬虫实战:用Jsoup高效解析网页表格并导出CSV

Java爬虫实战:用Jsoup高效解析网页表格并导出CSV

简介:这是一个基于Java与Jsoup库抓取网页表格数据的入门实例,适用于在MyEclipse环境中学习网络爬虫原理的开发者,目标是掌握从HTML页面提取结构化表格信息的完整方法。资源包为zip格式,共24个文件,其中包含7个Java源码…

2026/10/15 21:39:55 阅读更多 →
树莓派4 UART多串口配置与通信实战指南

树莓派4 UART多串口配置与通信实战指南

1. 为什么树莓派 4 的 UART 值得单独拿出来聊 树莓派 4 这块板子,但凡你玩过一阵子,大概率都会碰到一个绕不开的需求:接一个串口设备。可能是 GPS 模块、可能是某款工业传感器、可能是和另一块单片机做点对点通信,也可能是调试一个…

2026/10/15 21:39:55 阅读更多 →
大模型指令微调实战:从LoRA选型到数据配比与避坑指南

大模型指令微调实战:从LoRA选型到数据配比与避坑指南

简介:这份PPT面向自然语言处理与大模型方向的学习者与开发者,系统梳理大模型指令微调(Instruction Tuning)的核心概念与整体脉络。内容从NLP四范式切入,依次讲解传统机器学习、深度学习、预训练加微调以及预训练加Prom…

2026/10/15 21:38:54 阅读更多 →

日新闻

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/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 9:49:14 阅读更多 →