java自学心得

时间:2024.4.27

关于阅读技术类图书的思考(转载)

很多做编程朋友都喜好读书的。但为什么要读书?读什么书?读多少书?如何读书?这都成了很大的问题。我想就这些问题谈谈我自己的看法。注意,本文读者最好是那些时间不多,希望通过读一些好书能有大收获的朋友。如果那种只要是技术书都要去读读的朋友,你的精力和时间实在太多了,本文应该不适合你。

首先,在中国,程序员只能靠读书来提高自己的编程或设计能力,这本身其实是很无耐的,因为国内软件编程方向的教育已经远远落后于编程业的发展了。名师凤毛麟角,能够听到名师的课的人非常少。运气好,进了大学或者公司,有个高手师兄或者大牛同事带一带,成长会快些。否则,要想提高,除了读书,还真是没有别的办法。由于本人曾经做过数学教师,我很清楚,数学学习如果只是给你几本参考书,然后就能高考得高分,那是不可能的(你如果例外,只能说你是天才,没有普遍意义),但数学教育已经发展了不知多少年,特别中国这样以应试教育为主导的国家,数学是不需要好书只要有好的老师就可以出好的学生,而软件编程教育的师资就实在是不容乐观。而我想强调的是,读书永远没有好老师的好教学来得有效(注意需要强调“好”字)。因为老师和学生之间是有互动的,是在一个交流的气氛中学习,而不是读书的那种完全单方向的信息传递。现在有了网络视频录像,情况得到了很大改善。不过视频同样存在只能告诉你东西,而不能最快速的解决你碰到的疑问的单向信息传递问题。比如你看了一个视频学习如何用VS2008写一个“HelloWorld”程序,可是你始终找不到视频里提到的“解决方案资源管理器”(原因是之前你或别人无意将它关闭了),或许你费了很大力,终于明白在工具栏上有按钮或者菜单中可以打开它,但是你的挫败感就很强烈了,这对于初学者来说,是很不爽的。如果有个老师,或者旁边有个同学,这种问题几秒钟就能解决。再比如你看了策略模式的教学书或视频,可是为什么一定要用策略模式呢?我不可以用简单工厂吗?不可以用装饰模式吗?你的问题一个接一个,书中没有答案,答案只能依靠自己去想。如果你坚持去想,你会有“悟”通的一天,但是更大的可能是,算了,设计模式也太难了,以后再研究吧。因此我觉得多读书当然好,不过编程能力通过读书显然不是唯一,更不是最好的办法。不过就目前的国内现状来讲,读书或许是在你没有老师的前提下最好的提高途径,尤其是初学者,系统看一些好书,学习一项技术是很有必要的,只靠实际的做项目来提高极有可能会发展不全面(培训学校我不推荐,因为骗钱居

多,好教师太难找)。

然后是读什么书的问题。现在很多过来的朋友都推荐了一些好书,这些好书大多是经过时间验证,的确是难得的精品,看看一些网上书店的排名和评论就大概知道好书是哪些。不过问题又来了,是不是这些书都适合我阅读呢。答案不是,并不是只要是好书就适合读者阅读的。从技术书的分类来看,简单的分就有程序设计、软件工程、数据库、网络、图形图像等等;从技术难度上分,就有入门读物、进阶读物、高级读物等;从写作形式上分,有教材类、论文类、休闲类等;从价位上,有10-30、30-60、60-90、90-抢钱没商量价等;从书的厚度或阅读时间来讲,有三天读完、两周读完、两月读完、半年读完、阅读三遍、终生阅读等分类;当然最重要的分类,即按书的写作质量来分,应该是垃圾书、一般书、可读书、精品书、绝对必读书等。换句话说,仅仅是告诉你,编程书好书有哪些是远远不够的,往往会让读者根本没办法去区别这个好书是不是适合自己,是不是应该要现在阅读,是否有必要全部读完。当然,商家是不会做这么

细致的分类的,没有什么商家会告诉你,本书是垃圾书,本书不适合低手阅读,本书太厚没时间不要读,本书很贵买前要慎重、本书只有三章可以一读等等。但作为读者,如果你没有这种多角度分类的思考去找书的话,你或许会迷失在书的海洋中,无以自拔。打个比方(尽管这个比方我已经打过很多次),GoF的《设计模式》的的确确是好书,但真的不是每个编程者需要去阅读的,至少不是一开始去阅读的,如果你是非面向对象程序员(比如嵌入式开发),你是关系数据库开发者(比如存储过程开发者),你是UI设计者(偏设计但涉及程序的那种),甚至你是面向对象编程初学者,我都建议你不要读它,真的没什么必要,只有等你真的已经达到一定的开发量了,真的有必要提高自己的编程和设计能力的时候再去阅读它。总结,一定要读经过时间检验的好书,但在这些好书中,需要分分类,需要多多思考自己是不是真的适合当前阅

读。

接着,就是读多少书的问题了。好书很多,不是一本,不是十本,而是几十本上百本。有些书是全本都好,有些书是部分章节优,有些书有很强的时效性(比如现在去阅读一些asp.net 1.0入门经典方面的书可能就没有与时俱进了)。是不是有必要把相同类型好书都读了呢?我看没什么必要。比如你要学习asp.net,你真有必要把这方面的好书都阅读一遍吗?读一本足矣。毕竟这里更加需要的是练习而不是阅读了。而要读的这一本书就应该是精读,甚至反复读。其实。因此别的行业可能很需要参考书,我看编程行业基本不需要参考书,Google百度就是最好的参考。思想层面的,比如设计、分析、项目管理等方向的,可能要多读一些。但书实在是贵在精而不是多,还是以设计模式为例,入门读《Head First设计模式》,进阶再去读GoF的《设计模式》就足够了。当然,像《Java与模式》、《设计模式解析》都是好书,你有

精力可以多读,没精力,那就不读也罢。

跟着,也是比较关键的,就是如何读的问题,本来这个问题不应该我来多说的,读书吗,从头读到尾就行了,但其实这里学问还真是不少的,技术书还是很有区别于一般的小说书的。如果你只是简单的理解为读书就是花点时间,从头读到尾的话,你从这本书得到的收获是很小的。首先,技术书,并不一定都是需要从头读起的。这要看是什么书,特别是应用级的书,往往是你当前最需要了解的技术,你需要多花时间去研究相关的章节。好的书通常都会在前言就告诉你,应该如何去读这本书。我记得《敏捷软件开发:原则、模式与实践》书中前言就写得很清楚什么样的读者应该更加关注什么样的章节,特别他提到如果你觉得无聊就看看书后的两个故事,哈,我还真是在一次没事做时,去认真的阅读了那两个项目开发对比的故事,感觉非常好。技术的学习不是看完书就完全理解的,更不是看完就能马上应用自如的,一项技能要经过知道、理解、掌握、应用等等过程。我强烈建议读者朋友在精读一本书时,一定要手拿着笔,最好旁边再有一本笔记本(纸)和一台笔记本(电)(哈,PC当然也没问题)。看到好的句子要摘录到笔记本上(别懒,这其实不是让你以后去看你抄的东西,而是让你在抄的时候,放慢你阅读的速度和节奏,而把大脑紧紧的集中在这个知识点上),有句话说,在一个人用笔写东西的时候,他是不可能分神去想别的事情的。这对于记忆和理解是非常有帮助的,简言之,不动笔墨不读书(非常可惜,现在我已经很少看到喜欢记读书笔记的朋友了,有些人可能一年除了签名都写不了几个字,这实在是一大悲哀)。那么旁边那台笔记本或PC要来干吗呢?不是让你来玩游戏的,更不是让你和MM聊QQ的,而是用来写代码的,代码只是看看是没用的,一定要自己打一遍,最好的效果是看懂了后,根据自己理解的来编,效果差一些的是照着书中的

抄一遍,但无论哪种都比你根本不写只是看要强。我见过不少朋友买了书,可能连随书的光盘封套都没拆过,又或者光盘中的代码只是简单的运行一下。没有认真的模仿打一遍,这都是不好的学习方法。有些人认为书读完了,应该就差不多都掌握了,其实未必。不知你有没有过看一部电影,过段时间再看第二遍发现很多很有意思东西原来根本没在意。特别是英文字幕的片子,看第一遍甚至根本就不懂,看第二遍就轻车熟路这种情况不是很多吗。读书也是一样的,好书绝对有必要多读,常读。否则理解可能还是会很片面。

最后,还得提一提两个细节问题。

关于电子版和纸版书的阅读问题。有些朋友喜欢收藏电子版的好书,一收藏就是几十上百本,可惜真正看完的可能是零头。书是用来看的,这些放在硬盘里不看的图书,不如删除更换为几部AV短片(毕竟后者看的可能性要大得多)。但为什么这些好书,却不能好好阅读呢?这也不能全怪读者,而是电子版图书天生有其不足之处。第一,它不方便携带,它一定要在电脑面前才能阅读(特指有图有代码的编程技术电子书),不像纸质书那样可以在地铁公交甚至厕所里阅读;第二、长时间伤眼睛,书不同于短的文章,在电脑面前长时间阅读很容易疲劳,特别是要学习技术的书,看纸质书会更舒服一些;第三、不方便批注,尽管有的软件可以解决这问题,不过怎么使用不如纸质书来得方便;第四、有些电子书不清晰,有可能直接是把原书扫描而得,这显然无法和纸质书相比,阅读情绪会产生很大影响。所以,只有在能完全克服这些困难的人才可以通过阅读电子书来学习。不过现在老外的有些英文原版电子书制作得非常精良,在美元

跌落却依然购买不起纸质书的前提下,阅读好的电子书也是不错的选择。

关于图书馆借书还是自己买书看的问题。有句俗语叫“书非借不能读也”。说的是因为自己的书,会有一种反正已经拥有,有空再读的想法,造成反而很长时间都不去阅读。而借的书因为有还期,所以抓紧读的机会还更大一些。加之图书馆借书可以省很多买书的钱,所以去图书馆借书也是不错的选择。不过图书馆的书很难跟得上时代,很多都太老了,有些新书图书馆虽然引进了,但因为抢手也很难借得到,特别好书,基本都要碰运气才行,加之有些书一个月外加一个月续借的时间很难读完。所以借图书馆的书是好办法,但有些书借不到时,还是要考虑购买。但盲目的购买图书显然不是好办法。说到买书,不妨几个

同事相约买书,这样可以平摊的购书的成本,另外网络购书优惠不少,也是不错的选择。

总之,在国内的大环境下,读书还是编程工作者提升技术能力的最好办法。那么上面所谈到的问题,也就显得非常的必要。希望本文可以给你的技术书阅读有所帮助,我的看法也可能有失偏颇,大家一起讨

论。但不管你是否同意,留句话,那尽管我花这么几个小时打字的劳动也甚感欣慰了。

1JAVA自学之路 一:学会选择

为了就业,不少同学参加各种各样的培训。

决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G、测试等。

那么究竟应该选择什么方向呢?

我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧。

每个培训机构都会宣传自己的好处,并不能说明大的趋势。

一些新闻文章很有可能是枪手写的,不必太过相信。

国外背景的教师和课程,未必适合你。

那么怎么才能确定自己将来的方向?如何才能从纷繁复杂、或真或假的数据世界中挖出一条路?

我讲一个通过招聘网站的观察方法。

可以到各种招聘的网站上查询信息(可以到google上查询招聘的网站),例如: () () ()

以及csdn的招聘频道等

还有一个网站也不错,,综合了各大招聘网站的数据。

这些数据都是最真实不掺假的原始数据,你可以每隔一段时间搜索一次,一些规律就会被总结出来了。

比如说我在中搜索java,全国大概提供了3万个职位。

然后要多翻几页,这样不仅能够看清楚大概有多少是有效的职位,而且还可以看清楚用人单位最关心的技能是什么,这个很重要,决定着你将来要花多少时间和精力在特定的知识点上,比如说swing,搜了一下,全国只有700个左右的职位,仔细读了一下,也并非全是有效的职位,花太多时间和精力在这个上面就不值得了,当然自己感兴趣或者为了研究的话另当别论。不过如果是为了快速的就业,把太多时间和精力花在很多职业生涯的前一、二年用不到的知识上就太可惜了。 同时,并非某一个行业的职位数目少,就不能当作一个方向进行选择,比如.NET,我搜索到的职位数是1.6万左右,比java少,是不是就选java了呢?不一定,因为java职位虽然多,但是可能竞争者可能也多,有些方向虽然职位数不多,但是和你竞争这些职位的人数量也少,不见得就不能选择。

不过,如果某一个方向的职位数目过少,你可就要小心了,选择这样的方向风险会非常大,如J2ME。

我个人觉得java/J2EE、.net、嵌入式开发是不错的三个方向。

如果非要在java和.net中选择的话,我个人是推荐java的,原因:

1:Java能够开发linux、unix服务器上的程序

2:JavaEE和.NET在企业应用方面的关注点是差不多的,但是学习了java如果将来想转到.net上会比较简单,几天的学习然后上手开发应该是问题不大的,但是反之就不行了。 当然如果有了些经验之后,你就会发现语言或者 平台不再是技术上的阻碍,一些原理性的东西学到手,然后再加上项目经验,使用什么平台,反而不是最重要的。不过如果非要用一种平台进入企业开发的领域,至少在目前,20xx年9月,我推荐java。

完全可以不同意我的观点,但是无庸置疑,如果是为了就业,多到招聘网站阅读阅读职位的信息,对你将来的方向和学习是大有益处的。

选择是最痛苦的,看看《天生购物狂》中的刘青云就知道了,不过既然无法逃避,就作出自己的选择吧。

每个人都会受到别人的影响,在作出决定之前,要想尽各种办法让自己理性一些吧。这样,你的选择会离正确的方向更近一些。

JAVA自学之路 二:JAVA自学路线图

有不少的同学发信给我,和我探讨java的自学过程应该是什么样的,毕竟有很多人因为各种各样的原因不能参加培训。我试着给出自己的见解,抛砖引玉吧。

这个路线图是给那些为了就业的人准备的,如果只是兴趣,不一定照这个走。

这里只是讲了路线图,关于路线中的各个阶段,学到什么程度,如何学习等,可以参考后面的JAVA自学之路 七:《路线图明细》。

首先要学JavaSE,这是无庸置疑的。

与此同时,是的,与此同时,和JavaSE的学习同步,建议大家研究一下数据结构与算法。 在这儿之后,你可以选择向J2ME、或者Java GUI、Socket编程等方向努力,但是通过第一篇的办法,你可以很容易就将这方向过滤掉(永远不要忘了我们是为了就业),好吧,暂时和它们诀别,还是向着J2EE的方向前进吧。

在JavaSE完成之后,可以试着完成一些小项目,同时关注一下设计模式的内容,不必强求自己能够完全掌握各种细节,往前走吧。

掌握一种编程工具,比如说Eclipse。

数据库,可以选择使用Oracle或者MySQL开始

。 JDBC,用Java连接数据库。

可以选择在这个地方切入Hibernate,也可以选择在Struts

之后。 HTML CSS JavaScript,这些东西是做web项目必需的内容

。 Servlet JSP,服务器端必需。

XML AJAX,新的流行趋势不能不了解。

作一些小项目吧。比如BBS、留言系统、学籍管理、商城等等,随便着一些业务逻辑比较简单的来做一做。 Struts,MVC的典型应用

Hibernate,OR Mapping的典范之作。

Spring IOC + AOP, 面向对象 + 面向切面,完善的旅程。

把以前自己的小项目加入Struts、Spring、Hibernate的元素吧。

去研究各种商业项目的业务逻辑吧,才能在你的简历中加入浓重的一笔。

EJB3.0,java在走了很多弯路后的回归之作,值得研究。

SOA,业界铁定的未来趋势,要紧紧跟随。

在后面,我会告诉你每一步的学习方法和学习重点。

JAVA自学之路 三:要动手

无论如何,请坚持不懈的动手实验! 学习Java要动手,仅仅是看和听是不能够学好编程的。总有同学来信问我们这样的问题,说:"老师我看了视频了,可是怎么一动手就没有任何思路呢?" 对此,我一般都会说不要着急,如果你只是看了视频就想行云流水的话,那老师这些年的锻炼真是白费了,这么多年的苦练才能略有些行云流水的感觉,你一朝一夕就想自己能够达到,不是太奢侈了吗

作为编程的过来人想一下,当年自己学编程的时候是什么时候有思路的呢?至少也是照猫画虎画了一段时间之后吧,我本人是在某一个领域画虎画了上万行代码的时候才慢慢有自己思路的。就像写作文,要有自己思路总是一般来说要经过几个阶段,首先学习词汇,然后学习造句,然后大量阅读别人的文章,自己模仿着写一些,逐渐的经验积累,才能形成自己的思路。学编程,恐怕也得慢慢的来吧,只是看一看、听一听视频,是不足以学好编程的。 所以,动手吧,跟着做,一行一行的跟着敲,一个项目敲完了,比如坦克,再试着加一些自己的功能,按照自己的思路敲一些代码,收获远比干听大的多。

如果遇到,暂时对于一些思路不能理解的同学,我一般都会劝告说,动手写,先写代码,量变会引起质变的。而这种质变的确发生过不少次。

提醒一句,要理解代码思路之后再跟着敲 ,背着敲,千万不要左边摆着别人的程序,右边自己一个一个子母的写,这就不再是程序员了,成了打字员了。

纸上得来终觉浅,所以:别问那么多,别想那么多,动手写吧。

JAVA自学之路 四:要事为先

对待人生的任何事情都要:抓大放小,要事为先

对于一个以前从来没有接触过java的人,java无疑是庞大的,似乎每个领域都可以拓展开来都是一片开阔地,每一个领域要想深入接触到每一个细节所耗费的精力都是巨大的。这个时候大家都胸怀壮志,两眼发光的盯着每一个崭新的知识点,遇见了任何一个知识点都恨不得抠的清清楚楚,明明白白。

难道这有什么不对吗?

我的意见是,没什么大毛病,但是学习效率太低了!我们推荐的学习方式是,抓大放小,要事为先。 比如说学习J2SE的时候,学到GUI这一章,有的同学认为,既然学到这儿了,我们去把SWING细细的了解一遍吧;还有的同学,遇到了在Linux下的Shell编程,就恨不得把Shell先学成专家才肯,或者是才敢,继续往下学习;有没有过这样的感觉,一本书的上册没有学好,觉着下册心里也没底儿,甚至非要把上册复习一遍才敢继续学习。如果你也是这样,要去看看心理医生啦,没准儿会有洁癖的毛病。

任何事情都要追求完美才敢继续往后进行,是一种性格缺陷

大胆的放弃一些东西吧,有失才有得,把自己有限的、宝贵的精力用在对于就业直接相关的地方,这才是最有效率的学习方式!等你参加工作,有了可持续发展的事业动力和经济基础,有时间有精力闲的没事儿干的时候,再去研究那些其它吧。

曾经有一个故事,说得是产能和产量的关系。

一个人喜欢读书,读了一辈子,无所不通,这时候要做任何工作都可以,他的产能到了极致,

但是,他老了,即便每天产出大量的东西也不能维持多久了,一辈子的产量并没有多少。 另一个人直接工作,忙,天天在机器旁日复一日,做了一辈子,没时间学习和进修,可以想象,产量能有多大呢。

人的一生,要锻炼产能,也要及时产出,引擎要转,也要停下来加油,这两者平衡的越好,你的贡献和产量就会越大。如果钻研的东西和产能目标(或者说近期的产能目标)无关的话,要舍得放手。

所以,对于SWING,暂时先扔在一边吧。

对于shell,对于各种协议过于详细的细节,对于喜欢的游戏编程,对于javascript各种华而不实的效果,都暂时和它们分别吧。一切和我们的直接工作目标关联不大的东西,扔在一边或者弄清楚到足够支持下一步的学习就可以了。

那这样岂不是妨碍我成为通晓各种细节的高手了吗?

我一向不认为一个人掌握了很多很多知识点的细节就是高手了,一个人如果告诉你,回字有四种写法,你会认为他是高手吗? 毫不客气的说,现在我们所教授的所有知识细节在网上或书中都可以找到,只要你肯花时间花精力去动手试,去钻研,没有什么不能掌握的。struts、spring你能掌握吗?当然能!但是如果把时间花在spring的各种细节的研究上,花在研究中国企业应用不广泛地的spring mvc上,这个精力就太浪费了,而且学习的积极性会受到打击,谁愿意整天泡在细节的蜘蛛网中挣扎不出来呢?谁愿意天天经历风雨却总是不能见到彩虹呢?

盖房子,要先建骨架,再谈修饰。

画山水,要先画结构,再谈润色。

认识一台结构复杂的机器,应该首先认清楚脉络,然后再逐步认识每一个关节。

为了应付从小学到大学的考试,我们背了各种各样的不应该提前掌握的细节,同时也养成了见到细节就抠的学习习惯。而现在,是到改改的时候了。

请在合适的时间,做合适的事情吧。

把时间和精力花在作项目上面,花在写作品以及锻炼解决问题的能力上面吧,这是迈向高手的正确的而且快速的方向。

我一直不认为一个课程提供了很多很多的细节就是优秀的价值高的课程了,掌握必要的细节,这个不含糊,至于其他,或者通过视频给出(这样可以给出更多的细节,但是不占上课时间,课上只讲重要的、必要的细节知识),或者在掌握了自学的能力后自己能够查出,这才是正途。

当你看书到某个地方暂时不理解的时候的,暂时放手吧,追求一些行云流水、自然而然的境界吧,只是不要停下前进的脚步,不要被大路旁边的支根末节干扰了你前进的行程,项目,真实的项目,这才是目的,就在不远的前方。

陶渊明读书,叫做“不求甚解”,但他是大诗人。

诸葛亮读书,总是“观其大略”,但他是大政治家。

作研究的,是在确定了方向之后才详细的研究深入的东西。

到了庐山,脉络形状扔在一边,盯着一棵棵小草、一粒粒石子的看,怎么样才能识得“真面目”?

作为应用型的人才,是研究回字的n种写法还是抓紧时间向着主要应用的方向努力,请自己作出抉择。

以项目驱动自己的学习吧,当把握了技术的脉络之后再去补充细节的研究,是正途。 这辈子就不研究其他的方向了吗?

当然要研究!但是在将来合适的时间再说吧。

所以,抓大放小,要事为先!

那么,在JAVA的这些课程中,哪些才是大,才是要事呢?请继续读下去。

JAVA自学之路 五:问题解决之道

既然是学习,就不可能不遇到问题。

既然是自学,就没有方便的和老师探讨的机会。

那么,遇到问题之后,环境配不通,程序调不过,运行不正常,遇见这些恼人的问题的时候,该怎么办呢?

首先我要恭喜你,遇见问题,意味着你又有涨经验的机会了,每解决一个问题,你的JAVA经验值就应该上升几百点,问题遇到的越多,知识提升的越快。

但是总是解决不了也是很恼人的,怎么办呢?

我一般要求我们的学生都是这样来进行的。

当你遇到一个问题的时候:

1:要仔细的观察错误的现象,是的,要仔细

有不少同学的手非常快,在编译一个程序的时候,报了一大堆的错误,扫了一眼之后就开始盯着代码一行一行的找,看清什么错误了吗?没有!有的时候安装软件出问题了,一个对话框弹出来说出错了,马上举手问老师:“不得了了,出错了,出错了”。

“什么错误?”

“还没看呢?”

这都是典型的不上心的方法!请记住,学习编程并不是一件很容易的事情,自己首先要重视,要用心才可以。

在开发中,仔细观察出错信息,或者运行不正常的信息,是你要做的第一件事。 读清楚了,才能在以后的步骤中有的放矢,哭了半天,总要知道哭的是谁才成。 这里又分三种情况:

A:错误信息读懂了,那么请进入2步:要仔细思考问题会出在哪些环节

B:没读懂,愣是一点没看懂,进入第4步吧:google

C:读了个半懂,有些眉目但是不太能确定,第2步和第4步结合着来。

2:要仔细思考问题会出在哪些环节(重要)

当你读懂了一个问题之后,要好好的思考这个问题可能会在哪些环节上出错。 一辆汽车从总成线上下来,车门子关不上!

哪错了?你怎么查?

当然是顺着生产线一站一站的查下来。

程序也是一样的,也是一系列语句完成后产生的结果。

写一个网络程序,总是发现服务器端打印不出接收的数据,有几个环节会出错? 仔细分析这个现象的环节:

客户端产生数据->按“发送”按钮->发送到服务器->服务器接收到后打印

这几个环节都有可能会出错:

有可能客户端根本就没产生数据,有可能发送按钮按下去后根本就没发出去,或者发出去的不是你产生的东西,或者根本就没连接网络,或者发送出去服务器没有接收到,或者接收到

之前就打印了等等等等。

学着去这样仔细的分析程序的环节和这些环节可能会产生的问题,你的经验值定然会大幅度快速的提升,这样做很累人,但是一件事情如果做下来一点都不累的话,这个东西还有价值吗?

在网页A输入了一个人的名字,提交到B,首先存储到数据库,然后再读出来,发现乱码!怎么办?当然是分析环节:

客户输入->HTTP发送->B接收->存储到数据库->读出->展现到网页

每个环节都可能出问题,怎么才能知道哪里出的问题?继续往下读。

3:如何定位错误(重要)分析清楚有哪些环节之后,下一步就是定位到底什么环节出错了。 定位有以下三种办法:

A 打印输出,比如java的System.out.println(),比如js的alert(),这种办法常用,必须掌握

B Debug,可以参考我们的视频《坦克大战》,详细讲了Eclipse的调试。

C 删掉一部分调试一部分,也就是去掉一部分的功能,做简化,然后调试剩下的功能,JSP和JavaScript常用。

4:如果还不行,google吧

还查不出来?恭喜你,你遇到的错误是值得认真对待的错误,是会影响你学习生涯的错误,问一下google或者百度吧。照着下面的方法查查看。

一般来讲,搜索引擎可以搜到各种知识点,我曾经跟同学们开玩笑说:“学会了怎么google或者baidu,其实没必要跟老师学了,自己全都搞懂了,尚学堂是没必要来的。”当然,只是玩笑,培训的作用有三个:

A:系统化知识

B:真实项目锻炼经验

C:少走弯路,节省时间

不知不觉开始做广告了,请原谅,处其位谋其事,总得为尚学堂说点什么:)

言归正传,如何查搜索引擎?

先精后粗,首先先进行尽量精确的查找,比如一个错误,SocketException,你怀疑它是在connect()方法出的问题,那么当然是选这样的关键词java connect SocketException

先中后英,本着以解决问题为主的想法,练习英文还是先放在一边吧,首先应该在中文网页中查询,还不行的话,搜索英文的吧,最近的尚学堂课程中会带大家阅读英文的书籍。有很多东西就像一层窗户纸,远看灰蒙蒙怪唬人的,你壮着胆子一捅,它就破了。阅读英文的书籍就是如此,不是想象中的那么困难:)宁可在沙场上战死,也不能被吓死不是吗:) 信息筛选,搜索出来的结果不见得能够完全匹配,建议大家多阅读前几页的搜索结果,多打开几个网页看看,不过,我的经验是超过3页一般就没意义了,所以超过3页还没有找到合适的答案,或许应该调整一下关键词,或者放粗整个搜索的结果了。

经常的进行知识难点的查询,如果一个问题牵扯的面比较广,就干脆到网上搜索一些相关的专题,比如“java 乱码 mysql” “oracle 创建用户”等等,如果有必要,不要犯懒,勤动手写一些小小的测试程序,来弄明白知识点的细节。这也是涨知识的重要的途径。 5:什么?还不行?那么就BBS吧

如果实在还不行,就到BBS上面问一问高手吧。

到哪个BBS上?

google或者百度不就行了么:)关键词“java论坛”“java bbs”

然后在搜索结果里好好的看看那些活动频繁的论坛,以后就是你经常光顾的地方了。就很不错。

向别人提问是非常需要技巧的!

曾经有人问我这样的问题:“请问如何才能学好java呢?”

这个要求太泛泛了。

还有人给我一段代码甚至jar包也寄过来,然后说老师的我的代码中有个错误您帮我查查:(

我没有办法去花大量的时间建立环境去调试一个还不知道存在不存在的错误!

还有人在BBS上问这样的问题:“是否有人能帮我完成一个完整聊天的程序?请帮我写一个登陆模块吧!”

这个要求有些过分了,有人帮你做是你的运气,没有人帮你是正常反应。

向别人提问,应该首先确定你已经做了自己应该做的事,简单说是我前面列举的1,2,3,4步你都作过了,然后再求助于人。不要没有经过认真思考就草率的向别人提问,自己也不会有长足进步的。

那我该怎么样向别人提问呢?

在google或百度搜索《提问的智慧》,你会找到答案。

在这里我给出一个链接/IndexPage/SmartQuestion.aspx,磨刀不误砍柴功,先花点时间去阅读一下吧。

得到别人的回答,要懂得感恩。

不需要去写信感谢,不需要支付费用,不需要那些花言巧语,做到下面这一点就够了: 当你逐步成为高手的时候,要回答别人在论坛上提出的问题,有时间有精力的前提之下! 6:还解决不了?问老师吧,这个只能是在你参加了培训的前提下了。 7:还解决不了?天哪,是不是思路从根上就搞错了?写信给我,让我也学习一下,共同进步吧。

JAVA自学之路 六:项目的自学

现在就业竞争的激烈程度已经远远高于当年了,记得我当年毕业时,一个会编程的毕业生站到台上,大声问道:“我会ASP,月薪5000有没有人要?” 台下的企业马上哗的举起一大片手:"我要我要 !"

那时 没有任何项目经验也会有人提供学习的机会:)

这种好日子恐怕一去不复返了(有些夸张,但无疑当时找一份不错的工作是比现在要容易的多)

而现在,即便是各种必要的知识你掌握的差不多了,但还有一座大山横在你的面前,那就是-项目经验。

有经验的程序员都知道,学习编程的最有效率的方式,恐怕就是把你扔到一个项目组,连滚带爬的做下一两个项目来,你马上会发现所有的知识点全都连到一起了,不再是分散的,而是形成一个整体了。那种感觉是仅仅深入钻研知识点而不写真实项目的人所不能体会的。一个项目就是一根绳子可以把大片的知识串到一起。

如果想锻炼实际开发的能力而不仅仅是背诵或者了解一些知识点,如果想成为真正的好手而不仅仅是背诵“回”字有几种写法,那么,作项目吧!

目前,各种编程的知识点变得越来越容易掌握,按照《JAVA自学之路 五:问题解决知道》中的各种办法也可以逐步积累自己知识的广度和深度,那现在什么才能够体现水平的不同?当然是项目经验。

目前,尚学堂的课程已经超越了知识点的研究和罗列,我们将在未来的时间里逐步公布各个知识点的视频,包括SSH、EJB等,这样做有两个好处:首先自学的同学可以免费得到原来商业培训的内容,这样起码可以节省一些时间,省一些力气。其次尚学堂自己可以更加专注于项目上。

目前尚学堂的项目写作占了课程50%左右的比重,尚学堂的项目也早已经超越了简单的MIS系统的概念,逐步的成为综合了搜索引擎、工作流、SCA/SDO、Linux/UNIX、大型数据库系统、设计模式、架构模式、负载均衡等各种深层应用的综合大型项目并且采用手把手式的教学方法,做的更加的深入和细致,从现在看效果相当好,最近142班的就业就完全证明了这一点(了解142的就业情况),我们的计划是最近逐步将项目比重提升到70%以上,相信效果会更好。签于公司的规定,我们并不能将所有的项目实战都录制成视频来公布,但是已经公布的项目实战也是非常的有价值的:(/download.html) 1:Chat & Tank系列

2:BBS

3:Shopping(近期公布)

那么如果自学我们应该怎么样才能学习项目的开发呢?

一个比较有效的办法是,可以在现有项目的基础上做的更深入一些,比如在你按照视频完成了BBS之后,可以增加一些其他的功能,例如注册/积分/精华/搜索/贴图等等,在完成了Shopping之后,可以增加一些评论/排行/统计/存货等等方面的业务逻辑,尝试用自己的技术将他们作出来,这样既积攒了项目经验,又记住了知识点。

那么如何才能确定我要写什么样的业务逻辑呢?

应该讲这对于一个初学者是非常困难的,一些简单的系统,比如说BBS、Shopping、图书管理等等,它们的业务逻辑很容易确定,去浏览和参考一些现成系统的功能,很容易就能了解了。但是对于商用的大型系统,光是了解业务逻辑本身就会花费大量的精力,如果有时间有精力有财力的话,还是建议考虑一下我们的培训吧,这样经验的积累和薪水的提升会更快,从以前的统计数据看非常容易就可以回收这笔投资(替尚学堂的广告,必须得写,请见谅,但保证真实)。

如果条件不允许,那么就按照上面的方法来学习项目吧,不要因为暂时不能接触更大型更深入的项目而气馁,记住:机会总是青睐有准备的头脑,努力吧。

更多相关推荐:
Java心得体会

Java学习心得在学习了近一个学期java后我有了一点自己的见解Java是面向对象的具有平台无关性所以现在被广泛的应用于很多领域也是因为老师在开始上课的时候就给我们讲过这些所以带有兴趣和动力去学习java程序设...

学习java的心得体会

学习java的心得体会我是今年x月份接触java的,其实上大学以前就买过java的书,但没进去,因为那个时候我在学习vb,对于java代码类c的编写方式不是很习惯,所以就没有认真的看。为什么最后好是学习java…

java上机实验心得体会报告

北京联合大学信息学院“面向对象程序设计”课程上机实验报告题目:JAVA上机实验心得体会姓名(学号):专业:计算机科学与技术编制时间:20xx年x月x日版本:1.0.0指导教师:北京联合大学-信息学院编制实验…

java学习心得

湖南软件职业学院HNSERJ20xx0101湖南软件职业学院毕业论文知识改变命运课题java学习心得院系软件工程系专业软件技术班级软件0615班姓名周专书指导老师郑利娇完成时间20xx512WWWHNSOFTE...

java的学习心得体会

1、我感觉学习java应该是循环渐进,有始有终,按部就班,脚踏实地。java是一门有着阶梯性的一们语言,如果要学习它。我觉得最好还是按照java的学习体系,先学习什么,在学习什么,只有这样,我们在学习中才会遇到…

java初学者学习心得

学习Java心得体会学习了一学期的Java课程觉得是该总结自己的心得体会了开始学习任何一门课包括java兴趣最重要一直觉得自己在学计算机编程语言学习了很多但每门语言都停留在知识边缘地带都没深入到它们的精华部分对...

Java学习心得个人体会

Java学习心得个人体会Java学习路线以下这两张图片很好的规划了Java学习路径你可以另存为图片缩放观看图01传智播客Java学习路线图02疯狂Java学习路线推荐一篇博文JAVA学习路线地址blog4038...

Java设计模式学习心得

Java设计模式学习心得整个设计模式贯穿一个原理面对介面编程而不是面对实现面向物件编程应该改爲面向介面编程目标原则是降低耦合增强灵活性一创建模式1设计模式之Factory工厂方法和抽象工厂使用工厂模式就象使用n...

Java课程设计心得体会

Java课程设计心得体会

Java程序设计课程学习总结与心得

Java程序设计课程学习总结与心得

Java实训心得

心得体会时光飞逝短短一周的培训就这样结束了我似乎还沉醉在那种紧张而充实的学习状态中无法自拔谢谢学校和各位老师给我们这次宝贵的培训机会让我对短短的大学生活再次充满期待先来说说我在培训中的感受吧在参加java培训的...

java基础总结-最全版本

Java基础知识精华部分个人总结写代码1明确需求我要做什么2分析思路我要怎么做1233确定步骤每一个思路部分用到哪些语句方法和对象4代码实现用具体的java语言代码把思路体现出来学习新技术的四点1该技术是什么2...

java心得(38篇)