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

EEG-fNIRS联合成像在跨频率耦合研究中的创新应用

摘要

神经影像技术对医学科学产生了深远的影响,推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下,基于神经血管耦合现象的多模态神经影像方法,通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里,本研究通过融合脑电图(EEG)和功能性近红外光谱(fNIRS)技术,以探索与熟练和阅读障碍的七岁儿童低阶语言处理相关的大脑功能活动。研究通过跨频率耦合(CFC)方法来考虑不同频段之间的相互作用,将EEG信号转化为图像序列,并应用了从同步记录的fNIRS信号推导出的局部脑功能激活掩模序列。因此,生成的图像序列保留了不同神经过程之间通信与交互的时空信息,并提供了有效区分对照组与阅读障碍组的依据,AUC值达77.1%。最后,通过在brainSHAP图中引入一种易于理解的SHAP值来进一步提高分类方法的可解释性。

引言

人脑中的神经元通过产生电活动形成电场,并进而形成宏观脑信号,这一过程伴随血流动力学和代谢反应。活跃大脑的直接与间接效应可被测量,并作为非侵入性神经影像技术的信号源。EEG和fNIRS这两种技术因其经济性和易用性,在研究领域中越来越受欢迎。EEG以其高时间分辨率著称,通过检测头皮电位波动直接捕捉大脑皮层的神经电活动,但其空间分辨率受容积传导效应的限制。相比之下,fNIRS提供了更高的空间分辨率,但其时间精度较低。这种光学方法通过测量氧合血红蛋白(HbO)与脱氧血红蛋白(Hbr)的浓度变化来研究大脑中的血流动力学响应。

在此背景下,联合使用这两种神经影像技术有望通过优势互补超越单模态方法,尤其当一种技术基于血流动力学原理而另一种基于电生理原理时。因此,EEG-fNIRS联合方法能够提供更加全面的脑功能活动信息。这些优势不仅源于两种技术的互补特性,更基于一种名为“神经血管耦合”的生理现象,即神经活动与大脑血流调控之间的时空关联。具体而言,当特定脑区的神经元被激活时,会引发局部血流的增加,以满足对葡萄糖和氧气需求的上升,这一变化可以通过fNIRS检测到。

多模态方法的应用范围广泛,不仅限于上述神经影像技术的结合。神经影像领域已经开发了多种多模态方法。例如,采用加权集成学习方法的CAD系统整合帕金森病患者的结构与功能影像数据以评估潜在风险;Martinez-Murcia等人(2024)通过联合框架将神经影像数据与帕金森病临床进展信息整合,利用基于耦合变分自编码器的多模态共同潜在生成模型来增强对帕金森病神经退行机制的理解;Jiang等人(2024)使用182名健康受试者的MRI与EEG数据构建了多模态协方差网络,以探究认知灵活性与静息态结构-功能协调之间的潜在关联。此外,也可以使用其他类型的生物标志物信息,如Teran-Pineda等人(2023)在人类活动识别领域提出了一种基于多模态传感器特征融合的活动分类方法。

多模态方法还可以扩展至脑功能耦合研究,以增强连接测量的信息量。传统功能耦合测量通常仅基于单一神经影像技术提取信息,例如,Ahmadlou等人(2014)采用脑磁图(MEG)信号分析轻度认知障碍患者与正常老年人在工作记忆任务中功能连接网络的复杂度差异;Yuvaraj等人(2016)提出了针对非痴呆帕金森病患者与健康对照组六种情绪状态下脑功能连接模式的EEG分类方法;Rodríguez-Rodríguez等人(2023)创新性利用EEG通道的格兰杰因果矩阵构建因果连接模型,通过源/汇框架表征脑区间的因果影响关系;Ahmadlou等人(2017)应用模糊同步似然算法从自闭症与衰老研究的EEG及其子频段中获取脑功能连接加权图,采用图指数复杂度和非对角复杂度指标进行量化分析;Gallego-Molina等人(2023)提出了一种复杂的网络分析方法,并使用fNIRS探索由低级听觉处理非语音刺激(这些刺激与语音单元相关)所衍生的功能性大脑网络。

基于神经血管耦合的理论基础,fNIRS与EEG的整合在临床与非临床领域引发了广泛的关注。现有研究多聚焦于通过整合fNIRS数据来改进EEG功能连接分析(特别是EEG源定位)。在这里,本研究提出了联合EEG-fNIRS的方法,并利用机器学习技术进行发展性阅读障碍(DD)的单试次诊断。发展性阅读障碍是一种学习障碍,与智力年龄或教育程度无关,主要影响阅读和拼写学习过程,全球约有5-12%的人口受其影响。本研究探讨了利用fNIRS信号中的局部功能激活信息来增强对DD患者与熟练阅读者EEG信号进行跨频率耦合(CFC)分析的优势,其核心创新之处在于应用n:m相位-相位CFC分析将EEG信号转化为图像序列,并整合fNIRS通道中的功能激活信息。相位-相位CFC(亦称跨频相位同步(CFS))可实现不同频段神经元群之间的同步交互,促进大脑内部的高效通信和信息处理。此外,本研究还提出了一种通过构建brainSHAP地图来可视化Shapley加性解释(SHAP)值的新方法,从而清晰呈现各EEG电极对分类的贡献度以提升模型的可解释性。该方法旨在评估DD语音缺陷背后是否存在神经振荡编码言语信号的异常机制。

材料与方法

数据集与预处理

本研究使用的数据来自马拉加大学(西班牙)LEEDUCA研究小组开展的一项纵向研究。入选EEG-fNIRS研究队列的受试者为7岁的儿童:15名临床诊断为阅读障碍,29名无明显功能障碍。所有受试者均接受持续2.5分钟的4.8Hz调幅白噪声听觉刺激(该频率对应于西班牙语音节的平均产出速率)。数据收集已获得马拉加大学医学伦理委员会的批准(批准号PND016/2020)。

EEG信号使用配备actiCAP的Brainvision actiCHamp Plus系统(Brain Products GmbH,Germany)进行采集,采样率为500Hz,32个电极按10-20系统排布并针对听觉处理优化定位。采集后的信号进行基线校正(减去刺激前100ms至0ms的平均活动值),并使用独立成分分析(ICA)去除眼动伪迹。所有通道以Cz电极为参考,并进行零均值和单位方差归一化。以头顶Cz电极作为参考可最大限度地减少共模噪声并考虑到电极之间的阻抗变化,从而提升EEG记录的整体质量。fNIRS信号使用NIRSport系统采集(8个光源和8个探测器,共16个光极),采样频率为7.8125Hz,光源-探测器对的间距约3cm。然后,使用NIRSLAB软件对fNIRS信号进行预处理,包括探测器饱和度插值、将光强度转换为光密度、伪影校正、血红蛋白浓度转换,以及使用0.01-0.09Hz的带通滤波去除血流动力学响应中的心率和呼吸伪影。图1展示了EEG 10-20系统电极(绿色圆圈),以及fNIRS光极(红色代表光源,蓝色代表探测器)和编号为1-20的fNIRS通道(位于光源-探测器之间的中点)的空间排布情况。

图1.EEG和fNIRS的空间排布示意图。

相-相CFC分析

EEG信号采用CFC方法进行分析。该神经机制参与不同频段认知过程之间的通信交互,其耦合模式可揭示健康与病理状态下的神经动力学特征。本研究重点考察相-相CFC,该方法通过评估加速时间序列间相角差分布的一致性,量化了慢波(φB(t))与快波(φA(t))瞬时相位在n:m比例下的锁相程度:

这种锁相以n:m的比例关系存在于快速脑节律φA(t)与慢振荡φB(t)的瞬时相位之间。通过计算一组单位向量的平均向量长度来测量CFS,这些单位向量的角度即为瞬时相位差:

其中N表示时间点数量。测得的CFS值域为0到1:当相位差在时间样本间保持恒定时CFS=1;当相位差呈均匀分布时CFS=0。图2展示了真实EEG信号中Delta与Alpha频段在三种n:m比例下的相位差分布情况。在图2中,当n:m=1:5时可观察到相位差分布偏离均匀分布,导致测得的CFS值升高;而另外两种情况下的分布趋近均匀,产生的CFS值接近于0。

图2.Alpha与加速Delta瞬时相位差的分布示例。

对于存在耦合的信号,其瞬时相位差会出现对应于特定值m的优先相位滞后。因此,为了使CFS最大化,需要搜索这个值。对每一对耦合信号分别进行最佳m的选择,并采用200次随机置换生成零分布来验证耦合显著性(p<0.05)。

其中,NCFSover表示替代CFS值的绝对值大于或等于原始CFS绝对值的次数,NCFSsurr为替代CFS值的总数。如图3所示,对于EEG信号,仅当n:m比例与频段匹配时(本例中为Delta-Alpha),实测CFS值才显著高于替代集获得的CFS。当存在多个显著值时,选择CFS最高的对应值(图3中n:m=1:5时CFS最高)。

图3.不同n:m比例下的CFS测量结果。

CFS图像序列

为了捕捉CFS的时间演变特征,本研究计算了各电极处5s时间窗内频段对(Delta:0.5-4Hz,Theta:4-8Hz,Alpha:8-12Hz,Beta:12-30Hz,Gamma:30-80Hz)的CFS值。通过方位等距投影将电极3D坐标映射至2D平面(以Cz为中心),采用Clough-Tocher插值法在32×32的网格上对映射的EEG电极坐标之间的值进行插值。这生成了一个分辨率为32×32像素的CFS图像。这个过程对每5s的时间段重复进行,每个时间段生成一个最终CFS序列的帧,总共生成30帧。这个过程对每对频带组合进行应用,从而生成10个CFS图像序列:Delta-Theta、Delta-Alpha、Delta-Beta、Delta-Gamma、Theta-Alpha、Theta-Beta、Theta-Gamma、Alpha-Beta、Alpha-Gamma和Beta-Gamma。最后,本研究通过将三个频段对的图像合并(每对频段对应RGB CFS图像的一个通道),创建三通道CFS图像序列,以探索最具判别性的相-相CFC模式(图4)。

图4.CFS成像过程示意图。

fNIRS功能激活

神经振荡同步伴随的脑血流(CBF)与血氧变化可通过fNIRS检测。当脑区激活时,血氧需求增加导致HbO上升而Hbr下降,二者浓度变化呈负相关。本研究设定功能激活阈值为HbO-Hbr相关系数小于-0.9,通过计算HbO和Hbr 25s时间窗内的Spearman相关系数来评估实验期间fNIRS信号的功能激活情况。

由于本研究采用针对听觉皮层的fNIRS导联方案,因此该激活信息仅影响放置在该区域的EEG电极。鉴于光源-探测器间距设定,每个fNIRS通道的空间分辨率约为3cm。因此,通过寻找最近邻EEG电极,以确定哪些电极位于以各fNIRS通道中心点为球心、半径为3cm的球体内。表1列出了各fNIRS通道对应的光源/探测器编号及其关联的EEG电极。

表1.fNIRS通道及其3cm半径球体内的最近邻EEG电极。

随后,本研究按照与CFS图像序列相似的方法为每位受试者创建激活掩模序列。区别在于掩模图像基于fNIRS功能激活测量值而非CFS值。对于表1中对应听觉皮层的EEG电极,本研究从关联的fNIRS通道中选择Spearman相关系数最低的电极。如果该系数低于某个阈值(-0.9),则判定该电极激活并赋值为1,否则赋值为0。对于其余无fNIRS信息的EEG电极统一赋值为1。考虑到血流响应的迟滞性,fNIRS片段时长是EEG的5倍(例如第一个fNIRS功能激活掩模应用于CFS图像序列的前5帧),因此通过将一个fNIRS片段的掩模重复五次来构建激活掩模序列。最终将个体的掩模序列应用于其CFS图像序列。

图5(a)展示了一名对照组受试者的典型序列,其中每个RGB图像代表序列中六个不同时间段的图像。图5(b)显示了该受试者的fNIRS激活序列,其中深色像素表示未激活区,浅色像素表示激活区。当HbO-Hbr负相关未达到阈值时,区域呈现深色像素,表示该区域未发生功能激活。由于缺乏听觉皮层外区域的fNIRS信号,默认将这些区域的像素值设为1。应用功能激活掩模后的CFS图像序列如图5(c)所示,其中听觉皮层区域的EEG-CFS值根据从fNIRS信号推断出的激活状态进行调节,该方法为多模态fNIRS-EEG联合分析提供了一种新的思路。

图5.典型对照组受试者的不同图像序列示例。

分类与可解释性

为评估听觉皮层fNIRS功能激活的CFS图像是否存在判别模式,本研究实施了分类流程:首先对三组频段对的CFS测量值构建RGB序列,通过对图像帧进行平均处理,以减少数据的维度,并通过突出最相关的同步模式来提高模型的鲁棒性。因此,从LEEDUCA EEG-fNIRS数据集的Ns个样本中,每个样本生成包含K=3072个特征(32×32像素×3通道)的数组。采用梯度提升树算法(学习率0.1、100次提升迭代、最大深度3)进行分类,通过嵌套网格搜索优化参数。

分类验证采用五折分层交叉验证,确保目标类别的分布与整个数据集中的分布相似,以解决数据集中的类不平衡问题。模型在K-1折上进行训练,剩余折留作测试,重复K次后取平均性能。通过1000次标签置换检验评估结果显著性,零假设为特征与标签无关联,p值表示随机数据集中分类器性能达到或超过实际数据的比例。

BrainSHAP图。为解决机器学习模型的可解释性问题,本研究采用基于博弈论Shapley值的SHAP方法。Shapley值Φj量化了特征j对所有特征子集S的平均边际贡献:

其中M为全特征集,f(S)表示仅使用子集S时的模型预测。本研究将SHAP应用于CFS图像:首先计算了RGB图像三层各像素的重要性,随后根据电极投影坐标创建Voronoi图掩模,将像素关联至脑区(参考电极对应Brodmann分区)。通过累加单元格内像素的SHAP值,生成显示各脑区对分类贡献度的brainSHAP地图。图中SHAP绝对值越大,表明该区域CFS模式对区分对照组/阅读障碍的影响越显著。

结果

本研究聚焦于4.8Hz的刺激频率(该频率与音节速率相关),旨在阐明发展性阅读障碍(DD)患者中的神经机制异常。在计算出CFS图像序列后,本研究系统评估了不同EEG频段组合构建RGB-CFS图像的分类性能,从而确定相位同步模式判别力最优的频段组合。图6展示了平衡准确率最高的六种组合结果。

图6.CFS成像中性能最优的六种频段组合的平衡准确率。

由图6可知,最具判别力的CFS图像序列由Delta-Alpha、Theta-Beta和Beta-Gamma频段对的CFS测量值构建。图7显示了不同频段对在选择最优m值(CFS测量参数)时的结果,并呈现了每位受试者在所有电极和时间段上显著CFS值的平均数量:Delta-Alpha组合中m=5时显著耦合最多,Theta-Beta对应m=3,而Beta-Gamma几乎全部为m=1。

图7.各频段对在不同m值下的显著CFS值的平均数量。

表2列出了使用梯度提升树算法进行分类的结果。结果展示了在应用和不应用fNIRS功能激活掩模的情况下,CFS图像序列的分类性能,同时也展示了仅使用激活掩模时的结果。在每种情况下,本研究展示了五折交叉验证方案中获得的平均性能。其中RGB图像的红(R)、绿(G)、蓝(B)通道分别对应Delta-Alpha、Theta-Beta、Beta-Gamma频段对的CFS值。从表2中可以看到,在应用功能激活掩模后,RGB图像的整体性能有所提升(平衡准确率BAcc=74.8%,AUC=77.1%)。具体来说,在没有激活掩模的情况下,Beta-Gamma的CFS图像达到了最佳的BAcc,而在应用激活掩模后,Delta-Alpha的CFS图像取得了最佳结果,BAcc为69.6%。仅使用fNIRS激活掩模的结果优于仅使用CFS图像的情况,但仍不及CFS图像与fNIRS功能激活掩模结合使用时的结果。

表2.使用梯度提升树算法的分类结果。

此外,本研究通过置换检验评估了最佳结果的统计显著性。这是在五折交叉验证框架下进行的,并评估了分类器建立的数据-标签关联。图8显示了分类器在随机数据集上获得的BAcc值分布,以及使用原始数据集时BAcc得分的p值。

图8.置换检验结果。

最后,本研究通过从正确分类测试样本的SHAP值生成brainSHAP图(图9)。这些brainSHAP图揭示了在分类过程中,对区分阅读障碍组与对照组最具贡献的脑区空间分布特征,以及三个频段对CFS测量值的相对重要性。

图9.三频段对的brainSHAP地图。

结论

本研究旨在将EEG和fNIRS技术进行多模态融合,以提供更全面的脑功能活动信息。具体而言,本研究基于一项针对7岁熟练阅读者与阅读障碍儿童的非交互式听觉刺激实验,利用同步采集的EEG-fNIRS数据集,将时间序列数据(EEG与fNIRS信号)转换为图像序列。这种转换既保留了EEG电极与fNIRS通道的空间位置信息,也保留了神经振荡在脑功能中的时序协调模式。通过融合fNIRS的定位数据,本研究增强了CFS分析所获得的信息,尤其是来自听觉皮层区域电极的信息。CFS分析能够识别与阅读障碍相关的同步模式,而fNIRS则通过确认听觉皮层电极检测到的同步是否与代谢和血流动力学活动相对应来补充这些发现。此外,将CFS数据转换为图像不仅有助于分类任务,还显著提升了结果的可解释性,而brainSHAP图进一步为模型的决策过程提供了清晰且直观的可视化展示。

为了评估CFS图像中是否存在判别模式,本研究采用了一种基于像素特征的梯度提升树分类方法。通过对CFS图像序列进行平均处理,突出被检频段间相位同步的空间模式。分类结果表明,应用fNIRS功能激活掩模能有效提升分类性能(AUC达77.1%)。此外,引入brainSHAP图能够直观地展示分类过程中各特征的SHAP值,并有助于可视化与EEG电极位置对应的空间分布。同时,brainSHAP图还可以将这些信息与相关的大脑区域及其功能相结合,从而揭示更多潜在的信息。

总的来说,本研究结果验证了所提方法的可行性,并为后续研究提供了框架。首先,从fNIRS信号提取功能激活值的方法可以进一步优化,以更好地反映血流动力学响应的复杂性;其次,EEG-fNIRS联合分析可扩展至音节内节奏与音素刺激,进而深入探究阅读障碍中其他语言处理缺陷的来源;最后,未来的研究需探索更多能够充分挖掘图像序列中时空信息的机器学习算法。

参考文献:Nicolás J. Gallego-Molina, Andrés Ortiz, Francisco J. Martínez-Murcia, Wai Lok Woo, Multimodal Integration of EEG and Near-Infrared Spectroscopy for Robust Cross-Frequency Coupling Estimation, International Journal of Neural Systems, (2025) 2550028, DOI: 10.1142/S0129065725500285

小伙伴们关注茗创科技,将第一时间收到精彩内容推送哦~

相关文章:

EEG-fNIRS联合成像在跨频率耦合研究中的创新应用

摘要 神经影像技术对医学科学产生了深远的影响,推动了许多神经系统疾病研究的进展并改善了其诊断方法。在此背景下,基于神经血管耦合现象的多模态神经影像方法,通过融合各自优势来提供有关大脑皮层神经活动的互补信息。在这里,本研…...

python打卡day49@浙大疏锦行

知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 一、通道注意力模块复习 & CBAM实现 import torch import torch.nn as nnclass CBAM(nn.Module):def __init__…...

Qt Quick Controls模块功能及架构

Qt Quick Controls是Qt Quick的一个附加模块,提供了一套用于构建完整用户界面的UI控件。在Qt 6.0中,这个模块经历了重大重构和改进。 一、主要功能和特点 1. 架构重构 完全重写了底层架构,与Qt Quick更紧密集成 移除了对Qt Widgets的依赖&…...

手动给中文分词和 直接用神经网络RNN做有什么区别

手动分词和基于神经网络(如 RNN)的自动分词在原理、实现方式和效果上有显著差异,以下是核心对比: 1. 实现原理对比 对比维度手动分词(规则 / 词典驱动)神经网络 RNN 分词(数据驱动&#xff09…...

C++中vector类型的介绍和使用

文章目录 一、vector 类型的简介1.1 基本介绍1.2 常见用法示例1.3 常见成员函数简表 二、vector 数据的插入2.1 push_back() —— 在尾部插入一个元素2.2 emplace_back() —— 在尾部“就地”构造对象2.3 insert() —— 在任意位置插入一个或多个元素2.4 emplace() —— 在任意…...

计算机系统结构复习-名词解释2

1.定向:在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方,那么就可以避免停顿。 2.多级存储层次:由若干个采用不同实现技术的存储…...

HTML中各种标签的作用

一、HTML文件主要标签结构及说明 1. <&#xff01;DOCTYPE html> 作用&#xff1a;声明文档类型&#xff0c;告知浏览器这是 HTML5 文档。 必须&#xff1a;是。 2. <html lang“zh”>. </html> 作用&#xff1a;包裹整个网页内容&#xff0c;lang"z…...

CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)

漏洞概述 漏洞名称&#xff1a;Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号&#xff1a;CVE-2023-25194 CVSS评分&#xff1a;8.8 影响版本&#xff1a;Apache Kafka 2.3.0 - 3.3.2 修复版本&#xff1a;≥ 3.4.0 漏洞类型&#xff1a;反序列化导致的远程代…...

统计学(第8版)——统计抽样学习笔记(考试用)

一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征&#xff08;均值、比率、总量&#xff09;控制抽样误差与非抽样误差 解决的核心问题 在成本约束下&#xff0c;用少量样本准确推断总体特征量化估计结果的可靠性&#xff08;置…...

Copilot for Xcode (iOS的 AI辅助编程)

Copilot for Xcode 简介Copilot下载与安装 体验环境要求下载最新的安装包安装登录系统权限设置 AI辅助编程生成注释代码补全简单需求代码生成辅助编程行间代码生成注释联想 代码生成 总结 简介 尝试使用了Copilot&#xff0c;它能根据上下文补全代码&#xff0c;快速生成常用…...

Axure零基础跟我学:展开与收回

亲爱的小伙伴,如有帮助请订阅专栏!跟着老师每课一练,系统学习Axure交互设计课程! Axure产品经理精品视频课https://edu.csdn.net/course/detail/40420 课程主题:Axure菜单展开与收回 课程视频:...

Docker、Wsl 打包迁移环境

电脑需要开启wsl2 可以使用wsl -v 查看当前的版本 wsl -v WSL 版本&#xff1a; 2.2.4.0 内核版本&#xff1a; 5.15.153.1-2 WSLg 版本&#xff1a; 1.0.61 MSRDC 版本&#xff1a; 1.2.5326 Direct3D 版本&#xff1a; 1.611.1-81528511 DXCore 版本&#xff1a; 10.0.2609…...

RabbitMQ 各类交换机

为什么要用交换机&#xff1f; 交换机用来路由消息。如果直发队列&#xff0c;这个消息就被处理消失了&#xff0c;那别的队列也需要这个消息怎么办&#xff1f;那就要用到交换机 交换机类型 1&#xff0c;fanout&#xff1a;广播 特点 广播所有消息​​&#xff1a;将消息…...

高保真组件库:开关

一:制作关状态 拖入一个矩形作为关闭的底色:44 x 22,填充灰色CCCCCC,圆角23,边框宽度0,文本为”关“,右对齐,边距2,2,6,2,文本颜色白色FFFFFF。 拖拽一个椭圆,尺寸18 x 18,边框为0。3. 全选转为动态面板状态1命名为”关“。 二:制作开状态 复制关状态并命名为”开…...

未授权访问事件频发,我们应当如何应对?

在当下&#xff0c;数据已成为企业和组织的核心资产&#xff0c;是推动业务发展、决策制定以及创新的关键驱动力。然而&#xff0c;未授权访问这一隐匿的安全威胁&#xff0c;正如同高悬的达摩克利斯之剑&#xff0c;时刻威胁着数据的安全&#xff0c;一旦触发&#xff0c;便可…...

Easy Excel

Easy Excel 一、依赖引入二、基本使用1. 定义实体类&#xff08;导入/导出共用&#xff09;2. 写 Excel3. 读 Excel 三、常用注解说明&#xff08;完整列表&#xff09;四、进阶&#xff1a;自定义转换器&#xff08;Converter&#xff09; 其它自定义转换器没生效 Easy Excel在…...

欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!

多连接 BLE 怎么设计服务不会乱&#xff1f;分层思维来救场&#xff01; 作者按&#xff1a; 你是不是也遇到过 BLE 多连接时&#xff0c;调试现场像网吧“掉线风暴”&#xff1f; 温度传感器连上了&#xff0c;心率带丢了&#xff1b;一边 OTA 更新&#xff0c;一边通知卡壳。…...

AWS vs 阿里云:功能、服务与性能对比指南

在云计算领域&#xff0c;Amazon Web Services (AWS) 和阿里云 (Alibaba Cloud) 是全球领先的提供商&#xff0c;各自在功能范围、服务生态系统、性能表现和适用场景上具有独特优势。基于提供的引用[1]-[5]&#xff0c;我将从功能、服务和性能三个方面进行结构化对比分析&#…...

用js实现常见排序算法

以下是几种常见排序算法的 JS实现&#xff0c;包括选择排序、冒泡排序、插入排序、快速排序和归并排序&#xff0c;以及每种算法的特点和复杂度分析 1. 选择排序&#xff08;Selection Sort&#xff09; 核心思想&#xff1a;每次从未排序部分选择最小元素&#xff0c;与未排…...

python读取SQLite表个并生成pdf文件

代码用于创建含50列的SQLite数据库并插入500行随机浮点数据&#xff0c;随后读取数据&#xff0c;通过ReportLab生成横向PDF表格&#xff0c;包含格式化&#xff08;两位小数&#xff09;及表头、网格线等美观样式。 # 导入所需库 import sqlite3 # 用于操作…...

当下AI智能硬件方案浅谈

背景&#xff1a; 现在大模型出来以后&#xff0c;打破了常规的机械式的对话&#xff0c;人机对话变得更聪明一点。 对话用到的技术主要是实时音视频&#xff0c;简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术&#xff0c;开发自己的大模型。商用方案多见为字节、百…...

大模型真的像人一样“思考”和“理解”吗?​

Yann LeCun 新研究的核心探讨&#xff1a;大语言模型&#xff08;LLM&#xff09;的“理解”和“思考”方式与人类认知的根本差异。 核心问题&#xff1a;大模型真的像人一样“思考”和“理解”吗&#xff1f; 人类的思考方式&#xff1a; 你的大脑是个超级整理师。面对海量信…...

【题解-洛谷】P10480 可达性统计

题目&#xff1a;P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图&#xff0c;分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M&#xff0c;接下来 M M M 行每行两个整数 x , y x,y x,y&#xff0c;表示从 …...

在Spring Boot中集成RabbitMQ的完整指南

前言 在现代微服务架构中&#xff0c;消息队列&#xff08;Message Queue&#xff09;是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件&#xff0c;支持多种消息协议&#xff0c;具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...

Element-Plus:popconfirm与tooltip一起使用不生效?

你们好&#xff0c;我是金金金。 场景 我正在使用Element-plus组件库当中的el-popconfirm和el-tooltip&#xff0c;产品要求是两个需要结合一起使用&#xff0c;也就是鼠标悬浮上去有提示文字&#xff0c;并且点击之后需要出现气泡确认框 代码 <el-popconfirm title"是…...

Selenium 查找页面元素的方式

Selenium 查找页面元素的方式 Selenium 提供了多种方法来查找网页中的元素&#xff0c;以下是主要的定位方式&#xff1a; 基本定位方式 通过ID定位 driver.find_element(By.ID, "element_id")通过Name定位 driver.find_element(By.NAME, "element_name"…...

OPENCV图形计算面积、弧长API讲解(1)

一.OPENCV图形面积、弧长计算的API介绍 之前我们已经把图形轮廓的检测、画框等功能讲解了一遍。那今天我们主要结合轮廓检测的API去计算图形的面积&#xff0c;这些面积可以是矩形、圆形等等。图形面积计算和弧长计算常用于车辆识别、桥梁识别等重要功能&#xff0c;常用的API…...

【Java】Ajax 技术详解

文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...

spring boot使用HttpServletResponse实现sse后端流式输出消息

1.以前只是看过SSE的相关文章&#xff0c;没有具体实践&#xff0c;这次接入AI大模型使用到了流式输出&#xff0c;涉及到给前端流式返回&#xff0c;所以记录一下。 2.resp要设置为text/event-stream resp.setContentType("text/event-stream"); resp.setCharacter…...

二叉树-144.二叉树的前序遍历-力扣(LeetCode)

一、题目解析 对于递归方法的前序遍历十分简单&#xff0c;但对于一位合格的程序猿而言&#xff0c;需要掌握将递归转化为非递归的能力&#xff0c;毕竟递归调用的时候会调用大量的栈帧&#xff0c;存在栈溢出风险。 二、算法原理 递归调用本质是系统建立栈帧&#xff0c;而非…...