一次又一次的挑战,一次又一次全新的知识,我来到了多线程的面前 第五次作业 1.度量分析 >第五次作业由于很大程度上调用的是前两次电梯的一些代码,所以存在的问题与前几次也十分相似.同时由于第一次使用多线程来解决问题,可能将某些功能过于集中的放在了个别类中.导致McCabe Cyclomatic Complexity以及Nested Block Depth出现标红的现象. 2.类图 >这次在类图上面问题体现的也很明显,在方法的分配上并没有做的很平均.这主要是由于为第一次多线程作业,所以将大部分的功…
OO第二次博客作业——电梯调度 前言 最近三周,OO课程进入多线程学习阶段,主要通过三次电梯调度作业来学习.从单部电梯的傻瓜式调度到有性能要求的调度到多部电梯的调度,难度逐渐提升,对同学们的要求逐渐变高,我们对线程的理解也逐渐加深.下面笔者将对三次作业分别进行总结. 一.单部多线程傻瓜调度(FAFS)电梯 说明:本次作业需要模拟一个多线程实时电梯系统,从标准输入中输入请求信息,程序进行接收和处理,模拟电梯运行,将必要的运行信息通过输出接口进行输出.本次作业对性能要求非常宽松,不需要进行优化处理.…
OO第二次博客作业 零.写在前面 OO第二单元宣告结束,在这个单元里自己算是真正对面向对象编程产生了比较深刻的理解,也认识到了一个合理的架构为编程带来的极大的便利. (挂三次评测分数 看出得分接近等差数列 菜鸡本质暴露无遗) 一.总体设计策略 三次作业设计策略基本相同.前两次是四个类:Main.Elevator.Taker.Waiter:两个线程:main.elevator.第三次在此基础上多了一个类:Dispatcher,一个线程:dispatcher.之所以前两次没有调度器类,是因为由于只有…
libcurl 多线程使用注意事项 - Balder~专栏 - 博客频道 - CSDN.NET libcurl 多线程使用注意事项 分类: C/C++学习 2012-05-24 18:48 2843人阅读 评论(1) 收藏 举报 多线程asynchronous文档behaviortcp任务 (1), 超时(timeout) libcurl 是 一个很不错的库,支持http,ftp等很多的协议.使用库最大的心得就是,不仔细看文档,仅仅看着例子就写程序,是一件危险的事情.我的程序崩溃了,我 怀疑是自…
在我开始写这次博客作业的时候,窗外响起了希望之花,由此联想到乘坐自己写的电梯FROM-3-TO--1下楼洗澡,然后······ 开个玩笑,这么辣鸡的电梯肯定不会投入实际使用的,何况只是一次作业.还是从中认真分析一下经验和不足吧. 作业一:FIFO单电梯 现在看起来,作业一的难度在整个单元真的仅仅相当于热身.使用线程安全的集合类ConcurrentLinkedQueue存储线程,再用while(true)轮询的方法实现电梯的获取请求,获得请求后运行电梯,运行结束后等待下一个请求即可.整个程序甚至不…
一.多线程电梯系列作业设计策略 1. 第一次作业——"FAFS傻瓜电梯" 第一次作业是先来先服务的"傻瓜电梯",我当时觉得这个设计未免太简单了,于是就在傻瓜电梯的基础上加上贪心算法,每次都执行电梯内外距离最近的请求(但是没有行进中的捎带).由于第一次没有限制CPU时间,而且我的wait--notify用得不太熟,因此就采取了暴力轮询的方式.我将我将调度器线程写在了main函数中(这是个很不好的设计,第三次作业中将其改进)作为一个线程,电梯作为一个线程,输入作为一个线…
第一次作业 1. 设计策略 第一次作业,一共三个线程,主线程.输入线程和电梯线程,有一个共享对象--调度器(队列). 调度的策略大多集中到了电梯里,调度器反而只剩下一个队列. 2. 基于度量的分析 类图: 方法复杂度: 如上所说,调度的策略大多集中到了电梯里,导致电梯的run方法复杂度大大提升. 类复杂度: solid原则: Single Responsibility Principle (单一功能原则): 基本满足,电梯.输入处理.调度队列的功能职责都只归属于一个类. Open Close P…
三次作业的设计策略 第一次作业 多线程协同控制 第一次作业只需要两个线程和一个公共缓冲区: 负责读取输入并把它添加进命令队列的线程,即生产者 负责从命令队列中取出命令执行的线程,即消费者 再加上一个缓冲区:命令队列 相对应的线程之间的互斥和同步操作及对应的处理方法 互斥操作: 互斥1:对命令队列的读-写操作和写-写操作之间的互斥: 我采用的方法是使用Java的ReadWriteLock来实现互斥操作,通过封装Vector类为自己的线程安全的命令队列类,实现读-写互斥和写-写互斥. 互斥2:为了实…
P1 设计结构 三次作业的架构都没有较大的改动,基本上都是靠调度器接受输入的请求并放入队列,然后调度器根据不同的电梯的当前状态来把请求分配至不同电梯的请求队列中,最后电梯再根据自己的请求队列去运行.因此接下来都以第三次的作业为例来进行讨论. 一.diagram MainClass类 负责创建并启动调度器线程和所有的电梯线程,然后不断地读取输入并送至调度器. ControllerAll类 能够读取所有电梯的信息以及所有的输入请求,然后根据电梯的状态来对请求进行分配.其成员变量requests为共享…
本单元从电梯调度相关问题层层深入,带领我们学习并运用了了多线程相关的知识. 三次电梯调度依次为单电梯单容量.单电梯可携带.多电梯可携带. 一.我的设计 在第一次作业中,使用了最简单的FIFO调度方法.设计思路大体如下:设计一个容器,在读入到新乘客请求时将之放入容器尾,容器非空时,电梯线程将在自己处于非载客状态时取出容器首元素进行工作,完成此次工作后,检查容器,非空继续工作,否则wait直到容器获得新乘客唤醒电梯或者输入结束从而结束线程. 在第二次作业中,一共有两个线程,分别为电梯线程与乘客申请线…
多线程协同与同步控制总结 第五次作业-多线程电梯 本次作业是我第一次接触多线程,建立了请求模拟器.调度器和电梯运行三种线程.请求模拟器负责在输入后识别有效请求:调度器在扫描有效请求后将新的请求加入请求队列,并扫描三部电梯的信息,最后遍历请求队列中的请求进行调度,并根据得到的信息进行请求状态和请求队列的更新:电梯运行线程则根据得到的信息进行运动,同时改编电梯信息.实现多线程功能中最大的挑战是实现共享数据的安全.避免冲突(一开始没有加synchronized修饰符导致出现很多bug),因此在与同学讨…
过去三周里,我们完成了多线程电梯的程序设计与构造.这是我第一次接触多线程编程.我感觉最大的困难在于多个线程中的操作,谁先谁后,不是像以前写的单线程程序那样严格确定,所以心里常常会比较慌.尤其是因为多线程运行有一定随机性,常常可能会发生bug无法复现的情况,或者是代码有风险但碰巧测试运行时没有出现问题. 一.设计策略总结 电梯问题的多线程设计,与理论课上学习的生产者消费者模型是比较类似的.请求队列支持插入新的请求和弹出请求(给电梯).仿照生产者消费者模型,把读线程看作生产者,把电梯线程看作消费者,…
第五次作业 这次作业是电梯系列作业的终极版,要求是使用多线程实现三部电梯的运行.这次作业的难点在于第一次运用多线程技术,对于线程中的行为并不了解,以及电梯功能的实现(如果之前作业采取的是扫描指令队列预先判断电梯行为,而电梯类仅用于实现状态跳转,那么就意味着这次作业要重新设计).多线程这部分,我在完成作业的时候了解的并不多,仅仅使用了thread.sleep()方法进行对于运行时间的模拟,以及在指令队列中疯狂添加synchronized修饰方法,而并不知道这样的深刻意义.而核心的电梯行为这部分,由…
第二单元第一次作业 多线程设计策略 第一次作业的想法是设计三个线程:输入线程,调度器线程以及电梯线程.输入线程获取请求并发送给调度器线程:调度器线程通过查询电梯线程的状态(等待.停靠以及移动),并综合已有的请求为电梯线程分配目标:电梯线程根据分配到的目标进行移动,并进行上下乘客操作. 为了这么做输入线程与电梯线程有一共享变量requestQueue用以保存请求,调度器线程与电梯线程有一共享变量taskQueue用来保存电梯的移动目标.这种设计的初衷是让不同线程尽量只干自己该干的事,即输入线程负责…
不知道怎么说好呢,自己对自己也很没有信心的,希望自己能做出些许改变…
OO博客总结--OO落下帷幕 凡此过往,皆为序章. 不知不觉OO课程即将落下帷幕,一路坎坎坷坷磕磕绊绊,可算是要结束了,心里终于松了一口气,也有小小的不甘和遗憾.凡此过往,皆为序章.特殊的线上OO课程结束了,但面向对象的旅程才刚刚开始! 一.第四单元架构设计 第一次作业 本次作业是完成类图的解析器,对类图进行一些基本的分析,如对类图中类\操作\属性\关联\实现\继承等查询. 我认为第四单元作业第一步要解决的是对UML的几种主要视图,特别是类图,状态图,顺序图的结构和mdj文件结构的分析.如果将U…
     在做一个Phonegap+Jqm工程的时候,出现了如题的问题,相信很多人都遇到过Jquerymobile点击body时候header和footer会闪烁的显示和隐藏问题,fixed却并不能真正fixed,如果想将header和footer真正固定住,还是很麻烦的.起初是想通过监听body的click事件,覆盖jquerymobile默认的click让header和footer能够真正固定下来,不会因为点击body而出现隐藏和出现的问题,但是设想是美好的,结果是残酷的,我在电脑的chro…
类似QQ与360软件,消息提示有两种.上下浮动.渐入渐出. 1.上下浮动提示框实现 机制,定时器响应上下浮动消息. 主要API:MoveWindow. 源码如下UpDownTipDlg.h.UpDownTipDlg.cpp. UpDownTipDlg.h [cpp] view plaincopy /* *@brief 上下浮动提示框 *@date 2012-8-9 */ #pragma once // CUpDownTipDlg dialog class CUpDownTipDlg : publ…
类似360消息弹出框,实现方式一见http://blog.csdn.net/segen_jaa/article/details/7848598. 本文采用另外的API实现渐入渐出效果. 主要API:SetLayeredWindowAttributes. 实现功能: 采用管理器控制消息框每次只显示一个. 消息框独立显示在右下角,不随主窗口放大缩小变化. 鼠标进入消息框区域,渐入渐出效果停止. 1.消息框实现 创建对话框类CMsgTipDlg,设置对话框属性. Tool Window:true.设置…
原文NSIS:实现程序窗口逐渐透明的渐入渐出效果 需要修改版的插件(支持timer功能): MUI:InstallOptions.dll MUI2:nsDialogs.dll 以及system插件,(受api限制)只能运行于2k或者更高的平台之上.   轻狂说明: 请在相应目录下建立transparent.ini文件. 001 /* 002 <a href="http://www.flighty.cn" target="_blank">www.fligh…
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 喜欢我的博客请记住我的名字:秦元培,我的博客地址是blog.csdn.net/qinyuanpei. 转载请注明出处,本文作者:…
OO Unit2多线程电梯总结博客 传说中的电梯居然就这样写完了-撒花…
jq对渐入渐出进行封装,简单的使用连个方法就可以实现.fadeIn(),fadeOut();如果我们界面没有使用jq那么原生怎么实现呢? 我们讲解一下,这个原理.当我们要实现渐入的时候,首先是让隐藏的div慢慢的显示,通过让opacity慢慢从 0.0 (完全透明)到 1.0(完全不透明).渐出就是逻辑反过来的. 下面我们直接贴代码: css: * {margin:; padding:} body {font:12px Verdana,Arial; color:#; background:#}…
弧形菜单2(动画渐入+Kotlin开发) 前言:基于AndroidStudio的采用Kotlin语言开发的动画渐入的弧形菜单...... 效果: 开发环境:AndroidStudio2.2.1+gradle-2.14.1 涉及知识:1.自定义控件,2.事件分发等 部分代码: Activity: class HomepageActivity : AppCompatActivity() { private var homePageMenuLayout: HomePageMenuLayout? = n…
LazyFadeInView 渐入显示text文本 https://github.com/itouch2/LazyFadeInView LazyFadeInView is a cool way to animate the appearnce of a label. This effect is a clone of Secret app. LazyFadeInView 非常酷,以一种动画的形式来显示一个label.与 Secret app 中的效果一样. Usage To use LazyFa…
很多网站都有那种图片渐入的效果,如:http://www.mi.com/minote/,这种效果用css3和一些js实现起来特别简单. 拿我之前做的页面来说一下怎么利用css3来实现图片渐入效果. 下面是页面中的一段html: <div class="features"> <div class="container"> <div class="inner feature"> <div class=&quo…
当我们在拿到一段人声并想把它加入歌曲中时,如果我们发现人声没有渐入的效果,直接加入到歌曲里出现会变得很突兀的话,我们就需要用到这篇文章所介绍的方法,给人声加上一个渐入的效果. 1. 找到我们需要处理的人声并将它连接到混音台 我这里举FL Studio自带人声VOC Introduce为例进行教程.我们将该人声拖入View Playlist后,双击点开,鼠标单击右上角的Track,按快捷键Ctrl+L即可连接到一个新的混音台轨道. 图1:连接到混音台 2. 加入混响 FL Studio自带多种混响…
bug中的"二八定律" 本文主要为讨论2020/3/17下午OO课讨论的第三个思考题设立 有一个经典的经验性原则,叫帕累托原则,也称为二八定律.这个原则在经济.社会和科技等多个领域都有精彩的应用和解释.在代码质量方面也有这样的观察:80%的bug集中在20%的模块中,针对这个现象,请思考: 为什么会出现这种bug聚集效应? 这样的20%模块是否具有什么共性特征? 二八定律 首先看一下百度百科怎么说: 二八定律又名80/20定律.帕累托法则(Pareto's principle)也叫巴莱…
第四单元博客总结--暨OO课程总结 第四单元架构设计 第一次UML作业 简单陈述 第一次作业较为简单,只需要实现查询功能,并在查询的同时考虑到性能问题,即我简单的将每一次查询的结果以及递归的上层结果都存储下来,使用一个Boolean型变量记录是否更新过该结果,即日后查询可以直接返回查询内容,而无需再次更新,也算是一种较为无脑的办法,根据后来的评测数据以及结果来看,性能.CPU运行时间并不是该次作业的重点,正确性才是关键之所在.需要同学们对于UML每一个元素有充分的理解,同时助教也在讨论区回答大家…
oo 第一次博客作业 早在大一就听说了oo的各种传奇故事,大二下学期终于也开始了我的oo之旅. 基于度量来分析自己的程序结构 第一次作业 类图分析 耦合度分析 可以看出在第一次作业中,我的耦合度非常高,还停留在面向过程式的设计. 第二次作业 类图分析 耦合度分析 可以发现在第二回作业中虽然我有意识的拆分类,但组织结构仍然不好,耦合度仍然很高. 第三次作业 类图分析 耦合度分析 可以分析发现,这次的作业有了一些oo的样子,对input, output, terms有了各自的package,并且耦合…