自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 CompletionService和ExecutorCompletionService详解:代码执行过程

一、CompletionService接口定义了一组任务管理接口:submit() - 提交任务take() - 获取任务结果poll() - 获取任务结果二、ExecutorCompletionService类是CompletionService接口的实现ExecutorCompletionService内部管理者一个已完成任务的阻塞队列ExecutorCompletionSe...

2020-04-21 11:44:11 478

原创 java Unsafe魔法类介绍

Java魔法类:sun.misc.UnsafeUnsafe类在jdk 源码的多个类中用到,这个类的提供了一些绕开JVM的更底层功能,基于它的实现可以提高效率。但是,它是一把双刃剑:正如它的名字所预示的那样,它是Unsafe的,它所分配的内存需要手动free(不被GC回收)。Unsafe类,提供了JNI某些功能的简单替代:确保高效性的同时,使事情变得更简单。这篇文章主要是以下文章的整理、翻译。...

2020-04-17 15:10:12 228

原创 Dubbo负载均衡策略底层实现

一 负载均衡介绍1.1:负载均衡简介以下是wikipedia对负载均衡的定义: 负载均衡改善了跨多个计算资源(例如计算机,计算机集群,网络链接,中央处理单元或磁盘驱动的的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间,并避免任何单个资源的过载。使用具有负载平衡而不是单个组件的多个组件可以通过冗余提高可靠性和可用性。负载平衡通常涉及专用软件或硬件1.2:简单解释 这个概念如何理解呢?通俗点来说假如一个请求从客户端发起,比如(查询订单列表),要选择服务器进行处理,但是我们的集群

2020-11-20 17:53:25 1090

原创 Mac下安装lr、rz

步骤1.安装支持rz和sz命令的lrzsz:brew install lrzsz2.在本地/usr/local/bin/目录下保存iterm2-send-zmodem.sh 和iterm2-recv-zmodem.sh两个脚本下载Shell地址3.设置一下两个脚本的权限,一般 chmod 777 就行了chmod 777 /usr/local/bin/iterm2-*4.设置Iterm2的Tirgger特性: Item2—>Preferences—>Profiles—>

2020-08-13 11:39:33 1817

原创 LeetCode1029两地调度

公司计划面试 2N 人。第 i 人飞往 A 市的费用为 costs[i][0],飞往 B 市的费用为 costs[i][1]。返回将每个人都飞到某座城市的最低费用,要求每个城市都有 N 人抵达。示例:输入:[[10,20],[30,200],[400,50],[30,20]] 输出:110 解释: 第一个人去 A 市,费用为 10。第二个人去 A 市,费用为 30。 第三个人去 B 市,费用为 50。 第四个人去 B 市,费用为 20。最低总费用为 10 + 30 + 50 + 20 = 110.

2020-06-16 10:54:06 942

原创 LeetCode1464

public class LeetCode1464 { public int maxProduct(int[] nums) { Arrays.sort(nums); return (nums[nums.length - 1] - 1) * (nums[nums.length - 2] - 1); } public static int maxProduct2(int[] nums) { int x = 0, y = 0;

2020-06-03 00:14:53 828

原创 LeetCodeReview32I从上到下打印二叉树

public class LeetCodeReview32I { public int[] levelOrder(TreeNode root) { if (root == null){ return new int[0]; } if (root.left == null && root.right == null){ return new int[]{root.val};

2020-06-02 23:53:17 851

原创 LeetCode228

/** * @author Lee * @date 2020-06-01- 20:10 * @Version 1.0 * @Description:给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。 示例 1: * <p> * 输入: [0,1,2,4,5,7] * 输出: ["0->2","4->5","7"] * 解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。 */public class LeetCode228 {

2020-06-01 20:33:21 792

原创 LeetCode674

public class LeetCode674 { // 优化前 public static int findLengthOfLCIS(int[] nums) { if (nums.length < 1){ return 0; } Deque<Integer> stack = new ArrayDeque<>(); int max = Integer.MIN_VALUE;

2020-06-01 19:53:59 819

原创 LeetCode1431糖果问题

public class LeetCode1431 { public List<Boolean> kidsWithCandies(int[] candies, int extraCandies){ List<Boolean> result = new LinkedList<>(); if (candies.length < 1){ return result; } int

2020-06-01 17:41:46 864

原创 LeetCode693交替位二进制数

给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。示例 1:输入: 5输出: True解释:5的二进制数是: 101示例 2:输入: 7输出: False解释:7的二进制数是: 111public class LeetCode693 { public static boolean hasAlternatingBits(int n) { if (n == 1 || n == 0){ retu.

2020-05-31 14:43:07 848

原创 LeetCode84最大距形面积

简单暴力的思路,两个for循环解决问题,时间复杂度n^2public class LeetCode84 { public static int largestRectangleArea2(int[] heights) { int max = 0; for (int i = 0; i < heights.length; i++){ int min = Integer.MAX_VALUE; for (int j =

2020-05-30 20:01:30 1049

原创 LeetCode394字符串解码

给定一个经过编码的字符串,返回它解码后的字符串。编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。你可以认为输入字符串总是有效的;输入字符串中没有额外的空格,且输入的方括号总是符合格式要求的。此外,你可以认为原始数据不包含数字,所有的数字只表示重复的次数 k ,例如不会出现像 3a 或 2[4] 的输入。示例:s = “3[a]2[bc]”, 返回 “aaabcbc”.s = “3[a2[c]]”, .

2020-05-30 17:02:35 874

原创 Mac Idea 不显示External Libraries方案

1. 进入该目录下 cd ~/Library/Preferences/IntelliJIdea2019.1/options2.编辑projectView.xml文件vim projectView.xml <application> <component name="ProjectViewSharedSettings"> <option name="hideEmptyPackages" value="false" /> // 默认为false 改

2020-05-27 16:06:06 1562

原创 LeetCode287寻找重复数

给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。只能使用额外的 O(1) 的空间。时间复杂度小于 O(n2) 。数组中只有一个重复的数字,但它可能不止重复出现一次。首先找重复数,能想到的最简单的就是两个for循环(p.

2020-05-26 18:53:25 878

原创 对比json的优劣(fastjson、jackjson)

转载自 :https://blog.csdn.net/xiaoke815/article/details/52920405一 、各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括commons-beanutils.jar,commons-collections-3.2.jar,commons-lang-2.6.jar,commons-logging-1.1.1.jar,ezmorph-1

2020-05-24 13:05:45 1451

原创 LeetCode面试题 03.05. 栈排序

栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。class SortedStack { Stack<Integer> s; Stack<Integer> back; public SortedStack() { s = new Stack<&gt.

2020-05-17 14:39:02 1015 1

原创 LeetCode451根据字符出现频率排序

给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:“tree”输出:“eert”解释:'e’出现两次,'r’和’t’都只出现一次。因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。示例 2:输入:“cccaaa”输出:“cccaaa”解释:'c’和’a’都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。示例 3:输入:“Aabb”输出:“bbAa”解释.

2020-05-15 16:45:21 995

原创 LeetCode50 Pow(x,n)

class Solution { public double myPow(double x, int n) { if(n == 0){ return 1.0; } if(n < 0){ x = 1.0/x; n = -n; } if(n % 2 == 1){ return x * myPow(x, n - 1);

2020-05-14 14:33:17 807

原创 LeetCode70爬楼梯

public class LeetCode70 { public int climbStairs(int n) { int[] f = new int[n + 1]; int i = 0; while(i <= n){ if(i == 0 || i == 1){ f[i++] = 1; }else{ f[i] = f[i - 1] +

2020-05-13 19:24:38 778

原创 LeetCode24俩俩交连表中的节点交换问题

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.分析:交换节点大家都比较会,所以此题的关键是两个组合之间衔接的问题,1组合和2组合之间的衔接通过的是一组合的第一个节点链接二组合第二个节点,故需要一个prev节点保存上一组合的第一个节点的引用。代码如下:class Solution { public ListN.

2020-05-13 19:00:07 879

原创 LeetCode107从底部按层遍历二叉树

public List<List<Integer>> levelOrderBottom(TreeNode root) { List<List<Integer>> result = new LinkedList<>(); if (root == null){ return result; } Queue<TreeNode> queue = new Li

2020-05-13 09:56:52 898

原创 LeetCode205

题目描述(简单难度)判断两个字符串是否是同构的。解法一题目描述中已经很详细了,两个字符串同构的含义就是字符串 s 可以唯一的映射到 t ,同时 t 也可以唯一的映射到 s 。举个具体的例子。egg 和 add 同构,就意味着下边的映射成立e -> ag -> d也就是将 egg 的 e 换成 a, g 换成 d, 就变成了 add同时倒过来也成立a -> ed -> g也就是将 add 的 a 换成 e, d 换成 g, 就变成了 eggfoo 和 bar

2020-05-12 16:10:40 181

原创 LeetCode61旋转链表

给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例 2:输入: 0->1->2->N.

2020-05-12 13:24:16 85

原创 LeetCode234回文连表

if (head == null ){ return true; } if (head.next == null){ return true; } Stack<ListNode> stack = new Stack<>(); ListNode slow = head; ListNode fast = head; while (

2020-05-08 23:36:32 81

原创 LeetCode328奇偶链表问题

奇偶链表给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。示例 1:输入: 1->2->3->4->5->NULL输出: 1->3->5->2->4->NULL示例 2:输入: 2->1->3->5->6-..

2020-05-08 18:29:34 175

原创 LeetCode221最大正方形

public static int maximalSquare(char[][] matrix) { int area = 0; if (matrix.length < 1 || matrix[0].length < 1) { return area; } int max = 0; ...

2020-05-08 14:41:10 156

原创 LeetCode19 删除链表的倒数第N个节点

给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。public class LeetCode19 { public ListNode removeNthFrom...

2020-05-07 16:47:18 95

原创 LeetCode160. 相交链表之对的人即使错过也终会相逢

题目地址编写一个程序,找到两个单链表相交的起始节点。首先是常规解法:public ListNode getIntersectionNode(ListNode headA, ListNode headB) { Set<ListNode> set = new HashSet<>(); while (headA!= null || hea...

2020-05-07 16:26:18 111

原创 Spring初始化、销毁Bean的四种方式

第一种是实现@Configurationpublic class Cat implements InitializingBean, DisposableBean { /** * Invoked by the containing {@code BeanFactory} on destruction of a bean. * * @throws Exception in case ...

2020-05-06 14:41:36 345

原创 LeetCode55跳跃游戏问题

写了两种解法,个人想法是首先想到一种思路去解决问题,然后优化。做题的本质是解决问题,解决不了问题,思路再好也没什么卵用。给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 ...

2020-05-04 13:43:45 214

原创 LeetCode27移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2...

2020-04-24 11:38:46 95

原创 LeetCode209最小连续数组问题

题目描述:给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3]输出: 2解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。多的就不提了直接上代码public static int minSubArrayLe...

2020-04-24 11:03:05 200

原创 LeetCode54螺旋矩阵问题解法

public class LeetCode54 { public static List<Integer> spiralOrder(int[][] matrix) { List ans = new ArrayList(); if (matrix.length == 0) return ans; int r...

2020-04-22 23:38:04 123

原创 LeetCode118杨辉三角问题

class Solution { public List<List<Integer>> generate(int numRows) { List<List<Integer>> result = new LinkedList<>(); if (numRows == 0) { r...

2020-04-22 23:36:03 113

原创 Mysql key_len计算

Explain之key_len长度计算以前我很好奇通过执行计划Explain去分析SQL的时候看到的key_len值有时很小,有时看到很大,那时也不知道它是怎么算出来的,现在终于搞懂了,嘻。因为网上对key_len的长度的计算的资料也很少,官网也如此。我相信还有很多人不关心key_len的值是怎么来的,或者key_len有什么用的。key_len表示索引使用的字节数,根据这个值,就可以判断索引使...

2020-04-17 13:20:35 453

转载 Java1.8 HashMap和ConcurrentHashMap源码解析

HashMap大家再熟悉不过了,它是java专门用来存储K-V类型的集合框架,它是线程不安全的,同时它的底层原理也是面试必问,但是ConcurrentHashMap大家对他了解多少呢?大家可能只知道它是线程安全的,但它的底层是怎么实现的呢?它在HashMap的基础之上做了什么优化呢?我今天就带大家来了解一下HashMap与ConcurrentHashMap的不同之处。1、HashMap初始化时。...

2020-04-17 08:27:09 153

原创 Java操作符使用规则

|=关于 |= 运算符:|= 运算符和 += 这一类的运算符一样,拆解开就是 a = a | b;代码如下:public static strictfp void main(String[] args) { int a = 5; // 0000 0101 int b = 3; // 0000 0011 a |= b; // 0000 00111 System.out...

2020-04-15 22:22:25 122

原创 解决BUG的思路分析----个人理解

根据“现象“找到BUG展示所调用的方法判断该方法的作用,是该BUG所展示数据的生产方,还是加工方(基于原数据进行加工处理然后展示)如果是生产方,在方法体内检查判断各参数变量是否使用正确,是否存在误传、错传的地方;判断逻辑处理是否和PRD保持一致;逻辑处理是否满足各种可能性。如果是展示方,在引用数据的参数时是否用错,方法调用错的情况,如果没有,可能是生产数据的问题,追上级,即返回3...

2020-04-15 19:34:19 361

原创 Linux基本命令

目录结构系统启动必须:**/boot:**存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。/etc:存放所有的系统需要的配置文件和**子目录列表,**更改目录下的文件可能会导致系统不能启动。/lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。/sys: 这是linux2.6内核的一个...

2020-04-15 19:25:04 93

空空如也

空空如也

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

TA关注的人

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