当前位置: 首页 > article >正文

HTTP/2与HTTP/3特性详解:为你的Nginx/Apache服务器开启下一代Web协议

更多服务器知识,尽在hostol.com

嘿,各位站长和服务器管理员朋友们!咱们天天跟网站打交道,都希望自己的网站能像火箭一样快,用户体验“嗖嗖”的。但你知道吗?除了服务器硬件配置、代码优化、CDN加速这些“常规操作”外,你的Web服务器所使用的HTTP协议版本,也对网站的“奔跑速度”起着至关重要的作用!很多服务器可能还在默默地跑着老旧的HTTP/1.1协议,就像开着一辆“老爷车”在信息高速公路上晃悠。是时候给你的“座驾”升级换代了!今天,Hostol就带你一起深入了解下一代Web协议——HTTP/2和更前沿的HTTP/3,看看它们到底有哪些“黑科技”,以及如何在你的Nginx或Apache服务器上开启它们,让你的网站也体验一把“速度与激情”!


回忆“慢时光”:HTTP/1.1的“阿喀琉斯之踵”

在聊HTTP/2和HTTP/3之前,咱们得先简单回顾一下现在仍在广泛使用的HTTP/1.1。它相比更早的HTTP/1.0,引入了持久连接(Persistent Connections / Keep-Alive)、管道化(Pipelining)等改进,功不可没。但廉颇老矣,面对如今内容越来越丰富、交互越来越复杂的网页,HTTP/1.1也显露出了它的“老态龙钟”:

  • 队头阻塞 (Head-of-Line Blocking, HOLB): 这是HTTP/1.1最主要的性能瓶颈。想象一下,你在超市排队结账,前面有个人买了一大车东西,还各种找优惠券、墨迹半天,你就算只买了一瓶水,也得在他后面干等着。HTTP/1.1的请求和响应也是类似的“串行”模式,在一个TCP连接上,必须等前一个请求的响应完全回来后,下一个请求才能发出或被处理。一旦某个请求卡住,后面的所有请求都得“干瞪眼”。
  • TCP连接数限制: 为了缓解队头阻塞,浏览器通常会针对同一个域名同时建立多个TCP连接(一般是6个左右)来并行加载资源。但这又带来了新的问题:每个TCP连接的建立都需要“三次握手”的开销,消耗服务器资源,而且连接数过多本身也会造成网络拥堵。
  • 头部冗余: HTTP请求和响应的头部信息,在同一会话中很多内容是重复的,比如Cookie、User-Agent等,但HTTP/1.1每次都会完整发送,造成不必要的流量浪费。
  • 单向请求: 只能由客户端发起请求,服务器才能响应。服务器不能主动给客户端“推”东西(除非用一些变通的技术如WebSocket或SSE)。

正是因为这些“先天不足”,前端工程师们才发明了各种“奇技淫巧”来优化性能,比如把多个CSS/JS文件合并(减少请求数)、图片精灵(CSS Sprites)、域名分片(Domain Sharding,突破浏览器连接数限制)等等。这些方法虽然有一定效果,但治标不治本,还增加了开发和维护的复杂度。


HTTP/2:Web性能的“第一次大提速”——多车道高速公路时代!

HTTP/2(最早基于Google的SPDY协议)的出现,就是为了从根本上解决HTTP/1.1的这些痛点。它不是对HTTP/1.1的小修小补,而是一次彻底的“革新换代”。你可以把它想象成,咱们把原来拥挤不堪的“国道单行线”(HTTP/1.1)直接升级成了“双向八车道高速公路”!

重要前提:HTTPS是标配! 虽然HTTP/2协议本身不强制加密,但目前几乎所有主流浏览器(Chrome, Firefox, Edge, Safari等)都只支持通过TLS加密(即HTTPS)的HTTP/2连接。所以,想用HTTP/2?先给你的网站上HTTPS吧!这本身也是大势所趋,对安全大有裨益。

HTTP/2的核心“黑科技”:

  1. 二进制分帧层 (Binary Framing Layer): HTTP/1.1是基于文本的,而HTTP/2则引入了一个新的二进制分帧层。所有通信数据都会被分割成更小、更易管理的消息和帧(Frames),并采用二进制格式编码。这就像以前写信是手写(文本),现在是打印标准格式的快递单(二进制帧),解析效率更高,更不容易出错。
  2. 多路复用 (Multiplexing):真正的并行传输! 这是HTTP/2最核心、最具革命性的特性!它允许多个请求和响应(对应不同的“流”Stream)同时在一个TCP连接上并行、交错地进行传输,而不会互相阻塞。想象一下,在HTTP/2这条“多车道高速公路”上,小轿车(小请求)、大卡车(大响应)都可以在各自的车道上同时飞驰,互不干扰。这就从根本上解决了HTTP/1.1的队头阻塞问题(注意,是HTTP应用层面的队头阻塞,TCP层面的队头阻塞后面HTTP/3会解决)。一个域名只需要一个TCP连接就能搞定所有通信,大大减少了连接建立的开销。
  3. 头部压缩 (Header Compression - HPACK):给你的请求“减负” HTTP/2使用HPACK算法来压缩请求和响应的头部信息。它会为通信双方维护一个共享的“头部字典”,对于重复出现的头部字段(比如User-Agent, Accept等),只需要发送一个索引号就行,大大减少了传输数据量,尤其是在移动网络环境下效果显著。这就像咱们聊天,说了很多遍“你好”,后面直接用“1”代替“你好”,对方也能懂。
  4. 服务器推送 (Server Push):我猜到你想要啥!(目前应用有争议) 服务器可以在客户端请求一个HTML页面后,主动将该页面可能会用到的其他资源(比如CSS文件、JS脚本、关键图片)“推送”给客户端,而无需客户端再次发起请求。这就像一个贴心的服务员,在你点完主菜后,主动把餐具和柠檬水给你送上来了。理论上能减少请求往返次数,加快页面加载。但实际应用中,由于缓存处理、CDN兼容性以及推送时机难以把握等问题,Server Push的效果并不总是理想,很多时候甚至可能好心办坏事。目前,这个特性用得相对谨慎,很多场景下大家更倾向于使用<link rel="preload">等方式进行资源预加载。
  5. 请求优先级 (Stream Prioritization):重要的事儿优先办! 客户端可以告知服务器哪些请求的资源更重要(比如页面渲染关键的CSS优先于底部的图片),服务器可以根据这个优先级来更合理地分配资源和发送数据,优化用户感知的加载速度。

HTTP/2对前端优化的影响:

有了HTTP/2,很多以前为了绕过HTTP/1.1限制而采取的前端优化“黑魔法”就不再那么必要,甚至可能适得其反了:

  • 文件合并 (Concatenation): 比如把多个CSS或JS文件合并成一个大文件。在HTTP/2下,由于多路复用,加载多个小文件和加载一个大文件的开销差异不大,反而小文件更容易利用缓存、按需加载。
  • 图片精灵 (CSS Sprites): 将多个小图标合并成一张大图,通过CSS背景定位显示。同样,多路复用使得加载多个小图标的额外开销降低。
  • 域名分片 (Domain Sharding): 将资源分布在多个域名下以突破浏览器对单域名并发连接数的限制。在HTTP/2下,一个连接就足够高效,域名分片反而会增加DNS查询和TCP连接建立的开销。

如何在Nginx/Apache上开启HTTP/2?

Nginx (版本通常需要1.9.5+):

非常简单!只需要在你的HTTPS `server`块的`listen`指令后面加上http2参数即可:

server {listen 443 ssl http2 default_server;# listen [::]:443 ssl http2 default_server; # 如果支持IPv6ssl_certificate /path/to/your/fullchain.pem;ssl_certificate_key /path/to/your/privkey.pem;# ...其他配置...
}

然后重载Nginx配置:sudo systemctl reload nginx

Apache (版本通常需要2.4.17+,并加载mod_http2模块):

首先,确保mod_http2模块已启用:sudo a2enmod http2 (Debian/Ubuntu) 或者检查你的httpd.conf。 然后在你的配置文件(比如httpd.conf或虚拟主机配置文件)中,通过Protocols指令来声明支持的协议顺序:

&lt;IfModule http2_module&gt;Protocols h2 http/1.1# 如果也想在非加密连接上启用HTTP/2 (不推荐,且浏览器通常不支持)# Protocols h2c http/1.1 
&lt;/IfModule&gt;&lt;VirtualHost *:443&gt;ServerName yourdomain.comSSLEngine onSSLCertificateFile /path/to/your/fullchain.pemSSLCertificateKeyFile /path/to/your/privkey.pem# 明确为这个虚拟主机启用HTTP/2Protocols h2 http/1.1# ...其他配置...
&lt;/VirtualHost&gt;

然后重启Apache:sudo systemctl restart apache2 (或 httpd)。


HTTP/3:飞跃到QUIC跑道——彻底告别TCP队头阻塞!

HTTP/2已经很棒了,但它依然是构建在TCP协议之上的。而TCP本身,也存在一个“娘胎里带出来”的队头阻塞问题:如果一个TCP连接中某个数据包丢失了,那么在这个包被重传并成功接收之前,后面所有的数据包(即使它们已经到达了)都得等着,整个TCP连接都会被“卡住”。HTTP/2的多路复用解决了应用层的HOLB,但解决不了TCP传输层的HOLB。这就好比,你的多车道高速公路上,如果路基(TCP)塌了一块,那所有车道都得停下来等修路。

于是,HTTP/3横空出世!它的最大、最根本的改变就是——不再使用TCP作为传输层协议,而是基于一个全新的协议QUIC (Quick UDP Internet Connections)! QUIC本身是运行在UDP之上的。

“啥?UDP?那个不可靠、会丢包的家伙?” 你可能会这么想。别急,QUIC虽然基于UDP的“自由散漫”,但它在UDP之上重新实现了一套可靠传输、拥塞控制、多路复用、甚至加密(集成了TLS 1.3)的机制!你可以把它看作是“站在UDP肩膀上的TCP+TLS+HTTP/2的超级加强版”。

HTTP/3 (通过QUIC)的核心“超能力”:

  1. 彻底消除队头阻塞 (HOLB at Transport Layer): QUIC在单个连接内实现了多个独立的“流”(Streams)。每个HTTP请求/响应都在自己的流里传输。如果某个流中的一个UDP包(承载QUIC包)丢失了,它只会影响到当前这个流的数据重传,其他并行的流完全不受影响,可以继续传输。这就像是从“共享路基的多车道高速公路”升级到了“各自独立的磁悬浮列车轨道”,一条轨道出问题,不影响其他轨道上的列车飞驰!这对网络质量不佳(比如移动网络)的环境下,体验提升巨大。
  2. 更快的连接建立 (0-RTT or 1-RTT Handshake): 传统的TCP连接需要3次握手,HTTPS还需要额外的TLS握手(通常1-2个RTT来回时延)。QUIC在设计之初就集成了TLS 1.3的加密和认证机制,首次连接通常只需要1个RTT,而已建立过连接的客户端再次连接时,甚至可能实现0-RTT(零往返时延)的连接恢复!这就像VIP客户,刷脸就能进门,无需繁琐验证。
  3. 连接迁移 (Connection Migration):网络切换“不掉线” 我们用手机时,经常会从Wi-Fi网络切换到4G/5G蜂窝网络,或者反过来。在TCP下,这种网络(IP地址和端口)的改变通常会导致连接中断,需要重新建立。而QUIC使用一个“连接ID”(Connection ID)来唯一标识一个连接,这个ID不依赖于底层的IP和端口。所以,当你的网络发生切换时,只要连接ID不变,QUIC连接就可以“无缝迁移”,保持应用数据的持续传输。这对移动用户体验改善巨大。
  4. 改进的拥塞控制 (Improved Congestion Control): QUIC的拥塞控制机制是可插拔的,并且在用户空间实现(而不是像TCP那样在内核空间),这使得它可以更快地迭代和部署新的、更先进的拥塞控制算法(比如BBR的变种)。

HTTP/3的挑战与现状:

  • 新技术的普及过程: 虽然主流浏览器(Chrome, Firefox, Edge, Safari)和很多大型网站(如Google, Facebook, Cloudflare)都已经支持HTTP/3,但它的整体普及率仍在逐步提升中。
  • UDP的“待遇问题”: 一些老旧的防火墙、路由器或运营商网络,可能会对UDP流量进行限制甚至直接丢弃(因为历史上UDP常被用于DDoS攻击),这可能导致HTTP/3连接失败,浏览器会回退到HTTP/2或HTTP/1.1。
  • 服务器端支持与配置: Nginx和Apache对HTTP/3的支持也在不断完善中。Nginx的官方主线版本从1.25.0开始正式支持HTTP/3,但可能需要特定的编译选项或依赖。Apache对HTTP/3的支持通常依赖第三方模块如mod_http3 (基于lsquic库)。
  • CPU消耗: 由于QUIC将很多原本在内核中由硬件加速处理的TCP/TLS逻辑放到了用户空间,并且需要处理加密解密,所以CPU消耗可能会比HTTP/2稍高一些,尤其是在高流量下。不过随着软硬件的优化,这个问题也在逐步改善。

如何在Nginx/Apache上开启HTTP/3 (示例性,具体请参考最新官方文档)?

Nginx (例如,版本1.25.0+,并假设已编译QUIC支持):

你需要同时监听TCP(用于HTTP/1.1, HTTP/2)和UDP(用于HTTP/3)端口,并通过Alt-Svc头部告知浏览器HTTP/3的可用性。

server {# HTTP/1.1 and HTTP/2listen 443 ssl http2;listen [::]:443 ssl http2; # IPv6# HTTP/3# 'reuseport' is recommended for multi-worker QUIClisten 443 quic reuseport;listen [::]:443 quic reuseport; # IPv6ssl_certificate /path/to/your/fullchain.pem;ssl_certificate_key /path/to/your/privkey.pem;# (推荐) 开启TLS 1.3的0-RTT数据,对HTTP/3的0-RTT连接建立有益ssl_early_data on; # 添加Alt-Svc头部,宣告HTTP/3服务的存在# "h3"表示HTTP/3在当前监听的QUIC端口上可用# ma=86400 表示这个宣告在24小时内有效add_header Alt-Svc 'h3=":443"; ma=86400';# 如果你的HTTP/3跑在不同端口,比如UDP 4433,那就是 'h3=":4433"; ma=86400'# ...其他server配置...# HTTP/3相关的特定配置 (可能需要,具体看Nginx版本和编译情况)# 예를 들면:# http3 on; # 较新版本可能不需要显式声明# quic_retry on;
}

Apache (通常需要第三方模块如mod_http3):

Apache对HTTP/3的支持通常依赖于像mod_quic (由Apache Software Foundation开发中) 或社区/第三方提供的mod_http3模块。配置方式会因模块而异。你需要先编译和加载相应的模块,然后在配置文件中启用它,并可能需要指定QUIC监听的UDP端口以及证书等。一个高度简化的概念性配置可能类似:

&lt;IfModule http3_module&gt;Protocols h3 h2 http/1.1# 可能还需要指定QUIC监听的UDP端口和相关参数# H3Listen *:443 # 假设模块这样配置UDP监听# H3AltSvcMA 86400# H3EarlyData on
&lt;/IfModule&gt;&lt;VirtualHost *:443&gt;ServerName yourdomain.comSSLEngine on# ...证书配置...# 确保这里也声明了h3 (如果模块允许)Protocols h3 h2 http/1.1# ...其他配置...
&lt;/VirtualHost&gt;

请务必查阅你所用Nginx/Apache版本以及相关HTTP/3模块的最新官方文档以获取准确的配置方法! 因为这块技术发展很快,配置指令和要求也在不断演进。


我该用哪个?HTTP/2还是HTTP/3?

  • HTTP/2: 如果你的网站已经上了HTTPS,那么开启HTTP/2几乎是“零成本高回报”的必选项!它得到了所有现代浏览器和主流Web服务器的良好支持,能实实在在地提升网站性能。
  • HTTP/3: 这是一个更优的选择,尤其能改善移动用户和网络不稳定用户的体验。如果你的服务器软件(Nginx/Apache)和你的运维能力能够支持它(比如处理可能的UDP防火墙问题、关注CPU消耗等),那么大胆启用吧!你可以同时开启HTTP/2和HTTP/3,支持HTTP/3的浏览器会自动尝试使用它,不支持的则会平滑回退到HTTP/2。

如何验证是否成功开启?

  • 浏览器开发者工具: 打开你网站,按F12打开开发者工具,切换到“网络”(Network)标签页,刷新页面,查看请求列表中的“协议”(Protocol)列。如果看到h2HTTP/2,说明HTTP/2生效;如果看到h3HTTP/3,恭喜你,HTTP/3也成功上马了!
  • 在线检测工具: 有很多在线工具可以帮你检测网站是否支持HTTP/2和HTTP/3,比如搜索“HTTP/2 test”或“HTTP/3 check”。


从拥堵的HTTP/1.1单行道,到HTTP/2的多车道高速,再到HTTP/3的QUIC磁悬浮快线,Web协议的每一次进化,都是为了给我们带来更快、更流畅、更安全的上网体验。作为服务器的“掌舵人”,及时了解并应用这些新技术,不仅能让你的用户“爽歪歪”,也能让你的服务器资源得到更高效的利用。还在等什么?赶紧检查一下你的服务器配置,让它也搭上这趟驶向未来的“高速列车”吧!Hostol将与你一同关注Web技术的最新进展,为你的网站加速保驾护航!

相关文章:

HTTP/2与HTTP/3特性详解:为你的Nginx/Apache服务器开启下一代Web协议

更多服务器知识&#xff0c;尽在hostol.com 嘿&#xff0c;各位站长和服务器管理员朋友们&#xff01;咱们天天跟网站打交道&#xff0c;都希望自己的网站能像火箭一样快&#xff0c;用户体验“嗖嗖”的。但你知道吗&#xff1f;除了服务器硬件配置、代码优化、CDN加速这些“常…...

构建高效智能客服系统的8大体验设计要点

构建一流的客户服务中心体验&#xff0c;企业需要以用户需求为核心&#xff0c;将智能化流程、前沿科技与人文关怀有机结合&#xff0c;打造流畅、高效且富有温度的服务生态。在客户需求日益多元化的今天&#xff0c;单纯的问题解决能力已无法满足期待&#xff0c;关键在于通过…...

CppCon 2014 学习:Making C++ Code Beautiful

你说的完全正确&#xff0c;也很好地总结了 C 这门语言在社区中的两种典型看法&#xff1a; C 的优点&#xff08;Praise&#xff09; 优点含义Powerful允许底层控制、系统编程、高性能计算、模板元编程、并发等多种用途Fast无运行时开销&#xff0c;接近汇编级别性能&#x…...

副本(Replica)在Elasticsearch中扮演什么角色?

在Elasticsearch(ES)中,副本(Replica)是主分片(Primary Shard)的镜像拷贝,与主分片共同构成分布式索引的高可用性和高性能架构。副本的设计目标是解决数据冗余、负载均衡和故障恢复等核心问题,其具体作用和原理如下: 一、副本的核心角色与功能 1. 数据冗余与故障恢…...

据传苹果将在WWDC上发布iOS 26 而不是iOS 19

苹果可能会对其操作系统的编号方式做出重大改变&#xff0c;基于年份的新版系统会将iOS 19重新命名为 iOS 26&#xff0c;同时 macOS 也会以同样的方式命名。 苹果的编号系统相当简单&#xff0c;版本号每年都会像钟表一样定期更新。然而&#xff0c;今年秋天情况可能有所不同&…...

整理了Windows(7—11)官方镜像下载链接和各版本区别介绍

原文《整理了Windows&#xff08;7—11&#xff09;官方镜像下载链接和各版本区别介绍》 引言 在安装或重装Windows系统时&#xff0c;使用微软官网提供的正版ISO镜像可以保证系统完整性和安全更新&#xff0c;避免使用第三方盗版镜像带来的恶意软件、广告风险。 本期汇总了微…...

数据库主键与索引详解

目录 主键核心特性 主键必要性问题 索引核心解析 基本定义 优劣分析 索引类型对比 数据结构实现 工作原理 主键与索引核心区别 主键核心特性 唯一标识&#xff1a;确保字段数据不重复且不为空数量限制&#xff1a;每表仅允许存在一个主键存储类型&#xff1a;通常采用…...

RTOS:启动调度器的作用(含源码逐行解读)

文章目录 前言一、启动调度器二、详细逻辑分析三、逐行分析3.1、traceENTER_vTaskStartScheduler3.2、configASSERT( ( sizeof( UBaseType_t ) * taskBITS_PER_BYTE ) > configNUMBER_OF_CORES );3.3、xReturn prvCreateIdleTasks();3.4、xTimerCreateTimerTask();3.5、fre…...

【Python 进阶】抽象基类(Abstract Base Class)

abc 模块和抽象基类(Abstract Base Class)的概念&#xff1a; 本文的示例代码来源于 break-a-scene. abc 是 Python 标准库中的一个模块&#xff0c;全称是 “Abstract Base Classes”&#xff08;抽象基类&#xff09;。它提供了一种定义抽象类和抽象方法的机制。在以下代码…...

Armv7l或树莓派32位RPI 4B编译faiss

pip3 install faiss-cpu当然找不到预编译的包 手动下载 git clone https://github.com/facebookresearch/faiss.git cd faiss #能需要切换到特定版本标签&#xff0c;例如 v1.7.1&#xff0c;这个版本Cmake 3.18可以过&#xff0c;因为apt install安装的cmake只更新到这里&am…...

嵌入式开发STM32 -- 江协科技笔记

1.背景介绍及基础认知 8大输入输出 斯密特触发器&#xff1a;高于设定阈值输出高电平&#xff0c;低于设定阈值输出低电平 有关上拉输入、下拉输入、推挽输出、开漏输出、复用开漏输出、复用推挽输出以及浮空输入、模拟输入的区别 1、上拉输入&#xff1a;上拉就是把电位拉高…...

[网页五子棋][用户模块]客户端开发(登录功能和注册功能)

文章目录 客户端开发登录功能htmlcsscommon.csslogin.css jQuery引入 jquery 运行程序注册功能 客户端开发 登录功能 html <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport&…...

nt!MiInitializeSystemCache函数分析之PointerPte->u.List.NextEntry的由来

第一部分&#xff1a; 1: kd> dd 0xc0304200 c0304200 c10c0000 00000000 00000000 00000000 c0304210 00000000 00000000 00000000 00000000 c0304220 00000000 00000000 00000000 00000000 c0304230 00000000 00000000 00000000 00000000 c0304240 00000000 00000000…...

MQTT协议,EMQX部署,MQTTX安装学习

一、MQTT概述 1.什么是MQTT MQTT是一种基于“发布订阅“”模式的消息传输协议。 消息&#xff1a;设备和设备之间传输的数据&#xff0c;或者服务和服务之间要传输的数据。 协议&#xff1a;传输数据时所遵循的规范。 2.常见的通讯模式 &#xff08;1&#xff09;客户端-服…...

如何理解UDP 和 TCP 区别 应用场景

UDP与TCP的定义、特性、使用场景及对比表格 定义 UDP&#xff08;User Datagram Protocol&#xff09;是一种无连接的传输层协议&#xff0c;提供不可靠的数据报服务。 TCP&#xff08;Transmission Control Protocol&#xff09;是一种面向连接的传输层协议&#xff0c;提供…...

60天python训练计划----day40

DAY 40 训练和测试的规范写法 知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中展平操作&#xff1a;除第一个维度batchsize外全部展平dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 一.单通道图…...

干泵,干式螺杆真空泵

干式真空泵&#xff1a; 无油干式机械真空泵&#xff08;又简称干式机械泵&#xff09;是指泵能从大气压力下开始抽气&#xff0c;又能将被抽气体直接排到大气中去&#xff0c;泵腔内无油或其他工作介质&#xff0c;而且泵的极限压力与油封式真空泵同等量级或者接近的机械真空泵…...

Tailwind CSS 实战:基于 Kooboo 构建 AI 对话框页面(五):语音合成输出与交互增强

Tailwind CSS 实战&#xff0c;基于Kooboo构建AI对话框页面&#xff08;一&#xff09; Tailwind CSS 实战&#xff0c;基于Kooboo构建AI对话框页面&#xff08;二&#xff09;&#xff1a;实现交互功能 Tailwind CSS 实战&#xff0c;基于 Kooboo 构建 AI 对话框页面&#x…...

职业本科院校无人机专业人才培养解决方案

2023年的中央经济工作会议强调了以科技创新推动现代化产业体系构建的重要性&#xff0c;并提出发展生物制造、商业航天、低空经济等战略性新兴产业。低空经济&#xff0c;依托民用无人机等低空飞行器&#xff0c;在多场景低空飞行活动的牵引下&#xff0c;正逐步形成一个辐射广…...

利用机器学习优化数据中心能效

数据中心作为现代社会的数字基础设施&#xff0c;支撑着云计算、大数据分析、人工智能等关键技术的发展。然而&#xff0c;随着数据中心规模的不断扩大&#xff0c;其能源消耗问题也日益凸显。如何提高数据中心的能源效率&#xff0c;降低运营成本&#xff0c;同时减少环境影响…...

软件评测机构如何保障质量?检测资质、技术实力缺一不可

软件评测机构在保障软件质量上起着关键作用&#xff0c;对软件行业的健康发展极为关键。它们采用专业的技术手段和严格的评估流程&#xff0c;对软件的运行效果、功能等多方面进行细致的审查&#xff0c;为开发者和使用者提供了客观、公正的参考依据。 检测资质正规软件评测机…...

微软开源bitnet b1.58大模型,应用效果测评(问答、知识、数学、逻辑、分析)

微软开源bitnet b1.58大模型,应用效果测评(问答、知识、数学、逻辑、分析) 目 录 1. 前言... 2 2. 应用部署... 2 3. 应用效果... 3 1.1 问答方面... 3 1.2 知识方面... 4 1.3 数字运算... 6 1.4 逻辑方面... …...

ubuntu 安装上传的 ffmpeg_7.1.1.orig.tar.xz并使用

在 Ubuntu 系统上离线安装 make 需要提前准备好所有依赖包。以下是详细的操作步骤&#xff1a; 准备工作&#xff1a;在有网络的机器上下载所需软件包 查找依赖关系 在有网络的 Ubuntu 机器上&#xff08;需与目标机器相同版本&#xff09;执行&#xff1a; # 获取 make 及其依…...

Web3怎么开发类似MetaMask的钱包

开发一个类似MetaMask的钱包&#xff0c;关键就是要利用以太坊提供的官方接口和标准&#xff0c;主要涉及以下几点&#xff1a; 1. 你要用到的以太坊官方接口和规范 JSON-RPC API 以太坊节点&#xff08;如Geth、OpenEthereum等&#xff09;通过JSON-RPC接口暴露各种功能&…...

Linux多线程(六)之线程控制4【线程ID及进程地址空间布局】

文章目录 线程ID及进程地址空间布局线程局部存储 线程ID及进程地址空间布局 pthread_ create函数会产生一个线程ID&#xff0c;存放在第一个参数指向的地址中。 该线程ID和前面说的线程ID不是一回事。 前面讲的线程ID属于进程调度的范畴。 ​ 因为线程是轻量级进程&#xff…...

1.什么是node.js、npm、vue

一、Node.js 是什么&#xff1f; &#x1f63a; 定义&#xff1a; Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境&#xff0c;让你可以在浏览器之外运行 JavaScript 代码&#xff0c;主要用于服务端开发。 &#x1f63a;从计算机底层说&#xff1a;什么是“运…...

Xamarin入门笔记(Xamarin已经被MAUI取代)

初级代码游戏的专栏介绍与文章目录-CSDN博客 Xamarin入门 概述 环境 Android开发环境比较简单&#xff0c;自带模拟器&#xff0c;实体机打开开发者模式即可。 iOS开发环境比较复杂&#xff0c;必须搭配Mac电脑&#xff0c;Windows连接Mac开发可能有问题&#xff08;比如发…...

排查Oracle文件打开数过多

Oracle数据库在运行过程中&#xff0c;会打开大量的文件以执行其操作&#xff0c;包括数据文件、控制文件、日志文件等。如果Oracle用户打开的文件数过多&#xff0c;可能会引起系统性能下降。下面将深入分析Oracle用户文件打开数的优化策略&#xff0c;以帮助数据库管理员&…...

应用层协议http(无代码版)

目录 认识URL urlencode 和 urldecode HTTP 协议请求与响应格式 HTTP 的请求方法 GET 方法 POST 方法 HTTP 的状态码 HTTP 常见 Header Location 关于 connection 报头 HTTP版本 远程连接服务器工具 setsockopt 我们来学习应用层协议http。 虽然我们说, 应用层协…...

8.5 Q1|广州医科大学CHARLS发文 甘油三酯葡萄糖指数累积变化与 0-3期心血管-肾脏-代谢综合征人群中风发生率的相关性

1.第一段-文章基本信息 文章题目&#xff1a;Association between cumulative changes of the triglyceride glucose index and incidence of stroke in a population with cardiovascular-kidney-metabolic syndrome stage 0-3: a nationwide prospective cohort study 中文标…...