wylu

Keep It Simple, Stupid

进程通信(Inter-Process Communication, IPC)是指进程之间的信息交换。其所交换的信息量,少则是一个状态或数值,多则是成千上万个字节。多个进程为了协调完成一项工作,相互之间必须能够进行通信。进程的互斥和同步可归结为低级通信。进程的高级通信是指用户可直接利用系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。操作系统隐藏了进程通信的实现细节,即对用户来说是透明的。这样就大大简化了通信程序编程上的复杂性。

阅读全文 »

操作系统的重要任务之一是管理计算机的软、硬件资源。现代操作系统的主要特点在于程序的并发执行,由此引出系统的资源被共享和用户随机使用系统。因而操作系统最核心的概念就是进程:即正在运行的程序。操作系统借助于进程来管理计算机的软、硬件资源,支持多任务的并发。操作系统的其他内容都是围绕进程展开的。所以进程管理是 Linux 操作系统内核的主要内容之一,它对整个操作系统的执行效率至关重要。

阅读全文 »

通常,实现二叉树的前序(preorder)、中序(inorder)、后序(postorder)遍历的迭代版本都需要 O(n) 的空间复杂度,那么有没有可能使用 O(1) 空间进行迭代遍历呢?答案是肯定的。

本文将介绍 Morris Traversal 遍历二叉树的方法,该算法能够做到 O(1) 空间复杂度的迭代遍历,并在遍历完成后二叉树依然保持原始状态(遍历过程中可能被修改)。

阅读全文 »

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

阅读全文 »

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

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

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

阅读全文 »

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

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

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

本文主要介绍了应用密码学的相关知识,包括信息安全的三个基本目标、密码学的基本概念、密码算法分类、数论基础、古典密码、安全电子邮件方案、对称密码、单向散列函数、不对称密码、Diffie-Hellman密钥交换和数字签名等方面。其中,介绍了密码学的两个分支:密码编码学和密码分析学,以及密码算法分类的两种方式:按照保密性依赖的基础和按照密钥的特点。此外,还介绍了对称密码算法和非对称密钥算法,以及RSA算法、Euler函数、Euler定理、ElGamal密码体制、Diffie-Hellman密钥交换和数字签名等具体内容。

阅读全文 »

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

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

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

阅读全文 »