- 博客(93)
- 收藏
- 关注
原创 Java 8新特性-stream流
Stream流Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理,比如筛选,排序,聚合等。Stream有以下特性及优点:无存储。Stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java容器或I/O channel等。为...
2019-11-07 20:17:44 406
原创 Dubbo入门指北-Spring Boot+Dubbo入门级Demo
Zookeeper至少要装个单机环境,Dubbo需要Zookeeper环境。具体的配置这里不解释了。最后在Zookeeper目录下的bin目录下对zkServer.sh使用start即可开启Zookeeper。记得开放端口,Zookeeper端口需要自己配,默认配2181。Java前提条件了,不多解释装就好了。关于Tomcat,本身Tomcat就是一个Web容器,如果你想跑出来项目,那么还...
2019-11-01 16:59:06 288
原创 Redis实现分布式锁-原理与写法
多线程好玩嘿,以前都不怎么写。。关于实现其实并没有太多看过Redisson,但是推荐还是用这个框架,简单粗暴。并且多线程写的是真的少。。。代码目前我觉得没啥大问题,但是怕有对多线程不熟导致的一些坑,求大佬发现问题一定告诉一下哈。。分布式下的情况分布式与单机情况下最大的不同在于其不是多线程而是多进程。多线程由于可以共享堆内存,因此可以简单的采取内存作为标记存储位置。而进程之间甚至可能都不在...
2019-08-06 10:15:53 609
原创 记 Dubbo-Admin 搭建过程中遇到的大坑(Maven package失败)
Dubbo-Admin 的选择以及开源地址 首先吐槽一下网上的东西好老啊。。大概是17年左右的博客?基本上都是在配Dubbo的时候顺便做了Dubbo-Admin,并且都起名叫“Dubbo环境搭建”,干,这让萌新很苦恼啊,明明Dubbo不需要搭建的,只是如果选择Zookeeper当注册中心的话需要配Zookeeper,而Dubbo本身没有配服务端这种说法,所谓的搭建,其实都是搭建D...
2019-06-02 15:28:09 11427 8
原创 Java 1.8下ArrayList的扩容机制
扩容机制简述 扩容算法是基于方法grow()的,ArrayList的几个构造参数,决定了在初始状态下,容器的大小要么为0要么为自己设定的某个值。那么具体的扩容,就是在add()等方法进行的时候进行一次判定——如果有数组溢出的风险,那么就进行扩容。 扩容的时候先判定数组大小。数组是空或者小于10,那么在扩容的时候将数组直接分配大小到10。这也是一部分人认为Arra...
2019-05-14 19:06:14 2117 1
原创 Java标记接口的作用
什么是标记接口? 最早还是在看源码的时候有印象,例如下面是ArrayList的源码:public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable实现了...
2019-05-12 22:23:11 1921 1
原创 Java异常获取中try-catch-finally块执行顺序
最近看面试题,发现这个比较好玩,try-catch-finally块的执行顺序问题。一般认为,finally最后执行,做收尾工作,无论try块是否捕获异常,最后finally都会工作。但是这样还是比较笼统,如果没有catch,而是将异常抛出,让其他方法处理,那么是先进入其他方法还是先执行finally?如果try块中return了,那么finally还执行不执行?进一步,如果try、final...
2019-03-27 17:32:20 3963 2
原创 JDK8下HashMap的tableSizeFor方法
感觉HashMap跟其他的容器风格都不太一样,后来看网上是说JDK8相比以前对HashMap的修改非常大。在看构造方法的时候就卡在了tableSizeFor方法。先看一下构造方法: public HashMap(int initialCapacity, float loadFactor) { if (initialCapacity < 0) ...
2019-02-15 18:00:38 1226 1
原创 Java容器TreeMap的successor方法
只要理解二叉搜索树,就能看懂这个方法了。注释为:Returns the successor of the specified Entry, or null if no such.就是说返回当前结点的后继结点。然而TreeMap底层是红黑树谈何后继结点?这个方法最早出现是在containsValue方法中。 也就是传入一个Value,判定是否存在。也就是说我们需要遍历整个...
2019-02-13 11:11:47 1378 1
原创 红黑树的理解与代码实现
红黑树 我们知道对于二叉搜索树而言,无法保证树的平衡性,从而使得进行操作的时候时间复杂度在O(logn)与O(n)之间。这样是不稳定的。而2-3树则借助于3-结点和临时的4-结点,通过分解,解决了平衡问题。例如对于插入,在最终是3-结点的情况下,临时构成4-结点,然后再分解成3个2-结点,这样令树高度+1,但是整体平衡性不变。而红黑树就是为了实现自平衡这个功能而对2-3树进行了扩...
2019-02-11 23:01:20 2906 1
原创 Java并发中生产者消费者模式
生产者消费者模式 很简单的例子,KFC吃饭,柜台前顾客排队点餐,假设KFC只卖汉堡,那么就是这样的情景:消费者排队花钱下单购买,生产者(厨师)在后厨疯狂做汉堡。如果只有一个厨师,柜台只有一个服务员,那么就类似一对一的情况:消费者可能有多个,但是需要好好排队,厨师做一个消费者拿一个。如果厨师正在做,消费者就只能等待——还是在排队的,不能插队。如果没人光顾,厨师就闲着。这就是单线程。...
2019-02-09 11:17:09 260
原创 二叉查找树(Binary Sort Tree)的解析与实现
二叉查找树 关于性质之类的可以参考wiki、百度百科或者其他博客,其实也很简单,推荐看标准的描述。而博主写的内容主要是想写成类似Map底层的。所以有泛型,并且是Key-Value结构。关于二叉查找树,我们一般是类比二分搜索,仿佛跟Key-Value这样的结构并不一致。但是,在Java上,如果我们能在定义节点的时候,专门声明了Key与Value,并且在Key上定义comparato...
2019-01-31 21:40:45 2185
原创 LeetCode 969 pancake sorting 煎饼排序
题目链接LeetCode 周赛 118 场 B题https://leetcode-cn.com/problems/pancake-sorting/题意 先说明所谓的煎饼翻转,例如数组[1,2,3,4]其煎饼翻转后就是[4,3,2,1],就是从后到前翻转过去而已。现在给出一个排序,例如[3,2,4,1],在只能选择煎饼翻转的情况下,需要将其排序成为[1,2,3,4]。煎...
2019-01-10 10:58:34 743
原创 LeetCode 71 simplify-path 简化路径
题目链接https://leetcode-cn.com/problems/simplify-path/题意 给出Unix系统下的一个路径,化简这个路径。其实更类似于输入cd以后,后面写了一个路径,而系统会跳转到一个确定的路径中,我们需要得到的就是这个最终的路径。例如:"/////file/word/../",如果我们在前面加上cd命令,那么实际上跳转的路径是"/file"...
2019-01-06 10:20:29 187
原创 Java Web前端使用JQuery Mobile时跳转URL不变化的问题
最近隔壁实验室把后台交给我们来写了,要求前端用jquery mobile,因为只想在手机上跑。期末了无暇顾及,瞎写的时候就出现了这个大坑= =。例如注册之类的有数据提交的情况,并且还跟数据库大量交互。为了安全,博主写的时候写了重定向,这样在跳转的时候不会出现重复提交表单或者重复对数据库操作的问题,然后这前端框架就炸了:跳转的时候URL没变化! 网上搜了一波,大概是...
2018-12-24 17:49:28 394
原创 idea中Maven项目或者Web项目出现 java.lang.ClassNotFoundException 异常的解决方法
首先说明一下,java.lang.ClassNotFoundException异常是有通用的解决方法的。一般而言,都是因为缺少某个jar包。而且在IDE中出现颇多。后面会跟一个包名,说明这个包没有引用。 在IDE中,如果我们需要某个特殊的类,一般会提前引用jar包,就算不引用,IDE会直接飙红,提示没有这个类,所以既然能跑就肯定引用这个jar包了,所以出现这个错误...
2018-12-09 09:48:11 41016 13
原创 Spring MVC实现HTTP协议的LastModified缓存的两种方法与原理
关于缓存方式的大概原理 首先,Spring MVC中,我们发出请求,就会返回view,而实际上这样就引出了一个问题:我的请求如果没有任何改变的话,也就是说上次请求获得的静态资源是没有变化的。此时按照Spring MVC的机制,我们仍然返回了一套静态资源。显然这样增加了服务器的负载,以及网络带宽的使用。 可能Ajax能够解决这个问题——但是我们可以使用HTTP协议...
2018-11-27 23:22:06 2144
原创 LeetCode 944 delete-columns-to-make-sorted 删除列以使之有序
题目链接LeetCode 周赛 111场 D题https://leetcode-cn.com/problems/delete-columns-to-make-sorted/题意 吐槽一下111场周赛,2个简单题就不说了,B、D题题目都这么诡异。。。真的是能看懂就能写了。这个题简而言之就是将给出的所有字符串拼成一个二维数组,然后,对于这个二维数组的每一列,可以删除或者不...
2018-11-24 13:35:37 270
原创 LeetCode 942 di-string-match 增减字符串匹配
题目链接LeetCode 周赛 111场B题https://leetcode-cn.com/problems/di-string-match/题意 是有点难懂了,给出一个字符串S,S全部由‘D’和‘I’组成,然后现在需要解出一个数组,而这个数组需要和S相匹配。假设S的长度为N,那么这个数组的长度是N+1,并且值是集合{0...N}的任意排列。给出一个例子,假设有字符串...
2018-11-24 13:26:09 1439 5
原创 LeetCode 937 reorder log files 重新排列日志文件
现在过不了了哈!当时比赛能AC,后期应该添加了新的用例,所以我的代码是不能AC的,详情参考评论,懒得再看了= =,请移步其他题解,抱歉哈。题目链接LeetCode 周赛 110 场A题https://leetcode-cn.com/contest/weekly-contest-110/problems/reorder-log-files/题意 题目很长,总之,就是...
2018-11-12 13:33:35 931 2
原创 LeetCode 15 3sum 三数之和
题目链接https://leetcode-cn.com/problems/3sum/题意 很简单,就是给出一个数组,3个数一组,找到所有和为0的组。并且要求不能重复。或者说找其中3个数其和为0,找出所有的组合。题解 很好的一个题了,博主做了3次,前两次全部TLE,最后才AC了,但是整体思路差不多,就看能不能想到双指针的操作。前两次就是太菜了。 ...
2018-11-09 13:12:14 163
原创 LeetCode-33 search-in-rotated-sorted-array 搜索旋转排序数组
题目链接https://leetcode-cn.com/problems/search-in-rotated-sorted-array/前排提示《剑指offer》题,二分搜索找特殊条件,感觉书上描述的很简单,(可能之前做过所以觉得简单点。。)题意 对于一个升序排序的数组,从某个位置截断,然后直接拼在后面。看题目给的例子,还是比较直白的。题解 ...
2018-11-08 14:09:10 235
原创 Spring MVC利用Hibernate Validator实现后端数据校验
吐槽一下,网上坑好多啊!不过采坑才能学习,写bug能力-1。JSR 303、JSR 349与Bean Validator 笼统来说,就是Java规定了一套关于验证器的API,规范先后发了两版,就是所谓的JSR 303与JSR 349。然后提出了基于规范的实现:Bean Validator。JSR 303是最早的,其对应了Bean Validator 1.0的版...
2018-11-06 20:12:11 10670 4
原创 LeetCode-236 lowest common ancestor of a binary tree 二叉树的最近公共祖先
题目链接https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/题意 中文题,就是给出一个一般的二叉树,求其最近公共祖先,并且声明节点A是本节点的祖先。题解 算是“二叉搜索树的最近公共祖先”问题的升级版,但是仍然没有比较使用LCA算法。可以利用二叉树的性质,利用...
2018-11-03 15:05:47 142
原创 LeetCode 89 gray code 格雷编码
题目链接https://leetcode-cn.com/problems/gray-code/题意 有可能是因为机翻,题目描述不太清楚。学过数字电路的应该能秒懂了。实际上就是给出一个n,那么有[0,2^n-1]总共2^n个数。现在对这些数进行排序放在List里,要求按照格雷编码的形式。格雷编码是相邻两个数的二进制只有一位是不同的,例如1、3可以相邻,其二进制为01和11,...
2018-10-31 17:09:21 439
原创 LeetCode 238 product of array except self 除自身以外数组的乘积
题目链接https://leetcode-cn.com/problems/product-of-array-except-self/题意 中文题,就是给出一个数组,输出也是一个数组,每个位置是除自身外其他所有数的乘积。要求不能用除法,以及时间复杂度为O(n)。进阶的条件是常数的空间复杂度。题解 也是比较有趣的题,不能用乘法,很想知道oj怎么知道有没有...
2018-10-31 15:32:08 158
原创 LeetCode-230 kth smallest element in a bst 二叉搜索树中第K小的元素
题目链接https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/题意中文题,对于二叉搜索树而言,找其中的第K小的数题解 很有趣的题,但是很简单,实际上就是对树的中序遍历,关于第K小,因为是二叉搜索树,所以最左边的就是最小的,那么中序遍历的情况下,第一次回溯到中序就是最小的一个节点,从该节点开始判...
2018-10-30 16:58:35 173
原创 LeetCode-931 minimum falling path sum 下降路径最小和
题目链接LeetCode 周赛 108场 C题https://leetcode-cn.com/contest/weekly-contest-108/problems/minimum-falling-path-sum/题意 比较简单的,也就是说上一层下降的话只能间隔1位下降,例如下图:看懂给的例子就理解题意了。题解 C题着实感觉自己脑子不太...
2018-10-29 10:46:55 525
原创 有环链表及以此为基础的一些问题
链表有环及其延伸问题 首先,问题涉及的有环链表是指链表的尾节点不是null,而是指向链表中的其中一个节点,从而使得链表的其中一段是循环的,如果用图的话可以得到这样的数据结构:那么基于这样的数据结构有一系列问题需要处理。最基础的则是判定是否有环。也就是说判定一个链表是否是有环链表。判定是否有环之后,又可以要求返回到底是链表的哪一个节点开始进入环的,然后环的长度是多少,链表的...
2018-10-26 23:01:28 183
原创 LeetCode-141 linked list cycle 环形链表
题目链接LeetCode-141 linked list cycle题意据说也是面试经典链表题了,判定是否存在环。以此还可以引申很多链表相关题,可以去搜一下,或者看我的博客:https://blog.csdn.net/iwts_24/article/details/83421853题解 其实是比较简单的,因为判定有环的情况下,一直next向下跑是死循环,但是例...
2018-10-26 22:30:28 125
原创 LeetCode-160 intersection-of-two-linked-lists 相交链表
题目链接https://leetcode-cn.com/problems/intersection-of-two-linked-lists/题意 中文题,不过该题不是官方提供,所以不支持在LeetCode上设置数据跑,所以连自己测都不行,比acm刺激多了(手动滑稽)。这个题就是给两个链表头,判定这两个链表是否相交。并且返回相交点的节点对象。题解 据说...
2018-10-25 18:37:59 192
原创 Kadane算法详解及求解最大子数列和问题
最大子数列和问题 给出一个数列,现在求其中一个子数列,要求是所有子数列的和的最大值。另外还有其他问法,例如给出一个数组,要求求出连续的元素和的最大值。可以一个例子来解释:假设有数列:[-1,2,3,-5,6,-2,4],那么总共有7^2=49种子数列,如果分别求和,其中最大的子数列为:[6,-2,4],其和为8。暴力求解 最暴力的算法是枚举,双重for循...
2018-10-25 16:53:08 2038
原创 LeetCode-231 power-of-two 2的幂
题目链接https://leetcode-cn.com/problems/power-of-two/题意中文题,题面意思,给一个整数判定是否为2的幂。题解 有趣的一个题,就是太水了。直接暴力也能做其实,不过时间没试。大概就是for循环持续计算2的幂,也可以打表储存值。然后for循环表来比较整数,如果恰好相等就返回true,如果碰见整数小于表值的情况那就是false...
2018-10-25 09:34:27 167
原创 LeetCode-235 lowest-common-ancestor-of-a-binary-search-tree 二叉搜索树的最近公共祖先
题目链接LeetCode-235 lowest-common-ancestor-of-a-binary-search-tree题意中文题,注意,题目要求是“二叉搜索树”,这就大大化简题目难度了。题解 比较简单了,因为数据结构给的是二叉搜索树。刚开始没看清,还以为要用lca来写,因为返回的是一个结点,所以还在纠结如何构造时间戳数组。后来感觉题目标明的是简单题不能用l...
2018-10-24 19:36:18 179
原创 LeetCode-926 flip-string-to-monotone-increasing 字符串翻转到单调递增
题目链接LeetCode 周赛 107场 B题https://leetcode-cn.com/contest/weekly-contest-107/problems/flip-string-to-monotone-increasing/题意中文题,这个递增允许不变,例如全0或者全1也是按照递增处理。题解 智障了= =竟然拖很长时间才做出来。刚开始想使用暴力(绝...
2018-10-24 16:47:29 364
原创 LeetCode-136 Single Number 只出现一次的数字
题目链接https://leetcode-cn.com/problems/single-number/题意中文题,题意很简单。题解 很有趣的一个题,最简单粗暴的当然是开辟额外空间暴力计算了。题目限制很多:最多只出现2次、只有唯一答案。那么不仅可以开辟数组这种最暴力的,还可以利用set的唯一性,当set不存在则存入,当set中存在则删除,这样最终set中只有一个最终...
2018-10-23 21:57:01 180
原创 LeetCode-206 reverse-linked-list 反转链表
题目链接reverse-linked-list题意中文题,反转链表,给出链表头,要求输出一个链表头,oj会遍历以判定是否反转。题解 简单的方法是迭代,然后反向输出。或者说利用额外空间储存遍历链表的数据,然后在构造一个链表头,反向输出额外空间储存数据来创建一个新链表。但是链表的遍历本来就是利用指针指向一层一层向下遍历,并且是反向输出,很自然能想到利用递归的方法。在回...
2018-10-23 21:45:44 215
原创 Java StringBuilder详解以及与String、StringBuffer区别
StringBuilder 就像我们在Java入门教材中写的,在介绍String的时候写的是“字符串常量”,String实际上就是一个不可变的对象。每次使用String实际上是创建了一个不可变的对象,而改变这个String的值实际上是对这个字符串引用更换了新的地址,用图来表示: 原来的字符串仍然存在在内存之中。可以使用代码来测试一下:public class Mai...
2018-10-22 20:47:30 661
转载 背包九讲-致谢
感谢一下名单:阿坦 jason911 donglixp LeafDuo他们每人都最先指出了本文曾经存在的某个并非无关紧要的错误。谢谢你们如此仔细地阅读拙作并弥补我的疏漏。 感谢 XiaQ,它针对本文的第一个beta版发表了用词严厉的六条建议,虽然我只认同并采纳了其中的两条。在所有读者几乎一边倒的赞扬将我包围的当时,你的贴子是我的一剂清醒剂,让我能清醒...
2018-10-04 20:39:13 127
转载 背包九讲-联系方式
如果有任何意见和建议,特别是文章的错误和不足,或者希望为文章添加新的材料,可以通过http://kontactr.com/user/tianyi/这个网页联系我。 值得说明的是,如果有OI方面的问题,例如不明白自己的程序为什么错了或者索要某种算法的源代码,使用这个联系方式可能得不到及时解答。请在OIBH论坛发问。...
2018-10-04 20:33:36 154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人