自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 HashMap源码肝了一天!put和resize方法保姆级分析看不懂算我输!

面试中HashMap几乎是必问的,问到hashmap必然离不开扩容机制,话不多说,肝就完了。我们知道HashMap底层是采用数组+链表来实现的,jdk1.8后又引入了红黑树,本文针对JDK1.8后的HashMap进行分析。先说明一下HashMap中几个重要的字段:table:数组size:元素的个数,即hashMap中存放了多少个元素,有别于capacity(容量)(容量是指数组的长度!)threshold:扩容阈值,等于负载因子*容量。还有几个默认的常量:1.默认负载因子0.752.

2021-09-21 13:20:44 134

原创 Java学习笔记-3

枚举、注解、反射1.枚举注意事项:2.注解目前来说,注解最重点的部分在于学会如何使用注解。关于自定义注解这一部分,只有在你开发框架时才会大量使用自定义注解。注解主要用于:编译格式检查反射中解析生成帮助文档跟踪代码依赖等2.1内置注解@Override:重写。用于编译格式检查***定义在java.lang.Override@Deprecated:废弃。***定义在java.lang.Deprecated@SafeVarargs (很少使用

2021-09-13 11:58:10 176

原创 XML和JSON的格式和解析

1.XML这是一个xml的格式的示例:<?xml version="1.0" encoding="UTF-8"?><books> <book id="1001"> <name>book1</name> <info>这是第1本书的简介!</info> </book> <book id="1002"> <name>b

2021-09-06 18:13:48 856

原创 java学习笔记-2

1.链表、二叉树一些常见数据结构:数组:增删慢、查找快,相邻元素内存地址相邻,当数据量大时动态扩容效率低而且非常耗费性能。链表:增删快、查找慢,当数据量大时查找元素很慢,需要从头开始逐个遍历。链表可以分为单向链表、循环链表、双向链表、双向循环链表。二叉树:类似于链表,只不过链表只有一个指向next,而二叉树有两个指向即left和right。如果二叉树存储有序元素(例如比根节点小存左子树,比根节点大存右子树),考虑二叉树平衡的情况,当查找一个元素时,每次比较都可以将查找范围缩小一

2021-09-06 10:26:14 327

原创 对数据结构的一些理解

对数据结构的理解​ 在大四的下学期我花了接近半年的时间去刷算法题,这个过程非常痛苦,很多时候一天也做不了几道题,更可怕的是,做完题之后还会经常性遗忘。现在想想仍然是很痛苦的事情。​ 在学习一样知识时,仅仅学会是什么是远远不够的。第一次接触数据结构时是在课堂上,当时浑水摸鱼的我听的是一头雾水。再往后自己去学习时逐渐明白了数据结构到底是个什么东西,勉强算是知其然,但最重要的一定是知其所以然。比如在学到二叉树的时候,我逐渐明白了二叉树是个什么东西,但是从来没有人告诉我二叉树是用来干嘛的,随手去网上一搜,大家都

2021-09-02 12:05:34 140

原创 学习笔记-1

1.继承java是单继承和多重继承,不能多继承子类继承父类在内存中的创建过程:首先将在堆中开辟空间创建父类,然后创建子类,可以看作子类中通过super引用创建的父类。调用方法时首先在子类本身中寻找方法,如果没有找到就去父类中找。例如,Student类继承Person类,内存模型如下所示:2.supersuper访问构造方法super访问属性super访问方法前面说到,创建子类时会首先创建父类,默认情况下,创建父类是通过无参构造创建的。如果需要指定参数

2021-08-30 11:01:26 106 2

原创 手写的快速排序和类库排序差距有多大

首先手动实现一个快速排序:首先说下快速排序的原理:以{5,4,2,6,5,8,9}数组为例,我们在数组中选择一个基准值,这个基准值可以任意选,例如我们选择第一个数5为基准值,我们所要做的是经过一轮排序后所有比基准值大的数都在基准值右边,所有比基准值小的数都在基准值左边。接着分别对左边和右边进行同样的排序操作,直到排序完成。那么如何实现一轮排序呢?首先定义一个变量key存储基准值。然后我们定义两个指针i和j分别指向数组的头和尾,从尾部开始寻找,只要尾部的数比基准值大,就执行j--,这样就尾指针就停在了

2021-08-20 17:24:36 153

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除