[4G/5G/6G專題基礎-161]:常見的濾波技術

1. 濾波概述

1.1 什么是濾波

濾波(Filtering)是信號處理中的一種基本操作,用于改變信號的特性或者去除信號中的干擾成分。濾波器可以看作是一種系統,將輸入信號作為輸入,經過處理后產生輸出信號。

濾波在信號處理中廣泛應用,用于去除噪聲平滑信號頻率選擇等。

1.2?為什么需要濾波

不同的濾波器類型和參數設置將影響濾波器的頻率響應和性能,因此在選擇和設計濾波器時需要根據信號特性和應用需求進行權衡。

濾波在信號處理中是非常重要的,主要有以下幾個原因:

  1. 去除噪聲:噪聲是信號中不希望存在的無用成分,它可以由多種原因引起,如傳感器干擾電磁干擾等。濾波算法可以有效地去除信號中的噪聲,從而提高信號的質量和可靠性

  2. 提取有效信息:信號可能包含大量的噪聲和干擾成分,這些成分會掩蓋或模糊信號中的有效信息。通過濾波算法,可以濾除噪聲和干擾,突出信號中的有效信息,使其更容易被觀測和分析。

  3. 平滑信號:信號中可能存在瞬時波動或突變的現象,這些波動可能是由于測量誤差或系統變動引起的。通過濾波算法,可以平滑信號,去除這些短時波動,得到更加穩定和可靠的信號。

  4. 頻率分析:濾波算法可以將信號分解成不同頻率的成分,從而進行頻率分析和頻域處理。這對于信號處理、頻譜分析和頻率特征提取等應用非常重要。例如,使用濾波算法可以提取信號中的特定頻率成分,或者濾除某些頻率范圍內的干擾信號。

綜上所述,濾波在信號處理中的作用是非常重要的,它可以去除噪聲、提取有效信息、平滑信號以及進行頻率分析,從而改善信號質量、提高可靠性和實現更精確的信號處理任務。

1.3?濾除噪聲

濾除噪聲信號的方法之一是在時域上對波形進行濾波。以下是一些常見的時域濾波方法:

  1. 移動平均濾波(Moving Average Filtering):將信號中相鄰數據點的平均值作為濾波后的結果。這種濾波方法可以平滑信號,減少高頻噪聲的影響。移動平均濾波窗口的大小可以根據需要進行調整,較大的窗口適合濾除低頻噪聲。

  2. 中值濾波(Median Filtering):將濾波窗口內的數據點排序,然后選擇中間值作為濾波結果。中值濾波對于椒鹽噪聲等脈沖型噪聲具有很好的去除效果,可以有效平滑波形。

  3. 加權移動平均濾波(Weighted Moving Average Filtering):與簡單移動平均濾波類似,但是在計算平均值時,對不同位置的數據點賦予不同的權重。這樣可以更好地適應信號的變化情況,同時抑制噪聲的影響。

  4. 自適應濾波(Adaptive Filtering):基于信號的統計特性和模型,自適應濾波器可以根據信號的變化動態調整濾波參數,實現對噪聲的抑制。自適應濾波方法可以根據實際情況自適應地調整窗口大小或濾波器的系數。

請注意,選擇合適的濾波方法要考慮噪聲類型、信號特性以及濾波后對信號的影響。

有時候,組合多種濾波方法也可以獲得更好的濾波效果。

根據具體的應用需求和實際情況,選擇適合的濾波方法進行處理。

2.? 常見的濾波算法

2.1 常見的濾波算法

數字濾波是一種信號處理技術,用于去除信號中的噪聲或者改變信號的特性

下面是幾種常見的數字濾波算法:

  1. 均值濾波器(Mean Filter):將信號中的每個樣本值替換為該樣本值及其鄰近樣本的均值。這種濾波器適用于平穩噪聲。

  2. 中值濾波器(Median Filter):將信號中的每個樣本值替換為該樣本值及其鄰近樣本的中值。中值濾波器對于存在脈沖噪聲的信號非常有效。

  3. 低通濾波器(Low-pass Filter):此類濾波器用于去除高頻信號成分,保留低頻信號成分。常見的低通濾波器有巴特沃斯濾波器、滑動平均濾波器等。

  4. 高通濾波器(High-pass Filter):該類濾波器用于去除低頻信號成分,保留高頻信號成分。常見的高通濾波器有巴特沃斯濾波器、巴特沃斯歸一化濾波器等。

  5. 帶通濾波器(Band-pass Filter):帶通濾波器用于保留某個頻率范圍內的信號成分,抑制其他頻率范圍內的信號成分。常見的帶通濾波器有巴特沃斯帶通濾波器、Butterworth濾波器等。

這些僅是一些常見的數字濾波算法,實際應用中可能會使用更復雜的算法或者組合不同的濾波器以達到所需的濾波效果。具體選擇哪種濾波算法取決于信號的特性以及濾波的要求。

2.2 常見的語音濾波技術

在語音信號處理中,有幾種常見的濾波技術,用于去除噪聲和增強語音質量。以下是一些常見的語音信號濾波技術:

  1. 降噪濾波器(Noise Reduction Filtering):降噪濾波器用于去除語音信號中的噪聲成分。常見的降噪濾波器包括維納濾波器和基于頻域分析的降噪算法,可以通過估計噪聲幅度譜或語音-噪聲功率譜信息來減小噪聲的影響。

  2. 預彎濾波器(Pre-emphasis Filtering):預彎濾波器是一種高通濾波器,通過增強語音信號中高頻成分的能量來平衡頻譜的能量分布。預彎濾波器可以提高語音信號的清晰度,并幫助改善語音的感知質量。

  3. 增強濾波器(Enhancement Filtering):增強濾波器用于強調或突出語音信號中的特定成分,從而提高信號的清晰度和可聽性。常見的增強濾波器包括譜減法、短時能量法、頻域平滑法等。

  4. 自適應濾波器(Adaptive Filtering):自適應濾波器可以根據輸入信號的特性自動調整濾波參數,以實現對噪聲的抑制信號的增強。自適應濾波器通常使用遞歸濾波算法,如最小均方差(LMS)或最小均方誤差(MMSE)算法。

這些濾波技術可單獨應用或組合使用,根據具體的噪聲環境和應用需求選擇適合的方法。同時,濾波器的性能還受到濾波器參數的選擇和調整的影響,需要根據實際情況進行優化和調試。

2.3 濾波的基本原理

信號濾波和去噪的原理可以根據不同的濾波技術和方法而變化。

以下是一些常見的信號濾波和去噪原理:

  1. 均值濾波原理:均值濾波是一種簡單的濾波方法,它通過計算信號中每個數據點周圍鄰域數據點的平均值來平滑信號。這種濾波方法的原理是假設信號中的噪聲是隨機的,并且噪聲成分相對較小,通過計算平均值來減小噪聲的影響。

  2. 中值濾波原理:中值濾波是一種非線性濾波方法,它通過計算信號中每個數據點周圍鄰域數據點的中位數來平滑信號。中值濾波的原理是假設信號中的噪聲是脈沖型或椒鹽噪聲,通過選擇中位數來去除異常噪聲值。

  3. 頻率域濾波原理:頻率域濾波方法通過將信號轉換到頻率域進行濾波操作。它的原理是基于傅里葉變換的頻譜分析,可以選擇性地去除特定頻率范圍內的噪聲。濾波器設計可以基于濾波器響應、濾波器系數或頻域掩模等方法。

  4. 自適應濾波原理:自適應濾波器根據信號和噪聲的統計特性和模型,自動調整濾波器參數以適應信號和噪聲的變化。常見的自適應濾波原理包括最小均方誤差(LMS)濾波和最小均方差(MMSE)估計。

  5. 基于小波變換的去噪原理:小波變換是一種多尺度的分析方法,在信號分解后,可以選擇性地去除噪聲成分。通過閾值化或軟硬閾值方法,可以將小波系數中的小幅噪聲抑制或清除,并重構出干凈的信號。

這些原理和方法都有其特定的假設和適用條件,具體的選擇和實現需要根據信號和噪聲的特點、應用需求和性能要求進行評估和調整。

2.3 常見的濾波參數

常見的濾波參數包括以下幾個:

  1. 濾波器類型:濾波器可以分為低通濾波器、高通濾波器、帶通濾波器和帶阻濾波器等不同類型。選擇適當的濾波器類型取決于要去除或保留的頻率范圍。

  2. 截止頻率:截止頻率是濾波器的一個重要參數,它決定了濾波器在頻率域上的截斷或衰減特性。低通濾波器的截止頻率是指在該頻率以下的信號成分將被保留,而高通濾波器的截止頻率是指在該頻率以上的信號成分將被保留。

  3. 階數:濾波器的階數指的是濾波器的復雜度或級聯數。較高的階數通常意味著更陡峭的濾波特性更好的頻率選擇性能,但也可能導致更多的計算和延遲

  4. 帶寬:帶寬是濾波器在頻率域上的有效傳輸范圍。對于帶通濾波器和帶阻濾波器,帶寬指的是濾波器的截止頻率之間的頻率范圍。

  5. 抖動和失真:濾波器的設計通常要考慮到抖動和失真的問題。抖動是指濾波器對輸入信號的時滯響應,而失真則是指濾波器對信號的形狀、振幅或相位的改變。這些參數的控制需要根據具體的應用需求進行調整。

需要注意的是,不同類型的濾波器有不同的參數選取方法,如巴特沃斯濾波器需要指定階數和截止頻率,而高斯濾波器需要指定標準差。因此,在選擇和調整濾波器參數時,需要考慮信號的特點、濾波要求以及實際應用場景的需要。

第3章 算法庫

3.1?C++開源庫

在C++中,有一些開源庫常用于數字信號處理任務。以下是幾個常見的C++數字信號處理的開源庫:

  1. FFTW:FFTW(Fastest Fourier Transform in the West)是一個高效的快速傅立葉變換(FFT)庫。它提供了一系列優化的算法和函數,用于進行頻譜分析和濾波等信號處理任務。

  2. Intel IPP:Intel Integrated Performance Primitives(IPP)是由英特爾開發的一組高性能信號和圖像處理函數庫。IPP提供了許多優化的函數,涵蓋了常見的信號處理操作,包括濾波、變換、譜估計等。

  3. SIGLIB:SIGLIB是一個功能豐富的開源信號處理庫,提供了多種濾波、變換、特征提取等信號處理算法的實現。SIGLIB的優點是它是一個獨立的庫,可以在多個平臺上運行。

  4. Armadillo:Armadillo是一個快速、模板化的線性代數庫,用于進行矩陣操作和向量計算。它可以用于數字信號處理相關的矩陣運算,如卷積、濾波和變換等操作。

以上這些庫都是開源的,在許多項目中被廣泛使用。它們提供了豐富的功能和優化的實現,可以幫助您更輕松地進行數字信號處理任務。您可以根據具體需求和個人偏好選擇適合的庫進行使用。

3.2 C++ DSP庫

以下是一些常用的開源C++ DSP(數字信號處理)算法庫:

  1. JUCE: JUCE是一個跨平臺的C++應用程序框架,它提供了豐富的音頻處理和DSP算法庫。它支持音頻流處理、濾波、信號生成和分析等功能,并且具有良好的可擴展性和易用性。

  2. FFTW: FFTW(Fastest Fourier Transform in the West)是一個高性能的快速傅里葉變換庫,它提供了一系列的C++函數用于高效地進行傅里葉變換和逆變換。它支持多維和實數/復數的變換,適用于頻域分析和信號頻譜處理等應用。

  3. PFFFT: PFFFT是另一個快速傅里葉變換庫,它專注于實數信號的快速傅里葉變換。它具有高性能、低內存占用和易于集成等特點,適用于實時音頻處理和嵌入式系統等領域。

  4. PortAudio: PortAudio是一個跨平臺的音頻I/O庫,它提供了C++接口用于實時音頻輸入和輸出。它支持多個音頻設備和音頻流,并且可以與其他音頻處理庫結合使用,實現音頻信號的實時處理和分析。

  5. CSL: CSL(C++ Scientific Library)是一個開源的科學計算庫,其中包括用于數字信號處理的算法和函數。它提供了一系列常用的濾波器、變換、譜估計和信號生成等功能,方便進行數字信號處理和音頻處理的開發。

這些開源庫提供了豐富的數字信號處理算法和函數,可以用于音頻處理、音頻特征提取、頻譜分析、濾波器設計等應用。根據具體的需求和項目要求,可以選擇合適的庫進行集成和使用。

在C++領域中,有一些常用的科學計算庫可以提供數字信號處理(DSP)的功能,例如:

  1. Eigen:Eigen是一個高性能的C++模板庫,專注于線性代數運算。它提供了矩陣、向量、線性方程求解、特征值分解、傅里葉變換等常用的線性代數運算功能,可在數字信號處理中使用。

  2. GSL(GNU Scientific Library):GSL是GNU項目的一部分,它提供了一系列用于科學計算的C函數庫。GSL包含了各種數學函數、特殊函數、數值積分、數值優化以及快速傅里葉變換等功能,可用于數字信號處理及其他科學計算任務。

  3. Boost.Math:Boost是一個流行的C++庫集合,其中的Boost.Math模塊提供了一組數學函數和算法。它包括了各種數值計算函數、特殊函數、線性代數運算等,可輔助進行數字信號處理、統計分析等任務。

這些庫都是開源的,提供了豐富的數學和科學計算功能,可以輔助實現數字信號處理算法。在選擇合適的庫時,可以根據具體的需求、性能要求和易用性等因素進行評估和選擇。

3.3 C++科學計算庫 GSL

最流行且常用的C++科學計算庫是GNU Scientific Library (GSL)。

GSL是一個開源的C和C++庫,提供了許多用于科學計算的函數和算法,涵蓋了各種數學和統計學的任務。

GSL的功能包括但不限于:線性代數操作(如矩陣運算、向量操作、特征值分解)、數值積分和微分、優化算法、隨機數生成、多項式擬合、信號處理、插值、快速傅里葉變換等等。它還提供了許多特殊函數的實現,例如橢圓函數、貝塞爾函數、伽瑪函數等。

GSL是一個功能強大且廣泛使用的庫,適用于各種科學計算和數值分析的領域。它易于集成到C++項目中,并且具有高性能和可靠性。

GNU Scientific Library(GSL)是一個強大的、可靠的開源科學計算庫,用于C和C++編程語言。它提供了許多數值計算和統計分析的功能,可以用于各種科學和工程領域的計算任務。

GSL庫的功能包括但不限于:

GNU Scientific Library(GSL)是一個功能強大的開源科學計算庫,提供了豐富的數學和統計學功能。

下面是GSL的主要功能和特點:

  1. 基本數學函數:包括數值計算、三角函數、指數函數、對數函數等。

  2. 特殊函數:實現了各種特殊函數,如貝塞爾函數、伽馬函數、橢圓函數等。

  3. 矩陣運算:提供了矩陣和向量操作,包括矩陣乘法、向量加法、轉置、逆矩陣等。

  4. 數值積分和微分方程:支持多種數值積分方法,包括高斯積分、自適應積分等,以及常微分方程的數值求解方法。

  5. 優化算法:包括梯度計算、擬牛頓法和共軛梯度等方法進行非線性優化。

  6. 隨機數生成:提供了偽隨機數生成器和各種常用分布的隨機數生成方法。

  7. 數值線性代數:提供了線性方程組求解、特征值分解、奇異值分解等功能。

  8. 統計分析:包括概率分布函數、假設檢驗、方差分析、回歸分析等統計學函數和方法。

  9. 插值和擬合:支持數據插值、多項式插值、樣條插值等,以及數據擬合和曲線擬合。

  10. 數字信號處理:包括快速傅里葉變換(FFT)、濾波器設計、濾波等信號處理功能。

GSL在科學和工程計算中得到廣泛應用,它具有可靠的數值算法、豐富的函數庫和簡單易用的API接口。你可以通過訪問GNU GSL的官方網站(https://www.gnu.org/software/gsl/)了解更多關于GSL的詳細信息,并獲取相關的文檔和示例代碼。

3.4 GSL數字信號處理

GSL庫在數字信號處理方面提供了多種功能和工具,下面列舉了一些主要的數字信號處理功能:

  1. 快速傅里葉變換(FFT):GSL實現了快速傅里葉變換算法,可用于高效地進行信號頻譜分析、濾波、相關性計算等。

  2. 濾波器設計:GSL提供了多種濾波器設計方法和函數,包括低通濾波器、高通濾波器、帶通濾波器、帶阻濾波器等。可以設計和實現各種常見的濾波器,如巴特沃斯濾波器、切比雪夫濾波器等。

  3. 濾波:GSL中的濾波函數可以應用已設計的濾波器來過濾信號,去除噪音或者進行信號增強。

  4. 頻譜估計:GSL提供了用于頻譜估計的函數,如周期圖法、自相關函數法、譜密度估計等。可以計算信號的頻譜特性,包括頻率分量的強度和相位信息。

  5. 自相關和互相關:GSL提供了自相關和互相關函數,用于信號的相似性分析、信號同步、相關性計算等。

  6. 數字濾波器:GSL支持數字濾波器的設計和應用,包括FIR濾波器和IIR濾波器。可以實現濾波器的激勵響應計算、濾波操作和頻率響應分析等。

  7. 信號重采樣:GSL提供了信號重采樣函數,可以根據給定的采樣率對信號進行重采樣,用于改變信號的采樣頻率和處理不同采樣速率的信號。

  8. 非線性信號處理:GSL還提供了一些非線性信號處理功能,如非線性濾波、非線性系統建模等。

GSL中的數字信號處理功能可以幫助你進行信號處理、頻譜分析、濾波等操作。它提供了一組強大的函數和工具,方便你進行數字信號處理任務。詳細的函數和使用方法可以在GSL的文檔中找到。

3.5 SP++圖像庫

SP++是一個針對圖像和信號處理的開源C++庫,它提供了一系列常用的圖像處理和信號處理功能。

SP++庫的主要功能包括:

  1. 圖像處理:包括圖像讀取和保存、圖像縮放、圖像旋轉、圖像濾波、邊緣檢測、圖像分割和圖像增強等功能。

  2. 信號處理:提供了一系列信號處理函數,如傅里葉變換、濾波器設計、頻譜分析、信號壓縮等。

  3. 特征提取:支持常用的圖像特征提取方法,如HOG(方向梯度直方圖)、LBP(局部二值模式)等。

  4. 目標檢測和目標跟蹤:包括目標檢測算法(如Haar級聯、HOG+SVM)和目標跟蹤算法(如卡爾曼濾波器、粒子濾波器)。

  5. 機器學習:提供了一些機器學習算法的實現,如K近鄰算法、支持向量機等。

  6. 計算幾何:支持計算幾何算法,如點線面的幾何計算、包圍盒計算等。

  7. 數值優化:提供了一些數值優化算法,如梯度下降法、共軛梯度法等。

SP++庫是一個開源項目,你可以在其GitHub倉庫上找到更多關于該庫的詳細信息、示例代碼和文檔。請注意,由于SP++庫可能是一個相對較新的庫,因此可能還不太成熟或缺乏廣泛運用。在使用之前,請確保熟悉其文檔和功能,并在實際項目中進行充分測試。

3.6 C++數字信號處理算法庫SP++

SP++ (Signal?Processing?in C++) 是一個關于信號處理與數值計算的開源C++程序庫,該庫提供了信號處理與數值計算中常用算法的C++實現。

SP++中所有算法都以C++類模板方法實現,以頭文件形式組織而成,所以不需要用戶進行本地編譯,只要將相關的頭文件包含在項目中即可使用。”XXX.h”表示聲明文件,”XXX-impl.h”表示對應的實現文件。所有的函數和類均位于名字空間”splab”中,因此使用SP++時要進行命名空間聲明:”using namespace splab”。
SP++項目地址:https://code.google.com/archive/p/tspl/,所有算法以代碼的形式發表在了“開源中國社區”,博客地址為:http://my.oschina.net/zmjerry/blog,?https://www.oschina.net/p/tspl?若有找不到的文件,可以通過博客主頁提供的“搜索博客”功能進行查找。

SP++中實現的相關算法目錄如下:

1 向量類模板
1.1 基本向量類
1.2 常用數學函數的向量版本
1.3 常用的輔助函數
1.4 簡單計時器

2 矩陣類模板
2.1 基本矩陣類
2.2 常用數學函數的矩陣版本
2.3 實矩陣與復矩陣的Cholesky分解
2.4 實矩陣與復矩陣的LU分解
2.5 實矩陣與復矩陣的QR分解
2.6 實矩陣與復矩陣的SVD分解
2.7 實矩陣與復矩陣的EVD分解
2.8 矩陣的逆與廣義逆

3 線性方程組
3.1 常規線性方程組
3.2 超定與欠定線性方程組
3.3 病態線性方程組

4 非線性方程與方程組
4.1 非線性方程求根
4.2 非線性方程組求根
4.3 Romberg數值積分

5 插值與擬合
5.1 Newton插值
5.2 三次樣條插值
5.3 最小二乘擬合

6 優化算法
6.1 一維線搜索
6.2 最速下降法
6.3 共軛梯度法
6.4 擬Newton法

7 Fourier分析
7.1 2的整次冪FFT算法
7.2 任意長度FFT算法
7.3 普通信號FFT使用方法
7.4 FFTW的C++接口
7.5 卷積與快速實現算法

8 數字濾波器設計
8.1 常用窗函數
8.2 濾波器基類設計
8.3 FIR數字濾波器設計
8.4 IIR數字濾波器設計

9 隨機信號處理
9.1 隨機數生成器
9.2 概論統計中的常用函數
9.3 相關與快速實現算法

10 功率譜估計
10.1 經典譜估計方法
10.2 參數化譜估計方法
10.3 特征分析譜估計方法

11 自適應濾波器
11.1 Wiener濾波器
11.2 Kalman濾波器
11.3 LMS自適應濾波器
11.4 RLS自適應濾波器

12 時頻分析
12.1 加窗Fourier變換
12.2 離散Gabor變換
12.3 Wigner-Wille分布

13 小波變換
13.1 連續小波變換
13.2 二進小波變換
13.3 離散小波變換

14 查找與排序
14.1 二叉查找樹
14.2 平衡二叉樹
14.3 基本排序算法
14.4 Huffman編碼

3.7 SP++庫與GSL的區別

    • SP++:由于其專注于信號處理,SP++更適合用于音頻處理、圖像處理、通信系統等需要對信號進行處理的應用領域。
    • GSL:GSL則更廣泛應用于科學計算和數值分析領域,例如物理建模、統計分析、優化問題等。
  1. 接口和文檔:

    • SP++:SP++提供了易于使用的C++接口和詳細的文檔,使開發人員能夠快速上手并了解其功能和用法。
    • GSL:GSL同樣提供了C++接口并有詳細的文檔,但由于其功能廣泛,可能需要更多時間來熟悉和掌握。
  2. 社區支持和更新:

    • SP++:SP++是一個相對較新的庫,盡管其功能較為專注,但其社區支持可能相對較少,更新頻率可能較低。
    • GSL:GSL是一個成熟的庫,已經存在了相當長的時間,有一個龐大的用戶群體和活躍的社區支持,經常會有維護和更新。

綜上所述,如果你的需求主要是信號處理方面的任務,SP++可能是一個更合適的選擇,它提供了專門針對信號處理的功能和易于使用的接口。而如果你的需求更廣泛,且需要進行科學計算和數值分析,那么GSL可能更適合你,它提供了更多領域的功能模塊。你可以根據自己的具體需求和優先權進行選擇。

3.8?C++如何實現濾波

在C++中實現濾波可以使用不同的方法,其中最常用的是數字濾波器設計

下面是一種使用數字濾波器的常見實現方法:

  1. 確定濾波器類型:首先確定你需要的濾波器類型,比如低通濾波器、高通濾波器、帶通濾波器或帶阻濾波器。確定了濾波器類型后,就可以開始設計濾波器。

  2. 設計濾波器:有很多方法可以設計數字濾波器,其中常用的有頻域設計和時域設計等。常見的頻域設計方法有FIR(有限脈沖響應)濾波器和IIR(無限脈沖響應)濾波器。常見的時域設計方法包括窗函數法和最小二乘法等。

  3. 實現濾波器:根據設計得到的濾波器參數,可以使用C++代碼實現濾波器。具體實現方式取決于濾波器的類型和設計方法。對于FIR濾波器,可以使用差分方程、卷積等方式實現。對于IIR濾波器,可以使用差分方程、遞歸等方式實現。

  4. 應用濾波器:將濾波器應用于需要濾波的信號上。將輸入信號逐樣本輸入濾波器,根據濾波器的差分方程或遞歸方程計算輸出信號。

需要注意的是,在實際應用中,濾波器的設計和實現可能會涉及到很多細節和性能優化。有時候,為了方便和效率,可以使用成熟的開源庫來實現濾波器,如之前提到的GNU Scientific Library (GSL)、JUCE等,它們提供了豐富的濾波器函數和工具。這樣可以減少手動實現的復雜性和風險。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36627.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36627.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36627.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git和GitHub

文章目錄 1.Git介紹2. 常用命令3. Git分支操作4. Git團隊協作機制5. GitHub操作6. IDEA集成Git7.IDEA操作GitHub8. Gitee 1.Git介紹 Git免費的開源的分布式版本控制系統,可以快速高效從小到大的各種項目 Git易于學習,占地面積小,性能快。它…

@RunWith的使用

引言 當談到在Java中進行單元測試時,JUnit是開發人員的常見選擇之一。JUnit是一個流行的單元測試框架,它允許您編寫和執行測試來驗證代碼的正確性。在JUnit中,RunWith注解是一個強大的工具,它可以用來定制測試運行器,…

【日常積累】RPM包依賴下載及私有yum倉庫搭建

概述 某些時候,我們需要下載某個RPM包依賴的依賴。如某些內網環境,就需要自行準備rpm包。可以通過能上互聯網的服務器進行相應的rpm包下載,然后在拷貝到相應的服務器安裝,或者搭建自己的內容rpm包倉庫。 查看*.rpm 包依賴&#…

Flink多流處理之Broadcast(廣播變量)

寫過Spark批處理的應該都知道,有一個廣播變量broadcast這樣的一個算子,可以優化我們計算的過程,有效的提高效率;同樣在Flink中也有broadcast,簡單來說和Spark中的類似,但是有所區別,首先Spark中的broadcast是靜態的數據,而Flink中的broadcast是動態的,也就是源源不斷的數據流.在…

批處理自動切換ip地址與網絡的啟用、禁用

啟用禁用網絡 echo off :: BatchGotAdmin :------------------------------------- REM --> Check for permissions >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" REM --> If error flag set,…

什么是微服務?

2.微服務的優缺點 優點 單一職責原則每個服務足夠內聚,足夠小,代碼容易理解,這樣能聚焦一個指定的業務功能或業務需求;開發簡單,開發效率提高,一個服務可能就是專一的只干一件事;微服務能夠被小…

命令提示符之操作基礎(Windows)

打開命令提示符 方法一 打開指定文件的文件夾,在路徑欄里輸入“cmd”,回車,就進入控制臺了。默認路徑就是指定文件夾的路徑。 方法二 打開指定的文件夾,按住shift鍵,在空白處右擊,在菜單欄中選擇“在此處打…

社區團購商城拼團秒殺接龍分銷團長小程序開源版開發

社區團購商城拼團秒殺接龍分銷團長小程序開源版開發 功能介紹: 商品管理:增加商品-商品列表-商品分類-商品單/多規格-商品標簽 訂單管理:訂單列表-訂單挑選-訂單導出-訂單打印-批量發貨-商品評價 會員管理:會員列表-會員挑選-會員…

【Git】—— 標簽管理

目錄 (一)理解標簽 1、作用 (二)創建標簽 (三)操作標簽 1、刪除標簽 2、推送標簽 3、刪除遠程標簽 (一)理解標簽 標簽 tag ,可以簡單的理解為是對某次 commit 的…

python中的迭代器和生成器

一、迭代器 支持迭代的容器,如列表(list)、元組(tuple)、字典(dict)、集合(set)這些序列式容器。 自定義迭代器的類中必須實現以下2個方法: __next__(self)…

監控Kubernetes 控制面組件的關鍵指標

控制面組件的監控,包括 APIServer、Controller-manager(簡稱 CM)、Scheduler、etcd 四個組件。 1、APIServer APIServer 的核心職能是 Kubernetes 集群的 API 總入口,Kube-Proxy、Kubelet、Controller-Manager、Scheduler 等都需…

【字符串】649. Dota2 參議院

649. Dota2 參議院 解題思路 R true 表示循環結束之后 字符串仍然存在 Rflag > 0 說明R在D之前出現 R可以消滅Dflag < 0 說明D在R之前出現 D 可以消滅R一旦其中有一個為false 說明只剩下R 或者D 那么就可以決定誰獲勝遍歷字符串 如果當前字符是R 判斷flag 如果flag &l…

‘open3d.open3d.geometry.PointCloud‘ object has no attribute ‘voxel_down_sample‘

scene_cloud open3d.geometry.PointCloud() scene_cloud.points open3d.utility.Vector3dVector(scene_points) scene_cloud scene_cloud.voxel_down_sample(voxel_size) 執行上面代碼第三句報錯&#xff0c;出現了下面這個錯誤&#xff1a; AttributeError: open3d.open…

TCP 協議十大相關特性總結

目錄 一、TCP特性 二、報文格式 TCP十大核心特性 1. 確認應答 2. 超時重傳 3. 連接管理(三次握手,四次揮手) 三次握手 四次揮手 4. 滑動窗口 情況一:接收方的ACK丟失 情況二:發送方的數據包丟失 5. 流量控制 6. 擁塞控制 7. 延遲應答 8. 捎帶應答 9. 字節流粘包問題 10. TCP的…

k8s--使用cornJob定時執行sql文件

CronJob apiVersion: batch/v1beta1 kind: CronJob metadata:name: hello spec:schedule: "0 * * * *"jobTemplate:spec:template:spec:containers:- name: postgres-alpineimage: xxxximagePullPolicy: IfNotPresentcommand:- psql- -h- 數據庫服務地址- -d- 數據庫…

大語言模型:LLM的概念是個啥?

一、說明 大語言模型&#xff08;維基&#xff1a;LLM- large language model&#xff09;是以大尺寸為特征的語言模型。它們的規模是由人工智能加速器實現的&#xff0c;人工智能加速器能夠處理大量文本數據&#xff0c;這些數據大部分是從互聯網上抓取的。 [1]所構建的人工神…

02 - git 文件重命名

查看所有文章鏈接&#xff1a;&#xff08;更新中&#xff09;GIT常用場景- 目錄 文章目錄 1. 第一種方式2. 第二種方式 1. 第一種方式 mv kongfu_person.txt kongfu.txt git add .2. 第二種方式 git mv kongfu_person.txt kongfu.txt

微服務實戰項目-學成在線-項目優化(redis緩存優化)

微服務實戰項目-學成在線-項目優化(redis緩存優化) 1 優化需求 視頻播放頁面用戶未登錄也可以訪問&#xff0c;當用戶觀看試學課程時需要請求服務端查詢數據&#xff0c;接口如下&#xff1a; 1、根據課程id查詢課程信息。 2、根據文件id查詢視頻信息。 這些接口在用戶未認…

Unity 人物連招(三段連擊)

一&#xff1a; 連招思路 首先人物角色上有三個攻擊實例對象 Damage,每一個damage定義了攻擊的傷害值&#xff0c;攻擊距離&#xff0c;觸發器名稱&#xff0c;傷害的發起者&#xff0c;攻擊持續時間&#xff0c;攻擊重置時間&#xff0c;傷害的碰撞框大小等字段&#xff1a; …

【WordPress】給你一萬個不使用WP-Cron定時機制的理由

這篇文章也可以在我的博客中查看 定時任務 cron Cron是Unix/Linux系統中的任務調度工具&#xff0c;允許用戶在預定的時間和日期間隔自動運行命令或腳本 它通過Cron表達式定義任務執行的頻率&#xff0c;該表達式包含分鐘、小時、日期等信息 我們可以利用Cron來定期執行維護…