路由器與交換機的工作原理

路由器與交換機的工作原理

計算機網絡往往由許多種不同類型的網絡互連連接而成。如果幾個計算機網絡只是在物理上連接在一起,它們之間并不能進行通信,那么這種“互連”并沒有什么實際意義。因此通常在談到“互連”時,就已經暗示這些相互連接的計算機是可以進行通信的,也就是說,從功能上和邏輯上看,這些計算機網絡已經組成了一個大型的計算機網絡,或稱為互聯網絡,也可簡稱為互聯網、互連網。

將網絡互相連接起來要使用一些中間設備(或中間系統),ISO的術語稱之為中繼(relay)系統。根據中繼系統所在的層次,可以有以下五種中繼系統:

1.物理層(即常說的第一層、層L1)中繼系統,即轉發器(repeater)。

2.數據鏈路層(即第二層,層L2),即網橋或橋接器(bridge)。

3.網絡層(第三層,層L3)中繼系統,即路由器(router)。

4.網橋和路由器的混合物橋路器(brouter)兼有網橋和路由器的功能。

5.在網絡層以上的中繼系統,即網關(gateway).

當中繼系統是轉發器時,一般不稱之為網絡互聯,因為這僅僅是把一個網絡擴大了,而這仍然是一個網絡。高層網關由于比較復雜,目前使用得較少。因此一般討論網絡互連時都是指用交換機和路由器進行互聯的網絡。本文主要闡述交換機和路由器及其區別。

2 交換機和路由器

“交換”是今天網絡里出現頻率最高的一個詞,從橋接到路由到ATM直至電話系統,無論何種場合都可將其套用,搞不清到底什么才是真正的交換。其實交換一詞最早出現于電話系統,特指實現兩個不同電話機之間話音信號的交換,完成該工作的設備就是電話交換機。所以從本意上來講,交換只是一種技術概念,即完成信號由設備入口到出口的轉發。因此,只要是和符合該定義的所有設備都可被稱為交換設備。由此可見,“交換”是一個涵義廣泛的詞語,當它被用來描述數據網絡第二層的設備時,實際指的是一個橋接設備;而當它被用來描述數據網絡第三層的設備時,又指的是一個路由設備。

我們經常說到的以太網交換機實際是一個基于網橋技術的多端口第二層網絡設備,它為數據幀從一個端口到另一個任意端口的轉發提供了低時延、低開銷的通路。

由此可見,交換機內部核心處應該有一個交換矩陣,為任意兩端口間的通信提供通路,或是一個快速交換總線,以使由任意端口接收的數據幀從其他端口送出。在實際設備中,交換矩陣的功能往往由專門的芯片(ASIC)完成。另外,以太網交換機在設計思想上有一個重要的假設,即交換核心的速度非常之快,以致通常的大流量數據不會使其產生擁塞,換句話說,交換的能力相對于所傳信息量而無窮大(與此相反,ATM交換機在設計上的思路是,認為交換的能力相對所傳信息量而言有限)。

雖然以太網第二層交換機是基于多端口網橋發展而來,但畢竟交換有其更豐富的特性,使之不但是獲得更多帶寬的最好途徑,而且還使網絡更易管理。

而路由器是OSI協議模型的網絡層中的分組交換設備(或網絡層中繼設備),路由器的基本功能是把數據(IP報文)傳送到正確的網絡,包括:

1.IP數據報的轉發,包括數據報的尋徑和傳送

2.子網隔離,抑制廣播風暴;

3.維護路由表,并與其他路由器交換路由信息,這是IP報文轉發的基礎。

4.IP數據報的差錯處理及簡單的擁塞控制;

5.實現對IP數據報的過濾和記帳。

?

路由器---所謂路由就是指通過相互連接的網絡把信息從源地點移動到目標地點的活動。一般來說,在路由過程中,信息至少會經過一個或多個中間節點。通常,人們會把路由和交換進行對比,這主要是因為在普通用戶看來兩者所實現的功能是完全一樣的。其實,路由和交換之間的主要區別就是交換發生在OSI參考模型的第二層(數據鏈路層),而路由發生在第三層,即網絡層這一區別決定了路由和交換在移動信息的過程中需要使用不同的控制信息,所以兩者實現各自功能的方式是不同的

交換機---交換(switching)是按照通信兩端傳輸信息的需要,用人工或設備自動完成的方法,把要傳輸的信息送到符合要求的相應路由上的技術統稱。廣義的交換機(switch)就是一種在通信系統中完成信息交換功能的設備。

在計算機網絡系統中,交換概念的提出是對于共享工作模式的改進。我們以前介紹過的HUB集線器就是一種共享設備,HUB本身不能識別目的地址當同一局域網內的A主機給B主機傳輸數據時,數據包在以HUB為架構的網絡上是以廣播方式傳輸的,由每一臺終端通過驗證數據包頭的地址信息來確定是否接收。也就是說,在這種工作方式下,同一時刻網絡上只能傳輸一組數據幀的通訊,如果發生碰撞還得重試。這種方式就是共享網絡帶寬。

交換機擁有一條很高帶寬的背部總線和內部交換矩陣。交換機的所有的端口都掛接在這條背部總線上,控制電路收到數據包以后,處理端口會查找內存中的地址對照表以確定目的MAC(網卡的硬件地址)的NIC(網卡)掛接在哪個端口上,通過內部交換矩陣迅速將數據包傳送到目的端口,目的MAC若不存在才廣播到所有的端口,接收端口回應后交換機會“學習”新的地址,并把它添加入內部MAC地址表中。

使用交換機也可以把網絡“分段”,通過對照MAC地址表,交換機只允許必要的網絡流量通過交換機。通過交換機的過濾和轉發,可以有效的隔離廣播風暴,減少誤包和錯包的出現,避免共享沖突。

交換機在同一時刻可進行多個端口對之間的數據傳輸。每一端口都可視為獨立的網段,連接在其上的網絡設備獨自享有全部的帶寬,無須同其他設備競爭使用。當節點A向節點D發送數據時,節點B可同時向節點C發送數據,而且這兩個傳輸都享有網絡的全部帶寬,都有著自己的虛擬連接。假使這里使用的是10Mbps的以太網交換機,那么該交換機這時的總流通量就等于2×10Mbps=20Mbps,而使用10Mbps的共享式HUB時,一個HUB的總流通量也不會超出10Mbps。

總之,交換機是一種基于MAC地址識別,能完成封裝轉發數據包功能的網絡設備交換機可以“學習”MAC地址,并把其存放在內部地址表中,通過在數據幀的始發者和目標接收者之間建立臨時的交換路徑,使數據幀直接由源地址到達目的地址

?

?

說明二層交換機、三層交換機和路由器的基本工作原理和三者之間的主要區別。

解答:1.二層交換技術

二層交換機是數據鏈路層的設備,它能夠讀取數據包中的MAC地址信息并根據MAC地址來進行交換。

交換機內部有一個地址表,這個地址表標明了MAC地址和交換機端口的對應關系。當交換機從某個端口收到一個數據包,它首先讀取包頭中的源MAC地址,這樣它就知道源MAC地址的機器是連在哪個端口上的,它再去讀取包頭中的目的MAC地址,并在地址表中查找相應的端口,如果表中有與這目的MAC地址對應的端口,則把數據包直接復制到這端口上,如果在表中找不到相應的端口則把數據包廣播到所有端口上,當目的機器對源機器回應時,交換機又可以學習一目的MAC地址與哪個端口對應,在下次傳送數據時就不再需要對所有端口進行廣播了

二層交換機就是這樣建立和維護它自己的地址表。由于二層交換機一般具有很寬的交換總線帶寬,所以可以同時為很多端口進行數據交換。如果二層交換機有N個端口,每個端口的帶寬是M,而它的交換機總線帶寬超過N×M,那么這交換機就可以實現線速交換。二層交換機對廣播包是不做限制的,把廣播包復制到所有端口上。

二層交換機一般都含有專門用于處理數據包轉發的ASIC (Application specific Integrated Circuit)芯片,因此轉發速度可以做到非常快。

2.路由技術

路由器是在OSI七層網絡模型中的第三層——網絡層操作的。

路由器內部有一個路由表,這表標明了如果要去某個地方,下一步應該往哪走路由器從某個端口收到一個數據包,它首先把鏈路層的包頭去掉(拆包),讀取目的IP地址,然后查找路由表,若能確定下一步往哪送,則再加上鏈路層的包頭(打包),把該數據包轉發出去;如果不能確定下一步的地址,則向源地址返回一個信息,并把這個數據包丟掉

路由技術和二層交換看起來有點相似,其實路由和交換之間的主要區別就是交換發生在OSI參考模型的第二層(數據鏈路層),而路由發生在第三層。這一區別決定了路由和交換在傳送數據的過程中需要使用不同的控制信息,所以兩者實現各自功能的方式是不同的

路由技術其實是由兩項最基本的活動組成,即決定最優路徑和傳輸數據包。其中,數據包的傳輸相對較為簡單和直接,而路由的確定則更加復雜一些。路由算法在路由表中寫入各種不同的信息,路由器會根據數據包所要到達的目的地選擇最佳路徑把數據包發送到可以到達該目的地的下一臺路由器處。當下一臺路由器接收到該數據包時,也會查看其目標地址,并使用合適的路徑繼續傳送給后面的路由器。依次類推,直到數據包到達最終目的地。

路由器之間可以進行相互通訊,而且可以通過傳送不同類型的信息維護各自的路由表。路由更新信息主是這樣一種信息,一般是由部分或全部路由表組成。通過分析其它路由器發出的路由更新信息,路由器可以掌握整個網絡的拓撲結構。鏈路狀態廣播是另外一種在路由器之間傳遞的信息,它可以把信息發送方的鏈路狀態及進的通知給其它路由器。

3.三層交換技術

一個具有第三層交換功能的設備是一個帶有第三層路由功能的第二層交換機,但它是二者的有機結合,并不是簡單的把路由器設備的硬件及軟件簡單地疊加在局域網交換機上。

從硬件上看,第二層交換機的接口模塊都是通過高速背板/總線(速率可高達幾十Gbit/s)交換數據的,在第三層交換機中,與路由器有關的第三層路由硬件模塊也插接在高速背板/總線上,這種方式使得路由模塊可以與需要路由的其他模塊間高速的交換數據,從而突破了傳統的外接路由器接口速率的限制。在軟件方面,第三層交換機也有重大的舉措,它將傳統的基于軟件的路由器軟件進行了界定。

其做法是:

對于數據包的轉發:如IP/IPX包的轉發,這些規律的過程通過硬件得以高速實現。

對于第三層路由軟件:如路由信息的更新、路由表維護、路由計算、路由的確定等功能,用優化、高效的軟件實現。

假設兩個使用IP協議的機器通過第三層交換機進行通信的過程,機器A在開始發送時,已知目的IP地址,但尚不知道在局域網上發送所需要的MAC地址。要采用地址解析(ARP)來確定目的MAC地址。機器A把自己的IP地址與目的IP地址比較,從其軟件中配置的子網掩碼提取出網絡地址來確定目的機器是否與自己在同一子網內。若目的機器B與機器A在同一子網內,A廣播一個ARP請求,B返回其MAC地址,A得到目的機器B的MAC地址后將這一地址緩存起來,并用此MAC地址封包轉發數據,第二層交換模塊查找MAC地址表確定將數據包發向目的端口。若兩個機器不在同一子網內,如發送機器A要與目的機器C通信,發送機器A要向“缺省網關”發出ARP包,而“缺省網關”的IP地址已經在系統軟件中設置。這個IP地址實際上對應第三層交換機的第三層交換模塊。所以當發送機器A對“缺省網關”的IP地址廣播出一個ARP請求時,若第三層交換模塊在以往的通信過程中已得到目的機器C的MAC地址,則向發送機器A回復C的MAC地址;否則第三層交換模塊根據路由信息向目的機器廣播一個ARP請求,目的機器C得到此ARP請示后向第三層交換模塊回復其MAC地址,第三層交換模塊保存此地址并回復給發送機器A。以后,當再進行A與C之間數據包轉發進,將用最終的目的機器的MAC地址封裝,數據轉發過程全部交給第二層交換處理,信息得以高速交換。既所謂的一次選路,多次交換。

第三層交換具有以下突出特點:

有機的硬件結合使得數據交換加速;

優化的路由軟件使 得路由過程效率提高;

除了必要的路由決定過程外,大部分數據轉發過程由第二層交換處理;

多個子網互連時只是與第三層交換模塊的邏輯連接,不象傳統的外接路由器那樣需增加端口,保護了用戶的投資。

1、交換機的定義

  局域網交換機擁有許多端口,每個端口有自己的專用帶寬,并且可以連接不同的網段。交換機各個端口之間的通信是同時的、并行的,這就大大提高了信息吞吐量。為了進一步提高性能,每個端口還可以只連接一個設備。

  為了實現交換機之間的互連或與高檔服務器的連接,局域網交換機一般擁有一個或幾個高速端口,如100MB以太網端口、FDDI端口或155MB ATM端口,從而保證整個網絡的傳輸性能。

2、交換機的特性

  通過集線器共享局域網的用戶不僅是共享帶寬,而且是競爭帶寬。可能由于個別用戶需要更多的帶寬而導致其他用戶的可用帶寬相對減少,甚至被迫等待,因而也就耽誤了通信和信息處理。利用交換機的網絡微分段技術,可以將一個大型的共享式局域網的用戶分成許多獨立的網段,減少競爭帶寬的用戶數量,增加每個用戶的可用帶寬,從而緩解共享網絡的擁擠狀況。由于交換機可以將信息迅速而直接地送到目的地能大大提高速度和帶寬,能 保護用戶以前在介質方面的投資,并提供良好的可擴展性,因此交換機不但是網橋的理想替代物,而且是集線器的理想替代物。

  與網橋和集線器相比,交換機從下面幾方面改進了性能:

  (1)通過支持并行通信,提高了交換機的信息吞吐量。

  (2)將傳統的一個大局域網上的用戶分成若干工作組,每個端口連接一臺設備 或連接一個工作組,有效地解決擁擠現像。這種方法人們稱之為網絡微分 段(Micro一segmentation)技術。

  (3)虛擬網(VirtuaI LAN)技術的出現,給交換機的使用和管理帶來了更大 的靈活性。我們將在后面專門介紹虛擬網。

  (4)端口密度可以與集線器相媲美,一般的網絡系統都是有一個或幾個服務器,而絕大部分都是普通的客戶機。客戶機都需要訪問服務器,這樣就導致服務器的通信和事務處理能力成為整個網絡性能好壞的關鍵。

  交換機就主要從提高連接服務器的端口的速率以及相應的幀緩沖區的大小,來提高整個網絡的性能,從而滿足用戶的要求。一些高檔的交換機還采用全雙工技術進一步提高端口的帶寬。以前的網絡設備基本上都是采用半雙工的工作方式,即當一臺主機發送數據包的時候, 它就不能接收數據包,當接收數據包的時候,就不能發送數據包。由于采用全雙工技術,即主機在發送數據包的同時,還可以接收數據包,普通的10M端口就可以變成20M端口,普通的100M端口就可以變成200M 端口,這樣就進一步提高了信息吞吐量。

3、交換機的工作原理

  傳統的交換機本質上是具有流量控制能力的多端口網橋,即傳統的(二層) 交換機。把路由技術引入交換機,可以完成網絡層路由選擇,故稱為三層交換,這是交換機的新進展。交換機(二層交換)的工作原理交換機和網橋一樣,是工作在鏈路層的聯網設備,它的各個端口都具有橋接功能,每個端口可以連接一個LAN或一臺高性能網站或服務器,能夠通過自學習來了解每個端口的設備連接情況。所有端口由專用處理器進行控制,并經過控制管理總線轉發信息。

  同時可以用專門的網管軟件進行集中管理。 除此之外,交換機為了提高數據交換的速度和效率,一般支持多種方式。

(1)存儲轉發:

  所有常規網橋都使用這種方法。它們在將數據幀發柱其他端口之前,要把收到的幀完全存儲在內部的存儲器中,對其檢驗后再發往其他端口,這樣其延時等于接收一個完整的數據幀的時間及處理時間的總和。如果級聯很長時,會導致嚴重的性能問題,但這種方法可以過濾掉錯誤的數據幀。

(2)切入法:

  這種方法只檢驗數據幀的目標地址,這使得數據幀幾乎馬上就 可以傳出去,從而大大降低延時。

  其缺點是:錯誤幀也會被傳出去。錯誤幀的概率較小的情況下,可以采用切入法以提高傳輸速度。而錯誤幀的概率較大的情況下,可以采用存儲轉發法/以減少錯誤幀的重傳。

4、交換機的配置

  我們下面以Cisco公司的Catlystl900交換機為例,介紹交換機的一般配置過程。

  對一臺新的Catlystl900交換機,使用它的缺省配置就可以工作了。這因為它是一種將軟件裝在FlashMemory中的硬件設備,當加電時,它首先要進行一系列自檢,對所有端口進行測試之后,交換機就處于工作狀態。這時它的交換表是空的,它可以通過自學習來了解各個端口的設備連接情況,并將設備的 MAC地址記錄在交換表中,當有信息交換時,交換機就根據交換表來進行數據轉發。

  但為了便于對它進行網絡管理,Catlystl900交換機自己有一個MAC地址,這樣就可以為它分配一個IP地址和屏蔽碼。網絡管理員須通過交換機的串口接一臺終端或仿真終端,才能為它指定一個IP地址,其缺省值是0.0.0.0。指定IP地址以后,網絡管理員就可以通過網絡進行遠程管理了。Catlystl900交換機的配置界面是菜單形式,缺省配置下,它的所有端口都屬于同一個VLAN,很多情況下都不需要作什么修改。

(1)將微機串口通過RS一232電纜與Cata1yst1900的Console口連接,運行仿真終端軟件,Catalyst 1900 啟動后。

(2)回車后,進入主菜單。

(3)按“S”鍵,進入系統配置菜單:(配置系統名,位置,日期)。

(4)在主菜單中按“N”鍵進入網絡管理菜單。

(5)配置IP地置。

(6)配置SNMP參數。

5、交換機的種類

  交換機是數據鏈路層設備,它可將多個物理LAN網段連接到一個大型網絡上,與網絡類似交換機傳輸和溢出也是基于MAC地址的傳輸。由于交換機是用硬件實現的,因此,傳輸速度很快。傳輸數據包時,交換機要么使用存儲---轉發交換方式,要么使用斷---通交換方式。目前有許多類型的交換機,其中包括ATM交換機,LAN交換機和不同類型的WAN交換機。

ATM交換機

  ATM(Asynchronous Transfer Mode)交換機為工作組,企業網絡中樞以及其它眾多領域提供了高速交換信息和可伸縮帶寬的能力。ATM交換機支持語音,視頻和文本數據應用,并可用來交換固定長度的信息單位(有時也稱元素)。企業網絡是通過ATM中樞鏈路連接多個LAN組成的。

局域網交換機

  LAN交換機用于多LAN網段的相互連接,它在網絡設備之間進行專用的無沖突的通信,同時支持多個設備間的對話。LAN交換機主要是用于高速交換數據幀。通過LAN交換機將一個0Mbps以太網與一個100Mbps 以太網互聯。

?

?

?

路由器工作原理

路由器工作原理

傳統地,路由器工作于OSI七層協議中的第三層,其主要任務是接收來自一個網絡接口的數據包,根據其中所含的目的地址,決定轉發到下一個目的地址。因此,路由器首先得在轉發路由表中查找它的目的地址,若找到了目的地址,就在數據包的幀格前添加下一個MAC地址,同時IP數據包頭的TTL(Time To Live)域也開始減數,并重新計算校驗和。當數據包被送到輸出端口時,它需要按順序等待,以便被傳送到輸出鏈路上。

路由器在工作時能夠按照某種路由通信協議查找設備中的路由表。如果到某一特定節點有一條以上的路徑,則基本預先確定的路由準則是選擇最優(或最經濟)的傳輸路徑。由于各種網絡段和其相互連接情況可能會因環境變化而變化,因此路由情況的信息一般也按所使用的路由信息協議的規定而定時更新

網絡中,每個路由器的基本功能都是按照一定的規則來動態地更新它所保持的路由表,以便保持路由信息的有效性。為了便于在網絡間傳送報文,路由器總是先按照預定的規則把較大的數據分解成適當大小的數據包,再將這些數據包分別通過相同或不同路徑發送出去。當這些數據包按先后秩序到達目的地后,再把分解的數據包按照一定順序包裝成原有的報文形式。路由器的分層尋址功能是路由器的重要功能之一,該功能可以幫助具有很多節點站的網絡來存儲尋址信息,同時還能在網絡間截獲發送到遠地網段的報文,起轉發作用;選擇最合理的路由,引導通信也是路由器基本功能;多協議路由器還可以連接使用不同通信協議的網絡段,成為不同通信協議網絡段之間的通信平臺。

一般來說,路由器的主要工作是對數據包進行存儲轉發,具體過程如下:

第一步:當數據包到達路由器,根據網絡物理接口的類型,路由器調用相應的鏈路層功能模塊,以解釋處理此數據包的鏈路層協議報頭。這一步處理比較簡單,主要是對數據的完整性進行驗證,如CRC校驗、幀長度檢查等。

第二步:在鏈路層完成對數據幀的完整性驗證后,路由器開始處理此數據幀的IP層。這一過程是路由器功能的核心。根據數據幀中IP包頭的目的IP地址,路由器在路由表中查找下一跳的IP地址;同時,IP數據包頭的TTL(Time To Live)域開始減數,并重新計算校驗和(Checksum)。

第三步:根據路由表中所查到的下一跳IP地址,將IP數據包送往相應的輸出鏈路層,被封裝上相應的鏈路層包頭,最后經輸出網絡物理接口發送出去。

簡單地說,路由器的主要工作就是為經過路由器的每個數據包尋找一條最佳傳輸路徑,并將該數據包有效地傳送到目的站點。由此可見,選擇最佳路徑策略或叫選擇最佳路由算法是路由器的關鍵所在。為了完成這項工作,在路由器中保存著各種傳輸路徑的相關數據——路由表(Routing Table),供路由選擇時使用。上述過程描述了路由器的主要而且關鍵的工作過程,但沒有說明其它附加性能,例如訪問控制、網絡地址轉換、排隊優先級等。

ARP全稱 地址解析協議在局域網內信息是以幀傳輸的。要記住地址就要有一個ARP緩存表,大概是幾分鐘刷新一次我忘記了。存的就是當前局域網內與你連接的機器的IP和MAC的地址ARP—a就可以查看到這個表。第一個是IP。第二個是網卡地址。第三個是連接類型。
交換機如何學習MAC地址的????????
假設一個交換機剛剛啟動,MAC表完全是空的,局域網內有兩臺主機PC1和PC2,IP地址為192.168.0.1和192.168.0.2:那么交換機接到1端口的PC1的第一個數據幀,因為PC1只知道PC2的IP地址而不知道PC2的MAC地址,所以源IP地址為192.168.0.1源MAC地址是0000-0000-0001,目標IP地址為192.168.0.2而目標MAC地址是FFFF-FFFF-FFFF(此報文為ARP請求報文,是二層廣播報問),交換機首先將源MAC地址和相對應的端口記錄在MAC表中,然后把這個數據幀從所有活動的端口轉發出去,;假設PC2在2端口接收到數據幀對數據進行回應時,則目標MAC地址為0000-0000-0001源MAC地址為0000-0000-0002。此時交換機收到數據幀后,首先學習PC2的MAC地址和對應端口到MAC表,然后查找MAC地址表中是否有PC1的MAC地址,發現目標MAC地址對應端口1,則將此數據幀由交換機的1端口轉發出去。此時PC1和PC2的MAC地址都已記錄在交換機MAC表中,數據在開始正常轉發。所以,交換機在轉發數據幀的過程,就是查找目標MAC地址,學習源地址的過程,希望你能理解!

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

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

相關文章

Java的四種引用,強弱軟虛,用到的場景(轉+補充)

Q1:引用隊列是什么?如何使用?使用的場景有哪些? A1:oracle的api文檔的描述: https://docs.oracle.com/javase/7/docs/api/java/lang/ref/ReferenceQueue.htmlReference queues, to which registered reference objects…

C# lambda表達式與匿名方法

文章目錄匿名方法Lambda表達式實例實例博主寫作不容易,孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 C#中的匿名方法是在C#2.0引入的,它終結了聲明委托的唯一方法是使用命名方法的時代。在C#更高版本中,Lambda表達式取代了匿名方法&a…

LINUx打包命令匯總

.tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是壓縮!) ——————————————— .gz 解壓1:gunzip FileName.gz 解壓2:…

常用的相似度計算

在數據分析和數據挖掘的過程中,我們經常需要知道個體間差異的大小,進而評價個體的相似性和類別。最常見的是數據分析中的相關分析,數據挖掘中的分 類和聚類算法,如K最近鄰(KNN)和K均值(K-Means&…

玩轉C#窗體-屬性、方法和事件詳細說明

文章目錄簡介Windows窗體的基本屬性一、布局屬性1、StartPosition屬性2、Location屬性3、尺寸屬性4、WindowsState屬性5、Autoscroll屬性6、AutoSize屬性二、樣式屬性1、ControlBox屬性2、MaximizeBox屬性3、MinimizeBox屬性4、HelpButton屬性5、ShowIcon屬性6、Icon屬性7、Sho…

for循環和數組練習

//公雞2文&#xff0c;母雞1文&#xff0c;小雞半文&#xff0c;每種至少一只&#xff0c;100文買100只雞有多少種可能var ci 0; for(var g1;g<50;g){for(var m1;m<100;m){for(var x1;x<100;x){if(g*2m*1x*(0.5)100&&gmx100){ci1;console.log("買公雞&qu…

CMD下查看路由表

在cmd下面輸入route print 就可以查看路由表 如何讀懂路由表如何讀懂路由表 源碼:--------------------------------------------------------------------------------Active Routes: Network Destination Netmask Gateway Interface M…

c# automapper 使用

一、最簡單的用法 有兩個類User和UserDto 1 public class User2 {3 public int Id { get; set; }4 public string Name { get; set; }5 public int Age { get; set; }6 }7 8 public class UserDto9 { 10 public string Na…

js正則歸納

/* * 正則的緩存區 * 一、 var numadb1122;var reg/(\d)\1(\d)\2/gi;console.log(num.match(reg));//[ 1122 ]二、普通字符&#xff1a;a b c 1 2 3 特殊字符&#xff1a;\d \w \D //w d 是什么三、元字符中限定符* &#xff1a; 匹配0到多 &#xff1a; 匹配1到…

洛谷 P1469 找筷子

題目描述 經過一段時間的緊張籌備&#xff0c;電腦小組的“RP餐廳”終于開業了&#xff0c;這天&#xff0c;經理LXC接到了一個定餐大單&#xff0c;可把大家樂壞了&#xff01;員工們齊心協力按要求準備好了套餐正準備派送時&#xff0c;突然碰到一個棘手的問題&#xff0c;筷…

玩轉C#控件-常用控件屬性

文章目錄概述Control類的基本屬性1、Name屬性2、Text屬性3、Anchor屬性4、Dock屬性Control類的方法和事件博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 概述 控件是包含在窗體上的對象&#xff0c;是構成用戶界面的基本元素&#xff0c;也是…

LazyT 提供對延遲初始化的支持

延遲初始化 就是在第一次使用的時候在 進行類的初始化 public class Student{public Student(){this.Name "DefaultName";this.Age 0;Console.WriteLine("Student is init...");}public string Name { get; set; }public int Age { get; set; }} public…

264標準中高復雜度的三方面

一、運功估計搜索 二、碼率控制 三、濾波算法 在264中&#xff0c;這三方面占據了絕大部分的計算復雜度。具體原因或是優化的具體步驟有時間補上。

ie瀏覽器不支持多行隱藏顯示省略號

平時在寫頁面過程中&#xff0c;相信大家都遇到過文本顯示多行后用省略號代替的問題&#xff0c;來看看代碼&#xff1a; p{display: -webkit-box;overflow: hidden;text-overflow: ellipsis;-webkit-line-clamp:12;//表示顯示12行之后用省略號代替-webkit-box-orient:vertical…

API設計原則 - Qt官網的設計實踐總結

原文鏈接&#xff1a;API Design Principles - Qt Wiki 基于Gary的影響力上 Gary Gao 的譯文稿&#xff1a;C的API設計指導 譯文發在酷殼 - CoolShell&#xff1a;API設計原則&#xff0c; 2017-07-25 API設計原則 - Qt官網的設計實踐總結 &#x1f34e; 譯序 Qt的設計水準在業…

python帶參裝飾器的改良版

簡單點就是這種 def deco2(param1):def _deco2(fun):def __deco2(*args, **kwargs):print (param)fun(*args, **kwargs)return __deco2return _deco2deco2 # 錯誤的寫法 def f2(strx):print (strx)f2(hello) 運行上面這個&#xff0c;期待打印1和hello 實際上是不…

H.264邊緣塊進行幀內預測時,上邊緣和左邊緣塊的預測情況。

僅僅介紹上邊緣塊需要用到上面的像素&#xff08;不存在&#xff09;&#xff08;例如垂直模式&#xff09;&#xff0c;左邊緣快需要用到左邊的像素&#xff08;不存在&#xff09;&#xff08;例如水平模式&#xff09;的情況。 H.264 I幀邊緣塊的處理 I幀的第一個左上的邊緣…

P1021 郵票面值設計

P1021 郵票面值設計 題目描述 給定一個信封&#xff0c;最多只允許粘貼N張郵票&#xff0c;計算在給定K&#xff08;NK≤15&#xff09;種郵票的情況下&#xff08;假定所有的郵票數量都足夠&#xff09;&#xff0c;如何設計郵票的面值&#xff0c;能得到最大值MAX&#xff0c…

第七章:XAML vs. code(3)

屬性元素語法這里有一些C&#xff03;與第4章中的FramedText代碼相似。在一個語句中&#xff0c;它實例化一個Frame和一個Label&#xff0c;并將Label設置為Frame的Content屬性&#xff1a; new Frame {OutlineColor Color.Accent,HorizontalOptions LayoutOptions.Center,Ve…

QtCreator5.12.6安裝圖文教程

前言接觸過Qt的同學肯定用過QtCreator,本id最近常用&#xff0c;也就寫個教程記錄一下安裝的過程。可能比較少人學過Qt&#xff0c;感覺Qt還是挺不錯的&#xff0c;做出來的界面還算好看&#xff0c;關鍵是跨平臺。說明&#xff1a;安裝的系統&#xff1a;win10專業版QtCreator…