【Netty】读书笔记 - 跟闪电侠学

1. 内容概要

2.1 IO编程

1. 什么是IO编程?

  • Input Stream :数据从外面(磁盘、网络)流进内存
  • Output Stream:数据从内存流到外面去
  • IO编程:内存和磁盘/网络交互数据的编程

2.2 NIO编程

1. 什么是NIO编程?

  • NIO:new input/output
IO NIO
线程 一个连接一个线程

两个(均在服务器端)

serverSelector:轮询是否有新的连接

clientSelector:轮询连接是否有可读数据

读写 面向流Stream 面向Buffer
读写效率 低:一次性只能从流中读取一个或多个字节 高:任意读取任何数据
缓存数据 需要自己缓存 无须缓存,移动指针读写

2.3 Netty编程

1. 什么是Netty?

  • 异步事件驱动的网络应用架构
  • 封装JDK的NIO,使用更方便

2. Netty不使用原生NIO的原因?

  • 简易性:原生NIO需要了解概念太多,API反人类,编程复杂,易出错
  • Netty底层NIO和IO模型随意切换
  • 自带拆包/粘包,异常检测等机制,程序员只需关心业务逻辑
  • 解决JDK的BUG,如空轮询
  • Reactor线程模型高效的并发处理
  • 自带各种协议栈:无须自己实现
  • 社区活跃
  • 健壮性:经历各大RPC框架、消息中间件、分布式通讯中间件的广泛验证

3. netty maven依赖 + Java 快速入门

点击进入

2. 心得

  • Netty完美封装NIO,代码优雅
  • Netty几乎不用操心网络通讯性能问题,尽情地让Netty榨干你的CPU吧。这句话不理解,后面再更新这里的心得

【闪电侠学netty】第2章 Netty是什么相关推荐

  1. 【闪电侠学netty】第7章 数据载体ByteBuf的介绍

    [Netty]读书笔记 - 跟闪电侠学netty 1. 内容概要 1.1 总结 1.1.1 内存管理 Netty 使用的是堆外内存,需要手动释放,使用引用计数的方式管理内存,当引用计数 =0,回收By ...

  2. 【闪电侠学netty】第1章 即时聊天系统简介

    [Netty]读书笔记 - 跟闪电侠学 1. 内容概要 1.1 单聊流程图 1.2 单聊的指令流程图+指令集 1.3 群聊流程图 1.4 群聊的指令流程图+指令集 1.5 Netty核心知识点+客户端 ...

  3. 【闪电侠学netty】第6章 客户端与服务端双向通信

    [Netty]读书笔记 - 跟闪电侠学netty 1. 内容概要 1.1 本节实现功能 客户端:连接服务器,之后向服务器发送数据 服务端:接收数据后打印,并向客户端发送数据 1.2 本节知识点 1.2 ...

  4. 【闪电侠学netty】第8章 客户端与服务端通信协议编解码

    [Netty]读书笔记 - 跟闪电侠学 1. 内容概要 1.1 总结 1.1.1 编码与解码定义 编码:把java对象根据协议封装成二进制数据包的过程 解码:从二进制数据包中解析出Java对象的过程 ...

  5. 【闪电侠学netty】第5章 客户端启动流程

    [Netty]读书笔记 - 跟闪电侠学 1. 内容概要 1 客户端启动Demo 启动客户端步骤 Step1:线程模型,服务器引导类Bootstrap Step2:IO 模型 Step3:IO 处理逻辑 ...

  6. 【闪电侠学netty】第4章 服务端启动流程

    [Netty]读书笔记 - 跟闪电侠学 1. 内容概要 1 服务端启动最小化代码 启动服务器步骤 Step1:线程模型,服务器引导类ServerBootstrap Step2:IO 模型 Step3: ...

  7. 【闪电侠学netty】第3章 Netty开发环境配置

    [Netty]读书笔记 - 跟闪电侠学 1. 内容概要 主要是工具的安装和使用(省略) 1 Maven 2 Git 3 IntelliJ IDEA 需要了解的客官请购买书籍,或自行CSDN

  8. Netty源码分析第1章(Netty启动流程)----第4节: 注册多路复用

    Netty源码分析第1章(Netty启动流程)---->第4节: 注册多路复用 Netty源码分析第一章:Netty启动流程   第四节:注册多路复用 回顾下以上的小节, 我们知道了channe ...

  9. 【Netty】第二章 网络编程和 IO 概念剖析

    [Netty]第二章 网络编程 文章目录 [Netty]第二章 网络编程 一.网络编程 1.模拟阻塞模式下服务器单线程处理请求 2.模拟非阻塞模式下服务器单线程处理请求 3.使用 Selector 改 ...

最新文章

  1. Apache与Tomcat 区别联系​
  2. 清华 | 量化卷积神经网络加速芯片
  3. JAVA中 fastjson判断JSONObject是否为空,方法isEmpty()
  4. git从入门到精通(四)(删除本地标签,删除远程标签)
  5. 基于Docker部署LNMP架构
  6. python用什么软件编程-python开发用什么编辑器
  7. 【算法】普通方法和筛选法求素数
  8. Docker 数据管理
  9. 博客经常出现保存博文失败
  10. SQL开发技巧(二)
  11. 备考OCJP认证知识点总结(三)
  12. 签到太麻烦?全自动一键签到网易云音乐,b站,京东,百度贴吧等网站
  13. 浏览网页隐藏图片 html,Html、Js实现网页图片切换及隐藏
  14. 保研杂记(上)心灵鸡汤篇
  15. 孪生网络 应用_数字孪生照进现实,Unity如何打造数字世界的基础设施?
  16. 几款强力压缩打包软件
  17. PMP/CAPM/PgMP/ACP考试报名资格
  18. 计算机在摄影应用,计算机X线摄影在临床中的应用
  19. 关于SQL_Errno1677导致主从复制中断处理
  20. 案例爬取(其一):url获取

热门文章

  1. 【NVIDIA Xavier NX入坑记录3】NVIDIA Xavier NX刷机后的基建记录
  2. 中文分词预处理之N最短路径法小结(转)
  3. html中button通过自定义属性传值
  4. 转贴:路逢劍客須呈劍,不是詩人莫獻詩
  5. nginx 如何自定义域名配置反向代理
  6. 穿上一件小白裙,就是我喜欢夏日的理由
  7. 20多岁的年轻人在2014年该做的9件事
  8. NodeJS知识点梳理-第二篇
  9. [英语]英文报刊常用术语
  10. 东莞第七高级中学2021高考成绩查询,在高级,遇见最好的自己 ——记东莞高级中学2020-2021学年开学典礼...