数组简介数组对于我们来说并不陌生,在内存中是一块连续的内存空间,通过下标可以随机访问数组元素 如图一所示,而在JDK中提供了功能更加强大的ArrayList其底层是基于数据实现的,为什么JDK已经提供了数据还要使用ArrayList呢?我们通过比较两者之间的差异来聊聊ArrayList的优势java数组中如何获取数组实际元素在面试中经常会问在java中数组长 …
文章教程
目录十大经典排序算法江山图归并排序算法描述算法思想动图演示代码实现稳定性分析时间复杂度分析空间复杂度分析归并排序和快速排序对比十大经典排序算法江山图十大经典排序算法江山图冒泡,选择和插入排序,它们的时间复杂度都是O(n2),比较高,适合小规模数据的排序;希尔排序和快速排序都不稳定,这篇我们来说说稳定的归并排序。归并排序在数据量大且数据递增或递减连续性好的情况 …
字符串作为Java开发中比较常用的一种数据类型。在上篇文章中我们介绍了String类型的不可变的特性。既然是不可变的,那么我们如何对于字符串进行拼接呢?下面我们就来看一下关于字符串拼接相关的内容。字符串拼接什么是拼接,拼接的意思就是将两个或者多个字符串合成一个大的字符串的过程,但是由于String类型在Java中是不可变的也就是说它一旦被创建初始化之后,就是 …
提纲:1、方法的概念2、方法语法3、方法使用4、参数5、返回值6、方法的分类7、作业一、数组的概念1.1、为什么使用数组如果说程序中,需要存储大量的相同类型的一组数据,如果直接使用变量来进行存储,每个变量只能存储一个值,就需要大量的变量。1、代码过于臃肿2、程序的可读性差3、数据维护较差1.2、数组的概念数组的概念:就是一组相同数据类型的数据。内存上是开辟的 …
前言23种设计模式速记 单例(singleton)模式工厂方法(factory method)模式抽象工厂(abstract factory)模式23种设计模式快速记忆的请看上面第一篇,本篇和大家一起来学习建造者模式相关内容。模式定义将一个复杂对象的创建与他的表示分离,使得同样的构建过程可以创建不同的表示。用户只需要给出指定复杂对象的类型和内容;建造者模式负 …
基数排序介绍基数排序,是一种非比较型整数排序算法,先把所有元素补位,让所有元素的位数相同,然后把序列中的每个元素按照位数进行分桶的一种算法,基数排序的实现方法分为两种:MSD和LSD。MSD:最高位优先法(Most Significant Digit First),先比较最高位,最高位分到一个桶中的,再按照第二位进行分桶…,知道分到最后一位,然后再从最小的桶 …
什么是浅克隆和深克隆浅克隆(Shadow Clone)是把原型对象中成员变量为值类型的属性都复制给克隆对象,把原型对象中成员变量为引用类型的引用地址也复制给克隆对象,也就是原型对象中如果有成员变量为引用对象,则此引用对象的地址是共享给原型对象和克隆对象的。简单来说就是浅克隆只会复制原型对象,但不会复制它所引用的对象深克隆(Deep Clone)是将原型对象中 …
背景:最近系统内缓存CPU使用率一直报警,超过设置的70%报警阀值,针对此场景,需要对应解决缓存是否有大key使用问题,扫描缓存集群的大key,针对每个key做优化处理。以下是扫描出来的大key,此处只放置了有效关键信息。图1大key介绍:想要解决大key,首先我们得知道什么定义为大key。什么是大KEY:大key 并不是指 key 的值很大,而是 key …
最近客户的生产环境经常出现问题,搞的头大,测试在开发环境、模拟环境又复现不了,没法进行实时跟踪,最后只能从hprof文件进行分析,这篇文章就是记录内存溢出问题分析过程的记录。一、遇到这类问题,首先简单看下CPU、内存使用情况,大概了解下,然后把服务启动,在保证服务先运行的情况下,再把hprof从生产环境Copy本地,hprof文件如下所示,最好不要在生产环境 …
以下是 `CopyOnWriteArrayList` 的源码注释翻译:public class CopyOnWriteArrayList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable {private static final long ser …