03 2024 档案
摘要:1 题目 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 个最小元素(从 1 开始计数)。 示例 1: 输入:root = [3,1,4,null,2], k = 1 输出:1 示例 2: 输入:root = [5,3,6,2,4,null,null,1],
阅读全文
摘要:1 题目 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。 注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 示例 1: 输
阅读全文
摘要:1 题目 给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。 请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入: [3,2,1,5,6,4], k = 2 输出: 5
阅读全文
摘要:1 前言 我们从上节 【OpenFeign】@FeignClient 注入过程源码分析 继续,来看看它代理对象的创建,以及请求的执行过程。 我们就从它的 FeignClientFactoryBean 看起,那我们这里简单回忆下它都设置了哪些属性,我简单画了个图。 这些属性不了解的话,就先看看上节哈,
阅读全文
摘要:1 前言 微服务之间的调用,OpenFeign 是一种选择,并且还提供了很多功能,比如我们有多个节点,它能负载均衡,当服务发生异常时,它还能提供熔断机制。所以它是怎么实现的,因为我们平时只需要写 @FeignClient 是个接口,所以它势必会走代理,所以是不是要从我们的 @FeignClient
阅读全文
摘要:1 前言 我们在写代码的时候,尤其是持久层用到 Mybatis 的时候,可能会经常自己写 SQL,而对于一些有常用的有规律的 SQL,我们没必要自己写,可以整个工具来自己生成,比如批量新增的 insert values、新增或者更新的 insert on conflict update 等类似的语句
阅读全文
摘要:1 题目 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] = [ai, bi] ,表示如果要学习课程 ai 则 必须 先学
阅读全文
摘要:1 题目 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 输入:
阅读全文
摘要:1 题目 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 示例 1: 输入: s = "leetcode", wordDict = ["le
阅读全文
摘要:1 题目 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums = [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和 [11] 。 示例 2: 输入:nums = [1,
阅读全文
摘要:1 题目 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,
阅读全文
摘要:1 题目 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20
阅读全文
摘要:1 题目 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。 每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中,返回 true ;否则,返回 false 。 示例 1: 输入:matrix = [[1,
阅读全文
摘要:1 题目 给你两个单词 word1 和 word2, 请返回将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作: 插入一个字符 删除一个字符 替换一个字符 示例 1: 输入:word1 = "horse", word2 = "ros" 输出:3 解释: ho
阅读全文
摘要:1 题目 给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1: 输入:nums =
阅读全文
摘要:1 题目 给你一个链表数组,每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中,返回合并后的链表。 示例 1: 输入:lists = [[1,4,5],[1,3,4],[2,6]] 输出:[1,1,2,3,4,4,5,6] 解释:链表数组如下: [ 1->4->5, 1->3->4, 2
阅读全文
摘要:1 题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs = ["flower","flow","flight"] 输出:"fl" 示例 2: 输入:strs = ["dog","racecar","car"] 输出:"" 解释:
阅读全文
摘要:1 前言 Bean 的创建周期大家可能都知道,三级缓存大家也都知道,那么他俩之间交互的细节如何?这节我就捋一下普通 Bean 的一个创建过程和三级缓存之间的交互。 2 图解剖析 2.1 普通无代理 Bean 创建 大概有4次交互: (1)getBean 的时候,getSingleton(beanNa
阅读全文
摘要:1 前言 今天想细细研究下 BeanDefinition,至于为什么,主要是看了很多遍,没太关注 mergedBeanDefinition 所以比较好奇,它是干啥的呢?所以得先搞清 BeanDefinition,开整。 2 源码分析 我们得先知道 BeanDefinition 在 Spring 这个
阅读全文
摘要:1 前言 最近在忙项目上线的事情,那么上线前要确保系统流程或者基础档案的正确性,往往会做几次数据的准确性验证。具体的说就是把客户的一个月甚至两个月的不同公司下的各种订单数据、库存数据,导入到系统中,看每个公司的订单数据、所消耗的库存数量、流程能不能正确的跑下去等方面进行对比来验证。 奈何系统的导入做
阅读全文
摘要:1 前言 我们平时异步会用到线程池,那你怎么用的呢?用的对不对呢?这节我们看看源码中的一些应用场景,看看他们是如何设置参数,如何停止的。 回忆一下线程池的几个参数:核心线程数、最大线程数、空闲时间、队列、线程工厂、拒绝策略。 2 源码应用 我们就看看他们是如何创建线程池、线程池的参数设置、线程的停止
阅读全文
摘要:1 前言 之前我们从数据库连接的角度看过 MyBatis 和 Spring 的交互,以及在动态数据源下的交互,那么我们这节看什么呢?看一下在有无 @Transitional 下的事务提交的差异。 想一个问题,事务提交或者回滚,最后的落点是什么?是不是就是那条数据库连接的提交或者回滚,就跟我们早之前的
阅读全文
摘要:1 前言 本节我们续前两节(调试查看Mapper接口生成过程、源码分析 Mapper生成注入入口分析)的内容,看下 MapperFactoryBean 是如何代理掉我们的 @Mapper 接口的。 上节我们看到我们的 Mapper 接口的 BeanDefinition, 已经放进 spring 的上
阅读全文
摘要:1 前言 续上节主要用调试的方式,看了一下 Mapper 接口的注入过程,本节就从源码的角度,一步步分析 Mapper 接口都是怎么注入到 Spring容器中的。 2 源码分析 2.1 入口分析 我们上节看到扫描 @Mapper 的方式有两种,一种是基于 @MapperScan 的主动扫描,另一种就
阅读全文