学习Java,我建议这样学!(收藏备用)
很多童鞋向我提问,想要学习Java,却不知道该学什么,也不知道该学到什么深度?
也有些外包的同学,想在技术上提升,却不知怎么做?
本篇文章专为想学习和提高Java的人定制,给出了详细的学习路线,适合想要系统的专业的学习Java的人。尤其是:想要从事Java开发工作的大学生,想要转行当Java程序员的在职人员,想要提升Java水平却不知如何入手的小白等。
30天从入门到精通? 那是宣传的噱头。
三个月培训等于两年经验? 那是宣传的噱头。
毕业都能进BAT? 那还是宣传的噱头。
基础阶段
首先是基础阶段,在基础阶段,我们必须掌握Java基础,Mysql数据库,Oracle数据库,JDBC,Linux基础,Java8新特性,数据结构和算法,设计模式。
对于基础阶段,我们所要掌握的就是基础,虽然是基础,但学起来也够呛。因为是初学者,所以基础阶段会有一点难度,但只要肯坚持,这些也没什么难的。对于Linux、数据结构、算法和设计模式我们掌握一些基础就行了,也没必要学得非常透彻。
Web基础
基础阶段过后,我们还必须要掌握一些Web方面的知识,Html,JavaScript,JQuery和AJax,同样的,对于这些知识,我们只需掌握基础,而不需要深究,否则,你将耗费大量的时间。
详细内容
1. Java基础
基础语法
类,封装,继承
一切皆对象Object类
接口,多态
异常处理
泛型
枚举
Java IO
常用类,常用接Java注解
Java反射
Java网络(可选)
2. Java Web
前端脚本html,js,velocity,xml
Servlet程序开发
深入理解mvc模式
常用Java项目结构
Jetty tomcat使用
Mysql使用
Springmvc spring mybatis 项目上手
3. Java多线程
线程入门thread runnable
内置锁 synchronized
线程协作 wait notify notifyAll
Executor体系 callable
显示锁 lock
条件队列 condition
常用并发编程类
Volatile
体现功力的threadlocal
线程安全问题的核心
常见的死锁原因
乐观锁 悲观锁 cas
4. Java虚拟机
Jvm体系架构
类的生命周期
对象的生命周期
常量池
垃圾回收机制
5. 设计模式
单例模式
工厂模式
策略模式
适配器模式
模板模式
回调模式
建造者模式
6. 网站架构
大型网站的架构
常用优化手段
分布式与无状态
负载均衡
7. Spring框架
Aop如何实现
ioc如何实现
事务如何实现
对象怎么管理
推荐学习资料




JavaEE
最后是JavaEE阶段,当你学到这个阶段,你对Java的程序开发已经了如指掌。然而,自己开发的过程是艰难而复杂的,所以JavaEE阶段我们需要去学习一些非常优秀的框架,来帮助我们进行程序开发。
对于框架,我们需要学习Struts2,Hibernate,Spring,SpringMVC,JPA,SpringData,MyBatis,Spring Boot,Spring Cloud,Dubbo。要学习的框架其实非常多,有些框架也十分有难度,我们在学习阶段只要能够熟练使用它们即可,有能力的话可以研究一下源码,看看框架的底层实现。当然,除了框架,我们还需要学习Maven,Git,Github,ActiveMQ,Jenkins等。
在JavaEE阶段学习的东西是最多的,但如果你经历了JavaEE阶段的学习,你的编程水平将会有质的飞跃。
有同学向我反映,说数据结构和算法不学好就只能当个码农,说我在文章中指出"只需学习数据结构和算法的基础即可"是误导别人。确实,这句话是没说错,我在之前的文章中也强调过数据结构和算法的重要性,它们是程序的灵魂。然而,数据结构和算法是具有一定难度的,对于新手可能非常地不友好,新手要想彻底掌握它们是很困难的,所以我只是说在基础阶段掌握基础即可,而不需要去深究。而随着学习的深入,你的知识体系将会越来越庞大,这个时候,对于数据结构和算法可不能仅仅停留在表面了,我们应该去更加深入地研究这些东西。
在这里也感谢大家给我提出的意见,只要大家说的在理,说的是对的,我都会去及时改正。金无足赤,人无完人,在写文章的过程中,难免会有一些不太严谨的地方,这里也欢迎大家批评指正。

从底层向上原理解读

多线程与高并发

JVM调优案例式实战化指导

经常被问的操作系统原理剖析

Spring源码

SpringBoot

SpringCloud

深入透彻完整解析Redis

【史上最全】600分钟精通Redis、ZK、布隆过滤器、分布式,附送源码、笔记
Zookeeper

分布式事务

高负载高并发高可用架构设计指导思想

学习本篇文章,不能让你30天从入门到精通,不能保证你进BAT,但是能保证教会你如何系统的学习Java知识,最终成为一个专业的Java开发者。
当然,如果你有更好的关于学习编程的方式方法问题,也可以评论区留言!整理不易,恳请三连!
