SpringBoot仿微信项目(一)---基础知识

前端用到的技术 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

      

 

posted @ 2018-12-24 10:19  ThinkInPakho  阅读(599)  评论(0编辑  收藏  举报