零基础Java学习路线

news2024/11/17 23:29:49

预计阅读时间: 8分钟

目录

    • 第一阶段: Java 基础
    • 第二阶段:数据库
    • 第三阶段: Java Web
    • 第四阶段:主流框架
      • Maven
      • Git
      • SSM框架
      • Spring Boot
    • 第五阶段:服务器中间件
      • Redis
      • MQ
      • Elasticsearch
      • 项目实践
    • 第六阶段:微服务和分布式
      • Spring Cloud
      • Dubbo
      • ZooKeeper
    • 第七阶段:进阶优化
    • End
    • End

各位小伙伴好,我是leader_song。

加群:795968897

我学习 Java 已经一年了,在 Java 学习这条路上也踩过无数次的坑。

恰巧有小伙伴问我 Java 学习的路线,我想着趁这次机会分享自己学 Java 的路线,希望给小伙伴们一点帮助,避开路上的一些坑,一起进大厂。

请添加图片描述

首先,我先分享下自己对不同学习方式的理解,小伙伴们可以根据自己情况选择。

  • 看视频系统学习,比如培训机构的课程、MOOC的课程等。看视频的好处就是有老师带着,易于理解和掌握,非常适合初学者。
  • 看书学习,如《Redis设计与实现》、《 Java 并发编程的艺术》,便于了解技术脉络和深入学习知识点。
  • 看博客和源码精进学习。博客的好处是有些知识点会以很通俗的方式讲解出来,我们很好理解。

我最开始学习 Java 是在大二的 Java 课堂上,无奈老师讲的太枯燥,就网上找来黑马的Java视频学习。

当时只学了些基础,后面再学 Java,就是在从 CV 转到 Java 之后的事情了。这时走的路线是先看视频学习,再看书深入学习,遇到不懂的问题再看博客解决,部分技术会看源码进行分析。

话不多说,我们开始发车~

第一阶段: Java 基础

最开始要学习的是 Java 基础,学习了这部分,就会对 Java 语言有一个初步的了解。其实大部分语言的基础知识都是大同小异,如果之前已经学习过其他语言如C、C++,那学习这部分会更快。

这部分主要学习的内容有:基本程序结构,类与对象,接口,泛型,反射,集合,异常与调试, Java 网络编程, Java I/O和多线程。

学 Java 基础,推荐大家看尚硅谷宋红康老师的 Java 教程,宋老师的课程更适合零基础学员,从 Java 语言起源开始,循序渐进,知识点剖析细致。

宋老师的 Java 基础教程:https://www.bilibili.com/video/BV1Kb411W75N

除此之外,还可以阅读《 Java 核心技术 卷I》,这本书偏向实用,广度和深度都恰到好处。其中,第7-9章讲述了 Java 的GUI编程, Java 的GUI开发使用并不多,这部分可以先跳过。

网上也有一些不错的文档教程网站,可以辅助学习:

廖雪峰 Java 教程:https://www.liaoxuefeng.com/wiki/1252599548343744

菜鸟教程 Java :https://www.runoob.com/Java/Java-tutorial.html

当学完了这部分,就可以做个图书管理系统、学生管理系统这样的小项目了。还记得库森在大二学完这部分,就跟着教程学做了个贪吃蛇游戏,还是蛮有成就感的。

当然,时间有限的小伙伴,可以不用做这块的项目,直接做 Java Web 项目就好了。

第二阶段:数据库

MySQL 和 Oracle 都是广受企业欢迎的数据库,其中 MySQL 是目前应用最广泛的开源关系数据库,对于新手或者校招的小伙伴,我们目前只学习 MySQL 就可以了。

这部分主要学习的内容有:数据库的CRUD操作、JDBC API、数据库特性和数据库连接池。

其中,数据库连接池是为了避免频繁地创建和销毁 JDBC 连接,常见连接池包括 C3P0,Druid 和 HikariCP,目前使用最广泛的是HikariCP。

尚硅谷的MySQL入门视频:https://www.bilibili.com/video/BV12b411K7Zu

书籍方面,推荐入门的小伙伴看《MySQL必知必会》,是一本小册子,这本书实践性很强,基本没有什么理论的堆砌,非常适合入门。

如果想要深入学习,可以看《高性能 MySQL》,这本书是MySQL领域的经典之作,不过就是太厚了,面试重点看索引部分就可以了。

除此之外,如果要深入学习MySQL的使用和原理,可以看极客时间的专栏《MySQL实战45讲》,阿里资深技术专家讲解的课程,有很多生产经常遇到的问题,非常有深度。

第三阶段: Java Web

学习 Java Web,我们不仅需要掌握后端 Java 技术,还需要学习些前端知识。

前端有三大基础技术 Html、CSS和 Java Script,初学的话,学习这些就可以了。如果想做出更好的交互式效果,可以再学习Vue和React等前端技术。

后端 Java 技术包括 Servlet、Filter、Listener、Session、Cookie、JSP、EL 表达式和 JSTL 等。

其中,像 JSP 这样比较老的技术,目前在各大互联网公司基本不再使用,已经被 FreemarkThymeleaf 这样的模板引擎所替代,我们只需要了解基本使用即可。

入门 Java Web,推荐尚硅谷的 Java Web 教程,教程不仅包括前端三大技术,还有后端 Java 技术,最后还会带大家做一个书城项目。

Java Web教程:https://www.bilibili.com/video/BV1Y7411K7zz

第四阶段:主流框架

这部分我们要学习的主流框架主要有 Spring、Spring MVC 和 MyBatis,俗称 SSM 框架。

曾经的 SSH 框架,即 Struts2、Spring、Hibernate 框架,已经逐渐被 SSM 替代,现在可以不用再学 Struts2 和 Hibernate 框架了。

学习这些框架之前,我们先来学习项目管理利器Maven和Git。

Maven

Maven 是一个项目管理工具,它基于项目对象模型(POM)的概念,它可以管理项目的构建、报告和文档。

Maven 本质就是一个巨大的 jar 包资源库,使用 Maven 构建项目,只需在项目的 pom.xml 中配置相关依赖后,就可以直接从远程仓库同步到本地,再也不用满世界搜索下载 jar 包了,省了很多查找和下载的烦恼。

动力结点的Maven实战入门视频:https://www.bilibili.com/video/BV1dp4y1Q7Hf?p=29

Git

Git 是一个开源的分布式版本控制系统,最大作用就是对文件进行版本管理,方便在不同版本进行切换修改,还可以很方便的协作开发。

GitHub 是基于 Git 的代码库托管站,学会了 Git ,我们就能愉快地上 Github 交友了。

狂神说的 Git 视频: https://www.bilibili.com/video/BV1FE411P7B3

喜欢文字版的小伙伴,推荐看廖雪峰的 Git 教程,很浅显易懂

廖雪峰的 Git 教程:https://www.liaoxuefeng.com/wiki/896043488029600

方便查阅的 Git 中文手册:https://git-scm.com/book/zh/v2

SSM框架

Spring 是一个轻量级的 Java 开发框架,现在已经是最受欢迎的企业级 Java 应用程序开发框架,目前已经更新到 Spring5。

Spring 框架的核心特性是依赖注入(DI)与面向切面编程(AOP),Spring 框架的组成结构图如下所示:

Spring MVC 是一个基于MVC架构,用来简化web应用程序开发的框架,它是 Spring 的一部分,SpringMVC 已经成为目前最主流的 MVC 框架之一。

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。

在使用传统JDBC时,往往需要写很多JDBC代码,需要自己写SQL语句以及自己装配参数,然后自己对结果集进行封装处理。

而Mybatis则帮我们简化了以上功能,只需要一些配置文件(xml)或是注解即可完成对数据库的查询以及结果的映射封装。

学习SSM框架,推荐使用一整套课程进行学习,会有更好的连贯性,而且还会学习整合SSM框架。

SSM框架视频:https://www.bilibili.com/video/BV1Tv411b7Dp

整合SSM框架还是比较繁琐的,库森之前学习时就整合了一天,时间紧张的小伙伴可以不用在整合这里花费时间,因为这种整合方式目前也不在流行了,现在直接使用更强大的利器Spring Boot就可以了。

Spring Boot

加群:795968897

Spring Boot 采用约定大约配置的方式,大量的减少了配置文件的使用,从而使开发人员不再需要定义样板化的配置。

学习 Spring Boot,推荐雷丰阳老师的 Spring Boot 课程,课程基于 SpringBoot2.3与2.4 版本,包含核心基础、Web原理、单元测试、数据访问、指标监控等章节。

那要不要跳过了 SSM 直接去学习 Spring Boot呢?

如果只是为了使用 Spring Boot,当然可以跳过,毕竟 SSM 配置太繁琐了。

如果想深入学习,尤其是找 Java 开发的工作,面试中会出现很多 Spring 的底层问题,因此还是要学习 SSM 的,如果跳过了不利于学习原理。

雷老师的 Spring Boot 课程:https://www.bilibili.com/video/BV19K4y1L7MT

第五阶段:服务器中间件

学完上面的内容,我们已经具备实际项目的开发能力了,但是要解决些复杂的业务场景,我们还要学习Redis、MQ、Elasticsearch这些中间件。

Redis

Redis 是一个 key-value 存储系统,是跨平台的非关系型数据库,可用作数据库,高速缓存和消息队列代理。

Redis作为当下主流的缓存技术,已经成为互联网企业的不二首选。

Redis入门到精通课程:https://www.bilibili.com/video/BV1CJ411m7Gc

想深入学习的小伙伴,推荐阅读《Redis设计与实现》,知识点非常丰富,讲了很多底层的原理,我曾经看了三遍,对我面试帮助很大,非常推荐!

Redis 设计与实现在线版:http://redisbook.com/

查询Redis命令的中文网站:https://www.redis.com.cn/tutorial.html

MQ

MQ(Message Queue)是一种跨进程的通信机制,用于传递消息。通俗点说,就是一个先进先出的数据结构。MQ有三大主要作用分别为解耦、异步、削峰/限流。

目前业界有很多MQ产品,比较出名的有以下四种:

我最开始学习的是Kafka,因为做的项目中使用到了,小伙伴们根据喜好或者项目需要,选择一款MQ学习就可以了。

Kafka 教程:https://www.bilibili.com/video/BV1a4411B7V9

RabbitMQ教程:https://www.bilibili.com/video/BV14A411q7pF

此外,如果要深入学习,可以阅读《Kafka权威指南》,这本书由Kafka作者执笔,覆盖比较全面。

Elasticsearch

全文搜索属于最常见的需求,开源的 Elasticsearch是目前全文搜索引擎的首选。

它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。

Elasticsearch的底层是开源库 Lucene。但是,必须自己写代码去调用Lucene的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。

ElasticSearch7.6.x最新完整教程:https://www.bilibili.com/video/BV17a4y1x7zq

项目实践

学完了这些,就可以把这些技术整合起来做个项目,这里推荐个我做过的社区论坛项目。

这个论坛项目不仅实现了基本的注册,登录,发帖,评论,点赞,回复功能,同时使用前缀树实现敏感词过滤,使用wkhtmltopdf生成长图和pdf,实现网站UV和DAU统计,并将用户头像等信息存于七牛云服务器。

这是项目使用到的相关技术:

这个项目作为Spring Boot实战练手很不错,老师讲解的很清晰,课程的深度和广度都有,而且课程最后还会手把手教大家将项目部署在云服务器。

课程中也会简要讲解Redis、Kafka和Elasticsearch,即使没有学过这些技术,仍然可以学习这个项目。

社区论坛项目:https://www.bilibili.com/video/BV1AZ4y1u7n3

补充一点,现在的服务器基本都是Linux系统,将项目部署在服务器,学习些基本的Linux命令是必不可少的。

韩顺平 一周学会Linux视频:https://www.bilibili.com/video/BV1Sv411r7vd

Linux命令在线查询:https://wangchujiang.com/linux-command/

第六阶段:微服务和分布式

对于实习和校招的小伙伴来讲,学好前五阶段的技术知识,再深入学习个技术点就可以了,如果还有时间和精力的小伙伴,可以学习微服务和分布式的内容。

Spring Cloud

Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot框架。

准确的说,Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的开发便利性简化了分布式系统的开发,比如服务发现、服务网关、服务路由、链路追踪等。

SpringCloud(H版&alibaba)框架开发教程:https://www.bilibili.com/video/BV18E411x7eT

Dubbo

值得一提的是,还有阿里开源Dubbo,Dubbo一个高性能优秀的服务框架。简单地说,Dubbo是一个基于Spring的RPC(远程过程调用)框架,能够实现服务的远程调用、服务的治理。

至于Spring Cloud 和Dubbo 有什么区别,大家可以搜索下。这里用网络上一个台式电脑的比喻来说就是:Dubbo 是品牌机,Spring Cloud 是组装机。

Dubbo 视频:https://www.bilibili.com/video/BV1Gb411T7Ha

ZooKeeper

ZooKeeper是一个高可用的分布式管理与协调框架,基于ZAB算法(原子消息广播协议)的实现。该框架能够保证分布式环境中数据的一致性,使得ZooKeeper成为了解决分布式一致性问题的利器。

zookeeper视频:https://www.bilibili.com/video/BV1M741137qY

第七阶段:进阶优化

学会前面这些,我们就可以独立完成一个小项目,独立完成项目组分配给你的开发任务。

但是这还不足以写出好的代码,我们要想写出好的代码,还需要学习设计模式,学习多线程,以及JVM的内部原理等。同样,这些也是面试的必考点。

设计模式的书籍推荐《HeadFirst设计模式》,这是一本图文并茂的书籍,适合入门。

JVM 的书籍推荐《深入理解 Java 虚拟机》,这本书是 Java 开发者必看的书,很多 JVM 的文章都是来自这本书。

Java 并发方面,可以看《 Java 并发编程的艺术》,这本书深入到JVM、CPU层面讲解了 Java 并发框架、线程池的原理等,面对面试足够了;还有《并发编程实战》,这是一本不错的 Java 并发参考手册。

部分视频课程如下:

Java 并发编程视频:https://www.bilibili.com/video/BV16J411h7Rd

JVM教程:https://www.bilibili.com/video/BV1PJ411n7xZ

End

以上就是 Java 路线的全部内容了,刚入门的小伙伴可能都看头晕了,觉得好多知识点要学。

Java 技术栈知识的确是多,但只要按部就班、由浅入深的学习就会轻松一些,还会比较有成就感,即先学会用这个技术,再做个系统性的项目把技术融合起来,最后再来看原理部分。

学习路上,难免遇到很多坑,为方便大家交流技术问题,我建立了技术交流群,后台回复”加群“即可进群交流。

小伙伴你好,我是库森,一路摸爬滚打到大厂的程序员一枚。我将持续输出干货,与你共同成长~

o/BV1PJ411n7xZ

End

以上就是 Java 路线的全部内容了,刚入门的小伙伴可能都看头晕了,觉得好多知识点要学。

Java 技术栈知识的确是多,但只要按部就班、由浅入深的学习就会轻松一些,还会比较有成就感,即先学会用这个技术,再做个系统性的项目把技术融合起来,最后再来看原理部分。

学习路上,难免遇到很多坑,为方便大家交流技术问题,我建立了技术交流群,后台回复”加群“即可进群交流。

小伙伴你好,我是库森,一路摸爬滚打到大厂的程序员一枚。我将持续输出干货,与你共同成长~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/921380.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NAND Flash Program Operation: One Shot VS. Two Pass

讲解相关内容的文章很少,开始只搜索到本站一篇相关内容:浅谈NAND FLASH的两种编程方式 看完以后思路还不是很清晰,又发现了两篇FMS的主题演讲,在此简单总结分享。 Flash Memory Summit 2016, Thomas Parnell, IBM Res…

Spring-IoC-加强

目录 简略介绍 理解介绍 IoC的优点 Spring的IoC IoC是如何实现的 IoC能做什么 IoC和DI Spring IoC过程 为什么框架需要反射 Spring Bean的循环依赖问题 IoC简单实现 简略介绍 所谓的IoC(inversion of control),就是控制反转的意思…

Django基础三——视图函数

文章目录 一、基本了解1.1 Django内置函数1.2 http请求流程 二、HttpRequest对象(接受客户端请求)2.1 常用属性2.2 常用方法2.3 服务端接收URL参数2.4 QueryDict对象2.5 案例2.5.1 表单GET提交2.5.2 表单POST提交2.5.3 上传文件 三、HttpResponse对象&am…

气传导耳机品牌推荐?四大品牌气传导耳机推荐

​越来越多小伙伴开始使用气传导耳机了,面对市面上参差不齐的气传导耳机,导致很多小伙伴找不到适合自己的那款耳机了,面对这些问题,我整理了几款好用的气传导耳机给大家挑选和参考,希望都能找到心仪那款。 ①NANK南卡…

Docker-compose 容器编排

1. 是什么 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器…

vscode+ros开发环境搭建

目录 介绍 前提 vscode安装 vscode插件安装 工作空间准备 打开vscode 创建catkin包 编写cpp代码 编译 运行 启动ros服务 监听话题 启动ros测试 介绍 ros开发是机器人开发中必不可少的工作,语言选择可以是c,也可以是python。工具的话,不能像wi…

Mysql 基本概念

数据库的组成 数据 数据是描述事务的符号记录;包括数字、文字、图形、图像、声音、档案记录等 以“记录“形式按统一的格式进行存储 表 将不同的记录以行和列的方式组合成了表 用来存储具体数据 数据库 它就是所有不同属性表的集合 以一定的组织方式存储的…

vue 简单实验 v-for 循环

1.代码 <script src"https://unpkg.com/vuenext" rel"external nofollow" ></script> <div id"list-rendering"><ol><li v-for"todo in todos">{{ todo.text }}</li></ol> </div> &…

数据API服务管理功能:解放数据潜力,提升业务效率

数据API服务的重要性 在数字化时代&#xff0c;数据被认为是企业的重要资产。数据API服务的管理功能能够有效帮助企业实现数据的整合和利用。通过合理的数据API服务管理&#xff0c;企业可以更好地解放数据潜力&#xff0c;提升业务效率。 ​ 解放数据潜力 数据API服务管理功…

解决git上传远程仓库时的大文件提交

在git中超过100M的文件会上传失败&#xff0c;而当一个文件超过50M时会给你警告&#xff0c;如下 warning: File XXXXXX is 51.42 MB; this is larger than GitHubs recommended maximum file size of 50.00 MB 解决这种问题&#xff0c;首先在项目的.git文件夹中找到.gitigno…

git push时,由于commit了大文件无法成功push的解决办法

2句命令解决&#xff01; 如图可以看见大文件的md5值&#xff0c;复制下来&#xff0c;以下命令会使用到 命令1&#xff1a; git rev-list --objects --all | grep b8d13387c0dfd7a8cec9ff0f6c8ded06eb21556f执行上面命令将得到&#xff0c;如下的输出&#xff0c;可以得知是…

C++基础Ⅱ变量

目录儿 4 变量4.1 原始数据类型字符 char整型 short整型 int整型 long整型 long long单精度浮点型 float双精度浮点型 double布尔型 bool 4.2 sizeof 关键字 5 指针和引用 4 变量 4.1 原始数据类型 原始数据类型是构建C程序的最基础数据类型 所有数据都是基于这些原始数据类型…

度加剪辑App的MMKV应用优化实践

作者 | 我爱吃海米 导读 移动端开发中&#xff0c;IO密集问题在很多时候没有得到充足的重视和解决&#xff0c;贸然的把IO导致的卡顿放到异步线程&#xff0c;可能会导致真正的问题被掩盖&#xff0c;前人挖坑后人踩。其实首先要想的是&#xff0c;数据存储方式是否合理&#x…

HQL解决连续三天登陆问题

1.背景 统计连续登录天数超过3天的用户&#xff0c;输出信息包括&#xff1a;用户id&#xff0c;登录天数&#xff0c;起始时间&#xff0c;结束时间&#xff1b; 2.准备数据 -- 建表 create table if not exists user_login_3days(user_id STRING,login_date date );--插入…

查询数据库字段信息 mysql

属性&#xff1a; SELECT TABLE_SCHEMA AS 库名, TABLE_NAME AS 表名, COLUMN_NAME AS 字段名, ORDINAL_POSITION AS 字段顺序, COLUMN_DEFAULT AS 默认值, IS_NULLABLE AS 是否为空, DATA_TYPE …

怎么把pdf文件变小?值得一看的文件压缩方法

现在很多平台对于上传的文件大小是有限制的&#xff0c;如果压缩成压缩包的形式发送&#xff0c;虽然可以减小一点体积&#xff0c;但对方无法直接打开预览文件内的内容&#xff0c;很不方便&#xff0c;怎么才能直接将PDF文件的体积压缩变小呢&#xff1f;下面就给大家汇总了几…

GB2312转UTF-8部分中文乱码

现象 最近写了个txt导入&#xff0c;客户反馈有时候导入的数据&#xff0c;会出现个别中文乱码的现象&#xff0c;但是我之前已经做过编码转换处理了&#xff0c;统一转成了UTF-8。 比如“鞠婧祎”,导入进来是这样&#xff1a; 排查思路 首先看了一下这个文本的编码格式&am…

Window Server 与 Windows 系统开关机日志查看方法

目录 Windows/Windows Server 查看日志Windows 系统常用的事件 ID 环境&#xff1a;Windows Server 2019 &#xff08;也适用于 Windows 其他系统&#xff09;。 不同版本的 Windows 图标可能有所不同&#xff0c;但是服务器级 Windows Server 与普通桌面级 Windows 还会有些操…

低代码平台是为何而生?低代码平台发展前景又如何呢?

低代码平台是为何而生&#xff1f;低代码平台发展前景又如何呢&#xff1f;低代码平台在近年来已经吸引了越来越多的关注&#xff0c;被认为是一种能够加速应用程序开发的解决方案。低代码平台虽然还存在着各种各样的问题&#xff0c;但是低代码平台的前景依然十分广阔。 下面…

放苹果(巧用递归)--夏令营

题目 tips&#xff1a; 1.写递归要有递归边界条件&#xff0c;递归过程就是向边界不断靠近 这里注意&#xff1a;虽然题目给的m,n输入数据范围是>1的&#xff0c;但不代表边界就是这个&#xff1b; 首先&#xff0c;n0肯定是不存在的&#xff0c;所以n的边界肯定是1&#…