摘要:
ReentrantLock VS ReentrantReadWriteLock VS StampedLock 锁 特性 是否支持重入 是否支持锁升级 是否支持Condition 适合场景 ReentrantLock 独占可重入 是 无 是 纯写入 ReentrantReadWriteLock 非独占 阅读全文
摘要:
ThreadLocal类顾名思义可以理解为线程本地变量。也就是说如果定义了一个ThreadLocal,每个线程往这个ThreadLocal中读写是线程隔离,互相之间不会影响的。它提供了一种将可变数据通过每个线程有自己的独立副本从而实现线程封闭的机制。Thread类有一个类型为ThreadLocal. 阅读全文
摘要:
并发编程中的三个概念 原子性:即一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 可见性:可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。 有序性:即程序执行的顺序按照代码的先后顺序执行。 内存模型JMM以及共享变 阅读全文
摘要:
synchronized是Java中的关键字,是一种同步锁,按类型可以分为同步方法和同步代码块。 非同步实例方法&同步实例方法: 非同步实例方法: public class TestSync { public static void main(String[] args) throws Interr 阅读全文
摘要:
进程vs线程 在计算机中,我们把一个任务称为一个进程,浏览器就是一个进程,视频播放器是另一个进程,类似的,音乐播放器和Word都是进程。 某些进程内部还需要同时执行多个子任务。例如,我们在使用Word时,Word可以让我们一边打字,一边进行拼写检查,同时还可以在后台进行打印,我们把子任务称为线程。 阅读全文
摘要:
用于描述类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,以及怎样分配职责。 1.责任链模式(Chain of Responsibility) 为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。在这种模式中,通常每个接收者都包含对另一个接收者的引用。 阅读全文
摘要:
用于描述如何将类或对象按某种布局组成更大的结构,关注类和对象的组合。 1.适配器模式(Adapter) 作为两个不兼容的接口之间的桥梁,将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器,将内存卡 阅读全文
摘要:
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵 阅读全文
摘要:
1、kafka基本概念 参照 kafka 基本概念 kafka是一个多分区、多副本且基于zookeeper协调的分布式消息系统。也是一个分布式流式处理平台,它以高吞吐、可持久化、可水平扩展、支持流数据处理等多种特性而被广泛使用。 Producer:生产者,也就是发送消息的一方。生产者负责创建消息,然 阅读全文
摘要:
在spring应用中如果需要订阅kafka消息,通常情况下我们不会直接使用kafka-client, 而是使用更方便的一层封装spring-kafka。 在spring-kafka在运行时会启动两类线程,一类是Consumer线程,另一类是Listener线程。前者用来直接调用kafka-clien 阅读全文