【闪电侠学netty】第2章 Netty是什么
【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是什么相关推荐
- 【闪电侠学netty】第7章 数据载体ByteBuf的介绍
[Netty]读书笔记 - 跟闪电侠学netty 1. 内容概要 1.1 总结 1.1.1 内存管理 Netty 使用的是堆外内存,需要手动释放,使用引用计数的方式管理内存,当引用计数 =0,回收By ...
- 【闪电侠学netty】第1章 即时聊天系统简介
[Netty]读书笔记 - 跟闪电侠学 1. 内容概要 1.1 单聊流程图 1.2 单聊的指令流程图+指令集 1.3 群聊流程图 1.4 群聊的指令流程图+指令集 1.5 Netty核心知识点+客户端 ...
- 【闪电侠学netty】第6章 客户端与服务端双向通信
[Netty]读书笔记 - 跟闪电侠学netty 1. 内容概要 1.1 本节实现功能 客户端:连接服务器,之后向服务器发送数据 服务端:接收数据后打印,并向客户端发送数据 1.2 本节知识点 1.2 ...
- 【闪电侠学netty】第8章 客户端与服务端通信协议编解码
[Netty]读书笔记 - 跟闪电侠学 1. 内容概要 1.1 总结 1.1.1 编码与解码定义 编码:把java对象根据协议封装成二进制数据包的过程 解码:从二进制数据包中解析出Java对象的过程 ...
- 【闪电侠学netty】第5章 客户端启动流程
[Netty]读书笔记 - 跟闪电侠学 1. 内容概要 1 客户端启动Demo 启动客户端步骤 Step1:线程模型,服务器引导类Bootstrap Step2:IO 模型 Step3:IO 处理逻辑 ...
- 【闪电侠学netty】第4章 服务端启动流程
[Netty]读书笔记 - 跟闪电侠学 1. 内容概要 1 服务端启动最小化代码 启动服务器步骤 Step1:线程模型,服务器引导类ServerBootstrap Step2:IO 模型 Step3: ...
- 【闪电侠学netty】第3章 Netty开发环境配置
[Netty]读书笔记 - 跟闪电侠学 1. 内容概要 主要是工具的安装和使用(省略) 1 Maven 2 Git 3 IntelliJ IDEA 需要了解的客官请购买书籍,或自行CSDN
- Netty源码分析第1章(Netty启动流程)----第4节: 注册多路复用
Netty源码分析第1章(Netty启动流程)---->第4节: 注册多路复用 Netty源码分析第一章:Netty启动流程 第四节:注册多路复用 回顾下以上的小节, 我们知道了channe ...
- 【Netty】第二章 网络编程和 IO 概念剖析
[Netty]第二章 网络编程 文章目录 [Netty]第二章 网络编程 一.网络编程 1.模拟阻塞模式下服务器单线程处理请求 2.模拟非阻塞模式下服务器单线程处理请求 3.使用 Selector 改 ...
最新文章
- Apache与Tomcat 区别联系​
- 清华 | 量化卷积神经网络加速芯片
- JAVA中 fastjson判断JSONObject是否为空,方法isEmpty()
- git从入门到精通(四)(删除本地标签,删除远程标签)
- 基于Docker部署LNMP架构
- python用什么软件编程-python开发用什么编辑器
- 【算法】普通方法和筛选法求素数
- Docker 数据管理
- 博客经常出现保存博文失败
- SQL开发技巧(二)
- 备考OCJP认证知识点总结(三)
- 签到太麻烦?全自动一键签到网易云音乐,b站,京东,百度贴吧等网站
- 浏览网页隐藏图片 html,Html、Js实现网页图片切换及隐藏
- 保研杂记(上)心灵鸡汤篇
- 孪生网络 应用_数字孪生照进现实,Unity如何打造数字世界的基础设施?
- 几款强力压缩打包软件
- PMP/CAPM/PgMP/ACP考试报名资格
- 计算机在摄影应用,计算机X线摄影在临床中的应用
- 关于SQL_Errno1677导致主从复制中断处理
- 案例爬取(其一):url获取
热门文章
- 【NVIDIA Xavier NX入坑记录3】NVIDIA Xavier NX刷机后的基建记录
- 中文分词预处理之N最短路径法小结(转)
- html中button通过自定义属性传值
- 转贴:路逢劍客須呈劍,不是詩人莫獻詩
- nginx 如何自定义域名配置反向代理
- 穿上一件小白裙,就是我喜欢夏日的理由
- 20多岁的年轻人在2014年该做的9件事
- NodeJS知识点梳理-第二篇
- [英语]英文报刊常用术语
- 东莞第七高级中学2021高考成绩查询,在高级,遇见最好的自己 ——记东莞高级中学2020-2021学年开学典礼...