数据结构(七)——图
一、图的定义与基本术语
1.图的定义
图G由顶点集V和边集E组成,记为G=(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)的集合
注意:线性表可以是空表,树可以是空树,图不可以是空图,图可以没有边,但是至少要有一个顶点。
2.图的基本术语
(1)有向图:若E是有向边(简称弧)的有限集合时,则G为有向图。弧是顶点的有序对,记为<vw>,其中v,w是顶点。当v 是弧尾,w 是弧头时,称为从顶点v到顶点w的弧。
(2)无向图:若E是无向边(简称边)的有限集合时,则G为无向图。边是顶点的无序对,记为(v,w)或(w,v),且有(v,w)=(w,v)。其中 v,w 是顶点。
(3)完全图:
1.无向图中任意两点之间都存在边,称为无向完全图 ; 如G1就是无向完全图。无向完全图具有 n(n-1)/2 条边。
2.有向图中任意两点之间都存在方向向反的两条弧,称为有向完全图; 如G4就是有向完全图。有向完全图具有 n(n-1)条弧。
(4)子图:设两个图G=(V,E)和G’=(V',E’),如果V'属于V且 E’属于E,则称G’为G的子图
(5)顶点的度、入度和出度
①顶点的度为以该顶点为一个端点的边的数目
②对于无向图,顶点的边数为度,度数之和是顶点边数的两倍
③对于有向图,入度是以顶点为终点(即箭头所指方向),出度是以顶点为起点(即箭尾巴所指方向)
④有向图的全部顶点入度之和等于出度之和且等于边数。顶点的度等于入度与出度之和。
注意:入度与出度是针对有向图来说的
(6)路径:在图 G=(V,E)中,若从顶点x出发,经过一些顶点v1,...,v2,…,…vm到达顶点y。 则称顶点序列(x,v1, v2,…,vm,y)为从顶点x到顶点y的路径。
(7)路径长度:
非带权图的路径长度是指此路径上边的条数。
带权图的路径长度是指路径上各边的权之和。
(8)简单路径:序列中顶点不重复出现的路径。
(9)回路(环):第一个顶点和最后一个顶点相同的路径。
(10)简单回路(环):除第一个和最后一个顶点,其余顶点不重复出现的路径
二、图的存储结构
1.邻接矩阵
图的邻接矩阵的存储方式是用两个数组来表示图。一个一维数组存储图中顶点信息,一个二维数组(称为邻接矩阵)存储图中的边或弧的信息(可分别称他们为顶点数组和边数组)。
在无向图中,求某个顶点的度,即计算此顶点v在邻接矩阵中第i行(或第i列)的元素之和。若vi到vj之间有通路,则记为1,反之为0。
在有向图中,求某个顶点vi的出度,即求此顶点所在行的元素之和,若求某个顶点的度,即求顶点所在列的元素之和。
设图G有n个顶点,则邻接矩阵是一个n*n的方阵A。
邻接矩阵表示法的优缺点:
优点: (1)便于判断两个顶点之间是否有边,即根据A[i][j]=0或1来判断 (2)便于计算各个顶点的度。对于无向图,邻接矩阵第i行元素之和就是顶点i的度;对于有向图,第i行元素之和就是顶点i的出度,第i列元素之和就是顶点i的入度
缺点:
(1)不便于增加和删除顶点
(2)不便于统计边的数目,需要扫描邻接矩阵所有元素才能统计完毕,时间复杂度为 O(n2)
(3)空间复杂度高
2.邻接表
对图中的每个顶点建立一个单链表,存储该顶点所有邻接顶点及其相关信息。每一个单链表设有一个表头结点。把从一个顶点出发的所有边链接在一个单链表(又名边链表)中。把所有边链表的表头结点放在一个顺序表(又名顶点表)中。
邻接表表示法的优缺点:
优点:
(1)便于增加和删除结点
(2)便于统计边的数目
(3)空间效率高
缺点:
(1)不便于判断顶点之间是否有边2.不便于计算有向图各个顶点的度(需要遍历)
三、图的遍历
从图中某一顶点出发访问图中其余结点,使每一个结点被访问且仅被访问依次
图的遍历通常有两种方法:深度优先搜索和广度优先搜索。它们对无向图和有向图都适用
1.深度优先搜索
深度优先搜索思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止。
深度优先搜索是一个递归的过程。首先,选定一个出发点后进行遍历,如果有邻接的未被访问过的节点则继续前进。若不能继续前进,则回退一步再前进,若回退一步仍然不能前进,则连续回退至可以前进的位置为止。重复此过程,直到所有与选定点相通的所有顶点都被遍历。
深度优先遍历类似于二叉树的先序遍历,深度优先遍历通常借助栈来实现算法
深度优先搜索的序列不是唯一的
代码实现:
void dfs(graph g,vtxptr v0){
//从v0出发深度优先遍历图G
//G是连通图或非连通图中的一个连通分量访问v0;w = v0 的第一个邻接点;while(当邻接点w存在时){if(w未访问)dfs(G,w);//若w未访问,则深度优先遍历图w = 下一邻接点;}
}//dfs
2.广度优先搜索
广度优先搜索思想:从图中某顶点v出发,在访问了v之后依次访问v的各个未曾访问过的邻接点,然后分别从这些邻接点出发依次访问它们的邻接点,并使得先被访问的顶点的邻接点先于后被访问的顶点的邻接点被访问,直至图中所有已被访问的顶点的邻接点都被访问到。如果此时图中尚有顶点未被访问,则需要另选一个未曾被访问过的顶点作为新的起始点,重复上述过程,直至图中所有顶点都被访问到为止。
广度优先搜索类似于树的层次遍历,是按照一种由近及远的方式访问图的顶点。在进行广度优先搜索时需要使用队列存储顶点信息。
广度优先遍历通常借助队列来实现算法
代码实现:
void bfs(graph g,vtxptr v0){
//从v0出发广度优先遍历图g(g是连通图或连通分量)visite(v0);mark[v0] = 1;initqueue(Q);enqueue(Q,v0);//v0进队列Qwhile(!queueempty(Q)){delqueue(Q,v);w = 求v第一个的邻接点;while(当邻接点w存在时){if(w未访问){visite(w);mark[w] = 1;enqueue(Q,w);}w = 下一邻接点;}}
}
四、图的应用:拓扑排序
用顶点、边表示活动和彼此相互关系的网络,简称 AOV网络(Activity On Vertices)
顶点:一个工程中的活动(Actifity)
边:活动的顶点间的优先关 系(Relation)
要解决的问题是:将各个顶点(代表各个活动)排列成一个线性有序的序列,使得AOV网络中所有应存在的前驱和后继关系都能得到满足
在AOV网络中,如果活动Vi必须在活动Vj之前进行,则存在有向边<Vi,Vj>,AOV网络中不能出现有向回路,即有向环。在AOV网络中如果出现了有向环,则意味着某项活动应以自己作为先决条件。因此,对给定的AOV网络,必须先判断它是否存在有向环
将各个顶点(代表各个活动)排列成一个线性有序的序列,使得AOV网络中所有应存在的前驱和后继关系都能得到满足——拓扑序列。 这种构造AOV网络全部顶点的拓扑有序序列的运算就叫做拓扑排序。即将有向图中的顶点排成一个拓扑序列的过程。
首先建立(n个顶点的)AOV网(1)在AOV网络中选一个没有直接前驱的顶点(入度为0的顶点),并输出之;(2)从图中删去该顶点,同时删去所有它发出的边重复(1)和(2),直到全部顶点均已输出,拓扑有序序列形成,拓扑排序完成;若图中还有未输出的顶点,但已跳出处理循环。这说明图中存在环。
算法思想:
(1)建立入度为零的顶点栈;
(2)当入度为零的顶点栈不空时,重复执行 (2)-1 从顶点栈中退出一个顶点,并输出; (2)-2 从AOV网络中删去这个顶点和它发出的边,边的终顶点入度减一;
(2)-3 如果边的终顶点入度减至0,则该顶点进入度为零的顶点栈; (3)如果输出顶点个数少于AOV网络的顶点个数则报告网络中存在有向环。
代码:
五、习题
答案:B
解释:有向图所有顶点入度之和等于所有顶点出度之和。
答案:B
解释:有向图的边有方向之分,即为从n个顶点中重复选取2个顶点有序排列,结果为n(n-1)。
答案:B
解释:所谓连通图一定是无向图,有向图叫强连通图连通n个顶点,至少只需要n-1条边就可以了,由于无向图的每条边同时关联两个顶点,因此邻接矩阵中每条边被存储了两次(也就是说是对称矩阵),因此至少有2(n-1)个非零元素
答案:C
解释:8个顶点的无向图最多有8*712=28条边,再添加一个点即构成非连通无向图,故至少有9个顶点
答案:B
解释:即从该无向图任意一个顶点出发有到各个顶点的路径,所以该无向图是连通图
答案:B
解释:广度优先遍历通常借助队列来实现算法,深度优先遍历通常借助栈来实现算法
答案:D;D
解释:广度:访问V0,依次访问其未访问的邻接顶点(顺着链表)
深度:首先邻的结点1,然后找到2,然后找到3
相关文章:
数据结构(七)——图
一、图的定义与基本术语 1.图的定义 图G由顶点集V和边集E组成,记为G(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)的集合 注意:线性表可以是空表,树可以是空树&…...
养生:打造健康生活的全方位策略
在生活节奏不断加快的当下,养生已成为提升生活质量、维护身心平衡的重要方式。从饮食、运动到睡眠,再到心态调节,各个方面的养生之道共同构建起健康生活的坚实基础。以下为您详细介绍养生的关键要点,助您拥抱健康生活。 饮食养生…...
数据结构(2)线性表-顺序表
知道一个算法的好坏怎么去判断以后,就该正式的去学习一些常见的数据结构,当然,这里的数据结构仅仅是初阶,不会挨个一个一个学完,后期慢慢来。 一、数据结构总论 一般按照逻辑结构和存储结构来分类,在初阶…...
【深度学习-Day 10】机器学习基石:从零入门线性回归与逻辑回归
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
芯片:金线的作用
一、金线的核心作用:互联芯片与外部封装 金线(Gold Wire)在芯片制造中主要用于引线键合(Wire Bonding),这是将芯片(Die)与外部封装引脚(Lead Frame或Substrateÿ…...
Vue3+uniapp 封装axios
1.第一步在项目根目录新建utils文件夹,里边新建两个文件request.js和uni-api-promisify.js 2.request.js 代码 要安装axios import axios from axios import { showToast } from /utils/uni-api-promisify// 创建axios实例 const service axios.create({baseURL:…...
Nacos源码—9.Nacos升级gRPC分析七
大纲 10.gRPC客户端初始化分析 11.gRPC客户端的心跳机制(健康检查) 12.gRPC服务端如何处理客户端的建立连接请求 13.gRPC服务端如何映射各种请求与对应的Handler处理类 14.gRPC简单介绍 10.gRPC客户端初始化分析 (1)gRPC客户端代理初始化的源码 (2)gRPC客户端启动的源码…...
与智能体高效协作:Kimi交互逻辑探索与提示词设计实践【附kimi提示词合集下载】
引言:智能时代的人机协作新范式 在持续使用多款AI助手完成技术文档分析、数据分析等任务后,我逐渐意识到工具效能的核心不仅在于技术参数,更在于使用者对交互逻辑的理解深度。本文将基于实际项目经验,探讨智能体交互的本质规律&a…...
Web 架构之负载均衡会话保持
文章目录 一、引言二、思维导图三、负载均衡会话保持的概念3.1 定义3.2 作用 四、负载均衡会话保持的实现方式4.1 基于 IP 地址原理代码示例(以 Nginx 为例)注释 4.2 基于 Cookie原理代码示例(以 HAProxy 为例)注释 4.3 基于 SSL …...
遨游卫星电话与普通手机有什么区别?
在数字化浪潮席卷全球的今天,通信设备的角色早已超越传统语音工具,成为连接物理世界与数字世界的核心枢纽。然而,当普通手机在都市丛林中游刃有余时,面对偏远地区、危险作业场景的应急通信需求,其局限性便显露无遗。遨…...
【Redis】谈谈Redis的设计
Redis(Remote Dictionary Service)是一个高性能的内存键值数据库,其设计核心是速度、简单性和灵活性。以下从架构、数据结构、持久化、网络模型等方面解析 Redis 的设计实现原理: 1. 核心设计思想 内存优先:数据主要存…...
聊天项目总结
目前项目 完成了个人信息修改,添加好友,创建群聊,添加群聊,在线状态,删除好友,退出群,解散群,好友申请,群资料修改,群管理,群主转让,…...
智能手表整机装配作业指导书(SOP)
📄 智能手表整机装配作业指导书(SOP) 产品名称:Aurora Watch S1 产品型号:AWS1-BG22 版本号:SOP-AWS1-V1.0 编制日期:2025年5月6日 编制单位:制造工程部(ME)…...
c语言第一个小游戏:贪吃蛇小游戏05
贪吃蛇脱缰自动向右走:脱缰的野蛇 #include <curses.h> #include <stdlib.h> struct snake{ int hang; int lie; struct snake *next; }; struct snake *head; struct snake *tail; void initNcurse() { initscr(); keypad(stdscr,1); } int …...
ES6中的解构
在 JavaScript(包括 TypeScript)中,数组解构和对象解构是 ES6 引入的两个非常实用的语法特性,它们可以帮助我们更方便地从数组或对象中提取数据。 一、数组解构(Array Destructuring) 📌 基本用…...
Pycharm的终端执行allure命令出现command not found
Pycharm的接口自动化项目用的是venv虚拟环境,已下载和配置好Allure路径,查看Allure版本正常。 问题:在重新打开Pycham的项目时,在Pycharm终端中执行allure相关命令就会报错zsh: allure: command not found 原因:在PyC…...
[ctfshow web入门] web72
信息收集 下载index.php并查看,和上题差不多 error_reporting(0); ini_set(display_errors, 0); // 你们在炫技吗? if(isset($_POST[c])){$c $_POST[c];eval($c);$s ob_get_contents();ob_end_clean();echo preg_replace("/[0-9]|[a-z]/i",…...
【Folium】使用离线地图
文章目录 相关文献离线地图下载Folium 使用离线地图 相关文献 Folium — Folium 0.19.5 documentationOffline Map Maker 离线地图下载 我们使用 Offline Map Maker 进行地图下载。 特别注意:Folium 默认支持 WGS84 坐标系,建议下载 WGS84 坐标系的地…...
嵌入式自学第二十天(5.13)
(1)线性表顺序存储的优缺点: 优点:无需为表中逻辑关系添加额外存储空间; 可以快速随机访问元素,时间复杂度O(1)。 缺点:插入删除需要移动元素O(n); 无法动态存储。 …...
ThingsBoard3.9.1 MQTT Topic(4)
本章中的主题适用于网关设备。 1.网关订阅设备属性的topic:v1/gateway/attributes/response 订阅后接收到的响应格式。 { "id":3, "device":"m1", "values":{ "version":"V1.2"…...
centos中JDK_PATH 如何设置
在 CentOS 7.9 中设置 JDK_PATH(即 JAVA_HOME)的步骤如下。JAVA_HOME 是一个环境变量,用于指向 Java 开发工具包(JDK)的安装路径。 1. 查找 JDK 安装路径 首先,你需要找到 JDK 的安装路径。可以通过以下命…...
一次讲清 FP32 / FP16 / BF16 / INT8 / INT4
一次讲清 FP32 / FP16 / BF16 / INT8 / INT4 目标:让你3 分钟读懂格式原理,5 分钟学会选型。 只记一句:“指数定范围,尾数定精度;位宽定显存,硬件定成本”。 1 | 为什么要有这么多格式? …...
PH热榜 | 2025-05-13
1. FirstQuadrant 标语:通过以人为本的人工智能来最大化B2B销售 介绍:销售人工智能,帮助创始人和收益团队提高效率,保持组织有序,并促成更多交易。它通过简化销售幕后工作,确保每个细节都不会遗漏。 产品…...
java基础-泛型
文章目录 目录 文章目录 前言 一、泛型的作用 1.类型安全 2.通用性 这里再举个例子 二、泛型的实现 1.泛型类 2.泛型接口 3.泛型方法 4.T符号的起源(额外) 三、泛型擦除 四、泛型通配符 1.上界通配符( ) 为什么用于…...
对抗帕金森:在疾病阴影下,如何重掌生活主动权?
帕金森病,一种影响全球超 1000 万人的神经退行性疾病,正无声地改变着患者的生活轨迹。随着大脑中多巴胺分泌减少,患者逐渐出现肢体震颤、肌肉僵硬、步态迟缓等症状,甚至连扣纽扣、端水杯这类日常动作都变得艰难。更棘手的是&#…...
网络协议与系统架构分析实战:工具与方法全解
网络协议与系统架构分析实战:工具与方法全解 在互联网系统的开发、运维与安全分析中,协议解析与抓包分析是不可或缺的核心技能。本文将系统梳理主流协议解析工具、协议自动识别方案,并结合实际抓包案例,讲解如何还原和推测底层系…...
使用PocketFlow构建Web Search Agent
前言 本文介绍的是PocketFlow的cookbook中的pocketflow-agent部分。 回顾一下PocketFlow的核心架构: 每一个节点的架构: 具体介绍可以看上一篇文章: “Pocket Flow,一个仅用 100 行代码实现的 LLM 框架” 实现效果 这个Web S…...
基于STM32、HAL库的TLV320AIC3204IRHBR音频接口芯片驱动程序设计
一、简介: ADAU1701JSTZ-RL 是一款高性能音频编解码器 (Codec),专为便携式和低功耗应用设计。它集成了 ADC、DAC、麦克风前置放大器、耳机放大器和数字信号处理功能,支持 I2S/PCM 音频接口和 I2C 控制接口,非常适合与 STM32 微控制器配合使用。 二、硬件接口: 典型的 ST…...
轻量级高性能推理引擎MNN 学习笔记 02.MNN主要API
1. MNN 主要API 注意:本学习笔记只介绍了我在学习过程中常用的API ,更多MNN API 请参考官方文档。 1.1. 推理时操作流程 创建Interpreter : createFromFile()通过Interpreter创建Session :createSession()设置输入数据: getSes…...
STM32 ADC 模数转换器详解:原理、配置与应用
STM32 ADC 模数转换器详解:原理、配置与应用 在嵌入式系统中,模数转换(ADC)是实现传感器信号采集、信号处理等任务的关键环节。STM32 微控制器作为一款功能强大的 32 位微控制器,其内置的 ADC 模块为开发者提供了高效…...
18.Excel数据透视表:第1部分创建数据透视表
一 什么是数据透视表 通过万花筒可以用不同的方式査看里面画面图像,在excel中可以将数据透视表看作是对准数据的万花筒,用不同角度去观察数据,也可以旋转数据,对数据进行重新排列,对大量的数据可以快速的汇总和建立交叉…...
AI 模型训练轻量化技术在军事领域的实战应用与技术解析
AI 模型训练轻量化技术在军事领域的实战应用与技术解析 一、引言 在人工智能与军事领域深度融合的当下,AI 模型训练轻量化技术正成为破解战场资源限制的关键钥匙。通过模型压缩、量化、剪枝等核心技术,轻量化模型在算力受限、通信不稳定的复杂战场环境中…...
科学养生,开启健康生活
在快节奏的现代生活中,健康养生成为人们关注的焦点。科学合理的养生方式,无需依赖传统医学理论,也能有效提升生活质量,为身体注入活力。 均衡饮食是养生的基础。每天应保证摄入足够的蛋白质、碳水化合物和脂肪,同时…...
高效跨平台文件传输与管理的工具
软件介绍 这款名为 Coolmuster Mobile Transfer 的工具是一款多平台支持的文件传输工具,能高效地在不同设备间进行文件传输与管理。 适用场景 它适用于多种场景,无论是个人文件整理、家庭成员间资料共享,还是企业场景下的工作文件处理&…...
如何优化 Linux 服务器的磁盘 I/O 性能
# 优化 Linux 服务器磁盘 I/O 性能的全面指南 ## 1. 识别 I/O 瓶颈 首先确定是否存在 I/O 瓶颈以及瓶颈位置: bash # 使用 iostat 查看磁盘 I/O 统计 iostat -x 1 # 使用 iotop 查看进程级 I/O 使用情况 iotop # 使用 vmstat 查看系统整体 I/O 情况 vmstat 1 …...
Python基础学习-Day23
目录 基础概念转换器(transformer)估计器(estimator)管道(pipeline) 实例pipeline 基础概念 pipeline在机器学习领域可以翻译为“管道”,也可以翻译为“流水线”,是机器学习中一个重…...
【Ubuntu】扩充磁盘大小
sudo apt-get install gparted 安装完成后,搜索gparted软件,打开gparted 参考...
数据治理域——日志数据采集设计
摘要 本文主要介绍了Web页面端日志采集的设计。首先阐述了页面浏览日志采集,包括客户端日志采集的实现方式、采集内容及技术亮点。接着介绍了无线客户端端日志采集,包括UserTrack的核心设计、移动端与浏览器端采集差异以及典型应用场景崩溃分析。最后探…...
Dinky 安装部署并配置提交 Flink Yarn 任务
官方文档 https://www.dinky.org.cn/docs/1.1/deploy_guide/normal_deploy 版本 dinky 1.1.0、1.2.3 当前最新发布版本为 1.2.3 ,但是官方文档最新稳定版为 1.1 ,所以先选择 1.1.0,验证通过后,再尝试 1.2.3 ,发现 1…...
杰理-701-手表sdk无法电脑连接经典蓝牙
杰理-701-手表sdk无法电脑连接经典蓝牙 只有手机可以连接经典蓝牙播放音乐,电脑无法连接,需要关闭emitter功能 交流q群:187115320...
Timsort 算法
文章目录 1 基础理解1.1 定义和原理1.2 工作原理 2 算法实现2.1 Python 代码实现2.1.1 代码2.1.2 核心逻辑计算最小运行长度(calc_min_run(n))插入排序(insertion_sort(arr, left, right)) 2.2 Java 代码实现2.3 C 代码实现 3 逻辑…...
Go构建高并发权重抽奖系统:从设计到优化全流程指南
引言:为何需要专业抽奖系统? 在现代互联网应用中,抽奖系统被广泛用于营销活动、用户激励等场景。一个好的抽奖系统需要满足: 公平性:确保概率分布准确高性能:支持高并发抽奖请求安全性:防止作…...
深度学习计算
深度学习的飞速发展离不开强大的计算能力支撑。从张量计算到 GPU 加速,从自动微分到分布式计算,深度学习计算的每一项技术都如同精密仪器中的关键齿轮,推动着模型性能的不断提升。本文深入剖析深度学习计算的核心技术、优化策略以及前沿趋势&…...
【Bluedroid】蓝牙 HID DEVICE 初始化流程源码解析
本文深入剖析Android蓝牙协议栈中HID设备(BT-HD)服务的初始化与启用流程,从接口初始化、服务掩码管理、服务请求路由到属性回调通知,完整展现蓝牙HID服务激活的技术路径。通过代码逻辑梳理,揭示服务启用的核心机制&…...
Kotlin 中的 Unit 类型的作用以及 Java 中 Void 的区别
在 Kotlin 中,Unit 类型和 Java 中的 void 关键字都用于表示“没有返回值”的函数,但它们在设计理念、类型系统和实际使用中有显著的区别。 1 Kotlin 中的 Unit 类型 表示无返回值: 当函数不返回有意义的值时,Kotlin 使用 Unit …...
Gemini 2.5 推动视频理解进入新时代
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
Spark Streaming 内部运行机制详解
核心思想:将实时数据流切割为“微批次”,利用 Spark Core 的批处理能力进行准实时计算。 1. 核心流程拆解 数据接收(Input Data Stream) 输入源:Kafka、Flume、Socket 等实时数据流。 接收器(Receiver&…...
Feign+Resilience4j实现微服务熔断机制:原理与实战
引言:为什么需要熔断器? 在微服务架构中,服务间的依赖调用变得非常普遍。想象一下这样的场景:订单服务依赖支付服务,支付服务又依赖银行网关服务。如果银行网关服务出现故障,故障会向上蔓延,导…...
什么是SparkONYarn模式
1. 什么是 Spark on YARN? Spark on YARN 是 Apache Spark 的一种部署模式,允许 Spark 应用程序在 Hadoop YARN 集群上运行,充分利用 YARN 的资源管理和调度能力。这种模式将 Spark 与 Hadoop 生态深度集成,使企业能够在同一集群…...
鸿蒙北向应用开发: deveco5.0 创建开源鸿蒙项目
本地已经安装deveco5.0 使用5.0创建开源鸿蒙项目 文件->新建->新建项目 直接创建空项目,一路默认 next 直接编译项目 直接连接开源鸿蒙5.0开发板编译会提示 compatibleSdkVersion and releaseType of the app do not match the apiVersion and releaseType on the dev…...