JAVA learning paths (continuously updated ...)

Original link: https://www.cnblogs.com/java1024/p/8583274.html

Acknowledgments: the Java Head


table of Contents

Java foundation

database

Web Infrastructure

Mainstream Web framework

Advanced Web Framework

Other techniques

development tools


Recently, some friends asked how I taught myself Java back-end, and some want to want to turn the other direction, but they do not know exactly what is required to learn Java backend, where exactly want to learn, which is the mainstream Java backend technology, etc., leading to want to learn, but very confused, I do not know where to start. I will take someone who has experience writing in this blog, is not always right, but they are summed up according to my own experience, for your reference.

 

Java foundation

Java is a pure object-oriented programming language, in addition to the basic grammar, have to make sense of it oop characteristics: encapsulation, inheritance, polymorphism. There are also generic, reflective features, many of which rely on technology frameworks , such as Spring core Ioc and AOP, have used the reflection, and Java is its own dynamic proxy using reflection to achieve. There are also some of the Java standard library is also very common, such as collection, I / O, concurrent, almost everywhere in Web development, but also interviews often asked, so before self Java back-end, may wish to lay the foundation, in addition to a number of new features Java8 , but also to focus on, such as Lambda expressions, stream flow set of operations, the new Date API, etc., on new features, I also wrote a blog a few in this regard Please find it on their own, do not stick out.

Recommended books on, I do not recommend beginners to start holding "Java programming ideas" eating, because that is when I decided to self-Java afternoon, evening to hold people eating this book, to be honest, I was really I do not understand it in spade, because I have no basis for object-oriented programming language a little, and wrote this book too profound, and at that time for me, completely bible, but I think it's still Java Bible circles, each one has read the harvest. Here I recommend you start to look at "Java core technology", the book stood out straightaway, beginners can accept.

About video recommendation, I had to listen to Bi Xiangdong teacher is speaking a customer base of Java tutorials (Java can focus on the head of the public micro-channel number acquisition).

database

About sql aspects: SQL Tutorial , MySQL Tutorial

After I understand some basic grammar, along with his teacher video directly to do some tables practiced in actual combat operations, such as single-table queries, multi-table query. I recommend learning sql Do not have unrealistic expectations, you need more practice, do not just read the line, because the work in hand written and concise sql is very important. Here at me that I have always uphold the sql statements in the project is to avoid the multi-table queries to avoid multi-table queries, be able to separate multiple statements on separate multiple statements, because here it comes to multi-table query performance and database extensions problem.

About JDBC aspects: JDBC TutorialJDBC connection object to obtain source code analysis

You need to understand the use of JDBC API, in fact, it is just a set of standardized interfaces, as long as all database-driven implements JDBC, then we can call the appropriate drive via a standard API, no need to know is how to achieve the drive, which is facing interface programming benefits. And I for JDBC directly watch the video to understand, followed by a video made tool based on Apache Dbutils made a small tool with a transactional, I deliberately used mind mapping summed up:

jdbc-utils Source Address: jdbc-utils

Web Infrastructure

曾经开源中国创始人红薯写了一篇文章「初学 Java Web 开发,请远离各种框架,从 Servlet 开发」,我觉得他说的太对了,在如今 Java 开发中,很多开发者只知道怎么使用框架,但根本不懂 Web 的一些知识点,其实框架很多,但都基本是一个套路,所以在你学习任何框架前,请把 Web 基础打好,把 Web 基础打好了,看框架真的是如鱼得水。

关于 Http 协议,这篇文章就写得很清楚:Http协议

关于 Web 基础这方面数据推荐,我当时是看的是「Tomcat 与 Java Web 开发技术详解」,很详细地讲解了整个 Java Web 开发的技术知识点,但现在看来,我觉得里面讲的有一些技术确实有点老旧了,不过可以了解一下 Java Web 开发的历史也是不错的。所以在 Web 基础这方面我都是看某客的崔老师讲的「超全面 Java Web 视频教程」,讲得很详细很生动,还有实战项目!

关于 JSP,你只要了解它其实就是一个 Servlet 就行了,关于它的一些标签用法,我认为可以直接忽略,因为现在互联网几乎没哪间公司还用 JSP,除了一些老旧的项目。现在都是流行前后端分离,单页应用,后端只做 API 接口的时代了,所以时间宝贵,把这些时间重点放在 Servlet 规范上面吧。

关于 Tomcat,它是一个 Web 容器,我们写的后端项目都要部署到Web容器才能运行,它其实是一个遵循 Http,通过 Socket 通信与客户端进行交互的服务端程序:Tomcat结构及处理请求过程

Web 主流框架

Java Web 框架多如牛毛,等你有一定经验了,你也可以写一个 Web 框架,网上很多说 Spring、Struts2、Hibernate 是 Java 三架马车,我只想说,那是很久远的事情了,我严重不推荐 Struts2、Hibernate,相信我,一开始只需要上手 Spring、SpringMVC、Mybatis 就可以了,特别是 Spring 框架,其实 Spring 家族的框架都是很不错的。

但是提醒一点就是,千万不要沉迷于各种框架不能自拔,以会多种用法而沾沾自喜,导致知其然而不知其所以然。

Spring其核心思想就是 IOC 和 AOP

谈谈对 Spring IOC 的理解

Spring 面向切面编程

SpringMVC 它的思想是全部请求统一用一个 Servlet 去做请求转发与控制,这个 Servlet 叫 DispatcherServlet:

SpringMVC 初始化过程

SpringMVC 处理请求过程

Mybatis 它可实现动态拼装 sql,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集:

mybatis 入门教程

Mybatis 深入浅出系列

Web 框架进阶

使用了 SSM 框架后,你会觉得框架也不过这么回事,如果你对 Spring 有过大概了解,你也会产生想写一个「山寨版」Spring 的心思了,一个轻量级 Web 框架主要具备以下功能:

  1. 可读取用户自定义配置文件,并以此来初始化框架;
  2. 具备 Bean 容器,管理项目的类的对象生命周期;
  3. 具备依赖注入,降低类之间的耦合性;
  4. 具备 AOP 功能,使项目可进行横向编程,可不改变原有代码的情况增加业务逻辑;
  5. 具备 MVC 框架模式。

其实除了 SSM 之外,Web 框架可谓是百家齐放,其中以 Spring 全家桶最为耀眼,在这里我极力推荐两个 Spring 家族框架:SpringBoot 和 SpringCloud

SpringBoot 弥补了 Spring 配置上的缺点,再也不用为繁杂的 xml 费劲精力了,堪称是 Java 后端开发的颠覆者,推荐书籍「Java EE 开发的颠覆者:SpringBoot实战」

SpringBoot 构建 web 项目

SpringBoot 自动化配置源码分析

自定义 SpringBoot Starter

spring-boot-starter-tutorial

SpringCloud 是一个微服务架构,能够将项目按照业务分成一个个微服务,每个微服务都可独立部署,服务之间互相协调。当一个项目越来越大时,随之而来的是越来越难以维护,此时将项目拆分成若干个微服务、单独维护、单独部署,也可以降低项目不同业务间的耦合度。推荐书籍「Spring Cloud 与 Docker 微服务架构实战」,这本书将 Docker 与微服务完美地结合在一起,堪称完美!

Spring Cloud 中文官网

史上最简单的 Spring Cloud 教程

我写的有关于 Spring Cloud 的博客:

SpringCloud微服务架构之服务注册与发现

SpringCloud微服务架构之服务消费者

SpringCloud微服务架构之断路器

SpringCloud微服务架构之服务网关

其它技术

Redis:一个高性能的 key-value 数据库,当有并发量很高的请求时,将数据缓存在 Redis 中,将提高服务器的响应性能,大大减轻数据库的压力。

redis 中文官网

redis 教程

Git:世界上最先进的分布式版本控制系统,建议所有初学者从命令行开始使用 Git!

Git 官网

最全 Git 教程

Git 的一些常用命令

Maven:一个用于构建项目的工具,将项目间的依赖通过 xml 完美地组织到一起,可通过编译插件将项目编译成字节码文件。还有类似的 Gradle 也是不错的选择。

maven 的 pom.xml 文件详解

Linux:至少要求常用的命令会用,能够在 linux 环境下部署项目。

Linux 命令大全

最全的 SSH 连接远程终端教程

Docker:简直是项目部署神器啊,来不及解释了,看我 Docker 系列博客,开启 Docker 之旅吧!推荐书籍「Docker 技术入门与实战」,中国首部 Docker 著作!

Docker 实战(一)

Docker 实战(二)

Docker 实战(三)

docker-deploy-tutorial

开发工具

工欲善其事,必先利其器,以下是我推荐的一些开发工具:

Intellij IDEA:Java 开发最好的 IDE,这个是公认的,我一开始是用 Eclipse 的,后来用了 Intellij IDEA,才发现 Eclipse 就是一坨屎,所以我以过来人劝你们不要使用 Eclipse,直接 Intellij IDEA!

IntelliJ IDEA 使用教程

Iterm2:macOS 最好用的终端!

Iterm2 使用指南

Chrome:人生苦短,请用 Chrome,来不及解释了,快上车!

Postman:很好用的一个接口调试工具。

Postman 官网

 


参考:

  1. https://mp.weixin.qq.com/s?src=11&timestamp=1565266897&ver=1778&signature=XNv0ybDC-1McuN6pugfLbwBiqUz1PC2YaRsVekrrcwSmDmaIIw6vqm13hAgEn7FLsz9vRtthxiILLWWRf51swVsCL*cUbhwLnFxIjGyk9VDIg7XmE-j5TYcgfomm*XS7&new=1
  2. https://blog.csdn.net/qq_44543508/article/details/93899244
  3. https://blog.csdn.net/love20165104027/article/details/81271556
  4. https://www.cnblogs.com/java1024/p/8583274.html(1  2 3的原文出处  & 本文出处)。
  5. https://blog.csdn.net/oguro/article/details/52998596

 

Guess you like

Origin blog.csdn.net/qq_33189961/article/details/98884524