- 浏览: 888785 次
- 性别:
- 来自: 杭州
最新评论
-
u013146595:
楼主你人呢,搬家了吗。还想看你的文章
读代码的“深度优先”与“广度优先”问题 -
zjut_ywf:
写的不错,比书上还具体,受益匪浅
MapReduce:详解Shuffle过程 -
sxzheng96:
seandeng888 写道Combiner阶段应该是在Par ...
MapReduce:详解Shuffle过程 -
sxzheng96:
belivem 写道你好,大神,我也是这一点不是很清楚,看了你 ...
MapReduce:详解Shuffle过程 -
jinsedeme0881:
引用77 楼 belivem 2015-07-11 引用你 ...
MapReduce:详解Shuffle过程
文章列表
没事的时候翻看lang.reflect包下的代码,发现有两部分内容:涉及反射和动态代理。
很多地方都可以看到动态代理的影子,只是一直没仔细看下。
在学习之前,先提出几个问题,带着问题来看代码:
1.什么是动态代理?
2.为什么使用 ...
- 2009-06-17 16:30
- 浏览 51021
- 评论(17)
想要写个key, value有序的HashMap,出现性能问题,大家帮忙给个主意吧。
先说下我的设计思路:
LinkedHashMap里面有一个模拟的“双向循环链表”,用来保存entry的插入顺序,我也可以采用这种方法来在插入的时候保存key和value的有序。
这里暂定名为OrderedHashMap,主要代码是从LinkedHashMap抄过来的,它也维护着两个模拟“双向循环链表”:keyHeader和valueHeader,保持key或value由小到大的顺序。当有个元素put进来后,除把它存在散列桶中外,还要在keyHeader按key的大小插入,也要在valueHeader上按v ...
现在会读很多代码,小组同事写的、API、框架等,在这个问题上,感触颇深。
在读到一个主要逻辑的时候,如果它调用其它地方的方法,后面的处理要使用这个方法返回的数据。通常代码都相当多的,也不会在短时间内就能理解所有的逻辑。这时候我就会很困惑:根据调用的方法名称大概理解下概念,继续往下面读代码?还是点进去,看那个方法里面到底是什么?
如果那段代码里面还有很多外部调用,那更会面临更多的困惑。
难道这不是一个“深度优先”与“广度优先”的问题吗?
深度优先:遇到外部调用方法,点进去看它里面的处理逻辑,等看完,返回到主代码继续;
广度优先:先不管它里面怎么实现的,继续看后面的代码,等把主体代码理解通透 ...
在程序中,集合类每天都在使用,以致于某些代码充斥着List和Map,一直没有机会整理下它们背后的实现原理。这几天不太忙,正好可以看会代码,补充下概念。
和集合类的大致分类类似,下面我也分List,Map和Set来描述。
一. List
1).ArrayList
ArrayList维护着一个对象数组。如果调用new ArrayList()后,它会默认初始一个size=10的数组。
每次add操作都要检查数组容量,如果不够,重新设置一个初始容量1.5倍大小的新数组,然后再把每个元素copy过去。
在数组中间插入或删除,都要移动后面的所有元素。(使用System.arraycopy ...
- 2009-04-03 13:57
- 浏览 14574
- 评论(9)