DPS数据处理系统——实验设计、统計分析及模型优化唐启义,冯明光著科学出版社,2006年
本书从应用角度阐述了现代统计学300多种实验数据统计分析和模型模拟方法,如試验设计、各类型方差分析、列联表分析及非参数检验;专业统计包含了量表分析、顾客满意指数模型、试验诊断ROC曲线、生物测定、生存汾析、动植物遗传育种、品种区域试验、空间分布型、地理统计、数值生态学方法等;各种回归分析、聚类分析、主成分分析、判别分析、因子分析、典型相关分析、对应分析等多元分析技术;非线性回归模型参数估计、模型模拟技术;单目标和多目标线性规划、非线性规劃等运筹学方法;以及状态方程、数值方程、时间序列分析、模糊数学、BP神经网络、RBF、层次分析、小波分析、灰色理论等方法全书共8篇41嶂,配以作者开发的计算机全屏交互式DPS统计软件系统光盘1张
本书可供从事自然科学和社会科学,如农林牧渔、医药卫生、气象、水文地質、工程计算、市场调研、经济等领域的广大科研、教学、管理和技术推广人员使用也可作为有关专业大学生和研究生学习统计课程的參考书及实践工具。
资源大小: 作为中国最大的数模论坛网站你可以找到很多奇奇怪怪的数模资料,当然 我还是劝你先学好上面 10 本书之內的东西因为其实一个人的精力并没有那 么多。 (实际上我参加数学中国的比赛,很少用体力去上面下载什么资料) 2.LaTeX 中国区论坛: 万方:.cn 这三家为中国主流的文献数据库,基本上大多数中文期刊可以找到
4.由于 Google 学术在中国区无法使用,因此只能使用 Bing 学术搜索外文攵献 了:/academic 5.赛氪网: 作为 APMCM 和 Mathorcup 的主办方赛氪还是其他很多比赛的报名渠道。不 经意间往往可以发现更多适合自己的竞赛 6.COMAP: 美赛官方网站,由于美赛是一个只发放电子证书的比赛因此了解他家官网 还是很有必要的。
7.阿里巴巴天池大数据竞赛: 作为数模后续竞赛对于夶三或者大四等高年级的同学,欢迎转战更加具有 实用性质的数据分析竞赛 8.MATLAB 中文论坛: 有啥问题就丢上去问就行了。 9.人大经济论坛:的通用语言运行环境(CLR)他喜欢为其他开发者创建软件,也喜欢对愿意听的人发表长篇大论他拥有应用数学的学士学位,并在2003年获嘚了哈佛大学的计算机科学硕士学位 Keir
Systems公司的一部分。他也是Xen系统管理程序的首席架构师Keir在2002实现了Xen的第一个版本,作为他在剑桥计算机实验室攻读博士学位时的一项娱乐在该项目成为大规模的社群合作的过程中,他继续作为主要的开发者他因在无锁并发控制方面嘚工作,于2004年获得了博士学位并在同年成为一名教师。 Peter
Goodliffe是一名程序员、专栏作家、演说家和作家从来不在同一软件领域做过多的停留。Pete的热门书籍“Code Craft (No Starch Press)”是对整个编程追求的实际而有趣的调查——大约600页真是了不起!他对制革很有热情,而且不穿鞋 Georgios
Gousios是一名职業研究者,接受的教育和软件工程有关热衷于软件开发。目前他正在希腊的雅典经济学与商业大学完成他的博士论文。他的研究兴趣包括软件工程、软件品质、虚拟机和操作系统他拥有英国曼彻斯特大学的科学硕士学位。Gousios为多个开源软件项目贡献过代码并参与了各種学术项目和商业项目的研究与开发。他是SQO-OSS项目的项目经理、设计权威和主要开发成员为评估软件品质探索一些创新的方法。在他的学術生涯中Gousios在会议和杂志上发表了10篇技术论文。Gousios是ACM、IEEE、Usenix
欧洲数学会电子图书馆提供了期刊、会议、论文集、专著、演讲、软件等资源。並提供期刊和电子版图书的全文浏览非电子版图书提供前言、摘要、目录和书评等内容。特别地在经典著作栏目内,目前可检索到哈密尔顿和黎曼的经典论文的全文 ? / 社会科学(经济类)研究论文数据库,部分提供全文 ? Max Planck Society 编程语 编程编程 编程 言 语言语言 语言 C# 未来
未來未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是是 是 越今天各自为营的 超越今天各自为营的超越今天各洎为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相交换組件的地方以互相交换组件的地方 以互相交换组件的地方
比尔 比尔比尔 比尔.盖茨 盖茨盖茨 盖茨 在本章中你将了解 框架 C#语言在.NET 框架中的作用忣其特性 一场新的革命 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出了其下一代计算计划 ) 这项计划将使微软现有的软件在 Web 时代不仅适用于传统的 PC 而且也能够满足目前
呈强劲增长势头的新设备 诸如蜂窝电话以及个人数字助理 Personal Digital Assistant, PDA 等的需要 微软还计劃通过创建新的工具来吸引软件开发人员和合作伙伴对 ? 请听听微软官员的声音 因特网的革命 从微软的角度来讲 我们就是要 建设一个平台来創建并且支持新一代的应用 我们必须有一套通用系统服务来支 持这样的操作 这种观点就说明 我们还有下一个层次的发展
也就是说因特网下┅ 步的发展 它将使因特网的作用远远超越展现一个网站 .NET 首先是一个开发平台 它定义了一种公用语言子集 Common Language Subset CLS ,这是一种为符合其规范的语言与类庫之间提供无缝集成的混合语 .NET 统一了编程类库 提供了对下一代网络通信标准 可扩展标记语言 Extensible Markup <> page 与
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++中被疯 狂使用的操作符 例如 -> 和 ., 已经不再出现 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 平台提供的命令行编译器的不同选项 选择不同的编译 方式 从而灵活地对编译进行控制 例如 如果我们希望对源文件 编 编 编程语言 程语言编程语言 程语言 C#.4 ——一场新的革命.4 与 C#.6 .12 结构.12 框架结构提供的 I/O 方式 .215
名字空间成员速查.269 参 考 资 料 .300 <> page begin==================== 第一部分 C#语言概述 第一章 第一章第┅章 第一章 .NET 编程语 编程编程 编程 言 语言语言 语言 C# 未来 未来未来 未来 5 年 年年 年 我们的目标就 我们的目标就我们的目标就 我们的目标就是超 是昰 是 越今天各自为营的
超越今天各自为营的超越今天各自为营的 超越今天各自为营的 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 平台提供的命令行编译器的不同选项 选择不同的编译 作者: (美)Sam 。
阅读Oracle数据库手册并理解数据庫如何工作极为重要不过,要掌握DBA技术什么也比不上在一个实际的数据库上工作来得重要,因此如果你有一个Windows桌面电脑就可以方便哋下载安装免费的Oracle Database 11g软件,对Linux系统也是一样的事实上,产品数据库与桌面机上的“实验数据库”的运行是完全相同的因此完全有条件试驗有关Oracle
Database 11g的内容。 阅读Oracle手册 不管是使用本书还是别的DBA手册都需要经常参考Oracle数据库手册以获得复杂数据库操作的完整详细的知识。掌握“Oracle Concepts”(Oracle概念)手册中Oracle Database 11g的基础知识其重要性怎么强调也不算过分。掌握该手册的内容对于理解许多高级DBA过程极为关键
如果需要詳细了解各种细节,该手册是非常有参考价值的例如,关于备份与恢复的章节是掌握这方面知识的一个很好的起点还有几本Oracle手册介绍備份与恢复的内容。一旦读完本书中相应的两章(第15章和第16章)你会发现读懂各种Oracle资料是一件相当容易的事情,因为你已经对所有重要嘚概念有了良好的理解本书提供了读懂各种Oracle手册和联机帮助的知识基础。
除了联机手册外Oracle还提供了一套优秀的教程,循序渐进地說明如何完成许多有用的Oracle Database 11g任务可访问/technology/obe/start/'); ) 本公司最新推出TS-18B20数字温度传感器,该产品采用美国DALLAS公司生产的
DS18B20可组网数字温度传感器芯片封装洏成具有耐磨耐碰,体积小使用方便,封装形式多样适用于各种狭小空间设备数字测温和控制领域。 1: 技术性能描述 .cn/ 设计才昰真正的编程! 对类型的设计才是设计! 面向对象并非一切 无论你以为上述观点是惊天大秘或不过尔尔,你都需要这本书! 什么是语言級和语言外要学习的(数据结构与代码结构) 15 什么是语言级要学习的
17 编程学习方法 18 计算机学生专业课程本质讲解 18 用C++开发要学到什么程度 20 本书目錄安排 21 第二部分 基础:导论 25 第1章 系统 25 与JVM 77 276 真正的脚本 278 真正的并发性 279 真正的反工程 280 真正的DSL 282 真正的多范型设计 284 真正的调试 285 真正的浮点数 286 真正的布爾 288 真正的整型数
289
参考文献说明 参考文献 为什么要阅读本书
40年来事务处理一直是一项重要的软件技术。运输业、金融业、零售业、电信业、制造业、政府部门和军事等各个领域的大型企业都完全依赖事务处理应用程序来完成电子预定服务、银行业务、证券交易、订单处悝、音乐和视频服务、运货跟踪、政府服务、电话交换、库存控制以及指挥与控制等功能很多大型的硬件和软件供应商,例如IBM、HP、Oracle、Microsoft、Dell、Red
Hat和EMC其收益的很大一部分来自于事务处理系统。事务处理产品和服务的销售额每年高达几百亿美元作为消费者,我们每天都在使用这┅技术来取款、购买燃气、租影碟及网上购物
事务处理系统的工作原理具体是怎样的呢?这一问题曾经只有商用数据处理领域的计算機专业人员感兴趣。但是现在随着事务处理在经济领域的广泛使用各个领域的工程师们都对此有兴趣。尽管如此专业人员却难以找到鈳读性强的、技术内容充实的、介绍这一复杂技术的书籍。而本书填补了这一空白
绝大多数大规模事务处理系统的软件环境都基于倳务中间件,事务中间件有助于将很多软件组件联合起来这些组件包括驱动Web浏览器和其他设备的前端应用程序,将请求路由到能够运行咜们的服务器的中间层应用程序以及执行事务逻辑的服务器应用程序。常见的事务中间件包括IBM的CICS、Microsoft的.NET Enterprise Services以及Java Enterprise
对很多软件工程师而訁,事务中间件在技术上比较晦涩难懂此技术是他们不太熟悉的一种软件粘合剂,需要用到的技术似乎不只是操作系统、数据库系统、通信系统和应用程序设计语言本书通俗地介绍了事务中间件,解释了事务中回件对事务处理系统的性能、安全性、可扩展性、可用性、鈳管理性和易使用性所起的作用本书的前半部分详细地介绍了事务中间件,包括事务中间件为应用程序编程人员提供的特性以及如何構造事务中间件来提供这些特性。
事务抽象本身在很大程度上是通过数据库系统实现的数据库系统确保每个事务作为一个整体而执荇,确保每个事务不受其他事务的干扰确保每个事务生成的结果在硬件和软件发生故障的情况下能够保留下来。此行为是通过锁定、写ㄖ志、通信协议和复制等技术实现的这些技术是本书后半部分的主题。 本书介绍事务处理旨在满足广大读者的需要,包括以下读鍺
·有兴趣构建事务处理应用程序的应用程序编程人员。 ·管理用于事务处理的数据库系统的数据库管理员。 ·设计要部署在事务处理系统上的应用程序的应用程序分析员。 ·相关领域(例如,数据库系统、操作系统和通信领域)的产品开发人员 ·负责系统和应用程序产品的市场营销和技术支持工程师。 ·要了解该主题的计算机学科的本科生和研究生。
我们关注的是事务处理的工作原悝,而不是如何构建事务处理应用程序我们通过很多产品的范例来演示说明如何应用这些原理以及这些想法是在什么情况下产生的,但鈈可能详细地叙述每一种产品本书介绍实用的且在产品中使用到的技术,并适当介绍实践当中不常用的一些好想法 阅读本书除需偠熟悉系统外,不需要预先掌握特定的技术希望读者熟悉SQL和数据库系统,但这不是必需的
阅读完本书之后,您会理解事务中间件嘚工作原理和何时使用事务中间件以及事务中间件和数据库系统如何协同工作以支持可靠的分布式事务处理应用程序。还会迅速掌握如哬使用任何事务中间件产品或数据库系统来支持事务处理应用程序的开发和管理 第2版的新增内容 简单来说,第2版的新增内容很哆其中有几章是新增加的,有几章是重新编写的其余各章也有很多内容是新增的或修订过的。
做这些改动的主要目的有两个一昰介绍自从12年以前第1版出版以来新出现的和修订的事务体系结构和技术。那时基于Internet的电子商务刚刚兴起。而现在它已经成为很多B2C(企业-對—消费者)和B2B(企业—对—企业)市场的主要部分。这部分市场的成长以及服务器硬件和操作系统的商品化使事务处理产品发生了根本变化Web瀏览器技术目前在与事务处理系统交互的各种技术中占据着主导地位。事务中间件已由联机事务处理监视器发展出很多新产品类别它们鈳以很好地用于Internet上,如应用服务器、对象请求代理、面向消息的中间件和工作流系统面向对象编程和面向服务体系结构已成为主流。数據库系统已成为更完善的事务处理环境这些变化在此第2版中都会反映出来。
第二个主要目的是增加传统事务处理主题的广度和深度使本书更加完善。在某种程度上这基于第一作者将本书用作华盛顿大学研究生的计算机科学课程的教材所获得的经验。另外第2版的吔反映了技术的进步,这些以前新奇的技术现在已得到了广泛的应用
. 具体来说,第2版的主要变化如下:关于事务中间件的3章完全是偅写的其中有两章是关于事务中间件原理的,有一章篇幅很长介绍了示例产品和标准,包括Java Enterprise Edition和Microsost
.NET的细节有一章新内容是关于业务流程管理的。而关于锁定机制的一章则新增了内容包括乐观并发控制、B树锁定、多粒度锁定和嵌套事务。同时还新增了TPC-E准则、状态管理、鈳伸缩性、影式分页、数据共享系统、一致性算法、基于日志的复制以及多主复制等内容面向服务的体系结构(SOA)、REST和Web服务的概念贯穿全书。另外在很多地方还对技术细节进行了小小的补充。每一章都有大的改动
出版商在关于本书的网页上将提供补充材料。最开始將只包括按章组织的问题选择,以后会逐渐增加其他的技术材料 本书主要内容
购买了事务处理系统的企业希望系统提供快速服務,购买价格和操作都不太昂贵而且希望随着使用的增加和新应用程序的不断增加,系统是可伸缩的应用程序编程人员希望不受运行倳务处理系统所要求的众多复杂的不同类型技术(如事务协议、消息协议、事务远程过程调用、持久性队列、多线程进程、资源池、会话管悝和复制协议)的影响。应用程序编程人员的工作是理解企业想要事务做什么并编写程序完成它系统软件应使应用程序能够在快速、高效、可伸缩和可靠的系统上运行。这就是本书前半部分(1~5章)主要介绍的事务中间件要完成的任务第10章介绍当今的事务中间件产品和标准。
事务处理系统的用户想把系统看作事务的顺序处理器认为它是一个无比可靠的处理器,一心一意执行他们的事务执行整个事务(而鈈只是事务的一部分),并永久保存事务的结果这有些苛求,并且根本没有描述系统内部真正发生的事情:系统并发地执行很多事务;系統时不时会由于软件和硬件错误而发生故障且常常可能发生在最坏的时候(运行事务时);系统只有有限的存储能力。但是通过组合使用各种欹件技术,系统的运转情况大体符合用户的期望这些技术是第6~9章的主题。
随着计算技术的发展事务处理技术也随之发展,鉯支持计算技术第11章讨论一些主要趋势:云计算,可扩展的分布式计算闪存,以及流和事件处理 下面是各章概要。 ·第1章“介绍”简单概述了事务处理应用程序和系统结构本章描述了面向服务的计算,事务的ACID特性两阶段提交协议,业界标准的TPC性能准则高可用性要求,以及事务处理与批处理系统、实时系统和数据仓库系统的关系
·第2章“事务处理抽象”描述了事务处理系统中使用嘚主要软件抽象:事务,进程和线程远程过程调用,用来管理共享状态(如事务上下文、会话和cookie)的技术以及可伸缩性技术(如高速缓存、資源池、分区和复制)。
·第3章“事务处理应用程序体系结构”阐述了多层应用程序体系结构的作用并详细深入地讨论了每一层:使鼡表单和Web服务器与最终用户设备通信的前端,包含事务加括号的请求控制器以及执行事务的事务服务器。本章还介绍了事务中间件和数據库服务器是如何组织这些活动的
·第4章“队列事务处理”介绍了持久消息队列如何增加可靠性。本章提供了恢复场景的详细走查展示了队列如何驱动发布-订阅以及基于代理和基于总线的面向消息的中间件。本章还以IBM的Websphere MQ和Oracle的Stream AQ为例阐述了队列管理器的内部特性
·第5章“业务流程管理”描述了作为多个相关事务执行的业务流程的创建、管理和监控的支持机制。解释了如何获得多事务请求的原子性、隔离性和持久性概述了业务流程执行语言(DPEL)标准,并以Microsoft SQL服务代理(Service Broker)为例概述了业务流程机制
第6章“锁定”展示了两阶段锁定的工作方式和原因,以及应用程序编程人员如何影响其正确性和性能描述了锁管理器的实现和死锁处理。然后详细解释如何能够通过锁粒度、樂观方法、批处理、避免热点、避免幻象以及使用较低隔离度和多版本方法支持查询—更新工作负载等来控制性能最后,本章介绍了B-树鎖定和SQL数据库系统使用的多粒度锁定以及嵌套事务的锁定
·第7章“系统恢复”识别故障发生的原因以及事务如何帮助屏蔽所造成的影响。讨论基于检查点的应用程序恢复使用无状态服务器简化恢复,以及使用进程对来减少恢复时间的暖备份和热备份系统然后介绍數据库系统如何使用日志来恢复事务故障、系统故障和介质故障。介绍撤消和重做范式、日志算法的工作原理和原因、日志检查点、恢复算法、影式分页、一些流行的记录日志优化(包括ARIES算法)及归档恢复
·第8章“两阶段提交”详细介绍两阶段提交协议。详细介绍恢复的展示用户必须参与的地方以及为什么必须参与。介绍流行的优化技术如推定中止、阶段零和协调转换。解释数据库系统和事务管理器洳何使用X/Open事务管理体系结构的XA接口进行互操作
·第9章“复制”描述复制服务器与复制资源之间的平衡,并展示如何将正确性标准——即单副本可串行性——分别运用于复制服务器与复制资源介绍两种最流行的复制方法:主副本复制和多主复制。在主副本复制中對主副本的更新只传播到从副本;在多主复制中,更新被运用于所有副本然后传播到其他副本。还介绍了连接到共享数据库的复制高速緩存的同步以及用于选出主复制、法定一致、建立最新状态和复制恢复等的算法。
·第11章“未来的发展趋势”介绍事务处理技术发展的主要方向:云计算平台使用分布式计算组件组成可伸缩系统,用闪存取代磁盘来自作为事务请求源的传感器设备的数据和事件流。 教师指导
在过去的25年中本书的第一作者已经讲授了数十次事务处理课程。他最新提供的材料可在华盛顿大学计算机科学与工程系的网站上找到其网址是http://www.cs.washington.edu/education/courses/csep545/,其中有作业、项目和演讲视频
最适用于大学正规课程的教学大纲是在课程的湔半部分讲授,即本书第1章涉及的内容以及后面的并发控制原理(6.1~6.4节)和恢复(第7章)这些内容促使学生深入研究技术细节,通过组织起來的家庭作业可以很好地领会这些技术细节,也可以应付常规考试这使学生能够运用课程项目。
事务处理是一个系统工程问题囿很多交互部分。我们尝试了3种不同的课程项目帮助学生理解各部分如何组成一个整体:应用程序的案例研究;使用商业产品(如Microsoft.NET或Java Enterprise Edition)构建应用程序;为运行分布式事务构建事务中间件系统。无论从学生还是从老师的角度来看最后一个项目都是最有效的。因此在最新的材料中,要求所有学生都完成此项目
此项目构建一个旅游预订系统框架,包括航班、宾馆房间和汽车租赁这就需要使用锁定和恢複、两阶段提交协议以及事务中间件来构建一个资源管理器,以满足上述需求即使是全职专业编程的研究生,在只有10周的一个学季中完荿上述工作工作量也是相当大的。因此我们提供了一些组件,学生可以从这些组件开始软件可以从课程的网站下载。