软考-数工
文章平均质量分 60
数工
厦门德仔
分享与交流:信息化建设、数字化转型、项目管理、流程梳理与再造、前后端开发、财务管理、数据库、网络、家庭教育与人生感悟等希望我的博客能带您愉快心情。
展开
-
[软考]2018-数据库-中级之路
[关于证书是否有用](https://blog.csdn.net/shuang1457/article/details/53958060)?这位兄台说的也是我想表达的自从2014年开始给自己定规矩:每年给自己定一个小目标并且去实现它。为何选择数据库工程师呢? 一是程序员在学生时代考过了 二是数据库目前打交道相对多点。权当做了一个知识的全面梳理和巩固吧。 备战过程: (1)心态:...原创 2018-07-09 12:42:42 · 7717 阅读 · 71 评论 -
[函数依赖]极小覆盖举例依赖
求F={A→B,B→A,B→C,A→C,C→A},最小(极小)函数依赖集合 数据库:求F={A→B,B→A,B→C,A→C,C→A},最小(极小)函数依赖集合 要解答此问题我们先来了解一下概念: 如果函数依赖集F满足以下条件,则称F为一个极小函数依赖集。也称为最小依赖集或最小覆盖。 (1)F中任一函数依赖的右部仅含有一个属性。 (2)F中不存在这样的函数依赖X→A,使得F与F-{X→A}...原创 2018-03-14 14:24:28 · 2374 阅读 · 0 评论 -
[数据结构]教你轻松计算AOE网关键路径
认识AOE网 有向图中,用顶点表示活动,用有向边表示活动之间开始的先后顺序,则称这种有向图为AOV网络;AOV网络可以反应任务完成的先后顺序(拓扑排序)。 在AOV网的边上加上权值表示完成该活动所需的时间,则称这样的AOV网为AOE网,如下图: 图中,顶点表示事件(能被触发,两特征属性:最早发生时间Ve(j);最晚发生时间Vl(j)),边表示活动(能被开始,两特征属性转载 2017-11-20 08:53:18 · 4059 阅读 · 0 评论 -
[数据结构]树、森林和二叉树的转换
树转换为二叉树(1)加线。在所有兄弟结点之间加一条连线。(2)去线。树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。(3)层次调整。以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子) 森林转换为二叉树(1)把每棵树转换为二叉树。(2)第一棵二叉树不动,从第二棵二叉树开始,依次把后一棵二转载 2017-11-15 16:03:55 · 477 阅读 · 0 评论 -
[数据结构]线索二叉树
1.引入线索二叉树 二叉树的遍历实质上是对一个非线性结构实现线性化的过程,使每一个节点(除第一个和最后一个外)在这些线性序列中有且仅有一个直接前驱和直接后继。但在二叉链表存储结构中,只能找到一个节点的左、右孩子信息,而不能直接得到节点在任一遍历序列中的前驱和后继信息。这些信息只有在遍历的动态过程中才能得到,因此,引入线索二叉树来保存这些从动态过程中得到的信息。 2.建立线索二叉树 为了保原创 2017-11-15 14:39:54 · 775 阅读 · 1 评论 -
[数据结构]循环队列中判断队满与队空
在引用循环队列前,我们需要了解队列是如何线性实现的。 简单地讲,便是当队列为空时,front = rear = 0,每当插入元素尾指针+1,删除元素是头指针-1。但是,我们会发现一个问题,如上面的第四个图,0,1,2三个空间并没有使用。因此,为了占用该空间,我们使用了循环队列来实现。 循环队列原理图: 我们可以发现,当循环队列属于上图的d1情况时,是无法判断当前状态是队空还是队满转载 2017-11-14 08:41:03 · 6122 阅读 · 2 评论 -
[数据库管理]-并发控制
一、并发操作中存在的问题事务并发执行会产生以下几个问题: 1. 丢失修改:两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改丢失。 2. 读“脏数据”:事务T1修改某一数据,并将其写回磁盘,事务T2读取同一数据后,T1由于某种原因撤销,这时T1修改过的数据恢复原值,T2得到的数据就与数据库中的数据不一致,则T2读到的数据就为“脏”数据,即不正确的数据。原创 2017-11-06 09:13:06 · 956 阅读 · 0 评论 -
[数据结构]树及树的遍历
八、树(Tree)树,顾名思义,长得像一棵树,不过通常我们画成一棵倒过来的树,根在上,叶在下。不说那么多了,图一看就懂:当然了,引入了树之后,就不得不引入树的一些概念,这些概念我照样尽量用图,谁会记那么多文字?树这种结构还可以表示成下面这种方式,可见树用来描述包含关系是很不错的,但这种包含关系不得出现交叉重叠区域,否则就不能用树描述了,看图:面试的时候我们经常被考到的是一种叫“二叉树”的结构,二叉转载 2017-07-01 14:10:34 · 617 阅读 · 0 评论 -
数据库闭包和候选码求解方法
闭包概念 以下是写的比较科学规范的闭包求解方法,设X和Y均为关系R的属性集的子集,F是R上的函数依赖集,若对R的任一属性集B,一旦X→B,必有B⊆Y,且对R的任一满足以上条件的属性集Y1 ,必有Y⊆Y1,此时称Y为属性集X在函数依赖集F下的闭包,记作X+。 计算关系R的属性集X的闭包的步骤如下: 第一步:设最终将成为闭包的属性集是Y,把Y初始化为X; 第二步:检查F中...转载 2015-05-22 09:48:05 · 2425 阅读 · 0 评论 -
数据流图懂不懂?
转自:http://www.cnblogs.com/spring5/archive/2012/04/29/2485238.html数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。(百科) 谈谈我的一点理解有时候我们要开发或者转载 2015-05-21 17:30:24 · 1625 阅读 · 0 评论 -
三种模式分解的等价定义
三种模式分解的等价定义原创 2015-05-21 14:42:11 · 2589 阅读 · 0 评论 -
【数据库】数据库规范化-范式
数据库规范化-范式原创 2015-05-21 14:40:09 · 1851 阅读 · 1 评论 -
轻松理解数据库三范式
轻松理解数据库三范式一 范式1NF 1、 数据库表的每一行都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。 2、 表的每一行包含一个实例的信息。二 第二范式2NF 1、 要求数据库表中的每个实例或行必须是唯一的。为实现区原创 2015-05-20 15:44:21 · 1526 阅读 · 0 评论 -
[操作系统]软考题:07年上半年数工上午第26,27题
某虚拟存储系统采用最近最少使用(LRU分配)页面淘汰算法,假定系统为每个作业分配3个页面的主存空间,其中一个页面用来存放程序。现有某作业的部分语句如下:var..A: Array[1..150,1..100] OF integer; i,j: integer; FOR i:=1 to 150 DO FOR j:=1 to 100 DO A[i,j]:=0;设每个页面原创 2015-04-29 11:15:47 · 1667 阅读 · 0 评论 -
海明校验码的原理详解
海明校验码的原理详解 海明码是一种多重(复式)奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在海明码中的全部传输码字是由原来的信息和附加的奇偶校验位组成的。每一个这种奇偶位被编在传输码字的特定位置上。实现得合适时,这个系统对于错误的数位无论是原有信息位中的,还是附加校验位中的都能把它分离出来。 推导并使用长度为m位的码字的海明码,所需步骤如下: 1、确定最小的校验位数k,转载 2015-04-29 09:38:41 · 5577 阅读 · 2 评论 -
[编译原理]有限自动机
有限自动机:原创 2015-04-09 13:14:44 · 2182 阅读 · 0 评论 -
[编译原理]正规式
正规式 题目: 分解: S->xSx 或者S->y 可以理解:xSx 中又含有S,无限递归,直到S->y。 那么x的n次方yx的n次方 选择D原创 2015-04-09 12:20:49 · 7788 阅读 · 0 评论 -
[编译原理]文法二
四、著名语言学家NoamChomsky(乔姆斯基)根据对产生式所施加的限制的不同,把文法分成四种类型,即0型、1型、2型和3型。文法类型产生式的限制文法产生的语言0型文法α→β其中α、β∈(VT∪VN) *,∣α∣≠00型语言1型文法α→β其中α、β∈(VT∪VN) *,∣α∣≤∣β∣1型语言,即上下文有关语言2型文法A→β其中A∈VN,β∈(VT∪VN) *2型语言,即上下文无关语言3型文法A→转载 2015-04-02 14:06:31 · 1363 阅读 · 0 评论 -
[编译原理]文法一
一、先简单介绍一下形式语言基本知识1、字母表:符号的非空有限集合称为字母表2、符号串:由某一字母表中的符号组成的有限符号序列称为该字母表的符号串二、非形式化的语言: ①语言L和M的合并,LUM={s|s∈L或 s∈M} ②语言L和M的连接,LM={st|s∈L,t∈M}③语言L的Kleene闭包,L*= ④语言L的正闭包,L+= 解释:前面①,②都很好理解,关于③和④,这里说明一下转载 2015-04-02 14:05:33 · 1363 阅读 · 0 评论 -
[数据库]数据库中的-脏读,幻读,不可重复读
数据库带来的并发问题包括: 1.丢失或覆盖更新。(幻像读) 2.未确认的相关性(脏读)。 3.不一致的分析(非重复读)。详细描述如下:一.丢失更新当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题。每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。 e.g.事务A和事务B同时修改某行的值, 1.事务A将数值改为1转载 2015-03-25 09:40:27 · 1202 阅读 · 0 评论 -
嵌入式SQL与主语言的通信
将SQL嵌入到高级语言中混合编程,程序中会含有两种不同计算模型的语句: (1)SQL语句:描述性的面向集合的语句;负责操纵数据库 (2)高级语言语句:过程性的面向记录的语句;负责控制程序流程。工作单元之间的通信方式: 1. SQL通信区:向主语言传递SQL语句的执行状态信息;主语言能够据此控制程序流程 2. 主变量: (1)主语言向SQL语句提供参数。 (2)将SQL语句查询数据库的结果交主语转载 2015-03-25 09:13:03 · 7765 阅读 · 0 评论 -
[模式]函数依赖
如果我们要设计关系型数据库的表模式,则很有可能会出现冗余,为了避免这种情况,我们需要一些规则,这些规则称为依赖。函数依赖简单地说就是属性集A推导出属性集B,比如给定这些规则之后,如果某个关系能够满足给定的函数依赖,则称关系R满足函数依赖F; 在下面我们会介绍一系列的范式以及分解算法; 函数依赖的分解合并规则 与 是等价的(可以互相转化的),第一个式子替换第二个式子称为合并规则,第二个式子替换第一个转载 2014-11-19 10:35:30 · 2569 阅读 · 0 评论 -
[数据库]元组关系演算
元组关系演算 之前学习了一下关系代数表达式,现在再学习一下元组关系的演算,这样就全了。这篇东西的符号打出来费了好多时间,比较麻烦,还好看着还能看懂,关键是全文本的,好下面开始正文。 为了讨论方便,先允许关系的基数是无限的。然后再对这种情况下定义的演算作适当的修改,保证关系演算中的每一个公式表示的是有限关系。 在元组关系演算系统中,称 {t|Φ(t)} 为元组演算表达式。其中 t原创 2014-11-18 13:53:11 · 21521 阅读 · 2 评论 -
[编译原理]文法知识
文法是一个四元组:G = {VT,VN,S,P} 其中VT是一个非空有限的符号集合,它的每个元素成为终结符号。VN也是一个非空有限的符号集合,它的每个元素称为非终结符号,并且VT∩VN=Φ。S∈VN,称为文法G的开始符号。P是一个非空有限集合,它的元素称为产生式。所谓产生式,其形式为α→β,α称为产生式的左部,β称为产生式的右部,符号“→”表示“定义为”,并且α、β∈(VT∪VN)*,α≠转载 2014-11-01 15:32:46 · 3730 阅读 · 0 评论 -
[操作系统]最近最久未使用(LRU)置换算法
4.7.2 最近最久未使用(LRU)置换算法 1. LRU(Least Recently Used)置换算法的描述 2. LRU置换算法的硬件支持 1) 寄存器 为了记录某进程在内存中各页的使用情况,须为每个在内存中的页面配置一个移位寄存器,可表示为R=Rn-1Rn-2Rn-3 … R2R1R0 2) 栈转载 2014-10-23 14:51:54 · 5525 阅读 · 0 评论 -
[操作系统]最佳置换算法和先进先出置换算法
4.7.1 最佳置换算法和先进先出置换算法 1. 最佳(Optimal)置换算法 最佳置换算法是由Belady于1966年提出的一种理论上的算法。其所选择的被淘汰页面,将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面。采用最佳置换算法,通常可保证获得最低的缺页率。 假定系统为某进程分配了三个物理块,并考虑有以下的页面号引用串: 7,0,1,2,0,3,0,4,2,3,0,3,转载 2014-10-23 14:53:25 · 6836 阅读 · 0 评论 -
[操作系统]两级页表(Two-Level Page Table)
对于要求连续的内存空间来存放页表的问题,可利用将页表进行分页,并离散地将各个页面分别存放在不同的物理块中的办法来加以解决,同样也要为离散分配的页表再建立一张页表,称为外层页表(Outer Page Table),在每个页表项中记录了页表页面的物理块号。下面我们仍以前面的32位逻辑地址空间为例来说明。当页面大小为 4 KB时(12位),若采用一级页表结构,应具有20位的页号,即页表项应有1兆个;在采转载 2014-10-23 10:22:39 · 7953 阅读 · 0 评论 -
[数据结构与算法]基数排序
编程论到极致,核心非代码,即思想。所以,真正的编程高手同时是思想独到及富有智慧(注意与聪明区别)的人。每一个算法都是一种智慧的凝聚或萃取,值得我们学习从而提高自己,开拓思路,更重要的是转换思维角度。其实,我们大多数人都活在“默认状态”下。没有发觉自己的独特可设置选项-----思想。言归正传(呵呵!恢复默认状态),以下学习基数排序。【1】基数排序以前研究的各种排序算法,都是通过比较数据大小的方法对欲转载 2014-10-20 10:08:01 · 1436 阅读 · 0 评论 -
[数据结构与算法]归并排序
归并排序是利用递归和分而治之的技术将数据序列划分成为越来越小的半子表,再对半子表排序,最后再用递归步骤将排好序的半子表合并成为越来越大的有序序列,归并排序包括两个步骤,分别为: 1)划分子表 2)合并半子表 首先我们来讨论归并算法,归并算法将一系列数据放到一个向量中,索引范围为[first,last],这个序列由两个排好序的子表构成,以索引终点(mid)为分界线,以下转载 2014-10-20 09:52:53 · 1301 阅读 · 0 评论 -
[数据结构与算法]快速排序
上一节的冒泡排序可以说是我们学习第一个真正的排序算法,并且解决了桶排序浪费空间的问题,但在算法的执行效率上却牺牲了很多,它的时间复杂度达到了O(N2)。假如我们的计算机每秒钟可以运行10亿次,那么对1亿个数进行排序,桶排序则只需要0.1秒,而冒泡排序则需要1千万秒,达到115天之久,是不是很吓人。那有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。转载 2014-10-19 15:43:57 · 1434 阅读 · 0 评论 -
[数据结构与算法]简单选择排序算法
简单选择排序:设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(R,R[i+1],…,R[n]中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。 代码如下: public void SimpleSelect() { int[] inputIntArray = new int[8] {原创 2014-10-17 16:16:08 · 1750 阅读 · 0 评论 -
[数据结构与算法]C#冒泡排序
1:原理以此比较相邻的两个元素,每次比较完毕最大的一个字跑到本轮的末尾。 目的:按从小到大排序。 方法: 假设存在数组:72, 54, 59, 30, 31, 78, 2, 77, 82, 72 第一轮比较相邻两个元素,如果左边元素大于右边元素,则交换。 72和54比较的结果就是,54在前,72在后; 然后72和59比较的结果,59在前,72在后; 以此类推,第一轮比较之后的结果是:54, 59,原创 2014-10-17 15:44:05 · 1400 阅读 · 0 评论 -
[数据结构与算法]直接插入排序
直接插入排序 每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子列表当中的适当位置,直到全部记录插入完成为止。原创 2014-10-17 15:36:06 · 1351 阅读 · 0 评论 -
[数据结构与算法]AVL树的旋转
平衡二叉树在进行插入操作的时候可能出现不平衡的情况,AVL树即是一种自平衡的二叉树,它通过旋转不平衡的节点来使二叉树重新保持平衡,并且查找、插入和删除操作在平均和最坏情况下时间复杂度都是O(log n) AVL树的旋转一共有四种情形,注意所有旋转情况都是围绕着使得二叉树不平衡的第一个节点展开的。 1. LL型 平衡二叉树某一节点的左孩子的左子树上插入一个新的节点,使得该节点不再平转载 2014-10-16 16:51:05 · 1513 阅读 · 1 评论 -
[数据结构与算法]最短路径—Dijkstra算法和Floyd算法
Dijkstra算法1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。注意该算法要求图中不存在负权边。问题描述:在无向图 G=(V,E) 中,假设每条边 E转载 2014-10-16 13:37:38 · 1595 阅读 · 0 评论 -
[数据结构与算法]拓 扑 排 序
拓 扑 排 序 一个较大的工程往往被划分成许多子工程,我们把这些子工程称作活动(activity)。在整个工程中,有些子工程(活动)必须在其它有关子工程完成之后才能开始,也就是说,一个子工程的开始是以它的所有前序子工程的结束为先决条件的,但有些子工程没有先决条件,可以安排在任何时间开始。为了形象地反映出整个工程中各个子工程(活动)之间的先后关系,可用一个有向图来表示,图中的顶点代表活动(子工转载 2014-10-16 12:50:51 · 1521 阅读 · 0 评论 -
[数据结构与算法]最小生成树(普利姆算法、克鲁斯卡尔算法)
给定一个带权的无向连通图,如何选取一棵生成树,使树上所有边上权的总和为最小,这叫最小生成树.求最小生成树的算法(1) 克鲁斯卡尔算法图的存贮结构采用边集数组,且权值相等的边在数组中排列次序可以是任意的.该方法对于边相对比较多的不是很实用,浪费时间.(2) 普里姆算法图的存贮结构采用邻接矩阵.此方法是按各个顶点连通的步骤进行,需要用一个顶点集合,开始为空集,以后将以连通的顶点陆续加入到集合中,全部顶转载 2014-10-16 11:56:57 · 1598 阅读 · 0 评论 -
[数据结构与算法]图的遍历
转载请注明来源chengyaogen.blog.chinaunix.net 图的遍历是树的遍历的推广,是按照某种规则(或次序)访问图中各顶点依次且仅一次的操作,亦是将网络结构按某种规则线性化的过程。 由于图存在回路,为区别一顶点是否被访问过和避免顶点被多次访问,在遍历过程中,应记下每个访问过的顶点,即每个顶点对应有一个标志位,初始为False,一旦该顶点被访问,就将其置为True,以后若又碰到该顶转载 2014-10-16 11:24:38 · 1213 阅读 · 0 评论 -
[数据结构与算法]Huffman树及其应用
转载 2014-10-16 09:46:20 · 2524 阅读 · 0 评论 -
[数据结构与算法]树、森林与二叉树的转换
树、森林与二叉树的转换 1、树转换为二叉树由于二叉树是有序的,为了避免混淆,对于无序树,我们约定树中的每个结点的孩子结点按从左到右的顺序进行编号。将树转换成二叉树的步骤是:(1)加线。就是在所有兄弟结点之间加一条连线;(2)抹线。就是对树中的每个结点,只保留他与第一个孩子结点之间的连线,删除它与其它孩子结点之间的连线;(3)旋转。就是以树的根结点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明转载 2014-10-16 09:06:53 · 5152 阅读 · 1 评论