- 博客(5)
- 收藏
- 关注
原创 BlockingQueue浅析
概述concurrent包中,BlockingQueue不光实现了一个完整队列所具有的基本功能,同时在多线程环境下,他还自动管理了多线间的自动等待于唤醒功能,从而使得程序员可以忽略这些细节,关注更高级的功能。 生产者线程向队列插入元素,消费者线程则取出它们,使用队列,可以优雅地从一个线程向另一个线程传递数据。BlockingQueue常用方法 方法 正常动作 特殊情况下动作 put
2017-03-18 19:47:27 509
原创 剑指offer学习笔记(Java实现)(31-40)
题目31:连续子数组的最大和在数组中找一个连续子数组,使它的和最大。我的方法:利用一个local维护局部子数组最大和,一个global维护全局子数组最大和。因为子数组要连续,local[i]只能出现两种情况:加上当前a[i],即local[i] = local[i-1]+a[i];重新开始,即local[i] = a[i]。我们取较大的作为局部最大和。global[i]的取值也有两种情况:原来的最大
2017-03-18 19:26:22 395
原创 剑指offer学习笔记(Java实现)(26-30)
题目26:复杂链表的复制。定义一个新的数据结构,每个节点除了具有普通链表的next域外,还有一个额外的引用指向任意节点。我们要对由该特殊数据结构形成的链表进行复制。我的方法:也就是克隆一个这种特殊链表,很快想到先不考虑原链表sibling域,复制出一个新的链表,然后再去给sibling域赋值。由于sibling可以指向任何节点,而且我们是根据原链表的sibling来确定新链表中的sibling,所以
2017-03-18 19:16:17 582
原创 剑指offer学习笔记(Java实现)(21-25)
题目21;定义一个具有min函数(返回栈内最小值)的栈数据结构。首先这个栈要具有普通栈所具有的push()和pop()方法,那么内部一定包含一个Stack。至于还要能实现min函数,而且还是在O(1)时间复杂度内,我们不得不考虑用额外的空间。如果直接使用一个int变量存储当前的最小值,我们的确可以获得最小值,但是当栈pop()了以后,我们无法获得次小值。我们需要一个数据结构来动态保存每个时刻的最小值
2017-03-18 19:11:07 299
原创 ThreadLocal浅析
概述这里是基于java JDK1.8源码分析的。首先从整体上描述一下ThreadLocal: ThreadLocal中的ThreadLocalMap静态内部类使用的是线性探测表(散列表)作为数据结构。 每一个Thread对象都持有一个ThreadLocalMap,该Map以ThreadLocal对象的引用作为Key来查询/保存/删除Value。 一个线程中可以使用多个ThreadLocal对象来保存
2017-03-10 10:32:40 455
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人