您的位置 首页 java

Java学习线路图

Java学习线路图

Java课程学习大纲

目录

⼀、编程基础和Java基础

1. 计算机原理

2.Java基础

3. JVM 基础

4.容器

⼆、操作系统与计算机网络

1.操作系统

2.计算机⽹络

三、数据结构与算法

1.数据结构

2.算法

四、前端知识

五、数据库

六、常用工具

七、常用框架学习

八、多线程

1.Java多线程知识基础:

2.Java多线程知识进阶:

九、分布式

十、深入学习

⼀、编程基础和Java基础

1.计算机原理

CPU 、内存、硬盘、网卡等。

2.Java基础

面向对象、类和对象的关系、类的特性、接口、容器、异常、 泛型 、反射、注解、I/O、图形化。

3.JVM基础

编译、加载、执行原理,内存管理,垃圾回收等。

4.容器

Nginx Tomcat 等。

⼆、操作系统与计算机网络

1.操作系统

操作系统的基础知识、 线程 和进程、并发、内存管理和调度、I/O原理。

Linux 的常用命令,比如:目录切换命令、目录操作命令、文件的操作命令、压缩或者解压文件的命令等等。

2.计算机⽹络

TCP/IP、HTTP和 HTTPS 、DNS、IP地址、互联网、局域网、VPN、 CDN 、GET和POST等。

三、数据结构与算法

1.数据结构

字符串 、数组、 链表 二叉树 、堆、栈、队列、哈希。

2.算法

查找、排序、谈心、分治、回溯、动态规划。

如果你想进入大厂的话,我推荐你在学习完Java基础之后,就开始每天抽出⼀点时间来学习算法和数据结构。为了提⾼自⼰的编程能力,你也可以坚持刷Leetcode。就目前国内外的大厂面试来说,刷Leetcode可以说已经成了不得不走的⼀条路。

四、前端知识

这⼀步主要是学习前端基础( HTML CSS 、JavaScript),当然 BootStrap Layui 等等比较简单的前端框架你也可以了解一下。

网上有很多这方面资源,我只推荐⼀个⼤部分初学这些知识都会看的网站:
,这个网站用来回顾知识也很不错。建议先把HTML、CSS、JS的基础知识过⼀遍,然后通过⼀个实际的前端项目来巩固。

五、数据库

基本的增删改查, SQL 命令,索引、存储过程这些都需要学⼀下。

六、常用工具

非常重要!

IDEA :熟悉基本操作以及常用快捷。

Maven :建议学习常用框架之前可以提前花半天时间学习⼀下Maven的使用。

Git :基本的Git技能也是必备的,试着在学习的过程中将自⼰的代码托管在 Github 上。(Git入门)

Docker :学着用Docker安装学习中需要用到的软件比如MySQL,这样方便很多,可以为你节省不少时间。(Docker入门)利用常用框架可以极⼤程度简化我们的开发工作。学习完了常用工具之后,我们就可以开始常用框架的学习啦!

数据库工具:熟悉基本操作。

七、常用框架学习

Struts2 (可不用学)、 Spring 、SpringMVC、 Hibernate Mybatis shiro 等框架的使用,(可选)熟悉Spring原理(大厂面试必备),然后很有必要学习⼀下SpringBoot,学好SpringBoot真的很重要。

很多公司对于应届⽣都是直接上手SpringBoot,不过如果时间允许的话,我觉得可以简单把Spring、SpringMVC过⼀遍,这个完全不影响你学习最重要的SpringBoot。关于SpringBoot,推荐看⼀下笔主开源的SpringBoot教程(SpringBoot核心知识点总结。基于SpringBoot 2.19+)。

Spring真的很重要!一定要搞懂 AOP 和IOC这两个概念。Spring中 bean 的作用域与⽣命周期、SpringMVC工作原理详解等等知识点都是非常重要的,一定要搞懂。推荐看文档+视频结合的⽅式,中途配合实战来学习。

⼋、多线程

多线程 这部分内容可能会比较难以理解和上手,前期可以先简单地了解一下基础,到了后面有精⼒和能⼒后再回来仔细看。

学习完多线程之后可以通过下面这些问题检测自己是否掌握。

1.Java多线程知识基础:

1.什么是线程和进程?请简要描述线程与进程的关系,区别及优缺点?

2.说说并发与并行的区别?为什么要使用多线程呢?

3.使用多线程可能带来什么问题?

4.说说线程的 生命周期 和状态?

5.什么是上下文切换?什么是线程死锁?如何避免死锁?

6.说说sleep()方法和wait()方法区别和共同点?

7.为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?

2.Java多线程知识进阶:

synchronized 关键字:

1.说⼀说自⼰对于synchronized关键字的了解;

2.说说自⼰是怎么使用synchronized关键字,在项目中用到了吗;

3.讲⼀下synchronized关键字的底层原理;

4.说说JDK1.6之后的synchronized关键字底层做了哪些优化,可以详细介绍⼀下这些优化吗;

5.谈谈synchronized和ReentrantLock的区别。

volatile 关键字:

1.讲⼀下 Java内存模型

2.说说synchronized关键字和volatile关键字的区别。

ThreadLocal

1.简介;

2.原理;

3.内存泄露问题。

线程池

1.为什么要用线程池?;

2.实现Runnable接口和Callable接口的区别;

3.执行execute()方法和submit()方法的区别是什么呢?;

4.如何创建线程池。

Atomic原子类:

1.介绍一下Atomic原子类;

2.JUC包中的原子类是哪4类?;

3.讲讲AtomicInteger的使用;

4.能不能给我简单介绍一下AtomicInteger类的原理。

AQS:

1.简介;

2.原理;

3.AQS常用组件。

九、分布式

学习 Dubbo Zookeeper 来实现简单的分布式服务学习 Redis 来提高访问速度,减少对MySQL数据库的依赖;学习 Elasticsearch 的使用,来为我们的网站增加搜索功能学习常见的消息队列(比如 RabbitMQ Kafka )来 解耦 我们的服务;

我推荐你可以通过一个分布式项目来学习。觉得应该是掌握这些知识点比较好的一种方式了,另外,推荐边看视频边自己做,遇到不懂的知识点要及时查阅网上博客和相关书籍,这样学习效果更好。一定要学会拓展知识,养成自主学习的意识。

十、深入学习

可以再回来看⼀下多线程方面的知识,还可以利用业余时间学习⼀下NIO和Netty,这样简历上也可以多点东西。如果想去大厂,JVM的⼀些知识也是必学的(Java内存区域、 虚拟机 垃圾算法、虚拟垃圾收集器、JVM内存管理)。

另外,现在 微服务 特别火,很多公司在面试也明确要求需要微服务方面的知识。如果有精力的话可以去学⼀下 SpringCloud 生态系统微服务方面的东西。微服务的概念庞大,技术种类也很多,下面是我总结的一些关于微服务比较重要的知识,选学。

SpringCloudAlibaba是很值得学习的:Sentinel:A lightweight powerful flow control component enabling reliability and monitoring for microservices.(轻量级的流量控制、熔断降级Java库)。

Dubbo: Apache Dubbo是⼀个基于Java的高性能开源RPC框架。

Nacos:Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos可以作为Dubbo的注册中心来使用。

Seata:Seata是⼀种易于使用,高性能,基于Java的开源分布式事务解决方案。

RocketMQ: 阿里巴巴 开源的⼀款高性能、高吞吐量的分布式消息中间件。

文章来源:智云一二三科技

文章标题:Java学习线路图

文章地址:https://www.zhihuclub.com/190956.shtml

关于作者: 智云科技

热门文章

网站地图