`

JAVA自学之路

阅读更多

一:学会选择
为了就业,不少同学参加各种各样的培训。
决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="3" unitname="g"><span lang="EN-US" style="font-size: 9pt;">3G</span></chmetcnv>、测试等。 
那么究竟应该选择什么方向呢?
我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当
 
成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧。 
每个培训机构都会宣传自己的好处,并不能说明大的趋势。
一些新闻文章很有可能是枪手写的,不必太过相信。
国外背景的教师和课程,未必适合你。
那么怎么才能确定自己将来的方向?如何才能从纷繁复杂、或真或假的数据世界中挖出一条路? 
我讲一个通过招聘网站的观察方法。
可以到各种招聘的网站上查询信息(可以到google上查询招聘的网站),例如:
http://www.51job.com 
http://www.chinahr.com 
http://www.zhaopin.com 
以及csdn的招聘频道等
还有一个网站也不错,http://www.jobui.com,综合了各大招聘网站的数据。 
这些数据都是最真实不掺假的原始数据,你可以每隔一段时间搜索一次,一些规律就会被总结出来了。
比如说我在http://www.jobui.com中搜索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上会比较简单,几天的学习
 
然后上手开发应该是问题不大的,但是反之就不行了。当然如果有了些经验之后,你就会发现语言或者平台不再是技术
 
上的阻碍,一些原理性的东西学到手,然后再加上项目经验,使用什么平台,反而不是最重要的。不过如果非要用一种
 
平台进入企业开发的领域,至少在目前,2007年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要动手,仅仅是看和听是不能够学好编程的。
总有同学来信问我们这样的问题,说:"老师我看了视频了(下载:http://www.bjsxt.com/download.html),可是怎么一
 
动手就没有任何思路呢?"
对此,我一般都会说不要着急,如果你只是看了视频就想行云流水的话,那老师这些年的锻炼真是白费了,这么多年的
 
苦练才能略有些行云流水的感觉,你一朝一夕就想自己能够达到,不是太奢侈了吗:)
 
作为编程的过来人想一下,当年自己学编程的时候是什么时候有思路的呢?至少也是照猫画虎画了一段时间之后吧,我
 
本人是在某一个领域画虎画了上万行代码的时候才慢慢有自己思路的。就像写作文,要有自己思路总是一般来说要经过
 
几个阶段,首先学习词汇,然后学习造句,然后大量阅读别人的文章,自己模仿着写一些,逐渐的经验积累,才能形成
 
自己的思路。学编程,恐怕也得慢慢的来吧,只是看一看、听一听视频,是不足以学好编程的。
 
所以,动手吧,跟着做,一行一行的跟着敲,一个项目敲完了,比如坦克,再试着加一些自己的功能,按照自己的思路
 
敲一些代码,收获远比干听大的多。
 
如果遇到,暂时对于一些思路不能理解的同学,我一般都会劝告说,动手写,先写代码,量变会引起质变的。而这种质
 
变的确发生过不少次。
 
提醒一句,要理解代码思路之后再跟着敲,背着敲,千万不要左边摆着别人的程序,右边自己一个一个子母的写,这就
 
不再是程序员了,成了打字员了。
 
纸上得来终觉浅,所以: 
别问那么多,别想那么多,动手写吧。
 
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:要仔细思考问题会出在哪些环节(重要)
当你读懂了一个问题之后,要好好的思考这个问题可能会在哪些环节上出错。
 
一辆汽车从总成线上下来,车门子关不上!
哪错了?你怎么查?
当然是顺着生产线一站一站的查下来。
程序也是一样的,也是一系列语句完成后产生的结果。
写一个网络程序,总是发现服务器端打印不出接收的数据,有几个环节会出错?
仔细分析这个现象的环节:

分享到:
评论

相关推荐

    Java自学之路

    ### Java自学之路:选择与路线图 #### 一、选择方向的重要性 在IT行业,特别是对于初学者而言,选择合适的技术方向至关重要。正如标题“Java自学之路”所提示的,很多人在选择技术栈时,倾向于Java,这主要是因为...

    JAVA自学之路 七路线图明细

    Java 自学之路的七条主线涵盖了从基础知识到进阶技术的广泛领域。以下是每个主线中的关键知识点的详细说明: 1. **J2SE 面向对象**:理解面向对象的基本概念,如封装、继承和多态。深入学习内存管理,包括对象创建...

    java自学之路-初学者宝典

    Java自学之路初学者宝典 在信息时代的浪潮中,掌握编程技能已成为提升个人竞争力的重要手段,而Java作为一门应用广泛的编程语言,吸引了无数编程爱好者投入自学的行列。本文旨在为初学者提供一份详尽的Java自学指南...

    java自学之路--教你怎么开始学java

    【Java自学之路】对于初学者来说,学习Java编程语言是一个挑战,但也是一个充满机遇的过程。以下是一些关于如何开始自学Java的重要建议: 首先,选择学习Java的原因可能多种多样,但通常就业是主要驱动力。Java因其...

    JAVA自学之路 java成功者之路

    ### JAVA自学之路——明确方向与自学路线图 在IT行业中,选择正确的技术栈对于个人的职业发展至关重要。尤其是在软件开发领域,随着技术的不断更新迭代,选择一个具有良好前景和发展空间的技术方向变得尤为重要。...

    Java自学之路.txt

    ### Java自学之路知识点详解 #### 一、Java基础学习阶段:J2SE 5.0 **1.1 Java基础知识介绍** - **源代码的重要性**:介绍了Java源代码的基础概念及其重要性,对于理解Java程序如何运行至关重要。 - **变量**:...

    我的java自学之路

    给自学Java的人们提的建议 不至于走弯路,学有所成

Global site tag (gtag.js) - Google Analytics