首页
沸点
课程
数据标注
HOT
AI Coding
更多
直播
活动
APP
插件
直播
活动
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
nio
订阅
lufy
更多收藏集
微信扫码分享
微信
新浪微博
QQ
11篇文章 · 0订阅
三、Netty编解码&粘包拆包&零拷贝
Netty涉及到编解码的组件有Channel、ChannelHandler、ChannelPipe等,先大概了解下这几个组件的作用。 Channel是Netty网络通信的组件,客户端与服务端建立的一个连接通道,能够用于执行网络I/O操作。不同协议、不同的阻塞类型的连接都有不同的…
Java NIO分析(2): I/O多路复用历史杂谈
前面Java NIO分析(1): Unix网络模型讲过5种经典I/O模型, 现代企业的场景一般是高并发高流量,长连接, 假设硬件资源充足,如何提高应用单机能接受链接的上限? 先讲段历史 20世纪60年代中期, 那会儿还是批处理任务的天下,也就是有一堆job一个个顺序做, 一个做…
Java NIO分析(1): Unix网络模型
要谈Java的NIO, 还是先从I/O开始说起。 Unix提供了5种不同的I/O模型,分别是 阻塞I/O(blocking I/O) 非阻塞I/O(non-blocking I/O) I/O复用(I/O multiplexing) 信号驱动式I/O(signal-driven …
Java NIO分析(10): JVM堆外内存利用改进: DirectBuffer详解
前面我们详细讲了Java NIO分析(8): 高并发核心Selector详解和Java NIO分析(9): 从BSD socket到SocketChannel, 分别是NIO的事件分发器和非阻塞处理器. 为了支持Channel的双向读写和Scatter/Gather操作,我们还…
Java NIO分析(8): 高并发核心Selector详解
有了感性认识之后,来看看Selector的底层是如何实现的。 笔者下载得是openjdk8的源码, 画出类图 比较清晰得看到,openjdk中Selector的实现是SelectorImpl, 然后SelectorImpl又将职责委托给了具体的平台,比如图中框出的linux2.…
Java NIO分析(7): NIO核心之Channel,Buffer和Selector简介
在NIO的API中,Channel就是实现非阻塞的组件,而事件分发(Dispatcher)使用的是Selector组件, 在传统的I/O流(Stream)是有方向的,而NIO支持双向读写,这样就需要将流中的数据读取到某个缓冲组件里, 即Buffer组件. Buffer组件还有个…
Java NIO分析(5): I/O多路复用之epoll系统调用
poll系统调用相比于select主要解决了文件描述符的数量限制,但是在高并发场景下没有解决根本问题: fd数组整体在内核空间和用户空间之间拷贝 遍历整个fd数组找事件浪费资源 这俩性能问题在Banga在1999年写了篇论文A Scalable and Explicit Ev…
Java NIO分析(4): I/O多路复用之poll系统调用
文件描述符集(fd_set)这种值-结果参数的api设计不是很好, select系统调用的时候要分别传读set,写set,更多事件不好细分 poll系统调用使用了pollfd数据结构来表示事件数组,没有了fd_setsize的限制,同时支持更多的事件类型 pollfd的结构是:…
Java NIO分析(6): 从BIO到NIO-设计和概念
前面介绍了Unix的I/O模型以及多路复用的c实现,为什么要介绍这些呢? 因为JVM是用c++写的,JDK的native方法也都是用c写的,最后它们调用 的还是操作系统底层的api,所以了解一些关键的底层原理还是有必要的。 讲Java的NIO之前,先讲些基础知识. 阻塞和非阻塞…
Java NIO分析(3): I/O多路复用之select系统调用
以及为什么需要它。今天讲广受各大内核支持的select系统调用,select允许进程 指定内核等待1个或者多个事件的任何一个发生, 并且只在有它们发生之后或者等待一段时间后才唤醒进程。 使用select, 我们即使应用进程里只有1个线程也能够接受多个连接并且做出处理, 因为应用…