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

堆和二叉树的概念和操作

目录

1.树的概念

 1.1数的表示

1.2二叉树

 1.3特殊的二叉树

1.3.1满二叉树

 1.3.2完全二叉树

1.3.3 二叉树存储结构

 2.堆

2.1堆的实现

初始化和销毁

 堆的插入

 堆的向上调整算法​编辑

​编辑

 堆的删除

 出堆顶


1.树的概念

树是非线性的数据结构,有限节点具有的层次关系的集合。

根节点:有且只有一个根节点,没有前驱。其余节点被分成互不相交的树

除根节点外每个节点都有一个前驱节点。

⼀棵N个结点的树有N-1条边

 ⽗结点/双亲结点若⼀个结点含有⼦结点,则这个结点称为其⼦结点的⽗结点; 如上图:A是B的父结点

⼦结点/孩⼦结点个结点含有的⼦树的根结点称为该结点的⼦结点; 如上图:B是A的孩⼦结点

结点的度:⼀个结点有⼏个孩⼦,他的度就是多少;⽐如A的度为6,F的度为2,K的度为0

树的度:⼀棵树中,最⼤的结点的度称为树的度; 如上图:树的度为 6

叶⼦结点/终端结点度为 0 的结点称为叶结点; 如上图: B、C、H、I... 等结点为叶结点

分⽀结点/⾮终端结点:度不为 0 的结点; 如上图: D、E、F、G... 等结点为分⽀结点(非叶子节点

兄弟结点:具有相同⽗结点的结点互称为兄弟结点(亲兄弟); 如上图: B、C 是兄弟结点

结点的层次:从根开始定义起,根为第 1 层,根的⼦结点为第 2 层,以此类推;

树的⾼度或深度:树中结点的最⼤层次; 如上图:树的⾼度为 4

结点的祖先:从根到该结点所经分⽀上的所有结点;如上图: A 是所有结点的祖先

路径:⼀条从树中任意节点出发,沿⽗节点-⼦节点连接,达到任意节点的序列;⽐如A到Q的路径为: A-E-J-Q;H到Q的路径H-D-A-E-J-Q

⼦孙:以某结点为根的⼦树中任⼀结点都称为该结点的⼦孙。如上图:所有结点都是A的⼦孙

森林:由 m(m>0) 棵互不相交的树的集合称为森林;

 1.1数的表示

孩子兄弟表示法

struct TreeNode 
{
Struct Node * child; //第一个孩子节点struct Node  * brother ;//孩子的兄弟节点int  data;//数据域
}

1.2二叉树

二叉树是树形结构的一种。最常⽤的就是⼆叉树,⼀棵⼆叉树是结点的⼀个有限集合,该集合由⼀个根结点 加上两棵别称为左⼦树和右⼦树的⼆叉树组成或者为空。

1. ⼆叉树不存在度⼤于 2 的结点

2. ⼆叉树的⼦树有左右之分,次序不能颠倒,因此⼆叉树是有序树

注意:对于任意的⼆叉树都是由以下⼏种情况复合⽽成的

 1.3特殊的二叉树

1.3.1满二叉树

每⼀个层的结点数都达到最⼤值,则这个⼆叉树就是满⼆叉树。如果⼀ 个⼆叉树的层数为 K

且节点总数为2的k次方-1,这个就是满二叉树。

 1.3.2完全二叉树

完全⼆叉树是由满⼆叉树⽽引出来的。对于深度为 K 的,有 n 个 结点的⼆叉树,当且仅当其每⼀个结点都与深度为K的满⼆叉树中编号从 1 ⾄ n 的结点⼀⼀对应时称 之为完全⼆叉树。要注意的是满⼆叉树是⼀种特殊的完全⼆叉树。

除了第k层  每层节点的个数都达到最大个数 ,第k层的个数不一定是最大节点个数

 完全二叉树的结点的顺序是从左到右的。

完全二叉树是满二叉树的一种 ,完全二叉树不一定是满二叉树,满二叉树一定是完全二叉树

根据满⼆叉树的特点可知:

1)若规定根结点的层数为 1 ,则⼀棵⾮空⼆叉树的第i层上最多有 2 的i−1 次方个结点

2)若规定根结点的层数为 1 ,则深度为 h 的⼆叉树的最⼤结点数是 2 的h次方 -1 比特就业课

3)若规定根结点的层数为 1 ,具有 n 个结点的满⼆叉树的深度 h= log 2 (n+1) ( log 以2为底, n+1 为对数)

1.3.3 二叉树存储结构

二叉树有两种存储机构 :顺序结构 、链式结构。

顺序结构

顺序结构存储就是使⽤数组来存储,⼀般使⽤数组只适合表⽰完全⼆叉树,因为不是完全⼆叉树会有空间的浪费,完全⼆叉树更适合使⽤顺序结构存储。

通常把堆(⼀种⼆叉树)使⽤顺序结构的数组来存储,需要注意的是这⾥的堆和操作系统 虚拟进程地址空间中的堆是两回事,⼀个是数据结构,⼀个是操作系统中管理内存的⼀块区域分段

链式存储

 链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别⽤来给出该结点左孩⼦和右孩 ⼦所在的链结点的存储地址

 2.堆

堆分为大根堆和小跟堆

堆也是一种特殊的二叉树,⼀般堆使⽤顺序结构的数组来存储数据。

 上面可以得出 小根堆的父节点比子节点要小,大根堆的父节点比子节点要大。

堆总是完全二叉树

二叉树性质

对于具有 n 个结点的完全⼆叉树,如果按照从上⾄下从左⾄右的数组顺序对所有结点从 0 开始编号,则对于序号为 i 的结点有:

用下标来进行

1. 若 i>0 , i 位置结点的双亲序号: (i-1)/2 ; i=0 , i   为根结点编号,⽆双亲结点   子节点求出 父节点

2. 若 2i+1=n 否则⽆左孩⼦ 

3. 若 2i+2=n 否则⽆右孩

2.1堆的实现

初始化和销毁

 

 

 堆的插入

大家可以来实现一下 这个很类似于单链表的插入

 堆的向上调整算法

 经过调试后可以看出是小根堆


 小根堆的展示方法

 

 堆的删除

先交换首尾结点 ,后删除尾结点,堆顶向下调整 直至child >n

 下面我们可以把数组里的数据拆解一下

 出堆顶

 可以将下面的堆进行排序

 

 结果是没问题的 得出的是小根堆

 这节课就告一段落了,下个章节见

Heap.c

#define _CRT_SECURE_NO_WARNINGS
#include "Heap.h"
//初始化
void HPInit(HP* php)
{assert(php);php->arr = NULL;php->capacity = php->size = 0;}
//销毁
void HPDestory(HP* php)
{assert(php);if (php->arr){free(php->arr);}php->arr = NULL;php->capacity = php->size = 0;}
//交换数据
void Swap(int* x, int* y)
{int tmp = *x;*x = *y;*y = tmp;}
//向上调整算法
void AdjustUp(HPDatatyp* arr, int child)
{int  parent = (child - 1) / 2;while (child > 0)//当child为0的时候 说明走到了根节点{if (arr[child] < arr[parent]){Swap(&arr[parent], &arr[child]);child = parent;parent = (child - 1) / 2;}else{break;}}}void  HPPush(HP* php,HPDatatyp x)
{assert(php);//判断空间是否足够if (php->size == php->capacity){int newcapacity = php->capacity == 0 ? 4 : php->capacity * 2;HPDatatyp* tmp = (HPDatatyp*)realloc(php->arr, newcapacity * sizeof(HPDatatyp));if (tmp == NULL){perror("realloc fail");exit(1);}php->arr = tmp;php->capacity = newcapacity;}php->arr[php->size] = x;AdjustUp(php->arr , php->size );++php->size;
}//向下调整
void  AdjustDown(HPDatatyp* arr, int parent, int n)
{int child = parent * 2 + 1;//左右孩子中找最小的孩子 和父结点比较while (child <n){if (child +1  <n && arr[child] > arr[child + 1]){child++;}if (arr[child] < arr[parent]){Swap(&arr[child], &arr[parent]);//这里记得要传地址parent = child ;child = parent * 2 + 1;}//如果child大于parent 那么就跳出else{break;}}}
void HPPop(HP* php)
{assert(php && php->size);Swap(&php->arr[0], &php->arr[php->size - 1]);//第一步交换首尾结点--php->size;AdjustDown(php->arr, 0, php->size); //向下调整}
bool HPEmpty(HP* php)//堆为空
{assert(php);return  php->size == 0;}HPDatatyp  HPTop(HP* php) // 出堆顶
{assert(php && php->size);return php->arr[0];}

 Heap.h

#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <stdbool.h>
typedef int HPDatatyp;typedef struct Heap
{HPDatatyp* arr; int size;//个数int capacity; //容量}HP;void HPInit(HP* php);void HPDestory(HP* php);//插入数据void  HPPush(HP* php,HPDatatyp x);//删除数据void HPPop(HP* php);//出堆顶HPDatatyp   HPTop(HP* php);//堆空bool HPEmpty(HP* php);

text,c

#define _CRT_SECURE_NO_WARNINGS
#include "Heap.h"
void HPtext()
{HP  hp;HPInit(&hp);int arr[] = { 12,34,56,32,43,25,45 };for (int  i = 0; i <= 6; i++){HPPush(&hp, arr[i]); }//HPPop(&hp);while (!HPEmpty(&hp)){printf("%d ", HPTop(&hp));HPPop(&hp);}HPDestory(&hp);}
int main()
{HPtext();return 0;
}

相关文章:

堆和二叉树的概念和操作

目录 1.树的概念 1.1数的表示 1.2二叉树 1.3特殊的二叉树 1.3.1满二叉树 1.3.2完全二叉树 1.3.3 二叉树存储结构 2.堆 2.1堆的实现 初始化和销毁 堆的插入 堆的向上调整算法​编辑 ​编辑 堆的删除 出堆顶 1.树的概念 树是非线性的数据结构&#xff0c;有限节点具有的层…...

互联网大厂Java面试实录:从Spring Boot到微服务架构的技术问答

互联网大厂Java面试实录&#xff1a;从Spring Boot到微服务架构的技术问答 在某互联网大厂的面试现场&#xff0c;严肃的面试官开始了对求职者谢飞机的技术考核。此次面试围绕Java技术栈的应用与场景展开。 第一轮&#xff1a;基础架构与语言 面试官&#xff1a; 请你用简单…...

Rollup、Webpack、Esbuild 和 Vite 前端打包工具

Rollup、Webpack、Esbuild 和 Vite 都是前端开发中常用的打包工具&#xff0c;它们各有特点&#xff0c;以下是对它们的详细对比&#xff1a; 核心功能 Rollup&#xff1a;专注于 JavaScript 模块打包&#xff0c;擅长将小的 JavaScript 模块打包成一个或多个文件&#xff0c…...

刀客独家 | 潘胜接管百度移动生态市场部

一、 据刀客doc向独家信源确认&#xff0c;百度移动生态事业群&#xff08;MEG&#xff09;市场部日前完成重要人事调整&#xff1a;潘胜已经接任市场负责人。 此前&#xff0c;根据雷锋网3月底的报道&#xff0c;百度云渠道生态总经理陈之若离职&#xff0c;原移动生态事业群…...

如何在Chrome浏览器中启用硬件加速【提升浏览器性能】

在使用谷歌浏览器时&#xff0c;硬件加速是提升性能的一个重要功能。它可以将一些计算任务从CPU转移到GPU&#xff0c;从而加速图像处理、视频播放等任务。如果您希望提升浏览器的运行速度&#xff0c;可以通过以下简单步骤启用硬件加速。 1. 打开Chrome浏览器设置 首先&#…...

部署mongodb三幅本集群

背景&#xff1a;原先使用的mongodb采用的是SSPL协议&#xff0c;此协议客户检测到有bug&#xff0c;故需要替换mongodb的版本&#xff0c;原先采用helm部署的mongodb但是无法找到4.1.4版本的chart包&#xff0c;故手写yaml部署 1、部署mongodb-arbiter服务 这个服务是用来选…...

JavaScript 解构赋值(下):对象解构与高级应用

对象解构赋值 基本语法 const person { name: Alice, age: 30 }; const { name, age } person;console.log(name); // Alice console.log(age); // 30别名 const { name: fullName, age: years } person; console.log(fullName); // Alice console.log(years); // 30…...

批量级负载均衡(Batch-Wise Load Balance)和顺序级负载均衡(Sequence-Wise Load Balance)

本文主要比较了批量级负载均衡(Batch-Wise Load Balance)和顺序级负载均衡(Sequence-Wise Load Balance)在 Mixture-of-Experts(MoE)模型训练中的核心区别 。批量级负载均衡通过对整个训练批次的专家负载进行平衡约束,实现了更灵活的均衡策略,有助于专家在不同领域的专…...

什么是EI期刊?EI目录列表如何看?一文查看最新目录+避坑指南

近期有很多人在后台问小编关于EI期刊的各种问题&#xff0c;且前段时间EI期刊目录刚刚更新&#xff0c;小编正好借此&#xff0c;这期仔细给大家介绍一下。 什么是EI期刊&#xff1f; EI期刊也称为工程索引期刊&#xff0c;是供查阅工程技术领域文献的综合性情报检索刊物。每年…...

[创业之路-341]:华为人力资源管理 - 华为技术专家体系详解

华为技术专家体系详解 一、技术专家等级划分 华为技术专家体系以 “专业能力管理贡献” 为双维度&#xff0c;覆盖 19级&#xff08;技术专家B&#xff09;至22级&#xff08;集团核心领导者&#xff09;&#xff0c;其中 19B-20A级 为核心技术专家层级&#xff1a; 19B级&a…...

【HarmonyOS 5】鸿蒙检测系统完整性

【HarmonyOS 5】鸿蒙检测系统完整性 一、前言 从现实安全威胁来看&#xff0c;设备系统完整性风险已影响至移动应用的各个场景。不少用户因使用越狱设备&#xff08;Jailbreak&#xff09;或非真实设备&#xff08;Emulator&#xff09;&#xff0c;导致应用安全防护机制失效…...

量子网络:构建未来通信的超高速“高速公路”

在当今数字化时代&#xff0c;通信技术的飞速发展极大地推动了全球信息的流动和共享。然而&#xff0c;随着数据量的爆炸式增长和对信息安全需求的不断提高&#xff0c;传统通信网络正面临着前所未有的挑战。量子网络作为一种新兴的通信技术&#xff0c;以其超高速传输和绝对安…...

安卓触摸事件分发机制分析

1. 前言 &#x1f3af; 一句话总结&#xff1a; 触摸事件&#xff08;TouchEvent&#xff09;会从 Activity 层开始&#xff0c;按从外到内的方式传递给每一个 ViewGroup/View&#xff0c;直到某个 View 消费&#xff08;consume&#xff09; 它&#xff0c;事件传递就会停止…...

Servlet (简单的servlet的hello world程序)

Servlet servlet在20年前左右,是网站开发的一种主力技术. 现在随着时间的推移,Java这个圈子中,逐渐使用spring代替了servlet.现在讲servlet,目的有两个方面. 1.spring作为一个框架.底层仍然是需要调用servlet里的一些api的,包括熟悉servlet有助于理解spring工作原理.包括spr…...

解析 OpenHarmony、HarmonyOS 与 HarmonyOS Next:优雅草卓伊凡的观点

解析 OpenHarmony、HarmonyOS 与 HarmonyOS Next&#xff1a;优雅草卓伊凡的观点 在科技领域&#xff0c;围绕操作系统的讨论从未停歇&#xff0c;其中 OpenHarmony、HarmonyOS 及其后续版本 HarmonyOS Next 备受瞩目。优雅草的卓伊凡对此有着深入见解&#xff0c;在此为大家详…...

Redis03-基础-C#客户端

零、文章目录 Redis03-基础-C#客户端 1、安装NuGet包 dotnet add package Newtonsoft.Json -v 13.0.3 dotnet add package StackExchange.Redis -v 2.8.242、操作帮助类实现 /*** 主题&#xff1a;Redis帮助类 功能&#xff1a;1、设置连接字符串、选择数据库2、String操作…...

JimuBI 积木报表 v1.9.5发布,大屏和仪表盘,免费数据可视化

项目介绍 JimuBI (积木报表BI) 是一款免费的数据可视化产品&#xff0c;含大屏和仪表盘、门户、移动图表&#xff0c;像搭建积木一样完全在线设计&#xff01; 大屏采用类word风格&#xff0c;可以随意拖动组件&#xff0c;想怎么设计怎么设计&#xff0c;可以像百度和阿里一样…...

有关爬虫中数据库的封装——单线程爬虫

在编写爬虫程序时&#xff0c;数据存储是一个非常重要的环节。尤其是在单线程爬虫中&#xff0c;虽然并发量不大&#xff0c;但如果每次操作数据库都直接连接、查询、关闭&#xff0c;不仅代码臃肿&#xff0c;还容易出错&#xff0c;甚至影响爬虫的稳定性。 因此&#xff0c;…...

React19 useOptimistic 用法

用法 乐观更新 发起异步请求时&#xff0c;先假设请求会成功立即更新 UI 给用户反馈若请求最终失败&#xff0c;再将 UI 恢复到之前的状态 const [optimisticState, addOptimistic] useOptimistic(state, updateFn) 参数 state&#xff1a;实际值&#xff0c;可以是 useSta…...

简单的 shell 程序

整体思路 一个简单的 shell 程序的工作流程如下&#xff1a; 初始化环境&#xff1a;在启动时从系统获取环境变量。循环等待用户输入&#xff1a;不断输出命令行提示符&#xff0c;等待用户输入命令。解析命令&#xff1a;把用户输入的命令解析成可执行的格式。执行命令&…...

MIT XV6 - 1.1 Lab: Xv6 and Unix utilities - sleep

接上文 MIT XV6 - 1. 环境准备 实验正文 打开实验链接 Lab: Xv6 and Unix utilities ,可以看到他一共有6个小实验(头大&#xff0c;让我们争取日拱一卒吧…)&#xff1a; Boot xv6 (easy)sleep (easy)pingpong (easy)primes (moderate)/(hard)find (moderate)xargs (moderate…...

测地型GNSS接收机_毫米高精度精准定位

在建筑安全、地灾监测、大坝桥梁隧道监测、工程测绘、国土规划等专业领域&#xff0c;传统工具效率低、精度差、环境适应性弱的痛点长期存在。‌计讯物联测地型GNSS接收机‌以‌毫米级精度、全场景适应、智能互联‌为核心优势&#xff0c;重新定义高精度空间数据采集标准&#…...

React19源码系列之 root.render过程

在创建react项目的时候&#xff0c;入口文件总是有这样一行代码 root.render(<App />) 所以 root.render() 执行是怎样的? 下面就来看看。 之前的文章就提及&#xff0c;root是一个 ReactDOMRoot 对象&#xff0c;其原型链上有 render 和 unmount 方法。 ReactDOMHy…...

0804标星_复制_删除-网络ajax请求2-react-仿低代码平台项目

文章目录 1 标星2 复制3 假删除4 恢复5 彻底删除结语 1 标星 操作&#xff1a;标星和取消标星&#xff0c;有2种状态的布尔值。通过更新问卷功能实现。 后端quetion.js添加接口 {// 更新问卷信息url: /api/question/:id,method: patch,response() {return {errno: 0}}},前端q…...

二叉树遍历(C语言版)

前序遍历创建树&#xff0c;中序遍历把创建出来的二叉树的结点打印出来 题目链接&#xff1a;牛客网-二叉树遍历 前序遍历创建树的思想&#xff1a; 把每个结点看作是子树的根节点&#xff0c;以根左右的顺序创建一整棵二叉树 1.空 返回空 2.非空 先是malloc一个结点&#xff…...

OceanBase数据库-学习笔记2-C#/C++程序如何访问

MySQL模式下&#xff0c;程序&#xff08;C#&#xff09;连接数据库操作demo SqlSugar public class MainModel {private static readonly ConnectionConfig connectionConfig new ConnectionConfig(){ConnectionString "serverxxx.xxx.xxx.xxx;port2881;user idroot;…...

Python中的Walrus运算符分析

Python中的Walrus运算符&#xff08;:&#xff09;是Python 3.8引入的一个新特性&#xff0c;允许在表达式中同时赋值和返回值。它的核心作用是减少重复计算&#xff0c;提升代码简洁性。以下是其适用的典型场景及示例&#xff1a; 1. 在循环中避免重复计算 当循环条件需要多次…...

【深度好文】4、Milvus 存储设计深度解析

引言 作为一款主流的云原生向量数据库&#xff0c;Milvus 通过其独特的存储架构设计来保证高效的查询性能。本文将深入剖析 Milvus 的核心存储机制&#xff0c;特别是其最小存储单元 Segment 的完整生命周期&#xff0c;包括数据写入、持久化、合并以及索引构建等关键环节。 …...

航顺 芯片 开发记录 (一) 2025年4月27日19:23:32

芯片型号: HK32F030MF4P6 第一步:创建工程目录 inc :头文件目录 MDK-ARM : 工程根目录 (新建工程选择该目录) src :相关资源存放位置 官方函数库相关内容 官方函数库大致结构图 ├─HK32F030MLib ├─CMSIS │ ├─CM0 │ │ └─Core │ │ arm_common_table…...

Java 设计模式

Java后端常用设计模式总览表 模式核心思想Spring / Spring Boot应用手写实现核心单例模式 (Singleton)一个类只有一个实例&#xff0c;提供全局访问点Spring容器中的默认Bean都是单例管理volatile synchronized 双重检查锁定&#xff0c;懒加载单例工厂模式 (Factory)统一管理…...

Milvus如何实现关键词过滤和向量检索的混合检索

Milvus 可以实现关键词过滤和向量检索的混合检索,具体来说,可以结合向量搜索与其他属性字段(如关键词、类别标签等)进行联合查询。这样,在检索时不仅考虑向量的相似度,还能根据特定的关键词或标签等条件对数据进行筛选,从而提高检索的精度和灵活性。 1. 理解混合检索的…...

基于Qt5的蓝牙打印开发实战:从扫描到小票打印的全流程

文章目录 前言一、应用案例演示二、开发环境搭建2.1 硬件准备2.2 软件配置 三、蓝牙通信原理剖析3.1 实现原理3.2 通信流程3.3 流程详解3.4 关键技术点 四、Qt蓝牙核心类深度解析4.1 QBluetoothDeviceDiscoveryAgent4.2 QBluetoothDeviceInfo4.3 QBluetoothSocket 五、功能实现…...

Linux日志处理命令多管道实战应用

全文目录 1 日志处理1.1 实时日志分析1.1.1 nginx日志配置1.1.2 nginx日志示例1.1.3 日志分析示例 1.2 多文件合并分析1.3 时间范围日志提取 2 问题追查2.1 进程级问题定位2.2 网络连接排查2.3 硬件故障追踪 3 数据统计3.1 磁盘空间预警3.2 进程资源消耗排名3.3 HTTP状态码统计…...

Node.js CSRF 保护指南:示例及启用方法

解释 CSRF 跨站请求伪造 (CSRF/XSRF) 是一种利用用户权限劫持会话的攻击。这种攻击策略允许攻击者通过诱骗用户以攻击者的名义提交恶意请求,从而绕过我们的安全措施。 CSRF 攻击之所以可能发生,是因为两个原因。首先,CSRF 攻击利用了用户无法辨别看似合法的 HTML 元素是否…...

线性代数—向量与矩阵的范数(Norm)

参考链接&#xff1a; 范数&#xff08;Norm&#xff09;——定义、原理、分类、作用与应用 - 知乎 带你秒懂向量与矩阵的范数(Norm)_矩阵norm-CSDN博客 什么是范数&#xff08;norm&#xff09;&#xff1f;以及L1,L2范数的简单介绍_l1 norm-CSDN博客 范数&#xff08;Norm…...

微服务基础-Ribbon

1. Ribbon简介&#xff1a; 客户端的负载均衡&#xff1a; 2....

移除生产环境所有console.log

大多数团队都会要求不能在生产环境输出业务侧的内容&#xff0c;但是往往业务开发人员会有疏漏&#xff0c;所以需要在工程化环境中&#xff0c;整体来管理console.log。我最近也是接到这样一个需求&#xff0c;整理了一下实现方案。 不同团队&#xff0c;不同场景&#xff0c;…...

数字人接大模型第二步:实时语音同步

接上例第一步,还是dh_live项目,增加了一个完整的实时对话样例,包含vad-asr-llm-tts-数字人全流程,以弥补之前的只有固定的问答的不足。 VAD(Voice Activity Detection,语音活动检测)VAD用于检测用户是否正在说话,从而触发后续的语音处理流程。 ASR(Automatic Speech R…...

Tomcat的安装与配置

Tomcat Tomcat是一个Java圈子中广泛使用的HTTP服务器. 后续学习Severlet内容,就是依赖Tomcat. Java程序员,要想写个网站出来,绕不开Tomcat. 我们这里使用Tomcat8 在bin目录下,这两个文件尤为重要,需要说明的是,Tomcat是那Java写的,所以在运行时需要jdk. bat后缀:是Window…...

Spring AI Alibaba - MCP连接 MySQL

先看效果 直接问他数据库有什么表。 大模型调用MySQL进行查询 搭建项目 添加依赖 创建项目后新添加Maven 依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> …...

Spring Cloud Stream喂饭级教程【搜集全网资料整理】

文章较长&#xff0c;建议收藏关注&#xff0c;随时查看 Spring Cloud Stream 简介 Spring Cloud Stream 是 Spring 提供的一个框架&#xff0c;用于构建与共享消息系统相连接的高度可伸缩的事件驱动微服务&#xff0c;它建立在 Spring 已有的成熟组件和最佳实践之上&#xff…...

prometheus手动添加k8s集群外的node-exporter监控

1、部署node-exporter 1&#xff09;helm方式部署 rootiZj6c72dzbei17o2cuksmeZ:~# helm repo add prometheus-community https://prometheus-community.github.io/helm-charts "prometheus-community" has been added to your repositories rootiZj6c72dzbei17o2cu…...

Linux(Centos版本)中安装Docker

文章目录 Linux&#xff08;Centos版本&#xff09;中安装Docker整体流程 Linux&#xff08;Centos版本&#xff09;中安装Docker整体流程 进入root权限进行安装&#xff1a; 下面开始安装Docker: 1、安装docker的yum管理工具&#xff1a;记得将yum仓库更改为国内的镜像源&…...

C语言-- 深入理解指针(4)

C语言-- 深入理解指针&#xff08;4&#xff09; 一、回调函数二、冒泡排序三、qsort函数3.1 使用qsort函数排序整型数据3.2 使用qsort函数排序double数据3.3 使用qsort来排序结构体数据 四、模仿qsort库函数实现通用的冒泡排序4.1 通用冒泡排序函数排序整型数据4.2 通用冒泡排…...

牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记3-地图基本操作与实战案例

目录 一、开发环境与框架搭建 二、地图数据加载与文档管理 1. 加载地图文档&#xff08;MXD&#xff09; 2. 动态添加数据源 三、地图浏览与交互操作 1. 基础导航功能 2. 书签管理 3. 量测功能 四、要素选择与属性查询 1. 属性查询 2. 空间查询 五、视图同步与鹰眼…...

Spark Streaming实时数据处理实战:从DStream基础到自定义数据源集成

park-Streaming概述 Spark-Streaming是什么 Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多&#xff0c;例如&#xff1a;Kafka、Flume、Twitter等&#xff0c;以及和简单的 TCP 套接字等等。数据输入后可以用 Spark 的高度抽象原语如&#xff1a;…...

微软GraphRAG的安装和在RAG中的使用体会

文章目录 0. 简介&#xff08;1&#xff09;**技术原理**&#xff08;2&#xff09;**优势**&#xff08;3&#xff09;**开源与演进** 1. 下载graphrag.git2.安装 poetry3.初始化项目&#xff1a;建立cases目录4. 修改.env5.修改settings.yaml,将两处 api_base改成中转站地址:…...

Python学习记录7——集合set()的使用指南

文章目录 引言一、集合特性二、创建方式三、元素操作1、添加元素&#xff08;1&#xff09;add(element)&#xff08;2&#xff09;update(iterables) 2、删除元素&#xff08;1&#xff09;remove(element)&#xff08;2&#xff09;discard(element)&#xff08;3&#xff09…...

apkpure 谷歌插件 下载的apk包

谷歌插件市场搜索 apkpure 然后直接搜索下载就行了 想看apk包中的静态资源&#xff0c;直接改apk 为zip后缀解压就行了 apple的ipa包也是相同的道理...

Android四大核心组件

目录 一、为什么需要四大组件&#xff1f; 二、Activity&#xff1a;看得见的界面 核心功能 生命周期图解 代码示例 三、Service&#xff1a;看不见的劳动者 两大类型 生命周期对比 注意陷阱 四、BroadcastReceiver&#xff1a;消息传递专员 两种注册方式 广播类型 …...