OSPF開放式最短路徑優先

1OSPF簡介

(1)OSPF英文全稱Open Shortest Path First (開放式最短路徑優先)

(2)OSPF是IETF 開發的一種鏈路狀態路由協議,使用基于帶寬的度量值。

(3)OSPF采用SPF算法計算路由,從算法上保證了無路由環路

(4)OSPF通過鄰居關系維護路由,避免了定期更新對帶寬的消耗。

(5)OSPF路由更新效率高,網絡收斂快,適用于大中型網絡。

(6)OSPF報文封裝于IP協議號?89組播地址224.0.0.5與224.0.0.6

組播地址224.0.0.5:該組播地址用于所有 OSPF 路由器。所有運行 OSPF 協議的路由器都會加入到這個組播組中。

組播地址224.0.0.6:這個組播地址專門用于指定路由器(DR)備份指定路由器(BDR)?。只有 DR 和 BDR 會加入到 224.0.0.6 這個組播組。

2OSPF的基本概念

四張表 五種報文 六類LSA 七種鄰居之間的狀態

2.1OSPF基本概念--LS

(1)鏈路狀態(LS):路由器周邊的鏈路的狀態。

(2)分為兩種狀態:

? ? ? ? 直連網段狀態:通告接口網段和接口狀態感知。

? ? ? ? 描述直連網段(網段、掩碼、接口開銷)

? ? ? ? 直連拓撲狀態:通過OSPF鄰居和鄰居狀態感知。

? ? ? ? 描述直連拓撲(鄰居RouterID、連接接口、接口開銷)

(3)接口開銷 = OSPF參考帶框/接口帶寬

? ? ? ? OSPF參考帶寬默認為100Mbps(在計算時需要注意單位)

? ? ? ? Loopback接口的開銷默認為1

(4)LS例子:

2.2OSPF基本概念--Router ID

(1)一臺路由器如果要運行OSPF協議,則必須存在Router ID(RID)。

(2)RID是一個32比特無符號整數,可以在一個自治系統中唯一的標識一臺路由器。

(3)RID可以手工配置,也可以自動生成。(一般手工配置)

(4)如果沒有通過命令指定RID,將按照如下順序自動生成一個RID:

????????如果當前設備配置了Loopback接口,將選取所有Loopback接口上數值最 大的IP地址作為RID;

????????如果當前設備沒有配置Loopback接口,將選取它所有已經配置IP地址且鏈 路UP的接口上數值最大的IP地址作為RID。

(5)Router ID選取案例

2.3OSPF基本概念--LSA

(1)鏈路狀態通告(LSA):按一定格式封裝后的鏈路狀態信息。

(2)其中兩種鏈路狀態通告:

? ? ? ? LAS1:路由器鏈路狀態通告(每臺路由器都會發起之間的LSA1)每臺 OSPF 路由器都會生成?LSA 1,描述自身直連鏈路、鄰居關系。

? ? ? ? LSA2:傳送網絡鏈路狀態通告。由網絡中的?DR(指定路由器)?生成,描述廣播型網絡(如以太網)的網段信息?。

2.4OSPF基本概念--LSDB

(1)鏈路狀態數據庫(LSDB):在 OSPF 網絡中,每臺運行 OSPF 協議的路由器都會收集其所在區域內的所有鏈路狀態通告(LSA),并將這些 LSA 存儲在本地的一個數據庫。

(2)每臺OSPF路由器都有一個LSDB,用于存儲LSA。

(3)同一區域中的OSPF路由器的LSDB一致。

? ? ? ? LSA封裝在LSU報文中,在區域內洪泛,最終達到區域內LSDB一致。

? ? ? ? LSA在洪泛過程中內容保持不變

2.5OSPF基本概念--LSU

(1)鏈路狀態個更新(LSU):主要用于在路由器之間傳遞鏈路狀態信息,確保網絡中所有路由器的鏈路狀態數據庫(LSDB)保持同步。

(2)LSU 報文由一個報頭和多個 LSA(鏈路狀態通告)組成。報頭包含了一些基本信息,如版本號、類型、報文長度等。而其中的 LSA 則是具體的鏈路狀態信息載體,常見的 LSA 類型包括 LSA 1(路由器鏈路狀態通告)、LSA 2(網絡鏈路狀態通告)、LSA 3(匯總鏈路狀態通告)等,這些 LSA 描述了網絡拓撲、路由器連接關系、鏈路屬性等信息。

2.6OSPF基本協議模型

2.7OSPF基本概念--SPF?

(1)SPF計算

? ? ? ? 以自己LSA1為根,進行SPF計算。

? ? ? ? 各OSPF路由器單獨進行SPF計算,互不影響。

? ? ? ? 以自己為根,到目標網段的出接口開銷和。

(2)SPF計算例子1(選擇帶寬最小)

(2)STP開銷計算例子2--以自己為根,到目標網段的出接口開銷和

?2.8OSPF的四張表

生成流程:

????????Hello 建鄰居:路由器發 Hello 報文,匹配參數后建立鄰居關系,填充鄰居表。

????????LSU 同步拓撲:鄰居關系?Full?后,用 LSU 交換 LSA,構建 LSDB。

????????SPF 算 OSPF 路由:基于 LSDB 運行 SPF 算法,生成 OSPF 路由表。

? ? ? ? 管理距離(優先級相同的情況下)選全局路由:OSPF 路由與其他協議路由比較,選最優路由存入全局路由表,指導數據包轉發。

OSPF 四張表是 “從發現鄰居→同步拓撲→計算協議內路由→選全局最優路由” 的遞進過程,Hello 負責 “認人”,LSU 負責 “傳地圖”,SPF 負責 “規劃路”,管理距離負責 “選最終走哪條路” 。

2.9OSPF基本概念--OSPF網絡類型

2.10OSPF基本概念--OSPF報文類型與封裝(五個報文)

五個報文的發送條件:

(1)Hello 報文

????????啟動及周期性發送:當路由器上啟用 OSPF 協議后,會在所有配置了 OSPF 的接口上按照默認周期(廣播網絡中為 10 秒,非廣播多路訪問(NBMA)網絡中為 30 秒) 發送 Hello 報文。其目的是發現鄰居路由器,并維護鄰居關系。通過 Hello 報文中攜帶的相關參數,如 Router ID、區域 ID、Hello 間隔、Dead 間隔等,來判斷是否可以與鄰居建立和維持鄰接關系。

????????鄰居狀態變化時:當路由器檢測到鄰居的狀態發生變化,比如從 Down 狀態變為 Init 狀態等,也會發送 Hello 報文,以確認鄰居狀態的改變,并嘗試建立或重新建立穩定的鄰居關系。

(2)Database Description(DD)報文

????????鄰接關系建立初期:在兩臺路由器建立鄰接關系過程中,進入 Exstart 狀態后,會開始發送 DD 報文。此時,雙方通過交換 DD 報文來確定主從關系,其中主路由器負責控制 DD 報文的序列號,以確保 DD 報文的有序傳輸。

????????鏈路狀態數據庫(LSDB)同步請求:在確定主從關系后,路由器會發送攜帶 LSA 頭部信息的 DD 報文,向鄰居描述自己的 LSDB 內容,目的是讓對方了解自己擁有哪些鏈路狀態信息,為后續的鏈路狀態信息請求做準備。

(3)Link State Request(LSR)報文

????????收到不完整或過期的 LSDB 信息:當路由器收到鄰居發送的 DD 報文后,會將其中的 LSA 頭部信息與自己的 LSDB 進行對比。如果發現鄰居有自己沒有的 LSA,或者鄰居的 LSA 版本比自己的新,就會向鄰居發送 LSR 報文,請求獲取這些 LSA 的完整詳細信息。

(4)Link State Update(LSU)報文

????????響應 LSR 請求:當路由器接收到鄰居發送的 LSR 報文后,會根據請求內容,將相應的 LSA 封裝在 LSU 報文中發送給鄰居,以滿足鄰居獲取完整鏈路狀態信息的需求。

????????網絡拓撲變化時:當本地路由器檢測到網絡拓撲發生變化,如鏈路故障、新增鏈路等,會生成相應的 LSA,并將這些 LSA 封裝在 LSU 報文中,向鄰居路由器泛洪(Flooding)這些鏈路狀態更新信息,以便讓整個網絡中的路由器都能及時了解網絡拓撲的變化,更新各自的 LSDB。

(5)Link State Acknowledgment(LSAck)報文

????????收到 LSU 報文后:當路由器接收到鄰居發送的 LSU 報文后,會對其中的每個 LSA 進行檢查和處理,然后向發送方發送 LSAck 報文,用以確認自己已經正確接收到了這些 LSA。發送 LSU 報文的路由器在一定時間內若沒有收到對應的 LSAck 確認,會重新發送未被確認的 LSA,以保證 LSU 報文的可靠傳輸。

OSPF 報文直接封裝在 IP 報文中,協議號為 89,利用 IP 層的服務進行傳輸 ,但由于 IP 報文本身是不可靠的傳輸協議,所以 OSPF 通過自身的 LSAck 等機制來保障報文傳輸的可靠性和網絡拓撲信息同步的準確性。

2.11OSPF報文的目的地址

3OSPF的基本工作原理

3.1OSPF網絡類型--P2P點對點的流程

3.1.1建立鄰居關系

通過發送hello報文發現鄰居

3.1.2維持鄰居關系

(1)鄰居之間通過交換Hello報文(周期性發送hello報文--每10s發一次),確認鄰居是否工作正常。?

(2)如果在一定的時間間隔內(鄰居過期時間為4個hello time為40s),收不到鄰居發來的Hello報文,就認為鄰居已經失效,從鄰居表中刪除。

在點到點網絡中,發現鄰居后 同步數據庫?

3.2OSPF網絡類型--廣播多路訪問DR/BDR

3.2.1DR/BDR產生的原因

(1)如果每臺 OSPF 路由器都與其他的所有路由器建立 OSPF 鄰接關系,便會導致網絡中存在過多的 OSPF 鄰接關系,增加設備負擔,也增加了網絡中泛洪的 OSPF 報文數量。

(2)當拓撲出現變更,網絡中的 LSA 泛洪可能會造成帶寬的浪費和設備資源的損耗。

3.2.2DR與BDR

(1)為優化廣播多路訪問網絡中 OSPF 鄰接關系,OSPF 指定了三種 OSPF 路由器身份,DR(Designated Router,指定路由器)、BDR(Backup Designated Router,備用指定路由器)和 DRother 路由器。
(2)只允許 DR、BDR 與其他 OSPF 路由器建立鄰接關系。DRother 之間不會建立全毗鄰的 OSPF 鄰接關系,雙方停滯在 2-way 狀態。BDR 會監控 DR 的狀態,并在當前 DR 發生故障時接替其角色。如下圖情況:

3.2.3DR/BDR的選舉規則

(1)首先比較Hello報文中攜帶的優先級

????????優先級最高的被選舉為DR,優先級次高的被選舉為BDR

????????優先級為0的不參與選舉

(2)優先級一致的情況下,比較Router ID

????????Router ID越大越優先

(3)保持穩定原則

????????當DR/BDR已經選舉完畢,就算一臺具有更高優先級的路由器為有效,也不會替換該網段中已經選舉的DR/BDR成為新的 DR/BDR。如下圖情況:

(4)特殊情況說明:在OSPF中,DR的身份是終生制的,在華為設備中設備啟動后,30s內如果沒有選舉的過程,路由器會認為自己是DR,將自己設置為DR,后續若有更高優先級的設備加入進來無法改變其DR的地位。

(5)在 OSPF(開放最短路徑優先)協議中,DR(指定路由器 )的角色是針對路由器的接口而言的。DR 是 OSPF 路由接口的特性,而非整臺路由器的特性,一臺路由器的不同接口在不同網段中可以擁有不同的 OSPF 路由器身份。

(6)DR與BDR的選舉范圍是在一個廣播域中選,有幾個廣播域就有幾個DR和BDR。

注:?一個交換機的所有接口?屬于同一個廣播域?;路由器的一個接口通常構成一個獨立的廣播域。

3.3鄰居關系無法建立原因總結

3.4鄰居狀態機

3.4.1鄰居狀態變化(鄰居關系)

(1)Down:這是鄰居的初始狀態,還沒收到 Hello 報文
(2)Attempt:只在 NBMA 網絡上存在,已發出 Hello 報文,但沒收到回復(不用管)
(3)Init:已經從鄰居收到了 Hello 報文,但報文鄰居列表沒有自己的 router-id
(4)2-Way:互相收到了對方的 Hello 報文,并且報文鄰居列表有自己的 router-id

3.4.2鄰居狀態變換(鄰接關系)

(1)ExStart:向鄰居發送 DD 報文,協商主從關系
(2)Exchange:相互發送包含鏈路狀態信息摘要的 DD 報文
(3)Loading:相互發送 LSR 報文請求 LSA,發送 LSU 報文通告 LSA。
(4)Full:路由器的 LSDB 已經同步

3.5發現鄰居并建立鄰居關系

hello報文除了有發現鄰居的功能以外還會攜帶自己的鄰居表給對方。

(1)一開始兩邊路由器都處于DOWN狀態。

(2)路由器A向路由器B發送hello報文,因為此時A無鄰居,hello報文中攜帶的鄰居信息為空。

(3)路由器B收到路由器A發來的Hello報文后,知道存在一個鄰居為路由器A,但是對方并不知道自己的存在(路由器B知道此事原因是因為路由器B收到的hello報文中的鄰居信息為空),所以發送給路由器A的hello報文中的鄰居狀態為初始化狀態(Init)

(4)路由器A收到B發來的Hello報文后,發現自己有一個鄰居為路由器B,且路由器B知道自己的存在。此時路由器A發送給路由器B的Hello報文中的鄰居表的鄰居狀態描述為2-way狀態。

注:在該過程中,兩個路由器的狀態并非完全同步,因為路由器在hello報文中描述的是自己和鄰居當前的關系。初始化狀態并非是必須的。

發現鄰居之后,同步數據庫之前會做一個工作:判斷自己的接口類型,如果自己的接口類型為以太網接口類型則需要選舉BR/BDR。其中人為修改的網絡類型優于網絡默認的網絡類型。

其中DRother和DRother之間不需要同步數據庫,狀態停留在2-way狀態。其他類型的路由器都需要同步數據庫。

3.6同步數據庫和建立完全鄰接關系

3.6.1發送DD報文

(1)1?號和 2 號 DD 報文為空 DD 報文(里面不帶數據庫的匯總信息),用于協商主從,其中帶有三個置位分別為:I(標識當前是初始化狀態,無主從)、M(代表后面還有很多報文)、MS(代表當前設備參與主從的選舉),RTA 和 RTB 在交換初始 DD 報文后,會對彼此的 Router ID 進行比較 。router-id 大的一端勝出;

注:為什么要協商主從?為了確定用誰的序列號作為DD報文的初始序列號,提高交互過程中的可靠性。(OSPF的五個報文中,除了hello報文以外,其他四個報文都有序號

(2)3 號和 4 號 DD 報文包含 LSDB 摘要信息。

注:如果在該過程中因為某種原因路由器B沒有收到路由器A的3號DD報文會超時重傳

(3)5 號 DD 報文依然是空 DD 報文,用于對主路由器 DD 報文的確認。

注:當對方都收到了對方發來的DD報文后,雙方都會拿著DD報文與自己的鏈路狀態數據庫進行比對,

如果對方DD報文中的信息自己鏈路狀態數據庫中都有,狀態會從Exchange狀態轉變為Full狀態。

如果對方DD報文中的信息存在自己鏈路狀態數據庫中缺失或更新的,狀態會從Exchange狀態轉變為Loading狀態。

(4)路由器使用 DD 報文來進行主從路由器的選舉和數據庫摘要信息的交互。

(5)DD 報文包含 LSA 的頭部信息,用來描述 LSDB 的摘要信息。

(6)DD 報文中的 interface MTU 兩端需要一致

3.6.2向對方請求所需要的LSA

(1)LSR 用于向對方請求所需的 LSA。

(2)LSU 用于向對方發送其所需要的 LSA。

(3)LSACK 用于向對方發送收到 LSA 的確認。

3.7當鄰居關系路由器都達到了FULL狀態,這時有新的LSA生成或收到時?泛洪新LSA

鄰居關系無需重新建立,只需要更新和收到對方更新確認來同步,狀態不需要改變。

3.8廣播網絡中LSDB更新

在廣播和NBMA網絡中,鏈路狀態發生變化時,主要是通過DR路由器發送更新報文。如下圖:

4LSA報文

4.1LSA報文頭部

(1)LS age(16位):代表LSA的“存活時間”,單位是秒

(2)Options(8位):用于標記OSPF的可選功能能力,像是是否支持NSSA(非純末梢區域)、IPv6等特性。

(3)LS type(8位):用來明確LSA的具體類型,不同數值對應不同功能的LSA。

(4)Link StateID(32位):可理解為LSA的“標識ID”,不過其具體含義會隨著LSA類型變化。

(5)Advertising Router(32位):填寫生成并發布這個LSA的路由器的RouterID,作用就是明確“是誰發布了該LSA”,方便其他路由器在處理LSA時,知道信息的源頭,也有助于進行路由信息的溯源和驗證。

(6)LS sequencenumber(32位):是一個序列號,每次新生成LSA或者更新已有LSA時,序列號會單調遞增。路由器依靠它判斷LSA的新舊,序列號越大,代表LSA越新。這樣能避免舊的、過時的LSA覆蓋新的LSA信息,保證網絡中傳播的是最新的拓撲等數據。

(7)LS checksum(16位):是對LSA頭部以及數據部分做的校驗和計算結果。當LSA在網絡中傳輸時,接收方會重新計算校驗和并與該字段對比,以此檢測LSA在傳輸過程中是否出現錯誤、被篡改,保障LSA信息的完整性。

(8)Length(16位):記錄LSA的總長度,單位是字節,包含LSA頭部和后續的數據部分。接收方路由器利用這個字段,能準確知曉該LSA報文的邊界,從而正確解析、提取LSA里的信息,避免解析錯誤。

4.2包含在各種報文中的LSA信息

(1)DD報文:LSA 類型、LSA 標識、通告路由器和 LSA 序列號

(2)LS請求報文:只有 LSA 類型、LSA 標識和通告路由器的簡化 LSA 頭部

(3) LS更新報文:完整的 LSA 信息,包括 LSA 頭部和具體的鏈路狀態信息。

(4)LS確認報文:LSA頭部信息:LSA 類型、LSA 標識、通告路由器和 LSA 序列號 。只確認收到的報文。讓發送方知道對方收到了多少個報文。

5OSPF LSA洪泛與老化

5.1OSPF LSA老化

超過最大老化時間的LSA就會將其刪除。

5.2OSPF LSA老化與全網刷新

半小時更新一次。

如果在某個路由器中 收到了兩份一模一樣的LSA但序號分別為9和10。路由器會存儲序號為10的,因為序號越大內容越新。

5.3泛洪新LSA

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

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

相關文章

Lua(模塊與包)

Lua 模塊的基本概念Lua 中的模塊是一個由函數、變量組成的代碼庫,通常保存在獨立的 .lua 文件中。模塊通過 return 語句導出其內容,供其他腳本調用。模塊化設計可以提高代碼復用性,便于管理。創建模塊模塊通常以 .lua 文件形式存在&#xff0…

1. boost::asio之socket的創建和連接

網絡編程基本流程 網絡編程的基本流程對于服務端是這樣的 服務端 1)socket——創建socket對象。 2)bind——綁定本機ipport。 3)listen——監聽來電,若在監聽到來電,則建立起連接。 4)accept——再創建一個…

WPF 控制動畫開關

記錄一種實現方式:第一步:首先定義一個靜態類,提供依賴屬性,進而方便在xaml中實現綁定:public static class AnimationBehavior{// 定義附加屬性public static readonly DependencyProperty IsAnimatingProperty Depen…

元素豎向的百分比設定是相對于父容器的高度嗎?

元素豎向的百分比設定是相對于父容器的高度嗎? 核心問題 在CSS中,當設置元素的豎向屬性(如height、padding-top等)為百分比值時,其計算基準是父容器的高度還是寬度? 權威結論height屬性 百分比值基于父容器…

web3.0怎么入局

Web3.0(第三代互聯網)融合了區塊鏈、去中心化應用(DApps)、NFT、DAO等新興技術,給個人和機構提供了許多全新的賺錢機會。入局 Web3.0 賺錢主要有以下幾種途徑,根據你的技術背景、資金能力和時間投入可以選擇適合自己的方式。 目錄 一、普通用戶賺錢方式(門檻低) 1. …

linux入門 相關linux系統操作命令(二)--文件管理系統 ubuntu22.04

以下有免費的4090云主機提供ubuntu22.04系統的其他入門實踐操作 地址:星宇科技 | GPU服務器 高性能云主機 云服務器-登錄 相關兌換碼星宇社區---4090算力卡免費體驗、共享開發社區-CSDN博客 兌換碼要是過期了,可以私信我獲取最新兌換碼!&a…

Python-初學openCV——圖像預處理(二)

目錄 一、圖像仿射變換 1、基本性質 二、cv2.warpAffine() 函數 1、圖像旋轉 2、圖像平移 3、圖像縮放 4、圖像剪切 三、 插值方法 1、最近鄰插值 2、雙線性插值 3、像素區域插值 4、雙三次插值 5、Lanczos插值 一、圖像仿射變換 仿射變換(Affine Tr…

醫療AI輕量化部署方案的深度梳理與優化路徑判研

摘要 醫療AI的快速發展為精準診斷、個性化治療和醫療資源優化提供了新機遇。然而,大規模模型的高計算復雜度和資源需求限制了其在資源受限環境(如邊緣設備、基層醫療機構)的應用。本文系統梳理了醫療AI輕量化部署的核心技術體系,包括模型壓縮、參數高效微調(PEFT)、邊緣-…

SSP通過SDK對接流量的原理與實現

一、核心概念解析 1.1 SSP(供應方平臺) 定義:SSP是程序化廣告生態中媒體方的核心工具,通過自動化技術幫助媒體(如網站、應用、視頻平臺)管理廣告資源、優化填充率并最大化廣告收益。核心功能:…

如何清理電腦c盤內存 詳細操作步驟

電腦使用時間不斷延長,許多用戶可能會遇到一個問題——C盤空間不足,導致系統運行緩慢或無法安裝新程序。如果C盤的存儲空間被大量占用,可能會影響到計算機的性能。本文將介紹幾種有效的方法,幫助你清理C盤內存,釋放空間…

ESP32的ADF詳解:5. Streams的API

一、算法流 (algorithm stream) 1. 初始化與配置API功能描述關鍵參數說明algo_stream_init()初始化算法流(AEC/AGC/NS/VAD)config->algo_mask 選擇算法組合config->sample_rate 設置采樣率(默認16kHz)config->partition_…

JavaScript對象鍵序問題解析

問題的發現: 我有一個接口返回一個json數據瀏覽器network里的Response里是從大到小排。 但Preview就是反過來的 問題的描述: 上面那個讓我發現瀏覽器處理對象或者json是會對其鍵值對做排序!!! 在JavaScript中&am…

pandas庫的數據導入導出,缺失值,重復值處理和數據篩選,matplotlib庫 簡單圖繪制

目錄 一.數據導入導出 1.CSV文件讀取與參數說明 2.Excel與TST文件讀取 3.數據導出操作 二.缺失值處理 1.填充缺失值 2.刪除缺失值【刪除整行數據】 三.重復值處理 四.數據篩選與條件查詢 1.邏輯判斷取數 2.字符匹配 3.邏輯運算: &(和&…

FPGA?如何實現另一個?FPGA?

如果你對 FPGA 有些了解,大概知道它的意思是“可編程邏輯器件”,可以把寫好的邏輯電路(通常是 Verilog/VHDL)通過工具綜合、布局布線、燒寫進去,讓一塊芯片變成“你想要的電路”。但如果我告訴你,現在有個開…

文思助手、新華妙筆 AI材料星的公文寫作深度測評

公文寫作一直都是體制內工作人員的日常核心任務,寫公文的難點不僅來自于對政策表述嚴謹性的高要求,也在于格式規范、內容深度以及效率壓力的多重考驗。隨著AI技術的發展,越來越多的文字輔助工具出現,很大程度的緩解了寫作壓力&…

Flutter開發環境搭建與工具鏈

Flutter開發實戰第1章:Flutter開發環境搭建與工具鏈1.1 Flutter簡介與優勢Flutter是Google推出的開源UI工具包,用于從單一代碼庫構建編譯為原生性能的移動、Web和桌面應用程序。Flutter的核心優勢包括:跨平臺一致性:一套代碼運行在…

io_uring:Linux異步I/O的革命性突破

目錄 1. io_uring是什么? io_uring核心優勢: 2. io_uring核心原理 2.1 雙環形緩沖區設計 2.2 關鍵數據結構 1、完成隊列CQ 2、提交隊列SQ 3、Params 3. io_uring工作流程 3.1 初始化階段 3.2 I/O操作流程 4. C代碼示例(原始系統調…

線段樹學習筆記 - 練習題(2)

文章目錄1. 前言2. P3870 [TJOI2009] 開關3. P2184 貪婪大陸4. P1438 無聊的數列5. P1471 方差1. 前言 線段樹系列文章: 線段樹學習筆記。線段樹學習筆記 - 練習題(1)。 前一篇做了幾道線段樹的題目,這篇文章就繼續看下線段樹的…

Vue狀態管理:Pinia 與 Vuex 的使用方法與對比【文章附有完整案例】

最近在接手vue項目的需求,因為之前一直在做react的需求,日常的vue練習也少了很多,導致現在接手vue項目,很多關于vue的知識點基本上忘得干干凈凈了。但是好在有基礎,重新學也會很快掌握。分享這個過程中的一些復習內容。…

OpenMed 項目深度分析:推動醫療 NLP 領域的開源革命

摘要 醫療人工智能(AI)領域因高質量數據和模型的獲取受限而發展緩慢。OpenMed 項目通過開源超過380個醫療命名實體識別(NER)模型,顯著降低了研究與應用門檻。本文從項目背景、技術優勢、應用場景、實施挑戰及未來展望五個方面,系統分析 OpenMed 的核心價值與潛力,揭示其…