↓ 跳过正文

BH

C++ / Linux / 算法

最近的文章

【翻译】密码学一小时必知

·4187 字·9 分钟
本文翻译了Colin Percival 于2010年在bsdcan的演讲ppt 原文标题:Everything you need to know about cryptography in 1 hour 演讲时间:May 13, 2010 原文在 https://www.bsdcan.org/2010/schedule/attachments/135_crypto1hr.pdf 演讲视频在 https://www.youtube.com/watch?v=jzY3m5Kv7Y8 ( 请自行翻墙 ) Colin Percival 是密码学方面的专家,FreeBSD项目的安全长官,Tarsnap在线备份服务的创始人,scrypt密钥衍生算法的作者,致力于改进软件中密码学的应用,向程序员传播密码学的正确使用。

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

·2218 字·5 分钟
一,简介 # jump consistent hash是一种一致性哈希算法, 此算法零内存消耗,均匀分配,快速,并且只有5行代码。 此算法适合使用在分shard的分布式存储系统中 。 此算法的作者是 Google 的 John Lamping 和 Eric Veach,论文原文在 http://arxiv.org/ftp/arxiv/papers/1406/1406.2294.pdf 完整代码: 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 介绍

·3121 字·7 分钟
本文是关于SSL/TLS的 CipherSuite 的信息摘录,翻译。如有疑问,欢迎指出。 一,CipherSuite的概念 # CipherSuite 这个名词目前没看到有好的中文翻译,个人觉得翻译成“加密算法套件”比较合适。Cipher泛指是密码学的加密算法,例如 aes, rsa, ecdh 等。 tls是由各类基础算法,作为原语组合而成。 一个CipherSuite是4个算法的组合: 1个authentication (认证)算法 1个encryption(加密)算法 1个message authentication code (消息认证码 简称MAC)算法 1 个key exchange(密钥交换)算法

mock C++ function for unit test

·938 字·2 分钟
在单元测试中,我们需要提供业务逻辑的mock版本, 当业务逻辑实现为C++的virtual function时,这是很容易的,我们只需要写一个子类, 实现virtual function就行了,Google 的 gmock就针对这种情况设计。 问题 # 可是,如果遗留代码中有一般C函数,非virtual的类成员函数,模板函数,inline函数,如何提供mock版本呢? 下面的代码用一点trick实现了上述函数的运行时mock。

libpcap试玩

·519 字·2 分钟
libpcap驱动了tcpdump,和wireshark这类抓包工具.提供了高度灵活的包过滤语言. 据wikipedia,高性能的包过滤最早是在bsd上作为一个问题被解决,被称为bpf,在内核实现了一个解释器,进行包匹配,用户态提供一个字符设备, linux作为后来者,支持与bsd基本相同的packet filter,称为lpf,不同的是,linux是通过在一个raw socket来支持包过滤的,通过setsockopt来SO_ATTACH_FILTER,挂载过滤器. strace 可知,libpcap实际上进行了如下syscall: socket(PF_PACKET, SOCK_RAW, 768) = 59 setsockopt(59, SOL_SOCKET, SO_ATTACH_FILTER, "\1\0\0\0\0\0\0\0\250\327Vc\375\177\0\0", 16) = 0 参考资料 # libpcap的api文档和demo代码可以参见 http://www.tcpdump.org/pcap3_man.html http://www.tcpdump.org/sniffex.c 实现 # 参考文档了demo,我写了一个小的sniffer,

圆形坠落模拟算法设计

·355 字·1 分钟
目标:实现一个算法,模拟在一个封闭二维区域,圆形小球朝给定方向坠落的过程,实现二维区域的紧密填充。 像下面这样: 难点,及其简单解决: 1.如何把粒子移动尽可能远? 图中的粒子i,能往下移动多远?一般情况,碰撞?边界? 一个简单解法: