自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(401)
  • 收藏
  • 关注

原创 动态规划--图论中使实用场景概述

动态规划(Dynamic Programming,简称DP)是一种用于解决具有重叠子问题和最优子结构特性的问题的优化方法。动态规划通过将原问题分解为相互重叠的子问题,并将子问题的解存储在一个表格中,以便在后续计算中重复使用。这种方法可以显著减少计算复杂度,特别是对于具有指数级别复杂度的递归问题。以下是一个使用动态规划解决的经典问题:0-1背包问题。问题描述:给定一组物品,每个物品有一定的价值和重量。现在有一个背包,它有一定的承重能力。我们的目标是在不超过背包承重的前提下,将物品放入背包以获得最大的价值。

2024-05-23 14:03:59 534

原创 RISC-V 汇编语言--bbci 指令

指令是 RISC-V 汇编语言中的一个条件分支指令,全称为 "Branch if Bit is Clear and Increment"。该指令会检查指定寄存器中的某一位是否被清除(即为0),如果是,则跳转到指定的标签或地址执行代码。在执行跳转之前,它还会将该位设置为1(即对该位进行“置位”操作)。

2024-05-23 11:42:28 43

原创 算法--滑窗算法

滑窗算法是一种常用的双指针算法,主要应用于字符串和数组等数据结构中,用于解决子串或子数组问题,如字符串匹配、最长子串、最小覆盖子串等。下面将详细介绍滑窗算法的基本思想、应用场景、实现方法,并给出一个具体实例。

2024-05-22 23:45:04 132

原创 算法--动态规划(Dynamic Programming)

K[i][w]`表示在前`i`个物品中,背包容量为`w`时能够获得的最大价值。动态规划(Dynamic Programming,简称DP)是一种用于解决具有重叠子问题和最优子结构特性的问题的优化方法。动态规划通过将原问题分解为相互重叠的子问题,并将子问题的解存储在一个表格中,以便在后续计算中重复使用。需要注意的是,动态规划适用于具有重叠子问题和最优子结构特性的问题。现在有一个背包,它有一定的承重能力。通过将问题分解为子问题并存储子问题的解,我们可以显著减少计算复杂度,从而在有限的时间内找到最优解。

2024-05-22 23:37:07 111

原创 算法--动态规划

动态规划(Dynamic Programming,DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。动态规划有三个重要的概念:1. 最优子结构:大问题的最优解可以由小问题的最优解推出。2. 边界:问题的规模足够小的时候,可以直接得出答案。3. 状态转移方程:描述问题和子问题之间关系的方程。

2024-05-22 23:35:40 222

原创 算法--贪心算法

我们定义了一个二维数组`K`来存储子问题的解。`K[i][w]`表示在前`i`个物品中,背包容量为`w`时能够获得的最大价值。我们根据状态转移方程来填充`K`数组,并在填充过程中利用之前计算的子问题解。动态规划通过将原问题分解为相互重叠的子问题,并将子问题的解存储在一个表格中,以便在后续计算中重复使用。现在有一个背包,它有一定的承重能力。我们的目标是在不超过背包承重的前提下,将物品放入背包以获得最大的价值。通过将问题分解为子问题并存储子问题的解,我们可以显著减少计算复杂度,从而在有限的时间内找到最优解。

2024-05-22 23:31:59 58

原创 SPI(Serial Peripheral Interface)通信--偏移量的概念

在SPI(Serial Peripheral Interface)通信中,偏移量的概念可能涉及多个方面,包括数据传输的起始位置、时序对齐或者数据处理中的索引偏移等。由于“偏移量”在SPI通信中不是一个标准的术语,我会基于一般性的理解来解释偏移量为0和偏移量不为0在SPI通信中可能的不同含义及其影响。

2024-05-22 22:51:23 104

原创 SPI和PCIe差异概述

**用途**: 主要用于在嵌入式系统和微控制器中进行简单、短距离、低速的通信,常用于连接传感器、EEPROM、实时时钟、显示器等外设。- **电气特性**: 使用差分信号,支持多通道(lane)并行传输,每个lane提供更高的带宽,最多可达164条lane。- **用途**: 主要用于连接计算机内部的高速外设,如显卡、固态硬盘、网络卡、声卡等,以及高性能计算和数据中心应用。- **结构**: PCI Express是一个高速、点对点、全双工、串行通信协议,每个链接都是独立的,支持热插拔。

2024-05-22 22:41:29 44

原创 XSPI--物理层(Phy,即PHY)寄存器概述

它是SPI(Serial Peripheral Interface)协议的一个扩展或增强版本,相较于传统SPI,XSPI提供了更高的数据传输速率、更丰富的功能集以及更好的电源管理能力。PHY层是通信系统的硬件部分,负责信号的物理传输和接收,即负责将数字信号转换为可以在物理媒介上传输的模拟信号,以及将接收到的模拟信号还原为数字信号。通过操作这些PHY寄存器,系统设计者或软件开发者能够精细调整XSPI接口的性能,以满足特定应用的需求,比如提高数据吞吐量、优化功耗、增强信号稳定性或兼容不同供应商的设备。

2024-05-22 22:40:30 130

原创 XSPI--设备偏移量概述

需要注意的是,由于XSPI可能是一个特定上下文或系统中的术语,并没有广泛的标准定义,因此上述解释可能需要根据具体的应用场景或系统架构进行适当调整。同时,由于我无法直接访问外部资源或特定系统的详细信息,上述解释主要基于通用的概念和原理。在实际应用中,应参考相关系统的具体文档或技术资料以获取准确的信息。XSPI设备的发现偏移量是指在XSPI(可能是某种串行外设接口)通信或配置过程中,用于确定特定设备或数据位置的一个相对值。这个偏移量通常用于在预设的参考点或数据区域内寻找目标设备或数据。

2024-05-22 22:25:02 92

原创 Xtensa架构中的指令--sub

这是一个基本的算术指令,用于执行减法运算。在Xtensa架构中,还有其他类似的指令,如`add`(加法)、`mul`(乘法)和`div`(除法)等。`sub`(减法)是一种Xtensa架构中的指令,用于将两个寄存器中的值相减,并将结果存储到目标寄存器中。- `rD`:目标寄存器,用于存储相减后的结果。1. 从寄存器`rA`中读取值(被减数)。2. 从寄存器`rB`中读取值(减数)。- `rA`:源寄存器1,包含被减数。- `rB`:源寄存器2,包含减数。4. 将结果存储到寄存器`rD`中。

2024-05-22 16:58:43 130

原创 汇编指令--ret

ret是汇编语言中的一个指令,它代表“return”的缩写。这个指令主要用于从子程序或函数调用中返回,它将控制权交还给调用者。下面是对ret。

2024-05-22 15:53:06 319

原创 汇编语言中的条件跳转指令--bnei / beqi

bnei和beqi是汇编语言中的条件跳转指令,常用于基于某个条件的比较结果来决定程序的执行流程。下面我将详细解释这两个指令,并给出具体的例子。1 bnei。

2024-05-22 15:10:56 371

原创 汇编语言--moveqz 指令概述

寄存器的内容将保持不变(或者根据具体实现可能被清零)。这种指令在处理条件逻辑时非常有用,因为它允许在单个指令中完成条件判断和值赋值,从而提高了代码的效率。指令是一个条件移动指令,它通常在某些处理器架构的汇编语言中出现,比如 RISC-V。是 "move if zero" 的缩写,意思是“如果为零则移动”。寄存器不受影响(或者可能被设置为零,这取决于具体的处理器实现)。指令被用于根据某些条件来设置寄存器的值。寄存器的值为零,则将。寄存器的值不为零,则。寄存器的值为零,那么。寄存器的值会被复制到。

2024-05-22 14:33:59 175

原创 efuse位分布至目标控制状态寄存器过程概述

读取到原始位流后,系统需要对其进行解码,这可能包括校验和验证、密钥解密(如果有加密)等步骤,以确保数据的准确性和安全性。- 解码后的数据通常会被映射到一个或多个配置结构中,这些结构定义了系统或硬件模块的具体配置项。- 若在上述任一环节发现错误(如efuse读取失败、校验错误、配置写入失败等),系统需有相应的错误处理机制,比如重启、进入安全模式、记录错误日志等。整个过程确保了基于efuse的安全和配置信息能够被正确提取并应用于系统的关键控制状态寄存器中,是确保硬件安全性和定制化配置的重要步骤。

2024-05-22 12:27:29 52

原创 PCIE--配置和枚举概述

PCIe(PCI Express)的配置和枚举是计算机系统启动和初始化过程中的重要环节,它们确保系统能够正确地识别和与各个PCIe设备进行通信。

2024-05-22 12:21:37 275

原创 汇编语言--局部标签(Local Labels)

局部标签(Local Labels)在汇编语言中是一个特殊类型的标签,它们主要用于标识代码段内的特定位置,以便进行跳转或其他控制流操作。局部标签的一个显著特点是它们通常只在定义它们的代码段(如函数或过程)内部有效,并且可以在同一作用域内重复使用而不会产生冲突。

2024-05-21 23:39:38 109

原创 中断处理程序--使用一个栈来保存和恢复现场信息原因

在这种情况下,中断处理程序使用的是内核栈而非用户栈,这是因为内核栈在处理器的最高权限级别上运行,可以不受用户程序的影响,保证了数据的安全性和隔离性。当一个中断在处理另一个中断期间发生(即中断嵌套),每个中断的上下文都需要被独立保存,以便依次恢复。- 中断服务完毕,CPU通过执行诸如`IRET`(中断返回)指令,从栈中弹出之前保存的上下文,恢复中断前的执行状态,并继续执行被中断的任务。综上,栈对于中断处理至关重要,它保证了中断处理的完整性和系统的稳定性,同时支持了高效的上下文切换和中断嵌套处理。

2024-05-21 19:25:23 216

原创 PC寄存器概述

PC作为CPU中的一个基本组件,通过控制指令的获取地址,直接管理着程序的执行流程,是实现程序正确执行序列、响应中断、实现多任务切换和异常处理的基础。其行为和管理体现了处理器执行指令的逻辑流动和控制能力,是计算机体系结构设计中的重要一环。

2024-05-21 17:47:51 224

原创 状态寄存器(Status Register)

状态寄存器(Status Register),也常被称为标志寄存器(Flag Register),是CPU中的一个重要组成部分,它存储了一系列的二进制位,每个位代表了处理器在执行特定类型的操作后的一种状态或结果。:在算术运算中,如果结果超出了寄存器能表示的范围(例如,无符号数加法产生了进位,或无符号数减法需要借位),这个标志会被设置。:在算术运算中,如果操作的结果超出了有符号数的表示范围(即正溢出或负溢出),这个标志会被设置。:这个标志反映了运算结果的最高位(通常对应于有符号数的符号位)。

2024-05-21 17:38:14 96

原创 处理器状态概述

处理器状态是指处理器在某一时刻的内部配置和运行环境,它包括了处理器当前执行指令的上下文、控制和状态信息等。处理器状态对于理解程序的执行流程、响应中断、切换上下文以及保持程序的连续性至关重要。

2024-05-21 17:34:55 270

原创 AR(地址寄存器)概述

综上所述,AR是计算机系统中不可或缺的一部分,它在内存地址的管理、数据的准确传输以及确保系统稳定运行方面发挥着重要作用。虽然不同架构的处理器在AR的具体实现上可能有所不同,但其核心功能和原理是相似的。请注意,由于AR的具体实现可能因处理器架构而异,因此在具体应用中需要参考相关处理器的技术手册或官方文档以获取更准确的信息。AR,即地址寄存器(Address Register),在计算机组成中扮演着重要角色。三、在微处理器中的作用。

2024-05-21 17:32:56 138

原创 特殊寄存器/通用寄存器概述

在计算机体系结构中,寄存器是CPU内部的一小块高速存储区域,用于暂时存储数据和指令,以提高处理器的运行效率。根据其功能和用途的不同,寄存器主要分为两大类:特殊寄存器(Special Registers)和通用寄存器(General-Purpose Registers)。下面详细介绍这两种寄存器的特点和作用。

2024-05-21 17:24:17 362

原创 XTENSA处理器指令--WSR/RSR

WSR(Write Special Register)和RSR(Read Special Register)是特定处理器架构中用于访问特殊寄存器的指令或操作。这些指令允许程序员对处理器的特殊寄存器进行读写,从而控制和配置处理器的特定功能或获取处理器的状态信息。

2024-05-21 17:06:00 183

原创 Xtensa 架构处理器的函数--XT_RSR_CCOUNT()

XT_RSR_CCOUNT() 是一个特定于 Xtensa 架构处理器的函数调用或内建函数,用于读取处理器的计数寄存器(Cycle Count Register,简称 CCOUNT)的值。总的来说,XT_RSR_CCOUNT() 是一个强大而实用的工具,特别是在需要精确时间测量和性能分析的场合。然而,使用时也需要注意其平台依赖性和潜在的开销问题。

2024-05-21 16:49:14 260

原创 Xtensa 架构的处理器指令--RSR

是 Xtensa 架构中用于读取特殊寄存器的重要指令,它提供了对底层硬件状态的访问能力,有助于开发人员实现更精细的系统控制和性能优化。是 "Read Special Register" 的缩写,指的是在 Xtensa 架构的处理器中读取特殊寄存器的指令。

2024-05-21 16:44:06 117

原创 嵌套中断概述

具体来说,当系统正在处理一个中断服务程序时,如果有另一个优先级更高的中断源提出中断请求,系统会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源。这种机制允许高优先级的中断能够打断低优先级的中断,但反过来则不可以。嵌套中断的处理涉及中断优先级的设定、中断屏蔽和中断响应等相关技术。为了解决这些问题,可以采取一些措施,如尽量避免使用中断嵌套、简化中断服务程序、保证中断服务程序的独立性和原子性等。通过以上策略的综合应用,可以有效地避免嵌套中断带来的问题,提高系统的性能和稳定性。

2024-05-21 14:16:09 1046

原创 Xtensa处理器架构--指令介绍(二)

3. **sub**:从一个寄存器的值中减去另一个寄存器的值,并将结果存储在目标寄存器中。2. **addi**:将寄存器的值与一个立即数相加,并将结果存储在目标寄存器中。这条指令将寄存器r1的值减去寄存器r2的值,并将结果存储在寄存器r3中。1. **add**:将两个寄存器的值相加,并将结果存储在目标寄存器中。9. **bne**:如果两个寄存器的值不相等,则跳转到指定的标签。8. **beq**:如果两个寄存器的值相等,则跳转到指定的标签。5. **s32i**:将寄存器中的32位值存储到内存中。

2024-05-20 17:22:30 398

原创 Xtensa汇编指令介绍

1. **数据移动指令**:这类指令用于将数据从一个位置移动到另一个位置,例如`move`、`load`、`store`等。5. **访存指令**:访问内存的指令用于从内存中读取数据到寄存器(加载)或将数据从寄存器写入内存(存储)。这些指令对于变量访问和数据结构操作至关重要。2. **算术运算指令**:这些指令执行基本的数学运算,如加法、减法、乘法和除法等。3. **逻辑运算指令**:逻辑指令执行位级操作,如AND、OR、NOT、XOR等。4. **分支跳转指令**:分支和跳转指令用于控制程序的执行流程。

2024-05-20 17:20:46 231

原创 MIPS 汇编语言--计数器实现循环

在这个示例中,程序首先输出提示信息,然后读取用户输入的整数。程序进入循环,检查计数器寄存器是否等于输入的整数。如果满足条件,程序将跳转到 `exit` 标签处执行,退出程序。否则,程序将输出结果,增加计数器寄存器的值,然后跳转到循环开始处继续执行。实际上,可以根据需要使用其他计数器寄存器(如 `$t2`、`$t3` 等)和循环控制指令(如 `beq`、`bne` 等)来实现更复杂的循环控制逻辑。在 MIPS 汇编语言中,可以使用计数器寄存器(如 `$t0`、`$t1` 等)来实现循环控制。

2024-05-18 16:08:42 217

原创 MIPS 汇编语言--循环控制

在这个示例中,程序首先输出提示信息,然后读取用户输入的整数。程序进入循环,检查计数器寄存器是否等于输入的整数。如果满足条件,程序将跳转到 `exit` 标签处执行,退出程序。否则,程序将输出结果,增加计数器寄存器的值,然后跳转到循环开始处继续执行。实际上,可以根据需要使用其他循环控制指令(如 `blt`、`ble`、`bgt`、`bge` 等)和计数器寄存器来实现更复杂的循环控制逻辑。在 MIPS 汇编语言中,可以使用循环控制指令(如 `beq`、`bne` 等)和计数器寄存器来实现循环控制。

2024-05-18 16:07:51 480

原创 MIPS 汇编语言--条件跳转指令

接下来,使用 `bge` 指令检查输入的整数是否大于等于0。如果满足条件,程序将跳转到 `positive` 标签处执行,输出 "The number is positive."。否则,程序将跳转到 `exit` 标签处执行,输出 "The number is negative."。实际上,可以根据需要使用其他条件跳转指令(如 `blt`、`ble`、`bgt`、`bge` 等)来实现更复杂的条件执行逻辑。在 MIPS 汇编语言中,可以使用条件跳转指令(如 `beq`、`bne` 等)来实现条件执行。

2024-05-18 16:07:09 339

原创 MIPS 汇编语言指令概述

在这个例子中,`$t0` 寄存器的值将被设置为 `$t1` 寄存器的值除以 `$t0` 寄存器的值的商,余数将被存储到 `$t1` 寄存器中。在这个例子中,`$t0` 寄存器的值将被设置为 `$t1` 寄存器的值减去 `$t2` 寄存器的值。在这个例子中,`$t0` 寄存器的值将被设置为 `$t1` 和 `$t2` 寄存器的值之和。在这个例子中,`$t0` 寄存器的值将被设置为 `$t1` 和 `$t2` 寄存器的值之积。1. **add**:将两个寄存器的值相加,并将结果存储到第三个寄存器中。

2024-05-18 15:59:16 377

原创 汇编指令--beqi

"beqi" 是 MIPS 汇编语言中的一个指令,表示 "Branch on Equal Immediate"。这个指令用于比较两个寄存器的值是否相等,如果相等则跳转到指定的标签处执行。指令的功能是:如果 `$rs` 中的值等于 `imm`,则跳转到 `label` 处执行。# 如果 $t0 不等于 10,则继续执行下一条指令。# 如果 $t0 等于 10,则执行这里的代码。- `imm` 是一个立即数(常数)。- `label` 是跳转的目标标签。- `$rs` 是第一个源寄存器。

2024-05-17 18:24:01 177

原创 汇编指令--slli

是 MIPS 架构(以及其他一些类似架构)中的一条指令,表示“逻辑左移立即数”(Shift Left Logical Immediate)。这条指令将一个寄存器中的值逻辑左移指定的位数,并将结果存回同一个寄存器或另一个寄存器。逻辑左移操作会将寄存器中的位向左移动指定的位数,右侧空出的位用 0 填充。这通常用于将某个字段的值移动到寄存器中的另一个位置,以便与其他字段组合或用于其他目的。(二进制表示,即十进制的 11),执行。中的值左移 8 位,并将结果存回。(二进制表示,即十进制的 22)。

2024-05-17 15:32:25 186

原创 PCIE--MSI-X表概述

PCI Express (PCIe) MSI-X (Message Signaled Interrupts eXtended) 是一种高效和灵活的中断机制,允许设备请求中断时通过写入内存映射的地址而非传统的中断线。与基本的 MSI (Message Signaled Interrupts) 相比,MSI-X 提供了更多的中断向量,允许每个设备支持更多的独立中断源,并且不强制中断向量连续,提高了系统的可扩展性和管理效率。

2024-05-17 15:26:13 368

原创 xtensa汇编指令--addi和movi

`movi`:如果`movi`指的是`mov`指令,那么它的使用场景包括:将一个值从一个寄存器复制到另一个寄存器,将一个值从内存加载到寄存器,或者将一个值从寄存器存储到内存。例如,`mov r1, r0`将把`r0`寄存器中的值复制到`r1`寄存器中。总结来说,`addi`和`movi`(如果指的是`mov`指令)都是汇编语言中的基本指令,它们在不同的场景下用于执行不同的操作。例如,`addi r1, r0, 10`将把`r0`寄存器中的值加10,结果存储在`r1`寄存器中。

2024-05-16 23:57:56 94

原创 汇编语言--标签(label)

在汇编语言中,标签(label)是一个用于标识代码位置的符号以下是一个简单的汇编代码示例,展示了如何使用标签和跳转指令:start:;初始化寄存器mov r0, #0loop:;执行一些操作;检查循环条件cmp r0, r1bne loopend:;循环结束后执行的代码;...```在这个示例中,`start`、`loop`和`end`是标签。程序从`start`标签开始执行,然后顺序执行到`loop`标签。

2024-05-16 23:46:54 593

原创 固件存储布局

这种固件的存储布局确保了设备能够正确地加载和运行操作系统及其应用程序,同时也为用户数据提供了足够的存储空间。

2024-05-16 16:52:07 292

原创 计算机--BIOS概述

随着时间发展,UEFI(Unified Extensible Firmware Interface)逐渐取代了传统的BIOS,提供了更为先进和灵活的功能,例如图形用户界面、更快的启动速度、支持更大容量的硬盘分区以及安全启动功能。:在计算机启动时,BIOS会对系统硬件进行自检(POST,Power-On Self Test),检查CPU、内存、硬盘、键盘等设备是否正常工作。:BIOS提供了一个配置界面,允许用户调整系统设置,如日期和时间、启动顺序、硬盘模式、内存参数等。

2024-05-16 16:43:49 564

使用STM32的PWM(脉冲宽度调制)功能来控制一个电机的速度

为了提供一个完整的STM32小项目及其源码实现,我们将创建一个简单的项目:使用STM32的PWM(脉冲宽度调制)功能来控制一个电机的速度。在这个项目中,我们将使用STM32CubeMX来生成初始化代码,并使用HAL库函数来实现PWM控制。 1. 硬件准备 •STM32微控制器 •一个支持PWM的电机驱动器(例如L298N) •一个直流电机 •编程器/调试器 2. 连接方式 •将STM32的某个PWM引脚连接到电机驱动器的PWM输入端。 •将STM32的另外两个GPIO引脚连接到电机驱动器的方向控制端,用于控制电机的正反转。 •将电机的两个端子连接到电机驱动器的输出端。 3. 使用STM32CubeMX配置项目 1.打开STM32CubeMX软件,并创建一个新项目。 2.选择你的STM32微控制器型号。 3.在Pinout & Configuration视图中,找到TIM3定时器,并配置其Channel 1为PWM模式。 4.配置TIM3的Channel 2为GPIO输出模式,用于控制电机方向。 5.配置串口(例如USART1)用于与PC通信,方便调试 6.配置项目;

2024-03-05

STM32实现LED闪烁功能

STM32是一款非常流行的微控制器,广泛应用于各种嵌入式系统中。下面是一个简单的STM32小项目,实现LED闪烁功能,并提供相应的源代码。 项目目标: 使用STM32微控制器控制一个LED灯,使其以一定的频率闪烁。 所需硬件: 1. STM32微控制器(例如STM32F103C8T6) 2. LED灯 3. 电阻(限流用,例如220欧姆) 4. 杜邦线 5. 编程器/调试器(例如ST-LINK/V2) 连接方式: 1. 将LED的长脚(正极)连接到STM32的某个GPIO引脚上(例如PA5)。 2. 将LED的短脚(负极)通过一个电阻连接到地线(GND)。 软件环境: 1. 安装STM32CubeIDE(或其他STM32开发环境) 2. 配置STM32CubeMX以生成初始化代码 //----------见附件源码-----------------// 注意:以上代码仅为示例,具体实现可能因硬件和开发环境的不同而有所差异。你需要根据自己的硬件和开发环境进行适当的修改。 最后,使用STM32CubeIDE或其他IDE编译并下载代码到STM32微控制器上,即可看到LED以一定的频率闪烁。

2024-03-05

文字转图片python源码

python文字转图片

2024-03-05

Windows 系统&&macOS 系统&&macOS 系统安装Python指导

python安装指导

2024-03-05

Linux 常用命令大全包括许多用于系统管理、文件操作、网络管理等方面的命令 以下是一些常用的 Linux 命令: 1. 2.

linux常用命令大全

2024-03-05

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除