• 韩顺平java510-515要点笔记


    510

    1.如何排查异常

    先写出对的,再进行取反。

    2.Arraylist使用事项

    可以放空元素,并且可以加多个

    底层是用数组实现的

    解读源码

    ArrayList基本等同vector,但是线程不安全,但是快

    Synchronize做线程互斥的

    3.ArrayList的扩容机制

    先说结论,再分析源码

    Debug 画图

    有些难度

    (1)维护数组

    数据最终存在elementdata

    属于Object的数组elementdata

    (2)当创建ArrayList对象

    构造器

    传进去一个整数

    则初始化 刚开始是0,空间为0

    (就是总会有冗余)

    transient 表示瞬间的;短暂的 ;表示属性不会被序列化

    510Arraylist底层执行机制

    步骤:(抑制警告

    解读源码

    无参构造器创建ArrayList对象

    for循环,添加1-10个数据

    构造器是什么运行的

    执行的是

    默认的elementdata是什么样子

    第一次初始化就是一个空数组

    第一次添加会进行装箱

    先进到integer

    再进入到add方法(确认capacity容量如何)

    执行添加的一个方法

    不是直接上来就添加

    因为可能内存不够

    确认大小

    是不是够我添加一个数据

    先确定是否要扩容

    然后第二步才会把

    还要确定要不要真正要扩容

    modCount++记录集合被修改的次数

    每一次添加都要去瞅一眼

    第一次进来,0+0还是0

    第一次不是用扩容

    先把其大小赋值

    按照1.5倍来扩容

    第一次很遗憾,不扩容

    第二次再扩

    Huge

    Arrays.copyOf

    默认还是空)

    //默认情况下,debug显示的数据是简化后的

    如果希望看到完整的,需要做设置

    不然看到的是被阉割的数据

    可以看出扩容并不是随便扩容的

    编写程序时的快捷方法也是人的逻辑实现的

    都是人写的为了让后来者更加方便

    511底层源码2

    构造器 initialcapacity

    分析有参构造

    创建了指定大小的elementdata数组

    512 vector

    最大特点:线程安全

    synchronize使线程同步

    (同时操作)

    513 vector底层源码

    扩容机制

    514linkedlist底层结构

    链表和队列

    添加和删除效率比较高,涉及到扩容,不是通过数组来实现

    简单的双向链表

    “岁月如鎏金般闪烁”

    515linkedlist源码分析

    crud增删改查

    为什么要看源码,是他的底层实现逻辑与方法

    Remove(指定删除位置)

    默认删除的是第一个linkedlist.remove( )

    //first = next

            最后,想谈谈我目前对源码的认识,为什么老韩一直告诫我们要去看源码,因为你只有看源码才可能会明白底层,不光知道这个方法具体是做什么的,能够实现什么效果,我们还要了解其具体是怎么实现,因为底层的方法也是前人写的,他们的方法、接口,之后添加到了编译器中,代表了这个方法的常用性,并且为什么这个写法,肯定也是经历了无数次的检验。

            那么我们能够去看一些好的代码书写思路,并且弄明白其具体是怎么实现的,必然会大大提高我们的水平,这就证明了为什么老韩说:“想拿高薪,就要看源码。”因为你只有懂得了底层运行机制,你才能理解的相当透彻,用起来得心应手,并且继承前人的优质思想不断向后推进。

  • 相关阅读:
    【算法训练-链表 五】【求和】:链表相加(逆序)、链表相加II(顺序)
    美格智能Cat.1蜂窝IPC解决方案 助力安防监控智慧连接
    【OpenCV】—输入输出XML和YAML文件
    Single View Metrology 单视图度量衡 复现
    传统运维与云运维到底有什么不同呢?
    C++ Reference: Standard C++ Library reference: C Library: cwchar: wcschr
    Java获取实时摄像头进行拍照(附源码)
    内存性能指标及工具
    六六大顺 马蹄集
    Linux的hwclock命令笔记221110
  • 原文地址:https://blog.csdn.net/m0_62574889/article/details/126804748