《数据结构》期末考试测试题【中】
《数据结构》期末考试测试题【中】
- 21.循环队列队空的判断条件为?
- 22. 单链表的存储密度比1?
- 23.单链表的那些操作的效率受链表长度的影响?
- 24.顺序表中某元素的地址为?
- 25.m叉树第K层的结点数为?
- 26. 在双向循环链表某节点的后面插入一个新节点的操作为?
- 27.顺序表中时间复杂度为 O ( 1 ) O(1) O(1)的操作为?
- 28.关于线性表的链式存储描述正确的为?
- 29.单向循环链表删除第一个元素的操作为?
- 30.有序单链表中查找操作的平均查找节点数为?
- 31.某哈夫曼树的叶子结点树为?
- 32.某字符串的子串的个数为?
- 33.某栈的第i次出栈元素为?
- 34.在顺序表中插入一个新元素需要后移的元素数?
- 35.创建一个有序单链表的时间复杂为?
- 36.两个有序表合并为一个有序表的最少比较次数为?
- 37.与哈希表的查找效率无关的为?
- 38.判断哪个关键字序列是堆?
- 39.排序算法中是稳定的排序算法的为?
- 40.在10000个元素中最快的找到其中最大的10个元素的排序算法为?
往期练习题回顾:
链接:
数据结构测试题【上】
21.循环队列队空的判断条件为?
循环队列
:将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。
- 当队列为空时,意味着没有任何元素在队列中。
- 在这种情况下,队头指针front和队尾指针rear应该指向同一个位置。
- 因为没有元素,就不存在头和尾的间隔。
- 所以
队空的条件
是rear == front
A选项:
(rear + 1)%n==front
:这是循环队列队满的判断条件
,而不是队空的条件。- 当队满时,尾指针的下一个位置(循环意义下)是头指针。
答案【C】
22. 单链表的存储密度比1?
存储密度
:指数据元素本身所占的存储量和整个结点结构所占的存储量之比。
在单链表中,每个结点除了存储数据元素本身之外,还需要存储指向下一个结点的指针。
设数据元素所占的存储空间为D,指针所占的存储空间为P,那么一个结点所占的存储空间就是D + P
存储密度
= D D + P =\frac{D}{D + P} =D+PD由于 P > 0 , P>0, P>0,所以 D D + P < 1 \frac{D}{D + P}<1 D+PD<1
所以:
单链表的存储密度小于1
23.单链表的那些操作的效率受链表长度的影响?
A选项:
- 已知单链表设置了头指针,若要删除首元结点,只需要让头指针指向原首元结点的下一个结点。
- ( ( (假设头指针为 h e a d , head, head,原首元结点为 h e a d − > n e x t , head - \gt next, head−>next,操作 h e a d = h e a d − > n e x t ) head=head - \gt next) head=head−>next)
- 所以:删除单链表的首元结点,这个操作与单链表的长度 n n n无关。
B选项:
- 因为单链表只有头指针和尾指针,要删除尾结点,需要先遍历单链表找到尾结点的前驱结点。
- 单链表的长度为 n , n, n,遍历单链表找到尾结点的前驱结点需要 O ( n ) O(n) O(n)的时间复杂度。
- 所以:删除单链表的尾结点,这个操作与单链表的长度有关。
C选项:
- 由于设置了头指针,要在首元结点之前插入新元素,只需要创建新结点,让新结点的 n e x t next next指针指向原首元结点,然后让头指针指向新结点。
- (假设头指针为 h e a d , head, head,原首元结点为 h e a d − > n e x t , head - \gt next, head−>next,新结点为 p , p, p,操作 p − > n e x t = h e a d − > n e x t , h e a d = p ) p - \gt next = head - \gt next,head = p) p−>next=head−>next,head=p)
- 所以:在首元结点之前插入一个新元素,这个操作与单链表的长度 n n n无关。
D选项:
- 因为设置了尾指针,尾指针直接指向尾结点。要在尾结点之后插入新元素,只需要修改尾指针指向新结点,新结点的 n e x t next next指针设为 N U L L , NULL, NULL,然后更新尾指针指向新结点。
- (假设尾指针为 r e a r , rear, rear,新结点为 p , p, p,操作 r e a r − > n e x t = p , p − > n e x t = N U L L , r e a r = p ) , rear - \gt next = p,p - \gt next=NULL,rear = p), rear−>next=p,p−>next=NULL,rear=p),这个操作与单链表的长度n无关。
- 所以:在尾结点之后插入一个新元素,这个操作与单链表的长度 n n n无关。
答案【B】
24.顺序表中某元素的地址为?
顺序表中元素地址的计算方法:
第 i i i个元素的地址 L O C ( i ) LOC(i) LOC(i)与第一个元素地址 L O C ( 1 ) LOC(1) LOC(1)的关系为:
L O C ( i ) = L O C ( 1 ) + ( i − 1 ) ∗ L LOC(i)=LOC(1)+(i - 1)*L LOC(i)=LOC(1)+(i−1)∗L
- 其中 L L L是每个元素的长度。
这里 L O C ( 1 ) = 100 , i = 5 , L = 2 LOC(1)=100,i = 5,L = 2 LOC(1)=100,i=5,L=2
根据上述公式 L O C ( 5 ) = 100 + ( 5 − 1 ) ∗ 2 LOC(5)=100+(5 - 1)*2 LOC(5)=100+(5−1)∗2
答案【C】
25.m叉树第K层的结点数为?
满 m m m叉树的结点个数规律:
- 第 1 1 1层有 1 = m 1 − 1 1 = m^{1 - 1} 1=m1−1个结点。
- 第 2 2 2层有 m = m 2 − 1 m=m^{2 - 1} m=m2−1个结点。
- 第 3 3 3层有 m 2 = m 3 − 1 m^{2}=m^{3 - 1} m2=m3−1个结点。
- 以此类推,第 k k k层有 m k − 1 m^{k - 1} mk−1个结点。
这里深度 h h h是一个干扰条件,求第 k k k层的结点个数与树的深度h无关(只要 1 ⩽ k ⩽ 1\leqslant k\leqslant 1⩽k⩽即可)
答案【A】
26. 在双向循环链表某节点的后面插入一个新节点的操作为?
- 第一步:要先让q的前驱指针q -> prior指向p,即
q -> prior=p
- 因为q要插入到p后面,所以q的前驱就是p
- 第二步:让q的后继指针q -> next指向p的后继p -> next,即
q -> next=p -> next
- 因为q要插入到p后面,所以q的后继就是p -> next
- 第三步:修改p原来的后继p -> next的前驱指针,让p -> next -> prior指向q,即
p -> next -> prior=q
- 因为q插入到了p和p -> next之间,所以p -> next的前驱就变成了q
- 第四步:最后让p的后继指针p -> next指向q,即
p -> next=q
- 因为q插入到了p和p -> next之间,所以p的后继就变成了q
在双向循环链表中,要在p指针所指的结点后插入q所指向的新结点的核心原理:
插入新节点的四步操作中只要保证:
q -> next=p -> next
和p -> next -> prior=q
操作在
p -> next=q
操作之前即可
A选项:
q -> prior = p; q -> next = p -> next; p -> next -> prior = q; p -> next = q;
这个操作顺序是正确的,按照我们前面分析的插入步骤进行操作。
B选项:
p -> next = q; p -> next -> prior = q; q -> prior = p; q -> next = p -> next;
- 这里第一步p -> next = q就破坏了链表原来的结构。
- 在还没有处理好q与其他节点的关系之前就修改了p的后继指针,导致后续操作无法正确进行。
C选项:
q -> prior = p; q -> next = p -> next; p -> next = q; p -> next -> prior = q;
- 其中第三步p -> next = q和第四步p -> next -> prior = q顺序错误。
- 应该先修改p -> next -> prior再修改p -> next
D选项:
p -> next = q; q -> prior = p; p -> next -> prior = q; q -> next = p -> next;
- 第一步p -> next = q破坏了链表结构。
答案【A】
27.顺序表中时间复杂度为 O ( 1 ) O(1) O(1)的操作为?
A选项:
将 n n n个结点从小到大排序,常见的排序算法如冒泡排序、插入排序、快速排序等,它们的时间复杂度都不是 O ( 1 ) O(1) O(1)
- 例如冒泡排序的时间复杂度为 O ( n 2 ) O(n^{2}) O(n2)
- 快速排序平均时间复杂度为 O ( n l o g n ) O(nlogn) O(nlogn)
B选项:
- 在顺序表中删除第 i i i个结点,需要将第 i + 1 i + 1 i+1个结点到第 n n n个结点依次向前移动一位。
- 这个操作平均需要移动 n − i n - i n−i个结点,时间复杂度为 O ( n ) O(n) O(n),而不是 O ( 1 ) O(1) O(1)
C选项:
- 在顺序表中第 i i i个结点后插入一个新结点,需要将第 i + 1 i+1 i+1个结点到第 n n n个结点依次向后移动一位。
- 这个操作平均需要移动 n − i n - i n−i个结点,时间复杂度为 O ( n ) O(n) O(n),而不是 O ( 1 ) O(1) O(1)
D选项:
- 访问第 i i i个结点 ( 1 ≤ i ≤ n ) (1\leq i\leq n) (1≤i≤n),因为顺序表是一种随机存取结构,直接通过数组下标就可以访问到第 i i i个结点,时间复杂度为 O ( 1 ) O(1) O(1)
- 求第 i i i个结点的直接前驱 ( 2 ≤ i ≤ n ) (2\leq i\leq n) (2≤i≤n),在顺序表中,第 i i i个结点的直接前驱是第 i − 1 i - 1 i−1个结点,同样可以直接通过数组下标访问,时间复杂度为 O ( 1 ) O(1) O(1)
答案【D】
28.关于线性表的链式存储描述正确的为?
链式存储结构的概念:
- 链式存储结构是通过指针将各个数据节点连接起来的一种存储方式。
- 每个节点包含数据部分和指向下一个节点的指针部分。
在链式存储结构中,节点在内存中的存储位置并不需要严格按照顺序:
- 例如,第一个节点可以存储在内存地址100的位置,第二个节点可以存储在内存地址200的位置,它们通过指针相互关联。
- 当然,这些节点也可以连续存储,比如第一个节点在100,第二个节点在104(假设每个节点占用4个字节)
所以:
线性表若采用链式存储结构时,内存中可用存储单元的地址连续或不连续都可以
答案【B】
29.单向循环链表删除第一个元素的操作为?
A选项:
q=h->next; h->next=q->next; if(p==q) {p=h; } free(q);
- 第一步:
q = h->next;
这里的目的是让 q 指向要删除的第一个结点。
- 因为 h 是头结点, h->next 就是第一个实际的数据结点。
- 第二步:
h->next = q->next;
这一步是将头结点 h 的 next 指针指向原来第一个结点( q 所指向的结点)的下一个结点。
- 这样就把第一个结点从链表中“断开”了。
- 第三步:
if(p == q)
- 因为 p 是尾指针,如果要删除的结点 q 就是尾结点(在单循环链表中这种情况是可能的)
- 那么在删除 q 后,尾指针 p 应该指向头结点 h ,所以 p = h;
- 第四步:
free(q);
释放 q 所指向的结点(也就是原来的第一个结点)的内存空间。
B选项:
h->next=h->next->next; q=h->next; free(q);
- 第一步:
h->next = h->next->next;
这一步确实将头结点 h 的 next 指针指向了原来第一个结点的下一个结点。
- “断开”了第一个结点。
- 第二步:
q = h->next;
,此时 q 指向的是原来第一个结点的下一个结点,而不是要删除的第一个结点。
- 这就导致
free(q);
释放的是错误的结点。
C选项:
q=h->next; h->next=q->next; if(p!=q) {p=h; } free(q);
- 这个选项中的语句
if(p != q)
,导致无法进行正确的删除操作。
D选项:
q=h->next; h->next=h->next->next; free(q);
- 第一步:
q = h->next;
让 q 指向要删除的第一个结点。- 第二步:
h->next = h->next->next;
将头结点 h 的 next 指针指向原来第一个结点的下一个结点。
- “断开”了第一个结点。
- 但是没有考虑如果要删除的结点 q 是尾结点时尾指针 p 的更新情况,所以这个选项是不完整的。
答案【A】
30.有序单链表中查找操作的平均查找节点数为?
长度为 n n n有序单链表查找值等于 x x x的结点:
- 在最好的情况下,也就是要查找的元素在表头,只需要比较 1 1 1次。
- 在最坏的情况下,要查找的元素在表尾,则需要比较 n n n次。
对于有序单链表的查找,其查找成功时的
平均查找长度(ASL)
计算方式与顺序表的折半查找不同,这里它是一个线性查找过程。
- 因为每个元素查找成功的概率是相等的,设为 1 / n 。 1/n。 1/n。查找第i个元素时,需要比较 i i i次。
- 那么平均查找长度长度为 A S L = ∑ i = 1 n i × 1 n ASL=\sum_{i = 1}^{n}i\times\frac{1}{n} ASL=∑i=1ni×n1
- 根据等差数列求和公式 ∑ i = 1 n i = n ( n + 1 ) 2 , \sum_{i = 1}^{n}i=\frac{n(n + 1)}{2}, ∑i=1ni=2n(n+1),所以 A S L = 1 n × n ( n + 1 ) 2 = n + 1 2 ASL=\frac{1}{n}\times\frac{n(n + 1)}{2}=\frac{n + 1}{2} ASL=n1×2n(n+1)=2n+1
答案【A】
31.某哈夫曼树的叶子结点树为?
- 对于哈夫曼树:
结点总数
=叶子结点个数
+度为2的结点个数
(哈夫曼树并且不存在度为1的结点)- 二叉树的性质:
叶子结点个数
=度为2的结点个数
+ 1哈夫曼树的性质:
结点总数
= 2 *度为2的结点个数
+ 1结点总数
= 2 *度为0的结点个数
- 1
答案【C】
32.某字符串的子串的个数为?
子串的概念:
- 空串是任何串的子串。
- 对于一个长度为 n n n的串 S , S, S,其
非空子串的个数
为 n ( n + 1 ) 2 \frac{n(n + 1)}{2} 2n(n+1)
这里串 S = “ s o f t w a r e ” , S=“software”, S=“software”,其长度 n = 8 , n = 8, n=8,所以非空子串的个数为 36 36 36
但是不要忘记空串也是子串,所以子串的总个数应该是 36 + 1 = 37 36+1 = 37 36+1=37
答案【D】
33.某栈的第i次出栈元素为?
- 已知入栈序列是 1 , 2 , 3 , ⋯ , n 1,2,3,\cdots,n 1,2,3,⋯,n
- 且 p 1 = n , p1 = n, p1=n,即第一个出栈的是 n , n, n,同时它也是最后入栈的元素。
- 这意味着 1 , 2 , 3 , ⋯ , n 1,2,3,\cdots,n 1,2,3,⋯,n这些元素是先全部入栈,然后再开始出栈操作。
栈是一种后进先出(LIFO)的数据结构
- 那么第二个出栈的元素 p 2 , p2, p2,就是在 n n n入栈之前最后入栈的元素,也就是 n − 1 n - 1 n−1
- 第三个出栈的元素 p 3 p3 p3就是 n − 2 n-2 n−2
- 按照这个规律,第 i i i个出栈的元素 p i , pi, pi,就是 p i = n − ( i − 1 ) = n − i + 1 pi=n-(i - 1)=n - i+1 pi=n−(i−1)=n−i+1
答案【C】
34.在顺序表中插入一个新元素需要后移的元素数?
在顺序表的第 i i i个元素 ( 1 ≤ i ≤ n + 1 ) (1 \leq i \leq n + 1) (1≤i≤n+1)之前插人一个新元素时。
- 需从最后一个元素即第 n n n个元素开始,依次向后移动一个位置,直至第 i i i个元素。
总计共 n − i − 1 n-i-1 n−i−1个元素。
答案【B】
35.创建一个有序单链表的时间复杂为?
对于创建一个有序单链表,每插入一个节点都需要在已有的链表中找到合适的位置进行插入。
- 当插入第一个节点时,不需要比较,时间复杂度为 O ( 1 ) O(1) O(1)
- 当插入第二个节点时,最多需要比较 1 1 1次找到合适的插入位置,时间复杂度为 O ( 1 ) O(1) O(1)
- 当插入第三个节点时,最多需要比较 2 2 2次找到合适的插入位置,时间复杂度为 O ( 2 ) O(2) O(2)
- 以此类推,当插入第 n n n个节点时,最多需要比较 n − 1 n - 1 n−1次找到合适的插入位置,时间复杂度为 O ( n − 1 ) O(n-1) O(n−1)
- 总的比较次数为 1 + 2 + ⋯ + ( n − 1 ) 1 + 2+\cdots+(n - 1) 1+2+⋯+(n−1)
- 根据等差数列求和公式 S = n ( n − 1 ) 2 , S=\frac{n(n - 1)}{2}, S=2n(n−1),这里n表示项数。
- 时间复杂度的大O表示法忽略
常数
和低阶项
, n ( n − 1 ) 2 ,\frac{n(n - 1)}{2} ,2n(n−1)的最高阶是 n 2 , n^{2}, n2,所以时间复杂度为 O ( n 2 ) O(n^{2}) O(n2)
答案【C】
36.两个有序表合并为一个有序表的最少比较次数为?
对于将两个各有 N N N个元素的有序表归并成一个有序表的情况,要使比较次数最少,就是:
当一个表的最大元素小于另一个表的最小元素时
- 例如,有表 A = [ a 1 , a 2 , ⋯ , a N ] A = [a_1,a_2,\cdots,a_N] A=[a1,a2,⋯,aN]和表 B = [ b 1 , b 2 , ⋯ , b N ] B=[b_1,b_2,\cdots,b_N] B=[b1,b2,⋯,bN]
- 若 a N < b 1 , a_N < b_1, aN<b1,那么只需要将表 A A A的 N N N个元素依次与 b 1 b_1 b1比较后放入新的有序表,比较次数就是 N N N次。
答案【A】
37.与哈希表的查找效率无关的为?
哈希表(Hash Table)
:也称为散列表是一种通过哈希函数将键(Key)映射到表中一个位置以便快速访问记录的数据结构。
具体来说,哈希表的查找效率受以下几个因素影响:
哈希函数
:
- 良好的哈希函数能够将输入的不同值均匀地映射到哈希表的不同索引位置上,从而减少冲突,提高查找效率。
装载因子
:装载因子是哈希表中已存储键值对的数量除以哈希表的长度。
- 装载因子的增加会导致哈希冲突的增加,从而降低查找效率。
- 因此,通过调整哈希表的长度或使用动态哈希表等方式来控制负载因子可以提高查找效率。
冲突处理方法
:
- 哈希表采用链地址法(Chaining)和开放地址法(Open Addressing)来解决哈希冲突。
- 合理的冲突解决策略能够减少冲突的发生,从而提高查找效率。
答案【A】
38.判断哪个关键字序列是堆?
堆分为大根堆和小根堆。
大根堆
:要求每个节点的值都不大于其父节点的值。
小根堆
:要求每个节点的值都不小于其父节点的值。
这里我们可以将这些序列看作完全二叉树的层次遍历序列来进行分析:
答案【D】
39.排序算法中是稳定的排序算法的为?
稳定排序
:如果两个相等的元素在排序前后的相对顺序不变,那么这种排序算法就是稳定的排序算法。不稳定的排序方法包括:
快速排序
、希尔排序
、堆排序
。稳定的排序方法包括:
直接插人排序
、折半插人排序
、冒泡排序
、简单选择排序
、归并排序
、基数排序
。
记忆小窍门
:不稳定的三个排序方法可以简记为快些(希)堆
可以想成当我们试图将很多材料堆积起来时,如果只为了追求“快一些”,可能会导致堆积起来的材料不稳定,容易倒塌。
除了简记为“快些(希)堆”的三个排序方法,其他所有的排序方法都是稳定的。
A选项:
希尔排序
:按照一定的增量对数据进行分组插入排序的改进算法。
- 在希尔排序的过程中,相同元素可能会因为分组和不同的增量而改变相对顺序,所以希尔排序是不稳定的排序方法。
B选项:
快速排序
:通过选择一个基准元素,将数组分为两部分,左边部分小于基准元素,右边部分大于基准元素,然后递归地对左右两部分进行排序。
- 在快速排序的过程中,相等元素的相对顺序可能会因为划分操作而改变,所以快速排序是不稳定的排序方法。
C选项:
归并排序
:将数组不断地分成两半,对每一半进行排序,然后再将排好序的两半合并起来。
- 在合并的过程中,如果遇到相等的元素,会按照原来的顺序依次放入合并后的数组中,所以相等元素的相对顺序不会改变,归并排序是稳定的排序方法。
D选项:
堆排序
:利用堆这种数据结构进行排序的算法。
- 在调整堆的过程中,相同元素的相对顺序可能会发生改变,所以堆排序是不稳定的排序方法。
答案【C】
40.在10000个元素中最快的找到其中最大的10个元素的排序算法为?
A选项:
冒泡排序
:相邻元素两两比较,将较大的元素逐步“冒泡”到数组的末尾。
- 对于 10000 10000 10000个元素的数组,如果要找出最大的 10 10 10个元素,冒泡排序需要对几乎整个数组进行多次比较和交换操作。
- 它的时间复杂度在最坏情况下为 O ( n 2 ) ( n = 10000 ) , O(n^{2})(n = 10000), O(n2)(n=10000),即使只找最大的 10 10 10个元素,也需要大量的比较操作,效率较低。
B选项:
快速排序
:通过选择一个基准元素,将数组分为两部分,左边的元素都小于基准元素,右边的元素都大于基准元素,然后递归地对左右两部分进行排序。
- 快速排序的平均时间复杂度为 O ( n l o g n ) , O(nlogn), O(nlogn),但如果要找出最大的 10 10 10个元素,它仍然需要对整个数组进行较多的划分和比较操作,不能高效地只针对最大的 10 10 10个元素进行处理。
C选项:
简单选择排序
:每次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。
- 它的时间复杂度为 O ( n 2 ) , O(n^{2}), O(n2),要找出最大的 10 10 10个元素,需要进行大量的比较操作,效率不高。
D选项:
堆排序
:
- 对于求最大的 10 10 10个元素,可以构建一个大小为 10 10 10的最小堆,然后遍历剩下的 10000 − 10 = 9990 10000 - 10=9990 10000−10=9990个元素。如果元素大于堆顶元素,则替换堆顶元素,并调整堆。
- 这样只需要对 10000 10000 10000个元素进行一次遍历,每次调整堆的时间复杂度为 O ( l o g 10 ) O(log10) O(log10)(因为堆的大小为 10 10 10),总的时间复杂度接近 O ( n ) ( n = 10000 ) , O(n)(n = 10000), O(n)(n=10000),相比其他算法,在只找出最大的 10 10 10个元素时最节省时间。
答案【D】
相关文章:
《数据结构》期末考试测试题【中】
《数据结构》期末考试测试题【中】 21.循环队列队空的判断条件为?22. 单链表的存储密度比1?23.单链表的那些操作的效率受链表长度的影响?24.顺序表中某元素的地址为?25.m叉树第K层的结点数为?26. 在双向循环链表某节点…...
【Vue3项目实战系列一】—— 全局样式处理,导入view-ui-plus组件库,定制个性主题
😉 你好呀,我是爱编程的Sherry,很高兴在这里遇见你!我是一名拥有十多年开发经验的前端工程师。这一路走来,面对困难时也曾感到迷茫,凭借不懈的努力和坚持,重新找到了前进的方向。我的人生格言是…...
ChatGPT 主流模型GPT-4/GPT-4o mini的参数规模是多大?
微软论文又把 OpenAI 的机密泄露了??在论文中明晃晃写着: o1-preview 约 300B;o1-mini 约 100BGPT-4o 约 200B;GPT-4o-mini 约 8BClaude 3.5 Sonnet 2024-10-22 版本约 175B微软自己的 Phi-3-7B,这个不用约…...
初学stm32 --- RTC实时时钟
目录 RTC简介 常用的RTC方案 STM32 F1 RTC框图介绍 后备寄存器和RTC寄存器特性(F1) F1 RTC相关寄存器介绍 RCC_APB1ENR寄存器编辑 PWR_CR寄存器 RCC_BDCR寄存器 RTC_CRL寄存器 RTC_CRH寄存器 RTC_PRLH寄存器 RTC_PRLL寄存器 RTC_CNTH寄存器 …...
Qt之屏幕录制设计(十六)
Qt开发 系列文章 - screencap(十六) 目录 前言 一、实现原理 二、实现方式 1.创建录屏窗口 2.录屏窗口类定义 3.自建容器对象定义 4.用户使用 5.效果演示 总结 前言 利用Qt实现屏幕录制设计,可以通过使用Qt自带的类QScreen、QPixma…...
25年1月更新。Windows 上搭建 Python 开发环境:Python + PyCharm 安装全攻略(文中有安装包不用官网下载)
引言 随着 Python 在数据科学、Web 开发、自动化脚本等多个领域的广泛应用,越来越多的开发者选择它作为首选编程语言。而 PyCharm 作为一个功能强大的集成开发环境(IDE),为 Python 开发者提供了极大的便利。本文将详细介绍如何在 …...
CTF杂项——[LitCTF 2024]涐贪恋和伱、甾―⑺dé毎兮毎秒
得到一张图片 有两种方式可以得到flag 第一种:LSB 第二种:zsteg...
从零开始手写缓存之如何实现固定缓存大小
cache 发展之路 1、HashMap或者ConcurrentHashMap public class CustomerService {private HashMap<String,String> hashMap new HashMap<>();private CustomerMapper customerMapper;public String getCustomer(String name){String customer hashMap.get(nam…...
Kubernetes——part4-1 Kubernetes集群 服务暴露 Nginx Ingress Controller
Kubernetes集群 服务暴露 Nginx Ingress Controller 一、ingress控制器 1.1 ingress控制器作用 (类似于slb,做代理服务) ingress controller可以为kubernetes 集群外用户访问Kubernetes集群内部pod提供代理服务。 提供全局访问代理访问流程…...
前端小案例——520表白信封
前言:我们在学习完了HTML和CSS之后,就会想着使用这两个东西去做一些小案例,不过又没有什么好的案例让我们去练手,本篇文章就提供里一个案例——520表白信封 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解更多内容可以访问我的主…...
《机器学习》——线性回归模型
文章目录 线性回归模型简介一元线性回归模型多元线性回归模型误差项分析一元线性模型实例完整代码 多元线性模型实例完整代码 线性回归模型简介 线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。 相关关系&…...
测试用例颗粒度说明
当我们在编写测试用例时,总是会遇到一个问题:如何确定测试用例的颗粒度?测试用例过于粗糙,可能无法全面覆盖系统的细节;而颗粒度过细,又会导致测试重复、冗余。掌握合适的颗粒度,不仅可以提高测…...
Kali 离线安装 ipmitool 笔记
在Kali Linux上离线安装 ipmitool 的步骤如下: 一、获取 ipmitool 的安装包和依赖 由于是离线安装,您需要先在一台可以联网的机器上下载 ipmitool 及其所有依赖包。 方法一:使用 apt 下载包 在联网的机器上,运行以下命令以准备…...
基于word2vec的文本大数据分析
基于word2vec的文本大数据分析 效果: 一、简介 Word2Vec是一种词向量表示方法,是在自然语言处理领域(NLP)的神经网络模型,是一种无监督学习,包含两种模型架构:CBOW模型与Skip-Gram模型。 常用于:相似度计算、词类聚类、文本分类、句子和文档表示、搜索引擎优化、情…...
BGP基础配置实验
一、实验拓补 二、实验要求及分析 实验要求: 1,R1为AS 100区域;R2、R3、R4为AS 200区域且属于OSPF协议;R5为AS 300区域; 2,每个设备上都有环回,且通过环回可以使设备互通; 实验分…...
Maven核心与单元测试
目录 一. Maven概述二. IDEA集成Maven2.1 创建Maven项目2.2 Maven坐标2.3 导入Maven项目 三. 依赖管理四. Maven的生命周期五. 单元测试5.1 快速入门5.2 断言5.3 常见注解5.4 依赖范围 六. Maven常见问题 \quad 一. Maven概述 \quad \quad 二. IDEA集成Maven \quad 2.1 创建Mav…...
Go语言的 的继承(Inheritance)基础知识
Go语言的继承(Inheritance)基础知识 引言 在面向对象编程(OOP)中,继承是一个重要的概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。这种机制在许…...
常见的框架漏洞复现
1.Thinkphp Thinkphp5x远程命令执行及getshell 搭建靶场 cd vulhub/thinkphp/5-rce docker-compose up -d 首页 漏洞根本源于 thinkphp/library/think/Request.php 中method方法可以进行变量覆盖,通过覆盖类的核心属性filter导致rce,其攻击点较为多&…...
SLA 简介
SLA 是 Service Level Agreement(服务级别协议) 的缩写,广泛应用于企业服务管理、IT服务、云计算等领域。以下是对 SLA 的详细解释: SLA 的定义 服务级别协议(SLA)是服务提供方(Service Provid…...
基于动力学的MPC控制器设计盲点解析
文章目录 Apollo MPC控制器的设计架构误差模型和离散化预测模型推导目标函数和约束设计优化求解优化OSQP求解器参考文献 Apollo MPC控制器的设计架构 误差模型和离散化 状态变量和控制变量 1、Apollo MPC控制器中状态变量主要有如下6个 matrix_state_ Matrix::Zero(basic_stat…...
leetcode 面试经典 150 题:轮转数组
链接轮转数组题序号189题型数组解法1. 额外数组法,2. 原数组翻转法(三次翻转法)难度中等熟练度✅✅✅✅ 题目 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,…...
Elasticsearch:探索 Elastic 向量数据库的深度应用
Elasticsearch:探索 Elastic 向量数据库的深度应用 一、Elasticsearch 向量数据库简介 1. Elasticsearch 向量数据库的概念 Elasticsearch 本身是一个基于 Lucene 的搜索引擎,提供了全文搜索和分析的功能。随着技术的发展,Elasticsearch 也…...
From matplotl1b.path 1mport failed to import ImportError:numpy.core.multiarray
问题:From matplotl1b.path 1mport failed to import ImportError:numpy.core.multiarray 安装labelme的时候说numpy与环境不兼容,调不了labelme 解决1:安装虚拟环境 (这里安装labelmede 虚拟环境) #查看python版本 …...
Docker- Unable to find image “hello-world“locally
Docker- Unable to find image “hello-world“locally 文章目录 Docker- Unable to find image “hello-world“locally问题描述一. 切换镜像1. 编辑镜像源2. 切换镜像内容 二、 检查设置1、 重启dockers2、 检查配置是否生效3. Docker镜像源检查4. Dokcer执行测试 三、自定义…...
linux定时执行脚本的方法
使用 cron 服务(推荐) 简介: Cron 是一个基于时间的任务调度程序,它允许用户在指定的时间间隔自动运行命令或脚本。它使用crontab(cron table 的缩写)文件来存储定时任务的配置信息。操作步骤: 编辑用户的 crontab 文件:在终端中输入crontab -e命令。这将打开一个文本编…...
Docker 中启动 Nacos
要在 Docker 中启动 Nacos,你可以使用以下步骤来启动 Nacos 服务。我已经有了 swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nacos/nacos-server:v2.4.2.1 这个镜像。 1. 创建并启动 MySQL 容器(Nacos 依赖 MySQL) Nacos 默认使用 …...
【计算机网络】课程 实验三 跨交换机实现 VLAN 间路由
实验 3 跨交换机实现 VLAN 间路由 一、实验目的 1.理解跨交换机之间VLAN的特点。 2.掌握如何在交换机上划分基于端口的VLAN,给VLAN内添加端口。 3.利用三层交换机跨交换机实现 VLAN 间路由。 二、实验分析与设计 【背景描述…...
【74CH192D+4511减法30进制2022年7月7日】
缘由30秒定时器错误帮我看看-大数据-CSDN问答 电路图用到S1倒计时信号控制,S2置数30。从演示可以看到置数,开始,暂停,继续,等于0时清零,并且灯亮,最后断开信号输入完成所有功能。看题主有自己动…...
基于ESP32的桌面小屏幕实战[5]:PCB下单
1. 焊接调试前准备 PCB下单 点击“PCB下单” 检查一下DRC 确认无错误之后,确认下单 然后就会跳转到下面的网页 基本上保持默认选项即可。可以看到“焊盘喷镀”有3个选项。 在选择表面处理工艺时,应综合考虑产品的具体需求、环保法规以及成本等因素。例…...
孤独症儿童寄宿:温馨寄宿,陪伴成长
在社会的各个角落,有一群特殊的孩子,他们生活在自己的世界里,对外界的感知和反应与众不同。他们,就是孤独症(自闭症)儿童。孤独症,这个看似遥远的名词,却真实地影响着无数家庭&#…...
云备份项目--服务端编写
文章目录 7. 数据管理模块7.1 如何设计7.2 完整的类 8. 热点管理8.1 如何设计8.2 完整的类 9. 业务处理模块9.1 如何设计9.2 完整的类9.3 测试9.3.1 测试展示功能 完整的代码–gitee链接 7. 数据管理模块 TODO: 读写锁?普通锁? 7.1 如何设计 需要管理…...
CSS——2.书写格式一
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!--css书写中:--><!--1.css 由属性名:属性值构成--><!--style"color: red;font-size: 20px;&quo…...
【保姆级】sql注入之堆叠注入
一、堆叠注入的原理 mysql数据库sql语句的默认结束符是以";"号结尾,在执行多条sql语句时就要使用结束符隔 开,而堆叠注入其实就是通过结束符来执行多条sql语句 比如我们在mysql的命令行界面执行一条查询语句,这时语句的结尾必须加上分号结束 select * fr…...
大模型推理加速调研(框架、方法)
大模型推理加速调研(框架、方法) 大模型推理框架调研总结推理框架TensorRT-LLMllama.cppmnn-llmfastllmmlc-llm 环境搭建&部署推理环境llama.cppfastllmmnn-llmvllm vllm_openai_completions.pylmdeployTensorRT-LLM 大模型加速技术总结模型压缩量化…...
js -音频变音(听不出说话的人是谁)
学习参考来源: https://zhuanlan.zhihu.com/p/634848804 https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Audio_API 实际效果: http://www.qingkong.zone/laboratory?typeaudio-confusion 前言 本文内容可结合上面学习参考来源,结合…...
3D Object Detection和6D Pose Estimation有什么异同?
知乎讨论: (99 封私信 / 95 条消息) 3D Object Detection和6D Pose Estimation有什么异同? - 知乎 GPT回答: 3D Object Detection 和 6D Pose Estimation 都是计算机视觉领域的重要任务,广泛应用于机器人、自动驾驶和增强现实…...
NRF24L01模块STM32通信-通信初始化
目录 前言 一、IO口初始化 二、模拟SPI的基础代码 1.一些代码的宏定义 2.起始信号 3.CS,SCK,MOSI操作 4.MISO,IRQ操作 三.中间层代码 1.字节的输入和读取 2.写操作 3.读操作 四.应用层代码 1.24L01的检测 2.在main函数进行简单验证 3.24L01宏定义的代码 总结 前…...
vue Element Ui Upload 上传 点击一个按钮,选择多个文件后直接上传,使用防抖解决多次上传的问题。
问题: 在使用Element Ui Upload 上传文件时,选择多个文件上传时,on-change事件会一个一个返回上传的文件,导致前端不知道什么时候可以拿到全部上传的文件,再一起调后台接口。 解决方法: 上传文件后&…...
算法题(26):最后一个单词的长度
审题: 需要我们返回最后一个单词的长度,并且字符串内只有空格来分割单词 思路: 找到最后一个单词的方法就是从后开始遍历找到第一个非空格的元素,称为pos(第一个出现单词的位置) 然后再从pos位置开始反向寻…...
Ungoogled Chromium127 编译指南 MacOS 篇(二)- 项目要求
1. 引言 在开始编译 Ungoogled Chromium 之前,我们需要确保系统满足所有必要的硬件和软件要求。由于浏览器编译是一个资源密集型的任务,合适的硬件配置和完整的软件环境至关重要。本文将详细介绍编译 Ungoogled Chromium 所需的各项要求。 2. 硬件要求…...
nginx配置-其他配置
nginx配置-其他配置 server_tokens server_tokens server_token on/off 是 Nginx 配置文件中的一个指令,用于控制 Nginx 服务器在响应 HTTP 请求时是否显示服务器的版本信息。 默认情况下,Nginx 会在响应头中包含服务器的版本号,例如 Serve…...
Springboot使用RabbitMQ实现关闭超时订单的一个简单示例
1.maven中引入rabbitmq的依赖: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> 2.application.yml中进行rabbitmq相关配置: # rabbit…...
QT-------------对话框和多窗口程序设计
一、标准对话框 1. QFileDialog 对话框 功能:提供文件选择对话框,方便用户选择文件或目录。 #include <QApplication> #include <QFileDialog> #include <QMessageBox>int main(int argc, char *argv[]) {QApplication app(argc, a…...
信息科技伦理与道德2:研究方法
1 问题描述 1.1 讨论? 请挑一项信息技术,谈一谈为什么认为他是道德的/不道德的,或者根据使用场景才能判断是否道德。判断的依据是什么(自身的道德准则)?为什么你觉得你的道德准则是合理的,其他…...
Linux(Centos 7.6)命令详解:ls
1.命令作用 列出目录内容(list directory contents) 2.命令语法 Usage: ls [OPTION]... [FILE]... 3.参数详解 OPTION: -l,long list 使用长列表格式-a,all 不忽略.开头的条目(打印所有条目,包括.开头的隐藏条目)…...
深入理解 WebSocket:实时通信的基础
随着互联网技术的不断发展,实时通信逐渐成为现代应用程序中不可或缺的一部分。无论是即时通讯应用、在线游戏、社交平台还是股票交易系统,都需要能够在客户端与服务器之间快速、高效地传输数据。传统的 HTTP 协议虽然简单且广泛应用,但它并不…...
【网络协议】开放式最短路径优先协议OSPF详解(一)
OSPF 是为取代 RIP 而开发的一种无类别的链路状态路由协议,它通过使用区域划分以实现更好的可扩展性。 文章目录 链路状态路由协议OSPF 的工作原理OSPF 数据包类型Dijkstra算法、管理距离与度量值OSPF的管理距离OSPF的度量值 链路状态路由协议的优势拓扑结构路由器O…...
2000-2020年各省地区生产总值数据/各省gdp数据
2000-2020年各省地区生产总值数据/各省gdp数据 1、时间:2000-2020年 2、来源:国家统计局 3、指标:行政区划代码、地区、年份、地区生产总值 4、范围:31省 指标解释:地区生产总值(Regional GDP…...
消息转换器在SpringMVC执行流程
消息转换器的工作机制 内部工作流程 读取(Read)操作 当接收到一个包含实体内容的HTTP请求时,Spring MVC会根据请求头中的Content-Type属性来确定应该使用哪个HttpMessageConverter来解析请求体。DispatcherServlet会遍历已注册的HttpMessage…...
7. C语言 运算符详解
本章目录: 前言C语言运算符的分类1. 算术运算符2. 关系运算符3. 逻辑运算符4. 位运算符5. 赋值运算符6. 杂项运算符 运算符优先级 前言 在C语言中,运算符是程序中执行各种操作的核心工具,涉及算术运算、逻辑判断、位操作等多个方面。掌握C语言中的各种运…...