自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java- “equals“和“==“

用于比较是否相等equals() 是Object类下的一个方法,而非运算符。所以只有引用数据类型才可以使用 equals()方法,基本数据类型不能使用 equals()方法;object类下的equals()源码可以看出来Object类中定义的equals()和==的作用是相同的:比较两个对象的地址值是否相同.即两个引用是否指向同一个对象实体。

2025-03-05 18:43:26 465

原创 Java-BigInteger类

在Java中,由CPU原生提供的整型最大范围是64位1ong型整数。使用1ong型整数可以直接通过CPU指令进行计算,速度非常快。如果我们使用的整数范围超过了long型怎么办?这个时候,就只能用数据结构来模拟一个大整数。BigInteger 内部用一个 int[]数组来模拟一个非常大的整数:java.math.BigInteger 就是用来表示任意大小的整数。

2025-03-05 18:23:05 579

原创 JAVA-BigDecimal类

BigDecimal是Java提供的一个类,用于处理精确的浮点数运算,特别适用于金融、科学计算等需要高精度的小数计算的场景。它属于java.math包下,并提供了比基本数据类型float和double更高的精度,避免了由于浮点数运算精度限制而产生的误差。

2025-03-02 21:06:24 877

原创 SpringBoot自动配置原理

springboot的自动配置,是通过import导入自己在META-INF/spring.factories中写好的配置类信息,然后使用condition选择性加载Bean的。自动的配置的实现,就是写好配置类,将配置路径写入META-INF/spring.factories中的 EnableAutoConfiguration键下面,就可以完成自动的装配了。步骤总结:通过@SpringBootConfiguration引入了@EnableAutoConfiguration(负责启动自动配置功能)

2025-03-01 18:43:11 1104

原创 浮点数的精度丢失问题

首先我们先看一个例子输出并不是我们所想的0.9而是出现这种精度丢失的问题, 究其根本原因是因为计算机是使用二进制运算, 程序中的十进制数字,会先转换成二进制数字, 再进行运算而十进制数字转换为二进制数字是将小数部分十进制小数乘以 2,得出的积,然后把积的整数位取出,再用积的小数部分乘以 2,再把积的整数位取出,再用小数部分乘以 2,循环操作,直到小数部分为 0,或者遇到无限循环,取到你认为足够精度的小数为止,然后把取出的整数位顺序连接起来,就是要转换成的二进制小数。

2025-03-01 16:04:41 299

原创 Java中数据类型转换

在Java中整型、浮点型、字符型被视为基本数据类型,这些类型由容量大小排序依次为: byte , short,char , int , long, float , double指容量小的转化为容量大的数据类型 ,可以直接进行赋值来改变数据类型 , 且不需要继续强制类型转换如果低级类型为char型,向高级类型(整型)转换时,会转换为对应ASCII码值容量大的数据类型转换为容量小的数据类型时, 需要强制类型转换小范围类型 = (类型) 大范围类型。

2025-02-25 21:23:44 243

原创 Spring AOP (图文详解)

AOP(Aspect-oriented programming:面向切面编程):将那些与业务无关,却为业务模块所共同调用的逻辑(例如事务处理、日志管理、权限控制等)封装抽取成一个可重用的模块,这个模块被命名为“切面”( Aspect ),便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性;

2025-02-25 19:50:01 988

原创 Spring IOC/DI

DI(Dependecy Inject,中文释义:依赖注入)是对IOC概念的不同角度的描述,是指应用程序在运行时,每一个bean对象都依赖IOC容器注入当前bean对象所需要的另外一个bean对象。(例如在MyBatis整合Spring时,SqlSessionFactoryBean 依赖IOC容器注入一个DataSource数据源bean);IOC ( Inversion of Control, 中文释义:控制反转) 是 spring框架的核心思想之一,主要用于解耦。

2025-02-21 19:49:01 1104 2

原创 Java邮件发送出现530问题

解决QQ发邮箱报错530的问题

2025-02-21 14:54:40 273

原创 Spring中Bean的生命周期

1.实例化1) 构造器或工厂实例化2) 执行Bean工厂后处理器的回调方法2.初始化1)属性填充2)实现各种Aware接口3)执行BeanPostProcessor的before()方法4)执行InitializingBean接口的初始化方法5)执行自定义初始化方法init-method6)执行BeanPostProcessor的after()方法3.操作使用4.销毁1)接口销毁2)属性销毁。

2025-02-17 12:45:10 675

原创 ES-倒排索引

倒排索引(Inverted lndex):是指实现"单词-文档矩阵"的一种具体存储形式.通过倒排索引,可以找到用户输入的词条 , 获取包含这个词条的文档id , 再通过文档id获取到对应的文档.倒排索引主要由两个部分组成:“单词词典”和“倒排文件”.

2024-07-28 22:51:14 1713

原创 Spring框架如何解决Bean的循环依赖

三级缓存(singletonObjects: 在早期阶段,Spring创建一个对象的实例, 但是这个对象并没有完全初始化. 这时候, Spring将这个对象实例放入三级缓存中. 在这个阶段, Spring会记录对象的引用, 但不会注入属性或调用任何初始化方法.二级缓存(earlySingletonObjects: 如果在依赖注入过程中发现循环依赖, Spring会在三级缓存中创建一个代理对象(proxy), 而不是真正的目标对象. 这个代理对象会暂时替代真实的对象引用,直到真实的对象初始化完成。

2024-07-22 00:05:03 1186

原创 为什么会产生哈希冲突?

哈希值是通过特定的散列算法把任意长度的输入数据变换成固定长度的输出值,这个值为一个int整型,但是int保存的范围是有限的,但是数据本身是无限的,把无限个数据用有限的数字表示,便一定会出现重复,即产生哈希冲突。

2023-08-14 02:14:11 98

原创 为什么重写hashCode()时,必须重写equals()?

当我们在集合中添加一个由我们自己创建的类时,其加入的元素需要开辟新的空间,尽管内容相同,但是其哈希值不同,又因为Set集合在去重时会先判断哈希值,所以需要重写hashCode()方法.如果哈希相同,则会调用equals()方法去进一步判断。而未重写前调用的equals()方法依旧比较的地址。所以此时equals()无法进行对其值的正确判断,因此必须要重写equals方法。

2023-08-14 02:07:13 842

原创 Set集合如何过滤重复元素?

1,通过hashcode(),比较其哈希值 比较哈希值时判断是否相同最快的方法,哈希不同则一定不同。创建HashSet时,其构造方法创建维护了一个HashMap来进行存储,元素值保存在HashMap的key位置。2,如果哈希相同,则调用equals 因为哈希值相同其值不一定相同(可能产生哈希冲突)注:hashcode() equals() 需要在调用的类中重写。

2023-08-14 01:49:08 106

原创 LinkedList的适用场景

LinkedList是基于双向链表实现,链表中的每个节点都是一个Node类型的对象,Node对象由item、prev、next三部分组成。所以LinkedList适用于需要频繁的删除插入数据,且不需要或少用去随机访问其中元素的读少写多的情况。但当我们随机访问集合中的某一元素时,只能从头或从未依次遍历去访问某一元素。LinkedList 具有:更快速高效地添加删除元素的能力,但遍历效率低。当对集合中的元素进行操作时只需要操作其 next prev的指向。节点中会记录当前元素的组成方便完成指向关系。

2023-08-14 01:29:17 238

原创 ArrayList的扩容方式

当数组长度不为零,不够用时,在添加元素时会自动调用grow()方法进行扩容,扩容至原来的1.5倍长,数组的最大容量在Integer.MAX_VALUE-8至Integer.MAX_VALUE之间,如果超出,则抛出OutOfMemoryError错误。public ArrayList(int initialCapacity) 有参构造方法会按照指定容量initialCapacity创建数组。public ArrayList()无参构造方法会创建一个长度为零的空数组。

2023-08-14 00:54:56 70

原创 ArrayList和Vector的区别

ArrayList默认初始化长度为0,第一次添加自动扩容为10,后续扩容为原来的1.5倍。Vector默认初始长度为10,数组扩容按照2倍或者自定义扩容的方式进行。1,ArrayList 是线程不安全的,允许多个线程同时访问,因此他的效率更高。Vector是线程安全的,只允许一个线程访问,因此效率较低。

2023-08-13 23:36:25 60 1

原创 ArrayList和LinkedList的区别

2,扩容方式:ArrayList在初始化是可以使用无参 public ArrayList() (长度为零)和有参 public ArrayList(int initialCapacity)的构造方法来初始化内部数组的长度.当内部数组长度为一,第一次添加元素时,长度扩容为10,除此以外,若容量不足则扩充到原来的1.5倍,且扩容时最长在Integer.MAX_VALUE-8至Integer.MAX_VALUE之间,若超出,就会抛出OutOfMemoryError错误。

2023-08-13 23:25:22 76 1

空空如也

空空如也

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

TA关注的人

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