/images/hugo/avatar.png

17 树的存储与遍历

如何表示和存储一颗树?

/images/algo/tree_base/tree_concept.jpg

1. 特性

树是我们接触的第一种非线性结构,在树中一个"父"元素可以有一个或多个"子"元素,这种组织关系要比一个序列中两个元素之间简单的"前",“后"关系更加复杂。

28.2 haproxy 配置

haproxy 配置

/images/linux_mt/linux_slb.jpg

本节开始我们来学习 haproxy 的配置。haproxy 有众多的配置选项,我打算将其分为两个部分,第一部分为haproxy 的全局配置,以及常用的代理段配置,第二部分为 haproxy 的访问控制。本节为的一部分,内容包括

16 哈希算法

如何使用使用哈希算法?

1 特性

将任意长度的二进制值串映射为固定长度的二进制值串,这个映射的规则就是哈希算法,而通过原始数据映射之后得到的二进制值串就是哈希值。优秀的哈希算法必需满足如下几点要求:

28.1 haproxy 入门

haproxy 入门

/images/linux_mt/linux_slb.jpg

本章我们来介绍负载均衡集群的另一种实现 haproxy。与 nginx 类似,haproxy 工作于应用层属于七层代理,但是在其 tcp 模式下也能模拟实现四层代理。本章我们就来学习如何使用 haproxy。在学习配置 haproxy 之前我们先来对其做个简单了解,看看其程序与配置文件结构。

15 散列表与链表

“形影不离”的散列表与链表

1. 特性

散列表和链表,经常会被放在一起使用。原因是散列表虽然支持高效的数据插入、删除、查找操作,但是散列后的数据都是无序存储的,无法支持按照某种顺序快速地遍历数据。散列表是动态的数据结构,如果每次按序访问都要拷贝到数组,排序然后在遍历,效率太低了。而支持动态创建的链表刚好能解决散列表的有序遍历问题。

27.6 varnish 日志查看

varnish 日志查看

/images/linux_mt/linux_cache.jpg

varnish 的日志存放在特定的内存区域中,分为计数器和日志信息两个部分,查看日志需要专门的工具。本节我们来学习这部分命令的使用。