大家好,欢迎来到IT知识分享网。
本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~
可以点击此处领取资料哦 Java相关知识总结,包括Java基础、MySQL、Springboot、mybatis、Redis、rabbitMQ等等,面试必备!
大家好,我是小满~
我根据自己的自学经历,整理了一些学习过程中踩坑总结的经验,希望自学的小伙伴可以少走弯路:
注重实践,不要只是埋头看书,一定要多动手写代码。
刚开始自学的时候,可以不用太深究细节,不然可能会怀疑自己的学习能力。等到后面有了一定的基础,回过头来重新回顾,可能会恍然大悟,没有当初想的那么难。
可以适当加一些交流群,遇到不懂的知识点,多与其他人交流。
好了,下面给大家分享一下我的自学经验。
自学路线
首先看一下Java学习路线图:
在这里也给大家分享一份精心整理的大厂高频面试题PDF,小伙伴靠着这份手册拿过阿里offer,有需要的可免费自取 可以点击此处领取资料哦
Java
推荐书籍:
- 《head first java》
- 《JAVA核心技术卷》
head first系列的书籍讲解比较有趣,比较好理解。《JAVA核心技术卷》难度相对适中,内容也比较全面,部分章节(如Swing)可以跳过。
这些书籍,我已经整理了电子版,放到github上了,总共200多本经典的计算机书籍,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中(花了一个多月的时间整理的,希望对大家有帮助,欢迎star)
仓库持续更新中~
有需要的自取:
github仓库:可以点击此处领取资料哦 程序员常读书单整理,附下载地址,希望对你有帮助。书单包括设计模式、计算机网络、操作系统、数据库、数据结构与算法、架构、中间件等等。本仓库持续更新中,可以star一下,下次找书直接在上面搜索
视频推荐动力节点老杜的视频教程,1000w的播放量!视频总体上质量很不错,讲解挺详细,适合新手。跟着老杜的视频学下来,可以学到很多知识!
「链接」Java零基础教程视频(适合Java 0基础,Java初学入门)_哔哩哔哩_bilibili
再次强调:多敲代码!多敲代码!多敲代码!
学习编程就是看书加实践,要多动手,不然看过的知识点很快就会忘,而且多实践也会遇到很多坑,丰富经验。 可以到github上找一些项目练练手,通过做项目巩固知识,而且每实现一个功能之后,会有满满的成就感,也会激励你不断去学习。
Java基础知识主要有:
- 面向对象特性
- Java语言基础、循环、数组 ; 了解类和对象
- 掌握强制数据类型转换和自动类型提升规则;
- 常量如何声明及赋值;
- 循环的语法及作用;
- 数组的声明及定义;
- 掌握类的概念以及什么是对象。
- 抽象类和接口
- 数据类型、重写重载、封装继承多态
- 容器类Map/List/Set等
- 异常处理
- 反射机制
- 泛型
- 常用类:String、时间类
- 函数式编程
- Stream API
- Lambda 表达式
- IO流操作,多线程及Socket
- 掌握IO读写流相关的类,了解字节流,字符流和字符流缓冲区;
- 掌握线程的概念,多线程的创建、启动方式,锁和同步的概念及运用;
- 掌握Socket通信的概念,如何声明客户端服务端,如何完成双端数据通信
Java Web
Java Web是一系列技术的综合,也是大多数Java开发者的技术方向。有必要学习一下。这部分可以看看视频教程。
视频推荐HTML/CSS/JavaScript等跟前端相关的可以倍速观看。尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版_哔哩哔哩_bilibili
黑马程序员的Java web教程总体也不错黑马程序员JavaWeb全套基础教程,java web从入门到项目实战(IDEA版javaweb)_哔哩哔哩_bilibili
下面列举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框架最新版教程,视频刚出不久,内容也是与时俱进,值得学习!
【尚硅谷】Spring框架视频教程(spring超详细源码级讲解)_哔哩哔哩_bilibili
SpringMVC
SpringMVC是基于MVC架构模式的轻量级Web框架,对于初学者,需要掌握Web请求从发出到相应的这个过程,SpringMVC做了什么,还有MVC模式的思想。
视频推荐狂神说Java的SpringMVC最新教程。
【狂神说Java】SpringMVC最新教程IDEA版通俗易懂:【狂神说Java】SpringMVC最新教程IDEA版通俗易懂_哔哩哔哩_bilibili「链接」
Mybatis
MyBatis 是一款优秀的持久层框架,MyBatis 帮助我们做了很多事情:建立连接、操作 Statment、ResultSet、处理 JDBC 相关异常等,简化了开发流程。推荐书籍《深入浅出Mybatis》。
视频推荐狂神说的Mybatis最新完整教程,b站播放量最高,获得了很多小伙伴的一致好评。
【狂神说Java】Mybatis最新完整教程IDEA版通俗易懂_哔哩哔哩_bilibili
SpringBoot
学完 SSM,就要进一步学习 SpringBoot 了,相信很多人在学了 Spring 之后,面对各种各样的配置,想必都会头疼。而 SpringBoot 的出现解决了这个问题,SpringBoot 去除了大量的 XML 配置文件,简化了复杂的依赖管理。书籍推荐《Spring Boot实战》。
视频推荐尚硅谷雷神的2021版最新SpringBoot2权威教程。
2021版最新SpringBoot2_权威教程_请直接从P112开始学习新版视频–_雷丰阳_尚硅谷_哔哩哔哩_bilibili「链接」
SpringCloud
现在面试基本都会问到微服务相关的内容,最好了解下微服务相关的知识。服务注册与发现、负载均衡、服务降级、API网关等。推荐书籍《spring cloud微服务实战》
视频教程可以看看尚硅谷周阳老师的:
尚硅谷SpringCloud框架开发教程(SpringCloudAlibaba微服务分布式架构丨Spring Cloud)_哔哩哔哩_bilibili
并发
什么是并发编程,简单来说就是为了充分利用cpu,多个任务同时执行,快速完成任务。
并发编程的相关内容可以看看《JAVA并发编程实战》这本书。
视频推荐狂神说Java,很不错的视频:
【狂神说Java】JUC并发编程最新版通俗易懂_哔哩哔哩_bilibili「链接」
主要知识点有:
- 线程的概念以及案例
- 线程池原理
- 线程间通信方式
- 锁(synchronized、ReentrantLock)
- 并发工具类(CountDownLatch/CyclicBarrier/Semaphore)
- 原子类
- AQS
- Thread生命周期状态
- Java内存模型
Redis
用来缓存热点数据,加快读写速度,从而提高性能。现在Java后端的面试基本都会问到Redis。
书籍推荐《redis实战》和《redis设计与实现》。
视频推荐狂神说Java的Redis最新超详细版教程,不仅教你学Redis,还会教你学习的方式。
【狂神说Java】Redis最新超详细版教程通俗易懂_哔哩哔哩_bilibili「链接」
消息队列
消息队列是基础数据结构中FIFO的一种数据结构,用来解决应用解耦、异步消息、流量削锋等问题,可以实现高性能、高可用、可伸缩和最终一致性。
视频推荐黑马的RocketMQ教程和百知教育的RabbitMQ教程,两者挑一个学习就可以!
【编程不良人】MQ消息中间件之RabbitMQ:
【编程不良人】MQ消息中间件之RabbitMQ以及整合SpringBoot2.x实战教程,已完结!_哔哩哔哩_bilibili「链接」
黑马程序员Java教程RocketMQ系统精讲:
黑马程序员RocketMQ系统精讲,电商分布式消息中间件,硬核揭秘双十一_哔哩哔哩_bilibili「链接」
JVM
JVM也是面试经常会问的内容。Java开发者不用自己进行内存管理、垃圾回收,JVM帮我们做了,但是还是有必要了解下JVM的工作原理,这样在出现oom等问题的时候,才有思路去排查和解决问题。书籍推荐周老师的《深入理解Java虚拟机》。
视频推荐尚硅谷宋红康的全套课程,全套课程分为三个篇章:《内存与垃圾回收篇》、《字节码与类的加载篇》和《性能监控与调优篇》。
尚硅谷JVM全套教程:
尚硅谷宋红康JVM全套教程(详解java虚拟机)_哔哩哔哩_bilibili「链接」
JVM的基础知识:
- jvm内存结构(程序计数器、虚拟机栈、本地方法栈、堆、方法区、运行时常量池、直接内存)
- 类加载过程
- 双亲委派
- 垃圾回收算法
- 垃圾回收器
- 调优工具(jsp/jstack/jstat/jmap,了解即可)
计算机基础知识
学编程一定要打好计算机基础!
对于非科班同学来说,与科班同学最大的差距在于基本理论知识。如果你是非科班自学编程的,想要进入大厂,那么计算机基础知识一定不能落下。
每一个合格的程序员,应该要知道计算机体系的结构,内在的逻辑是什么,要有自己的思考。
总之,基本功非常重要!
操作系统
无论学习什么编程语言,和需要和操作系统打交道。如果对操作系统不熟悉,那么你在未来的学习路上将会遇到很多障碍,比如线程进程调度、内存分配、Java的虚拟机等知识,都会一头雾水。因此,只有把操作系统搞明白了,才能够更好地学习计算机的其他知识。
书籍推荐
入门级别书籍:《现代操作系统》、《操作系统导论》,进阶:《深入理解计算机系统》
强推《深入理解计算机系统》 这本书。
CSAPP是一本很好的书,糅合了计算机组成原理、操作系统、网络编程、并行程序设计原理等课程的基础知识。对于刚接触编程,或者像大彬这种非科班出身的人来说,这是一本指导性的书,它会告诉你,要想成为一个优秀的程序员,应当重点理解哪些计算机底层原理,告诉你应该在以后的自学过程中,应该重点学习哪些课程,比如操作系统和体系结构等。
视频教程推荐
Udacity的Advanced OS公开课:「链接」
还有国内不错的操作系统的课程,清华大学的公开课:操作系统 – 清华大学 – 学堂在线操作系统 – 清华大学 – 学堂在线
由清华大学两位老师向勇、陈渝讲授,同时配有一套完整的实验,实验内容是从无到有地建立起一个小却五脏俱全的操作系统,以主流操作系统为实例,以教学操作系统ucore为实验环境,讲授操作系统的概念、基本原理和实现技术,为学生从事操作系统软件研究和开发,以及充分利用操作系统功能进行应用软件研究和开发打下扎实的基础。
每个实验都有对应的知识点,学完理论知识后会有相应的练习,学习体验非常棒!
建议在开始学习这门课之前先熟悉C和汇编,对计算机组成有一定了解。
操作系统主要知识点:
- 操作系统的基础特征
- 进程与线程的本质区别、以及各自的使用场景
- 进程的几种状态
- 进程通信方法的特点以及使用场景
- 进程任务调度算法的特点以及使用场景
- 死锁的原因、必要条件、死锁处理。手写死锁代码、Java是如何解决死锁的。
- 线程实现的方式
- 协程的作用
- 内存管理的方式
- 虚拟内存的作用,分页系统实现虚拟内存原理
- 页面置换算法的原理
- 静态链接和动态链接
数据结构和算法
为什么学习数据结构与算法?对于计算机专业的同学来说,这门课程是必修的,考研基本也是必考科目。对于程序员来说,数据结构与算法也是面试、笔试必备的非常重要的考察点。
数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面。数据结构也蕴含一些面向对象的思想,故学好掌握数据结构对逻辑思维处理抽象能力有很大提升。
书籍推荐
《大话数据结构》和《算法图解》
《大话数据结构》 这本书最大的特点是,通篇以一种趣味方式来叙述,大量引用了各种各样的生活知识来类比,并充分运用图形语言来体现抽象内容,对数据结构所涉及到的一些经典算法做到逐行分析、多算法比较。这本书特别适合初学者。
《算法图解》是非常好的入门算法书,示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。
很多学Java的同学,可能会问有没有Java版本的数据结构和算法书籍?
当然有的,可以看看《数据结构与算法分析 java语言描述》这本书,用Java语言描述各种数据结构和算法,对于Java开发者来说,更容易理解。
视频推荐
浙大陈越姥姥的数据结构课程:
浙江大学数据结构 陈越_哔哩哔哩_bilibili「链接」
浙江大学陈越姥姥和何钦铭教授联合授课,非常经典的课程。姥姥我的偶像!
小甲鱼的数据结构和算法课程:【C语言描述】《数据结构和算法》_哔哩哔哩_bilibili「链接」
数据结构与算法主要学习以下内容:
- 基本数据结构(数组、链表、栈、队列等)
- 树(二叉树、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》这本书,值得一看。
视频推荐
国内中国人民大学王珊老师的《数据库系统概论》:【公开课】数据库系统概论(王珊老师)(完结)_哔哩哔哩_bilibili「链接」
MySQL基础知识:
- 增删改查
- 事务特性、隔离级别
- 索引原理、优化
- b+树
- 最左匹配原则
- 存储引擎
- MVCC
- 执行计划
- 分库分表
- 日志,bin log/undo log/redo log
- …
计算机网络
计算机网络这门课需要学习计算机网络的概念、原理和体系结构,知道计算机分层结构,物理层、数据链路层、介质访问子层、网络层、传输层和应用层的基本原理和协议,掌握以 TCP/IP 协议族为主的网络协议结构,并且了解网络新技术的最新发展。
书籍推荐
《计算机网络自顶向下方法》
这本书是经典的计算机网络教材,采用作者独创的自顶向下方法来讲授计算机网络的原理及其协议,自第1版出版以来已经被数百所大学和学院选作教材。书中从应用层讲起,然后展开,摆脱了从物理层开始的枯燥,直接接触应用实例,更能吸引读者的兴趣。而且,书上很多例子举的很好,生动形象。
视频推荐
视频推荐中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程。这门课是2020年秋科大自动化系本科课程录制版,可与中科大学生一起完成专业知识的学习。「链接」
另外还可以看看哈尔滨工业大学李全龙老师的计算机网络课程:哈尔滨工业大学 计算机网络_哔哩哔哩_bilibili「链接」
计算机网络核心知识点:
- 网络分层结构
- TCP/IP
- 三次握手四次挥手
- 滑动窗口、拥塞控制
- HTTP/HTTPS
- 网络安全问题(CSRF、XSS、SQL注入等)
linux
Linux 系统已经渗透到 IT 领域的各个角落,作为一名 IT 从业人员,不管你是专注于编程,还是专注于运维,都应该对 Linux 有所了解,甚至还要深入学习,掌握核心原理。
至少要熟悉常用的Linux命令。书籍推荐《鸟哥的linux私房菜》。
视频推荐:
尚硅谷Linux教程(千万级学习人次,好评如潮)_哔哩哔哩_bilibili
设计模式
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。对于具有丰富的开发经验的开发人员,学习设计模式有助于了解在软件开发过程中所面临的问题的最佳解决方案;对于那些经验不足的开发人员,学习设计模式有助于通过一种简单快捷的方式来学习软件设计。
为什么要学习设计模式:
- 设计模式是从许多优秀的软件系统中总结出能够实现可维护性、复用的设计方案,使用这些方案可以避免做一些重复性的工作
- 合理使用设计模式并对设计模式的使用情况进行文档化,将有助于别人更快地理解系统
- 学习设计模式将有助于初学者更加深入地理解面向对象思想
设计模式分类:
1.1 创建型模式
创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将模块中对象的创建和对象的使用分离。
创建型模式包括工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
1.2 结构型模式
结构型模式(Structural Pattern)描述如何将类或者对 象结合在一起形成更大的结构,就像搭积木,可以通过 简单积木的组合形成复杂的、功能更为强大的结构。
结构型模式包括适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式
1.3 行为型模式
行为型模式(Behavioral Pattern)是对在不同的对象之间划分责任和算法的抽象化。行为型模式不仅仅关注类和对象的结构,而且重点关注它们之间的相互作用。
行为型模式包括策略模式、模板模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式等。
推荐秦疆老师基于Java讲解的23种设计模式视频教程。
「链接」
工具
Git
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
视频推荐:『Git』知道这些就够了_哔哩哔哩_bilibili「链接」
Maven
Maven 是一个软件项目管理工具,可以对 Java 项目进行全自动构建,管理项目所需要的依赖。Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目。
视频推荐:
黑马程序员Maven全套教程,maven项目管理从基础到高级,Java项目开发必会管理工具maven_哔哩哔哩_bilibili「链接」
docker
Docker 是一个开源的应用容器引擎。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。
Docker的应用场景
- Web 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
视频推荐广州云科的docker入门教程,非常详细。
Docker 1小时快速上手教程,无废话纯干货_哔哩哔哩_bilibili
项目
很多同学初学Java都会遇到一个问题,不知道去哪里找Java的项目练手。以前我也遇到这个问题,现在在这里分享下一些比较值得学习的项目。
首先给大家推荐几个Java项目的视频教程,都是B站上的视频,风评很好,讲解也非常详细,有兴趣的可以看一下~
尚硅谷尚筹网Java项目实战开发教程:
尚硅谷尚筹网Java项目实战开发教程(含SSM框架,微服务架构,封捷主讲)_哔哩哔哩_bilibili「链接」
尚硅谷Java微服务+分布式+全栈项目【尚医通】
尚硅谷Java微服务+分布式+全栈项目【尚医通】_哔哩哔哩_bilibili「链接」
Java Web项目实战-畅购商城:
2019最新JAVA项目实战_哔哩哔哩_bilibili「链接」
最后给大家分享一个Github仓库,上面有我整理的300多本经典的计算机书籍PDF,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/92694.html