前几天有个读者过来说,“二哥,外包干了四年,感觉和外界差距有点大,现在被动醒悟,希望你能帮我制定一下学习路线。”
那二哥这么负责任,必须得承担起这份职责啊!于是我就让读者整理了一份 1.0 版的,告诉我他现在的学习进度、学习计划、已有的技术水平,我迭代后的 2.0 版发给读者后也深受他的喜爱和认同。
现在公开出来,也希望能给 CSDN 的读者朋友们一点参考和借鉴🤔。不管身处什么样的公司,外包也好、甲方也好,最怕的就是温水煮青蛙,自己麻痹自己,再加上大环境不好,就很容易堕落,时间一长,就发现自己和别人的差距巨大,再追赶上来就颇为不易。
所以,居安思危。
作为一名标准的 Java 党,来谈谈我的一点感受吧。
1、如果你是在二三线城市,那么尽量不要把所有的精力都扑在工作上面,而是尽量去找一些副业来做,比如说被很多大佬唾弃的外包、私活,别看不起,有就接,慢慢囤积自己的人脉资源,照样可以过得很潇洒。
下图是我的一个朋友,他的收入情况,做了详细地柱状图,大家可以看一下,如果你不相信,觉得图是 p 的,那就当我没说。
2、如果你没有地域的限制,那么尽量去大城市,大城市收入就是高啊,同样一个人,你在三线可能一年只有 10 万的收入,到了大城市,会直接飙升到 20 万的收入,这一点都不夸张。
我之前的一个读者,就是半年时间转行 Java,去了上海的一家银行外包,月薪 17k。
如果你还不相信,觉得图是 p 的,那仍然请当我没说。
3、如果你对技术稍微还有那么一点热情,请不要一直 CRUD,不要一直浮在表面,要多去看看 JDK 的源码,搞清楚为什么 HashMap 的加载因子是 0.75 而不是 0.6 0.8,搞清楚 ArrayList 和 LinkedList 之间的差别,底层的数据结构有何不同。
不要把技术栈一直停留在 JSP/SSH 的时代,而是要去掌握 Spring Boot,掌握 SpringCloud,掌握消息队列等等。
即便是你做不到公司不可或缺的一员,最起码遇到公司裁员了,能尽早上岸。
下面是我给读者制定的详细的学习计划。
这是针对工作党,安排出来的时间,相信你能够挤出来这些时间。如果你连这点学习时间都挤不出来,不好意思,你真的没有前途了。
时间:现在-2022/12/30
学习内容:
这部分我觉得直接看《Java 程序员进阶之路》上的内容就够了,注意重点可以研究一下集合框架的源码、JUC 部分的源码,看 1.8 的 JDK 就够了。
Java 程序员进阶之路是 GitHub 上一个星标 4.5k 的开源知识库,里面的内容真的是挺扎实的。当然了,这个开源知识库也配套了对应的网站。
Java 并发部分,戳:https://tobebetterjavaer.com/xuexiluxian/java/thread.html
Java 虚拟机部分:戳:https://tobebetterjavaer.com/xuexiluxian/java/jvm.html
有书籍/视频/教程/八股文等等,看自己哪里不足就补充哪里就好了,会的就跳过,如果实在是有搞不定的地方,也可以跳过,不一定这一遍什么都要学会。
并发编程中有一些内容(比如说线程池、各种锁机制),包括 JVM 的一些内容理解起来还是很枯燥(比如说字节码、垃圾回收算法),学会用,再背一下八股文,面试不卡壳就行(当然了,如果能全部拿下,就真的可以说是大神了,以后再读任何源码或者解决深层次问题需要去修改原生的 api 之类的就会很容易了)。
时间:2023/01/01-2023/02/30
学习内容:
这部分视频我已经整理出来了,CSDN 上不方便放链接,如果你需要的话可以关注我的账号私聊我。
B站上有些视频的质量还是真的挺不错的,不过 CSDN 最近好像大喜欢 B站的链接,这里我也就不放了吧,截个图,你应该能找得到。
时间:2023/03/01-2023/05/30
学习内容:
Spring Cloud 的学习可以看下面这个视频,码我已经打的很扎实了,CSDN 应该是没啥问题。
MySQL 也是我一直强调的 Java 后端开发四大件之一,可以结合(2)、(3)项目实战进行mysql学习,实战中未使用到的知识再单独学习。
学习内容:
MySQL 的学习路线可以戳这个链接:https://tobebetterjavaer.com/xuexiluxian/mysql.html
第一阶段:SQL,推荐的书籍有这两本。
第二阶段:入门 MySQL,推荐的书籍有这两本。
第三阶段:进阶 MySQL
面试造火箭,工作拧螺丝,虽然日常开发中,大部分人也就写写 SQL 就行了,但不好意思,面试中(或者你想成为 MySQL 方面的专家)99% 的情况下,还是会被问到原理的,比如说索引、锁、日志、引擎等。
举一些例子:
1、一条 SQL 是如何执行的?也就是说,从MySQL 客户端执行了一条 SQL 语句,MySQL 服务端会进行哪些处理。
2、索引相关:索引是如何实现的?MySQL 的索引采用的哪种数据结构?哈希索引和 B+ 树索引的区别是什么?
3、事务相关:事务的四大特性是什么?什么是幻读、脏读、不可重复读?、MVCC 了解吗?怎么实现的?
4、锁相关:表锁、行锁、意向锁、乐观锁、死锁,这些锁主要是用来解决什么问题的?
5、日志相关:MySQL 日志文件有哪些?binlog 和 redo log 有什么区别?redo log 是怎么刷入磁盘的呢?
6、高可用/性能相关:数据库读写分离了解吗?读写分离是如何实现的?主从复制的原理了解吗?分库分表了解吗?
7、SQL 优化相关:慢 SQL 如何定位?如何优化慢 SQL?
书籍推荐
结合(2)、(3)项目实战进行学习。
学习内容:
这部分可以刷一下某马的视频,评价还不错。同样的,我只截图不贴链接,免得有人不怀好意以为我在有意为之,其实我真的只是想帮助大家进步而已。
目前项目中使用,简单入门,结合项目实战进行学习。
ELK 就看尚大的这个视频吧
分布式任务调度看阿里云的这个教程:https://help.aliyun.com/product/147760.html
Docker简单使用过,会一些简单Docker命令。
学习内容:
详细学习Docker相关命令、配置,达到熟悉的程度
Docker 之需要看这个 PDF 就可以了,同样只截图,免得被针对哈。
那总体上来说,只要一个 java党能达到这种程度,在任何公司找一份像样的工作,我觉得还是手到擒来的,没有太大的难度。
关键就看你是不是会找借口,哎呀工作忙啊,996 啊,根本没时间学习啊,天天加班啊。。。。。。。
如果还有这么多借口的话,请绕道哈。
以上,希望能给需要的小伙伴一些帮助和启发🤔。