HTTP/3与QUIC深度解析:从队头阻塞到部署实战
浏览器原理这个系列写到现在HTTP/3是我最想写又最不敢写的一篇。说不敢是因为HTTP/3表面看只是HTTP协议的第三个大版本内核里却把传输层的底座整个换了——它不像HTTP/1.1到HTTP/2那样只在应用层做文章而是直接把协议栈从TCP搬到了UDP上重新实现了一套可靠传输、拥塞控制和加密握手。所以这篇文章不会只讲几个新特性关键词就收工。我会从HTTP/2最让人头疼的队头阻塞讲起把QUIC为什么选择UDP、连接ID解决了什么问题、0-RTT到底省在哪一步、QPACK为什么必须重新设计再到浏览器里怎么看、服务端怎么配全部串起来聊一遍。如果你平时做Web开发、或者负责站点性能优化又或者只是想把DevTools里那个协议列从h2变成h3的过程彻底看明白这篇应该能帮你省不少事。1. 从队头阻塞说起HTTP/2差的那一口气1.1 一条TCP连接上的“假并行”HTTP/2在2015年落地的时候最响亮的口号就是“多路复用”。浏览器可以把几十个请求全部塞进同一条TCP连接流和流之间互不干扰看上去比HTTP/1.1那种“六个连接轮流排队”的体验高到不知道哪里去。但多路复用只解决到了应用层TCP那一层压根不买账。TCP从根本上是一个有序字节流。HTTP/2只是把不同stream的数据切成小块帧再按某种顺序交织着塞进同一条TCP连接里。问题就出在这个“有序”上如果某个字节段的包在网络里丢了TCP接收方虽然可能已经收到了后面很多字节但按照顺序交付的约定它不能把后面的数据交给上层应用只能先放在缓冲区里干等。等什么等那个丢掉的包重传回来。这个等待就是所有stream一起被卡死的那口恶气。HTTP/2把stream做到了应用层却把stream所依赖的“顺序交付”留在了TCP层。一时丢包全车停摆。很多人把这个称为TCP队头阻塞(Head-of-Line Blocking)准确说是“TCP层队头阻塞拖累了HTTP层的所有stram”。我画个画面感更强一点的比喻TCP连接的接收窗口像一条单车道隧道HTTP/2的各个stream就像隧道里跟着前车走的车队。前车在隧道里抛锚了后面的车明明已经开到跟前也得一起等救援。隧道不会自动给后面的车开一条独立通道因为隧道协议本身只支持一辆接一辆地过。1.2 握手成本RTT是一笔算不清的老账HTTP/2还有一个绕不开的痛是连接建立的RTT成本。先看一个最典型的HTTPS请求生命周期。TCP三次握手要1个RTTRound-Trip Time往返时间。TLS 1.3握手要1个RTTTLS 1.2还要2个RTT。也就是说一次全新连接想发出第一个HTTP请求通常要2到3个RTT。对北美到欧洲这种级联的跨洋链路来说一个RTT可能要150毫秒起步三个RTT就是将近半秒钟。会话恢复机制能减少一部分开销但一旦用户换了个网络、IP变了或者连接空闲断开TCP和TLS的很多“记忆”就失效了又得从头来一遍。尤其现在移动端用户的网络切换频率极高Wi-Fi切蜂窝、4G切5G、办公室走到会议室这些场景每天都在大量发生。HTTP/2本身没有本事解决这个问题。因为它脚下的TCP连接识别连接靠的是一组四元组源IP、源端口、目标IP、目标端口。其中任何一个字段变了TCP就认为这是一条新连接。应用层即使想保留会话语义底层也得全部重跑。1.3 为什么拖到今天才转正很多人会问既然问题这么明显为什么到今天才有正式的HTTP/3关键原因在于TCP是操作系统内核里的东西。要改TCP的行为得等各个操作系统发行版更新、等运营商升级中间设备、等新内核在广阔的生产环境里证明自己可靠。一个协议特性从设计到大规模铺开往往是以十年为单位的。QUIC的思路是绕开内核既然TCP改不动那就不在TCP上缝缝补补直接在UDP上面把传输层重新实现一遍。UDP是用户态就能玩的协议反正它只管尽力发送剩下的可靠传输、拥塞控制、重传逻辑、连接标识、加密握手全部交给用户态的库去做。这样一来新协议的新特性再也不用等操作系统更新了。浏览器升级、服务器软件升级、甚至库升级就能把整个传输层的体验往上拉。这也是为什么QUIC从2016年开始设计到2022年年中HTTP/3随RFC 9114正式发布后各大浏览器和主流服务器软件能在短短几年里快速跟进的原因。2. QUIC给了我们什么连接ID、0-RTT与独立流2.1 连接IDWi-Fi切流量再也不掉线QUIC最容易被低估的设计是它重新定义了“什么是一条连接”。TCP判断一条连接靠的是四元组而QUIC靠的是一个连接IDConnection ID。这个ID由服务器下发给客户端客户端之后发的所有数据包都带着它。只要有这个ID你再换IP、换端口、换Wi-Fi、换蜂窝网络服务器都认识你。这就是所谓的“连接迁移”手机从Wi-Fi切到流量时也许看似断网了几百毫秒但QUIC连接能直接续上不需要重新握手不需要重新协商加密参数。应用层的会话状态、已经确认收到的数据、还没完成的请求全都可以保留下来。我实际测试过一个下载大文件的场景同一台手机连着同一个网络服务中途把无线网络断开切换到移动网络QUIC连接上的下载几乎无缝继续进度条只是顿了一下而同一台手机走HTTP/2时切换网络直接触发TCP超时请求被中断下载进度丢失应用层只能重新发起。当然连接ID也不是完全没有代价。它意味着如果攻击者抓到了你的连接ID理论上可以在不同网络路径上“跟踪”同一个连接。所以QUIC里还有一种设计思路在公共网络环境使用短连接ID或者定期更换ID把隐私泄露面压到最低。2.2 0-RTT到底是省在哪一步HTTP/3经常被提到的卖点“0-RTT”很多人误以为是“第一次连接也不要RTT”。不是的。先来看看第一次连接的路径。QUIC的连接握手和TLS加密握手是合并在一起做的客户端一发Initial包服务器端回一个握手包双方交换完密钥参数之后客户端就能发送应用数据了。这个过程通常只需要1个RTT比TCPTLS 1.3的2个RTT省了一次往返。真正的0-RTT出现在第二次以及后续连接。前提是你之前已经成功连接过同一个服务器。客户端会把服务器的传输参数、TLS密钥材料、会话票据等信息安全地缓存下来。下次再连接时客户端完全不用等服务器响应第一个包就可以直接把请求数据放进“early data”里发出去。服务器收到这个包后可以在一跳之内完成解密和处理并返回响应。从用户视角看第二次访问同一个站点时请求几乎是“零等待”发出去的看不到握手的顿挫感。但0-RTT有一个必须认真对待的副作用重放攻击。因为客户端不需要等服务器确认就能发出数据攻击者可以把同样的加密包再次发给服务器诱导服务器重复处理同一个请求。所以实际部署中绝大多数服务器只对幂等请求比如GET、HEAD这类不会产生副作用的请求允许0-RTTPOST/PUT这类写操作一般会明确禁用early data或者做额外的重放防护。2.3 独立流丢包只拖累自己终于不用全员罚站QUIC把“多路复用”真正下沉到了自己的传输层。QUIC里同样有stream的概念但每个stream的数据是独立编号、独立确认、独立重传的。一个包丢了只影响那个丢包所属的stream其他stream的数据照常往上层递送。接收方不必像TCP那样为了保整体有序而把后续所有数据锁在缓冲区里。这就是HTTP/3能真正干掉“TCP层队头阻塞”的根本原因。我拿送货打个比方。HTTP/2相当于所有商家的货物都装进同一辆货车按顺序排列。路上掉了一箱货司机必须回头去捡整个车队都得停。QUIC则像是每个商家一辆车路上哪个车掉了货只有那个车停下来等补货其他车该开开、该送送。对实际浏览体验来说这意味着当一个页面有几十个请求、其中一个请求的网络质量变差时其他资源的加载不会被长时间拖累。弱网场景下差异尤其明显这也是为什么QUIC的早期测试数据里移动端弱网下的性能提升比有线宽带更亮眼。3. HTTP/3的新配件QPACK与帧层设计3.1 HPACK的解码顺序依赖为什么在QUIC里失灵谈完传输层还得回到HTTP层。HTTP请求和响应里大量的重复头部Cookie、User-Agent、Accept、各种自定义头如果不压缩每个请求都要白白多传几百上千字节。HTTP/2时代的解决方案是HPACK。HPACK的核心思路是维护一张“动态表”并不断往里面添加新条目。后续请求引用这些条目时只传一个索引号省下大量重复内容。这个机制在HTTP/2里能跑得很顺是因为它隐含了一个前提头部块的解码顺序与发送顺序完全一致。HPACK动态表的更新依赖于所有前序头部块都已经按序解码成功。而HTTP/3的传输层是QUIC。请求流可以乱序到达。浏览器可能先收到了后面某个请求流的HEADERS帧而前面那个更新了动态表状态的请求流还没到。此时如果强行解码就会引用到一个不存在的动态表条目。HPACK那套顺序依赖在QUIC的乱序环境里根本玩不转。3.2 QPACK用“专用传输流”把头压缩从顺序里解放出来QPACK是HTTP/3的头部压缩方案但它的设计完全不一样。QPACK同样有静态表和动态表但它把动态表的更新信息放进专门的“编码器流”和“解码器流”里跟承载请求和响应的数据流分开了。这样头部压缩表的更新是独立于请求流的不需要每个请求流都按顺序传递更新。具体到解码过程QPACK使用了一个叫“相对索引Relative Index”的机制。每个请求流的HEADERS帧可以引用动态表中任意位置的条目哪怕那个条目所在的上游数据还没到解码器也只需要在必要时等那一个特定条目而不是等整个动态表状态同步完成。这种设计让各请求流之间的压缩不再强耦合。一个流的头部解码失败不会让其他所有流的头部解码全部停摆。同时QPACK还允许解码器告诉编码器“我能接受多大的动态表”通过这种容量协商把可能发生的阻塞控制到最小。3.3 帧层控制流、请求流、推送流的各司其职HTTP/3在QUIC之上复用了很多HTTP/2的语义比如HEADERS帧、DATA帧、SETTINGS帧、GOAWAY帧但它的组织方式完全变了。HTTP/2是在一条TCP连接里塞streamHTTP/3则直接使用QUIC的流。一个请求就落在一条客户端发起的双向流上服务器同流返回响应。此外还有专门的单向流承载控制信息比如SETTINGS、GOAWAY这类生命周期管理帧不再像HTTP/2那样挤在同一条双向连接里抢位置。服务端推送也在HTTP/3里保留但改到了单独的推送流上避免和普通响应混在一起。这就带来一个很直观的好处HTTP/2里面那种“某个大响应长期霸占连接、导致同连接其他stream的调度优先级被搅乱”的问题在HTTP/3里更容易被隔离。每个请求有自己独立的流空间不太可能因为一个超大流量的下载把页面其他资源的加载全部拖入泥潭。4. 在浏览器里验证你用的到底是不是HTTP/34.1 看DevTools的Protocol列但要理解首次访问规律打开浏览器开发者工具切到Network面板右键表头勾选Protocol列。如果看到请求返回的协议值是h3就说明这次请求确实走了HTTP/3。但这里有个容易踩的误区你第一次访问某个站点时大概率看到的是h2或者http/1.1第二次刷新才可能变成h3。因为浏览器的行为逻辑是先用已有的HTTP/2或HTTP/1.1把页面请求发出去等服务器响应头里带回一个Alt-Svc字段它才知道“原来这台服务器在UDP 443端口上还开着HTTP/3服务”。这个信息会被浏览器缓存一段时间之后同一站点的新连接才改走HTTP/3。所以看到h2别急着怀疑服务器没配好。先强制刷新几次最好是无缓存刷新或者在浏览器的网络日志里确认Alt-Svc头是不是已经返回。4.2 命令行和抓包工具要这样组合着用浏览器之外我一般会先用命令行做一次快速探测。curl从8.0开始支持--http3参数如果你的curl编译时带了HTTP/3支持可以这样测# 一次性尝试HTTP/3失败自动回退到HTTP/2 curl --http3 -I https://example.com # 只允许HTTP/3方便判断服务器当前是否支持 curl --http3-only -sS -o /dev/null -w %{http_version}\n https://example.com如果输出是3说明测试环境走到的是HTTP/3。想看QUIC握手细节新版OpenSSL也带了QUIC能力openssl s_client -quic -alpn h3 -connect example.com:443这里-alpn h3指定要协商的协议为HTTP/3如果服务器支持你会看到握手参数和证书信息。再往深一层是抓包。Wireshark里可以直接也用quic作为过滤条件看到的是UDP 443端口上的QUIC包。但要注意QUIC的Payload是加密的普通抓包只能看到包头、流ID、帧类型这些元数据看不到里面的HTTP/3 HEADERS、DATA帧。想解密需要配合环境变量SSLKEYLOGFILE导出密钥让Wireshark用这串密钥去解密连接内容。这是排查问题定位到“到底是传输层问题还是应用层问题”的关键步骤。4.3 症状一直回退到HTTP/2排查链路怎么走如果你配置好了服务器但浏览器始终不肯用h3优先级最高的问题项基本可以按这个顺序排查现象可能原因动作首次访问是h2刷新后仍h2Alt-Svc响应头没配或值不合法检查服务器响应头里有没有Alt-Svc: h3:443; ma86400Alt-Svc有了但连不上h3UDP 443端口被防火墙或安全组拦截检查云安全组和本地防火墙用抓包验证UDP包是否到达服务器部分网络环境回退运营商或企业网络对UDP做了QoS限速或丢弃换一个网络环境测试或者考虑使用更成熟的服务商网络链路有时候h3有时候h2客户端版本太老或服务器只开了HTTP/3实验性附着确认浏览器版本确认服务器HTTP/3模块是否真的加载成功实际操作中Alt-Svc头已经存在但UDP不通是最容易被忽略的一种情况。因为浏览器会尝试连接h3一旦失败就回退到h2表现就是“之前还好好的今天怎么一直h2”。优先想到跑一次curl --http3-only做单点验证能大幅缩小排查范围。5. 服务端落地的那些坑和调优记录5.1 第一道坎UDP 443不是默认开放的很多人在配置阶段把注意力全放在模块编译和证书上结果上线后才发现外层防火墙把UDP 443挡得死死的。HTTP/3的端口默认是443/UDP但大量网络安全组、云防火墙、企业内网防火墙默认只对TCP 443放行。这个差别很容易被忽略因为TCP 443能访问就代表“网站正常”而UDP 443不可达对老页面的访问毫无影响只有尝试用HTTP/3的客户端才感知到连接失败。上线前可以先做个UDP连通性的粗略测试。如果你有一个支持HTTP/3的服务可以直接用刚才提到的curl --http3-only做验证如果这个命令反复超时八成就是在UDP层被拦截了。再用nc从外部打UDP包通常不可靠因为服务器不回ICMPUDP“通不通”并不容易直接测出来。最靠谱的办法是看服务端有没有收到UDP包。部署好HTTP/3后马上抓包确认服务器进程是否收到来自443/UDP的QUIC Initial包。收不到任何UDP包基本就是网络路径的问题而不是服务器配置的问题。5.2 最小配置从一行开关到手动编译服务器软件这块我建议看情况选择不同的路径。如果你用的服务器软件内置了HTTP/3支持比如Caddy配置里只需要明确说出要开启的协议版本example.com { protocols h1 h2 h3 }Caddy会自动管理证书自动跟随Alt-Svc逻辑对大部分中小站点来说这就是最丝滑的开启方式。如果是Nginx这类需要自己编译的过程会稍微曲折一点。从整理的实践来看最短路径是确认版本支持HTTP/3之后在原有的HTTPS配置块里加入QUIC监听server { listen 443 ssl http2; listen 443 quic reuseport; ssl_protocols TLSv1.3; add_header Alt-Svc h3:443; ma86400 always; }listen 443 quic reuseport是开启UDP 443的关键。reuseport让多个worker进程可以共享同一个UDP端口这是QUIC高并发场景下的建议配置。Alt-Svc头的作用是通知浏览器“这站点能走HTTP/3”必须让响应带上它否则浏览器永远只有等到第二次连接才去尝试h3。证书方面HTTP/3要求的TLS版本是1.3因为QUIC的加密握手直接构建在TLS 1.3之上。如果你的证书链或服务器软件只支持到TLS 1.2HTTP/3是不会有结果的。5.3 两件容易被低估的事0-RTT风险与连接迁移开启HTTP/3后有两个参数值得正眼看一下。一个是0-RTT。对GET这类幂等请求来说0-RTT很香第二次访问的体感几乎是把首字节TTFB压到零。但别忘了重放风险。生产环境里我建议优先在业务层做校验写操作一律不要走0-RTT或者给0-RTT请求打上特殊标记让后端判断是不是敏感操作。服务器软件层面如果提供了开关也要按业务特点去取舍。另一个是连接迁移。QUIC的连接迁移能力在你部署负载均衡或多节点服务时可能引发意料之外的复杂情况。比如用户从Wi-Fi切到流量源IP变了但连接ID没变如果前方的负载均衡设备不识别QUIC连接ID只按四元组做会话保持连接迁移请求可能会被调度到另一台后端节点导致握手状态丢失、连接重建。这个坑在传统TCP负载均衡迁移到QUIC时特别典型。解决方案通常是要么让负载均衡器支持QUIC连接ID一致性哈希要么直接卸载QUIC到后端节点保证连接ID和后端节点的映射稳定。5.4 实测中的收益弱网比想象中明显最后聊点运行时表现。我在自己一个以图片和静态资源为主的站点上做过对比HTTP/2到HTTP/3的切换在同等网络条件下首字节时间在有线网络上的下降不太大可能只有几十毫秒的差异。但在4G信号一般、或者办公室Wi-Fi高峰期场景下差异非常明显——资源加载完成时间从原来的3到5秒缩到了2秒左右。最典型的场景就是移动端页面同时加载几十个图片资源的场景。HTTP/2下某个请求一旦触发重传整个页面的加载节奏都会乱掉HTTP/3下因为每个流独立重传浏览器能更快地把关键CSS和JS拿到手页面可交互时间明显提前。如果你的站点用户主要是移动端、又经常处于弱网环境HTTP/3的收益大概率值得投进去。反过来如果用户都在低延迟内网、有线宽带上HTTP/3的体感提升相对有限更多意义在于协议栈的长期演进和减少队头阻塞风险。HTTP/3QUIC这套体系核心不是“让网络每次都快一点”而是让连接在有损网络里不再那么脆。我部署时踩过的UDP被拦、Alt-Svc漏配、负载均衡不认CID这几个坑基本也都是从“以为配置完就行”开始的——把传输层和网络路径的检查纳入上线清单HTTP/3才能真正跑得稳。

相关新闻

开放式代码审查实战:从流程搭建到协作效率提升

开放式代码审查实战:从流程搭建到协作效率提升

我接手过好几个中型仓库,里面有大量“高危但能跑到上线”的代码:吞掉的异常、裸奔的权限校验、藏在注释里的临时逻辑。很多都能在上线前被拦下来,前提是有人在Review时真的盯住了。这也是我为什么想写这篇关于open-code-review文章的原因。这…

2026/10/19 4:09:35 阅读更多 →
开源代码评审工具 open-code-review:把 Code Review 变成可量化的工程习惯

开源代码评审工具 open-code-review:把 Code Review 变成可量化的工程习惯

提到 code review,不少团队的回答都是“我们在做”,但真去翻一遍仓库的合并记录,会发现大量 PR 都是一个人开发、另一个人在合并前点了通过。评审更像走流程,而不是讨论问题。我维护了一个叫 open-code-review 的开源项目&#xf…

2026/10/19 4:09:35 阅读更多 →
STM32F103ZET6循迹小车竞速方案:灰度传感器与PID控制实战

STM32F103ZET6循迹小车竞速方案:灰度传感器与PID控制实战

简介:面向智能车竞速与STM32嵌入式学习的循迹小车完整工程,以72MHz主频的STM32F103ZET6作为核心控制器,机械结构采用舵机加双编码电机,通过一字排列的灰度传感器阵列识别黑线,从而检测车身在直道、环岛、S弯和连续直角…

2026/10/19 4:09:35 阅读更多 →

最新新闻

CentOS下BIND域名解析配置实战:从正向/反向解析到故障排查

CentOS下BIND域名解析配置实战:从正向/反向解析到故障排查

1. 项目概述:CentOS下的域名解析配置到底要做什么第五个年头做Linux运维,最常见的需求之一就是“帮我把域名解析配置上”。这句话在上线部署、内网服务联调、测试环境搭建里反复出现。尤其是新买了一台CentOS服务器,业务程序部署完了&#xf…

2026/10/19 4:48:02 阅读更多 →
select与poll深度剖析:从原理到实战,理解I/O多路复用核心机制

select与poll深度剖析:从原理到实战,理解I/O多路复用核心机制

早几年我刚入行做服务端开发的时候,接手了一个老项目,核心网络模块就是拿select写的。那时候我并没有多想,只觉得它把我从"一个连接一个线程"的泥潭里捞了出来,代码也能跑,线上也没啥大问题。直到后来自己写…

2026/10/19 4:48:02 阅读更多 →
Kafka集群部署实战:从单节点到高可用配置全解析

Kafka集群部署实战:从单节点到高可用配置全解析

1. 部署前的思维准备:Kafka 到底是怎么跑起来的很多人在第一次接触 Kafka 安装部署时,习惯直接上网搜一条命令复制粘贴,结果不是版本对不上,就是启动报一堆看不懂的异常。我在最开始踩坑时也这样,后来花了很长时间把 K…

2026/10/19 4:48:02 阅读更多 →
open-code-review实践:构建高效透明的代码审查流程

open-code-review实践:构建高效透明的代码审查流程

1. open-code-review 的命名背后:它到底在表达什么理念我第一次看到 open-code-review 这个项目名时,第一反应是:这不就是把 code review 加了个 open 前缀么?但真把这几个词拆开琢磨一遍,会发现事情没那么简单。它在工…

2026/10/19 4:48:02 阅读更多 →
图像缩放插值算法选型:从最近邻到边缘定向,MATLAB实现与性能对比

图像缩放插值算法选型:从最近邻到边缘定向,MATLAB实现与性能对比

简介:这份毕业论文以数字图像缩放技术为研究主题,面向图像处理学习者与电子信息类本科毕业生,系统介绍了数字图像采集、存储、处理与分析的基本流程,并重点剖析最近邻插值、双线性插值、双三次插值等经典算法,通过MATL…

2026/10/19 4:48:02 阅读更多 →
代码审查自动化实践:open-code-review规则引擎与CI集成详解

代码审查自动化实践:open-code-review规则引擎与CI集成详解

1. 为什么我要折腾一个叫 open-code-review 的东西先交代一下背景。我一直在维护一个十几人的研发团队,代码审查这件事从我开始带队伍起就断断续续做过很多轮,但说实话效果一直不稳定。团队的 Code Review 流程一开始用的是最原始的方式:提 P…

2026/10/19 4:47:01 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 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/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →