Java
人之初fzs
纸上得来终觉浅,绝知此事要躬行
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CPU使用过高定位
目录一、环境准备问题代码 Demo.java编译运行效果二、问题定位1.top 命令查看cpu使用率2.ps / jps 查看对应进程信息3.定位具体问题线程一、环境准备问题代码 Demo.javaimport java.util.UUID;public class Demo { public static void main(String[] args) { while (true) { System.ou原创 2020-11-24 16:50:29 · 237 阅读 · 1 评论 -
查看对象大小
maven坐标 <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.10</version> </dependency>代码 public stat...原创 2020-10-27 14:54:33 · 359 阅读 · 0 评论 -
Java 基本类型所占大小
public static void main(String[] args) { System.out.println("byte size = " + Byte.BYTES + " max = " + Byte.MAX_VALUE + " min = " + Byte.MIN_VALUE); System.out.println("short size = " + Short.BYTES + " max = " + Short.MAX_VALUE + " m...原创 2020-10-24 19:38:22 · 152 阅读 · 0 评论 -
Java 命令
1. 查看默认参数java -XX:+PrintCommandLineFlags -version-XX:InitialHeapSize=268435456 -XX:MaxHeapSize=4294967296 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGCjava version "1.8.0_171"Java(TM) SE Ru...原创 2020-10-24 19:15:50 · 180 阅读 · 0 评论 -
线程安全计数器
public class Main { private static final ReentrantLock lock = new ReentrantLock(); public static void main(String[] args) throws InterruptedException { AtomicInteger result = new AtomicInteger(0); AtomicInteger atomicVar = ...原创 2020-10-24 15:18:37 · 171 阅读 · 0 评论 -
hashCode() & equals() 方法使用场景
案例一没有重写hashCode 和equals()public class User { private String userName; private Integer age; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName;...原创 2020-10-20 12:39:14 · 366 阅读 · 0 评论 -
java 反编译 枚举类
目录一、Java枚举类源代码二、编译三、简单反编译1.命令2.反编译结果四、复杂反编译1.命令2.结果五、Enum 源码一、Java枚举类源代码package com.fanzs.enums;public enum DateTypeEnum { YEAR, MONTH, DAY;}二、编译javac DateTypeEnum.java三、简单反编译1.命令javap -p DateTypeEnum.class2.反编译结原创 2020-10-03 15:09:34 · 1019 阅读 · 0 评论 -
java 数组转集合/集合转数组
public static void main(String[] args) { Queue<Integer> queue = new PriorityQueue<Integer>((x, y) -> x - y); queue.offer(1); queue.offer(3); queue.offer(2); System.out.println(queue); fo...原创 2020-08-15 18:10:36 · 374 阅读 · 0 评论 -
剑指 Offer 51. 数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5限制:0 <= 数组长度 <= 50000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。归并排序,学...原创 2020-08-15 17:24:43 · 133 阅读 · 0 评论 -
剑指 Offer 35. 复杂链表的复制
请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]示例 3:输入:he.原创 2020-07-30 23:55:48 · 172 阅读 · 0 评论 -
Nim 游戏
你和你的朋友,两个人一起玩Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉1 - 3 块石头。 拿掉最后一块石头的人就是获胜者。你作为先手。你们是聪明人,每一步都是最优解。 编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。示例:输入: 4输出: false 解释: 如果堆中有 4 块石头,那么你永远不会赢得比赛; 因为无论你拿走 1 块、2 块 还是 3 块石头,最后一块石头总是会被你的朋友拿走class Solution { public ...原创 2020-07-26 19:19:58 · 270 阅读 · 0 评论 -
二叉树中的最大路径和
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 6示例2:输入: [-10,9,20,null,null,15,7] -10 / \ 9 20 / \ 15 7输出: 42递归/** * Definition for ...原创 2020-07-26 14:59:54 · 212 阅读 · 0 评论 -
329. 矩阵中的最长递增路径
给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums =[ [9,9,4], [6,6,8], [2,1,1]]输出: 4解释: 最长递增路径为[1, 2, 6, 9]。示例 2:输入: nums =[ [3,4,5], [3,2,6], [2,2,1]]输出: 4解释: 最长递增路径是[3, 4, 5, 6]...原创 2020-07-26 14:15:59 · 166 阅读 · 0 评论 -
求波峰波谷最大值
给一个数组,求它的最大的波峰波谷的落差。举例:数组 A={2, 3, 6, 5, 7, 9}, 其中 6 和 9 被看做是波峰,2和5则是波谷。D[2, 6]=4, D[6,5]=1, D=[5,9]=4. 则Thus, MaxD(A)=4. public static void main(String[] args) { int[] nums = new int[]{1, 2, 3, 4, 5, 7}; System.out.println(...原创 2020-07-23 12:48:12 · 1321 阅读 · 0 评论 -
cglib 使用
1.目标类public class CglibDao { public CglibDao() { select(); } public void update() { System.out.println("CglibDao.update()"); } public void select() { System.out.println("CglibDao.select()"); }}...原创 2020-07-07 13:14:05 · 422 阅读 · 0 评论 -
23. 合并K个排序链表
合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-k-sorted-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。1.递归...原创 2020-07-05 22:49:58 · 125 阅读 · 0 评论 -
236. 二叉树的最近公共祖先--dfs+栈(非递归)
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5...原创 2020-07-05 11:23:17 · 677 阅读 · 0 评论 -
面试题-多米诺骨牌
一行中有N张多米诺骨牌,我们将每张多米诺骨牌垂直竖立。在开始时,我们同时把一些多米诺骨牌向左或向右推。每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌。同样地,倒向右边的多米诺骨牌也会推动竖立在其右侧的相邻多米诺骨牌。如果同时有多米诺骨牌落在一张垂直竖立的多米诺骨牌的两边,由于受力平衡, 该骨牌仍然保持不变。就这个问题而言,我们会认为正在下降的多米诺骨牌不会对其它正在下降或已经下降的多米诺骨牌施加额外的力。给定表示初始状态的字符串 "S" 。如果第 i 张多米诺骨牌..原创 2020-06-30 22:21:37 · 970 阅读 · 0 评论 -
创建Spring项目
idea 选择maven项目创建1.测试类public interface MessageService { String getMessage();}public class MessageServiceImpl implements MessageService { public String getMessage() { return "hello spring"; }}2.pom.xml 引入Spring jar包...原创 2020-06-28 10:43:50 · 235 阅读 · 0 评论 -
42. 接雨水
1.暴力class Solution { public int trap(int[] height) { if(height == null || height.length <3){ return 0; } int area = 0; for(int i=1;i<height.length;++i){ int leftHeight = height[0], rightH原创 2020-06-26 15:52:18 · 154 阅读 · 0 评论 -
15. 三数之和
给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]class Solution { public List<List<Integer>> ...原创 2020-06-25 23:27:35 · 168 阅读 · 0 评论 -
N数之和
两数之和class Solution { public int[] twoSum(int[] nums, int target) { int[] result = new int[2]; Map<Integer, Integer> map = new HashMap(); for(int i=0;i<nums.length;++i){ if(map.containsKey(target - nums[i.原创 2020-06-17 00:38:15 · 210 阅读 · 0 评论 -
1054. 距离相等的条形码
在一个仓库里,有一排条形码,其中第 i 个条形码为barcodes[i]。请你重新排列这些条形码,使其中两个相邻的条形码 不能 相等。 你可以返回任何满足该要求的答案,此题保证存在答案。示例 1:输入:[1,1,1,2,2,2]输出:[2,1,2,1,2,1]示例 2:输入:[1,1,1,1,2,2,3,3]输出:[1,3,1,3,2,1,2,1]提示:1...原创 2020-03-10 21:34:16 · 187 阅读 · 0 评论 -
543. 二叉树的直径
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回3, 它的长度是路径 [4,2,1,3] 或者[5,2,1,3]。注意:两结点之间的路径长度是以它们...原创 2020-03-10 21:14:06 · 142 阅读 · 0 评论 -
面试题 17.14. 最小K个数
设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。示例:输入: arr = [1,3,5,7,2,4,6,8], k = 4输出: [1,2,3,4]提示:0 <= len(arr) <= 1000000 <= k <= min(100000, len(arr))class Solution { public int[] sm...原创 2020-03-08 12:52:49 · 248 阅读 · 0 评论 -
313. 超级丑数
编写一段程序来查找第 n 个超级丑数。超级丑数是指其所有质因数都是长度为k的质数列表primes中的正整数。示例:输入: n = 12, primes = [2,7,13,19]输出: 32解释: 给定长度为 4 的质数列表 primes = [2,7,13,19],前 12 个超级丑数序列为:[1,2,4,7,8,13,14,16,19,26,28,32] 。说明:...原创 2020-03-07 00:49:44 · 124 阅读 · 0 评论 -
面试题57 - II. 和为s的连续正数序列
输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]限制:1 <= target...原创 2020-03-06 21:30:04 · 197 阅读 · 0 评论 -
994. 腐烂的橘子
在给定的网格中,每个单元格可以有以下三个值之一:值0代表空单元格;值1代表新鲜橘子;值2代表腐烂的橘子。每分钟,任何与腐烂的橘子(在 4 个正方向上)相邻的新鲜橘子都会腐烂。返回直到单元格中没有新鲜橘子为止所必须经过的最小分钟数。如果不可能,返回-1。示例 1:输入:[[2,1,1],[1,1,0],[0,1,1]]输出:4示例 2:输入:[[2,...原创 2020-03-05 00:04:41 · 131 阅读 · 0 评论 -
面试题 17.09. 第 k 个数
些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。示例 1:输入: k = 5输出: 9class Solution { public int getKthMagicNumber(int k) { if(k<2){ ...原创 2020-03-01 23:30:42 · 2091 阅读 · 0 评论 -
225. 用队列实现栈
使用队列实现栈的下列操作:push(x) -- 元素 x 入栈pop() -- 移除栈顶元素top() -- 获取栈顶元素empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back, peek/pop from front, size, 和is empty这些操作是合法的。你所使用的语言也许不支持队列。你可以使用 list 或者...原创 2020-03-01 23:18:38 · 118 阅读 · 0 评论 -
373. 查找和最小的K对数字
给定两个以升序排列的整形数组 nums1 和 nums2, 以及一个整数 k。定义一对值(u,v),其中第一个元素来自nums1,第二个元素来自 nums2。找到和最小的 k 对数字(u1,v1), (u2,v2) ... (uk,vk)。示例 1:输入: nums1 = [1,7,11], nums2 = [2,4,6], k = 3输出: [1,2],[1,4],[1,...原创 2020-02-27 00:14:12 · 117 阅读 · 0 评论 -
767. 重构字符串
给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。示例1:输入: S = "aab"输出: "aba"示例 2:输入: S = "aaab"输出: ""注意:S 只包含小写字母并且长度在[1, 500]区间内。class Solution { public String reo...原创 2020-02-26 10:03:02 · 154 阅读 · 0 评论 -
692. 前K个高频单词
给一非空的单词列表,返回前k个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: ["i", "love", "leetcode", "i", "love", "coding"], k = 2输出: ["i", "love"]解析: "i" 和 "love" 为出现次数最多的两个单词,均为2次。 ...原创 2020-02-18 21:03:09 · 177 阅读 · 0 评论 -
973. 最接近原点的 K 个点
我们有一个由平面上的点组成的列表 points。需要从中找出 K 个距离原点 (0, 0) 最近的点。(这里,平面上两点之间的距离是欧几里德距离。)你可以按任何顺序返回答案。除了点坐标的顺序之外,答案确保是唯一的。示例 1:输入:points = [[1,3],[-2,2]], K = 1输出:[[-2,2]]解释:(1, 3) 和原点之间的距离为 sqrt(10),...原创 2020-02-18 00:22:04 · 187 阅读 · 0 评论 -
PriorityQueue 优先队列学习笔记
刷题时很多地方用到优先队列 PriorityQueue ,决定开一篇笔记梳理一下自己的理解一、简介二、用法三、原理四、源码分析原创 2020-02-15 22:00:14 · 177 阅读 · 0 评论 -
378. 有序矩阵中第K小的元素
给定一个n x n矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。请注意,它是排序后的第k小元素,而不是第k个元素。示例:matrix = [ [ 1, 5, 9], [10, 11, 13], [12, 13, 15]],k = 8,返回 13。说明:你可以假设 k 的值永远是有效的, 1 ≤ k ≤ n2。class Sol...原创 2020-02-15 21:56:49 · 134 阅读 · 0 评论 -
451. 根据字符出现频率排序
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2:输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是有效的答案。...原创 2020-02-12 22:30:38 · 149 阅读 · 0 评论 -
1003. 检查替换后的词是否有效
给定有效字符串"abc"。对于任何有效的字符串 V,我们可以将 V 分成两个部分 X 和 Y,使得 X + Y(X 与 Y 连接)等于 V。(X或 Y 可以为空。)那么,X + "abc" + Y 也同样是有效的。例如,如果 S = "abc",则有效字符串的示例是:"abc","aabcbc","abcabc","abcabcababcc"。无效字符串的示例是:"abccba","a...原创 2020-02-11 21:30:49 · 150 阅读 · 0 评论 -
1019. 链表中的下一个更大节点
给出一个以头节点head作为第一个节点的链表。链表中的节点分别编号为:node_1, node_2, node_3, ... 。每个节点都可能有下一个更大值(next larger value):对于node_i,如果其next_larger(node_i)是node_j.val,那么就有j > i且node_j.val > node_i.val,而j是可能...原创 2020-02-10 22:18:28 · 300 阅读 · 1 评论 -
901. 股票价格跨度
编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]。示例:输入:["StockSpa...原创 2020-01-28 15:43:05 · 202 阅读 · 0 评论
分享