Java

Java

  • ConcurrentHashMap JDK1.8 源码分析
    2021年04月13日

    ConcurrentHashMap JDK1.8 源码分析

    1 助记JDK 1.7使用的是segment分段锁,默认为16个segment,扩容分别在各自的segment进行。JDK 1.8使用的是Synchronized+CAS自旋,相应的内部结构和hashmap一样,改为了红黑树当Node数组为空,直接用CAS初始化或者插入数据当Node数组节点不为空,

    查看全文
  • SpringBoot 自动装配
    2021年04月12日

    SpringBoot 自动装配

    1 对比以前:在没有Spring之前,我们需要通过XML或者Java中定义@Bean 来把我们要用的jar装配到Spring中现在:Springboot提供了一个规范,只要按照这个规范定义好我们用的starter,它就会为我们自动装配。2 具体实现2.1 Springboot的核心注解@Enable

    查看全文
  • Java集合框架常见面试题(转)
    2021年04月12日

    Java集合框架常见面试题(转)

    1. 剖析面试最常见问题之 Java 集合框架1.1. 集合概述1.1.1. Java 集合概览1.1.2. 说说 List,Set,Map 三者的区别?1.1.3. 集合框架底层数据结构总结1.1.3.1. List1.1.3.2. Set1.1.3.3. Map1.1.4. 如何选用集合?1.1

    查看全文
  • ArrayList JDK1.8源码分析
    2021年04月11日

    ArrayList JDK1.8源码分析

    助记初始大小:单例,初始为10,扩容1.5倍mod: failfast问题时间复杂度add :O(1)add(index): O(n-index),因为需要数组移动get:O(1)最大容量:Integer.Max-8构造函数ArrayList 有三种方式来初始化以无参数构造方法创建 ArrayLis

    查看全文
  • HashMap JDK1.8源码分析
    2021年04月11日

    HashMap JDK1.8源码分析

    帮助记忆组成:Node数组+链表/红黑树数组:默认为0,用了单例模式,第一次调用初始化为16,扩容因子为0.75链表:长度大于8,且数组长度大于64,转为红黑树,长度小于6,转为链表hash索引:异或高四位,防止hash冲突扩容:重新散列法hash异或高四位,防止hash冲突static final

    查看全文
  • JVM 垃圾回收器
    2021年04月11日

    JVM 垃圾回收器

    1、GC的基础知识什么是垃圾没有任何引用指向的一个对象 或者 多个对象的循环引用(浮动垃圾)如何定位垃圾引用计数(ReferenceCount): python根可达算法(RootSearching) : java常见的垃圾回收算法标记清除(mark sweep):位置不连续 产生碎片 效率偏低(两

    查看全文
  • JVM详解
    2021年04月07日

    JVM详解

    1、Class 加载过程JVM的模式解释执行编译执行混合模式(某个方法重复运行count次,JVM就会把这个方法先编译,下次运行提高效率)Class的格式(16进制)参考这篇文章具体加载过程通过类加载器把字节码加载到JVM内存中,生成Class对象,并放入缓存中。Loading 加载 :二进制码加载

    查看全文
  • Java中常用锁的介绍
    2021年04月04日

    Java中常用锁的介绍

    前言本篇主要介绍java中使用到的各种锁以及使用场景和原理, 写的不对的地方可以评论指出。Object中的MarkWordSynchronized介绍在 JDK 1.6 之前,synchronized 是重量级锁,效率低下。从 JDK 1.6 开始,synchronized 做了很多优化,如偏向锁、

    查看全文
  • 基于Wait, NotifyAll的阻塞队列实现
    2021年04月01日

    基于Wait, NotifyAll的阻塞队列实现

    考察点多线程并发,需要用到synchronized容器满了后,需要进行waitnotifyAll后,还需要判断容器是否满了或者空了,因为notifyAll是唤醒全部线程,线程开始竞争锁,先拿到锁的运行结束后,容器状态发生变化,后进的线程还是要进行状态的判断代码package com.suanfa;i

    查看全文