XFS误删文件恢复实战:从inode残留到日志回放的完整指南
简介这份PDF是2021年《网络安全和信息化》杂志上一篇关于Linux XFS文件系统误删除文件恢复的专题文章适合Linux系统管理员、运维工程师及数据处理人员阅读。内容从XFS文件系统的目录项、索引节点和数据块构成讲起解释删除操作并未真正擦除数据的原因并给出完整的恢复流程先以只读方式挂载分区并执行dd备份再安装xfs_undelete或PhotoRec等工具最后恢复文件。文档还附带实际案例和命令演示涵盖Tcl及Tcllib依赖配置、常见提示处理可帮助读者在分区被误删后快速上手操作降低二次破坏风险。资源为单个PDF文件大小约951KB便于阅读与检索。已有2874人在CSDN学习下载适合在磁盘误删场景中对照实践尽最大限度挽救数据。1. 前面还是满的一觉醒来却空了先把 XFS 的恢复逻辑想清楚再动手在 Linux 生产服务器上一条rm -rf指令误删目录撑死算运维事故里的小场面可如果这台机器的文件系统是 XFS恢复难度会立刻高一个数量级。网上流传的xfs_repair、xfs_db、xfs_logprint急救帖很多但真正到了现场才发现它们要么是修损坏、不是做恢复要么只能从日志里挤出零星线索。这篇文章想先说清一个反直觉的判断XFS 误删之后几乎不存在“一条命令原地复活”的后悔药你的胜算来自删除当刻还留在磁盘上的 inode 残留、日志事务和数据块到底有没有被覆盖。适合正在抢救数据的运维、DBA 和实验环境受害者。读完你会知道一分钟内该干什么、哪些工具值得碰、以及为什么有经验的人第一反应永远是断电、卸载和做镜像。2. XFS 删文件时到底动了什么理解 AG、inode 和延迟日志才知道胜算在哪里2.1 从 rm 到数据块释放一条删除命令背后的元数据变更链XFS 文件系统里一次普通的rm远不止“标记一下”那么简单。整个动作可以拆成四步第一步在父目录的目录 B 树里找到目标文件名把对应的目录项摘除第二步找到这个文件对应的 inode把它的 nlink 引用计数减一第三步如果 nlink 已经变成 0内核会把这个 inode 标记为释放归还给当前分配组AG的空闲 inode 链表第四步把 inode 指向的数据 extent 逐个释放这些块的地址重新登记回 AG 的空闲空间 B 树。问题就出在这四步并不是同步落盘的。XFS 的日志机制是延迟日志delayed logging元数据变更先堆积在内存的 log item 里再按批冲刷到磁盘上的日志区。所以rm敲下去之后的前几秒甚至几十秒磁盘上的目录、inode、空闲空间树可能还是旧状态。这也是为什么很多人会发现“刚删完马上恢复还有戏”——内核帮你留了一扇窗。但反过来说如果系统已经sync刷过盘或者你后来继续写入了大量新文件那四项变更大概率已经全部落盘旧元数据被覆盖恢复就从“找残留”变成“拼碎片”。这里还要提一个容易被忽略的 XFS 特性inode 本身也是动态分配的它不像 ext4 那样有固定的 inode table 位置。每个 AG 内部通过 B 树管理 inode 分配释放后的 inode 会被重新登记为空闲。这意味着删除动作一旦提交inode 里的 mode、size、时间戳等关键字段就可能被清零为下一个新文件腾位置。恢复的实质就是抢在清零或被复用之前把 inode 的指纹抠回来。2.2 为什么 ext4 的 debugfs 救不了 XFS日志回放也不等于恢复很多熟悉 ext4 的运维在 XFS 上会踩同一个坑拿 ext4 的debugfs思路去解 XFS。在 ext4 上删除文件时 inode 的 i_mode 字段会被清 0但其余字段还躺在 inode table 里你可以手动把 mode 改回去再配合debugfs重新挂上目录项文件就活了。可这套方法在 XFS 上行不通原因有三层。第一XFS 没有集中式的 inode tableinode 分散在多个 AG 的动态 B 树里删除后它立即进入空闲列表内核不会预留“半删除”状态。第二XFS 的目录结构也是 B 树目录项删除后会在树里做平衡与合并不会像 ext4 那样留下可直接复现的线性目录块。第三XFS 的日志记录的是事务元数据不是文件内容备份。日志回放只能保证元数据操作要么完成、要么回滚但回放完成之后文件依然是删除状态——回放不等于撤销。所以你会看到生产环境里最常见的恢复“方案”其实是这样的备份、镜像、在镜像上尝试xfs_repair -n干跑检查再用xfs_db手工翻 inode 残留。它更像做数据考古而不是跑一个一键恢复工具。理解了这个前提你才不会对着xfs_repair -L输出里的“文件回来了”产生错误期待——那通常救的是目录损坏不是误删除。2.3 胜算计算器恢复可能性与哪些现场条件强相关理论上任何未覆盖的数据块都能被找回但完整重建文件是另一回事。按我的经验先拿这三个现场条件做估算删除到发现的时间窗口、删除后这台机器的写入压力、目标文件的大小。时间窗口是最关键的。延迟日志机制决定了如果删除发生在几分钟以内而且系统没有强制syncinode 和目录的旧数据大概率还没被清使用xfs_logprint可以直接看到相关事务残留。如果超过一小时、期间还在正常跑业务日志区早就循环覆盖了元数据层面的线索基本断掉只能赌数据块没有被复用。写入压力直接决定数据块的命运——XFS 的块分配器倾向于分配最近释放的 extent所以只要系统在写日志文件、数据库 binlog 或临时文件被删文件的块很快会被切走。文件大小决定恢复成本小到能塞进 inode 的 inline 数据或者只占几个连续块的还有救几十 GB 的数据库文件extent 树已经释放又没有备份基本只能做碎片级提取。另外一个很少被提的加分项是硬链接。如果被删目录里还有别的地方硬链接指向同一个 inodenlink 没有归零那 inode 从未进入空闲链表恢复瞬间从“困难模式”变成“普通模式”。在动手前先花一分钟检查有没有这种东西往往比闷头跑工具划算。3. 动手前的现场保护与工具选型先做镜像再谈恢复顺序错了全白搭3.1 第一步永远是只读重挂载和完整分区镜像附命令看到误删的第一反应不是去下载恢复工具而是先把这台机器的写入口全部封住。因为 XFS 的块分配策略会立刻尝试复用刚释放的 extent任何后续写入小到应用日志、大到另一个cp都在直接抹掉你的数据块。正确顺序是检查谁还握着分区、只读重挂载、做块级镜像。# 1. 找出还握着 /data 文件的进程确认没有程序在持续写盘 lsof | grep /data # 2. 有进程就先把业务停掉再只读重挂载 mount -o remount,ro /data # 3. 确认挂载状态已经是 ro mount | grep /data接下来做镜像。如果磁盘是 LVM 管理的最稳的是直接打一个 LVM 快照然后在快照设备上操作原分区保持挂载状态不动。不是 LVM 环境就用 dd注意要给数据盘留足够空间# 用 dd 做整个分区的块级镜像输出到另一块物理盘或 NFS 存储 mkdir -p /recovery dd if/dev/sdb1 of/recovery/xfs-image.dd bs4M convnoerror,sync statusprogress这里两个参数值得单独说。convnoerror,sync的意思是读错误不要中断而是把错误块填 0 继续bs4M是把块大小设成 4MB提高顺序读吞吐。镜像做完之后所有后续分析都在这个镜像文件上进行不要在原始分区上跑任何可能写入的命令。原因后面避坑章会专门讲——我在早期实践里就亲手把原盘的 AGI 位图改坏过那场面比误删本身还惨。3.2 工具矩阵xfs_db / xfs_logprint 与商业恢复软件的边界XFS 没有像 ext4 的 debugfs 那样官方支持的“反删除”工具社区里能直接调用的命令其实就那几样。xfs_logprint负责读日志区并把事务内容转储出来是最安全的起点。xfs_db是真正的瑞士军刀既可以查看超级块、AGI、inode 和 B 树结构也可以用-w参数直接修改元数据但它不会帮你理解哪些字段该改——改错了分区直接挂不上。xfs_repair是文件系统一致性修复工具-n参数做干跑检查时很有用但-L清日志的选项在恢复误删文件时是禁忌。xfs_ncheck可以从目录里反查文件名和 inode 的对应关系适合确认哪些 inode 还在。商业软件是另一条线。R-Studio、UFS Explorer 这类工具支持 XFS 元数据解析能扫描到已删除文件条目对目录项还残留的文件有一定效果。它们的好处在于是图形界面不需要你懂 B 树坏处是遇到 XFS 这种动态 inode 分配扫描结果往往能看到文件名但恢复出来是残缺的。免费方向的 PhotoRec 则完全绕开文件系统直接按文件头尾签名去数据块里扫适合恢复 JPEG、PDF、压缩包这类有明确魔数的连续文件但对数据库这类内容无规律的大文件几乎没有作用。工具用途限制xfs_logprint读取日志确认删除事务残留日志循环覆盖后将无输出xfs_db查看/修改 inode、AGI、超级块高风险需要懂 XFS 结构xfs_repair -n干跑检查元数据一致性只报告不恢复文件xfs_repair -L清日志修复挂载会确认删除禁止用于恢复xfs_ncheck反查文件名与 inode 关系目录项已被删时基本失效R-Studio / UFS Explorer图形化扫描已删除条目对 XFS 的 extent 碎片恢复能力弱PhotoRec文件头尾签名扫描只救连续存储的已知类型文件3.3 用 xfs_logprint 确认删除操作是否还留在日志里在掏 xfs_db 之前先在镜像上跑一遍日志检查这一步能帮你确定走哪条恢复路线。如果删除事务还在日志里理论上日志区存有相关 inode 变更的 undo 信息有希望恢复如果日志已经推滚过那就老老实实走 inode 残留扫描。# 在镜像上读日志输出到分析文件 xfs_logprint -t /recovery/xfs-image.dd /recovery/xfslog.txt 21 # 查找与 unlink / remove / inode 相关的事务记录 grep -niE unlink|remove|dinode|inode /recovery/xfslog.txt | head -50注意-t参数表示指定目标设备或镜像文件。分析输出时重点看日志扇区里是否包含你删除时间点前后的 inode 操作。如果看到日志输出是空的或只有大量格式化标记说明日志循环已经覆盖这时候别浪费时间在日志路线直接切到下一章的手工 inode 排查。我一般还会同时用xfs_admin -u去看文件系统 UUID确认当前分析的分区没有搞错——多用一个命令能少一次后悔。4. 手工恢复实操通过 xfs_db 找回 inode 的两条路线与完整命令4.1 路线一日志回放与 xfs_repair -L 的适用边界这里要先打破一个流传很广的误区。很多人看到网上案例写着“我用 xfs_repair -L 把文件救回来了”就以为这个参数是删除恢复开关。实际那类案例多数是文件系统目录元数据损坏文件本身还在 inode 树上-L 清掉日志只是解锁了挂载让 xfs_repair 把目录关系重新修复。真正的rm删除-L 恰恰是最坏的选择——它会强制回放日志里的删除事务让 inode 释放动作“合法化”之后你再想恢复系统反而认为这是干净状态扫描工具都无从下手。# 先做干跑检查只输出不一致项不改任何数据 xfs_repair -n /recovery/xfs-image.dd # 查看日志清理前的状态保留现场证据 xfs_logprint -t /recovery/xfs-image.dd /recovery/log-before-clean.txt如果干跑输出显示 inode 位图与 AGI 计数不一致xfs_repair 会建议你修复但这时不要直接跑不带参数的 xfs_repair更不要加 -L。先用日志文件作为证据链明确删除事务是否完整记录。如果日志真的还包含完整的 inode 修改 undo 记录理论上可以用 xfs_db 把 undo 信息手动写回但这条路线对操作者要求极高绝大多数人实际操作时都是先做镜像然后找商业软件或更资深的工程师。我的判断标准是日志回溯适合文件刚删、几秒钟内就发现并停了机器的场景超过这个窗口日志基本是白纸。4.2 路线二手工修 inode 的 mode/nlink/size 并尝试重建目录项这是真正能救回文件的核心路线本质是手动模拟 ext4 debugfs 的操作但对象换成 XFS 的元数据。先定位被删除文件的 inode 号。XFS 在删除后不会保留文件名所以你要通过时间线索来找删除发生前那段日志里涉及哪个 inode、目录 B 树哪块区域被改动或者直接扫描 AGI 空闲 inode 链表找出 mode 字段被清零、但 crc 和时间戳还新鲜的条目。# 查看超级块确认块大小和 AG 数量 xfs_db -r /recovery/xfs-image.dd -c sb 0 -c p # 查看第 0 个 AG 的 inode 管理信息 xfs_db -r /recovery/xfs-image.dd -c agi 0 -c p输出里agi_freecount显示当前空闲 inode 数量agi_free_root指向空闲 inode B 树。顺着 B 树的叶子节点可以找到一批最近被释放的 inode 号。对候选 inode 号逐个查看内容# 假设候选 inode 号是 131 xfs_db -r /recovery/xfs-image.dd -c inode 131 -c p重点看三个字段。core.mode如果已经是 0说明 inode 被释放清零如果还是0100644或0100600这样的八进制值说明删除动作没有完全落盘当场就能恢复一半——只要在镜像上把 nlink 改回 1再让 xfs_repair 重新认识它。下面是针对小文件数据可以直接存在 inode 里的修复命令# 在镜像文件上写操作注意用 -w 参数 xfs_db -w /recovery/xfs-image.dd \ -c inode 131 \ -c write core.mode 0100644 \ -c write core.nlinkv2 1 \ -c write core.size 4096 \ -c write core.mtime.sec 1712345678每个字段什么意思core.mode是文件类型和权限位0100644 表示普通文件、权限 644core.nlinkv2是引用计数误删后是 0要写回 1core.size是文件字节长度如果你不知道原文件多大可以先写一个估算值再用数据块内容去推断core.mtime.sec是修改时间如果不清楚也不强求留着 0 不影响挂载。改完之后不要急着挂载先干跑检查xfs_repair -n /recovery/xfs-image.dd 21 | tail -50注意上面这套操作只适用于小文件因为数据还在 inode 内部或者紧跟 inode 的单个 block 内。大文件的 inode 里存的是指向数据 extent 的 B 树根一旦删除时 extent 树被释放就算你恢复 mode 和 size块地址映射也已经丢了恢复出来的文件全是空洞。这种情况我会直接放弃改用 PhotoRec 做内容级提取。4.3 关键参数确认AG 编号、块大小和 inode 位置的换算XFS 的参数体系和 ext4 差别很大几个数字错位会导致后续所有操作跑偏。第一是块大小通常 4096 字节但有些老系统或特殊创建参数会是 512、1024、2048 或 65536在 xfs_db 里用sb 0查看blocksize字段确认。第二是 AG 数量删除文件所在的目录位于哪个 AG决定了你该查agi 0还是agi 3不确认就乱翻会浪费大量时间。第三是 inode 大小常见 256 或 512 字节这影响 inode 在 AG 内的分布计算。换算并不是必须用公式。xfs_db 的inode命令接受 inode 号作为直接参数它内部会做 AG 和偏移换算。但如果你要从空闲 inode B 树里抄出 inode 号记住 XFS 的 inode 号是 64 位前若干位是 AG 编号后面是对应 AG 内的块和槽位。最常见的坑是直接把 B 树叶子里的值当成绝对 inode 号导致 xfs_db 报错“inode not found”。我还会用一个土办法辅助定位在镜像上跑一次xfs_db -r -c blockget -c blockuse查看所有已用和空闲块的分布再结合删除时间点往前推文件大概落在哪个 AG 区域。块分布图能帮你缩小候选 inode 的搜索范围尤其是文件写入比较连续时效果很明显。5. XFS 恢复中的 5 个血泪教训从现场保护到二次损坏的避坑排查5.1 现象删完文件后继续在原盘上操作数据块被新写入立刻覆盖这是最高频的翻车场景。我见过有人一发现误删立刻mount -o remount,ro结果忘了还有容器进程没停几分钟后数据块被应用日志写掉镜像做了也没用。原因很简单XFS 的分配器会把新数据优先放进刚释放的块这正是它性能优秀的原因也是恢复失败的原因。解决方式是先停业务再卸载不要只依赖 remount。可以在停业务前用lsof | grep /data找出所有还持握句柄的进程fuser -km /data把它们从目录上踢下去然后再做挂载状态确认。5.2 现象用了 xfs_repair -L 试图“修复”结果文件彻底消失且日志被清空现象很好识别跑完xfs_repair -L文件系统能挂载了但所有已删除文件都从活动 inode 树里消失连残留的痕迹都找不到。原因是-L清空日志并强制回放所有未完成事务误删操作本身就是一条元数据事务回放等于把删除合法化。解决方法是把-L列进危险操作清单所有恢复操作之前在镜像上做并且先用xfs_logprint保留现场日志副本。如果你已经在原盘上跑了 -L基本宣告恢复窗口关闭剩下只能靠文件内容特征扫描。5.3 现象找到了 inode 号但xfs_db查看时 mode 为 0 或提示 not found有些时候你在空闲 inode 树里看到了一个看起来很新的记录但xfs_db -c inode xxx查出来 mode0没有可用的元数据。原因是删除后 inode 被部分清零但对象还没有被重新分配也可能是删除动作和释放动作之间存在延迟AGI 里登记了空闲但物理 inode 区域尚留存旧数据。解决方式是把范围扩大检查相邻的 inode 槽位有时候目标文件的数据实际写在下一个 inode 内部前面那个是目录项占位。还有一招如果 inode crc 字段还在但 mode 为 0可以用 xfs_repair 的-n干跑模式看它会不会报告 crc 错误如果报错说明存储块还有残存数据值得深入挖。5.4 现象恢复出来的文件是稀疏文件du显示大小很小内容全是空洞这是大文件恢复最典型的失败形态。inode 修好了挂载也通过了但文件里的实际数据块没有被映射回来stat看 size 正常du看占用却远小于 size凑近一看全是\0。原因是 data fork 里的 B 树 extent 映射已在删除时释放你恢复的只是空壳 inode。解决方式要区分文件类型如果是日志类纯文本直接对原始分区做strings扫描按关键字提取内容如果是数据库或压缩文件基本没有手工重建的可能建议从备份走。这个教训告诉我们现场第一件事是记录文件的ls -l输出即使之后恢复有个 size 参考能判断值不值得继续。5.5 现象以为分区没人动了结果 nohup 后台任务和 VFS 缓存一直在偷偷写盘这一点最隐蔽。你用mount | grep /data看到挂载还在用lsof也没看到明显进程但数据块还在持续被改写。原因是有些服务是nohup或 systemd 守护方式跑的日志文件句柄已经打开删除目录不影响它对旧 inode 的写入只要文件系统还在读写模式VFS 层会继续把缓存页刷到磁盘。解决方式是用lsof L1查看被删除但还开着句柄的文件反复确认无人使用后再卸载。我在一次真实现场里因为没检查 nohup 起来的数据采集脚本镜像已经做了三份每一份里数据块都在变化最后才想起查句柄白白浪费了两个小时。6. 恢复后的验证技巧用文件签名、哈希和块扫描确认恢复质量拿到恢复出的文件第一件事不是急着拷进生产环境而是先做完整性验证。我常用的三个验证手段是file看文件头类型、stat看大小和块数、md5sum比哈希。如果这三个层面都正常文件才算真正救回来了。# 检查文件类型与魔数头是否匹配 file /recovery/restored_log # 对比文件实际占用的块数判断是否为稀疏空洞文件 stat /recovery/restored_log du -h /recovery/restored_logfile会读取文件头 512 字节的签名信息如果恢复的是文本文件会出现 ASCII text是压缩包会出现 gzip compressed data识别结果对不上说明文件开头已经错位。du比stat更能反映问题如果stat显示大小 2GB但du只有 4KB那这就是典型的空洞文件。此外我会随机抽样内容块比如数据库用strings /recovery/restored.db | grep -c CREATE TABLE文本文件看开头几行有没有断片。最后一个习惯是在镜像是直接验证。恢复出一个文件后挂载镜像到临时目录从里面把文件复制出来再验证不要直接在 xfs_db 的写操作环境里做测试。因为 xfs_db 读写模式下任何操作都可能产生二次修改我喜欢在镜像复制一份副本一个用来继续做恢复操作一个保持原样供复查。这是我吃过亏后养成的习惯——最早一次手工修 inode 时改完发现没有效果但镜像已经被写乱了连第二次尝试的机会都丢掉。验证通过后把恢复的文件放到一个新的目录结构下系统再重新挂载回原分区。如果你也面对同样的误删现场记住最宝贵的资产是原始镜像和删除时间点这两样守住就有机会。希望帮到你。本文还有配套的精品资源点击获取

相关新闻

小团队AI基础设施:面向Agent的垂直层设计与实践

小团队AI基础设施:面向Agent的垂直层设计与实践

1. 为什么“基础设施”这个词在小团队语境下需要重新定义 先把一个容易跑偏的认知掰正:小团队做 AI 基础设施,不是去复刻大厂那套 GPU 集群调度、分布式训练框架、千卡互联的活儿。那条路对十几个人甚至几个人的团队来说,投入产出比低到离谱&…

2026/10/9 11:30:30 阅读更多 →
从idea到demo:用vibe coding保持创作节奏的工程实践

从idea到demo:用vibe coding保持创作节奏的工程实践

1. 为什么“从 idea 到 demo”这一步,卡住了绝大多数人我做了十多年开发,带过不少新人,也跟很多独立开发者聊过。一个特别普遍的现象是:脑子里冒出一个想法,兴奋了半小时,打开编辑器,然后……就…

2026/10/9 11:30:30 阅读更多 →
扩展强化学习实现大模型自我提升:MiMo-V2.6核心机制解读

扩展强化学习实现大模型自我提升:MiMo-V2.6核心机制解读

1. 项目概述:MiMo-V2.6到底想解决什么问题我最近反复研读了《MiMo-V2.6:通过扩展强化学习实现模型自我提升》这份技术报告,因为它在圈子里讨论热度不低。整个报告的核心命题很明确:当LLM的能力曲线开始收敛时,能不能靠…

2026/10/9 11:30:29 阅读更多 →

最新新闻

人大金仓KCA/KCP认证备考:从零散题库到可复现的实操路径

人大金仓KCA/KCP认证备考:从零散题库到可复现的实操路径

简介:这份人大金仓KCA、KCP题库整理面向备考金仓数据库认证的考生与数据库运维初学者,聚焦KingbaseES v8核心考点,帮助读者在刷题中快速定位知识盲区、巩固原理细节。内容覆盖系统表存储位置、ORDER BY排序限制、后台进程、模板数据库、索引最…

2026/10/9 13:54:47 阅读更多 →
Java反混淆工具flaming-shame:字节码还原与混淆对抗实战

Java反混淆工具flaming-shame:字节码还原与混淆对抗实战

简介:flaming-shame 是一款面向 Java 逆向工程与安全分析方向的轻量级反混淆工具,适合需要阅读、调试被混淆字节码的开发者与安全研究人员。它通过静态分析手段比较 Java 程序的结构图,尝试自动还原被混淆的类名、方法名与变量名,…

2026/10/9 13:54:47 阅读更多 →
Java反编译工具Mac版实战:CFR与Procyon选型及避坑指南

Java反编译工具Mac版实战:CFR与Procyon选型及避坑指南

简介:这是一份面向 macOS 用户的 Java 反编译工具资源,主要解决在苹果系统下查看与还原 class 字节码的需求,适合 Java 开发、逆向分析及源码排查场景使用。压缩包共 8 个文件,整体约 7.55MB,包含 jar 主程序、sh 启动…

2026/10/9 13:54:47 阅读更多 →
Oracle数据库设计开发规范:从建表到PL/SQL的避坑指南

Oracle数据库设计开发规范:从建表到PL/SQL的避坑指南

简介:Oracle 数据库设计开发规范是一份面向数据库设计人员、开发工程师与运维人员的实用文档,用于解决 Oracle 项目在表结构设计、命名约定、权限分配与安全策略上缺乏统一标准的问题,适合初中级开发者对照落地,也可作为团队内部规…

2026/10/9 13:54:46 阅读更多 →
SQL Server 2005安装图解与SP3补丁部署避坑指南

SQL Server 2005安装图解与SP3补丁部署避坑指南

简介:这份资源是面向数据库初学者与运维人员的 SQL Server 2005 安装图解教程,重点解决版本选择、环境准备与补丁升级等上手难题。内容围绕 SQL Server 2005 的五个版本(企业版、标准版、工作组版、开发版、Express 版)展开对比&a…

2026/10/9 13:54:46 阅读更多 →
从零开始:在Dify中接入高德MCP,用TaoToken统一Key打通Agent工具链

从零开始:在Dify中接入高德MCP,用TaoToken统一Key打通Agent工具链

/* 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 13:53:46 阅读更多 →

日新闻

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 阅读更多 →