> For the complete documentation index, see [llms.txt](https://freebsd-journal-cn.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://freebsd-journal-cn.bsdcn.org/20170102-quan-qiu-ke-fang-wen-de-freebsd/book-review.md).

# 书评

## 《算法图解——给程序员和其他好奇者的图解指南》

作者：Steven Kreuzer

* **书名：** 《算法图解——给程序员和其他好奇者的图解指南》
* **作者：** Aditya Y. Bhargava
* **出版社：** Manning Publications（2016）
* **印刷版定价：** $44.99（含电子版）
* **电子版定价：** $35.99
* **ISBN：** 9781617292231
* **页数：** 256

> “独特而引人入胜，尤其适合自视为视觉化学习者的读者。”

我之所以会买《算法图解》，纯属一时兴起——某天在 Hacker News 上偶然看到一条评论提到了这本书。我没有计算机科学背景，但偶尔会做些小型编程练习来挑战自己，想着这本书也许能给我日后提供一些思路和小窍门。书到手后我开始翻阅，第一章就给出了我之前一直在琢磨的一个编程问题的更优解法。我坐到电脑前，把搜索数组的代码替换为书中描述的简单二分搜索算法，终于让这个小应用的运行速度足够快，把代码提交到编程挑战网站评分时不会再因执行超时被杀掉。看到每个测试用例旁终于都亮起绿色对勾，我激动不已，立刻就被这本书迷住了。

把《算法图解》与同题材其他书籍放在一起比较，第一眼你会注意到它有多薄。这是有意为之，因为本书的目标就是作为学习算法的轻松入门，破除“算法是晦涩复杂主题”的迷思。过去，这类主题只在厚重的大部头教材里讲授，而要让这些内容变得平易近人，唯一的办法就是请一位数学和计算机科学功底深厚的人带你一步步走过。我真正喜欢这本书的地方在于，作者出色地把表面看似复杂、让普通读者望而生畏的材料，转化成无论你技术背景如何都极易理解的内容。他通过把真实世界的问题与大量图解穿插讲述来实现这一点。最终效果独特而引人入胜，尤其适合自视为视觉化学习者的读者。书中每个算法的示例代码都用 Python 给出，但这些实现足够简单，可以轻松改写为你偏好的任何语言。考虑到作者所选算法的流行程度，用你偏好的语言也一定能轻松找到现成示例。正因如此，作者并未止步于解释算法本身，而是用大部分章节详细讨论每种算法的取舍，把更多笔墨放在向读者展示解决问题的技巧上。结果是，第 1 章花了相当篇幅帮助读者更好理解不同算法的运行时间。Big O 记号一直让我有点犯晕，所以这本书对我价值最大的部分，正是那 7 页用非常简单的解释和图示讲解算法运行时间的章节。作者还附上了一个实用示例，演示如何仅用几张纸和一支笔把 Big O 运行时间可视化。

本书另一个有趣的特性是，如果你买了纸质版，出版社会附送一份电子版。出于种种原因，我仍然偏爱纸质书，技术类书籍尤其如此。但偶尔你在家时会想查一本留在办公室的书里的内容，或者只是想给后背减减负，这时电子版就派上用场了。多数出版商的纸质版和电子版价格几乎相当，让你很难下决心两份都买。幸好在 Manning Publications 这里，你不必做这种艰难抉择。但愿其他出版商也能开始效仿。

如果你刚接触数据结构与算法并希望深入学习，或者只是想从一种全新独特的视角重新审视它们，我强烈建议你入手一本。虽然《算法图解》读起来很快——一下午就能读完——但我有种预感，这会是一本你会长期摆在书架上、隔三岔五拿出来翻翻做复习的书。我相信这本书会随岁月推移给我带来不少价值，但最让我期待的是，等到我女儿长大到可以接过我那本翻旧的书，按章节一章章学完，把学到的东西用到她自己将来要解决的问题上。

***

**Steven Kreuzer** 是 FreeBSD 开发者和 Unix 系统管理员，对复古计算和风冷大众汽车情有独钟。他与妻子、女儿和一只狗住在纽约皇后区。

## ZFS 专家打造的服务器

作者：Brooks Davis、Robert Norton、Jonathan Woodruff 与 Robert N. M. Watson

现在你也可以做到。入手一本……

可选电子版、印刷版或套装。你将学到：

* 使用启动环境，让最高风险的系统管理任务变得平淡无奇。
* 将文件系统权限委派给用户。
* 用 Jail 对 ZFS 数据集进行容器化。
* 在机器之间快速、高效地复制数据。
* 从镜像中切分出层。
* 优化 ZFS 块存储。
* 处理大型存储阵列。
* 选择缓存策略以提升性能。
* 管理新一代存储硬件。
* 识别并消除瓶颈。
* 打造极速数据库存储。
* 深入探索池、metaslab 等更多内容！

无论你管理的是单台小型服务器还是跨国数据中心，借助 *FreeBSD Mastery: Advanced ZFS* 简化你的存储。即刻入手！


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://freebsd-journal-cn.bsdcn.org/20170102-quan-qiu-ke-fang-wen-de-freebsd/book-review.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
