
[TOC]
## 一、課程介紹
學習本課程,你將收獲:
- 輕松理解Socket編程中的核心概念及應用場景;
- 快速而整體掌握Socket中的在項目中的實際應用案例;
- 解讀并通過編碼實現交通部905.4-2014數據交換協議核心邏輯;
- 學習如何設計并實現一套TCP協議;
- 從NIO到Netty的實戰入門。
你好,我是子涵,大學主修通信工程,互聯網公司工作近8年,現任上市公司軟件技術架構師一職。經過多年的摸爬滾打,深深的體會到學習編程的最好方式就是通過項目歷練,才能更好的“打怪升級”。
子涵認為,作為一個IT人,對技術的關注點除了從SSH、SSM等基礎框架的駕馭,還應更多的落腳在多線程、并發處理、NIO及Socket技術上,因為這些技術是開發Java高性能服務器必須要掌握的,而且一些第三方的優秀框架往往也離不開這些技術。
### 實戰案例
這個技術小冊,我們選取了一個用于出租車行業數據收集標準——**905.4-2014**協議。它是交通運輸部公路科學研究院起草定制的一個協議標準,也是基于TCP之上的一個應用層傳輸協議。
### 課程特點
你想閱讀本案例中存在的故事嗎?為了讓大家收獲滿滿,也為了讓大家輕松愉快的學習,在本次的實踐案例中,子涵先生用代碼講述了一個工人階級家庭在大社會的車輪下,努力拼搏、可歌可泣故事。
!](images/screenshot_1666707987158.png)
### 章節介紹
- 第1章,先從整體一下我們可以從案例中學到什么,以及在案例中的用到了哪些技術。
- 第2章,介紹在Socket編程過程中一些基礎知識,讓大家建立起對這塊知識內容的一個整體輪廓;
- 第3章,結合905.4-2014協議的基本內容,動手實現NIO長連接服務端的實現,以及協議內容的設計和實現思路;
- 第4章,實現長連接客戶端,以及采用多線程技術進行系統性能測試;
- 第5章,介紹Netty相關基礎知識,并使用Netty實現長連接服務端的編碼;
- 第6章,同步結果可視化,做好系統、業務數據監控;
- 第7章,提供付費用戶的售后服務,做好長期維護。
### 適用人群
- 具有一定的Java開發基礎;
- 學習Java開發領域Spring框架之外的東西;
- 想快速通過實戰項目提升個人能力的同學。
- 想通過實戰入門NIO、Netty。
## 二、為什么要寫這么一個小冊?
首先基于Netty實現socket數據的同步,在Java開發領域中,這樣的業務場景是相對比較冷門的。剛接觸這樣的項目的時候,雖然在網上也能找到一些材料,但這些材料要么偏重于理論知識的講解,要么只是實戰的“只言片語”,而且業務相對匹配度不高,因此很難找到高質量、系統的實戰文檔。
我已經經歷了摸著石頭過河的這個階段,我深知這個過程如果沒有相關的經驗會非常坎坷,往往就是走錯了方向到最后才醒悟,甚至會嚴重打擊自信心。因此我產生一個念頭,我要把這塊協議的設計思想、協議的實現框架要做一次整理。我相信在未來的某個時刻,能對某些有緣的小伙伴有所幫助。
## 三、為什么要付費?
這個小冊雖然是我本人整理的第一個技術小冊,但傾注了個人較大的精力。從文檔的編寫、協議的解讀、代碼的編寫,都是為了盡力讓讀者閱讀起來更加順暢。也許你會注意到,你正在看的這篇文檔是看云上排版最“**美麗**”的文檔。
另外,我相信這個小冊是可以幫助你快速構建一個可以運行的Netty數據解析服務的,如果你正好面臨的也是相似的業務場景,請告訴你的老板,我相信你的老板一定會**欣喜若狂**的。
>[danger] 時間就是金錢。在企業生存法則中,時間更是大把的金錢。
## 四、結束語
1. 多思考,多問為什么,尤其一些重要概念,不能人云亦云,得先說服自己,再說服別人;
2. 網絡編程是中高程序員繞不過的坎,與其把難的留到最后,不妨試試讓子涵先帶你入門。
> 作者:子涵仙人 個人博客:https://blog.csdn.net/l714417743
> 關注微信公眾號:碼山有道


- 第一章 開篇寄語
- 1-1 技術選型要點
- 1-2 認識905.4王國的交流規范
- 1-3 聯系作者
- 第二章 Socket編程的基礎知識
- 2-1 Socket家族的基石
- 2-2 byte數組基礎
- 2-3 緩沖區基礎
- 2-4 NIO Socket通訊的工作原理
- 第三章 905.4規范解讀
- 3-1 基于通道選擇器的Socket長連接及消息讀寫框架
- 3-2 嚴格的信件收發員
- 3-3 負責消息處理的一家子
- 3-4 負責認證的大兒子(AuthWorker)
- 3-5 啞巴老二(PingWoker)
- 3-6 勤奮的定位匯報員老三(LocationReportWorker)
- 3-7 精明的老四(BusinessReportWorker)
- 3-8 數據檢察官——CRC16-CCITT校驗
- 3-11 數據的加密官
- 3-12 頭尾標識轉義
- 第四章 測試方法
- 4-1 測試數據樣例
- 4-2 客戶端鏈路保持功能實現
- 4-3 使用Socket短連接進行功能測試
- 4-4 NIO服務端性能分析
- 4-5 http測試方法(推薦)
- 第五章 從NIO到netty
- 5-1 編程進階——Netty核心基礎
- 5-2 Netty使用常見問題
- 5-3 使用Netty重寫Server端
- 5-4 Netty之鏈路管理
- 5-5 netty堆外內存泄漏如何應對?
- 第六章 統計與監控
- 6-1 Grafana監控面板
- 第七章 售后服務
- 7-1 勘誤與優化
- 7-2 獲取源碼