Java
232 篇笔记
- 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
- 3.2 BIO实现的多线程服务器historical
服务端编程,传统的情况是使用BIO。 但是使用这种会有两个阻塞点: ServerSocket.accept() 和 InputStream.read() ,因此单线程只能服务一个客户端。 为了服务多个用户,那么必须使用多线程来处理read请求,但是线程资源是有限的。 尤其对于长链接来说,保持如此之多
- 3.3 AIOhistorical
是什么 也是NIO包的类,如下 AsynchronousFileChannel: 用于文件异步读写; AsynchronousSocketChannel: TCP客户端异步socket; AsynchronousServerSocketChannel:TCP 服务端异步socket Asynchro
- 3.5 Bufferhistorical
基本用法 写入数据到Buffer 调用flip()方法 从Buffer中读取数据 调用clear()方法或者compact()方法 原理 有三个属性 - capacity - position - limit position和limit的含义取决于Buffer处在读模式还是写模式。不管Buffer
- 3.6 NIO实现的服务器historical
NIO vs BIO BIO NIO --- --- --- ServerSocket ServerSocketChannel Socket SocketChannel Selector SelectionKey 常见问题 客户端关闭的时候抛出异常,死循环 原因是没有判断 channel.read(
- 3.8 基础流historical
字节 InputStream - read 返回从InputStream流内读取到的一个字节内容。 当读完所有数据后返回-1.-1是一个int类型,不是byte或者char类型,这是不一样的。 - read(byte[]) 尝试读取与给定字节数组容量一样大的字节数,返回值说明了已经读取过的字节数 O
- 3.9 Channelhistorical
基本用法 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。
- 3.10 序列化协议historical
什么是序列化 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境 自定义规则 使用ByteBuffer,遵循如下规则 例子