毕业论文(设计)·结束语
-张不断 2010年5月
终于把论文写好了并上交了,大学结束了,要好好玩一场……
以下是我在毕业论文(设计)《基于Java的网络即时通信系统——SQ的设计与实现》里的结束语——
毕业设计(论文)终于到了写结束语阶段,内心是一种如释重负的兴奋。回望将近三个月的开发历程,感慨颇多。系统的功能挺多的,显得有些庞大,如果一开始就看到会有这样的结果,或许已经望而止步了。
SQ网络即时通信系统开发是一个不断探索、不断调试、不断改进的过程。在选课题阶段,对Java Socket编程只有肤浅的认识,而对类似于QQ的即时通信软件的功能实现原理更是不甚了解,只是觉得有趣,认为里面有很多关于网络的、编程的知识很值得研究,于是便确定了网络即时通信系统这个课题作为我的毕业设计课题。
接下来,凭着满腔热情和一股韧劲,硬是把人民邮电出版社出的《Java信息管理系统开发实例导航》(求是科技 编著,2005.4)一书第5章的“网络即时通信系统”啃了个透,反反复复的阅读和调试源码,整个程序就1个包,包内是7个类,总共不到2000行的代码。那时候觉得把这个程序读懂就已经很了不起了,算得上牛人一个了。现在看来,那只是一个功能简单的小程序。当然,最终开发出的系统是在这个程序的基础上改来,从简单的布局到复杂美观的界面,从JDBC的数据库操作到Hibernate、 Spring集成的持久层实现,从只能发送英文(中发送中文会出现乱码)到发送中文、表情,从寥寥数个存在若干毛病的功能到到系统托盘、截屏、SQ群聊天室、网络涂鸦板、智能时钟和聊天机器人等众多功能,不过,仍然感谢该书的作者和出版社。另外一本书,清华大学出版社出的杜佳荣等编著的《Java网络编程技术与实践》也是SQ系统开发过程中的一本很具价值的参考书,里面的“基于Socket开发的Java网络五子棋”、“基于Swing的网络白板”和“基于TCP协议的Java Swing网络聊天室”三个例子为SQ系统中的“网络涂鸦板”和“SQ群”两个模块提供了许多原始代码素材,是我在SQ系统开发过程中的一位引路人。此外,也啃了很多其他相关的书籍和网络资料,在网络上下载了许多Java Socket通信程序来调试、学习。课题的前阶段基本上就是这样,在对着相关技术狼吞虎咽的日子中度过的。很费劲,但收获很丰硕。
看得多了,慢慢地开了窍,相关技术资料也有一定的积累,马克思说过,量变到一定的程度要发生质变,于是开始尝试把若干功能进行整合到一起。看起来很简单,做起来着实不容易,程序出的错比我吃的饭还多。好不容易才弄出些成果来。接下来就是按自己的想法或者说是按论文的需求分析,去深度地修改代码、自已写代码,使那些幼稚的程序慢慢的融合、成长成为一个有着不错功能的有机整体、有活力的通信系统,就是现在所看到的SQ即时通信系统。
总的来说,编程阶段是一个异域常艰苦和繁琐的过程,需要对着显示器反反复复的调试代码,而且许多相关技术都是一边学一边用,摸着石子过河,不定期的会遭遇技术寒流,被冻得半死不活,本就没有阳光的世界(老呆是在室内,电脑面前)里更加的漆黑一片。幸运的是,往往会是这样一种情况,在绝望的边缘,再咬一咬牙,无预兆的就会从柳暗绝地闪入花明世界,内心狂笑的那种感觉妙不可言。大叹:技术这玩意,只要去啃,总能咽得下。
可是,时间这东西,它不等人。三个月的时间实在太有限了,所以SQ系统最终还存在许多未能解决的毛病和未能实现的功能。在安全性问题上做得就很不足,有许多需要验证的地方都没验证,比如用户注册时,密码的长度、字符类型等都没有设置,邮箱的格式也没用正则表达式进行限制,同一个用户可以在同时登录多个客户端。未实现的功能主要有三个:离线消息,聊天记录和备忘记录。
对多线程的认知,仍然不透彻,最直接的表现是,在SQ客户端启动临时的网络白板的服务器端,会使得该客户端崩溃,至今尚未找到解决这个难题的方法,只好采用要求用户在SQ客户端之外运行再运行网络白板的服务器端程序的折衷方案。但是,这个难题,理论上是可以解决的,因为传输文件时,客户端就是启动一个线程,然后再在这个线程之内创建一个服务器端(ServerSocekt)等待对方客户端与之连接,再然后把文件能过流传给对方。当前市面上的QQ就可以支持用户一边传输大数据文件或者给对方播放影音文件,一边聊天或进行其他操作。
系统存在的其他问题和不足在论文中已经提到,这里不再一一列举。
写论文也是一件很伤脑筋的事,最后这段时候可谓为伊消得人憔悴。好的论文都是改出来的,虽然这我这篇论文不算出色,却也增删五次,期间多得刘宇芳老师的指导和督促,不然也不会有这么多详细的流程图。之前觉得画流程图是件很无聊的事,但画完了,再回过头来看,发现,其实这是一个总结和重新认知的过程(当然了,理论上流程图是在开发系统之前就要画好的),有一些方法,由于是泊来品,比如传输文件,在用当时,只道是寻常,但为其画流程图之时,回过头来斟酌,比当初的囫囵吞枣更来得津津有味。
还有一点想说,通过SQ小系统的开发,越来越体会到得腾讯QQ功能之强大,到底是世界上顶尖的即时通信工具,我的SQ在它的面前,真是Smaller又Smaller。衷心祝愿腾讯这位企鹅帝国、Web2.0之集大成者,在一0年代的这个正面临着一场技术革命的IT领域里,抓住移动软件、云计算应用、社交网络三个新兴产业的商机,引领中国成为世界舞台上的巨人,强过印度,强过日本。
紧张而忙碌的毕业设计就要结束了,大学生涯也将画上一个句号。本次毕业设计的所涉及的相关技术知识不一定对后工作有所帮助,但这个过程所锻炼出来的意志力、学习能力以及解决问题的能力,毫无疑问,是我将来工作生活的一块奠基石。