Комментарии:
привет от GO 1.24.0, даёш видео по map_swiss.go и swiss tables
ОтветитьНужно теперь новое видео, с разбором новой мапы)
ОтветитьНиколай, вышли новый мапы) надо бы обновить контент)
Ответитьсортировка мапы в принтлн это сильно
Ответитьтеперь нужно новое видео про swiss table :)
ОтветитьОчень круто и интересно! Николай, спасибо!
ОтветитьУже который раз пересматриваю видео для того чтобы освежить в памяти. Классика )
ОтветитьПересмотрел 2 раза, и ещё пол раза по непонятным моментам. Остались непонятными три вещи:
- HOB хранятся в массиве структуры бакета, или это восемь разных полей в структуры бакета?
- Что произойдёт, если эвакуация не завершена, а лоад фактор для новых бакетов равен 6.5? Мы создаём опять новую область памяти и будем смотреть Бакеты уже в трёх картах?
Крутое видео! Очень крутой контент, но хотелось бы еще одно видео по map, попроще, на подобии твоего видео про slice. То видео прям вообще огонь! Продолжай снимать лучший контент )
ОтветитьЧудесно звучит 🎉 а когда будет продолжение этой темы разговора
Ответитьнепонятно насчёт того, почему нельзя брать ссылку на значение в мапе. понятно, что данные переносятся, но ведь в слайсе при len == cap данные тоже уходят в другое место? почему там можно
ОтветитьЗдравствуйте! Подскажите, как можно открыть описательную структуру мапы? Или к примеру канала?
ОтветитьВыходит, если HOB запрошенного ключа соответствует какому-либо HOB в бакете, то мы переходим к соответствующему ключу в бакете и сравниваем его с запрошенным. Если они не равны, сравниваем HOBы дальше
Ответитьно ведь если у нас увеличивается количество элементов в мапе, увеличивается и количество бакетов, а бакеты мы тоже должны же как-то находить? если перебором, то время выполнения тем больше, чем больше кол-во бакетов
ОтветитьСпасибоз за крутой видос по мапам)
ОтветитьНебольшое замечание - alignment делается не для экономии памяти, а для быстродействия. На большинстве современных процессоров доступ к сложным (более одного байта) значениям в памяти будет быстрее, если расположить эти данные по "круглым" адресам
Ответитьсколько байт занимают high order bits? От чего это зависит? Зависит ли это от количества бакетов?
ОтветитьОтличный обзор, Николай. Все разобрано по кирпичикам, очень легко и доступно воспринимается довольно таки сложная тема. Безграничный респект!
Ответитьпорекомендуйте, пожалуйста, видео по мапам попроще. Я уже разобрался с примитивными типами, ссылками, разыменовыванием слайсами.
Но как работают мапы и для чего не могу понять. Мне порекомендовали этот видос. Вижу, что тут крутая структурированная подача, но все равно я еще не на том уровне, чтобы понять это.
Спасибо за информацию, завтра попробую под справочник (map) выделить сразу 3000 элементов. Одна из моих программ анализирует Excel-файлы, и на их основе заполняет map. Зачастую в map попадает более 1000 и даже 2000 значений. В моей map содержится справочник работников одного из подразделений с ключом по табельному номеру.
Если получится добиться повышения производительности - буду думать над другим проектом, где ключами является совокупность идентификаторов (3), а сама система работает со всеми работниками всех подразделений, которых может более 10 тысяч (работников, конечно).
Получается если алоцировать Мапу с длинной равной 2 у нас в структуре мапы будет один бакет?
ОтветитьА про выравнивание типов нет видео еще? Было бы интересно посмотреть
ОтветитьАнтоха МС решил не останавливаться на построении муз карьере и решил строить карьеру в IT на гошке. Лайк этому трудяге
ОтветитьЛайк поставил. Интересно. GO!!!
ОтветитьSuper!!!
ОтветитьНу мужиик 👍!! Спасибо огромное за видео!
ОтветитьЛучшее видео про map! Спасибо)
ОтветитьСпасибо за труд. Хорошо объясняешь. Ждем продолжения
ОтветитьТам не совсем в два раза увеличение происходит при эвакуации бакетов. Там вроде как специальная формула есть, которая меняется в зависимости от текущего размера
ОтветитьСпасибо огромное за такое подробное и подкрепленное исходным кодом объяснение! :) Ждем видео о том, как устроены типы данных в Go! :) Это будет просто пушка :)
ОтветитьА можно, пожалуйста, еще раз объяснить, почему на мапу должны выделять память через make? я понимаю, что иначе будет nil, но что такого в устройстве ее особенного? или можно таймкод скинуть, где я это упустил
ОтветитьСпасибо большое за все эти уроки по ГО. Я очень люблю Low-Level понимание процессов и на каждом видео получил необычайное удовольствие.
Этот материал как раз тот, которого мне не хватало чтобы начать работать с ГО. (я не новичок и мне просто не хватало хорошего материала которые разъясняет все эти нюансы)
Спасибо за видео, очень доступно.
Возникает вопрос, если мы создаем мапу make(map[string]int, 10) можем ли мы быть уверены что положив туда 10 элементов точно не произойдет выделения доп памяти и эвакуации данных? По идеи не можем, ведь возможны коллизии и теоретически все эти 10 элементов могут указывать на 1 бакет. Поэтому не очень понятно что именно происходит когда указываем конкретный размер мапы в make()?
будет такое же видео об интерфейсах, сборщике мусора, горутинах?
ОтветитьЧеловечище!
Ответитьу меня вчера мапа вывелась один раз не оп очереди вставленных элементов, а потом да еще 10 разу отсортировано.)) так и не смог поймать еще раз тоже состояние что было изначально показано. скорее всего игра кеша ибо через run запускал а не билдил.))
ОтветитьНиколай красавец вперед дерзай
ОтветитьСпасибо за видео. Но для меня некоторые места остались темными.
1. когда вычисляется lob то количество бит равно логарифму от количества бакетов. А если количество бакетов не равно степени двойки, то не будет однозначного соответствия между бакетами и значениями lob. Нет ли такого, что внутри поддерживается что количество бакетов всегда равно степени двойки, и если мы делаем make(m[int]int, 1000) то бакетов будет 1024?
2. Не очень понятно как происходит эвакуация. Допустим коэффициент заполнения стал больше 6.5 мы алоцировали новую мапу с количеством бакетов в два раза большим. Теперь у нас есть операции получения, удаления, вставки (которая может быть просто перезаписью) и итерации по мепе. окей, если это не итерация, то можно сходит в две мепы и сделать все что нужно. Потом после нескольких таких операций происходит итерация по мепе, и вот тут вообще не понятно что происходит. часть данных эвакуировалось, а часть нет, но также у нас могли быть новые значения, которые нет в старой мепе.
В структуре map-ы никакая криптостойкость от хэш функции не требуется, не нужно путать хэш функции используемые для криптографии и для шардирования.
ОтветитьДумал - чо такое длинное видео, на 34 минуты. Так его еще и на 0.75 пришлось смотреть, чтобы не потерять суть.
ОтветитьОтличный канал бро, уже на третьем видео залипаю
Ответитьgo смердит как старый добрый с, то количество ограничений, которое в него вколотили создатели ( видимо в угоди скорости компиляции ) полностью отбивает какое либо желание с ним работать. Видео хорошее, на мой взгляд немного перегружено кишочками и наверное будет неудобо варимо для начинающих.
ОтветитьНевероятно. Огромное спасибо!!
ОтветитьСупер!!!
Ответить