讀書筆記-《軟件定義安全》之一:SDN和NFV:下一代網絡的變革

第1章 SDN和NFV:下一代網絡的變革

1.什么是SDN和NFV

1.1 SDN/NFV的體系結構

SDN

SDN的體系結構可以分為3層:

  1. 基礎設施層由經過資源抽象的網絡設備組成,僅實現網絡轉發等數據平面的功能,不包含或僅包含有限的控制平面的功能。
  2. 控制層利用南向接口控制基礎設施層的網絡設備,構建并維護全局的網絡視圖,實現傳統網絡設備中控制平面的功能。
  3. 應用層基于北向接口和控制層提供的網絡視圖進行編程,實現各種不同的網絡應用,使得網絡的轉發行為能夠通過軟件進行定義,實現網絡智能化。

基礎設施層與控制層之間通過控南向接口進行交互,控制層與應用層之間通過北向接口進行交互。

在這里插入圖片描述

NFV

NFV分為3部分:

  1. NFV基礎設施將基于通用服務器提供的計算、存儲和網絡進行虛擬化,形成不同類型的資源池。
  2. 虛擬網絡功能在虛擬化資源池的基礎上實現各種網絡設備的功能,如防火墻、入侵防御、視頻加速、網絡代理等。
  3. NFV管理和編排則在縱向上負責對上述兩個部分進行配置和系統集成。

在這里插入圖片描述

NFV與SDN之間的關系

  1. SDN和NFV技術高度互補,但是并不相互依賴。NFV可以不基于SDN技術進行實現,然而兩者相融合則可能產生更大的潛在價值。
  2. 利用數據中心現有的技術,NFV的目標可以基于非SDN的機制來實現。然而SDN所提出的控制平面和數據平面解耦的思路,可以進一步提升現有部署服務的性能并簡化其互操作性,減輕運維的負擔。
  3. NFV能夠為SDN軟件提供其運行所需要的基礎設施。

NFV與SDN的目標都是盡可能使用通用硬件來實現網絡功能,前者可使網絡功能開發者只關注于虛擬網絡資源的管理,而不需要關心底層硬件規格和其他細節;同樣后者可讓網絡運維開發者只關注上層的網絡業務特性和控制,而不需要關注底層網絡組網技術和數據包轉發邏輯上。

2.發展方向

2.1 SDN研究方向

① 基礎設施層,包括交換機處理流程的設計與實現、轉發規則對交換機流表的高效利用,以及交換機流表正確性的驗證等。
② 控制層,包括單點控制器設計、集群控制器架構、控制器接口和模型設計、控制器部署位置、控制器的分布式系統特性、控制器安全等。
③ 應用層,分為網絡安全、服務質量、負載均衡、流量工程等,以及在企業網、校園網、數據中心、無線網絡、廣域網等不同場景下的應用。

數據平面

數據平面的主要功能是匹配和轉發網包。基于硬件的實現方式,轉發性能高、功耗低,但可擴展性差;而基于網絡處理器或通用處理器的實現方式,轉發性能較硬件實現方式低一兩個數量級,但是具備非常強的靈活性。因此,交換機處理流程的設計和實現,主要是在上述兩者之間進行折中。同時,基于OpenFlow的SDN交換機流表匹配寬度遠超傳統交換機,在保證成本功耗的前提下,同樣容量的存儲芯片可支持的流表數目大幅下降,如何提高交換機流表利用率就成為轉發規則相關研究的另一問題。

  1. 交換機

未來SDN交換機需要支持在多表上串行或并行查詢的靈活配置,對網包處理的操作也要考慮擴展性,除了經典的操作,還需要支持對網包包頭任意域的修改,以及匹配過程中變量修改的相關操作。來自OpenFlow研究團隊的P4 和來自華為公司的POF是該方向的突出成果。P4面向的是基于芯片的實現方式,而POF是基于網絡處理器的方案。通過對匹配域、流水查找、網包操作等交換機處理網包的主要任務進行進一步拆分,并以可靈活配置、拼接的方式實現,未來SDN交換機相比OpenFlow交換機能夠更快地實現新的應用需求。

  1. 流表優化

在SDN架構中,控制平面向數據平面的多個交換機上部署規則時,會存在延時和不一致的問題:部分交換機上已部署了新的規則,而其他交換機上仍然保留著原有的規則。Reitblatt等人提出采用分布式系統設計中經典的兩階段提交方式來更新規則,并通過給數據包打標簽的方式來標識新舊規則的版本。在第一階段,控制器向擬更新的交換機發送消息,以確定完成對應舊規則的處理,并對處理完成的交換機進行規則的更新;在第二階段,等待所有更新的交換機返回更新成功的消息,否則取消該更新操作。

控制平面

NOX是首個OpenFlow控制器,它在OpenFlow協議的基礎上進行了封裝,提供了基于網絡事件觸發的編程模型,以及應用模塊動態加載與組合的運行機制,并支持多種開發語言。
MOX-MT針對NOX單線程處理方式造成的處理性能過低,改進了網絡收發模塊,并對處理中的冗余環節進行了優化,實現了多線程的事件處理。
ONIX首次提出了分布式SDN控制器,并系統地對SDN的編程模型及API進行了闡述。ONIX控制器中維護了一個NIB,該庫中保存了有關節點、鏈路、拓撲等信息的全局網絡視圖,并綜合采用DHT和事務型數據庫等多種手段來更新視圖;基于該視圖,ONIX抽象出多類API,用于管理網絡狀態。
Kandoo是一個層次化的分布式SDN控制器框架,它根據網絡狀態變更事件產生的頻率,設計了本地控制器和根控制器兩種類型,分別用于處理高頻率、局部的網絡狀態變更事件和低頻率、全局的網絡狀態變更事件。
ONOS是來源于學術界的最新網絡操作系統,它提供高可擴展性、高可靠性及高穩定性,實現了運營商級SDN控制器平臺的特征。

應用場景

SDN由于其高度靈活的可編程性,在網絡領域的大量應用場景中得以部署測試。
校園網環境是OpenFlow/SDN最早提出的應用場景,包括Ethane的訪問控制、Resonance的網絡準入等。
在數據中心,PSwitch/SIMPLE側重利用SDN技術解決中間設備的部署問題,VMware NSX團隊則完整展示了其基于SDN的網絡虛擬化平臺方案,包括數據平面和控制平面的設計。
在數據中心互聯方面,SDWAN則是代表工作。控制器通過SDN獲取全局信息,并采用ECMP技術來保證流量動態平衡,使得鏈路的利用率達到60%~100%。
在無線領域,將無線網絡設計分為處理平面和決策平面,并引入了針對無線網絡設備的可編程接口。

2.2 NFV研究方向

中間設備系統架構

隨著x86通用處理平臺性能的飛速提升,以及NFV需求的日益強烈,近年來的研究工作集中于如何在通用或開放標準處理平臺上對中間設備的系統架構進行重構,引入模塊化以消除功能冗余。CoMB和OpenGate是這方面工作的代表。

CoMB

① CoMB將中間設備的邏輯功能從物理硬件中解耦出來,并且對多種類型中間設備的邏輯功能進行歸納整理,抽象出共性的功能模塊,消除由于功能堆疊造成的處理冗余。
② 然后將上述功能模塊重新映射到通用處理平臺上,并在映射時考慮利用多種方式的并行實現,對每個功能模塊的處理進行加速。
③ 最后,引入了邏輯上集中的控制器來管理所有的中間設備,以實現全網范圍內中間設備資源利用率的提升及處理流量在時間和空間上的負載均衡。

在這里插入圖片描述

CoMB將中間設備的功能模塊分為3層:

  • 在網包捕獲層,CoMB利用網卡中的網包分類功能,將進入系統的流量根據其后續操作的不同進行分類,并分發到對應不同處理核心的硬件隊列中。
  • 在連接維護層,CoMB在完成網包必要的完整性校驗后將其重組成網流,并對網流的應用層協議進行解析,根據流表將網流導入到不同的檢測引擎中。
  • 在應用處理層,CoMB分別實現了基于Click平臺插件和基于獨立進程的兩類檢測引擎,并且在多核平臺上實現了并行和流水兩種處理方式。

OpenGate

該工作主要解決如何在開放標準硬件平臺上利用開放源碼軟件構建集群式中間設備的問題。
① OpenGate提出了基于開放標準的先進通信計算架構(Advanced Telecom Computing Architecture,ATCA)硬件平臺,并借鑒OpenFlow開放網絡架構的設計思想,利用開源網絡軟件構建集群式中間設備的設計。
② 然后根據系統的功能需求,將集群式中間設備的模塊劃分為3類:網絡處理、服務處理和控制處理,分別利用高速多核網絡處理器、分布式高性能服務器集群和系統處理邏輯集中控制,重點解決中間設備的前端、后端和整體管理3個方面的優化。
③ 最后,OpenGate針對網絡安全的應用場景,實現了同時支持20Gb/s狀態檢測和8Gb/s深度檢測的高性能安全網關。

在這里插入圖片描述

OpenGate的所有功能模塊通過內部網絡接口,同時接入到系統的數據平面和控制平面網絡上。其中,網絡處理模塊作為整個集群的前端,還提供外部網絡接口處理系統的輸入/輸出。數據平面和控制平面網絡分別為多個功能模塊提供無阻塞的高速和低速數據交換通道。

  • 在網絡處理模塊,OpenGate完成網絡L2、L3的處理以及基于網包包頭的狀態檢測,并利用獨立的快速通道和硬件支持的協處理器,分別保證前端處理的高性能和后端處理的加速優化。
  • 在服務處理模塊,OpenGate完成基于網包載荷的深度檢測,并在用戶態利用多核處理器對檢測引擎進行多線程加速優化。在控制處理模塊,OpenGate負責整個集群系統的配置管理與模塊狀態監控。

其他相關工作

xOMB側重于解決獨立形式中間設備的可編程性與可擴展性,較少涉及全網范圍內多個中間設備的協同與優化。
LiveSecFlowStream提出了一種基于OpenFlow交換機與硬件設備或虛擬機相結合的中間設備實現方案,由于不少檢測功能需要根據網流中部分網包的載荷進行應用級別的協議解析或網流合并,因此該方案受OpenFlow匹配模型的限制,有其特定的局限性。
FRESCO提出了一種基于OpenFlow控制器應用的網絡安全中間設備實現方案與編程平臺,該方案將檢測功能通過編寫成運行在OpenFlow控制器上的應用來實現,它仍然面臨與FlowStream方案相同的局限性。

中間設備管理接口

隨著SDN和NFV應用日益普遍,中間設備需要適應網絡拓撲的動態改變,因此中間設備提供的功能必須能夠通過編程接口開放出去,供其他子系統調用或集成。根據是否對傳統中間設備進行更改,中間設備管理接口的相關研究工作可以分為基于傳統中間設備的管理集成和基于開放功能中間設備的管理集成兩類,而PLayer和SDMBN分別是這兩類工作的代表。

PLayer

PLayer提出了引入策略感知的交換層作為中間設備的接入方案。該交換層由多個策略感知的交換機PSwitch組成,多個PSwitch可以根據運維人員制定的策略生成多種所需的邏輯拓撲連接。PLayer遵循了如下兩個設計原則。

  • 將連通性與策略相分離:不同中間設備檢測功能的組合順序由策略顯式給定。
  • 將中間設備移出物理網絡路徑:中間設備在數據中心網絡邊界接入,并利用流量牽引將需要檢測的流量按照策略指定的順序導引到對應的中間設備上。

① 在控制平面,PLayer通過定義在網包包頭域上的策略,制定不同流量在數據中心中流經中間設備的順序,并自動將上述策略根據物理網絡拓撲轉換成PSwitch上的轉發規則;
② 在數據平面,PSwitch接收并部署來自控制器轉換后的轉發規則,能夠在不對中間設備進行更改的前提下,完成基于策略的轉發功能。

在這里插入圖片描述

OpenFlow相比PLayer明確提出了交換機控制平面與數據平面相分離的設計原則,定義了交換機邏輯功能的規格說明,并對控制器與交換機之間的命令格式進行了協議化。因此,基于PLayer的中間設備管理集成方案有著與基于OpenFlow的方案相同或相似的局限性。此外,針對數據中心中間設備部署的特定場景,PLayer還有如下不完善的地方。

  • 不支持特定的檢測流量多次流經同一個中間設備。
  • 未考慮對中間設備多租戶的支持。
  • 流量牽引會導致額外的帶寬和延時開銷。
  • 以網流為粒度進行策略管理仍然較為復雜。

SDMBN

該工作借鑒交換設備開放編程接口的思想,提出了開放中間設備功能的解決思路。
SDMBN對中間設備狀態根據其在運行過程中所扮演的角色進行分類,下表展示了4種狀態類型的最終分類結果。以入侵防御系統為例,策略規則、連接表項、功能參數和統計信息分別是操作狀態、支持狀態、調優狀態及監控狀態的典型實例。

類型定義IPS示例內部/外部共享/獨享形式數量是否管理
操作指定網包/網流的操作策略規則外部不確定
支持支持多種可能操作的決策連接表項內部均有
調優調優設備算法性能、效率功能參數外部共享
監控量化設備運行狀態統計信息內部均有

SDMBN對中間設備狀態的訪問設計了相應的編程接口,與大部分網絡管理協議類似,控制器向中間設備的訪問接口包括狀態的增、刪、查,中間設備向控制器的訪問接口為狀態的變更通知。
SDMBN的設計較大程度地提升了中間設備的可編程性,其不僅開放了傳統意義上的功能配置和統計信息編程接口,而且還抽象出對中間設備連接表等運行時關鍵信息的訪問接口,使得該框架能夠適應檢測能力動態調整和檢測功能在線熱遷移等復雜應用場景,為更高級別的功能聚合提供了支持。

其他相關工作

SIMPLE在PLayer工作的基礎上,采用OpenFlow技術手段,重點解決在有設備處理資源限制的條件下,數據中心中間設備的部署問題。該工作還考慮到中間設備可能要對網包內容進行更改、同一類型多個中間設備之間負載均衡,以及特定檢測流量可能多次進入某個中間設備等其他因素,針對性地引入了基于相似性度量的網流關聯、基于在線和離線的整數線性規劃,以及基于隧道標記的流量牽引對上述3個問題進行解決。
Stratos則將解決上述問題的手段擴展到基于虛擬機形式的中間設備上,根據網絡拓撲和實時流量大小動態調整虛擬化中間設備的部署位置,從而達到更好的負載均衡和更高的資源利用率。
OpenNF是SDMBN工作的延續,擴展了后者提出的編程接口,以簡化中間設備管理集成的復雜度,并且通過實際原型系統的搭建和評測驗證了設計的合理性和有效性。
DPIaaS利用OpenNF提供的控制手段,提出了將所有中間設備的深度檢測模塊提取出來,并抽象成服務,供多個中間設備共享,以在全網范圍內提升中間設備整體的處理效率。

中間設備策略分析

中間設備策略指面向網包包頭的策略類型,它是由一組規則組成的集合。其中,每條規則指定了網包包頭域上的匹配條件,以及對應的后續操作。這種類型的規則集合有別于面向網包載荷的規則集合,后者在處理邏輯上可以看作前者規則操作域的取值。
中間設備策略處理的相關研究可以分為兩種:策略分析主要包括如何優化中間設備策略的表示,以及如何對已部署的單個或多個中間設備上的策略沖突進行檢測;策略分配主要包括如何將在全局網絡拓撲上定義的策略分配到網絡中多個節點上進行分布式處理。
中間設備策略分析領域的研究工作大多集中于防火墻策略,防火墻策略的優化表示與沖突檢測分別定位于策略部署前后的分析工作。這兩類工作大都將防火墻策略用具備不同特性的樹狀結構表示,并在此基礎上完成相應的后續分析處理。防火墻決策圖(Firewall Decision Diagram,FDD)和PolicyTree分別是這兩類工作的代表。

FDD

通常防火墻策略表示需要滿足一下3個特性:一致性是指每個網包不會匹配策略中兩條不同操作的規則;完整性是指每個網包至少匹配策略中的一條規則;緊密性是指策略中不存在冗余的規則。FDD是一個有向無環的樹狀結構,除了同時滿足樹狀數據結構和有向無環圖的基本屬性外,還具備如下特性。

  1. 每層內部節點對應策略的某個特定域,每個葉子節點對應策略操作域的某個特定取值。
  2. 某個特定從根節點到葉子節點的路徑上不會出現對應域相同的多個節點。
  3. 內部節點的每條出邊對應于該節點對應域上的多個特定整數區間,每個內部節點的所有出邊對應的整數區間集合兩兩交集為空,所有并集為該節點對應域上的全集。

下圖展示了一個二維FDD示例;示例中兩個維度的取值全集均為[0,9],根節點對應第一維F0,第二層內部節點均對應第二維F1。

在這里插入圖片描述

在FDD數據結構的基礎上,通過對取值相同的葉子節點進行選擇性的合并,可以達到防火墻策略的上述3個設計要求。此外,利用FDD數據結構,還可以對比多個防火墻策略之間的差異,從而找出策略定義中不明確的部分并對其進行修正。對防火墻策略的查詢及部分沖突檢測的功能也可以基于該結構來實現。

PolicyTree

Ehab對獨立式和分布式防火墻的策略沖突問題進行了系統性的研究,并提出了基于PolicyTree結構在策略部署后或增刪規則時,對已有的策略沖突或可能產生的策略沖突進行檢測的算法。
首先將防火墻規則之間的關系劃分為:完全分離、精確匹配、包含匹配、部分分離和相互關聯5種類型。
然后基于上述規則關系、優先級關系和操作域取值的不同,該工作分別介紹了獨立式防火墻的5種策略沖突類型(遮蔽異常、相關異常、泛化異常、冗余異常和無關異常)與分布式防火墻的4種策略沖突類型(遮蔽異常、欺騙異常、冗余異常和相關異常)。
最后,該工作將防火墻策略表示成PolicyTree,并用代碼邏輯描述和實現了策略沖突檢測算法。

中間設備策略分配

隨著SDN技術的興起,OpenFlow規范了交換設備的轉發模型,全網范圍內交換設備的策略可以根據應用場景的需要,由邏輯上集中的控制器進行靈活的分配。根據功能需求的不同,交換設備的策略分配算法可以分為兩類:

轉發策略與監控策略聯合分配

DIFANE提出了一種結合主動部署和被動部署兩者優點的解決方案。
DIFANE在數據平面引入多個授權交換設備,并將控制器在控制平面上給交換設備配置規則的功能卸載給數據平面上的多個授權交換設備來完成。
然后根據網絡拓撲確定授權交換設備的位置,并將全局策略在多維正交空間上劃分為與授權交換設備數量相同的多個不交疊策略子集。
最后,DIFANE的控制器將全局策略的劃分方式生成“分區規則”并預先配置到所有交換設備上,將多個策略子集生成“授權規則”并預先配置到對應的多個授權交換設備上。
當網包經過交換設備沒有命中有效規則時,“分區規則”會將網包重定向到該交換設備所屬的授權交換設備;授權交換設備一方面根據“授權規則”對網包進行處理,另一方面生成“緩存規則”配置到網包所來的交換設備上。由于“緩存規則”的優先級要高于“分區規則”的優先級,因此后續網包會根據最新配置的“緩存規則”進行處理。DIFANE在對全局策略進行劃分時,為了適應硬件交換機三態內容尋址存儲器(Ternary Content Addressable Memory,TCAM)的查找特性,采用了等分空間切分的方法,并根據切分后的子空間對原始策略進行裁剪。總體上看,DIFANE綜合采用全局策略分區和基于數據平面的規則被動部署,解決了大規模規則集在資源有限的硬件交換機上高效部署的問題。

vCRIB在DIFANE工作的基礎上,將問題背景擴展到支持規則在軟件交換設備上部署,并對DIFANE的全局策略劃分方式進行優化,解決了云數據中心大規模策略管理的問題。
vCRIB采取了“面向源端”和“基于復制”的全局策略劃分思路。前者保證了每個策略子集僅檢測某個終端節點發送的流量,且所有策略子集在流量覆蓋的有效空間上相互無交疊,從而極大地減輕了策略子集在后續調整及虛擬機遷移過程中的處理復雜度;后者基于對相鄰源對應的策略子集相似度較高現象的觀察,保證了策略劃分時不會出現DIFANE中對策略進行裁剪造成的規則數目膨脹,而且方便了對多個策略子集進行合并。
其次,vCRIB提出了基于背包問題建模和資源感知的策略子集分配算法。該算法實現了在保證網絡節點資源限制的前提下,盡可能將相似的策略子集集中部署在相同的網絡節點上。
最后,vCRIB根據流量的變化對策略子集的部署結果進行微調,通過貪婪地選擇當前負載最大的網絡節點,并將其上的部分策略子集分散到相鄰的網絡節點上,以實現全網范圍內資源利用率的提升和負載均衡。

基于轉發策略的監控策略分配

Palette針對大規模訪問控制策略部署在網絡接入交換設備上會導致其表項的負載過高,而核心交換設備表項較為富裕的問題,提出了將上述訪問控制策略盡量分散到全網范圍內的所有交換設備上,并且保證網絡中每條路徑上的節點全集或子集保存一份完整的全局訪問控制策略。
首先將全局訪問控制策略按照位取值的不同或規則之間的相互依賴關系,迭代地劃分為規則數目相近的多個不交疊策略子集。
其次進行貪婪的網絡節點選擇,每次選擇一個或多個網絡節點部署策略子集,直到每條網絡路徑上都有所有策略子集的部署。解決方案如下圖:

在這里插入圖片描述

Palette在進行全局策略劃分時沒有考慮到網絡流量空間的因素,因此可能會出現某條網絡路徑查詢了與其不相關規則的情況,導致了處理資源的浪費。此外,Palette策略分配算法的性能與全網中最短路徑的長度密切相關,導致該算法難以在最短路徑長度較小的網絡中充分利用所有交換設備的資源。One-Big-Switch進行了改善。
首先,將網絡中的所有路徑分離出來,并在此基礎上通過線性規劃算法為每條路徑分配其可用的硬件資源。
其次,根據每條路徑上各個交換設備為該路徑分配的硬件資源,One-Big-Switch將與該路徑相關的策略用多維正交空間中的單個超長方體以貪婪的方式進行劃分,然后順序部署在對應的交換設備上。
最后,One-Big-Switch還根據規則操作域的取值,對需要丟棄的網絡流量,在交換設備部署順序上進行了優化,以減少網絡帶寬開銷。

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

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

相關文章

Unity Magica Cloth2 使用教程

視頻教程 參考文章 前提: 找到角色的模型 模之屋,我這里準備了轉好FBX格式的吟霖模型點擊自取【源自 模之屋】 角色舞蹈動畫 點擊下載【源自 Mixamo】 導入Unity【如何將原神的角色導入Unity】 三渲二 (必須是2022.3LTS和URP項目) Magica Cloth2 頭…

深入探索Stage #13:CSS層疊樣式表的IE特性偽協議注入

在網絡安全領域,跨站腳本攻擊(XSS)是一種常見的攻擊手段。隨著Web技術的不斷發展,攻擊者也在不斷探索新的攻擊途徑。本文將詳細介紹如何利用IE瀏覽器的特性,通過CSS層疊樣式表進行XSS攻擊。 實驗環境搭建 為了模擬IE…

spring boot 白盒測試實戰

假設項目中存在以下代碼: 常量類:public final static String NUMBER_REGEX "\\d"; service:return ReUtil.getGroup0(Constants.NUMBER_REGEX, waybill); 代碼解析 解釋: return ReUtil.getGroup0(Constants.NUMB…

python學習 - 使用OpenCV庫(cv2)和imutils庫實現輔助答題卡判別

測試數據見文章頂部位置資源!!! 使用了OpenCV庫(cv2)和imutils庫。代碼的主要目的是處理圖像中的問題,如識別圖像中的文字,并對其進行分析和排序。 輔助答題卡判別 # -*- coding:utf-8 -*- fr…

python實現郵箱轟炸機

最近在學計算機網絡看到套接字的練習 于是應用SMTP協議寫了個發送郵箱的玩玩 可以發一大堆垃圾郵件給對方 其中參考了 關于發郵件報錯535 Error:authentication failed解決方法http://t.csdnimg.cn/Bc0Dq 已經查詢如何獲取網易郵箱客戶端授權碼 base64編碼 i…

Mybatis05-一對多和多對一處理

多對一和一對多 多對一 多對一的理解: 多個學生對應一個老師 如果對于學生這邊,就是一個多對一的現象,即從學生這邊關聯一個老師! 結果映射(resultMap): association 一個復雜類型的關聯&…

在線Logo背景去除:pixian.ai

文章目錄 簡介特色 簡介 pixian.ai是一款智能圖片背景去除工具,進入網頁后,會非常醒目地提示你準備【Free】還是【Paid】,這點就非常好,不向有一些網站,主打免費使用,但時不時彈出“免費注冊”&#xff0c…

【微信小程序】連接藍牙設備

1、檢查小程序是否授權藍牙功能 initBluetooth() {const that thiswx.getSetting({success: (res) > {if (res.authSetting.hasOwnProperty(scope.bluetooth)) {//scope.bluetooth屬性存在,且為falseif (!res.authSetting[scope.bluetooth]) {wx.showModal({tit…

Python 連接 MySQL 及 SQL增刪改查(主要使用sqlalchemy)

目錄 一、環境 二、MySQL的連接和使用 2.1方式一:sql為主 2.1.1創建連接 2.1.2 表結構 2.1.3 新增數據 ?編輯 2.1.4 查看數據 ?編輯 2.1.5 修改數據 2.1.6 刪除數據 2.2方式二:orm對象關系映射 2.2.1 mysql連接 2.2.2 創建表 2.2.3 新增…

windows 安裝pnpm

安裝Node.js: 確保系統上已安裝Node.js。pnpm需要Node.js來運行。如果尚未安裝Node.js,請從其官方網站下載并安裝適用于Windows的最新版本。 安裝pnpm: 打開命令行工具(如CMD、PowerShell或Git Bash)。使用npm&…

解鎖機器學習的無限可能:深入探究scikit-learn的強大功能

解鎖機器學習的無限可能:深入探究scikit-learn的強大功能 第一部分:背景和功能介紹 在數據科學和機器學習領域,scikit-learn(簡稱sklearn)是一個廣泛使用的Python庫。它提供了簡單高效的工具用于數據挖掘和數據分析&a…

【Python短期內快速掌握學習人工智能知識能力】:從零到入門的NLP學習秘籍

??我叫憶_恒心,一名喜歡書寫博客的研究生👨?🎓。 如果覺得本文能幫到您,麻煩點個贊👍唄! 近期會不斷在專欄里進行更新講解博客~~~ 有什么問題的小伙伴 歡迎留言提問歐,喜歡的小伙伴給個三連支…

Echarts 在折線圖的指定位置繪制一個圖標展示

文章目錄 需求分析需求 在線段交匯處用一個六邊形圖標展示 分析 可以使用 markPoint 和 symbol 屬性來實現。這是一個更簡單和更標準的方法來添加標記點在運行下述代碼后,你將在瀏覽器中看到一個折線圖,其中在 [3, 35] (即圖表中第四個數據點 Thu 的 y 值為 35 的位置)處…

Java反射Reflect機制詳解

文章目錄 引言反射的基本概念反射基本原理反射應用場景反射基本使用獲取類的Class對象獲取構造方法并實例化對象獲取和調用方法獲取和修改字段反射工具類 反射源碼解讀獲取Class對象的源碼調用方法的源碼 反射優缺點優點缺點 為什么需要反射總結 引言 Java反射是Java語言中的一…

【干貨】視頻文件抽幀(opencv和ffmpeg方式對比)

1 廢話不多說,直接上代碼 opencv方式 import time import subprocess import cv2, os from math import ceildef extract_frames_opencv(video_path, output_folder, frame_rate1):"""使用 OpenCV 從視頻中抽取每秒指定幀數的幀,并保存到指定文件夾…

linux系統使用達夢數據庫

在Linux系統中使用達夢數據庫,首先需要確保已經正確安裝了達夢數據庫軟件。以下是一個基本的使用示例,假設您已經安裝了達夢數據庫并且配置好了相關環境變量。 連接到數據庫: 使用 dsql 命令連接到數據庫 dsql -h hostname -u username -p…

寶貝,帶上WebAssembly,換個姿勢來優化你的前端應用

在你沒崛起之前,臉是用來丟的 大家好,我是柒八九。一個專注于前端開發技術/Rust及AI應用知識分享的Coder 此篇文章所涉及到的技術有 WebAssemblyRustWeb Worker(comlink)wasm-packPhotonffmpeg.wasm腳手架生成前端項目因為,行文字數所限,有些概念可能會一帶而過亦或者提供對…

BOM是什么東西

BOM(Byte Order Mark,字節順序標記)是一個Unicode字符,通常出現在文本文件的開頭。它的作用包括以下幾個方面: 1. 指示文件的編碼方式 BOM可以幫助軟件識別文本文件使用的字符編碼。不同的編碼方式可能會使用不同的B…

經濟與安全兼顧:茶飲店購買可燃氣體報警器的價格考量

可燃氣體報警器在如今的社會中扮演著至關重要的角色。它們用于檢測環境中的可燃氣體濃度,及早發現潛在的火災隱患,保護人們的生命和財產安全。 在這篇文章中,佰德將介紹可燃氣體報警器的安裝、檢定以及價格,通過實際案例和數據&a…

PCL 生成空間橢圓點云

目錄 一、算法原理二、代碼實現三、結果展示本文由CSDN點云俠原創,原文鏈接。如果你不是在點云俠的博客中看到該文章,那么此處便是不要臉的爬蟲。 一、算法原理 設橢圓在 X O Y XOY XOY平面上,參數方程為: