《计算机科学概论》第十版
一、第一章
1、布尔运算:假设0代表假值,1代表真值,这样对位的运算看作是对真、假值的操作;则将处理真/假值运算命名为布尔运算
布尔运算包含3种基本运算:与、或、异或
2、基本概念
门:给出一种布尔运算输入值时,可以得到该布尔运算的输出值。
触发器:是一个可以产生0或1输出值的电路,它的值会一直保持不变,除非其他电路过来的临时脉冲使其改变为另一个值;即输出值是在外界的刺激下载两个值之间相互转换。
计算机存储器是以称为存储单元的可管理单位组织起来的,一个典型的存储单元容量是8位。一个八位的串称为一个字节,因此一个典型的存储单元的容量是一个字节。
存储单元的位排成一行,左端称为高位端,右端称为低位端,最左一位称为最高有效位,最有一位称为最低有效位。
为区分各存储单元,每一个存储单元都被赋予一个唯一的名字,称为地址。
计算机的主存储器通常称为随机存取器,RAM
联机:意味着设备或者信息已经与计算机连接,不需要人为的干预就可以使用。
脱机:意味着必须先有人的干预,设备和信息才可被计算机使用。
磁盘里面是可以旋转、薄的盘片,表面有磁介质的涂层用以存储数据。
读写磁头安装在盘片的上面或下面,当盘片旋转时,每个磁头在盘片上面或者下面相对于称为磁道的圆圈转动;
转动磁头时,可以对各个同心的磁道进行存取;
一个磁盘存储系统包含若干个安装在同一根轴上盘片,一个盘片在另一个盘片的上面,盘片之间留有足够的距离,使得磁头可以在盘片之间滑动;
这种情况下,所有的磁头是一起移动的;因此,当磁头移到新的位置时,新的一组磁道,称为柱面;
因为一个磁道可以包含的数据通常比我们一次能够处理的数据多,所以每个磁道划分成若干个小弧区,称为扇区;记录在每个扇区的信息是连续的二进制位串;
磁盘上所有的扇区包含相同的二进制位,而且在最简单的磁盘存储系统里,每一个磁道分为相同数目的扇区,因此,盘片边缘磁道扇区存储的位密度要小于靠近盘片中心磁道上存储的位密度,这是因为外面的磁道要长于里面的磁道。
事实上,在大容量的磁盘存储系统里,边缘磁道包含的扇区要远多于靠近中心的磁道,这种存储能力通常通过一种称作区位记录的技术得以应用。
运用区位记录,一些相邻的磁道被统一命名为区,一个典型的盘片大约含有10个区;
一个区的所有磁道由相同的扇区,但是靠外的区中每一个磁道包含的扇区比靠内的区包含的多。
因此,盘片边缘的存储空间利用率要高于传统磁盘系统。
一个磁盘存储系统的容量取决于所有盘片数目以及所划分的磁道、扇区的密度。
仅由一张塑料盘片组成的低容量系统成为磁盘,也成为软盘。
由于硬盘系统所使用的所有盘片都是刚硬的,为区别于软盘系统,成为硬盘。
为了使盘片可以快速的旋转,硬盘系统里的磁头并不接触盘片表面,而是浮在上面,磁头与盘片表面的空隙很小,以至于一颗灰尘都会阻塞在 磁头和盘片之间的空隙,造成破坏。
评估磁盘系统的性能的指标:
(1)寻道时间:读写磁头从一个磁道到另一个磁道所需要的时间;
(2)旋转延迟或等待时间:盘片旋转一周所需要时间的一半,也就是读写磁头到达所要求刺刀后,等待盘片旋转使读写磁头位于所要存取的数据上所需要的时间;
(3)存取时间:即寻道时间和等待时间之和;
(4)传输速率:从磁盘读出或写入数据的速率;盘片旋转一次边缘磁道读写磁道传递的数据要多于内磁道,因此数据传输速率依据所使用的盘片部分的不同而变化;
光盘由涂着光洁保护层的反射材料制成,通过在反射层上创建偏差的方法在光盘上面记录信息。激光束通过监视CD快速旋转时反射层的不规则反射偏差来读取信息;
由于磁盘和光盘、软盘都是利用物理运动来存储和读取信息,所以数据存储和读取的速度比电子电路的速度要慢;
闪存技术就是克服了这一缺点;在一个闪存系统中,用电子信号将二进制位直接送到存储介质中,该介质中,电子信号使得二氧化硅的微小晶格截获电子,从而转换微电子电路的性质;因为这些微小晶格能够保持截获的电子很多年,所以闪存技术适合存储脱机数据。
信息一般被分组为较大的单元,称为文件;
海量存储设备规定文件要以较小的多字节单位进行存储和检索,符合存储设备特性的数据块称为物理记录,因此大文件通常包含多个物理记录;
自然产生的数据块称为逻辑记录;
物理记录对应于扇区的大小;
逻辑记录对应于数据内的自然划分;
逻辑记录的规格很少能与海量存储系统的物理记录相匹配,因此,人们可能发现若干逻辑记录存放在一个物理记录中,或者一个逻辑记录存放在两个或者更多的物理记录里;
因此,海量存储系统的信息检索需要一定的整理工作,这个问题的一个常用的解决方法是:在主存储器里留出一个足够大的区域,用于存放若干物理记录并以此存储空间作为重组区域,也就是说,与物理记录兼容的数据块可以再主存储区与海量存储系统之间传输,主存储区的数据能够根据逻辑记录引用;这种 存储区域成为缓冲区
一个文件由一长串根据ASCII或Unicode编码的符号组成,则常称为文本文件
3、图像的表示
图像表示为一组点,每一个点称为一个像素,pixel,即picture element;每个像素的显示被编码,整个图像就表示成这些已编码像素的集合,这个集合称为位图。
位图表示:
黑白图像
彩色图像:每个像素的表示方法通常有两种:
一种是RGB编码,每个像素表示为3种颜色成分-红绿蓝,他们对应于光线的三原色;一个字节通常用来表示每个颜色成分的亮度,因此要表示原始图像中的一个单独的像素,就需要3个字节的存储空间。
另一种是YUV编码:Y是亮度,是红绿蓝部分的总和,实际上是像素中白光的数量,
3、数据压缩
通用数据压缩技术有两类:一种是有损压缩,一种无损压缩
无损压缩的技术主要有:
行程长度编码:对于被压缩数据由一长串相同的数值组成的情况,将相同的数据替换成一个代码;
频率相关编码:用于表示数据项目的位模式长度和项目使用频率是相反的,即项目采用不同的长度模式来表示;代表有霍夫曼编码
差分编码:记录连续数据单元之间的差别,而不是整个单元,也就是每个单元都是根据其与前一个单元关系编码的;差分编码用无损形式和有损形式都可以。
字典编码技术
自适应编码技术
4、图像压缩
GIF:字典编码系统,将赋予一个像素颜色的数量减少到256个;这256个编码存储在一个称谓调色板的表格里,图像中的每个像素都可以用一个字节表示,它的数值指出在256个调色条目中哪一个表示像素的颜色;GIF用于任意图像时都是有损压缩系统,因为调色板中的颜色不可能与原始图像的颜色一致。因为只能编码256种颜色,不适于高精度要求。
JPEG:由ISO中的联合图像专家组开发,JPEG标准实际上包含几种图像压缩方法,每种都有它自己的目标;JPEG基线标准称为很多人的选择
JPEG图像压缩的步骤:
第一步:保留所有的原始亮度信息,在2*2的像素方块中,求色度的平均值,这样色度信息的大小就减少到1/4;
第二步:将图像拆分成8*8的像素块,将信息压缩近每一个块,并作为一个单元,这是运用离散余弦变换实现,转换后的块反映了原始块中像素之间关系,而不是实际的像素值,在这个块中,低于设定极限的数值将被0替代;JPEG基线标准可以将彩色图像压缩至少10倍,有时是30倍,没有明显质量损失。
TIFF:tagged image file format:
5、音频和视频压缩
音频和视频压缩最常用的标准时ISO领导的运动图像专家组Motion Picture Experts Group研制开发的,因此成为MPEG标准
音频压缩最著名的就是MP3,MP3利用人耳的特定,即删除人耳觉察不到的细节:其中一种特性是暂时模糊,指的是在一个巨大声响后,短时间内,人耳觉察不到本来可以听到的轻柔的声音;另一种特性是频率模糊,指的是某一频率的声音可能掩盖相近频率的轻柔的声音。利用这些特性,MP3就可以获得视频的有效压缩,而且声音接近CD;
奇偶校验位:在数据高位或低位添加一位,并赋值0或1;这样就得到有奇数个0,若是出现偶数个0,就表示出错,
二、数据操控
1、CPU由3部分构成:算术/逻辑单元:包含在数据上执行加减法运算的电路;控制单元:包含协调机器活动的电路;寄存器单元:包含寄存器的数据存储单元,用作CPU内部的信息临时存储,分为通用寄存器和专用寄存器。
通用寄存器用于临时存储CPU正在操纵的数据;
2、机器语言:能被计算机识别的二进制模式编码的指令,这组指令称为机器指令,机器指令和对应的编码系统称为机器语言
3、计算机按照指令集的复杂程度分为两种:精简指令集计算机RISC和复杂指令集计算机CISC
机器指令分为三类:数据传输、算术逻辑、控制
4、机器指令编码形式分为操作码和操作数
5、CPU中有两个专用寄存器:指令寄存器和程序计数器;指令寄存器用于存储正在执行的指令,程序计数器包含下一个待执行指令的地址,因此它用于以机器方式跟踪程序执行到什么地方。
机器周期的三个步骤:取指、译码、执行
在取指步骤,控制单元根据程序计数器指定的地址,请求主存储器提供它存放该地址的指令;
6、逻辑运算
AND运算可以屏蔽某些位,使用0相与可以屏蔽,使用1相与可以保留该位
XOR:任何一个二进制数与相同位数的全1相异或,得到该二进制数的反码
7、USB:universal serial bus:通用串行总线
FireWire:火线
8、存储映射输入/输出memory-mapped I/O:CPU是通过控制器与存储器打交道,无论存取,都是通过控制器与存储器相联系
直接存储器存储DMA:不通过CPU,控制器直接同主存储器通信。
握手:计算机与外围设备之间交换设备状态的信息,协调他们之间的活动
状态字:有外围设备生成并发送给控制器的一个位模式,该状态字是一个位图,其中的各个二进制位反映了该设备的各种状态。
三、1、负载均衡:动态的把任务分配给各个处理器,使得所有的处理器都得到有效的利用。
2、均分:把大任务划分成若干个子任务,并与可用的处理器数目相适应。
3、计算机软件分为:应用软件和系统软件
应用软件是由一些完成计算机的特定任务的程序组成的;应用软件是为了满足用户某种具体需要的程序组成的;
4、操作系统必须能够与用户进行通信,操作系统处理通信的这一部分,通常称为外壳,即shell
5、unix系统目录路径是用斜杠分隔的,二windows用户是用反斜杠分隔的
6、与操作系统外壳相对,操作系统内部部分称为内核。
其中一个组件式文件管理程序:他的工作时协调计算机与海量存储器设施的使用。
另外一个组件是设备驱动程序:负责与控制器通信,以实现对连接到计算机外围设备的操作的软件组件。
还有一个组件是内存管理程序:主要协调和管理计算机所使用的主存储器的任务。
虚拟内存:由分页技术所产生的大的虚构的内存空间;当所需的总内存空间超过该计算机实际所能提供的可用内存空间时,内存管理程序通过在内存与海量存储器之间来回切换程序和数据,这样就造成了由额外的内存空间的假象。
7、在一般电脑中,称之为引导的程序是永久存储在机器的ROM中的,存储在ROM的程序称为固件firmware,反映出这样一个事实,即它是永久记录在硬件中的软件组成的;
计算机开机的时候:
最先执行的就是引导程序,引导程序的作用就是引导CPU吧操作系统从海量存储器中预先定义的位置调入主存的可变存储区;
一旦操作系统被放调入主存,引导程序就引导CPU执行跳转指令,转到这个存储区;
操作系统接管并开始控制计算机的活动
执行引导和开始操作系统的整个过程称作启动计算机。
*****************************************************************************************************************************************************************************************
2013年2月2日更新
*****************************************************************************************************************************************************************************************
8、为什么计算机不提供足够的ROM来装载整个的操作系统呢,这样从海量存储器来引导启动就没有必要了?
就当今技术而言,把通用计算机的大块主存专用于不可变的存储,效率就不高了;另一方面,像家用电器中使用的大多数专用计算机,如果让他们所有的软件都常驻内存,每次设备启动时就比较方便。由于很容易通过轻击一个键就可以使系统开始工作,所以我们将这样的系统称为交钥匙系统。
9、现代操作系统的一个最基本的概念就是程序和执行该程序的行为区别开来,前者是一组静态的指示,后者是一组动态的行为,其属性会随着时间的推进而改变。
我们把执行某些程序的行为称之为进程process;与进程联系在一起的行为的当前状态,称之为进程状态process state;
进程状态包含正在执行的程序的当前位置(程序计数器的值)、CPU中其他寄存器的值以及相关的存储单元。
大约说来,进程状态就是机器在特定时刻的快照,在程序执行期间的不同时刻(一个进程中的不同时刻),将观察到不同的快照。
9、进程管理
与协调进程的执行有关的任务是由操作系统内核中的调度程序和分派程序处理的。
调度程序维护一个有关计算机中现存进程的记录,将新的进程加入到进程记录,并把已经完成的进程移出进程记录;当用户提出一个请求时,调度程序就把这个应用加到当前进程记录中。
为了跟踪所有的进程,调度程序在主存中维护着一个信息块,称为进程表;每当要请求程序执行时,调度程序都要在进程表中为该程序创建一个新的表项;这个表项包含该进程存储区的信息,进程的优先级、进程的状态等;如果程序能够继续执行,那么该进程就处于就绪状态;如果该进程需要等待某个外部事件的发生而中断,如果磁盘的竞争访问、等待键盘的输入以及等待其他进程传来的消息等,那么该进程就处于等待状态。
分派程序是内核的一个组件,它确保被调度的进程实际被执行。在多任务系统汇总,这个任务是依靠多道程序设计(multiprogramming)来完成的,也就是说,先将时间划分成小的时间段,每段称为一个时间片--time slice通常不超过50ms,然后把CPU的注意力放在就绪进程上,允许每个进程一次执行一个时间片。
进程切换或者进程上下文切换:从一个进程切换到另外一个进程。
10、每次,分派程序给进程分配一个时间片时,它都会初始化一个计时器电路,通过产生一个中断信号来指示时间片的结束。
CPU收到一个中断信号时,它会完成当前的机器周期,保存它在当前进程中的位置,然后就开始执行称为中断处理程序,该程序存放在预先定义的位置上。中断处理程序是分派程序的一个部分,他来描述分派 程序如何响应中断请求。
11、处理进程间的竞争
临界区:只允许被一个进程执行的资源
互斥:一个临界区一次只能允许被一个进程执行
信号量:对一个临界区的互斥的常用方法
死锁状态出现的状态:
存在对不可共享资源的竞争;
这些资源是在不完整的基础上请求的;一个进程接受了某些资源后,稍后还将请求其他资源;
一旦资源被分配出去,他不能以强制的办法再收回;
假脱机:保存数据以供以后在合适的时候输出的技术;允许多个进程访问一个公共资源的技术。
*****************************************************************************************************************************************************************************************
2013年2月3日更新
*****************************************************************************************************************************************************************************************
四、组网和因特网
1、局域网LOCAL AREA NETWORK 城域网Metropolitan Area Network 广域网Wide Area Network
开放式网络、封闭式网络
按拓扑分:总线型网络、星形网络
在星形网络中,中央计算机被称为接入点,作为协调所有通信的焦点。
在基于以太网标准的总线型网络中,报文传输的许可是通过名为带冲突检测的载波侦听多路访问(CASM/CD)的网络协议进行控制的。
该网络协议规定每条报文都要广播给总线上的所有计算机,每台计算机都对所有报文进行监听,但是只关注发送给自己的报文。
为了传输报文,每台计算机都要等到总线空闲的时候才能发送报文,如果两台计算机发送报文的时间冲突,则会各自暂停一段时间后,再次进行尝试传输。
CASM/CD和无线星型网络并不兼容;因为无线星型网络中的每个计算机都是与中心计算机相连,某个计算机接收不到其他计算机的信号,可能是自己发送的信号掩盖了其他计算机的信号,也可能是由于障碍物阻塞;所以无线网络采用避免传输冲突的方法,而不是检测冲突的方法;
冲突避免最常见的方法就是将优先权赋予正在等待传输机会的计算机;
基于以太网协议的总线网络,是利用中继器、网桥、交换机等不同设备来将总线连接起来形成长总线的。
中继器:仅仅是在两个原始总线之间进行简单的来回传送信号的设备,而不会考虑信号的含义。
网桥:类似中继器,但是不必传输所有的报文,在传输之前需要检查报文的目的地址,并且当报文的目的地址是另一端计算机时才会传输。
交换机:本质上是具有多连接的网桥,并且仅仅转发报文到相应的线路;
路由器:是一种用来传送报文的专用计算机,与中继器、网桥、交换机不同的是,路由器提供了网络之间的链接,并且允许每个网络都保持它独特的内部特性;
路由器得名的原因在于它能够将报文传输到合适的方向;这个转发过程是基于因特网范围的寻址系统,其中因特网上的所有设备都被赋予了唯一的地址。
所以,一台计算机要想发送给其他网络的计算机报文,就要先在报文内加上目的地址,然后将报文发送给本地的路由器,然后由路由器项正确的方向发送;因此路由器必须维护一种转发表,该表中包含了根据目的地址消息应该发送的方向等路由知识;
一个网络与因特网链接的点经常被称为网关;因为他是作为本地网络与外界网络联系的通道。
2、进程间的通信
(1)不同计算机各种进程之间、同一台计算机各种进程之间必须经常相互通信,以便协调行动,并完成指派的任务,这种进程之间的通信称为进程间的通信;
(2)进程间通信通常采用的是客户机/服务器模型,这种模型决定了进程的基本角色;或者是向其他进程提出请求的客户机client,或者是满足其他进程请求的服务器server
(3)进程间另外一种通信方式是对等模型,即p2p模型
它与前者不同:客户机/服务器模型是为一个进程与多个进程通信,而p2p模型为两个进程间对等通信,而且服务器必须持续操作,以便随时服务于客户机,但是对等模型涉及的则是临时执行的进程。
(4)分布式系统:软件系统由在网络中不同计算机上作为进程执行单元的软件单元组成。
(5)如果用户想给远程计算机传输消息并通过助记符地址来表示目的地,那么使用的软件必须能够将地址转化为IP地址,然后才能传输消息;
域名服务器:他是可以向客户端提供地址解析服务的目录;域名服务器共同作为因特网范围内的目录系统,称为域名系统
因此,如果一台计算机可以通过助记域名连接,那么这个域名必须存在于域名系统内的域名服务器上。
(6)为了提供电子邮件服务,每个域的本地机构都要在其域内指定一台计算机,用以处理该域内的电子邮件活动,这台计算机就被称为该域的邮件服务器;通常,为了向域内的用户提供邮件服务,因特网接入服务提供商都会在其域内建立电子邮件服务器。当一名用户在其本地计算机发送邮件后,邮件首先会传送到用户的邮件服务器上,然后邮件服务器将邮件转发到目的地邮件服务器上,目的地邮件服务器一直保存邮件,知道收件人联系邮件服务器并请求查看收到的邮件。
(7)邮件传输遵循的协议时简单邮件传输协议SMTP
(8)传输文件的一种方法是作为附件附在电子邮件中,另一种方法就是利用文件传输协议FTP:File Transfer Protocol,它是一种在因特网上传输文件的客户机/服务器协议,使用FTP传输文件,因特网中一台计算机的用户需要使用一个实现FTP的软件包,然后与另外一塔计算机建立连接。
(9)远程登录:允许计算机用户在很远的距离访问计算机,使用远程登录,一个用户(运行远程登录客户端软件)可以与远程计算机的远程登录服务器取得联系,然后遵循那个操作系统的登录步骤获得那台计算机的访问权。
远程登录在使用之初存在通信没有加密的缺点,安全壳(secure shell,SSH)是解决这个问题的一个远程登录候选方法,而且迅速代替了远程登录。
SSH的特征是:他在 传输中的数据提供了加密,以及验证,验证中是确定通信的两台计算机的身份。
(10)超文本:最初指的是包含指向其他文档的链接的文本文档;该链接称为超链接
用户通过它计算机里的浏览器获得对超文本文档的访问权,充当客户端的浏览器通过向遍布因特网上的万维网服务器提出请求服务而访问那些文档,超文本文档通常是使用称为超文本传输协议HTTP在浏览器与万维网服务器之间传输。
为了万维网上的定位及检索文档,每个文档都被赋予了唯一的地址,称为统一资源定位符URL:uniform resource locator
每个URL都包含浏览器要连接到正确的服务器以及请求希望的文档所需要的信息,因此,为了浏览网页,人么要首先提供给浏览器所需要文档的URL,然后要求浏览器区检索和显示该文档。
典型的URL包含4段:与服务器进行通信并控制文档的存取协议,服务器所在机器的助记地址,目录路径提供服务器找到存放该文档的目录,以及该文档的名字。
(11)HTML:超文本文档区别于传统文本文档:超文本文档还包含称为标记的专用符号,用于表示该文档应该如何呈现在显示器上和该文档还需要什么多媒体资源,以及该文档的哪些项连接到其他文档上。这个标记的 系统称为超文本标记语言(Hypertext Markup Language,HMTL)
XML:可扩展标记语言,eXtensible Markup Language,是一种标准化的文体,用于设计将数据表示为文本文件的符号系统。
HTML是一种基于XML标准,为表示网页而开发的标记语言,实际上HTML的原始版本在XML标准巩固之前就已经开发出来了,因此HTML的一些特征不是很严格的遵守XML。
(12)因特网的层次是四层:应用层、传输层、网络层、链路层。
确定应用层哪个单元接受到来的报文是传输层的一个重要任务,这个任务由为每个单元分配 的唯一端口号来控制,传输层在报文开始他的传输旅程之前要把适当的端口号附加到报文地址上。一旦目的地的传输层收到报文,它只将报文交给指定端口号上的应用层软件。
OSI:Open System Interconnection 开放系统互连参考模型。
OSI标准时基于7层结构,因为它代表国际组织的权威,所以经常被引用,但是它已经很难取代4层结构的观点,这主要是因为4层结构在OSI模型指定之前已经成为因特网的事实标准。
TCP/IP协议簇是因特网所使用的协议的集合,这个协议集用来实现因特网的4层通信层次结构。
传输控制协议TCP和网际协议IP只是这个庞大集合中两个协议的名字。
更确切的会所,TCP只是定义了传输层的一个版本,TCP/IP协议簇不只是提供一个传输层的实现方式,另一个版本是用户数据报协议UDP
TCP和UDP之间有一些区别:
一是TCP协议时面向连接的协议,基于TCP的传输层在发送报文之前建立一个连接,而UDP协议时无连接的,基于UDP的传输层在发送报文之前不用建立这样的连接。
二是TCP通过确认和分组重发确保所有片段成功传输,因此TCP是可靠的协议,UDP不提供重发服务,是不可靠的协议
三是TCP提供流量控制flow control和拥塞控制congestion control
流量控制:报文源点的TCP传输层能降低它发送数据段的速率,防止TCP发送方向网络传入大量的突发数据造成网络阻塞
拥塞控制:报文源点的TCP传输层能调整它的发送速率,缓和它与报文目的地之间的拥塞。
报文的IP层数据头中含有跳数或者生存时间,跳数限制了数据包向前转发的次数,IP层每次向前转发一个数据包,该数据包的跳数减1,这样以免数据包在系统内无休止的循环,
(13)代理服务器:它作为客户机和服务器之间的媒介,其目标是保护客户机屏蔽来自服务器的不利行为,如果不适用代理服务器,客户机就直接与服务器通信,这就意味着服务器有机会获得客户机的一定数量的信息,时间长了,该服务器就能收集大量关于内联网内部结构的信息,而这些信息有可能用于破坏。
使用代理服务器,客户机实际连接的是代理服务器,代理服务器扮演了客户机的角色与实际的服务器相连,代理服务器实际扮演了实际客户机与实际服务器之间媒介的角色,来回的中转报文。
这种设置的好处之一:实际的服务器没法知道,代理服务器不是真的客户机,事实上,他永远不会意识到实际的客户机的存在
好处之二:代理服务器能够过滤所有服务器发往客户机的报文的作用。
(14)公钥加密:在这个加密系统中,可以知道是如何对报文进行加密的,但是不允许知道如何对报文进行解密。
公钥加密系统涉及到两个称为密钥的值的使用,一个密钥称为公钥,用来对报文进行加密,另一个密钥称为私钥,用来对报文进行解密。
为了使用这个系统,首先将公钥分发给那些需要向某个目的地发送报文的一方,二私钥则在这个目的端保存。于是,初始报文可以用公钥进行加密,然后将报文送往目的地,即使在这期间,报文被也知道公钥的人截获,还能保证它的内容是安全的,事实上,唯一能对报文进行解密的是在报文目的地持有私钥的那一方。
需要保证的是:所用公钥事实上对目的地一方而言是一个正确的密钥。
同时将公钥关联到正确的另一方的任务很重要:解决这个问题的办法就是建立一个可信任的因特网站点,称之为认证机构,其任务是维护相关方的准确列表以及他们的公钥。于是,这些起着服务器作用的认证机构为他们的客户提供了可靠的公钥信息,这些信息是用称为证书的软件包的形式表示的。
证书是一个软件包,它包含有关方的姓名和该方的公钥。
如果报文的作者实际上是他们声称的一方,这里关键就是:在有些公钥加密系统中,加密公钥和解密密钥的作用可以转换,即原文可以由私钥来加密,并且由于只有一方可以访问真个密钥,因此这样加密的任何原文必须是从那一方产生而来的;在这种方式下,私钥的持有者就能产生一个位模式,称之为数字签名,只有那一方才知道是怎么产生的。通过对报文附加这样的签名,发送者就能对报文做可以信任的标签。
五、算法
1、原语:计算机科学解决某些问题的途径是建立一组严格定义的构建块,利用他们来构建算法的表示,这些构建块称作原语。、
原语的集合以及说明如何组合这些原语来表示比较复杂的想法的规则集合就构成了一种程序设计语言。
2、伪代码是一种在算法开发过程中非正式表达思想的符号系统。
3、迭代结构:在这种结构中,一组指令以循环的方式重复执行。
4、算法的有效性和正确性
六、程序设计语言
1、程序设计范型:
命令型范型:开发一个命令序列,遵照这个序列,对数据进行操作以产生所期望的结果。
说明性范型:要求程序员描述要解决的问题,而不是解决该问题的算法。
函数型范型:接受输入和产生输出的实体。
面向对象范型:一个软件系统被看做是对象的集合,每一个对象都能够执行与自己相关的以及其他对象请求的动作,总之,这些对象之间的交互可以很方便的解决问题。
2、面向对象设计
对象:
类:对象的属性
对象称为是类的实例。
3、程序一般由3类语句构成:
声明语句:定义了在程序中使用的需要自定义的术语
命令语句:描述了潜在算法里的步骤
注释:通过人性化的语言解释一个复杂的程序
4、重载:一个运算符的多种用法
5、过程是实现一个任务的一组指令的集合,它能够作为其他程序单元使用的抽象工具。
调用:将控制权转移给过程的步骤
调用单元:请求过程执行的程序单元
过程内部使用的变量称为局部变量,不限定某个过程使用的变量称为全局变量
过程内部使用的通用项称为参数,即形参
在过程调用中,赋给形参的值称为实参
6、翻译:将程序从一种语言转换到另一种语言的过程
源程序:原始形式的程序
目标程序:翻译后的版本
翻译过程包括3部分的工作:词法分析、语法分析、代码生成
完成这三部的相应单元分别是词法分析器、语法分析器、代码生成器
7、类是一组对象的模板
面向对象允许一个类通过称为继承的方法包含其他类的属性
封装是指限制对一个对象内部属性的访问,说一个对象的特定属性石封装的,意味着就只有对象自己才可以访问他们。
被封装的属性称为私有属性、而可以从对象外部访问到的属性称为公有属性。
七、软件工程
1、集成开发环境:IDE,把软件开发工具诸如编辑器、编译器、调试工具等组合到单个集成的程序包中,有些还提供了可视化编程特性,其中 程序是被在计算机上显示为表示构件块的图标可视化的构造。
2、传统的开发阶段:
(1)需求分析
其主要目标是确定预期系统要提供的服务、这些服务运行条件,以及定义外界与系统的交互方式
需求被记录在软件需求规格说明文档中,从某种意义上来说,这个文档是涉及到各个方面的之间达成的书面确认。
(2)设计
为预期系统的构建提供一个解决方案
(3)实现
实现阶段涉及程序的具体编写、数据文件的创建和数据库的开发。
(4)测试
测试本质上是调试程序和确认最终的软件产品是否与软件需求规格说明书相一致的过程。
3、软件工程方法
(1)瀑布模型
强调以一个严格的顺序,按照需求分析、设计、实现和测试阶段进行,理由是,在大型软件中,允许作出随意变更会冒太大的风险,结果软件工程师坚持:完全按照顺序来
(2)增量模型
依据这个模型,所需的软件系统以一种渐进的模式来构建,即软件产品先是以功能有限的简化版本出现,一旦这个版本的系统通过测试或者经未来用户的评估,更过的功能就以递增的方式加到系统中来,然后在测试,直到整个系统全部完成。
(3)迭代模型
增量模型使用扩展产品的每个前期版本到更大版本的概念,二迭代模型则使用重建每个版本的概念,实际,增量模型通常会包含一个迭代过程,而迭代过程通常导致增量结果。
(4)增量模型和迭代模型反映出软件开发采用原型开发,即将预期系统先做成一个非完整版本,称之为原型,并加以评估。
在增量模型中,将这些原型发展为一个最终的完整系统,将这样一个过程称为演化式原型开发。
在另外一些模型中,原型可能会抛弃不用,以使得最后设计有全新的实现,这种方式称为抛弃式原型开发。快速原型开发通常属于抛弃式原型开发这个范畴。
由瀑布模型转化而来的最显著的方法就是被称为敏捷方法的方法学集合,他们都建议在增量的基础上的早期和快速实现,以响应需求变更,降低严格需求规格说明和设计的重要性。
敏捷方法的一个例子就是极限编程。
(5)模块化
就是把软件分割成几个易于处理的单元,通常称为模块,每个模块仅仅承担整个软件的一部分功能。
方法:
结构图
模块之间的了联系称为耦合
一种是控制耦合:出现在一个模块传递控制信息控制另外一个模块执行时
一种数据耦合:模块间的数据共享
(6)内聚
模块间的耦合应最小化,每个模块内部绑定程度应该最大化
内聚就用来表示这种内部绑定
一种是逻辑内聚:内聚度较弱的内聚形式
一种功能内聚:内聚度较强
(7)统一的建模语言UML:Unified Modeling Language
用例图:用大的矩形框来描述预期系统,在这个矩形框中,系统与其用户之间的交互为用例。用例图是从预期系统的外部来观察系统的。
类图:用来表示类的结构和类之间的联系
类图代表的程序设计中的静态特征,不能表示程序在执行过程中发生的事件序列。
交互图是一种序列图,它描述了完成任务所涉及的个体间的通信。
3、软件测试
帕累托法则:尽量多测试确定容易出错的模块,对他们进行彻底的测试,就可以发现系统更多的错误。
黑盒测试:不依赖对软件内部构成的理解
黑盒测试的一种方法是称为边界值分析的技术,它由表明数据范围的等价类构成,其中要确定软件规格说明的边界点,并在这些边界点上测试软件。
另一种测试是β测试:在最终版本发行之前,先将初步版本发给愿意学习的人试用,通过试用来测试。
白盒测试:依赖于对软件内部构成的理解
九、数据库
1、数据库是一种多维的数据抽象;之所以说是多维的,是因为在这种集合中,通过数据项间的内部链接,信息可以从不同的角度来获取;传统的文件系统,有时也称平面文件,是一种一维的文件系统,因为它只从一种观点来展示信息;
2、通常数据库都依赖所谓的模式和子模式。
模式是整个数据库结构的一个描述,数据库软件用它来维护整个数据库;
子模式只是与特定用户需求相关的那部分数据库的一个描述。
3、典型的数据库分层两个主要的层:应用层和数据库管理层
应用软件并不直接操纵数据库,而是由数据库管理系统软件来完成。
应用软件与数据库管理系统分离的好处:
(1)允许构建和使用抽象工具,数据库实际如何存放数据这样一个细节被数据库管理系统屏蔽,那应用软件的设计就可以大大简化;
(2)这样的结构提供了对数据库访问进行控制的一种手段;这样DBMS就能实施由不同子模式确定的限制。
(3)为了获得数据独立性,即改变数据库组织本身而不改变应用软件能力。
4、数据库模型
(1)关系模型:用矩形表格存放数据,类似于电子制表程序显示信息的 格式。
关系中的一行称为一个元组,列称为属性
5、传统的文件结构
(1)顺序文件:从头到尾都是以顺序的方式进行访问的,好像文件中的信息都排成一行。这种文件的例子有音频文件、视频文件、包含程序的文件和包含文本文档的文件。
顺序文件处理中的一个固有问题就是必须要检测何时到达文件的末尾,通常我们把顺序文件的末尾称之为文件结束EOF,有许多方法可以用来标识EOF,一种方法是在文件的末尾放置一个专用的标记,称为哨兵;另一种方法就是利用操作系统的目录系统中的信息来确定一个文件的EOF,也就是说,由于操作系统知道哪个扇区包含有此文件,它也就知道这个文件什么地方结束。
(2)索引文件:使用文件索引,这种方式与书本里的索引定位主题在书中位置的方式非常一致,这样一种文件系统称之为索引文件;
文件的索引包含存放在该文件中的见的列表和指示包含每个键的记录存放位置的项;这样一来,为了找到某个记录,首先需要在索引中找到指定的键,然后再读取存放在与该键相关联的信息块。
(3)散列文件:数据存储空间被分成几个区,称为存储桶,每个桶能放几条记录,根据一个将键的值转换为桶号的算法,可以将记录分散存放在这些桶中,这里,将键的值转换为桶号的算法称为散列函数。因此要检索一条已经置于这种存储结构中的记录,首先要把散列函数作用于该条记录的标识符,以确定相应的桶,然后检索桶中内容,最后从检索的数据中查找所需要的记录。
散列不仅能用于从海量存储器中检索数据,也是从存放在主存的大数据块中检索数据项的一种方法。
当散列用在海量存储器中的存储结构时,其结果称为散列文件;
当散列用在主存中的存储结构时,其结果通常称为散列表;
只要记录的数目与文件中总的记录容量之比即负载因子保持在50%之下,那么散列文件就会表现良好的性能;但是负载因子超过75%,系统的性能就会降低;
所以,通过散列系统来获得记录检索的高效率是需要花费一定代价的。
6、数据挖掘
(1)数据挖掘活动与传统的数据库查询不同,原因在于数据挖掘所做的工作是寻找确定以前未知的模式,而传统数据库需要做的只是检索已经存储好了的事实。
此外,数据挖掘操作的是静态的数据集合,称为数据仓库,而不是经常要更新的联机运行的数据库。
(2)数据挖掘有两种常见的形式:类型描述和类型识别
类型描述是用来确定一组数据项的属性,
类型识别是区分两组数据项的属性。
数据挖掘的另外一种形式是聚类分析:聚类分析试图找到那些引导发现组群的数据项的特性。
数据挖掘还有一种形式:关联分析:他是寻找数据组之间的联系。
孤立点分析:试图识别出不符合规则的数据项,用于确定数据集中的错误
序列模式分析:试图确定随时间变化的行为模式。
*****************************************************************************************************************************************************************************************
2013年2月4日更新
*****************************************************************************************************************************************************************************************
十:计算机图形学
1、计算机图形学愈来愈多的被用来指一个称之为3D图形学的特定领域;
2、处理平面二维图形和图像的操作有两个相关领域:一个是2D图形学,一个是图像处理
二者的区别是:2D图形学着重于把二维图形转化为像素模式,产生图像;而图像处理着重分析图像中的像素,进行模式识别,以达到增强或理解图像的目的。
简言之,就是2D图形学处理生成图像,而图像处理分析图像。
3、3D图形学:将三维图形转化为图像,过程是:建造三维场景的模型,然后模拟照相的过程,产生这些场景的图像;
使用3D图形创建图像要经历两个不同的步骤:
一是创建、编码、存储以及操作被拍摄出来的场景;
另一个是生成图像的过程;前者是创造性、艺术的过程;而后者则是以计算为主的过程。
4、创建3D图形的过程
(1)建模
与传统电影产业中的设计和构造一个场景类似,不同之处在于3D图形场景是用数据结构和算法构造的,所以构造出来的场景永远不存在;
(2)渲染
通过计算场景中的物体如何显示在由特定位置的相机拍摄的照片中,来生成场景的二维图像,即渲染;渲染的概念是运用解析几何,来计算场景中的物体到一个称为投影平面的面上会形成的投影,这种方式与相机将场景投影到胶卷上的方式类似,这种投影称为透视投影;在这种投影方式下,所有的目标都沿着一条称为投影线的直线向前延伸,这条直线是从一个投影中心或者视点的公共点延伸出来的;这与平行投影不同,顾名思义,平行投影线是平行的,透视投影产生的投影类似于人类眼睛所看到的,而平行投影产生的是物体“真正”的剖面。
用来定义最终图像边界的投影平面,其中受限的部分称为图像窗口。它对应于显示在大多数相机取景器上的矩形,指明潜在图像的边界;实际上,大多数相机的取景器允许用户看到相机投影平面上更大的区域,而不仅仅是图像窗口;
一旦投影到图像窗口的场景确定,就可以计算出最终图像上每个像素点的显示情况,这种逐个像素的计算过程可能会很复杂,因为他需要确定场景中的物体如何与光线融合。
(3)显示
当确定每个像素的显示方式后,结果被集中的表示成图像的位图,并存储在称为帧缓冲区的存储区中,这个缓冲区可能是主存中的一个区域,或当有专门处理图形应用的硬件时,他可能是专用存储电路中的一个快。
最后,存储在帧缓冲区的图像或者为了观看而显示,或者为以后的显示而传送给更永久的存储器。如果生成的图像将用于电影画面,那他可能在最终显示前被存储或者甚至是被修改。
5、建模
在计算机图形学中,布景称为场景,道具称为物体。3D图形场景是虚拟的,因为组成它的物体是由数字化模型构建而成的,并不是实际的物理结构。
(1)单个物体的建模
形状:
在3D图形物体的形状通常描述成称为平面片的小平面的集合,其中每一个都是一个多边形;这些多边形形成了多边形网格,它近似于被描述的物体形状,通过使用小平面片,近似可以达到所需要的精确度。
多边形网格中的平面片通常选择为三角形,因为每个三角形能用它的3个定见来表示,这个在三维空间中确定一个平面所需的最少点的数目;在任何情况下,多边形网格都表示成这些平面片定点的集合。
分型:是Hausdorff维度大于其拓扑维度的几何物体,直观上讲,这意味着物体是通过低纬度物体的副本打包形成的。
分形在3D图形领域经常是程序化模型的主干;实际上,他们已经被用来生成逼真的山脉、蔬菜、云和烟等图像。
另一种构建程序化模型方法是将物体的基础结构模拟为一个大的粒子集合,这种模型称为粒子系统,粒子系统通常会应用某些预定义的规则去移动系统中的粒子,来生成所需的形状。
程序化模型的输出通常是近似于物体形状的多边形网格。
表面特征:
仅由多边形网格构成的模型只捕获了物体的形状;
寻求逼真:
(2)整个场景的建模
一个场景中的物体已经得到充分的描述和数字化,他们就被赋予了场景内的位置、大小和方向,将这些信息集合并连接起来形成一个数据结构,称为场景图。
此外,场景图还包含了与表示光源及相机的特殊物体的链接,其中记录了相机的位置、方向和焦点等。
6、渲染
渲染决定了当场景图中的物体投影到投影平面时,将如何显示。
(1)光-表面交互
反射
折射
(2)裁剪、扫描转化和隐藏面的消除
现在着重考虑从场景图生成图像的过程,目前使用的方法正是在大多数交互式视频游戏系统中使用的技术;综合应用这些技术,形成一个效果较好的方法,称为渲染流水线。
渲染流水线首先确定包含相机能看到的物体的三维场景的区域,这个区域称为视体,它是角锥内的一个空间,这个角锥是由从投影中心发向图像窗口边界延伸的直线所定义的。
一旦视体被确定,接下来就不用考虑那些与视体不相交的物体或物体部分了,毕竟,那部分的场景投影将落在图像窗口的外面,因此不会出现在最终的图像中;第一步就是去除完全在视体外面的物体。
确定和去除那些与视体不相交的物体后,剩余的物体通过称为裁剪的操作加以整理,它实际上就是去掉每个物体处在视体外面的部分。
渲染流水线的下一步是确定剩余平面片的点;这些点与最终图像中的像素位置相对应,只有这些点将会对最终图像产生影响,认识到这一点是很重要的。
把像素位置与场景中的点相关联的过程称为扫描转换,因为它涉及到把面片转化为水平的一行像素点,称为扫描线或光栅化,因为一组像素称为光栅。
扫描转换时从投影中心出发穿过图像窗口汇总的每个像素的射线来完成的,然后找到这些投影线与平面片的焦点,最后,更具这些焦点我们得到物体在图像上的显示;实际上,这些点在最终图像上是基于像素显示的。
识别和去除场景中被遮挡的点的处理称为隐藏面消除。
隐藏面消除的一个具体方法是使用后面消除法,也就是不考虑那些在多边形网格中表示物体后面的面片。
解决“前景/后景”问题的一个简单办法就是画家算法:就是根据相机到物体的距离,在场景中一次放置物体,然后先扫描转换最远的物体,允许较近的物体的扫描转换结果覆盖先前的任何结果。
对于前景/后景问题的更彻底的解决方案是集中考虑单个像素,而不是整个场景。一种常用的技术就是使用一个称为Z缓冲区的额外存储区域,它包含图像中每个像素的通道。
(3)着色
一旦扫描转换已经确定了要显示在最终图像中的平面片上的点之后,渲染任务就变成了决定这些点的显示方式的处理。这个过程称为着色。
*****************************************************************************************************************************************************************************************
2013年2月5日更新
*****************************************************************************************************************************************************************************************
十一、人工智能
1、图灵测试:允许一个人与一个测试对象通过一个打字机系统进行通信,而没有告知询问者测试对象究竟是一个人还是一台机器,在这环境中,如果询问者没能够把一台机器与一个人区分开来,可以宣称这台机器的行为是智能的。
2、理解图像的任务通常采取两步进行处理:
(1)图像处理:指标识图像的特征
(2)图像分析:指对这些特征代表什么意思的理解过程。
图像处理的研究主题包括
(1)轮廓增强:使用数学技术使图像中区域间的边界线变得更清晰。
(2)滤波:使图像中存在的错误不会混淆其他图像处理步骤,即去除图像中缺陷的过程,但是太多的滤波会导致重要信息的丢失。
图像分析是确定这些特征代表什么,一个方法是开始假定一个图像大概是什么,然后尝试把图像中的成分与那些猜测的对象相联系。
3、语言处理
理解语言是感知问题的另一个已证明的具有挑战性的问题。要弄明白一种自然语言中的一个句子的意思需要几个层次的分析:
(1)第一层是语法分析,其主要成分是语法分析。
(2)第二层是语义分析。语法分析仅标识每个词法上的作用,与语法分析不同,语义分析担负的任务是标识句子中的每个词在语义上的作用。
(3)第三层上下文分析。
4、自然语言处理的另一个研究领域关系到整个文档,而不是单个句子。
这里涉及到的问题分为两类:信息检索和信息提取。
信息检索的任务是标识与手头论题有关的文档;
信息提取是指从文档中提取信息这样的任务,并采用一种形式以方便用于其他应用程序。
5、推理
有一大类推理问题具有共性,这些共性被孤立在一个抽象的实体中,该实体称为产生式系统,这种系统由三个主要部分组成:
(1)状态集合:开始状态、目标状态
(2)产生式集合:产生式是指能在应用环境中执行的一个操作,并使系统从一个状态转移到另一个状态。
(3)控制系统:是由解决问题使其从开始状态到目标状态的逻辑组成的。
6、搜索树
在产生式系统的环境中,控制系统的工作涉及到搜索状态图,找出从开始节点到目的节点的一条路径。
这种策略的结果实际上是建立一个树,称作搜索树,它由被控制系统分析后得到的部分状态图构成。
7、启发
改变搜索构建的次序:不用广度优先的方式,而采用最佳优先结构,在搜索中被选中的垂直路径是看起来能提供最好潜能的。
对于一个目标来说,我们需要一个方法来鉴别几个状态中哪一个看上去是最有希望的:我们的方法是采用启发,这是每个状态赋予的一个量化值,用来衡量这个状态与最近目标之间的距离。
一个启发值应具备两个特征:
第一个,如果达到相应的状态,它必须包含一个在所关联的状态到达后离最终解决还剩余工作量的合理估计。
第二个,启发值应容易计算。
8、人工资能的另外两个主题:知识处理和学习。
学习:
第一层是模仿
第二层是监督学习
第三层是强化学习
与开发单一智能体的学习技术相对应,另外一种对学习进行研究的方向是开发一种智能体的后代能够通过进化过程来学习的技术。这个领域成为遗传算法,它搜索如何把自然进化理论用在智能体的开发上,其目标是通过应用适者生存法则设计问题的解决方法。
9、人工神经网络
(1)处理单元:人工神经网络由许多单个的处理器以模仿活的生物体神经元网络的方式构成,这些处理器称为处理单元。
人工神经网络的一个处理单元是模仿对生物神经元这种基本了解的一个简单装置,根据其有效输入是否超过了一个给定的值(即阈值)产生0或1作为输出。
*****************************************************************************************************************************************************************************************
2013年2月6日更新
*****************************************************************************************************************************************************************************************