`
langyu
  • 浏览: 888785 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
没事的时候翻看lang.reflect包下的代码,发现有两部分内容:涉及反射和动态代理。 很多地方都可以看到动态代理的影子,只是一直没仔细看下。 在学习之前,先提出几个问题,带着问题来看代码: 1.什么是动态代理? 2.为什么使用 ...
想要写个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 ...
Global site tag (gtag.js) - Google Analytics