studying
人心最苦处,最是拖泥带水
上一页 1 ··· 6 7 8 9 10 11 下一页
摘要: Java中调用wait方法或者sleep方法都可以让线程进入waitint或者time-waiting状态,但是它们还是 有所不同的: 如何证明呢?我设计了如下代码来证明: 输出结果: 该段代码的原理是先执行线程A,在进入synchonized之后调用wait方法,这个时候线程B也开始执行了; 而如 阅读全文
posted @ 2019-02-20 22:13 小白一只726 阅读(2498) 评论(0) 推荐(0) 编辑
摘要: 在实际开发过程中,我们有时候会遇到主线程调用子线程,要等待子线程返回的结果来进行下一步动作的业务。 那么怎么获取子线程返回的值呢,我这里总结了三种方式: Entity类 主线程等待(这个一看代码便知晓,没什么问题) Join方法阻塞当前线程以等待子线程执行完毕 通过实现Callable接口 这里又分 阅读全文
posted @ 2019-02-20 22:04 小白一只726 阅读(41387) 评论(0) 推荐(3) 编辑
摘要: 之前一篇随笔介绍了二分查找的最最基本的实现,该实现要求待查找的数据是有序且不存在重复元素的数组。 而今天我们就要介绍二分查找的变体问题,待查找数据是有序但是存在重复元素的数组,主要有以下几个问题: 这个呢,就要比不存在重复元素的数组稍微复杂一些,但也不难,只要我们能够找好临界条件就事半功倍了。 原理 阅读全文
posted @ 2019-02-20 10:51 小白一只726 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 先上结论:run只是Thread里面的一个普通方法,start是启动线程的方法。何以见得呢?可以执行下面的代码看看run和start的区别: 执行结果: 由此可以看到子线程是由start来启动的,里面调用了run,所以打印出来的是子线程的name。 另外也可以从start方法的底层代码看到,首先进入 阅读全文
posted @ 2019-02-16 20:57 小白一只726 阅读(8438) 评论(0) 推荐(4) 编辑
摘要: 不是计算机相关专业毕业的,从来没用过leetcode,最近在学习数据结构和算法,用leetcode练练手。 新手上路,代码如有不妥之处,尽管指出来。 今天抽空做的第一个题:Two Sum(最简单的呃呃呃) 题目如下: 解决思路: 现有数组nums[p-r],首先将nums从小至大排序,然后将nums 阅读全文
posted @ 2019-02-15 22:49 小白一只726 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 二分查找特别好理解,就类似于快排和归并当中用到的分治的思想,每次取中间数与目标数相比较,然后确定是大了还是小了,区间折半。 就比如: 小红选中了1-100中的某个数字(这个数字是56),要小明来猜,产生如下对话: 小明第一次猜测:68 小红:大了 小明第二次猜测:35 小红:小了 小明第三次猜测:5 阅读全文
posted @ 2019-02-15 22:28 小白一只726 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 基数排序算是桶排序和计数排序的衍生吧,因为基数排序里面会用到这两种其中一种。 基数排序针对的待排序元素是要有高低位之分的,比如单词adobe,activiti,activiti就高于adobe,这个是根据ascll码来的。 现在我们可以提出一个问题,怎样对字典里面的单词进行排序呢? 比如我们现在有如 阅读全文
posted @ 2019-01-30 22:21 小白一只726 阅读(442) 评论(0) 推荐(0) 编辑
摘要: 计数排序,属于桶排序特殊的一种。 当要排序n个数据的时候,如果所处的范围不大,我们可以取其中的最大值K,并将数据分散在K个桶里面, 每个桶里面的数据都是相同的(这样省去了桶内排序的时间),然后顺序取出就好啦。 当然计数排序说起来简单,写起来有些地方不好理解。 比如我们现在有2,5,3,0,2,3,0 阅读全文
posted @ 2019-01-30 21:49 小白一只726 阅读(550) 评论(0) 推荐(0) 编辑
摘要: 如何在O(n)内获取一个数组比如{9, 1, 2, 8, 7, 3, 6, 4, 3, 5, 0, 9, 19, 39, 25, 34, 17, 24, 23, 34, 20}里面第K大的元素呢? 我们可以使用类似快排的分区方式,将第K大的元素限定在数组的左边或右边,递归求取。 我的Java代码实现 阅读全文
posted @ 2019-01-29 23:49 小白一只726 阅读(1167) 评论(2) 推荐(0) 编辑
摘要: 我个人觉得快速排序和归并排序有相似之处,都是用到了分治的思想,将大问题拆分成若干个小问题。 不同的地方是归并排序是先把大问题拆分好了之后再排序,而快速排序则是一边拆分,一边排序。 快速排序的原理就是,针对一个数组,我们任意选取数组中的一个数,将数组中的数与它一一比较,如果小于它呢,就放左边, 大于它 阅读全文
posted @ 2019-01-29 22:59 小白一只726 阅读(886) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 下一页