geek的技术日志,记录每一次技术思考的闪光点。

2012年07月的文章

深入Core Java: 只是些甜点

later阅读(65)评论(0)

摘自《Java解惑》谜题 95:只是些甜点本章的大多数谜题都是颇具挑战性的。但是这个不是。下面这个程序会打印出什么呢?如果你相信的话,前 2 个程序被报告为系统的缺陷[Bug 41574604763901]: public class Ap...

深入Core Java: 迷失在混乱中

later阅读(92)评论(0)

摘自《Java解惑》谜题 94:迷失在混乱中下面的 shuffle 方法声称它将公平的打乱它的输入数组的次序。换句话说,假设其使用的伪随机数发生器是公正的,它将会以均等的概率产生各种排列的数组。它真的兑现了它的诺言吗?如果没有,你将如何订正...

深入Core Java: 类的战争

later阅读(54)评论(0)

摘自《Java解惑》谜题 93:类的战争下面这个谜题测试了你关于二进制兼容性(binary compatibility)的知识:当你改变了某个类所依赖的另外一个类时,第一个类的行为会发生什么改变呢?更特殊的是,假设你编译的是如下的 2 个类...

深入Core Java: 双绞线

later阅读(86)评论(0)

摘自《Java解惑》谜题 92:双绞线下面这个程序使用一个匿名类执行了一个并不自然的动作。它会打印出什么呢? public class Twisted { private final String name; Twisted(String ...

深入Core Java: 序列杀手

later阅读(63)评论(0)

摘自《Java解惑》谜题 91:序列杀手这个程序创建了一个对象并且检查它是否遵从某个类的不变规则(invariant)。然后该程序序列化这个对象,之后将其反序列化,然后再次检查反序列化得到的副本是否也遵从这个规则。它会遵从这个规则吗?如果不...

深入Core Java: 荒谬痛苦的超类

later阅读(65)评论(0)

摘自《Java解惑》谜题 90:荒谬痛苦的超类下面的程序实际上不会做任何事情。更糟的是,它连编译也通不过。为什么呢?又怎么来订正它呢? public class Outer { class Inner1 extends Outer{} cl...

深入Core Java: 泛型

later阅读(76)评论(0)

摘自《Java解惑》谜题 89:泛型和前一个谜题一样,本谜题也大量使用了泛型。我们从前面的错误中吸取教训,这次不再使用原生类型了。这个程序实现了一个简单的链表数据结构。main 程序构建了一个包含 2 个元素的 list,然后输出它的内容。...

深入Core Java: 原生类型的处理

later阅读(130)评论(0)

摘自《Java解惑》谜题 88:原生类型的处理下面的程序由一个单一的类构成,该类表示一对类型相似的对象。它大量使用了5.0 版的特性,包括泛型、自动包装、变长参数(varargs)和 for-each 循环。关于这些特性的介绍,请查看htt...

深入Core Java: 紧张的关系

later阅读(59)评论(0)

摘自《Java解惑》谜题 87:紧张的关系在数学中,等号(=)定义了一种真实的数之间的等价关系(equivalencerelation)。这种等价关系将一个集合分成许多等价类(equivalence class),每个等价类由所有相互相等的...

深入Core Java: 有毒的括号垃圾

later阅读(58)评论(0)

摘自《Java解惑》谜题 86:有毒的括号垃圾你能否举出这样一个合法的 Java 表达式,只要对它的某个子表达式加上括号就可以使其成为不合法的表达式,而添加的括号只是为了注解未加括号时赋值的顺序?插入一对用来注解现有赋值顺序的括号对程序的合...

深入Core Java: 惰性初始化

later阅读(35)评论(0)

摘自《Java解惑》谜题 85:惰性初始化下面这个可怜的小类实在是太懒了,甚至于都不愿意用通常的方法进行初始化,所以它求助于后台线程。这个程序会打印什么呢?每次你运行它的时候都会打印出相同的东西吗? public class Lazy { ...

深入Core Java: 被粗暴地中断

later阅读(56)评论(0)

摘自《Java解惑》谜题 84:被粗暴地中断在下面这个程序中,一个线程试图中断自己,然后检查中断是否成功。它会打印什么呢?  public class SelfInterruption { public static void m...

深入Core Java: 诵读困难者的一神论

later阅读(56)评论(0)

摘自《Java解惑》谜题 83:诵读困难者的一神论从前有一个人,他认为世上只有一只不寻常的狗,所以他写出了如下的类,将它作为一个单件(singleton)[Gamma95]: public class Dog extends Excepti...

深入Core Java: 啤酒爆炸

later阅读(56)评论(0)

摘自《Java解惑》谜题 82:啤酒爆炸这一章的许多谜题都涉及到了多线程,而这个谜题涉及到了多进程。如果你用一行命令行带上参数 slave 去运行这个程序,它会打印什么呢?如果你使用的命令行不带任何参数,它又会打印什么呢? public c...

深入Core Java: 烧焦到无法识别

later阅读(69)评论(0)

摘自《Java解惑》谜题 81:烧焦到无法识别下面这个程序看起来是在用一种特殊的方法做一件普通的事。那么,它会打印出什么呢? public class Greeter{ public static void main(String[] ar...

深入Core Java: 更深层的反射

later阅读(58)评论(0)

摘自《Java解惑》谜题 80:更深层的反射下面这个程序通过打印一个由反射创建的对象来产生输出。那么它会打印出什么呢? public class Outer{ public static void main(String[] args) t...

深入Core Java: 这是狗的生活

later阅读(65)评论(0)

摘自《Java解惑》谜题 79:这是狗的生活下面的这个类模拟了一个家庭宠物的生活。main 方法创建了一个 Pet 实例,用它来表示一只名叫 Fido 的狗,然后让它运行。虽然绝大部分的狗都在后院里奔跑(run),这只狗却是在后台运行(ru...

深入Core Java: 反射的污染

later阅读(47)评论(0)

摘自《Java解惑》谜题 78:反射的污染这个谜题举例说明了一个关于反射的简单应用。这个程序会打印出什么呢?  import java.util.*; import java.lang.reflect.*; public clas...

深入Core Java: 搞乱锁的妖怪

later阅读(45)评论(0)

摘自《Java解惑》谜题 77:搞乱锁的妖怪下面的这段程序模拟了一个小车间。程序首先启动了一个工人线程,该线程在停止时间到来之前会一直工作(至少是假装在工作),然后程序安排了一个定时器任务(timer task)用来模拟一个恶毒的老板,他会...

深入Core Java: 乒乓

later阅读(49)评论(0)

摘自《Java解惑》谜题 76:乒乓下面的程序全部是由同步化(synchronized)的静态方法组成的。那么它会打印出什么呢?在你每次运行这段程序的时候,它都能保证会打印出相同的内容吗? public class PingPong{ pu...