一些经典的二叉树练习题,帮助理解掌握二叉树的各种遍历方法和递归地解决问题的思路。

阅读全文 »

在前面的部分中,我们介绍了如何递归解决树遍历问题。递归是解决树问题的最强大,最常用的技术之一。

众所周知,树可以递归定义为一个节点(根节点),该节点包含一个值和对子节点的引用列表。递归是树的自然特征之一。因此,许多树问题可以递归解决。对于每个递归函数调用,我们仅关注当前节点的问题,然后递归调用函数以解决其子级。

通常,我们可以使用 自上而下 的方法或 自下而上 的方法递归地解决树问题。

阅读全文 »

了解树和二叉树的相关概念;

理解不同遍历方法的工作原理,掌握相应遍历方法的递归和迭代实现;

  • 前序遍历
  • 中序遍历
  • 后序遍历
  • 层次遍历
阅读全文 »

应用密码学学习总结,涉及密码学基本概念、古典密码、PGP安全电子邮件解决方案、对称加密、非对称加密、ElGamal密码体制、Diffie-Hellman密钥交换、数字签名等。

阅读全文 »

在如今的互联网环境下,海量数据已随处可见并且还在不断增长,对于如何存储处理海量数据,比较常见的方法有两种:

  • 垂直扩展:通过增加单台服务器的配置,例如使用更强悍的 CPU、更大的内存、更大容量的磁盘,此种方法虽然成本很高,但是实现比较简单,维护起来也比较方便。
  • 水平扩展:通过使用更多配置一般的服务器来共同承担工作负载,此种方法很灵活,可以根据工作负载的大小动态增减服务器的数量,但是实现比较复杂,得有专门的人员来运维。

MongoDB 支持通过分片技术从而进行水平扩展,用以支撑海量数据集和高吞吐量的操作。如果数据集不够大,还是建议您使用 MongoDB 副本集,因为分片需要处理更多的技术细节,所以在分片环境下其性能可能始终没有副本集性能强。本文通过介绍如何搭建 MongoDB 分片集群以及及一些相关核心概念,可以帮您快速理解 MongoDB 是如何通过分片技术来处理海量数据的。

阅读全文 »

对于互联网应用来说,我们要尽量保证服务的不可间断性,一旦出现故障需要尽快的恢复。MongoDB 的副本集模式主要解决了在其主从模式下故障无法自动转移的情况,自动实现高可用。三个成员副本集提供足够的冗余性,以承受大多数网络分区和其他系统故障,这些集合对于许多分布式读取操作也具有足够的容量。本文介绍如何从三个现有 mongod 实例创建三成员副本集,包括不启用访问控制的和启用访问控制的。

阅读全文 »

Python 列表具有内置的 list.sort() 方法,该方法可就地修改列表。还有一个 sorted() 内置函数,可从迭代器构建新的排序列表。

因为 Python3 中 sorted() 和 list.sort() 放弃了类似 C++ 中的 cmp 写法,本文将展示官方推荐替代解决方案,以实现自定义的两个参数的比较函数,并详细分析了 cmp_to_key 函数实现原理。

阅读全文 »