• Panda
    2018-12-16
    老师讲的很好 希望多讲一点底层实现 源码剖析的 谢谢

    作者回复: 谢谢。这门课更多的还在讲应用,源码涉及得很少,深入理解nginx这本书中更多的在讲源码剖析。

    
     3
  • Dr.z
    2019-07-26
    如果哈希表的bucket是59字节,为什么在第一次取还希表元素会多取一个字节
    
    
  • 无菇朋友
    2019-04-12
    老师您好。bucket是指单个ngx_hash_elt_t结构还是指存放这些结构的连续内存
    
    
  • 一路向西
    2019-02-13
    陶老师,您好。请问nginx在哪些地方用到了哈希表,用来存储什么?

    作者回复: 存放MIME type、存放server_name、存放变量、作为反向代理时设置的hide_header等场景

    
    
  • 想个昵称好难
    2018-12-27
    非常非常感谢老师您的回复,这节课我又听了几遍,可能我说的不太清楚,再向您解释一下
    1、这节课开头的hash表的图用的是书上7-10的图,图上写的是size个ngx_hash_elt_t结构体,我的理解是size个ngx_hash_elt_t结构体指针,然后每个指针指向ngx_hash_elt_t结构体数组,所以这幅图我有点困惑,还希望老师您解惑
    2、这节课最后举了个例子,说cacheline是64Byte,bucket size是59Byte,然后取第一个元素老师您讲的是多取了1个字节,这个地方不是多取了5个字节吗?为什么是1个字节,我有点不太理解
    百忙之中打扰老师实在抱歉,希望可以得到老师的解答,再次谢谢老师
    展开

    作者回复: 1、书中的图,是最终的存储结构,即,每个elt_t指针其实指向的是连续内存中的一个元素,所以,这里的buckets**不是语言上的指向,而是最终真实线性内存的指向。你可以再读读ngx_hash_init这个函数的实现。确实是比较难懂的。
    2、我的口误,呵呵,意思就是第1个比cacheline少的话,总有一个会占有2个cacheline。

    
    
  • 想个昵称好难
    2018-12-26
    老师,您好,非常抱歉打扰您了,有个问题想请教下您
    在ngx_hash_t中,buckets是一个二重指针,所以我感觉这个关于书上7-10的ngx_hash_t的基本散列表的结构示意图有点疑问,buckets这个为什么不是先指向一个ngx_hash_elt_t*的指针数组,之后再由ngx_hash_elt_t*指向ngx_hash_elt_t结构,这个图片我个人感觉更类似于http://www.cnblogs.com/0x2D-0x22/p/4139805.html这个blog上画的图

    作者回复: buckets就是指向的一个指针数组,数组每个成员就是ngx_hash_elt_t*成员。我看了下你给的页面上的图,两幅图意思完全一致啊。

    
    
我们在线,来聊聊吧