【前言】

尘封半年之久的机房合作再次被鹅大组长提上日程,为了积极响应组长的号召最近两日在噼里啪啦的弄机房!逐渐追回了开始合作时信誓旦旦的宣言(详情点击《机房收费系统合作版:开始团队合作之旅》),有木有同感哈?@鹅@思!!!

【趣味横生的优化】

重新找回了当年的激情后,下面的事就好办了!相比半年前青涩的我们,这次的我们都经历了BS和项目的洗礼后,也不像当年无从下手,而是手到擒来很快界面和功能就逐渐的都出来了。不过也感激当时对需求昏天黑地的讨论,以及当时写下的文档画下的图尽管错误百出。

下面就一起谈谈在优化的时候解决一个问题。

首先先说下需求(做过机房的伙伴们可直接飘过),当登录主界面时需要给用户实时的显示当前正在上机的人数。

图示一:主界面

显示人数到不难做到,数据库中有张上下机的表,只要从数据库中读取取正在上机的记录的条数即可。但是为了增加用户的体验度,如何做到实时那?在这个问题上还是花了点心思,下面就一起展示一下我是如何想的,以及如何实现滴!

第一步:无疑当这个主界面加载时需要显示,于是乎在窗体加载的时候调用了从数据库查的来显示。

代码展示:

图示二:主窗体加载代码

第二步:当点击上机或下机按钮时数量会发生变化。

代码展示(这里以上机为例,下机时也相同):

图示三:上机代码

第三步:本想到第二步就大功告成,但是忽然脑海中又飘过了学生上机状态界面中的全部下机和选中下机的按钮。

图示四:学生上机状态查询界面

(1)猛一想,感觉挺简单不和第一步和第二步做的工作一样吗???正当自己在窃喜时忽感并非如此简单,第一步中加载和第二步中的上机和下机按钮执行的事件均在主窗体中,而全部下机事件和选中下机的事件则在学生上机状态查看,如何将事件触发后通知到主窗体让其更新在线人数显示那???正当冥思苦想一筹莫展时,忽然瞄到了主界面上当前时间(见图示一),这时天空飘来五个字——Timer控件监听!为何如此说,来一起看下:

当前时间显示代码展示:

图示五:当前时间显示代码

在Timer事件中加入监测上下机表中的数据变化代码展示:

图示六:Timer事件中监测数据库中上机表监测事件

心中不由的窃喜有了这个自动监听(一秒钟会去数据库中查一次上下机表显示到界面上)不仅这里的跨窗体触发解决了,而且上下机和加载里的显示人数也没有必要,即第一步和第二步可省略。

(2)窃喜之余忽然脑海中闪现出两个字—“性能”!回想起上述实现的方法,不禁背后冒出一身冷汗,每隔一秒查一次数据库,这得多消耗资源。作为一个致力于成为优秀架构师的我,绝不能将就用这种实现方法。于是果断放弃这种实现方法,换一种新的思路。

换一种心情,思路马上就来!可以通过共享变量来传递执行事件,用Timer控件来检测这个变量,如果发生变化则更新主界面上当前上机人数。这样一来不是每隔一秒被动去调一下数据库,而是主动当触发事件是改变检测变量的值,让Timer控件去检测变量,这样就大大增加了性能。

主窗体中定义标识变量代码展示:

图示七:主窗体中定义标识变量代码

全部学生下机和选中学生下机代码展示(这里以选中学生下机为例):

图示八:选中学生下机代码

主界面中Timer事件监控代码展示:

                                图示九:主界面中Timer事件监控代码

秉着不断追求完美的态度,又思考到全部下机时全部下机成功后才会改变主界面的变量,主界面中的Timer事就不用再去数据库中查直接为显示上机人数的label赋值为零即可,不用再去数据库中查。并且全部下机后应将主界面中遗留的上机信息给清除掉。

全部下机完善后主界面中Timer事件代码展示:

图示十:部下机完善后主界面中Timer事件代码

至此上机人数显示的实时优化暂告一段落,让我们感受一下最终效果图(以强制全部下机为例):

在主界面中上机三个人展示:

图示十一:主界面中上机三个人

最终效果展示:

图示十二:最终效果

【总结】

只有想不到没有做不到,回味这一路探索自己一直像着了魔似的有干劲,回想自己劲头为什么这么大?不得不说就是自己在测试廊坊一中以及维护考试和评教系统时,当大数据量访问时,代码如果不够好,系统轻则卡住重则崩溃,此时无数用户焦急的等待眼神深深的印在我的脑海中。

每每脑海中浮现出这些焦急等待眼神时,自己在服微软,谷歌这种国际性的公司之余,也暗自下定决心自己也要严格要求自己不断追求完美,必定自己将来也要做出让全世界人民都使用的好产品。相信只要有这股干劲,这一切即将会发生。

机房收费系统合作版(二):透过显示上机人数品味如何做到全心全意为人民服务相关推荐

  1. 机房收费系统合作版(四):一路走来感谢有你相伴

    [前言] 伴随着1月25日米老师首次验收以及1月31日学术再次验收,鹅思晗小组的机房收费系统合作版终于画上一个圆满的句号. 回想这两个大牛和一只小菜的软件开发之旅还是蛮有趣的:特记于此,以此来纪念我这 ...

  2. 机房收费系统合作版(一):开始团队合作之旅

    时光荏苒,犹记去年这时开始自己人生的第一个系统(机房收费系统个人版)的开发,又至刚刚弄完的机房收费个人重构版,至此自己对这个系统已开发了二次,趁热打铁于是乎轰轰烈烈的开始了自己对机房收费的第三遍合作之 ...

  3. 机房收费系统合作版(三):利用备忘录模式实现取消修改基本数据

    [前言] 鹅思晗小组三个菜鸟成就一个系统,在这个过程中我有幸负责BLL层和外观层的实现.做过机房的朋友都知道,BLL层一个亮点就是设计模式. 至今犹记去年六月份鹅思晗小组成立后,那几天轰轰烈烈的探讨, ...

  4. 项目总结——机房收费系统合作版

    机房合作就结束了,这次合作开发是第一次与别人一块儿开发一个系统,收获还是蛮大的.以下我总结几点算是经验吧,供以后參考: 管理上     1.计划     在准备合作开发之前我们三个去找米老师,老师给我 ...

  5. 【机房合作】机房收费系统合作版总结

    经历了为期一个半月的机房合作开发过程,自己的沟通表达,写作开发以及业务能力方面都有了很大程度的提升,在此来总结一下这个开发的过程. 一.前期准备的重要性 在我以前的认知里,写代码,做项目就是直接开干, ...

  6. 机房收费系统合作版(五)——初识托付

    托付是什么?你对托付熟悉吗?答案是肯定的!你对托付一定非常熟悉! 对托付的熟悉,正如你对一个倒立着的人一样熟悉!为什么这么说?由于方法的调用对于每个学习过编程的人来说都非常熟悉,并且是熟悉的不能再熟悉 ...

  7. 机房收费系统重构版:照葫芦画瓢

        跟随着培养计划的步伐,自己弄完三层后就风风火火的开始了自己机房重构之路!现在回首这一路,有苦过有兴奋过,有想放弃不再做的时候也有挑灯夜战本本没电自动关机的时候,这一切的一切组成了自己这段时间最 ...

  8. 机房收费系统重构版:那个系统我们一起遇到的问题

    前言:  总是说在问题中茁壮成长,俗话说光说不练假把式!回想之前确实停留在嘴上说说就完事了的假把式上,这次敲了第二次机房重构后根据自己的切身经历仔细回味了一番.相比于之前有了更深的理解吧,感觉还是有记 ...

  9. 机房收费系统个人重构版:暮然回首,灯火阑珊

    [背景]   在蹒跚中自己的机房收费系统个人重构版已完结:回望这一路征程,感慨颇多:快乐过,痛苦过:紧张过,放松过!真可谓:酸甜苦辣,五味杂陈. [比一比] VB.Net版个人重构版比VB版机房收费系 ...

最新文章

  1. 把脉Linux上USB数据流
  2. “我为什么反对AI论文强制开源代码”
  3. 用python画四叶草代码-python—字符串拼接三种方法
  4. svn update 发生冲突(conflict)时,各选项含义
  5. 1712: 最大乘积(贪心/dfs)
  6. 逻辑电平0和1的世界
  7. 吐血整理!内部包含3980大数据、机器学习、推荐系统实战课程,仅分享一次
  8. 杂笔,Objective-C的认知
  9. Django网站管理--ModelAdmin
  10. 手机写python爬虫_零基础开始写Python爬虫心得
  11. 【CCCC】L2-020 功夫传人 (25分),,模拟水题,多叉树的存储与遍历
  12. jsp和java一样具有平台独立性._web开发技术总复习题
  13. echarts 地图散点
  14. 企业微信PC版支持多个企业切换了
  15. Logstash 原理分析/配置文件详解 时间 日期 时区 ip 反斜杠 grok在线地址 类型转换
  16. 联想win10系统忘记开机密码解决方式
  17. 一文了解三种3D视觉技术
  18. 导航栏不变 页面切换 最简单的方法
  19. 什么是机器学习? 来自数据的情报
  20. 用函数实现求一元二次方程ax^2+bx+c=0的根

热门文章

  1. 零经验程序员如何抢占面试机会?
  2. 微信推视频红包;百度春晚红包互动 137 亿次;谷歌用皮影庆猪年 | 极客头条...
  3. 年后跳槽 BAT 必看,10 种干货帮你 Offer 拿到手软!
  4. 未来 10 年的科技圈,将会因这 10 项技术而颠覆!
  5. 如何用Python快速实现区块链?
  6. 互联网年终福利大盘点,告诉你过年的正确姿势!
  7. 12306 被质疑过度获取用户隐私,不授权还买不了票
  8. Wi-Fi 爆重大安全漏洞,Android、iOS、Windows 等所有无线设备都不安全了
  9. 【JVM原理探索,Java组件化架构实践
  10. 满满的干货!mysql技术介绍