Flutter × OpenHarmony 宿舍管理系统:架构设计与跨端通信实践
每年九月学校宿舍管理员的群里都是同一幅景象新生拖着行李箱排队登记宿管阿姨翻着纸质表格核对房间信息分配结果靠喊、靠贴纸条。我参与搭建这套基于 Flutter × OpenHarmony 的新生宿舍管理系统时最大的感受是业务本身不复杂复杂的是设备环境、数据一致性和值班老师的使用习惯。这套系统要跑在宿舍楼门禁平板、宿管值班室的老安卓设备、以及后续可能替换的 OpenHarmony 设备上所以技术栈选型就成了整个项目最关键的第一步。这篇文章我会把整体架构、模块划分、数据结构设计和跨端通信的完整方案拆开来讲。重点不是给你看一堆理论图而是直接给出我在设计时踩过的坑、反复权衡过的取舍以及最后落到代码里的具体做法。如果你正在做校园类管理系统或者准备在 Flutter 里对接 OpenHarmony 原生能力这篇内容应该能帮你少走不少弯路。1. 为什么把 Flutter 和 OpenHarmony 凑在一起一次并不意外的选型1.1 这个组合解决的现实问题先说背景。学校场景里的设备比大家想象的更碎片化宿舍楼下有门禁平板楼道里有信息展示屏值班室里有积灰多年的安卓平板而随着设备更新新采购的门禁一体机很多跑的是 OpenHarmony 系统。如果宿舍管理系统只做安卓版本那么新设备上就跑不了如果只做 OpenHarmony 原生版本那值班室的老设备又得全部淘汰。Flutter 在这里的价值是跨平台 UI 的一致性。Flutter 的渲染引擎是自绘的不依赖系统原生控件所以同一套 Widget 树在安卓、OpenHarmony 甚至嵌入式设备上表现都一致。这意味着我只需要维护一套业务代码真正需要单独处理的只有原生能力调用部分。OpenHarmony 侧则提供了完整的应用生命周期、系统服务和设备能力接口。宿舍管理涉及到的通知推送、网络状态监听、扫码、设备信息获取在 OpenHarmony 上都有对应 API 可以走通。Flutter 通过 Platform Channel 和 OpenHarmony 原生侧做桥接就能把两边能力串起来。1.2 Flutter 在 OpenHarmony 上运行的底层逻辑很多人一听到 Flutter 跑在 OpenHarmony 上就觉得很玄乎其实原理并不复杂。Flutter 分为两层一个是 Dart 虚拟机加框架层一个是 C 实现的引擎层负责渲染、文字排版和事件处理。OpenHarmony 的适配工作主要就是把这个引擎编译到 OpenHarmony 系统上同时提供一套鸿蒙侧的插件注册和消息分发机制。应用启动后Flutter 的 UI 层独立绘制原生能力通过 MethodChannel 做异步调用。比如我要拿到设备型号static const MethodChannel _deviceChannel MethodChannel(com.example.dormitory/device); FutureString getDeviceModel() async { final String model await _deviceChannel.invokeMethod(getDeviceModel); return model; }鸿蒙侧对应的实现用 ArkTS 写一个 MethodChannel 的处理回调即可。这里不贴完整工程代码核心逻辑就是把原生能力注册进通道里前端调用方法名和参数类型保持一致就行。Flutter 官方对这个适配层的支持已经比较成熟但也有不少第三方插件没有鸿蒙侧实现这一块我在后面实操部分会专门讲。1.3 什么情况下我不会推荐这个组合技术选型不能只看优点。如果目标设备全部是纯 HarmonyOS NEXT 生态直接用 ArkTS 写原生应用会更顺因为 Flutter 在鸿蒙上的第三方生态还是偏弱很多现成的 Flutter 包跑不起来需要自己补原生实现。另外如果业务里有大量强交互的原生体验需求比如复杂的地图手势、高性能视频编辑也不建议用 Flutter 强行包一层。宿舍管理系统这种以表单、列表、状态流转为主的业务正好是 Flutter 的舒适区用它性价比最高。提示Flutter × OpenHarmony 适合的业务特征可以总结为表单密集、数据展示为主、跨端部署要求高、原生能力调用量有限。超过这个范围桥梁成本会快速上升。2. 系统整体架构分层、模块和一次注册的完整链路2.1 四层架构与职责边界我做这套系统时把架构拆成了四层层与层之间单向依赖禁止跨层调用。好处是后面替换数据库、换推送服务商的时候不用动 UI 代码。表现层Flutter Widgets、页面路由、状态管理。业务层各功能模块的 Service 类处理业务规则、状态流转。数据层本地 SQLite 缓存、API 客户端、数据模型映射。平台层OpenHarmony 原生能力适配包括通道注册、系统服务调用。这里想重点说下业务层。很多项目写着写着就把业务逻辑堆到了 Widget 里一个按钮的 onPressed 里塞了鉴权、表单校验、接口调用、错误提示四件事。我的做法是每个模块对应一个 Service 类比如AssignService专门负责宿舍分配RepairService专门负责报修单流转。Widget 只负责调用 Service 并展示状态Service 内部处理所有异常分支。2.2 功能模块划分宿舍管理系统涉及的角色有新生、宿管员、辅导员和系统管理员我从业务域做了拆解模块核心功能涉及的设备端新生注册模块录取信息校验、人脸录入、基本信息完善门禁平板、手机宿舍分配模块自动分配、手动调整、床位查询值班室平板报修工单模块提交报修、指派维修、进度反馈手机、值班室平板考勤模块晚归记录、熄灯查寝、请假关联门禁平板公告模块宿舍公告发布、已读回执楼道展示屏、手机管理后台模块楼栋管理、房间管理、权限配置Web 管理端每个模块内部都遵循同样的模式页面发起事件、Service 处理规则、数据层做持久化。这样设计的好处是新生注册和宿舍分配可以并行开发互不干扰。2.3 一次新生注册的完整链路追踪以最常见的场景为例新生到校后扫码进入注册页面完整链路是这样的新生输入学号和身份证号Flutter 端调用AuthService.verifyStudent()。数据层通过 API 请求新生入学数据库校验信息一致性。校验通过后进入宿舍预选页面服务端返回可选宿舍列表。新生提交选择AssignService执行分配事务占用床位、创建入住记录、同步公告。门禁平板端通过数据同步拉取最新的入住名单完成人脸门禁授权。这里的关键是第 4 步不能只改本地状态。分配事务涉及多个数据表的写入必须保证原子性否则会出现床位显示已占用但入住记录没生成的情况。我在服务端用事务包裹了这组操作并且在事务提交前加了冲突检测具体 SQL 我会在下一节数据结构部分展开。前端状态管理我用的是 Riverpod。选择它主要是因为宿舍分配存在跨页面共享状态比如学生选了房间后宿舍详情页和分配结果页都要读取同一个分配单数据。用 Riverpod 的ProviderScope可以做到全局共享同时它的FutureProvider对异步接口的状态处理非常友好。路由方面没有引入太重的东西用 Flutter 自带的go_router做嵌套导航保证登录态、权限和页面栈的绑定关系清晰。3. 数据结构设计从宿舍业务场景反推表结构3.1 核心实体关系与字段设计数据结构是整个系统最值得认真设计的部分。宿舍管理业务的实体关系比想象中要多光是一个学生住在哪里就涉及学生、楼层房间、床位、入住记录四张表。我先把核心表结构列出来再逐个分析设计原因。学生表 student字段类型说明student_idINTEGER PK内部主键student_noVARCHAR(32) UNIQUE学号业务唯一标识nameVARCHAR(32)姓名genderTINYINT1男 2女collegeVARCHAR(64)学院class_nameVARCHAR(64)班级phoneVARCHAR(16)手机号enroll_yearINT入学年份face_tokenVARCHAR(128)人脸特征值标识created_atBIGINT创建时间宿舍楼 dormitory_building字段类型说明building_idINTEGER PK主键building_noVARCHAR(16)楼栋号building_nameVARCHAR(32)楼栋名称gender_typeTINYINT男生楼/女生楼/教职工房间 room_info字段类型说明room_idINTEGER PK主键building_idINTEGER所属楼栋room_noVARCHAR(16)房间号room_typeTINYINT4人间/6人间bed_countINT标准床位数is_mixedTINYINT是否混合住宿床位 bed字段类型说明bed_idINTEGER PK主键room_idINTEGER所属房间bed_noVARCHAR(8)床位编号bed_statusTINYINT0空闲 1占用 2维修中入住记录 assignment_record字段类型说明record_idINTEGER PK主键student_idINTEGER学生bed_idINTEGER床位check_in_timeBIGINT入住时间check_out_timeBIGINT退宿时间NULL表示在住reasonVARCHAR(128)入住/调宿原因operator_idINTEGER操作人statusTINYINT生效中/已退宿这里最关键的设计决策是学生和床位的关系不是直接写死而是通过入住记录表来维护。为什么不直接在 student 表加一个 room_id 字段因为学生可能大二调宿也可能因为休学退宿如果只在学生表上改字段历史数据就丢了。用记录表的好处是可以看到每个学生住过哪个床位、住过多久将来做宿舍利用率统计也方便。3.2 围绕床位分配的关键约束设计床位分配是整个系统最容易出数据脏乱的环节。两个人同时抢最后一个床位、一个床位被重复分配、学生调宿时旧记录没关新记录就开了这些都属于并发写问题。我在服务端分配接口里做了两层保护。第一层是乐观锁对床位记录增加版本号字段更新时带上旧版本号作为条件UPDATE bed SET bed_status 1, version version 1 WHERE bed_id ? AND bed_status 0 AND version ?;如果更新的行数为 0说明床位已经被占直接返回床位已满错误。第二层是入住记录的时间重叠检测避免同一个床位在时间上出现交叉的有效记录SELECT COUNT(*) FROM assignment_record WHERE bed_id ? AND status 1 AND (check_out_time IS NULL OR check_out_time ?);凡是建立新入住记录前先跑一遍这个查询确保时间上不存在冲突。实际开发中我把这两层校验和插入记录放在同一个数据库事务里保证了原子性。3.3 报修工单的状态流转设计报修工单表面上是一个简单的增删改查但状态流转设计的合理与否直接影响使用体验。我用了一张状态流转表来定义所有允许的路径状态允许流转到触发条件PENDING 待处理PROCESSING, CANCELLED维修员接单 / 学生取消PROCESSING 处理中COMPLETED, FAILED维修完成 / 维修失败COMPLETED 已完成EVALUATED学生评价EVALUATED 已评价终态-CANCELLED 已取消终态-FAILED 已失败PENDING重新派单这个设计比简单用枚举字段更严谨的地方在于它把状态跳转的合法性约束到了代码里。前端不是所有状态都展示按钮而是根据当前工单状态实时计算可执行操作。后端的更新 SQL 也带上了当前状态条件比如只有 PENDING 状态下才能执行取消操作防止接口被绕过。3.4 数据分析预留的字段宿舍管理系统上线后必然会面临统计需求比如各楼栋入住率、晚归高频时段、报修类型分布。这些统计如果靠运行时聚合数据量大了会拖慢主业务。我的做法是在写入时就做好冗余。床位表维护occupied_count字段分配和退宿时同步更新查询入住率时直接读字段不用 count。晚归考勤表写入时就打好标签区分正常晚归请假晚归违规未归统计时直接按标签分组。每张业务表都保留created_at和updated_at全部用毫秒级时间戳。跨端开发时毫秒时间戳比字符串时间可读性和排序性能都好很多也避免了不同端时间格式化的兼容问题。4. 跨端通道与数据同步Flutter 层和 OpenHarmony 侧的协作细节4.1 Platform Channel 在 OpenHarmony 上的对接Flutter 与原生侧通信有三类通道MethodChannel用于方法调用EventChannel用于事件流推送BasicMessageChannel用于双向消息收发。我在宿舍管理系统里用得最多的是前两种。MethodChannel适合请求-响应模式比如获取设备序列号、发起扫码、调用系统通知。鸿蒙侧的注册方式在 ArkTS 里以伪代码表示如下let channel new MethodChannel(com.example.dormitory/device); channel.setMethodCallHandler((call) { if (call.method getDeviceModel) { return getDeviceModel(); } else if (call.method openScanner) { return startScanner(); } });EventChannel适合需要持续监听的原生事件比如网络状态变化、门禁硬件触发的人脸识别结果。Flutter 端通过EventChannel.receiveBroadcastStream()接收连续事件在监听回调里更新页面状态。这里有一个很容易踩的坑通道名必须全局唯一。如果两个插件注册了同一个通道名后面的注册会覆盖前面的导致调用时行为完全无法预期。我的规范是项目前缀 模块名比如com.example.dormitory/device并且在文档里登记所有已使用的通道名避免重复。通道数据类型的限制也要注意。MethodChannel 支持 int、double、String、Bool、List、Map 这些基础类型但自定义对象必须序列化成 JSON Map 传给 Flutter 侧。传输体积比较大的数据比如人脸照片直接传字节数组会导致通道卡顿我的做法是先把图片存在临时目录通道里只传文件路径Flutter 侧通过路径读取文件。4.2 本地缓存与增量同步策略宿舍管理系统有大量离线场景宿舍楼网络不稳定、门禁平板在深夜处于弱网状态、学生在地下室提交报修。完全不支持离线使用肯定不行所以我在数据层设计了本地缓存加增量同步的机制。本地用 SQLite 保存当前设备需要的核心数据比如宿舍列表、房间床位状态、当前学生的入住信息。每次打开应用先读本地数据展示首屏同时向服务端发送同步请求。同步策略采用版本号加时间戳的组合方式。服务端为每张业务表维护一个data_version字段。客户端拉取时携带上次同步的版本号服务端只返回这个版本之后发生变更的数据{ last_version: 1024, changes: [ { table: bed, action: update, data: { bed_id: 1001, bed_status: 1, version: 1025 } } ] }客户端按顺序应用变更并记录最新的同步版本号。这种方式比全量拉取高效很多尤其适合门禁平板这种长期在线但带宽有限的设备。4.3 离线优先的写入队列设计读数据的离线缓存相对简单真正复杂的是离线写入。新生在弱网下提交报修单如果直接走同步接口很可能会超时。我的做法是引入一个outbox 消息队列业务操作发生时先生成动作记录写入本地 outbox 表。同时尝试立即同步如果网络失败消息留在队列中。网络恢复后按顺序逐条同步成功后删除对应消息。为了防止重复提交每条 outbox 消息都会生成唯一的request_id服务端根据request_id做幂等处理同一请求重复提交只生效一次。这个机制在考勤补录场景下特别重要学生可能在门禁设备上报了两次晚归没有幂等控制就会出现重复记录。实际测试中我遇到过一个典型冲突宿舍管理员在值班室看到某个床位显示空闲操作手动分配但同时服务端刚处理完另一位学生的自动分配请求床位实际上已经被占用。这种并发冲突靠数据库的乐观锁兜底前端在收到冲突错误后提示管理员刷新列表而不是盲目重试。5. 开发实测中的踩坑记录与优化空间5.1 三个让我印象深刻的坑第一个坑是第三方 Flutter 插件在 OpenHarmony 上缺少原生实现。我原本引入了一个扫码插件在安卓上跑得挺好到 OpenHarmony 设备上直接报MissingPluginException。排查后确认是插件作者没有写鸿蒙侧的原生代码。解决办法是放弃插件自己用 MethodChannel 调用鸿蒙系统的扫码能力代码量不大但效果稳定。这提醒我一个选型原则凡是涉及原生能力的 Flutter 插件必须先确认目标平台有没有对应实现。第二个坑是通道调用线程问题。OpenHarmony 侧有些系统 API 必须在主线程调用但 Flutter 的 MethodChannel 传入的回调可能处于后台线程。前期没做线程切换导致偶现的 UI 卡顿和回调丢失。后来在所有原生方法里都做了线程判断和切换这个问题才彻底消失。第三个坑是部分门禁平板屏幕比例特殊我的 Flutter UI 按照常规手机屏幕做的到了这些设备上出现底部按钮被系统导航栏遮挡的情况。用SafeArea只能解决系统栏遮挡但设备本身的显示区域裁剪还得靠媒体查询做适配。我最后是给页面做了一个统一的布局约束把关键操作按钮限制在安全区域之内才保证了所有设备上的可用性。5.2 性能优化实测宿舍列表页刚做完时滑起来有明显的卡顿感。排查发现是列表项里每张学生头像都走了一次网络请求而且没有做缓存。优化方案分了三步第一是列表改用ListView.builder配合分页加载第二是头像统一走服务端缩略图接口限制图片尺寸第三是 Flutter 侧做了内存图片缓存重复滑动不再反复请求。考勤记录查询在数据量涨到几万条后开始变慢。我用EXPLAIN查看查询计划发现没有命中索引。后来给attendance_record表的student_id和record_date加了联合索引查询耗时从数百毫秒降到了几十毫秒。这个优化只改了一行建表语句收益却非常明显。5.3 后续可以扩展的方向系统运行稳定后我已经规划了几个扩展点。第一个是门禁联动目前入住名单是同步到门禁平板做本地比对后续可以让宿舍管理系统直接调用门禁的授权接口实现退宿自动注销门禁权限。第二个是 IOT 设备联动宿舍内的智能电表、水表数据接入后可以做用电异常预警和远程抄表。第三个是管理大屏把各楼栋入住率、晚归趋势、报修热力图这些数据以可视化的方式投到宿管中心的大屏上。这三个方向都在现有架构的扩展范围内数据层和通道层不需要大改主要是新增业务模块和对应的数据处理逻辑。我在实际开发中最深的一条体会是像宿舍管理系统这种业务技术难点从来不在某一个框架用得多熟练而在数据模型设计得是否经得起推敲、跨端通信边界是否提前划清楚。如果你正准备在 OpenHarmony 设备上跑 Flutter 应用建议先花三天时间把表结构和通道列表理清楚再动手写页面后面会省掉大量返工时间。最后再分享一个小习惯每次新增一张业务表就顺手在文档里更新字段说明和状态流转图这个文档在项目后期救了我无数次。

相关新闻

Simulink入门指南:从基础建模到仿真分析

Simulink入门指南:从基础建模到仿真分析

1. Simulink入门:为什么选择它作为建模工具Simulink是MathWorks公司推出的基于MATLAB的可视化仿真环境,它采用图形化建模方式,让工程师能够通过拖拽模块和连线的方式构建动态系统模型。对于控制系统、信号处理和通信系统等领域的建模与仿真来…

2026/10/14 2:42:28 阅读更多 →
大模型API调试指南:用curl命令直接跑通OpenAI规范接口

大模型API调试指南:用curl命令直接跑通OpenAI规范接口

我见过很多人一上来就装 SDK,结果先用半小时解决依赖版本冲突,再花一小时跟异步回调搏斗,最后还不确定自己到底调对了没有。其实在真正写业务代码之前,先用 curl 把大模型 API 从头到尾打一遍,往往是最快、最干净、也最…

2026/10/14 2:41:28 阅读更多 →
devtron 仓库中的 gammazero/deque:Go 环形缓冲双端队列(deque)原理与实战指南

devtron 仓库中的 gammazero/deque:Go 环形缓冲双端队列(deque)原理与实战指南

云原生DevOps运维 【免费下载链接】devtron The only Kubernetes dashboard you need 项目地址: https://gitcode.com/gh_mirrors/dev/devtron 点击查看 免费下载 github.com/gammazero/deque 是一个基于环形缓冲区(ring-buffer)实现的 Go 泛…

2026/10/14 2:41:27 阅读更多 →

最新新闻

Virglrenderer 虚拟化技术深入解析 · 专栏目录

Virglrenderer 虚拟化技术深入解析 · 专栏目录

一套面向工程师的 virglrenderer 源码级技术专栏。从概述与演进讲起,再深入核心抽象、各后端实现、部署集成与工程实践。所有内容以仓库源码为准。 这里讲一下我为什么关注 virglrenderer,因为国产 GPU 的虚拟化需求。 随着国产化替代的推进&#xff0c…

2026/10/14 3:23:34 阅读更多 →
Kestrel_VLLM_CUDA - 04 · 分组量化 GEMM 内核

Kestrel_VLLM_CUDA - 04 · 分组量化 GEMM 内核

04 分组量化 GEMM 内核 一句话:一个内核同时服务 decode(M1)与 prefill(M32),用「每线程固定几列、沿 K 扫」的映射让权重按 warp 满事务读、激活广播;用 z-split 把小 M 的欠填充网格补满&…

2026/10/14 3:23:34 阅读更多 →
Spring Boot 单元测试怎么写?物联网平台 MockMvc 接口测试与 Mockito 消息链路测试实战(附 JaCoCo 覆盖率报告)

Spring Boot 单元测试怎么写?物联网平台 MockMvc 接口测试与 Mockito 消息链路测试实战(附 JaCoCo 覆盖率报告)

真实运行截图:一、功能都写完了,为什么还要写测试? 我这个物联网设备接入平台(Spring Boot 3.5 EMQX MySQL),从设备注册、MQTT 接入、消息入库到密钥轮换,功能主线已经跑通了。但每次面试话题…

2026/10/14 3:23:34 阅读更多 →
宁波执业律师张娟:配偶背的债你要还吗——夫妻共同债务认定规则拆解

宁波执业律师张娟:配偶背的债你要还吗——夫妻共同债务认定规则拆解

结论先行:配偶单方所负的债务,并不天然由你连带承担。民法典第1064条确立了共债共签原则——共同签字或事后追认、为家庭日常生活需要所负的债务才是共同债务;超出日常生活需要的,原则上由举债方自担,除非债权人能证明…

2026/10/14 3:23:34 阅读更多 →
铝制小青瓦筑就江南院墅 复刻黛瓦白墙的东方栖居

铝制小青瓦筑就江南院墅 复刻黛瓦白墙的东方栖居

坐落于苏州的拙政江南,以拙政园为文脉基底,打造连片式低密新中式院墅群落。白墙围合私家庭院,黛瓦错落铺陈屋面,亭廊婉转、叠石理水,将苏州园林的雅致意境藏进每一方栖居空间。项目全线屋面采用铝制小青瓦,以现代建材工艺复刻传统江南小青瓦的形与韵,更从根源破解传统陶瓦的运维…

2026/10/14 3:23:34 阅读更多 →
中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

很长时间里,人们对于“找人起名”的想象都非常简单: 找一位有经验的老师, 报出生时间, 老师根据经验给出几个名字。 整个服务高度依赖: “这个大师厉不厉害”。 但今天再观察国内专业起名市场,会发现它已经…

2026/10/14 3:22:34 阅读更多 →

日新闻

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