java自学之路-马士兵

马士兵教程—《坦克大战》游戏设计思路 马士兵教程—《坦克大战》游戏设计思路 版本0.1     功能:产生一个窗口   版本0.2     功能:添加关闭窗口的事件处理                不允许窗口的大小改动   版本0.3        功能:画出代表坦克的实心圆   版本0.4        功能:让坦克运动起来        步骤: 将位置改变为变量 启动线程不断重画 阅读详情


JAVA自学之路——马士兵
 2007年11月06日 星期二 05:47 P.M.[原创 - 尚学堂科技 - 马士兵老师]
 
 JAVA自学之路 一:学会选择
 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_1.html]
 
 为了就业,不少同学参加各种各样的培训。
 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G、测试等。
 
 那么究竟应该选择什么方向呢?
 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧。
 
 每个培训机构都会宣传自己的好处,并不能说明大的趋势。
 一些新闻文章很有可能是枪手写的,不必太过相信。
 国外背景的教师和课程,未必适合你。
 
 那么怎么才能确定自己将来的方向?如何才能从纷繁复杂、或真或假的数据世界中挖出一条路?
 我讲一个通过招聘网站的观察方法。
 可以到各种招聘的网站上查询信息(可以到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自学路线图
 
 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_2.html]
 
 有不少的同学发信给我,和我探讨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自学之路 三:要动手
 
 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_3.html] 无论如何,请坚持不懈的动手实验!
 
 学习Java要动手,仅仅是看和听是不能够学好编程的。
 总有同学来信问我们这样的问题,说:"老师我看了视频了(下载:http://www.bjsxt.com/download.html),可是怎么一动手就没有任何思路呢?"
 对此,我一般都会说不要着急,如果你只是看了视频就想行云流水的话,那老师这些年的锻炼真是白费了,这么多年的苦练才能略有些行云流水的感觉,你一朝一夕就想自己能够达到,不是太奢侈了吗
 
 作为编程的过来人想一下,当年自己学编程的时候是什么时候有思路的呢?至少也是照猫画虎画了一段时间之后吧,我本人是在某一个领域画虎画了上万行代码的时候才慢慢有自己思路的。就像写作文,要有自己思路总是一般来说要经过几个阶段,首先学习词汇,然后学习造句,然后大量阅读别人的文章,自己模仿着写一些,逐渐的经验积累,才能形成自己的思路。学编程,恐怕也得慢慢的来吧,只是看一看、听一听视频,是不足以学好编程的。
 
 所以,动手吧,跟着做,一行一行的跟着敲,一个项目敲完了,比如坦克,再试着加一些自己的功能,按照自己的思路敲一些代码,收获远比干听大的多。
 如果遇到,暂时对于一些思路不能理解的同学,我一般都会劝告说,动手写,先写代码,量变会引起质变的。而这种质变的确发生过不少次。
 提醒一句,要理解代码思路之后再跟着敲 ,背着敲,千万不要左边摆着别人的程序,右边自己一个一个子母的写,这就不再是程序员了,成了打字员了。
 
 纸上得来终觉浅,所以:
 别问那么多,别想那么多,动手写吧。
 
 JAVA自学之路 四:要事为先
 
 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_4.html] 对待人生的任何事情都要:抓大放小,要事为先
 
 对于一个以前从来没有接触过java的人,java无疑是庞大的,似乎每个领域都可以拓展开来都是一片开阔地,每一个领域要想深入接触到每一个细节所耗费的精力都是巨大的。这个时候大家都胸怀壮志,两眼发光的盯着每一个崭新的知识点,遇见了任何一个知识点都恨不得抠的清清楚楚,明明白白。
 
 难道这有什么不对吗?
 我的意见是,没什么大毛病,但是学习效率太低了!
 我们推荐的学习方式是,抓大放小,要事为先。
 
 比如说学习J2SE的时候,学到GUI这一章,有的同学认为,既然学到这儿了,我们去把SWING细细的了解一遍吧;还有的同学,遇到了在Linux下的Shell编程,就恨不得把Shell先学成专家才肯,或者是才敢,继续往下学习;有没有过这样的感觉,一本书的上册没有学好,觉着下册心里也没底儿,甚至非要把上册复习一遍才敢继续学习。
 如果你也是这样,要去看看心理医生啦,没准儿会有洁癖的毛病。
 任何事情都要追求完美才敢继续往后进行,是一种性格缺陷
 
 大胆的放弃一些东西吧,有失才有得,把自己有限的、宝贵的精力用在对于就业直接相关的地方,这才是最有效率的学习方式!等你参加工作,有了可持续发展的事业动力和经济基础,有时间有精力闲的没事儿干的时候,再去研究那些其它吧。
 
 曾经有一个故事,说得是产能和产量的关系。
 一个人喜欢读书,读了一辈子,无所不通,这时候要做任何工作都可以,他的产能到了极致,但是,他老了,即便每天产出大量的东西也不能维持多久了,一辈子的产量并没有多少。
 另一个人直接工作,忙,天天在机器旁日复一日,做了一辈子,没时间学习和进修,可以想象,产量能有多大呢。
 人的一生,要锻炼产能,也要及时产出,引擎要转,也要停下来加油,这两者平衡的越好,你的贡献和产量就会越大。如果钻研的东西和产能目标(或者说近期的产能目标)无关的话,要舍得放手。
 
 所以,对于SWING,暂时先扔在一边吧。
 对于shell,对于各种协议过于详细的细节,对于喜欢的游戏编程,对于javascript各种华而不实的效果,都暂时和它们分别吧。
 一切和我们的直接工作目标关联不大的东西,扔在一边或者弄清楚到足够支持下一步的学习就可以了。
 
 那这样岂不是妨碍我成为通晓各种细节的高手了吗?
 我一向不认为一个人掌握了很多很多知识点的细节就是高手了,一个人如果告诉你,回字有四种写法,你会认为他是高手吗? 毫不客气的说,现在我们所教授的所有知识细节在网上或书中都可以找到,只要你肯花时间花精力去动手试,去钻研,没有什么不能掌握的。struts、spring你能掌握吗?当然能!但是如果把时间花在spring的各种细节的研究上,花在研究中国企业应用不广泛地的spring mvc上,这个精力就太浪费了,而且学习的积极性会受到打击,谁愿意整天泡在细节的蜘蛛网中挣扎不出来呢?谁愿意天天经历风雨却总是不能见到彩虹呢?
 
 盖房子,要先建骨架,再谈修饰。
 画山水,要先画结构,再谈润色。
 认识一台结构复杂的机器,应该首先认清楚脉络,然后再逐步认识每一个关节。
 为了应付从小学到大学的考试,我们背了各种各样的不应该提前掌握的细节,同时也养成了见到细节就抠的学习习惯。而现在,是到改改的时候了。
 
 请在合适的时间,做合适的事情吧。
 把时间和精力花在作项目上面,花在写作品以及锻炼解决问题的能力上面吧,这是迈向高手的正确的而且快速的方向。
 
 我一直不认为一个课程提供了很多很多的细节就是优秀的价值高的课程了,掌握必要的细节,这个不含糊,至于其他,或者通过视频给出(这样可以给出更多的细节,但是不占上课时间,课上只讲重要的、必要的细节知识),或者在掌握了自学的能力后自己能够查出,这才是正途。
 
 当你看书到某个地方暂时不理解的时候的,暂时放手吧,追求一些行云流水、自然而然的境界吧,只是不要停下前进的脚步,不要被大路旁边的支根末节干扰了你前进的行程,项目,真实的项目,这才是目的,就在不远的前方。
 陶渊明读书,叫做“不求甚解”,但他是大诗人。
 诸葛亮读书,总是“观其大略”,但他是大政治家。
 作研究的,是在确定了方向之后才详细的研究深入的东西。
 到了庐山,脉络形状扔在一边,盯着一棵棵小草、一粒粒石子的看,怎么样才能识得“真面目”?
 作为应用型的人才,是研究回字的n种写法还是抓紧时间向着主要应用的方向努力,请自己作出抉择。
 
 以项目驱动自己的学习吧,当把握了技术的脉络之后再去补充细节的研究,是正途。
 
 这辈子就不研究其他的方向了吗?
 当然要研究!但是在将来合适的时间再说吧。
 所以,抓大放小,要事为先!
 那么,在JAVA的这些课程中,哪些才是大,才是要事呢?请继续读下去。
 
 JAVA自学之路 五:问题解决之道
 
 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_3.html] 既然是学习,就不可能不遇到问题。
 既然是自学,就没有方便的和老师探讨的机会。
 那么,遇到问题之后,环境配不通,程序调不过,运行不正常,遇见这些恼人的问题的时候,该怎么办呢?
 
 首先我要恭喜你,遇见问题,意味着你又有涨经验的机会了,每解决一个问题,你的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常用。可以参考我们的视频《BBS》等
 这些我说的比较简单,详细了解的话请关注以下我们的视频吧,在近期会逐步的将一些知识点的视频 进行免费的公布,http://www.bjsxt.com/download.html
 
 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”
 
 然后在搜索结果里好好的看看那些活动频繁的论坛,以后就是你经常光顾的地方了。http://community.youkuaiyun.com/就很不错。
 
 向别人提问是非常需要技巧的!
 曾经有人问我这样的问题:“请问如何才能学好java呢?”
 这个要求太泛泛了。
 还有人给我一段代码甚至jar包也寄过来,然后说老师的我的代码中有个错误您帮我查查:(
 我没有办法去花大量的时间建立环境去调试一个还不知道存在不存在的错误!
 还有人在BBS上问这样的问题:“是否有人能帮我完成一个完整聊天的程序?请帮我写一个登陆模块吧!”
 这个要求有些过分了,有人帮你做是你的运气,没有人帮你是正常反应。
 
 向别人提问,应该首先确定你已经做了自己应该做的事,简单说是我前面列举的1,2,3,4步你都作过了,然后再求助于人。不要没有经过认真思考就草率的向别人提问,自己也不会有长足进步的。
 那我该怎么样向别人提问呢?
 在google或百度搜索《提问的智慧》,你会找到答案。
 在这里我给出一个链接http://community.youkuaiyun.com/IndexPage/SmartQuestion.aspx,磨刀不误砍柴功,先花点时间去阅读一下吧。
 
 得到别人的回答,要懂得感恩。
 不需要去写信感谢,不需要支付费用,不需要那些花言巧语,做到下面这一点就够了:
 当你逐步成为高手的时候,要回答别人在论坛上提出的问题,有时间有精力的前提之下!
 
 6:还解决不了?问老师吧,这个只能是在你参加了培训的前提下了。
 7:还解决不了?天哪,是不是思路从根上就搞错了?写信给我,让我也学习一下,共同进步吧。mashibing2004@sina.com
 
 JAVA自学之路 六:项目的自学
 
 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_6.html] 现在就业竞争的激烈程度已经远远高于当年了,记得我当年毕业时,一个会编程的毕业生站到台上,大声问道:“我会ASP,月薪5000有没有人要?” 台下的企业马上哗的举起一大片手:"我要我要 !"
 那时 没有任何项目经验也会有人提供学习的机会:)
 这种好日子恐怕一去不复返了(有些夸张,但无疑当时找一份不错的工作是比现在要容易的多)
 
 而现在,即便是各种必要的知识你掌握的差不多了,但还有一座大山横在你的面前,那就是-
 项目经验。
 
 有经验的程序员都知道,学习编程的最有效率的方式,恐怕就是把你扔到一个项目组,连滚带爬的做下一两个项目来,你马上会发现所有的知识点全都连到一起了,不再是分散的,而是形成一个整体了。那种感觉是仅仅深入钻研知识点而不写真实项目的人所不能体会的。一个项目就是一根绳子可以把大片的知识串到一起。
 
 如果想锻炼实际开发的能力而不仅仅是背诵或者了解一些知识点,如果想成为真正的好手而不仅仅是背诵“回”字有几种写法,那么,作项目吧!
 
 目前,各种编程的知识点变得越来越容易掌握,按照《JAVA自学之路 五:问题解决知道》中的各种办法也可以逐步积累自己知识的广度和深度,那现在什么才能够体现水平的不同?当然是项目经验。
 
 目前,尚学堂的课程已经超越了知识点的研究和罗列,我们将在未来的时间里逐步公布各个知识点的视频,包括SSH、EJB等,这样做有两个好处:首先自学的同学可以免费得到原来商业培训的内容,这样起码可以节省一些时间,省一些力气。其次尚学堂自己可以更加专注于项目上。
 
 目前尚学堂的项目写作占了课程50%左右的比重,尚学堂的项目也早已经超越了简单的MIS系统的概念,逐步的成为综合了搜索引擎、工作流、SCA/SDO、Linux/UNIX、大型数据库系统、设计模式、架构模式、负载均衡等各种深层应用的综合大型项目并且采用手把手式的教学方法,做的更加的深入和细致,从现在看效果相当好,最近142班的就业就完全证明了这一点(了解142的就业情况),我们的计划是最近逐步将项目比重提升到70%以上,相信效果会更好。
 签于公司的规定,我们并不能将所有的项目实战都录制成视频来公布,但是已经公布的项目实战也是非常的有价值的:(http://www.bjsxt.com/download.html)
 1:Chat & Tank系列
 2:BBS
 3:Shopping(近期公布)
 
 那么如果自学我们应该怎么样才能学习项目的开发呢?
 一个比较有效的办法是,可以在现有项目的基础上做的更深入一些,比如在你按照视频完成了BBS之后,可以增加一些其他的功能,例如注册/积分/精华/搜索/贴图等等,在完成了Shopping之后,可以增加一些评论/排行/统计/存货等等方面的业务逻辑,尝试用自己的技术将他们作出来,这样既积攒了项目经验,又记住了知识点。
 
 那么如何才能确定我要写什么样的业务逻辑呢?
 应该讲这对于一个初学者是非常困难的,一些简单的系统,比如说BBS、Shopping、图书管理等等,它们的业务逻辑很容易确定,去浏览和参考一些现成系统的功能,很容易就能了解了。但是对于商用的大型系统,光是了解业务逻辑本身就会花费大量的精力,如果有时间有精力有财力的话,还是建议考虑一下我们的培训吧,这样经验的积累和薪水的提升会更快,从以前的统计数据看非常容易就可以回收这笔投资(替尚学堂的广告,必须得写,请见谅,但保证真实)。
 
 如果条件不允许,那么就按照上面的方法来学习项目吧,不要因为暂时不能接触更大型更深入的项目而气馁,记住:机会总是青睐有准备的头脑,努力吧。
 
 JAVA自学之路 七:路线图明细
 
 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_7.html] 下面给出第二节《JAVA自学路线图》[http://www.bjsxt.com/zixue/zixuezhilu_2.html] 中知识点的明细:
 
 注:
 1:下面大多数的知识点我们已经公布了视频或者会近期公布(几个月之内),请大家关注一下这个网址http://www.bjsxt.com/download.html,可以按照该页面的提示,用电驴进行下载
 2:这里是为方便大家自学给出的列表,请大家不要同尚学堂的课程画等号,下面的内容要比实际授课简单很多,另外很多知识是融汇在项目开发中的,适合面授,不适合自学。
 
 一:J2SE
 面向对象-封装、继承、多态
 内存的分析
 递归
 集合类、泛型、自动打包与解包、Annotation
 IO
 多线程、线程同步
 TCP/UDP
 AWT、事件模型、匿名类
 正则表达式
 反射机制
 
 2:数据库(Oracle或者MySQL)
 SQL语句
 多表连接,内外连接, 子查询等
 管理表、视图、索引、序列、约束等
 树状结构存储
 存储过程、触发器
 数据库设计三范式、
 
 3:JDBC
 JDBC基础
 连接池
 树状结构存储与展现
 DataSource & RowSet
 JDBC连接Oracle及MySQL
 
 4:HTML_CSS_JAVASCRIPT
 html、css、javascript基础语法
 JavaScript Form判断
 Dom编程基础(事件处理等)
 JS常用效果如TreeView、下拉联动等
 JS学习方法
 JS调试方法
 DreamWeaver初步(建立HTML、Table、Form、CSS)等
 
 5:Servlet & JSP
 
 tomcat基础
 servlet基础
 web.xml配置基础
 web application的结构
 servlet生命周期
 request response等常用方法
 ServletContext类
 HTTP协议基础(GET POST)
 Cookie
 Session
 Application
 
 JSP的几种语法(包括JSTL等)注意在项目中练习,不要拘泥于语法细节而裹步不前。
 
 6:Struts
 多层架构理论
 Model 1 and Model 2
 Struts基本概念
 MVC
 Action与业务逻辑类的关系
 在Struts与JSP之间传递数据
 Struts处理流程(控制流)
 Struts TagLib(了解常用的)
 JSTL
 ActionForm
 字段收集
 上传文件
 类型转换
 DTO
 动态Action Form
 验证框架
 ActionForward 转发与重定向
 动态生成ActionForward
 全局与局部的ActionForward
 Action Forward Scope
 UnknownActionMapping
 Action的线程安全
 I18N
 如何切换语言环境
 Struts异常处理机制 程序处理 自动处理 自定义异常处理器
 Struts的多模块配置
 
 7:XML
 (XML/XSL、XSLT/DTD、SCHEMA等基础的概念、关于Java的编程可以暂时扔在一边)
 
 8:Hibernate
 OR Mapping原理
 Hibernate基础开发步骤
 Hibernate基本接口(重点Session)
 普通属性映射
 关联关系映射
 Native SQL
 inverse lazy cascade
 继承关系映射
 HQL
 性能优化 一级缓存 二级缓存 查询缓存
 事务与并发 悲观锁、乐观锁
 OpenSessionInView
 CurrentSession
 (至于JTA、联合主键、自然主键、动态主键、Any类型 Creteria Queries Intercepter and Event 自定义类型等,可以暂时扔在一边)
 
 9:Spring
 IOC/DI
 Spring配置
 Spring架构
 AOP及Spring AOP
 声明式事务(AOP)
 Spring + Hibernate Spring支持Web
 Scope
 (其他的Spring模块对于自学来说可以暂时扔在一边)
 
 10:EJB3.0
 J2EE架构基础(JTA JMS等)
 EJB基础(地位及基本理论、分类等)
 Annotation
 Ant编译与部署EJB
 Session Bean
 EJB的依赖注入
 Persistence API
 (可以用JBoss学习EJB3.0)
 
 11:至于SOA,对于自学的同学来说,暂时不用特别关注。
 
 梳理一下,你就会发现东西不是想象中的那么多呀!
 
 建议大家优先学习我们公布的视频,然后再去找参考书,因为这个时候就能分辨出来哪些书适合你了。
 
 那么,如何才能找到好书呢?一个简单的办法,在卖书的网站上,比如http://www.china-pub.com/,搜索你想了解的知识点比如"javascript",按销售排行,排在前几位的,应该就是不错的,记下书名,到书店阅读几章,合适你的就是好书了。没钱买?简单!还有什么google + 电驴找不到的资料吗:)
 
 写了这么多,有一些是广告,在其位,谋其政,但并没有讲假话,还望大家理解,如果大家在自学的过程中有什么问题的话,可以写信给我mashibing2004@sina.com或者training@bjsxt.com,我愿意随时聆听大家的教诲。
 
 如果是技术问题,记得首先要阅读《JAVA自学之路 五:问题解决之道》哦

 

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/tianxudong2004/archive/2009/06/11/4259513.aspx

马士兵java面试八股文及答案 马士兵java面试八股文及答案,秋招必备 阅读详情

相关推荐

二十年架构师马士兵老师告诉你:2024年Java架构师到底该如何进阶

整理了一份Java核心知识点。覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)添加图片注释,不超过 140 字(可选)

代码界的扛把子 595

Cadence原理图DRC检查介绍

背景:由于Cadence的DRC操作与AD不一样,在此记录并详细介绍其DRC检查 一、进入原理图工程 在原理图工程XXX.dsn上,才可以进行DRC操作。否则DRC功能是暗的 鼠标点击XXX.dsn,然后点击【Tool】–>【Design Rules Check】 二、进入DRC设置界面 会弹出警告提醒,选择【Yes】即可 大概意思"此操作会影响整个设计,因此会清除 撤销/恢复 信息列表。你将不可能 撤销/恢复之前所有的操作。你想继续吗?" 进入设计规则窗口 如果想忽略DRC警告,则需要选择列

qq_42057393的博客 3万+

大厂案例:快手AI人才管理系统的架构设计与效果

凌晨两点刷简历的HR、说不清“团队离职率高”原因的业务leader、不知道“该学什么”的员工——这些人力资源场景中的“痛点”,曾是快手高速增长期的真实写照。当员工规模从几千扩张到几万,传统HR系统的“经验驱动”模式彻底失效。2021年,快手启动AI人才管理系统建设,用“数据+算法”重构招聘、培养、绩效、留存全流程。本文将拆解这套系统的架构设计逻辑核心技术实现,以及真实业务效果AI如何让HR从“事务执行者”变成“战略伙伴”?

大模型应用工坊 1711

马士兵坦克大战学习笔记(一)

坦克大战学习笔记(一)

thestudent的博客 912

硬件测试之—纹波测试为什么不要使用接地夹子

示波器为什么不推荐使用接地夹

qq_19294353的博客 2988

.Net如何使用Web API实现数据交互?

数据模型代表了要交互的数据结构。例如,假设我们要创建一个简单的图书管理系统,我们可以定义一个Book类作为数据模型。set;set;set;

Code365 257

马士兵的Java自学之路

目录 JAVA自学之路 一:学会选择............................................................................................ 2 JAVA自学之路 二:JAVA自学路线图................................................................

猪猪侠 1076

上下双相机定位贴合(原理到应用,halcon源码详解)

上下双相机定位贴合(原理到应用,halcon源码详解) 一、简介(类型与之前的文章)看你们理解那个文章快 主要讲解上下双相机定位贴合的原理和实现过程,包括各种标定、组合使用及具体的halcon源码实现,适用于的X、Y、Z三轴加一旋转轴系统,如模组组成的多轴系统、Scara四轴机器、六轴机器人(在运行过程中保证几个自由度不动,运行即可) 二、标定介绍 这一小节总结了通用的相机和轴的相对位置模型,并对其标定进行详细讲解 本系统仅使用了九点标定,精度可做到0.05mm 九点标定作用: A、本质就是仿射变换,一个坐

苏州程序大白的博客 9974

Java自学之路-马士兵老师

转自:http://www.bjsxt.com/news/156.html 作者:马士兵老师  JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训。  决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G

YTTCJJ的专栏 860

从零开始:使用Verilog在FPGA上实现8051微控制器的完整指南

8051微控制器是一种8位微控制器,由Intel在1980年代初推出。它包括一个CPU、一些RAM和ROM、I/O端口、定时器和串行通信接口。由于其简单的架构和强大的功能,8051已经成为了嵌入式系统设计的首选。FPGA是一种集成电路,设计师可以按照自己的需求进行编程。与传统的ASIC(应用特定集成电路)相比,FPGA提供了更高的灵活性,允许在硬件级别进行快速原型设计和迭代。这里,我们定义了一些基本的输入/输出端口,如时钟clk、复位reset、数据输入/输出和地址输入/输出。

qq_38334677的博客 1332

基于Simulink的电源纹波抑制仿真

电源纹波(Power Supply Ripple)是指直流电源输出中存在的交流分量。纹波的存在会导致电压波动,进而影响负载设备的性能和寿命。为了确保高质量的电源输出,通常需要设计有效的滤波电路来抑制纹波。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证电源纹波抑制方案。本教程将详细介绍如何使用 Simulink 进行电源纹波抑制的仿真实例。通过本教程,我们详细介绍了如何使用 Simulink 进行电源纹波抑制的仿真实例。背景介绍:理解电源纹波及其对电力电子系统的影响。仿真建模过程。

xiaoheshang_123的博客 513

JAVA自学之路——马士兵

JAVA自学之路——马士兵JAVA自学之路——马士兵 2007年11月06日 星期二 05:47 P.M.[原创 - 尚学堂科技 - 马士兵老师]   JAVA自学之路 一:学会选择 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_1.html]  为了就业,不少同学参加各种各样的培训。 决心做软件的,大多数人选的是java,或是.net,也有一些

单纯味道的专栏 406

Python 爬虫实战:去哪儿网机票价格爬取与出行比价分析

本文介绍了一个基于Python的机票价格监控系统,通过爬取去哪儿网数据实现多航线查询与智能比价。系统采用requests+BeautifulSoup+selenium技术栈,具备以下功能: 实时查询指定航线价格 历史价格追踪与分析 最低价推荐与价格预警 数据可视化展示 文章详细解析了去哪儿网的页面结构和反爬机制,提供了Selenium浏览器的完整配置方案,并实现了一个可稳定运行的机票采集爬虫。该系统能帮助用户掌握价格波动规律,选择最优购票时机,每年可节省可观的出行成本。

u014481728的博客 668

马士兵_JAVA自学之路

马士兵_JAVA自学之路 JAVA自学之路 一:学会选择  为了就业,不少同学参加各种各样的培训。  决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G、测试等。  那么究竟应该选择什么方向呢?  我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自

audered的专栏 604

LVGL嵌入式GUI工程化架构与多窗口实践

嵌入式GUI开发中,LVGL作为轻量级图形库,其核心价值在于高效渲染与事件驱动机制。理解LVGL的对象树模型、资源管理机制(如RAW图像、静态字体)和屏幕生命周期,是构建稳定界面的基础。结合FreeRTOS等实时操作系统,可实现低功耗、高响应的交互体验。典型应用场景包括智能电表、HMI人机界面、工业控制面板等对内存敏感、需长期运行的设备。本文以微信式多窗口架构为范例,深入解析LVGL工程化落地的关键路径:分层目录结构、窗口模块封装、状态机式登录逻辑、TabView多页导航及图表/仪表盘动态可视化,覆盖从资源

weixin_36001279的博客 88

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java自学之路马士兵_马士兵老师的Java自学之路

JAVA自学之路 :JAVA自学路线图有不少的同学发信给我,和我探讨java的自学过程应该是什么样的,毕竟有很多人因为各种各样的原因不能参加培训。我试着给出自己的见解,抛砖引玉吧。这个路线图是给那些为了就业的人准备的,如果只是兴趣,不一定照这个走。这里只是讲了路线图,关于路线中的各个阶段,学到什么程度,如何学习等,可以参考后面的JAVA自学之路 七:《路线图明细》。首先要学JavaSE,这是无庸置...

weixin_39606244的博客 447

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JAVA自学之路[马士兵老师]

原创 - 尚学堂科技 - 马士兵老师] [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_2.html] 有不少的同学发信给我,和我探讨java的自学过程应该是什么样的,毕竟有很多人因为各种各样的原因不能参加培训。我试着给出自己的见解,抛砖引玉吧。 这个路线图是给那些为了就业的人准备的,如果只是兴趣,不一定照这个走。 这里只是讲了路线图,关于路线

javazhuanzai的专栏 1668

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

马士兵老师的JAVA自学之路

JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训。 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G、测试等。 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧。

筚路蓝缕 以启山林 1157

马士兵Java自学之路

目录 JAVA自学之路 一: 学会选择 2 JAVA自学之路 二: JAVA自学路线图 3 JAVA自学之路 三: 要动手 3 JAVA自学之路 四: 要事为先 4 JAVA自学之路 五: 问题解决之道 6 1:要仔细的观察错误的现象,是的,要仔细 6 2:要仔细思考问题会出在哪些环节(重要) 6 3:如何定位错误(重要)分析清楚有哪些环节之后,下一步就是定位到底什么环

全村的希望的博客 1329

JAVA自学之路 —— 马士兵作~ make

【JAVA自学之路】——尚学堂 转载自:尚学堂~  作者我偶像:马大帅(马士兵) 1JAVA自学之路 一:学会选择  为了就业,不少同学参加各种各样的培训。  决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G、测试等。  那么究竟应该选择什么方向呢?  我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),

zs79198201的专栏 931

JAVA自学之路_马士兵

JAVA自学之路 一:学会选择 [转载请注明出处:http://www.bjsxt.com/zixue/zixuezhilu_1.html] 为了就业,不少同学参加各种各样的培训。 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机、嵌入式、游戏、3G、测试等。 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我

geniusxiaoyu的专栏 5419

[zz] JAVA自学之路&马士兵教程观看顺序

JAVA自学之路 七:路线图明细 下面给出第二节《JAVA自学路线图》中知识点的明细: 一:J2SE 面向对象-封装、继承、多态 内存的分析 递归 集合类、泛型、自动打包与解包、Annotation IO  多线程、线程同步  TCP/UDP  AWT、事件模型

pisheng的专栏 1万+

马士兵java自学之路

JAVA 自学之路     JAVA 自学之路  一: 学会选择   为了就业,不少同学参加各种各样的培训。 决心做软件的,大多数人选的是 java ,或是.net ,也有一些选择了手机、嵌入式、游戏、3G、 测试等。     那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会 的时候,就不要再把自己当

狮子王的专栏 1163
上一篇: MyEclipse自动出现相匹配的关键字
下一篇: Apache Commons fileUpload实现文件上传
wlxtaking
博客等级 码龄17年 51粉丝 67原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值