- 博客(12)
- 收藏
- 关注
转载 Java基础技术基础面试【笔记】
Java基础技术基础面试【笔记】原文链接:Java基础技术基础面试【笔记】String、StringBuilder以及StringBuffer三者之间的区别?三者的区别可以从可变性,线程安全性,性能这三个部分进行说明可变性从可变性来说,String不可变,StringBuilder与StringBuffer可变因为在String类中,是使用只读字符数组保存字符串的,所以String是不可变的而StringBuilder与StringBuffer,两者都继承自AbstractStringBui
2021-03-08 11:23:49 154
转载 java基础技术集合面试【笔记】
java基础技术集合面试【笔记】原文链接:java基础技术集合面试【笔记】Hashmap:基于哈希表的 Map 接口的实现,此实现提供所有可选的映射操作,并允许使用 null 值和 null 键(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变另外,HashMap是非线程安全的,也就是说在多线程的环境下,可能会存在问题,而Hashtable是线程安全的HashMap 内部的数据结构?各个版本的实现略
2021-03-08 11:15:24 124
转载 Java ArrayList【笔记】
Java ArrayList【笔记】原文如下:Java ArrayList【笔记】ArrayListArrayList基本结构ArrayList 整体架构比较简单,就是一个数组结构源码中的基本概念index 表示数组的下标,从 0 开始计数elementData 表示数组本身DEFAULT_CAPACITY 表示数组的初始大小,默认是 10size 表示当前数组的大小,类型 int,没有使用 volatile 修饰,非线程安全modCount 统计当前数组被修改的版本次数,数组结构有变
2021-03-08 11:08:56 160
转载 Java LinkedList【笔记】
Java LinkedList【笔记】原文链接:Java LinkedList【笔记】LinkedListLinkedList 适用于要求有顺序,并且会按照顺序进行迭代的场景,依赖于底层的链表结构LinkedList基本结构LinkedList 底层数据结构是一个双向链表链表每个节点叫做 Node,Node 有 prev 属性,代表前一个节点的位置,next 属性,代表后一个节点的位置双向链表的头节点(first)的前一个节点是 null双向链表的尾节点(last)的后一个节点是 null
2021-03-08 11:04:30 173
转载 Java HashMap【笔记】
Java HashMap【笔记】原文链接:Java HashMap【笔记】HashMapHashMap 基本结构HashMap 底层的数据结构主要是数组 + 链表 + 红黑树其中当链表的长度大于等于 8 时,链表会转化成红黑树,当红黑树的大小小于等于 6 时,红黑树会转化成链表类注释1.允许 null 值,不同于 HashTable ,是线程不安全的2.load factor 默认值是 0.75,是均衡了时间和空间损耗算出来的值,较高的值会减少空间开销,但增加了查找成本,不扩容的条件:数组
2021-03-08 11:00:48 190
转载 Java TreeMap 和 LinkedHashMap【笔记】
Java TreeMap 和 LinkedHashMap【笔记】原文链接:Java TreeMap 和 LinkedHashMap【笔记】TreeMapTreeMap基本结构TreeMap 底层的数据结构就是红黑树,和 HashMap 的红黑树结构一样与HashMap不同的是,TreeMap 利用了红黑树左节点小,右节点大的性质,根据 key 进行排序,使每个元素能够插入到红黑树大小适当的位置,维护了 key 的大小关系,适用于 key 需要排序的场景TreeMap 常见属性//比较器,如果
2021-03-08 10:54:41 312
转载 Java HashSet和TreeSet【笔记】
Java HashSet和TreeSet【笔记】PS:HashSet、TreeSet 两个类是在 Map 的基础上组装起来的类原文链接:Java HashSet和TreeSet【笔记】HashSet类注释1.底层实现基于 HashMap,所以迭代时不能保证按照插入顺序,或者其它顺序进行迭代2.add、remove、contanins、size 等方法的耗时性能,是不会随着数据量的增加而增加的,这个主要跟 HashMap 底层的数组数据结构有关,不管数据量多大,不考虑 hash 冲突的情况下,时
2021-03-08 10:50:00 121
转载 Java基础技术JVM面试【笔记】
Java基础技术JVM面试【笔记】原文链接:Java基础技术JVM面试【笔记】JVMJVM 对 java 类的使用总体上可以分为两部分:一是把静态的 class 文件加载到 JVM 内存,二是在 JVM 内存中进行 Java 类的生命周期管理JVM 内存结构是什么样的?JVM 内存的主要分为五个区:方法区(Method Area)虚拟机栈(VM Stack)本地方法栈(Native method stack)堆(Heap)程序计数器(Program Counter Register
2021-03-08 10:43:13 184
转载 Java JVM【笔记】
Java JVM【笔记】原文链接:Java JVM【笔记】Java的平台无关性是如何实现的?Java源码首先被编译成字节码,再由不同的平台的JVM进行解析,Java语言在不同的平台上运行时不需要进行重新编译,Java虚拟机在执行字节码的时候,把字节码转换成具体平台上的机器指令为什JVM不直接将源码解析成机器码去执行?因为如果JVM将源码直接解析成机器码的话,那么每次执行的时候都需要进行像是语法语义之类的各种检查,也就是说,每次分析的时候这些结果都不会被保留,都要重新去编译,重新去分析,这样一直进
2021-03-08 10:29:50 316
转载 Java GC(垃圾回收机制)
Java GC(垃圾回收机制)(PS:篇幅很长的,样式都会重新整一下,比如使用二级)原文链接:Java GC【笔记】首先我们得知道,一个对象被判定为垃圾的标准是什么?对于Java对象来说,当不被其他的对象引用的时候,就可以看作为垃圾那么知道了标准,就需要制定算法来判定对象是不是垃圾,主要有两种,一个是引用计数算法,一个是可达性分析算法判定算法引用计数算法先说一下引用计数算法,顾名思义,就是用过判断对象的引用数量来决定这个对象是不是可以被回收,在这种机制下,每一个对象实例都有一个引用计数器,被
2021-03-08 10:15:06 255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人