自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode-14-[513]找树左下角的值[112]路径总和[113] 路径总和ii [106]从中序与后序遍历序列构造二叉树[105]从前序与中序遍历序列构造二叉树

因此:需暂存tmp(List),再赋值给res,否则只存入了根节点,其他元素都remove了。三、[106]从中序与后序遍历序列构造二叉树[105]从前序与中序遍历序列构造二叉树。如果你知道中序的左部分的size,就可以靠size去切割后序。中序点左点size和后续的左的size一定是一样的。二、[112]路径总和[113] 路径总和ii。重点:List为引用传递,指向同一个内存地址。一、[513]找树左下角的值。因为中序和后续都是先左后右。

2024-06-21 12:27:09 25

原创 leetcode-13-[110]平衡二叉树[257]二叉树的所有路径[404]左叶子之和[222]完全二叉树的节点个数

如:根节点的左子树,只有一个节点,符合条件,此时直接返回。重点:注意不能直接返回 root.left.val,即。应该暂存tmp=root.left.val,注意:注释的1、2两处得有返回值-1。而右子树还没有进行递归,解答错误。四、[222]完全二叉树的节点个数。在左右子树均进入递归后,再返回。另:后序遍历 逻辑更加容易理解。二、[257]二叉树的所有路径。一、[110]平衡二叉树。三、[404]左叶子之和。

2024-06-20 17:47:29 85

原创 leetcode-12-[226]翻转二叉树[101]对称二叉树[104]二叉树的最大深度[111]二叉树的最小深度

2、tmp为局部变量,不存值,直观来说,即层层递归之后的返回tmp,仍为一开始传入的tmp,中间过程忽略不计。1、题目中:最小深度是从根节点到最近叶子节点的最短路径上的节点数量。高度:任意节点到叶子节点(左右孩子都为空)的节点数。说明: 叶子节点是指没有子节点的节点。深度:任意节点到根节点的节点数。三、[104]二叉树的最大深度。四、[111]二叉树的最小深度。重点:交换节点应该传入根节点。一、[226]翻转二叉树。二、[101]对称二叉树。

2024-06-19 15:17:56 193

原创 leetcode-11-二叉树前中后序遍历以及层次遍历

10题解法类似,均可采用层次遍历的思想。前序遍历 (先根遍历) 中左右。[102]二叉树的层次遍历。

2024-06-18 17:08:08 187

原创 leetcode-10-[150]逆波兰表达式求值 [239]滑动窗口最大值[347]前k个高频元素

对于堆(使用PriorityQueue实现):从队头到队尾按从小到大排就是最小堆(小顶堆),2、需要保证队列元素在[i+1-k,i]区间,即当队头元素不在这个区间内,及时移出。从队头到队尾按从大到小排就是最大堆(大顶堆)--->队头元素相当于堆的根节点。3、加入的元素值必须小于队尾元素的值(始终保证队头元素最大),否则移出。“-”、“/”,第二个弹出的元素 “-” 第一个弹出的元素。第一个参数:1 第二个参数:3 负数 1、3。第一个参数:4 第二个参数:3 正数 3、4。

2024-06-17 13:55:54 339

原创 leetcode-09-[232]用栈实现队列[225]用队列实现栈[20]有效的括号[1047]删除字符串中的所有相邻重复项

基于Linkedlist是链表等,除了删除操作,ArrayDeque的其他效率都比Linkedlist好。队列建议用ArrayDeque和Linkedlist来实现。建议用 ArrayDeque和Linkedlist来实现。四、[1047]删除字符串中的所有相邻重复项。重点:queue2 为辅助队列,只做中转用。栈不建议用stack来实现。一、[232]用栈实现队列。二、[225]用队列实现栈。重点:在构造器内初始化。三、[20]有效的括号。

2024-06-15 14:04:03 275

原创 leetcode-08-[151]翻转字符串里的单词[卡码网55]右旋转字符串

一、[151]翻转字符串里的单词。二、[卡码网55]右旋转字符串。

2024-06-14 11:40:56 317

原创 leetcode-07-[344]反转字符串[541]反转字符串II[卡码网54]替换数字

将数组转换成String类型输出的。1、字符数组转String 一般 new String(ch);或者用StringBuffer 、StringBuilder。二、[541]反转字符串II。三、[卡码网54]替换数字。重点:String 不可变。一、[344]反转字符串。

2024-06-13 13:11:36 356

原创 leetcode-06-[454]四数相加II[383]赎金信 [15] 三数之和 [18] 四数之和

nums[k] + nums[i] + nums[left] + nums[right] > target int会溢出。应该注意b 、a 可以相同,故 j > i+1(每次开始时 j = i+1)只需要排序后的数组,在a>0时,再进行比较a>target即可,满足则剪枝。但-5+(-4)+1+2=--6 存在四元组。如[-5,-4,0,1,2] -6。三数之和、四数之和 适合用双指针。一、[454]四数相加II。四、[18] 四数之和。三、[15] 三数之和。1、剪枝时,需要考虑。

2024-06-12 14:05:20 591

原创 leetcode-05-[242]有效的字母异位词[349]两个数组的交集[202]快乐数[1]两数之和

List 数组 固定大小 如26个字母,10个数字 空间换时间。Map hashmap 形式。无限循环:即出现不止一次,考虑用哈希表。Set hashset 去重。一、[242]有效的字母异位词。二、[349]两个数组的交集。三、[202]快乐数。

2024-06-11 15:48:16 277

原创 leetcode-04-[24]两两交换链表中的节点[19]删除链表的倒数第N个节点[160]相交链表[142]环形链表II

快指针先行n步,这样快慢指针之间形成了一段长度为n的窗口,之后快慢指针同步向前相当于保持窗口长度不变。这样当快指针到达了末尾指向NULL,另一端的慢指针距离末尾的长度是n,自然就是指向倒数第n个位置了。由于单链表中的next指针指向的是下一个节点,想要删除倒数第n个节点,自然要将操作指针慢指针指向倒数第n+1个节点,这样才能进行删除操作。如果单链表中要删除的节点是头节点,这个头节点正好是dummyHead的下一个节点,如此即可统一起来删除操作而不必单独考虑。二、[19]删除链表的倒数第N个节点。

2024-06-08 14:35:49 679

原创 leetcode-03-[203]移除链表元素[707]设计链表[206]反转链表

重点:定义size!,并在添加时,删除时改变size大小。小重点:设计链表,比较新颖的题型。重点:理解逻辑,找对方法!一、[203]移除链表元素。二、[707]设计链表。三、[206]反转链表。本节重点:虚拟头节点。

2024-06-07 14:02:56 204

原创 leetcode-02-[977]有序数组的平方[209]长度最小的子数组[59]螺旋矩阵II

1、滑动窗口,for循环的 j 为终止位置。2、注意最后的处理,滑动窗口大小为0。新引入一个数组,不要原数组操作。二、[209]长度最小的子数组。一、[977]有序数组的平方。2、i 对应 X,j对应 Y。三、[59]螺旋矩阵II。

2024-06-06 14:43:23 164

原创 leetcode-01-[704]二分查找[27]移除元素

一、[704]二分查找。没有改变元素的相对顺序。二、[27]移除元素。改变了元素的相对顺序。二、快慢指针(推荐)

2024-06-05 13:05:49 173

原创 若依前后端分离项目(一)环境搭建

至此,后端项目配置完成,可启动成功!至此,前后端配置完成,启动前端。其中ruoyi-ui为前端项目。修改配置文件的用户名密码。修改配置文件的用户名密码。

2024-06-03 17:24:41 305

原创 4、exception与error

ArrayIndexOutOfBoundsException 数组下标越界异常。FileNotFoundException 操作一个不存在的文件异常。ClassNotFoundException 加载不存在的类异常。NumberFormatException 数字格式不正确异常。SQLException 操作数据库,查询表时可能发生异常。ArithmeticException 数学运算异常。IOException 操作文件异常。分为编译时异常与运行时异常。1、常见的运行时异常。2、常见的编译时异常。

2024-05-30 15:22:05 222

原创 HashMap详解

3、扩容1.7时头插法会出现环形链表,死循环;每个节点,到其叶子节点的所有路径,包含相同数目的黑色节点。用原先位置key的hash值&旧数组的长度。2、put导致扩容,再get导致为null。不需要重新计算元素的hash进行元素迁移,1、元素e,hash值,数组下标(索引)如果结果不为0,桶位置就是当前元素原来的。相比于二叉查找树,可以避免单一链表,数组长度小于64,链表长度大于8。数组长度大于64,链表长度大于8。0101为5,10101为21。2、hash值&(n-1)如果结果为0,桶位置不变。

2024-05-27 17:21:10 335

原创 全文索引-FullText

通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。2、MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引。3、只有字段的数据类型为 char、varchar、text 及其系列才可以建全文索引。2、MySQL在大量数据的情况下,全文索引的匹配效率更高,但可能存在精度问题。1、MySQL 5.6 以前的版本,只有 MyISAM 存储引擎支持全文索引。文档1的ID→单词1的信息;文档2的ID→单词3的信息;单词1→文档1的ID;单词2→文档1的ID;

2024-05-23 23:17:56 330

原创 Redis持久化之RDB与AOF

在指定的时间间隔内,将内存的中的数据集快照保存到dump.rdb,一旦发生宕机,则读取RDB文件恢复数据。以日志的形式记录每个写操作,记录所有的写指令到aof文件中,只可添加,不可修改,用于数据恢复。RDB一般用于对数据完整性、一致性要求不高的,即容易数据丢失。AOF重写机制:内容压缩,保留恢复数据的最小指令集。AOF文件大于RDB文件,恢复速度慢于RDB;

2024-05-21 23:30:42 287

原创 yml文件无法生效,读取不了端口号等配置

或者一开始就是叶子的标识也可,插件下载与否没有多大影响,只是作为判断是否生效为Spring项目。2、检查target目录下是否存在配置文件,确保加载进去了。4、检查启动的项目是目标项目,即如图三个名称一致。此时,配置文件需为如图所示的标识。3、检查配置文件的缩进。

2024-05-21 15:18:55 224

原创 2、MySQL总结

B+🆚B树:B树非叶子节点也存放数据,B+树只存放索引,所以B+树单个节点的数据量更小,相同的IO次数,查询到更多的节点;针对快照读:因为RR下只生成一个read view,事务执行过程中看到的数据,一直跟这个事务启动时看到的数据是一致的,即使中途有其他事务插入数据,是查询不出这条数据的。• 当前读:每次读取的都是当前最新的数据,但是读的时候不允许写,写的时候也不允许读。B+🆚二叉树:相同的数据二叉树需要更多的IO次数,二叉树只有两个分支,存储相同的数据,树更高,IO次数更多;

2024-05-13 21:54:23 867

原创 JMeter的下载安装与使用(Mac)

2、下载Binaries 下的apache-jmeter5.5.tgz。option选项卡,chooselanguage--Chinese。在bin目录下打开终端,输入sh jmeter。配置结果树:新建一个csv文件,在文件名位置引入。出现jmeter首页界面,即为成功。

2024-04-25 20:01:09 743

原创 RedisTemplate 与StringRedisTemplate区别

RedisTemplate显示的是字节数组,即存入数据时,先序列化为字节数组,再存入Redis数据库。采用的是JDK的序列化策略。StringRedisTemplate显示的是原文,即存入什么就显示什么;采用的是String的序列化策略。StringRedisTemplate要求存入类型为String,否则会报类型转化异常。在存入复杂对象时,如果不想额外处理数据,最好使用RedisTemplate。RedisTemplate处理数据范围更广一些。1、可视化工具看到的数据不同。

2024-04-23 17:04:01 257

原创 登录的几种方式

2、客户端收到这个 Cookie 后自动保存,并在下次访问时带上这个 Cookie,届时服务器就能通过这个 Cookie 中的 SESSIONID 找到对应的 Session 从而识别用户。3、问题:对于分布式系统而言,服务器之间是隔离的,Session 是不共享的,存在 Session 共享问题。验证成功后 ,创建一个 Token 存储在 Redis 中,并将这个 Token 返回给客户端。3、客户端收到这个 Token 后将其保存,并在下次访问时带上这个 Token。2、服务器通过查询数据库进行验证。

2024-04-22 19:29:39 473

原创 分布式与集群区别

分布式:不同的业务模块部署在不同的机器上或者同一个业务分拆了多个子业务,部署在不同的服务器上,解决高并发的问题。分布式:各节点存在依赖关系,可能存在一个挂了,其他都不能工作的情况。分布式:不同的机器上部署的是不同的服务模块,对外提供不同的服务。集群:不同机器上部署的是同样的模块,对外提供同样的服务。集群:同一个业务部署在多台机器上,提高系统的可用性。分布式:分解任务,用来应对高并发。集群:彼此互不干扰,执行同样的任务。集群:用来容错,可靠性,高可用。1、提供服务是否相同。3、是否依赖其他模块。

2024-04-21 18:38:58 345

原创 空间分配担保

如果大于,将尝试进行一次Minor GC,尽管这次Minor GC是有风险的;3、冒险:新生代使用复制收集算法,但为了内存利用率,只使用其中一个Survivor空间来作为轮换备份,因此当出现大量对象在Minor GC后仍然存活的情况—极端情况下,垃圾回收对象都存活。在survivor空间不足以存放所有另一survivor区和eden区的存活对象时,将放不下的那些放到老年代。2、继续检查老年代最大可用的连续空间是否大于历次晋升到老年代对象的平均大小。此时,需要老年代进行分配担保。

2024-04-20 15:47:25 227

原创 Redis7(二)数据类型及其用法

将给定 key 的值设为 value ,并返回 key 的旧值(old value)7、linsert key before/after 已有值 插入的新值。二、List 一个key多个value 有序重复。setnx:只有在 key 不存在时设置 key 的值。LREM list3 0 值,表示删除全部给定的值。三、Set 一个key多个value 无序不重复。四、Hash 二、String 2、获取区间值/设置区间值。3、正序逆序获取下标索引值。

2024-04-08 21:21:53 375

原创 AOP源码解析

SpringBoot中,引入AOP依赖包后,一般来说并不需要去做其他配置,使用过Spring注解配置方式的人会问是否需要在程序主类中增加@EnableAspectJAutoProxy来启用,实际并不需要。因为在AOP的默认配置属性中,spring.aop.auto属性默认是开启的,也就是说只要引入了AOP依赖后,默认已经增加了@EnableAspectJAutoProxy。(2)以JDK动态代理为例,调用invoke方法,此方法维护一个计数器,记录调用链的当前位置。注册到IoC 容器当中。

2024-04-04 16:15:05 277

原创 JVM堆栈详解

虽然JVM规范把方法区描述为堆的一个逻辑部分, 但它却有个别名non-heap(非堆)。1、每个类的信息(包括类的名称、方法信息、字段信息)类:基本信息、静态变量、常量存储在方法区中。为JVM使用到的native方法服务的。3、常量以及编译器编译后的代码等。存储方法内的参数值,局部变量。元空间(永久代)方法区的实现。

2024-03-31 17:21:25 655

原创 1、Java基础知识

子类继承父类之后,需要重写父类中所有的抽象方法,不然编译报错;抽象类中可以有成员变量,构造,成员方法,有构造方法,是供子类创建对象时,初始化父类属性使用的。私有成员:外界不可以直接调用,对外提供get、set方法、构造方法赋值。静态成员:生命周期和类一样,属于类成员,不属于某个对象,类名直接调用。(1)、封装:隐藏内部细节,对外提供接口。第2阶段:Java面向对象编程。第1阶段:Java基本语法。第3阶段:Java高级应用。(3)、多态:继承、重写。extends关键字。JDK8-17新特性。

2024-03-29 17:21:50 184

原创 设计模式(一)简介

怎么建房子、建什么样的房子、建的房子有什么用。命令模式(请求发送者与接收者间解耦)创建型模式、结构型模式、行为型模式。迭代器模式(遍历聚合对象中的元素)适配器模式(不兼容结构的协调)抽象工厂方法(产品族的创建)策略模式(算法的封装与切换)工厂方法(多态工厂的实现)单例模式(确保对象唯一性)代理模式(对象的间接访问)组合模式(树形结构的处理)观察者模式(对象间的联动)外观模式(提供统一入口)

2024-03-28 16:02:16 548

原创 设计模式(二)动态代理

目标对象需要实现接口,代理对象不需要实现接口(看Java源码及反编译知,动态在内存中生成的真实代理类实现了目标接口)基于接口(Java只能单继承,想要目标类与代理类产生联系,只能实现统一接口)通过代理对象访问目标对象,增强目标对象的方法。动态在内存中生成目标类的子类来实现代理。CGLIB动态代理(子类)JDK动态代理(接口)2、CGLIB动态代理。

2024-03-23 17:49:30 290

原创 spring security 常见错误记录

myUserDetails改为把角色名作为authority,在getAuthorities方法中给出去。controller中使用@PreAuthorize("hasRole('admin')")即可。必须以 ROLE_ 开头,如ROLE_admin。逻辑主要为检查token,是否携带及是否正确。关键代码遗漏问题:权限没有设置进去上下文。3、鉴权-hasRole。用户名及密码是否正确。

2024-03-22 23:08:38 158

原创 SpringBoot3整合Mybatis-Plus

mybatis,mybatis-plus场景启动器,都需要引入,否则出现各种奇怪的错误。

2024-03-20 19:55:47 153

原创 Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required

springboot 3版本整合 mybatis 3.0.5版本控制台报错 Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required,NestedIOException 这个类在 Spring 6 版本中直接删除了。3.5.3 支持了 Spring Boot 3。最好解决办法就是升级版本。

2024-03-20 19:48:53 223

原创 VUE-组件间通信(二)$emit

【代码】VUE-组件间通信(二)$emit。

2024-03-19 12:21:58 415

原创 VUE-组件间通信(一)props

父组件传递数据,子组件接收数据,子组件不可修改数据,只能展示。当父组件的属性变化时,将传导给子组件,但是反过来不会。props是父组件给子组件传输数据。子组件(类似于方法)

2024-03-16 16:43:59 471

原创 安装Vue.js devtools时出现“无法从该网站添加应用、扩展程序、和用户脚本”

清除浏览器缓存即可。

2024-03-16 15:29:41 517

原创 Spring Boot 自动配置原理

4、配置类通过@EnableConfigurationProperties将配置类与属性类绑定。相比较于Spring 繁杂的xml配置,Spring Boot 的自动配置极大的简化了开发。2、SPI思想,自动扫描和加载META-INF下面的配置类。通过@ConfigurationProperties与。6、在项目启动类上开启功能开关 @EnableXXXX。application.properties进行绑定。1、引入场景启动器starter。通过@Bean配置组件。

2024-03-13 11:36:56 704

原创 GC-垃圾回收

minor GC 分配对象时,当伊甸园区空间不足,就会触发一次minor GC ,将伊甸园区的对象放入survivor区,此时对象初始年纪为1;之后每经过一次minor GC ,+1岁,一般当到达15岁,就会晋升到老年代。与GC ROOT之间有引用链(从GC ROOT向下搜索走过的路径成为引用链)标记复制 A|B两个区域、将A中的存活对象全部复制到B区,再统一回收A区。full GC 1⃣️历次进入老年代的对象的平均大小大于老年代的剩余空间。GC ROOT :静态变量、常量池、指针。一、what(概念)

2024-03-13 11:19:15 561

免费的vue.js devtools chrome VUE 调试工具

免费 亲测有效

2024-03-16

Java工具 redis图形化工具+xshell+xftp

Java工具 redis图形化工具+xshell+xftp 下载安装可用

2023-06-19

104规约模拟工具-PMA与ProIEC104ClientVer1.5免安装版

104规约模拟工具 1.PMA 可模拟主站,从站 2.ProIEC104ClientVer1.5免安装版 可模拟主站,从站可以解析报文

2023-06-15

空空如也

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

TA关注的人

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