BUAA OO Unit2总结

2301_81225599 2301_81225599 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

一、第二次作业

一、架构变化

建了主要类,电梯线程,乘客schedular,和处理input的线程,以及处理请求的线程。其中大部分都是在main函数里建的实例,把mainqueue传到其他类里方便统一操作。还有getadvice获取电梯下一步的状态。

二、度量

1、类图

img

三、bug

1、我的bug

1.开始出现cpu超时,原因是一句catch里的内容没有换为e.printStackTrace()而是用了自动补全的。。

四、同步块的设置和锁,调度器

在所有的maintable方法设置了锁,唯一多个线程都需要访问的。

不需要调度。直接把对应乘客分给电梯。电梯用lookstrategy处理请求。

二、第二次作业

一、架构变化

对新增的sche指令,主要改了电梯和subqueue部分,其中还新增了buffer用来把sche时分给电梯的请求传到subqueue里。改了getadvice的判断。

二、度量

1、类图

img

三、bug

1、我的bug

1.在move后面加了判断是不是sche,防止移动超过两层。

2.删除了sche外面没必要的锁,避免sche响应时间太长。

3.把分配策略改了,不判断是否在sche,防止超时,所以需要加一个buffer能防止begin之后receive。

四、同步块的设置和锁,调度器

新增的sche,需要在电梯类的一些方法和subtable方法里加锁,因为会有需求回流。

分配请求的条件:哪个需求少就分给哪个。开始如果在sche就不分配请求,但是这样会导致如果来了好多请求会分给同一个电梯超时,所以把这个条件去掉了。

三、第三次作业

一、架构变化

没怎么改。新增了transfer类连接两个电梯来统一update。在电梯里新增了相关方法。改了getadvice,让电梯只要到了换乘层就执行放人进人然后离开。

二、度量

1、类图

img

三、bug

1、我的bug

中测bug:没有统一begin和end导致b电梯begin后输出receive。
强测:direction计算直接返回原来的没有重新算导致sche之类改变方向的指令之后方向错了会把乘客分给update后不能送他的电梯。

四、同步块的设置和锁,调度器

新增的transfer里的状态需要加锁。

没变,多了对update后的ab电梯能不能进的判断。

五、双轿厢的同步开始改造和运行时两个轿厢不碰撞

transfer类记录进度:ready->begin->finish->end,同步update。

运行时设置occupy,empty记录换乘层的状态,并且move到换乘层后立刻放人进人离开。

四、debug方法

1.中间输出变量,看输出结果,如当前occupy状态。

2.分给电梯请求之前的部分可以调试。

3.看代码逻辑问题,语句处理先后问题。

五、心得体会

线程安全:在所有需要对同一个东西读写交互的方法加上锁,如对mainqueue,或同一个subqueue。如果加多了可能导致运行时间过长。

层次化设计:每个模块应该用清晰划分的职责,并有清晰的接口与其他模块交互,我的代码存在一些某个类与其他类交互过多的问题,这样在多线程中也很容易出现线程不安全的问题,应该减少变量在过多类传递。

...全文

相关推荐

CISP-CSE注册云安全工程师备考资源包基础教程

随着云计算技术的普及,云安全已成为网络安全领域的核心议题。CISP-CSE(注册云安全工程师)认证由中国信息安全测评中心颁发,旨在培养具备云安全专业知识和实践能力的实战型人才。本教程将结合"CISP-CSE注册云安全工程师备考资源包",系统性地为您梳理云安全的核心知识体系,并提供实战案例分析,助您高效备考。

t0_54coder

绘图模拟:在冲动环境中固定时间的示例 附matlab代码.rar

绘图模拟:在冲动环境中固定时间的示例 附matlab代码.rar

天天Matlab科研工作室

基于规则的电动汽车混合能源管理系统,采用MATLAB、Simulink、Simscape Electrical和Stateflow。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光

完全复现虚拟同步发电机VSG自适应惯量阻尼控制仿真、根轨迹、调节系数对比(Simulink仿真、Matlab代码实现)

内容概要:本文围绕虚拟同步发电机(VSG)的自适应惯量阻尼控制展开深入研究,通过Simulink搭建详细的系统仿真模型,并结合Matlab代码实现控制算法,系统分析了根轨迹特性及不同调节系数对系统动态响应的影响。研究重点在于设计并验证一种能够根据电网频率变化自动调整惯量和阻尼参数的自适应控制策略,有效提升了VSG在面对负载突变或新能源波动时的频率稳定性与抗干扰能力,为高比例可再生能源接入下的电力系统稳定运行提供了关键技术支撑。; 适合人群:具备电力系统分析、自动控制理论及新能源并网技术基础的研究生、科研人员以及从事微电网、分布式能源系统设计与运维的工程技术人员。; 使用场景及目标:①深入理解虚拟同步发电机的工作原理及其在提升电网惯性方面的关键作用;②掌握基于Simulink的电力电子与控制系统建模与仿真方法;③学习并实践惯量和阻尼自适应控制策略的设计流程,通过根轨迹分析手段优化控制器参数,提升系统动态性能。; 阅读建议:建议读者结合所提供的Simulink仿真模型与Matlab代码进行同步操作,重点关注控制器设计逻辑与参数整定过程,通过改变调节系数观察系统响应变化,深化对稳定性判据与控制性能之间关系的理解。

冒泡芳

【雷达信号处理】数字下变频(DDC)(Matlab代码实现)

【雷达信号处理】数字下变频(DDC)(Matlab代码实现)内容概要:本文主要介绍了数字下变频(DDC)技术在雷达信号处理中的应用,并提供了基于Matlab的代码实现。DDC作为现代雷达系统中的关键环节,主要用于将高频接收信号转换为便于后续处理的低频或基带信号,从而提高信号处理效率与精度。文中详细阐述了DDC的基本原理,包括混频、低通滤波和抽取等步骤,并通过Matlab代码展示了其实现过程,帮助读者理解如何在实际工程中构建和调试DDC模块。此外,文档还提及该资源属于一个涵盖多个科研方向的技术资料集合,如路径规划、电力系统优化、机器学习、通信系统仿真等,强调借助成熟工具与方法可提升科研效率。 适合人群:具备一定信号处理基础知识和Matlab编程能力的研究生、科研人员及工程技术人员,尤其适用于从事雷达系统设计、通信工程或相关领域研究的人员。 使用场景及目标:① 学习和掌握数字下变频(DDC)在雷达信号处理中的基本原理与实现方法;② 利用Matlab进行算法仿真与验证,辅助完成课程设计、毕业课题或科研项目中的信号处理部分;③ 借助提供的代码框架拓展至其他通信或雷达系统仿真任务中。 阅读建议:此资源以Matlab代码为核心载体,注重理论与实践结合,建议读者在学习过程中同步运行代码并调整参数,观察不同设置对下变频结果的影响,加深对混频泄漏、滤波器设计和采样率变化等问题的理解,从而真正掌握DDC的关键技术细节。

程序猿鑫
评论
收藏 已收藏
分享
返回顶部