【FLASH、SRAM和DRAM、CISC和RISC、冯诺依曼和哈佛】单片机内存结构的了解
【FLASH、SRAM和DRAM、CISC和RISC、冯诺依曼和哈佛】单片机内存结构的了解
一、单片机概念
单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片
1.1RAM里的SRAM和DRAM
SRAM(Static Random Access Memory)和DRAM(Dynamic Random Access Memory)是两种常见的随机访问存储器类型,它们在内部工作原理和应用方面有一些显著的区别。
随机存取存储器(Random Access Memory,简称RAM)是计算机中用于临时存储数据和程序的关键组件。它允许数据的快速读写,是CPU直接与之交换数据的主要内部存储器。RAM的特点是易失性,即在断电后数据会丢失,因此它主要用于存储当前正在使用或即将使用的数据和程序。
RAM主要分为两种类型:静态随机存取存储器(Static RAM,简称SRAM)和动态随机存取存储器(Dynamic RAM,简称DRAM)。SRAM的速度较快,成本较高,常用于高速缓冲存储器(Cache)和寄存器中。DRAM则因其结构简单、集成度高、成本较低而被广泛应用于计算机的主存中。DRAM需要定期刷新来保持数据,这是其“动态”特性的由来。
在计算机中,RAM的作用至关重要,它不仅影响着系统的运行速度和性能,还决定了多任务处理的能力。例如,当你打开多个应用程序或在不同程序间切换时,足够的RAM可以确保数据快速加载和流畅切换。随着技术的发展,DRAM的标准也在不断提升,如DDR3 SDRAM和DDR4 SDRAM,后者逐渐成为主流,提供了更高的性能和能效。
总的来说,RAM是计算机存储体系中不可或缺的一部分,它直接影响着计算机的响应速度和多任务处理能力。对于需要进行大量数据处理或运行内存密集型应用程序的用户来说,投资更多的RAM是一个明智的选择。
静态特性/动态特性 | 刷新 | 速度 | 用途和成本: | 功耗 | |
---|---|---|---|---|---|
SRAM(Static RAM) | SRAM是静态存储器,这意味着它在没有时钟信号的情况下可以保持存储的数据。 | 不需要定期刷新,因为数据是存储在触发器中,只要电源保持稳定,数据就会一直保持。 | 通常比DRAM更快,因为读写操作可以直接在存储单元之间进行,而不需要刷新周期或者访问电容。 | 通常用于需要快速访问速度和不需要大容量的应用,例如缓存内存。 | 功耗较高,因为它使用了更多的晶体管来实现每个存储单元 |
DRAM(Dynamic RAM) | DRAM是动态存储器,需要定期刷新以保持存储的数据,因为数据存储在电容中,电容会逐渐失去电荷。 | 需要周期性地刷新,否则数据会丢失。 | 相对于SRAM而言,DRAM的访问速度通常较慢,因为访问需要经过行和列的选择。 | 通常用于需要大容量存储的应用,例如系统内存,因为DRAM可以提供相对较高的存储密度。 | 常功耗较低,因为每个存储单元只需要一个电容和一个访问晶体管。 |
在嵌入式系统中,常常会使用SRAM作为处理器的缓存,而DRAM则用于系统内存。选择哪种类型的内存取决于应用的需求,例如速度、功耗、成本和容量。
STM32单片机中的SRAM:STM32单片机通常内置有一定量的SRAM,例如STM32F103C8T6可能有20KB的SRAM。这些SRAM被划分为不同的区域,包括用于存储程序数据的区域和用于存储变量的区域。
1.2Flash存储器(闪存)
在嵌入式系统中,特别是在单片机(Microcontroller)中,Flash存储器类似于个人电脑上的硬盘。
特点介绍
以下是关于Flash存储器在单片机中的一些重要方面:
- 非易失性存储: Flash存储器是一种非易失性存储器,这意味着它可以在断电后保持存储的数据。这使得它非常适合用于嵌入式系统,因为系统可以在断电或重启后从Flash中加载程序代码或配置信息。
- 程序存储: 在单片机中,Flash通常用于存储程序代码。当单片机启动时,它会从Flash中读取代码并执行。这使得Flash对于嵌入式系统的正常运行至关重要。
- 数据存储: 除了程序代码,Flash还可以用于存储非易失性数据,例如配置信息、参数设置等。这些数据可以在设备断电后仍然保持,确保系统具有持久性。
- 擦写和擦除: Flash存储器需要进行擦写和擦除操作,而这些操作通常是以块为单位进行的。在更新存储的数据或程序时,需要将整个块擦除,然后再进行写入操作。这与RAM不同,RAM允许单独的字节或字的写入。
- 寿命考虑: Flash存储器有限的擦写寿命,因此在设计中需要考虑擦写次数。为了延长Flash的寿命,通常采用良好的擦写算法和均衡擦写操作。
总体而言,Flash存储器在嵌入式系统中扮演着重要的角色,类似于个人电脑中硬盘的作用。不仅用于存储程序代码,还用于存储系统的配置和持久性数据。
STM32中的Flash
STM32的Flash存储器是微控制器内部的非易失性存储区域,主要用于存储程序代码和一些固定数据。Flash存储器在断电后数据不会丢失,是程序执行的主要区域。STM32的Flash存储器具有以下特点:
-
内存映射:STM32的Flash地址起始于0x08000000,结束地址是0x08000000加上芯片实际的Flash大小。不同的STM32芯片Flash大小不同。
-
构成:STM32的内部Flash包含主存储器、系统存储器、OTP(One Time Program)区域以及选项字节区域。主存储器用于存储用户应用程序,系统存储区包含固化的启动代码,OTP区域用于存储加密密钥等一次性编程数据,选项字节用于配置Flash的读写保护等功能。
-
擦除和写入:在写入新的数据前,需要先擦除存储区域。STM32提供了扇区擦除指令和整个Flash擦除(批量擦除)的指令。擦除和写入操作需要先解锁Flash,然后擦除目标扇区,最后写入数据。
-
容量:STM32的Flash容量因型号而异,例如STM32F103C8T6拥有64KB或128KB的Flash。
-
操作过程:操作Flash通常包括解锁Flash、擦除扇区、写入数据等步骤。这些步骤需要通过配置FLASH控制寄存器(FLASH_CR)和FLASH状态寄存器(FLASH_SR)来完成。
-
编程接口:STM32标准库提供了操作Flash的函数,如
HAL_FLASH_Program
用于编程操作,FLASH_Unlock
和FLASH_Lock
用于解锁和上锁Flash。 -
注意事项:Flash的擦除和写入操作对电源电压有要求,且每个Flash扇区的擦写次数有限,通常在10万次左右。
-
应用:除了存储程序代码,Flash还可以用于存储关键记录或配置数据,尤其是在需要快速访问或掉电保护的情况下。
当你烧写程序到STM32单片机时,程序代码会被存储到单片机内部的Flash存储器中。
烧写过程通常涉及以下步骤:
-
编译:首先,你会使用如Keil、IAR、STM32CubeIDE等集成开发环境(IDE)将你的源代码编译成机器代码。
-
烧写:然后,通过烧写工具(可能是ST-LINK、JTAG、SWD或其他编程器)将编译后的机器代码(通常以二进制文件的形式)传输到STM32单片机的内部Flash中。
-
验证:烧写完成后,单片机在下次复位或上电时会从内部Flash加载并执行程序。
STM32单片机的Flash存储器具有特定的组织结构,通常分为多个扇区(sectors),每个扇区可以独立擦除和编程。在烧写过程中,你需要确保代码被烧写到正确的扇区,并且该扇区之前已经被擦除。
此外,STM32的Flash存储器还提供了一些额外的功能,如读保护、写保护和执行保护,这些功能可以通过编程选项字节来配置,以增强程序的安全性。
1.3Flash VS SRAM
SRAM(Static Random-Access Memory,静态随机存取存储器)是STM32单片机中非常重要的一种存储器,它的特点和应用如下:
- 易失性存储器:SRAM是一种易失性存储器,这意味着一旦断电,存储在SRAM中的数据会丢失。因此,它主要用于存储临时数据,如程序运行时的变量、堆栈、缓存等。
- 快速访问:SRAM提供比Flash更快的读写速度,因为它不需要像Flash那样进行擦除和编程周期。这使得SRAM非常适合用作CPU的缓存或用于存储频繁访问的数据。
- 随机存取:SRAM允许随机存取,即可以直接访问任何存储单元,而不需要像某些类型的存储器那样按顺序访问。这使得SRAM在需要快速、直接数据访问的场合非常有用。
- 功耗:虽然SRAM的访问速度很快,但它通常比Flash消耗更多的电力,因为它需要持续的电源来保持数据。
- 成本:SRAM的成本通常比Flash和其他类型的存储器更高,因为它使用更复杂的制造工艺,并且每个晶体管可以存储更多的数据。
- 应用场景:
- 缓存:在CPU和主存之间用作高速缓存,减少CPU访问主存的次数,提高数据处理速度。
- 堆栈:用于存储函数调用时的局部变量和返回地址。
- 数据缓冲区:在数据传输过程中用作缓冲区,例如在DMA传输中。
- 实时数据处理:在需要快速读写操作的实时系统中,用于存储实时数据。
- 外部SRAM扩展:当STM32单片机内置的SRAM不足以满足应用需求时,可以通过外部接口如FSMC(Flexible Static Memory Controller)扩展外部SRAM,以增加更多的存储空间。
SRAM在STM32单片机中扮演着重要角色,它的快速访问特性对于确保程序的流畅运行和响应速度至关重要。
1.4电脑 VS 单片机
电脑 | 单片机 | |
---|---|---|
CPU主频 | X86,2-5 GHz | 51/ARM/RISC-V,72MHz (STM32F1) |
内存容量 | GB级 约40GB/S (DDR4) | KB级,约300MB/S (STM32F1) |
磁盘容量 | TB级,约500MB/S (SATA3) | KB级,约100MB/S (STM32F1) |
功耗 | 数百W | <0.5W |
价格 | 2000-10000 | <10元 |
频率的单位从低到高主要有以下几种:
- 赫兹(Hz):频率的基本单位,表示每秒周期性事件发生的次数。
- 千赫兹(kHz):1 kHz = 1,000 Hz(1,000 赫兹)。
- 兆赫兹(MHz):1 MHz = 1,000 kHz = 1,000,000 Hz(一百万字)。
- 吉赫兹(GHz):1 GHz = 1,000 MHz = 1,000,000 kHz = 1,000,000,000 Hz(十亿次)。
- 太赫兹(THz):1 THz = 1,000 GHz = 1,000,000 MHz = 1,000,000,000,000 Hz(一万亿次)。
这些单位通常用于描述电子设备中的时钟速度、无线通信频率以及其他需要精确频率测量的场合。随着技术的发展,频率的测量和应用已经扩展到了更高的范围,例如在光学和量子物理研究中使用的PHz(拍赫兹)等。
计算X86 64位体系结构的理论最大数据传输速率的公式是:
传输速率=(位数/8)×时钟频率
其中:
- 传输速率是以字节每秒(Bytes per second)为单位的。
- 位数表示体系结构的位数,例如64位。
- 时钟频率表示处理器的时钟速率,例如5GHz。
这个公式是基于每个时钟周期能够处理的位数,通过将其转换为字节,我们可以得到每秒的最大传输速率。
当主频为2~5 GHz,带入上述公式计算如下:
**最低主频(2 GHz):**传输速率=(64位/8)×2GHz=16GB/s
**最高主频(5 GHz):**传输速率=(64位/8)×5GHz=40GB/s
这个计算假设X86架构每个时钟周期可以处理64位的数据,并且通过将其转换为字节,我们可以得到每秒的最大传输速率。根据您提供的范围,最低到最高主频下,传输速率的范围在16 GB/s到40 GB/s之间。这是理论上的最大传输速率,实际的性能可能受到其他因素的影响,如内存访问模式、缓存性能等。
STM32F1系列的主频为72MHz,内存容量在KB级别,传输速率约为300MB/s。让我们再次使用正确的公式:
传输速率=(32位/8)×72MHz=288MB/s
在这个计算中,我假设STM32F1系列每个时钟周期可以处理32位的数据,通过将其转换为字节,我们可以得到每秒的最大传输速率。因此,根据这个计算,理论上的最大传输速率为288MB/s,而不是300MB/s。这是一个近似值,实际性能可能会受到其他因素的影响。
1.5单片机发展历程
单片机(Microcontroller Unit, MCU)的发展历史可以概括为以下几个阶段:
-
初期阶段(1970年代末至1980年代初):
- 单片机的概念最早由Intel公司实现,推出了世界上第一款商用微处理器4004。
- 1976年,Intel推出了MCS-48系列,这标志着8位单片微型计算机的诞生,并为单片机的发展奠定了基础 。
-
完善阶段(1980年代初至1980年代中期):
- 1980年代,Intel推出了MCS-51系列,这是单片机发展史上的一个重要里程碑,它以体积小、功能全、价格低赢得了广泛的应用
-
高性能阶段(1980年代中期至1990年代初):
- 出现了更多高性能的单片机,如Intel的MCS-96系列和Motorola的6801和6802系列。这些单片机集成度更高,功能更强大,应用领域更加广泛 。
-
快速发展阶段(1990年代至今):
- 单片机技术得到了巨大的提高,出现了更多高速、大寻址范围、强运算能力的单片机。
- 随着消费电子产品的发展,单片机技术得到了飞速的发展,32位单片机迅速取代了16位单片机的高端地位 。
-
当前与未来趋势:
- 单片机正朝着高性能、低功耗、小体积、大容量、低价格和外围电路内装化的方向发展。
- 随着物联网、智能家居等技术的发展,单片机在智能化设备中的应用越来越广泛,未来可能会进一步融合人工智能技术,提升其智能化水平 。
单片机的应用领域非常广泛,包括工业控制、家用电器、汽车电子、智能仪表、通讯设备等,它们在现代社会的各个方面都发挥着重要作用。随着技术的不断进步,单片机的性能和功能也在不断提升,以满足日益增长的应用需求。
目前市场上常见的单片机制造商包括STMicroelectronics(STM32)、NXP(以前的飞思卡尔)、瑞萨(Renesas)等,它们的产品涵盖了各种应用领域。STM32是ST的32位ARM Cortex-M系列单片机,广泛应用于工业控制、汽车电子、消费电子、智能家居、物联网等多个领域。NXP和Renesas也提供了广泛的单片机产品,适用于不同的市场需求和应用场景。
目前市面上使用最多的单片机(MCU)品牌和型号非常多样,根据不同的应用领域和需求,不同的单片机有不同的市场占有率。根据2024年的市场分析报告,一些主流的单片机品牌和型号包括:
STMicroelectronics(STM32):STM32系列单片机以其高性能、低成本和丰富的外设功能在工业控制、汽车电子、消费电子等领域有广泛的应用。
Microchip Technology:提供广泛的PIC和AVR系列单片机,以及基于ARM架构的产品,适用于各种嵌入式系统。
NXP Semiconductors:前身为飞思卡尔,提供多种单片机产品,包括基于ARM Cortex-M系列的高性能单片机。
Renesas Electronics:提供多种8位和32位单片机,适用于汽车、工业和消费电子市场。
Texas Instruments(TI):以其MSP430和CC系列单片机而知名,广泛应用于低功耗和高性能的应用场景。
Infineon:提供多种单片机,适用于汽车、工业和通信市场。
Silicon Labs:以其EFM8和EFM32系列单片机而知名,专注于提供高性能、低功耗的解决方案。
Espressif Systems:以其ESP8266和ESP32系列Wi-Fi和蓝牙单片机而知名,特别适用于物联网应用。
Atmel(现为Microchip的一部分):以其AVR和ARM系列单片机而知名,广泛应用于嵌入式系统设计。
Holtek Semiconductor:专注于8位单片机的研发和销售,产品广泛应用于家电、医疗和工业控制领域。
这些单片机品牌和型号在市场上的使用率较高,但具体哪个型号使用最多可能会随着时间和市场需求的变化而变化。根据2024年的市场数据,STM32系列由于其广泛的应用和高性价比,可能是目前市场上使用较多的单片机之一。然而,这个情况可能会随着新技术的出现和市场动态的变化而发生改变。
1.6单片机发展趋势
发展趋势 | 描述 |
---|---|
微型化 | - 芯片尺寸缩小 - 无线单片机普及 |
高效节能 | - 提高能源使用效率 - 减少电子废物 |
集成度提高 | - 更多功能集成 - 减小电路板体积和功耗 |
低功耗设计 | - 优化电路设计 - 提高芯片制造工艺 |
智能家居 | - 设备智能化管理 - 互联互通 |
物联网 | - 设备互联 - 信息共享 |
工业控制 | - 自动化生产线 - 精密控制 |
安全性增强 | - 硬件与软件安全防护 - 加密算法和安全机制 |
云集成与物联网 | - 云计算平台连接 - 物联网应用 |
全球市场规模 | - 2022年达到1907.7亿元 - 预测2028年将达3556.97亿元 |
中国市场规模 | - 2022年达到653.2亿元 - 年均复合增长率为11.25% |
主要厂商 | STMicroelectronics, Microchip, NXP Semiconductors, Renesas Electronics |
产品分类 | 32位单片机, 8位单片机, 16位单片机 |
应用细分 | 工业, 通讯与电脑, 汽车 |
二、CISC VS RISC
CISC(Complex Instruction Set Computing)和 RISC(Reduced Instruction Set Computing)是两种计算机体系结构的设计哲学,它们主要在指令集的复杂性和执行效率上有所不同。
CISC(Complex Instruction Set Computing):
- 指令集复杂: CISC体系结构有一个复杂的指令集,其中包含大量不同的指令,一些指令可以执行多个低级操作。
- 多寻址模式: CISC指令集通常支持多种寻址模式,使得一条指令能够操作多个内存位置。
- 硬件复杂: CISC架构中的处理器通常较为复杂,包含多个执行单元和管道。
- 高度优化: CISC指令集的目标是通过一个指令完成更多的工作,这通常需要更多的硬件支持和复杂的微体系结构。
- 用途: 传统的x86架构是CISC架构的代表。
RISC(Reduced Instruction Set Computing):
- 指令集简化: RISC体系结构采用简化的指令集,每条指令执行的操作相对较少,但执行时间相对较短。
- 单寻址模式: RISC指令集通常限制了寻址模式,简化了指令的解码和执行。
- 硬件精简: RISC处理器的硬件结构相对精简,专注于提高时钟周期内执行指令的效率。
- 流水线: RISC处理器通常采用流水线技术,使得多条指令可以同时在不同阶段执行。
- 用途: ARM和MIPS等体系结构是RISC架构的代表。
在实际应用中,CISC和RISC并非严格对立的两种设计,而是两者之间存在一些模糊的区域。一些架构尝试结合两者的优点,采用混合的设计方法,称为复杂指令集(CISC)和精简指令集(RISC)的混合体(例如,Intel的IA-64架构)。选择CISC或RISC架构通常取决于设计目标、应用需求以及制造技术的发展。
冯诺依曼结构 VS 哈佛结构
冯诺依曼结构
程序指令和数据被存储在同一个存储器中
- 优点:总线资源占用少
- 缺点:执行效率较低
哈佛结构
程序指令和数据存储到两个独立的存储器中
- 优点:执行效率较高
- 缺点:总线资源占用多
相关文章:
【FLASH、SRAM和DRAM、CISC和RISC、冯诺依曼和哈佛】单片机内存结构的了解
【FLASH、SRAM和DRAM、CISC和RISC、冯诺依曼和哈佛】单片机内存结构的了解 一、单片机概念 单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片 1.1RAM里的SRAM和DRAM SRAM(Static Random Access Memory&…...
ionic capacitor JSValueEncodingContainer报错
try to clean the build folder. exit Xcode. upgrade your capacitor core libraries update cocoapods to 1.13.0 do “pod install --repo-udpdate” after that: ionic build --prodnpx cap updatenpx cap syncnpx cap open ios capacitor ios最低版本要求13 [Bug]:…...
pdf merge
在 Ubuntu 22.04 上,你可以使用以下命令行工具来合并多个 PDF 文件: 1. pdftk pdftk 是一个强大的 PDF 工具,支持合并、拆分和其他操作。安装和使用方法如下: sudo apt install pdftk pdftk file1.pdf file2.pdf cat output me…...
【Trouble Shooting】Oracle ADG hung,出现ORA-04021
异常问题: 突然收到告警,ADG实例状态异常。 环境: 版本:Oracle 11.2.0.4.201020 状态:Active Dataguard 问题: 查看Oracle实例alert日志,发现有异常报错: Thu Dec 12 22:15:23 …...
奇怪的知识又增加了:ESP32下的Lisp编程=>ULisp--Lisp for microcontrollers
ESP32下有MicroPython,那么我就在想,有Lisp语言支持吗?答案是果然有!有ULisp,专门为MCU设计的Lisp! 网址:uLisp - Lisp for microcontrollers 介绍:用于微控制器的 Lisp 适用于 Ar…...
什么是CRM系统?CRM系统的功能、操作流程、生命周期
CRM系统作为企业管理和维护客户关系的重要工具,在商业活动中扮演着越来越重要的角色。今天,就让我们一起揭开它的神秘面纱,看看这个“幕后英雄”到底是怎么工作的。 什么是CRM系统? 首先,我们要了解什么是CRM。简单来…...
[每日一练]转换日期格式
#该题目来源于力扣: 1853. 转换日期格式 - 力扣(LeetCode) 题目要求: 表: Days------------------- | Column Name | Type | ------------------- | day | date | ------------------- day 是这个表的主键。给定一个Da…...
LSM Tree 底层设计理念
场景:设计一个海量读写的的kv数据库,优先保证写入速度,但是读取速度也不能很慢 因为海量数据存储,不能使用内存,得存到文件里。 Q:对已经落盘的文件,怎么根据key修改value A:读取文件…...
面向对象设计规则和各类设计模式
面向对象设计(Object-Oriented Design, OOD)是一种软件设计方法论,它使用对象、类、继承、封装、多态等概念来组织代码。面向对象设计的核心目标是提高软件的可维护性、可扩展性和复用性。在面向对象设计中,遵循一定的设计原则和模…...
Artec Leo3D扫描仪在重型机械设备定制中的应用【沪敖3D】
挑战:一家加拿大制造商需要有效的方法,为富于变化且难度较高的逆向工程,快速、安全、准确地完成重型机械几何采集。 解决方案:Artec Leo, Artec Studio, Geomagic for SOLIDWORKS 效果:Artec Leo三维扫描代替过去的手动…...
Linux下socket广播通讯的实现
概念大家都很清楚,不赘述。 广播必然用UDP这套东西。 setsockopt() 函数及其在广播中的应用: 在 C 网络编程中,setsockopt() 函数用于设置套接字选项,这些选项可以控制套接字的各种行为。对于广播通信,我们特别关心…...
Tiptap,: 富文本编辑器入门与案例分析
Tiptap 是一个现代的富文本编辑器,基于 ProseMirror 打造,旨在提供一个灵活且功能强大的文本编辑解决方案。它具有开箱即用的能力,同时也允许开发者根据业务需求进行高度定制化扩展。与传统的富文本编辑器相比,Tiptap 提供了更精细…...
数智读书笔记系列002 埃隆·马斯克传
书名:埃隆马斯克传 作者:【美】沃尔特艾萨克森 译者:孙思远;刘家琦 出版社:中信出版集团 出版时间:2023年9月 ISBN:9787521758399 这本书是关于特斯拉CEO埃隆马斯克的传记,作者…...
linux环境一句话后门
原文地址:linux环境一句话后门 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 注意:本文章只做网络安全技术交流使用,切莫用来做坏事。 也可以叫一句话木马,一个意思。 设置监听 回连端口可以…...
django——admin后台管理1
一、admin后台管理 访问url进入: http://127.0.0.1:8000/admin 创建超级管理用户 终端输入以下命令: python manage.py createsuperuser (py36_pingping) E:\django学习\day03-django入门\demo>python manage.py createsuperuser Username: mo…...
QT图形/视图架构详解(一)
场景、视图与图形项 图形/视图架构主要由 3 个部分组成,即场景、视图和图形项,三者的关系如图所示: 场景、视图和图形项的关系 场景(QGraphicsScene 类) 场景不是界面组件,它是不可见的。场景是一个抽象的…...
h5 区分ios和安卓
h5 区分ios和安卓 const systemInfo uni.getSystemInfoSync(); if (systemInfo.platform "ios" || systemInfo.platform "android") {}h5 区分微信小程序与app用条件编译条件编译 js #ifdef MP-WEIXIN #endif...
爬虫基础知识点
最近看了看爬虫相关知识点,做了记录,具体代码放到了仓库,本文仅学习使用,如有违规请联系博主删除。 这个流程图是我使用在线AI工具infography生成的,这个网站可以根据url或者文本等数据自动生成流程图,挺…...
golang 实现简单redis服务3(实现多类型数据结构支持)
redis各种数据类型的工作原理stringlisthashset(集合)zset(有序集合)(思考1):为什么redis使用跳跃表而不是红黑树?(思考2): 都可以范围取值,为什么mysql使用b树不用跳跃表,为什么redis使用跳跃表不用b树? 之前的redis只实现了基本数据string类型的操作,那能不能实现多种数据类…...
【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
目录 1.算法仿真效果 2.算法涉及理论知识概要 3.Verilog核心程序 4.开发板使用说明和如何移植不同的开发板 5.完整算法代码文件获得 1.算法仿真效果 本文是之前写的文章: 《基于FPGA的4ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR》 的…...
配置mysqld(读取选项内容,基本配置),数据目录(配置的必要性,目录下的内容,具体文件介绍,修改配置)
目录 配置mysqld 读取选项内容 介绍 启动脚本 基本配置 内容 端口号 数据目录的路径 配置的必要性 配置路径 mysql数据目录 具体文件 修改配置时 权限问题 配置mysqld 读取选项内容 介绍 会从[mysqld] / [server] 节点中读取选项内容 优先读取[server] 虽然服务…...
【roadMap】我转行软件测试的经历
软件测试这行咋样? 如果你简单了解过「软件测试工程师」这个岗位,就会知道它的基本特点: 待遇比开发低,比其他行业高入门丝滑,算是技术岗最简单的一类测试行业有细分领域:功能、性能、自动化… 每个行业…...
回归任务与分类任务应用及评价指标
能源系统中的回归任务与分类任务应用及评价指标 一、回归任务应用1.1 能源系统中的回归任务应用1.1.1 能源消耗预测1.1.2 负荷预测1.1.3 电池健康状态估计(SOH预测)1.1.4 太阳能发电量预测1.1.5 风能发电量预测 1.2 回归任务中的评价指标1.2.1 RMSE&…...
半导体制造全流程
半导体制造是一个极其复杂且精密的过程,主要涉及将硅片加工成功能强大的芯片。以下是半导体制造的全流程概述: 1. 硅材料制备 硅提纯: 使用冶金级硅,进一步提纯为高纯度硅(电子级硅),纯度可达 …...
Mac m2电脑上安装单机Hadoop(伪集群)
1. 引言 本教程旨在介绍在Mac 电脑上安装Hadoop 2. 前提条件 2.1 安装JDK Mac电脑上安装Hadoop,必须首先安装JDK,并配置环境变量(此处不做详细描述) 2.2 配置ssh环境 关闭防火墙 在Mac下配置ssh环境,防止后面启…...
React 第十六节 useCallback 使用详解注意事项
useCallback 概述 1、useCallback 是在React 中多次渲染缓存函数的 Hook,返回一个函数的 memoized的值; 2、如果多次传入的依赖项不变,那么多次定义的时候,返回的值是相同的,防止频繁触发更新; 3、多应用在 父组件为函…...
悬赏任务源码(悬赏发布web+APP+小程序)开发附源码
悬赏任务源码是指一个软件或网站的源代码,用于实现悬赏任务的功能。悬赏任务是指发布方提供一定的奖励,希望能够找到解决特定问题或完成特定任务的人。悬赏任务源码通常包括任务发布、任务接受、任务完成和奖励发放等功能的实现。搭建悬赏任务源码是一个…...
Collection接口
目录 一. Collection基本介绍 二. Collection中的方法及其使用 1. 添加元素 (1) 添加单个元素 (2) 添加另一集合中的所有元素 2. 删除元素 (1) 删除单个元素 (2) 删除某个集合中包含在其他集合中的元素 (3) 保留两个集合中的交集部分, 删除其他元素. 3. 遍历元素 (1) …...
电机驱动模块L9110S详解
电机驱动模块是一种用于控制和驱动电机的设备,它能够将控制信号转化为适合电机操作的电流和电压。通过电机驱动模块,可以实现对电机的速度、方向等参数进行精确控制。 今天我们要介绍的 L9110S 电机驱动适合大学生、工程师、个人DIY、电子爱好者们学习和…...
路由之间是怎么跳转的?有哪些方式?
1. React 路由跳转方式(React Router) 在 React 中,路由跳转通常使用 React Router 来管理。React Router 提供了不同的跳转方式。 <Link> 组件跳转 使用 <Link> 组件来进行路由跳转,它会渲染为一个 HTML <a> …...
AudioSegment 将音频分割为指定长度时间片段 - python 实现
DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…...
双目摄像头标定方法
打开matlab 找到这个标定 将双目左右目拍的图像上传(左右目最好不少于20张) 等待即可 此时已经完成标定,左下角为反投影误差,右边为外参可视化 把这些误差大的删除即可。 点击导出 此时回到主页面,即可看到成功导出 Ca…...
题解 - 莱布尼茨三角形
题目描述 世界上著名的莱布尼茨三角形如图所示,请编程输出图中排在第n行从左边数第m个位置上的数。 输入 共一行,有二个整数N 和M(N<15),两数间用空格隔开。 输出 共一行,有二个整数,两数间用“/”隔开ÿ…...
低代码开发:企业数智化转型中的关键角色与实践案例分析
引言 随着信息技术的飞速发展,企业数智化转型已成为提升竞争力和实现可持续发展的必经之路。在这一过程中,低代码开发平台作为一种新兴的开发模式,正逐渐成为企业数智化转型的关键角色。本文将探讨低代码开发在企业数智化转型中的作用&#x…...
【ubuntu24.04】PDFMathTranslate 本地PDF翻译GPU部署
https://huggingface.co/spaces/reycn/PDFMathTranslate-Docker排不上号官方都是要安装包,感觉可以本地试着源码部署一下, http://localhost:7860/官方是这个端口,但是我本地启动是:5000IDEA 里本地 backend启动效果 GUI 是监听7860的...
基于Spring Boot + Vue的摄影师分享交流社区的设计与实现
博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了多年的设计程序开发,开发过上千套设计程序,没有什么华丽的语言,只有实…...
高空坠物识别
目录 一、回答二、其他参考 prompt 有没有识别高空坠物的github项目一、回答 根据您的请求,以下是一些在GitHub上可以找到的关于识别高空坠物的项目: 1、overthecity 这是一个监控高空抛物的云端服务项目,它利用Edison的计算能力对高空抛物…...
22. 正则表达式
一、概述 正则表达式(regular expression)又称 规则表达式,是一种文本模式(pattern)。正则表达式使用一个字符串来描述、匹配具有相同规格的字符串,通常被用来检索、替换那些符合某个模式(规则&…...
阿里云数据库MongoDB版助力极致游戏高效开发
客户简介 成立于2010年的厦门极致互动网络技术股份有限公司(以下简称“公司”或“极致游戏”),是一家集网络游戏产品研发与运营为一体的重点软件企业,公司专注于面向全球用户的网络游戏研发与运营。在整个产业链中,公…...
leetcode230.二叉搜索树中第k小的元素
标签:二叉搜索树;中序遍历 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 示例 1: 输入:root [3,1,4,null,2], k 1…...
深入了解C++中const的用法
文章目录 一、C中的const如何理解?二、C中的const与C语言中的const有何区别?三、const与指针、引用的结合使用 一、C中的const如何理解? 在C中,const是一个关键字,用来表示常量性,意在告诉编译器某些变量或…...
adb连接逍遥安卓模拟器失败的问题解决方案
1、逍遥安卓模拟器进入系统应用,设置-关于平板电脑-版本号,连续点击3次以上,直到提示进入开发者模式,返回设置界面,进入【开发者选项】-【USB调试】开启,之后重启模拟器再次adb尝试连接。 2、android stud…...
【Go基础】Go算法常用函数整理
Go算法常用函数整理 使用 Go 语言编写算法题时,掌握一些常用的函数和用法可以大大提高效率。 1. 排序 (slices 包): slices.Sort(x []T): 对切片 x 进行升序排序。需要 Go 1.18 版本。T 需要实现 constraints.Ordered 接口,例如…...
【rust杂乱笔记】
code . 打开vscode fn main() {println!("hello world!") }loop{}循环; break跳出循环 // 引入三方库 use rand::Rng; // 引入标准库中的输入输出 use std::cmp::Ordering; use std::io;// main函数 先执行main函数 fn main() {// 打印的宏方法// 打印提示信息print…...
BFS算法题
目录 1.BFS 2.树里的宽搜 题目一——429. N 叉树的层序遍历 - 力扣(LeetCode) 题目二——103. 二叉树的锯齿形层序遍历 - 力扣(LeetCode) 题目三——662. 二叉树最大宽度 - 力扣(LeetCode) 题目四——…...
辅助函数:mapMutations,mutations里的方法映射到组件的methods中
或者,页面已经映射了该方法 ,直接在该页面使用该方法。也就是不用在组件函数中向仓库传递修改数据信息,直接使用映射过来的方法修改数据 修改标题 跟在methods中定义函数不一样调用mutations方法修改标题不一样,新修改的数据是要写…...
XX服务器上的npm不知道咋突然坏了
收到同事的V,说是:182上的npm不知道咋突然坏了,查到这里了,不敢动了。 咱一定要抓重点:突然坏了。这里的突然肯定不是瞬间(大概率是上次可用,这次不可用,中间间隔了多长时间&#x…...
2024年山西省第十八届职业院校技能大赛 (高职组)“信息安全管理与评估”赛项规程
2024年山西省第十八届职业院校技能大赛 (高职组)“信息安全管理与评估”赛项规程 一、赛项名称 赛项名称:信息安全管理与评估 英文名称:Information Security Management and Evaluation 赛项组别:高职教师组 赛项归属…...
Excel拆分脚本
Excel拆分 工作表按行拆分为工作薄 工作表按行拆分为工作薄 打开要拆分的Excel文件,使用快捷键(AltF11)打开脚本界面,选择要拆分的sheet,打开Module,在Module中输入脚本代码,然后运行脚本 Su…...
深入解析MySQL事务隔离级别与锁机制在银行账户业务中的应用
一、引言 在金融行业,尤其是银行账户业务中,数据的一致性和安全性至关重要。MySQL作为一种广泛使用的数据库,其事务隔离级别和锁机制在保证数据一致性方面发挥着重要作用。本文将针对银行账户查询与转账业务,探讨如何运用事务锁来…...