从业十年,我想根据自己的行业经验给大家提一些建议。
跟其他行业相比,做Java开发的岗位确实算是高薪职业,我们那个时候起步的工资并不高,而看现在很多毕业的学生薪资都是8k、10k起步,工资越来越高是肯定的,因为现在都伴随着通货膨胀。
目前Java程序员如果拥有两年开发经验,他的薪资范围最少都要在15K这个阶段,所以就导致来转行学习Java的人越来越多,毕竟现在做其他很多行业都赚不到什么钱。
但是高薪并没有像大家想的那样容易拿到,很多人都认为身边的朋友有做Java开发月薪都几万几万的,但是我们往往忽略了他们在学习技术上付出了多少辛苦,只是看到了别人表面的风光而已。但我认为问题的关键还是很多人忽略了学习Java语言的难度,想转行学习Java的人虽然不少,但最后真正能成功的也就是百分之一二的概率,这些人往往学习能力强,有强烈的赚钱欲望,并且不怕吃学习的苦,肯付出时间去研究学习。而很多人都想走捷径,以为参加个培训班就可以高薪就业,有这样想法的人都想的太简单了,线下培训班的水有多深,懂行的人都明白。
我用了十五天的时候整理了今年我认为Java就业的主流技术栈大纲,由于内容实在太多,我就能弄成了一张长图,私信哪吒,直接管我要。
一、自学的初学者学习Java过程中的误区
1、学习Java之前没有制定合理系统的学习规划,不了解初级就业水平应该学习什么主要技术,造成学习没有目标,很盲目的学,后面造成的结果就是对自己产生怀疑,最终放弃。
2、学习的内容过于陈旧,都是已经被企业淘汰的方法,无法满足企业招聘的标准,在面试中很难回答上面试官的问题,最终找不到工作。
3、整个过程的学习效率很低,罪魁祸首是遇到问题无法在短时间内解决,严重拖延了后面的学习,浪费了很多时间。当这类问题多的时候,学习者就会萌生退缩的想法,因为总是遇到坎坷,人的内心都受不了,最终放弃学习。
4、不了解学习编程最终要干什么,像无头苍蝇一样没有方向。其实学习编程最终的目的是为了开发出好的软件产品,最终给大众使用从而方便生活,但很多学习者并不知道这点。
5、无脑的刷视频,却很少写代码,不懂得最终要把学到的知识落实到键盘上编程代码。总是认为自己会了,但是让他写却写不出来,这是由于学习方法错误造成的,所谓的学了其实和没学并没有太大区别。
二、正确的学习步骤如下
1、 首选要去了解清楚初步的就业标准是什么,应该学习什么内容,把整个过程的目标明确。
2、 规定好自己每天在什么时间段进行学习,每天的这个时间只留给自己学习Java,不要被其他事情所干扰。
3、 一天的时间内,只学两个小时的新知识,其他的时间要进行大量的代码编写,提高自己编码的能力,把大量的时间都用在写代码中。
4、 就目前的就业标准来看,我之前带我弟弟学习Java,大概用了150天的时间,带他把Java就业的主要知识学会,在北京找到了一份11K的工作(仅代表本人个人收益)。对于那些工作的人来说,能坚持学习150天并不容易,所以这非常考验人的毅力。
5、如果你遇到了解决不了的难题,立刻先去百度进行查找,由于目前Java技术的生态圈比较成熟,大部分的问题在百度都可以解决。如果你解决不了,可以加一些氛围好的Java交流学习群,多认识一些大佬可以让你少走很多弯路,即使花点钱也是值得的,毕竟能就业后一个月的工资都不低。
6、 要对项目有所重视,学习编程不做项目的人与没学过的人并没有太大额差别,所以在每个阶段学完后,必须要进行项目的练习,如果你不知道去哪里找项目实战,可以向我索要。
7、 当你学完所有主流框架后,要把之前的项目都重做一遍,用框架搭建至少两个大型项目才能去找工作,没有项目作品,别想着有公司会要你。
8、 学完全部内容,恭喜你距离成功之差最后一步,尽快入职一家公司,在工作中才是提升最快的。
三、Java技术栈的东西还是非常多的,下面分享一下学习大纲。
- 2023最新最全的Java学习路线总结,从入门到就业(大概六个月);
- 给出目标、学习建议、关键知识点、最优资源以及各类资源推荐;
- 按学习的先后顺序,分阶段,有时间规划的持续学习。
四、Java基础
所谓基础不牢,地动山摇。有一个好的基础,才是Java学习的关键。
前期准备
- 开发环境:jdk1.8
- 开发工具:IDEA,不建议使用eclipse
1、Java 基础
【Java基础知识 1】编程语言类型有哪些?我心中的TOP1编程语言,什么是java跨平台性?
【Java基础知识 12】Java对象、类、抽象类、构造函数
【Java基础知识 13】JDK 和 JRE 、final 与 static 、堆和栈
【Java基础知识 16】禁止使用Lombok,在Lombok的加持下,“小狗”.equals(“老狗”) = true
【Java基础知识 18】java接口和抽象类的异同,default关键字
【Java基础知识 20】Java初始化、构造器、对象创建的过程
【Java基础知识 23】缓冲区数据结构bytebuffer
【Java基础知识 30】Date类、Calendar类、date转calendar
【Java基础知识 32】this关键字、SringBuilder中的this
【Java基础知识 33】Java 中的 static 关键字详解
【Java基础知识 35】一文搞定Java IO流,输入流、输出流、字符流、缓冲流,附详细代码示例
【Java基础知识 36】选择最适合自己的NIO, 一探流技术
【Java基础知识 37】Java内部类、java内部类的作用
【Java基础知识 41】GET和POST的区别、堆和栈的区别
【Java基础知识 42】finalize、引用计数、JVM停止复制、JVM即时编译器
【Java基础知识 43】Java 字节码,javap命令,解读字节码清单
【Java基础知识 44】jd-gui反编译class文件,解决jd-gui中文乱码问题
【Java基础知识 46】GET和POST的区别,java模拟postman发post请求
【Java基础知识 47】一文读懂JVM类加载机制过程及原理
【Java基础知识 48】Java日志框架,Log4j日志级别
【Java基础知识 49】探索Apache HttpClient超时时间如何设定?
3、Java8新特性
【Java8 新特性 2】java8 lambda表达式进阶
【Java8 新特性 5】Java 8 stream的详细用法
4、Java集合
【Java集合 2】Java数组、java数组初始化、java数组赋值
【Java集合 9】Java集合,Collection接口,Iterator接口
【Java集合 10】Java链表、散列表、HashSet、TreeSet
【Java集合 11】Java映射Map、弱散列映射WeakHashMap
【Java集合 12】LinkedHashSet、LinkedHashMap、EnumSet、EnumMap
【Java集合 14】Java中的ConcurrentHashMap中为什么不能存储null?
【Java集合 15】ArrayList的线程安全类CopyOnWriteArrayList
5、Java高并发
【Java 多线程 5】Java多线程之Executor框架
【Java 多线程 7】通过socket、多线程、动态代理、反射 实现RPC远程方法调用
【Java 多线程 8】一篇文章带你彻底吃透Java NIO
Java高并发编程实战2,原子性、可见性、有序性,傻傻分不清
Java高并发编程实战3,Java内存模型与Java对象结构
Java高并发编程实战4,synchronized与Lock底层原理
Java高并发编程实战6,通过AQS源码分析lock()锁机制
Java高并发编程实战7,ConcurrentHashMap详解
Java高并发编程实战9,一文弄懂Java线程池 + Runnable多线程 + 调用WebService接口
Java高并发编程实战11,一个关于 i++ 和 ++i 的面试题打趴了所有人
Java高并发编程实战12,越细粒度的锁越好吗?产生死锁怎么办?
Java高并发编程实战13,简单聊一聊公平锁和非公平锁,parallel并行流
Java高并发编程实战14,强制禁止,线程池不允许使用Executors创建
6、Java代码实例
【Java 代码实例 2】利用Java反射实现两个具有相同属性bean赋值
【Java 代码实例 3】new BeanHandler<Student>(Student.class);《泛型,反射,一种思想》
【Java 代码实例 4】javacompiler编译多java文件
【Java 代码实例 6】FileUtils、StringUtil、CollectionUtils、ArrayUtils(附代码示例)
【Java 代码实例 9】Java通过Process执行C# exe程序
【Java 代码实例 11】利用百度语音识别技术实现文字转语音的应用
【Java 代码实例 12】java math.random()用法
【Java 代码实例 13】跟同事杠上了,Apache Beanutils为什么被禁止使用?
【Java 代码实例 14】Java BeanUtils用法详解,附源码分析
【Java 代码实例 15】为什么人们宁可用Lombok,也不把成员设为public?
【Java 代码实例 17】Java操作pdf的工具类itext
五、MySQL数据库
MySQL数据库基础知识6,缓存表、视图、计数器表、自定义变量
MySQL数据库基础知识9,InnoDB和MyISAM的数据分布对比
MySQL数据库基础知识13,MySQL 函数、数字函数、日期函数、运算符
MySQL数据库基础知识15,MySql基础知识总结(SQL优化篇)
MySQL数据库基础知识16,千万级数据,如何做性能优化?分库分表、Oracle分区表?
MySQL数据库基础知识19,学习MySQL必须了解的13个关键字,你get了吗?
MySQL数据库基础知识20,MySQL + PostgreSQL批量插入更新insertOrUpdate
MySQL数据库基础知识21,PostgreSQL数据库备份和恢复
六、Spring Boot框架(35天)
@RequestParam、@ModelAttribute、@RequestBody的区别
为什么90%的开发者放弃使用Hibernate,而选择MyBatis?
Spring Boot入门篇 | Spring Boot 1
springboot增删改查 | Spring Boot 2
Thymeleaf的基本语法 | Spring Boot 3
springboot整合mybatis | Spring Boot 4
Spring Boot Jpa 的使用 | Spring Boot 5
springboot自定义starter | Spring Boot 6
springboot实现增删改查实例 | Spring Boot 7
Okhttp实现GitHub第三方登录 | Spring Boot 8
springboot整合mybatis实现增删改查 | Spring Boot 9
Spring Boot + mybatis + Thymeleaf 分页示例(纯底层代码,不是pagehelper)| Spring Boot 10
springboot怎么打包部署 | Spring Boot 11
springboot整合Redis | Spring Boot 12
springboot实现热部署 | Spring Boot 13
springboot启动类原理解析 | Spring Boot 14
springboot常用注解介绍及使用 | Spring Boot 15
ApplicationContextAware使用理解 | Spring Boot 16
通过webservice实现springboot项目间接口调用与对象传递
Springboot配置两个数据库 | Spring Boot 17
springboot整合vue 实现CRUD | Spring Boot 18
springboot整合阿里云OSS实现云存储 | Spring Boot 19
springboot + Vue 整合阿里云视频点播 | Spring Boot 20
jdbctemplate使用 | Spring Boot 23
springboot 解决跨域问题 | Spring Boot 24
rabbitmq基础知识总结 | Spring Boot 25
Spring Boot整合easyExcel | Spring Boot 26
Spring Boot整合流控组件Sentinel | Spring Boot 27
springboot整合全文搜索引擎Elasticsearch | Spring Boot 28
springboot整合Nginx实现负载均衡反向代理 | Spring Boot 29
springboot整合MongoDB实现增删改查 | Spring Boot 30
mongodb文档基本操作简介 | Spring Boot 31
mongodb的优缺点及应用场景 | Spring Boot 32
Redis是干什么的,Redis常用语法每日一练 | Spring Boot 33
ShardingSphere分库分表教程 | Spring Boot 34
spring security原理和机制 | Spring Boot 35
七、微服务Spring Cloud
【微服务 Spring Cloud 1】一篇打通微服务架构,nacos + gateway + Redis + MySQL + docker
【微服务 Spring Cloud 2】为什么90%的开发者放弃传统的技术架构,而选择微服务?
【微服务 Spring Cloud 3】云原生是实现可观测平台的唯一出路?码农:夸张了
【微服务 Spring Cloud 4】Java工程师需要学习云原生吗?
【微服务 Spring Cloud 5】云原生中为什么需要API网关?
【微服务 Spring Cloud 6】服务如何拆分?使用微服务的注意事项?
【微服务 Spring Cloud 7】一文讲透微服务核心架构(注册中心、服务通信、服务监控、服务追踪、服务治理)
【微服务 Spring Cloud 8】如何对微服务进行有效的监控?
【微服务 Spring Cloud 9】分布式系统如何进行数据分区
八、Redis中间件
Redis中间件1,传统关系型数据库和NoSQL数据库有何区别?
Redis中间件2,2023年再不会Redis,就要被淘汰了
Redis中间件5,兄弟,王者荣耀的段位排行榜是通过Redis实现的?
Redis中间件7,Redis缓存穿透、击穿、雪崩到底是个啥?7张图告诉你
Redis中间件8,图解Redis,谈谈Redis的持久化,RDB快照与AOF日志
Redis中间件9,Redis bigkeys命令会阻塞吗?怎么解决?
Redis中间件10,图解Redis,谈谈Redis的持久化,RDB快照与AOF日志
Redis中间件11,Redis集群的最大槽数为什么是16384个?
Redis中间件12,Redis单线程还是多线程?IO多路复用原理
Redis中间件13,MySQL数据库和Redis缓存一致性的更新策略
Redis中间件15,Redis分布式锁的实现方式、实现原理
Redis中间件17,Redis布隆过滤器的原理和应用场景,解决缓存穿透
Redis中间件18,Redis缓存预热、缓存穿透、缓存击穿、缓存雪崩,Redis布隆过滤器怎么实现?
Redis中间件19,Redis主从架构、数据同步原理、全量同步、增量同步
Redis中间件21,神仙打架,事务 vs 管道,何时使用何种?
九、MongoDB数据库
MongoDB数据库1,既然有MySQL了,为什么还要有MongoDB?
MongoDB数据库2,MongoDB 4.0支持事务了,还有多少人想用MySQL呢?
MongoDB数据库3,MongoDB的基本概念与基本数据类型
MongoDB数据库4,MongoDB数据库 | 三分钟学会MongoDB索引,快来看看与MySQL索引有何不同?
MongoDB数据库6,技术瓶颈?如何解决MongoDB超大块数据问题?
MongoDB数据库7,一次线上事故,我顿悟了MongoDB的精髓
MongoDB数据库9,MongoDB查询与游标,彻底玩转分布式文件存储
十、Netty网络编程
十一、23种设计模式
十二、Dubbo
Dubbo高手之路1,Dubbo原理和机制,Dubbo的核心组件
十三、JavaScript零基础入门
JavaScript零基础入门 1:JavaScript表格简介
JavaScript零基础入门 2:JavaScript数据类型简介
JavaScript零基础入门 3:javascript运算符有哪些
JavaScript零基础入门 4:javascript对象有哪些
JavaScript零基础入门 5:JavaScript函数详解
JavaScript零基础入门 6:JavaScript数组详解
JavaScript零基础入门 7:JavaScript基础函数
JavaScript零基础入门 8:JavaScript通过document获取节点元素
JavaScript零基础入门 9:JavaScript读取元素的样式
JavaScript零基础入门 10:JavaScript中的正则表达式
JavaScript零基础入门 11:JavaScript实现图片上传并预览
JavaScript零基础入门 12:JavaScript整合JqGrid完整实例
JavaScript零基础入门 13:DOM规范中的MutationObserver接口
JavaScript基础知识总结 14:学习JavaScript中的File API、Streams API、Web Cryptography API
JavaScript基础知识总结 15:JavaScript客户端存储
JavaScript基础知识总结 16:如何写出优雅的JavaScript代码
JavaScript基础知识总结 17:JavaScript表单脚本
JavaScript基础知识总结 19:JavaScript的内存与性能问题
JavaScript基础知识总结 20:谈谈关于innerHTML的性能问题?
JavaScript基础知识总结 21:JavaScript看这一篇就够了,简单全面一发入魂
JavaScript基础知识总结 22:JavaScript数组
JavaScript基础知识总结 23:JavaScript 网络请求与远程资源
JavaScript基础知识总结 24:JavaScript面试题看这一篇就够了,简单全面一发入魂
十四、Vue基础知识
Vue基础知识总结 10:使用vue-cli(vue脚手架)快速搭建项目