Java学习总结(2.1.2) BIO阻塞网络编程
GET/servlet-demo-1.0.0/index HTTP/1.1
Cache-Control: max-age = 0
Accept: text / html
Accept-Language: zh-Hans-CN,zh-Hans;q=0.5
Upgrade-Insecure-Requests: 1
User-Agent: Chrome/64.0.3282.140
Accept-Encoding: gzip,deflate
Host: 127.0.0.1:8080
Connection: Keep-Alive
Http协议 - 请求数据包解析
第一部分:请求行,请求类型,资源路径以及HTTP版本。
第二部分:请求头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息。
第三部分:空行,请求头部后面的空行是必须的请求头部和数据主体之间必须有换行。
第四部分:请求数据也叫主体,可以添加任意的数据。这个例子的请求数据为空。
--------------------------------
HTTP/1.1 200 OK
Content-length : 11
Hello World
第一部分:状态行。HTTP版本、状态码、状态消息。
第二部分:响应报头部,紧接着请求行(即第一行)之后的部分,用来说明服务器要使用的附加信息
第三部分:空行,头部后面的空行是必须的头部和数据主体之间必须有换行
第四部分:响应正文。可以添加任意的数据。这个例子的响应正文为“ Hello world”。
Http协议 - 响应状态码
1xx(临时响应)
2xx(成功)
3xx(重定向)
4xx(请求错误)
5xx(服务器错误)
BIO - 阻塞IO的含义
阻塞(blocking) IO:资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)。
非阻塞(non-blocking) IO:资源不可用时,IO请求离开返回,返回数据标识资源不可用。
同步(synchronous) IO:应用阻塞在发送或接收数据的状态,直到数据成功传输或返回失败。
异步( asynchronous) IO:应用发送或接收数据后立刻返回,实际处理是异步执行的。
阻塞和非阻塞是获取资源的方式,同步/异步是程序如何处理资源的逻辑设计。
代码中使用的API: Serversocket#accept、 Input Stream#read都是阻塞的APl。
操作系统底层AP中,默认Socket操作都是 Blocking型,send/recv等接口都是阻塞的。
带来的问题:阻塞导致在处理网络I/O时,一个线程只能处理一个网络连接。
每日一句
博客分组
标签云
- 最近综合
- 情绪巨婴是什么 12.18
- 普通蛋糕做法 05.31
- 玉米烤肠芝士面包做法 05.31
- Mysql安装教程 - 绿色版 06.18
- 我们学习知识为什么总是忘记呢?【学习金字塔】 05.12
- Typora开发版⽆法使⽤解决⽅法 05.04
- 为什么无知者越自信? -- 达克效应 05.10
- 马斯洛需求层次理论 04.29
- 随机综合
- Android开发,为什么Android不直接链接mysql数据库 04.12
- 最常见最有效的隐藏外连代码_防seo黑帽隐藏外连代码 10.09
- 中间件1.2.2-ActiveMQ支持的消息协议讲解 04.23
- android TextView标签字体加粗的几种方法 04.08
- 玉米烤肠芝士面包做法 05.31
- 电商运营主要做什么? 10.08
- 中间件1.3.3-RabbitMQ持久化机制、内存/磁盘控制 04.29
- 开发者能力金字塔 04.29