当前位置: 首页 > news >正文

嵌入式芯片中的 SRAM 内容细讲

什么是 RAM?

RAM 指的是“随机存取”,意思是存储单元都可以在相同的时间内被读写,和“顺序访问”(如磁带)相对。

RAM 不等于 DRAM,而是一类统称,包括 SRAMDRAM 两种主要类型。

静态随机存取存储器(SRAM):无需周期性刷新即可保持数据,访问速度快,功耗低,适合存储运行时数据。与 Flash/ROM 区别:Flash 擅长存储代码和常量、掉电不丢失;SRAM 擅长临时数据读写、速度更快但掉电即丢失。

举个例子!!!!STM32F103C8T6 只有 20KB SRAM,你如果搞显示缓存、音频缓存、AI卷积模型、图像中间层数据,瞬间就爆了。

TFT LCD 显示缓存(Frame Buffer)

实时数据缓冲(如ADC/DMA大量采样)

临时变量堆栈、RTOS任务堆栈空间扩展

音频录放缓存、图像缓存

边缘AI推理中间层缓存

通俗易懂来说,使用电脑时,我们会提到内存和内存条的概念,电脑维修的朋友有时候会说加个内存条电脑就不卡了。实际上对于 PC 来说一些情况下卡顿就是电脑同时运行的程序太多了,电脑处理速度变慢的现象。而程序是动态加载到内存中的,一种解决方法就是增加电脑的内存来增加同时可处理的程序的数量。对于单片机也是一样的,高性能有时候需要通过增加大内存来获得。内存是存储器的一种,由于微机架构设计了不同的存储器放置不同的数据,所以我们也简单来了解一下存储器。

分类方式类别代表器件示例
按存取方式随机存取存储器 (RAM)SRAM、DRAM
顺序存取存储器 (SAM)磁带
按数据保持易失性存储器SRAM、DRAM
非易失性存储器Mask ROM、EPROM、EEPROM、Flash
按功能用途主存(内部存储器)嵌入式 MCU/SoC 内部 SRAM、DDR DRAM
辅存(外部存储器)硬盘(HDD)、固态盘(SSD)、U 盘、SD 卡
按存储介质半导体存储器SRAM、DRAM、Flash
磁性存储器磁盘、磁带
光学存储器CD、DVD、Blu‑ray
机械存储器(软盘等)3.5″ 软盘

SRAM 在 MCU 中的位置与类型

类型作用地址示例(STM32F4)特点
主 SRAM存放堆、栈、全局变量、BSS 等0x2000_0000 – 0x2002_0000容量通常几十 KB – 几百 KB
CCM/AXI SRAM高速数据交换(DSP、DMA)0x1000_0000 – 0x1000_8000无缓存访问、无等待状态、适合 DMA/Motor
备份 SRAM低功耗保持0x4000_4000 – 0x4000_8000仅在 VBAT 供电时保持

主 SRAM:系统运行的主要工作区;

CCM(Core Coupled Memory):紧耦合于 CPU,访问延迟最低;

备份 SRAM:在待机/掉电模式下由独立供电域维持,用于保存关键数据。

在我们 STM32 编程学习中我们常常只关心按读写功能分类的 ROM RAM 两种,因为嵌入式程序主要对应到这两种存储器。对于 RAM ,目前常见的是 SRAM DRAM ,它们因工作方式不同而得名,它们主要有以下的特性,
项目SRAM(静态存储器)DRAM(动态存储器)
英文全称Static Random Access MemoryDynamic Random Access Memory
存储原理使用锁存器(通常由 4~6 个晶体管)保持状态利用 MOS 电容存储电荷,易泄漏,需周期性刷新
数据保持只要不断电,可永久保存数据需定期刷新电荷,否则数据丢失
访问速度快,纳秒级较慢,几十纳秒以上
是否需要刷新
功耗静态功耗高(持续供电),动态功耗较低静态功耗低,但因频繁刷新导致动态功耗高
集成度/面积面积大、集成度低,单位成本高面积小、集成度高,单位成本低
价格便宜
稳定性稳定,不易受干扰容易受干扰,需刷新保护
常见用途MCU 内部 RAM、CPU 缓存(L1/L2)、Cache、FPGA Block RAMPC 主内存、外接内存(SDRAM、DDR 系列)、手机内存
类型举例SRAM、SSRAM(同步 SRAM)FPRAM、EDO DRAM、SDRAM、DDR、DDR2/3/4/5、RDRAM、SGRAM、WRAM 等
对于我们编写的 STM32 程序中的变量, 在默认配置下是加载到 STM32 RAM 区中执行的。而像程序代码和常量等编译后就固定不变的则会放到 ROM 区。
SRAM 芯片架构详解 IS62WV51216 方案
图中 A0~18 为地址线,总共 19 根地址线(即 2^19=512K 1K=1024 ); IO0~15 为数据线,
总共 16 根数据线。 CS2 CS1 都是片选信号,不过 CS2 是高电平有效 CS1 是低电平有效; OE
是输出使能信号(读信号); WE 为写使能信号; UB LB 分别是高字节控制和低字节控制信
号;
信号名称含义详细说明
A0~A18地址线(共 19 根)共 2¹⁹ = 524,288 地址(即 512K 地址空间)
IO0~IO15数据线(共 16 根)每个地址可读写 16 位数据(即 2 字节)
CS1芯片选择信号(低电平有效)必须为低才响应操作
CS2芯片选择信号(高电平有效)必须为高才响应操作
OE输出使能(Output Enable)为低时,读数据才会输出到 IO 引脚上
WE写使能(Write Enable)为低时执行写操作(和 OE 配合控制读写)
UBUpper Byte Enable(高字节控制)为低时,写/读数据的 D8~D15 有效
LBLower Byte Enable(低字节控制)为低时,写/读数据的 D0~D7 有效
VCC电源通常为 3.3V
GND地线-

写操作流程:

1. CS1 = 0,CS2 = 1(片选有效)
2. WE = 0(写有效)
3. OE = 1(关闭输出)
4. 地址 A0~A18 设置好
5. IO0~15 上提供写入数据
6. UB / LB 控制写哪一半数据


读操作流程:

1. CS1 = 0,CS2 = 1(片选有效)
2. WE = 1(写无效)
3. OE = 0(使能输出)
4. 地址 A0~A18 设置好
5. SRAM 把数据放在 IO0~15 上供读取
6. UB / LB 控制读取哪一半数据
 

ps:字节访问控制(UB/LB 应用场景)如果你只想访问 一个字节(8 位),不必读/写整个 16 位数据,可以使用 UBLB 控制:

UB = 0, LB = 1 → 写/读 高字节(IO8~IO15)

UB = 1, LB = 0 → 写/读 低字节(IO0~IO7)

UB = 0, LB = 0 → 写/读 全 16 位

UB = 1, LB = 1 → 禁止写/读(无操作)

这对嵌入式系统中进行字节级访问很有用,特别是在 ARM Cortex-M MCU 上通过 FMC 总线访问时。

XM8A51216 方案 

XM8A51216 使用了所谓 “XRAM免刷新技术”,其实本质还是一种 改进型异步 SRAM,其主要特点是:

不需要外部刷新(不像 DRAM)

访问速度高达 10~15ns

内部结构优化,功耗更低、价格更优

可以做到稳定供货,适合国产替代项目

FSMC 引脚功能SRAM 引脚
FSMC_A0~A18A0~A18
FSMC_D0~D15IO0~IO15
FSMC_NE3CS(片选)
FSMC_NOEOE
FSMC_NWEWE
FSMC_NBL0LB
FSMC_NBL1UB

 

STM32 FSMC引脚SRAM 引脚
FSMC_A0 ~ A18A0 ~ A18
FSMC_D0 ~ D15IO0 ~ IO15
FSMC_NE3(片选)CS1(低有效)
FSMC_NOE(读使能)OE
FSMC_NWE(写使能)WE
FSMC_NBL0 / NBL1LB / UB
GND / VCC / VCCO电源供电

 软件初始化步骤(裸机或HAL库)

RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC, ENABLE);

类型举例
SRAM(静态RAM)IS62WV51216、XM8A51216 等
NOR Flash用于存储程序或字库
NAND Flash大容量Flash
LCD(带并口)TFT、OLED 等使用 8080 接口的显示屏
扩展FPGA通过 FSMC 扩展高速通信

FSMC_NORSRAMInitTypeDef FSMC_InitStructure;
FSMC_NORSRAMTimingInitTypeDef FSMC_Timing;

FSMC_Timing.FSMC_AddressSetupTime = 2;
FSMC_Timing.FSMC_DataSetupTime = 5;
FSMC_Timing.FSMC_ClockDivision = 2;

FSMC_InitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM3;
FSMC_InitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
FSMC_InitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;
FSMC_InitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
FSMC_InitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
FSMC_InitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_InitStructure.FSMC_ReadWriteTimingStruct = &FSMC_Timing;
FSMC_InitStructure.FSMC_WriteTimingStruct = &FSMC_Timing;

FSMC_NORSRAMInit(&FSMC_InitStructure);
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM3, ENABLE);

内存访问(直接指针操作)

#define SRAM_BASE_ADDR  ((uint16_t *)0x68000000)
SRAM_BASE_ADDR[0] = 0x1234;
uint16_t val = SRAM_BASE_ADDR[0];
 

高level的应用,

带缓存机制的数据采集系统(FIFO双缓存切换)

你可以做一个「双缓冲」机制,比如用 FSMC-SRAM 存数据帧,采集和处理同时进行,一边 DMA 填数据,一边 MCU 分析处理。

FSMC+DMA 联动(真正零拷贝)

你可以设置 DMA 从 SRAM 直接输出数据到 LCD(或 DAC),配合 FSMC 写 SRAM 的位置,做到零CPU干预的持续数据流。

做成简易内存管理堆(SRAM 动态 malloc/free)

模拟内存堆,自己写内存分配器,把外扩 SRAM 当作 “扩展堆区”,适合嵌入式 Python、RT-Thread 等系统内存池扩展。

AI 模型中间层缓存

用 FSMC SRAM 放置 CNN 模型运行中间的 feature map,避免 Flash 数据频繁搬运,适合高帧率物体识别、人脸识别。

与 FPGA 联动的共享内存接口

你可以用 FSMC 接到 FPGA,FPGA 的SRAM接口与你 MCU 共享内存,完成高速的数据交互。比如 MCU 控制 + FPGA 实时图像处理的结构。

如果后续要做某个特定场景,比如:显示缓存、AI缓存、动态堆,或者搞点骚操作比如和 FPGA 联动共享内存,我可以帮你进一步设计结构,甚至搞定驱动代码。

相关文章:

嵌入式芯片中的 SRAM 内容细讲

什么是 RAM? RAM 指的是“随机存取”,意思是存储单元都可以在相同的时间内被读写,和“顺序访问”(如磁带)相对。 RAM 不等于 DRAM,而是一类统称,包括 SRAM 和 DRAM 两种主要类型。 静态随机存…...

实操基于MCP驱动的 Agentic RAG:智能调度向量召回或者网络检索

我们展示了一个由 MCP 驱动的 Agentic RAG,它会搜索向量数据库,当然如果有需要他会自行进行网络搜索。 为了构建这个系统,我们将使用以下工具: 博查搜索 用于大规模抓取网络数据。作为Faiss向量数据库。Cursor 作为 MCP 客户端。…...

位运算---总结

位运算 基础 1. & 运算符 : 有 0 就是 0 2. | 运算符 : 有 1 就是 1 3. ^ 运算符 : 相同为0 相异为1 and 无进位相加位运算的优选级 不用在意优先级,能加括号就加括号给一个数 n ,确定它的二进制位中第 x 位是 0 还是 1? 规定: 题中所说的第x位指:int 在32位机器下4个…...

从0开始搭建一套工具函数库,发布npm,支持commonjs模块es模块和script引入使用

文章目录 文章目标技术选型工程搭建1. 初始化项目2. 安装开发依赖3. 项目结构4. 配置文件tsconfig.json.eslintrc.jseslint.config.prettierrc.jsrollup.config.cjs创建 .gitignore文件 设置 Git 钩子创建示例工具函数8. 版本管理和发布9 工具函数测试方案1. 安装测试依赖2. 配…...

精通 Spring Cache + Redis:避坑指南与最佳实践

Spring Cache 以其优雅的注解方式,极大地简化了 Java 应用中缓存逻辑的实现。结合高性能的内存数据库 Redis,我们可以轻松构建出响应迅速、扩展性强的应用程序。然而,在享受便捷的同时,一些常见的“坑”和被忽视的最佳实践可能会悄…...

DSP28335入门学习——第一节:工程项目创建

写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做! 本文写于:2025.04.20 DSP28335开发板学习——第一节:工程项目创建 前言开发板说明引用解答…...

Docker Registry(镜像仓库)

官方架构 Docker 使用客户端 - 服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。Docker 容器通过 Docker 镜像来创建。 Docker 仓库(Registry):Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hu…...

通过Dify快速搭建本地AI智能体开发平台

1. 安装Docker Desktop 访问 Docker官网 点击Download Docker Desktop,直接按照官方要求来就可以。 # 这串命令就像魔法咒语,在黑色窗口(命令提示符)里输入就能检查安装是否成功 docker --version2.安装dify 3.运行 Ollama 大…...

计算机视觉与深度学习 | Transformer原理,公式,代码,应用

Transformer 详解 Transformer 是 Google 在 2017 年提出的基于自注意力机制的深度学习模型,彻底改变了序列建模的范式,解决了 RNN 和 LSTM 在长距离依赖和并行计算上的局限性。以下是其原理、公式、代码和应用的详细解析。 一、原理 核心架构 Transformer 由 编码器(Encod…...

skywalking agent 关联docker镜像

Apache SkyWalking 提供了多种方式来部署和使用 SkyWalking Agent,包括在 Docker 容器中运行的应用。虽然 SkyWalking Agent 本身不是一个独立的 Docker 镜像,但你可以通过几种方式将 SkyWalking Agent 集成到你的 Docker 应用中。 方式一:手…...

【中间件】nginx将请求负载均衡转发给网关,网关再将请求转发给对应服务

一、场景 前端将请求发送给nginx,nginx将请求再转发给网关,网关再将请求转发至对应服务。由于网关会部署在多台服务器上,因此nginx需要负载均衡给网关发请求。nginx所有配置均参照官方文档nginx开发文档,可参考负载均衡板块内容 二…...

Milvus(1):什么是 Milvus

Milvus 由 Zilliz 开发,并很快捐赠给了 Linux 基金会下的 LF AI & Data 基金会,现已成为世界领先的开源向量数据库项目之一。它采用 Apache 2.0 许可发布,大多数贡献者都是高性能计算(HPC)领域的专家,擅…...

第十六节:高频开放题-React与Vue设计哲学差异

响应式原理(Proxy vs 虚拟DOM) 组合式API vs Hooks React 与 Vue 设计哲学差异深度解析 一、响应式原理的底层实现差异 1. Vue 的响应式模型(Proxy/数据劫持) Vue 的响应式系统通过 数据劫持 实现自动依赖追踪: • …...

【Hot100】 240. 搜索二维矩阵 II

目录 引言搜索二维矩阵 II我的解题贪心求解解题思路详解搜索策略(以从右上角开始为例)为什么这种方法有效? 完整代码实现复杂度分析示例演示 🙋‍♂️ 作者:海码007📜 专栏:算法专栏&#x1f4a…...

每日面试实录·携程·社招·JAVA

📍面试公司:携程 👜面试岗位:后端开发工程师(社招) 🕐面试时长:约 50 分钟 🔄面试轮次:第 1 轮技术面 ✨面试整体节奏: 这场携程的社招 Java 一面…...

Oracle--用户管理

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 用户管理在 Oracle 数据库中至关重要。一个服务器通常只运行一个 Oracle 实例,而一个 Oracle 用户代表一个用户群,他们通过该用…...

20.3 使用技巧5

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 20.3.8 CellContentClick事件 当增加新按钮列或者超链接列后,按钮或者超链接,会发现,按钮或者超链…...

Kubernetes相关的名词解释Metrics Server组件(7)

什么是Metrics Server? Metrics Server 是 Kubernetes 集群中的一个关键组件,主要用于资源监控和自动扩缩容。 kubernetes 从1.8版本开始不再集成cadvisor,也废弃了heapster,使用metrics server来提供metrics。那么...... 什么…...

17.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--SonarQube部署与配置

在将孢子记账系统从单体架构转向微服务架构的过程中,代码质量的管理变得尤为重要。随着项目规模的扩大和团队协作的深入,我们需要一个强大的工具来帮助我们持续监控和改进代码质量。我们首选SonarQube,它能够帮助我们识别代码中的潜在问题、技…...

计算机是如何看待数据的?

一、计算机如何“看待”数据? 物理层本质: 计算机的所有数据最终以二进制(0和1)在电路中表示(高电平1,低电平0)。 无论你用何种进制描述数据(如十六进制 0xA1 或十进制 161&#xf…...

25.4.20学习总结

如何使用listView组件来做聊天界面 1. 什么是CellFactory? 在JavaFX中,控件(比如ListView、TableView等)用Cell来显示每一条数据。 Cell:代表这个单元格(即每个列表项)中显示的内容和样式。 …...

SpringBoot3集成ES8.15实现余额监控

1. gradle依赖新增 implementation org.springframework.boot:spring-boot-starter-data-elasticsearch implementation co.elastic.clients:elasticsearch-java:8.15.02. application.yml配置 spring:elasticsearch:uris: http://localhost:9200username: elasticpassword: …...

STM32基础教程——串口收发

目录 前言 字长设置 ​编辑 停止位 起始位侦测 波特率 1. UART波特率的基本原理 2. 为什么需要先除以分频因子(USARTDIV)? (1)PCLK频率太高 (2)分频因子的作用 3. 为什么还需要再除以…...

Matlab 步进电机传递函数模糊pid

1、内容简介 Matlab 210-步进电机传递函数模糊pid 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

unordered_map、unordered_set详解

深入理解C中的 unordered_map 和 unordered_set 在C标准库中,unordered_map 和 unordered_set 是两个基于‌哈希表(Hash Table)‌实现的高效容器。它们以‌O(1)‌的平均时间复杂度实现快速查找、插入和删除操作,特别适合需要高频…...

详解trl中的GRPOTrainer和GRPOConfig

引言 在大型语言模型(LLM)的强化学习微调领域, Group Relative Policy Optimization (GRPO) 算法因其高效性和资源友好性受到广泛关注。Hugging Face的 TRL (Transformer Reinforcement Learning) 库通过GRPOTrainer和GRPOConfig提供了该算法的开箱即用实现。本文将深入解析…...

【C++】多态 - 从虚函数到动态绑定的核心原理

📌 个人主页: 孙同学_ 🔧 文章专栏:C 💡 关注我,分享经验,助你少走弯路 文章目录 1. 多态的概念2. 多态的定义及实现2.1 多态的构成条件2.1.1实现多态还有两个必须重要条件:2.1.2 虚…...

项目预期管理:超越甘特图,实现客户价值交付

引言 在项目管理实践中,许多项目经理习惯于将注意力集中在甘特图的进度条上,关注任务是否按时完成、里程碑是否达成。然而,这种以计划管理为中心的方法往往忽略了项目管理的核心目标:满足客户预期,交付真正的价值。项…...

FISCO 2.0 安装部署WeBASE与区块链浏览器(环境搭建)

FISCO BCOS 2.0 安装部署WeBASE与区块链浏览器-对应的官网地址: WeBASE平台:https://webasedoc.readthedocs.io/zh-cn/latest/docs/WeBASE/install.html 区块链浏览器:https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/br…...

xss学习3之服务端session

一、服务端的Session 1. cookie和session 1)cookie和session对比 cookie: 保存在客户端,包含所有key-value信息,浏览器访问多个网站时会积累大量cookie,占用存储空间,并在每次请求时携带所有cookie,增加…...

23种设计模式-结构型模式之适配器模式(Java版本)

Java 适配器模式(Adapter Pattern)详解 🔌 什么是适配器模式? 适配器模式用于将一个类的接口转换成客户端所期望的另一种接口,让原本接口不兼容的类可以协同工作。 📦 就像插头转换器,让不同…...

【2025计算机网络-面试常问】http和https区别是什么,http的内容有哪些,https用的是对称加密还是非对称加密,流程是怎么样的

HTTP与HTTPS全面对比及HTTPS加密流程详解 一、HTTP与HTTPS核心区别 特性HTTPHTTPS协议基础明文传输HTTP SSL/TLS加密层默认端口80443加密方式无加密混合加密(非对称对称)证书要求不需要需要CA颁发的数字证书安全性易被窃听、篡改、冒充防窃听、防篡改…...

使用安全继电器的急停电路设计

使用安全继电器的急停电路设计 一,急停回路的设计1,如何将急停接到线路当中?2,急停开关 如何接到安全继电器中 一,急停回路的设计 急停是每一个设备必不可少的部分,因为关乎安全,所以说所以说他…...

SpringCloud概述和环境搭建

SpringCloud概述和环境搭建 一.微服务的引入1.单体架构2.集群和分布式架构3.集群和分布式4.微服务架构4.微服务的优缺点 二.微服务解决方案-SpringCloud1.Spring Cloud简介2.Spring Cloud版本3.Spring Cloud实现方案4.Spring Cloud Alibaba 三.环境搭建1.安装JDK172.Ubantu上下…...

System.out 详解

System.out 详解 System.out 是 Java 提供的标准输出流(PrintStream 类型),默认关联控制台(Console),用于向终端打印文本信息。它是 Java 中最常用的输出方式之一,尤其在调试和命令行程序开发中。 1. 核心知识点 (1)System.out 的本质 类型:PrintStream(字节流,但…...

每天学一个 Linux 命令(28):ln

​​可访问网站查看,视觉品味拉满: http://www.616vip.cn/28/index.html ln 是 Linux 中用于创建文件或目录链接的命令,主要生成硬链接(Hard Link)和符号链接(Symbolic Link,软链接)。链接常用于文件共享、快捷访问或版本管理。 命令格式 ln [选项] 源文件 目标链接链…...

【微知】服务器如何获取服务器的SN序列号信息?(dmidecode -t 1)

文章目录 背景命令dmidecode -t的数字代表的字段 背景 各种场景都需要获取服务器的SN(Serial Number),比如问题定位,文件命名,该部分信息在dmi中是标准信息,不同服务器,不同os都能用相同方式获…...

4.20刷题记录(单调栈)

第一部分:简单介绍 单调栈我的理解是在栈中存储数字出现的位置,然后通过遍历比较当前栈顶元素与当前元素的大小关系,从而确定逻辑相关顺序。 第二部分:真题讲解 (1)739. 每日温度 - 力扣(Lee…...

Opencv图像处理:模板匹配对象

文章目录 一、模板匹配1、什么是模板匹配?2、原理 二、单模板匹配(代码实现)1、预处理2、 开始模板匹配并绘制匹配位置的外接矩形 三、多模板匹配(代码实现)1、读取图片和模板2、模板匹配3、设置阈值1)阈值…...

Web3.0热门领域NFT项目实战课程

课程大小:3.8G 课程下载:https://download.csdn.net/download/m0_66047725/90616383 更多资源下载:关注我 深度掌握Solidity合约开发,助力成为抢手的Web3.0开发工程师 深入Web3.0技术的人才,一将难求。本课程由We…...

DAY 50 leetcode 1047--栈和队列.删除字符串中的所有相邻重复项

题号1047 给出由小写字母组成的字符串 s,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 s 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。 import java.util.Ar…...

单例模式与消费者生产者模型,以及线程池的基本认识与模拟实现

前言 今天我们就来讲讲什么是单例模式与线程池的相关知识,这两个内容也是我们多线程中比较重要的内容。其次单例模式也是我们常见设计模式。 单例模式 那么什么是单例模式呢?上面说到的设计模式又是什么? 其实单例模式就是设计模式的一种。…...

微信小程序通过mqtt控制esp32

目录 1.注册巴法云 2.设备连接mqtt 3.微信小程序 备注 本文esp32用的是MicroPython固件,MQTT服务用的是巴法云。 本文参考巴法云官方教程:https://bemfa.blog.csdn.net/article/details/115282152 1.注册巴法云 注册登陆并新建一个topic&#xff…...

QML、Qt Quick 、Qt Quick Controls 2

一、概念 基本关系 QML 是声明式语言,用于描述用户界面。声明式语法(类似JSON+JavaScript),定义UI结构和行为。 Qt Quick 是 QML 的标准库,提供基本类型和功能。提供QML语言运行时的基础能力,相当于QML的"标准模板库(STL)"。 Quick Controls 2 是基于 Qt Quic…...

基于maven-jar-plugin打造一款自动识别主类的maven打包插件

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...

利用 HEMT 和 PHEMT 改善无线通信电路中的增益、速度和噪声

本文要点 高电子迁移率晶体管 (High electron mobility transistors ,HEMTs) 和应变式异质接面高迁移率晶体管(pseudomorphic high electron mobility transistors ,PHEMTs) 因其独特的、可提高性能的特点而…...

探秘C#用户定义类型:突破预定义的边界

在C#的编程世界里,除了系统提供的16种预定义类型,开发者还拥有强大的自主能力——创建自己的用户定义类型。这大大拓展了编程的灵活性和可扩展性,让开发者能根据具体需求定制数据结构和功能。 六种用户定义类型 类类型(class&am…...

idea中导入从GitHub上克隆下来的springboot项目解决找不到主类的问题

第一步:删除目录下的.idea和target,然后用idea打开 第二步:如果有需要,idea更换jdk版本 原文链接:https://blog.csdn.net/m0_74036731/article/details/146779040 解决方法(idea中解决)&#…...

北理工宫某的瓜ppt下载地址

关于“北理工宫某瓜”PPT下载地址相关技术探讨 摘要:本文围绕“北理工宫某瓜”事件中PPT下载地址相关情况展开分析,探讨了网络资源传播的技术机制、涉及的网络安全问题以及围绕此类资源分享应遵循的规范和注意事项,旨在从技术角度对这类网络…...

[论文阅读]Making Retrieval-Augmented Language Models Robust to Irrelevant Context

Making Retrieval-Augmented Language Models Robust to Irrelevant Context [2310.01558v2] Making Retrieval-Augmented Language Models Robust to Irrelevant Context 检索增强语言模型(RALMs),它包含一个检索机制,以减少将…...