【計網】網絡交換技術之分組交換(復習自用,重要1)

復習自用的,處理得比較草率,復習的同學或者想看基礎的同學可以看看,大佬的話可以不用浪費時間在我的水文上了

另外兩種交換技術可以直接點擊鏈接訪問相關筆記:

電路交換

報文交換

一、分組交換的定義

1.定義

? ? 分組交換(Packet Switching) 是一種用于數據通信的網絡傳輸技術,通常用于互聯網等大規模分布式網絡。在分組交換中,發送端的數據被分割成若干小的數據塊(分組),每個分組獨立攜帶必要的控制信息(例如目標地址、源地址、序列號等),通過網絡傳輸。每個分組在網絡中按照“存儲轉發”的方式,通過多個路由器(或交換節點)逐步轉發,最終到達接收端。接收端再將這些分組按照順序重新組裝,恢復成原始的完整數據。

2.擴:為什么是“分組”而不是“大包”

?? ? 分組(packet)是為了提高網絡資源利用率并且減少數據傳輸的延遲。如果直接傳輸一個大報文,若傳輸中有任何錯誤或丟包,重傳的成本很高,且通信資源會被長時間獨占。而將數據拆分成多個小的分組,使得每個分組都可以獨立傳輸并且具有獨立的路徑選擇,極大地提高了網絡的靈活性和可靠性


二、分組交換的原理

分組交換的原理可以分為幾個階段,分別是:報文拆分分組封裝逐跳存儲轉發分組重組。以下我將詳細講解每一個階段。

1. 報文拆分與分組封裝

1.1. 報文拆分

  • 報文(message)指的是一塊較大的數據單元,它是源主機發送的數據,可能包含某個文件、文本等。由于網絡帶寬、鏈路限制等原因,發送這些報文可能面臨較高的延遲和丟包風險。

  • 在分組交換中,發送端將報文拆分成若干小塊,稱為分組(packet)。每個分組都是數據的一個“片段”,可以獨立傳輸,包含著原始數據的一部分。

1.2. 分組封裝

每個分組都被封裝在一個包含控制信息的單元中,確保它能夠被正確地傳輸和路由。這些控制信息通常包括:

  • 源地址:發送該分組的主機的地址。

  • 目的地址:目標主機的地址,路由器通過它來判斷該分組的目的地。

  • 序列號或偏移量:用于標記分組在原始報文中的位置或順序。

  • 校驗和(checksum):用于檢查分組是否在傳輸過程中發生了錯誤。

在分組交換中,控制信息(頭部)數據部分(負載)一起構成一個完整的分組。控制信息確保分組能夠在網絡中正確識別、轉發、校驗和重組。


2. 存儲轉發機制

2.1. 逐跳傳輸

  • 在分組交換中,分組通過多個網絡節點(路由器)逐跳轉發。在每個路由器,分組會被暫存(存儲)并檢查,然后再進行轉發(轉發)。這個過程稱為存儲轉發(store-and-forward)。

  • 每個路由器負責接收、存儲和轉發分組。它會讀取分組頭部的目標地址信息,然后查找自己維護的路由表,根據路由表中的信息選擇合適的下一跳路由器,然后將分組轉發到下一個路由器,直到最終到達目的地。

2.2. 路由器的分組轉發作用

  • 路由器是分組交換網絡中的關鍵設備,負責在不同網絡之間轉發分組。路由器相當于網絡中的“交通警察”或“郵局分揀中心”:當一個分組抵達路由器時,路由器讀取分組首部中的目標地址等信息,然后查找自身維護的轉發表(路由表),據此決定將分組發送到哪一個接口、朝向哪一個下一跳節點?。這個過程稱為分組轉發。簡單來說,路由器根據目標地址找到“下一站”,再把分組轉交給下一跳路由器,一步步讓分組靠近最終目的地?。

  • 路由器的工作包括兩個主要部分:?

    • ??(1) 路由選擇:通過路由協議(如OSPF、BGP等)的算法計算,構建和更新全網的路由信息,在每臺路由器上生成轉發表。路由器不斷交換信息,動態維護這些表,使其反映當前網絡拓撲和可達路徑。

    • (2) 分組轉發:當路由器收到一個分組時,執行查表操作(通常采用最長前綴匹配查找目標IP地址對應的路由項),獲取該分組應轉發的出接口和下一跳地址,然后將分組從對應接口發送出去?。在這一過程中,路由器還可能更新分組首部的某些字段(例如減小TTL、生存時間)并重新計算首部校驗和,以保證分組在網絡中按規定傳播?。

?通過上述功能,路由器實現了不同網絡之間的互聯互通。它使每個分組各自獨立地根據首部地址被送往目標,無需源主機預知全程路徑?。可以說,沒有路由器的解析和轉發,互聯網中海量分組就無法高效地從世界的這一端跑到那一端。路由器確保分組各行其道地到達終點,是分組交換網絡的核心樞紐。


3. 路徑選擇與轉發

3.1. 動態路徑選擇

  • 每個分組根據目標地址網絡的狀態,可以選擇不同的路徑。分組交換的一個關鍵特點是,路徑是動態選擇的,每個分組都可能選擇不同的路徑。

  • 路由器通過查找其路由表中的條目來決定將分組轉發到哪個方向。這個過程是實時的,而非預先設定的,路徑選擇是根據當前網絡狀況(如鏈路繁忙程度、故障等)動態做出的

  • 這與電路交換不同,電路交換是先建立一個固定的連接(物理路徑),通信過程中始終沿用這個路徑。而在分組交換中,每個分組都可以選擇不同的路徑,這給網絡帶來了更高的靈活性和冗余性?

  • 上圖展示了三個分組(用不同顏色箭頭表示)從左側主機發送到右側主機時可能選擇的不同路線。可以看到,由于路由器可以根據網絡擁塞或鏈路狀態調整轉發決策,各分組不一定走相同的路徑。例如,綠色分組走上方路徑,而紅色分組走下方路徑。這意味著分組到達目的地的順序也不一定和發送順序相同:有的分組可能繞遠路或在中途等待更久,導致后發送的分組先到達。亂序傳輸是分組交換的固有現象之一,網絡層本身并不保證分組按序抵達?。因此,需要由運輸層協議(如TCP)或應用層在接收端對分組進行重新排序。總之,在分組交換中路徑選擇具有實時、自主的特點,每個分組各行其道,這賦予網絡更強的靈活性和健壯性(即使某一路徑故障,分組可繞道而行?),但也要求接收方具備亂序重排能力。

3.2. 逐跳存儲轉發

  • “逐跳”意味著每個分組從源到目的地會經過多個路由器,每經過一個路由器,就需要暫時存儲分組并轉發它。在每一跳的路由器,分組會被完全接收并進行校驗,然后再發送到下一跳路由器。


4. 分組重組

4.1. 分組到達目標后

  • 在分組通過網絡到達接收端時,它們可能不是按照順序到達的(因為它們可能通過不同的路徑傳輸)。接收端的任務是重排(reorder)這些分組,并根據它們的序號將它們重新組合(重組(reassemble))為原始的報文。

  • 重排:有些分組可能比其他分組先到達,因此接收端必須等待所有的分組到齊并按順序排列。

  • 重組:接收端根據序號將數據部分拼接起來,恢復成完整的原始數據。若某些分組丟失或損壞,接收方需要通過重傳機制請求丟失的分組重新發送。

  • 對于重排和重組的理解

    • 由于各分組可以獨立選擇路徑且傳輸時間可能不同,接收端主機收到的分組有可能順序亂掉。為了將原始報文正確復原,接收端需要對分組進行重排和重組。通常每個分組在首部中攜帶了用于重組的標識,例如序列號(或片偏移等),接收端可以利用這些標識來確定分組的正確位置次序?。當分組抵達終點主機后,運輸層協議(如TCP)或IP層會根據序號將失序的分組重新排序:簡單來說,就是按序號大小把分組的數據片段從小到大排列,這樣就恢復了發送時的正確順序?。只要所有分組都成功抵達,哪怕先前亂序,到這一步也能重新組裝出完整的數據。

    • 接收端在重排的同時,會將各分組的數據部分提取出來按序拼接,重新構成原始報文的內容?。如果在網絡層進行了IP分片,那么IP層會根據分片偏移將多個片段組合成完整的數據報再交付上層;如果是運輸層的拆分(如TCP將應用報文拆成多個報文段),則TCP層根據序號將報文段排好順序后重組數據流供應用使用。舉例來說,TCP協議規定數據每個字節都有序號,接收方根據序號排好亂序分段,丟棄重復的數據,這樣就確保了最終交付給應用的數據是按原始順序的。當然,若有分組遲遲未到(可能丟失),接收方在等待一段時間后會發現缺口,這涉及差錯恢復機制(下面將說明)。總體而言,重排重組過程對用戶是透明的 —— 用戶最終收到的仍是一整塊按正確順序排列的原始數據,好像從未被拆分過一樣?。


5. 分組丟失與重傳機制

5.1 對于分組沖突與網絡堵塞的理解

由于分組在路由器采用存儲轉發,路由器內部需要緩存(緩沖區)來暫存分組。每個路由器的端口通常有一個輸出隊列:當多個分組同時需要從該端口發送時,它們會在緩沖隊列中排隊,按照先來先服務(FIFO)的順序依次發送?。換言之,分組通常按到達順序存儲在路由器緩沖中等待轉發。只有當前面的分組發送出去后,后續分組才能出隊。這保證了一定的順序性,但如果網絡繁忙,也會引入排隊時延——分組在隊列中等待的時間。有時實時應用的數據包可能在隊列中延遲過久甚至丟棄,因此一些高級路由器還會實現優先級隊列等調度策略,但最基本的機制是FIFO隊列?。

當輸入流量過大、持續時間過長時,路由器緩沖區可能被塞滿,這就是網絡擁塞的情況?。緩沖區有容量限制,如果新分組到來時緩沖已滿,路由器將無法再存儲新的分組。此時最常見的策略是直接丟棄后來的一些分組(通常丟棄最新到達的,稱為“尾棄”)?。也就是說,只有當緩沖區填滿無空位時,路由器才會丟包?。一旦出現丟包,分組將在該路由器被拋棄,無法抵達目的,需要由后續機制來補救(例如發送端重傳,詳見后文)。在擁塞嚴重時,丟包率會升高,從而通知傳輸層減慢發送速率,實現一定的流量控制。正常情況下,路由器盡量通過隊列緩沖短暫的流量高峰,但當持續流量超出鏈路帶寬時,排隊時延增加且最終不得不丟包,這是分組交換網絡中的常見現象?。總之,路由器需要緩沖來平滑流量,但緩沖區并非無限,網絡擁塞時會導致排隊延遲和丟包,兩者都會影響網絡性能。

5.2 為什么會丟失分組(丟包)?

雖然路由器采用存儲轉發機制,并且每個分組在被轉發之前都會經過檢查,但在以下情況下,數據包還是可能會丟失:

  • 網絡擁塞:如果網絡中有大量的流量,路由器的緩沖區可能會滿,無法再接收新的數據包。此時,路由器會丟棄最新到達的分組(通常叫“尾丟”)。這就像超市的貨架滿了,新的貨物就沒有地方放,只能丟掉一部分 。

  • 鏈路故障:如果某個鏈路發生故障(比如光纖斷裂,或者無線連接中斷),分組就無法繼續向前轉發,最終會丟失 。

  • 路由器處理錯誤:盡管路由器會檢查分組的校驗和和其他控制信息,但如果網絡條件非常糟糕或者出現了硬件故障,某些數據包可能在傳輸過程中受到損壞,路由器將會丟棄這些損壞的分組。

5.3 重傳機制是怎么工作的?

在分組交換中,丟失的分組需要通過重傳來恢復。而這一工作并不是由路由器來做的,重傳是由傳輸層協議(如TCP)來完成的,下面是詳細過程:

  • TCP協議的重傳機制:

    • 發送端等待確認:發送方會將分組發送出去,并開始計時等待接收方的確認消息(稱為ACK,Acknowledgment)。接收方會在收到一個分組后,向發送方回送一個確認消息,表示它成功接收了數據。

    • 超時重發:如果發送方在一定時間內沒有收到確認消息,就會認為這個分組丟失了(比如路由器在中途丟失了這個分組,或者接收方沒有及時收到分組)。此時,發送方會重新發送該分組。這種方式叫做超時重傳

    • 重復確認與重傳:如果接收方收到了某個分組,但由于其他分組丟失,無法按順序重組數據,它就不會發送確認消息,而是等待缺失的分組。當發送方發現沒有收到確認(ACK),或者收到對后續分組的重復確認,它就會知道某些分組丟失了,并觸發重傳 。

5.4?簡單舉個例子:

  • 假設你在發送一個文件給你的朋友,文件被拆分成多個分組進行傳輸,每個分組都標有順序號。

  • 你發送分組1、2、3、4,按順序發送出去,發送方等待接收方發送確認(ACK)來告訴它每個分組是否都收到了。

  • 朋友收到了分組1、2、3,但因為網絡擁塞或其他原因,分組4丟失了。

  • 朋友并沒有發出“分組4已收到”的確認,而是一直等待分組4,這就導致發送方發現沒有收到分組4的確認。

  • 發送方經過超時檢測后,認為分組4丟失了,于是會重新發送分組4,直到接收方成功收到為止 。

5.5?為什么不由路由器來做重傳?

路由器的主要職責是傳遞數據,它并不負責管理數據的完整性或重傳。網絡層(比如IP協議)會盡最大努力將數據送到目的地,但如果發生丟包,負責可靠傳輸的責任落在了傳輸層,例如TCP協議。TCP通過超時重傳確認機制確保數據正確無誤地從源端傳送到接收端 。


三、分組交換的特點

  1. 無需建立專用連接
    分組交換與電路交換最大的區別在于,它不需要在通信開始前為每次通信建立專用的物理路徑。在分組交換中,數據被拆分成多個小的分組,每個分組根據目標地址獨立選擇路徑,并且可以通過不同的路徑傳輸。網絡資源并不會被長時間占用,資源利用效率更高。

  2. 存儲轉發機制
    在分組交換中,每個路由器(或交換節點)接收到一個分組時,必須先暫存該分組,進行必要的檢查,然后再轉發它。這個過程稱為“存儲轉發”(store-and-forward)。它確保了分組的完整性和正確性,同時也帶來了少許的延遲,因為分組需要經過每個路由器的處理和存儲。

  3. 路徑選擇動態
    每個分組在通過網絡時,其傳輸路徑是動態選擇的,可以根據網絡的當前狀態(如鏈路擁堵、故障等)選擇最佳路徑。不同的分組可能選擇不同的路徑,這使得網絡具有高度的靈活性。

  4. 分組獨立性
    分組交換中的每個分組都是獨立的,攜帶完整的控制信息(如源地址、目標地址、序列號等),可以獨立選擇傳輸路徑,且每個分組都通過獨立的路徑到達目的地。接收端根據序列號將分組重排、重組。

  5. 適應突發流量
    分組交換能夠有效應對網絡中的突發流量,因為它不需要事先占用全部的網絡帶寬。每個分組在需要時才占用帶寬,其他時段網絡帶寬空閑,可以處理其他數據流。它能夠靈活地根據需求調配資源。


四、分組交換的作用(好處)

  1. 提高網絡資源的利用率
    由于不需要在通信前建立專用線路,分組交換可以在網絡中動態分配資源。當沒有數據傳輸時,網絡資源(如帶寬)就可以空閑,允許其他通信流共享網絡帶寬。這樣,網絡能夠高效地利用資源。

  2. 增強網絡的靈活性和容錯性
    分組交換不依賴于固定路徑,分組可以通過多條路徑到達目的地,即使某條路徑發生故障或擁塞,網絡也能通過其他路徑繼續傳輸數據。這提高了網絡的容錯性可靠性,避免了單一鏈路故障導致大規模通信中斷。

  3. 支持突發性數據流
    分組交換非常適合處理突發數據流,例如視頻會議、實時游戲等,這些應用會有大量數據流的快速波動。分組交換能夠有效調配帶寬,避免因為突發流量導致網絡擁塞。

  4. 降低通信成本
    不需要專門建立電路連接,分組交換能夠降低通信成本,尤其在大規模網絡中。它減少了資源的浪費,因為每個分組都能獨立選擇路徑,不需要為每一次通信占用獨占的資源。

  5. 網絡規模的可擴展性
    分組交換的動態路徑選擇使得網絡能夠容易地擴展和適應網絡規模的增長。隨著設備和用戶的增加,網絡可以通過增加路由器和鏈路等設備來擴展網絡,無需改變網絡的基礎結構。


五、分組交換的應用

  1. 互聯網
    分組交換是現代互聯網的核心技術,所有的互聯網數據(如網頁瀏覽、視頻流、社交媒體、電子郵件等)都依賴于分組交換來實現數據的高效、可靠傳輸。在互聯網中,所有數據都被拆分成小的分組,并通過動態路徑傳輸。

  2. 即時通信(IM)
    分組交換用于即時通信軟件(如微信、QQ、Slack等)的數據傳輸。在這些應用中,消息、圖片、文件等都被切割成多個分組,通過網絡傳輸。分組交換使得即時通信能夠快速傳輸大量的小數據包。

  3. 視頻流和音頻流服務
    如Netflix、YouTube等視頻平臺,分組交換保證了視頻和音頻數據可以高效地傳輸,盡管這些數據量較大,但通過分組交換技術,數據能夠分割為小塊并通過網絡傳輸,不會因帶寬限制而造成嚴重的延遲。

  4. 虛擬私人網絡(VPN)
    VPN在利用公用互聯網進行加密通信時,依賴分組交換將數據分成多個加密的分組,通過網絡傳輸。分組交換技術保證了數據可以在多個路徑上傳輸,同時避免了路徑故障帶來的通信中斷。

  5. 分布式計算和云服務
    云計算服務中的數據傳輸,也利用了分組交換技術。用戶請求和返回的計算結果會被拆分成多個分組,快速傳輸到云服務器上進行計算處理,再返回給用戶。分組交換使得這些應用能夠在分布式網絡中實現高效的通信。

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

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

相關文章

C++ STL及Python中等效實現

一. STL 概述 STL 包含以下核心組件: 容器(Containers):存儲數據的結構,如數組、鏈表、集合等。迭代器(Iterators):用于遍歷容器的接口,類似指針。算法(Alg…

python-63-前后端分離之圖書管理系統的Flask后端

文章目錄 1 flask后端1.1 數據庫實例extension.py1.2 數據模型models.py1.3 .flaskenv1.4 app.py1.5 運行1.6 測試鏈接2 關鍵函數和文件2.1 請求視圖類MethodView2.2 .flaskenv文件3 參考附錄基于flask形成了圖書管理系統的后端,同時對其中使用到的關鍵文件.flaskenv和函數類M…

藍橋杯真題——好數、R格式

目錄 藍橋杯2024年第十五屆省賽真題-好數 【模擬題】 題目描述 輸入格式 輸出格式 樣例輸入 樣例輸出 提示 代碼1:有兩個案例過不了,超時 藍橋杯2024年第十五屆省賽真題-R 格式 【vector容器的使用】 題目描述 輸入格式 輸出格式 樣例輸入…

Python中NumPy的索引和切片

在數據科學和科學計算領域,NumPy是一個功能強大且廣泛使用的Python庫。它提供了高效的多維數組對象以及豐富的數組操作函數,其中索引和切片是NumPy的核心功能之一。通過靈活運用索引和切片操作,我們可以輕松訪問和操作數組中的元素&#xff0…

設計模式:策略模式 - 消除復雜條件判斷的利器

一、什么是策略模式? 策略模式(Strategy Pattern)是一種行為型設計模式,它將一組算法或業務邏輯封裝為獨立的策略類,使這些策略可以互換使用,并通過上下文類動態選擇合適的策略。 核心思想 ? 將不同的行…

LeetCode hot 100—不同路徑

題目 一個機器人位于一個 m x n 網格的左上角 (起始點在下圖中標記為 “Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為 “Finish” )。 問總共有多少條不同的路徑? …

pytorch查詢字典、列表維度

輸出tensor變量維度 print(a.shape)輸出字典維度 for key, value in output_dict.items():if isinstance(value, torch.Tensor):print(f"{key} shape:", value.shape)輸出列表維度 def get_list_dimensions(lst):# 基線條件:如果lst不是列表&#xff0…

多坐標系變換全解析:從相機到WGS-84的空間坐標系詳解

多坐標系變換全解析:從相機到WGS-84的空間坐標系詳解 一、常見坐標系簡介二、各坐標系的功能和使用場景1. WGS-84 大地坐標系(經緯高)2. 地心直角坐標系(ECEF)3. 本地 ENU / NED 坐標系4. 平臺坐標系(Body)5. 相機坐標系三、坐標變換流程圖四、如何選用合適的坐標系?五…

【NumPy科學計算:高性能數組操作核心指南】

目錄 前言:技術背景與價值當前技術痛點解決方案概述目標讀者說明 一、技術原理剖析核心概念圖解關鍵技術模塊技術選型對比 二、實戰演示環境配置要求核心代碼實現運行結果驗證 三、性能對比測試方法論量化數據對比結果分析 四、最佳實踐推薦方案 ?常見錯誤 ?調試技…

【特權FPGA】之PS/2鍵盤解碼

0 故事背景 見過這種接口的朋友們,大概都已經成家立業了吧。不過今天我們不討論這種接口的歷史,只講講這種接口的設計。(如果還沒有成家的朋友也別生氣,做自己想做的事情就對了!) 1 時序分析 數據幀格式如圖…

DAPP實戰篇:使用web3.js實現前端輸入錢包地址查詢該地址的USDT余額—操作篇

專欄:區塊鏈入門到放棄查看目錄-CSDN博客文章瀏覽閱讀396次。為了方便查看將本專欄的所有內容列出目錄,按照順序查看即可。后續也會在此規劃一下后續內容,因此如果遇到不能點擊的,代表還沒有更新。聲明:文中所出觀點大多數源于筆者多年開發經驗所總結,如果你想要知道區塊…

高中生學習數據隱私保護的“技術-制度-文化”協同機制研究

一、引言 1.1 研究背景與意義 在數字化時代的浪潮下,教育領域正經歷著深刻的變革,智能教育平臺如雨后春筍般涌現,為高中教育帶來了新的活力與機遇。這些平臺借助先進的信息技術,能夠實時收集、分析大量的高中生學習數據&#xf…

【Java多線程】告別線程混亂!深度解析Java多線程4大實現方式(附實戰案例)

一、繼承Thread類 實現步驟&#xff1a; 1.繼承Thread類 2.重寫run()方法 3.創建線程對象并調用start()方法 示例&#xff1a; class MyThread extends Thread {Overridepublic void run() {for (int i 0; i < 5; i) {System.out.println(Thread.currentThread().getNam…

全國產V7-690T核心板/算法驗證板/FPGA開發板

UD SOM-404全國產化信號處理模塊既可以作為核心板使用&#xff0c;也可以單獨使用。FPGA對外有80組GTY通過兩個FMC連接器全部引出&#xff0c;多個模塊可以級聯使用&#xff0c;擴展信號處理能力。FMC連接器也滿足標準規范&#xff0c;可以插入標準的FMC或FMC子板。模塊為100%國…

STM32_HAL庫提高中斷執行效率

目錄 中斷流程分析我的解決辦法優缺點 大家都在說STM32 HAL 庫中斷效率低下。具體哪里不行&#xff1f;如何優化&#xff1f; 我手里的項目要用到多個定時器TIM6、TIM7、TIM9、TIM10、TIM11、TIM12、TIM13&#xff0c;在處理這些定時器中斷的時候&#xff0c;也發現了這個問題。…

RabbitMQ惰性隊列的工作原理、消息持久化機制、同步刷盤的概念、延遲插件的使用方法

惰性隊列工作原理 惰性隊列通過盡可能多地將消息存儲到磁盤上來減少內存的使用。與傳統隊列相比&#xff0c;惰性隊列不會主動將消息加載到內存中&#xff0c;而是盡量讓消息停留在磁盤上&#xff0c;從而降低內存占用。盡管如此&#xff0c;它并不保證所有操作都是同步寫入磁…

Spark Core(二)

Spark-Core編程&#xff08;二&#xff09; RDD轉換算子 RDD 根據數據處理方式的不同將算子整體上分為 Value 類型、雙 Value 類型和 Key-Value 類型 Value類型 1&#xff09;map 將處理的數據逐條進行映射轉換&#xff0c;這里的轉換可以是類型的轉換&#xff0c;也可以是…

C#打開文件及目錄腳本

如果每天開始工作前都要做一些準備工作&#xff0c;比如打開文件或文件夾&#xff0c;我們可以使用代碼一鍵完成。 using System.Diagnostics; using System.IO;namespace OpenFile {internal class Program{static void Main(string[] args){Console.WriteLine("Hello, …

Python生成exe

其中的 -w 參數是 PyInstaller 用于窗口模式&#xff08;Windowed mode&#xff09;&#xff0c;它會關閉命令行窗口的輸出&#xff0c;這通常用于 圖形界面程序&#xff08;GUI&#xff09;&#xff0c;比如使用 PyQt6, Tkinter, PySide6 等。 所以&#xff1a; 如果你在沒有…

【大模型微調】如何解決llamaFactory微調效果與vllm部署效果不一致如何解決

以下個人沒整理太全 一、生成式語言模型的對話模板介紹 使用Qwen/Qwen1.5-0.5B-Chat訓練 對話模板不一樣。回答的內容就會不一樣。 我們可以看到例如qwen模型的tokenizer_config.json文件&#xff0c;就可以看到對話模板&#xff0c;一般同系列的模型&#xff0c;模板基本都…