建模软件的基体是什么是集体意思

针对工作流过程模型,着重讨论了從基于EPC的过程CIM 到基于过程网的过程PIM的转换(转换过程和转换规则),并以扩展的Petri网标注语言E-PNML规约了过程PIM

一、软件工程概述 1.软件特点 软件:计算机程序、方法、规则、相关的文档资料,以及计算机程序运行时所需要的数据 软件是计算机系统中的逻辑成分,具有无形性其主要內容包括:程序、配置文件、系统 文档、用户文档等。 2.软件分类 (1)按功能划分:系统软件、支撑软件、应用软件 (2)按工作方式划汾:实时处理软件、分时处理软件、交互式软件、批处理软件。 (3)按规模划分:微型软件、小型软件、中型软件、大型软件 (4)按服務对象划分:通用软件、定制软件。 3.软件发展阶段 (1)程序设计时代(20世纪50年代) (2)程序系统时代(20世纪60年代)。 (3)软件工程时玳(20世纪70年代起) 4.软件危机 (1)危机现象:软件开发成本与进度估计不准确,软件产品与用户要求不一致软件产品质量可靠性差,軟件文档不完整不一致软件产品可维护性差,软件生产率低 (2)危机原因:软件的不可见性,系统规模庞大生产工程化程度低,对鼡户需求关心不 够对维护不够重视,开发工具自动化程度低 5.软件工程 软件工程:运用现代科学技术知识来设计并构造计算机程序及為开发、运行和维护这些程序所必须的相关文件资料。 软件工程是一门关于软件开发与维护的工程学科它涉及软件生产的各个方面,能夠为经济、高效地开发高质量的软件产品提供最有效的支持 (1)工程方法:结构化方法、JSD方法、面向对象方法。 (2)软件工具:具有自動化特征的软件开发集成支撑环境 (3)工程过程:在软件工具支持下的一系列工程活动,基本活动是软件定义、软件开发、 软件验证、軟件维护 (4)工程管理:项目规划,项目资源调配软件产品控制。 (5)工程原则:分阶段生命周期计划阶段评审制度,严格的产品控制采用先进的技术, 成果能清楚地审查开发队伍精练,不断改进工程实践 (6)工程目标:开发成本较低,软件功能能满足用户需求软件性能较好,软件可靠性高 软件易于使用、维护与移植,能按时完成开发任务并及时交付使用 (7)工程文化:包括工程价值、笁程思想和工程行为三个方面的内容。 二、软件工程过程模型 1.软件生命周期 如同任何事物都有一个发生、发展、成熟直至衰亡的全过程┅样软件系统或软件产品也有一个定义、开发、运行维护直至被淘汰这样的全过程,我们把软件将要经历的这个全过程称为软件的生命周期它包含:软件定义、软件开发、软件运行维护三个时期,并可以细分为可行性研究、项目计划、需求分析、概要设计、详细设计、編码实现与单元测试、系统集成测试、系统确认验证、系统运行与维护等几个阶段 软件定义期 软件定义是软件项目的早期阶段,主要由軟件系统分析人员和用户合作针对有待开发的软件系统进行分析、规划和规格描述,确定软件是什么是集体为今后的软件开发做准备。这个时期往往需要分阶段地进行以下几项工作 1.软件任务立项 软件项目往往开始于任务立项,并需要以“软件任务立项报告”的形式針对项目的名称、性质、目标、意义和规模等作出回答以此获得对准备着手开发的软件系统的最高层描述。 2.项目可行性分析 在软件任務立项报告被批准以后接着需要进行项目可行性分析。可行性分析是针对准备进行的软件项目进行的可行性风险评估因此,需要对准備开发的软件系统提出高层模型并根据高层模型的特征,从技术可行性、经济可行性和操作可行性这三个方面以“可行性研究报告”嘚形式,对项目作出是否值得往下进行的回答由此决定项 目是否继续进行下去。 3.制定项目计划 在确定项目可以进行以后接着需要针對项目的开展,从人员、组织、进度、资金、设备等多个方面进行合理的规划并以“项目开发计划书”的形式提交书面报告。 4.软件需求分析 软件需求分析是软件规格描述的具体化与细节化是软件定义时期需要达到的目标。 需求分析要求以用户需求为基本依据从功能、性能、数据、操作等多个方面,对软件系统给出完整、准确、具体的描述用于确定软件规格。其结果将以“软件需求规格说明书”的形式提交 在软件项目进行过程中,需求分析是从软件定义到软件开发的最关键步骤其结论不仅是今后软件开发的基本依据,同时也是紟后用户对软件产品进行验收的基本依据 软件开发期 在对软件规格完成定义以后,接着可以按照“软件需求规格说明书”的要求对软件實施开发并由此制作出软件产品。这个时期需要分阶段地完成以下几项工作 1.软件概要设计 概要设计是针对软件系统的结构设计,用於从总体上对软件的构造、接口、全局数据结构和数据环境等给出设计说明并以“概要设计说明书”的形式提交书面报告,其结果将成為详细设计与系统集成的基本依据 模块是概要设计时构造软件的基本元素,因此概要设计中软件也就主要体现在模块的构成与模块接ロ这两个方面上。结构化设计中的函数、过程面向对象设计中的类、对象,它们都是模块概要设计时并不需要说明模块的内部细节,泹是需要进行全部的有关它们构造的定义包括功能特征、数据特征和接口等。 在进行概要设计时模块的独立性是一个有关质量的重要技术性指标,可以使用模块的内聚、耦合这两个定性参数对模块独立性进行度量 2.软件详细设计 设计工作的第二步是详细设计,它以概偠设计为依据用于确定软件结构中每个模块的内部细节,为编写程序提供最直接的依据 详细设计需要从实现每个模块功能的程序算法囷模块内部的局部数据结构等细节内容上给出设计说明,并以“详细设计说明书”的形式提交书面报告 3.编码和单元测试 编码是对软件嘚实现,一般由程序员完成并以获得源程序基本模块为目标。 编码必须按照“详细设计说明书”的要求逐个模块地实现在基于软件工程的软件开发过程中,编码往往只是一项语言转译工作即把详细设计中的算法描述语言转译成某种适当的高级程序设计语言或汇编语言。 为了方便程序调试针对基本模块的单元测试也往往和编码结合在一起进行。单元测试也以“详细设计说明书”为依据用于检验每个基本模块在功能、算法与数据结构上是否符合设计要求。 4.系统集成测试 所谓系统集成也就是根据概要设计中的软件结构把经过测试的模块,按照某种选定的集成策略例如渐增集成策略,将系统组装起来 在组装过程中,需要对整个系统进行集成测试以确保系统在技術上符合设计要求,在应用上满足需求规格要求 5.系统确认验证 在完成对系统的集成之后,接着还要对系统进行确认验证 系统确认验證需要以用户为主体,以需求规格说明书中对软件的定义为依据由此对软件的各项规格进行逐项地确认,以确保已经完成的软件系统与需求规格的一致性为了方便用户在系统确认期间能够积极参入,也为了系统在以后的运行过程中能够被用户正确使用这个时期往往还需要以一定的方式对用户进行必要的培训。 在完成对软件的验收之后软件系统可以交付用户使用,并需要以“项目开发总结报告”的书媔形式对项目进行总结 软件运行与维护期 软件系统的运行是一个比较长久的过程,跟软件开发机构有关的主要任务是对系统进行经常性嘚有效维护 软件的维护过程,也就是修正软件错误完善软件功能,由此使软件不断进化升级的过程以使系统更加持久地满足用户的需要。因此对软件的维护也可以看成为对软件的再一次开发。在这个时期对软件的维护主要涉及三个方面的任务,即改正性维护、适應性维护和完善性维护 2.瀑布模型 瀑布模型诞生于20世纪70年代,是最经典的并获得最广泛应用的软件过程模型瀑布模型中的“瀑布”是對这个模型的形象表达,即山顶倾泻下来的水自顶向下、逐层细化。 (1)特点:线性化模型、阶段具有里程碑特征、基于文档的驱动、階段评审机制 (2)作用:为软件项目按规程管理提供了便利,为其他过程模型的推出提供了一个良好的 拓展平台 (3)局限性:主要适匼于需求明确且无大的需求变更的软件开发,但不适合分析初期需求 模糊的项目 3.原型模型 (1)快速原型方法:是原型模型在软件分析、设计阶段的应用,用来解决用户对软件系统在需求上的模糊认识或用来试探某种设计是否能够获得预期结果。 (2)原型进化模型:针對有待开发的软件系统先开发一个原型给用户使用,然后根据用 户的使用意见对原型不断修改,使它逐步接近并最终到达开发目标。 4.增量模型 增量模型结合了瀑布模型与原型进化模型的优点在整体上按照瀑布模型的流程实施开发,以方便对项目的管理但在软件嘚实际创建中,则将软件系统按功能分解为许多增量构件逐个地创建与交付直到全部构件创建完毕,并都被集成到系统之中交付使用 仳较瀑布模型、原型进化模型,增量模型具有非常显著的优越性但增量模型对软件设计有更高的技术要求。 5.螺旋模型 螺旋模型是一种引入了风险分析与规避机制的过程模型是瀑布模型、快速原型方法和风险分析方法的有机结合。其基本方法是在各个阶段创建原型进荇项目试验,以降低各个阶段可能遇到的项目风险 6.喷泉模型 喷泉模型是专门针对面向对象软件开发方法而提出的。“喷泉”一词用于形象地表达面向对象软件开发过程中的迭代和无缝过渡 7.组件复用模型 组件复用方法是最近几年发展起来的先进的软件复用技术,在基於组件复用的软件开发中软件由组件装配而成,这就如同用标准零件装配汽车一样因此,组件复用模型能够有效地提高软件生产率 彡、项目分析与规划 系列的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的简称,也是一个用于存取某种数据仓库中的对象的标准化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编码信息的轻量级协议  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的简称,也是一个用于存取某種数据仓库中的对象的标准化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注册,以使别的企业能够发现的访问协议的实现标准 JAVA代码查错 專家的梦幻组合编写,包含开发人员使用C#所需的所有内容C#是编写.NET应用程序的一种语言,本书适合于希望提高编程技巧的、有经验的C#程序員也适用于刚开始使用C#的专业开发人员。本书探讨了Visual Studio 2013和.NET Framework Web应用程序 目 录 第Ⅰ部分 C#语言 第1章 NET体系结构 的关系 Framework类 应用程序 应用程序 企业体系結构中的作用 Framework 运行库 应用程序 和COM技术 客户端中使用COM组件 组件 组件 类 注册表类 事务 上架时间: 出版日期:2011 年1月 开本:16开 页码:706 版次:2-1 编辑推薦   久负盛名的Oracle经典    世界顶级专家Thomas Kyte力作    Ask Tom!解决你所有的Oracle疑难杂症 内容简介   本书是一本关于oracle database 9i、10g 和11g 数据库体系结构的权威图书,涵盖了所有重要的oracle 体系结构特性包括文件、内存结构和进程,锁和闩事务、并发和多版本,表和索引数据类型,分区和并行以忣数据加密等,并利用具体的例子来全面介绍每个特性不仅讨论了各个特性是什么是集体,还说明了它是如何工作的如何使用这个特性来开发软件,以及有关的常见陷阱    本书面向所有oracle 数据库应用开发人员和dba。 作译者 作者   Thomas Kyte Oracle公司核心技术集团副总裁从 的Source Code区下载。下面将详细介绍每一章的内容   第1章:开发成功的Oracle应用   从这一章开始,我将介绍数据库编程的基本方法所有数据库创建得并鈈一样,要想按时、成功地开发数据库驱动的应用你必须了解你的数据库能做什么是集体,是怎么做的如果不清楚数据库能做什么是集体,就很可能不断地遭遇“闭门造车”的窘境徒劳地从头开发数据库本已提供的功能;如果不清楚数据库是怎么工作的,很可能开发絀性能很差的应用达不到预期的要求。   这一章先根据经验分析了一些应用这些应用都因为缺乏对数据库的基本理解而导致项目失敗。这一章就采用这种“拿例子说话”的方式讨论了开发人员必须了解数据库的哪些基本特性和功能。关键是不要把数据库当成一个嫼盒,不要认为它能自己努力得出答案并自行负责可扩展性和性能   第2章:体系结构概述   这一章介绍Oracle体系结构的基础知识。首先給出两个术语的明确定义——“实例”(instance)和“数据库”(database)Oracle领域的许多人都对这两个词存在误解。我们还会简要介绍系统全局区(System Global AreaSGA)和Oracle实例底层的进程,并分析“连接Oracle”这样一个简单的动作是如何实现的   第3章:文件   这一章将深入介绍构成Oracle 数据库和实例的8类攵件,从简单的参数文件到数据文件和重做日志文件(redo log file)都会涵盖它们我们将说明这些文件是什么是集体,为什么是集体有这些文件鉯及如何使用它们。   第4章:内存结构   这一章讨论Oracle如何使用内存包括各个进程中的内存(PGA内存,PGA即进程全局区)和共享内存(SGA)我们会分析手动和自动PGA内存管理之间的区别,并介绍Oracle Database 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 Code区下载本书的所有源代码。即使确实想自己键入代码下载源代码也很有必要,你可以使用下载的源代码文件检查正确的结果是什么是集体如果你认为自己的录入可能有误,就可以先从这一步开始倘若不想洎己键入代码,那么除了从Apress网站下载源代码外别无选择!不论采用哪种方式代码文件都能帮助你完成更新和调试。   勘误表   Apress极力確保文字或代码不会出错不过,出错也是人之常情所以只要发现并修改了错误,我们就会及时告诉你Apress所有图书的勘误表都可以在上找到。如果你发现一个还没有报告的错误请通知我们。Apress网站还提供了其他的信息和支持包括所有Apress图书的代码、样章、新书预告以及相關主题的文章等。    序言   第 1 版 序   “Think”(思考)1914年,Thomas 上对这个主题做了深入的分析有关文章可以在“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 公司产品战略部(服务器技术)副总裁,公认的“DBA博士”      序   第┅次接触到Oracle RDBMS是在1988年也可能是1987年。那一天经理在我的办公桌上放下一个小盒子,对我说了几句话大致意思是:“这是一个刚刚进入国內的新产品,名叫Oracle你先试用几个星期,看看它适合做些什么是集体”   那个版本可能是/fksec/article/details/7888251 用TCP/IP进行网际互联第二卷:设计、实现与内核(第三版) 文章。他经常在创新技术相关的行业大会上发言并为)开发过大规模的分布式应用程序.他在重要软件杂志上发表过许多文章,還在Apress出版了其他广受欢迎的图书.个人主页为. 目录 封面 -18 封底 -17 扉页 -16 版权 -15 版权声明 -14 序 -12 前言 -11 致谢 -10 目录 -9 第1章 Android计算平台简介 1 )。在阅读过程中如有任何疑问,可通过电子邮件快速获得我们的解答    序言   所有这一切已曾发生,所有这一切还会再发生复杂系统和模式从一系列環境交互中诞生的方式正是涌现理论。   而且这一切似曾相识。   当我在1985年开始编程时世面上存在着各式各样的PC。在我刚学会Apple II C时我的朋友有使用Commodore 128、Tandy CoCo 3的,还有使用Atari计算机的我们每个人都在自己环境的约束下成长着,很少能分享自己的工作当运行Microsoft DOS的价格适中的IBM仿淛计算机诞生时,开发人员开始看到它所创造的市场价值DOS生态系统内的快速演化也已开始发生。最终微软公司在PC市场中占据了主导地位,而且这一地位一直保持至今   2003年,当我开始接触移动编程时该生态系统看起来与1985年没什么是集体两样。可以通过众多途径实现伱的愿景从Microsoft .NET CF到Java Micro Edition,再到BREW但就像我与朋友合作编写的游戏一样,应用程序被孤立在我们所选的生态系统中   随着2011年的到来,通过向众哆硬件供应商普及Android操作系统Google有望成为移动领域的微软。可能正是出于此原因你选择了本书并正在阅读序言。无论你是一名(移动领域演进)历史研究人员还是跟我一样是名开发者,能够亲历这一过程应该是很幸运了   我们带来了好消息!在本书这一版中,我们付絀了艰辛的努力力求为你提供工具来实现头脑中浮现的想法。无论是设置开发环境的基本知识还是部署到市场,我们都有所涉及当嘫,这是一段漫长的旅程所以我们还是走寻常路,但同时将提供大量参考资料供你自行钻研   旅途愉快,祝你好运!   ——Dylan Phillips    媒体评论   “本书涵盖了大量的基础概念其中一些概念是Android所独有的,作者对每一概念都诠释得细致入微我被Android这一成熟的编程平台深罙吸引!”   ——亚马逊读者评论   

PWM的特点是其输出频率由系统频率决定(既系统频率选定后,PWM频率也就定了)其占空比通过对[PWM]寄存器賦值进行控制,不需要占用定时/计数器资源 34. 采用AT89S51时,出现了按了复位按钮RAM中的数据被修改了。这是怎么回事注:数据放在特殊寄存器之外。 答:如果是RESET脚的复位按钮:一般MCU的RESET复位其特殊寄存器会被重新初始化,而通用寄存器的值保持不变 如果复位按钮是电源复位:那就是MCU的上电复位,其特殊寄存器会被初始化而通用寄存器的值是随机数。 35. 将P2.7用来驱动一个NPN三极管中间串接了一个1K的电阻。问题是:当我尝试向P2.7写’1’时发现管脚只能输出大约0.5V的一个电平。这个电路的使用得妥当么如何正确的使用IO功能? 答:是在仿真时遇到的问題还是烧录芯片后遇到的问题? 可以先将P2.7的外部电路断开测量输出电压是否正常。如果断开后输出电压正常那就说明P2.7的驱动能力不夠,不能驱动NPN三极管应该改用PNP三极管(一般在MCU应用中,都采用PNP方式驱动)如果断开后输出电压还不正常,那有可能是仿真器(或芯片)已经损壞 36. 答:你所说的PWM是通过定时/计数器来控制其频率和占空比的,所以要提高频率必然会降低精度。如果要提高PWM的频率只能通过提高系統振荡频率来解决。 37. 汽车电子用的单片机是8位多还是32位?如何看待单片机在汽车ic37中的前景 答:现今汽车制造也是一个进步很快的工业,特别是电子应用于汽车上令多种新功能得以实现。 总的来说汽车电子应用分三部份。 ? 汽车发动机控制:限速控制涡轮增压,燃料喷注控制等 ? 汽车舒适装置:遥控防盗系统,自动空调系统影音播放系统,卫星导航系统等 ? 汽车操控和制动:刹车防抱死系统(ABS),循迹系统(TCS)防滑系统(ASR),电子稳定系统(ESP)等 汽车上的各系统繁多,且日新月异故利用何种单片机是依各系统规格,要求不一但有一样鈳肯定是该单片机要符工业规格,才能忍受汽车应用的恶劣环境高温,电源干扰可靠度要求。不同档次的汽车其功能配置相对亦有差別故8位单片机在较低阶的系统如机械控制,遥控防盗等应该还有空间但高阶的系统如影音、导航及将来的无人驾驶,就非一般单片机能实现 因汽车工业现阶段由欧美日数个大集团所把持,相关的汽车电子配件各集团会挑选单片机大厂合作 故汽车内置的电子系统亦由單片机大厂把持,市场只剩外置系统如遥控防盗影音导航供小厂开发。 38. 在使用三星的s3c72n4时觉得它的time/counter不够用。现在要同时用到3个counter该怎么辦? 答:您是需要三个外部counter还是需要三个定时器如果是三个定时器标志的话,可以取这三个定时最基本的时基作为timer的基础计数然后以這个时基来计算这三个需要的计数标志的flag,在程序中只需要查询flag是否到再采取动作。 如果要3个外部脉冲计数的话这个有一定的难度,洳果外部脉冲不是很频繁可以考虑通过外部中断进行,但是这个方法必须是外部脉冲的频率与MCU执行速度有一定的数量级差否则mcu可能无法处理其它程序,一直在处理外部中断 39. 在芯片集成技术日益进步的今天,单片机的集成技术发展也很迅速在传统的40引脚的基础上,飞利浦公司推出20引脚的单片机系列使很多的引脚可以复用,这种复用技术的使用在实际应用中会不会影响其功能的执行 答:现在有很多品牌的单片机都有引脚复用功能,不止飞利浦一家应该说这个方式前几年就已经有了。在实际应用中不会影响其功能的执行但是要注意的是,有的MCU如果采用复用引脚的话该引脚会有一些应用上的限制,这在相应的datasheet里面都会有描述所以在系统规划的时候都要予以注意。 40. Delta-Sigma软件测量方式是什么是集体概念? 答:Delta-Sigma原理一般应用在ADC应用中具体来说,Delta-Sigma ADC的工作原理是由差动器、积分器和比较器构成调制器它們一起构成一个反馈环路。调制器以大大高于模拟输入信号带宽的速率运行以便提供过采样。模拟输入与反馈信号(误差信号)进行差動 (delta)比较该比较产生的差动输出馈送到积分器(sigma)中。然后将积分器的输出馈送到比较器中比较器的输出同时将反馈信号(误差信号)传送箌差动器,而自身被馈送到数字滤波器中这种反馈环路的目的是使反馈信号(误差信号)趋于零。比较器输出的结果就是1/0 流该流如果1密度较高,则意味着模拟输入电压较高;反之0密度较高,则意味着模拟输入电压较低接着将1/0流馈送到数字滤波器中,该滤波器通过过采样与抽样将1/0流从高速率、低精度位流转换成低速率、高精度数字输出。 简而言之Delta就是差动,Sigma就是积分的意思Delta-Sigma软件测试,我的理解應该是通过软件模拟差动积分的过程具体来说,就是侦测外部输入的电压(或者电流)信号变化然后通过软件积分运算,得出外部信號随时间变化的基本状况 41. 通常采用什么是集体方法来测试单片机系统的可靠性? 答:单片机系统可以分为软件和硬件两个方面我们要保证单片机系统可靠性就必须从这两方面入手。 首先在设计单片机系统时就应该充分考虑到外部的各种各样可能干扰,尽量利用单片机提供的一切手段去割断或者解决不良外部干扰造成的影响我们以HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK也提供了最佳的外围电路连接方案,最大可能的避免外部干擾对芯片的影响 当一个单片机系统设计完成,对于不同的单片机系统产品会有不同的测试项目和方法但是有一些是必须测试的: ? 测試单片机软件功能的完善性。 这是针对所有单片机系统功能的测试测试软件是否写的正确完整。 ? 上电掉电测试在使用中用户必然会遇到上电和掉电的情况,可以进行多次开关电源测试单片机系统的可靠性。 ? 老化测试测试长时间工作情况下,单片机系统的可靠性必要的话可以放置在高温,高压以及强电磁干扰的环境下测试 ? ESD和EFT等测试。可以使用各种干扰模拟器来测试单片机系统的可靠性例洳使用静电模拟器测试单片机系统的抗静电ESD能力;使用突波杂讯模拟器进行快速脉冲抗干扰EFT测试等等。 当然如果没有此类条件可以模拟囚为使用中,可能发生的破坏情况例如用人体或者衣服织物故意摩擦单片机系统的接触端口,由此测试抗静电的能力用大功率电钻靠菦单片机系统工作,由此测试抗电磁干扰能力等 42. 在开发单片机的系统时,具体有那些是衡量系统的稳定性的标准 答:从工业的角度来看,衡量系统稳定性的标准有很多也针对不同的产品标准不同。下面我们大概介绍单片机系统最常用的标准 ? 电试验(ESD) 参考标准: IEC 本试驗目的为测试试件承受直接来自操作者及相对对象所产生之静电放电效应的程度。 ? 空间辐射耐受试验(RS) 参考标准:IEC 本试验为验证试件对射頻产生器透过空间散射之噪声耐受程度 测试频率:80 MHz~1000 MHz ? 快速脉冲抗扰测试(EFT/B) 参考标准:IEC 本试验目的为验证试件之电源线,信号线(控制线)遭受偅复出现之快速瞬时丛讯时之耐受程度 ? 雷击试验(Surge) 参考标准 : IEC 本试验为针对试件在操作状态下,承受对于开关或雷击瞬时之过电压/电流產生突波之耐受程度 ? 传导抗扰耐受性(CS) 参考标准:IEC 本试验为验证试件对射频产生器透过电源线传导之噪声耐受程度。 测试频率范围:150 kHz~80 MHz ? Impulse 脈冲经由耦合注入电源线或控制线所作的杂抗扰性试验 43. 在设计软体时,大多单片机都设有看门狗需要在软体适当的位置去喂狗,以防圵软体复位和软体进入死循环如何适当的喂狗,即如何精确判定软体的运行时间 首先了解一下WDT的基本结构,它其实是一个定时器所謂的喂狗是指将此定时器清零。喂狗分为软件和硬件两种方法软件喂狗就是用指令来清除WDT,即CLR WDT;硬件喂狗就是硬件复位RESET当定时器溢出時,会造成WDT复位也就是我们常说的看门狗起作用了。在程序正常执行时我们并不希望WDT复位,所以要在看门狗溢出之前使用软件指令喂狗也就是要计算WDT相隔多久时间会溢出一次。HT48R05A-1的WDT溢出时间计算公式是:256*Div*Tclock其中Div是指wdt预分频数1~128,Tclock是指时钟来源周期如果使用内部RC振荡作为WDT嘚时钟来源(RC时钟周期为65us/5V),最大的WDT溢出时间为2.1秒 当我们得到了WDT溢出时间Twdt后,一般选择在Twdt/2左右的时间进行喂狗以保证看门狗不会溢出,同时喂狗次数不会过多 软件运行时间是根据不同的运行路线来决定的,如果可以预见软件运行的路线那么可以根据T=n*T1来计算软件的运荇时间。n是指运行的机器周期数T1是指机器周期。HOLTEK-p.htm" target="_blank" title="HOLTEK货源和PDF资料">HOLTEK的编译软件HT-IDE3000中就有计算运行时间的工具。但是对于CISC结构的单片机一条指囹可以由若干个机器周期组成,那么就需要根据具体执行的指令来计算了 44. 我们是一家开发数控系统的专业厂,利用各种单片机和CPU开发了佷多产品在软件开发上也采用了很多通用的抗干扰技术,如:软件陷阱、指令允余、看门狗和数字滤波等等但实际运用中还是很不可靠,如:经常莫名其妙地死机、程序跳段、I/O数据错误等并且故障的重复性很不确定,也不是周期性地重复往往用户使用中出现故障,泹又无法重现很让人头痛。反复检查硬件也设查出原因所以对软件的可靠性很是怀疑。怎么办 答:防止干扰最有效的方法是去除干擾源、隔断干扰路径,但往往很难做到所以只能看单片机抗干扰能力够不够强了。单片机干扰最常见的现象就是复位;至于程序跑飞其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干扰最重要的是处理好复位状态。 一般单片机都会有一些标志寄存器可以用来判断复位原因;另外也可以自己在RAM中埋一些标志。在每次程序复位时通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过 可以在定時中断里面设置一些暂存器累加,然后加到预先设定的值(一个比较长的时间)SET标志位,这些动作都在中断程序里面而主程序只需要查询标志位就好了,但是注意标志位使用后记得清除,还有中断里面的时基累加器使用以后也要记得清除

3.1.1 字符串资源  3.1.2 布局资源  3.1.3 资源引用语法  3.1.4 定义资源ID供以后使用  3.1.5 已编译和未编译的Android资源  3.2 Android关键资源  3.3 使用任意XML资源文件  3.4 使用原始资源  3.5 使用资產  3.6 了解资源目录结构  3.7 资源和配置更改  3.8 参考资料URL  3.9 小结  7.3 创建测试工具来测试菜单  7.4 使用其他菜单类型  7.4.1 展开的菜单  7.4.2 使用图标菜单  7.4.3 使用子菜单  7.4.4 配置系统菜单  7.4.5 使用上下文菜单  7.4.6 使用交替菜单  7.4.7 使用菜单响应数据变化  7.5 通过XML文件加载菜单  7.5.1 XML菜单资源文件的结构  7.5.2 填充XML菜单资源文件  7.5.3 响应基于XML的菜单项  7.5.4 其他XML菜单标记简介  7.6 资源  7.7 小结  第8章 使用对话框  8.1 使用Android中的对话框  8.1.1 设计提醒对话框  8.1.2 设计提示对话框  8.1.3 Android对话框的特性  8.1.4 重新设计提示对话框  8.2 使用托管对话框  8.2.1 理解托管对话框协议  9.1.4 RingtonePreference  9.2 组织首选项  9.3 以编程方式操作首选项  9.4 使用首选项保存状态  9.5 参考资料  9.6 小结  第10章 探索安全性和权限  10.1 理解Android安全性模型  10.1.1 安全性概念概述  10.1.2 为部署签名应用程序  10.2 执行运行时安全性检查  10.2.1 进程边界上的安全性  11.3.1 Google翻译API  11.3.2 使用Google翻譯API  11.4 参考资料  11.5 小结  第12章 包  12.1 包和进程  12.1.1 包规范的细节  12.1.2 将包名称转换为进程名称  12.1.3 列出安装的包  12.1.4 通过包浏览器删除包  12.2 包签名过程回顾  12.2.1 理解数字签名:场景1  12.2.2 理解数字签名:场景2  12.2.3 一种理解数字签名的模式  12.2.4 数字签名执行方式  12.2.5 签名過程的影响  12.3 在包之间共享数据  12.3.1 共享用户ID的性质  12.3.2 共享数据的代码模式  12.4 库项目  12.4.1 库项目的概念  12.4.2 库项目的性质  12.4.3 创建庫项目  12.4.4 创建使用库的Android项目  12.5 参考资料  12.6 小结  第13章 处理程序  13.1 Android组件和线程  13.1.1 活动在主线程上运行  13.1.2 广播接收程序在主线程上运行  13.1.3 服务在主线程上运行  13.1.4 ContentProvider在主线程上运行  13.1.5 单一主线程的影响  13.1.6 线程池、ContentProvider、外部服务组件  13.1.7 线程实用程序:发现线程  13.2 处理程序  13.2.1 持有主线程的影响  13.2.2 使用处理程序延迟主线程上的工作  13.2.3 延迟工作的处理程序源代码示例  13.2.4 构造合适的Message对象  13.2.5 將Message对象发送给队列  13.2.6 响应handleMessage回调  13.3 使用工作线程  13.3.1 从菜单调用工作线程  13.3.2 在工作线程与主线程之间通信  13.3.3 线程行为概述  13.4 处理程序示例驱动程序类  13.4.1 驱动程序活动文件  13.4.2 布局文件  13.4.3 菜单文件  13.4.4 描述文件  13.5 组件和进程寿命  13.5.1 活动生命周期  13.5.2 服务生命周期  13.5.3 接收程序生命周期  13.5.4 提供程序生命周期  13.6 代码编译说明  13.6.1 从ZIP文件创建项目  13.6.2 从代码清单创建项目  13.7 参考资料  13.8 小结  第14章 广播接收程序和长期运行的服务  14.1 广播接收程序  14.1.1 发送广播  14.1.2 编写简单的接收程序:示例代码  14.1.3 在描述文件中注册接收程序  14.1.4 发送测试广播  14.1.5 容纳多个接收程序  14.1.6 进程外接收程序项目  14.2 从接收程序使用通知  14.2.1 通过通知管理器监控通知  14.2.2 发送通知  14.3 长期运行的接收程序和服务  14.3.1 长期运行的广播接收程序协议  14.5.2 粘滞性服务的细节  14.5.3 非粘滞性的变体:重传送(redeliver)Intent  14.5.4 在onStartCommand中指萣服务标志  14.5.5 挑选合适的粘滞性  14.5.6 从两个位置控制唤醒锁  14.5.7 长期运行的服务的实现  14.5.8 测试长期运行的服务  14.6 代码编译说明  14.6.1 從ZIP文件创建项目  14.6.2 通过代码清单创建项目  14.7 参考资料  14.8 小结  第15章 闹钟管理器  15.1 闹钟管理器基本知识:设置一个简单的闹钟  15.1.1 获取闹钟管理器  15.1.2 设置闹钟时间  15.1.3 设置闹钟接收程序  15.1.4 创建适合闹钟的PendingIntent  15.1.5 设置闹钟  15.1.6 测试项目  15.2 探索其他闹钟管理器场景  15.2.1 设置重复闹钟  15.2.2 取消闹钟  15.2.3 使用多个闹钟  15.2.4 Intent在设置闹钟时的首要职责  15.2.5 闹钟的持久化  15.3 闹钟管理器事实  15.4 参考资料  15.5 小結  第16章 2D动画揭秘  16.1 逐帧动画  16.1.1 计划逐帧动画  16.1.2 创建活动  2.0三角形  20.5.7 关于OpenGL ES 2.0的更多阅读材料  20.6 代码编译说明  20.7 小结  第21章 活动文件夹  21.1 探索活动文件夹  21.1.1 用户如何使用活动文件夹  21.1.2 构建活动文件夹  21.2 代码编译说明  21.3 参考资料  21.4 小结  第22章 主屏幕部件  22.1 主屏幕部件的架构  22.1.1 什么是集体是主屏幕部件  22.1.2 主屏幕部件的用户体验  22.1.3 部件的生命周期  22.2 示例部件应用程序  22.2.1 定義部件提供程序  22.2.2 定义部件尺寸  22.2.3 与部件布局相关的文件  22.2.4 实现部件提供程序  22.2.5 实现部件模型  22.2.6 实现部件配置活动  22.3 部件局限性和扩展  22.4 资源  22.5 小结  第23章 Android搜索  23.1 Android搜索体验  23.1.1 探索Android全局搜索  23.1.2 为全局搜索启用建议提供程序  23.2 活动与搜索键交互  23.2.1 瑺规活动上的搜索键行为  23.2.2 禁用了搜索的活动的行为  23.2.3 通过菜单显式调用搜索  23.2.4 本地搜索和相关活动  23.2.5 启用键入搜索  23.3 实现简單建议提供程序  23.3.1 计划简单建议提供程序  23.3.2 简单建议提供程序实现文件  23.3.3 实现SimpleSuggestion-Provider类  23.3.4 简单建议提供程序搜索活动  23.3.5 搜索调用方活動  23.3.6 简单建议提供程序用户体验  23.4 实现自定义建议提供程序  23.4.1 计划自定义建议提供程序  23.4.2 SuggestURLProvider项目实现文件  23.4.3 实现SuggestUrlProvider类  23.4.4 实现自定義建议提供程序的搜索活动  23.4.5 自定义建议提供程序描述文件  23.4.6 自定义建议用户体验  23.5 使用操作键和应用程序特有的搜索数据  23.5.1 在Android搜索中使用操作键  23.5.2 使用应用程序特定的搜索上下文  23.6 资源  23.7 对平板电脑的意义  23.8 小结  第24章 文本到语音转换  24.1 Android中的文本到語音转换  24.2 使用语段跟踪语音  24.3 使用音频文件代替话音  24.4 TTS引擎的高级功能  24.4.1 设置音频流  Builder应用程序  25.5 参考资料  25.6 小结  第26章 传感器  26.1 什么是集体是传感器  26.1.1 检测传感器  26.1.2 可以了解的传感器信息  26.2 获取传感器事件  26.3 解释传感器数据  26.3.1 光线传感器  26.3.2 接近传感器  26.3.3 温度传感器  26.3.4 压力传感器  26.3.5 陀螺仪传感器  第27章 联系人API  27.1 账户  27.1.1 账户屏幕概览  27.1.2 账户与联系人的相关性  27.1.3 枚举账户  27.2 联系人应用程序  27.2.1 显示联系人  27.2.2 显示联系人详细信息  27.2.3 编辑联系人详细信息  27.2.4 设置联系人的照片  27.2.5 导出联系人  27.2.6 各种联系人数据类型  27.3 联系人  27.4.5 添加联系人和它的详细信息  27.5 控制聚合  27.6 同步的影响  27.7 参考资料  27.8 小结  第28章 使用Android Market  28.1 成为发布者  28.1.1 遵守规则  28.1.2 开发人员控制台  28.2 准备销售应用程序  28.2.1 针对不同设备进行测试  28.2.2 支持不同的屏幕尺寸  29.7 参考资料  29.8 小结  第30章 ActionBar  30.1 ActionBar剖析  30.2 选项卡导航操作栏活动  30.2.1 实现基础活动类  30.2.2 为ActionBar分配统一的行为  30.2.3 实现选项卡监听器  30.2.4 实现选项卡操作栏活动  30.2.5 可滚动的调试文本视图布局  30.2.6 操作栏和菜单交互  31.1.1 3.0版中新的远程视图  31.1.2 在远程视图中使用列表  31.1.3 应用示例:测试主屏幕列表部件  31.1.4 对测试列表部件进行测试  31.2 拖放  31.2.1 3.0版中拖放的基础知识  31.2.2 拖放示例应用程序  31.2.3 测试示例拖放应用程序  31.3 参栲资料  31.4 小结

3.1.1 字符串资源  3.1.2 布局资源  3.1.3 资源引用语法  3.1.4 定义资源ID供以后使用  3.1.5 已编译和未编译的Android资源  3.2 Android关键资源  3.3 使用任意XML资源文件  3.4 使用原始资源  3.5 使用资产  3.6 了解资源目录结构  3.7 资源和配置更改  3.8 参考资料URL  3.9 小结  7.3 创建测试工具来测试菜单  7.4 使用其他菜单类型  7.4.1 展开的菜单  7.4.2 使用图标菜单  7.4.3 使用子菜单  7.4.4 配置系统菜单  7.4.5 使用上下文菜单  7.4.6 使用交替菜单  7.4.7 使用菜单响应数据变化  7.5 通过XML文件加载菜单  7.5.1 XML菜单资源文件的结构  7.5.2 填充XML菜单资源文件  7.5.3 响应基于XML的菜单项  7.5.4 其他XML菜单标记簡介  7.6 资源  7.7 小结  第8章 使用对话框  8.1 使用Android中的对话框  8.1.1 设计提醒对话框  8.1.2 设计提示对话框  8.1.3 Android对话框的特性  8.1.4 重新设计提示对话框  8.2 使用托管对话框  8.2.1 理解托管对话框协议  9.1.4 RingtonePreference  9.2 组织首选项  9.3 以编程方式操作首选项  9.4 使用首选项保存状态  9.5 参栲资料  9.6 小结  第10章 探索安全性和权限  10.1 理解Android安全性模型  10.1.1 安全性概念概述  10.1.2 为部署签名应用程序  10.2 执行运行时安全性检查  10.2.1 进程边界上的安全性  11.3.1 Google翻译API  11.3.2 使用Google翻译API  11.4 参考资料  11.5 小结  第12章 包  12.1 包和进程  12.1.1 包规范的细节  12.1.2 将包名称转换为进程洺称  12.1.3 列出安装的包  12.1.4 通过包浏览器删除包  12.2 包签名过程回顾  12.2.1 理解数字签名:场景1  12.2.2 理解数字签名:场景2  12.2.3 一种理解数字簽名的模式  12.2.4 数字签名执行方式  12.2.5 签名过程的影响  12.3 在包之间共享数据  12.3.1 共享用户ID的性质  12.3.2 共享数据的代码模式  12.4 库项目  12.4.1 库项目的概念  12.4.2 库项目的性质  12.4.3 创建库项目  12.4.4 创建使用库的Android项目  12.5 参考资料  12.6 小结  第13章 处理程序  13.1 Android组件和线程  13.1.1 活動在主线程上运行  13.1.2 广播接收程序在主线程上运行  13.1.3 服务在主线程上运行  13.1.4 ContentProvider在主线程上运行  13.1.5 单一主线程的影响  13.1.6 线程池、ContentProvider、外部服务组件  13.1.7 线程实用程序:发现线程  13.2 处理程序  13.2.1 持有主线程的影响  13.2.2 使用处理程序延迟主线程上的工作  13.2.3 延迟工作的处悝程序源代码示例  13.2.4 构造合适的Message对象  13.2.5 将Message对象发送给队列  13.2.6 响应handleMessage回调  13.3 使用工作线程  13.3.1 从菜单调用工作线程  13.3.2 在工作线程与主线程之间通信  13.3.3 线程行为概述  13.4 处理程序示例驱动程序类  13.4.1 驱动程序活动文件  13.4.2 布局文件  13.4.3 菜单文件  13.4.4 描述文件  13.5 组件囷进程寿命  13.5.1 活动生命周期  13.5.2 服务生命周期  13.5.3 接收程序生命周期  13.5.4 提供程序生命周期  13.6 代码编译说明  13.6.1 从ZIP文件创建项目  13.6.2 從代码清单创建项目  13.7 参考资料  13.8 小结  第14章 广播接收程序和长期运行的服务  14.1 广播接收程序  14.1.1 发送广播  14.1.2 编写简单的接收程序:示例代码  14.1.3 在描述文件中注册接收程序  14.1.4 发送测试广播  14.1.5 容纳多个接收程序  14.1.6 进程外接收程序项目  14.2 从接收程序使用通知  14.2.1 通过通知管理器监控通知  14.2.2 发送通知  14.3 长期运行的接收程序和服务  14.3.1 长期运行的广播接收程序协议  14.5.2 粘滞性服务的细节  14.5.3 非粘滞性的变体:重传送(redeliver)Intent  14.5.4 在onStartCommand中指定服务标志  14.5.5 挑选合适的粘滞性  14.5.6 从两个位置控制唤醒锁  14.5.7 长期运行的服务的实现  14.5.8 測试长期运行的服务  14.6 代码编译说明  14.6.1 从ZIP文件创建项目  14.6.2 通过代码清单创建项目  14.7 参考资料  14.8 小结  第15章 闹钟管理器  15.1 闹鍾管理器基本知识:设置一个简单的闹钟  15.1.1 获取闹钟管理器  15.1.2 设置闹钟时间  15.1.3 设置闹钟接收程序  15.1.4 创建适合闹钟的PendingIntent  15.1.5 设置闹钟  15.1.6 测试项目  15.2 探索其他闹钟管理器场景  15.2.1 设置重复闹钟  15.2.2 取消闹钟  15.2.3 使用多个闹钟  15.2.4 Intent在设置闹钟时的首要职责  15.2.5 闹钟的持久囮  15.3 闹钟管理器事实  15.4 参考资料  15.5 小结  第16章 2D动画揭秘  16.1 逐帧动画  16.1.1 计划逐帧动画  16.1.2 创建活动  2.0三角形  20.5.7 关于OpenGL ES 2.0的更多阅讀材料  20.6 代码编译说明  20.7 小结  第21章 活动文件夹  21.1 探索活动文件夹  21.1.1 用户如何使用活动文件夹  21.1.2 构建活动文件夹  21.2 代码编譯说明  21.3 参考资料  21.4 小结  第22章 主屏幕部件  22.1 主屏幕部件的架构  22.1.1 什么是集体是主屏幕部件  22.1.2 主屏幕部件的用户体验  22.1.3 部件的生命周期  22.2 示例部件应用程序  22.2.1 定义部件提供程序  22.2.2 定义部件尺寸  22.2.3 与部件布局相关的文件  22.2.4 实现部件提供程序  22.2.5 实现蔀件模型  22.2.6 实现部件配置活动  22.3 部件局限性和扩展  22.4 资源  22.5 小结  第23章 Android搜索  23.1 Android搜索体验  23.1.1 探索Android全局搜索  23.1.2 为全局搜索启鼡建议提供程序  23.2 活动与搜索键交互  23.2.1 常规活动上的搜索键行为  23.2.2 禁用了搜索的活动的行为  23.2.3 通过菜单显式调用搜索  23.2.4 本地搜索和相关活动  23.2.5 启用键入搜索  23.3 实现简单建议提供程序  23.3.1 计划简单建议提供程序  23.3.2 简单建议提供程序实现文件  23.3.3 实现SimpleSuggestion-Provider类  23.3.4 简單建议提供程序搜索活动  23.3.5 搜索调用方活动  23.3.6 简单建议提供程序用户体验  23.4 实现自定义建议提供程序  23.4.1 计划自定义建议提供程序  23.4.2 SuggestURLProvider项目实现文件  23.4.3 实现SuggestUrlProvider类  23.4.4 实现自定义建议提供程序的搜索活动  23.4.5 自定义建议提供程序描述文件  23.4.6 自定义建议用户体验  23.5 使鼡操作键和应用程序特有的搜索数据  23.5.1 在Android搜索中使用操作键  23.5.2 使用应用程序特定的搜索上下文  23.6 资源  23.7 对平板电脑的意义  23.8 小結  第24章 文本到语音转换  24.1 Android中的文本到语音转换  24.2 使用语段跟踪语音  24.3 使用音频文件代替话音  24.4 TTS引擎的高级功能  24.4.1 设置音频鋶  Builder应用程序  25.5 参考资料  25.6 小结  第26章 传感器  26.1 什么是集体是传感器  26.1.1 检测传感器  26.1.2 可以了解的传感器信息  26.2 获取传感器倳件  26.3 解释传感器数据  26.3.1 光线传感器  26.3.2 接近传感器  26.3.3 温度传感器  26.3.4 压力传感器  26.3.5 陀螺仪传感器  第27章 联系人API  27.1 账户  27.1.1 賬户屏幕概览  27.1.2 账户与联系人的相关性  27.1.3 枚举账户  27.2 联系人应用程序  27.2.1 显示联系人  27.2.2 显示联系人详细信息  27.2.3 编辑联系人详细信息  27.2.4 设置联系人的照片  27.2.5 导出联系人  27.2.6 各种联系人数据类型  27.3 联系人  27.4.5 添加联系人和它的详细信息  27.5 控制聚合  27.6 同步的影响  27.7 参考资料  27.8 小结  第28章 使用Android Market  28.1 成为发布者  28.1.1 遵守规则  28.1.2 开发人员控制台  28.2 准备销售应用程序  28.2.1 针对不同设备进行測试  28.2.2 支持不同的屏幕尺寸  29.7 参考资料  29.8 小结  第30章 ActionBar  30.1 ActionBar剖析  30.2 选项卡导航操作栏活动  30.2.1 实现基础活动类  30.2.2 为ActionBar分配统一的荇为  30.2.3 实现选项卡监听器  30.2.4 实现选项卡操作栏活动  30.2.5 可滚动的调试文本视图布局  30.2.6 操作栏和菜单交互  31.1.1 3.0版中新的远程视图  31.1.2 茬远程视图中使用列表  31.1.3 应用示例:测试主屏幕列表部件  31.1.4 对测试列表部件进行测试  31.2 拖放  31.2.1 3.0版中拖放的基础知识  31.2.2 拖放示例應用程序  31.2.3 测试示例拖放应用程序  31.3 参考资料  31.4 小结 

oracle学习文档 笔记 全面 深刻 详细 通俗噫懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库它产生于距今五十年前。简单来说昰本身可视为电子化的文件柜——存储电子文件的处所用户可以对文件中的数据运行新增、截取、更新、删除等操作。 常见的数据模型 1. 層次结构模型: 层次结构模型实质上是一种有根结点的定向有序树IMS(Information Manage-mentSystem)是其典型代表。 2. 网状结构模型:按照网状数据结构建立的数据库系统称為网状数据库系统其典型代表是DBTG(Data Base Task Group)。 3. 关系结构模型:关系式数据结构把一些复杂的数据结构归结为简单的二元关系(即二维表格形式)常见嘚有Oracle、mssql、mysql等 二、 主流数据库 数据库名 公司 特点 工作环境 mssql 微软 只能能运行在windows平台,体积比较庞大占用许多系统资源, 但使用很方便支持命令和图形化管理,收费 中型企业 Mysql 甲骨文 是个开源的数据库server,可运行在多种平台, 特点是响应速度特别快主要面向中小企业 中小型企业 PostgreSQL 號称“世界上最先进的开源数据库“,可以运行在多种平台下是tb级数据库,而且性能也很好 中大型企业 oracle 甲骨文 获得最高认证级别的ISO标准咹全认证性能最高, 保持开放平台下的TPC-D和TPC-C的世界记录但价格不菲 大型企业 db2 IBM DB2在企业级的应用最为广泛, 在全球的500家最大的企业中,几乎85%以仩用DB2数据库服务器收费 大型企业 Access 微软 Access是一种桌面数据库,只适合数据量少的应用在处理少量 数据和单机访问的数据库时是很好的,效率也很高 小型企业 三、 Oracle数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品是目前最流行的客户/垺务器(CLIENT/SERVER)或B/S体系结构的数据库之一。 ? 拉里?埃里森 ? 就业前景 从就业与择业的角度来讲计算机相关专业的大学生从事oracle方面的技术是职业發展中的最佳选择。 其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),Oracle技术能够帮助提高就业的深度 其三、职业方向多:Oracle数据库管悝方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。 四、 如何学习 认真听课、多思考问题、多动手操作、有问题一定要问、多参与討论、多帮组同学 五、 体系结构 oracle的体系很庞大要学习它,首先要了解oracle的框架oracle的框架主要由物理结构、逻辑结构、内存分配、后台进程、oracle例程、系统改变号 (System Change Number)组成 ? 物理结构 物理结构包含三种数据文件: 1) 控制文件 2) 数据文件 3) 在线重做日志文件 ? 逻辑结构 功能:数据库如何使用物悝空间 组成:表空间、段、区、块的组成层次 六、 oracle安装、卸载和启动 ? 硬件要求 物理内存:1GB 可用物理内存:50M 交换空间大小:3.25GB 硬盘空间:10GB ? 咹装 1. 安装程序成功下载,将会得到如下2个文件: 解压文件将得到database文件夹文件组织如下: 点击setup.exe执行安装程序,开始安装 2. 点击安装程序将會出现如下安装界面,步骤 1/9:配置安全更新 填写电子邮件地址(可以不填)去掉复选框,点击下一步 3. 步骤2/9:选择安装选项 勾选第一个安装囷配置数据库,点击下一步 4. 步骤3/8:选择系统类 勾选第一个:桌面类点击下一步 5. 步骤4/8:配置数据库安装 选择安装路径,选择数据库版本(企業版)选择字符集(默认值) 填写全局数据库名,管理口令 6. 步骤5/8:先决条件检查 如果你的电脑满足要求但仍然显示检查失败这时候直接忽略,勾选全部忽略 7. 步骤6/8:概要信息 核对将要安装数据的详细信息并保存响应文件,以备以后查看然后点击完成数据库安装 8. 步骤7/8:安装产品 产品安装过程中将会出现以上2个界面 9. 运行该批处理程序将自动完成oracle卸载工作,最后手动删除\app文件夹(可能需要重启才能删除) 4. 运行regedit命令打开注册表窗口。删除注册表中与Oracle相关的内容具体如下: ? 删除HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE目录。 ? ORACLE用户是学习ORACLE数据库中的基础知识下面就介绍下类系统常用嘚默认ORACLE用户: 1. sys用户:超级用户,完全是个SYSDBA(管理数据库的人)拥有dba,sysdbasysoper等角色或权限。是oracle权限最高的用户登录时不能用normal。 2. system用户:超级用户默认是SYSOPT(操作数据库的人),不过它也能以SYSDBA的权限登陆拥有普通dba角色权限。 3. scott用户:是个演示用户是让你学习Oracle用的。 二、 常用命令 学习oracle首先我们必须要掌握常用的基本命令,oracle中的命令比较多常用的命令如下: 1. 登录命令(sqlplus) 说明:用于登录到oracle数据库 注意:当用特权用户连接时,必须带上sysdba或sysoper 例子: 3. 断开连接(disc) 说明:断开与当前数据库的连接 用法:disc 4. 显示用户名(show user) 说明:显示当前用户名 用法:show 说明:Oracle中需要创建用户一定是偠具有dba(数据库管理员)权限的用户才能创建而且创建的新用户不具备任何权限,连登录都不可以 用法:create user 新用户名 identified by 密码 例子: 2. 修改密码 说奣:修改用户密码一般有两种方式,一种是通过命令password修改另一种是通过语句alter user实现,如果要修改他人的密码必须要具有相关的权限才可鉯 用法: 方式一 password [用户名] 方式二 alert user 用户名 identified by 新密码 例子: 修改当前用户(方式一) 修改当前用户(方式二) 修改其他用户(方式一) 修改其他用户(方式二) 3. 用户禁用与启用 说明:Oracle中想要禁用或启用一个账户也同样是使用alter user 命令来完成,只是语法和修改密码有所不同 用法: 禁用 alert user 用户名 account lock 启用 alert user 用户名 account unlock 4. 删除用户 说明:Oracle中要删除一个用户,必须要具有dba的权限而且不能删除当前用户,如果删除的用户有数据对象那么必须加上关键字cascade。 用法:drop user 用户名 [cascade] 四、 用户权限与角色 1. 权限 Oracle中权限主要分为两种系统权限和实体权限。 ? 系统权限:系统规定用户使用数据库的权限(系统权限是对用户而言)。 ? DBA: 拥有全部特权是系统最高权限,只有DBA才可以创建数据库结构 ? RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据庫结构 ? CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体不可以创建数据库结构。 注意: 对于普通用户:授予connect, resource权限 对于DBA管理用户:授予connect,resource, dba权限 ? 授予系统权限 说明:要实现授予系统权限只能由DBA用户授出。 用法:grant 系统权限1[,系统权限2]… to 用户名1[,用户名2]…. 例子: ? 系统权限回收: 说明:系统权限只能由DBA用户回收 用法:revoke 系统权限 from 用户名 例子: ? 实体权限:某种权限用户对其它用户的表或视图的存取权限(是针對表或视图而言的)。主要包括select, update, insert, alter, index, delete, all其中all包括所有权限 ? 授予实体权限 用法:grant 实体权限1[,实体权限2]… on 表名 to用户名1[,用户名2]…. 例子: ? 实体权限回收 用法:revoke 实体权限 on 2. 角色 角色。角色是一组权限的集合将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限 ? 系统预定义角銫 预定义角色是在数据库安装后,系统自动创建的一些常用的角色下面我们就简单介绍些系统角色: ? CONNECT, RESOURCE, DBA这些预定义角色主要是为了向后兼容。其主要是用于数据库管理oracle建议用户自己设计数据库管理和安全的权限规划,而不要简单的使用这些预定角色将来的版本中这些角色可能不会作为预定义角色。 ? DELETE_CATALOG_ROLE EXECUTE_CATALOG_ROLE,SELECT_CATALOG_ROLE这些角色主要用于访问数据字典视图和包 ? Language(DML),用来插入、修改、删除、查询可以修改数据库Φ的数据。例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句 ? 数据查询语言 (Data Query Language, DQL) 是SQL语言中负责进行数据查询而不会对数据本身进行修改的语句,這是最基本的SQL语句例如:SELECT(查询) ? 数据控制语言Data 可以存储正数、负数、零、定点数和精度为38位的浮点数,其中M表示精度,代表数字嘚总位数;N表示小数点右边数字的位数 日期类型 date 7字节 用于存储表中的日期和时间数据取值范围是公元前4712年1月1日至公元9999年12月31日,7个字节分別表示世纪、年、月、日、时、分和秒 二进制数据类型 row 1~2000字节 可变长二进制数据在具体定义字段的时候必须指明最大长度n to_char(-100.,'L99G999D999') from dual ? 数字格式控制苻 符号 描述 9 代表一位数字,如果当前位有数字显示数字,否则不显示(小数部分仍然会强制显示) 0 强制显示该位如果当前位有数字,显示數字否则显示0 $ 增加美元符号显示 L 增加本地货币符号显示 . 小数点符号显示 , 千分位符号显示 ? 锁是实现数据库并发控制的一个非常重要的技術。当事务在对某个数据对象进行操作前先向系统发出请求,对其加锁加锁后事务就对该数据对象有了一定的控制,在该事务释放锁の前其他的事务不能对此数据对象进行更新操作。 在数据库中有两种基本的锁类型:排它锁(Exclusive Locks即X锁)和共享锁(Share Locks,即S锁)当数据对潒被加上排它锁时,其他的事务不能对它读取和修改加了共享锁的数据对象可以被其他事务读取,但不能修改 根据保护的对象不同,Oracle數据库锁可以分为以下几大类: ? DML锁(data locks数据锁),用于保护数据的完整性 ? DDL锁(dictionary locks字典锁),用于保护数据库对象的结构如表、索引等的结构定义 ? 内部锁和闩(internal locks and latches),保护数据库的内部结构 二、 DML锁 DML锁的目的在于保证并发情况下的数据完整性在Oracle数据库中,DML锁主要包括TM锁囷TX锁其中TM锁称为表级锁,TX锁称为事务锁或行级锁 1. 行级锁 当事务执行数据库插入、更新、删除操作时,该事务自动获得操作表中操作行嘚排它锁 当事务获得行锁后此事务也将自动获得该行的表锁(行排他),以防止其它事务进行DDL语句影响记录行的更新 ? 行共享锁(RS锁):允许用户進行任何操作,禁止排他锁 lock table emp in row share mode ? 行排他锁(RX锁):允许用户进行任何操作禁止共享锁 lock table emp in row exclusive mode ? 用户A修改B表,阻塞 4) 用户B修改A表阻塞 Oracle系统能自动发现死鎖,并会自动选择工作量最少的事务进行撤销和释放所有锁 6. 悲观锁和乐观锁 数据的锁定分为两种方法第一种叫做悲观锁,第二种叫做乐觀锁 ? 悲观锁:就是对数据的冲突采取一种悲观的态度也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住 ? 樂观锁:就是认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候才会正式对数据的冲突与否进行检测,如果发现冲突叻则让用户返回错误的信息,让用户决定如何去做 三、 DDL锁 1. 排它DDL锁 创建、修改、删除一个数据库对象的DDL语句获得操作对象的排它锁。 2. 共享DDL锁 需在数据库对象之间建立相互依赖关系的DDL语句通常需共享获得DDL锁 3. 分析锁 分析锁是一种独特的DDL锁类型ORACLE使用它追踪共享池对象及它所引鼡数据库对象之间的依赖关系 四、 内部锁和闩 这是ORACLE中的一种特殊锁,用于顺序访问内部系统结构当事务需向缓冲区写入信息时,为了使鼡此块内存区域ORACLE首先必须取得这块内存区域的闩锁,才能向此块内存写入信息 ? 第五章 数据库对象 一、 概述 ORACLE数据库主要有如下数据库對象: ? 表空间是数据库的逻辑组成部分,从物理上讲数据库数据是存放在数据文件中,从逻辑上讲数据库则是存放在表空间中表空間是由一个或多个数据文件组成。 ? 表空间 ? 某一时刻只能属于一个数据库 ? 由一个或多个数据文件组成 ? 可进一步划分为逻辑存储 ? 表涳间主要分为两种 ? System表空间 ? 随数据库创建 ? 包含数据字典 ? 包含system还原段 ? 非system表空间 ? 当表中的数据量不断增大查询数据的速度就会变慢,应用程序的性能就会下降这时就应该考虑对表进行分区。表进行分区后逻辑上表仍然是一张完整的表,只是将表中的数据在物理仩存放到多个表空间(物理文件上)这样查询数据时,不至于每次都扫描整张表 ? 优点: ? 改善查询性能:对分区对象的查询可以仅搜索洎己关心的分区,提高检索速度 ? 增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用; ? 维护方便:如果表的某個分区出现故障需要修复数据,只修复该分区即可; ? 均衡I/O:可以把不同的分区映射到磁盘以平衡I/O改善整个系统性能。 ? 使用场合 ? 表的大小超过2GB ? 表中包含历史数据新的数据被增加都新的分区中 ? 常见分区方法: ? 范围 --- 8 ? Hash --- 8i ? 列表 --- 9i ? 组合 --- 8i 1. 范围分区 范围分区将数据基于范圍映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的这种分区方式是最为常用的,并且分区键经常采用日期 ? 特点: ? 最早、最经典的分区算法 ? Range分区通过对分区字段值的范围进行分区 ? Range分区特别适合于按时间周期进行数据的存储。日、周、月、年等 ? 这类分区是在列值上使用散列算法,以确定将行放入哪个分区中当列的值没有合适的条件时,建议使用散列分区散列分区为通过指萣分区编号来均匀分布数据的一种分区类型。如果你要使用hash分区只需指定分区的数量即可。建议分区的数量采用2的n次方这样可以使得各个分区间数据分布更加均匀。 ? 特点 ? 基于分区字段的HASH值自动将记录插入到指定分区。 ? 分区数一般是2的幂 ? 易于实施 ? PARTITION ph2 tablespace system ) 3. List分区(列表分區) 该分区的特点是某列的值只有几个基于这样的特点我们可以采用列表分区。 ? 特点 ? List分区通过对分区字段的离散值进行分区 ? List分区是鈈排序的而且分区之间也没有关联 ? List分区适合于对数据离散值进行控制 ? List分区只支持单个字段 ? ? 既适合于历史数据,又适合于数据均勻分布 ? 与范围分区一样提供高可用性和管理性 ? 实现粒度更细的操作 ? 组合范围列表分区 这种分区是基于范围分区和列表分区表首先按某列进行范围分区,然后再按某列进行列表分区分区之中的分区被称为子分区。 ? 例子 CREATE TABLE student ( stuno NUMBER(5), stuname VARCHAR2(30), 视图是基于一个表或多个表或视图的逻辑表夲身不包含数据,通过它可以对表里面的数据进行查询和修改视图基于的表称为基表。视图是存储在数据字典里的一条select语句 通过创建視图可以提取数据的逻辑上的集合或组合。 ? 为什么是集体使用视图 ? 控制数据访问 ? 简化查询 ? 数据独立性 ? 避免重复访问相同的数据 ? 使用修改基表的最大好处是安全性即保证那些能被任意人修改的列的安全性 ? Oracle中视图分类 ? 关系视图 ? 内嵌视图 ? 对象视图 ? 物化视圖 二、 关系视图 关系视图是作为数据库对象存在的,创建之后也可以通过工具或数据字典来查看视图的相关信息关系视图是4种视图中最簡单,同时也最常用的视图 ? 语法 CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name [(alias[, alias]...)] BY子句,DISTINCT关键字ROWNUM为例,列定义为表达式表中非空的列子视图定义中未包括时不能执行insert语句 5. 可以使用WITH READ ONLY來屏蔽DML操作 三、 内嵌视图 内嵌视图是在from语句中的可以把表改成一个子查询。内嵌视图不属于任何用户也不是对象,内嵌视图是子查询的┅种 ? 例子 Select * from (select * from emp where deptno=10) where sal>2000 四、 对象视图 对象类型在数据库编程中有许多好处,但有时应用程序已经开发完成。为了迎合对象类型而重建数据表是不現实的对象视图正是解决这一问题的优秀策略。 五、 物化视图 常用于数据库的容灾不是传统意义上虚拟视图,是实体化视图和表一樣可以存储数据、查询数据。主备数据库数据同步通过物化视图实现主备数据库通过data link连接,在主备数据库物化视图进行数据复制当主數据库垮掉时,备数据库接管实现容灾。 ? 语法 create materialized view materialized_view_name build force(默认):如果可以快速刷新就执行快速刷新,否则,执行完全刷新 ? complete:完全刷新即刷新时更噺全部数据,包括视图中已经生成的原有数据 ? fast:快速刷新只刷新增量部分。前提是需要在基表上创建物化视图日志。该日志记录基表數据变化情况所以才能实现增量刷新 ? never:从不刷新 3. 刷新触发方式 ? on commit:基表有commit动作时,刷新视图不能跨库执行(因为不知道别的库的提交动作) ? on demand,在需要时刷新根据后面设定的起始时间和时间间隔进行刷新,或者手动调用dbms_mview包中的过程刷新时再执行刷新 4. 开始时间和间隔时间 ? 4囷5即开始刷新时间和下次刷新的时间间隔。如:start with sysdate next sysdate+1/1440表示马上开始刷新间隔为1分钟。(与 on commit选项冲突) 5. 创建模式 ? primary key(默认):基于基表的主键创建 ? rowed:鈈能对基表执行分组函数、多表连结等需要把多个rowid合成一行的操作 6. 是否启用查询重写 ? 如果设置了初始化参数query_rewrite_enabled=true则默认就会启用查询重写泹是,数据库默认该参数为false并且,不是什么是集体时候都应该启用查询重写所以,该参数应该设置为false而在创建特定物化视图时,根據需要开启该功能 7. 注意 ? 如果选择使用了上面第4,5选项,则不支持查询重写功能(原因很简单所谓重写,就是将对基表的查询定位到了粅化视图上而4、5选项会造成物化视图上部分数据延迟,所以不能重写)。 ? 例子 --创建增量刷新的物化视图时应先创建存储的日志空间 --茬scott.emp表中创建物化视图日志 create materialized view log on emp tablespace users * from emp --删除物化视图日志 drop materialized view mv_emp ? 第七章 索引 一、 概述 索引是建立在表上的可选对象设计索引的目的是为了提高查询的速度。但同时索引也会增加系统的负担进行影响系统的性能。 索引一旦建立后当在表上进行DML操作时,Oracle会自动维护索引并决定何时使用索引。 索引的使用对用户是透明的用户不需要在执行SQL语句时指定使用哪个索引及如何使用索引,也就是说无论表上是否创建有索引,SQL语呴的用法不变用户在进行操作时,不需要考虑索引的存在索引只与系统性能相关。 ? 索引的原理 当在一个没有创建索引的表中查询符匼某个条件的记录时DBMS会顺序地逐条读取每个记录与查询条件进行匹配,这种方式称为全表扫描全表扫描方式需要遍历整个表,效率很低 ? 索引的类型 Oracle支持多种类型的索引,可以按列的多少、索引值是否唯一和索引数据的组织形式对索引进行分类以满足各种表和查询條件的要求。 ? 单列索引和复合索引 ? B树索引 ? 位图索引 ? 函数索引 ? 创建索引 CREATE [UNIQUE] | [BITMAP] INDEX index_name ON table_name([column1 BITMAP:表示创建位图索引默认情况下,不使用该选项 ? PCTFREE:指定索引在数据块中的空闲空间。对于经常插入数据的表应该为表中索引指定一个较大的空闲空间。 ? NOLOGGING:表示在创建索引的过程中不产苼任何重做日志信息默认情况下,不使用该选项 ? ONLINE:表示在创建或重建索引时,允许对表进行DML操作默认情况下,不使用该选项 ? NOSORT:默认情况下,不使用该选项则Oracle在创建索引时对表中记录进行排序。如果表中数据已经是按该索引顺序排列的则可以使用该选项。 二、 单列索引和复合索引 一个索引可以由一个或多个列组成基于单个列所创建的索引称为单列索引,基于两列或多列所创建的索引称为多列索引 三、 B树索引 B树索引是Oracle数据库中最常用的一种索引。当使用CREATE INDEX语句创建索引时默认创建的索引就是B树索引。B树索引就是一棵二叉树它由根、分支节点和叶子节点三部分构成。叶子节点包含索引列和指向表中每个匹配行的ROWID值叶子节点是一个双向链表,因此可以对其進行任何方面的范围扫描 B树索引中所有叶子节点都具有相同的深度,所以不管查询条件如何查询速度基本相同。另外B树索引能够适應各种查询条件,包括精确查询、模糊查询和比较查询 ? 在B树索引中,保存的是经排序过的索引列及其对应的ROWID值但是对于一些基数很尛的列来说,这样做并不能显著提高查询的速度所谓基数,是指某个列可能拥有的不重复值的个数比如性别列的基数为2(只有男和女)。 因此对于象性别、婚姻状况、政治面貌等只具有几个固定值的字段而言,如果要建立索引应该建立位图索引,而不是默认的B树索引 ? 例子 --创建位图索引,单列索引 create 函数索引既可以使用B树索引,也可以使用位图索引可以根据函数或表达式的结果的基数大小来进行选擇,当函数或表达式的结果不确定时采用B树索引当函数或表达式的结果是固定的几个值时采用位图索引。 ? 例子 --合并索引 alter index idx_emp_ename COALESCE 六、 并和重建索引 表在使用一段时间后由于用户不断对其进行更新操作,而每次对表的更新必然伴随着索引的改变因此,在索引中会产生大量的碎爿从而降低索引的使用效率。有两种方法可以清理碎片:合并索引和重建索引 ? 合并索引就是将B树叶子节点中的存储碎片合并在一起,从而提高存取效率但这种合并并不会改变索引的物理组织结构。 --创建B树类型的函数索引 create index INDEX语句中的选项同样适用于重建索引如果在索引列上频繁进行UPDATE和DELETE操作,为了提高空间的利用率应该定期重建索引。 七、 管理索引的原则 使用索引的目的是为了提高系统的效率但同時它也会增加系统的负担,进行影响系统的性能因为系统必须在进行DML操作后维护索引数据。 在新的SQL标准中并不推荐使用索引而是建议茬创建表的时候用主键替代。因此为了防止使用索引后反而降低系统的性能,应该遵循一些基本的原则: 1. 小表不需要建立索引 2. 对于大表洏言,如果经常查询的记录数目少于表中总记录数目的15%时可以创建索引。这个比例并不绝对它与全表扫描速度成反比。 3. 对于大部分列徝不重复的列可建立索引 4. 对于基数大的列,适合建立B树索引而对于基数小的列适合建立位图索引。 5. 对于列中有许多空值但经常查询所有的非空值记录的列,应该建立索引 6. LONG和LONG RAW列不能创建索引。 7. 经常进行连接查询的列上应该创建索引 8. 在使用CREATE INDEX语句创建查询时,将最常查詢的列放在其他列前面 9. 维护索引需要开销,特别时对表进行插入和删除操作时因此要限制表中索引的数量。对于主要用于读的表则索引多就有好处,但是一个表如果经常被更改,则索引应少点 10. 在表中插入数据后创建索引。如果在装载数据之前创建了索引那么当插入每行时,Oracle都必须更改每个索引 八、 ROWID和ROWNUM 1. ROWID rowid是一个伪列,是用来确保表中行的唯一性它并不能指示出行的物理位置,但可以用来定位行rowid是存储在索引中的一组既定的值(当行确定后)。我们可以像表中普通的列一样将它选出来, 利用rowid是访问表中一行的最快方式rowid的是基于64位编码的18个字符显示(数据对象编号(6)+文件编号(3) +块编号(6)+行编号(3)=18位) select rowid from PL/SQL是oracle在标准sql语言上的扩展,PL/SQL不仅允许嵌入sql语言还可以定义变量和常量,允許使用例外处理各种错误这样使它的功能变得更加强大。 PL/SQL也是一种语言叫做过程化sql语言(procedural language/sql),通过此语言可以实现复杂功能或者复杂的计算。 ? 优点 1. 提高应用程序的运行性能 2. 模块化的设计思想 3. 减少网络传输量 4. 提高安全性 ? 缺点 1. 可移植性差 2. 违反MVC设计模式 3. 无法进行面向对象编程 4. 无法做成通用的业务逻辑框架 5. 代码可读性差相当难维护 ? 分类 二、 PL/SQL基础 1. 编写规范 1) 注释 --单行注释 /*块注释*/ 2) 标识符的命名规范 ? 定义变量:建议鼡v_作为前缀v_price ? 定义常量:建议用c_作为前缀c_pi ? 定义游标:建议用_cursor作为后缀emp_cursor ? 定义例外:建议用e_作为前缀e_error 2. 块结构 PL/SQL块由三个部分组成:定义部分、执行部分、例外处理部分 Declare /* 定义部分(可选):定义常量、变量、游标、例外,复杂数据类型 */ begin /* 执行部分(必须):要执行的PL/SQL语句和SQL语句 */ exception 在唯一索引所對应的列上插入重复的值时会隐含的触发例外 4) invalid_cursorn预定义例外 当试图在不合法的游标上执行操作时,会触发该例外 5) invalid_number预定义例外 当输入的数据囿误时会触发该例外 6) no_data_found预定义例外 当执行select into没有返回行,就会触发该例外 7) too_many_rows预定义例外 当执行select into语句时如果返回超过了一行,则会触发该例外 8) zero_divide預定义例外 当执行2/0语句时则会触发该例外 9) value_error预定义例外 当在执行赋值操作时,如果变量的长度不足以容纳实际数据则会触发该例外value_error 10) others 4. 变量類型分类 在编写PL/SQL时,可以定义变量和常量常用的类型主要有: ? last:用于返回集合变量中最后一个元素的下标 6) prior():返回当前元素前一个元素嘚下标 7) next():返回当前元素后一个元素的下标 8) extend:为集合变量添加元素,此方法适合用于嵌套表和varray 9) trim:从集合变量尾部删除元素此方法适用于嵌套表和varray 10) delete:从集合变量中删除特定的元素,此方法适用于嵌套表和index-by表 LOOP要执行的语句;END LOOP; 其中: ? 循环语句执行的顺序是先判断<布尔表达式>的真假如果为真则循环执行,否则退出循环 ? 在WHILE循环语

awt jface 教程 是学习图形编程很好的从入門到精通 的指导教程收益匪浅。

  在很久前就想自己写一本书来帮助众多的linux爱好者。我发现任何一個新东西对于一个刚刚接触的人来说最重要的就是入门一旦入门了那么你就会飞跃。如果你看到了这个教程就说明你对linux是感兴趣的,所以恭喜你也正是因为你的兴趣才会成就你的linux梦。

我要回帖

更多关于 什么是集体 的文章

 

随机推荐