自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(135)
  • 资源 (2)
  • 收藏
  • 关注

原创 临时

dubbo序列化。序列化在dubbo的应用中十分重要,不管是消费者与提供者之间参数的传递以及结果的传递都依赖于序列化与反序列化的过程,他们之间通过网络传输,所以序列化后的大小就是很重要的一个性能指标,为了通用性,序列化的跨语言性也至关重要。protostuff与Kryo是性能比较好的两种序列化方式,但是Kryo对跨语言的支持不那么友好。Kryo在类注册且reference...

2019-08-19 08:31:00 268

原创 sentinel(五):注解支持

Sentinel 提供了@SentinelResource注解用于定义资源,并提供了 AspectJ 的扩展用于自动定义资源、处理BlockException等。使用Sentinel Annotation AspectJ Extension的时候需要引入以下依赖:<dependency> <groupId>com.alibaba.csp</g...

2019-07-26 07:20:03 489

原创 sentinel(四):规则持久化

规则丢失无论是通过硬编码的方式来更新规则,还是通过接入 Sentinel Dashboard 后,在页面上操作来更新规则,都无法避免一个问题,那就是服务重新后,规则就丢失了,因为默认情况下规则是保存在内存中的。Dashboard 是通过 transport 模块来获取每个 Sentinel 客户端中的规则的,获取到的规则通过 RuleRepository 接口保存在 Dashboard 的...

2019-07-26 07:12:07 770

原创 sentinel(三):控制台

通过 sentinel 的控制台,我们可以对规则进行查询和修改,也可以查看到实时监控,机器列表等信息,所以我们需要对 sentinel 的控制台做个完整的了解。部署控制台首先需要启动控制台, sentinel 的控制台是用 spring boot 写的一个web 应用,我们有几种方式来获取控制台:下载可执行 jar 包从release 页面下载截止目前为止最新版本的控制台 ja...

2019-07-26 07:10:44 331

原创 sentinel(二):限流实例

我们已经知道了 Sentinel 的三大功能:限流降级系统保护。现在让我们来了解下具体的使用方法,以限流来演示具体的步骤。引入依赖首先肯定是要先引入需要的依赖,如下所示:<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core&...

2019-07-26 07:08:17 530

原创 sentinel(一):整体实现

Sentinel是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。大家可能会问:Sentinel 和之前常用的熔断降级库Netflix Hystrix有什么异同呢?Sentinel 官网有一个对比的文章,这里摘抄一个总结的表格,具体的对比可以点此链接查看。对比内容...

2019-07-26 07:05:55 734

原创 红黑树的java实现

一、红黑树比较重要的特性1、红黑树每个节点要么是黑色、要么是红色2、根节点是黑色3、红色节点的所有儿子都是黑色节点(也就是说从根节点到叶子结点的路径上不能出现连续的红色节点)4、从根节点到叶子结点的每一条路径上拥有相同的黑色节点个数n个节点的红黑树的最大深度不超过2log(n+1),其首先是一颗查找树,其次是平衡树的一个变种。其具有o(logn)的插入删除操作复杂度,操作性能比...

2019-05-22 22:07:51 204

原创 leetCode(wildcard-matching)-通配符匹配

题目:将字符串与模式进行通配符匹配。'?'通配符可以匹配任意一个字符'*'通配符可以匹配任意字符串,包括空思路:解法一:和前面正则表达式的思路一样,采用递归的形式逐个字符进行匹配,但是在系统中此方法最终超时了,对于非常长的字符串时间复杂度太高。解法二:采用动态规划,可以使用一个二维的动态规划,动态规划的表达式:assist[i][j]表示字符串中以第i个字符结尾的子串与通配...

2019-05-20 22:22:52 213

原创 AVL树的java实现

下面是AVL平衡查找树插入与删除核心操作的java实现:

2019-05-20 19:34:22 248

原创 二叉查找树java实现

下面是二叉查找树的插入与删除核心操作的java实现:

2019-05-20 19:29:32 194

原创 leetCode(trapping-rain-water)-数组最多能装多少水

题目:给定一个数组,数组中的每一个元素代表一个高度,问由数组中的元素组成的桶总共能装多少水。Given[0,1,0,2,1,0,1,3,2,1,2,1], return6.思路:与前面数组容器最多能装多少水采用类似的方法,双指针一头一尾遍历一遍,每次移动短板,在移动短板的过程中记录下当前边的最大高度,当前高度与最大高度的差值就是结果要加的水量。...

2019-05-20 10:28:44 834

原创 leetCode(sudoku-solver)-填充数独

题目:给定一个9*9数独矩阵,里面已经填充了一些值,需要进一步进行填充的值用'.'代表,写一个函数将数独填充完整。思路:解决的是矩阵问题,可以使用DFS+回溯的方式,在填充当前格时从1到9中随便选择一个数进行填充,再DFS深搜接下来的邻接点,如果没有成功则进行回溯重新选择。解决矩阵类的问题都可以采用这一种方式进行解题。...

2019-05-19 21:36:41 278

原创 leetCode(valid-sudoku)-有效的数独

题目:给定一个9*9的数独矩阵,判断该数独矩阵格式是否正确,不管该数独是否有解。思路:一个9*9的数独的格式正确的条件是三个方面:1、每一行的数字都不重复2、每一列的数字都不重复3、每一个块的数字都不重复构造三个二位数组分别记录每一行、每一列、每一个块数字的出现情况,出现的数字位置置为true,如果再次出现就可以判断了。...

2019-05-19 20:11:38 371

原创 leetCode(search-in-rotated-sorted-array)-在一个旋转排序数组中查找目标值

题目:给定一个从中间某一位置翻转的排序数组,在该数组中查找目标值。思路:首先判断排序数组是否翻转,如果没有翻转,直接使用二分查找,如果翻转,先使用变种的二分查找找到翻转位置,再分别在前半段与后半段进行二分查找寻找目标值。、...

2019-05-17 22:21:53 551

原创 leetCode(search-for-a-range)-查找目标值的范围

题目:在一个排序数组中查找一个目标值所在的范围,时间复杂度为o(logn)。思路:解法一:采用标准的二分查找找到目标元素的位置,再在目标元素所在的位置向两边搜索,确定范围。此方式的时间复杂度为o(logn) + o(n) = o(n),不满足时间复杂度的要求。解法二:采用变种的二分查找直接确定目标值第一次出现的位置,这样逻辑上中间值大于等于目标值时都要在左边继续查找,不管最终是否找到,...

2019-05-17 21:33:50 433

原创 leetCode(divide-two-integers)-不用除法求商

题目:不使用除法、乘法、求模去求取两个数的整数除。思路:采用减法来模拟除法,每次减去除数,结果加一。但是这样时间复杂度太大,可以将减去的值设置为一个基数,每次翻倍这个值,那么结果也在原来的基础上进行翻倍。这样时间复杂度会减少,就类比做累乘时可以折半的思想是一样的。...

2019-05-17 20:35:39 644

原创 leetCode(generate-parentheses)-产生括号序列

题目:输入一个整数n,输出所有的括号组合,n组括号的组合。eg:For example, givenn= 3, a solution set is:[ "((()))", "(()())", "(())()", "()(())", "()()()"]思路:将当前的左括号数与右括号数组合成(x, y)的形式,将其看成是图的一个节点,如果当前结点的x &...

2019-05-17 11:08:20 272

原创 leetCode(merge-sorted-array)-合并两个排序数组

题目:给定两个排序数组,将他们进行合并,假设第一个数组空间足够容纳两个数组。思路:使用双指针,为了防止数组整体向后移动,可以将指针设置的从后向前遍历,index初始值是两个数组长度之和。...

2019-05-14 22:07:03 330

原创 leetCode(merge-intervals)-合并区间

题目:给定保存一些区间的集合,将区间合并后加入到集合中输出eg:Given[1,3],[2,6],[8,10],[15,18],return[1,6],[8,10],[15,18].思路:将给定的区间按照区间的最小值进行排序,从第一个区间开始,如果两个区间有重合需要合并,那么第一个区间的最大值大于等于第二个区间的最小值,此时将合并后的区间加入到容器中,并更新第一个区间为合并之后的...

2019-05-14 22:02:16 147

原创 leetCode(merge-k-sorted-lists)-合并k个排序链表

题目:给定一个排序链表的集合,将其按照顺序排列成一个单链表,返回新的头指针。思路:和上一篇博客中的合并两个排序链表思路是一样的,循环从集合中取新的链表,将上次排好序的链表作为链表1,当前取得新的链表作为链表2,采取相同的方法进行merge,就可以了,在上一篇博客的基础上只是增加了一层外围循环。...

2019-05-14 21:14:05 195

原创 leetCode(merge-two-sorted-lists)-合并两个排好序的链表

题目:给定两个排好序的链表,合并两个链表,使最终的链表也有序,返回新的头节点。思路:这就是链表归并排序中的一个步骤(merge),比较简单,定义两个指针,依次遍历,为了从第一个节点开始,定义一个虚拟头节点。...

2019-05-14 20:46:55 269

原创 leetCode(valid-parentheses)-判断括号的合法性

题目:给定一个字符串,字符串中只可能含有'('、')'、'['、']'、’{‘、'}'这些字符,如果括号可以配对,返回true,否则返回false;Example 1:Input: "()"Output: trueExample 2:Input: "()[]{}"Output: trueExample 3:Input: "(]"Output: false...

2019-05-13 22:29:07 425

原创 leetCode(remove-nth-node-from-end-of-list)-删除单链表中倒数第n个节点

题目:给定一个单链表,删除链表中的倒数第n个节点,返回头节点思路:由于是单向链表,要想只遍历一次进行链表节点的定位,一般使用快慢指针,在这里的快慢指针,一个先走n+1步,然后两个同时移动,当快指针为null时,慢指针刚好指向要删除的节点的前一个节点,此时只用改变这个节点的next指针,跳过要删除的节点即可。由于考虑到删除的节点可能是头节点的情况,删除的是头节点,此时就没有前缀节点了,所以顺...

2019-05-13 20:34:14 434

原创 leetCode(letter-combinations-of-a-phone-number)-数字对应的字符串排列

题目:如上,给定一个包含2-9包含数字的字符串,返回所有可能表示的字母组合。数字到字母的映射(就像电话上的按钮一样)如下所示。注意,1没有映射到任何字母。思路:解法一:进行全排列,找出所有可能的排列数,不过条件是每个数字代表的字符串中选择其中的一个字符,递归在每个数字代表的字符串中选择一个字符,返回所有可能的结果。(典型的dfs深度优先搜索的应用)解法二:使用一个队列存储拼...

2019-05-10 22:23:02 260

原创 leetCode(longest-common-prefix)-最长的公共前缀

题目:给定一个字符串数组,求出字符串数组中最长的公共前缀思路:以最短的字符串为基准进行两重循环,外围循环是从第一个字符开始每次遍历一个字符,内层循环是每次一个字符串,只要有一个字符串的当前字符与基准字符不相同就提前结束循环,返回结果。...

2019-05-10 19:48:35 139

原创 leetCode(integer-to-roman)-整数转化为罗马数字表示

题目:给定一个整数,输出其罗马数字表示,整数的范围在1-3999之间。Symbol ValueI 1V 5X 10L 50C 100D 500M 1000例如,2在罗马数字中被写成II,就是两个加...

2019-05-09 10:51:24 173

原创 leetCode(roman-to-integer)-罗马数转化为整数

题目:给定一个罗马数,将其转化为整数并进行输出。例如,2在罗马数字中被写成II,就是两个加在一起。12是写成,XII,也就是X+II。数字二十七是二十七,也就是XX+V+II。罗马数字通常从左到右写得最大。然而,4的数字不是IIII。相反,数字4被写成IV,因为1在5之前减去它等于4。同样的原则也适用于9号,它被写成IX。有六种情况下使用减法:I可以在V(5)和X(10)之前放置分别是...

2019-05-08 22:18:58 177

原创 leetCode(regular-expression-matching)-正则匹配

题目:输入两个字符串,一个是待匹配的字符串,一个是匹配模式,看二者是否匹配,模式中‘.’匹配任意一个字符,'*'表示前面的模式重复0次或多次。思路:采用递归,比较完当前字符,当前字符要是匹配成功,递归匹配接下来的字符(要考虑下一个字符是'*'的情况下,要考虑当前字符是匹配零次还是匹配多次),当前字符要是匹配失败(下一个字符如果是'*',则考虑当前字符匹配0次,否则直接匹配失败)...

2019-05-08 21:45:57 122

原创 leetCode(reverse-integer)-反转整数

-题目:给定一个整数,将整数进行反转,如果反转后的整数溢出则返回0,输入的整数有可能前面带负号,反转后整数前面的0要去掉eg:123 ---> 321 -123 --> -321 -100 --> -1解法:在原始数据中从最低位个位开始分离,组装新的数据,负数求模与求余结果都带有负号,自然解决了符号问题。...

2019-05-08 20:42:24 233

原创 leetCode(longest-palindromic-substring)-最长回文字串

题目:给定一个字符串,输出这个字符串的最长回文子串思路:解法一:可以蛮力枚举所有的字串,看其是否是回文子串(枚举时间复杂度是o(n*n),最终超时)解法二:只遍历一遍,以当前遍历的字符为中心向两边扩展找最长回文子串,时间复杂度o(n)-o(n*n)(可以运行通过)...

2019-05-08 20:13:38 142

原创 leetCode(longest-substring-without-repeating-characters)-最长不重复子串

题目:给定一个字符串,找到该字符串中最长的不重复字串,并输出其长度。思路:解法一:可以枚举排列该字符串的所有字串,找到其中最长的。解法二:使用HashMap保存已经遍历过的字符的索引,维护一个start,采用一次遍历的方式找出最长的子串解法三:由于考虑到解法二中的HashMap中的key是字符,可以直接简化HashMap为一个256长度的数组,字符的ascii码作为key,这样可以...

2019-05-08 10:07:49 121

原创 leetCode(add-two-numbers)-链表相加

题目:给定两个链表,链表倒序存储着一个整数值,将两个链表存储的整数进行相加,输出表示结果的链表,链表还是倒序存储相加之后的结果。eg:2->4->3 + 5->6->4 = 7->0->8思路:倒序存储,刚好满足从低位向高位依次相加的加法法则,从链表的第一个元素依次遍历相加,考虑进位。...

2019-05-07 20:40:06 142

原创 leetCode(remove-duplicates-from-sorted-array)-去除排序数组中重复的数据

题目:给定一个排序数组,将排序数组中的重复数据去除,并返回去重后的数组中元素的个数解法一:看到去重就想到了Set(元素唯一),最终的元素要排序,排除HashSet(无序),最后选择TreeSet。需要额外辅助o(n)空间。解法二:采用一个全局的索引,利用排序这一个特性,比较相邻的元素,相邻元素不相同的才加到数组中,不需要辅助空间。...

2019-05-07 19:06:23 137

原创 leetCode(4sum)-四数之和为目标值

题目:给定一个数组,在数组中找到所有四个数,使得四个数的和为目标值思路:与3sum思路一样,只是增加了一维,也就是多了一层循环,注意可以采取一些小技巧将一些冗余代码跳过,也就是可以排除太大的数和太小的数。整体采用排序+首尾指针+去重...

2019-05-06 14:11:53 257

原创 leetCode(3sum-closest)-三数和最接近目标值

题目:给定一个数组,在数组中找到三个数,使得这三个数的和最接近目标值,返回这三个数的和思路:与3sum一样的思路,只是进行了一个变形,一个是和刚好为一个值,一个是最接近,还是可以采用排序+首尾指针+去重优化...

2019-05-06 10:57:00 339

原创 leetCode(3sum)-三数之和为目标值

题目:在数组中找出所有的三个数,这三个数之和恰好是0,返回所有的非重复组合解法一:最容易想到的,暴力枚举,三维三重循环(时间复杂度太高,超时)解法二:使用HashSet保存,将三重循环降维为两重循环,牺牲空间换时间(也超时,不知道为什么)解法三:排序后的双指针法,与二数之和类似,这里三个数只是多了一维...

2019-05-06 09:31:49 749

原创 leetCode(container-with-most-water)-盛水容器最多可以装多少水

题目:给定一个数组,数组中的每一个元素代表一个高度,用其中的两个元素组成容器的两条边高,两个元素的间隔为底长,求这个容器的最大盛水量。解法一:暴力枚举,列举所有的可能性,求出其中的最大值,时间复杂度0(n*n)解法二:利用短板效应提前过滤掉很多的可能性,减少枚举次数,思想是边从两边向中间夹,每次只移动较短的边,因为较长的边向中间移动得到的体积不会变得更大(短板效应与公共边效应决定),所以这...

2019-04-28 14:20:07 209

原创 leetCode(median-of-two-sorted-arrays)-两个排序数组中的中间值

题目:给定两个排序数组,返回两个排序数组中的中间值eg:A[1, 3, 5] B[2, 4] 返回3 A[1, 3, 5] B[2, 4, 6] 返回3.5解法一:因为两个数组已经排好序,可以直接使用归并排序中的merge的思想采取双指针解法二:有一个一般的解决思路,在两个排序数组中找到第k个数,在这里k取中间的一个数(总长度为奇数的情况)...

2019-04-28 10:52:36 431

原创 leetCode(two-sum)-数组中两个数的和等于目标值

题目:给定一个数组,求数组中的两个数之和等于目标值,返回两个数的索引。方法:使用HashMap维护值与索引的关系扩展:如果不是获取索引,而是获取数值,可以使用:1、HashSet维护数值2、排序后的双指针法(一首一尾)...

2019-04-27 17:26:04 683

原创 大数的加减乘除(java实现-未使用jdk中原生的大数)

大数相乘:大数相加:大数相减:大数相除:

2019-03-30 10:35:27 279

x210开发板的SD卡烧写教程

九鼎根据三星smdkv210开发板制作的x210开发板的SD卡烧写教程

2018-10-01

针对x210移植好的uboot

针对x210移植好的uboot,里面的修改全部打上了标签记录

2018-09-16

空空如也

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

TA关注的人

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