IO系列
文章平均质量分 94
AvengerEug
向技术致敬的码农
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
IO系列学习总结八:以Netty的聊天室程序为例,再聊聊拆包粘包的解决方案
前言在上篇文章:IO系列学习总结七:从官网Factorial协议的视角来理解出站、入站及数据碎片化(粘包拆包)中,针对Factorial协议做了一些解析,其中包含netty的入站出站处理顺序以及粘包拆包的概念及处理方案。在Factorial协议的拆包粘包部分总结的可能还有点模糊,接下来我们针对netty的聊天程序做一个简单的demo,把拆包粘包的现象给展示出来,同时并给予对应的解决方案。话不多说,我们直接看下面的内容。一、实现聊天室的基本思路先说说这个聊天室的基本功能:启动服务器,当用户A上线原创 2021-04-01 19:24:52 · 360 阅读 · 0 评论 -
IO系列学习总结七:从官网Factorial协议的视角来理解出站、入站及数据碎片化(粘包拆包)
前言上篇文章中,我们基于Netty开发了discard和time协议的网络应用程序。但我们还不是特别了解客户端与服务端在netty中的数据处理大致流程。本次总结的目的就在于:了解netty在交互数据时涉及到的一些基础知识:出站入站(数据处理流程)、粘包拆包。本次,我们还是使用官网的案例(Factorial Protocol)来说明问题,但官网的案例支持了SSL,为了增加代码的阅读和理解,本人将部分内容做了改版,升级成一个简单版基于factorial protocol的网络应用程序。接下来一起来了解下官网原创 2021-03-22 19:51:32 · 381 阅读 · 0 评论 -
IO系列学习总结六:拜读Netty 4.x版本官网,熟悉官网discard protocol & time protocol
前言对于Netty这种通讯框架而言,它最简单的一个实现(也就是我们常说的Hello World程序)也得需要客户端和服务端进行通讯,而这实际上就是一种协议。在Netty官网中有提到,最简单的协议实现就是:Discard Protocol,在这种协议下,服务端和客户端不需要做任何事情。它的最主要功能就是:接收客户端的请求,但是却丢弃它。通过Discard Protocol的入门程序编写,我们可以了解Netty的开发模式。当然,Netty是一个通讯的框架,我们最后还得通过官网的Time Protocol来了原创 2021-03-16 19:10:06 · 1777 阅读 · 0 评论 -
IO系列学习总结五:拜读Netty 4.x版本官网 《User guide》文档,了解Netty的使用背景
前言通常,我们学习一个新技术时。最需要做的一件事就是看官方的《User Guide》文档,每一种技术都会在官网中介绍它是什么?它解决的问题(痛点)是什么?它有哪些优点?今天,咱们就朝着这三个方向去看官方文档。一般情况下,我们是先介绍它是什么,然后再说明它解决了哪些问题,有哪些优点。而在Netty的官方文档中《User Guide》中,它为我们提供的阅读思路是:先列出目前有哪些问题,然后是Netty针对这些问题的解决方案,最后是教我们写hello world程序。一、Netty官网中列出了哪些问题?原创 2021-03-12 08:35:46 · 434 阅读 · 1 评论 -
IO系列学习总结四:NIO的三种reactor模型
前言上篇文章:IO系列学习总结三:三张图带你了解NIO通信程序的执行流程我们了解了一个普通NIO应用程序的通信执行流程。了解到了NIO的非阻塞具体体现在哪个地方。并对它的Selector、SelectedKey、Channel组件有了基础的了解。在上篇文章中的程序案例中,虽然它解决了BIO的阻塞问题,但它的吞吐量还不是特别高,因为它是单线程的。对于selector而言,它的工作太繁重了,需要管理服务端ServerSocketChannel的accept事件,还要管理连接到服务端的SocketChanne原创 2021-03-03 21:52:57 · 604 阅读 · 3 评论 -
IO系列学习总结三:三张图带你了解NIO通信程序的执行流程
前言上篇文档:IO系列学习总结二:认识NIO,从ByteBuffer开始,我们了解了NIO解决了BIO阻塞的问题来达到高并发的目的。其中,还用了三张图了解了NIO中的ByteBuffer及常用API。上文总结到NIO的几个核心组件:Selector、SeletedKey、ByteBuffer、ServerSockerChannel、SocketChannel,我们详细了解了ByteBuffer组件的底层原理。今天,我们以三张图类来认识NIO程序通信的流程。废话不多说,咱们直接进行今天旅程。一、三张图原创 2021-02-27 15:31:59 · 704 阅读 · 0 评论 -
IO系列学习总结二:认识NIO,从ByteBuffer开始
前言上篇文章:IO系列学习总结一:做实验,从BIO单线程版本过渡到BIO多线程版本中介绍了什么是IO、BIO以及BIO阻塞的两个关键点,并针对BIO的两个阻塞点做了一定的扩展,使之能支持有限的连接请求达到伪并发的效果。虽然能绕开BIO的两个阻塞点来实现伪并发效果,但它毕竟是伪的。那要如何来解决根本问题呢?在JDK的api中,衍生出来了一个叫NIO的东西。它全称叫:No Blocking IO。顾名思义,它的出现就是用来解决BIO的阻塞问题的。下面我们来认识下NIO吧。一、NIO(No Blockin原创 2021-02-24 20:42:38 · 395 阅读 · 0 评论 -
IO系列学习总结一:做实验,从BIO单线程版本过渡到BIO多线程版本
一、什么是IO?要说BIO之前,还得说一说什么是IO。记得自己在某一次面试过程中,面试官问自己:Q:如果一个http请求在线上环境执行的非常慢,你会如何定位问题?A:而我却挠了挠脑袋,支支吾吾的说了半天。最终在面试结束之前的你有什么要问我的吗?环节,我主动向面试官请教了这个问题,其中,面试官说的最多的就是IO这两个字。那IO到底是什么呢?概念:我们都知道unix世界里、一切皆文件、而文件是什么呢?文件就是一串二进制流而已、不管socket、还是FIFO、管道、终端、对我们来说、一切都原创 2021-01-04 21:16:48 · 489 阅读 · 1 评论
分享