关于后端:Java学习路线总结逆袭Java架构师

36次阅读

共计 14016 个字符,预计需要花费 36 分钟才能阅读完成。

本文曾经收录到 Github 仓库,该仓库蕴含 计算机根底、Java 根底、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享 等外围知识点,欢送 star~

Github 地址:https://github.com/Tyson0314/Java-learning


大家好,我是大彬~

我本迷信的不是计算机,大四开始自学 Java,并且找到了中大厂的 offer。自学路上遇到不少问题,每天晚上都是保持到一两点才睡觉,最终也拿到了 30w 的 offer

在这里也揭示学弟学妹们,要尽早确定当前的方向,读研还是工作,找工作的话,也要尽快确定工作岗位,想转行的,须要花更多的工夫筹备。很多同学到了大四快毕业的时候,才思考本人将来要做什么,这个时候曾经有点晚了。如果错过了校招,走社招渠道去找工作,难度将会晋升一个等级,到时悔恨也来不及!

上面来说说本人的经验吧(附自学路线)。

接触编程

大学以前根本没碰过电脑,家里没电脑,也没去过网吧。高中的计算机课程,期末作业要实现一个自我介绍的 PPT,也不会做,最初间接抄同桌的作业(复制粘贴都不会。。还得同桌教,捂脸)。

高考完一个月后,买了电脑,真正开始应用上了电脑。

大一上学期的时候,系里开了一门 C 语言的课程,这也是我第一次接触编程。教材是英文的,刚开始学还是挺头大的。每次课程作业,四周的同学都是一顿复制粘贴,我也一样嘿嘿。

记得在讲指针那一章的时候,听的一头雾水。略微走神,回过头来,曾经不晓得讲的是啥了。

前面系里开设了兴趣小组,因为平时比拟闲,也想着去捣鼓点货色,就去加入了。刚开始的时候,什么都不懂,老师举荐我学一下 51 单片机,拿了一本厚厚的 51 单片机的书籍,跟着书里的 demo 敲了一遍,发现了新天地!原来编程这么有意思!

记得第一次跑出流水灯的时候,那叫一个冲动啊,满满的都是成就感!前面也写了一些电机、红外遥控等 demo。从那以后,激发了我学习编程的趣味。

到了大二,辅导员在群里公布全国电子设计大赛的信息,参赛题跟四轴飞行器相干,那段时间对四轴飞行器比拟感兴趣,于是约了两个小伙伴一块加入。间隔较量工夫只有一个月,在那一个月的工夫里,每天都是早出晚归,吃饭的时候还在想着哪一块代码出了 bug。尽管最初没能获奖,然而在这个过程中,学到很多常识,编程能力也有了很大的晋升。

决定转码

转眼间,大三开学,开始纠结考研还是工作,思考了一周工夫,也进了系里的实验室体验了一把研究生生存,最初还是服从心田的想法,决定间接找工作。

我征询了本业余的师兄师姐们今年的待业状况,他们大部分人还是找了互联网方向的工作。有一个在传统行业的师兄,也劝我投互联网公司的岗位,因为在传统行业加班也不少,然而工资贼低。。最初决定转行程序员,找后端相干的工作。

那么学习哪一种语言呢?过后有三个抉择:c++,Java,python。

那段时间 python 比拟火,然而通过一番三思而行之后,还是抉择了 Java。为什么抉择 Java 呢?

很简略,市场需求大,学习难度适中。相比科班同学来说,我不足零碎的计算机基础知识,而间隔秋招也只有不到一年工夫,所以还是抉择学习难度低一点的 Java。

闭关自学

确定方向后,便开始制订学习路线。不得不说,Java 要学的货色是真的多。。

自学期间遇到挺多问题,比方一些环境配置问题,有时候搞上好几天,很打击积极性。中途也有很屡次狐疑本人的程度,是不是不适宜干编程,差点就放弃了。幸好最初还是保持了下来。

半年多的工夫,除了平时上课,其余工夫就是在图书馆。周末或者节假日,每天都是 7 点起床,八点到图书馆开始学习,到了早晨十点,图书馆闭馆,才回宿舍,每天都是图书馆最初走的一批。回到宿舍,洗完澡,持续肝到十二点多(卷王!)。

很多人在问,大三才开始自学 Java,来的及吗?我感觉,还是看集体的投入水平和学习能力。有些人自学能力强一点,每天能够投入 10 小时及以上的工夫去学习,那齐全没问题。

自学过程还是挺辛苦的,要耐得住寂寞,最最重要的还是得保持!

我依据本人的自学经验,整顿了一些学习过程中踩坑总结的教训,心愿自学的小伙伴能够少走弯路:

  • 重视实际,不要只是埋头看书,肯定要多入手写代码。
  • 刚开始自学的时候,能够不必太深究细节,不然可能会狐疑本人的学习能力。等到前面有了肯定的根底,回过头来从新回顾,可能会豁然开朗,没有当初想的那么难。
  • 能够适当加一些交换群,遇到不懂的知识点,多与其他人交换。

好了,上面给大家分享一下我的自学教训。

自学路线

首先看一下 Java 学习路线图:

在这里也给大家分享一份精心整顿的 大厂高频面试题 PDF,小伙伴靠着这份手册拿过阿里 offer,须要的小伙伴能够自行下载:

http://mp.weixin.qq.com/s?__biz=Mzg2OTY1NzY0MQ==&mid=22474854…

Java

举荐书籍:

  • 《head first java》
  • 《JAVA 核心技术卷》

head first 系列的书籍解说比拟乏味,比拟好了解。《JAVA 核心技术卷》难度绝对适中,内容也比拟全面,局部章节(如 Swing)能够跳过。

这些书籍,我曾经整顿了电子版,放到 github 上了,总共200 多本经典的计算机书籍,包含 C 语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,能够 star 一下,下次找书间接在下面搜寻,仓库继续更新中~(花了一个多月的工夫整顿的,心愿对大家有帮忙,欢送 star~)

仓库继续更新中~

有须要的自取:

github 仓库:https://github.com/Tyson0314/java-books

视频举荐能源节点老杜的视频教程,1000w 的播放量!视频总体上品质很不错,解说挺具体,适宜老手。跟着老杜的视频学下来,能够学到很多常识!

https://www.bilibili.com/video/BV1Rx411876f

再次强调:多敲代码!多敲代码!多敲代码!

学习编程就是看书加实际,要多入手,不然看过的知识点很快就会忘,而且多实际也会遇到很多坑,丰盛教训。能够到 github 上找一些我的项目练练手,通过做我的项目坚固常识,而且每实现一个性能之后,会有满满的成就感,也会激励你一直去学习。

Java 基础知识次要有:

  • 面向对象个性
  • Java 语言根底、循环、数组 ; 理解类和对象

    • 把握强制数据类型转换和主动类型晋升规定;
    • 常量如何申明及赋值;
    • 循环的语法及作用;
    • 数组的申明及定义;
    • 把握类的概念以及什么是对象。
  • 抽象类和接口
  • 数据类型、重写重载、封装继承多态
  • 容器类 Map/List/Set 等
  • 异样解决
  • 反射机制
  • 泛型
  • 罕用类:String、工夫类
  • 函数式编程
  • Stream API
  • Lambda 表达式
  • IO 流操作, 多线程及 Socket

    • 把握 IO 读写流相干的类,理解字节流,字符流和字符流缓冲区;
    • 把握线程的概念,多线程的创立、启动形式,锁和同步的概念及使用;
    • 把握 Socket 通信的概念,如何申明客户端服务端,如何实现双端数据通信。

Java Web

Java Web 是一系列技术的综合,也是大多数 Java 开发者的技术方向。有必要学习一下。这部分能够看看视频教程。

视频举荐尚硅谷的 JavaWeb 全套教程,HTML/CSS/JavaScript 等跟前端相干的能够倍速观看。

https://www.bilibili.com/video/BV1Y7411K7zz

黑马程序员的 Java web 教程总体也不错

https://www.bilibili.com/video/BV1qv4y1o79t

上面列举 Java web 须要把握的知识点。

HTML:

  • 把握网页的根本形成;
  • 把握 HTML 的根本语法;
  • 表格的作用以及合并行、合并列;
  • 表单标签的应用,提交形式 get/post 的区别;
  • 框架布局的应用

CSS:

  • 把握 CSS 的语法及作用,在 html 中的申明形式;
  • 把握 CSS 布局的函数应用;
  • 把握 CSS 内部款式的引入。

JavaScript:

  • 把握 JS 的语法及作用,在 HTML 中的申明形式;
  • 把握 JS 的运行形式;
  • 把握 JS 中的变量申明、函数申明、参数传递等;
  • 把握 HTML 中的标签事件应用;
  • 把握 JS 中的 DOM 原型

jQuery:

  • 理解如何应用 jQuery,下载最新版或者老版本的 jQuery.js
  • 把握选择器、文档解决、属性、事件等语法及应用;
  • 可能灵便应用选择器查找到想要查找的元素并操作他们的属性;
  • 动静申明事件;
  • 动态创建元素。

Servlet

  • 把握 Java 中的 Web 我的项目目录构造;
  • 把握 Java Web 我的项目的重要中间件 Tomcat;
  • 把握 Servlet 中的 Request 和 Response;
  • 把握 Servlet 的根本运行过程。
  • 把握 Servlet 的申明周期

Ajax

  • 把握 Ajax 的基本概念;
  • 把握 jQuery 中的 Ajax 申请;
  • 把握 JSON

Filter、Listener:

  • 把握 Filter 和 Listener
  • 把握 Session 过滤器和编码过滤器

JSP 数据交互

  • JSP 中如何编写 Java 代码,如何应用 Java 中的类;
  • JSP 中的参数传递。

状态治理 Session 和 Cookie

  • 把握 Session、Cookie 的作用及作用域;
  • 把握 Session 及 Cookie 的区别,存储地位,申明周期等;
  • 把握 Session 及 Cookie 别离在 JSP 和 Cookie 中的应用

框架

支流框架次要有:

  • spring:面向切面、依赖注入。
  • springboot:习惯优于配置、主动配置。目前很多公司外部都是应用 Spring Boot。
  • springmvc:基于 MVC 架构模式的轻量级 Web 框架
  • Mybatis:orm 框架。
  • springcloud

Spring

大部分公司都会用到 Spring 框架,必学!。次要了解 Spring 面向切面、依赖注入的个性,学会应用 Spring 构建应用程序。举荐书籍《Spring 实战》,通过 demo 的形式带你一步步搭建 Spring 利用

视频举荐尚硅谷王泽老师的 Spring5 框架最新版教程,视频刚出不久,内容也是与时俱进,值得学习!

https://www.bilibili.com/video/BV1Vf4y127N5

SpringMVC

SpringMVC 是基于 MVC 架构模式 的轻量级 Web 框架,对于初学者,须要把握 Web 申请从收回到相应的这个过程,SpringMVC 做了什么,还有 MVC 模式的思维。

视频举荐狂神说 Java 的 SpringMVC 最新教程。

【狂神说 Java】SpringMVC 最新教程 IDEA 版通俗易懂:https://www.bilibili.com/video/BV1aE41167Tu

Mybatis

MyBatis 是一款优良的长久层框架,MyBatis 帮忙咱们做了很多事件:建设连贯、操作 Statment、ResultSet、解决 JDBC 相干异样等,简化了开发流程。举荐书籍《深入浅出 Mybatis》。

视频举荐狂神说的 Mybatis 最新残缺教程,b 站播放量最高,取得了很多小伙伴的统一好评。

https://www.bilibili.com/video/BV1NE411Q7Nx

SpringBoot

学完 SSM,就要进一步学习 SpringBoot 了,置信很多人在学了 Spring 之后,面对各种各样的配置,想必都会头疼。而 SpringBoot 的呈现解决了这个问题,SpringBoot 去除了大量的 XML 配置文件,简化了简单的依赖治理。书籍举荐《Spring Boot 实战》。

视频举荐尚硅谷雷神的 2021 版最新 SpringBoot2 权威教程。

https://www.bilibili.com/video/BV1Et411Y7tQ

SpringCloud

当初面试根本都会问到微服务相干的内容,最好理解下微服务相干的常识。服务注册与发现、负载平衡、服务降级、API 网关等。举荐书籍《spring cloud 微服务实战》

视频教程能够看看尚硅谷周阳老师的:

https://www.bilibili.com/video/BV18E411x7eT

并发

什么是并发编程,简略来说就是为了充分利用 cpu,多个工作同时执行,疾速实现工作。

并发编程的相干内容能够看看《JAVA 并发编程实战》这本书。

视频举荐狂神说 Java,很不错的视频:

https://www.bilibili.com/video/BV1B7411L7tE

次要知识点有:

  • 线程的概念以及案例
  • 线程池原理
  • 线程间通信形式
  • 锁(synchronized、ReentrantLock)
  • 并发工具类(CountDownLatch/CyclicBarrier/Semaphore)
  • 原子类
  • AQS
  • Thread 生命周期状态
  • Java 内存模型

Redis

用来缓存热点数据,放慢读写速度,从而进步性能。当初 Java 后端的面试根本都会问到 Redis。

书籍举荐《redis 实战》和《redis 设计与实现》。

视频举荐狂神说 Java 的 Redis 最新超具体版教程,不仅教你学 Redis,还会教你学习的形式。

https://www.bilibili.com/video/BV1S54y1R7SB

音讯队列

音讯队列是根底数据结构中 FIFO 的一种数据结构,用来解决利用解耦、异步音讯、流量削锋等问题,能够实现高性能、高可用、可伸缩和最终一致性。

视频举荐黑马的 RocketMQ 教程和百知教育的 RabbitMQ 教程,两者挑一个学习就能够!

【编程不良人】MQ 消息中间件之 RabbitMQ:

https://www.bilibili.com/video/BV1dE411K7MG

黑马程序员 Java 教程 RocketMQ 零碎精讲:

https://www.bilibili.com/video/BV1L4411y7mn

JVM

JVM 也是面试常常会问的内容。Java 开发者不必本人进行内存治理、垃圾回收,JVM 帮咱们做了,然而还是有必要理解下 JVM 的工作原理,这样在呈现 oom 等问题的时候,才有思路去排查和解决问题。书籍举荐周老师的《深刻了解 Java 虚拟机》。

视频举荐尚硅谷宋红康的全套课程,全套课程分为三个篇章:《内存与垃圾回收篇》、《字节码与类的加载篇》和《性能监控与调优篇》。

尚硅谷 JVM 全套教程:

https://www.bilibili.com/video/BV1PJ411n7xZ

JVM 的基础知识:

  • jvm 内存构造(程序计数器、虚拟机栈、本地办法栈、堆、办法区、运行时常量池、间接内存)
  • 类加载过程
  • 双亲委派
  • 垃圾回收算法
  • 垃圾回收器
  • 调优工具(jsp/jstack/jstat/jmap,理解即可)

计算机基础知识

学编程肯定要打好计算机根底!

对于非科班同学来说,与科班同学最大的差距在于 根本理论知识。如果你是非科班自学编程的,想要进入大厂,那么计算机基础知识肯定不能落下。

每一个合格的程序员,应该要晓得计算机体系的构造,外在的逻辑是什么,要有本人的思考。

总之,基本功十分重要!

操作系统

无论学习什么编程语言,和须要和操作系统打交道。如果对操作系统不相熟,那么你在将来的学习路上将会遇到很多阻碍,比方线程过程调度、内存调配、Java 的虚拟机等常识,都会一头雾水。因而,只有把操作系统搞明确了,才可能更好地学习计算机的其余常识。

书籍举荐

入门级别书籍:《古代操作系统》、《操作系统导论》,进阶:《深刻了解计算机系统》

强推《深刻了解计算机系统》这本书。

CSAPP 是一本很好的书,糅合了计算机组成原理、操作系统、网络编程、并行程序设计原理等课程的基础知识。对于刚接触编程,或者像大彬这种非科班出身的人来说,这是一本指导性的书,它会通知你,要想成为一个优良的程序员,该当重点了解哪些计算机底层原理,通知你应该在当前的自学过程中,应该重点学习哪些课程,比方操作系统和体系结构等。

视频教程举荐

Udacity 的 Advanced OS 公开课:https://www.classcentral.com/course/udacity-advanced-operatin…

还有国内不错的操作系统的课程,清华大学的公开课:https://www.xuetangx.com/course/THU08091000267/5883104?channe…

由清华大学两位老师向勇、陈渝讲授,同时配有一套残缺的试验,试验内容是从无到有地建设起一个小却五脏俱全的操作系统,以支流操作系统为实例,以教学操作系统 ucore 为试验环境,讲授操作系统的概念、基本原理和实现技术,为学生从事操作系统软件钻研和开发,以及充分利用操作系统性能进行应用软件钻研和开发打下扎实的根底。

另外,举荐另一门 MIT 操作系统课程:MIT6.268

课程地址:https://pdos.csail.mit.edu/6.828/2018/schedule.html

MIT6.828 是一门十分值得学习的课程,广受好评,是 实践与实际相结合的经典

只有你跟着我的项目一步一步走,做完 6 个试验,就能实现一个简略的操作系统内核。

每个试验都有对应的知识点,学完理论知识后会有相应的练习,学习体验十分棒!

倡议 在开始学习这门课之前先相熟 C 和汇编,对计算机组成有肯定理解。

操作系统次要知识点

  • 操作系统的根底特色
  • 过程与线程的本质区别、以及各自的应用场景
  • 过程的几种状态
  • 过程通信办法的特点以及应用场景
  • 过程任务调度算法的特点以及应用场景
  • 死锁的起因、必要条件、死锁解决。手写死锁代码、Java 是如何解决死锁的。
  • 线程实现的形式
  • 协程的作用
  • 内存治理的形式
  • 虚拟内存的作用,分页零碎实现虚拟内存原理
  • 页面置换算法的原理
  • 动态链接和动静链接

数据结构和算法

为什么学习数据结构与算法?对于计算机专业的同学来说,这门课程是必修的,考研根本也是必考科目。对于程序员来说,数据结构与算法也是面试、口试必备的十分重要的考察点。

数据结构与算法是程序员内功体现的重要规范之一,且数据结构也利用在各个方面。数据结构也蕴含一些面向对象的思维,故学好把握数据结构对逻辑思维解决形象能力有很大晋升。

书籍举荐

《大话数据结构》和《算法图解》

《大话数据结构》这本书最大的特点是,通篇以一种趣味形式来叙述,大量援用了各种各样的生存常识来类比,并充分运用图形语言来体现形象内容,对数据结构所波及到的一些经典算法做到逐行剖析、多算法比拟。这本书特地适宜初学者。

《算法图解》是十分好的入门算法书,示例丰盛,图文并茂,以让人容易了解的形式阐释了算法,旨在帮忙程序员在日常我的项目中更好地施展算法的能量。

很多学 Java 的同学,可能会问有没有 Java 版本的数据结构和算法书籍?

当然有的,能够看看 《数据结构与算法剖析 java 语言形容》 这本书,用 Java 语言形容各种数据结构和算法,对于 Java 开发者来说,更容易了解。

视频举荐

UCSanDiego 的数据结构与算法专项课程:https://www.coursera.org/specializations/algorithms

浙大陈越姥姥的数据结构课程

https://www.bilibili.com/video/BV1H4411N7oD

浙江大学陈越姥姥和何钦铭传授联结授课,十分经典的课程。姥姥我的偶像!

小甲鱼的数据结构和算法课程:https://www.bilibili.com/video/BV1jW411K7yg

数据结构与算法次要学习以下内容:

  • 根本数据结构(数组、链表、栈、队列等)
  • 树(二叉树、avl 树、b 树、红黑树等)
  • 堆构造
  • 排序算法(冒泡排序、抉择排序、插入排序、疾速排序、归并排序、堆排序等及工夫空间复杂度)
  • 动静布局、回溯、贪婪算法(多刷刷 leetcode)
  • 递归
  • 位运算

学完感觉还很吃力?能够借助一些刷题网站坚固下。上面举荐几个刷题网站。

牛客网

作为牛客红名大佬,来给牛客宣传一波!(牛客打钱!)

牛客网领有超级丰盛的 IT 题库,题库 + 面试 + 学习 + 求职 + 探讨,根本涵盖所有面试口试题型,堪称 ” 互联网求职神器 ”。在这里不仅能够刷题,还能够跟其余牛友探讨交换,一起成长。牛客上还会各种的内推机会,对于求职的同学也是极其不错的。

LeetCode

力扣,强推!力扣虐我千百遍,我待力扣如初恋!

从当初开始,每天一道力扣算法题,保持几个月的工夫,你会感激我的(傲娇脸)

我刚开始刷算法题的时候,就抉择在力扣上刷。最后刷 easy 级别题目的时候,都感觉有点吃力,保持半年之后,遇到中等题目甚至 hard 级别的题目都不慌了。

不过是游刃有余罢了。

LintCode

与 Leetcode 相似的刷题网站。

LeetCode/LintCode 的题目量差不多。LeetCode 的 test case 比拟齐备,并且 LeetCode 有 讨论区,看他人的代码还是比拟有意义的。

LintCode 的 UI、tagging、filter 更加灵便,更有长处,大家抉择其中一个进行刷题即可。

数据库

互联网利用大多属于数据密集型利用,对于真实世界的数据密集型利用而言,除非你筹备从根底组件的轮子造起,不然基本没那么多机会去摆弄花哨的数据结构和算法。

理论生产中,数据表就是数据结构,索引与查问就是算法。而利用代码往往表演的是胶水的角色,解决 IO 与业务逻辑,其余大部分工作都是在数据系统之间搬运数据。在最宽泛的意义上,有状态的中央就有数据库。它无所不在,网站的背地、利用的外部,单机软件,区块链里,甚至在离数据库最远的 Web 浏览器中。

书籍举荐

  • 《MySQL 必知必会》
  • 《高性能 mysql》

《MySQL 必知必会》次要是 Mysql 的根底语法,很好了解。前面有了根底再看《高性能 mysql》,这本书次要解说索引、SQL 优化、高级个性等,很多 Mysql 相干面试题出自《高性能 MySQL》这本书,值得一看。

视频举荐

伯克利的 CS168 课程:https://archive.org/details/UCBerkeley_Course_Computer_Scienc…

国内中国人民大学王珊老师的《数据库系统概论》:https://www.bilibili.com/video/BV1pW411W7Do

MySQL 基础知识:

  • 增删改查
  • 事务个性、隔离级别
  • 索引原理、优化
  • b+ 树
  • 最左匹配准则
  • 存储引擎
  • MVCC
  • 执行打算
  • 分库分表
  • 日志,bin log/undo log/redo log

计算机网络

计算机网络这门课须要学习计算机网络的概念、原理和体系结构,晓得计算机分层构造,物理层、数据链路层、介质拜访子层、网络层、传输层和应用层的基本原理和协定,把握以 TCP/IP 协定族为主的网络协议构造,并且理解网络新技术的最新倒退。

书籍举荐

《计算机网络自顶向下办法》

这本书是经典的计算机网络教材,采纳作者独创的自顶向下办法来讲授计算机网络的原理及其协定,自第 1 版出版以来曾经被数百所大学和学院选作教材。书中从应用层讲起,而后开展,解脱了从物理层开始的干燥,间接接触利用实例,更能吸引读者的趣味。而且,书上很多例子举的很好,活泼形象。

视频举荐

视频举荐中科大郑烇、杨坚全套《计算机网络(自顶向下办法 第 7 版,James F.Kurose,Keith W.Ross)》课程。这门课是 2020 年秋科大自动化系本科课程录制版,可与中科大学生一起实现专业知识的学习。

https://www.bilibili.com/video/BV1JV411t7ow?p=7&vd_source=2b7…

另外还能够看看哈尔滨工业大学李全龙老师的计算机网络课程:https://www.bilibili.com/video/BV1Up411Z7hC

计算机网络外围知识点

  • 网络分层构造
  • TCP/IP
  • 三次握手四次挥手
  • 滑动窗口、拥塞管制
  • HTTP/HTTPS
  • 网络安全问题(CSRF、XSS、SQL 注入等)

linux

Linux 零碎曾经渗透到 IT 畛域的各个角落,作为一名 IT 从业人员,不论你是专一于编程,还是专一于运维,都应该对 Linux 有所理解,甚至还要深刻学习,把握外围原理。

至多要相熟罕用的 Linux 命令。书籍举荐《鸟哥的 linux 私房菜》

视频举荐:

https://www.bilibili.com/video/BV1dW411M7xL

设计模式

设计模式是软件开发人员在软件开发过程中面临的个别问题的解决方案。对于具备丰盛的开发教训的开发人员,学习设计模式有助于理解在软件开发过程中所面临的问题的最佳解决方案;对于那些经验不足的开发人员,学习设计模式有助于通过一种简略快捷的形式来学习软件设计。

为什么要学习设计模式:

  • 设计模式是从许多优良的软件系统中总结出可能实现可维护性、复用的设计方案,应用这些计划能够防止做一些重复性的工作
  • 正当应用设计模式并对设计模式的应用状况进行文档化,将有助于他人更快地了解零碎
  • 学习设计模式将有助于初学者更加深刻地了解面向对象思维

设计模式分类

1.1 创立型模式

创立型模式 (Creational Pattern) 对类的实例化过程进行了形象,可能将模块中对象的创立和对象的应用拆散。

创立型模式包含工厂办法模式、形象工厂模式、单例模式、建造者模式、原型模式

1.2 结构型模式

结构型模式 (Structural Pattern) 形容如何将类或者对 象联合在一起造成更大的构造,就像搭积木,能够通过 简略积木的组合造成简单的、性能更为弱小的构造。

结构型模式包含适配器模式、装璜模式、代理模式、外观模式、桥接模式、组合模式、享元模式

1.3 行为型模式

行为型模式 (Behavioral Pattern) 是对在不同的对象之间划分责任和算法的抽象化。行为型模式不仅仅关注类和对象的构造,而且重点关注它们之间的相互作用。

行为型模式包含策略模式、模板模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式等。

举荐秦疆老师 基于 Java 解说的 23 种设计模式 视频教程。

https://www.bilibili.com/video/BV1mc411h719

工具

Git

Git 是一个开源的分布式版本控制系统,用于麻利高效地解决任何或小或大的我的项目。Git 是 Linus Torvalds 为了帮忙治理 Linux 内核开发而开发的一个开放源码的版本控制软件。

视频举荐:https://www.bilibili.com/video/BV1BE411g7SV

Maven

Maven 是一个软件项目管理工具,能够对 Java 我的项目进行全自动构建,治理我的项目所须要的依赖。Maven 也可被用于构建和治理各种我的项目,例如 C#,Ruby,Scala 和其余语言编写的我的项目。

视频举荐:

https://www.bilibili.com/video/BV1Ah411S7ZE

docker

Docker 是一个开源的利用容器引擎。Docker 能够让开发者打包他们的利用以及依赖包到一个轻量级、可移植的容器中,而后公布到任何风行的 Linux 机器上,也能够实现虚拟化。

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您可能将应用程序与基础架构离开,从而能够疾速交付软件。

Docker 的利用场景

  • Web 利用的自动化打包和公布。
  • 自动化测试和继续集成、公布。
  • 在服务型环境中部署和调整数据库或其余的后盾利用。

视频举荐广州云科的 docker 入门教程,十分具体。

https://www.bilibili.com/video/BV11L411g7U1

我的项目

很多同学初学 Java 都会遇到一个问题,不晓得去哪里找 Java 的我的项目练手。以前我也遇到这个问题,当初在这里分享下一些比拟值得学习的我的项目。

首先给大家举荐几个 Java 我的项目的 视频教程,都是 B 站上的视频,风评很好,解说也十分具体,有趣味的能够看一下~

尚硅谷尚筹网 Java 我的项目实战开发教程:

https://www.bilibili.com/video/BV1bE411T7oZ

尚硅谷 Java 微服务 + 分布式 + 全栈我的项目【尚医通】

https://www.bilibili.com/video/BV1V5411K7rT

Java Web 我的项目实战 - 畅购商城:

https://www.bilibili.com/video/BV13J411k7aQ

上面也举荐几个 Github 上比拟优质的开源我的项目。

newbee-mall

star:7.8k

https://github.com/newbee-ltd/newbee-mall

newbee-mall 我的项目是一套电商零碎,包含 newbee-mall 商城零碎及 newbee-mall-admin 商城后盾管理系统,基于 Spring Boot 2.X 及相干技术栈开发。前台商城零碎蕴含首页门户、商品分类、新品上线、首页轮播、商品举荐、商品搜寻、商品展现、购物车、订单结算、订单流程、集体订单治理、会员中心、帮忙核心等模块。后盾管理系统蕴含数据面板、轮播图治理、商品治理、订单治理、会员治理、分类管理、设置等模块。

litemall

star:16.2k

https://github.com/linlinjava/litemall

又一个小商城。litemall = Spring Boot 后端 + Vue 管理员前端 + 微信小程序用户前端 + Vue 用户挪动端。

小商城性能:

  • 首页
  • 专题列表、专题详情
  • 分类列表、分类详情
  • 品牌列表、品牌详情
  • 新品首发、人气举荐
  • 优惠券列表、优惠券抉择

在这里也分享一份十分棒的 Java 学习笔记,Github 标星 137k+!这份笔记次要 Java 根底、容器、Java IO、并发和虚拟机等内容,排版精良,内容更是无可挑剔。

须要的小伙伴可自行下载:

http://mp.weixin.qq.com/s?__biz=Mzg2OTY1NzY0MQ==&mid=10000039…

eladmin

star:16.2k

https://github.com/elunez/eladmin

一个基于 Spring Boot 2.1.0、Spring Boot Jpa、JWT、Spring Security、Redis、Vue 的前后端拆散的后盾管理系统。我的项目采纳分模块开发方式,权限管制采纳 RBAC,反对数据字典与数据权限治理,反对一键生成前后端代码,反对动静路由。

我的项目提供了十分具体的文档,地址是 https://el-admin.vip

我的项目体验地址:https://el-admin.xin

应用的技术栈也比拟新,给作者点赞!

vhr

star:22.2k

https://github.com/lenve/vhr

微人事是一个前后端拆散的人力资源管理系统,我的项目采纳 SpringBoot+Vue 开发。我的项目退出常见的企业级利用所波及到的技术点,例如 Redis、RabbitMQ 等。

Blog

star1.2k

https://github.com/zhisheng17/blog

My-Blog 应用的是 Docker + SpringBoot + Mybatis + thymeleaf 打造的一个集体博客模板。此我的项目在 Tale 博客零碎根底上进行批改的。

community

star:1.8k

https://github.com/codedrinker/community

码问社区。开源论坛、问答零碎,现有性能发问、回复、告诉、最新、最热、打消零回复性能。技术栈 Spring、Spring Boot、MyBatis、MySQL/H2、Bootstrap。

vblog

star:6.5k

https://github.com/lenve/VBlog

V 部落,Vue+SpringBoot 实现的多用户博客治理平台!

后端次要采纳了:

1.SpringBoot
2.SpringSecurity
3.MyBatis
4. 局部接口遵循 Restful 格调
5.MySQL

前端次要采纳了:

1.Vue
2.axios
3.ElementUI
4.vue-echarts
5.mavon-editor
6.vue-router

gpmall

star:4.3k

https://github.com/2227324689/gpmall

【咕泡学院实战我的项目】基于 SpringBoot+Dubbo 构建的电商平台。业务模块划分,尽量贴合互联网公司的架构体系。所以,除了业务自身的复杂度不是很高之外,整体的架构根本和理论架构相差无几。

后端的次要架构是基于 springboot+dubbo+mybatis。

guns

star:3.4k

https://github.com/stylefeng/Guns

Guns 是一个现代化的 Java 利用开发框架,基于支流技术 Spring Boot2,Guns 的核心理念是进步开发人员开发效率,升高企业信息化零碎的开发成本,进步企业整体开发程度。

Guns 基于 插件化架构,在建设零碎时,能够自由组合细粒度模块依赖,实现不同性能的组合和剔除,让我的项目体积灵便管制,从而更不便地搭建不同的业务零碎。

应用 Guns 能够疾速开发出各类信息化管理系统,例如 OA 办公零碎、我的项目管理系统、商城零碎、供应链零碎、客户关系管理系统等。

music-website

star:2.3k

https://github.com/Yin-Hongwei/music-website

音乐网站。客户端和治理端应用 Vue 框架来实现,服务端应用 Spring Boot + MyBatis 来实现,数据库应用了 MySQL

前端技术栈:Vue3.0 + TypeScript + Vue-Router + Vuex + Axios + ElementPlus + Echarts。

以上就是 Java 自学的学习路线,内容不少,转行的小伙伴们加油!

另外,下面提到的书籍,我曾经整顿了电子版,放到 github 上了,总共200 多本经典的计算机书籍,包含 C 语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,能够 star 一下,下次找书间接在下面搜寻,仓库继续更新中~(花了一个多月的工夫整顿的,心愿对大家有帮忙,欢送 star~)

仓库继续更新中~

有须要的自取:

github 仓库:https://github.com/Tyson0314/java-books

码字不易,小伙伴们感觉有帮忙的话,点个赞呗 你的赞就是我创作的能源!

我是 @程序员大彬,定期会分享 Java 后盾硬核常识,欢送大家关注~


最初给大家分享一个 Github 仓库,下面有大彬整顿的 300 多本经典的计算机书籍 PDF,包含 C 语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生 等,能够 star 一下,下次找书间接在下面搜寻,仓库继续更新中~

Github 地址:https://github.com/Tyson0314/java-books

正文完
 0