一种轻量级IDS,使用新型特征选择方法进行早期APT检测

大家读完觉得有帮助记得关注和点赞!!!

高级持续性威胁 (APT) 是一种多阶段、高度复杂且隐蔽的网络威胁形式,它通过获得对网络的未授权访问来窃取有价值的数据或破坏目标网络。这些威胁通常在很长一段时间内未被发现,这突显了在网络中进行早期检测以减轻潜在 APT 后果的关键需求。在这项工作中,我们提出了一种特征选择方法,用于开发一种轻量级入侵检测系统,该系统能够有效地识别初始入侵阶段的 APT。我们的方法利用 XGBoost 算法和可解释人工智能 (XAI),特别是利用 SHAP(SHapley Additive exPlanations)方法来识别初始入侵阶段的最相关特征。我们提出的方法的结果表明,能够将 SCVIC-APT-2021 数据集的所选特征从 77 个减少到仅 4 个,同时保持建议系统的评估指标一致。估计的指标值为 97% 的精确率、100% 的召回率和 98% 的 F1 分数。所提出的方法不仅有助于防止成功的 APT 后果,还有助于增强对早期阶段 APT 行为的理解。

关键词:APT;网络安全;IDS;特征选择技术;SHAP。

1. 绪论

        入侵检测系统(IDS)在网络安全中发挥着关键作用,通过监控网络流量并在潜在威胁造成重大损害之前识别它们。IDS的重要性在资源受限的环境中尤为突出,例如物联网(IoT)网络,其中互连设备创建了广泛而复杂的攻击面。这些环境的特点是处理能力、内存和能源方面的限制,使得部署高效且有效的IDS成为一项具有挑战性的任务(Zaman et al., 2021)。在这种背景下,高级持续性威胁(APT)代表了一种特别阴险的挑战。APT是由资源充足的对手实施的复杂、多阶段攻击,他们的目标是在不被发现的情况下,长期窃取敏感信息或造成运营中断(Khaleefa & Abdulah, 2022)。APT的隐蔽性意味着传统检测方法通常无法识别它们,直到造成重大损害。鉴于APT是分阶段展开的,因此早期检测至关重要,因为它允许在APT完全执行其目标之前进行及时干预和缓解。然而,挑战在于开发能够有效检测这些难以捉摸的威胁的IDS,在准确性需求与有效处理大量网络数据的能力之间取得平衡。

        在开发基于机器学习 (ML) 的入侵检测系统 (IDS) 领域中,IDS 被构建为一个分类问题,其中模型在数据集上进行训练,以将传入的网络流量分类为正常或恶意。通过分析数据集中的各种特征,例如源和目标 IP 地址、数据包大小和协议类型,ML 模型学习区分良性流量和潜在威胁(Santhosh Kumar et al., 2023)。这些特征使用像 CICFlowMeter 这样的专用工具从网络流量中提取,并转换为 CSV 文件,以便在训练阶段由 ML 模型进一步处理。然而,并非所有这些特征都与识别流量类型相关(Incremental & Generation, 2023)。不相关的特征会通过增加训练时间、系统复杂性以及降低可解释性来对模型产生不利影响。这导致对模型如何进行预测缺乏理解。因此,选择相关特征的过程会显著影响 IDS 的有效性。

在机器学习领域,选择相关特征的三种常用方法被广泛使用。第一种是基于过滤的方法,其中数据的统计特性被用于确定数据集中每个特征的重要性得分,常见的此类方法包括相关性或信息增益。然而,这种方法的一个缺点是它没有考虑特定机器学习算法的影响。

第二种方法是封装方法,它在特征选择过程中利用机器学习算法。这些方法基于模型的性能评估不同的特征子集,并迭代地添加或删除特征以优化模型。它们通常比过滤方法更准确,但计算成本可能很高(Wah et al., 2018)。示例包括前向选择、后向选择和递归特征消除。

最后一种方法是嵌入式特征选择,其中选择相关特征的过程直接整合到模型训练过程中。模型不会在训练之前或之后单独选择特征,而是在从数据中学习时自动确定哪些特征是最重要或相关的。

我们提出的检测模型LW-IDS,通过解决关键的局限性,在弥合近期IDS研究的差距中发挥着至关重要的作用。虽然大多数IDS研究侧重于使用一种或多种ML算法开发复杂的检测模型,或者提取额外的特征以提高检测精度,但我们的方法采取了不同的路径。通过在轻量级IDS框架内,利用基于SHAP的特征选择,在保持精度的同时最小化特征数量,我们专注于实现效率和有效性,尤其是在物联网环境中。这种方法不仅简化了检测过程,而且降低了计算开销,使LW-IDS成为早期APT检测的实用且可扩展的解决方案。因此,它有助于构建一个更强大和可扩展的网络安全解决方案。本研究的主要贡献是:

探讨了SHAP在IDS中特征选择方面未被充分利用的应用,尤其是在为物联网环境开发轻量级IDS方面。

引入了一种新颖的方法,通过将 SHAP 集成到基于包装器的特征选择方法中,并在平衡准确性的同时优化 IDS 性能。

开发一种轻量级的入侵检测系统,能够在高级持续性威胁的早期阶段进行检测,并提供可扩展且经济高效的安全解决方案。

我们研究的意义深远,尤其是在资源约束是重大挑战的物联网环境中。所开发的LW-IDS可以集成到各种物联网设备和网络中,在不影响性能的前提下提供强大的安全性。

本文的其余部分组织如下:第2节介绍了APT检测领域的相关工作。第3节详细介绍了所提出的特征选择方法。第4节展示了结果,并将所提出的方法的性能与其他技术进行了比较。最后,第5节总结了本文的贡献、潜在的局限性以及对未来工作的建议。

2. 相关工作

在本节中,我们将概述当前与APT检测相关的研究,指出它们的局限性,以及所使用的ML算法和所采用的数据集,如表I所示。

提出了一种深度学习堆栈,该堆栈采用序列神经网络来检测APT。该堆栈模型由多种检测算法组成,而不是依赖于单一算法。该模型首先使用多个神经网络检测已知攻击,然后将其从流程中移除。在第二层中,正常流量在检测过程后被过滤掉。第三层由混合神经网络组成——具体而言,循环神经网络-长短期记忆(RNN-LSTM)被用于检测异常样本,这些样本随后在堆栈的第四层中被移除。然而,由于使用了多种检测算法,该模型存在复杂度较高的问题。

在(Xuan, 2021)中,Xuan通过使用随机森林(RF)算法分析网络流量行为,开发了一种针对APT的早期检测系统。该分析首先检查并提取基于IP地址域名的流量行为。随后,这些行为被转化为特征,用于将流量分类为正常或异常,尤其关注来自命令与控制服务器产生的流量。为了训练和测试该方法,作者通过汇编来自各种来源的61个APT流量文件创建了一个数据集。尽管该研究的结果表明,该分类器能够以99.9%的准确率检测到异常流量,但值得注意的是,所收集的数据缺乏对APT阶段的真实表示。

利用各种统计网络流量特征来生成不同的特征集,以检测 APT 攻击。使用了两个数据集,其中包含 PCAP 格式的原始网络数据,用于此目的。CICIDS2017 数据集被用作良性流量的资源,并与从 Contagio 恶意软件数据库(Parkour, n.d.)中提取的恶意流量相结合。在使用 CICFlowMeter 工具提取特征后,应用了一种使用相关性分析和箱线图的特征选择方法。采用 CICFlowMeter 工具从数据集的 PCAP 文件中提取特征。随后,提出了一种用于检测攻击的无监督方法,采用了局部离群因子 (LOF) 算法。LOF 算法计算一个分数,以衡量数据集中每个实例基于其邻居的异常程度。采用两个评估指标,召回率和真负率,来评估特征集的性能。实现的最高加权召回率为 75.8%,相应的真负率为 90%。然而,这项工作没有考虑 APT 的阶段。

在(Shen et al., 2022)中,Shen et al. 提出了一个名为先验知识输入(PKI)的模型。在该模型中,通过使用聚类方法对数据集SCVIC-APT-2021进行重新分类,以获得更适合与数据集特征相结合的先验知识。随后,使用基于过滤器的特征选择算法处理输出,以识别最具影响力的特征。然后,将这些选定的特征输入到监督模型中,特别是RF和XGBoost。实验结果表明,RF分类器使用52个特征实现了80.34%的宏F1分数,而XGBoost使用49个特征实现了80.92%的宏F1分数。总的来说,该方法旨在降低监督模型的复杂性。然而,它同时通过结合一个无监督模型来增加模型的复杂性。

Ahmed和Sara在(Alsanad & Altuwaijri, 2022)中,使用了一系列无监督算法,如Hunt算法、K-Means和支持向量机(SVM),以开发一个用于检测APT的框架。为了准备用于聚类算法的CSE-CIC-IDS2018数据集,作者实现了多个阶段,包括转换、归一化和基于主成分分析的特征选择。实验的主要发现表明,具有径向基函数(RBF)的SVM相比其他算法,实现了更高的准确率,达到99.2%。值得注意的是,该研究使用了三个聚类,这可能无法准确反映APT阶段的数量。

AL-Aamri等人在 (AL-Aamri et al., 2023) 中,提出了基于组合的决策树(CDT)系统,该系统通过采用专家系统和机器学习算法来检测实时流量中的APT。该研究依赖于流量流的变化来识别异常流量。该过程涉及多个步骤,例如线性回归分析、特征提取和选择。为了评估所提出的系统,作者将不同的数据集与来自本地框架生成的数据相结合。异常流量由在APT方面具有专业知识的领域专家手动标记。创建了一个类似决策树的模型,并将其输入到朴素贝叶斯算法中,以生成用于APT检测的决策规则。CDT系统的结果表明,在检测恶意攻击方面的精度为96%。所提出的模型的平均精度估计为94.3%。然而,该研究没有进行多重攻击检测,而是侧重于正常流量和异常流量之间的二元分类。

Md Mahadi等人在(Hasan et al., 2023)中,研究了使用XAI识别APT的各种boosting算法。SCVIC-APT-2021数据集被用于评估这些算法。作者比较了不同boosting算法的性能,并观察到CatBoost和XGBoost优于其他算法,分别实现了0.99和0.97的加权F1分数。尽管该论文采用XAI来分析单个特征对输出的影响,以确保模型的公平性和透明度,但它并没有利用XAI来提高模型的性能。

Zhu等人在(Zhu et al., 2024)中提出了一个用于检测物联网网络中APT的分布式框架,名为全局视野联邦学习(GV-FL)。在这个框架中,一个逻辑回归模型被分布在多个物联网设备上,用于在它们的本地数据上进行训练。随后,每个模型的参数在一个全局服务器上进行聚合,然后全局服务器将它们重新分发给这些设备。该框架的结果达到了92%的准确率。虽然该框架成功地保护了物联网数据的隐私,但它确实需要额外的时间来在物联网设备和聚合服务器之间共享参数。

为了解释相关工作的局限性以及所提出的方法如何解决这些局限性,可以突出现有研究中的关键挑战。这些工作中的许多IDS面临着显著的局限性,尤其是在模型复杂度方面。这种复杂性通常是由于使用了多种检测算法或结合了不同的学习方法,旨在提取更相关的特征或识别数据中的低级模式。这种复杂性使得这些模型不太适合部署在像物联网网络这样资源受限的环境中。另一个局限性是,用于检测APT的这些模型通常没有考虑到此类攻击的多阶段性质。相反,它们通常侧重于区分正常流量和APT流量,这意味着这些系统可能仅在APT经历了多个阶段后才能识别出它。这种延迟检测降低了预防措施的有效性,因为APT可能在被识别出来时已经造成了重大损害。在本研究中,通过开发一种计算复杂度降低的轻量级IDS(LW-IDS)来解决这些局限性。这是通过仅选择最相关的特征并利用多阶段数据集来实现的,这使得LW-IDS能够在早期阶段检测到APT。

3. 提出的方法

如图(1)所示,我们提出的用于在集成电路阶段检测高级持续性威胁方法的主要组成部分被组织成两个不同的层级。

首先,该方法从准备数据集开始,其中包含流量数据,然后将其输入到预测模型中。接下来,计算每个特征的重要性得分,并将其用作特征选择过程的基础。所提出方法的较低层组件将在以下三个步骤中进行解释:

图 1. 主要的提议方法组成部分

步骤 1:数据集准备

应用了几个预处理步骤,以使数据集适合训练过程。该过程首先从数据集中删除有偏差的特征,以确保模型不会受到可能扭曲结果的属性的不公平影响。接下来,仅隔离数据集的两个相关阶段,以专注于感兴趣的特定阶段并消除不相关的数据。然后删除具有缺失值的样本,以保持数据集的完整性并防止不完整的信息影响分析。最后,对分类特征进行编码,将其转换为适合机器学习模型的数字格式,使算法能够有效地处理这些特征并从中学习。

在本研究中,使用了SCVIC-APT-2021数据集,该数据集包含84个特征,这些特征是通过CICFlowMeter工具从代表网络流量的PCAP文件中提取的(J. Liu et al., 2022)。选择此数据集的原因是它代表了APT的所有阶段。每个阶段都包含各种类型的攻击。I.C阶段的例子是Very Secure FTP Daemon (VSFTPD) 2.3.4版本中的“笑脸”后门攻击。此漏洞允许用户使用':)'登录,并在端口6200上获得对命令shell的访问权限(Koo et al., 2019)。

虽然数据集包含六个阶段,但由于我们的目标是将恶意I.C流量与正常流量区分开来,因此隔离了两组样本:包含307,817个样本的正常流量和包含150个样本的I.C流量。接下来,移除了特征(流ID、时间戳、源IP、目标IP、源端口和目标端口),以防止模型预测中的偏差,并提高对未见数据的泛化能力(Shen et al., 2022)。在训练过程中仅使用了84个特征中的77个。然后,使用标签编码器技术将分类特征转换为数值,使其与需要数值输入的ML算法兼容(Srikanth Yadav & Kalpana, 2019)。随后,将预处理后的数据分为两组:一个80%的训练集,用于训练模型输入特征和目标变量之间的关系;以及一个20%的测试集,用于评估模型在新数据、未见数据上的性能。这模拟了模型在遇到不属于训练过程的数据时,在现实世界中的表现。

步骤 2:特征重要性评分计算

在本节中,我们将描述用于计算数据集中每个特征重要性得分的方法,这是开发所提出的LW-IDS的关键步骤。采用可训练的XGBoost模型和SHAP之间的协同方法来评估每个特征对模型预测的贡献。

为了计算特征重要性得分,我们采用了SHAP中的TreeExplainer方法,该方法专为基于树的模型而设计(Sharma et al., 2020)。该过程首先使用所有77个特征训练XGBoost模型。XGBoost模型配置了以下超参数:学习率为0.3,最大树深度为6,以及100轮boosting。F1-score指标反映了精确率(模型检测I.C样本的准确程度)和召回率(模型检测实际I.C样本的能力)之间的调和平衡,并被用作后续步骤中的停止标准。

接下来,识别出重要的分数,这些分数有助于定义模型预测的影响性特征。这是通过计算数据集中所有样本的每个特征的绝对SHAP值的平均值来实现的。具有较高平均绝对SHAP值的特征通常被认为对模型的预测具有更大的影响。图(2)显示了前九个特征的重要性分数。

图 2. 前九个特征重要性得分。

步骤3:提出的特征选择

在此步骤中,通过使用封装式特征选择方法来选择相关特征。该过程首先创建一个空的特征集合,然后迭代地每次向该集合添加一个具有更高平均SHAP值的特征。该过程持续进行,直到满足预定义的停止标准;如果满足,则该集合包含对模型预测具有直接影响的最相关特征。

4. 结果与讨论

在本节中,将介绍使用所提出的特征选择方法构建的LW-IDS的评估结果。此外,这些结果将与其他特征选择方法和先前工作的结果进行比较。

4.1 性能指标

精确率、召回率和 F1 分数是用于评估机器学习模型性能的著名指标。精确率衡量 LW-IDS 所做的阳性预测中有多少是正确的,而召回率衡量所提出的模型正确识别了多少 I.C 样本。F1 分数在精确率和召回率之间取得了平衡,提供了模型性能的统一衡量标准。用于查找精确率、召回率和 F1 分数的数学公式在 (1)、(2) 和 (3) 中声明:

TP:真阳性(正确识别出的感染细胞样本)。

FN: 假阴性(遗漏的集成电路样本)。

FP:假阳性(将正常样本错误地识别为I.C样本)。

图 3. 不同特征集的性能指标

图(3)展示了所提出的特征选择对XGBoost模型在二元分类问题上的性能影响评估。第一种情况代表使用数据集中的所有特征(77个特征)训练的模型。这导致F1分数为98%,精确率为97%,召回率为100%。F1分数被认为是确定最佳影响特征数量的停止标准。然后,我们从一个空的特征集开始,并使用具有最高平均绝对SHAP值的特征迭代地训练模型。这种方法保证了特征是基于其重要性添加的,正如它们在图(2)中的SHAP值所指示的那样,持续到我们达到特征选择的停止标准。实现最佳结果的最佳特征数量是四个('Idle Max','Fwd Seg Size Min','Flow IAT Std'和'Bwd Init Win Bytes')。为了进一步验证我们的发现,我们可以观察到添加第五个最重要的特征('RST Flag Count')并不能提高模型的性能。

此外,我们将我们提出的方法的总体性能与各种基于过滤器的特征选择方法(如卡方检验和方差分析)以及XGBoost分类器的嵌入式方法进行了比较。表二显示,对于相同数量的特征,我们提出的方法优于其他方法。这种优越性源于以下事实:过滤器方法(卡方检验、方差分析、互信息和皮尔逊相关系数)本质上是统计性的,通常依赖于假设特征是独立的统计检验。然而,在真实世界的数据集中,特征通常表现出过滤器方法可能忽略的复杂关系。相反,封装器方法考虑所有可能的特征组合,并且只能与其他特征结合才能识别重要的特征。

表二. 与基准特征选择方法的比较结果

此外,我们将获得的结果与类似的工作进行比较,例如(J. Liu et al., 2022)和(Shen et al., 2022),其中XGBoost算法被应用于SCVIC-APT-2021数据集。(J. Liu et al., 2022)的研究使用了9个特征,并达到了86%的F1分数。同时,(Shen et al., 2022)中基于过滤器的特征选择方法被用来选择49个特征,从而产生了80%的F1分数。相比之下,所提出的wrapper方法,依赖于SHAP特征重要性值,涉及一个更精细的特征选择过程,将特征数量减少到4个,并显著地将F1分数提高到98%。这背后的原因是,使用SHAP的wrapper方法侧重于对模型影响最大的特征,从而减少了不相关或冗余的特征数量。这有助于实现更好的泛化并避免过拟合。

5. 结论

本文提出了一种新颖的方法,用于选择最相关的特征,以开发能够在初始入侵阶段检测APT的新型轻量级IDS(LWIDS)。该方法基于XGBoost算法,该算法采用了集成学习原则。特征选择过程使用XAI技术,特别是SHAP方法,该方法利用SHAP值来确定特征重要性的程度。利用这些特征重要性得分,wrapper特征选择方法识别出用于APT检测的最相关特征。所提出的方法成功地将有影响力的特征减少到77个中的4个,同时LW-IDS保持了98%的F1分数。这表明了我们的方法在以较小的特征集实现准确的APT检测方面的有效性,为开发更精简和有效的IDS解决方案铺平了道路。在未来的工作中,我们计划通过使用合成少数类过采样技术(SMOTE)为少数类生成合成样本来解决类不平衡问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84228.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84228.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解 let、var 和 const

JavaScript 中的变量声明有三种主要方式:var、let 和 const。理解它们之间的差异对于编写清晰、有效的代码至关重要。本文将深入探讨这三种声明方式的区别、使用场景以及潜在的陷阱。 一、var 关键字 1.1 特点 函数作用域:var 声明的变量在函数内是局…

RT thread 在gd32f303平台下rtc bug date获取时间错误始终是1970

现象 时间设置指令 date 2025 6 18 10 28 00 时间获取指令 date date指定显示设置OK,但是返回的时间始终是Thu Jan 1 08:00:00 1970 msh >date local time: Thu Jan 1 08:00:00 1970 timestamps: 0 timezone: UTC+

jieba中lcut与cut的区别及用法

jieba 库中的 cut 和 lcut 是中文分词的核心函数,两者的核心区别在于​​返回类型​​和​​适用场景​​,具体对比如下: ⚙️ 1. ​​核心区别​​ ​​函数​​​​返回类型​​​​特点​​​​等价操作​​jieba.cut生成器(G…

LoRA、QLoRA是什么

一: LoRA(Low-Rank Adaptation,低秩适应)是一种高效的大模型参数微调技术,由Meta在2021年提出。它通过冻结预训练模型参数,仅训练少量新增的低秩矩阵,大幅减少了需要训练的参数量,同…

【web应用】在 Vue 3 中实现饼图:使用 Chart.js实现饼图显示数据分析结果

文章目录 前言一、准备工作二、实现饼图组件三、关键点解析四、实现效果总结 前言 在现代 Web 应用中,数据可视化是不可或缺的一部分。无论是展示统计信息还是监控关键指标,图表都能帮助用户更直观地理解数据。在 Vue 3 项目中,我们可以使用…

分页数据不准问题分析与解决

大纲 📖 1、场景 🪵2、原因 🔥3、解决方式:游标分页 📏4、一点思考💡5、全表查询的优化思路 🍅 记录一个分页不准的问题 1、场景 🪵 调用一个第三方List接口(带分页&am…

MyBatis原理剖析(三)--加载配置文件

下面我们正式进入mybatis的源码学习,之前我们已经了解过mybatis中通过配置文件来保证与数据库的交互。配置文件分为核心配置文件和映射配置文件,核心配置文件的主要作用就是加载数据库的一些配置信息而映射配置文件则是执行对应的sql语句。同时核心配置文…

C++(运算符重载)

一.友元 C中使用关键字friend可以在类外访问所有的成员,包括私有成员(之前提到过封装的核心思想是隐藏内部实现细节,通过公共接口控制访问),所以友元可以突破封装的限制访问数据,盲目使用会导致程序稳定性…

XR-RokidAR-UXR3.0-Draggable 脚本解析

using System.Collections.Generic; using Rokid.UXR.Utility; using UnityEngine; using UnityEngine.EventSystems;namespace Rokid.UXR.Interaction {/// <summary>/// Draggable 拖拽组件/// </summary>// [RequireComponent(typeof(RayInteractable))]public …

GitHub 趋势日报 (2025年06月17日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 1022 anthropic-cookbook 986 awesome-llm-apps 910 fluentui-system-icons 754 r…

NodeJS的中间件是什么

说简单一点&#xff0c;中间件就是在你的请求和业务逻辑之间做一层拦截。 在 Node.js 中&#xff0c;中间件&#xff08;Middleware&#xff09; 是一种函数&#xff0c;它在 请求&#xff08;Request&#xff09;到达路由处理器之前&#xff0c;或在 响应&#xff08;Respons…

MCAL学习(6)——诊断、DCM

1.诊断概述 汽车诊断就是通过汽车总线&#xff08;CAN LIN Eth&#xff09;来进行诊断会话&#xff0c;大部分通过CAN总线通讯进行请求与响应。 1.诊断分层 DCM内部支持UDS服务和OBD服务&#xff08;排放&#xff0c;动力&#xff09;。 以统一诊断服务UDS为例&#xff0c;应…

kafka-生产者-(day-4)

day-3 BufferPool 产生原因&#xff1a;ByteBuffer的创建和释放都是比较耗费资源的&#xff0c;为了实现内存的高效利用&#xff0c;产生了他。他会对特定大小的ByteBuffer进行管理 BufferPool的字段 free:是一个ArrayDeque队列&#xff0c;缓存指定大小的ByteBuffer对象Re…

java 验证ip是否可达

默认IP的设备已开放ping功能 代码 public class PingTest {public static void main(String[] args) throws Exception {String ip "192.168.21.101";boolean reachable InetAddress.getByName(ip).isReachable(3000);System.out.println(ip (reachable ? &quo…

LeetCode 2187.完成旅途的最少时间

题目&#xff1a; 给你一个数组 time &#xff0c;其中 time[i] 表示第 i 辆公交车完成 一趟旅途 所需要花费的时间。 每辆公交车可以 连续 完成多趟旅途&#xff0c;也就是说&#xff0c;一辆公交车当前旅途完成后&#xff0c;可以 立马开始 下一趟旅途。每辆公交车 独立 运…

永磁同步电机无速度算法--基于正切函数锁相环的滑模观测器

最近在学习锁相环&#xff0c;后续会记录一下了解到的几种PLL。 一、原理介绍 传统锁相环控制框图如下所示 在电机正转时&#xff0c;传统锁相环可以实现很好的转速和转子位置估计&#xff0c;但是当电机反转&#xff0c;反电动势符号发生变化&#xff0c;系统估计转子位置最…

Vim-vimrc 快捷键映射

Vim-vimrc 快捷键映射 文章目录 Vim-vimrc 快捷键映射Leader 键快捷键映射&#xff1a;插入特定字符插入 --插入 ##插入 解释Leader键设置快速插入分隔线 Leader 键 我们还将 , 设置为 Leader 键&#xff0c;使得其他快捷键映射更加简洁。 let mapleader ","快捷键…

SylixOS armv7 任务切换

SylixOS 操作系统下&#xff0c;任务切换可以分为两种 中断退出时&#xff0c;执行的任务切换&#xff08;_ScheduleInt&#xff09;内核退出时&#xff0c;执行的任务切换&#xff08;_Schedule&#xff09; 下面分别讲讲这两种任务切换 1、中断退出时任务切换 关于 ARM 架…

Java 自定义异常:如何优雅地处理程序中的“业务病”?

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、从一个真实场景开始&#xff1a;银行转账系统的困境 假设你正在开发一个银行转账系统&#xff0c;当用户尝试转账时可能出现以下问题&#xff1a; 转…

【JAVA】【Stream流】

1. filter操作 filter()方法用于根据给定的条件过滤列表中的元素&#xff0c;仅保留满足条件的项。 List<Integer> list Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8);List<Integer> res list.stream().filter(a -> a % 2 0).collect(Collectors.toList());for(I…