![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java nio
tinysakurac
蹒跚学步的猿
展开
-
java nio selector选择器
转载自小文子的博客 Selector是Java NIO中的一个组件,用于检查一个或多个NIO Channel的状态是否处于可读、可写。如此可以实现单线程管理多个channels,也就是可以管理多个网络链接。 为什么使用Selector(Why Use a Selector?) 用单线程处理多个channels的好处是我需要更少的线程来处理channel。实际上,你甚至可以用一个线程来处理所有的channels。从操作系统的角度来看,切换线程开销是比较昂贵的,并且每个线程都需要占用系统资源,因此暂用线程越转载 2020-10-10 10:34:57 · 132 阅读 · 0 评论 -
netty核心类-缓冲区ByteBuf
[netty核心类]–缓冲区ByteBuf 本文主要包括以下内容: 1)ByteBuf的三种类型:heapBuffer(堆缓冲区)、directBuffer(直接缓冲区)以及Composite Buffer(复合缓冲区)。 2)ByteBuf的工作原理。 3)ByteBuf与JDK中ByteBuffer的区别以及对比 4)ByteBuf的引用计数器实现类AbstractReferenc...转载 2018-08-10 10:29:13 · 327 阅读 · 0 评论 -
java nio中的buffer
缓冲区分类 NIO中的buffer用于和通道交互,数据是从通道读入缓冲区,从缓冲区中写入通道的。Buffer就像一个数组,可以保存多个类型相同的数据。每种基本数据类型都有对应的Buffer类: 缓冲区的属性 1、capacity(容量):buffer本质是一个数组,在初始化时有固定的大小,这个值就是容量。容量不可改变,一旦缓冲区满了,需要将其清空才能将继续进行读写操作。 2、positi...转载 2018-08-08 13:23:20 · 128 阅读 · 0 评论 -
Linux网络io模型
linux网络编程之IO模型 本文转自作者:huangguisu 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步: 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。 例如普通B/S模式(同步):提交请求-&...转载 2018-08-08 15:41:44 · 141 阅读 · 0 评论 -
ByteBuffer中两种申请内存方式的区别
在Java中当我们要对数据进行更底层的操作时,一般是操作数据的字节(byte)形式,这时经常会用到ByteBuffer这样一个类。ByteBuffer提供了两种静态实例方式: public static ByteBuffer allocate(int capacity) public static ByteBuffer allocateDirect(int capacity) 为什么要提...转载 2018-10-12 19:19:15 · 1452 阅读 · 0 评论 -
netty中基本组件的作用与关系
Netty中的基本组件及关系 概述 这篇文章主要是用来介绍netty中常用的一些组件,以及这些组件之间的存在关系 Channel —-Socket EventLoop —-控制流,多线程处理,并发; ChannelHandler和ChannelPipeline Bootstrap 和 ServerBootstrap Channel 接口 基本的I/O操作,在基于...转载 2018-08-10 15:33:00 · 1416 阅读 · 0 评论 -
java nio三大组件
Channel Channel是什么 Channel一般翻译为通道。Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。 Channel的实现 FileChannel, 从文件中读写数据。 DatagramCha...转载 2018-08-08 15:45:06 · 147 阅读 · 0 评论 -
解决netty重复添加channel handler失败及其带来的反思
前言 使用netty作为nio框架开发遇到了一个问题,断线重连时添加自定义channel handler失败,抛出异常 ChannelPiplineException:"xxx class is not a @Sharable handler, so can't be added or removed multiple times 字面意思上是我们自定义的channel handler不是一个共...原创 2019-07-23 11:09:14 · 2469 阅读 · 0 评论 -
简单理解一个dubbo服务的完整调用过程
转载自dubbo官网 感受学习业内优秀开源分布式框架的底层rpc实现原创 2019-08-02 10:43:33 · 4405 阅读 · 0 评论