volatile关键字的作用
volatile是怎么保证可见性的
写作废
http://www.tianshouzhi.com/api/tutorials/mutithread/286
transient关键字的作用
copyOnWriteArray
https://juejin.im/post/5aaa2ba8f265da239530b69e
ArrayBlockingQueue
hashmap和hashtable区别
除了线程安全方面还有吗??
concurrentHashmap锁的粒度
算法题
评测题目: 假设你已经知道了今天股市的走势,找出最佳的买入点和卖出点。要求O(n)
买卖股票的最佳时机
https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/
//O(n2),显然不符合要求
public static int[] findBest(int[] arr)
{
int begin,end;
int currentDiff,maxDiff=Integer.MIN_VALUE;
for(int i=0;i<arr.length;i++)
{
for(int j=i;j<arr.length;j++)
{
currentDiff = arr[j]-arr[i];
if(currentDiff > maxDiff)
{
maxDiff = currentDiff;
begin = i;
end = j;
}
}
}
return new int[]{begin,end};
}
含有正数负数的数组,求和最大的连续子数组。要求O(n)
最大子序和(这道题的简化版)
https://leetcode-cn.com/problems/maximum-subarray/
//这是当时写的一个错误的答案
//累和,《=0就放弃那个串,重新开始。
public static int[] findMax(int[] arr)
{
int sum = 0;
int begin = 0,end = 0;
int max= Integer.MIN_VALUE;
for(int i=0;i<arr.length;i++)
{
sum += arr[i];
if(sum <= 0)
{
begin = i+1;
}
if(sum > max)
{
max = sum;
end = i;
}
}
return new int[]{begin,end};
// int[] temp = new int[arr.length];
// for (int i=0;i<arr.length;i++)
// {
// sum += arr[i];
// temp[i] = sum;
// }
}
结果
1、java基础理解还够深入。
2、代码这块写得一般化。
人生如梦,一樽还酹江月