个人简介

Echo Blog


江湖无名 安心练剑
  • Java NIO-08-理解 nio
    如何学习 nio 第一步,应该弄明白,有哪些IO模型,它们的区别是什么。 第二步,要搞清楚,这些IO模型的缺陷是什么,在高并发的情况下,为什么阻塞式接口 + 多线程会遇到瓶颈: 第三步,解决方案就是IO多路复用,要搞清楚,Java的多路复用不过是操作系统相关调用的封装。比如 select / poll / epoll / kqueued 等等。 第四步,掌握 selector 的用法...
    2018-09-22 04:20:47 | Java
  • Java NIO-07-Pipe
    管道 一个Java NIO的管道是两个线程间单向传输数据的连接。 一个管道(Pipe)有一个source channel和一个sink channel。 我们把数据写到sink channel中,这些数据可以同过source channel再读取出来。 基本使用 创建 打开一个管道通过调用Pipe.open()工厂方法,如下: Pipe pipe = Pipe.open()...
    2018-09-22 04:20:47 | Java
  • Java NIO-06-Selector
    Selector 概念 Selector是Java NIO中的一个组件,用于检查一个或多个NIO Channel的状态是否处于可读、可写。 如此可以实现单线程管理多个channels,也就是可以管理多个网络链接。 作用 用单线程处理多个channels的好处是我需要更少的线程来处理channel。 实际上,你甚至可以用一个线程来处理所有的channels。从操作系统的角度来看,切...
    2018-09-22 04:20:47 | Java
  • Java NIO-05-Buffer
    Buffer 作用 Java NIO Buffers用于和NIO Channel交互。正如你已经知道的,我们从channel中读取数据到buffers里,从buffer把数据写入到channels. buffer 本质上就是一块内存区,可以用来写入数据,并在稍后读取出来。 这块内存被NIO Buffer包裹起来,对外提供一系列的读写方便开发的接口。 用法演示 Basic Buff...
    2018-09-22 04:20:47 | Java
  • Java NIO-04-Channel
    Channel vs 流 Java NIO Channel通道和流非常相似,主要有以下几点区别: 通道可以读也可以写,流一般来说是单向的(只能读或者写)。 通道可以异步读写。 通道总是基于缓冲区Buffer来读写。 实现 Channel 的实现(Channel Implementations) 下面列出Java NI...
    2018-09-22 04:20:47 | Java
  • Java NIO-03-Charsets
    Standard charsets Java 暂时支持如下的标准编码 US-ASCII: 7位ASCII字符。 ISO-8859-1: ISO拉丁字母 UTF-8:这是8位UCS转换格式。 UTF-16BE:这是16位UCS转换格式,字节顺序大 UTF-16LE:这是16位UCS变换,以字节顺...
    2018-09-22 03:20:47 | Java
  • Java NIO-02-Path/Files
    Path 我接触到 nio,最先的应用就是 Path 这个类。 最直观的感觉就是 api 设计的很优雅(相对于传统的 File)。 Path 类 Java的path接口是作为Java NIO 2的一部分是Java6,7中NIO的升级增加部分。 Path在Java 7新增的。 相关接口位于java.nio.file包下,所以Javaz内Path接口的完整名称是 java.nio.f...
    2018-09-22 01:20:47 | Java
  • Java NIO-01-Overview
    NIO 是什么 Java NIO是java 1.4之后新出的一套IO接口,这里的的新是相对于原有标准的Java IO和Java Networking接口。NIO提供了一种完全不同的操作方式。 作用 Java NIO使我们可以进行非阻塞IO操作。 比如说,单线程中从通道读取数据到buffer,同时可以继续做别的事情,当数据读取到buffer中后,线程再继续处理数据。写数据也是一样的。...
    2018-09-22 01:18:47 | Java