2023 年 408 大题解析

讲解视频推荐:
【BOK408真题讲解-2023】

一、数据结构

1. 算法题(图的邻接矩阵)13’

已知有向图 G 采用邻接矩阵存储,类型定义如下:

typedef struct{		//图的类型定义int num Vertices, numEdges;		//图的顶点数和有向边数char VerticesList[MAXY];		//顶点表,MAXY 为己定义常量int Edge[MAXY][MAXY];			//邻接矩阵
} MGraph;

将图中出度大于入度的顶点称为 K 顶点。例如在下图中, 顶点 a 和 b 为 K 顶点。

请设计算法:int printVertices(MGraph G) ,对给定的任意非空有向图 G , 输出 G 中所有的 K 顶点, 并返回 K 顶点的个数。要求:
(1)给出算法的基本设计思想。
(2)根据设计思想, 采用 C 或 C++ 语言描述算法,关键之处给出注释。

【解析】

(1)采用邻接矩阵表示有向图时,一行中 1 的个数为该行对应顶点的出度,一列中 1 的个数为该列对应顶点的入度。使用一个初值为零的计数器记录 K 顶点数。对图 G 的每个顶点,根据邻接矩阵计算其出度 outdegree 和入度 indegree 。若 outdegree > indegree ,则输出该顶点且计数器 + 1 ,最后返回计数器的值。

(2)用 C 语言描述的算法:

int printVertices(MGraph G){	//采用邻接矩阵存储,输出 K 顶点,返回个数int outdegree, indegree, k, m, count = 0;for(k = 0; k < G.Vertices; k++){outdegree = indegree = 0;for(m = 0; m < G.Vertices; m++){outdegree += G.Edge[k][m];}		//计算出度for(m = 0; m < G.Vertices; m++){indegree += G.Edge[m][k];}		//计算入度if(outdegree > indegree){printf("%c", G.VerticesList[k]);count++;}}return count;	//返回 K 顶点个数
}

图的四种存储方式(邻接矩阵、邻接表、十字链表、邻接多重表)

2. 置换-选择排序(生成初始归并段)10’

对含有 n ( n > 0 ) 个记录的文件进行外部排序,采用置换-选择排序生成初始归并段时需要使用一个工作区, 工作区中能保存 m 个记录。请回答下列问题。

(1)若文件中含有 19 个记录, 其关键字依次是 51, 94, 37, 92, 14, 63, 15, 99, 48, 56, 23, 60, 31, 17, 43, 8, 90, 166, 100, 则当 m = 4 时,可生成几个初始归并段?各是什么?
(2)对任意的 m ( n >> m > 0 ) , 生成的第一个初始归并段的长度最大值和最小值分别是多少?

【解析】

(1)当 m = 4 时,可生成 3 个初始归并段,分别为 {37, 51, 63, 92, 94, 99} ,{14, 15, 23, 31, 48, 56, 60, 90, 166} ,{8, 17, 43, 100}

排序过程如下表所示:

输出文件 FO工作区 WA输入文件 FI
————51, 94, 37, 92, 14, 63, 15, 99, 48, 56, 23, 60, 31, 17, 43, 8, 90, 166, 100
——51, 94, 37, 9214, 63, 15, 99, 48, 56, 23, 60, 31, 17, 43, 8, 90, 166, 100
3751, 94, 14, 9263, 15, 99, 48, 56, 23, 60, 31, 17, 43, 8, 90, 166, 100
37, 5163, 94, 14, 9215, 99, 48, 56, 23, 60, 31, 17, 43, 8, 90, 166, 100
37, 51, 6315, 94, 14, 9299, 48, 56, 23, 60, 31, 17, 43, 8, 90, 166, 100
37, 51, 63, 9215, 94, 14, 9948, 56, 23, 60, 31, 17, 43, 8, 90, 166, 100
37, 51, 63, 92, 9415, 48, 14, 9956, 23, 60, 31, 17, 43, 8, 90, 166, 100
37, 51, 63, 92, 94, 9915, 48, 14, 5623, 60, 31, 17, 43, 8, 90, 166, 100
37, 51, 63, 92, 94, 99#15, 48, 14, 5623, 60, 31, 17, 43, 8, 90, 166, 100
1415, 48, 23, 5660, 31, 17, 43, 8, 90, 166, 100
14, 1560, 48, 23, 5631, 17, 43, 8, 90, 166, 100
14, 15, 2360, 48, 31, 5617, 43, 8, 90, 166, 100
14, 15, 23, 3160, 48, 17, 5643, 8, 90, 166, 100
14, 15, 23, 31, 4860, 43, 17, 568, 90, 166, 100
14, 15, 23, 31, 48, 5660, 43, 17, 890, 166, 100
14, 15, 23, 31, 48, 56, 6090, 43, 17, 8166, 100
14, 15, 23, 31, 48, 56, 60, 90166, 43, 17, 8100
14, 15, 23, 31, 48, 56, 60, 90, 166100, 43, 17, 8——
14, 15, 23, 31, 48, 56, 60, 90, 166#100, 43, 17, 8——
8100, 43, 17——
8, 17100, 43——
8, 17, 43100——
8, 17, 43, 100————
8, 17, 43, 100#————

(2)对任意的 m ,生成的第一个初始归并段的长度最大值为 n ,最小值为 m

外部排序(败者树、置换-选择排序、最佳归并树)

二、计算机组成原理

1. 虚拟存储器 14’

已知计算机 M 字长为 32 位,按字节编址,采用请求调页策略的虚拟存储管理方式,虚拟地址为 32 位, 页大小为 4KB ; 数据 Cache 采用 4 路组相联映射方式, 数据区大小为 8KB ,主存块大小为 32B 。现有 C 语言程序段如下:

int a[24][64];for (i = 0; i < 24; i++){for (j = 0; j < 64; j++) {a[i][j] = 10;}
}

已知二维数组 a 按行优先存放,在虚拟地址空间中分配的起始地址为 0042 2000H , sizeof(int) = 4 ,假定在 M 上执行上述程序段之前数组 a 不在主存, 且在该程序段执行过程中不会发生页面置换。请回答下列问题。

(1)数组 a 分布在几个页面中?对于数组 a 的访问, 会发生几次缺页异常?页故障地址各是什么?
(2)不考虑变量 i 和 j ,该程序段的数据访问是否具有时间局部性?为什么?
(3)计算机 M 的虚拟地址(A31 ~ A0)中哪几位用作块内地址? 哪几位用作 Cache 组号?a[1][0] 的虚拟地址是多少?其所在主存块对应的 Cache 组号是多少?
(4)数组 a 占用多少主存块?假设上述程序段执行过程中数组 a 的访问不会和其他数据发生 Cache 访问冲突, 则数组 a 的 Cache 命中率是多少? 若将循环中 i 和 j 的次序按如下方式调换:

for (j = 0; j < 64; j++){for (i = 0; i < 24; i++) {a[i][j] = 10;}
}

则数组 a 的 Cache 命中率又是多少?

【解析】

(1)

  • 数组 a 有 24 × 64 × 4B = 6KB ,由于页大小为 4KB,因此数组 a 分布在 2 个相邻的页面中。

  • 由于数组 a 不在主存,因此会发生 2 次缺页异常。页故障地址为 0042 2000H0042 3000H

(2)该程序段的数据访问没有时间局部性,因为每个数组元素仅被访问 1 次。

(3)

  • 主存块大小为 32B = 25B ,故计算机 M 的虚拟地址中 A4 ~ A0(5 位)用作块内地址。

  • 数据区大小为 8KB ,故 Cache 数据区共有 8KB / 32B = 28 = 256 行;
    数据 Cache 采用 4 路组相联映射方式,故 Cache 数据区共有 28 / 4 = 26 = 64 组;
    故计算机 M 的虚拟地址中 A10 ~ A5(6 位)用作 Cache 组号。

  • 虚拟地址空间的起始地址为 0042 2000H ,得到 a[1][0] 的虚拟地址是 0042 2000H + 1 × 64 × 4 + 0 × 4 = 0042 2100H 。其所在主存块对应的 Cache 组号是 0042 2100H(A10 ~ A5)= 001000 = 8

假设主存地址为 32 位,则有

tag(21 位)Cache 组号(6 位)块内地址(5 位)

(4)

  • 数组 a 占用 6KB / 32B = 192 个主存块。

  • 主存块大小为 32B ,每个主存块可以存放 8 个元数组素,当循环中 i 和 j 的次序不调换时,数组 a 的 Cache 命中率是 7 / 8 = 87.5%

  • 数组 a 占用 192 个主存块,Cache 数据区共有 64 组,因此每个 Cache 组中只有 192 / 64 = 3 个 Cache 行存放数组 a 中的数据,而每个 Cache 组有 4 行,因此不会发生替换。当循环中 i 和 j 的次序调换时,数组 a 的 Cache 命中率是 7 / 8 = 87.5%

虚拟内存管理

2. 程序的机器级代码表示 9’

上题中的 C 程序段在计算机 M 上的部分机器级代码如下, 每个机器级代码行中依次包含指令序号、虚拟地址、机器指令和汇编指令。

请回答下列问题。
(1)第 20 条指令的虚拟地址是多少?
(2)已知第 2 条 jmp 和第 7 条 jge 都是跳转指令, 其操作码分别是 EBH 和 7DH ,跳转目标地址分别为 0040 1084H 、0040 10BCH ,这两条指令都采用什么寻址方式?给出第 2 条指令 jmp 的跳转目标地址计算过程。
(3)已知第 19 条 mov 指令的功能为 “a[i][j] ← 10” ,其中 ecx 和 edx 为寄存器名,0042 2000H是数组 a 的首地址, 指令中源操作数采用什么寻址方式?已知 edx 中存放的是变量 j,ecx 中存放的是什么?根据该指令的机器码判断计算机 M 采用的是大端还是小端方式。
(4)第一次执行第 19 条指令时, 取指令过程中是否会发生缺页异常?为什么?

【解析】

(1)由于第 19 条指令的虚拟地址是 0040 10AE ,且第 19 条指令占 11 个字节,因此第 20 条指令的虚拟地址是 0040 10B9H

(2)这两条指令都采用相对寻址方式。

  • 第 2 条指令 jmp 的跳转目标地址计算过程:PC + “1” + “偏移量” = 0040 1079H + 2H + 09H = 0040 1084H

  • 第 7 条指令 jge 的跳转目标地址计算过程:PC + “1” + “偏移量” = 0040 1088H + 2H + 32H = 0040 10BCH 。

(3)

  • 指令中源操作数采用立即数寻址方式。

  • ecx 中存放的是 i × 64 × 4 = i × 256

  • 计算机 M 采用的是小端方式

(4)第一次执行第 19 条指令时, 取指令过程中不会发生缺页异常。因为页面大小为 4KB = 212B ,因此虚拟地址高 20 位代表虚页号,低 12 位代表页内地址。由于上述指令的虚页号均为 00401H ,得出以上所有指令都在同一页面上,所以执行第 19 条指令时,必然不会发生缺页。

指令系统 II

三、操作系统

1. 同步与互斥 7’

现要求学生使用 swap 指令和布尔型变量 lock 实现临界区互斥。lock 为线程间共享的变量,lock 的值为 TRUE 时线程不能进入临界区,为 FALSE 时线程能够进入临界区。某同学编写的实现临界区互斥的伪代码如下图 (a) 所示。

请回答下列问题。
(1)上图 (a) 的伪代码中哪些语句存在错误?将其改为正确的语句(不增加语句的条数) 。
(2)上图 (b) 给出了交换两个变量值的函数 newSwap() 的代码,是否可以用函数调用语句 “newSwap(&key, &lock)” 代替指令 “swap key, lock” 以实现临界区互斥?为什么?

【解析】

(1)① 将 if(key == TRUE) 改为 while(key == TRUE) ;② 将 lock = TRUE 改为 lock = FALSE

由题意可知 lock 是全局变量,key 是局部变量。当线程 1 运行这段代码时,key1 = TRUE ,交换后,key1 = FALSE 、lock = TRUE ,然后线程 1 进入临界区;与此同时,若线程 2 开始运行这段代码,key2 = TRUE ,交换后,key2 = FALSE 、lock = TRUE ,然后线程 2 进入临界区,无法达到互斥的要求。

(2)不可以,函数调用语句 “newSwap(&key, &lock)” 不具备原子性,可能会导致多个并发执行的进程同时进入临界区。

进程与线程 III(同步与互斥)

2. I/O 管理概述 8’

进程 P 通过执行系统调用从键盘接收一个字符的输入,已知此过程中与进程 P 相关的操作包括: ① 将进程 P 插入就绪队列;② 将进程 P 插入阻塞队列;③ 将字符从键盘控制器读入系统缓冲区;④ 启动键盘中断处理程序;⑤ 进程 P 从系统调用返回;⑥ 用户在键盘上输入字符。以上编号 ① ~ ⑥ 仅用于标记操作,与操作的先后顺序无关。请回答下列问题。

(1)按照正确的操作顺序,操作 ① 的前一个和后一个操作分别是上述操作中的哪一个?操作 ⑥ 的后一个操作是上述操作中的哪一个?
(2)在上述哪个操作之后 CPU 一定从进程 P 切换到其他进程?在上述哪个操作之后 CPU 调度程序才能选中进程 P 执行?
(3)完成上述哪个操作的代码属于键盘驱动程序?
(4)键盘中断处理程序执行时,进程 P 处于什么状态? CPU 处于内核态还是用户态?

【解析】

(1)正确的操作顺序为 ② → ⑥ → ④ → ③ → ① → ⑤ ,即 将进程 P 插入阻塞队列 → 用户在键盘上输入字符 → 启动键盘中断处理程序 → 将字符从键盘控制器读入系统缓冲区 → 将进程 P 插入就绪队列 → 进程 P 从系统调用返回。

操作 ① 的前一个操作是 ,后一个操作是 ,操作 ⑥ 的后一个操作是

(2)在操作 (将进程 P 插入阻塞队列)之后 CPU 一定从进程 P 切换到其他进程;在操作 (将进程 P 插入就绪队列)之后 CPU 调度程序才能选中进程 P 执行。

(3)上述操作 的代码属于键盘驱动程序。

(4)键盘中断处理程序执行时,进程 P 处于阻塞态,CPU 处于内核态

输入/输出管理 I(概述)

四、计算机网络

文件传输协议(FTP)9’

某网络拓扑如下图所示,主机 H 登录 FTP 服务器后,向服务器上传一个大小为 18000B 的文件 F 。假设 H 为传输 F 建立数据连接时,选择的初始序号为 100 ,MSS = 1000B ,拥塞控制初始阈值为 4MSS,RTT = 10ms ,忽略 TCP 段的传输时延; 在 F 的传输过程中,H 均以 MSS 段向服务器发送数据,且未发生差错、丢包和乱序现象。

请回答下列问题。
(1)FTP 的控制连接是持久的还是非持久的? FTP 的数据连接是持久的还是非持久的? H 登录 FTP 服务器时, 建立的 TCP 连接是控制连接还是数据连接?
(2)H 通过数据连接发送 F 时,F 的第 1 个字节的序号是多少?在断开数据连接过程中, FTP 服务器发送的第二次挥手 ACK 段的确认序号是多少?
(3)H 通过数据连接发送 F 的过程中,当 H 收到确认序号为 2101 的确认段时,H 的拥塞窗口调整为多少?收到确认序号为 7101 的确认段时,H 的拥塞窗口调整为多少?
(4)H 从请求建立数据连接开始,到确认 F 已被服务器全部接收为止, 至少需要多长时间? 期间应用层数据平均发送速率是多少?

【解析】

(1)FTP 的控制连接是持久的;FTP 的数据连接是非持久的;H 登录 FTP 服务器时, 建立的 TCP 连接是控制连接。

在 FTP 会话期间,控制连接一直处于保持状态,是持久的。每次需要传输文件时,FTP 客户机和服务器之间会建立一个临时的数据连接,用于传输文件数据,是非持久的。控制连接用于传输命令和控制信息,登陆操作涉及身份验证、发送命令等控制信息,因此使用控制连接。

(2)H 通过数据连接发送 F 时,F 的第 1 个字节的序号是 101 ,在断开数据连接过程中, FTP 服务器发送的第二次挥手 ACK 段的确认序号是 18102

建立连接时,FTP 客户机发送的第一次握手 SYN 段要消耗一个序号,选择的初始序号为 100 ,因此发送文件 F 时,第 1 个字节的序号是 101 ,文件 F 共有 18000 字节,需占用 18000 个序号,释放连接时,FTP 客户机发送的第一次挥手 FIN 段也要消耗一个序号,故该 FIN 段的序号为 18101 ,因此 TCP 服务器发送的第二次挥手 ACK 段的确认序号是 18102 。

(3)H 通过数据连接发送 F 的过程中,当 H 收到确认序号为 2101 的确认段时,H 的拥塞窗口调整为 3MSS ;收到确认序号为 7101 的确认段时,H 的拥塞窗口调整为 5MSS

拥塞控制初始阈值为 4MSS :

N 个传输轮次后初始时N = 1N = 2N = 3
拥塞窗口大小1MSS2MSS4MSS5MSS
  • 第 1 轮时,当 H 收到确认序号为 1101 的确认段时,H 的拥塞窗口从 1MSS 调整为 2MSS 。

  • 第 2 轮时,当 H 收到确认序号为 2101 的确认段时,H 的拥塞窗口从 2MSS 调整为 3MSS ;当 H 收到确认序号为 3101 的确认段时,H 的拥塞窗口从 3MSS 调整为 4MSS 。

  • 第 3 轮时,当 H 收到确认序号为 4101、5101、6101、7101 的确认段后,H 的拥塞窗口从 4MSS 调整为 5MSS 。

(4)H 从请求建立数据连接开始,到确认 F 已被服务器全部接收为止, 至少需要 6 × RTT = 60ms ;期间应用层数据平均发送速率是 18000B × 8 / 60ms = 2.4Mbps

文件 F 大小 18000B = 18MSS ,则发送完 F 需要 5 个 RTT ,此外还需要 1 个额外的 RTT 用来建立 TCP 连接。

kk = 1k = 2k = 3k = 4k = 5
第 k 轮最大数据传输量1MSS2MSS4MSS5MSS6MSS

应用层 II(文件传输协议FTP)【★★】

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

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

相关文章

【R语言】基础知识

一、对象与变量 R语言中的所有事物都是对象&#xff0c;如向量、列表、函数&#xff0c;变量、甚至环境等。它的所有代码都是基于对象object的操作&#xff0c;变量只是调用对象的手段。 1、对象 在R语言中&#xff0c;对计算机内存的访问是通过对象实现的。 # 字符型向量 …

【SpringBug】lombok插件中@Data不能生成get和set方法

一&#xff1a;问题引入 可以看到我们在类UserInfo上写了Data注解&#xff0c;但是在测试文件中生成的反编译target文件Us二Info中没有get和set方法 二&#xff1a;解决方法 1&#xff1a;Spring升级问题&#xff08;解决了我的问题&#xff09; 原因是Spring官方进行了升级…

Java版-图论-最短路-Floyd算法

实现描述 网络延迟时间示例 根据上面提示&#xff0c;可以计算出&#xff0c;最大有100个点&#xff0c;最大耗时为100*wi,即最大的耗时为10000&#xff0c;任何耗时计算出来超过这个值可以理解为不可达了&#xff1b;从而得出实现代码里面的&#xff1a; int maxTime 10005…

STM32 CubeMx HAL库 独立看门狗IWDG配置使用

看门狗这里我就不多介绍了&#xff0c;能搜到这篇文章说明你了解 总之就是一个单片机重启程序&#xff0c;设定好超时时间&#xff0c;在超时时间内没有喂狗&#xff0c;单片机就会复位 主要应用在单片机异常重启方面&#xff0c;比如程序跑飞&#xff08;注意程序跑飞时你就…

uni-app实现小程序、H5图片轮播预览、双指缩放、双击放大、单击还原、滑动切换功能

前言 这次的标题有点长&#xff0c;主要是想要表述的功能点有点多&#xff1b; 简单做一下需求描述 产品要求在商品详情页的头部轮播图部分&#xff0c;可以单击预览大图&#xff0c;同时在预览界面可以双指放大缩小图片并且可以移动查看图片&#xff0c;双击放大&#xff0…

3D 生成重建035-DiffRF直接生成nerf

3D 生成重建035-DiffRF直接生成nerf 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 本文提出了一种基于渲染引导的三维辐射场扩散新方法DiffRF&#xff0c;用于高质量的三维辐射场合成。现有的方法通常难以生成具有细致纹理和几何细节的三维模型&#xff0c;并且容易出…

中国计算机学会计算机视觉专委会携手合合信息举办企业交流活动,为AI安全治理打开“新思路”

近期&#xff0c;《咬文嚼字》杂志发布了2024年度十大流行语&#xff0c;“智能向善”位列其中&#xff0c;过去一年时间里&#xff0c;深度伪造、AI诈骗等话题屡次登上热搜&#xff0c;AI技术“野蛮生长”引发公众担忧。今年9月&#xff0c;全国网络安全标准化技术委员会发布了…

详解多租户架构下的资源隔离模式

文章目录 0.简介1.多租户概念1.1 基本概念1.2 单租户 vs 多租户 2.实现方案2.1 独立数据库方案2.1.1 优点2.1.2 缺点2.1.3 应用场景 2.2 共享数据库&#xff0c;独立 Schema2.2.1 优点2.2.2 缺点2.2.3 应用场景 2.3 共享数据库、共享Schema、共享表2.3.1 优点2.3.2 缺点2.3.3 应…

SMMU软件指南SMMU编程之寄存器

安全之安全(security)博客目录导读 本博客介绍了SMMUv3的编程接口&#xff1a; • SMMU寄存器 • 流表&#xff08;Stream table&#xff09; • CD&#xff08;Context Descriptor&#xff09; • 事件队列&#xff08;Event queue&#xff09; • 命令队列&#xff08;…

分布式 窗口算法 总结

前言 相关系列 《分布式 & 目录》《分布式 & 窗口算法 & 总结》《分布式 & 窗口算法 & 问题》 参考文献 《【算法】令牌桶算法》 固定窗口算法 简介 固定窗口算法是最简单的流量控制算法。固定窗口算法的核心原理是将系统的生命周期划分为一个个…

SEC_ASA 第二天作业

拓扑 按照拓扑图配置 NTP&#xff0c;Server端为 Outside路由器&#xff0c;Client端为 ASA&#xff0c;两个设备的 NTP传输使用MD5做校验。&#xff08;安全 V4 LAB考点&#xff09; 提示&#xff1a;Outside路由器作为 Server端要配置好正确的时间和时区&#xff0c;ASA防…

【电力负荷预测实例】采用新英格兰2024年最新电力负荷数据的XGBoost电力负荷预测模型

与小编上篇文章介绍的基于BPNN神经网络的电力负荷预测相比较&#xff0c;两种模型的负荷预测方法各有优势&#xff0c;神经网络能够自动提取特征并处理非线性关系&#xff0c;而XGBoost则具有预测精度高、运行速率快和可解释性强的特点。在实际应用中&#xff0c;可以根据具体需…

数据库数据恢复—ORACLE常见故障有哪些?如何恢复数据?

Oracle数据库常见故障表现&#xff1a; 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。 Oracle数据库数据恢复方案&#xff1a; 1、检测存放数据库的服务器/存储设备是否存…

ArcGIS MultiPatch数据转换Obj数据

文章目录 ArcGIS MultiPatch数据转换Obj数据1 效果2 技术路线2.1 Multipatch To Collada2.2 Collada To Obj3 代码实现4 附录4.1 环境4.2 一些坑ArcGIS MultiPatch数据转换Obj数据 1 效果 2 技术路线 MultiPatch --MultipatchToCollada–> Collada --Assimp–> Obj 2.…

简单vue3前端打包部署到服务器,动态配置http请求头后端ip方法教程

vue3若依框架前端打包部署到服务器&#xff0c;需要部署到多个服务器上&#xff0c;每次打包会很麻烦&#xff0c;今天教大家一个动态配置请求头api的方法&#xff0c;部署后能动态获取(修改)对应服务器的请求ip 介绍两种方法&#xff0c;如有需要可以直接尝试步骤一&#xff…

vue3-count-to实现数字动态增长效果

vue3-count-to 是一个用于 Vue 3的数字计数动画库&#xff0c;常用于在页面上实现数字的动态增长效果&#xff0c;类似于从某个起始值渐变到目标值的效果。它可以用来显示各种数字、统计数据或展示动画效果。 1 安装 vue3-count-to 首先&#xff0c;你需要安装 vue3-count-to …

android AIDL ipc binder转换

一. 概述 众所周知AIDL并不是所有的数据类型都可以传输。 可以传输的类型包括&#xff1a; 1.原生类型 2.String 3. CharSequence 4. List 5.Map 6. Binder 7. Parcelable 容器类 parcelable传输的时候会分解成成员&#xff0c;数组item的方式&#xff0c;传输完成后再进行…

CityEngine实践——常用cga文件解析系列(2)

上回书说到了&#xff1a; 3、RULES/COMPONENTS/MASSING/SUBURBAN_BLOCK DETACHED_HOUSES.CGA ROWHOUSES.CGA SEMI_DETACHED_HOUSES.CGA 4、RULES/COMPONENTS/MASSING/URBAN_BLOCK MONOBLOCK.CGA PERIMETER_8_SHAPE.CGA PERIMETER_MULTIPART.CGA 这个cga挺有意思&#xff0c…

【安全研究】某黑产网站后台滲透与逆向分析

文章目录 x01. 前言x02. 分析 【&#x1f3e0;作者主页】&#xff1a;吴秋霖 【&#x1f4bc;作者介绍】&#xff1a;擅长爬虫与JS加密逆向分析&#xff01;Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与…

ESP32外设学习部分--SPI篇

SPI学习 前言 我个人以为开始学习一个新的单片机最好的方法就是先把他各个外设给跑一遍&#xff0c;整体了解一下他的功能&#xff0c;由此记录一下我学习ESP32外设的过程&#xff0c;防止以后忘记。 SPI 配置步骤 SPI总线初始化 spi_bus_config_t buscfg {.miso_io_num …