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

EEG2Rep自监督脑电大模型文献阅读

 原文网址:

EEG2Rep: Enhancing Self-supervised EEG Representation... - Google 学术搜索icon-default.png?t=O83Ahttps://scholar.google.com/scholar?hl=zh-CN&as_sdt=0%2C5&q=EEG2Rep%3A+Enhancing+Self-supervised+EEG+Representation+Through+Informative+Masked+Inputs&btnG=

1.文章背景

1.面临的挑战

主要来自于EEG data自身的缺陷

1.低信噪比

2.不同被试之间,脑电信号强度存在的差异较大

3.数据没有明确的分割

2.解决的手段

1.先通过一层encoder来提取EEG的高维特征以减少噪声,再进行self-prediction(理由:abstract feature中很可能包含更少的噪声)

2.abstract features已经经过正则化,信号强度差异不再那么大了

3.采用掩码技术,利用创新的SSP掩码技术

我个人觉得,这个掩码技术是不是对于解决分割来说有点牵强,毕竟mask技术感觉比较强分,但是SSP这种创新过的比起MAE应该会好点,没有那么强分,不那么随机

2.相关工作

在EEG分析中,两种常用的自监督学习方法invariance-based method(基于不变性的方法)和self-prediction method(自预测方法),本文采用自预测方法

1.基于不变性的方法

基于不变性的方法的核心思想就是相似的输入就应该给予它们相近的embedding或者说经过相同的网络之后应该获得相近的representation,基于这种思想,该方法通常的做法是对同一输入使用各种各样的增强手段,以达到获得相似输入的目的,然后构造Loss Function去使得它们得到的representation的差距尽可能的小,以此来指导encoder的训练。

存在的问题 

1.对于EEG,直接从CV领域粘过来的数据增强方法会破坏脑电信号的结构,破坏其中的语义信息

对于这个问题,我个人的理解是:

我们可以把某种特定的数据增强手段看作是一种系统函数,原始数据是我们系统的输入,经过这个系统后会给我们一个由输入进行某种变换之后得到的输出(现在我们假设这个系统函数做的事情是会把原始的信号进行采样,我觉得在CV领域其实是相当于马赛克化,用一点的值去代表一个小区域的值)

学过DSP的可能会知道,时域的采样,对应的频域就会周期延拓,如果采样频率取的不合适还会出现频域混叠。那我们以这种思想去拓展的话,假设有某种数据增强方法,在CV领域可能只是让图片变糊了,但是对于一个信号图片,它的频域信息将会完全改变,信号也就不是原来的信号了,那经过数据增强后的EEG与原始输入的EEG的相似性从何谈起,可能毫不相关,下面放张图感受下。我们可以看到在频域信号一下变成了一堆,那对于我们的脑电信号,本来也就0~40Hz比较重要,现在如果只是单纯变多了还可以直接滤掉,关键是不同于普通的通信系统,我们这里增强手段进行了什么操作我们是未知的,如果真的只是进行了采样,那我们也不清楚采样频率,如果采样频率过低,发生了频率混叠,那就丸辣!!

2.对于不同的EEG数据集,使用相同的数据增强手段可能会引入严重的偏差,不利于使用多样数据集进行预训练

论文中给的一个例子是:

对于睡眠阶段分类任务的数据集来说,低频的信号对于这个分类任务比较有用,而且人在睡眠时确实EEG多为低频信号。但是对于情绪识别数据集来说,高频信号则更有用,人在表现某种情绪时,也多出现为高频信号。不利于使用多样的数据集进行预训练,我个人的理解就是:如果基于某种增强手段会导致低频信号减弱,那么确实会有利于情绪识别任务的进行,但是对于睡眠阶段分类任务,脑电信号可能就不剩什么了。预训练的目的肯定还是要进行下游任务,那么对于下游任务是睡眠阶段分类任务的情况,结果肯定就不好,模型的泛化能力不太行。

2.自预测方法

基于自预测方法的核心思想是基于被破坏的输入去预测没被破坏前的输入,使预测值与原始值二者之间的差距尽可能的小,基于这种思想,该方法通常的做法是随机破坏原始输入数据,让被破坏的数据和未被破坏的数据经过相同(或相似)的encoder后得到各自的representation,通过最小化它们之间的差距来优化encoder。

存在的问题

1.获取到的特征的语义信息的含量不如基于不变性的方法获得的特征

个人理解:基于自预测方法毕竟是破坏了原始的输入的,mask之后,很多语义信息更是直接消失,语义信息的丰富度必然是不如基于不变性的方法的(所以本文取得的最优效果自己也说了只是在自预测方法领域)

3.模型架构解释

1.MAE模型架构

在MAE模型架构中,主要就是encoder模块与decoder模块,但是过程总的可以分为4小块

sample与encoder

第一步,我们先将完整的图片分成很多小小的patch,在这里也就是小方块

然后我们进行抽取(sample),我们只取出一部分patch,其它部分我们把它都mask掉,用灰色小方块表示masked,抽取的部分我们重新排列组合后就可以作为我们encoder的输入往下传

对于sample与encoder,它们所做的工作是从我们原始的输入数据中抽取有用的特征,希望可以提取到更高维的更有效的特征,以保证提取的特征足以完成下游的任务。其实这两步操作中隐含着一种意思就是:原始的输入中包含的信息可能比较重复、比较冗余,所以需要进行抽取,只要部分的信息,如果能再经过一个encoder,那么包含的信息就可能会更加精华,这时候如果再去经过decoder的话应该就会得到不错的输出结果。在进行下游任务时,我们往往只取出训练好的encoder来进行Fine-tune。

可能存在的问题

但是这里其实可能会存在问题,抽取的过程如果是随机的,那么能保证抽取到的信息相比于原始的输入是更有效的信息吗?说不定抽到了比例更大的冗余信息呢?(狗头)

这也是我认为作者在抽取方法上进行了创新的原因,也就是本文作者的创新点之一SSP掩码技术

combine与decoder

之后我们将得到的高维特征向量与我们之前原始数据中的mask部分相结合,作为decoder的输入,并根据特征向量以及mask部分的数据去试图还原出原始的输入

2.EEG领域为什么要借鉴MAE这种掩码方式?

提到掩码,我觉得很多人最先想到的肯定都是Bert模型,也就是在encoder的输入端输入的数据就直接是掩码过的,其实也就类似于MAE中decoder在做的事情。

那MAE中多做的sample和encoder是在干嘛呢?

其实就是认为原始输入中含有比较多的冗余信息,用来试图提高输入携带的有用信息

在EEG领域为什么不能直接用Bert呢?

因为相比于文本、甚至是图片这些输入的patch之间具有比较强相关,语义信息比较丰富的数据来说,EEG通常含有较多的噪声,信噪比较小,使用MAE这种方法,先提取出我们原始EEG中包含的更高维的语义信息有利于特征的提取。

更清楚的解释一下:

在Bert模型里,我们做的事情其实是知道:今天    天气     很    不     运动,只是不知道mask的部分(热  适合),我们要做的是考虑上下文的信息后去预测出热    适合,这就可以了,很简单

但是相比于Bert模型,在EEG的模型中那些没掩码的EEG数据中的信息我们其实也不是很清楚,有噪声甚至有我们尚且不知道的成分,所以在直接应用Bert的模型之前,最好的做法就是先确定一下没有掩码的部分包含了什么比较准确的信息?也就有了MAE中的sample和encoder,有了比较准确的未掩码部分的信息再送入Bert效果自然更好

3.类比MAE谈本文模型

本文模型主要由两个分支构成,其中红线以上的部分为target network,红线以下的部分为context network

target network

input embedding被分割成patches之后就直接经过了encoder生成了高维特征向量,这些由原始数据(未经掩码处理)产生的特征向量是用来指导下支路(context network)网络中encoder的训练的,具体来说,这些特征向量是用来创建损失函数的。

context network

这个网络可以说才是本文的重点,它的结构也与MAE结构几乎类似

第一步,进行抽取(sample),从原始的EEG patches(也就是 target network中的EEG patches)中抽取一部分的patch,其余部分掩码,在论文的模型中掩码的部分直接没画了。

需要注意的是,它这里进行了N次的抽样,也就是从P1~PN,每次抽样结果都不一样,这样做的目的是增多通过提取的patch生成的特征向量中所包含的语义信息。我推测这样能增强包含的语义信息应该是因为在经过N次随机抽取的过程中,如果是某些patch连接在一起就会有特定的一些语义信息的话,增加抽取的次数,它们连在一起的可能性会增加,也就增加了提取到更多语义信息的可能性。其实这也解释了为什么对于基于不变性的方法来说提取到的语义特征向量更好,信号连续必然语义信息更多。像这种mask我个人感觉还是强制分开EEG的,并不像按事件分成epoch那样,对应的epoch有对应的含义什么的,所以感觉可能还是基于不变性的方法要好一些。

第二步,把这些抽取的EEG Patches送入encoder以生成高维的,能很好提取ptach中的有用信息的特征向量

第三步,结合之前原始数据中被mask的部分,作为predictor(也就是MAE中的decoder)的输入,最后输出

当然,context network与target network的输出特征进行对比以缩小它们之间的差距为指导,来优化encoder

4.模型的应用方法

1.Liner Probing

冻结encoder(特征提取器),也就是encoder中的参数不变,在encoder的输出后直接加一个线性分类器,用来评估模型的特征提取效果。

2.Fine Tuning

之前的步骤都只是在用没有标签的数据进行自监督的预训练,在Fine Tuning中,则用带有标签的数据集进行有监督的训练,整个模型的参数都可以改变,一般以较小的学习率进行模型的微调。

相关文章:

EEG2Rep自监督脑电大模型文献阅读

原文网址: EEG2Rep: Enhancing Self-supervised EEG Representation... - Google 学术搜索https://scholar.google.com/scholar?hlzh-CN&as_sdt0%2C5&qEEG2Rep%3AEnhancingSelf-supervisedEEGRepresentationThroughInformativeMaskedInputs&btnG 1.文…...

【前端知识】React简单入门

React语法介绍 概述一、产生背景与发展历程二、主要特点三、技术细节四、应用场景与优势五、学习与实践 JSX语法一、JSX的基本概念二、JSX的基本使用三、JSX中的JavaScript表达式四、JSX的条件渲染五、JSX的列表渲染六、JSX的样式处理七、JSX的其他注意事项 基础语法一、基础概…...

高通---Camera调试流程及常见问题分析

文章目录 一、概述二、Camera配置的整体流程三、Camera的代码架构图四、Camera数据流的传递五、camera debug FAQ 一、概述 在调试camera过程中,经常会遇到各种状况,本篇文章对camera调试的流程进行梳理。对常见问题的提供一些解题思路。 二、Camera配…...

电压电流声音信号采集与分析系统

基于Labview的电压电流与声音信号采集与分析系统可以同时采集:电压、电流与振动信号。该系统部件可以采集传感器的真实数据,而且可以对采集的信号进行时域与频域分析,并可以实时显示历史数据,保存历史数据。具体的功能如下&#x…...

MongoDB语法及MongoTemplate用法

文章目录 概念操作数据库语法数据库及文档操作文档操作 整合springboot的MongoTemplate用法springboot配置插入删除更新查询 概念 1.MongoDB 是一个文档数据库,数据以 BSON 方式存储(类似于json) 2.文档(Document)&am…...

【git reset】本地下载特定历史提交哈希值的github文件【未联网服务器】进行git reset操作

本地电脑下载git文件,并进行git reset操作 问题描述:解决方法:方法1:直接下载特定版本的github压缩包。方法二: 在本地windows电脑上安装git工具进行git reset版本回退,之后上传相应版本的压缩包到服务器上…...

【开源安全保护】如何安装JumpServer堡垒机

【开源安全保护】如何安装JumpServer堡垒机 什么是堡垒机 大家好,我是星哥,今天我以前来认识堡垒机 堡垒机(Bastion Host),也称为跳板机(Jump Server),是指在计算机网络中&#x…...

log4j漏洞复现--vulhub靶场

声明:学习过程参考了同站的B1g0rang大佬的文章 Web网络安全-----Log4j高危漏洞原理及修复(B1g0rang) CVE-2021-44228 RCE漏洞 Log4j 即 log for java(java的日志) ,是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输…...

K8s面试系列:K8s常用 API 资源总结速记

写在前面 博文内容为 K8s 中常用的API 资源简单总结适合对K8s 有基本认知,温习,面试准备的小伙伴内容涉及:API 资源组成 ,SSA 和 CSA 资源操作方式,以及下面资源类别简单描述 工作负载:Deployments,StatefulSets,HorizontalPodAutoscaler (HPA)…服务: Service,Ingress,E…...

汽车免拆案例 | 2007款宝马650i车发动机偶尔无法起动

故障现象 一辆2007款宝马650i车,搭载N62B48B发动机,累计行驶里程约为26万km。车主反映,发动机偶尔无法起动,故障频率较低,十几天出现1 次,且故障出现时起动机不工作。 故障诊断  接车后试车,…...

前端(三)html标签(2)

html标签(2) 文章目录 html标签(2)一、列表标签二、表格三、form表单 一、列表标签 html中的列表分为无序列表、有序列表和自定义列表。 <!--无序列表的使用--> <!--pycharm中可以用ul>li*3tab的快捷键快速生成无序列表--> <ul><li>秒杀</li&g…...

D91【python 接口自动化学习】- pytest基础用法

day91 pytest的setup&#xff0c;setdown详解&#xff08;三&#xff09; 学习日期&#xff1a;20241207 学习目标&#xff1a;pytest基础用法 -- pytest的setup&#xff0c;setdown详解&#xff08;三&#xff09; 学习笔记&#xff1a; setup、teardown详解&#xff08;三…...

云桌面:云计算桌面

目录 云桌面的定义和核心概念 技术架构详解 主流架构详解 管理成本分析 安全性措施 应用场景详解 云桌面的定义和核心概念 云桌面是一种通过云计算技术提供的虚拟桌面服务&#xff0c;它允许用户通过网络访问远程服务器上的虚拟机&#xff0c;这些虚拟机为用户提供了一个…...

Word处理表格的一些宏

目录 1、表格首行居中2、表格内容靠左上下居中&#xff08;排除首行&#xff09; 1、表格首行居中 说明&#xff1a; 遇到错误将进行捕获&#xff0c;然后继续处理下一个表格 宏&#xff1a; Sub 表格首行居中()Dim tbl As tableOn Error Resume Next 错误时继续执行下一个…...

Linux网络编程---本地套接字

1.概述 本地套接字 1&#xff1a;作用:本地的进程间通信 2.有关系的进程间通信 3.没有关系的进程间的通信 本地套结字实现流程和网络套结字实现相似&#xff0c;一般采用tcp 二.通信流程 本地套结字通信的流程:1.服务器端:1.1 int fd socket(AF_UNIX/AF_LOCAL,…...

C#自动验证发票真假的程序

C#自动验证发票真假的程序 using Microsoft.Azure.CognitiveServices.Vision.ComputerVision; using Microsoft.Azure.CognitiveServices.Vision.ComputerVision.Models; using System; using System.IO; using System.Threading.Tasks;namespace InvoiceValidation {class Pr…...

后端技术进阶知识总结

前端开发、后端开发、AI算法与应用等技术进阶知识总结 前言1.前端开发2.后端开发3.AI算法3.1 Studio级别的AI工具使用 前言 本文不记录基础性问题和详细解决方案。只记录key idea。 1.前端开发 2.后端开发 依赖注入&#xff08;Dependency Injection&#xff0c;简称DI&…...

opencv复习

目录 1.core 1.图像变换 1.1 affine仿射变换 1.2 透视变换 2.四元数&#xff08;旋转&#xff09; 2.1 轴角转四元数 2.2 旋转矩阵转四元数 2.3 欧拉角转旋转矩阵 2.4 四元数转旋转矩阵 2.5 四元数用eigen用的比较多 2. imgproc. Image Processing 2.1 bilateralF…...

【Unity高级】在编辑器中如何让物体围绕一个点旋转固定角度

本文介绍如何在编辑器里让物体围绕一个点旋转固定角度&#xff0c;比如上图里的Cube是围绕白色圆盘的中心旋转45度的。 目标&#xff1a; 创建一个在 Unity 编辑器中使用的旋转工具&#xff0c;使开发者能够在编辑模式下快速旋转一个物体。 实现思路&#xff1a; 编辑模式下…...

通过IP远程连接MySQL服务时不允许连接到这个MySQL服务器

当你在连接Mysql时报这个错误时 is not allowed to connect to this MySQL server&#xff0c;意思是 MySQL 服务器不允许来自 IP 地址的连接。这通常是由于 MySQL 服务器的访问控制列表&#xff08;ACL&#xff09;限制了特定主机的连接。 要解决这个问题&#xff0c;你需要授…...

试题转excel;pdf转excel;试卷转Excel,word试题转excel

一、问题描述 一名教师朋友&#xff0c;偶尔会需要整理一些高质量的题目到excel中 以往都是手动复制搬运&#xff0c;几百道题几乎需要一个下午的时间 关键这些事&#xff0c;枯燥无聊费眼睛&#xff0c;实在是看起来就很蠢的工作 就想着做一个工具&#xff0c;可以自动处理…...

wordpress网站使用Linux宝塔面板和SQL命令行导入导出超过50M限制的数据库

wordpress网站使用Linux宝塔面板添加mysql数据库&#xff0c;使用phpMyAdmin工具导入sql数据库文件&#xff0c;会有最大限制50M。即使把sql数据库文件压缩为gzip或zip压缩包&#xff0c;压缩包也超过50M&#xff0c;该怎么办&#xff1f;怎样导入超过50M数据库呢&#xff1f; …...

VCP-CLIP A visual context prompting modelfor zero-shot anomaly segmentation

GitHub - xiaozhen228/VCP-CLIP: (ECCV 2024) VCP-CLIP: A visual context prompting model for zero-shot anomaly segmentation 需要构建正样本&#xff0c;异常样本&#xff0c;以及对应的Mask...

【原生js案例】webApp实现鼠标移入移出相册放大缩小动画

图片相册这种动画效果也很常见&#xff0c;在我们的网站上。鼠标滑入放大图片&#xff0c;滑出就恢复原来的大小。现在我们使用运动定时器来实现这种滑动效果。 感兴趣的可以关注下我的系列课程【webApp之h5端实战】&#xff0c;里面有大量的css3动画效果制作原生知识分析&…...

杂谈随笔-关于unity开发游戏

最近有在做unity的游戏开发&#xff0c;都是自学&#xff0c;甚至没有完整的课程体系…… 在犹豫要不要出系列教程&#xff0c;帮助新手快速入门的同时算是巩固一下基础知识。 那这篇文章先谈谈我对于引擎开发游戏的一些小观点&#xff0c;算是做了这么十几个星期的微不足道的…...

base64转file文件对象

1.base64转file文件对象 //将base64转换为文件 dataURLtoFile(dataurl, filename) { var arr dataurl.split(,),mime arr[0].match(/:(.*?);/)[1],bstr atob(arr[1]),n bstr.length,u8arr new Uint8Array(n);while (n--) {u8arr[n] bstr.charCodeAt(n);}return new Fil…...

【jvm】为什么要有GC

目录 1. 自动内存管理2. 提升程序稳定性3. 优化性能4. 跨平台能力5. 分代回收策略 1. 自动内存管理 1.JVM中的GC机制负责自动管理内存&#xff0c;这意味着开发人员不需要手动分配和释放内存。2.这一特性大大简化了Java程序的内存管理&#xff0c;降低了内存泄漏和内存溢出等问…...

开发指南085-大号版elementUI

ElementUI有些地方显示实在太小&#xff0c;不方便操作&#xff0c;需要放大&#xff1a; 1、el-dialog的标题栏那个关闭符号 使用如下方法放大 ::v-deep .el-dialog__headerbtn { font-size: 40px; font-weight: 700; top: 0px; } 2、el-table-column 设置sor…...

#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit(5)进阶模式-MITM中间人代理与劫持(下)

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…...

使用WebStorm开发Vue3项目

记录一下使用WebStorm开发Vu3项目时的配置 现在WebStorm可以个人免费使用啦&#xff01;?? 基本配置 打包工具&#xff1a;Vite 前端框架&#xff1a;ElementPlus 开发语言&#xff1a;Vue3、TypeScript、Sass 代码检查&#xff1a;ESLint、Prettier IDE&#xff1a;WebSt…...

Mac 录制电脑系统内的声音的具体方法?

1.第一步&#xff1a;下载BlackHole 软件 方式1&#xff1a;BlackHole官方下载地址 方式2&#xff1a; 百度云下载 提取码: n5dp 2.第二步&#xff1a;安装BlackHole 双击下载好的BlackHole安装包&#xff0c;安装默认提示安装。 3.第三步&#xff1a;在应用程序中找到音频…...

计算机网络

1.网络协议是什么&#xff1f; 在计算机网络要做到有条不紊地交换数据&#xff0c;就必须遵守一些约定好的规则&#xff0c;比如交换数据地格式&#xff0c;是否需要发送一个应答信息。这些规则被称为网络协议。 分层结构 应用层&#xff1a;为计算机用户提供服务表示层&…...

爬取某市KFC餐厅信息(POST请求+PYMYSQL)

# 简介 本教程将指导您如何使用Python爬取石家庄市的KFC门店信息&#xff0c;并将这些信息存储到MySQL数据库中。我们将使用requests库来发送网络请求&#xff0c;pymysql库来操作MySQL数据库。 环境准备 在开始之前&#xff0c;请确保您已经安装了以下Python库&#xff1a…...

109.【C语言】数据结构之二叉树层序遍历

目录 1.知识回顾 2.代码实现 准备工作 LevelOrder函数 代码框架 关键代码 3.执行结果 1.知识回顾 层序遍历参见106.【C语言】数据结构之二叉树的三种递归遍历方式文章 截取的部分内容 定义:按层的方式遍历(,设n为树的深度,h1-->h2-->h3-->...-->hn) 以下面…...

Java转C之内存管理

从 Java 转向 C 语言开发&#xff0c;内存管理和指针是两个核心且关键的概念。这些概念在 Java 中被抽象和自动化处理&#xff0c;而在 C 语言中则需要开发者手动管理和操作。 目录 内存管理概述指针基础 指针的定义与初始化地址运算符 & 和解引用运算符 *指针运算 动态内…...

共享内存和信号量

一、共享内存原理 1、基础前提 共享内存是为了进程之间通信服务的。进程间的通信的核心是要让两个不同的进程看到同一份资源。之前的匿名管道通过父子进程继承的关系&#xff0c;让父子进程看到同一份资源&#xff0c;进而进行通信&#xff1b;命名管道则是通过唯一的路径让两…...

SED命令

基本用法&#xff1a; sed命令具体应用&#xff1a; 1.删除第2-5行 nl regular_express.txt | sed 2d结果&#xff1a; 2.在第二行之后新增两行&#xff0c;分别为"drink tea…" 和"drink beer?" nl regular_express.txt | sed 2 a\ drink tea...\…...

洛谷 P6368 [COCI2006-2007#6] MAGIJA C语言

题目&#xff1a;https://www.luogu.com.cn/problem/P6368 题目背景 知名魔术师 AlDimi Kartimi 需要你帮助他来设计他扑克牌的背面图案。 题目描述 众所周知&#xff0c;扑克牌的背面是一个矩形&#xff0c;通过做两边的中垂线可以将矩形分成相等的四部分。 AlDimi Karti…...

TDesign:Picker 选择器

Picker 选择器 API文档地址 单列选择器用法 /// view onTap:(){TDPicker.showMultiPicker(context,data: [controller.coinList],title: ,rightTextStyle: TextStyle(color: AppColors.ColorMain),onConfirm: (selected) {controller.onTapCoin(selected);Navigator.of(contex…...

LLMs之Agent之Lares:Lares的简介、安装和使用方法、案例应用之详细攻略

LLMs之Agent之Lares&#xff1a;Lares的简介、安装和使用方法、案例应用之详细攻略 导读&#xff1a;这篇博文介绍了 Lares&#xff0c;一个由简单的 AI 代理驱动的智能家居助手模拟器&#xff0c;它展现出令人惊讶的解决问题能力。 >> 背景痛点&#xff1a;每天都有新的…...

实验3-实时数据流处理-Flink

1.前期准备 &#xff08;1&#xff09;Flink基础环境安装 参考文章&#xff1a; 利用docker-compose来搭建flink集群-CSDN博客 显示为这样就成功了 &#xff08;2&#xff09;把docker&#xff0c;docker-compose&#xff0c;kafka集群安装配置好 参考文章&#xff1a; …...

axios笔记

一、axios是什么 前端最流行的ajax请求库 二、json-server json-server可以帮助我们搭建http服务 为什么要搭建http服务&#xff1f; &#xff1a;是因为我们用axios的时候&#xff0c;需要向服务端发送请求 我们需要服务端这样一个角色&#xff0c;来与axios结合做实践 1.…...

python拆分Excel文件

按Sheet拆分Excel 或 按照某一列的不同值拆分Excel。文档样式如下&#xff1a; 结果&#xff1a;红色是按照Sheet名拆出的&#xff0c;蓝色和橙色是某个Sheet按照某列的不同值拆分的。 代码&#xff1a; # -*- coding: utf-8 -*- """ 拆分excel文件——按照…...

使用IntelliJ IDEA开发Gradle插件并发布到本地

博主所用软件版本为&#xff1a; IntelliJ IDEA 2024.1.4 (Community Edition) Android Studio Ladybug Feature Drop | 2024.2.2 Beta 1 1、制作gradle插件&#xff08;IntelliJ IDEA 2024.1.4&#xff09; 新建groovy工程&#xff0c;File–>New–>Project… 右键点…...

C# 通过smtp发送邮件(配置好了参数可以直接用)

可以直接用 using System; using System.Net; using System.Net.Mail;class EmailSender {// 发送邮件的函数&#xff0c;接收SMTP配置作为参数public static void SendEmail(string smtpServer, int smtpPort, string senderEmail, string senderPassword, string subject, s…...

【数据结构】栈和队列

目录 1.栈 1.1.栈的概念及结构 1.2.栈的实现 2.队列 2.1.队列的概念及结构 2.2.队列的实现 3.运用栈理解一道题 4.使用两个队列实现一个栈 1.栈 1.1.栈的概念及结构 首先&#xff0c;我们来了解一种新的数据结构——栈。栈是一种特殊的线性表&#xff0c;其只允许在固…...

使用 Spring Doc 为 Spring REST API 生成 OpenAPI 3.0 文档

Spring Boot 3 整合 springdoc-openapi 概述 springdoc-openapi 是一个用于自动生成 OpenAPI 3.0 文档的库&#xff0c;它支持与 Spring Boot 无缝集成。通过这个库&#xff0c;你可以轻松地生成和展示 RESTful API 的文档&#xff0c;并且可以使用 Swagger UI 或 ReDoc 进行…...

网络数据库安全和数据安全概述

1、数据安全的三要素 完整性&#xff0c;机密性&#xff0c;可用性 2、安全技术和措施 数据完整性技术、数据备份和恢复技术、数据加密技术、访问控制技术、用户管理和身份验证技术 3、数据库安全 数据库安全是指数据库的任何部分都不允许受到侵害&#xff0c;或未经授权的…...

STM32F10X与GD32工程创建区别

1.宏定义区别 GD32虽然与STM32F10X的管脚兼容&#xff0c;但是用keil创建工程时&#xff0c;GD32在选择芯片型号的时候就已经自己定义了宏。STM32F10x需要手动定义宏。在以下界面定义用到的单片机。 2.时钟区别。GD32最大时钟为120Mhz,所用的hal库里面的系统初始化会初始化时钟…...

cmakelist使用总结

支持能编译成在不同系统上运行程序的方法 我们代码就一份&#xff0c;但有时需要编译成arm32&#xff0c;有时需要编译成x86_64,或更多 1、首先先将代码定义一个名称&#xff1a; #将所有的源文件列为一个集合&#xff0c;集合名字叫做SRC_LISTS set(SRC_LISTS main.cpp A.cpp…...