到TIC,Java应该怎么学,今天就给你来个保姆级教程
Java是一门非常优秀的面向对象编程语言.Java有完整的生态,岗位需求量大,是后台开发、安卓开发、大数据开发的主流编程语言,因此学习资源也很丰富,值得学习!有些大厂虽然不需要员工写Java,但是仍然会招Java开发岗,工作前会进行别的语言的培训,比如伟大的Go语言,总体上来看,就业市场上Java开发的岗位数量还是遥遥领先的,因此推荐想本科就业的同学们学习Java,如果后面想转去学其他语言也可以参照之前学过的知识去理解别的语言,那么接下来进入正题.
在学习所有知识点之前,首先需要了解大厂一般最喜欢考哪些知识点。一般来说,多线程 > mysql && redis > jvm > java基础 > spring系列 > mybatis
特别的,字节腾讯比较爱考计算机网络和操作系统。
注意:严格意义上,大厂面试时并没有说一定会考哪些知识点,大部分面试官还是喜欢围绕简历上项目的技术栈来展开提问。
- Java 特点
- 环境搭建
- IDEA 开发工具
- 新建项目
- 运行调试
- 界面配置
- 插件管理
- Java 基础语法 - 数据类型
- 流程控制
- 数组
- 面向对象 - 方法
- 重载
- 封装
- 继承
- 多态
- 抽象类
- 接口
- 枚举
- 常用类
- String
- 日期时间
- 集合类
- 泛型
- 注解
- 异常处理
- 多线程(重点)
- IO 流
- 反射
基础语法很重要,一开始可能记不住,先别急着背,后面做项目做得多了就自然写的熟练了
再不济IDEA的Tab和通义灵码的自动补全还是非常好用的
(基础学习请不要使用ai插件!!!请不要拿使用ai插件!!!自己深入理解基础部分)
上述内容比较全面,但是平时写业务逻辑代码的时候一些基础语法用的不是很多,就比如最后三个,多线程,IO流和反射,可以做一些了解,等真正遇到这方面问题的时候再学也不迟.
上述内容在大家学完C语言且学完面向对象程序设计的基础之上,可以直接刷黑马的Java从入门到起飞2倍速速通
-
坚持:初学一门语言时,一定要持续学习,不能中断!
-
实践:想要学好编程,一定要多敲代码!建议先跟着书上的例子敲一遍代码,然后试着自主编写代码,并完成课后练习。
-
万事开头难:不理解代码也没关系,可以学习 Debug 后,一行一行地打断点执行,查看程序的执行过程。千万不要觉得麻烦,养成习惯后真的能节省很多重复学习的时间。
企业中大部分业务数据都是用关系型数据库存储的,因此数据库是后台开发同学的必备技能,其中 MySQL 数据库是目前的主流
- 基本概念
- MySQL 搭建
- SQL 语句编写
- 约束
- 设计数据库表
MySQL可以先不用学的那么深,对付一般的业务逻辑只用学这些就够了,剩下还有些高端操作可以等学到后面再深入了解,大致知识点如下
- 索引
- 事务
- 锁机制
- 性能优化
其中,SQL 语句编写和设计数据库表这两个能力一定要有
比如让你做一个学生管理系统,你要能想到需要哪些表,比如学生表,班级表;每个表需要哪些字段,字段类型
这就要求大家多写 SQL,多根据实际的业务场景去练习设计能力
在这一部分你可以学到耳熟能详的SpringBoot框架,还可以通过网络通信实现前后端联动,后端开发从这里才刚刚开始.
- 描述:简化 Spring 应用的初始搭建以及开发过程,提高效率
- 常用注解
- 资源整合
- 高级特性
- 本地热部署
- 描述:数据访问框架,操作数据库进行增删改查等操作
- 增删改查
- 全局配置
- 动态 SQL
- 描述:Spring 的安全管理框架
- 用户认证
- 权限管理
- 相关技术:Shiro
- 描述:项目管理工具
- 构建
- 依赖管理
- 插件
- 配置
- 子父工程
- 多模块打包构建
- 描述:SSM包括了Spring、SpringMVC还有Mybatis,其中Spring和SpringMVC是当前企业开发必用框架之一,MyBatis则是与数据库交互的持久层框架之一,由于易用性和轻便性,则被大多互联网公司所选用。SSM基础框架的掌握是当前企业开发最基本的要求,也是其他技术学习和进阶的必要基础。
- Spring框架的核心概念(IOC/DI),IOC容器的基本操作
- 整合Mybatis
- AOP
- SrpingMVC
-
由于技术较多,且框架之间存在一定的联系,因此建议大家看同一系列的视频教程,以保证学习内容的连续以及体验上的一致。
-
学这些技术的时候, 千万不能懒 !一定要多记笔记,并且跟着老师写代码。原理部分不要太过纠结,先以能跟着敲出代码、写出可运行的项目为主,有些东西做出来也能帮助你更好地理解理论。
-
这里建议大家直接去看黑马的JavaWeb开发教程,视频前面前端的部分可以先不看,但是当你学完后面所有知识后一定要拐回来看完这块,这样你才能完全理解前后端的关系,还有以后该怎样和前端的工程师进行对接.
-
在学习完JavaWeb过后,你已经能够基本使用Spring框架来开发后端程序了,此时可以看黑马最新版的SSM课程,更深入地了解Spring框架的核心思想(如IOC和AOP等)及使用,巩固好基础.
学完上述内容之后,你就可以做一些小项目了,但是做项目有一个东西绕不开,那就是Git.
此前大家可能听说过 GitHub,一流的代码开源托管平台。
Git 和它可不一样,是一个版本控制工具,可以更好地管理和共享项目代码,比如把自己的代码传到 GitHub 上、或者从远程下载。
无论自己做项目、还是团队开发,Git 都是现在不可或缺的神器。
- 区分 Git 和 GitHub
- 工作区
- 分支
- 代码提交、推送、拉取、回退、重置
- 分支操作
- 代码合并、解决冲突
我们的例会也有讲过这些内容。
-
每个命令跟着敲一遍,有个大致的印象,会用即可。
-
建议平时大家可以多把自己的代码使用 Git 命令上传到 GitHub 上,用的多了自然就熟悉了。
刚学完JavaWeb和Git,知识点肯定会忘得很快,并且从开始到现在你并没有开发过任何一款软件,这时候你可以选择去打一场比赛,或者跟着视频做一个项目出来.
跟着视频做的话推荐大家做苍穹外卖 Java Spring Boot 入门级项目,适合刚学完框架的同学.通过这个项目你可以熟练些CRUD,初步了解Redis,开发登录校验逻辑,使用SpringTask,使用WebSocket,使用AOP等等一系列技术.
在开发中没有什么是加一层中间件不能解决的,如果解决不了就再加一层.
第一个推荐大家学的中间件就是Redis
缓存是高并发系统不可或缺的技术,可以提高系统的性能和并发,而 Redis 是实现缓存的最主流技术,因此它是后台开发必学的知识点,也是面试重点。
- Redis 基础
- 什么是缓存?
- 本地缓存
- Caffeine 库
- 多级缓存
- Redis 分布式缓存
- 数据类型
- 常用操作
- Java 操作 Redis
- Spring Boot Redis Template
- Redisson
- 日志持久化
- 缓存(Redis)应用场景
- 数据共享
- 单点登录
- 计数器
- 限流
- 点赞
- 实时排行榜
- 分布式锁
- 缓存常见问题
- 缓存雪崩
- 缓存击穿
- 缓存穿透
- 缓存更新一致性
- 主从模型搭建
- 哨兵集群搭建
-
学会如何简单地使用缓存并不难,和数据库类似,无非就是调用 API 对数据进行增删改查。
-
因此,建议先能够独立使用它,了解缓存的应用场景;再学习如何在 Java 中操作缓存中间件,并尝试和项目相结合,提高系统的性能。
-
跟着视频教程实操一遍即可,可以等到面试前再去深入了解原理和高级特性。
-
这时候我们就可以请出秋招第二大金刚项目 黑马点评 这个项目可以带领你由浅入深学习Redis,从基础的set get到项目实战教你缓存一致性和分布式锁,一步步带你了解高并发,高可用的解决方案
消息队列是用于传输和保存消息的容器,也是大型分布式系统中常用的技术,主要解决应用耦合、异步消息、流量削锋等问题。后台开发必学,也是面试重点。后期在微服务项目中,服务之间的调用也可以通过消息队列,实现削峰填谷.
- 消息队列的作用
- RabbitMQ 消息队列
- 生产消费模型
- 交换机模型
- 死信队列
- 延迟队列
- 消息持久化
- Java 操作
- 集群搭建
- 相关技术:Kafka、ActiveMQ、TubeMQ、RocketMQ
-
和缓存一样,学会如何使用消息队列并不难,无非就是调用 API 去生产、转发和消费消息。
-
因此,建议先能够独立使用它,了解消息队列的应用场景;再学习如何在 Java 中操作消息队列中间件,并尝试和项目相结合,感受消息队列带来的好处。
-
这里我建议初学者先学习 RabbitMQ,或者说这块可以先暂时放下,等后面深入了解微服务架构之后再来学习也可以。
中间件还有很多,大家可以先跳过部分,直接进入后面内容的学习
将应用和环境进行封装,相互隔离、独立部署、便于移植,提高安全性、提高开发和维护效率。
便于实现微服务、持续集成和交付。
- 容器概念
- 镜像
- 部署服务
- Dockerfile
- Docker Compose
- K8S(Kubernetes)
业务上云是趋势,但是对于开发同学来说,会用 Docker / K8S 部署项目和服务就行。实际工作中,企业一般都有现成的平台直接用,面试考察的也不多,不用花太多时间。
随着互联网的发展,项目越来越复杂,单机且庞大的巨石项目已无法满足开发、运维、并发、可靠性等需求。
因此,后台架构不断演进,可以将庞大的项目拆分成一个个职责明确、功能独立的细小模块,模块可以部署在多台服务器上,相互配合协作,提供完整的系统能力。
换言之,想做大型项目,这块儿一定要好好学!
- 微服务概念
- Spring Cloud 框架
- 子父工程
- 服务注册与发现
- 注册中心 Eureka Nacos
- SpringLoadBalance负载均衡
- Feign 服务调用
- SpringCloudGateway 微服务网关
- NacosConfig 分布式配置中心
- 分布式服务总线
- Spring Cloud Alibaba
- Nacos 注册、配置中心
- OpenFeign 服务调用
- Sentinel 流控
- Seata 分布式事务
-
这里建议大家直接学习SpringCloud,SpringCloud依旧是Spring的框架,SpringCloud全家桶配件齐全,可以让你快速上手微服务,学完之后也可以去学习其他微服务框架,比如Dubbo,RPC
-
这部分内容的学习,原理 + 实践都很重要,也不要被各种高大上的词汇唬住了,都是上层(应用层)的东西,基本没有什么算法,跟着视频教程学,其实还是很好理解的。
-
分布式相关知识非常多,但这里不用刻意去背,先通过视频教程实战使用一些微服务框架,也能对其中的概念有基本的了解。
-
大厂面试的时候很少问 Spring Cloud 框架的细节,更多的是微服务以及各组件的一些思想,比如网关的好处、消息总线的好处等。
这里还是请出黑马的赵老师来教大家 微服务开发与实战
JVM即Java虚拟机,它的职责是运行Java字节码文件。我们常听到Java一个很大的优势就是“一次编译,随处运行”,而JVM在这种“跨平台性”上起到了很大的作用。并且了解JVM的组成和工作原理,能够帮助我们写出性能更加优秀的Java代码、更快定位Java程序的报错以及回答大厂的面试题。
- JVM组成
- 内存区
- 垃圾回收机制
- 类加载过程
- 重要JVM参数
- JVM监控和故障处理
如果只是为了面试并且时间紧张,可以直接看八股文中的内容,如JavaGuide;如果时间宽裕,可以跟着相关的课程学(如黑马的JVM实战课程),只要亲自动手去实践能才能理解地更加透彻.
设计模式是软件开发中解决一类问题的通用方法。
使用设计模式能让你写出更优雅、可维护的代码,也正因如此,很多框架源码都用到了设计模式,你不学很难看懂。
知识点就是OOP七大原则和22个设计模式
先理解概念,了解每个设计模式的特点和应用场景,再多加练习,运用到实际项目。这部分内容其实在实战中框架已经帮你实现了不少,自己设计代码的时候如果硬是要加几个设计模式的话很容易过度设计,因此作用不是很大,了解就好.
22种设计模式
持续追求技术的深度和广度,培养自己的 核心竞争力 和 不可替代性 ,学无止境!