1、TCP和UDP 有什么區別? TCP為什么是三次握手,而不是兩次?
tcp 就像打電話,面向連接的,點對點進行通訊的,高可靠的,效率比較低,占用資源比較多, 舉幾個例子:檔案傳輸(準確高要求高、但是速度可以相對慢)、接受郵件、遠程登錄
三次握手 好比 A: 你在嗎 B:我在 A:我來了 然后 建立連接 四次揮手, A : 我要走了 B: 你要走了嗎 B:你真的要走了嗎 A:我真的要走了
UDP 好比發短信或者廣播,不需要連接,發送方不管接收方有沒有轉備好,直接發訊息; 特點: 傳輸不可靠,有可能造成訊息丟失,效率高,協議簡單,占用資源少.
舉幾個例子:QQ聊天、在線視頻、網路語音電話(即時通訊,速度要求高,但是出現偶爾斷續不是太大問題,并且此處完全不可以使用重發機制)、廣播通信(廣播、多播)
2、java有哪幾種IO模型?有什么區別?
BIO 同步阻塞IO

客戶端發起請求,創建一個執行緒去請求服務器,同事客戶端等待服務器回傳,拿到結果,請求結束,
NIO 同步非阻塞IO
客戶端發起請求,服務端通過選擇器調度(管家)去執行,拿到結果,請求結束
對服務端來說再多的客戶端,對應要處理的執行緒也只有一個,解決了執行緒創建資源浪費的情況
AIO 異步非阻塞IO JDK7 開始支持的
客戶端發起請求,服務端創建佇列接收請求,此時客戶端不用等待,服務端處理完成,發送到佇列,客戶端監聽到結果,完成請求,
區別: BIO可靠性差,吞吐量性能低,適用于連接少的場景,JDK1.4之前的選擇,
NIO 可靠性好,吞吐性能高,適用于連接比較多,連接比較短的場景,例如聊天室
AIO 可靠性最好,吞吐量最高,適用于連接比較多,并且連接比較長的場景,比如(相冊服務器)
3、java Nio的幾個核心組件是啥?分別有什么作用

客戶端發起請求,通過buffer組件,進入當前對應的Channel,然后到Selector,通知服務端去調度一個空閑的執行緒去處理當前請求,
Channel 每個Channel 對應一個buffer ,Channel會注冊到Selector上,
Selector Selector會根據Channel上發生的讀寫事件,將請求交由給某個空閑的執行緒
Buffer 用來存訊息 Buffer 和 Channel 都是可讀可寫的,
4、Selector 中select、poll 和epoll 的區別?
select 、poll 和epoll 是NIO中多路復用的三種實作機制,是由linux作業系統提供的,
用戶空間 和內核空間:作業系統為了保護系統安全,將內核劃分為兩個部分,一個是用戶空間,一個是內核空間
6、描述下HTTP和HTTPS的區別?
http: 是互聯網參考最廣泛的一種網路通信協議,基于TCP,可使用瀏覽器作業更為高效,減少網路傳輸,
HTTPS: 是http的加強版,可以認為是HTTP+SSL,在HTTP的基礎上增加一系列的安全機制,一方面保證資料安全,另一方面對訪問者增加了驗證機制,目前架構下最為安全的解決方案,
主要區別:
1、http簡單 無狀態,HTTPS的資料是經過證書加密的,安全性更高,
2、埠不同 http默認80,https默認443
HTTPS的缺點:
1、https的握手協議比較費時,所以會影響服務的回應速度以及吞吐量,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/278449.html
標籤:其他
下一篇:一文讀懂執行緒池的實作原理
