zoukankan      html  css  js  c++  java
  • 关于这次计算机设计大赛

      忙活了一个月的计算机设计大赛终于结束了,这次的话,收获确实不少。除了奖项,还见到了很多优秀的人。

      以前看到过一个视频,大概就是在讲985,211的学生比普通本科生强在哪里,印象最深的一句话就是:"当你还在学校里为各种比赛头疼的时候,人家已经有了自己的公司,又或者已经在某某期刊上发表了自己的文章了"。

      结合这次的比赛,我觉得我和他们的区别就是,我似乎有些封闭,眼界依旧不够开放。这个和学校的教育方式也有关系,我看过清华大学讲操作系统的课,老师在讲课的时候还会穿插一些相关知识前沿的东西,比如说可以在那个网站找到最新的相关知识,可以在那个社区与全球的人交流什么的。而讲道理我们学校确实永远的根据教案讲课,几乎一本教案能讲几年也不曾变过。

      不过也确实和学生本人有关系,因为现在网络很发达了,学校的围墙并不是围困学生眼界的根本因素。

      师傅一直强调我得关注行业相关的动向,还有一些消息什么的,但是我确实是没有关注的太多。我的生活太过于简单了,并不是那么多姿多彩。

      所以,这次见到了一些优秀的大学的作品(实际上很多和计算机行业不相关),我就能感觉到,他们在学校平台的加持下,早早的就超出了学校的框架。而即使是没有学校的平台,一个该会发光的人,也应该能发光。

      接下来谈谈这次比赛。

      这次比赛我们的团队是做了一个笔记本电脑防盗的程序,名字就是笔记本电脑防盗系统(这个名气起完了之后感觉有说不出来的尬。。。。)

      是C/S结构的,服务端由队友用Java开发完成,客户端由我使用Qt完成。

      在做客户端的时候,遇到了不少问题,就比如说对Qt相关的知识掌握的并不牢固,导致遇到了很多的问题以及Bug 出现了好几次的野指针,导致程序崩溃,或者莫名其妙的卡住。。。参看我的其他博文,,,

      而这些问题的根本原因就是我对Qt并不熟练,我甚至没有系统的,完整的学完Qt, 在看了Qt的基本操作之后,就直接拿来用了,然后在开发的过程中,基本就是边学边做,导致重写了足足4次之多。

      代码长度总共是2500行,但是实际上在此之外大概是写了至少3000行的废代码。

      Qt的特点就是里面的信号槽机制,在写程序的过程中,发现Qt的这个机制仅仅是使用了一个线程来完成工作的,感觉有些震惊,这就是使用一个线程完成了多个进程才能完成的事情。就比如说,正常开发一个CS结构的程序,服务端或者客户端至少需要开启两个线程,一个用来接收用户输入,另一个负责接收。但是Qt实现了一个线程来做这个事情,把本来等待接收的那个线程的等待时间拿来做其他事情了,我觉得这个设计是真的很厉害。然而,为了保持和java服务端的同步,我基本上在网络传输文件哪个部分都是使得程序阻塞执行的。。。 简直是有罪。。。

      另外,就是对Qt得实现原理如果了解得话,应该就能更加顺利得找到bug 就比如说 在编写代码得时候,会遇到moc文件不生成得问题,如果当时就知道moc文件在Qt里面得作用以及生成原理的话,就能更快得解决问题。所以,这应该就是一个优秀得java工程师必须了解Jvm什么得原因吧,毕竟,当高度达到一定程度得时候,最开始解决问题的至高手段----百度谷歌,也会失效,明白了原理就能从原理上开始思考问题的根本原因。

      还有就是我觉得我需要去研究一些优秀的代码。

      因为,我在写客户端代码的时候经常会出现一些问题,就比如说,我使用Qt对某个域名发送了post请求,并且,下一行代码就要用到结果,而Qt并不是阻塞运行。这里的话,如果是正常的代码执行顺序,请求完毕之后,才会从请求函数返回,并且带回结果。但是Qt就会发生,我请求完毕之后,直接就返回了,这时候结果还没有返回,所以下面的代码肯定会出错。当时第一个想到的解决方案就是使用一个while循环去等待结果返回,问题在于,直接出现了死循环,至此,我明白了Qt是单线程的。不过后面也找到了解决方案,就是使用QEventLoop,所以我在网络传输部分用了大量的eventloop进行非阻塞延时,感觉这样算是违背了Qt设计的初衷,Qt的设计者完成了从二维到三维的转变,但是在我这里又给他进行了降维打击。。。这里应该是使用信号槽的机制来完成调度的,不过当时已经只剩下最后一个星期了,没有重写的机会了,,,就只能先这样做了。。。

      研究优秀代码的事情,实际上早就在准备了,,,, 结果一直在阻塞,,,,,

      还有就是服务端的事情,,, 这次服务端就是直接的套接字传输json数据格式,C和S分别解析json数据完成传输. 使用了双套接字的方法,倒是避免了很多问题。

      但是下次的服务端绝对用Spring什么的框架做。。。。 简直,,, 太笨了,用Spring的话,很方便就能完成网站的开发,只需要给我的客户端提供接口就OK啦。,。。 真是得到教训了。。。

      还有就是团队协作的事情了,首先就是要选好队友,,, 有的队友太坑了,从头到尾不动弹,,,下次得注意。

      再者,就是协作开发最重要的就是开发文档,接口的问题了。因为之前没有做过相应的东西,所以,这次直接用的json文件来作为描述了。效果不太好,还会有歧义的问题。

  • 相关阅读:
    webpack打包(2)
    webpack打包(1)
    angular(5自定义模块和ionic创建)
    angular(4)路由及其使用
    anjular(3 生命函数及请求)
    Angular(2)
    自学Angular(1)
    Typescript知识总结
    PLC数据采集与MES系统对接
    python格式化日期时间自动补0
  • 原文地址:https://www.cnblogs.com/cjdty/p/10851351.html
Copyright © 2011-2022 走看看