數據鏈路層(超詳細)

引言

數據鏈路層是計算機網絡協議棧中的第二層,位于物理層之上,負責在相鄰節點之間的可靠數據傳輸。數據鏈路層使用的信道主要有兩種類型:點對點信道廣播信道。點對點信道是指一對一的通信方式,而廣播信道則是一對多的通信方式。在這一章中,我們將詳細介紹數據鏈路層的基本概念、點對點信道和廣播信道的數據鏈路層協議,以及數據鏈路層的分組交換設備和無線局域網的基本原理。


3.1 使用點對點信道的數據鏈路層

數據鏈路層的基本概念

數據鏈路層在整個網絡協議棧中起著關鍵作用。它主要負責確保數據幀在相鄰節點之間的可靠傳輸。數據鏈路層通過封裝成幀、差錯檢測和可靠傳輸等機制實現這一目標。


3.1.1 數據鏈路層的地位
數據鏈路層在通信中的角色

當兩個主機通過互聯網進行通信時,數據鏈路層在協議棧中扮演著重要角色。如圖3-1所示,數據在主機H和遠程主機H2之間傳輸時,需要經過多個路由器(R1、R2和R3)。這些路由器在轉發數據時,只使用協議棧的前3層:物理層、數據鏈路層和網絡層。

在這里插入圖片描述

數據流動

數據從主機H傳送到主機H2時,在每個路徑節點上會在協議棧中向上和向下流動多次,如圖3-1中的灰色粗箭頭所示。當我們專門研究數據鏈路層的問題時,可以只關心協議棧中水平方向的數據鏈路層

然而當我們專門研究數據鏈路層的問題時,在許多情況下我們可以只關心協議棧中水平方向的各數據鏈路層。于是,當主機H向主機H2發送數據時,我們可以想象數據就是在數據鏈路層從左向右水平傳送,如圖3-2中從左到右的灰色粗箭頭所示,即通過以下鏈路:

H1的鏈路層→R1的鏈路層→R2的鏈路層→R3的鏈路層→H2的鏈路層。

在這里插入圖片描述


3.1.2 數據鏈路和幀
鏈路與數據鏈路的區別

鏈路(Link) 是指從一個節點到相鄰節點的一段物理線路,中間沒有其他交換節點。數據鏈路(Data Link) 則不僅包含物理線路,還包括控制數據傳輸的通信協議和實現這些協議的硬件和軟件。

幀的概念

數據鏈路層的協議數據單元稱為幀(Frame) 。幀由網絡層的數據和數據鏈路層的首部和尾部組成,用于在鏈路上傳輸。

三層模型

如圖3-3所示,點對點信道的數據鏈路層通信可以簡化為三層模型,主要步驟如下:

  1. 封裝成幀:結點A將網絡層的IP數據報封裝成幀。
  2. 發送幀:結點A將幀發送給結點B。
  3. 解封幀:結點B接收幀后,解封裝并上交給網絡層。
點對點信道的數據鏈路層通信的主要步驟如下:
  1. 結點A的數據鏈路層把網絡層交下來的IP數據報添加首部和尾部封裝成幀
  2. 結點A把封裝好的幀發送給結點B的數據鏈路層。
  3. 若結點B的數據鏈路層收到的幀無差錯,則結點B的數據鏈路層從收到的提取出IP數據報上交給上面的網絡層,否則丟棄這個幀。

數據鏈路層不必考慮物理層實現比特傳輸的細節。我們甚至可以更簡單地設想好像是沿著兩個數據鏈路層之間的水平方向把幀直接發送給對方,如圖3-3(b)所示。

在這里插入圖片描述


3.1.3 封裝成幀
數據鏈路層以幀為單位傳輸和處理數據

在數據鏈路層,數據是以為單位進行傳輸和處理的。每個幀由網絡層的數據(例如IP數據報)以及附加的首部和尾部組成。這個過程被稱為封裝成幀

封裝成幀的過程
  1. 接收數據報:首先,網絡層的IP數據報向下傳送到數據鏈路層。
  2. 添加首部和尾部:數據鏈路層在IP數據報的前面和后面分別添加首部和尾部。這些附加部分包含了控制信息和其他必要的數據,用于確保數據的正確傳輸。
  3. 形成完整的幀:經過上述步驟,IP數據報被封裝成一個完整的幀。幀的總長度等于數據部分的長度加上首部和尾部的長度。
    在這里插入圖片描述
幀定界的重要性

為了確保數據鏈路層的接收方能夠正確識別每個幀的開始和結束,需要進行幀定界。幀定界的目的是在接收到的比特流中準確定位每個幀。

幀定界的方法
  1. 時間間隔:一種簡單的方法是在傳輸的幀之間插入時間間隔,就像在英文單詞之間插入空格一樣。例如,以太網采用了這種方法。然而,某些物理層傳輸服務無法保證幀之間的時間間隔。因此,這種方法并不總是適用。

    幀1 | 時間間隔 | 幀2
    
  2. 幀長度字段:在幀的首部設置一個幀長度字段,用于指示幀的長度。這種方法依賴于幀長度字段的正確傳輸,如果該字段在傳輸過程中出現差錯,可能會導致后續一系列幀無法正確定界。

  3. 幀定界符:一種更常用的方法是在每個幀的開始和結束處添加特殊的幀定界標志。幀定界符可以是特定的比特序列或字符,用于標記幀的邊界。幀開始標志和幀結束標志可以相同,也可以不同。

    | 幀定界符 | 數據部分 | 幀定界符 |
    

在這里插入圖片描述

解決透明傳輸問題

為了實現透明傳輸,即確保數據鏈路層對上層協議的數據沒有任何限制,可以使用字節填充比特填充的方法:

  • 字節填充(Byte Stuffing) :在數據中出現的標記字符前插入一個轉義字符(例如“ESC”)。接收方在接收數據時,會刪除這個轉義字符,從而恢復原始數據。
    在這里插入圖片描述

  • 比特填充(Bit Stuffing) :在發送數據時,每當發現連續5個“1”時,插入一個“0”。接收方在接收數據時,會刪除這個填充的“0”,從而還原數據。
    在這里插入圖片描述

通過這些方法,數據鏈路層能夠有效地實現幀定界,確保數據的正確傳輸和處理。


3.1.4 差錯檢測

現實的通信鏈路并非理想

在實際的通信鏈路中,比特在傳輸過程中可能會產生差錯:即1可能會變成0,而0也可能變成1。這種現象稱為比特差錯。比特差錯是傳輸差錯中的一種。本小節所指的“差錯”,如無特殊說明,均指比特差錯。

誤碼率(Bit Error Rate,BER)

誤碼率表示在一段時間內,傳輸錯誤的比特數與所傳輸比特總數的比率。例如,誤碼率為1/100,表示平均每傳送100個比特就會出現一個比特的差錯。誤碼率與信噪比有很大的關系。如果設法提高信噪比,就可以使誤碼率減小。然而,實際的通信鏈路無法使誤碼率降到零。因此,為了保證接收到的數據是正確的,計算機網絡在傳輸數據時,必須采用某種差錯檢測措施

差錯檢測的基本原理

雖然各種差錯檢測技術的具體方法差別很大,但其基本原理是相同的。圖3-9展示了利用差錯檢測碼(Error-Detecting Code,EDC)實現差錯檢測的基本原理。

在這里插入圖片描述

差錯檢測過程
  1. 發送方:采用某種差錯檢測算法,用發送的數據D計算出差錯檢測碼EDC(D),并將EDC隨數據一起發送給接收方。
  2. 接收方:通過同樣的算法計算接收數據D’的差錯檢測碼EDC(D’),如果接收到的EDC與計算出的EDC不同,則可判斷傳輸的數據中出現了差錯,即檢測出了差錯。

需要注意的是,未檢測出差錯并不意味著傳輸的數據中一定沒有出現差錯,但出現差錯的概率非常小。為了提高差錯檢測的檢錯率,可以使用更長的差錯檢測碼和更復雜的算法。當然,這也會增加傳輸的開銷。

幀檢驗序列(Frame Check Sequence,FCS)

在數據鏈路層,為了便于硬件檢測差錯,通常會在幀的尾部設置一個差錯檢驗字段,存放整個幀(包含首部和數據)的差錯檢測碼,這個差錯檢驗字段常稱為幀檢驗序列(FCS) 。因此,要在數據鏈路層進行差錯檢驗,就必須把數據劃分為幀,每一幀都加上差錯檢測碼,一幀接一幀地傳送,然后在接收方逐幀進行差錯檢驗。

循環冗余檢驗(Cyclic Redundancy Check,CRC)

在數據鏈路層通常使用循環冗余檢驗(CRC) 技術進行差錯檢測。CRC編碼的基本原理如圖3-10所示。

在這里插入圖片描述

CRC編碼過程
  1. 生成式G:發送方和接收方首先必須協商一個k+1比特的生成式G。算法要求G的最高位和最低位的比特為1。
  2. 計算冗余碼R:發送方選取一個合適的比特冗余碼R(即檢錯碼),并將它附加到D上,使得得到的d+r比特模式用模2算術恰好能被G整除。
  3. 差錯檢測:接收方用G去除接收到的d+r比特,如果余數非零則檢測出差錯,否則認為數據正確。
多項式編碼

CRC編碼也稱為多項式編碼,因為該編碼能夠將要發送的比特串看作系數為0和1的一個多項式,對比特串的模2算術被解釋為多項式算術。在上面的例子中,可以用多項式G(X)=X3+X2+1表示生成式G=1101(最高位對應于X3,最低位對應于X?)。多項式G(X)稱為生成多項式。

廣泛使用的生成多項式

目前廣泛使用的生成多項式有:

  • CRC-16:X1?+X12+X?+1
  • CRC-CCITT:X1?+X12+X?+1
  • CRC-32:X32+X2?+X23+X22+X1?+X12+X11+X1?+X?+X?+X?+X?+X2+X+1
CRC的優點

CRC具有非常好的檢錯能力,盡管計算復雜,但非常易于用硬件實現,因此被廣泛應用于現代計算機網絡的數據鏈路層。在數據鏈路層,發送端FCS的生成和接收端的CRC完全由硬件完成,處理速度非常快,對數據傳輸的延誤極小。

CRC的局限性

使用CRC的差錯檢測技術只能檢測出傳輸中的差錯,并不能糾正錯誤。雖然任何差錯檢測技術都無法做到檢測出所有差錯,但通常我們認為:凡是接收端數據鏈路層通過差錯檢測接受的幀,我們都能以非常接近于1的概率認為這些幀在傳輸過程中沒有產生差錯。接收端丟棄的幀雖然曾收到,但最終因為有差錯被丟棄,即沒有被接受。上述原則可以近似地表述為:凡是接收端數據鏈路層接受的幀均無差錯

深入了解crc的計算過程,請點擊: https://blog.csdn.net/2301_80064376/article/details/139942132

糾錯碼(Error-Correcting Code)

要想糾正傳輸中的差錯,可以使用冗余信息更多的糾錯碼(Error-Correcting Code)進行前向糾錯(Forward Error Correction, FEC) 。通過糾錯碼能檢測數據中出現差錯的具體位置,從而糾正錯誤。由于糾錯碼要發送更多的冗余信息,開銷非常大,在計算機網絡中較少使用。通常采用檢錯重傳方式來糾正傳輸中的差錯,或者僅僅是丟棄檢測到差錯的幀,由上層協議去解決數據丟失的問題。


3.1.5 可靠傳輸

在某些情況下,我們需要數據鏈路層向上面的網絡層提供“可靠傳輸”的服務。可靠傳輸的目標是確保發送端發送的數據能夠被接收端完整無誤地接收。保證數據傳輸的可靠性是計算機網絡中的一個非常重要的任務,也是各層協議均可選擇的一個重要功能。本文討論的可靠傳輸基本原理不僅適用于數據鏈路層,而且可以應用于計算機網絡體系結構的各層協議中。例如,無線局域網和TCP協議都使用了這些原理和方法來實現可靠傳輸。

在這里插入圖片描述

可靠傳輸的基本模型

可靠傳輸協議為上層的對等實體間提供一條可靠信道,即發送方上層實體通過該信道發送的分組都會正確地到達接收方上層實體,不會出現比特差錯、分組丟失、分組重復,也不會出現分組失序。然而,底層信道卻是不可靠的,分組可能出現差錯、丟失、重復和失序。可靠傳輸協議的目標是在不可靠的信道上實現可靠的數據傳輸服務。為了實現可靠的單向數據傳輸,可靠傳輸協議需要進行雙向通信,因此底層的不可靠信道必須是雙向的。

1. 停止等待協議

基本原理

在計算機網絡中實現可靠傳輸的基本方法是發現錯誤后重傳。首先要解決的問題是如何知道分組在傳輸過程中是否出現了差錯。對于分組中的比特差錯,接收方使用差錯檢測技術識別接收的分組中是否存在比特差錯。為了讓發送方知道是否出現了差錯,接收方必須將是否正確接收分組的信息反饋給發送方。

在這里插入圖片描述

2.停止協議的特點
  • 確認與否認

    當正確接收到一個分組時,接收方向發送方發送一個確認分組ACK(Acknowledgment) 。如果接收到的分組存在比特差錯,接收方丟棄該分組并發送一個否認分組NAK(Negative Acknowledgment) 。發送方收到ACK后可以發送下一個分組,而收到NAK則要重傳原來的分組,直到收到ACK為止。由于發送方每發送完一個分組必須停下來等待確認,因此該協議被稱為停止等待協議(Stop-and-Wait, SW)

  • 超時重傳

    如果底層的信道會丟失分組,當數據分組或確認分組丟失時,發送方將會一直等待接收方的確認分組。為了解決這個問題,可以在發送方發送完一個數據分組時,啟動一個超時計時器(Timeout Timer) 。若超時計時器時間到而發送方仍未收到接收方的確認分組,則重傳原來的分組。這種機制被稱為超時重傳

  • 重復分組

    當確認分組丟失時,接收方會收到兩個相同的數據分組,即重復分組。為了識別重復分組,每個數據分組都帶有不同的發送序號。接收方連續收到相同序號的數據分組時,表明出現了重復分組,應當丟棄重復分組,并向發送方補發一個確認分組ACK。

  • 序號

    任何編號系統的序號所占用的比特數是有限的。因此,經過一段時間后,發送序號會重復使用。對于停止等待協議,只需1比特來編號即可,因為每次發送一個新的數據分組,其發送序號與上次發送的分組序號不同即可。

  • 自動重傳請求(ARQ)

    通過上述確認和超時重傳機制實現的可靠傳輸協議,稱為自動重傳請求(Automatic Repeat reQuest,ARQ) 協議。發送方發送完一個分組后,必須暫時保留已發送的分組副本(用于重傳)。只有在收到相應的確認后才能清除該分組副本。保留副本、重傳、確認和編號都是可靠傳輸協議實體自己的行為,上層實體不會感覺到這些操作。

2. 停止等待協議的算法描述

為了使讀者對停止等待協議有一個完整而準確的理解,下面給出此協議的算法,讀者應弄清算法中的每一個步驟。

在發送方:

  1. 從主機取一個數據幀。

  2. 初始化發送狀態變量V(S)=0

  3. 將發送狀態變量的數值寫入發送序號N(S) ,將數據幀送交發送緩存

  4. 將發送緩存中的數據幀發送出去。

  5. 設置超時計時器

  6. 等待以下三個事件中最先出現的一個:

    1. 若收到ACK,且確認序號A?=V(S) ,則從主機取一個新的數據幀,更新發送狀態變量,轉到步驟3。
    2. 若收到ACK,且確認序號A?≠V(S) ,則忽略重復確認,轉到步驟6。
    3. 超時計時器時間到,則重傳數據幀,轉到步驟4。

在接收方:

  1. 初始化接收狀態變量V?=0

  2. 等待接收數據幀。

  3. 當收到一個數據幀時,檢查有無產生傳輸差錯(如用CRC)。

    1. 若檢查結果正確無誤,則執行后續算法。
    2. 否則丟棄此數據幀,轉到步驟2。
  4. N(S)=V? ,則執行后續算法,表示收到發送序號正確的數據幀,否則丟棄此數據幀,轉到步驟8。

  5. 將收到的數據幀中的數據部分送交主機。

  6. 生成新的ACK,將接收狀態變量的數值寫入確認序號A?

  7. 更新接收狀態變量,準備接收下一個數據幀。

  8. 發送已生成的ACK,并轉到步驟2。

3. 停止等待協議的信道利用率

停止等待協議的優點是簡單,但缺點是信道利用率較低。圖3-13展示了這一問題。假定A和B之間有一條直通的信道來傳送分組。

在這里插入圖片描述

假定A發送分組需要的時間是T。T等于分組長度除以數據率。再假定分組正確到達B后,B處理分組的時間可以忽略不計,立即發回確認分組。假定B發送確認分組需要時間T。如果A處理確認分組的時間也可以忽略不計,那么A在經過時間(TD+RTT+TA)后可以發送下一個分組,這里的RTT是往返時間。信道的利用率U可用下式計算:

                       U = T / (T<sub>D</sub> + RTT + T<sub>A</sub>)

RTT遠大于分組發送時間T時,信道的利用率就會非常低。若出現差錯后的分組重傳,會進一步降低信道的利用率。

4. 回退N幀協議

為提高傳輸效率,發送方可以不使用低效率的停止等待協議,而采用流水線傳輸方式。發送方可連續發送多個分組,不必每發完一個分組就停頓等待確認。這樣可使信道上一直有數據不間斷地傳送。回退N幀(Go-Back-N,GBN) 協議在流水線傳輸的基礎上,利用發送窗口限制發送方連續發送分組的個數,是一種連續ARQ協議。

在這里插入圖片描述

滑動窗口

GBN協議規定,發送方每收到一個確認,就把發送窗口向前滑動一個分組的位置。發送窗口的大小決定了發送方已發送但還沒有收到確認的最大分組數。

在這里插入圖片描述

GBN協議的工作過程
  1. 接收方只按序接收分組:若某個分組出現差錯,其后的所有分組都要被重傳。
  2. 超時機制重傳:一旦發送方超時,立即重傳發送窗口內所有已發送的分組。
  3. 累積確認:接收方對分組n的確認,表明接收方已正確接收到分組n及以前的所有分組。

在這里插入圖片描述

5. 選擇重傳協議(SR)

GBN協議的一個缺點是:一個分組的差錯可能引起大量分組的重傳。選擇重傳(Selective Repeat,SR) 協議通過選擇重傳出現差錯的分組來提高性能。接收方需要對每個正確接收到的分組進行逐一確認(選擇確認)。

在這里插入圖片描述

SR協議GBN協議更復雜,接收方需要足夠的緩存來暫存失序到達的分組。

6. 數據鏈路層的可靠傳輸

從以上的討論可以看出,不可靠的鏈路加上適當的協議(如停止等待協議)就可以使數據鏈路層向上提供可靠傳輸服務。但這樣做會降低數據傳輸效率,并增加協議的復雜性。因此,應根據鏈路的具體情況決定是否需要數據鏈路層提供可靠傳輸服務。

過去,通信鏈路質量較差,數據鏈路層廣泛使用可靠傳輸協議。然而,隨著通信技術的發展,現在的有線通信鏈路質量已經非常好,數據鏈路層一般不采用確認和重傳機制,而由上層協議(如運輸層的TCP)來完成差錯改正。這樣可以提高通信效率,降低設備成本。然而,在無線信道傳輸數據時,由于無線信道誤碼率較高,往往需要在數據鏈路層實現可靠傳輸服務,以盡快改正差錯,為上層提供較好的傳輸服務。


總結

數據鏈路層在計算機網絡中扮演著關鍵角色,確保數據在相鄰節點間可靠傳輸。通過介紹點對點信道廣播信道的數據鏈路層協議,讀者可以全面了解數據鏈路層的基本概念、封裝成幀、差錯檢測和可靠傳輸等內容。


圖文來源:《計算機網絡教程》

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

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

相關文章

算法工程師第五天(● 哈希表理論基礎 ● 242.有效的字母異位詞 ● 349. 兩個數組的交集 ● 202. 快樂數● 1. 兩數之和 )

參考文獻 代碼隨想錄 一、有效的字母異位詞 給定兩個字符串 s 和 t &#xff0c;編寫一個函數來判斷 t 是否是 s 的字母異位詞。 注意&#xff1a;若 s 和 t 中每個字符出現的次數都相同&#xff0c;則稱 s 和 t 互為字母異位詞。 示例 1: 輸入: s "anagram", …

風險評估:Tomcat的安全配置,Tomcat安全基線檢查加固

「作者簡介」&#xff1a;冬奧會網絡安全中國代表隊&#xff0c;CSDN Top100&#xff0c;就職奇安信多年&#xff0c;以實戰工作為基礎著作 《網絡安全自學教程》&#xff0c;適合基礎薄弱的同學系統化的學習網絡安全&#xff0c;用最短的時間掌握最核心的技術。 這一章節我們需…

grafana數據展示

目錄 一、安裝步驟 二、如何添加喜歡的界面 三、自動添加注冊客戶端主機 一、安裝步驟 啟動成功后 可以查看端口3000是否啟動 如果啟動了就在瀏覽器輸入IP地址&#xff1a;3000 賬號密碼默認是admin 然后點擊 log in 第一次會讓你修改密碼 根據自定義密碼然后就能登錄到界面…

高職物聯網實訓室

一、高職物聯網實訓室建設背景 隨著《中華人民共和國國民經濟和社會發展第十四個五年規劃和2035年遠景目標綱要》的發布&#xff0c;中國正式步入加速數字化轉型的新時代。在數字化浪潮中&#xff0c;物聯網技術作為連接物理世界與數字世界的橋梁&#xff0c;其重要性日益凸顯…

Golang | Leetcode Golang題解之第224題基本計算器

題目&#xff1a; 題解&#xff1a; func calculate(s string) (ans int) {ops : []int{1}sign : 1n : len(s)for i : 0; i < n; {switch s[i] {case :icase :sign ops[len(ops)-1]icase -:sign -ops[len(ops)-1]icase (:ops append(ops, sign)icase ):ops ops[:len(o…

Knife4j的原理及應用詳解(三)

本系列文章簡介&#xff1a; 在當今快速發展的軟件開發領域&#xff0c;API&#xff08;Application Programming Interface&#xff0c;應用程序編程接口&#xff09;作為不同軟件應用之間通信的橋梁&#xff0c;其重要性日益凸顯。隨著微服務架構的興起&#xff0c;API的數量…

價值投資者什么時候賣出股票?

經常有人說&#xff0c;會買的只是徒弟&#xff0c;會賣的才是師傅。 在閱讀《戰勝華爾街》的過程中&#xff0c;也多次感受到林奇先生的賣出邏輯&#xff0c;當股票的價格充分體現了公司的價值的時候&#xff0c;就是該賣出股票的時候。但這只是理論上的&#xff0c;從林奇先…

數據中臺指標管理系統

您所描述的是一個數據中臺指標管理系統&#xff0c;它基于Spring Cloud技術棧構建。數據中臺是企業數據管理和應用的中心平臺&#xff0c;它整合了企業內外部的數據資源&#xff0c;提供數據服務和數據管理能力。以下是您提到的各個模塊的簡要概述&#xff1a; 1. **首頁**&am…

JSP WEB開發(四) MVC模式

MVC模式介紹 MVC&#xff08;Model-View-Controller&#xff09;是一種軟件設計模式&#xff0c;最早出現在Smalltalk語言中&#xff0c;后來在Java中得到廣泛應用&#xff0c;并被Sun公司推薦為Java EE平臺的設計模式。它把應用程序分成了三個核心模塊&#xff1a;模型層、視…

2024年有多少程序員轉行了?

疫情后大環境下行&#xff0c;各行各業的就業情況都是一言難盡。互聯網行業更是極不穩定&#xff0c;頻頻爆出裁員的消息。大家都說2024年程序員的就業很難&#xff0c;都很焦慮。 在許多人眼里&#xff0c;程序員可能是一群背著電腦、進入高大上寫字樓的職業&#xff0c;他們…

SVN 80道面試題及參考答案(2萬字長文)

目錄 解釋SVN的全稱和主要功能。 SVN與CVS相比,有哪些主要改進? 描述SVN的工作流程。 什么是版本庫(repository)?它存儲了什么? 解釋工作副本(working copy)的概念。 SVN如何處理文件的版本控制? SVN中的“commit”是什么意思? 解釋“update”操作的作用。 如何…

Datawhale AI 夏令營 機器學習挑戰賽

一、賽事背景 在當今科技日新月異的時代&#xff0c;人工智能&#xff08;AI&#xff09;技術正以前所未有的深度和廣度滲透到科研領域&#xff0c;特別是在化學及藥物研發中展現出了巨大潛力。精準預測分子性質有助于高效篩選出具有優異性能的候選藥物。以PROTACs為例&#x…

Hi3861 OpenHarmony嵌入式應用入門--MQTT

MQTT 是機器對機器(M2M)/物聯網(IoT)連接協議。它被設計為一個極其輕量級的發布/訂閱消息傳輸 協議。對于需要較小代碼占用空間和/或網絡帶寬非常寶貴的遠程連接非常有用&#xff0c;是專為受限設備和低帶寬、 高延遲或不可靠的網絡而設計。這些原則也使該協議成為新興的“機器…

AutoMQ 生態集成 Kafdrop-ui

Kafdrop [1] 是一個為 Kafka 設計的簡潔、直觀且功能強大的Web UI 工具。它允許開發者和管理員輕松地查看和管理 Kafka 集群的關鍵元數據&#xff0c;包括主題、分區、消費者組以及他們的偏移量等。通過提供一個用戶友好的界面&#xff0c;Kafdrop 大大簡化了 Kafka 集群的監控…

量產工具一一UI系統(四)

目錄 前言 一、按鈕數據結構抽象 1.ui.h 二、按鍵處理 1.button.c 2.disp_manager.c 3.disp_manager.h 三、單元測試 1.ui_test.c 2.上機測試 前言 前面我們實現了顯示系統框架&#xff0c;輸入系統框架和文字系統框架&#xff0c;鏈接&#xff1a; 量產工具一一顯…

Redis 底層數據結構

? 簡單動態字符串 ? 鏈表 ? 字典 ? 跳躍表 ? 整數集合 ? 壓縮列表 ? 對象 SDS 增加了len和free屬性&#xff0c;記錄buf數組的使用空間和剩余空間。好處:strken函數直接讀取len值&#xff0c;時間復雜度是O(1)&#xff1b;預分配buf長度&#xf…

集控中心操作臺材質選擇如何選擇

作為集控中心的核心組成部分&#xff0c;操作臺不僅承載著各種設備和工具&#xff0c;更是工作人員進行監控、操作和管理的重要平臺。因此&#xff0c;選擇適合的集控中心操作臺材質顯得尤為重要。 一、材質選擇的考量因素 在選擇集控中心操作臺材質時&#xff0c;我們需要綜合…

SpringCloud跨微服務的遠程調用,如何發起網絡請求,RestTemplate

在我們的業務流程之中不一定都會是自己模塊查詢自己模塊的信息&#xff0c;有些時候就需要去結合其他模塊的信息來進行一些查詢完成相應的業務流程&#xff0c;但是在SpringCloud每個模塊都相對獨立&#xff0c;數據庫也有數據隔離。所以當我們需要其他微服務模塊的信息的時候&…

什么是SpringCloud Stream?

Spring Cloud Stream 是一個構建消息驅動微服務的框架&#xff0c;其基于Spring Boot來開發&#xff0c;并使用Spring Integration來連接消息代理中間件。該項目的目標是提供一套用于開發消息驅動應用的通用模型&#xff0c;并定義了用于發送和接收消息的綁定器&#xff08;Bin…

前端javascript中的排序算法之選擇排序

選擇排序&#xff08;Selection Sort&#xff09;基本思想&#xff1a; 是一種原址排序法&#xff1b; 將數組分為兩個區間&#xff1a;左側為已排序區間&#xff0c;右側為未排序區間。每趟從未排序區間中選擇一個值最小的元素&#xff0c;放到已排序區間的末尾&#xff0c;從…