自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

阳阳的博客

热爱技术,享受生活

  • 博客(281)
  • 资源 (17)
  • 论坛 (1)
  • 收藏
  • 关注

原创 文章汇总

11月份比较忙,基本上没有任何输出,这一篇主要是来汇总之前的输出,之后会持续进行更新。多线程浅谈ThreadLocal ThreadLocal使用不好,小心造成内存泄露! CountDownLatch实现原理 CyclicBarrier实现原理 Semaphore实现原理 JUC基石——Unsafe类 浅探CAS实现原理 浅说Synchronized Synchronized的优化 说说线程池 LongAdder实现原理 谈谈并行流parallelStream 谈谈Ru.

2020-12-01 10:01:14 1256 1

转载 Kubernetes Informer 详解

文章转自于https://www.kubernetes.org.cn/2693.htmlInformer 基础功能Informer 是 Client-go 中的一个核心工具包。在 Kubernetes 源码中,如果 Kubernetes 的某个组件,需要 List/Get Kubernetes 中的 Object,在绝大多 数情况下,会直接使用 Informer 实例中的 Lister()方法(该方法包含 了 Get 和 List 方法),而很少直接请求 Kubernetes API。Informe

2020-12-08 15:19:11 168 1

转载 从零开始实现一个stream流

本文转自java8 Stream的实现原理 (从零开始实现一个stream流)1.Stream 流的介绍1.1 java8 stream介绍  java8新增了stream流的特性,能够让用户以函数式的方式、更为简单的操纵集合等数据结构,并实现了用户无感知的并行计算。1.2从零开始实现一个stream流  相信很多人在使用过java8的streamAPI接口之后,都会对其实现原理感到好奇,但往往在看到jdk的stream源码后却被其复杂的抽象、封装给弄糊涂了,而无法很好的理解其背后的原.

2020-12-03 14:11:51 345

原创 带你一步一步认识跳跃链表

一、链表单链表是一种很常见的数据结构,其进行查找时,需要从头开始遍历,直到查找到指定的值,因此查找的时间复杂度为O(n)。双链表在单链表的基础上,为每个结点增加前驱指针(pre)。那么在查找的时候,可以从两头开始遍历。因此双链表的查询效率高于单链表,不过其实在使用率上,单链表的使用率远远高于双链表。具体原因可以先移步我的另外一篇文章谈谈单链表和双链表...

2020-10-24 15:04:16 959

原创 【leetcode.101】对称二叉树

一、题目描述给定一个二叉树,检查它是否是镜像对称的。例如,二叉树[1,2,2,3,4,4,3] 是对称的。但是下面这个[1,2,2,null,3,null,3] 则不是镜像对称的:进阶:你可以运用递归和迭代两种方法解决这个问题吗?二、思路所谓对称二叉树,即如下图所示:那么,对于任意一对结点p、q,都有这样的性质:p.left.val=q.right.val,p.right.val=q.left.val如果使用递归,我们大可以写出一个判断两个互为镜像位...

2020-10-15 20:04:56 196 2

原创 【leetcode.160】相交链表,很有意思的一道题

一、题目描述编写一个程序,找到两个单链表相交的起始节点。如下面的两个链表

2020-10-13 17:58:20 180

原创 【Mysql】图解左、右、内与全连接

一、左连接二、右连接三、内连接四、外连接

2020-10-10 11:27:35 1492 4

原创 【leetcode.876】链表的中间结点

一、题目描述给定一个带有头结点head的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.n..

2020-10-07 22:01:36 117

转载 【leetcode.191】位1的个数

本文转载自https://leetcode-cn.com/problems/number-of-1-bits/solution/wei-1de-ge-shu-by-leetcode/一、题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’的个数(也被称为汉明重量)。示例 1:输入:00000000000000000000000000001011输出:3解释:输入的二进制串 00000000000000000000000000001011中,共有三位为 ..

2020-10-02 17:14:54 341

原创 HashMap夺命连环问

1、说说HashMap的结构在JDK7时,采用数组+链表结构在JDK8时,采用数组+链表+红黑树的结构,在一定条件下,链表会转化为红黑树。以上图来源于:https://blog.csdn.net/goosson/article/details/810297292、数组和链表的用处是什么数组用来随机查找,能够根据hash值快速定位到Node的位置。链表是用来解决hash冲突的,多个元素定位到同一个Node时,用链表将它们顺序串起来。3、为什么要转红黑树单链表的查询时间复

2020-09-30 17:08:33 2258

原创 【leetcode.3】无重复字符的最长子串

一、题目描述给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入: "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是"wke",所以其长度为 3。请注意,你的答案必须是 子串 的长度,"pwke"是一个子序列...

2020-09-30 11:41:34 869

原创 这样写代码,直接被主管撵出去

一、简化if、else减少if、else判断的分支。当条件简单时,可以直接return一个表达式。优化前: //判断该数是否是正数 public boolean isPositive(int num) { if (num > 0) { return true; } else { return false; } }优化后: //判断该数是否是正数 p

2020-09-29 18:03:37 1636 3

转载 【leetcode.547】朋友圈(形象生动讲解并查集)

本文转载自Union-Find 算法详解今天讲讲 Union-Find 算法,也就是常说的并查集算法,主要是解决图论中「动态连通性」问题的。名词很高端,其实特别好理解,等会解释,另外这个算法的应用都非常有趣。说起这个 Union-Find,应该算是我的「启蒙算法」了,因为《算法4》的开头就介绍了这款算法,可是把我秀翻了,感觉好精妙啊!后来刷了 LeetCode,并查集相关的算法题目都非常有意思,而且《算法4》给的解法竟然还可以进一步优化,只要加一个微小的修改就可以把时间复杂度降到 O(1)。废话

2020-09-28 14:51:56 240

原创 【leetcode.200】岛屿数量

一、题目描述给你一个由'1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:[['1','1','1','1','0'],['1','1','0','1','0'],['1','1','0','0','0'],['0','0','0','0','0']]输出:1示例2:输入:[['1','1','0','...

2020-09-27 19:44:50 155

原创 【leetcode.235】二叉搜索树的最近公共祖先

一、题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:root =[6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出...

2020-09-27 13:52:39 89

原创 【leetcode.106】从中序与后序遍历序列构造二叉树

一、题目描述根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:二、思路思路来源于图解构造二叉树之中序+后序,画得图是真心棒前提解决此问题的关键在于要很熟悉树的各种遍历次序代表的什么,最好能够将图画出来。本题解带你先进行中序遍历和后续遍历二叉树,然后再根据遍历结果将二叉树进行还原。首先,来.

2020-09-25 16:18:23 198

原创 【leetcode.232】用栈实现队列

一、题目描述使用栈实现队列的下列操作:push(x) -- 将一个元素放入队列的尾部。pop() -- 从队列首部移除元素。peek() -- 返回队列首部的元素。empty() -- 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false...

2020-09-24 21:29:30 1036

原创 【leetcode.347】前 K 个高频元素

一、题目描述给定一个非空的整数数组,返回其中出现频率前k高的元素。示例 1:输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]提示:你可以假设给定的k总是合理的,且 1 ≤ k ≤ 数组中不相同的元素的个数。你的算法的时间复杂度必须优于 O(n log n) ,n是数组的大小。题目数据保证答案唯一,换句话说,数组中前 k 个高频元素的集合是唯一的。你可以按任...

2020-09-24 20:47:18 83

原创 【leetcode.226】翻转二叉树

一、题目描述翻转一棵二叉树。示例:二、题目背景Homebrew的作者Howell去面试谷歌惨遭拒绝,因为他不会翻转二叉树,即使谷歌公司90%的工程师都在使用他写的软件。之后LeetCode把这道题纳入了题库,并将难度标记为简单题...我要是会了这道题,那我可以进谷歌啊?当然,把这件事当做一个小故事看看算了。企业拒绝一个人才的原因有很多,我在知乎上看到一些很有意思的回答。如何评价 Homebrew 作者因为不会在白板上翻转二叉树而被谷歌面试拒绝?三、思路在这里放

2020-09-24 16:34:43 152

原创 【leetcode.108】将有序数组转换为二叉搜索树

一、题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:二、思路二叉搜索树,即对于其中任何一个结点node,其左子树上的节点值都小于等于node值,其右子树上的结点都大于等于node值,那么其中序遍历正好就是一个升序数组。题目要求这棵树是一个平衡树,因此树中任意一个节点左右两个子树的高度差不可以超过1。所以我们可以将数组最中间元素或紧靠中间左右两边的元素(即nums[.

2020-09-24 14:02:35 134

原创 【leetcode.617】合并二叉树

一、题目描述给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例1:注意:合并必须从两个树的根节点开始。二、思路使用深度优先策略,遍历两颗二叉树的同一个位置,会出现以下情况两个节点都为null,则合并后的节点也为null两个节点都不为null,则创建一个新的节点,其值为...

2020-09-23 17:38:48 109

原创 【leetcode.559】N叉树的最大深度

一、题目描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个3叉树:我们应返回其最大深度,3。说明:树的深度不会超过1000。 树的节点总不会超过5000。二、思路采用深度优先搜索,递归获取子节点的最大深度,接着更新maxRootDepth即可。该方案的时间复杂度为O(N),N代表节点总数,空间复杂度为O(1)。 public int maxDepth(Node root) { ...

2020-09-23 15:06:15 58

原创 【leetcode.198】打家劫舍

一、题目描述你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。...

2020-09-23 13:50:34 66

原创 【leetcode.77】组合

一、题目描述给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合。示例:输入:n = 4, k = 2输出:[ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4],]二、思路从1、2、3、4中选出两个数 如果已经选了1,则需要在2、3、4中再选出一个数即可 如果已经选了2,则需要在3、4中再选出一个数即可 依次类推,我们可以画出这样的一个树形结构:很明显,...

2020-09-23 00:52:06 63

原创 【leetcode.78】子集

一、题目描述给定一组不含重复元素的整数数组nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[ [3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]二、思路方案1:枚举对于集合{1,2,3}的子集 首先,创建出来一个空集合[],加入到结果集中遍历数组中的元素: 拿到1,对现有的结果集([...

2020-09-22 16:45:46 57

原创 【leetcode.1572】矩阵对角线元素的和

一、题目描述给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。示例1:输入:mat = [[1,2,3], [4,5,6], [7,8,9]]输出:25解释:对角线的和为:1 + 5 + 9 + 3 + 7 = 25请注意,元素 mat[1][1] = 5 只会被计算一次。示例2:输入:mat = [...

2020-09-22 14:43:06 105

原创 【leetcode.1464】数组中两元素的最大乘积

一、题目描述给你一个整数数组 nums,请你选择数组的两个不同下标 i 和 j,使 (nums[i]-1)*(nums[j]-1) 取得最大值。请你计算并返回该式的最大值。示例 1:输入:nums = [3,4,5,2]输出:12解释:如果选择下标 i=1 和 j=2(下标从 0 开始),则可以获得最大值,(nums[1]-1)*(nums[2]-1) = (4-1)*(5-1) = 3*4 = 12 。示例 2:输入:nums = [1,5,4,5]输出:16解释:选择..

2020-09-21 20:32:45 177 1

原创 【leetcode.59】螺旋矩阵 II

一、题目描述给定一个正整数n,生成一个包含 1 到n2所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]二、思路首先画出一个矩阵图,方便理解由二维数组的特性,同一排的x值相等,从左到右y值递增;同一列的y值相等,从上到下x值递增。顺时针旋转,那么走一圈的话,先是从左到右,接着从上到下,然后从右到左,最后从下到上。我们给矩阵指定方向,左边为left,上...

2020-09-21 19:52:31 78

原创 【leetcode.88】合并两个有序数组

一、题目描述给你两个有序整数数组nums1 和 nums2,请你将 nums2 合并到nums1中,使 nums1 成为一个有序数组。说明:初始化nums1 和 nums2 的元素数量分别为m 和 n 。你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存 nums2 中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,...

2020-09-21 18:02:01 99

原创 【leetcode.83】删除排序链表中的重复元素

一、题目描述给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例1:输入: 1->1->2输出: 1->2示例2:输入: 1->1->2->3->3输出: 1->2->3二、思路只要当前节点(currentNode)的值与下一个节点(currentNode.next)的值相同,则将currentNode指向currentNode.next.next。三、代码实现public class Nu..

2020-09-21 16:08:12 58 1

原创 面试官:如何停止一个正在运行的线程?我又懵了

上一篇讲了如何等待子线程运行结束,原文https://blog.csdn.net/qq_33591903/article/details/108496110。本篇讲讲如何终止子线程暴力停止——Stop方法package com.qcy.testStopThread;/** * @author qcy * @create 2020/09/16 09:40:34 */public class Main1 { static class MyThread extends Threa

2020-09-16 16:45:10 475

原创 docker运行ElasticSearch

拉取最新版镜像下载最新版ElasticSearchdocker pull elasticsearch默认会使用latestd的tag拉取最新版本,但是报错了Using default tag: latestError response from daemon: manifest for elasticsearch:latest not found: manifest unknown: manifest unknown大致意思是,找不最新版?what,那我们手动指定版本dock

2020-09-11 17:01:01 1164

原创 你真得懂Thread.join吗?

Thread类中的join方法,用于等待某个线程执行结束。简单示例以下简单的代码,会让主线程等待子线程执行结束再执行。如果去掉t.join(),可能主线程就直接退出了,子线程都来不及执行。package com.qcy.testJoin;/** * @author qcy * @create 2020/09/10 17:17:03 */public class Main { public static void main(String[] args) throws Inte

2020-09-11 10:32:27 3136

原创 面试官:如何让主线程等待所有的子线程执行结束之后再执行?我懵了

使用Thread的join方法package com.qcy.testThreadFinish;/** * @author qcy * @create 2020/09/09 17:05:23 */public class Case1 { public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(() -> {

2020-09-09 17:54:40 1942 4

原创 SpringBoot中的异步调用@Async

如何开启异步调用在SpringBoot中,只需要给方法加上@Async注解,就能将同步方法变为异步调用。首先在启动类上添加@EnableAsync,即开启异步调用。/** * @author qcy */@SpringBootApplication@EnableAsyncpublic class AsyncApplication { public static void main(String[] args) { SpringApplication.run(

2020-09-09 17:52:37 450

原创 什么,你还不会用CompletableFuture?

CompleteFuture

2020-09-08 14:11:01 1713

原创 谈谈Runnable、Future、Callable、FutureTask之间的关系

谈谈Runnable、Future、Callable、FutureTask之间的关系

2020-09-07 15:12:33 453

原创 一致性哈希算法的解析与实现

转载自http://www.zsythink.net/archives/1182,不过在文尾加了对算法的java实现在了解一致性哈希算法之前,最好先了解一下缓存中的一个应用场景,了解了这个应用场景之后,再来理解一致性哈希算法,就容易多了,也更能体现出一致性哈希算法的优点,那么,我们先来描述一下这个经典的分布式缓存的应用场景。场景描述假设,我们有三台缓存服务器,用于缓存图片,我们为这三台缓存服务器编号为0号、1号、2号,现在,有3万张图片需要缓存,我们希望这些图片被均匀的缓存到这3台服务器上,以便

2020-09-01 22:55:20 118

原创 Redis的键过期策略与内存淘汰机制

定时删除惰性删除定期删除

2020-08-31 20:08:23 909

原创 基于SpringBoot与Redis实现分布式锁

首先,使用Docker运行Redis拉取最近版本的Redis镜像:docker pull redis启动容器:docker run -d --name redis -p 6379:6379 redis:latest进入容器内部,测试存储:# docker exec -it redis redis-cli127.0.0.1:6379> set name qcyOK127.0.0.1:6379> get name"qcy"到这里,说明我们启动成功了。.

2020-08-28 18:11:36 2446

java面试精华之HashMap

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-17

java面试精华3

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-08

java面试精华14

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-17

java面试精华13

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-16

java面试精华12

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-15

java面试精华11

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-15

java面试精华10

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-15

java面试精华9

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-14

java面试精华8

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-12

java面试精华7

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-11

java面试精华6

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-10

java面试精华5

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-08

java面试精华4

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-08

java面试精华2

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-08

JAVA面试精华1

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-08

JAVA常考点之设计模式

面试精华,总结自2018年大厂校招面经,整理出来的高质量面试高频题。

2018-11-17

kq源码,java语言编写

可以查询垃圾分类、给指定qq发送垃圾分类+关键词则可以查询垃圾分类。监控群关键词,设定关键字后,加入的群里如果有人发送关键词,则会通知主qq,详细的使用方法在我的博客中有四篇博客介绍。

2020-04-22

SunAlwaysOnline的留言板

发表于 2020-01-02 最后回复 2020-04-04

空空如也

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

TA关注的人 TA的粉丝

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