Результаты поиска
Как бы функция sdbm hash была реализована в C#?
Как функция sdbm hash (например, эта ) может быть реализована в C# ?
Как сгенерировать хэш-код из массива байтов в C#?
Скажем, у меня есть объект, который хранит массив байтов, и я хочу иметь возможность эффективно генерировать хэш-код для него. Я использовал криптографические функции hash для этого в прошлом, потому что они просты в реализации, но они делают намного больше работы, чем должны быть криптографически однонаправленными, и меня это не волнует (я просто использую хэш-код как ключ к хэш-таблице).
Вот что у меня сегодня есть:
struct SomeData : IEquatable<SomeData>
{
private readonly byte[] data;
public SomeData(byte[] data)
{
if (null == data || data.Length <= 0)
{
throw new ArgumentException("data");
}
this.data = new byte[data.Length];
Array.Copy(data, this.data, data.Length);
}
public override bool Equals(object obj)
{
return obj is SomeData && Equals((SomeData)obj);
}
public bool Equals(SomeData other)
{
if (other.data.Length != data.Length)
{
return false;
}
for (int i = 0; i < data.Length; ++i)
{
if (data[i] != other.data[i])
{
return false;
}
}
return true;
}
public override int GetHashCode()
{
return BitConverter.ToInt32(new MD5CryptoServiceProvider().ComputeHash(data), 0);
}
}
Есть какие-нибудь мысли?
ДП: вы правы, что я пропустил чек в Equals, я его обновил. Использование существующего хэш-кода из массива байтов приведет к равенству ссылок (или, по крайней мере, к тому же самому понятию, переведенному в хэш-коды). например:
byte[] b1 = new byte[] { 1 };
byte[] b2 = new byte[] { 1 };
int h1 = b1.GetHashCode();
int h2 = b2.GetHashCode();
С этим кодом, несмотря на то, что два байтовых массива имеют одинаковые значения внутри них, они ссылаются на разные части памяти и приведут (вероятно) к разным кодам hash. Мне нужно, чтобы коды hash для двух байтовых массивов с одинаковым содержимым были равны.
почему загрузки иногда помечаются md5, sha1 и другими индикаторами hash?
Я видел это повсюду:
Скачать здесь! В SHA1 = 8e1ed2ce9e7e473d38a9dc7824a384a9ac34d7d0
Что это значит? Как hash входит в игру, насколько загружается и... Что я могу сделать из этого? Является ли это устаревшим элементом, где вам приходилось проверять некоторую контрольную сумму после загрузки всего файла?
Как бы вы реализовали хэш-таблицу в языке x?
Смысл этого вопроса состоит в том, чтобы собрать список примеров реализации хэш-таблиц с использованием массивов на разных языках. Было бы также неплохо, если бы кто-то мог дать довольно подробный обзор того, как они работают, и что происходит с каждым примером.
Редактировать :
Почему бы просто не использовать встроенные функции hash в вашем конкретном языке?
Потому что мы должны знать, как работают таблицы hash и уметь их реализовывать. Это может показаться не очень важной темой, но знание того, как работает одна из наиболее часто используемых структур данных, кажется мне очень важным. Если это должно стать Википедией программирования, то вот некоторые из типов вопросов, за которыми я сюда приду. Я не ищу книгу CS, которая будет написана здесь. Я мог бы взять с полки вступление к алгоритмам и прочитать главу о таблицах hash и получить такую информацию. Более конкретно, то, что я ищу, - это примеры кода . Не только для меня в частности, но и для других, кто, возможно, однажды будет искать подобную информацию и наткнется на эту страницу.
Если бы вы должны были их реализовать и не могли использовать встроенные функции, как бы вы это сделали?
Вам не нужно ставить код здесь. Положите его в пастебин и просто соедините его.
Какие вопросы следует учитывать при переопределении equals и hashCode в Java?
Какие проблемы / подводные камни необходимо учитывать при переопределении equals и hashCode ?
Как создать таблицу hash в Java?
Каков наиболее простой способ создания таблицы hash (или ассоциативного массива...) в Java году? Мой google-fu нашел пару примеров, но есть ли стандартный способ сделать это?
И есть ли способ заполнить таблицу списком пар ключ- > значение без отдельного вызова метода add для объекта для каждой пары?
Как синхронизировать историю браузера при использовании Ajax?
Я пишу простое приложение для фотоальбома, используя ASP.NET Ajax.
Приложение использует асинхронные вызовы Ajax для предварительной загрузки следующей фотографии в альбом, не изменяя URL в браузере.
Проблема заключается в том, что когда пользователь нажимает кнопку Назад в браузере, приложение не возвращается к предыдущей фотографии, а переходит на домашнюю страницу приложения.
Есть ли способ обмануть браузер, чтобы добавить каждый вызов Ajax в историю просмотров?