自学java没那么难

一:个人经历

我的大学:第一年泡在图书馆看杂七杂八的书,跟学习毫无关系。第二年疯狂打LOL,从白银打到黄铜(黄铜守门员)。第三年上半年,被某人点醒,学习了整套C#知识体系,某马。下半年又决定转行,又开始了为期半年的自学java路程。所以我的经历可能适用一些正在学校的学生或者准备转行做java的。

二:建议

  • 如果你还没毕业或者想转行做java
  1. java基础,不得不提,重中之重!你需要把每个知识点都记录下来,通过实战去强化,可以借助外来的视频资料,但是记住视频为辅(一般都不是很深入),看完对应的都必须要看一本书:"java编程思想或者java核心技术",建议都看,十分经典,可以在你的笔记基础之上再次提升文章质量。
  2. 对于有了java基础的小伙伴来说,那么不得不提的就是算法与数据结构以及设计模式这两大块内容,重中之重!依然先入门,你需要了解常用的数据结构,知道他们的使用场景以及性能分析,需要具备一定的算法能力,常用的排序算法等等之类,可以去leetcode网站去找一些算法题目去练练,java语言也可以在这个阶段再一次提高,你要注意你写的代码的逻辑性和美观性以及性能。设计模式不得不提,随处可见,23种设计模式都必须了解并知道之间的区别以及常用的场景,比如抽象工厂与建造者模式的区别,常用的单例模式,门面模式,适配器模式等等,spring源码能看到很多运用。headfirst设计模式(适合入门)和算法4(需要你耐着性子去看)。
  3. 接下来看你什么方向了,如果是web端,那你可以尝试去学web开发相关的一些内容了,主要包括了Html/css/js,J2EE ,mysql相关的一些知识,对于如果以后专门要做java后端的小伙伴,前端相关知识可以稍微的花一些时间,因为不需要很久,可以入门。J2EE相关的你都必须掌握,servlet的运行原理等等很关键,mysql同样是你必须要非常深入的去学的内容,你必须要能熟练的写出SQL语句。你不仅仅要会写SQL,更要配合业务写出可重用,性能高的sql语句,建议深入的看一下高性能mysql,你不能仅仅停留在简单的增删改查,如果连数据库的设计都不会,性能优化都不了解,那么真的需要再逼一下自己,让自己懂的更多。
  4. 之后你必须靠着自己做出一个简单的网站并且搜寻一些项目资料,跟着练手,至少要有两个练习经验,巩固所学的知识点,在这个过程中你能学到很多,会碰到各种各样的bug,请记录下来,对你有用。
  5. 做完了这些项目,你可以继续去学习一些常用的web框架,比如spring,springboot ,springmvc,mybatis,什么hibernate还有structs2就不要再碰了,你必须熟练掌握这些框架的基本用法,要能明白常用的一些配置,有兴趣的可以进入里面看看源码,记着:研究源码是你做这份工作不能停下来的事。spring重中之重,不断的探索,不断的去研究源码。顺便再学一下maven如何管理项目,还有git的一些pull,push ,merge,rebase等简单用法,公司很常用,不要仅仅停留在svn,很多公司都是用git的。
  • 准备找工作
  1. 海投简历,不要不好意思,刷足面试题,最好自己要有个比较懂的技术点。
  2. 如果碰到让你培训再工作,培训期间再打生活费这种,尽量别去,我有几个朋友吃过大亏,后来都放弃了这份工作。
  3. 面试要自信些,展现自己的特长。其实公司很多,没了这家还有下家。
  • 工作了的小伙伴
  1. 应该尝试了不少crud的滋味了吧,也接触到了复杂业务的情景了吧,加班成了平常事了吧,是不是开始又觉得漫无目的了。可能在开发中你会接触到新的知识,比如,springboot ,springcloud ,dubbo,zookeeper,linux,rabbitmq,redis,mongdb,kafka,elasticsearch等等,你需要学会去用好这些工具。
  2. 对于已经工作了3年左右的小伙伴,可能你不再需要写简单的crud了,但是你能否自己搭建框架,能否写出可复用的模块代码,是否能写出优雅的代码,如果不能,还得继续学,必须重新拾起设计模式,要能对业务封装,对工具类封装,要能重构代码,要把设计模式运用到项目中去,你需要去看《重构 改善既有代码的设计》、《effective java》,久而久之,你可以写出比较出色又优雅的代码。但这还不够,你必须要对java虚拟机有深入的理解,要能解决项目中遇到的内存溢出异常等等,这部分内容比较枯燥,但是你必须要啃下去,还要会模拟场景去制造异常,因为很多异常你真的不知道从何下手,只能从日志里去看堆栈的打印信息,去看虚拟机的日志信息,去分析,你才能解决问题。所以必须学好,必须死磕这方面的内容。与此同时你还需要研究jdk的源码,就跟着你一开始学java基础的来,从集合开始,去深入的看源码,这时候你会发现java基础和数据结构和设计模式有多重要。还需要去学习并发相关的知识,要对Java并发包java.concurrent有深刻的认识,这些内容需要你摒弃浮躁的心,慢慢看,不能急,急你也看不出什么效果。如果已经接触过很多分布式相关的技术了,分布式缓存,分布式消息队列,分布式计算,负载均衡,大数据等等,你可能都已经用过了,所以现在的你既有了基础知识的架构支撑,也还没到退休年龄(哈哈),建议你深入的去研究一门技术,是很深入,不要既搞分布式计算,又搞分布式缓存,又研究大数据等等,说自己懂的那么多,花里胡哨的,真正懂得基本都能拿下你。所以你必须开始确定自己的研究方向,专门的去研究某个内容,让这一块成为你的优势和强项,这也是为了避免大龄被淘汰的法门。你应该朝着某个领域的专家去努力。有了自己深入研究的方向,你应该去帮助更多的人,去发表更多的优质文章,也可以去打造属于自己的开源项目,做出对别人,对自己有价值的东西。所以这个阶段的你应该提高自己的影响力,帮助更多的人,更多想学习的人