Java程序员必读书籍(进群白piao)

这是一片超全的干货分享,内容很长,需要大家耐下心来看!这篇文章将带你由浅入深的了解程序员如何学的更精,如何高效率阅读,避免无用功!

【白嫖党不进来可就亏大了】

只想真心解救那些还在Java学习路上苦苦挣扎的小伙伴们,毕竟我也是一路走过来的!


目录如下:

1 程序员如何读书?
2 程序员快速成长宝典
2.1 程序员是做什么的?
2.2 企业为什么需要程序员?
2.3 程序员快速成长的方法
3 Java程序员必读书单
3.1 初级经典书籍(适合初学者)
3.2 中级经典书籍(适合具有一定编程经验的工程师)
3.3 高级经典书籍(适合有大型项目架构经验的工程师)
4 Java开发常用资源
5 推荐学习路线
6 Java程序员成长常见问题解答

本文推荐的书籍,以及其他方面的资源都可在群内自取,无偿共享!

【有需求的小伙伴进群853665602自取就好了,还方便和志同道合的小伙伴互相交流技术】

另外:我还整理了一些Java基础知识点,思维导图,学习视频,

【群里还含有:Java80g学习视频+Java学习书籍+Java项目实战源码+安装软件等】

各类资源都有哦~

程序员如何读书?

  1. 要读就读经典好书,差的书不光浪费你的金钱,更浪费你的时间。对于程序员来讲,空余时间非常宝贵,要想在有限的时间内有好的回报,选书很重要。
  2. 程序员一定要学好英语。国外的大牛工作不加班,也喜欢分享,而国内的大牛基本上都在忙着加班,没时间写书。所以国外的文章、书籍、教程质量要比国内的好很多,技术也新,差不多领先两到三年。所以,如果英语不错,能阅读第一手的英语书籍资料,在信息差上会有很大优势。所以,程序员一定要学好英语,不要用百度搜问题,用bing英文搜索来搜问题,有机会看一些原版英文书提升自己的英语水平。一开始会比较痛苦,看的多了,计算机术语也就那么多,比考研英语要简单很多。
  3. 豆瓣评分是一个很重要的选书标准,8分以下的一般就不要考虑了,除非这个领域内的书籍非常少。
  4. 要根据自己的基础和学习能力选择合适的书。太简单的书会没有提高,太难的书会看不懂,适合自己当前阶段的书才最有利于快速成长。
  5. 计算机是一门实践科学,读书的同事也要通过编码来积累项目经验。我上学的时候学习的做法是先把书看一遍,然后去做一些和书籍内容相关的项目开发,开发中会越到不懂的内容,针对这些不懂的地方去翻书,查缺补漏。最后项目搞得差不多了,再把书重新过一遍。这样效率会比较高,因为一开始读书的时候不知道哪些是重要的、自己不会的,通过做项目可以让你对书籍的重点和自己薄弱的地方有一个清晰的认识,然后再回过头来读书,可以有的放矢,效率会高很多。
  6. 想看的、自己当前需要的书,不需要等优惠活动,直接下单即可。国内图书20多年价格基本上没太大变化,性价比能和火车票媲美了。所以,遇到自己喜欢的书,不要犹豫,和书的价格相比,你的时间才是最宝贵的。当前还不怎么需要、买了暂时也看不过来的书,可以放入购物车,等双11、双12或者618搞活动的时候买。
  7. 学生如果缺钱,要买更便宜的书可以去多抓鱼、闲鱼上购买二手书,尤其是多抓鱼都是消毒翻新的,价格比新书也要优惠很多,买了看完还可以再在平台上卖掉,看一本书的成本也就一二十块钱。

程序员是来做什么的?

在讲程序员如何成长之前,应该先把这个问题讲清楚。程序员是来做什么的?程序员工作的意义是什么?很多同学会感觉这个问题很简单,程序员不就是来写程序的吗。其实这个问题很深奥。

简单的讲,程序员是通过计算机方法(一般是编程)来解决各种现实问题,创造经济和社会价值的。比如老马在县里开了个商场,感觉来钱比较慢,想去开个网上商场,和全国全世界的顾客交个朋友。如何在网上开商场,这就是个问题。程序员要做的就是通过软件来解决这个问题。

如何解决问题呢?程序员的工作解决问题一般都分为2步:

  1. 把现实问题转换为数学问题。这其实就是个数学建模的过程,针对商场可以对商业模式进行分析,把商品按照SPU、SKU进行区分,把商家和顾客分为B端和C端。这部分能力靠的是业务知识和逻辑分析能力。这部分内容变化会比较慢,对数学要求比较高,问题分析能力决定一个程序员的上限。
  2. 通过计算机方法(一般是编程)来解决这个数学问题。商场的数学模型分析好了,就需要通过软件系统来实现功能了。比如选用哪种框架、使用哪种语言、数据库用什么、安全防护需要做哪些?这部分内容会变化得比较快,随着框架和底层技术的发展,入门门槛逐渐降低。程序员如果只是能简单的完成这一步(CURD Boy),并且对底层原理没有太多研究,就很容易被淘汰。

企业为什么需要程序员?

现在每家企业都会找一些程序员,信息化、互联网化是现代企业的诉求。但更根本的原因是追求利润,老板需要赚钱,有好多业务问题只有靠程序员才能解决,老板招聘程序员就是想让程序员通过技术来解决业务问题、推动业务发展,让老板赚更多钱。所以,对于大部分企业来讲,程序员只专注于技术是不行的,要能让技术解决业务痛点,能帮老板赚钱,才能有好的发展。Bob大叔曾经在《架构整洁之道》中讲过,好的架构就是能用更好的人干更多的活(我加一句,能帮老板赚更多的钱)。企业的程序员一定要记住,能帮老板赚钱是程序员在企业中最重要的价值。

程序员如何快速成长?

但万事万物都要讲究科学方法,个人成长也不例外,对于开发者而言,索隆认为有3个方法非常重要:

  1. 站在巨人的肩膀上。
  2. 针对薄弱的地方进行刻意训练。
  3. 学会提问。

站在巨人的肩膀上

读研的时候,实验室的老师都在强调一个问题,要看顶级会议和期刊的英文文章,尽量不要看中文的文章。因为看一流的文章,好好学的话,大概率能写出二流的文章,如果一开始就看国内三四流水平的中文文章,那硕士毕业基本上就要成问题了。

技术精进也一样,你每天获取学习信息的质量决定了你的上限。国内知名技术达人“左耳耗子”也一直在强调这一点,他说现在国外的技术比国内还是要领先两三年,如果能经常看国外技术网站上的优质英文文章,领先国内同行一两年是没问题的。所以,学习信息的选择非常重要。

那么哪些信息是优质的呢,索隆这里列举2个比较重要的优质信息来源:

  • 经典书籍,尤其是国外大牛写的技术书籍。国外大牛写书都非常认真,他们写的书籍质量也很高。和博客、公众号相比,书籍的信息密度也更大,质量也要高很多。不管你现在处于什么阶段,看书都是非常高效的提升方法。如果刚入门,先把计算机经典的书籍过一遍,保证功力大增。
  • 知名开源项目。技术开发光看书还是不行的,动手做项目同样重要。要想提升自己的编码水平,跟着大牛学习也非常重要。那大牛的代码从哪里找呢,要感谢开源社区,现在Github上的知名开源项目,有很多大牛在维护。通过看这些大牛的代码,是快速提升编码水平的一个捷径。

针对薄弱点刻意训练

很多经典的讲高效学习的科学著作(比如《刻意训练》和《精进》)都提到了这一点,针对薄弱点刻意训练是提升个人能力最高效的方法。对于开发者而言,建议画张脑图,针对开发设计到的知识点进行分类汇总,每次遇到不懂的问题,不管是开发中遇到的,还是面试中遇到的,都去这个知识树中去找,看自己那块薄弱,然后针对薄弱的地方进行有针对性的复习。这样不断循环,知识树会越来越完整,自己的水平也会越来越高。

学会提问

对于开发者而言,提问也非常的重要。针对自己的项目,要经常去反思,哪里还有提高的地方。对于自己,也要经常反思,自己还有哪里需要提高的地方。开发的时间长了,也可以问下自己,技术是如何创造价值的,开发者对于老板的意义在哪里。要经常地反思,不断提出问题,才能更快的进步。

Java程序员必读书单

书单说明:

  1. 图书列表按照初级、中级、高级进行了大致区分,初级是指刚入门Java的同学或者开发经验很少的初级工程师;中级是有一定开发经验,但还没有独立设计过大型项目的工程师;高级是指由大型项目设计经验,并且有一定项目架构、管理经验的工程师。但推荐书目只是大致进行了区分,区分了书籍最适应的人群。初级的同学可以阅读中高级的推荐书目,只是有些读起来会有些吃力。

为了方便阅读,对书目进行了汇总,大家可以先看这个,然后再看下面详细的介绍。

Java程序员必读书籍(进群白piao)_第1张图片

初级经典书籍(适合初学者)

作为一个初学者,首先要了解Java这门语言。Java入门语言书,首推《Java核心技术》,因为 《Java编程思想》和《Head First Java》这两本书都是10年前写的,当时的Java版本还是5,而今年9月份Java 15已经正式发布。现在国内一线公司也已经以Java 8为主。Java 5是Java比较重要的一个版本,但是后面的Java 7支持了Future,Java 8支持了Lamda表达式和Stream。都是比较大的更新,因此现在学习《Java编程思想》和《Head First Java》已经有些过时了。这两本书虽然经典,还是推荐学习《Java核心技术》,因为《Java核心技术》最新版本已经支持到了Java 11,更新非常及时。知乎上之所有很不少大牛也在狂推《Java编程思想》,是因为大牛入门Java的时候基本上都是在很多年前,那时候《Java编程思想》的技术还是很新的。《Java编程思想》的作者已经写了第五版,英文名叫《On Java 8》,Java版本更新到8,实在想用《Java 编程思想》入门的同学可以去读英文版,或者看网友翻译的中文版On Java 8网友翻译版。正式中文版图灵出版社正在加紧翻译,预计下半年会上市,并且会在原书的基础上增加Java 9的内容,图灵出版社出版的图书质量都很高,大家敬请期待。

《穿越计算机的迷雾》

图书简介:之所以把这本书放在第一位,是因为这本书非常适合入门。和后面的《深入理解计算机系统》相比,这本书内容主要讲计算机硬件相关知识,不够全面。但是这本书更加通俗易懂,读起来非常有意思,在轻松的气氛中能让读者对计算机有个较为全面的了解,所以把这本书更加适合初学者,少有的国产经典好书。针对电路、CPU、指令、存储器等都有详细的介绍。大一新生或者刚开始转行学计算机的其他专业的同学,推荐先把这本书读完。

豆瓣评分:8.9

穿越计算机的迷雾(第2版)

《Java核心技术》

图书简介:和后面两本语言书比,这本书更像国内的教科书风格。没有太多的理论讲解,每一张都有不少示例,更加实用。并且本书分为上下两卷,基础篇和高级篇。我12年读的这本书,感觉更适合用来做手册,遇到不了解的部分拿来查查,按照示例写写代码能很快解决问题。初学者直接看基础篇,有一定开发经验的可以看高级篇。

豆瓣评分:9.0

Java核心技术 第11版 套装共2册

《Java编程思想》

图书简介:这本书在香港科技大学是本科Java课程的指定教材。没有编程经验的同学看起来会有点吃力,但是读完会很有收获。本书不光对Java语法的方方面面进行了详细的介绍,对面向对象思想也做了很好的讲解,同时将Java和C++进行了客观的比较,如果同学们之前学过C++,读这本书会感到很亲切。作者Bruce Eckel是语言领域的大牛,作为C++标准委员会拥有表决权的成员之一,同时也是《C++编程思想》的作者。这本书值得每位Java程序员买一本仔细阅读。注意,对于初学者,一定要自己做下课后习题,学习编程动手很重要。当然,课后习题答案还是要给的 https://github.com/kinggggg/thinking_in_java_answer

注:第五版(英文名《On Java 8》)中文版图灵出版社已经在组织翻译,预计明年会正式出版。

等不及的同学可以看网友翻译版 https://github.com/LingCoder/OnJava8

书很经典,但版本有点老,可以作为参考,不推荐以这本书为主。

豆瓣评分:9.1

Java编程思想(第4版)


《Head First Java》

图书简介:和Head First其他系列一样,这本入门书图文并茂,还有游戏、解谜题等,读起来会非常有意思。如果感觉《Java 编程思想》过于枯燥,可以买这本书来看看。书很经典,但版本有点老,可以作为参考,不推荐以这本书为主。

豆瓣评分:8.7

Java程序员必读书籍(进群白piao)_第2张图片

Head First Java


《Spring实战》

图书简介:Spring是Java程序员必学的框架,现在Web开发基本上离不开Spring生态的各种框架,微服务领域Spring Cloud也占据了半壁江山。随着Spring版本的迭代,本书每隔几年就会更新一次,2020年2月最新的第五版中文版已经出版。本书会介绍Spring的核心原理,但更偏向于应用。按照书上的例子,自己写一写,可以快速掌握Spring的基本特性。第五版讲了一些异步和响应式的内容,对初学者来讲有一定的难度,可以忽略。

豆瓣评分:8.2

Spring实战 第5版(异步图书出品)


《深入理解计算机系统》

图书简介:这本书在CMU是大一的入门导论课程教程,但书其实很有深度,从硬件到软件,从编译原理到Web网络都有讲解,是一本难得的深入浅出的好书。很久之前就有这种说法,这本书你能看懂多少页,毕业就能拿多少钱。豆瓣9.5(中文版)的高分也客观反映了大家对这本书的认同。初学者看起来会有难度,能看懂多少算多少,尽量多做些课后习题,做了这些习题才能更好的理解这本书的精华。中级读者也建议时不时的翻一下,相信每次看都会有新的收获。

豆瓣评分:9.5

Java程序员必读书籍(进群白piao)_第3张图片

深入理解计算机系统(原书第3版)

¥ 93.00起


《算法导论》

图书简介:现在好多同学练习算法直接开刷LeetCode,其实不是太建议这样做。算法练习,刷题固然重要,但要先打好基础。就像学习数学,要先学好教材,再去刷习题集。《算法导论》就是学习算法最好的那本教材。这本书读起来会很难,尤其是对于初学者。建议有一定编程基础后,再去读这本书。和算法竞赛指导书相比,这本书针对算法理论进行了详细的讲解,比如复杂度分析、各种算法的证明公式。看起来不实用,不能让你立马去AC几道题。但是会让你打好算法基础,让你的算法上限更高。

豆瓣评分:9.5

算法导论(原书第3版)/计算机科学丛书

¥ 89.00起

《SQL必知必会》

图书简介:随着年龄的增大,越发的感觉学好SQL的重要性,其他的知识比如云计算、微服务都是日新月异,但是SQL几十年过去了,基本上没有什么变化,并且在工作中SQL会用得越来越多。学好了SQL,目前看再用十几年没问题,并且不用重新学,性价比非常高。《SQL必知必会》作为SQL入门的经典,不局限于某个数据库(比如Mysql、SQLServer等),针对SQL常用的知识点做了详细的讲解,比如组合查询、存储过程、视图等基础知识和一些实用的优化技巧。如果刚开始学SQL,推荐这本书,看书的同时,可以装个Mysql实践一下,效果会更好。

豆瓣评分:8.5

Java程序员必读书籍(进群白piao)_第4张图片

SQL必知必会 第4版(图灵出品)

¥ 21.00起

2

中级经典书籍(适合有一定编程经验的工程师)

有了一定的项目经验,需要学习如何写出优雅的代码。首先要记住一点,代码虽然是让机器运行的,但更重要的是让人读得懂。现在的软件很少有一个人单独完成的,都是要一个团队一起合作来完成的。所以,代码规范非常重要。如何写出优雅的代码,有4本经典好书推荐:

《重构》

图书简介:我第一次看《重构》这本书是2011年,但是看的是导师从香港带来的英文版。看完这本书感觉自己之前写的代码不忍直视,只能算得上碰巧能跑的指令集合。现在会带一些应届生做项目,我给他们推荐的第一本书就是《重构》。这本书介绍了DRY(Don't Repeat Yourself)原则,介绍了命名规则,介绍了常见的重构方法(这些方法Eclipse、Idea这些IDE都进行了支持),介绍了坏味道的危害。对于提高代码质量非常有帮助,适合初学者仔细阅读。这本书2018年作者编写了第二版,很快去年(2019年)5月份中文版就出来了。新版比旧版增加了更多的内容,并添加了示例,非常适合入手。

豆瓣评分:9.0

Java程序员必读书籍(进群白piao)_第5张图片

重构 改善既有代码的设计(第2版 平装版)(异步图书出

京东

¥ 49.50

去购买​


《代码整洁之道》

图书简介:这本书是大名鼎鼎的Bob大叔(世界级软件开发大师、70年代初已经开始从事软件开发工作)写的编程指南,书中有一个重要的观念:代码质量和整洁度成正比,越整洁的代码质量越高,并给出了一些保证代码整洁的切实可行的方法。想和Bob大叔一样写出优雅的代码,本书也是必须。

豆瓣评分:8.1

Java程序员必读书籍(进群白piao)_第6张图片

代码整洁之道(异步图书出品)

¥ 80.00起

2


《Effective Java》

图书简介:作者是Google公司的首席Java架构师,有着非常丰富的Java开发经验,在这本书里作者给出了很多Java编码中的注意事项和最佳实践,比如组合和继承哪个更好,equal实现需要注意的地方。适合有一定开发经验的同学阅读,读完会有醍醐灌顶的感觉,对提升代码质量有很大的好处。

豆瓣评分:9.6

Effective Java中文版(原书第3版)

京东

¥ 92.40


《Head First 设计模式》

图书简介:设计模式是四人组(Erich Gamma、Richard Helm、Ralph Johnson、John Vlissides)提出来的,最初的设计模式的书也是四人组写的。但是原书比较枯燥,《Head First 设计模式》更加地深入浅出,语言更加轻快诙谐,适合阅读,在豆瓣评分也超过了原书。另外索隆多说几句,作为国内软件工程泰斗的不得意弟子,设计模式这东西不用花太多精力研究,尤其是没有足够开发经验的时候。设计模式属于软件哲学的范畴,没有足够的系统设计经验,说实话是看不太懂,搞不清楚的。不要看某些所谓的大佬张口闭口设计模式,真正能明白设计模式精髓的人不会太多。所以学习初期还是以实用的开发技术为主,设计模式了解就可以了,等有开发经验了,建议没隔一两天再回顾一遍,每次会能多理解一点。

豆瓣评分:9.2

O'Reilly:Head First设计模式(中文版)

¥ 65.00起

2

《阿里巴巴Java开发手册》

图书简介:这本书是本书单中少有的国人作品。阿里巴巴算得上国内Java第一大厂,这本书介绍了阿里的Java编程规范,非常详尽、可操作,值得学习。这本书可以直接看电子版,每年都会有更新,最新版本为嵩山版,还有IDE插件(支持Eclipse、Idea),可以自动进行代码检查。

下载链接

https://github.com/alibaba/p3c​github.com/alibaba/p3c


《深入理解Java虚拟机》

图书简介:这也是一本国内难得的经典书籍,有了一定的Java开发经验,就要对Java虚拟机原理有所了解。当然,我们可以直接看Java Virtual Machine Specification,但是Oracle官方文档还是比价晦涩难懂的,普通开发者也难以把握重点,因为这个文档是写给JVM开发者的。《深入理解Java虚拟机》这本书从Java应用开发者的角度介绍了JVM的实现原理,周志明老师以深厚的技术功底把JVM晦涩的概念写得深入浅出,值得中、高级Java开发同学阅读。

豆瓣评分:9.0

深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)

京东

¥ 100.20

去购买​


《MySQL技术内幕:InnoDB存储引擎》

图书简介:这是一本难得的国内Mysql技术精品,InnoDB作为Mysql应用最广泛的存储引擎,有好多实现细节具有创新性。这本书针对InnoDB的表空间、索引构造、锁、事务等实现原理进行了详细的讲解。作者姜承尧是国内数据库圈的知名专家,这本书写得很走心,推荐学习Mysql数据库的同学购买。

豆瓣评分:8.5

Java程序员必读书籍(进群白piao)_第7张图片

MySQL技术内幕:InnoDB存储引擎(第2版)

京东

¥ 57.90

去购买​

《高性能Mysql》

图书简介:学习Mysql如果只打算看一本,那选这本《高性能Mysql》就足够了。在美团的时候隔壁团队组织过《高性能Mysql》的每周专题学习。这本书比较厚,针对Mysql的实现原理有详细的介绍,这些读起来会有些难度,但能提升内功。读完这本书,常见的Mysql问题应该都能解决。由于原理性的内容介绍很多,对找工作面试也很有帮助。

豆瓣评分:9.3

Java程序员必读书籍(进群白piao)_第8张图片

高性能MySQL(第3版)(博文视点出品)

¥ 103.00起

2

高级经典书籍(适合有大型项目架构经验的工程师)

《架构整洁之道》

图书简介:Bob大叔的又一本力作,几十年的系统设计经验的总结。不建议初学者看这本书,很多内容需要一定的经验积累才能看得懂。提出了很多新颖、实用的概念和方法。架构的本质就是用更少的人(钱)干更多得活,这句话真的很扎心,但是很实际。六边形模型的提出,对于系统的可拓展性也非常重要,只有业务模型才是稳定不变的,接入层、存储层都是会经常发生变化的,应该放在核心模型之外。懂得隔离变和不变,是称为架构师的开端。

豆瓣评分:8.7

Java程序员必读书籍(进群白piao)_第9张图片

架构整洁之道(博文视点出品)

¥ 80.00起

2

《A Philosophy of Software Design》

图书简介:作者John Ousterhout是斯坦福的教授,同时也是Tcl语言的发明人,具有多年硅谷创业经验,软件开发经验非常丰富。John Ousterhout已经60多岁,他说自己从产业界重新回到斯坦福就是在现在软件开发中还有很多难以解决的问题,他要通过学术研究的方法来解决这些难题。《A Philosophy of Software Design》是John回到斯坦福出版的第一本书,解决的问题也是当今软件行业最大的难题之一--软件腐化。两年前,华为宣布要投入10亿美元解决软件腐化问题,可见这个问题的严重性。大家都会遇到过这样的问题,一个项目刚建好的时候开发效率很高,bug也少,但随着项目的推进,系统变得越来越复杂,开发效率越来越低,bug也越来越多。最后成为老破系统,不得不推倒重来。很多同学说重构可以解决这个问题,但有没有想过为什么老是需要重构呢?有没有什么好的方法可以避免重构,又能让系统健康演进?这本书给出了答案,Google在这本书刚出版的时候就邀请John去公司给高级开发人员做专题演讲。目前国内本书还没有出版,需要的可以在美亚购买。我是18年托同学从美国带回来的读的。

豆瓣评分:8.5

《领域驱动设计》

图书简介:DDD的经典书籍。现在微服务设计都要做领域划分,如何有效地划分边界,做良好的架构设计,这本书都有介绍。

豆瓣评分:8.3

Java程序员必读书籍(进群白piao)_第10张图片

领域驱动设计 软件核心复杂性应对之道 修订版(异步图

¥ 56.00起

2

《Building Evolutionary Architectures》

图书简介:这本书在国外推荐的人很多,豆瓣评分低有可能是很多人并没有读懂这本书。这本书很偏理论,针对现有的架构模式包括单体架构、微服务架构、响应式架构、数据驱动式架构都进行了理论分析,讲出了优缺点。并对如何设计可演进式架构给出了建议。这本书的缺点也是太偏理论,看完会感觉可操作性不强,可以和《A Philosophy of Software Design》结合起来看。

豆瓣评分:7.3

推荐学习路线

Java学习和其他语言学习一样,是一个理论学习和编码实践相结合的过程,通过理论学习,掌握基本知识,然后去编码实践会发现自己不懂的地方,然后再来学习理论。依次循环,螺旋状上升。具体的学习可以分为几个阶段

小白入门阶段

  1. 先学习《Java核心技术》来了解Java语言基础知识,同时把课后题选一些做做。语言是基础,但也没必要花太多的时间,因为语言书都很厚,如果仔仔细细的看一遍,3个月差不多就过去了。推荐花1个月时间来了解Java基本知识。
  2. 学习《Spring实战》,同时着手搭建一个简单的Web后台应用。Java主要的方向就是做Web后台开发,Spring是必须可少的框架。通过学习《Spring实战》可以对Spring框架有个基本的了解,学完之后应该能自己动手写个基于Spring Boot的小应用。需要注意的是,操作数据库最后用Mybatis,Hibernate和Spring JDBC实际项目中用的很少。
  3. 学习《SQL必知必会》。通过第二步,应该已经了解了如何搭建Web后台项目,但是数据库的具体操作应该还不熟悉。通过学习《SQL必知必会》可以对常见的数据库操作有基本的了解,应付一般的开发需求应该没问题了。
  4. 学习Maven、Git这些项目管理工具,都是项目中常用到的。

经过这一阶段的学习,应该已经能搭建简单的Web后台项目,能够实现《学生信息管理系统》这样的项目。但是对于项目底层的原理还没有了解,不要慌,先动起来,能完成一个网站的后台开发会让人很有成就感,提高学习的积极性。至于原理性的东西,后面会逐步补上。

初级进阶阶段:

  1. 学习编码规范。编码规范其实非常重要,尤其是学习的初期阶段,养成一个良好的编码规范非常有必要。可以学习《重构》来了解什么样的代码才是好的代码,如何去除代码中的Bad smell。同时看下《阿里巴巴Java开发手册》,这个手册更加具体,每条都是可以执行的规范,并且提供了IDE插件,检查代码是不是规范非常方便。
  2. 学习《深入理解计算机系统》了解各种原理。这个阶段其实需要学习网络、操作系统、编译原理、组成原理等多门计算机课程才能了解Web后台项目代码背后的原理,但是系统的学习会很费时间。这里推荐《深入理解计算机系统》这本书,作为一本导论性质的书,覆盖面很广,并且有一定的深度。这本书有一定的难度,但是学完会让你收获很大,为了以后能找份好工作,加油吧。
  3. 深入学习数据库,推荐《MySQL技术内幕:InnoDB存储引擎》。数据库其实是后台开发很重要的一部分,如何建索引,如何联合查询,都需要对数据库的实现原理有一定的了解。MySQL是现在互联网公司用的最多的数据库,《MySQL技术内幕:InnoDB存储引擎》针对MySQL的实现原理进行了介绍,这一阶段很适合看这本书。注意,这本书里有些内容还是比较深的,看不懂的可以先跳过。
  4. 开始看一些简单的开源项目。看书的同事可以动手搞一些项目,可以看Spring社区的Demo项目学习下,并自己动手实现同样功能的项目。

经过了进阶阶段的学习,编码水平应该有了显著的提升,并且有了一定的代码阅读能力,对计算机的基本原理也有所掌握。和入门阶段比,经过了这一阶段会有了更多的困惑,感觉不懂的地方更多了,这是正常的,因为你的知识边界在拓宽,未知的边界也变得更广,这一阶段难度显著提升,更需要你的坚持。

中级进阶阶段:

近期更新,敬请期待

高级进阶阶段:

近期更新,敬请期待

走向成熟阶段:

近期更新,敬请期待

Java开发常用资源

开发工具:推荐Intellij Idea,Eclipse开发效率不如Idea,不推荐使用。

问题搜索网站:https://stackoverflow.com/ 老外搞技术还是很认真的,Stack Overflow上的回答质量比国内的同类网站要高很多

教程网站:https://www.tutorialspoint.com 交互式学习网站,教程指令挺高,适合快速入门

JSON格式化工具网站:JSON在线解析及格式化验证 - JSON.cn 在线JSON校验格式化工具(Be JSON) 这两个都不错

刷题网站:LeetCode 英文网站 中文版本 力扣

技术博客:阿里技术 美团技术团队 国内大公司中Java用的最多的就是阿里和美团(前东家,但非广告),这两家的技术博客都入职了知乎,分享的技术文章质量都很高,强烈推荐

知乎技术大牛推荐:

R大,Java虚拟机专家,Java方面有很多高赞回答

RednaxelaFX​www.zhihu.com/people/rednaxelafx

阿莱克西斯,美国亚马逊技术专家,书迷,对编程的本质有深刻的理解

阿莱克西斯​www.zhihu.com/people/ming-zi-zong-shi-hen-nan-qi

阿莱克西斯的必看回答,关于编程本质的理解,索隆看完感觉收获很大

编程到底难在哪里?1.7 万赞同 · 765 评论回答

看书是学习计算机基础知识的好方法,尤其是看大佬们写的经典书籍,是程序员提升内功的捷径。但计算机是个实践科学,在看书的同时,通过参与具体的项目,理论实践相结合才能提全面提升自己的实力,早日拿到大厂Offer。现在开课吧有一门前腾讯高级开发工程师亲自带的高薪Java突击课,会带大家做实战项目,并且会针对简历、面试做指导,对于处于初级阶段的程序员或者在校学生还是帮助很大的,感兴趣的同学可以点下面的链接白嫖体验课。

【Java入门必备】超适合小白的0基础课程:直播课+编码实现+辅导答疑

已失效 

Java程序员成长常见问题解答

问题:文中提到Java学习需要看书和实践相结合?那哪里去找这些项目呢?

答案:学习初期建议做课后题,比如像《Java编程思想》、《Head First Java》这种语言书都会有练习题,初期对语言不熟悉,可以先把这些练习题做了。

语言熟悉了可以往两个方向积累实践经验,一个方向是算法方法,多刷算法题,如果不参加ACM这种编程比赛,建议刷LeetCode,因为和POJ这种纯算法网站相比,LeetCode的题目很多都是产业界实际项目抽象出来的,更有工程意义,和面试题也更加接近;另外一个方向是产业界实际项目,可以从github上找,比如Spring的示例项目(https://github.com/spring-projects/spring-mvc-showcase)等。

问题:我是非计算机专业的学生,看到计算机专业赚钱很多,我要不要转行搞计算机?

答案:和其他专业相比,计算机专业收入尤其是起薪还是不错的。但是现在也过了快速发展期,入行就能赚大钱的时代已经过去了,计算机行业加班也比较多、中年失业风险比较大。所以,不建议无脑转行计算机。如果喜欢编程并擅长编程是可以转行计算机的,不过不喜欢又不擅长不建议转行计算机。那么如何判断自己是否真正喜欢并擅长呢?可以先自学3个月编程试试,每天学习5个小时,看3个月后自己是否依然还喜欢编程,是否编程水平长进的比较快。如果答案都是是的话,可以考虑转行计算机。记住,不要只凭第一感觉,学了hello world就感觉自己适合这行,立马转行计算机,这是不行的。一定要每天抽出几小时坚持自学一段时间后再下结论,因为好多同学坚持不了3个月就放弃了,发现自己其实不适合。

详细解答可以参考索隆最近写的这个回答

2020年java市场饱和了嘛?现在转行学java会不会太迟?79 赞同 · 31 评论回答

问题:为什么那么多人选择Java作为职业发展方向?

答案:首先语言没有高低之分,除了java其他的很多语言也非常优秀。Java有这么高的占有率是因为Java学习门槛低,开源生态做得好。现在国内阿里、美团、携程这些公司都是以Java作为主要开发语言。这些大厂同时培养了很多小公司的工程师和技术负责人,让Java的应用更加广泛。对于一个公司来讲,由于生态和人才市场的繁荣,很容易组建一个Java开发团队,而像Go需要功能也很强大,但很难招到足够的人才。这样就形成了马太效应。对于国内的学生来讲,学习Java是一个比较好的选择,因为毕业后会有足够多的工作机会和发展空间,所以越来越多的人选择Java作为职业发展方向。

问题:如何快速提升编码水平?

答案:当然初期提升编码水平的关键还是多练,先积累2W行变成经验才能算入门。入门以后快速提升编码水平有2个切实有效的方法:

  1. 读大牛的代码,和写论文一样,读A类的顶级文章,学得好了可以发出B类的文章,整天读水平一般的国内文章,最后毕业都会成问题。写代码也一样,一定要多读大牛的、经典的代码。有2个来源,一个是可以读JDK源码,平时写代码用到JDK的的各种类和方法可以点进去看看JDK官方的大牛是怎么写代码的;另外一个是开源社区的知名项目,优先阅读国外的项目,比如Google的grpc源码https://github.com/grpc/grpc-java
  2. 找高手帮着检视代码。近几年我会带一些新人,不管是之前在美团还是现在在券商,对于新人来讲高手帮着检视代码非常重要,尤其是刚进公司。代码中的错误、不规范、实现不够优美的地方都会被指出来,来来回回检视上两个月,代码水平会有很大提升。现在很多培训机构也发现了这一点,我发现腾讯课堂的一些官方课就提供代码检视服务,一次100元左右,如果真是资深工程师帮着检视的话,还是很值的(注:和腾讯课堂没有任何利益关系,这里只是举个例子)。如果公司没有高手帮着检视代码,又不想花钱怎么办呢?方法是有的,去开源社区提PR,自然会有大牛帮你检视代码,当然,前提是你要能看懂知名开源项目的源码,并且能解Bug。

问题:我是一名本科生,想毕业后找一份Java工程师的工作,需要参加Java培训班吗?

问答:索罗本科学的是物理专业,因为喜欢计算机,本科自学的计算机课程,硕士读的是计算机。我之前一直认为学习计算机是不需要报培训班的。但是最近几年,自己会带一些项目,也会接触一些外包同学,有些同学就是培训班出来的,有些本来是做其他行业工作的,通过培训班快速转入了计算机行业,经过几年的磨炼水平也不错。

现在看来,如果还在读大一大二,自学就可以,因为计算机行业的知识更新很快,自学本身就是程序员的基本技能,并且现在网上资料比索罗读书的时候要丰富太多。如果已经大三大四了,离找工作时间所剩不多了,可以考虑报辅导班,但要注意培训班只是个速成班,只能让有机会进入计算机行业,要成为一个优秀的程序员,还是要靠自己不断地学习,成为大牛之路没有捷径,必须要用正确的方法不断的努力。

问题:工作中没有高并发场景,但是高并发是互联网公司面试必问的问题,如何积累高并发经验呢?

回答:简单的讲可以参与知名开源高并发中间件比如Dubbo、Grpc的开发来积累这方面的经验,刚开始难度会比较大,并且要给知名项目提交不错的PR需要持续的努力,但是含金量很高。国内包括阿里、美团在内的知名公司都会去知名项目的贡献者列表里找联系方式发面试邀请。具体的操作方法可以参考索隆这个高赞回答

Java程序员必读书籍(进群白piao)_第11张图片

有技术问题需要交流欢迎加入我们的资源群853665602

原创码字不易,感觉有帮助的话可以点赞支持下,让更多的人看到。

你可能感兴趣的:(经验分享,java,职场和发展,程序人生,java-ee)