
java
zhangkai_forever
这个作者很懒,什么都没留下…
展开
-
编辑列表操作时的一些思考,关于全量和增量操作
如果用户角色关系表数据量较大,或者编辑后的角色列表和原有角色列表的差异较大,可能会导致大量的删除和插入操作,影响性能,此时可以考虑采用第二种方式,全量更新。在数据量较大或性能要求较高的情况下,增量更新通常是更优的选择。角色下面有一些菜单项,通过一张角色-菜单关系表来维护,那么我要在编辑用户后也要对用户角色关系表做修改,是经过两次比较分别计算出需要增加或者删除的角色用户关系,还是直接把原来的用户角色关系删除后重新添加呢?删除操作会导致索引的失效,插入操作会导致索引的重建,这些操作都需要额外的计算和存储资源。原创 2023-08-03 08:43:43 · 326 阅读 · 0 评论 -
理论基础 |77.组合
顺带回顾几个语法基础,因为我们要用到removeLast()移除list最后一个元素,所以path定义LinkedList path = new LinkedList();回溯法解决的问题都可以抽象为树形结构(N叉树),用树形结构来理解回溯就容易多了。图中可以发现n相当于树的宽度,k相当于树的深度。子集问题:一个N个数的集合里有多少符合条件的子集。排列问题:N个数按一定规则全排列,有几种排列方式。组合问题:N个数里面按一定规则找出k个数的集合。和之前的递归的逻辑其实是一样的。原创 2023-02-24 11:05:02 · 81 阅读 · 0 评论 -
算法第十六天| 513.找树左下角的值|112. 路径总和 113.路径总和ii|106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
513.找树左下角的值。原创 2023-02-16 18:20:59 · 91 阅读 · 0 评论 -
算法第十五天|110.平衡二叉树 |257. 二叉树的所有路径 |404.左叶子之和
110.平衡二叉树。原创 2023-02-11 02:12:18 · 127 阅读 · 0 评论 -
算法第十四天|104.二叉树的最大深度|559.n叉树的最大深度|111.二叉树的最小深度|222.完全二叉树的节点个数
问题所在:如果根节点root的左右子节点有一个为null,程序就会把0+1当成最短路径。而最小深度是从根节点到最近。因此应该对程序做修改。左叶子节点为null,去返回右边的深度;右叶子节点为null,返回左边深度。本题使用后续遍历的方式代码更为简洁,最初写了一版又问题的代码。的最短路径上的节点数量。这是不符合最小深度的要求的,222.完全二叉树的节点个数。559.n叉树的最大深度。111.二叉树的最小深度。用普通二叉树遍历的方法。原创 2023-01-30 17:58:46 · 90 阅读 · 0 评论 -
算法第十三天|层序遍历 |226.翻转二叉树 |101. 对称二叉树
看完题解后自己实现了一遍,利用递归法,分别比较外侧和内测的节点是否对称。第一次学习bfs思想(利用队列),看完题解后自己实现了一遍。和上一题的区别是需要把最后层序遍历后的结果res做一次翻转。107.二叉树的层次遍历II。102.二叉树的层序遍历。101. 对称二叉树。原创 2023-01-23 14:45:42 · 168 阅读 · 0 评论 -
算法第十二天|基础理论|144.二叉树的前序遍历|145.二叉树的后序遍历|94.二叉树的中序遍历
除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。又被称为AVL(Adelson-Velsky and Landis)树,左子树和右子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。节点有顺序,左子树所有节点都小于中间节点,右子树所有节点都大于中间节点。广度优先搜索:一层一层或一圈一圈的去遍历,如层序遍历(迭代法)94.二叉树的中序遍历。原创 2023-01-15 01:07:12 · 86 阅读 · 0 评论 -
算法第十一天|239. 滑动窗口最大值|347.前 K 个高频元素
deque.isEmpty()&&deque.getLast()原创 2023-01-12 15:44:44 · 90 阅读 · 0 评论 -
算法第十天|20. 有效的括号|1047. 删除字符串中的所有相邻重复项|150. 逆波兰表达式求值
此外,在做几天基础数据结构的回顾,双向队列deque用push存放数据时,此时可以看作是栈,peek()方法弹出的是栈顶的元素,如果用offer()存放数据,此时是队列,peek()弹出的是队头的元素。本题需要将每个符号(+-*/)和左边的两个数字元素(或者前面元素的运算结果)去做运算,自然想到利用栈去保存元素。报空指针异常,且代码逻辑错,如果匹配的不是对应右括号,不做任何操作是不合适的。与上一题类似,之前是匹配左右括号,本题是匹配相邻元素,还是用栈解决。150. 逆波兰表达式求值。原创 2023-01-08 16:53:33 · 67 阅读 · 0 评论 -
算法第九天|232.用栈实现队列|225. 用队列实现栈
用栈实现队列用队列实现栈。原创 2023-01-07 01:15:15 · 93 阅读 · 0 评论 -
算法第八天|459.重复的子字符串
去掉首位后仍然包含原本来的字符串。原创 2023-01-04 16:32:15 · 77 阅读 · 0 评论 -
算法第七天|344.反转字符串| 541. 反转字符串II | |剑指Offer 05.替换空格151.翻转字符串里的单词||剑指Offer58-II.左旋转字符串
这题就是在一次次bug中调出来的,没有什么技巧,但想一次性写对还有些麻烦,方法不是很好,直接从后往前遍历,取出单词代码会简洁一些。原创 2023-01-04 14:03:23 · 74 阅读 · 0 评论 -
算法第六天|454.四数相加II |383. 赎金信 | 15. 三数之和 |18. 四数之和
四数相加,思路和三数相加一致,在外面多包一层for循环,对nums[i]做判断时,不能直接nums[i] > target了(nums[i] > target不能保证nums[i]+nums[j]+nums[left]+nums[right] > target),应该变成。同样需要注意的是,nums[i]+nums[j]>target也不能保证其他时候的nums[i]+nums[j]+nums[left]+nums[right] > target,如果写成这样就错了。原创 2022-12-23 00:48:46 · 84 阅读 · 0 评论 -
算法第五天|242.有效的字母异位词 |349. 两个数组的交集|202. 快乐数|1.两数之和
看了题解后,觉得答案的方法更简洁,因为这里是比较的字母的字符串,可以用一张长度为26的数组存放元素,元素按自然顺序对应数组的下标,存放出现的次数,代码附上。这题第一次做是没有思路的,看完题解后,大致思路是这样的,我们对快乐数每一位平方后求和,最后会变成1,如果不是快乐数,可能sum会。,这里使用哈希法,来判断这个sum是否重复出现,如果重复了就是return false, 否则一直找到sum为1为止,代码如下。但始终变不到 1,那我们就需要判断这个sum 是否出现过,因此,我们把问题转化为。原创 2022-12-20 00:31:01 · 77 阅读 · 0 评论 -
算法第四天|24.两两交换链表中节点|19.删除链表中倒数第N个节点|链表相交|142.环形链表2
算法第四天|24.两两交换链表中节点|19.删除链表中倒数第N个节点|链表相交|142.环形链表2原创 2022-11-27 22:47:19 · 177 阅读 · 0 评论 -
基于vue axios用户注册重复校验的问题(二)
上一篇基于vue axios用户注册重复校验的问题(一)中,通过async,await关键字解决异步请求返回值时间问题后,点击注册按钮提交表单信息会发现存在另一个问题,无论用户查重结果如何,都能通过注册,数据库表中出现重复信息立马反应到checkUsername()中的返回值并没有真正返回,代码如下checkRegist()中先禁止表单提交,添加如下几行代码,把checkUsername()的返回值打印出来看看:输出结果是一个object promise对象..原创 2022-04-17 14:47:08 · 1682 阅读 · 0 评论 -
基于vue axios用户注册重复校验的问题(一)
2.问题现象输入新用户名输入已有用户名前台页面在输入用户名时通过发送ajax请求查询数据库,确实查到重复用户名,但不能成功在控制台打印信息,看上去像是then回调函数中的方法没有被执行,如果没有被执行,前台又怎会成功提示用户名存在呢?3.原因分析1)Ajax作为异步请求,被发送时then作为回调函数它需要等到服务器给出响应后才会执行其中的步骤;2)在前台收到服务器响应前会继续向下执行其他代码,此时打印的fla...原创 2022-04-17 13:34:23 · 975 阅读 · 0 评论 -
记录Ubuntu 下 JDK17 的安装
安装准备:jdk17安装包官网下载地址:https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.deb 下载完成后运行安装包:jdk-17_linux-x64_bin.deb点击安装后,输入当前用户密码验证即可自动安装安装成功后显示如下界面jdk安装路径为:/usr/lib/jvm配置环境变量:使用命令打开环境变量配置文件: sudo vi /etc/environ..原创 2022-03-31 15:49:57 · 1761 阅读 · 0 评论 -
从java.util.ConcurrentModificationException看静态代码块中的坑
最近学习时编写demo代码出现异常,发现代码中的一个坑,再次记录一下,先贴代码:public class ComponentScanner { public static void main(String[] args) throws Exception { } static{ try { System.out.println("ComponentScanner.enclosing_method(1)...原创 2022-03-12 15:33:50 · 875 阅读 · 0 评论