凌晨起来肝的一篇 Java 学习路线,保证学弟学妹们大三大四的时候顺利找到实习 Offer(2)

简介: 凌晨起来肝的一篇 Java 学习路线,保证学弟学妹们大三大四的时候顺利找到实习 Offer

一、Java 基础


关于 Java 基础篇的学习,我这有一份 GitHub 上标星 115k 的 Java 教程:包括 Java 核心、Java 集合框架、Java 并发编程、 Java IO,非常全面,是我花了一周多时间手工整理的,非常辛苦,大家一定要珍惜。


太赞了,GitHub 上标星 115k+ 的 Java 教程

你也可以选择看书,我推荐《Java 核心技术卷》,分为上下两册,上册的难度较低,可以在短时间内刷完。下册涉及到的内容有流与文件(☆)、XML、网络(☆)、数据库编程、国际化、Swing、AWT、JavaBean、安全(☆)、脚本编译和注解处理、分布式对象、本地方法(☆),没有标星的内容我认为可以略过。


然后再看一看《Java 编程思想》,看自己是否能驾驭得了。因为思想的东西嘛,只有经过一些实践后才能有所感悟,否则就像王阳明一开始对着竹子格物一样,屁也格不出来,有了后面领军作战的经验,以及到地方上体验艰苦生活的感受后就开创了心学。


视频的话,可以看一下浙江大学教授翁恺老师的。在浙大,每年最受关注的内容之一就是永平奖的百万大奖会花落谁家。2018 年,获得永平杰出教学贡献奖的人,就是翁恺教授。


https://www.bilibili.com/video/BV1DJ411B7cG?p=3

翁恺教授可以说是浙大的网红教授,非常受欢迎,网络上各种风评都很不错。


我来列一下 Java 基础部分要掌握的知识点吧,可以按照这个顺序来学习,每学完一部分就打卡下。




初学阶段,强烈建议大家把书本上、视频上的代码都敲一遍。由于不像工作后,有大量的项目可以实践,所以不能得到及时的反馈,记笔记就显得特别的重要。另外,一定要分门别类保存好自己的 demo,以便以后可以快速得找得到,尤其是一些小套路,会很有用,积累得多了,可能就变成了自己的工具库。如果还有精力的话,可以把自己的学习心得分享出来,发表到博客上。


我之前就记了蛮多笔记的。像下面这些基础到不能再基础的知识点,我都有重新去学,并且尝试用自己的方式把这些知识点表达清楚。就这样不断的分享,不断的积累,我好像才真有点清醒的感觉。


什么是面向对象编程(OOP)?


为什么要将局部变量的作用域最小化?


Java到底是值传递还是引用传递?


如何比较 Java 的字符串?


再谈 Java 的继承和超类 Object


Java Serializable:明明就一个空的接口嘛


Java Socket:飞鸽传书的网络套接字


Java 网络编程:必知必会的 URL 和 URLConnection


Java面试官:兄弟,你确定double精度比float低吗?


请用面向对象的思想,谈一谈这次面试的过程


Java:接口和抽象类,傻傻分不清楚?


Java生成二维码分享海报


Java:优雅地处理异常真是一门学问啊!


教妹学 Java:晦涩难懂的泛型


教妹学Java:大有可为的集合


教妹学 Java:难以驾驭的多线程


Java 的核心目的和并发编程


Java:程序不过是几行代码的集合


如何理解 Java 中的继承?


吃人的那些 Java 名词:对象、引用、堆、栈


Java 的操作符——“=”号


害死人的自动递增,不偿命的自动递减


Java 流程控制语句


Java是通过什么机制来确保对象初始化呢?


Java 访问权限控制:public、private、protected


Java代码复用的三种常用方式:继承、组合和代理


Java:多态乃幸福本源


Java String,看这篇就够了


Java 数组,看这一篇就够了


HashMap,难的不在Map,而在Hash


Java枚举:小小enum,优雅而干净


Java注解(Annotation):请不要小看我!


Java I/O 入门篇


Java:并发不易,先学会用


我给学弟学妹们提供这样一个思路。


首先,我们需要一个思维导图(我一开始贴出来的那副),顺藤摸瓜,看看都有哪些知识点需要学习。


然后,我们不断地细分,切入这些零散的知识点,从书中、视频中、博客中找答案,吸收。


再然后,我们尝试按照自己的思考方式去分享这些知识点,不怕丢人,勇敢地做分享,力求让自己教会别人。


最后,和他人进行沟通,再通过实践去检验自己的学习成果。


这一套下来,不能说编程上有了突飞猛进,至少可以能突破瓶颈。


二、Java 框架


这部分也可以叫做 JavaWeb,但我更倾向于把这部分叫做 Java 框架,因为 JavaWeb 最初要学习的东西是 JSP,Servlet 这些东西,都已经被淘汰了,再去学这些知识只会浪费时间。有了大佬推荐了这部分内容,说 Spring 的那些系列框架也只是围绕这些知识点展开的,有一定的道理,但还是不太建议把时间花到这部分知识点上,要知道,技术是要更新换代的,好钢用在刀刃上。


做 Web 开发,是会涉及到前端的一些知识点的,尤其是在练手阶段,不会像进公司后一个萝卜一个坑,只负责后端或者只负责前端,往往需要全栈,但想从事 Java 后端开发的话,前端这些知识点还是尽量少花时间,尽量在练手阶段找同学合伙做项目,不要把自己搞成一个全栈,前端也是很累的一个活,需要时间的。


前端技术蛮多的,我举几个常见的,比如说:


Vue,前端框架

Vue-router,路由框架

Vuex,全局状态管理框架

Ant Design Vue,前端 UI 框架

Axios,前端 HTTP 框架

这还不包括 JavaScript+HTML+CSS 在内。


所以,学弟学妹们明白我的意思吗?如果一心想从事 Java 后端开发,尽量找喜欢前端的同学配合一起做练手项目,不仅能锻炼团队配合的默契,还能让自己有充分的时间学习更深度的 Java 后端技术。


从事 Java 后端开发的话,自然也就离不开 Spring 的系列框架。Spring 框架早已成为 Java 后端开发事实上的行业标准,如何用好 Spring ,也就成为 Java 程序员的必修课之一。同时,Spring Boot 和 Spring Cloud 的出现,可以帮助 Java 程序员更好地基于 Spring 框架及各种基础设施来快速搭建系统,可以说,它们的诞生又一次解放了Java 程序员的生产力。


所以,Spring Boot 和 Spring Cloud 已成为 Spring 生态中不可或缺的一环。想成为一名合格的 Java 后端工程师,Spring Framework、Spring Boot、Spring Cloud 这三者必须牢牢掌握。


首先来学 SSM(Spring+SpringMVC+MyBatis,企业级应用的必须品)的整合教程,哪怕是已经有了 Spring Boot,SSM 仍然是必学的,能打下更坚实的基础。


其中 Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。它可以装载 Bean(也就是 Java 中的类,包括 Service、Dao 里面的),有了控制反转这个机制,我们就不用在每次使用类的时候先初始化,用 new 关键字声明。另外,Spring 的 AOP、事务管理等等都是我们经常用到的。


SpringMVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。


MyBatis 是一个支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 对 JDBC 做了封装,它让数据库底层操作变的透明。 MyBatis 的操作都是围绕一个叫 sqlSessionFactory 的实例展开的,通过配置文件关联到各实体类的 Mapper 文件,Mapper 文件中配置了每个类对数据库所需进行的 SQL 语句映射。在每次与数据库交互时,通过 sqlSessionFactory 拿到 sqlSession,再执行 SQL 命令。


怎么学习这部分内容呢?我不太建议看书,因为这方面的书籍在豆瓣上的评分都不怎么高。


SSM 实战 100 集:https://www.bilibili.com/video/BV1NX4y1G7wx

Spring5框架最新版教程:https://www.bilibili.com/video/BV1Vf4y127N5

2021 最新版 SpringMVC 视频教程:https://www.bilibili.com/video/BV1qp4y1n7D1

2021 最新版 MyBatis 视频教程:https://www.bilibili.com/video/BV1c54y1a7GE

然后是 Spring Boot。Spring Boot 是由 Pivotal 团队提供的一个全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。说句人话就是,Spring Boot 不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。使用 Spring Boot有什么好处其实就是简单、快速、方便!我推荐看纯洁的微笑的博客,访问量在千万级别以上,影响了无数的初学者,我个人强烈推荐。


spring-boot - 纯洁的微笑博客


如果说已经掌握了 Spring、SpringMVC、MyBatis、Spring Boot 等内容,就有能力进行一些真正有用的应用项目开发了,可以拿下面这些项目作为练手,都是 GitHub 上一些星标超级多的优质项目,对增加项目经验有很大帮助。


1)电商秒杀


SpringBoot 完整电商系统 Mall:包括前台商城系统及后台管理系统,基于 SpringBoot+MyBatis 实现。


一套微服务商城系统 mall-swarm:采用了 Spring Cloud Greenwich、Spring Boot 2、MyBatis、Docker、Elasticsearch 等核心技术,同时提供了基于 Vue 的管理后台。


miaosha:秒杀系统设计与实现。


2)博客论坛


vhr:微人事是一个前后端分离的人力资源管理系统,项目采用 SpringBoot+Vue 开发。


halo([?he?lo?],意为光环,也可以当成拼音读(哈喽)):一个优秀的开源博客发布应用。


对于在校生来说,缺的就是实战经验,我推荐的这些练手项目可以很好的弥补这块短板,挑一个拿出来练就足够了哈,不需要全部都练。


三、Java 虚拟机和 Java 源码


先说 Java 虚拟机。


Java 虚拟机(JVM)是相对难吃透的一个环节,但却十分的重要,JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需要生成在 Java 虚拟机上能运行的目标代码,也就是字节码,就可以实现跨平台的诉求了。JVM 学得通透的话,可以说是非常牛逼的程序员了。


给大家推荐一个 B 站上的视频,分为《内存与垃圾回收篇》《字节码与类的加载篇》《性能监控与调优篇》三个篇章。


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

然后再推荐一本书《深入理解 Java 虚拟机》,周志明老师的。第三版在豆瓣上的评分直接来到了 9.5 分,可以说是强得一笔!这是一部从工作原理和工程实践两个维度深入剖析 JVM 的著作,是计算机领域公认的经典。



第一部分(第1章),主要讲 Java 虚拟机的历史

第二部分(第2~5章),详细讲解了 Java 的内存区域划分和垃圾收集器

第三部分(第6~9章),深入分析了class 文件结构、虚拟机的类加载机制

第四部分(第10~11章),程序编译和代码优化

第五部分(第12~13章),主要讲解了 Java 实现高并发的原理,包括线程与协程、锁优化等等。

总之一点,Java 虚拟机是成神之路上的巅峰之战!


再来说说 Java 源码。


面试的时候,面试官都特别喜欢问一些源码方面的知识,比如说 HashMap 的一些经典问题,加载因子为什么是 0.75?哈希冲突的时候,HashMap 是如何查找并确认元素的等等,这些问题只有通过源码才能得出比较准确的回答,对吧?


给大家推荐 B 站上一个视频,详细地介绍了如何阅读 Java 源码。


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

这里说一下 Java 源码阅读的顺序:


lang

util

io

nio

math

time

net

其中的重点:


String

Integer

ArrayList

LinkedList

CopyOnWriteArrayList

HashMap

TreeMap

LinkedHashMap

ConcurrentHashMap

CopyOnWriteArrayList


相关文章
|
5天前
|
人工智能 Java 大数据
Java程序员真的还有未来吗?如何备战2024春招?并狂拿大厂offer?
Java程序员还有未来吗? 嘿,小伙伴们,你们有没有想过Java程序员还有没有未来? 哈哈,别担心,我这就来给你们答疑解惑! 首先,让我们来看看Java的发展历程。自从Java诞生以来,它就一直是编程界的一颗璀璨明星。从Web应用到企业级应用,再到移动应用,Java无处不在。那么,现在呢?现在,随着人工智能、大数据和云计算的兴起,Java依然发挥着重要的作用。这些领域都需要大量的Java程序员来支持它们的发展。 那么,有人会说:“哎呀,现在出现了那么多新的编程语言和框架,Java程序员会不会被淘汰啊?”哈哈,别担心,Java程序员们!这些新语言和框架的出现并不会让Java消失。相反,它们
85 0
|
5天前
|
NoSQL Dubbo Java
唯品会三年,我只做了5件事,如今跳槽天猫拿下offer(Java岗)
xxx,都是好牌子,天天有三折” 是的,我在这家洗脑广告词公司里工作了整整三年时间,虽然是大家耳熟能详的互联网电商公司,但它的发展同其他新起互联网公司来说局限了很多,同时也早早遇到了瓶颈。好在三年前,我就开始规划了我自己的人生,所以在唯品会的三年时间里,我并未懈怠。
|
5天前
|
设计模式 消息中间件 算法
【实习总结】Java学习最佳实践!
【实习总结】Java学习最佳实践!
23 3
|
3天前
|
移动开发 搜索推荐 Java
Java如何支持函数式编程?,作为移动开发程序员应该怎样去规划自己的学习路线
Java如何支持函数式编程?,作为移动开发程序员应该怎样去规划自己的学习路线
|
3天前
|
算法 Java C++
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
|
4天前
|
Dubbo Java 应用服务中间件
Java外包是如何进入阿里的熬夜整理出Java后端学习路线
Java外包是如何进入阿里的熬夜整理出Java后端学习路线
|
5天前
|
Java 开发者
Java 学习路线 2024 最新版!
又对上次分享的 Java 学习路线进行了简单修改完善,并增加了免登录下载和黑夜模式,这里重发一下。 花了一个月零碎的时间,我根据当下 Java 后端求职和招聘的最新要求,对之前写的 Java 后端学习路线进行了全面的优化和改进。
|
5天前
|
JavaScript Java 关系型数据库
基于 java + Springboot + vue +mysql 大学生实习管理系统(含源码)
本文档介绍了基于Springboot的实习管理系统的设计与实现。系统采用B/S架构,旨在解决实习管理中的人工管理问题,提高效率。系统特点包括对用户输入的验证和数据安全性保障。功能涵盖首页、个人中心、班级管理、学生管理、教师管理、实习单位管理、实习作业管理、教师评分管理、单位成绩管理和系统管理等。用户分为管理员、教师和学生,各自有不同的操作权限。
|
5天前
|
Java 数据库连接 API
Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API
Java 是一种广泛使用的、面向对象的编程语言,始于1995年,以其跨平台性、安全性和可靠性著称,应用于从移动设备到数据中心的各种场景。基础概念包括变量(如局部、实例和静态变量)、数据类型(原始和非原始)、条件语句(if、else、switch等)、函数、循环、异常处理、数据结构(如数组、链表)和面向对象编程(类、接口、继承等)。深入学习还包括包、内存管理、集合框架、序列化、网络套接字、泛型、流、JVM、垃圾回收和线程。构建工具如Gradle、Maven和Ant简化了开发流程,Web框架如Spring和Spring Boot支持Web应用开发。ORM工具如JPA、Hibernate处理对象与数
95 3
|
5天前
|
设计模式 Java 微服务
Java高薪学习路线:解锁Java开发的黄金钥匙
Java高薪学习路线:解锁Java开发的黄金钥匙
157 0
http://www.vxiaotou.com