- 博客(88)
- 收藏
- 关注
原创 编译原理 LR(0)
Ii(i = 0,1,2,3,4,5)是改造文法的第一个文法(S'->S)就在$那列写上acc。比如I5:S->(S)S. ,I5的action部分全写上r1。GOTO{ I0 , ( }的意思是在I0状态推进 '('action写终结符,GOTO写非终结符。I0推进S到I1,就在I0行S列写上1。I0推进(到I1,就在I0行(写上S2。已知G:S->(S)S | ε。结尾的且是改造文法中的式子。后的非终结符S且具有S->
2024-04-24 22:27:16 215
原创 编译原理 LL(1)
符号串ABC…,并且A不能推导出空串ε,显然根据定义First(ABC…)=First(A)符号串ABC…,并且A可能推导出空串ε,当A不是空串的时候,显然First(A)属于First(ABC…),但当A是空串的时候,ABC…就成了BC…,此时根据B是否能推出空串来决定是否将First(B)加入First (ABC…)。
2024-04-22 11:59:49 294
原创 计算机系统结构基于硬件的前瞻执行
假设送过来的分支总是正确的,然后继续向下执行指令,执行出来的结构放入一个叫 ROB (ReOrder Buffer) 的缓冲器中。等到相应的指令得到 “确认” 后,才将结果写入寄存器或者存储器。利用 Tomasulo 算法消除了数据相关和名相关 , 再利用外加硬件的方式 , 避免了不可恢复的写操作。实质是数据流执行(data flow execution):只要操作数有效,指令就执行。Tomasulo一文指出乱序提交正是Tomasulo最大的缺点。
2023-12-20 14:14:11 1124
原创 计算机系统结构Tomasulo算法
(2)假设各种操作的延迟为: load:1个时钟周期 加法:2个时钟周期 乘法:10个时钟周期 除法:40个时钟周期 给出MUL.D指令准备写结果时各状态表的内容。LD指令,流出,占用第一个Load缓冲器,34+R2地址存放在A字段,目标寄存器是F6,还需要把寄存器状态表F6更改load1,建立起双向链接。保留站中,对于Vj和Qj,应该写入Qj(只有立即数才写入Vj),R(F4)已经就绪,取出来是立即数,应该放入Vj。此时F2寄存器状态表为Load2,表示没有就绪,F4寄存器状态表为空,表示数已经就绪。
2023-12-20 11:01:46 609 1
原创 数据库操作习题12.12
考虑如下的人员数据,其中加下划线的是主码,数据库模式由四个关系组成:employee (empnameworks (empnamecompany(idmanagers (empname, mgrname)其中关系 employee 给出人员的基本信息,包括人员姓名(empname),居住的城市(city)和街道 (street):works 存人员工作的公司名称(compname) 及年薪 (salary),单位为万元;
2023-12-18 12:43:29 644
原创 Rucbase缓冲池管理器——LRU替换策略
本题需要实现缓冲池管理器BufferPoolManager和缓冲池替换策略Replacer相关的接口,缓冲池管理器负责管理缓冲池中的页面在内外存的交换,缓冲池替换策略主要负责缓冲区页面的淘汰和查找。学生可以阅读项目结构文档中缓冲池管理器的相关说明,以及代码框架中src/storage和src/replacer文件夹下的代码文件。
2023-12-09 12:14:47 467
原创 Windows系统 TexWorks 显示“Font Monaco not found.“
【代码】Windows系统 TexWorks 显示“Font Monaco not found.“
2023-11-27 16:33:20 474
原创 Rucbase 存储管理——磁盘管理器
本题需要实现磁盘管理器DiskManager的相关接口,磁盘管理器负责文件操作、读写页面等。阅读项目结构文档中磁盘管理器的相关说明,以及代码框架中src/errors.h、src/storage/disk_manager.h、src/storage/disk_manager.cpp、src/common/config.h文件,实现以下接口:该接口的参数path为文件名,该接口的功能是创建文件,其文件名为path参数指定的文件名。
2023-11-21 18:38:24 202
原创 SQL 连接
左连接(Left Join)是一种用于联接两个或多个表的操作,它返回左表中的所有行以及与右表中满足联接条件的匹配行。如果右表中没有与左表匹配的行,则对应的结果列将填充为 NULL 值。把成绩表左连接到做了自然连接的表,保证每个学生各门课字段都在,不会因为没参加考试就不算。(COUNT(*)/2):一个进程包括start和end两个时间戳,所以要除以2。TIMESTAMPDIFF函数,小的日期前面。是一个日期函数,在给定的日期上添加指定的时。的值是'2023-10-17',那么。
2023-10-18 19:59:03 226
原创 git连接ssh设置经常断连问题
把里面的HashKnownHosts设置为no,然后加上ServerAliveInterval 60。上github挂梯子忘记关掉再git push的时候会出现公钥验证失败的问题。
2023-10-15 20:20:51 59
原创 WSL+vscode配置miniob环境
在工程的.vscode目录下新建tasks.json ,有了就直接在上面改。重新使用vscode打开,打开后会自动运行tasks的cmake。在工程的.vscode目录下新建launch.json。在WSL中执行以下命令,WSL注意用管理员方式运行。找个位置Git Bash然后拉取代码。
2023-10-11 11:30:00 432 1
原创 OpenMP
因为是并行,所以会有i = 0和i = 1交替出现的情况,同时需要用private将j声明成线程私有变量,因为i = 0时的j和i = 1时的j不一样。比如在斐波那契数列,算了前面的才能算后面的,但是parallel for会把n次迭代分配好后同时开始算,并不会等计算下标在前的数的线程算好后再算。j = 6,9为一个线程,j = 8,7为一个线程,不需要private声明,开启并行区域时,两个线程的i索引都相同,用的是同一层i下的j。对私有变量的终结操作,把私有变量(最后的循环迭代)拷贝到同名串行变量中。
2023-07-30 12:05:25 449
原创 实验二 编写Pthreads程序实现“任务队列”
编写一个Pthreads程序实现一个“任务队列”。主线程启动用户指定数量的线程,这些线程进入条件等待状态。主线程生成一些任务(一定计算量),每生成一个新的任务,就用条件变量唤醒一个线程,当这个唤醒线程执行完任务时,回到条件等待状态。当主线程生成完所有任务,设置全局变量表示再没有要生成的任务了,并用一个广播唤醒所有线程。为了清晰起见,建议任务采用链表操作可以自己手动改 Gen_work函数中的循环次数以改变任务计算量。
2023-07-16 19:45:00 227
原创 实验一:编写Pthreads程序实现直方图统计
1.实现直方图统计必定会有大量的IO操作,当数据规模很大时,IO会耗费大量时间并且占据整个终端屏幕,影响我们观察数据。因此,在加大数据规模评估性能的时候,把Print_histo函数注释掉即可2.自身电脑实验环境为12核处理机,2.70GHz,机带RAM为16.0GB3.实现直方图统计的数据规模为1000,评估性能数据规模为10000000。均为将【0,100】分为10个区间。
2023-07-11 15:38:01 183
原创 基于Pthreads多线程程序设计
函数原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);功能说明:创建一个线程。参数说明thread:线程句柄,需要先定义一个 pthread_t 类型变量 thread,将该变量的地址 &thread 传递到该参数中去。这是一个传出参数,传递进去的 thread 会得到系统为我们创建好的线程句柄。attr:attr可以。
2023-07-09 16:36:39 525
原创 Docker
Docker是一个用于开发、配置、运行的开放平台。Docker将应用与环境相隔离,让应用程序可以得到快速交付。通俗地讲,Docker是一个虚拟环境容器,可以将你的开发环境、代码、配置文件一并打包放到这个容器中,并发布和应用到任意平台中。
2023-07-03 14:13:20 256
原创 Linux基础
root用户,cd ~ 相当于 cd /root普通用户,cd ~ 相当于cd /home/当前用户名注:cd - 返回进入此目录之前所在目录!!执行最近的一次命令echo $USER 展现当前用户名字echo $PATH 展现当前路径echo *txt 把后缀是txt的文件都找出来通过管道,history 配合 grep 使用。
2023-06-29 22:40:59 114
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人