数据结构作为每一个开发者不可回避的问题,而 Java 对于不同的数据结构提供了非常成熟的实现,这一个又一个实现既是面试中的难点,也是工作中必不可少的工具,在此,笔者经历漫长的剖析,将其抽丝剥茧的呈现出来,在此仅作抛砖引玉,望得诸君高见,若君能有所获则在下甚是不亦乐乎,若有疑惑亦愿与诸君共求之!本文一共 3.5 W字,25 张图,预计阅读 2h。可以收藏这篇 …
最新内容
个人 blog: iyuhp.top原文链接: Java 基础数据结构java -version java version "13.0.2" 2020-01-14 Java(TM) SE Runtime Environment (build 13.0.2+8) Java HotSpot(TM) 64-Bit Server VM (build …
Java集合、多线程、反射和Spring框架总结,源码解析一、集合 - 通过不同的数据结构存储以及操作数据的工具1.1 Collection1.1.1 ArrayList、Vector1.1.1.1 底层原理ArrayList和Vector底层都是由动态数组实现的1.1.1.2 ArrayList VS VectorArrayList是线程不安全的集合,而V …
ArrayList初始容量介绍?在Java中,ArrayList的初始容量是10。这个容量是通过DEFAULT_CAPACITY常量定义的,默认值为10。你可以在 ArrayList 类的源码中找到这个定义。如下所示** * Default initial capacity. *private static final int DEFAULT_CAPACIT …
PriorityBlockingQueue是一个无界的基于数组的优先级阻塞队列,数组的默认长度是11,虽然指定了数组的长度,但是可以无限的扩充,直到资源消耗尽为止,每次出队都返回优先级别最高的或者最低的元素。其实内部是由平衡二叉树堆来进行排序的,先进行构造二叉树堆,二叉树堆排序出来的数每次第一个元素和最后一个元素进行交换,这样最大的或最小的数就到了最后面,然 …
引言本文详细谈谈JDK1.7中新推出的线程池:ForkJoinPool。但ForkJoinPool的出现并不是为了替代ThreadPoolExecutor,而是作为它的补充,因为在某些场景下,它的性能会比ThreadPoolExecutor更好。在之前的模式中,往往一个任务会分配给一条线程执行,如果有个任务耗时比较长,并且在处理期间也没有新的任务到来,那么则 …
写在前面数据结构在面试中基本都是常问的,但是一般开发中基本上都是在使用没有去关心过怎么实现的。在数据结构中,链表是一种线性存储结构,也就是常说的线性表。?概念:线性表,是数据结构中的一种数据存储结构,数据元素之间具有“一对一”的逻辑关系。可以理解为把所有数据用一根线串起来,再存储到物理空间中。顺序表ArrayList概念:将数据依次存储在连续的整块物理空间 …
目录前言JVM性能调优内存溢出错误堆溢出错误和预判堆溢出的错误虚拟机栈和本地方法栈溢出错误方法区(元数据区)和运行时常量池溢出直接内存区域的溢出实践案例如何正确利用大内存-高性能硬件上的程序部署策略如何排查内存溢出错误如何排查系统CPU性能指标异常-外部命令导致系统缓慢返回目录前言JVM性能调优是一个很大的话题,很多中小企业的业务规模受限,没有迫切的性能调优 …
一、ArrayList:写过的项目到现在基本上面向业务域查询返回大列表都是使用ArrayList来存储业务数据的。定义:ArrayList是List接口的可变数组的实现。实现了所有的可选列表的操作并允许包括null在内的所有元素。除了实现List接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。每个ArrayList实例都有一个容量,该容量是指来 …
之前一篇博客介绍了C语言中一些基础的编码优化,实际上涉及到编译优化,所有语言进行编译时,相应的编译器都可以进行对应的优化;1. 字段访问相关优化基于逃逸分析的优化方式:进行锁消除、栈上分配、标量替换等;标量替换:将对象本身拆散为一个个字段,把原本对象字段的访问,替换为一个个局部变量的访问; 若对象没有逃逸,则:static int bar(int x) {F …