前端用到的技术 MUI+H5PLUS
后端用到的技术 Spring Boot netty
聊天内容的收发 用的netty
数据库用的MySQL和MariaDB
分布式文件图片服务器 用的nginx+fastdfs
持久层用的MyBatis
流的概念和作用
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
IO流的分类
- 根据处理数据类型的不同分为:字符流和字节流
- 根据数据流向不同分为:输入流和输出流
Netty 初识
1 netty是一个提供了易于使用的API的客户端/服务端框架
2 并发高-NIO(非阻塞IO)
3 传输快 零拷贝 (传统的传输方式 把数据从IO流中先读出来放到缓存中,再从缓存中放到堆栈中,数据经历了两次拷贝 造成资源浪费;而netty 在需要接受传输数据时,直接开辟一个新的堆内存,这样直接把IO中的数据存到堆中)
阻塞和非阻塞
线程访问资源时,该资源是否准备就绪的一种处理方式 非阻塞 类似于DMA
同步与异步
同步和异步是指访问数据的一种机制
BIO block IO 同步阻塞 缺点 并发处理能力低
NIO NewIO同步非阻塞IO
AIO 异步非阻塞IO
生活实例
BIO NIO AIO的区别
面试题
再看Netty
提供了三个Reactor线程模型
1 单线程模型 : 所有的IO操作都由一个NIO线程处理 (适用于小型的应用场景)
2 多线程模型 : 由一组NIO线程处理IO操作
3 主从线程模型 : 一组线程池接受请求,一组线程池处理IO