[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 获取源码