1. 3.1 三大IO的对比historical

    1. Java IO 和 系统调用的关系 1.1. 系统调用的IO类型 IO模型.md 2. Java IO分类 2.1. BIO 同步阻塞 IO:a connection to a thread。 在服务端需要使用多线程处理多个客户端连接和读写请求。一般ServerSocket一个线程(accep

  2. 3.2 BIO实现的多线程服务器historical

    服务端编程,传统的情况是使用BIO。 但是使用这种会有两个阻塞点: ServerSocket.accept() 和 InputStream.read() ,因此单线程只能服务一个客户端。 为了服务多个用户,那么必须使用多线程来处理read请求,但是线程资源是有限的。 尤其对于长链接来说,保持如此之多

  3. 3.3 AIOhistorical

    是什么 也是NIO包的类,如下 AsynchronousFileChannel: 用于文件异步读写; AsynchronousSocketChannel: TCP客户端异步socket; AsynchronousServerSocketChannel:TCP 服务端异步socket Asynchro

  4. 3.4 BIOhistorical

    基本概念 - 输入/输出 输入流可以理解为向内存输入,输出流可以理解为从内存输出 - 流 连续的一段数据。可以是字节流或者字符流 - 不同用途的IO

  5. 3.5 Bufferhistorical

    基本用法 写入数据到Buffer 调用flip()方法 从Buffer中读取数据 调用clear()方法或者compact()方法 原理 有三个属性 - capacity - position - limit position和limit的含义取决于Buffer处在读模式还是写模式。不管Buffer

  6. 3.6 NIO实现的服务器historical

    NIO vs BIO BIO NIO --- --- --- ServerSocket ServerSocketChannel Socket SocketChannel Selector SelectionKey 常见问题 客户端关闭的时候抛出异常,死循环 原因是没有判断 channel.read(

  7. 3.7 AIOServerhistorical

    1. 例子 - server - client 2. 参考 - Java Network IO \(BIO,NIO,AIO\)

  8. 3.8 基础流historical

    字节 InputStream - read 返回从InputStream流内读取到的一个字节内容。 当读完所有数据后返回-1.-1是一个int类型,不是byte或者char类型,这是不一样的。 - read(byte[]) 尝试读取与给定字节数组容量一样大的字节数,返回值说明了已经读取过的字节数 O

  9. 3.9 Channelhistorical

    基本用法 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。

  10. 3.10 序列化协议historical

    什么是序列化 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境 自定义规则 使用ByteBuffer,遵循如下规则 例子