一个月跑了 5 次的“月度对账”:Cron 表达式的 7 个坑与 3 分钟自检法
上个月一个做财务系统的朋友半夜在群里 我“我们那个对账任务10 月跑了 5 次账被重复冲了 4 遍。”我让他把配置贴出来就一行0 12 1 * 1 /opt/job/reconcile.sh他说他的理解是“每月第一个周一 12 点跑一次”。问题就在这儿——这不是它的语义。在 crontab 里0 12 1 * 1的意思是“每月 1 号 12 点或者每周一 12 点”。10 月正好是 1 号周四 4 个周一加起来 5 次一次不多一次不少。我把这个表达式丢进解析工具让它列出接下来 5 次执行时间2026-10-01 12:00 周四 2026-10-05 12:00 周一 2026-10-12 12:00 周一 2026-10-19 12:00 周一 2026-10-26 12:00 周一看到第一行是周四他自己就明白哪儿错了。整个过程不到一分钟。说实话Cron 这东西我也栽过好几回%忘了转义导致备份文件名被截断、容器里时区是 UTC 结果任务早跑了 8 小时、0 0 31 * *上线三个月才发现有 5 个月压根没执行过。这篇就把定时任务表达式这件事从头到尾讲清楚。问题根源Cron 是写给机器读的我们却在用肉眼读Cron 表达式看着简单五个字段而已┌───────────── 分钟 (0-59) │ ┌───────────── 小时 (0-23) │ │ ┌───────────── 日 (1-31) │ │ │ ┌───────────── 月 (1-12) │ │ │ │ ┌───────────── 星期 (0-70 和 7 都是周日) │ │ │ │ │ * * * * *但它有三个反直觉的设计正好都是肉眼读最容易翻车的地方三个致命设计字段之间不是简单的“与”日和周一旦同时被限定关系会变成“或”同一套语法有多个方言Unix crontab、Quartz、Spring 的字段数、星期编号、支持的特殊字符都不一样错了不报错0 0 30 2 *永远不会执行但 crontab 会平静地把它装上根子上是一个认知问题**Cron 不是给人读的语言它是给调度器读的匹配规则。**你读它的时候在脑子里做的是一次“语义还原”而这次还原没有任何验证。先说结论不要“读”Cron要“翻译”成具体时间点我这几年养成的习惯只有一条任何 Cron 表达式在上线之前都必须让它吐出接下来 5 次的具体执行时间。不是看中文描述不是靠脑子想而是看具体的日期 星期。因为验证方式能发现的错误可靠度肉眼读表达式基本只能发现字段数写错⭐看自然语言描述能发现明显的语义误解⭐⭐⭐看接下来 5 次执行时间日/周关系、步长起点、永不执行的日期全暴露⭐⭐⭐⭐⭐在目标环境实跑一次时区、权限、重叠执行⭐⭐⭐⭐⭐描述是“翻译”执行时间是“事实”。两者对不上的时候永远信执行时间。五种翻译方式按场景选方式一在线解析页临时查、教新人我自己开在书签栏的是这个Cron 表达式解析工具。输入框贴表达式回车或者点“解析”下面出两样东西——一句中文描述和接下来 5 次执行时间带星期几。旁边一排常用预设每分钟、每小时、每天 09:00、工作日 09:00、每 5 分钟之类点一下直接填进去比手敲快。页面下半部分是一张语法参考表字段、允许值、特殊字符都列着忘了L#是什么可以直接翻不用另开一页搜。https://leowh.com/tools/cron/index.html几个实测细节用的时候心里有数只吃标准 5 字段。把 Quartz 的 6 段贴进去会直接提示“当前输入有 6 个字段”——反过来当方言检查器挺好使日/周按 crontab 的“或”语义算0 12 1 * 1给出的就是 1 号 每个周一和 vixie-cron 一致那句中文描述是逐字段拼出来的*/15 9-17 * * 1-5会显示成“每15分钟 9-17点 每天 周一执行”1-5被简化成了“周一”。所以别只看描述一定对着下面的执行时间核对LW#这类 Quartz 扩展算不出时间页面会显示“无法计算后续执行时间”这时候要换解析器时间按浏览器本地时区算容器里的 UTC 它不会替你考虑方式二croniter写脚本、批量校验线上环境的配置不可能一条条手动贴网页这时候用库pipinstallcroniter cron-descriptorfromdatetimeimportdatetimefromcroniterimportcroniter expr0 12 1 * 1itrcroniter(expr,datetime(2026,9,30,9,0))for_inrange(5):print(itr.get_next(datetime).strftime(%Y-%m-%d %H:%M %a))输出2026-10-01 12:00 Thu 2026-10-05 12:00 Mon 2026-10-12 12:00 Mon 2026-10-19 12:00 Mon 2026-10-26 12:00 Monday_or参数默认是True跟 vixie-cron 的“或”语义一致想模拟 Spring 的“与”语义传day_orFalse结果会完全不同。自然语言描述用cron-descriptorfromcron_descriptorimportExpressionDescriptorprint(ExpressionDescriptor(expr,use_24hour_time_formatTrue).get_description())# At 12:00, on day 1 of the month, or on Mondayprint(ExpressionDescriptor(expr,locale_codezh_CN).get_description())# 在 12:00, 每月的 1 号, 或Monday注意中文版里星期名没翻译干净会中英混排。这个库的价值在于它把 “oron Monday” 明明白白写出来了——比逐字段拼接的描述更能暴露问题。方式三cronstrue跨方言认 Quartzimportcronstruefromcronstrue/i18n;cronstrue.toString(0 12 1 * 1,{locale:zh_CN});cronstrue 能吃下 5/6/7 段Quartz 的?LW#也认。排查“这段表达式到底是谁在解析”的问题时比 Python 那两个方便。方式四直接用目标框架的解析器最准前面几种都是“近似”最终裁决权在真正执行它的那个框架手上// Spring6 段秒在最前CronExpressionexprCronExpression.parse(0 0 12 1 * MON);LocalDateTimenextexpr.next(LocalDateTime.now());// Quartz6-7 段CronExpression.isValidExpression(0 0 12 ? * MON#1);newCronExpression(0 0 12 ? * MON#1).getNextValidTimeAfter(newDate());// Gosched,err:cron.ParseStandard(0 12 * * 1)next:sched.Next(time.Now())方式五systemd-analyze calendar用 timer 而不是 cron 的话systemd-analyze calendarMon *-*-* 12:00:00会直接打印下一次触发时间本地时区和 UTC 各一行。注意 systemd 的OnCalendar不是 cron 语法格式是星期 年-月-日 时:分:秒不能把 crontab 那行直接搬过去。五种方式对比方式方言输出适合场景局限在线解析页标准 5 段中文描述 后续 5 次临时查、写文档、教新人不能进 CI不认L/W/#时区跟着浏览器croniter标准 5 段精确时间点脚本批量校验、单元测试与 Quartz/Spring 语义有差异cronstrue5/6/7 段自然语言跨方言排查只给描述不给时间点框架解析器各自方言精确时间点上线前最终确认要起工程环境systemd-analyzesystemd 语法下次触发用 timer 的机器语法不通用7 个高频坑附 ❌ / ✅坑 1日和周是“或”关系不是“且”这是事故率最高的一条。man 5 crontab原文写得很清楚If both fields are restricted (i.e., do not contain the*character), the command will be run wheneitherfield matches the current time.❌ 想要“每月第一个周一”0 12 1 * 1实际是“1 号 或 每周一”一个月跑 5-6 次。✅ crontab 里的经典写法用日期范围卡住“第一个”0 12 1-7 * 11 到 7 号里必然有且只有一个周一等价于“每月第一个周一”。✅ Quartz / Spring 有专门语法0 0 12 ? * MON#1⚠️更阴的是各家语义不一致Spring 的CronExpression是逐字段匹配的日/周是与关系。同样一行0 0 12 1 * MON实现语义触发时机vixie-croncrontab1 号或周一一个月 5-6 次Spring CronExpression1 号且周一只有 1 号正好是周一才跑Quartz必须有一个写?两个都限定会解析失败同一行表达式换到另一个框架行为可能从“每月 5 次”变成“一年几次”。跨系统搬配置时这里必须重算。坑 2crontab 里的%会被吃掉命令部分遇到未转义的%cron 会把它变成换行后面所有内容当作标准输入塞给命令。❌ 备份文件名带日期0 3 * * * tar czf /backup/db-$(date %Y%m%d).tar.gz /data实际执行的命令在第一个%处被截断文件名成了db-2026剩下的Y%m%d).tar.gz /data变成 stdin/data根本没被打包。而且不会报错。✅ 全部转义0 3 * * * tar czf /backup/db-$(date \%Y\%m\%d).tar.gz /data✅ 更稳的做法命令写进脚本crontab 里只调脚本。0 3 * * * /opt/job/backup.sh /var/log/backup.log 21坑 3先确认“方言”再谈语法实现字段数秒年?LW#星期编号vixie-cron / croniecrontab5❌❌❌❌❌❌0-70/7 周日SpringCronExpression6✅❌✅✅✅nW/LW✅0-70/7 周日Quartz6-7✅✅✅必须用✅✅✅1-71 周日最大的雷是星期编号。Quartz 里 1 是周日cron 和 Spring 里 1 是周一。所以* * * * * 2在 crontab 里是周二搬到 Quartz 里补上秒位变成周一。Spring 官方 Javadoc 专门写了这条差异不是文档疏漏是历史包袱。✅ 跨系统搬表达式至少检查三处字段数、星期编号、L/W/#是否被支持。能用MONFRI就别用数字。坑 4*/n的起点不是你以为的那个/是“在给定范围内按步长取值”起点是范围的左端不是 0也不是任务启动时刻。表达式很多人以为实际0 9-18/2 * * *10、12、14、16、189、11、13、15、170 */6 * * *从启动算每 6 小时0、6、12、18一天 4 次*/15 9-17 * * 1-5工作日 9-17 点每 15 分钟正确但 17:45 是当天最后一次✅ 想要偶数点显式写范围0 10-18/2 * * *⚠️ 顺带一条分钟字段写*/70不合法超过 59而0 */25 * * *是 0、25、50每小时重新从 0 开始不是全天等间隔 25 分钟。坑 5时区——容器里默认是 UTC现象非常统一任务比预期早或晚8 小时本地跑没问题上了容器就不对。# 先确认容器里的时区datecat/etc/timezone2/dev/null✅ DockerfileENV TZAsia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime echo $TZ /etc/timezone✅ 其他场景环境做法K8s CronJob1.27 用.spec.timeZone: Asia/ShanghaiSpringScheduled(cron ..., zone Asia/Shanghai)QuartzCronScheduleBuilder.cronSchedule(expr).inTimeZone(TimeZone.getTimeZone(Asia/Shanghai))crontabCRON_TZAsia/Shanghaicronie 支持vixie-cron 不一定⚠️ 改了TZ之后必须重启 crond运行中的进程不会自动重读。⚠️ 出海业务还要注意夏令时30 2 * * *在America/New_York春季拨快那天不会执行因为 2:30 这个时刻不存在。国内Asia/Shanghai没有夏令时所以这个坑平时看不见。坑 6静默失效——有些表达式永远不会跑这是最危险的一类因为没有任何报错。表达式意图实际0 0 30 2 *每年 2 月 30 日永不执行2 月没有 30 号0 0 31 * *每月最后一天一年只跑 7 次1/3/5/7/8/10/12 月0 0 29 2 *每年 2 月 29 日4 年一次闰年才有0 0 L * *每月最后一天crontab 不认L直接报错或忽略0 0 31 * *用 croniter 跑一遍就很直观2026-10-31 Sat 2026-12-31 Thu ← 11 月被跳过了 2027-01-31 Sun 2027-03-31 Wed ← 2 月被跳过了 2027-05-31 Mon ← 4 月被跳过了✅ 想要“每月最后一天”crontab 里没有直接写法只能退到脚本里判断0 0 * * * [ $(date -d tomorrow \%d) 01 ] /opt/job/month_end.sh✅ 或者用支持L的调度器Quartz / Spring / XXL-JOB。✅ 无论哪种都要给任务配上日志和告警让“没跑”这件事能被看见MAILTOopsexample.com 0 0 * * * /opt/job/x.sh /var/log/x.log 21 || echo job x failed | mail -s cron alert opsexample.com坑 7重叠执行——cron 不等上一次跑完cron 只负责“到点触发”不会等上一个进程退出。一个跑 90 秒的任务配上* * * * *就会有进程叠在一起。后果通常是数据重复写入、内存被打满、锁表。✅ 用 flock 做互斥抢不到锁就直接放弃这一次* * * * * flock -n /tmp/job.lock -c /opt/job/sync.sh✅ 或者阻塞等待适合不能漏跑的场景* * * * * flock -w 30 /tmp/job.lock -c /opt/job/sync.sh⚠️ 注意锁文件残留脚本被kill -9之后 flock 会自动释放锁挂在文件描述符上但自己写 pid 文件的那种锁不会得加超时清理。实测肉眼读 vs 工具翻译下面这张表是我把几个真实配置丢进解析工具之后整理的每一条都是踩过的表达式我第一反应实际执行差在哪0 12 1 * 1每月第一个周一 12 点1 号 每个周一一月 5-6 次日/周是“或”0 9-18/2 * * *9 到 18 点每 2 小时9、11、13、15、17步长起点是范围左端0 0 31 * *每月最后一天一年 7 次2/4/6/9/11 月不跑日期不存在时静默跳过*/30 9-17 * * 1-5工作日每半小时9:00-17:30含 17:30 那次右端点是否包含要想清楚30 2 * * *每天凌晨 2:30国内正确纽约春季拨快那天不执行时区与夏令时0 0 * * 2搬到 Quartz周二周一星期编号不同结论很朴素这些错误没有一个能靠“再仔细读一遍”发现全都是把执行时间列出来之后一秒看穿的。3 分钟上线前自检清单可以直接抄进 CR 模板方言这行表达式最终由谁解析crontab、Spring、Quartz 还是 K8s CronJob字段数对得上吗翻译让工具列出接下来 5 次执行时间间隔符合预期吗网页、croniter、框架解析器任选日/周日和周有没有同时被限定如果有确认清楚当前实现是“或”还是“且”转义命令里有没有%有就全部写成\%或者挪进脚本时区执行环境的date是什么需要显式指定TZ/timeZone/zone吗静默失效有没有写死 29/30/31 号有没有用LW#而运行环境不支持重叠任务最长耗时多久触发间隔够吗要不要 flock可观测失败了谁会知道日志重定向了吗MAILTO或告警配了吗灰度能不能先改成*/5 * * * *跑一天观察再切到正式表达式第 9 条是我后来加的。改调度频率这种事先小步验证再放开比任何自检都管用。常见问题Q在线工具和 croniter 的结果不一样信谁A信你的运行时。不同解析器在日/周关系、?的处理、步长边界上确实存在差异这不是谁对谁错是方言不同。在线工具用来快速定位“我是不是理解错了”最终确认要用目标框架自己的解析器。Q?和*有区别吗A在标准 crontab 里?不是合法字符很多实现会直接报错。在 Quartz 里它是必需的——日和周必须有一个写?因为 Quartz 不允许两个字段同时限定。Spring 里?等价于*。所以从 Quartz 抄表达式到 crontab?要换成*。Q0 和 7 都是周日那 Quartz 呢AQuartz 是 1-71 是周日7 是周六和 cron 完全错开一位。这是最容易出线上事故的一条能用SUNMON就绝不写数字。Qcrontab -T能做语法检查吗Aman 5 crontab里提到可以用-T在安装前测试语法这是 cronie 的特性。Debian/Ubuntu 默认的 vixie-cron 分支不一定有先crontab -h看一眼。而且它只查语法查不出“永不执行”这类语义问题。Q为什么我的任务在本地跑正常上线就不跑A按概率排序——① 时区容器默认 UTC② 脚本没有执行位chmod x③ 环境变量缺失cron 的 PATH 极简nodepython找不到用绝对路径④ 命令里的%没转义 ⑤ 日志没重定向报错了你看不到。Q怎么快速验证时区问题A临时加一行* * * * * date /tmp/tz.log等一分钟看输出。这是最省事的办法比推理可靠。QK8s CronJob 和 crontab 语法一样吗A一样都是标准 5 段K8s 额外支持hourlydailyweeklymonthlyyearly这几个宏。但时区要注意K8s CronJob 默认按 kube-controller-manager 所在节点的时区算可以在schedule前面加TZ或CRON_TZ前缀指定1.27 还能用更明确的.spec.timeZone字段。总结Cron 表达式的所有麻烦都可以归结成一句话它是给机器读的匹配规则而我们在用人脑做语义还原且没有任何验证环节。补上这个验证环节成本极低✅ 上线前让工具列出接下来 5 次执行时间网页 / croniter / 框架解析器✅ 日和周不要同时限定除非你确认了当前实现是“或”还是“且”✅ 命令里的%一律转义或者干脆挪进脚本✅ 跨系统搬表达式重查字段数、星期编号、L/W/#✅ 容器里显式设时区别赌默认值✅ 用 flock 防重叠用日志和告警让失败可见⚠️ 特别提醒写死 29/30/31 号的表达式是定时炸弹它不报错只是安静地不执行。定时任务这东西出问题的成本永远比检查一遍高。花三分钟把执行时间列出来比事后查日志划算得多。参考与工具man 5 crontabVixie Cron / croniehttps://man7.org/linux/man-pages/man5/crontab.5.htmlSpringCronExpressionJavadoc含方言差异说明https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/scheduling/support/CronExpression.htmlQuartz CronTrigger 教程https://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.htmlcroniterhttps://github.com/pallets-eco/cronitercronstrue多语言描述https://github.com/bradymholt/cronstrueCron 表达式解析工具5 字段含语法参考表与后续执行时间https://leowh.com/tools/cron/index.html相关文章《工作日计算避坑指南》—— 节假日调休怎么在定时任务里正确处理《chmod 权限实战》—— 脚本跑不动八成是执行位的问题

相关新闻

Excel 管库存为什么越管越乱?三个天生缺陷,和三个能救急的笨办法

Excel 管库存为什么越管越乱?三个天生缺陷,和三个能救急的笨办法

我见过太多小公司,库存一开始都是一张 Excel 表,管着管着就成了糊涂账。很多人第一反应是"我们的人不够细心",但我这些年看下来,结论恰恰相反——不是人不用心,是 Excel 这个工具天生扛不住库存这件事。 具体…

2026/10/13 18:38:40 阅读更多 →
高并发下的排行榜系统:如何用Redis快速实现千万用户实时排名

高并发下的排行榜系统:如何用Redis快速实现千万用户实时排名

高并发、千万用户、实时排名——听起来吓人,拆开来看全是套路。本文从数据结构选型到工业级落地,手把手带你打出一套 Redis 排行榜的"组合拳",附带完整代码,可直接抄到生产环境。一、为什么是 Redis ZSet?排…

2026/10/12 23:40:44 阅读更多 →
信奥的数学学习书籍(有代码和OJ)--2026.10

信奥的数学学习书籍(有代码和OJ)--2026.10

NOI数学 学习 相关书籍及视频等资料(不包括CTS内容) NOI数学 学习 相关书籍及视频等资料(不包括CTS内容)_noi教材-CSDN博客 1、C编程与信息学竞赛数学思维 王桂平等 著(2026.06) 2、C编程与信息学竞赛数学基…

2026/10/12 13:08:54 阅读更多 →

最新新闻

矩阵论期末复习:Jordan标准形、QR分解与广义逆手算全攻略

矩阵论期末复习:Jordan标准形、QR分解与广义逆手算全攻略

简介:矩阵论期末考试参考答案是一份针对矩阵论课程期末考试的完整解题资料,面向正在复习矩阵论、线性代数的本科生及考研备考生,也适用于需要快速回顾核心计算方法的工程类学生。资源包内共1个PDF文件,大小约284KB,文件…

2026/10/13 19:15:31 阅读更多 →
OSPF协议细节深度解析:LSA类型、邻居状态机与SPF算法

OSPF协议细节深度解析:LSA类型、邻居状态机与SPF算法

1. 为什么OSPF不是“配通就行”,而是网络工程师的分水岭 在某高校网络实验室带学生做路由实验时,我见过太多次这样的场景:A同学花15分钟把OSPF邻居关系配通, show ip ospf neighbor 显示FULL,ping测试全通&#xff0…

2026/10/13 19:15:30 阅读更多 →
夸克网盘免费扩容1TB全攻略:从活动入口到空间验证一步不落

夸克网盘免费扩容1TB全攻略:从活动入口到空间验证一步不落

夸克网盘免费扩容1TB这个话题,隔一阵子就会有人翻出来问一遍。网上教程截图满天飞,但真正把入口在哪、任务怎么算完成、到账怎么验证、有效期怎么查讲清楚的并不多。我这次直接把2026年还能跑通的路径重新过了一遍,从准备工作到领取完成&…

2026/10/13 19:15:30 阅读更多 →
免费开源ERP系统选型与实施:进销存+财务+生产一体化实战指南

免费开源ERP系统选型与实施:进销存+财务+生产一体化实战指南

这几年在圈子里被问得最多的一个问题,就是中小公司和创业团队到底要不要上ERP。我的答案一直很干脆:要上,但别一上来就盯着那套贵得离谱的商业软件。免费开源的进销存财务生产ERP系统,这些年成熟度已经很高了,尤其适合…

2026/10/13 19:15:30 阅读更多 →
免费开源一体化ERP实战:进销存+财务+生产+SaaS部署与权限管理

免费开源一体化ERP实战:进销存+财务+生产+SaaS部署与权限管理

我一个干制造业信息化多年的人,这几年最深的感受就是:太多中小工厂被Excel管生产、管库存、管账的方式拖住了。业务一多,采购下单靠拍脑袋,仓库月底盘点对不上数,财务月底对账加班到深夜,生产领料不知道库存…

2026/10/13 19:15:30 阅读更多 →
多智能体电梯群控:基于目的楼层预约与PPO的深度强化学习实现

多智能体电梯群控:基于目的楼层预约与PPO的深度强化学习实现

简介:本资源是一套面向计算机、人工智能、自动化等专业学生的毕业设计与课程设计实践项目,聚焦于多智能体协同下的电梯群控优化问题,采用深度强化学习实现目的楼层预约调度算法,解决传统电梯响应延迟高、能耗大、乘客等待时间长等…

2026/10/13 19:14:30 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →