- 博客(29)
- 收藏
- 关注
原创 java: 无法访问org.springframework.context.ApplicationContext
错误的类文件: /E:/Maven/repository/org/springframework/spring-context/6.0.9/spring-context-6.0.9.jar!解决办法:到file——project Structure内,看自己的sdk版本,我用的是jdk8,因此不能用spring6.x开头,只能用spring5以下,修改spring依赖版本后可以正常使用。
2023-10-23 11:27:23
4104
1
原创 一篇文章看懂单例模式——饿汉式、懒汉式
对象初始化的创建是由很多步骤完成的,比如分配空间、初始化、调用构造器等,是一个复杂的过程,有可能上一个进程进去,已经调用了new Singleton,但new对象的过程并没有执行完成,就已经return退出,如果下一个进程再进来,此时单例已经不为空,会返回之前一个进程已经return的单例对象,但是有可能此对象并没有完成调用构造器的初始化过程,,任何一个线程对这个变量的修改会立即被刷新到主内存中,同时,其他线程在读取该变量时会直接从主内存中读取,而不是从线程的本地缓存中读取。
2023-08-03 19:26:20
192
原创 HashMap和HashTable区别
综上所述,HashMap是更常用、更高效的选择,特别是在单线程环境或者是需要高性能的情况下。如果需要在多线程环境下使用,考虑到线程安全问题,可以选择使用ConcurrentHashMap,它是线程安全的,并且相比HashTable性能更好。
2023-07-30 22:47:27
185
原创 为什么HashMap使用链表和红黑树相结合的形式
介绍了为什么HashMap使用链表和红黑树相结合的形式,以及HashMap的解决冲突的方法和特性
2023-07-30 22:45:30
299
原创 final 和 finalize() 区别
是一个关键字,用于修饰类、方法或变量,用于表示不可修改、不可继承或不可覆盖。是一个方法,用于对象的资源释放和清理,在现代 Java 编程中已经不再推荐使用。
2023-07-22 21:15:03
220
原创 面相过程语言比面相对象语言效率高?
在很多情况下,面向对象的设计能够更好地组织和管理代码,提高可维护性和可扩展性,这在长期和复杂的项目中非常重要。而在一些性能敏感的应用场景又通常会更多的选择面向过程语言,因此两种不同的编程范式的选择取决于具体的应用场景,直接对比性能的方式并不能说明问题。因为面向过程的设计通常更加直接,减少了对象的开销和复杂性。在面向对象的设计中,类调用时需要实例化,每个对象都需要分配内存空间,而且在面向对象中常常需要对虚函数进行动态绑定,又涉及到额外的间接跳转,对于大量的对象而言,这些额外的开销也会影响性能。
2023-07-22 21:14:29
244
原创 抽象类与接口的区别
在设计一个类时,为保证父类可以有更强的通用性,可以和子类共享特征,因此有时会将一个父类内的方法设计的非常抽象,没有具体的实现方法,以供子类重写,通过不同子类不同的重写方法,从而实现每个子类独特的功能,这样的类就是抽象类。接口可以理解为是一种特殊的抽象类:如果一个抽象类,没有定义变量,只有定义常量,并且所有的方法都是抽象方法,就可以成为接口。>如果子类重写了父类中的所的抽象方法,则此子类可以实例化。>如果子类没重写父类中的所的抽象方法,则子类仍为抽象类。
2023-07-22 21:12:52
54
原创 Java中0.1+0.2为什么不等于0.3
由于计算机内存有限,只能保留一定位数的小数部分,所以会进行截断,导致精度损失。当计算机执行 0.1 + 0.2 的操作时,实际上是对这两个近似值进行相加,因此得到的结果也是一个近似值。同样地,计算机会截断小数部分,导致精度损失。当在计算机中进行浮点数运算时,由于浮点数采用二进制的科学计数法表示,而某些十进制小数无法精确转换为有限长度的二进制小数,就会导致精度损失。因此,0.1 + 0.2 的结果不是精确的 0.3,而是一个近似值,因为计算机内部使用有限的位数来表示这些小数,导致了精度损失。
2023-07-22 21:10:55
578
原创 javac,java,javadoc命令的作用是什么?
用于执行已经编译成字节码的 Java 程序,JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,Java 程序的执行必须依赖于 JVM,因为 JVM 负责将字节码翻译成特定平台的机器码并执行程序。用来编译程序,将java源代码编译成为class字节码文件,每一个类对应一个class字节码文件,编译后的字节码文件可以由 Java 虚拟机(JVM)执行,使得 Java 程序可以在不同的平台上运行。是 Java 文档生成工具,它可以根据代码中的特定注释生成 API 文档。
2023-07-22 21:09:28
867
原创 小白刷leetcode——二叉树(104. 二叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数)
104. 二叉树的最大深度两种方式:1.求二叉树的高度 2.求二叉树的深度本次用的是方法1,即通过求二叉树的高度得出结果,因为二叉树高度=深度思路:因为求二叉树高度需要遍历到最深层,然后一层一层返回并+1,因此需要用到后序遍历,类似于昨天的101. 对称二叉树,都是需要对节点的左右孩子情况判断结束后,再向上一层一层的返回结果。也可以理解为从根节点出发,用1+max(左、右节点高度),然后一层一层向下遍历,分别求出每层节点左右孩子的最大高度然后再return +1。
2023-06-08 23:06:59
122
原创 小白刷leetcode——二叉树(102. 二叉树的层序遍历、226.翻转二叉树、101. 对称二叉树)
102. 二叉树的层序遍历、226.翻转二叉树、101. 对称二叉树
2023-06-07 22:38:17
71
原创 小白刷leetcode——栈与队列(20. 有效的括号、1047. 删除字符串中的所有相邻重复项、150. 逆波兰表达式求值)
leetcode栈与队列
2023-06-03 12:19:56
86
原创 小白视角刷leetcode (344. 反转字符串、541. 反转字符串II、 剑指Offer 05.替换空格、151. 反转字符串中的单词)
for内用快指针遍历,遇到不是空格的元素先判断当前的慢指针是否指向的是数组开头元素,如果不是则需要添加空格,(不是则可以直接赋值,因此不需要再做判断),while内做当前单词的赋值,如果循环不满足while条件代表当前单词已经移动完成,跳出while循环,继续用for循环移动快指针,遇到空格则不进入循环体,直到又遇到非空格元素,进入循环体后再判断当前慢指针是否指向头部,(显然经过上边的步骤当前已经不是了),因此慢指针处插入一个空格后++移动,然后再进入while对当前单词进行逐步移动赋值,依次循环。
2023-05-31 23:50:12
118
原创 leetcode刷题打卡 (454. 四数相加 II(中等)、383. 赎金信、 第15题. 三数之和、第18题. 四数之和)
2.定义四个指针,思路于上边三数之和一样,如果四数之和大于target,则right-1,若小于target则left+1,否则将四个值输入到数组,res.add(Arrays.asList(xxx,xxx,xxx,xxx))4.外层循环控制i,内侧由while控制left和right,并在后边进行去重操作,并且去重操作一定是在记录数值后,否则比如0,0,0将不会被计入,在去重后,还要对left和right分别进行右移和左移操作。1.看清题目要求,是求四个数组中各取一个元素相加为零的元组个数,不要求去重。
2023-05-30 23:42:30
87
1
原创 小白视角刷leetcode (242. 有效的字母异位词、349. 两个数组的交集、 202. 快乐数、1. 两数之和)
leetcode刷题:242. 有效的字母异位词、349. 两个数组的交集、 202. 快乐数、1. 两数之和
2023-05-30 01:09:23
123
1
原创 小白视角刷leetcode (24. 两两交换链表中的节点、19. 删除链表的倒数第 N 个结点、 链表相交、142. 环形链表 II)
2.然后定义一个tmp指针指向另一个链表B的头节点,然后去set集合中比较有无tmp指针所指向的链表后的所有元素,如果没有tmp指针指向下一个节点,并重复去set集合比对。:比对时用的tmp并不是单一某个节点的值,而是tmp以及tmp后所有的节点,因此只要contains(tmp)为真则代表后边元素都是重复的。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。给定一个链表的头节点 head ,返回链表开始入环的第一个节点。给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。
2023-05-27 23:25:12
99
1
原创 小白视角刷leetcode (203. 移除链表元素、707. 设计链表、206. 反转链表)
leetcode刷题打卡 (203. 移除链表元素、707. 设计链表、206. 反转链表)
2023-05-26 17:07:21
109
1
原创 小白视角刷leetcode (977有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵 II)
leetcode刷题打卡 (977有序数组的平方、209. 长度最小的子数组、59. 螺旋矩阵 II)
2023-05-26 00:07:02
201
1
原创 小白视角刷leetcode (27数组移除元素、704二分查找)
代码随想录60日算法刷题训练营打卡,今日题目:27数组移除元素、704二分查找
2023-05-24 15:19:49
146
1
原创 三种负数求补码方法
首先通过一个表格简单介绍下什么是原码、反码、补码:(以八位二进制数为例):正数的原码、反码、补码等于它二进制的本身(以12为例)权值 128 64 32 16 8 4 2 1 原码 0 0 0 0 1 1 0 0 反码 0 0 0 0 1 1 0 0 补码 0 0 0 0 1 1 0...
2022-06-25 17:37:23
34645
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人