ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Хэш-таблицы в nginx



On Tuesday 25 July 2006 20:20, Igor Sysoev wrote:
> On Tue, 25 Jul 2006, Konstantin Sorokin wrote:
> > Игорь, а я правильно понимаю, что судя по (src/core/ngx_hash.c)
> >
> > if (names[n].key.len >= 255) {
> >    ngx_log_error(NGX_LOG_EMERG, hinit->pool->log, 0,
> >        "the \"%V\" value to hash is to long: %uz bytes, "
> >        "the maximum length can be 255 bytes only",
> >        &names[n].key, names[n].key.len);
> >    return NGX_ERROR;
> > }
> >
> > Длина ключа в nginx'овой хэш-таблице не может быть больше 255 ? А почему
> > так ? Что может поломаться, если это увеличить ?
>
> Потому что корзина устроена так:
>
> void*   указатель
> u_char  длина ключа1
> u_char  ключ1[длина]
> u-char  выравнивание до указателя
>
> void*   указатель
> u_char  длина ключа2
> u_char  ключ2[длина]
> u-char  выравнивание до указателя

В этом случае можно использовать неиспользуемые младшие биты указателя для 
расширения длины ключа.

>
> ...
>
> void*   NULL
>
>
> Игорь Сысоев
> http://sysoev.ru

-- 
Andrei Nigmatulin
GPG PUB KEY 6449830D

Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take


 




Copyright © Lexa Software, 1996-2009.