# 引言

目前互联网行业如火如荼，进入这个行业的技术人员也越来越多。对于研发来说，从工程角度主要分为：前端工程师、客户端工程师（又分为iOS和Android工程师）、后端工程师、算法工程师等职位。本书所说的Java工程师指的是以Java做为主要开发语言的后端工程师。

本书会针对Java后端开发工作中经常用到的关键技能点去做阐述，会尽量覆盖在实际工作中需要的所有技能点。但由于很多技能点并非一两篇文章就能讲述完成的，本书仅仅是做一些实践性的经验总结和阐述，更加详细和深入地学习则需要参考专门的书籍或者官方文档。

> * 《Effective Java（第3版）》：此书讲解了Java的一些高级特性和技巧。最新的第三本加入了Java8新语言特性部分。

> * 《Java并发编程实战》：此书是并发编程经典书籍，涵盖了并发编程的各种知识点以及相关理论知识。

> * 《七周七并发模式》：讲述了主流的七种并发编程模式。

> * 《深入理解Java虚拟机：JVM高级特性与最佳实践（第2版）》：此书讲解了JVM的内存、GC、字节码、编译器等高级特性和优化实践。

> * 《高性能MySQL（第3版）》：此书讲述了MySQL各种优化技巧，并结合原理给予讲解。

> * 《Redis开发与运维》：此书在原理和实践层面对于Redis的使用优化做了详尽的描述。

> * 《Redis设计与实现》：完整地讲解了Redis的内部运行机制，对Redis的大多数单机功能以及所有多机功能的实现原理进行了介绍，包括这些功能的核心数据结构以及关键的算法思想。旧版本（Redis 2.6）有免费电子版：<http://origin.redisbook.com/。>

> * 《深入分布式缓存》：此书涵盖了分布式原理、各种缓存软件/框架的使用以及相关技术在各大公司的典型实践。

> * 《深入理解Elasticsearch（原书第2版）》：此书在原理层面讲述了对ES的使用和优化技巧。

> * 《Java性能权威指南》：此书是Java性能调优的权威书籍，几乎涵盖了Java调优的方方面面。

> * 《构建高性能Web站点》：此书从各种案例出发，讲解了高性能Web站点需要的各种优化技巧、实践经验等。

> * 《白帽子讲Web安全》：本书基本涵盖了方方面面的Web安全技术，包括客户端安全、服务端安全等。

> * 《分布式系统：概念与设计（原书第5版）》：分布式系统理论的经典书籍，全面介绍了分布式系统的原理、体系结构、算法和设计。

> * 《Clean Architecture》: Uncle Bob的架构经典书籍，梳理了架构的定义、目的、架构设计原则、设计模式等，是架构入门的好书。

虽然以上书籍都是非常实用的参考资料，但就笔者自己来看，更为推崇的则是直接通过相关技术的官方文档来学习，既能够段炼自己的英文阅读能力，也能够直面相关技术的第一手文档，避免了在看相关书籍时被一些偶然的纰漏所误导。

此外，笔者的学习、工作笔记是平时工作中查阅网上资料并经过辨伪后记录下来的零散知识点，难免会有一些对网上零散资料的引用，特别对这些资料的原创者表示感谢，如果有侵权请联系我。

## 勘误和支持

在这本书的写作过程中，自己一直是战战兢兢的，一直害怕写成那种侃侃而谈却没有实质内容的东西或者给予读者一些误导信息，因此对于每一个写出来的知识点，自己都是在查阅官方文档以及其他权威资料并在自己思考之后才敢于落笔。但由于笔者知识能力有限，难免有错误。

如果在阅读过程中发现错误的地方，请提交到此网址：<https://github.com/superhj1987/pragmatic-java-engineer/issues>。

![](/files/WZSWkVAX72N69bEnySnD)

同时，请随时注意勘误信息的发布：<https://github.com/superhj1987/pragmatic-java-engineer/wiki/Mistakes>。

![](/files/QpZBWYJdbDn2T0ub2eBx)

## 联系方式

邮箱：<superhj1987@126.com>

博客：<https://rowkey.cn>

微博：<https://weibo.com/superhj1987>

## 友情赞助

友情赞助可扫码。

![](/files/jZQIWSgfFCpgBSFGjLQ2) ![](/files/QOLJn5JDKJRWgfD637qz)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://rowkey-books.gitbook.io/pragmatic-java-engineer/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
