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

WebSocket 心跳机制:确保连接稳定与实时性

目录

前言

什么是 WebSocket 心跳机制?

WebSocket 心跳机制的实现

关键代码如下:

WebSocket 心跳机制的应用场景

WebSocket 心跳机制的优势

WebSocket 心跳机制的注意事项


前言

WebSocket 是一种基于持久连接的协议,它支持全双工通信,能够在客户端和服务器之间保持长期的实时连接。然而,长时间不活动的连接可能会被防火墙、代理服务器或其他网络设备误判为非活跃连接,从而断开。为了确保连接的持续性和稳定性,WebSocket 引入了心跳机制。

什么是 WebSocket 心跳机制?

WebSocket 的心跳机制是一种定期发送和接收“心跳包”消息的方式,用于保持客户端和服务器之间的连接活跃。通过心跳包,双方能够定期确认对方仍然在线,从而防止连接因长时间不活动而被中断。

WebSocket 心跳机制的原理

心跳机制的基本原理是,客户端和服务器定期发送和接收心跳包,以确保连接没有被防火墙或代理等设备中断。以下是心跳机制的工作流程:

  1. 发送心跳消息
    客户端或服务器会定期发送一个特殊的心跳消息(通常是一个简单的 "ping" 包),表示连接仍然正常。

  2. 接收心跳响应
    对方在收到心跳包后,应该返回一个确认消息,通常是 "pong" 包,表明连接是活跃的。

  3. 断开检测
    如果在一定时间内未收到对方的心跳响应,连接可能已中断。此时,可以采取重新连接等措施来恢复连接。

WebSocket 心跳机制的实现

WebSocket 的心跳机制通常通过以下两种方式实现:

客户端实现心跳包发送

客户端使用 setInterval 定期发送心跳包。示例如下:

let ws = new WebSocket('ws://example.com/socket');
setInterval(() => {ws.send('ping'); // 定期发送心跳包
}, 30000); // 每30秒发送一次
服务器实现心跳响应

当服务器接收到心跳包(如 ping)时,应该返回一个确认响应(如 pong):

ws.onmessage = function(event) {if (event.data === 'ping') {ws.send('pong'); // 服务器响应心跳包}
};
断开检测

如果客户端在一定时间内没有收到 pong 响应,则认为连接可能已经丢失,客户端可以尝试重新连接。

let lastPongTime = Date.now();
setInterval(() => {if (Date.now() - lastPongTime > 60000) { // 超过1分钟没有收到响应console.log('Connection lost, reconnecting...');ws.close();// 重新连接逻辑}
}, 10000); // 每10秒检查一次
关键代码如下:
// 开启心跳const start = () => {clearTimeout(timeoutObj);// serverTimeoutObj && clearTimeout(serverTimeoutObj);timeoutObj = setTimeout(function () {if (websocketRef.current?.readyState === 1) {//连接正常sendMessage('hello');}}, timeout);};const reset = () => {// 重置心跳 清除时间clearTimeout(timeoutObj);// 重启心跳start();};ws.onopen = (event) => {onOpenRef.current?.(event, ws);reconnectTimesRef.current = 0;start(); // 开启心跳setReadyState(ws.readyState || ReadyState.Open);};ws.onmessage = (message: WebSocketEventMap['message']) => {const { data } = message;if (data === '收到,hello') {reset();return;}if (JSON.parse(data).status === 408) {reconnect();return;}onMessageRef.current?.(message, ws);setLatestMessage(message);};const connect = () => {reconnectTimesRef.current = 0;connectWs();};

WebSocket 心跳机制的应用场景

WebSocket 的心跳机制在很多实时通信和后台服务中发挥着重要作用,确保连接的可靠性和稳定性。以下是一些典型应用场景:

  1. 即时通讯(IM)应用
    心跳机制能够确保客户端和服务器之间的连接持续活跃,保持用户在线状态,防止因连接中断导致消息丢失或发送失败。

    应用实例:在线聊天工具(如微信、Slack)使用 WebSocket 连接来实时发送和接收消息。通过心跳机制,确保聊天连接不被网络中间件断开。

  2. 在线游戏
    在多人在线游戏中,心跳机制帮助服务器和客户端之间保持稳定的连接,减少掉线现象,确保玩家的数据实时同步,提升游戏体验。

    应用实例:MMORPG(大型多人在线角色扮演游戏)使用 WebSocket 保持玩家的游戏状态同步,心跳机制确保玩家与服务器的连接不中断。

  3. 实时数据推送
    在金融、天气、新闻等实时数据更新场景中,WebSocket 的心跳机制能够保持数据流的稳定性,确保实时信息及时推送到客户端。

    应用实例:股票行情应用通过 WebSocket 实现实时更新,当有新的股价变动时,服务器立即推送数据,心跳机制则确保连接不中断。

  4. 物联网(IoT)设备数据上传
    IoT 设备通常需要长时间连接服务器,心跳机制通过保持连接活跃,防止设备与服务器之间的通信中断。即便是长时间的后台数据上传,心跳机制也能确保数据顺畅传输。

    应用实例:智能家居设备如智能灯泡、温湿度监测仪等,通过 WebSocket 向服务器上传数据。心跳机制保持设备与服务器的连接,确保数据实时更新。

WebSocket 心跳机制的优势

  1. 避免连接断开
    通过定期发送和接收心跳消息,可以避免 WebSocket 连接被防火墙、代理或网络设备误判为非活跃连接而关闭,从而保持连接稳定。

  2. 及时检测断线
    如果连接长时间没有心跳响应,客户端和服务器可以及时检测到连接断开,并进行重新连接,确保系统的高可用性。

  3. 提高连接稳定性
    WebSocket 的心跳机制能够使得客户端和服务器之间的通信保持顺畅,避免因连接超时或长时间无活动而导致的中断,提升系统的稳定性和可靠性。

WebSocket 心跳机制的注意事项

尽管心跳机制可以保持连接稳定,但也存在一些挑战和需要注意的事项:

  1. 频繁发送心跳包的性能开销
    定期发送心跳包会消耗一定的网络带宽和服务器资源。在高并发的情况下,如果没有合理设置心跳间隔,可能会带来额外的性能压力。

  2. 心跳间隔的合理设置
    心跳包的发送间隔需要根据具体应用场景进行调整。如果设置得过短,会导致频繁的网络请求,浪费带宽;如果设置得过长,可能无法及时检测到连接的断开,影响实时性。

  3. 处理高并发的心跳检测
    在大规模的 WebSocket 服务中,心跳检测可能需要高效的处理机制。如果有大量客户端同时连接,如何高效地进行心跳包的发送和响应检测是一个需要考虑的问题。

  4. 防止误判断开连接
    如果服务器或客户端没有正确响应心跳包,可能导致误判连接已断开。在实现心跳机制时,需要考虑如何应对网络延迟、服务器负载等问题,避免不必要的重连操作。

总结

        WebSocket 的心跳机制在确保实时通信应用中连接稳定性和高可用性方面发挥着至关重要的作用。通过定期发送和接收心跳包,WebSocket 能够有效地避免连接因长时间不活动而被中断,同时能够及时检测连接的状态,确保系统能够正常运行。尽管实现心跳机制时需要考虑一些性能和网络资源的问题,但它对于实时数据推送、即时通讯、在线游戏和物联网等场景的稳定运行至关重要。

 参考文章:websocket的心跳机制-阿里云开发者社区

相关文章:

WebSocket 心跳机制:确保连接稳定与实时性

目录 前言 什么是 WebSocket 心跳机制? WebSocket 心跳机制的实现 关键代码如下: WebSocket 心跳机制的应用场景 WebSocket 心跳机制的优势 WebSocket 心跳机制的注意事项 前言 WebSocket 是一种基于持久连接的协议,它支持全双工通信&…...

[SUCTF 2018]MultiSQL1

进去题目页面如下 发现可能注入点只有登录和注册,那么我们先注册一个用户,发现跳转到了/user/user.php, 查看用户信息,发现有传参/user/user.php?id1 用?id1 and 11,和?id1 and 12,判断为数字型注入 原本以为是简单的数字型注入,看到大…...

数据结构——AVL树的实现

Hello,大家好,这一篇博客我们来讲解一下数据结构中的AVL树这一部分的内容,AVL树属于是数据结构的一部分,顾名思义,AVL树是一棵特殊的搜索二叉树,我们接下来要讲的这篇博客是建立在了解搜索二叉树这个知识点…...

Kubernetes可视化界面

DashBoard Kubernetes Dashboard 是 Kubernetes 集群的一个开箱即用的 Web UI,提供了一种图形化的方式来管理和监视 Kubernetes 集群中的资源。它允许用户直接在浏览器中执行许多常见的 Kubernetes 管理任务,如部署应用、监控应用状态、执行故障排查以及…...

flutter_学习记录_00_环境搭建

1.参考文档 Mac端Flutter的环境配置看这一篇就够了 flutter的中文官方文档 2. 本人环境搭建的背景 本人的电脑的是Mac的,iOS开发,所以iOS开发环境本身是可用的;外加Mac电脑本身就会配置Java的环境。所以,后面剩下的就是&#x…...

【React】PureComponent 和 Component 的区别

前言 在 React 中,PureComponent 和 Component 都是用于创建组件的基类,但它们有一个主要的区别:PureComponent 会给类组件默认加一个shouldComponentUpdate周期函数。在此周期函数中,它对props 和 state (新老的属性/状态)会做一…...

vim如何设置制表符表示的空格数量

:set tabstop4 设置制表符表示的空格数量 制表符就是tab键,一般默认是四个空格的数量 示例: (vim如何使设置制表符表示的空格数量永久生效:vim如何使相关设置永久生效-CSDN博客)...

Python中程序流程的控制

本篇我们将介绍程序流程控制方面的内容,了解如何控制程序的流程,使得程序具有“判断能力”, 能够像人脑一样分析问题。在Python中,程序流程的控制主要通过以下几种方式实现: 分支语句 前言:我很熟悉分支语句&#xf…...

基于聚类与相关性分析对马来西亚房价数据进行分析

碎碎念:由于最近太忙了,更新的比较慢,提前祝大家新春快乐,万事如意!本数据集的下载地址,读者可以自行下载。 1.项目背景 本项目旨在对马来西亚房地产市场进行初步的数据分析,探索各州的房产市…...

【例51.3】 平移数据

题目描述 将a数组中第一个元素移到数组末尾,其余数据依次往前平移一个位置。 输入 第一行为数组a的元素个数; 第二行为n个小于1000的正整数。 输出 平移后的数组元素,每个数用一个空格隔开。 样例输入 复制 10 1 2 3 4 5 6 7 8 9 10 样例输出 复…...

【unity游戏开发之InputSystem——02】InputAction的使用介绍(基于unity6开发介绍)

文章目录 前言一、InputAction简介1、InputAction是什么?2、示例 二、监听事件started 、performed 、canceled1、启用输入检测2、操作监听相关3、关键参数 CallbackContext4、结果 三、InputAction参数相关1、点击齿轮1.1 Actions 动作(1)动…...

Alfresco Content Services docker自动化部署操作

Alfresco Content Services docker部署文档 前提条件 在开始之前,需要确保已经安装了 Docker 和 Docker Compose。Docker 用于创建和管理容器,Docker Compose 则用于定义和运行多容器的 Docker 应用。 步骤 1. 创建目录结构 首先,创建一个…...

侧边导航(Semi Design)

根据前几次的导航栏设计,从最简单的三行导航栏到后面响应式的导航栏,其实可以在这个的基础上慢慢优化,就可以得到一个日常使用设计的导航栏。设计步骤也和之前的类似。 一、实现步骤 1、先下载安装好npm install douyinfe/semi-icons 2、引…...

Ubuntu下让matplotlib显示中文字体

文章目录 安装中文字体显示matplotlib库的字体文件夹删除matplotlib 的缓存文件(可选) matplotlib中设置字体,显示! 参考文章: https://zodiac911.github.io/blog/matplotlib-chinese.html Ubuntu下python的matplotli…...

Linux 磁盘管理

Linux 磁盘管理 引言 磁盘管理是操作系统管理中的一项重要内容,对于Linux系统而言,磁盘管理更是基础中的基础。随着数据量的不断增加,合理地管理和利用磁盘资源显得尤为重要。本文将详细介绍Linux磁盘管理的基本概念、工具和策略,旨在帮助Linux用户和系统管理员更好地掌握…...

解决CentOS9系统下Zabbix 7.2图形中文字符乱码问题

操作系统:CentOS 9 Zabbix版本:Zabbix7.2 问题描述:主机图形中文字符乱码 解决方案: # 安装字体配置和中文语言包 sudo yum install -y fontconfig langpacks-zh_CN.noarch # 检查是否已有中文字体: fc-list :lan…...

Spring MVC (三) —— 实战演练

项目设计 我们会将前端的代码放入 static 包下: 高内聚,低耦合 这是我们在实现项目的设计思想,一个项目里存在很多个模块,每一个模块内部的要求类与类、方法与方法要相互配合紧密联系,这就是高内聚,低耦合…...

地下排水管道损害缺陷检测数据集VOC+YOLO格式2051张6类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2051 标注数量(xml文件个数):2051 标注数量(txt文件个数):2051 …...

读写和解析简单的 nc 文件

NetCDF 文件格式在气象数据工程领域占据着举足轻重的地位,其结构灵活、强兼容性等优势使其成为该领域的一个标准。无论是从事学术研究还是工程实践,掌握这种数据格式变得越发重要。其次,我注意到目前社区中气象编程大多数课程都聚焦于某个特定…...

【北京大学 凸优化】Lec1 凸优化问题定义

【北京大学 凸优化】Lec1 凸优化问题定义 前言优化问题的分类连续优化问题离散优化问题组合优化问题变分(Variational)优化问题基于限制条件的分类基于凸性的分类 前言 马上快要过年了,天气自然寒冷起来,空气中也理所当然的弥漫着…...

Spring Boot Actuator 集成 Micrometer(官网文档解读)

目录 概述 实现 Observation 可观测性 Observation 功能核心类 ObservationPredicate GlobalObservationConvention ObservationFilter ObservationHandler ObservationRegistryCustomizer Observation 相关注解 多线程处理机制 配置上下文传播 常用标签配置 Open…...

图的矩阵表示

一、邻接矩阵 长度为k的通路条数:A的k次方矩阵的所有元素和 长度为k的回路条数:A的k次方矩阵的对角线元素和 二、可达矩阵 计算使用布尔乘积 三、关联矩阵...

SpringCloud两种注册中心

SpringCloud 基本概念 系统架构 我们之前做的所有的项目都属于单体架构,下面我们将要学习更适合大型项目的分布式架构 单体架构: 将业务的所有功能几种在一个项目中开发,打成一个包部署。 优点:架构简单、部署成本低 缺点&am…...

【中间件快速入门】什么是Redis

现在后端开发会用到各种中间件,一不留神项目可能在哪天就要用到一个我们之前可能听过但是从来没接触过的中间件,这个时候对于开发人员来说,如果你不知道这个中间件的设计逻辑和使用方法,那在后面的开发和维护工作中可能就会比较吃…...

Pandas基础02(DataFrame创建/索引/切片/属性/方法/层次化索引)

DataFrame数据结构 DataFrame 是一个二维表格的数据结构,类似于数据库中的表格或 Excel 工作表。它由多个 Series 组成,每个 Series 共享相同的索引。DataFrame 可以看作是具有列名和行索引的二维数组。设计初衷是将Series的使用场景从一维拓展到多维。…...

适配Android16

Android16新特性 Android 16带来了许多新特性和改进,提升了系统的流畅度、用户体验和安全性。对于应用开发者来说,适配Android 16可以确保应用在该版本上的兼容性和性能,同时也可以利用其新特性为用户提供更好的服务。以下是Android 16的一些…...

.NET MAUI进行UDP通信(二)

上篇文章有写过一个简单的demo&#xff0c;本次对项目进行进一步的扩展&#xff0c;添加tabbar功能。 1.修改AppShell.xaml文件&#xff0c;如下所示&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <Shellx:Class"mauiDemo.AppShel…...

生信软件管家——conda vs pip

pip vs conda&#xff1a; 安装过python包的人自然两种管理软件都用过&#xff0c; Pip install和Conda install在Python环境中用于安装第三方库和软件包&#xff0c;但它们在多个方面存在显著的区别 总的来说&#xff1a; pip是包管理软件&#xff0c;conda既是包管理软件&…...

从替代到覆盖:暴雨信创服务器打开市场新局面

进入2025年,全球局势更加变幻莫测,高科技领域越来越受到全球局势影响。美国前任总统拜登在卸任前,特别颁布限制GPU产品出口法案。新任总统特朗普上任第一天,废除了多项之前法案,但显示技术交流的内容一条没变。 在如此艰难的局面下,我国信创市场的发展显得尤为重要,国家也从政策…...

HTML5 常用事件详解

在现代 Web 开发中&#xff0c;用户交互是提升用户体验的关键。HTML5 提供了丰富的事件机制&#xff0c;允许开发者监听用户的操作&#xff08;如点击、拖动、键盘输入等&#xff09;&#xff0c;并触发相应的逻辑处理。本文将详细介绍 HTML5 中的常用事件&#xff0c;包括鼠标…...

使用 Pipeline 提高 Redis 批量操作性能

使用 Pipeline 提高 Redis 批量操作性能 在 Redis 中&#xff0c;Pipeline&#xff08;管道&#xff09; 是一种用于提高批量操作性能的技术。它允许客户端一次性发送多个命令到 Redis 服务器&#xff0c;而不需要等待每个命令的单独响应&#xff0c;从而减少了**网络往返&…...

ElasticSearch-文档元数据乐观并发控制

文章目录 什么是文档&#xff1f;文档元数据文档的部分更新Update 乐观并发控制 最近日常工作开发过程中使用到了 ES&#xff0c;最近在检索资料的时候翻阅到了 ES 的官方文档&#xff0c;里面对 ES 的基础与案例进行了通俗易懂的解释&#xff0c;读下来也有不少收获&#xff0…...

每日一题--合并二叉树

合并二叉树 问题描述 已知两颗二叉树&#xff0c;将它们合并成一颗二叉树。合并规则是&#xff1a;如果节点存在于两棵树中&#xff0c;则将节点值相加&#xff1b;如果某个节点在一棵树中不存在&#xff0c;则直接使用另一棵树的节点值。例如&#xff1a; 两颗二叉树如下&a…...

【喜讯】海云安荣获“数字安全产业贡献奖”

近日&#xff0c;国内领先的数字化领域独立第三方调研咨询机构数世咨询主办的“2025数字安全市场年度大会”在北京成功举办。在此次大会上&#xff0c;海云安的高敏捷信创白盒产品凭借其在AI大模型技术方面的卓越贡献和突出的技术创新能力&#xff0c;荣获了“数字安全产业贡献…...

数字转中文大写JAVA

一般在收据打印过程中&#xff0c;可能会要求展示中文大写金额&#xff0c;以下提供两种实现。 1正常代码逻辑处理 优点&#xff1a;易理解&#xff0c;好维护 缺点&#xff1a;代码较长 package com.test;import java.math.BigDecimal;public class NumberToChinese {priv…...

如何使用 pytest-html 创建自定义 HTML 测试报告

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 测试 Python 代码对于提高代码质量、检测漏洞或意外行为至关重要。 但测试结果又该…...

思科交换机telnet配置案例

目录 1.telnet简述2.网络拓扑3.设备说明4.网络配置4.1 电脑PC ip设置4.2 网络交换机telnet配置 5.小结 1.telnet简述 Telnet是远程登录服务的一个协议&#xff0c;该协议定义了远程登录用户与服务器交互的方式。它允许用户在一台联网的计算机上登录到一个远程分时系统中&#…...

LabVIEW进行可靠性测试时有哪些常见的问题

在进行LabVIEW开发和测试时&#xff0c;尤其是用于可靠性测试&#xff0c;可能会遇到一些常见的问题。以下是一些常见问题及其解决方法&#xff1a; 1. 数据采集卡与硬件兼容性问题 问题描述&#xff1a;某些数据采集卡&#xff08;DAQ&#xff09;与硬件设备的兼容性问题可能…...

三年级数学知识边界总结思考-下册

目录 一、背景二、过程1.位置与方向小学三年级课本上位置与方向的知识点、由来、作用和意义一、位置与方向的知识点二、位置与方向的由来三、位置与方向的作用和意义 2.复试统计表小学三年级课本上复式统计表的知识点、由来、作用和意义一、复式统计表的知识点二、复式统计表的…...

假期学习【Java程序】的实施方案

一、前期准备 1.1 设定明确的学习目标 在假期开始之前&#xff0c;明确学习Java的具体目标至关重要。这些目标应该具体、可衡量且符合实际。例如&#xff0c;如果你是初学者&#xff0c;可以设定目标为掌握Java的基础语法、理解面向对象编程的核心概念&#xff0c;并能够编写…...

Java 大视界 -- Java 大数据中的知识图谱构建与应用(62)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

Macos下交叉编译安卓的paq8px压缩算法

官方没有android的编译方法&#xff0c;自己编写脚本在macos下交叉编译. 下载源码&#xff1a; git clone https://github.com/hxim/paq8px.git 稍旧的ndk并不能编译成功&#xff0c;需要下载最新的ndkr27c, 最后是使用clang来编译。 编译build.sh export ANDROID_NDK/Vol…...

npm启动前端项目时报错(vue) error:0308010C:digital envelope routines::unsupported

vue 启动项目时&#xff0c;npm run serve 报下面的错&#xff1a; error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:67:19) at Object.createHash (node:crypto:133:10) at FSReqCallback.readFileAfterClose [as on…...

设计模式-建造者模式、原型模式

目录 建造者模式 定义 类图 优缺点 角色 建造者模式和工厂模式比较 使用案例 原型模式 定义 类图 优缺点 应用场景 应用类型 浅克隆 深克隆 建造者模式 定义 将一个复杂的对象的构造与它的表示分离&#xff0c;使同样的构建过程可以创建不同的表示&#xff0c;…...

Android vendor.img中文件执行权问题

问题 Android 9、11往vendor.img增加文件&#xff0c;烧写到设备后发现增加的可执行文件没有执行权限。经过漫长查找&#xff0c;终于找到了问题的根源&#xff0c;谨以此篇献给哪些脚踏实地的人们。 根本原因 system/core/libcutils/fs_config.cpp文件&#xff0c;fs_confi…...

MATLAB 如何避免复杂shp文件对inpolygon的影响

**任务描述&#xff1a;**当我想用inpolygon函数将属于非洲的pixel选出来时&#xff0c;发现因为周边小岛的影响&#xff0c;pixel选取有问题&#xff0c;如下图。 第一种解决办法&#xff1a; 首先将复杂shp文件查分成简单的shp文件&#xff0c;即将不相交的元素分离开 [QGIS…...

Golang Gin系列-8:单元测试与调试技术

在本章中&#xff0c;我们将探讨如何为Gin应用程序编写单元测试&#xff0c;使用有效的调试技术&#xff0c;以及优化性能。这包括设置测试环境、为处理程序和中间件编写测试、使用日志记录、使用调试工具以及分析应用程序以提高性能。 为Gin应用程序编写单元测试 设置测试环境…...

【论文阅读】Equivariant Diffusion Policy

Northeastern University 2Boston Dynamics AI Institute 摘要 近期研究表明&#xff0c;扩散模型是一种有效的方法&#xff0c;可用于在行为克隆中学习由演示数据产生的多模态分布。然而&#xff0c;这种方法的一个缺点是需要学习去噪函数&#xff0c;这比学习显式策略要复杂…...

[ACTF2020 新生赛]BackupFile1

题目 翻译&#xff0c;尝试找出源文件&#xff01; 扫目录使用参数-e * python dirsearch.py -u http://0c3b21c0-d360-4baa-8b97-aa244f4c4825.node5.buuoj.cn:81/ -e * 最终扫描到一个文件名为&#xff1a;/index.php.bak的文件&#xff0c;把备份文件下载下来 源码 <?…...

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion(原理介绍)

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09; 目录 手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09;DDPM 原理图Stable Diffusion 原理Stable Diffusion的原理解释Stable Diffusion 和 Diffus…...