Nginx源码完全注释(6)murmurhash
MurmurHash2 was written by Austin Appleby, and is placed in the public domain. The author hereby disclaims copyright to this source code.
下面是摘自 Google Code 的 Murmurhash 开源项目主页上的 Murmurhash2,Nginx 就是采用的这个。
uint32_t MurmurHash2 ( const void * key, int len, uint32_t seed )
{
const uint32_t m = 0x5bd1e995;
const int r = 24;
uint32_t h = seed ^ len;
const unsigned char * data = (const unsigned char *)key;
while(len >= 4)
{
uint32_t k = *(uint32_t*)data;
k *= m;
k ^= k >> r;
k *= m;
h *= m;
h ^= k;
data += 4;
len -= 4;
}
switch(len)
{
case 3: h ^= data[2] << 16;
case 2: h ^= data[1] << 8;
case 1: h ^= data[0];
h *= m;
};
h ^= h >> 13;
h *= m;
h ^= h >> 15;
return h;
}
下面是 Nginx 中 Murmurhash 的源码,基本与上面无异。
uint32_t
ngx_murmur_hash2(u_char *data, size_t len)
{
uint32_t h, k;
h = 0 ^ len;
while (len >= 4) {
k = data[0];
k |= data[1] << 8;
k |= data[2] << 16;
k |= data[3] << 24;
k *= 0x5bd1e995;
k ^= k >> 24;
k *= 0x5bd1e995;
h *= 0x5bd1e995;
h ^= k;
data += 4;
len -= 4;
}
switch (len) {
case 3:
h ^= data[2] << 16;
case 2:
h ^= data[1] << 8;
case 1:
h ^= data[0];
h *= 0x5bd1e995;
}
h ^= h >> 13;
h *= 0x5bd1e995;
h ^= h >> 15;
return h;
}
Reference
- Murmurhash2
-
转载请注明来自柳大Poechant(钟超Michael)的CSDN博客:
钟超Michael的博客:Blog.CSDN.net/Poechant
钟超Michael的微博:钟超Michael的新浪微博
-
分享到:
相关推荐
6. **负载均衡**:Nginx通过`src/http/modules/ngx_http_upstream_hash_module.c`、`ngx_http_upstream_round_robin_module.c`等模块实现负载均衡策略,如轮询、哈希等。 7. **缓存机制**:`src/...
**标题:“带有注释的nginx源码”** **描述:“带有详细注释的nginx源码,能帮你有效地阅读和学习nginx源码”** 这是一份包含丰富注释的nginx源码,非常适合那些想要深入理解这款高性能HTTP和反向代理服务器工作...
在本文中,我们将深入探讨Nginx的源代码分析,主要关注那些被特别注释的部分,以帮助我们更好地理解和利用这个高性能的Web...因此,花时间研究和注释Nginx源码对于任何希望深入掌握Nginx的人来说都是极其有价值的投资。
《C++与Nginx1.9.2源码深度解析》 在深入理解Web服务器的工作原理时,阅读和分析其源代码是一项重要的任务。...本文将聚焦于Nginx ...对于希望提升Web服务器开发技能的程序员来说,Nginx源码无疑是一本宝贵的教科书。
**Nginx 1.9.2 源代码详解** Nginx 是一款高性能的 Web 服务器和反向代理服务器,以其轻量级、高并发处理能力而著名。1.9.2 版本是 Nginx 的一个重要里程碑,其中包含了丰富的功能和优化。下面我们将深入探讨 Nginx...
三、源码注释与学习方法 该压缩包包含详尽的函数中文注释,这对于初学者来说是一份宝贵的资源。学习Nginx源码,首先需要熟悉C语言和网络编程基础,然后从主进程和工作进程的入口函数开始,逐步了解各个模块的功能和...
首先,要理解Nginx源码,首先要了解Nginx的基本架构。Nginx采用多进程模型运行,其中包含一个master进程和多个worker进程。master进程的主要作用是管理worker进程,包括处理信号,新建、关闭worker进程,以及升级...
1. **获取源码**:首先,从 Nginx 官方网站或通过 Git 克隆下载源代码到本地。 2. **依赖检查**:确保系统已安装必要的依赖库,如 pcre (Perl Compatible Regular Expressions)、zlib (数据压缩库) 和 OpenSSL (SSL/...
学习Nginx源码,可以从以下几个方面入手: 1. **了解配置语法**:通过阅读`ngx_conf_file.c`,理解Nginx如何解析配置文件,以及配置项的结构和解析规则。 2. **研究事件模型**:深入`src/event/*`,了解不同平台下...
**Nginx 1.10.2 源码分析** Nginx 是一个高性能的 HTTP 和反向代理服务器,广泛应用于互联网服务,以其高效、稳定和轻量级的特性受到开发者们的青睐。Nginx 1.10.2 是其在2017年发布的一个稳定版本,它在前一版本的...
在这个名为 "nginx-1.0.14_comment_jianfengye.tar.gz" 的压缩包文件中,我们得到了 Nginx 1.0.14 版本的源码,并且附带了中文注释,这对于理解和学习 Nginx 内部工作原理来说,无疑是一份极其宝贵的资源。...
X1.5可能没有完全考虑在非标准端口服务环境下的兼容性。理想情况下,软件开发者应充分测试各种部署环境以确保兼容性,从而避免用户在部署时遇到此类问题。希望官方能够在未来版本中修正这类问题,提供更完善的兼容性...
接着,打开`red5.xml`文件,取消对默认上下文bean的注释,以便正确启动origin服务器。 3. **edge服务器集群方案** - **配置调整**:同样地,在`red5-edge-core.xml`中,将`spring`替换为`beans`。关键一步是更新`...
- `docs/`:文档相关的文件,可能包括源码注释和生成的HTML文档。 - `tests/`:单元测试和集成测试的代码,确保Django的正确性和稳定性。 - `setup.py`:Python的安装脚本,用于在本地环境中安装或升级Django。 - `...