自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 微服务面试题

限流 采用令牌桶算法 即预先准备好一批令牌存入桶中 令牌生成效率固定 当桶满时 停止生成令牌 当流量通过时 需要获取一个令牌 才会被放行 当大量请求发送时 桶中令牌会被获取 被获取的同时 新的令牌也正在生成 每生成一批令牌就可以使一些流量被放行 其他没有获得令牌的 请求被丢弃或者阻塞。RM注册各分支事务 此时若分支执行成功 暂不提交 将事务状态提交给TC 当TC收到所有事务的成功状态时 通知所有RM提交事务 若出现一个失败分支 则通知所有RM回滚事务。

2025-04-11 14:36:01 475

原创 SSM面试题

Spring的三级缓存可以解决这个问题 spring三级缓存分别存放单例池 初始化完成bean(一级) 未完成初始化bean(二级) bean的工厂(三级)当A需要B注入时 若此时B还未创建成功 存在于二级缓存中 Spring就会从缓存中取出尚未完成的bean注入到A中 完成A的创建 另外 如果B仅支持单例 则无法成功 此时需要从三级缓存中拿到B对应的工厂 建立一个新bean并存储到二级缓存中 再次尝试从二级缓存中取出就可以成功创建A。带有bean标签或注解的类被封装到BeanDefinition中。

2025-04-06 13:48:16 539

原创 MySQL面试题

redo log用于数据的持久化 在数据库发生变化时 会将命令储存在内存区的undo log文件 然后将更新的内容持久化入磁盘 当数据库数据持久化到磁盘出错后 会读取磁盘中的undo log文件 通过执行文件内的命令来获得持久化出错的数据。主节点有数据变更时 将变更数据储存到binlog中 子节点的io处理器将binlog的数据读取到子节点的delay log中 再由子节点的持久化处理器将delay log的数据同步到数据库中。索引中不包含需要查找的所有内容 从索引中获取主键值再去聚簇索引中查找的行为。

2025-04-03 20:30:29 540

原创 Redis面试题

redission无法解决主从一致性 当获取锁后 redis主节点崩溃 子节点会自动升级为主节点 此时新的主节点还没更新数据 其他线程可以拿到相同的锁 导致了锁的多次获取 可以使用redission的红锁解决 即在多个节点同时获取锁 成功才视为获取到锁 但这样较为耗费资源和内存 可以使用zookeeper实现的锁。1.逻辑过期 给key的过期时间加入到key的值中 当过期时间到时不自动删除 交给下一次访问此key的请求来判断 如果过期 则返回过期数据并启动新线程 获取锁并对过期的key进行更新。

2025-04-02 10:32:44 314

原创 访问后端接口404

最后发现是将启动类写在了与其他类同一层级 导致SpringBoot自动扫包没有扫到。检查了很久 接口名称没有写错 配置也合理 运行其他项目也可以正常访问。2.在启动类添加注解@ComponentScan 标明要扫描的包类。1.将启动类放在其他类的上一级。

2025-02-28 09:08:57 1063

原创 Nacos无法启动

解决方案 将startup.cmd中的set MODE="cluster"改为set MODE="standalone"

2025-02-27 21:36:34 204

原创 蓝桥杯集训·每日一题2025 拐杖糖盛宴

在所有奶牛都轮过一次后,不论这根糖果是否被吃完,该糖果都会被约翰扔掉,并换上下一根糖果,继续下一轮次的吃糖(仍然从编号为 11 的奶牛开始)。另外,每轮过后,糖果都有可能令奶牛们的身高有所增长,具体为一头奶牛在本轮次吃掉了多少长度的糖果,其身高就会增高多少长度。然后,奶牛们按照编号顺序,依次走到糖果面前,将糖果自下而上的啃食至自己的高度(因为更高的地方吃不到了)。由于糖果上端是固定的,所以即使奶牛吃掉糖果的下端部分,糖果也会悬挂在最初设置的位置,不会下降至地面。直接暴力后稍加优化即可。

2025-02-25 22:38:05 228

原创 蓝桥杯集训·每日一题2025 农夫约翰最喜欢的操作

农夫约翰的无聊值是他必须执行的最小操作次数,以使得对于所有的 1≤i≤N,ai−x 均可被 M 整除。为了打发时间,农夫约翰发明了一种关于在整数数组上进行操作的有趣的休闲活动。在一次操作中,农夫约翰可以选择一个索引 i,并对 ai 加 1 或减 1。农夫约翰有一个包含 N 个非负整数的数组 a 和一个整数 M。对于所有可能的 x,输出农夫约翰的最小无聊值。后面运用破环成链以及前缀和来减少时间复杂度。然后,农夫约翰会请贝茜给出一个整数 x。又是农夫约翰的农场上寒冷而无聊的一天。将所有情况存入数组中。

2025-02-24 20:49:46 319

原创 解决Mysql报错Public Key Retrieval is not allowed

我们只需配置数据源时将allowPublicKeyRetrieval属性设置为true即可。在学习黑马点评时 启动多个springBoot服务后 自动创建了新的数据库连接。由于mysql 8.0默认使用 caching_sha2_password。机制 加密方式不同 所以会报错。

2025-02-23 12:11:40 219

原创 蓝桥杯集训·每日一题2025 奶牛体检

如果我们使用暴力分别遍历l,r的所有可能性 加上交换复杂度为n^3 所以不符合题意。我们可以想到从一个点向两边持续交换 来做到以一个点为中心点 扩大反转范围的效果。本题n的范围在1 -7500 n^2的时间复杂度可以通过这道题。反转后我们再判断与反转前的差别 来增减util 代码如下。同时 反转大小也可能为偶数 我们也可以以两个点为中心。

2025-02-21 14:24:04 625

原创 蓝桥杯集训·每日一题2025 哞叫时间II

超时代码 思路为在保存数组的时候将所有出现的数字存入map中 根据数字出现的次数指定倒数第二次出现的位置 并遍历之前所有数字 找到所有出现的数字 存入set中 最后输出set的大小。保存数组过程无法简短 但遍历倒数第二次出现的数字之前的内容 会导致重复遍历了相同的数字 浪费了时间 所以我们考虑使用map来精简 保存数组时先将所有出现的数字以及出现次数存入map。由于贝茜据称「在整个竞赛中一直哞哞叫」,请帮助埃尔茜计算竞赛中发生的不同哞叫的数量!两种哞叫是不同的,如果它们并非由相同的整数以相同的顺序组成。

2025-02-20 15:29:49 1024

原创 蓝桥杯集训·每日一题2025 蛋糕游戏

贝茜和埃尔茜发现了一行 NN 个蛋糕(NN 为偶数),大小依次为 a1,a2,…如果两头奶牛都采取最优策略以最大化她们吃到的蛋糕量,并且贝茜先进行回合,那么每头奶牛将会吃到多少蛋糕?a为了多吃蛋糕 只能选择将中间的蛋糕堆叠起来 最多可以吃到n/2 + 1个蛋糕。如果b每次都只吃到没有堆叠过的蛋糕 那b可以吃到n/2 - 1个蛋糕。a,b的最佳策略均能实现 所以最后的结果就是a吃到n/2 +1个蛋糕。但是b有可能吃到堆叠的蛋糕 所以b最少吃到n/2 - 1个蛋糕。两头奶牛都想吃到尽可能多的蛋糕。

2025-02-19 21:13:43 348

原创 蓝桥杯集训·每日一题2025 哞叫时间

农夫约翰正在试图向埃尔茜描述他最喜欢的 USACO 竞赛,但她很难理解为什么他这么喜欢它。他说「竞赛中我最喜欢的部分是贝茜说 『现在是哞哞时间』并在整个竞赛中一直哞哞叫」。埃尔茜仍然不理解,所以农夫约翰将竞赛以文本文件形式下载,并试图解释他的意思。竞赛被定义为一个长度为 NN 的小写字母字符串。一种哞叫一般地定义为子串 cicjcjcicjcj,其中某字符 cici 之后紧跟着 22 个某字符 cjcj,且 ci≠cjci≠cj。

2025-02-18 21:21:51 404

原创 LeetCode 盛水最多的容器

这种题第一眼看见最先想出来的解法就是暴力双重for循环 但是我们已经是刷了几天了 不能再暴力了 所以我们用双指针来遍历。如果我们移动小的时 我们的底部虽然在减短 但是我们有可能得到一条比短边更长的边 从而得到更大的体积。因为当我们移动大的时 我们的底部在减短 最短边长度不可能超i过原来的短边 不可能得到更大的结果。首先使用头尾指针 求得底部最长时的体积 然后判断两边长度 小的移动 大的不动。

2025-02-17 19:22:56 425

原创 蓝桥杯集训·每日一题2025 农夫的奶酪块

当切割次数小于n时 插入机会必然为0 当大于等于n时 默认插入机会为3 从三个面遍历奶酪块 只要一个面的1*1*n奶酪块不全为空 就将默认机会减去1 最终输出结果 代码如下。再次思考 其实我们可以将三维立体奶酪快抽象为三个二维平面 当奶酪块被切除时 我们可以将平面数值加1 遍历时判断平面数值是否为n就可以判断是否能插入奶酪块了 代码如下。思路为建立一个三维数组 然后使用bufferreader来读取数据 将切割掉的设置为1;可能是因为时间复杂度过于逆天 毕竟n^3也是很抽象的暴力解法。

2025-02-16 13:52:23 697

原创 LeetCode 移动零

刚开始看到这道题 第一思路是用Arrays的sort方法 然后重写Comparator 来排序 使等于0的数值返回-1 使之往后排列 不等于零则返回0 则不会改变顺序 但是java中基本类型int不可使用此方法 需要包装类 所以我们想办法将其转为Integer数组 尝试了很多方法 感觉很难不复制数组 所以放弃了。选择了简单的解法 头尾指针 头指针依次遍历 尾指针指向末尾元素 当遍历到0时就将头尾指针之间的数都前移一位 之后将尾指针向前移一位 代码如下。但是这样时间复杂度很高 进行了多次遍历以及交换。

2025-02-15 21:36:22 434

原创 LeetCode 最长连续序列

看了题解发现基本都是用set 来存储数组 因为set不可重复 会自动过滤掉重复的选项 减少了遍历耗费的时间 最快的解决方法是排序 也是没有想到 应该是map和set的底层操作会耗费较多时间 单纯使用循环遍历会比较快。存储前先判断比当前数值小1的value值是否存在 存在即往map中添加当前数值 value为比当前数值小1的value来加1 若不存在则往map中添加当前数值 value为1。然后还要判断当前数值是否是重复数值 若重复则不进行判断 代码如下。最终答案正确 但花费时长较长 思考如何优化。

2025-02-14 15:33:33 288

原创 LeetCode 字母异位词分组

看了题解 发现另一个方法 将map的key值记为每个字母出现的次数如apple 1a1e1l2p。看到这道题最开始的思路是将所有字符串转为byte数组然后排序 然后存入HashMap中。最后也发现一个老哥 一行解决 看不明白 基本没使用过stream流 等以后有机会学习一下。再通过一个一个取出map中的键值对 来判断集合是否存在来创建新集合或者将值加入集合中。思路也挺清奇的 但是和组数排序后相同是一个道理。

2025-02-13 23:05:32 141

原创 LeetCode 两数之和

但单纯这样时间复杂度还是太大了 于是决定先将数组添加到list中 用list的sort方法排序后再使用头尾指针遍历 最后根据遍历取得的值再去数组中找到数组下标 代码如下 时间复杂度为logn 但空间复杂度为n。最后还发现有一个佬的解法是这样的 用先后两个指针 一个前进一步一个前进两步 从而达到遍历所有两个数的效果 代码如下 感觉时间复杂度不应该这么低 是不是出现bug了。看了题解后发现可以使用hashmap map的直接获取可以省去用list排序的步骤 可以直接拿到数组下标。

2025-02-13 00:19:21 159

空空如也

空空如也

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

TA关注的人

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