全国计算机四级考试复习纲要-第六章(5)

卫文 1172分享

  十二、分布式数据库

  1.分布式数据库的分类

  分布式数据库,是根据它的管理系统(Distributed DBMS-DDBMS)进行分类的。对DDBMS可以从四个不同角度来分类:

  (1)从构成的方式,可分为同构型和异构型两类所谓同构型,是指所有节点的局部DBMS都支持同一数据模式和数据语言。为使每个节点都掌握彼此的数据情况,需要增加网络数据库管理系统(NDBMS),各节点之间通过通信网络形成统一的整体。同构型的DDBMS对于并发控制、冗余数据的一致性等问题容易处理,但建库的代价比较大。所谓异构型系统,是指在分布环境中各节点上的数据模型和数据语言都可能不同。异构比同构型系统实现起来要困难一些,为了在两个节点上的局部DBMS之间进行信息交换,就要对数据模式和数据语言进行转换和映射工作。

  (2)按控制方式,可以分为集中式与分布式所谓集中控制的DDBM指所有事务都由一台叫做中心计算机的节点进行管理。分布控制的DDBMS,是指每个节点都保持DDBMS的一个副本来监督和管理各节点及系统事务,它将网络目录作为用户数据库存放于局部DB之中。

  (3)从数据分布的角度,DDBMS又可分为分割式、部分重复式和完全重复式所谓分割式,是指每个节点只存储DDB数据实体的部分子集,各节点的副本互不重叠。部分重复式,是指每个节点都存储DDB数据实体的任意子集。完全重复式,是指每个节点都存储整个DDB数据实体的副本。也有文献把完全重复式称为复制式。(4)从用户的角度,DDBM可分为总体型和多重型。

  2.分布式数据库与单一数据库的比较

  (1)集中控制 在一个企业或单位范围内的信息资源上,对信息提供集中式控制的可能性,被认为是采用数据库技术的最大动力之一,因为集中式数据库是根据信息系统的演变和集中处理信息的需求开发出来的。

  (2)数据独立性 数据独立性也曾经被认为是采用数据库方法的主要动力之一。实际上,数据独立性意味着数据的实际结构对应用程序来讲是透明的,应用程序员只需要利用数据逻辑结构,即所谓概念模式来编写程序。数据独立性的主要优点是应用不受数据存储的物理结构变化的影响。在分布式数据库中,数据的独立性具有与传统的集中式数据同等的重要性,然而,一种崭新概念加进了数据独立性的一般概念之中,这就是分布式透明性。所谓分布式透明性,指的是在编写程序时就好象数据没有被分布一样。这样,无论把数据存储到甲地或乙地,或者把数据从一个节点移到另一个节点,都不会影响程序执行的正确性和有效性,但是,必须指出,执行速度或者效率却受到了影响。众所周知,通过具有不同形式的数据描述和它们之间的映射的多层体系结构,曾为传统的数据库提供了独立性,为此目的,开发出了概念模式、存储模式和外部模式等概念。利用类似的方法,我们可以通过采用新层次和新模式,在分布式数据库中可获得分布式透明性。分布式透明性是分布式数据库系统的主要目标之一。

  (3)降低冗余 在传统数据库系统中,尽可能地降低冗余度是它的主要目标之一。这有两个原因:首先,通过只用一个正本,可以自动地避免同一逻辑数据中几个副本之间的不一致性。其次,用降低冗余度来节约存储空间。通过共享数据的方式,即通过允许几个应用访问同一文件和记录可以达到降低冗余度的目的。但是,在分布式数据库中,把数据的冗余看成是所需要的特性。这有几个原因:首先,如果在需要冗余的所有节点都复制数据,则可以增加应用的局部性。其次,可以增加分布式数据库系统的有效性和可靠性。因为,如果复制数据,则一个节点上的故障不会停止其它节点上应用的执行。在一般情况下,为传统集中式环境所规定的克服冗余的原因,在分布式环境中仍是有效的。因此,在分布式数据库中,对冗余度的评价要选择一种折衷方案,不能一概而论。一般地说,复制数据项的方便程度是随着应用所执行的检索访问与更新访问的比率提高而增加。数据复制便利程度的提高,是因为具有一个项目多个副本,检索可以在任一副本上进行,而更新却必须在所有副本上一致地进行。

  (4)有效访问 复杂的访问结构,如辅助索引,文件间的链接等,都是传统数据库所采用的重要技术,对这些结构的支持是数据库管理系统DBMS极为重要的组成部分。提供复杂访问结构的原因,是为了提高存取数据的效率。

  (5)完整性、恢复和并发控制 在数据库理论中,尽管完整性、恢复和并发控制等所涉及的问题是不同的,但它们之间相互联系还是很多的,一般来说,完整性、恢复和并发控制等问题的解决,在很大程度上取决于所提供的事务的结构形式。

  (6)保密性和安全性 在传统数据库中,具有集中式控制的数据库管理员能保证只执行那些授权的数据访问。但应当指出,集中式数据库本身比过去处理单独文件的旧方法更难于实现数据的保密性和安全性。在分布式数据库中,局部数据库管理员面临的一些主要问题,与传统数据库管理员面临的问题一样。但是,分布式数据库的两个独特方面值得一提:首先,在具有极高度节点自主权的分布式数据库中,局部数据的拥有者认为比较安全,因为他们能自主地实施自己的安全措施,以履行集中式数据库管理员的职责。其次,安全性问题,一般是分布式系统的固有问题,因分布式系统是通过通信网络来实现分布式控制的,而通信网络本身就在保护数据的安全性和保密性方面存在着弱点。通过网络偷看、乱改别人的数据难以完全避免。

  3.分布式数据库管理系统(DDBMS)

  在目前分析DDBMS的性能时,应该把商品化系统和先进的研究样机区分开来,但是可以预料,某些先进的研究样机中试验的特性,可能会应用到将来的商品化系统中去的。本节简要叙述分布式数据库管理系统的基本性能,并就用什么样的方法使得分布式数据库这个新技术商品化的问题谈一点看法。从目前看,世界上几各已经商品化的分布式系统是由集中式数据库管理系统的销售厂商开发出来的。这些分布式数据库管理系统,包括扩充集中式DBMS时所附加的部件。分布式功能的扩充是通过装配在计算机网络中不同节点上的DBMS之间所提供的通信和合作来实现的。在这种情况下建立分布式数据库通常所必须的软件部分是:

  (1)数据库管理部分(DB);

  (2)数据通信部分(DC);

  (3)数据字典(DD),它能用来表示有关网络中数据分布的信息;

  (4)分布式数据库部分(DDB)。

  十三、分布式ORACLE系统简介

  1.分布式体系结构的ORACLE

  1986年,ORACLE公司推出了它的分布式体系结构的ORACLE数据库系统。该系统是由分布式数据库管理系统(ORACLE RDBMS)、支持多种操作系统和通信协议的分布式处理环境软件SQL*NET、以及与非ORACLE RDBMS联接的软件SQL*CONNECT这三部分组成的一个软件群。分布式ORACLE采用了典型的开放式体系结构,对环境的适应范围非常广泛,可适应多种通信协议、多种操作系统、多种硬件环境及多种DBMS和数据源。

  2.网络ORACLE的连接过程

  网络ORACLE的连接过程大致包括以下几步:

  (1)确认网络结点是否安装了SQL*NET,如未安装,则需执行:*$SYS@ORACLE:NCONFIG.COM≠进行安装,并且使用SGAPAD.COM重新链接。

  (2)确认安装中选取的网络驱动器与操作系统环境下所配置的通信协议是否相符。(3)待(1)、(2)两项均确认后,则可在服务器(Server)结点上建立一个命令文件。这个命令文件主要完成以下工作:指定ORACLE系统标识码SID,从而确定将哪一个ORACLE RDBMS作为服务器。这是因为同机上可运行多个ORACLE RDBMS,指定方式为:$ASSIGN〈SID标识码〉ORACLE$SID指定ORACLE系统所在目录:$ASSIGN〈目录名〉SYS$ORACLE指定SQL*NET执行代码的逻辑名$ORASRV=SYS$ORACLE:ORASRV.EXE启动SQL*NET的执行代码$ORASRV DECNET-NSP:

  (4)待完成以后,用户即可进行远程访问。(注意两个结点上的ORACLE系统应处于开启状态)

  (5)为了加强网络通信管理和避免冲突等原因,可以通过VAX/VMS网络控制程序NCP建立一和于ORACLE网络通信的缺省帐号。

  3.网络ORACLE的使用

  除了以下实用程序以外,其它ORACLE实用程序和软件工具均可以通过SQL*NET访问远程结点的ORACLE系统IOR AJI仅供本地使用。另外,用户通过各种语言编写的应用程序也可以进行远程存取。用户远程存取的方式非常简单,仅需要在“用户名/口令”(ORACLE的合法用户)后面附上结点信息。

  4.分布式查询

  分布式查询和数据传输,主要指用户在前端机上执行本地的进程通过SQL语句或SQLplus命令查询或传输远程结点上的数据。由于网络ORACLE系统的分布式查询功能很强,用户可以同时查询多个结点上的数据库数据。传输数据功能用于两个结点之间数据及定义的复制,下面将分别介绍。ORACLE系统分布式查询的功能使得一个结点上的用户可以通过SQL查询语句访问其它结点数据库的数据。并且用户还可以同时存取访问多个结点(包括本地结点)的数据,从而使数据库的查询功能大大增强。

  (1)数据库链路(DATABASE LINK)为了使分布式查询操作更加简单方便,ORACLE RDBMS为用户提供了一个新的数据定义方式:数据库链路。用户可以通过数据库链路定义,在本地结点和远程之间进行查询和连接。进行远程访问的用户需要明确:远程数据库所在的结点;远程结点上的哪个数据库;远程数据库的哪个用户。数据库链路即用于标识以上内容。用户通过SQL的CREATE DATABASE LINK语句定义数据库链路。其格式为:CREATE[PUBLIC]DATABASE LINK链路名CONNECT TO用户名INENTIFIED BY口令USING‘驱动器前缀:结点名““操作系统用户名口令”””::“““TASK=ORDN后缀.COM”””;如果用户事先定义一个逻辑名:$ASSIGN结点名,“““操作系统用户名口令”””::“““TASK=ORDN后缀.COM”””,逻辑名那么CREATE DATABASE LINK就变得十分简洁:CREATE[PUBLIC]DATABASE LINK链路名CONNECT TO用户名IDENTIFIED BY口令USING‘驱动器前缀:逻辑名’;这里PUBLIC代表公用数据库链路,只有DBA才能使用PUBLIC限定词。

  (2)远程查询操作在数据库链路定义以后,远程查询就变得非常简单和方便。用户访问查询数据库的表或视图时,只要在表名或视图名后面附上数据库链路名即可通过SELECT语句进行查询。其形式为:SELECT列表达式[,列表达式,…] FROM表名@数据库链路名[,表名@数据库链路名,…] [WHERE逻辑表达式];

  (3)定义同义名用户可以用同义名来简化一些繁琐的表名或视图名。对于远程查询操作,用户也可以为远程数据库的表名或视图名定义相应的同义名。

  (4)连接操作在远程查询中,用户可以连接相同(或不同)结点上数据库中的表。连接(JOIN)操作可以针对以下情况:同一数据库中的两个表或多个表;同一结点不同数据库中的两个表或多个表;不同结点上数据库中的两个表或多个表;

  (5)查询远程数据库中其他用户的数据用户在通过数据库链路进行远程查询时,可以访问其他用户的数据。数据库链路的定义中指定一个远程用户名及口令,这个用户名被称为链路用户名。上面所述的“其他用户”即指非链路用户。如果链路用户具有访问其他某一用户,记为用户A的权限,那么,Client用户就可以通过数据库链路查询服务器用户A中的数据。

  (6)远程子查询前面介绍的是基于主查询的远程访问。事实上,SQL语句中的子查询(Sub-query)也可以访问远程结点的数据库数据。这种子查询称为远程子查询。可嵌入查询的语句有:SELECT INSERT UPDATE CREATE TABLE CREATE VIEW

  5.远程数据传输

  目前网络ORACLE系统尚不能通过INSERT,UPDATE语句更新远程结点的数据库数据。但是ORACLE提供结点之间传输数据库数据的能力。SQL/plus的COPY命令将用于实现这一功能。用户使用COPY命令可以进行从一个结点(称为源结点)到另一结点(称为目标结点)之间的数据传输或复制。使用COPY命令与数据库链路的定义类似,需要反映定结点名、数据库(即命令文件和“用户名/口令”。其中源描述和目标描述分别用于指示源结点目标结点上的结点名、数据库(即命令文件)和“用户名/口令”,下面是COPY命令的基本形式:COPY[FROM源名][TO目标名] {APPEND|CREATE|INSERT|REPLACE} 表名[(列名[,列名…])] USING SELECT语句其中源名和目标名分别用于指定源结点和目标结点上的结点名、数据库和“用户名/口令”,如:用户名/口令@驱动器前缀:结点名“““用户名口令”””::“““TASK=ORDN后缀.COM”””;如果事先分配了逻辑名,则源描述和目标描述会变得更简洁一些。如果源结点为本地,则COPY命令可略去FROM子句。如果目标结点为本地,则可除去TO子句。COPY命令将传送数据到目标数据库指定表。具体传输的数据是子查询的结果。其中APPEND、CREATE、INSERT和REPLACE限定词用于指定传输的方式:APPEND 将传输的数据加在指定表中。如果该表不存在,则先建表,再加入;INSERT 将传输的数据加在指定的表中。如果该表不存在,则先建表,再加入数据;CREATE 建立指定的表,并加入数据,如果该表存在,则出错;REPLACE 将传输数据替换原表中已有的数据。

  十四、面向对象方法与面向对象数据库

  1.面向对象技术的形成与发展

  80年代以来,面向对象语言如雨后春笋搬出现,形成了面向对象语言的两大类:一类是纯面向对象的语言,如Smalltalk和Eiffel等;另一类是混合型面向对象语言,即在过程语言中增加面向对象的机制,如C++、Objective-C等等。现在,作为80年代最流行的C语言的扩充的面向对象C++,是目前应用最广泛的语言。C++编译产生的代码性能几乎与传统的C编译产生的代码性能相同。面向对象的Pascal和BASIC也已在DOS、Windows上OS/2中实现。现在,面向对象技术已成为一种广泛使用的成熟的技术和方法,有一系列成熟的商品软件工具支持OON。OON中涉及到下列一些基本概念:信息(Information)是指对事物的一种表示或描述。对象(Object)是一个由信息及其关于信息处理的描述组成的包。消息(Message)是对某种信息的处理的描述。类(Class)是对一个或几个相似对象的描述。实例(Instance)是被某一个特定的类所描述的一个对象。因此,每一个对象都是某个类的一个实例,而类是一些实例的全部相似特征的描述。方法(Method)是描述对象对消息的响应。对象是一个普遍适用的基本的逻辑概念,是一个有组织形式的、含有信息的实体或结构。它既可以表示一个抽象的概念,也可以表示一个具体的程序模块;既可以表示软件,也可以表示硬件。于是,OOM提供了同时在现实世界和机器世界进行系统分析、设计和实现的统一的方法。

  2.程序设计方法学

  随着软件系统规模的扩大和复杂性的增加,软件的开销也惊人地增加了,而软件的可靠性和可维护性却明显地下降了。为此,人们惊呼软件危机。产生软件危机的根本原因在于传统的冯?诺依曼机(Von Neumann Machine)的结构和人们求解问题的方法的不一致性。这种不一致性主要表现在以下几个方面:

  (1)语言的鸿沟;

  (2)程序设计的鸿沟;

  (3)Von Neumann机的鸿沟。语言的鸿沟是形成软件危机的主要原因之一。从目前看,面向对象的语言在缓解软件危机方面起到了很大的作用,取得了前所未有的积极效果。

  3.面向对象的程序设计方法

  经验告诉我们:在软件系统中,“过程”或“操作”是不稳定的、多变的,而“数据结构”或“对象”却是相对稳定多了。因此,传统的以过程为中心而设计的软件的可重用性差;而以数据结构或对象为中心而设计的软件的可重用性较好。面向对象的程序设计方法以数据结构或对象为中心,力求问题在现实世界和机器世界中的一致性。在使用OOM进行程序设计时,首先进行的是面向对象的分析(Object Oriented Analysis)。其任务是了解问题所涉及的对象、对象间的关系,然后在现实世界中构造该问题的对象模型,以反映所要解决的“实质问题”。然后,进行面向对象的设计(Object Oriented Design),即设计软件的对象模型。根据软件开发环境的功能,把问题的对象模型从现实世界过渡到机器世界。在软件系统内设计出各个对象、对象间的关系(如继承关系),对象间的通信方式(如消息模式)等等。总之,在该阶段应明确各个对象应做些什么及其关系。面向对象的实现(Object Oriented Implementation)是指软件功能的具体实现,即怎么做的实现其中包括对象内部功能的实现、确定系统的用户接口。在实际开发一个系统时,上述三个阶段必须有机地结合在一起。现在提倡面向对象的软件开发方法,并进一步规范化,还开发了一系列OOM的软件工具和软件环境,以支持软件自动生成。

  4.面向对象的方法的基本概念与特征

  实质上,软件是问题及其求解方法的一种表达形式。显然,如果软件能直接自然地表达求解方法,则软件不仅易于理解,而且也具有较高可靠性与可维护性。如果能按照人们通常的思维方式,在机器世界里建立问题的模型,则可以提高软件的模块化和重用的可能性。面向对象方法的基本原则是:按照人们在现实世界中的通常的思维方式建立问题在机器世界的模型,设计尽可能自然地表现求解方法的软件。在OOM中,对象(object)和消息传递(Message passing)分别作为表达事物及事物间相互联系的概念。类(class)和继承(inheritance)作为适合人们一般思维方式的描述机制。方法(method)允许各种操作作用于某类对象上。这种集对象、类、消息、继承和方法于一体的OOM的基本点在于对象的封装(encapsulation)和继承。通过封装能将对象的定义和其实现分开;通过继承能体现类与类间的关系,并由此带来了动态连接(dynamic binding)和实体的多态性(polymorphisim)从而构成了OOM的基本特征。

  (1)对象为了使用计算机求解问题,现实世界的对象必须表示成计算机内部的概念,即机器世界的对象(简称机器对象,或对象)。为此,“对象”有在两个不同世界的不同含义,可以从下文中区分开来。从存储角度来看,机器对象占有一块存储空间,其中有数据也有方法。从机器实现机制来看,机器对象中私有数据表示了对象的状态,该对象的状态只能由私有的方法来改变它。每当需要对象来完成一定处理工作时,只能由其它对象向该对象发送消息,本对象响应消息后按照消息模式找出匹配的方法,并执行该方法,方法定义了该对象上的操作。

  (2)消息和方法程序的执行是靠在对象间传递消息来完成的。7发送消息的对象称为发送者,接收消息的对象称为接收者。消息中仅包含发送者的要求,它只告诉接收者需要完成哪些处理,但并不指示接收者应如何完成这些处理。消息完全由接收者解释,并决定完成所需的处理的方式。一个对象可以接收不同形式、不同内容的多个消息;相同形式的消息可以发往不同的对象。不同的对象对形式相同的消息可以有不同的解释,因而可以作出不同的反应。这里,反应并不是必需的。这与子程序的调用/返回有明显的不同。把全部对象分成各种对象表,每个类都定义一组所谓“方法”。方法实际上是允许作用于该类对象上的各种操作。当一个面向对象的程序在运行期间,一般要做三件事:

  (1)根据需要创建对象;

  (2)从一个对象(或用户)向另一个对象传递消息;

  (3)若不再需要该对象时,应删除它,并回收它所占用的存储单元。

  (3)类和类的层次在面向对象的程序设计中,对象是程序的基本单位。相似的对象,可以像传统程序设计语言中的变量与类型关系一样,归并到一类(class)中去。程序员只需定义一个类对象,就可以得到若干实例(instance),作为可以使用的对象。具体地说,类由方法和数据组成,是关于一类对象的性质的描述。它包括外部特性和内部特性两个方面。通过描述消息模式及其相应的处理能力来定义对象的外部特性。通过描述内部状态的表现形式及固有的处理能力的实现来定义对象的内部实现特性。对象是在执行过程中,根据对象所属的类,动态地生成的。一个类可以生成多个不同的对象。同一类对象具有相同的特性。一个对象的内部状态只能由其自身来修改,任何别的地象都不可能修改它。因此,同一个类的对象,虽然在内部状态的表现形式上相同,但它们可以有不同的内部状态,故此这些对象并不完全一模一样。一个类的上层可以有超类(superclass),下层可以有子类(subclass),这样形成了一种类的层次结构。层次结构的一个重要特点是继承性,一个类可以直接或间接地继承其超类的全部描述。继承性具有传递性。一个类可以有多个子类,也可以有多个超类。抽象类(abstract class)是一种不能建立实例的类。抽象类将有关的类组合在一起,提供了一个公共的根,其它一些子类从这个根派生出来。通常一个抽象类只描述了这个类的 有关的操作接口。或者操作的部分实现;完整的实现则被留给一个或几个子类,抽象类一般用于定义一种协议或概念。

  (4)继承性继承性(inherintance)是自动地共享子类、超类和对象中的方法和数据的一种机制。如果没有继承性,不同类中的对象中的数据和方法就可能出现大量的重复。继承性比较自然地体现了对象间的联系。

  (5)封装性封装是一种信息隐蔽技术,用户只能看到对象封装界面上的信息,对象内部的信息对用户是隐蔽的。封装的目的是使对象的使用者和对象的设计者分开,使用者不必知道实现的具体细节,只须按设计者的要求来访问对象,这样方便于系统的集成。封装是一种强有力的系统集成手段。封装和类说明有关。一个类的每一个实例都是一个单独的封装(或组件)。显式地把对象的规格说明(specification)和对象的实现分开是面向对象的一大特色。封装本身即是一个模块,把对象的定义模块和实现模块分开,从而使得维护和修改变得方便。

  (6)多态性所谓多态(polymorphic),即一个名字可以具有多种语义。多态与动态类型和静态类型有关。动态类型是指在执行期间可以改变的类型。静态类型是在程序文本中声明时确定下来的类型。在面向对象的系统中,利用重名这样多义性不会带来混乱,并且为需求分析和设计带来了好处。

  5.动态聚束

  聚束(binding)其实并不是一个新概念。一个程序经编译到连接成为可运行的目标代码,就是将可执行代码聚束在一起。用传统语言写的程序在运行之前即可聚束,故此称之为静态聚束(static binding)。而面向对象语言则在程序运行时可发生聚束,故称之为动态聚束(dynamic binding)。动态聚束增加了程序的简单性和可扩充性,使程序增删自如,不易出错,但效率略低。应该指出,静态聚束运行效率高,但修改维护时工作量大。

  6.面向对象的系统分析方法

  系统分析过程就是提取一个系统的需求过程,即是指为了满足用户的需求,系统必须做什么,而不是指系统如何实现。系统分析通常是一个需求文档开始点,同用户进行一系列的讨论为开端。一般来说,参加制定文档的人应包括系统的最终用户、问题域专家、系统的开发者以及其它感兴趣的人。在过去的10年中,已经在系统分析中使用了功能分解法、数据流法、信息模拟法。最近研究了面向对象分析(OOA)方法。下面将综述这4种主要的需求分析方法。

  (1)功能分解法 它可表示为功能=子功能+子功能接口

  (2)数据流法 数据流法,即通常所说的结构分析法,它可表示为数据流=数据存储+数据变换+过程说明+数据字典

  (3)信息模拟法 信息模拟的主要建模工具是实体-关系图,现已发展成为语义数据模型。信息模拟法可以表示为信息模拟法=对象+属性+关系+超类+子类+对象

  (4)面向对象法 面向对象的含义很广,因为“对象”一词可以在不同领域有不同的解释,面向对象的可以表示为面向对象法=对象+类+继承+消息通信面向对象分析是建立在信息模拟和面向对象程序设计语言的概念基础之上的。作为一个比较全面的方法,面向对象分析由5个步骤组成:①确定类和对象;②识别结构;③识别主题;④定义属性;⑤定义方法。现在已有了一些面向对象分析的CASE工具支持OOA,以加速OOA的自动化和标准化。

  7.面向对象设计和面向对象实现

  从面向对象分析到面向对象设计是一个逐步扩充的细分过程,同传统的实体关系模型为基础的系统分析和设计类似,面向对象的设计使用的是面向对象的概念模型。在面向对象的概念模型中以面向对象方法中的基本概念为基础。最后,使用面向对象的语言,对设计的概念模型加以实现。限于篇幅不再详细讨论。

  8.面向对象数据库

  面向对象方法和数据技术的结合,产生了面向对象数据库(Object Oriented Database———OODB)。OODB已成为数据库的发展方向之一,无论在理论上还是在实践上都越来越引起人们的注目。到80年代,关系数据库已经发展成熟悉,但新的应用领域,为数据库的进一步发展提出了新的需求。

  计算机软件水平考试经验分享

  重点突破计算机的专业课程很多,如果要通过软件水平考试,我认为一定要抓住《数据结构》这门核心课程。软件水平考试最难通过的部分是下午试题,其中很多内容涉及数据结构中的知识,大部分试题都是数据结构的演化。只有对线性表、栈和队列、树、查找、排序等问题非常精通,编程的难题才能迎刃而解。在1997年参加程序员考试时,最后一道题目整体上我看得不是很懂,但由于我对数据结构比较熟悉,我把需要填空的上下两句仔细看了看,就知道是实现一个链表的问题,而链表的操作我十分熟练,我自信地填上了正确答案。数据结构应该学到什么程度呢?我认为,基本上能用高级语言来实现各种数据结构就差不多了。

  重点突破的另一个含义是扬长避短:一个非计算机专业的考生,很难做到知识十分全面。特别是对一个文科生来说,数学是心头永远的痛,而我的英语也丢了多年。是花费巨大的精力去补数学和英语,还是把精力集中在其他科目?经过权衡,我选择了后者。在程序员和高程考试中,上午试题的前十一道,我基本上得了满分,数学和英语对我的影响并不大。我的顺利过关,就是舍车保帅策略的成功运用。当然这只是针对应试而言,如果你现在还有机会学习数学和英语,还是应当尽量把它们学好。

  多上机虽然软件水平考试下午试题只要填上程序所缺的语句,不用上机调试,但要想做对,就离不开平时多上机练习了。有时你看书时觉得懂了,但上机时却会发现一个简单的程序也容易漏洞百出。我把统编教材《程序设计》中的程序上机调试了两次:第一次基本上是照书打字,边打边想;第二次是先看题自己做,实在不会时才对照一下教材,看自己为什么做不出来。调试程序的过程中会发现C语言中的许多精妙的地方,一些考试时容易忽略的细节问题也都暴露出来,对考试十分有利,下午试题考的就是你的思维是否严密。

  多做试题我不提倡多做模拟题,因为模拟题的难度很难把握——不是太难就是太易,对考试帮助不是很大。但一定要把近几年的正式试题找来做,最好能做十份左右。虽然每年的考题都不同,但你一定能够在历年的考题中发现一些有规律的东西——它要考核你什么样的能力?它考一些什么知识点?这样,你在复习时就能做到有的放矢。

热门标签

495900