【翻译/介绍】jump consistent hash 零内存消耗,均匀,快速,简洁,来自Google的一致性哈希算法

一,简介

jump consistent hash是一种一致性哈希算法, 此算法零内存消耗均匀分配快速,并且只有5行代码

此算法适合使用在分shard的分布式存储系统中 。

此算法的作者是 Google 的 John Lamping 和 Eric Veach,论文原文在 http://arxiv.org/ftp/arxiv/papers/1406/1406.2294.pdf

完整代码:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
    
    int32_t JumpConsistentHash(uint64_t key, int32_t num_buckets) {
        int64_t b = -1, j = 0;
        while (j < num_buckets) {
            b = j;
            key = key * 2862933555777941757ULL + 1;
            j = (b + 1) * (double(1LL << 31) / double((key >> 33) + 1));
        }
        return b;
    }

输入是一个64位的key,和桶的数量(一般对应服务器的数量),输出是一个桶的编号。

SSL/TLS CipherSuite 介绍

本文是关于SSL/TLS的 CipherSuite 的信息摘录,翻译。如有疑问,欢迎指出。

一,CipherSuite的概念

CipherSuite 这个名词目前没看到有好的中文翻译,个人觉得翻译成“加密算法套件”比较合适。Cipher泛指是密码学的加密算法,例如 aes, rsa, ecdh 等。 tls是由各类基础算法,作为原语组合而成。 一个CipherSuite是4个算法的组合:

  1. 1个authentication (认证)算法 
    
  2. 1个encryption(加密)算法
    
  3. 1个message authentication code (消息认证码 简称MAC)算法 
    
  4. 1 个key exchange(密钥交换)算法
    

mock C++ function for unit test

在单元测试中,我们需要提供业务逻辑的mock版本, 当业务逻辑实现为C++的virtual function时,这是很容易的,我们只需要写一个子类, 实现virtual function就行了,Google 的 gmock就针对这种情况设计。

可是,如果遗留代码中有一般C函数,非virtual的类成员函数,模板函数,inline函数,如何提供mock版本呢?

下面的代码用一点trick实现了上述函数的运行时mock。

a http proxy script

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 #!/usr/local/bin/python # -*- coding: utf-8 -*- import base64 import select import socket import httplib import os import sys #base64.