自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 155. 最小栈(中等系列)

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。--> 返回 -3.minStack.getMin();--> 返回 -2.void push(int val) 将元素val推入堆栈。int getMin() 获取堆栈中的最小元素。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。MinStack() 初始化堆栈对象。第二种:数组自定义栈。

2023-08-28 02:09:54 325

原创 641. 设计循环双端队列(中等系列)

如果操作成功返回 true ,否则返回 false。如果操作成功返回 true ,否则返回 false。如果操作成功返回 true ,否则返回 false。如果操作成功返回 true ,否则返回 false。boolean isEmpty() :若双端队列为空,则返回 true ,否则返回 false。// 返回 true。boolean isFull() :若双端队列满了,则返回 true ,否则返回 false。int getFront() ):从双端队列头部获得一个元素。

2023-08-28 01:45:38 214

原创 225. 用队列实现栈(简单系列)

你只能使用队列的基本操作 —— 也就是 push to back、peek/pop from front、size 和 is empty 这些操作。你可以使用 list (列表)或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回栈顶元素。

2023-08-27 21:34:37 282

原创 232. 用栈实现队列(简单系列)

你 只能 使用标准的栈操作 —— 也就是只有 push to top, peek/pop from top, size, 和 is empty 操作是合法的。你所使用的语言也许不支持栈。你可以使用 list 或者 deque(双端队列)来模拟一个栈,只要是标准的栈操作即可。假设所有操作都是有效的 (例如,一个空的队列不会调用 pop 或者 peek 操作)void push(int x) 将元素 x 推到队列的末尾。int pop() 从队列的开头移除并返回元素。int peek() 返回队列开头的元素。

2023-08-27 21:26:52 187

原创 622. 设计循环队列(中等系列)

在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。// 设置长度为 3。enQueue(value): 向循环队列插入一个元素。// 返回 true。// 返回 true。// 返回 true。// 返回 true。// 返回 true。MyCircularQueue(k): 构造器,设置队列长度为 k。deQueue(): 从循环队列中删除一个元素。// 返回 true。isEmpty(): 检查循环队列是否为空。

2023-08-27 21:18:59 119

原创 86. 分隔链表(中等系列)

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。输入:head = [1,4,3,2,5,2], x = 3。你应当 保留 两个分区中每个节点的初始相对位置。输入:head = [2,1], x = 2。链表中节点的数目在范围 [0, 200] 内。输出:[1,2,2,4,3,5]

2023-08-27 21:07:46 128

原创 206. 反转链表 (简单系列)

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。输入:head = [1,2,3,4,5]链表中节点的数目范围是 [0, 5000]输入:head = [1,2]输出:[5,4,3,2,1]输入:head = []

2023-08-27 21:00:49 167

原创 2. 两数相加(中等系列)

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]你可以假设除了数字 0 之外,这两个数都不会以 0 开头。输入:l1 = [2,4,3], l2 = [5,6,4]每个链表中的节点数在范围 [1, 100] 内。输入:l1 = [0], l2 = [0]输出:[8,9,9,9,0,0,0,1]题目数据保证列表表示的数字不含前导零。输出:[7,0,8]

2023-08-27 20:54:00 67

原创 35. 搜索插入位置(简单系列)

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。请必须使用时间复杂度为 O(log n) 的算法。nums 为 无重复元素 的 升序 排列数组。

2023-08-26 18:36:18 129

原创 27. 移除元素(简单系列)

解释:函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。输入:nums = [0,1,2,2,3,0,4,2], val = 2。元素的顺序可以改变。输入:nums = [3,2,2,3], val = 3。输出:5, nums = [0,1,4,0,3]

2023-08-26 14:24:14 121

原创 26. 删除有序数组中的重复项(简单系列)

给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。更改数组 nums ,使 nums 的前 k 个元素包含唯一元素,并按照它们最初在 nums 中出现的顺序排列。解释:函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0, 1, 2, 3, 4。输入:nums = [0,0,1,1,1,2,2,3,3,4]输出:5, nums = [0,1,2,3,4]输出:2, nums = [1,2,_]

2023-08-25 02:27:42 141

原创 21. 合并两个有序链表(简单系列)

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。输入:l1 = [1,2,4], l2 = [1,3,4]输入:l1 = [], l2 = [0]两个链表的节点数目范围是 [0, 50]输入:l1 = [], l2 = []l1 和 l2 均按 非递减顺序 排列。输出:[1,1,2,3,4,4]

2023-08-24 15:09:43 86

原创 20. 有效的括号(简单系列)

给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。每个右括号都有一个对应的相同类型的左括号。s 仅由括号 ‘()[]{}’ 组成。左括号必须用相同类型的右括号闭合。输入:s = “()[]{}”左括号必须以正确的顺序闭合。输入:s = “()”输入:s = “(]”

2023-08-24 12:00:08 90

原创 14. 最长公共前缀(简单系列)

5.然后,使用while循环比较ans和当前遍历到的字符串中对应位置的字符,直到其中一个字符串的长度超过了另一个字符串的长度,或者遇到不相同的字符为止。7.循环结束后,使用substring方法将ans截取到位置j,并将结果赋给ans,即更新了最长公共前缀。输入:strs = [“flower”,“flow”,“flight”]1.首先,代码判断输入的字符串数组是否为空,如果是,则直接返回空字符串。输入:strs = [“dog”,“racecar”,“car”]如果不存在公共前缀,返回空字符串 “”。

2023-08-23 23:29:02 82

原创 13. 罗马数字转整数(简单系列)

通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。12 写做 XII ,即为 X + II。如果存在,则将对应的整数加到结果resut中,并向后移动两个位置(i+=2)。5.如果不存在,则直接将当前位置的字符对应的整数加到结果resut中,并向后移动一个位置(i+=1)。s 仅含字符 (‘I’, ‘V’, ‘X’, ‘L’, ‘C’, ‘D’, ‘M’)罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。

2023-08-23 22:44:37 86

原创 1.两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?输入:nums = [3,3], target = 6。

2023-08-23 10:17:09 195

原创 9. 回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。解释:从左向右读, 为 -121。从右向左读, 为 121-。因此它不是一个回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。解释:从右向左读, 为 01。因此它不是一个回文数。例如,121 是回文,而 123 不是。输入:x = -121。输入:x = 121。

2023-08-23 01:17:16 95

原创 org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout

用这种方式启动,只有一台注册到namesrv,并且也成功测试,但是不知道怎么指定之前的一些主从配置文件启动,观察指定的配置文件都没有指定brokerIP1,在四个文件中加上,brokerIP1=你的网络地址。broker-b.properties和broker-a-s.properties指定另外一台网络地址。Springboot整合MQ时报错 sendDefaultImpl call timeout。各种百度发现在conf/broker.conf下加上。然后启动broker命令。

2023-08-22 03:07:06 167

原创 RocketMQ 集群 broker 启动不了

增加以后,在对应的properties随之修改例如。开始没有从节点进程,弄了很久原来是启动命令出错。另外还有一种可能主从存储地址不要设置相同。改成我本地地址启动命令。

2023-08-21 18:57:37 265

原创 AOP操作日志记录(将增、删、改相关接口的操作日志记录到数据库表中)

可以把这部分记录操作日志的通用的、重复性的逻辑代码抽取出来定义在一个通知方法当中,我们通过AOP面向切面编程的方式,在不改动原始功能的基础上来对原始的功能进行增强。所记录的日志信息包括当前接口的操作人是谁操作的,什么时间点操作的,以及访问的是哪个类当中的哪个方法,在访问这个方法的时候传入进来的参数是什么,访问这个方法最终拿到的返回值是什么,以及整个接口方法的运行时长是多长时间。所记录的操作日志当中包括:操作人、操作时间,访问的是哪个类、哪个方法、方法运行时参数、方法的返回值、方法的运行时长。

2023-07-23 15:56:22 797

原创 Spring中AOP的通知类型和执行顺序

@Around:环绕通知,此注解标注的通知方法在目标方法前、后都被执行@Before:前置通知,此注解标注的通知方法在目标方法前被执行@After :后置通知,此注解标注的通知方法在目标方法后被执行,无论是否有异常都会执行@AfterReturning : 返回后通知,此注解标注的通知方法在目标方法后被执行,有异常不会执行@AfterThrowing : 异常后通知,此注解标注的通知方法发生异常后执行

2023-07-23 14:51:51 1010

原创 Spring IoC 自定义简单实现案例

4.ClassPathXmlApplicationContext 类。2.ApplicationContext 接口。6.Application 类。

2023-07-16 15:55:01 184

原创 Spring IoC及DI依赖注入

Spring 可从狭义与广义两个角度看待狭义的 Spring 是指 Spring 框架(Spring Fremework)广义的 Spring 是指 Spring 生态体系Spring 框架是企业开发复杂性的一站式解决方案Spring 框架的核心是 IoC 容器和 AOP 面向切面编程Spring Ioc 负责创建与管理系统对象,并在此基础上扩展功能4.1 IoC 控制反转:(1)IoC 控制反转,全称是 Inverse of Control,是一种设计理念(2)由代理人来创建与管理对象,消费者通过代理人来

2023-07-16 15:51:16 636

原创 and yum doesn‘t have enough cached data to continue. At this point the only

当 Yum 安装新软件时,它会下载软件包的元数据并将其存储在本地缓存中。这些元数据包含软件包的名称、版本和依赖项等信息。使用 yum makecache 命令,可以强制刷新本地缓存中的元数据信息,以确保您获取到最新的软件包信息,并为之后的软件包安装做好准备。yum clean all 是一个在 Linux 系统中的 yum 命令,它的作用是清除系统中所有缓存的 RPM 包。通过执行 yum clean all 命令可以释放一些磁盘空间,并且可以确保您在运行 yum 命令时获取最新的软件包列表和信息。

2023-06-03 18:08:39 1008

原创 Cannot resolve plugin com.spotify:docker-maven-plugin:1.2.2 not found

遇到这个错误是按照ruoyi-clou-plus把插件复制过来的,开始没有版本号,一直爆红,自己随便试了几个版本号,还是提示Cannot resolve plugin com.spotify:docker-maven-plugin not found。

2023-05-19 18:57:14 1263

原创 警告:mysql-community-server-5.7.28-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY 错误:

libaio.so.1(LIBAIO_0.1)(64bit) 被 mysql-community-server-5.7.28-1.el7.x86_64 需要。libaio.so.1(LIBAIO_0.4)(64bit) 被 mysql-community-server-5.7.28-1.el7.x86_64 需要。libaio.so.1()(64bit) 被 mysql-community-server-5.7.28-1.el7.x86_64 需要。安装成功后再次执行之前未成功执行的命令。

2023-05-11 20:26:17 1055

原创 RuoYi-Cloud-Plus 数据权限

如果getDeptAndChild()方法返回值是1,2则SysUserMapper.xml的sql语句解析为。@DataColumn(key = “userName”, value = “u.user_id”)注解。@sdss.getDeptAndChild对应getDeptAndChild()方法返回值。#user.deptId对应getSqlSegment()当前用户的部门id。需要拼入SysUserMapper中的数据权限。

2023-05-10 17:45:43 1994 1

原创 RuoYi-Cloud-Plus 关于MyBatisPlus分页

查询具体值返回给前端src/main/java/com/ruoyi/common/mybatis/core/page/TableDataInfo.java#build()

2023-05-10 09:21:16 341

原创 RuoYi-Cloud-Plus 关于MyBatisPlus自动填充

FieldFill.INSERT对应insertFill()方法,FieldFill.INSERT_UPDATE对应updateFill()方法。重写insertFill()和updateFill()

2023-05-09 19:54:27 698

原创 RuoYi-Cloud-Plus 关于webFlux在Gateway生成验证码

生成验证码过程src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java#createCaptcha()验证码校验方法src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java#checkCaptcha()登录创建验证码 ruoyi-ui/src/views/login.vue。

2023-05-09 19:50:55 422

原创 RuoYi-Cloud-Plus SaToken鉴权

管理员拥有所有权限src/main/java/com/ruoyi/system/service/impl/SysPermissionServiceImpl.java#getMenuPermission()配置白名单src/main/java/com/ruoyi/gateway/config/properties/IgnoreWhiteProperties.java。内网鉴权src/main/java/com/ruoyi/gateway/filter/ForwardAuthFilter.java。

2023-05-09 18:37:19 1173

原创 RuoYi-Cloud-Plus 登录过程源码

登录校验src/main/java/com/ruoyi/auth/service/SysLoginService.java#checkLogin()远程调用src/main/java/com/ruoyi/system/api/RemoteUserService.java。登录类型src/main/java/com/ruoyi/common/core/enums/LoginType.java。点击登录按钮进入handleLogin方法。actions中的Login方法。

2023-05-08 21:25:39 901

原创 Failed to deploy ‘ruoyi/ruoyi-nacos:1.6.0 Dockerfile: ruoyi-visual/ruoyi-nacos/Dockerfile‘:Not conne

直接点击左侧Disconnect然后再点击Connect(可能每个人遇到解决方案不一定相同,我这是瞎尝试解决😂)

2023-05-05 14:31:44 666 1

原创 字符串反转

【代码】字符串反转。

2023-04-28 12:45:41 54

原创 Redis 持久化

1.RDB方式bgsave的基本流程?fork主进程得到一个子进程,共享内存空间子进程读取内存数据并写入新的RDB文件用新的RDB文件替换旧的RDB文件2.RDB会在什么时候执行?save 60 1000代表什么含义?默认是服务停止时代表60秒内至少执行1000次修改则触发RDB3.RDB的缺点?RDB执行间隔时间长,两次RDB之间写入数据有丢失的风险fork子进程、压缩、写出RDB文件都比较耗时。

2023-04-27 21:12:40 472

原创 剑指 Offer 12. 矩阵中的路径

输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。链接:https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof。输入:board = [[“a”,“b”],[“c”,“d”]], word = “abcd”

2023-04-27 20:58:05 634

原创 剑指 Offer 11. 旋转数组的最小数字

例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为 1。注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …链接:https://leetcode.cn/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof。输入:numbers = [3,4,5,1,2]输入:numbers = [2,2,2,0,1]

2023-04-26 21:16:59 60

原创 Redis消息队列实现异步秒杀

顾名思义,消费者可以订阅一个或多个channel,生产者向对应的channel发送消息后,所有订阅者都能收到相关的消息。不过要注意的是,当队列中没有消息时RPOP和LPOP操作会返回null,并不像JVM的阻塞队列那样会阻塞并等待消息。其他:根据指定id从pengding-list中获取已消费但未确认的消息,例如0,是从pengding-list中的第一个消息开始。消息队列,字面意思就是存放消息的队列。ID:起始ID标示,$代表队列中最后一个消息,0则代表队列中第一个消息。

2023-04-10 14:19:15 583

原创 Redis用于全局ID生成器、分布式锁的解决方案

超卖这样的线程安全问题,解决方案有哪些1.悲观锁:添加同步锁,让线程串行执行优点:简单粗暴缺点:性能一般2.乐观锁:不加锁,在更新时判断是否有其他线程在修改优点:性能好存在成功率低的问题分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁1.基于Redis的分布式锁实现思路:利用set nx ex获取锁,并设置过期时间,保存线程标示释放锁时先判断线程标示是否与自己一致,一致则删除锁2.特性:利用set nx满足互斥性利用set ex保证故障时锁依然能释放,避免死锁,提高安全性。

2023-04-10 13:53:33 1282

原创 Redis的SDS、intSet、Dict、ZipList、QuickList、RedisObject及五种数据结构详解

Dict结构:类似java的hashTable,底层数组加链表解决哈希冲突Dict包含两个hash表,ht[0]平常用,ht[1]用来rehashDict的伸缩:当LoadFactor大于5或者LoadFacto大于1并且没有子进程任务时,Dict扩容当LoadFactor小于0.1时,Dict收缩扩容大小为第一个大于等于used+1的2ⁿ收缩大小为第一个大于等于used的2ⁿDict采用渐进式rehash,每次访问时执行一次rehash。

2023-04-07 15:53:42 801

空空如也

空空如也

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

TA关注的人

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