自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 模拟笔试 - 卡码网周赛第十八期(23年科大讯飞提前批笔试真题)

String的replace()方法,在 输出格式中很常用!

2024-05-23 20:48:09 456

原创 Spring框架中bean的生命周期

Bean在开始加载之前要从上下文和一些配置中去解析并且查找Bean有关扩展的实现,比如像‘init-method’,容器在初始化Bean的时候或调用的一个方法,destroy-method,容器在销毁Bean的时候会调用的一些方法,以及BeanFactoryPostProcessor这一类的Bean加载过程中的一些前置和后置的一些处理扩展实现,这些类和配置其实是Springr提供给开发者用来去实现Bean加载过程中的一些扩展,在很多和Spring集成的中间件也比较常见,比如Dubbo,这样一些中间件。

2024-05-23 11:46:55 831

原创 Synchronized和ReentrantLock有什么区别?

两种锁都支持可重入性,synchronized支持隐性的重进入,比如 线程可以在递归执行同步块里的代码而不被阻塞,ReentrantLock需要显式调用lock()方法;

2024-05-23 11:45:38 840

原创 动态规划之0-1背包问题理论基础-02(滚动数组)

以上的讲解可以开发一道面试题目(毕竟力扣上没原题)。就是本文中的题目,要求先实现一个纯二维的01背包,如果写出来了,然后再问为什么两个for循环的嵌套顺序这么写?反过来写行不行?再讲一讲初始化的逻辑。然后要求实现一个一维数组的01背包,最后再问,一维数组的01背包,两个for循环的顺序反过来写行不行?为什么?注意以上问题都是在候选人把代码写出来的情况下才问的。就是纯01背包的题目,都不用考01背包应用类的题目就可以看出候选人对算法的理解程度了。相信大家读完这篇文章,应该对以上问题都有了答案!

2024-05-23 11:44:38 594

原创 动态规划之0-1背包问题理论基础-01

讲了这么多才刚刚把二维dp的01背包讲完,这里大家其实可以发现最简单的是推导公式了,推导公式估计看一遍就记下来了,但难就难在如何初始化和遍历顺序上。可能有的同学并没有注意到初始化 和 遍历顺序的重要性,我们后面做力扣上背包面试题目的时候,大家就会感受出来了。讨论到a【i】【j】时的两种情况怎么操作?为什么这么操作?假设已经讨论到了a【i】【j】,即j容量下到前i个物品的讨论,有两种情况1.选择不装第i个物品,则退回到i-1行,直接选择a【i-1】【j】作为该情况下最大价值。

2024-05-22 21:54:47 509

原创 力扣 滑动窗口题目总结

其实就是一个队列,比如例题中的 abcabcbb,进入这个队列(窗口)为 abc 满足题目要求,当再进入 a,队列变成了 abca,这时候不满足要求。所以,我们要移动这个队列!

2024-05-21 22:12:30 763

原创 关于java中的重要的基础概念问题说明(持续补充 )

具体的方法必须由实现接口的类覆盖实现,在调用时始终只会调用实现类(也就是子类覆盖的方法)的方法,不会出现歧义(上面多继承的第二个缺点)。3、如果子接口继承的多个父接口中有相同的属性a,那么类在实现接口时是不能调用接口里面的属性a的,与类不能多继承原因一致,造成引用不明确。如果是不同的属性,实现类是可以调用的。举例说明:如果类A同时继承了B,C,类B和C有相同的方法d,那么类A该继承哪个类的d方法呢,这是不明确的。4、总结一下,接口可以继承多个父接口的相同的方法,不同的属性,不能继承多个父接口中相同的属性。

2024-05-21 17:19:16 210

原创 Mybatis Plus 的优点

Mybatis-Plus是一个Mybatis的增强工具,只是在Mybatis的基础上做了增强却不做改变,MyBatis-Plus支持所有Mybatis原生的特性,所以引入Mybatis-Plus不会对现有的Mybatis构架产生任何影响。8、支持代码生成:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码(生成自定义文件,避免开发重复代码),支持模板引擎、有超多自定义配置等。)自动转义,还可自定义关键词。

2024-05-20 15:24:41 222

原创 JVM垃圾回收器G1大总结-详解

1.停顿时间模型??作为CMS收集器的替代者和继承人,G1是基于“停顿时间模型”诞生的的垃圾收集器,停顿时间模型的意思是能够支持指定在一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间大概率不超过N毫秒这样的目标.2.G1摒弃了以往对堆中区域分代的划分思想,而是将堆划分为大小相同的区(Region),

2024-05-05 20:15:44 893

原创 JVM六种常见的垃圾回收器-重点含CMS过程详解

解决了STW时间过长的问题,使垃圾回收时用户的等待时间变短。

2024-05-05 20:01:04 525

原创 leetcode51.N皇后(困难)-回溯法

都知道n皇后问题是回溯算法解决的经典问题,但是用回溯解决多了组合、切割、子集、排列问题之后,遇到这种二维矩阵还会有点不知所措。从图中,可以看出,二维矩阵中矩阵的高就是这棵树的高度,矩阵的宽就是树形结构中每一个节点的宽度。确定完约束条件,来看看究竟要怎么去搜索皇后们的位置,其实搜索皇后的位置,可以抽象为一棵树。那么我们用皇后们的约束条件,来回溯搜索这棵树,

2024-04-29 22:19:23 432 2

原创 Java语言中ACM模式输入输出,笔试题必备知识

ACM模式 练习,主要包含一些 输入输出 格式的练习,笔试题目 必会技能,防止卡在输入关。

2024-04-29 14:30:39 675 1

原创 leetcode79.单词搜索 | 回溯算法 | 最通俗易懂的讲解 【java版】

单词起点一共有 n2个,单词的每个字母一共有上下左右四个方向可以选择,但由于不能走回头路,所以除了单词首字母外,仅有三种选择。深度优先搜索,我们定义这样一种搜索顺序,即先枚举单词的起点,然后依次枚举单词的每个字母。3、如果当前搜索的位置(x,y)的元素board[x][y] == word[u],则继续向四周搜索。2、从该起点出发向四周搜索单词word,并记录此时枚举到单词word的第u个位置 ( u从0开始)。1、从搜索过的位置继续搜索下一层时,需要对当前位置进行标识,表示已经搜索。

2024-04-26 17:31:03 134 1

原创 leetcode1143. 最长公共子序列(ACM模式解法)

给你一个序列X和另一个序列Z,当Z中的所有元素都在X中存在,并且在X中的下标顺序是严格递增的,那么就把Z叫做X的子序列。输入包含多组测试数据。每组输入占一行,为两个字符串,由若干个空格分隔。每个字符串的长度不超过100。例如:Z=是序列X=的一个子序列,Z中的元素在X中的下标序列为。现给你两个序列X和Y,请问它们的最长公共子序列的长度是多少?对于每组输入,输出两个字符串的最长公共子序列的长度。

2024-04-26 17:17:25 227

原创 数据库MySQL中当前读和快照读区别

比如: 之所以出现快照读的情况,是基于提高并发性能的考虑,快照读的实现是基于MVCC,它在很多情况下, 避免了加锁操作,降低了开销。快照读的前提是隔离级别不是串行级别,串行级别下的快照读会退化成当前读。当前读读取的是记录的最新版本(最新数据,而不是历史版本的数据),读取时还要保证其他并发事务 不能修改当前记录,会对读取的记录进行加锁。Read Committed隔离级别下:快照读和当前读读取的数据是一样的,都是最新的。当前读:每次读取的都是当前最新的数据,但是读的时候不允许写,写的时候也不允许读。

2024-04-22 20:43:59 506

原创 ThreadLocal内存泄露问题&&key的弱引用相关问题总结

ThreadLocal 是一个强大的多线程编程工具,但在使用时需要格外小心,以避免引发内存泄露等问题。通过及时清理 ThreadLocal、使用弱引用以及注意线程池中的潜在问题,我们可以更安全地使用 ThreadLocal,确保应用程序的性能和稳定性。同时,利用内存分析工具和单元测试,可以更早地发现和解决潜在的内存泄露问题。希望通过本文的讨论,读者能更深入地理解 ThreadLocal 内存泄露问题,并在实际开发中避免相关风险。

2024-04-19 17:11:18 802

原创 JAVA中同步方法和同步代码块的区别是什么?

对于关键字synchronized修饰的方法,不需要再指定同步监视器,这个同步方法(非static方法)无需显式地指定同步监视器,同步方法的同步监视器就是this,也就是调用该方法的对象。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。同步代码块可以选择以什么来加锁,比同步方法要更颗粒化,我们可以选择只同步会发生问题的部分代码而不是整个方法。即有synchronized修饰符修饰的语句块,被该关键词修饰的语句块,将加上内置锁。同步是高开销的操作,因此尽量减少同步的内容。

2024-04-18 22:35:50 248

原创 List集合接口实现类ArrayList 与 LinkedList的方法及其区别

ArrayList 是从JDK1.2 引入的。它是可调整大小的数组,实现了List接口。实现所有可选列表操作,并允许所有元素包括null。除了实现List 接口之外,该类还提供了一些方法来操纵内部使用的存储列表的数组的大小。(这个类是大致相当于Vector,不同之处在于它是不同步的)。内部封装一个数组,用数组来存储数据。内部数组的默认初始容量 10,存满后 1.5 倍增长。

2024-04-18 10:16:00 781

原创 快速排序题目&SelectK问题(力扣75.颜色分类、力扣215.数组中的第K个最大元素、面试题17.14最小K个数)

(如果10个数,K=1,第一个最大的数,就是SelectK索引为9的那个的元素)(如果10个数,第10个最大的数,就是SelectK索引为0的那个的元素,最小值)如果 k 是 nums.length,其实就是求最小元素,那么相应的我们的 selectK 的。非常简单,我们只需要在调用 select K 之前,将求第 k 大元素的这个 k,转换成。注意,因为在这个问题中,我们肯定我们处理的数据类型是 int,所以,在代码。按照题目描述,如果 k 是 1,对应就是要找最大元素,那么相应的我们的。

2024-04-16 22:59:29 802

原创 关于哈希表(Hash Table)数据结构

然而,如果哈希函数设计不当或者数据分布不均匀,可能会导致哈希冲突增多,降低了性能。3. **哈希冲突(Hash Collision)**:由于哈希函数的映射范围可能小于键的实际取值范围,不同的键可能映射到同一个桶中,导致哈希冲突。1. **数组(Array)**:哈希表的核心是一个数组,这个数组的每个元素称为一个桶(Bucket)。每个桶可以存储一个或多个键值对。2. **哈希函数(Hash Function)**:哈希函数是一个算法,它接受一个键作为输入,并返回该键对应的哈希码(Hash Code)。

2024-04-13 21:57:11 225 1

原创 关于集合HashMap面试常问问题合集

在源码中,ConcurrentHashMap通过`Segment`类实现了分段锁,每个Segment类似于一个小的HashMap,具有自己的锁,不同的Segment可以同时被不同的线程操作,从而提高了并发性能。`get`过程:根据键的哈希码找到对应的桶,然后在链表或红黑树中查找对应的值。- 当插入的键在桶中已经存在时,1.8版本采用了尾插法,即将新的键值对插入到链表或红黑树的末尾,而不是头插法,这样可以保持链表或红黑树中键值对的插入顺序,避免了扩容后链表顺序逆转导致的死循环。

2024-04-13 21:40:25 580

原创 深入理解Java中的字段与属性的区别

于是就加上了属性,简单说属性实现了字段的封装,属性有get、set 方法来控制字段,该字段的属性只有set方法没有get方法,就只可以对该方法进行赋值操作,没有读操作,反之亦然。JavaBean在Java EE开发中,通常用于封装数据,对于遵循以上写法的JavaBean组件,其它程序可以通过反射技术实例化JavaBean对象(内省机制),并且通过反射那些遵循命名规范的方法,从而获知JavaBean的属性,进而调用其属性保存数据。字段和常量描述了类的数据(域),当这些数据的某些部分不允许外界访问时,

2024-04-10 21:32:09 263

原创 Windows11安装MySql-8.0.36安装详细教程(保姆级教程)

Windows11安装MySql-8.0.36安装详细教程(保姆级教程)

2024-04-03 16:34:43 1449 1

原创 springboot mail 发送163邮件基础配置操作

配置申请到的授权码(刚让复制的授权码)# 配置 smtp 服务器地址。

2024-03-21 15:14:36 581 1

原创 解决在创建springboot项目中遇到:Error:(3, 32) java: 无法访问org.springframework.boot.SpringApplication

问题出现的原因就是在这里。如下图所示:创建项目的时候,默认选择了高版本的springboot,与jdk不适配。

2024-03-10 20:23:53 426 1

原创 解决:启动Tomcat遇到 Neither the JAVA_HOME nor the JRE_HOME environment variable is defined 问题,包括启动运行乱码问题

调试步骤:双击tomcat的bin目录下的startup.bat时一闪而过时,可以右键startup.bat找一个文本编辑器打开,然后在文本的最后敲上pause,保存后重新运行startup.bat,这时候窗口会留在桌面上(调试成功,把pause去掉即可)。如果“JAVA_HOME”和“JRE_HOME”本身为空,在系统变量中又找不到,就会出现标题中的问题,导致 Tomcat 启动失败。即:既没有定义JAVA_HOME,也没有定义JRE_HOME环境变量,运行此程序至少需要这些环境变量中的一个。

2024-03-08 19:27:32 1031

原创 解决Mabatis报错问题:org.apache.ibatis.binding.BindingException+xxx is not known to the MapperRegistry.问题总结

1、xml不能有中文注释(我的IDEA2021+Maven3.8.1实测可以加中文注释,旧版本可能不行)3、MybatisUtils.java里面,原来是改成——sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);去了最前面的声明,因为前面 已经声明过了,private static SqlSessionFactory sqlSessionFactory;//提升作用域!!!

2024-02-27 20:39:46 1078

原创 MySQL解答ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD‘ for column-解决方案

到这一步相信大部分人的问题就已经解决了,但是有少部分人(比如我)还是无法解决这个问题,那么此时我们还需要去检查表的字符集和表里面的字段的字符集,输入。格式不兼容,不支持插入中文数据,因此我们在用python向数据库进行中文数据插入时,要注意:连接数据库和数据库的编码格式是否都为utf-8。注意看,此时dept中DNAME和LOC的字段字符集也不是utf8,所以还是无法正常插入中文。可以看到我的数据库中database的字符集并不是utf8,输入。可以看到表格的字符集并不是utf8,此时输入。

2024-02-27 15:45:36 340

原创 MySQL:错误ERROR 1045 (28000)详解

或者:错误:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)错误:ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: YES)3、通过命令行win+R进入MySQL的BIN目录,输入“mysql -u root -p”(不输入密码),按下两个回车即可进入数据库(最好用管理员运行终端)。

2024-02-27 15:04:42 693

原创 Maven环境搭建

为什么有Maven的存在?

2024-02-27 11:02:55 931

原创 代码随想录算法训练营day23||二叉树part09、● 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树

在二叉树:构造二叉树登场!和二叉树:构造一棵最大的二叉树 (opens new window)之后,我们顺理成章的应该构造一下二叉搜索树了,一不小心还是一棵平衡二叉搜索树。其实思路也是一样的,不断中间分割,然后递归处理左区间,右区间,也可以说是分治。此时相信大家应该对通过递归函数的返回值来增删二叉树很熟悉了,这也是常规操作。在定义区间的过程中我们又一次强调了循环不变量的重要性。最后依然给出迭代的方法,其实就是模拟取中间元素,然后不断分割去构造二叉树的过程。

2024-02-24 16:43:23 812

原创 代码随想录算法训练营day22||二叉树part08、● 235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点

对于二叉搜索树的最近祖先问题,其实要比普通二叉树公共祖先问题 (opens new window)简单的多。不用使用回溯,二叉搜索树自带方向性,可以方便的从上向下查找目标区间,遇到目标区间内的节点,直接返回。最后给出了对应的迭代法,二叉搜索树的迭代法甚至比递归更容易理解,也是因为其有序性(自带方向性),按照目标区间找就行了。读完本篇,大家会发现二叉搜索树删除节点比增加节点复杂的多。因为二叉搜索树添加节点只需要在叶子上添加就可以的,不涉及到结构的调整,而删除节点操作涉及到结构的调整。

2024-02-23 21:51:08 1183

原创 代码随想录算法训练营day20||二叉树part07、● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先

遇到在二叉搜索树上求什么最值,求差值之类的,都要思考一下二叉搜索树可是有序的,要利用好这一特点。同时要学会在递归遍历的过程中如何记录前后两个指针,这也是一个小技巧,学会了还是很受用的。后面我将继续介绍一系列利用二叉搜索树特性的题目。本题在递归法中,我给出了如果是普通二叉树,应该怎么求众数。知道了普通二叉树的做法时候,我再进一步给出二叉搜索树又应该怎么求众数,这样鲜明的对比,相信会对二叉树又有更深层次的理解了。

2024-02-23 20:14:26 946

原创 代码随想录算法训练营day19||二叉树part06、654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

这道题目其实和二叉树:构造二叉树登场!是一个思路,比二叉树:构造二叉树登场!还简单一些。注意类似用数组构造二叉树的题目,每次分隔尽量不要定义新的数组,而是通过下标索引直接在原数组上操作,这样可以节约时间和空间上的开销。一些同学也会疑惑,什么时候递归函数前面加if,什么时候不加if,这个问题我在最后也给出了解释。其实就是不同代码风格的实现,一般情况来说:如果让空节点(空指针)进入递归,就不加if,如果不让空节点进入递归,就加if限制一下, 终止条件也会相应的调整。

2024-02-22 21:31:29 870

原创 代码随想录算法训练营day18||二叉树part05、513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构

递归求深度的写法,我们在110.平衡二叉树 (opens new window)中详细的分析了深度应该怎么求,高度应该怎么求。递归中其实隐藏了回溯,在257. 二叉树的所有路径 (opens new window)中讲解了究竟哪里使用了回溯,哪里隐藏了回溯。层次遍历,在二叉树:层序遍历登场!深度讲解了二叉树层次遍历。所以本题涉及到的点,我们之前都讲解过,这些知识点需要同学们灵活运用,这样就举一反三了。

2024-02-22 15:47:14 570

原创 代码随想录算法训练营day17||二叉树part04、110.平衡二叉树 、257. 二叉树的所有路径 、404.左叶子之和

注意:迭代法,可以先过,二刷有精力的时候 再去掌握迭代法。110.平衡二叉树 (优先掌握递归)再一次涉及到,什么是,什么是,可以巩固一下。题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 返回 true。示例2:返回false。

2024-02-19 19:49:37 1031

原创 代码随想录算法训练营day16||二叉树part03、104.二叉树的最大深度 、559.n叉树的最大深度、111.二叉树的最小深度、222.完全二叉树的节点个数

3.确定单层递归的逻辑:先求它的左子树的节点数量,再求右子树的节点数量,最后取总和再加一 (加1是因为算上当前中间节点)就是目前节点为根节点的节点数量。的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。本题可以使用前序(中左右),也可以使用后序遍历(左右中),使用前序求的就是深度,使用后序求的是高度。思路:本题要搞懂:什么是深度,什么是高度,如何求深度,如何求高度,这里有关系到二叉树的遍历方式。时间复杂度:O(n);

2024-02-17 22:44:40 1001 1

原创 代码随想录算法训练营day15||二叉树part02、102.二叉树的层序遍历、 226.翻转二叉树(优先掌握递归)、101. 对称二叉树 (优先掌握递归)

二叉树的层序遍历,就是图论中的广度优先搜索在二叉树中的应用,需要借助队列来实现(此时又发现队列的一个应用了)。102.二叉树的层序遍历(opens new window)107.二叉树的层次遍历II(opens new window)199.二叉树的右视图(opens new window)637.二叉树的层平均值(opens new window)429.N叉树的层序遍历(opens new window)515.在每个树行中找最大值(opens new window)

2024-02-09 17:16:35 788 1

原创 代码随想录算法训练营day14||二叉树part01、理论基础、递归遍历、迭代遍历、统一迭代

这里帮助大家确定下来递归算法的三个要素。

2024-02-08 23:06:06 727

原创 代码随想录算法训练营day13|| 239. 滑动窗口最大值、347.前 K个高频元素、总结

寻找前k个最大元素流程如图所示:(图中的频率只有三个,所以正好构成一个大小为3的小顶堆,如果频率更多一些,则用这个小顶堆进行扫描)大家对这个比较运算在建堆时是如何应用的,为什么左大于右就会建立小顶堆,反而建立大顶堆比较困惑。确实 例如我们在写快排的cmp函数的时候,

2024-02-07 23:46:33 576 1

空空如也

空空如也

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

TA关注的人

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