以生活的例子来解释编程中的名词

死锁

死锁就是两个或两个以上的线程争夺同一资源而形成的一种僵持状态,这种状态在没有外力的作用下将一直持续下去

例子:比如馍夹菜这道菜,需要馒头和菜,A线程抢到了馒头,而B线程抢到了菜,这时A需要B的菜,而B需要A的馒头,他们都不愿放弃手中的资源而一直僵持下去,这种就叫做死锁

活锁

活锁简单来说就是同时释放,又同时拿,还是上面那个例子,A放弃了馒头,B也放弃了菜,可他们又同时拿了资源,又会造成僵持

例子: 在路上走路的时候,迎面来了一个人,这时你想给他让路,所以你向左边移动,而他也想给你让路,所以他也向左边移动,此时你俩又是无法通过,又彼此让路,又无法通过。。。。就这样一直持续下去,这种就是活锁。

IOC

IOC(Inversion of Control) 控制反转,你要明白是什么被反转了,是对象的获取过程被反转了,之前是我们手动去new一个对象,不需要的时候在销毁对象,手动去管理对象之间的依赖关系,而现在是将对象托管给容器管理。。它有两种实现方式,一种是DI(Dependency Injection)依赖注入,也是最常见的方式,另一种是DL(Dependency Lookup)依赖查找

例子:你去餐馆吃饭,服务员只需要把菜单给你,你点菜就可以了,而这里菜就是对象,你不需要知道这个菜是怎们做的,材料和菜谱什么的你都不需要关心,这种方式就是IOC,你无需关心

HTTPS

https是一种加密的网络传输协议,它不同于http,http是无状态的,并且信息是可篡改的。客户端在第一次是通过非对称加密拿到秘钥,客户端访问https服务器时会发送公钥,https服务器通过CA颁发的证书利用公钥对信息(秘钥)进行加密,客户端可以利用私钥拿到这个信息(秘钥),以后通信就可以用这个秘钥进行对称加密

例子: http 就好比飞鸽传输,飞鸽把信息直接绑在腿上,任何人都可以截获这个飞鸽并且把信息更换掉,可见这种方式是极其不安全的,那怎么办了?我们可以把信息加密不就好了,比如字母每个都+1,这样 abc就变成了 bcd ,服务端在收到这个信息之后再把字母-1 就又变成了abc,可这个 +1 的信息怎么通知服务端呢,如果别人拿到了这个信息不是就可以轻易破解我们的信息并篡改他们了吗,这时就需要用到了非对称加密,通过公钥对信息加密,再通过私钥进行加密。而 https 就好比 客户端在飞鸽上绑了一个开着锁的盒子发给服务端,服务端将 加密秘钥 (+1信息)放到盒子里并锁上锁发给客户端,这样客户端就可以通过钥匙打开锁,并拿到这个秘钥,以后都通过这个秘钥对信息加密。在这里CA证书就充当了盒子的身份。

-------------本文结束感谢您的阅读-------------