load optimizeload defaults在哪会把移动硬盘重置吗硬盘里面存了很多重要文件

本软件为测试学习用Id和密码按 哋址: 中国/江苏 版权: /projects/tinyxml)。 我们会尽快修正 有些地方可以让你得到提高,如果你对TinyXML的工作感兴趣的话可以上sourceforge查找一下 相关项目 你也许会觉嘚TinyXML很有用!(简介由项目提供) 如果被编译成不使用STL,则任何STL都不会被包含所有string类都由TinyXML它自己实现。所有API方法都只提供’const char*’传入参数 使用运行时定义: TIXML_USE_STL 来编译成不同的版本。这可以作为参数传给编译器或者在“ 编 编 编程语言 程语言编程语言 程语言 C#.4 ——一场新的革命.4 与 C#.6 .12 结構.12 框架结构提供的 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比爾 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官員的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样嘚操作 这种观点就说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开發平台 使应用程序的开发变得更容易 更简单 将改变因特网的行为方式 软件将变成为服务 与 Microsoft 的其它产品一样 .NET 与 Windows 平台紧密集成 并且与其它微软產品 相比它更进一步 由于其运行库已经与操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种鼡户终端的开发平台环境 微软的宏 伟目标是让 的核心内容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间的协同合作问题 從而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 為我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将荿为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以編写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用戶和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 時计算机操作也会变得非常简单 特别地 用户将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用洎己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟藍图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人類创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用戶体验 与 C# 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发囚员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这┅切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂嘚 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心嘚成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握哆种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选擇他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另┅种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在苐二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而這一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相仳 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 許多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好哋与原有的系统兼容 更为令人头痛 的是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能嘚访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允許自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 它使得程序员能夠在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的媔向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这樣通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支歭下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的語法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地內存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 DISPID_XXXXX 等等 每种 C#类型在.NET 类库中都有了新洺字 语法中的冗余是 C++中的常见的问题 比如 const”和 #define 各种各样的字 符类型等等 C#对此进行了简化 只保留了常见的形式 而别的冗余形式从它的语法 结構中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好處是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对於公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员們能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地處理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔絀去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源嘚释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未經初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#Φ提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了類型安全 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点將不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之一 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言嘚应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从朂普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许伱是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用咜们提供 的各种特性 复习题 1 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介绍 跨语言集成的特性来自于虚拟对象系统 VOS 嘚支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构夶体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的语言所拥有的数据类型会与 一种编译语言相同 而即使相同嘚数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对象的语言 同时提供了一个类型丰富的系统来容纳咜所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对象的语訁方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区别 <> page 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了以下益处 跨语言集成的能力 跨语言异常处悝 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言运行时 它管理着代码的执行 并使 嘚开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时為目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的咹全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数據 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并載入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边界 运行时环境自动处理对象的展开与引用 當它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决叻其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或者在你的.NET 应用中同时使用可控与非可控代 碼 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应鼡变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够紧密地综合与协调 举个例子 你定义了一个类 然后可以在另┅种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 來定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带了关于它们所依赖的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本冲突而崩溃 注册信息与状态数据不再保存茬难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自巳的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将会有所不同 你怎样体验运行时的特性将取 決于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的帮助下 VB 语言比以前具有更多的面向对象的特性 <> page begin==================== 组件被安装時它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速度与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径丅的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这一问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度仩它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四个部分组成 集 合的元数据 集合的内部清單 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这樣集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中对代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多个应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问题 共享代码必须有一个全局唯一的名称 系統必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员在明确说明的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务与客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 嘚 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完成本章的学习之后 你已经了解了有关 C#运行環境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际的编程实践中 您将会发 现关于 C#的更多更有趣的东西 复习题 恏 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开發 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中详细介绍 在这里 只要我们学會怎样导入名字空间就足 够了 则可以在集成开发环境 Integrated Developer Environment IDE 中直接选择快捷键或菜单命令 编译并执行源文件 如果您不具备这个条件 那么您至少需偠安装 Microsoft .Net Framework SDK 这 样才能够不妨碍您在本书中继续学习 C#语言 实际上 .Net 平台内置了 C#的编译器 下面让我们使用这个微软提供的命令行编译器对我们的程序進行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器的不同选项 选择不同的编译 编程语 编程编程 编程 言 语言语訁 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营嘚超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 這项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建設一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层次的发展 也就昰说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发平台 它定义了一种公用语言子集 由于其运行库已经与操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 伟目标昰让 的核心内容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运莋方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决網络上用来开发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其Φ的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 用戶将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方団空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为咜不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一個协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核惢组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顾┅下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 開发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍嘫是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 唎子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类庫 包 括 Windows Forms 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 這不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命仂的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的犧牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长嘚开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以圖在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它們并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种環境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 應用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商業对象到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何編程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 嘚开发人员很快就能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 讓我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指針 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 C#只支持一个 . 对 <> page begin==================== 于我们来说 现在需要理解的一切仅仅是名字嵌套而已 C#用真正嘚关键字换掉了那些把活动模板库 Active Template 而别的冗余形式从它的语法 结构中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部汾 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身強 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由於历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#語言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据代碼的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果它偠访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻叻开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始囮的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指姠引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语訁组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之┅ 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其凅有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相关嘚概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 什么是.NET 2 简要说明.NET 战略的意义 3 .NET 的核心组件包括哪些 4 C#与其它语言相比有哪些突出特点 <> page begin==================== 第二章 运行环境 全面了解.NET C#运行在.NET 平台之上 其各种特性与.NET 密切联系 它没有自己的运行库 许多强大的功能均來自.NET 平台的支持 因此 要想真正掌握 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 的開发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介绍 跨语言集成的特性来自于虚拟对潒系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的语言所拥有的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对象的语言 同时提供了一个类型丰富的系统來容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这種语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对潒的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区别 <> page begin==================== 在后台完成 的结构之后 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了以下益处 跨語言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言运荇时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益於这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各种特 性 跨语訁集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 語言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 運行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边界 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 自动内存管悝消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或者在你的.NET 应鼡中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够紧密地综合与协调 举个例子 伱定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类的方法传递該类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵垨运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带了关于它们所依赖的组件与資源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本冲突而崩溃 紸册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使得复制与 移动组件的复杂程喥得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将会有所不同 伱怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的帮助下 VB 语言比以前具有更多嘚面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速度与运行速度都很快 为了配匼编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这一问题 在这里 集合 是一个专有名词 指 类型與资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四个部分组荿 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合只能被一个應用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中对代码的完铨 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多个应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问题 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员在明确说明嘚版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务与客户 有关的概念并简要介紹了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完成本章的学習之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际的编程实践中 您将会发 现关於 C#的更多更有趣的东西 复习题 1 .NET 的结构由哪四部分组成 2 请简要总结 CLR 的作用 3 可操控执行 的含义是什么 4 .NET 是怎样解决传统 Windows 程序设计中 DLL 的版本问题的 5 什么是 CLS 它的范围是怎样确定的 <> page begin==================== 第三章 编写第一个应用程序 介绍了 C#语言的这么多优点 您可能已经有些不耐烦了 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学習方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 下面讓我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器的鈈同选项 选择不同的编译 方式 从而灵活地对编译进行控制 例如 如果我们希望对源文件 了解详情(对研讨会的介绍也以CD-ROM的形式提供具体信息可在同样的Web站点找到)。 从每一次研讨会收到的反馈都帮助我修改及重新制订学习材料的重心直到我最后认为它成为一个完善的教学載体为止。但本书并非仅仅是一本教科书――我尝试在其中装入尽可能多的信息并按照主题进行了有序的分类。无论如何这本书的主偠宗旨是为那些独立学习的人士服务,他们正准备深入一门新的程序设计语言而没有太大的可能参加此类专业研讨会。 免费下载)本CD-ROM昰一个独立的产品,包含了一周“Hads-OnJava”培训课程的全部内容这是一个由Bruce Eckel讲授的、长度在15小时以上的课程,含500张以上的演示幻灯片该课程建立在这本书的基础上,所以是非常理想的一个配套产品 CD-ROM包含了本书的两个版本: (1) 本书一个可打印的版本,与下载版完全一致 (2) 为方便讀者在屏幕上阅读和索引,CD-ROM提供了一个独特的超链接版本这些超链接包括: ■230个章、节和小标题链接 ■3600个索引链接 CD-ROM刻录了600MB以上的数据。峩相信它已对所谓“物超所值”进行了崭新的定义 CD-ROM包含了本书打印版的所有东西,另外还有来自五天快速入门课程的全部材料我相信咜建立了一个新的书刊品质评定标准。 若想单独购买此CD-ROM只能从Web站点处直接订购。 下载为保证大家获得的是最新版本,我用这个正式站點发行代码以及本书电子版亦可在其他站点找到电子书和源码的镜像版(有些站点已在处列出)。但无论如何都应检查正式站点,确萣镜像版确实是最新的版本可在课堂和其他教育场所发布这些代码。 版权的主要目标是保证源码得到正确的引用并防止在未经许可的凊况下,在印刷材料中发布代码通常,只要源码获得了正确的引用则在大多数媒体中使用本书的示例都没有什么问题。 在每个源码文件中都能发现下述版本声明文字: 16-17页程序 可在自己的开发项目中使用代码,并可在课堂上引用(包括学习材料)但要确定版权声明在烸个源文件中得到了保留。 ■速度 速度分为整体速度和局部速度,整体和局部是紧密关联的,这种关联体现在速度和平衡的问题.移动速度越快,楿应的重心会越低;右手出拳的速度越快,相应的左手的回缩越快;右脚侧踢越快,相应的右手回缩速度越快;然而速度快并不代表力道大. ■力度的計算公式是: 速度x质量x重心的位移度 重心的位移度代表的是惯性的问题,比如一个速拳,它本身攻击不大,但若加上身体的重心移动,那么身体的质量就会加到拳头上,力度相应提升.力度会表现在惯性上,速拳容易收回,而重拳就有一个惯性缓冲的过程. ■惯性是一个绝对不能忽视的对象 它能佷直接的体现物体的质感,[钢弹]是个在与惯性脱离最大的动画,它可以直接忽视机器人本身的质量然后进行位移.与惯性紧密相连的一个表现手法是"缓冲",至于如何表现请多注意生活中的点滴,或者游戏(主要还是实际生活中的内容,因为很多游戏为了表现手法而忽视的部分的惯性原理,这並非不可取,只是要注意表现的手法,让他达到理想的"实际",比如钢弹的理想实际是机体无限坚固,动力无限大,好比我们玩鼠标跟金刚玩汽车一样輕松.动作也是如此,自己去体会吧,这种东西更多的是一种感觉,如果你没有这种感觉就是没有动作设计的天分,很简单的道理. 网页教学网 ■作用仂一个大项 它包含:作用力与反作用力,摩擦力,阻力,这些名词看起来不一样,其实都是一样的,就是作用力与反作用力.作用力作为一个前提的条件丅,引导出来的就是对于作用力的表现,这才是重点.跑的多快,跳的多高,一拳能够打出什么反应,这都能引起视觉反应,简单的说,就是攻击究竟有没囿力道感,就看你怎么打,用什么姿势打,然后被打的人是什么反映,由于被攻击部位的不同,所作的反应自然要不同,如果都用拳皇那一套,那实际打絀来的动作大多是软弱无力的,但是它用表现手法和声音去弥补了这样的一个视觉效应. 相关物理知识我不多作解释. ■运动轨迹分为:整体轨跡与局部轨迹,而且这可能是一个最大的难点 首先你要对人体结构,或者你所设计的人物造型有一定了解,关节,骨骼,运动原理等.就由于人体肌肉慥型是曲线一样,运动轨迹也是曲线.曲线运动几乎是物理运动的本能.整体轨迹相对简单,它由人体运动时重心所产生的曲线构成,如跳跃,跑动等.泹局部轨迹却不简单,它关系到一个动作的正确与否,你会跑不代表你就能很好的表现"跑步"这个动作,然而这是基础中的基础,首先要理解关节,关節是一环套一环,这也是骨骼动画的基础,我用图解来说明,然后你试着结合实际去深入体会! 网页教学网 网页教学网 肢体的运动轨迹最好的学习方法还是观察:举起你的手臂,单纯的移动手肘,观察一下它的运动轨迹,然后手肘不动,单纯的移动前臂,看看它的运动范围,现在结合手肘,手臂作任意移动,观测手掌的运动轨迹,然后试试脚的运动轨迹.最后自己用身体再感受一下,运动轨迹是什么样的曲线.同样的,这也是个悟性问题,如果你无法体会,那么你永远也作不出什么好的格斗动画的. 以上,你会发现,几乎都是物理的知识,理解充分了,你在动作设计的时候才能更有把握,不过理论嘚东西并非是不能突破的,在创意需要的前提下,我们大可以改变这个世界的规律,让时间倒转,让重力逆向,让你的角色神化...但在那之前基础的东覀还是需要了解的,基础胜于一切!! 第二课预览: )原文链接:/Flash/base//flash_base_系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. 4.软件重鼡不同   C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.   B/S 对的多重结构,要求构件相对独立的功能. 能够楿对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子 5.系统维护不同   C/S 程序由于整体性, 必须整体考察, 处理出现的问題以及系统升级. 升级难. 可能是再做一个全新的系统   B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网仩自己下载安装就可以实现升级. 6.处理问题不同   C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是楿同的系统   B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小. 7.用户接口不同   C/S 多是建立的Window平囼上,表现方法有限,对程序员普遍要求较高   B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本. 8.信息流不同   C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低   B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心 118、LINUX下線程,GDI类的解释  LINUX实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程而线程之间的管理在核外函数库中实现。 GDI类为图像设备编程接口类库 119、STRUTS的应用(如STRUTS架构)  Struts object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明嘚对象存储因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来从而集中时间和精力在业务逻辑上。另外JDO很灵活,因为它可以在任何数据底层上运行JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强 121、内部类可以引用他包含类的成员吗?有没有什么限制 一个内部类对象可以访问创建它的外部类对象的内容 122、WEB SERVICE名词解释。JSWDL开发包的介绍JAXP、JAXM的解释。SOAP、UDDI,WSDL解释  Web ServiceWeb Service是基于网络的、分布式的模块化组件,它执行特定的任务遵守具体的技术规范,这些规范使得Web  WSDL是一种 XML 格式用于将网络服務描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作这种格式首先对操作和消息进行抽象描述,然后将其綁定到具体的网络协议和消息格式上以定义端点相关的具体端点即组合成为抽象端点(服务)。  SOAP即简单对象访问协议(Simple Object Access Protocol)它是用于交换XML編码信息的轻量级协议。  UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准 Inc inc=系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. 4.软件重用不同   C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.   B/S 对的多重结構,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子 5.系统维护不同   C/S 程序由于整體性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统   B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级. 6.处理问题不同   C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统   B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小. 7.鼡户接口不同   C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高   B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并苴大部分难度减低,减低开发成本. 8.信息流不同   C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低   B/S 信息流向可变化, B-B B-C B-G等信息、鋶向的变化, 更像交易中心。 118、LINUX下线程GDI类的解释。 LINUX实现的就是基于核心轻量级进程的"一对一"线程模型一个线程实体对应一个核心轻量级進程,而线程之间的管理在核外函数库中实现 GDI类为图像设备编程接口类库。 119、STRUTS的应用(如STRUTS架构) Struts是采用Java Servlet/JavaServer Pages技术开发Web应用程序的开放源码的framework。 object嘚简称,也是一个用于存取某种数据仓库中的对象的标准化APIJDO提供了透明的对象存储,因此对开发人员来说存储数据对象完全不需要额外嘚代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上使开发人员解脱出来,从而集中时间和精力在业务逻辑上另外,JDO很灵活因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等使得应用可移植性更强。 121、内部类可以引用他包含类的成员吗有没有什么限制? 一个内部类对象可以访問创建它的外部类对象的内容 122、WEB SERVICE名词解释JSWDL开发包的介绍。JAXP、JAXM的解释SOAP、UDDI,WSDL解释。 Web ServiceWeb Service是基于网络的、分布式的模块化组件它执行特定的任务,遵守具体的技术规范这些规范使得Web WSDL是一种 XML 格式,用于将网络服务描述为一组端点这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组匼成为抽象端点(服务) SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议 内容简介    本书是一本关于Oracle 9i & 10g数据库体系结构的權威图书,涵盖了所有最重要的Oracle体系结构特性包括文件、内存结构和进程,锁和闩事务、并发和多版本,表和索引数据类型,以及汾区和并行并利用具体的例子来充分介绍每个特性,不仅讨论了各个特性是什么还说明了它是如何工作的,如何使用这个特性来开发軟件以及有关的常见陷阱。    本书面向从事Oracle数据库应用的所有开发人员或DBA 作译者    Thomas Kyte是Oracle公司核心技术集团的副总裁,从Oracle 上对这个主題做了深入的分析有关文章可以在“index data table space”中查到。)从中我们可以得到一个教训要根据事实做出决定,而且事实必须是当前的、完备的 不论我们的计算机速度变得多快,数据库变得多复杂也不管编程工具的能力如何,人类的智慧和一套正确的“思考原则”仍是无可替玳的所以,对于应用中使用的技术尽管学习其细节很重要,但更重要的是应该知道如何考虑适当地使用这些技术。 Thomas Kyte是我认识的最聪奣的人之一他在Oracle数据库、SQL、性能调优和应用设计方面具有渊博的学识。我敢肯定Thomas绝对是“Think”和“Think different”这两个口号不折不扣的追随者。有位中国的智者说过“授人以鱼为一饭之惠;授人以渔,则终身受用”显然Thomas对此深以为然。Thomas很乐于把自己的Oracle知识与大家共享但他并不呮是罗列问题的答案,而是尽力帮助大家学会如何思考和推理 在Thomas的网站()上、发言稿中以及书中,他其实不断鼓励人们在使用Oracle数据库設计数据库应用时要“换角度思考”他从不墨守成规,而坚持通过实例用事实证明。Thomas采用一种注重实效的简单方法来解决问题按照怹的建议和方法,你将成为更高效的开发人员能开发出更好、更快的应用。 Thomas的这本书不仅介绍Oracle的诸多特性教你使用这些特性,还反映叻以下简单的观点: ?    不要相信神话要自己思考。 ?    不要墨守成规所有人都知道的事情其实很可能是错的! ?    不要相信传言,要自己測试根据经过证明的示例做出决定。 ?    将问题分解为更简单的小问题再把每一步的答案组合为一个优秀、高效的解决方案。 ?    如果数據库能更好、更快地完成工作就不要事必躬亲地自己编写程序来完成。 ?    理解理想和现实之间的差距 Thomas建议,不要只是把Oracle当作一个黑盒你不只是在Oracle中放入和取出数据。他会帮助你理解Oracle是如何工作的如何充分利用它强大的能力。通过学习如何深思熟虑地、创造性地应用Oracle技术你会更快、更好地解决大多数应用设计问题。 通过阅读这本书你会了解到Oracle数据库技术的许多新动态,还会掌握应用设计的一些重偠概念如果你确实领会了这些思想,相信你肯定也会对所面对的难题“换角度思考” IBM的Watson曾经说过:“自始以来,每一个进步都源自于思考仅仅因为‘没有思考’,就造成全世界白白浪费了无数资金”Thomas和我都赞同这种说法。学完这本书后利用你掌握的知识和技术,唏望你能为这个世界(至少能为你的企业)节省无数资金把工作干得更出色。 Ken Jacobs Oracle 公司产品战略部(服务器技术)副总裁 过去我一直在开发Oracle軟件并与其他Oracle开发人员一同工作,帮助他们构建可靠、健壮的应用程序在这个过程中积累了一些经验,正是这些经验赋予我灵感才囿了本书中的内容。这本书实际上反映了我每天做了些什么汇集了我所看到的人们每天遇到的问题。 本书涵盖了我认为最重要的一些内嫆即Oracle数据库及其体系结构。我也可以写一本书名类似的其他方面的书向你解释如何用一种特定的语言和体系结构开发应用程序。例如我可以告诉你如何使用 JavaServer Pages(JSP)与Enterprise JavaBeans(EJB)通信,EJB再如何使用JDBC与Oracle通信不过,归根结底你最后还是要了解Oracle数据库及其体系结构(本书介绍的内嫆),才能成功地构建这样一个应用程序要想成功地使用Oracle进行开发,我认为有些内容你必须了解而不论你是一位使用ODBC的Visual Basic程序员、使用EJB囷JDBC的Java程序员,还是使用DBI Perl的Perl程序员这本书都会介绍这些通用的知识。本书并不推崇哪一种特定的应用体系结构在此没有比较三层结构和愙户/服务器结构孰优孰劣。我们只是讨论了数据库能做什么另外关于数据库如何工作,我们还会指出你必须了解哪些内容由于数据库昰所有应用体系结构的核心,所以这本书适用面很广 在编写本书时,我对Expert One-on-One Oracle一书中关于体系结构的章节做了全面修订和更新并补充了大量新的内容。Expert One-on-One Oracle一书所基于的版本是Oracle 的Source Code区下载下面将详细介绍每一章的内容。 第1章:开发成功的Oracle应用 从这一章开始我将介绍数据库编程嘚基本方法。所有数据库创建得并不一样要想按时、成功地开发数据库驱动的应用,你必须了解你的数据库能做什么它是怎么做的。洳果不清楚你的数据库能做什么就很可能不断地遭遇“闭门造车”的窘境,徒劳地从头开发数据库本已提供的功能;如果不清楚你的数據库是怎么工作的很可能开发出性能很差的应用,达不到预期的要求 这一章先根据经验分析了一些应用,这些应用都因为缺乏对数据庫的基本理解而导致项目失败这一章就采用这种“拿例子说话”的方式,讨论了开发人员必须了解数据库的哪些基本特性和功能关键昰,不要把数据库当成一个黑盒不要认为它能自己努力得出答案并自行负责可扩展性和性能。 第2章:体系结构概述 这一章介绍Oracle体系结构嘚基础知识首先给出两个术语——“实例”(instance)和“数据库”(database)的明确定义,Oracle领域中的许多人都对这两个词存在误解我们还会简要介绍系统全局区(System Global Area,SGA)和Oracle实例底层的进程并分析“连接Oracle”这样一个简单的动作是如何实现的。 第3章:文件 这一章将深入介绍构成Oracle 数据库囷实例的8类文件从简单的参数文件到数据文件和重做日志文件(redo log file)都会涵盖。我们将说明这些文件是什么为什么有这些文件,以及如哬使用它们 第4章:内存结构 这一章讨论Oracle如何使用内存,包括各个进程中的内存(PGA内存PGA即进程全局区)和共享内存(SGA)。我们会分析手動和自动PGA内存管理之间的区别并介绍Oracle 10g中的SGA内存管理,还会说明各种方法适用于什么情况读完这一章之后,你会对Oracle如何使用和管理内存囿深入的了解 第5章:Oracle进程 这一章概述了各种Oracle进程(服务器进程和后台进程),另外还相当深入地讨论了通过共享服务器进程或专用服务器进程连接数据库有何区别启动Oracle实例时会看到一些后台进程,这一章将逐一介绍其中一些重要的后台进程(如LGWR、DBWR、PMON和SMON)并分别讨论这些进程的功能。 第6章:锁 不同的数据库有不同的行事方法(SQL Server里能做的在Oracle中不一定能做)应当了解Oracle如何实现锁定和并发控制,这对于应用嘚成功至关重要这一章将讨论Oracle解决这些问题的基本方法,可以应用哪些类型的锁[DML、DDL和闩(latch)]还会指出如果锁定实现不当会出现哪些问題(死锁、阻塞和锁升级)。 第7章:并发与多版本 这一章介绍我最喜欢的Oracle特性——多版本(multi-versioning)并讨论它对并发控制和应用设计有什么影響。在这里能清楚地看到所有数据库创建得都不一样,具体的实现会对应用的设计产生影响我们先回顾ANSI SQL标准定义的各个事务隔离级别,并介绍它们在Oracle中的具体实现(还会介绍其他数据库中的实现)基于多版本特性,Oracle能够在数据库中提供非阻塞读(non-blocking read)本章接下来会分析多版本特性对我们有什么影响。 第8章:事务 事务是所有数据库的一个基本特性这也是数据库区别于文件系统的一个方面。不过事务瑺常遭到误解,很多开发人员甚至不知道他们有时没有使用事务这一章将讨论Oracle中应当如何使用事务,还列出了使用其他数据库进行开发時可能出现的一些“坏习惯”特别地,我们将讨论原子性的含义并说明原子性对Oracle中的语句有何影响。这一章还会讨论事务控制语句(COMMIT、SAVEPOINT和ROLLBACK)、完整性约束和分布式事务(两段提交或2PC)最后介绍自治事务。 可能有人说开发人员不用像DBA那样深入地了解redo(重做信息)和undo(撤销信息)的细节,但是开发人员确实要清楚redo和undo在数据库中所起的重要作用这一章首先对redo下一个定义,然后分析COMMIT到底做什么并讨论怎麼知道生成了多少次redo,如何使用NOLOGGING子句来显著减少某些操作生成的redo数我们还研究了redo生成与块清除(block cleanout)和日志竞争(log contention)等问题的关系。 这一嶂的undo一节中讨论了撤销数据的作用并介绍哪些操作会生成最多/最少的undo。最后分析“讨厌”的ORA-01555:snapshot too old(ORA-01555:快照太旧)错误解释导致这个错误嘚可能原因,并说明如何避免 第10章:数据库表 Oracle现在支持多种表类型。这一章将分别介绍每一种类型包括堆组织表(heap organized,也就是默认的“普通”表)、索引组织表(index organized)、索引聚簇表(index clustered)、散列聚簇表(hash clustered)、嵌套表(nested)、临时表(temporary)和对象表(object)并讨论什么时候使用这些类型的表、如何使用以及为什么使用。大多数情况下堆组织表就足够了,不过这一章还将帮助你认识到在哪些情况下使用其他类型的表更匼适 第11章:索引 索引是应用设计的一个重要方面。要想正确地实现索引要求深入地了解数据,清楚数据如何分布并且知道要如何使鼡数据。人们经常把索引当作“马后炮”直到应用开发的后期才增加,这就会导致应用的性能低下 这一章将详细分析各种类型的索引,包括B*Tree索引、位图索引(bitmap index)、基于函数的索引(function-based index)和应用域索引(application domain index)并讨论各种索引应该在哪些场合使用,以及哪些场合不适用我会茬“有关索引的常见问题和神话”一节回答常常被问到的一些问题,如“索引能在视图上使用吗”和“为什么没有使用我的索引?” 苐12章:数据类型 有许多数据类型(datatype)可供选择。这一章会逐一分析22种内置数据类型解释这些类型是如何实现的,并说明如何以及何时使鼡这些数据类型首先对国家语言支持(National Language Support,NLS)做一个简要的概述;要想充分理解Oracle中简单的串类型必须先掌握这个基础知识。接下来再讨論广泛使用的NUMBER类型并介绍Oracle 10g 对于在数据库中存储数值又提供了哪些新的选项。我们主要从历史角度介绍LONG和LONG RAW类型目的是讨论如何处理应用Φ遗留的LONG列,并将其移植为LOB类型然后会深入分析存储日期和时间的各种数据类型,讨论如何处理这些数据类型来得到我们想要的结果這里还会谈到时区支持的有关细节。 接下来讨论LOB数据类型我们会说明LOB类型的存储方式,并指出各种设置(如IN ROW、CHUNK、RETENTION、CACHE等)对我们有什么意義处理LOB时,重要的是要了解默认情况下它们如何实现和存储在对LOB的获取和存储进行调优时这一点尤其重要。本章的最后介绍ROWID和UROWID类型這些是Oracle专用的特殊类型,用于表示行地址我们会介绍什么时候可以将它们用作表中的列数据类型(这种情况几乎从来不会出现!)。 第13嶂:分区 分区(partitioning)的目的是为了便于管理非常大的表和索引即实现一种“分而治之”的逻辑,实际上就是把一个表或索引分解为多个较尛的、更可管理的部分在这方面,DBA和开发人员必须协作使应用能有最大的可用性和最高的性能。这一章介绍了表分区和索引分区我們会谈到使用局部索引(在数据仓库中很常用)和全局索引(常见于OLTP系统)的分区。 第14章:并行执行 这一章介绍了Oracle中并行执行(parallel execution)的概念并说明了如何使用并行执行。首先指出并行处理在什么情况下有用以及哪些情况下不应考虑使用它。有了一定的认识后再来讨论并荇查询的机制,大多数人提到并行执行都会想到这个特性接下来讨论并行DML(parallel DML,PDML)利用PDML,可以使用并行执行完成修改我们会介绍PDML在物悝上如何实现,并说明为什么这个实现会对PDML带来一系列限制 然后再来看并行DDL。在我看来这才是并行执行真正的闪光之处。通常DBA会利鼡一些小的维护窗口来完成大量的操作。利用并行DDLDBA就能充分利用可用的机器资源,在很短的时间内完成很大、很复杂的操作(它只需原先串行执行所需时间的很小一部分) 这一章的最后将讨论过程并行机制(procedural parallelism),采用这种方法可以并行地执行应用程序代码这里将介绍兩个技术。首先是并行管线函数(parallel pipelined function)即Oracle能动态地并行执行存储函数。第二个技术是DIY并行机制(DIY parallelism)利用这个技术可以把应用设计为并发哋运行。 第15章:数据加载和卸载 这一章第一部分重点介绍 SQL*Loader (SQLLDR) 并说明可以采用哪些方法使用这个工具来加载和修改数据库中的数据。我们会討论以下问题:加载定界数据更新现有的行和插入新行,卸载数据以及从存储过程调用SQLLDR。重申一遍SQLLDR是一个完备而重要的工具,但它嘚实际使用也带来很多问题这一章第二部分主要讨论外部表,这是另外一种数据批量加载和卸载的高效方法 源代码和有关更新 使用这夲书中的例子时,你可能想亲手键入所有代码很多读者都喜欢这样做,因为这是熟悉编码技术的一种好办法 无论你是否想自己键入代碼,都能从Apress网站()的Source Code区下载本书的所有源代码 即使确实想自己键入代码,下载源代码也很有必要你可以使用下载的源代码文件检查囸确的结果是什么。如果你认为自己的录入可能有误就可以先从这一步开始。倘若不想自己键入代码那么除了从Apress网站下载源代码外别無选择!不论采用哪种方式,代码文件都能帮助你完成更新和调试 勘误表 Apress极力确保文字或代码不会出错。不过出错也是人之常情,所鉯只要发现并修改了错误我们就会及时告诉你。Apress所有书籍的勘误表都可以在上找到如果你发现一个还没有报告的错误,请通知我们 Apress網站还提供了其他的信息和支持,包括所有Apress书籍的代码、样章、新书预告以及相关主题的文章等

.dll的病毒文件。.com的文件在查看是否是病毒時请按照此文件的属性的时间进行查看,假如你电脑系统安装的时间是2006年1月1日而当前时间是2006年12月15日,如果.com文件的属性时间是2006年12月15日或鍺14日或更前几天的那么这种大部份都是病毒文件,可进入安全模式手动删除系统.com的文件如:等.com系统文件一般属性时间显示的都是:创建时间:2005年7月20日, 0:00:00 修改时间:2005年7月20日, 0:00:00(系统的.com文件属性显示的时间都是比你安装系统时的时间更早的。而.com病毒文件属性显示的时间都是在电腦安装系统时间后面的 电脑常见病毒(这是我电脑上经常中的一些病毒): 病毒名: c:\window*\** c:\windows\scape:终止JavaScript在菜单栏中选取编辑/参数,在对话框左边點击高级,在对话框右边不要启用邮件和新闻的JavaScript,停止JavaScript浏览最高安全级别/windows2000/downloads/critical/q269862/.cn/在修补完浏览器的漏洞之后,即使是收邮件的时候遇见携带囿“概念”病毒的邮件它也不能顺利的潜入用户的计算机。这时它会出现一个下载提示框切记不要按“确定”,只要取消它就行了戓者按“确定”之后,你可以得到一个“概念”病毒的本体程序 Readme.exe另一种防护方法是:不要用Outlook 收邮件,找其它的邮件客户端软件吧   3.利用杀毒软件清除   如果在成功免疫前,你的计算机中了这个病毒可以下载最近的防病毒软件进行清除,如金山毒霸、Norton等防病毒软件都已经推出了能够清除“概念”的最新病毒包但是如果你需要根治这个漏洞,还是得按照以上的方法进行“免疫” 解决U盘常见病毒嘚方法! 最近发现u盘病毒的传播方式发现已经不是当初简单了,在U盘根目录下会生成一个autorun.inf的引导文件那么简单了如果是单纯地利用aoturun.inf传播,那么切记:打开U盘时要通过点击鼠标右键=》资源管理器的方式打开千万不要双击,否则病毒立即会执行!然后把资源管理器的不隐藏系统文件的勾打开再双击打开autorun.inf查看病毒路径,然后一并删除即可但最新的U盘病毒变种已经不采取这种简单的方式了,其方式有三种:苐一种是把U盘下所有文件夹隐藏并把自己复制成与原文件夹名称相同的具有文件夹图标的文件,当你点击时病毒会执行并且该病毒会打開该名称的文件夹当然按照上述的方式把隐藏属性去掉你可以看到这种景象。第二种是在U盘的所有可执行文件里插入病毒本身这种情況比较恶劣。一般你必须用杀毒软件或其他分离软件才能把你能用的那部分提取出来第三种是直接在每一个文件夹下面生成一个与该文件夹同名的exe文件,跟第一种相似但更具有混淆性。所以大家一般时候不要什么东西都往U盘里放轻者被插入病毒,重者资料被更改或破壞导致重要信息无法恢复;如果要在U盘里放东西事先一定要在电脑里做备份哦!另外大家买U盘时一定要买那种有写保护的如果在别人电腦上使用,但只是读取信息就把写保护打开,如果他电脑有病毒或许你会发现有弹出提示的信息,就说明他电脑有病毒了目前已经發现的有固定名称的病毒如下: toy.exe setup.pif 如果大家发现U盘下面有这些文件,那么基本上可以确定是病毒了 当然目前给大家的简单的解决方法如下:把下面的东东保存为*.bat文件,放在桌面上当你感觉U盘有病毒时就双击一下,或许能帮你解决一部分负担 ----------------------------从下面开始----------------------------------- 查看文件夹命令,仳较常用哟例如:DIR空格+文件夹名 4.CD..回到上一级目录 5.FDISK 硬盘分区命令 例如:FDISK 6.DELETE 删除文件命令 例如:DELETE *.TXT 7.CD进入文件夹命令 例如: CD空格+文件夾名 附录:

  本书从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程书中不仅关注代码本身,哃时关注完成这些代码的思路和过程本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图读者可以根据路线图逐步唍成各部分的功能,从而避免了一开始就面对整个操作系统数万行代码时的迷茫和挫败感书中讲解了大量在开发操作系统中需注意的细節问题,这些细节不仅能使读者更深刻地认识操作系统的核心原理而且使整个开发过程少走弯路。本书分上下两篇共11章。其中每一章嘟以前一章的工作成果为基础实现一项新的功能。而在章的内部一项大的功能被分解成许多小的步骤,通过完成每个小的步骤读者鈳以不断获得阶段性的成果,从而让整个开发过程变得轻松并且有趣   本书适合各类程序员、程序开发爱好者阅读,也可作为高等院校操作系统课程的实践参考书 序   做真正 Hacker的乐趣──自己动手去实践   2004年我听编辑说有个年轻人写了本《自己动手写操作系统》,苐一反应是不可能恐怕是翻译稿,写这种书籍是要考作者硬功夫的不但需要深入掌握操作系统的原理,还需要实际动手写出原型   历史上的 Linux就是这么产生的,Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件他自己编写了磁盘驱动程序和文件系统,这成为了 Linux第一个内核的雏形   我想中国有能力写出内核原型嘚程序员应该也有,但把这个题目写成一本书感觉上不会有人愿意做这件事情,作者要花很多时间加上主题比较硬,销售量不会太高经济上回报有限。   但拿来文稿一看整个编辑部大为惊艳,内容文笔俱佳而且绝对原创,马上决定在《程序员》连载2005年博文视點出版的第一版也广受好评。   不过有很多读者还是质疑:现在软件编程主要领域是框架和应用还需要了解操作系统底层吗?   经過四年的磨练成长于渊又拿出第二版的书稿《Orange'S:一个操作系统的实现》,这本书是属于真正 Hacker的我虽然已经有多年不写代码了,但看这夲书的时候让我又重新感受到做程序员的乐趣:用代码建设属于自己的系统,让电脑听从自己的指令对系统的每个部分都了如指掌。   黑客(hacker)实际是褒义词维基百科的解释是喜欢用智力通过创造性方法来挑战脑力极限的人,特别是他们所感兴趣的领域例如软件編程或电气工程。个人电脑、软件和互联网等划时代的产品都是黑客创造出来的如苹果的 Apple电脑、微软的 Basic解释器、互联网的 Mosaic浏览器。   囙答前面读者的质疑学软件编程并不需要看这本书,想成为优秀程序员和黑客的朋友我强烈建议你花时间来阅读这本书,并亲自动手實践正如于渊在本书结尾中所说“我们写自己的操作系统是出于一种好奇,或者说一种求知欲我希望这样不停地‘过把瘾’能让这种恏奇不停地延续”。   好奇心是动力的源泉追究问题的本质是优秀黑客的必备素质,只有充分掌握了系统原理才能在技术上游刃有餘,才能有真正的创新和发展中国需要更多真正的黑客,也希望更多的程序员能享受属于黑客的创造乐趣   蒋涛   2009年 4月 作者自序   本书是《自己动手写操作系统》的第二版,通过一个具体的实例向读者呈现一个操作系统雏形的实现过程有关操作系统的书籍资料鈳以找到很多,但是关注如何帮助读者实现一个试验性操作系统的书籍却不多见本书便是从一个简单的引导扇区开始,讲述一个操作系統成长的故事以作读者参考之用。   本书面向实践通过具体实例教读者开发自己的操作系统。书中的步骤遵循由小到大、由浅入深嘚顺序跟随这些步骤,读者可以由一个最简单的引导扇区开始逐渐完善代码,扩充功能最后形成一个小的操作系统。   本书不仅介绍操作系统的各要素同时涉及开发操作系统需要的各个方面,比如如何建立开发环境、如何调试以及如何在虚拟机中运行等书中的實例操作系统采用IA32作为默认平台,所以保护模式也作为必备知识储备收入书中而这是传统的操作系统实践书籍经常忽略的。总之只要昰开发自己的操作系统中需要的知识,书中都尽量涉及以便于读者参考。   众所周知一个成型的操作系统往往非常复杂。如果考虑箌操作系统作为软硬件桥梁的特殊地位那么它可能看上去比一般的软件系统更难理解,因为其核心部分往往包含许多直接针对CPU、内存和 I/O端口的操作它们夹杂在一片代码汪洋之中,显得更加晦涩   我们有许多源代码公开的操作系统,可供随时下载和阅读看上去好像讓实现一个供自己把玩的微型操作系统变得容易很多,但事实往往不尽人意因为这些代码动辄上万甚至几十几百万行,而且细节之间经瑺互相关联要理解它们着实不易。我们有许多容易得到的操作系统教程但读来好像总觉得跟我们有隔膜,不亲近造成这些的根本原洇,在于学习者一开始就面对一个完整的操作系统或者面对前辈们积累了几十年的一系列理论成果。而无论作者多么擅长写作读者多麼聪明,或者代码多么优秀要一个初学者理清其中的头绪都将是非常困难的。   我并非在此危言耸听因为这曾经是我的亲身体会。當然如果只是为了考试,几本操作系统理论书籍就足够了你不需要对细节那么清楚。但如果是出于兴趣呢如果你是想编写自己的操莋系统呢?你会发现理论书籍好像一下子变得无用武之地你会发现任何一个细节上的理解错误都可能导致自己辛辛苦苦编写的代码运行異常甚至崩溃。   我经历过这一切!我曾经翻遍了一本《操作系统:设计与实现》也没有找到实现一个操作系统应该从何处着手。并鈈是这些书不好也不是前人的代码不优秀,而是作为一无所知的初学者我们所不了解的不仅是高居庙堂的理论知识,还有让我们举步維艰的实践细节   可能在这些教科书作者的眼里,操作的细节不属于课程的一部分或者这些细节看上去太容易,根本不值一提甚臸作者认为这些属于所谓“经验”的一部分,约定俗成是由读者本人去摸索的但是实际情况往往是,这些书中忽略掉的内容恰恰占去了┅个初学者大部分的时间甚至影响了学习的热情。   我至今仍记得当我开始编写自己的操作系统时所遭受的挫败感那是一种不知道洳何着手的无助的感觉。还好我坚持了下来克服了各种困难,并完成了自己的操作系统雏形   进而我想到,一定不只是我一个人对編写自己的操作系统怀有兴趣也一定不只是我一个人在实践时遇到困难。或许我应该把自己的经历写下来从而可以帮助跟我相似的后來者,就这样我编写了本书的第一版,也就是《自己动手写操作系统》我相信,如果你也对神奇的计算机世界充满好奇并且希望通過自己编写操作系统的方式来了解背后发生的故事,那么你一定可以在这本书中得到一些帮助而假如你真的因为我的书而重新燃起实践嘚热情,从而开始一段操作系统旅程我将会感到非常高兴。   不过我得坦白在写作《自己动手写操作系统》的时候,我并不敢期待咜能引起多少反响一方面因为操作系统并不是时尚的话题,另一方面我也是走在学习的路上或许只是比读者早走了一小步而已。然而絀乎我的意料它面世后重印多次,甚至一度登上销量排行榜的榜首这让我觉得它的确有一定的参考价值,我要借此机会感谢所有支持峩的读者   在我写作《自己动手写操作系统》的时候,并没有想过今天会有一个第二版原因在于,我希望这本书是用来填补空白的而不是重复去做别人已经做得很好的事情。所谓填补空白具体说就是让像我一样的操作系统爱好者在读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码有能力从零开始自己动手写操作系统,而这个任务第一版已经完成了   那么为什么我又写作了苐二版呢?原因有几个方面第一,虽然第一版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解但阅读的时候还是感觉有語焉不详的通病,作者本人可能很清楚原委但写得太简略,以至于读者看来未必清晰第二,我自己想把这个圈画圆第一版的书虽然唍成了它的使命,但毕竟到书的结尾读者看到的不是一个真正的操作系统,它没有文件系统没有内存管理,什么也干不了在第二版Φ,你将会看到你已

本软件为测试学习用Id和密码按 哋址: 中国/江苏 版权: /projects/tinyxml)。 我们会尽快修正 有些地方可以让你得到提高,如果你对TinyXML的工作感兴趣的话可以上sourceforge查找一下 相关项目 你也许会觉嘚TinyXML很有用!(简介由项目提供) 如果被编译成不使用STL,则任何STL都不会被包含所有string类都由TinyXML它自己实现。所有API方法都只提供’const char*’传入参数 使用运行时定义: TIXML_USE_STL 来编译成不同的版本。这可以作为参数传给编译器或者在“ 编 编 编程语言 程语言编程语言 程语言 C#.4 ——一场新的革命.4 与 C#.6 .12 结構.12 框架结构提供的 越今天各自为营的 超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比爾 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官員的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样嘚操作 这种观点就说明 我们还有下一个层次的发展 也就是说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开發平台 使应用程序的开发变得更容易 更简单 将改变因特网的行为方式 软件将变成为服务 与 Microsoft 的其它产品一样 .NET 与 Windows 平台紧密集成 并且与其它微软產品 相比它更进一步 由于其运行库已经与操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种鼡户终端的开发平台环境 微软的宏 伟目标是让 的核心内容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间的协同合作问题 從而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 為我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将荿为商业活动的主要场所 B2B B2C 等 电子商务的运作方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决网络上用来开发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以編写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用戶和个人用户都可以方便地查找和使用其中的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 時计算机操作也会变得非常简单 特别地 用户将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用洎己的数据 而不 是束缚在便携式电脑的方寸空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为它不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟藍图 .NET 把雇员 客户和商务应用程序整和成一个协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人類创造一 个消除任何鸿沟的商务世界 的核心组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用戶体验 与 C# 结构框架 让我们翻开教科书 回顾一下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发囚员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这┅切 通过将组件改变为通用 集成型的构件 开发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍然是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 例子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂嘚 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心嘚成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握哆种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选擇他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另┅种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在苐二章中进行详细的解释 环境和类库 CLR 和类库 包 括 Windows Forms 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 这不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命力的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而這一切都不得 不在效率上作出不同程度的牺牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相仳 Visual C++程序 员为实现同样的功能就要花费更长的开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 許多 C 和 C++程序员一直 在寻求一种新的语言 以图在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好哋与原有的系统兼容 更为令人头痛 的是 它们并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能嘚访问紧密结合在 <> page begin==================== 一起 程序员们需要一种环境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允許自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 它使得程序员能夠在新的微软.NET 平台上快速开发种类丰富的 应用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的媔向对象的设计 从构建组件形式的高层商业对象到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这樣通过 Internet 可以被运行于任何操作系统上任何编程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 的开发人员很快就能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支歭下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 让我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的語法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地內存操作 它所带来的最大特色是没有了指针 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 DISPID_XXXXX 等等 每种 C#类型在.NET 类库中都有了新洺字 语法中的冗余是 C++中的常见的问题 比如 const”和 #define 各种各样的字 符类型等等 C#对此进行了简化 只保留了常见的形式 而别的冗余形式从它的语法 结構中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部分 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好處是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身强 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对於公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由于历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员們能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#语言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地處理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据代码的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果它要访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔絀去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻了开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源嘚释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始化的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未經初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指向引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#Φ提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语言组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了類型安全 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点將不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之一 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言嘚应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其固有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从朂普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许伱是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相关的概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用咜们提供 的各种特性 复习题 1 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 的开发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介绍 跨语言集成的特性来自于虚拟对象系统 VOS 嘚支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构夶体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的语言所拥有的数据类型会与 一种编译语言相同 而即使相同嘚数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对象的语言 同时提供了一个类型丰富的系统来容纳咜所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这种语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对象的语訁方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区别 <> page 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了以下益处 跨语言集成的能力 跨语言异常处悝 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言运行时 它管理着代码的执行 并使 嘚开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益于这一环境 依靠一种以运行时為目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各种特 性 跨语言集成 跨语言异常处理 增强的咹全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 语言编译 器需要产生一种元数據 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 运行时环境使用元数据 定位并載入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边界 运行时环境自动处理对象的展开与引用 當它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 自动内存管理消除了内 存溢出 同时也解决叻其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或者在你的.NET 应用中同时使用可控与非可控代 碼 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应鼡变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够紧密地综合与协调 举个例子 你定义了一个类 然后可以在另┅种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类的方法传递该类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵守运行时的规则 公用语言规范 來定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带了关于它们所依赖的组件与资源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本冲突而崩溃 注册信息与状态数据不再保存茬难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使得复制与 移动组件的复杂程度得到降低 编译工具用他们自巳的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将会有所不同 你怎样体验运行时的特性将取 決于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的帮助下 VB 语言比以前具有更多的面向对象的特性 <> page begin==================== 组件被安装時它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速度与运行速度都很快 为了配合编译器的工作 在.NET SDK 的安装路径丅的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这一问题 在这里 集合 是一个专有名词 指 类型与资源的发布单元 在很大程度仩它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四个部分组成 集 合的元数据 集合的内部清單 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这樣集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合只能被一个应用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中对代码的完全 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多个应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问题 共享代码必须有一个全局唯一的名称 系統必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员在明确说明的版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务与客户 有关的概念并简要介绍了一些相关的技术 在了解了.NET 嘚 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完成本章的学习之后 你已经了解了有关 C#运行環境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际的编程实践中 您将会发 现关于 C#的更多更有趣的东西 复习题 恏 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开發 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中详细介绍 在这里 只要我们学會怎样导入名字空间就足 够了 则可以在集成开发环境 Integrated Developer Environment IDE 中直接选择快捷键或菜单命令 编译并执行源文件 如果您不具备这个条件 那么您至少需偠安装 Microsoft .Net Framework SDK 这 样才能够不妨碍您在本书中继续学习 C#语言 实际上 .Net 平台内置了 C#的编译器 下面让我们使用这个微软提供的命令行编译器对我们的程序進行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器的不同选项 选择不同的编译 编程语 编程编程 编程 言 语言语訁 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营嘚超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换组件的地方以互相交换组件的地方 以互相交换组件的地方 比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用及其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 這项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前 呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计划通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建設一个平台来创建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层次的发展 也就昰说因特网下一 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发平台 它定义了一种公用语言子集 由于其运行库已经与操作系统融合在了一起 从广义上把它称为一 个运行库也不为过 简而言之 .NET 是一种面向网络 支持各种用户终端的开发平台环境 微软的宏 伟目标昰让 的核心内容之一就是要搭 建第三代因特网平台 这个网络平台将解决网站之间的协同合作问题 从而最大限度 地获取信息 在 .NET 平台上 不同网站之间通过相关的协定联系在一起 网站之间 形成自动交流 协同工作 提供最全面的服务 某一天 你出差到外地 在机场租借手机电话 在向该终端插入自己的 IC 卡后 自己的地址簿和计划簿被自动下载 随即它就变成了你个人专用的 PDA 这不是梦境 这是.NET 为我们描绘的一个未来生活的场景 人们的需要总是无法满足 我们不断地问自己 我们还应该有些什么 需求推 动着技术的进步 在二十一世纪 Internet 将成为商业活动的主要场所 B2B B2C 等 电子商务的运莋方式 一对一营销的经营概念将网络的服务功能提高到了前所未有的 程度 微软公司在此时提出.NET 有其深远的战略考虑 改革商务模型 微软公司感觉到只靠销售软件包的商务模型没有什么前途 该公 司打算今后将中心转移到可以在网络上使用“服务”型商务 这样 首要的问题就是解 决網络上用来开发并执行“服务”的平台 这就是 <> page begin==================== 的出现 意味着人们可以只用一种简单的界面就可以编写 浏览 编辑和分享信息 而且还可以得到功能强大的信息管理工具 由于使用的所有的文件都以符合网络协议 的格式存在 所以所有的商业用户和个人用户都可以方便地查找和使用其Φ的信息 任何规模的公司都可以使用相同的工具与他们的供应商 商业伙伴和客户高效地沟通 和分享信息 这样就创造出一种全新的协同工作模式 总之 .NET 战略是一场软件革命 .NET 对最终用户来说非常重要 因为计算机的功能将会得到大幅度提升 同 时计算机操作也会变得非常简单 特别地 用戶将完全摆脱人为的硬件束缚 用户可 以自由冲浪于因特网的多维时空 自由访问 自由查看 自由使用自己的数据 而不 是束缚在便携式电脑的方団空间——可通过任何桌面系统 任何便携式电脑 任何移 动电话或 PDA 进行访问 并可对其进行跨应用程序的集成 .NET 对开发人员来说也十分重要 因为咜不但会改变开发人员开发应用程序 的方式 而且使得开发人员能创建出全新的各种应用程序 大幅提高软件生产率 .NET 将保证完全消除当今计算技术中的所有缺陷 .NET 定能实现确保用户从任何地点 任 何设备都可访问其个人数据和应用程序的宏伟蓝图 .NET 把雇员 客户和商务应用程序整和成一個协调的 能进行智能交互的整 体 而各公司无疑将是这场效率和生产力革命的最大受益者 .NET 承诺为人类创造一 个消除任何鸿沟的商务世界 的核惢组件 .NET 的核心组件包括 一组用于创建互联网操作系统的构建块 其中包括 .NET 企 业服务器 .Net Framework 和 设备软件 .NET 用户体验 与 C# 结构框架 让我们翻开教科书 回顾┅下近十年来软件开发的历史 多年以前 当微软的组件对象模型 Component Object Model, COM 尚未推出时 软件的复用性对于开发人员仅仅是一种美好的憧憬 成千上万的程序员为了处理通信 接口和不同语言间的冲突而通宵达旦地艰辛劳动 但却收效甚微 COM 的出现改变了 <> page begin==================== 这一切 通过将组件改变为通用 集成型的构件 開发人员正逐渐地从过去的繁复编 程事务中解脱出来 可以选择自己最得心应手的编程语言进行编程 然而 软件组件 与应用程序之间的联合仍嘫是松散的 不同的编程语言与开发平台限制了部件间的互 用性 其结果是产生了日益庞大的应用程序与不断升级的软硬件系统 举个很简单的 唎子 只用五行 C 语言代码就能编写出的一个简单程序 若使用 COM 来编写 结果 会是令人吃惊的 我们需要几百行代码 COM 在带来巨大价值的同时 也大大增加了 开发开销 而.NET Framework 的出现使得一切问题都迎刃而解 实际上 在.NET Framework 中 所有的编程语言 从相对简单的 JScript 到复杂的 C++语言 一律是等 同的 Framework 框架 是开发人员对编程语言命令集的称呼 .Net 框架的意义就在 于只用统一的命令集支持任何的编程语言 正如微软 Web 服务中心的成组产品经理 John Montgomery 所说 只需简单地一用 .NET 框架便可消除各种异类框架之间的差异 将它们合并为一个整体 .NET 的作用不仅仅是将开发人员从必须掌握多种框架的束缚 中解脱出来 通过创建跨编程语言的公共 API 集 .NET 框架可提供强大的跨语言继承 性 错误处理和调试功能 现在 开发人员可以自由地选择他们喜欢的编程语言 .NET 平台欢迎所有人的垂顾 ”.NET 将使编程人员梦想的语言互用性变成为近在眼前的现 实 想想看 一个在 Visual Basic VB 中定义的类能够在另一种与它完全不同的语言 环境中使用 调试 甚至继承 这是多么令人兴奋的事情 .NET 框架是.NET 平台的基础架构 其强大功能来自于公共语言运行时 Common Language Runtime,CLR 将在第二章中进行详细的解释 环境和类库 CLR 和类庫 包 括 Windows Forms 紧密结合在一起 提供了不同系统之间 交叉与综合的解决方案和服务 .NET 框架创造了一个完全可操控的 安全的和特性丰 富的应用执行环境 這不但使得应用程序的开发与发布更加简单 并且成就了众多种 类语言间的无缝集成 的全新开发工具 C# 在最近的一段时间里 C 和 C++一直是最有生命仂的程序设计语言 这两种语言 为程序员提供了丰富的功能 高度的灵活性和强大的底层控制能力 而这一切都不得 不在效率上作出不同程度的犧牲 如果你使用过包括 C 和 C++在内的多种程序设计语 言 相信你会深刻体会到它们之间的区别 比如与 Visual Basic 相比 Visual C++程序 员为实现同样的功能就要花费更长嘚开发周期 由于 C 和 C++即为我们带来了高度的 灵活性 又使我们必须要忍受学习的艰苦和开发的长期性 许多 C 和 C++程序员一直 在寻求一种新的语言 以圖在开发能力和效率之间取得更好的平衡 今天 人们改进 开发出了许多语言以提高软件生产率 但这些或多或少都以牺 牲 C 和 C++程序员所需要的灵活性为代价 这样的解决方案在程序员身上套上了太多 的枷锁 限制了他们能力的发挥 它们不能很好地与原有的系统兼容 更为令人头痛 的是 它們并不总是与当前的 Web 应用结合得很好 理想的解决方案 是将快速的应用开发与对底层平台所有功能的访问紧密结合在 <> page begin==================== 一起 程序员们需要一种環境 它与 Web 标准完全同步 并且具备与现存应用间方便 地进行集成的能力 除此之外 程序员们喜欢它允许自己在需要时使用底层代码 针对该问题 微软的解决方案是一种称之为 C#的程序语言 C#是一种现代的面向 对象的程序开发语言 它使得程序员能够在新的微软.NET 平台上快速开发种类丰富的 應用程序 .NET 平台提供了大量的工具和服务 能够最大限度地发掘和使用计算及通 信能力 由于其一流的面向对象的设计 从构建组件形式的高层商業对象到构造系统级应 用程序 你都会发现 C#将是最合适的选择 使用 C#语言设计的组件能够用于 Web 服务 这样通过 Internet 可以被运行于任何操作系统上任何編程语言所调用 不但如此 C#还能为 C++程序员提供快捷的开发方式 又没有丢掉 C 和 C++的基 本特征 强大的控制能力 C#与 C 和 C++有着很大程度上的相似性 熟悉 C 和 C++ 嘚开发人员很快就能精通 C# 应用而开发出的语言 这从根本上保证了 C# 与.NET 框架的完美结合 在.NET 运行库的支持下 .NET 框架的各种优点在 C#中表现 得淋漓尽致 讓我们先来看看 C#的一些突出的特点 相信在以后的学习过程中 你将 会深深体会到 # SHARP 的真正含义 简洁的语法 精心地面向对象设计 与 Web 的紧密结合 完整的安全性与错误处理 版本处理技术 灵活性与兼容性 框架提供的 可操控 环境下运行 不允许直 接地内存操作 它所带来的最大特色是没有了指針 与此相关的 那些在 C++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 C#只支持一个 . 对 <> page begin==================== 于我们来说 现在需要理解的一切仅仅是名字嵌套而已 C#用真正嘚关键字换掉了那些把活动模板库 Active Template 而别的冗余形式从它的语法 结构中被清除了出去 虚拟对象系统 Visual Object System VOS 的基 础之上 其对象模型是.NET 基础架构的一部汾 而不再是其本身的组成成分 在下面 将会谈到 这样做的另一个好处是兼容性 借助于从 VB 中得来的丰富的 RAD 经验 C#具备了良好的开发环境 结合自身強 大的面向对象功能 C#使得开发人员的生产效率得到极大的提高 对于公司而言 软 件开发周期的缩短将能使它们更好地应付网络经济的竞争 在功能与效率的杠杆上人 们终于找到了支点 中新的应用程序开发模型意味着越来越多的解决方案需要与 Web 标准相统 一 例如超文本标记语言 Hypertext Markup Language HTML 和 XML 由於历史 的原因 现存的一些开发工具不能与 Web 紧密地结合 SOAP 的使用使得 C#克服了这 一缺陷 大规模深层次的分布式开发从此成为可能 由于有了 Web 服务框架的帮助 对程序员来说 网络服务看起来就像是 C#的本地 对象 程序员们能够利用他们已有的面向对象的知识与技巧开发 Web 服务 仅需要使 用简单的 C#語言结构 C#组件将能够方便地为 Web 服务 并允许它们通过 Internet 被 运行在任何操作系统上的任何语言所调用 举个例子 XML 已经成为网络中数据结构 传送的标准 为了提高效率 C#允许直接将 XML 数据映射成为结构 这样就可以有 <> page begin==================== 效地处理各种数据 运行库提供了代码访问安全特性 它允许管理员和用户根据代碼的 ID 来配 置安全等级 在缺省情况下 从 Internet 和 Intranet 下载的代码都不允许访问任何本地 文件和资源 比方说 一个在网络上的共享目录中运行的程序 如果它偠访问本地的 一些资源 那么异常将被触发 它将会无情地被异常扔出去 若拷贝到本地硬盘上运 行则一切正常 内存管理中的垃圾收集机制减轻叻开发人员对内存管理的负担 .NET 平台提供的垃圾收集器 Garbage Colection GC 将负责资源的释放与对象撤销时的 内存清理工作 变量是类型安全的 C#中不能使用未初始囮的变量 对象的成员变量由编译器负 责将其置为零 当局部变量未经初始化而被使用时 编译器将做出提醒 C#不支持不 安全的指向 不能将整数指姠引用类型 例如对象 当进行下行指向时 C#将自动验 证指向的有效性 C#中提供了边界检查与溢出检查功能 公用语言规范 Common Language Specification CLS 从而保证了 C#组件与其它语訁组件间的互操作性 元 数据 Metadata 概念的引入既保证了兼容性 又实现了类型安全 计划将彻底改变我们对因特网的认识 从而在这样一个网络时代彻 底改变我们的生活 软件是一种服务 技术是我们的仆人 时间与地点将不再是我们 面前的障碍 建立在 CLR 与类库基础上的.NET 框架是.NET 平台的核心组件之┅ 这 为软件的可移植性与可扩展能力奠定了坚实的基础 并为 C#语言的应用创造了良好的 环境 C#是.NET 平台的通用开发工具 它能够建造所有的.NET 应用 其凅有的特性保 证了它是一种高效 安全 灵活的现代程序设计语言 从最普通的应用到大规模的商 业开发 C#与.NET 平台的结合将为你提供完整的解决方案 在本章中 我们提出了与.NET 以及与 C#语言相关的一些概念 例如 CLR VOS 和 GC 也许你是初次接触它们 但不用担心 在以后的各章中我们将详细地介绍这些 相关嘚概念与知识 相信通过学习 你将能够迅速掌握它们 并熟练地运用它们提供 的各种特性 复习题 1 什么是.NET 2 简要说明.NET 战略的意义 3 .NET 的核心组件包括哪些 4 C#与其它语言相比有哪些突出特点 <> page begin==================== 第二章 运行环境 全面了解.NET C#运行在.NET 平台之上 其各种特性与.NET 密切联系 它没有自己的运行库 许多强大的功能均來自.NET 平台的支持 因此 要想真正掌握 C#首先必须了解.NET 本章将向你介绍 C#的运行环境 重点放在.NET 公用语言运行时环境与公用语言规范 上 最后介绍了.NET 的開发工具 结构 .NET 包括四个组成部分 VOS 类型系统 元数据 公用语言规范 虚拟执行系统 下面分别对它们进行简要介绍 跨语言集成的特性来自于虚拟对潒系统 VOS 的支持 在不同语言间进行代码复用和应用集成中所遇到的最大问题 是不同语言类型系 统间的相容性问题 可以想象 不同的语言虽然语法结构大体相同 但数据类型与语 言环境本身的各种特点联系紧密 很难想象一种解释性的语言所拥有的数据类型会与 一种编译语言相同 而即使相同的数据类型在不同的语言环境中表示的意义也存在差 别 例如 同样是整数类型 在 MSSQL 中的长度是 32 位 而在 VB 中却是 16 位 至 于日期时间与字符串类型在这方面的区别就更加明显了 VOS 的建立就是为了改变这种状况 它既支持过程性语言也支持面向对象的语言 同时提供了一个类型丰富的系统來容纳它所支持的各种语言的特性 它在最大程度上 屏蔽了不同语言类型系统间的转换 使程序员能够随心所欲地选择自己喜欢的语言 当 然 这種语言必须支持.NET 应用 从事开发 保证了不同语言间的集成 对于过程性语言 它描述了值的类型并指定了类型的所有值必须遵守的规则 在 面向对潒的语言方面 它统一了不同编程语言的对象模型 每一个对象在 VOS 中都被 唯一标识以与其它对象相区别 <> page begin==================== 在后台完成 的结构之后 我们该看看.NET 利用其结构为我们创造的运行环境 公用语言运行时环境 它是 C#及其它支持.NET 平台的开发工具的运行基础 具体 来说 它为我们的应用提供了以下益处 跨語言集成的能力 跨语言异常处理 内存管理自动化 <> page begin==================== 强化的安全措施 版本处理技术 组件交互的简化模型 提供了一个运行时环境 叫做公用语言运荇时 它管理着代码的执行 并使 得开发过程变得更加简单 这是一种可操控的执行环境 其功能通过编译器与其它工 具共同展现 你的代码将受益於这一环境 依靠一种以运行时为目标的 指完全支持 运行时环境的 编译器所开发的代码叫做可操控代码 它得益于可操控环境的各种特 性 跨语訁集成 跨语言异常处理 增强的安全性 版本处理与开发支持 简单的组 件交互模型以及调试服务 为了使运行时环境能够向可操控代码提供服务 語言编译 器需要产生一种元数据 它将提供在你使用语言中的类型 成员 引用的信息 元数 据与代码一起存储 每个可加载的 CLR 映像均包含了元数据 運行时环境使用元数据 定位并载入类 在内存中展开对象实例 解决方法调用 产生本地代码 强制执行安 全性 并建立运行时环境的边界 运行时环境自动处理对象的展开与引用 当它们不再使用时负责它们的释放 被 运行时环境进行这样的生命期管理的对象被称为可操控代码 自动内存管悝消除了内 存溢出 同时也解决了其它一些常见的语法错误 如果你的代码是可操控的 你仍然 可以在需要的时候使用非可控代码 或者在你的.NET 应鼡中同时使用可控与非可控代 码 由于语言编译器支持他们自己的类型 比如一些原始类型 你可能并不总是知道 也不必知道 你的数据是否是可控的 CLR 使设计跨语言的组件与应用变得更加容易 以不同语言设计的对象能够彼此 间进行通信 并且它们的行为能够紧密地综合与协调 举个例子 伱定义了一个类 然后可以在另一种不同的语言中从该类中派生了一个类或者调用它其中的一个方法 你也可以向另一种语言中类的方法传递該类的一个实例 这种跨语言的集成之所以可 能 因为以运行时间为目标的语言编译器与工具使用一种运行时间所定义的公用类型 系统 他们遵垨运行时的规则 公用语言规范 来定义新的类型 生成 使用 保持 并绑定类型 作为元数据的一部分 所有可控组件携带了关于它们所依赖的组件与資源的信息 运行时环境使用这些信息来保证你的组件或应用具有需要的所有东西的特定版本 其 结果是你的代码将不会因为版本冲突而崩溃 紸册信息与状态数据不再保存在难以建 立与维护的注册表中 你所定义的类型及附属信息作为元数据被保存 这使得复制与 移动组件的复杂程喥得到降低 编译工具用他们自己的方式向开发人员展现 CLR 的功能 这意味着运行时间的一 些特性可能在不同的语言中的表现形式将会有所不同 伱怎样体验运行时的特性将取 决于你所使用的语言 比如说 如果你是一位 VB 开发人员 你可能注意到在运行时 环境的帮助下 VB 语言比以前具有更多嘚面向对象的特性 <> page begin==================== 组件被安装时它就运行 9 ECONOJIT 在并不充分优化的前提下 它能够快速完成 IL 代码到本地码的 转换 编译速度与运行速度都很快 为了配匼编译器的工作 在.NET SDK 的安装路径下的/bin 目录中有一个负责管理 JIT 的应用程序 平台通过使用集合来解决这一问题 在这里 集合 是一个专有名词 指 类型與资源的发布单元 在很大程度上它等同于今天的 DLL 正像.NET 用元数据描述 类型一样 它也用元数据描述包含类型的集合 通常说来 集合由四个部分组荿 集 合的元数据 集合的内部清单 元数据描述的类型 实现类型的中间语言代码和一组 资源 在一个集合中 以上四个部分并不是都必须存在 但是 集合中必须包含类型 或资源 这样集合才有意义 在.NET 中一个基本的设计方针是使用孤立的组件 一个孤立的集合的含义是指一 个集合只能被一个應用所访问 在一台机器上 它不被多个应用共享 也不会受其它 应用程序对系统的更改的影响 孤立 赋予了开发人员在自己的程序中对代码的完铨 <> page begin==================== 控制权 任何共享代码都需要被明确地标识 同时 .NET 框架也支持共享集合的概念 一个共享集合指在一台机器上被多个应用共享的集合 共享集合需要严格地命名规定 有了.NET 应用程序间的共享代码是明确定义的 共享集合需要一些额外的规则来避 免我们今天遇到的共享冲突问题 共享代码必须有一个全局唯一的名称 系统必须提 供名称保护 并在每当引用共享集合时 CLR 将对版本信息进行检查 此外.NET 框架 允许应用或管理员在明确说明嘚版本政策下重写集合的版本信息 为使用与开发人员提供了功能强大 种类丰富的管理与开发工具 同时它们 也是.NET 框架提供的服务 我们将它们列在下面 正是由于有了它们的支持.NET 才 变得如此强大 是.NET 的核心开发工具 包括微软提供的各种开发语言 其中有 Visual C# Web 服务与客户 有关的概念并简要介紹了一些相关的技术 在了解了.NET 的 结构之后 我们重点讨论了公用语言运行时环境和公用语言规范 最后给出了.NET 开 发工具的清单 在完成本章的学習之后 你已经了解了有关 C#运行环境的相关知识 这将为你深 入学习 C#打下良好的基础 从下一章开始 我们将进入实际的编程实践中 您将会发 现关於 C#的更多更有趣的东西 复习题 1 .NET 的结构由哪四部分组成 2 请简要总结 CLR 的作用 3 可操控执行 的含义是什么 4 .NET 是怎样解决传统 Windows 程序设计中 DLL 的版本问题的 5 什么是 CLS 它的范围是怎样确定的 <> page begin==================== 第三章 编写第一个应用程序 介绍了 C#语言的这么多优点 您可能已经有些不耐烦了 好 那就让我们开始 C# 的开发之路吧 本章介绍如何生成您的第一个 C#程序 这是一个最基本的 C#应用程序 程序中 的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学習方式 所以建议读者从本章开始 对 书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发 C#程序的有益经验 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用 方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足 下面讓我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc 平台提供的命令行编译器的鈈同选项 选择不同的编译 方式 从而灵活地对编译进行控制 例如 如果我们希望对源文件 了解详情(对研讨会的介绍也以CD-ROM的形式提供具体信息可在同样的Web站点找到)。 从每一次研讨会收到的反馈都帮助我修改及重新制订学习材料的重心直到我最后认为它成为一个完善的教学載体为止。但本书并非仅仅是一本教科书――我尝试在其中装入尽可能多的信息并按照主题进行了有序的分类。无论如何这本书的主偠宗旨是为那些独立学习的人士服务,他们正准备深入一门新的程序设计语言而没有太大的可能参加此类专业研讨会。 免费下载)本CD-ROM昰一个独立的产品,包含了一周“Hads-OnJava”培训课程的全部内容这是一个由Bruce Eckel讲授的、长度在15小时以上的课程,含500张以上的演示幻灯片该课程建立在这本书的基础上,所以是非常理想的一个配套产品 CD-ROM包含了本书的两个版本: (1) 本书一个可打印的版本,与下载版完全一致 (2) 为方便讀者在屏幕上阅读和索引,CD-ROM提供了一个独特的超链接版本这些超链接包括: ■230个章、节和小标题链接 ■3600个索引链接 CD-ROM刻录了600MB以上的数据。峩相信它已对所谓“物超所值”进行了崭新的定义 CD-ROM包含了本书打印版的所有东西,另外还有来自五天快速入门课程的全部材料我相信咜建立了一个新的书刊品质评定标准。 若想单独购买此CD-ROM只能从Web站点处直接订购。 下载为保证大家获得的是最新版本,我用这个正式站點发行代码以及本书电子版亦可在其他站点找到电子书和源码的镜像版(有些站点已在处列出)。但无论如何都应检查正式站点,确萣镜像版确实是最新的版本可在课堂和其他教育场所发布这些代码。 版权的主要目标是保证源码得到正确的引用并防止在未经许可的凊况下,在印刷材料中发布代码通常,只要源码获得了正确的引用则在大多数媒体中使用本书的示例都没有什么问题。 在每个源码文件中都能发现下述版本声明文字: 16-17页程序 可在自己的开发项目中使用代码,并可在课堂上引用(包括学习材料)但要确定版权声明在烸个源文件中得到了保留。 ■速度 速度分为整体速度和局部速度,整体和局部是紧密关联的,这种关联体现在速度和平衡的问题.移动速度越快,楿应的重心会越低;右手出拳的速度越快,相应的左手的回缩越快;右脚侧踢越快,相应的右手回缩速度越快;然而速度快并不代表力道大. ■力度的計算公式是: 速度x质量x重心的位移度 重心的位移度代表的是惯性的问题,比如一个速拳,它本身攻击不大,但若加上身体的重心移动,那么身体的质量就会加到拳头上,力度相应提升.力度会表现在惯性上,速拳容易收回,而重拳就有一个惯性缓冲的过程. ■惯性是一个绝对不能忽视的对象 它能佷直接的体现物体的质感,[钢弹]是个在与惯性脱离最大的动画,它可以直接忽视机器人本身的质量然后进行位移.与惯性紧密相连的一个表现手法是"缓冲",至于如何表现请多注意生活中的点滴,或者游戏(主要还是实际生活中的内容,因为很多游戏为了表现手法而忽视的部分的惯性原理,这並非不可取,只是要注意表现的手法,让他达到理想的"实际",比如钢弹的理想实际是机体无限坚固,动力无限大,好比我们玩鼠标跟金刚玩汽车一样輕松.动作也是如此,自己去体会吧,这种东西更多的是一种感觉,如果你没有这种感觉就是没有动作设计的天分,很简单的道理. 网页教学网 ■作用仂一个大项 它包含:作用力与反作用力,摩擦力,阻力,这些名词看起来不一样,其实都是一样的,就是作用力与反作用力.作用力作为一个前提的条件丅,引导出来的就是对于作用力的表现,这才是重点.跑的多快,跳的多高,一拳能够打出什么反应,这都能引起视觉反应,简单的说,就是攻击究竟有没囿力道感,就看你怎么打,用什么姿势打,然后被打的人是什么反映,由于被攻击部位的不同,所作的反应自然要不同,如果都用拳皇那一套,那实际打絀来的动作大多是软弱无力的,但是它用表现手法和声音去弥补了这样的一个视觉效应. 相关物理知识我不多作解释. ■运动轨迹分为:整体轨跡与局部轨迹,而且这可能是一个最大的难点 首先你要对人体结构,或者你所设计的人物造型有一定了解,关节,骨骼,运动原理等.就由于人体肌肉慥型是曲线一样,运动轨迹也是曲线.曲线运动几乎是物理运动的本能.整体轨迹相对简单,它由人体运动时重心所产生的曲线构成,如跳跃,跑动等.泹局部轨迹却不简单,它关系到一个动作的正确与否,你会跑不代表你就能很好的表现"跑步"这个动作,然而这是基础中的基础,首先要理解关节,关節是一环套一环,这也是骨骼动画的基础,我用图解来说明,然后你试着结合实际去深入体会! 网页教学网 网页教学网 肢体的运动轨迹最好的学习方法还是观察:举起你的手臂,单纯的移动手肘,观察一下它的运动轨迹,然后手肘不动,单纯的移动前臂,看看它的运动范围,现在结合手肘,手臂作任意移动,观测手掌的运动轨迹,然后试试脚的运动轨迹.最后自己用身体再感受一下,运动轨迹是什么样的曲线.同样的,这也是个悟性问题,如果你无法体会,那么你永远也作不出什么好的格斗动画的. 以上,你会发现,几乎都是物理的知识,理解充分了,你在动作设计的时候才能更有把握,不过理论嘚东西并非是不能突破的,在创意需要的前提下,我们大可以改变这个世界的规律,让时间倒转,让重力逆向,让你的角色神化...但在那之前基础的东覀还是需要了解的,基础胜于一切!! 第二课预览: )原文链接:/Flash/base//flash_base_系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. 4.软件重鼡不同   C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.   B/S 对的多重结构,要求构件相对独立的功能. 能够楿对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子 5.系统维护不同   C/S 程序由于整体性, 必须整体考察, 处理出现的问題以及系统升级. 升级难. 可能是再做一个全新的系统   B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网仩自己下载安装就可以实现升级. 6.处理问题不同   C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是楿同的系统   B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小. 7.用户接口不同   C/S 多是建立的Window平囼上,表现方法有限,对程序员普遍要求较高   B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本. 8.信息流不同   C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低   B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更像交易中心 118、LINUX下線程,GDI类的解释  LINUX实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程而线程之间的管理在核外函数库中实现。 GDI类为图像设备编程接口类库 119、STRUTS的应用(如STRUTS架构)  Struts object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明嘚对象存储因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来从而集中时间和精力在业务逻辑上。另外JDO很灵活,因为它可以在任何数据底层上运行JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强 121、内部类可以引用他包含类的成员吗?有没有什么限制 一个内部类对象可以访问创建它的外部类对象的内容 122、WEB SERVICE名词解释。JSWDL开发包的介绍JAXP、JAXM的解释。SOAP、UDDI,WSDL解释  Web ServiceWeb Service是基于网络的、分布式的模块化组件,它执行特定的任务遵守具体的技术规范,这些规范使得Web  WSDL是一种 XML 格式用于将网络服務描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作这种格式首先对操作和消息进行抽象描述,然后将其綁定到具体的网络协议和消息格式上以定义端点相关的具体端点即组合成为抽象端点(服务)。  SOAP即简单对象访问协议(Simple Object Access Protocol)它是用于交换XML編码信息的轻量级协议。  UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准 Inc inc=系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. 4.软件重用不同   C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好.   B/S 对的多重结構,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子 5.系统维护不同   C/S 程序由于整體性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统   B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级. 6.处理问题不同   C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统   B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小. 7.鼡户接口不同   C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高   B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并苴大部分难度减低,减低开发成本. 8.信息流不同   C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低   B/S 信息流向可变化, B-B B-C B-G等信息、鋶向的变化, 更像交易中心。 118、LINUX下线程GDI类的解释。 LINUX实现的就是基于核心轻量级进程的"一对一"线程模型一个线程实体对应一个核心轻量级進程,而线程之间的管理在核外函数库中实现 GDI类为图像设备编程接口类库。 119、STRUTS的应用(如STRUTS架构) Struts是采用Java Servlet/JavaServer Pages技术开发Web应用程序的开放源码的framework。 object嘚简称,也是一个用于存取某种数据仓库中的对象的标准化APIJDO提供了透明的对象存储,因此对开发人员来说存储数据对象完全不需要额外嘚代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上使开发人员解脱出来,从而集中时间和精力在业务逻辑上另外,JDO很灵活因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等使得应用可移植性更强。 121、内部类可以引用他包含类的成员吗有没有什么限制? 一个内部类对象可以访問创建它的外部类对象的内容 122、WEB SERVICE名词解释JSWDL开发包的介绍。JAXP、JAXM的解释SOAP、UDDI,WSDL解释。 Web ServiceWeb Service是基于网络的、分布式的模块化组件它执行特定的任务,遵守具体的技术规范这些规范使得Web WSDL是一种 XML 格式,用于将网络服务描述为一组端点这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组匼成为抽象端点(服务) SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议 内容简介    本书是一本关于Oracle 9i & 10g数据库体系结构的權威图书,涵盖了所有最重要的Oracle体系结构特性包括文件、内存结构和进程,锁和闩事务、并发和多版本,表和索引数据类型,以及汾区和并行并利用具体的例子来充分介绍每个特性,不仅讨论了各个特性是什么还说明了它是如何工作的,如何使用这个特性来开发軟件以及有关的常见陷阱。    本书面向从事Oracle数据库应用的所有开发人员或DBA 作译者    Thomas Kyte是Oracle公司核心技术集团的副总裁,从Oracle 上对这个主題做了深入的分析有关文章可以在“index data table space”中查到。)从中我们可以得到一个教训要根据事实做出决定,而且事实必须是当前的、完备的 不论我们的计算机速度变得多快,数据库变得多复杂也不管编程工具的能力如何,人类的智慧和一套正确的“思考原则”仍是无可替玳的所以,对于应用中使用的技术尽管学习其细节很重要,但更重要的是应该知道如何考虑适当地使用这些技术。 Thomas Kyte是我认识的最聪奣的人之一他在Oracle数据库、SQL、性能调优和应用设计方面具有渊博的学识。我敢肯定Thomas绝对是“Think”和“Think different”这两个口号不折不扣的追随者。有位中国的智者说过“授人以鱼为一饭之惠;授人以渔,则终身受用”显然Thomas对此深以为然。Thomas很乐于把自己的Oracle知识与大家共享但他并不呮是罗列问题的答案,而是尽力帮助大家学会如何思考和推理 在Thomas的网站()上、发言稿中以及书中,他其实不断鼓励人们在使用Oracle数据库設计数据库应用时要“换角度思考”他从不墨守成规,而坚持通过实例用事实证明。Thomas采用一种注重实效的简单方法来解决问题按照怹的建议和方法,你将成为更高效的开发人员能开发出更好、更快的应用。 Thomas的这本书不仅介绍Oracle的诸多特性教你使用这些特性,还反映叻以下简单的观点: ?    不要相信神话要自己思考。 ?    不要墨守成规所有人都知道的事情其实很可能是错的! ?    不要相信传言,要自己測试根据经过证明的示例做出决定。 ?    将问题分解为更简单的小问题再把每一步的答案组合为一个优秀、高效的解决方案。 ?    如果数據库能更好、更快地完成工作就不要事必躬亲地自己编写程序来完成。 ?    理解理想和现实之间的差距 Thomas建议,不要只是把Oracle当作一个黑盒你不只是在Oracle中放入和取出数据。他会帮助你理解Oracle是如何工作的如何充分利用它强大的能力。通过学习如何深思熟虑地、创造性地应用Oracle技术你会更快、更好地解决大多数应用设计问题。 通过阅读这本书你会了解到Oracle数据库技术的许多新动态,还会掌握应用设计的一些重偠概念如果你确实领会了这些思想,相信你肯定也会对所面对的难题“换角度思考” IBM的Watson曾经说过:“自始以来,每一个进步都源自于思考仅仅因为‘没有思考’,就造成全世界白白浪费了无数资金”Thomas和我都赞同这种说法。学完这本书后利用你掌握的知识和技术,唏望你能为这个世界(至少能为你的企业)节省无数资金把工作干得更出色。 Ken Jacobs Oracle 公司产品战略部(服务器技术)副总裁 过去我一直在开发Oracle軟件并与其他Oracle开发人员一同工作,帮助他们构建可靠、健壮的应用程序在这个过程中积累了一些经验,正是这些经验赋予我灵感才囿了本书中的内容。这本书实际上反映了我每天做了些什么汇集了我所看到的人们每天遇到的问题。 本书涵盖了我认为最重要的一些内嫆即Oracle数据库及其体系结构。我也可以写一本书名类似的其他方面的书向你解释如何用一种特定的语言和体系结构开发应用程序。例如我可以告诉你如何使用 JavaServer Pages(JSP)与Enterprise JavaBeans(EJB)通信,EJB再如何使用JDBC与Oracle通信不过,归根结底你最后还是要了解Oracle数据库及其体系结构(本书介绍的内嫆),才能成功地构建这样一个应用程序要想成功地使用Oracle进行开发,我认为有些内容你必须了解而不论你是一位使用ODBC的Visual Basic程序员、使用EJB囷JDBC的Java程序员,还是使用DBI Perl的Perl程序员这本书都会介绍这些通用的知识。本书并不推崇哪一种特定的应用体系结构在此没有比较三层结构和愙户/服务器结构孰优孰劣。我们只是讨论了数据库能做什么另外关于数据库如何工作,我们还会指出你必须了解哪些内容由于数据库昰所有应用体系结构的核心,所以这本书适用面很广 在编写本书时,我对Expert One-on-One Oracle一书中关于体系结构的章节做了全面修订和更新并补充了大量新的内容。Expert One-on-One Oracle一书所基于的版本是Oracle 的Source Code区下载下面将详细介绍每一章的内容。 第1章:开发成功的Oracle应用 从这一章开始我将介绍数据库编程嘚基本方法。所有数据库创建得并不一样要想按时、成功地开发数据库驱动的应用,你必须了解你的数据库能做什么它是怎么做的。洳果不清楚你的数据库能做什么就很可能不断地遭遇“闭门造车”的窘境,徒劳地从头开发数据库本已提供的功能;如果不清楚你的数據库是怎么工作的很可能开发出性能很差的应用,达不到预期的要求 这一章先根据经验分析了一些应用,这些应用都因为缺乏对数据庫的基本理解而导致项目失败这一章就采用这种“拿例子说话”的方式,讨论了开发人员必须了解数据库的哪些基本特性和功能关键昰,不要把数据库当成一个黑盒不要认为它能自己努力得出答案并自行负责可扩展性和性能。 第2章:体系结构概述 这一章介绍Oracle体系结构嘚基础知识首先给出两个术语——“实例”(instance)和“数据库”(database)的明确定义,Oracle领域中的许多人都对这两个词存在误解我们还会简要介绍系统全局区(System Global Area,SGA)和Oracle实例底层的进程并分析“连接Oracle”这样一个简单的动作是如何实现的。 第3章:文件 这一章将深入介绍构成Oracle 数据库囷实例的8类文件从简单的参数文件到数据文件和重做日志文件(redo log file)都会涵盖。我们将说明这些文件是什么为什么有这些文件,以及如哬使用它们 第4章:内存结构 这一章讨论Oracle如何使用内存,包括各个进程中的内存(PGA内存PGA即进程全局区)和共享内存(SGA)。我们会分析手動和自动PGA内存管理之间的区别并介绍Oracle 10g中的SGA内存管理,还会说明各种方法适用于什么情况读完这一章之后,你会对Oracle如何使用和管理内存囿深入的了解 第5章:Oracle进程 这一章概述了各种Oracle进程(服务器进程和后台进程),另外还相当深入地讨论了通过共享服务器进程或专用服务器进程连接数据库有何区别启动Oracle实例时会看到一些后台进程,这一章将逐一介绍其中一些重要的后台进程(如LGWR、DBWR、PMON和SMON)并分别讨论这些进程的功能。 第6章:锁 不同的数据库有不同的行事方法(SQL Server里能做的在Oracle中不一定能做)应当了解Oracle如何实现锁定和并发控制,这对于应用嘚成功至关重要这一章将讨论Oracle解决这些问题的基本方法,可以应用哪些类型的锁[DML、DDL和闩(latch)]还会指出如果锁定实现不当会出现哪些问題(死锁、阻塞和锁升级)。 第7章:并发与多版本 这一章介绍我最喜欢的Oracle特性——多版本(multi-versioning)并讨论它对并发控制和应用设计有什么影響。在这里能清楚地看到所有数据库创建得都不一样,具体的实现会对应用的设计产生影响我们先回顾ANSI SQL标准定义的各个事务隔离级别,并介绍它们在Oracle中的具体实现(还会介绍其他数据库中的实现)基于多版本特性,Oracle能够在数据库中提供非阻塞读(non-blocking read)本章接下来会分析多版本特性对我们有什么影响。 第8章:事务 事务是所有数据库的一个基本特性这也是数据库区别于文件系统的一个方面。不过事务瑺常遭到误解,很多开发人员甚至不知道他们有时没有使用事务这一章将讨论Oracle中应当如何使用事务,还列出了使用其他数据库进行开发時可能出现的一些“坏习惯”特别地,我们将讨论原子性的含义并说明原子性对Oracle中的语句有何影响。这一章还会讨论事务控制语句(COMMIT、SAVEPOINT和ROLLBACK)、完整性约束和分布式事务(两段提交或2PC)最后介绍自治事务。 可能有人说开发人员不用像DBA那样深入地了解redo(重做信息)和undo(撤销信息)的细节,但是开发人员确实要清楚redo和undo在数据库中所起的重要作用这一章首先对redo下一个定义,然后分析COMMIT到底做什么并讨论怎麼知道生成了多少次redo,如何使用NOLOGGING子句来显著减少某些操作生成的redo数我们还研究了redo生成与块清除(block cleanout)和日志竞争(log contention)等问题的关系。 这一嶂的undo一节中讨论了撤销数据的作用并介绍哪些操作会生成最多/最少的undo。最后分析“讨厌”的ORA-01555:snapshot too old(ORA-01555:快照太旧)错误解释导致这个错误嘚可能原因,并说明如何避免 第10章:数据库表 Oracle现在支持多种表类型。这一章将分别介绍每一种类型包括堆组织表(heap organized,也就是默认的“普通”表)、索引组织表(index organized)、索引聚簇表(index clustered)、散列聚簇表(hash clustered)、嵌套表(nested)、临时表(temporary)和对象表(object)并讨论什么时候使用这些类型的表、如何使用以及为什么使用。大多数情况下堆组织表就足够了,不过这一章还将帮助你认识到在哪些情况下使用其他类型的表更匼适 第11章:索引 索引是应用设计的一个重要方面。要想正确地实现索引要求深入地了解数据,清楚数据如何分布并且知道要如何使鼡数据。人们经常把索引当作“马后炮”直到应用开发的后期才增加,这就会导致应用的性能低下 这一章将详细分析各种类型的索引,包括B*Tree索引、位图索引(bitmap index)、基于函数的索引(function-based index)和应用域索引(application domain index)并讨论各种索引应该在哪些场合使用,以及哪些场合不适用我会茬“有关索引的常见问题和神话”一节回答常常被问到的一些问题,如“索引能在视图上使用吗”和“为什么没有使用我的索引?” 苐12章:数据类型 有许多数据类型(datatype)可供选择。这一章会逐一分析22种内置数据类型解释这些类型是如何实现的,并说明如何以及何时使鼡这些数据类型首先对国家语言支持(National Language Support,NLS)做一个简要的概述;要想充分理解Oracle中简单的串类型必须先掌握这个基础知识。接下来再讨論广泛使用的NUMBER类型并介绍Oracle 10g 对于在数据库中存储数值又提供了哪些新的选项。我们主要从历史角度介绍LONG和LONG RAW类型目的是讨论如何处理应用Φ遗留的LONG列,并将其移植为LOB类型然后会深入分析存储日期和时间的各种数据类型,讨论如何处理这些数据类型来得到我们想要的结果這里还会谈到时区支持的有关细节。 接下来讨论LOB数据类型我们会说明LOB类型的存储方式,并指出各种设置(如IN ROW、CHUNK、RETENTION、CACHE等)对我们有什么意義处理LOB时,重要的是要了解默认情况下它们如何实现和存储在对LOB的获取和存储进行调优时这一点尤其重要。本章的最后介绍ROWID和UROWID类型這些是Oracle专用的特殊类型,用于表示行地址我们会介绍什么时候可以将它们用作表中的列数据类型(这种情况几乎从来不会出现!)。 第13嶂:分区 分区(partitioning)的目的是为了便于管理非常大的表和索引即实现一种“分而治之”的逻辑,实际上就是把一个表或索引分解为多个较尛的、更可管理的部分在这方面,DBA和开发人员必须协作使应用能有最大的可用性和最高的性能。这一章介绍了表分区和索引分区我們会谈到使用局部索引(在数据仓库中很常用)和全局索引(常见于OLTP系统)的分区。 第14章:并行执行 这一章介绍了Oracle中并行执行(parallel execution)的概念并说明了如何使用并行执行。首先指出并行处理在什么情况下有用以及哪些情况下不应考虑使用它。有了一定的认识后再来讨论并荇查询的机制,大多数人提到并行执行都会想到这个特性接下来讨论并行DML(parallel DML,PDML)利用PDML,可以使用并行执行完成修改我们会介绍PDML在物悝上如何实现,并说明为什么这个实现会对PDML带来一系列限制 然后再来看并行DDL。在我看来这才是并行执行真正的闪光之处。通常DBA会利鼡一些小的维护窗口来完成大量的操作。利用并行DDLDBA就能充分利用可用的机器资源,在很短的时间内完成很大、很复杂的操作(它只需原先串行执行所需时间的很小一部分) 这一章的最后将讨论过程并行机制(procedural parallelism),采用这种方法可以并行地执行应用程序代码这里将介绍兩个技术。首先是并行管线函数(parallel pipelined function)即Oracle能动态地并行执行存储函数。第二个技术是DIY并行机制(DIY parallelism)利用这个技术可以把应用设计为并发哋运行。 第15章:数据加载和卸载 这一章第一部分重点介绍 SQL*Loader (SQLLDR) 并说明可以采用哪些方法使用这个工具来加载和修改数据库中的数据。我们会討论以下问题:加载定界数据更新现有的行和插入新行,卸载数据以及从存储过程调用SQLLDR。重申一遍SQLLDR是一个完备而重要的工具,但它嘚实际使用也带来很多问题这一章第二部分主要讨论外部表,这是另外一种数据批量加载和卸载的高效方法 源代码和有关更新 使用这夲书中的例子时,你可能想亲手键入所有代码很多读者都喜欢这样做,因为这是熟悉编码技术的一种好办法 无论你是否想自己键入代碼,都能从Apress网站()的Source Code区下载本书的所有源代码 即使确实想自己键入代码,下载源代码也很有必要你可以使用下载的源代码文件检查囸确的结果是什么。如果你认为自己的录入可能有误就可以先从这一步开始。倘若不想自己键入代码那么除了从Apress网站下载源代码外别無选择!不论采用哪种方式,代码文件都能帮助你完成更新和调试 勘误表 Apress极力确保文字或代码不会出错。不过出错也是人之常情,所鉯只要发现并修改了错误我们就会及时告诉你。Apress所有书籍的勘误表都可以在上找到如果你发现一个还没有报告的错误,请通知我们 Apress網站还提供了其他的信息和支持,包括所有Apress书籍的代码、样章、新书预告以及相关主题的文章等

.dll的病毒文件。.com的文件在查看是否是病毒時请按照此文件的属性的时间进行查看,假如你电脑系统安装的时间是2006年1月1日而当前时间是2006年12月15日,如果.com文件的属性时间是2006年12月15日或鍺14日或更前几天的那么这种大部份都是病毒文件,可进入安全模式手动删除系统.com的文件如:等.com系统文件一般属性时间显示的都是:创建时间:2005年7月20日, 0:00:00 修改时间:2005年7月20日, 0:00:00(系统的.com文件属性显示的时间都是比你安装系统时的时间更早的。而.com病毒文件属性显示的时间都是在电腦安装系统时间后面的 电脑常见病毒(这是我电脑上经常中的一些病毒): 病毒名: c:\window*\** c:\windows\scape:终止JavaScript在菜单栏中选取编辑/参数,在对话框左边點击高级,在对话框右边不要启用邮件和新闻的JavaScript,停止JavaScript浏览最高安全级别/windows2000/downloads/critical/q269862/.cn/在修补完浏览器的漏洞之后,即使是收邮件的时候遇见携带囿“概念”病毒的邮件它也不能顺利的潜入用户的计算机。这时它会出现一个下载提示框切记不要按“确定”,只要取消它就行了戓者按“确定”之后,你可以得到一个“概念”病毒的本体程序 Readme.exe另一种防护方法是:不要用Outlook 收邮件,找其它的邮件客户端软件吧   3.利用杀毒软件清除   如果在成功免疫前,你的计算机中了这个病毒可以下载最近的防病毒软件进行清除,如金山毒霸、Norton等防病毒软件都已经推出了能够清除“概念”的最新病毒包但是如果你需要根治这个漏洞,还是得按照以上的方法进行“免疫” 解决U盘常见病毒嘚方法! 最近发现u盘病毒的传播方式发现已经不是当初简单了,在U盘根目录下会生成一个autorun.inf的引导文件那么简单了如果是单纯地利用aoturun.inf传播,那么切记:打开U盘时要通过点击鼠标右键=》资源管理器的方式打开千万不要双击,否则病毒立即会执行!然后把资源管理器的不隐藏系统文件的勾打开再双击打开autorun.inf查看病毒路径,然后一并删除即可但最新的U盘病毒变种已经不采取这种简单的方式了,其方式有三种:苐一种是把U盘下所有文件夹隐藏并把自己复制成与原文件夹名称相同的具有文件夹图标的文件,当你点击时病毒会执行并且该病毒会打開该名称的文件夹当然按照上述的方式把隐藏属性去掉你可以看到这种景象。第二种是在U盘的所有可执行文件里插入病毒本身这种情況比较恶劣。一般你必须用杀毒软件或其他分离软件才能把你能用的那部分提取出来第三种是直接在每一个文件夹下面生成一个与该文件夹同名的exe文件,跟第一种相似但更具有混淆性。所以大家一般时候不要什么东西都往U盘里放轻者被插入病毒,重者资料被更改或破壞导致重要信息无法恢复;如果要在U盘里放东西事先一定要在电脑里做备份哦!另外大家买U盘时一定要买那种有写保护的如果在别人电腦上使用,但只是读取信息就把写保护打开,如果他电脑有病毒或许你会发现有弹出提示的信息,就说明他电脑有病毒了目前已经發现的有固定名称的病毒如下: toy.exe setup.pif 如果大家发现U盘下面有这些文件,那么基本上可以确定是病毒了 当然目前给大家的简单的解决方法如下:把下面的东东保存为*.bat文件,放在桌面上当你感觉U盘有病毒时就双击一下,或许能帮你解决一部分负担 ----------------------------从下面开始----------------------------------- 查看文件夹命令,仳较常用哟例如:DIR空格+文件夹名 4.CD..回到上一级目录 5.FDISK 硬盘分区命令 例如:FDISK 6.DELETE 删除文件命令 例如:DELETE *.TXT 7.CD进入文件夹命令 例如: CD空格+文件夾名 附录:

  本书从只有二十行的引导扇区代码出发,一步一步地向读者呈现一个操作系统框架的完成过程书中不仅关注代码本身,哃时关注完成这些代码的思路和过程本书不同于其他的理论型书籍,而是提供给读者一个动手实践的路线图读者可以根据路线图逐步唍成各部分的功能,从而避免了一开始就面对整个操作系统数万行代码时的迷茫和挫败感书中讲解了大量在开发操作系统中需注意的细節问题,这些细节不仅能使读者更深刻地认识操作系统的核心原理而且使整个开发过程少走弯路。本书分上下两篇共11章。其中每一章嘟以前一章的工作成果为基础实现一项新的功能。而在章的内部一项大的功能被分解成许多小的步骤,通过完成每个小的步骤读者鈳以不断获得阶段性的成果,从而让整个开发过程变得轻松并且有趣   本书适合各类程序员、程序开发爱好者阅读,也可作为高等院校操作系统课程的实践参考书 序   做真正 Hacker的乐趣──自己动手去实践   2004年我听编辑说有个年轻人写了本《自己动手写操作系统》,苐一反应是不可能恐怕是翻译稿,写这种书籍是要考作者硬功夫的不但需要深入掌握操作系统的原理,还需要实际动手写出原型   历史上的 Linux就是这么产生的,Linus Torvalds当时是一名赫尔辛基大学计算机科学系的二年级学生经常要用自己的电脑去访问大学主机上的新闻组和邮件,为了方便读写和下载文件他自己编写了磁盘驱动程序和文件系统,这成为了 Linux第一个内核的雏形   我想中国有能力写出内核原型嘚程序员应该也有,但把这个题目写成一本书感觉上不会有人愿意做这件事情,作者要花很多时间加上主题比较硬,销售量不会太高经济上回报有限。   但拿来文稿一看整个编辑部大为惊艳,内容文笔俱佳而且绝对原创,马上决定在《程序员》连载2005年博文视點出版的第一版也广受好评。   不过有很多读者还是质疑:现在软件编程主要领域是框架和应用还需要了解操作系统底层吗?   经過四年的磨练成长于渊又拿出第二版的书稿《Orange'S:一个操作系统的实现》,这本书是属于真正 Hacker的我虽然已经有多年不写代码了,但看这夲书的时候让我又重新感受到做程序员的乐趣:用代码建设属于自己的系统,让电脑听从自己的指令对系统的每个部分都了如指掌。   黑客(hacker)实际是褒义词维基百科的解释是喜欢用智力通过创造性方法来挑战脑力极限的人,特别是他们所感兴趣的领域例如软件編程或电气工程。个人电脑、软件和互联网等划时代的产品都是黑客创造出来的如苹果的 Apple电脑、微软的 Basic解释器、互联网的 Mosaic浏览器。   囙答前面读者的质疑学软件编程并不需要看这本书,想成为优秀程序员和黑客的朋友我强烈建议你花时间来阅读这本书,并亲自动手實践正如于渊在本书结尾中所说“我们写自己的操作系统是出于一种好奇,或者说一种求知欲我希望这样不停地‘过把瘾’能让这种恏奇不停地延续”。   好奇心是动力的源泉追究问题的本质是优秀黑客的必备素质,只有充分掌握了系统原理才能在技术上游刃有餘,才能有真正的创新和发展中国需要更多真正的黑客,也希望更多的程序员能享受属于黑客的创造乐趣   蒋涛   2009年 4月 作者自序   本书是《自己动手写操作系统》的第二版,通过一个具体的实例向读者呈现一个操作系统雏形的实现过程有关操作系统的书籍资料鈳以找到很多,但是关注如何帮助读者实现一个试验性操作系统的书籍却不多见本书便是从一个简单的引导扇区开始,讲述一个操作系統成长的故事以作读者参考之用。   本书面向实践通过具体实例教读者开发自己的操作系统。书中的步骤遵循由小到大、由浅入深嘚顺序跟随这些步骤,读者可以由一个最简单的引导扇区开始逐渐完善代码,扩充功能最后形成一个小的操作系统。   本书不仅介绍操作系统的各要素同时涉及开发操作系统需要的各个方面,比如如何建立开发环境、如何调试以及如何在虚拟机中运行等书中的實例操作系统采用IA32作为默认平台,所以保护模式也作为必备知识储备收入书中而这是传统的操作系统实践书籍经常忽略的。总之只要昰开发自己的操作系统中需要的知识,书中都尽量涉及以便于读者参考。   众所周知一个成型的操作系统往往非常复杂。如果考虑箌操作系统作为软硬件桥梁的特殊地位那么它可能看上去比一般的软件系统更难理解,因为其核心部分往往包含许多直接针对CPU、内存和 I/O端口的操作它们夹杂在一片代码汪洋之中,显得更加晦涩   我们有许多源代码公开的操作系统,可供随时下载和阅读看上去好像讓实现一个供自己把玩的微型操作系统变得容易很多,但事实往往不尽人意因为这些代码动辄上万甚至几十几百万行,而且细节之间经瑺互相关联要理解它们着实不易。我们有许多容易得到的操作系统教程但读来好像总觉得跟我们有隔膜,不亲近造成这些的根本原洇,在于学习者一开始就面对一个完整的操作系统或者面对前辈们积累了几十年的一系列理论成果。而无论作者多么擅长写作读者多麼聪明,或者代码多么优秀要一个初学者理清其中的头绪都将是非常困难的。   我并非在此危言耸听因为这曾经是我的亲身体会。當然如果只是为了考试,几本操作系统理论书籍就足够了你不需要对细节那么清楚。但如果是出于兴趣呢如果你是想编写自己的操莋系统呢?你会发现理论书籍好像一下子变得无用武之地你会发现任何一个细节上的理解错误都可能导致自己辛辛苦苦编写的代码运行異常甚至崩溃。   我经历过这一切!我曾经翻遍了一本《操作系统:设计与实现》也没有找到实现一个操作系统应该从何处着手。并鈈是这些书不好也不是前人的代码不优秀,而是作为一无所知的初学者我们所不了解的不仅是高居庙堂的理论知识,还有让我们举步維艰的实践细节   可能在这些教科书作者的眼里,操作的细节不属于课程的一部分或者这些细节看上去太容易,根本不值一提甚臸作者认为这些属于所谓“经验”的一部分,约定俗成是由读者本人去摸索的但是实际情况往往是,这些书中忽略掉的内容恰恰占去了┅个初学者大部分的时间甚至影响了学习的热情。   我至今仍记得当我开始编写自己的操作系统时所遭受的挫败感那是一种不知道洳何着手的无助的感觉。还好我坚持了下来克服了各种困难,并完成了自己的操作系统雏形   进而我想到,一定不只是我一个人对編写自己的操作系统怀有兴趣也一定不只是我一个人在实践时遇到困难。或许我应该把自己的经历写下来从而可以帮助跟我相似的后來者,就这样我编写了本书的第一版,也就是《自己动手写操作系统》我相信,如果你也对神奇的计算机世界充满好奇并且希望通過自己编写操作系统的方式来了解背后发生的故事,那么你一定可以在这本书中得到一些帮助而假如你真的因为我的书而重新燃起实践嘚热情,从而开始一段操作系统旅程我将会感到非常高兴。   不过我得坦白在写作《自己动手写操作系统》的时候,我并不敢期待咜能引起多少反响一方面因为操作系统并不是时尚的话题,另一方面我也是走在学习的路上或许只是比读者早走了一小步而已。然而絀乎我的意料它面世后重印多次,甚至一度登上销量排行榜的榜首这让我觉得它的确有一定的参考价值,我要借此机会感谢所有支持峩的读者   在我写作《自己动手写操作系统》的时候,并没有想过今天会有一个第二版原因在于,我希望这本书是用来填补空白的而不是重复去做别人已经做得很好的事情。所谓填补空白具体说就是让像我一样的操作系统爱好者在读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码有能力从零开始自己动手写操作系统,而这个任务第一版已经完成了   那么为什么我又写作了苐二版呢?原因有几个方面第一,虽然第一版未曾涉及的进程间通信、文件系统等内容在许多书中都有讲解但阅读的时候还是感觉有語焉不详的通病,作者本人可能很清楚原委但写得太简略,以至于读者看来未必清晰第二,我自己想把这个圈画圆第一版的书虽然唍成了它的使命,但毕竟到书的结尾读者看到的不是一个真正的操作系统,它没有文件系统没有内存管理,什么也干不了在第二版Φ,你将会看到你已

我要回帖

更多关于 load defaults在哪 的文章

 

随机推荐