安装windows xp和ubuntu双操作系统的方法

先装xp,再装ubuntu:

1.分别按着XP和ubuntu的方法一次安装即可,安装之后系统grub默认就会有ubuntu/xp的启动选项;每次启动系统的时候会有选项可以选择。
先装ubuntu,再装xp:

  1. 按着ubuntu的方法安装ubuntu;

  2. 启动系统,安装xp后,自动清除系统grub,如果系统命令行引导或者grub引导界面,找到win pe光盘从光盘启动进入win pe,下载clear mbr软件clsmbr进行清除;

  3. 重启系统,使用xp安装盘安装xp;

  4. 安装XP之后系统启动ubuntu的grub选项丢失;

  5. 通过ubuntu live cd或者启动盘进入ubuntu。

  6. 查看ubuntu所在分区的盘符的uuid,比方说我的现在是:xxxxxxxxxxxxxxxxxx(可以直接在ubuntu所在分区盘符上面的图标查看属性得到,也可以通过命令ls -l /dev/disk/by-uuid获得)

  7. 在ubuntu中使用命令:sudo grub-install —root-directory=/media/{uuid} /dev/sda,命令执行成功之后,会有提示:”Installation finished. No error reported.”

  8. 重启机器,进入grub界面,这时候恢复了ubuntu下面的grub启动界面。这时候你发现xp的启动选项可能不工作,别着急。

  9. 按键c进入grub的命令行界面,键入root (hd0,之后按键tab键。这时候注意查看,在xp的分区信息中有一个uuid,记下来uuid,然后quit到ubuntu的grub启动界面。选择 xp的grub项,然后按键e,进入编辑模式,把记下来的uuid替换原来的uuid.这只后F10就可启动xp了。

  10. 其实也可以不操作第9步,直接从ubuntu grub登录进入ubuntu系统,然后编辑:/boot/grub/grub.cfg文件,将xp启动项中的uuid替换成新的xp系统的uuid即可。我的修改之后的内容为:
    insmod part_msdos
    insmod ntfs
    set root=’(/dev/sda,msdos1)’
    search —no-floppy —fs-uuid —set=root 0E48A65048A6367D
    drivemap -s (hd0) ${root}
    chainloader +1

  11. OK一切搞定。

另可参考:http://www.blags.org/windows-xp-disk-to-install-ubuntu-10-04/

Android实战第二季

Android 通用架构

Android 有一个通用的展示软件栈的架构,即是如此图:

简单介绍:

Applications 层:主要是 Android 自带的 GMS(Google Mobile Service) 应用和应用开发者开发的应用;

Application Framework :主要是为 Application 开发者提供各种功能、服务和开发 API 。

Android Runtime(Core libraries and Dalvik Virtual Mache) :为应用运行提供运行环境的 Java 虚拟机和运行时库。

Libraries :主要是 Android 系统运行库和工具集;

C/C++ 库:

a) 标准 C/C++ 库 bionic : BSD 许可证,可以修改而无需公开源代码。提供 C/C++ 标准库绝大部分的功能,是一个专为嵌入式系统设计的轻量级标准库实现。相对于传统的 glibc ,其体积和内存占用很小。

b) C 语言工具库 libcutils :是 Android 系统中的基石库,基本上 Android 中所有的本地库和程序都链接了这个库。

c) init 进程:此进程是 Android 设备启动后,系统执行的第一个用户空间的可执行程序,由内核缺省直接启动,以守护进程的形式后台运行。提供以下功能:设备管理、解析并执行初始化脚本 init.rc 。

d) shell 工具: sh 和 toolbox 、 busybox 。

e) C++ 语言工具库 libutils :属于 Android 的底层库。以 C++ 实现,提供的 API 也是 C++ 接口规范。提供基本头文件、 Binder 框架以及使用 Binder 机制的相关库。

通过 Android 应用程序框架为开发者提供服务的 C/C++ 库 :

a) 系统 C 库:一个从 BSD 继承来的标准 C/C++ 系统函数库, 是专门为基于嵌入式 Linux 系统的设备定制的。即 bionic libc 库。

b) 媒体库:基于 PacketVideo OpenCORE 。该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。

c) Surface Manager :对显示子系统的管理,并且为多个应用程序提 供了 2D 和 3D 图层的无缝融合。

d) LibWebCore :一个最新的 web 浏览器引擎用,支持 Android 浏览器和一个可嵌入的 web 视图

e) SGL - 底层的 2D 图形引擎

f) 3D libraries :基于 OpenGL ES 1.0 APIs 实现;该库可以使用硬件 3D 加速(如果可用)或者使用高度优化的 3D 软加速。

g) SQLite :一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

系统工具集 :

a) 主要以 busybox 为主,链接 bionic libc 库,为大多数嵌入式 Linux 所采用。主要包含一些系统管理工具,全为文本命令行工具。

b) 另外 Android 官方也提供了专门的调试守护进程,如 adbd 等。

HAL :一个对硬件访问虚拟化的中间抽象层,接着我们详细介绍;

Linux Kernel :基于开源 Linux kernel 经过修改的支撑整个软件栈的基础操作系统内核,当前主要是依赖于 Linux kernel 2.6 。驱动主要分为两类,一类是 Android 专用驱动,其并不是硬件驱动,而主要是一些为上层提供服务的辅助功能层,比如 ashmem 、 logger 、 binder 、 power manager ;另一类则是设备驱动则,其多是硬件驱动,属于 Linux 内核标准的驱动,比如 fb 显示驱动 (LCD) 、输入设备驱动 ( 游戏杆、鼠标、键盘、触摸屏 ) 、视频驱动 (Camera) 、音频驱动、 MTD 存储设备驱动、网络驱动 ( 蓝牙、 WiFi 、 Ethernet) 等。驱动在内存映射的时候也分为 kernel space 和 user space ,放在 kernel space 都是需要遵循 GPL 开源的;放在 user space 中的驱动,是遵循 Apache/MIT 许可证的,可以不开源,其运行在 kernel space 之上。

Hardware Abstraction Layer:

HAL 是 Google 为了解决 Linux 开源许可证 GPL 和 Android 本身的 Apache 许可证冲突的一个硬件抽象层,主要原则是把控制硬件的动作都放到了 Android HAL 中,而 linux driver 仅仅完成一些简单的数据交互作用,甚至把硬件寄存器空间直接映射到 user space 。

HAL 存在的原因:

  1. 快速适配硬件设备中非 linux kernel 标准的接口;

  2. 解决 Linux 开源许可证 GPL 与硬件设备厂商驱动的专利不兼容;通过 Android 的 Apache 许可证和 HAL 技术实现来解决这一难题;

  3. 开放的满足设备厂商开发开与之驱动对应的特定需求的要求;

HAL 层具备如下特点:

  1. 在用户空间 (user space) 而不是内核空间 (kernel space) ,可以是 c/c++ 库;

  2. 将 Android platform 部分和系统硬件完全的进行了隔离开;

  3. 向上层提供 Android platform 操作硬件的接口,向下要求硬件驱动对其功能进行实现; ( 比方说上层应用对于 Graphics, Audio, Camera, Bluetooth, GPS, Radio(RIL), Wifi 等的操作。 )

在编程方式上,上层应用通过 HAL 对硬件的操作有两种方式:

  1. 通过 Java->JNI->*.so 库 (c/c++) ;

  1. 通过 Java app->ApplicationManager->Service(java)->service(jni)->HAL->HAL stub->System Call 方式进行调用;

注:一般 HAL 动态库放在位置 /system/lib/hw 目录。

一般开发类型

  1. Android 手机产品:构建硬件系统,移植 Android 软件平台系统;主要涉及设备驱动程序,以及在硬件抽象层实现标准接口等。

  1. Android 应用程序:基于 Application Framework 和其他应用,开发应用程序;

  2. Android 系统开发:主要是增强或者完善 Android 平台系统的功能,开发中主要包含如下部分:

a) 开发 c 或者 c++ 库;

b) 定义将要通过 JNI 提供的上层 Java 的系统 API 接口;

c) 封装 JNI ;

d) 通过 JNI 封装 Java 类和接口 API ,提供给 Android 应用使用;

Android 开发社区

Cyanogenmod 社区: http://www.cyanogenmod.com/

涉及开发语言: C/C++/Java 等。

Android实战第一季

Android

Android 是 Google 公司为移动设备而开发的遵循 Apache/MIT 开源许可证、完全开发的、全软件栈操作系统。为 Android 应用开发者提供工具和框架;为用户提供一个不依赖硬件的通用平台;为设备商提供完整的解决方案。

Android is a comprehensive platform, which means it is a complete software stack for a mobile device.

For developers, Android provides all the tools and frameworks for developing mobile apps quickly and easily.

For users, Android just works right out of the box. Additionally, users can customize their phone experience substantially.

For manufactures, it is the complete solution for running their devices. Other than some hardware-specific drivers, Android provides everything else to make their devices work.

Android 生态系统

Google Android 开发系统由三个部分组成:

  1. Android 源代码工程 (Open Source Project) 包括 Android 全部源代码 : https://source.android.com

  2. Android 开发者 (Developer) 包括 SDK API 和文档 : https://developer.android.com

  3. Android 应用市场 (Market) 是一个开发者发布应用程序的平台 : https://market.android.com/

Android 系统

Android 一词最早出现于法国作家利尔亚当( Auguste Villiers de l’Isle-Adam )在 1886 年发表的科幻小说《未来夏娃》( L’ è ve future )中外表像人的机器起名为 Android ;

2003 年 10 月由 Andy Rubin 和 Rich Miner 创办一家公司 Android 专门研发 Android ;

2005 年 Google 收购了 Android 公司;

2007 年 11 月 5 日 Google 正式展示、发布了开源手机手机操作系统平台 Android 。 Google 宣布组建的一个全球性的联盟组织 - 开放手持设备联盟( Open Handset Alliance ),联盟将支持 Google 发布的手机操作系统或者应用软件,共同开发 Android 系统的开放源代码。开放手持设备联盟包括手机制造商、手机芯片厂商和移动运营商

2007 年 11 月 12 号发布 Google SDK 。

2008 年 8 月 18 日, Android 获得了美国联邦通信委员会( FCC )的批准;

2008 年 9 月 23 日,第一款 Android 手机发布, HTC Dream(G1) ;

2008 年, Patrick Brady 于 Google I/O 演讲“ Anatomy & Physiology of an Android ”,并提出的 Android HAL 架构图;

2009 年 2 月, Android 1.1 发布;

2009 年 2 月, Google 推出 Android Market 线上应用程序商店,用户可在该平台网页寻找、购买、下载及评级使用手机应用程序及其他内容;

2009 年 4 月 30 日, Android 1.5 Cupcake 版本发布;

2009 年 9 月 15 日, Android 1.6 Donut 版本发布;

2009 年 10 月 26 日, Android 2.0 Eclair 版本发布;

2010 年 2 月 3 日, Linux 内核开发者 Greg Kroah-Hartman 将 Android 的驱动程序从 Linux 内核“状态树”(“ staging tree ”)上除去,从此, Android 与 Linux 核心开发分道扬镳;

2010 年 5 月 20 日, 2.2 Froyo 版本发布;

2010 年 12 月 7 日, 2.3 Gingerbread 版本发布;

2011 年 2 月 2 日, 3.0 Honeycomb 版本发布;

2011 年 5 月 11 日, 3.1 Honeycomb 版本在 Google I/O 开发者大会宣布发布;

2011 年 7 月 13 日, 3.2 Honeycomb 版本发布;

2011 年 10 月 19 日, 4.0 Ice Cream Sandwich 版本发布;

Android 版本代号命名规则,从 Android 1.5 开始,按着 26 个英文字母的顺序作为首字母,选择一种甜点单词作为版本的代号;因此, Android 下一个版本发布的代号即是: Jelly Bean 。

Andy Rubin

纽约州 Chappaqua 长大,父亲拥有自己的消费电子直销公司,从小就接触各种最新的电子设备;

在纽约州由提卡学院读计算机科学。

毕业后在蔡司公司任机器人工程师。

1989 年加入苹果公司。

1990 年,苹果分拆他所在的手持计算和通信设备部门,成立 General Magic 公司,在这里他开发了手持设备操作系统 Magic Cap 。

公司倒闭后加入 Artemis Research ,开发了交互式互联网电视 WebTV 。

后与人创办 Danger 公司,担任 CEO ,但不久被免职。 Danger 公司开发了后来被称为 T-Mobile Sidekick 的手机,公司于 2008 年被微软收购。

2003 年与 Rich Miner 一起创办了 Android 公司。

2005Android 公司被 Google 收购,任 Google 工程副总裁,领导开发了 Android 操作系统。

并拥有多项无线通信专利。

市场上手机操作系统

  1. Apple iOS

  2. Google Android

  3. Microsoft Window Phone

  4. Blackberry OS

  5. HP WebOS

  6. Nokia Symbian

  7. Meego

  8. Palm OS

  9. Samsung Bada

  10. Tizen

Java时间简史

前言

从学习 Java 到J ava 编程,从来没有仔细去梳理或者翻阅一下 Java 的过往历史。从最开始 Sun 的“绿色项目”,已经过去了 21 年了;从 Java 第一次发布,已经近 16 年了。 回头整理、梳理一下 Java 的历史,让自己 对Java有个重新的了解和认识。

Java 语言

起源于 Sun 公司 (Sun Microsystems Inc.) 在 1990 年 12 月针对公司公司内部的“绿色项目” (Green Project) 而设计的一门程序语言。项目组使用的运行平台是嵌入式平台,最开始 Patrick Naughton 尝试使用 c 、 c++ 作为编程语言,但复杂度太高,随着 James Gosling 、 Mike Sheridan 、 Sun 首席科学家 Bill Joy 等的加入,于是希望在 C++ 基础上,开发一种面向对象的环境,目标设置为应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信方向的程序语言 . ,具备垃圾回收系统、可移植的安全性、分布程序设计、多运行续功能;随后发展为一种易于移植到各种设备上的平台;伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。

创建目标 :

  1. 应当简单、面向对象( It should be “simple, object-oriented and familiar” )

  2. 应当健壮、安全( It should be “robust and secure” )

  3. 应当跨平台、可移植( It should be “architecture-neutral and portable” )

  4. 应当高性能( It should execute with “high performance” )

  5. 应当解释型的、线程模型的、动态的 (It should be “interpreted, threaded, and dynamic”)

(http://java.sun.com/docs/white/langenv/Intro.doc2.html)

Java 语言定义 :

1.The Java programming language is a general-purpose, concurrent, class-based, object-oriented language.

2.The Java Programming Language is a general-purpose, concurrent, strongly typed, class-based object-oriented language.

3.Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

  1. 一次编译、到处执行。 (write once, run anywhere.)

( http://java.sun.com/docs/books/jls/third_edition/html/intro.html)

( http://download.oracle.com/javase/6/docs/technotes/guides/language/index.html)

Java 语言特点 :

  1. 简洁 (Simple and familiar)

  2. 面对对象 (Object-oriented)

  3. 跨平台 (Architecture neutral, portable and robust)

  4. 解释型、动态 (Interpreted and dynamic)

  5. 安全 (Security)

  6. 多线程 (Multithreading)

  7. 高性能 (High performance)

  8. 平台和应用程序库 (Java base system and libraries)

(http://java.sun.com/docs/white/langenv/index.html)

(http://java.sun.com/docs/overviews/java/java-overview-1.html)

Java 平台

1.Java Card :主要是提供高安全性的运行在智能卡或者类智能卡的 Java Applet ,广泛应用在 SIM 卡、提款机上等。

2.Java ME(Micro Edition) : Java 平台微型版,主要是为机顶盒、移动电话、 PDA 等嵌入式电子设备提供的 Java 语言平台,包括虚拟机和 API 。

3.Java SE(Standard Edition) : Java 平台标准版,包括 Java2 的开发环境、编译工具、程序库、运行环境。

4.Java EE(Enterprise Edition) : Java 平台企业版,为开发企业级应用提供的具备软件架构、设计思想、技术标准的通用平台。

Java 技术概念地图

(http://java.sun.com/new2java/javamap/intro.html) :

时间简史 :

1990 年 12 月开始研究的一个内部项目,“ Stealth 计划”,重要成员 Patrick Naughton 加入,尝试用 C 、 C++ 语言,被 C 、 C++ 编译器搞的焦头烂额。

随后,项目,“ Stealth 计划”后来改名为“ Green 计划”,重要成员 James Gosling 、 Mike Sheridan 、 Sun 首席科学家 Bill Joy 等相继加入。 Bill Joy 最早决定开发一种集 C 语言和 Mesa 语言大成的语言,提议在 C++ 基础上,开发一种面向对象的环境,并把它取名为“未来”。

James Gosling 尝试在修改和扩展 C++ 的功能,并称之为 C++ ++ — ,随后不得不放弃;转而决定要创造一门全新的编程语言,并以办公司外边的橡树 (Oak) 命名。

1992 年的夏天, Green 项目组对平台进行了演示,包括 Green 操作系统, Oak 的程序设计语言,类库及其硬件。

1992 年 11 月,项目演变成 Sun 公司的全资子公司“ FirstPerson ”有限公司,研发团队在美国加州 Palo Alto 。

1992 年 12 月 3 日,对面向一种类 PDA 设备 Star7 运行该平台进行演示,这种设备有鲜艳的图形界面和被称为“ Duke ”的智能代理来帮助用户。

随后,作为机顶盒平台在竞标时代华纳 (Time Warner) 电视机顶盒项目败给 SGI 公司;作为机顶盒平台和 3DO 公司的商业交易也失败,因此被 Sun 公司回购。

1994 年 6 月, Bill Joy 启动了一个构建 “big small operating” 系统的项目“ Liveoak ”。之后, John Gage, James Gosling, Bill Joy, Patrick Naughton, Wayne Rosing 和 Eric Schmidt 经过三天的头脑风暴,决定改变平台的目标定位,将平台应用在万维网领域 (World Wide Web) 。

1994 年 7 月, Patrick Naughton 产生了将 Liveoak 作为互联网平台的想法,并利用一个长周末完成了一个 Web 浏览器。

1994 年 9 月, Patrick Naughton 和 Sun 的另外一名工程师 Jonathan Payne 开始合作开发基于 Java 的 Web 浏览器 WebRunner ,随后改名为“ HotJava ”。

在发现 Oak 已被一家显卡制造商注册之后, Oak 被改名为“ Java ”。

1994 年 10 月, HotJava 和 Java 一道在 Sun 公司高层中进行了演示。随机, Java 被发现和认识到其具备的平台无关性、安全、可依赖等特性在互联网领域有良好的匹配和发展。

1994 年, Java 1.0a 版本开始提供下载。

1995 年 3 月 23 日 SunWorld 大会上 Java 和 HotJava 浏览器的第一次公开发布。同时网景公司的执行副总裁马克•安德森,宣布网景将在其浏览器中包含对 Java 的支持。

1996 年 1 月,升阳公司成立了 Java 业务集团,专门开发 Java 技术。第一个 JDK-JDK1.0 诞生。

1997 年 2 月 18 日, JDK1.1 发布。

1997 年 4 月 2 日, JavaOne 会议召开,参与者逾一万人,创当时全球同类会议规模之纪录。

1998 年 12 月 8 日, JAVA2 企业平台 J2EE 发布。

1999 年 6 月, SUN 公司发布 Java 的三个版本:标准版( J2SE )、企业版( J2EE )和微型版( J2ME )。

2000 年 5 月 8 日, JDK1.3 发布。

2000 年 5 月 29 日, JDK1.4 发布。

2001 年 9 月 24 日, J2EE1.3 发布。

2002 年 2 月 26 日, J2SE1.4 发布,自此 Java 的计算能力有了大幅提升。

2004 年 9 月 30 日 18:00PM , J2SE1.5 发布,成为 Java 语言发展史上的又一里程碑。为了表示该版本的重要性, J2SE1.5 更名为 Java SE 5.0 。

2005 年 6 月, JavaOne 大会召开, SUN 公司公开 Java SE 6 。此时, Java 的各种版本已经更名,以取消其中的数字“ 2 ”: J2EE 更名为 Java EE , J2SE 更名为 Java SE , J2ME 更名为 Java ME 。

2006 年 12 月, SUN 公司发布 JRE6.0 。

2009 年 4 月 20 日, Sun 公司宣布以每股 9.50 美元, 74 亿美金的总额被 Oracle 公司收购。

2009 年 12 月, SUN 公司发布 Java EE 6 。

2010 年 1 月 21 日,欧盟无条件通过了 Oracle 收购 Sun 的交易。 Java 之父 James Gosling 在其博客 (http://blogs.oracle.com/jag/entry/so_long_old_friend) 中发表博客“ So long, old friend ” 悼念 Sun 。

2011 年 7 月 28 日, Oracle 公司发布 J2SE 7.0 。

核心成员 :

Bill Joy :

密歇根大学获得电气工程学士学位。

1979 年在加州大学伯克利分校获得电气工程与计算机科学硕士学位。      

1982 年,作为 Sun 的联合创始人、首席科学家,参与了 Sun 公司的成立。

1986 年,因其在伯克利 UNIX 操作系统中所做的工作获得了 Grace Murray Hopper 奖。

20039 月, Bill Joy 离开 Sun 。据说, Sun 公司的股票应声下跌了 3.2% 。

贡献:

       学生期间,他开发了 BSD 操作系统。其他人以 BSD 为基础发展出了很多现代版本的 BSD ,最著名的有 FreeBSD 、 OpenBSD 和 NetBSD ,苹果电脑的 Mac OS X 操作系统也在很大程度上基于 BSD 。其对 TCP/IP 、 vi 、 NFS 和 C shell 均有重大贡献。

       在 Sun 公司支持设计了 Sparc 微处理器,并将之前自己领导开发的 BSD 继续发展成为 Solaris 操作系统。 Java 和 Jini 的主要作者之一。

John Gage :

加州大学伯克利分校的数学教师,和 Bill Joy 是同事。

Sun 的第 21 名雇员。

创造了 Sun 的口号“ the network is the computer ”。

1999 年发起 JavaOne 。

20087 月离开 Sun ,加盟了硅谷老牌风投机构 KPCB ,成为该公司的合伙人。

James Gosling :

1977 年获得了加拿大卡尔加里大学计算机科学学士学位。

1981 年开发 Unix 上运行的类 Emacs 编辑器 Gosling Emacs 。

1983 年获得了美国卡内基梅隆大学计算机科学博士学位,博士论文的题目是: "The Algebraic Manipulation of Constraints" 。

毕业后到 IBM 工作,设计 IBM 第一代工作站 NeWS 系统,后转至 Sun 公司。

1990 年,与 Patrick Naughton 和 Mike Sheridan 等人合作“绿色计划”。

1994 年底, James Gosling 在硅谷召开的“技术、教育和设计大会”上展示 Java 。

2007 年,被授予二级 加拿大勋章。

2010 年 4 月宣布从 Oracle 公司离职。

2011 年 3 月 29 日,在个人博客上宣布将加入 Google 。

2011 年 8 月 30 日,仅仅加入 Google 数月之后的高斯林就在个人博客上宣布离开 Google ,加盟一家从事海洋机器人研究的创业公司 Liquid Robotics ,担任首席软件架构师。

主要贡献:

       Java 共同创始人之一,公认的 Java 之父。

Mike Sheridan

在 Claremont College 学习经济学和俄罗斯历史,后在 American University 学习电影。

1990 年加入 Sun 公司的“ Green Project ”项目,协作开发 Java 语言。随后和 Sun 的 CTO Eric Schmidt 一起主导 Java 的战略发展和商业开发。

1998 年,加入 Novell 公司,领导的新产品计划和商业机会的发展,基于业界领先的 Novell 目录服务( NDS )和 Novell 公司的智能缓存系统。直接向 Novell 总裁和 CEO Eric Schmidt 汇报。

Patrick Naughton :

1980 年, Naughton 用打零工挣的钱买了他的第一台微机 Atari400 。

1985 年从 Clarkson 大学毕业。

19888 月,加入 Sun 公司。

1990125 日, Patrick Naughton 开始了绿色项目( Green Project ),并邀请了 Gosling 和 Mike Sheridan 来帮忙启动这个项目。

19914 月,绿色项目组( Naughton , Gosling 和 Sheridan )开始以“智能家电”( smart consumer electronics )为目标市场。而 Gosling 开始为 Oak 编程语言而努力工作。 Gosling 用 C 写了最早的编译器,而 Naughton , Gosling 和 Sheridan 完成的运行时解释程序也是用 C 完成的。 19918 月, Oak 的第一个程序诞生了。

1994 年 Patrick Naughton 写了一个叫 WebRunner 的浏览器雏形。经过 Naughton 和 Jonathan Payne 增补,这个浏览器成为 Hot Java 。

1994 年离开 Sun 公司,加入 Starwave ,开发服务器端 Java 应用。

1995 年,著书《 The Java Handbook 》。

1996 年,和 Herbert Schildt 著书《 Java: The Complete Reference 》。

1998 年, Walt Disney Internet Group 收购 Starwave ,并使之与 Infoseek 合并, Patrick Naughton 担任 Infoseek 公司 Executive Vice President 。 ( 注:百度创始人李彦宏曾经是 Infoseek 的核心工程师之一。 )

1999 年,在圣莫尼卡码头被_捕, 后 被判有罪 。 ( 注: Infoseek 的首席执行官 Motro 在得知 Naughton 被_捕 _ 后 _ 即 _ 与 _ 他 _ 取 _ 得 _ 了 _ 联 _ 系,并出了 10 _ 万 _ 美 _ 元的保_释_金。 )

此后,被 Infoseek 公司开除。

2004 年,加入 Azaleos 公司。

2009 年,离开 Azaleos 公司,加入 L1 Partners ,担任 CTO 。

2010 年,重新回到 Azaleos 公司,担任 Vice President of Engineering 。

Wayne Rosing :

1970 年代后期,在 Digital Equipment and Data General 公司担任工程经理 (Engineering Manager) 。

1980 年代,加入苹果公司,担任工程总监 (Director of Engineering) ,主要负责 Apple 计算机公司 LISA 和 Apple II 。

后加入 Sun 公司,担任 Sun 公司全资子公司 FirstPerson, Inc. 的总裁,主要是领导研发 Java ,建立 Sun 实验室。

后加入 Caere Corporation 公司担任首席技术官兼工程副总裁,负责管理 Caere 的光学字符识别 (OCR) 生产线的所有工程项目,并曾大力推动收购 Omniform 应用程序,后来该程序成为 Caere 的主要产品之一。

20011 月到 20055 月期间,在 Google 担任工程副总裁 (Vice President of Engineering) 。

此后,作为 Google 的 Advisor ,在加州大学研究 mathematical and physical sciences 。

另,自己动手设计并制作了遥控天文望远镜,和潜入南太平洋深海拍摄海底生物。

Eric Schmidt :

1955427 日在美国华盛顿特区出生,毕业于维吉尼亚州阿灵顿郡约克敦高中。

1976 年,施密特在普林斯顿大学取得电气工程( BSEE )的学士及硕士学位;

1979 年,施密特于柏克莱加州大学因为设计一电脑网络而得到理学硕士学位;

1982 年,以探讨分布式的管理软件问题为主要论文课题,取得了电子工程暨计算机科

学 (EECS) 哲学博士学位。

曾加入了程式编译器 lex 的编辑工程,且于史丹福商学院兼职教授。

在贝尔实验室、 Zilog 和当时全录辖下的帕罗奥多研究中心担任研究员。

1983 年,施密特以软件经理的身分加入 Sun 公司,并主导了 Java 平台技术的发展、升阳电脑独立平台的程式技术,并且确立了公司的网络策略。之后,他成为了 Sun 公司的首席技术官 (CTO) 及企业总裁。

1997 年,施密特担任了 Novell 公司的总裁,之后 Novell 收购了 Cambridge Technology Partners 。

在风险投资家 John Doerr 和 Michael Moritz 的建议下, Google 创始人拉里•佩奇和谢尔盖•布林于 2001 年招募 Eric Schmidt 来运作 Google 公司。

在 2001 年 3 月以董事会成员的身分担任 Google 的董事长,并在同年 8 月兼任总裁一职。

2006 年 8 月 28 日,施密特当选成为苹果公司董事会成员;但在 2009 年 8 月 3 日,因为 Google 与苹果公司日益激烈的利益冲突和竞争,施密特宣布退出董事会。

2008 年 10 月 19 日,施密特担任了奥巴马于竞选期间的非正式顾问,并开始竞选活动。在奥巴马胜选后,施密特为其咨询委员会的其中一员,并建议要解决美国内部问题最简单的方法为奖励可再生能源的开发,以取代化石燃料的使用。

2011 年三月,埃里克•施密特获得美国商务部长的提名。

一点想法

Java 从最开始的一个项目,多次演进和变化,经历了 21 年,成为了现在第一大的编程平台,改变了编程世界,改变着着整个 IT 世界,在移动互联网领域正继续着它的神话。

在 Java 每一个阶段,都是有着清晰的定位和目标的;不论他的失败或者成功。

Java ,似乎从来都没有为了匹配一个商业模式而生,伴随着开放,伴随着社区,传说着它的神奇。

Java 发展过程中先后加入的核心成员,每一位都是 IT 大牛;也许印证了, Java 的成功,绝非偶然。

参考资源

The Java Language Overview: http://java.sun.com/docs/overviews/java/java-overview-1.html

Java SE Platform: http://www.oracle.com/technetwork/java/javase/tech/index.html

Java SE HotSpot: http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html

Java Technology Concept Map: http://java.sun.com/new2java/javamap/intro.html

History Of Java: http://ei.cs.vt.edu/~wwwbtb/book/chap1/java_hist.html

一些关塞(关口)(关卡)

天下九塞 ,出自吕氏春秋,现在泛指雁门关,居庸关, 八达岭长城, 紫荆关 ,楚长城 ,黄草梁, 井陉关 ,句注塞 ,平靖关。

紫荆关 ,位于河北省易县县城西北 45 公里的紫荆岭上,关城东为万仞山,城西有犀牛山,与盘石口相接;城北为拒马河;城南是黄土岭。紫荆关城就建在这依坡傍水、两山相夹的盆地之内。 紫荆关是长城上一座著名的关城,位于居庸关和倒马关之间,号称 “ 内三关 ” 。

居庸关 ,位于北京西北部,距北京约 60 公里。居庸关设于太行山余脉之军都山峡谷之间,两侧均有高山耸立,纵深约 20 公里,地势险要。与附近的八达岭长城同为北京西北方的重要屏障。与倒马关和紫荆关合称 “ 内三关 ” 。

雁门关 ,又名西陉关,位于山西省忻州市代县县城以北约 20 公里处的雁门山中,是长城上的重要关隘,与宁武关、偏关合称为 “ 外三关 ” 。

宁武关 ,在今山西忻州市宁武县城区,与偏关和雁门关合称山西 “ 外三关 ” 。

偏头关 ,简称为偏关,关城即今山西省忻州市偏关县县城,与宁武关、雁门关合称 “ 外三关 ” ,是三关中最西边的一座。得名一说是因为关城东仰西伏,状如人首之偏;另一说是因为五代时期、宋代和金代在这里设立偏头寨的原因。今天的关城为明代所建。

嘉峪关 ,位于甘肃嘉峪关市向西 5 公里处,是明长城西端的第一重关,古代 “ 丝绸之路 ” 的交通要冲。嘉峪关关城位于嘉峪关最狭窄的山谷中部,地势最高的嘉峪山 上,城关两翼的城墙横穿沙漠戈壁,其以地势险要,巍峨壮观著称于世,被称为 “ 天下第一雄关 ” 。 与万里之外的 “ 天下第一关 ” 山海关遥相呼应。

潼关 ,位于陕西省渭南市潼关县北,北临黄河,南踞山腰。潼关是关中东大门,历来为兵家必争之地。

虎牢关 ,又称汜水关,因为避唐高祖的祖父李虎的忌讳亦称武牢关,在洛阳以东,今河南省荥阳市市区西北部 16 公里的汜水镇境内。它作为洛阳东边门户和重要的 关隘,因西周穆王在此牢虎而得名。南连嵩岳,北濒黄河,山岭交错,自成天险。大有 “ 一夫当关,万夫莫开 ” 之势,为历代兵家必争之地。

娘子关 ,为中国万里长城著名关隘,位于太行山脉西侧河北省井陉县西口,山西省平定县东北的绵山山麓。娘子关原名 “ 苇泽关 ” ,因唐平阳公主曾率兵驻守于此,平 阳公主的部队当时人称 “ 娘子军 ” , 故得今名。为山西和河北之间为数不多的通道之一,石太铁路和晋冀公路均从此关口经过,为交通要道。

友谊关 ,原称镇南关,位于中国广西壮族自治区凭祥市西南 15 公里处,湘桂铁路穿越峡谷连接越南谅山,是中国和越南之间的重要关口。自西汉始建,曾用名鸡陵关、大南关和界首关。 “ 友谊关 ” 三字由当年任国务院副总理兼外交部长陈毅元帅题写,用汉白玉雕刻。

山海关 ,又称 “ 榆关 ” ,以古渝水而得名,位于河北省最东部与辽宁省接壤处,秦皇岛市山海关区境内,燕山与渤海之间,素有 “ 天下第一关 ” 之称。。北靠燕山,南临渤海,扼守华北与东北之间狭长的陆路交通要道,地势险要,自古以来就是兵家必争之地。

平型关 ,位于中国山西省大同市灵丘县西南白崖乡,临近忻州市繁峙县东北,是明代内长城的一个重要关口。平型关因为中国抗日战争的平型关战役而家喻户晓。

昆仑关 ,广西南宁市东北方向 59 公里,宾阳县城西南方 30.5 公里,宾阳县和邕宁两县交界,相传是秦朝尉屠睢征服岭南以后建立。 1926 年南柳公路经山下 绕关而出,成为桂越国际交通线上之扼要关隘,控制着宾邕公路,堪称 “ 一夫当关,万夫莫敌 ” ,兵家必争之地。著名的桂南会战第二阶段的核心战役昆仑关战役地点。

娄山关 ,原名娄关,后称太平关。关名的来历,源于古代对娄山山脉的称谓。它是大娄山脉的主峰,海拨 1576 米,南距遵义市 50 公里,在遵义、桐梓两县的交 界处,北距巴蜀,南扼黔桂,为黔北咽喉,兵家必争之地。 红军长征遵义战役的序幕战,毛主席填有《忆秦娥 · 娄山关》词一首。

函谷关 ,是中国古代著名关隘,遗址位于今天河南省灵宝市东北方,距三门峡市市区 75 公里;最早在春秋战国时代由秦国所建。关隘地处深险谷地,地势险要,窄处只能容一辆马车通行,所谓 “ 车不方轨,马不并辔 ” 。传说老子是在此地创作《道德经》的。

玉门关 ,俗称小方盘城,位于中国甘肃省敦煌市西北约 90 公里处,是中国境内连通丝绸之路上的重要关隘之一。汉武帝置,因西城输入玉石取道于此得名;关城方 形如盘,北、西两面有门,北门外不及百米即到疏勒河;和西南的阳关同为当时通往西域各地的交通门户,出玉门关的北道,出阳关为南道。

武胜关 ,位于 湖北省 广水市 与 河南省 信阳市 交界处、 桐柏山 与 大别山 之间,是 长江 与 淮河 的分水岭。 京广铁路 、 107 国道由此通过。

平靖关 ,古称冥扼,又名恨这关、憾这关、石城山,为古代天下九塞之一。位于武胜关西,鄂豫交界处,信应公路由此通过。这里地势险要,两侧群山对峙,道路狭 窄险阻。历代为中原战略要地,南北交通要道,曾在此设驿站或巡检司。自春秋以来,这里战事频繁,皆为争关踞险之利。吴楚柏举之战,军事家孙武曾率吴兵经 此,夺关南下,几使楚国遭灭顶之灾。关侧有北伐战争烈士墓。

九里关 ,位于 湖北省 广水市 与 河南省 信阳市 交界处、 桐柏山 与 大别山 之间,是 长江 与 淮河 的分水岭。

秦末汉初乱之阶段划分

秦末汉初一段的读书笔记:
阶段一,秦始皇末年至三十七年:秦朝没落阶段 ,秦二世是前210年即位,陈胜吴广前209年七月就揭竿而起,发动了著名的反秦大起义。在秦二世继位的不到一年的时间里面,主要是还是在王室内部搞整肃,正在杀兄弟呢啊。所以秦王朝的崩溃主要是还是来自秦始皇末年的行政和政策。
秦始皇帝在统一全国后,在政治、整体、经济、文化等各方面针对政权建设的有诸多的改革和成就,在政体上推广了郡县制,开创了宗主理念的中央集权体制;地理上划定了中国的疆土轮廓;在文化交流上统一了文字、度量衡,打破了地方垄断;在军事上形成了中央军队;在建设上,修了长城,管道,水利等;等等;此处主要是看看引发秦末起义的隐患。
1.政治对手隐患,秦灭六国,开始全面使用使用郡县制管理国家。原来东方六国的王族和贵族仍然有不少遗留势力,本来是王侯将相,一下在变成了平民百姓啥也不是了,能不斗争吗?比方说代表人物,楚国项梁项羽、齐国田氏、韩国王族、赵国、燕国、魏国等;
2.各种工程:军事工程,北边为了防守匈奴,修长城;南边为了开疆扩土,修水利运军事物质;交通工程,大修直道,就是官道;长安的宫殿工程,墓地工程,特别是骊山的墓地工程;巡游工程,始皇帝喜欢全国出差,封禅,立碑啥的,这得修路架桥,砍树,上山,挖大石头刻字啥的等等;长生工程,始皇帝为了求仙和炼仙药,啥事都能干的出来,搞个几千人跑到海里射大鱼;移民工程,动不动就搞移民几万到几十万的移民工程。
3.军事行动,现在直接的证据一个是是蒙恬在北方长达数十年和匈奴作战、修长城;陈胜吴广起义前的身份,是到渔阳(密云附近)的900百人部队里面的军官、幕僚。
平民老百姓在这一段时间,是何其辛苦,要么参加劳役—秦时农民工;要么去当兵,参加各种军事行动。
4.关中和关东的关系,在秦统一六国和统一之后,老百姓无法生存的现状,主要是发生在函谷关以东部分。为什么呢啊,在秦末期看到关中的人民不堪的记录很少,也就是秦二世当政之后才有的,在后来的义军时期,即没有发生关中起义;也没有发生关中人民残杀秦王室、贵族、官吏的记录,反而陈胜吴广还要打着扶苏没死的旗号。可以得出结论,秦统一六国之后,关中和关东是分别对待的。秦虽然实现了郡县制,但春秋战国以来形成的东西对抗的局面并没有改变。
5.秦政权统治的基石是什么呢,主要在关中的王族贵族宗室、功勋大臣、父老豪杰;关外的郡县官吏,但是六国的底层在秦郡县制度管理之下是无法生存的。在后来的反秦斗争中领袖陈胜吴广是下级军官,刘邦、齐国田氏、英布、彭越、吴苪、张耳、陈馀、周市等等都不是普通老百姓,都是六国的基层官员或者地方豪杰。

阶段二,秦二世元年(前209年)至三年(前207年):反秦阶段 ,在陈胜吴广起义之后,各地纷纷涌现义军,这阶段主要是关东反秦义军与秦势力的斗争阶段,开始标志是陈胜吴广起义,结束标志是项羽分封天下,自立”西楚霸王”。
1.反秦义军中比较有影响的力量是:陈胜吴广的张楚,刘邦的沛势力,项梁项羽的江东楚势力,张耳陈馀为核心的赵势力,周市开创的魏势力,隐藏人物吴苪,以田氏为主的齐势力,韩广开创的燕势力。其中陈胜吴广、刘邦、项梁项羽是坚决的反秦派,攻击力十足;剩下的其他势力自守有余,没有坚决西进入关中灭秦的决心。陈胜吴广、刘邦,还有后期的彭越、英布为代表的出身比较平民化(下级军官,低级公务员,奴隶,豪强等);项羽出生楚国贵族,受过良好教育,田氏也是齐国贵族,燕、赵、魏多多少少都和六国王族或者贵族有一些关系。

阶段三,汉元年(前206年)至汉五年(前202年):诸侯争霸阶段 ,在反秦胜利之后,反秦义军内部矛盾急剧上升,形成楚汉东西(汉在西部,楚在东部)两大阵营长达五年的争霸斗争,最后以汉取胜结束。
1.此阶段,汉军兵分三路,北边是韩信,攻击西魏、赵、燕、齐等;中路东出潼关是刘邦亲自在前线作战,始终是和项羽直接作战为主;南边是出武关,主要是韩王信经营,并不是主要的战场,起到牵制作用。楚军以项羽力量为主,一面和汉军作战,一面还要和其他封王作战,其中势力最强的是齐和彭越,后来的英布。

阶段四,汉五年之后(前202年到前195年):大汉建国阶段 ,在消灭项羽之后,诸侯尊刘邦为皇帝,大汉开始了和平建国、武装削藩的路。
1.此阶段,主要是建立稳定的汉政权,一面定都长安,大封功臣,建立制度规章,确立继承人,一面诛杀异姓王,分封子弟就藩。大局确定,社会稳定,经济和建设得到恢复。

学习之--Stack Exchange网站架构

Stack Exchange系统管理员blog 上发布了一篇架构的文章。

网络流量

  • 每月95M的PV
  • 每秒800个HTTP请求
  • 每秒180个DNS请求
  • 每秒55Mb的网络带宽

数据中心

  • 1个机柜位于俄勒冈的Peak Internet(用于chat和Data Explorer)
  • 2个机柜位于纽约的Peer 1 (用于其他的Stack Exchange Network)

生产服务器

  • 12 Web Servers (Windows Server 2008 R2)
  • 2 Database Servers (Windows Server 2008 R2 and SQL Server 2008 R2)
  • 2 Load Balancers (Ubuntu Server and HAProxy)
  • 2 Caching Servers (Redis on CentOS)
  • 1 Router / Firewall (Ubuntu Server)
  • 3 DNS Servers (Bind on CentOS)

所有的软件和技术

  • 开发语言: C# / .NET
  • 持续构建服务器: CruiseControl.NET
  • 源码管理: Mercurial / Kiln
  • 操作系统: Windows Server 2008 R2,Ubuntu Server,CentOS
  • 数据库服务器:SQL Server 2008 R2
  • DNS服务器:Bind
  • 负载均衡软件:HAProxy
  • 缓存服务器:Redis
  • 日志: Splunk
  • 搜索索引技术: Lucene.NET
  • 备份: Bacula
  • 系统监控: Nagios (with n2rrd and drraw plugins)
  • 监控SQL Server: SQL Monitor from Red Gate

程序员和系统管理员

  • 14 位程序员
  • 2 位系统管理员

(以上不含故障备份和管理服务器)
———————————————————–
分析:
1.使用了三种操作系统:Windows Server, CentOS, Ubuntu Server;共有22个服务器,三个机柜;
2.可能的架构:DNS Servers–Router/Firewall–Load Balancers–Web Servers–Caching Servers–Database Servers;
3.12个Web服务器每秒钟处理800个http请求,感觉投资回报比有点儿低;

川西旅游

川西之成都-四姑娘山-稻城亚丁-康定-海螺沟旅游-成都:
D1:成都-雅安-宝兴-夹金山-小金-日隆;午饭夹金山饭店,夜晚住日隆;
D2:看四姑娘山,双桥沟;下午日隆-小金-丹巴;午饭在双桥沟门口,住丹巴;
D3:丹巴-塔公-八美-新都桥;午饭在八美,住新都桥;
D4:新都桥-雅江-理塘-稻城;午饭在理塘,住稻城;
D5:稻城-亚丁-珍珠海:中午饭在景区,住亚丁村;
D6:亚丁-洛绒牛场-亚丁-稻城,午饭在亚丁,住稻城;
D7:稻城-理塘-雅江-新都桥-折多山-康定,午饭在雅江,住康定;
D8:康定-木格措-康定-泸定-摩西镇,午饭在泸定,住摩西镇;
D9:摩西镇-二郎山-雅安-成都,午饭在摩西镇,住成都;
D10:成都-宽窄巷-春熙路-双流机场;
喜欢在那儿待着的感觉,里面到底有什么呢?有什么魅力?为什么吸引人呢?也许它就在那儿吸引着你!

JDK 7 in JavaOne 2010

执行Plan B的JDK 7,愿景:“Making things programmers do everyday easier.”;其Coin项目公布的新特性:

Improved numeric literals
Strings in switch
Reduced varargs warnings
Diamond operator
Multi-catch with more precise rethrow
try-with-resources statement

细节请参考Joseph D.Darcy的博客:http://blogs.sun.com/darcy/entry/project_coin_javaone_2010

文档下载参考:http://blogs.sun.com/darcy/resource/JavaOne/J1_2010-ProjectCoin.pdf

摘要:40 Android Business Models

Alex Curelea在Blog中从Sell app to individuals/Freemium/other sorts of products/srevices不同角度归纳了Android的四十种Business Model,分别是:
Model #1: Build the App, Sell the App to Individuals
Model #2: Make the App, Sell the App to Enterprises
Model #3: Make the App, Sell the App to Schools or Universities
Model #4: Make the App, Sell the App to OEMs
Model #5: Make the App, Sell the App to Content Providers
Model #6: Make the App, Sell the App to Service Providers

Model #7: Give Away the App, Sell the Customizations
Model #8: Give Away the App, Sell the Analytics
Model #9: Give Away the App, Sell the Remix
Model #10: Give Away the App, Sell the Bundle
Model #11: Give Away the App, Sell the Plugins
Model #12: Give Away the App, Sell the Feature Unlock Codes
Model #13: Give Away the App, Sell In-App Ads
Model #14: Give Away the App, Sell the Account
Model #15: Give Away the App, Sell Support
Model #16: Give Away the App, Sell the API
Model #17: Give Away the App, Sell the Content
Model #18: Give Away the App, Sell Premium Placement
Model #19: Give Away the App, Sell the Firm

Model #20: Sell Development Tools
Model #21: Sell Portability Toolkits
Model #23: Create a Content Marketplace
Model #24: Create an Android Job Board
Model #25: Create an Android Site Ad Broker
Model #26: Create Hardware Add-Ons
Model #27: Create Device Accessories
Model #28: Write Books

Model #31: Internationalization and Localization
Model #32: Bug Hunter
Model #33: User Experience Designer
Model #34: JAR Porter
Model #35: API Wrapper
Model #36: App Promoter
Model #37: App Market Agent
Model #38: Device Marketer
Model #39: Trainer
Model #40: Break Outside the Box