上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 19 下一页
摘要: 三十八、检查参数的有效性: 绝大多数方法和构造器对于传递给它们的参数值都会有些限制。比如,索引值必须大于等于0,且不能超过其最大值,对象不能为null等。这样就可以在导致错误的源头将错误捕获,从而避免了该错误被延续到今后的某一时刻再被引发,这样就是加大了错误追查的难度。就如同编译期能够报出的错误总比在运行时才发现要更好一些。事实上,我们不仅仅需要在函数的内部开始出进行这些通用的参数有效性检查,还需要在函数的文档中给予明确的说明,如在参数非法的情况下,会抛出那些异常,或导致函数返回哪些错误值等,见如下代码示例: 1 /** 2 * Returns a BigInteger w... 阅读全文
posted @ 2012-01-25 08:03 OrangeAdmin 阅读(2882) 评论(2) 推荐(1) 编辑
摘要: 三十、用enum代替int常量: 枚举类型是指由一组固定的常量组成合法值的类型,该特征是在Java 1.5 中开始被支持的,之前的Java代码都是通过“公有静态常量域字段”的方法来简单模拟枚举的,如: public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN = 1; public static final int APPLE_GRANNY_SMITH = 2; ... ... public static final int ORANGE_NAVEL = 0; public s... 阅读全文
posted @ 2012-01-23 00:01 OrangeAdmin 阅读(4981) 评论(6) 推荐(4) 编辑
摘要: 二十三、请不要在新代码中使用原生态类型: 先简单介绍一下泛型的概念和声明形式。声明中具有一个或者多个类型参数的类或者接口,就是泛型类或接口,如List<E>,这其中E表示List集合中元素的类型。在Java中,相对于每个泛型类都有一个原生类与之对应,即不带任何实际类型参数的泛型名称,如List<E>的原生类型List。他们之间最为明显的区别在于List<E>包含的元素必须是E(泛型)类型,如List<String>,那么他的元素一定是String,否则将产生编译错误。和泛型不同的是,原生类型List可以包含任何类型的元素,因此在向集合插入元素时, 阅读全文
posted @ 2012-01-20 07:13 OrangeAdmin 阅读(10291) 评论(6) 推荐(5) 编辑
摘要: 十三、使类和成员的可访问性最小化: 信息隐藏是软件程序设计的基本原则之一,面向对象又为这一设计原则提供了有力的支持和保障。这里我们简要列出几项受益于该原则的优势: 1. 更好的解除各个模块之间的耦合关系: 由于模块间的相互调用是基于接口契约的,每个模块只是负责完成自己内部既定的功能目标和单元测试,一旦今后出现性能优化或需求变更时,我们首先需要做的便是定位需要变动的单个模块或一组模块,然后再针对各个模块提出各自的解决方案,分别予以改动和内部测试。这样便大大降低了因代码无规则交叉而带来的潜在风险,同时也缩减了开发周期。 2. 最大化并行开发: 由于各个模块之间保持着较好的独立性,因... 阅读全文
posted @ 2012-01-18 07:42 OrangeAdmin 阅读(3638) 评论(0) 推荐(5) 编辑
摘要: 八、覆盖equals时请遵守通用约定: 对于Object类中提供的equals方法在必要的时候是必要重载的,然而如果违背了一些通用的重载准则,将会给程序带来一些潜在的运行时错误。如果自定义的class没有重载该方法,那么该类实例之间的相等性的比较将是基于两个对象是否指向同一地址来判定的。因此对于以下几种情况可以考虑不重载该方法: 1. 类的每一个实例本质上都是唯一的。 不同于值对象,需要根据其内容作出一定的判定,然而该类型的类,其实例的自身便具备了一定的唯一性,如Thread、Timer等,他本身并不具备更多逻辑比较的必要性。 2. 不关心类是否提供了“逻辑相等”的测试功能。 ... 阅读全文
posted @ 2012-01-16 00:07 OrangeAdmin 阅读(3272) 评论(0) 推荐(2) 编辑
摘要: 一、考虑用静态工厂方法代替构造器: 构造器是创建一个对象实例最基本也最通用的方法,大部分开发者在使用某个class的时候,首先需要考虑的就是如何构造和初始化一个对象示例,而构造的方式首先考虑到的就是通过构造函数来完成,因此在看javadoc中的文档时首先关注的函数也是构造器。然而在有些时候构造器并非我们唯一的选择,通过反射也是可以轻松达到的。我们这里主要提到的方式是通过静态类工厂的方式来创建class的实例,如:1 public static Boolean valueOf(boolean b) {2 return b ? Boolean.TRUE : Boolea... 阅读全文
posted @ 2012-01-13 07:17 OrangeAdmin 阅读(7163) 评论(4) 推荐(6) 编辑
摘要: 最近接手的项目都是需要用C++和Java协同进行开发的,其中前台是Java的Swing,后台是Linux平台的C++服务器,他们之间用Socket进行数据传输。至于数据库吗?起初客户的要求是Oracle,后来鉴于成本,改成MySQL和PostgreSQL了。好了,闲话少说,还是让我们言归正传吧。 之前写这个系列的目的很清楚,就是为了进一步加强自己在Java方面的技能,毕竟从事Java的开发也就3,4年的时间,而且所有的知识都是停留在Java Core(J2SE)上。起初写这个系列博客时几乎无从下手,一个偶然的机会得到同事的提醒,他们认为我更应该充分利用自己在C++方面的优势,不仅要清晰的阐.. 阅读全文
posted @ 2012-01-11 07:16 OrangeAdmin 阅读(4097) 评论(8) 推荐(7) 编辑
摘要: 此前写这个系列博客的初衷非常简单,就是打算帮助自己梳理一下JDK中的类库,毕竟自己对J2EE知识知之甚少,因此就想,还是让已经掌握的知识更夯实一些吧。记得在很早以前曾经写过类似的电子文档,将平时积累下来的技术和技巧都记录了下来,以备后用。然而在经过一段时间之后,重新翻出这些文档时,就会感觉帮助不是很大,经过分析后总结出以下几点原因: 1. 都是一些较小的技巧和看一遍就可以牢记的知识点; 2. 记录的比较分散,或者说凌乱,因为都是随手记下来的,后来也没有再经过很好的整理和规划; 3. 实际案例较少,不能做到一看就能立刻回忆起当时的场景,并且对关键技术要点没有突出显示,不能做到一目了然; 4. . 阅读全文
posted @ 2012-01-09 09:25 OrangeAdmin 阅读(5376) 评论(11) 推荐(7) 编辑
摘要: 经过2个多月的努力,该系列博文到这里已经即将结束,希望该系列的文章能够给诸位今后的工作带来些许帮助,也希望能有机会与大家在技术上多多交流,互相取长补短,同时也敬请大家能够继续关注我在后面给出的关于其他技术主题的系列博文。最后在这里感谢诸位网友的支持。 言归正传,该篇博客将承接上一篇博客,进入oracle启动脚本的主体逻辑部分。#1. /etc/oratab脚本的格式如下:# MyOrcl1:/opt/oracle/product/OraHome:Y# MyOrcl2:/opt/oracle/product/OraHome:N#该文件的开头处有很多的注释说明,都是以#开头,这些注释需要在后面的. 阅读全文
posted @ 2012-01-08 07:19 OrangeAdmin 阅读(3734) 评论(0) 推荐(4) 编辑
摘要: 该篇博客作为对之前Linux Shell常用技巧和高级技巧系列博客的总结,将以Oracle数据库服务器启动脚本为例,逐行进行解释和说明,以帮助我们能够更好的学习和理解Shell脚本的惯用技巧和强大之处。 Oracle的启动脚本从功能上讲主要分为两个部分,第一部分是初始化各种环境变量,以确认当前Oracle服务器的版本,从而进一步确定启动当前服务器的步骤和具体需要使用的各种Oracle工具,第二部分是基于之前判断的结果,读取当前服务器的各种配置信息,之后再通过Oracle提供的Shell命令完成数据库的启动工作。LOGMSG="logger -puser.alert -s " 阅读全文
posted @ 2012-01-06 07:21 OrangeAdmin 阅读(5297) 评论(2) 推荐(1) 编辑
上一页 1 ··· 9 10 11 12 13 14 15 16 17 ··· 19 下一页