自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 看完mybatis-plus多租户方案的想法

第三,编写第一步的拦截器逻辑,如果是目标接口就拦截处理,然后通过注入获取第二步注册的分页插件bean(这个插件mybatis-plus就是用来做分页插件拦截sql添加分页条件的)来获取自定义的租户处理器,通过登录接口添加的<token,租户id>map 来获取当前登录用户租户id,然后将自定义租户处理器的id修改成目标租户id。第一:mybatis-plus首先需要注册一个拦截器(这个拦截器是全局拦截器,拦截所有请求,设置规则部分放行),去拦截整个需要租户控制的接口,现在是除登录接口外的接口。

2023-04-07 21:47:36 372 1

原创 分库分表的一些看法

该方法也是表的数据量过多的时候采用的方案,当一个数据库无法承受表的数据压力时,可以通过在其他服务器创建相同的数据库表,将压力负载到另一个。总结:垂直主要是指表的结构的拆分,水平主要是对于数据量的拆分,最终目的都是为了提升性能,在实际场景中根据现有资源以及现有结构来选择方案。:指的是根据业务将一张表拆分成两张不同的表,比如一张表有的字段的内存小但是浏览量较大,有的字段浏览量少但是占用内存大就可以拆分成两个表。(相当于在hash或者取奇数偶数的同时将拆出的表放在另一个库里面)

2023-04-07 17:16:40 101

原创 super和extends的感想

super和extends的理解,网上太多感觉通过例子讲不太清楚

2023-02-08 17:15:49 106

原创 关于远程debug的一些事

远程debug踩坑调试

2022-12-10 10:02:38 1432

原创 idea:jsp加入jquery后后面的javascript不加载

这样加入jquery的js会导致后面js出问题<script type="text/javascript" src="./static/js/jquery-3.4.1.js"/>改成<script type="text/javascript" src="./static/js/jquery-3.4.1.js"></script>可以解决加载不了的问题太离谱了...

2022-02-13 21:41:03 470

原创 简单算法 寻找第K大(java)

简单算法 最小的K个数(java)描述给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。0 <= k <= input.length <= 100000 <= input[i] <= 10000public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { Arrays.sort(i

2021-08-04 11:19:42 332

原创 简单算法 最小的K个数(java)

简单算法 最小的K个数(java)描述给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。0 <= k <= input.length <= 100000 <= input[i] <= 10000public ArrayList<Integer> GetLeastNumbers_Solution(int [] input, int k) { Arrays.sort(i

2021-08-04 11:17:05 113

原创 简单算法 寻找第K大(java)

简单算法 两数之和(java)描述有一个整数数组,找出数组中第K大的数。给定一个整数数组a,同时给定它的大小n和要找的K(1<=K<=n),请返回第K大的数(包括重复的元素,不用去重),保证答案存在。public int findKth(int[] a, int n, int K) { Arrays.sort(a); return a[a.length - K]; }...

2021-08-04 11:14:46 175

原创 简单算法 两数之和(java)

简单算法 两数之和(java)描述给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足 index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {20, 70, 110, 150},目标值为90输出 index1=1, index2=2public int[] twoSum (int[] numbers, int target) {

2021-08-04 11:12:21 459

原创 简单算法 合并两个有序的数组(java)

简单算法 合并两个有序的数组(java)描述给出一个整数数组 和有序的整数数组 ,请将数组 合并到数组 中,变成一个有序的升序数组注意:1.可以假设 数组有足够的空间存放 数组的元素, 和 中初始的元素数目分别为 和 ,的数组空间大小为 +2.不要返回合并的数组,返回是空的,将数组 的数据合并到里面就好了3.数组在[0,m-1]的范围也是有序的例1:A: [1,2,3,0,0,0],m=3B: [2,5,6],n=3合并过后A为:A: [1,2,2,3,5,6]代码:public

2021-08-03 16:49:20 298

原创 简单算法 最长无重复子数组(java)

简单算法 最长无重复子数组(java)描述给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组示例1输入:[2,3,4,5]返回值:4说明:[2,3,4,5]是最长子数组想法:利用hashmap覆盖加key不可重复的特性完成此题。代码:public int maxLength (int[] arr) { int le

2021-08-03 16:42:09 413

原创 简单算法 跳台阶(java)

简单算法 跳台阶(java)描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。想法:假设f[i]表示在第i个台阶上可能的方法数。逆向思维。如果我从第n个台阶进行下台阶,下一步有2种可能,一种走到第n-1个台阶,一种是走到第n-2个台阶。所以f[n] = f[n-1] + f[n-2].那么初始条件了,f[0] = f[1] = 1。所以就变成了:f[n] = f[n-1] + f[n-2], 初始值f[0]=1, f[1]=1

2021-08-03 16:11:09 349

原创 简单算法 二分查找-II(java)

简单算法 二分查找-II(java)描述请实现有重复数字的升序数组的二分查找给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1示例1输入:[1,2,4,4,5],4返回值:2说明:从左到右,查找到第1个为4的,下标为2,返回2想法:利用二分查找,不过因为其条件是写一个函数搜索 nums 中的第一个出现的target,所以有两种方法,一种是不管中间判断,当nums[

2021-08-03 16:00:35 120

原创 简单算法 二进制中1的个数(java)

简单算法 二进制中1的个数(java)描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。想法:一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变成0,它后面的两位0变成了1,而前面的1保持不变,因此得到的结果是1011.我们发现减1的结果是把最右边的一个1开始的所有位都取反了。这个时候如果我们再把原来的整数和减去1之后的结果做与运算,从原来整数最右边一个1那一位开始所有位都会变成0。如1100&1011=1000.也就是说,把一个整数减去1

2021-08-03 15:10:54 323

原创 简单算法 设计LRU缓存结构(java)

简单算法 设计LRU缓存结构(java)描述设计LRU缓存结构,该结构在构造时确定大小,假设大小为K,并有如下两个功能set(key, value):将记录(key, value)插入该结构get(key):返回key对应的value值[要求]set和get方法的时间复杂度为O(1)某个key的set或get操作一旦发生,认为这个key的记录成了最常使用的。当缓存的大小超过K时,移除最不经常使用的记录,即set或get最久远的。若opt=1,接下来两个整数x, y,表示set(x, y)

2021-08-03 15:07:58 113

原创 简单算法 排序(java)

简单算法 排序(java)描述给定一个数组,请你编写一个函数,返回该数组排序后的形式。示例1输入:[5,2,3,1,4]返回值:[1,2,3,4,5]代码:(利用Arrays排序,如果要降序,Arrays.sort(a,Collections.reverseOrder()); 不过得注意降序排序的数组不能使用基本类型(int,float,double,…),如果是int型需要改成Integer,float要改成Float)public int[] MySort (int[] arr) {

2021-08-01 15:40:26 72

原创 简单算法 二叉搜索树的第k个结点 (java)

简单算法 二叉搜索树的第k个结点 (java)描述给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。示例1输入:{5,3,7,2,4,6,8},3返回值:4说明:按结点数值大小顺序第三小结点的值为4代码:(中序遍历获取搜索树的顺序,然后直接输出第k个元素)TreeNode KthNode(TreeNode pRoot, int k) { if(k == 0) return null; ArrayList<TreeNode> lis

2021-08-01 15:25:42 162

原创 简单算法 合并二叉树 (java)

简单算法 合并二叉树 (java)描述已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。例如:两颗二叉树是:Tree 11/ \3 2/5Tree 22/ 1 3\ 4 7合并后的树为3/ 4 5/ \ 5 4 7代码(递归获得)public TreeNode mergeTrees (TreeNode t1, TreeNode t2) { i

2021-08-01 15:24:08 297

原创 简单算法 将升序数组转化为平衡二叉搜索树 (java)

简单算法 将升序数组转化为平衡二叉搜索树 (java)描述给出一个升序排序的数组,将其转化为平衡二叉搜索树(BST)public TreeNode sortedArrayToBST (int[] num) { if(num.length == 0 || num == null) return null; int len = num.length; if(len == 1){ return new TreeNode(num[0]);

2021-08-01 11:19:21 170

原创 简单算法 二叉树中是否存在节点和为指定值的路径(java)

简单算法 二叉树中是否存在节点和为指定值的路径(java)描述给定一个二叉树和一个值\ sum sum,判断是否有从根节点到叶子节点的节点值之和等于\ sum sum 的路径,例如:给出如下的二叉树返回true,因为存在一条路径 5\to 4\to 11\to 25→4→11→2的节点值之和为 22public boolean hasPathSum (TreeNode root, int sum) { if(root == null ) return false;

2021-07-31 23:14:48 198

原创 简单算法 二叉树根节点到叶子节点的所有路径和(java)

简单算法 二叉树根节点到叶子节点的所有路径和(java)描述给定一个仅包含数字\ 0-9 0−9 的二叉树,每一条从根节点到叶子节点的路径都可以用一个数字表示。例如根节点到叶子节点的一条路径是1\to 2\to 31→2→3,那么这条路径就用\ 123 123 来代替。找出根节点到叶子节点的所有路径表示的数字之和例如:这颗二叉树一共有两条路径,根节点到叶子节点的路径 1\to 21→2 用数字\ 12 12 代替根节点到叶子节点的路径 1\to 31→3 用数字\ 13 13 代替所以答

2021-07-31 23:02:34 1260

原创 简单算法 二叉树的最大路径和(java)

描述给定一个二叉树,请计算节点值之和最大的路径的节点值之和是多少。这个路径的开始节点和结束节点可以是二叉树中的任意节点例如:给出以下的二叉树,返回的结果为6想法:一开始想利用dfs遍历一遍找出哪条线最大,又仔细读题,发现这个比较的是任意两个结点之间路径最大值。就利用一个全局变量,在每次递归时进行比较最大值。public int res = Integer.MIN_VALUE; public int maxPathSum (TreeNode root) { getMa

2021-07-31 16:04:17 937

原创 简单算法 二叉树的镜像(java)

简单算法 二叉树的镜像(java)描述操作给定的二叉树,将其变换为源二叉树的镜像。比如:示例输入:{8,6,10,5,7,9,11}返回值:{8,10,6,11,9,7,5}public TreeNode Mirror (TreeNode pRoot) { if(pRoot == null) return pRoot; Stack<TreeNode> s1 = new Stack<TreeNode>(); s1.pu

2021-07-31 15:16:24 72

原创 简单算法 判断二叉树是否对称 (java)

简单算法 判断二叉树是否对称 (java)描述给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)例如:下面这棵二叉树是对称的1/ 2 2/ \ / 3 4 4 3下面这棵二叉树不对称。1/ 2 2\ 3 3备注:希望你可以用递归和迭代两种方法解决这个问题想法:迭代和递归代码1:(迭代)public boolean isSymmetric (TreeNode root) { if(root == null) retur

2021-07-31 12:28:33 399

原创 简单算法 二叉树根节点到叶子节点和为指定值的路径(java)

简单算法 二叉树根节点到叶子节点和为指定值的路径(java)描述给定一个二叉树和一个值\ sum sum,请找出所有的根节点到叶子节点的节点值之和等于\ sum sum 的路径,例如:给出如下的二叉树返回[[5,4,11,2],[5,8,9]]想法:通过dfs遍历来完成。代码1:是从上往下减数。代码2:从上往下加数.两个方法差别不大代码1:public ArrayList<ArrayList<Integer>> pathSum (TreeNode root,

2021-07-31 11:54:41 543

原创 简单算法 在二叉树中找到两个节点的最近公共祖先(java)

简单算法 在二叉树中找到两个节点的最近公共祖先(java)描述给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点。注:本题保证二叉树中每个节点的val值均不相同。想法:利用递归查找o1,和o2位置,再通过判断来选择其公共祖先结点public int lowestCommonAncestor (TreeNode root, int o1, int o2) { // write code here

2021-07-30 18:49:16 298

原创 简单算法 重建二叉树(java)

描述给定某二叉树的前序遍历和中序遍历,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。提示:1.0 <= pre.length <= 20002.vin.length == pre.length3.-10000 <= pre[i], vin[i] <= 100004.pre 和 vin 均无重复元素5.vin出现的元素均出现在 pre里6.只需要返回根结点,

2021-07-30 15:12:35 110

原创 简单算法 实现二叉树先序,中序和后序遍历(java)

简单算法 实现二叉树先序,中序和后序遍历(java)描述分别按照二叉树先序,中序和后序打印所有的节点。想法:无import java.util.*;/* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */public class Solution { /** * * @param root Tree

2021-07-30 11:01:59 205

原创 简单算法 求二叉树的层序遍历(java)

描述给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7},该二叉树层序遍历的结果是[[3],[9,20],[15,7]]想法:利用栈层序遍历,我在写这篇博客时突然感觉可以不用辅助栈,可以直接利用一个栈完成整个算法。 public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) { Stack<TreeN

2021-07-29 20:59:11 181

原创 简单算法 平衡二叉树(java)

描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。想法:通过递归遍历二叉树加上(left - right > 1 || right - left > 1)这个条件来判断深度是否为-1完成求解public boolean IsBalanced_Solution(Tre

2021-07-29 19:13:02 63

原创 简单算法 二叉树的最大深度(java)

描述求给定二叉树的最大深度,最大深度是指树的根结点到最远叶子结点的最长路径上结点的数量。想法:这个题有很多种解法,不过大多数都是通过递归遍历一遍寻找最大值来完成。public int maxDepth (TreeNode root) { if(root == null) return 0; int left = maxDepth(root.left); int right = maxDepth(root.right); return

2021-07-29 16:51:00 197

原创 简单算法 按之字形顺序打印二叉树(java)

简单算法 按之字形顺序打印二叉树(java)描述给定一个二叉树,返回该二叉树的之字形层序遍历,(第一层从左向右,下一层从右向左,一直这样交替)例如:给定的二叉树是{1,2,3,#,#,4,5}该二叉树之字形层序遍历的结果是[[1],[3,2],[4,5]]想法:找两个栈分别储存奇数偶数层的二叉树结点代码:import java.util.ArrayList;import java.util.*;/*public class TreeNode { int val = 0

2021-07-28 15:20:28 253

原创 简单算法 包含min函数的栈(java)

简单算法 包含min函数的栈(java)描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数,并且调用 min函数、push函数 及 pop函数 的时间复杂度都是 O(1)push(value):将value压入栈中pop():弹出栈顶元素top():获取栈顶元素min():获取栈中最小元素示例:输入: [“PSH-1”,“PSH2”,“MIN”,“TOP”,“POP”,“PSH1”,“TOP”,“MIN”]输出: -1,2,1,-1解析:"PSH

2021-07-28 12:43:43 85

原创 简单算法 括号序列(java)

简单算法 括号序列(java)描述给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列括号必须以正确的顺序关闭,"()“和”()[]{}“都是合法的括号序列,但”(]“和”([)]"不合法。示例1输入:“([])”返回值:true想法:这个题完整体现了栈先进后出的思想,通过栈的先进后出可以完成括号序列的一 一比较。代码:Stack<Character> stack = new Stack<Character

2021-07-28 11:25:53 372

原创 简单算法 用两个栈实现队列(java)

简单算法 用两个栈实现队列(java)描述用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。示例:输入:[“PSH1”,“PSH2”,“POP”,“POP”]返回:1,2解析:“PSH1”:代表将1插入队列尾部“PSH2”:代表将2插入队列尾部"POP“:代表删除一个元素,先进先出=>返回1"POP“:代表删除一个元素,先进先出=>返回2想法:

2021-07-27 14:16:52 151

原创 简单算法 删除有序链表中重复的元素(java)

简单算法 删除有序链表中重复的元素(java)描述删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次例如:给出的链表为1\to1\to21→1→2,返回1 \to 21→2.给出的链表为1\to1\to 2 \to 3 \to 31→1→2→3→3,返回1\to 2 \to 31→2→3.示例1输入:{1,1,2}返回值:{1,2}想法:因为是有序链表,所有可以通过遍历,比较当前结点和当前结点下一个结点的值来判断是否重复,如果是无序链表可以通过先将其排序

2021-07-27 13:19:28 706

原创 简单算法 单链表的排序(java)

简单算法 单链表的排序(java)描述给定一个无序单链表,实现单链表的排序(按升序排序)。示例1输入:[1,3,2,4,5]返回值:{1,2,3,4,5}想法:一开始看到这个算法时送就想到了暴力解法,值排序,通过将链表中的值取出到集合中,然后集合利用自带方法进行排序,再通过加强for循环传回排好序的值。如代码1.不过之后我又想了一下,如果用这种方法肯定不是比较好的答案,实际运用起来问题肯定也比较大,所以我又通过查询资料找到了第二种方法,通过快慢结点找到中间结点,然后分为两个链表,一直分,

2021-07-27 13:17:10 791

原创 简单算法 判断一个链表是否为回文结构(java)

简单算法 判断一个链表是否为回文结构(java)描述给定一个链表,请判断该链表是否为回文结构。示例输入:[1,2,2,1]返回值:true说明:1->2->2->1想法:先使用快慢结点找到中间结点,然后通过中间结点将后面部分构建成一个以最后一个节点为头节点新的链表,进行比较即可代码:public boolean isPail (ListNode head) { if(head == null || head.next == null)

2021-07-27 12:14:01 201

原创 简单算法 两个链表的第一个公共结点(java)

简单算法 两个链表的第一个公共结点(java)描述输入两个无环的单链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)示例1输入:{1,2,3},{4,5},{6,7}返回值:{6,7}说明:第一个参数{1,2,3}代表是第一个链表非公共部分,第二个参数{4,5}代表是第二个链表非公共部分,最后的{6,7}表示的是2个链表的公共部分这3个参数最后在后台会组装成为2个两个无环的单链表,且是有公共节点的想法:因为要寻找

2021-07-27 11:03:07 144

原创 简单算法 判断链表中是否有环(java)

简单算法 判断链表中是否有环(java)描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。你能给出空间复杂度的解法么?输入分为2部分,第一部分为链表,第二部分代表是否有环,然后回组成head头结点传入到函数里面。-1代表无环,其他的数字代表有环,这些参数解释仅仅是为了方便读者自测调试示例输入:{3,2,0,-4},1复制返回值:true说明:第一部分{3,2,0,-4}代表一个链表,第二部分的1表示,-4到位置1,即-4->2存在一个链接,组成传入的he

2021-07-26 14:44:38 294

空空如也

空空如也

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

TA关注的人

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