自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 My flair

<br />

2011-05-11 23:14:00 959

原创 ComparisonChain用法

有一个Foo类:class Foo{ int a = 0; String b =""; Foo(int a, String b){ this.a = a; this.b = b; } @Override public String toString() { return "Foo [a=" + a + ", b=" + b + "]"; }}那么如何为一个L

2011-04-19 23:03:00 4119 2

原创 Predicate与filter

  怎么根据某些条件来过滤Collection的元素?我们可以在循环里面判断元素是否符合条件然后来remove元素。  Guava已经作了这样的功能。例如你要在String的list里面有"a","b","A",要把非大小写a的元素去掉可以这样:Predicate aPredicate = new Predicate(){ @Override public boolean apply(String input) { if(input.toLowerCase().equ

2011-04-17 21:24:00 6973

原创 Joiner的用法

Google Guava提供了Joiner类专门用来连接String。譬如说有个String数组,里面有"a","b","c",我们可以通过使用StringBuilder来创建String "a,b,c"。Joiner提供了这一类的功能。譬如:Joiner joiner = Joiner.on(";");assertEquals("a;b;c", joiner.join(new String[}{"a","b","c"})); 如果被连接String里面要过滤null,可以这样:Joiner joi

2011-04-15 21:31:00 23067 1

原创 Immutable集合

    大家都知道JDK提供了Collections.UnmodifiableList(),Collections.UnmodifiableSet()和Collections.unmodifiableMap()这些包装方法。事实上它们的实现都是包装了原来的集合对象,然后在add,put,remove这样的方法上面抛出UnsupportedOperationException。这样就实现了Unmodifiable特性。这种做法在编程中叫作转发(forwarding)。    这样的Unmodifiable集合

2011-04-10 23:20:00 11996 2

原创 Java实现cache的基本机制

    我这里说的cache不是指CPU和RAM之间的缓存,而是java应用中间常用的缓存。最常使用的场合就是访问数据库的时候为了提高效率而使用的cache。一般的用法就是把数据从数据库读到内存,然后之后的数据访问都从内存来读,从而减少对数据库的读取次数来提高效率。   在使用cache的时候最容易犯的错误就是cache涉及了业务逻辑。使用cache的原意是只是提高程序效率,而不应该干涉程序结果。按照cahce的定义,cache应该是对数据访问端透明地工作。所以在使用cache的时候我们

2011-02-23 22:21:00 14446 1

翻译 Maven or Ant?

    Maven vs Ant就像IntelliJ vs Eclipse, SWT vs Swing 和 Spring vs EJB,算是一种"半宗教"话题。这2种工具都挺有趣,所以取舍就看你的需求了。Ant只是一个framework,或者说不是一种即存即用(out of the box)的build-DSL。使用者必须利用已有的Ant-task来编写build脚本。Ant task不会事先假设任何的默认的规范和配置,因此工程的所有文件布局都是你自己的工作。你对所有的东西都有完全的控制权--当工程规模变得

2011-01-03 16:47:00 1644

原创 JUnit4之隐藏特性"曝光"

  只要做Java开发的,99%的都用过JUnit。在JUnit4里面除了@Test, @Before, @BeforeClass这样基本的特性,JUnit4还有些很酷但是大家平时不太用的特性。我这里做一下介绍,大家可以用一下,或者至少玩一下:)Category: 分类测试当你有很多testcase,但是你不想每次都执行一边的时候。你可以把testcase分成若干类,然后就可以分类有选择的来执行这些testcase。例子:譬如你有2类testcase,一类是重要的用Important.class表示,还

2010-11-27 22:11:00 2534

原创 JUnit4框架代码解析

JUnit4的代码到底是怎么实现的。

2010-11-19 22:39:00 10218 3

原创 什么样的Java代码看上去比较专业?

  这么题目看起来就比较有争议,但是我认为"让代码看上去比较专业"是一个积极的做法,无论对谁都没有坏处。  首先这个题目说的是"看上去",所以我不会说明如何使代码真正专业。世界上有很多的书籍和文章告诉软件工程师如何写出专业的代码。如果要说"什么样的代码看上去比较专业?"那就要定义什么是专业的代码。嗯,关于这点我不能下一个准确的定义。那么可以这样,大家可以参考一些大家共认的专业代码。对于Java JDK代码来说几乎没人会否认它是专业的代码。或者一些很有影响力的open source代码,像Spring

2010-11-08 21:22:00 24615 101

原创 Notifier

/** * Notifier Pattern */public class Notifier { /** * Listener list */ List listeners = new ArrayList(); /** * Template for looping listeners. * As inner class LoopNotifier could access fields in out class. */ abstra

2010-10-21 23:55:00 1059

原创 @Rule: 在JUnit4中利用Rule

  @Rule是JUnit4的新特性。利用@Rule我们可以扩展JUnit的功能。譬如说我们要重复测试某个test方法,当然我们可以在@Test方法里面写循环。但是如果想把循环和测试逻辑分开就可以利用@Rule。/** * Provide repeatable test methods rule. * * @author 卢声远 */class RepeatableRule implements MethodRule{ //Loop times int times=1;

2010-10-20 20:59:00 17027

原创 如何在Eclipse上面浏览网页?

  工作中免不了要上网查阅资料。至少要上CSDN:) Eclipse自己有web browser的view。  方法如下:主菜单 -> Window -> Show View -> Other -> General -> Internal Web Browser。它的选项在:主菜单 -> Window -> Preferences -> General > Web Browser 。

2010-10-13 22:14:00 8562

原创 如何读代码?

  对于程序员來说除了写代码之外,很多的工作就是看別人写的代码了。  几乎所有的文章都是围绕如何去写代码,读代码的文章就相对很少。我自己在網上搜了一下結果也是這樣,那我和大家分享一下自己读代码的方法。我这里談的不是三五個class那樣的程序,因为这样小規模的程序不需要太多的技巧,一行一行看下來基本就能搞懂了。  有時候在察看开源項目的時候,如果你想參與其中,那項目的负責人基本上都是建议从bugfix開始了解程序,了解代码。所以第一个建议就是从bugfix和添加新功能入手。事實上在公司參加一個新項目的开发或者

2010-10-09 23:33:00 2409

原创 对java.util.List多字段排序

    对于一般的List的排序可以使用java.util.Collections.sort(List, Comparator)這樣簡單易用的方法。但是經常看到有人在問如何對元素的多字段排序。這個問題就像SQL語句裏面的‘Order By’語句,後面可以跟若干個排序條件。譬如對於元素Foo排序:class Foo{    int a;    int b;}Foo.a是第一排序字段,Foo.b是第二排序字段,也就是在Foo.a相等的2個Foo的情況下判斷Foo.b。那麽我們的Comparator可以這樣寫:C

2010-10-01 11:35:00 7917

翻译 采访Java Collection的作者Joshua Bloch

想必用Java的人都用过JDK的容器类吧,什么List, Set, Map啦。每天这些代码在全世界成千上万的JVM里面运行,每天数以万记的程序员在使用这些类。你知道这些这么cool的代码是谁写的吗?是Joshua Bloch。他以前是在Sun工作,现在跳到Google了,Google是无敌了。他可是大师级别的人物了。虽说他是大师但是人家也在写代码,所以这样的人的文章必定是脚踏实地。而非有些只会动嘴皮子,开会的时候在白板上画出一堆框框线线然后让别人来coding的“专家”。虽然自己写了多年Java也设计了不少

2010-09-16 23:25:00 3570 1

原创 为什么子类不能访问基类的private成员?为什么要这样设计?

  看到很多朋友提问“为什么子类不能访问基类的private成员”?随后看到很多朋友回答“这是规范”“这是封装的特性”类似这样的回答。我觉得大家都是对的。但是有时候您需要关注提问的重点在于why?为什么Java要这样设计private?  首先,private成员具有良好的封装性(encapsulation)。这个性质对于良好的设计来说是个重要的要素。因为良好的封装性会减小耦合的。服务代码可以定义public函数给客户代码。这样一来客户代码可以和服务代码并行开发。更重要的是,如果修改服务代码的内部实现也不需

2010-09-14 22:41:00 27511 7

原创 为数据提供返回String形式的编程访问,不只是toString()

   这个建议来自Joshua Bloch的“Provide Programmatic Access to All Data Available in String Form”。我这里以他的提纲为基础然后结合自己的理解写了这篇短文。  这个建议的意思是如果你写一个模块就要把模块里面可以公开的数据信息以String形式提供给客户。因为如果你不提供这样的String访问接口,那么这个使用这个模块的客户会感到很不方便。更糟糕的是可能他自己去把这些信息解析成String。  他举了个例子就是java.lang.Th

2010-08-29 13:10:00 1282 1

原创 为什么覆写equals的时候一定要覆写hashCode?

经常在论坛上面看到复写hashCode函数的问题,很多情况下是一些开发者不了解hash code,或者和equals一起用的时候不太清楚为啥一定要复写hashCode。对于hash code的理论我不想多说,这个话题太大。我只想说用hash code的原因只有一个:效率。理论的说法它的复杂度只有O(1)。试想我们把元素放在线性表里面,每次要找一个元素必须从头一个一个的找它的复杂度只有O(n)。如果放在平衡二叉树,复杂度也有O(log n)。接下来说为啥很多地方说“覆写equals的时候一定要覆写hashCo

2010-08-23 22:48:00 30454 47

原创 Mylyn是什么?是Myelin,是髓鞘质

如果您使用Eclipse开发java的话,您也许知道Mylyn这个插件。因为这个插件很有名,是Eclipse默认自带插件,网上关于它的文章也很多。感觉非常有用,特别是当手上七七八八事情比较杂的时候它能帮你安排任务。有时候早上一来用户就报上来5,6个bug,,,,打起精神准备大站一把。刚改好1个突然被老板拉去开会,开好会老板决定追加一个功能。好在你思路清晰把手头改了一半的bug保存好记录,开

2010-03-17 22:06:00 7502

翻译 采访Gavin King(待续)

 您能告诉我们您最近在忙啥?我是hibernate项目的创始人,这是个open source ORM的java解决方案。我最近加入了JBoss公司,所以我可以全身心投入hibernate的开发,支持,培训以及咨询方面的工作。同时我也通过JCP在做java持久层标准化的工作。我刚刚和Christian Bauer写完一本叫"Hibernate in Action"的书。您

2010-01-23 12:44:00 917

原创 单元测试时的new InitialContext() mock

 在单元测试中经常会碰到被测代码里面有类似:Context context=new InitialContext();context.lookup("java:comp/env/XXX"); 往往是ejb调用,或者其他资源的调用。这个时候也许你要启动application server......麻烦的单元测试-_-其实在这样的测试中你可能已经用了个jndi.prope

2009-11-26 22:37:00 1297

原创 什么样的java代码容易memory leak?

 很多developer知道java也可能memory leak,关于这个主题已经有很多文章了。我这里只想分享一下自己的memory leak的经验。 说明一下这里指的memory leak是程序不及时释放heap导致的OutOfMemoryError. 首先一种情况是collection或者是map一直被put数据,没有机会remove,导致OutOfMemoryError。

2009-11-08 14:51:00 3757

原创 EJB2移植到EJB3的一些实践

众所周知EJB被人病诟的很大的一个缺陷就是它复杂的配置,和奇异的编程模型。所以EJB3的推出减小了这些毛病, 但是Rod Johnson似乎还是不满意:) 关于2个标准的对比已经有很多文章和书籍了,我这里不再赘述。我只想说的是自己经历到的移植的经验,希望和大家分享。主要是session bean的移植。首先是开发EJB配置的模式由于EJB3把配置由descriptor移到了

2009-11-01 13:16:00 1699

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除