Fork me on GitHub

随笔分类 -  java-io-nio

java io和nio相关文章
摘要:简介 netty提供了一个从ByteBuf到用户自定义的message的解码器叫做ByteToMessageDecoder,要使用这个decoder,我们需要继承这个decoder,并实现decode方法,从而在这个方法中实现ByteBuf中的内容到用户自定义message对象的转换。 那么在使用B 阅读全文
posted @ 2022-04-27 13:50 flydean 阅读(701) 评论(0) 推荐(0)
摘要:简介 程序和程序之间的数据传输方式有很多,可以通过二进制协议来传输,比较流行的像是thrift协议或者google的protobuf。这些二进制协议可以实现数据的有效传输,并且通过二进制的形式可以节省数据的体积,在某些速度和效率优先的情况下是非常有效的。并且如果不同的编程语言之间的相互调用,也可以通 阅读全文
posted @ 2022-04-26 13:50 flydean 阅读(1728) 评论(1) 推荐(0)
摘要:简介 我们知道netty中数据传输的核心是ByteBuf,ByteBuf提供了多种数据读写的方法,包括基本类型和byte数组的读写方法。如果要在netty中传输这些数据,那么需要构建ByteBuf,然后调用ByteBuf中对应的方法写入对应的数据,接着套用netty中标准的模板即可使用。 对于byt 阅读全文
posted @ 2022-04-25 13:49 flydean 阅读(1860) 评论(1) 推荐(0)
摘要:简介 在netty中我们需要传递各种类型的消息,这些message可以是字符串,可以是数组,也可以是自定义的对象。不同的对象之间可能需要互相转换,这样就需要一个可以自由进行转换的转换器,为了统一编码规则和方便用户的扩展,netty提供了一套消息之间进行转换的框架。本文将会讲解这个框架的具体实现。 框 阅读全文
posted @ 2022-04-18 13:56 flydean 阅读(1151) 评论(1) 推荐(0)
摘要:简介 什么是Base64编码呢?在回答这个问题之前,我们需要了解一下计算机中文件的分类,对于计算机来说文件可以分为两类,一类是文本文件,一类是二进制文件。 对于二进制文件来说,其内容是用二进制来表示的,对于人类是不可立马理解的。如果你尝试用文本编辑器打开二进制文件,可能会看到乱码。这是因为二进制文件 阅读全文
posted @ 2022-04-08 18:06 flydean 阅读(689) 评论(0) 推荐(0)
摘要:简介 之前的文章我们讲到了Socket中的Stream Socket和Datagram Socket,这两种Socket通常分别是基于tcp和udp协议来进行数据的传输。这两种Socket都有一个共同的特点,那就是需要一个IP地址和端口来建立客户端和服务器端的连接。 那么今天我们会来讲解一个特殊的s 阅读全文
posted @ 2022-04-06 15:06 flydean 阅读(1942) 评论(1) 推荐(1)
摘要:简介 channel是连接客户端和服务器端的桥梁,在netty中我们最常用的就是NIO,一般和NioEventLoopGroup配套使用的就是NioServerSocketChannel和NioSocketChannel,如果是UDP协议,那么配套使用的就是NioDatagramChannel,如果 阅读全文
posted @ 2022-03-16 09:47 flydean 阅读(933) 评论(0) 推荐(0)
摘要:简介 netty为什么快呢?这是因为netty底层使用了JAVA的NIO技术,并在其基础上进行了性能的优化,虽然netty不是单纯的JAVA nio,但是netty的底层还是基于的是nio技术。 nio是JDK1.4中引入的,用于区别于传统的IO,所以nio也可以称之为new io。 nio的三大核 阅读全文
posted @ 2022-03-09 18:50 flydean 阅读(3984) 评论(0) 推荐(1)
摘要:简介 在netty中不管是服务器端的ServerBootstrap还是客户端的Bootstrap,在创建的时候都需要在group方法中传入一个EventLoopGroup参数,用来处理所有的ServerChannel和Channel中所有的IO操作和event。 可能有的小伙伴还稍微看了一下nett 阅读全文
posted @ 2022-03-07 21:17 flydean 阅读(1077) 评论(1) 推荐(0)
摘要:简介 netty作为一个异步NIO框架,多线程肯定是它的基础,但是对于netty的实际使用者来说,一般是不需要接触到多线程的,我们只需要按照netty框架规定的流程走下去,自定义handler来处理对应的消息即可。 那么有朋友会问了,作为一个NIO框架,netty的多线程到底体现在什么地方呢?它的底 阅读全文
posted @ 2022-03-04 13:50 flydean 阅读(1088) 评论(1) 推荐(1)
摘要:简介 我们知道ChannelHandler有两个非常重要的子接口,分别是ChannelOutboundHandler和ChannelInboundHandler,基本上这两个handler接口定义了所有channel inbound和outbound的处理逻辑。 不管是ChannelHandler还 阅读全文
posted @ 2022-03-02 14:05 flydean 阅读(2759) 评论(1) 推荐(0)
摘要:简介 我们在介绍channel的时候提到过,几乎channel中所有的实现都是通过channelPipeline进行的,作为一个pipline,它到底是如何工作的呢? 一起来看看吧。 ChannelPipeline ChannelPipeline是一个interface,它继承了三个接口,分别是Ch 阅读全文
posted @ 2022-02-28 18:36 flydean 阅读(822) 评论(1) 推荐(1)
摘要:简介 我们知道channel是netty中用于沟通ByteBuf和Event的桥梁,在netty服务的创建过程中,不管是客户端的Bootstrap还是服务器端的ServerBootstrap,都需要调用channel方法来指定对应的channel类型。 那么netty中channel到底有哪些类型呢 阅读全文
posted @ 2022-02-22 10:57 flydean 阅读(652) 评论(1) 推荐(0)
摘要:简介 虽然netty很强大,但是使用netty来构建程序却是很简单,只需要掌握特定的netty套路就可以写出强大的netty程序。每个netty程序都需要一个Bootstrap,什么是Bootstrap呢?Bootstrap翻译成中文来说就是鞋拔子,在计算机世界中,Bootstrap指的是引导程序, 阅读全文
posted @ 2022-02-21 21:30 flydean 阅读(1192) 评论(1) 推荐(0)
摘要:简介 在我的心中,JDK有两个经典版本,第一个就是现在大部分公司都在使用的JDK8,这个版本引入了Stream、lambda表达式和泛型,让JAVA程序的编写变得更加流畅,减少了大量的冗余代码。 另外一个版本要早点,还是JAVA 1.X的时代,我们称之为JDK1.5,这个版本引入了java.util 阅读全文
posted @ 2022-02-18 19:12 flydean 阅读(294) 评论(1) 推荐(0)
摘要:简介 channel是netty中数据传输和数据处理的渠道,也是netty程序中不可或缺的一环。在netty中channel是一个接口,针对不同的数据类型或者协议channel会有具体的不同实现。 虽然channel很重要,但是在代码中确实很神秘,基本上我们很少能够看到直接使用channel的情况, 阅读全文
posted @ 2022-02-17 21:31 flydean 阅读(3299) 评论(1) 推荐(0)
摘要:简介 netty作为一个优秀的的NIO框架,被广泛应用于各种服务器和框架中。同样是NIO,netty所依赖的JDK在1.4版本中早就提供nio的包,既然JDK已经有了nio的包,为什么netty还要再写一个呢? 不是因为JDK不优秀,而是因为netty的要求有点高。 ByteBuf和ByteBuff 阅读全文
posted @ 2022-02-16 18:40 flydean 阅读(725) 评论(1) 推荐(0)
摘要:简介 经典的TCP三次握手大家应该很熟悉了,三次握手按道理说应该是最优的方案了,当然这是对于通用的情况来说的。那么在某些特殊的情况下是不是可以提升TCP建立连接的速度呢? 答案是肯定的,这就是今天我们要讲的TCP fast open和netty。 TCP fast open 什么是TCP fast 阅读全文
posted @ 2022-02-15 18:13 flydean 阅读(968) 评论(1) 推荐(1)
摘要:简介 为什么世界上有这么多JAVA的程序员呢?其中一个很重要的原因就是JAVA相对于C而言,不需要考虑对象的释放,一切都是由垃圾回收器来完成的。在崇尚简单的现代编程世界中,会C的高手越来越少,会JAVA的程序员越来越多。 JVM的垃圾回收器中一个很重要的概念就是Reference count,也就是 阅读全文
posted @ 2022-02-14 17:25 flydean 阅读(465) 评论(0) 推荐(0)
摘要:简介 在我们之前提到的所有netty知识中,netty好像都被分为客户端和服务器端两部分。服务器端监听连接,并对连接中的消息进行处理。而客户端则向服务器端建立请求连接,从而可以发送消息。 但是这一切都要在UDT协议中被终结,因为UDT提供了Rendezvous,一种平等的连接类型,节点之间是对等关系 阅读全文
posted @ 2022-02-11 10:12 flydean 阅读(236) 评论(1) 推荐(1)