Jackson序列化LocalDateTime:从数组乱码到全局配置的完整指南
1. 从一个接口报错说起为什么LocalDateTime在JSON里变成了奇怪的样子第一次遇到这个问题是在一个前后端联调的场景里。后端接口返回了一个包含时间字段的对象前端同学截图过来问我“你这个createTime怎么是一串数组”我一看返回的JSON时间字段变成了这样{ createTime: [2024, 3, 15, 14, 30, 25] }不是预期的2024-03-15 14:30:25也不是时间戳而是一个莫名其妙的数组。更诡异的是有些场景下它又变成了一个带时区的长字符串还有些场景直接抛出了反序列化异常。同一个LocalDateTime字段在不同接口、不同配置下表现完全不一样这就是Jackson处理Java 8时间类型时最典型的“薛定谔的序列化”。这个问题的本质是Jackson在默认情况下对LocalDateTime这类java.time类型并没有内置一套“人类可读”的序列化规则。在Jackson 2.x的早期版本里java.time支持是通过单独的模块jackson-datatype-jsr310提供的如果没有注册这个模块Jackson会把LocalDateTime当成一个普通Bean来拆解于是你就看到了年月日时分秒被拆成数组的结果。而一旦注册了模块但没配置格式它又会默认输出ISO-8601标准格式比如2024-03-15T14:30:25中间带个T前端同学又得额外处理。所以这篇文章要解决的问题非常具体在JSON传输场景下如何让LocalDateTime按照我们期望的格式序列化和反序列化并且保证前后端、服务与服务之间的时间字段能对得上。不管你是刚接触Spring Boot的新手还是已经踩过几次坑的老手这里面的配置细节、版本差异、时区陷阱和全局与局部配置的取舍都值得系统梳理一遍。接下来我会从依赖引入、全局配置、字段级注解、反序列化容错、时区处理几个层面把这件事彻底讲透。2. 先搞清楚Jackson到底怎么“看待”LocalDateTime2.1 默认行为没有模块时它把时间当普通对象拆很多人以为Jackson天生就认识LocalDateTime其实不是。Jackson的核心包jackson-databind只负责通用的Java Bean序列化对于java.time包下的类型它并不知情。如果你只引入了spring-boot-starter-web在较新的Spring Boot版本里它已经帮你传递依赖了jackson-datatype-jsr310但如果你用的是纯Jackson或者老版本就需要手动加。没有注册JSR-310模块时Jackson会调用LocalDateTime的getter方法把getYear()、getMonthValue()、getDayOfMonth()、getHour()、getMinute()、getSecond()这些值拼成一个数组。这就是为什么你看到的是[2024,3,15,14,30,25]。这个行为在反序列化时更麻烦因为Jackson不知道这个数组该怎么还原成LocalDateTime通常会直接抛InvalidDefinitionException。2.2 注册模块之后ISO-8601是默认但不是唯一当你引入了jackson-datatype-jsr310并注册了JavaTimeModule序列化结果会变成ISO-8601格式2024-03-15T14:30:25。这个格式是国际标准机器解析没问题但国内很多前端组件、报表工具、数据库导入功能更习惯yyyy-MM-dd HH:mm:ss这种带空格的格式。而且ISO格式里的T在URL参数、日志检索时也容易引起歧义。这里有个容易被忽略的点注册模块和禁用时间戳写入是两件事。Jackson有一个SerializationFeature.WRITE_DATES_AS_TIMESTAMPS特性默认是开启的。如果你只注册了模块但没关掉这个特性LocalDateTime在某些版本下仍然可能被写成时间戳数组。所以完整的配置需要两步注册模块 关闭时间戳写入。2.3 版本差异Spring Boot 2.x和3.x的默认配置不一样Spring Boot 2.x默认使用的Jackson版本较低JavaTimeModule的注册需要手动配置或者依赖自动配置。到了Spring Boot 3.xJackson升级到2.13以上自动配置更加完善但默认格式仍然是ISO-8601。另外Spring Boot 3.x对jackson-datatype-jsr310的依赖传递更加明确一般不需要手动加版本号。我在实际项目里遇到过一种情况同一个项目里有的模块用Spring Boot 2.7有的用3.1结果时间字段格式不统一。排查后发现是2.7的模块里有人手动注册了JavaTimeModule但没设置格式而3.1的模块用了全局配置。这种混合版本的环境下统一配置比单点修复更重要。3. 全局配置方案一劳永逸还是埋下隐患3.1 通过ObjectMapper定制全局格式最直接的方式是自定义一个ObjectMapperBean注册JavaTimeModule并设置序列化器和反序列化器。下面是一个典型的配置Configuration public class JacksonConfig { private static final String DATE_TIME_PATTERN yyyy-MM-dd HH:mm:ss; private static final String DATE_PATTERN yyyy-MM-dd; private static final String TIME_PATTERN HH:mm:ss; Bean public ObjectMapper objectMapper() { ObjectMapper mapper new ObjectMapper(); JavaTimeModule module new JavaTimeModule(); DateTimeFormatter dateTimeFormatter DateTimeFormatter.ofPattern(DATE_TIME_PATTERN); DateTimeFormatter dateFormatter DateTimeFormatter.ofPattern(DATE_PATTERN); DateTimeFormatter timeFormatter DateTimeFormatter.ofPattern(TIME_PATTERN); module.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(dateTimeFormatter)); module.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(dateTimeFormatter)); module.addSerializer(LocalDate.class, new LocalDateSerializer(dateFormatter)); module.addDeserializer(LocalDate.class, new LocalDateDeserializer(dateFormatter)); module.addSerializer(LocalTime.class, new LocalTimeSerializer(timeFormatter)); module.addDeserializer(LocalTime.class, new LocalTimeDeserializer(timeFormatter)); mapper.registerModule(module); mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); return mapper; } }这段代码做了几件事为LocalDateTime、LocalDate、LocalTime分别指定了格式关闭了时间戳写入同时关闭了未知属性报错。注意LocalDateTimeDeserializer的构造参数它接收一个DateTimeFormatter这意味着反序列化时也必须严格匹配这个格式否则会抛异常。3.2 全局配置的副作用第三方库和Feign客户端可能不买账全局配置看起来很美但有一个坑它只对你自己的ObjectMapper生效。如果你用了Feign做服务间调用Feign默认有自己的编码器可能不会用你定义的ObjectMapper。同样Redis的序列化器、MQ的消息转换器它们各自有独立的序列化配置。我见过一个项目Controller返回的时间格式是对的但通过Feign调用另一个服务时时间字段又变成了ISO格式原因就是Feign的Decoder没有使用全局ObjectMapper。解决办法是显式地把ObjectMapper注入到Feign的配置里或者使用SpringEncoder和SpringDecoder它们会自动使用Spring上下文中的ObjectMapper。对于Redis需要单独配置GenericJackson2JsonRedisSerializer并传入自定义的ObjectMapper。3.3 用配置文件替代硬编码application.yml里的spring.jacksonSpring Boot提供了一种更轻量的方式在application.yml里直接配置spring: jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT8 serialization: write-dates-as-timestamps: false deserialization: fail-on-unknown-properties: false这种方式的优点是简单不需要写Java配置类。但它的局限也很明显date-format只对java.util.Date和Calendar生效对LocalDateTime并不直接起作用。真正让LocalDateTime按这个格式输出还是需要JavaTimeModule的配合。所以很多项目里这两种方式是混用的结果就是配置看起来生效了但实际输出还是ISO格式。我的建议是如果项目里LocalDateTime用得比较多直接用Java配置类显式注册模块和格式不要依赖spring.jackson.date-format这个配置项。它容易给人造成“已经配置好了”的错觉实际上对java.time类型无效。4. 字段级注解灵活但容易失控的局部方案4.1 JsonFormat注解的正确用法如果不想全局改格式可以在字段上单独加JsonFormatpublic class OrderVO { JsonFormat(pattern yyyy-MM-dd HH:mm:ss, timezone GMT8) private LocalDateTime createTime; JsonFormat(pattern yyyy-MM-dd) private LocalDate deliveryDate; }JsonFormat的pattern属性指定格式timezone指定时区。对于LocalDateTime时区属性其实不起作用因为它本身不带时区信息。但对于ZonedDateTime或Date时区就很重要了。这里有一个常见的误解JsonFormat的timezone属性对LocalDateTime的反序列化没有影响。如果你传入的字符串是2024-03-15 14:30:25它就直接解析成对应的本地时间不会做任何时区转换。所以不要指望通过timezone来解决跨时区问题LocalDateTime本身就不适合表达跨时区的时间点。4.2 注解与全局配置的优先级当全局配置和字段注解同时存在时字段注解优先级更高。这意味着你可以在全局配置里设置一个默认格式然后在个别字段上用JsonFormat覆盖。这个特性在对接第三方接口时很有用大部分字段用统一格式个别字段按对方要求单独设置。但要注意如果全局配置里注册了LocalDateTimeSerializer而字段上又加了JsonFormatJackson会优先使用注解里的格式。这个行为在大多数情况下是符合预期的但如果你在全局配置里做了复杂的自定义序列化逻辑注解可能会绕过这些逻辑。4.3 自定义序列化器什么时候需要自己写有些场景下JsonFormat和全局配置都满足不了需求。比如你需要根据不同的环境输出不同的格式或者需要在序列化时对时间做特殊处理比如空值转默认时间、时间戳转本地时间等。这时候就需要自定义序列化器public class CustomLocalDateTimeSerializer extends JsonSerializerLocalDateTime { private static final DateTimeFormatter FORMATTER DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss); Override public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException { if (value null) { gen.writeString(); } else { gen.writeString(value.format(FORMATTER)); } } }然后在字段上使用JsonSerialize(using CustomLocalDateTimeSerializer.class)。自定义序列化器的好处是逻辑完全可控坏处是代码量增加而且每个需要特殊处理的字段都要单独加注解。我的经验是只有在全局配置和JsonFormat都无法满足时才用自定义序列化器否则容易导致项目里序列化逻辑分散后期维护困难。5. 反序列化才是真正的坑格式不匹配、空值、时区偏移5.1 前端传参格式与后端期望不一致序列化的问题通常一眼就能看出来反序列化的问题往往更隐蔽。前端传2024-03-15 14:30:25后端配置的是ISO格式结果直接抛DateTimeParseException。或者前端传的是时间戳1710484225000后端配置的是字符串格式同样解析失败。解决这个问题的思路有两种一是统一前后端格式约定在接口文档里明确写清楚时间字段的格式二是让反序列化器兼容多种格式。第一种方案更规范但需要前后端配合第二种方案更灵活但实现起来复杂一些。我通常会在项目里做一个兼容性反序列化器支持yyyy-MM-dd HH:mm:ss、yyyy-MM-ddTHH:mm:ss和纯数字时间戳三种格式。实现方式是在deserialize方法里先判断字符串特征再选择对应的解析方式。这样即使前端同学偶尔传了ISO格式接口也不会直接报错。5.2 空字符串和null的处理前端表单里时间字段没填时经常传空字符串而不是null。Jackson默认的反序列化器遇到空字符串会抛异常因为LocalDateTime.parse()无法解析。解决办法是在自定义反序列化器里判断空字符串直接返回nullOverride public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException { String text p.getText(); if (text null || text.trim().isEmpty()) { return null; } // 继续解析逻辑 }这个细节看起来很小但在实际项目里非常常见。尤其是前后端分离的项目前端组件库比如某些日期选择器在清空时会传空字符串后端如果不处理就会报400错误。5.3 时区偏移LocalDateTime不该背这个锅有一个很典型的场景服务器部署在UTC时区用户在东八区。用户提交2024-03-15 14:30:25后端用LocalDateTime接收存到数据库也是14:30:25。但另一个服务从数据库读取后用ZonedDateTime转换时加了8小时变成了22:30:25。问题出在LocalDateTime本身不携带时区信息不同服务对它做时区转换时就会产生偏移。LocalDateTime的正确使用场景是不需要跨时区转换的本地时间比如“营业时间”、“课程开始时间”这类固定本地时间。如果需要表达一个绝对时间点比如订单创建时间应该用Instant或ZonedDateTime并在序列化时统一转成UTC或带时区的格式。很多团队在项目初期用LocalDateTime存所有时间后期做国际化时才发现时区问题改起来非常痛苦。6. 一套可落地的完整配置方案与验证方法6.1 依赖检查确保jsr310模块存在第一步是确认项目里有没有jackson-datatype-jsr310。在Maven项目里执行mvn dependency:tree | grep jackson-datatype-jsr310如果没有输出说明需要手动添加依赖。Spring Boot项目一般不需要指定版本号由父POM管理dependency groupIdcom.fasterxml.jackson.datatype/groupId artifactIdjackson-datatype-jsr310/artifactId /dependency6.2 完整配置类兼顾序列化和反序列化下面是我在多个项目里验证过的一套配置支持LocalDateTime、LocalDate、LocalTime并且反序列化时兼容空字符串和多种格式Configuration public class JacksonConfig { private static final DateTimeFormatter DATE_TIME_FORMATTER DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss); private static final DateTimeFormatter DATE_FORMATTER DateTimeFormatter.ofPattern(yyyy-MM-dd); private static final DateTimeFormatter TIME_FORMATTER DateTimeFormatter.ofPattern(HH:mm:ss); Bean public Jackson2ObjectMapperBuilderCustomizer jacksonCustomizer() { return builder - { builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DATE_TIME_FORMATTER)); builder.deserializerByType(LocalDateTime.class, new CompatibleLocalDateTimeDeserializer()); builder.serializerByType(LocalDate.class, new LocalDateSerializer(DATE_FORMATTER)); builder.deserializerByType(LocalDate.class, new LocalDateDeserializer(DATE_FORMATTER)); builder.serializerByType(LocalTime.class, new LocalTimeSerializer(TIME_FORMATTER)); builder.deserializerByType(LocalTime.class, new LocalTimeDeserializer(TIME_FORMATTER)); builder.featuresToDisable( SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES ); }; } }这里用了Jackson2ObjectMapperBuilderCustomizer它是Spring Boot提供的扩展点比直接定义ObjectMapperBean更优雅因为它不会覆盖Spring Boot的其他自动配置。6.3 验证清单用单元测试确认行为配置完成后不要只靠手动调接口验证。写几个单元测试覆盖以下场景测试场景输入期望输出序列化LocalDateTimeLocalDateTime.of(2024,3,15,14,30,25)2024-03-15 14:30:25反序列化标准格式2024-03-15 14:30:25对应LocalDateTime对象反序列化ISO格式2024-03-15T14:30:25对应LocalDateTime对象反序列化空字符串null反序列化nullnullnull序列化LocalDateLocalDate.of(2024,3,15)2024-03-15用ObjectMapper的writeValueAsString和readValue方法逐个验证。这些测试看起来简单但能帮你提前发现格式不匹配、空值处理、时区偏移等问题。我在项目里通常会把这类测试放在JacksonConfigTest里每次修改配置后跑一遍避免影响其他接口。6.4 踩坑记录那些年我遇到过的奇葩问题第一个坑是Lombok的Data注解与Jackson的冲突。有些版本的Lombok生成的getter方法名不符合Jackson的命名规范导致序列化时字段被忽略。解决办法是显式加JsonProperty注解或者升级Lombok版本。第二个坑是Spring Boot DevTools的热加载导致配置类不生效。修改了JacksonConfig后DevTools重启了应用但ObjectMapper还是旧的。这种情况需要手动触发一次完整重启或者清理target目录。第三个坑是多个ObjectMapperBean导致注入混乱。项目里如果同时存在自定义的ObjectMapper和Spring Boot自动配置的ObjectMapper注入时可能拿到不是你想要的那个。解决办法是用Primary注解标记主ObjectMapper或者统一用Jackson2ObjectMapperBuilderCustomizer来定制。第四个坑是数据库字段类型与Java类型不匹配。MySQL的datetime类型没有时区信息用LocalDateTime映射没问题但如果用timestamp类型JDBC驱动会做时区转换可能导致时间偏移。这个问题的根源不在Jackson而在数据库层面但表现出的症状和序列化问题很像容易混淆。7. 不同场景下的选型建议别用一把锤子敲所有钉子7.1 纯后端服务间调用ISO-8601更稳妥如果接口只给内部服务调用不涉及前端展示我建议直接用ISO-8601格式。原因很简单它是国际标准各种语言的解析库都支持不会因为格式约定不一致导致解析失败。而且ISO格式自带T分隔符不容易和日期格式混淆。在这种场景下只需要注册JavaTimeModule并关闭时间戳写入即可不需要自定义格式。7.2 前后端联调统一用yyyy-MM-dd HH:mm:ss前端展示场景下yyyy-MM-dd HH:mm:ss是最符合国内用户习惯的格式。配置好全局序列化器后前端拿到字符串可以直接展示不需要额外转换。但要注意前端提交时也必须用同样的格式否则反序列化会失败。建议在接口文档里明确标注时间字段的格式并在前端封装统一的日期格式化工具。7.3 对接第三方接口按对方要求单独配置第三方接口的时间格式往往千奇百怪有的用时间戳有的用ISO有的用yyyy/MM/dd。这种情况下全局配置可能不适用需要在对应的DTO字段上用JsonFormat单独指定格式。如果第三方接口的时间格式不固定可以考虑用String类型接收然后在业务层手动解析这样灵活性最高但代码会啰嗦一些。7.4 大数据量导出场景时间戳可能更省空间在数据导出、日志存储等场景下时间字段用时间戳long类型存储比字符串更省空间也更容易做范围查询。Jackson可以通过开启WRITE_DATES_AS_TIMESTAMPS来输出时间戳但要注意LocalDateTime转时间戳需要指定时区否则会有歧义。这种场景下建议用Instant而不是LocalDateTime因为Instant本身就是时间戳的Java表示。8. 写在最后一些个人经验和小技巧关于Jackson处理LocalDateTime这件事我最大的体会是配置要显式不要依赖默认行为。Jackson的默认行为在不同版本、不同模块组合下表现不一致显式注册模块、显式指定格式、显式处理空值能避免很多“玄学”问题。另外一个小技巧如果你不确定当前项目的Jackson配置到底生效了没有可以写一个简单的Controller返回一个包含各种时间类型的对象然后直接看JSON输出。这比翻文档、查源码快得多。我通常在项目初始化阶段就做这个验证把结果截图发到团队群里作为前后端的时间格式约定依据。还有一个容易忽略的点Jackson的配置对RequestBody和ResponseBody都生效但对RequestParam不生效。如果你用RequestParam接收时间参数需要额外加DateTimeFormat注解否则Spring会用默认的转换器可能报类型转换错误。这个坑我在早期项目里踩过好几次后来养成了习惯只要是时间类型的请求参数不管是body还是param都显式加注解。最后如果你的项目正在从java.util.Date迁移到java.time建议分阶段进行先在新接口里用LocalDateTime老接口保持不动等新接口稳定后再逐步替换老接口。一次性全量替换的风险太大尤其是涉及到数据库映射和第三方接口的地方很容易出现时间偏移或格式不匹配的问题。

相关新闻

环保科技网站开发:Vue+SpringBoot全栈实践

环保科技网站开发:Vue+SpringBoot全栈实践

1. 项目背景与选题价值环保科技公司网站的设计与实现这个选题,源于当前环保行业数字化转型的迫切需求。随着公众环保意识提升和政策法规趋严,环保科技企业需要通过专业化的线上平台展示技术实力、服务案例和行业解决方案。这类网站不同于普通企业官网&am…

2026/10/14 0:18:47 阅读更多 →
MATLAB实现配电网二阶锥松弛最优潮流计算

MATLAB实现配电网二阶锥松弛最优潮流计算

1. 项目背景与核心价值配电网最优潮流(OPF)问题是电力系统运行中的经典优化命题。传统交流最优潮流模型由于非凸非线性特性,求解难度大且难以保证全局最优性。二阶锥松弛(Second-Order Cone Relaxation, SOCP)技术通过…

2026/10/14 0:17:46 阅读更多 →
tcpreplay 安装依赖全解析:libpcap、静态编译与版本冲突排查

tcpreplay 安装依赖全解析:libpcap、静态编译与版本冲突排查

简介:该资源是面向Linux运维及网络测试开发人员的离线安装工具包,解决内网或无外网环境下部署tcpreplay时依赖库难以获取的问题。压缩包共4个文件,其中包含gcc编译工具链的gz压缩包、libpcap源码tar包,以及一键安装脚本sh文件。整…

2026/10/14 0:17:46 阅读更多 →

最新新闻

Python第3章练习题解析:数据类型、字符串与格式化输出避坑指南

Python第3章练习题解析:数据类型、字符串与格式化输出避坑指南

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

2026/10/14 1:07:04 阅读更多 →
ESP32S3 Dev Module:Arduino兼容的原生USB嵌入式开发新范式

ESP32S3 Dev Module:Arduino兼容的原生USB嵌入式开发新范式

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

2026/10/14 1:07:04 阅读更多 →
高位数阶乘计算:MATLAB、Python、C三语言实现与性能对比

高位数阶乘计算:MATLAB、Python、C三语言实现与性能对比

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

2026/10/14 1:07:04 阅读更多 →
element-react Radio 单选框组件详解:受控选中、Group 聚合与 Button 样式的源码级解析

element-react Radio 单选框组件详解:受控选中、Group 聚合与 Button 样式的源码级解析

前端UI组件设计系统 【免费下载链接】element-react Element UI 项目地址: https://gitcode.com/gh_mirrors/el/element-react 点击查看 免费下载 本篇技术文章围绕 element-react(Element UI for React,当前仓库版本 1.4.34)的 …

2026/10/14 1:07:04 阅读更多 →
密码与加密技术复习指南:从对称加密到PKI的网络安全知识框架

密码与加密技术复习指南:从对称加密到PKI的网络安全知识框架

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

2026/10/14 1:07:04 阅读更多 →
Dart List实战指南:从增删改查到Flutter状态管理踩坑总结

Dart List实战指南:从增删改查到Flutter状态管理踩坑总结

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

2026/10/14 1:06:04 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战: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/13 22:01:27 阅读更多 →
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 阅读更多 →