使用GNU-make管理项目
在本文中读者会看到有关 make 的介绍,make 是一种控制编译或者重复编译软件的工具。make 可以自动管理软件编译的内容、方式和时机,从而使程序员能够把精力集中在编写代码上。
并查集
在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(union-find algorithm)定义了两个用于此数据结构的操作:
- Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。
- Union:将两个子集合并成同一个集合。
由于支持这两种操作,一个不相交集也常被称为联合-查找数据结构(union-find data structure)或合并-查找集合(merge-find set)。其他的重要方法,MakeSet,用于建立单元素集合。有了这些方法,许多经典的划分问题可以被解决。
RabbitMQ高可用集群搭建
RabbitMQ + HAProxy 高可用镜像模式集群部署
- 为什么搭建 RabbitMQ 集群?
- RabbitMQ 集群模式有哪些?
- 如何搭建 RabbitMQ 集群?
- RabbitMQ 镜像模式的策略如何配置?
算法设计与分析
- 算法的特性
- 时间复杂度
- 递归
- 分治法
- 动态规划
- 贪心算法
- 哈夫曼编码
- 单源最短路径
- 最小生成树
- 并查集
- 优先队列
- 回溯法
CentOS7下Firewall的设置与使用
防火墙 firewalld 守护服务引入了一个信任级别的概念来管理与之相关联的连接与接口。它支持 ipv4 与 ipv6,并支持网桥,采用 firewall-cmd (command) 或 firewall-config (gui) 来动态的管理 kernel netfilter 的临时或永久的接口规则,并实时生效而无需重启服务。
进程间通信机制
进程通信(Inter-Process Communication, IPC)是指进程之间的信息交换。其所交换的信息量,少则是一个状态或数值,多则是成千上万个字节。多个进程为了协调完成一项工作,相互之间必须能够进行通信。进程的互斥和同步可归结为低级通信。进程的高级通信是指用户可直接利用系统所提供的一组通信命令,高效地传送大量数据的一种通信方式。操作系统隐藏了进程通信的实现细节,即对用户来说是透明的。这样就大大简化了通信程序编程上的复杂性。
Linux进程管理
操作系统的重要任务之一是管理计算机的软、硬件资源。现代操作系统的主要特点在于程序的并发执行,由此引出系统的资源被共享和用户随机使用系统。因而操作系统最核心的概念就是进程:即正在运行的程序。操作系统借助于进程来管理计算机的软、硬件资源,支持多任务的并发。操作系统的其他内容都是围绕进程展开的。所以进程管理是 Linux 操作系统内核的主要内容之一,它对整个操作系统的执行效率至关重要。
Morris Traversal
通常,实现二叉树的前序(preorder)、中序(inorder)、后序(postorder)遍历的迭代版本都需要 O(n) 的空间复杂度,那么有没有可能使用 O(1) 空间进行迭代遍历呢?答案是肯定的。
本文将介绍 Morris Traversal 遍历二叉树的方法,该算法能够做到 O(1) 空间复杂度的迭代遍历,并在遍历完成后二叉树依然保持原始状态(遍历过程中可能被修改)。