<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[无情的打工人]]></title><description><![CDATA[被迫营业（doge）]]></description><link>https://blog.youkuaiyun.com/Mmisaka_10086</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Mmisaka_10086]]></copyright><item><title><![CDATA[关于ThreadLocal为何不能在webflux中使用的问题]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/162491416</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/162491416</guid><author>Mmisaka_10086</author><pubDate>Wed, 01 Jul 2026 16:17:02 +0800</pubDate><description><![CDATA[本质是“线程级别的 Map”，它的可用性完全取决于“一个请求是否全程在一个线程中执行”。WebFlux 打破了这一假设。这不是流式响应的问题，而是响应式编程模型本身导致的。你的项目用了 WebFlux（从日志能看到 Netty），所以必须用。一个请求从“接收入参”到“执行业务逻辑”再到“发送响应”，可能经历 3～5 个线程。只能在“存入数据的那个线程”中读取，切到其他线程后失效。失效是因为流式响应（分块传输）”，这是。你的项目是 WebFlux，WebFlux 基于。]]></description><category></category></item><item><title><![CDATA[day12-最小覆盖字串-困难]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/160281906</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/160281906</guid><author>Mmisaka_10086</author><pubDate>Sat, 18 Apr 2026 16:07:54 +0800</pubDate><description><![CDATA[给定两个字符串 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 是最小覆盖子串。]]></description><category></category></item><item><title><![CDATA[day11-滑动窗口最大值-困难]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/160281891</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/160281891</guid><author>Mmisaka_10086</author><pubDate>Sat, 18 Apr 2026 16:07:06 +0800</pubDate><description><![CDATA[思路：用数组模拟双端队列，deque数组用来存放窗口中数字的下标，如果直接放值，我们不知道什么时候需要弹出不需要的值，每新加入一个数字，就比较这个数字nums[i]和之前加入的数字的大小，如果nums[i]比之前的小，就说明前面的数字因为窗口右移而移除后，nums[i]可能会成为新的最大的数字，所以加入数组（双端队列），如果nums[i]比之前的数字大，那么前面的数字就不可能成为这个窗口中最大的数字了，所以tail–移除前面的比nums[i]小的数字，当。输出：[3,3,5,5,6,7]]]></description><category></category></item><item><title><![CDATA[day10-和为 K 的子数组-中等]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159963902</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159963902</guid><author>Mmisaka_10086</author><pubDate>Wed, 08 Apr 2026 18:42:06 +0800</pubDate><description><![CDATA[给你一个整数数组 nums 和一个整数 k ，请你统计并返回 该数组中和为 k 的子数组的个数。思路：暴力枚举，遍历所有子数组的和，如果有等于k的，统计个数就+1。输入：nums = [1,1,1], k = 2。输入：nums = [1,2,3], k = 3。子数组是数组中元素的连续非空序列。]]></description><category></category></item><item><title><![CDATA[关于Java反射的一些总结]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159940591</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159940591</guid><author>Mmisaka_10086</author><pubDate>Wed, 08 Apr 2026 09:02:14 +0800</pubDate><description><![CDATA[反射是“写注解就可以获取类信息”的底层机制，但作为后端开发，需要知道的是：反射是怎么做到的、能做什么、以及为什么某些框架（Spring、MyBatis）离不开它。换句话说：平时用  和  写代码，是编译期确定的；反射是运行期决定的。Java 里每个类被加载后，JVM 会在堆内存中创建一个  对象（一个类的唯一元数据），反射就是操作这个  对象。关键理解： 获取本类自己声明的（包括私有，但不能获取父类的）， 获取公开的（包括继承的）。
在 Spring 里写的 ，底层就是这样创建的：框架根据全限定类名，通过反]]></description><category></category></item><item><title><![CDATA[day9-找到字符串中所有字母异位词-中等]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159249274</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159249274</guid><author>Mmisaka_10086</author><pubDate>Thu, 19 Mar 2026 17:17:41 +0800</pubDate><description><![CDATA[表示ascii相减的结果，正好对应0-26的下标，然后用Arrays.equals(pCount, sCount)来比较数组是否相等，就可以知道是不是字母异位词，但是注意优化写法必须有一个"初始窗口"作为基础，才能进行"–“和”++"操作，所以第一个窗口必须手动初始化。第一思路：若s长度小于p，则返回空，首先对p排序，形成关键词，方便后续比较，将窗口的大小固定为p的长度，依次后移窗口，但是会有一个问题，因为。起始索引等于 0 的子串是 “ab”, 它是 “ab” 的异位词。输出: [0,1,2]]]></description><category></category></item><item><title><![CDATA[@Autowired和构造函数注入的区别]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159247919</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159247919</guid><author>Mmisaka_10086</author><pubDate>Thu, 19 Mar 2026 16:33:39 +0800</pubDate><description><![CDATA[Autowired 字段注入因为不能加 final 且隐式暴露了修改入口（如 Setter 或反射漏洞），所以依赖可以被改变；而构造函数注入支持 final 且不暴露 Setter，所以依赖一旦注入就不可变。]]></description><category></category></item><item><title><![CDATA[day8-无重复字符的最长子串-中等]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159210871</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159210871</guid><author>Mmisaka_10086</author><pubDate>Wed, 18 Mar 2026 17:34:11 +0800</pubDate><description><![CDATA[初始思路：将字符串分解为字符数组，然后逐个拼接子串，将每个子串存入列表，将字符数组中的下一个字符和子串比较，是否存在重复的，如果有重复的，就将重复的字符在子串中的下标返回，没有就返回拼接后的新子串。来判断当前right指向的重复字符是否在left到right这个窗口内，如果在，即lastIndex.get© + 1大于left的情况，就将左指针移动到这个位置，如果right指向的字符没有重复，就不做处理，然后更新right指向字符在map中的位置情况，并更新窗口大小。输入: s = “abcabcbb”]]></description><category></category></item><item><title><![CDATA[day7-接雨水-困难]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159210815</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159210815</guid><author>Mmisaka_10086</author><pubDate>Wed, 18 Mar 2026 17:32:51 +0800</pubDate><description><![CDATA[初始解题思路是：从左往右依次遍历数组，如果有右边柱子低于左边柱子的情况，就说明可以积水，但是一开始遗漏了一个问题，就是整个数组中最高的柱子右边 ，这种解决方法不再适用，因为右边没有比最高柱子更高的柱子了，最高柱子右边又可能形成新的小凹槽，于是我把最高的柱子下标找出，右边单独处理这些特殊地形，一开始的想法是将遍历最高柱右边，如果出现了两高夹一或多矮的情况，就说明这两中间可以积水，但是太复杂，超时了。之后，更新左边最高柱子的记录。输入：height = [0,1,0,2,1,0,1,3,2,1,2,1]]]></description><category></category></item><item><title><![CDATA[day6-三数之和-中等]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159082289</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159082289</guid><author>Mmisaka_10086</author><pubDate>Sun, 15 Mar 2026 14:49:23 +0800</pubDate><description><![CDATA[给你一个整数数组 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]]]]></description><category></category></item><item><title><![CDATA[关于Lambda表达式]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159081473</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159081473</guid><author>Mmisaka_10086</author><pubDate>Sun, 15 Mar 2026 14:22:21 +0800</pubDate><description><![CDATA[以为例子。]]></description><category></category></item><item><title><![CDATA[day5-盛最多水的容器-中等]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159014972</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159014972</guid><author>Mmisaka_10086</author><pubDate>Fri, 13 Mar 2026 17:18:55 +0800</pubDate><description><![CDATA[解题思路：水的高度由矮的木板决定，所以只有换掉矮的，水才有机会变深；换掉高的，水只会变浅或不变，同时距离还变短，水量一定变小。因为即使移动右边高的那一块，导致新的右边的变矮了，但是二者距离也变近了，只会体积更小。有 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]说明：你不能倾斜容器。]]></description><category></category></item><item><title><![CDATA[day4-移动零-简单]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159014905</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/159014905</guid><author>Mmisaka_10086</author><pubDate>Fri, 13 Mar 2026 17:09:34 +0800</pubDate><description><![CDATA[首先我想的是遍历数组，遇到0就将最后一个数字和当前的0交换，但是忘记了题目要求非零数要保持原来的顺序，于是我又想到了遍历数组，遇到0就将所有后面的数字前移一位，最后补0，但是这样太麻烦了，毕竟数组不是链表。最后通过查资料想到了两个指针指向数组头，一个指针向后遍历非0元素，将非零元素依次向数组前部放，也就是第二个指针的下标处，放入一个非零数第二个指针就+1，这样就不会打乱顺序，最后在第一个指针遍历完数组后，将第二个指针之后的数字全部改为0。输入: nums = [0,1,0,3,12]]]></description><category></category></item><item><title><![CDATA[day3-最长连续序列-中等]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/158618289</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/158618289</guid><author>Mmisaka_10086</author><pubDate>Thu, 12 Mar 2026 17:27:31 +0800</pubDate><description><![CDATA[解题思路：将所有数字放入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]]]></description><category></category></item><item><title><![CDATA[day2-字母异位词分组-中等]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/158618257</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/158618257</guid><author>Mmisaka_10086</author><pubDate>Tue, 03 Mar 2026 16:23:58 +0800</pubDate><description><![CDATA[首先创建一个map，key是特征值，value是特征值对应的单词组成的列表，然后将题中给的单词逐一拆解，形成对应的特征值，然后放入对应特征值的列表中，最后返回map的value，也就是分类完成的单词。输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]字符串 “ate” ，“eat” 和 “tea” 是字母异位词，因为它们可以重新排列以形成彼此。输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]]]></description><category></category></item><item><title><![CDATA[day1-两数之和-简单]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/158618110</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/158618110</guid><author>Mmisaka_10086</author><pubDate>Tue, 03 Mar 2026 16:21:58 +0800</pubDate><description><![CDATA[给定一个整数数组 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。你可以按任意顺序返回答案。]]></description><category></category></item><item><title><![CDATA[关于泛型和函数式接口的使用]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/152177325</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/152177325</guid><author>Mmisaka_10086</author><pubDate>Sat, 27 Sep 2025 20:48:30 +0800</pubDate><description><![CDATA[/ 基本语法public <T> 返回类型 方法名(参数列表) {}// 多个类型参数public <T, U, V> 返回类型 方法名(参数列表) {}<R, ID>：声明两个泛型类型参数R：方法的返回类型ID：参数id的类型函数式接口是只有一个抽象方法的接口，用注解标记。// 唯一的抽象方法// 可以有默认方法super V,?// 可以有静态方法。]]></description><category></category></item><item><title><![CDATA[关于JSONUtil的序列化于反序列化（个人学习时遇到的问题）]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/152175965</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/152175965</guid><author>Mmisaka_10086</author><pubDate>Sat, 27 Sep 2025 19:35:40 +0800</pubDate><description><![CDATA[toJsonStr: 准备数据存储到RedistoBean: 从Redis读取数据并还原对象这两个方法共同完成了Java对象与Redis存储之间的桥梁作用，是缓存操作的核心工具。]]></description><category></category></item><item><title><![CDATA[重拾代码之每日一题-2025.4.26-简单随机一题-9. 回文数]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/147544567</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/147544567</guid><author>Mmisaka_10086</author><pubDate>Sat, 26 Apr 2025 23:00:41 +0800</pubDate><description><![CDATA[使用一个循环从数组的两端开始向中间比较对称位置的元素。如果发现任何一对元素不相等，立即返回 false。如果所有对称位置的元素都相等，则在循环结束后返回 true。将数字转换为字符串，再逐字符转换为数字数组。首先检查是否为负数，因为负数不是回文数。]]></description><category></category></item><item><title><![CDATA[重拾代码之每日一题-2025.4.22-中等随机一题-LCR 060. 前 K 个高频元素]]></title><link>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/147428947</link><guid>https://blog.youkuaiyun.com/Mmisaka_10086/article/details/147428947</guid><author>Mmisaka_10086</author><pubDate>Tue, 22 Apr 2025 19:32:10 +0800</pubDate><description><![CDATA[可以创建一个数组，数组的索引表示元素的频率，数组中的元素是一个列表存储，具有该频率的元素。例如，频率为 3 的元素放在索引为 3 的桶里。桶排序部分的时间复杂度是 O(n)，因为每个元素都被处理一次放入桶中，然后遍历桶收集结果的过程也是线性的。例如，在示例 1 中，元素 1 出现 3 次，元素 2 出现 2 次，元素 3 出现 1 次。哈希表的空间复杂度是 O(m)，其中 m 是不同元素的个数。桶数组的空间复杂度是 O(n)，因为所有元素都会被放入桶中。哈希表的键是数组中的元素值，值是该元素出现的次数。]]></description><category></category></item></channel></rss>