# :sunglasses: 中级

## :pencil: C++

- [Scott Meyers - Effective Modern C++：改善 C++11 和 C++14](https://book.douban.com/subject/30178902/)

    这是 Scott Meyers 的书籍系列中的新章节。本书汇编了一组针对 C++11 / 14 标准的技巧。

- [Anthony Williams - C++ 并发编程实战](https://book.douban.com/subject/35653912/)

    本书是多线程编程和使用标准库特性的全面指南。它提供了有关所有原语及其“幕后”复杂性的详细说明。

- Herb Sutter:
  - [Exceptional C++：47 个 C++工程难题、编程问题和解决方案](https://book.douban.com/subject/1459013/)
  - [Exceptional C++ Style: 40 个新的工程难题、编程问题及解决方案](https://book.douban.com/subject/1470842/)
  - [More Exceptional C++: 40 个新的工程难题、编程疑问及解决方法](https://book.douban.com/subject/1244943/)

     这些书籍涵盖了许多与在 C ++中设计或编写代码相关的任务，并提供了一系列有效解决方案。其中许多解决方案被认为是经典习惯用法，广泛应用于各种项目中。

- [David Vandevoorde - C++ Templates: The Complete Guide](https://book.douban.com/subject/1455780/)  
    这本最新的关于 C++ 元编程，特别是模板的相关书籍，全面描述了近期标准中添加的相关技术和基础知识，包括 C++17。如果你想要编写通用和参数化代码，这本书将成为你不可或缺的资源，并提供有关模板基础知识以及与不同技术相关的许多细微差别。

## :bicyclist: 优化 C++应用程序

- [Kurt Guntheroth - C++ 性能优化指南](https://book.douban.com/subject/27666339/)  
    这本书是一本改善 C++ 应用程序性能的指南。该书中一些建议基于 Herb Sutter 或 Scott Meyers 所述的各种习语和技巧。建议在阅读前面提到过的书籍后再阅读此书。

- [Agner Fog - Optimizing software in C++](https://agner.org/optimize/optimizing_cpp.pdf) 或者[Optimization manuals](https://agner.org/optimize)  
    实践导向指南为使用 C++ 开发或涉及与 CPU、内存等交互方面进行了全面介绍潜在优化可能性提供了详尽信息。

## :electric_plug: 硬技能

- [Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 或 "四人组" - 《设计模式：可复用面向对象软件的基础》](https://book.douban.com/subject/34262305/)

    这本书是关于设计模式的经典指南。每个模式都有详细的描述和适当使用案例的建议。这本书是 Eric Freeman 的《Head First Design Patterns》的好后续读物。然而，准备好了吗？因为这本书比前一本更加复杂。

- [Gary McLean Hall - 自适应代码](https://www.amazon.com/Adaptive-Code-Developer-Best-Practices/dp/0136891446)  
    这本书是理解软件设计中 SOLID 原则的优秀资源。解释以简单易懂的方式呈现出来，使它们易于理解。C# 编写的代码示例也很简单，并有效地说明了原则。

- [Robert Martin - 架构整洁之道](https://book.douban.com/subject/30333919/)  
    这本由 Uncle Bob 写作提供了如何从架构角度考虑软件设计方面指导。它强调在开始编码之前思考应用程序或组件体系结构的重要性。该书提供了分析解决方案设计时需要考虑什么以及帮助避免常见软件设计错误等见解。对于想要深入了解软件设计中架构任务并寻求获得更深入理解领域知识点起点良好者而言，这本书是一个不错选择。此书所包含知识被工程师广泛使用，并将帮助他们避免普遍错误。

- [Samary Baranov - 《有限状态机和算法状态机：快速、简单地进行复杂有限状态机设计》](https://www.amazon.com/Finite-State-Machines-AlgorithmiComplex-ebook/dp/B078RYYBCJ)  
    这是一份关于如何运用有限机器理论进行编程实践指南短小精干且实用性强。你不会找到比这更简单、更优雅地阐述有限机器理论及其实际应用方法。

- [Vladimir Khorikov - 单元测试原则、实践和模式：使用 C# 示例进行单元测试、Mocking 和集成测试效果良好](https://www.amazon.com/gp/product/B09782L692/ref=dbs_a_def_rwt_hsch_vapi_tkin_p1_i0)  

   该图书提供了在单位测试领域常见推荐事项、模式和反模式详细概述。阅读完此图书后，您将掌握创建成功项目所需所有内容，通过良好测试轻松扩展且易于维护。

## :zap: 操作系统

- [Andrew S. Tanenbaum - 现代操作系统](https://book.douban.com/subject/27096665/)  
    这是一本关于操作系统的综合指南，涵盖了其构建和各个方面，如文件系统、网络、内存管理、任务调度和多线程。该书用简单易懂的语言提供深入的解释，不专注于特定的操作系统分发。每章都对操作系统的不同方面进行了详细探讨，使它成为理解这个复杂主题的基础资源。

- [Mark Russinovich - 深入解析 Windows 操作系统 卷 1](https://book.douban.com/subject/19978475/), [Mark Russinovich - 深入解析 Windows 操作系统 卷 2](https://book.douban.com/subject/20473374/)

    本书深入探讨了与前一本书相同的主题，但重点专注于微软 Windows 操作系统。它提供了一个深入而详细地查看 OS 每个方面，并着重介绍 Windows 可能没有被开发人员正式声明的各种微妙差别和方面。对于那些需要与 OS 系统库密切交互并且需要低级应用程序开发人员来说是一个有用资源。

- [Christopher Negus - Linux 宝典](https://book.douban.com/subject/26807323/)

    本书可以作为 Tanenbaum 工作后续研究 Linux 操作系统复杂性时使用。该书包括对 OS 各个方面进行详细分析，并侧重于像 Red Hat、Ubuntu 和 Fedora 等流行版本。对于日常使用 Linux 的开发人员来说是一个理想资源。

- [Ulrich Drepper - 关于内存编程者应知道什么？](https://people.freebsd.org/~lstewart/articles/cpumemory.pdf)

    这篇文章全面介绍 PC 内存如何运作以及为什么会按照所描述方式运行。它不仅提供高层次信息，还深入探讨低层次问题，因此非常适合那些希望更深入地研究这一主题内容。

## :globe_with_meridians: 计算机网络

- [Andrew S. Tanenbaum - 计算机网络](https://book.douban.com/subject/10510747/)  

     计算机网络理论基础上经典著作提供从物理层开始到数据传输协议结束之间详尽描述。对于紧密参与与网络交互项目中开发人员将极其有用。

- [Victor Olifer –计算机网络：设计网络原则、技术和协议](https://book.douban.com/subject/2589366/)  

     本书全面介绍计算机网络基础知识，可能比 Tanenbaum 工作呈现出略微更加复杂。因此，建议选择最适合您风格呈现信息 的图书

[**返回**](Overview.md) | [**回到主页**](../README.md)