Java学习步骤

零基础学习java
第一部分
一、java基础首先去找一个java的基础教程学习java基础的时候,应该尽量多动手,很多时候,你想当然的事情,等你写出来运行一下,你就会发现不是这么回事。学完以上内容以后,你应该对java有一个基本的了解,你可以用java语言写出一些简单的程序,并且你用的是最简单的编辑器,比如记事本。这个时候,不要急于进入下一个部分,留下几天好好写一些程序,尽可能熟悉这些基础内容。
二、Web开发等你写上几天程序以后,你往往会比较迷茫,因为你写的东西似乎看起来毫无用处,比如实现一个简单的计算期,读取一个文件等。这个时候你就应该去学着写一些让你觉得有意思的东西,所以你应该学习更多的知识。这些内容主要是Web开发相关的内容,包括HTML/CSS/JS(前端页面)、Servlet/JSP(J2EE)以及Mysql(数据库)相关的知识。它们的学习顺序应该从前到后,因此最先学习的应该是HTML/CSS/JS(前端页面),这部分内容你可以去上面的runoob网站上找。

你可以试着自己写一些页面,当然,你可以尽你最大的努力让它变得最漂亮。这部分内容对于后端java来说,理论上不是特别重要,但至少达到可以自己写出一些简单页面的水平。接下来,你需要学习的是Servlet/JSP(J2EE)部分,这部分是java后端开发必须非常精通的部分,因此这部分是这三部分中最需要花精力的,而且这个时候,你要学会使用开发工具,而不能在使用记事本了,可以选择eclipse。当你下载安装好ecliose以后。请视频中的教程一步一步去学习,一定要多动手。关于Servlet/jsp部分视频的选择,业界比较认可马士兵的视频。

三、开发框架 当你学会以上内容以后,这个时候你还不足以参加工作,你还需要继续深造。公司里为了提高开发效率,会使用一些java Web的框架,因此你还需要学习一些开发框架。目前比较主流的是SSM框架,即spring、springMVC、mybatis。你需要学会这三哥框架的搭建,并用他们作出一个简单的增删改查的WEB项目。

快速利用它们三个搭建出一个WEB框架,你可以记录下你第一次搭建的过程。你在搭建ssm的过程中,可能会经常接触到一个叫maven的工具。这个工具是你以后工作当中几乎必须使用的工具,所以你在搭建ssm的过程中,也可以顺便了解一下maven的只是。在你目前这个阶段,你只需要在网络上了解一下maven基本的使用方法即可,一些高端的用法随这工作经验的增加,会逐渐接触到

四、当找工作你完全开发框架的学习以后,你就该找工作了,在找工作的同时,你不应该停下你的学习,准确的说,是你在以后都不能停下学习。上面这些内容你只是囫囵吞枣的学会了使用,你可以逐步尝试着去了解更多的东西,网络是你最重要的老师。

第二部分
对于参加工作一年以内的同学。恭喜你,这个时候,你已经拥有了一份java的工作。这个阶段是你成长极快的阶段,而且你可能会经常加班。但是夹板不代表你就可以松懈了,永远记得我说的那句话,从你入行那一刻起,你就要不停的学习。在这一年里,你至少需要看完《java编程思想》这本书。这本书的内容是帮助你对于java有一个更加深入的了解,是java基础的升级版。一年内看完并且充分吸收,而不是读一遍就完事了,因此有些内容可能不止看一遍。总而言之,这个阶段的核心学习思想就是,在工作中实践,并且更加深入的了解java基础

第三部分
对于参加工作一到两年的同学。这部分时段的已经对java有了一个更加深入的了解。但是对于面向对象的体会可能还不够深刻,变成的时候还停留在完成功能的层次,很少会去考虑设计的问题。于是这个时候,设计模式就来了。《大话设计模式》这本书,写有关设计模式的博客。
这一年必须对于设计模式了如指掌,《大话设计模式》可以作为你的开端。此外,设计模式并不是你这一年唯一的任务,你还需要看一些关于代码编写优化的书。比如《重构改善既有代码的设计》,《effective java》。总而言之,这个阶段,你的核心任务就是提高你的代码能力,要能写出一手优雅的代码。

第四部分
对于参加工作2到3年的同学,这个阶段有一本书必须要看,它叫做《深入理解java虚拟机》,这本书绝对是java开发者最重要的书,没有之一。在我眼里,这本书高于《java编程思想》。这本书的内容是帮助你全面的了解java虚拟机,这个阶段,你一定已经知道java是运行JVM上的。所以,对于JVM,你没有任何理由不了解它。
另外,在过去两年的工作当中,你肯定或多或少接触过并发,这个时候,你应该更加深入的了解并发相关的知识,而这部分内容,我比较推荐《java并发编程实战》这本书。只要你把这本书啃下来了,并发的部分基本已经了解了十之六七。与此同时,这个阶段你要做的事情还远不止如此。这个时候,你应该对于你所使用的狂街应该有了更深入的了解,对于java的类库也有了更深入的了解
因此,你需要去看一些JDK的类的源码,也包括你所使用的框架源码。这些源码能看懂的前提是,你必须对设计模式非常了解。否则的话,你看源码的过程中,永远会有这样那样的一蚊。这段代码为什麽要这么写?为什麽要定义这个接口,它看起来好像很多余?因此也可以看出,这些学习的过程是环环相扣的,如果你任何一个阶段拉下来了,那么你就真的跟不上了。
这个阶段要深入了解java底层和java类库(比如并发的那本书就是java并发包java.concurrent的内容),也就是说jvm和jdk的相关内容。而且还要更深入的去了解你所使用的框架,方式比较推荐看源码或者去看官方文档。另外,还有一种学习的方式,在两年这个阶段,也应该启用了,那就是造轮子。不要听信那套“不要重复造轮子”的论调,那是公司为了节省时间成本编造出来的。重复造轮子或许对别人没有价值,因为你造的轮子可能早就有了,而且一般情况下你造出的轮子还没有现存的好,但是对别人没有价值,不代表对你自己没有价值。一个造轮子的过程,是一个从无到有的过程。这个过程可以对你进行系统的锻炼,它不仅考察你的编码能力,还考察你的框架设计能力,你需要让你的轮子拥有足够好的扩展性。健壮性。而且造轮子的过程中,你会遇到各种各样的难题,这些难题往往又是你学习的契机。当你把轮子造好的时候,你一定会发现,其实你自己收获了很多。所以,这个阶段除了上面提到的了解JVM.JDK和框架源码以外,请根据别人优秀的源码,去造一个任何你能够想象出来的轮子。

第五部分
参加工作3到4年的同学这个阶段提升已经很难了。而且这个阶段学习往往会比较多样化,因为在前3年的过程中,你肯定或多或少接触过一些其他的技术,比如大数据、分布式缓存、分布式消息服务、分布式计算、软负载均衡等等。这些技术,你能精通任何一项。都将是你未来面试时的醉倒有时,因此如果你对某一项技术感兴趣的话,这个时候可以深入去研究一下。这项技术不一定是你工作所用到的,但一定是相关的。研究一门新技术时,切忌朝三暮四。有的今天去整整大数据,搞搞Hadoop、hbase一类的东西。过不了一段时间,就觉得没意思,又去研究分布式缓存,比如redis。然后又过不了一段时间,又去研究分布式计算,比如整整Mapreduce或者storm。结果到最后什么都不精通

一定要记住作为一个程序员,平日所接触的技术可能会很多,但是想要让一门技术成为你的优势,那么一定是你对这门技术的了解强过绝大多数人。因此这个阶段,你就不能再简单的去学习前3年的内容了,虽然前面的学习如果还不够深入的话依旧要继续,但这个时候你应该更多的考虑建立你的优势,也可以称为差异性,差异性不难理解,就是让自己成为与众不同。你前面三年的学习足够你成为一名基本合格的java开发者,但你离成为一名优秀的java开发者还有很大的距离

所谓优秀,即能别人所不能。而你前3年所学习的内容,是很多做过几年的java开发都能够掌握的。那么为了让自己有差异性,你就需要另辟蹊径,找一个方向深入研究下去,以期在将来,你能够成为这个领域的专家,比如分布式计算领域的专家,大数据领域的专家,并发领域的专家等等,此外,你除了建立你的差异性之外。还要去拟补你基础上的不足,直到现在,都没有提及基础知识,原因是基础是很枯燥无味的,学得太早不仅容易懵逼,而且懵逼的同时还容易产生心理阴影,以至于以后再不想去研究这些基础。但基础又是你深入研究一些领域时所必须掌握的,比如你去研究分布式计算,你不懂算法玩个毛毛,比如去做分布式缓存,对计算机系统内存不了解,如何做缓存。

如果你的基础本来就非常强,那么恭喜你,相信你在之前的工作中已经充分体会到了这些基础对你的帮助。但大部分人基础还是很薄弱的,很多人也不敢说自己当初的基础学得多么强大,不如算法、计算机系统原理、编译原理这些,但每个人的时间都是有限的,而且这些基础的书籍每一本读下来,没个一年半载还真拿不下来,因此要有所抉择。虽然艺多不压身,但问题是艺多是有代价的,是需要你付出时间和精力的,而我个人更赞成在同等代价的情况下获取最大的收获

基础书籍有三本,分别是《深入了解计算机系统》,《tcp/ip详解卷一、二、三》,《数据结构与算法》。其中TCP/IP有三本书,但看左一本大书,这分别适合三种人,《深入理解计算机系统》比较适合一直从事java web开发和app后端开发工作的人。《tcp/ip详解》比较适合网络编程的人群,比如你使用netty去开发的话,那么就要对tcp/ip有更深入的了解。而《数据结构与算法》比较适合做计算研究工作的人,比如分布式计算。这里所说的适合并不是其他两本对你就没有用,比如你做java web和app后端开发,《tccp/ip详解》这本书对你的作用也是很大的。这里只是分出个主次而已,你钥匙时间足够的话,能把三本都精读当然最好。

但时间有限的话,那么就先挑对你帮助最大的书去度。理论上来讲,这一年你能把这三本中一本精读下来,就已经非常厉害了。有了基础,有了前面的工作经验,你就可以去开拓属于你的领域了。在这一年里,与i定要规划好自己的领域,建立好自己的优势,制造出差异性。如果你对自己的领域不够i清晰的话,随着你工作的时间日益增多,你接触的技术会越来越多,这个时候,你很容易被淹死在技术的海洋里,看似接触的技术越来越多,会用的也越来也多,但你毫无优势。

第六部分
参加工作4到5年的同学经过前面一年的历练,相信你在自己所钻研的领域已经有了自己一定的简介,这个时候,技术上你应该已经遇到了瓶颈。这个时候不要急着提高自己的技术,已经是时候提高自己的影响力,可以尝试去一些志明的公司提高你的背景,你可以发表一些文章去影响更多的人,当然,你也可以去github创建一个属于你的开源项目,去打造自己的产品

这次的开源项目不同于之前的造轮子,这个时候是真的要去尽量尝试造出来真正对被人有价值的轮子。技术学到了这个阶段,很容易遇到瓶颈,而且往往达到一定程度后,你再深入下去的收效真的微乎其微,除非你是专门搞学术研究的。然而很可惜,大部分程序员做不到这一步,那是科学家做的事情。这个时候提高影响力不仅仅因为技术上容易遇到瓶颈,更多的是影响力可以给你创造更多的机会。程序猿有时候也是,一个好的项目就可以成就一群程序员,比如国内几个脍炙人口的项目,像淘宝、支付宝、qq、百度、微信、等等。这每一个项目,都成就了一批程序员。这里面任何一个项目,如果你是他的核心开发,光是这样一个踢踢了,就已经是你非常大的有时,更何况还不止如此,titile说到底是个名头,更重要的是,这种项目在做的时候iou,对你的历练一定也是非常给力的。

而你如果想要参与这样的项目,除了靠运气之外,影响力也是非常仲要的一个手段。比如你在分布式计算领域有一定的影响力,那么如果有什么好的关于分布式计算的项目,对方就很可能会邀请你。就算人家不邀请你。你主动去面试的时候,对方如果知道你这个领域的影响力。也肯定会起到很大的作用,而这个作用,甚至可能会超过你现在的技术能力。所以,在这个阶段,你最大的任务提高自己的因相关i昂立,为自己的未来十年工作生涯做准备。如果你能够靠你的影响力和以前积累的技术,参与到一个伟大的项目中,那么你后面的五年也有着落了。

大家要有自己的判断力,去决定到底该如何度过这一年,所说的是社招面试准备,一个是java生涯的学习,每个人吸收知识的时候,都要抽取精华,去其糟粕。所说的可能是对的,可能有些是错的,有些是适合你的,有些是不太适合你的,你要自己能够判断。其实你在生活和工作当中也是一样,你身边的人形形色色,有的人你喜欢,有的人你很讨厌。但其实你喜欢的人也有缺点,你讨厌的人也有优点,你要学会从你讨厌的人身上学会他的有点,千万不要一棒子打死,这指挥让你失去很多学习成长的机会。