NIO基础篇(一)】的更多相关文章

NIO里对性能提升最显著的是内存映射(memory mapping),内存访问的速度往往比文件访问的速度快几个数量级. 在内存映射之前,还需要看NIO的一些其他的特性. 缓冲区分片 slice()方法根据现有的缓冲区创建一个子缓冲区.也就是说,它创建一个新的缓冲区,新缓冲区与原来的缓冲区的一部分共享数据. package nio; import java.nio.ByteBuffer; public class SliceTest { public static void main(String…
Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件.这样,一个单独的线程可以管理多个channel,从而管理多个网络连接. 传统的Socket IO,服务端为每个客户端连接开启一个线程来处理,这样服务器可以支持的客户端连接数是有限的.当需要处理大量的客户端连接,而每个客户端连接的数据量又不是很大时,使用Socket NIO来实现是可行的. Socket NIO的特点是使用了Selector,使用一个线程处理多个连接的请求,向S…
1.NIO与传统IO的比较 Java的NIO(New IO)是不同于旧IO的,旧的IO是基于字节流和字符流的,是阻塞的IO.NIO是基于通道(Channel)和缓冲区(Buffer)的,是非阻塞的IO. 使用旧IO每次读取一行数据流的流程图如下,Thread必须等待,等待readline读到一行的数据并返回. 使用NIO,可以周期判断Buffer中是否有数据,没有数据时还可以去做其它的事情.基于缓存(Buffer)在一定程度上减少了读写速度不一致所带来的等待. NIO可以使用单线程管理多个通道(…
前言:撸基础篇系列,避免每次都要从头开始看,写个自己的知识体系树 NIO 核心就是异步, 比如,复制文件,让操作系统去处理,等通知 BIO核心类 一,BIO NIO基本操作类 Bytebuffer 构建: 用JVM的内存构建: ByteBuffer.allocate(bufferSize) 用JVM的直接内存构建: ByteBuffer.allocateDirect(bufferSize) 内存结构:  flip()后--> postion, limit,和captain的处理工具类 flip(…
转载请注明原创出处,谢谢! 说在前面 NIO相关知识是很多后续的一些基础知识,所以今天这篇文章仅仅是简单介绍,后续会继续有一到二篇相关NIO内容. 什么是NIO Java NIO( New IO) 是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同, NIO支持面向缓冲区的.基于通道的IO操作. NIO将以更加高效的方式进行文件的读写操作. NIO与普通IO的主要区别 IO NIO 面向流(S…
转载请注明原创出处,谢谢! 上篇NIO相关基础篇一,主要介绍了一些基本的概念以及缓冲区(Buffer)和通道(Channel),本篇继续NIO相关话题内容,主要就是文件锁.以及比较关键的Selector,后续还会继续有一到二篇左右与NIO内容相关. 文件锁(FileLock) 在看RocketMQ源码中,发现有关于文件锁的import,但是具体使用代码里面注释调了[回头看看为什么,理解下,到时候会在某篇文章里进行说明](实现一个事情的方法很多,所以不一定就一种),但是为了知识的完整性,还是准备讲…
转载请注明原创出处,谢谢! 说在前面 上篇NIO相关基础篇二,主要介绍了文件锁.以及比较关键的Selector,本篇继续NIO相关话题内容,主要谈谈一些Linux 网络 I/O模型.零拷贝等一些内容,目前能理解到的就这些了,后续还会继续有一到二篇左右与NIO内容相关,估计在后续netty等一些学习完成之后,在回过头来看看NIO系列,再补充补充. 用户空间以及内核空间概念 我们知道现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方).操心系统…
自动化领域比较有影响力的开源框架jenkins,确实比较强大,易用.很多公司将其用来做持续即成CI(continuous integration).为了拓展和强化自己的软件设计生态系统,也将很久前使用过的jenkins再熟悉一下.在这里做下备忘. 首先就是下载jenkins安装包,其实所谓的安装,是习惯说法,这个直接从官网下载后,一个war包(jenkins.war, 60M大小左右),直接就可以启动运行.我本地安装的是最新版本1.644. 由于jenkins是java写的,运行过程中需要有JD…
一.基础篇 1.1 开篇说明 dubbo是一个分布式服务框架,致力于提供高性能透明化RPC远程调用方案,提供SOA服务治理解决方案.本文旨在将对dubbo的使用和学习总结起来,深入源码探究原理,以备今后可以作为借鉴用于工作之中. 由于dubbo各个分层都是很多扩展,比如注册中心有redis.zookeeper选项,通信模块有netty.mina,序列化有hession.hession2.java序列化等,本文不能面面俱到,重点阐述主线流程,注册中心选择zookeeper(client选择cura…
java基础篇 java基础 目录 1.java是一种什么语言,jdk,jre,jvm三者的区别 2.java 1.5之后的三大版本 3.java跨平台及其原理 4.java 语言的特点 5.什么是字节码,字节码的好处 6.java 和 c++ 的区别 7.java的三大特性 8.java中的基本数据类型和引用数据类型及其区别 9.switch(expr),expr支持哪些数据类型 10.int 和 Integer 有什么区别,怎么理解自动拆箱,自动装箱 11.计算2^3效率最高的方法是 12.…