计算机基础知识(第二篇)
嵌入式技术
嵌入式技术
特点:专用性、实时性、低成本、可靠性、体积小
应用:汽车电子、家用电器、通信设备、安防监控、工业自动化、医疗设备
体系结构:
- 冯诺依曼结构:传统计算机系统的基本架构,也是普林斯顿结构,程序和数据公用一个存储空间。
- 哈佛结构:程序和数据存储在不同的存储空间,允许并行处理程序指令和数据,提高速度。
微处理器分类
用途分类:
- 微控制器(MCU):32位以上的处理器,有较高的性能,价格也相应较高,适用于简单控制与接口。
- 微处理器(MPU):性能较高,运算能力强,适用于高性能控制与应用。
- 数字信号处理器(DSP):性能强大,如语音、音频、图像的处理,适合大量运算。
- 片上系统(SoC):MCU/MPU核、内存、外设集成在一片芯片上,适用于便携设备。
多核处理器
将两个或更多的微处理器内核封装在一个芯片内,提升计算能力,节省空间。
工作协调实现方式:对称多处理技术、非对称处理技术、粗粒度多处理技术
多核CPU的调度方法:全局队列调度、局部队列调度
嵌入式软件
嵌入式软件是专门应用于嵌入式计算机系统中的软件,它不仅具有通用软件的通用特性,还具备许多与嵌入式系统特定的独特特点:规模小、开发难度大、实时性和可靠性要求高、要求固化存储。
分为:系统软件、应用软件、支撑软件
板级支持包 (BSP)
介于主板硬件和操作系统中驱动层程序之间的一层,属于系设备驱动层,主要负责底层硬件资源的管理和控制,提供给上层软件使用。主要目的为了屏蔽底层硬件的多样性。
特点:硬件相关性、操作系统相关性
BSP主要包括以下两个方面的内容:
- 引导加载程序 (BootLoader):负责在系统启动时初始化硬件设备、加载操作系统到内存,并启动操作系统的执行。
- 设备驱动程序:用于控制和管理各种硬件设备。
引导加载程序BootLoader
是嵌入式系统中在加电后首先运行的一段软件代码,它在操作系统内核运行之前执行。初始化的步骤:片级初始化 - 板级初始化 - 加载内核(系统级初始化)
设备驱动程序
用于管理和控制系统的具体硬件设备,为上层应用软件提供统一的设备接口和访问机制。驱动程序需要包含OS相关内容,根据OS的驱动模型编写,并通过OS提供的接口访问硬件资源。
嵌入式系统
组成包括嵌入式处理器、相关支撑硬件、嵌入式操作系统、支撑软件以及应用软件。
特点:专用性强、技术融合、软硬一体、软件为主、资源较少、程序固化、需专门开发工具和环境、体积小、价格低、工艺先进、性能价格比高、系统配置要求低、实时性强、高安全性和可靠性要求。
分层结构:硬件层、抽象层、操作系统层、中间件层、应用层
嵌入式数据库系统EOS
特点:微型化、代码质量高、专业化、实时性强、可裁减和可配置
实时操作系统(RTOS)
特点:完全嵌入性、可预测性、确定性
实时操作系统的特征
高精度计时系统、多级中断机制、实时调度机制
嵌入式软件
交叉平台:运行在宿主机的强有力的交叉开发工具和实用程序、运行在目标机上的高性能、可裁剪的实时操作系统。
交叉编译:嵌入式软件开发中一个关键的技术。它涉及在一个平台(宿主机)上编译出另一个平台(目标机)上可以执行的代码。
交叉调试:允许开发者在宿主机上调试运行在目标机上的软件。这一过程与传统软件开发中的调试存在显著差异,主要体现在调试环境和方法上。
软件开发工具:帮助软件开发者进行有效编程、调试、维护、测试和管理应用程序的软件。
嵌入式软件开发:
- 编辑器:用于编写嵌入式源代码程序。如:集成开发环境(IDE)
- 交叉编译:将源代码编译成在目标机上运行的可执行文件的过程。如:gcc
- 交叉调试:调试过程涉及在宿主机上运行调试器,而被调试的程序则运行在目标机上。如:gdb
系统配置与性能评价
性能指标
计算机性能指标:
时钟频率、运算速度、运算精度、内存的存储容量、存储器的存取周期、数据处理速率、吞吐率、各种响应时间、CPU利用率、内存利用率、RASIS特性(可靠性、可用性、可维护性、完整性、安全性 )、平均故障响应时间、兼容性、可扩充性性、性能价格比。
路由器性能指标:
设备吞吐量、端口吞吐量、全双工线速转发能力、背靠背帧数、路由表能力、丢包率、时延、时延抖动、VPN支持能力、端口硬件队列数、CAR支持、路由器冗余协议、网管、网管类型、计费能力/协议、端口密度。
交换机性能指标:
交换机类型、配置、支持的网络类型、最大ATM端口数、最大SONET端口数、最大FDDI端口数、背板吞吐量、缓冲区大小、最大MAC地址表大小、支持协议和标准、路由信息协议 (RIP)、路由、支持多协议路由、支持最大路由表数、VLAN、支持端口链路聚集协议、负载均衡。
网络评价性能指标:
设备级(处理能力、可靠性、扩展性)、网络级(带宽、吞吐量、丢包率)、应用级(响应时间、并发用户数)、用户级性能指标(系统可用性、用户满意度)
操作系统评价性能指标:
系统的可靠性、系统的吞吐率、系统响应时间、系统资源利用率、可移植性
数据库管理系统性能指标:
数据库本身的特性:数据库的大小、数据库表中表的数量、单个表的大小、行记录、单行的大小、表中索引数量、允许的索引数量
管理系统的能力:最大并发事务处理能力、负载均衡能力、最大连接数能力。
WEB服务器评价性能指标:
最大并发连接数、响应延迟、吞吐性能指标
性能评价方法
基准测试
基准测试是通过运行一组预定的测试程序集合来评估系统性能的方法。这些测试程序模拟了不同的工作负载和使用模式,以评估系统在特定条件下的性能。
性能评测的常用方法:时钟频率、指令执行速度、等效指令速度法、数据处理速率 (PDR) 方法
基准程序法:整数测试程序、浮点测试程序、 SPEC基准程序、TPC基准程序
性能评测程序的准确度排序:真实的程序 - 核心的程序 - 小型基准程序 - 合成基准程序
阿姆达尔解决方法
阿姆达尔法则是一种用于预测计算机程序或系统改进后的理论最大性能提升的方法。
信息系统
信息系统是由计算机硬件、网络和通信设备、计算机软件、信息资源、信息用户和规章制度组成的以处理信息流为目的的人机一体化系统。
诺兰模型:
- 初始阶段:计算机作为办公设备使用,应用非常有限
- 传播阶段:企业对计算机有一定了解,开始利用计算机解决工作中的问题,例如数据处理。
- 控制阶段:企业开始全面控制计算机信息系统的发展,解决数据共享问题,但系统和资源利用率较低。
- 集成阶段:企业重新规划设计,建立基础数据库,实现资源信息集成共享。
- 数据管理阶段:企业意识到信息战略的重要性,信息成为重要资源,信息化建设进入数据处理阶段,实现资源整合和信息共享。
- 成熟阶段:信息系统可以满足企业各层次需求,从事务处理到支持高效管理的决策,将IT与管理过程结合起来。
信息系统的分类
业务处理系统TPS
电子数据处理系统,是信息系统的最初级形式,主要用于辅助管理人员记录、传票、记账、统计和分类等日常管理事务(如财会、销售、库存等),并据此制成报表,为经营决策提供有效信息。TPS是基于计算机的信息系统,其主要功能包括数据的输入、处理、维护、以及输出。
管理信息系统(MIS)
管理信息系统是由业务处理系统发展而成的,它通过引入大量管理方法对企业整体信息进行处理,并利用信息进行预测、控制、计划,以及辅助企业全面管理的信息系统。
管理信息系统的组成:总体销售市场子系统、生产子系统、后勤子系统、人事子系统、财务和会计子系统、信息处理子系统、高层管理子系统。
决策支持系统(DSS)
帮助决策者在复杂问题或未结构化问题中做出决策。它结合了数据、模型、分析工具和用户界面,以提供决策所需的信息和支持。
特点:面向决策者、支持半结构化问题、辅助决策者、动态性体现、交互式处理。
专家系统(ES)
基于知识的专家系统,它是人工智能领域的一个重要分支,其核心能力源自于其拥有的专家知识,并且其知识的表示和推理方法为应用提供了机理。
特点:超越时间限制、操作成本低廉、易于传递与复制、处理手段一致、不会因人而异、善于克服难题、适用特定领域
组成:知识库、综合数据库、推理机、知识获取、解释程序、人机接口
应用场景:医疗诊断、金融规划、故障诊断与维修、烹饪食谱推荐
办公自动化系统(OAS)
人机结合的综合性的办公事务管理系统,或称办公事务处理系统。
组成:文档处理、通讯、日程安排和时间管理、数据库管理、办公设备集成、安全和权限控制、报表和数据分析
OAS的主要功能:事务处理、信息管理、辅助决策
综合性信息系统:
- ERP系统:主要管理公司的各种资源,处理进销存、供应链、生产计划MPS、MRP计算、生产订单、管理会计,是财务数据的强力支撑。
- WMS系统:库房货位管理,包括收发料、扫码进出库、库龄管理等内容。
- MES系统:负责生产过程和生产过程中防呆、自动化设备集成,是各个客户审核的重点,是生产全流程管控,核心在于生产过程、生产工艺、生产设备、自动化生产的直接管理。
- PDM系统:管理研发阶段的物料、BOM、工程变更数据,主要涉及产品研发全过程管理,如协同研发等能力。
ERP系统
企业资源规划(ERP)是以信息技术为基础,结合系统化的管理思想创建的管理平台。它的目标是为企业的决策和日常运营提供支持。ERP系统通过集成和整合企业的所有资源,实现对这些资源的全面和一体化管理。
企业的四大资源:
- 物流:涉及物流管理,确保物品和服务从起点流向消费点的过程得到有效管理。
- 资金流:涉及财务管理,关注资金的筹集、分配和使用,保持资金流动性和健康的财务状况。
- 信息流:涉及生产控制管理,确保信息在企业内部流动,以支持决策制定和各项业务的执行。
- 人力资源:涉及人力资源管理,包括招聘、培训、薪酬福利和绩效管理等,确保企业能够吸引、保留和发展具有竞争力的员工队伍。
ERP中的11个模块:
生产预测:市场需求预测、计划层次。
销售管理:涉及企业销售部门的各项活动,包括客户订单处理、销售预测、销售策略实施等。
生产计划:经营计划(生产计划大纲)、主生产计划。
物料需求计划(MRP):网络支持计划和时间进度。
能力需求计划(CRP):能力核算与管理。
车间作业计划:产生加工订单。
采购与库存管理:采购管理模块、库存管理模块、
质量与设备管理:质量管理、设备管理。
财务管理:会计工作、财务活动。
ERP扩展应用模块:客户关系管理(CRM)、分销资源管理(DRM)、供应链管理(SCM)、电子商务
信息系统阶段
- 第一阶段:信息系统的产生阶段(概念的产生过程、需求分析过程)
- 第二阶段:信息系统的开发阶段(总体规划阶段、系统分析、系统设计、系统实施、系统验收)
- 第三阶段:信息系统的运行阶段(系统维护)
- 第四阶段:信息系统的消亡阶段(意系统的消亡条件和时机,以及相关成本)
信息系统主要原则
- 高层管理人员介入原则
- 用户参与开发原则
- 自顶向下规划原则
- 工程化原则
- 其他原则(创新性、整体性、发展性、经济性)
信息系统的开发方法
常见的信息系统开发方法包括:瀑布模型、原型模型、增量模型、增量模型、敏捷开发、融合开发方法
信息系统的开发方法
-
结构化方法:将软件开发过程划分为若干个阶段和步骤,每个阶段有明确的输入和输出,以及采用特定的技术或表示方式来描述各个阶段的工作成果。
主要阶段有:需求分析阶段、概要设计阶段、详细设计阶段、根据详细设计文档、测试阶段、部署阶段。
特点:开发目标清晰化、开发工作阶段化、开发文档规范化、设计方法结构化
不足和局限:开发周期长、难以适应需求变化、很少考虑数据结构
-
原型化方法:展示给用户,并与用户交流,最终实现用户需求的信息系统快速开发。
优点:缩短系统开发周期、降低成本和风险、加快开发速度、提高综合开发效益、提高用户满意度、有利于系统移交
不足和局限:要求开发环境和管理水平高、适用于需求不明确,对于分析层面难度大、技术层面难度不大的系统
-
面向对象的方法:每一个事物都是对象,具有自己的运动规律和内部状态。
特点:复用性、阶段划分、普适性
不足和局限:面向对象方法必须依赖于相应的面向对象技术支持,通常将结构化方法和面向对象方法结合起来使用。
-
面向服务的方法:将接口的定义与实现进行解耦的开发方法,它引入了服务和面向服务的概念。
面向服务开发的思想是将系统分割成不同的服务,每个服务完成一项业务功能,服务之间通过开放接口进行交互。例如,新增业务时可以调用已有服务,无需从头开发。
政府信息化和电子政务
电子政务实质:是利用信息技术对传统的政府形态进行现代化改造。
组成:政府内部的电子化办公、政府部门间的信息共享和实时通信、政府部门间的信息共享和实时通信
电子政务交互方向
电子政务的交互主要分为五个方向,分别是政府到政府(G2G)、政府到企业(G2B)、政府到公众(G2C)、企业到政府(B2G)和公众到政府(C2G)
企业信息化
企业信息化方法:业务流程重构方法、核心业务应用方法、信息系统建设方法、主题数据库方法、资源管理方法、人力资本投资方法
数据库设计
数据库系统是一种用于存储、管理、处理和检索数据的系统。
核心组成:数据库、数据库管理系统、数据库模式(视图和索引)、数据语言(SQL)
数据库系统分为:
- 关系型数据库系统:Oracle, MySQL
- 非关系型数据库系统:MongoDB, Redis
- 对象数据库系统:存储对象数据,而不是数据表
- 分布式数据库系统:数据分布在多个网络节点上
数据库系统有核心部分:数据库、硬件、软件(数据库管理系统)、人员(DBA)
三级模式两级映像
数据库管理系统从三个层次来管理数据:外部层、概念层、内部层。这三个层次分别对应三种不同类型的模式,分别是外模式、概念模式、内模式。在外模式与概念模式之间,以及概念模式与内模式之间,还存在映像,即二级映像。
三级模式
概念模式:描述整个数据库的逻辑结构和关系,概念模式起着连接外部模式(用户视图)和内部模式(数据库存储结构)之间的桥梁作用,由数据库设计人员或数据库管理员定义和管理,创建表结构。
内模式:描述数据在物理存储介质上的存储方式和组织结构,数据在磁盘上存储,内模式也是数据库系统中的最底层,通过概念模式和外模式来操作和访问数据。
外模式:指的是用户能够看到和操作的数据的逻辑结构和表示方式,外模式是用户与数据库系统交互的接口,如:视图,一个数据库中会有多个外模式,而概念模式和内模式则只有一个。
两级映像
外部层与概念层的产生:外模式/概念模式映像;概念层与内部层的产生:概念模式/内模式映像。
通过二级映像,体现了逻辑和物理两个层面的数据独立性。
逻辑独立性:外模式/概念模式映像体现了逻辑独立性,概念模式这里发生变化,不会要影响外模式(视图)。
物理独立性:概念模式/内模式映像体现了物理独立性,更改数据库,不会影响原有的概念模式。
数据库设计
1. 需求分析:
即分析数据存储的要求,产出物有数据流图、数据字典、需求说明书。获得用户对系统的三个要求:信息要求、处理要求、系统要求。
通过需求分析,可以更好地理解用户的需求,为系统设计和开发提供清晰的方向和指导。数据流图、数据字典和需求说明书是帮助记录和沟通需求分析结果的重要工具,可以帮助团队成员理解和实现用户需求。
2. 概念结构设计:
就是设计E-R图,也即实体﹣联系图。工作步骤包括选择局部应用、逐一设计分E-R图和合并E-R图。在分E-R图进行合并时,它们之间存在的冲突主要有以下三类:
- 属性冲突:同一属性可能会存在于不同的分E-R图中。
- 命名冲突:相同意义的属性,在不同的分E-R图上有着不同的命名,或是名称相同的属性在不同的分E-R图中代表着不同的意义。
- 结构冲突:同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体而在另一分E-R图中又被抽象为属性。
3. 逻辑结构设计:
将E-R图,转换成关系模式。工作步骤包括:确定数据模型、将E-R图转换成为指定的数据模型、确定完整性约束和确定用户视图。 模式。
4. 物理设计:
步骤包括确定数据分布、存储结构和访问方式。其步骤包括:确定数据分布、确定存储结构、确定访问方式。
5. 数据库实施阶段:
根据逻辑设计和物理设计阶段的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
6. 数据库运行和维护阶段:
数据库应用系统经过试运行即可投入运行,但该阶段需要不断地对系统进行评价、调整与修改。
数据库模型
数据库模型三要素:数据结构(对象类型的集合)、数据操作(执行操作的集合)、数据约束条件(完整规则集合)
关系模型:采用二维表格的形式来表示数据,基于实体-联系模型(ER模型)转换而来的。
概念模型:表示为实体-联系模型,通过图形化的ER图来表达。
网状模型:表示为复杂的网络结构。
面向对象模型:基于面向对象编程的概念,以对象为单位进行数据库设计。
E-R:描述概念数据模型,世界是由一组称作实体的基本对象和这些对象之间的联系构成的。
二维表:在关系模型中,数据的逻辑结构是一张二维表,由行列组成,用表格结构来表达实体集,并通过外键来标识实体。
E-R模型转换为关系模型:E-R模型转换为关系模型是为了适应关系数据库的处理需求。由于E-R图是一种全局设计概念,不适合直接用于计算机处理,因此必须将其转换为关系模型。
在E-R图中,联系分为三种类型:
- 1:1联系:可以作为一个属性放在任意的两端实体中,确保两端关联为1:1,也可以转换为一个单独的关系模式。
- 1:N联系:联系可以独立作为一个关系模式,或者在N端加入1端实体的主键。
- M:N联系:联系必须作为一个独立的关系模式,其主键是M和N端的联合主键。
关系代数
交并差集
并:结果是两张表中所有记录数合并,相同记录只显示一次。
交:结果是两张表中相同的记录。
差:S1-S2,结果是S1表中有而S2表中没有的那些记录。
笛卡尔积/投影/选择/自然连接
笛卡尔积:S1XS2,产生的结果包括S1和S2的所有属性列,并且S1中每条记录依次和S2中所有记录组合成一条记录,最终属性列为S1+52属性列,记录数为S1*52记录数。
投影(π):实际是按条件选择某关系模式中的某列,列也可以用数字表示。
选择(σ):实际是按条件选择某关系模式中的某条记录。
自然连接:显示全部的属性列,但是相同属性列只显示一次,显示两个关系模式中属性相同且值相同的记录。
函数依赖
函数依赖是数据库设计中描述表中不同字段之间关系的一种方式。如果一个字段的值可以由另一个字段的值唯一确定,那么就说存在一个函数依赖关系。
函数依赖:给定一个X,能唯一确定一个Y,就称X决定(确定)Y,或者说Y依赖于X。
例如:Y=X*X函数,此时X能确定Y的值,但是Y无法确定X的值,比x=2,=4,但是y=4无法确定x=2
函数依赖又可扩展以下两种规则:
- 部分函数依赖:部分函数依赖是指在一个关系模式中,一个非主属性(即非码属性)依赖于关系模式中的某个码的一部分,而不是整个码。
- 传递函数依赖:指的是当一个非主属性依赖于另一个非主属性,而这两个非主属性之间又通过主属性之间的依赖关系联系起来时,就存在传递依赖。
部分函数依赖举例:假设有一个关系模式R=(A,B,C),其中(A,B)是 R的码,如果某个非码属性(比如 C)只依赖于 R 的码中的一部分(比如A),而不是整个码(即(A,B}),那么我们说 C 对A 部分函数依赖(记为A->>C)。
传递函数依赖举例:假设有一个订单表(Orders),包含字段(订单号,客户ID,客户姓名,订单日期),并且存在以下函数依赖:订单号→客户ID、客户ID→客户姓名、订单号→订单日期,在这个例子中,"订单号"是"客户ID"和"订单日期"的候选键。存在传递函数依赖:订单号 → 客户ID → 客户姓名。这意味着如果我们知道订单号,我们可以确定客户ID,进而确定客户姓名。
函数依赖公理系统
函数依赖的公理系统是用来推导关系模式中所有可能的函数依赖的一组规则。
三条基本规则:
- 自反性规则(Reflexivity rule): 如果Y是X的一个子集,那么X可以决定Y。即,如果Y ⊆ X,则X → Y。
- 增强性规则(Augmentation rule): 如果X可以决定Y,那么X与任何其他属性集Z的联合也可以决定Y与Z的联合。即,如果X → Y,则对于任何属性集Z,有XZ → YZ。
- 传递性规则(Transitivity rule): 如果X可以决定Y,且Y可以决定Z,那么X也可以决定Z。即,如果X → Y 且 Y → Z,则X → Z。
根据上述3条推理规则又可推出下述3条推理规则:
- 合并集规则(Union rule): 如果X → Y 且 X → Z,则X → YZ。
- 分解规则(Decomposition rule): 如果X → YZ,则X → Y 且 X → Z。
- 伪传递性规则(Pseudo-transitivity rule): 如果X → Y 且 WY → Z,则XW → Z。
使用这些公理,数据库设计者可以推断出所有在关系模式中适用的函数依赖,这对于执行规范化过程并设计一个没有冗余和更新异常的数据库结构至关重要。通过应用这些规则,设计者可以确定数据应如何被组织成表格,以及这些表格如何相互关联。
键与约束
超键:能唯一标识记录的属性集合(可能不止一个)
候选键:最小的超键,用于作为主键(通常只有一个)
主属性:除候选键外的具有代表意义的非重复且非衍生属性
主键:任选一个候选键,即可作为主键。
外键:其他表中的主键。
实体完整性约束:实体完整性指的是数据库表的主键必须有唯一的值,不允许有重复的值。
参照完整性约束:确保了外键的值必须在其参照的那个表的主键中已经存在,或者外键的值可以是NULL(如果允许的话)。
用户自定义完整性约束:这类约束由数据库设计者根据业务规则自定义,用于确保数据满足特定的条件。
范式
第一范式:
要求数据库表中的所有字段都是不可分割的原子值。通俗地说,第一范式就是表中不允许有小表的存在。
第二范式:
在1 NF的基础上,要求数据库表中的每个非主属性完全依赖于某一个候选键。通俗地说,就是表中不能存在联合主键,按照定义,上面的学生表就不满足2NF,因为学号不能完全确定成绩(每个学生可以选多门课)。
解决方案:将学生表分解为:
- 学生(学号,学生姓名,系编号,系名,系主任)
- 选课(选课id,学号,课程号,成绩)。
第三范式:
在2NF的基础上,要求数据库表中的每个非主属性不依赖于其它非主属性。也就是说,数据表中的每一列都和主键直接相关,而不依赖于其它列,即不能存在传递依赖。既:A->B,再B->C,C->D,因此存在非主属性对主属性的传递依赖。
BC范式(BCNF)
BC范式(BCNF):规范化数据库设计的一种方法,它对关系型数据库中的表进行分解,其符合第三范式(3NF),同时尽量避免数据冗余和不一致性,提高数据的可靠性和完整性。
反规范化
反规范化技术:规范化设计后,数据库设计者希望牺牲部分规范化来提高性能。
采用反规范化技术的益处:降低连接操作的需求、降低外码和索引的数目,还可能减少表的数目,能够提高查询效率。可能带来的问题:数据的重复存储,浪费了磁盘空间;可能出现数据的完整性问题,为了保障数据的一致性,增加了数据维护的复杂性,会降低修改速度。
具体方式:
- 增加冗余列:在多个表中保留相同的列,通过增加数据冗余减少或避免查询时的连接操作。
- 增加派生列:在表中增加可以由本表或其它表中数据计算生成的列,减少查询时的连接操作并避免计算或使用集合函数。
- 重新组表,如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。
- 水平分割表:根据一列或多列数据的值,把数据放到多个独立的表中,主要用于表数据规模很大、表中数据相对独立或数据需要存放到多个介质上时使用。
- 垂直分割表:对表进行分割,将主键与部分列放到一个表中,主键与其它列放到另一个表中,在查询时减少I/0次数。
模式分解
模式分解:是关系数据库规范化设计中的一个重要概念。它指的是通过对关系模式进行拆分,来消除模式中的混合组合依赖,达到将模式分解为更小的模式的过程。一般分为以下两种:
是否保持函数依赖分解:
对于关系模式R,有依赖集F,若对R进行分解,分解出来的多个关系模式,保持原来的依赖集不变,则为保持函数依赖的分解。另外,注意要消除掉冗余依赖(如传递依赖)
有损无损分解:分解后的关系模式能够还原出原关系模式,就是无损分解,不能还原就是有损。
是否保持函数依赖:设原关系模式R(A,B,C),依赖集F(A->B,B->C,A->C),将其分解为两个关系模式R1(A,B)和R2(B,C),此时R1中保持依赖A->B,R2保持依赖B->C,说明分解后的R1和R2是保持函数依赖的分解,因为A->C这个函数依赖实际是一个冗余依赖,可以由前两个依赖传递得到,因此不需要管。
是否无损分解:如果R的分解为p=(R1,R2),F为R所满足的函数依赖集合,分解p具有无损连接性的充分必要条件是R1 NR2->(R1-R2)或者R1 NR2->(R2-R1)。
并发控制和封锁协议
事务:由一系列DML操作组成,这些操作,要么全做,要么全不做,它从第一个DML操作开始,rollback、commit或者DDL结束,拥有以下四种特性:原子性、一致性、隔离性、持续性。
事务是并发控制的前提条件,并发控制就是控制不同的事务并发执行,提高系统效率,但是并发控制中存在下面三个问题:
- 丢失更新:事务1对数据A进行了修改并写回,事务2也对A进行了修改并写回,导致事务2写回的数据覆盖了事务1写回的数据,从而丢失了事务1对A的更新。
- 不可重复读:事务2读取数据A,然后事务1对A进行了修改并写回,此时事务2再次读取A,发现数据不一致,导致出现不可重复的读取结果,即同一事务在不同时间读取相同数据得到的结果不同。
- 读脏数据:事务1对数据A进行了修改后,事务2读取了A,然后事务1回滚,导致数据A恢复到了原来的值,此时事务2读取到的数据是脏数据,因为事务2读取的数据已经不是最新的。
封锁协议
X锁是排它锁(写锁)。若事务T对数据对象A加上x锁,则只允许T读取和修改A,其他事务都不能再对A加任何类型的锁,直到T释放A上的锁。
S锁是共享锁(读锁)。若事务T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他事务只能再对A加S锁(也即能读不能修改),直到T释放A上的S锁。
共分为三级封锁协议:
- 一级封锁协议:事务在修改数据R之前必须先对其加X锁,直到事务结束才释放。可解决丢失更新问题。
- 二级封锁协议:一级封锁协议的基础上加上事务T在读数据R之前必须先对其加S锁,读完后即可释放S锁。可解决丢失更新、读脏数据问题。
- 三级封锁协议:一级封锁协议加上事务T在读取数据R之前先对其加S锁,直到事务结束才释放。可解决丢失更新、读脏数据、数据重复读问题。
SQL语言
DDL(数据定义语言)操作用于定义、修改或删除数据库的结构,包括创建、修改和删除数据库、表格、视图、索引等对象。
DML(数据操纵语言)操作用于对数据库中的数据进行操纵,包括插入、更新、删除。
DQL(数据查询语言)操作用于从数据库中检索数据,是SQL中最常见和重要的操作之一。
TCL(事务控制语言)操作用于管理数据库中的事务,包括提交事务、回滚事务和设置事务的保存点。
DCL(数据控制语言):用于管理数据库的权限和安全性。主要是GRANT和REVOKE语句。
应用程序与数据库交互
应用程序通过程序接口来访问数据库并进行操作。这种交互方式可以分为不同级别的接口:
- 库函数级别访问接口:是最底层的访问方式,比如使用OCI来访问数据库。开发效率低,依赖特定的数据库,学习难度高。
- 嵌入SQL访问接口:直接将SQL语句写入到程序源码中,需要数据库厂商提供一个嵌入式SQL的预编译器,以方便对SQL代码进行预编译并操作数据库。操作起来比较麻烦,需要和DBMS进行交互,而且性能也不高。
- 通用数据接口标准:如ODBC,为不同的数据库提供统一的接口,允许在程序中直接书写SQL语句进行数据库操作,而不需通过DBMS。但是直接使用ODBC比较麻烦,后来又发展出了DAO、RDO、ADO等数据库访问接口,以及专门为.NET使用的ADO和Java使用的JDBC。
- ORM访问接口:使用框架技术让对象和数据库中的表产生映射,让开发者直接操作对象就能修改表数据。典型的框架有Hibernate、MyBatis、JPA等,这种开发方式效率最高,降低了程序员对数据库知识的要求。
NoSQL数据库
NoSQL是指非关系型数据库,它可以区分于传统的关系型数据库,并且不保证关系型数据库的ACID特性。
NoSQL的分类包括:
列式存储数据库:数据按行列进行存储,通常用于应对分布式数据库的存储海量数据,例如HBase。
键值对存储数据库:以key-value的形式存储数据,简单易部署,例如Redis。
文档型数据库:类似于键值对数据库,但允许嵌套键值,处理复杂数据效率高,例如MongoDB。
图数据库:使用灵活的图形模型存储数据,适合存储通过图进行建模的数据,如社交网络、交通网络等,常见产品有Neo4J。
NoSQL的特征包括易拓展、适应大数据量、高性能、灵活的数据模型和高可用性。
NoSQL的框架分层从下至上包括数据持久层、数据分布层、数据逻辑模型层和接口层,这些层次相辅相成,协调工作。
NoSQL适用于数据模型简单、需要更强灵活性的系统、对数据性能要求高、不需要高度数据一致性的场景。
信息安全
信息安全基础是保护信息系统和数据免受未经授权的访问、使用、泄露、破坏或干扰的一系列基本措施和实践。它涵盖了一系列安全原则、技术、方法和流程,旨在确保信息资产的机密性、完整性和可用性。
信息安全包括5个基本要素:机密性、完整性、可用性、可控性与可审查性。
机密性:机密性指的是信息只能被授权的人员或实体访问,防止未经授权的人获取敏感信息。· 假设你要通过电子邮件发送包含敏感个人信息的文件给你的朋友。为确保机密性,你可以使用端到端加密的方式发送邮件,这样只有你和你的朋友能够解密和查看邮件的内容,其他人无法获取其中的信息。
完整性:确保信息在传输或存储过程中不被篡改或损坏,保持其准确性和完整性。 · 假设你是一家互联网银行的客户,你要发送一笔转账请求给银行。为确保请求的完整性,银行使用数字签名来对你的请求进行 签名。当银行收到请求后会验证数字签名的有效性,以确保请求没有被篡改,然后继续处理转账
可用性:确保信息和资源在需要时可供访问和使用,避免因服务中断或不可用性导致的损失。
可控性:是指对系统或信息进行管理和控制,确保只有授权的人员可以进行合法的操作。
可审查性:指对系统和操作进行监控和审查的能力,记录和跟踪系统中发生的事件,以便追查和解决安全问题
信息安全范围
设备安全:
设备的安全是信息系统安全的首要问题,是其物质基础。包括设备的稳定性、可靠性和可用性。确保信息系统设备不受到破坏、损坏或未经授权的访问,以维护系统的正常运行。
数据安全:
数据安全涉及采取措施确保数据免受未授权的泄露、篡改和毁坏。包括数据的秘密性(保护数据不被未经授权的人访问)、完整性(保护数据不被未经授权的修改)和可用性(保证数据在需要时可用)。
内容安全:
内容安全是信息安全在政治、法律和道德层面上的要求。包括信息内容的政治上健康(符合政治要求)、符合国家法律法规(遵守法律规定)和符合道德规范(遵循道德行为准则)。
行为安全:
信息系统的服务功能通过行为提供给用户,因此确保信息系统的行为安全至关重要。行为安全的特性包括行为的秘密性(保护行为不被未经授权的人知晓)、完整性(保护行为不被未经授权的修改)和可控性(确保行为受到合适的控制和管理)。
信息存储安全
信息使用的安全:
包括确保用户的身份验证和标识,以及限制用户的存取权限。这意味着只有经过验证的用户才能访问系统,并且他们只能访问其具有权限的信息和功能。
系统安全监控:
系统必须建立一套安全监控系统,全面监控系统的活动,并随时检查系统的使用情况。一旦有非法入侵者进入系统,应能及时发现并采取相应措施,填补安全和保密的漏洞。此外,应建立完善的审计系统和日志管理系统,利用日志和审计功能对系统进行安全监控。
计算机病毒防治:
计算机网络服务器必须加装网络病毒自动检测系统,以保护网络系统的安全,并防范计算机病毒的侵袭。必须定期更新网络病毒检测系统,以应对不断演变的威胁和新型病毒的出现。
信息安全技术
信息加密技术
对称加密技术:对称加密技术是一种加密算法,其特点是加密和解密所使用的密钥(也称为密码)是相同的。这种密钥只有发送方和接收方知道,在通信过程中不会公开传输。对称加密算法也称为不公开密钥加密算法。
非对称加密技术:也称为公钥加密技术,是一种加密方式,其中加密和解密所使用的密钥是不同的,分别为公钥和私钥。
数字信封:对称加密算法和非对称加密算法在加密数据过程中有各自的特点和适用场景,可以通过数字信封原理将两种技术组合使用,解决了密钥传输安全性的问题。
-
对称加密算法:
密钥长度较短,一般只有56位,加密过程简单。 适合加密大数据,但加密强度不高。
-
非对称加密算法:
密钥长度较长,一般有1024位,解密计算量庞大,难以破解。 不适合加密大数据,常用于加密对称算法的密钥。
-
数字信封原理:
数字信封是将对称加密的密钥通过非对称加密算法进行加密。 发送方使用对称密钥加密数据,同时将对称密钥用接收方公钥加密发送给对方。 接收方使用自己的私钥解密数字信封,取出对称密钥解密数据。
-
数字信封的作用:
数字信封运用了对称加密技术和非对称加密技术,实质上是保护对称密钥的传输安全性。 通过数字信封原理,解决了对称密钥传输的安全性问题,同时结合了两种加密技术的优点。
信息安全抗攻击技术
DOS拒绝服务攻击
密钥生成抗攻击因素:增大密钥空间、选择强密钥、密钥的随机性。
拒绝服务攻击类型:
- 内部用户发动攻击: 长时间占用系统资源,如内存、CPU,导致其他用户无法及时获取资源,引发拒绝服务攻击。
- 外部用户发动攻击: 包括消耗资源、破坏或更改配置信息、物理破坏或改变网络部件、利用服务程序中的处理错误等方式。
拒绝服务攻击的防御方式
-
特征识别: 加强对数据包的特征识别,识别攻击者发送的特征字符串以确定攻击位置。
-
防火墙监视: 设置防火墙监视端口的使用情况,发现监听状态可能意味着系统受到攻击。
-
通信数据量统计: 统计通信数据量,识别异常数据量来确定攻击来源。
-
修正问题和漏洞: 及时修正已知问题和系统漏洞,提升系统的安全性。
DNS欺骗
首先是冒充域名服务器,然后把查询的IP 地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了。也即改掉了域名和IP地址的对应关系。
DNS欺骗的检测:
- 被动监听检测:通过旁路监听的方式,捕获所有DNS请求和应答数据包,并为其建立一个请求应答映射表。如果在一定的时 间间隔内,一个请求对应两个或两个以上结果不同的应答包,则怀疑受到了DNS欺骗攻击。
- 虚假报文探测:采用主动发送探测包的手段来检测网络内是否存在DNS欺骗攻击者。如果向一个非DNS服务器发送请求包,正常来说不会收到任何应答,如果收到了应答包,则说明受到了攻击。
- 交叉检查查询:在客户端收到DNS应答包之后,向DNS 服务器反向查询应答包中返回的IP地址所对应的DNS名字,如果二者一致说明没有受到攻击,否则说明被欺骗。
端口扫描
端口扫描:端口扫描是指通过发送数据包到目标计算机或网络设备的各个端口,以检测哪些端口是开放的,并了解这些端口上运行的服务及其版本信息。其基本原理是:当一台计算机想要与另一台计算机上的特定服务进行通信时,它会向目标主机的相应端口发送数据包。如果目标端口是开放的,它会回应一个确认消息;如果端口是关闭的,通常不会有响应;而如果端口被防火墙过滤,可能会收到一个错误消息。端口扫描工具就是基于这一原理,通过大量发送数据包,并分析返回的结果,来判断端口的状态。
常见扫描方式:全连接扫描、半连接扫描(SYN扫描)和隐秘扫描(第三方肉鸡扫描)
常见扫描工具:
- Nmap:是一个开源的安全和端口扫描器,也是一个网络探索工具。它能够发现网络上的服务和主机,从而创建网络映射。该软件提供了多种功能,可帮助探测计算机网络、主机发现以及检测操作系统,还提供高级漏洞检测。
- Nessus:世界上最著名的漏洞扫描程序之一,由Tenable Network Security设计。它可以检测未打补丁的服务和错误配置、弱密码(默认和常用)以及各种系统漏洞。
- Metasploit:面向渗透测试的工具,网络安全专家可针对远程目标开发和执行漏洞利用代码。它本身是开源的,但专业版 Metasploit Pro需要付费购买。
DOS拒绝服务攻击
-
同步包风暴 (SYN Flooding):
攻击方式:利用TCP协议漏洞发送大量伪造的TCP连接请求,导致被攻击者资源耗尽。
防御方法:可通过修改注册表设置来防御SYN Flooding攻击,以减轻连接队列的压力,防止系统挂起。
-
ICMP攻击:
攻击方式:利用ICMP协议易受攻击的特点来攻击网络上的路由器和主机。 防御方法:可通过修改注册表设置来防御ICMP攻击,防止类似 “Ping of Death” 攻击,保护TCP/IP堆栈不受影响。
-
SNMP攻击:
攻击方式:利用SNMP协议控制设备、重定向通信流、改变数据包优先级甚至断开通信连接。
防御方法:可以通过修改注册表项等方式来强化对SNMP攻击的防御,以防止入侵者接管网络
信息安全的保证体系和评估方法
GB17859-999标准规定了计算机系统安全保护能力的五个等级:
第一级用户自主保护级:实现基本的用户隔离和自主访问控制。比如:个人电脑操作系统,通过账号密码隔离不同用户,用户只能访问自己的文件和进程。
第二级系统审计保护级:在第一级基础上实现更细粒度的访问控制和审计。比如:公司内部办公系统,有账号密码登录,对安全相关的登录、文件访问进行日志记录,对不同部门的数据访问设置权限控制。
第三级安全标记保护级:在第二级基础上实现安全标记和强制访问控制。比如:政府内部文件系统,对文件设置密级标记,用户的访问权限按照政策与文件标记相匹配判定,进行强制访问控制。
第四级结构化保护级:在第三级基础上实现形式化安全策略和对所有资源的访问控制。比如:军方信息系统,有多级安全策略模型,对所有用户身份、存储数据、网络资源等实施严格的强制访问控制。
第五级访问验证保护级:实现抗篡改的访问监控器,对单个用户的所有访问进行仲裁。比如:核设施监控系统,通过抗篡改的访问控制器验证每个用户每次访问的权限,拒绝非授权访问。
安全风险管理:
在风险评估实施前,应该考虑:
- 确定风险评估的范围 。
- 确定风险评估的目标。
- 建立适当的组织结构。
- 建立系统性的风险评估方法。
- 获得最高管理者对风险评估策划的批准。
风险评估的基本要素为脆弱性、资产、威胁、风险和安全措施,与这些要素相关的属性分别为业务战略、 资产价值、安全需求、安全事件和残余风险,这些也是风险评估要素的一部分。
风险计算的过程如下:
-
对信息资产进行识别, 并对资产赋值 。
-
对威胁进行分析, 并对威胁发生的可能性赋值。
-
识别信息资产的脆弱性,并对弱点的严重程度赋值。
-
根据威胁和脆弱性计算安全事件发生的可能性。
-
结合信息资产的重要性和发生安全事件的可能性,计算信息资产的风险值。