存档: 标签: ‘Java Core’

Butterfly Container Introduction

没有评论 2011年5月20日

与上篇文章(Butterfly Scheduling Introduction)一样,这篇文章也是来自于http://butterfly.jenkov.com网站。其实,除了这两个项目之外,这个网站还有Butterfly Web UIButterfly PersistenceButterfly Testing Tools三个小项目,其中Butterfly Container是一个依赖注入容器(IOC)。

它比Spring、Pico、Guice更小,并且更加灵活,更加易于使用。Butterfly Container使用一种简单,灵活,类似于Java的配置语言来代替XML(这段介绍来自于各大开源网站对其介绍),他是其他几个项目的基础。

Butterfly Container和Spring、Pico、Guice一样是一个依赖注入的容器。依赖注入的核心功能就是将变量绑定在一起(wire objects together)。你能够向容器申请一个对象,容器会确保所有的依赖(方法参数,协作对象)都注入到这个对象然后将其返回给你。

如果你对依赖注入不熟悉,你可以看看这篇文章:What is Dependency Injection? 继续阅读…

Butterfly Scheduling Introduction

2 条评论 2011年5月19日

Butterfly Scheduling 是一个轻量级的调度工具,相对而言,Quartz更为大家所熟知,这里主要是介绍一下Butterfly Scheduling,让大家能够熟悉这个小工具。Butterfly Scheduling  的Jar包非常小只有20几k,在项目中添加jenkov-butterfly-scheduling-1.3.9-beta.jar,然后就可以测试。需要说明的是官网(http://butterfly.jenkov.com/scheduling/index.html)上面的1.0版本存在一些bug。 继续阅读…

该读一些源码

没有评论 2011年3月2日

今天终于知道我为什么会接到猎头打来的电话了,因为我曾经注册了若邻网(【我的若邻网】)并在其中公开了自己的联系方式,只是可惜猎头打来电话都被我推掉了。呵呵,主要是觉得现在经验和能力还不够,还有待进一步学习。
昨天晚上睡觉前在CSDN看到了这篇文章【J2EE学习中一些值得研究的开源项目】。这篇文章写得很好,对刚工作不久的java工程师来说,有一个很好的提醒、建议、启示作用,对我们提高个人技术能力来说有很大帮助作用,当然,这主要还是在于个人的努力了,如果你不努力、不去深究一些源码,你就很难在java的路上走的很远了。
上面这篇文章提到了很多源码,可惜哦,时间有限不能有不可能一下子读完所有的源码, :( 。最近看了看commons digest、commons chain、struts2、dbunit的源码,由于时间有限struts2还是刚开始看了一点,然后又开始看dbunit的源码了,感觉自己就想一口吃成个大胖子,哎!
java里的技术太多,还是需要慢慢的一点点的学习和研读,加油!

Java ClassLoader

没有评论 2010年12月4日

Java的类装载器是Java动态性的核心,是用来把类(class)装载进JVM的。VM规范定义了两种类型的类装载器:启动内装载器(bootstrap)和用户自定义装载器(user-defined class loader)。所有user-defined的class loader都是java.lang.ClassLoader的子类。jvm内置的class loader有3种,分别是 Bootstrap ClassLoader, Extension ClassLoader(即ExtClassLoader),System ClassLoader(即AppClassLoader)
bootstrap是JVM自带的类装载器,用来装载核心类库,如java.lang.*等。
Extension ClassLoader是用来加载扩展类,即/lib/ext中的类。
AppClassLoader用来加载Classpath的类,是和我们关系最密切的类。
URLClassLoader用来加载网络上远程的类,暂且不讨论。 继续阅读…

这不是我想要的生活

2 条评论 2010年11月21日

出差两周基本上什么事情没做,每周711的生活:工作7天每天11小时;晚上11点到家,1点睡觉,早上7点起床。没有网络,除了上班,吃饭就是睡觉。有时候真想向老板提出辞职说我不干了,但是迫于生活的压力,为了赚够足够明年生活的钱,只能继续疲惫的工作。
出差两周后回到北京,今天睡了一天,终于补足了两周欠下的睡眠。醒来之后打开电脑,发现自己不知道该做什么了。两周的出差,两周的假忙碌,让我现在没有了一点工作或是学习的动力。从早到黑,一天18小时的沉浸在IT世界里,这样好吗?从早到黑,一天11小时的埋头工作,这样不累吗?起早贪黑,埋头工作,身心疲惫,我的个人价值就只能用汗水和疲惫来衡量吗?
这不是我想要的生活,除了工作,我还该做点其他的事情,可却总是没有属于自己的时间,无奈。除了java,我还学点其他的什么,逃离软件回归硬件,期待。 继续阅读…

Java interface RandomAccess

没有评论 2010年10月19日

最近在读Java jdk的源码和api文档,看到RandomAccess接口,该接口中没有定义任何方法。
在api中这样写到:

List 实现所使用的标记接口,用来表明其支持快速(通常是固定时间)随机访问。此接口的主要目的是允许一般的算法更改其行为,从而在将其应用到随机或连续访问列表时能提供良好的性能。

将操作随机访问列表的最佳算法(如 ArrayList)应用到连续访问列表(如 LinkedList)时,可产生二次项的行为。如果将某个算法应用到连续访问列表,那么在应用可能提供较差性能的算法前,鼓励使用一般的列表算法检查给定列表是否为此接口的一个 instanceof,如果需要保证可接受的性能,还可以更改其行为。

现在已经认识到,随机和连续访问之间的区别通常是模糊的。例如,如果列表很大时,某些 List 实现提供渐进的线性访问时间,但实际上是固定的访问时间。这样的 List 实现通常应该实现此接口。实际经验证明,如果是下列情况,则 List 实现应该实现此接口,即对于典型的类实例而言,此循环:

for (int i=0, n=list.size(); i < n; i++)
list.get(i);

的运行速度要快于以下循环:

for (Iterator i=list.iterator(); i.hasNext(); )
i.next();

通过上面的说明,我们应该记住对于ArrayList我们应该使用不带迭代器的for循环,而对LinkedList我们应该使用迭代器循环。当我们不知道list集合的具体类型时候,我们可以通过instanceof来分别处理。