![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Netty
文章平均质量分 94
关于BIO、NIO、AIO等,以及Netty框架
HX_2022
这个作者很懒,什么都没留下…
展开
-
几种序列化方式的总结(Serializable,json,Fastjson,ProtoBuff,Hessian和Kyro)
0、背景当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。本文主要对几种常见Java序列化方式进行实现。包括Java原生以流的方法进行的序列化、Json序列化、FastJson序列化、Protobuff序列化、Hessian序列化和Kyro序列化。1、java原生序列化方式这种方式只能将支持 java.io.Serializable原创 2021-03-22 15:41:12 · 5353 阅读 · 2 评论 -
Netty的整体框架
以 Netty 4.1.42为基准版本,将分别从Netty 整体结构、逻辑架构、源码结构三个方面对其进行介绍。一、整体结构Netty是一个设计非常用心的网络基础组件,Netty官网给出了有关 Netty 的整体功能模块结构,却没有其他更多的解释。从图中,我们可以清晰地看出 Netty结构一共分为三个模块:1、Core 核心层Core核心层是 Netty 最精华的内容,它提供了底层网络通信的通用抽象和实现,包括可扩展的事件模型、通用的通信 API、支持零拷贝的 ByteBuf 等。2、Protoc原创 2021-03-17 23:26:42 · 1083 阅读 · 0 评论 -
Java NIO的学习总结
简介Java NIO 是由 Java 1.4 引进的异步 IO.Java NIO 由以下几个核心部分组成:ChannelBufferSelectorNIO 和 IO 的对比IO 和 NIO 的区别主要体现在三个方面:IO 基于流(Stream oriented), 而 NIO 基于 Buffer (Buffer oriented)IO 操作是阻塞的, 而 NIO 操作是非阻塞的IO 没有 selector 概念, 而 NIO 有 selector 概念.基于 Stream 与基原创 2021-02-27 23:29:03 · 280 阅读 · 2 评论 -
Apache Dubbo官网推荐使用建议
1、在 Provider 端尽量多配置 Consumer 端属性原因如下:作服务的提供方,比服务消费方更清楚服务的性能参数,如调用的超时时间、合理的重试次数等在Provider 端配置后,Consumer端不配置则会使用Provider 端的配置,即 Provider端的配置可以作为Consumer的缺省值 1。否则,Consumer 会使用Consumer 端的全局设置,这对于Provider是不可控的,并且往往是不合理的Provider 端尽量多配置Consumer端的属性,让 Provid原创 2020-11-14 21:25:35 · 409 阅读 · 0 评论 -
一文带你掌握Reactor模式
不同的线程模式,对程序的性能有很大影响。目前存在的线程模型有:传统阻塞I/O服务模型和Reactor模式,Reactor模式,是高性能网络编程的必知必会模式。 根据 Reactor的数量和处理资源池线程的数量不同,有3种典型的实现方式:分别是单Reactor单线程模型、单Reactor多线程模型和主从Reactor多线程模型。1、传统阻塞 I/O 服务模型模型特点:采用阻塞IO模式获取输入的数据;每个连接都需要独立的线程完成数据的输入,业务处理,数据返回。工作原理:如下图所示原创 2020-08-13 00:13:46 · 720 阅读 · 0 评论 -
NIO与零拷贝
1、基本介绍零拷贝是网络编程的关键,很多性能优化都离不开;在 Java 程序中,常用的零拷贝有mmap(内存映射) 和 sendFile。那么,他们在OS里,到底是怎么样的一个的设计?我们分析mmap和sendFile这两个零拷贝;另外我们看下NIO中如何使用零拷贝;我们说零拷贝,是从操作系统的角度来说的。因为内核缓冲区之间,没有数据是重复的(只有 kernel buffer有一份数据);零拷贝不仅仅带来更少的数据复制,还能带来其他的性能优势,例如更少的上下文切换,更少的CPU原创 2020-08-12 00:11:51 · 136 阅读 · 0 评论 -
NIO网络编程非阻塞
1、原理分析NIO 非阻塞网络编程相关的(Selector、SelectionKey、ServerScoketChannel和SocketChannel) 关系梳理图:对上图的说明:当客户端连接时,会通过ServerSocketChannel得到SocketChannel;Selector进行监听select方法, 返回有事件发生的通道的个数;将socketChannel注册到Selector上,register(Selector sel, int ops), 一个selector上原创 2020-08-12 00:09:17 · 167 阅读 · 0 评论 -
Java NIO具体结构和原理分析
NIO 有三大核心部分:Channel( 通道) ,Buffer( 缓冲区), Selector( 选择器),下面会从源码级别细讲。Selector 、 Channel 和 Buffer 的关系如下图所示:每个channel都会对应一个Buffer;Selector对应一个线程, 一个线程对应多个channel(连接);该图反应了有三个channel 注册到 该selector ;程序切换到哪个channel是由事件决定的, Event就是一个重要的概念;Selector原创 2020-08-12 00:05:56 · 491 阅读 · 1 评论 -
一文带你搞懂BIO、NIO和AIO
1、Java BIO1.1、基本介绍Java BIO : 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。1)Java BIO 就是传统的java io编程,其相关的类和接口在java.io;2)BIO(blocking I/O) : 同步阻塞**,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,原创 2020-08-11 23:58:22 · 193 阅读 · 0 评论