摘要: 这篇文章是从 OpenJDK 源代码的角度讲当我们运行了java -classpath . hello之后,java.exe 如何从 main 函数开始执行,启动虚拟机,并执行字节码中的代码。实验环境要了解一个系统是如何运行的,光看是不行的,要实际地运行,调试,修改才能对系统的动作方式有所了解。起初... 阅读全文
posted @ 2014-08-22 20:37 Iambda 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 前言现在看的资料都是编译 openjdk7 的,openjdk8好像已经 openjdk7 编译方式大一样,按照前辈的文章使用make sanity会提示找不到 sanity 规则,然后编译过程其实基本就直接./configuremake all官方的 README 写的很清楚。下面记录下过程下载代... 阅读全文
posted @ 2014-08-22 20:34 Iambda 阅读(928) 评论(0) 推荐(0) 编辑
摘要: Data Race Free 是多线程程序是非常重要的概念,因为Java 和 C++的内存模型都是基于 Data Race Free 的,这篇文章将介绍这个概念的由来,另一篇文章《对Data Race Free的理解》介绍它的主要思想。事情要追溯到遥远的1979年, Lamport 在他的著名论文H... 阅读全文
posted @ 2014-08-17 21:39 Iambda 阅读(415) 评论(0) 推荐(0) 编辑
摘要: Data Race Free 的动机Data Race Free 是对多线程程序同步程度的一种描述,假如你的多线程程序的同步程度满足 DRF 的要求,那么,你的程序会有这样一个好处:程序在弱一致性模型下执行,执行的结果与在SC模型下执行一样这意味着,程序员在写程序时,可以按SC模型来推断程序的执行。... 阅读全文
posted @ 2014-08-17 21:36 Iambda 阅读(363) 评论(0) 推荐(0) 编辑
摘要: Java 内存模型Java内存模型规定了在多线程程序中,什么样的行为是允许出现的,什么样的行为是禁止出现的。这样说可能有点抽象,我们换一个角度。将程序行为抽象成读操作和写操作,每个线程有自己的局部变量,同时线程之间还存在共享变量。那么一个多线程程序执行结束后,所有变量会有一个最终值。Java内存模型... 阅读全文
posted @ 2014-08-17 21:24 Iambda 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 定义单例模式确保一个类只有一个实例,并提供一个全局访问点解释从定义可以看出,特点是这个类只有一个实例。那么,为什么要这么做呢?原因在于,有些时候,这个类只有一个实例会节约资源,或者只有一个实例才能保证整个程序运行正确,一致。例如:线程池,缓存,对话框,日志对象等等 。示例class Singleto... 阅读全文
posted @ 2014-07-31 21:33 Iambda 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 定义外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统的更容易使用。解释我有一个多功能的盒子,盒子让提供了100个接口,每个都有不同的功能。现在我要把这个盒子给别人用了,我只想让别人用到其中5个接口,或者别人只需要其中5个接口。那么,我可以再做一个盒子,这个盒... 阅读全文
posted @ 2014-07-31 21:30 Iambda 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 定义观察者模式定义了对象之间的一对多依赖,当一个对象改变时,所以依赖于它的对象都会得到通知。示例interface Observer { void update(int data);}class NewsPaper { private LinkedList observers; p... 阅读全文
posted @ 2014-07-31 21:28 Iambda 阅读(161) 评论(0) 推荐(0) 编辑
摘要: Java 的输入输出总是给人一种很混乱的感觉,要想把这个问题搞清楚,必须对各种与输入输出相关的类之间的关系有所了解。只有你了解了他们之间的关系,知道设计这个类的目的是什么,才能更从容的使用他们。这是这个系列的第二篇,描述字节输出类的实现,第一篇见:OpenJDK 源码阅读之 Java 字节流输入类的... 阅读全文
posted @ 2014-07-12 20:00 Iambda 阅读(408) 评论(0) 推荐(0) 编辑
摘要: Java 的输入输出总是给人一种很混乱的感觉,要想把这个问题搞清楚,必须对各种与输入输出相关的类之间的关系有所了解。只有你了解了他们之间的关系,知道设计这个类的目的是什么,才能更从容的使用他们。我们先对 Java I/O 的总体结构进行一个总结,再通过分析源代码,给出把每个类的关键功能是如何实现的。... 阅读全文
posted @ 2014-07-11 20:07 Iambda 阅读(287) 评论(0) 推荐(0) 编辑