学习笔记079——数据结构之【树】
文章目录
- 1、重点概念
- 1.1、结点概念
- 1.2、树节点声明
- 2、树
- 2.1、定义
- 2.2、结点的度
- 2.3、结点关系
- 2.4、结点层次
- 2.5、树的深度
- 3、二叉树
- 3.1、定义
- 3.2、二叉树特点
- 3.3、二叉树性质
- 3.4、斜树
- 3.5、满二叉树
- 3.6、完全二叉树
- 3.7、二叉树的存储结构
- 3.7.1、顺序存储
- 3.7.2、二叉链表
- 3.8、二叉树的遍历
- 3.8.1、定义
- 3.8.2、前序遍历
- 3.8.3、中序遍历
- 3.8.4、后续遍历
- 3.8.5、层次遍历
- 4、其他的树的分类
- 4.1、二叉查找树(又叫做二叉搜索树,二叉排序树)
- 4.2、平衡二叉树(AVL树)
- 4.3、红黑树
- 4.4、B-树(也叫B树)
- 4.5、B+树
树是数据结构中比较常见的。
数据结构可视化的网站: 点击访问
1、重点概念
1.1、结点概念
结点是数据结构中的基础,是构成复杂数据结构的基本组成单位。
1.2、树节点声明
本文中提及的结点专指树的结点。
例如:结点A在图中表示为:
2、树
2.1、定义
**树(Tree)**是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:
- 有且仅有一个特定的称为根(Root)的结点;
- 当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、…、Tn,其中每一个集合本身又
是一棵树,并且称为根的子树。
此外,树的定义还需要强调以下两点:
- 根结点是唯一的,不可能存在多个根结点,数据结构中的树只能有一个根结点。
- 子树的个数没有限制,但它们一定是互不相交的。
示例树:
下图为一棵普通的树:
图2.1 普通树
由树的定义可以看出,树的定义使用了递归的方式。
2.2、结点的度
结点拥有的子树数目称为结点的度。
图2.2
2.3、结点关系
结点子树的根结点为该结点的孩子结点。相应该结点称为孩子结点的双亲结点(父节点)。
图2.2中,A为B的双亲结点,B为A的孩子结点。
同一个双亲结点的孩子结点之间互称兄弟结点。
图2.2中,结点B与结点C互为兄弟结点。
2.4、结点层次
从根开始定义起,根为第一层,根的孩子为第二层,以此类推。
图2.3表示了图2.1所示树的层次关系。
图2.3
2.5、树的深度
树中结点的最大层次数称为树的深度或高度。图2.1所示树的深度为4。
3、二叉树
3.1、定义
二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。
图3.1展示了一棵普通二叉树:
图3.1
3.2、二叉树特点
由二叉树定义以及图示分析得出二叉树有以下特点:
- 每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点。
- 左子树和右子树是有顺序的,次序不能任意颠倒。
- 即使树中某结点只有一棵子树,也要区分它是左子树还是右子树。
3.3、二叉树性质
- 在二叉树的第i层上最多有 2^i-1 个节点 。(i>=1)
- 二叉树中如果深度为k,那么最多有2^k-1个节点。(k>=1)
- n0=n2+1 n0表示度数为0的节点数,n2表示度数为2的节点数。
- 在完全二叉树中,具有n个节点的完全二叉树的深度为[log2n]+1,其中[log2n]是向下取整。
- 若对含 n 个结点的完全二叉树从上到下且从左至右进行 1 至 n 的编号,则对完全二叉树中任意一个编号为 i 的结点有如下特性:
(1)若 i=1,则该结点是二叉树的根,无双亲, 否则,编号为 [i/2] 的结点为其双亲结点;
(2)若 2i>n,则该结点无左孩子, 否则,编号为 2i 的结点为其左孩子结点;
(3)若 2i+1>n,则该结点无右孩子结点, 否则,编号为2i+1 的结点为其右孩子结点。
3.4、斜树
斜树:所有的结点都只有左子树的二叉树叫左斜树。所有结点都是只有右子树的二叉树叫右斜树。这两者统称为斜树。
图3.2 左斜树
图3.3 右斜树
3.5、满二叉树
满二叉树:在一棵二叉树中。如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。
满二叉树的特点有:
- 叶子只能出现在最下一层。出现在其它层就不可能达成平衡。
- 非叶子结点的度一定是2。
- 在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多。
图3.4 满二叉树
3.6、完全二叉树
完全二叉树:对一颗具有n个结点的二叉树按层编号,如果编号为i(1<=i<=n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这棵二叉树称为完全二叉树。
图3.5展示一棵完全二叉树
图3.5 完全二叉树
特点:
- 叶子结点只能出现在最下层和次下层。
- 最下层的叶子结点集中在树的左部。
- 倒数第二层若存在叶子结点,一定在右部连续位置。
- 如果结点度为1,则该结点只有左孩子,即没有右子树。
- 同样结点数目的二叉树,完全二叉树深度最小。
- 满二叉树一定是完全二叉树,但反过来不一定成立。
3.7、二叉树的存储结构
3.7.1、顺序存储
二叉树的顺序存储结构就是使用一维数组存储二叉树中的结点,并且结点的存储位置,就是数组的下标索引。
所示的一棵完全二叉树采用顺序存储方式,如图3.7表示:
图3.7
顺序存储
由图可以看出,当二叉树为完全二叉树时,结点数刚好填满数组。
那么当二叉树不为完全二叉树时,采用顺序存储形式如何呢?例如:对于图3.8描述的二叉树:
图3.8
其中浅色结点表示结点不存在。那么图3.8所示的二叉树的顺序存储结构如图3.9所示:
图3.9
其中,∧表示数组中此位置没有存储结点。此时可以发现,顺序存储结构中已经出现了空间浪费的情况。
那么对于图3.3所示的右斜树极端情况对应的顺序存储结构如图3.10所示:
图3.10
可以看出,对于这种右斜树极端情况,采用顺序存储的方式是十分浪费空间的。因此,顺序存储一般适用于完全二叉树。
3.7.2、二叉链表
既然顺序存储不能满足二叉树的存储需求,那么考虑采用链式存储。由二叉树定义可知,二叉树的每个结点最多有两个孩子。因此,可以将结点数据结构定义为一个数据和两个指针域。表示方式如图3.11所示:
图3.11
定义结点代码:
Node TreeNode{T data;//数据TreeNode left;TreeNode right;
}
则图3.6所示的二叉树可以采用图3.12表示。
图3.12
图3.12中采用一种链表结构存储二叉树,这种链表称为二叉链表。
3.8、二叉树的遍历
二叉树的遍历一个重点考查的知识点。
3.8.1、定义
二叉树的遍历是指从二叉树的根结点出发,按照某种次序依次访问二叉树中的所有结点,使得每个结点被访问一次,且仅被访问一次。
二叉树的访问次序可以分为四种:
首先了解一下递归遍历
由上自下,从左到右。每个节点会走三次。
3.8.2、前序遍历
前序遍历通俗的说就是从二叉树的根结点出发,当第一次到达结点时就输出结点数据,按照先向左在向右的方向访问。
如图所示二叉树访问如下:
先序遍历的结果: ABDHIEJCFG
3.8.3、中序遍历
中序遍历就是从二叉树的根结点出发,当第二次到达结点时就输出结点数据,按照先向左在向右的方向访问。
中序遍历输出为:HDIBJEAFCG
3.8.4、后续遍历
后序遍历就是从二叉树的根结点出发,当第三次到达结点时就输出结点数据,按照先向左在向右的方向访问。
后序遍历输出为:HIDJEBFGCA
3.8.5、层次遍历
层次遍历就是按照树的层次自上而下的遍历二叉树。针对图3.13所示二叉树的层次遍历结果为:ABCDEFGHIJ
package com.htl;public class RecursiveBinaryTree {public static class Node {public int value;public Node left;public Node right;public Node(int v) {value = v;}}// 先序打印所有节点public static void Preorder(Node root) {if (root == null) {return;}System.out.println(root.value);pre(root.left);pre(root.right);}public static void Inorder(Node root) {if (root == null) {return;}in(root.left);System.out.println(root.value);in(root.right);}public static void Postorder(Node root) {if (root == null) {return;}pos(root.left);pos(root.right);System.out.println(root.value);}public static void main(String[] args) {Node root = new Node(1);root.left = new Node(2);root.right = new Node(3);root.left.left = new Node(4);root.left.right = new Node(5);root.right.left = new Node(6);root.right.right = new Node(7);Preorder(root);System.out.println("====先序遍历====");Inorder(root);System.out.println("====中序遍历====");Postorder(root);System.out.println("====后续遍历====");}}
不用递归,用栈实现先序,效率高一点
public class UnRecursiveBinaryTree {public static class Node {public int value;public Node left;public Node right;public Node(int v) {value = v;}}public static void pre(Node head) {System.out.print("pre-order: ");if (head != null) {Stack<Node> stack = new Stack<Node>();stack.add(head);while (!stack.isEmpty()) {head = stack.pop();System.out.print(head.value + " ");if (head.right != null) {stack.push(head.right);}if (head.left != null) {stack.push(head.left);}}}System.out.println();}
}// 队列实现层次遍历
public static void levelPrint(Node root) {if(root == null){return ;}LinkedList<Node> queue = new LinkedList<Node>();Node current = null;queue.offer(root);//将根节点入队while(!queue.isEmpty()){current = queue.poll();//出队队头元素并访问System.out.println(current.val);if(current.left != null)//如果当前节点的左节点不为空入队{queue.offer(current.left);}if(current.right != null)//如果当前节点的右节点不为空,把右节点入队{queue.offer(current.right);}}}
4、其他的树的分类
4.1、二叉查找树(又叫做二叉搜索树,二叉排序树)
特征:
- 若左子树不为空,那么左子树所有节点的值小于均小于他的根节点的值。
- 若右子树不为空,那么右子树的所有节点的值大于根节点的值。
- 左右子树也分别为二叉排序树。
- 没有键值相等的节点。
二叉排序树查找操作
首先我们提供一个二叉树的结构。
然后我们来看看二叉排序树的查找是如何实现的
package com.htl;public class BinaryTree {public static void main(String[] args) {// 主要是表达查询,所以手动构造一棵二叉排序树TreeNode binaryTree1 = new TreeNode();binaryTree1.data = 62;TreeNode binaryTree2 = new TreeNode();binaryTree1.lchild = binaryTree2;binaryTree2.data = 58;TreeNode binaryTree3 = new TreeNode();binaryTree2.lchild = binaryTree3;binaryTree3.data = 47;TreeNode binaryTree4 = new TreeNode();binaryTree3.lchild = binaryTree4;binaryTree4.data = 35;TreeNode binaryTree5 = new TreeNode();binaryTree4.rchild = binaryTree5;binaryTree5.data = 37;TreeNode binaryTree6 = new TreeNode();binaryTree3.rchild = binaryTree6;binaryTree6.data = 51;TreeNode binaryTree7 = new TreeNode();binaryTree1.rchild = binaryTree7;binaryTree7.data = 88;TreeNode binaryTree8 = new TreeNode();binaryTree7.lchild = binaryTree8;binaryTree8.data = 73;TreeNode binaryTree9 = new TreeNode();binaryTree7.rchild = binaryTree9;binaryTree9.data = 99;TreeNode binaryTree10 = new TreeNode();binaryTree9.lchild = binaryTree10;binaryTree10.data = 93;TreeNode treeNode = serachBinaryTree(binaryTree1, 35000);System.out.println(treeNode == null ? "没有这个数" : treeNode.data);}/*** 二叉排序树** @param root* 待查询的二叉排序树* @param target* 查找关键字* @return 没有返回null,有则返回节点*/public static TreeNode serachBinaryTree(TreeNode root, int target) {if (root == null) { // 树节点不存在,返回return null;} else if (target == root.data) { // 查找成功return root;} else if (target < root.data) { // 关键字小于根节点查找左子树return serachBinaryTree(root.lchild, target);} else { // 关键字大于根节点查找右子树return serachBinaryTree(root.rchild, target);}}/*** 二叉树,数据结构*/private static class TreeNode {int data;TreeNode lchild;TreeNode rchild;}}
4.2、平衡二叉树(AVL树)
含有相同节点的二叉查找树可以有不同的形态,而二叉查找树的平均查找长度与树的深度有关,所以需要找出一个查找平均长度最小的一棵,那就是平衡二叉树(图b),具有以下性质:
- 要么是棵空树,要么其根节点左右子树的深度之差的绝对值不超过1;
- 其左右子树也都是平衡二叉树;
- 二叉树节点的平衡因子定义为该节点的左子树的深度减去右子树的深度。则平衡二叉树的所有节点的平衡因子只可能是-1,0,1。
4.3、红黑树
红黑树是一种自平衡二叉树,在平衡二叉树的基础上每个节点又增加了一个颜色的属性,节点的颜色只能是红色或黑色。具有以下性质:
- 根节点只能是黑色;
- 红黑树中所有的叶子节点后面再接上左右两个空节点,这样可以保持算法的一致性,而且所有的空节点都是黑色;
- 其他的节点要么是红色,要么是黑色,红色节点的父节点和左右孩子节点都是黑色,及黑红相间;
- 在任何一棵子树中,从根节点向下走到空节点的路径上所经过的黑节点的数目相同,从而保证了是一个平衡二叉树。
4.4、B-树(也叫B树)
B-树是一种平衡多路查找树,它在文件系统中很有用。
4.5、B+树
B+数是B-树的一种变形,它与B-树的差别在于(图e为3阶B+树):
- 有n棵子树的节点含有n个关键字;
- 所有的叶子节点包含了全部关键字的信息,及指向这些关键字记录的指针,且叶子节点本身按关键字大小自小到大顺序链接;
- 所有非终端节点可以看成是索引部分,节点中仅含有其子树(根节点)中最大(或最小)关键字,所有B+树更像一个索引顺序表;
- 对B+树进行查找运算,一是从最小关键字起进行顺序查找,二是从根节点开始,进行随机查找。
相关文章:
学习笔记079——数据结构之【树】
文章目录 1、重点概念1.1、结点概念1.2、树节点声明 2、树2.1、定义2.2、结点的度2.3、结点关系2.4、结点层次2.5、树的深度 3、二叉树3.1、定义3.2、二叉树特点3.3、二叉树性质3.4、斜树3.5、满二叉树3.6、完全二叉树3.7、二叉树的存储结构3.7.1、顺序存储3.7.2、二叉链表 3.8…...
CPT203 Software Engineering 软件工程 Pt.3 系统建模(中英双语)
文章目录 5. System Modeling(系统建模)5.1 Context models(上下文模型)5.2 Interaction models(交互模型)5.2.1 Use case modeling(用况建模)5.2.2 Sequence diagram(顺…...
vue使用vue-seamless-scroll进行轮播滚动展示内容
我这里只是记录下一些基本的东西,具体大家可以查看官网介绍,有更详细的使用文档(目前有vue和js版本): https://chenxuan0000.github.io/vue-seamless-scroll/zh/ 安装组件: npm install vue-seamless-scro…...
python入门
目录 一、Python的诞生 二、Python的特点 三、Python环境的搭建 1.搭建运行环境 2.搭建开发环境 一、Python的诞生 如果大家在上大学之前有接触过一些关于编程的课程,Python绝对是最早接触的语言之一。 在学习任何一门编程语言之前,都需要了解它的…...
深度解析 Python 网络框架:Django、Tornado、Flask 和 Twisted
目录 引言Python 网络框架概述Django:全栈开发的首选框架 3.1 Django 的核心特性3.2 Django 的应用场景3.3 优势与不足 Tornado:高性能的异步框架 4.1 Tornado 的异步特性4.2 Tornado 的应用场景4.3 优势与不足 Flask:轻量级的微框架 5.1 Fl…...
摆脱Zotero存储限制:WebDAV结合内网穿透打造个人文献管理云平台
文章目录 前言一、Zotero安装教程二、群晖NAS WebDAV设置三、Zotero设置四、使用公网地址同步Zotero文献库五、使用永久固定公网地址同步Zotero文献库 前言 如果你是科研工作者、学生或者任何需要频繁处理大量学术资料的人士,你一定对如何高效管理和引用文献感到头…...
Unity 对Sprite或者UI使用模板测试扣洞
新建两个材质球: 选择如下材质 设置如下参数: 扣洞图片或者扣洞UI的材质球 Sprite或者UI的材质球 新建一个单独Hole的canvas,将SortOrder设置为0,并将原UI的canvans的SortOrder设置为1 对2DSprite则需要调整下方的参数 hole的O…...
Wend看源码-Java-Arrays 工具集学习
摘要 java.util.Arrays 是 Java 标准库中的一个实用工具类,它提供了各种静态方法来操作数组,包括排序、搜索、比较、填充等。这些方法简化了对数组的操作,并且在很多情况下可以提高代码的可读性和效率。以下是关于Arrays类中提供的一些主要方…...
【算法复健】0102 快速选择算法
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、算法引入1. 冒泡排序2.快速排序3. 快速选择(1)题目:数组中的第K个最大元素(2)代码 前言 本文由快速排序算法引入快速选…...
【疑难杂症】 HarmonyOS NEXT中Axios库的响应拦截器无法拦截424状态码怎么办?
今天在开发一个HarmonyOS NEXT的应用的时候,发现http接口如果返回的状态码是424时,我在axios中定义的拦截器失效了。直接走到了业务调用的catch中。 问题表现: 我的拦截器代码如下: 解决办法: 先说解决办法ÿ…...
口语笔记——使动词
每个使动词都可以有三种形式,以move为例: move作为动词可表达:使……感动,让……感动,通常用于主谓宾结构。ed作为形容词可表达:感动的,通常用于主系表结构。ing作为形容词可表达:令…...
SQL-leetcode-196. 删除重复的电子邮箱
196. 删除重复的电子邮箱 表: Person -------------------- | Column Name | Type | -------------------- | id | int | | email | varchar | -------------------- id 是该表的主键列(具有唯一值的列)。 该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。 编写解…...
汇编语言:从键盘输入数字字符,(计算阶乘),以无符号十进制形式输出(分支、循环程序)
1.分支结构原理 分支结构是汇编语言中的一种基本控制结构,它允许程序根据条件选择执行不同的路径。分支结构通常通过跳转(jump)指令来实现。 条件判断: 汇编语言中的条件判断通常通过比较(compare)指令来实…...
汽车损坏识别检测数据集,使用yolo,pasical voc xml,coco json格式标注,6696张图片,可识别11种损坏类型,识别率89.7%
汽车损坏识别检测数据集,使用yolo,pasical voc xml,coco json格式标注,6696张图片,可识别11种损坏类型损坏: 前挡风玻璃(damage-front-windscreen ) 损坏的门 (damaged-d…...
python的urllib模块和http模块
1.python的urllib库用于操作网页,并对网页内容进行处理 urllib包有如下模块: urllib.request:打开和读取URL urllib.error: 包含urllib.request抛出的异常 urllib.parse: 解析URL urllib.robotparser࿱…...
Codigger集成Copilot:智能编程助手
在信息技术的快速发展中,编程效率和创新能力的提升成为了开发者们追求的目标。Codigger平台通过集成Copilot智能编程助手,为开发者提供了一个强大的工具,以增强其生产力、创新力和技能水平。本文将深入探讨Codigger与Copilot的集成如何为IT专…...
快递物流查询API接口推荐
针对快递物流查询API接口及行政区划解析的需求,以下是一些推荐和解析: ### 一、快递物流查询API接口推荐 1. **ShowAPI** * **功能**:支持国内外1500快递物流公司的物流跟踪服务,包括顺丰、圆通、申通、中通、韵达等主流快递公司…...
【Unity3D】3D渲染流水线总结
3D渲染流水线: CPU阶段(应用阶段): 1、加载数据:硬盘->内存->显存 场景数据从硬盘HDD加载到内存RAM,网格和纹理等数据会再次加载到显存VRAM,显卡对显存访问速度更快。 2、设置渲染状态…...
LevelDB 源码阅读:利用 Clang 的静态线程安全分析
LevelDB 中有一些宏比较有意思,平时自己写代码的时候,还基本没用过。这些宏在 thread_annotations.h 中定义,可以在编译时使用 Clang 编译器的线程安全分析工具,来检测潜在的线程安全问题。 比如下面这些宏,到底有什么…...
不只是工具:ChatGPT写作在学术中的创新思维与深度思考
目录 1.数据选择与质量 2.Prompt技巧 1.明确任务 2.上下文信息 3.好的示例 3.后期编辑与润色 随着AIGC技术的迅猛发展和不断升级,AI写作正逐渐成为各行各业的新宠。然而不少宝子们们却发现了一个有趣的现象:虽然都是依赖AI生成文本,有些…...
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(for循环语句)(八continue语句和break语句)
在C中,continue语句和break语句都是用于控制循环的执行流程的关键字,但它们有不同的用途和行为。 1、break语句用于立即终止当前所在的循环或switch语句,并跳出循环体,继续执行循环之后的代码,break语句用于直接跳出循…...
sql server 动态执行sql
实例: execute sp_executesql Nselect count(1) FROM table X2 WITH(NOLOCK) WHERE X2.UPDDTTM > DT_START AND X2.UPDDTTM < DT_END , NDT_START datetime,DT_END datetime, DT_START2025-01-02 10:06:58.620,DT_END2025-01-02 10:09:35.457 参考&…...
【数据结构Ⅰ复习题】
如有错误欢迎指正,题目根据教材----------严蔚敏数据结构(c语言版 第2版)人民邮电电子版 数据结构Ⅰ复习题 一、填空题1.算法应该具备的5个重要特性有___有穷性___、确定性、可行性、输入和输出。2.非空单链表L中*p是头…...
经验证:将数据从索尼传输到Android的 4 种方法
概括 像Android Galaxy S20 这样的新型Android智能手机很酷,但除了将数据从索尼传输到Android之外。众所周知,旧的索尼手机上存储着大量的文件,因此将数据从旧的索尼手机传输到新的Android手机非常重要。为了解决这个问题,我们做…...
服务器端请求伪造之基本介绍
一.服务器端请求伪造漏洞基础 1.客户端请求 客户端请求指的是由客户端设备(如个人计算机、智能手机、平板电脑等)或软件(浏览器、各种APP)发出的请求,以获取指定的网页、图片、视频或其他资源。比如当用户在浏览器中输…...
Java反射详解(三)
上一篇博客:Java反射详解(二) 写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.c…...
HTML——59. maxlength和disabled属性
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>maxlength和disabled属性</title></head><body><!--input元素的type属性:(必须要有)1.指定输入内容的类型2.默认为text,单行文本框--> …...
Java中的函数式接口详解(一)
1. 函数式接口 1.1. 定义 函数式接口(Function Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。 函数式接口又称为:功能接口。 功能接口为 Lambda 表达式和方法引用(用双冒号 ::来进行方法调用)提供…...
Quo Vadis, Anomaly Detection? LLMs and VLMs in the Spotlight 论文阅读
文章信息: 原文链接:https://arxiv.org/abs/2412.18298 Abstract 视频异常检测(VAD)通过整合大语言模型(LLMs)和视觉语言模型(VLMs)取得了显著进展,解决了动态开放世界…...
redis的学习(二)
4 哈希表 哈希类型中的映射关系通常称为field-value,⽤于区分Redis整体的键值对(key-value), 注意这⾥的value是指field对应的值,不是键(key)对应的值, 4.1 操作命令 hsetÿ…...
简单使用linux
1.1 Linux的组成 Linux 内核:内核是系统的核心,是运行程序和管理 像磁盘和打印机等硬件设备的核心程序。 文件系统 : 文件存放在磁盘等存储设备上的组织方法。 Linux 能支持多种目前浒的文件系统,如 ext4 、 FAT 、 VFAT 、 ISO9660 、 NF…...
springboot541党员学习交流平台(论文+源码)_kaic
摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统党员学习交流平台信息管理难度大,容错率低&am…...
心力衰竭相关临床记录数据分析开发技术概述
心力衰竭相关临床记录数据分析开发技术概述 心力衰竭临床记录数据分析的开发涉及多种技术,包括数据采集、处理、建模和可视化等方面。以下是从技术角度对整个开发流程的概述: 数据采集技术 1.1 数据来源 公开数据集:如 UCI 数据存储库、Clin…...
SpringMVC(六)拦截器
目录 1.什么是拦截器 2.拦截器和过滤器有哪些区别 3.拦截器方法 4.单个拦截器的执行流程 5.使用拦截器实现用户登录权限验证(实例) 1.先在html目录下写一个login.html文件 2.在controller包下写一个LoginController文件 3.加拦截器 1.创建一个conf…...
将simpletex 识别的公式 复制到ppt 中
1)点击 复制MathML(word) 2)右击粘贴到任意word 中 3)将word公式粘到 office (2019) 的ppt 中 线上识别链接:SimpleTex - Snip & Get!...
vs 2022 中xml 粘贴为Class 中,序列化出来的xml 的使用
上图是visual studio 2022 中使用的粘贴功能的菜单位置 在生成的xml 中,有些是类似如下类型的 [System.Serializable] [System.Xml.Serialization.XmlType] public class Item {private bool isVisibleField;private bool isVisibleFieldSpecified;[System.Xml.Se…...
短视频平台的视频水印怎么去除?
当你看到某个短视频,觉得内容非常有价值,想要个人收藏以便日后学习或回顾,但发现短视频平台无法直接下载且带有水印时,以下提供的几种方法将帮助你轻松去除水印,获取高清无水印的视频内容。 方法一:使用第…...
《Vue3实战教程》34:Vue3状态管理
如果您有疑问,请观看视频教程《Vue3实战教程》 状态管理 什么是状态管理? 理论上来说,每一个 Vue 组件实例都已经在“管理”它自己的响应式状态了。我们以一个简单的计数器组件为例: vue <script setup> import { r…...
AI大模型系列之七:Transformer架构讲解
目录 Transformer网络是什么? 输入模块结构: 编码器模块结构: 解码器模块: 输出模块结构: Transformer 具体是如何工作的? Transformer核心思想是什么? Transformer的代码架构 自注意力机制是什么…...
每天五分钟机器学习:凸集
本文重点 在SVM中,目标函数是一个凸函数,约束集合是一个凸集。因此,SVM问题可以转化为一个凸规划问题来求解。这使得SVM在实际应用中具有较高的计算效率和准确性。 凸集的定义 凸集是指一个集合中的任意两点之间的线段都完全包含在这个集合中。换句话说,给定集合C中的两…...
【智能算法】改进蚁狮优化算法【matlab】
目录 1 主要内容 2 部分程序 3 程序结果 下载链接 1 主要内容 该程序方法复现《改进蚁狮算法的无线传感器网络覆盖优化》两种改进算法模型,即原始ALO算法的基础上添加了两种改进策略: - 改进1:将原先的间断性边界收缩因子变为连续性边界…...
【Python】闭包
闭包(Closure)是指一个函数记住了并可以访问它的词法作用域(lexical scope),即使这个函数在词法作用域之外执行。 闭包其实就是延伸了作用域的函数,包括被延伸函数主体中引用的非全局变量和局部变量。这些…...
Python跨年烟花
目录 系列文章 写在前面 技术需求 完整代码 下载代码 代码分析 1. 程序初始化与显示设置 2. 烟花类 (Firework) 3. 粒子类 (Particle) 4. 痕迹类 (Trail) 5. 烟花更新与显示 6. 主函数 (fire) 7. 游戏循环 8. 总结 注意事项 写在后面 系列文章 序号直达链接爱…...
QT------------其他工具软件和技术
实现思路 多语言界面程序设计: 使用 QTranslator 类为 QT 应用程序提供多语言支持。将不同语言的翻译文件(.qm 文件)添加到应用程序中,根据用户的语言设置动态加载相应的翻译文件。 QT 样式表(QSS)&#x…...
数据结构9.3 - 文件基础(C++)
目录 1 打开文件字符读写关闭文件 上图源自:https://blog.csdn.net/LG1259156776/article/details/47035583 1 打开文件 法 1法 2ofstream file(path);ofstream file;file.open(path); #include<bits/stdc.h> using namespace std;int main() {char path[]…...
javaEE-文件操作和IO-文件
目录 一.什么是文件 1.文件就是硬盘(磁盘)上的文件。 2.计算机中存储数据的设备: 3.硬盘的物理特征 4.树型结构组织和⽬录 5.文件路径 文件路径有两种表示方式: 6.文件的分类 二、java中文件系统的操作 1.File类中的属性: 2.构造方…...
富芮坤FR800X系列之软件开发工具链(如IDE、编译器、调试器等)
文章目录 一、IDE(集成开发环境)二、编译器三、调试器四、其他辅助工具五、小结 FR800x系列作为一款低功耗蓝牙芯片,其软件开发工具链对于开发者来说至关重要。以下是对FR800x软件开发工具链的详细介绍,包括IDE(集成开…...
微服务-Eureka
Eureka的作用 使用RestTemplate完成远程调用需要手动的生命被调用者的ip和端口,从而能够发起http请求,但是如果有很多个实例也更加不能有效的处理,而且我们又该如何知道这些实例是否健康呢。所以就有了很多的注册中心比如Eureka、Nacos等等。…...
Elasticsearch: 高级搜索
一、match_all匹配所有文档 1、介绍: match_all查询是一个特殊的查询类型,它用于匹配索引中的所有文档,而不考虑任何特定的查询条件。 基本语法: GET /<your-index-name>/_search {"query": {"match_all…...
项目优化之策略模式
目录 策略模式基本概念 策略模式的应用场景 实际项目中具体应用 项目背景: 策略模式解决方案: 计费模块策略模式简要代码 策略模式基本概念 策略模式(Strategy Pattern) 是一种行为型设计模式,把算法的使用放到环境类中,而算…...