摘要:
咦,性能?我们又回到这个永恒的话题上了。Yep,大部分程序猿都对性能有着不懈追求。某国最喜欢“多快好省”,“多”和“省”我们是很难做到了,但让自己的程序跑得又快又好,则是我们最乐意干的活。干同样一件事情,别人的程序要跑1分钟,而自己的程序只要几秒钟,这是多爽的一件事啊(您打败了全国99%的程序猿……)! 不过,话虽然这样说,但实际操作起来,效率优化并不是件容易的事。时间复杂度是最容易拉开效率差距的地方,但却也是最难拉开人与人之间差距的地方——毕竟很多问题的解决方案都比较成熟了,要能找到个时间复杂度更优的算法似乎不是一件容易的事情。然而,即便是复杂度相同的两份程序,由于程序常数不同,运行效率也. 阅读全文
摘要:
关于项目先讲讲我们的项目本身。这一次和我组队的是和我来自同一个学院的华平。这个项目来源于实际需要。大家很容易想到这么个场景,在公司里,有若干路电梯,而用户发出上下楼请求后,调度器就需要调度至少一架电梯来响应用户的请求。但是,如何调度电梯就成了比较麻烦的问题。简单的调度方法就是我们常见的做法——随机挑选一架电梯到达用户所在的位置,然后把用户运到目的地,中途用户可以进出电梯(如果电梯运行方向合适的话)。这种做法应付普通时段的请求效率不错,但对于上下班、吃饭高峰期就不大适合了。比如说,上班时期,绝大多数人都是从楼底乘电梯上行,只有极少数的人会在中间楼层发出上下楼请求。此时,我们就需要一个专门优化的算 阅读全文
摘要:
这是电梯调度中各个部分的初步设计Passenger成员变量:name: 乘客的名字weight: 重量from: 乘客所在的楼层to: 乘客将要去的楼层成员方法:Request(from, to): 请求一个电梯,参数包括自身所在的楼层和要去的楼层Elevator成员变量:eleNo: 电梯编号capacity: 电梯容量currentFloor: 电梯当前所在的楼层currenetStatus: 电梯当前的状态(上升,下降,停止)成员方法:OpenDoor(): 打开电梯门CloseDoor(): 关闭电梯门Go(to): 前往某个楼层,参数是要去的楼层Stop(): 停止SetCapaci 阅读全文
摘要:
这一周本小组做了有史以来最多的discussion,几乎达到了每天一次的程度,目的就是为了决定Project的idea。一开始大家提了很多不靠谱的idea,当然也有一些靠谱的,但是很多时候都是想到了某样东西应该有的某种feature,但是又不值得为这一两个feature重做整个东西(因为这样会花很多时间在其他部分上)。当然做WP App的想法还是很一致的,最后我们决定要做一款小游戏。游戏的内容是在WP上实现这样的的一个东西:游戏的内容是复原这张图片,点击空格相邻的方块的时候方块会移动到空格上,通过这样的方式来排布整个图片,很像儿时的某些玩具(事实上我确实玩过这种东西的实体版)。我们希望这款游戏 阅读全文
摘要:
Pair Project API设计本次 Pair Project 的内容是设计一个电梯调度系统。我们认为一套完整的电梯调度系统应该包括以下三个类:(1) 乘客类(2) 电梯类(3) 调度系统类乘客类乘客(Passenger)类主要用来描述乘客的相关属性及其行为。乘客类维护以下成员:Number:乘客编号,唯一标识该乘客Weight:乘客体重Time:乘客乘坐电梯的时间Srcfloor:乘客起始楼层Dstfloor: 乘客目的楼层乘客类公开以下方法:Passenger: 构造函数,创建一个指定体重,起始楼层和目的楼层的乘客实例。Request:发出一个乘电梯的请求。电梯类电梯类用来描述电梯的属 阅读全文
摘要:
个人项目总结本次个人项目的内容是写一个统计英文词频的程序。这也是我第一次使用C#开发一个相对完整的程序,还是学到了不少东西,在这里总结一下吧。首先给出我的项目预估时间和实际时间的对比:Work ItemsTime estimationTime ActualSize estimationSize ActualDue DateFinish DateAlgorithm design1 day0.5 dayN/AN/A16-Aug17-AugI/O Module2 hours1.5 hours30 lines15 lines17-Aug18-AugKernel algorithm0.5 day3 da 阅读全文
摘要:
这次个人编程项目对大多数人来说可能比较简单,但是对我来说却没那么容易。不过经过这次项目我也学到了不少东西。首先,自己几乎对编程一无所知,所有的东西都要去查去学。开始在怎么遍历文件就卡住了,在网上找了各种遍历文件的方法,但是没有一个符合老师的要求。对我这样一个编程小白来说,以前都没用程序开过文件,自己编一个遍历文件的程序是在摸不着头脑。没办法就用了一个不支持通配符的文件遍历程序先凑活着。查找文件算是暂时凑活过去了,但是问题又来了,如何将一行字母拆成一个个单词?开始用istringstream,结果这完全就是一个坑爹货。开始是因为istringstream分两个空格之间的字符为单词,我就用repl 阅读全文
摘要:
为期两周的个人项目就这样过去了。虽然说还有很多不足的地方,但自己还是比较满意吧,毕竟是认真做了的。 项目挺简单的,就是做一个词频统计程序,用来统计文章里各个单词出现的次数。可以说,这已经简单到不能称为“项目”了。不过,写这个程序前前后后还是遇到挺多问题——毕竟,要将效率优化到极致实在是很麻烦的事情。 一开始秋丰老师给出超级指标——要让程序能处理10G数据。当时一看到这个指标我就各种囧,因为万一10G数据里所有单词都不同(即每个单词的词频都为1),这堆单词连直接存放在内存中都做不到。为了解决这个问题,程序就不得不在处理了部分数据后就将该部分的词频统计结果保存到文件上,最后再将这些文件合并输出结. 阅读全文
摘要:
最近刚刚从Real Manong组跳槽到Smart Code组,因此一些文章也需要迁移一下。下面是我之前发布在Real Manong博客上的文章。1、采访师兄师姐【Real Manong】以史为鉴 —— 采访陈凯师兄有感 (By 郭俊/JunGuo)http://www.cnblogs.com/msra2012asegroup/archive/2012/08/10/2631544.html2、《The Ph.D. Grind》读后感【Real Manong】宝剑锋从磨砺出——写在自己的Ph.D.旅程之前 (By Jun Guo)http://www.cnblogs.com/msra2012as 阅读全文
摘要:
为期两周的软件工程个人项目已经结束了,简单写一篇小文章总结一下吧。 这次的题目是统计文章单词个数,统计算法很简单,关键在于如何控制时间复杂度。经过简单的思考,我决定使用26叉树来操作,这样可以实现线性的操作。最后得到的测试结果还是不错的。在老师给的测试集下的运行时间为12秒,虽然不是最快的,但我也很满意了。这次小工程也有几个值得总结的地方。工作量预测这项工作室以前很少做的。以前只关注如何把任务完成,而没有考虑在完成之前进行期限预期。这点在求学的时候可能作用不是很明显。但对于公司中的产品开发过程来说还是很重要的,一个准确的时间预测能够给管理者及合作者一个参照,从而使得他们合理的安排其他的工作。. 阅读全文