自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCodeHot100——215.数组中的第K个最大元素

我们可以利用这个性质,我们先创建一个小根堆大小为K,我们将前K个数字先放入堆中,构造好堆后对于后面的数字,如果说当前位置的数字大于根节点的话,就让根节点出队,同时让数组进队,如果当前位置的数字小于根节点的话就直接跳过,整个过程概括起来就是先把堆塞满,然后利用堆的性质,遍历数组的同时将较大的数字放入堆中,较小的数字被弹出或者过滤,最终堆中只存在K个数字,分别是第K大的数~最大的数,而此时的根节点就是我们要找的第K大的数,直接返回就好了;的元素”,然后利用快速排序的分区思想,每次确定一段等于基准值的位置范围。

2026-06-19 23:34:44 381

原创 LeetCodeHot100——84.柱状图中最大的矩形

我们还需要维护两个数组,一个数组left是用来存储当前位置左侧的第一个小值的,一个数组right是用来存储当前位置右侧第一个小值的。这道题还是有点难度的,所以我直接说一说我的思路,这道题我使用了单调栈来实现,因为对于每一个位置的柱子来说,他和旁边柱子连在一起能有多大面积只需要看比当前位置高的邻居,因为如果比当前位置高的话连起来的高度依旧是当前的高度只不过宽度进行了改变,如果我们对每一位置进行统计的话,那我们就知道每一个位置高度对应相连矩形的面积。

2026-06-19 21:27:51 56

原创 LeetCodeHot100——739.每日温度

对于这题我们的思路是利用一个单调栈来实现,单调栈就是确保栈中是按单调递减或单调递增的规则进行数据存储,如果有打破规则的就让对应位置出栈,确保满足规则。

2026-06-17 23:27:26 272

原创 LeetCodeHot100——560.和为K的子数组

这道题很容易让人发蒙,我最初的时候认为这是一个双指针的题目,因为可以通过滑动窗口的方式来实现,但是要使用滑动窗口必须得让数组是有序的,也就需要排序,我们使用快排的话时间复杂度就是O(nlog(n)),并且排好序了之后在窗口的移动上有着很多的情况要处理,所以我们想想我们可不可以再换个思路优化一下,我们这里选择使用前缀和的思想,再用Map来存储每个位置的前缀和,和出现的数量,遍历到一个位置就看当前位置前缀和-目标值有没有出现过出现了几次,将这些统计起来,最后返回就好了。

2026-06-12 10:50:28 778

原创 LeetCodeHot100——155.最小栈

我最初是想在一个栈的基础上加上一个属性用来存储最小值,如果你也这么想那么你就想的太简单了,如果栈里有5个元素,最小值肯定是确定了呗,那如果我们这时候pop了呢,那下一个最小值怎么确认?下面是我的方法,我是使用了map,主要是想熟悉一下map的api,在我们不知道key值的时候想按序获取map的Key和Value使用map.entrySet().iterator().next().getValue()/getKey()来操作;

2026-06-12 09:30:25 234

原创 LeetCodeHor100——438.找到字符串中所有的字母异位词

首先进行边界处理,对于空字符串和null值做处理(虽然你的代码中未显式写出,但这是滑动窗口题的常规操作)。,如果相等,说明当前窗口内的字符种类和数量与目标字符串完全一致,将当前窗口的起始下标加入结果集,遍历结束后返回即可。中的值等于-1,说明它之前是被多消耗掉的,现在加1后刚好变为0,意味着我们“还回”了一个有效字符,此时必须将。我们在处理的时候,只有当字符从“缺少”(>0)变为“匹配”(<=0)时才增加。中的频次是否大于0,如果大于0,说明这个字符是我们需要的,于是将。),如果是,只需判断。

2026-06-11 14:20:04 66

原创 LeetCodeHot100——3.无重复字符的最长子串

【代码】LeetCodeHot100——3.无重复字符的最长子串。

2026-06-11 13:26:37 366

原创 Linux常见命令总结

(3)-exec 将查找到的目标进行进一步处理,exec后跟随处理命令,命令中通过 {} 引用被找的文件,而且命令必须以 “ \;su [-] [用户名] 默认切换为root -:切换用户的同时用指定用户登录shell环境替换当前shell环境;/:目录,*:可执行,@:符号链接,|:管道,=:socket文件;-l:以长文本形式显示文件信息,如权限drwxr-xr-x...等;-a:显示所有连接 -r:显示路由表 -n:以数字显示连接端口。(1)cd test:进入目录;

2026-06-10 16:33:30 530

原创 LeetCodeHot100——42.接雨水

这道题我们可以这样来看,一个位置能接多少水是由其左侧的最高值和右侧的最高值中的最小值减去这个位置箱子的高度来得出来的所以我们自然就想到了前缀和和后缀和,先获取每个位置的前缀最大值和后缀最大值,这样就能求每个位置的水深了;这道题的意思比较难理解,就是给定一个数组,它的长度可以理解为是一个悬空的平台,每一个下标的值代表他有宽度为1,高度为对应值的一个方块,题目就是要我们求这些方块中能接多少雨水;

2026-06-10 13:46:50 259

原创 LeetCodeHot100——15.三数之和

这道题的意思就是找出给定数组nums中,和为0的三数字组合,之前我们在做两数之和的时候使用了Set的性质来做,但是三个的时候就无法通过一对一的关系找元素了,所以我们要换一种思路来做,从双指针来入手做这个题;(2)当前值+左值+右值>0,由于排好序了所以我们就向左移动右指针;(3)当前值+左值+右值<0,由于排好序了所以我们就向右移动左指针;(1)当前值+左值+右值==0,加入到结果集中;

2026-06-10 13:28:28 377

原创 LeetCodeHot100——盛水最多的容器

这道题正确的做法是先分析题意,如果说任取两个柱子计算面积值,如果较矮的柱子和中间的柱子组成容器的话,如果说那个柱子比较矮的柱子还要矮那么下标差和两个柱子之中较矮的高度都会变小,所以面积不可能比原来的大,如果说那个柱子比较矮的柱子高,那么两个柱子之中较矮的高度不变,下标差变小所以也不会比原来的面积大。这题的目的是找出两个柱子间最大的面积,即下标的差*两个柱子之中较矮的高度的最大值,这道题我只想出了暴力做法就是进行两个for循环,时间复杂度超出要求了;

2026-05-29 23:23:35 258

原创 SpringBoot使用Thymeleaf模板引擎,前端的基本语法

Thymeleaf 处理 URL 极其强大,能自动带上项目的上下文路径(Context Path),并且完美支持参数拼接。在修改或新增数据时,这套组合拳能让表单自动填充数据,并在提交时自动封装到后端实体类中。这是最常用的语法,用于从后端 Controller 传递的。Thymeleaf 提供了一系列以。开头的工具类,专门用来处理格式化。避免每个页面都重复写导航栏和页脚。用于渲染表格、下拉框等重复结构。控制页面元素的显示与隐藏。

2026-05-27 19:21:32 91

原创 SpringBoot学习日记——DAY07(mybatis-plus代码生成器)

要在文件里编写上url,username,password,还有swagger的配置原则,还有mybatis-plus的一些配置,如日志等。接下来就可以运行测试类的操作就好了;

2026-05-27 13:44:52 217

原创 LeetCodeHot100——283.移动零

这道题我在做的时候想比较简单,就是遍历这个数组的同时如果遇到了0元素就进行一个自循环,查找它后面的首个非0元素并交换位置,依次往复,如果已经处理完就像1,3,2,0,0,0这种的时候,会判断后面还有没有非0元素,如果没有就跳出循环,返回数组,但实际上我的这种做法效率比较低,毕竟嵌套了自循环;这道题是典型的双指针滑动窗口,并且窗口大小是可变的,我们直接上两个指针,注意在处理这类题目的时候一定要想好了左指针和右指针都指向谁,什么时候移动左指针,什么时候移动右指针;

2026-05-26 20:03:10 79

原创 SpringBoot学习日记——DAY06(整合MyBatisPlus的其他功能)

这里可以看到我的Service继承了IService<实体类>,ServiceImpl继承了ServiceImpl<实体类的mapper,实体类>,这一系列操作下来我们就可以实现绝大多数的Service操作了;这里注意在多个数据源的业务场景可以自己编写新的方法同时调用IService提供的方法同时使用@DS来指明不同的数据源;,是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。到这里我们自动填充相关的内容就配置完毕了;我在这里指明了自动填充的类型。

2026-05-26 17:39:40 491

原创 LeetCodeHot100——128.最长连续序列

这道题主要思路就是想要在一个凌乱的数组中找出一组最长的连续数字序列。

2026-05-24 19:24:16 172

原创 SpringBoot学习日记——DAY05(SpringBoot整合MyBatis-plus实现增删改查)

/select></select></mapper>@Param是别名。

2026-05-24 17:36:29 1103

原创 SpringBoot学习日记——DAY04(整合junit,myBatis)

在使用时我们原来需要在mapper接口进行方法的注册,但是如果我们想获取到MyBatis-Plus为我们提供的方法的话我们可以直接让mapper接口继承BaseMapper<实体类名>我们知道MyBatis在使用时要编写对应的mapper,有一些格式化的SQL编写起来会浪费时间,所以我们引入MyBatis-Plus可以直接给我们的一些简单的固定化的SQL来进行实现。主要的是我们整合MyBatis和SpringBoot的时候需要配置Mapper的扫描。2.在Mapper接口处使用@Mapper。

2026-05-21 15:04:00 381

原创 Spring学习日记——DAY03(yml文件)

大小写敏感使用空格缩进表示层级关系key 与 value 之间必须加空格字符串默认不加引号,特殊字符需用双引号支持字面值、对象、数组、复合结构file:./启动参数指定:plaintext。

2026-05-20 14:00:29 198

原创 SpringBoot学习日记——DAY02(SpringBoot整合Swagger3)

SpringBoot自启动技术主要通过两个类的加载器来完成。ClassLoader不会更改的类(来自第三方的jar包)被加载到Base ClassLoader中会更改的类被加载到Restart ClassLoader。还可以使用ApiImlicitParam对方法的参数做说明,也可以利用ApiParam对参数做说明。配置好了就重启服务器,就可以实现修改功能springboot自启动了。配置程序实参,--spring.config.name=文件名。可以在application.yml文件中配置排除资源。

2026-05-19 15:36:13 280

原创 LeetCodeHot100——49.字母异位词分组(详细讲解)

说完了思路,来说一下具体要注意的一些细节,对于java而言要想对String中的字母进行排序,要不就是通过stream的自定义sort进行排序,要不然就是通过先用toCharArray()转为char数组,然后利用Arrays.sort()进行排序。还有就是将map的value或者key转为List的话就是先通过values()将value转为一个set或者通过keySet()将key转为一个set,通过stream()将集合类放入流中,再通过stream的toList方法转为List。

2026-05-19 08:00:00 70

原创 LeetCodeHot100——1.两数之和(详细解答)

List:加入元素add(),删除元素remove(),修改指定位置元素set(index,newVal),获取指定下标的值get(),获取指定值的下标indexOf();Map:加入元素put(),删除元素remove(),查看是否存在key:containsKey(),查看是否存在value:containsValue。Deque:入队offer(),出队poll(),模仿栈:入栈:push(),出栈:pop(),查看栈顶peek();

2026-05-18 16:24:42 353

原创 SpringBoot学习日记——DAY01(环境配置,运行)

我们在补充或者修改springboot的依赖时不需要进行版本设置,因为spring-boot-starter-dependencies中都已经配置好了对应的版本,当然执意要更改不同版本的依赖的话也是可以的,但是不推荐。我们手动配置的操作,继承了spring-boot-starter-parent,并且导入了web相关的依赖spring-boot-starter-web;spring-boot-starter-parent是所有的Springboot都要继承的项目。我们还可以引入不同的依赖;

2026-05-18 14:37:08 233

原创 整合ssm框架,详细讲解

我们在进行 JavaEE 开发时,为了实现解耦和提高开发效率,通常会采用 SSM(Spring+SpringMVC+MyBatis)框架整合的方案。

2026-05-17 12:04:50 234

原创 Spring学习日记——DAY07(SpringMVC)

采用Controller注释来放入spring容器中,RequesMapping用来指明url地址,还可以使用RESTFUL的形式,还可以用method属性来指明操作行为是get还是post,在使用RESTFUL形式的url时,方法可以自动解析,但是必须加@PathVariable注释。配置好web.xml文件实例,注意下面的mapping标签的url-pattern指的是被管理的标签,/指的是除了.jsp和.do以外的资源。V:view视图层:jsp html css js。3.返回JSON格式。

2026-05-17 11:51:44 247

原创 Spring学习日记——DAY06(事务管理)

级别描述默认级别,mysql数据库默认隔离级别是ISOLATION_REPEATABLE_READ,Oracle数据库默认级别ISOLATION_READ_COMMITTED读未提交,没有解决并发问题读已提交,解决脏读可重复读,解决脏读,不可重复读串行化,不会发生并发问题。

2026-05-14 15:09:17 501

原创 Spring学习日记——DAY05(整合MyBatis)

我们可以看到我们不对<environment>进行配置了,我们把对于底层的配置(url/password/username)放在Spring的bean容器中进行配置,我们这里仅仅配置了类型简写和mappers文件的位置;我这里实现了一个简单的insert功能,这里我把Mapper接口提供给bean容器了,以便于后续我可以直接获取Mapper接口的实现类,将其注入到Service层的实现类中;我采用了注解的方式,将StudentMapper的实现类注入到Service的实现类中。

2026-05-14 14:02:01 220

原创 Spring学习日记——DAY04(复杂对象创建,AOP静态代理)

底层通过反射调用 FactoryBean 实现类的 getObject ()解析 XML 获取 FactoryBean 实现类全类名反射创建工厂实例调用得到复杂对象根据决定是否缓存实现接口,重写convert方法S:源类型T:目标类型@Override// setter 注入格式注册转换器(id 固定为-- 注册自定义转换器 --><set></set></bean>-- 配置转换器实例 -->使用:配置后 Spring 可自动将字符串转为指定日期类型。

2026-05-12 15:27:58 259

原创 Spring学习日记——DAY03(注解注入处理)

默认情况,使用byType自动注入,如果要使用byName的方式进行注入则需要用到@Qualifier标签进行指定id,且一般情况下更推荐@AutoWired用于构造方法。@AutoWired默认情况下是按类型装配,要求依赖对象必须存在,不存在则出现空指针异常,但是可以通过属性required=false,则可以为空。是由jdk提供的注解,并且在较高版本的jdk已经将他移除标准库了,也是自动注入处理,但是默认是byName,如果说ByName失败就自动转为ByType。

2026-05-11 14:09:38 188

原创 Spring框架学习日记——DAY02(依赖注入的方式)

类里的属性名 == bean 的 id。直接写在 bean 标签里,不用写。,Spring 自动找。

2026-05-10 16:58:48 132

原创 Spring学习日记——Day01(简单配置使用Spring,手写Spring的简单工厂模式)

哈喽大家好,今天继续肝 Spring 框架,从最基础的环境、设计模式,一路冲到和,全是干货,直接当笔记抄~

2026-05-09 17:21:51 242

原创 MyBatis学习日记——DAY05(多表关联关系处理)

***/@Data@Override然后在mapper.xml文件中进行关联设置结果集resultmap</select></mapper>这里的的id就是名字方便在Sql方法中进行配置,type是结果的类型,里面的id一般就是主键,用property绑定类的属性,用column绑定字段,如果说类是单个嵌套的关系那么直接使用association进行解构就好了,在association标签中通过property制定属性用javaType指定model类,内部的构造与前面说的一致;

2026-05-07 14:55:32 215

原创 简单LRU的实现(基于LinkedHashMap)

先简单介绍一下题目要求,所谓LRU就是一个简单的缓存,比如说存入了[1,1],[2,2],然后我根据键值获取对应的值并对其加1,获取了[2,2]那么就把[2,2]放到容器尾部,并且将值加1,容器内部由[1,1],[2,2]变为[2,3],[1,1],并且如果LRU是有大小的,如果超出大小在添加元素后时需要舍弃最不常使用的元素的,具体的要求大家可以去看leetcode官网上面。一个默认的就是调用HashMap的构造方法同时调整为根据插入顺序维护链表,另一个是自己对大小,负载因子,链表维护模式。

2026-05-06 22:06:45 343

原创 MyBatis学习日记——DAY04(动态拼接SQL)

在使用 MyBatis 进行开发时,我们经常会遇到需要根据前端传参的不同来动态调整 SQL 语句的场景。比如,查询条件可能有,也可能没有;更新语句可能只更新部分字段。如果手动去拼接字符串,不仅代码冗余、难看,还容易出错(比如多出来的逗号或者ANDMyBatis 提供了一套强大的语法,能让你优雅地解决这些问题。以下我为你整理的 MyBatis 动态 SQL 核心标签速查手册,基于你提供的文档内容进行了详细解读。

2026-05-06 15:26:01 351

原创 MyBatis学习日记——DAY03(手写MyBatis框架实现简单功能)

DbProfile运行流程回顾:Test.main调用。XMLParser读取和,将数据库配置和 SQL 语句存入DbProfile。拿到DbProfile。创建数据库连接。利用 JDK 动态代理生成接口的实现类(ProxyImpl调用-> 被代理拦截 -> 拼接 Key -> 从 Map 中查找 SQL ->DBUtil执行 JDBC -> 返回结果。

2026-04-30 15:34:03 429

原创 MyBatis学习日记——DAY02

我们主要掌握了如何使用 MyBatis 进行数据库的单表操作,理解了框架是如何简化 JDBC 代码的,并探索了更优雅的 DAO 层开发模式。MyBatis 的核心优势在于将 SQL 语句与 Java 代码解耦。这是 MyBatis 中最常被问到的面试题,也是防止 SQL 注入的关键。为了方便调试 SQL 语句,配置日志是第二天必须掌握的技能。,我们可以直接在控制台看到执行的 SQL 和参数。文件中,我们通过不同的标签来对应数据库操作。,除非是动态的 SQL 结构(如排序字段)。

2026-04-26 15:04:53 421

原创 MyBatis学习日记——day01

MyBatis是开源的持久层框架。定制化sql、存储过程、高级映射。MyBatis避免几乎所有的jdbc代码和手动设置参数以及获取结果集。可以使用简单的xml文件或者注解来配置和映射原生信息,将接口和POJO映射成数据库中的记录常见的一些持久层框架:hibernate:全自动框架;spring data jpa:基于hibernate实现;mybatis:半自动框架,专注于sql的编写和优化;

2026-04-25 14:54:07 218

原创 git使用快速入门

暂存区:把工作区的部分或者全部已经确认,需要保存的文件提交到暂存区,由暂存区先进性保存、如果直接确认可以提交到本地仓库,如果不能做决定,可以放在暂存区,在暂存区的文件,剋提交到仓库,也可以删除;git reset --hard:会重置head和branch,对于被追踪的文件,都会被回溯到指定版本的状态,之前不存在的文件会被删除,存在的文件会回退到指定状态;工作区:在自己的电脑上,直接编辑文件的地方,包含两部分,git已经管理的文件区域和新增以及修改的文件区域;数据一旦进入版本库,再进行修改,都会有记录;

2026-04-24 14:35:30 251

原创 Nexus私服的使用(配合Maven)

下载地址:https://help.sonatype.com/repomanager3/product-information/download下载解压后的文件结构是这样的:进入nexus->bin目录下,打开cmd,执行:开启后出现Started Sonatype Nexus OSS 3.31.1-01后就说明启动成功了,我们只需要访问一下http://localhost:8081/就查看我们的私服了;如果想修改虚拟机的参数,到nexus->bin->nexus.vmoptions进行修改点击右上角

2026-04-22 16:40:12 318

原创 Maven项目管理快速精通(比ai还牛)

在pom.xml项目根级的配置文件中常见的pom.xml的标签:<dependencies>加<dependency> 声明项目需要的所有jar包<dependencyManagement> 在父工程统一管理依赖版本,子模块引用时可省略版本号<scope>在dependency中控制jar包的作用范围<build> 配置编译、打包资源过滤等行为<plugins> build内,配置构建过程中使用的插件<modules> 在父模块中配置其下层的子模块。

2026-04-22 15:51:27 390

空空如也

空空如也

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

TA关注的人

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