1. 程式人生 > >《實戰java程式設計---下》

《實戰java程式設計---下》

TCP和UDP協議

TCP和UDP協議是傳輸層的兩種協議。Socket是傳輸層提供給應用層的程式設計介面。

TCP:在網路通訊中,TCP方式就類似於撥打電話,使用該方式進行網路通訊時,需要建立專門的虛擬連線,然後進行可靠的資料傳輸,如果資料傳送失敗,則客戶端會自動重發改資料。

UDP:UDP的方式就類似於發簡訊,使用這種方式進行網路通訊時,不需要建立專門的虛擬連線,傳輸也不是很可靠,如果傳送失敗則客戶端無法獲得資料。

這兩種傳輸方式都在實際的網路程式設計中使用,重要的資料一般使用TCP方式進行資料傳輸,而大量的非核心資料則可以通過UDP方式進行傳輸,在一些程式中甚至結合使用這兩種方式進行資料傳輸。

由於TCP需要建立專用的虛擬連線並確認傳輸是否正確,所以使用TCP方式的傳輸速度稍微慢一些,而傳輸時產生的資料量也要比UDP大。

【總結】TCP是面向連線的,傳輸資料安全、穩定,效率相對較低。UDP是面向無連線的,傳輸資料不安全,但效率較高。

TCP協議:三次握手*Three-way-Handshake)

TCP(Transfer Control Protocol)在建立連線時分為三步:

(1)請求端(客戶端):傳送一個包含SYN(Synchronize)標誌的TCP報文,SYN同步報文會指明客戶端使用的埠以及TCP連線的初始序列號。

(2)服務端在收到客戶端的SYN報文後,將返回一個SYN+ACK報文,表示客戶端的請求被接受。同時TCP序號被加1,ACK即確認(Acknowledgement)。

(3)客戶端返回一個確認報文ACK給伺服器端,同樣TCP序列號被加1,至此一個TCP連線完成。然後開始通訊,資料處理。

UDP協議:(資料報通訊方式)

每個資料傳送單元被統一封裝成資料報包的方式,傳送方將資料報包傳送到網路,資料報包在網路中去尋找它的目的地。

1、請求-響應模式:

在“請求-響應”模式中,Socket類用於傳送TCP訊息;ServerSocket類用於建立伺服器。

套接字Socket是一種程序間的資料交換機制。這些程序既可以在同一機器上,也可以通過網路連線的不同機器上。換句話說,套接字起到了通訊端點的作用。單個套接字是一行資料交換。一旦建立套接字連線,資料即可在相同或不同的系統中雙向或者單向傳送,直到其中一個端點關閉連線。套接字與主機地址和埠地址相關聯。主機地址就是客戶端或伺服器程式所在主機的IP地址。埠地址是指客戶端或伺服器程式使用的主機的通訊埠。

在客戶端和伺服器中,分別建立獨立的Socket,並通過Socket的屬性將兩個Socket進行連線,這樣,客戶端和伺服器通過套接字所建立的連線即可使用輸入輸出流進行通訊。

通過Socket的程式設計順序:

  1. 建立伺服器ServerSocket。在建立時,定義ServerSocket的監聽埠(在這個埠接收客戶端發來的訊息)。
  2. ServerSocket呼叫accept()方法,使之處於阻塞狀態。
  3. 建立客戶端Socket,並設定伺服器的IP地址及埠。
  4. 客戶端發出連線請求,建立連線。
  5. 分別取得伺服器和客戶端Socket的InputStream和OutputStream。
  6. 利用Socket和ServerSocket進行資料傳輸。
  7. 關閉流及Socket。

UDP通訊程式設計基本步驟:

  • 建立客戶端的DatagramSocket。建立時,定義客戶端的監聽埠。
  • 建立伺服器端的DatagramSocket。建立時,定義伺服器端的監聽埠。
  • 在伺服器端定義DatagramPacket物件,封裝待發送的資料包。
  • 客戶端將資料報包傳送出去。
  • 伺服器端接收資料報包。

反射機制:

java反射機制是java語言一個很重要的特性,是java“動態性”的重要體現。反射機制可以讓程式在執行時載入編譯器完全未知的類,是設計的程式更加靈活、開放。但是反射機制的不足之處會大大降低程式執行的效率。

動態語言:是指在程式執行時,可以改變程式結構或變數的型別。典型的動態語言有:Python、Ruby、JavaScript。。。

java反射機制的本質和Class類:

學習反射機制基本上就等同於學習Class類的用法。java反射機制讓我們在程式執行狀態中,對於任意一個類,都能知道該類的所有屬性和方法,對於任意一個物件,都能夠呼叫它的任意一個方法。這種動態獲取以及動態呼叫物件方法的功能就是“java的反射機制”。

核心設計模式:

設計模式(design pattern)是一套被反覆使用、多數人知曉且經過分類編目的程式碼設計方法。使用設計模式時為了重用程式碼,使程式碼更容易被他人理解,保證程式碼的可靠性。使程式碼的編制真正實現了工程化。

GoF23設計模式:

【老鳥建議】學習設計模式,不在於死記硬背,而在於通過學習來更深刻的理解面向物件思想,掌握新的思維方式,體驗經典設計之美。

GoF23設計模式

建立型模式

結構型模式

行為型模式

抽象工廠模式

工廠方法模式

單例模式

建造者模式

原型模式

介面卡模式

橋接模式

組合模式

裝飾模式

外觀模式

享元模式

代理模式

責任鏈模式

直譯器模式

模板方法模式

命令模式

迭代器模式

中介者模式

備忘錄模式

觀察者模式

狀態模式

策略模式

訪問者模式

用於建立物件

用於組織物件和類

關注物件之間的互動、相互通訊和協作