本文已经收录到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点起床,八点到图书馆开始学习,到了晚上十点,图书馆闭馆,才回宿舍,每天都是图书馆最后走的一批。回到宿舍,洗完澡,继续肝到十二点多(卷王!)。

img

很多人在问,大三才开始自学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


程序员大彬
468 声望488 粉丝

非科班转码,个人网站:topjavaer.cn