- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 第1关:使用C/C++语言编写PL/0编译程序的语法分析程序
注:本次任务各小组选择的语法分析方法及程序设计存在差异,因此通过部分或全部测试集均可通关(直接print测试集的输出,视为本关不通过)。完成上述编程任务,将C/C++语言源程序复制粘贴到右侧代码编辑器,点击“评测”按钮,运行程序,系统会自动进行结果对比。基于第二章的词法分析程序,使用C/C++语言编写PL/0编译程序的语法分析程序。(语法错误,行号:13)(语法错误,行号:17)(语法错误,行号:10)(语法错误,行号:13)(语法错误,行号:17)(语法错误,行号:1)(语法错误,行号:1)
2023-06-06 09:59:12 1319
原创 第1关:使用C/C++语言编写PL/0编译程序的词法分析程序
完成上述编程任务,将C/C++语言源程序复制粘贴到右侧代码编辑器,点击“评测”按钮,运行程序,系统会自动进行结果对比。(4)能自动识别并忽略/* */及//格式的注释信息;(标识符长度超长,function1,行号:10)(标识符长度超长,function1,行号:19)(无符号整数越界,123456789,行号:1)(非法字符(串),2a,行号:11)(非法字符(串),2a,行号:1)(非法字符(串),@,行号:17)(保留字,procedure)(保留字,procedure)(保留字,begin)
2023-05-20 21:29:55 1438
原创 CTGU微型计算机实验8 代码在最下面
当只有最下面的开关为ON,中间4个LED灯亮;当只有最上面的开关为ON,8个LED灯全亮;标题打开标题文件夹“简单I/O接口练习题”当开关全部为ON,8个LED灯闪烁发光;当开关为其余状态时,所有的LED灯全灭。
2023-05-04 17:12:31 1291 1
原创 第1关:用Bison构建逆波兰计算器
相信大家通过flex的实验已经掌握了如何构建一个词法分析器,但是为了创建一个完整的编译程序,我们还需要一个语法分析器。同样的,我们可以使用现有的工具来节省开发的时间,也就是Unix下的YACC和GNU/Linux下的Bison。根据提示,在右侧编辑器补充代码,实现加法(+)、减法(-)、乘法(*)、除法(/)、乘方(^)以及取负运算(n)!测试输入:4 5 +,3 4 ^,2 7 + 3 /,16 4 / 12 * n;本关任务是利用YACC/Bison构建一个逆波兰符号计算器。
2023-05-03 15:05:41 1779
原创 第2关:用flex生成PL语言的词法分析器
这一次我们将利用flex工具生成PL语言的词法分析器,要求输入一个PL语言源程序文件demo.pl,输出一个文件tokens.txt,该文件包括每一个单词及其种别枚举值,每行一个单词。需要完成的种别有:IDENT,INTCON,PLUS,MINUS,TIMES,DIVSYM,BECOME。需要完成的种别有:IDENT,EQL,NEQ,LSS,LEQ,GTR,GEQ。需要完成的种别有:所有PL可以识别的种别+ERROR。需要完成的种别有:所有PL可以识别的种别。这个测试集主要测试对字符常量的识别。
2023-05-03 15:03:53 2929
原创 第1关:什么是lex/flex?
根据提示,在右侧编辑器补充代码,实现对以小写字母ab结尾的字符串(只包含大小写字母)的识别,如Helloab和Goab。注意,你只需要保证合法的输入(以ab结尾的字符串)有结果,不合法的输入将会包含在.规则中。
2023-05-03 15:01:45 1765
原创 CTGU实验5_2-创建还书罚款触发器
工具推荐educoder自动输入工具任务描述创建一个触发器tri_fine,当读者还书时,如果超期罚款, 通过触发器在收费表中添加一条收费记录(0.1元每天)。## 3. 创建一个触发器tri_fine,当读者还书时,如果超期罚款, 通过触发器在收费表中添加一条收费记录(0.1元每天)。use library;drop trigger if exists tri_fine;delimiter //######### Begin #########create trigger tri_fin
2022-05-05 17:35:27 1467
原创 CTGU实验5_2-创建借书触发器
工具推荐educoder自动输入工具任务描述创建一个触发器tri_loan,当借书成功,修改该书的状态为“1”(代表已经借出),并检索是否有这个用户的预约该书的记录,如果有,则删除相应的预约记录/*2. 创建一个触发器tri_loan,当借书成功,修改该书的状态为“1”(代表已经借出),并检索是否有这个用户的预约该书的记录,如果有,则删除相应的预约记录*/ use library;drop trigger if exists tri_loan;delimiter //#########
2022-05-05 17:34:13 2758
原创 CTGU实验5_1-创建还书过程中的触发器
工具推荐educoder自动输入工具任务描述创建一个触发器tri_returnbook,当一本书被还回时,从LOAN表中删除相应的借阅记录,将该学生借阅这本书记录添加到LoadHist表中;并检查是否有用户在等待预约这本书:如有则将这本书的借阅状况修改为 已经预约,并按照预约的日期先后,将最先预约的预约状态改为T;如果没有人预约,则应该将此书的借阅状况修改为“可以借阅且尚未借出”(修改状态字段值)/* 1. 创建一个触发器tri_returnbook,当一本书被还回时,从LOAN表中删除相应的借阅
2022-05-05 17:30:47 2920
原创 CTGU实验6_2-创建函数计算图书超期天数
任务描述1、 在图书管理数据库中创建一个函数Count_voverdue,根据书号和借阅证号, 计算该用户的图书的超期天数,超期天数大于0,则返回实际天数,没有超期,返回整数0。/* 1、 在图书管理数据库中创建一个函数Count_voverdue,根据书号和借阅证号, 计算该用户的图书的超期天数,超期天数大于0,则返回实际天数,没有超期,返回整数0。*/use library;drop FUNCTION if exists Count_voverdue;delimiter //
2022-04-28 21:50:44 1890 1
原创 CTGU实验6_2-创建还书存储过程
任务描述2.创建还书存储过程P_ReturnBook,输入参数为借阅证号和书号,在begin和end之间填入代码。调用系统为我们创建好的函数Count_voverdue返回所借图书的超期天数(未超期返回值为0)。若超期天数大于0,则按照每天0。1元计算出罚款金额,并往Money表中添加一条罚款信息,罚款原因为“过期罚款”/*2.创建还书存储过程P_ReturnBook,输入参数为借阅证号和书号,在begin和end之间填入代码,完成以下功能。(1)调用系统为我们创建好的函数Count_voverdue
2022-04-28 09:17:20 1726
原创 CTGU实验6_2-创建借书存储过程
任务描述2.创建P_LoanBook存储 过程,输入参数为借阅证号和书号,在begin和end之间填入代码。调用前一关中我们已经创建好的存储过程P_IsLoan判断能否借书,并将P_IsLoan的输出参数作为本题中存储过程的输出参数vflag。如果P_IsLoan输出参数Vflag等于0,表示可以出借,则在Loan表中写入该用户借阅图书的记录,并将books表中该书的借阅状态修改为1,1代表已经借出。/*2.创建P_LoanBook存储 过程,输入参数为借阅证号和书号,在begin和end之间填入代码。
2022-04-27 21:56:50 2417
原创 CTGU实验6_1-创建能否借书存储过程
任务描述1、 在图书管理数据库中创建一个存储过程P_IsLoan,在用户借书之前,判断该用户能否借书。用户借阅证号和借阅图书的书号作为输入参数,输出参数vflag为整数,有以下几种状态值:(1)vflag为0,表示“该用户可以借阅此书”;(2)vflag为1,表示此书已经预约或已经借出或不出借;(3)vflag为2,表示此书不对该类用户出借,每种图书只对允许的用户类别出借(具体参见上方Books表的字段说明);(4)vflag为3,表示“已达到借书上限”;(5)vflag为4,表示“此用户
2022-04-27 21:16:03 2916
原创 educoder -- 基于RIP协议的路由表更新
任务描述根据RIP协议规则更新本地路由表。#include"network_protocol.h"/* 从配置文件中初始化接口参数 */struct NetIf* init_netif(char *netif_cfg, struct NetIf* netif) { FILE *f = fopen(strtrim(netif_cfg), "r"); if (f == NULL) { printf("打开接口配置文件失败:%s\n", netif_cfg);
2022-04-26 21:47:01 2258 4
原创 educoder -- ip路由查找
任务描述本关任务:完成路由表查找算法。/*根据路由信息,检索目标ip下一跳ip及负责转发的接口*/ struct Route* rtget(struct RouteInfo*rtinfo, uint32 dstip) ; #include"network_protocol.h"/* 从配置文件中初始化接口参数 */struct NetIf* init_netif(char *netif_cfg, struct NetIf* netif) { FILE *f = fopen(strt
2022-04-26 21:46:14 1160
原创 educoder -- ip分片重组
任务说明将收到ip分片重组为完整的ip包。struct IpPkt* CombinIp(struct IpPktList *ip_list) 注意:参数中给出的分片顺序可能是乱序的,与前一关任务中返回的链表会存在不同。 #include"network_protocol.h" #include <malloc.h>//ip分片重组struct IpPkt* CombinIp(struct IpPktList *ip_list){ struct IpPkt *ip=NULL;
2022-04-18 14:56:41 2039 4
原创 educoder -- ip包的分片
任务说明对超过帧长的ip包进行分片,以太网允许的ip长度最大为1500字节,因此最大的IP分片为1500字节,每个分片有独立的IP首部。因此每个分片的最大数据长度为1480字节。任务要求对超过帧长的ip包进行分片,返回分片链表,链表中分片的排列顺序与分片的相对位置一致。struct IpPktList* SplitIp(struct IpPkt *ip_pkt)参数中涉及的ip结构:struct IpPkt { byte ip_verlen; /* IP版本及首部长度
2022-04-18 13:52:53 3851
原创 educoder -- IP协议解析
任务描述本次实验的目标主要分为两部分1.实现对IP数据包的内容进行解析,获取IP地址、数据包长度等信息2.实现对IP数据包内容的校验,确认收到的数据是正确可靠的任务目标获取IP包中的源地址获取IP包中的目的地址获取IP包总长度计算IP包的数据长度计算校验和注意事项!!!第五个任务要实现的是返回计算IP数据包后的校验和,而非IP包本身的校验和,即:模拟设备收到IP包后对数据进行校验#include"network_protocol.h"/*从以太网帧中获取ip包的源地址,以网络字节
2022-04-18 09:48:51 2104
原创 educoder -- ARP协议的实现
任务描述本关任务的目标是合成理解arp协议的语法和语义,并实现该协议。任务1:根据已经给定的缓存表结构及定义,完成初始化函数:void arp_cache_init(void);其功能就是全局量struct arpentry arpcache[ARP_CACHE_SIZE]; /* ARP cache */进行初始化。任务2:根据输入参数ip在表中查询对应的mac地址,如果表中没有该ip的地址,则启用arp请求进行解析:byte *arp_resolve(uint32 ip, byte *
2022-04-15 21:45:21 1738 2
原创 educoder--ip地址的预处理
ip地址的预处理任务描述熟悉ip地址的多种表现形式,理解ip地址,子网掩码,网络地址的涵义。熟悉不同形式之间的转换,为后续实现arp协议做准备。第一个任务,根据ip和子网掩码获得该ip的网络地址。完成函数:/*根据掩码获取ip地址对应的网络地址*/ uint32 get_netaddr(uint32 ip, uint32 mask); 第二个任务,就是做上述变换的逆变换,将unsigned int 的ip地址变为字符串的形式。完成函数:/*将数据表示的ip地址转为点10进制表示的字符串
2022-04-15 17:53:06 1565
原创 渲染管线概述
一、渲染的概念渲染是指以软件由模型生成图像的过程渲染管线(广义)分为CPU应用程序端渲染逻辑和GPU渲染管线(通常我们说的渲染管线)预渲染与实时渲染预渲染:预渲染的计算强度很大,需要大量的服务器运算完成,渲染需要很长时间,通常用于电影制作等实时渲染:实时渲染需要在一秒钟内完成至少24帧图像,如果想流畅就需要至少60帧图像。所以实时渲染需要一些优化手段急速渲染过程。实时渲染通常通过图形处理器(GPU)完成这个过程。二、CPU(当相机调用render()时开始工作)第一步 剔除(Culling
2022-03-21 17:19:35 4470
原创 蓝桥杯省赛真题异或数列
#include <iostream>#include <cstring>using namespace std;// 位数const int N = 30;// 记录每一位1出现的次数int num[N];int main(){ int T; cin >> T; while(T--){ // res为所有数异或的结果 int n, res = 0; cin >> n;
2022-03-08 09:24:54 317 1
原创 蓝桥杯2021年第十二届省赛真题-双向排序
#include <iostream>const int N = 100010;struct Pair{ int x, y;}pai[N]; // 操作栈using namespace std;int ans[N];int n, m;int main(){ cin >> n >> m; // 栈顶指针 int top = 0; while(m--){ int p, q; cin &
2022-03-05 17:51:12 621
原创 Vue面试知识点总结------框架篇
一、MVC 与 MVVM1、MVCMVC 全名是 Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范Model(模型):是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据View(视图):是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的Controller(控制器):是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据MVC
2022-02-04 23:04:14 2590 1
原创 git知识点总结梳理
一、为什么要版本控制其实版本控制的重要性不需要过多强调。我们想当然的就能理解他是很重要的。如果你是位图形或网页设计师,可能会需要保存某一幅图片或页面布局文件的所有修订版本(这或许是你非常渴望拥有的功能),采用版本控制系统(VCS)是个明智的选择。 有了它你就可以将选定的文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。 使用版本控制系统通常还意味着,就算你乱来一气把整
2022-02-04 16:11:28 1285
原创 ES6技巧初级
一、ES6简介一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准化组织 ECMA,希望这种语言能够成为国际标准。次年,ECMA 发布 262 号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为 ECMAScript,这个版本就是 1.0 版。该标准从一开始就是针对 JavaScript
2022-01-18 11:58:04 1164
原创 李超线段树o( ̄ε ̄*)
一、知识点学习https://www.cnblogs.com/JHSeng/p/10896570.html二、题目笔记1、 [HEOI2013]Segment题目描述要求在平面直角坐标系下维护两个操作:在平面上加入一条线段。记第 i 条被插入的线段的标号为 i。给定一个数 k,询问与直线 x=k 相交的线段中,交点纵坐标最大的线段的编号。输入格式输出格式对于每次查询,输出一行一个整数,代表交点纵坐标最大的线段的编号。若不存在任何一条线段与查询直线有交,则输出 0;若有多条线段与查询
2021-10-09 12:08:46 207
原创 linux & git 命令笔记
一、基本Linux命令1)、cd : 改变目录。2)、cd . . 回退到上一个目录,直接cd进入默认目录3)、pwd : 显示当前所在的目录路径。4)、ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。5)、touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。6)、rm: 删除一个文件, rm index.js 就会把index.js文件删除。7)、mkdir: 新建一个目录,就是新建一个文
2021-09-29 15:41:19 858 2
原创 Maven笔记
一、简介1、介绍maven主要服务于基于java平台的项目构建,依赖管理和项目信息管理。就像是java的工具库,想用什么工具就在maven里面引入对应的依赖瀑布模型:需求明确,传统开发模式,每一步按部就班。敏捷开发:快速迭代,可以比较创新,需求不需要很明确,流行的开发模式。2、项目构建如果项目比较复杂的话,项目构建(build)会花很多时间,比方说有很多依赖,很多微服务。maven实现了这个过程的自动化,只需要一条命令就能像流水线一样完成。3、工具1️⃣ Ant构建早期的构建工具,缺点是
2021-09-26 13:36:30 172
原创 Spring Security & OAuth2.0 & zuul & gateway 微服务鉴权全部流程笔记
一、基本概念1、OAuth一个认证协议。分布式常用的认证授权方案2、认证判断一个用户身份是否合法的过程,类似于我们平常说的登录3、授权用户认证通过后根据用户的权限来控制用户资源的过程。比如就算登录了微信,也不一定能进行微信支付,要检查有没有绑定银行卡,否则没有支付权限1️⃣ 主体一般指用户,也可以是程序,需要访问系统中的资源2️⃣ 资源分为系统功能资源和实体资源。实体资源由资源类型和资源实例组成3️⃣权限规定了用户对资源的操作许可4、会话为了避免用户每次操作都进行认证,将用户的信
2021-09-22 21:28:49 1134 2
原创 AC 自动机(ˉ﹃ˉ)
AC 自动机(ˉ﹃ˉ)其实学这么久字符串就是冲着这个算法在学,终于学到了一、模板1、【模板】AC自动机(简单版)题目背景警告:通过套取数据而直接“打表”过题者,是作弊行为,发现即棕名。这是一道简单的 AC 自动机模板题,用于检测正确性以及算法常数。题目描述给定 n 个模式串 si 和一个文本串 t,求有多少个不同的模式串在文本串里出现过。两个模式串不同当且仅当他们编号不同。输入格式第一行是一个整数,表示模式串的个数 n。第 2 到第 (n+1) 行,每行一个字符串,第 (i+1) 行
2021-08-11 14:58:35 463
原创 Trie树ヾ(=゚・゚=)ノ喵♪
Trie树ヾ(=゚・゚=)ノ喵♪一、想说的话感觉难度不是很大,两个操作,存和查。遍历操作会和图相结合,难度不大的时候用深搜比较多二、[TJOI2010]阅读理解题目描述英语老师留了 N 篇阅读理解作业,但是每篇英文短文都有很多生词需要查字典,为了节约时间,现在要做个统计,算一算某些生词都在哪几篇短文中出现过。输入格式第一行为整数 N ,表示短文篇数,其中每篇短文只含空格和小写字母。按下来的 N 行,每行描述一篇短文。每行的开头是一个整数 L ,表示这篇短文由 L 个单词组成。接下来是 L 个
2021-08-04 10:26:38 268
原创 ST表ヾ(×× ) ツ
ST表ヾ(×× ) ツ一、ST表ST表示用来解决RMQ问题的一种算法,感觉解释起来还是比较复杂,有很多大佬写得都很好,大家可以找一下,我这里简单说一下。RMQ问题即区间最值问题,即我们要求任意区间范围内的最值,ST表的思想是,求出区间长度为 2^n(n >= 0)的区间内的最值,当我们要找某个区间的最值的时候,就用这些区间拼接起来表示比如说某个长度为3的区间的最值,就可以通过比较对应的两个长度为2且相交的区间的最值来得出。核心代码 for(int j=1;j<=LC;j++)
2021-08-02 14:15:24 247
原创 字符串(づ。◕‿‿◕。)づ进阶之章
字符串(づ。◕‿‿◕。)づ进阶之章一、[国家集训队]最长双回文串题目描述顺序和逆序读起来完全一样的串叫做回文串。比如acbca是回文串,而abc不是(abc的顺序为abc,逆序为cba,不相同)。输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1∣X∣,∣Y∣≥1)且X和Y都是回文串。输入格式一行由小写英文字母组成的字符串S。输出格式一行一个整数,表示最长双回文子串的长度。输入输出样例输入 #1baacaabbacabb输出 #112说
2021-07-28 11:20:23 274
原创 树状数组 (๑•́₃ •)
树状数组 (๑•́₃ •)一、想说的话我是学完st表之后学的树状数组,这个概念主要是在st表的基础上增加了动态查询,结合到了前缀和与差分的概念,用到了分块的思想,代码和思想都比较简洁。感觉树状数组最难的点是想到用这个,还是我太不熟练了。写完这些题之后总结一下,目前遇到的和数状数组相关的类型:动态求区间和区间加法(也是前缀和那种感觉)求逆序对求不同的数的个数还有上面的情况的扩展,感觉自己距离灵活运用树状数组还有很长的路要去努力二、【模板】树状数组 1题目描述如题,已知一个数列,你需要进
2021-07-25 13:30:20 313
原创 JDBC笔记
1、数据库驱动2、JDBC3、第一个JDBC程序1️⃣ 建表CREATE DATABASE `jdbcStudy` CHARACTER SET utf8 COLLATE utf8_general_ci;USE `jdbcStudy`;CREATE TABLE `users`( `id` INT PRIMARY KEY, `NAME` VARCHAR(40), `PASSWORD` VARCHAR(40), `email` VARCHAR(60), birthday DATE)
2021-07-14 15:58:16 85
原创 收藏级MySQL笔记 (๑•́₃ •)
一、数据库简介0、数据类型1、数据库的字段属性PS int类型的限制宽度只是显示宽度,和插入的值的位数无关,影响零填充2、创建数据库表-- 注意点 使用英文括号 表的名称和字段尽量使用 ``括起来-- AUTO_INCREMENT 自增-- 字符串使用单引号-- 所有的语句后面加, 除了最后一个-- PRIMARY KEY 主键, 一般一个表只有一个CREATE TABLE IF NOT EXISTS `student`( `id` INT(4) NOT NULL AUTO_I
2021-07-12 12:21:54 270 1
原创 ヾ(o◕∀◕)ノヾ各种动态规划经典例题(状压DP,倍增DP)
ヾ(o◕∀◕)ノヾ各种动态规划经典例题(状压DP,倍增DP)一、yyy loves Maths VII题目背景yyy 对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为“厄运数字”。题目描述一群同学在和 yyy 玩一个游戏。每次,他们会给 yyy n 张卡片,卡片上有数字,所有的数字都是“幸运数字”,我们认为第 ii 张卡片上数字是 ai。每次 yyy 可以选择向前走 ai 步并且丢掉第 i 张卡片。当他手上没有卡片的时候他就赢了。但是呢,大家对“厄运
2021-07-11 11:59:05 222
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人