随笔分类 - JAVA八股文
摘要:什么是刚性事务和柔性事务? 先要知道CAP理论是什么? C是一致性 A是可用性 P分区容错性 三个关键要素,只能有两两组合在一起。 BASE理论是什么? 简单理解就是最终一致性、允许中间状态,是AP理论的延伸。 刚性事务就是A(可用性)P(分区容错性) 柔性事务就是BASE理论
阅读全文
摘要:1.beanDefinition 查看代码 public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement { //单例 String SCOPE_SINGLETON = ConfigurableBeanF
阅读全文
摘要:1.CMS使用三色回收法清除垃圾,老年代使用标记-清除算法。 并发清除阶段使用 - 增量更新 2.具体工作流程: 初始标记:从GC Root根节点扫描直接引用到的对象。(需要SWT) 并发标记:与用户线程代码并行执行,扫描对象图关系。 预清除:关注并发标记到重新标记阶段对象引用的变化,目前是减少重新
阅读全文
摘要:老年代普生: 1.大对象直接进入老年区(XX:Pretenuresize Threshold),不会放在新生代分配 2.动态年龄判断,当对象年龄1,年龄2....年龄15加起来大于Survivor一半时,进入到老年代。 3.新生代minor gc年龄到15次后会进入到老年代。 4.空间担保策略(CM
阅读全文
摘要:通过数组与值实现,看源码 public void add(long x) { Cell[] as; long b, v; int m; Cell a; // 尝试直接通过CAS操作累加base的值 // 如果cells数组不为null,或者通过CAS操作未能成功累加base的值 //相当于是更新ba
阅读全文
摘要:关键信息 state(volatile修饰)/双向链表数据结构 AQS有那些实现? ReentrantLock、Semaphore、CountDownLatch AQS分为同步队列和条件队列 public class BoundedBuffer<T> { private final Lock loc
阅读全文
摘要:1.对象有三个区域 对象头/实例数据/对其填充 对象头又包含Mark Word/类型指针->指向方法区/数组长度 Mark Word如下图所示 2.偏向锁 当线程首次进入synchronized,他会将对象头的mark work更新为偏向锁。 JDK已废除 3.轻量锁 当线程获取已被偏向的锁时,会将
阅读全文
摘要:1.synchronized 2.ReentrantLock(可重入锁) public class Main { ReentrantLock lock = new ReentrantLock(); private ThreadLocal stream = new ThreadLocal(); pub
阅读全文
摘要:ThreadLocal有内部类ThreadLocalMap,ThreadLocalMap是ThreadLocal的核心 1.每个线程下的有一个ThreadLocalMap static class ThreadLocalMap { static class Entry extends WeakRef
阅读全文
摘要:1.参数说明 acc:上下文 corePoolSize:核心工作线程 maximumPoolSize:最大工作数量线程,包含了核心工作线程 keepAliveTime:非核心线程最大空闲回收时间 TimeUnit:指定keepAliveTime时间单位 workQueue:工作队列。如事件都让可用的
阅读全文
摘要:1.初始化 2.就绪 - 运行中 存在就绪是因为CPU有时间片,一个线程无法一直运行,需要切换到就绪,等待获得CPU执行时间片。 3.阻塞 synchronized 4.等待 object.wait(); object.join(); 唤醒通过 object.notify(); object.not
阅读全文
摘要:1添加源码 final V putVal(K key, V value, boolean onlyIfAbsent) { if (key == null || value == null) throw new NullPointerException(); int hash = spread(key
阅读全文
摘要:1.开放寻址法 出现hash冲突,一直寻找可用的hash地址,直到找到不冲突的地址即可。 2.链地址法 参考hashMap 3.在哈希法 一旦出现哈希冲突,更换函数方法。知道找到不冲突的哈希值 4.一致性哈希法 分布式一致性哈希算法,将哈希归纳到不同位置上,近可能均匀,减少冲突。
阅读全文
摘要:subList是arrayList的内部类 private class SubList extends AbstractList<E> implements RandomAccess { private final AbstractList<E> parent; private final int
阅读全文
摘要:public class LRUCache { int cap; LinkedHashMap<Integer, Integer> linkedHashMap = new LinkedHashMap<>(); LRUCache(int cap){ this.cap = cap; } public in
阅读全文
摘要:ArrayList:是数组数据结构,扩容是通过扩容数组。可快速访问其中一个元素或修改。 ListedList:是链表数据结构,可高效的实现中间元素修改/删除。但是访问没有数组高效。 vector:是强同步的ArrayList ArrayList扩容步骤 1.判断申请的元素后,元素数量超过现有容量。
阅读全文
摘要:删除集合方法 public static void main(String[] args) { ArrayList<Integer> arrayList = new ArrayList(); arrayList.add(1); arrayList.add(2); arrayList.add(3);
阅读全文
摘要:1.fail-fast(快速失败) 比如程序执行到1/0的时候,无法进行计算。则直接抛出异常,进行提示。 如HashMap中,添加一个新的元素后,modCount会增加。modCount会传递给创建迭代器,而迭代器会维护expectedModCount,则使用迭代器期间只能通过迭代器修改。否则直接促
阅读全文
摘要:1.源码全集如下 查看代码 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { @java.io.Serial private static final l
阅读全文
摘要:1.方法多态 重载:同一个方法,兼容处理不同参数处理。 重写:子类重写父类。 2.对象 类继承:子类继承父类 接口实现:不同类实现不同接口 多态还分为:编译多态和运行多态 编译多态:在编译器根据参数判断执行哪个方法。运行多态:子类重写父类方法,在运行的时候。根据变量指向的实际对象类型带调用对象。
阅读全文

浙公网安备 33010602011771号