上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 37 下一页
摘要: 并发性(concurrency)和并行性(parallel)是两个概念,并行是指在同一时刻,有多条指令在多个处理器上同时执行;并发指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得宏观上具有多个进程同时执行的效果。多线程编程优点:进程之间不能共享内存,但线程之间共享内存非常容易。系统创建线程所分配的资源相对创建进程而言,代价非常小。Java中实现线程的方式目前有三种:一:继承Thread类创建线程类package com.clzhang.sample.thread;// 通过继承Thread类来创建线程类public class ThreadByExtends extends 阅读全文
posted @ 2013-08-14 19:55 那些年的事儿 阅读(9995) 评论(0) 推荐(0) 编辑
摘要: 1. 背景 在Windows(从XP到Win7)中删除文件时,无论是Delete或者是Shift+Delete,都不能真正的删除文件,它做的事情只是从文件分配表中删除了该文件的信息,而并未将文件从存储介质中真正删除。直到硬盘需要此数据空间时,原先的数据才会被覆盖。 因为这样的删除机制,所以网上才有很 阅读全文
posted @ 2013-08-13 14:19 那些年的事儿 阅读(9956) 评论(0) 推荐(0) 编辑
摘要: No57 只针对异常的情况才使用异常异常应该只用于异常的情况下,它们永远不应该用于正常的控制流。No58 对可恢复的情况使用受检异常,对编程错误使用运行时异常Java程序设计语言提供了三种可抛出结构(throwable):受检的异常(checked exception)、运行时异常(run-time exception)和错误(error)。如果期望调用者能够适当地恢复,对于这种情况就应该使用受检的异常。用运行时异常来表明编程错误。例如:数组访问下标越界。错误往往被JVM保留用于表示资源不足、约束失败,或者其它使程序无法继续执行的条件。No60 优先使用标准的异常表60 常用的异常异常使用场合 阅读全文
posted @ 2013-08-10 14:21 那些年的事儿 阅读(392) 评论(0) 推荐(0) 编辑
摘要: No45 将局部变量的作用域最小化要使局部变量的作用域最小化,最有力的方法就是在第一次使用它的地方声明。几乎每个局部变量的声明都应该包含一个初始化表达式。如果你还没有足够的信息来对一个变量进行有意义的初始化,就应该推迟这个声明,直到可以初始化为止。for循环比while循环好,参考如下两段代码:有问题的代码,运行时不会得到想要的结果:Iterator i = c.iterator();while(i.hasNext()){ doSomething(i.next());}...Iterator i2 = c2.iterator();while(i.hasNext()) { ... 阅读全文
posted @ 2013-08-10 14:18 那些年的事儿 阅读(288) 评论(0) 推荐(0) 编辑
摘要: No38 检查参数的有效性对于公有的方法,要用Javadoc的@throws标签(tag)在文档中说明违反参数值时会抛出的异常。这样的异常通常为IllegalArgumentException、IndexOutOfBoundsException或NullPointerException。/*** ...* @throws ArithmeticException if m is less than or equal to 0*/public BigInteger mod(BigInteger m) { if(m.signum() =0 && offset = 0&& 阅读全文
posted @ 2013-08-10 14:08 那些年的事儿 阅读(296) 评论(0) 推荐(0) 编辑
摘要: No30 用enum代替int常量一:综述int枚举模式,示范:// The int enum pattern - severely deficient!public static final int APPLE_FUJI = 0;public static final int APPLE_PIPPIN = 1;public static final int APPLE_GRANNY_SMITH = 2;还有一种是这种模式的变体,使用String常量代替int常量,称为String枚举模式。缺点:int枚举是编译时常量,如果它发生了变化... 阅读全文
posted @ 2013-08-08 11:56 那些年的事儿 阅读(639) 评论(0) 推荐(0) 编辑
摘要: Java1.5发行版本中增加了泛型(Generic)。在没有泛型之前,从集合中读取到的每一个对象都必须进行转换。如果有人不小心插入了错误的类型对象,在运行时的转换处理就会出错。有了泛型之后,可以告诉编译器每个集合中接受哪些对象类型,编译器自动地为你的插入进行转化,并在编译时告知是否插入了类型错误的对象。这样可以使程序更加安全,也更加清楚。No23 请不要在新代码中使用原生态类型术语示例所在条目参数化的类型List实际类型参数String泛型List形式类型参数E无限制通配符类型List原生态类型List有限制类型参数递归类型限制>有限制通配符类型List泛型方法static List a 阅读全文
posted @ 2013-08-08 11:48 那些年的事儿 阅读(573) 评论(0) 推荐(0) 编辑
摘要: No13 使类和成员的可访问性最小化要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节。模块之间只通过它们的API进行通信,一个模块不需要知道其他模块的内部工作情况。这个概念被称为信息隐藏(infomation hiding)或封装(encapsulation),是软件设计的基本原则之一。对于顶层的(非嵌套的)类和接口,只有两种可能的访问级别:包级别的(package-private)。公有的(public)。对于成员(域、方法、嵌套类和嵌套接口)有四种可能的访问级别:私有的(private)。包级私有的(package-p 阅读全文
posted @ 2013-08-08 11:40 那些年的事儿 阅读(328) 评论(0) 推荐(0) 编辑
摘要: No8 覆盖equals方法时请遵守通用约定通用约定,下面的约定前提都是x/y/z不为null值。自反性(reflexive),x.equals(x)必须返回true。对称性(symmetric),当且仅当y.equals(x)返回true时,x.equals(y)必须返回true。传递性(transitive),如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也必须返回true。一致性(consistent),信息没有修改的情况下,多次调用x.equals(y)的返回结果必须一致。x.equals(null)必须返回false。诀窍 阅读全文
posted @ 2013-08-08 11:31 那些年的事儿 阅读(429) 评论(0) 推荐(0) 编辑
摘要: No1 考虑用静态工厂方法代替构造器静态工厂方法优势:它们有名称,阅读性增强,如:BigInteger.probablePrime;不必每次调用它们的时候都创建一个新对象;它们可以返回原返回类型的任何子类型的对象;在创建参数化类型实例的时候,它们使代码变得更加简洁。静态工厂方法缺点:类如果不含公有的或者受保护的构造器,就不能被子类化;它们与其他的静态方法实际上没有任何区别。惯用名称:getInstance 返回的实例是通过方法的参数来描述的;newInstance 像getInstance一样,但newInstance能够确保返回的每个实例都与所有其它实例不同。No2 遇到多个构造器参数时要考 阅读全文
posted @ 2013-08-08 11:23 那些年的事儿 阅读(388) 评论(0) 推荐(0) 编辑
上一页 1 ··· 25 26 27 28 29 30 31 32 33 ··· 37 下一页