1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

[docs improve] Java 书籍精选完善

This commit is contained in:
guide 2022-04-24 12:03:47 +08:00
parent ebba51334e
commit 62b00e97e1
5 changed files with 74 additions and 159 deletions

View File

@ -17,9 +17,9 @@ export const sidebarConfig = defineSidebarConfig({
"cs-basics",
"cs-basic-coureses",
"database",
"search-engine",
"java",
"software-quality",
"q&a",
],
"/about-the-author/": [
{

View File

@ -7,17 +7,7 @@ head:
content: 数据库书籍精选
---
数据库系统这门课在程序员的职业规划中也是非常重要的一门课甚至有些信息管理的专业的也要开设这门课。说这门课重要是因为对于程序员的发展来说一方面关系数据库系统、SQL 语言以及数据库的三段设计(概念设计、逻辑设计和物理设计)都是开发数据库应用程序的必备技能,通常在数据库应用开发岗位的面试中,数据库的设计是面试官青睐的考点,如何能根据需求分析并设计出完善的数据库系统,是程序员的必备技能,设计好了完善的数据库系统之后,再用 SQL 语言等工具对其进行实现,那么这些其实就是个人的编码能力了。
另一方面,数据库中的查询处理、查询优化、并发控制、事务管理、日志管理等内容,都是数据库中稍微进阶一点的技能,对于一些对岗位要求比较高的,这些技术同样要求熟练掌握。对一些查询优化的等数据库底层实现的内容,也是新型数据库开发的前置基础技能,对于一些研究型人才来说,也是非常重要的。
数据库系统与其他计算机专业课一样知识体系非常清晰而且他有一个非常突出的特点就是实际与理论相结合。SQL 语言,数据库设计等,这些都属于实践应用部分,而对于一些范式定义,两段锁协议并发控制等,这些就偏向于理论多一些。要想学好数据库系统,建议大家:
1. **在课程的前期阶段,熟练掌握 SQL 语言的应用,同时不要忘了训练关系代数的应用能力。** 关系代数虽然在数据库的实现上作用较小,但在学习阶段,结合关系代数和 SQL 语言学习,可以更加有体系地理清 SQL 语言各个子句之间的逻辑关系,有助于 SQL 语言的学习和记忆。关系代数的学习更像是建立一种思维,这种思维到了数据库底层实现学习环节也是非常有用的。
2. **在课程的中期阶段,熟练掌握 ER 图的应用,并强化数据库设计中的理论部分。** ER 图的熟练应用可以更加轻松地设计出关系数据库模式,而理论部分同样不能忽视,设计理论的运用决定了数据库的正确性和健壮性。
3. 而在课程的后期阶段,主要就是以理论居多,而且这些理论并不容易能找到配套的实验练习。**这里再次强调,凡是理论知识的学习,尽量要结合图解的方式**。
## 数据库基础
## 基础
教材的话,强烈推荐 **[《数据库系统概念》](https://book.douban.com/subject/10548379/)** ,这本书涵盖了数据库系统的全套概念,知识体系清晰,是学习数据库系统非常经典的教材!不是参考书!
@ -80,18 +70,3 @@ head:
如果你要学习 Redis 的话,强烈推荐 **[《Redis 设计与实现》](https://book.douban.com/subject/25900156/)** 和 **[《Redis 实战》](https://book.douban.com/subject/26612779/)** 这两本书。另外,**[《Redis 开发与运维》](https://book.douban.com/subject/26971561/)** 这本书也非常不错,既有基础介绍,又有一线开发运维经验分享。
![](https://oscimg.oschina.net/oscnet/up-9f20f5e860d143181bd27343abfef3af2ce.png)
下面是我总结的一些关于并发的小问题,你可以拿来自测:
1. Redis 和 Memcached 的区别和共同点
2. 为什么要用 Redis/为什么要用缓存?
3. Redis 常见数据结构以及使用场景分析
4. Redis 没有使用多线程为什么不使用多线程Redis6.0 之后为何引入了多线程?
5. Redis 给缓存数据设置过期时间有啥用?
6. Redis 是如何判断数据是否过期的呢?
7. 过期的数据的删除策略了解么?
8. Redis 内存淘汰机制了解么?
9. Redis 持久化机制(怎么保证 Redis 挂掉之后再重启数据可以进行恢复)
10. Redis 缓存穿透、缓存雪崩?
11. 如何保证缓存和数据库数据的一致性?
12. ......

View File

@ -5,21 +5,9 @@ category: 计算机书籍
## Java 基础
如果你之前没有学习过编程的话,我建议你可以看看视频教程。
**[《Head First Java》](https://book.douban.com/subject/2000732/)**
像尚硅谷的 [《 Java 基础教程系列》](https://www.bilibili.com/video/BV1Kb411W75N) 和韩顺平老师的[《零基础 30 天学会 Java》](https://www.bilibili.com/video/BV1fh411y7R8)就很不错。
![](https://img-blog.csdnimg.cn/20210409143842888.png)
学习过 Java 的朋友,大部分应该都看过韩老师的课程吧!韩老师毕业于清华大学,录制的视频课程质量都非常高。内容易懂,并且不失严谨。
韩老师的[《零基础 30 天学会 Java》](https://www.bilibili.com/video/BV1fh411y7R8)系列不光会教你 Java 基础,还会帮你建立编程思想,让你知道学习了 Java 之后,你可以从事什么工作。
看视频的同时,配套一本好书也是非常有作用的。
**[《Head First Java》](https://book.douban.com/subject/2000732/)** 这本书在是入门 Java 的很不错的书籍 。
![](https://img-blog.csdnimg.cn/20210328154409343.png)
![《Head First Java》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424103035793.png)
《Head First Java》这本书的内容很轻松有趣可以说是我学习编程初期最喜欢的几本书之一了。同时这本书也是我的 Java 启蒙书籍。我在学习 Java 的初期多亏了这本书的帮助,自己才算是跨进 Java 语言的大门。
@ -29,37 +17,33 @@ category: 计算机书籍
我个人觉得这本书还是挺适合编程新手阅读的,毕竟是 “Head First” 系列。
![](https://img-blog.csdnimg.cn/20210328154428110.png)
**[《Java 核心技术卷 1+卷 2》](https://book.douban.com/subject/34898994/)**
**[《Java 核心技术卷 1+卷 2》](https://book.douban.com/subject/34898994/)** 这两本书也非常不错。不过,这两本书的内容很多,全看的话比较费时间。我现在是把这两本书当做工具书来用,就比如我平时写文章的时候,碰到一些 Java 基础方面的问题,经常就翻看这两本来当做参考!
![《Java 核心技术卷 1》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424101217849.png)
这两本书也非常不错。不过,这两本书的内容很多,全看的话比较费时间。我现在是把这两本书当做工具书来用,就比如我平时写文章的时候,碰到一些 Java 基础方面的问题,经常就翻看这两本来当做参考!
我当时在大学的时候就买了两本放在寝室,没事的时候就翻翻。建议有点 Java 基础之后再读,介绍的还是比较深入和全面的,非常推荐。
![](https://img-blog.csdnimg.cn/20210328154443491.png)
**[《Java 编程思想》](https://book.douban.com/subject/2130190/)**
**[《Java 编程思想 》](https://book.douban.com/subject/2130190/)** 这本书被很多人称之为 Java 领域的圣经_感觉有点过了~~~_。不太推荐编程初学者阅读有点劝退的味道稍微有点基础后阅读更好。
![《Java 编程思想》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424103124893.png)
这本书被很多人称之为 Java 领域的圣经_感觉有点过了~~~_。不太推荐编程初学者阅读有点劝退的味道稍微有点基础后阅读更好。
我第一次看的时候还觉得有点枯燥,那时候还在上大二,看了 1/3 就没看下去了。
![](https://img-blog.csdnimg.cn/20210328154754434.png)
**[《Java 8实战》](https://book.douban.com/subject/26772632/)**
另外Java 8 算是一个里程碑式的版本,现在一般企业还是用 Java 8 比较多。掌握 Java 8 的一些新特性比如 Lambda、Strean API 还是挺有必要的。这块的话,我推荐 **[《Java 8 实战》](https://book.douban.com/subject/26772632/)** 这本书。
![《Java 8实战》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424103202625.png)
学完 Java 基础之后,你可以用自己学的东西实现一个简单的 Java 程序,也可以尝试用 Java 解决一些编程问题,以此来将自己学到的东西付诸于实践。
不太建议学习 Java 基础的之后通过做游戏来巩固。为什么培训班喜欢通过这种方式呢?说白点就是为了找到你的 G 点。新手学习完 Java 基础后做游戏一般是不太现实的,还不如找一些简单的程序问题解决一下比如简单的算法题。
记得多总结!打好基础!把自己重要的东西都记录下来。 API 文档放在自己可以看到的地方以备自己可以随时查阅。为了能让自己写出更优秀的代码《Effective Java》、《重构》 这两本书没事也可以看看。
Java 8 算是一个里程碑式的版本,现在一般企业还是用 Java 8 比较多。掌握 Java 8 的一些新特性比如 Lambda、Strean API 还是挺有必要的。这块的话,我推荐 **[《Java 8 实战》](https://book.douban.com/subject/26772632/)** 这本书。
## Java 并发
多线程这部分内容稍微会比较难以理解和实践。如果你刚学完 Java 基础的话,我建议你学习并发这部分内容的时候,可以先简单地了解一下基础知识比如线程和进程的对比。到了后面,你对于 Java 了解的更深了之后,再回来仔细看看这部分的内容。
下面是一些我比较推荐的书籍。
**[《Java 并发编程之美》](https://book.douban.com/subject/30351286/)**
![《Java 并发编程之美》](https://img-blog.csdnimg.cn/img_convert/c6eaa091d662cb160e1209ddb5efc94b.png)
![《Java 并发编程之美》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424112413660.png)
_这本书还是非常适合我们用来学习 Java 多线程的。这本书的讲解非常通俗易懂作者从并发编程基础到实战都是信手拈来。_
@ -67,23 +51,23 @@ _这本书还是非常适合我们用来学习 Java 多线程的。这本书的
**[《实战 Java 高并发程序设计》](https://book.douban.com/subject/30358019/)**
![《实战 Java 高并发程序设计》](https://img-blog.csdnimg.cn/img_convert/aea1bea73193a97166321c6114f7fb9d.png)
![《实战 Java 高并发程序设计》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424112554830.png)
这个是我第二本要推荐的书籍,比较适合作为多线程入门/进阶书籍来看。这本书内容同样是理论结合实战,对于每个知识点的讲解也比较通俗易懂,整体结构也比较清。
**[《深入浅出 Java 多线程》](https://github.com/RedSpider1/concurrent)**
![](https://img-blog.csdnimg.cn/20210328154928360.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70)
![《深入浅出 Java 多线程》在线阅读](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424112927759.png)
这本书是几位大厂的大佬开源的。
这几位作者为了写好《深入浅出 Java 多线程》这本书阅读了大量的 Java 多线程方面的书籍和博客然后再加上他们的经验总结、Demo 实例、源码解析,最终才形成了这本书。
这本开源书籍是几位大厂的大佬开源的。这几位作者为了写好《深入浅出 Java 多线程》这本书阅读了大量的 Java 多线程方面的书籍和博客然后再加上他们的经验总结、Demo 实例、源码解析,最终才形成了这本书。
这本书的质量也是非常过硬!给作者们点个赞!这本书有统一的排版规则和语言风格、清晰的表达方式和逻辑。并且每篇文章初稿写完后,作者们就会互相审校,合并到主分支时所有成员会再次审校,最后再通篇修订了三遍。
在线阅读https://redspider.gitbook.io/concurrent/ 。
**[《Java 并发实现原理JDK 源码剖析》](https://book.douban.com/subject/35013531/)**
![](https://img-blog.csdnimg.cn/0b1b046af81f4c94a03e292e66dd6f7d.png)
![《Java 并发实现原理JDK 源码剖析》-豆瓣](https://img-blog.csdnimg.cn/0b1b046af81f4c94a03e292e66dd6f7d.png)
这本书是 2020 年新出的,所以,现在知道的人还不是很多。
@ -91,40 +75,11 @@ _这本书还是非常适合我们用来学习 Java 多线程的。这本书的
不论是你想要深入研究 Java 并发,还是说要准备面试,你都可以看看这本书。
下面是我总结的一些关于并发的小问题,你可以拿来自测:
1. 什么是线程和进程? 线程与进程的关系,区别及优缺点?
2. 说说并发与并行的区别?
3. 为什么要使用多线程呢?
4. 使用多线程可能带来什么问题?(内存泄漏、死锁、线程不安全等等)
5. 创建线程有哪几种方式a.继承 Thread 类;b.实现 Runnable 接口;c. 使用 Executor 框架;d.使用 FutureTask
6. 说说线程的生命周期和状态?
7. 什么是上下文切换?
8. 什么是线程死锁?如何避免死锁?
9. 说说 `sleep()` 方法和 `wait()` 方法区别和共同点?
10. Java 内存模型JMM、重排序与 happens-before 原则了解吗?
11. `synchronized` 关键字、volatile 关键字
12. `ThreadLocal` 有啥用(解决了什么问题)?怎么用?原理了解吗?内存泄露问题了解吗?
13. 为什么要用线程池?`ThreadPoolExecutor` 类的重要参数了解吗?`ThreadPoolExecutor` 饱和策略了解吗?线程池原理了解吗?几种常见的线程池了解吗?为什么不推荐使用`FixedThreadPool`?如何设置线程池的大小?
14. AQS 了解么原理AQS 常用组件:`Semaphore` (信号量)、`CountDownLatch` (倒计时器) `CyclicBarrier`(循环栅栏)
15. `ReentrantLock``ReentrantReadWriteLock``StampedLock`JDK8
16. CAS 了解么?原理?
17. Atomic 原子类
18. 并发容器:`ConcurrentHashMap``CopyOnWriteArrayList``ConcurrentLinkedQueue` `BlockingQueue``ConcurrentSkipListMap`
19. `Future``CompletableFuture`
20. ......
## JVM
**为什么要学习 JVM** 对于 Java 程序员来说JVM 帮助我们做了很多事情比如内存管理、垃圾回收等等。在 JVM 的帮助下,我们的程序出现内存泄漏这些问题的概率相对来说是比较低的。但是,这并不代表我们在日常开发工作中不会遇到。万一你在工作中遇到了 OOM 问题你至少要知道如何去排查和解决问题吧并且就单纯从面试角度来说JVM 是 Java 后端面试(大厂)中非常重要的一环。不论是应届还是社招,面试国内的一些大厂,你都会被问到很多 JVM 相关的问题(应届的话侧重理论,社招实践)。
**[《深入理解 Java 虚拟机》](https://book.douban.com/subject/34907497/)**
**只有搞懂了 JVM 才有可能真正把 Java 语言“吃透”。** 学习 JVM 这部分的内容,一定要注意要实战和理论结合。
**什么时候可以开始学习 JVM 呢?** 理论上来说,学完了 Java 基础就可以学习 JVM。不过由于 JVM 部分的知识还是有点难度的。我建议你可以在熟练使用 Java 语言解决一些实际问题之后(比如搭建网站)再开始学习 JVM。另外学习 JVM 之前,最好提前学习一下并发编程。
书籍的话,**[《深入理解 Java 虚拟机》](https://book.douban.com/subject/34907497/)** 这本书是首先要推荐的。
![](https://img-blog.csdnimg.cn/20210710104655705.png)
![《深入理解 Java 虚拟机》-豆瓣](https://img-blog.csdnimg.cn/20210710104655705.png)
这本书就一句话形容:**国产书籍中的战斗机,实实在在的优秀!** (真心希望国内能有更多这样的优质书籍出现!加油!💪)
@ -134,11 +89,13 @@ _这本书还是非常适合我们用来学习 Java 多线程的。这本书的
类似的书籍还有 **[《实战 Java 虚拟机》](https://book.douban.com/subject/26354292/)**、**[《虚拟机设计与实现:以 JVM 为例》](https://book.douban.com/subject/34935105/)** ,这两本都是非常不错的!
![](https://img-blog.csdnimg.cn/2021040917192618.png)
![《实战 Java 虚拟机》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424113158144.png)
![《虚拟机设计与实现:以 JVM 为例》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424113210153.png)
如果你对实战比较感兴趣,想要自己动手写一个简易的 JVM 的话,可以看看 **[《自己动手写 Java 虚拟机》](https://book.douban.com/subject/26802084/)** 这本书。
![](https://img-blog.csdnimg.cn/20210409170057457.png)
![《自己动手写 Java 虚拟机》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424113445246.png)
书中的代码是基于 Go 语言实现的,搞懂了原理之后,你可以使用 Java 语言模仿着写一个,也算是练练手! 如果你当前没有能力独立使用 Java 语言模仿着写一个的话,你也可以在网上找到很多基于 Java 语言版本的实现,比如[《zachaxy 的手写 JVM 系列》](https://zachaxy.github.io/tags/JVM/) 。
@ -162,30 +119,21 @@ _这本书还是非常适合我们用来学习 Java 多线程的。这本书的
![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/java-guide-blog/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70.png)
下面是我总结的一些关于 JVM 的小问题,你可以拿来自测:
1. 什么是虚拟机?
2. Java 内存区域是怎么划分的?大对象放在哪个内存区域?
3. 垃圾回收有哪些算法GC 的流程
4. 什么是类加载?何时类加载?类加载流程?
5. 知道哪些类加载器。类加载器之间的关系?
6. 类加载器的双亲委派了解么? 结合 Tomcat 说一下双亲委派Tomcat 如何打破双亲委托机制?...)。
7. 常见调优参数有哪些?
8. ......
## 常用工具
非常重要!非常重要!特别是 Git 和 Docker。
1. **IDEA** :熟悉基本操作以及常用快捷。你可以通过 Github 上的开源教程 [《IntelliJ IDEA 简体中文专题教程》](https://github.com/judasn/IntelliJ-IDEA-Tutorial) 来学习 IDEA 的使用。
2. **Maven** :强烈建议学习常用框架之前可以提前花几天时间学习一下**Maven**的使用。(到处找 Jar 包,下载 Jar 包是真的麻烦费事,使用 Maven 可以为你省很多事情)。
3. **Git** :基本的 Git 技能也是必备的,试着在学习的过程中将自己的代码托管在 Github 上。你可以看看这篇 Github 上开源的 [《Git 极简入门》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Git) 。
4. **Docker** :学着用 Docker 安装学习中需要用到的软件比如 MySQL ,这样方便很多,可以为你节省不少时间。你可以看看这篇 Github 上开源的 [《Docker 基本概念解读》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Docker) 、[《一文搞懂 Docker 镜像的常用操作!》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Docker-Image)
- **IDEA** :熟悉基本操作以及常用快捷。你可以通过 Github 上的开源教程 [《IntelliJ IDEA 简体中文专题教程》](https://github.com/judasn/IntelliJ-IDEA-Tutorial) 来学习 IDEA 的使用。
- **Maven** :强烈建议学习常用框架之前可以提前花几天时间学习一下**Maven**的使用。(到处找 Jar 包,下载 Jar 包是真的麻烦费事,使用 Maven 可以为你省很多事情)。
- **Git** :基本的 Git 技能也是必备的,试着在学习的过程中将自己的代码托管在 Github 上。你可以看看这篇 Github 上开源的 [《Git 极简入门》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Git) 。
- **Docker** :学着用 Docker 安装学习中需要用到的软件比如 MySQL ,这样方便很多,可以为你节省不少时间。你可以看看这篇 Github 上开源的 [《Docker 基本概念解读》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Docker) 、[《一文搞懂 Docker 镜像的常用操作!》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Docker-Image)
除了这些工具之外,我强烈建议你一定要搞懂 Github 的使用。一些使用 Github 的小技巧,你可以看[《Github 小技巧》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Github%E6%8A%80%E5%B7%A7)这篇文章。
## 常用框架
框架部分建议找官方文档或者博客来看。
### Spring/SpringBoot
**Spring 和 SpringBoot 真的很重要!**
@ -200,9 +148,7 @@ _这本书还是非常适合我们用来学习 Java 多线程的。这本书的
**[《Spring 实战》](https://book.douban.com/subject/34949443/)**
![](https://img-blog.csdnimg.cn/20210328171146916.png)
_比较一般_
![《Spring 实战》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424113512453.png)
不建议当做入门书籍读,入门的话可以找点国人的书或者视频看。这本定位就相当于是关于 Spring 的一个概览,只有一些基本概念的介绍和示例,涵盖了 Spring 的各个方面,但都不够深入。就像作者在最后一页写的那样:“学习 Spring这才刚刚开始”。
@ -210,13 +156,11 @@ _比较一般_
![](https://img-blog.csdnimg.cn/20210328171223638.png)
_工具人_
对于 Spring5 的新特性介绍的比较详细,也说不上好。另外,感觉全书翻译的有一点蹩脚的味道,还有一点枯燥。全书的内容比较多,我一般拿来当做工具书参考。
**[《Spring Boot 编程思想(核心篇)》](https://book.douban.com/subject/33390560/)**
![](https://img-blog.csdnimg.cn/20210328171250686.png)
![《Spring Boot 编程思想(核心篇)》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424113546513.png)
_稍微有点啰嗦但是原理介绍的比较清楚。_
@ -224,20 +168,10 @@ SpringBoot 解析,不适合初学者。我是去年入手的,现在就看了
**[《Spring Boot 实战》](https://book.douban.com/subject/26857423/)**
![](https://img-blog.csdnimg.cn/20210328174109306.png)
![《Spring Boot 实战》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424113614768.png)
比较一般的一本书,可以简单拿来看一下。
**《Spring Boot 实战派》**
![](https://img-blog.csdnimg.cn/20210328174134372.png)
这本书使用的 Spring Boot 2.0+的版本,还算比较新。整本书采用“知识点+实例”的形式编写。
另外,这本书的干货很多,作者在注意实战的过程中还不忘记对于一些重要的基础知识的讲解。
如果你要学习 Spring Boot 的话,我还是比较推荐这本书的。
### Netty
但凡涉及到网络通信就必然必然离不开网络编程。 Netty 目前作为 Java 网络编程最热门的框架,毫不夸张地说是每个 Java 程序员必备的技能之一。
@ -250,9 +184,9 @@ SpringBoot 解析,不适合初学者。我是去年入手的,现在就看了
下面是一些比较推荐的书籍/专栏。
**《Netty 实战》**
**[《Netty 实战》](https://book.douban.com/subject/27038538/)**
![](https://img-blog.csdnimg.cn/20210328174228387.png)
![《Netty 实战》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424113715369.png)
这本书可以用来入门 Netty ,内容从 BIO 聊到了 NIO、之后才详细介绍为什么有 Netty 、Netty 为什么好用以及 Netty 重要的知识点讲解。
@ -260,7 +194,7 @@ SpringBoot 解析,不适合初学者。我是去年入手的,现在就看了
**《Netty 进阶之路:跟着案例学 Netty》**
![](https://img-blog.csdnimg.cn/20210328174249145.png)
![《Netty 进阶之路:跟着案例学 Netty》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424113747345.png)
内容都是关于使用 Netty 的实践案例比如内存泄露这些东西。如果你觉得你的 Netty 已经完全入门了,并且你想要对 Netty 掌握的更深的话,推荐你看一下这本书。
@ -276,7 +210,7 @@ _质量很高的一个小册_
**[《Java 性能权威指南》](https://book.douban.com/subject/26740520/)**
![](https://img-blog.csdnimg.cn/20210328154205645.png)
![《Java 性能权威指南》-豆瓣](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/image-20220424113809644.png)
_希望能有更多这 Java 性能优化方面的好书_
@ -288,11 +222,15 @@ O'Reilly 家族书,性能调优的入门书,我个人觉得性能调优是
看过很多网站架构方面的书籍,比如《大型网站技术架构:核心原理与案例分析》、《亿级流量网站架构核心技术》、《架构修炼之道——亿级网关、平台开放、分布式、微服务、容错等核心技术修炼实践》等等。
目前我觉得能推荐的只有李运华老师的 **[《从零开始学架构》](https://book.douban.com/subject/30335935/)** 这本
目前我觉得能推荐的只有李运华老师的 **[《从零开始学架构》](https://book.douban.com/subject/30335935/)** 和 余春龙老师的 **[《软件架构设计:大型网站技术架构与业务架构融合之道》](https://book.douban.com/subject/30443578/ "《软件架构设计:大型网站技术架构与业务架构融合之道》")**
![](https://img-blog.csdnimg.cn/20210412224443177.png)
这本书对应的有一个极客时间的专栏—《从零开始学架构》,里面的很多内容都是这个专栏里面的,两者买其一就可以了。我看了很小一部分,内容挺全面的,是一本真正在讲如何做架构的书籍。
《从零开始学架构》这本书对应的有一个极客时间的专栏—《从零开始学架构》,里面的很多内容都是这个专栏里面的,两者买其一就可以了。我看了很小一部分,内容挺全面的,是一本真正在讲如何做架构的书籍。
![](https://img-blog.csdnimg.cn/20210412232441459.png)
事务与锁、分布式CAP、分布式事务......)、高并发、高可用 《软件架构设计:大型网站技术架构与业务架构融合之道》 这本书都有介绍到。
## 面试
@ -305,5 +243,3 @@ O'Reilly 家族书,性能调优的入门书,我个人觉得性能调优是
公众号后台回复 :“**面试突击**” 即可免费获取,无任何套路。
![](https://img-blog.csdnimg.cn/20210329140915606.png)
#

View File

@ -1,23 +1 @@
---
title: Q&A
category: 计算机书籍
---
**1.感觉学校教的都联系不到实际,我本科毕业真的能找到工作吗?**
就笔者所就读的高校来说,我是相信它的培养方案是有能力培养出具有就业能力的本科毕业生的。我相信很多名校的培养方案也都不会差。如果你就读的学校不是那么出色,并且质疑自己学校的培养能力的话,建议你多到名校的网课上取取经。如果你是就读于国内名校的话,请相信的自己专业的培养方案,下限不会低。
另外,如果你的学校比较差的话,大学期间一定要尽全力让自己的简历更好看,你可以出去实习、参加一些含金量比较高的比赛、跟着老师做一些项目。
**2.学校里需要参加一些社团、学生会之类的吗?**
笔者只参加过社团,并未参加过学生会。对于这个问题,我结合我所接触的人来简单回答一下。针对不同的发展定位,可以选择自己投入社团、学生会的精力。比如,你是一个技术宅,那么我想你就算加入了社团之类的团体,也收获不到自己想要的能力,其实就没有参加的必要了。如果你是一个学生干部,或者擅长和人打交道,也许毕业之后从事产品经理之类的工作,那么在学生会的经历应该是蛮锻炼你的能力的。是否要选择参加团体活动,投入多少精力,完全取决你对自己的定位如何,请把你自己放到合适的环境下培养,不必人云亦云。
**3.在大学里一定要参加竞赛比赛吗?**
竞赛比赛对于学生的好处有,得奖了的话可能会获得保研加分、丰富个人简历,在应聘中拿到不错的印象分。保研加分具体涉及到的竞赛需要咨询所在学院,并非所有竞赛获奖都能加分的。
那么竞赛比赛有没有坏处呢?也会有一点吧,就是指那些能力并不算强,但仍然把大量时间花在了打比赛这上面,这其实并不是坏处,这对个人能力仍有提高,**坏处指的是因为打竞赛耽误了专业课的学习。** 这样一来,基础也没扎实,突出能力也没训练出来,捡了芝麻丢了西瓜,就不好了。
总的来说,打竞赛利大于弊,**不要低估的自己的能力而排斥参加竞赛,也不要高估自己的能力过分痴迷竞赛**。

View File

@ -0,0 +1,26 @@
---
title: 搜索引擎
category: 计算机书籍
---
## Lucene
Elasticsearch 在 Apache Lucene 的基础上开发而成,学习 ES 之前,建议简单了解一下 Lucene 的相关概念。
**[《Lucene实战》](https://book.douban.com/subject/6440615/)** 是国内为数不多的中文版本讲 Lucene 的书籍,适合用来学习和了解 Lucene 相关的概念和常见操作。
![《Lucene实战》-实战](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/books/vAJkdYEyol4e6Nr.png)
## Elasticsearch
极客时间的[《Elasticsearch 核心技术与实战》](http://gk.link/a/10bcT "《Elasticsearch 核心技术与实战》")这门课程基于 Elasticsearch 7.1 版本讲解,还算比较新。并且,作者是 eBay 资深技术专家,有 20 年的行业经验,课程质量有保障!
![《Elasticsearch 核心技术与实战》-极客时间](https://img-blog.csdnimg.cn/20210420231125225.png)
如果你想看书的话,可以考虑一下 **[《Elasticsearch 实战》](https://book.douban.com/subject/30380439/)** 这本书。不过,需要说明的是,这本书中的 Elasticsearch 版本比较老,你可以将其作为一个参考书籍来看,有一些原理性的东西可以在上面找找答案。
![《Elasticsearch 实战》-豆瓣](https://img-blog.csdnimg.cn/20210420231700232.png)
如果你想进一步深入研究 Elasticsearch 原理的话,可以看看张超老师的 **[《Elasticsearch 源码解析与优化实战》](https://book.douban.com/subject/30386800/)** 这本书。这是市面上唯一一本写 Elasticsearch 源码的书。
![《Elasticsearch 源码解析与优化实战》-豆瓣](https://img-blog.csdnimg.cn/20210420231952270.png)