这里说说我的经历吧。大学前以及大学前面三年的经历就不说了,因为大学前的高中就是好好学习,大学前三年就是混过来的。
我上的学校还算可以,虽然不是北大清华这样第一流名牌大学,但至少也算中国的第二流名牌大学了。大学中前面三年都陪伴着游戏过去,所学到的只是些计算机基础知识。到大四后我突然发现就业的问题就在眼前,而自己似乎什么也不会,于是开始看书。最一开始重点看的是C++,可是后来自从看了一本J2ME的书以后被Java所吸引。当时虽然学校上过Java课程,但是自己也只是学了很少的皮毛,也就只会写写Hello World和什么加减法之类很简单的程序,连API都知道没有几个,比如说字符串长度的API我都不知道。所以刚开始自己学J2ME的时候屡屡受挫,自己也明白自己的缺点,决定从J2SE开始好好补上。
刚开始为了熟悉Java开发环境,买了本JBuilder开发的教程,并且在自己的本本上安装了JBuilder进行演练。当时的我连JavaDoc都不知道,每次究竟什么API能做什么事情一点头绪都没有,还不知道哪里去查,后来同学告诉我有个JavaDoc这个东西,我还兴奋不已,觉得自己被从黑暗中拉回来了。一开始使用JBuilder的时候,马上为之所吸引,有两个原因,第一是因为它自动标出语法错误,边写代码边提示你什么地方语法出错,记得以前使用VC++的时候,每次程序写好后先编译,然后再Build,再运行,这其中每个步骤都会出不少错误。特别是在编译的时候,写个200多行的程序一次编译下来就有100多个错误,结果每次花在这上面的工夫都要好长时间。而JBuilder使用了即时语法分析,所以基本上程序写完,就可以省略调试语法错误的步骤了。第二个原因是可以自动提示代码,这个功能可以让你迅速熟悉API,免得每次去查帮助文档那么麻烦,我就是这么很快掌握了许多API的。
可能大家会问我为什么一开始不学习《Java编程思想》,的确这本书我们宿舍就有好几本,不过大家普遍反映效果不好,到最后都不知道说的是什么,所以我也没敢看。
经过20天左右的学习,对Java有了更进一步的了解,熟悉了不少API函数,由于在那本书上写开发SWING占了不少篇幅,所以也对Swing的开发了解了不少。看完以后因为同学说Java的灵魂就是多线程编程,所以开始看Oreilly的《Java线程》。记得在大学中操作系统这门课我们就提到过线程的知识。并且课本上就是用Java实现的,当时有了一点点概念,但这次看这本专门说线程的书后才发现我原来了解的那些根本是什么都不算(当然,现在回想起来,我那时看书学到的也只是很简单的皮毛而已)。看完这本书后我自己学会在我的JBuilder下开发很简单的多线程程序,并且模拟线程冲突,等待等情况。当时看着自己写的一两百行程序可以顺利执行,那种兴奋劲就别提了。这本书我看得也很快,大概就花了3个星期看完。
经过上面的学习,自己相比以前来说提升了不少,这时候自己也找到了工作,是做J2EE对日外包的,所以更加坚定了努力学习Java的信心。
在上面写的程序中,我自己写程序没有规范性,在代码编写的时候自己的盲点特别多,还容易犯低级失误。同学有一个《Effective Java》中文版,可是我看了几页发现自己根本看不懂,里面什么静态工厂啊,什么单例模式什么的根本不知道什么东东。我知道自己目前的水平还不够,所以决定放下这本书,去寻找别的适合我的书看。这个时候我看到了候捷先生翻译的《Practical Java》一书,当时是刚刚上的书架。这本书我在书店翻了下目录后就感觉如获至宝,马上买回家,在回家的公车上就贪婪地读起来。这本书不算很厚,但是自己看得却很认真很仔细,也明白了不少东西,比如Java中等号和equals()方法的区别,究竟什么时候用什么。还有Exception处理机制,以前不知道什么叫Exception,只是JBuilder提示我要我抛出Exception我再抛出Exception,自己觉得这东西基本没什么用呢。但是看了这本书后我改变了看法,我发现Exception是个很好的东西,可以迅速把程序从正常状态和异常状态区分开来,即使而准确地在指定位置得到处理。那时自己也有了以后写程序的时候注意编写异常处理部分的想法。《Practical Java》这本书虽然不厚,但是我却非常仔细地去看了,大概花了1个月时间,我把这本书完全消化了下去。
当时听说Java在网络上的应用非常广,我也不知道究竟是什么应用,我于是买了Oreilly的《Java网络编程》这本书。这本书虽然很厚,其实前半部分内容不是很复杂,后半部分写什么RMI的东西我也看不大懂,只能理解个概念。通过这本书,我了解了HTTP协议究竟是什么一个东西,在它上面利用Java传输数据该如何做,知道了什么是Request,什么是Response。这也为以后开始我的J2EE之旅打下了很好的基础。当时自己依然是边看书边自己写代码来验证,自己写了个服务器端Socket和客户端Socket,成功进行了通信,又在上面加上了安全Socket内容,实现了SSL通信。当时我把写的这个又套上了Swing的外壳,还和同学拿这个传文件呢。不过当时也没有考虑过什么校验码之类的东西,所以传传小文件还是可以的,文件稍微一大一点,传过去的文件总是不对头,和我原来的文件经常会出一些差异,导致文件打不开。
《Java网络编程》这本书看了不少时间,因为书比较厚,东西也比较多,不过除了后面的一些知识以外,其他的还是容易理解的。大概花了2个月左右的时间看完。看完后,时间也到了2004年的3月。我也轮到开始我毕业设计的时候了。我们的毕业设计导师都还不错,给你自己选个课题,我选的是一个B/S结构的在线简历处理系统,正好和我所学和下面所工作的东西是一条路上的了。这时我觉得我应该往B/S结构上转了,当时在选择先看Servlet还是先看JSP上犹豫不决。最终决定先看Servlet,后来也证明了我的决定是对的,我在熟悉了Servlet后再学JSP是非常容易的,基本上根本没有遇到什么难点。
......