[TOC]
## 一、服務端框架選型
> 服務端所對應的平臺為**上級平臺**。
本項目中使用到的主要技術棧有:
- Springboot
- Mybatis-plus
- Redis
- NIO
- Netty
- Maven
- Mysql
- MongoDB
### 設計模式
> 設計模式就如同運行在905.4王國的一項鐵律,它使這個王國的成員緊密相連而各有分工,據說這項規則還能讓未來的時代隨時擁抱變化。
采用恰當的設計模式,實現消息的接收、處理、回復過程,使后期維護過程中代碼更容易擴展。
### 小冊閱讀方法
方式一: 按照小冊提供的代碼結構新建相應的代碼文件。適合有一定Spring框架基礎的朋友,有一定的開發經驗,如熟悉maven包管理機制;
方式二:聯系作者獲取源碼,開箱運行,對照小冊了解設計原委。
> 可以重點關注一下第四章,首先了解清楚項目是怎么跑的,實現了什么功能。再來配合代碼debug和開發文檔,深入學習代碼實現思路。
### 傳統NIO與Netty,誰與爭鋒
本冊的內容分別用NIO和Netty作為服務端的實現,在理解NIO底層的基礎上,我們再使用Netty對服務端進行了實現。我們可以從兩者的性能、易用度多方位獲得較為深刻的體驗。
### 關于數據存儲
關于數據持久化,本小冊沒有做相應功能。對于學習協議的同學,可以使用mysql用來存儲所有的業務數據;**對于生產應用的同學,建議在數據存儲上要做好選型**。
對于生產環境存儲引擎,我給出的建議是:
- 定位數據存儲到MongoDB中,因為定位數據量真的太大了,出租車們無時無刻不在推送著定位數據;MongoDB在分布式存儲、擴容方面有著不錯的優勢。
- 訂單數據這塊比較接近用戶的業務場景,所以建議存儲在Mysql中。
## 二、扯點學習方法
### ??**高效記憶的根本是“聯系”**
不成體系的知識是松散的,人高效記憶的根本是“聯系”。你可了解過各種世界記憶大師,他們的高效記憶方法中用到了很多聯想、關聯的方法,把復雜、沒有關系的內容進行了聯想并進行了關聯,以致于簡化了記憶的內容本身,從而達到高效記憶的效果。
當然,我們IT人面臨的技術棧是日新月異的,采用記憶的方式來來構建知識體系是遠遠不正確的,正確的方法應該是在理解其核心——**思維方式**的基礎之上,**構建由聯系組成的網狀知識體系**。當今IT技術的發展仍然沒有脫離**馮·諾依曼**的架構體系。
### ??**體系化的認識讓我們更有譜**
不知廬山真面目,人的內心是虛的,你甚至不知道下一次你會遇到怎樣的困難,當然也就不知道自己的弱項是什么。因此,針對學習一個技術棧的時候,最好先找到這個技術棧的“目錄”,先學著去了解它的結構。
本冊注重實戰,一直基礎的知識并沒有作詳細的闡述,但子涵會提供配套知識點思維導圖給大家,以讓大家能對知識脈絡有清楚的認識。
### ??技術思維導圖分享
關于本篇相關的技術棧,我整理了對應的思維導圖。
| 主題 | 推薦指數 |備注|
| --- | --- | --|
|[Netty](http://naotu.baidu.com/file/86a6b68d1d2f24602b3d031d41a31678?token=8607cf04b26bd603)|?????| Netty學習材料整理
|[mysql](http://naotu.baidu.com/file/925ca34111e88e4b99268b23d2e19376?token=7038d27abe5b56b4)|?????|mysql實戰基礎與學習資料整理
|[redis](http://naotu.baidu.com/file/1ac6866a89587a9863a724514a73ed43?token=c14d8c33aef9e834)|?????|基礎框架與實戰案例|
>[warning] 讓我們快速構建可運行的905數據解析服務。???
- 第一章 開篇寄語
- 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 獲取源碼