网络编程
文章平均质量分 82
a919119690
加油
展开
-
Netty(四)
再来看看他是如何执行io任务和普通任务的,如何区分事件的呢,来看下面这段源码final int ioRatio = this.ioRatio;if (ioRatio == 100) { try { processSelectedKeys(); } finally { // Ensure we always run tasks. runAllTasks(); }} else { final long ioStartTi.原创 2021-08-15 15:24:35 · 177 阅读 · 0 评论 -
Netty(三)
下面来分析NioEventLoop首先我们得明确几个问题,NioEventLoop中都有什么NioEventLoop包含三个 selector、线程、任务队列下面来看看源码selector创建是在他的构造方法中有一段final SelectorTuple selectorTuple = openSelector();代码跟进去查看private SelectorTuple openSelector() { final Selector unwrappedSelect原创 2021-08-15 11:32:05 · 912 阅读 · 0 评论 -
Netty(二)
Netty源码分析先来一段测试的服务端和客户端代码方便我们debug跟踪源码(用的是netty-all-4.1.42版本)Netty-Serverpublic class NettyServer { public static void main(String[] args) throws InterruptedException { EventLoopGroup parentGroup = new NioEventLoopGroup(); EventL原创 2021-08-14 20:28:22 · 398 阅读 · 0 评论 -
粘包和半包
首先得知道什么是粘包和半包粘包就是我们客户端向服务器发送数据是出现的一种现象比如 发送的是 ab cd, 接收的却是abcd这种就叫粘包粘包的原因就是我们的tcp协议有一种叫做滑动窗口,那什么是滑动窗口呢,下面先来解释滑动窗口最初的TCP协议是,如图这种一问一答的形式,大家可想到这样效率太低了,所以就引入了新的,如下图设置一个窗口,打个比方窗口大小为4一次能发送4次请求,如果要发第五个请求则需等待,等服务器返回第一个请求的响应,我们的窗口就会往下滑动,这是我们的...原创 2021-08-12 13:40:30 · 425 阅读 · 0 评论 -
Netty(一)
Netty 简介Netty 是一个 NIO 客户端服务器框架,可快速轻松地开发网络应用程序,例如协议服务器和客户端。它极大地简化和简化了网络编程,例如 TCP 和 UDP 套接字服务器。“快速简便”并不意味着最终的应用程序将遭受可维护性或性能问题的困扰。Netty 经过精心设计,结合了许多协议(例如FTP,SMTP,HTTP 以及各种基于二进制和文本的旧式协议)的实施经验。结果,Netty 成功地找到了一种无需妥协即可轻松实现开发,性能,稳定性和灵活性的方法。(NIO可以查看我前面的文章htt原创 2021-07-05 20:26:15 · 110 阅读 · 0 评论 -
BIO,NIO,AIO
学习目标掌握BIO和NIO学习内容:1.BIO是什么2.NIO是什么学习产出:1.BIOBIO是一个同步并阻塞的IO模式,传统的 java.io 包,它基于流模型实现,提供了我们最熟知的一些 IO 功能,比如File抽象、输入输出流等。交互方式是同步、阻塞的方式,也就是说,在读取输入流或者写入输出流时,在读、写动作完成之前,线程会一直阻塞在那里,它们之间的调用是可靠的线性顺序。这也就意味着如果我么在读取某一个大的文件时,读取了很久,那么这个线程就会被夹死在这里,其他的后续任务原创 2021-06-29 18:10:26 · 101 阅读 · 0 评论