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

【gRPC】HTTP/2协议,HTTP/1.x中线头阻塞问题由来,及HTTP/2中的解决方案,RPC、Protobuf、HTTP/2 的关系及核心知识点汇总

HTTP/2协议特点

gRPC基于HTTP/2协议,原因:

  • 多路复用:允许在同一个TCP连接上并行传输多个请求和响应,即多个gRPC调用可以通过同一个连接同时进行,避免了HTTP/1.x中常见的线头阻塞问题,减少了连接建立和关闭的开销,提高了性能和连接利用率。
  • 二进制分帧:HTTP/2将数据分割二进制帧,每个帧都有自己的类型、标志和内容。gRPC利用这种机制可以更高效地传输数据,使数据的传输更加有序可靠,并且能够在应用层对数据进行更细粒度的管理
  • 流控制:HTTP/2提供了流控制机制,允许客户端和服务器控制数据流的速率,以防止发送方发送过快导致接收方缓冲区溢出。gRPC借助这一机制来管理数据的传输速率,确保通信的稳定性和可靠性。
  • 头部压缩:HTTP/2使用HPACK算法等对头部进行压缩,减少了头部信息的传输大小,提高了传输效率。对于gRPC来说,这有助于减少元数据的传输开销,特别是在频繁进行RPC调用时,可以显著降低网络带宽占用。

菜鸟教程总结版

多路复用:HTTP/2 允许同时发送多个请求和响应,而不是像 HTTP/1.1 一样只能一个一个地处理。
这样可以减少延迟,提高效率,提高网络吞吐量。二进制传输:HTTP/2 使用二进制协议,与 HTTP/1.1 使用的文本协议不同。
二进制协议可以更快地解析,更有效地传输数据,减少了传输过程中的开销和延迟。头部压缩:HTTP/2 使用 HPACK 算法对 HTTP 头部进行压缩,减少了头部传输的数据量,从而减少了网络延迟。服务器推送:HTTP/2 支持服务器推送,允许服务器在客户端请求之前推送资源,以提高性能。改进的安全性:HTTP/2 默认使用 TLS(Transport Layer Security)加密传输数据,提高了安全性。兼容 HTTP/1.1:HTTP/2 可以与 HTTP/1.1 共存,服务器可以同时支持 HTTP/1.1 和 HTTP/2。
如果客户端不支持 HTTP/2,服务器可以回退到 HTTP/1.1。

HTTP/1.x中线头阻塞在HTTP/2中被解决

产生原因
  • 同一个 TCP 连接上的请求必须按顺序发送,服务器也会按顺序处理请求并返回响应。
  • HTTP/1.1 虽引入 长连接,允许复用 TCP 连接,但浏览器默认对同一域名仅建立 6-8 个并发连接(不同浏览器策略不同)
  • 当页面需要加载大量资源(如图片、CSS、JS 等)时,大量请求会被分配到有限的连接中,导致每个连接上的请求队列过长,加剧阻塞问题。

所以解决思路大致有两条线:1. 改变接收硬性顺序规定,实现并行;2. 压缩数据大小

HTTP/2解决方案
  • 引入 多路复用

    • 同一 TCP 连接中并行处理多个请求,响应
    • 请求和响应被拆分为独立的 二进制帧,并且由于这里二进制分帧都含有自己的标识,可以实现混乱传输,最后到达时重新组装

gRPC、Protobuf、HTTP/2 的关系及核心知识点汇总表:

技术维度Protobuf (Protocol Buffers)HTTP/2gRPC
定义语言无关的数据序列化协议(Google 开发)HTTP 协议高性能开源 RPC 框架(Google 开发)
核心功能结构化数据的高效序列化/反序列化(生成二进制消息二进制分帧、多路复用、头部压缩、流控制远程过程调用(定义服务接口 & 自动生成代码)
数据格式二进制格式(体积小、解析快)二进制协议(帧结构)基于 Protobuf 消息(默认)或其他格式
传输协议不依赖特定传输层(可与任何协议结合)基于 TCP,支持 TLS 加密强制基于 HTTP/2(利用其所有特性)
主要用途跨语言数据交换、存储(如微服务间通信)通用 Web 通信(替代 HTTP/1.x)构建高性能分布式系统(API、微服务)
关键优势1. 序列化效率极高(比 JSON/XML 快 3-10 倍)
2. 自动生成强类型代码
3. 向后兼容(支持字段增删)
1. 多路复用(彻底解决线头阻塞
2. 头部压缩(HPACK
3. 二进制分帧
4. 流控制
1. 基于 HTTP/2 的高性能传输
2. 自动生成客户端/服务器代码
3. 支持流式通信
4. 丰富的拦截器机制
典型应用场景1. 微服务间数据交换
2. 移动应用与后端通信
3. 缓存数据存储
1. 现代 Web 应用(如 SPA)
2. API 网关
3. 推送通知系统
1. 跨语言微服务通信
2. 边缘计算(低延迟需求)
3. 设备与云端通信
关系gRPC 默认使用 Protobuf 定义服务接口消息格式HTTP/2 是 gRPC 的底层传输协议gRPC = Protobuf(接口定义 + 消息序列化) + HTTP/2(网络传输)

总结逻辑

  1. Protobuf 是数据格式层,负责高效序列化。
  2. HTTP/2 是传输协议层,提供高性能通信能力。
  3. gRPC 是应用框架层,整合两者并提供完整 RPC 解决方案。

https://github.com/0voice

相关文章:

【gRPC】HTTP/2协议,HTTP/1.x中线头阻塞问题由来,及HTTP/2中的解决方案,RPC、Protobuf、HTTP/2 的关系及核心知识点汇总

HTTP/2协议特点 gRPC基于HTTP/2协议,原因: 多路复用:允许在同一个TCP连接上并行传输多个请求和响应,即多个gRPC调用可以通过同一个连接同时进行,避免了HTTP/1.x中常见的线头阻塞问题,减少了连接建立和关闭…...

mac中加载C++动态库文件

前言 需要再mac系统下运行C开发的程序,通过摸索,初步实现了一版,大致记录下 1. 前提准备 安装OpenCV 使用Homebrew安装OpenCV: brew install opencv确认安装路径: brew --prefix opencv默认路径为/opt/homebrew/…...

Apollo Client 1.6.0 + @RefreshScope + @Value 刷新问题解析

问题描述 在使用 Apollo Client 1.6.0 结合 Spring Cloud 的 RefreshScope 和 Value 注解时,遇到以下问题: 项目启动时第一次属性注入成功后续配置变更时,Value 属性会刷新,但总是刷新为第一次的旧值,而不是最新的配…...

大语言模型 09 - 从0开始训练GPT 0.25B参数量 补充知识之数据集 Pretrain SFT RLHF

写在前面 GPT(Generative Pre-trained Transformer)是目前最广泛应用的大语言模型架构之一,其强大的自然语言理解与生成能力背后,是一个庞大而精细的训练流程。本文将从宏观到微观,系统讲解GPT的训练过程,…...

文本分类任务Qwen3-0.6B与Bert:实验见解

文本分类任务Qwen3-0.6B与Bert:实验见解 前言 最近在知乎上刷到一个很有意思的提问Qwen3-0.6B这种小模型有什么实际意义和用途。查看了所有回答,有人提到小尺寸模型在边缘设备场景中的优势(低延迟)、也有人提出小模型只是为了开…...

Mysql、Oracle、Sql Server、达梦之间sql的差异

1&#xff1a;分页查询 Sql Server&#xff1a; <bind name"startRow" value"(page - 1) * limit 1"/> <bind name"endRow" value"page * limit"/> SELECT *FROM (SELECT ROW_NUMBER() OVER (<if test"sortZd!…...

STM32外设AD-DMA+定时读取模板

STM32外设AD-DMA定时读取模板 一&#xff0c;方法引入二&#xff0c;CubeMX配置三&#xff0c;变量声明四&#xff0c;代码实现 (单通道) 一&#xff0c;方法引入 轮询法虽然简单&#xff0c;但 CPU 一直在忙着等待&#xff0c;效率太低。为了让 CPU 能在 ADC 转换的同时处理其…...

SQL里where条件的顺序影响索引使用吗?

大家好&#xff0c;我是锋哥。今天分享关于【SQL里where条件的顺序影响索引使用吗&#xff1f;】面试题。希望对大家有帮助&#xff1b; SQL里where条件的顺序影响索引使用吗&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 SQL 查询中&#xff0c;W…...

Java 接口中实现异步处理的方法

在Java中,接口本身不能直接实现逻辑(接口中的方法默认是抽象的,JDK 8+允许通过default方法提供非抽象实现,但通常不用于复杂的异步处理)。异步处理的逻辑需要在实现接口的类中通过多线程、异步框架或回调机制来实现。以下是几种常见的在接口实现类中实现异步处理<...

数值分析证明题

文章目录 第一题第二题第三题第四题第五题第六题第七题第八题第九题 第一题 例 给出 cos ⁡ x \cos x cosx&#xff0c; x ∈ [ 0 ∘ , 9 0 ∘ ] x\in[0^{\circ},90^{\circ}] x∈[0∘,90∘]的函数表&#xff0c;步长 h 1 ′ ( 1 60 ) ∘ h 1 (\frac{1}{60})^{\circ} h1′…...

深入理解二叉树:遍历、存储与算法实现

在之前的博客系列中&#xff0c;我们系统地探讨了多种线性表数据结构&#xff0c;包括顺序表、栈和队列等经典结构&#xff0c;并通过代码实现了它们的核心功能。从今天开始&#xff0c;我们将开启一个全新的数据结构篇章——树结构。与之前讨论的线性结构不同&#xff0c;树形…...

Python web 开发 Flask HTTP 服务

Flask 是一个轻量级的 Web 应用框架&#xff0c;它基于 Python 编写&#xff0c;特别适合构建简单的 Web 应用和 RESTful API。Flask 的设计理念是提供尽可能少的约定和配置&#xff0c;从而让开发者能够灵活地构建自己的 Web 应用。 https://andi.cn/page/622189.html...

【AI】用Dify实现一个模拟面试的功能

前言 Dify&#xff0c;一个将LLM转换为实际工作流的工具&#xff0c;以及火了一段时间了&#xff0c;但直到最近才开始研究它的使用&#xff08;主要前段时间在忙着自己的独立开发项目&#xff09;&#xff0c;我发现它的功能基本上满足了我对大语言模型&#xff0c;从仅对话转…...

研华服务器ASMB-825主板无法识别PCIE-USB卡(笔记本)

系统下无法识别到USB卡&#xff0c;排除硬件问题&#xff0c;系统问题。 最后在BIOS中更改此PCIE端口参数为X4X4X4X4&#xff0c;设置完成后可正常使用USB卡。 底部有问题详细解析。 针对研华主板ASMB-825安装绿联PCIE-USB卡无法识别的问题&#xff0c;结合BIOS设置调整的解决过…...

Redisson 四大核心机制实现原理详解

一、可重入锁&#xff08;Reentrant Lock&#xff09; 可重入锁是什么&#xff1f; 通俗定义 可重入锁类似于一把“智能锁”&#xff0c;它能识别当前的锁持有者是否是当前线程&#xff1a; 如果是&#xff0c;则允许线程重复获取锁&#xff08;重入&#xff09;&#xff0c;并…...

云计算与大数据进阶 | 26、解锁云架构核心:深度解析可扩展数据库的5大策略与挑战(上)

在云应用/服务的 5 层架构里&#xff0c;数据库服务层稳坐第 4 把交椅&#xff0c;堪称其中的 “硬核担当”。它的复杂程度常常让人望而生畏&#xff0c;不少人都将它视为整个架构中的 “终极挑战”。 不过&#xff0c;也有人觉得可扩展存储系统才是最难啃的 “硬骨头”&#…...

Android从单体架构迁移到模块化架构。你会如何设计模块划分策略?如何处理模块间的通信和依赖关系

从单体架构迁移到模块化架构。可能有些小伙伴已经深陷单体架构的泥潭&#xff0c;代码耦合得跟一团麻线似的&#xff0c;改个小功能都能牵一发而动全身&#xff1b;也可能有些团队在协作时&#xff0c;经常因为代码冲突或者职责不清搞得焦头烂额。相信我&#xff0c;这些问题我…...

基于MATLAB的人脸识别,实现PCA降维,用PCA特征进行SVM训练

基于MATLAB的人脸识别完整流程&#xff0c;包含PCA降维和SVM分类的实现。我们以经典的ORL人脸数据库为例&#xff0c;演示从数据加载到结果评估的全过程。 1. 数据准备与预处理​ 1.1 下载数据集​ 下载ORL人脸数据库&#xff08;40人10张&#xff0c;共400张图像&#xff09…...

AI 赋能 Copula 建模:大语言模型驱动的相关性分析革新

技术点目录 R及Python语言及相关性研究初步二元Copula理论与实践&#xff08;一&#xff09;二元Copula理论与实践&#xff08;二&#xff09;【R语言为主】Copula函数的统计检验与选择【R语言为主】高维数据与Vine Copula 【R语言】正则Vine Copula&#xff08;一&#xff09;…...

机器学习与人工智能:NLP分词与文本相似度分析

DIY AI & ML NLP — Tokenization & Text Similarity by Jacob Ingle in Data Science Collective 本文所使用的数据是在 Creative Commons license 下提供的。尽管我们已尽力确保信息的准确性和完整性&#xff0c;但我们不对数据的完整性或可靠性做任何保证。数据的使…...

特斯拉虚拟电厂:能源互联网时代的分布式革命

在双碳目标与能源转型的双重驱动下&#xff0c;特斯拉虚拟电厂&#xff08;Virtual Power Plant, VPP&#xff09;通过数字孪生技术与能源系统的深度融合&#xff0c;重构了传统电力系统的运行范式。本文从系统架构、工程实践、技术挑战三个维度&#xff0c;深度解析这一颠覆性…...

系统提示学习(System Prompt Learning)在医学编程中的初步分析与探索

一、SPL 的核心定义 系统提示学习(SPL)是一种通过策略性设计输入提示(Prompts),引导大型语言模型(LLMs)生成特定领域行为与输出的方法。其核心在于不修改模型参数,而是通过上下文工程(Context Engineering)动态控制模型响应,使其适配复杂任务需求。 与微调(Fine-…...

使用DDR4控制器实现多通道数据读写(十二)

一、章节概括 这一节使用interconnect RTL ip核将DDR4与四个读写通道级联&#xff0c;在测试工程中&#xff0c;将四个通道同时写入/读出地址与数据&#xff0c;并使用modelsim仿真器仿真&#xff0c;四个通道同时发送写请求或读请求后&#xff0c;经过interconnect后&#xff…...

PCIe数据采集系统详解

PCIe数据采集系统详解 在上篇文章中&#xff0c;废了老大劲儿我们写出了PCIe数据采集系统&#xff1b;其中各个模块各司其职&#xff0c;相互配合。完成了从数据采集到高速存储到DDR3的全过程。今天我们呢就来详细讲解他们之间的关系&#xff1f;以及各个模块的关键点&#xff…...

小白级通信小号、虚拟小号查询技术讲解

手机号构成与归属地原理 手机号码由国家代码、运营商代码和用户号码等部分组成。全球手机号段由国际电信联盟&#xff08;ITU&#xff09;统一规划&#xff0c;各国通信管理机构负责分配具体号段。在我国&#xff0c;通过解析手机号码前几位&#xff0c;就能确定其所属运营商及…...

【爬虫】DrissionPage-4

官网文档&#xff1a;https://www.drissionpage.cn/browser_control/browser_options 一、核心对象与初始化 1. 类定义 作用&#xff1a;管理Chromium内核浏览器的启动配置&#xff0c;仅在浏览器启动时生效。导入方式&#xff1a;from DrissionPage import ChromiumOptions…...

数据通信原理 光纤通信 期末速成

一、图表题 1. 双极性不归零、单极性不归零、曼彻斯特码、抑制载频2ASK&#xff0c;2PSK、2DPSK信号的波形 双极性不归零 和 单极性不归零&#xff1a;不归零意思是 0 低 1 高 非归零编码&#xff08;NRZ&#xff09;&#xff1a;用不同电平表示二进制数字&#xff0c;常以…...

Java微服务架构实战:Spring Boot与Spring Cloud的完美结合

Java微服务架构实战&#xff1a;Spring Boot与Spring Cloud的完美结合 引言 随着云计算和分布式系统的快速发展&#xff0c;微服务架构已成为现代软件开发的主流模式。Java作为一门成熟的编程语言&#xff0c;凭借其强大的生态系统和丰富的框架支持&#xff0c;成为构建微服务…...

React底层架构深度解析:从虚拟DOM到Fiber的演进之路

一、虚拟DOM&#xff1a;性能优化的基石 1.1 核心工作原理 React通过JSX语法将组件转换为轻量级JavaScript对象&#xff08;即虚拟DOM&#xff09;&#xff0c;而非直接操作真实DOM。这一过程由React.createElement()实现&#xff0c;其结构包含元素类型、属性和子节点等信息&a…...

今日行情明日机会——20250516

上证缩量收阴线&#xff0c;小盘股表现相对更好&#xff0c;上涨的个股大于下跌的&#xff0c;日线已到前期压力位附近&#xff0c;注意风险。 深证缩量收假阳线&#xff0c;临近日线周期上涨末端&#xff0c;注意风险。 2025年5月16日涨停股行业方向分析 机器人概念&#x…...

小结:网页性能优化

网页性能优化是提升用户体验、减少加载时间和提高资源利用率的关键。以下是针对网页生命周期和事件处理的性能优化技巧&#xff0c;结合代码示例&#xff0c;重点覆盖加载、渲染、事件处理和资源管理等方面。 1. 优化加载阶段 减少关键资源请求&#xff1a; 合并CSS/JS文件&a…...

2025年PMP 学习十五 第10章 项目资源管理

2025年PMP 学习十五 第10章 项目资源管理 序号过程过程组1规划沟通管理规划2管理沟通执行3监控沟通监控 项目沟通管理包括为确保项目的信 息及时且恰当地规划、收集、生成、发布、存储、检索、管理、控制、监 警和最终处理所需的过程&#xff1b; 项目经理绝大多数时间都用于与…...

速通RocketMQ配置

配置RocketMQ又出问题了&#xff0c;赶紧记录一波 这个是我的RocketMQ配置文件 通过网盘分享的文件&#xff1a; 链接: https://pan.baidu.com/s/1UUYeDvKZFNsKPFXTcalu3A?pwd8888 提取码: 8888 –来自百度网盘超级会员v9的分享 里面有这三个东西 里面还有一些broker和names…...

宇宙中是否存在量子现象?

一、宇宙中的量子现象 好的&#xff0c;请提供具体的搜索词或意图&#xff0c;以便进行检索和生成简洁的回答。 好的&#xff0c;请提供具体的搜索词或意图&#xff0c;以便进行检索和生成简洁的回答。 量子涨落与宇宙结构 早期宇宙的量子涨落&#xff08;微观尺度的不确定性…...

背包问题详解

一、问题引入&#xff1a;什么是背包问题&#xff1f; 背包问题是经典的动态规划问题&#xff0c;描述如下&#xff1a; 有一个容量为 m 的背包 有 n 个物品&#xff0c;每个物品有体积 v 和价值 w 目标&#xff1a;选择物品装入背包&#xff0c;使总价值最大且总体积不超过…...

oracle linux 95 升级openssh 10 和openssl 3.5 过程记录

1. 安装操作系统&#xff0c;注意如果可以选择&#xff0c;选择安装开发工具&#xff0c;主要是后续需要编译安装&#xff0c;需要gcc 编译工具。 2. 安装操作系统后&#xff0c;检查zlib 、zlib-dev是否安装&#xff0c;如果没有&#xff0c;可以使用安装镜像做本地源安装&a…...

Tomcat发布websocket

一、tomcal的lib放入文件 tomcat-websocket.jar websocket-api.jar 二、代码示例 package com.test.ws;import com.test.core.json.Jmode;import javax.websocket.*; import javax.websocket.server.ServerEndpoint; import java.util.concurrent.CopyOnWriteArraySet; imp…...

[思维模式-41]:在确定性与不确定性的交响中:人类参与系统的韧性密码。

前言&#xff1a; “任何信息系统&#xff0c;无论怎么复杂&#xff0c;哪怕是几万人同时开发的系统&#xff0c;如无线通信网络&#xff0c;通过标准、设计、算法、完毕的测试、过程的管控等&#xff0c;都是可预测和确定性的。 一个系统&#xff0c;一旦叠加了人的元素和因素…...

维智定位 Android 定位 SDK

概述 维智 Android 定位 SDK是为 Android 移动端应用提供的一套简单易用的定位服务接口&#xff0c;为广大开发者提供融合定位服务。通过使用维智定位SDK&#xff0c;开发者可以轻松为应用程序实现极速、智能、精准、高效的定位功能。 重要&#xff1a;为了进一步加强对最终用…...

Vue3:脚手架

工程环境配置 1.安装nodejs 这里我已经安装过了&#xff0c;只需要打开链接Node.js — Run JavaScript Everywhere直接下载nodejs&#xff0c;安装直接一直下一步下一步 安装完成之后我们来使用电脑的命令行窗口检查一下版本 查看npm源 这里npm源的地址是淘宝的源&#xff0…...

Android native崩溃问题分析

最近在做NDK项目的时候&#xff0c;出现了启动应用就崩溃了&#xff0c;崩溃日志如下&#xff1a; 10:41:04.743 A Build fingerprint: samsung/g0qzcx/g0q:13/TP1A.220624.014/S9060ZCU4CWH1:user/release-keys 10:41:04.743 A Revision: 12 10:41:04.743 A ABI: arm64…...

Playwright vs Selenium:2025 年 Web 自动化终极对比指南

1. 引言 Web 自动化领域正在迅速发展&#xff0c;在 2025 年&#xff0c;Playwright 与 Selenium 之间的选择已成为开发团队面临的重要决策。Selenium 作为行业标准已有十多年&#xff0c;而 Playwright 作为现代替代方案&#xff0c;以卓越的性能和现代化特性迅速崛起。 本指…...

数据结构(3)线性表-链表-单链表

我们学习过顺序表时&#xff0c;一旦对头部或中间的数据进行处理&#xff0c;由于物理结构的连续性&#xff0c;为了不覆盖&#xff0c;都得移&#xff0c;就导致时间复杂度为O&#xff08;n&#xff09;&#xff0c;还有一个潜在的问题就是扩容&#xff0c;假如我们扩容前是10…...

Python 中的 typing.ClassVar 详解

一、ClassVar 的定义和基本用途 ClassVar 是 typing 模块中提供的一种特殊类型&#xff0c;用于在类型注解中标记类变量&#xff08;静态变量&#xff09;。根据官方文档&#xff0c;使用 ClassVar[…] 注释的属性表示该属性只在类层面使用&#xff0c;不应在实例上赋值 例如&…...

主流数据库运维故障排查卡片式速查表与视觉图谱

主流数据库运维故障排查卡片式速查表与视觉图谱 本文件将主文档内容转化为模块化卡片结构&#xff0c;并补充数据库结构图、排查路径图、锁机制对比等视觉图谱&#xff0c;以便在演示、教学或现场排障中快速引用。 &#x1f4cc; 故障卡片速查&#xff1a;连接失败 数据库检查…...

Unity:延迟执行函数:Invoke()

目录 Unity 中的 Invoke() 方法详解 什么是 Invoke()&#xff1f; 基本使用方法 使用要点 延伸功能 ❗️Invoke 的局限与注意事项 在Unity中&#xff0c;延迟执行函数是游戏逻辑中常见的需求&#xff0c;比如&#xff1a; 延迟切换场景 延迟播放音效或动画 给玩家时间…...

医学影像系统性能优化与调试技术:深度剖析与实践指南

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…...

【HTML5学习笔记1】html标签(上)

web标准&#xff08;重点&#xff09; w3c 构成&#xff1a;结构、表现、行为&#xff0c;结构样式行为相分离 结构&#xff1a;网页元素整理分类 html 表现&#xff1a;外观css 行为&#xff1a;交互 javascript html标签 1.html语法规范 1&#xff09; 所有标签都在…...

SearchIndexablesProvider

实现的 provider 根据索引添加文档可知&#xff0c;该 provider 需要继承自 frameworks/base/core/java/android/provider/SearchIndexablesProvider.java 类&#xff0c;并且添加权限 android.permission.READ_SEARCH_INDEXABLES。过滤 Settings 代码&#xff0c;可以轻易找到…...

《k-means 散点图可视化》实验报告

一&#xff0c;实验目的 本次实验旨在通过Python编程实现k - means算法的散点图可视化。学习者将编写代码&#xff0c;深入理解聚类分析基本原理与k - means算法实现流程&#xff0c;掌握数据聚类及可视化方法&#xff0c;以直观展示聚类结果。 二&#xff0c;实验原理 k-mea…...