---简明Java IO---
- 简明通信原理
- 网络通信架构图
- 什么是互联网
互联网和公司内部的局域网都是基于 TCP/IP 的思路来设计的, 所以我们先来了解 TCP/IP 的基本思路。 TCP/IP 的结构如图 1.8 所示, 就是由一些小的子网,通过路由器 A 连接起来组成一个大的网络。 这里的子网可以理解为用集线器 B 连接起来的几台计算机 C,我们将它看作一个单位,称为子网。将子网通过路由器连接起来, 就形成了一个网络 D
- 集线器,交换机,路由器,猫(调制解调),无线AP
- wan,lan,vlan
- 操作系统
- Linux操作系统架构
- 操作系统中断机制
- 文件描述符
- 标准输入输出
- 网卡的工作方式
- 进程通信方式
- TCP/IP
- 网络编程
- Linux网络编程
- select,poll,epoll
- Java IO发展史
- 代码体现各种IO的工作方式
- java NIO
- 网卡中断
- response 什么时间返回
- socket 返回过程
- 网卡工作原理
- 文件描述符
- jvm accept实现方式
- Linux for
- Linux accept
-
Java NIO就是对IO使用的封装,实现内核函数的调用
-
非阻塞I/O有一个缺点 如果所有设备都一直没有数据到达,调用者需要反复查询做无用功,如果阻塞在那里,操作系统可以调度别的进程执行,就不会做无用功了。select(2) 函数可以阻塞地同时监视多个设备,还可以设定阻塞等待的超时时间,从而圆满地解决了这个问题。
-
搞懂select,poll,epoll区别
Socket 编程中,TCP 流的结束标志与粘包问题(https://www.cnblogs.com/kirito-c/p/8670078.html)
因为 TCP 本身是无边界的协议,因此它并没有结束标志,也无法分包。
socket和文件不一样,从文件中读,读到末尾就到达流的结尾了,所以会返回-1或null,循环结束,但是socket是连接两个主机的桥梁,一端无法知道另一端到底还有没有数据要传输。
socket如果不关闭的话,read之类的阻塞函数会一直等待它发送数据,就是所谓的阻塞。
如果发送的东西非常多必须要用循环读,可以有以下解决方案:
调用socket的 shutdownOutput 方法(Java)关闭输出流,该方法的文档说明为,将此套接字的输出流置于“流的末尾”,这样另一端的输入流上的read操作就会返回-1。
约定结束标志,当读到该结束标志时退出不再read。 (Http 的 Transfer-Encoding: Chunked 首部,表示将以一个 length 为 0 的 chunk 做结束标志)
设置超时(timeout),会在设置的超时时间到达后抛出SocketTimeoutException异常而不再阻塞。
双方定义好通信协议,在协议头部约定好数据的长度。当读取到的长度等于这个长度时就不再继续调用read方法。(Http 的 content-length 首部,会给出主体的长度)
而如果需要发送多个相互独立的内容,内容之间就需要有明确的分界,方法有:
像 multipart-form 一样,使用 boundary 字串做分割,使用 Content-Type 等首部做内容标识。
用二进制帧做分割,在帧首部定义好帧的长度和其他信息。
- 操作系统IO操作模式
- 网络编程中Socket和TCP连接过程-学习笔记
- https://www.bilibili.com/video/av50961486
- Java NIO之Selector(选择器)
- Java BIO,NIO与AIO的区别
- 一文让你彻底理解 Java NIO 核心组件
- 阿里面试必备之分析IO及NIO的底层原理
- 《操作系统》总结五(I/O管理)
- 操作系统IO模式整理
- C++网络通信中write和read的为什么会阻塞
- Unix/Linux中的read和write函数
- 如何学习Java的NIO?
- 理解socket connect和accept的实现细节
- 从操作系统内核看Java非阻塞IO事件检测
- Linux Socket编程(不限Linux)
- socket API 实现(四)—— accept 函数
- 浅谈Linux内存管理
- 【Linux 内核网络协议栈源码剖析】accept 函数剖析
- linux阻塞和非阻塞原理
- 12.Redis的事件驱动(IO多路复用)
- Java IO多路复用技术详解
- 系统间通讯方式之(Java NIO多路复用模式)(四)
- Java编程的艺术-NIO的原理
- Java架构之一线互联网公司面试必问之NIO【咕泡学院】
- 深入分析 Java I/O 的工作机制
- 数据从网卡到应用的过程
- 集线器,交换机,路由器的区别
- 计算机网络——OSI模型究竟忽悠了多少人
- TCP/IP与OSI之**试比较
- BIO-NIO-AIO.md
- 也说TCP/IP之计算机网络发展史(一)