- 博客(33)
- 收藏
- 关注
原创 关于ThreadLocal为何不能在webflux中使用的问题
本质是“线程级别的 Map”,它的可用性完全取决于“一个请求是否全程在一个线程中执行”。WebFlux 打破了这一假设。这不是流式响应的问题,而是响应式编程模型本身导致的。你的项目用了 WebFlux(从日志能看到 Netty),所以必须用。一个请求从“接收入参”到“执行业务逻辑”再到“发送响应”,可能经历 3~5 个线程。只能在“存入数据的那个线程”中读取,切到其他线程后失效。失效是因为流式响应(分块传输)”,这是。你的项目是 WebFlux,WebFlux 基于。
2026-07-01 16:17:02
319
原创 day12-最小覆盖字串-困难
给定两个字符串 s 和 t,长度分别是 m 和 n,返回 s 中的 最短窗口 子串,使得该子串包含 t 中的每一个字符(包括重复字符)。如果没有这样的子串,返回空字符串 “”。解释:最小覆盖子串 “BANC” 包含来自字符串 t 的 ‘A’、‘B’ 和 ‘C’。输入:s = “ADOBECODEBANC”, t = “ABC”解释: t 中两个字符 ‘a’ 均应包含在 s 的子串中,输入: s = “a”, t = “aa”输入:s = “a”, t = “a”解释:整个字符串 s 是最小覆盖子串。
2026-04-18 16:07:54
212
原创 day11-滑动窗口最大值-困难
思路:用数组模拟双端队列,deque数组用来存放窗口中数字的下标,如果直接放值,我们不知道什么时候需要弹出不需要的值,每新加入一个数字,就比较这个数字nums[i]和之前加入的数字的大小,如果nums[i]比之前的小,就说明前面的数字因为窗口右移而移除后,nums[i]可能会成为新的最大的数字,所以加入数组(双端队列),如果nums[i]比之前的数字大,那么前面的数字就不可能成为这个窗口中最大的数字了,所以tail–移除前面的比nums[i]小的数字,当。输出:[3,3,5,5,6,7]
2026-04-18 16:07:06
245
原创 day10-和为 K 的子数组-中等
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数。思路:暴力枚举,遍历所有子数组的和,如果有等于k的,统计个数就+1。输入:nums = [1,1,1], k = 2。输入:nums = [1,2,3], k = 3。子数组是数组中元素的连续非空序列。
2026-04-08 18:42:06
32
原创 关于Java反射的一些总结
反射是“写注解就可以获取类信息”的底层机制,但作为后端开发,需要知道的是:反射是怎么做到的、能做什么、以及为什么某些框架(Spring、MyBatis)离不开它。换句话说:平时用 和 写代码,是编译期确定的;反射是运行期决定的。Java 里每个类被加载后,JVM 会在堆内存中创建一个 对象(一个类的唯一元数据),反射就是操作这个 对象。关键理解: 获取本类自己声明的(包括私有,但不能获取父类的), 获取公开的(包括继承的)。在 Spring 里写的 ,底层就是这样创建的:框架根据全限定类名,通过反
2026-04-08 09:02:14
203
原创 day9-找到字符串中所有字母异位词-中等
表示ascii相减的结果,正好对应0-26的下标,然后用Arrays.equals(pCount, sCount)来比较数组是否相等,就可以知道是不是字母异位词,但是注意优化写法必须有一个"初始窗口"作为基础,才能进行"–“和”++"操作,所以第一个窗口必须手动初始化。第一思路:若s长度小于p,则返回空,首先对p排序,形成关键词,方便后续比较,将窗口的大小固定为p的长度,依次后移窗口,但是会有一个问题,因为。起始索引等于 0 的子串是 “ab”, 它是 “ab” 的异位词。输出: [0,1,2]
2026-03-19 17:17:41
54
原创 @Autowired和构造函数注入的区别
Autowired 字段注入因为不能加 final 且隐式暴露了修改入口(如 Setter 或反射漏洞),所以依赖可以被改变;而构造函数注入支持 final 且不暴露 Setter,所以依赖一旦注入就不可变。
2026-03-19 16:33:39
347
原创 day8-无重复字符的最长子串-中等
初始思路:将字符串分解为字符数组,然后逐个拼接子串,将每个子串存入列表,将字符数组中的下一个字符和子串比较,是否存在重复的,如果有重复的,就将重复的字符在子串中的下标返回,没有就返回拼接后的新子串。来判断当前right指向的重复字符是否在left到right这个窗口内,如果在,即lastIndex.get© + 1大于left的情况,就将左指针移动到这个位置,如果right指向的字符没有重复,就不做处理,然后更新right指向字符在map中的位置情况,并更新窗口大小。输入: s = “abcabcbb”
2026-03-18 17:34:11
64
原创 day7-接雨水-困难
初始解题思路是:从左往右依次遍历数组,如果有右边柱子低于左边柱子的情况,就说明可以积水,但是一开始遗漏了一个问题,就是整个数组中最高的柱子右边 ,这种解决方法不再适用,因为右边没有比最高柱子更高的柱子了,最高柱子右边又可能形成新的小凹槽,于是我把最高的柱子下标找出,右边单独处理这些特殊地形,一开始的想法是将遍历最高柱右边,如果出现了两高夹一或多矮的情况,就说明这两中间可以积水,但是太复杂,超时了。之后,更新左边最高柱子的记录。输入:height = [0,1,0,2,1,0,1,3,2,1,2,1]
2026-03-18 17:32:51
233
原创 day6-三数之和-中等
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。不同的三元组是 [-1,0,1] 和 [-1,-1,2]。输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]输入:nums = [0,1,1]输入:nums = [0,0,0]解释:唯一可能的三元组和为 0。输出:[[0,0,0]]
2026-03-15 14:49:23
199
原创 day5-盛最多水的容器-中等
解题思路:水的高度由矮的木板决定,所以只有换掉矮的,水才有机会变深;换掉高的,水只会变浅或不变,同时距离还变短,水量一定变小。因为即使移动右边高的那一块,导致新的右边的变矮了,但是二者距离也变近了,只会体积更小。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。输入:[1,8,6,2,5,4,8,3,7]说明:你不能倾斜容器。
2026-03-13 17:18:55
50
原创 day4-移动零-简单
首先我想的是遍历数组,遇到0就将最后一个数字和当前的0交换,但是忘记了题目要求非零数要保持原来的顺序,于是我又想到了遍历数组,遇到0就将所有后面的数字前移一位,最后补0,但是这样太麻烦了,毕竟数组不是链表。最后通过查资料想到了两个指针指向数组头,一个指针向后遍历非0元素,将非零元素依次向数组前部放,也就是第二个指针的下标处,放入一个非零数第二个指针就+1,这样就不会打乱顺序,最后在第一个指针遍历完数组后,将第二个指针之后的数字全部改为0。输入: nums = [0,1,0,3,12]
2026-03-13 17:09:34
36
原创 day3-最长连续序列-中等
解题思路:将所有数字放入set中,因为set不重复,所以只需要依次找有没有比当前set(i)小1的数字,即前驱,就能判断这个数字是不是这一串连续数字的开头,如果没有前驱,就可以挨着查set中比他大1的数字,有多少个,这串连续数字就有多长,然后以此类推,计算一下段长度,将当前的长度和记录的最大长度比较,取大的一个。解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]输入:nums = [100,4,200,1,3,2]
2026-03-12 17:27:31
54
原创 day2-字母异位词分组-中等
首先创建一个map,key是特征值,value是特征值对应的单词组成的列表,然后将题中给的单词逐一拆解,形成对应的特征值,然后放入对应特征值的列表中,最后返回map的value,也就是分类完成的单词。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]字符串 “ate” ,“eat” 和 “tea” 是字母异位词,因为它们可以重新排列以形成彼此。输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]
2026-03-03 16:23:58
68
原创 day1-两数之和-简单
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。你可以按任意顺序返回答案。
2026-03-03 16:21:58
82
原创 关于泛型和函数式接口的使用
/ 基本语法public <T> 返回类型 方法名(参数列表) {}// 多个类型参数public <T, U, V> 返回类型 方法名(参数列表) {}<R, ID>:声明两个泛型类型参数R:方法的返回类型ID:参数id的类型函数式接口是只有一个抽象方法的接口,用注解标记。// 唯一的抽象方法// 可以有默认方法super V,?// 可以有静态方法。
2025-09-27 20:48:30
346
原创 关于JSONUtil的序列化于反序列化(个人学习时遇到的问题)
toJsonStr: 准备数据存储到RedistoBean: 从Redis读取数据并还原对象这两个方法共同完成了Java对象与Redis存储之间的桥梁作用,是缓存操作的核心工具。
2025-09-27 19:35:40
570
原创 重拾代码之每日一题-2025.4.26-简单随机一题-9. 回文数
使用一个循环从数组的两端开始向中间比较对称位置的元素。如果发现任何一对元素不相等,立即返回 false。如果所有对称位置的元素都相等,则在循环结束后返回 true。将数字转换为字符串,再逐字符转换为数字数组。首先检查是否为负数,因为负数不是回文数。
2025-04-26 23:00:41
189
原创 重拾代码之每日一题-2025.4.22-中等随机一题-LCR 060. 前 K 个高频元素
可以创建一个数组,数组的索引表示元素的频率,数组中的元素是一个列表存储,具有该频率的元素。例如,频率为 3 的元素放在索引为 3 的桶里。桶排序部分的时间复杂度是 O(n),因为每个元素都被处理一次放入桶中,然后遍历桶收集结果的过程也是线性的。例如,在示例 1 中,元素 1 出现 3 次,元素 2 出现 2 次,元素 3 出现 1 次。哈希表的空间复杂度是 O(m),其中 m 是不同元素的个数。桶数组的空间复杂度是 O(n),因为所有元素都会被放入桶中。哈希表的键是数组中的元素值,值是该元素出现的次数。
2025-04-22 19:32:10
252
原创 重拾代码之每日一题-2025.4.20-简单随机一题-1486. 数组异或操作
数组 nums 定义为:nums[i] = start + 2*i(下标从 0 开始)且 n == nums.length。解释:数组 nums 为 [0, 2, 4, 6, 8],其中 (0 ^ 2 ^ 4 ^ 6 ^ 8) = 8。解释:数组 nums 为 [3, 5, 7, 9],其中 (3 ^ 5 ^ 7 ^ 9) = 8.输入:n = 10, start = 5。输入:n = 5, start = 0。输入:n = 4, start = 3。输入:n = 1, start = 7。
2025-04-20 15:04:20
170
原创 CSS(b站学习记录)
1、CSS的简单介绍前端三要素:HTML+CSS+JS结构+表现+交互什么是CSS?如何学习1.css是什么2.css怎么用(快速入门)3.css选择器(重点+难点)4.美化网页(文字,阴影,超链接,渐变…)5.盒子模型6.浮动7.定位8.网页动画(特效效果)工具网站:菜鸟教程2、什么是CSS和发展史什么是CSSCascading Style Sheets层叠级联样式表css:表现(美化网页)字体,颜色,边距,高度,宽度,背景图片,网页定位,网页浮动…发展史CSS1.
2021-02-22 01:31:41
351
原创 HTML(b站学习记录)
HTML1、初识HTML什么是HTML?HTML: Hyper Text Markup Language(超文本标记语言)超文本包括:文字、图片、音频、视频、动画等目前网页中常用:HTML5W3C标准W3CWorld Wide Web Consortium(万维网联盟)成立于1994,web技术领域最权威和具影响力的国际中立性技术标准机构http://www.w3.org/http://www.chinaw3c.org/W3C标准包括结构化标准语言(HTML、XM
2021-02-07 02:04:31
498
原创 JVM(跟着b站学习的笔记)
文章目录JVM快速入门篇1.1、JVM的学习方式1.1.1、JVM的位置1.1.2、JVM的体系结构1.1.3、类加载器1.1.4、双亲委派机制1.1.5.沙箱安全机制1.1.6.Native1.1.7.PC寄存器1.1.8.方法区1.1.9.栈1.1.10.三种JVM1.1.11.堆1.1.12.新生区、永久区、堆内存调优1.1.13.使用JPofiler工具分析OOM原因1.1.14.GC:垃圾回收1、引用计数法2、复制算法3、标记压缩清除算法1.1.15.总结1.1.16.JMMJVM快速入门篇1
2021-01-26 01:59:26
930
原创 网络编程(跟着b站学习的笔记)
文章目录网络编程1.1、概述1.2、网络通信的要素1.3、IP1.4、端口1.5、通信协1.6、TCP文件上传Tomcat1.7、UDP发送消息循环发送消息1.8、URL网络编程1.1、概述地球村:你在西安,你一个美国朋友!信件:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-caNNjcVt-1611597433025)(C:\Users\www19\Documents\ShareX\Screenshots\2021-01\mspaint_MPZpu3fiDJ.pn
2021-01-26 01:57:35
424
原创 注解和反射(跟着b站学习的笔记)
文章目录注解1.1、什么是注解1.2、内置注解1.3、元注解1.4、自定义注解反射2.1、反射机制概述2.2、获得反射对象2.3、得到Class类的几种方式2.4、所有类型的Class对象2.5、类加载内存分析2.6、分析类初始化2.7、类加载器2.8、获取类的运行时结构2.9、动态创建对象执行方法2.10、性能对比分析2.11、获取泛型信息2.12、获取注解信息注解1.1、什么是注解·Annotation是从JDK5.0开始引入的新技术·Annotation的作用: -不是程序本身,可以对程序
2021-01-26 01:56:48
298
原创 数据库(跟着b站学习的笔记)
数据库基本基本的查询语句基本查询:SELECT 列名 FROM 表名关键字:SELECT 指定要查询的列FROM 指定要查询的行查询所有列1、使用*的方式2、全列名查询注意:生产环境下优先使用全列表名查询。*需要转换成全列名,效率低,可读性差运算符对列中的数据进行运算运算符 作用+ 加法- 减法* 乘法/ 或 DIV 除法% 或 MOD 取余注意:%是占位符,而非模运算符。select查出来的是一个虚拟表SELECT EMPLOYEE_ID,FI
2021-01-26 01:54:21
540
原创 关于Java异常处理的一些知识
异常处理这几天又看了一下异常处理,记录一下书和视频里面的一些知识点,有什么不对或者漏掉的地方欢迎指出。关于异常的常用的5个关键字:1、try:里面放置可能引发异常的代码2、catch:接异常类型和代码(个人感觉和if语句有点像)3、finally:回收在try里打开的资源(就是确保finally里的代码一定会执行)4、throw:抛出一个异常(个人感觉是让人更容易看懂)5、throws:声明可能抛出的异常(让别人解决)try后面的catch是一定要有的,finally可以没有try…cat
2020-12-19 20:35:48
185
1
原创 leetcode 452 射气球
leetcode 452 题解题思路:将气球左边界从小到大排序,然后从一个的最右边开始射箭,直到不能扎到下一个气球的最左边为止。偷一波官方题解的图。class Solution { public int findMinArrowShots(int[][] points) { if (points.length == 0) { return 0; } //我直接cv一波comparator升序排序,把右边界排整齐先
2020-11-23 21:42:24
494
原创 LeetCode 283 移动零
LeetCCode每日一题第283题首先解题思路:将数组中不为0的数排序,即将0剔出,j为新排好的数组长度,令i=j将剔出的0接在后边即可。 代码如下:class Solution { public void moveZeroes(int[] nums) {//注意void无需返回值 if(nums == null){ return; //空数组直接返回空气 } int j = 0; for(int i=
2020-11-19 20:50:55
204
原创 2020-11-17 leetcode1030
LeetCode1030题:距离顺序排列矩阵单元格题目描述:给出 R 行 C 列的矩阵,其中的单元格的整数坐标为 (r, c),满足 0 <= r < R 且 0 <= c < C。另外,我们在该矩阵中给出了一个坐标为 (r0, c0) 的单元格。返回矩阵中的所有单元格的坐标,并按到 (r0, c0) 的距离从最小到最大的顺序排,其中,两单元格(r1, c1) 和 (r2, c2) 之间的距离是曼哈顿距离,|r1 - r2| + |c1 - c2|。(你可以按任何满足此条件的
2020-11-17 22:50:38
252
原创 LeetCode第7题(又是啥也不会的萌新被迫营业的一天doge)
leetcode第7题题目描述:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/re
2020-11-09 22:12:37
273
原创 2020-11-05 leetcode1470
LeetCode第1470题:重新排列数组题目描述:给你一个数组 nums ,数组中有 2n 个元素,按 [x1,x2,…,xn,y1,y2,…,yn] 的格式排列。请你将数组按 [x1,y1,x2,y2,…,xn,yn] 格式重新排列,返回重排后的数组。示例 1:输入:nums = [2,5,1,3,4,7], n = 3输出:[2,3,5,4,1,7]解释:由于 x1=2, x2=5, x3=1, y1=3, y2=4, y3=7 ,所以答案为 [2,3,5,4,1,7]示例 2:输入
2020-11-05 21:15:49
195
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅