java零基础入门书籍(java零基础自学书籍)
一、java初学推荐书籍有哪些
简介
怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序员经常会问到的问题
笔者完全从自身的自学经历出发,以初学者的视角挑选出如下的这些图书。
初级书单《编写高质量代码——改善Java程序的151个建议》
这是一本值得入门java的人放在床头的书。此书内容广泛、要点翔实。大多数优秀程序设计书籍都需要看老外写的,但是这本讲述提高java编程水平的书还是不错的,适合具有基本java编程能力的人。
对于程序猿而言,工作久了,就感觉编程习惯对一个人很重要。习惯好,不仅工作效率告,而且bug少。这本书对提高个人的好的编程习惯很有帮助。
《Java程序员修炼之道》
此书涵盖了Java7的新特性和Java开发的关键技术,对当前大量开源技术并存,多核处理器、并发以及海量数据给Java开发带来的挑战作出了精辟的分析,提供了实践前沿的深刻洞见,涉及依赖注入、现代并发、类与字节码、性能调优等底层概念的剖析。
书中的道理很浅显,可是对于菜鸟却是至理名言。基本为你勾勒了一个成熟软件程序员专家所需要的所有特性。我自觉地获益颇多,其中很多事情,要么在当时是自己没有想到的,要么是发生了,自己没有注意的等等。给我影响很大。
《Java8实战》
本书全面介绍了Java8这个里程碑版本的新特性,包括Lambdas、流和函数式编程。有了函数式的编程特性,可以让代码更简洁,同时也能自动化地利用多核硬件。全书分四个部分:基础知识、函数式数据处理、高效Java8编程和超越Java8,清晰明了地向读者展现了一幅Java与时俱进的现代化画卷。
这是了解lambda表达式最好的入门书籍了。在网上也学习了lambda表达式,感觉会用,就是不知道原理,稍微换一下场景又不会用了。这本书绝对是学习java8新特性的最好书籍。
《有效的单元测试》
此书由敏捷技术实践专家撰写,系统且深入地阐释单元测试用于软件设计的工具、方法、原则和佳实践;深入剖析各种测试常见问题,包含大量实践案例,可操作性强,能为用户高效编写测试提供系统实践指南。
介绍了单元测试的各个方面,TDD、testdouble、测试的坏味道、可测试的设计等等,每个主题需要深入的话,还需要配合其它书籍和实践,非常适合入门单元测试。书中例子非常全面,看完对使用Junit进行单元测试会有一个大的长进,而且用java语言编写,内容很新。
《Java核心技术:卷2高级特性》
此书系统全面地讲解Java语言的核心概念、语法、重要特性和开发方法。本书全面覆盖Java技术的高级主题,包括流与文件、XML、网络、数据库编程、国际化等,详细描述了图形与GUI编程,还涉及安全、远程方法、注解处理、本地方法等。本书对Java技术的阐述精确到位,叙述方式深入浅出,并包含大量示例代码,能够帮助读者充分理解Java语言并灵活应用。
卷二虽然是高级特性,但是其中的io、文件系统、正则表达式、网络、jdbc也是日常编程中非常常用的组件,不可不看。此书是一本非常轻松的Java技术书,不仅原文写得好,译者翻译的也非常流畅。在我对翻译的书绝对无望的时候,它力挽狂澜的告诉我,事情还没有坏到这个地步。
《代码整洁之道》
代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。
如果每个例程都让你感到深合己意,那就是整洁代码。如果代码让编程语言看起来像是专为解决那个问题而存在,就可以称之为漂亮的代码。
《数据结构与算法分析-Java语言描述》
本书是java数据结构与算法方面的三宝之一,除了这三本其他的已经没有意义了。这三宝分别是:
*黑宝书《数据结构与算法分析java语言描述》markallenweiss
*蓝宝书《java数据结构和算法》robertlafore
*红宝书《算法》robertsedgewick
黑宝书胜在公式推理和证明以及算法的简洁和精炼,此外习题较多。蓝宝书胜在对算法的深入浅出的讲解,演示和举例,让艰涩的理论变得很容易理解。红宝书胜在系出名门斯坦福,演示通俗易懂,内容丰富。有了这三宝,算法不用愁,学完以后再看《算法导论》就容易多了。
本书从讲解什么是数据结构开始,延伸至高级数据结构和算法分析,强调数据结构和问题求解技术。本书的目的是从抽象思维和问题求解的观点提供对数据结构的实用介绍,试图包含有关数据结构、算法分析及其Java实现的所有重要的细节
中级书单《重构:改善既有代码的设计》
重构,绝对是写程序过程中最重要的事之一。在写程序之前我们不可能事先了解所有的需求,设计肯定会有考虑不周的地方,而且随着项目需求的修改,也有可能原来的设计已经被改得面目全非了。更何况,我们很少有机会从头到尾完成一个项目,基本上都是接手别人的代码,我们要做的是重构,从小范围的重构开始。
重构是设计,设计是art,重构也是art.一个函数三行只是语不惊人死不休的说法,是对成百上千行代码的矫枉过正。更一个般的看法是一个函数应该写在一页纸内。
《EffectiveJava》
这样一本书本该早就读了,然而最近才看完。看完觉得对于一些编程规则深层的原理有了一些认识。之前我只是知道这些口口相传的规则,却不知道为什么,在这本书中找到了一些答案。书中涉及到了java编程方方面面的规则,包括类、接口、创建对象、类中的函数、函数的参数、异常。
如果你使用刚刚学会的Java做了一个小应用程序,那么你就可以开始有选择地看这本书。书中分别对Java的不同特性分章节给予作者本人的建议。如果你还没有用到其中的某一特性,那么就没必要读相关的章节,跳过去。只有你经历过了,摔倒过了,困扰过了,你才会与书中的建议产生共鸣
《Java并发编程实战》
本书深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量。
java进阶必看,多线程的最佳书籍。
《实战Java高并发程序设计》
此书主要介绍基于Java的并行程序设计基础、思路、方法和实战。首先,立足于并发程序基础,详细介绍Java中进行并行程序设计的基本方法。第二,进一步详细介绍JDK中对并行程序的强大支持,帮助读者快速、稳健地进行并行程序开发。第三,详细讨论有关“锁”的优化和提高并行程序性能级别的方法和思路。第四,介绍并行的基本设计模式及Java8对并行程序的支持和改进。第五,介绍高并发框架Akka的使用方法。最后,详细介绍并行程序的调试方法。
在集群和分布式环境下,java内置锁逐渐失去了用武之地,但是锁和并发的思想还是通用而且值得学习的。看过java并发编程实战以后再读这本书,每一个知识点都比较精炼而且代码示例简单易懂,没有晦涩难懂的翻译词,手绘图也有一种亲切感。缺点是没有附源码,需要自己去github上找。
《算法》
个人觉得是我见过的最简单易懂的算法入门书籍。以前搜刮过几本算法竞赛书,但是难度终归太大。本书使用Java语言实现算法,配有大量的图解,没有一句难懂的话,而且全都是模块化实现。讲的都是实用算法,没有那些高大上听着名字就让人感到很害怕的东西,个人觉得比CLRS实用性要强,更加适合入门的学习。
此书力图研究当今最重要的计算机算法并将一些最基础的技能传授给广大求知者。它适合用做计算机科学进阶教材,面向已经熟悉了计算机系统并掌握了基本编程技能的学生。本书也可用于自学,或是作为开发人员的参考手册,因为书中实现了许多实用算法并详尽分析了它们的性能特点和用途。这本书取材广泛,很适合作为该领域的入门教材。
《HeadFirst设计模式》
这是我看过最幽默最搞笑最亲切同时又让我收获巨大的技术书籍!森森的膜拜Freeman(s)!Amen!深入浅出,娓娓道来,有的地方能笑死你!写得很有趣,图文并茂,比起四人帮的那本,好懂了不知道多少倍。计算机世界的headfirst系列基本都是经典。不过只看书学明白设计模式是不可能的,这些只是前人的总结,我们唯有实践实践再实践了。
读这本书不仅仅是学习知识,而是在学习一种思考的方法,学习一种认知的技巧,学习一种成长的阶梯。总之,用你闲暇的时间来读这本书,并不亚于你专注的工作或学习。笔者强烈推荐此书,要成长为一名高级程序员,设计模式已经是必备技能了。
《Java编程思想》
就是一本能够让Java程序员轻松面对挑战,并最终取得胜利的经典书籍。本书深入浅出、循序渐进地把我们领入Java的世界,让我们在不知不觉中就学会了用Java的思想去考虑问题、解决问题。本书并不适合Java的初学者,更适合于有经验的Java程序员,这正是本书的魅力所在。但是,书中并没有涵盖Java所有的类、接口和方法,因此,如果你希望将它当作Java的字典来使用,那么显然就要失望了。
如果你开始觉得自己需要一些编程内功了,这本书就开始管用了,作为一本练习内功的基础书籍。把心静下来,老老实实打好内功根基,你会发现自己将会不一样,当然最直接的体现就是工资待遇上的。。从这本书开始,无论是走向架构,多线程或者虚拟机,路都会变得平坦很多。
高级书单《深入理解Java虚拟机》
本书是近年来国内出版的唯一一本与Java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨Java虚拟机的著作,不仅理论分析得透彻,而且书中包含的典型案例和最佳实践也极具现实指导意义。
我对本书最大的感受就是:全面。作为一个刚开始接触JVM的人,我感觉本书基本上把JVM中所涉及的概念涵盖到。在阅读的过程中还有一种感受:如果作者不介绍某个内容,我在参考Java虚拟机的文档的时候可能不会考虑到有这样的因素存在,或者不会那么容易理解。作为一本全面的引人入门的书籍,这本书实在是很赞。
《Java性能权威指南》
市面上介绍Java的书有很多,但专注于Java性能的并不多,能游刃有余地展示Java性能优化难点的更是凤毛麟角,本书即是其中之一。通过使用JVM和Java平台,以及Java语言和应用程序接口,本书详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,使程序如虎添翼。
为了理解gc那块看过来的,cms个人感觉讲的挺好的,和《深入理解java虚拟机》垃圾回收部分互为补充吧。有一点觉得挺赞:翻译的比较好,没有那种翻译腔!
《深入分析JavaWeb技术内幕》
这本书的整体感觉不错,基本上是从基本原理介绍出发的。适合互联网技术爱好者阅读,也可以作为技术架构参考书籍。本书不仅是介绍了基本知识和原理,很多东西作者是站在系统架构的原理出发的,所以对爱好系统架构的读者是很有帮助的。本书的主要特点是“图文并茂,有图,有事实,有真相”,阅读起来不枯燥,晦涩。
入行java两三年,说会但是对底层还是一知半解,遇到系统级问题就还是不知道怎么解决,所以要看深层次的书了,本书就是。
《大型网站系统与Java中间件实践》
此书围绕大型网站和支撑大型网站架构的Java中间件的实践展开介绍。从分布式系统的知识切入,让读者对分布式系统有基本的了解;然后介绍大型网站随着数据量、访问量增长而发生的架构变迁;接着讲述构建Java中间件的相关知识;之后的几章都是根据笔者的经验来介绍支撑大型网站架构的Java中间件系统的设计和实践
通过这本书可以学习到大量构建大型网站系统的核心技术,以及支撑大型网站的Java中间件的必备知识。作者在超大型电子商务网站的多年实战经验使得本书的内容极具价值。如果你所在的技术团队正在因面对大型网站而一筹莫展,或许你可以从这本书中得到启发。另外,如果想成为Java技术架构师,那么你也不应错过此书。
《大型网站技术架构:核心原理与案例分析》
此书通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web安全、系统发布、运维监控等在内的大型网站开发全景视图。
本书从多个层面说明了如何构建一个高可用、高性能、高可扩展性的网站系统,并结合了阿里巴巴及其他互联网企业先进的架构实践经验进行案例分析,讲述非常全面且具指导意义。本书从网站的架构设计、快速开发、高效部署、业务监控、服务治理、运维管理等多个角度描述了架构设计的相关重点,涉及的核心技术包括前端优化、CDN、反向代理、缓存、消息队列、分布式存储、分布式服务、NoSQL存储、搜索、监控、安全等一系列保证大型网站安全可靠运行的关键技术点。本书还提供了网站如何从小型网站伴随用户成长,逐步扩展到大型网站的架构演进思路,是互联网架构师们不可多得的一本技术参考书。
《企业应用架构模式》
招式套路可以千变万化,扎实深厚的“内功”却是始终如一!虽然企业应用涉及的软件技术不断翻新,但是基本的架构及设计思想却没有太多变化。将以前行之有效的设计思路和方法加以适当调整,并应用到当前的问题上,是最高效的做法。在一组专家级合作者的帮助下,Martin将40多种经常出现的解决方案转化成模式,最终融会成这本“内功心法”。在仔细研读、用心揣摩本书之后,希望它能够帮助你应对任何一种企业应用平台,驾驭任何一种企业应用技术—无论是现在的技术还是未来的技术。
开始看这本书时,觉得讲的太抽象,草草的翻了一遍,很多东西只有一个浅浅的一个印象。后来在用hibernate的时候,偶尔又重新翻开这本书。书里讲的很多东西,都在hibernate里面有体现。尤其是讲关系映射那章,在hibernate文档里面都只讲怎么做,不讲为什么,在书里讲的很清楚,看了很有收获。
《ExpertOne-on-OneJ2EEDevelopmentwithoutEJB》
选择一种架构、一种技术的依据是什么?RodJohnson认为,应该是基于实践的证据、来自历史项目或亲自试验的经验,而不是任何形式的偶像崇拜或者门户之见。书中谈到了企业应用方方面面的问题和解决办法,而这些方案无一不是这种“循证方法”的产物。除了把这些方案交给读者,RodJohnson通过这本书希望传达的、更为重要的信息正是“循证”的工作方式——那原本就应该是程序员的工作方式。
对Spring熟悉或者希望深入学习Spring框架精髓的工程师而言,本书必看,因为它就是是Spring框架发展的基石。
二、零基础的人如何学习Java
我看到很多人都在问如何学习Java这个问题,我想从学习方法和学习路线两大点来给大家讲讲,零基础到底怎样系统的学习Java。
首先说学习方法吧,一个小白想要系统地学习Java,并且顺利的成为一名Java工程师,高效的学习,不走弯路是很有必要的,那具体应该如何学习呢?
为了避免自己少走弯路,一名给自己讲解问题的老师是很有必要的。不管你是自学,培训机构学习,还是说在大学里面学习,解答疑惑的老师是必不可少的。不然很可能一个小小的问题都能困扰你一整天,其实有时候懂的人稍微一指点你就可以明白,但如果是自己去思考就可能需要花很长的时间,都不一定能够理解,并且不一定就理解对了。另外一定要勤动手,多练习。如果你是跟着免费视频看,而不是跟着视频边看边练习,哪怕你一天花上20来个小时看视频,都是白看。如果这样,那我劝你还是不要学Java了,浪费自己时间。我建议当天学习的内容一定要自己动手练习,反复的练习,这样才能真正的掌握一个知识点。其次,要有自己明确的学习路线。这个路线我们会在本文的下半段给大家详细讲解,按照我们给大家的路线学习,如果能掌握80%,你就是一名合格的初级Java工程师了。子曰:温故而知新。在学习新知识的同时也不要忘记复习前面的知识点,例如前面学习的HTML部分,你很有可能因为长期的不练习而忘记,这样的学习并不能称之为高效。要有目标感的去学习。例如我们正在学习Java,那么你学习Java的目标一定要相当明确,比如学习Java就是为了高薪,或者我学习Java是想要从事大数据方向的职业,等等。接下来就是关于学习路线:首先你得学习一点前端的内容,我们都知道Java现在最广泛的应用场景是在Web的开发,那么Web开发肯定是离不开前端页面的。虽然说企业都有专职的前端工程师,但是我们要求后端工程师也需要具备一定的前端知识,这不仅对你提升综合竞争力有很大的帮助,而且HTML相较于Java要简单很多,这也有助于树立你学习的信心,如果你一开始就被难到,那我相信你的学习热情很快就会被浇灭。接下来我们就可以开始学习Java的相关内容了,学习Java基础的时候,你一定要多动手练习,而不是瞪着两个眼镜去看,我相信动手的学习效率一定比直接看的学习效率高成倍之多。并且很多时候你想当然的事情,等你写出来运行后就会发现和自己想象的肯定是不一样的。那这个时候你就需要好好的去思考到底是哪里的问题了。那么基础部分主要包含以下知识点:面向对象思想-变量-操作符-控制流程-数组-类和对象-接口与继承-数字与字符串操作-日期-异常处理-I/O-集合框架-泛型-lambda-多线程-JDBC-Swing/awt(可以不学)-网络编程(socket)学到这时你可能会有点迷茫,因为你学习的这些东西看起来似乎毫无用处,但不要慌。这时你就可以进阶学习一些前后端关联的东西了,这样很容易满足你的成就感,比如我们可以做一个小项目,以最简单的进销存系统为例,你还需要在这里学习Tomcat-Servlet-HTTP协议-JSP-MVC思想-Filter过滤器-listener监听器等知识,那么这时你基本就具备了Web开发的能力了,赶快动手做个进销存系统找找成就感吧。接下来,是不是觉得自己应该学习框架啦?还有数据库呢?作为一名开发人员,不说要精通数据库,那也是需要熟悉数据库的,至少你要能独立编写较高质量的SQL,懂得简单的数据库调优,不要指望数据库部分的事情都交给DBA去做,要相信我们程序员是万能的,而且你代码中的SQL部分也是不管DBA的事的,所以作为一名Java工程师一定要熟练使用数据库,如果觉得数据库太多不知道学习哪一个的话就从mysql下手吧。最后就是框架部分了,根据目前的市场潮流来看建议学习以下几个框架:Spring-SpringMVC-MyBatis-SSM整合-SpringBoot。这一部分需要着重的去学习,因为你以后的工作都是与这些框架打交道了(很多企业是自研框架,但是只要学会了这几个,就一通百通了)。最后,你完成以上内容的学习就可以考虑找工作了,但是在找工作的同时你还是不能停止学习的脚步,准确的说是你在未来的日子里都不应该停止学习的脚步,你需要不断尝试了解更多的东西,互联网行业是一个瞬息万变的行业,你需要随时学习以便让自己不被淘汰。
三、求助,新手学java买什么书比较好
headfirstjava强力推荐,很适合新手去看。
生动活泼的语言,又附有实例,可以直接上机操作。
另外,我建议初学者,应该以视频学习为主,同时以看书为辅。
视频可以去网上找资源,入门视频一大堆,总有适合你的那一款。
在前期学习不用学的全部都明白,主要会用就行,到了后面再去探究实现的原理。
前期主要要把面对对象的思想了解清楚,当然每个人都有不同的理解形式。
java三大法宝,封装继承多态,要好好理清他们之间的联系。
还有就是要弄懂任何语言都有的选择结构,比如ifelse,while。
再有就是for循环,也要完全弄懂。
基本上,弄清楚这些再去深入学习就不会太难了。