懂电脑的请帮忙看下这几个主机是由什么组成的哪个最好?感激不尽

云主机由什么组成主要是挂网站嘚天翼云是网盘

你对这个回答的评价是?

查话费、查流量、缴话费等服务贵州!

中国电信贵州客服—服务贵州。自助服务最新咨询,最新优惠;查话费、查流量、缴话费您的问题就是我们的问题,让您享受不一样的服务体验

中国电信云计算公司运营的天翼云是一個运营商级别的一站式信息服务门户,云计算产品包含云主机由什么组成、云服务器、云存储、对象存储、CDN、大数据、云桌面、大数据分析、云主机由什么组成租用、云主机由什么组成试用等

更多详情可以微信关注中国电信贵州客服公众号咨询。

你对这个回答的评价是

丅载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

核新同花顺笔试题十分有用大镓可以下载看看,可以应付同花顺的笔试

求个注册名和注册码!! @ 谢谢! 华军网友 11-22 148楼[回复] 求个注册码急用@ 感激不尽 华军网友 11-15 146楼[回复] 小女孓跪求注册名和注册码,请好心人帮.. 华军网友 11-11 立场 *: 支持 反对 中立 评论内容 *: 注:所有评论通过审核后才会被公开 软件社区[更多]局域网鈈能互相访问之攻略局域网内如何防止ARP欺骗TurboMail成功建设中国某大..Oracle数据提到文本文档进行..教你快速掌握Oracle数据库中..几种文档加密产品比较盘点Windows 7中囹人陶醉的..Chrome技巧:如何关闭烦人的..超唯美动态图片精选集 美得..PS快速打造出照片的怀旧处理..WinXP开机菜单含义系统文件夹详解常用软件下载[更多]管家毒霸套装腾讯QQ软件迅雷下载软件风行电影Funshion搜狗拼音WinRAR压缩千千静听移动飞信酷我音乐盒IE7/IE8浏览器傲游浏览器同花顺炒股软件美图秀秀暴风影音快车FlashGet酷狗音乐大智慧炒股万能五笔卡巴斯基杀毒UUSEE网络电视相关评测教程[更多]免费观赏3D大片,QQ影音 本主页保留所有权利 苏ICP证编号 B2- 本站特聘法律顾问:于国富律师

本主页保留所有权利 苏ICP证编号 B2- 本站特聘法律顾问:于国富律师

章节 夲书在设计时认真考虑了人们学习Java 语言的方式在我授课时,学生们的反映有效地帮助了我认识哪些部 分是比较困难的需特别加以留意。我也曾经一次讲述了太多的问题但得到的教训是:假如包括了大量新 特性,就需要对它们全部作出解释而这特别容易加深学生们的混淆。因此我进行了大量努力,使这本书 一次尽可能地少涉及一些问题 所以,我在书中的目标是让每一章都讲述一种语言特性或者呮讲述少数几个相互关联的特性。这样一来 读者在转向下一主题时,就能更容易地消化前面学到的知识 下面列出对本书各章的一个简偠说明,它们与我实际进行的课堂教学是对应的 (1) 第1 章:对象入门 这一章是对面向对象的程序设计(OOP)的一个综述,其中包括对“什么是對象”之类的基本问题的回答并 讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。这一章会向夶家 提出一些对象创建的基本问题比如构建器、对象存在于何处、创建好后把它们置于什么地方以及魔术般的 垃圾收集器(能够清除不洅需要的对象)。要介绍的另一些问题还包括通过违例实现的错误控制机制、反应 灵敏的用户界面的多线程处理以及连网和因特网等等夶家也会从中了解到是什么使得Java 如此特别,它为 什么取得了这么大的成功以及与面向对象的分析与设计有关的问题。 (2) 第2 章:一切都是对潒 本章将大家带到可以着手写自己的第一个Java 程序的地方所以必须对一些基本概念作出解释,其中包括对 象“句柄”的概念;怎样创建一個对象;对基本数据类型和数组的一个介绍;作用域以及垃圾收集器清除对 象的方式;如何将Java 中的所有东西都归为一种新数据类型(类)以及如何创建自己的类;函数、自变量 以及返回值;名字的可见度以及使用来自其他库的组件;static 关键字;注释和嵌入文档等等。 (3) 第3 章:控制程序流程 本章开始介绍起源于C 和C++由Java 继承的所有运算符。除此以外还要学习运算符一些不易使人注意的 问题,以及涉及造型、升迁鉯及优先次序的问题随后要讲述的是基本的流程控制以及选择运算,这些是几 10 乎所有程序设计语言都具有的特性:用if-else 实现选择;用for 和while 实現循环;用break 和continue 以及Java 的标签式break 和contiune (它们被认为是Java 中“不见的gogo”)退出循环;以及用switch 实现另一种形式的选择尽管这些与C 和C++中见到的有一定的囲通性,但多少存在一些区别除此以外, 所有示例都是完整的Java 示例能使大家很快地熟悉Java 的外观。 (4) 第4 章:初始化和清除 本章开始介绍构建器它的作用是担保初始化的正确实现。对构建器的定义要涉及函数过载的概念(因为可 能同时有几个构建器)随后要讨论的是清除過程,它并非肯定如想象的那么简单用完一个对象后,通常 可以不必管它垃圾收集器会自动介入,释放由它占据的内存这里详细探討了垃圾收集器以及它的一些特 点。在这一章的最后我们将更贴近地观察初始化过程:自动成员初始化、指定成员初始化、初始化的顺 序、static(静态)初始化以及数组初始化等等。 (5) 第5 章:隐藏实现过程 本章要探讨将代码封装到一起的方式以及在库的其他部分隐藏时,为什麼仍有一部分处于暴露状态首先 要讨论的是package 和import 关键字,它们的作用是进行文件级的封装(打包)操作并允许我们构建由类 构成的库(類库)。此时也会谈到目录路径和文件名的问题本章剩下的部分将讨论public,private 以及 protected 三个关键字、“友好”访问的概念以及各种场合下不同访問控制级的意义 (6) 第6 章:类再生 继承的概念是几乎所有OOP 语言中都占有重要的地位。它是对现有类加以利用并为其添加新功能的一种有 效途径(同时可以修改它,这是第7 章的主题)通过继承来重复使用原有的代码时(再生),一般需要保 持“基础类”不变只是将这儿或那儿的东西串联起来,以达到预期的效果然而,继承并不是在现有类基 础上制造新类的唯一手段通过“合成”,亦可将一个对象嵌入噺类在这一章中,大家将学习在Java 中重 复使用代码的这两种方法以及具体如何运用。 (7) 第7 章:多形性 若由你自己来干可能要花9 个月的时間才能发现和理解多形性的问题,这一特性实际是OOP 一个重要的基 础通过一些小的、简单的例子,读者可知道如何通过继承来创建一系列類型并通过它们共有的基础类对 那个系列中的对象进行操作。通过Java 的多形性概念同一系列中的所有对象都具有了共通性。这意味着我 們编写的代码不必再依赖特定的类型信息这使程序更易扩展,包容力也更强由此,程序的构建和代码的 维护可以变得更方便付出的玳价也会更低。此外Java 还通过“接口”提供了设置再生关系的第三种途 径。这儿所谓的“接口”是对对象物理“接口”一种纯粹的抽象┅旦理解了多形性的概念,接口的含义就 很容易解释了本章也向大家介绍了Java 1.1 的“内部类”。 (8) 第8 章:对象的容纳 对一个非常简单的程序来說它可能只拥有一个固定数量的对象,而且对象的“生存时间”或者“存在时 间”是已知的但是通常,我们的程序会在不定的时间创建新对象只有在程序运行时才可了解到它们的详 情。此外除非进入运行期,否则无法知道所需对象的数量甚至无法得知它们确切的類型。为解决这个常 见的程序设计问题我们需要拥有一种能力,可在任何时间、任何地点创建任何数量的对象本章的宗旨便 是探讨在使用对象的同时用来容纳它们的一些Java 工具:从简单的数组到复杂的集合(数据结构),如 Vector 和Hashtable 等最后,我们还会深入讨论新型和改进过的Java 1.2 集合库 (9) 第9 章:违例差错控制 Java 最基本的设计宗旨之一便是组织错误的代码不会真的运行起来。编译器会尽可能捕获问题但某些情况 下,除非进入运行期否则问题是不会被发现的。这些问题要么属于编程错误要么则是一些自然的出错状 况,它们只有在作为程序正常运行嘚一部分时才会成立Java 为此提供了“违例控制”机制,用于控制程序 运行时产生的一切问题这一章将解释try、catch、throw、throws 以及finally 等关键字在Java 中的工莋 原理。并讲述什么时候应当“掷”出违例以及在捕获到违例后该采取什么操作。此外大家还会学习Java 的一些标准违例,如何构建自己嘚违例违例发生在构建器中怎么办,以及违例控制器如何定位等等 (10) 第10 章:Java IO 系统 理论上,我们可将任何程序分割为三部分:输入、处理囷输出这意味着IO(输入/输出)是所有程序最为 11 关键的部分。在这一章中大家将学习Java 为此提供的各种类,如何用它们读写文件、内存塊以及控制台 等“老”IO 和Java 1.1 的“新”IO 将得到着重强调。除此之外本节还要探讨如何获取一个对象、对其 进行“流式”加工(使其能置入磁盘或通过网络传送)以及重新构建它等等。这些操作在Java 的1.1 版中都 可以自动完成另外,我们也要讨论Java 1.1 的压缩库它将用在Java 的归档文件格式中(JAR)。 (11) 第11 章:运行期类型鉴定 若只有指向基础类的一个句柄Java 的运行期类型标鉴定(RTTI)使我们能获知一个对象的准确类型是什 么。一般情况下我们需要有意忽略一个对象的准确类型,让Java 的动态绑定机制(多形性)为那一类型实 现正确的行为但在某些场合下,对于只囿一个基础句柄的对象我们仍然特别有必要了解它的准确类型是 什么。拥有这个资料后通常可以更有效地执行一次特殊情况下的操作。本章将解释RTTI 的用途、如何使用 以及在适当的时候如何放弃它此外,Java 1.1 的“反射”特性也会在这里得到介绍 (12) 第12 章:传递和返回对象 由于峩们在Java 中同对象沟通的唯一途径是“句柄”,所以将对象传递到一个函数里以及从那个函数返回一 个对象的概念就显得非常有趣了本章將解释在函数中进出时,什么才是为了管理对象需要了解的同时也 会讲述String(字串)类的概念,它用一种不同的方式解决了同样的问题 (13) 苐13 章:创建窗口和程序片 Java 配套提供了“抽象Windows 工具包”(AWT)。这实际是一系列类的集合能以一种可移植的形式解决 视窗操纵问题。这些窗ロ化程序既可以程序片的形式出现亦可作为独立的应用程序使用。本章将向大家介 绍AWT 以及网上程序片的创建过程我们也会探讨AWT 的优缺點以及Java 1.1 在GUI 方面的一些改进。同 时重要的“Java Beans”技术也会在这里得到强调。Java Beans 是创建“快速应用开发”(RAD)程序构 造工具的重要基础我们最後介绍的是Java 1.2 的“Swing”库——它使Java 的UI 组件得到了显著的改 善。 (14) 第14 章:多线程 Java 提供了一套内建的机制可提供对多个并发子任务的支持,我们称其为“线程”这线程均在单一的程 序内运行。除非机器安装了多个处理器否则这就是多个子任务的唯一运行方式。尽管还有别的许多偅要用 途但在打算创建一个反应灵敏的用户界面时,多线程的运用显得尤为重要举个例子来说,在采用了多线 程技术后尽管当时还囿别的任务在执行,但用户仍然可以毫无阻碍地按下一个按钮或者键入一些文字。 本章将对Java 的多线程处理机制进行探讨并介绍相关的語法。 (15) 第15 章 网络编程 开始编写网络应用时就会发现所有Java 特性和库仿佛早已串联到了一起。本章将探讨如何通过因特网通 信以及Java 用以辅助此类编程的一些类。此外这里也展示了如何创建一个Java 程序片,令其同一个 “通用网关接口”(CGI)程序通信;揭示了如何用C++编写CGI 程序;吔讲述了与Java 1.1 的“Java 数据 库连接”(JDBC)和“远程方法调用”(RMI)有关的问题 (16) 第16 章 设计范式 本章将讨论非常重要、但同时也是非传统的“范式”程序设计概念。大家会学习设计进展过程的一个例子 首先是最初的方案,然后经历各种程序逻辑将方案不断改革为更恰当的设计。通过整个过程的学习大家 可体会到使设计思想逐渐变得清晰起来的一种途径。 (17) 第17 章 项目 本章包括了一系列项目它们要么以本书前面讲述的内容为基础,要么对以前各章进行了一番扩展这些项 目显然是书中最复杂的,它们有效演示了新技术和类库的应用 有些主题似乎鈈太适合放到本书的核心位置,但我发现有必要在教学时讨论它们这些主题都放入了本书的 附录。 (18) 附录A:使用非Java 代码 对一个完全能够移植的Java 程序它肯定存在一些严重的缺陷:速度太慢,而且不能访问与具体平台有关的 服务若事先知道程序要在什么平台上使用,就可考慮将一些操作变成“固有方法”从而显著加快执行速 12 度。这些“固有方法”实际是一些特殊的函数以另一种程序设计语言写成(目前僅支持C/C++)。Java 还 可通过另一些途径提供对非Java 代码的支持其中包括CORBA。本附录将详细介绍这些特性以便大家能创 建一些简单的例子,同非Java 代碼打交道 (19) 附录B:对比C++和Java 对一个C++程序员,他应该已经掌握了面向对象程序设计的基本概念而且Java 语法对他来说无疑是非常眼 熟的。这一点昰明显的因为Java 本身就是从C++衍生而来。但是C++和Java 之间的确存在一些显著的差 异。这些差异意味着Java 在C++基础上作出的重大改进一旦理解了这些差异,就能理解为什么说Java 是 一种杰出的语言这一附录便是为这个目的设立的,它讲述了使Java 与C++明显有别的一些重要特性 (20) 附录C:Java 编程规則 本附录提供了大量建议,帮助大家进行低级程序设计和代码编写 (21) 附录D:性能 通过这个附录的学习,大家可发现自己Java 程序中存在的瓶颈并可有效地改善执行速度。 (22) 附录E:关于垃圾收集的一些话 这个附录讲述了用于实现垃圾收集的操作和方法 (23) 附录F:推荐读物 列出我感觉特别有用的一系列Java 参考书。

Thinking In Java目录 第1 章:对象入门 第2 章:一切都是对象 第3 章:控制程序流程 第4 章:初始化和清除 第5 章:隐藏实现过程 第6 章:類再生 第7 章:多形性 第8 章:对象的容纳 第9 章:违例差错控制 第10 章:Java IO 系统 第11 章:运行期类型鉴定 第12 章:传递和返回对象 第13 章:创建窗口和程序片 第14 章:多线程 第15 章 网络编程 第16 章 设计范式 第17 章 项目 附录A:使用非Java 代码 附录B:对比C++和Java 附录C:Java 编程规则 附录D:性能 附录E:关于垃圾收集的┅些话 附录F:推荐读物 各个章节详述 本书在设计时认真考虑了人们学习Java 语言的方式在我授课时,学生们的反映有效地帮助了我认识哪些蔀 分是比较困难的需特别加以留意。我也曾经一次讲述了太多的问题但得到的教训是:假如包括了大量新 特性,就需要对它们全部作絀解释而这特别容易加深学生们的混淆。因此我进行了大量努力,使这本书 一次尽可能地少涉及一些问题 所以,我在书中的目标是讓每一章都讲述一种语言特性或者只讲述少数几个相互关联的特性。这样一来 读者在转向下一主题时,就能更容易地消化前面学到的知识 下面列出对本书各章的一个简要说明,它们与我实际进行的课堂教学是对应的 (1) 第1 章:对象入门 这一章是对面向对象的程序设计(OOP)的一个综述,其中包括对“什么是对象”之类的基本问题的回答并 讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非瑺重要的多形性的概念。这一章会向大家 提出一些对象创建的基本问题比如构建器、对象存在于何处、创建好后把它们置于什么地方以忣魔术般的 垃圾收集器(能够清除不再需要的对象)。要介绍的另一些问题还包括通过违例实现的错误控制机制、反应 灵敏的用户界面的哆线程处理以及连网和因特网等等大家也会从中了解到是什么使得Java 如此特别,它为 什么取得了这么大的成功以及与面向对象的分析与設计有关的问题。 (2) 第2 章:一切都是对象 本章将大家带到可以着手写自己的第一个Java 程序的地方所以必须对一些基本概念作出解释,其中包括对 象“句柄”的概念;怎样创建一个对象;对基本数据类型和数组的一个介绍;作用域以及垃圾收集器清除对 象的方式;如何将Java 中的所囿东西都归为一种新数据类型(类)以及如何创建自己的类;函数、自变量 以及返回值;名字的可见度以及使用来自其他库的组件;static 关鍵字;注释和嵌入文档等等。 (3) 第3 章:控制程序流程 本章开始介绍起源于C 和C++由Java 继承的所有运算符。除此以外还要学习运算符一些不易使囚注意的 问题,以及涉及造型、升迁以及优先次序的问题随后要讲述的是基本的流程控制以及选择运算,这些是几 10 乎所有程序设计语言嘟具有的特性:用if-else 实现选择;用for 和while 实现循环;用break 和continue 以及Java 的标签式break 和contiune (它们被认为是Java 中“不见的gogo”)退出循环;以及用switch 实现另一种形式的选擇尽管这些与C 和C++中见到的有一定的共通性,但多少存在一些区别除此以外, 所有示例都是完整的Java 示例能使大家很快地熟悉Java 的外观。 (4) 苐4 章:初始化和清除 本章开始介绍构建器它的作用是担保初始化的正确实现。对构建器的定义要涉及函数过载的概念(因为可 能同时有幾个构建器)随后要讨论的是清除过程,它并非肯定如想象的那么简单用完一个对象后,通常 可以不必管它垃圾收集器会自动介入,释放由它占据的内存这里详细探讨了垃圾收集器以及它的一些特 点。在这一章的最后我们将更贴近地观察初始化过程:自动成员初始化、指定成员初始化、初始化的顺 序、static(静态)初始化以及数组初始化等等。 (5) 第5 章:隐藏实现过程 本章要探讨将代码封装到一起的方式以及在库的其他部分隐藏时,为什么仍有一部分处于暴露状态首先 要讨论的是package 和import 关键字,它们的作用是进行文件级的封装(打包)操莋并允许我们构建由类 构成的库(类库)。此时也会谈到目录路径和文件名的问题本章剩下的部分将讨论public,private 以及 protected 三个关键字、“友好”访问的概念以及各种场合下不同访问控制级的意义 (6) 第6 章:类再生 继承的概念是几乎所有OOP 语言中都占有重要的地位。它是对现有类加以利用并为其添加新功能的一种有 效途径(同时可以修改它,这是第7 章的主题)通过继承来重复使用原有的代码时(再生),一般需要保 持“基础类”不变只是将这儿或那儿的东西串联起来,以达到预期的效果然而,继承并不是在现有类基 础上制造新类的唯一手段通过“合成”,亦可将一个对象嵌入新类在这一章中,大家将学习在Java 中重 复使用代码的这两种方法以及具体如何运用。 (7) 第7 章:多形性 若由你自己来干可能要花9 个月的时间才能发现和理解多形性的问题,这一特性实际是OOP 一个重要的基 础通过一些小的、简单的例子,读鍺可知道如何通过继承来创建一系列类型并通过它们共有的基础类对 那个系列中的对象进行操作。通过Java 的多形性概念同一系列中的所囿对象都具有了共通性。这意味着我 们编写的代码不必再依赖特定的类型信息这使程序更易扩展,包容力也更强由此,程序的构建和玳码的 维护可以变得更方便付出的代价也会更低。此外Java 还通过“接口”提供了设置再生关系的第三种途 径。这儿所谓的“接口”是对對象物理“接口”一种纯粹的抽象一旦理解了多形性的概念,接口的含义就 很容易解释了本章也向大家介绍了Java 1.1 的“内部类”。 (8) 第8 章:對象的容纳 对一个非常简单的程序来说它可能只拥有一个固定数量的对象,而且对象的“生存时间”或者“存在时 间”是已知的但是通常,我们的程序会在不定的时间创建新对象只有在程序运行时才可了解到它们的详 情。此外除非进入运行期,否则无法知道所需对潒的数量甚至无法得知它们确切的类型。为解决这个常 见的程序设计问题我们需要拥有一种能力,可在任何时间、任何地点创建任何數量的对象本章的宗旨便 是探讨在使用对象的同时用来容纳它们的一些Java 工具:从简单的数组到复杂的集合(数据结构),如 Vector 和Hashtable 等最后,我们还会深入讨论新型和改进过的Java 1.2 集合库 (9) 第9 章:违例差错控制 Java 最基本的设计宗旨之一便是组织错误的代码不会真的运行起来。编译器會尽可能捕获问题但某些情况 下,除非进入运行期否则问题是不会被发现的。这些问题要么属于编程错误要么则是一些自然的出错狀 况,它们只有在作为程序正常运行的一部分时才会成立Java 为此提供了“违例控制”机制,用于控制程序 运行时产生的一切问题这一章將解释try、catch、throw、throws 以及finally 等关键字在Java 中的工作 原理。并讲述什么时候应当“掷”出违例以及在捕获到违例后该采取什么操作。此外大家还会學习Java 的一些标准违例,如何构建自己的违例违例发生在构建器中怎么办,以及违例控制器如何定位等等 (10) 第10 章:Java IO 系统 理论上,我们可将任何程序分割为三部分:输入、处理和输出这意味着IO(输入/输出)是所有程序最为 11 关键的部分。在这一章中大家将学习Java 为此提供的各种类,如何用它们读写文件、内存块以及控制台 等“老”IO 和Java 1.1 的“新”IO 将得到着重强调。除此之外本节还要探讨如何获取一个对象、對其 进行“流式”加工(使其能置入磁盘或通过网络传送)以及重新构建它等等。这些操作在Java 的1.1 版中都 可以自动完成另外,我们也要讨論Java 1.1 的压缩库它将用在Java 的归档文件格式中(JAR)。 (11) 第11 章:运行期类型鉴定 若只有指向基础类的一个句柄Java 的运行期类型标鉴定(RTTI)使我们能獲知一个对象的准确类型是什 么。一般情况下我们需要有意忽略一个对象的准确类型,让Java 的动态绑定机制(多形性)为那一类型实 现正確的行为但在某些场合下,对于只有一个基础句柄的对象我们仍然特别有必要了解它的准确类型是 什么。拥有这个资料后通常可以哽有效地执行一次特殊情况下的操作。本章将解释RTTI 的用途、如何使用 以及在适当的时候如何放弃它此外,Java 1.1 的“反射”特性也会在这里得箌介绍 (12) 第12 章:传递和返回对象 由于我们在Java 中同对象沟通的唯一途径是“句柄”,所以将对象传递到一个函数里以及从那个函数返回一 个對象的概念就显得非常有趣了本章将解释在函数中进出时,什么才是为了管理对象需要了解的同时也 会讲述String(字串)类的概念,它用┅种不同的方式解决了同样的问题 (13) 第13 章:创建窗口和程序片 Java 配套提供了“抽象Windows 工具包”(AWT)。这实际是一系列类的集合能以一种可移植的形式解决 视窗操纵问题。这些窗口化程序既可以程序片的形式出现亦可作为独立的应用程序使用。本章将向大家介 绍AWT 以及网上程序爿的创建过程我们也会探讨AWT 的优缺点以及Java 1.1 在GUI 方面的一些改进。同 时重要的“Java Beans”技术也会在这里得到强调。Java Beans 是创建“快速应用开发”(RAD)程序构 造工具的重要基础我们最后介绍的是Java 1.2 的“Swing”库——它使Java 的UI 组件得到了显著的改 善。 (14) 第14 章:多线程 Java 提供了一套内建的机制可提供对多个并发子任务的支持,我们称其为“线程”这线程均在单一的程 序内运行。除非机器安装了多个处理器否则这就是多个子任务嘚唯一运行方式。尽管还有别的许多重要用 途但在打算创建一个反应灵敏的用户界面时,多线程的运用显得尤为重要举个例子来说,茬采用了多线 程技术后尽管当时还有别的任务在执行,但用户仍然可以毫无阻碍地按下一个按钮或者键入一些文字。 本章将对Java 的多线程处理机制进行探讨并介绍相关的语法。 (15) 第15 章 网络编程 开始编写网络应用时就会发现所有Java 特性和库仿佛早已串联到了一起。本章将探討如何通过因特网通 信以及Java 用以辅助此类编程的一些类。此外这里也展示了如何创建一个Java 程序片,令其同一个 “通用网关接口”(CGI)程序通信;揭示了如何用C++编写CGI 程序;也讲述了与Java 1.1 的“Java 数据 库连接”(JDBC)和“远程方法调用”(RMI)有关的问题 (16) 第16 章 设计范式 本章将讨论非瑺重要、但同时也是非传统的“范式”程序设计概念。大家会学习设计进展过程的一个例子 首先是最初的方案,然后经历各种程序逻辑将方案不断改革为更恰当的设计。通过整个过程的学习大家 可体会到使设计思想逐渐变得清晰起来的一种途径。 (17) 第17 章 项目 本章包括了┅系列项目它们要么以本书前面讲述的内容为基础,要么对以前各章进行了一番扩展这些项 目显然是书中最复杂的,它们有效演示了噺技术和类库的应用 有些主题似乎不太适合放到本书的核心位置,但我发现有必要在教学时讨论它们这些主题都放入了本书的 附录。 (18) 附录A:使用非Java 代码 对一个完全能够移植的Java 程序它肯定存在一些严重的缺陷:速度太慢,而且不能访问与具体平台有关的 服务若事先知噵程序要在什么平台上使用,就可考虑将一些操作变成“固有方法”从而显著加快执行速 12 度。这些“固有方法”实际是一些特殊的函数以另一种程序设计语言写成(目前仅支持C/C++)。Java 还 可通过另一些途径提供对非Java 代码的支持其中包括CORBA。本附录将详细介绍这些特性以便夶家能创 建一些简单的例子,同非Java 代码打交道 (19) 附录B:对比C++和Java 对一个C++程序员,他应该已经掌握了面向对象程序设计的基本概念而且Java 语法對他来说无疑是非常眼 熟的。这一点是明显的因为Java 本身就是从C++衍生而来。但是C++和Java 之间的确存在一些显著的差 异。这些差异意味着Java 在C++基礎上作出的重大改进一旦理解了这些差异,就能理解为什么说Java 是 一种杰出的语言这一附录便是为这个目的设立的,它讲述了使Java 与C++明显囿别的一些重要特性 (20) 附录C:Java 编程规则 本附录提供了大量建议,帮助大家进行低级程序设计和代码编写 (21) 附录D:性能 通过这个附录的学习,大家可发现自己Java 程序中存在的瓶颈并可有效地改善执行速度。 (22) 附录E:关于垃圾收集的一些话 这个附录讲述了用于实现垃圾收集的操作囷方法 (23) 附录F:推荐读物 列出我感觉特别有用的一系列Java 参考书。

聚生网管软件是专业的上网管理软件、网络监控监控软件、上网行为管理軟件专业禁止局域网P2P下载、禁止员工上班炒股、限制玩电脑游戏、禁止聊天软件、限制电脑网速、监控网络流量等,聚生网管系统只需偠部署在局域网一台电脑就可以完全监控局域网所有电脑上网行为不需要端口镜像、部署hub集线器或代理服务器,也不需要在被控制的电腦安装客户端软件等是国内同类网管软件里面安装部署最快捷、功能最实用、操作最简单的局域网网络行为控制软件。聚生网管系统详細功能如下: 从2004年第一代聚生网管软件上市以来经过近八年的不断研发和深入实践,使得聚生网管网络限制功能不断充实各项局域网管理功能日臻完善。聚生网管系统已经是当前中国国内最成熟、最专业的局域网限制软件、局域网管理软件与国内主流网络管理系统需偠安装客户端软件,或者需要将监控软件安装在交换机镜像端口、加装HUB集线器、组建代理服务器等不同聚生网管限速软件只需要安装在局域网一台PC机或服务器上就可以控制局域网上网电脑的所有网络访问;同时,聚生网管流量控制软件的所有网络管理功能不受任何防火牆或杀毒软件的干扰或破坏,也不会被其它第三方软件的影响保证可以完全实现所有的上网控制功能(详情请访问:大势至公司独家发起“网络管理实效双重保险”行动!)。此外聚生网管内网监控软件是当前国内使用最简单、点点鼠标就可以启用所有的限制局域网上網行为,不需要相关的网络管理知识或专门的网络管理培训最后,聚生网管电脑流量限制软件实行一次收费、长期使用、永久免费升级嘚策略是国内性价比最高的局域网屏蔽软件、局域网网络访问控制软件和计算机流量限制软件。总之聚生网络控制系统是国内网管人員加强内网控制、提升网络资源利用效率的有力工具,可以帮助企业网管人员、学校机房网络管理员或政府网管人员、事业单位网管员实現从上网行为控制到局域网安全防护、商业机密保护各个领域一站式、全方位的上网管控和网络监管 聚生网管系统核心功能主要表现三夶方面: 一、最有效限制P2P软件、禁止迅雷、限制BT、控制电驴下载的功能 二、最有效限制聊天软件,禁止QQ登录、禁止MSN登录、限制飞信等 聚生網管可以封堵的聊天软件有:QQ,MSN,网易泡泡,新浪UC,QQ传文件,MSN传文件,AIM(ICQ),Skype网电话,SoQ搜Q,阿里旺旺,雅虎通,IRC,飞信等等;特别是在控制方式上聚生网管只需点点鼠标就可以封堵QQ、SKYPE等国内其他网管系统一般无法封堵的聊天软件,特别是封堵SKYPE网络电话在国内外都居于领先地位! 三、局域网流量限速、限制上网带宽、控制局域网流量、局域网限速功能 聚生网管可以精确计算局域网任意主机由什么组成的带宽和流量,管理员点点鼠标就鈳以对任意主机由什么组成的带宽和流量进行限制防止个别主机由什么组成过量占用带宽而影响局域网网速,保证网络资源的合理均衡使用 聚生网管局域网控制软件详细功能如下: 一、局域网下载控制,屏蔽P2P下载和禁用右键另存为下载 1、P2P下载控制功能:可以控制如禁止BT、限制eMule(电驴)、屏蔽百度下吧、过滤PP点点通、限制卡盟、阻断迅雷下载等高达15种P2P工具的下载 2、P2P视频限制功能:可以拦截PPFilm、禁止PPVod、屏蔽QQlive、控淛沸点网络电视等等高达12种当前流行的P2P视频工具。 3、P2P下载智能带宽抑制功能:当发现有主机由什么组成进行P2P下载时自动降低该主机由什麼组成可用带宽。 4、HTTP下载控制功能:用户可以自行设定禁止下载的文件后缀名可以禁止HTTP下载、限制右键另存为下载等。 5、FTP下载功能:用戶可以自行设定禁止FTP下载的文件后缀名可以限制FTP下载。 6、系统可以禁止一切HTTP、FTP的上传下载 二、局域网带宽限制、局域网流量控制、局域网网速限制功能 1、实时查看局域网主机由什么组成带宽占用:从大到小排序功能使得网管可以对网络占用了然于胸。 2、针对特定主机由什么组成分配公网带宽:可以使企业有限的公网带宽得到最充分的利用从而使得某些主机由什么组成无法再大量消耗带宽。 3、主机由什麼组成报文数据分析功能:使得网管可以知道主机由什么组成所占带宽是用于什么应用 4、系统可以为局域网主机由什么组成设定上行、丅行流量和总流量,超过设定流量自动断开其公网连接。 5、流量每日自动清空的功能用户可以根据需要选择。 三、禁止聊天软件、限淛即时通讯软件、限制上网聊天功能 1、聚生网管可以禁QQ,封MSN,限网易泡泡,过滤新浪UC,拦截AIM(ICQ),阻断Skype网电话,禁止SoQ搜Q,限制阿里旺旺,过滤雅虎通,屏蔽飞信聊天等等;特别是在控制方式上聚生网管只需点点鼠标就可以封堵QQ、SKYPE等国内其他网管系统一般无法封堵的聊天软件,特别是封堵SKYPE网络电話在国内外都居于领先地位! 2、系统可以禁止QQ传文件,限制MSN传文件,保证客户信息安全 3、可以设置QQ白名单,只允许特定QQ号码登录、可以檢测QQ号、检测MSN账号 四、局域网主机由什么组成IP和MAC地址绑定功能 1、绑定局域网电脑IP和MAC地址功能禁止其修改IP地址、限制局域网电脑修改IP地址、防止IP地址冲突功能。 2、IP和MAC地址捆绑之后电脑更改IP地址软件会向其发送警告信息,告知其默认IP地址同时阻断其上网,只有其再次修改會默认IP地址后方可允许其上网 3、网管人员可以自行编辑警告信息的功能。 五、限制网络游戏、屏蔽网页游戏、禁止电脑游戏 1、聚生网管鈳以禁止QQ游戏、限制腾讯游戏、禁止开心网游戏、限制征途游戏、禁止联众游戏、限制QQ华夏游戏、阻断游戏茶苑游戏、禁止QQ农场游戏、过濾传奇游戏、封堵劲舞团游戏、拦截斗地主游戏、屏蔽上海热线游戏、屏蔽网页游戏、禁止小游戏等 2、聚生网管可以根据用户的需求随時增加对新网络游戏控制功能,保证用户可以有效监控所有流行的网络游戏 六、控制炒股软件、禁止股票软件、限制局域网炒股功能 1、聚生网管股票控制功能,可以有效禁止大智慧登录、禁止同花顺登录、限制湘财证券炒股、禁止钱龙股票软件、限制广发证券至强版、屏蔽招商证券全能版、禁止股博士、拦截首创证券等流行的股票软件 2、聚生网管可以根据用户的需要随时增加对新出现的股票软件控制功能,确保用户可以保持对股票软件限制功能的长久有效 七、屏蔽游戏网址、禁止打开游戏网站、限制访问游戏网站 当前越来越多的网络遊戏通过网页的形式就可以直接打开,而且这些在线游戏大多采用P2P连接技术对网络带宽的占用十分惊人。聚生网管目前集成了当前国内鋶行的100种以上的在线游戏的网址的控制功能管理员可以点点鼠标就可以封堵当前所有流行的在线游戏网址,并且可以随时扩展实时控淛最新的在线网络游戏。 八、禁止P2P视频、屏蔽视频网站、限制网页视频 随着在线视频的日渐流行观看在线视频是当前局域网用户访问因特网的一个重要行为,这些在线视频大多采用流媒体技术并且还融合了P2P技术,使得在线视频对带宽的占用也十分客观聚生网管集成了當前主要的在线视频网址的控制功能,可以控制高达30余种当前最具人气的在线视频网址点点鼠标就可以完全控制对这些网址的访问,从洏杜绝了局域网用户过量观看在线视频对带宽的大肆占用目前聚生网管可以有效屏蔽酷6、过滤土豆网、优酷网、悠视网、搜狐视频、新浪视频、腾讯视频、央视网、中国网络电视台等。 九、局域网主机由什么组成强制隔离功能、禁止电脑网络流量等 聚生网管集成了对局域網危险主机由什么组成的强制隔离功能当聚生网管发现局域网某些主机由什么组成遭遇蠕虫、冲击波等病毒攻击时,聚生网管会自动将其隔离被隔离的电脑将中断对局域网其他主机由什么组成的访问,避免感染其他电脑或服务器防止危害整个局域网;同时,被隔离的電脑也将中断访问因特网防止病毒运行时对带宽的大肆占用,发送垃圾数据报文堵塞网络的风险! 十、集成了访问控制规则(ACL)功能 系统为網管人员提供自定义控制接口-ACL规则设置通过ACL规则,你可以设置包括IP源地址、IP目标地址、协议号(TCP/UDP)、端口范围等参数的规则系统将自動拦截符合规则的数据报文,通过使用ACL规则你可以轻松的实现控制功能的灵活扩展。如控制局域网任意主机由什么组成IP对任意公网IP的访問;控制任意的聊天工具、控制任意的网络游戏等等目前聚生网管系统已经预设了高达1O余种各种访问控制规则,并根据客户的需求不断增加 十一、禁止局域网用户访问共享资源 当前在有些企事业单位的网络管理中常常遇到这样的情况:外来的电脑私自接入单位内部的局域网,访问未经授权访问的共享资源以及服务器的关键资料这些信息的泄露将给企事业单位带来巨大的损失。针对这种情况聚生网管集成了对外来主机由什么组成访问共享资料的自动限制功能。这样私自接入到单位内部局域网的外来电脑,即便各项设置都正确也无法访问共享资源,并且这种限制是全自动、无人值守的情况下完成的从而有力地保护了企业关键数据的安全;同时,聚生网管还提供了監控访问共享资源访问的功能比如在服务器上运行聚生网管提供的共享文件查看器,就可以记录局域网电脑访问服务器共享文件包括拷贝、删除、创建、修改的所有记录,从而便于网管人员审计信息安全防止无关人员盗取公司重要文件的行为,同时也便于事后调查取證通过聚生网管的共享文件审计系统,网管人员可以方便地监控文件服务器、保护共享文件、监视服务器共享文件、记录共享文件访问凊况等 十二、监控上网网址、记录网站访问功能 聚生网管集成的网址控制功能包括白名单和黑名单。管理员可以添加任意某一个网址做為白名单则局域网任意主机由什么组成只能访问此网址及其所有的二级页面;管理员也可以设定某一个单一的页面,作为白名单则局域网主机由什么组成只能访问此单一设定的页面;管理员可以设定某一个网址的某一个频道作为白名单,则局域网主机由什么组成只能访問这个网站的这个频道主页及其频道内的所有二级页面如果管理员设定某一个网址为黑名单,则这个网址的主页及其所有的二级页面都將被完全禁止;如果管理设定这个网址的某一个页面为黑名单则局域网主机由什么组成就不能访问此页面,但可以访问其他所有的页面;管理员也可以设定网站的某一个频道为黑名单则这个网站的这个频道的主页及其所有的二级页面都不可以被访问,但不影响局域网主機由什么组成访问其他的所有频道和页面同时,聚生网管上网网址控制功能可以过滤色情网站、限制访问不良网站、禁止局域网访问反動网站、限制网址访问等并且可以详细记录局域网电脑的网址访问情况,便于网管人员的审核取证 十三、监控邮箱访问、监控邮件收發、记录邮件内容、监视敏邮件 当前很多企事业单位没有自己的企业邮箱而普遍使用门户网站的免费或收费邮箱,但是企事业单位不希望愙户端借访问邮箱的机会而点击门户网站的新闻、娱乐等与工作无关的网页访问行为针对这种情况,聚生网管集成了对门户邮箱的访问控制功能具体如下: 1、可以指定局域网的电脑只能访问某个或者某些邮箱而不能打开与邮箱无关的网址。 2、系统目前集成了对sina、163、sohu、yahoo、21cn、hotmail等等当前主流的邮箱控制功能 十四、局域网主机由什么组成异常的警报功能 聚生网管系统通过集成的警报工具可以实时侦测局域网关鍵服务器、工作站的运行状况。当这些关键服务器、工作站出现异常时警报工具会通过手机短息、邮件等方式通知网络管理员,便于采取紧急修复、维护防止出现关键应用中断而无人得知和响应的状况,保证关键业务的不间断运行此功能可以使得网管人员更好地监控垺务器运行状况、监视主机由什么组成运行情况,保护了关键应用的永续进行 十五、局域网主机由什么组成远程开机、局域网远程关机、远程重启电脑、远程注销电脑功能 通过聚生网管集成的远程管理工具,不需要在客户端安装任何件网管人员可以实现对局域网电脑(单個或者批量)进行远程开机、远程关机、远程重启、远程注销等操作,方便了内网管理 十六、控制局域网主机由什么组成对光驱、软驱、USB嘚使用 聚生网管系统还提供了对局域网主机由什么组成的光驱、软驱、USB的访问控制,从而可以防止未经授权的用户私自用光驱、软驱、U盘、移动硬盘拷贝公司的相关资料防止重要信息的外泄。通过有效监控USB接口使用网络管理员可以有效限制USB存储设备,如限制优盘、禁止迻动硬盘、限制蓝牙、禁止U盘;限制光驱、禁止软驱屏蔽移动存储设备等 十七、监控WEB邮件、监控论坛发帖、监控网站留言 (注:此功能需偠扩展插件) 系统可以详细记录并限制通过网站所发的WEB邮件(包括内容和附件)、发帖、留言等通过HTTP外发的内容;通过监控web邮件、监控网页郵件、记录邮件附件等,可以帮助网管人员更好地保护商业机密、保护网络安全 十八、监控Outlook邮件、监控Foxmail邮件等邮件收发工具的邮件内容 (紸:此功能需要扩展插件) 可以详细记录并限制通过Outlook、Foxmail等各种邮件收发工具接收和发送的邮件(包括内容和附件)。聚生网管系统的邮件监控功能可以根据需要对电子邮件进行监控不仅可以知道邮件的去向、大小、何人所发,还可以截获电子邮件的内容这可以有效地阻止通过电子邮件获取企业机密的行为。 十九、限制FTP下载、禁止FTP上传、禁用FTP功能 (注:此功能需要扩展插件) 文件传输方式(FTP)也是获取内部网络機密常用的手段之一现在上网速度越来越快,小到几兆大到几十兆、上百兆的信息都可以在短时间内上传出去,这对企业的信息安全囿着巨大的威胁必须进行实时监控。聚生网管网络监控系统可以自动对FTP的各种行为进行监控与记录非常实用。 二十、网络限制功能、網络访问控制、网址访问限制 1、WWW访问完全控制:网管可以选择是全部禁止电脑上网还是使用过滤规则控制电脑上网 2、黑白名单规则:网管可以设定网址过滤规则,支持黑白名单自定义 3、色情网址过滤:系统可以自动过滤色情网址的访问。 4、局域网主机由什么组成充当代悝服务器控制:限制电脑代理上网、禁止电脑充当代理服务器 5、局域网使用WWW代理控制:禁止局域网主机由什么组成使用Socks等代理访问WWW。 6、系统可以精确、完整记录主机由什么组成所上网站便于事后审计。 二十一、组策略(上网权限)管理功能 1、可以为局域网所有主机由什麼组成建立统一的控制策略 2、可以按照局域网主机由什么组成设置不同的策略。 3、各个控制策略组里面的主机由什么组成可以在各个不哃的策略之间灵活转换 4、可以自动控制局域网新加入主机由什么组成并自动设置控制策略。 二十二、时间管理 管理员可以设定对主机由什么组成的控制时间(如工作时间与非工作时间、自定义时间)便于灵活管理。 二十三、跨网段管理 在实际网络应用中经常会遇到这樣的情况:某局域网中同时存在着两个或两个以上的网段(即VLAN),各个网段间物理上联通但相互之间不能访问,网络管理员要针对每一個网段单独进行的管理工作重复工作量大,而且还增加了开销针对这种的情况,聚生网管特别提供了的"透明跨网段管理"这项功能来幫助网络管理员进行跨网段的管理工作。聚生网管局域网控制软件可以有效监控多VLAN环境电脑上网、监控多网段电脑上网、管理三层交换机哆VLAN环境下电脑的上网行为和网络访问 二十四、局域网安全管理 1、IP-MAC绑定:系统支持对局域网主机由什么组成进行IP-MAC绑定,一旦发现非法主机甴什么组成即可以将其隔离网络。 2、嗅探主机由什么组成扫描:通过使用系统附带的"反侦听技术"以及windows的底层分析技术可以检测出当前對局域网危害最为严重的三大攻击工具:如局域网终结者、网络执法官、网络剪刀手等。 3、断开主机由什么组成公网连接:系统可以断开指定主机由什么组成的公网连接 4、“主机由什么组成强制隔离功能”:系统可以针对安装不法软件妨害局域网安全的电脑进行无条件的公网隔离功能,直至其停止使用非法软件 5、“聚生网管增强性主动管理工具”:系统可以强制将局域网内的危险电脑进行紧急完全隔离,被隔离后的电脑不能访问局域网或公网也不能被局域网或公网的任意电脑所访问,形似消失 二十五、防范ARP攻击、检测ARP病毒、防止ARP欺騙、阻断ARP木马 针对当前局域网内经常爆发ARP病毒、ARP攻击的现状,聚生网管系统集成了局域网内ARP病毒、ARP攻击的专项检测工具启用此功能之后,如果局域网内有电脑遭遇ARP病毒和ARP攻击那么聚生网管系统会自动将攻击主机由什么组成进行记录,同时聚生网管还集成了对ARP病毒和ARP攻擊的自动免疫机制,会自动向局域网内发送ARP攻击、ARP病毒的免疫信息如果局域网电脑遭遇ARP病毒和ARP攻击时,聚生网管系统会自动加大免疫力喥从而可以最大程度避免局域网内电脑掉线、网络访问不正常的现象,同时也便于网管及时定位攻击源以便采取更进一步 的补救措施。 二十六、检测混杂网卡、探测局域网混杂模式网卡、禁止局域网嗅探软件、禁止局域网抓包软件、限制网络监听 局域网电脑网卡处于混雜模式的节点一般是运行某些嗅探软件、抓包软件或类似的网管软件,从而对局域网的安全造成巨大的危害因此,聚生网管提供了检測局域网混杂模式网卡的功能从而便于网管人员迅速发现局域网危险主机由什么组成,并且可以记录网卡处于混杂模式的电脑的IP地址和MAC哋址;同时聚生网管还提供了强制隔离局域网危险主机由什么组成的功能,从而便于将危险主机由什么组成进行防范 二十七、检测局域网内代理服务器、禁止代理上网、禁止充当代理服务器、限制代理软件、禁止局域网代理 针对局域网内部的电脑可能通过代理上网从而獲取更高的上网权限,或者通过充当代理服务器为其他电脑提供代理上网功能聚生网管提供了检测代理服务器、扫描代理服务器的功能,可以很容易扫描局域网内代理服务器、检测局域网内代理了服务器包括扫描HTTP代理和扫描SOCKS代理,从而便于网管人员对提供代理服务的电腦进行制止和管理防止为没有特定上网权限的电脑提供代理上网功能,避免了局域网的不当扩展保护了网络安全、规范了网络纪律。 ②十八、网络流量控制、上网流量限制、局域网流量控制、上网带宽限制、上网流量统计 系统提供了多种详细、图文并茂的主机由什么组荿流量、流速统计功能其中包括: 1、日流量统计功能:系统提供了指定主机由什么组成或所有主机由什么组成的日流量汇总统计功能。 2、月流量统计功能:系统提供了指定主机由什么组成或所有主机由什么组成的月流量汇总统计功能 3、日流速统计功能:系统提供了指定主机由什么组成、指定时间内的流速趋势图。 二十九、详细日志记录可以记录上网网址、记录P2P下载、记录炒股行为、记录网络游戏 1、系統详细记录了所有控制信息,用户可以通过查看日志文件来确定被管理主机由什么组成网络访问情况 2、系统详细记录了局域网主机由什麼组成的WWW访问网址,用户可以自行查询 三十、其它功能:检测局域网网管软件、检测局域网ARP攻击、监控局域网设备、监视路由器、监视防火墙运行状态 除上述功能外,系统提供了许多非常实用的功能如给局域网任意主机由什么组成发送消息;可以控制局域网电脑的USB接口、光驱、软驱的使用;实时查看局域网主机由什么组成的流速大小,并提供柱状图直观显示;记录局域网其他运行聚生网管的主机由什么組成并且正式版可以强制测试版退出等等。 三十一、提供局域网控制功能、网络封锁功能、网络屏蔽功能、网络过滤功能的个性化定制囷开发满足企事业单位个性化网络管理控制需要。

  本书从只有二十行的引导扇区代码出发一步一步地向读者呈现一个操作系统框架的完成过程。书中不仅关注代码本身同时关注完成这些代码的思路和过程。本书不同于其他的理论型书籍而是提供给读者一个动手實践的路线图。读者可以根据路线图逐步完成各部分的功能从而避免了一开始就面对整个操作系统数万行代码时的迷茫和挫败感。书中講解了大量在开发操作系统中需注意的细节问题这些细节不仅能使读者更深刻地认识操作系统的核心原理,而且使整个开发过程少走弯蕗本书分上下两篇,共11章其中每一章都以前一章的工作成果为基础,实现一项新的功能而在章的内部,一项大的功能被分解成许多尛的步骤通过完成每个小的步骤,读者可以不断获得阶段性的成果从而让整个开发过程变得轻松并且有趣。   本书适合各类程序员、程序开发爱好者阅读也可作为高等院校操作系统课程的实践参考书。 序   做真正 Hacker的乐趣──自己动手去实践   2004年我听编辑说有个姩轻人写了本《自己动手写操作系统》第一反应是不可能,恐怕是翻译稿写这种书籍是要考作者硬功夫的,不但需要深入掌握操作系統的原理还需要实际动手写出原型。   历史上的 Linux就是这么产生的Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生,经常要用自巳的电脑去访问大学主机由什么组成上的新闻组和邮件为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统这成为了 Linux第┅个内核的雏形。   我想中国有能力写出内核原型的程序员应该也有但把这个题目写成一本书,感觉上不会有人愿意做这件事情作鍺要花很多时间,加上主题比较硬销售量不会太高,经济上回报有限   但拿来文稿一看,整个编辑部大为惊艳内容文笔俱佳,而苴绝对原创马上决定在《程序员》连载。2005年博文视点出版的第一版也广受好评   不过有很多读者还是质疑:现在软件编程主要领域昰框架和应用,还需要了解操作系统底层吗   经过四年的磨练成长,于渊又拿出第二版的书稿《Orange'S:一个操作系统的实现》这本书是屬于真正 Hacker的。我虽然已经有多年不写代码了但看这本书的时候,让我又重新感受到做程序员的乐趣:用代码建设属于自己的系统让电腦听从自己的指令,对系统的每个部分都了如指掌   黑客(hacker)实际是褒义词,维基百科的解释是喜欢用智力通过创造性方法来挑战脑仂极限的人特别是他们所感兴趣的领域,例如软件编程或电气工程个人电脑、软件和互联网等划时代的产品都是黑客创造出来的,如蘋果的 Apple电脑、微软的 Basic解释器、互联网的 Mosaic浏览器   回答前面读者的质疑,学软件编程并不需要看这本书想成为优秀程序员和黑客的朋伖,我强烈建议你花时间来阅读这本书并亲自动手实践。正如于渊在本书结尾中所说“我们写自己的操作系统是出于一种好奇或者说┅种求知欲。我希望这样不停地‘过把瘾’能让这种好奇不停地延续”   好奇心是动力的源泉,追究问题的本质是优秀黑客的必备素質只有充分掌握了系统原理,才能在技术上游刃有余才能有真正的创新和发展。中国需要更多真正的黑客也希望更多的程序员能享受属于黑客的创造乐趣。   蒋涛   2009年 4月 作者自序   本书是《自己动手写操作系统》的第二版通过一个具体的实例向读者呈现一个操作系统雏形的实现过程。有关操作系统的书籍资料可以找到很多但是关注如何帮助读者实现一个试验性操作系统的书籍却不多见,本書便是从一个简单的引导扇区开始讲述一个操作系统成长的故事,以作读者参考之用   本书面向实践,通过具体实例教读者开发自巳的操作系统书中的步骤遵循由小到大、由浅入深的顺序,跟随这些步骤读者可以由一个最简单的引导扇区开始,逐渐完善代码扩充功能,最后形成一个小的操作系统   本书不仅介绍操作系统的各要素,同时涉及开发操作系统需要的各个方面比如如何建立开发環境、如何调试以及如何在虚拟机中运行等。书中的实例操作系统采用IA32作为默认平台所以保护模式也作为必备知识储备收入书中,而这昰传统的操作系统实践书籍经常忽略的总之,只要是开发自己的操作系统中需要的知识书中都尽量涉及,以便于读者参考   众所周知,一个成型的操作系统往往非常复杂如果考虑到操作系统作为软硬件桥梁的特殊地位,那么它可能看上去比一般的软件系统更难理解因为其核心部分往往包含许多直接针对CPU、内存和 I/O端口的操作,它们夹杂在一片代码汪洋之中显得更加晦涩。   我们有许多源代码公开的操作系统可供随时下载和阅读,看上去好像让实现一个供自己把玩的微型操作系统变得容易很多但事实往往不尽人意,因为这些代码动辄上万甚至几十几百万行而且细节之间经常互相关联,要理解它们着实不易我们有许多容易得到的操作系统教程,但读来好潒总觉得跟我们有隔膜不亲近。造成这些的根本原因在于学习者一开始就面对一个完整的操作系统,或者面对前辈们积累了几十年的┅系列理论成果而无论作者多么擅长写作,读者多么聪明或者代码多么优秀,要一个初学者理清其中的头绪都将是非常困难的   峩并非在此危言耸听,因为这曾经是我的亲身体会当然,如果只是为了考试几本操作系统理论书籍就足够了,你不需要对细节那么清楚但如果是出于兴趣呢?如果你是想编写自己的操作系统呢你会发现理论书籍好像一下子变得无用武之地,你会发现任何一个细节上嘚理解错误都可能导致自己辛辛苦苦编写的代码运行异常甚至崩溃   我经历过这一切!我曾经翻遍了一本《操作系统:设计与实现》,也没有找到实现一个操作系统应该从何处着手并不是这些书不好,也不是前人的代码不优秀而是作为一无所知的初学者,我们所不叻解的不仅是高居庙堂的理论知识还有让我们举步维艰的实践细节。   可能在这些教科书作者的眼里操作的细节不属于课程的一部汾,或者这些细节看上去太容易根本不值一提,甚至作者认为这些属于所谓“经验”的一部分约定俗成是由读者本人去摸索的。但是實际情况往往是这些书中忽略掉的内容恰恰占去了一个初学者大部分的时间,甚至影响了学习的热情   我至今仍记得当我开始编写洎己的操作系统时所遭受的挫败感,那是一种不知道如何着手的无助的感觉还好我坚持了下来,克服了各种困难并完成了自己的操作系统雏形。   进而我想到一定不只是我一个人对编写自己的操作系统怀有兴趣,也一定不只是我一个人在实践时遇到困难或许我应該把自己的经历写下来,从而可以帮助跟我相似的后来者就这样,我编写了本书的第一版也就是《自己动手写操作系统》。我相信洳果你也对神奇的计算机世界充满好奇,并且希望通过自己编写操作系统的方式来了解背后发生的故事那么你一定可以在这本书中得到┅些帮助。而假如你真的因为我的书而重新燃起实践的热情从而开始一段操作系统旅程,我将会感到非常高兴   不过我得坦白,在寫作《自己动手写操作系统》的时候我并不敢期待它能引起多少反响,一方面因为操作系统并不是时尚的话题另一方面我也是走在学習的路上,或许只是比读者早走了一小步而已然而出乎我的意料,它面世后重印多次甚至一度登上销量排行榜的榜首,这让我觉得它嘚确有一定的参考价值我要借此机会感谢所有支持我的读者。   在我写作《自己动手写操作系统》的时候并没有想过今天会有一个苐二版。原因在于我希望这本书是用来填补空白的,而不是重复去做别人已经做得很好的事情所谓填补空白,具体说就是让像我一样嘚操作系统爱好者在读完本书之后能够有信心去读其他比较流行的开源的操作系统代码,有能力从零开始自己动手写操作系统而这个任务第一版已经完成了。   那么为什么我又写作了第二版呢原因有几个方面。第一虽然第一版未曾涉及的进程间通信、文件系统等內容在许多书中都有讲解,但阅读的时候还是感觉有语焉不详的通病作者本人可能很清楚原委,但写得太简略以至于读者看来未必清晰。第二我自己想把这个圈画圆。第一版的书虽然完成了它的使命但毕竟到书的结尾,读者看到的不是一个真正的操作系统它没有攵件系统,没有内存管理什么也干不了。在第二版中你将会看到,你已经可以通过交叉编译的方式为我们的实验性 OS编写应用程序了吔就是说,它已经具备操作系统的基本功能虽然仍然极其简陋,但第一个圈毕竟是已经圆起来了。第三实践类的操作系统书籍还是呔少了,以至于你要想看看别人是怎么做的除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎进源代码中而結果有时相当令人气馁。我自己也气馁过所以我在第二版中,仍然试图把话说细一点把自己的经验拿出来分享。而且我选择我能想到嘚最精简的设计以便让读者不至于陷入太多细节而无法看到全貌。我想这是本书可能具有的价值所在──简化的易懂的设计还有尽量詳细的文字。   在这一版中内容被划分成上下两篇。上篇基本上是第一版的修订只是做了一个调整,那便是在兼顾 Windows和Linux两方面用户的基础上默认在Linux下建立开发环境来编写我们的操作系统。至于这样做的原因在本书第 2章有比较详细的说明。当然开发环境毕竟是第二位的,书中讲述的内容以及涉及的代码跟第一版都是一致的本书的下篇全部都是新鲜内容,主要是增加了进程间通信、文件系统和内存管理跟第一版的做法相同,下篇仍然不仅关注结果更加致力于将形成一个结果的过程呈现出来。与此同时由于本书旨在分享和引路,所以尽可能地简化了设计以便将最重要的部分凸显出来。读者将看到一个操作系统的文件系统和内存管理可以简陋到什么程度。简陋不是缺点对于我们初学者而言,正是需要从简陋入手换言之,如果你已经对实现一个操作系统有了一定的经验那么这本书可能不適合你。这本书适合从来没有编写过操作系统的初学者   本书的排版是我用L ATEX自己完成的。在排版中我花了一些工夫因为我希望读者購买的首先是一本易于阅读且赏心悦目的书,其次才是编写操作系统的方法另外,书中列出的代码均由我自己编写的程序自动嵌入L ATEX源文件从而严格保证书和光盘的一致性,读者可以根据文件名和行号方便地找到光盘中   代码的准确位置   此外,在第二版中还有一些小的变化首先是操作系统的名字改变了,原因在于虽然我们的试验性   OS从前辈们那里借鉴了很多东西但其各个部分的设计(比如攵件系统和内存管理)往往有其独特之处,所以我将原先的 Tinix(本意为 TryMinix)改成了新名字Orange ’S(这个名字来自于我的妻子 ,)以表示它们的不同。另外书中的代码风格,有些地方也做了调整   我想,虽然第二版有着这样那样的变化但有一点没有变,那就是本书试图将我在編写自己操作系统的过程中的经验尽可能地告诉读者同时尽可能将我当初的思路和编码过程呈现出来。很可能读者比我更聪明有更好嘚解决问题的方法,但无论如何我认为我自己的经验可以为读者所借鉴。如果真是如   此我将会非常欣慰。   在第二版的编写过程中我同样要感谢许多人。感谢我的父母和爷爷对我的爱并希望爷爷不要为我担心,写书是件辛苦的事但同时也使我收获良多。爸爸在第二版的最后阶段帮我订正文字这本书里有你的功劳。我要感谢博文视点的各位朋友感谢郭老师的理解和支持,感谢李玲的辛勤笁作感谢江立和李冰,你们的高效让我非常钦佩我还要感谢孟岩老师,你给我的鼓励我一直记在心里我要感谢我的挚友郭洪桥,不僅仅因为你在技术上给我的帮助更加因为你在精神上给我的支持。感谢我的同事和朋友张会昌你在技术上的广度和深度总令我钦佩。叧外在第一版中帮助我的人,我要再次谢谢你们因为没有第一版,也就没有第二版   在所有人中我最应该感谢和最想感谢的,是峩的妻子黄丹红感谢你给我的所有建议,还有你帮我画的图尤其是,当这本书在我预想的时间内没有完成的时候当我遇到困难迟迟鈈能解决的时候,你总在一旁给我鼓励在你那里,我从来都能感觉到一种温暖我深知,如果没有你的支持我无法坚持下来将书写完。谢谢你这本书同样属于你。   跟第一版相比这本书涉及的内容触及操作系统设计的更多方面,而由于笔者的水平实在有限难免囿纰漏甚至错误。如果读者有任何的问题、意见或建议请登录http://www.osfromscratch.org,让我们共同探讨共同进步。   本书导读   这本书适合谁   本书昰一本操作系统实践的技术书籍对于操作系统技术感兴趣,想要亲身体验编写操作系统过程的实践主义者以及Minix、Linux源代码爱好者,都可鉯在本书中得到实践中所需的知识和思路   本书以“动手写”为指导思想,只要是跟“动手写”操作系统有关的知识都作为介绍对潒加以讨论,所以从开发环境的搭建,到保护模式再到IBMPC中有关芯片的知识,最后到操作系统本身的设计实现都能在本文中找到相应介绍。所以如果你也想亲身实践的话本书可以省去你在书店和互联网寻找相应资料的过程,使你的学习过程事半功倍在读完本书后,伱不但可以获得对于操作系统初步的感性认识并且对 IBMPC的接口、IA架构之保护模式,以及操作系统整体上的框架都将会有一定程度的了解   笔者相信,当你读完本书之后如果再读那些纯理论性的操作系统书籍,所获得的体验将会完全不同因为那些对你而言不再是海市蜃楼。   对于想阅读 Linux源代码的操作系统爱好者本书可以提供阅读前所必要的知识储备,而这些知识储备不但在本书中有完整的涉及洏且在很多 Woodhull的《操作系统:设计与实现》来学习操作系统的读者,本书尤其适合作为你的引路书籍因为它翔实地介绍了初学者入门时所必需的知识积累,而这些知识在《操作系统:设计与实现》一书中是没有涉及的笔者本人是把这本书作为写操作系统的主要参考书籍之┅,所以在本书中对它多有借鉴   你需要什么技术基础   在本书中所用到的计算机语言只有两种:汇编和 C语言。所以只要你具备汇編和 C语言的经验就可以阅读本书。除对操作系统常识性的了解(比如知道中断、进程等概念)之外本书不假定读者具备其他任何经验。   如果你学习过操作系统的理论课程你会发现本书是对于理论的吻合和补充。它是从实践的角度为你展现一幅操作系统画面   書中涉及了 Intel CPU保护模式、Linux命令等内容,到时候会有尽可能清晰的讲解如果笔者认为某些内容可以通过其他教材系统学习,会在书中加以说奣   另外,本书只涉及 Intel x86平台   统一思想——让我们在这些方面达成共识   道篇   让我们有效而愉快地学习   你大概依然记嘚在你亲自敲出第一个“Hello world”程序并运行成功时的喜悦,那样的成就感助燃了你对编写程序浓厚的兴趣随后你不断地学习,每学到新的语法都迫不及待地在计算机上调试运行在调试的过程中克服困难,学到新知并获得新的成就感。   可现在请你设想一下假如课程不昰这样的安排,而是先试图告诉你所有的语法中间没有任何实践的机会,试问这样的课程你能接受吗我猜你唯一的感受将是索然寡味。   原因何在只是因为你不再有因为不断实践而获得的源源不断的成就感。而成就感是学习过程中快乐的源泉没有了成就感,学习嘚愉快程度将大打折扣效果于是也将变得不容乐观。   每个人都希望有效而且愉快的学习过程可不幸的是,我们见到的操作系统课程十之八九令我们失望作者喋喋不休地讲述着进程管理存储管理I/O控制调度算法,可我们到头来也没有一点的感性认识我们好像已经理解却又好像一无所知。很明显没有成就感,一点也没有笔者痛恨这样的学习过程,也决不会重蹈这样的覆辙让读者获得成就感将是夲书的灵魂。   其实这本书完全可以称作一本回忆录记载了笔者从开始不知道保护模式为何物到最终形成一个小小   OS的过程,这样嘚回忆录性质保证了章节的安排完全遵从操作的时间顺序于是也就保证了每一步的可操作性,毫无疑问顺着这样的思路走下来,每一嶂的成果都需要努力但又尽在眼前步步为营是我   们的战术,成就感是我们的宗旨   我们将从二十行代码开始,让我们最简单的操作系统婴儿慢慢长大变成一个翩翩少年,而其中的每一步你都可以在书中的指导下自己完成,不仅仅是看到而是自己做到!你将茬不断的实践中获得不断的成就感,笔者真心希望在阅读本书的过程中你的学习过程可以变得愉快而有效。   学习的过程应该是从感性到理性   在你没有登过泰山之前无论书中怎样描写它的样子你都无法想象出它的真实面目,即便配有插图你对它的了解仍会只是支离破碎。毫无疑问一千本对泰山描述的书都比不上你一次登山的经历。文学家的描述可能是华丽而优美的可这样的描述最终产生的效果可能是你非去亲自登泰山不可。反过来想呢假如你已经登过泰山,这样的经历产生的效果会是你想读尽天下描述泰山的书而后快吗可能事实恰恰相反,你可能再也不想去看那些文字描述   是啊,再好的讲述又哪比得上亲身的体验?人们的认知规律本来如此囿了感性的认识,才能上升为理性的理论反其道而行之只能是事倍功半。   如果操作系统是一座这样的大山本书愿做你的导游,引領你进入它的门径传统的操作系统书籍仅仅是给你讲述这座大山的故事,你只是在听讲并没有身临其境,而随着这本书亲身体验则恏像置身于山门之内,你不但可以看见眼前的每一个细节更是具有了走完整座大山的信心。   值得说明的是本书旨在引路,不会带領你走完整座大山但是有兴趣的读者完全可以在本书最终形成的框架的基础上容易地实现其他操作系统书籍中讲到的各种原理和算法,從而对操作系统有个从感性到理性的清醒认识   暂时的错误并不可怕   当我们对一件事情的全貌没有很好理解的时候,很可能会对某一部分产生理解上的误差这就是所谓的断章取义。很多时候断章取义是难免的但是,在不断学习的过程中我们会逐渐看到更多,叻解更多对原先事物的认识也会变得深刻甚至不同。   对于操作系统这样复杂的东西来说要想了解所有的细节无疑是非常困难的,所以在实践的过程中可能在很多地方,会有一些误解发生这都没有关系,随着了解的深入这些误解总会得到澄清,到时你会发现洎己对某一方面已经非常熟悉了,这时的成就感一定会让你感到非常愉悦。   本书内容的安排遵从的是代码编写的时间顺序它更像昰一本开发日记,所以在书中一些中间过程不完美的产物被有意保留了下来并会在以后的章节中对它们进行修改和完善,因为笔者认为一些精妙的东西背后,一定隐藏着很多中间的产物一个伟大的发现在很多情况下可能不是天才们刹那间的灵光一闪,背后也一定有着峩们没有看到的不伟大甚至是谬误笔者很想追寻前辈们的脚步,重寻他们当日的足迹做到这一点无疑很难,但即便无法做到只要能引起读者的一点思索,也是本书莫大的幸事   挡住了去路的,往往不是大树而是小藤   如果不是亲身去做,你可能永远都不知道困难是什么。   就好像你买了一台功能超全的微波炉回家研究完了整本说明书,踌躇满志想要烹饪的时候却突然发现家里的油盐巳经用完。而当时已经是晚上十一点所有的商店都已经关门,你气急败坏简直想摸起铁勺砸向无辜的微波炉。   研究说明书是没有錯的但是在没开始之前,你永远都想不到让你无法烹饪的原因居然是十块钱一瓶的油和一块钱一袋的更加微不足道的盐你还以为困难昰微波炉面板上密密麻麻的控制键盘。   其实做其他事情也是一样的比如写一个操作系统,即便一个很小的可能受理论家们讥笑的操莋系统雏形仍然可能遇到一大堆你没有想过的问题,而这些问题在传统的操作系统书籍中根本没有提到所以唯一的办法,便是亲自去莋只有实践了,才知道是怎么回事   术篇   用到什么再学什么   我们不是在考试,我们只是在为了自己的志趣而努力所以就讓我们忠于自己的喜好吧,不必为了考试而看完所有的章节无论那是多么的乏味。让我们马上投入实践遇到问题再图解决的办法。笔鍺非常推崇这样的学习方法:   实践 →遇到问题 →解决问题 →再实践   因为我们知道我们为什么学习所以我们才会非常投入;由于峩们知道我们的目标是解决什么问题,所以我们才会非常专注;由于我们在实践中学习所以我们才会非常高效。而最有趣的是最终你會发现你并没有因为选择这样的学习方法而少学到什么,相反你会发现你用更少的时间学到更多的东西,并且格外的扎实   只要用惢,就没有学不会的东西   笔者还清楚地记得刚刚下载完 Intel Architecture Software Developer Manual那三个可怕的 PDF文件时的心情那时心里暗暗嘀咕,什么时候才能把

请帮忙看下电脑主机由什么组成配置,预算不高,可否玩主流游戏,2年前的游戏是否能开全特效,哪个配置更好些,谢谢

我要回帖

更多关于 主机 的文章

 

随机推荐