发博文
个人资料
MikeLei
MikeLei
  • 博客等级:
  • 博客积分:100
  • 博客访问:5,505
  • 关注人气:0
访客
加载中…
好友
加载中…
博文
(2007-04-26 18:06)
标签:

哲学

科学

    14世纪的英国哲学家奥卡姆提出了一项原则,称之为简单性原则或奥卡姆剃刀原则:如果有一组理论都能解释同一件事,则可取的总是最简单的,需要最少假设的那一个。 物理和数学中的大量事实都支持这个原则,如复杂的波尔的氢原子理论与简洁的薛定鄂方程,电磁学中大量的经验公司与最终的麦克斯韦方程,数学中则更多,如stoke公式等等。最有趣的是Unix的KISS原则(Keep It Simple, Stupid),顶尖的Unix高手常常在简单性与完备性之间选择简单性。

    简单性是如此的美妙,为什么呢?因为这是我们人类选择的结果。这就涉及到另一个原理了-- 人择原理。因为简单的人类无法处理这个复杂的世界,甚至我们并不知道这个世界究竟是复杂还是简单,所以我们选择了简单。说到这里想起《子非鱼》中庄子与惠子充满智慧的问答。有点陷于不可知论了。但是我们以前学过的哲学都是正确的吗?如唯物论中的世界是物质的,物质在运动。呵呵,为什么要相信它呢,能证明吗?所以简单性只是我们看问题的方式而已,是相对的。用MVC的观点,简单性只是视图而已,其背后的模型是什么是不可知的,或
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
在以前的文章中,我提到一个有趣的小程序,现在就对它的行为做一解释。为方便起见,将那段代码重抄~如下:

class Init{
        static volatile boolean done = false;
        static {
                new Thread() {
                        public void run() {
                                System.out.println('enter thread');
                              &nb
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
当公用JRE安装时,除了向注册表写入一些信息外,还会向OS的文件系统中写入一些文件。


1. Java 升级所用的基准版本(Base Image)
   %CommonProgramFiles%\Java
   如果在线升级,从网上下载的只是升级版与基准版差异数据,无须下载整个升级版。

2. JRE中的3个可执行文件. 无须设置PATH, 这3个程序可在任何地方运行
   %SystemRoot%\system32\java.exe
   %SystemRoot%\system32\javaw.exe
   %SystemRoot%\system32\javaws.exe

3. Java 控制面板
   %SystemRoot%\system32\jpicpl32.cpl (J2SE 5.0)
   %SystemRoot%\system32\javacpl.cpl  (Java SE 6)

4. 安装/卸载log文件,如果安装/卸载程序异常终止,可以看看这两个文件。
   ::GetTempPath()\java_install.log
   ::GetTempPath()\java_install_reg.log


阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
有两种Java运行环境(JRE),公有JRE (public JRE)与私有JRE(private JRE)。JDK安装程序会安装私有JRE和一个可选的公有JRE。私有JRE完全包含在JDK的安装路径下,仅对JDK可见,为JDK所用。公有JRE为系统中所有的Java程序共享,具有独立的安装程序。与私有JRE不同,公有JRE的安装程序会对系统做一些修改来与OS和浏览器建立更密切的关系,主要有以下几个方面:
  • 控制面板中的添加/删除程序列表就会出现公有JRE
  • 控制面板中安装一个Java的控制面板项,可用它来设置一些与公有JRE相关的参数
  • 在%SystemRoot%\system32下会出现java.exe,javaw.exe, javaws.exe
  • 注册表做必要的添加或调整以将公有JRE注册到系统中。

公有JRE的卸载程序会做相应的清除工作来恢复一个干净的操作环境。

由于种种原因,公有JRE卸载失败,或者有时重装JRE也不能解决问题,为了恢复以前的环境,有时需要手工将安装程序所做的修改undo回去,这时我们就需要了解安装程序对注册表做了哪些修改。

注意:

1. 在对注册表做任何修改之前备
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
下面这个小程序能正常结束吗?为什么? 对它的解释将在以后适当的时候给出。

class Init{
        static volatile boolean done = false;
        static {
                new Thread() {
                        public void run() {
                                System.out.println('enter thread');
                      &n
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  正所谓三十年河东,三十年河西.我们经历了单机时代对富客户端的追求,网络时代对服务器端的重视,现在技术的重点又开始回归对富客户端重新认识.这是一种扬弃,是对Web环境中富客户端的重新定位.这些变化的本质是分布式计算自身的发展,是计算能力与计算资源在网络环境下试图达到全局最优化配置的体现.于是,伴随着Web 2.0我们又重新感到了客户端丰富用户体验的重要性.
 
  如何构造多姿多彩的用户界面是客户端技术的一个重要方面.我们可以利用代码来一步步生成GUI,如Java所采用的方法, 也可以利用资源文件的方式,如Visual C++, 还可以用XML来描述界面, 如Mozilla的XUL, Microsoft的XAML。用XML描述界面的优点是界面的修改很方便,无须重编译,有时XML描述比用程序代码简洁直观。

   Java有没有XML界面语言呢?令人惊异的是J2SE 1.4 就已经具备了这种能力. J2SE 1.4 包含了JSR 57. JSR 57实现了JavaBeans的持久性规范,这个规范的本意是要实现XML格式Java Beans的持久化表示. 考虑到Swing的组件都是Java Bean, 自然也可以表示为X
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
2006年11月13日,SUN将要宣布Java技术正式在GPLv2下开源。这包括所有Java的关键实现,如Java SE, Java ME, Java EE.

正式消息见 http://sun.com http://java.net, http://www.netbeans.org, http://planetjdk.org/

按以下图象来获取Java源代码.

 Get the Source


这是一个历史性的时刻, 我们无法预测将来会发生什么, 但我们可以回顾过去, 看看Java取得了怎样辉煌的成就:

全世界有
  • 使用Java技术的设备和应用比运行Window,Linux,Solaris的
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
     Java Applet是如此的平常以至于几乎任何Java的入门书籍中都有它的详细描述,但这里要展示的是它不平常的另一面:Applet既是一个Java Class, 又是Web页面DOM结构的一个节点,具有操纵DOM从而修改页面的强大能力。
我们看到的浏览器中的千变万化的页面在浏览器内部表达为文档对象模型(DOM),对它的修改会直接影响页面的外观。时下流行的AJAX的基本技术就是用JavaScript从网上取得数据来局部地修改页面的DOM,已达到流畅的客户体验的目的。其实,Java Applet 很早就可以存取其所在页面的DOM,只是由于这方面的文档或例子比较少,甚至java.sun.com上 Java 教程中都没有提及这个强大的特性,以至于很多人没有意识到它。
与Java应用程序相比,Java 小程序并不小,它除去可以具有普通Java应用程序的所有功能外,还可以访问浏览器中的服务,包括DOM。对DOM的操纵有两种方法,一种是通过 netscape.javascript.JSObject,这在一些JavaScript的书中可以看到;第二种方法是通过Common DOM API,这个API包含了大量的类,是DOM标准的一种Java语言绑定的实现,与第一种方法相比具有更强的类型安全性。
这里举一个小例子来通过Java Applet来修
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
以下是我曾经制作的一个Java 线程状态转移图。注意它不是官方的。它对线程的初学者或许有些用处。欢迎大家指出其中的可能的错误。



http://s13.sinaimg.cn/orignal/4ad4a32e10c12d56c2d1c




阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
程序代码的自我复制和自我修改是一种非常强大的能力,但这种能力常常被滥用来制造病毒,以至于现代操作系统通常不允许修改程序的代码段和禁用调用栈的执行权限来保证代码的安全性。这使得通过修改自身代码来实现某种逻辑的合理编程方法受到了限制。
 
即将发布的Java SE 6 赋予了程序员在运行时刻产生并编译Java源代码的能力,这和Java的反射机制结合在一起,使得Java程序可以在运行过程中产生新类,替换旧类,动态修改自身组件以进行自适应优化运行时刻的性能。同时,Java所固有的安全性能保证我们不用担心这个特性会被恶意利用。
 
这里只是简单地通过一段代码来介绍Java Compiler API. 以下代码需要Java SE 6, 可以从http://jdk6.dev.java.net上下载。

Main.java 利用 Java Compiler API 来编译LiveObject.java.

// Main.java
import javax.tools.*;
import java.io.*;

class Main {
public static void main(String[] args) throws IOEx
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有