自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 解读十大经典排序算法

原文出处:http://cmsblogs.com排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:关于时间复杂度:1、平方阶 (O(n2)) 排序 各类简单排序:直接...

2019-05-20 23:14:43 235

原创 二叉树的实现以及遍历

二叉树简历1、二叉树的定义二叉树是每个结点最多有两个子树的树结构。它有五种基本形态:二叉树可以是空集;根可以有空的左子树或右子树;或者左、右子树皆为空。2、二叉树的性质性质1:二叉树第i层上的结点数目最多为2i-1(i>=1)性质2:深度为k的二叉树至多有2k-1个结点(k>=1)性质3:包含n个结点的二叉树的高度至少为(log2n)+1性质4:在任意一棵二叉树中,若终...

2019-04-20 21:08:56 465

原创 redis学习总结

2021-02-24 20:09:59 216

原创 JVM---ZGC收集器

ZGC(“Z”并非什么专业名词的缩写,这款收集器的名字就叫作Z Garbage Collector)是一款在JDK 11中新加入的具有实验性质的低延迟垃圾收集器。ZGC收集器是一款基于Region内存布局的,(暂时) 不设分代的,使用了读屏障、染色指针和内存多重映射等技术来实现可并发的标记-整理算法的,以低延迟为首要目标的一款垃圾收集器。Z G C采用基于Region的堆内存布局,但与它们不同的是 , ZGC的Regio具 有 动 态 性 — —动态创建和销毁 ,以及动态的区域容量大小。 在x64硬件平台

2020-11-09 14:26:39 330

原创 JVM------HotHotSpot的算法实现

根结点枚举迄今为止,所有收集器在根节点枚举这一步骤时都是必须暂停用户线程的,也就有“STW”的困扰。现在可达性分析算法耗时最长的查找引用链的过程已经可以做到与用户线程一起并发,但根节点枚举始终还 是必须在一个能保障一致性的快照中才得以进行——这里“一致性”的意思是整个枚举期间执行子系统 看起来就像被冻结在某个时间点上,不会出现分析过程中,根节点集合的对象引用关系还在不断变化的情况,若这点不能满足的话,分析结果准确性也就无法保证,这也是垃圾回收过程必须停顿所有线程的原因。目前主流Java虚拟机使用的都是准

2020-11-05 16:46:07 276

原创 虚拟机杂记

可作为GC-ROOTS的对象在虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方法堆栈中使用到的 参数、局部变量、临时变量等。在方法区中类静态属性引用的对象,譬如Java类的引用类型静态变量。在方法区中常量引用的对象,譬如字符串常量池(String Table)里的引用。在本地方法栈中JNI(即通常所说的Native方法)引用的对象。Java虚拟机内部的引用,如基本数据类型对应的Class对象,一些常驻的异常对象(比如NullPointExcepiton、OutOfMemoryE

2020-11-04 17:44:29 134

原创 Guava学习:字符串处理

Guava是谷歌开源的包含若干Java核心库的服务,熟练Guava的使用对Java开发人员来说是一门必备的技能。先简单介绍下其中对于字符串处理的操作。Joiner(连接器)所谓连接器,即就是对字符串进行拼接的操作,其中不乏要进行判空、空字符串转换、分隔符添加等处理,常规的Java处理是for循环+if等操作来处理,使用Joiner会极大的帮助我们解决繁杂的处理过程,一行代码搞定。创建Joi...

2020-03-13 18:30:36 293

原创 读书笔记

1.无状态对象一定是线程安全的。ps:无状态指的是不含任何域,也不包含对其他域的引用。2.要保持状态的一致性,就需要在单个原子操作中更新所有相关的状态变量。...

2019-11-11 20:09:49 117

原创 mysql的日志文件

MySQL中有六种日志文件,分别是:重做日志(redo log)回滚日志(undo log)二进制日志(binlog)错误日志(errorlog)慢查询日志(slow query log)一般查询日志(general log)中继日志(relay log)。重做日志(redo log)重做日志记录的是物理页面的修改信息,其redo log是顺序写入redo log file的物理...

2019-09-06 10:44:38 540

原创 剑指offer---连续子数组的最大和

题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序列...

2019-09-05 12:06:38 106

原创 leetcode222. 完全二叉树的节点个数

题目描述给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例:输入:1/ 2 3/ \ /4 5 6输出: 6题解完全二叉树是一棵空树或者它的叶子节点只出在最后两层,...

2019-09-04 16:06:56 117

原创 leetcode915. 分割数组

题目描述给定一个数组 A,将其划分为两个不相交(没有公共元素)的连续子数组 left 和 right, 使得:left 中的每个元素都小于或等于 right 中的每个元素。left 和 right 都是非空的。left 要尽可能小。在完成这样的分组后返回 left 的长度。可以保证存在这样的划分方法。题解不检验 all(L <= R for L in left for R ...

2019-09-03 18:06:30 166

原创 判断二叉树是否是完全二叉树

题目描述给定一棵二叉树,判断该树是否是完全二叉树题解/** * 判断是否是完全二叉树 * @param node */ public static boolean isGoodBinaryTree(Node node){ if (node == null) return false; Queue&...

2019-08-29 17:32:33 185

原创 leetcode75. 颜色分类

题目描述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]题解用三个指针指向0的最右边界、当前元素、2的最左边界...

2019-08-28 17:18:14 100

原创 leetcode69. x 的平方根

题目描述实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。注:如只需要解本题,代码如下:class Solution { ...

2019-08-28 16:43:01 101

原创 剑指offer---机器人的运动范围

题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?题解public class Soluti...

2019-08-28 15:36:06 95

原创 剑指offer---滑动窗口的最大值

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5...

2019-08-28 15:22:15 95

原创 kafka设计之幂等性和事务

HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同幂等实现幂等的关键点就是服务端可以区分请求是否重复,过滤掉重复的请求。要区分请求是否重复的有两点:唯一标识:要想区分请求是否重复,请求中就得有唯一标识。例如支付请求中,订单号就是唯一标识记录下已处理过的请求标识...

2019-08-28 12:45:35 696

原创 leetcode962. 最大宽度坡

题目描述给定一个整数数组 A,坡是元组 (i, j),其中 i < j 且 A[i] <= A[j]。这样的坡的宽度为 j - i。找出 A 中的坡的最大宽度,如果不存在,返回 0 。示例 1:输入:[6,0,8,2,1,5]输出:4解释:最大宽度的坡为 (i, j) = (1, 5): A[1] = 0 且 A[5] = 5.题解对于每一个形如 A[i] = ...

2019-08-26 18:09:25 255

原创 leetcode1104. 二叉树寻路

题目描述在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记;而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。给你树上某一个节点的标号 label,请你返回从根节点到该标号为 label 节点的路径,该路径是由途经的节点标号所组成的。示例 ...

2019-08-26 13:12:13 171

原创 leetcode560. 和为K的子数组

题目描述给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。题解思路一:暴力求解class Solution { public int subarraySum(int[] nums, int k) { if...

2019-08-26 12:07:55 142

原创 leetcode452. 用最少数量的箭引爆气球

题目描述在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标为 xstart,xend, 且满足 xstart ≤ x ≤...

2019-08-26 11:22:29 360

原创 leetcode41. 缺失的第一个正数

题目描述给定一个未排序的整数数组,找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2题解需要明确的一个点是没有出现的最小正数一定小于等于数组长度+1,只要从1开始连续的递增序列才会相等,否则一定是小于的,这样我们可以选取小于数组长度+2的元素作为键进行存储,最后遍历数组,第一个未被标记的下标即为最小正...

2019-08-22 16:51:30 91

原创 leetcode160. 相交链表

题目描述编写一个程序,找到两个单链表相交的起始节点。题解创建两个指针 pApA 和 pBpB,分别初始化为链表 A 和 B 的头结点。然后让它们向后逐结点遍历。当 pApA 到达链表的尾部时,将它重定位到链表 B 的头结点 (你没看错,就是链表 B); 类似的,当 pBpB 到达链表的尾部时,将它重定位到链表 A 的头结点。若在某一时刻 pApA 和 pBpB 相遇,则 pApA/pBp...

2019-08-19 14:50:34 170

原创 leetcode215. 数组中的第K个最大元素

题目描述在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4题解1.最容易想到的就是先排序,然后获取下标为length - k 的元素2.使用堆排序...

2019-08-19 14:11:15 137

原创 K数之和

题目描述在一个数组中找出K个和为target的组合题解提供一个通用模版class Solution {public List<List<Integer>> fourSum(int[] nums, int target) { return kSum(nums,target,4); } public List<List<I...

2019-08-15 10:42:36 204

原创 leetcode152. 乘积最大子序列

题目描述给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。题解使用动态规划的思想,遍历数组时计算当前最大值,不断更新令imax为当...

2019-08-14 11:48:48 74

原创 leetcode 300. 最长上升子序列

题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。题解思路一:动态规划dp[i]:表示以第 i 个数字为结尾的“最长上升子序列”的长度。即在 [0, …, i] 的范围内,选择 以数字 nums[i] 结尾 可以获得的最长上升子序列的...

2019-08-11 15:42:00 119

原创 Mysql集群常见方案

Mysql主从架构使用双节点数据库,搭建单向或者双向的半同步复制。通常会和proxy、keepalived等第三方软件同时使用,即可以用来监控数据库的健康,又可以执行一系列管理命令。如果主库发生故障,切换到备库后仍然可以继续使用数据库。优点:架构比较简单,使用原生半同步复制作为数据同步的依据;双节点,没有主机宕机后的选主问题,直接切换即可;双节点,需求资源少,部署简单;缺点:完...

2019-08-09 22:09:59 1298

原创 leetcode 322. 零钱兑换

题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1题...

2019-08-09 11:54:23 67

原创 leetcode62. 不同路径

题目描述一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?题解典型的动态规划问题,除了第一行和第一列都是一条以外,剩下的位置是左边和上边节点的路径之和。class Solution { public int uniqu...

2019-08-08 23:49:41 129

原创 leetcode55. 跳跃游戏

题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位...

2019-08-08 23:39:14 142

原创 面试---Linux常用命令

1.查看文件中某行的内容通过sed打印指定行号的内容 sed -n ‘xp’ 文件名通过sed打印某个范围内的内容 sed -n ‘x,yp’ 文件名注意:p是固定符号,x,y指的是行号2.查看占用端口的进程号netstat -tunlp | grep 8080Linux下查看端口号所使用的进程号:使用lsof命令: lsof –i:端口号3.根据进程查看占用端口ps –e...

2019-08-08 23:01:39 96

原创 Spring面试合集

1. Spring的IOC初始化流程Spring IOC的核心是BeanFactory其实SpringIOC初始化的过程就是准备好BeanFactory的过程。(1)定位并获取资源文件因为对象和对象之间的关系存储在xml或properties等语义化配置文件中,首先要定位到配置文件。用资源加载器ResourceLoader将资源文件路径转换为对应的Resource(2)解析资源文件(3...

2019-08-07 15:55:22 123

原创 leetcode328. 奇偶链表

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

2019-08-07 14:14:26 88

原创 leetcode334. 递增的三元子序列

题目描述给定一个未排序的数组,判断这个数组中是否存在长度为 3 的递增子序列。数学表达式如下:如果存在这样的 i, j, k, 且满足 0 ≤ i < j < k ≤ n-1,使得 arr[i] < arr[j] < arr[k] ,返回 true ; 否则返回 false 。说明: 要求算法的时间复杂度为 O(n),空间复杂度为 O(1) 。示例 1:输...

2019-08-07 13:12:19 122

原创 leetcode49. 字母异位词分组

题目描述给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],输出:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]题解当且仅当它们的排序字符串相等时,两个字符串是字母异位词。维护一个集合,将排序后的序...

2019-08-06 20:49:04 93

原创 leetcode198. 打家劫舍

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

2019-08-06 17:27:09 78

转载 设计模式之策略模式

概述策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。策略模式的使用场景:(1)针对同一类型问题,有多种具体的处理方式时。 即多个类只区别在表现行为不同,在运行...

2019-08-06 15:38:41 75

原创 设计模式之观察者模式

什么是观察者模式观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,使得当被观察者状态发生改变时,与之相依赖的所有观察者对象都能得到通知并自动更新。这个主题...

2019-08-05 11:23:49 77

空空如也

空空如也

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

TA关注的人

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