命令模式 Posted on 2020-05-30 | In patterns 简介命令模式,通过对请求命令的封装,对命令的请求方和执行方进行解偶,书本上举例了顾客点餐的过程,顾客下单点餐,然后服务员将菜单拿给厨师制作,通过菜单实现了顾客与服务员,服务员与厨师之间的解偶。 Read more »
工厂模式 Posted on 2020-05-24 | In patterns 简介工厂模式,顾名思义,就是制造对象的工厂。在学习之前,是存在很大的误解的,之前认识的工厂是简单工厂,它并不属于工厂模式的范畴,真正的工厂模式有两种,分别是工厂方法模式、抽象工厂模式。 工厂方法模式是使用抽象方法,使用子类继承的方式去实现。抽象工厂模式是抽象出一个工厂的接口,用具体的工厂去实现接口,然后采用组合的方式,去解藕。总而言之,两者使用的场景不一样,感觉差别挺大。 Read more »
策略模式 Posted on 2020-04-15 | In patterns 简介《Head Filst 设计模式》的第一章,讲的就是策略模式,策略模式算是一切模式的根本。在我理解看来,所有的模式都是由于随着业务的不断扩大,为了使得系统具有良好的扩展性、维护性而产生的,一种设计模式反应了很多个类之间的关系,使得系统耦合性更低,更容易扩展和维护。 Read more »
单例模式 Posted on 2020-04-12 | In patterns 简介单例模式,也叫单件模式。顾名思义,就是程序中只有一个实例。一般在我们实际工作中,会经常遇到这个模式,所以,掌握这个模式是应该的。 Read more »
是时候揭开线程池这块面纱了(二) Posted on 2020-03-18 | In concurrent 线程池状态定义在简单介绍完线程池的基本概念后,这篇文章我们来分析一下,线程池它具体是如何工作的。首先我们看一下线程池的状态。线程池的设计是这样子的,它将线程池的状态和目前工作线程的线程数用一个变量来进行了存储,就是ctl变量 Read more »
AQS与ReentrantLock Posted on 2020-03-16 | In concurrent 定义AQS是并发体系中一个非常重要的类,ReentrantLock就是基于AQS实现的,AQS底层使用了LockSupport类实现对线程的等待通知机制,相比于wait和notify方法,使用的更加的灵活,所以,要学习并发线程的底层知识,这个类你必须要学明白。 Read more »
排序算法 Posted on 2020-03-14 | In algorithm 今日复习任务:实现数据从小到大的排序方式,分别有冒泡、选择、插入、快排、归并 冒泡排序思想:大的数往往上冒,每遍历一次,后面的几位是排好顺序的。第一次遍历得到最大的数,在末尾,第二次遍历,次大的数在倒数第二位,需要遍历n-1次,所有的才能排好顺序。 Read more »
双向链表LinkedList Posted on 2020-03-13 | In collection 定义LinkedList的本质是双向链表,与ArrayList相比,LinkedList的插入和删除速度更快,但是随机访问速度则很慢。LinkedList除了实现AbstractLIst抽象类外,还实现了另一个接口Deque,即double-ended queue,这个接口同时具有队列和栈的性质。 Read more »
ArrayList顺序表 Posted on 2020-03-11 | In collection 定义ArrayList的本质是顺序表,内部实现是使用数组存储的,集合扩容时会创建更大的数组空间,把原来的数据复制到新数组中。ArrayList支持对元素的快速随机访问,但是插入和删除时速度会很慢,因为这个过程可能要移动其他的元素。 Read more »
是时候揭开线程池这块面纱了(一) Posted on 2020-03-04 | In concurrent 引言 今天在上班的路上,想到一个例子,就是一个病人感染上了新冠病毒要上医院去住院隔离治疗,方舱医院如果床位不够,就会导致医院响应不了病人的请求,只能拒绝。但是要能够响应又得临时搜集资源、组建材料搭建病房和床位,这必然会消耗大量的时间,也会耽搁了病人的病情。那么,要是实现了床足够多,达到床等人的话,就能够迅速的接待病人,进行隔离治疗,使病情得到及时的控制。 Read more »