零基础如何系统的学习Java

原来我曾经写过一篇《如何快速学习Java》的文章。后来也有朋友咨询我“如何系统的学习Java”的问题。

这些朋友中,好多都是已经入了行,但不满足于工作枯燥的“增删改查”,或者“模板化”的SSM框架。而是有心成为Java技术专家,或者架构师。

对于朋友的提问,我本很乐意回答。然而这个答案绝非三言两语能够说清。所以,我就索性写一篇文章来回答。

文章写得有点匆忙,不完善,遗漏之处,我会逐渐完善。

学习计划

首先,我把Java系统学习分成两个阶段。

第一阶段:建立完整的的技术栈,成为一个有富于生产力的高级软件工程师。

在这个阶段要掌握一系列的基础知识和工具。这些东西前后关联,所以学习过程成线性顺序,要从上往下进行。

下面是第一阶段的学习路线:

第二阶段:这个阶段的目标是成为Java技术专家、架构师,因此必须在上一阶段的技术上,往高处(例如设计模式、大数据)走,往深处(Spring源码、Java虚拟机)走。

这个阶段的知识,并不存在前后的关联。在完成第一阶段的学习之后,完全看工作的需要,以及个人的兴趣,安排学习的优先级。

下面是第二阶段的学习目标:

接下来,我就点一下这个学习计划中的“关键点”。

Servlet

要成为一个优秀的Java web专家。无论是你用Spring MVC实现的普通REST接口,还是微服务。往深的走,都要深刻理解Servlet以及容器(例如Tomcat).

因此,在深度学习微服务,以及Spring MVC之前,一定要把Servlet学精,因为他是整个Java web的基石。所以,在成为软件专家的路上,Servlet是最基本的垫脚石,务必重视。

SQL

在我作为程序员入行的时候,没少在SQL语言下功夫,尤其是在SQL语言优化方面,包括在存储过程中各种折腾。

但现在,SQL优化在开发过程中的优先级显著降低,有几个原因:

1.各种OR map框架(例如Hibernate、Mybatis)的出现,使SQL的工作量大大降低。

2.各种OR map框架本身也会对编写的、自动生成的SQL进行优化。

3.当前的服务器架构,如果要提高性能,首先应该考虑架构的横向扩展性,而不是在SQL上进行极端优化。

但现在也不是说可以完全“任性”的编写SQL。只是说对于程序员,只要掌握最常见的SQL优化原则,做到工整就够了。

缓存、队列

缓存,队列。业界都有了较成熟的方案,例如Redis,ActiveMQ等。在学习的过程中,第一步是掌握核心概念,以及他们要解决的问题。然后就要亲自安装,使用这些软件,建立感性的认识。

其次就是在掌握核心概念的基础上,掌握这些开源软件的Java API,然后试着在此基础上,编写典型的Demo,从而在Java语言层面上彻底掌握。

至于有些朋友提到的把概念再“实现一遍”。不知道朋友指的是使用API,还是把缓存和队列软件,用Java语言实现一下。如果是后者,不是说不可以,关键是太费时间。同时,就业界实践来说,不是特别必要。如果你真有兴趣,把优先级放低一点,作为一个更长期的目标。

Linux

这个学习计划是一个长期的,深入的学习计划。最终是要成长为技术专家、或架构师。那么有必要适时的掌握下Linux。因为在实践中,服务器往往委托于Linux服务器。而且将来,还有不少开源软件只能在linux上运行。

因此,在开始学习缓存和队列钱,需要先掌握了Linux的基本用法。然后再学习的过程中,就把这些开源软件在Linux上运行。

这样,在你学习Java的过程中,顺便也把Linux学习了,这远比你将来单独学习Linux要有趣,印象要深刻。

微服务

微服务并不是一门具体的技术,而是一个设计理念,很多语言和框架都可以实现,例如Java中的Spring MVC等。

因此,如果已经掌握了Spring MVC、Spring boot。那么对微服务的掌握是水到渠成的事情。你要做的就是注意力放在微服务的应用场景上。

设计模式

设计模式是较为靠上的东西。如果Java基础不是太好的话,很容易陷入空泛,眼高手低。

如果你的Java基础太薄弱,例如没有掌握“抽象类”。那么我建议你先把设计模式学习停一下,先把Java的基础知识补充下,至少要学完《Java核心技术》第六章,也就是掌握完整的现象对象的概念。然后再回来学习设计模式。

在学习设计模式的时候,一定要动手。最起码要把书中列举的设计模式,用Java语言实现一下。如果你阅读时是经典的GOF《设计模式》,其中的代码(用C++描述),就不容易用Java实现。建议你可以参照《Head First设计模式》,其中的demo都是短小精悍,很适合用Java来实现。

这样,一则有利于理解设计模式。二则在学习设计模式的过程中,也进一步增强对Java基础知识的掌握。这种学习过程是一个相互促进的过程。

学习笔记很重要

特别重要的一点,学习的过程中,尽量的写学习笔记,其中包括难点和重点。

因为,系统深入的学习Java必然是一个长期的,综合的过程。到后期,一定会出现学着后面,忘了前面。如果你没有学习笔记,又没有实践中积累的代码,那么就会出现边学边忘的情况。

而有了学习笔记,可以给自己的学习留下了“踪迹”,以后复习的时候用来参考,很会就能把早前学习的记忆“唤醒”。

而且,这些学习笔记在后来的工作中,还能成为自己的参考手册,随用随查。

还有,那就是学习笔记还是一个特别好的面试宝典。因为既然你记下了笔记,这些东西往往经过你深度思考,深度消化的东西,也是你区别以其他工程师的卓越之初。

总结

到此这篇关于零基础如何系统的学习Java的文章就介绍到这了,更多相关零基础学习Java内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java零基础教程之Windows下安装 JDK的方法图解

    官网下载 直接打开官网:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 我安装的是 1.7 版本,当然,你可以选择自己合适版本. 安装 下载的是.exe文件,没什么好讲的,都是直接下一步下一步.当然,你可以选择合适的安装路径,我选择了F:\Java. 接着选择jre安装路径: 环境变量 桌面上找到 计算机(此电脑)右键,点击属性--高级系统设置--环境变量,就可以开始编辑了.

  • Java零基础教程之Windows下安装、启动Tomcat服务器方法图解(免安装版)

    相关阅读: Java零基础教程之Windows下安装 JDK的方法图解 官网下载 你是 Windows 环境,所以,打开浏览器,输入地址:http://tomcat.apache.org/download-70.cgi 选择对应的 ..-bit Windows zip下载就可以了. 安装 找到你下载的 ZIP 包,解压到你认为合适的目录,其实这是免安装版. 启动 进入 bin 目录,找到startup.bat双击,这样就算启动了 Tomcat 了,现在在浏览器输入地址+端口8080(默认)即可看

  • 零基础写Java知乎爬虫之先拿百度首页练练手

    上一集中我们说到需要用Java来制作一个知乎爬虫,那么这一次,我们就来研究一下如何使用代码获取到网页的内容. 首先,没有HTML和CSS和JS和AJAX经验的建议先去W3C(点我点我)小小的了解一下. 说到HTML,这里就涉及到一个GET访问和POST访问的问题. 如果对这个方面缺乏了解可以阅读W3C的这篇:<GET对比POST>. 啊哈,在此不再赘述. 然后咧,接下来我们需要用Java来爬取一个网页的内容. 这时候,我们的百度就要派上用场了. 没错,他不再是那个默默无闻的网速测试器了,他即将

  • 零基础写Java知乎爬虫之准备工作

    开篇我们还是和原来一样,讲一讲做爬虫的思路以及需要准备的知识吧,高手们请直接忽略. 首先我们来缕一缕思绪,想想到底要做什么,列个简单的需求. 需求如下: 1.模拟访问知乎官网(http://www.zhihu.com/) 2.下载指定的页面内容,包括:今日最热,本月最热,编辑推荐 3.下载指定分类中的所有问答,比如:投资,编程,挂科 4.下载指定回答者的所有回答 5.最好有个一键点赞的变态功能(这样我就可以一下子给雷伦的所有回答都点赞了我真是太机智了!) 那么需要解决的技术问题简单罗列如下: 1

  • 零基础写Java知乎爬虫之抓取知乎答案

    前期我们抓取标题是在该链接下: http://www.zhihu.com/explore/recommendations 但是显然这个页面是无法获取答案的. 一个完整问题的页面应该是这样的链接: http://www.zhihu.com/question/22355264 仔细一看,啊哈我们的封装类还需要进一步包装下,至少需要个questionDescription来存储问题描述: import java.util.ArrayList;public class Zhihu { public St

  • 零基础写Java知乎爬虫之将抓取的内容存储到本地

    说到Java的本地存储,肯定使用IO流进行操作. 首先,我们需要一个创建文件的函数createNewFile: 复制代码 代码如下: public static boolean createNewFile(String filePath) {          boolean isSuccess = true;          // 如有则将"\\"转为"/",没有则不产生任何变化          String filePathTurn = filePath.r

  • 零基础写Java知乎爬虫之进阶篇

    说到爬虫,使用Java本身自带的URLConnection可以实现一些基本的抓取页面的功能,但是对于一些比较高级的功能,比如重定向的处理,HTML标记的去除,仅仅使用URLConnection还是不够的. 在这里我们可以使用HttpClient这个第三方jar包. 接下来我们使用HttpClient简单的写一个爬去百度的Demo: import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStr

  • 零基础如何系统的学习Java

    原来我曾经写过一篇<如何快速学习Java>的文章.后来也有朋友咨询我"如何系统的学习Java"的问题. 这些朋友中,好多都是已经入了行,但不满足于工作枯燥的"增删改查",或者"模板化"的SSM框架.而是有心成为Java技术专家,或者架构师. 对于朋友的提问,我本很乐意回答.然而这个答案绝非三言两语能够说清.所以,我就索性写一篇文章来回答. 文章写得有点匆忙,不完善,遗漏之处,我会逐渐完善. 学习计划 首先,我把Java系统学习分成两个

  • 零基础学习C/C++需要注意的地方

    谈及C/C++,功能强大.应用广泛,一旦掌握了后,若是再自学其他语言就显得轻而易举了.那为什么学C/C++的人少呢?很多人认为C/C++虽然博大精深,但也难学.其实就本人认为C/C++并非是"difficult(困难)"的,只要你能理清思路,掌握它的精髓,配合一套教材.那么学C/C++是一件非常容易且又其乐无穷的事.今天本人就与大家一起谈谈如何学习C/C++或者说学习C/C++应从哪几方面着手. 先来说说C语言. 1.入门后多看代码 在有一定基础以后一定要多看别人的代码.注意代码中的算

  • 2019最新系统学习路线零基础如何转行大数据

    都知道大数据薪资高,前景好.而大数据又需要Java基础.对于稍微懂些Java的童鞋来说,到底如何转行大数据呢?今天小编给你一个大数据工程师具体的学习路线图.[ps:无java基础也可以学习大数据] 分享转行经验路线 对于Java程序员,大数据的主流平台hadoop是基于Java开发的,所以Java程序员往大数据开发方向转行从语言环境上更为顺畅,另外很多基于大数据的应用框架也是Java的,所以在很多大数据项目里掌握Java语言是有一定优势的. 当然,hadoop核心价值在于提供了分布式文件系统和分

  • 零基础学习Python爬虫

    目录 爬虫 为什么我们要使用爬虫 爬虫准备工作 爬虫项目讲解 代码分析 1.爬取网页 2.逐一解析数据 3.保存数据 讲解我们的爬虫之前,先概述关于爬虫的简单概念(毕竟是零基础教程) 爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序. 原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做. 为什么我们要使用爬虫 互联网大数据时代,给予我们的是生活的便利以及海量数据爆炸式的出现在网络中. 过去,我们通过书籍.报

  • JAVA设计模式零基础解析之单例模式的八种方式

    目录 单例模式简介: 单例模式优点: 应用场景: 单例设计模式的八种方式: 1.饿汉式(静态常量) 2.饿汉式(静态代码块) 3.懒汉式(线程不安全) 4.懒汉式(线程安全,同步方法) 5.懒汉式(线程安全,同步代码块) 6.双重检查(推荐使用) 7.静态内部类(推荐使用) 8.枚举(推荐使用) 单例模式在JDK应用的源码分析 单例模式注意事项和细节说明 单例模式简介: 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了

  • Java数据结构顺序表从零基础到精通进阶

    目录 一.什么是线性表 二.顺序表 三.手撕顺序表 属性定义 构造方法 接口实现 确保顺序表空间 增加元素 打印顺序表 判断顺序表中是否包含某个元素 查找元素 获取 pos 位置的元素 将 pos 位置的元素值设为 value 删除第一次出现的关键字key 获取顺序表长度 清空顺序表 删除所有的key 一.什么是线性表 线性表是最基本.最简单.也是最常用的一种数据结构.线性表*(linear list)*是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列.常见的线性表有顺序表,链

  • Java零基础入门数组

    目录 认识数组 数组的初始化 默认初始化 静态初始化 动态初始化 数组有关的问题 数组的遍历 求最值问题 查询子元素 Arrays工具类 二维数组 二维数组初始方式 二维数组的遍历 认识数组 数组的定义 数组是相同类型数据的有序集合.数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成.其中,每一个数据称作一个元素,每个元素可以通过一个索引(下标)来访问它们. 数组的四个基本特点 长度是确定的.数组一旦被创建,它的大小就是不可以改变的. 其元素的类型必须是相同类型,不允许出现混合类型

  • Java零基础也看得懂的单例模式与final及抽象类和接口详解

    目录 1.单例模式 1.饿汉式和懒汉式的实现 2.饿汉式 3.懒汉式 4.懒汉式和饿汉式的区别 2.final的使用 1.基本介绍 2.使用场景 3.使用注意事项和细节讨论 3.抽象类 1.基本介绍 2.使用注意事项和细节讨论 4.接口 1.基本介绍 2.注意事项和细节讨论 3.实现接口与继承的区别 4.接口与继承同时出现如何访问属性 5.接口的多态特性 1.单例模式 1.饿汉式和懒汉式的实现 步骤: 将构造器私有化 类的内部创建对象 向外暴露一个静态的公共方法 2.饿汉式 class Scho

随机推荐