自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

渣渣

一只菜鸟

  • 博客(58)
  • 资源 (3)
  • 收藏
  • 关注

原创 LeetCode 117. 填充每个节点的下一个右侧节点指针 II

思路:先查看左右子树是否都不为空,直接左子.next —>右子左不为空,但右为空,无法直接赋值,借助getNext递归函数,传入父节点的next。右不为空(此时无论左是否为空不受影响),无法直接赋值,借助getNext递归函数,传入父节点的next。至于为什么先递归root.right,原理如下: // 先确保 root.right 下的节点的已完全连接,因 root.left 下的节点的连接 // 需要 root.left.next ...

2020-09-28 19:53:21 114

原创 Java的native方法

一. 什么是Native Method简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。"A native method is a Java method whose implementation is provide...

2020-09-23 08:22:58 1195

原创 Java中基本数据类型和包装类型的区别

1、包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址;基本类型不是2、包装类型是引用的传递;基本类型是值的传递3、声明方式不同:基本数据类型不需要new关键字;包装类型需要new在堆内存中进行new来分配内存空间4、存储位置不同:基本数据类型直接将值保存在值栈中;包装类型是把对象放在堆中,然后通过对象的引用来调用他们5、初始值不同:...

2020-09-23 07:59:14 6067 1

原创 LeetCode 968. 监控二叉树

思路:将节点分为三种状态,0表示该节点安了监控,1表示该节点能被监控但没安监控,2表示该节点不能被监控。dfs递归,若左右节点都不能被监控,num+1,返回表示该左右节点的父节点安了监控,(只能父节点安监控才能保证两子节点被监控)。若左或右子节点安了监控,返回表示该父节点能被监控,但没有安监控。否则。返回表示该节点没有被监控。int num = 0; public int minCameraCover(TreeNode root) { if(root=...

2020-09-22 22:14:06 227

原创 LeetCode 59. 螺旋矩阵 II

和54.螺旋矩阵类似public static int[][] generateMatrix(int n) { int[][] a = new int[n][n]; if(n<1)return a; int up=0,down=n-1,left=0,right=n-1; int num = 1; int len = n*n; while (true){ for (int...

2020-09-22 20:20:49 100

原创 LeetCode 55. 跳跃游戏

思路:从后向前遍历index从(len - 1 -1)到 0,默认跳跃距离为dis=1;当前元素能够到达最后位置,则截掉最后一位;不能到达则dis+1,继续向前遍历,直到找到能到达的点,dis重置1。遍历最后找不到则返回false。public static boolean canJump(int[] nums) { boolean r = true; int dis = 1; for (int i = nums.length - 1 - 1;...

2020-09-21 21:39:47 101

原创 LeetCode 538. 把二叉搜索树转换为累加树

思路:ST的中序遍历就是从小到大,那么反过来就是从大到小,然后通过num累加int num =0; public TreeNode convertBST(TreeNode root) { if(root!=null){ convertBST(root.r); root.val+=num; num = root.val; convertBST(root.l); ...

2020-09-21 21:24:36 114

原创 Java之 == 和 equals() 区别 hashCode() 解析

https://blog.csdn.net/qq_21688757/article/details/53067814https://wenwen.sogou.com/z/q906756704.htm

2020-09-21 20:21:08 114

原创 int和Integer区别

总结:*初始值不同,Integer是null,int是0。*泛型支持不一样,泛型支持Integer不支持int*Integer对象继承Object 可调用方法,int是基本数据类型无方法调用。*Integer属于Object类,对象存在堆中,被引用值存栈中。int存存栈中。* Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值延伸:1.由于Integer变量实际是对一个Integer对象的引用,所以两个...

2020-09-21 11:43:09 218

原创 drop、truncate和delete的区别

转自:https://blog.csdn.net/ws0513/article/details/49980547https://zhidao.baidu.com/question/313665822.html总结如下:drop【droptabletable_name】或【drop table if exists table_name】 删除表。表占用空间全部释放。delete【deletefromtable_name】可加wherelimit等部分删除记录,若不加w...

2020-09-21 10:49:04 144

原创 LeetCode 54. 螺旋矩阵

思路:先确定四个方位的范围,updownlr逐次遍历正方形的四条边注意:if(matrix.length==0 || matrix[0].length==0)return new ArrayList<>();代码如下:public static List<Integer> spiralOrder(int[][] matrix) { List<Integer> result = new ArrayList<>(...

2020-09-20 23:17:52 119

原创 LeetCode 78. 子集

思路:遍历当前数组,然后依次取List<List<Integer>> ll里的集合加上当前数组的数组成新的集合List<Integer> l ,再添加到结果集里。public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> ll = new ArrayList<>(); ll.add(new ...

2020-09-20 22:17:00 118

原创 LeetCode 50. Pow(x, n)

时间复杂度是N的话,易超时,下面是时间复杂度为logNpublic static double myPow(double x, int n) { double r = 1.0; for (int i = n; i != 0 ; i/=2) { if(i%2!=0){ r*=x; } x*=x; } return n < ...

2020-09-19 22:59:32 249

原创 LeetCode 404. 左叶子之和

非递归public static int sumOfLeftLeaves(TreeNode root) { int sum = 0; if(root==null)return 0; Stack<TreeNode> stack = new Stack<>(); while (root!=null || !stack.isEmpty()){ while (root!=null){ ..

2020-09-19 22:35:40 84

原创 常见Mysql的慢查询优化方式

转自:https://blog.csdn.net/qq_35571554/article/details/82800463这篇文章主要是就在公司实习的时候,对SQL优化工作作出的一些整理。 在公司实习的时候,导师分配了SQL慢查询优化的任务,任务是这样的:每周从平台中导出生产数据库的慢查询文件进行分析。进行SQL优化的手段也主要是修改SQL写法,或者新增索引。 现在从记录项目中的一点点做起。 (1)数据库中设置SQL慢查询 一、第一步.开启mysql慢查询...

2020-09-19 20:36:36 306

原创 LeetCode 114. 二叉树展开为链表

思路:先利用DFS的思路找到最左子节点,然后回到其父节点,把其父节点和右子节点断开,将原左子结点连上父节点的右子节点上,然后再把原右子节点连到新右子节点的右子节点上,然后再回到上一父节点做相同操作。public static void flatten(TreeNode root) { if(root!=null){ flatten(root.l); flatten(root.r); TreeNode tmp =..

2020-09-19 19:29:10 428

原创 LeetCode 845. 数组中的最长山脉

思路:先找到中间大于两侧的三个相邻值,然后左侧逐次比较,右侧同理public static int longestMountain(int[] A) { if(A.length < 3)return 0; int result = 0; int l = 0,r =0; for (int i = 1; i < A.length - 1; i++) { if(A[i] > A[i-1] &amp...

2020-09-18 14:29:08 78

原创 Java之Set接口

转自:https://www.cnblogs.com/chanshuyi/p/4468470.html一、Set接口Set 接口与 List 接口相比没有那么多操作方法,比如:1、List 接口能直接设置或获取某个元素的值,而Set接口不能。2、List 接口能直接在指定位置删除、增加元素,而Set接口不能。3、List 接口有 listIterator 方法,可以获得 ListIterator 对象,而 Set 接口不能。Set 只能通过 iterator 迭代的方式获取元素。对比

2020-09-17 23:05:20 293

原创 LeetCode 48. 旋转图像

方法一:分别定义出四个节点,依次交换public void rotate(int[][] matrix) { if(matrix.length == 0 || matrix[0].length == 0)return; int len = matrix.length - 1; int tmp = matrix.length - 1; for (int i = 0; i < tmp; i++) { for (i...

2020-09-17 19:49:28 141

原创 LeetCode 47. 全排列 II

在全排列I基础上判断集合中是否存在重复,添加不重复元素即可。方法一: 利用Set,简单效率低public static List<List<Integer>> permuteUnique(int[] nums) { Arrays.sort(nums); Set<List<Integer>> ll = new HashSet<>(); boolean[] v = new boolean[n..

2020-09-17 16:32:41 188

原创 LeetCode 46. 全排列

public static List<List<Integer>> permute(int[] nums) { List<List<Integer>> ll = new ArrayList<>(); List<Integer> l = new ArrayList<>(); boolean [] visit = new boolean[nums.length]; ...

2020-09-15 23:00:12 111

原创 LeetCode 36. 有效的数独

注释1:每3行为一组 i/3表示第几组 又*3表示每块是3*3 每3列为一组 j/3表示是第几组将数据块分为0 1 23 4 56 7 8 块blockIndex表示第几块public boolean isValidSudoku(char[][] board) { //存储每一行 出现的数字 boolean [][] r = new boolean[9][9]; //存储每一列 出现的数字 boolean []...

2020-09-14 22:58:23 264

原创 finalize作用

转自:https://blog.csdn.net/a4171175/article/details/90749839finalize()是Object中的方法,当垃圾回收器将要回收对象所占内存之前被调用,即当一个对象被虚拟机宣告死亡时会先调用它finalize()方法,让此对象处理它生前的最后事情(这个对象可以趁这个时机挣脱死亡的命运)。要明白这个问题,先看一下虚拟机是如何判断一个对象该死的。判定死亡"GC ROOTS"定义:GC管理的主要区域是Java堆,一般情况下只针对堆进行垃圾回收。.

2020-09-14 08:00:11 4446 1

原创 LeetCode 33. 搜索旋转排序数组

思路:如果中间的数小于最右边的数,则右半段是有序的,若中间数大于最右边数,则左半段是有序的,我们只要在有序的半段里用首尾两个数组来判断目标值是否在这一区域内,这样就可以确定保留哪半边了public static int search(int[] nums, int target) { if(nums == null || nums.length == 0)return -1; int l = 0; int r = nums.length-1; ..

2020-09-13 22:49:00 69

原创 LeetCode 29. 两数相除

/** * 解题思路:这题是除法,所以先普及下除法术语 * 商,公式是:(被除数-余数)÷除数=商,记作:被除数÷除数=商...余数,是一种数学术语。 * 在一个除法算式里,被除数、余数、除数和商的关系为:(被除数-余数)÷除数=商,记作:被除数÷除数=商...余数, * 进而推导得出:商×除数+余数=被除数。 * * 要求商,我们首先想到的是减法,能被减多少次,那么商就为多少,但是明显减法的效率太低 * * ...

2020-09-13 20:56:27 121

原创 LeetCode 79. 单词搜索

public static boolean exist(char[][] board, String word) { if(board.length < 1 || board[0].length < 1 )return false; for (int i = 0; i < board.length; i++) { for (int j = 0; j < board[i].length; j++) { ...

2020-09-13 20:12:18 102

原创 Java动态代理与静态代理

https://blog.csdn.net/mulinsen77/article/details/84730087https://www.cnblogs.com/cC-Zhou/p/9525638.htmlAOP的原理就是动态代理机制。RPC框架也是实现了AOP机制。静态代理:由程序员创建或工具生成代理类的源码,再编译代理类,即代理类和委托类的关系再程序运行前就已经存在。动态代理:在运行期间使用动态生成字节码形式,动态创建代理类。使用的工具有 jdkproxy、cglibproxy 等。

2020-09-13 15:26:45 129

原创 Spring Bean的生命周期(非常详细)

转自:https://www.cnblogs.com/zrtqsk/p/3735273.htmlSpring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean的生命周期。而实际上BeanFactory也是差不多的,只不过处理器需要手动注册。一、生命周期流程图:  Spring Bean的完

2020-09-13 12:49:57 500

原创 操作系统面试题

转自:https://blog.csdn.net/NuanShuTT/article/details/107908519什么是进程?进程就是正在执行的程序,是操作系统资源分配的基本单位。一般来说,进程包含指令、数据和PCB。延伸问题:孤儿进程和僵尸进程有什么区别?孤儿进程就是说一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。孤儿进程将被 init 进程(进程ID为1的进程)所收养,并由 init 进程对它们完成状态收集工作。因为孤儿进程会被 init 进程收养,

2020-09-13 11:15:35 303

原创 LeetCode24. 两两交换链表中的节点

public ListNode swapPairs(ListNode head) { if(head == null || head.next == null)return head; ListNode one = head; ListNode two = one.next; ListNode tmp = two.next; two.next = one; one.next = swapPai...

2020-09-12 23:06:11 99

原创 LeetCode 22. 括号生成

方法一:c1记录左括号数据c2记录右括号数量public static List<String> generateParenthesis(int n) { List<String> list = new ArrayList<>(); dfs(list,"",0,0,n); return list; } private static void dfs(List<String> l..

2020-09-12 22:28:19 150

原创 LeetCode 637. 二叉树的层平均值

方法一:if(root==null)return null; List<Double> list = new ArrayList<>(); Queue<TreeNode> queue = new LinkedList<>(); int len = 0; queue.add(root); while (!queue.isEmpty()){ do...

2020-09-12 21:00:57 278

原创 字符串匹配BF/RK/BM/KMP算法

主串长度m,匹配串(模式串)长度n。一、BF强制算法比较,最容易想到的,时间复杂度O(m*n)二、RK计算出匹配串的哈希值,遍历主串,求每次对应位置相同长度的子串哈希值,比较两者是否相同。若不相同,则肯定不匹配,主串调至下一位。若相同,由于哈希可能碰撞,还需逐个字符比较。时间复杂度O(m)三、BM①,模式串与主串左对齐,从后向前比较,发现主串 T与模式串G不相等。再从模式串中此位置开始向前找到字符T位置。②,模式串字符T位置和主串T位置对齐后,再从后向前匹配,发现直到

2020-09-12 15:13:55 213

原创 LeetCode 19. 删除链表的倒数第N个节点

思路:快慢指针,快指针先走n步,然后快慢一起走,直到快指针走到最后,要注意的是可能是要删除第一个节点,这个时候可以直接返回head -> nextpublic ListNode removeNthFromEnd(ListNode head, int n) { if(head==null | head.next==null) return null; ListNode k = head; ListNode m = head; ...

2020-09-11 23:21:26 139

原创 LeetCode15. 三数之和

思路:这道题让我们求三数之和,比之前那道Two Sum要复杂一些,博主考虑过先 fix 一个数,然后另外两个数使用Two Sum那种 HashMap 的解法,但是会有重复结果出现,就算使用 TreeSet 来去除重复也不行,会 TLE,看来此题并不是考Two Sum的解法。来分析一下这道题的特点,要找出三个数且和为0,那么除了三个数全是0的情况之外,肯定会有负数和正数,还是要先 fix 一个数,然后去找另外两个数,只要找到两个数且和为第一个 fix 数的相反数就行了,既然另外两个数不能使...

2020-09-11 22:40:16 149

原创 LeetCode 216. 组合总和 III

public List<List<Integer>> combinationSum3(int k, int n) { int [] a = new int[]{1,2,3,4,5,6,7,8,9}; List<List<Integer>> ll = new ArrayList<>(); dfs(k,n,ll,new ArrayList<Integer>(),1); r...

2020-09-11 21:22:19 92

原创 关于group by的用法 原理

转自:https://blog.csdn.net/u014717572/article/details/80687042写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够select * from Table group by id,为什么一定不能是*,而是某一个列或者某个列的聚合函数,group by 多个字段可以怎么去很好的理解呢?不过最后还是转过来了,简单写写吧,大牛们直接略过吧。=========正文开始=========

2020-09-10 22:47:51 427 1

原创 LeetCode 627. 交换工资

#######方法一#####update salary set sex= if(sex='m','f','m');#######方法二#####update salary set sex = case sex when 'm' then 'f' else 'm'end;

2020-09-10 22:14:10 105

原创 LeetCode 6. Z 字形变换

思路:对于n行的, s中的第i个字符:对余数进行判断i%(2n-2) == 0 ----> row0i%(2n-2) == 1 & 2n-2-1 ----> row1i%(2n-2) == 2 & 2n-2-2 ----> row2...i%(2n-2) == n-1 ----> row(n-1)对 k = i%(2n-2)进行判断k<=n-1时候,s[i]就属于第k行 k>n-1时候,s[i]就属于2n-2...

2020-09-10 20:46:25 173

原创 LeetCode-39. 组合总和 I

分析:由于结果数组要求元素有序,所以在一开始便对原数组进行排序。之后调用回溯函数,与求组合那题的不同之处在于,循环里面递归调用回溯函数中的level参数使用i而非i+1,因为题中允许存在重复元素。public static List<List<Integer>> combinationSum2(int[] candidates, int target) { List<List<Integer>> ll = new ArrayL...

2020-09-10 19:44:22 147

xampp-win32-5.6.8-0-VC11-installer.exe

xampp-win32-5.6.8-0-VC11-installer.exe。

2019-07-17

burpsuite_free_v1.7.24.jar

burpsuite_free_v1.7.24.jar。

2019-07-17

jstl standard urlrewritefilter

jstl standard urlrewritefilter jar包。java的开发。。。

2018-03-27

空空如也

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

TA关注的人

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