一種輕量級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
英文地址,請注明出處:http://en.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…