java程序员之路及各阶段书籍推荐 置顶!

从四年前在学校初次接触java开始,一路摸索,走过不少弯路,浪费过不少时间,摸着石头过河,到现在多少有了一些心得,记录在此,希望对后来人有所帮助。

入门篇

怎样入门

完事开头难,入门之后剩下的就都好说了。对于有其他程序语言使用经验的同学来说,java应该不需要入门,稍微看看就能明白了。对于没有编程经验的同学来说,初次接触java语言,选对学习途径非常重要。
我认为比较好的一个方式网上找一个培训机构靠谱老师的课程,跟着学一遍,对最基本的语法有个了解之后再去看书,会好一些。当时是看着韩顺平老师的视频入的门。
入门的话,只看视频是不够的,毕竟还是得找一本权威的书从头到尾看一遍,对java各个方面都有个了解才行。这一阶段,起码能自己手写一个计算器。

书籍推荐

这一阶段,书籍推荐看《JAVA核心技术卷I》《java核心技术卷II》,结合讲解java基础的视频,可以达到很好的效果。这两本书讲解了java语言的语法以及大部分常用的类以及类的接口,还有简单的例子,非常适合入门。
不要看《java编程思想》
不要看《java编程思想》
不要看《java编程思想》
《java编程思想》是好书,但绝不是入门书,当时初学java时,看这本书就像看天书一样。

干活篇

入门之后就轮到干活了,干活是一个不断学习不断踩坑填坑进步的过程,这一阶段,会接触到许多前一阶段不曾接触到的东西,但又必须得掌握,接触的越多,越是惶恐,越是感叹生也有涯,知也无涯。

应该掌握的技能

  1. 数据库
    知道数据库的概念和作用,会建表,会写增删改查的SQL语句。
  2. javaweb
    能搭建一个web工程,点击浏览器,数据传过来存到数据库,从数据库查询数据,展示到前端页面,跑通流程并了解背后的原理,会用tomcat,会写或者至少能看懂一些基本的HTML,CSS,JavaScript。
  3. 多线程
    会写简单的多线程代码,大概知道啥时候改用。
  4. IO操作
    会操作文件,往文件写数据或者从文件读数据,熟悉java的IO操作。
  5. Linux
    明白世界上不只有windows系统,能自己装Linux虚拟机,掌握Linux最基本的操作。

书籍推荐

这一阶段,多动手,多鼓捣,多做实验,多提出猜想并通过时间求证,工作中多问为什么,多总结,多想身边人学习。

  1. 数据库可以找视频看最基本的SQL语法,切记不要看《高性能MYSQL》,时候未到。
  2. javaweb、多线程、IO可以找培训机构的视频看,跟着搭建一个能跑通的web工程。
  3. Linux可以看视频的同时,看《鸟哥的Linux私房菜基础篇》,这本书详细讲解了Linux常用的工具和命令行操作。

进阶篇

这一阶段,你开始接触到更多的东西,java高级特性,Spring,分布式,缓存,消息队列,锁,并发,负载均衡等知识,于是乎你必须大量的阅读和学习,才能填补心中越来越多的疑惑和兴奋。
这个时候,你接触的系统开始变得复杂起来,开始遇各种问题,解决问题的过程就是这一阶段最有效的提升过程。当然,遇到问题时总还是要看书的。相比看书,更重要的一点是,遇到问题时,一定要弄明白问题产生的原因以及背后的原理。

书籍推荐

  1. 博客,解决问题的过程就是学习的过程,这一过程中搜索引擎会把你带入到无数的博客之中,多看多实践,做到会用以及明白何时应该用上面提到的那些东西,出问题时知道大概的排查方向或者能通过搜索引擎自己搜寻出答案来。
  2. 《java编程思想》,这本书讲解了java的一些高级特性,作者很了不起,写做过程中也一再对比java和C++的异同,以及java语言为什么这个设计,以及这样设计的有点和不足,这真的是一本讲解“思想的书”,这一阶段,你会觉得这本书写的简直太好了。

提高篇

这一阶段,你开始关注性能,大数据处理,设计模式,软件架构,技术原理等更高或者更深层次的东西了,于是你越发发现自己的不足,而且渐渐认识到,博客大多雷同,质量一般的居多,不再值的你去投入太多时间了。于是乎,你会感到迷茫,什么都想学,什么都觉得来不及,没时间学,因为要学的实在是太多了。不废话了,来看书吧:

书籍推荐

  1. 《算法》红色封面,像砖一样厚的书。java写的算法书,里面有最良心的彩色配图。
    之前你可能觉得算法最大的用处就是用来面试,现在你不这么认为了,于是你决定有必要系统的学习一边算法知识了,然后你就会在各种眼花缭乱的排序、搜索、链表、树、图等等算法面前由衷的感叹,当然感叹包括对前辈们的佩服以及自己无力的吐槽。
    看完之后,工作中不一定用得到,但是从此之后,每写一行代码时,你都会不知不觉中考虑起程序的性能来
  2. 《Head First设计模式》
    这本书的阅读过程会比上面那本轻松很多,作者很幽默,各种例子讲的非常好,看完之后,你的代码中会多了一些设计模式的影子。
    啥叫程序?程序就是设计模式+算法
  3. 《Effective Java》黄色封面,很薄的一本书,句句箴言,讲解了java编程过程中最有用的一些实践。
  4. 《深入理解java虚拟机》很多之前你不明白的地方会在这本书里面找到答案,GC,编译,优化,并发,字节码,类加载等等,应有尽有。
  5. 《高性能MySQL》Mysql的最佳实践,测试、参数调优,存储引擎,索引,执行计划,事务,锁,主从复制,log,集群,真是好书,你会不由自主的多看几遍,真的。
  6. 《重构,改善既有代码的设计》讲解了代码重构的各种技巧,在不断的重构中,你的代码会写的越来越优雅。
  7. 《深入理解计算机系统》看了上面那么多,你会发现,使用有些底层的东西卡在哪里,就是不明白,于是乎,你就该来看这本书了。
  8. 各种优秀框架的源码,毕竟,源码是最好的技术文档

顿悟篇

这一阶段,渐渐地你会发现,大多数东西都是殊途同归的,大多鼎鼎大名的技术底层原理都是想通的。于是乎在你不断的研究与思考中,渐渐地你会发现,遇到一个技术,即使是之前没接触过的技术,你也几乎能一眼看出其背后的实现原理了。

书籍推荐

  1. 各大技术的英文官网,官网才是最权威,最不会误导人的地方。
  2. 源码,如果官网上没你想要的,那么源码里一定有,这个时候,你应该也能读懂其他语言的代码了,虽然你并没有刻意去学过。
  3. 原版技术论文,包括但不限于《Big Table》《GFS》《MapReduce》《LSM Tree》《Raft》《Paxos》等等,不必纠结于细节,着重学习其中的思想。
  4. 在实践中不断积累经验,根据最业务场景从茫茫多的技术中选到那个最适合改场景的技术。

得道篇

这一阶段,你眼中所有的计算机技术都已经返璞归真,在你看来,所有的技术不过是数据结构+算法了。

书籍推荐

神书,我至今见过的最好的技术书籍,没有之一!
《Designing Data-Intensive Applications》

后面的

才疏学浅,后面的境界,我还没到。。。


因僧问我西来意,我话山居不记年。
草履只栽三个耳,麻衣曾补两番肩。
东庵每见西庵雪,下涧常流上涧泉 。
半夜白云消散后,一轮明月到床前。