Java工程师核心书单推荐
随便打开一个招聘网站,看看对高级
Java工程师的技能要求。
抛开其它的经验能力等等,单纯从技术,或者说知识上来讲,可以发现一些共通的地方。
- Java基础
- 计算机基础
- 数据库,SQL/NoSQL
- 常用开源框架
- 分布式/微服务
- 中间件,缓存、消息中间件
书籍是获取知识的最好来源之一。技术书籍浩如烟海,市场上有不少《XXX入门到精通》,《XXX王者归来》,《21天学会XXX》这样的书,当然也有不少经典,个人的精力有限,这些经典不可能都通读。所以·,博主尝试整理一个Java工程师所需知识的核心书单,尽可能优中选优,挑选出Java工程师必备知识的一些最核心、最经典的书籍,希望能一起学习,一起进步。
Java基础
《Java核心技术》
不用多说,Java领域最有影响力和价值的著作之一。
《Java编程思想》
这个也不用多介绍了吧,永恒的经典。
上面两部经典,白璧微瑕的大概就是翻译了,技术译著难免会有些词不达意的地方,英语阅读能力过关的话可以看英文原作。国内的《疯狂Java讲义》也尚可。
Java进阶
并发
《Java并发编程的艺术》
博主觉得不错,但豆瓣评分没有想象的高,可能是三人合作,导致内容有些不连贯。国内作者写的Java并发书籍,比较简单易懂,广为流传的Java线程状态变化图就出自本书。
还有一本《Java并发编程实战》,Java并发工具包主要作者之一的著作,但是翻译的锅,能看原版的建议看原版。
JUC相关最好的资料还是看源码,Doug Lea把他的One Peace都藏在了那里。
JVM
《深入理解Java虚拟机》
JVM,这一本就够了。有个博主写过:”你看到一篇JVM的文章,如果文章的最后没有写参考这本书,那一定是作者的版权意识不够。“
程序优化
《Effective Java》
和《Java编程思想》一样被称为神书,介绍了如何写健壮,高效的代码,当然阅读需要有一定的开发经验。
框架
Spirng
《Spring实战》
Spring入门经典书籍。
《Spring揭秘》
书比较老,但是概念和原理很清晰,看完之后,再看Spring5的源码也很不错。
SpringBoot
《深入浅出Spring Boot 2.x》
博主看过不少SpringBoot的书籍,个人感觉这本还不错,比较详细、全面。
MyBatis
MyBatis官方文档已经做得足够好了,基本的使用查看官网就够了。
《MyBatis技术内幕》
MyBatis源码解析的书不多,推荐这本,结合源码阅读更佳。
计算机基础
数据结构与算法
四大基础课中对Java工程师最重要的应该是《数据结构》,数据结构和算法一般不分家,所以放在一起。
《数据结构与算法分析》
国外数据结构与算法分析方面的经典教材,内容全面、缜密严格。
其实想推荐一本教材——严蔚敏老师的《数据结构》,但是这本书是C语言版的,代码实现也不是很多,所以看起来可能比较吃力。
还有另外一本《算法导论》,不多说了
计算机网络
《计算机网络》
还是忍不住推荐一本教材,比较全面、系统,但对非科班选手可能不友好。
《图解HTTP》
这本不用多介绍了吧,很生动的讲解HTTP协议的书籍,阅读起来比较友好。
操作系统
《深入理解计算机系统》
评价非常不错的计算机操作系统书籍,但是这种黑皮书可能啃起来有些困难。
这里带过了四大基础中的《计算机组成原理》,相比较一些比如嵌入式之类比较底层的开发而言,计组对Java开发可能没那么重要。当然,只是相对而言,理解一些编码、运算、指令、IO之类的还是对了解底层很有帮助的。作者学的时候用的唐朔飞编著的《计算机组成原理》教材。
数据库
MySQL
《SQL必知必会》
非常受欢迎的MySQL入门书籍,也可以当作工具书来用。
《高性能MySQL》
MySQL领域的经典著作,进阶必看。
Redis
《Redis 开发与运维》
从开发、运维两个角度总结了 Redis 实战经验,深入浅出地剖析底层实现,包含大规模集群开发与运维的实际案例。一些api的介绍也是以Java为主。
《Redis设计与实现》
Redis进阶经典书籍。
关于另一个流行的NoSQL MongoDB,考虑到应用场景没有上面两个广泛,所以没有列出,博主看过的《MongoDB实战》,觉得还可以。
分布式/微服务
《SpringCloud微服务实战》
还不错的SpringCloud书籍吧。
《Spring Cloud Alibaba 微服务原理与实战》
Netflex的一些组件进入了维护的状态,Spring Cloud Alibaba在最近流行了起来(技术的变迁真的太快),这方面的书不多,这本是相对而言推荐的多一些的。
经常被拿来和SpringCloud比较的另一个开源分布式框架,官方文档大概就已经足够了吧。
消息中间件
流行的三大消息中间件,各挑出一本吧。
《RabbitMQ实战指南》
简单清晰的RabbitMQ技术书籍。
《Kafka权威指南》
Kafka的好书还是不少的,这里推荐评分比较高的Kafka权威指南。
《RocketMQ实战与原理解析》
RocketMQ的书籍不多,这本书入门尚可,原理解析有些单薄了。
除了以上列出的主要一些主要分类,这里再补充一些。
容器推荐《Docker从入门到事件》《Kubernetes 权威指南》;
Maven推荐《Maven实战》;
Git推荐《ProGit》;
Linux自然是《鸟哥的Linux私房菜》;
Elasticsearch推荐《Elasticsearch实战》;
设计模式推荐《设计模式之禅》。
好了,主要的推荐就到这里,由于博主的技术视野有限,而且尽可能地压缩书单(学不动了),所以有些推荐未必十分合理,一些经典书籍也未列出,有不同意见或者补充,欢迎指出。
参考:
【1】:有什么值得推荐的Java书籍?
【2】:2020 Java 后端工程师的书单推荐 | 芋道源码 —— 纯源码解析博客
Java工程师核心书单推荐的更多相关文章
- 图灵社区 书单推荐:成为Java顶尖程序员 ,看这11本书就够了
java书单推荐 转自 http://www.ituring.com.cn/article/211418 “学习的最好途径就是看书“,这是我自己学习并且小有了一定的积累之后的第一体会.个人认为看书有两 ...
- 最强 Java 书单推荐,附学习方法
技术大佬用1w+字来告诉你该读什么书,循序渐进,并提供百度云盘下载地址.重要的是还有学习方法. 请肆无忌惮地点赞吧,微信搜索[沉默王二]关注这个在九朝古都洛阳苟且偷生的程序员.本文 GitHub gi ...
- java提升路线书单(原文自知乎刘欣)
复制黏贴自知乎刘欣大神,作为个人的书单与指导路线 原文链接:https://www.zhihu.com/question/19848946/answer/92536822 刘欣 追寻内心的真正兴趣 ...
- java开发必读 书单
希望读的书单 重构 改善既有代码的设计 设计模式 可复用面向对象软件的基础 高性能MySQL第3版 Effective Java第1版 Effective Java第2版 Java核心技术I-基础知识 ...
- 终于,我也要出一本C#的书了 - 我的写作历程与C#书单推荐
我之前的面试题停了很久,是因为 - 我写书去了. 前言 我于2012年3月开始工作,到现在马上就满六年了.这六年里,我从一个连Sql server是什么都不知道,只会写最简单的c#的程序员开始做起,一 ...
- .NET工程师的书单
短暂的假期里抽空整理了一份书单,以个人的见解这些应该是值得.NET工程师至少去看一遍的书籍.但所罗列的仅包括国内目前已出版的国外书籍的英文版,并不包含中文翻译及相关领域的中文书籍.这里没有任何歧视之意 ...
- Java后端技术书单
写博客记录技术上使用的各种问题,这个只能算是一个打游击. 如果要把一个知识学透,最有效的方式就是系统学习,而系统学习就是看书,书本上有清晰的学习路线以及相应的技术栈. 下面是我收集的Java后端的技术 ...
- 个人的java web开发书单
首发至个人博客http://www.zidafone.com/blog/36 以下是对一些读过的书和一些买后随便翻了翻的书的个人感觉.都是java web开发的程序员可能接触的书,其他的如设计/手机开 ...
- Linux 运维入门到跑路书单推荐
一.基础入门 <鸟哥的Linux私房菜基础学习篇>:最具知名度的Linux入门书<鸟哥的Linux私房菜基础学习篇>,全面而详细地介绍了Linux操作系统. https://b ...
随机推荐
- codeforces 1076E Vasya and a Tree 【dfs+树状数组】
题目:戳这里 题意:给定有n个点的一棵树,顶点1为根.m次操作,每次都把以v为根,深度dep以内的子树中所有的顶点(包括v本身)加x.求出最后每个点的值为多少. 解题思路:考虑到每次都只对点及其子树操 ...
- 创建AVL树,插入,删除,输出Kth Min
https://github.com/TouwaErioH/subjects/tree/master/C%2B%2B/PA2 没有考虑重复键,可以在结构体内加一个int times. 没有考虑删除不存 ...
- js optional chaining operator
js optional chaining operator js 可选链 可选链操作符( ?. )允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效. ?. 操作符的功能类似于 ...
- hihoCoder Challenge 2
#1046 : K个串 时间限制:40000ms 单点时限:2000ms 内存限制:1024MB 描述 兔子们在玩k个串的游戏.首先,它们拿出了一个长度为n的数字序列,选出其中的一个连续子串,然后统计 ...
- AirPods 2 声音非常小
AirPods 2 声音非常小 bug 停用蓝牙绝对音量 可能是因为开启了耳机的绝对音量功能; 绝对音量功能开启后,耳机的音量和手机音量分开, 可以在手机设置里停用绝对音量; refs http:// ...
- Azure Functions(二)集成 Azure Blob Storage 存储文件
一,引言 上一篇文章有介绍到什么是 SeverLess ,ServerLess 都有哪些特点,以及多云环境下 ServerLess 都有哪些解决方案.在这众多解决方案中就包括 Function App ...
- [转]hpp.h与.h的区别
原文网址:https://blog.csdn.net/liuzhanchen1987/article/details/7270005 hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实 ...
- css中a元素放长英文字母或者数字自动换行的解决
在做链接分享页面的时候遇到a元素中的下载链接长英文溢出不换行的问题 在给他以及他父元素设置宽度依然没有解决这个问题 最后解决办法给元素加上word-wrap:break-word 解释:使用break ...
- 创建时间和更新时间两个选一个的情况和select case when ... then ... else ... end from 表 的使用
1.查询时间,如果更新时间update_time为空就查创建时间create_time,否则查更新时间update_time select update_time,create_time, case ...
- RabbitMQ之死信队列
1:何为死信队列 死信队列也是一个正常的队列,可以被消费. 但是,死信队列的消息来源于其他队列的转发. 2:如何触发死信队列 1:消息超时 2:队列长度达到极限 3:消息被拒绝消费,并不再重进队列,且 ...