自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(195)
  • 资源 (1)
  • 收藏
  • 关注

原创 【PAT A1060】Are They Equal

整体和部分有趣#include <string>#include <iostream>using namespace std;/*没考虑: a/一开始没有考虑小于0小数的情况(如果是小于0的小数的情况,后面的10的指数应该是小数点后面直到第一个不等于0的数的0的个数) b/没有考虑输入数据可能有前导0 c/长度不够有效位数在后面补0 */int n;//精度nint main(){ //cout<<char(5)<<endl;

2020-11-09 20:20:12 101

原创 Openmv(一)OpenMV图像处理的基本方法

一、图像处理基础知识摄像头:光学信号转换成电信号。计算机视觉中,最简单的模型是小孔成像模型。小孔成像是一种理想模型,实际镜头会存在场曲和畸变等,但可以通过在标定过程中引入畸变参数解决,仍可广泛使用。像素和分辨率帧率:每秒钟处理的图片数量,>20人眼分辨不出卡顿。颜色:不同波长的电磁波通过RGB. CMYK HSB LAB色域来描述RGB:三原色原理不是物理原因而是人的生理原因造成(锥形感光细胞)LAB:L(亮度)、A(+:红色,-:绿色)、B(+:黄色,-:蓝色)用来接

2020-11-08 14:53:10 47042 3

原创 编译原理(二十)——目标代码生成

一、目标代码二、虚拟目标机的指令系统三、虚拟目标机的寄存器四、四元式转化为目标指令五、多寄存器的分配六、对目标程序的评价

2020-11-04 22:36:44 9581

原创 编译原理(十九)——运行时存储空间管理(变量访问环境)

一、变量访问环境二、调用链、动态链三、活跃活动记录(LAR)四、声明链和变量访问环境五、如何计算当前过程的变量访问环境六、Display方法七、静态链方法八、全局Display表

2020-11-03 18:01:59 5625 2

原创 Leetcode每日一题(二)941.有效的山峰数组

941.有效的山峰数组思路:从头到尾走一下,开始是判断A[i]<A[i+1],直到判断到>的那个位置,如果当前是0或者是size-1的话都说明结果有误;然后从当前的位置再开始往下判断,是否能一直到最后都是A[i]>A[i+1](或者两个指针也行)bool validMountainArray(vector<int>& A) { int length = A.size(); int i; for(int i=0;i<length-

2020-11-03 15:29:19 371 1

原创 Leetcode每日一题(一)349.计算两个数组的交集

目录problem and solutionsnew knowledgetricks一、问题和解决思路思路:将一个vector(nums1)复制到set中遍历另一个vector(nums2)然后在set中查找是否有这个元素如果 有加入到result中result去重//method one:selfvector<int> intersection1(vector<int> nums1,vector<int> nums2){ vec.

2020-11-03 15:15:26 491

原创 编译原理(十八)——运行时存储空间管理

一、目标程序运行时内存的划分二、语言影响空间分配策略三、存储管理模式的分类四、静态存储分配五、动态存储分配六、模式管理中的过程活动记录七、栈式管理中的过程活动记录八、地址分配原则回顾九、过程活动记录的申请和释放十、变量的地址映射...

2020-11-02 12:21:51 2498

原创 文献阅读方法整理

1看文献时,将文献逐渐记录下来,写成博客或文档,每星期或每天更新一下。一个月或半个月对看的文献做一个比较系统的比较,将文献进行分类和比较(有一些方法是由一系列文献组成的,一篇文献在另一篇文献的基础上做了些改动,这样形成了一个系列,阅读起来思路会比较清楚,别人问什么做那样的改进,解决了哪些问题,哪些问题是自己也遇到过的,当时是怎么解决的,带着问题去读文献,把文献读明白)2选择工作实践中的问题,热点,由一个小枝节检索较全的文献,一般近期的20篇文献已经相当多了。学习别人是怎么发现问题的,知道目前对于这个问

2020-11-01 17:48:10 272 1

原创 编译原理(十七)——中间代码优化(2)

一、公共表达式节省这种情况在自己写的代码中直接出现的可能性不大,但是在写程序的时候特别是有下标变量的时候通常会有很多这样的情况,比如二维数组a[i][j] 和a[i][k]前三条四元式是完全相同的,没有必要重复的计算这样三条四元式。所以在实际的使用中,公共子表达式出现的情形还是比较多的。公共表达式:指两个表达式中的子表达式他们的计算结果相同公共表达式节省在局部进行的时候是针对基本块的。有两种方法——相似性方法和编码方法如何在一个四元式序列中将公共子表达式提取出来?形式相同的表达式未必可以

2020-10-27 19:47:08 2498 1

原创 数据结构(七)排序

排序的基本概念插入排序交换排序选择排序二路归并排序基数排序外部排序各种排序算法的比较排序算法的各种应用

2020-10-25 15:07:24 399

原创 数据结构(六)查找

查找的基本概念顺序查找法分块查找法折半查找法B树及其基本操作、B+树的基本概念散列表字符串的模式匹配查找算法的分析及应用

2020-10-25 08:53:47 1697

原创 数据结构(六)——查找和排序练习题

写出折半查找的递归算法,初始调用时,low为1,high为ST.length线性表中各结点的检索概率不等,则可用如下策略提高顺序检索的效率:若找到指定的结点,将该结点和其前驱结点(若存在)交换,使得经常被检索的结点尽量位于表的前端,试设计在顺序结构和链式结构的线性表上实现上述策略的顺序检索算法数组中有一个数字出现的次数超过了数组长度的一半,请找出这个数字编写双向冒泡排序算法,在正反两个方向交替进行扫描,即第一趟把关键字最大的元素放在最后面,第二趟把关键字最小的元素放在序列的最前面,如此反复进行。已.

2020-10-24 11:07:18 1345

原创 数据结构(五)——图的基本概念和操作练习题

写出从图的邻接表转换成邻接矩阵表示的算法判断一个无向图G是否是一棵树,若是一棵树,则算法返回true,否则返回false写出图的深度优先搜索DFS算法的非递归算法(图采用邻接表的形式)分别采用基于深度优先遍历和广度优先遍历的算法判别以邻接表方式存储的有向图中是否存在由顶点vi到顶点vj的路经(i!=j)。注意,算法中涉及到图的基本操作必须在此存储结构上实现。假设图用邻接表表示,设计一个算法,输出从顶点vi到顶点vj的所有简单路径利用DFS实现有向无环图.

2020-10-24 10:42:45 461

原创 编译原理(十六)——中间代码优化(1)

一、代码优化的阶段欲提高源程序的运行速度,需要经过几个阶段的优化:用户对源程序进行优化(和编译器无关,与coder设计的算法有关)编译器前端对中间代码进行优化编译器后端对目标代码进行优化两个编译器必须等价,编译的结果必须是正确的,即使有99.99%的可能性是不正确的,但是效率很好也不行,正确性是根本。二、中间代码优化的分类从优化的种类来看,中间代码的优化可有如下分类:局部优化循环上的优化(所有优化方法效果最好的)1. 循环不变体外提循环中不因循环而改变的部分可以提到循环的

2020-10-23 11:38:21 6669 5

原创 数据结构(四)——树和二叉树练习题

已知一棵二叉树按照顺序存储结构进行存储,设计一个算法,求编号分别为i和j的两个结点的最近公共祖先结点。

2020-10-22 11:13:01 2664

原创 编译原理(十五)——中间代码生成(3)

一、过程调用和函数调用的中间代码1. 背景信息形参种类:值参、变量参数、函数参数需要的信息:形参的种类、传送的内容、偏移、传送的个数、函数类型(实在函数、形式函数)过程调用和函数调用的语法形式 ProcFunCall -> id (E1, …… , En)2. 中间代码结构首先生成参数E1,E2,E3…的中间代码然后将实参的计算结果传递到行参中,后面的ti就是前面实参通过中间代码生成的结果最后通过四元式(CALL,<f>,true/false,Resul

2020-10-19 21:52:03 4360

原创 乱七八糟的知识(Day1)

一、FTP、FTPS和SFTP1. FTP(File Transfer Protocal)FTP简介用于计算机网络上在客户端和服务器之间进行文件传输的应用层协议。完整的FTP是由FTP服务器和FTP客户端组成,客户端可以将文件发送给服务器,也可以从服务器端下载文件。FTP原理需要客户端和服务器两端建立连接进行通信。建立FTP连接时有两个不同的通信通道——命令通道(发出和响应指令)、数据通道(两端进行数据传输)面临的问题:使用FTP时客户端需要向服务器提供凭据获得文件传输许可,但是有些公共服务

2020-10-15 09:22:29 266 1

原创 编译原理(十四)——中间代码生成(2)

一、表达式的中间代码生成基于LL(1)方法原始不带有语义动作的LL(1)文法:简单表达式带有语义动作的LL(1)文法:GenCode安排在一个运算符的右分量后面,因为这个时候涉及到这个运算符的所有操作数都已经进入语义栈Gem中,可以进行该运算符的计算,生成对应的四元式。简单表达式的LL(1)分析表表达式的中间代码生成过程分析举例语义栈看上去压入的是x,但是实际上压入的是x的语义信息。首先对应输入流的第一个字符x,文法从E开始推导,(这里的语义栈是从左往右写的),使用E->T Es

2020-10-14 20:32:08 2378

原创 数据库系统原理(四)——视图与索引

视图与索引在某些情况下,让所有用户看到整个逻辑模型是不合适的考虑一个职员需要知道教师的标识、姓名和所在系名,但是没有权限看到教师的工资值,此人应该看到的关系由如下SQL语句所描述:select ID,name,dept_namefrom instructor视图就提供了这种机制:向用户隐藏特定的数据,和一些权限管理相关内容相结合可以进行安全方面的处理SQL允许通过查询来定义“虚关系“,它在概念上包含查询的结果,但并不预先计算并存储。像这种所谓虚关系对用户可见的关系称为视图(对view的访问都要

2020-10-13 16:27:50 378 1

原创 数据库系统原理(三)

SQL查询语言概览目前支持的是SQL-92标准符合度中有很多标准项,有多少标准项被满足就叫做这个SQL的标准符合度。有的时候不是技术上的原因导致不能实现四个等级,而是出于标准中的某些功能可能影响系统的安全性等其他因素的考虑。SQL语言的划分DDL:提供定义关系模式、删除关系以及修改关系的命令DML:提供从数据库中查询信息,以及增删改查完整性:DDL包括定义完整性约束的命令,保存在数据库中的数据必须满足所定义的完整性约束,破坏完整性约束的更新是不允许的。视图定义事务控制嵌入式SQL和

2020-10-13 15:43:56 550

原创 编译原理(十三)——中间代码生成(1)

一、生成中间代码的目的便于优化让生成的目标代码效率更高优化不等同于对代码的精简和算法的优化(对于高级程序设计语言中可能不能继续进行优化,但是仍然可以在编译中进行优化)比方说多维下标变量地址计算过程,比方说a[i][j]和 a[i][k],我们在计算他们的地址的时候都先要计算a[i]的地址然后再计算j k 的地址,实际上a[i]的计算过程实际上是重复计算了便于移植编译前端:与目标机无关编译后端:与目标机相关中间代码起到一个将一对一翻译转换成一对多对一的关系,通过编译前段可以不用改变,编译后

2020-10-12 23:40:35 6765

原创 数据结构(三)树与二叉树基本概念

树的基本概念二叉树树、森林树与二叉树的应用

2020-10-10 23:24:04 2225

原创 编译原理(十二)——语义分析、符号表管理、goto语句

一、符号表管理1.1 语义分析部分三个核心知识点abcd选择和当前位置最近的声明性出现映射关系建立之后,变量的名字即无用,知道语义信息即可1.2 处理原则在程序运行到某一个位置的时候是有效的。1.3 Pascal语言的符号表的管理二、goto语句...

2020-10-07 18:24:13 4450

原创 编译原理(十一)——抽象地址、符号表

一个标识符的语义信息含有三部分内容,种类 类型 抽象地址种类可以分为:常量标识符、类型标识符、变量标识符、域名标识符、过函标识符类型可以有:基本数据类型、子界、数组、枚举、结构体、集合、文件、指针等等语义分析:静态分析——静态语义动态分析——动态语义核心:程序中是否有语义错误在语义分析阶段要构建一个符号表为整个后序过程提供支持一、抽象地址1.1 地址分配在进行编译的时候为每一个变量标识符都分配一个相对地址,当目标程序在真正运行的时候,一旦首地址确定下来,那么所有的变.

2020-10-05 22:22:38 2748

原创 编译原理(十)——语义分析基础

一、语义检查的内容1. 1语法和语义的区别1.2 程序设计语言语义的分类1.3 语义分析的功能1.4 语义错误检查首先可能要检查程序中标识符的声明问题,程序设计语言可以分为强类型语言和弱类型语言。强类型:要求所有用到的表示符必须经过声明,而且在一个程序的作用域内只声明一次,因此需要检查有没有变量的声明、标识符有没有重复声明。涉及到条件表达式的部分都要求是bool类型或者是逻辑值类型,大多数语言要求是一个逻辑值,现在很多语言用0或非0来进行判断,原来的语言一般要求是逻辑类型。运算符是否

2020-10-05 21:06:06 6015

原创 数据结构(二)栈和队列练习题

队列栈和队列的应用

2020-09-24 22:00:25 1576

原创 编译原理(九)——递归下降法

背景:自定向下的语法分析方法,LL(1)是一种非常直观的方法,它的分析过程是按照句子的定义来进行的,也就是说从开始符出发对要分析的串进行推导,如果推导成功就证明这个被分析的串是一个合法的句子,否则的话就有语法错误,但是在推导过程中,对文法进行了一些限定,保证推导过程是唯一的 。总体上说,LL(1)就是在选择规则的时候加入了约束条件,考虑到输入流中的第一个符号,以及推导过程中的非终极符的规则选择,只有当头符属于当前Vn为左部的某条规则的Predict 集的时候,才使用该规则进行推导,否则即错。对规则的.

2020-09-24 10:11:45 13836 3

原创 编译原理(八)——LL(1)语法分析

一、LL(1)语法分析原理LL(1)文法定义中的条件是为了满足选择规则时的唯一性,在我们选择规则的时候只能选择其中的一条规则进行推导,依据这样的思想构造的语法分析程序叫做LL(1)语法分析程序替换就是直接使用右部代替左部,而待判断字符串不变匹配需要分析栈和字符串同时改变整个语法分析器的结构:stack就是所谓的栈,栈顶是X1,分析的对象是输入流,这是我们用到的两个分析对象:VT是终极符集合(Terminal),非终极符集合。二、LL(1)分析表的构造终极符VT里还要增加一个#,竖着写非终

2020-09-22 11:42:07 4170

原创 编译原理(七)——自顶向下语法分析概述

自定向下语法分析从起始符出发,按照所给规则进行尝试性推导看是否能够得到当前所给字符串abbd每一步从第一条规则进行匹配,如果没有匹配上则回溯,一直回溯到起点如果没有找到相应的字符串则当前字符串不符合规则(注意不要遗漏情况)先分析所给子串具有的特点然后再去选择对应的规则进行归约。把不可能实现的内容直接删除,在分析的过程中考虑输入流的信息。First集(alpha短语)根据串进行定义的,可以根据一个串来求first集,指的是能用这个串推出来的所有可以作为终极符的集合。推出以哪些终极符作为开头的串,这

2020-09-21 21:31:20 1269

原创 编译原理(六)——语法树、二义性文法、正则文法与自动机

语法树的定义eg:while分析叶节点从左到右得到一个句型语法树应该是一种什么样的直观形式,首先它是一颗树,每个节点都有一个语法符号,根节点是开始符,每个节点的子节点从左到右连在一起都是符合某一个语法规则,满足这样的条件比如循环语句while循环 while(E) do F 然后E条件可以从E处继续生长,循环体F可以从F继续生长,长到最后都变成终极符的时候是一个具体的循环语句,这种形式让我们在对语句真正进行处理的,提取循环的条件 或者是提取循环体边的很容易,因为每个语句又是一些复合语句,循环体

2020-09-21 21:12:17 11999

原创 数据结构(二)栈和队列

一、栈栈的定义中栈首先是线性表,然后只有一端(栈顶)可以进行操作,另一端固定(栈底)。对栈的基本操作InitStack(&S);//初始化栈StackEmpty(S);//判断栈是否为空Push(&S,x);//将元素压入堆栈(前提栈未满)Pop(&S,x);//将元素从栈顶弹出(前提栈非空)GetTop(S,&x);//返回当前栈顶元素ClearStack(&S);//清空当前栈bool InitStack(SqStack &s){

2020-09-17 11:32:07 270

原创 数据结构(一)线性表练习题2

线性表的链式表示静态链表需要分配较大的连续空间,插入和删除不需要移动元素某线性表中最常见的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D)存储方式最节省时间。A 单链表 B 仅有头指针的单循环链表 C 双链表 D 仅有尾指针的单循环链表注意涉及到删除节点需要知道当前节点的前驱节点,一般是否使用双链表看是否有删除操作,是否是循环看对头尾节点的操作带头结点的双循环链表L为空的条件是(D)这里容易误选BA L->prior == L && L->n

2020-09-16 12:18:41 2150

原创 数据结构(一)线性表练习题1

习题按类和方法区别

2020-09-14 18:57:32 335

原创 数据结构复习(一)线性表概念和基本操作

线性表的基本概念线性表的定义与基本操作相同有限数据元素构成的有限序列,线性表是一种逻辑结构,顺序表(数组)和链表是存储结构//静态数组# define MaxSize 50struct SqList{ ElemType data[MaxSize]; int length;};//动态数组# define InitSize 50struct SeqList{ ElemType* data; int length,Maxsize; //因为这里是动态创建的,只知道初

2020-09-13 22:22:43 135

原创 编译原理(五)语法分析

语法分析一、语言与文法程序设计语言与自然语言有一个重要的区别,程序设计语言需要把语言的三个基本要素设计出来:语法、语义、语用;但是在自然语言叙述的时候只需要通话双方可以相互理解即可。(程序设计语言必须清晰)那么为什么要定义文法呢?为什么没有直接讨论语法?语法的形式化表达方式——文法,在程序设计中需要将语言使用形式化的方式来表达,用程序解决问题的时候需要使用比较规范的形式描述出来才容易实现。(目的就是清楚的描述问题)也就是说文法是语法的一种载体,通过文法的规则来描述实际上的语法。通俗说法就是把

2020-09-09 19:56:34 1271

原创 计算机网络(一)概论

目录计算机网络的发展计算机网络的功能、组成及拓扑结构计算机网络体系结构TCP/IP网络体系结构一、计算机网络的发展1. 计算机网络定义计算机技术和通信技术结合的产物,多个独立自治、相互连接的计算机集合。2. 计算机网络的演变具有通信功能的联机系统:终端-线路-计算机具有通信功能的分时系统:终端-集中器-计算机计算机网络:独立的计算机互联国际标准化网络:开放式标准计算机网络3. 网络发展的现状21世纪的重要特征数字化、网络化和信息化,是一个以网络为核心的信息时代。网

2020-09-08 22:08:52 1202

原创 编译原理(四)——自动机与正则表达式

一、自动机与正则表达式的关系DFA到正则表达式结构化程序语言:(非结构化转换成结构化再转换成正则表达式)顺序、分支、循环终止状态集的处理增加一个终止状态,所有原有的终止状态都有一个null输入转换为同一个终止状态,然后进行正则表达式的转换比较方便。a(ab|ba)a*b正则表达式到NFA(考点)往回转换的话,给一个正则表达式,怎么构造自动机这个构造过程相当于一个逆过程,开始的时候是开始状态然后是表达式然后是终止状态。注意一下循环的格式:2 在自己本身的同时前面和后面要有一个n

2020-09-07 20:31:07 3579

原创 编译原理历年试题分析(大题向待补充)

前言2020.9.6近几年的大题考法以及【】中出现的为出题次数,大致就这些题型,下面的问题还需要再整理(挖了3个坑):将题目归一化有序化;每种类型的题目给出例题;每种类型的题目根据题目的发展给出一般的答题模版和巧思请画出编译器的功能结构图(简述典型编译器的构成以及各个部分的功能和作用)【2】典型编译程序在逻辑功能上由哪几部分组成【3】简述DFA和NFA有哪些主要区别?a/NFA有多个初始状态b/NFA的输入可以是nullc/NFA同一个输入可以转换到多个不同的状态设计确定有

2020-09-06 09:33:10 1575 1

原创 计算机网络历年试题分析(大题待补充)

试题类型

2020-09-05 21:14:08 12039 17

原创 数据库系统原理(二)关系型数据库

引言DBMS是由相互关联的数据集合以及一组用于访问这些数据集合的程序组成。数据描述特定的企业。数据库系统设计用来存储大量的信息,所以不仅要考虑数据的存储结构还要考虑如何管理这些数据结构以及如何查询,同时还要保证数据存储的安全性和稳定性。数据模型(Data model)一个用于描述数据、数据之间联系、数据语义和数据约束的概念工具的集合。关系数据模型是最广泛使用的讲述君存储到数据库中的模型,其他数据模型有面向对象模型,对象-关系模型和半结构化的数据模型数据操纵语言(DML):非过

2020-09-05 12:20:33 1925 2

吉林大学Linux实践思维导图

吉林大学Linux实践xmind思维导图,方便复习时使用,整理的算是较为详细吧,个别的少数地方可能有一些非知识性错误,自己改正一下就好,不影响整体的复习。

2020-07-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除