共计 7057 个字符,预计需要花费 18 分钟才能阅读完成。
Java 技术学习路线
Java 语言是一门十分风行和重要的语言,目前仍是需求量很大的语言,利用范畴很广的语言,在企业级开发、挪动开发、大数据云计算、人工智能等畛域都有大量的利用。怎么样学习好 Java 语言,达到能够轻松待业的境地,是每个初学者都关注的话题。咱们个别将 Java 编程的学习分为这四个大阶段:根底阶段、WEB 开发阶段、框架阶段、高级技术阶段。各阶段具体学习内容和办法如下:
一、根底阶段
根底阶段的学习说白了就是 Java SE 的学习,这是根底的阶段。指标是让初学者进入编程的殿堂,具备根本的编程思维。在这个阶段咱们能够再细分为如下内容:
1、Java 编程入门
入门阶段次要学习:变量、数据类型、管制语句这些根本的概念。这些技术是所有编程语言都有的内容,很根底也很重要。
2、面向对象
面向对象是深刻学习 Java 的外围,也是大家真正进入 Java 世界的难点和重点。这里会有各种各样的概念,十分重要。然而,大家在学习面向对象的时候,先留神“开始学习语法和概念,不要冀望一口气学的很透彻。面向对象,须要大家在前面做我的项目时能力深刻领会如何将面向对象思维利用于实际”。因而,我倡议大家不要在此处过于纠结概念,能学多少学多少,遇到不懂的概念,先记论断开始用,疾速往后学,不要停留过长的工夫在此处。
3、异样
异样是 Java 平安机制的外围,也是让咱们程序更易懂更稳固的外围。初学异样重在了解概念、学习如何解决异样的思路。
4、数组
数组是罕用的概念。在学习本内容的时候,把握外围“数组也是对象,数组的元 素相当于对象的成员变量”,了解了这一句话,就把握了数组的一大半了。数组学习时顺便学习一下一些根本的算法,比方:排序、二分法等。这样,既能够学习数组,也能温习后面的管制语句、面向对象等常识。因而,在此处能够多做练习,停留时间长一点。
5、罕用类
咱们重点把握罕用类的用法,学习 API 的查问和应用。如果你想更深刻,学习时能够浏览这些罕用类的底层源码,开始造就高手的格局。
6、容器
容器是开发中罕用的内容。学习容器时,既要学习相干类和接口的应用,也要明确容器的底层原理。容器的底层实现和数据结构常识严密挂钩。也是,咱们在工作和面试中常常会碰到的问题。因而,容器须要初学者花大力量学习,并且要深刻底 层,明确底层的外围机制。
7、多线程
多线程的 Java 语言的特点。咱们在后续学习服务器编程时,服务器的底层外围机制就是基于“多线程”的。因而,咱们须要把握多线程的基本原理和利用。为了后续学习并发编程,也有必要学习一下“生产者消费者模式”、“锁机制”、“TheadLocal”、“线程池”等高端一点的概念。
8、网络编程
网络编程是 Java 在互联网时代击败 C++ 的要害。咱们须要把握 TCP 编 程、UDP 编程的经典模式,然而不须要太深刻去学习。因为,大多数我的项目开发时底层都做好了封装。
二、WEB 服务器开发阶段
学习 Java,大多数人最终会进入服务器编程、企业级开发畛域。因而,为了可能残缺地编写我的项目。这个阶段咱们也要学习一些 Java 之外的技术:网页开发和设计、数据库编程。Java 之内的技术有:Servlet、JSP、标签库、服务器等。这都是大家进入开发畛域必须要学习的内容,光会 Java SE 是不能实现待业、不能独立开发我的项目的。然而,学完本阶段的技能,大家就能够独立开发一些我的项目、具备初步的待业能力了。
1、网页开发和设计
Java 程序员次要实现服务器端的开发,然而对于浏览器端如何展示数据也是很有必要把握的。网页开发的基本知识能够说是必学的技能。HTML、CSS、JavaScript、JQuery 等。网页开发也是专门的业余,Java 程序员去学习,把握基本概念即可,不须要深刻太多细节。大家在学习的时候,把握好“度”。
2、数据库编程和设计
数据库是绝大多数我的项目的存储的外围,因而,作为 Java 程序员也必须把握。在学习数据库技术时,重点把握 SQL 查问、表的设计范式、JDBC 技术、ORM 思维和 Mybatis 框架。其余对于数据库治理的常识不须要把握太多。(互联网公司首选 MySQL,其次 Oracle、SQL Server……)
3、Tomcat
Tomcat 服务器是一个开源的轻量级 Web 应用服务器,在中小型零碎和并发量小的场合下被广泛应用,是开发和调试 Servlet、JSP 程序的首选。
4、Servlet 和 JSP 技术
Servlet 和 JSP 是 Java 服务器开发的核心技术,也是必备技能。重点把握如下常识:HTTP 协定、Tomcat 服务器、Servlet、Jsp、EL 表达式和标签库。(尽管在前后端拆散模式流行的时代,JSP 透出颓势,但在一些中小型公司中仍在应用,也是目前 Java WEB 攻城猫必备的。)
5、做一个简略的我的项目
学到当初,大家曾经具备初步的我的项目开发能力。十分有必要通过一个我的项目,将所学的常识串联一遍,强化所学成绩。同时,也通过我的项目开发的学习,真正进入 Java 企业级开发的行列。
三、框架阶段
框架作为企业应用的重要技术,其本质是写更少的代码,做更多的事件,从而大大减码量,让程序员更加关注业务的实现。本人写的少 了,都是用他人写好的货色就要明确他人写了什么,学习框架重难点不仅仅是如果应用框架而是要明确他人到底写了什么。然而也要把握好”度”,不要一味谋求底层,要”择其重”,否则可能呈现货色太多,永远也学习不完的状况。
1、MyBatis 框架
学习 MyBatis 框架要晓得它是一个长久层框架。它的主要职责就是实现数据库操作,因而也要求咱们有肯定的 SQL 根底。MyBatis 灵便就体现在所有 SQL 都是程序员编写,想要什么样的后果就写什么样的 SQL 命令,剩下大部分的事件都交给 MyBatis 实现了。咱们把 Mybatis 放到了学完 JDBC 之后,这样既能够坚固 JDBC 和数据库常识,也能在行将要做的我的项目中开始应用 Mybatis,这样更贴合企业实战。
2、Spring 框架
学习 Spring 框架的指标很明确,就是学习好 IOC/DI、AOP、申明式事务。独自应用 Spring 很简略,重点是学习了外围性能后如何把这些性能运行。目前大部分技术都须要被 Spring 整合,所以 Spring 是很重要的框架。Spring 框架不是专一于某一层,哪里都有 Spring 的影子。所以根底语法学习好后要多做几个我的项目,能力真正的感触到 Spring 的魅力。
3、Spring MVC 框架
Spring MVC 做为 MVC 框架,其关注点就是控制器的编写。如何接管参数,如何传递内容到页面,还有大量注解这些都是外围。学习时把握好主脉,要从运行原理动手,分明的晓得外面的外围组件,学习起来就事倍功半了。
4、Maven
Maven 是我的项目构建工具,必须先要弄清楚分布式的概念。从学习了 Maven 后每个我的项目可能不是一个 Project 而是很多个,所以重难点是我的项目和我的项目之间的关系以及 Maven 中 POM 的配置。
5、做一个残缺的 SSM 我的项目
学到当初,大家曾经齐全具备 Java EE 我的项目的独立开发能力。十分有必要通过一个残缺我的项目,将所学的常识串联一遍,强化所学成绩。同时,也通过我的项目开发的学习,真正进入 Java 企业级开发的行列。
6、Spring Boot 框架
学完 MyBatis、Spring、Spring MVC 整合后,肯定会被其繁琐的配置,搞得头昏脑胀,那么你就能够好好感受一下 Spring Boot 的魅力喽。从最基本上来讲,Spring Boot 就是一些库的汇合,它可能被任意我的项目的构建零碎所应用。它应用“约定大于配置”的理念让你的我的项目疾速运行起来。用大佬的话来了解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的应用形式,就像 Maven 整合了所有的 jar 包,Spring Boot 整合了所有的框架。
7、做一个 Spring Boot 我的项目
通过之前 SSM 我的项目的练习,置信大家曾经对 WEB 我的项目开发有肯定的了解,那么当初就用 Spring Boot 框架来加深印象,感触目前 Java 企业级开发的支流框架的便捷性。分享几个热门我的项目,供大家学习参考。
BootDo 面向学习型的开源框架,缩小适度封装,展示技术实质。
mall 一套电商零碎,应用现阶段支流技术实现。涵盖了 SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、Mysql5.7 等技术,采纳 Docker 容器化部署。
RuoYi 基于 SpringBoot 的权限管理系统。
四、高级技术阶段
高级技术阶段是随着电商炽热后被大量应用的,这些技术大部分都是为了解决”高负载”,”高并发”等应用。
1、Linux
Linux 是操作系统,学习 Linux 就是为了让本人开发的我的项目公布到 Linux 中,所以学习 Linux 的次要要求是如何把我的项目运行的环境都配置进去。作为 Java 程序员不要求把握特地深的 Linux 常识,把握基本操作即可。
2、Spring Cloud
首先,只管 Spring Cloud 带有“Cloud”这个单词,但它并不是云计算解决方案,而是一个基于 Spring Boot 实现的云原生利用开发工具,它为基于 JVM 的云原生利用开发中波及的配置管理、服务发现、熔断器、智能路由、微代理、管制总线、分布式会话和集群状态治理等操作提供了一种简略的开发方式。
3、Spring Cloud Alibaba
很多人可能会问,既然曾经有了 Spring Cloud 这个微服务的框架,为什么又要应用 Spring Cloud Alibaba 这个框架?最重要的起因在于 Spring Cloud 中,简直所有的组件都应用 Netflix 公司的产品,而后在其根底上做了一层封装。然而 Netflix 的服务发现组件 Eureka 曾经进行更新,而其余的泛滥组件预计会在 2020 年陆续进行保护。所以急需其余的一些代替产品,也就是 Spring Cloud Alibaba,目前正处于蓬勃发展的态式。
看看官网是怎么定义 Spring Cloud Alibaba 的:
Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此我的项目蕴含开发分布式应用微服务的必须组件,不便开发者通过 Spring Cloud 编程模型轻松应用这些组件来开发分布式应用服务。
依靠 Spring Cloud Alibaba,您只须要增加一些注解和大量配置,就能够将 Spring Cloud 利用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用零碎。
4、Shiro 平安框架
Shiro 利用场景都是在权限、平安上,利用场景很明确,所以就导致 Shiro 外面有着大量专业术语。学习 Shiro 从架构图登程,清晰的记忆所有专业术语。咱们分两大块学习 Shiro,别离是:认证和受权。
5、Spring Security 框架
一个可能为基于 Spring 的企业应用零碎提供申明式的平安訪问管制解决形式的平安框架(简略说是对拜访权限进行管制嘛),利用的安全性包含用户认证(Authentication)和用户受权(Authorization)两个局部。用户认证指的是验证某个用户是否为零碎中的非法主体,也就是说用户是否拜访该零碎。用户认证个别要求用户提供用户名和明码。零碎通过校验用户名和明码来实现认证过程。用户受权指的是验证某个用户是否有权限执行某个操作。在一个零碎中,不同用户所具备的权限是不同的。比方对一个文件来说,有的用户只能进行读取,而有的用户能够进行批改。一般来说,零碎会为不同的用户调配不同的角色,而每个角色则对应一系列的权限。Spring Security 的次要外围性能为认证和受权,所有的架构也是基于这两个外围性能去实现的。
6、Docker
Docker 是一个开源的利用容器引擎,开发者能够打包本人的利用到容器外面,而后迁徙到其余机器的 Docker 利用中,能够实现疾速部署。如果呈现的故障,能够通过镜像,疾速复原服务。诸多高级技术都能够基于 Docker,实现疾速装置部署,因而举荐优先学习。
7、Redis
NoSQL 数据库在企业中应用越来越多,次要的长处就是效率高。每个 NoSQL 数据 库有着本人独有的操作 API,所以在可能纯熟装置 Redis 根底上,更要纯熟应用 Jedis、Spring Data Redis 操作 Redis。
8、MongoDB
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 利用提供可扩大的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中性能最丰盛,最像关系数据库的。
9、Rabbit MQ
基于队列实现,明确队列概念后,把 Rabbit MQ 装置上能够很快的上手。
10、RocketMQ
RocketMQ 是一款分布式消息中间件,最后是由阿里巴巴消息中间件团队研发并大规模利用于生产零碎,满足线上海量音讯沉积的需要,在 2016 年底捐献给 Apache 开源基金会成为孵化我的项目,通过不到一年工夫正式成为了 Apache 顶级我的项目;晚期阿里已经基于 ActiveMQ 研发音讯零碎,随着业务音讯的规模增大,瓶颈逐步浮现,起初也思考过 Kafka,但因为在低提早和高可靠性方面没有抉择,最初才自主研发了 RocketMQ,各方面的性能都比目前已有的音讯队列要好,RocketMQ 和 Kafka 在概念和原理上都十分类似,所以也常常被拿来比照;RocketMQ 默认采纳长轮询的拉模式,单机反对千万级别的音讯沉积,能够十分好的利用在海量音讯零碎中。
11、Lucene
Lucene 是一套用于全文检索和搜查的开源程序库,提供了一个简略却弱小的利用程序接口(API),可能做全文索引和搜查,Lucene 并不是现成的搜索引擎产品,但能够用来制作搜索引擎产品。
12、Solr
Solr 搜寻,先要可能搭建 SolrCloud。学会应用 SolrJ 之后,还须要明确”索引”,搜索算法,Solr 实现原理能力把握好 Solr。
13、ElasticSearch
ElasticSearch 是一个基于 Lucene 的搜寻服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 语言开发的,并作为 Apache 许可条款下的开放源码公布,是一种风行的企业级搜索引擎。ElasticSearch 用于云计算中,可能达到实时搜寻,稳固,牢靠,疾速,装置使用方便。官网客户端在 Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby 和许多其余语言中都是可用的。
14、Nginx
先要弄清楚反向代理的概念,代理本机目录和代理其余主机。纯熟装置 Nginx 和 配置 Nginx 是学习 Nginx 的重点。如果全天候学习,倡议学习工夫 1 天。
15、MyCat
为了保留关系型数据的长处,MyCat 作为一个解决 MySql 不能分库分表的解决方案。学习 MyCat 先从配置 MySQL 主从备份开始,而后纯熟配置 MyCat 配置文件。如果全天候学习,倡议学习工夫 1 天。
16、Vue
Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为能够自底向上逐层利用。Vue 的外围库只关注视图层,不便与第三方库或既有我的项目整合。
……
作为开发人员,咱们须要跟上技术倒退的步调。每天,咱们都在学习新的编程语言、框架和库。然而,技术和时尚一样,正在以光速变动。这是一场没有赢家的较量,因为技术的倒退没有起点。
五、设计模式和框架底层深入阶段
设计模式是解决特定问题的较优代码编写计划。在程序开发中时时刻刻都有着设计模式。学习设计模式必须了解代码是为了解决什么问题。能够先把所有设计模式都学习完,对于 GOF23 设计模式有一个根本的意识。而后在学习成熟框架的底层代码,这样技能将框架学习更深刻也能让本人的底功更扎实。学习设计模式能够拆分成多个小块学习,不倡议一次性占用大量工夫。
框架学习分为两种:
一种是应用,一种是明确实现原理。如果学习框架只是为了晓得如果搭建框架的环境,如果应用框架,框架的学习还是比拟容易的。然而如果想要十分分明的明确每个性能是如何实现的就必须分明的晓得框架底层。学习框架底层能够帮忙咱们在出现异常时疾速的想到是什么起因呈现这个谬误。因为 咱们晓得本人写的代码,也晓得他人写了什么,呈现了谬误必定会更好的解决。
MyBatis 框架底层能够从 SqlSessionFactory 动手,一个类一个办法的往下跟踪,始终跟踪到 SqlSession 敞开。
Spring 的底层源码要从 BeanFactory 和 ApplicationContext 动手,晓得 Spring 容器作用。
SpringMVC 底层源码能够从 DispatcherServlet 动手,察看所有外围组件的运行过程。
每个框架能够本人绘制一份流程图,这样更利于本人把整个框架的运行原理弄清晰框架底层内容能够在边学习框架边学习。
【注】框架底层的学习适宜学有余力的同学。如果把握框架的应用都比拟吃力,能够先放一下。纯熟应用框架当前再深刻底层。
一些集体倡议
1、关怀家人,孝敬父母;
2、常翻面试题;
3、造就个人爱好;
4、静止健身;
5、多谈话,多交换;
6、多关注行业动态,
7、多结交其余行业的敌人;
技术有价,衰弱无价!
混〔IT〕的小学生 酷爱编程,喜爱挑战新事物!撩撩博主 :-)