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 做了很多优化,如偏向锁、

    查看全文
  • 手写基于Netty的RPC框架
    2021年03月29日

    手写基于Netty的RPC框架

    1 简介1.1 什么是RPC框架?通俗意义上来说,RPC是调用本地接口,实现方法在远程端实现。1.2 如何实现需要用到通信RPC肯定是1对多的关系模式,所以需要连接池管理客户端客户端发送接口信息,肯定需要用到序列化多个客户端如何鉴别,如何返回结果,肯定需要协议(协议就需要包括requestId等信息

    查看全文