自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 资源导出失败问题

Maven由于它的,我们之后可能遇到我们写的配置文件,无法被导出或者生效的问题。

2024-09-12 18:02:20 286

原创 解决 java: 非法字符: ‘\ufeff‘

1.在idea界面右下角处。

2024-09-12 18:00:29 134

原创 Spring(2)

主要是切面定义。

2024-08-26 15:44:19 1102 1

原创 spring学习(1)

使用@Autowired我们可以不用编写Set方法了,前提是你这个自动装配的属性在IOC(Spring)容器中存在,且名字符合!byType:会自动在容器上下文中查找,和自己对象属性类型相同的bean!byName:会自动在容器上下文中寻找,和自己对象set方法后面的值对应的bean id!在Spring中实现控制反转的是。总结:在配置文件加载的时候,容器中管理的对象就已经初始化了!② 原型模式:每次从容器中get的时候,都会产生一个新的对象。1、id:bean的唯一标识符,也就是相当于我们学的对象名。

2024-08-23 18:52:58 691

原创 多线程(5)

线程池是一种多线程处理形式。处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。如果某个线程在托管代码中空闲(如正在等待某个事件),则线程池将插入另一个辅助线程来使所有处理器保持繁忙。如果所有线程都始终保持繁忙,但队列中包含挂起的工作,则线程池将在一段时间后创建另一个辅助线程但线程的数目永远不会超过最大值。超过最大值的线程可以排队,但要等到其他线程完成后才启动。

2024-08-20 14:05:15 609

原创 多线程(4)

Java的集合容器框架中,主要四大类别有List、Map、Queue、Set,其中ArrayList、LinkedList、HashMap这些容器都是非线程安全的。如果有多个线程并发地访问这些容器,就会出现问题。因此,在编写程序时,在多线程环境下必须要求程序员手动地在任何访问这些容器的地方进行同步处理,这样导致在使用这些容器的时候非常不方便。所以Java先提供了同步容器供用户使用。同步容器可以简单地理解为通过synchronized。

2024-08-20 11:24:09 616

原创 多线程(3)

1、synchronized:在资源竞争不是很激烈的情况下,偶尔会有同步的情况下,synchronized是很合适的。2、ReentrantLock:在资源竞争不激烈的情况下,性能稍微比synchronized差点。但当同步非常激烈的时候,synchronized性能一下子下降几十倍,而ReentrantLock能维持常态。高并发量情况下使用ReentrantLock。3、Atomic:和上面类似,不激烈情况下,性能比synchronized略逊;而在激烈时,也能维持常态。

2024-08-19 16:42:29 900

原创 多线程(2)

线程同步和锁

2024-08-19 14:49:23 864

原创 多线程(1)

线程等待一段时间,当时间到达或者其他条件满足时,线程会重新进入就绪状态。通过Thread.sleep()、Object.wait(timeout)、Thread.join(timeout)、LockSupport.parkNanos()等方式可进入超时等待状态。,在Java中,当我们启动main函数时其实就是启动了一个JVM的进程,而main函数所在的线程就是这个进程中的一个线程,也称主线程。线程是操作系统调度的最小单位,它负责执行线程中的任务,但是线程的并发执行也可能导致一些问题,如竞态条件、死锁等。

2024-08-16 11:54:00 781

原创 IO

BIO: 适用于连接数较少、并发不高的情况,简单易用。NIO: 适用于高并发、连接数较多的网络应用,通过选择器实现非阻塞 I/O。AIO: 适用于需要处理大量并发连接、希望充分利用系统资源的情况,通过异步操作实现。

2024-08-15 13:36:41 726

原创 Map补充

主要原因是,即在多个线程同时进行读写操作时,可能会导致数据不一致性或抛出异常通过此方法创建一个线程安全的HashMap,该方法,使得所有对Map的操作都是同步的使用,允许多个线程同时进行读操作,提高并发性能可以在自定义的HashMap中使用显式的锁来保证线程安全。

2024-08-14 10:50:44 241

原创 集合(2)

HashSet使用哈希表,不保证元素顺序LinkedHashSet继承自HashSet,使用链表维护元素插入顺序TreeSet使用红黑树,保证元素有序。

2024-08-13 18:46:54 973

原创 集合(1)

表示不同的类型集合,Collection、Map、List、Set、Queue、Deque等,以及辅助性质的接口Iterator、LinkIterator、Comparator、Comparable这些接口是为迭代和比较元素而准备。对接口的具体实现,主要常用的有:ArrayList、LinkedList、HashMap、HashSet、TreeMap等等。理解Java集合体系可以从三个层次:最上层的接口、中间的抽象类、最后的实现类。是所有集合框架的根接口,包含了对集合进行基本操作的方法。

2024-08-12 15:45:48 860

原创 String

1、保存字符串的数组被final修饰且为私有的,并且String类没有提供修改这个字符串的方法2、String类被final修饰导致其不能被继承,进而避免了子类破坏String不可变。

2024-08-09 11:43:49 711

原创 反射和注解

反射的基本步骤包括获取Class对象、获取类的信息(构造函数、方法、字段等),然后通过Constructor、Method、Field等类的实例进行具体的操作。注解以@符号开头,通常紧跟着一个标识符,后面可以跟一些参数,用于给类、方法、字段等添加元数据信息,这些信息可以在编译时、运行时被读取和处理。通过Class类,可以获取类的构造函数、方法、字段等信息,而不需要在编译时确定这些信息。Spring、SpringBoot、Mybatis等框架中都大量使用了反射机制。此外,开发者还可以定义自己的注解,通过。

2024-08-08 14:30:51 363

原创 泛型

集合中的泛型是不可变的,但是数组里的类型是可变的。数组先天就允许将子类数组应用赋值给父类数组,所以导致无法在编译期检查数组的类型安全问题,这个与泛型的初衷相违背,导致数组无法使用泛型。:在泛型类或接口中,如果有泛型方法并且涉及到泛型类型参数的类型转换,编译器会生成桥方法来保证类型安全。,可能导致一些问题。这是因为集合的设计者在创建时无法确定集合将被用来存储哪种类型的对象,因此选择设计成能够存储任何类型的对象,以保持。类似于泛型类,泛型接口在声明时引入参数类型,然后在接口的方法中使用这个参数类型。

2024-08-08 11:16:22 292

原创 异常

所有的异常都是由继承而来,Throwable又分为了。

2024-08-07 16:12:54 915

原创 Mybatis学习(3)

对象属性名和列名之间的映射关系2、使用sql列的。

2024-08-03 15:33:42 1473

原创 Mybatis学习(2)

是一种开源Java分布式缓存步骤:1、导包2、在mapper中指定用ehcache缓存。

2024-08-01 16:47:34 1014

原创 Object

equals()方法用于比较两个对象的内容是否相等。在Java中,默认实现的是比较对象的引用,即比较两个对象是否指向内存中的相同位置。但通常,我们希望比较对象的内容是否相等。鉴于这种情况,Object类中equals()方法的默认实现是没有实用价值的,所以通常都要重写。(两个对象相等,它们必须具有相同的哈希码),所以一个重写了,另一个也要重写,来保持两个方法的一致性。2、equals():比较对象的内容。两个对象有相同的哈希码,它们不一定相等。两个对象相等,它们必须有相同的哈希码。

2024-08-01 15:21:13 207

原创 类和对象

1、编译时多态:通过方法的重载在编译阶段确定调用的方法2、运行时多态:通过方法的重写在程序运行时确定调用的方法,实现动态绑定接口是一种抽象类型,它定义了一组方法,但没有实现任何方法的具体代码。抽象类是一个类,可以包含抽象方法和具体方法。抽象类中的抽象方法是没有实现的方法,而具体方法则包含实现代码。抽象类不能直接实例化,通常需要子类继承并实现其中的抽象方法。1、重载是在同一个类中定义多个方法,方法名相同,但参数列表不同2、重写是在子类中重新定义父类中已有的方法,方法名和参数列表必须相同。

2024-08-01 14:46:05 860

原创 Mybatis学习(1)

1、可以直接引入外部文件2、可以在其中增加一些属性配置3、如果两个文件有同一个字段,优先使用外部配置文件的。

2024-07-31 22:40:12 1269

原创 变量、方法、参数

但在 Java 中,虽然传递的是引用的值(对象的地址),但仍然是按值传递。实际上,传递的是引用的副本,因此 在函数内对引用的修改会影响到原始的引用,但⽆法修改引用指向的对象。方法的声明加上了static关键字,静态方法是属于类的而不是属于类创建的对象或实例的,故在调用时无需通过对象实例。在类中声明,无需static、abstract等关键字修饰,创建类对象,通过对象的引用所调用的方法。引用传递:方法接收的直接是实参所引用的对象在堆中的地址,值传递:在值传递中,传递给函数的是实际参数的值的。

2024-07-30 12:02:42 410

原创 Java数据类型

而引用数据类型使用==进行比较时,比较的是引用是否指向同一个对象,如果要比较对象的内容是否相同,需要使用equals()方法。为了让基本类型也具有对象的特征,就出现了包装类型,它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。:基本数据类型作为方法的参数传递时,传递的是值的副本,不会修改原始值。而引用数据类型作为方法的参数传递时,传递的是对象的引用,可以修改对象的属性或状态。:基本数据类型直接存储值,而引用数据类型存储的是对象的引用(内存地址)

2024-07-30 10:29:23 642

原创 代码随想录打卡-动态规划

并且要明确dp[i]的概念,是包含了i为下标的数的,所以要么是nums[i]加上前面的和,要么就是单独nums[i],也就是以nums[i]为一个新的开头。布尔类型的dp[i][j]:表示区间范围[i,j] (注意是左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。注意:这里要求是连续的,所以不相等时的dp[i][j]不需要考虑了。注意:与上题区别是,本题不要求连续,故不相等的情况也要考虑。注意:与上题的区别是,本题不要求连续!注意:与上题的区别在于,这题要求连续。

2024-07-16 14:02:34 713

原创 代码随想录打卡-动态规划之编辑距离总结篇

【代码】代码随想录打卡-动态规划之编辑距离总结篇。

2024-07-11 16:19:56 148

原创 代码随想录打卡-股票问题

注意点:和上题的区别在于,本题的股票可以买卖多次!所以买入股票的时候,可能会有之前买卖的利润。可以多次买卖但每次卖出有冷冻期1天。2、不持有股票:其中又分为。买卖股票,问最大收益。

2024-07-09 15:16:57 174

原创 代码随想录打卡-dp之背包问题

考虑到递推公式的特性,dp[j]必须初始化为一个最大的数,否则就会在min(dp[j - coins[i]] + 1, dp[j])比较的过程中被初始值覆盖。是 递归公式的基础。如果dp[0] = 0 的话,后面所有推导出来的值都是0了。下标非0的dp[j]初始化为0,这样累计加dp[j - coins[i]]的时候才不会影响真正的dp[j]本题题目中 只包含正整数的非空数组,所以非0下标的元素初始化为0就可以了。注意点:首先凑足总金额为0所需钱币的个数一定是0,那么。注意点:dp[0]一定要为1,

2024-07-02 16:27:55 463

原创 代码随想录打卡-贪心算法

若为1,则叶子节点被覆盖了,叶子节点的父节点就不需要装摄像头了。注意:此时不是i和i-1进行比较了,因为这里返回的是int[][],需要更新上一个区间的记录,出现重叠,则上一个区间不再是i-1了!左右节点至少一个无覆盖---说明该父节点应加一个摄像头。左右节点至少存在一个摄像头---说明该父节点被覆盖。注意点:整数如何转换为字符串数组 --- 利用+"" 以及 split("")3、存在三种情景:左右节点均有覆盖---说明该父节点无覆盖且无摄像头。2、设置三个状态:0无覆盖、1有摄像头、2有覆盖。

2024-06-12 15:58:01 643

原创 代码随想录打卡-回溯算法

本题其实可以不需要加终止条件,因为startIndex >= nums.size(),本层for循环本来也结束了,本来我们就要遍历整棵树。区别:没有数字个数的要求,且数字可以无限重复。区别:元素会有重复,但要求组合不能重复。剪枝:①和已经大于目标值,剪。方法二:不使用used数组。方法一:使用hashset。区别:包含重复元素【去重】方法一:使用used数组。方法二:(优化)使用数组。

2024-05-29 23:17:05 485

原创 代码随想录打卡-二叉树

int val;1、二叉树的构造,无论普通二叉树还是二叉搜索树一定前序,先构造中节点!2、求不同二叉树的属性,一般用后序,但还是要具体问题具体分析!3、求二叉搜索树的属性,用前序,不然白瞎有序性了!

2024-05-09 21:48:55 734 1

原创 代码随想录打卡-栈与队列

232.用栈实现队列其中需要注意的点是,在进行pop()和peek()操作时,要先判断stackOut空了,再把stackIn的数倒进去代码实现为:225.用队列实现栈添加元素:栈 - push() 队列 - push()插到队列开头 offer()插到队列末尾查看元素:栈 - peek() 队列 - top()/peek()移除元素: 栈 - pop() 队列 - poll() 确定队列不为空也可使用pop()方法:使用两个Deque实现,其中一

2024-04-09 13:39:00 548

原创 代码随想录打卡-双指针法

【代码】代码随想录打卡Day7。

2024-04-07 11:40:19 334

原创 代码随想录打卡-字符串

坑:1、if(s.charAt(start)!=' ') //注意先后顺序,若交换顺序可能造成结尾出现多余空格的现象。2、start

2024-04-03 11:55:00 439 1

原创 代码随想录算法打卡-哈希表

242.有效字母的异位词数组是一个简单的哈希表。题目中字符串只有小写字符,那么就可以定义一个数组,来记录字符串s里字符出现的次数(利用了字符的ASCII码可转换为整型)技巧:只涉及小写字母,考虑用数组作为哈希表代码实现为:383.赎金信与上题思路大同小异,只需注意判断哪个字符串的字符是可以多出的,哪个不行即可代码实现为:49.字母异位词分组代码实现为:438.找到字符串中所有字母异位词结合滑动窗口解决问题代码实现为:350.两个数组的交集II 是 Java 中用于复制指定范围的数组元

2024-03-19 15:15:54 545

原创 代码随想录算法打卡-链表

双向链表比单向链表多个属性prev,指向上一个节点。快慢指针相差n个节点。

2024-03-17 11:40:04 406 1

原创 代码随想录算法打卡 Day3

与上题的区别在于,本题是已知矩阵,按顺时针的顺序返回矩阵元素;而上题则是把元素按顺序放入矩阵中,返回矩阵。

2024-03-15 15:57:08 365 1

原创 代码随想录算法打卡 Day3

窗口的起始位置如何移动:如果当前窗口的值大于s了,窗口就要向前移动了(也就是该缩小了)

2024-03-15 13:51:52 381

原创 代码随想录算法打卡 Day2

【代码】代码随想录算法打卡 Day2。

2024-03-13 20:44:42 320

原创 代码随想录算法打卡 Day1

二分查找最经典的就是分三种情况等于、大于、小于,等于就是开方出来正好是整数,直接return middle;小于可能符合情况,因为是返回整型,所以用res记录下来,但是还得看看有没有比现在的大并且平方小于x的情况,接着赋值eft=middle+1;大于的话一定不符合,直接看左边的right=mid-1。二分查找的意义在于通过二分将遍历的复杂度O(n)降低为O ( log ⁡ 2 n ) ,故二分的优化意义大于对问题的解决意义。采用二分法去寻找左边界和右边界。

2024-03-12 16:38:06 394

空空如也

空空如也

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

TA关注的人

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