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,遵循如下规则 例子

  11. 3.11 文件流historical

    写 FileOutputStream(字节流) FileWriter(字符) 读 元信息

  12. 3.12 Fileshistorical

    判断文件是否存在 创建目录 复制文件 移动重命名文件 删除文件 递归遍历文件

  13. 3.13 心跳机制historical

    对于服务端,用于定时清除闲置channel 对于客户端,用来检测会话是否断开,是否重连

  14. 3.14 BIOServerhistorical

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

  15. 3.15 NIOhistorical

    基本概念 - Channel和Buffer BIO基于字符流和字节流,NIO基于Channel和Buffer - Channel 类似于Socket - Buffer 类似于DataInputStream - NIO 从Channel<- Buffer的过程中,线程可以做其他的事情 - Select

  16. 3.16 数据包协议historical

    1. 粘包拆包是什么 1. 实际数据 2. 粘包现象 3. 拆包现象 2. 出现的原因 TCP有问题是因为她是面向字节流的协议,无法分辨从哪个字节到哪个字节是一条完整的消息 UDP没问题是面向报文的协议,会保留报文之间的分界 首先“粘包”是不存在的,“粘包”这一个词主要是面向低水平或者没有受过比较系

  17. 3.17 Pathhistorical

    是什么 表示文件路径,类似于File类 绝对路径 相对路径

  18. 3.18 NIOServerhistorical

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