自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《java并发编程实战》

(第5章的ConcurrentHashMap部分未完成)第2章 线程安全性无状态对象一定是线程安全的,无状态:既不包含任何域,也不包含对其他类中域的引用。竞态条件(Race Condition):因不恰当的执行时序而出现不正确的结果(要 想获得正确的结果,取决于事件发生的时序)原子性:i++不是原子的,包括read-update-write。对于无状态的类:增加单个域,可以...

2019-05-06 11:48:05 5254

转载 AQS

转载!原文链接:https://www.cnblogs.com/waterystone/p/4920797.html 原作者:水岩一、概述  谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!  类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步...

2019-04-25 19:28:48 1305 2

原创 前后端分离单点登录

单点登录基于 Apereo CAS实现,不是此次记录的重点。登陆过程中,需要重定向至CAS Server,前端Vue+axios,需要从单页面跳转至login页面,后端如果使用response.sendRedirect(),返回302,axios并不能拦截到302,浏览器会自动跳转,就会出问题。解决:后端判断请求是否是axios(Ajax)请求,如果是,不返回302,约定一个返回码...

2019-04-02 18:50:38 3316 3

原创 Spring Boot + Spring Cloud(server+client+eureka) Demo

一、说在前面参考:    https://www.cnblogs.com/cralor/p/9239976.htmlhttps://www.cnblogs.com/shamo89/p/8016908.htmlhttps://windmt.com/2018/04/19/spring-cloud-7-config-sample/https://windmt.com/2018/04/...

2019-02-21 11:17:04 534

转载 (转)ReidsTemplate如何注入到ValueOperations(Spring不同类型的类注入)

本文转自 https://www.cnblogs.com/tangyuanyuan/p/8067923.html今天看到Spring操作redis  是可以将redisTemplate注入到ValueOperations,避免了ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue();...

2019-02-18 11:30:21 903

转载 转 axios 发 post 请求,后端接收不到参数的解决方案

转自 https://blog.csdn.net/csdn_yudong/article/details/79668655问题场景问题原因要点1要点2问题分析解决方案解决方案一解决方案二解决方案三解决方案四解决方案五解决方案六问题场景场景很简单,就是一个正常 axios post 请求:axios({ headers: { 'deviceCode': 'A95ZEF1-47...

2018-06-27 17:35:41 1348

原创 LintCode 买卖股票的最佳时机 III

假设你有一个数组,它的第i个元素是一支给定的股票在第i天的价格。设计一个算法来找到最大的利润。你最多可以完成两笔交易。注意事项你不可以同时参与多笔交易(你必须在再次购买前出售掉之前的股票)样例 给出一个样例数组 [4,4,6,1,1,4,2,5], 返回 6利用两个数组left 和right,left[i]存第i天及之前的某一天卖掉股票能赚到的最大利润,right[i]存第i天及第i天之后的某一天

2017-10-31 15:59:19 403

转载 字典树(Trie)

转自温布利往事的博客一、概述  1、基本概念  字典树,又称为单词查找树,Tire数,是一种树形结构,它是一种哈希树的变种。  2、基本性质根节点不包含字符,除根节点外的每一个子节点都包含一个字符 从根节点到某一节点。路径上经过的字符连接起来,就是该节点对应的字符串 每个节点的所有子节点包含的字符都不相同   3、应用场景  典型应用是用于统计,排序和保存大量的字符串(不仅限于字符串),经常被

2017-10-30 17:15:44 224

原创 LintCode 分割字符串

给一个字符串,你可以选择在一个字符或两个相邻字符之后拆分字符串,使字符串由仅一个字符或两个字符组成,输出所有可能的结果给一个字符串”123” 返回[[“1”,”2”,”3”],[“12”,”3”],[“1”,”23”]]递归,和LintCode 电话号码的字母组合类似。 代码如下:public class Solution { /* * @param : a string to

2017-10-27 10:21:13 475

原创 LintCode 循环单词

The words are same rotate words if rotate the word to the right by loop, and get another. Count how many different rotate word sets in dictionary.E.g. picture and turepic are same rotate words.注意事项所有单词

2017-10-26 21:31:52 828

原创 LintCode 插入区间

给出一个无重叠的按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。 样例 插入区间[2, 5] 到 [[1,2], [5,9]],我们得到 [[1,9]]。插入区间[3, 4] 到 [[1,2], [5,9]],我们得到 [[1,2], [3,4], [5,9]]。对于原区间列表中的任意一个,有以下三种情况: 1.新

2017-10-25 13:43:51 271

原创 LintCode A+B

给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。注意事项你不需要从输入流读入数据,只需要根据aplusb的两个参数a和b,计算他们的和并返回就行。说明 a和b都是 32位 整数么?是的 我可以使用位运算符么?当然可以 样例 如果 a=1 并且 b=2,返回3利用位运算。 1.先忽略进位计算a+b,结果为a^b(同为0或同为1,结果都是0,否则才是...

2017-10-24 15:04:02 663

原创 LintCode 搜索区间

给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置。如果目标值不在数组中,则返回[-1, -1]样例 给出[5, 7, 7, 8, 8, 10]和目标值target=8,返回[3, 4]挑战 时间复杂度 O(log n)分别对左右边界进行二分查找。注意特殊情况的处理。直接看代码:public class Solution { /* * @par

2017-10-24 13:38:17 299

原创 LintCode 最大平均值子数组

给出一个整数数组,有正有负。找到这样一个子数组,他的长度大于等于 k,且平均值最大。注意事项保证数组的大小 >= k样例 给出 nums = [1, 12, -5, -6, 50, 3], k = 3返回 15.667 // (-6 + 50 + 3) / 3 = 15.667参考了别人的想法,利用二分法,依然不是对数组中元素的二分,而是对一个区间的二分,逐渐找到结果。题目所求平均值一定是在 数组

2017-10-23 17:10:46 2828

原创 LintCode Find the Duplicate Number

Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive), prove that at least one duplicate number must exist. Assume that there is only one duplicate number, fin

2017-10-23 14:25:59 224

原创 LintCode 两个整数相除

将两个整数相除,要求不使用乘法、除法和 mod 运算符。如果溢出,返回 2147483647 。样例 给定被除数 = 100 ,除数 = 9,返回 11。 不使用乘法、除法、mod,利用左移而不是加法(加法慢)来计算。注意溢出问题,计算时用long来计算,得到结果再比较是否溢出。 代码如下:public class Solution { /* * @param dividen

2017-10-20 14:21:40 255

原创 LintCode 逆序对

在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。给你一个数组,求出这个数组中逆序对的总数。 概括:如果a[i] > a[j] 且 i < j, a[i] 和 a[j] 构成一个逆序对。样例 序列 [2, 4, 1, 3, 5] 中,有 3 个逆序对 (2, 1), (4, 1), (4, 3),则返回 3 。1.直接暴力求解,找到所有对,检查是不是逆序的。 2.利

2017-10-19 16:49:15 212

原创 LintCode 最接近零的子数组和

给定一个整数数组,找到一个和最接近于零的子数组。返回第一个和最右一个指数。你的代码应该返回满足要求的子数组的起始位置和结束位置样例 给出[-3, 1, 1, -3, 5],返回[0, 2],[1, 3], [1, 1], [2, 2] 或者 [0, 4]。任意子数组的和,可由两个前缀和相减得到。前缀和是指从数组第一个元素到数组中某个元素的子数组的和。题目要求子数组的和最接近零,那么就是要求两个前缀

2017-10-18 21:31:51 489

原创 获得递增子序列的个数

给定一个数n,和一个含n个数的序列,求出本质不同的上升子序列的个数。例如: n=6,{3,1,2,1,3,4} 本质不同的上升子序列共有11种: {3,4} {1,2} {1,3} {1,4} {2,3} {2,4} {1,2,3} {1,2,4} {1,3,4} {2,3,4} {1,2,3,4}这是一道笔试题,同学笔试时候让我帮着做,知道用动态规划做,但是还是没做出来,

2017-09-29 11:00:33 5980 2

转载 Java之equals()、hashcode()

1.何时需要重写equals() 当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念)。 2.设计equals() [1]使用instanceof操作符检查“实参是否为正确的类型”。 [2]对于类中的每一个“关键域”,检查实参中的域与当前对象中对应的域值。 [2.1]对于非float和double类型的原语类型域,使用==比较; [2.2]对于对象引用域,递归调用equals方法

2017-09-27 09:44:27 170

原创 LintCode 两数之和

给一个整数数组,找到两个数使得他们的和等于一个给定的数 target。你需要实现的函数twoSum需要返回这两个数的下标, 并且第一个下标小于第二个下标。注意这里下标的范围是 1 到 n,不是以 0 开头。Notice你可以假设只有一组答案。Example 给出 numbers = [2, 7, 11, 15], target = 9, 返回 [1, 2]. Either of the foll

2017-09-26 11:20:35 256

原创 LintCode 中位数/第K大元素

给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。给出数组[4, 5, 1, 2, 3], 返回 3给出数组[7, 9, 4, 5],返回 5Challenge 时间复杂度为O(n)若利用快排排序之后再查找,时间复杂度为O(nlgn)。快排每次处理划分之后的两侧,在这里查找中位数只需要处理一侧,时间复杂度为O(n)。pub

2017-09-25 10:03:43 219

原创 LintCode 翻转链表

翻转一个链表样例 给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { * this.val = val

2017-09-22 16:42:06 289

原创 LintCode 交换链表当中两个节点

给你一个链表以及两个权值v1和v2,交换链表中权值为v1和v2的这两个节点。保证链表中节点权值各不相同,如果没有找到对应节点,那么什么也不用做。注意事项你需要交换两个节点而不是改变节点的权值样例 给出链表 1->2->3->4->null ,以及 v1 = 2 , v2 = 4 返回结果 1->4->3->2->null。就是利用两个节点的前驱,本身一顿操作,记录一下。直接看代码:/** *

2017-09-22 14:16:49 306

原创 LintCode 带环链表

给定一个链表,判断它是否有环。参考了网上一些资料,算是一个总结。 感谢sunflower_Yolanda的文章。由这个问题可以引申出来几个问题,先解决本身。 1.判断是否有环。 利用两个指针slow、fast。初始时,两个指针都在表头。slow每次走一步,fast每次走两步。如果不存在环,那么fast一定先到达链表末尾。如果存在环,那么fast和slow一定会在环上的某个位置相遇。 代码:/

2017-09-21 23:48:25 249

原创 LintCode 格雷编码

格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个二进制的差异。给定一个非负整数 n ,表示该代码中所有二进制的总数,请找出其格雷编码顺序。一个格雷编码顺序必须以 0 开始,并覆盖所有的 2n 个整数。注意事项对于给定的 n,其格雷编码顺序并不唯一。根据以上定义, [0,2,3,1] 也是一个有效的格雷编码顺序。样例 给定 n = 2, 返回 [0,1,3,2]。其格雷编码顺序为:0

2017-09-20 16:42:00 353

原创 LintCode N皇后问题

n皇后问题是将n个皇后放置在n*n的棋盘上,皇后彼此之间不能相互攻击。给定一个整数n,返回所有不同的n皇后问题的解决方案。每个解决方案包含一个明确的n皇后放置布局,其中“Q”和“.”分别表示一个女王和一个空位置。样例 对于4皇后问题存在两种解决的方案:[[".Q..", // Solution 1 "...Q", "Q...", "..Q."],["..Q.", // Solution 2 "Q.

2017-09-18 16:53:03 381

原创 二维数组斜行遍历

public class test { public static void main(String[] args){ int n =9; int[][] a = new int[n][n]; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ a[i]

2017-09-18 11:30:26 2871

原创 LintCode 正则表达式匹配

实现支持’.’和’*’的正则表达式匹配。‘.’匹配任意一个字母。‘*’匹配零个或者多个前面的元素。匹配应该覆盖整个输入字符串,而不仅仅是一部分。需要实现的函数是:bool isMatch(const char *s, const char *p)样例 isMatch(“aa”,”a”) → falseisMatch(“aa”,”aa”) → trueisMatch(“aaa”,”aa”) → fa

2017-09-12 15:02:30 248

原创 LintCode 恢复IP地址

给一个由数字组成的字符串。求出其可能恢复为的所有IP地址。样例 给出字符串 “25525511135”,所有可能的IP地址为:[ “255.255.11.135”, “255.255.111.35” ]和LintCode 电话号码的字母组合类似。 首先找到合适的位数组合。一共4位,每一位的长度要大于等于1,小于等于3,且4位和为字符串长度. 另外要判断每1 位的数字组合,是否合乎

2017-09-11 15:57:44 568

原创 LintCode 最长无重复字符的子串

给定一个字符串,请找出其中无重复字符的最长子字符串。例如,在”abcabcbb”中,其无重复字符的最长子字符串是”abc”,其长度为 3。对于,”bbbbb”,其无重复字符的最长子字符串为”b”,长度为1。从左向右扫描,遇到重复的字符时,从前面出现该字符的位置的下一个字符开始,重新扫描,直到扫描到最后。例如: abcbdefgdk 字符 a b c b d e f

2017-09-11 14:25:07 254

原创 LintCode 最长回文子串

给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。样例 给出字符串 “abcdzdcab”,它的最长回文子串为 “cdzdc”。挑战 O(n2) 时间复杂度的算法是可以接受的,如果你能用 O(n) 的算法那自然更好。第一次AC的连O(n2)都不是的,是O(n3),遍历所有子串。代码如下:class Solution: """

2017-09-11 11:51:20 220

原创 LintCode 电话号码的字母组合

Given a digit string excluded 01, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the telephone buttons) is given below.样例 给定 “23”

2017-09-09 10:54:52 350

转载 LintCode 生成括号

给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。 样例 给定 n = 3, 可生成的组合如下:“((()))”, “(()())”, “(())()”, “()(())”, “()()()” 参考资料,感谢Code_Ganker

2017-09-08 22:47:14 181

原创 LintCode 通配符匹配

参考资料 判断两个可能包含通配符“?”和“*”的字符串是否匹配。匹配规则如下:‘?’ 可以匹配任何单个字符。 ‘*’ 可以匹配任意字符串(包括空字符串)。两个串完全匹配才算匹配成功。函数接口如下: bool isMatch(const char *s, const char *p)一些例子:isMatch(“aa”,”a”) → false isMatch(“aa”,”aa”) → true

2017-09-07 18:00:40 275

原创 LintCode 落单的数 ⅡⅢ

参考资料 落单的数Ⅱ 给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。 样例 给出 [1,1,2,3,3,3,2,2,4,1] ,返回 4落单的数Ⅲ 给出2*n + 2个的数字,除其中两个数字之外其他每个数字均出现两次,找到这两个数字。 样例 给出 [1,2,2,3,4,4,5,3],返回 1和5利用位运算操作。 Ⅱ : int类型有32位。对

2017-09-05 09:18:26 252

转载 LintCode 主元素 ⅠⅡⅢ

虚心学习1 虚心学习2

2017-09-04 16:36:26 327

原创 LintCode 寻找缺失的数

给出一个包含 0 .. N 中 N 个数的序列,找出0 .. N 中没有出现在序列中的那个数。样例 N = 4 且序列为 [0, 1, 3] 时,缺失的数为2。题目说的不是很清楚,意思就是如下: 给定给一个序列,有N个数,对于{0,1,2,……N}这个N+1个数的序列中,少了哪一个数? 这道题和LintCode上另一道题类似——《落单的数》给出2*n + 1 个的数字,除其中一个数字之外其他每个

2017-09-04 15:07:47 344

原创 算法导论第16章练习题 16.1-4

16.1-4 假设有一组活动,我们需要将它们安排到一些教室,任意活动都可以在任意教室进行。我们希望使用最少的教室来完成活动。设计一个高效的贪心算法,求每个活动应该在哪个教室来进行。   (这个问题也被称为区间图着色问题。我们可以作出一个区间图,其顶点为已知的活动,其边连接着不兼容的活动。要求使用最少的颜色对顶点进行着色,使得所有相邻顶点颜色均不相同——这与使用最少的教室完成所有的活动的问题是对

2017-07-11 18:04:25 8099 2

原创 LintCode 吹气球

有n个气球,编号为0到n-1,每个气球都有一个分数,存在nums数组中。每次吹气球i可以得到的分数为 nums[left] * nums[i] * nums[right],left和right分别表示i气球相邻的两个气球。当i气球被吹爆后,其左右两气球即为相邻。要求吹爆所有气球,得到最多的分数。样例 给出 [4, 1, 5, 10] 返回 270nums = [4, 1, 5, 10] burs

2017-07-11 10:52:32 1312

空空如也

空空如也

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

TA关注的人

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