摘要:
什么是单例模式 单例模式指的是,保证一个类只有一个实例,并且提供一个可以全局访问的入口。 为什么需要使用单例模式 那么我们为什么需要单例呢?其中一个理由,那就是为了节省内存、节省计算。因为在很多情况下,我们只需要一个实例就够了,如果出现更多的实例,反而纯属浪费。 下面我们举一个例子来说明这个情况,以 阅读全文
摘要:
在 CopyOnWriteArrayList 出现之前,我们已经有了 ArrayList 和 LinkedList 作为 List 的数组和链表的实现,而且也有了线程安全的 Vector 和 Collections.synchronizedList() 可以使用。所以首先就让我们来看下线程安全的 V 阅读全文
摘要:
在没有读写锁之前,假设使用普通的 ReentrantLock,那么虽然保证了线程安全,但是也浪费了一定的资源,因为如果多个读操作同时进行,其实并没有线程安全问题,可以允许让多个读操作并行,以便提高程序效率。 但是写操作不是线程安全的,如果多个线程同时写,或者在写的同时进行读操作,便会造成线程安全问题 阅读全文
摘要:
CPU 密集型任务 CPU 密集型任务,比如大量复杂计算需要耗费 CPU 资源的任务。对于这样的任务最佳的线程数为 CPU 核心数的 1~2 倍,如果设置过多的线程数,实际上并不会起到很好的效果。此时假设我们设置的线程数量是 CPU 核心数的 2 倍以上,因为计算任务非常重,会占用大量的 CPU 资 阅读全文
摘要:
在了解Quorum机制之前,先回顾一下数据一致性 强一致性:在任意时刻,从任意不同副本取出的值都是一样的。 弱一致性:有时泛指最终一致性,是指在任意时刻,可能由于网络延迟或者设备异常等原因,不同副本中的值可能会不一样,但经过一段时间后,最终会变成一样。 显然,我们更想要做到强一致性的这种效果,那么有 阅读全文
摘要:
CAP理论及BASE理论的关系 base理论是在cap理论的基础上发展的,cap描述了分布式系统中数据一致性,可用性,分区容错性之间的制约关系。当你选择其中两个的时候,就不得不对另外一个做出一定的牺牲。 base理论则是对cap理论的实际应用,也就是在分区和副本存在的前提下,通过一定的系统设计方案, 阅读全文