- 博客(50)
- 收藏
- 关注
原创 编译原理 第3章:词法分析
词法分析的任务:从左至右逐个字符地对源程序进行扫描,产生一个个单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。词法分析器(Lexical Analyzer)又称扫描器(Scanner):执行词法分析的程序手工构造方法自动构造方法词法分析器的功能和输出形式功能:输入源程序、输出单词符号词法分析器输出的单词符号的表示形式:(单词种别,单词符号的属性值)5.实现方案:基本上为两种。
2024-03-18 08:48:32
853
2
原创 编译原理 第2章:基础知识
程序设计教科书中的语言侧重于语言成分的意义,它常常只讲到语言的一部分,因此,不能把这种描述作为构造编译程序的基础”程序语言由两方面进行定义:语法 语义语法语义。
2024-03-17 17:16:07
1150
1
原创 编译原理 第1章:概述
将某一种语言程序(称为源语言程序)等价地转换为另一种语言程序(称为目标语言程序)的程序称为翻译程序。由于汇编语言格式简单,常与机器语言之间有一一对应的关系,汇编程序所要做的翻译工作比编译程序简单得多。:对源程序(包括源程序中间形式)从头到尾扫描一次,并做有关的加工处理 ,生成新的源程序中间形式或目标程序,通常称之为。:一种介于源语言和目标语言之间的中间语言形式,中间代码的形式编译程序设计者可以自己设计,常用的有。,对识别出的各种语法成分进行语义分析,并产生相应的。的程序称为源程序(无法直接执行)。
2024-03-17 15:09:26
1056
原创 数据结构 第3章:栈与队列
初始化两个栈,(操作数栈和运算符栈),若扫描到操作数,压入操作数栈;若扫描到运算符或界限符,则按照“中缀转后缀”相同的逻辑压入运算符栈(期间也会弹出运算符,每当弹出一个运算符时,就需要再弹出两个操作数栈的栈顶元素并执行相应运算, 运算结果再压回操作数栈)。2. M行N列的二维数组 b [ M ] [ N ] 中,设起始地址为 LOC,若按列优先存储,则 b [ i ] [ j ] 的存储地址 = LOC + (j。例:数据元素输入序列为 1,2,3,4,判断 4!:栈的大小不可变,解决方法:共享栈。
2024-03-16 09:05:54
2210
原创 汇编语言程序设计 第3章:汇编语言程序格式
段名字 SEGMENT [类型]……段名字 ENDS例4.1 data SEGMENT……data ENDS格式:过程名 PROC FAR/NEAR……过程名 ENDP例4.4……main ENDP[<变量名>] 变量定义伪指令 <表达式>功能:声明一个变量的数据类型、代表的值、地址。说明:(1) 变量名是可有可无的,如果有,则会被汇编成该变量所对应的最开始字节的偏移地址。(2) 变量定义伪指令(共5个)①DB。
2024-03-14 21:51:52
989
2
原创 汇编语言程序设计 第2章:8086指令系统简介及寻址方式
8088/8086汇编语言中提供了7种与数据相关的寻址方式。以MOV指令为例介绍7种寻址方式。Src表示源操作数,Dest表示目的操作数。指令功能:将源操作数Src表示的内容传送到目的操作数Dest所指示的位置。
2024-03-14 09:46:31
1101
3
原创 汇编语言程序设计 第1章:基础知识
本门课程主要内容(汇编语言、计算机接口)内部结构、内存管理机制、指令系统,伪指令、程序结构、DOS系统功能调用、编程训练。重点:寄存器名称及应用、内存分段机制、程序运行机制、编程训练。难点:利用汇编语言编程时的诸多限制,需记忆的内容也较多。外部引脚特性、总线时序、常用接口芯片工作方式(8259、8253、8255、8250、8237等)、实验(用汇编语言编程驱动接口芯片)。重点:常用接口芯片的工作方式,利用汇编语言编程驱动芯片。难点:接口芯片工作过程中的信号时序。为什么要学习这门课?
2024-03-13 17:21:48
1105
1
原创 markdown笔记公式(持续更新)
在中间插入矩阵元素,每个元素之间插入。来分别输入小写和大写希腊字母。这是加粗,字号5,字颜色粉。这是加粗,字号5,字颜色粉。,并在每行结尾处使用。//缩进两个汉字字符。//缩进两个英文字符。若想在一行内显示矩阵,//缩进一个汉字字符。//缩进一个英文字符。
2024-03-13 09:35:38
1296
原创 数据结构 第2章:线性表
线性表:是具有相同数据类型的 n 个数据元素的有限序列。特点:存在惟一的第一个元素。存在惟一的最后一个元素。除第一个元素之外,每个元素均只有一个直接前驱。除最后一个元素之外,每个元素均只有一个直接后继。线性表的存储结构:顺序存储结构:顺序表链式存储结构:链表。
2024-03-12 20:31:24
1101
1
原创 数据结构 第1章:绪论
程序不一定具有有穷性,程序中的指令必须是机器可执行的,而算法中的指令则无此限制。:指互相之间存在着一种或多种特定关系的数据元素的集合,包括逻辑结构,存储结构和对数据的运算。x的数量级O ( x ) O(x)O(x)就是算法时间复杂度T ( n ):O ( x ) = T ( n ):是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。:是程序设计语言中的一个概念,它是一个值的集合和操作的集合。:性质相同的数据元素的集合,是数据的一个子集。
2024-03-12 19:02:37
2232
原创 【数据库系统概论】第2章:关系数据库
关系数据库系统是支持关系模型的数据库系统。第一章初步介绍了关系模型及其基本术语。本章将深入介绍关系模型。按照数据模型的三个要素,关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。下面将对这三部分内容进行分别介绍。什么是关系?单一的数据结构----关系现实世界的实体以及实体间的各种联系均用关系来表示逻辑结构----二维表从用户角度,关系模型中数据的逻辑结构是一张二维表建立在集合代数的基础上域是一组具有相同数据类型的值的集合。
2024-03-11 08:18:54
1285
2
原创 【数据库系统概论】第1章:绪论1.3 1.4数据库系统的结构和组成
2002年度学生数据库模式对应的实例与2003年度学生数据库模式对应的实例是不同的。从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。例如:在学生选课数据库模式中,包含学生记录、课程记录和学生选课记录。二级映象在DBMS内部实现这三个抽象层次的联系和转换。最终用户通过应用系统的用户接口使用数据库。:对某一类数据的结构和属性的说明。2003年学校中所有学生的记录。数据库系统对硬件资源的要求。保证了数据库外模式的稳定性。学校开设的所有课程的记录。:是型的一个具体赋值。
2024-03-11 08:17:36
957
1
原创 【操作系统概念】第14章:系统保护
对操作系统的进程必须加以保护,以便免受其他进程活动的干扰。为了提供这种保护,我们可以采用多种机制来确保只有获得操作系统恰当授权的进程才能操作文件、内存段、CPU和其他系统资源。保护作为一种机制,用于控制程序、进程或用户访问计算机系统定义的资源。这种机制必须提供手段,来指定是假的控制以及采取的强制方式。安全有别于保护,安全是保留系统和数据的完整性的信心度量。本章专注于保护。安全保障是个更加广泛的的话题,第15章会讨论。讨论现代计算机系统的保护目的与原则。
2024-03-10 13:27:17
943
2
原创 【操作系统概念】第13章:I/O系统
计算机的两个主要工作是I/O和处理。在很多情况下,主要工作是I/O,而处理只是附带的。例如,当浏览网页或编辑文件时,直接兴趣是读取或输入信息,而非计算答案。计算机的操作系统I/O功能是,管理和控制I/O操作和I/O设备。虽然其他章节也讨论了有关问题,但是这里汇集所有部分,以便给出一幅完整I/O图。首先,描述I/O硬件的基础知识,因为硬件接口本身对操作系统的内部功能有所限制。接着,讨论操作系统提供的 I/O服务以及这些服务的应用程序I/O接口的实现。
2024-03-10 09:40:48
881
1
原创 【操作系统概念】第12章:大容量存储阶段
文件系统从逻辑上来看包括三部分。第10章讨论了文件系统的用户和程序员的接口。第11章描述了操作系统实现这种接口的内部数据结构和算法。本章讨论文件系统的最底层:次级存储(外存)结构。首先,描述磁盘和磁带的物理结构。然后,描述磁盘调度算法,以便调度磁盘I/O的次序来优化性能。接着,讨论磁盘格式化和启动块、坏块以及交换空间的管理。最后,分析RAID系统的结构。描述外存设备的物理结构及其对设备使用的影响解释大容量存储设备的性能特点评估磁盘调度算法讨论对大容量存储(包括RAIN)提供的操作系统服务。
2024-03-10 00:43:31
863
2
原创 【操作系统概念】第11章:文件系统实现
正如第10章所述,文件系统提供了机制,以在线存储和访问文件内容,包括数据和程序。文件系统永久驻留在外存上,而外存设计成永久容纳大量数据。本章主要关注大多数常用外存即磁盘上的文件存储与访问问题。我们讨论各种方法,用于组织文件使用、分配磁盘空间、恢复空闲空间、跟踪数据位置以及操作系统其他部分与外存的接口等。本章也将讨论性能问题。描述本地文件系统和目录结构的实现细节描述远程文件系统的实现讨论块分配和空闲块的算法和平衡。
2024-03-09 09:55:37
912
1
原创 【操作系统概念】第10章:文件系统
对于大多数用户,文件系统时操作系统中最明显的部分。它提供机制,以便对计算机操作系统与所有用户的数据与程序进行在线存储和访问。文件系统由两个不同的部分组成:文件集合,每个文件存储相关数据;目录结构,用于组织系统内的所有文件并提供文本信息。文件系统位于设备上,前一章描述过,接下来将深入讨论。在本章,将研究文件和主要目录结构的各个方面;并讨论在多个进程、用户和计算机之间共享文件夹的语义;最后,讨论各种文件保护方法(当有多个用户访问文件,并且需要控制谁可以访问文件以及如何访问文件时,这是必要的)解释文件系统功能。
2024-03-09 09:44:46
1231
1
原创 【操作系统概念】 第9章:虚拟内存管理
第8章讨论了计算机系统的各种内存管理策略。所有这些策略都有相同的目标:同时将多个进程保存在内存中,以便允许多道程序。然而,这些策略都倾向于要求每个进程再执行之前应完全处于内存中。虚拟内存技术允许执行进程不必完全处于内存。这种方案的一个主要优点是,程序可以大于物理内存。此外,虚拟内存将内存抽象成一个巨大的、统一的存储数组,进而实现了用户看到的逻辑内存与物理内存的分离。这种技术使得程序员不在担忧内存容量的限制。虚拟内存还允许进程轻松共享文件和实现共享内存。此外,他为创建进程提供了有效的机制。
2024-03-08 22:31:29
993
1
原创 【操作系统概念】 第8章:内存管理
从第5章,我们讨论了一组进程如何共享一个CPU。正是由于CPU调度,我们可以调高CPU的利用率和计算机响应用户的速度。然而,为了实现性能的改进,应将多个进程保存在内存中;也就是说,必须共享内存。本章讨论内存管理的各种方法。内存管理算法很多:从原始的裸机方法,到分页和分段的方法。每种方法都有各自的优点和缺点。为塔顶内存选择内存管理方法取决于很多因素,特别是系统的硬件设计。正如将会看到的,许多算法都会需要硬件支持,导致许多操作系统内存管理与系统硬件相结合。详细描述内存硬件的各种组织方法。
2024-03-08 12:12:58
950
4
原创 【操作系统概念】 第7章:死锁
在多道程序环境中,多个进程可以竞争有限数量的资源。当一个进程申请资源时,如果这时没有可用资源,那么这个进程进入等待状态。又是,如果所申请资源被其他等待进程占有,那么该等待进程有可能再也无法改变状态。这种情况称为死锁(deadlock)。死锁最好的例证时Kansas立法机构在20世纪初通过的一项法律,其中说到”当两辆列车在十字路口逼近时,它们应完全停下来,并且在一列列车开走之前另一列列车不能再次启动”。解释死锁,即一组并发进程不能完成执行任务。提出一些方法,以便预防或避免计算机系统内的死锁。
2024-03-07 23:02:03
1077
原创 【操作系统概念】 第6章:同步
协作进程(cooperating process)能与系统内的其他执行进程互相影响。协作进程或能直接共享逻辑地址空间(即代码和数据),或能通过文件或消息来共享数据。前一种线程可通过线程来实现,参考第4章,共享数据的访问可能导致数据都不一致。本章讨论多种机制,以便确保共享同一逻辑地址空间的协作进程的有序执行,从而维护数据的一致性。引入临界区问题,它的解决问题可以用于确保共享数据的一致性。讨论临界区问题的软件和硬件解决方案分析进程同步的多个经典问题讨论解决进程同步问题的多个工具。
2024-03-07 09:53:22
819
原创 【操作系统概念】 第5章:进程调度
CPU调度是多道程序操作系统的基础。通过在进程间切换CPU,操作系统可以使得计算机更加高效。引入CPU调度,这是多道程序操作系统的基础描述各种CPU调度算法讨论为特定系统选择CPU调度算法的评估标准分析多个操作系统的调度算法。
2024-03-06 20:32:15
975
1
原创 【操作系统概念】 第4章:线程
第3章讨论的进程模型假设每个进程是具有单个控制线程的一个执行程序。不过,几乎所有现代操作系统都允许一个进程包含多个线程。本章引入多线程计算机系统有关的许多概念,并且讨论Pthreads、Windows和Java线程库的API引入线程概念,即CPU使用的基本单元,它构成多线程计算机的基础讨论Pthreads、Windows和Java线程库的API探讨多种策略以便提供隐式线程讨论多线程相关的问题讨论Windows和Linux操作系统的线程支持线程是CPU使用的基本单元,由。
2024-03-06 16:59:04
2263
原创 【操作系统概念】 第3章:进程
早期的计算机一次只能执行一个程序。这种程序完全控制系统,并且访问所有系统资源。相比之下,现代计算机系统允许加载多个程序到内存,以便并发执行。这种改进要求:对各种程序提供更严的控制和更好的划分。这些需求导致了**进程(process)**概念的产生,即进程为执行程序。进程是现代分时操作系统的工作单元。
2024-03-05 23:16:59
1118
2
原创 【操作系统概念】 第2章:操作系统结构
操作系统提供环境以便执行程序。操作系统的内部结构差别很大,有许多不同的组织方式。我们可以从多个方面来分析操作系统:第一个方面注重系统提供的服务;第二个方面关注用户和程序员采用的接口;第三个方面是系统组件及其相互关系。描述操作系统为用户、进程和其他系统提供的服务讨论构建操作系统的各种方式解释如何安装与定制操作系统以及如何启动操作系统。
2024-03-05 17:14:56
1020
原创 【操作系统概念】 第1章:导论
操作系统是一组控制和管理计算机硬件和软件资源、合理地对各类作业进行调度,以及方便用户的程序集合。操作系统的目标:执行用户程序,更容易地解决用户问题。使计算机系统使用方便。使计算机系统使用方便。
2024-03-05 11:19:32
822
原创 【数据库系统概论】第1章:绪论 1.2数据模型
尽管如此,由于面向对象数据库操作语言过于复杂,没有得到广大用户,特别是开发人员的认可,加上面向对象数据库企图完全替代关系数据库管理系统的思路,增加了企业系统升级的负担,客户不接受,·面向对象数据库产品终究没有在市场上获得成功。它保持了关系数据库系统的非过程化数据存取方式和数据独立性,继承了关系数据库系统已有的技术,支持原有的数据管理,又能支持00模型和对象管理。数据的完整性约束条件是一组完整性规则的集合,规定数据库状态及状态变化所应满足的条件,以保证数据的正确性、有效性和相容性。
2024-03-04 23:32:28
864
原创 【数据库系统概论】第1章:绪论 1.1数据库系统概述
数据(Data)是数据库中存储的基本对象数据的定义:描述事物的符号记录数据的种类:文本、图形、图像、音频、视频、学生的档案记录、货物的运输情况等数据的特点:数据与其语义是不可分的(数据的含义称为数据的语义,数据与其语义是不可分的。数据库(Database,简称DB)是长期储存在计算机内、有组织、可共享的大量数据的集合。数据库的基本特征:数据按一定的数据模型组织、描述和储存;可为各种用户共享;冗余度较小;数据独立性较高;易扩展。
2024-03-04 22:55:34
1195
1
原创 【C++】核心编程--类与对象(持续更新)
C++认为,对象上有其属性和行为例如:人可以作为对象:属性有姓名,年龄,身高,体重…行为有走、跑、吃饭、唱歌…车也可以作为对象,属性有轮胎,方向盘,车灯…行为有载人、放音乐、放空调…
2024-03-02 20:15:26
1068
原创 【c++】通讯录管理系统
8.删除练习人—检测联系人是否存在。5.添加联系人—结构体设计。6.添加联系人—功能实现。9.删除联系人—功能实现。1.系统功能介绍及展示。
2024-03-02 17:16:39
659
1
原创 【C++】核心编程--函数高级
1.如果某个位置已经有了默认参数,那么从这个位置往后,从左到右都必须有默认值。//在现阶段函数的占位参数存在意义不大,但是后面的课程中会用到该技术。如果我们自己传入数据,就用自己的数据,如果没有,那么用默认值。在C++中,函数的形参列表中的形参是可以有默认值的。2.如果函数声明有默认值,函数实现就不能有默认参数。//注意:函数的返回值不可以作为函数重载的条件。C++函数的形参列表中可以有占位参数,//就像在餐桌占位,人不在,留下书包。//声明和实现只能有一个有默认参数。函数重载遇到默认参数。
2024-03-02 11:00:35
512
原创 【C++】核心编程--内存分区、引用
结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了。4.堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收。堆区开辟的数据,由程序员手动开辟,手动释放,释放利用操作符delete。的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可。3.栈区:由编译器自动分配存放,存放函数的参数值,局部变量等。不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程。的,使其只读的原因是防止程序意外的修改了它的指令。错误的,引用必须初始化。
2024-03-02 09:50:03
748
原创 【C++】结构体
结构体基本概念:属于用户自定义的数据类型,允许用户存储不同的数据类型struct 结构体名{结构体成员列表};//struct 结构体名 变量名//struct 结构体名 变量名={成员1值,成员2值…}//定义结构体时顺便创建变量//1.创建学生数据类型,学生包括(姓名,年龄,分数)//自定义数据类型,一些类型集合组成一个类型//语法 struct类型名称{成员列表}//成员列表//姓名//年龄int age;//分数int score;}s3;//顺便创建结构体变量。
2024-03-01 16:32:15
834
1
原创 【C++】数组、函数、指针
/定义指针的语法 数据类型 *指针变量名 int *p;//让指针记录变量a的地址 p = &a;//指针前 *代表解引用 *p代表所指地址的内容。
2024-02-29 17:24:09
1225
原创 【C++初识】语句
continue在循环语句中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环。//如果标记的名称存在,执行到goto语句时,会跳转到标记的位置。//在循环体中再嵌套一层循环,解决一些实际问题,比如要打印星图。//选择结构:依据条件是否满足,有选择的执行相应功能。//循环结构:依据条件是否满足,循环多次执行某段代码。//出现在循环语句中,作用是跳出当前的循环语句。//顺序结构:程序按顺序执行,不发生跳转,//出现在嵌套语句中,跳出最近的内层循环。//外层循环一次,内层执行一周。
2024-02-29 13:25:57
555
原创 数据结构课程设计
在这个过程中,我们使用了class point节点对象paintf::inter_nun()获取k的值paintf::inter_point()获取顶点的值(使用lineEdit->text()获取QString类型的输入节点,之后使用其成员函数转为char格式)(用char类型存储)auto init[this](){} lambda表达式,输入整个图的各节点连接关系。在界面中展示图的可视化效果。编写可视化算法将从顶点v能到达的最短路径长度为k的所有顶点标记为红色(最短路径以路径上的边数计算)。
2023-12-21 12:18:29
1160
4
原创 【C语言进阶】指针进阶(二)
我们需要告诉qsort函数我们希望数据按照怎么的方式进行比较,比如对于几个字符串,我们可以比较字符串的大小(strcmp),也可以比较字符串的长度(strlen),因此我们要告诉qsort函数我们希望的比较方式,我们就需要传入一个比较函数compar就简写为cmp吧。
2023-11-13 09:33:13
551
9
原创 【C语言进阶】指针进阶(一)
指针数组——是数组,存放指针的数组数组指针——是指针,指向数组的指针字符指针——指向字符的指针整型指针——指向整型的指针浮点型指针——指向浮点型的指针//解释:p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为10个整型的数组。//所以p是一个指针,指向一个数组,叫数组指针。//这里要注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。
2023-11-10 19:53:04
57
7
原创 C语言初阶七—操作符(超详细)
a,b整形提升之后,变成了负数,所以表达式 a == 0xb6 , b == 0xb600 的结果是假,但是c不发生整形提升,则表达式 c==0xb6000000 的结果是真.,最后输出c。1.表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。实例3中的,c只要参与表达式运算,就会发生整形提升,表达式 +c ,就会发生提升,所以 sizeof (+c) 是4个字节.//[] 下标引用操作符;
2023-11-09 11:23:58
64
9
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人