OO第三单元总结
OO第三单元总结前言本单元的作业相对前两个单元来说简单,具体需要做的就是根据提供的JML撰写相应的代码,重点来了安全按照规格编写代码只能确保正确性,却不能保证性能。这也充分体现了JML这种契约式编程下,设计与实现相分离的特点,当然这里的分离并非完全分离,实现需要在保证符合设计的要求下尽可能的达到高性能的目标(毕竟没人喜欢低性能的程序吧!)。
虽说简单,但是为了表示严谨而长篇大论的JML在描述某些规格时却异常繁杂,而这也使其成为了本单元与算法设计(因为低性能的算法真的会挂点QAQ)并列唯二的重中之重。
第九次作业作业要求维护一个社交网络,并对其中用户及之间关系进行管理.用户可通过标签管理与自己存在关系的其他用户.
在阅读官方包给定的相应的JML规格后,依据规格 实现相应的Person,Network,Tag类来分别implement相应的接口,需严格满足接口给出的JML规格定义.
阅读关于异常行为的描述,结合官方包给定的异常类的javadoc,体会异常处理的流程.
同时还要在主类中调用官方包的Runner类,载入实现的类来运行程序.实际上就是将接口的JML规格实现成相应的代 ...
OS_lab3
lab3实验报告思考题Thinking 3.1题面1请结合 MOS 中的页目录自映射应用解释代码中 e->env_pgdir[PDX(UVPT)] = PADDR(e->env_pgdir) | PTE_V 的含义。
回答在MOS中,根据自映射机制,将页表和页目录映射到了用户空间中的0x7fc00000-0x80000000(UVPT-ULIM)区域,而由于自映射,所以物理内存上页目录单独占一页,其余二级页表单独占一页,但是在虚空间上某一个二级页表对应的虚拟页和页目录对应的虚拟页实际上重叠的,也就是某个二级页表虚地址同页目录虚地址重合,那么这两者对应的物理页框也应该重合,而页目录的每一个页表项存储的是相应二级页表所在页的基地址,因此在页目录中应该有一个页表项存储的是到页目录这一页本身的物理页框号,也即”自映射页表”。因此,由于按需分配元组,在初始化对应页目录时需要设置映射到页目录自身的页表项,而其在页目录中的索引应该与虚空间上页目录按4KB大小在所有二级页表中的索引以及第一个二级页表按4MB大小在虚空间上的索引,也就是PDX(UVPT),PDX()的作用是取一个32位二进制 ...
OS_lab2
lab2实验报告思考题Thinking 2.1题面1请根据上述说明,回答问题:在编写的 C 程序中,指针变量中存储的地址被视为虚拟地址,还是物理地址?MIPS 汇编程序中 lw 和 sw 指令使用的地址被视为虚拟地址,还是物理地址?
回答答:C程序中指针变量中存储的地址被视为虚拟地址。MIPS汇编程序中lw和sw指令使用的地址被视为虚拟地址。
Thinking 2.2题面123请思考下述两个问题:• 从可重用性的角度,阐述用宏来实现链表的好处。• 查看实验环境中的 /usr/include/sys/queue.h,了解其中单向链表与循环链表的实现,比较它们与本实验中使用的双向链表,分析三者在插入与删除操作上的性能差异。
回答
采用宏定义对链表相关操作进行封装,使得相关操作可复用,减少了每次使用重新再书写的工作量,同时还减小了复杂度,使代码可读性更好,便于维护。
先查看/usr/include/sys/queue.h中单向链表和循环链表的实现:三者在插入与删除操作上有一定的性能差别:1). 对于单向链表,由于所有节点都只维护了一个指向下一个节点的指针,因此在删除时需要遍历链表找到删除节点 ...
OO第二单元总结
OO第二单元总结第五次作业题面先解释若干概念:
目的选层电梯系统:
1.进入电梯前,乘客输入目标楼层(?没进电梯选楼层);
2.电梯系统根据策略指定电梯服务,并告知结果;
3.乘客进入电梯后,无需再按楼层,电梯自动送其至相应楼层。
优先级指数:表示不同类型乘客到达目的楼层急迫程度。
请求调度器:解析读入请求信息后,根据此时电梯运行状态将乘客请求合理分配给某部电梯的调度器,可以理解成指挥电梯运作的大脑。
此外,被分配请求的电梯将经过上下行、开关门、乘客进出电梯等动作,将乘客从起点运送至终点,注意每到一层都需要打印到达的相应楼层的信息。
单部电梯运行策略与电梯系统的调度策略可任意指定,即任意时刻,电梯的操作都可自定义,只要保证在电梯系统运行时间不超过要求时间上限且将所有乘客送至目的地。
一些约束
电梯楼层为B4-B1,F1-F7,11层,初始在F1层;6部电梯,id为1-6;0.4s/层(需要体现在时间戳上,也就是当前一层Arrive后到下一层Arrive之间需要手动间隔0.4s,也就是让电梯线程sleep(400));限载6人;开关门间隔大于等于0.4s。
一些电 ...
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基本思想,模型表达式,软硬间隔的物理含义,如何解 ...




