Михаил Непряхин: Так всем привет как видно слышно плюсики поставьте Пожалуйста,
Михаил Непряхин: если сяк
Михаил Непряхин: так хорошо.
Михаил Непряхин: А
Михаил Непряхин: так значит о чем мы сегодня говорим, Сейчас немножко Про замыкание поговорим потом свайся добьем
Михаил Непряхин: и да Про Маму поговорим
Михаил Непряхин: Ну наверное это все что мы сегодня успеем
Михаил Непряхин: так давайте небольшой интерактив про замыкание
Михаил Непряхин: а и
Михаил Непряхин: кто знает Что такое замыкание Давайте поставьте плющев если знаете Что такое замыкание
Михаил Непряхин: так Чем замыкание Отличается От анонимной функции
Михаил Непряхин: если. В трех словах
Михаил Непряхин: напишите Ваш ответ.
Михаил Непряхин: Если. Вы понимаете чем, Отличаются замыкание то наивные функции
Михаил Непряхин: Канал Хранит перемены Из Клуба но захват с перми да
Михаил Непряхин: правильно
Михаил Непряхин: Ммм
Михаил Непряхин: хорошо
Михаил Непряхин: так вот значит мы имеем вот такой код
Михаил Непряхин: вот здесь у нас это такое уже замыкание
Михаил Непряхин: то есть Мы говорим у нас есть как перемены. Ай
Михаил Непряхин: и в другую перемену Кожи присваиваем Функцию
Михаил Непряхин: и Там Внутри получается функция
Михаил Непряхин: и Вызов функция
Михаил Непряхин: ее называют называют и анонимной функцией и замыканием
Михаил Непряхин: и но
Михаил Непряхин: правильнее если, она ничего не захватывает ну просто на нее функция вот а если, она захватывает что-то из коупа аскол, Поэтому здесь У нас выше
Михаил Непряхин: а и
Михаил Непряхин: там вообще никакого Куда не было опять, видимо проблема. С
Михаил Непряхин: петь У нее Пароля проблема со входом
Михаил Непряхин: странно вот никогда Не было Проблем,
Михаил Непряхин: просто посылки
Михаил Непряхин: Так а Там где то, Интересно Есть Кот Или Нет вообще здесь
Михаил Непряхин: хочу послать
Михаил Непряхин: надо было разобраться с этой штукой.
Михаил Непряхин: Же Раньше. Проблемы такой Не было.
Konstantin: Там Можно по-моему через самую суку распорястить кольт номер конференции и ее Пароль дальше параметрмадетов.
Михаил Непряхин: Трэк
Михаил Непряхин: Ты Меня Клянешь
Михаил Непряхин: А ну да он Же Там провал
Михаил Непряхин: Так Эммм короче У нас Есть разные сколково
Михаил Непряхин: Есть клуб глобальный вот если, здесь какая то переменная болот
Михаил Непряхин: вот это тоже скоп мы можем захватить мы можем взять и вот сюда, вот эту переменную проббросить ее там
Михаил Непряхин: Присвоить тебе другое значение
Михаил Непряхин: то есть вот мы можем взять из этого сколково перемену из этого скупо переменную и
Михаил Непряхин: а на захов эти перемены могут захватиться замыканием,
Михаил Непряхин: вопрос
Михаил Непряхин: как они захватываются
Михаил Непряхин: они захватываются по указателю
Михаил Непряхин: то есть это то же самое что если. Бы, Мы вот здесь функции написали Что Мы функция принимает ай
Михаил Непряхин: и эта звездочка энд и функция принимаетстер и это
Михаил Непряхин: звездочка астра,
Михаил Непряхин: и
Михаил Непряхин: здесь нам, надо было бы это все разименовать Вот так Вот с Этим Делом работать здесь Тоже, надо было бы вот так вот по звездочке переразменовать ну а здесь собственно говоря передать указатели,
Михаил Непряхин: вот так вот
Михаил Непряхин: а ну
Михаил Непряхин: нам, предложили сахар
Михаил Непряхин: ну типа вот чтобы это все не писать
Михаил Непряхин: а у нас перемен это Раз, может просто, функция сама из колпа эти перемены захватить
Михаил Непряхин: и
Михаил Непряхин: вот так вот не явно там вот это все Сделать
Михаил Непряхин: то есть типа упрощения синтакси завидия Сколько сахара вы Не видите что это указать по указателям Мы работаем Но реально Мы работаем здесь по указателям
Михаил Непряхин: Раз мы работаем здесь по указателям то мы можем здесь Внутри эти перемены поменять
Михаил Непряхин: и их потом изменение потом увидеть то есть вот мы печатаем например
Михаил Непряхин: счетчик, до вызова Этой функции, то есть вот мы функцию поместили в перми но ее не вызывали просто мы захватили как бы на и все
Михаил Непряхин: и хотим, посмотреть значение перемен вот Этой эстра и ай
Михаил Непряхин: посмотрим ну дурдай должен быть ну час
Михаил Непряхин: так
Михаил Непряхин: не печатаем давайте, сэр какую нибудь Заведем что здесь
Михаил Непряхин: отрицательный знак вот его напечатан искательный знак и ноль то есть как бы Мы там внутри функции, вот Этой вот функции, Захватим этот Скоб Но он здесь еще Не поменялся. Вызываем Эту Функцию и Смотрим изменились ли перемены Которые эта функция захватила
Михаил Непряхин: и да они изменились вот Мы восклицательный знак поменяли на хволл а единицу заинкерменили этот счетчик, если, еще раз вызовем ну тут чучек будет два уже
Михаил Непряхин: вот и теперь вопрос
Михаил Непряхин: что из себя представляет на самом деле
Михаил Непряхин: Замыкание в памяти как Он выглядит в памяти знаете какие соображения
Михаил Непряхин: вы же знаете ли вы как замыкание то есть что Такое замыкание
Михаил Непряхин: какие есть соображения найти можно голосом Если у вас есть какие то соображения,
Михаил Непряхин: допустим засобься вас спросили Окей ну вот вы рассказали как замыкание себя ведет что такое замыкание
Михаил Непряхин: ни у Кого, здесь нет.
Konstantin: Замокание, та функция которая хранит также перемены ископа из Внешнего. Из того скопа в котором эта функция была определена.
Михаил Непряхин: Это. Абстракция то Есть Это определение абстракции но вот в памяти как представлена Анонимная функция Или Замыкания
Михаил Непряхин: в памяти как она будет.
Konstantin: Наверное
Konstantin: Каштан указатель.
Михаил Непряхин: Ээ ну окей указатель да правда на Что Указывать эту касательно знаете так.
Konstantin: Ну наверное на реализацию функции. В куче.
Михаил Непряхин: И как реализация Этой функции. В куче как она выглядит куча.
Konstantin: Тут
Konstantin: сложная задача.
Михаил Непряхин: Ну смотрите когда задают подобные Вопросы, как бы, чего угодно любые абстракции на низком Уровне это обычная структура
Михаил Непряхин: Поэтому функция тоже структура
Михаил Непряхин: Раньше, смотрите как выглядит аа замыкание к памяти
Михаил Непряхин: а это структура
Михаил Непряхин: ну Назовем Неукложаем
Михаил Непряхин: это структура У которой ну мы же как-то захватываем переменная правда мы их захатом по указателю ну вот значит все что мы Захватили будут полями Этой структуры
Михаил Непряхин: но ее надо еще как то вызвать как она вызывается, ну по методу то есть в Этой структуре есть метод
Михаил Непряхин: и вот
Михаил Непряхин: то что мы здесь внутри определили функции вот оно Здесь в Методе поместится ну Просто понятно, что она будет работать с этими указателями и Поэтому тут немножко страшный синтез потому что Не просто инклимент а нам надо сперва Разименовать достучаться До Этой перемены. Потом ее заинклементить и перезаписать
Михаил Непряхин: вот и Мы собственно То же самое можем сделать от нас объявляем какую-то переменную ай говорим что кло уже вот объявляем нашу структуру
Михаил Непряхин: и помещаем указательно ай
Михаил Непряхин: полем Этой структуры
Михаил Непряхин: а дальше Мы просто вызываем эту Функцию которая там есть ну ее можно как угодно, называть и
Михаил Непряхин: до вызова замыкания оно ноль два раза вызвали два раза инкриминители. Три раза вызвали три раза за инклементи то Есть,
Михаил Непряхин: вот эта Анонимная функция оно уже замыкание ну если тут Нет полей это будет просто Анонимная функция то Есть что-то Там какая-то логика Есть если, Мы захватываем какие-то и
Михаил Непряхин: на Самом деле Ну, как бы Идея очень простая чертовски простая
Михаил Непряхин: а еще в коде Мы имеем то есть когда Мы работаем с Функцией когда Мы вот ее вот здесь вот поместили ее внутрь вот мы наводим Тут и ей подсказывают что клоун это Функция
Михаил Непряхин: это на самом деле указательно функцию еще дополнительно то есть на самом деле ну это должно быть ну вот как-то так то есть здесь еще звездочка вот такая есть невидимая которую убрали потому что ну По-другому Мы Не Работаем с замыканием, Или указателем здесь да Звездочка
Михаил Непряхин: вот Поэтому Грубо, говоря Мы Вместо того чтобы
Михаил Непряхин: Вместо того чтобы вот писать вот так вот когда мы Хотим? Поработать с какими то такими вещами Ну и просто для удобства
Михаил Непряхин: и Как видите очень короткий супер-короткий синтаксис то есть Мы просто берем говорим захватывая все что из колпа а оно там само возьмется по указателю само когда Мы здесь вызовем вызовет свой и
Михаил Непряхин: как простая абстракция у многих. Возникают проблемы потому что ну надо же как-то об этом думать а как об этом думать
Михаил Непряхин: когда вы об этом думаете, вот так вот и
Михаил Непряхин: вот и ну еще какая мораль да надо понимать что раз что-то вы взяли из Колпа если. Вы там Внутри замыкания это что-то поменяете то Изменение Будет видно
Михаил Непряхин: извне сколково
Михаил Непряхин: и поэтому как бы ну. Просто нужно об этом знать
Михаил Непряхин: как часто используется замыкание ну. Да редко то есть это как бы ну такая штука обычно с бурутинами, как-то используется обычно это вот чаще всего это просто, Анонимная функция как-то как-то так
Михаил Непряхин: а которая ну да она еще и замыкание потому, что чего-нибудь из скол, поберет какую-нибудь военную. Группу вот это обычно так используется вот
Михаил Непряхин: на этом Можно конечно Построить тут целую как бы логику и Можно уже в функциональном стиле работать а еще есть такое мнение что типа вот кто умеет работать с этими замыканиями типа вот уже синьор, По факту это ну как, бы усложнение
Михаил Непряхин: и этот функционал настоял грейсмер добавить просто для того Чтобы ну как бы Поддержать вот это во все языки начали. Добавлять а именно, функции, замыкания Поэтому Просто в Гушке тоже ничего не стоило это добавить но и добавили
Михаил Непряхин: вот то есть лучше применять только Там где вы понимаете Что ну Вот По-другому получается Плохо Вот Но Не лепить Везде подряд
Михаил Непряхин: Так Вопросы, По замыканию, еще остались Значит теперь Все понятно, Что Такое замыкание и как оно работает
Михаил Непряхин: Так фанкшн пойнтер от обычного. Планета Ничем Не отвечает. Да Нет ну просто указатель просто Обычный указатель который указывает на область памяти
Михаил Непряхин: где находится вот эта структура
Михаил Непряхин: и к ней ну вот как, бы с ней ассоциирован еще вот этот метод
Михаил Непряхин: вот которая опять же не забывайте что на самом деле это обычная функция просто у нее вот вот этот вот север он вынесен вперед, так по Большому счету обычная функция
Михаил Непряхин: Письмо и методы это по Сути обычные функции
Михаил Непряхин: плюс-минус мгко получается все указатель ну Не все но вот функция Это указатель
Михаил Непряхин: Анонимная функция Никогда Не задумывалась о Том, как хранится накане вот то Есть вот в этом беда что об этом нифига никто толком не рассказывает я не знаю почему и когда люди начинают работать с Ценностями Функциями Замыканиями вообще как бы непонятно как-то в голове представлять что это и где-то
Михаил Непряхин: вот на самом деле очень простая абстракция
Михаил Непряхин: так
Михаил Непряхин: дальше
Михаил Непряхин: значит в прошлый Раз мы говорили про слайсы
Михаил Непряхин: говорили медленно ожевывали потому, что чертовски важно если, вы чего-то где-то недопоняли то сразу с лайсами прям вот разбирайтесь до конца пока вот прямо, играетесь пробуйте смотрите как они себя ведут пока более-менее Не поймете что это такое
Михаил Непряхин: значит Мы Не поговорили про апент
Михаил Непряхин: мммм значит У аппендам ну. Вообще зачем нужен пент вот у нас есть слайс юзеров
Михаил Непряхин: если Мы его так вот добавляем объявляем как зеровелью не литиравом а просто типом то там борт, елены копайте по нолям и
Михаил Непряхин: вот есть самый частый кейс Использования, слайса если вы не знаете какой будет, размер
Михаил Непряхин: слайса
Михаил Непряхин: то вы его объявляете Так уж если, вы знаете какой будет Размеррой. Вы делаете через Майка а если, не знаете просто вот Так по дефолту
Михаил Непряхин: и дальше вы добавляете туда По Одному элементу значит
Михаил Непряхин: Первый Раз, когда вы добавите туда элемент
Михаил Непряхин: а его Лены к опасности будут равен По Одному
Михаил Непряхин: если вы добавите еще смотрите какая здесь особенность синтаксиса Пэнт Он принимает с вайс
Михаил Непряхин: и возвращает слайс
Михаил Непряхин: и принято вот который слаясь, сюда Он принимает вот в этот же слой Мы и переписываем То есть Мы постоянно переписываем Наш Один. И тот же свайс Зачем Так сделано потому Что здесь может в Один тот же самый слайс может вернуться а может Новый сваясь вернуться
Михаил Непряхин: То есть эээ с другим массивом под капотом происходит это тогда когда У нас не Хватает места в текущем свайсе как например, здесь
Михаил Непряхин: а То есть Там было ноль ноль места Нет мы добавить нам мы не, можем Поэтому апэнте он выделяет новую память ну копировать туда, нечего Поэтому просто новую память уделяет добавляя туда, тома
Михаил Непряхин: и и
Михаил Непряхин: вот а на старую, структуру уже никто не указывает ну и все соответственно как бы ее соберет на рабочий коллектор
Михаил Непряхин: а дальше хотим, еще Раз, добавить еще один элемент в Этот же слайс
Михаил Непряхин: и и
Михаил Непряхин: Мы удваиваемся по леной копасе и Мы выделяем новый мотив Старые данные Копируем туда и Добавляем Еще Один элемент получается ленд два капозите два
Михаил Непряхин: Но присваиваю вам в этот же свайс а тот Предыдущий массив который был его тоже горбушка коллектор собирает рано Или поздно
Михаил Непряхин: Делаем Еще одно добавление элемента и теперь Мы удваиваемся Покопасити
Михаил Непряхин: То есть у нас там массив под капотом он уже Емкости четыре Но лен три
Михаил Непряхин: и в следующий Раз, когда мы Добавим элемент вот здесь уже Не будет
Михаил Непряхин: переолокации Не будет Копирования Мы здесь Отвернем тот же самый. Свайс который вот имели здесь а до этого Мы Всегда, возвращали новый
Михаил Непряхин: здесь Мы Изучаем тот же. Самый и у нас лен уже равно Копается идти то есть в следующий Раз, когда Мы будем добавляться нам Тоже, придется переуделять память
Михаил Непряхин: еще Раз, добавляем еще Один. Элемент и теперь уже у нас удвоилось копассити оно в восемь и блин у нас пять и соответственно мы еще три элемента можем туда добавить
Михаил Непряхин: и оно Не потребует переловокации ну и вот У нас под капотом будет вот такой массив соскопасть и восемь и три пустых элемента ну Так как у нас лен пять то, мы их и не, увидим у нас вот на этот элемент как. Бы мы только До него можем увидеть
Михаил Непряхин: а эти у нас они просто Под капотом внутри
Михаил Непряхин: как. Мы в прошлый Раз, говорили, Мы можем раздвинуть вот этот вот горизонт и посмотреть что Там и Увидеть вот эти нулевые элементы ну это скорее оптимизация для того когда Мы пишем китал горит уж Непротакшн Ради кода
Михаил Непряхин: и м возникает вопрос
Михаил Непряхин: А как дальше будет расти удваиваться ли будет дальше к опасности
Михаил Непряхин: а давайте ваши ставки кто не Знает значит Будет ли удваиваться? К опасности либо как Оно Будет себя по другому Вести как вы думаете.
Konstantin: А в каких, случаях.
Михаил Непряхин: Ну вот продолжаем удваиваться.
Михаил Непряхин: Ой Мы продолжаем добавлять значит Мы Просто вот Эту вот Штуку продолжаем Делать, дальше по одному элементу добавляем добавляем Проблем и Просто хотим, понять. Каждый Раз, Будет удваиваться к опасности.
Konstantin: До Определенного момента по-моему удваиваются а дальше как будто. Бы там Уменьшается вот этот рейд на который Умножается там текущая длина.
Михаил Непряхин: Да там единая независимость правильно Ну Давайте попробуйте Предположить, Э
Михаил Непряхин: до какого. До какой степени она будет уменьшаться постепенно
Михаил Непряхин: да тысяч увольнения а смысл в том что смотрите значит мы удваиваемся
Михаил Непряхин: потом мы понимаем что ну представьте у нас миллион
Михаил Непряхин: Капасити
Михаил Непряхин: если мы Сейчас добавим Один элемент вот два миллиона капасиди
Михаил Непряхин: типа мы по памяти удвоимся так
Михаил Непряхин: занимать мы будем, в два раза больше а мы всего лишь один, элемент хотим? Сохранить
Михаил Непряхин: типа неэффективно как Будто бы хочется с какого то момента не двоих сделать а допустим полтора икс
Михаил Непряхин: вот в этом идее ну вот константин один Раз, пять написал да, такие есть то есть вот константин ремчуков. Знает,
Михаил Непряхин: значит есть вот нехитрая программка можете Там вот эту программку сами запустить и просто посмотреть у меня, здесь Двадцать прыжков. То есть Двадцать увеличений Копасить и посмотреть как оно работает значит вот это результат работы Этой и
Михаил Непряхин: программки
Михаил Непряхин: значит Смотрим
Михаил Непряхин: До Пятисот, двенадцати Емкости Мы удваиваемся
Михаил Непряхин: начиная с пятиста двенадцати вот тут Один, элемент добавляем и все и Мы уже не удваиваемся Мы в один шестьдесят шесть растем
Михаил Непряхин: ну! И потом один пятьдесят один ездит стремительно падаем
Михаил Непряхин: и уже уже начиная
Михаил Непряхин: Со Ста семидесяти пяти, тысяч.
Михаил Непряхин: Мы больше не падаем Там примерно Один, двадцать пять получается и
Михаил Непряхин: вот это вот рост
Михаил Непряхин: то есть эээ для того чтобы когда мы работаем с миллионами Элементов
Михаил Непряхин: у Нас не случилось так что память вроде есть для работы Программы но мы падаем потому что, ну
Михаил Непряхин: как бы Мы удвоились и все а на самом деле могли бы поменьше расти не Так, жадно и тогда, все было нормально вот Поэтому здесь сделано так Что, оно постепенно уменьшается до, Один Двадцати пяти,
Михаил Непряхин: ну в общем надо просто примерно понимать Что, вот оно Там с двойки и падает примерно до один Двадцать пять просто как Бы это такой вопрос на Собеседование могут задать
Михаил Непряхин: михаил После того как слайс что То добавили он сразу идет, в кучу Даже если был на стыке
Михаил Непряхин: смотреть онлайн
Михаил Непряхин: там есть размер
Михаил Непряхин: короче первое время
Михаил Непряхин: массив
Михаил Непряхин: конечно Есть какой то размер
Михаил Непряхин: после Которого, Всегда в куче
Михаил Непряхин: то Есть э ну не знаю.
Михаил Непряхин: Три тысячи двадцать четыре элементов не знаю. В тысяча двадцати четырех элементах он может быть э, настлеки даже выделен без кучи потом точно будет кучу
Михаил Непряхин: вот про массивы ну это вообще, про Массивы конечно речь То есть Вот когда мы допустим с массивом работаем
Михаил Непряхин: Мне кажется, что когда мы с асфальсом работаем мы Всегда сто процентов выделения получим на кучу без вариантов
Михаил Непряхин: а вот если мы работаем просто вот функции, с массивом ну такое бывает
Михаил Непряхин: никогда ну то есть как бы в продакшн конди вы не увидите мотив а Так в чистом виде только свайс Но если вдруг вам говорит она вот если вы прямо, работаете на низком уровне там У вас все оптимизировано вы прямо, с Мотивами работаете
Михаил Непряхин: то до тысячи двадцати четырех
Михаил Непряхин: оон будет на стеке то есть будет довольно быстро. Работать Еще даже за счет этого Вот потом он все равно уедет в кучу
Михаил Непряхин: потому что большие размеры настыки Кино неэффективно работать с ними вот ну то ли тысяча, двадцать четыре, то ли чего то где то от кого-то
Михаил Непряхин: может быть Там в байтах размер тут. Я не помню то ли в количестве времен стали У байтов
Михаил Непряхин: я просто не Зачитал Что сласть при любом изменении Отправляется в кучу До Определенного предела по Размеру и Можно Ставить Возможно Возможно то Есть ну как бы на собеседниках Не Спрашивать для работы Никогда не набилось это я не знаю Там. Оптимизации столько
Михаил Непряхин: много шоу Их все нереально запомнить только если. Вдруг Вы с Этим Столкнулись его Так изучили этот момент
Михаил Непряхин: и как вы понимаете если вы Создаете вот так вот слайс и
Михаил Непряхин: то вы получаете много Авокаций
Михаил Непряхин: потому Что У вас вот
Михаил Непряхин: ээ Если, вы допустим Хотите тысячу элементов добавлять и вы так будете оппонтить
Михаил Непряхин: а значит допустим где Мы там до тысячи элементов дамы где-то здесь смотрите Сколько прыжков? Вы Совершите да То Есть тут ну Сколько Там десять. Прыжков? Где-то Вы сделаете
Михаил Непряхин: это десять. Локаций это десять. Раз Мы выделим память скопируем туда отдам Тоже. Тысяч, оптимизации Этого Локатора, Там все сложно
Михаил Непряхин: аа Но короче суть в том что это все равно медленно Там Не будет реальности скола к персонке Это был Бы общий Жест Но Тем Не Менее Там будут будут обращения к внутреннему адвокату гожному а он медленный то есть
Михаил Непряхин: э я не знаю во сколько там Раз Ну считаете не знаю десять двадцать Раз медленнее чем работать на стыке может быть даже пятьдесят Раз что то такое короче жесть как медленно
Михаил Непряхин: вот Поэтому естественно хочется оптимизировать как это оптимизироваться с Помощью мейка если вы знаете сколько вы будете элементов хранить в своем Слайсе да Вы Хотите, просто Опэндить но Вы Не Хотите, вот этих Ход Перевокаций постоянно. Поэтому вы просто говорите что У Меня Будет пятьсот элементов
Михаил Непряхин: и все а Дальше о политике как обычно У вас Не будет никаких пробыток и не так много
Михаил Непряхин: вот то Есть вы говорите что у вас бодка посети пятьсот лен ноль
Михаил Непряхин: и опоньте себе на здоровье и У вас Не Будет Проблем, с перевокациями то есть это Будет работать ну Прям Можно бить Марки потом покажу в бичмарке писать по-моему что-то такое написать Или сами, можете написать чтобы просто знать во Сколько Раз это будет медленнее работать
Михаил Непряхин: Но и
Михаил Непряхин: когда вы только просто что-то пишете
Михаил Непряхин: вы все равно мэйк не используете потому что мейк является Так сказать преждевременной оптимизацией
Михаил Непряхин: обычно вы все равно пишете вот такой код да Там Происходят локации прыжки туда-сюда но ну, господи у нас язык с горбачкой лектором он сам работает быстро. И Даже Если, вы будете работать вот Так вот
Михаил Непряхин: Так Чтобы Это, было узким, местом Но точно Нет можете даже Не сомневаться Это, узким, местом в программе Не будет То есть вот Там тысячу Раз играли Мы такую игру с Коллегами значит открываем какой-нибудь чей-нибудь код
Михаил Непряхин: и спрашиваешь значит М вот где Ты считаешь у тебя узкое место, ну. Вот самое Медленное место, в Этой программе
Михаил Непряхин: никто Никогда Не угадывает вообще никто Никогда ни. Разу Не угадывает Где это узкое место Ну, если Не совсем. Явная Конкретикация строк какая-нибудь нереально угадать,
Михаил Непряхин: Поэтому когда Вы смотрите Лена код Вы Не можете сказать как его можно оптимизировать где он будет тормозить
Михаил Непряхин: во-первых когда вы оптимизируете уход. Вы Всегда, его уродуете и вот это вот выглядит доступнее и проще чем
Михаил Непряхин: а вот это вот через майк
Михаил Непряхин: еще можно ошибиться нам, вот так ну и
Михаил Непряхин: можете даже не париться на Первых порах вот Про это
Михаил Непряхин: вот ну если, вам приходит какой то свайс
Михаил Непряхин: как вы помните Мы вот с этим свайсом Ничего не делаем с тем свайсом который к нам функцию пришел
Михаил Непряхин: мы создаем сразу, Новый слайс и Тренируемся По-старому пишем в Новый и вот в этом случае ну конечно нам Без Проблем, у нас же есть и
Михаил Непряхин: лен вот этого одесса который нам, поступил, наверняка вот так вот
Михаил Непряхин: и и
Михаил Непряхин: аа профита оно ну Дает как бы Но
Михаил Непряхин: все равно самым узким местом программы. Этого Не будет Поэтому
Михаил Непряхин: про это
Михаил Непряхин: больше приходится париться потому что в головах угошников Что это важно это локации там туда-сюда и как бы
Михаил Непряхин: и и
Михаил Непряхин: так все ли с этим понятно, есть ли тут вопрос
Михаил Непряхин: так
Михаил Непряхин: ну Окей вопросов, как Будто. Нет
Михаил Непряхин: Так ша За посмотрим шумно с утешен
Михаил Непряхин: ну вот я вот я тут, показываю Должна смотреть если, вы Делаете вот так вот То вас и лены копасяти три
Михаил Непряхин: и если вы будете оппонентить ну короче Это вот Не, получится, память возникнет новый Свальский короче от смысла Нет Так делать мейк
Михаил Непряхин: вы просто и
Михаил Непряхин: и поменять это быстрее но даже эту оптимизацию и
Михаил Непряхин: какпасть Тебе сколько надо и через аппент добавляете в слай с элементы то есть вот это и есть вся, работа со свадьбой то есть когда вы в жизни с ним работаете вы вообще ничего кроме как
Михаил Непряхин: вот так вот его создали и опендити не делаете
Михаил Непряхин: вот а вот это вот все вот знать весь его функционал что он Там как себя ведет по сути это все для собетов потому что это первый Этап любого собеседника если вы здесь проваливаете его или как-то слабо отвечаете
Михаил Непряхин: и и вы даже возможно на следующий этап не пройдете потому что как бы здесь себя Плохо показали
Михаил Непряхин: так. Вопрос только Про хранение. Спасти получается срываясь куча может ссылаться на мастерство
Михаил Непряхин: так. Сейчас интересный вопрос получается ссылаясь и с кучью и может Ссылаться на массивстек
Михаил Непряхин: нет нет я думаю что нет я думаю что власть всегдавоцирует массив
Михаил Непряхин: в куча
Михаил Непряхин: как бы Свечку не державу прямо вообще сто сто процентов не скажу но Мне кажется, что так
Михаил Непряхин: и я про массив говорил я просто спутывал ну вот я сказал вам что если вы работаете с массивом то Он может маленький массив Он будет на Стеке потом когда Он будет Расти Он уедет в кучу а с асфальсом когда Вы Авоцируете
Михаил Непряхин: ну короче я Никогда Не слышал Не читал несмотря ни про это Не могу. Сказать если такая оптимизация есть ну прикольно вы сделали свалится Еще и мысив у вас на стекке но ничего про это не Слышал я думал что если Так можно кучу заглянуть Но не наоборот или
Михаил Непряхин: Ну на самом деле можно Куда угодно заглянуть с помощью указателя
Михаил Непряхин: вообще не важно вот какая у вас Разница вот У вас Кусочек памяти он в стекке, находится или Кусочек памяти находится в Куча указатель поставить можно вот вот на любую память какая У вас есть Куда Хотите, указать той поставьте хоть в тексту и область хоть в область констата хоть бы, может быть функции
Михаил Непряхин: не проблема, вот ну тут скорее вопрос просто как это реализовано в языке
Михаил Непряхин: вот в моем убеждении я думаю что слайс когда вы работаете со слайсом У вас структура слайса Всегда на стеке очень логично а массив Всегда в куче но вот могу конечно ошибаться может быть какая-нибудь есть супер оптимизация
Михаил Непряхин: так ну про низко уровневые штуки
Михаил Непряхин: Плохо знает платья постоянно. Приходится. Сверяться если что-нибудь от про низко уровневое обязательно надо говорить Что Ты разработочек компилятора Языка Голову. Видит баба вот это вот иначе они Прям совсем, плохо
Михаил Непряхин: так,
Михаил Непряхин: в Создание, пустого свайса ну да вот Этому вот прямо, цирром Под капотом У нас Будет сласть на Лимонная Или миллион элементов
Михаил Непряхин: а ну лен Будет ноль соответственно Мы Будем поинзить вот в начало
Михаил Непряхин: так-так
Михаил Непряхин: ну вы да Ведь теперь, можем За аппенди просто миллион элементов Провокаций Не будет
Михаил Непряхин: Так мам вам
Михаил Непряхин: да проверяем ленка Пасе если. Мы закончили значит лен миллион капаете миллион Хотим, Добавить еще один элемент. Добавляем его и Получаем Рост в один Двадцать, Пять и у нас в итоге будет лен миллион один
Михаил Непряхин: окопасти под капотом массива будет вот примерно в один Двадцать Пять Раз
Михаил Непряхин: так значит про слайс про слайс закончили
Михаил Непряхин: если ну, У нас Еще будут задачки короче вот задачки которые на собесе спрашивают ну, их бомбом постепенно решает просто чтобы вы Не забывали как их решать вот
Михаил Непряхин: значит здесь какие-то Еще Вопросы, Есть по Свайсам Давайте если, Есть Еще прославий
Михаил Непряхин: расскажу
Михаил Непряхин: дайте Можно голоса Можно написать
Михаил Непряхин: все ли Пока Прослось понятно,
Михаил Непряхин: окей а
Михаил Непряхин: значит следующая У нас тема
Михаил Непряхин: Вотцеваясь она Одна из Самых Сложных, геморных тем потому Что она вот подразумевает доскональное Понимание, как оно Там в Новом низком уровне устроено и Какой Общий инстинкт здесь как с Ним работать особенно, вот этот гемор, с вот Это, вот
Михаил Непряхин: с вот с этим вот Таким вот нарезкой и сальцев Что вот Это, включительно Это, исключительно ну, просто надо запомнить сперва включительно потом исключительно
Михаил Непряхин: вот ну, и еще вот добавилась вот эта вот кпасть и осторожно собеседника бывает спрашивают типа баха хочу здесь чуть-чуть это Будет если, мы еще через, двоеточие Добавим
Михаил Непряхин: а это У нас копати мы Подрежем еще Таким образом, вот ну и вот возникают Иногда приколы и вот когда вот здесь вот мы указываем
Михаил Непряхин: и индекс восемь на самом деле индекс максимального элемента в семь что надо, понимать когда у нас мы заработаем с Правой Частью мы работаем с фантомным. Вот Этим Вот Восьмым Элементом Которого нет Вот Это Прям такие Ммм самые сложные. Вещи про Слайсе
Михаил Непряхин: так ладно Давайте Перейдем теперь. К мапам а второй по возможности, теми
Михаил Непряхин: а
Михаил Непряхин: а третий еще это планировший гол
Михаил Непряхин: я и
Михаил Непряхин: так
Михаил Непряхин: так мама папа в других языках, ассоциативный массив
Михаил Непряхин: или
Михаил Непряхин: словарь как ты так дик шенгри
Михаил Непряхин: а значит тип пишется как ключевое слово, Мап
Михаил Непряхин: дальше в контрактных скобках, указывается.
Михаил Непряхин: Тип ключа и после квадратных скобок
Михаил Непряхин: Тип Вэлью
Михаил Непряхин: то есть на Скей уэль мапа это киева или хранилище чаще всего используется нууууу для кашей то есть топ один Использование Этой киши
Михаил Непряхин: или ин, мемори такая баска данных небольшая быстрая супер быстрая быстрее чем рэдис быстрее чем чего угодно
Михаил Непряхин: а мапы на гол, работают ээ
Михаил Непряхин: ну как бы медленнее маг на голову только там Это плюсы быстрее чем мапы на Голову. Это только на плюсах и на расте
Михаил Непряхин: вот ну. И то как был час последней версии Предпоследний подтянули и тут же пытаются подтягивать мапы гоу
Михаил Непряхин: чтобы они работали по быстрее ну работают они быстрее чем в питоме Там в джесси джавеле шерпи где угодно То есть Мы побыстрее
Михаил Непряхин: значит недавно их версии Сейчас у нас кошка версия
Михаил Непряхин: да и
Михаил Непряхин: но вот мапы завезли верси один? Двадцать четыре то есть отверстие назад
Михаил Непряхин: и довольно сильно изменили
Михаил Непряхин: и теперь. Короче говоря он
Михаил Непряхин: Приходится изучать реализацию предыдущих мап и текущих что как бы немножечко усложняет это дело потому что предыдущие мамы довольно просто Были реализованы текущие
Михаил Непряхин: капец как сложно
Михаил Непряхин: а почему так
Михаил Непряхин: потому что мапы это
Михаил Непряхин: ну в таких, языках, как си плюс плюс и раст
Михаил Непряхин: а мапы реализованные вот как бы максимально эффективно
Михаил Непряхин: на текущий момент
Михаил Непряхин: э вот насколько наука компьютер сайнс продвигается вперед допустим что то новое изобрели Там приручили нобелевку еще что то
Михаил Непряхин: мапы в плюсах и власти тут же подтягиваются то есть чтобы они были быстрыми
Михаил Непряхин: и соответственно гоу тоже следит За этим ну допустим последняя реализация быстрых мап и
Михаил Непряхин: свистэйблс Так называемая
Михаил Непряхин: а Эти свидетельствачу Швейцария швейцарские таблицы
Михаил Непряхин: а вот
Михаил Непряхин: ууу
Михаил Непряхин: она была в Две Тысячи девятнадцатом году выкаченная в плюсы у власти примерно Так же появилась и Его Только вот спустя шесть. Лет начали подтягивать и в гол. Тоже
Михаил Непряхин: я предыдущая версия Тоже нормально быстро, работала Но эта текущая версия она немножечко эффективнее по памяти
Михаил Непряхин: ну Сейчас вот об этом поговорим
Михаил Непряхин: значит Ммм
Михаил Непряхин: что нам нужно от рашмапы
Михаил Непряхин: ну во Первых
Михаил Непряхин: мы хотим,
Михаил Непряхин: как вы Говорите По порядку Да как у Меня здесь
Михаил Непряхин: а что из себя представляет
Михаил Непряхин: структура мапы вернее что такое папа на уровне памяти
Михаил Непряхин: и как и замыкание мапа это структура все полезное чего чего угодно по Сути реализован через структуру на самом деле в любых языках ну если это Не примитивный тип если это примитивный тип То это ну Там ин инт Или бууда вот а если это какой-то сложней и То это структура
Михаил Непряхин: вот значит это структура
Михаил Непряхин: Ммм
Михаил Непряхин: к памяти но вот этот тип он указательный
Михаил Непряхин: то есть это на самом деле указатель на эту структуру
Михаил Непряхин: и здесь как бы тоже как и в функциях вот Мы только что смотрели как бы должен быть вот этот вот указатель вот кстати вот такой тип Указательного мапу он не имеет. Смысла потому что это был указательный указатель
Михаил Непряхин: как будет бессмыслица
Михаил Непряхин: короче говоря когда вы видите тип мапы Считаете Что Вы Работаете с указателем если Вы Передаете Куда То функцию То Вы Передаете Указатель если Там. Внутри. Функции
Михаил Непряхин: Мапу вашу поменяют вы снаружи увидите Это Изменение то есть как бы мама она одна если будете куда-то Передавать то вы просто шарите вот этот общий доступ к Этой Мапе и кто угодно и
Михаил Непряхин: там Маму Толкать в структуру и какую-то обертку сделать Над Мамой допустим и сделать доступ через гетсет
Михаил Непряхин: через гет красота
Михаил Непряхин: вот а если вы просто передаете Функцию не понимаете что если Там функция поменяет То оно поменяется
Михаил Непряхин: а Мы до этого смотрели что с лайс это толстый указатель сваясь это указатель из трех полей
Михаил Непряхин: То есть это структура с тремя полями но один из них указатель
Михаил Непряхин: Мапа это просто Один указатель это просто тонкий указатель а Обычный указатель а сколько у нас указателей Занимает на Стекке восемь байден, Поэтому размер мапы на стеке восемь байт ну а размер там он реальный это он там в куче Лежит как бы это в зависимости от того сколько Там у него данных
Михаил Непряхин: зероалью Какое зеровелью у мамыпы вот когда вы так объявляете, мапу переменой какой же Там будет зеро Или у него зеролью нил
Михаил Непряхин: то есть когда вы вот Таким образом работаете с асфальсом все киев можете в него оппонентить
Михаил Непряхин: Будет все нормально если вы Так захотите работать с мамой Будет паника
Михаил Непряхин: потому что Внимовую мапу нельзя добавлять элементы
Михаил Непряхин: по ней по моему Можно интегрироваться.
Михаил Непряхин: Но элементы убить нельзя
Михаил Непряхин: А короче
Михаил Непряхин: не знаю нафига-то надо то есть. Он по мне пред полный потому Что Работать с нецензированной Мамой ну как бы Я вообще Ни разу Не Видел. Такого кейса и как Бы
Михаил Непряхин: может быть он где-то Есть но как Будто Бы хотелось Бы чтобы Она была Сразу Инициативная не знаю зачем это сделали а Сейчас Раз уж это Есть то ну так просто это не выпили потому что обратно совместим и все такое то есть может быть тут где-то заложилось уже на это поведение
Михаил Непряхин: вот Поэтому чаще всего вы будете видеть инициативу через мейк а Не Через вот Это либо Через литературу
Михаил Непряхин: Какой У нас ретирал У мапы То же самое добавляется круглой скобки сзади То есть Если Вы сделаете
Михаил Непряхин: а
Михаил Непряхин: вот Так вот
Михаил Непряхин: это уже Будет Инициатизированная мама, и она уже Будет не ему и От нее уже можно и добавлять элементы и работать с ними все нормально
Михаил Непряхин: а можно сразу через литера добавить элементы то есть говорите вот это ключ это вэлью но и можете их сюда, добавлять сразу сколько угодно можете работать таким образом, и здесь сразу произойдет локация по количеству элементов
Михаил Непряхин: а то есть вот мы в итоге получим такую мапу
Михаил Непряхин: топ один боб Два вот это все
Михаил Непряхин: да
Михаил Непряхин: значит доступ
Михаил Непряхин: а просто в квадратных скобочках Мы говорим пишем Ключ
Михаил Непряхин: и Поэтому ключу получаем значение
Михаил Непряхин: так вот У эстут
Михаил Непряхин: борис так идут ноль
Михаил Непряхин: тут должен быть ноль
Михаил Непряхин: о бо два
Михаил Непряхин: а если Мы хотим, перезаписать значение То мы говорим вот берем нашу мапу квадратную Скобочку указываем Ключ и знак равенства значение меняем То есть собственно говоря вот тот самый индекс как мы хотим? Работать с мапой
Михаил Непряхин: читаем Таким образом а эта. Операция получается. Будет выглядеть как что мы Прочитали получили значение и
Михаил Непряхин: и вернее как бы получили ну типа указателя и поменяли и по Этому Указателю То значение вот на это Замечание, типа того То есть когда вы увидите такую Строку на самом деле здесь и Чтение и запись
Михаил Непряхин: а где Везти такую Строку просто Чтение
Михаил Непряхин: Так и
Михаил Непряхин: Проверка значения значит есть дополнительный синтаксис
Михаил Непряхин: Мы вот обычное Чтение, У нас значит вот Так вот выглядит
Михаил Непряхин: шар,
Михаил Непряхин: То есть вот просто Мы Читаем
Михаил Непряхин: Мапа У нас Пипл, Мы говорим. Дай мне элемент с ключом том
Михаил Непряхин: и Мы здесь получаем значение ноль стамбуд ноль
Михаил Непряхин: вот Но Мы Хотим? Отличать кейс
Михаил Непряхин: аа от зеркалью
Михаил Непряхин: типа вот Мы Допустим работаем с Мамой ин
Михаил Непряхин: а у нас
Михаил Непряхин: в гошке
Михаил Непряхин: Всегда все инициализировано Не инициатизированной памяти Нет ну если она Не Инициатива бутню если У нас указать Не они солидарны на памятник Ну, вот Не мусор а если Это какие-то типы типа интастарингии то они будут Инициатизированы и
Михаил Непряхин: и вот Мы читаем Из мамы по ключу том и получаем ноль Что, нам Об этом говорит значит два варианта
Михаил Непряхин: одно, из двух
Михаил Непряхин: либо мы правда имеем
Михаил Непряхин: значение ноль первыйренд а второй вариант
Михаил Непряхин: и ключа тома
Михаил Непряхин: в мапе не было и мы получили зероалью
Михаил Непряхин: уж чтобы Отличить этот кейс первый кейс от второго когда зеро Или а когда значение Реально ноль
Михаил Непряхин: а
Михаил Непряхин: Есть ты такой синтаксис
Михаил Непряхин: мы получаем не одно, значение а Два значения значит здесь у нас будет ээ значение по ключу
Михаил Непряхин: а окей у нас булю во значения трулипа фолс
Михаил Непряхин: значит если значение Было то оно будет тру
Михаил Непряхин: если значения не Было то оно бот фолс
Михаил Непряхин: то есть вот мы в этом случае проверяем о том у нас Есть Мы его получаем здесь в Элью пот ноль Мы проверяем
Михаил Непряхин: Э, Окей Окей если Окей да значит мы попадаем внутрь и значит значение в мапе было и мы его печатаем
Михаил Непряхин: принято вот еще подобный синтез если, есть у каналов а потом дойдем
Михаил Непряхин: значит принят здесь писать ок
Михаил Непряхин: и если, не ок проверка ну вот просто восклицательным знаком читается удобно ну типа понятно что. Не ок То Есть если о кто значит значение Там было не около, значит у Нас э, Мы вью Заходим вот То Есть здесь принято писать вот называть вот эту переменную, оком
Михаил Непряхин: а так да Хотим? Добавить да так добавление Сейчас посмотрим По литерам мы здесь говорим значит том, вот один, бог два
Михаил Непряхин: а отсите вот можно одну штуку и записать можно вот в разные строки и так вот записать запятую надо Добавить тут, как бы Можно и Так короче и в одну, Строку работать тоже
Михаил Непряхин: Так говорим Что Добавляем Еще кейт Сто Двадцать восемь
Михаил Непряхин: Так Проверяем здесь у нас получается три значения
Михаил Непряхин: ну окей ничего особенного да ну как, бы
Михаил Непряхин: этот трек рассказал так Удаление для того чтобы удалить есть специальные функции, делит
Михаил Непряхин: а Она исключительна для мап
Михаил Непряхин: то есть эта функция работает Только с мапами
Михаил Непряхин: значит
Михаил Непряхин: Первым значением принимается мапа из которой мы Хотим? Удалить Ключ
Михаил Непряхин: а вторым значением Ключ который Мы Хотим? Ударить
Михаил Непряхин: ну и все как Будто Мы Не Читаем значения удалили
Михаил Непряхин: так Давайте Сделаем перерыв две минутки
Михаил Непряхин: и продолжим про мапы
Михаил Непряхин: возвращаемся. К мапам
Михаил Непряхин: Ммм
Михаил Непряхин: кроме каша какие Шакиси про занимает так кэш э и
Михаил Непряхин: ну а дедупликация потому что
Михаил Непряхин: Я Сейчас помню про дедупликацию расскажу что из мапы Можно сделать
Михаил Непряхин: Кортеж ой Не Крутеж
Михаил Непряхин: тэт
Михаил Непряхин: Да Сейчас про это расскажу Я бы сказал что Два кейса значит первый кэш внутренний а
Михаил Непряхин: а второй кейс это дид увлекаться использованием мапы как сет
Михаил Непряхин: а ну в общем-то вот вас накись
Михаил Непряхин: потому что ну папа тяжелая структура по сравнению с асфальсом То есть это Прямо динозавр и
Михаил Непряхин: это спрос это способ работать с массивом
Михаил Непряхин: вот папа это прям
Михаил Непряхин: прям тяжелая штука
Михаил Непряхин: может она понимать как бы что вот если Можно не работать с Мамой лучше, с ней Не работать
Михаил Непряхин: типа лучше структур, развести Если и мама Полей допустим Мапер
Михаил Непряхин: Так
Михаил Непряхин: Далее Не сказал итерация значит
Михаил Непряхин: у нас особенности Что Мы Читаем из мамы в случайном порядке
Михаил Непряхин: Сделано специально
Михаил Непряхин: ну там иногда может быть порядок какой-то более-менее предсказуемый но в целом закладываться на это нельзя то есть Чтение изма рандомное сделано специально
Михаил Непряхин: мы можем в оранже
Михаил Непряхин: Так же как Посла и Свитерровались
Михаил Непряхин: аа поместить емуполу после Роя Слова рэнч и получить, Два элемента первый Это будет ключ Второе значение
Михаил Непряхин: вот ну, то же самое можно только ключ прочитать можно
Михаил Непряхин: шумный голос
Михаил Непряхин: можно только только значение прочитать
Михаил Непряхин: зак
Михаил Непряхин: штурмо по чаще всего охраняют в реальной разработке, да какие-то структуры основной структуры
Михаил Непряхин: ну вот какой мы с каким доменом мы работаем вот структура этого Домина,
Михаил Непряхин: по указателям
Михаил Непряхин: чаще, всего хранят
Михаил Непряхин: так
Михаил Непряхин: то есть для быстрого доступа, к чему нибудь
Михаил Непряхин: ну тут вот про ключи Да Что как бы Тип должен быть композитор чтобы Он Был ключом У мамы
Михаил Непряхин: значит У где Же там моделейто
Михаил Непряхин: Мапа
Михаил Непряхин: а где То в какой то функции которая принимает мапу о чем расскажу он самого Принимая
Михаил Непряхин: клир по монклиер
Михаил Непряхин: да еще функция кли в которую тоже, вот ее недавно завезли Эту функцию
Михаил Непряхин: а вот я говорю что она принимает значит слайс и Мапу
Михаил Непряхин: свайся она сбрасывает все значения, на Зеровелью
Михаил Непряхин: вот
Михаил Непряхин: а в Мапе
Михаил Непряхин: в ма первый забыл. Ученый Девочек
Михаил Непряхин: так а ну она все Удаляет Она просто Делает Мапу чистый
Михаил Непряхин: пустой вот так Что вот Есть Еще функция клип но опять, же как бы
Михаил Непряхин: в жизни ни разу Не использовал
Михаил Непряхин: Не Находилась где
Михаил Непряхин: и так короче Ключом должно Быть либо булевое либо. Число с плавающей точкой Строка указатель может Быть ключом канала интерфейс массив Но с этим ключом может Быть много чего выступать главное чтобы ключ был сравниваемый а кампером был
Михаил Непряхин: а так, есть вот Можно посмотреть
Михаил Непряхин: Компания работа вот то есть Булы, числа строки пойнтеры Каналы массивы
Михаил Непряхин: и структуры есть ли в них все поля камперобу,
Михаил Непряхин: чаще всего Ключом выступает естественно стринга
Михаил Непряхин: вот ну реже там минт
Михаил Непряхин: и есть Особенность значит если вы очень длинную Строку туда затолкаете мало Будет работать медленнее Ну, что Там под капотом реальное сравнение идет
Михаил Непряхин: как Бы неспроста ключе и кампанию потому что там действительно Есть, Сравнение если. Будет Очень Длинная строка будет работать медленнее
Михаил Непряхин: так Поэтому обычно если. У вас Длинная Строка вы Не строку делаете ключом а вы От строки берете хэш и этот хэш уже в общем-то и выступает ключом
Михаил Непряхин: хоть это хошмап Но ты уничтожил Хаш на эхе короче получается
Михаил Непряхин: вот Так
Михаил Непряхин: Ну, Это Если Вы там Мой типа
Михаил Непряхин: к Ширам что-нибудь
Михаил Непряхин: сет значит как Можно сделать свет Из мапы
Михаил Непряхин: в качестве вэлью Мы Берем пустую структуру вот эта литература пустой структуры
Михаил Непряхин: Она ничего Не весит на стыке и в куче тоже она не занимает памяти ноль и мы по Сути просто заталкиваем в мопу ключи
Михаил Непряхин: и если у нас появляются дубли то есть вот у нас тон записался боб и записался а вот этот сам он все схлопнется в один
Михаил Непряхин: а что
Михаил Непряхин: Ммм
Михаил Непряхин: так
Михаил Непряхин: папа у нас и
Михаил Непряхин: не безопасный тип с точки зрения доступа из нескольких потоков
Михаил Непряхин: и Поэтому мама Должна защищаться ютаксом
Михаил Непряхин: а Так и внутри Могут быть
Михаил Непряхин: может быть рост мапы данные могут перемещаться в мапе Мы не можем брать
Михаил Непряхин: Я и
Михаил Непряхин: нам. Папа указателен То есть назначение из мамы не можем брать Указатель ну. Что он может Переместиться это значение
Михаил Непряхин: и мы Не можем
Михаил Непряхин: Конкурентный доступ Иметь к маме
Михаил Непряхин: и иначе, она ну. Мы можем получить, гонку данных и
Михаил Непряхин: мы должны защищать защищать нашу мапу ютаса обычно структура каша классическая это вот такая то есть у нас мы называем его кэш
Михаил Непряхин: а у нас вот здесь вот однашесной кэш то есть находят стринговые ключи и стринговой волью и мы имеем структуру ютаса принято по соглашению
Михаил Непряхин: какое поле. Мы защищаем над тем полем и такси размещать он в этом случае как бы
Михаил Непряхин: а вот не так вот мы делаем его Так вот над митоксом
Михаил Непряхин: тут, также там всплывают вопрос про
Михаил Непряхин: эти все Выравнивания, и Так далее но по мне это как бы вот Чтение оно Само важнее даже если Там структура Будет Занимать больше места это же не То что Мы работаем с множеством экземпляров это один из земля работ
Михаил Непряхин: что такое мюдекс
Михаил Непряхин: Ну. Короче говоря ютокс это структура для того чтобы делать локи
Михаил Непряхин: то есть для того чтобы работать с чем то из множества потоков
Михаил Непряхин: и защищать
Михаил Непряхин: Что то вот например, мапу от параллельного доступа, Одновременно
Михаил Непряхин: как это работает Мы объявляем у нас есть тип мапы и
Михаил Непряхин: и обращаемся к мютаксу вызываем этот лог
Михаил Непряхин: и теперь Мы попадаем внутрь
Михаил Непряхин: и Мы вот по ключу
Михаил Непряхин: меняем назначение
Михаил Непряхин: и Пока Мы Там внутри находимся
Михаил Непряхин: больше другие потоки к нам. Внутрь попасть не могут
Михаил Непряхин: они вот здесь застрянут они будут ждать Пока этот лок будет отпущен
Михаил Непряхин: Мы Записали в Маму наше значение делая Монолог и вот теперь следующая грутина следующий поток
Михаил Непряхин: а может зайти внутрь Но только один если их Там несколько вот здесь толпится То все равно только один туда внутрь попадет а второе не попадет То есть таким образом Мы можем защитить какой-то Участок памяти От Одновременного доступа
Михаил Непряхин: Это и
Михаил Непряхин: почему может произойти гонка данных ну что я уже говорил что здесь на самом деле не одна операция а их две тут и Чтение и запись а Раз два то это уже не может быть атамарным и поэтому Одновременно Если, Мы Будем Писать из нескольких. Грутин то может получиться, Так Что они и
Михаил Непряхин: Ну, короче говоря гонка данных произойдет прогон Куда нас еще поговорим поподробнее
Михаил Непряхин: попозже
Михаил Непряхин: так ты можешь включить под капотом Индексом
Михаил Непряхин: там очень сложно то есть смотрите как бы уроки это дорого лок это дорого
Михаил Непряхин: потому что любая синхронизация это супер-дорогая операция то есть если можно обойтись без мидексов а часто можно обойтись без мидексов ну просто когда У нас кэш тут Какой вариант особо Нет Поэтому приходится волки использовать
Михаил Непряхин: вот Поэтому Там под капотом ну Это отдельный свой мир. Компьютер-сайнс
Михаил Непряхин: а миттакс чокнутая на транзакции вода ну да ну да
Михаил Непряхин: Ммм
Михаил Непряхин: типа того да
Михаил Непряхин: ерунда эксцесс
Михаил Непряхин: ну там понятно, что эээ няня есть вот в этом плане константин
Михаил Непряхин: рандом.
Михаил Непряхин: Когда Мы говорим про работу из нескольких грузин из множества потоков там Всегда, будет трандом. Потому что как бы э
Михаил Непряхин: в том и прикол, чтобы Мы получили здоровую конкурентную работу должен Быть рандом Поэтому Там Как. Бы очередь да Но Она сама Не детерминированная рандомная
Михаил Непряхин: ну если так вот вкратце, значит понимать что такое Мюдекс
Михаил Непряхин: смотрите значит
Михаил Непряхин: У процессора Икс Восемьдесят шесть
Михаил Непряхин: ну Чаще его мы Все-таки имеем с архитектурой восемьдесят шесть. Хотя Сейчас тоже армия набирает популярность на серверах Но часть всего триста восемьдесят шесть.
Михаил Непряхин: Короче у процессора Фикс восемьдесят шесть. Есть атамарные инструкции
Михаил Непряхин: то есть прямо, на Камне
Михаил Непряхин: прямо, вот есть атамарные инструкции
Михаил Непряхин: Что это значит это значит Что
Михаил Непряхин: как бы Мы
Михаил Непряхин: Э какие то вещи можем делать но вот гарантировано тамарно
Михаил Непряхин: и на этом построено нютекс то есть там у мюкса? Под капотом ну другого-то ничего нет а как бы то Есть когда вы хотите, железнодорожно гарантировать какую-то автоматность какую-то очередность
Михаил Непряхин: вот вы используете вот Эти вот Низкоровневые хардварные железные
Михаил Непряхин: Регистр специально Томарная вот и оно там вот Этом построено он такой Семафор типа один вошел
Михаил Непряхин: и ну грубо говоря смотрите значит вот я чайка память Без этом а
Михаил Непряхин: ноль Один, рочпромбит
Михаил Непряхин: Один, или ноль короче говоря вот Мы все дубимся хотим, вот туда вот за Барьер пройти
Михаил Непряхин: значит если, нолик
Михаил Непряхин: то только кто то один из нас
Михаил Непряхин: может поменять его на единицу
Михаил Непряхин: и они рандомно там вот все доббится потом Раз, вот этот например, вот этого Получилось поставить единицу все эти ждут ждут пока опять, нельзя и он прошел этот поток прошел потом там, опять, подевал
Михаил Непряхин: заменил на единицу теперь Эти тоже долбятся, в него оба Но они Не могут Одновременно поменять его
Михаил Непряхин: кто-то Да то есть они обязательно
Михаил Непряхин: кто-то только один может сделать эту операцию вот Она как бы атомная Она гарантирована на уровне процессора но Она и чуть помедленнее чем обычная, операция
Михаил Непряхин: вот потом Раз, Раз, пять вот это допустим этому повезло это взял и единицу там поставил все войдет опять ждет вот короче на низком Уровне ну за типа как симу фору наверное да как-то тут научно-то называется
Михаил Непряхин: то есть
Михаил Непряхин: Маткатима
Михаил Непряхин: но. Только это Не Просто и
Михаил Непряхин: короче говоря про это про планировщик чуть попозже поговорим но вот если вы это будете понимать достаточно
Михаил Непряхин: тактак
Михаил Непряхин: есть еще
Михаил Непряхин: первый метод
Михаил Непряхин: в чем идея
Михаил Непряхин: когда Мы берем Обычный ютокс То вот прям Все хоть, Чтение, хоть, запись вот Я вот Сюда Попал больше никто Сюда не попадет
Михаил Непряхин: Ну, например
Михаил Непряхин: более страшная операция, это запись а чтение она из множества Потоков, безопасная
Михаил Непряхин: ну в чем, Идея
Михаил Непряхин: давайте. Опять,
Михаил Непряхин: значит какая то ячейка памяти нтв.
Михаил Непряхин: И три потока
Михаил Непряхин: хотят ее записать
Михаил Непряхин: и и
Михаил Непряхин: этот хочет ее записать в сорок Два этот хочет в четырнадцать записать этот двадцать четыре
Михаил Непряхин: и они это все Одновременно делают
Михаил Непряхин: а какое в итоге было от значения
Михаил Непряхин: ну какое-то из них рандомное вот этому повезет он последний бород вот оно было Два двадцать четыре ну как бы если это просто значение поменять ну как бы и ну окей там на что-то поменяется а если это счетчик
Михаил Непряхин: если мы хотим, не просто значения поменять
Михаил Непряхин: хотим, плюс один сделать
Михаил Непряхин: что, такое плюс один
Михаил Непряхин: а здесь Запусти
Михаил Непряхин: ноль да что, такое плюс один это не одна операция, это две операции Первая операция, мы читаем вот этот читает такой че там ноль хорошо добавь к нему один
Михаил Непряхин: то есть первая операция прочитай ноль вторая операция запиши один видите две операции
Михаил Непряхин: ну и тут то же самое да то есть как бы он должен сперва прочитать Что Там а потом записать и это должен еще Утра прочитать тонко записать и вот посередине может он вклинится
Михаил Непряхин: ну грубо говоря
Михаил Непряхин: читает этот сколько там ноль читает этот сколько там ноль читают это сколько там ноль
Михаил Непряхин: хорошо запиши плюс один
Михаил Непряхин: и это записал плюс один я записал один короче в итоге один
Михаил Непряхин: а у нас счетчик да а должно быть три
Михаил Непряхин: должно быть три
Михаил Непряхин: записалась один,
Михаил Непряхин: что это такое это гонка данных называется
Михаил Непряхин: Гонка данных это когда вот несколько потоков хотят изменить а одну чайку память
Михаил Непряхин: иногда это ок ну вот если, этот счетчик то не мог ну просто значение потеряется да и все
Михаил Непряхин: а если, бы они хотели не По-английски гонконг, называться дэйт рейс
Михаил Непряхин: дрейтерэйс
Михаил Непряхин: вот а что если, бы они не писать Хотели отчитать Но Тоже, Там приходит три потока
Михаил Непряхин: все Хотят прочитать этот прочитал. Сколько три
Михаил Непряхин: этот прочитал сколько три я прочитал сколько три
Михаил Непряхин: гонка данных произведений может потому что они просто читают ну допустим эти вот не Пишут Да никто Не пишет
Михаил Непряхин: только Читают Гонки данных произойти Не может
Михаил Непряхин: Поэтому Если У вас что-то читается из многих Потоков,
Михаил Непряхин: То все Окей
Михаил Непряхин: или Если У вас что. То читается из многих, потоков опишется только из одного
Михаил Непряхин: тоже все какие гонки данных быть Не может
Михаил Непряхин: но Если У вас что-то читается неважно из каких Потоков, отпишется например, уже из двух
Михаил Непряхин: все гонка данных возможно. Дрейтерлис возможен,
Михаил Непряхин: и эту чайку памяти надо защищать Мютоксон.
Михаил Непряхин: И если Мы защищаем индексом да Мы получаем предсказуемое поведение но все начинают тормозить Поэтому либо вы Не паритесь вам Не Нужен перформанс вы просто. Лепите метокс
Михаил Непряхин: если. Вы паритесь вам нужен перформанс вы Думаете, как это сделать так чтобы ютокс не был нужен
Михаил Непряхин: Ну. Как есть варианты не знаю заведите два разных счетчика Пусть на каждую груру тину на каждый поток будет свой счетчик и Раз в сколько-то времени. Их синхронизируете или просто в конце работы их возьмите и
Михаил Непряхин: ну вот как-то так
Михаил Непряхин: так вот короче говоря так как каждый Раз, блокироваться
Михаил Непряхин: дорого
Михаил Непряхин: есть оптимизация называется рв мьютикс короче говоря тот же самый ютокс но и
Михаил Непряхин: если
Михаил Непряхин: У нас вот сюда Мы попадаем На Чтение
Михаил Непряхин: и внутрь, уже Внутри уже кто-то Есть читающий. Читатель
Михаил Непряхин: вот Я там Один? Есть Я читаю
Михаил Непряхин: то здесь пометка
Михаил Непряхин: там
Михаил Непряхин: Внутри
Михаил Непряхин: Внутри читают
Михаил Непряхин: и и
Михаил Непряхин: читатели если, здесь появляются желающие прочитать они без Проблем тоже заходят То же, все заходят и я тоже читаю я захожу я читаю захожу я читаю захожу ну, там просто, счетчик, там плюс один плюс один присоединяюсь. Читать или присоедини читатель как он хоть выглядит
Михаил Непряхин: ну, видите вот тут Ээ павла тоже обычный мюток изнутри ну тут что то не на
Михаил Непряхин: там ведь юкос это он пишет семафор какой тогда на самом деле У него какой то стоит и си ему фор ну короче тут, Можно не разбираться, вот А рвем ютокс это тот же самый мютекс
Михаил Непряхин: и у Него тоже есть какой-то благ ему Фор, я так понимаю
Михаил Непряхин: где-то тут, счетчик, есть а ну вот рейдер аккаунт вот и
Михаил Непряхин: появляется писатель да вот он тут такой пришел э а я пишу
Михаил Непряхин: все он говорит я хочу писать дальше мы никого не пускаем ждем пока все читатели, выйдут все читатели, вышли шучек там меньше ли заходит писатель
Михаил Непряхин: а я пишу
Михаил Непряхин: а вот когда вот кто-то пишет все уже никто не может зайти
Михаил Непряхин: потом он опять вышел ну и все Пожалуйста, либо одного Писателя Пропускаем либо сколько угодно читателей он такая оптимизация
Михаил Непряхин: То есть если У вас много много читателей То можете так. Сделать
Михаил Непряхин: конкретные инструкции все Томики Весь пакет а томик он Видите он Тут есть какие-то сэмблерные инструкции,
Михаил Непряхин: то и
Михаил Непряхин: где тут, у Него
Михаил Непряхин: короче у Него все по типам то есть
Михаил Непряхин: Он состоит
Михаил Непряхин: из вот значит им тридцать два
Михаил Непряхин: Можем его загрузить Можем положить? Можем сделать Схлопнуть значение то есть это уже будет Атамарно У нас есть какое-то старое значение а есть новое. Значение вот Мы можем. Сделать сб
Михаил Непряхин: компоэйнсвоб Тоже. Типа проверить проверить ну типа было Там Или Нет То Есть Мы Есть Разница между новым значением и старым или нет и пополучить, разлеттангу или не было
Михаил Непряхин: аа вот ну и все и дальше там а ну вот можно его использовать просто как счетчик добавлять инкриминировать
Михаил Непряхин: Нет Не, знаю чуток заговора
Михаил Непряхин: итак Со всеми, остальными инт шестьдесят четыре то же самое
Михаил Непряхин: ну. Собственно и
Михаил Непряхин: Вот и когда Мы Работаем Вот Прям напрямую Вот с этими типами
Михаил Непряхин: Вот Мы просто напрямую Работаем Вот с этими, атамарными
Михаил Непряхин: Вот с этими амиками которые есть в операционной системе то есть с атамарными регистрами
Михаил Непряхин: ну надо понимать что они как бы медленнее чем обычные регистры но тем не менее сильно быстрее чем работать с метаксом То есть как бы Медленнее метакса уже ничего Нет
Михаил Непряхин: окно Что у ютуса под капота мотомики
Михаил Непряхин: Вот
Михаил Непряхин: то Есть Есть ситуация, когда можно например, с домиками работать Э Есть ситуации когда они Смеются с ними Работами если можно Избежать Этого и другого лучше избегать.
Михаил Непряхин: Так
Михаил Непряхин: и значит
Михаил Непряхин: поговорим про внутреннее устройство
Михаил Непряхин: Мапы
Михаил Непряхин: а значит ну как я говорю мапа это компьютер сайнс и
Михаил Непряхин: там очень много оптимизаций
Михаил Непряхин: и много Нобелевских премий
Михаил Непряхин: и если вы думаете, Что вы Там разберетесь досконально со всем, этим ну вы потратили очень много вечеров если вам это интересно То лишь можете на это Время потратить
Михаил Непряхин: по Сути я вам это рассказываю только потому что на собесе могут спросить и все для работы и вот то что вам апе вы увидели и вот вам для работы этого достаточно
Михаил Непряхин: но для того чтобы лучше на Одном языке Общаться с Тем кто. Будет вам просто Задавать нужно понимать и к сожалению. И старую. Лапу как Устроено
Михаил Непряхин: короче как устроена Старая, мама слава богу Не очень сложно
Михаил Непряхин: значит Есть вообще два типа Мапы Это с закрытой Адресацией
Михаил Непряхин: закрытая Адресация и открытая Антресация
Михаил Непряхин: короче. Вот старая мама она построена на закрытой антрепризации новой на открытой а новое это с один, двадцать четыре Которое ну вот недавно прям после нового года она появилась
Михаил Непряхин: вот она уже похожа на как,
Михаил Непряхин: си плюс плюс или раст
Михаил Непряхин: ну конечно как, это сильно сказано ну приближено
Михаил Непряхин: чуть-чуть понятно, что в плюсах или врачам будет самая быстрая
Михаил Непряхин: вот но тем не менее тоже по сравнению с всеми другими то есть там на Третьем месте После плюсов и раста идет, гол
Михаил Непряхин: и во-первых чтобы работать с хашмапой надо Понимать что такое хашфункция
Михаил Непряхин: конечно функция это опять же. Компьютер сайнс короче смысл в том что Мы можем на вход. Хэшфункции подать Какой то текст
Михаил Непряхин: А на выходе получить число
Михаил Непряхин: и в общем-то очень много есть хороших. Функций вот эта Там криптография Там на Этом построенный весь Этот
Михаил Непряхин: при табу Последней сети
Михаил Непряхин: ну хорошо Вы поняли крипта вся эта
Михаил Непряхин: в общем-то Построено на том что Мы этот Лог чейн предыдущий Текст Хашируем Получаем ключ и Используем его в следующем блоке и таким образом гарантируем Что предыдущий бог не был изменен
Михаил Непряхин: вот и
Михаил Непряхин: смысл в том Что
Михаил Непряхин: хорошо надо понимать проешь функцию Что они
Михаил Непряхин: бывают очень много разных ну там популярны это типа там и
Михаил Непряхин: Там Двести пятьдесят шесть Или Там какая нибудь
Михаил Непряхин: из последних которая быстро но
Михаил Непряхин: небезопасная
Михаил Непряхин: блин забыл ну греч вы поняли в хрусте много
Михаил Непряхин: и и
Михаил Непряхин: еще важно понимать прохож функции, что
Михаил Непряхин: вот во всех языках для того чтобы оно быстро. Работало опять, же на уровне процесса прям на уровне ядра процессора есть регистры которые за один, такт
Михаил Непряхин: а могут вам вот этот текст превратить в хэш в число то есть это прямо вот на уровне регистров одна операция что тоже круто
Михаил Непряхин: а м что это за операция кстати
Михаил Непряхин: и Это
Михаил Непряхин: ай эмди
Михаил Непряхин: Операция
Михаил Непряхин: Ну так уж для общего развития он короче как Это переводится типа сингл.
Михаил Непряхин: Эллин Строкшан Ну типа одна, инструкция и мультиполу
Михаил Непряхин: А и
Михаил Непряхин: ади
Михаил Непряхин: Где- Я Не знаю как
Михаил Непряхин: Э семь ди
Михаил Непряхин: Мультик полан Дедарита Да сингл эстракшн Мультиплика короче говоря и
Михаил Непряхин: за один такт Мы делаем много Операций логично что хэш взятие хорошая довольно таки ну? Трудная инструкция да как бы но вот в в процессорных процессорах эта инструкция есть
Михаил Непряхин: а мы Сейчас еще нам понадобится это семь Девочек немножечко подробно разберем значит как она работает Ну смотрите задумали задумали Задву
Михаил Непряхин: Мы гаали Разговаривать
Михаил Непряхин: задумывались, ли вы о Том Что вот например У нас Раньше, было тридцать два Разряда архитектура Потом она стала шестидесяти Четырехразрядная и вот там у них свой сумасшедший текущий налог шестидесяти Четырехразрядная Дам то Есть это используется ну шестьдесят четыре разряда это восемь,
Михаил Непряхин: восемь байт,
Михаил Непряхин: вот и ну вот у нас инт вот этот наш инт вот он шестьдесят четыре, бита и есть ну и его указатель Наш, Вот он Тоже, шестьдесят четыре Обита есть Или восемь байд отсюда восемь бойцамирыцев А чего они пошли дальше почему Не пошли дальше почему не сто Двадцать восемь, почему не двести пятьдесят шесть почему не пятьсот
Михаил Непряхин: на двенадцать этих регионов
Михаил Непряхин: потому что оказалось что ну не надо потому что ну чаще всего мы отработаем шестьдесят четырьмя битами и нам, хватает нам, удобно нас устраивает
Михаил Непряхин: но в общем-то ребята из винтау Рэмдэ пошли, помы зинтом в Это винтере придумали пошли, дальше и подумали что все Таки, неплохо было бы на Камне процессора Иметь, такие инструкции
Михаил Непряхин: и вот вот эти вот инструкции Которые работают вот с этими,
Михаил Непряхин: то есть машинное слово в икс восемьдесят шесть оно вот шестьдесят четыре, Обита Или восемь байд но На камне есть и Ста Двадцати восьми и двухста пятидесяти шести и Пятьсот двенадцатиразрядные регистры
Михаил Непряхин: то есть
Михаил Непряхин: что это значит это значит что Вот мы за Один такт
Михаил Непряхин: обрабатываем шестьдесят четыре Бита и за Один Так мы Можем вам работать и сто Двадцать восемь и даже Пятьсот двенадцать
Михаил Непряхин: То Есть Прям Реально Там могут быть память Область на Камне процессора У которой Вот редисы Которые работают Вот с этим Количеством битов
Михаил Непряхин: и вот собственно говоря благодаря тому что такие регистры есть Мы можем вот на камне за один такт получить Хэш из какого-то текста
Михаил Непряхин: вот вот эти операции называются эса
Михаил Непряхин: эмди или то же самое есть и
Михаил Непряхин: авикс и авиикс два то есть просто авикс это сто двадцать восемь выезд два это двести пятьдесят Шесть и есть Вы икс пятьсот двенадцать дальше уже не стали париться, просто начали. Звать по разрядам это Вот Это Вот
Михаил Непряхин: значит Ммм очень как бы Это Популярно когда Мы Работаем с нейросетями Или с какими-то эффективными базами данных То Есть Вот здесь Мы работаем уже с векторами
Михаил Непряхин: в гошке у нас нет доступа из языка к этим регистрам то есть у нас Только если вы знаете Осэмблер вы Там может Чего нибудь написать Но и То скорее если У вас не получится потому Что Это очень сложно вот Но в языке естественно где можно они используются
Михаил Непряхин: и Мы Хотим, какой-нибудь Ключ хашировать и посмотрим У процесса есть и
Михаил Непряхин: Три Такта четыре. Такта процесса используют летушу ту же самую получить,
Михаил Непряхин: но это первая оптимизация, которая промоучена которая и
Михаил Непряхин: вот значит получили Мы этот Наш хэш результатом работы хш является число
Михаил Непряхин: а дальше допустим у нас есть десять ключей мапе
Михаил Непряхин: и мы Хотим, завести массив
Михаил Непряхин: из десяти этих ключей
Михаил Непряхин: и вот когда мы получаем Какой нибудь ключ
Михаил Непряхин: допустим ключ сорок два
Михаил Непряхин: ну я не знаю давайте те кто возьмем ключ
Михаил Непряхин: ключ хэллоу
Михаил Непряхин: получили ключ прогнали через эту функцию
Михаил Непряхин: получили число
Михаил Непряхин: какое То число ну там оно в Шестнадцатилечной системе там с Этими Семьей и и Вот как нам.
Михаил Непряхин: А в нужно я чайку массива нашего попасть то есть мы хотим, адресовываться по этому Населению мы берем Остаток отделения то есть там делим по модулю
Михаил Непряхин: на десять вот у нас здесь ключей вот Мы на десять и делим берем остаток отделения на десять и получаем одну,
Михаил Непряхин: из ячеек допустим Два
Михаил Непряхин: или допустим восемь
Михаил Непряхин: и значит оказываемся вот здесь вот и значит наш, ключ мы помещаем сюда мы сюда помещаем хло и ну это наш, ключ а значение бот ворлд
Михаил Непряхин: алло сюда помещаем
Михаил Непряхин: тут же значение помещаем ну там такая
Михаил Непряхин: значение ворлд
Михаил Непряхин: э когда к нам, Придут читать то есть вот это Мы записали да когда к нам придут читать
Михаил Непряхин: типа Говорят кошмары отдай мне что у тебя Там есть у тебя ключ хэллоу или Нет Мы тоже, берем этот хэллоуин прогоняем черезш Функцию получаем Число
Михаил Непряхин: берем остаток отделения на Десять получаем Число какое то же самое восемь идем По этому массиву Смотрим есть У нас Массиве чего-то По восемь есть Смотрим что там хэллоу проверяем хэллоуин хэллоуин
Михаил Непряхин: достаем значение и Отдаем
Михаил Непряхин: То есть Это так работает
Михаил Непряхин: хшмапа
Михаил Непряхин: Вот Новый Год так и работает
Михаил Непряхин: ну Работал. Раньше. Сейчас По-другому
Михаил Непряхин: А почему всего лишь десять ключей
Михаил Непряхин: а потому что. У нас здесь вот могут ну у нас же коллизии происходят да то Есть у нас много что. Разных ключей мы можем Ведь в разное место попадать
Михаил Непряхин: вот но реально когда вы просто там создаете не знаю на сто ключей хэшмапу вы примерно вот такую и получаете небольшой Массивчик
Михаил Непряхин: а небольшой Массивчик с указателями на связанные списки
Михаил Непряхин: то есть здесь может быть до восьми элементов
Михаил Непряхин: хранится
Михаил Непряхин: и грубо говоря мы толкаем в кошмапу эти значения и вот они тут просто помещаются
Михаил Непряхин: аа, и таким Образом разруливаются коллизию если Место, кончается заводится еще один вот и помещается уже сюда
Михаил Непряхин: вот если Мы хотим, удалить ну так же точно идем смотрим есть удаляем удалили
Михаил Непряхин: и еще один кейс если Мы превысили число, вот этих вот ну во-первых число, Загрузку вот этих вот бакетов это называется, хшмапа на бакетах вот эта штука называется, бакет
Михаил Непряхин: и короче говоря если загрузка бакетов больше шести с половиной в Среднем на бакет
Михаил Непряхин: то происходит удвоение вот этого массива
Михаил Непряхин: и все данные которые здесь Были постепенно переезжают в Новый Э в новую хашмапу То есть Реально У нас происходит вот Мы Перевыделяем память два раза
Михаил Непряхин: и У нас и старый Остается массив с Бакетами и Новый с Новыми. Пакетами
Михаил Непряхин: и при Каждом удалении или в Ставке Мы Постепенно из Старого Переносим в новый а и
Михаил Непряхин: хотя бы чтобы поняли как оно очень примерно работает то есть как бы если вы чуть не понимаете тогда Еще нормально вам не партий То есть как бы Даю просто, минимально Чтобы хоть, чуть-чуть Быть в Контексте
Михаил Непряхин: Так Это массив
Михаил Непряхин: а в основе Или другая структура в основе массив
Михаил Непряхин: значит как можно думать. О мапе Так Чтобы вот прямо Более менее
Михаил Непряхин: вкусить опять Же Грозят да Дата сайнс Да как бы тут прямо Лучше мы Человечество Над Этим Работают Поэтому То Что Вы тут ходу Не понимаете как бы это нормально
Михаил Непряхин: а в чем идея значит вот у Нас есть бесконечно длинный слайс Бесконечный длинный слайс
Михаил Непряхин: А слайс Же всем хорош правда слась очень хорош у Него Можно быстро, аа в конец добавить
Михаил Непряхин: круто
Михаил Непряхин: а если, бы заранее память завоцировали вот у вас тут копайте это лен вы вообще быстро, Тут Раз, расставлять круто вообще круто Реально круто но когда вы хотите. Найти что. То в слайся
Михаил Непряхин: вам же. Придется вас Опираться у атэн вам придется весь, этот слайс просмотреть чтобы найти, и сравнить типа это То что вам надо Нет это То что надо Нет дальше дальше медленно
Михаил Непряхин: идея в чем Давайте оставим слайс Но сласть нам Нравится нули массив да когда их асфальт под капотом массив значит Давайте оставим этот массив
Михаил Непряхин: но придумаем как. Же угадывать вот чтобы вот не с самого Начала его проходить ну, потому. Что у нас вот блины на миллион на миллион элементов вот этот вот массив ну не хотим, ну медленно будет каждый Раз, если, мы будем, искать
Михаил Непряхин: давайте как нибудь придумаем так чтобы сразу прыгнуть в нужное место,
Михаил Непряхин: и вот немножечко вот здесь поискать
Михаил Непряхин: Согласитесь будет сильно быстрее чем по всему искать вот мы всего лишь такого. Здесь ищем
Михаил Непряхин: и вот как Раз, хэш-функция
Михаил Непряхин: она позволяет Нам вот Прыгнуть в нужное место, и там немножечко поинтересоваться то есть у нас итерация все равно есть присылаешь у нас вот этот изначальный базовый он небольшой мы прыгаем в нужное место,
Михаил Непряхин: а вот здесь у нас уже Массив
Михаил Непряхин: и Мы Здесь Просто сравниваем это То что нам надо Нет это То что нам надо нет это То что нам надо да А То Что нам надо Берем Вот этот Ключ Или когда Мы Вставляем чего-нибудь
Михаил Непряхин: А есть пустое место, Не, занято есть пустое место, нет занято есть пустое место, не заняты есть пустое место, да вставляем сюда сюда ключ сюда замечания вот То есть Как бы идея хэшмапы это как бы как бы нам вот переиспутыв же бы вот Мы все Таки работали со слайсом
Михаил Непряхин: но вот минимизировать вот это вот Чтение, Там
Михаил Непряхин: запись чтобы Правильное Место, прыгать,
Михаил Непряхин: вот значит здесь
Михаил Непряхин: какие-то Вопросы есть глобальные Или более-менее Понятно
Михаил Непряхин: да свой Асфальт Э Грубо это слайс слайсов
Михаил Непряхин: но и
Михаил Непряхин: с Помощью магии Хэш функции. Прыгнуть прыгнуть изначально в правильный слайс
Михаил Непряхин: и потом искать послать
Михаил Непряхин: Поэтому как бы в общем сложность Э как бы смотрите перебор чтения из массива это оу аен да то есть вот сколько элементов в массиве столько мы будем читать если, тут миллион У Год сложный Год миллионда
Михаил Непряхин: а У хэшмапы Это Константа
Михаил Непряхин: и вот в чем как бы силах и шмапы что в Среднем У нас константный доступ Константная запись к инстанции удаление то Есть как бы в Этом преимущество минус в том что это все Таки Монстровная структура по сравнению с вайсом
Михаил Непряхин: Не очень понял зачем переиметь значение
Михаил Непряхин: А как Же если Так вкратце
Михаил Непряхин: Там есть оптимизация вот когда Мы Прыгаем в нужное Место, нашего салайса условного
Михаил Непряхин: Мы и
Михаил Непряхин: все равно должны
Михаил Непряхин: скажи в чем суть когда вы получаете хэш
Михаил Непряхин: и сравнивайте похшу значение
Михаил Непряхин: могут Быть важны положительные результаты то есть вы можете сравнить похшу и понять что да есть значение есть а потом
Михаил Непряхин: вы все равно вынуждены сравнивать ключ как есть вот если у вас вот Был хэллоуин вы все равно вынуждены строго сравнить вот ключ, который в хэшмапе он хэллоу или не хэллоу потому Что
Михаил Непряхин: хэш
Михаил Непряхин: может быть с коллизией ну как бы в хшмын-идеальных не бывает уволи Функций из коллизии. Поэтому вы не можете закладываться на Сравнение только хэша вы обязаны, сравнить вот значение в лоб как Есть и это во всех кошмах Так то есть тут, Маги никакой Нет
Михаил Непряхин: Эммм
Михаил Непряхин: Это Понятно
Михаил Непряхин: так а Это Отражается конкретно в Голову. И на руках Есть несколько плюс минус У всех то же самое
Михаил Непряхин: а Возможно упустил Я вообще похоже много чего пустил ну короче это хрешма сложная Тема чисто вожу Примерно в контекст Бо Там просто
Михаил Непряхин: три лекции на Ютубе посмотрите все равно Ничего Не поймете но какой-то контекст останется Нет смысла упарываться разбираться как оно прямо до конца работает просто вот важно понять Что есть. Хорошая функция с помощью которой прыгаем в правильное Место, а потом иерируемся один фиг по маленькому свойству. Внутри
Михаил Непряхин: а то Есть, мы не доверяем результату Хорошо когда получаем минт но он даже не Могу
Михаил Непряхин: и мы вообще когда сравниваем похшу мы просто примерное Место, Находим а потом Хоть как и
Михаил Непряхин: и короче эта мама вот которую я уже показал на бакетор она там вообще Год реализации типа чего-то тысяч там
Михаил Непряхин: девятьсот
Михаил Непряхин: пятьдесят седьмой чего типа того ключу с очень старая тема но простая ну? Как простая относительно. Простая как ведь все равно не очень простая но
Михаил Непряхин: если вы до этого кошма пределы не имели Все равно уже офигели от того чего тут как бы, наворотили и это я вам Еще без всех оптимизаций рассказываю просто про верхнего уровня и
Михаил Непряхин: ну и после этого вы можете лекции Там начать смотреть на Ютубе и чего-то тоже более-менее поймете опять Же если, хотите, в Принципе можете даже так все оставить на собеседовании чего-нибудь скажете
Михаил Непряхин: неглупая уже хорошо так получается мама это свазис сальсов условно да а первый слайс попадаем за счет остатка отделения их ключа верно да
Михаил Непряхин: верно если это поняли уже победа а уже уже хорошо
Михаил Непряхин: так а ну у меня и в этом и была цель, но вот эта цель, была об этом рассказать
Михаил Непряхин: а это и другие закрытые ассоциации с его стороны да да конечно конечно да как бы Их два принципиальных
Михаил Непряхин: вот первый рассказал и это Так было до версии один двадцать четыре
Михаил Непряхин: а Наука идет вперед значит и есть оптимизация Даже этого считая как Можно еще
Михаил Непряхин: побыстрее с этим работать
Михаил Непряхин: но посложнее петя тут как бы оптимизация как бы скорость Всегда, путем усложнения достигается
Михаил Непряхин: Поэтому тут Всегда, баланс нужен вот Поэтому вгу выбрали такую простую реализацию на бакетах То Есть вот эта реализация называется на бакетах вот Это вот бакет
Михаил Непряхин: вот она этот обычный слайс массив
Михаил Непряхин: который указывает антимагнит.
Михаил Непряхин: Короче сальс с Лайф с малисов с
Михаил Непряхин: с помощью хайфункции прыгал в правильное Место,
Михаил Непряхин: и Это называется
Михаил Непряхин: открытая закрытая Ансация
Михаил Непряхин: Есть другой подход второй собственно их два то есть второй подход называется открытая антресация что это такое
Михаил Непряхин: значит есть у нас
Михаил Непряхин: опять, массив а как иначе
Михаил Непряхин: и и
Михаил Непряхин: и ну естественно Сначала Тоже. Самое У нас есть Хорошая функция мы в нее пропускаем наш ключ
Михаил Непряхин: получаем Какой то
Михаил Непряхин: ну
Михаил Непряхин: пол путем число
Михаил Непряхин: а Делим по модулю получаем остаток отделения
Михаил Непряхин: и Делим на Количество Я Человек в массиве ну например, изначально У нас Там не знаю и
Михаил Непряхин: сорок два прыгаем. В сорок два
Михаил Непряхин: Куда сюда здесь на сорок два
Михаил Непряхин: хотим, вставить хотим, вставить проверяем есть ли там что то
Михаил Непряхин: По индексу сорок Два в этом нашем связи
Михаил Непряхин: Допустим Там Ничего Нет ну вставили
Михаил Непряхин: поставили
Михаил Непряхин: здесь внутри такая же тема
Михаил Непряхин: Окей
Михаил Непряхин: а Вэлью
Михаил Непряхин: ставили наш, ключ встали на шею
Михаил Непряхин: зачем Мы вставили ключ как, есть Вот этот ключ который пришел ставили как, есть
Михаил Непряхин: потому. Что прохожу Мы не Можем сравнить Потому Что могут быть коллизии. Поэтому Мы Всегда, Храним ключ как есть
Михаил Непряхин: чтобы потом сравнить Наш исходный ключ он вообще Совпадает с этим это, точно то что. Мы ищем
Михаил Непряхин: вот
Михаил Непряхин: а сажом
Михаил Непряхин: ну а
Михаил Непряхин: дальше Мы опять, хотим, вставить другой ключ
Михаил Непряхин: и черт побери Этот ключ вызывает коллизию и результат функции. Х функций снова сорок Два
Михаил Непряхин: мы снова Идем по этому. Адресу Смотрим а здесь уже занят
Михаил Непряхин: а хорошо. Значит Мы прыгаем и
Михаил Непряхин: как бы что Делать вот в прошлом случае Мы просто тут, добавляли коллизию да и все
Михаил Непряхин: а здесь Нет здесь не Так значит здесь Мы говорим хорошо
Михаил Непряхин: прибавим единицу вот к этому значению Раз, тут, Занята прямая единицу вот индек сорок три вставим сюда
Михаил Непряхин: а ну и все вставили всекий
Михаил Непряхин: как. Читать хотим, прочитать значит говорим, вот вот Этот Ключ Мы хотим, прочитать Которые То. Что ставили
Михаил Непряхин: а читаем получаем результат сорок Два
Михаил Непряхин: прыгаем сюда
Михаил Непряхин: занята
Михаил Непряхин: хорошо смотрим этот Ключ тот который нам Нужен Нет Не, тот это Другой, Ключ хорошо значит прыгаем где вам плюс, один
Михаил Непряхин: смотрим этот ключ тот который нам, Нужен да тот все отлично Мы нашли,
Михаил Непряхин: а что если тут все занято тут Не знаю Там до пятидесяти пяти, Все занято Ну Вот Мы Так и будем прыгать. Плюс Один плюс Один плюс Один, плюс Один и занято занято занято занято а вот здесь свободно вставили
Михаил Непряхин: потом Хотим? Прочитать
Михаил Непряхин: то же читаем то Не, то то Не, то то Не, то То То То То То То То То То То То не То достали
Михаил Непряхин: вот Это метод открытой анализации вот он так, работает плюс в том что у нас Вот этот изначальный. Массив он более длинный
Михаил Непряхин: и плюс в том что мы тут он Все-таки побыстрее работает
Михаил Непряхин: и вопрос почему же, он работает быстрее
Михаил Непряхин: потому что у нас
Михаил Непряхин: аа
Михаил Непряхин: здесь
Михаил Непряхин: в гошке реализация один фиг Пакеты
Михаил Непряхин: не могу не можем этот выйти
Михаил Непряхин: и их тут восемь только штук может быть
Михаил Непряхин: ну как в восемь и все
Михаил Непряхин: Если в предыдущем случае, вот здесь вот У нас когда мы здесь запомнились давайте, здесь же будем, показать как было Раньше,
Михаил Непряхин: за пол вот мы прыгаем сюда добавляем сюда еще раз какая-то кризиса произошла Добавляем сюда коллизия произошла Добавляем сюда сюда коллизия произошла уже все занято не беда
Михаил Непряхин: Добавляем Еще один такой же бакет
Михаил Непряхин: тоже на восемь элементов
Михаил Непряхин: ну и все и вот каждый Раз, когда у нас кризис происходит мы тут бог растем простым растем и разум растет добавляем эти Пакеты Вот значит Это Раньше, Так было тут, подумали Блин все Таки короче Так Не Нравится Только Вот один вакет здесь Хотим, но все равно бакин хотим, чтобы здесь было максимум восемь элементов
Михаил Непряхин: и и
Михаил Непряхин: эээ Если уж они заняты ну ладно делам плюс один нарусо вам плюс один и попадаем отсюда
Михаил Непряхин: и способов на самом деле как именно, в гошке сделано там Вот эта линейная называется пробация и
Михаил Непряхин: там эта функция пробаций ну пробо типа проверка Есть что-то или нет Есть квадратичные еще какие-то разные какой конкретный здесь алгоритм в какое место. Прыгать он и
Михаил Непряхин: видите как бы он кучкует все ключи в одном месте и
Михаил Непряхин: и и
Михаил Непряхин: где оптимизация
Михаил Непряхин: а оптимизация здесь в том что Вот у нас Вот здесь восемь элементов Возможно
Михаил Непряхин: и вот произошла ситуация,
Михаил Непряхин: а Мы
Михаил Непряхин: Аа читаем мечтаем получаем сорок Два,
Михаил Непряхин: Идем сюда сорок вторую, Чайку,
Михаил Непряхин: и нам теперь. Мы попали в нужное место, нам нужно вот Это вот сравнить на наш, ключ вот наш, наш, наш, ключ и Еще здесь восемь ключей все заполнены
Михаил Непряхин: чтобы понять где у нас нашей, вэлью которая нам надо Мы должны восемь операций сравнения с ключом сделать
Михаил Непряхин: ну типа восемь Такктов процесса рада. Условно а может Быть и шестнадцать
Михаил Непряхин: короче долго
Михаил Непряхин: и здесь к нам. Приходят на помощь
Михаил Непряхин: семь ди инструкции, с амди
Михаил Непряхин: и короче говоря У нас Здесь есть Заголовочный шестидесяти четырехбитный
Михаил Непряхин: а
Михаил Непряхин: Кусочек памяти
Михаил Непряхин: и короче говоря Мы с Помощью Него Помазки опять Же как бы там Посмотрите Веду. Себя я Сейчас Не буду рассказывать и Так тут наверное мозг Вынес
Михаил Непряхин: короче смысл в том Что Мы с помощью семь ди и операций, можем за один такт проверить и восемь ключей
Михаил Непряхин: и за счет этого получить ускорение,
Михаил Непряхин: в прошлой мапе до версии один двадцать четыре невозможно было использовать осаем Две операции потому, что Там ну вот так было Построено
Михаил Непряхин: а здесь можно
Михаил Непряхин: и по Сути его за счет этого Мы получили Ускорение, в новой Мапе
Михаил Непряхин: аа и еще тысяча, Оптимизаций Которые здесь есть значит вот это я рассказал только минимум для того чтобы вы смогли дальше изучить если хотите, чтобы Примерно понимали о чем речь в чем Примерно о Разнице
Михаил Непряхин: чтобы вы хотя Бы когда услышали разговор про кошмары про ассанж поняли о чем, речь чтобы вы поняли в чем, Разница между открытой адресацией и закрытой адресацией
Михаил Непряхин: вот там на бакетах этот массив он меньше и Там Мы Не прыгаем вот так вот Мы просто в конец добавляем А при открытой организации Мы прыгаем По какому-то алгоритму линейный плюс один или квадратичный в разные места вот он в этом суть
Михаил Непряхин: и еще новая мама она меньше памяти занимает потому что там на самом деле и
Михаил Непряхин: а на самом деле вот, этот массив
Михаил Непряхин: о максимум может быть тысяча двадцать четыре элемента
Михаил Непряхин: и изначально вот, когда Мы У нас Маленькая. Мама вот он вот такой вот ну он растет до тысячи двадцать четыре
Михаил Непряхин: а потом появляется еще один такой массив
Михаил Непряхин: вот они там вели Новую терминологию что это там это
Михаил Непряхин: сегмент группа
Михаил Непряхин: там и
Михаил Непряхин: и мы определили в какой кусок идти а потом в Этом определенном куске и
Михаил Непряхин: вот Ммм
Михаил Непряхин: короче
Михаил Непряхин: да вот Все Что важно эээ Компактно Рассказал Понимая капец сложно если От Этого кошма Мы Не сталкивались. Ни фига Не поняли Это нормально все равно что-то поняли вот значит будут
Михаил Непряхин: про внутреннее устройство Хрешма Мы больше говорить Не будем дальше потому что Это ну? Не особо неважно вот Но Ссылочки будут
Михаил Непряхин: и желательно даже если будете смотреть ни непонятно все равно посмотреть потому что чего-то останется, и именно вот этого чего-то для себя захватят опять. Же это все важно Знать только для собеседников то есть как, бы, для Жизни как-то работает и Работа То есть
Михаил Непряхин: Не суть важно понимать как он Это внутри устроен
Михаил Непряхин: а Так
Михаил Непряхин: Давайте на вопрос ответ видим
Михаил Непряхин: а получается мама это свой смысл Так как я смотрел,
Михаил Непряхин: Так то есть в Новой Мапе если бакет Заполнен
Михаил Непряхин: это идет, плюс Один
Михаил Непряхин: но
Михаил Непряхин: если, коллизии столько. Что аж на бакет набралось
Михаил Непряхин: то
Михаил Непряхин: как бы что плюс один плюс один а ну да да Давно да все правильно в новой мапе ну, только вот этот не совсем вот следующий да Так это неэффективно это просто для простоты он показал чтобы хоть что То запомнить ну Куда Там, прыгает в произвольное место и Там, смотрят
Михаил Непряхин: вот и потом читает Так же соответственно да но Можно Еще запомнить что такой слон плюс один и если, там вот вот здесь вот прям все заполнено уже все восемь элементов заполнены
Михаил Непряхин: да
Михаил Непряхин: но если, Нет возможности, использовать саймди То Будет работать По-старому Нет Будет все равно работать По-новому но просто
Михаил Непряхин: вот здесь Проверка Будет Не за один такт а за восемь такктов короче будет медленно работать вот и все
Михаил Непряхин: и и
Михаил Непряхин: так, что, как бы новая мама
Михаил Непряхин: в горных кейсах будет медленнее чем старый папа Там много споров на самом деле что вот эту мапу завезли очень. Похабно в гол. И ее Плохо реализовали ее Плохо Задизанили она остырена из базы данных по Кроуч
Михаил Непряхин: и в кукурузе она даже лучше за дизайнером чем, в гошке но вообще гошка славится тем что стандартную библиотеку пишут какие-то калеки Инвалиды Которые кривору руки они ничего Нормально сделать Не могут
Михаил Непряхин: Но Тем Не менее Это все равно оно работает и Это Все равно лучше Чем на Других языках и
Михаил Непряхин: Стандартная библиотека библиотека в Голову. Она Бездушная мы еще Можем много сталкиваться с Какими То странными вещами и здесь косяк там косяк
Михаил Непряхин: ну. Тем не менее работать со мной, быстрее чем у других и работать с языком проще чем с астом Поэтому не неплохой трядов. Тем не менее
Михаил Непряхин: Так как пхшников погибаю да в пх Же плюс мне Тоже. Самое просто вы Никогда не задумывались, чего там как только потом оно работает ну громко не надо Было
Михаил Непряхин: опять же если бы не собеседник, я бы вам Это не рассказал честное слово потому что ну нафига ну компьютер сайнс Но вот гошники любят вот понтоваться вот этого так как там Чего Блогеры какие нибудь и там новые при хучуне где пишут его заставляют разбираться это называется свистый ибоет называться стейбом верно да
Михаил Непряхин: и Так и.
David R: А Тут Да я Тут в параллельно потыкался у Меня Тут Вопрос возник но Не Стал Отвлекать.
Михаил Непряхин: Ммм.
David R: Вот через, мык если, создавать мапу То.
Михаил Непряхин: А вот.
David R: Цифрка ну число это Что это Кап.
Михаил Непряхин: Эта копася дина.
David R: Тогда почему я Не Могу вот этот Копась идти вывести потом вот это меня смутило что я ленна маку Могу вывести а копасть Эти от мамы я не могу а он говорит что шел к черту говорит.
Михаил Непряхин: Да
Михаил Непряхин: хорошо.
David R: То есть я в мэйке могу указать вот тебе копаасите а потом я не могу спросить а сколько Там у тебя копатией я могу спросить сколько там ленно он и.
Михаил Непряхин: Хорошо интересный вопрос ну капасите, Нет капасти Мы не можем посмотреть Да смотрите в чем прикол
Михаил Непряхин: как бы Тут опять, же приходится про старую, Порновую Маму поговорить да значит в Старой Мапе
Михаил Непряхин: А если Вы указываете. В мейке Сотку
Михаил Непряхин: Сотку
Михаил Непряхин: ну как бы Вы Копаете Задаете он Не зазовете-ка пассию значит и
Михаил Непряхин: вы сможете Загружать вашу Хэшмапу. Дос в среднем до шести с половиной элементов в Бакете
Михаил Непряхин: берутся собаки Ты смотрят а Средний месяц шесть с половиной элементов
Михаил Непряхин: создается Новая ну Два икс
Михаил Непряхин: если перевести. В процентах это Восемьдесят Один Процент
Михаил Непряхин: короче говоря старая Хошмапа может быть загружена только на Восемьдесят Один процент дальше Будет Удвоение
Михаил Непряхин: Поэтому когда Вы спрашиваете ну Вы Можете. Спросить только лен
Михаил Непряхин: потому что к опасности оно ну оно неточное оно вообще вот его точного Нет оно вот под капотом есть типа если на Восемьдесят Один процент заполнено от того что вы указали изначально
Михаил Непряхин: бот провокация Два икс
Михаил Непряхин: и там постепенно они и
Михаил Непряхин: а ну или как это реализация Кошма как везде ее можно самому Сделать если Очень. Захотеть
Михаил Непряхин: вот в Новой если вы говорите значит Я хочу Копаяну вот это вот Изначально число Которое вы указываете в Майке
Михаил Непряхин: то
Михаил Непряхин: здесь уже лод Фактор повыше семь семь на Богат
Михаил Непряхин: Ну и
Михаил Непряхин: вот семь короче и это Че то Восемьдесят семь шесть процентов чуть тип то
Михаил Непряхин: Мир Восемьдесят шесть
Михаил Непряхин: короче говоря
Михаил Непряхин: а к опасности новой Мапы оно повыше то Есть память используется эффективнее и
Михаил Непряхин: и нету постепенной эвакуации вот эта вот старая мапия когда Мы новые мапы создавали в два раза больше Мы и Старые постепенно вы правы медленно постепенно переносили
Михаил Непряхин: в Операциях Ставки
Михаил Непряхин: в Новой Мапи нет просто берем вот у нас есть старая мама создаем новые двоикс все за одну Операцию взяли и все перенесли ну то есть когда-нибудь в какой-нибудь Вставке не повезет и какая-нибудь ставка Будет медленнее чем все остальные но в целом в среднем все равно будет То От единицы То есть как бы все хорошо все про Это нормально
Михаил Непряхин: вот и
Михаил Непряхин: вот Поэтому когда Вы не Можете спросить какое там копастию У мамы Вы олен спросить Можете
Михаил Непряхин: как это ответ. На ваш, Вопрос и тут. Примерно Все так короче вот просто когда У вас возникают Вопросы? Там ответ он правильно копирует, длинный такой что ну скорее всего вы кончитесь быстрее и
Михаил Непряхин: еще из приколов например как бы чтобы совсем вас удивить и
Михаил Непряхин: на самом деле когда вы берете хэш
Михаил Непряхин: от функции, вот вы получили
Михаил Непряхин: хэш
Михаил Непряхин: а ну То Есть Это Там все равно шестьдесят четыре Бита Выхож поручили какой-то Ключ пропустили Через Хж функции получили хаш Вот Он и ничего еще не стали там остаток отделения брать ничего просто получили хэш
Михаил Непряхин: значит там такая оптимизация
Михаил Непряхин: что вот младшие, семь бит
Михаил Непряхин: они используются в адресации и как раз и там в семье инструкциях
Михаил Непряхин: потом есть тут как быть прям делить делят хэш на биты есть аж один участок есть аж два участок аж один он участвует По-моему вот для первого прыжка просто, найти первую ну как бы из мапы мап прыгнуть в То место, где ваш Ключ
Михаил Непряхин: потом аж два
Михаил Непряхин: тоже здесь где-то используют а вот по-моему отож два и берется остаток отделения По количеству, элементов вот Там во Внутренней Мапе и Уже потом Там Внутри вот Поэтому только биту смотрится через Эсамди,
Михаил Непряхин: и Уже тут же Хитрая тема Что
Михаил Непряхин: а ведь, и семьби данный ключ почему семь. Ведь, у нас там как бы восемь должно быть а приков в том что первый бит
Михаил Непряхин: он отвечает, за наличие короче если, типа он наливает значит значения Нет если, он Единичка значит значение Есть
Михаил Непряхин: и вот вот это вот Ну просто вот Там. Вот Куда они тыкаете Там. Оптимизация на оптимизации и типа вот Ну, просто досконально разбираться я Ну, не вижу смысла абсолютно
Михаил Непряхин: То Есть Просто значит главное когда будете дома вот Ну смотреть Эти материалы Просто закрепить значит на какие вопросы? Вы должны отвечать
Михаил Непряхин: Чем старая мама Отвечаю Отличаться От новой
Михаил Непряхин: и Тем что старая
Михаил Непряхин: а открытая Адресация, Новая открытая антрепризация что в старой Нет поддержки Самим Деинструкций ну Если в руках не есть Процессоры а в новой есть
Михаил Непряхин: Что, старая набакетах которые просто растут как
Михаил Непряхин: и списки а Новый и
Михаил Непряхин: а в новой и
Михаил Непряхин: если бы вот степень загрузки больше
Михаил Непряхин: у вас коллизий Будет столько что Вставка и чтение будут занимать неоправданно много Времени
Михаил Непряхин: и Поэтому вот эти лишние и
Михаил Непряхин: так главное погрузившись в это все непасть вдруг улетаю
Михаил Непряхин: да пткнись за Жертву
Михаил Непряхин: ну опять же говорю вот че поняли то поняли что осталось то осталось.
David R: А Можно, мари.
Михаил Непряхин: Его попросить.
David R: Если позвольте может и не маленький Эти Старые новые мапы Они Уже теперь. Прибиты и что в Новых Вещах Всегда идет новая мама Или это как-то осталось Там на выбор что Можно и старую и новые Создавать его.
Михаил Непряхин: Э Пока оставим начинался обычно обычно когда в гоу производят какие-то эксперименты, вот это я считаю что эксперимент на самом деле
Михаил Непряхин: аа по умолчанию остается Старый вариант,
Михаил Непряхин: а чтобы Включить новый вы переменное окружение
Михаил Непряхин: есть тут. Значит у нас
Михаил Непряхин: есть у нас тут. Переменная
Михаил Непряхин: м гол Эксперимент называется.
David R: Повыше Повыше.
Михаил Непряхин: Вот Она наук такой эксперимент короче Ммм, обычно когда чего нибудь экспериментальное вы, хотите, включить
Михаил Непряхин: вот здесь вы, прописываете типа хочу включить вот такую вот экспериментальную фичу
Михаил Непряхин: Но в этот Раз, они зачем то пошли, иначе они прямо, в версии один двадцать четыре включили всем. Вот эту новую Мапу Поэтому очень многие на Версию Один, двадцать четыре просто Не перешли. Остались на версии Один, двадцать три
Михаил Непряхин: и Это довольно Странно и
Михаил Непряхин: память вавоцируется на Пустых структурах хотя и Не Должна ну вы должны пофиксировать наверное версия Один Двадцать пять
Михаил Непряхин: и здесь пошли наоборот сказали Так Мы включаем на всех если Хотите, выключить Эту Новую Мапу есть флаг
Михаил Непряхин: Поэтому да Новую Мапу Можно отключить
Михаил Непряхин: Но как Будто, бы вот уже они целенаправленно нацелились на то чтобы ее сделать из всех из нас бета-тестеров все это протестить и
Михаил Непряхин: быстренько отчитаться о приросте Производительности
Михаил Непряхин: по Большому Счету ее особо Нет Там много есть тестов
Михаил Непряхин: производительность где-то есть но Там если в среднем по больнице плюс-минус То же самое Только с неизученными косяками Багами потому. Что если. Старые Мапы Вдоль поперек полностью Изучены и
Михаил Непряхин: Все очень, Плохо отзываются об реализации. Этой Новой мамы
Михаил Непряхин: ну сыночки скинь посмотрите
Михаил Непряхин: так
Михаил Непряхин: вот значит Понимаю было сложно Понимаю сломал Мозг Но Без этого к сожалению, дальше пойти было нельзя
Михаил Непряхин: вот Поэтому попрошу понять
Михаил Непряхин: а к сожалению, на цебесах Сейчас этим будут задолбывать вот Поэтому
Михаил Непряхин: сымочку дам цирючки нам, посмотрите
Михаил Непряхин: и в целом апи очень простой мап если тут не смотреть как там Под капотом Устроено в целом как бы к мамой пользоваться просто и приятно то есть как бы нет никаких вопросов, нет
Михаил Непряхин: да вот вот правильно планировщик прошлый факт про планировщик объяснять проще потому что там нету столько, вот Этой науки вот Именно компьютер-сайнс
Михаил Непряхин: а Реально по нерушка работают Впрочем спасибо большое еще Раз, Норок так все ладно все Давайте значит пока
Михаил Непряхин: Ка
Михаил Непряхин: царя
Михаил Непряхин: Возможно. Вам Ночью сегодня будут сниться мапы с открытой и закрытой Индексацией
Михаил Непряхин: седать всем. Пока.