北航OO(2020)第二单元博客作业ref

本单元的三次作业中,我采用了相似的策略:采用输入线程与电梯线程通过线程安全的调度器进行交互的方式。这种方式基本属于生产者-消费者模式。在调度器的设计方面,我主要采用synchronized关键字结合wait和notify方法完成互斥访问和同步控制。

Elevator类有且仅有一个public方法:run方法,仅仅负责执行电梯的运行逻辑。

Main类有且仅有一个public方法:main方法。但main方法既负责创建线程,又负责输入的处理与结束,具有多重责任。可以采取创建新的输入类和输入线程的方法解决这个设计问题。

Dispatcher类具有多个public方法,但每个方法都有唯一确定的职责,通过下面章节中UML类图即可确认这一特性。Dispatcher类负责将请求放置于每一楼层,供Elevator取用,满足了SRP原则。

FloorConverter类有两个public方法,负责将楼层号与数组下标相互转换,满足了SRP原则。

FloorSelector类有两个public方法,分别用来判断当前层是否可以停靠和选择乘客的目的楼层。这两个职责都需要电梯的停靠信息,而且逻辑联系较为紧密,因此可以置于同一类中完成。

本次作业中除继承Thread类外没有使用任何继承,几乎都是通过修改已有实现完成新增功能,违反了OCP原则。

本次作业中除继承Thread类外没有使用任何继承,因此该原则无从体现。

本次作业中没有使用任何接口,因此该原则无从体现。

本次作业中除继承Thread类外没有使用任何继承,且没有使用任何接口,因此该原则无从体现。

通过上面的分析可以看出,扩展功能几乎一定需要通过改写已有的实现来完成。但由于类的public方法职责都较为明确,这样的设计可以为功能的扩展带来一定的便利。

本次作业构建了三个类。这些类的封装较好,对外暴露的方法较少,且都具有明确的职责。大部分方法具有明确的职责,也较为简洁。但是,Elevator类的run方法展开了电梯的一次运行逻辑,整体较为复杂;Dispatcher类的getTask方法也较为复杂,不便改动和维护。

本次作业与上一次作业架构极为相似,只是多了FloorConverter类。因此优缺点与上次大体相同,在此不再赘述。

本次作业构建了五个类。这些类的封装较好,对外暴露的方法较少,且都具有明确的职责,类间的协作关系也较为明确。大部分方法具有明确的职责,也较为简洁。但是,与前两次作业一样,Elevator类的run方法仍然展开了电梯的一次运行逻辑,整体较为复杂;Dispatcher类的getTask方法也较为复杂,不便改动和维护。

由于三次作业的线程交互模式较为类似,因此统一绘制UML时序图如下。

本单元作业在公测和互测中未出现任何bug。

本次作业同第一单元不同,需要做到在线交互。因此,本次作业的测试要求更高。但是,由于摸鱼心切,我仍然采用了手动构造测试用例的方法。因此,本单元我未能发现他人的任何bug。

通过本单元的三次作业,我对Java多线程编程有了一个初步的认识,并了解了一些简单的互斥访问与同步控制的方法。在多线程编程中,通过线程安全的共享对象来完成线程间交互是十分清晰而简洁的方式。通过对象锁,可以使该对象在同一同步块内只能被一个线程访问,且不会被打断。再结合wait和notifyAll方法,可以避免轮询,高效利用CPU资源。此外,在设计中遵循SOLID原则及一些其他重要的设计原则也是十分重要的,这些原则保证了程序结构的清晰性和良好的可扩展性。在本单元作业中,部分设计原则未能体现甚至有所违背,在今后的编程中会多加注意。

THE END
1.Fanin和Fanout工艺简单介绍Altium Designer9 BGA Fanout 扇出的操作技巧 Altium Designer9 BGA Fanout 扇出的操作技巧。一直使用Altium Designer9,一直没有真正用它来设计基于BGA封装元器件的PCB板。。今天学... 精美工艺刀 精美工艺刀。 CTS介绍——CTS(1) CTS介绍——CTS(1)这是集成电路物理设计的第八个系列【CTS】的第三篇文章,本篇...http://www.360doc.com/content/22/0310/15/78793545_1020918870.shtml
2.Fanin和Fanout工艺简单介绍Fanin 和 Fanout 工艺简单介绍2022-03-10 Jonny_Ji + 关注献花(0) 来自:Jonny_Ji > 《半导体》 猜你喜欢 类似文章【AD】AD bga扇出指南 标准单元工艺库(TSMC 90nm)文件详解 Altium Designer9 BGA Fanout 扇出的操作技巧 精美工艺刀 CTS介绍——CTS(1) PADS中BGA Fanout扇出教程...https://www.360doc.cn/article/78793545_1020918870.html
3.fanin是什么意思fanin在线翻译读音用法例句含义1 . For example, the Capacity of JetFanintunnel flux distribution and resistance loss in the chimney. 重点研究了射流风机在隧道内的的调压性能, 竖井三通的气流分布以及局部阻力损失. 来自互联网 网络释义 -fanin 1 . 扇入端数 fanin扇入端数 faninloading 扇入装入 fanout 扇出端 fanoutloading 扇出装入...https://www.chazidian.com/dict/w/fanin/
4.fanout是什麼意思fanout在線翻譯英語讀音用法例句fanout 英[f?na?t]美[f?na?t] n.輸出端數;展開;扇出 Created with Highcharts 3.0.2释义常用度分布图海词统计 扇出 展开 输出端数 fanout的用法和樣例: 辭彙搭配 fan out成扇形展開 分享单词到:http://dict.cn/big5/fanout
5....射频开关二极管高频大功率PIN二极管轴向引线封装二极管射频...WP-94142 L500A MDL-WP-94142 L500A DGTL PLUG IN FLEXENT* WP-94142L5A 109534941 - KIT CONSISTING OF WP-94142L5A AND 4539-504B - 2GB CP WP-94142L5B 109565168 - KIT CONTAINING WP-94142L5B AND PMC610J4 WP-94142L70A ASSY-WP-94142L70A FAN TRAY STL FLEXENT * WP-94142L72 DIGITAL MODU...http://www.rf-china.com/n33/TN.asp
6.林奕涵/数字VLSI电路设计前端工艺和后端工艺,先做晶体管,再进行连线 每层金属、半导体之间使用SIO2进行绝缘 布线是半导体工艺的后端 n well, polysilicon, n+ active, p+ active, Contact, Metal. scaling down(等比例缩小,以1/√2缩小特征尺寸L),提高集成度,可变成本(不包括封测成本)和面积成正比。 https://toscode.gitee.com/haochangzhi/VLSI
1.常见器件封装双列直插封装(英语:dual in-line package) 也称为DIP封装或DIP包装,简称为DIP或DIL,是一种集成电路的封装方式,集成电路的外形为长方形,在其两侧则有两排平行的金属引脚,称为排针。DIP包装的元件可以焊接在印刷电路板电镀的贯穿孔中,或是插入在DIP插座(socket)上。 https://blog.csdn.net/qq_35064811/article/details/131689497
2.何谓先进封装?–ICT百科与FCBGA 封装先切片后键合不同,晶圆级封装是先将整片晶圆封装过程完成后再进行切片,整体效率会高很多。晶圆级封装主要分为 Fan-in 和 Fan-out 两大类。传统的 WLP 封装多采用 Fan-in 型态,应用于低引脚(Pin)数的 IC,整体封装面积相较裸 Die 面积增加不大,成本相对较低。而与 Fan-in 相反,Fanout 凭借其...http://ictbaike.com/2024/02/22/%E4%BD%95%E8%B0%93%E5%85%88%E8%BF%9B%E5%B0%81%E8%A3%85%EF%BC%9F/
3.从faninfanout看setup和holdtimeviolation(1)、减小扇出Fanout,根据上文的分析可以分析Fanout较多时增加Net_delay,不利于时序收敛。减小扇出的方法有: a、寄存器复制,几个寄存器复制原先的驱动信号,分担原本由一个寄存器驱动的多个模块。 b、设置Max_Fanout,在代码中设置信号属性,将对应的Max_Fanout设置为一个合理的值,当实际中fanout超过此值时,综合器极性...https://cloud.tencent.com/developer/article/1652987
4.晶通(高邮)集成电路有限公司怎么样晶通(高邮)集成电路有限公司(以下简称“公司”)成立于2021年1月,是*的以晶圆级扇出型(fanout)先进封装技术为平台的Chipletintegration方案商,也是同时掌握晶圆级扇入型FanIn、晶圆级扇出型Fanout、FlipChip倒装以及Chipletintegration等多种先进封装技术的企业。公司主要产品类型包括单芯片Fanout封装、多芯片FanoutSIP集成封装...https://www.jobui.com/company/17331485/
5.RabbitMQ第二天从整体功能上来说,Quorum队列是在Classic经典队列的基础上做减法,因此对于RabbitMQ的长期使用者而言,其实是会影响使用体验的。它与普通队列的区别: 从官方这个比较图就能看到,Quorum队列大部分功能都是在Classic队列基础上做减法,比如Non-durable queues表示是非持久化的内存队列。Exclusivity表示独占队列,即表示队列只能由...https://www.jianshu.com/p/c348ccc48496
6.PCB线路设计及制前作业27、FanOutWiring/FaninWiring扇出布线/扇入布线 指QFP四周焊垫所引出的线路与通孔等导体,使焊妥零件能与电路板完成互连的工作。由于矩形焊垫排列非常紧密,故其对外联络必须利用矩垫方圈内或矩垫方圈外的空地,以扇形方式布线,谓之“扇出”或“扇入”。更轻薄短小的密集PCB,可在外层多安置一些焊垫以承接较多零件,...https://www.ic37.com/htm_news/2008-1/2868_170558.htm