本科毕业设计小结

引言

第一次自己开发出一个完整的项目,最终部署在阿里云上打开网站就可以用,还是蛮激动的。这几个月真是我大学的精髓 。不得不提到我的毕业设计指导老师——黄猿 (海贼王人物化名),多次的毕业警告——“你这样我不会让你毕业的、你明年再来答辩吧”、每次开会的进度质问批评、qq私聊我半小时然后转到电话轰炸,各种,给我留下了深刻的印象。黄猿估计是我们院最严格的老师了,因为他的变态严格以及否认我的工作成果,我一度出现过自杀倾向,最终还是留着泪把毕业设计做完了,最后得了个平均分 。其实我本来想好好做的,无奈自己能力太差,学的慢,老师又不提供指导,一味提要求加功能,几乎把我逼到崩溃,就只想完成任务,及格就行,态度稍有敷衍。总的来说,完成了预期的80%,打开了我前端和网络学习的大门。

题目是“基于Web的即时通信系统的设计与实现“,也就是WebQQ,唯一特点是使用了WebSocket通信协议。 我把摘要抄在下面:

近年来,随着计算机应用技术的快速发展,以Web技术为核心的信息交流平台已显示出其强大的生命力,越来越受到用户的欢迎。目前市面上的即时通信产品大多严重依赖于特定的平台,同一个软件很多时候并不能兼容所有操作系统。另外,软件的下载、安装和升级也十分繁琐,不同软件的操作方式也不尽相同。因此,设计一款基于Web的即时通信系统,能减少多终端系统支持的成本,实现跨平台操作,具有较高的实用价值。

本文以即时通信系统的开发为背景,借助可实现全双工可持久连接通信的应用层协议WebSocket,设计并实现了一个基于Web的即时通信系统。本系统使用了浏览器/服务器架构,通过研究前端网页开发、多线程等技术,设计了客户端网页、服务器端程序,并基于关系型数据库SQLite以及阿里云服务器实现了客户端与服务器端的交互,系统的主要功能有即时消息的传输、文件传送等。用户只需在浏览器中输入网址即可使用本系统,省去了传统软件的桌面终端安装、更新等步骤,且不受操作系统平台限制。

通过将WebSocket与其他Web即时通信技术对比,本系统体现出WebSocket作为下一代即时通信技术的优势,它有效地减少了服务器的负载,节约了带宽。

关键词: Web技术,WebSocket协议,即时通信系统,跨平台

这篇文章主要是回忆性质的。

WebSocket

我一开始研究了几种即时通信技术:HTTP、Ajax、Comet,查资料找着找着就找到了WebSocket技术,这个就牛逼了,几乎所有讲WebSocket技术的博文都会先把前几种通信技术拉出来吊打一顿,然后说WebSocket好。于是我在3月和4月初的时候,买了本《Java WebSocket编程》,是甲骨文的官方文档,学习用java开发WebSocket。不得不说,这本书有点难,前面还学的好好的,后面给的示例程序就看不懂了。可能是java学的不好,这本书没讲清楚还是什么,学的很慢。开会时候,我说我学了几周这个书(确实是),但是没写界面(这个书的程序就没有界面),我在研究WebSocket底层实现,就被老师批评了。这是被批的最惨的一次,在老师眼里,没有界面,一两百行代码,等于什么都没做,很难受 。回来后我就把这个书扔了,去github上找WebSocket实现的WebIM,还真找到了一个。总的来说,我这几周的工作量,在黄猿里为零,后面几次开会,黄猿说我3月4月什么都没做,我只能默认,是是是,行吧。

WebIM

我从git上拿到这个程序时,它真的BUG一大堆,功能少的可怜,连退出系统的按钮都没有。我承认,是在别人的代码框架上开发的,但是我不同意黄猿”使用、抄袭别人的程序“这一说法。程序员之间,copy点代码不过分吧,而且我啥也不会,让我自己从头写,你也不指导我一下,真的做不到。然后就是图书馆一天十几个小时的系统开发了,看了3天的代码,按照老师的要求添加功能,一个一个实现。这个程序分为服务器端和一个web网页,中间通过WebSocket这个纽带,实现了即时通讯功能。

扫描二维码关注公众号,回复: 4715273 查看本文章

加功能

过几周,拿去给老师检查时候,老师还算满意。然而有一次检查,让我开服务器,他在远程连,这可把我难住了,那会都是自己PC当主机和客户端,用localhost当地址。回宿舍调了下,弄好了,服务器端开在自己的主机上,让老师自己登陆测试。因为我的后台程序在每个程序块打印了相关信息,在我这里就能看到用户各种操作,说实话,那会确实紧张,怕出岔子,盯着后台程序的打印信息看。老师在测的时候,提了10几个问题/bug,也确实自己做的不好。完了老师把我批一顿,我说我下去好好改。从那天开始,我就没咋笑过。晚上11点睡觉,早上7点多起来去图书馆加功能改bug,日复一日。那会我舍友一个在旅游,两个在打游戏,每天都笑的开心,而我每天愁眉苦脸,想着做不出来不能毕业,心理落差蛮大的。改了一个星期吧,给老师发了个报告,老师又自己测试。这次就完蛋了,远程连接不上去,根本用不了。老师转而质问我程序架构,我答客户端服务器端,问我网页部署在哪,程序部署在哪,怎么连接的。我认真答了好久,也许我没说清楚,也许老师不明白,总之就是老师不满意,又一顿批评。

那天晚上我回宿舍,让路飞帮我调一下程序,想部署在老师的服务器上,一起弄了好久,无果。完了睡觉前我给老师发了段文字,大意是解释程序不能运行的原因、我有工作量、我要开始写论文了。然而老师看到后生气了,说了些我很不喜欢的话,否认我的工作。我一直按捺住心中的怒火,但是按捺不住,爆发了。后面就不表了,总之得到了青稚、战国两位老师的帮助。这次我真的成长了,抗压能力+100,情商+50,自控能力+50。程序最后改的差不多了,我就开始写论文了。

这里我想说,好多人都是抄的源码,随便改一下,就开始写论文了。而我虽然也是用了别人的源码,但一大半是自己加上去的,学了超多的东西,最后还被老师批评,心里是真的难受。每次背上书包一个人离开宿舍,都有一种孤独的感觉,好在有网易云。那会就在想,为什么他们都在玩,我这么认真的学,还没什么好结果。张国荣自杀的时候说,我一生没害过人,为何落得如此下场(病理抑郁症),跟我很像。而且我考研失败,做比赛失败,追妹子失败,加上老师的不理解和批评这最后一根稻草,情绪彻底崩溃。不过好在挺过来了,守得云开见月明嘛,人还是要乐观一点,多自嗨。

写论文

其实我写论文算晚的,快5月中了吧。写论文,无非是参照前辈的思路,写自己的工作。因为都是我自己做的,写的蛮快,第一稿给老师发过去,老师让改摘要和格式,第二稿差不多就定稿了。我国各大高校没有论文写作课程,老师却又对你的论文不满意,这确实是个矛盾。这里还想说,我把论文题目弄错了,弄成了”即时通讯“而不是”即时通信“,打印的论文题目也是错的。还好最后改过来了。还是要细致一点。

总结

最后再来总结下学到的东西:

  1. WebSocket:学了一点点网络技术
  2. Python
  3. SQLite3数据库
  4. 前端:HTML+CSS+JS+json+jQuery
  5. 阿里云轻量应用服务器:最后上云了
  6. 程序架构:学会了Web应用的具体工作流程

还有一些心得:

  1. 不要跟老师/领导顶嘴,据理稍微争一下,及时认错,态度诚恳一点,情商高一点
  2. 菜是原罪,菜就要多花时间,认真去做。
  3. 心态要好,保持平和的心境,要能抗压。要能忍受孤独。
  4. 多总结多积累,多应用。有一个好学的心。
OK。就这样。折磨我这么久的毕设结束了,但其实心里并没有松一口气。马上去工作了,希望我在工作中努力表现,提高自己。 不忘初心,砥砺前行。



猜你喜欢

转载自blog.csdn.net/Protocols7/article/details/80704085