2008年12月30日火曜日

数据库工程师考试图书汇总

精品课程发布 - 美河学习在线(主站) eimhe.com 计算机|外语|培训|资料|课件 -
http://www.eimhe.com/bbs/forumdisplay.php?fid=280

1、《数据库系统工程师考试冲刺指南》
——希赛IT教育研发中心组编,张友生、唐强主编
http://www.educity.cn/book/viewbook.asp?id=79
http://auction1.taobao.com/auction/item_detail-0db2-5e45acb5368f3575407f4dc8b3d5dca7.jhtml

2、《数据库系统工程师考试试题分类精解》
——希赛IT教育研发中心组编,张友生、唐强主编
http://www.educity.cn/book/viewbook.asp?id=86

3、《数据库系统工程师考试考点分析与真题详解(信息系统综合知识篇)(第二版)》
——希赛IT教育研发中心组编,张友生主编,电子工业出版社
http://product.dangdang.com/product.aspx?product_id=9255306 44.30元

4、《数据库系统工程师考试考点分析与真题详解(数据库设计与管理篇)(第二版)》
——希赛IT教育研发中心组编,周峻松主编,电子工业出版社
http://product.dangdang.com/product.aspx?product_id=9247254 29.30元

5、《数据库系统工程师考试试题分类精解与题型练习(第2版)》
——希赛IT教育研发中心组编,张友生主编,电子工业出版社
http://product.dangdang.com/product.aspx?product_id=20172050 44.90元

6、《数据库系统工程师考试考前串讲》
——希赛IT教育研发中心组编,张友生主编,电子工业出版社
http://product.dangdang.com/product.aspx?product_id=20306185 39.00元

7、数据库系统工程师考试大纲
http://product.dangdang.com/product.aspx?product_id=8841511  4.30元

8、数据库系统概论-(第四版)
http://product.dangdang.com/product.aspx?product_id=20148154  25.35元

9、数据库系统概念(原书第5版)
http://product.dangdang.com/product.aspx?product_id=9222579  52.00元

10、数据库系统导论
http://product.dangdang.com/product.aspx?product_id=9346221  56.10元

11、《数据库系统工程师考试培训视频教程(75课时)》——张友生、王勇、李成主讲,希赛IT教育研发中心出版
http://platform.educity.cn/intro/db.htm  460元

12、《数据库系统工程师考试串讲视频教程(10课时)》——张友生、陈志风主讲,希赛IT教育研发中心出版
http://platform.educity.cn/intro/Dbcj08.htm  198元

13、《数据库系统工程师考试试题讲解视频教程(32课时)》——王勇、唐强主讲,希赛IT教育研发中心出版
http://platform.educity.cn/intro/dbmsst08.htm 218元

14、http://www.leefuu.com/goodsinfo_ODgyNDg=.html  软考视频教程之希赛数据库系统工程师视频教程 软件考试教程3DVD----乐福网上商城
软考视频教程之希赛数据库系统工程师视频教程 软件考试教程3DVD
商品数量:10
销售区域:全国
购物电话: 051269305906 15895581262
联系地址: 苏州 新区 金色家园(新升新苑旁边)
联系邮箱:tanic_2008@qq.com
市场价:¥ 300 元 乐福价:¥ 45 元
运 费:平邮: 6 元 快递: 13 元 EMS: 22 元

15、数据库系统工程师全真预测试卷
http://product.dangdang.com/product.aspx?product_id=9126903 14.3元

16、数据库系统工程师应试辅导(附CD-ROM光盘一张)——全国计算机技术与软件专业技术资格(水平)考试讲义系列 2006年
http://product.dangdang.com/product.aspx?product_id=9136765 39元

17、数据库系统工程师应试教程(附光盘)/全国计算机技术与软件专业技术资格水平考试讲义系列 2006年
http://product.dangdang.com/product.aspx?product_id=9136768 51元

18、数据库系统工程师考试全程指导——全国计算机技术与软件专业技术资格(水平)考试参考用书 2006年
http://product.dangdang.com/product.aspx?product_id=9195518 48.80元

19、数据库系统工程师教程——全国计算机技术与软件专业技术资格(水平)考试指定用书 2004年
http://product.dangdang.com/product.aspx?product_id=8888531 49.50元

20、SAP业务数据传输指南
http://product.dangdang.com/product.aspx?product_id=9221947 42.42元

21、新版中日交流:标准日语 中级(上下册)(附光盘2张)
http://product.dangdang.com/product.aspx?product_id=20354567 55.30元

22、中日交流标准日本语语法全讲全解(中级)
http://product.dangdang.com/product.aspx?product_id=20021167 21.30元

23、SAP高级应用开发:RFC、BAPI、ALE、Workflow、SAP连接器、WebDynpro及BSP
http://product.dangdang.com/product.aspx?product_id=20350610 53.20元

24、Java编程的Web Dynpro
http://www.china-pub.com/41437 50.15元
http://auction1.taobao.com/auction/item_detail-0db1-01c899c7dd644059072a5fc41b7f0b9e.jhtml?pm1=1

25、SAP Smart Forms
http://www.china-pub.com/41438 50.15元
http://auction1.taobao.com/auction/item_detail-0db1-7b1cadb75c0fd3f13e0d210e6c207a33.jhtml?pm1=1

26、SAP基础教程
http://product.dangdang.com/product.aspx?product_id=20088164 42.40元

27、SAP报表与电子商务智能
http://product.dangdang.com/product.aspx?product_id=8755599 35.70元

28、SAP NetWeaver路线图
http://product.dangdang.com/product.aspx?product_id=9018137 37.40元

29、SAP NetWeaver——SAP新一代业务平台
http://product.dangdang.com/product.aspx?product_id=9018140 50.90元

●数据库系统工程师视频教程 - 视频 - 在线观看 - 土豆网
http://www.tudou.com/programs/view/rE8zsNLlhTc/
http://tv.mofile.com/JTJV2YUB/
http://video.baidu.com/v?ct=301989888&word=%CF%A3%C8%FC&db=0&ty=0&pn=0&fbl=1024

数据库系统工程师历年试题:http://data.educity.cn/View_971.html

http://www.educity.cn/data/Class1_N28.html
2007年下半年数据库系统工程师考试试题(全部)
2005年5月数据库系统工程师考试试题结构分析
数据库系统工程师全真预测试卷(含答案)
数据库系统工程师考试历年试题及解答合订本(07.11版本)


ABAP标准视频学习
http://auction1.taobao.com/auction/item_detail-0db2-dd44ac297f44529b7cce2e4b5ba79498.jhtml 599.0元

#######################################################################################################################

http://www.ems.com.cn/products/guo-ji-main.html

国际收件人付费
  国际特快专递收件人付费业务简称“国际特快到付业务”。其特点是传递国际特快专递邮件所需的各种费用(如邮资、清关费等)由收件人支付,无需由寄件人承担,只是寄件人在交寄邮件时要填写一份“信用保证单”,承诺在遇有收件人拒收邮件或拒付费用等情况时,寄件人承担全部邮寄费用及所产生的一切相关费用。国际特快到付业务的收费标准与国际特快专递邮件的收费标准相同。
  目前我国EMS办理至日本、韩国、台湾、香港、德国、瑞典等国家和地区的到付业务。
  如需详细了解此项业务,请拨打邮政客服电话11185,或到当地各邮政营业窗口咨询。


#######################################################################################################################
中国邮政的三种平邮式国际配送方式
1、航空包裹
利用航空运输工具优先发运,时限快于空运水陆路和水陆路包裹。
①主要费用(单位是元):
小包
100克和100克以内  14.00
100克以上续重每100克或其零数加收  9.00
②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。

③ 到件时效:
7—15天(以到美国为例)

④ 其他规定:
包裹重量不得超过2公斤。

2、空运水陆路包裹
利用国际航班剩余运力运输,在原寄国和寄达国国内按水陆路处理的邮件。
① 主要费用(单位是元):
小包
100克和100克以内
8.50

100克以上续重每100克或其零数加收
5.00

②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。
③ 到件时效:
15—30天(以到美国为例)
④ 其他规定:
包裹重量不得超过30公斤。

3、水陆路包裹
采用汽车、火车或轮船方式运输时限上慢于上述两种函件,邮费比较便宜。
① 主要费用(单位是元):
小包
100克和100克以内
7.00

100克以上续重每100克或其零数加收
4.50

②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。

③ 到件时效:
30—60天(以到美国为例)

④ 其他规定:
包裹重量不得超过30公斤。


中国邮政的平邮邮包只有查询打电话去查询!
平邮速度一般比较慢,请耐心等待!

也可去问寄件人要包裹号,到邮局领包裹的窗口去咨询,邮局如果不让查一般是怕麻烦!
——————
邮局的正规程序是15天或30天之后可以提供书面填查询单查询,好像还要付费。但是实际效果非常差,基本没有实用价值,因为各地的邮局沟通并不是非常的畅通,而且公事公办的话,都没什么责任心的。偶有两次碰到了平邮15天没到的情况,偶通过下面的方法基本解决了。

*第一步打收件地的11185邮政热线查询收件地的具体邮局电话,具体号码就是收件地区号加11185,报上收件人地址,客服就会查出那个所属邮局了。

*第二步,联系收件地的邮局,询问他们负责发件的部门电话,因为邮局的对外联系电话一般无法查询具体的包裹和信函,所以一定要找到邮局负责发件的部门。

*第三步,就是直接和发件部的工作人员沟通,要注意态度好,强调自己是外地长途,而且包裹比较重要。一般情况,如果包裹已经到收件地邮局了,基本上他们都会有答复的。如果是路上出了问题,那基本上就没希望了。
#######################################################################################################################

达方物流 国际航空小包裹 最低3元到世界各地 深圳广州上海有办事处
http://www.dfpost.com/

中国邮政的三种平邮式国际配送方式

中国邮政的三种平邮式国际配送方式
1、航空包裹
利用航空运输工具优先发运,时限快于空运水陆路和水陆路包裹。
①主要费用(单位是元):
小包
100克和100克以内  14.00
100克以上续重每100克或其零数加收  9.00
②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。

③ 到件时效:
7—15天(以到美国为例)

④ 其他规定:
包裹重量不得超过2公斤。

2、空运水陆路包裹
利用国际航班剩余运力运输,在原寄国和寄达国国内按水陆路处理的邮件。
① 主要费用(单位是元):
小包
100克和100克以内
8.50

100克以上续重每100克或其零数加收
5.00

②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。
③ 到件时效:
15—30天(以到美国为例)
④ 其他规定:
包裹重量不得超过30公斤。

3、水陆路包裹
采用汽车、火车或轮船方式运输时限上慢于上述两种函件,邮费比较便宜。
① 主要费用(单位是元):
小包
100克和100克以内
7.00

100克以上续重每100克或其零数加收
4.50

②其他费用:
挂号费8元,详情单2元,保价率为1%,保价手续费8元/件,海关验关费5元。

③ 到件时效:
30—60天(以到美国为例)

④ 其他规定:
包裹重量不得超过30公斤。

BEA WebLogic平台下J2EE调优攻略

BEA WebLogic平台下J2EE调优攻略:前言
作者:周海根 来源:BEA 发布时间:2007-05-09
摘要:
  随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供商的重视。而对于最终客户来说,在一个高效、稳定 地实现他们的业务需求已经是他们的基本要求。所以J2EE调优显得非常重要,而BEA webLogic Server是业界领先的应用服务器,BEA webLogic平台下的J2EE调优也就尤为重要,她将为我们提供普遍的J2EE调优方案。最近网络、杂志上的J2EE调优文章层出不穷。本人也将自己 平时工作中的一些经验积累分享给大家,抛砖引玉。
目录
前 言
第一章 应用程序调优
1.1.1 通用代码调优
1.1.2 减小没有必要的操作
1.1.3 使用合适的类型
1.1.4 尽量使用pool,buffer和cache
1.2 JDBC代码调优
1.2.1 严格资源使用
1.2.2 实用技巧
1.2.3 优化SQL语句
1.3 web代码调优
1.3.1 HttpSession的使用
1.3.2 jsp代码调优
1.3.3 Servlet代码调优
1.4 JMS代码调优
1.4.1 注意必要的事项,避免使用不必要的特征
1.4.2 消息类型的选择
1.4.3 确认方式的选择和JMS事务
1.5 EJB代码调优
1.5.1 有效使用设计模式
1.5.2 使用EJB和webLogic的特性
1.5.3 缓存资源
1.5.4 如何选择和使用Entity Bean
1.5.5 其他的一些小技巧
第二章 应用服务器调优
2.1 JVM调优
2.1.1 垃圾收集和堆大小
2.1.2 jRockit调优
2.2 Server调优
2.2.1 尽量使用本地I/O库
2.2.2 调整默认执行线程数
2.2.3 调整连接参数
2.2.4 创建新的执行队列
2.3 JDBC调优
2.3.1 调整连接池配置
2.4 web调优
2.4.1 调整web应用描述符
2.5 JMS调优
2.6 EJB调优
2.6.1 调整pool和cache
2.6.2 优化事务隔离级别和事务属性
2.6.3 其他一些小技巧
第三章 数据库调优
3.1.1 Oracle性能优化
3.1.2 Oracle的其他调整
第四章 操作系统调优
4.1 操作系统调整
4.1.1 HP-UX
4.1.2 Solaris
4.1.3 AIX
4.1.4 Linux
4.1.5 Windows
第五章 性能监控和性能分析
5.1 性能瓶颈
5.2 操作系统监控
5.3 数据库监控
5.4 webLogic监控
5.4.1 JVM监控
5.4.2 Console监控
5.4.3 实用工具分析
5.5 应用程序分析
总结
参考文献
关于作者
前 言 (目录)
  随着近来J2EE软件广泛地应用于各行各业,系统调优也越来越引起软件开发者和应用服务器提供商的重视。而对于最终客户来说,在一个高效、稳定 地实现他们的业务需求已经是他们的基本要求。所以J2EE调优显得非常重要,而BEA webLogic Server是业界领先的应用服务器,BEA webLogic平台下的J2EE调优也就尤为重要,她将为我们提供普遍的J2EE调优方案。最近网络、杂志上的J2EE调优文章层出不穷。本人也将自己 平时工作中的一些经验积累分享给大家,抛砖引玉。
  本文从J2EE应用架构(下图)来分别剖析系统调优,首先我们一般会从应用程序出 发,去审核代码,做到代码级的优化,然后再调整应用服务器(BEA webLogic8.1)和数据库 (Oracle9i)的参数,最后当然是调整操作系统和网络的性能(包括硬件升级)。诚然,在我遇到的很多项目中,都是出现了性能问题后才想到调优,而且 一般都是先进行系统参数调整,实在解决不了才会对代码进行检查.实际上,我们应当将代码级的调优放在应用设计时来做,测试生产时修改代码将是一件极其痛苦 的事情。

webLogic平台J2EE应用架构
BEA WebLogic平台下J2EE调优攻略:应用程序调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第一章 应用程序调优
1.1.1 通用代码调优

1.1.2 减小没有必要的操作
   对象的创建是个很昂贵的工作,所以我们应当尽量减少对象的创建,在需要的时候声明它,初 始化它,不要重复初始化一个对象,尽量能做到再使用,而用完后置null有利于垃圾收集。让类实现Cloneable接口,同时采用工厂模式,将减少类的 创建,每次都是通过clone()方法来获得对象。另外使用接口也能减少类的创建。对于成员变量的初始化也应尽量避免, 特别是在一个类派生另一个类时。

   异常抛出对性能不利。抛出异常首先要创建一个新的对象。Throwable接口的构造函数调用名为, fillInStackTrace()的本地(Native)方法,fillInStackTrace()方法检查堆栈,收集调用跟踪信息。只要有异常被 抛出,VM就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。 异常只能用于错误处理,不应该用来控制程序流程。

  此外, 建议关闭Debug输出,尽量少用串行化、同步操作和耗时昂贵的服务(如Date())。

1.1.3 使用合适的类型
  当原始类型不能满足我们要求时,使用复杂类型。String和StringBuffer的区别自不必说了,是我们使用最多的类型,在涉及到字符运算时,强烈建议使用StringBuffer。在做String匹配时使用intern()代替equal()。

  带有final修饰符的类是不可派生的, 如果指定一个类为final,则该类所有的方法都是final。

  java编译器会寻找机会内联所有的final方法,这将能够使性能平均提高50%。类的属性和方式使用final或者static修饰符也是有好处的。

  调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。所以尽量使用局部变量。

  ArrayList和Vector,HashMap和Hashtable是我们经常用到的类,前者不支持同步,后者支持同步,前者性能更好,大多数情况下选择前者。

1.1.4 尽量使用pool,buffer和cache
  使用pool、buffer和cache能大大提高系统的性能,这在J2EE的大部分技术中都是适用的。

   在webLogic中就大量使用了池:JDBC Connection Pool、Socket Pool、Object Pool和Thread Pool。I/O操作中,buffer是必须的,特别是对大文件的操作,不然容易造成内存溢出。字节操作最快,所以尽可能采用 write(byte[]),Buffered FileOutputStream比Buffered FileWriter要快,因为FileWriter需要Unicode到Byte的转换。

  而后面讲到的JDBC、jsp、EJB和JMS我们都非常建议使用buffer和cache。为HttpServletResponse设置buffersize,使用wl-cache,缓存在JNDI树上获取的对象等等。

  此外,使用JDK 1.4的非阻塞I/O对性能也有很大提高。

1.2 JDBC代码调优
1.2.1 严格资源使用
   JDBC代码调优最大的原则就是使用webLogic的连接池,而不是自己直连数据库。在我接触的很多自己实现连接池的项目中,大部分遇到死锁和连接泄 漏的问题,最后得不得修改代码。而webLogic提供了功能强大,性能良好的数据库连接池,我们要做的只是封装一个连接管理类,从JNDI树上获取数据 源并缓存,得到连接,并提供一系列关闭数据库资源的方法。

  对任何资源使用的原则是用完即关,不管是数据库资源、上下文环境,还是文 件。数据库资源的泄漏极易造成内存泄漏,乃至系统崩溃。在使用完数据库资源后依次关闭ResultSet,Statement和Connection,而 在一个数据库连接多次进行数据库操作时要特别注意ResultSet和Statement依次关闭。

try{
  //open connection
  pstmt =conn.prepareStatement(strSql1);
  pstmt.executeUpdate();
  pstmt.close();
  pstmt =conn.prepareStatement(strSql2);
  rs=pstmt.executeQuery();
  while (rs.next()){
  //process
 }
rs.close();
pstmt.close();
 }catch(Exception e){
  //close rs,psmt,con
}finally{
  //close rs,psmt,con
}

1.2.2 实用技巧
   在JDBC操作中还有一些小的技巧跟大家分享:由于获取连接时默认自动提交方式,使用connection.setAutoCommit(false) 关闭自动提交,使用PreparedStatement,批量更新,业务复杂或者大数据量操作时使用存储过程,尽量使用RowSet,此外设置记录集读取 缓存FetchSize和设置记录集读取方向FetchDirection对性能也有一定的提高。

1.2.3 优化SQL语句
   SQL语句的优化牵涉到很多数据库的知识,需要与索引配合,因此需要DBA对代码中的SQL进行检查测试。常见的,select *不提倡使用,效率极差,建议显式获取列,即使是所有字段也应罗列,而取总数时使用count(*),为提高cache的命中率,尽量做到SQL重用。对 于大数据量的查询,可以充分利用Oracle数据库的特性,每次取出m-n行的数据,实现分页查询。另外,提高性能的好选择可能就是把所有的字符数据都保 存为Unicode,java以Unicode形式处理所有数据,因此,数据库驱动程序不必再执行转换过程。

1.3 web代码调优
1.3.1 HttpSession的使用
  应用服务器保存很多会话时,容易造成内存不足,所以尽量减少session的使用,放置session
里的对象不应该是大对象,最好是简单小对象,实现串行化接口。当会话不再需要时,应当及时调用invalidate()方法清除会话。而当某个变量不需要时,及时调用removeAttribute()方法清除变量。请勿将EJB对象放置在session中。

1.3.2 jsp代码调优
   目前,在jsp页面中引入外部资源的方法主要有两种:include指令,以及include动作。 include指令:例如<%@ include file="copyright.html" %>,该指令在编译时引入指定的资源。在编译之前,带有include指令的页面和指定的资源被合并成一个文件。被引用的外部资源在编译时就确定, 比运行时才确定资源更高效。
include动作:例如。该动作引入指定页面执行后生成的结果。由于它在运行时完成,因此对输出结果的控制更加灵活。但是,只有当被引用的内容频繁地改变时,或者在对 主页面的请求没有出现之前,被引用的页面无法确定时,使用include动作才合算。

  对于那些无需跟踪会话状态的jsp,关闭自 动创建的会话可以节省一些资源。使用如下page指令: <%@ page session="false"%> ;尽量不要将jsp页面定义为单线程,应设置为<%@page isThreadSafe=”true”%>;在jsp页面最好使用输出缓存功能,如: <%@page buffer="32kb"%>;尽量用wl:cache定制标记来缓存静态或相对静态的内容,缓存jsp:include操作的结果能显著提高应 用程序的运行性能。

1.3.3 Servlet代码调优
  Servlet代码调优比较简 单:在Servlet之间跳转时,forward比sendRedirect更有效;设置HttpServletResponse 缓冲区,如:response.setBufferSize(20000);在init()方法里缓存静态数据,而在destroy()中释放它;建议在 Servlet里使用ServletOutputStream输出图片等对象;避免在Servlet和jsp中定界事务等。

1.4 JMS代码调优
1.4.1 注意必要的事项,避免使用不必要的特征
   JMS提供了强有力的消息处理机制,但是为了最大限度的提高JMS系统的性能,应避免使用不需要使用的特征,同时也要注意必要的事项。比如:尽量使用接 收程序能直接使用的最简单、最小的消息类型;消息选择器要尽可能简单(最好不使用),尽量不要使用复杂的操作符,如like、in或者between等, 使用字符串数据类型的速度最慢;务必为特定的应用程序定义特定的JMS连接工厂,并且禁用默认的JMS连接工厂;不要在javax.*与 weblogic.*的名字空间中使用JNDI名称;尽量使用异步消费者,线程不必封锁以等待消息的到达;使用完JNDI树上的资源后注意关闭。

1.4.2 消息类型的选择
   标准JMS提供了五种消息类型,而TextMessage应用最为普遍, 当发送的消息是几种原始数据类型的集合体时,最好使用MapMessage消息类型,而不要使用ObjectMessage,以便减少不同系统间的耦合。 此外消息是否使用压缩要慎重考虑,压缩未必能减少消息大小。如果生产者、消费者和目的地并置在同一webLogic Server内部,通常不使用压缩。webLogic特有的XMLMessage能为运行于消息主体之上的消息选择器提供内嵌式支持,而且易于数据交换。 因此,建议应用程序之间传送消息使用XML消息格式,而应用程序内部间传送消息使用二进制消息格式。

1.4.3 确认方式的选择和JMS事务
   使用事务性会话时,尽量使用恰当的消息确认方式:如果需求允许,使用NO_ACKKNOWLEDGE;非持久的订阅者使用 DUPS_OK_ACKNOWLEDGE或者MULTICAST_NO_ACKNOWLEDGE。而使用JTA的UserTransaction,确认方 式将被忽略。在使用JMS事务时,无效的消息会导致事务的回滚,以致消息重发这样的死循环。此时,可以将无效消息发送到错误消息队列,并提交JMS事务, 这将确保消息不会再次传递。

1.5 EJB代码调优
1.5.1 有效使用设计模式
   GoF 的《设计模式》为我们实现高性能、易扩展的J2EE应用提供理论保障和技术支持。而EJB作为J2EE的核心组件和技术,善用设计模式对系统性能影响很 大。Service Locator 和Value Object 已为我们所熟悉,Floyd Marinescu的《EJB Design Patterns》中的Session Fa?ade、Message Fa?ade、EJB Command和Data Transfer Object等设计模式更是为我们提供设计典范:缓存对EJBHome的访问;使用门面模式,不暴露Entity Bean,用Session Bean封装Entity Bean;如果可以异步处理,则用MDB代替Session Bean;封装业务逻辑在轻量级javaBean中;使用值对象等简单对象传递数据;不直接使用get/set方法操作Entity Bean。当然过度使用模式或者牵强套用模式也是不提倡的,总的原则就是减少网络流量,改进事务管理。

1.5.2 使用EJB和webLogic的特性
   使用EJB和webLogic的新特性往往能提高性能。与EJB2.0特性相关的技巧有:一个Application中使用本地接口,对于Entity Bean肯定使用本地接口,避免远程调用的开销;使用CMP管理关系,而不是BMP,EJB2.0中CMP的性能大大改善,性能和移植性都优于BMP;使 用ejbSelect进行内部查询;使用home方法进行外部查询和批处理; 数据库驱动级联删除等。

  与webLogic特性相关的 技巧有:使用自动生成主键,webLogic为Oracle和Sqlserver两种数据库的CMP提供了自动生成主键功能,节约了Entity Bean产生主键的时间,同时设key-cache-size不小于100;webLogic管理事务性能更好,使用容器管理,而不是Bean管理事 务;webLogic提供了为CMP动态查询和批量插入功能,对性能也有很大帮助。

1.5.3 缓存资源
   对SLSB或者MDB来说,使用setMesssageDrivenContext()或者ejbCreate()方法缓存特定资源,在 ejbRemove()方法里释放; 对SLSB或者MDB来说,使用setSessionContext()或者ejbCreate()方法缓存特定资源,在ejbRemove()方法里释 放;对Entity Bean来说,使用setEntityContext ()方法缓存特定资源,在unSetEntityContext ()方法里释放。

1.5.4 如何选择和使用Entity Bean
  1. 在设计EJB时,要适当考虑EJB的粒度, 细粒度的EJB在事务管理和资源管理的开销太大,尽量创建粗粒度的 EJB , 不要太粗,粗到能满足实际需求就可以;

  2. Entity Bean不是唯一方式,如果只有一个很小的数据子集被经常改变,建议采用JDO;

  3. 在操作大数据量的时候,直接采用JDBC比Entity Bean更有效;

  4. 避免采用返回很大数据组的finder方法,如 FindAll() 方法,因为它的实现代价太大;

  5. 考虑设置域组field groups,减少没有必要并昂贵的属性加载,如BLOB;

  6. 对于EJB1.1或者BMP,可以设置is-modified-method-name属性,根据isModified()的值来判断是否调用ejbStore()等方法,减少没有必要运算;

  7. 避免连接多个表创建BMP,可以使用视图,存储过程或者O/R Mapping等方式。

1.5.5 其他的一些小技巧
  1. 考虑使用 javax.ejb.SessionSynchronization 接口,提供在Rollback之后恢复数据的方法: afterBegin(), beforeCompletion(), afterCompletion();
  2. 使用完SFSB之后,调用remove()方法释放实例;
  3. 假如你不需要EJB服务的时候,建议使用普通java类;
  4. 避免EJB之间相互调用;
  5. 使用多读模式。

BEA WebLogic平台下J2EE调优攻略:应用服务器调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第二章 应用服务器调优(目录)
2.1 JVM调优
2.1.1 垃圾收集和堆大小
   垃圾收集(GC)是指JVM释放java堆中不再使用的对象所占用的内存的过程,而java堆(Heap)是指java应用程序对象生存的空间。堆大小 决定了GC的频度和时间。堆越大,GC频度低,速度慢。堆越小,GC频度高,速度快。所以GC和堆大小是一组矛盾。为了获取理想的Heap堆大小,需要使 用-verbosegc参数(Sun jdk: -Xloggc:)以打开详细的GC输出。分析GC的频度和时间,结合应用最大负载所需内存情况,得出堆的大小。
通常情 况下,我们建议使用可用内存(除操作系统和其他应用程序占用之外的内存)70-80%,为避免堆大小调整引起的开销,设置内存堆的最小值等于最大值 即:-Xms=-Xmx。而为了防止内存溢出,建议在生产环境堆大小至少为256M(Platform至少512M),实际环境中512M~1G左右性能 最佳,2G以上是不可取的,在调整内存时可能需要调整核心参数进程的允许最大内存数。对于sun和hp的jvm,永久域太小(默认4M)也可能造成内存溢 出,应增加参-XX:MaxPermSize=128m。建议设置临时域-Xmn的大小为-Xmx的1/4~1/3, SurvivorRatio为8。

   为了获得更好的性能,建议在启动文件设置webLogic为产品模式,此时sun和hp jvm JIT引擎为-server,默认情况下打开JIT编译模式对性能也有帮助。调整Chunk Size和Chunk Pool Size也可能对系统的吞吐量有提高。此外还需关闭显示GC: -XX:+DisableExplicitGC。

  当然在Intel平台上使用jRockit(使用参数-jrockit)无疑大大提高webLogic性能。

2.1.2 jRockit调优
   jRockit支持四种垃圾收集器:分代复制收集器、单空间并发收集器、分代并发收集器和并行收集器。默认状态下,JRockit使用分代并发收集器。 要改变收集器,可使用-Xgc:,对应四个收集器分其他为gencopy, singlecom, gencon以及parallel。为得到更好的响应性能,应该使用并发垃圾回收器:-Xgc:gencon,可使用-Xms和-Xmx设置堆栈的初始大 小和最大值,要设置护理域-Xns为-Xmx的10%。而如果要得到更好的性能,应该选用并行垃圾回收器:-Xgc: parallel,由于并行垃圾回收器不使用nursery,不必设置-Xns。

  如果你的线程大于100或者在linux平台下,可以尝试使用瘦线程模式:-Xthinthread,同时关闭Native IO:-Xallocationtype:global。

  jRockit 还提供了强大的图形化监控工具Jrockit Management Console。欲详细了解JRockit可访问:http://edocs.bea.com/wljrockit/docs81/index.html。


2.2 Server调优
  webLogic Server的核心组件由监听线程,套接字复用器和可执行线程的执行队列组成。当服务器由监听线程接收到连接请求后,将对它的连接控制权交给等待接收请求 的套接字复用器。然后套接字复用器读取离开套接字的请求,并将此请求及相关安全信息或事务处理环境一起置入适当的执行队列中(一般为默认的执行队列)。 当有一个请求出现在执行队列中时,就会有一个空闲的执行线程从该队列中取走发来的该请求,并返回应答,然后等待下一次请求。因此要提高webLogic的 性能,就必须从调整核心组件性能出发。

2.2.1 尽量使用本地I/O库
webLogic Server有两套套接字复用器:java版和本地库。采用小型本地库更有效,尽量激活Enable Native IO(默认),此时UNIX默认使用CPUs+1个线程,Window下为双倍CPU。如果系统不能加载本地库,将会抛出 java.lang.UnsatisfiedLinkException,此时只能使用java套接字复用器,可以调整socket readers 百分比,默认为33%。该参数可以在Console Server Tuning Configuration配置栏里设置。

2.2.2 调整默认执行线程数
   理想的默认执行线程数是由多方面的因素决定的,比如机器CPU性能、总线体系架构、I/O、操作系统的进程调度机制、JVM的线程调度机制。 webLogic生产环境下默认的线程为25个,随着CPU个数的增加,webLogic可以近乎线性地提高线程数。线程数越多,花费在线程切换的时间也 就越多,线程数越小,CPU可能无法得到充分利用。为获取一个理想的线程数,需要经过反复的测试。在测试中,可以以25*CPUs为基准进行调整。当空闲 线程较少,CPU利用率比较低时,可以适当增加线程数的大小(每五个递增)。对于PC Server 和Window 2000,则最好每个CPU小于50个线程, 以CPU利用率为90%左右为佳。由于目前webLogic执行线程没有缩小线程数的功能,所以应将参数Threads Increase设置为0,同时不应改变优先级的大小。

2.2.3 调整连接参数
   webLogic Server用Accept Backlog参数规定服务器向操作系统请求的队列大小,默认值为50。当系统重载负荷时,这个值可能过小,日志中报Connection Refused,导致有效连接请求遭到拒绝,此时可以提高Accept Backlog 25%直到连接拒绝错误消失。对于Portal类型的应用,默认值往往是不够的。Login Timeout和SSL Login Timeout参数表示普通连接和SSL连接的超时时间,如果客户连接被服务器中断或者SSL容量大,可以尝试增加该值。这些参数可以在Console Server Tuning Configration配置栏里找到。

2.2.4 创建新的执行队列
   创建新的执行队列有助于解决核心业务优先、避免交叉阻塞、死锁和长时间处理的业务等问题。通常会将自己的执行队列和默认的执行队列设置不同的优先级,这 里优先级不应设为9或者10。 定义一个新的执行队列很容易,利用View Excute Queue选项中的Configure a new Excute Queue链接即可定制新的执行队列。创建新的执行队列后,用户需要为应用程序的J2EE组件配置分配策略,以便它可以找到新的队列。举个例子:要将 servlet或jsp捆绑到一个特定的执行队列,必须替换web.xml文件项,将wl-dispatch-policy初始化参数设置为自己的执行队 列名。


servletname
/directoryname/deployment.jsp

wl-dispatch-policy
NewExecuteQueueName



  我们可以为一个jsp或者servlet乃至一个web应用设置自己的执行队列。同时也可以为EJB设置自己的执行队列。对于执行时间比较长的MDB,建议使用自己的执行队列。

2.3 JDBC调优
2.3.1 调整连接池配置
   JDBC Connection Pool的调优受制于webLogic Server线程数的设置和数据库进程数,游标的大小。通常我们在一个线程中使用一个连接,所以连接数并不是越多越好,为避免两边的资源消耗,建议设置连 接池的最大值等于或者略小于线程数。同时为了减少新建连接的开销,将最小值和最大值设为一致。

  增加Statement Cache Size对于大量使用PreparedStatement对象的应用程序很有帮助,webLogic能够为每一个连接缓存这些对象,此值默认为10。在保 证数据库游标大小足够的前提下,可以根据需要提高Statement Cache Size。比如当你设置连接数为25,Cache Size为10时,数据库可能需要打开25*10=250个游标。不幸的是,当遇到与PreparedStatement Cache有关的应用程序错误时,你需要将Cache Size设置为0。

  尽管JDBC Connection Pool提供了很多高级参数,在开发模式下比较有用,但大部分在生产环境下不需调整。这里建议最好不要设置测试表, 同时Test Reserved Connections和Test Released Connections也无需勾上。 当然如果你的数据库不稳定,时断时续,你就可能需要上述的参数打开。

  最后提一下驱动程序类型的选择,以Oracle为 例,Oracle提供thin驱动和oci驱动,从性能上来讲,oci驱动强于thin驱动,特别是大数据量的操作。但在简单的数据库操作中,性能相差不 大,随着thin驱动的不断改进,这一弱势将得到弥补。而thin驱动的移植性明显强于oci驱动。所以在通常情况下建议使用thin驱动。而最新驱动器 由于webLogic server/bin目录下的类包可能不是最新的,请以Oracle网站为准: http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/htdocs /jdbc9201.html。

2.4 web调优
2.4.1 调整web应用描述符
   web应用除代码之外的调优比较简单,仅仅是对一些web应用描述符的调整。首先关闭Session Monitoring Enabled,仅仅在Cluster环境下设置Session复制(优先使用内存复制),在保证应用正常运行的情况下,设置较短的Session超时时 间。 同时生产环境下无需检查jsp和servlet:jspPage Check Secs和Servlet Reload Check Secs均设为-1,关闭jspKeep Generated 和jspVerbose对性能也有帮助。此外,还可以对jsp进行预编译,有两种方法:激活precompile选项;使用weblogic.appc事 先编译,建议采用后者。

2.5 JMS调优
  1. 增加-Dweblogic.JMSThreadPoolSize=n(至少为5),以提高处理JMS的线程数,在jRockit上增加-XXenablefatspin以减少加锁冲突;
  2. 采用文件存储策略,将同步写策略设置为Direct-Write,同时在windows平台上启用磁盘写入缓存;
  3. 使用分布式目的地时,激活连接工厂Load Balancing Enabled ,Server Affinity Enabled;
   4. 为减少服务器不必要的JMS请求路由,如果多个目的地之间存在事务,则部署在同一JMS服务器上,尽量将连接工厂部署到JMS服务器所在的 webLogic实例上,集群环境下,则最好将连接工厂部署到集群中的所有服务器上,而集群中每个JMS服务器和目的地成员尽量使用类似的设置;
  5. 启用消息分页存储功能,以释放内存,可以为JMS服务器和目的地设置, 激活Messages Paging Enabled和Bytes Paging Enabled,同时使用限额防止服务器耗尽接收消息的所有可用内存空间;
  6. 在运行webLogic Server进程之外的生产者务必使用流控制, 并增大Send Timeout;
  7. 将JMS Server Expiration Scan Interval设很大的值,能禁止主动扫描过期消息;
  8. 使用FIFO或者LIFO方式处理目的地消息;
  9. MDB的max-beans-in-free-pool不应大于最大MDB线程数(默认线程数/2+1)。

2.6 EJB调优
2.6.1 调整pool和cache
   initial-beans-in-free-pool定义SLSB启动时实例的个数,默认为0,可以调大到正常并发数的大小,以减少初始响应时间。 max-beans-in-free-pool为最大个数,默认1000对SLSB来说,在频繁创建和删除实例的情况下很有帮助,一般不用调整,至少设为 默认线程数,过大容易造成内存溢出。而对Entity Bean来说,由于是匿名的,所以当频繁使用finder、home和create方法时可以调大。

  对SFSB来说,尽量将max- beans-in-cache参数设置得足够的大,以满足Bean实例对最大并发用户数的要求,可以避免有状态会话Bean过多的钝化行为。而idle- timeout-seconds尽量设置小,如果SFSB不用于存储web应用会话状态可以设置为0。

  对于Entity Bean来说, max-beans-in-cache同样可以首先采用默认值1000,监控实例缓存和钝化的情况,再做适当调整。

   并行策略concurrency-strategy定义了实体Bean如何管理锁,有四种策略: Exclusive、Databse、ReadOnly、Optimistic。效率依次提高,可靠性依次降低,尽量避免使用互斥策略,如果Bean无需 更新操作,使用只读策略,更甚的是,如果Bean的内容不会改变,可设置read-timeout-seconds为0,乐观并行策略时采用事务间缓存策 略,在entity-cache描述符中将cache-between-transactions元素设为true。

2.6.2 优化事务隔离级别和事务属性
  对EJB组件来说,有四种事务隔离水平:
• TRANSACTION-SERIALIZABLE:在处理完成之前拒绝其他处理的读入、可扩展性或插入数据操作;
• TRANSACTION-REPEATABLE-READ:防止处理修改正在被其他处理调用的数据;
• TRANSACTOIN-READ-COMMITTED:防止对正在被其他处理修改的数据执行写锁定;
• TRANSACTION-READ-UNCOMMITTED:允许处理读入未受权的数据以及允许在向结果中添加记录时可以忽略处理。
   以上隔离水平依次降低,效率和性能依次提高。因此,建议选用满足在业务数据完整性要求前提下水平最低的隔离级别。

  对于事务属性的设置也是如此,对于删除、修改和插入操作设置为Required,而对于只读操作设置为Supports或者NotSupports。

2.6.3 其他一些小技巧
  1. 利用finders-load-bean的默认值true,既可以避免“n+1”的查询问题,又可以提高系统的性能;
  2. 使用delay-updates-until-end-of-tx参数的默认值true,除非应用程序对某些变化有特别的要求;
  3. 应用程序在每个业务方法调用后不需要进行存在性检查,将check-exists-on-method设定为false,以提高程序的性能;
  4. 同一应用内, 将enable-call-by-reference设置为 true;
  5. reentrant设置为false,避免事先加载子数据。

BEA WebLogic平台下J2EE调优攻略:数据库调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第三章 数据库调优(目录)
3.1.1 Oracle性能优化
  Oracle9i的性能优化除了调整kernal之外就是主要对Oracle启动文件的调整,即调整SGA的参数。注意,不同操作系统不同位数的机器最优的参数不是一样的,这里主要有windows和unix之分,32位和64位之分。
首先需要调大进程数和游标数,一般默认的值对实际应用来说都比较小,比如说,进程数可以调到300,游标数可以调到500。

   其次,看一个经验公式: OS 使用内存+ SGA + session*(sort_area_size + hash_area_size +2M)<0.7RAM,通常认为此时的SGA比较合理。这里sort_area_size为64k, hash_area_size为128k(当排序多的时候需要增大sort_area_size,按调整后的值计算),session表示最大并发进程 数,假设100个。假如1G内存的机器,OS占用200M,PGA占用200M左右,那么SGA可以设为400-500M,如果2G内存可以1G给 SGA,8G可以5G给SGA。不过对于32位数据库来说,通常最多只能使用1.7G内存。

  然后,SGA内参数设置的基本原则 是:data buffer 通常可以尽可能的大,shared_pool_size 要适度,log_buffer 通常大到几百K到1M就差不多。具体的:data buffer 1G内存可以设置500M,2G设为1.2G,8G可设为5G 。shared_pool_size不易过大,通常应该控制在200M--300M,如果使用了大量的存储过程,可以根据SGA的值增大到500M,如果 增大后命中率得不到提高,则增加是无益的。具体的:1G内存可以设置100M,2G设为150M,8G可设为300M。如不使用 java,java_pool_size 10-20M即可。large_pool_size如果不设置MTS,在20M -30M 即可,假如设置 MTS,可以考虑为 session * (sort_area_size + 2M)。

  最后,关于内存的设置可根据statspack信息和v$system_event,v$sysstat,v$sesstat,v$latch 等view信息来考虑微调。

3.1.2 Oracle的其他调整
  为了Oracle高效率的运行,除了上面提到的内存因素之外,还有就是需要良好的数据库设计:表、视图、索引和日志的合理规划和建立。I/O的性能也是重要因素,应尽量减少页交换和页分配。此外,就是改善检查点的效率。

BEA WebLogic平台下J2EE调优攻略:操作系统调优
作者:周海根 来源:BEA 发布时间:2007-05-09
第四章 操作系统调优(目录)
4.1 操作系统调整
  操作系统影响应用程序运行性 能的因素主要有:硬件的配置(CPU、内存、硬盘等),核心参数,TCP/IP参数以及补丁的情况等。这里对操作系统的优化,除了更新最新的补丁程序以保 证应用程序正常运行之外,就是调整TCP/IP参数,文件描述符,对于个别操作系统还有其他特别的参数调整。下面将依次介绍不同操作系统的情况,更多的信 息请参考各操作系统的文档。

4.1.1 HP-UX
  对于HP-UX,你首先需要安装java Patch:
http://www.hp.com /products1/unix/java/patches/index.html,然后需要确认下面文档中的核心参数是否满足(可以使用sam命令修改 核心参数):http://e-docs.bea.com/platform/suppconfigs/configs81/hpux11_risc /81sp3.html#80105。

  调整TCP参数: ndd -set /dev/tcp tcp_conn_req_max 1024, 将侦听队列的最大允许长度调整到1024。 有时操作系统限制进程使用的最大内存数小于你要配置的内存大小,则需要调整该值。

  读者可以从http://docs.hp.com/hpux/onlinedocs/TKP-90203/TKP-90203.html了解更多的HP-UX调整建议。

4.1.2 Solaris
  调整TCP的参数,等待时间间隔tcp-time-wait-interval建议设置为60000ms: /usr/sbin/ndd ?set /dev/tcp tcp_time_wait_interval 60000;
其他参数调整如下:

tcp_xmit_hiwat/tcp_recv_hiwat 131072
tcp_conn_req_max_q/tcp_conn_req_max_q0 16384

  调整一个进程打开的文件描述符的数量:软限制和硬限制以及散列表的大小,修改/etc/system文件:

set tcp:tcp_conn_hash_size=32768
set rlim_fd_cur=8192
set rlim_fd_max=8192

更多的调整信息请查阅: http://docs.sun.com/db/doc/806-7009(Solaris9)。

4.1.3 AIX
   AIX用no命令调整TCP参数,等待时间间隔tcp_timewait: no -o tcp_timewait=4,将tcp.timewait参数设置为4个15秒间隔,即1分钟。运行no -a命令将显示网络当前的所有属性值。由于UDP_SENDSPACE默认的缓存大小是8k,为减少I/O异常,需调整为32k:

  no -o udp_sendspace=32768。此外, 当webLogic HTTP请求忙时,可以调整侦听队列的最大长somaxconn到8192(默认值是1024)。

  更多信息:http://publib16.boulder.ibmo.com/pseries/en-us/aixbman/prftungd/prftungd.htm。

4.1.4 Linux
   调整Linux系统使用sysctl命令修改TCP参数等待时间间隔:sysctl -w ip_ct_tcp_timeout_time_wait=60;调整打开文件的最大数:在/etc/sysctl.conf文件中,添加: Fs.file-max=65535,然后运行sysctl -p;调整打开文件描述符最大数为8192:在/etc/security/limits.conf文件,添加:webLogic hard nofile 8192(仅针对webLogic用户),然后在webLogic启动文件里运行ulimit-n 8192激活设置。

更多信息请查阅:http://ipsysctl-tutorial.frozentux.net/ipsysctl-tutorial.html。

4.1.5 Windows
   Windows系统的调整通过修改注册表HKEY-LOCAL-MACHINESYSTEMCurrent ControlSetServices文件夹来完成。可以调整TcpipParameters子文件夹中的等待时间间隔时间 TcpTimedWaitDelay参数的值。侦听队列最大长度的默认值为15,为修改它,可在InetinfoParameters子目录中创建 DWORD条目ListenBackLog。
此外,Windows2000的Service Pack(要求sp3以上)也会影响系统稳定性: http://e-docs.bea.com/platform/suppconfigs/configs81 /win2ksvr_as_data_pentium/81sp3.html。

BEA WebLogic平台下J2EE调优攻略:性能监控和性能分析
作者:周海根 来源:BEA 发布时间:2007-05-09
第五章 性能监控和性能分析(目录)
5.1 性能瓶颈
  最后,介绍一下实际分析J2EE应用性能的常用命令和工具。对于实现一个高性能的J2EE应用来说,掌握了J2EE调优的理论经验还是不够的。掌握性能监控,发现瓶颈和问题诊断才是保证J2EE系统持续高效运行的关键。
瓶 颈指的是限值所有吞吐操作以及严重影响反应时间的系统内资源。在分布式系统内寻找并纠正瓶颈是非常困难的,需要有经验的团队来解决。瓶颈会发生在web服 务器上,程序代码中,应用服务器上,数据库,操作系统或者网络,硬件上。经验表明,瓶颈很容易发生在如下地方:数据库连接与队列中;应用服务器的程序代码 中;应用服务器和web服务器硬件上;网络和TCP配置中。实际中可以着力对这些环节进行监控。

5.2 操作系统监控
   操作系统层面的性能监控主要是对内存、CPU、I/O和交换区的使用情况进行监控分析。windows平台可以通过任务管理器和perfmon工具查 看。如果是unix系统可以使用stat系列命令(vmstat, mpstat, iostat)监控内存、CPU和I/O的即时变化,使用swap命令查看交换区的使用情况。如果操作系统安装了top、topas、glance等使用 工具,则使用top、topas、glance将能更为方便地看到webLogic进程对操作系统的内存,CPU和I/O资源使用的即时变化情况。

  而网络方面的性能可以通过ping和netstat等命令来监控,主要几个关键的网络统计值,如数据包再发送、重复数据包和数据包侦听丢失。

  说明:本文提到的unix命令并非适用所有操作系统,仅供参考。

5.3 数据库监控
  数据库层面的监控这里为oracle9i为例来说明,可以采用oracle自带的工具Oracle
Interprise Manager Console来监控session和sql的执行情况。还有其他专业的数据库监控工具可以使用,比如QUEST的 spotlight(http://www.quest.com/spotlight-portal/)可以非常形象和直观地对Oracle数据库的 CPU、内存、I/O、Data Buffer Size、Shared Pool Size、Redo Buffer等参数进行即时监控,并自动对不正常的参数以红色显示。

5.4 webLogic监控
5.4.1 JVM监控
   采用java参数-verbose:gc 来分析JVM的GC非常繁琐,而且不直观。使用-Xloggc:gc.log 参数将GC日志写入文件,采用GC 工具HPjtune (http://www.javaperformancetuning.com/tools/hpjtune/index.shtml)进行分析,可以轻 松看出当前jvm参数配置是否合理。

  严格意义上来说HPjtune是一个分析工具,不是监控工具。这里不得不提及 jRocket,Intel平台上最快的JVM, 在webLogic启动命令中增加-Xmanagement参数,就可以执行beajrockit81sp3_142_04 in下console命令监 控webLogic的内存使用和CPU负载情况。设置Tools/Preferences菜单中的Mode of operation属性为developer, jRocket将提供Method Profiler工具,她能够将所有在JRockit java虚拟机上执行的成员方法的调用次数、执行的总时间和每次调用的执行时间都统计出来,进行代码级调优,这是jRockit的又一大优势。


5.4.2 Console监控
  webLogic Console除了管理配置功能之外,提供了丰富的监控功能。通过webLogic Console,首先我们可以查看服务器的运行情况。

5.4.2.1 Server监控
   通过使用服务器的Performance Monitoring选项卡,可以查看到请求吞吐量,执行队列积压情况以及JVM栈利用情况。而通过点击Performance Genaral选项卡中” Monitor all Active Queues...”可以查看所以执行线程的当前统计数据。此外Monitoring选项卡还可以监控JTA和JMS等Service的情况。


5.4.2.2 JDBC监控
  在连接池Monitoring选项卡中,webLogic Console为每一个数据库连接池提供了实时统计信息。其中有三个重要参数可以反应webLogic Server的健康状况:Connections High、Wait Second High和Waiters High。Connection High表示从服务器启动开始后到达池的最大连接数量,如果大于池的最大数量,则需要调整Maxium Capacity。Waiters High表示在没有可用连接的情况下,应用程序等待连接的最大个数。我们可以根据Waiters High的大小调整连接池容量。更多的参数可以通过Customize this view链接添加,参数含义参考:http://e-docs.bea.com/wls/docs81/ConsoleHelp /domain_jdbcconnectionpool_monitor.html#1104829。

5.4.2.3 web监控
  web Application Monitoring选项卡可以监控web应用的Session个数,以及Servlet的响应情况,激活Session Monitoring Enabled可以获取所有session的统计情况。更多信息请参考:
http://e-docs.bea.com/wls/docs81/ConsoleHelp/web_applications.html#1106723。

5.4.2.4 JMS监控
   Welogic Console JMS监控功能比较多,不仅在Server JMS Monitoring选项卡可以监控Active JMS Connections, Pooled JMS Connections和Active JMS Servers的连接和使用情况。还可以监控JMS Session Pool、Active JMS Destinations和Durable Subscribers的消费和生产情况。比如,我们可以监控到JMS Queue的接收和消费消息的数量和字节数。有关JMS监控的详细情况可参见:http://edocs.bea.com/wls/docs81 /ConsoleHelp/jms_monitor.html。

5.4.2.5 EJB监控
   EJB监控包括对SLSB,SFSB,Entity Bean,MDB四种EJB的监控。本人认为EJB监控提供了非常丰富的运行时统计信息(http://e-docs.bea.com/wls /docs81/ConsoleHelp/ejb.html#1105036),非常有利于我们对EJB进行性能调优。

  SLSB选项 卡为用户提供实例池的运行时统计信息。Pool Miss Ratio 表示实例池的Miss率,Pool Waiter Total Count 表示线程等待bean 实例的累计时间,Pool Timeout Total Count表示超时的线程数。当Pool Miss Ratio较大时,可以增加max-beans-free-pool。

  SFSB可以关注Cache Miss Ratio和Activation Count。Cache Miss Ratio过大时,调大max-bean-in-cache未必有帮助,需要尝试不用的max-bean-in-cache以获得最低的Cache Miss Ratio。激活将严重减慢应用程序的速度,如果某一个bean的Activation Count的值过高,那么需要考虑增加max-bean-in-cache的大小。
Entity Bean结合了SLSB的free pool和SFSB的cache。可以结合上面的策略进行监控。

  而MDB仅比SLSB多一个参数JMSConnection Alive,报告EJB是否成功连接到JMS目的地。

更多Console监控信息可参见http://edocs.bea.com/wls/docs81/ConsoleHelp/index.html。

5.4.3 实用工具分析
   webLogic除了提供Console进行应用监控之外,用户还可以编写JMX程序或者通过SNMP协议进行监控。而QUEST Spotlight for webLogic Server提供了类似webLogic Console类似的监控功能,并对异常情况显红。
这 里不得不提到实战中经常用来分析性能瓶颈的工具THREAD DUMP,统一的命令是使用 weblogic.Admin 命令 THREAD_DUMP。而在 windows上还可以使用+ 来创建诊断问题所需的线程转储Thread Dump,而在unix上使用kill -3 命令。我们从中可以看到webLogic后台线程的运行情况,通常需要每隔10秒左右持续执行几次以助诊断问题。更多信息可 以参考BEA实战集锦。

5.5 应用程序分析
  应用程序分析除了凭借程序员丰富的经验和敏 锐的洞察力去人工检查代码之外,使用厂家的工具也是节省时间的不错选择。目前市场上有Borland Optimizeit Enterprise Suite和QUEST Jprobe两个产品可以用来分析性能瓶颈,垃圾收集,内存泄漏,线程死锁和代码复盖等。Hpjmeter是一个免费的工具,也具有以上类似的性能分析功 能。

  而Borland Optimizeit Server Trace,HP OpenView Transaction Analyzer和Mercury LoadRunner J2EE breakdown都可以用来分解J2EE应用从客户端访问到最终数据库操作每一层次花费的时间,甚至精确到每一个方法的执行时间。Server Trace还具有检查内存泄漏,连接泄漏和错误警告等功能,一般在测试环境中使用。而HP OTVA的优势在于运行时监控,LoadRunner优势在于压力测试。

总结(目录)
   J2EE调优是一门实践和经验科学,是一个复杂而往复的过程。其原则是:合理。合理,看似简单,细细品味,意味深长。本文所述的调优策略并不是一成不变 的,只是为了给大家一个参考建议,让大家少走弯路,关键是根据实际环境调优。欢迎有兴趣的朋友在论坛上积极讨论和批评指正。
参考文献(目录)
[1]BEA webLogic Server edocs: http://e-docs.bea.com/wls/docs81/perform/index.html
[2]Gregory Nyberg & Robert Patrick :Mastering BEA webLogic Server
[3]Jack Shirasi:java Performance Tuning
关于作者(目录)
周海根(dev2dev ID:zhouhg) 合力思软件(中国)有限公司技术顾问,BEA Certified Specialist,BEA dev2dev撰稿人。多年从事J2EE开发工作,目前致力于技术支持工作,主要研究J2EE技术在webLogic上的应用、调优。有着西电人的务实, 喜欢专研技术,是个体育狂热者。
联系方式: 010-85251858-1053,zhouhaigen@hotmail.com

2008年12月28日日曜日

软考学习笔记-数据库工程师第十五章-知识产权基础 第十六章 标准化

软考学习笔记-数据库工程师第十五章-知识产权基础 第十六章 标准化
第十五章 知识产权基础 第十六章 标准化

1、知识产权的概念,是指民事权利主体基于智力创造性的智力成果。可以分为工业产权和著作权(版权)。

  知识产权的特点:无形性、双重性、确认性、独占性、地域性、时间性。

2、计算机软件受著作权保护的条件:按计算机软件保护条例规定,受保护的软件产品应“独立创作、可被感知、逻辑合理”。

  计算机软件保护条例规定,合法受保护的对象为“程序和文档”,著作权法不保护软件开发使用的思想、概念、发现、原理、算法、处理过程和运算方法。

  计算机软件著作权的权利有2类,人身权和财产权。人身权包括发表权、开发者身份权(署名权)。

财产权,计算机软件保护条例规定,软件著作权人享有:使用权、复制权、修改权、发行权、翻译权、注释权、信息网络传播权、出租权、使用许可权和获得报酬权、转让权。

  计算机软件著作权的归属问题:

1)职务开发软件著作权的归属;

2)合作开发软件著作权的归属;

3)委托开发的软件著作权的归属;

4)接受任务开发的软件著作权归属; --3,4两条中都是先依据合同或协议来确认著作权归属,如未明确归定则著作权属于实 际的开发者。
5)主体变更后软件著作权的归属;

6)权利转让后软件著作权的归属;

7)司法、判决引起的软件著作权归属问题;

8)保护期满权利丧失。

3、计算机软件的商业秘密权

  商业秘密的定义:在<中华人民共和国反不正当竞争法>中将商业秘密定义为“不为公众所知的、能为权利人带来经济利益、具有实用性并经权利人采取保密措施的技术信息和经营信息”。经营秘密和技术秘密是商业秘密的基本内容。

  商业秘密的构成条件:未公开性、具有实用性、保密性。一项商业秘密要受到法律保护,必须具备这三个条件。

  <中华人民共和国反不正当竞争法>保护计算机软件,是以计算机软件中是否包含着“商业秘密”为必要条件。即使软件尚未开发完成,在软件中已经形成的知识内容也可以作为商业秘密。

4、授予专利权的条件:新颖性、创造性、实用性。

  专利法不适用的对象有:违法违德妨害公共利益的发明,客观世界已存在但未揭示的规律、性质和现象,智力活动的规则和方法,病的诊断及治疗方法,动物和植物的品种,原子核变换得到的物质。

  发明专利的保护期为20年,实用新型专利权和外观设计专利权的保护期为10年。公民的作品发表权的保护期为公民终生及其死后50年。我国商标权的保护期为10年,到期时可以续注,每次10年。计算机软件著作权保护期为50年。

  我国著作权法不保护“法律、法规、国家机关的决议等性质的文件,及其官方正式译文。

  我国著作权法规定:作者的署名权、修改权、保护作品完整权的保护期不受限制。

  著作权法规定:为介绍、评论某一作品或者说明某一问题,在作品中适当引用他人已经发表的作品,可以不经著作人许可,但应当指明作者姓名、作品名称且不能侵犯著作权人享有的其他权利。

  著作权法规定:汇编若干作品、作品的片段或者不构成作品的数据或者其他材料,对其内容的选择或者编排体现独创性的作品,为汇编作品,其著作权由汇编人享有,但行使著作权时,不得侵犯原作品的著作权。

  软件工程师接受单位的任务,独立完成了某应用软件的开发和设计,其软件著作权属于“单位的法人”。

  我国专利法规定,申请专利的发明创造,在申请日以前6个月内,有下面情况发生的,不会丧失新颖性:

1)在中国政府主办或者承认的国际展览会上首次展出的;

2)在规定的学术会议或者技术会议上首次发表的;

3)他人未经申请人同意而泄露其内容的。

  专利申请日:以专利局收到完整专利申请文件的日期为专利申请日。如果申请文件是邮寄来的,则以寄出的邮戳日期为申请日。

5、标准化的基本过程:标准产生子过程、标准实施子过程、标准更新子过程。

  标准的编号: 国际标准编号形式为-- 标准代号+专业类号+顺序号+年代号

我国标准编号形式为-- 标准代号+标准发布顺序号+年代号(年号即发布年份的后两位数字)

国家标准代号:GB(强制性的) GB/T(推荐性的)

行业标准代号:由汉语拼音大写字母组成,加上斜线T后变为推荐标准。如:JR(金融)

地方标准代号:由DB加上两位地方代码(北京为11)

企业标准代号:由Q加上斜线再加上企业代号组成。如Q/**。

6、国际标准组织: ISO--国际标准化组织

IEC--国际电工委员会

ITU--国际电信联盟

  国家标准组织: ANSI--美国国家标准

DIN--德国国家标准

BS--英国国家标准

JIS--日本 SIS--瑞典 SNV--瑞士 NF--法国

UNI--意大利

GJB--中华人民共和国国家军用标准

  行业协会标准: IEEE--美国电气电子工程师学会

7、采用国际标准的程度分为:等同IDT、等效EQV、非等效NEQ。

8、过程评估标准ISO/IEC 15504,它提供了一个软件过程评估的框架。它可以被任何软件企业用于软件的设计、管理、监督、控制以及提高获得、供应、开发、操作、升级和支持能力。它涉及了过程评估的各个方面,其文档主要包括9个部分。

  ISO标准每5年复审一次。我国的国家标准有效期也是5年。国家标准的最后两位数字是年号。

  条码中对应条码符号的一组阿拉伯数字称为条码代码,条码代码供人们直接识读,可以通过键盘向计算机输入数据。

  ISO9000:2000<质量管理体系 基础和术语>标准提出的“8项质量管理原则”,是在总结了质量管理经验的基础上,明确了一个组织在实施质量管理中必须遵循的原则,也是ISO9000:2000族标准制定的指导思想和理论基础。

  ISO9000系列标准是国际化标准化组织质量管理和质量保证技术委员会于1987年分布的质量管理和质量保证系列标准。

  目前ISO9000:2000系列标准它包括5项具体标准。

  ISO12207是软件生命周期过程的国际标准。

  ISO/IEC JTC1是制定信息技术领域国际标准的机构。

考学习笔记-数据库工程师第十四章-数据库发展趋势与新技术

软考学习笔记-数据库工程师第十四章-数据库发展趋势与新技术
第十四章 数据库发展趋势与新技术

1、面向对象数据库系统应该具有以下特征:

  表达和管理对象的能力;

  具有任意复杂度的对象结构;

  具有与面向对象编程语言交互的接口;

  具有表达和管理数据库变化的能力。

2、面向对象数据模型

  面向对象数据模型可以看作在一个更高层次上实现数据模型的新成员,并经常用作高层概念模型,尤其在软件工程领域中更是如此。

  面向对象数据模型的基本概念有对象、类、继承、对象标识和对象嵌套。

对象结构:属性集合、方法集合、消息集合

对象类 :在面向对象数据库中,类是一系列相似对象的集合,对应于E-R模型中的实体集概念。类是面向对象系统和数据库系统之间最重要的连接。首先,类直接说明了一个实例及其所属类之间的实例关系;其次,类提供了构成查询的基础;另外,类可以用来增加面向对象数据库的语义完整性;最后,类提出了所有对象的属性和方法的规格说明,便于生成对象。

 类的概念相似于关系,类的属性相拟于关系的属性,对象相似于关系中的一个元组。

继承与多重继承:在面向对象的数据模型中,所有类形成了一个有限的层次结构或者是一个有根的无环有向图,称之为层次。

对象标识:每个对象惟一的、由系统生成的对象标识OID。几种常用的标识为,值、名称、内置名。对象标识要求必须具有永久持久性。根据实际应用的需求,大多面向对象数据库系统允许有对象和值两种标识表示方法共同使用。

对象嵌套:在面向对象数据模型中,对象的一个属性可以是一个单一值,也可以是一个来自值域的值集,即一个对象的属性可以是一个对象,形成了嵌套关系。

3、面向对象数据库语言:包括对象定义语言和对象操纵语言。对象查询语言是对象操纵语言的一个重要子集。

  面向对象数据库语言应该具有这些功能:类的定义和操纵;

操作/方法的定义;

对象的操纵。

4、对象关系数据库系统

  在今天的商业领域中,占统治地位的数据库管理系统产品有2个:关系数据库系统和面向对象数据库系统。另外还有两种主要的类型是层次数据库和网关数据库。

  对象关系数据模型扩展关系数据模型的方式是提供一个包括复杂数据类型和面向对象的更丰富的类型系统。

  (1)嵌套关系:元组在一个属性上取值可以是一个关系,于是关系可以存储在关系中,从而形成了关系的嵌套。这样,一个复杂的对象可以用嵌套关系的单个元组来表示。

  (2)复杂类型:集合是集合体类型的一个实例,另外的集合体类型包括数组和多重集合。面向对象关系数据库允许属性是集合。

  (3)继承、引用类型:SQL99仅支持单继承

  (4)与复杂类型有关的查询: 路径表达式;(使用右向箭头符号,例如select head-->name,head-->address from departments)

以集合体为值的属性;

嵌套与解除嵌套。(将一个嵌套关系转换为1NF的过程称为解嵌套,反向过程就是嵌套。嵌套可以通过SQL的分组扩展实现,即不使用聚集函数而只是返回多重集合)

  (5)函数与过程:对象关系数据库系统中允许用户定义函数与过程,既可以用SQL来定义,也可以用外部的程序设计语言来定义。

  (6)面向对象与对象关系:几种数据库系统的能力如下,

关系系统 --简单数据模型、功能强大的查询语言以及高保护性;

对象关系系统--复杂数据模型、功能强大的查询语言以及高保护性;

以持久化程序设计语言为基础的面向对象系统--复杂数据类型、与程序设计语言集成以及高性能。



5、ERP与数据库

  ERP的形成经历了四个阶段:基本MRP阶段、闭环MRP阶段、MRP-2阶段以及ERP阶段。

  基本MRP,在传统的库存理论中引入了时间分段和反映产品结构的物料清单,从而较好的解决了库存管理和生产控制中的难题。

  闭环MRP,在基本MRP的基础上,加入了对能力的约束的考虑,如供货能力或运输能力,从而形成了信息回路,称为闭环MRP。

  MRP-2,以生产计划为主线,统一计划和控制各种资源,使企业的物流、信息流、资金流都畅通,也实现了动态反馈。

  ERP,它继承了MRP-2的基本思想,但是把管理重心转移到财务上来,在全过程中贯穿财务成本控制的概念。

6、ERP设计的总体思路

  一个中心,两类业务,三条干线。即以“财务”为中心,处理“计划”和“执行”两类业务,围绕“供应链管理、生产管理、财务管理”这3条干线。

  在ERP系统的设计过程中怎么样应用数据库技术:

1)先要绘制出业务处理流程图;

2)绘制出数据流程图;

3)绘制E-R图; --前3步都是在前一步的基础上发展深入,一步步为数据库设计打好基础。

4)绘制功能模块图。

7、决定支持系统

  决策支持系统实质上是在管理信息系统的基础上发展起来的。它综合利用了各种数据、信息、知识,特别是模型技术,能够辅助各级决策者解决决策问题。决策支持系统的新特点就是增加了模型库和模型库管理系统。

8、数据仓库

  数据仓库已成为建立决策支持系统的重要技术手段,是建立决策支持系统的基础。

  数据仓库的数据有4个特征:面向主题的、集成的、不可更新的和随时间不断变化的。

  数据仓库的数据模型与传统的数据库相比有一些区别:它不包含纯操作型的数据;扩充了码的结构,增加了时间属性作为码的一部分;增加了一些导出数据。

  数据仓库的设计过程与传统数据库相似,分为三级数据模型,即概念模型、逻辑模型、物理模型。概念模型使用E-R图描述,长方形表示主题而不再是实体,其它雷同。逻辑模型就是关系模型。

  在进行数据仓库设计时,需要把数据分割和粒度划分结合起来考虑。粒度划分就是确定数据仓库中数据单元的详细程序级别,数据分割类似于数据分片概念。

  元数据是数据仓库设计的一个重要组成部分。

9、数据转移技术

  数据转移技术也称为数据转换或数据变换,把多种传统资源或外部资源信息中不完善的数据自动转换为准确可靠的数据。

  数据转移技术有4种转移类型: 1)简单转移 (数据元的类型转换、日期/时间格式转换、字段解码)

2)清洗 (检查字段中的有效值、重新格式化某些类型的数据,如地址)

3)集成

4)聚集和概括

10、OLTP,联机事务处理,以快速事务响应和频繁的数据修改为特征,方便用户使用数据库快速处理具体业务。

  OLAP,联机分析处理,是以数据仓库进行分析决策的基础,是针对待定问题的联机数据访问和分析。

  它们是两类不同的应用。

  OLTP与OLAP的对比:

OLTP OLAP

数据库原始数据 数据库导出数据或数据仓库数据
细节性数据 综合性数据
当前数据 历史数据
经常更新 不可更新,但周期性刷新
一次性处理的数据量小 一次性处理的数据量大
响应时间要求高 响应时间合理
用户数量大 用户数量相对较少
面向操作人员,支持日常操作 面向决策人员,支持管理需要
面向应用,事务驱动 面向分析,分析驱动

11、企业决策支持解决方案,需要从决策支持系统的体系结构(C/S较流行)、软件工具和开发(原型法、生命周期法)3个方面加以分析。

软考学习笔记-数据库工程师第十三章-网络与数据库

软考学习笔记-数据库工程师第十三章-网络与数据库
第十三章 网络与数据库

1、分布式数据库的目标: 一是,借助网络把分散在不同地域的数据管理起来;

另一是,各个地域的数据库系统仍能支持本地应用。

  分布式数据的定义: 分布性;逻辑相关性;场地透明性;场地自治性。全部满足这些条件的数据库系统称为完全分布式数据库系统。

  分布式数据库的特点:

1)数据的集中控制性;

2)数据独立性;

3)数据冗余可控性;

4)场地自治性;

5)存取的有效性--分布式数据库系统中的查询优化有两个级别。一个是全局优化,决定在多个副本中选取合适的场地副本,使得场地间的数据传输量及次数最少,从而减少系统通信开销;另一个是局部优化,这与传统的集中式数据库中的优化是相同的。

上面的这些特点中,前3点都是数据库系统优于文件系统的方面,并且除第4点以外,传统数据库也应该具有这些特点。

2、分布式数据库的体系结构

  (A)分布式数据库系统的模式结构:目前国际上还没有统一的标准。国内提出的4层模式结构如下:全局外层、全局概念层、局部概念层、局部内层。

1)全局外层 --分布式数据库的全局视图是针对分布式数据库特定的全局用户,是对分布式数据库的最高层的抽象。

2)全局概念层--是分布式数据库的整体抽象,但比集中式的概念层有更多的描述。全局概念层有3种模式描述信息,全局概念模式、分片模式、分配模式。

(1)全局概念模式:描述分布式数据库全局数据的逻辑结构;
(2)分片模式:描述全局数据逻辑划分的视图,每一个逻辑划分就是一个分片;
(3)分配模式:是分片后的物理分配视图。

因此分布式数据库的定义语言除了需要提供概念模式的定义语句外,还要提供分片模式和分配模式的定义语句。全局概念模式到分片模式的映射是一对多的;分片模式到分配模式的映射是一对多的或一对一的,这要由数据分布的冗余策略决定。作为GDBA,将负责全局数据结构的定义、逻辑分布的定义和物理分布的定义。

3)局部概念层--该层由局部概念模式描述,全局概念模式经逻辑划分后被分配在各局部场地上。

4)局部内层 --相当于集中式数据库的内层。

4层结构的全局数据库和局部数据库分离、数据独立性、透明性、数据冗余控制都体现了分布式数据库的特点。

  (B)数据分布:数据的划分和放置是数据分布问题的两个重要方面。有几种处理策略,集中式、分割式、复制式和混合式。

  (C)数据分片:也称数据分割。对于关系数据库,数据分片有3种方法,水平分片(元组)、垂直分片(属性)、混合分片(水平和垂直)。水平划分元组为若干不相交的子集,可以通过合并操作恢复全局关系。垂直划分关系的属性为若干子集,要求所有属性都要被划分且每一垂直片都包含该全局关键字,可以通过连接操作恢复该全局关系。

数据分片要遵守的原则为:完备性条件;可重构条件;不相交条件(关键字除外)。

  (D)分布透明性:也称为分布独立性,由高到低分成了3个级别,分片透明性--分配透明性--局部数据模型透明性。

局部数据模型透明性,也称为局部映像透明性,是透明性的最底层,在4层模式中处理分配模式和局部概念模式之间。全局数据模型与每个节点上局部数据库的数据模型的转换是由分配模式与局部概念模式之间的映像实现的。当某个节点上的数据库的数据模型改变时,只要改变分配模式到该节点局部概念模式之间的映像即可,应用程序不受影响,从而实现了局部数据模型透明性。

  (E)分布式数据库管理系统DDBMS:有两大类,综合型和联合型。前者是新建的一个分布式数据库,后者是整合已经存在的多个节点的数据而形成。联合型又可以分为同构型和异构型。

分布式数据库管理系统由4部分组成:LDBMS、GDBMS、GDD(全局数据字典)、CM(通信管理)。

一个完全的分布式管理系统要符合12条规则:场地自治性;非集中式管理;高可用性;位置独立性;数据分割独立性;数据复制独立性;分布式查询;分布式事务管理;硬件独立性;操作系统独立性;网络独立性;数据库管理系统独立性。

注意理解分布式数据库系统结构模式图,和分布式数据库管理系统结构图。






3、分布式查询处理和查询优化

  与集中式数据库环境中的查询相比,分布式数据库环境中的查询还要考虑到:数据、信息传输的延迟问题;网络中存在多处理器时的并行数据处理机会。这两点都会影响到查询的速度。

  查询优化器,在分布式数据库系统中它的任务是控制和加快查询的执行与数据传输的过程。在分布式查询处理技术中,查询优化的基本类型通常包括2类:针对查询执行代价的优化,和针对查询响应时间的优化。

  查询执行代价优化的目标是,使查询执行所使用的系统资源尽量少(最便宜);

  查询响应时间优化的目标是,尽量减少响应时间而不计较系统资源的消耗(最快)。

4、分布事务管理

  1)分布式事务:在分布式数据库系统中,一个分布式事务是由若干个不同站点上的子事务组成的。

  2)分布式事务与集中式事务的相同特性:与集中式事务的特性相同为ACID,原子性、一致性、隔离性和持久性。

  分布式事务与集中式事务的不同特性:执行特性、操作特性和控制报文。执行过程中,分布式事务要必须创建一个控制进程,协调子事务、数据及控制报文;而集中式事务仅由并行调度算法进行调度即可。操作过程中,分布式事务还要加入大量的通信原语和控制原语。集中式事务没有使用控制报文。

  3)分布式数据库故障:分为节点故障(事务故障、系统故障、介质故障),通信故障(报文故障、网络分割故障)。其中报文故障包括报文错、报文丢失、报文延迟。

  4)分布式数据库的恢复原则:保证事务原子性的措施称为事务故障恢复,有几个原则是,

孤立和逐步退出事务的原则UNDO;

成功结束事务原则REDO;

夭折事务的原则。(撤消全部事务,恢复到初态)

在分布式事务恢复中,本地事务的恢复和集中式事务的恢复相同,由本地事务管理器LTM执行。整个的分布式事务的恢复由LTM与DTM(分布式事务管理器)协同完成。

  5)两阶段提交协议2PC(准备提交、建议提交/撤销、全局提交/撤销、确认)

在2PC中,将分布式事务的某一个代理指定为协调者,其它代理都是参与者。参与者可以进行单方面撤销。2PC可以分为两个步骤:先是表决阶段,然后是执行阶段。表决中实行一票否决。

2PC对故障的恢复:(1)场地故障 参与者在写入“建议提交”前发生故障 : --协调者等到超时后将取消事务,该参与者自行可以     终止事务。
参与者在写入“建议提交”后发生故障: --而其它参与者可以正常结束事务,该参与者 要访问协调者或其它参与者获得之前协调者作出 的决定并执行相应的操作。
协调者在写入“准备提交”后,在写入“全局提交/撤销”前发生故障:
--协调者从头恢复提交协议
协调者在写入“全局提交/撤销”后,在写入“事务结束”记录前发生故障:
--协调者恢复时要给所有的参与者重发之前的全局决定。
(2)报文丢失 丢失参与者的回答报文(建议提交/撤销): --协调者将取消整个事务

丢失“准备提交”报文: --协调者在超时后将取消整个事务

丢失“全局提交/撤销”报文: --涉案参与者将请求协调者重发该报文

丢失“确认”报文: --协调者将重发全局报文,参与者无论子事务 提交与否都要给予确认。
(3)网络分割故障,整个网络被分为2组,协调者组和参与者组。各自进行故障处理。

  6)三阶段提交协议3PC(在2PC基础上增加了,全局预提交和准备就绪,两个报文,可以确认所有参与者的状态)

第一阶段,协调者向所有的参与者发“准备提交”报文,只有所有参与者都投票“建议提交”,才会进入第二阶段;

第二阶段,协调者向所有的参与者发“全局预提交”报文,只有所有参与者都投票“准备就绪”,才能进入第三阶段;

第三阶段,协调者向所有的参与者发“全局提交”报文。

3PC仅降低了阻塞发生的可能性,不是完全的非阻塞协议。

  3PC对故障的恢复: 协调者发出的“准备提交”报文延迟,参与者超时而撤销子事务;

协调者等待参与者投票时超时,协调者将撤销事务;

参与者处于“赞成提交”状态,而等待全局预提交时超时,参与者将进入恢复处理过程;

参与者处于“准备就绪”状态,而等待全局提交时超时,参与者将进入恢复处理过程。

在3PC协议中,恢复处理过程惟一可以做的是就近访问一个参与者,依照协调者之前作出的决定安排自己的操作。

5、WEB数据库

  WEB数据库由数据处理和资源共享这两种技术结合而成,也称为网络数据库。

  WWWW下的WEB数据库,RDB增加了DB的面向对象成分、增加各种中间件(CGI、ISAPI、ODBC、JDBC、ASP),通过应用服务器解释执行各种HTML中嵌入的脚本,来解决Internet应用中数据库的显示、维护、输出及到HTML的格式转换。

  WEB服务器的连接方案,有2套:服务器端方案(CGI、SAPI、ASP、PHP、JSP)和客户端方案(JDBC、DHTML)。

  连接数据库的常用方法有:ODBC、DAO、RDO、ADO。ADO是DAO、RDO的简化合集。

6、应用开发平台ASP、PHP、JSP

  ASP,ASP服务器被含在了IIS服务器中,ASP中使用的是VBscript,ASP安装配置简单、易学易用。ASP缺点是使用了组件带来了安全性问题,另外ASP不能跨平台使用。

  PHP,简单易学,可以跨平台,具有良好的数据库交换能力,与Apache紧密结合,安全性好。缺点是安装配置复杂,并且缺少企业级的支持。

  JSP,可移值性好,可以跨平台,伸缩性强大,多样化并有强大的工具支持。缺点是安装配置管理都较复杂,只适用于大型系统。

7、关于CGI(Common Gateway Interface)

  是最早出现的动态网页发布技术。通过CGI接口,服务器可以向CGI程序发送信息,CGI程序也可以向服务器发送信息。可以使用任何可形成可执行程序的程序语言编写CGI程序,如C Shell、Perl、C、C++、FROTRAN和数据库语言。CGI支持ODBC方式。

8、关于ASP(Active Server Page)

  ASP提供了一个在服务器端执行脚本指令的环境(包括VBscript,html,JavaScript等),脚本可以嵌入HTML中,还可以通过ActiveX控件实现更加强大的功能。

  ASP通过ADO对象模块来存取数据库,只要数据具有对应的ODBC或OLE DB驱动程序。ASP提供的ADO对象模块俾昼作夜了下列6个对象和3个集合。 Connection对象
Recordset对象
Fields集合
Field对象
Command对象--返回值为Recordset对象
Parameter集合
Parameter对象
Error集合
Error对象

9、关于Servlet和JSP

  Servlet是一个运行在WEB服务器中的Java程序。它从浏览器获取一个HTTP请求,动态生成内容,并把HTTP信息返回给浏览器。Servlet优点是运行在服务器端且可以更直接地访问数据库。

  JSP技术通常与Java Servlet技术结合,可以在HTML或其它标记语言中嵌入Java代码段并且调用外部Java组件。JSP是一个前端的处理工具,可以使用JavaBean实现更为复杂的业务逻辑和动态功能。

  JSP最大的优点是将网页的静态内容(HTML代码)和动态内容(Java代码)分隔处理,易于人员分工。

10、XML的应用

  采用文件存储XML,会受到文件系统的一些限制(大小、迸发性、工具选择、版本、安全性、综合性)。

  XML与数据库的数据转换:

文档的逆反回归不一致性,将数据存储到数据库时会丢失大量文档相关的信息。同样地,从数据库中检索数据并生成的XML文档,除非预定义的实体一,不包含任何字符数据和实体引用,并且同层元素和属性的出现顺序常常就是从数据库中返回数据的顺序。

XML与数据库之间传输数据,需要进行相互映射。有两种映射方式:模板驱动、模型驱动。

软考学习笔记-数据库工程师第十二章-数据库运行与管理

软考学习笔记-数据库工程师第十二章-数据库运行与管理
第十二章 数据库运行与管理

1、数据库系统的运行策略: 从物理环境上保障系统的稳定运行;

从对人员的要求上做保障;

应用数据库的安全性策略;

做好数据库的备份与恢复工作。

2、数据库系统的监控对象和监控方式

  监控对象有3个,性能监控、故障监控、安全监控。

  监控方式有2种,系统监控和应用程序监控。

3、数据库维护

  因为某些原因需要修改数据库的结构,称为数据重构,包括表结构的修改和视图的修改。

  视图机制一方面可以实现数据的逻辑独立性,另一方面可以实现数据的安全性。

  文档是对系统结构和实现的描述,必须与系统保持调度的一致性。数据库重构过程中的所有修改必须在文档中体现出来。

4、数据库系统的运行统计

  系统监控和运行统计是DBA掌握数据库系统运行状态最有效的手段。系统监控用来保障系统的稳定运行,系统统计则用来了解系统性能,作为性能调整的依据。

5、数据库系统的审计,是一种DBMS工具,它记录数据库资源和权限的使用情况。审计是被动的。

6、数据库系统的管理

  (1)数据字典的管理:数据字典是存储在数据库中的所有对象信息的知识库,其中存储的数据称为元数据。数据字典是只读的。

  (2)数据完整性维护和管理:作用对象有列、行、表3种。列级约束、主码约束和参照完整性约束是在数据库定义过程中定义的,存在数据字典中。更为复杂的约束可以编写触发器程序实现。

因此,由DBMS管理的约束,可通过修改数据库定义完成维护和管理;

由应用程序实现的复杂的完整性约束,要通过分析修改程序(触发器程序)来实现。

  (3)数据库的存储管理:数据库中的数据是以文件形式存储在物理存储设备上的,程序通过DBMS完成I/O操作来访问数据。提高系统访问效率的有效手段就是提高I/O操作的效率。使用这样几种手段管理数据的存储,可以有效地提高性能:

1)索引文件和数据文件分开存储,事务日志文件存储在高速设备上;

2)适时修改数据文件和索引文件的页面大小;

3)定期对数据进行排序;

4)增加必要的索引项。

也可以增加计算机内存,引入调整存储设备等外部方式提高系统的访问效率。

  (4)数据库备份与恢复的管理:

设定合理的备份周期和备份时间;

把事务日志文件保存在最稳定的存储设备上;

定期在事务日志文件中加入检查点(checkpoint),检查点记录数据库的正确状态点。在数据库恢复过程中,可以反向扫描日志文件找到第一个检查点,执行UNDO、REDO操作。

  (5)数据库的并发控制与死锁管理:多用户数据库DBMS都提供并发控制机制。在实际运行过程中,死锁的产生多是因为事务程序的错误引起。管理员需要使用系统监控工具和系统日志,找出频繁产生死锁的事务。分析原因,修改事务程序,减少死锁。

  (6)数据库的安全管理:

建立网络安全(防火墙)

操作系统级安全(登录用户管理)

DBMS级安全(访问DB的用户验证密码)

角色和用户授权管理

使用视图和存储过程

使用审计功能

7、数据库系统的性能调整

  1)SQL语句的编码检验:通过DBMS提供的监控和统计功能,找出频繁执行的SQL语句并对其进行优化。步骤为,

(1)尽可能地减少多表查询或建立物化视图;

(2)以不相关子查询代替相关子查询;

(3)只检索需要的列;

(4)用带IN的条件子句等价替换OR子句;

(5)经常提交COMMIT,以尽早释放锁。

  2)表设计的评价:首先要求关系都能符合3NF或BCNF,然后还要根据实际运行情况对表进行调整。

调整的原则是: 如果频繁地访问涉及的是对两个相关表进行连接操作,则将这两个表合并;

如果频繁地访问只是在表中的一部分字段上进行,则考虑分解表或将该部分单独拿出作为一个表;

对于很少更新的表,引入物化视图。

  3)索引的改进:索引的调整原则如下,

如果查询是瓶颈--在关系上新建适当的索引,通常在作为查询条件的属性上建立索引可以提高查询效率;

如果更新是瓶颈--因为每次更新都会重建表上的索引,引起效率的降低,可以考虑删除某些索引;

选择适当的索引类型--比如经常使用范围查询,可以使用B树索引,比散列索引更高效;

将有利于大多数据查询和更新的索引设为聚簇索引。

  4)设备的增强:高速的计算机、增加内存、高速网络设备、高速存储设备。

软考学习笔记-数据库工程师第十一章-数据库设计

软考学习笔记-数据库工程师第十一章-数据库设计
第十一章 数据库设计

1、数据库设计概述:数据库设计属于系统设计的范畴。参照软件工程对生命周期的定义,也把数据库设计分为6个步骤:数据库规划、需求收集分析、数据库设计与应用程序设计、实现、测试、运行与维护。

  数据库设计:数据库的设计是对用户数据的组织和存储设计;应用程序的设计是在数据库设计的基础上对数据操作及业务实现的设计,包括事务设计和用户界面设计。

  实现:依照设计使用DBMS支持的DDL语言实现数据库的定义,用高级程序语言编写应用程序。

2、系统需求分析,是用户和设计人员对数据库应用系统所涉及的内容和功能的理解和描述。

  用户对系统的需求包括:数据需求、围绕这些数据的业务处理需求、数据安全性需求、数据完整性需求。

  需求分析阶段是以调查和分析为主要手段的,以此获得用户对系统的信息要求和处理要求。

  需求分析阶段要完成的主要工作是建立数据字典和数据流图。

  需求分析的方法和步骤:使用数据字典描述用户的信息要求,使用数据流图描述业务处理过程。

数据字典包括,数据项、数据结构、数据流、数据存储、处理过程。

数据项:是数据的最小单位,一般包括项名、含义和说明、别名、类型、长度、取值范围及该项与其它项的逻辑关系。如采购单号;

数据结构:是若干有意义的数据项的集合,包括数据结构名、含义和组成成分。如采购单;

数据流:既可以是数据项也可以是数据结构,它表示某一次处理的输入输出数据,包括数据流名、说明、数据来源和去向及需要的数据项和数据结构。如采购计划数据流;

数据存储:加工中需要存储的数据,包括数据存储名、说明、输入数据流、输出数据流、组成成分、数据量、存取方式以及存取频度等。如原材料的价目表,在计算成本和支付采购费用的处理过程中要用到这些数据;

处理过程:是加工处理过程的定义和说明,包括处理名称、输入数据、输出数据、数据存储及响应时间等,如采购支付处理。

------------------------
处理过程名: 采购支付
说明: 根据采购单、原材料价目表,计算出应付原材料采购费用
输入数据: 采购单
数据存储: 原材料价目表
输出数据: 支付费用表
------------------------

3、概念结构设计,是在需求分析的基础上,对用户信息加以分类、聚集和概括,建立信息模型,并依照选定的数据库管理系统软件把它们转换为数据的逻辑结构,再依照软硬件环境,最终实现数据的合理存储。这一过程被称为“数据建模”。

  数据建模的过程,可以分为3个阶段:概念结构设计、逻辑结构设计、物理结构设计。

  概念结构设计的策略有4种:自顶而下、自底而上、逐步扩张、混合策略。

  概念结构设计最常用的方法是1976年由一位华人学者提出的E-R方法。将现实世界的信息结构统一由实体、属性及实体之间的联系来描述。

  使用E-R方法时,需要对现实事物抽象并以E-R图的形式描述出来,有3种抽象的方法:

分类, 将现实世界中具有共同特征和行为的事物定义为一种类型。个体与类型关系是is member of

聚集, 定义某一类型所具有的属性。各个属性是所属类型的一个成分,is part of

概括, 由一种已知类型定义新的类型。已知类称为超类,新定义类称为子类,关系为is subset of

4、用E-R方法建立概念模型

  步骤:选择局部应用;逐一设计分E-R图;E-R图合并。

  注意属性与实体的区别:属性不可再分;属性不能与其它实体发生联系。

  分E-R图的合并方法就是将具有相同实体的两个或多个E-R图合而为一。合并过程中可能会发生的冲突有:属性冲突、命名冲突、结构冲突。

  对合并后的E-R进行优化的方法有3个:

1)实体类型的合并, 凡具有1:1或1:n联系的实体都可以合并,减少实体个数;

2)冗余属性的消除;

3)冗余联系的消除, 合并后的E-R图中可能会出现实体联系的环状结构,消除直接联系,保留间接联系。

5、逻辑结构设计,是在概念结构设计基础上进行的数据模型设计,可以是层次、网状和关系模型。逻辑结构设计的主要任务是:

确定数据模型;

将E-R图转换为指定的数据模型;

确定完整性约束;

确定用户视图。

6、E-R图向关系模式的转换:

1)实体向关系模式的转换
  将E-R图中的实体逐一转换为一个关系模式,其中实体名对应关系模式的名称,实体的属性转换成关系的属性,实体标识符就是关系的码。

2)联系向关系模式的转换

  一对一联系的转换:有2种方式。

一种方式,是将联系转换成一个独立的关系模式,关系模式的名称取联系的名称,关系的属性包括该联系所关联的两个实体的码和联系的属性,关系的码可以取自任一方实体的码;

另一种方式,是将联系归并到关联的两个实体的任一方,在一方实体属性集中增加另一方实体的码和该联系的属性,归并后的实体码保持不变。

  一对多联系的转换:有2种方式。

第一种方式,是将联系转换成一个独立的关系,关系的名称取联系的名称,关系的属性包括该联系所关联的两个实体的码和联系的属性,关系的码是多方实体的码;

第二种方式,是将联系归并到关联的两个实体的多方,在待归并的多方实体属性集中增加一方实体的码和该联系的属性,归并后的多方实体的码保持不变。

  多对多联系的转换:只有1种方式。

那就是将该联系转换成一个独立的关系,关系的名称取联系的名称,关系的属性包括该联系所关联的两个多方实体的码及该联系的属性,关系的码是两个多方实体的码构成的属性组。

7、关系模式的规范化

  由E-R图转换得来的初始关系模式可能会有数据冗余或更新异常,需要进一步得进行规范化处理:

1)根据语义确定各关系的数据依赖;

2)根据数据依赖确定关系的范式;

3)对不合要求的范式进行分解,达到3NF、BCNF或4NF;

4)对关系进行评价和修正。因为最规范的关系不一定是最合适的关系。

  关系的完整性约束有:主码约束、检查约束、参照性约束

8、数据库的物理设计

  物理设计一般应做这些工作:

确定数据分布;

确定存储结构;

确定存取方式。

  存储结构是指数据文件中记录之间的物理结构,可以是顺序存储、哈希存储、堆存储或B+树存储等。要根据数据的处理要求和变更频度,选定合理的物理结构。

  为提高数据的访问速度,会采用索引技术。同样也要根据数据处理和修改要求,选择恰当的索引字段和类型。

  数据的存取方式,是由其存储结构决定了的。

9、数据系统的实现,是根据设计,由开发人员编写代码程序来完成的,包括数据库的操作程序和应用程序。

  数据库的操作程序使用SQL语言实现,主要有:DDL、DML、事务处理程序、存储过程、触发器。

  嵌入式SQL因为其复杂性,已逐惭被ODBC、ADO接口技术取代。

10、数据库系统的实施方法:

建立实际的数据库结构(DDL)

装载测试数据试运行

装载数据,即卸载实验数据,加载用户数据,正式运行。

11、数据库的保护,是通过数据库的恢复、安全性控制、完整性控制、并发控制,来实现的。

  事务,是数据库处理的基本逻辑单位,事物的原子性、一致性、隔离性和持久性(简称ACID)保证了数据更新的正确性。面向数据更新的应用程序的编写,必须以事务为单位进行数据的操作。

  数据库的备份与恢复:

数据备份与日志备份是数据库恢复技术的主要依据。数据备份又称为数据转储,分为静态和动态两种方式。日志备份用来记录对数据库系统的更新操作,写日志的次序严格按照并发事务执行的时间次序,必须先写日志后写数据库。

数据库系统中的故障类型:事务故障、系统故障、介质故障。

恢复策略:有2种操作,分别是撤销事务(UNDO)和重做事务。

事务故障的恢复:可以UNDO产生故障的事务,回到该事务执行前的正确状态;

系统故障的恢复:系统故障会导致数据库不一致,恢复方法是先UNDO未完成的事务,再REDO已提交的事务;

介质故障的恢复:需要DBA参与,重装数据库、装入数据库的备份和日志文件的副本,再由系统完成UNDO、REDO操作。

  数据库的安全性,是保证数据库不被非法用户访问和破坏的机制。包括:权限机制(GRANT)、视图机制、数据加密。数据加密可以防止数据在存储和传输过程中失密。

  数据库的完整性,是保证数据库不被合法用户的错误操作而破坏。完整性是指数据的正确性和相容性。

  数据库的并发控制:

1)并发操作,可能会带来数据的不一致性有3种,丢失修改、不可重复读和读脏数据。

2)加锁:控制的手段就是加锁。排他锁(写锁X)和共享锁(读锁S)。X锁将独占数据,数据上有S锁时事务只能加S锁读而不能加X锁写。
3)封锁协议:

一级封锁协议,事务T在修改数据A前必须先对A加X锁,直到事务结束才能释放X锁。这样解决了丢失修改的问题;

二级封锁协议,在一级封锁协议基础上,事务T在读数据A前必须对其加上S锁,读完即释放S锁。这样使得一个事务不能读取其他事物修改中的数据,解决了读脏数据问题;

三级封锁协议,在一级封锁协议基础上,事务T在读数据A前必须对其加上S锁,直到事务T结束才释放S锁。这样使得一个事务在读取数据期间,其他事务只能读取该数据而不能修改,所以解决了不可重复读的问题;

两段锁协议,对任何数据进行读写前都必须加锁,在释放一个封锁后,事务不再申请和获得任何其它封锁。这样可以缩短持锁时间,提高并发性,同时解决了数据的不一致性。

软考学习笔记-数据库工程师第十章-系统开发与运行

软考学习笔记-数据库工程师第十章-系统开发与运行
第十章 系统开发与运行

1、软件工程知识

  软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率,提高软件质量,降低软件成本。

  在经历60年代的软件开发危机后,人们开展了软件开发模型、开发方法、工具与环境的研究,提出了瀑布模型、深化模型、螺旋模型和喷泉模型等开发模型,出现了面向数据流方法、面向数据结构的方法和面向对象方法等开发方法,以及一批计算机辅助的软件工程工具和环境。

2、软件生存周期:可以分为6个阶段。计划制定、需求分析、设计、编码、测试、运行维护。

  计划制定: 确定待开发软件系统的总目标,对其进行可行性分析,并对资源分配,合理安排进度计划。

参加人员有,用户、项目负责人和系统分析员。

该阶段产生的文档有,可行性分析报告和项目计划书。

  需求分析: 确定系统功能、性能、数据及界面等要求,从而确定系统的逻辑模型。

参加人员有,用户、项目负责人和系统分析员。

产生的文档有,需求规格说明书。

  软件设计: 分为概要设计和详细设计。

概要设计参加人员为,系统分析员和高级程序员;详细设计参加人员有,高级程序员和程序员。

该阶段产生的文档有,设计规格说明书(可以分为概要设计说明书和详细设计说明书)。

  编码: 产生的文档为源程序清单。

  测试: 文档为测试计划和测试报告。

  运行及维护

3、软件开发项目管理基础知识

  成本管理:有两种方法。 开发费用 = 人月数 * 每个人月的代价
开发费用 = 源代码行数 * 每行平均费用

  风险分析:涉及3个概念,一是关心未来,第二是关系变化,第三是要解决选择问题。风险分析实际包括4个活动:风险识别、风险预测、风险评估和风险控制。

  进度管理:有两种安排方式,一是交付日期已确定,另一个是仅确定了大致的日期,最终交付日期由开发部门确定。常用两种图形描述方法。

Gantt甘特图,横轴表示时间,纵轴表示任务,水平线表示任务的进度安排。它可以很好的描述任务间的并行性,但不能反映任务间的依   赖关系,不能确定整个项目的关键;
PERT图, 是一个有向图,图中的箭头表示任务,图中的结点称为事件,表示流入结点的任务的结点和流出结点的任务的开始。仅当流入结点的任务都结束时,该事件才出现,流出结点的任务才能开始。每个任务有一个松驰时间。为了表示任务间的关系,图中还可以加入一些空任务(虚线表示)。一个事件有事件号、出现该事件的最早时刻、最迟时刻。松驰事件为0的任务构成了关键路径。PERT图不能反映任务的并行性。

  人员管理:主程序员组、无主程序员组、层次式程序员组。

4、软件开发方法:主要掌握3种方法,分别是结构化方法、面向对象方法和原型法。

结构化方法:是目前最成熟的开发方法之一,分为结构化分析和结构化设计。

面向对象方法:从现实世界中客观存在的事物出发来构造软件系统。软件系统适用的业务范围称作软件的问题领域,把问题领域中事物的特征抽象地描述成类,由类建立的对象作为系统的基本构成单位,它们的内部属性与服务描述了客观存在的事物的静态和动态特征。对象类之间的继承关系、聚集关系、消息和关联反映了问题域中事物之间实际存在的各种关系。

原型法:在获得一组基本需求后,快速地加以实现,随着用户和开发人员对系统理解的加深而不断进行补充和细化,是一种动态定义技术。


5、软件开发环境:是指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。环境集成机制为工具集成和软件开发、维护及管理提供统一的支持,通常包括数据集成、控制集成和界面集成。有几个特征,环境的服务是集成的;环境的服务可用于各种软件开发活动;环境应支持小组工作方式。

6、ISO/IEC9126软件质量模型

  由3个层次组成,分别是:质量特性--质量子特性--量度指标。

  质量特性(质量子特性):
 功能性(适合性、准确性、互用性、依从性、安全性)
 可靠性(成熟性、容错性、易恢复性)
 易使用性(易理解性、易学性、易操作性)
 效率 (时间特性、资源特性)
 可维护性(易分析性、易改变性、稳定性、易测试性)
 可移值性(适应性、易安装性、一致性、易替换性)

  MC Call软件质量模型,从软件产品的运行、修正和转移3个方面确定了11个质量特性。
产品运行(正确性、可靠性、易使用性、效率、完整性)
产品修正(可维护性、灵活性、可测试性)
产品转移(可移值性、复用性、互用性)

7、软件质量保证:是指为提高软件质量而进行的有计划、有组织的活动。

  软件质量保证包括的7个主要活动相关的任务:应用技术方法、进行正式的技术评审、软件测试、标准的实施、控制变量、量度、记录保存和报告。

8、软件过程能力评估

  软件产品的质量取决于软件开发过程。

  软件过程评估,是软件改进和软件能力评价的前提。

  软件过程评估的意义:是软件过程改进的需要。软件过程不断改进是软件工程的基本原理之一;软件过程改进是软件生存周期的基本过程之一。
是降低软件风险的需要。

  软件能力成熟度模型CMM:是对软件组织进化阶段的描述。分为5个成熟度级别,初始级-可重复级-已定义级-已管理级-优化级。比较有名的一个基于CMM模型的产品是成熟度调查表,可以用于一个机构软件过程实力、弱点和风险。

8、系统分析的目的和任务:对现行系统做进一步的详细调查,将调查所得到的文档资料集中,对组织内部整体管理善和信息处理过程进行分析,为系统开发提供所需资料,并提交系统方案说明书。

  系统分析的主要步骤是:由现实系统得出物理模型--抽象出逻辑模型--优化出新的逻辑模型--逻辑模型具体化,得到新系统的物理模型。最终编写系统方案说明书。

9、结构化分析方法:采用“自顶向下、逐层分解”的开发策略。

  数据流程图DFD:在逻辑上描述系统的功能、输入、输出和数据存储。DFD的基本成分有,数据流、加工、数据存储、外部实体。它们各有特定的图形表示。

  分层数据流图的画法: 1)画系统的输入和输出; --称为顶层图
2)画系统的内部,将顶层图的加工分解成若干个加工,并用数据流连接; --称为0层图

  确定加工的方法:在数据流的组成或值发生变化的地方应画一个加工;也可根据系统功能确定加工。
  确定数据流方法:用户把若干个数据看作一个单位来处理时,可把这些数据看成是一个数据流。
3)画加工的内部;
4)重复第3步的分解过程至所有的加工都足够简单。

  对图和加工进行编号: 顶图不必编号;
0层图只有一张,图中的加工号可以是0.1, 0.2, ...或是1, 2, ..
子图号就是父图中被分解的加工号
子图中的加工号同样由图号、圆点和序号组成

  注意分析教材513页的实例:某考务处理系统有如下功能:对考生送来的报名单进行检查;
对合格的报名单进行检查;
对阅卷站送来的成绩清单进行检查,并根据考试中心指定的合格标准审定合格者;
制作考生通知单送给考生;
生成各种报表。

  画图中应注意的问题:适当地为数据流、加工、数据存储及外部实体命名;
画数据流而不是控制流;
一个加工的输出数据流不应与输入数据流同名;
允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工;
保持父图与子图平衡;
在自顶而下的分析过程中,如果一个数据存储首次出现时只与一个加工有关,那么可以把它作为内部文件而不必画出
保持数据守恒,即一个加工的输出数据流中的数据必须直接从该加工的输入数据流中获得或产生;
每个加工都必须有输入、输出数据流;
在整套数据流图中,每个数据存储都必须有读的数据流和写的数据流。

  数据词典DD:就是为数据流图中的每个数据流、文件、加工,以及更细节的数据项做出说明。其中对加工的说明称为“小说明”或“加工逻辑说明”。常用的加工逻辑说明方法有3种:结构化语言、判定表和判定树。结构化语言分为内外两层,外层有严格的语法,而内层语法灵活,接近于自然语言。

10、统一建模语言UML:它提供了9种基本元素的图形,分别是:类图、对象图、用例图、序列图、协作图、状态图(活动图、构件图、部署图)。

  UML由3个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则、运用于整个语言的一些公共机制。

  在UML提供的图中,可以采用类图,对逻辑数据库模式建模;状态图,用于接口、类和协作的行为建模,并强调对象行为的事件顺序;活动图,用于系统的功能建模,并具强调对象间的控制流。

11、系统分析报告:数据流图、数据字典和加工说明应该成为系统分析报告的主体。并且一份完整的系统分析报告应该包括如下内容。

组织情况概述
现行系统概述
系统逻辑模型
新系统在各个业务处理环节拟采用的管理方法、算法或模型
与新系统相配套的管理制度和运行体制的建立
系统设计和实施的初步计划
用户领导审批意见

12、系统设计的目的和任务:主要目的是为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理使用种种资源,最终形成系统的详细设计方案。

  系统设计的任务分为两个步骤:首选是把总任务分解为许多基本的、具体的任务。合理地组织这些具体任务可以构成总任务,称为总体结构设计,也称为概要结构设计;   其次是为各个具体任务选择适当的技术手段和处理方法,即详细设计。

  系统总体结构设计原则:分解-协调原则
自顶而下原则
信息隐蔽、抽象原则
一致性原则
明确性原则
模块间耦合尽可能小,模块内组合尽可能紧凑
模块的扇入系数和扇出系数要合理
模块的规模要适当

  模块化设计: 模块是组成系统的基本单位,应该具备4个元素,分别是,输入和输出、处理功能、内部数据、程序代码。

  模块结构图, 是采用HIPO图(分层输入-处理-输出)形式绘制而成的框图。它主要关心模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系。它主要由5种基本符号表示:模块、调用、数据、控制和转接。

  存储设计:首先要解决数据的整体结构设计,然后要确定数据资源分布和安全保密属性。

13、系统详细设计

  代码设计

  输出设计 --确定输出内容、选择输出设备与介质、确定输出格式

  输入设计 --输入原则:最小量、简单性、早检验、少转换

  处理过程设计 --总体结构设计将系统分解成许多模块,并决定每个模块的外部特征,即功能和界面。计算机处理过程的设计则是要确定每个模块的内部特征,包括局部的数据组织、控制流、每一步的具体加工要求及实施细节等。

处理过程的关键是,用一种合适的表达方法来描述每个模块的执行过程。常用的描述方式有图形、语言和表格3类。例如,程序流图、盒图NS、形式语言、决策树、决策表。盒图就是用一个盒子表示一个步骤,可以嵌套,只能从上头进入下头输出,因此限制了控制转移,保证了程序的良好结构。

  用户界面设计 --包括菜单方式、会话方式、操作提示以及操作权限管理方式等。权限管理一般是通过入网口令和建网时定义该节点级别来实现的。

  安全控制设计 --包括数据处理和环境两方面

  系统设计说明书

  一份完整的系统设计说明书应包括:
1)引言
背景--摘要--工作条件/限制--参考和引用资料--专门术语定义

2)系统总体设计方案
模块设计--代码设计--输入设计--输出设计--数据库设计说明--模型库及方法库设计--网络设计--安全保密设计--实施方案说明书。


  从系统调查、系统分析到系统设计是信息系统开发的主要工作,它们的工作量应占到总开发量的70%。

14、系统实施的任务: 按总体设计方案购置和安装计算机网络系统;
软件准备--其中编写程序是一个重要任务;
人力培训;
数据准备;
试运行。
  程序设计:主要依据是系统设计阶段的HIPO图、数据库结构和编码设计。

结构化程序设计方法:适用于某些过程不规范、模块划分不细或有特殊业务处理需要模块程序量较大时。主要强调3点规则:模块内部程序各部分要按自顶向下的结构划分;各程序部分应按功能组合;各程序间联系尽量使用调用子程序实现。

快速原型式方法:首先将HIPO图中具有普遍性的功能模块集中实现,构造系统原型,再对一些特定的功能和模块进行补充。

面向对象的程序设计方法:OOD?

15、软件测试方法:分为人工测试和机器测试。

人工测试,又称为代码审查。

机器测试,分为黑盒测试、白盒测试。

黑盒测试--也称为功能测试,主要测试软件的外部特性。

白盒测试--也称为结构测试,根据程序内部结构、逻辑,以程序的路径和过程进行测试。

  软件测试步骤:可以分为4步,如下

1)单元测试,即模块测试

2)组装测试,即集成测试。又分为非增量式集成和增量式集成。前者可以对模块进行并行测试,后者使测试更彻底。

3)确认测试,进一步检查软件的功能和性能是否与用户要求的一致。以系统方案说明书为基础,检查软件有效性。

确认测试首先要进行有效性测试以及软件配置审查,然后进行验收测试和安装测试,最后经各部门认可后交付使用。

4)系统测试,将已经确认的软件、硬件、外设及网络结合起来,进行系统的各种组装测试和确定测试。

  调试:试探法、回溯法、对分查找法、归纳法、演绎法。

16、系统转换

  实际运行,是对系统最好的检验和测试方法。这个阶段的工作有:

对系统进行初始化、输入各原始数据记录;

记录系统运行数据和状况;

核对新、老系统的输出结果;

考察输入方式(方便、效率、误操作)

测试响应速度

  系统转换方式:直接转换、并行转换、分段转换。

17、系统维护,系统的可维护性可以定义性的定义为维护人员理解、改正、改动和改进这个软件的难易程序。

  系统可维护性的评价指标:可理解性、可测试性、可修改性。

  文档,是软件可维护性的决定因素。

  系统维护主要包括硬件设备的维护、应用软件的维护和数据的维护。

18、系统评价,分为广义和狭义两种。广义的评价是指从系统开发的开始到结束的每一阶段都需要进行评价。狭义的评价是指在系统建成并投入运行之后进行的全面和综合的评价。

  从总体上可以将广义评价分为立项评价、中期评价、结项评价。

19、系统运行管理

  运行管理制度:包括种类机房安全运行管理制度,和信息系统的其他管理制度。

  日常运行管理内容:包括系统运行情况记录、审讯追踪、审查应急措施落实、系统资源管理、软件及文档管理

软考学习笔记-数据库工程师第九章-SQL语言

软考学习笔记-数据库工程师第九章-SQL语言
第九章 SQL 语言

1、SQL是集数据定义和数据操纵为一体的数据库语言。

  数据定义子语言DDL,用来定义数据库模式。DDL包括数据库模式定义,数据库存储结构和存取方法定义,以及数据库模式的修改删除功能。

  数据定义子语言的处理程序也分为了数据库模式定义处理程序,和数据库存储结构和存取方法处理程序。前者接收用DDL表示的数据模式定义,翻译成内部表示形式,存储到数据字典中;后者接收数据库存储结构和存取方法定义,在存储设备上创建相关的数据库文件,建立物理数据库。

  数据操纵子语言,通常有这样几种操作:查询、插入、删除、修改。后三种应该可以都纳入更新的范畴。

  嵌入式SQL,宿主语言

2、SQL是一种通用的、功能强大的关系数据库语言,它的主要功能包括数据查询、数据操纵、数据定义和数据控制。

  SQL的特点有:
综合统一
高度非过程化
面向集合的操作方式
两种使用方式, 一是在终端上键入SQL命令直接操作数据库,另一种是将SQL嵌入到高级语言中去。
简洁、易用,完成核心功能只用了9个动词,包括了4类:数据查询(SELECT)、数据定义(CREATE、DROP、ALTER)、数据操纵(INSERT、UPDATE、DELETE)、数据控制(GRANT、REVOKE)。

  SQL支持关系数据库的三级模式结构,其中视图对应外模式,基本表对应模式,存储文件对应内模式。

  SQL的基本组成:DDL、DML、事务控制、嵌入式SQL和动态SQL、完整性、权限管理。

3、数据库定义

  (一)创建表: CREATE TABLE <表名>(<列名><数据类型>[列级完整性约束]
[,<列名><数据类型>[列级完整性约束]]...
[,<表级完整性约束条件>]);

其中列级完整性约束条件有:NULL和UNIQUE。
  例9.1 建立一个供应商和零件数据库。其中供应商表S(Sno,Sname,Status,City)的属性分别表示供应商代码、姓名、状态、所在城市。“零件”表P(Pno,Pname,Color,Weight,City)的属性分别表示零件号、零件名、颜色、重量及产地。其中数据库要满足这样的要求:
1)供应商代码不能为空,且值是惟一的,供应商名也是惟一的;
2)零件号不能为空,且值是惟一的。零件名不能为空;
3)一个供应商可以供应多个零件,而一个零件可以由多个供应商供应。

  解:供应商与零件之间需要建立一个关系模式,二者之间是一个多对多的关系,新生成的关系模式的码应该是供应商的码和零件表的码,以及二者联系的属性构成。如SP(Sno,Pno,Qty) Qty表示数量。

  CREATE TABLE S(Sno CHAR(5) NOT NULL UNIQUE,
Sname CHAR(30) UNIQUE,
Status CHAR(8),
City CHAR(20)
PRIMARY KEY (Sno));


CREATE TABLE P(Pno CHAR(6) NOT NULL UNIQUE,
Pname CHAR(30) NOT NULL,
Color CHAR(8),
Weight NUMERIC(6,2),
City CHAR(20)
PRIMARY KEY(Pno));

CREATE TABLE SP(Sno CHAR(5),
Pno CHAR(6),
Qty NUMERIC(9)
PRIMARY KEY(Sno,Pno),
FOREIGN KEY(Sno) REFERENCES S(Sno),
FOREIGN KEY(Pno) REFERENCES P(Pno));

  (二)修改表和删除表

  ALTER TABLE <表名>[ADD<新列名><数据类型>[完整型约束条件]]
[DROP <完整性约束名>]
[MODIFY <列名><数据类型>]

  DROP TABLE <表名>

  (三)定义和删除索引

  数据库中的索引就是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的指针清单。作用如下:
通过创建惟一的索引,可以保证数据记录的惟一性;
加快数据检索速度;
加速表与表之间的连接,由其在实现数据的参照完整性方面有特别意义;
在使用ORDER BY ,GROUP BY语句时可以明显地减少计算时间;
使用索引可以在检索数据的过程中使用优化隐藏器,提高系统性能。

  分为聚集索引和非聚集索引

聚集索引,对表的物理数据页中的数据按列进行排序,然后再重新存储到磁盘上,叶子节点中存储的是实际数据;
非聚集索引,具有完全独立于数据行的结构,不必对物理数据页中的数据按列排序,叶子节点存储的是组成非聚集索引的关键字和行定位器。

  建立索引:CREATE [UNIQUE][CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>]]...);

其中次序可选ASC,DSC,默认为ASC
UNIQUE表明此索引的每一个索引值只对应惟一的数据记录。
CLUSTER表示要建立的索引是聚簇索引,即索引项的顺序是与表中记录的物理顺序一致的索引组织。

  几个例子: CREATE UNIQUE INDEX S-SNO ON S(Sno);
CREATE UNIQUE INDEX P-PNO ON P(PNO);
CREATE UNIQUE INDEX SPJ-NO ON SPJ(SNO ASC,PNO DESC, JNO ASC)。

  删除索引: DROP INDEX <索引名>

  (四)定义、删除、更新视图

  视图的创建:CREATE VIEW 视图名 (列表名)
AS SELECT 查询子句
[WITH CHECK OPTION];

其中查询子句可以是任意复杂的select语句,但一般不能出现order by , distinct。
WITH CHECK OPTION,表示在对视图进行更新、插入或删除操作时,要保证满足子查询中的条件表达式。

例如  CREATE VIEW CS-STUDENT
AS SELECT SNO,SNAME,SAGE,SEX
FROM STUDENDS
WHERE SD=‘CS’
WITH CHECK OPTION;

其中使用了with check option,所以在对视图插删操作时,要保证SD=‘CS’的条件成立。

  视图的删除:DROP VIEW 视图名

4、数据操作,SELECT,INSERT,DELETE,UPDATE

  (一)SELECT基本结构
  SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]...
FROM <表名或视图名>[,<表名或视图名>]
[WHERE <条件表达式>]
[GROUP BY <列名 1> [HAVING <条件表达式>]]
[ORDER BY <列名 2> [ASC|DESC]...]

其中,子句顺序是:SELECT、FROM、WHERE、GROUP BY、HAVING和ORDER BY。HAVING只能和GROUP BY搭配使用。

SELECT对应关系代数运算中的投影运算;FROM对应笛卡尔积;WHERE对应选择。

  SELECT查询中没有全程量词,也没有逻辑蕴涵,但可以通过谓词转换来实现。?

  (二)简单查询
  (三)连接查询
   检索至少选修了课程号为C1和C3的学生号:SELECT Sno FROM SC SCX, SC SCY WHERE SCX.Sno = SCY.Sno AND SCX.Cno = 'C1' AND SCY.Cno = 'C3';

  (四)子查询与聚集函数, 子查询也叫嵌套查询。

例:检索选修课程名为MS的学生号和学生姓名。
SELECT Sno, Sname
FROM Students
WHERE Sno IN
(SELECT Sno FROM SC
WHERE Cno IN
(SELECT Cno FROM C WHERE Cname = 'MS'));
聚集函数:AVG, MIN, MAX, SUN, COUNT

使用谓词ANY和ALL必须同时使用比较运算符,其含义与等价的转换关系如下:
>ANY --- >MIN
>ALL --- >MAX
<ANY --- <MAX
=ANY --- IN
<>ALL--- NOT IN

几个例子:查询其他系比计算机系CS所有学生年龄都要小的学生姓名及年龄。
SELECT Sname, Sage
FROM Students
WHERE Sage < ALL
(SELECT Sage
FROM Students
WHERE SD = 'CS')
AND SD<>'CS';
用<MIN代替上面的<ALL:
SELECT Sname, Sage
FROM Students
WHERE Sage <
(SELECT MIN(Sage)
FROM Students
WHERE SD = 'CS')
AND SD<>'CS';

  (五)分组查询

GROUP BY 子句

HAVING 子句,如果在元组被分组之前需要按某种方式加以限制,使不需要的分组为空,可以在GROUP BY子句后面加一个HAVING子句。
注意:空值在任何聚集操作中都会被忽视,COUNT(*)是计算某个关系中所有元组数目之种,但COUNT(A)是计算A属性中非空的元组个数之和。

例:针对供应商数据库中的S、P、J。SPJ关系,查询哪一个工程至少用了3家供应商(包含3家)供应的零件的平均数量,并按工程号降序排列。
SELECT JNO,AVG(QTY)
FROM SPJ
GROUP BY JNO
HAVING COUNT(DISTINCT(SNO))>2
ORDER BY JNO DESC;

  (六)别名运算
  (七)字符串操作, 使用操作符LIKE的模式匹配。%匹配任意字符串,_ 可以匹配任意一个字符。

在Like中可以使用转义字符,将特殊字符当作普通字符处理,如反斜杠“\"。

  (八)集合操作, 保留字UNION,INTERSECT,EXCEPT分别对应并、交、差。保留字用于两个查询时,其两侧应用括号括起来。

例:学生和教师的关系模式如下,查询既是女研究生又是教师且工资大于1500元的名字和地址。
(SELECT Name, Address
FROM Students
WHERE SEX='女' AND Type='研究生')
INTERSECT
(SELECT Name, Address
FROM Teachers
WHERE Salary >=1500)

查询不是教师的学生:(SELECT Name, Address FROM Students)
EXCEPT
(SELECT Name, Address FROM Teachers)

  (九)视图的查询和删除

视图的查询:当查询视图表时,通常先将其转换成等价的对基本表的查询,然后执行查询语句。即系统先从数据字典中取出该视图的定义,然后与视图中的查询语句结合起来,形成一个修正的查询语句。

视图更新要遵守的规则:
从多个基本通过连接操作导出的视图不允许更新;
对使用了分组、集函数操作的视图不允许更新;
若视图是从单个基本表通过投影、选取操作导出的,则允许进行更新操作。

   WITH子句,将一个复杂的查询分解成一小视图??

  (十)插入、删除和修改语句

插入: INSERT INTO 表名(字段名[,字段名]...)
VALUES(常量[,常量]...);

删除: DELETE FROM 表名
WHERE 条件表达式;

修改: UPDATE 表名
SET 列名=值表达式
[WHERE条件表达式]

5、SQL中的授权

  数据库中的完整性是指数据库的正确性和相容性。

  (一)主键约束 PRIMARY KEY

完整性约束条件:完整性约束条件作用的对象有关系、元组、列3种,每种又分为静态、动态两类。

完整性控制:有3方面的功能,定义功能、检测功能、处理功能。这样来保证实现对数据的完整性控制。检查是否违背完整性约束的时机   有两个:立即执行约束和延迟执行约束。前者在一条语句执行完后立即检查,后者在整个事务执行完成后进行。

实体完整性(PRIMARY KEY子句),关系中只能有一个主键,声明主键的方法有两个,就是primary key放的位置不同。

如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10),
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno));

或 CREATE TABLE Students
(Sno CHAR(8) PRIMARY KEY,
Sname CHAR(10),
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3));

  (二)外键约束 FOREIGN KEY(参照完整性)

格式: FOREIGN KEY(属性名)REFERENCES 表名(属性名)
[ON DELETE[ CASCADE|SET NULL]]

ON DELETE CASCADE指明删除参照关系的元组时,同时删除参照关系中的元组。

  (三)属性值上的约束 NULL和CHECK

如果要求某属性为空,在定义时在数据类型的后面加上NOT NULL。
如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10) NOT NULL,
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno));


在Students表中,要求男生的年龄在15-25之间,女生的年龄在15-24之间。
如, CREATE TABLE Students
(Sno CHAR(8),
Sname CHAR(10) NOT NULL,
Sex CHAR(1),
Sdept CHAR(20),
Sage NUMBER(3),
PRIMARY KEY(Sno))
CHECK(Sage >=15 AND ((SEX='M' AND Sage<=25) OR
(SEX='F' AND Sage<24)));

  (四)全局约束 CREATE ASSERTIONS

全局约束是指一些较复杂的完整性约束,会涉及到多个属性间的联系或多个关系间的联系。分为两种:基于元组的检查子句和断言。
1)使用CHECK子句对单个关系的元组值加以约束,可以在关系的定义中的任何地方加上CHECK及约束条件;

2)断言: CREATE ASSERTION <断言名> CHECK(<条件>)

例如,在教学数据库模式Students,SC,C中加一个约束,不允许男同学选修“张勇”教师的课。
CREATE ASSERTION ASSE-SC1 CHECK
(NOT EXISTS
(SELECT * FROM SC WHERE Cno IN
(SELECT Cno FROM C WHERE TEACHER='张勇')
AND Sno IN
(SELECT Sno FROM Students WHERE SEX='M')));

又如,在Students,SC,C中有一个约束,每门课最多允许50名男同学选修。
CREATE ASSERTION ASSE-SC2 CHECK
(50>=ALL(SELECT COUNT(SC.Sno)
FROM Students,SC
WHERE Students.Sno=SC.Sno AND SEX='M'
GROUP BY Cno));

  (五)授权与销权,DBMS数据控制应具有这样的功能,通过GRANT和REVOKE将授权通知系统并存入数据字典;当用户提出请求时,检查其授权情况。
授权语句格式:
GRANT <权限>[,<权限>]...
[ON<对象类型><对象名>]
TO <用户>[,<用户>]...
[WITH GRANT OPTION];

PUBLIC与WITH GRANT OPTION:PUBLIC参数可以将权限授给所有用户;后者使获得授权的用户还可以将此权限授给其它用户。

例如,将对供应商S、零件P及项目J的所有操作权限授给用户User1及User2。
GRANT ALL PRIVILEGES ON TABLE S, P, J TO User1,User2;

将S的插入权限授组User1,并允许将此权限授给其他用户。
GRANT INSERT ON TABLE S TO User1 WITH GRANT OPTION;

DBA把数据库SPJ中建立表的权限授给用户User1。
GRANT CREATETAB ON DATABASE SPJ TO User1;

收回授权语句格式:
REVOKE <权限>[,<权限>]...
[ON <对象类型><对象名>]
FROM <用户>[,<用户>]...;

例如, REVOKE ALL PRIVILEGES ON TABLE S , P, J FROM User1,User2;

REVOKE INSERT ON TABLE S FROM User1 WITH GRANT OPTION;

REVOKE SELECT ON TABLES S FROM PUBLIC;

REVOKE UPDATE(Sno) ON TABLE S FROM User1; --将权限的控制定位在某一个属性上

6、触发器,触发器是一种特殊类型的存储过程,它是通过事件触发而执行的。主要特点是,当被声明的事件发生时触发器被激活;触发器激活后不会立即执行,而是先测试触发条件;如果触发条件满足,则由DBMs执行与该触发器相连的动作。

  创建触发器,不同数据库使用的触发器语法不同。

  例:假定银行数据库关系模式为: Account(Account-no, branch-name,balance)
Loan(Loan-no, branch-name, amount)
depositor(customer-name, Account-no)
假定银行在处理透支时,不是将账户余额设成负值,而是将账户余额设置为零,并且建立一笔贷款,其金额为透支金额。这笔贷款的贷款号应该等该透支帐户的账户号。采用SQL-99标准创建触发器如下:

CREATE TRIGGER overdraft_trigger after update on Account
Refferencing new row as nrow
For each row
When nrow.balance<0
Begain atomic
Insert into borrower
(SELECT customer-name, Account-no
FROM depositor
Where nrow.account-no=depositor.account-no);
Insert into values
(nrow.account-no, nrow.branch-name, nrow.balance);
update account set balance=0
Where account.account-no=nrow.account-no
End

When nrow.balance<0是触发条件;
Begin atomic ... End子句用来将多行SQL语句集成为一个复合语句。其中前两条Insert into语句表示在borrower和loan关系中建立新的贷款业务,update语句用来将账户余额清零。
Referencing old row as 子句建立一个变量,用来存储已经被更新或删除的行的旧值。Referencing new row as 可以被update和Insert语句使用,可以存放经过更新的新值。
Referencing old table as 或Referencing new table as 子句可以用来指向临时表,使之容纳所有被影响的行。临时表不能使用before触发器,但可以用after触发器。

触发器在事件之前被激发,可以避免非法更新。

例9.45:仓库管理数据库中有如下关系,
inventory(item, level),表示仓库中某种商品的现有量。
minlevel(item, level),表示仓库中存有某种商品的量小量。
reorder(item, amount),表示某种商品小于最小量时要订购的数量。
orders(item, amount),表示定购某种商品的量。

CREATE TRIGGER reorder_trigger after update of amount on inventory --我怀疑amount应该是level
Referencing old row as orow, new row as nrow
For each row
When nrow.level <= (SELECT level
FROM minlevel
Where minlevel.item = orow.item)
And orow.level > (SELECT level
FROM minlevel
Where minlevel.item = orow.item)
Begin
Insert into orders
(SELECT item, amount
FROM reorder
Where reorder.item = orow.item)
End

  删除触发器: DROP TRIGGER {trigger}[,...,n]

软考学习笔记-数据库工程师第八章-关系数据库

软考学习笔记-数据库工程师第八章-关系数据库
第八章 关系数据库

1、关系数据库的基本概念

  属性与域

  第一范式条件1NF:在关系数据模型中,所有的域都应是原子数据。

  笛卡尔积:设D1,D2,...,Dn为任意集合,则定义D1,D2,...,Dn的笛卡尔积为:

D1*D2*...*Dn = {(d1,d2,...,dn)|di属于Di, i=1,2,...,n}
  其中每一个元素(d1,d2,...,dn)叫做一个n元组,元组的每一个值di叫做一个分量。笛卡尔积可用二维表来表示。

  例如:D1={0,1}, D2={a,b}, D3={c,d}, 求D1*D2*D3。

D1*D2*D3 = {(0,a,c), (0,a,d), (0,b,c), (0,b,d), (1,a,c), (1,a,d), (1,b,c), (1,b,d)}

D1 D2 D3
0 a c
0 a d
0 b c
0 b d
1 a c
1 a d
1 b c
1 b d

  笛卡尔积与关系:D1*D2*..*Dn的子集叫做在域D1,D2,..,Dn上的关系,记为R(D1,D2,..,Dn),称关系R为n元关系。关系中属性的个数称为元数,元组的个数称为基数。

术语对应: 属性---字段
关系模式-记录类型
元组---记录

  关系的一些名词:
目或度--常用R表示关系的名字,用n表示关系的目或度
候选码--能够做主码的属性或属性组都是候选码
主码---候选码中的一个
主属性--包含在个选码中的属性
外码---对于关系R来讲,外码就是指它的某个属性或属性组,不是该关系的码,而是其它关系的码
全码---一个关系的全属性称为这个关系的全码

  3种基本的关系类型:基本关系(即基本表或基表),查询表,视图表。

2、关系模式:关系的描述称之为关系模式,表示为R(U,D,dom,F)。通常简记为R(U)或R(A1,A2,..,An),Ai为属性名或域名,一般在主码属性下加下划线以标识。
  其中,R表示关系名,U表示属性名集合,D是属性的域,dom是属性向域的映像的集合,F是属性间数据的依赖关系的集合。

3、关系的完整性分为3类:

实体完整性,  关系的主属性不能为空值;
参照完整性,  设F是关系R的外码,与关系S的主码相对应,则F或均取空值,或等于S中某个元组的主码值。
用户定义完整性,反映某一具体应用涉及的数据必须满足的语义要求。

4、关系运算:关系运算的特点是操作对象和操作结果都是集合。关系数据语言分为3类,关系代数语言、关系演算语言、和具有前二者特点的语言(如SQL)。关系演算语言又分为元组关系演算语言和域关系演算语言。
  
  关系代数运算符有4类:集合运算符(并、差、交、笛卡尔积),专门的关系运算符(选择、投影、连接、除),算术比较符(大于、小于等),逻辑运算符(与、或、非)。

   并



广义笛卡尔积,两个元数分别是n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组,记作R*S。

投影,从关系R中选择出若干属性列A组成新的关系,记作PaiA(R)。

选择,是从关系的水平方向进行运算,是从关系R中选择满足给定条件的诸元组,记作   。

  扩展的关系运算符:

交,关系R与S具有相同的关系模式,关系R与S的交是由属于R同时属于S的元组构成的集合,记作   。

连接,是从两个关系R和S的笛卡尔积中选取满足条件的元组,可以认为笛卡尔积是无条件的连接。连接又可以分为3种:  连接、等值连接、自然连接。
 连接:
可以由基本的关系运算符笛卡尔积和选择导出:
等值连接:

自然连接:是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果集中将重复属性列去掉。自然连接不仅要从关系的水平方向,而且还要从关系的垂直方向运算。

除,同时从关系的水平方向和垂直方向进行运算。给定关系R(X,Y)和S(Y,Z),X,Y,Z都是属性组。R除S应当满足元组在X上的分量值x的象集Yx包含关系S在属性组Y上投影的集合。

广义投影,就是带有条件的投影运算,记为             。

外连接, 连接的扩展,为了处理缺失的信息。分为3种左外、右外、全连接。以左外连接为例,取出左侧关系中所有与右侧关系中任一元组都不匹配的元组,用空值填充所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。

聚集函数,要注意一些聚集函数的表达方式。分组的表达方法。

5、元组演算

  元组演算是非过程化查询语言。它只描述所需信息,而不给出获得该信息的具体过程。元组表达式中的变量是以元组为单位的,其一般形式为{t|P(t)}。t是元组变量,P(t)是元组关系演算公式,公式是由原子公式组成的。

  原子公式,即原子命题函数。有3种形式。一种是R(t)。

  全称量词和存在量词。

  A=>B,表示若A为真则B为真。

6、域演算,在域演算中表达式中的变量是表示域的变量,可将关系的属性名视为域变量。一般表示为{t1,...,tk|P(t1,...,tk)},其中t1,..,tk是域变量。

  原子公式,有3种形式。一种是R(t1,..,ti,...,tk)。

7、函数依赖

依赖的闭包,属性的闭包

8、优化查询

9、规范化

10、模式分解

  无损连接,保持函数依赖

软考学习笔记-数据库工程师第七章-数据库技术基础

软考学习笔记-数据库工程师第七章-数据库技术基础
第七章 数据库技术基础

1、数据库系统DBS,是由数据库、硬件、软件和人员组成的。

  数据库DB

  软件包括操作系统、数据库管理系统DBMS和应用程序。

  数据库技术的发展经历了3个阶段:人工管理阶段、文件系统阶段、数据库系统阶段。

  文件系统的最大特点是解决了应用程序和数据之间的一个公共接口问题,使得应用程序使用统一的存取方法来操作数据。

  数据库系统与文件系统的区别是:数据的充分共享、交叉访问及应用程序的高度独立性。数据库对数据的存储是按照同一结构进行的,不同的应用程序可直接操作这些数据。

2、DBMS的功能,主要实现对共享数据有效的组织、管理和存取。有以下几个方面的功能:

  数据定义:DBMS提供数据定义语言DDL,用户可以对数据库的结构进行描述,包括外模式、模式和内模式的定义,数据库的完整性定义,安全保密定义等。这些存储在数据字典中,是DBMS运行的基本依据。

  数据库操作:数据操纵语言DML,实现对数据库中数据的基本操作,如检索、插、改、删。DML双分为宿主型和自含型。

  数据库运行管理:多用户环境下的并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理和自动恢复都是DBMS的重要组成。

  数据组织、存储和管理:DBMS分类组织、存储和管理各类数据,包括数据字典、用户数据、存取路径等,并要确定以何种文件结构和存取方式在存储级别上组织这些数据。DBMS实现数据间的联系、数据组织和存储的基本目标是提高存储空间的利用率。

  数据库的建立和维护

  RDBS,关系数据库系统,实体与实体间的关系的集合构成一个RDBS,也有型、值之分。关系数据库的型称为关系数据库模式,是对数据库的描述。关系数据库的值也称为关系数据库,是关系的集合。统称为RDBS。

  OODBS,是面向对象的数据库系统。支持以对象形式进行数据建模,且要符合2个条件,首先要是一个DBMS,其次必须是面向对象的。

  ORDBS,对象关系数据库,提供了元组、数组和集合等更丰富的数据类型以及处理新的数据类型的能力。


3、数据模型的基本概念

  数据描述的三个领域:现实世界、信息世界、机器世界。

  现实世界,指客观存在的各种报表、图表、原始数据;在信息世界中数据库常用的术语有属性、实体、实体集和码;机器世界是按机器的观点对建模,主要使用的术语有字段、记录、文件和记录码。信息世界与机器世界的几个术语可以一一对应。

  数据模型的3要素:数据结构、数据操作、数据的约束条件。

  常用的数据模型分为概念型数据模型和基本数据模型。概念数据模型也称为信息模型,是按用户的观点对数据和信息建模,是从现实世界到信息世界的第一层抽象,强调语义表达功能,用于数据库设计,这类模型中最著名的是E-R模型。基本数据模型是按计算机观点对数据进行建模,用于实现DBMS。基本的数据模型有层次模型、网状模型和关系模型。目前随着新应用的发展,面向对象模型更广泛的被使用。

4、E-R模型,它所采用的3个主要概念是:实体、联系、属性。E-R模型只能说明实体间的语义联系。
  E-R方法: 矩形--表示实体
菱形----联系
椭圆----属性
双椭圆---多值属性
虚椭圆---派生属性
线段----将属性与相关实体或实体与联系连接起来
双线----表示一个实体全部参与到联系集中
双线矩形--弱实体

  扩充的E-R模型:增加了弱实体、特殊化、概括以及聚集等概念。

  弱实体,在现实世界中有一种联系代表实体间的ownership关系,即一个实体依赖于另一个实体而存在,这类实体被称为弱实体。
  特殊化,设有实体集E,如果S是E的某些真子集的集合,则称S为E的一个特殊化,E是Si的超类,Si称为E的子类。若两个子集Si与Sj没有交集,则S称为E的不相交特殊化,否则称为重叠特殊化。在扩充的E-R图中使用特殊化圆圈(而不是菱形)和连线的方式来表示超类-子类关系模型。超类到圆圈有连线,双线表全特殊化,单线表部分特殊化。子类用双竖边矩形表示。圆圈到子类的线用符号“U”标识为特殊化。圆圈内的"d"表示不相交特殊化,"O"表示重叠特殊化。

  从E-R模型向关系模型转换时,所有“实体”和“联系”都要转换成相应的关系模式。

5、层次模型,采用树型结构表示数据与数据间的联系,每个节点表示一个实体。根节点之外的结点都有且仅有一个双亲。
特点:记录间的联系通过指针实现,简单、效率高。
缺点:只适于表示1:n的联系。

  网状模型DBTG,采用网络结构表示数据与数据的联系。允许一个以上结点无双亲,也允许一个结点有多个双亲。

网状模型与层次模型的区别:
1)网状模型中子女结点与双亲结点的联系不惟一,需要为每个结点命名,见图示;
2)网状模型允许复合链,两结点间可以存在两种以上的联系;
3)网状模型不能表示记录之间的多对多的联系,解决办法是引入联结记录来表示多对多的联系,见图示。

特点是:更直接地描述现实世界,存取效率高;缺点是:结构复杂。

  关系模型,在关系模型中用表格结构表达实体集及实体集间的联系,其最大的特色是描述的一致性。关系模型就是若干个关系模式的集合。一个关系模式相当于一个记录型,对应于程序设计语言中的类型定义的概念。关系是一个实例,也是一张表,对应于程序设计语言中变量的概念。 区别: 与前两种模型的最大区别是使用主键而不是指针导航数据,表格简单直观。

  在关系数据库中,若关系模式中的每个关系的属性值均是不可分解的,则该关系模式属于--第一范式1NF,这也是关系数据库的最基本要求。

  关系代数运算是以关系作为运算对象的一组高级运算集合,关系定义为元素相同的元组的集合。因此,关系代数运算是以集合操作为基础的运算,其5种基本运算是并、差、笛卡尔积、投影和选择。

6、从数据库管理的角度看,数据库系统体系结构一般采用三级模式结构。外模式、概念模式、内模式。

  数据库的行和值:行,是指对某一数据的结构和属性的说明;值,是行的一个具体赋值。

  概念模式,也称模式,是数据库中全部数据的逻辑结构和特征的描述。它由若干个概念记录类型组成,只涉及行的描述,不涉及具体的值。概念模式不仅要描述概念记录类型,还要描述记录间的联系、操作以及数据的完整性和安全性。概念模式不涉及存储结构和访问技术等,因此做到了物理数据独立性。概念模式的数据定义语言称为“模式DDL”。

  外模式,也称用户模式或子模式,是用户与数据库系统的接口,是用户用到的那部分数据的描述。它由若干个外部记录类型组成,用户使用数据操纵语言DML对数据库进行操作。描述外模式的数据定义语言称为”外模式DDL“。

  内模式,也称为存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式,定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。但是内部记录也不涉及物理记录,那是操作系统负责的相关机制。“内模式DDL”。

  总之,数据按外模式的描述提供给用户,按内模式的描述存储在磁盘上,而概念模式则提供了连接这两级模式的相对稳定的中间点,且使得两级模式的任一级的改变都不受另一级的牵制。

  数据库系统在三级模式之间提供了两级映像,这保证了数据库中的数据具有较高的逻辑独立性和物理独立性。“模式/内模式”,“外模式/模式”。

   数据的独立性包括数据的物理独立性和数据的逻辑独立性。物理逻辑性是指,当数据库的内模式发生改变时,数据的逻辑结构不变;逻辑独立性,是指用户的应用程序和数据库的逻辑结构相独立。

7、数据库系统的体系结构

  1)集中式数据库系统:不但数据是集中的,数据的管理也是集中的,就是说从形式的用户接口到DBMS核心都集中在DBMS所在的计算机上。
  2)C/S数据库体系结构:安排某些任务在服务器上执行,另一些任务在客户机上执行。数据库系统功能分为前端和后端。前端主要包括图形用户界面、表格生成和报表处理等;后端负责存取结构、查询计算和优化、并发控制以及故障恢复。前端与后端通过SQL或应用程序来接口。
  注:数据库服务器一般可分为事务服务器和数据服务器。其中事务服务器又被称为查询服务器,典型的事务服务器中有多个在共享内存中访问数据的进程,包括服务器进程、锁管理进程、写进程、监视进程和检查点进程。

  3)并行数据库系统:并行体系结构的数据库系统是由多个物理上连在一起的CPU组成,分为共享内存式多处理器和无共享式并行体系结构。前者多个CPU共享一个内存与磁盘接口,后者每个CPU都有自己的内存和磁盘。

  4)分布式数据库系统:分布式DBMS包括物理上分布、逻辑上集中的分布式结构和物理上逻辑上都分布的分布式数据结构2种。

  5)WEB数据库,又称为网络数据库,即网站上的后台数据库。

8、事务:是一个操作序列,这些操作要么都做,要么都不做。它是数据库环境中不可分割的逻辑工作单位。事务的4个特性ACID,原子性、一致性、隔离性、永久性。

9、数据库的4类故障:事务内部故障、系统故障、介质故障、计算机病毒。

  故障恢复的基本原理是“建立数据冗余”。建立冗余数据的方法是进行数据转储和登记日志文件。

  数据的转储分为:静态转储和动态转储、海量转储和增量转储。

  日志文件:DBMS在事务处理的过程中,把事务开始、事务结束以及对数据库的插入、删除和修改的每一步操作写入日志文件。当发生故障后,DBMS可以利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。DBMS可以利用日志文件来进行事务故障恢复和系统故障恢复,并可协助后备副本进行介质故障恢复。

  在发生数据库故障后,把数据库恢复到故障发生前的状态的方法:定期对数据库作后备文件;在进行事务处理时,对数据更新的全部有关内容写入日志文件;存储系统正常运行时,按一定的时间间隔,设立检查点文件,把内存缓冲区内容还未写入到磁盘中去的有关状态记录到检查点文件中;当发生故障时,根据现场数据内容、日志文件的故障前映像和检查点文件来恢复系统的状态。

  事务恢复的3个步骤:1)反向扫描文件日志,查找该事务的更新操作;
      2)对事务的更新操作执行逆操作;
3)继续反向扫描日志文件,查找该事务的其他更新操作,并作同样的处理,直到事务的开始标志。

  在SQL中定义事务的语句有3条:BEGIN TRANSACTION;COMMIT;ROLLBACK。

10、并发控制

  并发操作带来的问题是数据的不一致性,有3种:丢失更新、不可重复读、读脏数据。主要原因是事务的并发操作破坏了事务的隔离性。
  并发控制的主要技术是封锁,有2种封锁类型:排他锁(又称为X锁或写锁),共享锁(又称为S锁或读锁)。

   排他锁:特征是独占性;共享锁:特征是共享可读,在锁释放前该数据对象不可写。

  三级封锁协议:一级封锁协议是指事务在修改数据前对其加X锁,直到事务结束才释放,这样就解决了丢失更新的问题;
 二级封锁协议是指在一级封锁协议的基础上,事务T在读取数据R之前先对其加S锁,读完后立即释放S锁,这样就解决 了读脏数据的问题;
 三级封锁协议是指在一级封锁协议的基础上,事务T在读取数据R之前先对其加S锁,直到事务结束时释放S锁,三级封 锁协议能够解决丢失更新、读脏数据、不可重复读这3个问题。

  活锁与死锁

  并发调度的可串行性:一个正确的多个事务并发执行,当且仅当其结果与某一次序串行地执行它们时的结果相同,则这种调度策略是可串行化的调度。可串行性是并发事务正确性的准则,一个给定的并发调度,当且仅当这旨可串行化的才认为是正确的调度。

  两段封锁协议:是指事务必须分两个阶段对数据进行加锁和解锁。事务在第一个阶段只能获得封锁,在第二个阶段只能释放锁。

  封锁的粒度:封锁对象的大小称为封锁的粒度。封锁的对象可以是逻辑单元也可以是物理单元。

  事务的嵌套:事务是不能嵌套的,这样就违背了事务的原子性。相当于当且仅当当前没有事务在运行时,程序才能执行BEGIN TRANSACTION操作。

11、数据库安全性:为保护数据库,我们要在多个层次上采取安全性措施。
数据库系统层次;操作系统层次;网络层次;物理层次;人员层次。

  数据库的完整性:是指数据的正确性和相容性(有效性)。这包括用户定义完整性、参照完整性、实体完整性。实体完整性规则指主码的任何组成部分都不可以是空值,引用完整性规则则不允许引用不存在的实体。

  授权:read, insert, update, delete ;index, resource, alteration, drop 。后者操作的对象是涉及数据库模式的表、表属性及索引。

  权限授予图:表现授权从一个用户到另一个用户的传递。用户具有授权的条件是,当且仅当存在从授权图的根到代表该用户节点的路径。为安全着想,我们要求授权图中的所有边都必须是某条从DBA开始的路径的一部分。

  角色:在数据库中建立一个角色集,将权限授予角色,通过为用户授予角色实现赋权的管理。

  审计追踪:它是一个记录对数据库所有更改的日志。可以在关系更新操作上定义适当的触发器来建立一个审计追踪。很多的数据库系统都提供了内置机制来建立审计追踪。

12、数据仓库DW(Data Warehouse):在数据库基础上产生的能满足决策分析需要的数据环境。

  数据仓库的基本特征:数据是面向主题的,数据是集成的,数据是相对稳定的,数据是反映历史变化的。

  数据仓库的数据模式:星型模式,雪花模式,事实星型模式。典型的数据仓库具有为数据分析而设计的模式,使用OLAP工具进行联机分析处理。其数据通常是多维的,包括维属性和度量属性。包含多维数据的表称为事实表。
一个事实表、多维表以及从事实表到多维表的参照外码的模式,称为星型模式;
更复杂的数据仓库含有多级维表,这种模式称为雪花模式;
复杂的数据仓库也可能含有不止一个事实表,这种模式称为事实星型模式。

  数据仓库的体系结构:它通常采用三层结构,底层为数据仓库服务器、中间层是OLAP服务器、顶层为前端工具。

底层的数据仓库服务器一般是一个关系数据库系统。中间层的OLAP可以是关系型OLAP(即扩充的DBMS)也可以是多维的OLAP服务器。顶层的前端工具是各种查询、报表、分析、挖掘工具。

  从结构的角度看,有3种数据仓库模型:企业仓库、数据集市、虚拟仓库。

数据集市是企业范围数据的一个子集;虚拟仓库是操作型数据库上视图的集合。

13、数据挖掘:从海量数据中挖掘信息的技术。支持DM的3种基础技术是海量数据搜索、强大的多处理器计算机、数据挖掘算法。几中常用的数据挖掘技术是:人工神经网络、决策树、遗传算法、近邻算法、规则推导。

  数据挖掘与数据仓库的关系:数据仓库不仅是集成数据的一种方式,而且它的OLAO联机分析功能还为数据挖掘提供了一个很好的操作平台。

  与传统数据分析工具比较,数据挖掘工具更注重于预测未来的情况。

  数据挖掘技术的应用过程:确定挖掘对象,准备数据,建立模式,数据挖掘,结果分析,知识应用。

将数据转换成一个分析模型,建立一个真正适合挖掘算法的分析模型是数据挖掘的关键。

14、SQL语言中不提供地使用索引的功能,这支持了物理数据的独立性。

软考学习笔记-数据库工程师第六章-多媒体基础

软考学习笔记-数据库工程师第六章-多媒体基础
第六章 多媒体基础

1、媒体可分为感觉媒体、表示媒体、表现媒体、存储媒体、传输媒体。通常所说的媒体包括两个含义:一是指信息的物理载体;二是指承载信息的载体,即信息的表现形式,即CCITT定义的存储媒体和表示媒体。其中的表示媒体又可以分为3种:视觉类、听觉类、触觉类。

  多媒体体就是指多种信息载体的表现形式和传递方式。

  超文本是一种文本管理技术,它以结点为单位组织信息。结点、链和网络是超文本的3个基本要素。

  超媒体,具体表现为用超文本方式组织和处理多媒体信息。

2、声音3要素:音强、音调、音色。音色由混入基音的泛音所决定。人耳听觉范围是20HZ-20KHZ。

  声音信号的数字化:取样-量化法。有3个步骤,即取样、量化、编码。

  波形声音,是一个用来表示声音强弱的数据序列,它是由模拟声音经采样、量化和编码后得到的一种数据格式。

  有3种声音编码方法:波形编码,参数编码,混合编码。

  声音合成,分为语音合成和音乐合成。

  MIDI,是乐器数字接口的缩写,目前已成为数字音乐的国际标准。它规定了乐器间及与计算机进行数据传输的协议规范。

  声音文件的格式:Wave,Module(.mod)记录音色样本,MPEG(mp3),RealAudio(.ra),MIDI,Voice(.voc)每个voc文件由文件头块和音频数据块组成,Sound(.snd),Audio(.au),AIF,CMF。

3、色彩3要素:亮度、色调、色饱和度。

  彩色空间:指彩色图像所使用的颜色描述方法。RGB彩色空间,用于计算机显示器;CMY彩色空间,是相减混色,典型应用有油墨、颜料;YUV彩色空间,Y表示亮度,U,V是两个色度变量,典型应用有电视图像。

  图形与图像:图形是用一系列计算机指令来描述和记录的一幅图的内容,典形应用有矢量图;图像是用像素点来描述的图。图形采用光栅化(即点阵化)技术可以转换为图像,图像采用图形跟踪技术可以转化为图形。

  现实图片数字化过程为采样-量化-编码。

  图像的主要属性包括分辨率、像素深度、真/伪彩色。像素深度指存储每个像素所使用的位数。真彩色,图像的每个像素的颜色由R、G、B三个基色分量所决定。伪彩色,是在生成图像时对图像中的不同色彩采样并生成一个彩色查找表,图像的每像素值存储的是色彩的索引。

  图像的无损压缩方法有:行程编码RLE、增量调制编码、霍夫曼编码。增量调制法只记录每行上第一个像素的值,其后的像素只记录与行首记录的增量。霍夫曼法是根据像素出现的频率定义像素编码,进而生成该图像的霍夫曼码表。

  图像的文件格式:BMP深度可选且不做压缩,GIF采用了无损压缩,TIFF适用于扫描仪和桌面出版,PCX像素深度可选且使用RLE编码,PNG是 gif的替代品,JPEG采用有损压缩,Target彩色丰富供专业用户使用,WMF保存的是函数调用信息(windows),EPS是 PostScript图形打印机专用,DIF是AutoCAD格式,CDR。

4、电视信号通过光栅扫描的方法显示到屏幕上,彩色电视采用相加混色,使用RGB作为三基色。

  几种视频文件格式:GIF;Flic(.FLI/.FLC)一种彩色动画文件格式,使用RLE和Delta算法编码;AVI支持256色和RLE压缩;QuickTime;MPEG是运行图像压缩算法,方法是单位时间内采集并保存第一帧信息,然后只存储其余帧对第一帧发生变化的部分,进而实现压缩 (平均压缩比50:1);RM一种新型流式视频文件格式。

  MPEG-4是一套多媒体通信标准,主要由音频编码、视频编码、数据平面、描述符接口、缓冲共管理和实时识别等部分构成。
  MPEG-1应用于电视图像和伴音信息的通用编码;
  MPEG-2应用于高数据速率数字存储媒体的电视图像和伴音编码;
  MPEG-7是一套多媒体内容描述符接口标准。

5、虚拟现实技术的特征:多感知,沉浸感,交互,构想。

  大概有4种虚拟现实技术:桌面虚拟现实,完全沉浸的高级虚拟现实,增强现实性的虚拟现实,分布式虚拟现实系统。

6、VCD上的数据文件是以MPEG-1标准的格式存储的,它将图像分为了3种:帧内图像、预测图像和插补图像构成。其中帧内图像采用JPEG压缩方法来去掉冗余信息,也称作空间压缩。预测图像使用的帧间编码模式,也称作时间压缩。

  对动态图像进行压缩处理的基本条件是:动态图像中帧与帧之间具有相关性。

  动态图像有3个基本特点:具有时间连续特性,具有实时性,帧与帧之间具有相关性。相关性是指动态图像的连续前后两帧信息变化很小的特点。

  人们把无损压缩称为熵编码。

  CD盘光道的结构与磁盘的磁道不同,它的光道不是同心圆,而是螺旋型光道,一张CD的光道大概有5公里。光盘的随机存储性变得较差。

  DVD盘是将光盘间距缩小,将记录信息的最小凹凸坑长度缩小,以提高存储容量。因此DVD刻录机和播放机需要采用波长更短的激光,同时为提高接收盘片反射光的能力,要增大光学物镜数值孔径。

  MIDI文件包含音符、定时和16个通道的演奏定义。

  脉冲编码调制是最简单、最基本的一种波形编码。

  如果两种色光混合而成白光,则这两种色光互为补色。 红色+青色 = 绿色+品红 = 蓝+黄 = 白色

  使用RGB3:3:2表示一个像素时,像素深度为8,即3+3+2。如果使用RGB8:8:8表示一个像素,那么像素深度为24。

  图像分辨率,是指组成一幅图像的像素密度,即用每英寸多少点(dpi)表示数字化图像的大小,也用水平和垂直的像素表示。例如用200dpi来扫描一幅2*2.5英寸的照片,则可以得到400*500的图像。

  视盘与CD盘的信息存储和读出原理有结构一样,但视盘是以模拟量的方式记录视频信号的。激光束读取视盘上信息的方向是从盘的内圈向外圈读的。

软考学习笔记-数据库工程师第五章-网络基础知识

软考学习笔记-数据库工程师第五章-网络基础知识
第五章 网络基础知识

1、网络的拓朴结构

  计算机网络拓朴主要是指通信子网的拓朴构型。网络拓朴影响着网络的性能,以及整个网络的设计、功能、可靠性和通信费用

  总线结构:只有一条双向通路,便于采用广播式传送信息;总线拓朴结构属于分布式控制,无须中央处理器,结构简单;节点的增删和位置的变动容易,扩充性能好;节点的接口通常采用无源线路,可靠性高;设备少价格低,安装使用方便;但因为电气信号通路多,干扰较大,对信号的质量要求高。负载重时线路的利用率低。网上的信息延迟不确定,故障隔离和检测困难。

  星状结构:维护容易,配置灵活;故障隔离和检测容易;网络延迟时间短节点与中央交换单元直接连通,各节点之间的通信必须经过中央单元转换;网络共享能力差;线路利用率低,中央单元负荷重。

  环状结构:环形网中信息流动方向是固定的,两个节点间只有一条通路,路径控制简单;有旁路设备,节点一旦发生故障,系统自动旁路,可靠性高;信息要串行穿行多个节点,传输效率低,系统响应速度慢;环路封闭,扩充较难。

  树状结构:是总线结构的扩充形式,主要用于多个网络组成的分组结构中。

  分布式结构:无严格的布点规定,各节点之间有多条线路相连。有较高的可靠性,资源共享方便,网络响应时间短;因为节点与多个节点相连,故节点的路由选择和流量控制难度大,管理复杂;硬件成本高。

2、网络的协议和标准

  一个网络协议主要包括3个要素:语法、语义和时序。协议是一组约定的规则,它有助于通信实体间的相互理解和正确通信。协议中有3个要素,其中语法定义数据的表示形式;语义则能使数据管理所需的信息得到正确理解;时序则规定了通信应答信号之间的间隔和先后关系。

  在IEEE802局域网标准中只定义了物理层和数据链路层。其中又把数据链路层分为了逻辑链路控制LLC和介质访问控制MAC。

  以太网IEEE802.3采用的是带冲突检测的载波监听多路访问协议技术CSMA/CD。802.3,802.3u,802.3z。

802.3u采用非屏蔽双绞线,并使用与802.3一样的介质访问控制(MAC)层;802.3z对MAC规范进行了重定义,并重定义了物理层标准。

  令牌环网IEEE802.5,FDDI类似于令牌环网协议,但是采用双环技术。

  PPP协议,具备用户验证能力,可以解决IP分配。PPP和其他协议共同派生出了PPPoE和PPPOA,主要用于ADSL。

  ADSL,非对称用户数据线,速率上行1M下行8M,把线路按频段分成语音、上行和下行3个信道。

  数字专线DDN,综合业务数字网ISDN

  帧中继FR,双工并保持顺序不变。是一种基于可变帧长的数据传输网络。适用于带宽需求64K-2M,通信距离较长,数据有突发性时。

  异步传输模式ATM,是一种面向分组的快速分组交换模式,使用异步时分复用技术,将信息流分割成定长的信息元。共有4层,用户层、ATM适配层、ATM层、物理层。有2种连接类型,永久虚电路和交换虚电路。

  TCP/IP协议是internet协议的核心,分为5方面:逻辑编址、路由选择、域名解析、错误检测、流量控制及对应用程序的支持。

  TCP/IP分层模型由4层组成,应用层(FTP,telnet,smtp,nfs,snmp)、传输层(TCP,UDP)、网际层(IP,icmp,arp,rarp)、网络接口层(802.3,802.5,FDDI,ppp)。

  TCP/IP的传输层任务是提供应用程序之间的通信服务,这种通信又叫端到端的通信。网际层又叫IP层,它接收传输层的请求,传送某个具有目的地址信息的分组。网络接口层又称为数据链路层。

3、构建网络

  网络互联的设备有:中继器(及集线器)、网桥(及交换机)、路由器、网关。

  在构建一个网络的过程中,主要考虑服务器、客户机、网络设备、通信介质、、网络软件等,以及协议的选择和设备的连接方式。

4、关于IP地址

  IP地址分为5类:A,B,C,D,E。

   A类网络地址占有1个字节,定义最高位为0来标识此类地址。余下7位为真正的网络地址,支持1-126个网络。第一个字节的10进制表示为000-127。后面3个字节作为主机地址,提供2^24 - 2个端点的寻址。

   B类网络地址占有2个字节,定义最高位为10来标识此地址。余下14位为真正的网络地址,第一个字节的10进制表示为128-191。

   C类网络地址占有3个字节,定义最高位为110来标识此地址。余下21位为真正的网络地址,第一个字节的10进制表示为192-223。

   D类网络地址用于组播,定义最高位为1110来标识此类地址。第一个字节的10进制表示为224-239。

   E类网络地址为实验保留,定义最高位为1111来标识此类地址。第一个字节的10进制表示为240-255。

  可变长子网掩码VLSM,就是在IP地址后面加上“/网络号及子网络号编址比特数”。如:193.168.125.0/27,就表示前27位为网络号。

5、网络的信息安全:主要就是信息的存储安全和传输安全。信息的存储安全包括信息的使用安全(用户的标识与验证、用户存取权限限制、安全问题跟踪),计算机病毒的防治,系统安全监控,数据的加密,防止非法攻击。

  WindowsNT的网络结构中,包括的两个接口是NDIS和TDI。通过边界定义了各个层次间的统一接口,两个主要的边界层为NDIS和TDI。
NDIS,网络设备接口规范;
TDI,传输驱动程序接口。

  防火墙技术经历了包过滤、应用代理网关和状态检测三个发展阶段。

  包过滤路由器是最简单常用的防火墙。一般工作在网络层,对经过网络的信息进行分析并按策略进行限制,其核心是包过滤的算法设计。优点是速度快、实现方便;缺点是安全性差、兼容差,日志记录能力差。

  双宿主主机防火墙,由具有两个以上网口的堡垒主机构成,通过代理服务器软件从一个子网访问另一个子网。优点是加强了日志功能;缺点是若堡垒主机被攻破意味着失去了网络的安全。

  屏蔽主机网关防火墙,是由过滤路由器和应用网关组成。过滤路由器的作用是进行包过滤;应用网关的作用是代理服务。共建立了两道安全屏障。优点是安全性高;缺点是配置复杂。

  被屏蔽子网防火墙,由两个包过滤路由器和一个应用网关(堡垒主机)组成。两个包过滤路由器中间形成一个DMZ区。

6、重发器也称为中继器或转发器,是一种在物理层上互联网段的设备。

  网关也称为信关,工作在应用层,实现网络间协议转换的功能,也被称为协议转换器。

  Kerberos是分布式环境下的身份认证系统。为了防止relay攻击,它使用了一次性的ticket和时间戳。常用的数字证书格式有PGP和X.509证书。

  SSL是要建立一条安全的连接。是传输层安全协议。
 
  HTTPS用于安全地传送单个报文,属于应用层协议。

  SOCKS5是增加了认证功能的SOCKS协议。SOCKS用于代理基于TCP/IP的网络应用。SOCKS服务器端实现于应用层,SOCKS客户机实现于应用层和传输层之间。协议的作用是在两个没有直接IP联系的主机之间实现通信。

  SNMP是一种广泛使用的网络管理协议,用来收集网络上设备信息。其对应的管理信息库为MIB-2。

7、OSI参考模型的三个主要概念是Service, Interface, Protocol。
OSI/RM中的1-3层负责通信功能,称为通信子网。5-7层属于资源子网的功能范围,称为资源子网层。传输层起着承接作用。
  物理层,只是为它的上一层提供一个物理连接,在这一层数据还没有被组织;
  数据链路层,负责两个相邻结点间的线路上无差错地传送以帧为单位的数据,并进行流量控制。数据链路层要负责建立、维持和释放数据链路的连接;
  网络层,为传输层提供端到端的交换网络数据传送功能,屏蔽传输细节,为传输层建立、维持和拆除一条或多条通信路径。在这一层帧被组成数据包;
  传输层,为会话层提供透明可靠的数据传输服务,保证端到端的数据完整性。选择网络层的最适宜服务,提供建立、维护、拆除传输链接的功能。在这一层传输的是报文;
  会话层,为表示层实体提供建立、维护、结束会话连接的功能。完成通信进程的逻辑名字与物理名字间的对应,提供会话管理服务;
  表示层,为应用层提供能解释所交换信息含义的一组服务,提供格式化的表示和转换数据服务,数据的压缩、解压、加密和解密工作也是由表示层完成;
  应用层,提供OSI用户服务,提供网络与用户应用软件间的接口服务。

8、ISDN为了使通信网络内部的变化对终端用户是透明的、不可见的,它必须提供一个标准的用户接口。

  宽带ISDN可以提供许多业务,其中会议电视属于会话型业务。窄带ISDN向用户提供基本速率144Kb/s的基本速率接口BRI,和速率2Mb/s的一次群速率接口PRI。

  双绞线多用于10BASE-T和100BASE-T的以太网中,一段双绞线的最大长度为100m,只能连接一台计算机。双绞线的每端需要一个RJ45插头,各段双绞线通过集线器相连,利用双绞线最多可连接64个结点到中继器。

  屏蔽双绞线STP,非屏蔽双绞线UTP。10BASE-T, 10BASE-F的最后一个字母是以线缆类型命名的,T表示双绞线,F表示光纤。

  以太网遵循IEEE802.3标准。采用粗缆的标准称为10Base5,规定每段粗缆的长度不超过500米。采用细缆的标准称为10BASE2,工作距离为185米。否则要使用重发器(即中继器)相连。整个网的长度不能超过2500米。若超过该长度则要分成两个网,网间使用网桥相连。这是在数据链路层的连接。

  千兆以太网支持3种传输介质。多模光纤工作距离为500米,单模光纤的工作距离为2000米;宽带同轴电缆的工作距离只有25米;5类UTP双绞线仍然是最大传输100米。

  符合以太网标准的物理地址采用连续编码方法,它使用的地址长度是48bit。

  域名解析的两种主要方式是反复解析和递归解析。

  从网络高层协议角度看,网络攻击可以分为服务攻击与非服务攻击。

  防火墙一般可提供4种服务,它们是服务控制、方向控制、行为控制和用户控制。

  防火墙是一种被动的网络安全措施。

软考学习笔记-数据库工程师第四章-程序设计语言基础

软考学习笔记-数据库工程师第四章-程序设计语言基础
第四章 程序设计语言基础

1、程序设计语言的基本概念

  低级语言和高级语言

  编译程序和解释程序:解释程序会直接解释执行源程序或者将源程序翻译成某种中间表示形式后再执行。
编译程序则会将源程序翻译成目标语言程序,然后在计算机上运行目标程序。

二者的根本区别是,在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不参加目标程序的执行过程;而在解释方式下,解释程序和源程序要参与到程序的运行过程中,运行程序的控制权在解释程序。解释器翻译源程序时不生成独立的目标程序,而编译器则需将源程序翻译成独立的目标程序。

  程序设计语言的定义:一般地,程序设计语言涉及3个方面,语法、语义和语用。语言的实现有个语境问题,包括编译环境和运行环境。

2、程序设计语言的分类:按程序设计方法的不同分为4种。分别是命令式程序设计语言和结构化设计语言、面向对象的程序设计语言、函数式程序设计语言、逻辑型程序设计语言。

  命令式程序设计语言:它是基于动作的语言,也称为过程式语言。随着函数、库、模块的使用,出现了结构化程序设计技术。在结构化程序设计中任何程序段的编写都基于3种基本结构,就是顺序、选择、循环。典型的实例有Pascal,C。

  面向对象的程序设计语言:面向对象的语言一般包括这3个概念,对象、类、继承。对象是人们要研究的任何事物,它具有状态和操作;类是由用户定义的数据类型,它将具有相同状态、操作和访问机制的多个对象抽象成一个对象类,属于这种类的一个对象叫作类实例或类对象,类代表一般而该类的一个对象代表具体;继承,类与类之间可以组成继承层次,以达到概念复用和代码重用。

  函数式程序设计语言:是一种面向值的语言,其基本概念来自LISP。主要应用于符号数据处理,如微积分、数理逻辑、游戏推演以及人工智能。

  逻辑型程序设计语言:是陈述式语言,其基本概念来自PROLOG,不是严格的通用程序设计语言。PROLOG的基本运算单位是Horn子句。主要用在人工智能领域,也用在自然语言处理、数据库查询、算法描述等,尤其适合作为专家系统的开发工具。

  FORTRAN是世界上最早出现的高级程序设计语言,是由一个主程序或一个主程序与若干个子程序组成,且都是独立的程序单位;

  COBOL是一种面向事务处理的高级语言,主要用于情报检索、商业数据处理等管理领域;

  ALGOL是另一个较早出现的高级语言,是一个分程序结构语言,每个分程序由begin和end括起来;

  PASCAL语言体现了结构化程序设计风格,将分程序和过程这两个概念合并为“过程”。一个PASCAL程序本身可看成是一个操作系统所调用的过程;

  C语言在系统应用和实时处理应用中成为主要的开发语言;

  C++中最主要的是增加了类机制,成为一种面向对象的设计语言,并最大限度的与C兼容;

  JAVA是一种新型的面向对象的Internet编程语言,扩充了对分布式及C/S结构的支持,是一种强类型语言,隐含了指针以避免由于指针引起的问题;

  LISP是基于表处理的函数语言,该语言中的程序和数据的形式是等价的,数据结构可以作为程序执行,程序也可以作为数据修改

3、程序设计语言的基本成分:包括数据、运算、控制和传输。

  数据成分,是程序操作的对象,具有存储类别、类型、名称、作用域和生存期等属性,使用时要为它分配内存空间。常量、变量、全局量、局部量。

  运算成分,指明允许使用的运算符号及运算规则。

  函数:函数的定义,函数的声明,函数的调用。函数的定义包括函数首部和函数体。函数应先声明后引用。函数调用时实参与形参间交换信息的方法有传值调用和引用调用两种。

传值调用中,若函数调用时以实参向形式参数传递相应类型的值,这种方式下,形式参数将不能向实际参数返回信息;除非使用用指针作形参,在调用时先对实参进行取地址运算,然后将实参地址传递给指针形参,这样才可以实现被调用函数对实际参数的修改。

4、汇编程序的基本原理

  汇编语言是面向机器的符号化程序设计语言。计算机需要使用汇编程序对汇编源程序进行翻译才能运行。一般汇编语言都提供指令语句、伪指令语句、宏指令语句进行编程。
指令语句, 又称机器指令语句,汇编后能产生相应的机器代码,可以被CPU直接识别执行。
伪指令语句,指示汇编程序在汇编源程序时完成某些工作,如给变量分配存储单元地址,给某个符号赋值。
宏指令语句,允许用户将多次重复使用的程序段定义为宏,宏指令语句就是对宏的引用。

  指令语句与伪指令语句的区别:指令语句经汇编后将产生相应的机器代码,而伪指令语句不产生机器代码;指令语句是在程序运行时完成,而伪指令语句只能在源程序被汇编时完成。

  汇编程序:它的基本工作是将每一条可执行汇编语句转换成对应的机器指令;处理源程序中出现的伪指令和宏指令。汇编程序一般需要扫描源程序2次才能完成翻译过程,第一次主要是计算符号的值,第二次才产生目标程序。

5、编译程序的工作阶段,编译程序的过程分为6个阶段,另有2个辅助的管理程序。分为是:词法分析、语法分析、语义分析、中间代码生成器、代码优化、目标代码生成6个阶段和符号表管理、出错处理程序。中间代码的特征是与具体的机器无关。

  代码优化和中间代码生成两个阶段并不是每种编译程序都必须的。

  语法分析中的预测分析法是自顶向下的一种语法分析方法。

  编译器在语义分析阶段进行表达式的类型检查及类型转换。

  编译过程的各个阶段都会涉及到表格管理和出错处理。

软考学习笔记-数据库工程师第三章-操作系统知识

软考学习笔记-数据库工程师第三章-操作系统知识
三、操作系统知识

1、操作系统的定义:是管理计算机中各种软件、硬件资源的程序和相关文档的集合,是一种系统软件。

  操作系统能有效的组织和管理系统中的各种软、硬件资源,合理地组织计算机工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。

  操作系统的两个重要作用:
 通过资源管理,提高系统的使用效率;
 改善人机界面,向用户提供友好的工作环境。

  操作系统的4个特征:并发性、共享性、虚拟性、不确定性。

  操作系统的5个管理功能:进程管理、文件管理、存储管理、设备管理、作业管理

  操作系统的分类:
批处理系统,计算机自动、顺序地执行作业流产生的每一个作业,以节省人工操作时间和提高机器的使用效率。分为单道批处理系统和多道批处理系统。优点是同一批内的各作业次次执行,改善了cpu,io的使用效率,提高了吞吐量。缺点是磁盘需要人工装卸,作业需要人工分类,监督程序易受用户程序破坏,缺少交互性。

分时系统, 具有如下特征:多路性、独立性、交互性、及时性。

实时系统,分为实时控制系统和实时信息处理系统。主要特点有:快速的响应时间、有限的交互能力、高可靠性

网络操作系统,使得计算机更有效地共享网络资源,为网络用户提供所需各种服务的软件和有关协议的集合。

分布式操作系统,是由多个分散的计算机经网络连接而成,各主机无主次之分。为分布式计算机配置的操作系统称为分布式操作系统。
微机操作系统
嵌入式操作系统

2、研究操作系统的观点
资源管理的观点:从这种观点看,操作系统的管理对象是计算机系统的资源,操作系统则是管理计算机系统的程序集合。这种观点是在共享的前提下以资源分配、使用和回收为出发点,考虑操作系统各部分程序的功能和算法。

虚拟机的观点:操作系统加裸机构成虚拟计算机。虚拟机的观点是从功能分解的角度出发,考虑操作系统的结构,将操作系统分成若干层次,每一层完成特定的功能。

3、顺序程序执行时的特征:顺序性、封闭性、可再现性;

  并发程序执行时的特征:非封闭性、程序和机器执行程序的活动不在一一对应、并发程序间的相互制约性。

  引入进程的原因:由于程序并发执行破坏了程序的封闭性和可再现性,使得程序和执行程序的活动不在一一对应,此时用静态的程序概念已经不能描述系统中程序动态执行的过程,所以引入了进程。

4、进程的定义:就是程序的一次执行,该程序可以和其它程序并发执行。

  进程的组成:进程通常是由程序、数据及进程控制块(PCB)组成的。
进程的程序部分是进程执行时不可修改部分,它描述了进程需要完成的功能;
进程的数据部分是进程的可修改部分;
进程控制块是进程的描述信息和控制信息,是进程存在的惟一标志。

进程和程序的区别是:进程具有状态而程序没有。

5、进程的状态及状态间的切换

  三态模型:运行、就绪、阻塞。

  五态模型:新建态、终止态、运行、就绪、阻塞。

  新建态:对应于进程刚刚被创建时还没有被提交,并等待系统完成创建进程的所有必要信息的状态。整个过程分为两个阶段,一是为一个新建进程创建必要的管理信息,另一是让进程进入就绪状态。因为有了新建态,操作系统可以根据系统的性能和主存的容量限制而推迟新建态的提交。

  终止态也分为两个阶段,一是等待操作系统进行善后处理,另一是释放主存。

  具有挂起状态的进程状态:当系统资源不能满足所有进程的运行要求时,必须将某些进程挂起,放在磁盘对换区,暂时不参加调度,以平衡系统负载。有这样几个状态:活跃就绪、静止就绪、活跃阻塞、静止阻塞。

6、进程的控制,就是对系统中所有进程从创建到消亡的全过程实施有效的控制。操作系统的内核为系统实现进程控制和存储管理提供了有效的控制机制。
大多数操作系统内核均包含支撑功能和资源管理功能。
支撑功能:中断处理、时钟管理、原语操作。
原语是由若干条机器指令构成的,用于完成特定功能的一段程序。内核在执行某些基本操作时往往是通过原语操作实现的。原语在执行过程中不可分割。内核中包含的原语有进程控制、进程通信、资源管理等。

资源管理功能:进程管理、存储器管理、设备管理。

7、进程间通信
进程间的同步:一般来说,一个进程相对于另一个进程的运行速度是不确定的,即进程是在异步环境下运行。每个进程都以各自独立的不可预知的速度向前推进,但相互合作的进程需要在某些确定点上协调它们的工作,当一个进程到达了这些点后,除非另一进程已完成了某些操作,否则就不得不停下来等等这些操作结束。
进程间的互斥:在多道程序系统中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用,称为临界资源(critial resource)。同步是进程间的直接制约问题,互斥是进程间的间接制约问题。

临界区(critial section)是对临界资源实施操作的那段程序。互斥临界区管理的原则为:有空即进、无空则等、有限等待、让权等待。

8、整形信号量与PV操作

  整形信号量是一个整形变量,根据控制对象的不同赋不同的值。信号量分为两类:
公用信号量:实现进程间的互斥,每个相关进程即可对它施行P操作也可以进行V操作,初值为1或资源的数目;
私用信号量:实现进程间的同步,只有一个进程可以对它施行P操作,其它进程只能做V操作,初值为0或某个正整数。

  信号量S的物理意义:S>=0表示某资源的可用数,S<0则其绝对值表示阻塞队列中等待该资源的进程数。

  PV操作是实现进程同步与互斥的常用方法。PV操作是低级通信原语,其中P操作表示申请一个资源,V操作表示释放一个资源。

  P操作定义:S:=S-1,若S>=0,则执行P操作的进程继续执行;否则若S<0,则该进程为阻塞状态,并将其插入阻塞队列。
  V操作定义:S:=S+1,若S>0,则执行V操作的进程继续执行;否则,若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,执行V操作的进程继续执行。

  利用PV操作实现进程的互斥:令信号量mutex的初值为1,当进入临界区时执行P操作,临界区时执行V操作。
P(mutex)
临界区
V(mutex)

  怎样利用PV操作实现进程的同步:可用一个信号量与消息联系起来,当信号量的值为0时表示希望的消息未产生,当信号量的值为非0时表示希望的消息已经存在。假定用信号量S表示某条消息,进程可以通过调用P操作测试消息是否到达,调用V操作通知消息已准备好。最典型的是单缓冲区的生产者和消费者的同步问题。如果采用PV操作来实现进程PA和进程PB间的管道通信,并且保证这两个进程并发执行的正确性,则至少需要2个信号量,信号量的初值分别为0、1。


9、高级通信原语,因为PV操作不足以描述复杂的进程间的信息交换,所以引入高级通信原语。

  高级通信原语有这么几种:共享存储系统、消息传递系统、管道通信。

  进程通信有直接和间接两种方式。间接方式是以信箱以为媒介。

10、管程(monitor):另一种同步机制,采用资源集中管理的方法,将系统中的资源用某种数据结构抽象地表示出来。由于临界区是访问共享资源的代码段,因而建立一个管程来管理进程提出的访问请求。采用这种方式对共享资源的管理就可以借助数据结构及在其上实施操作的若干过程来进行。对共享资源的申请和释放可以通过过程在数据结构上的操作来实现。

11、进程调度,在某些系统中一个作业从提交到完成需要经历高、中、低三级的调度。
高级调度(又称长调度、作业调度或接纳调度),它决定输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组就绪进程。
中级调度(又称对换调度),它决定处于交换区中的哪个就绪进程可以调入主存,以便直接参与CPU的竞争。
低级调度(又称进程调度),它决定处于主存中的哪个进程使用CPU。

  调度方式,是指当有更高优先级的进程来到时如何分配CPU。调度的方式分为可剥夺式和不可剥夺式两种。

  常用的调度算法:先来先服务,主要用于宏观调度,有利于长作业,有利于CPU繁忙的作业;
  时间片轮转,主要用于微观调度,提高了并发性和响应时间,最终提高了资源利用率;
  优先级调度, 分为静态和动态两种;
  多级反馈调度,是在时间片轮转和优先级算法的基础上改进得到。其特点是:照顾了短进程以提高系统吞吐量,照顾I/O型进程以获得较好的I/O设备利用率并缩短响应时间,不必估计进程的执行时间和动态调节优先级。

12、死锁:就是指两个以上的进程相互请求对方已经占有的资源时而导致无法继续运行下去的现象。

  几种会产生死锁的情况:进程推进程顺序不当,同类资源分配不当,PV使用不当。

  进程资源有向图:由方框、圆圈和有向边3部分组成。其中资源用方框表示,进程用圆圈表示。在方框中每一个小圆圈代表一个资源。有向边分别代表请求资源和分配资源。

  死锁产生的原因:因为竞争资源或进程推进顺序非法。进程推进顺序仍是关于进程请求和释放资源的顺序。

  死锁产生的4个必要条件:互斥条件、请求保持条件、不可剥夺条件、环路条件。
互斥是说进程对所要求的资源有排它性控制。请求保持是说进程断续地请求资源,但后续的资源被阻塞。环路是指在发生死锁时在进程资源有向图中,每个进程都占有了下一个进程请求的一个或多个资源。

  死锁的4种处理:鸵鸟策略;
预防策略,即破坏死锁产生的4个必要条件之一;
避免策略,即精心分配资源,主动回避死锁;
检测与解除死锁

13、线程 
  传统的进程有两个基本属性,即可拥有资源的独立单位,和可独立调度、分配的基本单位。引入线程后,将传统进程的两个属性分开,线程作为可独立调度和分配的基本单位,进程作为独立拥有资源的单位。因此,用户可以通过创建线程来完成任务,以减少程序并发执行时的时空开销。

14、存储器的结构:(寄存器)--缓存-主存-辅存。

  虚拟地址,又称为逻辑地址、相对地址、程序地址。它是从0号单元开始编址,并顺序分配所有的符号名所对应的地址单元,它不是主存中的真实地址。
  地址空间,又称逻辑地址、虚地址。
  存储空间,又称物理地址空间,是物理地址的集合。相对地址空间通过地址再定位机构转换到绝对地址空间。

  重定位:程序的逻辑地址被转换成主存的物理地址的过程称为地址重定位。分为静态重定位和动态重定位。

静态地址重定位的优点是无需硬件地址变换机构的支持,它的缺点是必须为程序分配连续的存储区域且执行期间不能扩充不能移动并难以共享;
动态地址重定位要依赖于硬件的地址变换机构。它解决了静态重定位的各种缺点。

  进行存储管理的目的是:对主存空间进行分配和管理;主存扩充;存储保护;提高空间的利用率。
主存扩充技术,通过交换和覆盖实现,其中交换是由操作系统实现,覆盖是由操作系统提供覆盖机制但由用户进行控制。

15、分区存储管理,按分区方式的不同分为固定分区、可变分区、可重定位分区。

可变分区有4种请求和释放分区的算法:最佳适应算法、最差适应算法、首次适应算法、循环首次适应算法。

为减少分区碎片而使用的可重定位算法,基本思想是移动所有已分好的分区,使其靠拢成为连续区域。

  分区保护管理:有2种方法。一是“上界/下界寄存器”,另一种是“基址/限长寄存器”的方法。其中上界寄存器和基址寄存器都是放的作业的装入地址。下界寄存器放作业的结束地址,限长寄存器放作业的长度。因此调入作业所需要的物理地址必需满足:

 上界寄存器<=物理地址<=下界寄存器
   或 基址寄存器<=物理地址<=物理地址+限长寄存器

  分区管理方案是解决多道程序共享主存的可行方案,但它要求用户的程序必须装入地址连续的空间中。

16、页式存储管理

  分页原理:将一个进程的地址空间划分成若干大小相等的区域,称为页。相应地将主存空间划分成与页相同大小的若干物理块,称为块或页框。在为进程分配主存时,将进程中若干页分别装入多个不相邻的块中。

  地址结构由2部分组成:页号+页内地址

  页表:又称为页面映射表。作用是实现从页号到物理块号的地址映射。

  快表:是页表方式的改良,是在地址映射机构中增加一个联想存储器(是由一组高速存储器组成),这就是所谓的快表。它用来保存当前访问频率最高的少数活动页的页号及相关信息。 另外还有一种方法是增加高速寄存器来保存页表,但这样的成本太大。

  两级页表机制:是为了减少页表占用的连续地址空间,而提出的方法。使用两级或多级页表机制来存储页表。

17、分段存储管理
  
  原理:在分段式存储管理系统中,为每个段分配一个连续的分区,而进程中的各个段可以离散地分配到主存的不同分区中。在系统中为每个进程建立一张段映射表,简称段表。每个段在表中占有一个项,记录该段在主存中的起始地址(基址)和段的长度。进程在执行时,通过查段表来找到每个段所对应的主存区。因此,段表实现了逻辑段到物理主存区的映射。

  分段系统的地址结构:段号(名)+段内地址

  特点:段是信息的逻辑单位,因此分段的一个突出优点是易于实现段的共享,即若干个进程共享一个或多个段,而且对段的保护也很简单。在分页系统中,虽然也能实现程序和数据的共享,但远不如分段系统方便。

  段页式存储管理,原理是先将主存划分为大小相等的存储块(页框),再将用户程序按程序的逻辑关系分为若干个段,为每个段命名,然后将每个段划分为若干个页,以页架为单位离散分配。
  
  段页式系统的地址结构:段号+段内页号+页内地址

18、虚拟存储管理

  程序的局部性:时间局限性和空间局限性。前者指程序中的某条指令或某个存储单元一旦被执行或访问,则在不久的将来可能会再次发生(因为程序中存在着大量的循环操作);后者指一旦程序访问了某个存储单元,则不久的将来该存储单元附近的存储单元也最有可能被访问(因为程序是顺序执行的)。

  虚拟存储器,从用户的角度看,是这样一个系统,它所具有的主存容量比实际主存容量大得多。它是根据局部性原理,在一个作业运行之前只把部分程序和数据装入主存,其余部分留在磁盘上。如果要访问的页或段未在主存中(称为缺页或缺段)则将它们调入主存。

  虚拟存储器的实现:
请求分页系统,它是在分页系统的基础上,增加了请求调页和页面置换功能后所形成的页式虚拟存储系统。

请求分段系统,它是在分段系统的基础上,增加了请求调段和段置换功能后所形成的段式虚拟存储系统。

请求段页式系统,它是在段页式基础上,增加了请求调页和页面置换功能后所形成的段页式虚拟存储系统。

  其中请求分页系统是目前常用的一种虚拟存储器方式。其页面置换算法的好坏直接影响系统性能,不当的置换算法可能会导致系统“抖动”。常用的页面置换算法有:最佳置换算法、先进先出置换算法、最近最久未使用置换算法和最近未用置换算法。

  虚拟存储器的特征:离散性、多次性、对换性、虚拟性。工作集的概念是指在某段时间间隔里,进程实际要访问的页面的集合。
  虚存容量不是无限的,它受主存和外存可利用的总容量限制;虚存还受计算机总线地址结构限制。虚存的扩大是以牺牲CPU工作时间和主存与外存交换时间为代价的。虚存是由操作系统调度,采用主存外存交换技术,各道程序在必须使用时调入主存,不用的程序则调出主存。

19、设备管理,包括各种设备分配、缓冲区管理和实际物理I/O设备操作,通过管理达到提高设备利用率和方便用户使用的目的。

  设备的分类
按数据组织分为:块设备 ,如磁带、磁盘
字符设备,如打印机、交互式终端
按资源分配分为:独占设备,如打印机
共享设备,如磁盘
虚拟设备,如利用假脱机技术将一台独占设备变为多个用户共享的逻辑设备。
按数据传输速率:低速设备,如键盘、鼠标
中速设备,如打印机
高速设备,如磁盘

  设备管理的目标是如何提高设备的利用率,为用户提供方便统一的界面。
  设备管理的任务是保证在多道程序环境下,当多个进程竞争使用设备时,按一定策略分配和管理各种设备,控制设备的各种操作,完成I/O设备与主存之间的数据交换。

20、I/O软件

  IO设备管理软件分为4层:由低到高为中断处理程序--设备驱动程序--与设备无关的系统软件--用户级软件

  设备驱动程序是直接同硬件打交道的软件模块,它与IO设备的硬件结构有密切的联系。它的任务就是接受来自与设备无关的上层软件的抽象请求,进行与设备有关的处理。

  设备的IO方式:
通道 , 使数据的传输独立于CPU,CPU只须向通道发出IO命令,由通道完成IO任务后再向CPU发出中断信号。
DMA ,  是指数据在主存和IO设备之间直接传送,CPU只需要在首尾做些处理。
缓冲技术,缓冲区技术可提高外设利用率,使外设尽可能处于忙状态。分为硬件缓冲(由硬件寄存器实现)和软件缓冲(由操作系统实现)。缓冲技术的优点是:可以缓和CPU与IO设备间速度不匹配的矛盾;减少CPU的中断频率,放宽对中断响应时间的限制;提高CPU和IO设备之间的并行性。

21、Spooling技术

  Spooling是外围设备联机操作的简称,又称为假脱机系统。Spooling实际上是用一类物理设备模拟另一类物理设备的技术,是使独占使用的设备变成多台虚拟设备的技术,是一种速度匹配技术。
  Spooling由预输入程序、缓输出程序、井管理程序、输入井输出井组成。

  Spooling系统中拥有一张作业表来登记进入系统的所有作业的作业名、状态、预输入表位置等信息。每个作业拥有一张预输入表来登记该作业的各个文件的情况,包括设备类、信息长度及存放位置等。(包括图)

  输入井中的作业有4种状态:提交、后备、执行、完成。

22、磁盘调度,分为移臂调度和旋转调度两种。并且是先进行移臂调度,然后再进行旋转调度。因为访问磁盘最耗时的是寻道时间,所以磁盘调度的目标是减少磁盘的平均寻道时间。

  磁盘驱动调度, 常用的磁盘调度算法有先来先服务FCFS、最短寻道时间SSTF、扫描算法SCAN(又称为电梯调度算法)、单向扫描调度算法CSCAN、N-Step-SCAN算法(磁臂粘着)、FSCAN算法。

  FCFS的优点是简单,缺点是平均寻道时间太长;SSTF的优点是每次的寻道时间最短,缺点是不能保证平均寻道时间最短,且有高度局部化的倾向,会推迟某些请求以致引起饥饿;SCAN的优点是避免了饥饿现象,缺点是可能有个别请求被严重延迟;C-SCAN为的是避免SCAN的缺点

  旋转调度算法, 该算法用来计算,当移动臂定位后,有多个进程等待访问该柱面时,这些进程的访问顺序。系统应该选择延迟时间最短的进程对磁盘的扇区进行访问。

23、文件:具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。文件是一种抽象机制,它隐藏了硬件和实现细节。
  文件管理系统:就是操作系统中实现文件统一管理的一组软件和相关数据的集合,是专门负责管理和存取文件信息的软件机构,简称文件系统。
  文件系统的功能:按名存取、统一的用户接口、并发访问和控制、安全性控制、优化性能、差错恢复。

  文件的结构和组织:文件的结构是指文件的组织形式。从用户的角度看到的文件组织形式称为文件的逻辑结构;从实现的角度看文件在存储器上的存放方式,称为文件的物理结构。

  文件的逻辑结构分为2类:一是有结构的记录式文件;另一是无结构的流式文件。

  文件的物理结构,决定了文件的逻辑块号到物理块号的转换方式。常见的物理结构有:连续结构(顺序结构)、链接结构、索引结构、多个物理块的索引表(链接、多重索引表、unix的索引结构)。索引顺序文件既适合于交互方式应用,也适合于批处理方式应用。

  文件目录,就是文件控制块的有序集合。文件控制块FCB是用于描述和控制文件的数据结构。常见的目录结构有3种:一级目录结构,二级目录结构,多级目录结构。

  文件的存取方法有顺序和随机两种。
 
  磁盘分配表,就是外存进行空间管理的数据结构。

  常用的空闲空间管理方法:位示图、空闲表法、空闲链表及成组链接法。

  文件的使用:文件系统为每个文件与该文件在磁盘上的存放位置建立了对应关系。文件系统通过用户给出的文件名查找对应文件的存放位置并读出内容。在多用户环境下,操作系统为每个文件建立和维护关于访问权限等方面的信息。为此操作系统在操作级和编程级为用户提供文件服务。

  文件共享:是指不同用户使用同一文件。有多种共享形式,采用文件名与文件说明分离的目录结构有利于实现文件共享。

  在Unix系统中允许多用户基于索引结点的共享,或利用符号链接共享同一个文件。基于索引结点的共享方式又有静态共享和动态共享两种方式。这样子,会在打开文件表、系统打开文件表、内存i结点表及磁盘间形成一副关系图。这种关系图在辅导教材的155页的几个例子中有图解,可以体味。

  符号链接会增加系统的读盘次数,而硬链接的共享文件的目录文件表目中已包括了共享文件的索引结点号。

  文件保护:文件系统对文件的保护采用存取控制方式进行。存取控制就是不同的用户对文件的访问规定不同的访问权限。常用的存取控制方式有,存取控制矩阵、存取控制表、用户权限表、密码。

  存取控制矩阵,就是一个二维矩阵,一维列出全部用户,另一维列出全部的文件,每个矩阵元素表示某个用户对某个文件的存取权限。
  存取控制表,就是按用户对文件的访问权力的差别对用户进行分类,该存取控制表可存放在每个文件的文件控制块中。UNIX使用的这种方式,用9位二进制数表示三类用户对文件的存取权限,该权限存在文件索引节点的di_mode中。
  用户权限列表,以用户或用户组为单位将用户可存取的文件集中起来存入表中,表中的每个条目表示该用户对相应文件的存取权限。这相当于把存取控制矩阵简化为一行。

  系统的安全性:分为4个级别,系统级、用户级、目录级和文件级。

  文件系统的可靠性:转储与恢复,日志文件,文件系统的一致性。

24、作业,是系统为完成一个用户的计算任务所做的工作总和。作业中的每个步骤又称为作业步。

  作业控制:分为脱机控制和联机控制两种方式。在脱机控制中用户必须使用作业控制语言(JCL)编写作业说明书,并同作来一同提高给系统

  作业控制块JCB:是记录作业各种有关信息的登记表。JCB是作业存在的惟一标志,其中包括用户名、作业名和状态标志等信息。JCB被用于在输入井中形成作业后备队列。

  作业的4种状态:提交、后备、执行和完成。注意它们的状态转换图。

  作业调度算法:先来先服务算法、短作业优先、响应比高者优先、优先级、均衡调度算法。其中响应比是取值于“作业响应时间除以作业执行时间”,作业响应时间是作业时间与作业等待时间之和。

  作业周转时间 = 作业完成时间-作业提交时间 ,N个作业的平均周转时间就是取N个作业的周转时间平均值。
  作业带权周转时间 = (作业完成时间-作业提交时间)/ 作业执行时间

25、UNIX操作系统

  UNIX系统的结构:它是一种多用户、多任务的分时操作系统,一般由存储管理、进程管理、设备管理和文件系统管理几个部分组成。

  unix文件系统的目录结构是树形带交叉勾连的,根目录记为"/"。目录是一个包含目录项的文件。进程可以通过系统调用访问文件。unix文件系统的布局如图所示:        
|引导块|超级块|索引结点区|数据存储区|

  Unix进程的组成:由控制块PCB、正文段和数据段组成。

  Unix进程的控制:有一个进程控制子系统,提供了如fork,exec,exit,wait,signal,kill,msgsnd,msgrcv等系统调用,以完成进程的同步、通信、存储及调度。

  Unix进程的调度:采用优先数算法,进程的优先数随进程的运行情况而变化。

  Unix进程的存储:早期采用对换技术;高版本的Unix的主存管理采用的分页式虚拟存储机制,以对换技术作为辅助手段。

  Unix的设备管理:Unix上包括两类设备,即块设备和字符设备。Unix设备管理有这样的特点,
  块设备与字符设备具有相同的层次结构(对它们的控制方法和所采用的数据结构、层次结构相同);
  将设备作为一个特殊文件并赋予一个文件名(文件存取与对设备的使用,具有了统一的接口);
  采用完善的缓冲区管理技术(预先读、异步写、延迟写)。

26、Windows操作系统

  Windows的体系结构:通过硬件实现了核心态和用户态两种特权状态。核心组件使用了面向对象的设计原则,一般不能直接访问某个数据结构中由单个组件维护的消息,这些组件只能使用外部接口传送参数访问或修改这些数据。

  Windows的核心态模块有:核心、执行体、硬件抽象层、设备驱动程序、图形引擎。

  Windows的文件系统:NTFS使用64位簇进行索引,NTFS的特征有可恢复性、安全性、大磁盘和大文件、多数据流和通用索引功能。

  在Windows中进程是资源分配的单位,并将进程作为对象来进行管理。Windows的线程是内核线程,是处理机的调度单位。

  存储管理,Windows默认使用二级页面表结构来转换物理地址和虚拟地址。

  Windows的设备管理,建立了广义的资源管理概念,并统一地用对象模型来描述和规范化,大大降低了系统的复杂性。在输入输出上,建立了一个一致的高层界面--IO设备虚拟界面。将所有的读写数据看成直接送往虚拟文件的字节流。