文章分类 - 面试准备
摘要:Callable和Runnable的区别 Runnable 的缺陷: 不能返回一个返回值 不能抛出 checked Exception Callable的call方法可以有返回值,可以声明抛出异常。和 Callable 配合的有一个 Future 类,通过 Future 可以了解任务执行情况,或者取
阅读全文
摘要:如何使用读写锁 private ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); private Lock r = readWriteLock.readLock(); private Lock w = readWriteLock.
阅读全文
摘要:在java.util.concurrent.atomic包里提供了一组原子操作类: 基本类型:AtomicInteger、AtomicLong、AtomicBoolean; 引用类型:AtomicReference、AtomicStampedRerence、AtomicMarkableReferen
阅读全文
摘要:Java线程的实现方式 方式1:使用 Thread类或继承Thread类 // 创建线程对象 Thread t = new Thread() { public void run() { // 要执行的任务 } }; // 启动线程 方式2:实现 Runnable 接口配合Thread 把【线程】和【
阅读全文
摘要:JDK8中的HashMap与JDK7的HashMap有什么不一样? 1. JDK8中新增了红黑树,JDK8是通过数组+链表+红黑树来实现的 2. JDK7中链表的插入是用的头插法,而JDK8中则改为了尾插法 3. JDK8中的因为使用了红黑树保证了插入和查询了效率,所以实际上JDK8中 的Hash算
阅读全文
摘要:ArrayList: List特点:元素有放入顺序,元素可重复 。 存储结构:底层采用数组来实现的。 Cloneable(此处理解有些问题,到时候需要再看下) 支持拷贝:实现Cloneable接口,重写clone方法、方法内容默认调用父类的clone方法。 2.1、浅拷贝 基础类型的变量拷贝之后是独
阅读全文
摘要:BlockingQueue,是java.util.concurrent 包提供的用于解决并发生产者 - 消费者问题的最有用的类,它的特性是在任意时刻只有一个线程可以进行take或者put操作,并且BlockingQueue提供了超时return null的机制,在许多生产场景里都可以看到这个工具的身
阅读全文
摘要:1. Semaphore 是什么? Semaphore 字面意思是信号量的意思,它的作用是控制访问特定资源的线程数目,底层依赖AQS的状态State,是在生产当中比较常用的一个工具类 2. 怎么使用 Semaphore?(加锁、解锁看笔记) 2.1 构造方法 public Semaphore(int
阅读全文
摘要:ReentrantLock是一种基于AQS框架的应用实现,是JDK中的一种线程并发访问的同步手段,它的功能类似于synchronized是一种互斥锁,可以保证线程安全。 相对于 synchronized, ReentrantLock具备如下特点: 1、可中断 2、可以设置超时时间 3、可以设置为公平
阅读全文
摘要:ReentrantLock ReentrantLock是一种基于AQS框架的应用实现,是JDK中的一种线程并发访问的同步手段,它的功能类似于synchronized是一种互斥锁,可以保证线程安全。而且它具有比synchronized更多的特性,比如它支持手动加锁与解锁,支持加锁的公平性 使用Reen
阅读全文
摘要:如何解决线程并发安全问题? 实际上,所有的并发模式在解决线程安全问题时,采用的方案都是序列化访问临界资源。即在同一时刻,只能有一个线程访问临界资源,也称作同步互斥访问 Java 中,提供了两种方式来实现同步互斥访问:synchronized 和 Lock 加锁目的:序列化访问临界资源,即同一时刻只能
阅读全文
摘要:并发和并行 并行: 指在同一时刻,有多条指令在多个处理器上同时执行 并发: 指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行 并行在多处理器系统中存在,而并发可以在单处理
阅读全文
摘要:引入spring boot kafka依赖,详见项目实例:spring-boot-kafka <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </depen
阅读全文
摘要:引入maven依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.4.1</version> </dependency> 消息发送端代码 packa
阅读全文
摘要:对于kafka来说,一个单独的broker意味着kafka集群中只有一个节点。要想增加kafka集群中的节点数量,只需要多启动几个broker实例即可。为了有更好的理解,现在我们在一台机器上同时启动三个broker实例。 首先,我们需要建立好其他2个broker的配置文件: cp config/se
阅读全文
摘要:安装前的环境准备 由于Kafka是用Scala语言开发的,运行在JVM上,因此在安装Kafka之前需要先安装JDK yum install java-1.8.0-openjdk* -y kafka依赖zookeeper,所以需要先安装zookeeper wget https://archive.ap
阅读全文
摘要:Kafka的使用场景 日志收集:一个公司可以用Kafka收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。 消息系统:解耦和生产者和消费者、缓存消息等。 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活
阅读全文

浙公网安备 33010602011771号