Ghidra 11.0.2 落地指南:从JDK 21配置到自动化分析脚本
简介Ghidra 11.0.2 是一款开源软件逆向工程框架特别为 Linux 平台用户打包适用于恶意代码分析、漏洞研究、协议逆向与 CTF 对抗等场景。该版本内置反汇编、反编译、绘图、脚本化等完整分析能力支持多种处理器指令集和常见可执行格式用户可通过公开 API 开发自己的 Ghidra 插件与脚本。压缩包共约 393.79 MB内含 2000 个文件以 Python 脚本、Java 源码、文本说明、XML 资源配置及 C/C 头文件为主同时附有 HTML 帮助文档、演示脚本和可执行文件便于查阅、编译与二次开发。已有 2773 人学习使用适合需要深度分析二进制程序或研究反编译原理的中高级安全从业者。下载后即可在 Linux 环境下独立运行并通过插件体系与脚本接口灵活扩展功能快速构建属于自己的逆向分析工作流。1. Ghidra 11.0.2逆向工作台的新稳定版本升级前先确认这两件事如果你手头还停在 10.x直接下载 11.0.2 解压、双击启动大概率会被一个冷门问题拦住不是安装包损坏而是本机 Java 版本太老。Ghidra 11.0.2 默认构建要求 JDK 21 以上装了 JDK 8 或 11 的老环境会在启动脚本里直接报 UnsupportedClassVersionError。这就是 Ghidra 安装这件事最容易被低估的地方下载和配置本身十分钟但环境版本能把人卡一小时。另一个反直觉的结论是从 11.0 升到 11.0.2 不会让反编译结果突变但对长时间开着分析窗口、来回切换多个二进制文件的场景体感改善明显。这个版本更适合已经在用 11.x、以及打算从 10.x 直接迁移到 11 系的人。它能解决的核心问题就是把二进制导入、自动分析、伪代码阅读、交叉引用追踪这条链路跑顺同时保住旧项目文件不丢。这篇笔记会照着 Ghidra 11.0.2 的完整落地路径走一遍从安装与 JDK 匹配、新版本界面变化、自动分析参数怎么设到最容易翻车的五个坑最后给你一套能直接跑的脚本把重复分析变成流水线。新手按步骤能走通熟手可以直接跳到避坑和脚本章节对照自己的环境。2. 安装与 JDK 2111.0.2 最容易被旧环境卡住的入口2.1 Windows 下跑通最小环境Java 版本检查与启动验证在 Ghidra 安装这个问题上常见做法是先确认 JDK再解压再启动。顺序反了的话启动报错会和环境变量问题混在一起排查起来很费劲。我一般先把 JDK 版本确认了再动安装包。Windows 上建议用命令行方式启动而不是直接双击图标这样能看到完整日志。命令如下# 先确认 Java 版本务必是 21 或更高 java -version # 解压后进入 Ghidra 根目录 cd C:\tools\ghidra_11.0.2_PUBLIC # 前台启动保留日志输出 .\ghidraRun.batjava -version输出里如果是openjdk version 21.0.2这类说明 JDK 没问题。如果显示1.8.x或11.x先装 JDK 21 并配置 JAVA_HOME 指向新版本再回来执行.\ghidraRun.bat。启动脚本本身会做两件事检查 Java 二进制可用性然后拉起图形界面。如果图形界面没弹出来优先看当前目录下的support\launch.log里面记录的是 JVM 启动失败的真实原因比弹窗里那句笼统的报错有用得多。首次启动还会在你用户目录下生成.ghidra配置目录里面包含工具的偏好设置和临时文件后续汉化、插件安装都动这里。2.2 无图形界面环境下的安装验证analyzeHeadless 最小命令服务器或者远程开发机上没有显示器同样可以验证 Ghidra 11.0.2 能不能用而且比打开图形界面更规范。Ghidra 自带analyzeHeadless命令把项目创建、文件导入、分析、脚本执行全部串起来跑。以下是我在干净环境里验证安装是否完整的最小命令# 创建项目并导入二进制分析完成后列出函数 ./support/analyzeHeadless /tmp/ghidra_project testProj \ -import /tmp/samples/demo.bin \ -analysisTimeoutPerFile 1200 \ -scriptPath /tmp/ghidra_scripts \ -postScript PrintFunctions.java这条命令的每个参数都值得拆开说明。第一个路径/tmp/ghidra_project是工程文件存放的目录testProj是项目名如果项目不存在会自动创建。-import指向要分析的二进制文件支持单个文件或目录。-analysisTimeoutPerFile 1200是每个文件的分析超时上限单位秒恶意样本体积大、分析项多给足时间能避免中途被放弃。-postScript指定分析完成后运行的脚本配合-scriptPath告诉 Ghidra 去脚本目录找对应的.java或.py文件。如果命令行能跑到最终打印出函数列表说明 Ghidra 本体、JDK、项目文件系统三件事全部正常。这个命令也是后边把脚本纳入日常分析流水线的基础入口图形界面做不了批量操作但analyzeHeadless可以。2.3 为什么必须 JDK 21版本字节码等级和 17 的差别Ghidra 11.0.2 的代码按照 JDK 21 的字节码等级编译这意味着旧版的 JVM 无法加载它的 class 文件。常见的报错是UnsupportedClassVersionError: ghidra/launcher/Main has been compiled by a more recent version of the Java Runtime看到这行就知道问题不是安装包坏了也不是环境变量配错纯粹是 Java 版本不够。JDK 17 用户会想「17 和 21 不都是 LTS 吗为什么不兼容」实际上 Ghidra 官方构建链从一开始就用 21 的编译目标反向兼容旧版本不会做。所以不需要纠结为什么不能跑直接换成 JDK 21 的 64 位版本即可。另外一个容易被忽略的点是Ghidra 自带了一套 JRE 检测逻辑但它不捆绑 JRE完全依赖系统 Java。如果你机器上装了多个 JDK建议在启动脚本之前显式设置JAVA_HOME指向 21避免PATH里老版本抢先被找到。用命令行启动的好处就在这里出问题能立刻看到是哪个 Java 被选中了。3. 新版本到底新在哪11.0.2 在窗口、调试和汉化上的实际差别3.1 New Listing Window多窗口并排看反汇编与 Decompiler从 11.0 开始引入的 New Listing Window 是界面层面变化最大的一项11.0.2 延续并修了它的一系列联动问题。传统视图下Listing 窗口只有一个双击符号就在当前窗口跳转。新窗口模式允许你再开一个独立的反汇编视图两个窗口可以放不同地址、不同函数随时对比。Decompiler 窗口照常独立浮动。我的使用习惯是把左侧窗口固定在当前函数反汇编右侧窗口追踪交叉引用跳转过来的目标函数。这样看一个函数调用链时左侧保持上下文右侧不断翻新目标不需要来回按后退键。在旧版里这个操作只能靠标签页切来切去容易丢位置。操作入口在File New Listing Window打开后窗口标题带数字后缀表示第几个视图。11.0.2 修复了多窗口模式下部分符号双击事件不发到新窗口的问题。如果双击某函数名跳转却发生在旧窗口先确认当前焦点是不是在目标窗口上这是 11.x 系列最容易遇到的窗口焦点问题。3.2 Debugger 和 Ghidra Server长会话场景下的稳定性改善调试功能在 11.0.2 里没有翻天覆地的变化但细节层面能感觉到打磨痕迹。连接的响应更顺滑断点命中后的反汇编刷新速度更快会话断开的时候不会把整个界面拽崩。如果你之前的项目只是在本地静态分析这部分可以不用关注如果你经常对着远程目标做动态调试11.0.2 值得升级。多项目协作或者自己开多个工程时Ghidra Server 的同步体验也有优化。多人同时分析同一份固件函数重命名和注释的冲突提示比旧版清晰。对于个人用户来说更直观的变化是项目文件的结构更稳频繁保存、关闭重开不会出现项目锁文件残留的问题。这些都不会成为升级的理由但升级后也基本不需要回退。3.3 界面汉化与语言包Ghidra 汉化版的常见做法和边界很多人在搜索 Ghidra 汉化版但 Ghidra 官方不提供中文语言包。所谓汉化版主要是社区维护的汉化扩展把菜单、对话框、右键菜单里的英文字符串替换成中文。常见做法是下载对应版本号的汉化扩展包解压后把扩展目录放到 Ghidra 安装目录下的Extensions文件夹里重启后部分界面变成中文。需要注意两点。第一汉化只覆盖界面字符串反汇编代码里的指令助记符、Decompiler 输出的伪代码变量名param_1、local_8永远不会翻译因为这些是程序输出不是界面文案。第二汉化包的版本号必须和 Ghidra 匹配用面向 10.x 的包强装到 11.0.2 上会出现菜单中英参半、部分弹窗还是英文的现象。这种状态不影响功能但看着更难受。我个人的建议是如果英语界面能接受优先用原版汉化包在版本升级后总要重新找匹配版本属于额外维护成本只有团队里有完全不适应英文界面的成员时再考虑统一装汉化。4. 导入到分析完成把 11.0.2 的分析套餐调到正确的姿势4.1 导入二进制与版本警告看到那个弹窗别慌新建项目后把二进制文件拖进 Ghidra 会触发 Import 向导。向导会显示文件格式识别结果比如 ELF、PE、Raw Binary 等。格式识别这一步对后续分析影响很大尤其是单片机固件这类裸二进制没有文件头信息需要手动指定处理器架构、端序、基地址。常见做法是先通过文件头的固定偏移确认架构再用 Loader 面板调整。导入完成后Ghidra 会弹出一个项目版本升级确认框。这个弹窗出现在你打开旧版本创建的.gpr项目时提示该项目由旧版 Ghidra 创建需要升级才能打开。窗口文本里会写旧版本号和新版本号基本可以放心确认。但升级后项目文件会被新的格式改写旧版 Ghidra 将无法再打开它。处理办法很简单升级前把项目目录整个复制一份作为备份尤其是团队协作、还有人没升级的情况下这个备份是后悔药。4.2 自动分析的关键选项哪几个勾选决定分析质量导入完成后进入自动分析面板默认选项已经能覆盖大部分场景但针对特定样本最好手动过一遍。Ghidra 11.0.2 的Analysis Options里选项很多不需要全懂但下面这几个直接决定分析结果质量值得逐个确认选项作用不勾的后果Disassemble Entry Points在所有入口点执行反汇编关键函数区域全是字节没有指令Function Detection识别函数边界并创建函数对象函数列表几乎为空交叉引用断裂Stack Analysis分析栈帧布局识别局部变量Decompiler 伪代码里全是裸地址Decompiler Parameter ID推断函数参数和返回值函数签名退化参数名全是 param_NData Reference扫描数据引用建立交叉引用字符串到代码的引用链丢失实际项目中Function Detection 和 Stack Analysis 是最影响伪代码可读性的两项。函数识别不开的话Ghidra 会把整个二进制当成一堆零散指令块反编译出来的内容无法组织成函数粒度后期要手动创建函数工作量成倍增加。Stack Analysis 关闭时Decompiler 输出的函数体里所有局部变量都会显示成基于栈指针的独特形式一眼看过去全是地址运算完全无法阅读。如果分析完发现函数树空荡荡不用重头再来。在图形界面的菜单里重新打开自动分析面板勾上缺失的选项然后对一个函数或整个程序右键选择重新分析即可。注意重复分析会覆盖之前的注释吗不会Ghidra 的注释和分析结果是分层保存的重跑分析不会清掉你手工加的函数名和注释。4.3 导出 C/C 伪代码Decompiler 的真错信息看哪里Decompiler 是 Ghidra 最出名的功能双击函数后右侧窗口直接显示伪代码。一个典型输出长这样undefined8 FUN_0010246a(long param_1, int param_2) { long *plVar1; undefined8 uVar2; plVar1 *(long **)(param_1 0x20); if (plVar1 (long *)0x0) { uVar2 0xffffffffffffffff; } else { uVar2 (*(code *)(*plVar1 0x18))(plVar1, param_2); } return uVar2; }看到这种签名能直接推断这是一个 C 虚函数调用param_1是this指针plVar1从this0x20取出然后从 vtable 偏移0x18处取出函数指针调用。参数识别和变量命名都是 Decompiler 自动完成的但这套结果好不好用取决于你前面勾了哪些分析选项。如果伪代码里几乎没有函数名全是FUN_0010xxxx说明符号表没加载或者没有匹配到已知函数签名。常见做法是调用File Load Symbols从外部符号文件导入或者让 Ghidra 跑一遍函数 ID 匹配。Decompiler 报错的情况较少真正会翻车的是整个程序分析失败通常表现为反编译窗口空白、进度条卡住不动。这时去Window Log看分析日志里面有每个分析器的执行时间和错误栈比在图形界面上瞎猜管用。如果日志里某个分析器反复超时回到分析选项里把对应项关闭再重跑。5. 常见问题与避坑Ghidra 11.0.2 最容易翻车的五个现场5.1 现象点击启动脚本直接报 UnsupportedClassVersionError原因很明确本机 JDK 版本低于 21。这不是 Ghidra 自身的问题而是构建产物与运行环境的字节码等级不匹配。解决装 JDK 21 的 64 位版本改JAVA_HOME并在命令行验证java -version输出确认指向新版本。确认无误后再执行ghidraRun。如果机器上同时存在多个 JDKPATH里排在前面的那个会抢先被找到最稳妥的办法是在启动脚本之前把新的 JDK 路径临时加到PATH最前面而不是指望脚本自动找到正确版本。5.2 现象分析大文件时界面卡死控制台输出 OutOfMemoryErrorGhidra 默认堆内存一般给得比较保守对几十 MB 的 PE 文件够用一旦导入上百 MB 的固件镜像或者解压后的恶意样本内存直接顶满界面临界卡死保存都来不及。解决修改 Ghidra 支持目录里的launch.properties配置文件把 JVM 参数里的堆上限从默认值换成更大的值。比如改成 4G 或 8G具体看机器物理内存。改完重启 Ghidra再用analyzeHeadless跑一遍同样文件确认内存曲线稳定。这个参数本质上是 JVM 的-Xmx理解成堆上限就没有玄学了设太高反而会影响本机其他程序建议按物理内存一半为上限。5.3 现象自动分析跑完函数管理器里只有入口点附近的两三个函数这是初学者最容易困惑的问题函数树看起来像没分析交叉引用也断断续续的。原因是自动分析时 Function Detection 没有被勾选或者程序加载时分析选项弹窗里直接点掉了。解决菜单Analysis Auto Analyze重新打开选项面板勾上 Function Detection 和 Stack Analysis对全程序重新分析。重跑完成后函数树会按地址有序铺开。判断分析是否成功的技巧是看 Decompiler 输出的变量伪代码里以param_开头的参数名和局部变量local_越少、有意义的命名越多说明栈分析和参数识别都生效了。如果全部是local_0、local_8回头检查 Stack Analysis 开启状态。5.4 现象汉化扩展装了但菜单还是英文或者中英参半汉化包和 Ghidra 版本不匹配是最常见的原因。带有英文资源包的扩展解压到Extensions目录后Ghidra 启动时会按扩展目录名识别资源版本不对时资源匹配失败降级到默认英文。解决先确认下载的汉化包标注的版本号是不是 11.0.2不是的话不要安装。安装后如果只生效了一半把Extensions目录里对应的扩展文件夹删掉重启 Ghidra 恢复原样再换正确版本。另外汉化对 11.0.2 界面覆盖范围有限Decompiler 窗口里右键菜单这种子菜单经常保持英文这是正常的不要反复卸载重装。如果团队对汉化要求高一个省事的方向是直接找专门维护的汉化分支而不是自己拼装扩展包。5.5 现象打开旧项目弹出版本升级提示升级后同事的旧版 Ghidra 打不开Ghidra 项目的格式会随版本演进新版打开旧版创建的工程时会弹窗要求升级。升级操作会改写项目元数据旧版本客户端无法再读取。解决任何涉及统一升级的协作场景先约定所有人升级到同一版本再打开共享项目。个人项目升级前把整个项目目录压缩备份因为项目文件里包含历史快照和分析结果一旦新版写入格式回退路径就不存在了。这个习惯在平时体会不到好处等某次分析结果被意外覆盖时就知道值不值了。6. 进阶技巧用脚本把 11.0.2 变成自己的分析流水线6.1 先跑一个最小 Python 脚本遍历所有函数并打印签名Ghidra 的脚本入口在图形界面的Window Script Manager也支持analyzeHeadless -postScript调用。新手先从 Python 脚本开始因为不需要编译改完直接跑。下面这个脚本遍历当前程序所有函数打印地址和名称# PrintFunctions.py from ghidra.program.model.listing import Function fm currentProgram.getFunctionManager() functions fm.getFunctions(True) # True 表示按地址从低到高迭代 for f in functions: entry f.getEntryPoint() print(0x%08x %s % (entry.getOffset(), f.getName()))getFunctions(True)返回函数迭代器参数是方向标志True为正序遍历False为反顺序。getEntryPoint()返回地址对象getOffset()拿到整数地址值格式化输出用0x%08x保证地址宽度一致。这个脚本是后续所有批量操作的骨架把print换成写文件就是导出函数清单换成统计函数数量就是分析进度汇报。在图形界面里通过 Script Manager 运行输出显示在下方控制台。在analyzeHeadless里用-postScript PrintFunctions.py运行时输出直接打到标准输出方便重定向到日志文件。脚本语言选 Python 还是 Java 的边界在于Python 胜在写起来快适合临时分析Java 脚本适合固化到团队流程里因为编译期能发现 API 变更报错信息完整。6.2 批量导出函数列表用一次 Headless 跑完三个项目实际项目中手上有三个固件需要对比导出函数名用图形界面逐个打开、运行脚本、保存结果重复度太高。把上面的 Python 脚本换成 Java 版本配合analyzeHeadless批量跑效率差别非常明显// DumpFunctions.java import ghidra.app.script.GhidraScript; import ghidra.program.model.listing.*; public class DumpFunctions extends GhidraScript { Override public void run() throws Exception { FunctionManager fm currentProgram.getFunctionManager(); for (Function f : fm.getFunctions(true)) { println(f.getEntryPoint() \t f.getName()); } } }Java 脚本的println与 Python 的print效果相同但 Java 在 Headless 下的优势是遇到异常时整个脚本会停下来并输出栈不会像 Python 脚本那样输出一行、报一个错、继续跑的混乱状态。批量跑三个项目只需要在命令行里给三个-import参数或者在脚本目录里循环调用。for fw in firmware_a.bin firmware_b.bin firmware_c.bin; do ./support/analyzeHeadless /tmp/ghidra_project proj_$fw \ -import /tmp/samples/$fw \ -postScript DumpFunctions.java | tee /tmp/out_$fw.txt donetee把脚本输出落到文件里的同时还在终端轮流滚动三个项目跑完三个函数清单就到手了。习惯上我会把脚本本身放进版本管理和项目分析结果放一起后续任何人拉下来都能复现同一套分析流程。这个过程里最容易踩坑的地方是脚本路径-scriptPath没给时Headless 会默认去安装目录的扩展脚本目录找脚本找不到直接报错不会用当前目录下的脚本。所以命令行里显式写-scriptPath指向脚本所在目录是最不会翻车的写法。6.3 把脚本沉淀成日常动作版本回归后重新验证一遍脚本一旦固化版本升级这件事就有了验证标准。Ghidra 11.0.2 升级完成后我会把以前跑过的样本重新用同一套脚本跑一遍对比输出差异。差异为零说明分析流程没受版本影响差异集中在地址偏移说明加载基址变了差异是函数数量级变化则需要警惕新版本分析器行为不同可能影响后续结果解读。我遇到过的情况是某个项目从 10.x 迁到 11.0.2 后函数总数多了几百个原因是新版函数检测对某些指令模式识别得更完整。这不是退化但如果不做回归对比基于旧数据得出的统计结论就会出错。所以脚本的价值不只是省事它同时是版本升级的验收工具。建议每个用 Ghidra 做长期分析的人都保留至少一个能导出函数清单或反编译结果的脚本当作基线。这次用 11.0.2 把流程重新跑通之后换版本还能继续用同一套脚本确认行为变化比靠记忆力判断稳妥得多。希望这个习惯对你也有用。本文还有配套的精品资源点击获取

相关新闻

LabVIEW 接 SQLite 实战:产线测控数据落库与查询避坑指南

LabVIEW 接 SQLite 实战:产线测控数据落库与查询避坑指南

简介:这份资源面向使用 LabVIEW 进行数据采集、测试测量与工控上位机开发的工程师,以及需要为程序加入本地数据持久化能力的学习者,重点解决 LabVIEW 连接数据库时建库繁琐、缓存难清理、编程门槛高的问题。压缩包共 148 个文件,约…

2026/10/9 15:39:22 阅读更多 →
Sentinel生产级流量治理:从限流熔断到动态规则调优

Sentinel生产级流量治理:从限流熔断到动态规则调优

1. 项目概述:为什么“Sentinel——简单入门”这个标题背后藏着一线开发者的日常痛点“Sentinel——简单入门”这六个字,乍看平平无奇,像极了技术文档里最不起眼的章节名。但如果你在某互联网公司后端团队干过三年以上,大概率会在凌…

2026/10/9 15:39:22 阅读更多 →
Android智能求职招聘系统开发:匹配链路与推荐算法实战

Android智能求职招聘系统开发:匹配链路与推荐算法实战

简介:面向高校毕业设计与课程设计的安卓智能求职招聘系统完整工程包,以移动端加服务端整体方案覆盖职位浏览、搜索、简历投递、职位发布与面试安排等核心流程。客户端基于安卓与Java开发,服务端采用MVC模式、JSP与MySQL构建,通过H…

2026/10/9 15:38:22 阅读更多 →

最新新闻

Windows 64位下编译Qt与Tesseract OCR库及集成指南

Windows 64位下编译Qt与Tesseract OCR库及集成指南

简介:本资源为面向 Windows 64 位平台的 Tesseract OCR 编译产物,专为使用 Qt 进行桌面端文字识别开发的工程师准备,可解决在 Windows 环境下自行编译 Tesseract 依赖繁琐、版本兼容困难的问题。压缩包共 916 个文件,约 39.32MB&a…

2026/10/9 16:13:22 阅读更多 →
dnSpy-net472:专为.NET Framework 4.7.2设计的调试与热重载逆向工具

dnSpy-net472:专为.NET Framework 4.7.2设计的调试与热重载逆向工具

简介:dnSpy-net472.zip 是一款面向.NET开发者、逆向分析人员及安全研究人员的实用工具包,专为.NET Framework 4.7.2环境下的DLL反编译、源码级调试与二进制编辑提供一体化支持。资源包含x86架构主程序dnSpy-x86.exe、配套PDB调试文件、运行配置文件&…

2026/10/9 16:13:22 阅读更多 →
智能体集群:AI架构演进的下一个关键拐点

智能体集群:AI架构演进的下一个关键拐点

1. 这不是又一个“AI热词炒作”,而是架构演进的必然拐点 “Understanding AI 分析智能体集群为何可能成为下一个 scaling law”——这个标题里没有炫技的模型名,没有具体哪家公司的产品,甚至没提参数量或算力数字,但它直指当前大模…

2026/10/9 16:13:22 阅读更多 →
C语言组合数与排列数安全实现四大方案

C语言组合数与排列数安全实现四大方案

1. 这不是数学课,是C语言里“算数”的实战课:组合数与排列数到底该怎么写才不翻车你是不是也遇到过这种场景:刚学完高中数学里的组合数公式 $ C_n^m \frac{n!}{m!(n-m)!} $,兴冲冲打开Code::Blocks或VS Code,新建一个…

2026/10/9 16:13:22 阅读更多 →
LDD技术原理与工艺实践:解决MOS晶体管热载流子注入的关键结构

LDD技术原理与工艺实践:解决MOS晶体管热载流子注入的关键结构

1. 什么是轻掺杂漏极(LDD)技术?它到底在解决什么问题?轻掺杂漏极(Lightly Doped Drain,简称LDD)不是某个新出的芯片型号,也不是某家厂商的营销话术,而是集成电路制造中一…

2026/10/9 16:13:22 阅读更多 →
拆解39页智慧园区方案:五层架构、平台边界与售前落地

拆解39页智慧园区方案:五层架构、平台边界与售前落地

简介:这是一份华为与中软联合推出的智慧园区解决方案技术主打胶片,共39页,面向园区管理者、解决方案架构师及售前工程师。内容从传统园区在安全、效率、体验和运营成本上的痛点切入,梳理了从“人防”到“技防”再到“智防”的演进…

2026/10/9 16:12:22 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/9 6:17:20 阅读更多 →