再见了,Redis之神:Antirez留给开源世界的遗产
第一次看到“再见了Antirez永远的Redis之神”这个标题时我愣了一下。技术圈里每天都有各种更迭和离开但这个名字不一样。Antirez是Redis的创造者也是我在很长一段时间里拿来当“理想型程序员”模板的人。很多人平时不觉得Redis的存在感有多强但它几乎撑起了现代互联网应用里最庞大的一层基础设施缓存。一个欧洲程序员十几年前灵感突发写的个人项目最后成为全球开源社区共享的数据库这件事本身就值得细品。这篇内容不打算写成纪念讣告也不想通篇歌颂。我更想借这个标题把Redis为什么会成功、Antirez在设计和维护里做的关键抉择、以及他宣布告别之后留下的东西认真捋一遍。如果你在用Redis或者你对“一个开源项目如何从零长成庞然大物”感兴趣读下去应该会有收获。1. 从三天写出的个人项目到全球基础设施Antirez是谁1.1 一个自学成才的程序员和一个“自己做数据库”的决定关于Antirez的早年经历公开资料里的信息其实并不算多核心脉络足够清晰他是自学编程出身早年写了不少底层工具和嵌入式相关的代码对C语言、对一台机器的内存和CPU行为有非常直觉的感知。他后来在很多访谈里提到自己不像科班程序员那样先背熟教材然后再写程序更像是“遇到了一个问题于是把工具敲出来”。2009年前后他在做一个实时Web分析类的个人项目遇到一个几乎所有流量稍大的应用都会撞上的问题数据写入和读取的速度追不上数据的产生速度。用现成的关系型数据库很吃力加索引、换存储引擎、做分库分表这些套路在那个年代都得靠非常专业的DBA团队伺候。Antirez没有选那条路而是决定自己写一个专为“在内存里操作数据”设计的数据库。据他自己的说法最初的版本只花了很短的时间就敲了出来后被社区添油加醋演绎成“三天写了一个数据库”。这个决定今天回过头看非常关键。他没有去模仿当时成熟的数据库架构而是完全从自己的需求倒推数据要快要能抗住高并发读写结构要灵活代码要足够简单到一个人能维护。这个“需求驱动 简单优先”的起点从第一天起就刻进了Redis的血脉里。他当时大概也没想到这个为了解决自己项目而存在的工具后来会成为无数公司和产品的默认选择。1.2 为什么称他“Redis之神”性能、诚实与读者感“之神”这种称号在今天会被很多老程序员笑称太中二。但对整个后端圈子来说Antirez确实长时间扮演着“答案提供者”的角色。2010年代前半段大家在技术社区讨论缓存方案、讨论高并发下的数据结构选型、讨论分布式锁的可靠性几乎每次都绕不开Redis也绕不开Antirez在技术博客里留下的长篇分析。他的文章不是那种“教你三分钟上手”的口号式教程而更像是“我写这段代码时在想什么”的实时直播。他对待用户反馈的方式也极具个人风格。Redis的很多特性并不是凭空发明的而是来自真实用户的求助有用户在社区里抱怨某些操作太慢他会直接解剖命令的复杂度然后决定是否重构底层结构有人提议添加复杂语法他会非常坦率地说“这个功能会让大多数人付出学习成本我看不出它解决的真实问题”。这种“看起来有点固执实际是在替沉默的大多数用户把关”的态度让Redis一直保持着一种难得的克制感。更打动人的是他在技术表达上的诚实。他会公开承认某个设计在特定场景下不适用也会在一篇博客里把某个命令的缺陷一五一十写清楚。这种风格让“Redis之神”这个称呼变得更有人情味他不是神但他像一个愿意把底牌全部摊开给你看的顶级牌手。对还在成长中的开发者来说这种榜样的价值可能比任何高性能组件都更珍贵。2. Redis到底强在哪底层设计与关键取舍2.1 单线程模型为什么还能这么快性能真相与多线程IORedis最常被议论的一点就是它的“快”。很多人没细想的是Redis在很长一段时间里是单线程的命令执行由主线程逐个完成。一个单线程系统凭什么扛住十万级并发答案是它把“快”这个字拆成了三个部分数据都放在内存里网络IO用多路复用机制例如Linux上的epoll让一个线程就能监听成千上万个连接命令执行时没有任何加锁和解锁的开销。用生活里的例子来说这就像一个只有一张灶台的厨房一次只炒一道菜。主厨不需要跟别人抢锅铲不需要等别人放完佐料再动刀所有动作都按顺序来反而不会乱更不会因为抢夺资源而停下来。Redis的“慢命令”问题就是这么来的只要有人在主线程里执行一个时间复杂度高的操作比如一次性的KEYS全量匹配整张灶台就会被这一道菜堵住。所以后来实践中大家都被教育不要在生产环境用KEYS而是用SCAN慢慢扫。Redis 6.0引入了多线程但很多人理解错了。它并没有推翻单线程模型只是把网络数据读写这部分耗时操作拆给多个IO线程处理命令的真正执行仍然在主线程完成。就好比多了几个帮工负责洗菜切菜但炒菜仍然由主厨一个人完成。这个折中非常符合Antirez一贯的风格先承认瓶颈在哪里再针对瓶颈做最小改动而不是一句“单线程不够快”就把整套架构重写。2.2 不只是键值对底层数据结构的精巧取舍很多人把Redis当作“高级缓存”但它最迷人的地方其实是背后的五种基本数据结构字符串、哈希、列表、集合、有序集合。这五样东西单独看都不稀奇组合起来却能覆盖大量业务场景。Antirez在实现这些结构时做了很多符合直觉的工程设计随手举几个例子。字符串用的是SDS而不是C语言原生的字符数组。SDS记录了长度所以获取字符串长度的复杂度是O(1)同时支持二进制安全不会因为字符串中间包含\0就截断。普通的C字符串像一根固定长度的线裁短或延长都可能崩线SDS则像一根可自动伸缩的橡皮绳使用体验安全得多。哈希和列表在小数据量时使用紧凑型编码只有当元素数量超过阈值时才升级为标准哈希表和双向链表用更小的内存换取同样功能。有序集合里那个经典的跳表更是能看出Antirez的取舍观。很多数据库会用平衡树或红黑树来维护有序数据但跳表在Redis里更合适实现代码短不容易出诡异Bug范围查询天然友好沿着指针一路走就能把某个区间全部取出来至于性能跳表在大多数情况下和平衡树非常接近而工程上的简洁性远远胜出。这个选择背后是典型的“够用就好 维护友好”哲学。Redis的zset也因此成为排行榜、延迟队列、滑动窗口限流这些场景背后的功臣。2.3 数据不丢RDB、AOF与混合持久化的选择Redis是内存数据库内存意味着掉电就没了。但它在设计上很早就提供两种持久化方案让用户可以在“性能”和“数据安全”之间自己找平衡。RDB是某个时间点的全量内存快照恢复速度极快文件体积紧凑适合做备份和灾难恢复。AOF则像操作日志把每次写命令追加到文件里可以通过重放命令把数据恢复到最新状态。两者的优缺点摆开一对比就很清楚对比项RDB快照AOF日志混合持久化4.0起数据格式二进制压缩快照文本协议命令流头部RDB 尾部AOF增量启动恢复速度快慢命令重放量大快数据丢失范围可能丢失最近一个快照周期数据默认最多丢1秒可配置更高默认最多丢1秒文件体积紧凑较大需要定期重写较紧凑适用场景备份、大批量恢复对数据完整性要求高的场景兼顾两者Antirez在长期演进里又花大力气实现了AOF自动重写把日志里重复、冗余的命令压缩成尽可能少的命令防止文件无限膨胀下去。4.0以后默认的混合持久化更聪明启动时直接加载RDB快照再用尾部一小段AOF把最近的动作补上相当于把“快恢复”和“少丢数据”两大优势合并到一次启动里。这些设计不像高并发技巧那样炫目但恰恰是Redis能从“好玩的缓存玩具”变成“被生产环境信赖的数据库”的关键。2.4 高可用与分布式哨兵、集群和分布式锁的实践边界单机再稳也扛不住硬件故障所以Redis体系里还有复制、哨兵和集群。主从复制是基础为了让主库和从库数据保持一致先做一次全量同步之后靠一个非常小巧的环形缓冲区记录增量命令从库断线重连后可以从中补回这段时间的差异。哨兵负责盯住主库是否还活着主库挂了就按一定规则在从库里面推选出新的主库。集群则把整个数据空间切成了16384个哈希槽每台节点分担其中一部分客户端按哈希结果找到对应节点。这一整套下来Redis才真正像一个可运维的基础设施。但Antirez对边界也非常诚实。早年他写过一篇关于分布式锁的文章提出了一套多实例加锁的思路后来被不少分布式系统专家指出在极端网络分区场景下仍有风险。这件事在圈内讨论很多但争议主要围绕技术本身因为作者本人也没有把方案包装成银弹他只说“如果你的系统能接受风险这是一个不错的尝试”。把“技术方案的适用边界”讲清楚比把某个方案吹成万能钥匙重要得多。这也是我在看他的文字时印象很深的一点。在应用层面Redis还有一个非常关键的设计过期与淘汰策略。过期靠惰性删除加上周期性抽样扫描避免删除大Key时把主线程堵塞内存淘汰则提供了近似LRU和近似LFU算法抽几个样本挑最久未使用的逐出而不是维护一份全量精确链表。这种“用近似方案换性能”的思路在生产环境里简直救了不少人一命因为你永远不会希望Redis因为内存写满而直接拒绝服务。3. 维护者告别之后开源项目常见但常被低估的难题3.1 维护者的重负那些看不见的发布日志开源项目的名气越大维护成本往往越隐形。用户看到的是一行命令安装、一个配置跑起来看不到的是背后每天涌入的大量issue、Pull Request、兼容性讨论和版本发布前的反复验证。Antirez作为Redis最初的绝对核心长期承担着代码合并和发布节奏的把关。他会仔细读社区的每一条反馈然后在回复里给出自己的设计判断有些明显不符合Redis哲学的功能他会保留意见宁可让提PR的人失望也不愿给项目背上长期复杂度。这种慢节奏在早期是优点项目能保持小而美。但项目越来越大之后它就变成了一种持续的心理压力。每一位提交PR的人都在期待回应每一次改默认配置都可能影响全球无数实例每一条安全公告都需要快速响应。这些压力叠在一个人身上时间长了会把“写代码的快乐”磨成“做决定的责任”。我见过不少开发者从开源项目里获得成就感却很少有人能长期承受这种源源不断的“被需要”。Antirez有一段时间的发布日志和博文里也开始越来越多地讨论“设计是否过度”或者“功能是否应该更克制”这类问题。回头看那其实是一个顶级维护者在寻找自己与项目关系的信号。3.2 告别时刻顶级开发者为什么也会说再见我记得很清楚Antirez宣布退出Redis日常维护的消息是在一个看起来平常的夏天。他没有用那种戏剧化的笔调宣布“退休”而是用一封很平静的公开信他决定不再以维护者的身份主导Redis的代码合并和版本发布希望项目能沿着社区共同的方向继续走。字里行间没有抱怨也没有不舍之情更多像是一种“到了该把位置交给更多人的阶段”的坦然。对很多旁观者来说这很难理解一个创造了如此成功的开源项目的人为什么要退出但如果你真的运营过哪怕一个小规模的开源项目就能明白那种感受。项目越大“技术正确”和“社区情绪”之间的冲突就越激烈。你要保住项目的一致性就必然要拒绝一部分人的想法你不想拒绝太多人又会慢慢失去对项目基线质量的掌控。Antirez的离开未必是因为某个具体冲突更像是长期累积后判断“继续做下去会变成我最不想成为的那种维护者”。他后来轻松地提到自己终于可以写一些“不叫Redis”的东西了。这句话在我看来特别真实技术热情是可以被消耗的而一个有创造力的工程师确实不应该被永远钉在同一个伟大项目上。3.3 交接之后Redis社区接住了什么Antirez退出后很多人忧虑Redis会不会就此停滞。事实证明社区的接力棒接得还算稳。后续版本继续迭代陆续带来了新的数据结构、客户端缓存等能力网络IO的多线程化也继续演进。Redis不再只属于一个人而是以更组织化的方式发展。这件事给开源圈子的启示是一个项目如果想不依靠某个“神”也能长期繁荣就必须在最早期把文档、社区沟通方式、代码规范这些“看起来不够激动人心”的基础打好。Redis的文档一直以示例清楚著称它的发布说明也会解释每个新特性的动机和适用场景这都让后来的维护者和使用者更容易理解项目的决策逻辑。反过来说如果一个项目从第一天起就围着某个人的口味转那么这个人的离开就会变成项目真正的终点。Redis之所以能平稳交接恰恰说明Antirez在维护期留下的还有一套制度遗产。我一直觉得“再见了Antirez”里的“再见”应该理解成“角色的再见”而不是“Redis的终点”。他退后一步把舞台交给更多人这件事本身就是一次示范。4. 我们能从Antirez身上带走什么4.1 三句话总结Antirez的设计哲学如果让我用自己的话总结Antirez的设计哲学大概就是这三条。第一简单优先。他始终警惕过度设计Redis至今能保持“大多数命令一看就知道是干嘛的”这个状态靠的正是这种对复杂度的持续抵抗。第二真实需求驱动。Redis几乎每个核心特性的背后都能找到真实使用场景先有痛点再动代码而不是为了技术炫耀而发明功能。第三诚恳地写下来。他写博客、写发布日志、写回信把自己的思路和犹豫通通摊开让读者能循着他的思考路径重新看一遍代码。这三点放在今天依然稀缺。很多项目天天加功能、堆选项看起来无所不能用户却要靠厚厚的文档才能拼凑出正确用法。Redis相反它把默认值设得合理把常用命令做得直观把复杂的东西藏进底层。这种“用户的体验优先于工程师的炫技”的态度才是Antirez留给设计者最贵的一课。4.2 五年实战我用Redis解决过的五个经典难题说回现实操作。Redis在业务里最常被拿来救急的五个场景我都有过实操踩过坑也填过坑直接把方案列出来。一是缓存雪崩。大量缓存同时过期流量瞬间打到数据库上。解决方式很朴素每个Key的过期时间不设固定值而是加一点随机抖动把过期的时刻打散。我在系统里用固定秒数加上随机秒数实测数据库压力直接下降了一个量级。二是缓存击穿。某个热点Key在大量请求同时到达时正好过期大家全部打到数据库。常见做法是加互斥锁让重建缓存的请求只有一个线程去执行其它线程等它写完直接复用新缓存。三是缓存穿透。请求的Key在数据库里根本不存在导致每次都穿透缓存。我用的方案是布隆过滤器把所有合法标识放进去判断“不存在”时直接返回偶尔的误判则让缓存兜底。四是有序集合排行榜。用户积分变化用ZADD更新排榜用ZREVRANGE取前面若干名整个实现甚至不需要写任何后端逻辑。五是分布式锁。最标准的姿势是SET key value EX NX但释放锁时必须小心不能把别人刚拿到的锁误删掉。释放锁的常见坑是线程A执行完准备DEL但锁刚好过期线程B也拿到了同一把锁A的DEL就把B的锁删了。解决办法是拿锁时写入唯一标识释放时先用Lua脚本判断标识是否仍然匹配再决定是否删除if redis.call(get, KEYS[1]) ARGV[1] then return redis.call(del, KEYS[1]) else return 0 end这段Lua虽然短但生产环境里能避免非常严重的锁冲突。Redis的Lua脚本执行是原子的恰好满足了“检查与删除必须一体完成”的要求。4.3 想真正理解Redis从哪里开始如果只是把Redis当缓存用你会错过它最有意思的部分。我建议真正想理解Redis的人从源码入手但不必通读全部从最核心的两个文件开始就好一个是字符串结构的实现看它如何处理二进制安全和长度缓存另一个是哈希表的哈希扩容看它如何在重哈希过程中避免一次性搬迁卡住服务。能把这两部分读明白你对“用C语言怎么写高可用系统”的理解会直接上一个台阶。除此之外别放过老版本发布日志和Antirez的博客文章。那些文字记录了一个系统从很小规模长到几十万行过程中作者每一次“加还是不加”的纠结。有些设计今天看起来平凡无奇但还原到当时的技术背景里你会看到非常宝贵的判断过程。再往后可以动手用Redis做一个小项目比如滑动窗口限流器、排行榜服务、或者一个轻量级的延迟队列。做出来不算厉害做完之后回过头去读源码问一句“为什么别人要这么设计”才算真正开始消化Redis的营养。最后说点题外话我最后一次看到关于Antirez的消息是他用一种很轻松的语气聊起现在的日常说自己终于不再被“Redis应该怎么做”这个问题追着跑。这句话让我印象很深一个人可以在留下庞大的成果之后坦然地走向新生活而不是被成果钉在原地。Redis还会继续运行在全世界无数台服务器里版本还会继续迭代新的维护者会做出新的选择。但Antirez在Redis身上留下的那种气质——先想清楚真实问题用最简单的工具解决它然后把过程、犹豫和结论都如实写下来——才是比任何具体版本号都更持久的东西。如果你也在写代码、也在维护自己的开源项目遇到疲惫或者迷失方向的时候想想一个“三天写出了数据库”的程序员最后依然选择按时离场这件事也许就能和自己和解了。这大概就是“永远的Redis之神”这句话里最真诚的那部分神不神不重要重要的是他证明了一个普通人可以用热情、克制和诚实做出影响世界的作品。

相关新闻

用HelloAgents写A2A多Agent系统,代码量直接少了一半

用HelloAgents写A2A多Agent系统,代码量直接少了一半

用HelloAgents写A2A多Agent系统,代码量直接少了一半 写在前面 上一篇文章我们用原生A2A SDK写了两个Agent的协作,代码量不小——要自己管理Agent Card、处理任务状态、维护会话、写HTTP服务……跑通是跑通了,但写起来确实有点繁琐。 这篇文章…

2026/10/15 5:04:07 阅读更多 →
基于 SpringBoot+Vue 的数字化文创作品展览与电商交易服务平台的设计与实现

基于 SpringBoot+Vue 的数字化文创作品展览与电商交易服务平台的设计与实现

选题背景与意义 随着数字技术的迅猛发展和文化消费模式的深刻变革,传统文化与现代科技的融合已成为推动文化产业转型升级的重要路径。在这一背景下,数字化文创作品展览与电商交易服务平台应运而生,成为连接创作者、消费者与文化资源的关键桥梁…

2026/10/15 5:04:07 阅读更多 →
LeetCode 1148 文章浏览 I:SQL条件过滤、去重与排序的经典实战

LeetCode 1148 文章浏览 I:SQL条件过滤、去重与排序的经典实战

这道题我有一个很深的印象——不是因为解法复杂,恰恰相反,它是不少人在LeetCode上接触的第一道数据库题:表结构简单、逻辑直白、最后只输出去重后的ID列表。“1148. 文章浏览 I”看起来简单到有点像是在送分,但它其实把SQL查询里最…

2026/10/15 5:03:07 阅读更多 →

最新新闻

51单片机八路抢答器:防误触发+双定时器协同+硬件级锁定

51单片机八路抢答器:防误触发+双定时器协同+硬件级锁定

简介:本资源是一份面向电子类专业学生与单片机初学者的完整课程设计文档,聚焦基于AT89C51单片机实现八路抢答器的软硬件全流程方案,解决课堂实践、课程设计及小型竞赛场景中抢答控制、编号锁定、声光提示等核心功能实现问题。文档为纯Word格式…

2026/10/15 5:49:37 阅读更多 →
ViBe运动目标检测:Python实现与调参避坑指南

ViBe运动目标检测:Python实现与调参避坑指南

1. 为什么选择ViBe做运动目标检测做过视频监控、智能交通或者人机交互项目的朋友,大概率都绕不开一个基础问题:怎么把画面里“动的东西”从背景里抠出来。帧差法太粗糙,光流法计算量又大,高斯混合模型参数多、收敛慢,对…

2026/10/15 5:49:37 阅读更多 →
51单片机八路抢答器实战:中断消抖、状态机仲裁与数码管驱动

51单片机八路抢答器实战:中断消抖、状态机仲裁与数码管驱动

简介:本资源是一份面向电子类专业学生与单片机初学者的完整课程设计文档,聚焦基于AT89C51单片机实现八路抢答器的软硬件全流程方案。文档详述了主持人控制、8路独立按键响应、编号锁存与LED数码管实时显示、声光提示(蜂鸣器LED)、…

2026/10/15 5:49:37 阅读更多 →
智能体框架核心设计:会话管理、工具调用、MCP与记忆系统实战

智能体框架核心设计:会话管理、工具调用、MCP与记忆系统实战

近两年做智能体(Agent)项目的人越来越多,但大多数团队都卡在同一个地方:模型能聊天,但干不了实事。要让大模型真正“上手干活”,绕不开会话管理、工具调用、外部协议接入、记忆系统这四根柱子。我最近在做的…

2026/10/15 5:49:37 阅读更多 →
ELK日志分析平台实战:从部署到索引调优的完整指南

ELK日志分析平台实战:从部署到索引调优的完整指南

1. 为什么半夜总是你在看日志——ELK栈解决的真实痛点做后端开发和运维的朋友,大概率都经历过这种场面:凌晨两三点被电话叫醒,说线上服务报错,用户操作卡死。你睡眼惺忪地打开跳板机,先查进程在不在,再翻日…

2026/10/15 5:49:37 阅读更多 →
SMU02C监控单元实战排障与网管对接全指南

SMU02C监控单元实战排障与网管对接全指南

简介:本资源为华为SMU02C站点监控单元(V500R001C50版本)官方用户手册PDF文档,面向通信电源系统领域的销售工程师、技术支持工程师及现场维护人员,用于掌握该智能监控模块的安装部署、多方式管理(LCD本地操作…

2026/10/15 5:48:37 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →