面向对象的六原则一法则

面向对象的六原则一法则单一职责原则(Single-ResponsibilityPrinciple)其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。职责过多,可能引起它

简单工厂模式

简单工厂模式概念简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactoryMethod)模式。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。值得注意的是,简单工厂模式并不属于23种GO

单例模式

单例模式确保一个类只有一个实例,并提供该实例的全局访问点。用途单例模式有以下两个优点:在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如网站首页页面缓存)。避免对资源的多重占用(比如写文件操作)。实现方式我们知道,一个类的对象的产生是由类构造函数来完成的。如果一个类对外提供了p

经典进程同步问题

经典进程同步问题1.哲学家进餐问题五个哲学家围着一张圆桌,每个哲学家面前放着食物。哲学家的生活有两种交替活动:吃饭以及思考。当一个哲学家吃饭时,需要先拿起自己左右两边的两根筷子,并且一次只能拿起一根筷子。下面是一种错误的解法,如果所有哲学家同时拿起左手边的筷子,那么所有哲学家都在等待其它哲学家吃完并

TreeMap源码

TreeMap源码简介听名字就知道,TreeMap是由Tree和Map集合有关的,没错,TreeMap是由红黑树实现的有序的key-value集合。publicclassTreeMap<K,V>extendsAbstractMap<K,V>implementsNavigabl

LinkedHashMap源码

LinkedHashMap源码简介LinkedHashMap继承自HashMap,在HashMap基础上,通过维护一条双向链表,解决了HashMap不能随时保持遍历顺序和插入顺序一致的问题。除此之外,LinkedHashMap对访问顺序也提供了相关支持。在一些场景下,该特性很有用,比如缓存。在实现上

LinkedList源码阅读

LinkedList源码简介LinkedList是一个实现了List接口和Deque接口的双端链表。LinkedList底层的链表结构使它支持高效的插入和删除操作,另外它实现了Deque接口,使得LinkedList类也具有队列的特性;LinkedList不是线程安全的,如果想使LinkedList

ArrayList源码分析

ArrayList源码ArrayList简介ArrayList的底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。它继承于AbstractLi

fail-fast和fail-safe

fail-fast和fail-safe什么是fail-fast首先我们看下维基百科中关于fail-fast的解释:Insystemsdesign,afail-fastsystemisonewhichimmediatelyreportsatitsinterfaceanyconditionthatisl