北航2025面向对象设计与构造第四单元&全课程总结
你好!本文章为该博客的第十四篇文章!
本文章包含北航2025面向对象设计与构造第四单元的博客作业内容,期望同学们通过本次博客作业对该单元内容有一定了解。
本文章已经投送至本单元博客作业!
可能你已经发现了,本文章并未在完成后被及时投送至博客中,所以这其实是一个有点失去时效性的填坑投稿……
需要注意的是,本文仅完全适用于北航2025OO课程,对于之前和之后的课程,课程部分内容可能会发生变动,发生冲突时请以当前课程为准!
以及,如果本文章涉及学术诚信问题,请第一时间和我联系,我将及时做出修改,谢谢支持!
北航2025面向对象设计与构造第四单元&全课程总结
前言
较为轻松的一个单元,正适合做一些回顾课程的工作。
仔细想想,一个学期的OO学习,恰如在巨浪中学习游泳一样,危险、富有挑战,但学到的知识也终身难忘。
第四单元作业总结
UML与建模
简而言之,本单元我所采用的是建模与实现交替的方法,在完成UML类图的同时逐步完成实现。
在架构设计之初,我通过对指导书中“图书馆”“用户”“书籍”“书架/xx处”等关键词的识别,得出了UML类图中所展现的各个类型,再通过书籍的转移过程识别出各类型需 ...
北航2025面向对象设计与构造第三单元总结
你好!本文章为该博客的第十三篇文章!
本文章包含北航2025面向对象设计与构造第三单元的博客作业内容,期望同学们通过本次博客作业对该单元内容有一定了解。
本文章已经投送至本单元博客作业!
可能你已经发现了,本文章并未在完成后被及时投送至博客中,所以这其实是一个有点失去时效性的填坑投稿……
需要注意的是,本文仅完全适用于北航2025OO课程,对于之前和之后的课程,课程部分内容可能会发生变动,发生冲突时请以当前课程为准!
以及,如果本文章涉及学术诚信问题,请第一时间和我联系,我将及时做出修改,谢谢支持!
(顺便,JML在现在真有用吗.jpg)
北航2025面向对象设计与构造第三单元总结
前言
本单元第一次强测出现错误。同时也做了第一次研讨课个人分享。
总之,本单元最重要的经验是:把正确性托付给规格的严谨阅读,把性能托付给自己的复杂度识别。
大模型与规格化设计
一个显而易见的事情是,LLM的出现让写代码在某种意义上成了一种体力活。
但是仍然存在一个问题:如何让LLM写出准确的代码。这个事情取代了写代码本身,成为了困扰我们的一个问题。
当然,现在有许多通过改进LLM的方法解决这个问题。但是在这 ...
北航2025面向对象设计与构造第二单元总结
你好!本文章为该博客的第十二篇文章!
本文章包含北航2025面向对象设计与构造第二单元的博客作业内容,期望同学们通过本次博客作业对该单元内容有一定了解。
本文章已经投送至本单元博客作业!
可能你已经发现了,本文章并未在完成后被及时投送至博客中,所以这其实是一个有点失去时效性的填坑投稿……
需要注意的是,本文仅完全适用于北航2025OO课程,对于之前和之后的课程,课程部分内容可能会发生变动,发生冲突时请以当前课程为准!
以及,如果本文章涉及学术诚信问题,请第一时间和我联系,我将及时做出修改,谢谢支持!
北航2025面向对象设计与构造第二单元总结
前言
经过本单元的作业和反思之后,我所得出的最重要的经验是:解决问题的应该是好的设计,但好的设计来源于广泛持久的学习。
架构迭代过程与设计
架构迭代过程概述
架构总体设计
本单元作业整体架构如下:
参考了“生产者——消费者模式”,将输入和主调度器通过独立的请求队列进行分离;
主调度器下分设各个管理单电梯的调度器,将乘客选择电梯和乘客乘坐电梯分离;
设置抽象的电梯控制类(或接口),通过子类实现具体方法,保证电梯内调度方式的可扩展性。
分设电梯控制 ...
北航2025 OS shell挑战性任务实现指导
你好!本文章为该博客的第十二篇文章!
本文章包含北航2025操作系统shell挑战性任务的实现指导,期望通过重述题目描述和给出一种可行的设计思路来帮助大家更好的完成此挑战性任务。
需要注意的是,本文仅完全适用于北航2025OS课程,对于之前和之后的课程,课程部分内容可能会发生变动,发生冲突时请以当前课程为准!
以及,如果本文章涉及学术诚信问题,请第一时间和我联系,我将及时做出修改,谢谢支持!
本文章已完成,如有疑问请在评论区提出!
2025/06/23 upd:增加了赤石仙人@wrongization 的shell挑战性任务博客链接:BUAA-OS-shell | wrongization(以及他的另一篇赤石实录:BUAA-OO-unit1 | wrongization)(
2025/06/26 upd:在“实现过程-文件架构”中增加了处理指令的顺序和本次任务之间的对应关系。
北航2025 OS shell挑战性任务实现指导
前言
本文为北航2025《操作系统》课程的shell挑战性任务(基于lab6的MOS架构)的实现指导,主要聚焦于给出一种可行的设计思路,以及基于该设计的具体实现。 ...
北航2025面向对象设计与构造第一单元总结
你好!本文章为该博客的第十一篇文章!
本文章包含北航2025面向对象设计与构造第一单元作业的思路简述,期望通过一个我自己用的顺手的构造给予一些设计上的建议。
本文章已经投送至本单元博客作业!
需要注意的是,本文仅完全适用于北航2025OO课程,对于之前和之后的课程,课程部分内容可能会发生变动,发生冲突时请以当前课程为准!
以及,如果本文章涉及学术诚信问题,请第一时间和我联系,我将及时做出修改,谢谢支持!
为什么我把按单次作业写文章变成按单元写
第二次还是第三次第三次作业生病之后,越发感觉为了一个课程而累死累活是非常不值得的事情。身体重要。
而且我也不是那种思路随时都能来的人。
虽然我自认为我的想法还是可以写文章发博客的。
(也许你会看到文章里有一些特别不协调的东西,毕竟课程要求和我想写的东西还是有点出入的。)
前言
从本单元作业开始之初,我始终用一句话来自省:在这门课上,解决问题的应该是好的设计,并非巨量的功能与复杂的优化。
如今完成了一个月的任务,很难说自己是否准确的践行了这一句话,但是确实对“好的设计”有了一点点理解。
总之,让我来评价我所设计的架构的话,我会如此比喻:一个灵活的胖 ...
北航2025面向对象设计与构造第一次作业思路简述
你好!本文章为该博客的第⑩篇文章!
本文章包含北航2025面向对象设计与构造第一次作业的思路简述,期望通过一个我自己用的顺手的构造给予一些设计上的提示。
本文章即将同步投送至该次作业下的讨论区!
需要注意的是,本文仅完全适用于北航2025OO课程,对于之前和之后的课程,课程部分内容可能会发生变动,发生冲突时请以当前课程为准!
以及,如果本文章涉及学术诚信问题,请第一时间和我联系,我将及时做出修改,谢谢支持!
北航2025面向对象设计与构造第一次作业思路简述
前言——为什么要写这个
hw1本身难点在于递归下降的递归过程,以及化简过程中隐含的各类操作。
因此,总结一种尽可能简单,且基本符合课程组形式化描述的设计方法。
同时保证文字尽可能精炼,怕太长的文章没人读。
整体思路
采用递归下降的分析方法,定义乘法方法和加法方法化简表达式。细分为以下四步:
定义类型:好的类型能让后续过程更加容易处理。
词法分析:给出合理的切词方式。
语法分析:处理出表达式树。
括号拆解和同类项合并:拆开各级括号,同时用合并来避免计算过程项数过多。
调整符号和顺序:通过一些显然的优化,让表达式更简 ...
北航CO 2024 P7经验分享
你好!本文章为该博客的第⑨篇文章!
本文章包含北航2024计组实验课P7课下部分的个人理解,第一次课上题目的简要介绍和一种实现思路。
由于P7教程内容实现方法过于宽泛,所以这里我仅对自己的理解做一个分享,并不意味着这一环节的某一部分写法只有文章内一种,如果你觉得其他方法更好可以直接采纳。
本文章参考了 BUAA-CO-Lab P7 MIPS 微体系 | ROIFE BLOG 和 P7 课下 & 课上总结 - 北航计算机组成原理 | Test Blog = FlyingLandlord’s Blog,在此非常感谢两位前辈做出的贡献!(没有这两篇文章的话,我可能还要在P7耗上超过一倍的时间)
本文章将在北航2024计组实验课结束之前持续更新,如果你在阅读本文的过程中遇到了不理解的地方/发现了有笔误的地方(哪怕只是非常小的笔误)/觉得某部分还有更好的实现,请务必在评论区里留下这些想法!(或者,直接联系我本人也可以!)
同样的,请务必仔细读完整篇文章,以及上述推荐的博客后再动手,以保证自己所理解的内容没有巨大的偏差。
需要注意的是,本文仅完全适用于北航2024计组课程,对于之前和之后的 ...
北航CO 2024 P6课上部分题目回忆与分析
你好!本文章为该博客的第8篇文章!
本文章是对课上部分的题目回忆(真的只有部分,关于T1我能说很大一段),不保证回忆内容一定正确,请各位注意甄别!
以及,如果本文章涉及学术诚信问题,请第一时间和我联系,我将及时做出修改,谢谢支持!
P6课上题目(T1)回忆
三题仍然为互相独立的添加指令题,这次我只写T1的回忆。
准确来说,我还是只想写这次上机里有含金量的题,T2有含金量的部分几乎为0,T3和第一次P5课上的T3考点重合度太高(需要了解的可自行查阅我之前写的博客),于是我只想完整回忆T1。
T1添加指令为 fmultu,R型指令。具体操作为进行一个需要在乘除模块计算3个周期的计算指令,操作细节如下:
首先,对 GPR[rs] 和 GPR[rt] 进行64位无符号乘法,结果记为 prod。
若 prod 高32位为0,则把 prod[63:32] 保存到 HI 寄存器中,把 prod[31:0] 保存到 LO 寄存器中。
否则,我们找到 prod 中最高位1的出现位置 highbit_1 与 prod 中最低位0的出现位置 lowbit_0 (可以证明,这种情况下 prod 中必定存在至少 ...
北航CO 2024 P5课上部分题目回忆与分析
你好!本文章为该博客的第7篇文章!
本文章是对课上部分的题目回忆(这次真的只有部分,因为关于T3我能说很大一段),不保证回忆内容一定正确,请各位注意甄别!
以及,如果本文章涉及学术诚信问题,请第一时间和我联系,我将及时做出修改,谢谢支持!
P5课上题目(T3)回忆
三题仍然为互相独立的添加指令题,但是这次我只写T3的回忆。
准确来说,我只想写这次上机里有含金量的题,T1和T2T3相比有含金量的部分几乎为0,T2又只有一个清空延迟槽可以说道说道,于是我只想完整回忆T3,至于清空延迟槽,我会在写T3正解前先写一下大概内容。
T3添加指令为 lwoc,I型指令。具体操作为,从DM中读取起始地址为 GPRbase+sign_ext(offset<<2∣∣02)GPR_{base}+\text{sign\_ext}(offset<<2 || 0^2)GPRbase+sign_ext(offset<<2∣∣02) 的一整个字,若该结果小于无符号32位整数 0x80000000,则取该结果的低4位进行零扩展后作为写入 GRF 的地址,否则取指令中的 rt 为写入 ...
北航CO 2024 P4课上部分题目回忆与分析
你好!本文章为该博客的第⑥篇文章!
本文章是对课上部分的题目回忆,不保证回忆内容一定正确,请各位注意甄别!
以及,如果本文章涉及学术诚信问题,请第一时间和我联系,我将及时做出修改,谢谢支持!
P4课上题目回忆
三题仍然为互相独立的添加指令题。(懒得写RTL了)
第一题添加指令为 eam,R型指令。具体操作为,取出 GPR[rs] 的低16位,作为一个有符号数对17取模,结果必须为0~16的某一个非负数,结果为一个16位的数。之后,若 GPR[rt] 的最高位为1,则将该运算结果零扩展至32位,否则将该运算结果一扩展至32位,将结果存至 GPR[rd] 中。
第二题添加指令为 cptl,I型指令(注意,这个不是J型指令,跳转方式和beq类似)。具体操作为,若 GPR[rs] 的低18位的二进制表示中存在连续6个1,则将PC+4存于 GPR[rt] 中,否则将PC+4存于 GPR[31] 中。之后,把PC的值无条件修改为 PC+4+sign_ext(offset<<2∣∣02)PC+4+\text{sign\_ext}(offset<<2 || 0^2)PC+4+s ...