1、哪些问题是HTTPS无法解决的?
- Http是基于TCP协议的,在网络层的传输耗时比较长,https没有解决这个问题;
- http头是不能压缩的,每次要传递很大的数据包,每个连接也只能支持一个请求。
- 同时https应用了很多加密算法,这些算法的执行也是会影响速度的。
2、HTTP协议1.x版本和HTTP协议2.x版本的区别是什么?
- 多路复用:HTTP/2.x 可以在一个连接上同时传输多个请求和响应,而 HTTP/1.x 每个请求都需要建立一个单独的连接,导致性能低下。
- 流量控制:HTTP/2.x 可以对连接进行流量控制,控制发送速率和接收速率,避免了服务器和客户端之间的速率不匹配导致的问题。
- 服务器推送:HTTP/2.x 可以将服务器的资源主动推送给客户端,不需要客户端明确地请求,可以减少延迟和网络请求次数。
- 二进制传输:HTTP/2.x 使用二进制格式来传输数据,取代了 HTTP/1.x 的文本格式,减少了传输数据的大小和时间。
- 头部压缩:HTTP/2.x 支持头部压缩,可以有效减少请求和响应的头部大小,减少网络带宽的使用。
3、说一说进程有多少种状态,如何转换
进程有哪些状态?_什么是进程的就绪态 阻塞态 执行态_HappySundlut的博客-CSDN博客
有3种状态4种转换,三种状态是阻塞、就绪、运行。四种转换是阻塞->就绪、就绪->阻塞、运行->阻塞、就绪->运行。
(1) 就绪→执行
处于就绪状态的进程,当进程调度程序为之分配了处理机后,该进程便由就绪状态转变成执行状态。
(2) 执行→就绪
处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。
(3) 执行→阻塞
正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。
(4) 阻塞→就绪
4、说一说你对volatile关键字的理解
volatile关键字是Java虚拟机提供的最轻量级的线程间同步机制,我们很容易在书籍或网络上了解到volatile关键字的作用,主要有两点:
1、当一个变量被volatile修饰时,将保证此变量对所有线程的可见性。 这里的“可见性”指的是,当对一个变量修改后,新值对于其他线程是立即可见的,注意这里的立即可见,并不是说其他线程能监听到变量值修改,而是说修改后的值能立即同步到主内存中(稍后介绍Java内存模型),保证其他线程能读取到的一定是最新值。
2、使用volatile修饰的变量能禁止指令重排优化。 什么是指令重排优化呢,Java源代码最终会编译成计算机能识别的机器码指令,为了提高执行效率,编译器和处理器可能会对指令进行优化重新排序,导致实际上指令执行的顺序可能会和源代码中想表达的顺序不一致。