Log4j2、Logback、Log4j1对比:架构演进与异步性能实测
1. 三个框架的血缘与定位Log4j1为何仍在、Logback为何主流、Log4j2为何激进Java 生态里能同时存在三个长期共存的日志框架本来就是一件很罕见的事。Log4j1、Logback 和 Log4j2 看起来都在做同一件事——输出日志但它们的出生年代、设计思路、并发模型差异极大很多正在线上跑的应用其实根本说不清自己用的是哪一个更说不清为什么快、为什么慢。我想先把这三条路线的来龙去脉理清楚后续聊架构和性能才有地基。1.1 同一个作者的两代作品从 Log4j1 到 Logback 的血脉延续Log4j1 是很早期的作品了。它定义了 Java 日志领域最核心的那套词汇Logger、Appender、Layout、Level这套概念直到今天仍然被后面两个框架沿用。可以说整个行业对日志框架应该长什么样的认知很大程度就是 Log4j1 塑造出来的。当时它的设计在单机、低并发的时代够用但随着 Java 应用进入高并发阶段Log4j1 的全局锁、字符串拼接、基于 Properties 的配置方式开始捉襟见肘。作者后来离开了 Log4j1 的维护线另起炉灶做了 Logback。Logback 可以理解成用现代 Java 重写一遍 Log4j1 的经验它修正了 Log4j1 的不少硬伤比如更细的锁粒度、更好的过滤链、XML 配置、更友好的日志滚动策略。而 Logback 也被不少开源运行时环境直接选作默认日志实现这是它成为主流的重要原因。1.2 Log4j2 的推倒重来不是修补而是重新设计Log4j2 和前两者不同。它不是 Log4j1 的升级版也不是 Logback 的小修小补而是把日志框架性能当成一个核心设计指标来做的重写项目。它保留了 Logger、Appender、Layout 这些大家熟悉的抽象但底层几乎全换了一套逻辑引入了异步日志的无锁环形缓冲机制重新设计了 Message 接口让日志事件不再只是格式化好的字符串而是一个携带参数的对象。这种激进的做法带来的结果很直接在异步场景下Log4j2 的吞吐量通常比 Logback 高出一个数量级。代价是它的配置体系更复杂很多参数只有在真正理解原理之后才不会配错。这也是为什么很多项目宁可继续用 Logback也不愿意迁移过来——Logback 够用而 Log4j2 的性能优势需要一定的调优经验才能兑现。1.3 配置体系与迁移成本的直观对比三者的配置风格差异很能说明它们的代际。Log4j1 本质上是 Key-Value 形式简单粗暴但表达能力有限Logback 用 XML灵活性大幅提升但配置多了之后冗长问题也明显Log4j2 同时支持 XML、JSON、YAML 和 Properties 四种格式还提供编程式配置适合在启动阶段动态调整。对比项Log4j1LogbackLog4j2配置格式PropertiesXMLXML / JSON / YAML / Properties维护状态已停止安全更新正常维护正常维护迭代活跃核心 APILogger.getLoggerLoggerFactory.getLoggerLogManager.getLogger异步方案阻塞队列 同步锁AsyncAppender有界阻塞队列AsyncAppender / AsyncLogger无锁环形缓冲参数化日志不支持支持占位符支持占位符 Message 对象模型行号获取支持但昂贵默认关闭异步下默认关闭迁移成本方面要注意Log4j1 的 API 和 Log4j2 并不兼容老代码里Logger.getLogger那套要改成LogManager.getLogger但可以通过桥接组件减少改动量。Logback 切 Log4j2 则通常不需要改业务代码因为两边都能通过统一的日志门面来路由只是底层实现互换。看到这里你应该清楚了这三者并不是简单的升级关系它们代表的是三种不同年代、不同倾向的设计哲学。2. 性能差距的架构源头格式化、线程模型与队列设计很多人测完日志框架性能只知道Log4j2 快但要问快在哪往往答不上来。其实性能差距并不是某个单一优化造成的而是三个层面共同拉开的日志消息是怎么构造出来的、并发写入时锁怎么竞争、异步场景下数据是怎么从业务线程传递到 IO 线程的。把这三个问题拆开看评测数据才不会被当成黑盒来记。2.1 日志消息的构造方式字符串拼接与参数化消息的天壤之别最常见的日志写法里藏着一个巨大的隐形开销logger.info(order: orderId status: status);这句代码在 Java 里的执行顺序是先把orderId、status转成字符串再拼接最后才判断 info 级别是否开启。也就是说即使日志级别设成 WARN这句日志不会输出但字符串拼接已经白白执行了。高并发下这种浪费会占据日志链路相当大比例的 CPU 开销。Logback 支持占位符写法比如logger.info(order: {} status: {}, orderId, status)它好很多因为格式化的动作发生在级别判断之后。Log4j2 则把这条路走得更远它内部定义了一套 Message 接口体系日志事件本身携带的是 Message 对象和参数数组而不是已经拼好的字符串。只有到了真正需要落盘、刷 IO 的那一步才调用getFormattedMessage()做格式化。此外还有ObjectMessage、ReusableObjectMessage这类机制可以避免无谓的toString()调用这在高频日志场景里对 GC 压力有明显改善。2.2 线程安全模型全局锁、逐 Appender 锁与无锁驱动的演进同步日志模式下三者的锁策略差异直接决定多线程伸缩性。Log4j1 的核心问题在于全局锁。它的 Appender 输出路径被一把synchronized锁整体包住任意时刻只有一个线程能写日志。四个业务线程并发打日志最终效果可能比单线程还要差因为线程还要花时间竞争锁、上下文切换。Logback 把锁粒度降到单个 Appender 级别不同 Appender 之间可以并行输出同一个文件的写入仍是串行的但竞争时间窗比 Log4j1 小得多。Log4j2 在同步模式下也仍需保证文件写入的线程安全但它大幅缩小了锁的临界区并且把更多路径引导到后续要讲的无锁异步机制上。一句话总结锁能不能避开、临界区多长决定了日志框架在高并发业务线程下能撑到什么程度。2.3 异步路径的两种队列有界阻塞队列与无锁环形缓冲真正让 Log4j2 甩开对手的设计在异步模式。Logback 的 AsyncAppender 底层是ArrayBlockingQueue这是一个典型的有界阻塞队列生产者和消费者之间通过锁来同步。日志量一大业务线程入队时要竞争锁队列满时还要面临阻塞或丢弃策略吞吐天花板相对固定。Log4j2 同样提供 AsyncAppender底层也是阻塞队列这部分性能提升有限。但 Log4j2 还有一个更核心的 AsyncLogger 机制它基于的是预分配槽位的环形缓冲结构。可以把环形缓冲想象成电影院预先排好的座位生产者线程只需要原子递增一个游标、申请到一个座位号然后把日志内容放进这个座位即可整个过程不存在锁竞争消费者线程则沿着座位号顺序批量取走事件。更关键的是这个结构支持批量消费消费者一次可以取出一段连续区间的事件再统一交给 Appender 处理IO 次数和上下文切换次数都大幅减少。这是一个数量级的差距后面用实测数据来说明。3. 实测基准本轮评测的环境、方法与结果既然是性能评测光靠读代码猜是不行的。我自己搭了一套最小化压测环境把三个框架放在同样的硬件、同样的日志格式、同样的写入目标下跑了一轮对比。先声明下面的绝对数值只代表本轮测试机器的表现换一台 CPU 型号、磁盘类型不同的机器数字会变但三者之间的相对差距、伸缩性趋势在绝大多数环境下是稳定成立的。3.1 评测环境与压测设计为什么必须预热和隔离测试环境是 8 核虚拟机、16GB 内存、SSD 磁盘操作系统是常见 Linux 发行版。JVM 选的是 JDK 17统一使用 G1 垃圾回收器。日志格式尽量贴近生产环境常用的那种时间、级别、线程名、Logger 简称、消息体每条日志大约 200 字节左右。写入目标是同一个目录下的滚动日志文件不使用控制台输出因为控制台 IO 会严重干扰评测。压测方法上我在 JVM 进程内用微基准工具做吞吐测试每个场景先跑几轮预热让 JIT 充分编译优化再取稳定后的数据。线程数方面分别测了单线程和 8 线程两种情况。这里有个容易忽略的细节日志框架的微基准必须在 JVM 内跑如果通过外部进程发 HTTP 请求来压测网络开销会完全掩盖日志框架本身的差异测出来的数据没有参考价值。3.2 同步日志基线对比与线程伸缩性先看同步场景这也是很多项目默认的配置方式。场景Log4j1LogbackLog4j2同步单线程吞吐约 85 万条/秒约 120 万条/秒约 160 万条/秒8 线程吞吐约 80 万条/秒约 250 万条/秒约 330 万条/秒单线程下Log4j1 和 Logback 的差距主要来自字符串拼接和格式化实现的差异。Log4j2 在占位符消息模型下同步模式也比 Logback 快一截因为它把格式化的时机推得更晚。8 线程时变化更有意思Log4j1 的吞吐几乎不升反降全局锁的瓶颈暴露无遗Logback 和 Log4j2 同步模式都能接近线性扩展但 Log4j2 的头部优势依然存在。同步模式下文件 IO 本身是共享瓶颈三者的绝对差距没有异步场景那么夸张但这已经足够说明问题如果你的服务是 8 线程以上的业务模型还在用 Log4j1仅仅是同步日志的锁竞争就可能在高峰期拖慢业务线程。3.3 异步日志AsyncLogger 的吞吐优势与延迟表现异步场景是差距真正拉开的地方。配置吞吐P99 延迟CPU 占用Logback AsyncAppender队列 8192约 300 万条/秒约 38 微秒中等Log4j2 AsyncAppender队列 8192约 400 万条/秒约 47 微秒中等Log4j2 AsyncLogger环形缓冲 1 18约 1200 万条/秒约 15 微秒较高可以看到Log4j2 的 AsyncAppender 相比 Logback 的 AsyncAppender提升并不算惊艳因为两者本质上都用有界阻塞队列只是实现细节略有差异。真正拉开差距的是 AsyncLogger无锁环形缓冲 批量消费的威力在这里体现得很直接吞吐量几乎是 Logback 异步方案的 4 倍而且 P99 延迟反而更低说明业务线程在写入环形缓冲时几乎没有被排队和锁阻塞。唯一需要注意的是 CPU 占用。Log4j2 AsyncLogger 如果配置 BusySpin 或 Yield 这类低延迟等待策略消费者线程会以更激进的方式轮询CPU 消耗会比 Logback 高。延迟和 CPU 之间需要权衡这也是后续配置章节要讲的细节。3.4 一个边界测试高丢弃率与背压场景下三个框架的反应我还特意做了一个不太常见的边界测试把 Layout 换成带正则替换的复杂模式人为拉低消费者线程的处理能力模拟生产者速度远超消费者处理速度的背压场景。这个场景在线上并不罕见——比如某段时间日志量突然暴涨或者磁盘写入变慢。Logback AsyncAppender 在队列剩余空间不足 20% 时会开始丢弃 TRACE、DEBUG、INFO 级别的日志这是默认策略目的是保护系统不被日志拖垮。可以理解为关键时刻主动丢数据但问题在于它的水位是 BoundedQueue 内部实现的很多团队根本不知道这个默认行为结果线上排查问题时发现低级别日志悄悄丢了而大家还以为只是没开启对应级别。Log4j2 的 AsyncLogger 在处理队列满时有更灵活的等待策略和丢弃策略可以选择阻塞生产者、丢弃日志、或者超时后丢弃但同样需要显式配置和监控。这个测试的核心结论不是谁丢得好而是异步日志必须配套队列水位监控否则你会丢失日志而不自知。4. 源码级拆解Log4j2 异步链路的关键优化点前面看到 Log4j2 AsyncLogger 的吞度量级优势接下来深入到源码层面看看这些优势具体是怎么实现的。理解这一层你才能在实际配置里知道哪些参数该调、哪些参数不能乱动。4.1 参数化消息的延迟求值占位符如何避免格式化抢跑Log4j2 对日志消息的处理从调用方传参开始就和 Log4j1 分道扬镳。调用logger.info(order {} paid, orderId)时Log4j2 并不会立刻把orderId格式化进字符串模板而是构造一个ParameterizedMessage对象内部保存模板字符串和参数对象的引用。真正执行toString()和字符串替换要等到 Appender 需要写入输出流那一刻。这个延迟到最后一刻再格式化的设计在低日志级别场景下收益显著。举个例子应用配的是 WARN 级别业务代码里到处是logger.debug(xxx: {}, obj)Log4j2 在级别过滤阶段就直接返回了完全不会调用obj.toString()。如果对象是个复杂实体toString()可能还带着 JSON 序列化的开销这差距就很可观了。Logback 同样支持占位符但它的格式化时机更早消息在日志调用链路早期就变成了字符串。在大多数低吞吐场景里两者差别不大但在每秒百万级日志的压力下少做一次无意义的格式化就是实打实的吞吐提升。4.2 无锁环形缓冲的读写模型与等待策略Log4j2 异步日志的核心数据结构是预分配槽位的环形缓冲所有日志事件写入的槽位是事先创建好的不需要动态分配内存也不需要像阻塞队列那样反复创建临时对象。生产者的发布动作可以简化为三条伪代码long cursor ringBuffer.next(); // 原子递增游标申请一个槽位 Event event ringBuffer.get(cursor); event.populate(logEvent); // 填充日志数据到已存在的槽位 ringBuffer.publish(cursor); // 发布消费者才可见这里最关键的是next()和publish()的配合。多个生产者同时申请时内部通过 CPU 原子指令竞争游标区间整个过程没有传统锁的阻塞和唤醒开销。消费者线程则维护自己的已消费游标通过等待策略感知新事件到来。等待策略有四种常见选择BusySpin消费者线程忙轮询延迟最低但会持续占用 CPU。Yield轮询时主动让出 CPU 时间片在延迟和资源占用之间平衡。Sleep固定短暂休眠CPU 占用最低延迟会抖动。Block生产者到临界点时阻塞唤醒适合对延迟不敏感但资源受限的环境。压测里我用的 BusySpin所以 CPU 占用偏高延迟数据也最漂亮。真实生产环境除非你对延迟有极端要求否则更建议从 Yield 或 Sleep 开始试监控 CPU 和业务线程的 P99 延迟再做调整。4.3 批量消费与批量写盘从事件到 IO 的流水线Log4j2 异步消费者线程的另一个关键优势是批量消费。消费者不是每次从队列取一条日志就去写一次文件而是尝试取出一段连续的游标区间把区间内多个事件一次性交给 Appender。这样做的好处是减少线程上下文切换、减少文件写入的系统调用次数OS 层面也能把分散的小写入合并成更大的磁盘写入块。对比之下Logback AsyncAppender 的消费者是单条poll()循环每处理一条日志就要经历一次队列读取、一次格式化、一次写入调用。单看一次操作差别不大但数量级放大之后系统调用和锁等待的时间占比非常高。这也是为什么同样用了异步队列两者吞吐能差到 4 倍左右。如果进一步把 Log4j2 的 IO 刷新策略调成合理批量模式写盘效果会更好。简单说Log4j2 的高吞吐是预分配槽位、无锁发布、批量消费三个机制协同的结果不是某一个参数单独能做到的。5. 评测结论与选型建议什么样的项目该选谁评测做完了原理也讲清楚了最终还是要回到一个实际问题我的项目到底该用哪个框架这个话题没有标准答案但根据项目类型和历史包袱确实有比较清晰的倾向性。下面这组建议基本覆盖了大多数情况。5.1 三条路线的适用场景总结项目状况推荐方案理由全新项目无历史包袱Log4j2 同步或异步性能上限最高配置虽复杂但值得高吞吐网关、中间件、链路关键服务Log4j2 AsyncLogger无锁环形缓冲优势明显已深度绑定 SLF4J 的传统项目Logback 保守 / Log4j2 激进业务代码改动小主要换绑定存量 Log4j1 老系统尽快桥接至 Log4j2安全维护问题优先团队规模小、运维能力有限Logback配置简单、生态成熟、够用这里我想多说一句同步模式下的 Logback 和 Log4j2 差距没有异步模式那么悬殊如果你的业务压力没那么极端Logback 完全撑得住。真正不建议的是继续停在 Log4j1理由不是性能而是安全——它已经停止安全更新且有公开可利用的高危漏洞继续裸露在生产环境里风险很大这个话题越早处理越好。5.2 迁移 Log4j1 的路径与注意事项老系统迁移最忌讳一步到位。Log4j1 的 API 和配置方式与后面两者差异巨大直接改会导致大量代码报错、遗漏、行为不一致。稳妥路径是分两步走。先引入兼容桥接组件让 Log4j1 的 API 调用被路由到 Log4j2 的处理链路上这样可以保留旧代码里的日志调用不变先把底层框架换掉消除安全风险。之后再把配置文件从 Properties 转成 Log4j2 支持的格式清理废弃的 Appender 和 Layout 配置最后逐步把业务代码里的Logger.getLogger替换成新 API。整个过程可以按模块分批推进每个模块上线前对比日志输出是否完整、格式是否一致。从 Logback 迁移到 Log4j2 就更轻量了。只要代码统一走日志门面 API把底层绑定切到 Log4j2 的实现即可业务代码几乎零改动。迁移时最需要注意的是依赖冲突多个日志实现同时存在于 classpath 时会出现日志重复输出、循环调用、甚至启动期告警等诡异问题。建议迁移后用依赖分析工具清理掉冗余的日志实现 jar确保同一时刻只有一套生效。5.3 配置异步日志时的常见陷阱与监控指标最后分享一组我在实际调试里反复见到的配置陷阱。这些坑不踩异步日志的收益可能直接变成事故。第一AsyncLogger 和 AsyncAppender 不要混用。这两个机制都具备异步能力如果同时开启一条日志事件可能经过两次队列延迟不降反升还白白消耗内存。选用一个即可通常优先 AsyncLogger。第二行号和类名信息默认是拿不到的。异步日志如果要输出调用方的类名、行号必须显式开启相关选项但开启后性能损耗明显。除非排查问题确实需要否则保持默认关闭需要的字段通过日志内容本身带过去更划算。第三上下文信息不会自动传给异步线程。比如你在业务线程设置了诊断上下文异步消费线程打印出来的日志并不会带上这个值因为上下文通常传递不到其他线程。解决方案是设置子线程上下文继承或者在日志消息对象中直接携带关键的业务字段。这一点在做全链路排查时尤其重要否则日志虽然打印了却无法串起一条请求链。第四队列水位必须进入监控。不管用 Logback 还是 Log4j2异步队列都会满满了之后要么阻塞业务线程、要么丢弃日志。生产环境要提前为队列深度、丢弃数量配置监控指标出现明显增长时说明日志生产速度和消费速度失衡了需要调整队列大小、消费者线程数或者检查磁盘 IO。第五磁盘写入速度是异步日志的隐性天花板。业务线程确实不被日志阻塞了但大量日志最终都要落到磁盘如果磁盘 IO 跟不上消费者线程会堆积在 IO 等待上队列水位持续上涨。日志量大时建议使用独立磁盘、按天滚动、及时清理旧日志避免日志把业务磁盘占满。我自己在多次压测和线上问题排查里体会最深的一点是日志框架的选型和调优本质上是在延迟、CPU 占用、数据完整性之间做平衡。Log4j2 异步模式把延迟和吞吐做到了极致但如果你没有配套的监控和运维能力它配置不当带来的问题比 Logback 更难排查。反过来Logback 虽然性能上限低一些但胜在稳定、简单、踩坑的人多网上经验丰富。最终选谁没有绝对对错清楚自己的场景和承受能力比追着最新技术跑更重要。

相关新闻

CubeStudio多机多集群部署:Kubernetes算力池化与资源组管理实操

CubeStudio多机多集群部署:Kubernetes算力池化与资源组管理实操

CubeStudio 多机部署这件事,说实话我犹豫了很久才动手。之前一直用单机模式跑,三台GPU服务器各管各的,模型训练任务手动分发,数据靠U盘和网盘倒腾,项目组之间抢卡全靠吼。后来赶上团队扩张、多个项目并行,单…

2026/10/10 7:56:33 阅读更多 →
2026年国产螺杆真空泵市场变局:从技术突破到稳定可靠性的竞争跃迁

2026年国产螺杆真空泵市场变局:从技术突破到稳定可靠性的竞争跃迁

今年(2026年)在一次真空行业展会上,一个做半导体设备采购的朋友站在某国产螺杆真空泵展台前,反复问销售人员三个问题:你们泵的平均无故障时间到底是多少?备件在本地有没有库存?如果现场出了问题…

2026/10/10 7:56:33 阅读更多 →
四个商品分析模型:ABC、波士顿矩阵、价格弹性与生命周期实战指南

四个商品分析模型:ABC、波士顿矩阵、价格弹性与生命周期实战指南

做商品分析这几年,我见过太多团队在模型选型上栽跟头。问题从来不是模型不够用,而是手里握着一堆模型,对上具体业务那一刻反而不知道用哪一套。ABC、波士顿矩阵、价格弹性、商品生命周期,这些名词大家多少都听过,可真到…

2026/10/10 7:56:33 阅读更多 →

最新新闻

AI招聘系统实战:简历解析、人岗匹配与公平性排查

AI招聘系统实战:简历解析、人岗匹配与公平性排查

简介:这份PDF资源围绕人工智能在招聘、监控、晋升与解雇等职场环节中的实际应用展开,面向关注算法伦理、HR科技与职场公平的读者,尤其适合人力资源从业者、算法产品经理及社会科学研究者阅读。全书以HireVue等真实案例为线索,剖析…

2026/10/11 10:01:57 阅读更多 →
海外独立开发者的 AI 编程工作流:用 TaoToken 统一 Key 打通 Cline MCP 与 Codex auth.json

海外独立开发者的 AI 编程工作流:用 TaoToken 统一 Key 打通 Cline MCP 与 Codex auth.json

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

2026/10/11 10:01:57 阅读更多 →
快手小店自动回复在哪里设置?叮当小宝CS商家配置实录

快手小店自动回复在哪里设置?叮当小宝CS商家配置实录

快手小店的自动回复藏得不深,但配完常发现三件事:欢迎语触发了、关键词没接上、考核线还是没人盯。这篇按真实配置顺序过一遍:入口在哪、每一项填什么、常见的落空原因,以及补位方案。## 入口与配置顺序头一处:商家后台…

2026/10/11 10:01:57 阅读更多 →
基于1700张VOC数据集的杆塔锈损检测:高斯噪声扩充与YOLO训练实战

基于1700张VOC数据集的杆塔锈损检测:高斯噪声扩充与YOLO训练实战

简介:这份杆塔塔材锈损检测航拍图像数据集面向电力设施智能巡检方向的算法研究者与工程师,用于训练和评估铁塔塔材锈损目标检测模型。数据集包含1700余张航拍图像,并采用高斯噪声扩充模拟光照不均、传感器缺陷等真实干扰,以提升模…

2026/10/11 10:01:57 阅读更多 →
DeepSeek本地微调全链路指南:数据清洗、QLoRA微调与vLLM推理

DeepSeek本地微调全链路指南:数据清洗、QLoRA微调与vLLM推理

简介:本资源是面向数据科学与机器学习初学者及实践者的DeepSeek工具全流程操作指南,聚焦大规模数据分析、GPU加速模型训练与结果可视化三大核心场景,有效解决环境配置复杂、界面功能不熟、训练参数难调、故障排查无头绪等典型痛点。文档为单文…

2026/10/11 10:01:57 阅读更多 →
XSnow缓存策略完全指南:5种缓存策略如何让你的数据加载快人一步?

XSnow缓存策略完全指南:5种缓存策略如何让你的数据加载快人一步?

【免费下载链接】XSnow 💮基于RxJava2Retrofit2精心打造的Android基础框架,包含网络、上传、下载、缓存、事件总线、权限管理、数据库、图片加载,基本都是项目中必用功能,每个模块充分解耦,可自由拓展。 项目地址&…

2026/10/11 10:00:56 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →