开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 25 天,点击查看活动详情
今天来学习下Go常见的习题问题(三十五),也是面试中可能会遇到的,让我们来一起学习吧~
http/1.1 与 http/2.0
http/1.1优点:
- http/1.1改善了http/1.0短连接的问题,可以减少短连接的带来性能开销
- 支持pipeline管道传输,不需要排队发送请求,可以连着发送请求
缺点:
- 请求和响应头没有经过压缩,首部如果数据量太大,会导致延迟大,只能压缩Body数据部分
- 每次发送相同的头部信息,会造成数据冗余
- 服务器是按照顺序回答消息,还是会造成阻塞
- 没有请求优先级的功能
- 服务端不能发起请求
http/2.0
2.0协议是基于https的优化而来,所以2.0的安全性是毋庸置疑的,那么相比于1.1协议来说
- 加上了头部压缩,可以减少数据冗余
- 替换了文本格式,改为二进制格式,数据量变少
- 并发传输
- 服务器可以自己发起请求
-
头部压缩用到的算法:
HPACk算法,客户端和服务器会共同维护一个头部信息表,发送的头部数据都会存入这张表里,每次只要发送索引号就可以降低延迟 -
编码格式改为二进制,头部信息和数据体都改成二进制,这样可读性变差了,但是对于计算机来说无疑是友好的,解析速度就提高,传输效率也会提高,举个例子
在http/1.1中发送200 : 二进制编码为:00110010(在ASCII表中表示为2) 00110000 00110000 用了3个字节,
在http/2.0中发送200 : 二进制编码为:10001000 只用了一个字节(这里是用到了静态表的传输形式,第一位是表示在静态表中存在数据,后面7位代表在表中的位置
-
并发传输:多个Stream复用一个TCP连接,一个Stream包含多个Message,Message包含多个Frame是以http/2.0的最小单位,不同的Stream的有专门的ID,最后可以根据ID来重新组装数据
-
服务器发送数据:服务器也可以创建Stream流,也有ID号但是要和客户端的区分开来,服务器的是偶数,客户端的是奇数
总结
今天浅谈了Go的习题(三十五),主要介绍了GO面试中会出现的问题,接下来会继续分享其他的习题的相关知识,对于一个刚入门的我来说,还有许多地方需要学习,有错误的地方欢迎大家指出,共同进步!!