随笔分类 - NIO
摘要:前言 每个网络应用程序都必须定义如何解析在两个节点之间来回传输的原始字节,以及如何将其和 目标应用程序的数据格式做相互转换。这种转换逻辑由编解码器处理,编解码器由编码器和解码 器组成,它们每种都可以将字节流从一种格式转换为另一种格式。那么它们的区别是什么呢? 如果将消息看作是对于特定的应用程序具有具
阅读全文
摘要:零拷贝机制(Zero-Copy)是在操作数据时不需要将数据从一块内存区域复制到另一块内存区域的技术,这样就避免了内存的拷贝,使得可以提高CPU的。零拷贝机制是一种操作数据的优化方案,通过避免数据在内存中拷贝达到的提高CPU性能的方案。 一、操作系统的零拷贝机制 操作系统的存储空间包含硬盘和内存,而内
阅读全文
摘要:MINA框架是基于NIO的异步IO框架,上一文已经对MINA的理论及实践做了分析,本文将对于MINA的整体源码实现进行分析。 通过MINA的实际案例可以发现,MINA的IO实现相比于NIO的使用要简单很多,因为不需要关心IO的具体实现,只需要关心具体的IO数据即可。MINA服务端整体步骤一共就四步:
阅读全文
摘要:前言: 上一文分析了Java NIO的实现逻辑, 可以发现NIO相比于BIO来说性能提升了不止一个档次,但是Java的NIO使用还有一个弊端,比如Buffer的API设计太过复杂,想要用好NIO就需要对于NIO的各个组件的所以API使用非常熟练才行,对于新手来说入门门槛比较高。 所以如果有一个框架能
阅读全文
摘要:一、IO多路复用 传统的BIO服务器处理客户端IO请求时会为每一个客户端请求都分配一个线程去处理,当客户端数量增加时会导致服务端线程数过多而带来性能隐患,所以迫不得已需要一个线程处理多个客户端请求,也就衍生了多路复用IO模型,Java中的NIO核心就是使用到了操作系统的多路复用IO。 IO多路复用的
阅读全文
摘要:一、操作系统的IO交互模型 现代的操作系统对于存储空间都有一套访问限制控制,所以将存储空间分成了用户空间和内核空间。用户空间负责给应用程序使用,应用程序可以访问用户空间内的数据,但是不可以访问内核空间中的数据;而内核程序可以访问计算机的所有存储空间,包括用户空间、内核空间以及硬件设备上的数据。所以当
阅读全文
摘要:业务背景 项目是基于Netty实现的实时课堂项目,课堂中老师需要对试卷进行讲解,则老师向服务器发送一个打开试卷信息的请求,服务器获取试卷信息,将试卷信息发送给所有的客户端(学生和老师)。 发送给学生的时候需要在试卷信息中加上本人得分的信息。 实现方式大致如下: 结果:学生A收到的得分是学生B的得分,
阅读全文
摘要:一、Netty简介 Netty是目前最流行的NIO框架之一,健壮性、功能、性能、可定制性和可扩展性都是首屈一指的。Dubbo、Tomcat等都采用Netty作为底层的NIO通信框架,主要优点有: 1.API使用简单 2.功能强大,预制了多种编解码功能,支持多种主流协议 3.定制能力强,可以通过Cha
阅读全文
posted @ 2019-07-01 00:12
Lucky帅小武
摘要:一、BIO时代 BIO1.0版本 在jdk1.4之前,java网络编程都是采用的BIO模式,BIO全称是Blocking IO,也就是阻塞式IO 接下来就以拨打10086客服电话为例,介绍下BIO是如何通信的。(10086客服是服务端,移动用户是客户端,10086是端口号) BIO1.0版本 客服等
阅读全文

浙公网安备 33010602011771号