马士兵老师首推 Java 七条自学路线,自学到底能不能行?自学也能拿到 40W 年薪?
JAVA 自学之路 一:
学会选择为了就业,不少同学参加各种各样的培训。 决心做软件的,大多数人选的是 java,也有一些选择了手机、嵌入式、游戏、3G、测试等。那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧。每个培训机构都会宣传自己的好处,并不能说明大的趋势。 一些新闻文章很有可能是枪手写的,不必太过相信。 国外背景的教师和课程,未必适合你。 那么怎么才能确定自己将来的方向?如何才能从纷繁复杂、或真或假的数据世界中挖出一条路? 我讲一个通过招聘网站的观察方法。 可以到各种招聘的网站上查询信息(可以到 google 上查询招聘的网站),综合了各大招聘网站的数据。 这些数据都是最真实不掺假的原始数据,你可以每隔一段时间搜索一次,一些规律就会被总结出来了。 比如说我在http://www.jobui.com中搜索 java,全国大概提供了数万个职位。 然后要多翻几页,这样不仅能够看清楚大概有多少是有效的职位,而且还可以看清楚用人单位最关心的技能是什么,这个很重要,决定着你将来要花多少时间和精力在特定的知识点上,比如说 swing,搜了一下,全国只有 700 个左右的职位,仔细读了一下,也并非全是有效的职位,花太多时间和精力在这个上面就不值得了,当然自己感兴趣或者为了研究的话另当别论。不过如果是为了快速的就业,把太多时间和精力花在很多职业生涯的前一、二年用不到的知识上就太可惜了。 同时,并非某一个行业的职位数目少,就不能当做一个方向进行选择,比如.NET,我搜索到的职位数是 1.6 万左右,比 java 少,是不是就选 java 了呢?不一定,因为 java 职位虽然多,但是可能竞争者可能也多,有些方向虽然职位数不多,但是和你竞争这些职位的人数量也少,不见得就不能选择。 不过,如果某一个方向的职位数目过少,你可就要小心了,选择这样的方向风险会非常大,如 J2ME。 我个人觉得 java/J2EE、.net、嵌入式开发是不错的三个方向。
如果非要在 java 和.net 中选择的话,我个人是推荐 java 的,原因:
1:Java 能够开发 linux、unix 服务器上的程序
2:JavaEE 和.NET 在企业应用方面的关注点是差不多的,但是学习了 java 如果将来想转到.net 上会比较简单,几天的学习然后上手开发应该是问题不大的,但是反之就不行了。 当然如果有了些经验之后,你就会发现语言或者平台不再是技术上的阻碍,一些原理性的东西学到手,然后再加上项目经验,使用什么平台,反而不是最重要的。不过如果非要用一种平台进入企业开发的领域,至目前我推荐 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 要动手,仅仅是看和听是不能够学好编程的。总有同学来信问我们这样的问题,说:“老师我看了视频了,可是怎么一动手就没有任何思路呢?”对此,我一般都会说不要着急,如果你只是看了视频就想行云流水的话,那老师这些年的锻炼真是白费了,这么多年的苦练才能略有些行云流水的感觉,你一朝一夕就想自己能够达到,不是太奢侈了吗:)
作为编程的过来人想一下,当年自己学编程的时候是什么时候有思路的呢?至少也是照猫画虎画了一段时间之后吧,我本人是在某一个领域画虎画了上万行代码的时候才慢慢有自己思路的。就像写作文,要有自己思路总是一般来说要经过几个阶段,首先学习词汇,然后学习造句,然后大量阅读别人的文章,自己模仿着写一些,逐渐的经验积累,才能形成自己的思路。学编程,恐怕也得慢慢地来吧,只是看一看、听一听视频,是不足以学好编程的。
所以,动手吧,跟着做,一行一行的跟着敲,一个项目敲完了,比如坦克(完整视频添加助手 vx:bjmsb10;免费获取),再试着加一些自己的功能,按照自己的思路敲一些代码,收获远比干听大的多。 如果遇到,暂时对于一些思路不能理解的同学,我一般都会劝告说,动手写,先写代码,量变会引起质变的。而这种质变的确发生过不少次。 提醒一句,要理解代码思路之后再跟着敲 ,背着敲,千万不要左边摆着别人的程序,右边自己一个一个字母的写,这就不再是程序员了,成了打字员了。 纸上得来终觉浅,所以:别问那么多,别想那么多,动手写吧。
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,可以参考我们的视频《坦克大战》(添加助手 vx:bjmsb10;免费获取),详细讲了 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” 然后在搜索结果里好好的看看那些活动频繁的论坛,以后就是你经常光顾的地方了。http://community.csdn.net 就很不错。 向别人提问是非常需要技巧的! 曾经有人问我这样的问题:“请问如何才能学好 java 呢?” 这个要求太泛泛了。 还有人给我一段代码甚至 jar 包也寄过来,然后说老师的我的代码中有个错误您帮我查查:( 我没有办法去花大量的时间建立环境去调试一个还不知道存在不存在的错误! 还有人在 BBS 上问这样的问题:“是否有人能帮我完成一个完整聊天的程序?请帮我写一个登陆模块吧!” 这个要求有些过分了,有人帮你做是你的运气,没有人帮你是正常反应。
向别人提问,应该首先确定你已经做了自己应该做的事,简单说是我前面列举的 1,2,3,4 步你都做过了,然后再求助于人。不要没有经过认真思考就草率地向别人提问,自己也不会有长足进步的。 那我该怎么样向别人提问呢? 在 google 或百度搜索《提问的智慧》,你会找到答案。 得到别人的回答,要懂得感恩。 不需要去写信感谢,不需要支付费用,不需要那些花言巧语,做到下面这一点就够了: 当你逐步成为高手的时候,要回答别人在论坛上提出的问题,有时间有精力的前提之下!
6:还解决不了?问老师吧,这个只能是在你参加了培训的前提下了。
7:还解决不了?天哪,是不是思路从根上就搞错了?写信给我,让我也学习一下,共同进步吧。
JAVA 自学之路 六:
项目的自学现在就业竞争的激烈程度已经远远高于当年了,记得我当年毕业时,一个会编程的毕业生站到台上,大声问道:“我会 ASP,月薪 5000 有没有人要?” 台下的企业马上哗地举起一大片手:”我要我要 !” 那时 没有任何项目经验也会有人提供学习的机会:) 这种好日子恐怕一去不复返了(有些夸张,但无疑当时找一份不错的工作是比现在要容易的多) 而现在,即便是各种必要的知识你掌握的差不多了,但还有一座大山横在你的面前,那就是-项目经验。
有经验的程序员都知道,学习编程的最有效率的方式,恐怕就是把你扔到一个项目组,连滚带爬地做下一两个项目来,你马上会发现所有的知识点全都连到一起了,不再是分散的,而是形成一个整体了。那种感觉是仅仅深入钻研知识点而不写真实项目的人所不能体会的。一个项目就是一根绳子可以把大片的知识串到一起。 如果想锻炼实际开发的能力而不仅仅是背诵或者了解一些知识点,如果想成为真正的好手而不仅仅是背诵“回”字有几种写法,那么,做项目吧!
目前,各种编程的知识点变得越来越容易掌握,按照《JAVA 自学之路 五:问题解决知道》中的各种办法也可以逐步积累自己知识的广度和深度,那现在什么才能够体现水平的不同?当然是项目经验。 那么如果自学我们应该怎么样才能学习项目的开发呢? 一个比较有效的办法是,可以在现有项目的基础上做的更深入一些,比如在你按照视频完成了 BBS 之后,可以增加一些其他的功能,例如注册/积分/精华/搜索/贴图等等,在完成了 Shopping 之后,可以增加一些评论/排行/统计/存货等等方面的业务逻辑,尝试用自己的技术将他们做出来,这样既积攒了项目经验,又记住了知识点。
那么如何才能确定我要写什么样的业务逻辑呢? 应该讲这对于一个初学者是非常困难的,一些简单的系统,比如说 BBS、Shopping、图书管理等等,它们的业务逻辑很容易确定,去浏览和参考一些现成系统的功能,很容易就能了解了。但是对于商用的大型系统,光是了解业务逻辑本身就会花费大量的精力,如果有时间有精力有财力的话,还是建议考虑一下我们的培训吧,这样经验的积累和薪水的提升会更快,从以前的统计数据看非常容易就可以回收这笔投资(替马士兵教育打的广告,必须得写,请见谅,但保证真实)。
如果条件不允许,那么就按照上面的方法来学习项目吧,不要因为暂时不能接触更大型更深入的项目而气馁,记住:机会总是青睐有准备的头脑,努力吧。
JAVA 自学之路 七:
路线图明细下面给出第二节《JAVA 自学路线图》中知识点的明细:
1: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,对于自学的同学来说,暂时不用特别关注。 梳理一下,你就会发现东西不是想象中的那么多呀! 建议大家优先学习我们公布的视频,然后再去找参考书,因为这个时候就能分辨出来哪些书适合你了。 那么,如何才能找到好书呢?
写在最后
上面这些是马士兵老师几年前的理论了,里面涉及的知识点有点陈旧,但是里面关于学习方法,这些内容框架沿用至今依然是非常实用的;
小编是从心底非常认可马士兵老师的,因为小编本身就是看马老师视频入门的,并且也在多个技术群讨论过类似的问题,得到的答案都是听马老师的视频上瘾,听别的咳嗽。。。。
个人建议,如果经济上面没问题的话可以去参加一下马老师的课程,会给你带来非常可观的回报(几倍甚至十几倍,如果现在月薪到达 3W 以上的人应该能理解原因);
如果经济上有困难或者觉得时机不到,可以先添加官方助理去白嫖一些先进的学习理念、学习脑图、课件笔记;
这些都是老师经过近二十年积累总结出的经验,并不是说读两本书就可以收获的;古语说:听君一句话,胜读十年书;
如果你也曾是马老师的粉丝;或者因为此文想认识一下马士兵老师;或者想要得到马士兵老师一对一指导规划;或者想得到马老师总结的 P8 架构师的最新的学习路线图、学习脑图、系列录播视频;请添加小助理 VX:wjj2632646 获取!
马老师一对一指导的成效:
Java 架构师学习路线图
P5——P7 路线图
左程云老师数据结构与算法
23 种设计模式
从底向上网络原理解读
多线程与高并发
JVM 调优实战
经常被问的操作系统原理解析
spring 源码阅读
SpringBoot
SpringCloud
Redis
Zookeeper
消息中间件
MySQL 优化
八大落地可实操项目实战(拥有自己的服务器)
再造淘宝 P8 顶级架构师
需要领取课程大纲、老师的授课视频、学习资料、大厂面试真题的朋友,点赞文章+关注,请添加小助理 VX:wjj2632646 获取!
版权声明: 本文为 InfoQ 作者【Java架构追梦】的原创文章。
原文链接:【http://xie.infoq.cn/article/0f5740149c7994ef7e8c6f95a】。未经作者许可,禁止转载。
评论