STT-MRAM CIM 赋能边缘 AI:高性能噪声鲁棒贝叶斯神经网络宏架构详解
引言
近年来,基于卷积神经网络(CNN)和视觉转换器(ViT)的存算一体(CIM)边缘AI设备因其低延迟、高能效、低成本等性能受到越来越广泛的关注。然而,当环境中存在噪声时(例如,雨、风),面向图像识别的边缘AI设备的推理精度会由此下降。贝叶斯神经网络(BNN)在噪声容忍度方面优于 CNN 和 ViT ,有望解决当前边缘AI设备面临的噪声问题。此外,STT-MRAM 在写入期间具备随机性、高耐用性和非易失性,这使得其与CIM的结合更有利于实现BNN。
为此,来自国立清华大学与台积电企业研究部的团队在2025 ISSCC上发表了题为《A 22nm 104.5TOPS/W μ-NMC-Δ-IMC Heterogeneous STT-MRAM CIM Macro for Noise-Tolerant Bayesian Neural Networks》的论文,提出了基于 STT-MRAM 的 Compute-in-Memory 架构,提升了BNN 在边缘设备上的性能和可靠性。下面将从当下问题、创新点、实验数据和总结与改进四个方面进行论文详解。
当下问题
边缘AI设备在可穿戴设备、环境检测、机器人、国防等领域得到了广泛应用,如图1所示[1]。然而,边缘AI设备也面临着许多挑战:功耗开销较大,难以长期待机工作,影响设备的稳定性和寿命;外部噪声干扰,影响设备内部信号的传输和处理,进而影响算法的准确性;传统 CNN/ViT 模型局限,能效不高,噪声鲁棒性不足,难以满足边缘 AI部署的 需求。
图1 边缘智能的典型应用场景
基于STT-MARM的CIM电路架构与BNN算法的结合将有望解决上述挑战,但仍面临着三个重要问题,如图2所示:1)缺乏对 BNN 友好的设备和架构的协同设计。数字电路面积开销大、功耗大,ReRAM、PVM噪声容忍度低。此外,如何实现推理准确度与能效之间的权衡也是一个重要的问题。2)需要精确且可配置的增量生成。STT-MRAM会导致写入监视器感应裕量 (WM-SM) 较小,因此在 STT-MRAM 器件中需要精确和低功耗的写入操作。3)存内计算(IMC)的乘积累加感知裕度(SM)较低。由 BL 的近远效应和大量激活的 WL 引起的 IMC 传感裕量退化,显着影响 IMC 读出精度。
图2 BNN 软件的优势和硬件实施的挑战
为解决上述三个挑战,本文提出了三个创新点:1) 使用 NMC 进行μ计算和 IMC 进行 Δ计算(μN-ΔI)的异构 CIM 结构,以实现高能效和推理精度;2)一种自比较写入终止(SCWT)方案,可增强 WM-SM 以准确生成Δ权重,同时将性能、功耗和面积的 影响降至最低;3)具有检测裕量补偿(2D-CVS-SMC)的 2D 钳位电压缩放,可提高 IMC 读出精度,同时降低功耗。
创新点
- 异构 CIM 架构(μN-ΔI):如图3所示,文中提出采用近内存计算(NMC)处理 μ 计算,内存计算(IMC)处理 Δ 计算的异构结构。通过初步分析发现,μ 计算误差对推理精度影响显著,而 Δ 计算误差影响较小。基于此,将更精确的 NMC 用于 μ 计算,更节能的 IMC 用于 Δ 计算。在计算过程中,μ-NMC 采用字输入、位加权方式,每次仅激活一条字线(WL),8bIN-1bμ 的乘积累加(MAC)操作 1 个周期就能完成,8bIN-8bμ 的 MAC 操作则需要 8 个周期;Δ-IMC 采用位输入、字加权方式,可同时激活多条 WL,1bIN-8bΔ 的 MAC 操作 1 个周期即可完成。二者共享 72×8b 自定义输入寄存器(IN-DFF),这一设计有效减少了硬件面积和功耗。同时,通过专用权重映射方案降低了 NMC 和 IMC 之间异构计算的延迟,最终实现了高能源效率和推理精度。
图3 μ-NMC 的计算流程(上),Δ-IMC 的计算流程(下)
- 自比较写终止(SCWT)方案:该方案旨在增强写监控检测裕度(WM-SMs),从而精确生成 Δ 权重。在生成 Δ 权重时,利用 STT-MRAM 写操作的随机性,依据中心极限定理(CLT)生成符合特定分布的 Δ 权重。SCWT 能够跟踪位线(BL)的远近效应以及工艺、电压、温度(PVT)变化,并且无需片上或片外参考电压或电流。在写脉冲开始时,SCWT 会采样单元电流(ISAMP),随后等待电流变化(ΔIDL)。一旦检测到电流变化,即表明 STT-MRAM 单元已切换,此时 SCWT 会终止写过程。这一操作重复 N0 次,通过总切换计数 X 计算得到 Δ 权重(Δ-weight = X - N0×p)。
-
图4 通过 SCWT 方案生成 Δ 权重的过程
从图5中可以直观地看出,与基线和传统写终止方案相比,SCWT 将 WM-SM 提高了 3.25 至 3.74 倍,同时写能量降低了 2.46 至 3.11 倍。
图5 该方案与基线和传统写终止方案性能比较
- 二维钳位电压缩放与检测裕度补偿(2D-CVS-SMC):依据图 6,该方案由二维钳位电压缩放(2D-CVS)和二维检测裕度补偿(2D-SMC)两部分构成。2D-CVS 与传统仅基于 WL 地址调整钳位电压(VCLP)的方式不同,它基于 WL 地址(XA)和激活的 WL 数量(NWL)进行二维调整。芯片制造完成后,会为每个 Δ 阵列建立 2D-V 缩放表,其中 2b 的 XA [7:6] 和 4b 的 NWL 对应一个 3b 偏置索引,通过该索引选择 8 个 VCLP [7:0] 中的一个作为 V2D-CLP。例如,当 XA 远且 NWL 大时,偏置索引大,对应的 V2D-CLP 也大;当 XA 近且 NWL 小时,偏置索引小,V2D-CLP 则小。2D-SMC 操作分为四个阶段:在 PH0 阶段,C1 充电至 VDD,X0 和 X1 放电至 VSS;PH1 阶段采样 MAC 电流(Imac);PH2 阶段捕捉失真,根据 Imac 确定 Vxc ,并且可以通过调整 SW2 导通时间来减轻工艺变化的影响;PH3 阶段进行裕度补偿和失调消除,根据 Vx0 - x1 确定补偿电流(I2D-OST),再减去参考电流(I2D-REFO)的失调电流,最终得到 I2D-OUT ,这一过程有效降低了 ADC 功耗。
图6 2D-CVS 的原理(左),2D-SMC 的四个操作阶段(右)
从图 7可知,相比传统静态 BL 钳位,2D-CVS-SMC 将 IMC 的能量效率(EFMAC)提高了 2.48 倍,MAC 检测裕度提高了 1.90 倍。
图7 相比传统静态 BL 钳位2D-CVS-SMC的性能表现
实验数据
在芯片性能方面,该芯片能有效控制功耗,适合资源受限的边缘设备。CIM宏芯片在22nm STT-MRAM工艺下,采用8b输入、8b权重、8b增量、27b输出的配置,实现了104.5 TOPS/W的卓越能效。这一能效水平在同类CIM芯片中处于领先地位,充分展现了STT-MRAM技术在能效方面的巨大潜力。为了适配吞吐量的需求并提升STT-MRAM的写入性能,研究团队提出的SCWT方案与传统写入方案相比能够将写入监控感测裕度(WM-SM)提升3.25至3.74倍,并将写入能量降低2.46至3.11倍。WM-SM的提升显著增强了写入操作的可靠性和精度,而写入能量的降低则。SCWT方案的成功验证为STT-MRAM在CIM芯片中的应用扫清了写入性能障碍,直接提升了芯片的整体能效。最终,该芯片在0.8V的低电压下实现了18ns的整体低计算延迟,满足边缘AI应用对实时性的需求。
研究团队提出的μN-ΔI异构计算架构充分发挥了NMC的高精度和IMC的高能效优势。实验结果表明,μN-ΔI架构相较于全NMC架构,能够将宏级MAC功耗降低43%,而推理精度损失仅为0.05%,几乎可以忽略不计。针对IMC架构在读取过程中可能面临的精度问题而设计的2D-CVS-SMC方案通过动态调整钳位电压并结合感测裕度补偿电路,提升了IMC的读取能效。实验中2D-CVS-SMC方案能够将IMC宏能效(EFMAC)提升2.48倍,并将MAC感测裕度(SM)提升1.90倍,增强了IMC架构在CIM芯片中的实用性。
此外,噪声鲁棒性是评价CIM芯片性能的重要指标,尤其是考虑到边缘设备的工作环境往往充斥着复杂噪声,比服务器型芯片具有更高的要求。研究团队对CIM宏芯片进行噪声环境性能测试的结果表明,在标准化的RGB噪声(σ=0.01)条件下,BNN宏芯片的推理精度退化程度比CNN低2.55倍。这一结果可以说明BNN宏芯片在噪声环境下有一定的优越性,验证了该CIM宏芯片的抗干扰潜力。
图8 CNN和BNN的抗干扰对比
总结与改进
该研究提出的22nm STT-MRAM CIM宏芯片,通过SCWT写入方案、μN-ΔI异构架构和2D-CVS-SMC读取方案等多项创新技术的集成,在能效、速度、精度和噪声鲁棒性方面均取得了显著进展。该研究成果不仅论述了STT-MRAM技术在CIM领域的巨大潜力,还验证了μN-ΔI异构架构、SCWT写入方案和2D-CVS-SMC读取优化方案的有效性。同时针对贝叶斯神经网络的硬件加速进行了深入探索,为BNN在边缘设备上的实际应用提供了较高的噪声环境下的解决方案。在未来,高性能、低功耗和高噪声鲁棒性的CIM宏芯片能够支持在资源受限的边缘设备上部署更复杂、更强大的神经网络模型,从而提升边缘设备的智能化水平,拓展边缘AI应用的范围。
[1] 李桂宏, 乔飞. 面向边缘智能设备的持续感知集成电路与系统[J]. 微纳电子与智能制造, 2019, 1(2): 47-61.
相关文章:
STT-MRAM CIM 赋能边缘 AI:高性能噪声鲁棒贝叶斯神经网络宏架构详解
引言 近年来,基于卷积神经网络(CNN)和视觉转换器(ViT)的存算一体(CIM)边缘AI设备因其低延迟、高能效、低成本等性能受到越来越广泛的关注。然而,当环境中存在噪声时(例如…...
Performance Hub Active Report
Performance Hub 是 Oracle Enterprise Manager Database Express (EM Express) 中的一项功能,可提供给定时间范围内所有性能数据的新整合视图。用户可以使用 Database Express 页面顶部的时间选择器选择时间范围,详细信息选项卡将…...
小白闯AI:Llama模型Lora中文微调实战
文章目录 0、缘起一、如何对大模型进行微调二、模型微调实战0、准备环境1、准备数据2、模型微调第一步、获取基础的预训练模型第二步:预处理数据集第三步:进行模型微调第四步:将微调后的模型保存到本地4、模型验证5、Ollama集成部署6、结果测试三、使用总结AI是什么?他应该…...
【数学建模】TOPSIS法简介及应用
文章目录 TOPSIS法的基本原理TOPSIS法的基本步骤TOPSIS法的应用总结 在 多目标决策分析中,我们常常需要在多个选择中找到一个最优解。 TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)法是一个广泛应用的决策方法…...
优选算法训练篇08--力扣15.三数之和(难度中等)
目录 1.题目链接:15.三数之和 2.题目描述: 3.解法(排序双指针) 1.题目链接:15.三数之和 2.题目描述: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &…...
【docker】--- 详解 WSL2 中的 Ubuntu 和 Docker Desktop 的区别和关系!
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。【WSL 】--- Windows11 迁移 WSL 超详细指南 —— 给室友换一个宿舍! 开发环境一、引…...
RAG 架构地基工程-Retrieval 模块的系统设计分享
目录 一、知识注入的关键前奏——RAG 系统中的检索综述 (一)模块定位:连接语言模型与知识世界的桥梁 (二)核心任务:四大关键问题的协调解法 (三)系统特征:性能、精度…...
解决stm32引脚如果选择输入模式
1. 输入模式分类 STM32的GPIO输入模式主要分为以下四种: 浮空输入(Floating Input / Input Floating) 上拉输入(Input Pull-Up) 下拉输入(Input Pull-Down) 模拟输入(Analog Inp…...
Java 填充 PDF 模版
制作 PDF 模版 安装 OnlyOffice 从 OnlyOffice 官网下载 OnlyOffice Desktop,安装过程很简单,一路下一步即可。用 OnlyOffice 制作 PDF 模版(表单) 使用 OnlyOffice 表单设计器,制作表单,如下图 注意命名…...
Maven安装与环境配置
首先我们先介绍一些关于Maven的知识,如果着急直接看下面的安装教程。 目录 Maven介绍 Maven模型 Maven仓库 Maven安装 下载 安装步骤 Maven介绍 Apache Maven是一个项目管理和构建工具,它基于项目对象模型(Project Object Model , 简称: POM)的概念…...
鸿蒙HarmonyOS NEXT应用崩溃分析及修复
鸿蒙HarmonyOS NEXT应用崩溃分析及修复 如何保证应用的健壮性,其中一个指标就是看崩溃率,如何降低崩溃率,就需要知道存在哪些崩溃,然后对症下药,解决崩溃。那么鸿蒙应用中存在哪些崩溃类型呢?又改如何解决…...
基于PySide6的CATIA自动化工具开发实战——空几何体批量清理系统
一、功能概述 本工具通过PySide6构建用户界面,结合PyCATIA库实现CATIA V5的自动化操作,提供两大核心功能: 空几何体清理:智能识别并删除零件文档中的无内容几何体(Bodies)空几何图形集清理࿱…...
【CSS文字渐变动画】
CSS文字渐变动画 HTML代码CSS代码效果图 HTML代码 <div class"title"><h1>今天是春分</h1><p>正是春天到来的日子,花都开了,小鸟也飞回来了,大山也绿了起来,空气也有点嫩嫩的气息了</p>…...
Mysql深分页的解决方案
在数据量非常大的情况下,深分页查询则变得很常见,深分页会导致MySQL需要扫描大量前面的数据,从而效率低下。例如,使用LIMIT 100000, 10时,MySQL需要扫描前100000条数据才能找到第10000页的数据。 在MySQL中解决深分页…...
使用pycel将Excel移植到Python
1.适用需求 有些工作可能长期适用excel来进行公式计算,当需要把工作流程转换为可视化界面时,开发人员不懂专业逻辑,手动摸索公式很大可能出错,而且费时费力 2.可用工具及缺点 pandas 方便进行数据处理,支持各种格…...
Apache Tomcat CVE-2025-24813 安全漏洞
Apache Tomcat CVE-2025-24813被广泛利用,但是他必须要满足两个点: 1.被广泛的使用,并且部署在服务器中。 2.漏洞必须依赖在服务器中的配置。 并且漏洞补丁已经发布。 漏洞攻击方式: CVE-2025-24813 是 Apache Tomcat 部分 PUT…...
Spring常用注解汇总
1. IOC容器与Bean管理 注解说明示例Component通用注解,标记类为Spring Bean Component public class MyService { ... } Controller标记Web控制器(应用在MVC的控制层) Controller public class UserController { ... } Service标记业务逻辑层…...
【CXX-Qt】2.1.1 为 WebAssembly 构建
CXX-Qt 及其编写的应用程序可以编译为 WebAssembly,但存在一些限制。以下是关于如何为 WASM 目标构建的详细说明。 你需要安装 Qt for WebAssembly。下一篇将展示已测试的版本。 此外,如果尚未完成,请从此处克隆 emsdk git 仓库。 使用正确…...
MySql创建分区表并且按月分区
前言 在mysql中,按月份分区,再使用分区字段时间来查询数据将会很快,因为这样只需要扫描指定的分区。因此,在处理大量数据时,使用分区表是一个非常好的选择。 1、创建表,并使用RANGE COLUMNS分区 按创建时间…...
YOLO-UniOW: 高效通用开放世界目标检测模型【附论文与源码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
Flink实战教程从入门到精通(基础篇)(一)Flink简介
目录 一、Flink 二、谁在用Flink? 三、Flink特点 1、批流统一 2、性能卓越 3、规模计算 4、生态兼容性 5、高容错性 四、Flink介绍 1、无界数据 2、有界数据流 3、有状态流处理 五、Flink的发展历史 六、Flink的核心特点 1、高吞吐和低延迟 2、结果的准确性 …...
C/C++编程:Openssl使用 Windows安装包32和64位 RSA加密/解密、AES-GCM加密/解密以及ECDSA签名/验证示例
Openssl的头文件和库 C/C使用openssl,需要openssl的头文件和库,这些都在安装包里。从http://slproweb.com/products/Win32OpenSSL.html下载已经编译好的包含 lib 和 include 文件的安装包。 也可以从官网下载源码,再编译成安装包࿰…...
Es6新特性
1. let 和 const 概念 let:用于声明 块级作用域 的变量。const:用于声明 块级作用域 的常量,声明后不可重新赋值(但可以修改对象的属性或数组的内容)。 原理 JavaScript 在 ES5 中只有全局作用域和函数作用域&…...
大数据学习(80)-数仓分层
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
StarRocks 升级注意事项
前段时间升级了生产环境的 StarRocks,从 3.3.3 升级到了 3.3.9,期间还是踩了不少坑所以在这里记录下。 因为我们的集群使用的是存算分离的版本,也是使用官方提供的 operator 部署在 kubernetes 里的,所以没法按照官方的流程进入虚…...
Java 大视界 -- Java 大数据分布式计算中的通信优化与网络拓扑设计(145)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
LabVIEW软件长时间运行导致蓝屏问题排查与优化
计算机在长时间运行LabVIEW或其他软件后出现蓝屏(BSOD),通常由硬件资源耗尽、驱动冲突或软件内存泄漏引发。本文提供从日志分析到根本性优化的全流程解决方案,确保系统稳定运行。 一、蓝屏记录查询方法 1. 查看Windows事件日志 操…...
【机密计算顶会解读】11:ACAI——使用 Arm 机密计算架构保护加速器执行
导读:本文介绍ACAI,其构建一个基于CCA的解决方案,使得机密虚拟机能够安全地使用加速器,同时保持与现有应用程序的兼容性和安全性,能够实现对加速器的安全访问。 原文链接:ACAI: Protecting Accelerator Ex…...
【WRF模拟】WPS预处理设置生成文件地址
目录 WPS 运行 geogrid.exe在 namelist.wps 中指定 geogrid.exe 输出路径WPS 运行 ungrid.exe方法 1:在 namelist.wps 中指定输出路径方法 2:手动移动 FILE:* 文件方法 3:使用环境变量 WPS_UNGRIB_OUTPUT(不推荐)另:设置文件链接地址WPS 运行 metgrid.exe方法 1:在 name…...
Midjourney使用教程—2.作品修改
当您已生成第一张Midjourney图像的时候,接下来该做什么?了解我们用于修改图像的工具!使用 Midjourney 制作图像后,您的创意之旅就不会止步于此。您可以使用各种工具来修改和增强图像。 一、放大操作 Midjourney每次会根据提示词…...
基于 ABAP RESTful 应用程序编程模型开发 OData V4 服务
一、概念 以个人图书管理为例,创建一个ABAP RESTful 应用程序编程模型项目。最终要实现的效果: 用于管理书籍的程序。读取、修改和删除书籍。 二、Data Model-数据模型 2.1 创建项目基础数据库表 首先,创建一个图书相关的表,点…...
微信小程序登陆之反向代理
一.背景 在互联网架构中,反向代理是连接客户端与后端服务的核心组件。它的核心价值在于: 安全性:隐藏内部服务细节,防止直接暴露到公网。 负载均衡:分散请求到多个后端实例,提升吞吐量。 SSL终止&#x…...
[解决] PDF转图片,中文乱码或显示方框的解决方案
在Java开发中,将PDF文件转换为图片是一项常见的需求,但过程中可能会遇到中文乱码或显示方框的问题。本文将深入探讨这一问题,并提供详细的解决方案,帮助开发者顺利地完成PDF到图片的转换。 一、问题现象 在使用Java库(如Apache PDFBox)将PDF转换为图片时,如果PDF文件中…...
面试康复训练-SQL语句
一,数据库操作 1查看所有库 show databases; --查看所有库2使用数据库 use 数据库名; --使用数据库; 3查看当前使用数据库 select database(); --查看当前使用的数据库 4 创建数据库 create databse 数据库名 charsetutf8; --创建数据库 5删…...
经典面试题:C/C++中static关键字的三大核心作用与实战应用
一、修饰局部变量:改变生命周期,保留跨调用状态 核心作用: 延长生命周期:将局部变量从栈区移至静态存储区(数据段或BSS段),生命周期与程序一致保留状态:变量在函数多次调用间保…...
Linux固定IP方法(RedHat+Net模式)
1、查看当前网关 ip route | grep default 2、配置静态IP 双击重启 3、验证...
JVM 学习前置知识
JVM 学习前置知识 Java 开发环境层次结构解析 下图展示了 Java 开发环境的层级关系及其核心组件,从底层操作系统到上层开发工具,逐步构建完整的开发与运行环境: 1. 操作系统(Windows, MacOS, Linux, Solaris) 作用&…...
数据结构---图的深度优先遍历(DFS)
一、与树的深度优先遍历之间的联系 1.类似于树的先根遍历。 递归访问各个结点: 2.图的深度优先遍历 先设置一个数组,初始值全部设置为false,先访问一个结点,在用一个循环,依次检查和这个结点相邻的其他结点,…...
QPrintDialog弹出慢的问题
开发环境 操作系统: openkylin2qt版本 : 5.15.10排查过程 首先看下问题的现象, 问题现象 复现问题的demo很简单,只能是从跟踪qt代码方面入手 void MainWindow::on_pushButton_clicked(){QPrinter printer;QPrintDialog dialog(&printer,this);dialog.exec();} 现在需要找一…...
QT-LINUX-Bluetooth蓝牙开发
BlueToothAPI QT-BlueToothApi Qt Bluetooth 6.8.2 官方提供的蓝牙API不支持linux。 D-Bus的API实现蓝牙 确保系统中安装了 BlueZ(版本需≥5.56),并且 Qt 已正确安装并配置了 D-Bus 支持。 默默看了下自己的版本.....D-BUS的API也不支持。 在 D-Bus 中,org 目录是 D-Bus…...
kvm虚拟机的基本使用
[rootkvm ~]# virsh destroy 虚拟机名 #关闭虚拟机 [rootkvm ~]# virsh undefine 虚拟机名 #删除虚拟机 [rootkvm ~]# virsh start 虚拟机名 #开启虚拟机 [rootkvm ~]# virsh console 虚拟机名 #登录虚拟机 [rootkvm ~]# virsh list --all …...
K8S中若要挂载其他命名空间中的 Secret
在Kubernetes(k8s)里,若要挂载其他命名空间中的Secret,你可以通过创建一个 Secret 的 ServiceAccount 和 RoleBinding 来实现对其他命名空间 Secret 的访问,接着在 Pod 中挂载这个 Secret。下面是详细的步骤和示例代码…...
【Java SE】抽象类/方法、模板设计模式
目录 1.抽象类/方法 1.1 基本介绍 1.2 语法格式 1.3 使用细节 2. 模板设计模式(抽象类使用场景) 2.1 基本介绍 2.2 具体例子 1.抽象类/方法 1.1 基本介绍 ① 当父类的某些方法,需要声明,但是又不确定如何实现时ÿ…...
如何理解java中Stream流?
在Java中,Stream 是 Java 8 引入的一个强大API,用于处理集合(如 List、Set、Map 等)数据的流式操作。它提供了一种声明式、函数式的编程风格,可以高效地进行过滤、映射、排序、聚合等操作。 Stream 的核心概念 流&…...
QT编程之数据库开发
一、架构层次 用户接口层 QSqlQueryModel:管理SQL查询结果,提供表格数据模型用于展示QSqlTableModel:支持直接操作数据库表(增删改查)QSqlRelationalTableModel:支持带外键关联的复杂表…...
【10】高效存储MongoDB的用法
目录 一、什么是MongoDB 二、准备工作 (1)安装MongoDB (2)安装pymongo库 三、连接MongoDB 四、指定数据库 五、指定集合 六、插入数据 (1) insert 方法 (2)insert_one(…...
使用Qdrant等其他向量数据库时需要将将numpy 数组转换为列表 确保数据能被正确处理和序列化,避免类型不兼容的问题。
在使用Qdrant等其他向量数据库时需要 转换 numpy 数组为列表主要是为了确保数据能被正确处理和序列化,避免类型不兼容的问题。具体原因如下: 序列化兼容性: 很多数据库接口、API 或者 JSON 序列化工具只能处理 Python 的内置类型(…...
mayfly-go开源的一站式 Web 管理平台
mayfly-go 是一款开源的一站式 Web 管理平台,旨在通过统一的界面简化 Linux 服务器、数据库(如 MySQL、PostgreSQL、Redis、MongoDB 等)的运维管理。以下从多个维度对其核心特性、技术架构、应用场景及生态进行详细解析: 一、核心…...
Linux中的yum和vim工具使用总结
在Linux系统管理和文本编辑中,yum和vim是两个非常重要的工具。yum作为包管理器帮助我们轻松安装和管理软件,而vim则是一个功能强大的文本编辑器。下面我将对这两个工具进行详细介绍。 一、YUM包管理器 1. YUM简介 YUM (Yellowdog Updater Modified) 是…...
笔记:代码随想录算法训练营day58:101.孤岛的总面积、102.沉没孤岛、103.水流问题、104.建造最大岛屿
学习资料:代码随想录 文中含大模型生成内容 101. 孤岛的总面积 卡码网:101. 孤岛的总面积 所以找周边都是水的陆地的方法就是找边缘的陆地然后删除它连同它的连通的陆地 深搜 #include <iostream> #include <vector> using namespac…...