0%

建造者模式

也称为生成器模式,将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示

核心概念

  • Builder 建造者接口,定义创建一个Product对象所需要的各个部件的操作
  • ConcreteBuilder 具体的构造者实现,实现各个部件的创建,并负责组装Product对象的各个部件,同时还提供一个让用户获取组装完成后的产品对象的方法
  • Director 指导者,用来使用Builder接口,以一个统一的过程来构建所需的Product对象
  • Product 产品,表示被建造者构建的复杂对象
阅读全文 »

Runner使用

如果需要在SpringApplication启动后执行一些逻辑,可以使用ApplicationRunner或CommandLineRunner接口,这两个接口都是只有一个run方法

1
2
3
4
5
public interface ApplicationRunner {

void run(ApplicationArguments args) throws Exception;

}
1
2
3
4
5
6
public interface CommandLineRunner {


void run(String... args) throws Exception;

}
阅读全文 »

SSL协议

SSL协议全称为Secure Sockets Layer,安全套接字,该协议通过加密来保护客户个人资料,通过认证和完整性检查来确保交易安全,SSL协议在TCP上一层的应用层被实现,不会影响上层协议(如HTTP、SMTP等),但是可以保证上层协议的网络通信安全

浏览器内核

微软新版本操作系统的Edge浏览器使用的内核是EdgeHTML,GoogleChrome、Opera等浏览器使用的是Blink内核,firefox使用的主要是Gecko内核,苹果的Safari在使用WebKit内核

浏览器内核诞生的时间顺序为:Gecko ->Trident -> KHTML -> WebKit -> Presto -> Blink -> Edge -> Goanna。

Gecko作为老牌的内核,而且一直以来都被firefox支持,作为微软IE浏览器的内核Trident、KHTML以及Presto都走到了终点,不再得到支持。微软放弃了Trident,进而转向了EdgeHTML内核。

三个新锐内核EdgeHTML、Blink和Goanna都是在2010年以后诞生的,其中由微软主推的EdgeHTML,谷歌公司主推的Blink,这两个内核将在未来很长一段时间内发挥重要作用

线程死锁

死锁是由于多个线程间相互等待资源,而又不释放资源导致的无穷无尽的等待

造成死锁的条件

  • 互斥条件:一个资源每次只能被一个线程使用
  • 请求与保持条件:一个线程因请求资源而阻塞时,对已获得的资源保持不放
  • 不剥夺条件:线程已获得的资源,在未使用完之前,不能强行剥夺
  • 循环等待条件:若干线程之间形成一种头尾相连的循环等待资源关系

只有以上四个条件同时满足时,才会造成死锁,所以破坏死锁的方式也就是只要使得四个条件中的一个不被满足即可