数据结构基础知识(一)

news2024/11/21 1:28:04

1 数据结构的基本概念和算法

考点

  • 数据结构基本概念
  • 算法

1.1 数据结构的基本概念

  1. 数据

数据是指所有能输入到计算机中的描述客观事物的符号,包括文本、声音、 图像、符号等。

  1. 数据元素

数据元素十数据的基本单位,也称节点或记录。

  1. 数据项

数据项表示有独立含义的数据最小单位,也称域。若干个数据项构成一个数 据元素,数据项是不可分割的最小单位。

  1. 数据类型

数据的不可分割的单位是数据类型。

  1. 逻辑结构和存储结构
    1. 逻辑结构:数据元素间抽象化的相互关系,与数据的存储无关,独立于计算机,他是从具体问题中抽象出来的数学模型。

逻辑结构有集合、线性结构、树形结构、图形结构

  1. 存储结构:数据元素及其关系在计算机中的存储方式。

存储结构可以分为四种:顺序存储、链式存储、散列存储和索引存储。

1.2 算法

  1. 概念

算法是指对特定问题求解步骤的一种描述。通常是以算法执行所耗费的时间和空间所占用的 来判断一个算法的优劣。

  1. 算法的特点
    1. 有穷性
    2. 确定性
    3. 可行性
    4. 输入
    5. 输出
  2. 好算法的标准
    1. 正确性
    2. 易读性
    3. 健壮性
    4. 高效性
  3. 时间复杂度

算法运行需要的时间,一般将算法基本运算的执行次数作为时间复杂度的度量标准。

  1. 语句频度

语句重复执行的次数。

1.3 注意

  1. 线性表的顺序存储是一种随机存取的存储结构,线性表的链式存储结构是一种顺序存取的存储结构。

2 线性表的顺序表示和实现

考点

  • 线性表的类型定义
  • 线性表的顺序表示和实现

2.1 线性表的类型定义

  1. 线性表是由n个相同类型的数据元素组成的有限序列,它是最基本最常用的一种线性结构。顾名思义,线性表就像是一条线,不会分叉。线性表有 唯一的开始和结束,除了第一个元素外,每个元素都有唯一的直接前驱:除了最后一个元素外,每个元素都有唯一的直接后继。
  2. 顺序表的两种存储结构为顺序表和链表
  3. 线性表是具有n个数据元素的优先序列。

2.2 线性表的顺序表示和实现

  1. 顺序表的定义

顺序表采用顺序存储方式,即逻辑上相邻的数据在计算机内的存储位置也 是相邻的。顺序存储方式,元素存储是连续的,中间不允许有空,可以快速定位第几个元素,但是插入和删除时需要移动大量元素。
当需要随机查找线性表的元素时,宜采用顺序表作存储结构。

  1. 线性表的操作——初始化

初始化是指顺序表分配一段预定义大小连续空间,用 记录这段空 间的基地址,当前空间内没有任何数据元素,因此元素的实际个数为0。假设我们已经预定义了一个最大空间数MAXSIZE,那么就用new分配大小为MAXSIZE的空间,分配成功会返回空间的首地址,分配失败会返回空指针。
在这里插入图片描述

  1. 线性表的操作——创建

ApplicationFrameHost_vD0vQje3pC.png

  1. 线性表的操作——取值

顺序表中的任何一个元素都可以立即找到,称为随机存取方式。例如,要取第i个元素,只要i值是合法的(1<=i<=Length),那么立即就可以找到该元素。由于下标是从0开始的,因此第i个元素,其下标为i-1,即对应元素为L.elem[i-1]。
ApplicationFrameHost_Uw0py9zgei.png

  1. 线性表的操作——插入

在顺序表中第i个位置之前插入一个元素e,需要从最后一个元素开始,后 移一位,直到把第i个元素也后移一位,然后把e放入第i个位置。
ApplicationFrameHost_ZmvgjKEYQT.png
ApplicationFrameHost_n8P5YtAIRr.png

  1. 线性表的操作——删除

在顺序表中删除第i个元素,需要把该元素暂存到变量e中,然后从i+1个元素 开始前移,直到把第n个元素也前移一位,即可完成删除操作。
ApplicationFrameHost_jhJRlzMr82.png

2.3 注意

WeChat_Ww39an6KQa.png
WeChat_QqAeJzFVM5.png
WeChat_2LMTuKqHS6.png

3 线性表的链式表示和实现

考点

  • 单链表
  • 双向链表
  • 循环链表

3.1 单链表

  1. 单链表的定义

如图所示每个节点包含两个域:数据域和指针域。数据域存储数据元素,指 针域存储下一个节点的地址,因此指针指向的类型也是节点类型。每个指针都指向下一个节点,都是朝一个方向的,这样的链表称为单向链表或单链表。

  1. 单链表的操作——创建(插入)

创建单链表分为头插法和尾插法两种,头插法是指每次把新节点插到头节 点之后,其创建的单链表和数据输入顺序正好相反,因此也称为逆序建表。尾插 法是指每次把新节点链接到链表的尾部,其创建的单链表和数据输入顺序一致,因此也称为正序建表。
ApplicationFrameHost_8BHh7OkQJp.png
接下来,我们讲尾插法建表。尾插法每次把新节点链接到链表的尾部,其创 建的单链表 和数据输入顺序一致。
ApplicationFrameHost_tB1XuLUqAW.png

  1. 单链表的操作——查找

在一个单链表中查找是否存在元素e,可以定义一个p指针,指向第一个元素节点,比较p指向节点的数据域是否等于e。如果相等,查找成功,返回true ;如果不等,则p指向p的下一个节点,继续比较,如果p为空,查找失败,返回false.
ApplicationFrameHost_ZtvPOEiImi.png

  1. 单链表的操作——删除

删除一个节点,实际上是把这个节点跳过去。根据单向链表向后操作的特性,要想跳过第i个节点,就必须先找到第i-1个节点,否则是无法跳过去的。
ApplicationFrameHost_pA8u0eur8T.png

3.2 双向链表

  1. 双向链表的定义

单链表只能向后操作,不可以向前操作。为了向前、向后操作方便,可以给 每个元素附 加两个指针域,一个存储前一个元素的地址,另一个存储下一个元素的地址。这种链表称为双向链表。

  1. 双向链表操作——插入

单链表只有一个指针域,是向后操作的,不可以向前处理,因此单链表如果在第i 个节点之前插入一个元素,就必须先找到第i-1个节点。在第i个节点之 前插入一个元素相当于把新节点放在第i-1个节点之后。而双向链表不需要, 因为有两个指针,可以向前后两个方向操作,直接找到第i个节点,就可以把新节点插入第i个节点之前。

3.3 循环链表

单链表中,只能向后,不能向前。如果从当前节点开始,无法访问该节点前 面的节点,而最后一个节点的指针指向头节点,形成一个环,就可以从任何一个 节点出发,访问所有的节点,这就是循环链表。循环链表和普通链表的区别就是最后一个节点的后继指向了头节点。

3.4 注意

  1. 单链表中删除值为x的节点。

WeChat_euusqd8IV9.png

  1. 单链表中实现单链表的逆转。

WeChat_lZwJlv4j8R.png

  1. 单链表中实现将两个已排序的单链表归并成一个链表。

WeChat_YUDaxiOAwq.png
WeChat_0FNf97IVBv.png

4 线性表的应用

4.1 线性表的应用

  1. 合并有序顺序表

题 1. 将两个有序(非递减)顺序表La和Lb合并为一个新的有序(非递减) 顺序表。
ApplicationFrameHost_nFXjKRIdVL.png

  1. 合并有序链表

题 1. 将两个有序(非递减)单链表La和Lb合并为一个新的有序(非递减)单链表。
ApplicationFrameHost_KrVVmFS1nc.png

  1. 就地逆置单链表

题 1.将带有头节点的单链表就地逆置。即元素的顺序逆转,而辅助空间复杂度为O(1)。
ApplicationFrameHost_lEbWGvAEiJ.png

  1. 查找链表的中间节点

题 1.带有头节点的单链表 ,设计一个尽可能高效的算法求L中的中间节点。
ApplicationFrameHost_tCbidepNj6.png
ApplicationFrameHost_mYuqMW3wUZ.png

  1. 删除链表中的重复元素

题 1.用单链表保存m个整数,节点的结构(data,next),且|data|<=n(n为正整数)。现要求设计一个时间复杂度尽可能高效的算法,对于链表中data的绝对值相等
的节点,仅保留第一次出现的节点而删除其余绝对值相等的节点。
ApplicationFrameHost_zShoZMWzlD.png
ApplicationFrameHost_kyfd25EWVD.png

4.2 注意

WeChat_od6mZtD68v.png
WeChat_Pf6xBKdAFF.png
WeChat_OIJKnnGQ7G.png
WeChat_iooRNF3ooQ.png
WeChat_FnV4u6w0LD.png
WeChat_FImYT4gtFF.png
WeChat_fWsiZ0jGQD.png
WeChat_86y689jatn.png
WeChat_MNkctmsSzB.png
WeChat_8tdWge8N44.png
WeChat_IzkfpjD75e.png
WeChat_33a0Y7PjSY.png

5 栈

考点

  • 顺序栈的定义和操作
  • 链栈的定义和操作

5.1 顺序栈的定义和操作

  1. 栈的类型定义

这种后进先出(LastFirstOut,LIFO)的线性序列,称为“栈”。栈也是一种线性表,只不过它是操作受限的线性表,只能在一端进出操作。进出的一端称为栈顶( top),另一端称为栈底(base)。栈可以用顺序存储,也可以用链式存储,分别称为顺序栈和链栈.

  1. 顺序栈

先看顺序栈的存储方式,顺序栈需要两个指 针, 指向栈底, 指向栈顶。
ApplicationFrameHost_cA3MzueMJq.png
栈定义好了之后,还要定义一个最大分配空间,顺序结构都是如此,需要 预先分配空间,因此可以采用宏定义。

  1. 顺序栈的操作——初始化

初始化一个空栈,动态分配Maxsize大小的空间,用S.top和S.base指向该空间的基地址。
ApplicationFrameHost_jxKrXFYLvS.png

  1. 顺序栈的操作——入栈

入栈前要判断是否栈满,如果栈已满,则入栈失败;否则将元素放入栈顶, 栈顶指针向 上移动一个位置(top++)。
ApplicationFrameHost_TWqhECGcsB.png

  1. 顺序栈的操作——出栈

出栈前要判断是否栈空,如果栈是空的,则出栈失败;否则将栈顶元素暂存 给一个变量,栈顶指针向下移动一个位置(top–)。
ApplicationFrameHost_cQm1DrmTQR.png

  1. 顺序栈的操作——取栈顶元素

取栈顶元素和出栈不同。取栈顶元素只是把栈顶元素复制一份,栈顶指针未移动,栈内元素个数未变。
而出栈是指栈顶指针向下移动一个位置,栈内不再包 含这个元素。
ApplicationFrameHost_6FRzC5beMr.png

5.2 链栈的定义和操作

顺序栈是分配一段连续的空间,需要两个指针: base指向栈底,top指向栈顶。而链栈每个节点的地址是不连续的,只需要一个栈顶指针即可。
链栈的每个节点都包含两个域:数据域和指针域。可以把链栈看作一个不带头节点的单链表,但只能在头部进行插入、删除、取值等操作,不可以在中间和尾部操作。因此,可以按单链表的方法定义链栈的结构体。
ApplicationFrameHost_ItcswEdryh.png

  1. 链栈的操作——入栈

入栈是将新元素节点压入栈顶。因为链栈中第一个节点为栈顶,因此将新元 素节点插到第一个节点的前面,然后修改栈顶指针指向新节点即可。有点像摞盘子,将新节点摞到栈顶之上,新节点成为新的栈顶。
ApplicationFrameHost_O359Boe2Qt.png

  1. 链栈的操作——出栈

出栈就是把栈顶元素删除,让栈顶指针指向下一个节点,然后释放该节点空 间。
ApplicationFrameHost_DpBsH5kUrI.png

  1. 链栈的操作——取栈顶元素

取栈顶元素和出栈不同,取栈顶元素只是把栈顶元素复制一份,栈顶指针并没有改变。
ApplicationFrameHost_dTbXpEX5Pk.png

6 队列

考点

  • 顺序队列的定义和操作
  • 循环队列的定义和操作
  • 链队列的定义和操作

6.1 顺序队列的定义和操作

  1. 队列的定义和操作

这种先进先出(First In First Out,FIFO)的线性序列,称为“队列”。队列也是一种线性表,只不过它是操作受限的线性表,只能在两端操作:一端进,一 端出。进的一端称为队尾(rear) ,出的一端称为队头(front)。队列可以用顺序存储,也可以用链式存储。
简述栈和队列的异同点。 答案:相同点:都是线性表 不同点:区别在于不同的读写方式,队列:按先进先出原则,出队入队操作发生在存储区的两端 堆栈:按后进先出原则,进栈出栈操作发生在存储区同一端。

  1. 顺序队列

队列的顺序存储采用一段连续的空间存储数据元素,并用两个整型变量记录队头和队尾元素的下标,队列的入队列和出队列操作:

6.2 循环队列的定义和操作

  1. 队空

无论队头和队尾在什么位置,只要Q.rear和Q.front指向同一个位置,就认为是队空。如果将循环队列中的一维数组画成环形图。
循环队列队空的判定条件为:Q.front == Q.rear。

  1. 队满

在此采用浪费一个空间的方法,当队尾Q.rear的下一个位置Q.front时,就认为是队满。 但是Q.rear向后移动一个位置(Q.rear+1)后,很有可能超出了数组的最大下标,这时它的下一个位置 应该为0,就(Q.rear+1)%Maxsize=Q.front。
什么是队列的“假上溢”现象?试给出两种解决方法,并做简单描述。
由于头尾指针都不断前移,超出向量空间。这时整个向量空间及队列是空的却产生了"上溢"现象 解决方法:当数据出队时,将数据整体向前移动,这样就会不会出现 假溢出 。 另一种方案是:将数组看成循环的,这样的话,即使尾端数据已经塞 满,但是由于 结构 是循环的,可以继续将队头的空位当作队头插入数据,从而解决 假溢出。

  1. 循环队列的操作——入队

入队时,首先将元素x放入Q.rear所指空间,然后Qrear后移一位。
入队操作,当Q.rear后移一位时,为了处理临界状态(Q.rear+1=Maxsize),需要加1后取余运算。
ApplicationFrameHost_3289V9IP4V.png

  1. 循环队列的操作——出队

先用变量保存队头元素,然后队头Q.front后移一位。
出队操作,当 Q.front 后移一位时,为处理临界状态 (Q.front+1=Maxsize),需要加1后取余运算.
ApplicationFrameHost_d89gS2IpEB.png

  1. 求队列的长度

通过前面的分析,我们已经知道循环队列中元素个数为: (Q.rear-Q.front+Maxsize)%Maxsize,循环队列中元素个数即为循环队列的长度。
ApplicationFrameHost_ark2bgRCbW.png

6.3 链队列的定义和操作

顺序队列是分配一段连续的空间,用两个整型下标front和rear分别指向队头和队尾。而链队列类似一个单链表,需要两个指针front和rear分别指向队头和队尾。从队头出队,从队尾入队,为了出队时删除元素方便,可以增加一个头节点。

  1. 链队列操作——入队

ApplicationFrameHost_L0UIrKPWCd.png
ApplicationFrameHost_UXayNERolO.png

  1. 链队列的操作——出列

出队相当于删除第一个数据元素,即将第一个数据元素节点跳过去。首先 用 指针指向第一个数据节点,然后跳过该节点,即Q.front->next=p->next,
ApplicationFrameHost_4EFrygpoLY.png
ApplicationFrameHost_ux2LS0hBYW.png

6.4 注意

jB1BtoQiad.png
p68ENbhss3.png

7 栈和队列的应用

7.1 栈的应用

  1. 数值的转换:

将一个十进制n转换为二进制数
dimqRYTHMp.png

  1. 回文判定

回文是指正读反读均相同的字符序列,如“ abcd”和“abcscba”均是回文,
也就是说字符串沿中心线对称,但“foot”和“bed”不是回文。试写一个算法
判定给定的字符串是否为回文。
ApplicationFrameHost_aezUvUX9Ph.png

7.2 队列的应用

双端队列的遍历:
双端队列的遍历,即从头到尾输出整个队列中的元素,在输出过程中,队头 和队尾并不移动,因此借助一个暂时变量即可。
ApplicationFrameHost_fbGpKlOWNJ.png

7.3 注意

WeChat_FLXbQqJevf.png

8 串的定义和基本操作

考点

  • 串的定义
  • 串的存储方式
  • 串的基本操作

8.1 串的基本概念

  1. 串:又称字符串,是由零个或多个字符组成的有限序列。 字符串通常用双引号括起来,例如S=“abcdefg”,S为字符串的名字,双引号里面的内容为字符串的值。
  2. 串长:串中字符的个数,例如S的串长为6.
  3. 空串:零个字符的串,串长为0.
  4. 子串:串中任意个连续的字符组成的子序列,称为该串的子串,原串称为子串的主串。
  5. 空格串:全部由空格组成的串为空格串。

8.2 串的存储方式

  1. 字符串的顺序存储。

顺序存储是用一段连续的空间存储字符串。可以预先分配一个固定长度Maxsize的空间,在这个空间中存储字符串。
顺序存储的三种方式。

  1. 以’\0’表示字符串结束
  2. 在0空间存储字符串的长度
  3. 结构体变量存储字符串的长度
  4. 字符串的链式存储结构

和顺序表一样,顺序存储的串在插入和删除操作时,需要移动大量元素,因 此也可以采用链表的形式存储。
单链表存储字符串时,虽然插入和删除非常容易,但是这样做也有一个问 题:一个节点只存储一个字符,如果需要存储的字符特别多,会浪费很多空 间。因此也可以考虑一个节点存储多个字符的形式,例如一个节点存储3个字符,最后一个节点不够 个时用#代替。

8.3 串的基本操作

串的基本运算:

  1. 求串长StrLength(s):

操作条件:串s存在;
操作结果:求出串s的长度。

  1. 串赋值StrAssign(s1,s2):

操作条件: s1是一个串变量, s2或者是一个串常量,或者是一个串变量(通常s2是一个串常量时称为串赋值,是一个串变量称为串拷贝)。
操作结果:将s2的串赋值给s1,s1原来的值被覆盖掉。

  1. 连接操作:ApplicationFrameHost_rZsDHIN3dg.png

操作条件:串s1,s2存在。
操作结果:两个串的连接就是将一个串的串值紧接着放在另一个串的的后 面,连接成一个串,前者是产生新串s,s1和s2不改变;后者是在s1的后面连接s2的串值, s1改变,s2不改变。

  1. 求子串SubStr(s,i,len):

操作条件:串s存在, ApplicationFrameHost_0tXUfeOzvs.png
操作结果:返回从串 的第i个字符开始的长度为len的子串。 得到的是空串。

  1. 串比较StrCmp(s1,s2):

操作条件:串s1,s2存在。
操作结果:若s1==s2,操作返回值为0;若s1<s2,返回值<0;若s1>s2,返回值>0。

  1. 子串定位StrIndex(s,t):找子串t在s中首次出现的位置,否则返回值为-1.

操作条件:串s1,s2存在。
操作结果:若t属于s,则操作返回t在s首次出现的位置,否则返回-1.

  1. 插入
  2. 穿删除
  3. 串替换

8.3 注意

  1. 串是每个节点仅由一个字符串组成的线性表。
  2. 在串顺序存储结构中,实现串操作的原操作为字符序列的复制。
  3. 串与线性表在逻辑结构上极为相似,区别仅在于串的数据约束对象为字符集;在基本操作上差别 很大,线性表的基本操作大多数以单个元素作为操作对象,而串的基本操作通常以串的整体作为操作对象。
  4. 两个串相等的充分必要条件是两个串的长度相等且各个对应位置的字符都相等。

9 串的模式匹配算法

考点

  • 串的模式匹配算法

9.1 串的模式匹配算法

  1. 模式匹配:子串的定位运算称为串的模式匹配或串匹配。

假设两个串S、T,设S为子串,也称为正文串;T为子串,也称模式。在主串S中查找与模式T相匹配的子串,如果查找成功,返回匹配的子串第一个字符在主串中的位置。
最笨的办法就是穷举所有S的所有子串,判断是否与T匹配,该算法称为
BF(Brute Force)算法。

  1. 算法步骤
    1. 从S第1个字符开始,与T第1个字符比较,如果相等,继续比较下一 个字符,否则转向下一步;
    2. 从S第2个字符开始,与T第1个字符比较,如果相等,继续比较下一 个字符,否则转向下一步;
    3. 从S第3个字符开始,与T第1个字符比较,如果相等,继续比较下一 个字符,否则转向下一步;
    4. ……
    5. 如果T比较完毕,则返回T在S中第一个字符出现的位置;
    6. 如果S比较完毕,则返回0,说明T在S中未出现。
  2. 代码实现

ApplicationFrameHost_SkvKh0av2u.png
ApplicationFrameHost_Un1nX1mc1V.png

10 数组定义和存储结构

考点

  • 数组的定义
  • 数组的存储结构

10.1 数组的定义

数组是由相同类型的数据元素构成的有限集合。

  1. 一维数组可以看做一个线性表。
  2. 二维数组也可以看作一个线性X=(X0, X1, X2,……,Xn-1),只不过每一个数据元素X,也是一个线性表。

10.2 数组的存储结构

数组一般采用顺序存储结构,因为存储单元是一维的,而数组可以是多维的, 如何用一组连续的存储单元来存储多维数组呢?以二维数组为例,可以按行序存储,即先存第一行,再存第二行……也可以按列序存储,先存第一列,再存第二列…

  1. 按行存储

ApplicationFrameHost_cWQTSgAdMz.png
ApplicationFrameHost_7LdZVyMJhn.png

  1. 按列存储

10.3 注意

二维数组定义,第二个方括号中的表达式不能为空。
ApplicationFrameHost_0BoDVMg1FR.png

11 矩阵的压缩存储和广义表

考点

  • 压缩矩阵的定义
  • 对称矩阵
  • 三角矩阵
  • 广义表
    (未完待续)

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

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

相关文章

【数仓】FLink+CK

1.项目分层 ODS&#xff1a;原始数据&#xff0c;包含日志和业务数据DWD&#xff1a;根据数据对象为单位进行分流。比如订单、页面访问等。DIM&#xff1a;维度数据DWM&#xff1a;对于部分数据对象进行进一步加工&#xff0c;比如独立访问、跳出行为&#xff0c;也可以和维度…

谷粒商城项目笔记之高级篇(三)

目录1.9.22 提交订单的问题1)、订单号显示、应付金额回显2)、提交订单消息回显3&#xff09;、为了确保锁库存失败后&#xff0c;订单和订单项也能回滚&#xff0c;需要抛出异常1.9.23 创建库存上锁、解锁 业务交换机&队列1&#xff09;、流程梳理2&#xff09;、解锁库存实…

Vsftpd服务的部署及优化详解(图文)

目录 前言 实验环境 一、vsftpd的安装及启用 1、具体步骤 2、开启匿名用户访问功能并测试 二、vsftpd基本信息 三、匿名用户访问控制 四、本地用户访问控制 五、虚拟用户访问 1、建立虚拟用户访问 2、虚拟用户家目录的独立设定 3、用户配置独立 前言 vsftpd是“…

TapTap 算法平台的 Serverless 探索之路

分享人&#xff1a;陈欣昊&#xff0c;TapTap/IEM/AI平台负责人 摘要&#xff1a;本文主要介绍心动网络算法平台在Serverless上的实践。 《TapTap算法平台的 Serverless 探索之路》 Serverless 在构建应用上为我们节省了大量的运维与开发人力&#xff0c;在基本没投入基建人力…

(02)Cartographer源码无死角解析-(49) 2D点云扫描匹配→相关性暴力匹配1:SearchParameters

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 文末…

LeetCode分类刷题----链表篇

链表链表1.移除链表元素203.移除链表元素707.设计链表2.反转链表206.反转链表3.两两交换链表中的节点24.两两交换链表中的节点4.删除链表中的倒数第N个节点19.删除链表的倒数第N个节点5.链表相交07.链表相交6.环形链表141.环形链表142.环形链表II链表 1.移除链表元素 203.移除…

成功解决VMware安装操作系统出现分辨率的问题

文章目录问题重现问题原因问题解决方法一&#xff1a;拓展&#xff1a;1. 电脑分辨率&#xff1a;2. xrandr命令3. 查询后如果没有合适的分辨率解决方案参考资料问题重现 如下图&#xff1a; 在VMware16上安装ubuntu操作系统的时候&#xff0c;出现分辨率问题&#xff0c; 导致…

如何录屏有声音?如何录制带声音的视频

平常我们会通过录屏的方式录制电脑画面&#xff0c;然后再保存下来。那您是不是遇到过这种情况&#xff1a;录制的录屏文件只有画面没有声音。没有声音的视频还能修复吗&#xff1f;如何录屏有声音&#xff1f;怎样才能录制带声音的视频&#xff1f;今天小编教大家如何在录屏的…

前端基础(十三)_定时器(间歇定时器、延迟定时器)

定时器 定时器共两种&#xff0c;setInterval及setTimeout&#xff1a; 1、setInterval&#xff1a;重复执行或者叫间歇执行&#xff0c;即隔某个时间就执行一次 2、setTimeout&#xff1a;延迟执行&#xff0c;延迟某个特定的时间开始执行&#xff0c;只执行一次 语法&#x…

代码随想录算法训练营第10天 232.用栈实现队列、225. 用队列实现栈

代码随想录算法训练营第10天 232.用栈实现队列、225. 用队列实现栈 用栈实现队列 力扣题目链接(opens new window) 使用栈实现队列的下列操作&#xff1a; push(x) – 将一个元素放入队列的尾部。 pop() – 从队列首部移除元素。 peek() – 返回队列首部的元素。 empty() –…

十分好用的跨浏览器测试工具,建议收藏!!!

跨浏览器测试是确保web应用程序的功能在不同浏览器、浏览器版本和操作系统直接保持功能和质量一致的过程&#xff0c;可以为用户提供更好的用户体验&#xff0c;帮助企业通过更易访问的网站获得满意客户&#xff0c;可以使web应用程序在不同平台上兼容。在跨浏览器测试过程中&a…

Vulnhub靶机:DIGITALWORLD.LOCAL_ DEVELOPMENT

目录介绍信息收集主机发现主机信息探测网站探测SSH登录lshell绕过sudo提权介绍 系列&#xff1a;digitalworld.local&#xff08;此系列共9台&#xff09; 发布日期&#xff1a;2018 年 12 月 28 日 难度&#xff1a;中级 运行环境&#xff1a;Virtualbox运行失败&#xff0c;…

写作的“收益”超乎想象

十余年写作经验倾囊相授&#xff0c;全面提升你的技术写作能力&#xff01; 前言 技术从业人员普遍比较务实&#xff0c;也就是用心做好分配给自己的任务&#xff0c;努力担负起自己应尽的责任&#xff0c;因为大家都相信&#xff0c;付出必有回报&#xff0c;金字总会闪光。 …

【干货】普通单双面板的生产工艺流程(二)

衔接上文&#xff0c;继续为朋友们分享普通单双面板的生产工艺流程。 如图&#xff0c;第二道主流程为钻孔。 钻孔的目的为&#xff1a; 对PCB进行钻孔&#xff0c;便于后续识别、定位、插件及导通。 目前&#xff0c;行业内主流的PCB钻孔方式为&#xff1a;机械钻孔、激光钻…

引蜘蛛软件哪款有效果?多少钱怎么购买?

引蜘蛛软件哪款有效果?多少钱怎么购买?怎教你查看一个IP地址是不是搜索引擎官方蜘蛛的参考方法#IP地址#官方蜘蛛#搜索引擎官 大家好&#xff0c;今天给大家分享的是关于怎么查看一个 ip 地址是不是搜索引擎官方蜘蛛的参考方法。 很多做网站的小伙伴们肯定会用到这个方式。 有…

用 Python 制作空间数据可视化

大数据时代到来&#xff0c;随着智能设备与物联网技术的普及&#xff0c;人在社会生产活动中会产生大量的数据。在我们的日常活动中&#xff0c;手机会记录下我们到访过的地点&#xff1b;在使用城市公交IC卡、共享单车等服务时&#xff0c;服务供应商会知道这些出行需求产生的…

gdb相关知识

cdir和cwd 当我们用gdb的命令show dir的时候&#xff0c;显示源码搜寻目录&#xff1a; cdir: 代表编译路径&#xff0c;可以打个断点&#xff0c;然后用info source命令查看。 cwd: 代表当下调试的目录&#xff0c;直接用pwd就可以。 添加新的搜索路径 dir /opt/nmt搜索路…

Gemini撕DCG诉感情被骗,灰度百亿大饼持仓却不会爆雷?

插播&#xff1a;《刘教链比特币原理》音频课正在连载中。今天次条是第一章第2节“1-2 比特币的特点和使用”&#xff0c;推荐每一位读者学习。点击此处查看付费合集详情[链接]以及上一课“1-1 五分钟告诉你什么是比特币和区块链”[链接]。* * *比特币今晨突然急速上涨&#xf…

Qt OpenGL(09)在着色器中实现旋转的彩色正方体

文章目录在着色器中实现旋转的彩色正方体旋转矩阵沿x轴旋转&#xff1a;沿y轴旋转&#xff1a;沿z轴旋转&#xff1a;在顶点着色器中实现顶一个vec3的变量 theta计算余弦和正弦值定义3个旋转矩阵最终代码在着色器中实现旋转的彩色正方体 一直觉得用OpenGL 画一个立方体或者彩色…

黑马学ElasticSearch(八)

目录&#xff1a; &#xff08;1&#xff09;黑马旅游案例-搜素-分页 &#xff08;2&#xff09;黑马旅游案例-条件过滤 &#xff08;3&#xff09;黑马旅游案例-我附近的酒店 &#xff08;4&#xff09;黑马旅游案例-广告置顶 &#xff08;1&#xff09;黑马旅游案例-搜素…