JAVA工程師必學技能,進階&漲薪的推進器!這份實戰教程請收下
Netty 作為互聯網中間件的基石,是 JAVA 工程師進階為高級程序員必備的能力之一。也是目前是互聯網中間件領域使用最廣泛最核心的網絡通信框架。
Netty是一個高性能、異步事件驅動的NIO框架,它提供了對TCP、UDP和文件傳輸的支持;無論是在互聯網領域、分布式計算領域,還是通信行業,遊戲領域都有廣泛的應用。
今天給大家介紹的這個教程,跟你平時學習的教程不太一樣。這是一個通過實戰操作來學習Netty的教程。會用由淺入深的概念+代碼的方式,快速讓人理解並上手Netty。
因為這項技能對於JAVA工程師是非常重要的技能,學習也需要一定的基礎。簡單的東西沒有太大價值。你需要是這樣的人:
有基礎的Java開發能力,自我突破的強烈欲望;具有一定Java網絡編程能力,想要了解入門Netty。
知識點如下:
1:IO 基礎入門
2:JAVA 網絡編程
3:netty 入門
4:TCP 粘包/拆包
5:netty 編解碼器
6:序列化傳輸
7:HTTP 服務器開發
8:深入 Netty ByteBuf
所以基本上,如果用心學完的話,收獲還是會非常大的:Linux 網絡模型/JAVA 原生網絡編程/Netty 網絡編程/HTTP 協議以及 HTTP 服務器的開發。
好啦廢話不多少,上教程地址:>> http://t.cn/EozjS6O。
對於網絡編程不熟悉的同學,也可以先了解下網絡 I/O 的基本概念:
先來說說什麽是 I/O。根據維基百科的定義,I/O 指的是輸入輸出,通常指數據在內部存儲器和外部存儲器或其他周邊設備之間的輸入和輸出。簡而言之,從硬盤中讀寫數據或者從網絡上收發數據,都屬於 I/O 行為。
Linux 系統將所有的外部設備都看作一個文件來看待,所有打開的文件都通過文件描述符(簡稱 fd)來引用。而對一個 socket 的讀寫也會有相應的描述符,稱為 socket 描述符(簡稱 socketfd)。描述符是一個非負整數,它指向內核中的一個結構體,由系統內核返回給進程。
在 Linux 內核中,I/O 操作通常包含兩個階段:
內核等待數據準備好
從內核復制數據到進程中
根據在這兩個階段的不同處理,Linux 提供了以下 5 種不同的 I/O 模型:
阻塞 I/O 模型
非阻塞 I/O 模型
I/O 復用模型
信號驅動式 I/O 模型
異步 I/O 模型
下面以 linux socket 編程的 recvfrom 函數作為系統調用來說明 I/O 模型。recvfrom 函數類似於標準的 read 函數,它的作用是從指定的套接字中讀取數據報。recvfrom 會從應用進程空間運行切換到內核空間中運行,一段時間後會再切換回來。
阻塞 I/O 模型:最常用的 I/O 模型是阻塞 I/O 模型,也是最簡單的模型,示意圖如下:
為什麽選擇Netty?
使用JDK自帶的NIO需要需要掌握很多復雜概念,代碼出錯率較高。
Netty底層IO模型,通過簡單的參數更改、調節等,就可以直接從NIO模型變身為IO模型。
Netty的拆包解包,異常檢測等機制讓你從NIO的細節中解放,只專註於關心業務邏輯。
Netty底層對線程,selector做了較多細節優化,reactor線程模型可做到高效並發處理。
Netty社區活躍,遇到問題隨時郵件列表或者issue。
Netty已經歷各大rpc框架,消息中間件,分布式通信中間件線上的廣泛驗證,健壯性強大。
相關推薦
50個Python練手項目,拿去過冬吧!
10個不到500行代碼的超牛Python練手項目
10個精彩Python視頻教程整理,10種新技能輕松Get!
30本Python學習參考書,從入門到大師全了!
大牛推薦的10本學習Java必看書
如何開始使用Java機器學習
再別說找不到C++練手項目,這20個拿去不謝!
JAVA工程師必學技能,進階&漲薪的推進器!這份實戰教程請收下