WEBVTT

1
00:04:02.830 --> 00:04:06.790
Михаил Непряхин: Так всем привет как видно слышно плюсики поставьте Пожалуйста,

2
00:04:07.540 --> 00:04:08.870
Михаил Непряхин: если сяк

3
00:04:13.490 --> 00:04:15.370
Михаил Непряхин: так хорошо.

4
00:04:16.920 --> 00:04:17.589
Михаил Непряхин: А

5
00:04:19.110 --> 00:04:25.390
Михаил Непряхин: так значит о чем мы сегодня говорим, Сейчас немножко Про замыкание поговорим потом свайся добьем

6
00:04:25.990 --> 00:04:29.140
Михаил Непряхин: и да Про Маму поговорим

7
00:04:29.450 --> 00:04:32.720
Михаил Непряхин: Ну наверное это все что мы сегодня успеем

8
00:04:33.460 --> 00:04:40.120
Михаил Непряхин: так давайте небольшой интерактив про замыкание

9
00:04:41.530 --> 00:04:42.250
Михаил Непряхин: а и

10
00:04:42.610 --> 00:04:47.820
Михаил Непряхин: кто знает Что такое замыкание Давайте поставьте плющев если знаете Что такое замыкание

11
00:04:51.160 --> 00:04:56.130
Михаил Непряхин: так Чем замыкание Отличается От анонимной функции

12
00:04:59.840 --> 00:05:01.380
Михаил Непряхин: если. В трех словах

13
00:05:07.070 --> 00:05:09.590
Михаил Непряхин: напишите Ваш ответ.

14
00:05:10.000 --> 00:05:13.240
Михаил Непряхин: Если. Вы понимаете чем, Отличаются замыкание то наивные функции

15
00:05:16.090 --> 00:05:19.410
Михаил Непряхин: Канал Хранит перемены Из Клуба но захват с перми да

16
00:05:19.920 --> 00:05:20.860
Михаил Непряхин: правильно

17
00:05:22.320 --> 00:05:23.010
Михаил Непряхин: Ммм

18
00:05:26.030 --> 00:05:26.960
Михаил Непряхин: хорошо

19
00:05:27.220 --> 00:05:29.880
Михаил Непряхин: так вот значит мы имеем вот такой код

20
00:05:30.180 --> 00:05:33.420
Михаил Непряхин: вот здесь у нас это такое уже замыкание

21
00:05:33.720 --> 00:05:36.610
Михаил Непряхин: то есть Мы говорим у нас есть как перемены. Ай

22
00:05:36.840 --> 00:05:41.710
Михаил Непряхин: и в другую перемену Кожи присваиваем Функцию

23
00:05:41.900 --> 00:05:43.780
Михаил Непряхин: и Там Внутри получается функция

24
00:05:44.060 --> 00:05:45.630
Михаил Непряхин: и Вызов функция

25
00:05:46.620 --> 00:05:50.770
Михаил Непряхин: ее называют называют и анонимной функцией и замыканием

26
00:05:51.510 --> 00:05:53.080
Михаил Непряхин: и но

27
00:05:53.780 --> 00:06:01.840
Михаил Непряхин: правильнее если, она ничего не захватывает ну просто на нее функция вот а если, она захватывает что-то из коупа аскол, Поэтому здесь У нас выше

28
00:06:02.830 --> 00:06:03.520
Михаил Непряхин: а и

29
00:06:06.900 --> 00:06:10.790
Михаил Непряхин: там вообще никакого Куда не было опять, видимо проблема. С

30
00:06:12.130 --> 00:06:15.580
Михаил Непряхин: петь У нее Пароля проблема со входом

31
00:06:16.580 --> 00:06:18.610
Михаил Непряхин: странно вот никогда Не было Проблем,

32
00:06:26.740 --> 00:06:28.480
Михаил Непряхин: просто посылки

33
00:06:34.770 --> 00:06:38.990
Михаил Непряхин: Так а Там где то, Интересно Есть Кот Или Нет вообще здесь

34
00:06:39.640 --> 00:06:41.140
Михаил Непряхин: хочу послать

35
00:06:42.540 --> 00:06:44.690
Михаил Непряхин: надо было разобраться с этой штукой.

36
00:06:44.880 --> 00:06:47.170
Михаил Непряхин: Же Раньше. Проблемы такой Не было.

37
00:06:49.410 --> 00:06:56.970
Konstantin: Там Можно по-моему через самую суку распорястить кольт номер конференции и ее Пароль дальше параметрмадетов.

38
00:06:59.610 --> 00:07:00.730
Михаил Непряхин: Трэк

39
00:07:05.110 --> 00:07:06.350
Михаил Непряхин: Ты Меня Клянешь

40
00:07:08.130 --> 00:07:10.240
Михаил Непряхин: А ну да он Же Там провал

41
00:07:25.230 --> 00:07:31.160
Михаил Непряхин: Так Эммм короче У нас Есть разные сколково

42
00:07:31.280 --> 00:07:34.710
Михаил Непряхин: Есть клуб глобальный вот если, здесь какая то переменная болот

43
00:07:38.590 --> 00:07:44.510
Михаил Непряхин: вот это тоже скоп мы можем захватить мы можем взять и вот сюда, вот эту переменную проббросить ее там

44
00:07:44.670 --> 00:07:46.610
Михаил Непряхин: Присвоить тебе другое значение

45
00:07:46.800 --> 00:07:52.970
Михаил Непряхин: то есть вот мы можем взять из этого сколково перемену из этого скупо переменную и

46
00:07:53.080 --> 00:07:56.810
Михаил Непряхин: а на захов эти перемены могут захватиться замыканием,

47
00:07:57.310 --> 00:07:58.380
Михаил Непряхин: вопрос

48
00:07:58.620 --> 00:08:00.200
Михаил Непряхин: как они захватываются

49
00:08:00.320 --> 00:08:02.530
Михаил Непряхин: они захватываются по указателю

50
00:08:03.870 --> 00:08:10.730
Михаил Непряхин: то есть это то же самое что если. Бы, Мы вот здесь функции написали Что Мы функция принимает ай

51
00:08:11.040 --> 00:08:16.560
Михаил Непряхин: и эта звездочка энд и функция принимаетстер и это

52
00:08:16.720 --> 00:08:18.840
Михаил Непряхин: звездочка астра,

53
00:08:19.660 --> 00:08:21.680
Михаил Непряхин: и

54
00:08:22.260 --> 00:08:36.669
Михаил Непряхин: здесь нам, надо было бы это все разименовать Вот так Вот с Этим Делом работать здесь Тоже, надо было бы вот так вот по звездочке переразменовать ну а здесь собственно говоря передать указатели,

55
00:08:37.330 --> 00:08:39.190
Михаил Непряхин: вот так вот

56
00:08:39.830 --> 00:08:40.990
Михаил Непряхин: а ну

57
00:08:41.190 --> 00:08:42.929
Михаил Непряхин: нам, предложили сахар

58
00:08:43.070 --> 00:08:45.870
Михаил Непряхин: ну типа вот чтобы это все не писать

59
00:08:46.730 --> 00:08:52.480
Михаил Непряхин: а у нас перемен это Раз, может просто, функция сама из колпа эти перемены захватить

60
00:08:52.670 --> 00:08:53.910
Михаил Непряхин: и

61
00:08:54.450 --> 00:08:56.970
Михаил Непряхин: вот так вот не явно там вот это все Сделать

62
00:08:57.470 --> 00:09:05.960
Михаил Непряхин: то есть типа упрощения синтакси завидия Сколько сахара вы Не видите что это указать по указателям Мы работаем Но реально Мы работаем здесь по указателям

63
00:09:06.260 --> 00:09:13.010
Михаил Непряхин: Раз мы работаем здесь по указателям то мы можем здесь Внутри эти перемены поменять

64
00:09:13.750 --> 00:09:20.370
Михаил Непряхин: и их потом изменение потом увидеть то есть вот мы печатаем например

65
00:09:20.740 --> 00:09:28.590
Михаил Непряхин: счетчик, до вызова Этой функции, то есть вот мы функцию поместили в перми но ее не вызывали просто мы захватили как бы на и все

66
00:09:28.790 --> 00:09:35.940
Михаил Непряхин: и хотим, посмотреть значение перемен вот Этой эстра и ай

67
00:09:36.340 --> 00:09:41.910
Михаил Непряхин: посмотрим ну дурдай должен быть ну час

68
00:09:44.530 --> 00:09:45.410
Михаил Непряхин: так

69
00:09:50.790 --> 00:09:54.760
Михаил Непряхин: не печатаем давайте, сэр какую нибудь Заведем что здесь

70
00:09:55.780 --> 00:10:14.500
Михаил Непряхин: отрицательный знак вот его напечатан искательный знак и ноль то есть как бы Мы там внутри функции, вот Этой вот функции, Захватим этот Скоб Но он здесь еще Не поменялся. Вызываем Эту Функцию и Смотрим изменились ли перемены Которые эта функция захватила

71
00:10:14.670 --> 00:10:24.850
Михаил Непряхин: и да они изменились вот Мы восклицательный знак поменяли на хволл а единицу заинкерменили этот счетчик, если, еще раз вызовем ну тут чучек будет два уже

72
00:10:25.010 --> 00:10:28.170
Михаил Непряхин: вот и теперь вопрос

73
00:10:28.930 --> 00:10:31.930
Михаил Непряхин: что из себя представляет на самом деле

74
00:10:32.190 --> 00:10:36.510
Михаил Непряхин: Замыкание в памяти как Он выглядит в памяти знаете какие соображения

75
00:10:36.730 --> 00:10:41.580
Михаил Непряхин: вы же знаете ли вы как замыкание то есть что Такое замыкание

76
00:10:42.940 --> 00:10:46.890
Михаил Непряхин: какие есть соображения найти можно голосом Если у вас есть какие то соображения,

77
00:10:48.440 --> 00:10:54.290
Михаил Непряхин: допустим засобься вас спросили Окей ну вот вы рассказали как замыкание себя ведет что такое замыкание

78
00:10:56.440 --> 00:10:57.770
Михаил Непряхин: ни у Кого, здесь нет.

79
00:10:58.740 --> 00:11:08.300
Konstantin: Замокание, та функция которая хранит также перемены ископа из Внешнего. Из того скопа в котором эта функция была определена.

80
00:11:08.600 --> 00:11:16.350
Михаил Непряхин: Это. Абстракция то Есть Это определение абстракции но вот в памяти как представлена Анонимная функция Или Замыкания

81
00:11:18.090 --> 00:11:19.730
Михаил Непряхин: в памяти как она будет.

82
00:11:19.730 --> 00:11:20.610
Konstantin: Наверное

83
00:11:20.950 --> 00:11:22.780
Konstantin: Каштан указатель.

84
00:11:24.250 --> 00:11:29.400
Михаил Непряхин: Ээ ну окей указатель да правда на Что Указывать эту касательно знаете так.

85
00:11:31.930 --> 00:11:36.680
Konstantin: Ну наверное на реализацию функции. В куче.

86
00:11:36.680 --> 00:11:42.830
Михаил Непряхин: И как реализация Этой функции. В куче как она выглядит куча.

87
00:11:43.390 --> 00:11:44.790
Konstantin: Тут

88
00:11:45.080 --> 00:11:46.410
Konstantin: сложная задача.

89
00:11:47.290 --> 00:11:54.780
Михаил Непряхин: Ну смотрите когда задают подобные Вопросы, как бы, чего угодно любые абстракции на низком Уровне это обычная структура

90
00:11:55.310 --> 00:11:57.510
Михаил Непряхин: Поэтому функция тоже структура

91
00:11:59.650 --> 00:12:04.980
Михаил Непряхин: Раньше, смотрите как выглядит аа замыкание к памяти

92
00:12:06.590 --> 00:12:08.420
Михаил Непряхин: а это структура

93
00:12:08.670 --> 00:12:10.380
Михаил Непряхин: ну Назовем Неукложаем

94
00:12:10.840 --> 00:12:21.060
Михаил Непряхин: это структура У которой ну мы же как-то захватываем переменная правда мы их захатом по указателю ну вот значит все что мы Захватили будут полями Этой структуры

95
00:12:21.730 --> 00:12:28.270
Михаил Непряхин: но ее надо еще как то вызвать как она вызывается, ну по методу то есть в Этой структуре есть метод

96
00:12:28.590 --> 00:12:30.450
Михаил Непряхин: и вот

97
00:12:30.710 --> 00:12:50.040
Михаил Непряхин: то что мы здесь внутри определили функции вот оно Здесь в Методе поместится ну Просто понятно, что она будет работать с этими указателями и Поэтому тут немножко страшный синтез потому что Не просто инклимент а нам надо сперва Разименовать достучаться До Этой перемены. Потом ее заинклементить и перезаписать

98
00:12:50.210 --> 00:12:58.950
Михаил Непряхин: вот и Мы собственно То же самое можем сделать от нас объявляем какую-то переменную ай говорим что кло уже вот объявляем нашу структуру

99
00:12:59.190 --> 00:13:02.460
Михаил Непряхин: и помещаем указательно ай

100
00:13:02.590 --> 00:13:04.370
Михаил Непряхин: полем Этой структуры

101
00:13:04.670 --> 00:13:20.260
Михаил Непряхин: а дальше Мы просто вызываем эту Функцию которая там есть ну ее можно как угодно, называть и

102
00:13:20.260 --> 00:13:29.080
Михаил Непряхин: до вызова замыкания оно ноль два раза вызвали два раза инкриминители. Три раза вызвали три раза за инклементи то Есть,

103
00:13:30.460 --> 00:13:50.420
Михаил Непряхин: вот эта Анонимная функция оно уже замыкание ну если тут Нет полей это будет просто Анонимная функция то Есть что-то Там какая-то логика Есть если, Мы захватываем какие-то и

104
00:13:51.500 --> 00:13:57.270
Михаил Непряхин: на Самом деле Ну, как бы Идея очень простая чертовски простая

105
00:13:57.810 --> 00:14:11.580
Михаил Непряхин: а еще в коде Мы имеем то есть когда Мы работаем с Функцией когда Мы вот ее вот здесь вот поместили ее внутрь вот мы наводим Тут и ей подсказывают что клоун это Функция

106
00:14:12.180 --> 00:14:26.970
Михаил Непряхин: это на самом деле указательно функцию еще дополнительно то есть на самом деле ну это должно быть ну вот как-то так то есть здесь еще звездочка вот такая есть невидимая которую убрали потому что ну По-другому Мы Не Работаем с замыканием, Или указателем здесь да Звездочка

107
00:14:27.070 --> 00:14:32.970
Михаил Непряхин: вот Поэтому Грубо, говоря Мы Вместо того чтобы

108
00:14:35.690 --> 00:14:43.560
Михаил Непряхин: Вместо того чтобы вот писать вот так вот когда мы Хотим? Поработать с какими то такими вещами Ну и просто для удобства

109
00:14:43.570 --> 00:14:59.690
Михаил Непряхин: и Как видите очень короткий супер-короткий синтаксис то есть Мы просто берем говорим захватывая все что из колпа а оно там само возьмется по указателю само когда Мы здесь вызовем вызовет свой и

110
00:14:59.690 --> 00:15:06.820
Михаил Непряхин: как простая абстракция у многих. Возникают проблемы потому что ну надо же как-то об этом думать а как об этом думать

111
00:15:06.820 --> 00:15:21.490
Михаил Непряхин: когда вы об этом думаете, вот так вот и

112
00:15:21.640 --> 00:15:33.710
Михаил Непряхин: вот и ну еще какая мораль да надо понимать что раз что-то вы взяли из Колпа если. Вы там Внутри замыкания это что-то поменяете то Изменение Будет видно

113
00:15:33.950 --> 00:15:35.300
Михаил Непряхин: извне сколково

114
00:15:35.500 --> 00:15:38.600
Михаил Непряхин: и поэтому как бы ну. Просто нужно об этом знать

115
00:15:38.710 --> 00:15:50.070
Михаил Непряхин: как часто используется замыкание ну. Да редко то есть это как бы ну такая штука обычно с бурутинами, как-то используется обычно это вот чаще всего это просто, Анонимная функция как-то как-то так

116
00:15:50.130 --> 00:15:57.810
Михаил Непряхин: а которая ну да она еще и замыкание потому, что чего-нибудь из скол, поберет какую-нибудь военную. Группу вот это обычно так используется вот

117
00:15:57.850 --> 00:16:14.390
Михаил Непряхин: на этом Можно конечно Построить тут целую как бы логику и Можно уже в функциональном стиле работать а еще есть такое мнение что типа вот кто умеет работать с этими замыканиями типа вот уже синьор, По факту это ну как, бы усложнение

118
00:16:14.390 --> 00:16:29.330
Михаил Непряхин: и этот функционал настоял грейсмер добавить просто для того Чтобы ну как бы Поддержать вот это во все языки начали. Добавлять а именно, функции, замыкания Поэтому Просто в Гушке тоже ничего не стоило это добавить но и добавили

119
00:16:29.450 --> 00:16:38.900
Михаил Непряхин: вот то есть лучше применять только Там где вы понимаете Что ну Вот По-другому получается Плохо Вот Но Не лепить Везде подряд

120
00:16:40.420 --> 00:16:45.280
Михаил Непряхин: Так Вопросы, По замыканию, еще остались Значит теперь Все понятно, Что Такое замыкание и как оно работает

121
00:16:46.080 --> 00:16:58.390
Михаил Непряхин: Так фанкшн пойнтер от обычного. Планета Ничем Не отвечает. Да Нет ну просто указатель просто Обычный указатель который указывает на область памяти

122
00:16:58.520 --> 00:17:01.380
Михаил Непряхин: где находится вот эта структура

123
00:17:02.310 --> 00:17:07.640
Михаил Непряхин: и к ней ну вот как, бы с ней ассоциирован еще вот этот метод

124
00:17:08.250 --> 00:17:17.950
Михаил Непряхин: вот которая опять же не забывайте что на самом деле это обычная функция просто у нее вот вот этот вот север он вынесен вперед, так по Большому счету обычная функция

125
00:17:19.079 --> 00:17:21.599
Михаил Непряхин: Письмо и методы это по Сути обычные функции

126
00:17:21.990 --> 00:17:27.859
Михаил Непряхин: плюс-минус мгко получается все указатель ну Не все но вот функция Это указатель

127
00:17:28.349 --> 00:17:47.110
Михаил Непряхин: Анонимная функция Никогда Не задумывалась о Том, как хранится накане вот то Есть вот в этом беда что об этом нифига никто толком не рассказывает я не знаю почему и когда люди начинают работать с Ценностями Функциями Замыканиями вообще как бы непонятно как-то в голове представлять что это и где-то

128
00:17:47.220 --> 00:17:49.530
Михаил Непряхин: вот на самом деле очень простая абстракция

129
00:17:50.710 --> 00:17:52.250
Михаил Непряхин: так

130
00:17:54.790 --> 00:17:55.960
Михаил Непряхин: дальше

131
00:17:56.890 --> 00:18:00.000
Михаил Непряхин: значит в прошлый Раз мы говорили про слайсы

132
00:18:00.520 --> 00:18:16.830
Михаил Непряхин: говорили медленно ожевывали потому, что чертовски важно если, вы чего-то где-то недопоняли то сразу с лайсами прям вот разбирайтесь до конца пока вот прямо, играетесь пробуйте смотрите как они себя ведут пока более-менее Не поймете что это такое

133
00:18:18.220 --> 00:18:20.530
Михаил Непряхин: значит Мы Не поговорили про апент

134
00:18:20.790 --> 00:18:27.670
Михаил Непряхин: мммм значит У аппендам ну. Вообще зачем нужен пент вот у нас есть слайс юзеров

135
00:18:29.300 --> 00:18:44.510
Михаил Непряхин: если Мы его так вот добавляем объявляем как зеровелью не литиравом а просто типом то там борт, елены копайте по нолям и

136
00:18:44.540 --> 00:18:51.500
Михаил Непряхин: вот есть самый частый кейс Использования, слайса если вы не знаете какой будет, размер

137
00:18:51.610 --> 00:18:53.020
Михаил Непряхин: слайса

138
00:18:53.180 --> 00:18:59.670
Михаил Непряхин: то вы его объявляете Так уж если, вы знаете какой будет Размеррой. Вы делаете через Майка а если, не знаете просто вот Так по дефолту

139
00:19:00.210 --> 00:19:05.500
Михаил Непряхин: и дальше вы добавляете туда По Одному элементу значит

140
00:19:06.790 --> 00:19:09.240
Михаил Непряхин: Первый Раз, когда вы добавите туда элемент

141
00:19:09.880 --> 00:19:12.750
Михаил Непряхин: а его Лены к опасности будут равен По Одному

142
00:19:13.730 --> 00:19:21.430
Михаил Непряхин: если вы добавите еще смотрите какая здесь особенность синтаксиса Пэнт Он принимает с вайс

143
00:19:21.590 --> 00:19:23.060
Михаил Непряхин: и возвращает слайс

144
00:19:24.070 --> 00:19:41.280
Михаил Непряхин: и принято вот который слаясь, сюда Он принимает вот в этот же слой Мы и переписываем То есть Мы постоянно переписываем Наш Один. И тот же свайс Зачем Так сделано потому Что здесь может в Один тот же самый слайс может вернуться а может Новый сваясь вернуться

145
00:19:41.460 --> 00:19:52.220
Михаил Непряхин: То есть эээ с другим массивом под капотом происходит это тогда когда У нас не Хватает места в текущем свайсе как например, здесь

146
00:19:52.650 --> 00:20:04.540
Михаил Непряхин: а То есть Там было ноль ноль места Нет мы добавить нам мы не, можем Поэтому апэнте он выделяет новую память ну копировать туда, нечего Поэтому просто новую память уделяет добавляя туда, тома

147
00:20:04.540 --> 00:20:19.530
Михаил Непряхин: и и

148
00:20:19.820 --> 00:20:25.610
Михаил Непряхин: вот а на старую, структуру уже никто не указывает ну и все соответственно как бы ее соберет на рабочий коллектор

149
00:20:26.280 --> 00:20:31.780
Михаил Непряхин: а дальше хотим, еще Раз, добавить еще один элемент в Этот же слайс

150
00:20:32.320 --> 00:20:33.460
Михаил Непряхин: и и

151
00:20:33.600 --> 00:20:43.960
Михаил Непряхин: Мы удваиваемся по леной копасе и Мы выделяем новый мотив Старые данные Копируем туда и Добавляем Еще Один элемент получается ленд два капозите два

152
00:20:44.740 --> 00:20:50.990
Михаил Непряхин: Но присваиваю вам в этот же свайс а тот Предыдущий массив который был его тоже горбушка коллектор собирает рано Или поздно

153
00:20:51.730 --> 00:20:57.480
Михаил Непряхин: Делаем Еще одно добавление элемента и теперь Мы удваиваемся Покопасити

154
00:20:57.850 --> 00:21:03.480
Михаил Непряхин: То есть у нас там массив под капотом он уже Емкости четыре Но лен три

155
00:21:04.220 --> 00:21:09.500
Михаил Непряхин: и в следующий Раз, когда мы Добавим элемент вот здесь уже Не будет

156
00:21:09.700 --> 00:21:17.150
Михаил Непряхин: переолокации Не будет Копирования Мы здесь Отвернем тот же самый. Свайс который вот имели здесь а до этого Мы Всегда, возвращали новый

157
00:21:17.610 --> 00:21:25.690
Михаил Непряхин: здесь Мы Изучаем тот же. Самый и у нас лен уже равно Копается идти то есть в следующий Раз, когда Мы будем добавляться нам Тоже, придется переуделять память

158
00:21:26.160 --> 00:21:36.750
Михаил Непряхин: еще Раз, добавляем еще Один. Элемент и теперь уже у нас удвоилось копассити оно в восемь и блин у нас пять и соответственно мы еще три элемента можем туда добавить

159
00:21:36.750 --> 00:21:54.490
Михаил Непряхин: и оно Не потребует переловокации ну и вот У нас под капотом будет вот такой массив соскопасть и восемь и три пустых элемента ну Так как у нас лен пять то, мы их и не, увидим у нас вот на этот элемент как. Бы мы только До него можем увидеть

160
00:21:54.490 --> 00:21:57.150
Михаил Непряхин: а эти у нас они просто Под капотом внутри

161
00:21:58.020 --> 00:22:11.580
Михаил Непряхин: как. Мы в прошлый Раз, говорили, Мы можем раздвинуть вот этот вот горизонт и посмотреть что Там и Увидеть вот эти нулевые элементы ну это скорее оптимизация для того когда Мы пишем китал горит уж Непротакшн Ради кода

162
00:22:12.330 --> 00:22:15.590
Михаил Непряхин: и м возникает вопрос

163
00:22:15.790 --> 00:22:21.350
Михаил Непряхин: А как дальше будет расти удваиваться ли будет дальше к опасности

164
00:22:22.600 --> 00:22:30.760
Михаил Непряхин: а давайте ваши ставки кто не Знает значит Будет ли удваиваться? К опасности либо как Оно Будет себя по другому Вести как вы думаете.

165
00:22:32.640 --> 00:22:34.700
Konstantin: А в каких, случаях.

166
00:22:35.240 --> 00:22:37.120
Михаил Непряхин: Ну вот продолжаем удваиваться.

167
00:22:37.370 --> 00:22:48.390
Михаил Непряхин: Ой Мы продолжаем добавлять значит Мы Просто вот Эту вот Штуку продолжаем Делать, дальше по одному элементу добавляем добавляем Проблем и Просто хотим, понять. Каждый Раз, Будет удваиваться к опасности.

168
00:22:51.050 --> 00:23:00.270
Konstantin: До Определенного момента по-моему удваиваются а дальше как будто. Бы там Уменьшается вот этот рейд на который Умножается там текущая длина.

169
00:23:00.400 --> 00:23:05.540
Михаил Непряхин: Да там единая независимость правильно Ну Давайте попробуйте Предположить, Э

170
00:23:06.200 --> 00:23:11.350
Михаил Непряхин: до какого. До какой степени она будет уменьшаться постепенно

171
00:23:16.150 --> 00:23:20.060
Михаил Непряхин: да тысяч увольнения а смысл в том что смотрите значит мы удваиваемся

172
00:23:20.340 --> 00:23:25.280
Михаил Непряхин: потом мы понимаем что ну представьте у нас миллион

173
00:23:25.620 --> 00:23:27.030
Михаил Непряхин: Капасити

174
00:23:27.450 --> 00:23:31.260
Михаил Непряхин: если мы Сейчас добавим Один элемент вот два миллиона капасиди

175
00:23:31.420 --> 00:23:34.680
Михаил Непряхин: типа мы по памяти удвоимся так

176
00:23:34.870 --> 00:23:39.880
Михаил Непряхин: занимать мы будем, в два раза больше а мы всего лишь один, элемент хотим? Сохранить

177
00:23:39.990 --> 00:23:48.490
Михаил Непряхин: типа неэффективно как Будто бы хочется с какого то момента не двоих сделать а допустим полтора икс

178
00:23:49.340 --> 00:23:54.950
Михаил Непряхин: вот в этом идее ну вот константин один Раз, пять написал да, такие есть то есть вот константин ремчуков. Знает,

179
00:23:55.870 --> 00:24:12.650
Михаил Непряхин: значит есть вот нехитрая программка можете Там вот эту программку сами запустить и просто посмотреть у меня, здесь Двадцать прыжков. То есть Двадцать увеличений Копасить и посмотреть как оно работает значит вот это результат работы Этой и

180
00:24:14.090 --> 00:24:15.170
Михаил Непряхин: программки

181
00:24:15.820 --> 00:24:17.080
Михаил Непряхин: значит Смотрим

182
00:24:17.180 --> 00:24:22.010
Михаил Непряхин: До Пятисот, двенадцати Емкости Мы удваиваемся

183
00:24:22.330 --> 00:24:29.870
Михаил Непряхин: начиная с пятиста двенадцати вот тут Один, элемент добавляем и все и Мы уже не удваиваемся Мы в один шестьдесят шесть растем

184
00:24:30.580 --> 00:24:34.260
Михаил Непряхин: ну! И потом один пятьдесят один ездит стремительно падаем

185
00:24:34.420 --> 00:24:38.990
Михаил Непряхин: и уже уже начиная

186
00:24:40.010 --> 00:24:42.130
Михаил Непряхин: Со Ста семидесяти пяти, тысяч.

187
00:24:42.610 --> 00:24:47.540
Михаил Непряхин: Мы больше не падаем Там примерно Один, двадцать пять получается и

188
00:24:47.890 --> 00:24:48.990
Михаил Непряхин: вот это вот рост

189
00:24:49.720 --> 00:24:55.550
Михаил Непряхин: то есть эээ для того чтобы когда мы работаем с миллионами Элементов

190
00:24:55.700 --> 00:25:04.130
Михаил Непряхин: у Нас не случилось так что память вроде есть для работы Программы но мы падаем потому что, ну

191
00:25:05.210 --> 00:25:16.980
Михаил Непряхин: как бы Мы удвоились и все а на самом деле могли бы поменьше расти не Так, жадно и тогда, все было нормально вот Поэтому здесь сделано так Что, оно постепенно уменьшается до, Один Двадцати пяти,

192
00:25:17.160 --> 00:25:28.300
Михаил Непряхин: ну в общем надо просто примерно понимать Что, вот оно Там с двойки и падает примерно до один Двадцать пять просто как Бы это такой вопрос на Собеседование могут задать

193
00:25:29.320 --> 00:25:34.910
Михаил Непряхин: михаил После того как слайс что То добавили он сразу идет, в кучу Даже если был на стыке

194
00:25:36.090 --> 00:25:38.330
Михаил Непряхин: смотреть онлайн

195
00:25:38.500 --> 00:25:41.410
Михаил Непряхин: там есть размер

196
00:25:41.590 --> 00:25:44.930
Михаил Непряхин: короче первое время

197
00:25:45.440 --> 00:25:46.490
Михаил Непряхин: массив

198
00:25:48.160 --> 00:25:51.760
Михаил Непряхин: конечно Есть какой то размер

199
00:25:52.220 --> 00:25:54.530
Михаил Непряхин: после Которого, Всегда в куче

200
00:25:54.920 --> 00:25:57.860
Михаил Непряхин: то Есть э ну не знаю.

201
00:25:58.270 --> 00:26:08.350
Михаил Непряхин: Три тысячи двадцать четыре элементов не знаю. В тысяча двадцати четырех элементах он может быть э, настлеки даже выделен без кучи потом точно будет кучу

202
00:26:08.620 --> 00:26:15.020
Михаил Непряхин: вот про массивы ну это вообще, про Массивы конечно речь То есть Вот когда мы допустим с массивом работаем

203
00:26:15.720 --> 00:26:22.080
Михаил Непряхин: Мне кажется, что когда мы с асфальсом работаем мы Всегда сто процентов выделения получим на кучу без вариантов

204
00:26:22.400 --> 00:26:27.520
Михаил Непряхин: а вот если мы работаем просто вот функции, с массивом ну такое бывает

205
00:26:27.710 --> 00:26:41.750
Михаил Непряхин: никогда ну то есть как бы в продакшн конди вы не увидите мотив а Так в чистом виде только свайс Но если вдруг вам говорит она вот если вы прямо, работаете на низком уровне там У вас все оптимизировано вы прямо, с Мотивами работаете

206
00:26:42.060 --> 00:26:45.490
Михаил Непряхин: то до тысячи двадцати четырех

207
00:26:45.790 --> 00:26:53.680
Михаил Непряхин: оон будет на стеке то есть будет довольно быстро. Работать Еще даже за счет этого Вот потом он все равно уедет в кучу

208
00:26:54.140 --> 00:27:02.010
Михаил Непряхин: потому что большие размеры настыки Кино неэффективно работать с ними вот ну то ли тысяча, двадцать четыре, то ли чего то где то от кого-то

209
00:27:03.000 --> 00:27:08.580
Михаил Непряхин: может быть Там в байтах размер тут. Я не помню то ли в количестве времен стали У байтов

210
00:27:08.660 --> 00:27:23.680
Михаил Непряхин: я просто не Зачитал Что сласть при любом изменении Отправляется в кучу До Определенного предела по Размеру и Можно Ставить Возможно Возможно то Есть ну как бы на собеседниках Не Спрашивать для работы Никогда не набилось это я не знаю Там. Оптимизации столько

211
00:27:23.690 --> 00:27:29.900
Михаил Непряхин: много шоу Их все нереально запомнить только если. Вдруг Вы с Этим Столкнулись его Так изучили этот момент

212
00:27:30.680 --> 00:27:42.120
Михаил Непряхин: и как вы понимаете если вы Создаете вот так вот слайс и

213
00:27:43.290 --> 00:27:46.410
Михаил Непряхин: то вы получаете много Авокаций

214
00:27:46.630 --> 00:27:48.180
Михаил Непряхин: потому Что У вас вот

215
00:27:49.430 --> 00:27:54.220
Михаил Непряхин: ээ Если, вы допустим Хотите тысячу элементов добавлять и вы так будете оппонтить

216
00:27:54.360 --> 00:28:03.990
Михаил Непряхин: а значит допустим где Мы там до тысячи элементов дамы где-то здесь смотрите Сколько прыжков? Вы Совершите да То Есть тут ну Сколько Там десять. Прыжков? Где-то Вы сделаете

217
00:28:04.310 --> 00:28:14.030
Михаил Непряхин: это десять. Локаций это десять. Раз Мы выделим память скопируем туда отдам Тоже. Тысяч, оптимизации Этого Локатора, Там все сложно

218
00:28:14.440 --> 00:28:29.040
Михаил Непряхин: аа Но короче суть в том что это все равно медленно Там Не будет реальности скола к персонке Это был Бы общий Жест Но Тем Не Менее Там будут будут обращения к внутреннему адвокату гожному а он медленный то есть

219
00:28:29.810 --> 00:28:39.010
Михаил Непряхин: э я не знаю во сколько там Раз Ну считаете не знаю десять двадцать Раз медленнее чем работать на стыке может быть даже пятьдесят Раз что то такое короче жесть как медленно

220
00:28:39.150 --> 00:28:58.800
Михаил Непряхин: вот Поэтому естественно хочется оптимизировать как это оптимизироваться с Помощью мейка если вы знаете сколько вы будете элементов хранить в своем Слайсе да Вы Хотите, просто Опэндить но Вы Не Хотите, вот этих Ход Перевокаций постоянно. Поэтому вы просто говорите что У Меня Будет пятьсот элементов

221
00:28:59.070 --> 00:29:05.010
Михаил Непряхин: и все а Дальше о политике как обычно У вас Не будет никаких пробыток и не так много

222
00:29:05.550 --> 00:29:09.850
Михаил Непряхин: вот то Есть вы говорите что у вас бодка посети пятьсот лен ноль

223
00:29:10.150 --> 00:29:25.850
Михаил Непряхин: и опоньте себе на здоровье и У вас Не Будет Проблем, с перевокациями то есть это Будет работать ну Прям Можно бить Марки потом покажу в бичмарке писать по-моему что-то такое написать Или сами, можете написать чтобы просто знать во Сколько Раз это будет медленнее работать

224
00:29:26.560 --> 00:29:29.970
Михаил Непряхин: Но и

225
00:29:30.500 --> 00:29:32.730
Михаил Непряхин: когда вы только просто что-то пишете

226
00:29:33.480 --> 00:29:40.530
Михаил Непряхин: вы все равно мэйк не используете потому что мейк является Так сказать преждевременной оптимизацией

227
00:29:41.370 --> 00:29:53.640
Михаил Непряхин: обычно вы все равно пишете вот такой код да Там Происходят локации прыжки туда-сюда но ну, господи у нас язык с горбачкой лектором он сам работает быстро. И Даже Если, вы будете работать вот Так вот

228
00:29:53.960 --> 00:30:08.130
Михаил Непряхин: Так Чтобы Это, было узким, местом Но точно Нет можете даже Не сомневаться Это, узким, местом в программе Не будет То есть вот Там тысячу Раз играли Мы такую игру с Коллегами значит открываем какой-нибудь чей-нибудь код

229
00:30:08.130 --> 00:30:15.860
Михаил Непряхин: и спрашиваешь значит М вот где Ты считаешь у тебя узкое место, ну. Вот самое Медленное место, в Этой программе

230
00:30:15.900 --> 00:30:24.780
Михаил Непряхин: никто Никогда Не угадывает вообще никто Никогда ни. Разу Не угадывает Где это узкое место Ну, если Не совсем. Явная Конкретикация строк какая-нибудь нереально угадать,

231
00:30:25.030 --> 00:30:31.700
Михаил Непряхин: Поэтому когда Вы смотрите Лена код Вы Не можете сказать как его можно оптимизировать где он будет тормозить

232
00:30:31.870 --> 00:30:39.340
Михаил Непряхин: во-первых когда вы оптимизируете уход. Вы Всегда, его уродуете и вот это вот выглядит доступнее и проще чем

233
00:30:39.660 --> 00:30:41.770
Михаил Непряхин: а вот это вот через майк

234
00:30:42.560 --> 00:30:46.660
Михаил Непряхин: еще можно ошибиться нам, вот так ну и

235
00:30:47.130 --> 00:30:50.550
Михаил Непряхин: можете даже не париться на Первых порах вот Про это

236
00:30:50.890 --> 00:30:53.860
Михаил Непряхин: вот ну если, вам приходит какой то свайс

237
00:30:54.360 --> 00:30:59.390
Михаил Непряхин: как вы помните Мы вот с этим свайсом Ничего не делаем с тем свайсом который к нам функцию пришел

238
00:30:59.590 --> 00:31:12.540
Михаил Непряхин: мы создаем сразу, Новый слайс и Тренируемся По-старому пишем в Новый и вот в этом случае ну конечно нам Без Проблем, у нас же есть и

239
00:31:13.280 --> 00:31:20.360
Михаил Непряхин: лен вот этого одесса который нам, поступил, наверняка вот так вот

240
00:31:20.640 --> 00:31:39.080
Михаил Непряхин: и и

241
00:31:39.080 --> 00:31:42.060
Михаил Непряхин: аа профита оно ну Дает как бы Но

242
00:31:42.500 --> 00:31:46.200
Михаил Непряхин: все равно самым узким местом программы. Этого Не будет Поэтому

243
00:31:46.330 --> 00:31:47.500
Михаил Непряхин: про это

244
00:31:47.870 --> 00:31:56.890
Михаил Непряхин: больше приходится париться потому что в головах угошников Что это важно это локации там туда-сюда и как бы

245
00:31:56.890 --> 00:32:10.280
Михаил Непряхин: и и

246
00:32:12.260 --> 00:32:15.820
Михаил Непряхин: так все ли с этим понятно, есть ли тут вопрос

247
00:32:24.040 --> 00:32:24.880
Михаил Непряхин: так

248
00:32:26.450 --> 00:32:28.560
Михаил Непряхин: ну Окей вопросов, как Будто. Нет

249
00:32:28.940 --> 00:32:31.460
Михаил Непряхин: Так ша За посмотрим шумно с утешен

250
00:32:31.950 --> 00:32:39.870
Михаил Непряхин: ну вот я вот я тут, показываю Должна смотреть если, вы Делаете вот так вот То вас и лены копасяти три

251
00:32:40.090 --> 00:32:48.550
Михаил Непряхин: и если вы будете оппонентить ну короче Это вот Не, получится, память возникнет новый Свальский короче от смысла Нет Так делать мейк

252
00:32:48.550 --> 00:33:02.550
Михаил Непряхин: вы просто и

253
00:33:02.550 --> 00:33:20.960
Михаил Непряхин: и поменять это быстрее но даже эту оптимизацию и

254
00:33:21.130 --> 00:33:33.100
Михаил Непряхин: какпасть Тебе сколько надо и через аппент добавляете в слай с элементы то есть вот это и есть вся, работа со свадьбой то есть когда вы в жизни с ним работаете вы вообще ничего кроме как

255
00:33:35.050 --> 00:33:38.050
Михаил Непряхин: вот так вот его создали и опендити не делаете

256
00:33:38.420 --> 00:33:52.030
Михаил Непряхин: вот а вот это вот все вот знать весь его функционал что он Там как себя ведет по сути это все для собетов потому что это первый Этап любого собеседника если вы здесь проваливаете его или как-то слабо отвечаете

257
00:33:52.130 --> 00:34:03.460
Михаил Непряхин: и и вы даже возможно на следующий этап не пройдете потому что как бы здесь себя Плохо показали

258
00:34:05.760 --> 00:34:11.500
Михаил Непряхин: так. Вопрос только Про хранение. Спасти получается срываясь куча может ссылаться на мастерство

259
00:34:11.770 --> 00:34:17.739
Михаил Непряхин: так. Сейчас интересный вопрос получается ссылаясь и с кучью и может Ссылаться на массивстек

260
00:34:18.219 --> 00:34:24.960
Михаил Непряхин: нет нет я думаю что нет я думаю что власть всегдавоцирует массив

261
00:34:25.190 --> 00:34:26.040
Михаил Непряхин: в куча

262
00:34:26.580 --> 00:34:32.659
Михаил Непряхин: как бы Свечку не державу прямо вообще сто сто процентов не скажу но Мне кажется, что так

263
00:34:32.810 --> 00:34:48.320
Михаил Непряхин: и я про массив говорил я просто спутывал ну вот я сказал вам что если вы работаете с массивом то Он может маленький массив Он будет на Стеке потом когда Он будет Расти Он уедет в кучу а с асфальсом когда Вы Авоцируете

264
00:34:48.850 --> 00:35:04.450
Михаил Непряхин: ну короче я Никогда Не слышал Не читал несмотря ни про это Не могу. Сказать если такая оптимизация есть ну прикольно вы сделали свалится Еще и мысив у вас на стекке но ничего про это не Слышал я думал что если Так можно кучу заглянуть Но не наоборот или

265
00:35:05.620 --> 00:35:11.870
Михаил Непряхин: Ну на самом деле можно Куда угодно заглянуть с помощью указателя

266
00:35:11.910 --> 00:35:28.520
Михаил Непряхин: вообще не важно вот какая у вас Разница вот У вас Кусочек памяти он в стекке, находится или Кусочек памяти находится в Куча указатель поставить можно вот вот на любую память какая У вас есть Куда Хотите, указать той поставьте хоть в тексту и область хоть в область констата хоть бы, может быть функции

267
00:35:28.520 --> 00:35:33.900
Михаил Непряхин: не проблема, вот ну тут скорее вопрос просто как это реализовано в языке

268
00:35:34.910 --> 00:35:52.320
Михаил Непряхин: вот в моем убеждении я думаю что слайс когда вы работаете со слайсом У вас структура слайса Всегда на стеке очень логично а массив Всегда в куче но вот могу конечно ошибаться может быть какая-нибудь есть супер оптимизация

269
00:36:01.120 --> 00:36:03.760
Михаил Непряхин: так ну про низко уровневые штуки

270
00:36:04.200 --> 00:36:17.190
Михаил Непряхин: Плохо знает платья постоянно. Приходится. Сверяться если что-нибудь от про низко уровневое обязательно надо говорить Что Ты разработочек компилятора Языка Голову. Видит баба вот это вот иначе они Прям совсем, плохо

271
00:36:18.050 --> 00:36:19.340
Михаил Непряхин: так,

272
00:36:19.760 --> 00:36:28.550
Михаил Непряхин: в Создание, пустого свайса ну да вот Этому вот прямо, цирром Под капотом У нас Будет сласть на Лимонная Или миллион элементов

273
00:36:28.730 --> 00:36:33.030
Михаил Непряхин: а ну лен Будет ноль соответственно Мы Будем поинзить вот в начало

274
00:36:34.450 --> 00:36:36.170
Михаил Непряхин: так-так

275
00:36:36.670 --> 00:36:42.910
Михаил Непряхин: ну вы да Ведь теперь, можем За аппенди просто миллион элементов Провокаций Не будет

276
00:36:43.870 --> 00:36:46.070
Михаил Непряхин: Так мам вам

277
00:36:47.410 --> 00:37:04.490
Михаил Непряхин: да проверяем ленка Пасе если. Мы закончили значит лен миллион капаете миллион Хотим, Добавить еще один элемент. Добавляем его и Получаем Рост в один Двадцать, Пять и у нас в итоге будет лен миллион один

278
00:37:04.570 --> 00:37:09.330
Михаил Непряхин: окопасти под капотом массива будет вот примерно в один Двадцать Пять Раз

279
00:37:11.850 --> 00:37:18.140
Михаил Непряхин: так значит про слайс про слайс закончили

280
00:37:18.580 --> 00:37:30.040
Михаил Непряхин: если ну, У нас Еще будут задачки короче вот задачки которые на собесе спрашивают ну, их бомбом постепенно решает просто чтобы вы Не забывали как их решать вот

281
00:37:30.260 --> 00:37:35.840
Михаил Непряхин: значит здесь какие-то Еще Вопросы, Есть по Свайсам Давайте если, Есть Еще прославий

282
00:37:37.040 --> 00:37:38.050
Михаил Непряхин: расскажу

283
00:37:38.610 --> 00:37:40.580
Михаил Непряхин: дайте Можно голоса Можно написать

284
00:37:41.650 --> 00:37:43.490
Михаил Непряхин: все ли Пока Прослось понятно,

285
00:37:48.050 --> 00:37:49.360
Михаил Непряхин: окей а

286
00:37:49.690 --> 00:37:53.060
Михаил Непряхин: значит следующая У нас тема

287
00:37:53.650 --> 00:38:08.440
Михаил Непряхин: Вотцеваясь она Одна из Самых Сложных, геморных тем потому Что она вот подразумевает доскональное Понимание, как оно Там в Новом низком уровне устроено и Какой Общий инстинкт здесь как с Ним работать особенно, вот этот гемор, с вот Это, вот

288
00:38:08.440 --> 00:38:16.620
Михаил Непряхин: с вот с этим вот Таким вот нарезкой и сальцев Что вот Это, включительно Это, исключительно ну, просто надо запомнить сперва включительно потом исключительно

289
00:38:16.620 --> 00:38:26.160
Михаил Непряхин: вот ну, и еще вот добавилась вот эта вот кпасть и осторожно собеседника бывает спрашивают типа баха хочу здесь чуть-чуть это Будет если, мы еще через, двоеточие Добавим

290
00:38:26.160 --> 00:38:35.130
Михаил Непряхин: а это У нас копати мы Подрежем еще Таким образом, вот ну и вот возникают Иногда приколы и вот когда вот здесь вот мы указываем

291
00:38:36.360 --> 00:38:52.700
Михаил Непряхин: и индекс восемь на самом деле индекс максимального элемента в семь что надо, понимать когда у нас мы заработаем с Правой Частью мы работаем с фантомным. Вот Этим Вот Восьмым Элементом Которого нет Вот Это Прям такие Ммм самые сложные. Вещи про Слайсе

292
00:38:54.160 --> 00:38:59.970
Михаил Непряхин: так ладно Давайте Перейдем теперь. К мапам а второй по возможности, теми

293
00:39:00.840 --> 00:39:02.400
Михаил Непряхин: а

294
00:39:02.770 --> 00:39:04.860
Михаил Непряхин: а третий еще это планировший гол

295
00:39:06.160 --> 00:39:07.260
Михаил Непряхин: я и

296
00:39:07.430 --> 00:39:08.320
Михаил Непряхин: так

297
00:39:15.530 --> 00:39:20.740
Михаил Непряхин: так мама папа в других языках, ассоциативный массив

298
00:39:21.060 --> 00:39:22.030
Михаил Непряхин: или

299
00:39:22.470 --> 00:39:25.080
Михаил Непряхин: словарь как ты так дик шенгри

300
00:39:25.990 --> 00:39:30.460
Михаил Непряхин: а значит тип пишется как ключевое слово, Мап

301
00:39:31.150 --> 00:39:34.410
Михаил Непряхин: дальше в контрактных скобках, указывается.

302
00:39:34.520 --> 00:39:38.380
Михаил Непряхин: Тип ключа и после квадратных скобок

303
00:39:38.930 --> 00:39:40.220
Михаил Непряхин: Тип Вэлью

304
00:39:40.700 --> 00:39:50.980
Михаил Непряхин: то есть на Скей уэль мапа это киева или хранилище чаще всего используется нууууу для кашей то есть топ один Использование Этой киши

305
00:39:51.180 --> 00:39:58.580
Михаил Непряхин: или ин, мемори такая баска данных небольшая быстрая супер быстрая быстрее чем рэдис быстрее чем чего угодно

306
00:39:58.930 --> 00:40:02.780
Михаил Непряхин: а мапы на гол, работают ээ

307
00:40:03.250 --> 00:40:10.740
Михаил Непряхин: ну как бы медленнее маг на голову только там Это плюсы быстрее чем мапы на Голову. Это только на плюсах и на расте

308
00:40:10.890 --> 00:40:17.810
Михаил Непряхин: вот ну. И то как был час последней версии Предпоследний подтянули и тут же пытаются подтягивать мапы гоу

309
00:40:18.010 --> 00:40:26.310
Михаил Непряхин: чтобы они работали по быстрее ну работают они быстрее чем в питоме Там в джесси джавеле шерпи где угодно То есть Мы побыстрее

310
00:40:29.070 --> 00:40:34.100
Михаил Непряхин: значит недавно их версии Сейчас у нас кошка версия

311
00:40:34.300 --> 00:40:37.830
Михаил Непряхин: да и

312
00:40:38.320 --> 00:40:43.010
Михаил Непряхин: но вот мапы завезли верси один? Двадцать четыре то есть отверстие назад

313
00:40:43.460 --> 00:40:45.570
Михаил Непряхин: и довольно сильно изменили

314
00:40:46.370 --> 00:40:48.290
Михаил Непряхин: и теперь. Короче говоря он

315
00:40:48.450 --> 00:40:59.600
Михаил Непряхин: Приходится изучать реализацию предыдущих мап и текущих что как бы немножечко усложняет это дело потому что предыдущие мамы довольно просто Были реализованы текущие

316
00:41:00.070 --> 00:41:01.370
Михаил Непряхин: капец как сложно

317
00:41:03.300 --> 00:41:04.740
Михаил Непряхин: а почему так

318
00:41:05.010 --> 00:41:08.600
Михаил Непряхин: потому что мапы это

319
00:41:09.030 --> 00:41:12.410
Михаил Непряхин: ну в таких, языках, как си плюс плюс и раст

320
00:41:13.760 --> 00:41:18.680
Михаил Непряхин: а мапы реализованные вот как бы максимально эффективно

321
00:41:19.050 --> 00:41:21.010
Михаил Непряхин: на текущий момент

322
00:41:21.810 --> 00:41:32.750
Михаил Непряхин: э вот насколько наука компьютер сайнс продвигается вперед допустим что то новое изобрели Там приручили нобелевку еще что то

323
00:41:33.020 --> 00:41:37.950
Михаил Непряхин: мапы в плюсах и власти тут же подтягиваются то есть чтобы они были быстрыми

324
00:41:38.650 --> 00:41:45.300
Михаил Непряхин: и соответственно гоу тоже следит За этим ну допустим последняя реализация быстрых мап и

325
00:41:45.610 --> 00:41:48.420
Михаил Непряхин: свистэйблс Так называемая

326
00:41:48.540 --> 00:41:53.320
Михаил Непряхин: а Эти свидетельствачу Швейцария швейцарские таблицы

327
00:41:53.540 --> 00:41:55.010
Михаил Непряхин: а вот

328
00:41:55.370 --> 00:41:56.100
Михаил Непряхин: ууу

329
00:41:56.240 --> 00:42:05.950
Михаил Непряхин: она была в Две Тысячи девятнадцатом году выкаченная в плюсы у власти примерно Так же появилась и Его Только вот спустя шесть. Лет начали подтягивать и в гол. Тоже

330
00:42:06.510 --> 00:42:13.940
Михаил Непряхин: я предыдущая версия Тоже нормально быстро, работала Но эта текущая версия она немножечко эффективнее по памяти

331
00:42:14.500 --> 00:42:16.210
Михаил Непряхин: ну Сейчас вот об этом поговорим

332
00:42:16.910 --> 00:42:18.360
Михаил Непряхин: значит Ммм

333
00:42:19.140 --> 00:42:22.960
Михаил Непряхин: что нам нужно от рашмапы

334
00:42:23.600 --> 00:42:25.150
Михаил Непряхин: ну во Первых

335
00:42:26.430 --> 00:42:27.610
Михаил Непряхин: мы хотим,

336
00:42:28.600 --> 00:42:30.830
Михаил Непряхин: как вы Говорите По порядку Да как у Меня здесь

337
00:42:31.420 --> 00:42:34.740
Михаил Непряхин: а что из себя представляет

338
00:42:35.250 --> 00:42:40.570
Михаил Непряхин: структура мапы вернее что такое папа на уровне памяти

339
00:42:41.020 --> 00:42:58.440
Михаил Непряхин: и как и замыкание мапа это структура все полезное чего чего угодно по Сути реализован через структуру на самом деле в любых языках ну если это Не примитивный тип если это примитивный тип То это ну Там ин инт Или бууда вот а если это какой-то сложней и То это структура

340
00:42:58.660 --> 00:43:00.330
Михаил Непряхин: вот значит это структура

341
00:43:00.820 --> 00:43:01.490
Михаил Непряхин: Ммм

342
00:43:01.980 --> 00:43:07.110
Михаил Непряхин: к памяти но вот этот тип он указательный

343
00:43:07.230 --> 00:43:11.040
Михаил Непряхин: то есть это на самом деле указатель на эту структуру

344
00:43:11.590 --> 00:43:22.860
Михаил Непряхин: и здесь как бы тоже как и в функциях вот Мы только что смотрели как бы должен быть вот этот вот указатель вот кстати вот такой тип Указательного мапу он не имеет. Смысла потому что это был указательный указатель

345
00:43:23.020 --> 00:43:24.460
Михаил Непряхин: как будет бессмыслица

346
00:43:25.680 --> 00:43:36.530
Михаил Непряхин: короче говоря когда вы видите тип мапы Считаете Что Вы Работаете с указателем если Вы Передаете Куда То функцию То Вы Передаете Указатель если Там. Внутри. Функции

347
00:43:36.530 --> 00:43:54.050
Михаил Непряхин: Мапу вашу поменяют вы снаружи увидите Это Изменение то есть как бы мама она одна если будете куда-то Передавать то вы просто шарите вот этот общий доступ к Этой Мапе и кто угодно и

348
00:43:54.140 --> 00:44:03.170
Михаил Непряхин: там Маму Толкать в структуру и какую-то обертку сделать Над Мамой допустим и сделать доступ через гетсет

349
00:44:03.540 --> 00:44:05.190
Михаил Непряхин: через гет красота

350
00:44:05.610 --> 00:44:10.820
Михаил Непряхин: вот а если вы просто передаете Функцию не понимаете что если Там функция поменяет То оно поменяется

351
00:44:11.250 --> 00:44:18.580
Михаил Непряхин: а Мы до этого смотрели что с лайс это толстый указатель сваясь это указатель из трех полей

352
00:44:18.740 --> 00:44:22.310
Михаил Непряхин: То есть это структура с тремя полями но один из них указатель

353
00:44:22.560 --> 00:44:39.630
Михаил Непряхин: Мапа это просто Один указатель это просто тонкий указатель а Обычный указатель а сколько у нас указателей Занимает на Стекке восемь байден, Поэтому размер мапы на стеке восемь байт ну а размер там он реальный это он там в куче Лежит как бы это в зависимости от того сколько Там у него данных

354
00:44:40.720 --> 00:44:49.790
Михаил Непряхин: зероалью Какое зеровелью у мамыпы вот когда вы так объявляете, мапу переменой какой же Там будет зеро Или у него зеролью нил

355
00:44:50.410 --> 00:44:56.450
Михаил Непряхин: то есть когда вы вот Таким образом работаете с асфальсом все киев можете в него оппонентить

356
00:44:56.710 --> 00:45:01.860
Михаил Непряхин: Будет все нормально если вы Так захотите работать с мамой Будет паника

357
00:45:02.180 --> 00:45:08.280
Михаил Непряхин: потому что Внимовую мапу нельзя добавлять элементы

358
00:45:09.070 --> 00:45:11.250
Михаил Непряхин: по ней по моему Можно интегрироваться.

359
00:45:11.580 --> 00:45:13.590
Михаил Непряхин: Но элементы убить нельзя

360
00:45:14.990 --> 00:45:16.260
Михаил Непряхин: А короче

361
00:45:16.440 --> 00:45:25.610
Михаил Непряхин: не знаю нафига-то надо то есть. Он по мне пред полный потому Что Работать с нецензированной Мамой ну как бы Я вообще Ни разу Не Видел. Такого кейса и как Бы

362
00:45:25.880 --> 00:45:39.040
Михаил Непряхин: может быть он где-то Есть но как Будто Бы хотелось Бы чтобы Она была Сразу Инициативная не знаю зачем это сделали а Сейчас Раз уж это Есть то ну так просто это не выпили потому что обратно совместим и все такое то есть может быть тут где-то заложилось уже на это поведение

363
00:45:39.640 --> 00:45:46.420
Михаил Непряхин: вот Поэтому чаще всего вы будете видеть инициативу через мейк а Не Через вот Это либо Через литературу

364
00:45:46.750 --> 00:45:53.650
Михаил Непряхин: Какой У нас ретирал У мапы То же самое добавляется круглой скобки сзади То есть Если Вы сделаете

365
00:45:55.960 --> 00:45:56.800
Михаил Непряхин: а

366
00:45:57.670 --> 00:45:58.780
Михаил Непряхин: вот Так вот

367
00:45:59.110 --> 00:46:06.810
Михаил Непряхин: это уже Будет Инициатизированная мама, и она уже Будет не ему и От нее уже можно и добавлять элементы и работать с ними все нормально

368
00:46:08.300 --> 00:46:22.590
Михаил Непряхин: а можно сразу через литера добавить элементы то есть говорите вот это ключ это вэлью но и можете их сюда, добавлять сразу сколько угодно можете работать таким образом, и здесь сразу произойдет локация по количеству элементов

369
00:46:23.800 --> 00:46:25.930
Михаил Непряхин: а то есть вот мы в итоге получим такую мапу

370
00:46:26.050 --> 00:46:28.300
Михаил Непряхин: топ один боб Два вот это все

371
00:46:29.260 --> 00:46:30.030
Михаил Непряхин: да

372
00:46:30.410 --> 00:46:31.610
Михаил Непряхин: значит доступ

373
00:46:33.150 --> 00:46:38.250
Михаил Непряхин: а просто в квадратных скобочках Мы говорим пишем Ключ

374
00:46:38.430 --> 00:46:40.550
Михаил Непряхин: и Поэтому ключу получаем значение

375
00:46:42.550 --> 00:46:43.810
Михаил Непряхин: так вот У эстут

376
00:46:44.920 --> 00:46:46.350
Михаил Непряхин: борис так идут ноль

377
00:46:46.500 --> 00:46:47.970
Михаил Непряхин: тут должен быть ноль

378
00:46:49.040 --> 00:46:50.530
Михаил Непряхин: о бо два

379
00:46:51.800 --> 00:47:08.000
Михаил Непряхин: а если Мы хотим, перезаписать значение То мы говорим вот берем нашу мапу квадратную Скобочку указываем Ключ и знак равенства значение меняем То есть собственно говоря вот тот самый индекс как мы хотим? Работать с мапой

380
00:47:08.090 --> 00:47:18.190
Михаил Непряхин: читаем Таким образом а эта. Операция получается. Будет выглядеть как что мы Прочитали получили значение и

381
00:47:18.790 --> 00:47:31.080
Михаил Непряхин: и вернее как бы получили ну типа указателя и поменяли и по Этому Указателю То значение вот на это Замечание, типа того То есть когда вы увидите такую Строку на самом деле здесь и Чтение и запись

382
00:47:31.270 --> 00:47:33.600
Михаил Непряхин: а где Везти такую Строку просто Чтение

383
00:47:35.470 --> 00:47:36.940
Михаил Непряхин: Так и

384
00:47:38.720 --> 00:47:42.660
Михаил Непряхин: Проверка значения значит есть дополнительный синтаксис

385
00:47:43.300 --> 00:47:47.630
Михаил Непряхин: Мы вот обычное Чтение, У нас значит вот Так вот выглядит

386
00:47:48.190 --> 00:47:49.060
Михаил Непряхин: шар,

387
00:47:52.190 --> 00:47:54.390
Михаил Непряхин: То есть вот просто Мы Читаем

388
00:47:55.050 --> 00:48:00.770
Михаил Непряхин: Мапа У нас Пипл, Мы говорим. Дай мне элемент с ключом том

389
00:48:01.440 --> 00:48:05.090
Михаил Непряхин: и Мы здесь получаем значение ноль стамбуд ноль

390
00:48:06.430 --> 00:48:10.220
Михаил Непряхин: вот Но Мы Хотим? Отличать кейс

391
00:48:11.050 --> 00:48:13.310
Михаил Непряхин: аа от зеркалью

392
00:48:13.440 --> 00:48:17.280
Михаил Непряхин: типа вот Мы Допустим работаем с Мамой ин

393
00:48:19.220 --> 00:48:20.340
Михаил Непряхин: а у нас

394
00:48:20.420 --> 00:48:21.630
Михаил Непряхин: в гошке

395
00:48:21.660 --> 00:48:40.600
Михаил Непряхин: Всегда все инициализировано Не инициатизированной памяти Нет ну если она Не Инициатива бутню если У нас указать Не они солидарны на памятник Ну, вот Не мусор а если Это какие-то типы типа интастарингии то они будут Инициатизированы и

396
00:48:40.730 --> 00:48:49.760
Михаил Непряхин: и вот Мы читаем Из мамы по ключу том и получаем ноль Что, нам Об этом говорит значит два варианта

397
00:48:50.670 --> 00:48:51.750
Михаил Непряхин: одно, из двух

398
00:48:52.140 --> 00:48:55.810
Михаил Непряхин: либо мы правда имеем

399
00:48:56.640 --> 00:49:00.420
Михаил Непряхин: значение ноль первыйренд а второй вариант

400
00:49:00.610 --> 00:49:03.270
Михаил Непряхин: и ключа тома

401
00:49:03.440 --> 00:49:06.850
Михаил Непряхин: в мапе не было и мы получили зероалью

402
00:49:07.550 --> 00:49:14.220
Михаил Непряхин: уж чтобы Отличить этот кейс первый кейс от второго когда зеро Или а когда значение Реально ноль

403
00:49:14.700 --> 00:49:15.730
Михаил Непряхин: а

404
00:49:16.610 --> 00:49:18.430
Михаил Непряхин: Есть ты такой синтаксис

405
00:49:19.280 --> 00:49:26.210
Михаил Непряхин: мы получаем не одно, значение а Два значения значит здесь у нас будет ээ значение по ключу

406
00:49:26.780 --> 00:49:30.950
Михаил Непряхин: а окей у нас булю во значения трулипа фолс

407
00:49:31.140 --> 00:49:35.540
Михаил Непряхин: значит если значение Было то оно будет тру

408
00:49:35.860 --> 00:49:38.620
Михаил Непряхин: если значения не Было то оно бот фолс

409
00:49:38.810 --> 00:49:47.880
Михаил Непряхин: то есть вот мы в этом случае проверяем о том у нас Есть Мы его получаем здесь в Элью пот ноль Мы проверяем

410
00:49:48.350 --> 00:49:57.390
Михаил Непряхин: Э, Окей Окей если Окей да значит мы попадаем внутрь и значит значение в мапе было и мы его печатаем

411
00:49:58.180 --> 00:50:02.870
Михаил Непряхин: принято вот еще подобный синтез если, есть у каналов а потом дойдем

412
00:50:03.320 --> 00:50:05.580
Михаил Непряхин: значит принят здесь писать ок

413
00:50:06.000 --> 00:50:25.140
Михаил Непряхин: и если, не ок проверка ну вот просто восклицательным знаком читается удобно ну типа понятно что. Не ок То Есть если о кто значит значение Там было не около, значит у Нас э, Мы вью Заходим вот То Есть здесь принято писать вот называть вот эту переменную, оком

414
00:50:27.940 --> 00:50:37.120
Михаил Непряхин: а так да Хотим? Добавить да так добавление Сейчас посмотрим По литерам мы здесь говорим значит том, вот один, бог два

415
00:50:37.270 --> 00:50:48.830
Михаил Непряхин: а отсите вот можно одну штуку и записать можно вот в разные строки и так вот записать запятую надо Добавить тут, как бы Можно и Так короче и в одну, Строку работать тоже

416
00:50:49.430 --> 00:50:53.580
Михаил Непряхин: Так говорим Что Добавляем Еще кейт Сто Двадцать восемь

417
00:50:53.840 --> 00:50:58.040
Михаил Непряхин: Так Проверяем здесь у нас получается три значения

418
00:50:59.450 --> 00:51:02.070
Михаил Непряхин: ну окей ничего особенного да ну как, бы

419
00:51:02.230 --> 00:51:08.270
Михаил Непряхин: этот трек рассказал так Удаление для того чтобы удалить есть специальные функции, делит

420
00:51:09.000 --> 00:51:12.240
Михаил Непряхин: а Она исключительна для мап

421
00:51:12.740 --> 00:51:16.520
Михаил Непряхин: то есть эта функция работает Только с мапами

422
00:51:17.010 --> 00:51:18.290
Михаил Непряхин: значит

423
00:51:18.400 --> 00:51:23.890
Михаил Непряхин: Первым значением принимается мапа из которой мы Хотим? Удалить Ключ

424
00:51:24.240 --> 00:51:26.940
Михаил Непряхин: а вторым значением Ключ который Мы Хотим? Ударить

425
00:51:27.250 --> 00:51:30.890
Михаил Непряхин: ну и все как Будто Мы Не Читаем значения удалили

426
00:51:32.020 --> 00:51:35.180
Михаил Непряхин: так Давайте Сделаем перерыв две минутки

427
00:51:37.050 --> 00:51:38.640
Михаил Непряхин: и продолжим про мапы

428
00:54:40.310 --> 00:54:41.950
Михаил Непряхин: возвращаемся. К мапам

429
00:54:42.140 --> 00:54:43.180
Михаил Непряхин: Ммм

430
00:54:44.430 --> 00:54:49.440
Михаил Непряхин: кроме каша какие Шакиси про занимает так кэш э и

431
00:54:51.320 --> 00:54:55.130
Михаил Непряхин: ну а дедупликация потому что

432
00:54:56.150 --> 00:55:00.780
Михаил Непряхин: Я Сейчас помню про дедупликацию расскажу что из мапы Можно сделать

433
00:55:01.290 --> 00:55:03.280
Михаил Непряхин: Кортеж ой Не Крутеж

434
00:55:04.090 --> 00:55:04.920
Михаил Непряхин: тэт

435
00:55:05.240 --> 00:55:11.850
Михаил Непряхин: Да Сейчас про это расскажу Я бы сказал что Два кейса значит первый кэш внутренний а

436
00:55:12.010 --> 00:55:17.510
Михаил Непряхин: а второй кейс это дид увлекаться использованием мапы как сет

437
00:55:17.850 --> 00:55:20.600
Михаил Непряхин: а ну в общем-то вот вас накись

438
00:55:20.770 --> 00:55:34.000
Михаил Непряхин: потому что ну папа тяжелая структура по сравнению с асфальсом То есть это Прямо динозавр и

439
00:55:34.450 --> 00:55:37.060
Михаил Непряхин: это спрос это способ работать с массивом

440
00:55:37.310 --> 00:55:40.400
Михаил Непряхин: вот папа это прям

441
00:55:40.560 --> 00:55:42.100
Михаил Непряхин: прям тяжелая штука

442
00:55:42.760 --> 00:55:47.220
Михаил Непряхин: может она понимать как бы что вот если Можно не работать с Мамой лучше, с ней Не работать

443
00:55:47.430 --> 00:55:51.160
Михаил Непряхин: типа лучше структур, развести Если и мама Полей допустим Мапер

444
00:55:53.530 --> 00:55:54.560
Михаил Непряхин: Так

445
00:55:54.890 --> 00:55:58.350
Михаил Непряхин: Далее Не сказал итерация значит

446
00:55:59.220 --> 00:56:05.060
Михаил Непряхин: у нас особенности Что Мы Читаем из мамы в случайном порядке

447
00:56:05.630 --> 00:56:07.130
Михаил Непряхин: Сделано специально

448
00:56:08.270 --> 00:56:16.630
Михаил Непряхин: ну там иногда может быть порядок какой-то более-менее предсказуемый но в целом закладываться на это нельзя то есть Чтение изма рандомное сделано специально

449
00:56:20.480 --> 00:56:22.380
Михаил Непряхин: мы можем в оранже

450
00:56:22.600 --> 00:56:24.780
Михаил Непряхин: Так же как Посла и Свитерровались

451
00:56:25.470 --> 00:56:34.100
Михаил Непряхин: аа поместить емуполу после Роя Слова рэнч и получить, Два элемента первый Это будет ключ Второе значение

452
00:56:34.770 --> 00:56:38.910
Михаил Непряхин: вот ну, то же самое можно только ключ прочитать можно

453
00:56:42.810 --> 00:56:44.230
Михаил Непряхин: шумный голос

454
00:56:45.150 --> 00:56:48.550
Михаил Непряхин: можно только только значение прочитать

455
00:56:48.710 --> 00:56:49.580
Михаил Непряхин: зак

456
00:56:53.720 --> 00:57:00.090
Михаил Непряхин: штурмо по чаще всего охраняют в реальной разработке, да какие-то структуры основной структуры

457
00:57:00.350 --> 00:57:05.020
Михаил Непряхин: ну вот какой мы с каким доменом мы работаем вот структура этого Домина,

458
00:57:06.810 --> 00:57:08.510
Михаил Непряхин: по указателям

459
00:57:08.720 --> 00:57:09.950
Михаил Непряхин: чаще, всего хранят

460
00:57:12.320 --> 00:57:13.450
Михаил Непряхин: так

461
00:57:13.730 --> 00:57:16.180
Михаил Непряхин: то есть для быстрого доступа, к чему нибудь

462
00:57:19.010 --> 00:57:26.810
Михаил Непряхин: ну тут вот про ключи Да Что как бы Тип должен быть композитор чтобы Он Был ключом У мамы

463
00:57:27.480 --> 00:57:31.750
Михаил Непряхин: значит У где Же там моделейто

464
00:57:32.410 --> 00:57:33.420
Михаил Непряхин: Мапа

465
00:57:35.260 --> 00:57:40.960
Михаил Непряхин: а где То в какой то функции которая принимает мапу о чем расскажу он самого Принимая

466
00:57:41.610 --> 00:57:43.750
Михаил Непряхин: клир по монклиер

467
00:57:44.180 --> 00:57:49.150
Михаил Непряхин: да еще функция кли в которую тоже, вот ее недавно завезли Эту функцию

468
00:57:49.930 --> 00:57:55.300
Михаил Непряхин: а вот я говорю что она принимает значит слайс и Мапу

469
00:57:55.460 --> 00:57:59.860
Михаил Непряхин: свайся она сбрасывает все значения, на Зеровелью

470
00:58:00.550 --> 00:58:01.500
Михаил Непряхин: вот

471
00:58:01.750 --> 00:58:03.410
Михаил Непряхин: а в Мапе

472
00:58:03.620 --> 00:58:05.930
Михаил Непряхин: в ма первый забыл. Ученый Девочек

473
00:58:06.160 --> 00:58:11.300
Михаил Непряхин: так а ну она все Удаляет Она просто Делает Мапу чистый

474
00:58:11.650 --> 00:58:16.530
Михаил Непряхин: пустой вот так Что вот Есть Еще функция клип но опять, же как бы

475
00:58:16.730 --> 00:58:19.410
Михаил Непряхин: в жизни ни разу Не использовал

476
00:58:19.520 --> 00:58:21.240
Михаил Непряхин: Не Находилась где

477
00:58:25.000 --> 00:58:43.480
Михаил Непряхин: и так короче Ключом должно Быть либо булевое либо. Число с плавающей точкой Строка указатель может Быть ключом канала интерфейс массив Но с этим ключом может Быть много чего выступать главное чтобы ключ был сравниваемый а кампером был

478
00:58:44.240 --> 00:58:47.300
Михаил Непряхин: а так, есть вот Можно посмотреть

479
00:58:48.580 --> 00:58:57.000
Михаил Непряхин: Компания работа вот то есть Булы, числа строки пойнтеры Каналы массивы

480
00:58:57.280 --> 00:59:01.490
Михаил Непряхин: и структуры есть ли в них все поля камперобу,

481
00:59:02.130 --> 00:59:06.180
Михаил Непряхин: чаще всего Ключом выступает естественно стринга

482
00:59:06.780 --> 00:59:08.640
Михаил Непряхин: вот ну реже там минт

483
00:59:09.050 --> 00:59:16.790
Михаил Непряхин: и есть Особенность значит если вы очень длинную Строку туда затолкаете мало Будет работать медленнее Ну, что Там под капотом реальное сравнение идет

484
00:59:17.570 --> 00:59:24.900
Михаил Непряхин: как Бы неспроста ключе и кампанию потому что там действительно Есть, Сравнение если. Будет Очень Длинная строка будет работать медленнее

485
00:59:26.680 --> 00:59:37.120
Михаил Непряхин: так Поэтому обычно если. У вас Длинная Строка вы Не строку делаете ключом а вы От строки берете хэш и этот хэш уже в общем-то и выступает ключом

486
00:59:37.730 --> 00:59:41.250
Михаил Непряхин: хоть это хошмап Но ты уничтожил Хаш на эхе короче получается

487
00:59:42.600 --> 00:59:43.960
Михаил Непряхин: вот Так

488
00:59:46.890 --> 00:59:49.200
Михаил Непряхин: Ну, Это Если Вы там Мой типа

489
00:59:49.800 --> 00:59:51.170
Михаил Непряхин: к Ширам что-нибудь

490
00:59:52.570 --> 00:59:56.740
Михаил Непряхин: сет значит как Можно сделать свет Из мапы

491
00:59:57.170 --> 01:00:02.970
Михаил Непряхин: в качестве вэлью Мы Берем пустую структуру вот эта литература пустой структуры

492
01:00:03.900 --> 01:00:14.040
Михаил Непряхин: Она ничего Не весит на стыке и в куче тоже она не занимает памяти ноль и мы по Сути просто заталкиваем в мопу ключи

493
01:00:14.430 --> 01:00:21.830
Михаил Непряхин: и если у нас появляются дубли то есть вот у нас тон записался боб и записался а вот этот сам он все схлопнется в один

494
01:00:39.680 --> 01:00:40.500
Михаил Непряхин: а что

495
01:00:41.990 --> 01:00:43.140
Михаил Непряхин: Ммм

496
01:00:43.780 --> 01:00:44.880
Михаил Непряхин: так

497
01:00:45.870 --> 01:00:48.430
Михаил Непряхин: папа у нас и

498
01:00:48.670 --> 01:00:53.880
Михаил Непряхин: не безопасный тип с точки зрения доступа из нескольких потоков

499
01:00:54.030 --> 01:00:58.170
Михаил Непряхин: и Поэтому мама Должна защищаться ютаксом

500
01:00:58.850 --> 01:01:02.500
Михаил Непряхин: а Так и внутри Могут быть

501
01:01:02.940 --> 01:01:09.960
Михаил Непряхин: может быть рост мапы данные могут перемещаться в мапе Мы не можем брать

502
01:01:10.240 --> 01:01:11.430
Михаил Непряхин: Я и

503
01:01:11.570 --> 01:01:19.170
Михаил Непряхин: нам. Папа указателен То есть назначение из мамы не можем брать Указатель ну. Что он может Переместиться это значение

504
01:01:19.480 --> 01:01:22.730
Михаил Непряхин: и мы Не можем

505
01:01:23.750 --> 01:01:25.780
Михаил Непряхин: Конкурентный доступ Иметь к маме

506
01:01:26.210 --> 01:01:41.910
Михаил Непряхин: и иначе, она ну. Мы можем получить, гонку данных и

507
01:01:42.090 --> 01:01:50.630
Михаил Непряхин: мы должны защищать защищать нашу мапу ютаса обычно структура каша классическая это вот такая то есть у нас мы называем его кэш

508
01:01:51.060 --> 01:02:04.430
Михаил Непряхин: а у нас вот здесь вот однашесной кэш то есть находят стринговые ключи и стринговой волью и мы имеем структуру ютаса принято по соглашению

509
01:02:04.830 --> 01:02:10.180
Михаил Непряхин: какое поле. Мы защищаем над тем полем и такси размещать он в этом случае как бы

510
01:02:10.720 --> 01:02:13.590
Михаил Непряхин: а вот не так вот мы делаем его Так вот над митоксом

511
01:02:13.850 --> 01:02:16.430
Михаил Непряхин: тут, также там всплывают вопрос про

512
01:02:16.830 --> 01:02:30.260
Михаил Непряхин: эти все Выравнивания, и Так далее но по мне это как бы вот Чтение оно Само важнее даже если Там структура Будет Занимать больше места это же не То что Мы работаем с множеством экземпляров это один из земля работ

513
01:02:30.380 --> 01:02:31.650
Михаил Непряхин: что такое мюдекс

514
01:02:32.390 --> 01:02:39.560
Михаил Непряхин: Ну. Короче говоря ютокс это структура для того чтобы делать локи

515
01:02:39.830 --> 01:02:44.690
Михаил Непряхин: то есть для того чтобы работать с чем то из множества потоков

516
01:02:44.880 --> 01:02:47.240
Михаил Непряхин: и защищать

517
01:02:47.460 --> 01:02:52.570
Михаил Непряхин: Что то вот например, мапу от параллельного доступа, Одновременно

518
01:02:52.920 --> 01:03:08.610
Михаил Непряхин: как это работает Мы объявляем у нас есть тип мапы и

519
01:03:09.120 --> 01:03:14.990
Михаил Непряхин: и обращаемся к мютаксу вызываем этот лог

520
01:03:15.510 --> 01:03:18.260
Михаил Непряхин: и теперь Мы попадаем внутрь

521
01:03:18.940 --> 01:03:21.920
Михаил Непряхин: и Мы вот по ключу

522
01:03:22.280 --> 01:03:24.390
Михаил Непряхин: меняем назначение

523
01:03:25.270 --> 01:03:27.860
Михаил Непряхин: и Пока Мы Там внутри находимся

524
01:03:27.970 --> 01:03:31.720
Михаил Непряхин: больше другие потоки к нам. Внутрь попасть не могут

525
01:03:31.930 --> 01:03:37.320
Михаил Непряхин: они вот здесь застрянут они будут ждать Пока этот лок будет отпущен

526
01:03:37.720 --> 01:03:45.870
Михаил Непряхин: Мы Записали в Маму наше значение делая Монолог и вот теперь следующая грутина следующий поток

527
01:03:46.060 --> 01:04:01.400
Михаил Непряхин: а может зайти внутрь Но только один если их Там несколько вот здесь толпится То все равно только один туда внутрь попадет а второе не попадет То есть таким образом Мы можем защитить какой-то Участок памяти От Одновременного доступа

528
01:04:02.420 --> 01:04:03.510
Михаил Непряхин: Это и

529
01:04:04.490 --> 01:04:23.390
Михаил Непряхин: почему может произойти гонка данных ну что я уже говорил что здесь на самом деле не одна операция а их две тут и Чтение и запись а Раз два то это уже не может быть атамарным и поэтому Одновременно Если, Мы Будем Писать из нескольких. Грутин то может получиться, Так Что они и

530
01:04:24.830 --> 01:04:30.870
Михаил Непряхин: Ну, короче говоря гонка данных произойдет прогон Куда нас еще поговорим поподробнее

531
01:04:31.560 --> 01:04:32.390
Михаил Непряхин: попозже

532
01:04:33.230 --> 01:04:36.140
Михаил Непряхин: так ты можешь включить под капотом Индексом

533
01:04:37.590 --> 01:04:43.020
Михаил Непряхин: там очень сложно то есть смотрите как бы уроки это дорого лок это дорого

534
01:04:43.020 --> 01:04:58.560
Михаил Непряхин: потому что любая синхронизация это супер-дорогая операция то есть если можно обойтись без мидексов а часто можно обойтись без мидексов ну просто когда У нас кэш тут Какой вариант особо Нет Поэтому приходится волки использовать

535
01:04:58.610 --> 01:05:03.520
Михаил Непряхин: вот Поэтому Там под капотом ну Это отдельный свой мир. Компьютер-сайнс

536
01:05:04.660 --> 01:05:08.980
Михаил Непряхин: а миттакс чокнутая на транзакции вода ну да ну да

537
01:05:09.680 --> 01:05:10.540
Михаил Непряхин: Ммм

538
01:05:10.660 --> 01:05:11.790
Михаил Непряхин: типа того да

539
01:05:12.890 --> 01:05:14.850
Михаил Непряхин: ерунда эксцесс

540
01:05:18.440 --> 01:05:23.220
Михаил Непряхин: ну там понятно, что эээ няня есть вот в этом плане константин

541
01:05:24.350 --> 01:05:25.370
Михаил Непряхин: рандом.

542
01:05:25.430 --> 01:05:36.180
Михаил Непряхин: Когда Мы говорим про работу из нескольких грузин из множества потоков там Всегда, будет трандом. Потому что как бы э

543
01:05:36.180 --> 01:05:48.600
Михаил Непряхин: в том и прикол, чтобы Мы получили здоровую конкурентную работу должен Быть рандом Поэтому Там Как. Бы очередь да Но Она сама Не детерминированная рандомная

544
01:05:49.550 --> 01:05:54.760
Михаил Непряхин: ну если так вот вкратце, значит понимать что такое Мюдекс

545
01:05:55.520 --> 01:05:57.410
Михаил Непряхин: смотрите значит

546
01:06:01.900 --> 01:06:03.980
Михаил Непряхин: У процессора Икс Восемьдесят шесть

547
01:06:04.150 --> 01:06:12.520
Михаил Непряхин: ну Чаще его мы Все-таки имеем с архитектурой восемьдесят шесть. Хотя Сейчас тоже армия набирает популярность на серверах Но часть всего триста восемьдесят шесть.

548
01:06:19.770 --> 01:06:27.280
Михаил Непряхин: Короче у процессора Фикс восемьдесят шесть. Есть атамарные инструкции

549
01:06:28.820 --> 01:06:30.450
Михаил Непряхин: то есть прямо, на Камне

550
01:06:30.570 --> 01:06:32.900
Михаил Непряхин: прямо, вот есть атамарные инструкции

551
01:06:33.060 --> 01:06:35.080
Михаил Непряхин: Что это значит это значит Что

552
01:06:35.560 --> 01:06:36.780
Михаил Непряхин: как бы Мы

553
01:06:37.400 --> 01:06:42.280
Михаил Непряхин: Э какие то вещи можем делать но вот гарантировано тамарно

554
01:06:43.210 --> 01:06:55.160
Михаил Непряхин: и на этом построено нютекс то есть там у мюкса? Под капотом ну другого-то ничего нет а как бы то Есть когда вы хотите, железнодорожно гарантировать какую-то автоматность какую-то очередность

555
01:06:55.280 --> 01:07:01.530
Михаил Непряхин: вот вы используете вот Эти вот Низкоровневые хардварные железные

556
01:07:01.690 --> 01:07:08.530
Михаил Непряхин: Регистр специально Томарная вот и оно там вот Этом построено он такой Семафор типа один вошел

557
01:07:09.210 --> 01:07:15.570
Михаил Непряхин: и ну грубо говоря смотрите значит вот я чайка память Без этом а

558
01:07:15.690 --> 01:07:18.040
Михаил Непряхин: ноль Один, рочпромбит

559
01:07:18.220 --> 01:07:24.860
Михаил Непряхин: Один, или ноль короче говоря вот Мы все дубимся хотим, вот туда вот за Барьер пройти

560
01:07:26.120 --> 01:07:28.370
Михаил Непряхин: значит если, нолик

561
01:07:29.140 --> 01:07:31.470
Михаил Непряхин: то только кто то один из нас

562
01:07:33.700 --> 01:07:36.120
Михаил Непряхин: может поменять его на единицу

563
01:07:36.550 --> 01:07:49.490
Михаил Непряхин: и они рандомно там вот все доббится потом Раз, вот этот например, вот этого Получилось поставить единицу все эти ждут ждут пока опять, нельзя и он прошел этот поток прошел потом там, опять, подевал

564
01:07:49.780 --> 01:07:57.160
Михаил Непряхин: заменил на единицу теперь Эти тоже долбятся, в него оба Но они Не могут Одновременно поменять его

565
01:07:58.060 --> 01:08:00.700
Михаил Непряхин: кто-то Да то есть они обязательно

566
01:08:01.170 --> 01:08:11.330
Михаил Непряхин: кто-то только один может сделать эту операцию вот Она как бы атомная Она гарантирована на уровне процессора но Она и чуть помедленнее чем обычная, операция

567
01:08:11.480 --> 01:08:22.600
Михаил Непряхин: вот потом Раз, Раз, пять вот это допустим этому повезло это взял и единицу там поставил все войдет опять ждет вот короче на низком Уровне ну за типа как симу фору наверное да как-то тут научно-то называется

568
01:08:22.960 --> 01:08:23.810
Михаил Непряхин: то есть

569
01:08:24.390 --> 01:08:25.640
Михаил Непряхин: Маткатима

570
01:08:25.760 --> 01:08:41.950
Михаил Непряхин: но. Только это Не Просто и

571
01:08:42.000 --> 01:08:47.990
Михаил Непряхин: короче говоря про это про планировщик чуть попозже поговорим но вот если вы это будете понимать достаточно

572
01:08:49.750 --> 01:08:50.950
Михаил Непряхин: тактак

573
01:08:51.380 --> 01:08:52.689
Михаил Непряхин: есть еще

574
01:08:53.330 --> 01:08:54.580
Михаил Непряхин: первый метод

575
01:08:54.840 --> 01:08:55.950
Михаил Непряхин: в чем идея

576
01:08:56.420 --> 01:09:05.710
Михаил Непряхин: когда Мы берем Обычный ютокс То вот прям Все хоть, Чтение, хоть, запись вот Я вот Сюда Попал больше никто Сюда не попадет

577
01:09:06.149 --> 01:09:07.600
Михаил Непряхин: Ну, например

578
01:09:07.830 --> 01:09:16.560
Михаил Непряхин: более страшная операция, это запись а чтение она из множества Потоков, безопасная

579
01:09:17.270 --> 01:09:18.560
Михаил Непряхин: ну в чем, Идея

580
01:09:19.479 --> 01:09:20.580
Михаил Непряхин: давайте. Опять,

581
01:09:24.439 --> 01:09:27.720
Михаил Непряхин: значит какая то ячейка памяти нтв.

582
01:09:28.939 --> 01:09:31.270
Михаил Непряхин: И три потока

583
01:09:31.790 --> 01:09:33.760
Михаил Непряхин: хотят ее записать

584
01:09:34.740 --> 01:09:36.330
Михаил Непряхин: и и

585
01:09:37.100 --> 01:09:44.580
Михаил Непряхин: этот хочет ее записать в сорок Два этот хочет в четырнадцать записать этот двадцать четыре

586
01:09:45.319 --> 01:09:48.120
Михаил Непряхин: и они это все Одновременно делают

587
01:09:48.319 --> 01:09:50.710
Михаил Непряхин: а какое в итоге было от значения

588
01:09:50.870 --> 01:10:03.370
Михаил Непряхин: ну какое-то из них рандомное вот этому повезет он последний бород вот оно было Два двадцать четыре ну как бы если это просто значение поменять ну как бы и ну окей там на что-то поменяется а если это счетчик

589
01:10:03.490 --> 01:10:06.430
Михаил Непряхин: если мы хотим, не просто значения поменять

590
01:10:06.580 --> 01:10:08.250
Михаил Непряхин: хотим, плюс один сделать

591
01:10:10.370 --> 01:10:11.790
Михаил Непряхин: что, такое плюс один

592
01:10:12.940 --> 01:10:14.380
Михаил Непряхин: а здесь Запусти

593
01:10:14.510 --> 01:10:25.760
Михаил Непряхин: ноль да что, такое плюс один это не одна операция, это две операции Первая операция, мы читаем вот этот читает такой че там ноль хорошо добавь к нему один

594
01:10:25.880 --> 01:10:31.700
Михаил Непряхин: то есть первая операция прочитай ноль вторая операция запиши один видите две операции

595
01:10:32.340 --> 01:10:41.070
Михаил Непряхин: ну и тут то же самое да то есть как бы он должен сперва прочитать Что Там а потом записать и это должен еще Утра прочитать тонко записать и вот посередине может он вклинится

596
01:10:41.700 --> 01:10:43.100
Михаил Непряхин: ну грубо говоря

597
01:10:44.390 --> 01:10:49.270
Михаил Непряхин: читает этот сколько там ноль читает этот сколько там ноль читают это сколько там ноль

598
01:10:49.590 --> 01:10:51.400
Михаил Непряхин: хорошо запиши плюс один

599
01:10:52.420 --> 01:10:56.550
Михаил Непряхин: и это записал плюс один я записал один короче в итоге один

600
01:10:56.720 --> 01:10:59.120
Михаил Непряхин: а у нас счетчик да а должно быть три

601
01:10:59.590 --> 01:11:00.930
Михаил Непряхин: должно быть три

602
01:11:01.760 --> 01:11:03.170
Михаил Непряхин: записалась один,

603
01:11:03.330 --> 01:11:06.330
Михаил Непряхин: что это такое это гонка данных называется

604
01:11:10.510 --> 01:11:17.080
Михаил Непряхин: Гонка данных это когда вот несколько потоков хотят изменить а одну чайку память

605
01:11:17.650 --> 01:11:22.110
Михаил Непряхин: иногда это ок ну вот если, этот счетчик то не мог ну просто значение потеряется да и все

606
01:11:23.300 --> 01:11:28.790
Михаил Непряхин: а если, бы они хотели не По-английски гонконг, называться дэйт рейс

607
01:11:31.950 --> 01:11:33.150
Михаил Непряхин: дрейтерэйс

608
01:11:33.500 --> 01:11:39.640
Михаил Непряхин: вот а что если, бы они не писать Хотели отчитать Но Тоже, Там приходит три потока

609
01:11:41.460 --> 01:11:44.610
Михаил Непряхин: все Хотят прочитать этот прочитал. Сколько три

610
01:11:44.950 --> 01:11:47.940
Михаил Непряхин: этот прочитал сколько три я прочитал сколько три

611
01:11:48.520 --> 01:11:55.760
Михаил Непряхин: гонка данных произведений может потому что они просто читают ну допустим эти вот не Пишут Да никто Не пишет

612
01:11:55.950 --> 01:11:58.990
Михаил Непряхин: только Читают Гонки данных произойти Не может

613
01:11:59.480 --> 01:12:04.230
Михаил Непряхин: Поэтому Если У вас что-то читается из многих Потоков,

614
01:12:04.800 --> 01:12:06.000
Михаил Непряхин: То все Окей

615
01:12:06.550 --> 01:12:12.290
Михаил Непряхин: или Если У вас что. То читается из многих, потоков опишется только из одного

616
01:12:13.300 --> 01:12:15.420
Михаил Непряхин: тоже все какие гонки данных быть Не может

617
01:12:15.640 --> 01:12:21.060
Михаил Непряхин: но Если У вас что-то читается неважно из каких Потоков, отпишется например, уже из двух

618
01:12:21.690 --> 01:12:25.400
Михаил Непряхин: все гонка данных возможно. Дрейтерлис возможен,

619
01:12:25.820 --> 01:12:30.310
Михаил Непряхин: и эту чайку памяти надо защищать Мютоксон.

620
01:12:31.530 --> 01:12:44.510
Михаил Непряхин: И если Мы защищаем индексом да Мы получаем предсказуемое поведение но все начинают тормозить Поэтому либо вы Не паритесь вам Не Нужен перформанс вы просто. Лепите метокс

621
01:12:44.880 --> 01:12:53.500
Михаил Непряхин: если. Вы паритесь вам нужен перформанс вы Думаете, как это сделать так чтобы ютокс не был нужен

622
01:12:53.810 --> 01:13:07.900
Михаил Непряхин: Ну. Как есть варианты не знаю заведите два разных счетчика Пусть на каждую груру тину на каждый поток будет свой счетчик и Раз в сколько-то времени. Их синхронизируете или просто в конце работы их возьмите и

623
01:13:08.090 --> 01:13:09.250
Михаил Непряхин: ну вот как-то так

624
01:13:10.850 --> 01:13:15.580
Михаил Непряхин: так вот короче говоря так как каждый Раз, блокироваться

625
01:13:15.930 --> 01:13:17.000
Михаил Непряхин: дорого

626
01:13:17.150 --> 01:13:25.010
Михаил Непряхин: есть оптимизация называется рв мьютикс короче говоря тот же самый ютокс но и

627
01:13:25.410 --> 01:13:26.530
Михаил Непряхин: если

628
01:13:26.850 --> 01:13:30.640
Михаил Непряхин: У нас вот сюда Мы попадаем На Чтение

629
01:13:31.280 --> 01:13:36.030
Михаил Непряхин: и внутрь, уже Внутри уже кто-то Есть читающий. Читатель

630
01:13:44.320 --> 01:13:46.910
Михаил Непряхин: вот Я там Один? Есть Я читаю

631
01:13:47.190 --> 01:13:49.340
Михаил Непряхин: то здесь пометка

632
01:13:49.720 --> 01:13:50.380
Михаил Непряхин: там

633
01:13:51.430 --> 01:13:52.780
Михаил Непряхин: Внутри

634
01:13:57.140 --> 01:13:58.630
Михаил Непряхин: Внутри читают

635
01:13:59.520 --> 01:14:00.380
Михаил Непряхин: и и

636
01:14:01.140 --> 01:14:17.300
Михаил Непряхин: читатели если, здесь появляются желающие прочитать они без Проблем тоже заходят То же, все заходят и я тоже читаю я захожу я читаю захожу я читаю захожу ну, там просто, счетчик, там плюс один плюс один присоединяюсь. Читать или присоедини читатель как он хоть выглядит

637
01:14:18.100 --> 01:14:25.350
Михаил Непряхин: ну, видите вот тут Ээ павла тоже обычный мюток изнутри ну тут что то не на

638
01:14:25.780 --> 01:14:36.990
Михаил Непряхин: там ведь юкос это он пишет семафор какой тогда на самом деле У него какой то стоит и си ему фор ну короче тут, Можно не разбираться, вот А рвем ютокс это тот же самый мютекс

639
01:14:37.250 --> 01:14:42.450
Михаил Непряхин: и у Него тоже есть какой-то благ ему Фор, я так понимаю

640
01:14:43.940 --> 01:14:55.950
Михаил Непряхин: где-то тут, счетчик, есть а ну вот рейдер аккаунт вот и

641
01:14:56.410 --> 01:15:02.200
Михаил Непряхин: появляется писатель да вот он тут такой пришел э а я пишу

642
01:15:02.530 --> 01:15:14.360
Михаил Непряхин: все он говорит я хочу писать дальше мы никого не пускаем ждем пока все читатели, выйдут все читатели, вышли шучек там меньше ли заходит писатель

643
01:15:15.470 --> 01:15:17.350
Михаил Непряхин: а я пишу

644
01:15:18.290 --> 01:15:21.980
Михаил Непряхин: а вот когда вот кто-то пишет все уже никто не может зайти

645
01:15:22.440 --> 01:15:30.870
Михаил Непряхин: потом он опять вышел ну и все Пожалуйста, либо одного Писателя Пропускаем либо сколько угодно читателей он такая оптимизация

646
01:15:31.050 --> 01:15:36.940
Михаил Непряхин: То есть если У вас много много читателей То можете так. Сделать

647
01:15:56.400 --> 01:16:05.860
Михаил Непряхин: конкретные инструкции все Томики Весь пакет а томик он Видите он Тут есть какие-то сэмблерные инструкции,

648
01:16:06.160 --> 01:16:08.300
Михаил Непряхин: то и

649
01:16:09.100 --> 01:16:10.530
Михаил Непряхин: где тут, у Него

650
01:16:11.210 --> 01:16:15.270
Михаил Непряхин: короче у Него все по типам то есть

651
01:16:16.150 --> 01:16:17.480
Михаил Непряхин: Он состоит

652
01:16:17.620 --> 01:16:20.310
Михаил Непряхин: из вот значит им тридцать два

653
01:16:20.380 --> 01:16:34.120
Михаил Непряхин: Можем его загрузить Можем положить? Можем сделать Схлопнуть значение то есть это уже будет Атамарно У нас есть какое-то старое значение а есть новое. Значение вот Мы можем. Сделать сб

654
01:16:34.120 --> 01:16:47.410
Михаил Непряхин: компоэйнсвоб Тоже. Типа проверить проверить ну типа было Там Или Нет То Есть Мы Есть Разница между новым значением и старым или нет и пополучить, разлеттангу или не было

655
01:16:48.400 --> 01:16:54.390
Михаил Непряхин: аа вот ну и все и дальше там а ну вот можно его использовать просто как счетчик добавлять инкриминировать

656
01:16:54.830 --> 01:16:57.220
Михаил Непряхин: Нет Не, знаю чуток заговора

657
01:16:57.440 --> 01:17:01.600
Михаил Непряхин: итак Со всеми, остальными инт шестьдесят четыре то же самое

658
01:17:03.940 --> 01:17:08.960
Михаил Непряхин: ну. Собственно и

659
01:17:09.370 --> 01:17:14.610
Михаил Непряхин: Вот и когда Мы Работаем Вот Прям напрямую Вот с этими типами

660
01:17:15.300 --> 01:17:19.270
Михаил Непряхин: Вот Мы просто напрямую Работаем Вот с этими, атамарными

661
01:17:20.430 --> 01:17:26.070
Михаил Непряхин: Вот с этими амиками которые есть в операционной системе то есть с атамарными регистрами

662
01:17:27.890 --> 01:17:37.640
Михаил Непряхин: ну надо понимать что они как бы медленнее чем обычные регистры но тем не менее сильно быстрее чем работать с метаксом То есть как бы Медленнее метакса уже ничего Нет

663
01:17:38.030 --> 01:17:40.550
Михаил Непряхин: окно Что у ютуса под капота мотомики

664
01:17:40.780 --> 01:17:41.720
Михаил Непряхин: Вот

665
01:17:42.140 --> 01:17:50.170
Михаил Непряхин: то Есть Есть ситуация, когда можно например, с домиками работать Э Есть ситуации когда они Смеются с ними Работами если можно Избежать Этого и другого лучше избегать.

666
01:17:51.860 --> 01:17:52.780
Михаил Непряхин: Так

667
01:17:55.150 --> 01:17:57.060
Михаил Непряхин: и значит

668
01:17:57.830 --> 01:18:00.640
Михаил Непряхин: поговорим про внутреннее устройство

669
01:18:01.130 --> 01:18:02.060
Михаил Непряхин: Мапы

670
01:18:06.920 --> 01:18:12.610
Михаил Непряхин: а значит ну как я говорю мапа это компьютер сайнс и

671
01:18:13.080 --> 01:18:14.970
Михаил Непряхин: там очень много оптимизаций

672
01:18:15.850 --> 01:18:17.650
Михаил Непряхин: и много Нобелевских премий

673
01:18:17.870 --> 01:18:28.050
Михаил Непряхин: и если вы думаете, Что вы Там разберетесь досконально со всем, этим ну вы потратили очень много вечеров если вам это интересно То лишь можете на это Время потратить

674
01:18:28.380 --> 01:18:37.190
Михаил Непряхин: по Сути я вам это рассказываю только потому что на собесе могут спросить и все для работы и вот то что вам апе вы увидели и вот вам для работы этого достаточно

675
01:18:37.210 --> 01:18:49.100
Михаил Непряхин: но для того чтобы лучше на Одном языке Общаться с Тем кто. Будет вам просто Задавать нужно понимать и к сожалению. И старую. Лапу как Устроено

676
01:18:49.560 --> 01:18:52.470
Михаил Непряхин: короче как устроена Старая, мама слава богу Не очень сложно

677
01:18:53.210 --> 01:18:59.910
Михаил Непряхин: значит Есть вообще два типа Мапы Это с закрытой Адресацией

678
01:19:01.260 --> 01:19:04.740
Михаил Непряхин: закрытая Адресация и открытая Антресация

679
01:19:06.750 --> 01:19:19.290
Михаил Непряхин: короче. Вот старая мама она построена на закрытой антрепризации новой на открытой а новое это с один, двадцать четыре Которое ну вот недавно прям после нового года она появилась

680
01:19:20.450 --> 01:19:23.440
Михаил Непряхин: вот она уже похожа на как,

681
01:19:24.730 --> 01:19:28.070
Михаил Непряхин: си плюс плюс или раст

682
01:19:28.370 --> 01:19:33.250
Михаил Непряхин: ну конечно как, это сильно сказано ну приближено

683
01:19:33.940 --> 01:19:37.830
Михаил Непряхин: чуть-чуть понятно, что в плюсах или врачам будет самая быстрая

684
01:19:38.620 --> 01:19:44.080
Михаил Непряхин: вот но тем не менее тоже по сравнению с всеми другими то есть там на Третьем месте После плюсов и раста идет, гол

685
01:19:46.490 --> 01:19:53.400
Михаил Непряхин: и во-первых чтобы работать с хашмапой надо Понимать что такое хашфункция

686
01:19:56.650 --> 01:20:07.520
Михаил Непряхин: конечно функция это опять же. Компьютер сайнс короче смысл в том что Мы можем на вход. Хэшфункции подать Какой то текст

687
01:20:08.780 --> 01:20:12.050
Михаил Непряхин: А на выходе получить число

688
01:20:14.880 --> 01:20:22.540
Михаил Непряхин: и в общем-то очень много есть хороших. Функций вот эта Там криптография Там на Этом построенный весь Этот

689
01:20:23.690 --> 01:20:26.850
Михаил Непряхин: при табу Последней сети

690
01:20:28.740 --> 01:20:31.270
Михаил Непряхин: ну хорошо Вы поняли крипта вся эта

691
01:20:31.400 --> 01:20:43.300
Михаил Непряхин: в общем-то Построено на том что Мы этот Лог чейн предыдущий Текст Хашируем Получаем ключ и Используем его в следующем блоке и таким образом гарантируем Что предыдущий бог не был изменен

692
01:20:43.620 --> 01:20:45.180
Михаил Непряхин: вот и

693
01:20:45.700 --> 01:20:47.340
Михаил Непряхин: смысл в том Что

694
01:20:47.660 --> 01:20:51.270
Михаил Непряхин: хорошо надо понимать проешь функцию Что они

695
01:20:51.410 --> 01:20:57.090
Михаил Непряхин: бывают очень много разных ну там популярны это типа там и

696
01:20:57.210 --> 01:21:00.930
Михаил Непряхин: Там Двести пятьдесят шесть Или Там какая нибудь

697
01:21:01.200 --> 01:21:04.260
Михаил Непряхин: из последних которая быстро но

698
01:21:04.500 --> 01:21:06.150
Михаил Непряхин: небезопасная

699
01:21:06.280 --> 01:21:09.320
Михаил Непряхин: блин забыл ну греч вы поняли в хрусте много

700
01:21:09.850 --> 01:21:11.010
Михаил Непряхин: и и

701
01:21:11.190 --> 01:21:14.250
Михаил Непряхин: еще важно понимать прохож функции, что

702
01:21:14.710 --> 01:21:27.570
Михаил Непряхин: вот во всех языках для того чтобы оно быстро. Работало опять, же на уровне процесса прям на уровне ядра процессора есть регистры которые за один, такт

703
01:21:29.290 --> 01:21:37.460
Михаил Непряхин: а могут вам вот этот текст превратить в хэш в число то есть это прямо вот на уровне регистров одна операция что тоже круто

704
01:21:38.340 --> 01:21:41.120
Михаил Непряхин: а м что это за операция кстати

705
01:21:41.350 --> 01:21:43.460
Михаил Непряхин: и Это

706
01:21:43.690 --> 01:21:45.370
Михаил Непряхин: ай эмди

707
01:21:45.520 --> 01:21:46.630
Михаил Непряхин: Операция

708
01:21:47.090 --> 01:21:52.460
Михаил Непряхин: Ну так уж для общего развития он короче как Это переводится типа сингл.

709
01:21:52.600 --> 01:21:57.740
Михаил Непряхин: Эллин Строкшан Ну типа одна, инструкция и мультиполу

710
01:21:58.180 --> 01:21:58.910
Михаил Непряхин: А и

711
01:21:59.530 --> 01:22:00.590
Михаил Непряхин: ади

712
01:22:01.140 --> 01:22:03.390
Михаил Непряхин: Где- Я Не знаю как

713
01:22:03.550 --> 01:22:05.370
Михаил Непряхин: Э семь ди

714
01:22:09.530 --> 01:22:15.690
Михаил Непряхин: Мультик полан Дедарита Да сингл эстракшн Мультиплика короче говоря и

715
01:22:17.480 --> 01:22:31.200
Михаил Непряхин: за один такт Мы делаем много Операций логично что хэш взятие хорошая довольно таки ну? Трудная инструкция да как бы но вот в в процессорных процессорах эта инструкция есть

716
01:22:31.700 --> 01:22:40.360
Михаил Непряхин: а мы Сейчас еще нам понадобится это семь Девочек немножечко подробно разберем значит как она работает Ну смотрите задумали задумали Задву

717
01:22:40.470 --> 01:22:43.510
Михаил Непряхин: Мы гаали Разговаривать

718
01:22:44.200 --> 01:23:02.520
Михаил Непряхин: задумывались, ли вы о Том Что вот например У нас Раньше, было тридцать два Разряда архитектура Потом она стала шестидесяти Четырехразрядная и вот там у них свой сумасшедший текущий налог шестидесяти Четырехразрядная Дам то Есть это используется ну шестьдесят четыре разряда это восемь,

719
01:23:05.590 --> 01:23:07.200
Михаил Непряхин: восемь байт,

720
01:23:07.350 --> 01:23:26.810
Михаил Непряхин: вот и ну вот у нас инт вот этот наш инт вот он шестьдесят четыре, бита и есть ну и его указатель Наш, Вот он Тоже, шестьдесят четыре Обита есть Или восемь байд отсюда восемь бойцамирыцев А чего они пошли дальше почему Не пошли дальше почему не сто Двадцать восемь, почему не двести пятьдесят шесть почему не пятьсот

721
01:23:26.810 --> 01:23:28.690
Михаил Непряхин: на двенадцать этих регионов

722
01:23:29.550 --> 01:23:38.390
Михаил Непряхин: потому что оказалось что ну не надо потому что ну чаще всего мы отработаем шестьдесят четырьмя битами и нам, хватает нам, удобно нас устраивает

723
01:23:38.520 --> 01:23:51.810
Михаил Непряхин: но в общем-то ребята из винтау Рэмдэ пошли, помы зинтом в Это винтере придумали пошли, дальше и подумали что все Таки, неплохо было бы на Камне процессора Иметь, такие инструкции

724
01:23:52.090 --> 01:23:57.140
Михаил Непряхин: и вот вот эти вот инструкции Которые работают вот с этими,

725
01:23:57.490 --> 01:24:13.070
Михаил Непряхин: то есть машинное слово в икс восемьдесят шесть оно вот шестьдесят четыре, Обита Или восемь байд но На камне есть и Ста Двадцати восьми и двухста пятидесяти шести и Пятьсот двенадцатиразрядные регистры

726
01:24:13.620 --> 01:24:14.650
Михаил Непряхин: то есть

727
01:24:14.780 --> 01:24:18.400
Михаил Непряхин: что это значит это значит что Вот мы за Один такт

728
01:24:18.700 --> 01:24:24.680
Михаил Непряхин: обрабатываем шестьдесят четыре Бита и за Один Так мы Можем вам работать и сто Двадцать восемь и даже Пятьсот двенадцать

729
01:24:24.800 --> 01:24:33.190
Михаил Непряхин: То Есть Прям Реально Там могут быть память Область на Камне процессора У которой Вот редисы Которые работают Вот с этим Количеством битов

730
01:24:33.420 --> 01:24:42.670
Михаил Непряхин: и вот собственно говоря благодаря тому что такие регистры есть Мы можем вот на камне за один такт получить Хэш из какого-то текста

731
01:24:43.700 --> 01:24:46.660
Михаил Непряхин: вот вот эти операции называются эса

732
01:24:47.400 --> 01:24:51.700
Михаил Непряхин: эмди или то же самое есть и

733
01:24:52.260 --> 01:25:05.480
Михаил Непряхин: авикс и авиикс два то есть просто авикс это сто двадцать восемь выезд два это двести пятьдесят Шесть и есть Вы икс пятьсот двенадцать дальше уже не стали париться, просто начали. Звать по разрядам это Вот Это Вот

734
01:25:05.540 --> 01:25:16.200
Михаил Непряхин: значит Ммм очень как бы Это Популярно когда Мы Работаем с нейросетями Или с какими-то эффективными базами данных То Есть Вот здесь Мы работаем уже с векторами

735
01:25:17.000 --> 01:25:32.770
Михаил Непряхин: в гошке у нас нет доступа из языка к этим регистрам то есть у нас Только если вы знаете Осэмблер вы Там может Чего нибудь написать Но и То скорее если У вас не получится потому Что Это очень сложно вот Но в языке естественно где можно они используются

736
01:25:32.840 --> 01:25:50.130
Михаил Непряхин: и Мы Хотим, какой-нибудь Ключ хашировать и посмотрим У процесса есть и

737
01:25:50.130 --> 01:25:53.530
Михаил Непряхин: Три Такта четыре. Такта процесса используют летушу ту же самую получить,

738
01:25:54.080 --> 01:26:00.810
Михаил Непряхин: но это первая оптимизация, которая промоучена которая и

739
01:26:02.230 --> 01:26:09.850
Михаил Непряхин: вот значит получили Мы этот Наш хэш результатом работы хш является число

740
01:26:10.260 --> 01:26:16.970
Михаил Непряхин: а дальше допустим у нас есть десять ключей мапе

741
01:26:18.800 --> 01:26:24.010
Михаил Непряхин: и мы Хотим, завести массив

742
01:26:26.140 --> 01:26:29.710
Михаил Непряхин: из десяти этих ключей

743
01:26:32.820 --> 01:26:36.160
Михаил Непряхин: и вот когда мы получаем Какой нибудь ключ

744
01:26:36.370 --> 01:26:38.190
Михаил Непряхин: допустим ключ сорок два

745
01:26:38.700 --> 01:26:40.980
Михаил Непряхин: ну я не знаю давайте те кто возьмем ключ

746
01:26:41.150 --> 01:26:43.020
Михаил Непряхин: ключ хэллоу

747
01:26:44.720 --> 01:26:48.240
Михаил Непряхин: получили ключ прогнали через эту функцию

748
01:26:48.890 --> 01:26:50.800
Михаил Непряхин: получили число

749
01:26:51.130 --> 01:26:58.930
Михаил Непряхин: какое То число ну там оно в Шестнадцатилечной системе там с Этими Семьей и и Вот как нам.

750
01:26:59.190 --> 01:27:09.290
Михаил Непряхин: А в нужно я чайку массива нашего попасть то есть мы хотим, адресовываться по этому Населению мы берем Остаток отделения то есть там делим по модулю

751
01:27:09.520 --> 01:27:17.940
Михаил Непряхин: на десять вот у нас здесь ключей вот Мы на десять и делим берем остаток отделения на десять и получаем одну,

752
01:27:18.110 --> 01:27:21.090
Михаил Непряхин: из ячеек допустим Два

753
01:27:21.440 --> 01:27:23.310
Михаил Непряхин: или допустим восемь

754
01:27:23.820 --> 01:27:35.220
Михаил Непряхин: и значит оказываемся вот здесь вот и значит наш, ключ мы помещаем сюда мы сюда помещаем хло и ну это наш, ключ а значение бот ворлд

755
01:27:37.210 --> 01:27:38.780
Михаил Непряхин: алло сюда помещаем

756
01:27:39.020 --> 01:27:41.830
Михаил Непряхин: тут же значение помещаем ну там такая

757
01:27:46.880 --> 01:27:48.640
Михаил Непряхин: значение ворлд

758
01:27:52.170 --> 01:27:57.800
Михаил Непряхин: э когда к нам, Придут читать то есть вот это Мы записали да когда к нам придут читать

759
01:27:58.610 --> 01:28:09.620
Михаил Непряхин: типа Говорят кошмары отдай мне что у тебя Там есть у тебя ключ хэллоу или Нет Мы тоже, берем этот хэллоуин прогоняем черезш Функцию получаем Число

760
01:28:09.620 --> 01:28:22.810
Михаил Непряхин: берем остаток отделения на Десять получаем Число какое то же самое восемь идем По этому массиву Смотрим есть У нас Массиве чего-то По восемь есть Смотрим что там хэллоу проверяем хэллоуин хэллоуин

761
01:28:23.270 --> 01:28:25.400
Михаил Непряхин: достаем значение и Отдаем

762
01:28:25.520 --> 01:28:28.120
Михаил Непряхин: То есть Это так работает

763
01:28:28.260 --> 01:28:29.180
Михаил Непряхин: хшмапа

764
01:28:29.490 --> 01:28:31.120
Михаил Непряхин: Вот Новый Год так и работает

765
01:28:31.540 --> 01:28:33.840
Михаил Непряхин: ну Работал. Раньше. Сейчас По-другому

766
01:28:34.290 --> 01:28:37.240
Михаил Непряхин: А почему всего лишь десять ключей

767
01:28:37.740 --> 01:28:48.210
Михаил Непряхин: а потому что. У нас здесь вот могут ну у нас же коллизии происходят да то Есть у нас много что. Разных ключей мы можем Ведь в разное место попадать

768
01:28:48.260 --> 01:29:00.460
Михаил Непряхин: вот но реально когда вы просто там создаете не знаю на сто ключей хэшмапу вы примерно вот такую и получаете небольшой Массивчик

769
01:29:00.980 --> 01:29:06.670
Михаил Непряхин: а небольшой Массивчик с указателями на связанные списки

770
01:29:06.850 --> 01:29:10.010
Михаил Непряхин: то есть здесь может быть до восьми элементов

771
01:29:11.180 --> 01:29:12.400
Михаил Непряхин: хранится

772
01:29:12.720 --> 01:29:20.540
Михаил Непряхин: и грубо говоря мы толкаем в кошмапу эти значения и вот они тут просто помещаются

773
01:29:21.430 --> 01:29:30.270
Михаил Непряхин: аа, и таким Образом разруливаются коллизию если Место, кончается заводится еще один вот и помещается уже сюда

774
01:29:30.810 --> 01:29:36.820
Михаил Непряхин: вот если Мы хотим, удалить ну так же точно идем смотрим есть удаляем удалили

775
01:29:37.660 --> 01:29:51.400
Михаил Непряхин: и еще один кейс если Мы превысили число, вот этих вот ну во-первых число, Загрузку вот этих вот бакетов это называется, хшмапа на бакетах вот эта штука называется, бакет

776
01:29:53.020 --> 01:30:01.530
Михаил Непряхин: и короче говоря если загрузка бакетов больше шести с половиной в Среднем на бакет

777
01:30:01.850 --> 01:30:05.700
Михаил Непряхин: то происходит удвоение вот этого массива

778
01:30:06.480 --> 01:30:20.480
Михаил Непряхин: и все данные которые здесь Были постепенно переезжают в Новый Э в новую хашмапу То есть Реально У нас происходит вот Мы Перевыделяем память два раза

779
01:30:20.620 --> 01:30:26.830
Михаил Непряхин: и У нас и старый Остается массив с Бакетами и Новый с Новыми. Пакетами

780
01:30:26.830 --> 01:30:49.220
Михаил Непряхин: и при Каждом удалении или в Ставке Мы Постепенно из Старого Переносим в новый а и

781
01:30:49.220 --> 01:30:59.550
Михаил Непряхин: хотя бы чтобы поняли как оно очень примерно работает то есть как бы если вы чуть не понимаете тогда Еще нормально вам не партий То есть как бы Даю просто, минимально Чтобы хоть, чуть-чуть Быть в Контексте

782
01:31:00.230 --> 01:31:02.780
Михаил Непряхин: Так Это массив

783
01:31:03.590 --> 01:31:06.000
Михаил Непряхин: а в основе Или другая структура в основе массив

784
01:31:06.510 --> 01:31:14.260
Михаил Непряхин: значит как можно думать. О мапе Так Чтобы вот прямо Более менее

785
01:31:16.190 --> 01:31:25.190
Михаил Непряхин: вкусить опять Же Грозят да Дата сайнс Да как бы тут прямо Лучше мы Человечество Над Этим Работают Поэтому То Что Вы тут ходу Не понимаете как бы это нормально

786
01:31:25.610 --> 01:31:34.030
Михаил Непряхин: а в чем идея значит вот у Нас есть бесконечно длинный слайс Бесконечный длинный слайс

787
01:31:34.260 --> 01:31:41.790
Михаил Непряхин: А слайс Же всем хорош правда слась очень хорош у Него Можно быстро, аа в конец добавить

788
01:31:41.950 --> 01:31:42.860
Михаил Непряхин: круто

789
01:31:43.080 --> 01:31:54.240
Михаил Непряхин: а если, бы заранее память завоцировали вот у вас тут копайте это лен вы вообще быстро, Тут Раз, расставлять круто вообще круто Реально круто но когда вы хотите. Найти что. То в слайся

790
01:31:54.640 --> 01:32:07.320
Михаил Непряхин: вам же. Придется вас Опираться у атэн вам придется весь, этот слайс просмотреть чтобы найти, и сравнить типа это То что вам надо Нет это То что надо Нет дальше дальше медленно

791
01:32:07.810 --> 01:32:17.590
Михаил Непряхин: идея в чем Давайте оставим слайс Но сласть нам Нравится нули массив да когда их асфальт под капотом массив значит Давайте оставим этот массив

792
01:32:17.830 --> 01:32:32.490
Михаил Непряхин: но придумаем как. Же угадывать вот чтобы вот не с самого Начала его проходить ну, потому. Что у нас вот блины на миллион на миллион элементов вот этот вот массив ну не хотим, ну медленно будет каждый Раз, если, мы будем, искать

793
01:32:32.810 --> 01:32:38.450
Михаил Непряхин: давайте как нибудь придумаем так чтобы сразу прыгнуть в нужное место,

794
01:32:38.810 --> 01:32:41.290
Михаил Непряхин: и вот немножечко вот здесь поискать

795
01:32:41.460 --> 01:32:46.120
Михаил Непряхин: Согласитесь будет сильно быстрее чем по всему искать вот мы всего лишь такого. Здесь ищем

796
01:32:47.080 --> 01:32:50.470
Михаил Непряхин: и вот как Раз, хэш-функция

797
01:32:51.000 --> 01:33:04.110
Михаил Непряхин: она позволяет Нам вот Прыгнуть в нужное место, и там немножечко поинтересоваться то есть у нас итерация все равно есть присылаешь у нас вот этот изначальный базовый он небольшой мы прыгаем в нужное место,

798
01:33:04.270 --> 01:33:06.920
Михаил Непряхин: а вот здесь у нас уже Массив

799
01:33:07.050 --> 01:33:15.810
Михаил Непряхин: и Мы Здесь Просто сравниваем это То что нам надо Нет это То что нам надо нет это То что нам надо да А То Что нам надо Берем Вот этот Ключ Или когда Мы Вставляем чего-нибудь

800
01:33:16.070 --> 01:33:33.980
Михаил Непряхин: А есть пустое место, Не, занято есть пустое место, нет занято есть пустое место, не заняты есть пустое место, да вставляем сюда сюда ключ сюда замечания вот То есть Как бы идея хэшмапы это как бы как бы нам вот переиспутыв же бы вот Мы все Таки работали со слайсом

801
01:33:34.370 --> 01:33:38.950
Михаил Непряхин: но вот минимизировать вот это вот Чтение, Там

802
01:33:39.060 --> 01:33:41.660
Михаил Непряхин: запись чтобы Правильное Место, прыгать,

803
01:33:43.630 --> 01:33:46.160
Михаил Непряхин: вот значит здесь

804
01:33:46.690 --> 01:33:50.760
Михаил Непряхин: какие-то Вопросы есть глобальные Или более-менее Понятно

805
01:33:52.230 --> 01:33:57.020
Михаил Непряхин: да свой Асфальт Э Грубо это слайс слайсов

806
01:33:57.240 --> 01:33:59.580
Михаил Непряхин: но и

807
01:34:00.170 --> 01:34:07.400
Михаил Непряхин: с Помощью магии Хэш функции. Прыгнуть прыгнуть изначально в правильный слайс

808
01:34:07.890 --> 01:34:09.570
Михаил Непряхин: и потом искать послать

809
01:34:10.180 --> 01:34:26.150
Михаил Непряхин: Поэтому как бы в общем сложность Э как бы смотрите перебор чтения из массива это оу аен да то есть вот сколько элементов в массиве столько мы будем читать если, тут миллион У Год сложный Год миллионда

810
01:34:26.760 --> 01:34:30.230
Михаил Непряхин: а У хэшмапы Это Константа

811
01:34:31.070 --> 01:34:46.210
Михаил Непряхин: и вот в чем как бы силах и шмапы что в Среднем У нас константный доступ Константная запись к инстанции удаление то Есть как бы в Этом преимущество минус в том что это все Таки Монстровная структура по сравнению с вайсом

812
01:34:47.180 --> 01:34:49.410
Михаил Непряхин: Не очень понял зачем переиметь значение

813
01:34:50.390 --> 01:34:53.910
Михаил Непряхин: А как Же если Так вкратце

814
01:34:54.640 --> 01:35:00.630
Михаил Непряхин: Там есть оптимизация вот когда Мы Прыгаем в нужное Место, нашего салайса условного

815
01:35:00.880 --> 01:35:02.200
Михаил Непряхин: Мы и

816
01:35:04.420 --> 01:35:06.250
Михаил Непряхин: все равно должны

817
01:35:07.540 --> 01:35:11.150
Михаил Непряхин: скажи в чем суть когда вы получаете хэш

818
01:35:11.890 --> 01:35:14.870
Михаил Непряхин: и сравнивайте похшу значение

819
01:35:15.980 --> 01:35:25.890
Михаил Непряхин: могут Быть важны положительные результаты то есть вы можете сравнить похшу и понять что да есть значение есть а потом

820
01:35:25.930 --> 01:35:40.940
Михаил Непряхин: вы все равно вынуждены сравнивать ключ как есть вот если у вас вот Был хэллоуин вы все равно вынуждены строго сравнить вот ключ, который в хэшмапе он хэллоу или не хэллоу потому Что

821
01:35:41.050 --> 01:35:42.380
Михаил Непряхин: хэш

822
01:35:42.590 --> 01:36:00.920
Михаил Непряхин: может быть с коллизией ну как бы в хшмын-идеальных не бывает уволи Функций из коллизии. Поэтому вы не можете закладываться на Сравнение только хэша вы обязаны, сравнить вот значение в лоб как Есть и это во всех кошмах Так то есть тут, Маги никакой Нет

823
01:36:01.720 --> 01:36:03.310
Михаил Непряхин: Эммм

824
01:36:03.490 --> 01:36:04.810
Михаил Непряхин: Это Понятно

825
01:36:05.660 --> 01:36:10.530
Михаил Непряхин: так а Это Отражается конкретно в Голову. И на руках Есть несколько плюс минус У всех то же самое

826
01:36:10.650 --> 01:36:22.240
Михаил Непряхин: а Возможно упустил Я вообще похоже много чего пустил ну короче это хрешма сложная Тема чисто вожу Примерно в контекст Бо Там просто

827
01:36:22.800 --> 01:36:42.300
Михаил Непряхин: три лекции на Ютубе посмотрите все равно Ничего Не поймете но какой-то контекст останется Нет смысла упарываться разбираться как оно прямо до конца работает просто вот важно понять Что есть. Хорошая функция с помощью которой прыгаем в правильное Место, а потом иерируемся один фиг по маленькому свойству. Внутри

828
01:36:45.710 --> 01:36:51.250
Михаил Непряхин: а то Есть, мы не доверяем результату Хорошо когда получаем минт но он даже не Могу

829
01:36:53.690 --> 01:37:06.520
Михаил Непряхин: и мы вообще когда сравниваем похшу мы просто примерное Место, Находим а потом Хоть как и

830
01:37:07.330 --> 01:37:18.100
Михаил Непряхин: и короче эта мама вот которую я уже показал на бакетор она там вообще Год реализации типа чего-то тысяч там

831
01:37:18.240 --> 01:37:19.700
Михаил Непряхин: девятьсот

832
01:37:20.070 --> 01:37:29.330
Михаил Непряхин: пятьдесят седьмой чего типа того ключу с очень старая тема но простая ну? Как простая относительно. Простая как ведь все равно не очень простая но

833
01:37:29.630 --> 01:37:46.280
Михаил Непряхин: если вы до этого кошма пределы не имели Все равно уже офигели от того чего тут как бы, наворотили и это я вам Еще без всех оптимизаций рассказываю просто про верхнего уровня и

834
01:37:46.810 --> 01:37:57.140
Михаил Непряхин: ну и после этого вы можете лекции Там начать смотреть на Ютубе и чего-то тоже более-менее поймете опять Же если, хотите, в Принципе можете даже так все оставить на собеседовании чего-нибудь скажете

835
01:37:57.320 --> 01:38:08.300
Михаил Непряхин: неглупая уже хорошо так получается мама это свазис сальсов условно да а первый слайс попадаем за счет остатка отделения их ключа верно да

836
01:38:08.780 --> 01:38:12.790
Михаил Непряхин: верно если это поняли уже победа а уже уже хорошо

837
01:38:12.950 --> 01:38:17.860
Михаил Непряхин: так а ну у меня и в этом и была цель, но вот эта цель, была об этом рассказать

838
01:38:17.970 --> 01:38:24.090
Михаил Непряхин: а это и другие закрытые ассоциации с его стороны да да конечно конечно да как бы Их два принципиальных

839
01:38:24.550 --> 01:38:30.570
Михаил Непряхин: вот первый рассказал и это Так было до версии один двадцать четыре

840
01:38:31.990 --> 01:38:41.850
Михаил Непряхин: а Наука идет вперед значит и есть оптимизация Даже этого считая как Можно еще

841
01:38:44.540 --> 01:38:46.110
Михаил Непряхин: побыстрее с этим работать

842
01:38:46.480 --> 01:38:53.880
Михаил Непряхин: но посложнее петя тут как бы оптимизация как бы скорость Всегда, путем усложнения достигается

843
01:38:55.140 --> 01:39:05.370
Михаил Непряхин: Поэтому тут Всегда, баланс нужен вот Поэтому вгу выбрали такую простую реализацию на бакетах То Есть вот эта реализация называется на бакетах вот Это вот бакет

844
01:39:05.880 --> 01:39:09.780
Михаил Непряхин: вот она этот обычный слайс массив

845
01:39:10.210 --> 01:39:11.680
Михаил Непряхин: который указывает антимагнит.

846
01:39:11.830 --> 01:39:15.490
Михаил Непряхин: Короче сальс с Лайф с малисов с

847
01:39:15.890 --> 01:39:18.340
Михаил Непряхин: с помощью хайфункции прыгал в правильное Место,

848
01:39:19.320 --> 01:39:21.680
Михаил Непряхин: и Это называется

849
01:39:22.160 --> 01:39:24.730
Михаил Непряхин: открытая закрытая Ансация

850
01:39:25.710 --> 01:39:34.880
Михаил Непряхин: Есть другой подход второй собственно их два то есть второй подход называется открытая антресация что это такое

851
01:39:35.870 --> 01:39:39.320
Михаил Непряхин: значит есть у нас

852
01:39:41.090 --> 01:39:43.760
Михаил Непряхин: опять, массив а как иначе

853
01:39:45.250 --> 01:39:51.420
Михаил Непряхин: и и

854
01:39:52.170 --> 01:40:01.690
Михаил Непряхин: и ну естественно Сначала Тоже. Самое У нас есть Хорошая функция мы в нее пропускаем наш ключ

855
01:40:01.840 --> 01:40:04.200
Михаил Непряхин: получаем Какой то

856
01:40:05.030 --> 01:40:05.860
Михаил Непряхин: ну

857
01:40:06.120 --> 01:40:07.800
Михаил Непряхин: пол путем число

858
01:40:09.270 --> 01:40:14.230
Михаил Непряхин: а Делим по модулю получаем остаток отделения

859
01:40:14.800 --> 01:40:28.390
Михаил Непряхин: и Делим на Количество Я Человек в массиве ну например, изначально У нас Там не знаю и

860
01:40:28.590 --> 01:40:32.180
Михаил Непряхин: сорок два прыгаем. В сорок два

861
01:40:32.640 --> 01:40:34.630
Михаил Непряхин: Куда сюда здесь на сорок два

862
01:40:35.800 --> 01:40:40.690
Михаил Непряхин: хотим, вставить хотим, вставить проверяем есть ли там что то

863
01:40:40.790 --> 01:40:44.140
Михаил Непряхин: По индексу сорок Два в этом нашем связи

864
01:40:44.620 --> 01:40:47.450
Михаил Непряхин: Допустим Там Ничего Нет ну вставили

865
01:40:47.850 --> 01:40:48.810
Михаил Непряхин: поставили

866
01:40:51.170 --> 01:40:53.700
Михаил Непряхин: здесь внутри такая же тема

867
01:40:54.130 --> 01:40:55.420
Михаил Непряхин: Окей

868
01:40:58.340 --> 01:40:59.370
Михаил Непряхин: а Вэлью

869
01:40:59.760 --> 01:41:02.130
Михаил Непряхин: ставили наш, ключ встали на шею

870
01:41:02.340 --> 01:41:07.250
Михаил Непряхин: зачем Мы вставили ключ как, есть Вот этот ключ который пришел ставили как, есть

871
01:41:07.650 --> 01:41:14.780
Михаил Непряхин: потому. Что прохожу Мы не Можем сравнить Потому Что могут быть коллизии. Поэтому Мы Всегда, Храним ключ как есть

872
01:41:15.460 --> 01:41:21.130
Михаил Непряхин: чтобы потом сравнить Наш исходный ключ он вообще Совпадает с этим это, точно то что. Мы ищем

873
01:41:21.940 --> 01:41:22.820
Михаил Непряхин: вот

874
01:41:23.400 --> 01:41:25.210
Михаил Непряхин: а сажом

875
01:41:25.360 --> 01:41:26.050
Михаил Непряхин: ну а

876
01:41:27.070 --> 01:41:31.440
Михаил Непряхин: дальше Мы опять, хотим, вставить другой ключ

877
01:41:32.720 --> 01:41:42.460
Михаил Непряхин: и черт побери Этот ключ вызывает коллизию и результат функции. Х функций снова сорок Два

878
01:41:42.800 --> 01:41:46.920
Михаил Непряхин: мы снова Идем по этому. Адресу Смотрим а здесь уже занят

879
01:41:48.010 --> 01:41:51.430
Михаил Непряхин: а хорошо. Значит Мы прыгаем и

880
01:41:51.650 --> 01:41:57.140
Михаил Непряхин: как бы что Делать вот в прошлом случае Мы просто тут, добавляли коллизию да и все

881
01:41:58.260 --> 01:42:03.420
Михаил Непряхин: а здесь Нет здесь не Так значит здесь Мы говорим хорошо

882
01:42:03.850 --> 01:42:11.440
Михаил Непряхин: прибавим единицу вот к этому значению Раз, тут, Занята прямая единицу вот индек сорок три вставим сюда

883
01:42:13.060 --> 01:42:16.280
Михаил Непряхин: а ну и все вставили всекий

884
01:42:16.680 --> 01:42:22.890
Михаил Непряхин: как. Читать хотим, прочитать значит говорим, вот вот Этот Ключ Мы хотим, прочитать Которые То. Что ставили

885
01:42:23.000 --> 01:42:26.130
Михаил Непряхин: а читаем получаем результат сорок Два

886
01:42:26.470 --> 01:42:27.840
Михаил Непряхин: прыгаем сюда

887
01:42:28.050 --> 01:42:29.140
Михаил Непряхин: занята

888
01:42:29.420 --> 01:42:38.920
Михаил Непряхин: хорошо смотрим этот Ключ тот который нам Нужен Нет Не, тот это Другой, Ключ хорошо значит прыгаем где вам плюс, один

889
01:42:39.200 --> 01:42:44.200
Михаил Непряхин: смотрим этот ключ тот который нам, Нужен да тот все отлично Мы нашли,

890
01:42:45.500 --> 01:43:00.290
Михаил Непряхин: а что если тут все занято тут Не знаю Там до пятидесяти пяти, Все занято Ну Вот Мы Так и будем прыгать. Плюс Один плюс Один плюс Один, плюс Один и занято занято занято занято а вот здесь свободно вставили

891
01:43:00.620 --> 01:43:02.280
Михаил Непряхин: потом Хотим? Прочитать

892
01:43:02.640 --> 01:43:09.240
Михаил Непряхин: то же читаем то Не, то то Не, то то Не, то То То То То То То То То То То То не То достали

893
01:43:10.240 --> 01:43:20.600
Михаил Непряхин: вот Это метод открытой анализации вот он так, работает плюс в том что у нас Вот этот изначальный. Массив он более длинный

894
01:43:21.660 --> 01:43:27.520
Михаил Непряхин: и плюс в том что мы тут он Все-таки побыстрее работает

895
01:43:29.150 --> 01:43:35.860
Михаил Непряхин: и вопрос почему же, он работает быстрее

896
01:43:37.180 --> 01:43:39.170
Михаил Непряхин: потому что у нас

897
01:43:39.500 --> 01:43:40.250
Михаил Непряхин: аа

898
01:43:44.430 --> 01:43:45.490
Михаил Непряхин: здесь

899
01:43:46.150 --> 01:43:48.900
Михаил Непряхин: в гошке реализация один фиг Пакеты

900
01:43:49.730 --> 01:43:51.920
Михаил Непряхин: не могу не можем этот выйти

901
01:43:52.660 --> 01:43:55.420
Михаил Непряхин: и их тут восемь только штук может быть

902
01:43:56.120 --> 01:43:57.700
Михаил Непряхин: ну как в восемь и все

903
01:43:58.100 --> 01:44:05.540
Михаил Непряхин: Если в предыдущем случае, вот здесь вот У нас когда мы здесь запомнились давайте, здесь же будем, показать как было Раньше,

904
01:44:05.750 --> 01:44:18.990
Михаил Непряхин: за пол вот мы прыгаем сюда добавляем сюда еще раз какая-то кризиса произошла Добавляем сюда коллизия произошла Добавляем сюда сюда коллизия произошла уже все занято не беда

905
01:44:19.510 --> 01:44:21.930
Михаил Непряхин: Добавляем Еще один такой же бакет

906
01:44:22.140 --> 01:44:23.770
Михаил Непряхин: тоже на восемь элементов

907
01:44:23.950 --> 01:44:40.460
Михаил Непряхин: ну и все и вот каждый Раз, когда у нас кризис происходит мы тут бог растем простым растем и разум растет добавляем эти Пакеты Вот значит Это Раньше, Так было тут, подумали Блин все Таки короче Так Не Нравится Только Вот один вакет здесь Хотим, но все равно бакин хотим, чтобы здесь было максимум восемь элементов

908
01:44:41.150 --> 01:44:42.320
Михаил Непряхин: и и

909
01:44:42.420 --> 01:44:48.250
Михаил Непряхин: эээ Если уж они заняты ну ладно делам плюс один нарусо вам плюс один и попадаем отсюда

910
01:44:48.800 --> 01:44:55.670
Михаил Непряхин: и способов на самом деле как именно, в гошке сделано там Вот эта линейная называется пробация и

911
01:44:55.780 --> 01:45:12.030
Михаил Непряхин: там эта функция пробаций ну пробо типа проверка Есть что-то или нет Есть квадратичные еще какие-то разные какой конкретный здесь алгоритм в какое место. Прыгать он и

912
01:45:12.030 --> 01:45:27.550
Михаил Непряхин: видите как бы он кучкует все ключи в одном месте и

913
01:45:29.080 --> 01:45:31.490
Михаил Непряхин: и и

914
01:45:31.880 --> 01:45:33.950
Михаил Непряхин: где оптимизация

915
01:45:34.350 --> 01:45:40.060
Михаил Непряхин: а оптимизация здесь в том что Вот у нас Вот здесь восемь элементов Возможно

916
01:45:40.950 --> 01:45:43.180
Михаил Непряхин: и вот произошла ситуация,

917
01:45:43.440 --> 01:45:45.140
Михаил Непряхин: а Мы

918
01:45:45.390 --> 01:45:48.760
Михаил Непряхин: Аа читаем мечтаем получаем сорок Два,

919
01:45:49.660 --> 01:45:51.820
Михаил Непряхин: Идем сюда сорок вторую, Чайку,

920
01:45:52.410 --> 01:46:04.460
Михаил Непряхин: и нам теперь. Мы попали в нужное место, нам нужно вот Это вот сравнить на наш, ключ вот наш, наш, наш, ключ и Еще здесь восемь ключей все заполнены

921
01:46:04.630 --> 01:46:14.450
Михаил Непряхин: чтобы понять где у нас нашей, вэлью которая нам надо Мы должны восемь операций сравнения с ключом сделать

922
01:46:14.670 --> 01:46:18.970
Михаил Непряхин: ну типа восемь Такктов процесса рада. Условно а может Быть и шестнадцать

923
01:46:19.520 --> 01:46:21.660
Михаил Непряхин: короче долго

924
01:46:22.610 --> 01:46:25.830
Михаил Непряхин: и здесь к нам. Приходят на помощь

925
01:46:25.980 --> 01:46:29.460
Михаил Непряхин: семь ди инструкции, с амди

926
01:46:30.200 --> 01:46:36.590
Михаил Непряхин: и короче говоря У нас Здесь есть Заголовочный шестидесяти четырехбитный

927
01:46:37.480 --> 01:46:39.150
Михаил Непряхин: а

928
01:46:39.890 --> 01:46:41.300
Михаил Непряхин: Кусочек памяти

929
01:46:41.630 --> 01:46:54.070
Михаил Непряхин: и короче говоря Мы с Помощью Него Помазки опять Же как бы там Посмотрите Веду. Себя я Сейчас Не буду рассказывать и Так тут наверное мозг Вынес

930
01:46:54.220 --> 01:47:01.530
Михаил Непряхин: короче смысл в том Что Мы с помощью семь ди и операций, можем за один такт проверить и восемь ключей

931
01:47:02.300 --> 01:47:04.900
Михаил Непряхин: и за счет этого получить ускорение,

932
01:47:05.510 --> 01:47:14.090
Михаил Непряхин: в прошлой мапе до версии один двадцать четыре невозможно было использовать осаем Две операции потому, что Там ну вот так было Построено

933
01:47:14.270 --> 01:47:15.610
Михаил Непряхин: а здесь можно

934
01:47:15.710 --> 01:47:20.220
Михаил Непряхин: и по Сути его за счет этого Мы получили Ускорение, в новой Мапе

935
01:47:21.820 --> 01:47:35.030
Михаил Непряхин: аа и еще тысяча, Оптимизаций Которые здесь есть значит вот это я рассказал только минимум для того чтобы вы смогли дальше изучить если хотите, чтобы Примерно понимали о чем речь в чем Примерно о Разнице

936
01:47:35.460 --> 01:47:49.320
Михаил Непряхин: чтобы вы хотя Бы когда услышали разговор про кошмары про ассанж поняли о чем, речь чтобы вы поняли в чем, Разница между открытой адресацией и закрытой адресацией

937
01:47:49.350 --> 01:48:02.250
Михаил Непряхин: вот там на бакетах этот массив он меньше и Там Мы Не прыгаем вот так вот Мы просто в конец добавляем А при открытой организации Мы прыгаем По какому-то алгоритму линейный плюс один или квадратичный в разные места вот он в этом суть

938
01:48:02.590 --> 01:48:14.070
Михаил Непряхин: и еще новая мама она меньше памяти занимает потому что там на самом деле и

939
01:48:14.460 --> 01:48:17.280
Михаил Непряхин: а на самом деле вот, этот массив

940
01:48:17.650 --> 01:48:21.300
Михаил Непряхин: о максимум может быть тысяча двадцать четыре элемента

941
01:48:21.960 --> 01:48:29.640
Михаил Непряхин: и изначально вот, когда Мы У нас Маленькая. Мама вот он вот такой вот ну он растет до тысячи двадцать четыре

942
01:48:30.010 --> 01:48:35.350
Михаил Непряхин: а потом появляется еще один такой массив

943
01:48:35.640 --> 01:48:41.510
Михаил Непряхин: вот они там вели Новую терминологию что это там это

944
01:48:42.060 --> 01:48:44.230
Михаил Непряхин: сегмент группа

945
01:48:44.770 --> 01:48:59.050
Михаил Непряхин: там и

946
01:48:59.580 --> 01:49:13.440
Михаил Непряхин: и мы определили в какой кусок идти а потом в Этом определенном куске и

947
01:49:13.590 --> 01:49:15.430
Михаил Непряхин: вот Ммм

948
01:49:15.650 --> 01:49:17.020
Михаил Непряхин: короче

949
01:49:18.680 --> 01:49:30.840
Михаил Непряхин: да вот Все Что важно эээ Компактно Рассказал Понимая капец сложно если От Этого кошма Мы Не сталкивались. Ни фига Не поняли Это нормально все равно что-то поняли вот значит будут

950
01:49:30.940 --> 01:49:39.690
Михаил Непряхин: про внутреннее устройство Хрешма Мы больше говорить Не будем дальше потому что Это ну? Не особо неважно вот Но Ссылочки будут

951
01:49:39.900 --> 01:49:54.240
Михаил Непряхин: и желательно даже если будете смотреть ни непонятно все равно посмотреть потому что чего-то останется, и именно вот этого чего-то для себя захватят опять. Же это все важно Знать только для собеседников то есть как, бы, для Жизни как-то работает и Работа То есть

952
01:49:54.640 --> 01:49:57.790
Михаил Непряхин: Не суть важно понимать как он Это внутри устроен

953
01:49:59.940 --> 01:50:01.670
Михаил Непряхин: а Так

954
01:50:01.900 --> 01:50:03.820
Михаил Непряхин: Давайте на вопрос ответ видим

955
01:50:04.430 --> 01:50:07.850
Михаил Непряхин: а получается мама это свой смысл Так как я смотрел,

956
01:50:08.240 --> 01:50:12.120
Михаил Непряхин: Так то есть в Новой Мапе если бакет Заполнен

957
01:50:12.390 --> 01:50:14.370
Михаил Непряхин: это идет, плюс Один

958
01:50:17.520 --> 01:50:18.700
Михаил Непряхин: но

959
01:50:19.550 --> 01:50:23.640
Михаил Непряхин: если, коллизии столько. Что аж на бакет набралось

960
01:50:24.350 --> 01:50:25.490
Михаил Непряхин: то

961
01:50:25.700 --> 01:50:41.020
Михаил Непряхин: как бы что плюс один плюс один а ну да да Давно да все правильно в новой мапе ну, только вот этот не совсем вот следующий да Так это неэффективно это просто для простоты он показал чтобы хоть что То запомнить ну Куда Там, прыгает в произвольное место и Там, смотрят

962
01:50:41.360 --> 01:50:51.070
Михаил Непряхин: вот и потом читает Так же соответственно да но Можно Еще запомнить что такой слон плюс один и если, там вот вот здесь вот прям все заполнено уже все восемь элементов заполнены

963
01:50:51.550 --> 01:50:52.350
Михаил Непряхин: да

964
01:50:53.010 --> 01:51:01.650
Михаил Непряхин: но если, Нет возможности, использовать саймди То Будет работать По-старому Нет Будет все равно работать По-новому но просто

965
01:51:02.320 --> 01:51:09.630
Михаил Непряхин: вот здесь Проверка Будет Не за один такт а за восемь такктов короче будет медленно работать вот и все

966
01:51:11.610 --> 01:51:12.280
Михаил Непряхин: и и

967
01:51:12.570 --> 01:51:15.680
Михаил Непряхин: так, что, как бы новая мама

968
01:51:15.790 --> 01:51:29.790
Михаил Непряхин: в горных кейсах будет медленнее чем старый папа Там много споров на самом деле что вот эту мапу завезли очень. Похабно в гол. И ее Плохо реализовали ее Плохо Задизанили она остырена из базы данных по Кроуч

969
01:51:29.790 --> 01:51:42.820
Михаил Непряхин: и в кукурузе она даже лучше за дизайнером чем, в гошке но вообще гошка славится тем что стандартную библиотеку пишут какие-то калеки Инвалиды Которые кривору руки они ничего Нормально сделать Не могут

970
01:51:43.320 --> 01:51:50.210
Михаил Непряхин: Но Тем Не менее Это все равно оно работает и Это Все равно лучше Чем на Других языках и

971
01:51:50.790 --> 01:51:58.660
Михаил Непряхин: Стандартная библиотека библиотека в Голову. Она Бездушная мы еще Можем много сталкиваться с Какими То странными вещами и здесь косяк там косяк

972
01:51:58.920 --> 01:52:08.400
Михаил Непряхин: ну. Тем не менее работать со мной, быстрее чем у других и работать с языком проще чем с астом Поэтому не неплохой трядов. Тем не менее

973
01:52:09.200 --> 01:52:17.300
Михаил Непряхин: Так как пхшников погибаю да в пх Же плюс мне Тоже. Самое просто вы Никогда не задумывались, чего там как только потом оно работает ну громко не надо Было

974
01:52:17.860 --> 01:52:36.600
Михаил Непряхин: опять же если бы не собеседник, я бы вам Это не рассказал честное слово потому что ну нафига ну компьютер сайнс Но вот гошники любят вот понтоваться вот этого так как там Чего Блогеры какие нибудь и там новые при хучуне где пишут его заставляют разбираться это называется свистый ибоет называться стейбом верно да

975
01:52:37.560 --> 01:52:39.620
Михаил Непряхин: и Так и.

976
01:52:39.620 --> 01:52:45.490
David R: А Тут Да я Тут в параллельно потыкался у Меня Тут Вопрос возник но Не Стал Отвлекать.

977
01:52:45.930 --> 01:52:46.490
Михаил Непряхин: Ммм.

978
01:52:46.690 --> 01:52:50.210
David R: Вот через, мык если, создавать мапу То.

979
01:52:50.210 --> 01:52:50.570
Михаил Непряхин: А вот.

980
01:52:50.570 --> 01:52:53.950
David R: Цифрка ну число это Что это Кап.

981
01:52:54.520 --> 01:52:55.760
Михаил Непряхин: Эта копася дина.

982
01:52:56.070 --> 01:53:09.410
David R: Тогда почему я Не Могу вот этот Копась идти вывести потом вот это меня смутило что я ленна маку Могу вывести а копасть Эти от мамы я не могу а он говорит что шел к черту говорит.

983
01:53:11.060 --> 01:53:12.470
Михаил Непряхин: Да

984
01:53:12.840 --> 01:53:15.290
Михаил Непряхин: хорошо.

985
01:53:15.290 --> 01:53:28.340
David R: То есть я в мэйке могу указать вот тебе копаасите а потом я не могу спросить а сколько Там у тебя копатией я могу спросить сколько там ленно он и.

986
01:53:28.340 --> 01:53:34.040
Михаил Непряхин: Хорошо интересный вопрос ну капасите, Нет капасти Мы не можем посмотреть Да смотрите в чем прикол

987
01:53:34.590 --> 01:53:40.570
Михаил Непряхин: как бы Тут опять, же приходится про старую, Порновую Маму поговорить да значит в Старой Мапе

988
01:53:40.960 --> 01:53:44.440
Михаил Непряхин: А если Вы указываете. В мейке Сотку

989
01:53:44.860 --> 01:53:45.740
Михаил Непряхин: Сотку

990
01:53:46.300 --> 01:53:53.700
Михаил Непряхин: ну как бы Вы Копаете Задаете он Не зазовете-ка пассию значит и

991
01:53:54.540 --> 01:54:02.170
Михаил Непряхин: вы сможете Загружать вашу Хэшмапу. Дос в среднем до шести с половиной элементов в Бакете

992
01:54:02.710 --> 01:54:06.530
Михаил Непряхин: берутся собаки Ты смотрят а Средний месяц шесть с половиной элементов

993
01:54:06.810 --> 01:54:09.800
Михаил Непряхин: создается Новая ну Два икс

994
01:54:10.110 --> 01:54:15.420
Михаил Непряхин: если перевести. В процентах это Восемьдесят Один Процент

995
01:54:15.990 --> 01:54:21.530
Михаил Непряхин: короче говоря старая Хошмапа может быть загружена только на Восемьдесят Один процент дальше Будет Удвоение

996
01:54:22.440 --> 01:54:27.560
Михаил Непряхин: Поэтому когда Вы спрашиваете ну Вы Можете. Спросить только лен

997
01:54:28.210 --> 01:54:42.040
Михаил Непряхин: потому что к опасности оно ну оно неточное оно вообще вот его точного Нет оно вот под капотом есть типа если на Восемьдесят Один процент заполнено от того что вы указали изначально

998
01:54:42.210 --> 01:54:44.690
Михаил Непряхин: бот провокация Два икс

999
01:54:45.220 --> 01:55:04.880
Михаил Непряхин: и там постепенно они и

1000
01:55:04.960 --> 01:55:09.660
Михаил Непряхин: а ну или как это реализация Кошма как везде ее можно самому Сделать если Очень. Захотеть

1001
01:55:09.750 --> 01:55:18.280
Михаил Непряхин: вот в Новой если вы говорите значит Я хочу Копаяну вот это вот Изначально число Которое вы указываете в Майке

1002
01:55:18.590 --> 01:55:19.540
Михаил Непряхин: то

1003
01:55:19.960 --> 01:55:24.220
Михаил Непряхин: здесь уже лод Фактор повыше семь семь на Богат

1004
01:55:24.390 --> 01:55:36.260
Михаил Непряхин: Ну и

1005
01:55:36.470 --> 01:55:41.240
Михаил Непряхин: вот семь короче и это Че то Восемьдесят семь шесть процентов чуть тип то

1006
01:55:41.370 --> 01:55:42.770
Михаил Непряхин: Мир Восемьдесят шесть

1007
01:55:42.880 --> 01:55:44.120
Михаил Непряхин: короче говоря

1008
01:55:44.250 --> 01:55:52.540
Михаил Непряхин: а к опасности новой Мапы оно повыше то Есть память используется эффективнее и

1009
01:55:52.700 --> 01:56:04.130
Михаил Непряхин: и нету постепенной эвакуации вот эта вот старая мапия когда Мы новые мапы создавали в два раза больше Мы и Старые постепенно вы правы медленно постепенно переносили

1010
01:56:05.020 --> 01:56:06.720
Михаил Непряхин: в Операциях Ставки

1011
01:56:06.870 --> 01:56:26.390
Михаил Непряхин: в Новой Мапи нет просто берем вот у нас есть старая мама создаем новые двоикс все за одну Операцию взяли и все перенесли ну то есть когда-нибудь в какой-нибудь Вставке не повезет и какая-нибудь ставка Будет медленнее чем все остальные но в целом в среднем все равно будет То От единицы То есть как бы все хорошо все про Это нормально

1012
01:56:26.660 --> 01:56:38.290
Михаил Непряхин: вот и

1013
01:56:38.870 --> 01:56:44.360
Михаил Непряхин: вот Поэтому когда Вы не Можете спросить какое там копастию У мамы Вы олен спросить Можете

1014
01:56:45.560 --> 01:56:55.200
Михаил Непряхин: как это ответ. На ваш, Вопрос и тут. Примерно Все так короче вот просто когда У вас возникают Вопросы? Там ответ он правильно копирует, длинный такой что ну скорее всего вы кончитесь быстрее и

1015
01:56:55.760 --> 01:57:04.970
Михаил Непряхин: еще из приколов например как бы чтобы совсем вас удивить и

1016
01:57:06.850 --> 01:57:10.250
Михаил Непряхин: на самом деле когда вы берете хэш

1017
01:57:11.690 --> 01:57:14.710
Михаил Непряхин: от функции, вот вы получили

1018
01:57:15.400 --> 01:57:16.240
Михаил Непряхин: хэш

1019
01:57:17.290 --> 01:57:30.480
Михаил Непряхин: а ну То Есть Это Там все равно шестьдесят четыре Бита Выхож поручили какой-то Ключ пропустили Через Хж функции получили хаш Вот Он и ничего еще не стали там остаток отделения брать ничего просто получили хэш

1020
01:57:31.130 --> 01:57:33.210
Михаил Непряхин: значит там такая оптимизация

1021
01:57:33.320 --> 01:57:38.290
Михаил Непряхин: что вот младшие, семь бит

1022
01:57:40.260 --> 01:57:46.330
Михаил Непряхин: они используются в адресации и как раз и там в семье инструкциях

1023
01:57:47.370 --> 01:58:05.040
Михаил Непряхин: потом есть тут как быть прям делить делят хэш на биты есть аж один участок есть аж два участок аж один он участвует По-моему вот для первого прыжка просто, найти первую ну как бы из мапы мап прыгнуть в То место, где ваш Ключ

1024
01:58:05.140 --> 01:58:06.800
Михаил Непряхин: потом аж два

1025
01:58:06.940 --> 01:58:20.880
Михаил Непряхин: тоже здесь где-то используют а вот по-моему отож два и берется остаток отделения По количеству, элементов вот Там во Внутренней Мапе и Уже потом Там Внутри вот Поэтому только биту смотрится через Эсамди,

1026
01:58:21.720 --> 01:58:25.980
Михаил Непряхин: и Уже тут же Хитрая тема Что

1027
01:58:26.090 --> 01:58:33.980
Михаил Непряхин: а ведь, и семьби данный ключ почему семь. Ведь, у нас там как бы восемь должно быть а приков в том что первый бит

1028
01:58:34.180 --> 01:58:41.770
Михаил Непряхин: он отвечает, за наличие короче если, типа он наливает значит значения Нет если, он Единичка значит значение Есть

1029
01:58:42.130 --> 01:58:53.600
Михаил Непряхин: и вот вот это вот Ну просто вот Там. Вот Куда они тыкаете Там. Оптимизация на оптимизации и типа вот Ну, просто досконально разбираться я Ну, не вижу смысла абсолютно

1030
01:58:54.220 --> 01:59:03.730
Михаил Непряхин: То Есть Просто значит главное когда будете дома вот Ну смотреть Эти материалы Просто закрепить значит на какие вопросы? Вы должны отвечать

1031
01:59:03.960 --> 01:59:06.850
Михаил Непряхин: Чем старая мама Отвечаю Отличаться От новой

1032
01:59:07.170 --> 01:59:10.310
Михаил Непряхин: и Тем что старая

1033
01:59:10.640 --> 01:59:20.010
Михаил Непряхин: а открытая Адресация, Новая открытая антрепризация что в старой Нет поддержки Самим Деинструкций ну Если в руках не есть Процессоры а в новой есть

1034
01:59:20.240 --> 01:59:24.110
Михаил Непряхин: Что, старая набакетах которые просто растут как

1035
01:59:24.250 --> 01:59:39.020
Михаил Непряхин: и списки а Новый и

1036
01:59:39.020 --> 01:59:55.980
Михаил Непряхин: а в новой и

1037
01:59:56.040 --> 01:59:59.170
Михаил Непряхин: если бы вот степень загрузки больше

1038
01:59:59.300 --> 02:00:06.760
Михаил Непряхин: у вас коллизий Будет столько что Вставка и чтение будут занимать неоправданно много Времени

1039
02:00:06.760 --> 02:00:19.380
Михаил Непряхин: и Поэтому вот эти лишние и

1040
02:00:21.940 --> 02:00:26.030
Михаил Непряхин: так главное погрузившись в это все непасть вдруг улетаю

1041
02:00:26.240 --> 02:00:27.800
Михаил Непряхин: да пткнись за Жертву

1042
02:00:28.050 --> 02:00:32.740
Михаил Непряхин: ну опять же говорю вот че поняли то поняли что осталось то осталось.

1043
02:00:33.070 --> 02:00:34.090
David R: А Можно, мари.

1044
02:00:34.090 --> 02:00:35.010
Михаил Непряхин: Его попросить.

1045
02:00:35.010 --> 02:00:50.220
David R: Если позвольте может и не маленький Эти Старые новые мапы Они Уже теперь. Прибиты и что в Новых Вещах Всегда идет новая мама Или это как-то осталось Там на выбор что Можно и старую и новые Создавать его.

1046
02:00:51.010 --> 02:00:59.720
Михаил Непряхин: Э Пока оставим начинался обычно обычно когда в гоу производят какие-то эксперименты, вот это я считаю что эксперимент на самом деле

1047
02:01:00.170 --> 02:01:03.770
Михаил Непряхин: аа по умолчанию остается Старый вариант,

1048
02:01:04.300 --> 02:01:08.250
Михаил Непряхин: а чтобы Включить новый вы переменное окружение

1049
02:01:08.400 --> 02:01:11.040
Михаил Непряхин: есть тут. Значит у нас

1050
02:01:11.970 --> 02:01:13.600
Михаил Непряхин: есть у нас тут. Переменная

1051
02:01:14.930 --> 02:01:17.560
Михаил Непряхин: м гол Эксперимент называется.

1052
02:01:18.560 --> 02:01:19.740
David R: Повыше Повыше.

1053
02:01:22.050 --> 02:01:29.960
Михаил Непряхин: Вот Она наук такой эксперимент короче Ммм, обычно когда чего нибудь экспериментальное вы, хотите, включить

1054
02:01:30.150 --> 02:01:35.340
Михаил Непряхин: вот здесь вы, прописываете типа хочу включить вот такую вот экспериментальную фичу

1055
02:01:35.620 --> 02:01:49.920
Михаил Непряхин: Но в этот Раз, они зачем то пошли, иначе они прямо, в версии один двадцать четыре включили всем. Вот эту новую Мапу Поэтому очень многие на Версию Один, двадцать четыре просто Не перешли. Остались на версии Один, двадцать три

1056
02:01:50.720 --> 02:02:05.350
Михаил Непряхин: и Это довольно Странно и

1057
02:02:05.350 --> 02:02:11.730
Михаил Непряхин: память вавоцируется на Пустых структурах хотя и Не Должна ну вы должны пофиксировать наверное версия Один Двадцать пять

1058
02:02:11.930 --> 02:02:22.360
Михаил Непряхин: и здесь пошли наоборот сказали Так Мы включаем на всех если Хотите, выключить Эту Новую Мапу есть флаг

1059
02:02:22.760 --> 02:02:26.340
Михаил Непряхин: Поэтому да Новую Мапу Можно отключить

1060
02:02:26.800 --> 02:02:38.130
Михаил Непряхин: Но как Будто, бы вот уже они целенаправленно нацелились на то чтобы ее сделать из всех из нас бета-тестеров все это протестить и

1061
02:02:38.330 --> 02:02:42.580
Михаил Непряхин: быстренько отчитаться о приросте Производительности

1062
02:02:42.790 --> 02:02:46.520
Михаил Непряхин: по Большому Счету ее особо Нет Там много есть тестов

1063
02:02:46.580 --> 02:03:05.420
Михаил Непряхин: производительность где-то есть но Там если в среднем по больнице плюс-минус То же самое Только с неизученными косяками Багами потому. Что если. Старые Мапы Вдоль поперек полностью Изучены и

1064
02:03:05.460 --> 02:03:09.300
Михаил Непряхин: Все очень, Плохо отзываются об реализации. Этой Новой мамы

1065
02:03:09.850 --> 02:03:11.980
Михаил Непряхин: ну сыночки скинь посмотрите

1066
02:03:15.890 --> 02:03:16.720
Михаил Непряхин: так

1067
02:03:17.680 --> 02:03:24.970
Михаил Непряхин: вот значит Понимаю было сложно Понимаю сломал Мозг Но Без этого к сожалению, дальше пойти было нельзя

1068
02:03:25.340 --> 02:03:28.060
Михаил Непряхин: вот Поэтому попрошу понять

1069
02:03:28.370 --> 02:03:34.950
Михаил Непряхин: а к сожалению, на цебесах Сейчас этим будут задолбывать вот Поэтому

1070
02:03:35.070 --> 02:03:37.630
Михаил Непряхин: сымочку дам цирючки нам, посмотрите

1071
02:03:39.040 --> 02:03:51.180
Михаил Непряхин: и в целом апи очень простой мап если тут не смотреть как там Под капотом Устроено в целом как бы к мамой пользоваться просто и приятно то есть как бы нет никаких вопросов, нет

1072
02:03:52.000 --> 02:04:04.170
Михаил Непряхин: да вот вот правильно планировщик прошлый факт про планировщик объяснять проще потому что там нету столько, вот Этой науки вот Именно компьютер-сайнс

1073
02:04:05.120 --> 02:04:12.460
Михаил Непряхин: а Реально по нерушка работают Впрочем спасибо большое еще Раз, Норок так все ладно все Давайте значит пока

1074
02:04:12.750 --> 02:04:13.930
Михаил Непряхин: Ка

1075
02:04:14.300 --> 02:04:15.260
Михаил Непряхин: царя

1076
02:04:15.550 --> 02:04:22.150
Михаил Непряхин: Возможно. Вам Ночью сегодня будут сниться мапы с открытой и закрытой Индексацией

1077
02:04:22.640 --> 02:04:24.780
Михаил Непряхин: седать всем. Пока.

