Https与http的主要区别
1.http是透明的传输,而https是在会话层加上了ssl/tls
2.面试官让我着重讲述一下ssl/tls大致原理
3.我:ssl/tls是通过对称加密和非对称加密实现的,对称加密是通信双方使用相同的密钥。而非对称加密是,接收方会有两份密钥,一份私钥,一份公钥。私钥是自己用来加密的,公钥是给请求方用来加密要发送的数据。当客服端要与服务端请求通信时,第一阶段使用非对称密钥传输,服务端会给客服端发送公钥。客户端收到公钥之后就将对称密钥进行加密并传输给服务端。服务端收到密文后,进行解密。之后,双方就可以通过对称密钥进行通信。
后续问题:不发分子通过伪造成服务端,给客服端发送一个公钥,之后客服端把对称密钥加密并传输给伪造服务端。这就导致了密钥的泄露。
解决办法:CA证书,通过公证的第三方CA发放证书。过程如图-1 CA证书通信
1.CA会对服务器发送证书并附上经CA密钥加密了的公钥信息。并向客服端发送带有公钥的消息
2.客户端信任CA,通过CA公钥解密服务端发送过来的证书,校验证书电子签名,并且获得服务端发送过来的公钥。
3.双方开始通信。
![](https://img-blog.csdnimg.cn/bb55eb280b734082a0da0abc3aadc54e.png)
图-1 CA证书通信过程
如图下图:对称加密方式(http是属于透明传输不安全)
![](https://img-blog.csdnimg.cn/b4c4e2e12a3446108845ba881dafedbb.png)
如下图:非对称加密(非对称加密加密和解密过程会需要大量的计算,效率比较低)
ps:这一题答的时候,稍微有一点点混乱
4.了解http的状态码301和302的区别码?
- 301 :资源被永久重定向了。比如你的网站的网址更换了。
- 302 :资源被临时重定向了。比如你的网站的某些资源被暂时转移到另外一个网址
乐观锁和悲观锁了解吗
悲观锁:每次进行数据操作之前都会先加锁,如果没有获取锁就会阻塞,比如syncronized
乐观锁:乐观锁是基于版本号,线程对数据操作之前会获取该数据的版本号并保存,线程开始对数据执行更改。当要提交数据时线程会比较之前保存的版本号和内存中最新的版本号,如果相同则提交更改,否则就重试。
乐观锁问题:1.ABA问题,即中间修改的值会本无视掉。 2.若没有成功会一直重试,消耗计算机资源,降低计算机的性能
CAS了解吗?
1.CAS是属于一种乐观锁,它实现了原子性,只能更改一个值,若是对于代码块的更改就无能为力。CAS数据结构有三个值V(内存里面的值),P(线程获取的该内存的值),D(需要修改的值)。如果V=p修改值,否则就一直重试。
引用:1.CAS(乐观锁)以及ABA问题_cas,aba之类的问题-CSDN博客2.Java 面试指南 | JavaGuide(Java面试 + 学习指南)