【Java八股文总结】之数据结构

news2024/11/17 8:23:25

文章目录

  • 数据结构
    • 一、概念
      • 1、时间复杂度与空间复杂度
      • 2、常见算法时间复杂度
      • 3、Comparable
    • 二、常见的排序算法
      • 1、直接插入排序
      • 2、希尔排序
      • 3、选择排序
      • 4、堆排序
      • 5、冒泡排序
      • 6、快速排序
      • 7、归并排序
      • 8、二分查找算法
        • Q:什么时候需要结束呢?
    • 三、线性表
      • 1、概念
      • 2、顺序表
      • 3、链表
      • 4、栈
      • 5、队列
      • 6、栈和队列的区别
    • 四、树
      • 1、概念
      • 2、二叉树
      • 3、平衡树
        • 1、2-3查找树
      • 2、红黑树
      • 4、B树
      • 5、B+树
    • 五、堆
    • 六、优先队列
    • 七、图
      • 1、图的分类
      • 2、无向图的相关术语
      • 3、无向图的搜索算法
      • 4、有向图的相关术语

数据结构

一、概念

1、时间复杂度与空间复杂度

2、常见算法时间复杂度

在这里插入图片描述
复杂度由低到高是:O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3)

3、Comparable

Java提供的一个用来定义排序规则的接口。

二、常见的排序算法

在这里插入图片描述
在这里插入图片描述
参考链接: 常见七种排序算法对比(超全!!!)
插入排序——数据少或基本有序;选择排序——数据少(或优于插入);希尔排序——数据中等;堆排序——数据多;归并排序——数据多且排序稳定。

1、直接插入排序

排序原理: 将数组分为两部分(有序和无序),将后部分元素逐一插入前部分有序元素的适当位置。
适用场景: 待排序 记录较少或基本有序 的情况。
在这里插入图片描述

2、希尔排序

排序原理: 希尔排序(Shell Sort)是插入排序的一种,针对直接插入排序算法进行改进。先选定一个 整数增量,把待排序文件中所有记录分成个组 ,所有距离为增量的记录分在同一组内,并对每一组内的记录进行排序。然后减小增量,重复上述分组和排序的工作。当增量减至1时,所有记录排序完毕。
适用场景: 中等规模的数据量,对规模很大的数据量不是最佳选择。
在这里插入图片描述
在这里插入图片描述

3、选择排序

排序原理: 每次遍历一趟,找出最小的数,放到最前端,直到全部待排序的数据元素排完。 (这里说的是最前,是指无序的队列中的最前)
适用场景: 数据量较小的情况,比直接插入排序稍快。
在这里插入图片描述

4、堆排序

排序原理: 将待排序记录看作完全二叉树,可以建立大根堆或小根堆,大根堆中每个节点的值都不小于它的子节点值,小根堆中每个节点的值都不大于它的子节点值
适用场景: 数据量较大的情况。
在这里插入图片描述
在这里插入图片描述

5、冒泡排序

排序原理: 比较相邻的元素,如果第一个比第二个大就进行交换 ,对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,每一轮排序后末尾元素都是有序的,针对n个元素重复以上步骤n-1次排序完毕。
在这里插入图片描述

6、快速排序

排序原理: 首先选择一个 基准元素 ,通过一趟排序将要排序的数据分割成独立的两部分,一部分全部小于等于基准元素,一部分全部大于等于基准元素,采用分治思想,对左右两个小区间按照同样的方式处理,直到小区间的长度等于1,代表已经有序,或者小区间的长度等于0,代表没有数据。
在这里插入图片描述
在这里插入图片描述

7、归并排序

排序原理: 应用分治法将待排序序列分成两部分,然后对两部分分别递归排序,最后进行合并,使用一个辅助空间并设定两个指针分别指向两个有序序列的起始元素,将指针对应的较小元素添加到 辅助空间 ,重复该步骤到某一序列到达末尾,然后将另一序列剩余元素合并到辅助空间末尾。
适用场景: 数据量大且对稳定性有要求的情况
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8、二分查找算法

对于一个有序的升序列表,将目标值与表中间的值进行对比:
① 如果目标值与表中间的值相等,则直接返回表中间的值即可。
② 如果目标值与表中间的值不相等,则将两者进行大小比较,从而分成两个表:

  • 如果目标值小于中间值,说明目标值在中间值往左的表中,故舍弃中间值往右的表,重新二分查找中间值往左的表。
  • 如果目标值大于中间值,说明目标值在中间值往右的表中,故舍弃中间值往左的表,重新二分查找中间值往右的表。
    最后,重复以上过程,直到找到目标值为止;或直到子表不存在为止,此时为查找不成功。

算法思路:
① 首先确定有序的升序列表的中间值是多少,即:mid = (left+right)/2 //中间值的下标
② 将目标值target与表中间的值arr[mid]进行比较:

  • 如果target = arr[mid],说明目标值与arr[mid]相等,找到了目标值。
  • 如果target < arr[mid],说明目标值在arr[mid]的左边,因此需要接着二分查找左边的表。
  • 如果target > arr[mid],说明目标值在arr[mid]的右边,因此需要接着二分查找右边的表。

Q:什么时候需要结束呢?

① 找到目标值就结束。
② 查找完整个数组,如果依然没有找到目标值,也需要结束。
③ 当left > right,则直接退出。

三、线性表

1、概念

线性表是最基本、最简单、也是最常用的一种数据结构。一个线性表是n个具有相同特性的数据元素的有限序列。
前驱元素: 若A元素在B元素的前面,则称A为B的前驱元素。
后继元素: 若B元素在A元素的后面,则称B为A的后继元素。

线性表的特征: 数据元素之间具有一种"—对一"的逻辑关系。
①第一个数据元素没有前驱,这个数据元素被称为头结点。
②最后一个数据元素没有后继,这个数据元素被称为尾结点。
③除了第一个和最后一个数据元素外,其他数据元素有且仅有一个前驱和一个后继。

线性表的分类
线性表中数据存储的方式可以是顺序存储,也可以是链式存储,按照数据的存储方式不同,可以把线性表分为顺序表和链表。

2、顺序表

顺序表在计算机内存中以 数组 的形式保存的线性表,线性表的顺序存储是指用一组地址连续的存储单元,依次存储线性表中的各个元素、使得线性表中 在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中,即通过数据元素物理存储的相邻关系来反映数据元素之间逻辑上的相邻关系,如ArrayList。
在这里插入图片描述

3、链表

链表是一种 物理存储单元上非连续、非顺序的存储结构,其物理结构不能直观的表示数据元素的逻辑顺序,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列的结点(链表中的每一个元素称为结点)组成,结点可以在运行时动态生成,如LinkedList。

  • 单向链表
    单向链表是链表的一种,它由多个结点组成,每个结点都由一个数据域和一个指针域组成,数据域用来存储数据,指针域用来指向其后继结点。链表的头结点的数据域不存储数据,指针域指向第一个真正存储数据的结点。
    在这里插入图片描述

  • 双向链表
    双向键表也叫双向表,是链表的一种,它由多个结点组成,每个结点都由一个数据域和两个指针域组成,数据域用来存储数据,其中一个指针域用来指向其后继结点,另一个指针域用来指向前驱结点。链表的头结点的数据域不存储数据,指向前驱结点的指针域值为null,指向后继结点的指针域指向第一个真正存储数据的结点。
    在这里插入图片描述

  • 常见笔试题:链表反转
    在这里插入图片描述

  • 循环链表
    循环链表,顾名思义,链表整体要形成一个圆环状。在单向链表中,最后一个节点的指针为null,不指向任何结点,因为没有下一个元素了。要实现循环链表,我们只需要让单向链表的最后一个节点的指针指向头结点即可。
    在这里插入图片描述
    循环链表的应用: 约瑟夫问题(一群人围在一起报数)

4、栈

栈是一种基于 先进后出(FILO) 的数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
我们称数据进入到栈的动作为 压栈 ,数据从栈中出去的动作为 弹栈
栈的核心操作:入栈,出栈,取栈顶元素。
对于栈的形象理解:子弹的弹夹我们一定见过,子弹在被压入的时候就相当于是一个个元素,而弹夹就相当于是栈。先被压入的子弹是最后被打出的,先压入的元素是最后出来的,也就是先进后出。
在这里插入图片描述
栈的应用: 括号匹配问题、逆波兰表达式求值。

5、队列

队列是一种先进先出(FIFO)的数据结构,是一种只能在一端进行插入,另一端进行删除的特殊线性表,按照先入先出的原则存储数据。队列里边有队首,队尾,队首元素。其遵循的原则是先进先出。
队列的核心操作:入队列,出队列,取队首元素。
对于队列的形象理解:火车穿越隧道,火车的头相当于是队列的首,火车的尾相当于是队列的尾部。火车在穿越隧道的时候,头部先进入隧道头部也先出隧道,尾部后进入尾部后出隧道。队列也就是先入的元素先出队列,后进入的元素后出队列。
在这里插入图片描述

6、栈和队列的区别

栈和队列的出入方式不同:栈是先进后出、队列是先进先出。
栈和队列在具体实现的时候操作的位置不同:因为栈是先进后出,它在一端进行操作;而队列是先进先出,实现的时候在两端进行。在Java标准库中实现队列时是按照链表实现的。

四、树

1、概念

  • 树的定义:树是由(n>=1)个有限节点组成的一个具有层次关系的集合。
  • 树的特点
    ①每个结点具有零个或多个子结点。
    ②没有父节点的结点为根结点。
    ③每个非根结点只有一个父结点。
    ④每个结点及其后代结点整体上可以看作是一棵树,称为当前结点的父结点的一个子树。
  • 树的相关术语
    结点的度:一个结点 含有的子树的个数 称为该结点的度。
    叶子结点:度为0的结点 称为叶结点,也可以叫做终端结点。
    分支结点:度不为0的结点 称为分支结点,也可以叫做非终端结点。
    结点的层次:从根结点开始,根结点的层次为1,根的直接后继层次为2,以此类推。
    结点的层序编号:将树中的结点,按照从上层到下层,同层从左到右的次序排成一个线性序列,把他们编成连续的自然数。
    树的度:树中 所有结点的度的最大值。
    树的高度(深度):树中 结点的最大层次。
    森林:m(m>=0)个互不相交的树的集合,将一颗非空树的根结点删去,树就变成一个森林;给森林增加一个统一的根结点,森林就变成—棵树。
    孩子结点:—个结点的直接后继结点称为该结点的孩子结点。
    双亲结点(父结点):一个结点的直接前驱称为该结点的双亲结点。
    兄弟结点:同一双亲结点的孩子结点间互称兄弟结点。

2、二叉树

二叉树就是 度不超过2的树(每个结点最多有两个子节点)。
一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。

  • 二叉树的遍历方式
    ①前序遍历:先访问根结点,然后再访问左子树,最后访问右子树。
    ②中序遍历:先访问左子树,中间访问根节点,最后访问右子树。
    ③后序遍历:先访问左子树,再访问右子树,最后访问根节点。
    ④层序遍历:从根节点(第一层)开始,依次向下,获取每一层所有结点的值(广度优先遍历)。

3、平衡树

1、2-3查找树

为了保证查找树的平衡性,我们需要一些灵活性,因此在这里我们允许树中的一个结点保存多个键。确切的说,我们将一棵标准的二叉查找树中的结点称为2-结点(含有一个键和两条链),而现在我们引入3-结点,它含有两个键和三条链。2-结点和3-结点中的每条链都对应着其中保存的键所分割产生的一个区间。

  • 2-3树满足的条件
    2-结点:含有一个键(及其对应的值)和两条链,左链接指向2-3树中的键都小于该结点,右链接指向的2-3树中的键都大于该结点。
    3-结点:含有两个键(及其对应的值)和三条链,左链接指向的2-3树中的键都小于该结点,中链接指向的2-3树中的键都位于该结点的两个键之间,右链接指向的2-3树中的键都大于该结点。
    在这里插入图片描述

  • 2-3树的性质
    通过对2-3树插入操作的分析,我们发现在插入的时候,2-3树需要做一些局部的变换来保持2-3树的平衡。
    —棵完全平衡的2-3树具有以下性质:
    ①任意空链接到根结点的路径长度都是相等的。
    ②4-结点变换为3-结点时,树的高度不会发生变化,只有当根结点是临时的4-结点,分解根结点时,树高+1。
    ③2-3树与普通二叉查找树最大的区别在于,普通的二叉查找树是自顶向下生长,而2-3树是自底向上生长

2、红黑树

红黑树主要是对2-3树进行编码,红黑树背后的基本思想是用标准的二叉查找树(完全由2-结点构成)和一些额外的信息(替换3-结点)来表示2-3树。我们将树中的链接分为两种类型:
红链接:将两个2-结点连接起来构成一个3-结点。
黑链接:则是2-3树中的普通链接。
确切的说,我们将3-结点表示为由由一条左斜的红色链接(两个2-结点其中之一是另一个的左子结点)相连的两个2-结点。

  • 红黑树的定义
    红黑树是含有红黑链接并满足下列条件的二叉查找树:
    红链接均为左链接
    没有任何一个结点同时和两条红链接相连
    ③该树是完美黑色平衡的,即任意空链接到根结点的路径上的黑链接数量相同

一种自平衡的 二叉查找树(左中右↑),除了满足二叉查找树的性质外,还需要满足如下五个条件:
① 每个节点非黑即红;
根节点总是黑色的
③ 每个 叶子 节点都是黑色的 空节点(NIL节点);
④ 如果 节点是红色的,则它的子节点必须是黑色的(反之不一定);
⑤ 从 根节点到叶节点 或空子节点的每条路径,必须包含相同数目的黑色节点(即相同的黑色高度)。
应用: TreeMap、TreeSet以及JDK1.8的HashMap底层都用到了红黑树。
为什么要用? 是为了解决二叉查找树在某些情况下会退化成一个线性结构的问题(如:形成二叉查找树的时候插入的元素是有序时,查找性能变成线性)。

  • 红黑树平衡化
    左旋:当某个结点的左子结点为黑色,右子结点为红色,此时需要左旋。
    右旋:当某个结点的左子结点是红色,且左子结点的左子结点也是红色,需要右旋。

4、B树

B树是一种树状数据结构,它能够存储数据、对其进行排序并允许以O(logn)的时间复杂度进行查找、顺序读取、插入和删除等操作。
B树中允许一个结点中包含多个key。M阶的B树,具有如下特点:
①每个结点 最多有M-1个key,并且以升序排列。
②每个结点最多能有M个子结点
③根结点至少有两个子结点。

5、B+树

B+树是对B树的一种变形树,它与B树的差异在于:
非叶结点仅具有索引作用,也就是说,非叶子结点只存储key,不存储value。
②树的所有叶结点构成一个有序链表,可以按照key排序的次序遍历全部数据。

  • B+树和B树的区别

B+树的优点在于:
①由于B+树在非叶子结点上不包含真正的数据,只当做索引使用,因此在内存相同的情况下,能够存放更多的key。
②B+树的叶子结点都是相连的,因此对整棵树的遍历只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。
B树的优点在于:
由于B树的每一个节点都包含key和value,因此我们根据key查找value时,只需要找到key所在的位置,就能找到value,但B+树只有叶子结点存储数据,索引每一次查找,都必须一次一次,一直找到树的最大深度处,也就是叶子结点的深度,才能找到value。

五、堆

堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是 一棵完全二叉树的数组对象

  • 堆的特性
    ①它是 完全二叉树,除了树的最后一层结点不需要是满的,其它的每一层从左到右都是满的,如果最后一层结点不是满的,那么要求左满右不满。
    ②通常使用数组来实现。

六、优先队列

最大优先队列: 可以获取并删除队列中最大的值。
最小优先队列: 可以获取并删除队列中最小的值。

七、图

图是由一组顶点和一组能够将两个顶点相连的边组成的。
自环:即一条连接一个顶点和其自身的边。
平行边:连接同一对顶点的两条边。

1、图的分类

按照连接两个顶点的边的不同,可以把图分为以下两种:
无向图: 边仅仅连接两个顶点,没有其他含义。
有向图: 边不仅连接两个顶点,并且具有方向。

2、无向图的相关术语

相邻顶点:当两个顶点通过—条边相连时,我们称这两个顶点是相邻的,并且称这条边依附于这两个顶点。
:某个顶点的度就是依附于该顶点的边的个数。
子图:是一幅图的所有边的子集(包含这些边依附的顶点)组成的图。
路径:是由边顺序连接的一系列的顶点组成。
:是—条至少含有一条边且终点和起点相同的路径。
连通图:如果图中任意一个顶点都存在一条路径到达另外一个顶点,那么这幅图就称之为连通图。
连通子图:一个非连通图由若干连通的部分组成,每一个连通的部分都可以称为该图的连通子图。

3、无向图的搜索算法

深度优先搜索和广度优先搜索。

4、有向图的相关术语

定义:有向图是一副具有方向性的图,是由一组顶点和一组有方向的边组成的,每条方向的边都连着一对有序的顶点。
出度:由 某个顶点指出的边的个数 称为该顶点的出度。
入度:指向某个顶点的边的个数 称为该顶点的入度。
有向路径:由—系列顶点组成,对于其中的每个顶点都存在一条有向边,从它指向序列中的下一个顶点。
有向环:—条至少含有一条边,且起点和终点相同的有向路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用 Footprint Analytics, 快速搭建区块链数据应用

Nov 2022, danielfootprint.network 如果你有一个处理 NFTs 或区块链的网站或应用程序&#xff0c;你可以在你的平台上直接向用户展示数据&#xff0c;以保持他们在网站或者应用内的参与&#xff0c;而不是链接以及跳出到其他网站。 对于任何区块链应用或者媒体、信息网站来说…

秦皇岛科学选育新品种 国稻种芯·中国水稻节:河北秸秆变肥料

秦皇岛科学选育新品种 国稻种芯中国水稻节&#xff1a;河北秸秆变肥料 秦皇岛新闻网 记者李妍 冀时客户端报道&#xff08;河北台 张志刚 米弘钊 赵永鑫 通讯员 赵力楠&#xff09; 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 中国农民丰收节国际贸易促进会 国稻种芯…

无线通信技术概览

电生磁&#xff0c;磁生电 电场和磁场的关系&#xff0c;简而言之就是&#xff1a;变化的电场产生磁场&#xff0c;变化的磁场产生电场。 电荷的定向移动产生电流&#xff0c;电荷本身产生电场。电流是移动的电场。静止的电荷产生静止的电场&#xff0c;运动的电荷产生运动的电…

java实现阿里云rocketMQ消息的发送与消费(http协议sdk)

目录一、准备工作二、代码实现1.添加依赖2.创建一个常量类存放公共参数3.调用HTTP协议的SDK 发送普通消息4.调用HTTP协议的SDK 订阅普通消息三、配置main的日志输出级别四、测试效果五、完成代码一、准备工作 登录阿里云官网&#xff0c;先申请rocketMQ&#xff0c;再申请Topi…

一文带你了解PCB设计中的常用基本概念

本文将从初学者的角度出发&#xff0c;一文带你快速了解PCB设计中的常用基本概念&#xff1a;一、FR4板材FR-4就是玻璃纤维环氧树脂覆铜板&#xff0c;线路板中的一种基材&#xff0c;可以分为一般FR4板材和高TG FR4板材&#xff0c;Tg是玻璃转化温度&#xff0c;即熔点。电路板…

分享好玩的h5小游戏制作_为什么要做h5微信小游戏呢

近年来&#xff0c;市面上一直流行各种h5游戏&#xff0c;例如投票、答题、刮刮乐、大转盘等等等等&#xff0c;而且我在各种营销场景下经常看到它们的身影&#xff0c;是做促销&#xff0c;引流和宣传的神器之一&#xff01; 那么&#xff0c;怎么做好玩的h5游戏&#xff1f;还…

DIXml v5.21.0 for Delphi 11

DIXml v5.21.0 for Delphi 11 DIXml是一个嵌入式XML、XSLT&#xff0c;也是Delphi的EXSLT处理库(Embarcadero//CodeGear/Borland)。它构建在libxml2、libxslt和libexslt库上&#xff0c;但不需要更多的DLL或其他外部文件。 DIXml很容易成为Delphi中功能最齐全的XML和XSLT替代品…

实战讲解MyBatis缓存:一级缓存和二级缓存(图+文+源码)

1 缘起 回顾SpringBoot如何进行事务管理相关知识的时&#xff0c; 发现使用Spring的注解Transational即可实现事务管理&#xff0c;完成回滚操作&#xff0c; 然而SpringBoot中使用MyBatis这个ORM框架操作数据库&#xff0c;实现CURD&#xff0c; 这两者有什么关系呢&#xff…

集合类不安全

ArryList集合 多线程下不安全&#xff1b;可能会报错&#xff1a;java.util.ConcurrentModificationException&#xff08;并发修改异常&#xff09; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList;//java.util.ConcurrentModificationException 并发…

每日刷题3——牛客,算术转换和二级指针

更新不易&#xff0c;麻烦多多点赞&#xff0c;欢迎你的提问&#xff0c;感谢你的转发&#xff0c; 最后的最后&#xff0c;关注我&#xff0c;关注我&#xff0c;关注我&#xff0c;你会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我…

FFmpeg入门 - 视频播放

音视频最好从能够直接看到东西,也更加贴近用户的播放开始学起. 音视频编解码基础 我们可以通过http、rtmp或者本地的视频文件去播放视频。这里的"视频"实际上指的是mp4、avi这种既有音频也有视频的文件格式。 这样的视频文件可能会有多条轨道例如视频轨道、音频轨道…

(200,10)和(10,)的ndarray数组怎么计算内积,得到的是什么维度?

今天在定义一个内积运算的时候&#xff0c;发现了一个模糊的问题&#xff0c;两个变量&#xff0c;都是ndarray数组&#xff0c;一个维度是(200,10)&#xff0c;一个维度是(10,)&#xff0c;两者求内积后得到的新数组的维度是(200,)&#xff0c;该如何理解&#xff1f; 一、数…

你给我解释解释,什么TMD叫TMD attention(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 开宗明义&#xff1a;attention就是一个加权机制&#xff0c;但是权重需要经过训练得到。 本文介绍一些我自己整理的常见attention类型。 本文不关注别的博文里已经写烂了的attention机制的重要性和直觉解释&#xff08;又不是写论文还要写int…

SpringBoot项目调用Matlab方法

SpringBoot项目调用Matlab方法需求环境准备步骤Matlab方面java方面结果需求 java调用matlab的函数 环境准备 Matlab&#xff0c;jdk&#xff0c;maven管理的springboot项目 步骤 Matlab方面 准备一个简单函数 function [x,y,z] jarDemo(arg) disp("hello world fr…

JVM运行数据区深度解析

运行数据区 字节码只是一个二进制文件存放在那里。要想在jvm里跑起来&#xff0c;先得有个运行的内存环境。 也就是我们所说的jvm运行时数据区。 1&#xff09;运行时数据区的位置 运行时数据区是jvm中最为重要的部分&#xff0c;执行引擎频繁操作的就是它。类的初始化&…

IPD-产品需求管理过程(2)

1、需求分析方法 需求分析分为需求解释、需求过滤、需求分类、需求排序四步。 SEG&#xff1a;system engineering group,意为系统工程组 其中&#xff0c;需求解释环节要完成客户需求语言向内部规范描述语言的转换&#xff1b;需求过滤环节要去伪存真、去粗取精&#x…

C++11 异步操作future和aysnc

目录 C11异步操作的4个接口 1. std::aysnc和std::future std::future和std::aysnc的使用Demo 2. std::packaged_task std::packaged_task的使用Demo 3. std::promise std::promise的使用Demo 总结 C/CLinux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂 C1…

STM32F407高级定时器-死区时间研究-STM32CubeMX

距离上次写笔记&#xff0c;已经过去好长时间了 中间也折腾过不少东西&#xff0c;但是都没咋整理&#xff0c;主要是这中间都是在干活儿&#xff0c;不是自己想要研究的&#xff0c;也没想着要写。 从去年10月份开始想要学习FOC&#xff0c;10月份研究了一个月&#xff0c;到…

HTML5学习笔记(一)

XHTML&#xff0c;全称“EXtensible HyperText Mark-up Language&#xff08;扩展的超文本标记语言&#xff09;”&#xff0c;它是XML风格的HTML4.01&#xff0c;我们可以称之为更严格、更纯净的HTML4.01。 HTML语法书写比较松散&#xff0c;比较利于开发者编写。但是对于机器…

计算机的种类

文章目录计算机的种类一&#xff0c;模拟计算机二&#xff0c;数字计算机三&#xff0c;混合计算机计算机的种类 《计算机是什么》一节中讲到&#xff0c;根据不同计算机的尺寸&#xff0c;可以将计算机分为微型计算机、小型计算机、大型计算机、工作站和超级计算机5类。实际上…