上一页 1 ··· 3 4 5 6 7 8 下一页
摘要: 如果你定义了一个单实例的java bean,它有若干属性,但是有一个属性不是线程安全的,比如说HashMap。并且碰巧你并不需要在不同的线程中共享这个属性,也就是说这个属性不存在跨线程的意义。那么你不要sychronize这么复杂的东西,ThreadLocal将是你不错的选择。 举例来说: import java.util.HashMap; public class TreadLocalT... 阅读全文
posted @ 2013-01-20 23:36 永远是学生 阅读(71012) 评论(3) 推荐(1) 编辑
摘要: 在使用Lock之前,我们都使用Object 的wait和notify实现同步的。举例来说,一个producer和consumer,consumer发现没有东西了,等待,produer生成东西了,唤醒。 线程consumer 线程producer synchronize(obj){ obj.wait()... 阅读全文
posted @ 2013-01-20 13:54 永远是学生 阅读(15373) 评论(0) 推荐(4) 编辑
摘要: 前段时间review同事的代码,发现可以简化成如下的模型:Thread 1Thread 2lock.lock(); condition.await(); lock.unlock()lock.lock(); condition.signal(); lock.unlock(); 怀疑是个死锁。写了下面这个case模拟了一下,却没有问题。但是T2为何能进入signal呢?根据javadoc的文档,这明显是第三种情况:public void lock()Acquires the lock.Acquires the lock if it ... 阅读全文
posted @ 2013-01-13 11:14 永远是学生 阅读(463) 评论(0) 推荐(0) 编辑
摘要: 垃圾回收是JVM的后台线程完成的,回收内存中不再被引用的那些对象所占用的内存空间。垃圾回收机制在内存达到预先设定的阀值后被触发。经过几个版本的演化,目前主流的算法是CMS,即concurrent mark and sweeping,新一代GC算法G1(garbage first)也在Java6中实现。本文将介绍这几种垃圾回收算法,理解了这些算法,可以帮助我们写出高性能的java程序,并能诊断一些s... 阅读全文
posted @ 2013-01-12 22:42 永远是学生 阅读(2079) 评论(0) 推荐(0) 编辑
摘要: 本文只说如何使用。假设你和我一样,也要构造一个系统,系统中有若干service,假设是A,B,C吧。其中A 依赖 B 依赖 C。C是最基本的。现在需要对A进行单测,但是C需要依赖于外部环境,而这个环境需要复杂而且不稳定的数据库。怎么办呢?这时你就需要mock掉C。第一步你需要在appctx文件中申明:<bean id="serviceC" name="service_c_Mock" class="org.mockito.Mockito" factory-method="mock"> <constr 阅读全文
posted @ 2012-12-09 22:35 永远是学生 阅读(2008) 评论(1) 推荐(0) 编辑
摘要: 一个service长达1100行。 首先找到那些private的方法,发现是static的,于是把它们移动到一个静态类。这样减少了100行。 第二步发现几个已经不再使用的方法,将其删除。减少100行。 发现service中的一些方法没有逻辑关系:有的是对实体进行编辑的,有的是对实体进行查询的,另外的则是生成实体的方法。于是将原来的service分成了三个。 然后发现生成实体的接口还是很大,... 阅读全文
posted @ 2012-12-07 23:54 永远是学生 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 目前觉得j2ee项目单测覆盖率不高的原因主要有以下几个: 1. 大家开发时间紧张,写完就联调,联调完就提测,没有时间做单测; 2. 大量代码放在action中,和前端输入耦合在一起,不方便单测; 3. 和外部接口紧密耦合,外部接口不稳定,或者数据不可预知,无法进行单测; 4. 有些方法逻辑复杂,想要run起来需要复杂的环境搭配,代价太大,让人望而却步,也就不单测了。 借鉴一下同事的经验,... 阅读全文
posted @ 2012-12-07 09:03 永远是学生 阅读(302) 评论(0) 推荐(0) 编辑
摘要: by 叶月幽 首先说明一点,写这篇文童不是为了谴责父母,不是为了表达愤怒,不是为了博取同情。只是希望曾经受到伤害的现在已经长大的孩子们,在看完这篇文字后,能有勇气面对我们内心的伤痕,化解对上一代的怨念,并阻断原生家庭对我们的负面影响继续往我们的下一代延续。 我是八十年代初的独生女,父母出生在三年自然灾害时朗,成长在文革时朗,又经历了上山下乡。他们并没有因为只生我一个就对我呵护备至... 阅读全文
posted @ 2012-12-02 12:21 永远是学生 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 个人觉得一套好的API应该在三个方面做到最好,注意是同时满足而不牺牲任何一个: 1. 精确的实现功能,不多不少; 2. 简洁明了,方便用户使用,不让他们迷糊; 3. 具备良好的可扩展性,遵循open-close原则; 当然最近我又学到一点,API应该易于理解和交流,过于深奥的设计是很容易被抛弃的。 阅读全文
posted @ 2012-12-01 23:13 永远是学生 阅读(188) 评论(0) 推荐(0) 编辑
摘要: Character sets is a list of symbols. If you compare ASCII to latin1, with latin1 you will be able to write all american words because latin1 contains all ASCII characters, which are sufficient to write any american word. On the contrary, with ASCII you will not be able to write all words of Western 阅读全文
posted @ 2012-11-30 13:54 永远是学生 阅读(243) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 下一页