zoukankan      html  css  js  c++  java
  • 第二次博客总结

     

    在第二阶段的OO作业中,我们的面向对象涉及到了新的知识--多线程,这几次的作业相较于前几次的作业来说,难度上有了一定的提升,代码长度上来说,也有了一定的增长,知识层面上,也有了一定的扩展。通过这几次的作业,仍然感到自己对于程序的设计仍有很多考虑不到的地方,还需继续努力。

    第五次作业

    第五次的作业我没能完成,为无效作业。在这一次的作业中,相较于以往,差别真的很大,首先在以往的作业中,我们都是事先将所有请求加入到请求队列中,而在这次的作业中,要求模拟真实时间,实时对请求进行操作,这使之前的调度器毫无作用,只能重新设计。还有就是多线程的理解与应用,第五次的作业是首次接触到多线程,在这次的作业中,我对多线程的线程设计安全理解不够深,没能理清其中的思路,因此在这次的设计中出了很大问题,导致作业无效。这次的作业也给了我一次教训,以后一定谨记此次教训,不犯相同错误。

    第六次作业

    度量图

     

    类图

     

    时序图

     

    第六次的作业是对文件进行监控,当文件进行一定的修改时,若修改操作与监控器监控操作一致时,便触发相应的任务。

    在这次的作业中,对于从控制台输入的IFTTT请求,创建一个相应的监控器,每个监控器对应一个线程,而线程之间共享的资源为监控的文件。各个线程需要获取文件信息,对文件进行修改等操作,因此会出现线程不安全的问题。针对于这个问题,需要设计一个SafeFile类,此类中包含对文件的各种操作,并且通过锁的方式将各个有可能造成线程安全问题的方法锁起来。在监控作业的实现上,我实现的方式是每个线程对各自的监控范围进行扫描,并将信息与已有的信息进行对比,如果发生了线程对应的监控操作,则进行相应的操作。而这些查询,修改操作之间都是加了锁,线程安全的。

    在这次的作业中,我感觉由于指导书上很多地方都没有明确指出,导致有很多地方存在理解会出现差错,虽然最后在交流群里,在issue上有问题的解答,但浪费了很多时间。

    在这次的作业中,由于最后时间不足,因此,对于监控对象为目录的情况没有加上去,而且在对文件重命名等判断操作上理解不清,因此导致了一些错误。在互测阶段,我分配的作业完成情况很好,没有出现明显bug。

    第七次作业

    度量图

     

    类图

     

    时序图

     

    第七次的作业是模拟城市中,对于出租车相应请求的程序,是出租车系列作业的第一次作业,主要是模拟在城市地图中,若出现请求,调度器将按照一定的规律将请求派发给相应的出租车。

    这次的作业比较前两次较为简单。对于100个出租车,每个出租车为一个线程,各自互不相关的工作。对于请求,我的做法是对于每一个输入的请求,都开一个周期大约为3000ms的线程,每个线程的的属性为请求类的一个对象,请求类中包含有请求的目的点与发出点。线程每隔大约100ms对所有出租车进行扫描,查看若有符合要求出租车,即加入抢单队列。之所以为大约100ms,是因为,线程的时间会有误差,误差累计后可能会造成错误现象,因此每sleep一次即进行一次矫正。当线程最后结束时,即在抢单队列中找出最适合的出租车发派请求。这样,100个出租车为共享资源,请求线程的扫描队列与发派请求可能会造成线程不安全,加锁即可。

    在这次的作业中,由于在对输入请求进行判断的时候发生差错,因此导致对原本应判断为无效指令的请求判断为有效,进行了处理。互测阶段分配到的作业,由于未对任何有效指令做出正常回应,因此被判为无效。

    总结与体会

    通过这三次的作业,首先,主要是对多线程和线程安全的问题上有了更多的了解,通过锁,将共享资源锁起来,使不同的线程在使用共享资源时能够不产生冲突。

    其次,在代码方面,我在网上借鉴了很多大神的代码后,发现一定要使每一个类,每个方法不能够太过庞大,庞大就意味着难以发现问题,同时十分丑陋,同时将代码简化也可以使代码中可重复部分减少。

    最后,一定要对程序负责,在任何情况下都不能使程序crash,在很多情况下都要考虑到所有情况。

  • 相关阅读:
    I.MX6 Surfaceflinger 机制
    理解 Android Fragment
    RPi 2B DDNS 动态域名
    RPi 2B IPC webcam server
    理解 Android MVP 开发模式
    I.MX6 system.img unpack repack
    can't set android permissions
    VMware Ubuntu 共享文件夹
    解决oracle数据库连接不上的问题
    perfect-scrollbar示例
  • 原文地址:https://www.cnblogs.com/fyd123/p/8980480.html
Copyright © 2011-2022 走看看