Logback配置实战:开箱即用的Spring Boot日志模板与生产环境最佳实践
1. 为什么你需要一个“开箱即用”的Logback配置模板如果你正在开发Java项目尤其是Spring Boot应用那么Logback几乎是你日志系统的默认选择。但每次新建一个项目或者需要对现有项目的日志进行精细化调整时面对一个空白的logback-spring.xml文件你是否会感到一丝茫然是去网上找零碎的片段拼凑还是翻阅官方文档从头理解每个标签的含义这个过程不仅耗时而且容易出错比如配置了不生效的Appender或者日志级别设置混乱导致生产环境问题难以排查。一个包含全部常用配置项、并附有详细中文注释的模板其价值就在于“开箱即用”。它不是一个让你死记硬背的语法手册而是一个经过实战检验的“工具箱”。你可以直接复制粘贴然后像填空一样根据自己项目的实际需求比如日志路径、环境区分、特定包日志级别进行微调从而快速搭建起一套健壮、清晰、可维护的日志体系。这能让你把精力集中在业务逻辑上而不是在日志配置这种基础但关键的“基建”工作上反复踩坑。2. 一份完整的Logback配置模板深度解析下面这份模板我结合了多年在微服务、分布式系统中的日志管理经验它不仅包含了所有核心组件更在注释中解释了“为什么这么配”以及“改了会怎样”。请将以下内容保存为logback-spring.xmlSpring Boot推荐此命名以支持Profile或logback.xml放置于项目的src/main/resources目录下。?xml version1.0 encodingUTF-8? !-- Logback 配置文件详解模板 核心设计原则 1. 环境隔离通过Spring Profile区分开发、测试、生产环境配置。 2. 日志分级控制台DEBUG/INFO与文件INFO/ERROR分离便于排查。 3. 滚动策略按日期和大小滚动自动清理历史日志防止磁盘写满。 4. 异步输出对文件Appender采用异步避免日志I/O阻塞主业务线程。 5. 清晰归类不同级别、不同用途的日志输出到不同文件。 -- configuration scantrue scanPeriod60 seconds debugfalse !-- 1. 定义通用变量属性 -- !-- LOG_HOME: 日志文件输出的根目录。在IDE中运行时通常输出到项目目录下在生产环境应设置为绝对路径如 /app/logs -- property nameLOG_HOME value./logs / !-- LOG_PATTERN: 定义日志输出的格式。这里使用了彩色日志仅在支持ANSI的控制台生效便于开发时肉眼区分 -- property nameLOG_PATTERN value%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %clr(%-5level) %clr(%logger{36}){cyan} - %msg%n / !-- FILE_LOG_PATTERN: 输出到文件时的格式去掉了颜色控制符避免在文本文件中出现乱码 -- property nameFILE_LOG_PATTERN value%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n / !-- APPLICATION_NAME: 应用名用于日志文件名前缀在微服务架构中尤为重要 -- springProperty scopecontext nameAPPLICATION_NAME sourcespring.application.name defaultValuemyapp/ !-- 2. 输出到控制台的Appender (非常适用于开发环境) -- appender nameCONSOLE classch.qos.logback.core.ConsoleAppender !-- 过滤器控制台通常只打印INFO及以上级别避免DEBUG日志刷屏 -- filter classch.qos.logback.classic.filter.ThresholdFilter levelINFO/level /filter encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder !-- 使用带颜色的格式 -- pattern${LOG_PATTERN}/pattern charsetUTF-8/charset /encoder /appender !-- 3. 输出到所有级别日志文件的Appender (按日期滚动) -- appender nameFILE_ALL classch.qos.logback.core.rolling.RollingFileAppender !-- 当前正在写入的日志文件路径 -- file${LOG_HOME}/${APPLICATION_NAME}-all.log/file !-- 设置滚动策略基于时间大小的混合策略是最佳实践 -- rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy !-- 滚动后的文件命名模式按天滚动并加入.gz后缀自动压缩节省磁盘空间 -- fileNamePattern${LOG_HOME}/archive/${APPLICATION_NAME}-all.%d{yyyy-MM-dd}.%i.log.gz/fileNamePattern !-- 保留最近30天的历史日志超期自动删除 -- maxHistory30/maxHistory !-- 配合SizeBasedTriggeringPolicy单个日志文件最大100MB -- timeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATP maxFileSize100MB/maxFileSize /timeBasedFileNamingAndTriggeringPolicy !-- 所有日志文件总大小上限防止磁盘被意外撑满 -- totalSizeCap5GB/totalSizeCap /rollingPolicy encoder pattern${FILE_LOG_PATTERN}/pattern charsetUTF-8/charset /encoder /appender !-- 4. 单独输出ERROR级别日志的Appender (用于监控和告警) -- appender nameFILE_ERROR classch.qos.logback.core.rolling.RollingFileAppender file${LOG_HOME}/${APPLICATION_NAME}-error.log/file !-- 过滤器只允许ERROR级别日志通过 -- filter classch.qos.logback.classic.filter.LevelFilter levelERROR/level onMatchACCEPT/onMatch onMismatchDENY/onMismatch /filter rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy fileNamePattern${LOG_HOME}/archive/${APPLICATION_NAME}-error.%d{yyyy-MM-dd}.log.gz/fileNamePattern maxHistory30/maxHistory /rollingPolicy encoder pattern${FILE_LOG_PATTERN}/pattern charsetUTF-8/charset /encoder /appender !-- 5. 异步Appender包装 (提升性能关键) -- !-- 将上面的FILE_ALL和FILE_ERROR包装成异步输出避免因磁盘IO慢而阻塞业务线程 -- appender nameASYNC_FILE_ALL classch.qos.logback.classic.AsyncAppender !-- 指定被包装的同步Appender -- appender-ref refFILE_ALL / !-- 队列深度默认为256。生产环境可根据日志量调整太大消耗内存太小可能丢日志 -- queueSize512/queueSize !-- 当队列剩余容量低于此阈值时日志级别低于此值的日志将被丢弃TRACE, DEBUG, INFO。用于应对突发流量保护应用。 -- discardingThreshold0/discardingThreshold !-- 是否永远阻塞false表示队列满时丢弃日志true则阻塞生产者。通常设为false保证业务不卡死。 -- neverBlocktrue/neverBlock /appender appender nameASYNC_FILE_ERROR classch.qos.logback.classic.AsyncAppender appender-ref refFILE_ERROR / queueSize256/queueSize discardingThreshold0/discardingThreshold neverBlocktrue/neverBlock /appender !-- 6. 特定包或类的日志级别配置 -- !-- 这里可以精细控制第三方库或自身业务模块的日志级别避免无关日志干扰 -- logger namecom.example.myapp.mapper levelDEBUG additivityfalse !-- additivityfalse 表示此logger的日志不再传递给root logger避免重复打印 -- appender-ref refASYNC_FILE_ALL/ appender-ref refCONSOLE/ /logger !-- 将Hibernate SQL日志调为DEBUG便于排查JPA问题但只输出到文件不上控制台 -- logger nameorg.hibernate.SQL levelDEBUG additivityfalse appender-ref refASYNC_FILE_ALL/ /logger logger nameorg.springframework levelINFO/ !-- 7. 根Logger配置 (兜底配置) -- !-- level: 根日志级别所有未单独配置的logger都继承此级别 -- root levelINFO !-- 开发环境输出到控制台和所有日志文件 -- springProfile namedev appender-ref refCONSOLE / appender-ref refASYNC_FILE_ALL / appender-ref refASYNC_FILE_ERROR / /springProfile !-- 生产环境只输出到文件且控制台不输出INFO可能被采集工具抓取产生费用和噪音 -- springProfile nameprod appender-ref refASYNC_FILE_ALL / appender-ref refASYNC_FILE_ERROR / /springProfile !-- 默认环境未指定profile时 -- springProfile namedefault appender-ref refCONSOLE / appender-ref refASYNC_FILE_ALL / /springProfile /root /configuration3. 核心配置项逐行解读与自定义指南拿到模板后直接使用可能没问题但理解每个部分的作用才能让你在遇到问题时游刃有余。我们来拆解几个最关键的部分。3.1 滚动策略如何优雅地管理日志文件日志文件不能无限增长滚动策略是管理它的核心。模板中使用了TimeBasedRollingPolicy结合SizeAndTimeBasedFNATP这是最推荐的组合策略。rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicy fileNamePattern${LOG_HOME}/archive/${APPLICATION_NAME}-all.%d{yyyy-MM-dd}.%i.log.gz/fileNamePattern maxHistory30/maxHistory timeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATP maxFileSize100MB/maxFileSize /timeBasedFileNamingAndTriggeringPolicy totalSizeCap5GB/totalSizeCap /rollingPolicyfileNamePattern: 这里的%d{yyyy-MM-dd}表示按天滚动。%i是一个计数器当同一天内单个文件超过maxFileSize100MB时会生成-all.2023-10-27.0.log.gz-all.2023-10-27.1.log.gz这样的文件。.gz后缀表示Logback会自动使用GZIP压缩归档文件通常能减少70%的磁盘占用。maxHistory: 保留30天的历史日志。注意这里是按“文件名模式”识别的天数不是按文件修改时间。超过30天的归档文件会被自动删除。totalSizeCap: 这是第二道保险。假设某天日志量巨大产生了10个100MB的文件仅maxHistory可能仍会占用大量空间。totalSizeCap控制所有归档文件的总大小上限超出后会从最旧的文件开始删除。实操心得在生产环境中maxHistory和totalSizeCap必须同时设置。我曾遇到过因为只设置了maxHistory7但某天被攻击导致日志暴涨7天的日志就把磁盘撑满的情况。加上totalSizeCap‘20GB’后无论什么情况日志占用都不会超过这个阈值。3.2 异步日志性能与可靠性的权衡同步写日志意味着每次日志调用都要等待磁盘I/O完成在高并发场景下这是不可接受的性能瓶颈。异步Appender通过一个阻塞队列将日志生产业务线程和消费写磁盘线程解耦。appender nameASYNC_FILE_ALL classch.qos.logback.classic.AsyncAppender appender-ref refFILE_ALL / queueSize512/queueSize discardingThreshold0/discardingThreshold neverBlocktrue/neverBlock /appenderqueueSize: 队列容量。设置太小在日志高峰时容易丢日志设置太大会占用更多内存。对于普通应用512-1024是个安全范围。对于网关、高流量入口服务可以适当增大到2048。discardingThreshold: 丢弃阈值。默认0表示队列满时才根据neverBlock决定是阻塞还是丢弃。如果设置为20当队列剩余容量低于20时级别低于INFO的日志会被丢弃。这是用部分日志的丢失换取应用稳定性的策略。neverBlock: 队列满时的行为。true表示不阻塞生产者业务线程直接丢弃新日志false表示阻塞直到队列有空位。生产环境务必设为true否则一次慢磁盘I/O可能导致整个应用线程池卡死。踩坑记录早期我曾将neverBlock设为false在一次磁盘IO异常变慢时整个服务的所有HTTP线程都在等待日志队列导致服务完全无响应雪崩效应蔓延。改为true后虽然监控看到有少量日志丢失但服务本身保持了可用性。日志是为了辅助排查问题绝不能成为系统稳定性的单点。3.3 过滤器与Logger精准控制日志流向日志系统不是一股脑全收需要精细化的过滤和路由。LevelFilter级别过滤器用于FILE_ERRORAppender只抓取ERROR级别日志。这非常有用你可以将这个文件接入监控告警系统任何ERROR日志的产生都能第一时间被感知。ThresholdFilter阈值过滤器用于CONSOLEAppender只输出INFO及以上级别。这样在开发时控制台不会被大量的DEBUG日志刷屏保持清爽。Logger标签这是进行细粒度控制的利器。name属性指定包或类。com.example.myapp.mapper通常对应MyBatis的Mapper接口在调试SQL时设为DEBUG很有用。level属性覆盖其日志级别。additivity属性至关重要它默认为true表示此logger的日志事件在自身处理完后还会传递给根Loggerroot再次处理。这通常会导致日志被重复打印两次。所以当你为某个logger专门指定了appender通常需要设置additivityfalse来切断传递避免重复。4. 基于Spring Profile的多环境配置策略一套配置适应所有环境是理想状态。通过Spring Boot的Profile支持我们可以让Logback配置也“因地制宜”。模板中在根root标签内使用了springProfile标签root levelINFO springProfile namedev !-- 开发环境看控制台同时留文件记录 -- appender-ref refCONSOLE / appender-ref refASYNC_FILE_ALL / /springProfile springProfile nameprod !-- 生产环境只写文件且控制台不输出INFO避免被云平台采集产生费用 -- appender-ref refASYNC_FILE_ALL / appender-ref refASYNC_FILE_ERROR / /springProfile /root如何激活ProfileIDE中在运行配置的VM参数里加-Dspring.profiles.activedev。Jar包启动java -jar yourapp.jar --spring.profiles.activeprod。环境变量设置SPRING_PROFILES_ACTIVEprod。环境差异化配置要点开发环境控制台输出必不可少且最好是彩色、包含DEBUG级别可通过调整CONSOLE的ThresholdFilter实现。文件日志可保留用于追溯。测试环境类似开发但控制台级别可以设为INFO减少噪音。生产环境务必关闭或限制控制台输出。在K8s或云服务器中控制台输出stdout/stderr通常会被日志采集 agent如Fluentd, Logstash抓取上传到中心存储如ELK并按量计费。大量INFO日志会产生巨额费用。生产环境应只将必要的日志尤其是ERROR输出到文件并由采集agent从文件读取。5. 高级用法与常见问题排查5.1 集成Metrics与TraceId适用于微服务在分布式系统中一个请求流经多个服务如何串联所有日志你需要一个全局TraceId。首先确保你的项目引入了Spring Cloud Sleuth或类似链路追踪库。然后修改日志模式LOG_PATTERN加入TraceIdproperty nameLOG_PATTERN value%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] [%X{traceId:-},%X{spanId:-}] %-5level %logger{36} - %msg%n/%X{traceId}和%X{spanId}会从SLF4J的MDCMapped Diagnostic Context中取出Sleuth注入的ID。这样所有相关服务的日志都带有相同的traceId在日志平台中一键即可检索出整条调用链。5.2 遇到“logger context”问题怎么办一个经典的错误是LoggerFactory is not a Logback LoggerContext but Logback is on the classpath。这通常发生在Spring Boot项目中其根本原因是类路径下存在多个日志框架的绑定导致冲突。排查与解决步骤执行mvn dependency:tree | grep logback或Gradle对应命令检查依赖树。你很可能发现了不止一个Logback绑定比如同时存在logback-classic正确和log4j-over-slf4j可能带来冲突或者更常见的是某些依赖间接引入了log4j-coreApache Log4j2的核心。使用exclusions排除冲突依赖。在Maven中找到引入冲突jar的依赖项将其排除。dependency groupIdproblematic.group/groupId artifactIdproblematic-artifact/artifactId exclusions exclusion groupIdorg.apache.logging.log4j/groupId artifactIdlog4j-core/artifactId /exclusion exclusion groupIdorg.slf4j/groupId artifactIdslf4j-log4j12/artifactId /exclusion /exclusions /dependency检查src/main/resources目录确保没有意外的log4j2.xml或logback-test.xml文件存在它们可能会干扰主配置。终极验证在应用启动类里加一段代码打印当前日志绑定import org.slf4j.LoggerFactory; import ch.qos.logback.classic.LoggerContext; import org.slf4j.ILoggerFactory; public static void main(String[] args) { ILoggerFactory factory LoggerFactory.getILoggerFactory(); System.out.println(LoggerFactory class: factory.getClass()); if (factory instanceof LoggerContext) { System.out.println(Using Logback successfully.); } }正确的输出应该是Logback的LoggerContext。5.3 日志突然不输出或级别失效检查配置加载顺序Spring Boot加载logback-spring.xml优先于logback.xml。如果你两个文件都有且logback.xml没生效很可能是因为这个。建议统一使用logback-spring.xml以利用Profile特性。检查scan和scanPeriod模板开头设置了scantrue scanPeriod60 seconds这意味着Logback会每分钟检查配置文件是否被修改并重新加载。这在开发时很方便但在生产环境建议设为false避免不必要的性能开销和潜在的重载问题。检查Logger的继承与覆盖记住Logger配置是有继承关系的。com.example.myapp的级别设置会影响到com.example.myapp.service、com.example.myapp.service.impl等子包。如果子包logger没单独配置它会继承父包logger的级别。Root logger是所有logger的最终父节点。6. 生产环境部署检查清单在将应用部署上线前请对照此清单检查你的Logback配置[ ]日志路径LOG_HOME是否已从相对路径./logs改为绝对路径如/data/app/logs并确保应用运行用户对该目录有写权限。[ ]滚动与清理maxHistory如30天和totalSizeCap如20GB是否都已设置且数值合理[ ]异步配置文件Appender是否都已包装在AsyncAppender中neverBlock是否设为true[ ]生产Profileprodprofile的配置是否已移除或严格限制了控制台输出CONSOLEAppender[ ]ERROR日志分离是否配置了独立的FILE_ERRORAppender便于监控告警[ ]依赖冲突是否已通过dependency:tree排除掉了其他日志框架的绑定如log4j-core[ ]级别设置生产环境Root Logger级别是否至少为INFO是否已将第三方库如Spring, Hibernate的日志级别调整为WARN或ERROR以减少噪音[ ]TraceId集成如果是微服务日志模式中是否已加入%X{traceId}等字段这份模板和解读是我从无数次调试和线上问题中总结出来的结晶。它不是一个静态的答案而是一个动态的起点。最好的配置永远是适合你自己项目流量、架构和运维体系的配置。建议你先以此模板为基础跑起来然后在实际运行中观察日志的生成情况再回头来微调队列大小、滚动策略、级别设置等参数让它真正成为你得力的运维助手。

相关新闻

Java字符串空白字符处理全解析:从trim到strip再到性能优化

Java字符串空白字符处理全解析:从trim到strip再到性能优化

1. 项目概述:一个看似简单却暗藏玄机的问题在Java开发中,处理字符串几乎是每天都要做的事情。其中,移除字符串中的空白字符(Whitespace)——包括空格、制表符、换行符等——是一个高频且基础的操作。你可能觉得这有什么…

2026/10/21 1:12:18 阅读更多 →
atan2函数:从数学原理到工程实践,解决角度计算中的象限问题

atan2函数:从数学原理到工程实践,解决角度计算中的象限问题

1. 从“atan”到“atan2”:一个看似简单却至关重要的函数演进如果你写过代码,尤其是涉及到图形、游戏、机器人导航或者任何需要计算角度的程序,你大概率用过或者见过atan这个函数。它就是大名鼎鼎的反正切函数,给你一个对边比邻边…

2026/10/18 16:38:59 阅读更多 →
C盘告急、系统变卡?一份 Dism++ 系统优化实操手册帮你快速自救

C盘告急、系统变卡?一份 Dism++ 系统优化实操手册帮你快速自救

C盘告急、系统变卡?一份 Dism 系统优化实操手册帮你快速自救 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language 磁盘空间告急、系统更新反复失败、电脑…

2026/10/21 2:16:00 阅读更多 →

最新新闻

agent-skills:智能体技能抽象层的设计与工程实践

agent-skills:智能体技能抽象层的设计与工程实践

1. 从"agent-skills"这个标题能读出什么第一次看到"agent-skills"这个词,我脑子里蹦出来的不是某个具体框架,而是一类正在快速成型的东西:把智能体(agent)的能力拆成一块块可插拔、可复用、可组合…

2026/10/21 5:46:17 阅读更多 →
远程仓库与SSH公钥配置实战:Git Push/Pull从原理到排错

远程仓库与SSH公钥配置实战:Git Push/Pull从原理到排错

远程仓库、SSH公钥、git push、git pull,这串关键词看着像基础课,可真正上手时,不少人卡在公钥配好了仍在提示输密码、仓库建好了push却失败、分支名对不上这种小地方。这篇文章就按我平时从零搭一个项目仓库的真实顺序来写:注册账…

2026/10/21 5:46:17 阅读更多 →
AI辅助文献综述写作:三步式流程设计与实践指南

AI辅助文献综述写作:三步式流程设计与实践指南

文献综述这件事,我相信很多人都被它折磨过。尤其当你面对几十上百篇论文,既要把核心观点提炼出来,又要把它们组织成有逻辑的叙述,还要保证引用规范不出错,光是来回切换文档就能耗掉大半天。最近我认真体验了“百考通”…

2026/10/21 5:46:17 阅读更多 →
2026设备巡检APP口碑榜解析:选型避坑与落地清单

2026设备巡检APP口碑榜解析:选型避坑与落地清单

车间里的巡检工作,这几年变化真的很大。以前老师傅拎着纸质点检表,一支笔走一圈,回来再吭哧吭哧填Excel,领导问起来只能翻本子。到了2026年,市面上设备巡检APP多得能拉好几屏,应用商店里随便搜“设备巡检”…

2026/10/21 5:46:17 阅读更多 →
Git远程仓库入门:从本地commit到GitHub push的完整教程

Git远程仓库入门:从本地commit到GitHub push的完整教程

第一次在GitHub上创建远程仓库的时候,我以为“提交本地仓库”就是把文件拖上去,像往网盘上传一样简单。真正动手才发现,GitHub远程仓库背后的逻辑完全是另一套:你需要在本地先把改动固化成一条条commit记录,再用git re…

2026/10/21 5:46:17 阅读更多 →
零后端个人导航站实战:用JSON与静态托管构建信息地图式书签管理

零后端个人导航站实战:用JSON与静态托管构建信息地图式书签管理

每个人都有过这样的经历:收藏夹里躺着一百多个网址,平时根本不会打开,真到要找某个工具的时候,又得在浏览器历史记录里翻半天。我做了个项目,名字叫“lingbot-map”,简单说就是一个个人网络书签地图站&…

2026/10/21 5:45:17 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

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

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 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/20 10:02:08 阅读更多 →
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/20 9:50: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/20 9:50:45 阅读更多 →