合集-JAVA
摘要:1、自增 public class ZiZeng { public static void main(String[] args) { int i = 1; i = i++;//运行此行后,此时i=1 int j = i++; int k = i + ++i * i++; System.out.pr
阅读全文
摘要:1、Spring Bean的作用域之间有什么区别? 在spring中,可以在<bean>的scope属性设置bean的作用域,以决定这个bean是单实例的还是多实例的; 默认情况下,spring只为每个ioc容器声明的bean创建唯一一个实例,整个ioc容器范围内都能共享这个实例,所有后续的getB
阅读全文
摘要:1、redis持久化 Redis提供了两种不同的持久化方式: RDB(Redis DataBase): 在指定的时间间隔内将内存中的数据集快照写入磁盘,恢复时将快照文件读到内存里; 备份是如何执行的: Redis会单独创建一个子进程(fork)来进行持久化,会先将数据写入到一个临时文件中,待持久化过
阅读全文
摘要:JUC: 指java中java.util.concurrent包;(concurrent:并发) JUC分类: java.util.concurrent java.util.concurrent.atomic(atomic:原子性) java.util.concurrent.locks(locks:
阅读全文
摘要:1、CAS: > compareAndSet(期望值,修改值) 比较并交换; /** * CAS: > compareAndSet() * 比较并交换 */ public class CASDemo { public static void main(String[] args) { AtomicI
阅读全文
摘要:ArrayBlockingQueue:由数组结构组成的有界阻塞队列; LinkedBlockingQueue:由链表结构组成的有界阻塞队列(但大小默认值为:Integer.MAX_VALUE); PriorityBlockingQueue:支持优先级排序的无界阻塞队列; DelayQueue:使用优
阅读全文
摘要:枚举类 @Getter public enum CountryEnum { ONE(1, "燕"), TWO(2,"赵"), THREE(3,"韩"), FOUR(4,"魏"), FIVE(5,"齐"), SIX(6,"楚"); private Integer code; private Strin
阅读全文
摘要:1、公平锁和非公平锁 公平锁:是指多个线程按照申请锁的顺序来获取锁,类似于排队打饭,先来后到; 非公平锁:是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁,在高并发的情况下,有可能或造成优先级反转或者饥饿的情况; 公平/非公平 在并发包ReentrantLo
阅读全文
摘要:1、ArrayList /** * 集合类不安全问题 * 1、故障现象: * java.util.ConcurrentModificationException(并发修改异常) * 2、解决方案 * 3.1、new Vector<>(); * 3.2、Collections.synchronized
阅读全文
摘要:基本概念: 两个或两个以上的类相互引用、互相依赖; Java使用构造器不能解决循环依赖问题; Java可以使用setter解决循环依赖问题; Spring中: 内部通过三级缓存来解决循环依赖问题(DefaultSingletonBeanRegistry) 只有单例的 bean 会通过三级缓存提前暴露
阅读全文
摘要:AQS:抽象的队列同步器 是用来构建锁或者其它同步器组件的重量级基础框架及整个UC体系的基石,通过内置的FO队列来完成资源获取线程的排队工作,并通过一个int类型变量表示持有锁的状态; AQS为什么是JUC内容中最重要的基石? 在juc下countDownLatch、Semaphore、Cyclic
阅读全文
摘要:java.util.concurrent.locks.LockSuport 用于创建锁和其他同步类的基本线程阻塞原语。 这个类与每个使用它的线程相关联,一个许可证(在Semaphore类的意义上)。 如果许可证可用,则呼叫park将park返回,在此过程中消耗它; 否则可能会阻止。 致电unpark
阅读全文
摘要:int corePoolSize:线程池中常驻的核心线程数; int maximumPoolSize:线程池中能够容纳同时执行的最大线程数,此值必须大于等于1; long keepAliveTime:多余的空闲线程的存活时间,当前线程池数量超过corePoolSize的时候, 当空闲时间达到keep
阅读全文
摘要:2、线程池的使用方式 常见三种方式(重要) Executors.newFixedThreadPool(int);//创建一个线程池,该线程池重用固定数量的从共享无界队列中运行的线程。 Executors.newSingleThreadExecutor();//创建一个使用从无界队列运行的单个工作线程
阅读全文
摘要:import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; class MyThread3 implements Callable<Integer>{ @Override public Integer c
阅读全文
摘要:1、原始构成 synchronized是关键字,属于JVM层面; monitorenter(底层是通过monitor对象完成,其实wait / notify等方法也依赖 monitor对象,只有在同步块或方法中才能调用wait / notify等方法); monitorexit Lock是具体的类(
阅读全文
摘要:1、强引用(默认使用) //强引用 public class StrongReferenceDemo { public static void main(String[] args) { Object obj1 = new Object();//这样定义的,默认就是强引用 Object obj2 =
阅读全文
摘要:1、java.lang.StackOverflowError 2、java.lang.OutOfMemoryError:java heap space 3、java.lang.OutOfMemoryError:GC overhead limit exceeded 4、java.lang.OutOfM
阅读全文
摘要:== 和 equals的区别 ==:比较的是对象地址; equals的分析: Integer:会先判断当前传入的Object类型的对象是否是Integer类型, 如果不是则返回 false,如果是则将其强转成Integer类型、并判断两个Integer值是否相同、并返回; String:先判断传入的
阅读全文
摘要:/** * 缓冲区(Buffer):在java NIO 中负责存储数据;缓冲区就是数组,存储不同类型的数据; * * 根据不同的类型(boolean类型除外),提供了相应类型的缓冲区; * ByteBuffer * CharBuffer * ShortBuffer * IntBuffer * Lon
阅读全文