存档六月, 2006

下了个MyEclipse准备试用

早就听说了MyEclipse这个东东,可总是没有想着去试用一下。一方面觉得习惯现有的开发工具,纯的Eclipse或者Eclipse WTP来开发Web程序,后来在它的官方网站上面看到了介绍,发现它的功能的确很强大,就下载了一个了。尤其新增加的Web 2.0(Ajax)相关的功能,比如JavaScript编辑器,这个我很喜欢。

由于它是收费的,所以需要破解~~~,不过Google一下就能找到破解文件的下载地址了,这里就不给出了。

留言

读写ATOM feed的库

今天看来TSS的newsletter,里面介绍了一些常见的读写ATOM feed的Java库,现在记录下来,以备以后使用。

留言

我做SCJP模拟题(2)

今天的测验用了43分钟,结果是49/61。

还是说说出错的地方:

  • 当类加载的时候,静态变量总是比非静态变量先初始化,静态变量按照出现的顺序初始化。
  • 当存在两个分别接受String和Object做参数的overloadings时,传入null会调用String的那个方法,因为String的更加specific。
  • %操作符对float是可用的。7.5f % 2.9f = 1.7f
  • 除了以命令行的方式可以启用/禁用断言之外,也可以通过程序的方式做到。ClassLoader类中的方法。
  • 启用断言的命令行是:java -enableassertions

留言

读完了Java 1.5 Tiger: A Developer’s Notebook

这本书主要介绍了JDK 1.5 Tiger的新特性,包括generics, boxing and unboxing, varargs, enums, annotations, formatting, the for/in loop, concurrency等。对于每种新特性的介绍都比较简单,入门性质的,加上原来对这些新特性都有一定的了解,所以我看得很快。

我觉得比较难理解的就是java.util.concurrent包了,里面的东西还没有在实际中使用过。范型倒是用过不少。自动装箱和拆箱也在不知不觉中用了。枚举类型也使用过。for/in循环的确很方便。static import可以少写很多代码。annotations则只是使用已有的,比如hibernate annotations。

下面是书的封面:

Java 1.5 Tiger: A Developer's Notebook

留言

Joshua Bloch关于API设计的keynote

API设计的过程

  • Gather Requirements–with a Healthy Degree of Skepticism:以use cases的形式。
  • Start with Short Spec–1 Page is Ideal:让越多的人参与越好,随着信心的增加不断扩充。
  • Write to Your API Early and Often:在实现API之前,在描述之前,扩充之后继续编写
  • Writing to SPI is Even More Important:在发布之前先写至少3个插件
  • Maintain Realistic Expectations:多数API设计都限制过多,有犯错误的心理准备

通用原则

  • API Should Do One Thing and Do it Well:功能应该容易说明
  • API Should Be As Small As Possible But No Smaller:有疑问的时候就忽略,追求power-to-weight比
  • Implementation Should Not Impact API:不要让实现细节泄漏到API中
  • Minimize Accessibility of Everything:最大化信息隐藏
  • Names Matter–API is a Little Language:名字应该是顾名思义的;一致的;代码应该像散文
  • Documentation Matters
  • Document Religiously:仔细的说明状态空间
  • Consider Performance Consequences of API Design Decisions:坏的决策影响性能;不要wrap API来获取性能
  • Effects of API Design Decisions on Performance are Real and Permanent
  • API Must Coexist Peacefully with Platform

类设计

  • Minimize Mutability:如果只能是mutable的,保证小的状态空间
  • Subclass Only Where It Makes Sense:不能为了容易实现,就让一个Public类继承另外一个Public类。
  • Design and Document for Inheritance or Else Prohibit it:继承违背了封装

方法设计

  • Don’t Make the Client Do Anything the Module Could Do
  • Don’t Violate the Principle of Least Astonishment
  • Fail Fast–Report Errors as Soon as Possible After They Occur:编译时刻最好;运行时刻,第一次坏方法调用的时候
  • Provide Programmatic Access to All Data Available in String Form:否则,客户端代码必须解析字符串
  • Overload With Care:避免模糊的overloadings;如果必须提供,保证相同的参数有相同的行为
  • Use Appropriate Parameter and Return Types:Favor interface types over classes for input;Use most specific possible input parameter type;Don’t use string if a better type exists;Don’t use floating point for monetary values;Use double (64 bits) rather than float (32 bits)
  • Use Consistent Parameter Ordering Across Methods
  • Avoid Long Parameter Lists:3个或更少最好
  • Avoid Return Values that Demand Exceptional Processing

异常设计

  • Throw Exceptions to Indicate Exceptional Conditions:不要迫使客户端代码使用异常来控制流程;不要悄无声息的失败
  • Favor Unchecked Exceptions
  • Include Failure-Capture Information in Exceptions

 

留言

我做SCJP模拟题(1)

闲来无事,想到了以前下载的Whizlabs SCJP 1.4的模拟器,就做了做其中的Practice 1,结果是48/61,78%,感觉还不是特别好。下面说说一些错的题。

  • Boolean的String构造函数,只有当传入的字符串与true相等时(不论大小写),结果才是布尔值true,否则就是false。
  • 下面的代码char [] = new char[5]执行后,y[4] = ‘\u0000′。
  • int a = 5, b = -1; 求值a%5。计算a%b的最简单的办法是,首先去掉两个操作数的负号,然后求值。如果左边操作数是负的,那么结果就是负的。右边操作数的符号不需要考虑。

 

留言

读完了Java Puzzlers

经过断断续续的阅读,终于读完了Joshua Bloch和Neal Gafter的新作《Java™ Puzzlers: Traps, Pitfalls, and Corner Cases》。以前看过了Joshua Bloch的Effective Java,觉得很不错。这本Java Puzzlers也不错,内容涵盖了Java开发中的很多鲜为人知的地方。文章的行文也很幽默,是一本可以提高自己对于Java的理解的好书。

下面是书的封面:

Java Puzzlers

留言