金融服务系统架构实战:从账户交易到风控报表的完整设计指南
financial-services 这个项目名听起来特别大甚至有点唬人。实际上它是我带着两个后端、一个前端花了三个多月从零搭起来的一套金融服务聚合平台。核心就干三件事把账户、交易、风控这三块串成一条完整的数据链路把散落在各个业务方的支付渠道和接口收拢成统一入口再把每天产生的财务数据自动汇总成能追到每一笔明细的报表。如果你正在准备做类似的金融类项目或者单纯想知道金融服务系统背后到底是怎么设计的这篇文章值得你花十分钟看完。我会把从需求拆解、架构选型、核心模块实现到生产环境踩坑的完整过程一条条讲清楚所有的取舍理由和落地细节都会交代。1. 项目定位与整体架构设计思路1.1 金融服务平台到底要解决什么问题这年头做业务只要牵扯到钱系统复杂度立刻上一个量级。我们当时的业务背景是公司下面挂了三条产品线每条线各自对接了不同的支付渠道有的用微信支付有的用支付宝还有一条线走银行代扣。表面上看能用就行但实际上问题一大堆。第一个问题是账务口径完全不统一。A 产品线的订单金额包含了优惠券抵扣B 产品线的订单金额是实付金额财务月底对账的时候三个人对三天都对不平最后还是靠拉 Excel 手工算。第二个问题是风控各管各的。A 线封了的黑名单用户转头跑去 B 线继续下单等于风控体系形同虚设。第三个问题是渠道切换成本太高。想换一个支付渠道得连产品线的前端页面、后端订单逻辑、回调接口全部改动每次至少一周。所以这个项目的本质不是做个新系统而是把金融能力中台化。账户、交易、风控、渠道这四个核心能力全部从业务线里抽出来做成独立的服务模块。业务线不再直接对接支付渠道而是统一走我们的平台。这套思路在行业里有个大家都熟悉的名字金融服务中台。但说真的名字不重要重要的是它解决了业务快速迭代和财务清晰可追溯之间的矛盾。1.2 架构选型模块化单体还是微服务这是项目启动时团队争论最激烈的问题。我当时的态度很明确先用模块化单体不要一上来就拆微服务。原因不复杂我们团队加我在内就三个人微服务那一套注册中心、配置中心、网关、链路追踪光搭建和运维就要吃掉大量时间而项目核心难点根本不在这里。金融服务系统的难点在于数据一致性和资金安全不在于并发量。我当时给团队算了一笔账以我们现有业务规模峰值 QPS 也就几百一个单体能轻松扛住但资金链路牵涉账户余额、交易流水、渠道对账如果用微服务拆开跨服务调用带来的分布式事务问题处理不好就是资损事故。最终采用的方案是一个 Spring Boot 单体应用内部按模块分包账户、交易、风控、渠道、报表五个模块各管各的业务域模块之间只通过 Service 接口调用不允许直接访问对方的表。另外单独部署了一个异步任务模块跑对账、跑日切、跑批处理。这个设计的最大好处是前期开发效率高一个应用一把梭后期如果业务量真上来了模块之间的边界已经划清楚按已有边界拆微服务是顺水推舟的事不用返工。1.3 数据模型设计几笔关键表怎么落金融系统的表设计核心不是能存数据而是每一笔钱都能追到源头。我们第一版就定了三条铁律账户表永远只做余额记录不做流水交易流水一旦写入不允许修改只能追加冲正记录所有涉及金额的字段全部用BIGINT存分绝不用浮点数。账户表我采用的是主账户 子账户模型。一个用户对应一个主账户主账户下面按业务类型挂多个子账户比如余额子账户、冻结子账户、积分子账户。每个子账户独立记账互不影响。表结构里最关键的是available_balance可用余额和frozen_balance冻结余额两个字段这两个字段的含义我在后面交易模块里会详细展开。交易流水表是另一张核心表。每条流水包含流水号、账户 ID、变动方向、变动金额、业务单号、渠道流水号、状态这几个核心字段。我特意加了一个source_biz_type字段用来标记这笔变动是来自下单、退款、还是人工调账。这个字段后来帮了大忙财务对账、风控排查、运营分析全都要靠它来圈定数据范围。2. 核心业务模块的细节拆解2.1 账户体系设计最容易埋坑的地方账户体系是金融系统的地基地基没打好后面全是雷。我见过太多项目把账户做成一张用户表加一个余额字段看起来简单实际上一做交易就出事。问题在于你没法区分冻结中的钱和能花的钱也没法记录每一笔余额变动的来龙去脉。我们的账户中心长这样用户注册时自动开主账户主账户下按业务线实时开子账户。所有余额变动只能通过账户服务的一个统一入口changeBalance()走这个入口强制要求传入业务流水号同一流水号重复调用直接拒绝。这是账户系统防重复入账的第一道闸门。这里有个细节值得专门说冻结与解冻。用户在拼团活动里预付了一笔定金定金这笔钱在活动结束前不能被消费掉但又还在用户账户里怎么办我们在子账户里拆了两个字段available_balance和frozen_balance。预扣成功时从可用余额减掉相应金额、冻结余额加上相应金额核销真正扣款时再从冻结余额里减掉变成平台收入。如果活动失败了走解冻流程金额从冻结余额回到可用余额。这个模型本身不复杂但一旦并发操作没做好就会出大问题。有一次压测我们就测出来同一个用户在两个设备上同时下单余额显示够结果两个订单都扣成功了账户余额直接变负数。这个问题的根源和解决方案我放在后面第 4 节专门讲这里先提醒一句账户余额更新一定要用行锁或者乐观锁光靠代码里的if (balance amount)判断在并发下是拦不住的。2.2 交易引擎从下单到结算的一条完整链路交易引擎是整套系统里逻辑最密集的部分。我们把它设计成了四个状态的有限状态机待试算、预扣成功、已确认、已结算。这四步背后对应着完全不同的业务含义不能混。第一步试算。试算就是根据商品原价、优惠券、会员折扣、运费等计算出用户实际要付多少钱。为什么要把这一步单独拎出来因为真实业务里价格不是一成不变的比如用户在下单页停留了十分钟期间他的一张优惠券过期了这时候如果不重新试算就会出现前端显示 80 元、后端结算 100 元的情况。我们的做法是下单时生成一个计价快照包含商品明细、优惠明细、最终金额后续任何环节都以这个快照为准前端展示和后端结算的一致性问题从根上解决。第二步预扣这是资金安全最核心的一步。系统在确认用户账户余额充足后不是直接扣款而是先把金额从可用余额转入冻结余额。这么做的原因是订单从下单到真正完成支付中间可能要经过支付渠道的跳转、回调、异步通知等环节短则几秒、长则几分钟。如果在这个窗口里用户又下了别的订单预扣机制能保证第一单的金额已经为他锁定了不会出现重复消费余额的问题。第三步确认和第四步结算发生在支付渠道回调通知成功之后。确认动作是把冻结余额真正扣掉结算动作则是把这笔钱从用户资产口径转成平台收入口径生成一条结算记录。这里我重点强调一下交易引擎的每个步骤都要写日志包括步骤名、参数、耗时、返回结果。真实排查资金问题的时候全靠这些日志还原现场。2.3 风控模块规则引擎落地的三个关键点一说到金融风控很多人第一反应是想复杂了什么机器学习、设备指纹、关系图谱都是后面的事。对一个初期平台来说真正有价值的其实是三件事黑白名单、频次控制、额度控制。我们落地了一个轻量级规则引擎配置在数据库里不是写死在代码中。规则表和规则条件表两张表支持按用户、按设备、按 IP、按银行卡维度配置。规则的核心结构是一个规则下面挂多个条件条件之间是 AND 关系规则本身有优先级和启用状态。每次交易前交易引擎把当前请求的上下文参数传给风控模块风控模块把命中的规则和处置动作放行、人工审核、拒绝返回。这里有一个非常实际的教训规则引擎的响应时间必须压到 20 毫秒以下。因为所有交易都要经过风控如果风控慢交易就慢用户端体验直接崩。我们最开始用 JPA 联表查规则一次风控请求要查七八张表耗时一两百毫秒压测直接不合格。后来把全部活跃规则加载到 Redis 里Key 是规则维度比如U:10086表示用户 ID 10086 的规则集配合本地缓存风控模块的 P99 耗时降到了 8 毫秒。另外一个容易忽略的问题是风控要有灰度能力。新上线一条规则你不知道它对正常用户会不会误杀所以必须支持按比例放量。我们给规则表加了一个hit_rate字段用处不大但很关键命中规则后生成一个 0 到 1 的随机数大于这个值的用户放行小于等于的才按规则处置。这样新规则先放 10% 流量观察确认没有误杀再逐步上调到 100%。3. 关键实现与实操过程3.1 支付渠道网关统一入口到底怎么收渠道模块做的事情很简单让业务方只面对一个统一支付接口底层接了几家渠道、渠道之间的参数怎么转换、签名规则有什么区别业务方一概不用管。从代码结构上看就是一套策略模式。我定义了一个统一接口PaymentChannel包含三个核心方法createPayment(orderId, amount, bizType)、queryPayment(channelSerialNo)、handleCallback(params)。每家渠道单独实现这个接口用 Spring 的依赖注入把策略 Bean 按渠道代码注入到 Map 里。发起支付的时候根据channelCode从 Map 里取出对应实现往上抛给上层使用。这里最坑的是各渠道的协议差异极大。有的渠道用 JSON有的用 XML有的要求 MD5 签名有的是 RSA有的回调参数是嵌套对象有的全平铺。我们做了一层适配层把各家参数统一转换成内部的PaymentRequest和PaymentResult对象。适配层包含字段映射、签名校验、金额格式化分转元、元转分、时间格式转换。这块代码写的时候很枯燥但它是渠道能够灵活切换的关键后面接入第四家渠道时只花了一个下午就完成了这在以前想都不敢想。回调处理是渠道模块里的重中之重也是资金安全的高危区。渠道服务器会异步通知我们支付结果这个通知可能重复发送、乱序到达甚至可能是假的。为了防止伪造回调接口第一件事必须是验签验签不通过直接拒绝第二件事是查本地流水如果流水号不存在说明这笔支付没有在我们系统里发起过同样拒绝。3.2 事务与数据一致性资金安全怎么保障金融服务系统涉及跨账户、跨模块的数据变更比如确认订单要把冻结余额扣除还要写一条交易流水中间任何一个环节失败都会造成账目不平。数据库的本地事务只能解决单库问题跨服务调用就没辙了。但我们是模块化单体所有表都在同一个数据库里这就占了个大便宜大部分资金操作可以在一个本地事务里完成。我们用的方案是数据库事务 事务消息表。拿订单支付确认来说整个流程在一个Transactional方法里执行更新订单状态、扣减冻结余额、写入交易流水、记录事务消息表四步要么全部成功要么全部回滚。事务消息表在这里扮演的是本地消息队列的角色事务提交后一个异步线程扫描消息表里状态为 PENDING 的记录把消息发给业务方或者下一个处理步骤处理成功后将消息状态改成 DONE如果处理失败重试三次之后标记 DEAD由告警系统通知人工介入。这个方案并不是新东西但它对中小型金融系统来说足够可靠而且不引入额外的 MQ 中间件部署和运维复杂度低很多。唯一要注意的是消息表要定期清理我们保留最近 90 天的记录超期的归档到历史表不然表越来越大索引会逐渐失效。3.3 财务对账与报表让每一分钱都有出处做金融业务最怕财务来说一句账对不上。与其事后扯皮不如在系统里把对账机制做成自动化。我们设计了三个维度的对账内部账实核对、渠道账单核对、业务报表核对。内部账实核对最简单每天晚上跑批量任务把账户表的余额累计值和交易流水的净值做汇总比对。理论上账户余额应该等于所有流水变动之和如果不等系统立刻标记异常并推送告警。这个核对看着简单但真的能抓到问题我们上线第一天就抓到一个历史数据迁移引入的金额偏差。渠道账单核对是重头戏。每天从各支付渠道下载前一日的结算对账单与我们系统里的支付记录逐一比对。比对的键是渠道流水号比对维度包括金额、状态、手续费。不一致的记录进入差异池按差异类型自动分类金额不一致的多半是渠道侧扣了手续费但我们没算到已支付但无记录的多半是回调丢失有记录但账单上没有的多半是测试数据或者虚假交易。分类完成后财务只需要看差异池里的少数几条不用再对着 Excel 手工核。报表模块没做得多花哨老老实实按日、周、月三个粒度出几张核心表交易汇总表、渠道成本表、用户资产变动表。日终跑批生成聚合数据存进报表库业务方每天早上上班直接看数据就行再也不用追着开发要数。4. 常见问题排查与实操避坑实录4.1 并发扣款导致余额变负数一个经典事故上线后的第三周生产环境报警某个用户的账户余额变成了 -12.50 元。我一查日志发现同一秒内有两个订单同时发起支付两个请求都读到了余额 10 元都判断余额充足然后都执行了扣款。这就是典型的并发读改写问题。排查思路很简单但要记牢所有涉及余额更新的写操作都必须保证读余额→判断→写余额这个序列原子性。我们采用了最稳妥的方案余额更新语句写成原子操作在 SQL 层做判断。UPDATE account_sub_account SET available_balance available_balance - #{amount} WHERE account_id #{accountId} AND sub_account_type #{subAccountType} AND available_balance #{amount}这条 SQL 的关键在于把判断条件放进 WHERE 子句数据库层面保证了余额足够才扣的原子性。执行后如果影响行数为 0说明余额不足业务侧返回余额不足即可。这套方案不需要锁也不会死锁是目前处理余额更新最干净的姿势。后来我又加了一层优化用乐观锁的版本号字段version做二次校验每次更新带上上一次读到的 version 号等于给资金操作加了个二次保险。4.2 回调重复通知引发重复入账幂等不是一句空话支付渠道的回调官方的说法是最多重试五次但实际情况是渠道偶尔会把同一笔支付结果重复推给我们好几次。第一版我们天真地以为业务单号唯一索引能挡住后来发现不行——因为回调处理的第一步就会去查流水状态查完到更新的间隙第二次回调已经进来了。我们的解法是唯一键抢占和状态机校验双管齐下。在交易流水表上加一个唯一索引字段是(biz_order_no, channel_code, channel_serial_no)插入流水时如果遇到唯一键冲突说明已经处理过了直接返回成功。状态机校验则是在订单表上加状态字段比如已支付订单再收到支付成功回调状态流转非法直接抛弃并告警。这套组合之后再也没有出现过重复入账的事故。顺便说一句幂等不能靠 Redis 分布式锁因为锁过期时间很难设准锁过期之后第二次请求照样能进来唯一索引是数据库层面最可靠的能力锁可以优化性能但不能替代数据库的约束。4.3 慢 SQL 与日切跑批的优化记录上线两个月后日终对账批任务的耗时会超过 40 分钟眼看就要赶上业务高峰了。我抓了一条典型的慢 SQL是统计当日交易金额的聚合查询SELECT biz_type, COUNT(*), SUM(amount) FROM transaction_flow WHERE created_at #{startTime} AND created_at #{endTime} GROUP BY biz_type;这张表的体量当时已经有三四千万行没有合适的索引就会全表扫描。实际执行计划显示扫了接近 3000 万行耗时 70 秒。解决方案分两步第一步加了(created_at, biz_type)联合索引查询立刻降到 800 毫秒第二步把日切跑批的时间段从当天 0 点到跑批时刻改为跑批时刻往前推 24 小时避免业务还在持续写入时去跑批减少锁竞争。另一个值得记录的是分表必要性评估。当时有人建议对交易流水按月份做分表我先做了个测试当前表量的查询在加了合理索引后响应时间完全可控分表虽然能进一步提升性能但会让所有跨月查询的逻辑复杂一个量级。结论是现阶段不分但监控住了表容量增速提前讨论好了分表方案随时可以执行。做技术决策就是这样不能只看性能数字还要看团队能承担的维护成本。5. 实战经验总结与长期维护建议做一个金融类项目我最大的体会是技术上的难点从来不是那些炫酷的框架而是对资金安全和数据一致性的敬畏。任何一次余额变动都要能回答三个问题为什么变谁批准的对应哪笔业务把这三个问题的答案固化在系统设计里这个系统就基本稳了。几个特别想强调的实操习惯分享给打算做同类项目的朋友第一金额计算统一用整数分禁止浮点数。浮点数在减法、比较时会出现精度问题金融场景绝对不能碰。数据库字段用BIGINT接口参数用String或者Long前端展示时再转成元。第二所有资金操作入口都做流水号校验。同一个流水号重复请求直接返回第一次的结果。这个不仅是防渠道回调也是防我们自己内部重试机制带来的副作用。第三日志一定要全。我处理过的每一次资金问题最后都是靠日志还原现场。交易链路的每个环节从入参到出参从业务状态到数据库执行结果全部打上结构化日志配合 traceId 串联整个请求生命周期。第四定期做账实核对。不要以为代码没问题就不需要核对。数据库也可能被误操作、迁移可能有 bug、人工调账可能有遗漏。每天晚上跑一遍余额对流水的自动核对是最便宜、最有效的保险丝。这套系统上线至今运行稳定后面还接了客服后台的退款审核流程加了一个人工调账功能。每一次新需求的接入都验证了当初模块边界划分的正确性。如果你正打算从零搭一个金融类的服务端系统我的建议是先把账户和交易两个模块的边界画清楚把数据一致性方案想透彻再去考虑渠道接入和业务功能。地基稳了上面盖多高的楼都不慌。

相关新闻

C#部署YOLO的INT8量化精度调优:校准集与混合精度实战

C#部署YOLO的INT8量化精度调优:校准集与混合精度实战

1. 动手量化前,先把“丢精度”的原因想明白要是你在C#项目里把YOLO模型从FP32换成INT8,一测mAP从76%掉到58%,先别急着怀疑量化工具坏了。这个现象我见过太多次,去年帮一个做工业质检的朋友排查,同一个模型在他那边部署…

2026/10/17 8:26:21 阅读更多 →
GEO生成式引擎优化:让AI搜索引用你的内容的实战指南

GEO生成式引擎优化:让AI搜索引用你的内容的实战指南

1. 先从“搜索”发家的变化说起:AI不再给你十条链接1.1 你搜到的不是“链接列表”,而是一段答案过去十年,我们做流量、做内容、做独立站,所有的思维都围绕一个东西:搜索结果的排名位置。大家默认的规则是,用…

2026/10/17 8:26:21 阅读更多 →
C#调用YOLO内存优化实战:7×24小时稳定运行200MB以内

C#调用YOLO内存优化实战:7×24小时稳定运行200MB以内

在.NET圈子里,C#调YOLO做目标检测,最让人头疼的往往不是推理精度,也不是检测速度,而是内存。724小时跑着跑着,内存从300MB涨到1GB再到3GB,最后进程被系统干掉或者卡死重启,这种情况我见过太多次…

2026/10/17 8:26:21 阅读更多 →

最新新闻

红帽系统密码管理实战:root密码重置、普通用户改密与登录排错

红帽系统密码管理实战:root密码重置、普通用户改密与登录排错

接手一台英文版红帽系统的服务器,第一件事往往不是看业务,而是确认各种密码能不能用。新员工入职、老员工离职、合同交接、密码过期,甚至只是某次手滑把密码改错了,都逃不过"修改红帽系统root密码和普通密码"这一步。这…

2026/10/17 9:50:46 阅读更多 →
图解KMP算法:彻底搞懂next数组的递推与回退

图解KMP算法:彻底搞懂next数组的递推与回退

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

2026/10/17 9:50:46 阅读更多 →
内容独占权协议:搜索引擎唯一召回权的未来推演

内容独占权协议:搜索引擎唯一召回权的未来推演

1. 一个可能出现的未来:内容独占权协议先设想一个场景:未来某天,你打开搜索引擎,输入一个行业关键词,搜索结果页里只有一个来自特定内容平台的置顶结果,其余同类内容全部被折叠。原因是这个平台和搜索引擎签…

2026/10/17 9:50:46 阅读更多 →
图神经网络入门:从消息传递到GCN/GAT/GraphSAGE实战

图神经网络入门:从消息传递到GCN/GAT/GraphSAGE实战

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

2026/10/17 9:50:46 阅读更多 →
VS Code扩展开发实战:生命周期、装饰器与踩坑指南

VS Code扩展开发实战:生命周期、装饰器与踩坑指南

我不太确定你是否把完整需求一次性丢过来了,但根据你给的输入信息,我要基于项目标题superpowers来产出博文。我按最贴近技术圈实际情况、也最有实操价值的思路来写——把它解读为“VS Code 扩展开发辅助工具库 Superpowers”。如果这个标题在你的场景里另…

2026/10/17 9:50:46 阅读更多 →
储能电池被动均衡方案设计:MP2642GR-Z与PIC18F4550实战

储能电池被动均衡方案设计:MP2642GR-Z与PIC18F4550实战

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

2026/10/17 9:49:46 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →