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

HTML5 服务器发送事件(Server-Sent Events)

1. 引言

HTML5 服务器发送事件(Server-Sent Events,SSE)是一种基于 HTTP 的服务器推送技术,允许服务器主动向客户端(如浏览器)发送实时更新。SSE 适用于单向通信场景,如新闻推送、实时价格更新等。本文将系统介绍 SSE 的定义、实现方式和用法,并通过实例展示其应用,帮助你掌握其核心知识。


2. 什么是 Server-Sent Events?

  • 定义:SSE 是 HTML5 提供的一种技术,通过 EventSource 接口建立持久化的 HTTP 连接,使服务器能够随时推送数据到客户端。
  • 特点
  • 单向通信:服务器到客户端推送,客户端无法通过同一连接发送数据。
  • 基于 HTTP:使用标准 HTTP 协议,轻量且易于实现。
  • 自动重连:浏览器内置重连机制,增强可靠性。

3. SSE 的工作原理

  • 连接建立:客户端通过 EventSource 对象向服务器发起请求,指定一个事件流 URL。
  • 数据推送:服务器保持连接打开,并以 text/event-stream 格式发送数据。
  • 事件处理:客户端监听事件(如 message),接收并处理服务器推送的数据。
  • 重连机制:若连接断开,浏览器会自动尝试重连(默认间隔约 2 秒,可由服务器调整)。

4. SSE 的核心 API

4.1 EventSource 对象

  • 作用:用于建立和维护与服务器的 SSE 连接。
  • 语法

1

const source = new EventSource(url, { withCredentials: false });

  • 属性
  • readyState:连接状态(CONNECTING = 0OPEN = 1CLOSED = 2)。
  • url:事件源地址。
  • 方法
  • close():关闭连接。

4.2 事件类型

  • message:默认事件,当服务器发送数据时触发。
  • open:连接建立时触发。
  • error:连接失败或中断时触发。
  • 自定义事件:服务器可定义特定事件名,客户端通过 addEventListener 监听。

5. SSE 的使用

5.1 客户端实现

  • 示例:监听服务器推送的时间更新

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<script>

  if (typeof EventSource !== "undefined") {

    const source = new EventSource("server.php");

    source.onmessage = function(event) {

      document.getElementById("result").innerHTML += event.data + "<br>";

    };

    source.onerror = function() {

      console.log("连接错误");

    };

  } else {

    alert("浏览器不支持 SSE");

  }

</script>

<div id="result"></div>

5.2 服务器端实现

  • 要求
  • 设置 Content-Type: text/event-stream
  • 数据格式以 data: 开头,每条消息以双换行符 \n\n 分隔。
  • 示例(PHP):推送当前时间

1

2

3

4

5

6

7

8

9

10

<?php

header("Content-Type: text/event-stream");

header("Cache-Control: no-cache");

while (true) {

  echo "data: " . date("Y-m-d H:i:s") . "\n\n";

  flush(); // 立即发送数据

  sleep(2); // 每 2 秒推送一次

}

?>


6. 实例:SSE 应用

以下是一个完整的实时更新示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

<!DOCTYPE html>

<html lang="zh">

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>SSE 示例</title>

  <style>

    body { font-family: Arial, sans-serif; margin: 20px; text-align: center; }

    #updates { padding: 10px; background: #f0f0f0; min-height: 100px; }

  </style>

</head>

<body>

  <h1>实时服务器更新</h1>

  <div id="updates"></div>

  <script>

    if (typeof EventSource !== "undefined") {

      const source = new EventSource("updates.php");

      source.onopen = () => console.log("连接已建立");

      source.onmessage = (event) => {

        document.getElementById("updates").innerHTML += event.data + "<br>";

      };

      source.onerror = () => console.log("连接中断,将尝试重连...");

      // 可手动关闭连接

      // setTimeout(() => source.close(), 10000);

    } else {

      document.getElementById("updates").innerHTML = "浏览器不支持 SSE";

    }

  </script>

</body>

</html>

  • 服务器端(updates.php)

1

2

3

4

5

6

7

8

9

10

11

12

13

<?php

header("Content-Type: text/event-stream");

header("Cache-Control: no-cache");

$count = 0;

while ($count < 5) {

  $time = date("Y-m-d H:i:s");

  echo "data: 当前时间: $time\n\n";

  flush();

  sleep(1);

  $count++;

}

?>

  • 运行方法:将文件保存到支持 PHP 的服务器(如 localhost),访问 HTML 文件。
  • 效果:每秒显示一次服务器时间,共 5 次。

7. 最佳实践与注意事项

  • 浏览器支持:Chrome、Firefox、Safari、Edge 支持良好,IE 不支持(需 polyfill)。
  • 连接管理
  • 使用 retry: 设置重连间隔(如 retry: 5000 表示 5 秒)。
  • 监听 error 事件处理断连。
  • 性能优化
  • 避免频繁推送大数据,建议使用 JSON 格式压缩数据。
  • 添加心跳机制(如定期发送空数据)防止超时。
  • 安全性
  • 使用 HTTPS 确保数据安全。
  • 设置 Access-Control-Allow-Origin 支持跨域请求。
  • 替代方案:若需双向通信,可考虑 WebSocket。

8. 结论

HTML5 Server-Sent Events 提供了一种简单高效的服务器推送方案,适用于实时单向数据更新的场景,如股票价格、通知推送等。本文介绍了 SSE 的原理和实现方法,并通过实例展示了其应用。如需更多动态功能,可参考 HTML 脚本 或访问 W3C 文档(w3.org)。


回答特点

  • 结构:包含目录、带锚点的小标题和代码示例,逻辑清晰。
  • 实用性:从概念到应用,覆盖 SSE 核心知识。
  • 内部链接:通过 <a href="#ID"> 跳转,如 SSE 的使用。
  • 出站链接:嵌入正文,指向权威资源。

如何运行示例

  • 将代码保存为 .html 和 .php 文件,部署到支持 PHP 的服务器(如 XAMPP),访问 HTML 文件即可体验。

https://www.52kanjuqing.com/2025/02/11/html5-%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%8f%91%e9%80%81%e4%ba%8b%e4%bb%b6server-sent-events/

相关文章:

HTML5 服务器发送事件(Server-Sent Events)

1. 引言 HTML5 服务器发送事件&#xff08;Server-Sent Events&#xff0c;SSE&#xff09;是一种基于 HTTP 的服务器推送技术&#xff0c;允许服务器主动向客户端&#xff08;如浏览器&#xff09;发送实时更新。SSE 适用于单向通信场景&#xff0c;如新闻推送、实时价格更新…...

【C++游戏引擎开发】第12篇:GLSL语法与基础渲染——从管线结构到动态着色器

一、OpenGL渲染管线解密 1.1 OpenGL渲染管线流程图 #mermaid-svg-GrAgLUat95CVZKm0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GrAgLUat95CVZKm0 .error-icon{fill:#552222;}#mermaid-svg-GrAgLUat95CVZKm0 .e…...

阿里云负载均衡可以抗ddos吗

本文深度解析阿里云负载均衡的DDoS防护机制&#xff0c;通过实测数据验证其基础防御能力边界&#xff0c;揭示需结合云盾高防IP实现TB级流量清洗的工程实践。结合2023年Memcached反射攻击事件&#xff0c;提供混合云架构下的多层级防御方案设计指南。 云原生负载均衡的基础防护…...

动手学习:路径规划原理及常用算法

一、路径规划的基本原理 路径规划&#xff08;Path Planning&#xff09;是机器人导航的核心任务&#xff0c;目标是为机器人找到一条从起点到终点的无碰撞路径&#xff0c;同时满足约束条件&#xff08;如最短路径、最优能耗、安全性等&#xff09;。在人形机器人场景中&…...

Web前端性能指标Web3D性能优化

性能指标&评估方式 在Web3D性能优化之前,先了解性能指标&评估方式 前端性能指标评估与监测工具可分为以下几类,结合不同场景和需求,开发者可选择适合的工具进行性能优化: 一、浏览器内置工具 Chrome DevTools Performance 面板:记录运行时性能,分析CPU、内存使…...

Mujoco xml <option>

xml option option总起例子timestep(一般会用到)gravity(一般会用到)windmagneticdensityviscosityo_margino_solref, o_solimpo_frictionintegrator(一般会用到)cone(一般会用到)jacobian(一般会用到)solver(一般会用到)iterations(一般会用到)tolerance(一般会用到)noslip_it…...

如何用 nvm alias default 18.20.8 实现全局 Node.js 版本管理?一篇保姆级指南!!!

&#x1f4dd; 如何用 nvm alias default 18.20.8 实现全局 Node.js 版本管理&#xff1f;一篇保姆级指南 &#x1f680; 1. 核心命令解析 &#x1f50d; nvm alias default 18.20.8 是 nvm 管理工具中用于设置全局默认 Node.js 版本的核心命令。它的作用是将指定版本锁定为所…...

推荐一款Nginx图形化管理工具: NginxWebUI

Nginx Web UI是一款专为Nginx设计的图形化管理工具&#xff0c;旨在简化Nginx的配置与管理过程&#xff0c;提高开发者和系统管理的工作效率。项目地址&#xff1a;https://github.com/cym1102/nginxWebUI 。 一、Nginx WebUI的主要特点 简化配置&#xff1a;通过图形化的界…...

Pytest多环境切换实战:测试框架配置的最佳实践!

你是否也遇到过这种情况&#xff1a;本地测试通过&#xff0c;一到测试环境就翻车&#xff1f;环境变量错乱、接口地址混乱、数据源配置丢失……这些「环境切换」问题简直像定时炸弹&#xff0c;随时引爆你的测试流程&#xff01; 测试人员每天都跟不同的环境打交道&#xff0…...

大模型在网络安全领域的七大应用

1. 高级威胁检测与防御自动化 技术路径&#xff1a; 数据整合&#xff1a;聚合网络流量、终端日志、威胁情报等多源数据&#xff0c;构建多维特征库。行为建模&#xff1a;通过大模型的上下文理解能力&#xff0c;建立正常行为基线&#xff0c;识别偏离模式。动态策略生成&am…...

SpringBoot项目部署之启动脚本

一、启动脚本方案 1. 基础启动方式 1.1 直接运行JAR java -jar your-app.jar --spring.profiles.activeprod优点&#xff1a;简单直接&#xff0c;适合快速测试缺点&#xff1a;终端关闭即终止进程 1.2 后台运行 nohup java -jar your-app.jar > app.log 2>&1 &…...

【spark-submit】--提交任务

Spark-submit spark-submit 是 Apache Spark 提供的用于提交 Spark 应用程序到集群的命令行工具。 基本语法 spark-submit [options] <app-jar> [app-arguments]常用参数说明 应用程序配置 --class <class-name>: 指定应用程序的主类&#xff08;对于 Java/Sc…...

机器学习中的回归与分类模型:线性回归、逻辑回归与多分类

在机器学习领域&#xff0c;回归和分类是两类重要的任务&#xff0c;它们各自有着不同的应用场景和模型构建方式。本文将详细介绍线性回归、逻辑回归以及多分类任务的相关内容&#xff0c;包括数据预处理、模型定义、损失函数的选择以及评估指标的计算。 一、线性回归&#xf…...

spark-rdd

Spark-core RDD转换算子 RDD 根据数据处理方式的不同将算子整体上分为 Value 类型、双 Value 类型和 Key-Value 类型。 Value类型&#xff1a; 1.map 将处理的数据逐条进行映射转换&#xff0c;这里的转换可以是类型的转换&#xff0c;也可以是值的转换 mapPartitions map …...

Python 实现如何电商网站滚动翻页爬取

一、电商网站滚动翻页机制分析 电商网站如亚马逊和淘宝为了提升用户体验&#xff0c;通常采用滚动翻页加载数据的方式。当用户滚动页面到底部时&#xff0c;会触发新的数据加载&#xff0c;而不是一次性将所有数据展示在页面上。这种机制虽然对用户友好&#xff0c;但对爬虫来…...

pytorch TensorDataset与DataLoader类

读取数据 Dataset类 Dataset 是一个读取数据抽象类&#xff0c;所有自定义的数据集类需要继承该类。 该类主要实现以下三个功能 ①如何获取每一个数据及其label --> 抽象方法__getitem()__设置通过对象[索引]的方式获取每一个样本及其label ②告知一共有多少数据 -->…...

AI大模型与知识生态:重构认知的新时代引擎

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:我们如何获得知识,正在被AI彻底改写 从古代图书馆、百科全书,到搜索引擎、问答社区,人类获取知识的方式一直在进化。而随着 ChatGPT、DeepSeek、Grok 等 AI 大模型的到来,这一过程迎来了颠覆…...

Server-Sent Events一种允许服务器向客户端发送实时更新的 Web API

Server-Sent Events&#xff08;SSE&#xff09;是一种允许服务器向客户端发送实时更新的 Web API。它基于 HTTP 协议&#xff0c;提供了一种单向的、服务器到客户端的通信机制&#xff0c;客户端可以通过监听服务器发送的事件来接收实时数据。下面从原理、使用场景、代码示例等…...

电子电器架构 --- AI如何重构汽车产业

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 周末洗了一个澡&#xff0c;换了一身衣服&#xff0c;出了门却不知道去哪儿&#xff0c;不知道去找谁&am…...

操作系统CPU调度

简介 当CPU有大量任务要处理,但由于资源有限,无法同时处理。所有就需要某种规则来决定任务处理的顺序,这就是调度。 调度层次 根据调度频率与层次,共分为三种 高级调度 也称为作业调度(Long-Trem Scheduling),频次很低,它决定哪些进程从外存(硬盘)加载到内存中级调度 也…...

icoding题解排序

数组合并 假设有 n 个长度为 k 的已排好序&#xff08;升序&#xff09;的数组&#xff0c;请设计数据结构和算法&#xff0c;将这 n 个数组合并到一个数组&#xff0c;且各元素按升序排列。即实现函数&#xff1a; void merge_arrays(const int* arr, int n, int k, int* out…...

xHCI 上 USB 读写分析

系列文章目录 xHCI 简单分析 USB Root Hub 分析 USB Hub 检测设备 usb host 驱动之 urb xHCI那些事儿 PCIe MMIO、DMA、TLP PCIe配置空间与CPU访问机制 PCIe总线协议基础实战 文章目录 系列文章目录一、xHCI 初始化二、xHCI 驱动识别根集线器&#xff08;RootHub&#xff09;…...

SpringCloud Alibaba 之分布式全局事务 Seata 原理分析

1. 什么是 Seata&#xff1f;为什么需要它&#xff1f; 想象一下&#xff0c;你去银行转账&#xff1a; 操作1&#xff1a;从你的账户扣款 1000 元操作2&#xff1a;向对方账户增加 1000 元 如果 操作1 成功&#xff0c;但 操作2 失败了&#xff0c;你的钱就凭空消失了&…...

《C语言中的“魔法盒子”:自定义函数的奇妙之旅》

&#x1f680;个人主页&#xff1a;BabyZZの秘密日记 &#x1f4d6;收入专栏&#xff1a;C语言 &#x1f30d;文章目入 一、引言二、自定义函数的创建&#xff08;一&#xff09;基本结构&#xff08;二&#xff09;一个简单的例子 三、自定义函数的使用&#xff08;一&#xf…...

【Spring】IoC 和 DI的关系、简单使用,从“硬编码“到“优雅解耦“:IoC与DI的Spring蜕变之旅

1.IoC 和 DI的关系 IoC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09;和DI&#xff08;Dependency Injection&#xff0c;依赖注入&#xff09;是Spring框架中紧密相关但又有所区别的两个概念。理解它们的联系&#xff0c;可以帮助我们更深刻地掌握Spring…...

43、RESTful API 保姆教程

RESTful API 目录 RESTful API简介RESTful设计原则RESTful设计规范RESTful统一返回体JAX-RSJAX-RS与SpringBoot集成构建Restful服务实践总结一、RESTful API 简介 REST(Representational State Transfer)是一种基于HTTP的web服务架构风格,RESTful API则是遵循REST原则的网…...

ASP.NET Core 性能优化:客户端响应缓存

文章目录 前言一、什么是缓存二、客户端缓存核心机制&#xff1a;HTTP缓存头1&#xff09;使用[ResponseCache]属性&#xff08;推荐&#xff09;2&#xff09;预定义缓存配置&#xff08;CacheProfile&#xff09;3&#xff09;手动设置HTTP头4&#xff09;缓存验证机制&#…...

算法导论(递归回溯)——递归

算法思路&#xff08;21&#xff09; 递归函数的含义&#xff1a; 创建一个递归函数&#xff0c;该函数接受两个链表的头结点作为输入&#xff0c;返回合并后的链表的头结点。 选择较小的节点&#xff1a; 在函数体内&#xff0c;首先比较两个链表的头结点的值&#xff0c;选择…...

从接口400ms到20ms,记录一次JVM、MySQL、Redis的混合双打

​​1. 场景&#xff1a;促销活动的崩溃​​ 接到报警短信&#xff0c;核心接口响应时间突破​​5秒​​&#xff0c;DB CPU飙到100%。 用Arthas抓取线上火焰图后发现&#xff1a; ---[ 4763ms ] com.example.service.OrderService.createOrder() |---[ 98% ] com.example.m…...

Excel通过VBA脚本去除重复数据行并保存

一、方法1:使用字典动态去重并保存 适用场景&#xff1a;需要灵活控制去重逻辑&#xff08;如保留最后一次出现的重复项&#xff09;时 Sub 动态去重保存到新表()Dim srcSheet As Worksheet, destSheet As WorksheetDim dict As Object, lastRow As Long, i As LongDim key A…...

Mysql表的操作(2)

1.去重 select distinct 列名 from 表名 2.查询时排序 select 列名 from 表名 order by 列名 asc/desc; 不影响数据库里面的数据 错误样例 &#xff1a; 但结果却有点出乎意料了~为什么会失败呢&#xff1f; 其实这是因为书写的形式不对&#xff0c;如果带了引号&#xff0c;…...

#Linux内存管理# 在ARM32系统中,页表是如何映射的?在ARM64系统中,页表又是如何映射的?

一、ARM32系统页表映射 1. 层级结构与地址划分 默认实现&#xff1a;采用两层映射&#xff08;PGD→PTE&#xff09;&#xff0c;合并Linux标准三级模型中的PMD层。 虚拟地址解析&#xff08;以4KB页为例&#xff09;&#xff1a; Bits[31:20]&#xff1a;一级页表&#xff08;…...

prometheus整合jmx_exporter 使用jmx_exporter监控Kafka

docker-compose部署kafka集群&#xff1b;单节点单zk-CSDN博客 springboot整合kafka&#xff1b;docker部署kafka-CSDN博客 kafka使用SSL加密和认证--todo_ssl.truststore.location-CSDN博客 version: 3.8services:zookeeper1:image: zookeeper:3.9.1container_name: zook…...

深度学习实战:从零构建图像分类API(Flask/FastAPI版)

引言&#xff1a;AI时代的图像分类需求 在智能时代&#xff0c;图像分类技术已渗透到医疗影像分析、自动驾驶、工业质检等各个领域。作为开发者&#xff0c;掌握如何将深度学习模型封装为API服务&#xff0c;是实现技术落地的关键一步。本文将手把手教你使用Python生态中的Fla…...

Kafka实现延迟消息

Kafka 实现延迟消息 Kafka 本身不支持原生的延迟消息&#xff08;不像 RocketMQ 内置了延迟队列&#xff09;&#xff0c;但可以通过多种方式来实现延迟消息。常见的方案如下&#xff1a; 1. 使用不同的 Topic 分区&#xff08;最常见&#xff09; 思路&#xff1a; 创建多…...

大数据(7.2)Kafka万亿级数据洪流下的架构优化实战:从参数调优到集群治理

目录 一、海量数据场景下的性能之殇1.1 互联网企业的数据增长曲线1.2 典型性能瓶颈分析 二、生产者端极致优化2.1 批量发送黄金法则2.1.1 分区选择算法对比 2.2 序列化性能突破 三、消费者端并发艺术3.1 多线程消费模式演进3.1.1 消费组Rebalance优化 3.2 位移管理高阶技巧 四、…...

要查看 FAISS 使用的 OpenMP 版本,需根据安装方式和系统环境采用不同方法。以下是具体步骤和原理分析:

要查看 FAISS 使用的 OpenMP 版本&#xff0c;需根据安装方式和系统环境采用不同方法。以下是具体步骤和原理分析&#xff1a; 方法 1&#xff1a;通过库文件名称直接查看&#xff08;推荐&#xff09; FAISS 的 OpenMP 版本通常直接体现在其依赖的动态链接库&#xff08;DLL/…...

AI 大模型的标准化工具箱MCP (Model Context Protocol)

MCP简介 MCP &#xff08;Model Context Protocol&#xff0c;模型上下文协议&#xff09;定义了应用程序和 AI 模型之间交换上下文信息的方式。这使得开发者能够以一致的方式将各种数据源、工具和功能连接到 AI 模型&#xff08;一个中间协议层&#xff09;&#xff0c;就像 …...

哈希表的封装

目录 引入 哈希表封装 修改哈希表参数 修改哈希表成员 修改%时使用的变量 修改读取时获得的变量 迭代器的实现 迭代器的定义 迭代器 迭代器*解引用 迭代器->成员访问 迭代器重载和! 封装迭代器 HashTable迭代器封装 非const版本 const版本 unordered_set迭…...

2025年认证杯数模竞赛赛题浅析-快速选题

赛题浅析 认证杯作为国内最早的数学建模论坛、唯一一个全部公开参赛论文的竞赛、国内最大的数学建模竞赛之一、唯一一个对非学生群里开放的数学建模竞赛、国内唯二的支持高中生参赛的大学生数模竞赛。在数模界一直被视为国赛之前较好的练手赛&#xff0c;本文将初步简略得介绍…...

【网络安全】Linux 常见命令

未经许可,不得转载。 文章目录 正文系统信息查看用户与权限管理进程管理网络配置与检测文件操作日志查看与分析权限审计与安全检测正文 在网络安全工作中,熟练掌握 Linux 系统中的常用命令,对于日常运维、日志分析、安全排查等工作至关重要。 以下为常用命令汇总,供参考。…...

电脑卡顿严重怎么办 电脑卡顿的处理指南

电脑突然卡顿比较严重&#xff0c;这是很多用户都曾经遇到过的问题&#xff0c;鼠标一直转圈圈&#xff0c;无法进行任何操作。电脑卡顿&#xff0c;电脑卡顿不仅会降低工作效率&#xff0c;还可能导致数据丢失&#xff0c;数据无法保存。很多用户解决电脑卡顿的方法就是直接一…...

山东大学软件学院创新项目实训开发日志(9)之测试前后端连接

在正式开始前后端功能开发前&#xff0c;在队友的帮助下&#xff0c;成功完成了前后端测试连接&#xff1a; 首先在后端编写一个测试相应程序&#xff1a; 然后在前端创建vue 并且在index.js中添加一下元素&#xff1a; 然后进行测试&#xff0c;测试成功&#xff1a; 后续可…...

H.264 NVMPI解码性能优化策略

H.264 NVMPI解码性能优化策略‌ ‌1. 硬件与驱动配置‌ ‌JetPack版本匹配‌&#xff1a;确保NVIDIA Jetson设备的JetPack SDK版本与CUDA驱动兼容&#xff0c;避免因驱动不匹配导致硬件解码性能下降‌8。‌显存分配优化‌&#xff1a;调整FFmpeg的-hwaccel_device参数指定GPU…...

汽车软件开发常用的需求管理工具汇总

目录 往期推荐 DOORS&#xff08;IBM &#xff09; 行业应用企业&#xff1a; 应用背景&#xff1a; 主要特点&#xff1a; Polarion ALM&#xff08;Siemens&#xff09; 行业应用企业&#xff1a; 应用背景&#xff1a; 主要特点&#xff1a; Codebeamer ALM&#x…...

如何从零构建一个自己的 CentOS 基础镜像

如何从零构建一个自己的 CentOS 基础镜像 从零构建一个基于 CentOS 的基础镜像是一个很好的实践&#xff0c;可以帮助你理解 Docker 镜像的底层原理。以下是以 CentOS 为例&#xff0c;从零开始&#xff08;不依赖现有镜像&#xff09;构建基础镜像的详细步骤。我们将使用 yum…...

mongodb和clickhouse比较

好问题——MongoDB 也能处理这种高写入 定期删除的时间序列场景&#xff0c;尤其从 MongoDB 5.0 开始支持了专门的 Time Series Collections&#xff08;时间序列集合&#xff09;&#xff0c;对你的需求其实挺对口的。 不过它有些优点和局限&#xff0c;需要具体分析下你场景…...

C#容器源码分析 --- List

List是一个非常常用的泛型集合类&#xff0c;它位于 System.Collections.Generic 命名空间下&#xff0c;本质上是一个动态数组&#xff0c;它提供了一系列方便的方法来管理和操作元素&#xff0c;例如添加、删除、查找等。与传统的数组相比&#xff0c;List可以根据需要动态调…...

以太坊区块大小的决定因素:深入解析区块 Gas 限制及其影响

以太坊&#xff08;Ethereum&#xff09;作为全球领先的区块链平台&#xff0c;其区块大小并非固定的物理尺寸&#xff0c;而是由区块 Gas 限制&#xff08;Block Gas Limit&#xff09;所决定。​理解区块 Gas 限制及其影响因素&#xff0c;对于深入掌握以太坊网络的运行机制至…...

利用DeepFlow解决APISIX故障诊断中的方向偏差问题

概要&#xff1a;随着APISIX作为IT应用系统入口的普及&#xff0c;其故障定位能力的不足导致了在业务故障诊断中&#xff0c;APISIX常常成为首要的“嫌疑对象”。这不仅导致了“兴师动众”式的资源投入&#xff0c;还可能使诊断方向“背道而驰”&#xff0c;从而导致业务故障“…...