1,BIO 原生JDK网络编程
ServerSocket负责绑定IP地址,启动监听端口,Socket负责发起连接操作,连接成功后,两者通过输入和输出流进行同步阻塞式通信
编程中的Socket,Socket是应用层与TCP/IP协议组通信的中间软件抽象层,它是一组接口,其实就是一个门面模式,TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(Socket) 短链接、长连接、服务端和服务端‘客户端、通信编程关注的三件事
2,NIO 原生JDK中的网络编程 BIO面向流,一个线程只能服务一个客户端;NIO面向缓冲区,一个线程可以服务多个客户端,在所有配置参数一致时,BIO的效率比NIO高
三大核心组件和关系
Selector、Channel和Buffer
IO复用模型
select和epoll,对于一个socket,两次调用,两次返回,比阻塞IO并没有什么优势,关键是能同时对多个socket同时处理
非阻塞IO
非阻塞IO通过进程反复调用IO函数(多次系统调用,并马上返回),在数据copy过程中,进程是阻塞的
3,NIO之Buffer
重要属性:capacity、position、limit