当前位置:网站首页>基于ppg和fft神经网络的光学血压估计【翻译】
基于ppg和fft神经网络的光学血压估计【翻译】
2022-07-06 10:43:00 【巴川笑笑生】
基于ppg和fft神经网络的光学血压估计
摘要
我们引入并验证了仅使用指尖的光体积描记图(PPG)信号的逐拍光学血压(BP)估计范式。该方案确定了主体对PPG信号的特定贡献,并通过适当的归一化去除其大部分影响。通过快速傅里叶变换提取心脏成分的振幅和相位等关键特征,训练人工神经网络,然后利用该神经网络根据PPG估计BP值。对来自MIMIC II数据库的69例患者和23名志愿者进行了验证。所有估计结果均与参考值有良好的相关性。该方法速度快、鲁棒性好,除BP估计外,还可用于脉冲波分析。
简介
在世界范围内,次优血压(BP)是导致死亡的第一大危险因素,但目前只有三分之一的高血压人群的血压在[1]。一个主要原因是对治疗缺乏适当的监测和反馈。高血压患者随着身体活动、情绪和压力的增加,血压会发生快速变化,因此高血压患者应持续监测血压,及时进行医疗干预,避免严重的心血管并发症[2,3]。与传统的听诊血压相比,连续血压也被认为是心血管事件更好的预测指标[4]。不幸的是,直到今天,最广泛使用的非侵入式血压计,尤其是家用血压计,仍然是基于袖带的,它会中断正常的血液流动,而且太笨重,不能长时间佩戴。此外,该方法仅测量收缩压(收缩压,SBP)和舒张压(舒张压,DBP),附加信息[5]有限。
容积夹持法是一种无创连续测量血压的新技术。其原理是通过快速充气和放气手指上的袖口来保持整个心脏周期的血量不变。然后应用袖带压力来估计血压。这种方法是准确的和测量压力波形,但仪器非常昂贵和难以磨损。手指套也会限制血液流动,长时间佩戴会有麻木感。
压平血压仪可以连续、无袖带测量整个外周BP波形。通过适当的传递函数,可以得到中心血压,提取更多的诊断信息[8,9]。但该方法仍需压迫桡动脉,且设备佩戴不舒适。此外,必须小心控制动脉的平坦化,以保持垂直方向[10]的壁面张力和恒定的挠度,这在实践中非常困难,需要恒定的校准。这种方法也有一个潜在的偏差与使用广义传递函数(GTF)有关。
近年来,photoplethysmogram (PPG)测量BP显示出很大的前景。已有研究报道BP与脉冲传输时间(PTT)呈负相关[11,12]。然而,这种方法需要额外测量心电图(ECG)或卡介苗(BCG),并且依赖非常复杂的动脉波传播模型。即使经过校准,由于不同的生理参数、人体肌肉的动态特性和流体静力的变化,PTT并不总是一个可靠的搏动血压的标记物[13,14]。因此,它的使用仅限于跟踪BP的变化和定性分析,例如判断BP是否处于一个值得关注的水平。
而仅利用PPG信号的光学BP估计则有许多实际的优点。首先,PPG与颈动脉压[15]波形相似。其次,PPG装置价格低廉,测量是独立于操作者的。该方法在前人的工作中有研究[15 17]。例如,Kurylyak等人利用PPG波形的时间信息提取的21个特征来计算SBP和DBP[16]。然而,他们的工作没有保留PPG波形的细节,参数的选择主要是经验的。S. C. Millasseau等人报道了一种基于快速傅里叶变换(FFT)和广义传递函数(GTF)[15]的PPG归一化BP波形计算方法。他们发现,GTF可以应用于几乎所有的受试者,即使是在服用了硝酸甘油之后。但它和GTF一样存在缺点,主要目的只是比较波形的形状,而不是拟合BP振幅。John Allen等人使用线性和神经网络系统识别技术将BP和PPG波形[17]关联起来。他们使用外生变量的线性自回归(ARX)模型提取波形特征,并证实了PPG和BP波形之间的紧密联系。但该方法初始标定时间较长,且容易受到年龄等因素的影响。Xiaorong Ding等人提出了一种混合方法,将PPG强度信息和PTT信息结合起来得到BP,相比仅使用PTT[18]有了改善。然而,他们仅仅结合了PPG波形的峰间振幅信息,测量仍然需要使用ECG。
我们的目标是提供PPG波形的理论解释,并设计一种从PPG信号准确估计BP的算法,以便开发一种可穿戴的、连续的、无袖带的设备,高血压人群可以使用该设备在各种情况下更好地管理他们的BP。本文的组织结构如下:第2节给出了PPG和BP之间的理论关系,第3节描述了数据预处理步骤和神经网络结构,第4节给出了实验结果并讨论了未来的研究方向,第5节给出了本研究的结论。
理论背景
photoplethysmograph理论
光体积描记图通过照射皮肤并计算光吸收的变化来测量血容量的变化。除危重病人外,测量部位一般在手指上。现代PPG测量的概念起源于Aoyagi[19]和Yoshiya[20],他们将时间变异性PPG信号与动脉血容量变化联系起来,并假定静脉血不搏动。
血容量的脉动部分(通常称为交流部分)主要是由血压在心动周期上的脉动引起的。它通常非常小,并叠加在一个大的非脉动部分(直流部分)。归一化方法通常是将交流部分除以直流部分,对信号进行线性缩放,得到一定幅度范围内的PPG波形。
动脉壁力学
为了推导出PPG和BP信号之间的关系,了解血管的弹性特性以及血容量如何随血压变化是至关重要的。血管壁的结构是各向异性的,具有高度非线性的弹性特性,因此简单的Hookean模型在这里不适用[21]。Langewouters等人推导出了人类手指的血压与动脉半径[22]的变化之间的关系。然而,该表达式较为复杂,在BP估计应用[23]中取得的成功有限。在本文中,我们将采用一个更简单的公式来建立两者之间的关系
动脉壁应力一般由胶原蛋白、弹性蛋白和平滑肌[21]产生。二者的组合动态杨氏弹性模量(E)决定了血管的刚度。已经进行了许多体外研究来估计E和跨壁压力§之间的关系。Hughes等人给出了一个广泛使用的经验公式[24
在公式(1)中, E 0 E_{0} E0和 γ \gamma γ取决于测量的地点和特定的动物。犬主动脉 γ \gamma γ值为0.017 0.004 mmhg 1[24]。Bergel等人和Peterson等[25,26]采用不同的方法计算 E E E, E E E可以近似简化为
这里, σ σ σ是泊松比,通常被视为常数。在以往的一些研究中,假设[25], σ σ σ为0.5,并将 E E E作为增量模量。由于我们只关心周向应力,因此选取 E E E表示拉伸应变模量, σ σ σ设为0。注意, σ σ σ的选择不影响下一节得出的一般结论。 H H H为血管壁厚度, r r r为血管平均半径。
PPG信号的解释
为了简化我们的模型,我们假设PPG信号与指尖血容量( V V V)线性相关,且手指血管床内动脉血管半径为均匀半径 r r r,因此测量区域内的 V V V可以写成
这里 C C C是一个与动脉血管密度有关的常数, V 0 V_{0} V0与微血管和静脉血容量有关。假设 V 0 V_{0} V0不脉动,结合式(1)-(3),可以推导出如下关系式(见附录)
这里 b b b是积分引入的一个大常数,并假定与 E 0 E_{0} E0、 γ \gamma γ和 h h h无关。 V V V可以大致近似为一阶
然后将归一化PPG信号表示为
V V V的时变分量通常只占平稳分量的几个百分比,这意味着 P P G n o r m PPG_{norm} PPGnorm非常小。为了帮助可视化脉冲波形,通常使用线性缩放函数对归一化PPG信号进行放大和移位。该缩放功能因厂商而异。在本研究中,我们使用 k s k_{s} ks作为比例因子, V o f f V_{off} Voff作为偏移因子。由于 b b b很大,为了简化计算,我们使用了一个改进的比例因子 k k k。 k k k对于患者PPG信号的适当归一化非常重要,这将在第3节中描述。
特点和缺陷
在归一化前,PPG信号受血管弹性特性E、血容量V等的影响较大,个体间差异较大。很难得出一个适用于所有人的普遍规律。归一化后,不同受试者的PPG信号具有可比性,假设血管成分相似。归一化还改善了传感器和手指之间的非理想接触的影响,如偏心放置,因为直流分量和交流分量几乎是成比例变化的。γ在不同种群之间可能仍然有很小的变化,但影响相对较小。
然而,由于在我们的推导过程中使用的假设,这种方法有局限性。一个重要的假设是,血液组成比在整个测量过程中保持恒定,尤其是那些对近红外波长具有高吸收能力的人,如血红蛋白,这对包括高血压患者在内的大多数人都是正确的。但在某些情况下,患者出现血液动力学波动,如严重的水肿或血凝块,这种方法可能会失败,需要谨慎使用。其次,手指动脉血管结构不均匀,这反映了血管直径的分布。我们只做了二阶近似,当需要更精确的结果时,这可能会引起相当大的误差。此外,不同的血管组成会导致不同的背景吸收比,导致b的变化,因此如果只使用振幅信息,BP拟合误差会比较大。因此,我们还需要结合受BP水平间接影响的波形形状信息[14,21],以提高BP拟合精度。第三,我们没有考虑到来自非血管软组织的光吸收,来自静脉的脉动和PPG传感器施加的轻微压力。最后但并非最不重要的是,我们的理论是基于等式的。(1)-(2),较好地描述了香果及其主要分支的性质,但应用于指尖的血管可能就不准确了。但幸运的是,由于使用了神经网络而不是直接向前回归,这些不利影响可以在实践中相当有效地克服与网络的广泛训练。
材料与方法
数据源
本研究使用了自由分布的mimiii (Multiparameter Intelligent Monitoring In Intensive Care)数据库中的数据。MIMIC II收集了超过15000名ICU患者的多参数记录,包括生理信号和生命体征[27,28]。我们检查了85例患者的完整心电图、血压和PPG读数,同时采样频率为125Hz。对于这些患者,采用侵入式方法连续在手腕部测量BP,用脉搏血氧仪测量手指部PPG。资料长度因病人而异,取决于他们在ICU的停留时间。我们排除了16例患者的数据质量差(N = 7)、双波脉(N = 7)或BP-PPG相关性不稳定(N = 2)。最终,69例患者的超过17万次心跳被用于捕捉PPG与BP之间的关系
数据处理步骤如下:
对PPG和BP数据进行校准,以补偿其相位滞后。
根据已建立的标准选择质量数据。
对k因子进行适当的归一化处理,去除k因子的方差
对波形数据进行频域分析,提取关键特征
请注意,MIMIC II的PPG记录来自商业脉搏血氧仪,经过放大和高度滤波。其他资源的数据需要进行相应的调整,以匹配本文的结果。
数据调整
mimicii的BP和PPG数据并不完全一致。为了考虑BP信号和PPG信号之间的相位滞后,我们计算了一个互相关函数 g ( Δ t ) g(Δt) g(Δt)来精确对齐这两个波形。
其中g(Δt)表示互相关函数的时间平均值,Δt为BP和PPG之间的相位滞后。最准确的Δt对应最大的g(Δt)。Δt一般大于0,小于单个脉冲的持续时间,如图2所示。我们的分析显示,平均Δt为0.28s,标准偏差为0.04s。Δt可能受药物使用、体温变化、体位变化等影响,应定期重新校准。
图2所示。G (Δt)对2例患者的时间。相位滞后因人而异。
初始数据选择标准
BP和PPG数据的保真度是找到正确模型的关键。异常或损坏的数据可能会导致不希望的结果,为未来的分析。由于mimicii数据库的数据来自真实的危重患者,传感器可能会脱落,良好的接触可能会偶尔丢失。我们需要找到一种方法来过滤原始数据,并使用更少的伪影和良好的内部连接的数据。
人们提出了各种方法来评价BP数据的质量。如Sun等[29]采用信号异常指数(SAI)来评估BP质量。我们改进了他们的方法,以得到一个正确的BP和PPG之间的模型。首先对SBP和DBP信号采用Savitzky Golay线性平滑滤波,对与平滑值相差两个标准差的数据认为噪声过大而丢弃。在这项初步研究中,收缩压高于180mmHg的数据太少,无法产生正确的拟合。所以它们也没有被使用。初始选择规则如下(表1)。
表1。BP数据排除标准
SBP:收缩压;DBP:舒张压;ΔSBP = |SBP -SBP(平滑)|;ΔDBP = |DBP -DBP(平滑)|;T:脉宽时间;std_sbp = ΔSBP的标准差;std_dbp = ΔDBP的标准偏差
PPG信号往往噪音更大。为了评估它们的质量,Silva等人使用多通道自适应滤波器(MCAF)方法给出了PPG信号的信号质量指数(SQI)。该算法最初是为了预测缺失数据而设计的,并依赖于测量历史。Li和Clifford[31]利用动态时间扭曲技术将PPG脉冲与已知的优良脉冲进行了比较,得出了各自的质量指标。这项研究只关注PPG信号,没有其他输入。由于我们同时拥有BP数据,这些数据通常是非常干净的,我们使用了类似Chen et al[9]的简单而有效的方法。他们报告了径向压和中心主动脉压之间的相关系数为0.9。相关性的突然丧失表明眼压测量存在误差。同样,在我们的情况下,假设良好的PPG信号应该与BP高度相关。对每个相应的PPG和BP脉冲进行线性回归。决定系数(R2)的阈值由经验确定为0.8。
我们还筛选了双波脉数据,这意味着每个心动周期有双峰。这可能提示与主动脉狭窄[32]等疾病相关的主动脉瓣关闭不全。为了使我们的模型简单,我们排除了这类数据,但将在未来的工作中实现。
图3所示。(a)临床PPG波形异常(b) BP与异常PPG波形之间的相关性临床PPG波形良好(d) BP与良好PPG波形之间的相关性。
标准化
前人研究发现,高血压患者与对照组[33]的直径-压力曲线没有显著差异,这意味着在Eq.(7)中,γ保持相对恒定。但是,由于每个患者的缩放因子k不同,因此很难得出PPG与BP之间的一般相关性,如图4所示。
图4所示。PPG与径向BP的关系。
结果发现,手腕测量的BP值与指尖测量的数字BP值[6]密切相关。在本研究中,我们假设γ为0.017,并利用 p p g s c a l e ppg_{scale} ppgscale和桡骨BP之间的关系对所有患者的k进行归一化。通过最小二乘误差法,我们发现k从0.50到3.26之间变化,平均值为1.86,标准差为0.5 ( N p a t i e n t N_{patient} Npatient = 71)。当P值非常高或接近 P m i n P_{min} Pmin时, p p g s c a l e ppg_{scale} ppgscale与 e − γ P m i n − e − γ P e^{-\gamma P_{min}}-e^{-\gamma P} e−γPmin−e−γP之间的关系就会偏离线性,这可能是由于方程精度的降低造成的。(1)-(2),或径向BP与数字BP的固有区别。
注意,我们使用的是商业脉搏血氧仪的PPG数据,估计BP被认为是超说明书使用。在今后的研究中,应禁用自动缩放功能,以避免k校准带来的误差。在我们的研究中,也进行了没有自动缩放的评估,结果在第4节中展示。
PPG的特征提取
在大范围的[34]中,PPG信号的收缩期振幅与局部血管膨胀率有良好的相关性。在我们的研究中,快速傅里叶变换用于提取振幅和相位特征从波形。该方法不需要识别波形上某些特征点的确切位置,可以同时分析多个心动周期,比时域特征提取更稳定。对于逐拍BP估计,一帧被定义为包含前一个周期的10%和下一个周期的5%的完整心脏周期,然后每帧用0到150个数据点填充。
这种特征提取方法有一定的局限性。当BP变化非常快时,特征会受到相邻拍的影响,这将给拍对拍估计带来很大的误差。
人工神经网络的架构
人工神经网络是受生物神经网络启发的一类模型,可用于估计高度非线性的复杂函数。在实际应用中,一种带有一个隐藏层的多层前馈反向传播神经网络足以拟合一个连续函数。我们的人工神经网络的输入是傅立叶分量的振幅和相位,如图5所示。采用Levenberg-Marquardt算法对神经网络进行训练。70%的数据用于训练,15%用于验证,15%用于测试。ANN的结构如下
图5所示。用于SBP和DBP估计的神经网络结构。
为了检验我们方法的有效性,我们首先将人工神经网络的输出与有创测量的BP进行比较,这被认为是金标准。我们还将该算法应用于高分辨率脉搏血氧计,并将输出结果与商用袖带血压计进行比较,以确定这两种方法是否可互换。
实验结果
BP拟合(MIMIC II)
为了验证所提出的方法,我们首先研究了PPG和BP的光谱成分之间的相关性。如图6(a)-6(b)所示,PPG和BP的振幅分量在所有频率上都高度相关。它们的相位相关性在低频时较好,在高频时较差,如图6-6(d)所示。
图6所示。BP谱分量与PPG的相关性(a)-(b)幅值相关性 - (d)相关联。
由上述分析可知,仅从PPG信号可以得到SBP和DBP。然而,由于BP波形变化大,仅用线性回归方法难以精确地重建BP波形。
神经网络常用于估计复杂非线性函数。之前的研究发现,8-11Hz的截止频率是BP波形重建的理想频率[9,15]。在我们的例子中,一个包含35个神经元的隐层,截止频率为10.8Hz的拟合网络可以同时稳定准确地拟合SBP和DBP,如图7所示。隐层神经元数量的增加带来了微小的改善(~0.2mmHg),但也容易过度拟合数据,并引入不稳定性。
图7所示。神经网络的性能(均方根误差)与隐藏神经元数量和截止频率的关系。
BP估计的准确性要求BP和PPG之间具有稳定的相关性。如果在测量过程中心脏负荷或医疗干预显著改变相关性,拟合精度将会降低。在我们的研究中,没有使用相关函数波动较大的患者来训练一般的神经网络。
为了识别这些异常值,我们首先为每个患者分别训练单个神经网络( N p a t i e n t N_{patient} Npatient = 71)。大多数安装误差都在医疗器械先进协会(AAMI)的美国国家标准范围内,其中最大可接受误差为5 8 mmHg,如图8所示。71例患者中有2例因BP与PPG缺乏稳定的相关性而被排除在一般ANN训练之外。
图8所示。个体拟合误差分布。
最后,我们用69例患者数据(包括175477个波形)训练了通用神经网络。单拍对单拍拟合误差SBP为0.06 7.08mmHg, DBP为0.01 4.66mmHg,也符合英国高血压学会(BHS)协议,评分等级为A/A[35],如表2所示。拟合结果如图9所示。
表2。血压的估计精度。等级表示在标准5毫米汞柱、10毫米汞柱和15毫米汞柱范围内的读数的累积百分比。
图9所示。一般人工神经网络拟合所有数据点和BP数据分布。
如果我们不关心逐拍BP值,而是平均BP数秒,拟合误差可以进一步降低。例如,如果将相邻的5个波形取平均值,则SBP拟合误差可降至0.06 + 5.57mmHg, DBP拟合误差可降至0.01 + 3.69mmHg,如图10所示。
图10所示。平均误差降低
考虑到这些患者都在重症监护下,并可能进行医疗干预,这一结果是非常有希望的。
但该方法仍有局限性,有待改进。例如,需要一个比FFT更精确的模型来捕捉PPG的基本波形。数据采集和预处理方法可以进一步优化。需要对神经网络结构进行微调,首先对患者进行分类,减少异常点的数量。这些工作将在今后的研究中加以执行。
对志愿者测试
为了验证我们的方案是否可靠,我们对健康志愿者进行了额外的测试。本研究共招募了23名受试者,年龄26 ~ 34岁。其中男性18例,女性5例。首先使用高分辨率脉冲波形输出的PPG评估模块(AFE4490, Texas Instruments)获取PPG信号,探测器位于食指掌侧。采样频率500Hz。使用未缩放和未滤波输出来保持k恒定,如公式(7)所示。允许受试者休息至少5分钟,然后使用欧姆龙HEM-7051数字自动上臂血压监测器测量血压。所有的测量都是在静止条件下进行的。目视检查PPG波形的质量,随后用另一台上臂自动血压计(Microlife BP3GX1-5X)验证BP测量结果。对于每个受试者,平均8秒内的PPG脉冲来估计收缩压和舒张压。注意,这种比较是为了证明两种方法的等价性,因此不能表明任何一种设备的准确性。我们的结果显示收缩压和舒张压的差异分别为1.67 2.46mmHg和1.29 1.71mmHg。两个测量值的t检验无显著差异(p<0.01),相关性高。我们还做了BlandAltman分析,看看这两种方法是否可以互换。一致限度显示为4.1mmHg,如图11所示,这在临床环境中是可以接受的。
图11所示。基于ppg的BP估计与袖带血压计的Bland-Altman分析。
总结讨论
PPG技术具有可穿戴性、无创性和多功能性,不仅能提供组织氧合和心率信息,还能提供血压信息,具有早期筛查血管疾病的潜力[36 39]。然而,由于受心血管、呼吸和自主系统的影响,PPG信号分析也很复杂。对其形态和基本生理机制的全面了解仍然缺乏。
我们研究了BP和PPG之间的内在联系,并推导出一个简单的数学公式来描述它们之间的关系,它比使用PTT的方法更简单,假设更少。基于FFT的特征提取使用几个关键参数来保留整个波形的振幅和形状信息,使分析更加容易。我们还利用神经网络的力量来提高BP的拟合精度。经过适当的数据处理、归一化和训练,该方法性能良好,不需要对每个个体进行复杂和重复的校准。通过观察BP和PPG的光谱成分,它还可以提供更丰富的关于患者心血管健康的信息
在这项工作中,我们使用了69名患者的17万多个波形来训练一般神经网络,这比以往研究中使用的人群要大得多[15 18]。我们已经证明了我们的方法是稳健和准确的,在相当多的受试者测试。但这绝不是一次彻底的训练和测试。现实世界中的BP分布可能与我们使用的训练样本不同。例如,在MIMIC II数据库中有超过15000名患者,而我们只随机选择了几十名患者。理想情况下,我们应该将健康和不健康受试者的血压数据纳入更广泛的读数范围,但分析所有这些数据将需要更复杂的计算工具。
数据质量对该方法中人工神经网络的初始训练和后续使用至关重要。对于MIMIC II数据集,我们根据同一数据库中拥有的BP信息选择良好的PPG波形片段,这使我们能够轻松可靠地获得干净的BP和PPG信号,用于神经网络训练和验证。然而,对于志愿者实验,我们必须依靠PPG信号本身来确定和丢弃任何被认为是坏的或不可用的PPG片段。在那里,一个基本的方法,比较信号与平均信号正负两个标准差使用。
在未来的工作中,我们将致力于开发一种更稳健、更通用的数据选择方案,以评估PPG信号的质量,并实时从好的波形中滤除坏的波形。此外,还需要同时测量数字BP和径向BP,以建立更准确的BP和PPG之间的关系。在进行BP估计之前,我们也应该尝试对不同的疾病进行分类。将使用原始PPG数据,而不是商业脉搏血氧仪经过大量处理的数据,以识别不同PPG- bp反应的患者。例如,PPG波形的形态特征和低频漂移可用于标记某些疾病,如房颤、动脉硬化和低血容量。要做到这一点,模式识别和循环神经网络等新技术可能会有所帮助。
PG信号的质量,并实时从好的波形中滤除坏的波形。此外,还需要同时测量数字BP和径向BP,以建立更准确的BP和PPG之间的关系。在进行BP估计之前,我们也应该尝试对不同的疾病进行分类。将使用原始PPG数据,而不是商业脉搏血氧仪经过大量处理的数据,以识别不同PPG- bp反应的患者。例如,PPG波形的形态特征和低频漂移可用于标记某些疾病,如房颤、动脉硬化和低血容量。要做到这一点,模式识别和循环神经网络等新技术可能会有所帮助。
边栏推荐
猜你喜欢
Distill knowledge from the interaction model! China University of science and Technology & meituan proposed virt, which combines the efficiency of the two tower model and the performance of the intera
Docker installation redis
SAP Fiori 应用索引大全工具和 SAP Fiori Tools 的使用介绍
从交互模型中蒸馏知识!中科大&美团提出VIRT,兼具双塔模型的效率和交互模型的性能,在文本匹配上实现性能和效率的平衡!...
[Sun Yat sen University] information sharing of postgraduate entrance examination and re examination
2022-2024年CIFAR Azrieli全球学者名单公布,18位青年学者加入6个研究项目
Implementation of queue
Maixll dock camera usage
Coco2017 dataset usage (brief introduction)
CSRF vulnerability analysis
随机推荐
Penetration test information collection - WAF identification
Implementation of queue
Transport layer congestion control - slow start and congestion avoidance, fast retransmission, fast recovery
Penetration test information collection - App information
F200 - UAV equipped with domestic open source flight control system based on Model Design
The role of applet in industrial Internet
Automatic reservation of air tickets in C language
2022/02/12
UFIDA OA vulnerability learning - ncfindweb directory traversal vulnerability
SQL优化问题的简述
Picture zoom Center
文档编辑之markdown语法(typora)
[the 300th weekly match of leetcode]
Prophet模型的简介以及案例分析
MySQL查询请求的执行过程——底层原理
Reproduce ThinkPHP 2 X Arbitrary Code Execution Vulnerability
阿里云国际版ECS云服务器无法登录宝塔面板控制台
Penetration test information collection - basic enterprise information
[Matlab] Simulink 同一模块的输入输出的变量不能同名
爬虫玩得好,牢饭吃到饱?这3条底线千万不能碰!