- 博客(13)
- 收藏
- 关注
原创 Hashcode底层代码
前面说过HashMap的 数据结构是数组和链表的结合,所以我们当然希望这个HashMap里面的元素位置尽量分布均匀些,尽 量使得每个位置上的元素数量只有一个,那么当我们用hash算法求得这个位置的时候,马上就可以知道 对应位置的元素就是我们要的,不用遍历链表,大大优化了查询的效率。于是,在JDK1.8版本中,对数据结构做了进一步的优 化,引入了红黑树。而当链表长度太长(默认超过8)时,链表就转换为红黑树,利用红黑树快速增删 改查的特点提高HashMap的性能,其中会用到红黑树的插入、删除、查找等算法。
2024-01-26 00:29:58
601
原创 Java中为什么要重写HashCode和equals?
所有对于需要大量并且快速的对比的话如果都用equal()去做显然效率太低,所以解决方式是,每当需要对比的时候,首先用hashCode()去对比,如果hashCode()不一样,则表示这两个对象肯定不相等(也就是不必再用equal()去再对比了),如果hashCode()相同,此时再对比他们的equal(),如果equal()也相同,则表示这两个对象是真的相同了,这样既能大大提高了效率也保证了对比的绝对正确性3.重写equal()和hashCode()方法实例。
2024-01-25 08:48:04
427
原创 Final关键字理解
fianl表示最终的,不可变的fianl可以修饰变量以及方法,还有类等fianl表示最终的,不可变的fianl修饰的变量无法二次赋值fianl修饰的引用一旦指向某个对象,则不能再重新指向其他对象,但该引用指向的对象内部的数据可以修改fianl修饰的实例变量必须手动初始化,不能采用系统默认值;final修饰的实例变量一般和static联合使用,称为常量final修饰的方法无法覆盖(重写)final修饰的类无法被继承。
2024-01-21 19:06:01
663
原创 String、StringBuilder和StringBuffer的理解
(1) 在编译阶段就能够确定的字符串常量,完全没有必要创建String或StringBuffer对象。直接使用字符串常量的"+"连接操作效率最高。(2) StringBuffer对象的append效率要高于String对象的"+"连接操作。(3) 不停的创建对象是程序低效的一个重要原因。那么相同的字符串值能否在堆中只创建一个String对象那。显然拘留字符串能够做到这一点,除了程序中的字符串常量会被JVM自动创建拘留字符串之外,调用String的intern()方法也能做到这一点。
2024-01-19 01:14:40
1332
原创 Java基础-变量和数据类型计算篇
①是一个存储单元,保存运行过程中产生的临时数据;②使用不同的数据类型来定义保存数据;变量必须先定义后使用:(//数据类型 变量名 = 数据值;int x =1);变量的命名(不能使用数字为开头,不能以关键字为变量名;“_”和“$”都可为开头或其他内容)
2024-01-03 19:21:31
375
原创 MySQL基础
MySQL是一种开源数据库,用于存储和管理数据MySQL 由连接池、SQL 接口、解析器、优化器、缓存、存储引擎等组成,可以分为三层,即MySQL Server 层、存储引擎层和文件系统层。MySQL Server 层又包括连接层和 SQL 层。二、数据库的基本操作。
2023-07-19 08:40:57
51
原创 进程与线程
●Java用Thread对象表示一个线程,通过调用start()启动一个新线程;●一个线程对象只能调用一次start()方法;●线程的执行代码写在run()方法中;●线程调度由操作系统决定,程序本身无法决定调度顺序;●Thread.sleep()可以把当前线程暂停一段时间。
2023-07-16 10:33:22
63
原创 哈希算法
/Hash算法(消息摘要算法)工具类//将字节数组转换为16进制字符串//将字节值转换为2位十六进制字符串增加MD5,SHA-1的信息摘要计算。
2023-07-10 18:56:26
130
原创 FTP协议,FTP服务器文件列表展示、文件上传、文件下载代码解析
FTP协议允许TCP/IP网络上的两台计算机之间进行文件传输。而FTP服务是基于FTP协议的文件传输服务。工作时,一台计算机上运行FTP客户端应用程序,另一台计算机上需要运行FTP服务器端程序。只有拥有了FTP服务,客户端才能进行文件传输。
2023-07-08 17:22:27
573
原创 JavaMail邮件发送传输相关代码案例解析
【注:要在电子邮件中携带附件,我们就不能直接调用message.setText()方法,而是要构造一个Multipart对象】4.获取接邮邮箱(此处只向一个邮箱发送,所以运用RecipientType.TO)【注:需要用try catch处理异常,所以所有的代码都在try catch中】【注:抄送使用RecipientType.CC和数组完成】【注:内容不变,只多一张照片】
2023-07-08 16:38:58
395
原创 对于《ArrayList扩容方式的理解》
1、ArrayList是实现了List接口的基于动态数组的数据结构,它可以用来存放各种类型的数据,ArrayList是按照插入的顺序来存放数据。但是ArrayList是不线程安全的。2、DEFAULTCAPACITY_EMPTY_ELEMENTDATA在使用默认构造函数时返回空数组;如果是是第一次添加数据则数组会扩容为DEFAULT_CAPACITY=10;3、EMPTY_ELEMENTDATA:在构造函数中指定初始容量为0的时候会返回它。// 数组的默认初始容量大小。
2023-05-23 20:25:28
101
1
原创 《LinkedList源代码阅读》
总之LinkedList是基于链表来实现的,所以没有容量不足的问题,同时在在查找和删除某元素时,源代码都划分为该元素为null和不为null和两种两种情况来处理,LinkedList中允许元素null。LinkedList定义了两个属性,其中header为头节点,它并不存储任何数据,size是LinkedList的大小,它的初始值为。1.LinkedList是基于双向循环链表实现的,他在可以当作链表来使用的同时,还可以做为栈,队列和双端队列来使用。三、LinkedList的方法。
2023-05-23 19:36:51
275
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人