OO第一单元总结
BUAA-OO第一单元作业第一次作业训练目标借助对数学意义上的表达式结构进行建模,完成单变量多项式的括号展开,体会层次化设计的思想应用和工程实现。
题面读入一个包含+、-、*、^、()(至多一层括号)的单变量表达式,输出恒等变形展开所有括号后的表达式,即最终表达式中并不含括号。
代码UML图
如UML图所示,除了MainClass主类外,还定义了Lexer词法分析器类、Parser语法分析器类、Expr表达式类、Term项类、Token类、Const常量因子类、Var变量因子类和Factor因子接口等,其中Token类中采用了Type枚举输入input中的一些不同的Token(可以理解为作为运算或符号的 “单元” )(例如ADD(+)、SUB(-)、MUL(*)、LPAREN(()、RPAREN())、POW(^)、NUM、VAR(x)、BLANK( || \t)等)。因此Lexer初始化时做的就是将输入字符串进行词法分析得到相应的Token类别分布并装入动态数组中,此外在lexer类中设置当前语法分析到的位置index和获取当前位置的Token、移动到下一个位置和判断当前是否到Tok ...
OS_lab1
lab1实验报告思考题Thinking 1.1题面1在阅读附录中的编译链接详解以及本章内容后,尝试分别使用实验环境中的原生 x86 工具链(gcc、ld、readelf、objdump 等)和 MIPS 交叉编译工具链(带有mips-linux-gnu- 前缀,如 mips-linux-gnu-gcc、mips-linux-gnu-ld),重复其中的编译和解析过程,观察相应的结果,并解释其中向 objdump 传入的参数的含义。
回答作为GNU binutils工具集中一个重要成员,objdump命令的语法格式为:
1objdump [options] <filename>
其中常用的[options]即参数有-d、-D、-S、-C等:
作用
参数
将目标文件中的机器码反汇编成汇编指令,一般用于查看程序的执行逻辑
-d
与-d选项类似,但反汇编范围更大,-d只反汇编.txet段,但-D反汇编所有段(只要其看起来像包含可执行代码或可被反汇编的)。
-D
混合显示源码和汇编代码,记得该选项需要在编译时使用-g选项生成调试信息。
-S
将Cpp符号名逆 ...
OS理论
OS理论王道刷题重点
进程切换时,需进行上下文切换,完成:1).将当前CPU中各寄存器的内容存到当前进程的PCB中;2).将新进程的现场信息装入CPU各个寄存器;3).将控制转至新进程,即更新程序计数器、用来指明系统内核栈位置的寄存器——栈基址寄存器和指明当前进程顶级页表基地址(这里指的是物理地址)的寄存器——页表基址寄存器。
死锁产生的四个必要条件:互斥条件、请求并保持条件、不可剥夺条件和循环等待条件。
死锁处理策略:死锁预防(破坏必要条件,可以确保不发生死锁现象)、死锁避免(资源动态分配,防止进入死锁状态,银行家算法不能判断系统当前是否处于死锁状态)、死锁检测(允许发生死锁,采取措施解除)
在具有对换功能的OS中,通常将外存分为文件区和对换区,前者存放文件,后者存放从内存换出的进程。抖动现象指刚被换出的页很快又要被访问,而又要被换出其他页,而该页又很快又要被访问,如此频繁地置换页面导致大部分时间花在页面置换上,使系统性能下降。撤销部分进程可减少要用到的页面数,防止抖动。
采用连续分配方式,使很大的一部分内存处于暂时或“永久”的空闲状态,造成内存资源浪费,无法从逻辑上扩大内存容量,因 ...
OS_lab0
Lab0实验报告思考题Thinking 0.1题面1234567思考下列有关 Git 的问题:• 在前述已初始化的 ~/learnGit 目录下,创建一个名为 README.txt 的文件。执行命令 git status > Untracked.txt(其中的 > 为输出重定向,我们将在 0.6.3 中详细介绍)。• 在 README.txt 文件中添加任意文件内容,然后使用 add 命令,再执行命令 git status > Stage.txt。• 提交 README.txt,并在提交说明里写入自己的学号。• 执行命令 cat Untracked.txt 和 cat Stage.txt,对比两次运行的结果,体会README.txt 两次所处位置的不同。• 修改 README.txt 文件,再执行命令 git status > Modified.txt。• 执行命令 cat Modified.txt,观察其结果和第一次执行 add 命令之前的 status 是否一样,并思考原因。
回答1.cat Untracked.txt与cat Stage.txt命令输出内 ...
信号处理与信息推断
信号处理与信息推断贝叶斯定理信息推断从观察到的现象推断背后的原因
最大似然估计参考概统
ML
机器学习机器学习概念监督学习与无监督学习本质区别在于在训练数据中是否有标签,部分数据有标签的称为半监督学习。
监督学习中,输出数据分散的,称为分类问题;连续的,称为回归问题。其本质是为了最小化错误率或者残差平方和。
常会出现过拟合或欠拟合的问题。
同时需要尽量降低模型的**泛化误差(噪声+误差+偏差)**。
贝叶斯决策最小错误率贝叶斯决策已知条件类别数一定
已知各类在这d维的先验概率以及类条件概率密度
以最大后验概率作为判决函数
找后验概率最大的进行分类
目标使错误概率P(e)达到最小,
根据错误概率定义以及图像分析,后验概率曲线交点为最优点。
最小风险贝叶斯决策目标使期望风险最小
若对每个决策,都使其条件风险最小
朴素贝叶斯决策属性条件独立性假设:假设各属性独立地分类结果产生影响
贝叶斯估计将待估计参数当作符合某种先验概率分布的随机变量,在对样本观测过程中,将先验概率密度修正为后验概率密度。
ML往年题涉及方面2019秋
贝叶斯决策,最小风险和最小错误率。
决策树中ID3和C4.5的两种算法区别,预剪枝和后剪枝基本思想和优缺点。
SVM基本思想,模型表达式,软硬间隔的物理含义,如何解 ...
OS实验
OS实验OS采用MIPS32的相关补充MIPS Calling Convention
一个栈帧一般由5个部分组成:
用于本地数据存储的部分,函数会为此区域内所有局部变量保留足够存储空间,包括要在函数调用前后保留的任何临时寄存器值的空间
(Pad,空白填充)作用是为了确保栈帧总大小是8字节的倍数,确保上方局部数据存储部分是双字对齐,与64位体系结构的双字读取指令兼容。不一定存在,需要根据具体情况给出分配。一般来说是一个字,因为假若原本的字的个数是偶数,则字节数一定能整除8(一个字4个字节的话);若为奇数,只需要Pad填充一个字即可得到偶数字,因此至多只需要一个Pad。
返回地址部分,即存储$ra值的部分。只有在函数内部需要调用其他函数的时候才需要。
保留寄存器部分,保存当前子函数被调用时,当前子函数需要保存的寄存器(如:$S0 到 $s7)的值,在当前函数中就可以随意使用这些寄存器了,注意:在当前子函数返回前需要将相应寄存器的值给返回回去。这样一来父函数认为完全没有发生改变。
参数部分,父函数调用子函数时会将子函数需要的参数传入此处,实现对函数调用时的传参。注意:由于$a0-$a3只要 ...
算法
算法杂项滑动窗口与双指针定长滑动窗口将窗口长度固定,移动左右边界left和right来维护长度。一些基础题:leetcode:定长字串中元音字母的最大数目等。进阶题:存在重复元素|||等。
KMP算法前缀函数某一字符串的所有不包含自身的相同前后缀中长度最长的值,记为Π。例如:ATAATA的前缀值Π = 3.对于一个字符数组,可以用数组Π[i]表示到第(i + 1)个字符形成的字符串的Π值。例如:对ATAATA的Π[] = [0, 0, 1, 1, 2, 3].那么想要对于主串S判断其中是否存在字串s,只需要将s和S通过特殊的字符’#’连接起来,并计算Π数组,其中只要有数组值刚好等于s.len即可说明s存在于S中,否则不存在;注意:此处的特殊字符不一定一定是’#’,但一定是不存在于主串中的字符。接下来就是对于Π数组的计算,由于对于第一个字符没有前后缀,因此其Π值刚好是0,而此后的字符stri,可以比较str[Π[i - 1]]与str[i]的关系。若相等,则说明,Π[i]就是在Π[i - 1]的基础上加1;反之,进一步去比较str[Π[Π[i - 1] - 1 ...
CO理论重点与易错点
计组理论重点与易错点Cache1.时间局部性:最近的未来要用到的信息,很可能是现在正在使用的数据,因为程序中存在循环和需要多次重复执行的子程序段,以及对数组的存储和访问操作。
空间局部性:最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间上是邻近的,因为指令通常是顺序存放、执行指令的,数据也一般是以向量、数组等形式簇聚地存储的。
2.Cache与主存间按数据块为单位进行数据交换,Cache与CPU之间以字为单位进行数据交换。
3.CPU与Cache间数据交换以字为单位,而Cache与主存间的数据交换以Cache块为单位。
4.当集中访问的存储区超过Cache组的大小时,命中率可能变得很低,这种现象被称为抖动。
5.Cache一致性问题:主要针对写操作。
一、写命中:
1).全写法/直写法:CPU对Cache写命中时,必须将数据同时写入Cache和主存,实现简单,能够随时保持主存数据的正确性。但增加了访存次数。改进:写缓冲,CPU写命中时同时写入Cache和写缓冲(位于Cache和主存之间的一个FIFO队列)中,其可解决速度不匹配问题,但若出现频繁写会使写缓冲饱和溢出 ...
P7_L0_document
P7_L0_document设计草稿任务清单新增加指令:
eret:COP0== 010000、func ==011000,PC <- CP0[EPC]
mfc0:COP0== 010000、rs(原来rs的地方)== 00000,GRF[rt] <- CP0[rd]
mtc0:COP0 == 010000、rs(原来rs的地方) == 00100,CP0[rd] <- GRF[rt]
syscall:op == 000000、func == 001100
任务
解释
计时器
课程组提供代码,理解应用即可
系统桥
为CPU提供统一的访问外设的接口,需按规格自行实现
协处理器CP0
设置CPU的异常处理功能,反馈CPU的异常信息,需按规格自行实现
内部异常检测与流水
CPU需可检测内部指令执行错误的能力
外部中断响应
CPU需有初步相应外部中断信号的能力
异常处理指令
异常处理程序 ...