WEBVTT

1
00:04:09.060 --> 00:04:13.940
Михаил Непряхин: Так всем привет как видно слышно Пожалуйста, поставьте плюсики если все Ок

2
00:04:19.089 --> 00:04:20.690
Михаил Непряхин: да хорошо

3
00:04:30.710 --> 00:04:32.730
Михаил Непряхин: Так значит

4
00:04:33.490 --> 00:04:37.270
Михаил Непряхин: задачки Так Сейчас Периодически будем решать задачки

5
00:04:37.910 --> 00:04:43.300
Михаил Непряхин: собесов типовые типичные задачи себесов

6
00:04:45.450 --> 00:04:52.450
Михаил Непряхин: ну вот Сейчас. Порешаем задачки потом посмотрим кэш простейший использование мапы

7
00:04:52.740 --> 00:05:02.070
Михаил Непряхин: и сегодня Поговорим по порогу рутины про планировщика про работу планировщика на низком уровне короче сегодня третья, сложная тема,

8
00:05:02.100 --> 00:05:15.510
Михаил Непряхин: вот их всего Реально Сложных, три то есть, это вот посылается большая Глубокая. Тема даже не то что, сложные объемные слайсы мапы ну как мама конечно не такая сложная на самом деле но вот

9
00:05:16.240 --> 00:05:24.050
Михаил Непряхин: более-менее просто надо представлять что это такое чтобы не совсем это было как бы что-то магическое чтобы хоть примерно понимать как оно там настроено

10
00:05:24.330 --> 00:05:30.090
Михаил Непряхин: чтобы в случае чего можно Было Поддержать разговор чтобы совсем Не Сажать на Собеседование

11
00:05:30.450 --> 00:05:32.560
Михаил Непряхин: вот и вот планировщик

12
00:05:33.310 --> 00:05:37.350
Михаил Непряхин: и работа вообще как бы что происходит в ронтайме гол

13
00:05:37.910 --> 00:05:42.470
Михаил Непряхин: так значит три три Задачки и наслайс решим

14
00:05:42.850 --> 00:05:46.390
Михаил Непряхин: кто хочет потренироваться типа

15
00:05:46.790 --> 00:05:49.980
Михаил Непряхин: кто хочет Попробовать решить как будто

16
00:05:50.150 --> 00:05:51.380
Михаил Непряхин: он нас собеседник

17
00:05:51.880 --> 00:05:53.790
Михаил Непряхин: Ну Голосом Просто Озвучить

18
00:05:53.970 --> 00:05:55.740
Михаил Непряхин: что выведет этот код

19
00:05:56.770 --> 00:06:11.630
Михаил Непряхин: Нет Я вю Кэш про это Больше разговаривают Больше Говорят чем, реально говорю у Кэш тоже есть у Меня решение для его юкоса но я боюсь нравлю его в Стороне напишите на Собеседование ну посмотрим я говорю конечно с Вами посмотрим потому Что это Там

20
00:06:11.820 --> 00:06:13.140
Михаил Непряхин: часто слышу

21
00:06:14.090 --> 00:06:16.510
Михаил Непряхин: так значит есть Желающие решить эту Сдачу

22
00:06:17.180 --> 00:06:22.090
Михаил Непряхин: короче значит звучит так Что выведет этот код

23
00:06:28.360 --> 00:06:31.600
Михаил Непряхин: если желающих, Нет придется мне самого Решать

24
00:06:31.710 --> 00:06:33.340
Михаил Непряхин: Я специально Не Запускал

25
00:06:33.890 --> 00:06:35.880
Михаил Непряхин: Есть желающих, Давид.

26
00:06:37.820 --> 00:06:39.980
David R: О всем привет слышно.

27
00:06:39.980 --> 00:06:41.050
Михаил Непряхин: Да смешно.

28
00:06:41.490 --> 00:06:42.890
David R: А Давайте Попробуем.

29
00:06:42.890 --> 00:06:43.760
Михаил Непряхин: Давайте.

30
00:06:43.970 --> 00:06:45.100
David R: Можно начинать.

31
00:06:45.100 --> 00:06:46.460
Михаил Непряхин: Да Давайте озвучивать.

32
00:06:46.460 --> 00:06:56.550
David R: Но я По Размышляю Вслух получается Варфу сластьентовна создается с значением По умолчанию.

33
00:06:57.890 --> 00:06:59.520
Михаил Непряхин: А какое значение по умолчанию.

34
00:06:59.520 --> 00:07:01.090
David R: Нулевое нулевое значение.

35
00:07:01.090 --> 00:07:03.180
Михаил Непряхин: Да сбуд ним соответственно да

36
00:07:03.550 --> 00:07:04.380
Михаил Непряхин: так.

37
00:07:05.200 --> 00:07:14.660
David R: И туда можно соответственно опентиться фуу апенд Один у нас будет Единица второй фуапен у нас будет один два третьих.

38
00:07:14.660 --> 00:07:24.800
Михаил Непряхин: Не-не-не смотрите Давайте короче будем решать вот если вам подобное Попадается чтобы здесь ошибиться, Не облажаться

39
00:07:25.300 --> 00:07:30.090
Михаил Непряхин: короче вы Прям вот по строчке значит Давайте прямо, здесь пишите

40
00:07:30.740 --> 00:07:35.630
Михаил Непряхин: Во-первых Сразу пишете лен Какой здесь будет лена Какой здесь бодка Пасе.

41
00:07:35.630 --> 00:07:36.250
David R: Ммм.

42
00:07:36.250 --> 00:07:41.860
Михаил Непряхин: Так лен и капасти какой будет лен какой водка пасе вот в этом Месте пока еще до пэнда не дошли.

43
00:07:42.410 --> 00:07:43.470
David R: А ноль.

44
00:07:43.510 --> 00:07:45.300
Михаил Непряхин: Вот да вот Ноль Ноль

45
00:07:45.620 --> 00:07:50.560
Михаил Непряхин: и значит массив который У нас под капотом Давайте Так Тоже

46
00:07:50.800 --> 00:07:52.070
Михаил Непряхин: шос.

47
00:07:55.410 --> 00:08:01.650
David R: А нет никакого онлайн, редактора который позволяет совместно редактировать код.

48
00:08:02.540 --> 00:08:05.890
Михаил Непряхин: Здесь есть ээ но

49
00:08:06.150 --> 00:08:15.260
Михаил Непряхин: дольше вот Ну он по-моему это по-моему он Не будет работать это все под. Выпуном Ну короче это Геморра наслаждает его Планеты в Принципе он военный Редактор Есть

50
00:08:15.440 --> 00:08:30.880
Михаил Непряхин: так в теории можно Даже Онлайн-редактор, открывать ну Сейчас покажу так А Потом следующий Раз, можно действительно найти онлайн-редактор короче вот просто главное Озвучивать вот в текущий момент значит вот У нас такая история ну? И здесь логично Что ну как бы то же самое

51
00:08:32.100 --> 00:08:38.860
Михаил Непряхин: о значит дошли Мы до Этой Строчки и будем менять состояние значит вот дошли Мы от Этой строчки и как меняется Состояние.

52
00:08:38.860 --> 00:08:44.200
David R: То О лен Один Кап Один Эровительница.

53
00:08:45.160 --> 00:08:49.610
Михаил Непряхин: Да значит это тут была таре вот такой арыч у нас Там винтовый да.

54
00:08:49.650 --> 00:08:51.290
David R: Значит Он такой.

55
00:08:52.780 --> 00:08:53.520
Михаил Непряхин: А

56
00:08:53.900 --> 00:08:56.970
Михаил Непряхин: вот такое рей ну, с единицы собственно да.

57
00:08:58.000 --> 00:09:02.520
David R: Тяву дальше будет два два один два и рай.

58
00:09:02.880 --> 00:09:05.850
Михаил Непряхин: Так лен двака почти два рэй два

59
00:09:06.750 --> 00:09:07.330
Михаил Непряхин: дакот.

60
00:09:07.330 --> 00:09:08.980
David R: Один два угу

61
00:09:09.300 --> 00:09:13.510
David R: ну. Дальше будет Три четыре

62
00:09:13.790 --> 00:09:18.450
David R: лэн Три капаситы четыре и рей Три элемента Один два Три.

63
00:09:19.620 --> 00:09:22.890
Михаил Непряхин: Вот а почему лендтрека почти четыре.

64
00:09:23.370 --> 00:09:40.710
David R: А У нас Капасити при переполнении удваивается до Определенного значения ну Пока в пределах Наших Значений копасть У нас будет удваиваться. А лэнну Это соответственно Количество элементов Которые находятся в массив на который Ссылается слась.

65
00:09:41.130 --> 00:09:55.140
Михаил Непряхин: Так хорошо дальше участвовать Сейчас у нас самое сложное смотреть это обратите внимание Мы тут Берем один с лайс а призываем его в Другой, слайс это Не типичным поведением Мы Так в жизни Никогда Не Делаем а здесь вот Так

66
00:09:55.330 --> 00:10:00.780
Михаил Непряхин: и вот теперь мой папа значит У нас еще появляется еще Один слайс Ну Давайте теперь? Рассуждайте тут.

67
00:10:03.860 --> 00:10:19.350
David R: О Мы Берем а получается Неслась бар в Него, Мы запихиваем значение Которое у нас получится при сложении, к фу при прибавлении к фу значение пять

68
00:10:19.570 --> 00:10:28.960
David R: получается у нас в баре лен Будет четыре Капасити четыре а рэй Будет четыре элемента один два три четыре

69
00:10:31.510 --> 00:10:33.720
David R: четыре лимета один Два Три четыре.

70
00:10:34.990 --> 00:10:35.690
Михаил Непряхин: Ну.

71
00:10:35.690 --> 00:10:54.920
David R: О Теперь ну в на строчке Барапен Мы не меняли сам фу а в Бара просто Присвоили? Значение Операции фу и четверки сложения Поэтому у нас фу остался неизменным в фу Теперь Мы.

72
00:10:56.570 --> 00:11:00.500
Михаил Непряхин: Смотрите на этот вопрос в тему, здесь Раз, мы в бар

73
00:11:00.650 --> 00:11:03.840
Михаил Непряхин: Сейчас присвоили. Добавили запретили

74
00:11:04.470 --> 00:11:07.150
Михаил Непряхин: получается что бар

75
00:11:08.190 --> 00:11:12.770
Михаил Непряхин: он имеет свой массив Или он ссылается вот на этот из фу.

76
00:11:14.490 --> 00:11:15.960
David R: Интересный, вопрос.

77
00:11:15.960 --> 00:11:16.840
Konstantin: С лайтс.

78
00:11:18.240 --> 00:11:22.010
Михаил Непряхин: Да давайте, значит эээ в чате как вы думаете,

79
00:11:22.240 --> 00:11:25.280
Михаил Непряхин: Сейчас слайсы фу и ба.

80
00:11:25.280 --> 00:11:34.430
David R: Не будут ссылаться на Один и тот же массив потому что Мы передаем Мы создаем копии у Слайса а Копия сласть засылается на тот Же самый массив.

81
00:11:34.430 --> 00:11:40.700
Михаил Непряхин: И получается У нас Сейчас Логически У нас и фу и бар Ссылается на Один. И тот же массив

82
00:11:41.360 --> 00:11:53.650
Михаил Непряхин: Да верно то есть ой тут у меня опечатка была тут на самом деле четыре, будут да то есть смотрите получается мы на самом деле вот здесь вот имеем

83
00:11:53.880 --> 00:11:55.670
Михаил Непряхин: указательна

84
00:11:56.420 --> 00:11:58.700
Михаил Непряхин: ну как закручена наверх да нет.

85
00:11:58.700 --> 00:11:59.420
David R: Нет.

86
00:12:00.860 --> 00:12:02.040
Михаил Непряхин: К

87
00:12:02.150 --> 00:12:07.660
Михаил Непряхин: Сейчас Найду вот Крошечный пойнтер на верхний вот на этот вот массив

88
00:12:08.160 --> 00:12:10.240
Михаил Непряхин: и Там Мы добавили четверку

89
00:12:10.570 --> 00:12:12.340
Михаил Непряхин: и получается. Что

90
00:12:12.570 --> 00:12:24.580
Михаил Непряхин: м-м ну лен три да обратите внимание лин три то есть если мы будем как бы смотрите козлай это вью на массив так если мы будем смотреть с точки зрения этого свайса То. Увидим только первые три элементов

91
00:12:24.760 --> 00:12:36.880
Михаил Непряхин: так. Это понятно если будем с точки зрения бара смотреть то увидим четыре вот такая Интересная штука Получилась то Есть У нас получается здесь Один. И тот же массив Под капотом Окей Давайте дальше дальше Начнем.

92
00:12:36.880 --> 00:12:56.070
David R: Вот и

93
00:12:56.070 --> 00:13:03.590
David R: А кап будет восемь потому что Он удваивается лэн по факту тут было четыре стало пять.

94
00:13:05.660 --> 00:13:08.480
Михаил Непряхин: Подождите тут, было четыреста опять

95
00:13:08.590 --> 00:13:09.280
Михаил Непряхин: лен.

96
00:13:09.280 --> 00:13:11.960
David R: А Не-не-не У Него У Него Лэннинг свой Оставался.

97
00:13:11.960 --> 00:13:12.380
Михаил Непряхин: Да.

98
00:13:12.380 --> 00:13:13.090
David R: А мы.

99
00:13:13.090 --> 00:13:15.420
Михаил Непряхин: Это У Него Простыки. Оставался три.

100
00:13:18.310 --> 00:13:19.670
David R: Только Интересно.

101
00:13:19.850 --> 00:13:20.720
Михаил Непряхин: Да

102
00:13:21.730 --> 00:13:30.150
Михаил Непряхин: но Аппарат работает строго просто делает Плюс один ну или смотря Сколько десертов Носят землями. Значит просто Плюс один клену а он был три

103
00:13:31.210 --> 00:13:32.260
Михаил Непряхин: что же было

104
00:13:37.560 --> 00:13:41.060
Михаил Непряхин: ну просто ленба вот грин год четыре.

105
00:13:41.060 --> 00:13:42.420
David R: Элементынули

106
00:13:42.690 --> 00:13:46.350
David R: если лэм. Будет четыре тогда Почему У нас в Копасти удваивается

107
00:13:49.390 --> 00:13:54.870
David R: а да Но Он Не удвоится и.

108
00:13:54.870 --> 00:14:05.420
Михаил Непряхин: Да то есть смотрите вот в чем прикол когда происходит двойника пасе когда лен равно к опасности а здесь лен был не равенка пасти

109
00:14:05.590 --> 00:14:10.100
Михаил Непряхин: Поэтому Выделения массива не Будет Мы просто

110
00:14:10.220 --> 00:14:11.940
Михаил Непряхин: сделаем лен четыре

111
00:14:12.500 --> 00:14:16.210
Михаил Непряхин: Теперь вопрос а Что произойдет с этим массивом

112
00:14:17.400 --> 00:14:21.600
Михаил Непряхин: было вью до трех было вью вот такое у него

113
00:14:22.200 --> 00:14:25.500
Михаил Непряхин: мы добавляем элемент пятерку

114
00:14:25.650 --> 00:14:27.460
Михаил Непряхин: вопрос я не, застрели.

115
00:14:28.050 --> 00:14:29.180
David R: Перезаотрет.

116
00:14:29.590 --> 00:14:31.370
Михаил Непряхин: Или задрено правильно

117
00:14:31.660 --> 00:14:35.070
Михаил Непряхин: перед зарет, лен было четыре копайте четыре и перезаотрет,

118
00:14:35.230 --> 00:14:40.160
Михаил Непряхин: не теперь мы Показываем выводим фу и бар

119
00:14:40.330 --> 00:14:41.950
Михаил Непряхин: что выведет.

120
00:14:44.210 --> 00:14:46.630
David R: Ээ папу по-моему.

121
00:14:53.460 --> 00:14:56.090
Михаил Непряхин: Ну Давайте Что уезть фу Да Что выйдет фу.

122
00:14:56.350 --> 00:15:02.850
David R: Ну фул, эти то что у него есть да бар должен Вывести то Же самое.

123
00:15:03.180 --> 00:15:04.550
Михаил Непряхин: Да Потому Что.

124
00:15:04.550 --> 00:15:09.910
David R: Потому Что Мать поттер Не поменялся У нас Не было локации У нас Не было Нового Массива массе остался тот же самый.

125
00:15:10.100 --> 00:15:16.140
Михаил Непряхин: Да По факту мы Сейчас Имеем просто Два Одинаковых Массива

126
00:15:16.240 --> 00:15:17.230
Михаил Непряхин: просто

127
00:15:17.770 --> 00:15:29.660
Михаил Непряхин: здесь Запутывание в Том что в баре ну как, Будто бы что как в чем ловушка как Будто бы фу понятно что выведет вот Этого дела

128
00:15:30.890 --> 00:15:31.620
Михаил Непряхин: а

129
00:15:31.880 --> 00:15:37.150
Михаил Непряхин: а бар последний Раз, когда мы О баре Думали бар был Вот такой Вот

130
00:15:37.880 --> 00:15:47.680
Михаил Непряхин: и Вот Как Будто бы кажется, Что, Сейчас увидеться один-два-три четыре но Нет Мы же тут вот этим вот действием перезатерли последний элемент и выйдет одно, и то же

131
00:15:48.490 --> 00:15:56.500
Михаил Непряхин: уж Сейчас давайте проверим мне тут, тоже бывает ошибаюсь когда эти зате Решают, Поэтому мне Один, двадцать пять Один, двадцать пять вот но это вас не ошибся

132
00:15:56.600 --> 00:15:58.420
Михаил Непряхин: вот то есть гм

133
00:15:58.820 --> 00:16:02.520
Михаил Непряхин: это классическая задача вот на гонку данных

134
00:16:02.730 --> 00:16:10.970
Михаил Непряхин: на Понимание того Что слась это вью на массив на Понимание того Что они Разделяют Один и тот Же массив

135
00:16:11.330 --> 00:16:26.370
Михаил Непряхин: и на Понимание того что Удваивание происходит только тогда когда лена Не Хватает а если лена хватало как в Этом случае никакого удвоения Не произошло просто взяли да и перезатерли

136
00:16:26.480 --> 00:16:27.780
Михаил Непряхин: ну такая история

137
00:16:28.720 --> 00:16:37.310
Михаил Непряхин: так есть ли тут, Вопросы, понятно, ли вот как решать вот такие вот задачи вот прямо, Не стесняйтесь ленка Пасе и Всегда пишите

138
00:16:38.830 --> 00:16:43.200
Михаил Непряхин: потому Что Оно Сразу же становится Проще и понятнее

139
00:16:43.550 --> 00:16:45.110
Михаил Непряхин: Давайте значит следующая задача

140
00:16:46.220 --> 00:16:47.950
Михаил Непряхин: Так это решение умерло

141
00:16:53.420 --> 00:16:55.850
Михаил Непряхин: Так Есть Еще желающее кто-нибудь хочет.

142
00:16:56.300 --> 00:16:57.470
Илиас Эззахид: Но есть да.

143
00:16:57.470 --> 00:16:58.210
Михаил Непряхин: Найд.

144
00:17:03.520 --> 00:17:05.290
Илиас Эззахид: Так слышно меня.

145
00:17:05.290 --> 00:17:06.050
Михаил Непряхин: Да смешно.

146
00:17:13.660 --> 00:17:17.560
Илиас Эззахид: Едва а так один два буду размышлять вслух.

147
00:17:17.569 --> 00:17:24.529
Михаил Непряхин: Нет давайте сразу. Значит здесь сразу. Начинаем с того. Что пытаемся понять какую ленту как опасность значит Какой здесь лен.

148
00:17:25.210 --> 00:17:31.330
Илиас Эззахид: А Ну Лены к опасности ты предполагаешь что, они равны это оба четыре.

149
00:17:33.940 --> 00:17:40.440
Михаил Непряхин: Так и трек как выглядит аррей под капотом.

150
00:17:41.290 --> 00:17:44.900
Илиас Эззахид: Ээ так рей это слайсбань.

151
00:17:45.880 --> 00:17:57.110
Михаил Непряхин: Нет это ну, как бы мы давайте будем представить да понятно, что это совасть байден, как бы будем, думать, о нем Как Все-таки

152
00:17:57.510 --> 00:18:02.600
Михаил Непряхин: ну короче так же Он будет Выглядеть! Просто Вот чтобы Вот это Вот понимать.

153
00:18:03.110 --> 00:18:03.870
Илиас Эззахид: А.

154
00:18:04.010 --> 00:18:07.910
Михаил Непряхин: Да хорошо значит Что произойдет в Этой строке в чем мы делаем.

155
00:18:08.770 --> 00:18:10.740
Илиас Эззахид: Так берем.

156
00:18:11.260 --> 00:18:12.890
Михаил Непряхин: Первый элемент.

157
00:18:13.030 --> 00:18:13.740
Илиас Эззахид: Так.

158
00:18:13.740 --> 00:18:15.760
Михаил Непряхин: Какой будет Первый элемент из этих.

159
00:18:16.800 --> 00:18:21.920
Илиас Эззахид: Так так это и втор это Два это исключительно то есть он не считается.

160
00:18:21.920 --> 00:18:22.420
Михаил Непряхин: Так.

161
00:18:22.420 --> 00:18:23.440
Илиас Эззахид: А.

162
00:18:23.470 --> 00:18:25.720
Михаил Непряхин: Так у нас будут два Элемента

163
00:18:26.430 --> 00:18:28.000
Михаил Непряхин: начиная с какого миром.

164
00:18:29.690 --> 00:18:31.510
Илиас Эззахид: Буду предполагать что с нуля.

165
00:18:33.180 --> 00:18:39.850
Михаил Непряхин: Нет мы вот здесь вот это индексы да значит это надо вам занять на кубе, индекса да.

166
00:18:39.850 --> 00:18:42.850
Илиас Эззахид: То есть это то есть мы считаем смотрят то есть это тут бд.

167
00:18:43.220 --> 00:18:46.470
Михаил Непряхин: Да то есть смотри индексы вот они здесь вот так вот идут

168
00:18:48.240 --> 00:18:56.330
Михаил Непряхин: ну, и там еще четвертый можно сразу рисовать для понимания что он Там может Быть вот Он понадобится Этой второй части вот Мы говорим что берем

169
00:18:56.440 --> 00:18:59.620
Михаил Непряхин: с индексом Один включительно так

170
00:18:59.980 --> 00:19:01.200
Михаил Непряхин: значит б

171
00:19:01.760 --> 00:19:03.390
Михаил Непряхин: и Докуда берем.

172
00:19:04.020 --> 00:19:10.590
Илиас Эззахид: Аде может это а да и не считается так что только там только бы на самом деле да.

173
00:19:10.590 --> 00:19:15.080
Михаил Непряхин: Да да То есть Мы берем только один свадьбы да

174
00:19:16.040 --> 00:19:24.200
Михаил Непряхин: так и вот У нас и Мы присваиваем свадьбы Давайте Теперь туда Пишем. Как Будет Выглядеть. Свадьба

175
00:19:24.310 --> 00:19:28.850
Михаил Непряхин: Какой у него. Будет Лент Какой Копааси и Какой слайс под капотом.

176
00:19:30.230 --> 00:19:33.660
Илиас Эззахид: Аа ну под как потом тот же на самом деле.

177
00:19:33.920 --> 00:19:35.650
Михаил Непряхин: Такой оригинальный

178
00:19:35.820 --> 00:19:36.280
Михаил Непряхин: ага.

179
00:19:36.280 --> 00:19:41.160
Илиас Эззахид: Аа А вот полэн и кпасити лэннин У Него будет аа

180
00:19:43.060 --> 00:19:44.100
Илиас Эззахид: один

181
00:19:44.240 --> 00:19:45.310
Илиас Эззахид: э, Слеж.

182
00:19:45.860 --> 00:19:46.670
Михаил Непряхин: Ммм

183
00:19:46.860 --> 00:19:47.380
Михаил Непряхин: так.

184
00:19:47.380 --> 00:19:52.640
Илиас Эззахид: Простите Это будет Остатки остановы то Есть было четыре осталось ээ

185
00:19:52.800 --> 00:19:57.200
Илиас Эззахид: Так а из второго элемента считаем но с индекс Один то Есть Это.

186
00:19:57.200 --> 00:19:57.540
Михаил Непряхин: Да.

187
00:19:57.540 --> 00:19:59.160
Илиас Эззахид: Два есть два.

188
00:20:00.840 --> 00:20:04.270
Михаил Непряхин: Нет Нет Не два на самом деле три

189
00:20:04.580 --> 00:20:06.180
Михаил Непряхин: капасти у него было три.

190
00:20:06.940 --> 00:20:10.740
Илиас Эззахид: А потому что да исключили только пиа индекс ноль то их да отвезти.

191
00:20:10.890 --> 00:20:14.680
Михаил Непряхин: Вот это важно понимать значит когда мы занимаемся такой нарезкой

192
00:20:15.350 --> 00:20:19.910
Михаил Непряхин: мы берем даст первого, элемента но все что Было справа

193
00:20:20.060 --> 00:20:24.860
Михаил Непряхин: Мы Это да Считается Поэтому опасности Реально, Год три

194
00:20:24.960 --> 00:20:33.280
Михаил Непряхин: и Грубо говоря Мы здесь можем еще перезатереть вот Эти, два Элемента догнать ленты трех без реакции

195
00:20:34.820 --> 00:20:38.610
Михаил Непряхин: и под капотом массив будет Все-таки не такой

196
00:20:38.860 --> 00:20:40.810
Михаил Непряхин: потому что и

197
00:20:40.940 --> 00:20:46.090
Михаил Непряхин: ну хоть он будет тот же самый Но он будет начинаться с Б

198
00:20:46.260 --> 00:20:56.930
Михаил Непряхин: как бы Это Я тут Упрощаю Так пишу как бы да принесшу под капотом он было четыре на четыре Элемента Но мы вот в этом в этом месте когда Мы Сказали Что Берем Сби

199
00:20:57.030 --> 00:20:59.950
Михаил Непряхин: Мы сдвинули указатель вот набери

200
00:21:00.010 --> 00:21:17.300
Михаил Непряхин: и поэтому Мы будем видеть и

201
00:21:17.340 --> 00:21:24.310
Михаил Непряхин: и права расширять Поэтому да условно там был тот же самый массив ну вот он как бы считаем что он будет уже такой массив

202
00:21:25.290 --> 00:21:27.130
Михаил Непряхин: так хорошо дальше.

203
00:21:28.930 --> 00:21:31.490
Илиас Эззахид: И дальше Мы это.

204
00:21:32.180 --> 00:21:36.080
Егор Ширяев: Затираем так же Убираем т д и на от-то.

205
00:21:36.190 --> 00:21:38.910
Илиас Эззахид: Это оно это все.

206
00:21:40.280 --> 00:21:49.720
Михаил Непряхин: Давайте рассуждать так Опять мы тут, меняем этот массив пернеслась бы давайте Опять значит какой у него, будет ленка пастить вот это все.

207
00:21:50.180 --> 00:21:55.170
Илиас Эззахид: А лэнд Два опасности также останется три но оно не дошло до три.

208
00:21:55.170 --> 00:21:56.730
Михаил Непряхин: Так

209
00:21:57.180 --> 00:21:59.740
Михаил Непряхин: и что, мы

210
00:22:00.090 --> 00:22:08.660
Михаил Непряхин: да выводим хорошо, выводим здесь так здесь понятно, что, это то же самое а ну вот Здесь получается Да Мы Перезатираем.

211
00:22:08.660 --> 00:22:10.920
Илиас Эззахид: Это затираем.

212
00:22:10.920 --> 00:22:12.530
Михаил Непряхин: Бэт это, вместо б

213
00:22:13.150 --> 00:22:13.750
Михаил Непряхин: так.

214
00:22:13.750 --> 00:22:15.960
Илиас Эззахид: Нет Нет Будет

215
00:22:16.370 --> 00:22:18.900
Илиас Эззахид: эээ тт и это

216
00:22:19.780 --> 00:22:20.660
Илиас Эззахид: Я.

217
00:22:20.870 --> 00:22:21.940
Михаил Непряхин: Так хорошо

218
00:22:22.450 --> 00:22:24.060
Михаил Непряхин: Что выводится.

219
00:22:25.570 --> 00:22:26.580
Илиас Эззахид: Окса.

220
00:22:26.740 --> 00:22:31.570
Михаил Непряхин: Распечатываем вот этот изначальный, смс Что Мы здесь получим.

221
00:22:32.590 --> 00:22:34.790
Илиас Эззахид: Получим а б

222
00:22:34.890 --> 00:22:36.800
Илиас Эззахид: т е.

223
00:22:37.380 --> 00:22:38.390
Михаил Непряхин: Зерна

224
00:22:39.270 --> 00:22:40.060
Михаил Непряхин: так

225
00:22:40.430 --> 00:22:42.140
Михаил Непряхин: а распечатываем Би.

226
00:22:42.730 --> 00:22:45.670
Илиас Эззахид: Будет Бт Я.

227
00:22:47.060 --> 00:22:48.200
Михаил Непряхин: Верно.

228
00:22:48.790 --> 00:22:51.600
Михаил Непряхин: А ну как Не, совсем верно. Нет

229
00:22:51.840 --> 00:22:53.840
Михаил Непряхин: смотрите у нас тут лента два ведь,

230
00:22:54.070 --> 00:22:55.900
Михаил Непряхин: То есть Мы вбии.

231
00:22:55.900 --> 00:22:56.860
Илиас Эззахид: Израиль да.

232
00:22:56.860 --> 00:23:01.380
Михаил Непряхин: Да мы только вот на эту часть имеем в виду то есть и мы не увидим

233
00:23:02.940 --> 00:23:05.710
Михаил Непряхин: ну Давайте проверять если, я Не ошибаюсь должен Быть Так

234
00:23:06.920 --> 00:23:10.030
Михаил Непряхин: эйбдите и да видите

235
00:23:10.700 --> 00:23:14.510
Михаил Непряхин: теперь смотрите Что Еще интересно как Тут Еще Можно усложнить

236
00:23:15.080 --> 00:23:16.830
Михаил Непряхин: как я сказал

237
00:23:17.110 --> 00:23:26.530
Михаил Непряхин: мы влево не можем и

238
00:23:27.300 --> 00:23:30.330
Михаил Непряхин: То есть Мы можем взять и сказать Что

239
00:23:31.710 --> 00:23:34.890
Михаил Непряхин: Так где Мы это сделать вот здесь значит би.

240
00:23:35.630 --> 00:23:37.220
Михаил Непряхин: Это

241
00:23:39.050 --> 00:23:52.430
Михаил Непряхин: это би. Значит как нам надо его аа расширить Ну Мы беремся Сначала Так Поэтому Слева все Сначала если Мы возьмем просто вот Так вот Ну Мы То, же самое и получим лен Не изменится

242
00:23:52.550 --> 00:23:59.390
Михаил Непряхин: а вот если Мы скажем Что Мы хотим, открыть вот этот вот Е достучаться Оттуда

243
00:23:59.790 --> 00:24:02.570
Михаил Непряхин: то мы можем сделать здесь четверку

244
00:24:03.140 --> 00:24:14.330
Михаил Непряхин: и как бы указать что ну это было исключительно вот она четверка да как бы ее мы не берем и Мы как бы лен вот здесь сдвинем до тройки

245
00:24:14.430 --> 00:24:19.130
Михаил Непряхин: то есть в итоге Мы то есть если Так строго говорить Мы увидим только вот Это!

246
00:24:19.350 --> 00:24:27.520
Михаил Непряхин: Вот а здесь Мы можем лен Таким образом, до трех расширить и этот таки, и увидеть

247
00:24:28.080 --> 00:24:30.580
Михаил Непряхин: вон давайте, Сейчас Мы Напечатаем его

248
00:24:34.260 --> 00:24:36.160
Михаил Непряхин: вот это уже выведет

249
00:24:37.400 --> 00:24:39.090
Михаил Непряхин: и я Тоже,

250
00:24:41.370 --> 00:24:44.200
Михаил Непряхин: а почти три

251
00:24:46.390 --> 00:24:49.980
Михаил Непряхин: Так Сейчас чего-то я ошибся

252
00:24:52.890 --> 00:24:56.200
Михаил Непряхин: спасите три а я говорю до четырех.

253
00:24:58.160 --> 00:25:02.410
Илиас Эззахид: Три потому что Считаем уже Слизного По мотивам.

254
00:25:02.410 --> 00:25:18.550
Михаил Непряхин: Да верно верно мы же уже сби считаем Поэтому это у нас три да носите как бы ну вот даже если ты понимаешь как это работает ошибиться вообще ничего не стоит но если вы размышляете правильно то в Принципе эта сдача засчитается за разрешенную

255
00:25:18.640 --> 00:25:23.220
Михаил Непряхин: вот то есть смотрите мораль какая Решение этих задач,

256
00:25:25.040 --> 00:25:27.850
Михаил Непряхин: а вы в голове это не решите

257
00:25:27.970 --> 00:25:30.550
Михаил Непряхин: то есть в голове, это представить невозможно

258
00:25:30.900 --> 00:25:49.670
Михаил Непряхин: Особенно, бывает по ходу усложнения Всякие придумывают и ну вот вариации вот этого вот вот Этой истории их очень много то есть как бы но основные если, вы понимаете принцип вы чего угодно решите но вариант очень много Вот Поэтому важно понимать что какие вообще есть возможности

259
00:25:50.120 --> 00:26:00.350
Михаил Непряхин: и еще чтобы мы вот так вот не смогли хакнуть мы можем вот здесь вот прямо, копасть резануть по

260
00:26:00.930 --> 00:26:01.940
Михаил Непряхин: лену

261
00:26:03.010 --> 00:26:06.380
Михаил Непряхин: то, есть, вот здесь в этом случае

262
00:26:06.510 --> 00:26:07.990
Михаил Непряхин: копасти бот один

263
00:26:08.500 --> 00:26:12.270
Михаил Непряхин: и Мы эти манипуляции уже Сделать не Сможем

264
00:26:12.770 --> 00:26:14.500
Михаил Непряхин: то есть тут уже больше с

265
00:26:14.880 --> 00:26:20.380
Михаил Непряхин: вот ошибка что Мы говорим д тройку копать эти два как бы ну и

266
00:26:21.520 --> 00:26:24.310
Михаил Непряхин: Так сейчас откуда эта ошибка возникла сейчас

267
00:26:24.900 --> 00:26:28.560
Михаил Непряхин: тут, мы Вби а оно да вот здесь то есть э

268
00:26:31.550 --> 00:26:32.360
Михаил Непряхин: так

269
00:26:33.660 --> 00:26:37.790
Михаил Непряхин: когда Мы говорим возьми один элемент копасть здесь будет вообще

270
00:26:38.480 --> 00:26:40.270
Михаил Непряхин: один получается

271
00:26:41.200 --> 00:26:42.130
Михаил Непряхин: так

272
00:26:42.970 --> 00:26:52.890
Михаил Непряхин: вот так вот Там только бод би а ну. Да Мы же вбиту топендим в Битву Топпенди Поэтому копасти здесь Будет Два Два вот так вот

273
00:26:54.260 --> 00:26:55.460
Михаил Непряхин: и

274
00:26:55.840 --> 00:27:08.330
Михаил Непряхин: здесь Мы не Сможем так сделать да потому Что, У нас Лен- два а Мы хотим, копать Эти, расширить до трех вот Поэтому здесь Ошибка Он говорит Что, почти два

275
00:27:09.830 --> 00:27:21.430
Михаил Непряхин: вот Поэтому Мы можем сделать только ну, не можем Так сделать да да этот как, не прокатит то есть вот как, бы вот это вот есть защита для того чтобы

276
00:27:21.680 --> 00:27:28.680
Михаил Непряхин: подрезать не только Левую часть но когда мы так делаем Мы подрезаем поучаствовать Раз вот так вот с суда указатель сдвигаем

277
00:27:29.180 --> 00:27:34.510
Михаил Непряхин: и Благодаря Вот этого этому. Мы еще и бах Вот так Вот Тоже, подрезаем

278
00:27:35.780 --> 00:27:36.640
Михаил Непряхин: Вот

279
00:27:37.270 --> 00:27:39.360
Михаил Непряхин: но кстати когда мы так делаем

280
00:27:41.120 --> 00:27:48.270
Михаил Непряхин: в изначальном-то массиве оно все равно изменится если Мы даже Там, будем Их менять отдельно. Этот отдельный этот

281
00:27:48.670 --> 00:28:05.440
Михаил Непряхин: они хоть, разойдутся даже покапасть идти но Это все равно единый тот же массив будет под капотом и они все равно будут гонка данных. То есть Это как бы хоть и эта штука она подрезает копасть и Справа но массив под капотом Остается Один, и тот же вот чего Он понимать

282
00:28:05.840 --> 00:28:07.470
Михаил Непряхин: и Третья задача.

283
00:28:08.530 --> 00:28:12.500
David R: А можно можно вопрос о предыдущих задачах найти

284
00:28:13.400 --> 00:28:22.890
David R: на десятые сроки где мы ограничиваем капасити можно ли Туда передать вот вместо хардкожаного двойки ленатби.

285
00:28:24.420 --> 00:28:26.950
Михаил Непряхин: Да Можно, Можно.

286
00:28:26.950 --> 00:28:29.450
David R: Но он наверное сам От себя не принимает ллы

287
00:28:30.660 --> 00:28:31.570
David R: в самом случае.

288
00:28:31.800 --> 00:28:36.350
Михаил Непряхин: Э простите в этот момент лен адби.

289
00:28:38.410 --> 00:28:39.420
David R: Еще не создан.

290
00:28:39.420 --> 00:28:46.080
Михаил Непряхин: И в этом случае, не получится потому что Би еще не создано если вот заранее убей создать

291
00:28:46.330 --> 00:28:53.940
Михаил Непряхин: Но чтобы заранее Би создать Если вы заранее создадите Би придется Тогда Указывать ему лен один

292
00:28:55.490 --> 00:28:56.680
Михаил Непряхин: только Так.

293
00:28:57.290 --> 00:29:03.330
David R: А если, вот в десятой строчке создать без ограничений по кпссете а потом в следующей же строке создать.

294
00:29:03.330 --> 00:29:03.960
Михаил Непряхин: Он может

295
00:29:08.830 --> 00:29:20.790
Михаил Непряхин: да можно вот это уже получится грубо говоря у нас когда Мы так Делаем у нас Там лен Один получается Мы Берем все с самого Начала а здесь Делаем ограничения ленси

296
00:29:20.910 --> 00:29:23.110
Михаил Непряхин: так лена у нас Единица

297
00:29:23.930 --> 00:29:25.130
Михаил Непряхин: а здесь

298
00:29:27.950 --> 00:29:29.540
Михаил Непряхин: ой да Линги

299
00:29:30.180 --> 00:29:30.950
Михаил Непряхин: да

300
00:29:34.840 --> 00:29:37.000
Михаил Непряхин: О типа

301
00:29:39.400 --> 00:29:44.120
Михаил Непряхин: чуть-чуть еды с ума сходит Что типа Можно Это сделать хотя Это нельзя сделать

302
00:29:45.070 --> 00:29:49.080
Михаил Непряхин: а так ну? Если Мы Возьмем лен би а но он чего подсвечет

303
00:29:49.180 --> 00:30:03.360
Михаил Непряхин: плюс один надо делать потому, что смотрите альян это вот сейчас один да вот то здесь будет Единица а она исключительно то есть поучаствовать мы берем то же самое что мы делаем ноль ноль ну что здесь год ноль а здесь как бы ну, ну, и короче

304
00:30:04.790 --> 00:30:14.670
Михаил Непряхин: Ничего Не возьмем Мы Ничего Не возьмем Поэтому плюс один надо делать ну, вот Так вот получится да То, Есть вот Так вот ну ведь, не учился и выглядит но вот вот это тоже самое будет то есть тот же самый констент

305
00:30:14.860 --> 00:30:18.810
Михаил Непряхин: ну вот если мы тут захотим заглянуть то оно.

306
00:30:23.670 --> 00:30:29.850
David R: Не ну я Спрашивал идеи о том чтобы не Ходкодить такие значения если понадобится а что Можно их.

307
00:30:29.850 --> 00:30:30.200
Михаил Непряхин: Да.

308
00:30:30.200 --> 00:30:31.300
David R: И формировать в.

309
00:30:31.300 --> 00:30:37.800
Михаил Непряхин: Ну вот ну вода да вот Так Можно да Так Можно Но вообще все учит Лучше, самой такой судьей Не заниматься

310
00:30:38.010 --> 00:30:39.400
Михаил Непряхин: типа потому что,

311
00:30:41.470 --> 00:30:47.870
Михаил Непряхин: ну лучше, просто, не мутировать исходный смысл вот и все то есть вы понимаете что,

312
00:30:48.000 --> 00:30:50.110
Михаил Непряхин: если, вы начинаете

313
00:30:50.550 --> 00:30:59.040
Михаил Непряхин: переиспользовать представляете вы вот работаете со своим новым с лайсом би он другой но он связан

314
00:30:59.160 --> 00:31:06.840
Михаил Непряхин: си он типа зачем зачем нам Иметь эту связь потому, что если Мы ее получаем Мы э

315
00:31:06.910 --> 00:31:19.630
Михаил Непряхин: должны помнить о том а вдруг кто То си поменяет Оси допустим пришел к нам извне в Функцию а Там, его снаружи кто то Будет менять и Мы это Изменение. Здесь увидим Получим сайт эффект Зачем типа

316
00:31:19.690 --> 00:31:34.970
Михаил Непряхин: чтобы просто защититься от этого Мы Понимаем Что Мы Не хотим? Вообще ничего Общего Иметь Си Мы с Ним Работаем только на Чтение Мы Спокойненько себе, создали здесь в армии Стринг,

317
00:31:35.080 --> 00:31:54.290
Михаил Непряхин: ну, и все и Поедем, в Него Без всяких, там вот этих вот страданий в Этой Фигней потому Что эта вот нарезка вся она ну это только для каких-то алгоритмов Где это уместно и почти нигде это в продакшн коде не встречается вот Поэтому как бы такое

318
00:31:54.650 --> 00:32:06.870
Михаил Непряхин: ну да бой вот если, этот функционал вы знаете ну может быть где нибудь вы примените его таки уместно так хорошо Давайте Третья задача кто Есть желающее нарушение.

319
00:32:11.700 --> 00:32:13.190
dmitriy: Так у нее слышно.

320
00:32:13.190 --> 00:32:13.890
Михаил Непряхин: Смешно.

321
00:32:13.890 --> 00:32:15.560
dmitriy: Давайте Я попробую.

322
00:32:15.560 --> 00:32:16.350
Михаил Непряхин: Найт.

323
00:32:16.540 --> 00:32:19.590
dmitriy: У меня там с ними не так все хорошо

324
00:32:19.930 --> 00:32:21.250
dmitriy: такхэнс

325
00:32:23.280 --> 00:32:26.830
dmitriy: хорошо в Первом случае, это будет у нас.

326
00:32:28.320 --> 00:32:32.280
Михаил Непряхин: Но во-первых смотрите давайте скажите чем мы здесь занимаемся что мы делаем.

327
00:32:32.940 --> 00:32:35.110
dmitriy: А здесь мы создаем массив.

328
00:32:35.180 --> 00:32:36.340
Михаил Непряхин: Правда

329
00:32:36.490 --> 00:32:39.960
Михаил Непряхин: а что за цветочки его здесь вот знаете.

330
00:32:40.290 --> 00:32:48.300
dmitriy: Да то Есть мы сами, заполняем у нас сколько будет элементов сколько мы поставим столько и будет.

331
00:32:48.300 --> 00:32:48.930
Михаил Непряхин: Да Авто.

332
00:32:48.930 --> 00:32:49.980
dmitriy: С назначения.

333
00:32:50.430 --> 00:33:01.620
Михаил Непряхин: Итак какой будет ленно какой копасти в этого наверняка как бы это массив Да довольно странно тут говорить о ленине хорошо Давайте так какой бодко Пасе У этого Массива.

334
00:33:02.080 --> 00:33:03.840
dmitriy: А капасти четыре

335
00:33:06.180 --> 00:33:07.160
dmitriy: ну да.

336
00:33:08.010 --> 00:33:10.830
Михаил Непряхин: Так хорошо. Дальше Чем, Чем, мы дальше занимаемся.

337
00:33:12.220 --> 00:33:16.920
dmitriy: А так дальше викс Мы присваиваем слайс

338
00:33:17.210 --> 00:33:17.950
dmitriy: а

339
00:33:18.530 --> 00:33:21.390
dmitriy: первый элемент То есть здесь у нас.

340
00:33:21.390 --> 00:33:26.870
Михаил Непряхин: Нет смотрите это читается так мы Превращаем этот Наш массив

341
00:33:27.030 --> 00:33:27.980
Михаил Непряхин: флайс.

342
00:33:30.000 --> 00:33:32.810
dmitriy: Так. Превращаем массив в слайс

343
00:33:33.610 --> 00:33:37.200
dmitriy: аа получается с самого Начала до

344
00:33:37.450 --> 00:33:39.060
dmitriy: элементы сойди

345
00:33:39.170 --> 00:33:41.770
dmitriy: один то есть его исключая

346
00:33:42.090 --> 00:33:45.280
dmitriy: а получается здесь у нас будет.

347
00:33:49.420 --> 00:33:56.230
Михаил Непряхин: Давайте так опять, же говорим Сейчас. Про икс говорим про икс Какой У него, Лент Какой Копаете и Какой У него,

348
00:33:56.400 --> 00:33:58.360
Михаил Непряхин: вью под капотом.

349
00:33:58.730 --> 00:34:01.680
dmitriy: Оттокнул Он Будет Один

350
00:34:02.070 --> 00:34:05.170
dmitriy: как Я Думал копайте Будет

351
00:34:06.680 --> 00:34:07.400
dmitriy: а

352
00:34:07.790 --> 00:34:11.230
dmitriy: капасти четыре Потому Что Мы берем с первый элемент.

353
00:34:11.239 --> 00:34:12.659
Михаил Непряхин: Верно верно.

354
00:34:12.770 --> 00:34:15.360
dmitriy: И внутри будет. Только ноль.

355
00:34:16.070 --> 00:34:18.580
Михаил Непряхин: Да да вот вью вот такое

356
00:34:19.460 --> 00:34:21.480
Михаил Непряхин: верно совершенно верно

357
00:34:21.710 --> 00:34:23.679
Михаил Непряхин: дальше вы

358
00:34:24.060 --> 00:34:29.199
Михаил Непряхин: опять опять делаем нарезку из массива свадьба превращаем уже Теперь, в игрок.

359
00:34:31.239 --> 00:34:35.269
dmitriy: А так дальше у нас получится тогда Мы берем с

360
00:34:36.209 --> 00:34:37.429
dmitriy: айди два

361
00:34:37.919 --> 00:34:39.329
dmitriy: и До Конца

362
00:34:41.730 --> 00:34:44.889
dmitriy: Очень получается у нас Будет ээ лэн

363
00:34:46.540 --> 00:34:47.440
dmitriy: два

364
00:34:49.719 --> 00:34:50.420
dmitriy: а

365
00:34:50.980 --> 00:34:52.750
dmitriy: капасети два

366
00:34:54.550 --> 00:34:58.740
dmitriy: и массив Будет два три.

367
00:35:02.920 --> 00:35:07.620
Михаил Непряхин: Так давайте посмотрим берем Со второго индекса. Включительно

368
00:35:07.880 --> 00:35:13.800
Михаил Непряхин: и до конца то есть да Два три Совершенно Верно как почти Два да совершенно верно

369
00:35:14.160 --> 00:35:17.830
Михаил Непряхин: хорошо дальше дальше чем, чем, мы занимаемся. Дальше.

370
00:35:20.410 --> 00:35:22.000
dmitriy: А так

371
00:35:22.110 --> 00:35:23.670
dmitriy: дальше Мы берем

372
00:35:24.520 --> 00:35:25.330
dmitriy: а

373
00:35:25.580 --> 00:35:28.730
dmitriy: как Раз перемен икс и присваиваем Ей

374
00:35:29.750 --> 00:35:30.630
dmitriy: а

375
00:35:32.440 --> 00:35:39.610
dmitriy: вот тут, Я и Не помню точно здесь мы получается делаем то же самое что мы как бы добавляем к слайсу икс.

376
00:35:40.600 --> 00:35:43.940
Михаил Непряхин: Да Да Читается так. Мы Берем с лайсикс

377
00:35:44.490 --> 00:35:53.860
Михаил Непряхин: ну Пока Куда, Мы Присваиваем неважно Да значит Мы Берем свайсикс и в него Добавляем Элемент все элементы из ласейг.

378
00:35:56.510 --> 00:36:00.190
dmitriy: Ага ага Все Я Понял?

379
00:36:00.410 --> 00:36:02.290
Михаил Непряхин: И получаем свайс икс

380
00:36:02.580 --> 00:36:03.550
Михаил Непряхин: и и

381
00:36:03.760 --> 00:36:06.910
Михаил Непряхин: какие характеристики. У этого свалятся, вот в чем вопрос.

382
00:36:07.390 --> 00:36:13.680
dmitriy: Так если. Мы добавляем все элементы из игрек то тогда у нас лэм Будет три

383
00:36:14.700 --> 00:36:16.420
dmitriy: копай сити четыре

384
00:36:17.110 --> 00:36:20.310
dmitriy: ноль три будет тогда ноль два три.

385
00:36:26.600 --> 00:36:43.560
Михаил Непряхин: Но давайте Вспомним тут Я сам решение такой памяти Не. Помню. Так давайте посмотрим значит лен три ну тут на Острые элементы вью Да логично что лена было три это сто процентов какпаседес четыре так почему бы откапасся четверым берем изначально слай Сикс а у него, Капасти четыре да наверное Копасти вот четыре

386
00:36:44.110 --> 00:36:52.450
Михаил Непряхин: а алименты будут Ноль Два три ну, да Совершенно верно тут я с вами Согласен, и Так дальше Мы еще еще Один Опон делаем Так

387
00:36:53.790 --> 00:36:57.610
Михаил Непряхин: Давайте дальше рассуждать Что теперь будет Свайся икс.

388
00:36:58.320 --> 00:37:04.520
dmitriy: А так хорошо то есть Мы получается туда. Добавляем элементы языкрик там их Два

389
00:37:04.780 --> 00:37:06.870
dmitriy: у нас будет значит Лэн

390
00:37:07.640 --> 00:37:08.530
dmitriy: пять

391
00:37:10.630 --> 00:37:16.030
dmitriy: а тут дальше копайся эти удваиваются потому. Что мы уже превысили будет восемь

392
00:37:16.700 --> 00:37:20.660
dmitriy: и ноль два три два три.

393
00:37:21.740 --> 00:37:22.700
Михаил Непряхин: Ноль

394
00:37:24.220 --> 00:37:25.790
Михаил Непряхин: два Три,

395
00:37:26.750 --> 00:37:27.620
Михаил Непряхин: Три,

396
00:37:28.080 --> 00:37:34.820
Михаил Непряхин: так Сейчас проверм игрок у нас два Три, да мы Берем, вот этот вот ноль два три

397
00:37:36.080 --> 00:37:42.040
Михаил Непряхин: и ага да похоже на Правду. Похоже на Правду.

398
00:37:43.530 --> 00:37:44.880
Михаил Непряхин: Да

399
00:37:45.540 --> 00:37:48.990
Михаил Непряхин: да окей и что выглядят.

400
00:37:49.160 --> 00:37:56.750
Михаил Непряхин: Какое бью У нас ээ тандем что выглядит а это вообще массив кстати до Сих пор наш То что он выглядит.

401
00:37:57.330 --> 00:38:03.220
dmitriy: Были она про Него и забыл. Совсем, Так ну викс у нас Будет вот То Что вы в конце написали

402
00:38:03.830 --> 00:38:05.880
dmitriy: будет ноль два три два три

403
00:38:13.810 --> 00:38:17.210
dmitriy: так я еще раз просмотрел Там нас было ноль один два три

404
00:38:17.540 --> 00:38:20.160
dmitriy: Дальше Мы значения никак не меняли.

405
00:38:20.390 --> 00:38:21.230
Михаил Непряхин: Да.

406
00:38:22.170 --> 00:38:22.980
dmitriy: А

407
00:38:23.160 --> 00:38:25.890
dmitriy: викс это У нас

408
00:38:27.680 --> 00:38:30.700
dmitriy: ноль два три а

409
00:38:31.910 --> 00:38:34.540
dmitriy: так ну так как. Вы все У нас

410
00:38:35.140 --> 00:38:37.080
dmitriy: Сынок опасности осталось

411
00:38:37.350 --> 00:38:39.520
dmitriy: четыре охотиланда. Один

412
00:38:39.820 --> 00:38:41.590
dmitriy: Мы Там Добавляли.

413
00:38:44.960 --> 00:38:48.690
Михаил Непряхин: Но смотрят икс уже Давно викс уже Давно в этом состоянии

414
00:38:49.100 --> 00:38:50.230
Михаил Непряхин: так что.

415
00:38:50.230 --> 00:38:51.010
dmitriy: Да

416
00:38:51.300 --> 00:38:55.330
dmitriy: а да здесь тогда он Будет скопирован отдельно

417
00:38:56.980 --> 00:39:03.330
dmitriy: то есть в конце Мне кажется, что Будет но там правильно подсказывают что ноль

418
00:39:03.850 --> 00:39:07.460
dmitriy: два три три потому, что у нас в эксе

419
00:39:08.180 --> 00:39:10.530
dmitriy: в первом случае мы еще

420
00:39:10.680 --> 00:39:11.450
dmitriy: А

421
00:39:11.600 --> 00:39:13.520
dmitriy: показывали на тот массив

422
00:39:13.990 --> 00:39:15.460
dmitriy: переменная

423
00:39:16.220 --> 00:39:20.410
dmitriy: и мы поменяли там значение а в конце уже будет Другой, мось

424
00:39:20.770 --> 00:39:21.790
dmitriy: а

425
00:39:22.950 --> 00:39:27.500
dmitriy: ну будет указатель уже на Другой, массив отдельно будет создаваться,

426
00:39:28.180 --> 00:39:31.270
dmitriy: вот это будут разные Массивы то и здесь мы уже

427
00:39:31.650 --> 00:39:34.740
dmitriy: аа никак не трогаем массив а.

428
00:39:35.560 --> 00:39:38.920
Михаил Непряхин: Так короче прогноз такой что здесь будет Ноль два три три три.

429
00:39:39.230 --> 00:39:42.760
dmitriy: И сказали в чате.

430
00:39:43.010 --> 00:39:44.280
Михаил Непряхин: Ммм.

431
00:39:44.280 --> 00:39:45.820
dmitriy: Ноль ноль два три три.

432
00:39:46.240 --> 00:39:52.500
Михаил Непряхин: Так хорошо он давайте соседи меня уж сам запутался давайте по а подумаем что что выведет, а.

433
00:39:54.020 --> 00:39:57.430
dmitriy: Так на Ноль два три три потому что Но.

434
00:39:57.430 --> 00:39:58.910
Михаил Непряхин: А ноль два три три.

435
00:39:58.910 --> 00:40:02.190
dmitriy: Да потому Что мы еще в первом аппенде

436
00:40:02.480 --> 00:40:10.640
dmitriy: еще да могли достучаться до того массива а во втором случае у нас создается уже другой. Массив и указательно другой. Массив совсем.

437
00:40:10.840 --> 00:40:11.990
Михаил Непряхин: Нет смотрите

438
00:40:12.360 --> 00:40:18.030
Михаил Непряхин: а Эй вообще Не мутировался Эй это орей а он как Бы

439
00:40:18.790 --> 00:40:29.160
Михаил Непряхин: а так Сейчас подождите да-да он под Капотом и свайся да все правильно да-да-да я здесь сам запутался все правильно да мы же его тут меняли эти значения

440
00:40:29.580 --> 00:40:31.840
Михаил Непряхин: так ноль два три три

441
00:40:32.100 --> 00:40:36.490
Михаил Непряхин: ну потому, что здесь мы типа три да записали а здесь мы второй три почему записали

442
00:40:37.070 --> 00:40:41.660
Михаил Непряхин: потому, что мы типа взяли икс икс был состояние ноль два три

443
00:40:42.030 --> 00:40:43.490
Михаил Непряхин: сленом три

444
00:40:43.820 --> 00:40:45.820
Михаил Непряхин: и сделали типа Один раса пэнт

445
00:40:45.990 --> 00:40:48.640
Михаил Непряхин: и три добавился сюда

446
00:40:49.230 --> 00:40:56.760
Михаил Непряхин: и изменил, изначальный массив гм а потом мы добавили еще тройку и вот здесь-то мы и разъехались

447
00:40:56.890 --> 00:41:00.310
Михаил Непряхин: и Сейчас это уже вообще свой самостоятельный массив

448
00:41:00.640 --> 00:41:02.050
Михаил Непряхин: а здесь

449
00:41:02.820 --> 00:41:03.510
Михаил Непряхин: да и

450
00:41:04.080 --> 00:41:06.620
Михаил Непряхин: под Капотом остался прежний

451
00:41:08.250 --> 00:41:08.830
Михаил Непряхин: а можно.

452
00:41:08.830 --> 00:41:12.770
David R: Сразу, Пока мы не Вывели результата.

453
00:41:12.770 --> 00:41:13.400
Михаил Непряхин: Мне Интересно.

454
00:41:13.400 --> 00:41:25.830
David R: Когда мы и.

455
00:41:25.830 --> 00:41:35.400
Михаил Непряхин: Мы ссылаемся с Вами в свой указатель тому в том-то и дело, вот Даже я вот Сейчас вот на этом это смотрели я упустил, тот момент да что вот здесь вот висе

456
00:41:35.500 --> 00:41:51.840
Михаил Непряхин: Мы указатель То, есть даже можно было вот вот наверное надо разделять вью вот Вью Там вот такое ну Под капотом Там будет указатель вот на этот вот не верхний мотив

457
00:41:52.170 --> 00:42:08.390
Михаил Непряхин: и Поэтому наверное даже хорошо бы его тоже менять потому, что это же стоит наш да то есть это наш стейт то есть грубо говоря ну, здесь вот только ему взяли ну, уью другой то есть мы смотрим на вот здесь мы смотрим на первый элемент

458
00:42:08.540 --> 00:42:11.920
Михаил Непряхин: верну вот на первый элемент это а здесь мы на третий четвертый.

459
00:42:12.410 --> 00:42:28.070
David R: Не о чем-то ну тут у меня в голове немного Другая картина Что когда мы берем срез от Слайса мы получается все равно в первое Копируем Второе но из За того Что сласть под капотом Это указатель То указатель Копируется и получается То же самое

460
00:42:28.070 --> 00:42:36.280
David R: А тут-то У нас мы в слайс копируем срез от массива А массива это же Не указатель А уже значение.

461
00:42:38.060 --> 00:42:42.290
Михаил Непряхин: Ну, это не то что мы копируем Тут надо читать что мы не копируем мы.

462
00:42:42.290 --> 00:42:46.280
David R: Что У нас есть знак присвоения То Это Не копирование.

463
00:42:47.810 --> 00:42:57.830
Михаил Непряхин: Э, нет Это смотрите Это надо во Первых вот Это вот создает вью на этот вот массив то, Есть Мы создали на Него вью

464
00:42:58.070 --> 00:43:00.910
Михаил Непряхин: и поместили Это в ю викс

465
00:43:01.140 --> 00:43:13.270
Михаил Непряхин: несмотря на То Что, здесь да и Присваивание Ну новую Перемену все-таки Заводим Но Мы Там под капотом имеем указательно, вот тот вот изначальный вот этот вот массив

466
00:43:13.920 --> 00:43:22.350
Михаил Непряхин: вот аа просто Мы смотрим на разные части вот икс смотрит на начало ну, на первый элемент он смотрит да Только вот на эту часть Вью у Него

467
00:43:22.570 --> 00:43:27.400
Михаил Непряхин: вот а здесь у Него Вью ну вот на последние два Элемента

468
00:43:28.080 --> 00:43:31.970
Михаил Непряхин: дальше здесь Мы аппендиум икс игрок

469
00:43:32.270 --> 00:43:33.420
Михаил Непряхин: и

470
00:43:34.220 --> 00:43:37.380
Михаил Непряхин: Так Давайте Еще Раз значит икс У, нас

471
00:43:37.540 --> 00:43:41.230
Михаил Непряхин: сленом один значит мы будем копировать

472
00:43:41.410 --> 00:43:53.590
Михаил Непряхин: перезатирать вот этот массив начиная со второго Элемента чем мы их будем перезатирать будем перезадирать Двойкой и Тройкой потому что игрок это два и три получится вот вот в Этом отмести

473
00:43:54.070 --> 00:43:57.360
Михаил Непряхин: Мы делаем такую штуку два три

474
00:43:57.860 --> 00:44:03.320
Михаил Непряхин: то есть Мы здесь вот изменили изначальный массив под капот Он Там Получился ноль два три три

475
00:44:04.140 --> 00:44:10.710
Михаил Непряхин: а Дальше Дальше ну, а вью здесь будет да ноль два Трепнушь вот Мы на эту часть массива теперь, смотрим

476
00:44:11.190 --> 00:44:17.300
Михаил Непряхин: дальше мы берем эту часть потому что их теперь, поменялся он теперь, вот такой вот

477
00:44:17.510 --> 00:44:19.450
Михаил Непряхин: и в него аппенди

478
00:44:19.760 --> 00:44:23.710
Михаил Непряхин: опять, два три получается Мы здесь

479
00:44:24.200 --> 00:44:27.420
Михаил Непряхин: такие все-таки двойку имеем

480
00:44:27.550 --> 00:44:35.260
Михаил Непряхин: и Мы получается двойка и вот эту перезатираем потому, Что, здесь лен был три значит Мы будем писать сюда Мы двойку здесь перезаотрем

481
00:44:37.000 --> 00:44:44.020
Михаил Непряхин: а разве не, Создается Новый Год вот я вот я короче не, помню вот типа Он создастся

482
00:44:44.630 --> 00:44:55.660
Михаил Непряхин: в момент когда Он поймет Что количество элементов У Него Не Хватает или Он создастся По Одному будет добавлять ну. Давайте простождаем как на месте разработчиков мы бы сделали

483
00:44:55.660 --> 00:45:12.850
Михаил Непряхин: я бы проверил лен у того что, принимаю вот так вот теоретически я бы проверил лен и значит Я бы Не По одной бы Штуке Я Пендил и значит все-таки Мы Наверное Изначально с вами все-таки Не Будем Трогать и как Будто Там должно Остаться Ноль два - три

484
00:45:13.000 --> 00:45:30.500
Михаил Непряхин: а вот здесь Мы уже получаем абсолютно другой массив и

485
00:45:30.780 --> 00:45:33.890
Михаил Непряхин: Так ну и два три два или да то есть

486
00:45:34.420 --> 00:45:38.260
Михаил Непряхин: здесь получается, должно быть вот так вот

487
00:45:38.800 --> 00:45:41.770
Михаил Непряхин: а здесь ноль два три три ну потому что, вот это вот да

488
00:45:42.160 --> 00:45:48.530
Михаил Непряхин: ну вот вопрос вопрос только в Этой двойке здесь двойка или тройка типа я думаю что он двойка не зимой.

489
00:45:48.530 --> 00:45:50.010
dmitriy: Я тоже думаю что Двойка.

490
00:45:50.010 --> 00:45:52.130
Михаил Непряхин: Ну вот Нет.

491
00:45:52.410 --> 00:45:53.410
dmitriy: Ага.

492
00:45:53.410 --> 00:46:00.520
Михаил Непряхин: Значит все таки Нет проверки на лен того Что Мы Принимаем значит вот в Этом месте

493
00:46:00.840 --> 00:46:12.300
Михаил Непряхин: Мы по одному элементу добавляем то есть типа мы берем изначально вот этот вот слайс видим что у него лен три еще можем один элемент Добавить добавляем его

494
00:46:12.490 --> 00:46:13.680
Михаил Непряхин: и

495
00:46:13.880 --> 00:46:16.940
Михаил Непряхин: перезатираем изначально вот этот вот

496
00:46:18.780 --> 00:46:24.230
Михаил Непряхин: ну он так и так он и так был три, ну мы его еще Раз, затираем в тройку значит

497
00:46:25.240 --> 00:46:26.130
Михаил Непряхин: а вот

498
00:46:29.520 --> 00:46:40.640
Михаил Непряхин: Так подождите а Почему общая здесь три Мы же ведь, начинаем стройки ведь, у Икса лен три значит Мы в четвертый элемент был на даче четвертый? Элемент да вот мы Тройку эту

499
00:46:41.130 --> 00:46:45.390
Михаил Непряхин: ночь У нас здесь Двойка в игроке, мы должны начинать двойки

500
00:46:46.080 --> 00:46:48.790
Михаил Непряхин: ну короче здесь Загадка двери

501
00:46:49.100 --> 00:46:51.850
Михаил Непряхин: Мне чуть Самому непонятно Почему все-таки здесь Тройка

502
00:46:52.730 --> 00:46:56.400
Михаил Непряхин: А ну потому Что. Окей Да он такой Создаю Новый

503
00:46:59.090 --> 00:47:00.780
Михаил Непряхин: М

504
00:47:01.610 --> 00:47:04.070
Михаил Непряхин: короче Я забыл почему здесь тройка

505
00:47:04.690 --> 00:47:11.490
Михаил Непряхин: ээ ветер запутается очень легко и специальная задача на Запутывание хорошо Давайте еще Раз, внимательно Посмотрим

506
00:47:11.820 --> 00:47:17.580
Михаил Непряхин: сексом вопросов Нет правильно то есть икс у нас в линия три.

507
00:47:20.290 --> 00:47:24.400
Михаил Непряхин: Что мы забираем и микс изначальный икслен один

508
00:47:24.660 --> 00:47:31.330
Михаил Непряхин: мы добавляем в него два элемента два три. Получается ноль два три давайте увидим здесь

509
00:47:35.490 --> 00:47:40.870
Михаил Непряхин: там уже подсказали.

510
00:47:40.870 --> 00:47:41.630
dmitriy: Да и.

511
00:47:46.320 --> 00:47:52.970
Михаил Непряхин: Да вот то есть здесь настолько двухэтажная конструкция то есть вот надо вью

512
00:47:54.370 --> 00:47:57.150
Михаил Непряхин: да видите даже вот когда записываешь

513
00:47:57.360 --> 00:48:01.860
Михаил Непряхин: потому что игрек смотрит вот на этот участок а он три три Правильно

514
00:48:02.060 --> 00:48:05.310
Михаил Непряхин: он три три ну и вот собственно мы этот тритрий добавляем

515
00:48:06.080 --> 00:48:11.060
Михаил Непряхин: и ну все равно конечно вопрос тогда да с добавлением давайте тогда здесь

516
00:48:11.940 --> 00:48:13.380
Михаил Непряхин: добавим

517
00:48:14.440 --> 00:48:19.770
Михаил Непряхин: Мне просто хочется Понять э типа в какой момент происходит авокация

518
00:48:20.480 --> 00:48:21.350
Михаил Непряхин: Так

519
00:48:21.710 --> 00:48:25.220
Михаил Непряхин: мы просто в игроке заменим элемент

520
00:48:27.660 --> 00:48:30.260
Михаил Непряхин: это какой будет элемент второй

521
00:48:34.930 --> 00:48:39.390
Михаил Непряхин: а нет Нулевой элементар заменить Нулевой элемент заменим на

522
00:48:40.150 --> 00:48:41.140
Михаил Непряхин: девять

523
00:48:41.320 --> 00:48:47.720
Михаил Непряхин: вот и короче говоря если, здесь У нас Сейчас в игре игры получается Вот такой Вот

524
00:48:47.880 --> 00:48:51.530
Михаил Непряхин: здесь Будет начинаться с Девятки и здесь тоже Девятка Будет

525
00:48:54.550 --> 00:48:56.630
Михаил Непряхин: так и когда мы

526
00:48:56.830 --> 00:48:59.310
Михаил Непряхин: только не в этом месте он в этом месте надо Добавить

527
00:49:00.810 --> 00:49:03.390
Михаил Непряхин: вот у меня здесь вот он девятка

528
00:49:05.570 --> 00:49:09.560
Михаил Непряхин: так и Вопрос в этом свайсе

529
00:49:09.920 --> 00:49:18.780
Михаил Непряхин: будет конечно же. Девятка потому. Что ну. Тут-то мы добавим девять три добавляем поменяется ли в изначальном сальсе ну. Да поменяется я его и так сам тут поменял

530
00:49:19.050 --> 00:49:29.660
Михаил Непряхин: ну короче ладно вот вот смотрите как бы Очень, много почвы для экспериментов как Можно поэкспериментировать еще вообще как бы классная идея

531
00:49:30.000 --> 00:49:38.600
Михаил Непряхин: а что вы Ммм придумываете эээ задание для собеседования то есть вот у вас задача прособеседовать гушника да

532
00:49:38.930 --> 00:49:45.300
Михаил Непряхин: и гошник. Уже выучил, вот эти вот все задачи вот там не знаю приснился эти три сдачи есть он их выучил,

533
00:49:45.610 --> 00:49:53.290
Михаил Непряхин: у вас задача придумать такую задачу Чтобы Это было что. То новенькое ну Чтобы Это было вот про Это же самое но что. Нибудь новенькое

534
00:49:53.430 --> 00:49:57.710
Михаил Непряхин: и вот это было дез на следующее занятие

535
00:49:57.960 --> 00:50:08.740
Михаил Непряхин: короче попридумывайте задачки и там самое интересное Я думаю даже все подряд постепенно будем Решать потому что как бы, вот эта вот база основная такая штука то есть важно Иметь, терять и сдачи

536
00:50:09.070 --> 00:50:13.180
Михаил Непряхин: о том что вы просто дальше первого вопроса на собесе Не продвинетесь

537
00:50:14.330 --> 00:50:15.160
Михаил Непряхин: вот

538
00:50:15.580 --> 00:50:17.940
Михаил Непряхин: ладно Давайте отдохнем и

539
00:50:18.170 --> 00:50:19.190
Михаил Непряхин: продолжим

540
00:55:11.110 --> 00:55:12.560
Михаил Непряхин: так и

541
00:55:13.310 --> 00:55:16.340
Михаил Непряхин: что Еще хотел сказать про Маму про Кэш

542
00:55:16.480 --> 00:55:24.720
Михаил Непряхин: так ванна Давайте Тут надо про планировщик рассказать и в следующий Раз, про мапу тут, не так сложно

543
00:55:26.640 --> 00:55:29.110
Михаил Непряхин: тогда говорим про планировщик

544
00:55:30.760 --> 00:55:31.530
Михаил Непряхин: да и

545
00:55:33.500 --> 00:55:40.670
Михаил Непряхин: вот значит Типичный, сервер на гол. Ну Вы Же это Как бы самый Простой вариант написать сервер

546
00:55:41.090 --> 00:55:55.310
Михаил Непряхин: значит если Не знаю там в Пхп Киллер Фитча это была в свое время что можно письмо отправить одной строкой то вот в Голову. По сути киллер фитча что можно написать сервер ну почти одной строкой она тут, словно как бы

547
00:55:55.460 --> 00:56:07.700
Михаил Непряхин: вот Можно не обрабатывать ошибку не выводить логики и не обрабатывать здесь ошибку вот в трестаки а еще вот Это Можно сделать Тоже, функцией,

548
00:56:08.600 --> 00:56:10.240
Михаил Непряхин: вот так вот Вы здесь

549
00:56:11.920 --> 00:56:13.790
Михаил Непряхин: вот и вот будет

550
00:56:14.770 --> 00:56:18.120
Михаил Непряхин: будет сервер одной строкой

551
00:56:18.960 --> 00:56:19.940
Михаил Непряхин: плюс минус

552
00:56:20.310 --> 00:56:24.700
Михаил Непряхин: короче сервера на Голову. Пишутся Реально ничего Не обрабатывать

553
00:56:24.820 --> 00:56:25.620
Михаил Непряхин: вот

554
00:56:26.170 --> 00:56:28.640
Михаил Непряхин: еще вот это в одну, строку можно сделать

555
00:56:28.840 --> 00:56:35.340
Михаил Непряхин: ну почти почти одна строка Две строки окей ну как бы написать сервер на Две, Стальги

556
00:56:35.480 --> 00:56:36.630
Михаил Непряхин: ну как, бы

557
00:56:37.020 --> 00:56:44.010
Михаил Непряхин: другие языки, ну еще бы он был там Реально синхронный держал нагрузки, вот этот вот

558
00:56:44.270 --> 00:56:46.020
Михаил Непряхин: вот этот вариант кода,

559
00:56:46.320 --> 00:56:48.660
Михаил Непряхин: он Держит нагрузки, где-то

560
00:56:49.360 --> 00:56:56.440
Михаил Непряхин: ну. Где то семьдесят к рпс то есть вот вот эта вот простая конструкция бойня Рот Семьдесят э

561
00:56:58.820 --> 00:57:00.630
Михаил Непряхин: Семьдесят тысяч

562
00:57:00.770 --> 00:57:01.990
Михаил Непряхин: на запросов

563
00:57:03.300 --> 00:57:04.920
Михаил Непряхин: в секунду

564
00:57:06.340 --> 00:57:13.830
Михаил Непряхин: Что как бы ну Прям дофига то Есть как бы если подумать а Об этом

565
00:57:14.060 --> 00:57:19.940
Михаил Непряхин: Что У нас ра семьдесят тысяч Раз в Секунду кто. То обращается

566
00:57:20.280 --> 00:57:23.650
Михаил Непряхин: то У как возникает вопрос а как Это работает

567
00:57:23.980 --> 00:57:35.440
Михаил Непряхин: Уж. Если Мы Возьмем какой-нибудь эпачей сервера да там самый древний то там на каждый запрос создается отдельный ну форкается процесс

568
00:57:35.570 --> 00:57:41.660
Михаил Непряхин: и создается свой поток в процессе для обработки этого Запроса

569
00:57:41.780 --> 00:57:51.730
Михаил Непряхин: и ну Если, мы семьдесят тысяч потоков. Будем создавать Секунду ну во-первых Линукс так быстро. Не насоздается только ну он очень быстро. Умрет

570
00:57:52.160 --> 00:58:10.330
Михаил Непряхин: вот если говорить если посмотреть а кто умеет так так умеет инженкс то есть и

571
00:58:10.750 --> 00:58:17.520
Михаил Непряхин: си и у него похоже как бы идеи очень похожие с гол. Поэтому Он Тоже. Так Умеет

572
00:58:18.660 --> 00:58:27.670
Михаил Непряхин: а Но это Все-таки си и Там Так просто ничего Не Написать Не на инженгге. Это просто проксисервира а там Конфликт Какой есть такой есть а здесь, все-таки Конференция

573
00:58:27.890 --> 00:58:37.030
Михаил Непряхин: и и

574
00:58:37.550 --> 00:58:44.340
Михаил Непряхин: си плюс плюс либо. Подобное Ну в общем то на Расте тоже Есть а там три варианта

575
00:58:44.910 --> 00:58:47.920
Михаил Непряхин: два как минимум варианта тоже Раз

576
00:58:48.200 --> 00:58:49.680
Михаил Непряхин: У сервера на расте

577
00:58:50.150 --> 00:58:59.770
Михаил Непряхин: и ну. Там цифры тоже будет чуть побольше там будет что-нибудь около. Ста пятидесяти карпеса ну и здесь тоже будет что-то около.

578
00:58:59.880 --> 00:59:04.770
Михаил Непряхин: Ста пятидесяти рпс ну я Имею в виду если запускать вот просто на вашем железе плюс минус

579
00:59:05.080 --> 00:59:12.580
Михаил Непряхин: на самом деле и гоу тоже сопоставимо может выдать эти сто пятьдесят карпов

580
00:59:13.040 --> 00:59:20.420
Михаил Непряхин: Для этого есть сервер написанный максимально оптимальным образом называется

581
00:59:20.860 --> 00:59:22.070
Михаил Непряхин: фасо Дтп

582
00:59:24.750 --> 00:59:29.260
Михаил Непряхин: значит есть вот разработчик,

583
00:59:29.780 --> 00:59:34.640
Михаил Непряхин: вальява Ну Там у него фамилия вальякин что ли как то так

584
00:59:35.320 --> 00:59:37.590
Михаил Непряхин: а двадцать Две тысячи звездочек то есть

585
00:59:37.980 --> 00:59:42.190
Михаил Непряхин: популярный популярный популярная популярная библиотека

586
00:59:42.440 --> 00:59:56.050
Михаил Непряхин: ханда написано Сто процентов на гол и вот она выдает в Принципе этот сервер выберет Тоже. Около, ста пятидесяти карпеса то есть Сопоставимо с плюсами и с Растом Он просто не Рекомендуется его использовать потому что

587
00:59:56.740 --> 01:00:14.560
Михаил Непряхин: когда вы начинаете все делать в оптимизацию вы уродуете код и это как бы неизбежно то есть там например, под капотом и

588
01:00:14.560 --> 01:00:27.030
Михаил Непряхин: на конвертациях Там много ансейфа Используется Там переиспользоваться пулы и так далее ну короче говоря и

589
01:00:27.370 --> 01:00:36.530
Михаил Непряхин: а вот до десяти типа Раз, быстрее чем, обычный энерго Дтп, антон и Дтп, Это имеется в виду вот Наш стандартная библиотека на Дтп,

590
01:00:36.930 --> 01:00:41.290
Михаил Непряхин: вот Поэтому Рекомендуется использовать просто обычный

591
01:00:41.700 --> 01:00:54.090
Михаил Непряхин: сервер ну минус в том Что У него с роутингом не очень все хорошо и Поэтому роутинг обычно используем другой Я рекомендую использовать чи Роутер

592
01:00:54.220 --> 01:00:57.500
Михаил Непряхин: а что библиотека чии

593
01:00:58.340 --> 01:01:08.680
Михаил Непряхин: чероутер и раз называется роутер на самом деле как бы нас Интересует ну тоже популярный доволенский двадцать тысяч Звездочек нас больше всего интересует именно роутинг то есть как бы

594
01:01:09.260 --> 01:01:24.250
Михаил Непряхин: и не очень удобно в стандартном сервере и

595
01:01:24.820 --> 01:01:25.610
Михаил Непряхин: вот

596
01:01:26.230 --> 01:01:35.270
Михаил Непряхин: значит как же, это достигается черт побери в гол, достигается Это ну. Собственно во всех. Этих вариантах с Помощью так называемых

597
01:01:35.390 --> 01:01:36.740
Михаил Непряхин: а

598
01:01:37.030 --> 01:01:38.990
Михаил Непряхин: кортин

599
01:01:43.010 --> 01:01:44.440
Михаил Непряхин: и или

600
01:01:44.690 --> 01:01:46.280
Михаил Непряхин: конкарантии

601
01:01:46.390 --> 01:01:53.900
Михаил Непряхин: или Оно же синхронность многопоточная то есть Кооперативная многозадачность

602
01:01:54.630 --> 01:01:56.310
Михаил Непряхин: и

603
01:01:58.230 --> 01:02:01.810
Михаил Непряхин: что это такое еще гринтре это называют зеленые потоки

604
01:02:02.510 --> 01:02:04.060
Михаил Непряхин: для того чтобы понять

605
01:02:04.220 --> 01:02:05.230
Михаил Непряхин: что это

606
01:02:05.860 --> 01:02:16.140
Михаил Непряхин: нужно немножечко разобраться как устроен планировщик в операционной системе Мы будем говорить про линукс потому что нас интересует

607
01:02:16.640 --> 01:02:19.100
Михаил Непряхин: Только лину послушно сервера работает лингс

608
01:02:19.390 --> 01:02:21.820
Михаил Непряхин: вот и

609
01:02:22.230 --> 01:02:23.920
Михаил Непряхин: Мы сейчас порисуем немножко

610
01:02:27.110 --> 01:02:41.910
Михаил Непряхин: опять же Там этот компьютер сайнс это все очень сложно Там куча оптимизации нам, важно понимать Не просто вот на каком-то бытовом Уровне, минимально какие-то ключевые особенности планировщика

611
01:02:42.270 --> 01:02:44.700
Михаил Непряхин: чтобы Не сесть в лужу на Собеседование

612
01:02:45.220 --> 01:02:53.710
Михаил Непряхин: ну. И для жизни конечно Тоже это как Бы неплохо понимать знать это Поэтому в Принципе тут двух зайцев мы убиваем

613
01:02:54.810 --> 01:03:03.020
Михаил Непряхин: да значит во Первых нужно понимать что вот есть физическое ядро процессора

614
01:03:04.130 --> 01:03:06.690
Михаил Непряхин: Ну как бы каким. Он интересовался да распию

615
01:03:07.210 --> 01:03:09.540
Михаил Непряхин: и память

616
01:03:11.340 --> 01:03:12.390
Михаил Непряхин: оперативные

617
01:03:13.040 --> 01:03:22.100
Михаил Непряхин: и надо понимать Что Мы доступы напрямую к ней не Имеем вообще Никогда Мы Всегда работаем с пью и с памятью через прослойку

618
01:03:23.110 --> 01:03:25.930
Михаил Непряхин: блинкся ну, словно зовем

619
01:03:26.710 --> 01:03:28.140
Михаил Непряхин: ядро. Линукса.

620
01:03:31.860 --> 01:03:39.750
Михаил Непряхин: Вообще в операционной системе мы разделяем и

621
01:03:39.860 --> 01:03:52.260
Михаил Непряхин: оно выполняет только привилегирован как бы мы не имеем туда доступа мы только можем торчат ручки и можем какие то системные вызовы делать вот а мы работаем в юзер спейсе

622
01:03:55.740 --> 01:04:10.460
Михаил Непряхин: и это, вот еще одна абстракция то есть вот мы грубо говоря в своем нью-йорке спейси говорим сделай нам что-то и вот Таким образом можем достучаться ну Или Мы просто говорим выполняя нашу программу,

623
01:04:10.460 --> 01:04:23.380
Михаил Непряхин: и она у нас выполняется и Там имеет доступ к памяти или Мы допустим Хотим, что-нибудь записать на диск Мы просто говорим системный вызов запиши нам что-то на диск и Там оно записывается

624
01:04:25.370 --> 01:04:29.610
Михаил Непряхин: и дальше Так как Мы не одни

625
01:04:29.970 --> 01:04:31.890
Михаил Непряхин: вы в операционной системе

626
01:04:32.610 --> 01:04:36.460
Михаил Непряхин: а вообще как бы изначально сипью был Один

627
01:04:36.740 --> 01:04:48.000
Михаил Непряхин: и фишка в том что и

628
01:04:48.060 --> 01:05:06.700
Михаил Непряхин: к этому компьютеру То есть эти большие компьютеры имел доступ имел доступ большое количество Людей и они просто ставили задачу на выполнение и они там постепенно выполнялись и как бы эта же Идея потом перенеслась и в линокс и Идея в том Что У нас

629
01:05:06.980 --> 01:05:16.610
Михаил Непряхин: есть иллюзия Что программа Выполняется Одновременно Но на самом деле когда У нас Салоги на одно, Иного Процесса программы Выполняются Не Одновременно

630
01:05:16.810 --> 01:05:26.980
Михаил Непряхин: а они все равно выполняются по очереди но так. Как Это происходит быстро у нас иллюзия Что Это происходит Одновременно как Это достигается Это достигается за счет Планирования

631
01:05:30.850 --> 01:05:45.680
Михаил Непряхин: аа то есть Операционная система сама говорит сколько Времени, какая Программа, должна поработать то есть ну там условно ноль две секунды то есть вот дается ноль Две Секунды ну или то Же самое Что двести Э милли Секунд

632
01:05:46.330 --> 01:06:04.410
Михаил Непряхин: и Программа, вот мы ее Запустили Она У нас бинарник запустился и

633
01:06:04.880 --> 01:06:05.680
Михаил Непряхин: вот

634
01:06:06.100 --> 01:06:09.200
Михаил Непряхин: что еще важно понимать когда мы запускаем

635
01:06:10.560 --> 01:06:12.420
Михаил Непряхин: наш бинарник

636
01:06:12.560 --> 01:06:15.460
Михаил Непряхин: в линусе то создается процесс

637
01:06:17.330 --> 01:06:19.450
Михаил Непряхин: а как бы первый абстракт это процесс

638
01:06:20.350 --> 01:06:27.000
Михаил Непряхин: а но не процесс исполняется Физически на игре а трэд

639
01:06:29.700 --> 01:06:34.750
Михаил Непряхин: то есть в этом процессе обязательно как, минимум есть один, тренд

640
01:06:34.970 --> 01:06:39.750
Михаил Непряхин: и вот этот ретт и является, единицей выполнения на камне

641
01:06:40.690 --> 01:06:41.940
Михаил Непряхин: и и

642
01:06:42.180 --> 01:06:49.990
Михаил Непряхин: он должен быть как минимум один но когда мы запускаем Наш, губинарный код он возникает этот ретт и Там программа выполняется

643
01:06:50.470 --> 01:06:55.370
Михаил Непряхин: вгу У нас По количеству ядер поднимается Количество тредов

644
01:06:55.730 --> 01:07:03.120
Михаил Непряхин: но если Мы возьмем классическую какую-то программу ну вот поднимается трое допустим если Мы берем апачего тот же какой-нибудь сервер

645
01:07:03.340 --> 01:07:04.850
Михаил Непряхин: пришел один запрос

646
01:07:05.900 --> 01:07:08.690
Михаил Непряхин: а поднимается еще один тред

647
01:07:09.600 --> 01:07:12.540
Михаил Непряхин: и этот запрос выполняется

648
01:07:13.160 --> 01:07:19.370
Михаил Непряхин: это втрадья Пришел Еще один запрос Еще один ряд поднимать цветы они Там параллельно, выполняются Ну, как параллельно,

649
01:07:20.910 --> 01:07:28.250
Михаил Непряхин: а если У нас одно, ядро, процессора То вовсе не параллельно, а там один тред поработал

650
01:07:28.540 --> 01:07:38.920
Михаил Непряхин: ну может быть не ноль две секунды поменьше другой трек проработал там ноль две секунды третий трек Поработал ноль Две, Секунды вот и Поэтому

651
01:07:39.560 --> 01:07:42.590
Михаил Непряхин: как бы Количество трудов, когда Мы пладим

652
01:07:42.980 --> 01:07:59.410
Михаил Непряхин: Мы и

653
01:07:59.570 --> 01:08:04.340
Михаил Непряхин: вот значит Ммм вот этот вот процесс когда Мы

654
01:08:04.810 --> 01:08:19.430
Михаил Непряхин: Даем поработать Одному Тряду, Снимаем его проходит время Персон его снимает и дает поработать Другому на Другом Траде и Это называется вот сам процесс Перехода называется контекст Свич

655
01:08:28.350 --> 01:08:31.770
Михаил Непряхин: что происходит При смене контекста

656
01:08:32.430 --> 01:08:49.569
Михаил Непряхин: ну смотрите для того чтобы просто вот тренд работал на процессоре нужно загрузить регистры нужно Там есть несколько регистров ну самый. Главный это регистр. Начала астека где у нас в каком состоянии стек указательно стек

657
01:08:50.120 --> 01:09:01.439
Михаил Непряхин: Э нужно загрузить какую-то минимальную ну Вот То что Мы Сейчас чтобы начать выполнять Инструкцию нужно загрузить Эту Инструкцию из памяти

658
01:09:01.670 --> 01:09:07.359
Михаил Непряхин: да У процессора есть Кэш Там Или один. Или два Или три то есть разные уровни ишей

659
01:09:07.470 --> 01:09:26.370
Михаил Непряхин: и и

660
01:09:26.370 --> 01:09:43.359
Михаил Непряхин: то эти пиши вымываются и потом при приключении контекста нам снова надо эти шиши опять. Из памяти Загружать а это долго Поэтому конечно круче когда бы у нас Один. Процесс очень долго Работал на одном и

661
01:09:43.359 --> 01:09:49.450
Михаил Непряхин: чем когда Мы вот то на одном Труде поработаем то на Другом Труде поработаем короче неэффективно

662
01:09:50.600 --> 01:09:54.220
Михаил Непряхин: есть такая оптимизация

663
01:09:54.740 --> 01:09:58.540
Михаил Непряхин: давно Которое кстати возникло называется

664
01:10:02.660 --> 01:10:05.890
Михаил Непряхин: а Гипертрейдинг Гипертрадинг

665
01:10:09.540 --> 01:10:11.230
Михаил Непряхин: Хайпер Трейдинг

666
01:10:14.220 --> 01:10:16.170
Михаил Непряхин: короче когда покупаете процессор

667
01:10:16.450 --> 01:10:31.620
Михаил Непряхин: то У процессора обычно в названии Ну типа как и

668
01:10:32.160 --> 01:10:44.300
Михаил Непряхин: а физических шестнадцать как же так получается реально физических ядер шестнадцать но производители Процессоров пишут тридцать Два потому. Что технология гипертрейдинг

669
01:10:44.730 --> 01:10:48.140
Михаил Непряхин: а Она умножает физические ядра на два

670
01:10:48.350 --> 01:10:54.750
Михаил Непряхин: получается тридцать два логических и как Будто бы у нас в два раза больше я ядер

671
01:10:55.040 --> 01:10:59.590
Михаил Непряхин: что это такое такая хитрая оптимизация зачем Она нужна

672
01:11:00.990 --> 01:11:12.300
Михаил Непряхин: значит просто добавляются дополнительные реально физическое ядро вот оно Одно, но добавляется вот немножечко регистров которые Позволяют

673
01:11:12.530 --> 01:11:21.120
Михаил Непряхин: Э Одновременно на одном ядре Работать двум Тредом то есть и Этот Рет может Работать и Этот ряд может Работать

674
01:11:21.660 --> 01:11:34.610
Михаил Непряхин: Если они делают, какую-то работу называемую сипию баунд то Есть ну уважение там Склярное перемножение То Есть Работают с Числами Прям

675
01:11:35.090 --> 01:11:45.880
Михаил Непряхин: То Проку От этого Не будет Потому что. Ну Регистры которые Этим занимаются они все на одном мидре Поэтому ну вот тут, все равно будет очередь этот будет работать один какой-то тред а второй будет ждать,

676
01:11:46.350 --> 01:11:51.030
Михаил Непряхин: это как бы называется такая такой тип Нагрузки называется сипию баунд

677
01:11:52.520 --> 01:12:10.390
Михаил Непряхин: и и

678
01:12:10.390 --> 01:12:15.210
Михаил Непряхин: вот а есть ли у вас характер Нагрузки айо баунд то есть это их два всего

679
01:12:15.490 --> 01:12:16.790
Михаил Непряхин: аю Баунти

680
01:12:19.120 --> 01:12:21.920
Михаил Непряхин: то есть айоу имеется в виду работа с сетью

681
01:12:22.850 --> 01:12:34.060
Михаил Непряхин: то ну вот сервера они же в основном сетью работают то вот здесь вот эта оптимизация работает потому что мы по большому счету занимаемся тем что ждем

682
01:12:34.180 --> 01:12:35.630
Михаил Непряхин: вау баунди

683
01:12:35.770 --> 01:12:47.470
Михаил Непряхин: то есть мы сделали запрос в сеть Сидя эта Жуткая. Медленная штука Мы ждем ответ. Мы Там, сделали хэндшейк Мы ждем ответ. Мы сделали запрос Мы ждем и там много как, бы этапов где надо ждать

684
01:12:47.710 --> 01:12:50.350
Михаил Непряхин: и вот в таком. Случае это дает выигрыш

685
01:12:51.210 --> 01:12:52.190
Михаил Непряхин: и

686
01:12:52.410 --> 01:12:54.740
Михаил Непряхин: и вот подобное что там

687
01:12:54.930 --> 01:12:58.440
Михаил Непряхин: то есть это как бы оптимизация на уровне операционки

688
01:12:59.010 --> 01:13:02.130
Михаил Непряхин: и и

689
01:13:02.390 --> 01:13:08.990
Михаил Непряхин: подобная же Идея она и в гоу реализована только как бы на более продвинутом уровне

690
01:13:09.980 --> 01:13:12.000
Михаил Непряхин: значит как это работает в гол

691
01:13:12.210 --> 01:13:22.810
Михаил Непряхин: гол вот если, у Нас Один цепию процессора гол не, поднимает на каждый запрос свой тред го работает в одном трезе

692
01:13:24.200 --> 01:13:26.370
Михаил Непряхин: поднял Один Тред гол

693
01:13:26.920 --> 01:13:29.410
Михаил Непряхин: и все и он в нем работает

694
01:13:29.790 --> 01:13:30.850
Михаил Непряхин: и

695
01:13:31.450 --> 01:13:36.840
Михаил Непряхин: все вся Моя ну как вся Работа она происходит Внутри этого тререда

696
01:13:37.180 --> 01:13:41.650
Михаил Непряхин: что Мы получаем Мы получаем экономию на Контекст свечи

697
01:13:42.370 --> 01:13:55.030
Михаил Непряхин: То есть на переключении контекста Мы очень много экономим потому что ну там ванна крыши это отдельная история потому что даже в этом случае коши вымываются вот но Мы Экономим над Тем что

698
01:13:55.420 --> 01:14:00.770
Михаил Непряхин: операционная система переключение между рядами Делает ну. Супер медленно

699
01:14:00.920 --> 01:14:07.840
Михаил Непряхин: Мы Можем просто взять один элемент ну. Там несколько элементов Самых важных Которые нам нужны

700
01:14:08.430 --> 01:14:24.380
Михаил Непряхин: ну. Что самое главное самое главное это выгрузить Текущий Текущий стек из регистра, в процессах и загрузить другой стек и вот это вот такая возможность нам портянку ее предоставляет Поэтому Мы просто внутри нашего Треда можем

701
01:14:24.710 --> 01:14:26.130
Михаил Непряхин: сымитировать

702
01:14:26.590 --> 01:14:40.030
Михаил Непряхин: как Будто бы переключение на Другой тред но остаться в рамках одного Тренда то есть вот Идея гоу в этом что, Мы экономим на Контексте свеча очень много экономим ну то есть Там настолько много что, это прямо,

703
01:14:40.100 --> 01:14:47.430
Михаил Непряхин: и имеет смысл ну и плюс Там когда Мы поднимаем тред и

704
01:14:49.060 --> 01:15:02.870
Михаил Непряхин: ну короче Там Операционка Же за Ним следит и как Бы это просто много ресурсов а когда Мы сами Там следим да нам приходится писать свой планровщик То это получается быстрее ну а когда спрашивают Задают вопрос то вы просто говорите контекст свич

705
01:15:02.940 --> 01:15:18.500
Михаил Непряхин: контекст вич переключение контекста то есть Разница между реальными тредами операционной системы и так. Называемыми корутинами Или гринтредами в том что эти курортины Или гринтреды они работают вот Там внутри

706
01:15:18.820 --> 01:15:34.310
Михаил Непряхин: и если этих вот реальных тредов Мы не можем поднимать Десятками сотнями Тысяч то вот эти вот Корутины зеленые Отреды Мы можем поднимать просто Десятками сотнями Тысяч внутри одного труда

707
01:15:34.420 --> 01:15:37.740
Михаил Непряхин: вот в этом основная идея

708
01:15:38.180 --> 01:15:38.900
Михаил Непряхин: и и

709
01:15:39.630 --> 01:15:41.580
Михаил Непряхин: кооперативной многозадачности

710
01:15:42.600 --> 01:15:45.810
Михаил Непряхин: а вот это вот называется

711
01:15:46.830 --> 01:15:58.210
Михаил Непряхин: вытесняющая многозадачность то есть как бы вообще вот ну две идеи есть По многозначности это вот вытесняющую многоздачность та которая влинуся в профессиональной системе ну и в Инде тоже ну винтаж заинтересует как нас начался длиннокс

712
01:15:58.570 --> 01:16:09.920
Михаил Непряхин: и кооперативная многозадачность она же кан карнси которая реализована в гошке ну и в том же джинсы-инвое и все остальное чтобы это Было быстро это только через это реализует

713
01:16:10.970 --> 01:16:12.060
Михаил Непряхин: и

714
01:16:12.530 --> 01:16:13.580
Михаил Непряхин: дальше.

715
01:16:23.410 --> 01:16:24.890
Konstantin: А может быстренький, вопрос.

716
01:16:24.890 --> 01:16:28.300
Михаил Непряхин: Да давайте у, вас вопрос есть хотим? Мы здесь сразу давайте.

717
01:16:30.680 --> 01:16:32.550
Konstantin: Да мальчик. Он вылетел с головы.

718
01:16:33.130 --> 01:16:33.810
Михаил Непряхин: И и.

719
01:16:34.160 --> 01:16:46.360
Konstantin: Да и.

720
01:16:46.360 --> 01:16:50.890
Михаил Непряхин: Да да да то есть смотреть один к одному вот как бы

721
01:16:51.050 --> 01:16:53.710
Михаил Непряхин: чтобы оно работало эффективно,

722
01:16:54.220 --> 01:16:55.450
Михаил Непряхин: и нужно

723
01:16:55.700 --> 01:17:05.360
Михаил Непряхин: чтобы вот в момент времени было количество отрядов равно количеству сипию если у нас шестнадцать -ю будет шестнадцать родов

724
01:17:06.380 --> 01:17:24.080
Михаил Непряхин: их на самом деле вот как бы это имеется в виду в моменте вот Что будет загрузить в театре процессора вот в моменте Одновременно будут работать шестнадцать родов но на самом деле гошка будет их поднимать больше потому что какие то ряды будут ждать например если вы с диском Работаете

725
01:17:24.210 --> 01:17:42.210
Михаил Непряхин: а здесь работать Можно только Синхронно ну не знаю может Там, какие-то есть уже насчет синхронной работы с Диском я такого не слышу но вот с Диском Мы например, на каждую операцию Там чтение записи диска Мы поднимаем свой собственный тред

726
01:17:42.330 --> 01:17:58.560
Михаил Непряхин: и он просто вот ну вот Реально поднимается под каждую эту операцию и вот ждет пока он там не прочитает Или Еще что-то а потом когда прочитают то будет работать но вот именно работать здесь и Сейчас в момент времени будет количество трудов по количеству сепеюянер

727
01:17:58.830 --> 01:18:08.300
Михаил Непряхин: этот параметр, настраиваемый и мы можем сказать что несмотря на то что нам, доступно шестнадцать дядя Сапию пожалуйста, работай все равно в одном

728
01:18:08.800 --> 01:18:12.500
Михаил Непряхин: это Единственная Строка которая у нас есть единственное чем, можем управлять.

729
01:18:13.410 --> 01:18:30.130
David R: Можно вопрос тоже по Предыдущей теме у нас получается если Запущено приложение госное приложение то оно занимает Один процесс внутри одного процесса Есть Один. Поток и Внутри Этого одного Подка Потока Мы можем запускать Сколько угодно карутин.

730
01:18:30.690 --> 01:18:33.670
Михаил Непряхин: Процесс процесс один все таки бот это все в одном.

731
01:18:33.670 --> 01:18:41.020
David R: Процентов да-да-да ну процесс Будет один атракт один процесс приложения и внутри приложения Должен быть как минимум один поток.

732
01:18:41.390 --> 01:18:42.080
Михаил Непряхин: Да.

733
01:18:42.400 --> 01:18:50.190
David R: И в этом одном, единственном Потоке ну допустим один единственный поток и Внутри этого Потока Мы можем запускать Сколько угодно гол, рутин.

734
01:18:50.190 --> 01:18:51.480
Михаил Непряхин: Да сколько угодно.

735
01:18:51.690 --> 01:18:59.350
David R: Вот и тут вопрос если у, нас железо одна ядерная то э

736
01:18:59.390 --> 01:19:12.050
David R: приложение гошное оно может это ядро захватить и Удерживать Или все Таки Линукс все равно будет принудительно переключать Контекст и Отдавать время и другим приложениям тоже.

737
01:19:12.050 --> 01:19:23.350
Михаил Непряхин: Конечно совершенно верно никто Не может Удерживать из юзерс спейса и никакое ядро линуксал ему дал поработать столько дал

738
01:19:23.500 --> 01:19:27.260
Михаил Непряхин: то есть мы изначально имеем дело

739
01:19:27.450 --> 01:19:37.240
Михаил Непряхин: с как бы сказать хозяином системы, увидели нукса и драллингса и вот сколько нам дадут поработать столько Мы поработаем

740
01:19:37.500 --> 01:19:42.110
Михаил Непряхин: Поэтому мы изначально живем вот в Этой парадигме

741
01:19:42.210 --> 01:19:53.190
Михаил Непряхин: что да вот здесь Внутри у нас будет кооперативная многозадачность но она выполняется внутри планировщика которая имеет вытесняющую Многозначность

742
01:19:53.300 --> 01:20:06.500
Михаил Непряхин: а никто Не может взять и захватить ядро. Вот сколько линукс дал, поработать лину сказал хватит и в этот момент Мы просто все сворачиваем и отдаем ресурсы линуксу ну он сам заберет

743
01:20:06.500 --> 01:20:21.860
Михаил Непряхин: не все и он там делает все что хочет вымывает наши каши и работает сколько угодно Времени занимается Своими делами и если у него, есть какие-то более приоритетные вещи и пока нам обратно Не отдадут возможность поработать мы тут это так и будем ждать, да.

744
01:20:21.860 --> 01:20:34.290
David R: А и.

745
01:20:34.290 --> 01:20:35.660
Михаил Непряхин: Да да да верно.

746
01:20:35.660 --> 01:20:37.040
David R: Все Окей Понял.

747
01:20:37.040 --> 01:20:37.670
Михаил Непряхин: Да

748
01:20:38.070 --> 01:20:42.360
Михаил Непряхин: то есть вот по Сути планировщик линукса занимается тем что у него, есть вот эти треды

749
01:20:42.920 --> 01:20:50.000
Михаил Непряхин: и просто, он одному утверждал. Поработать в следующем Году туда проводить следующему Отряду, порыв все каруселька Такова там то по птице крутится.

750
01:20:51.740 --> 01:21:08.470
Михаил Непряхин: То есть как бы абстракция простая и

751
01:21:08.680 --> 01:21:16.950
Михаил Непряхин: быстрый конечно Но это будет Не Гибко и Не получится вот Так вот Писать программу как раз Можно ногу.

752
01:21:19.390 --> 01:21:20.360
Илиас Эззахид: Сложный вопрос.

753
01:21:20.360 --> 01:21:21.390
Михаил Непряхин: Да здравствуйте.

754
01:21:22.160 --> 01:21:28.990
Илиас Эззахид: А в голландии Можно Там. Форкнуть процесс это работаешь работать. С тредами и с Процессами напрямую.

755
01:21:29.260 --> 01:21:42.320
Михаил Непряхин: Нет нельзя у нас Нет такой возможности вот особенность гоу что, Мы не управляем вот этим вот как оно там под капотом работает это то Есть вот если в других языках

756
01:21:42.320 --> 01:21:51.850
Михаил Непряхин: у нас Всегда Есть возможность поднять тренд Прям Есть такая инструкция здесь нет Мы только можем создать зеленый поток внутри

757
01:21:52.050 --> 01:22:00.640
Михаил Непряхин: а вот ну и сказать Сколько всего будет этих отрядов поднято не то Что поднят отрядов а Сколько Одновременно отрядов бодрого От Него

758
01:22:00.830 --> 01:22:06.060
Михаил Непряхин: все остальное никакого влияния ничего Не можем оказать все работает Романтически.

759
01:22:07.410 --> 01:22:11.780
Илиас Эззахид: А Следить можем то есть Это как Мужем Метрики.

760
01:22:11.780 --> 01:22:21.960
Михаил Непряхин: Можем и есть есть метрики да все можем Отследить а можно посмотреть вплоть там Прямо вообще до тончайшей работы и гарбочкой лекторов и сколько он Раз, запускался что делал. Все можем да

761
01:22:22.830 --> 01:22:25.790
Михаил Непряхин: профилирование очень хорошее в Голову. Все можно посмотреть

762
01:22:26.750 --> 01:22:33.120
Михаил Непряхин: так и у обамы От Этого чтения и записи нет а его баун когда Я Говорю его баун Это все-таки сеть

763
01:22:33.230 --> 01:22:36.490
Михаил Непряхин: и Как бы, Да конечно диск Это Тоже егобан Но

764
01:22:36.670 --> 01:22:45.460
Михаил Непряхин: Мы тут. Говорим если Сипью Баум значит Не знаю матрица Переумножаем на процессоры если айо баун это сервер сеть

765
01:22:45.630 --> 01:22:55.120
Михаил Непряхин: Да и

766
01:22:55.900 --> 01:22:58.860
Михаил Непряхин: так на состоянии нашего приложения в кэше будет

767
01:22:59.200 --> 01:23:11.010
Михаил Непряхин: ну, имеется в виду, вот кэше процессора у которого процессов конечно ну, конечно как бы он же все же через какие-то проходит потому что если Мы тут делаем запрос в памяти Ну Он хоть как в киеве окажется

768
01:23:11.310 --> 01:23:29.760
Михаил Непряхин: и если Контекст переключится и

769
01:23:32.000 --> 01:23:32.770
Михаил Непряхин: да

770
01:23:33.100 --> 01:23:34.620
Михаил Непряхин: да дальше

771
01:23:38.720 --> 01:23:42.270
Михаил Непряхин: значит Теперь Мы говорим про юзерс пейс

772
01:23:42.470 --> 01:23:52.090
Михаил Непряхин: Теперь Будем, говорить вот про Эту часть ну Смысл вот про всю Эту часть то есть планировщик вот мы с Ним Определились поняли Что он вытесняющий. Мы в нем работаем

773
01:23:53.370 --> 01:23:57.720
Михаил Непряхин: значит то есть У нас есть

774
01:23:57.920 --> 01:24:00.120
Михаил Непряхин: еще одна абстракция

775
01:24:00.600 --> 01:24:04.510
Михаил Непряхин: кроме планировщика линукса. Давайте теперь там нарисуем

776
01:24:04.800 --> 01:24:07.210
Михаил Непряхин: Два физических

777
01:24:07.350 --> 01:24:09.210
Михаил Непряхин: ядра процессором

778
01:24:10.300 --> 01:24:12.320
Михаил Непряхин: там память Куда там

779
01:24:13.330 --> 01:24:27.290
Михаил Непряхин: и еще про память надо сказать что вот когда мы в процессе находимся то все треды они разделяют общую память которая вот память на процессе то есть процесс нужен для того

780
01:24:27.490 --> 01:24:32.160
Михаил Непряхин: чтобы вот У нас вот этот Кусочек памяти У нас был

781
01:24:32.760 --> 01:24:36.730
Михаил Непряхин: и все отряды с этой памятью могут работать.

782
01:24:41.180 --> 01:24:42.040
Михаил Непряхин: А

783
01:24:45.160 --> 01:24:52.040
Михаил Непряхин: ну она даже не буду рисовать этот Кэрн ээ и Из ронукса? Вот просто имеем в виду Что, оно Там, есть

784
01:24:53.280 --> 01:24:54.140
Михаил Непряхин: так

785
01:24:56.370 --> 01:25:00.670
Михаил Непряхин: значит когда Мы понимаем поднимаем приложение

786
01:25:01.190 --> 01:25:04.240
Михаил Непряхин: гошная нас поднимается Один, процесс

787
01:25:05.630 --> 01:25:08.210
Михаил Непряхин: в процессе Вот у нас Два ядра была

788
01:25:08.310 --> 01:25:11.690
Михаил Непряхин: Два троллинукса в процессе у нас поднимется Два треда

789
01:25:13.120 --> 01:25:16.490
Михаил Непряхин: условно и там больше но Одновременно будут работать только; Два

790
01:25:25.530 --> 01:25:26.660
Михаил Непряхин: а угу.

791
01:25:30.250 --> 01:25:33.650
Михаил Непряхин: Дальше значит Есть Э

792
01:25:33.840 --> 01:25:45.080
Михаил Непряхин: для Планировщика гошного Есть такая модель про которую Ну Это Синьорные Вопросы, но там, Что нибудь может такое зайти Поэтому лучше бы ее знать значит джемпи

793
01:25:45.660 --> 01:25:50.040
Михаил Непряхин: джиэмпи модель значит джи Это гуртина

794
01:25:51.360 --> 01:25:53.700
Михаил Непряхин: м это машин

795
01:25:56.730 --> 01:25:57.890
Михаил Непряхин: а ты

796
01:25:58.100 --> 01:25:59.170
Михаил Непряхин: процесс

797
01:26:00.810 --> 01:26:02.530
Михаил Непряхин: нуджи гортин

798
01:26:08.730 --> 01:26:13.590
Михаил Непряхин: и машин это

799
01:26:13.770 --> 01:26:21.830
Михаил Непряхин: абстракция которая прибивается к Треду, Два труда у нас поднимается ну. Два едва не троси пью два три да

800
01:26:21.950 --> 01:26:32.790
Михаил Непряхин: и вот машина она вот это то Что в текущий момент работает то есть по Сути м это равно трэд машин равно трэд

801
01:26:36.240 --> 01:26:41.870
Михаил Непряхин: почему его Бы Не назвать тренд непонятно Загадка назвали машин

802
01:26:42.550 --> 01:26:54.540
Михаил Непряхин: Ну может быть имеется в виду Что типа Раз, это прибивается, напрямую к рядам процессора и

803
01:26:55.430 --> 01:27:01.090
Михаил Непряхин: дальше значит на машине могут работать пи

804
01:27:01.420 --> 01:27:02.420
Михаил Непряхин: процесс

805
01:27:04.310 --> 01:27:13.240
Михаил Непряхин: а но они могут и сниматься то есть вот процесс Поработал например если это Чтение. Запись диска

806
01:27:13.500 --> 01:27:17.040
Михаил Непряхин: бах попали в Чтение. Запись диска это синхронная операция,

807
01:27:17.150 --> 01:27:18.710
Михаил Непряхин: пи снимается

808
01:27:19.110 --> 01:27:22.880
Михаил Непряхин: ждет пока Там прочитается Или Запишется на диск

809
01:27:23.220 --> 01:27:31.330
Михаил Непряхин: и сюда приходит Другой, пи который работает потом этот поработал обратно поставите на выполнение, и Будет работать,

810
01:27:32.100 --> 01:27:36.550
Михаил Непряхин: а значит а вот на этих вот процессах уже работают, гурутины

811
01:27:36.850 --> 01:27:38.310
Михаил Непряхин: джой наши Маленькие

812
01:27:39.540 --> 01:27:46.260
Михаил Непряхин: и вот эта вот очередь которая То, есть гуртины они живут спи с процессом

813
01:27:46.940 --> 01:27:50.130
Михаил Непряхин: а вот эта вот очередь называется, локальная очередь

814
01:27:51.260 --> 01:27:55.500
Михаил Непряхин: Раз есть, вокальная значит еще глобальная да значит еще глобальная очередь

815
01:28:03.730 --> 01:28:18.090
Михаил Непряхин: вообще есть, разные планировщики. И на самом, деле с глобальной очередью почему нельзя работать в глобальном очередь потому, что, медленно получается потому, что если, мы начинаем работать с глобальной очередью вот если, вот этого бы Не, было

816
01:28:18.220 --> 01:28:23.020
Михаил Непряхин: а процессы ходили бы в глобальную очередь и брали бы здесь свои джи

817
01:28:23.450 --> 01:28:28.030
Михаил Непряхин: то нужен был быютекс грубый мюток с неизбежный

818
01:28:29.410 --> 01:28:35.690
Михаил Непряхин: и Раз мью значит медленно вот для того чтобы вот этот миюкс ээ не использовать минимизировать

819
01:28:36.290 --> 01:28:38.780
Михаил Непряхин: а сделали просто У

820
01:28:39.190 --> 01:28:46.950
Михаил Непряхин: как? Бы вот такую лок Фри структуру Что просто У Каждого пи. Есть, своя очередь буртин и они Там работают

821
01:28:47.790 --> 01:28:54.400
Михаил Непряхин: Что такое гурутина значит ну во Первых Это то же самое Что

822
01:28:55.350 --> 01:28:56.770
Михаил Непряхин: грин рэд

823
01:28:58.070 --> 01:29:15.730
Михаил Непряхин: то есть зеленый поток почему зеленый ну потому что как бы Это Премумуляция тряда Но Легковесного ряда да это абстракция внутри труда то есть это не трат операционной системы это наш собственный Тред внутри нашего бинарника нашего ронтайма

824
01:29:15.890 --> 01:29:18.540
Михаил Непряхин: к Слову обо всем. Вот Этом вот

825
01:29:19.090 --> 01:29:19.760
Михаил Непряхин: да

826
01:29:20.230 --> 01:29:21.720
Михаил Непряхин: Паперчонка Не знает,

827
01:29:21.860 --> 01:29:41.490
Михаил Непряхин: для Персонки на Процессе выполняется просто что-то ну то есть Там в третье что-то выполняется ну что-то работает и вот эта вся машинерия она в операционной системе Не вида просто, какая-то Программа, работает но что-то там делает вот а это все внутри то есть еще один планировщик над операционной системой который внутри

828
01:29:43.950 --> 01:29:49.190
Михаил Непряхин: вот значит это же самое гринпис называется коурутин

829
01:29:50.730 --> 01:29:52.650
Михаил Непряхин: ну. Оно же со Программа,

830
01:29:57.520 --> 01:30:00.540
Михаил Непряхин: вот и

831
01:30:01.690 --> 01:30:09.480
Михаил Непряхин: Из особенностей У него У Этой горутины У этого ротса программы. Свой стек есть

832
01:30:10.230 --> 01:30:13.120
Михаил Непряхин: то, есть У каждой гуртин есть свой стек

833
01:30:13.860 --> 01:30:18.380
Михаил Непряхин: маленький ну не помню начинается с четырехкилобает вроде бы

834
01:30:18.860 --> 01:30:28.360
Михаил Непряхин: а вот операционный системы, побольше он хоть, там виртуальный метро побольше выделяется изначально вот здесь он начинает с четырехкилобает и постепенно расширяется по мере необходимости

835
01:30:28.610 --> 01:30:35.100
Михаил Непряхин: и вот именно, Поэтому что у каждой то есть по сути Единица выполнения в

836
01:30:35.310 --> 01:30:50.680
Михаил Непряхин: гошином Ронтами в гол, это вот эта. Вот гуртинка то есть такая Маленькая. Программка со Своим стеком Программа, в программе которую вот планировщики Ставят, на выполнение вот эта грутинка первая вот она поработала

837
01:30:51.390 --> 01:30:52.080
Михаил Непряхин: да и

838
01:30:52.950 --> 01:30:54.070
Михаил Непряхин: а

839
01:30:54.180 --> 01:30:55.120
Михаил Непряхин: и

840
01:30:55.790 --> 01:30:58.020
Михаил Непряхин: получила блок на

841
01:30:58.230 --> 01:31:04.700
Михаил Непряхин: айо то есть например, ну надо что-то сеть отправить все значит она становится назад ждет

842
01:31:04.970 --> 01:31:23.270
Михаил Непряхин: и работает эта буратинка а пока там они работают дойдет опять до Этой картинки и там уже и какое-нибудь событие на соки придет разблокируется и Можно будет снова поработать и вот она такая каруселька только Не То чтобы вен-луп как в все шарпе или да в чем угодно в Других языках

843
01:31:24.570 --> 01:31:37.490
Михаил Непряхин: когда один есть общий воен клуб и он просто вот ставит программу вот так вот на выполнение здесь как бы Он такой более сложный более оптимизированный то есть, как бы это самый, оптимальный. Вообще планировщик вот из того что есть

844
01:31:38.180 --> 01:31:47.800
Михаил Непряхин: м-м здесь очень и очень-очень-очень-очень много Оптимизаций то есть мы говорим только о каком-то базовом уровне Базовых понятиях чтобы минут можно было разговор если чего понять и Поддержать

845
01:31:49.530 --> 01:31:55.940
Михаил Непряхин: и значит почему вообще это так создано почему так придумано

846
01:31:57.150 --> 01:32:02.000
Михаил Непряхин: Аа для этого нужно понимать особенность айоу баунда

847
01:32:02.110 --> 01:32:05.530
Михаил Непряхин: Нагрузки имена на айо

848
01:32:05.810 --> 01:32:09.570
Михаил Непряхин: то есть навод вывод характерную для сервера

849
01:32:10.360 --> 01:32:14.370
Михаил Непряхин: а значит смотрите если Мы вообще возьмем

850
01:32:15.140 --> 01:32:17.670
Михаил Непряхин: а как Выполняются запросы

851
01:32:18.980 --> 01:32:21.270
Михаил Непряхин: вот значит Пришел первый запрос

852
01:32:21.670 --> 01:32:22.950
Михаил Непряхин: как он

853
01:32:23.460 --> 01:32:27.780
Михаил Непряхин: работает на сервер к нам Пришел работать работать работать ждет ответа

854
01:32:29.170 --> 01:32:35.310
Михаил Непряхин: аа Раз он ждет он уже процесс не загружает. Мы его можем поставить на паузу

855
01:32:35.510 --> 01:32:37.850
Михаил Непряхин: и дать. Поработать Второму

856
01:32:38.710 --> 01:32:52.950
Михаил Непряхин: запросу вот он опять, Поработал опять, ждет от сети ответа можем опять вернуть первому он опять по работу поработал а тут и второй заводился, и опять второй поработал поработал и его так их может быть хоть, десять тысяч

857
01:32:53.070 --> 01:32:58.850
Михаил Непряхин: Вот они так будут тут между Собой Вот так Вот Внутри Треда ну Ты отряд нарисовал да

858
01:33:01.170 --> 01:33:06.320
Михаил Непряхин: Вот они так внутри Иряда физические, на Процессоры работают работают

859
01:33:06.560 --> 01:33:11.360
Михаил Непряхин: вот и Поэтому это эффективно а если бы этого не Было

860
01:33:11.550 --> 01:33:26.890
Михаил Непряхин: ну это просто простаивал бы тогда то есть у нас э вот когда у нас в одном трейде только один запрос обрабатываться то у нас были бы вот такие вот пустые места вот он ждет ответ. Сети ничего Не делать, на Процессоры

861
01:33:26.970 --> 01:33:31.990
Михаил Непряхин: Это все он ждал все Один. Же потом Пришел какой-то ответ а потом Опять, поработал Опять, ждет

862
01:33:32.390 --> 01:33:46.430
Михаил Непряхин: и там по меркам процесса он ждет вечность то есть это я он короткий такие вот нарисовал как Бы Это дыры а на самом деле там реальность Это футбольные поля То есть там Это чуть-чуть только на процессе репроводов ждем вечно ждем

863
01:33:46.800 --> 01:33:59.130
Михаил Непряхин: и вот из-за такого. Характера, нагрузки даже на одном Генрисе пью то есть на одном запущенном Треде Мы можем обрабатывать Там ну может Быть не семьдесят тысяч прессы

864
01:33:59.350 --> 01:34:03.940
Михаил Непряхин: тридцать тысяч рпц можем Обрабатывать легко но если мы в Этом ничего не делаем

865
01:34:04.240 --> 01:34:08.500
Михаил Непряхин: вот и вот это характер нагрузки аю у баунд

866
01:34:08.510 --> 01:34:26.360
Михаил Непряхин: и в этот Момент Времени ничего нельзя больше Делать некоторые процессы даже если у нас есть тут Гипертрейдинговые эти регистры у нас реально тут Два потока

867
01:34:26.360 --> 01:34:38.780
Михаил Непряхин: то есть первый поток он перемножает матрицы а второй поток будет ждать но он все равно ничего не может сделать Потому что Пока там этот не отпустит Пока он не закончится Своим Преображением матрос, Мы ничего сделать не можем

868
01:34:38.970 --> 01:34:41.210
Михаил Непряхин: вот Поэтому обычно

869
01:34:42.140 --> 01:34:44.090
Михаил Непряхин: ну как бы вот

870
01:34:44.410 --> 01:34:48.140
Михаил Непряхин: и если у нас есть какой-то сибирь. Убаум то обычно это Делать сообща

871
01:34:48.690 --> 01:35:07.050
Михаил Непряхин: Там на отдельном железе которая предназначена только для этого а на ее баунде У нас ну на обычных серверах обычно Там какой-то жесткой Сепию на Русских обычно Нет Мы Там просто. Получаем запрос и отдаем ответы и все как бы, ходим в базу, то есть в базу, идти тоже сеть сеть сететь

872
01:35:07.140 --> 01:35:11.960
Михаил Непряхин: Вот а когда у нас все эти сеть то, вот вот эта вот панировщик очень, хорошо себя показывает

873
01:35:14.000 --> 01:35:14.950
Михаил Непряхин: а вот

874
01:35:15.160 --> 01:35:17.360
Михаил Непряхин: есть ли тут Вопросы, на текущий момент

875
01:35:17.860 --> 01:35:19.010
Михаил Непряхин: все понятно

876
01:35:25.100 --> 01:35:26.650
Михаил Непряхин: ну, и

877
01:35:26.670 --> 01:35:46.260
Михаил Непряхин: и понятно что изначально это понятие корутина сопрограмма и в каком-нибудь Отлине это так и называется коррутина но то есть просто типа остроумно коррутина а если наджи заменить ведь и

878
01:35:46.470 --> 01:35:49.550
Михаил Непряхин: гору тебе прикольно Же Он вот Так и Получилось

879
01:35:50.350 --> 01:35:53.130
Михаил Непряхин: ну и Грин трэт Тоже, Тоже типа

880
01:35:59.870 --> 01:36:02.990
Михаил Непряхин: Так тут, прямо, понятно, все вопросов совсем Нет

881
01:36:06.940 --> 01:36:12.920
Михаил Непряхин: оно на самом деле вот аа ну тут, Говорить можно Чего еще добавить

882
01:36:13.770 --> 01:36:15.030
Михаил Непряхин: когда мы

883
01:36:15.750 --> 01:36:17.950
Михаил Непряхин: какую нибудь

884
01:36:18.470 --> 01:36:24.970
Михаил Непряхин: то и иногда грутины из вокальной очереди уходят в глобальную очередь

885
01:36:25.230 --> 01:36:26.310
Михаил Непряхин: например,

886
01:36:28.330 --> 01:36:29.110
Михаил Непряхин: а

887
01:36:30.400 --> 01:36:37.280
Михаил Непряхин: тик есть еще тик тик то что. За тик за пояснительную программу

888
01:36:42.000 --> 01:36:42.780
Михаил Непряхин: Ну а

889
01:36:43.320 --> 01:36:47.100
Михаил Непряхин: например, Мы попадаем в ньютокс вы попали в мюдекс

890
01:36:47.700 --> 01:36:59.080
Михаил Непряхин: и по моему Ну короче не помню какие ситуации но вот По моему примютоксе, она не в конец очереди попадает а в глобальную очередь попадает

891
01:37:00.100 --> 01:37:01.150
Михаил Непряхин: и

892
01:37:01.690 --> 01:37:07.340
Михаил Непряхин: ну Хорошо не помню там еще Есть какие то ситуации когда мы попадаем в глобальную очередь

893
01:37:07.920 --> 01:37:14.140
Михаил Непряхин: и в глобальной очереди тоже грузины копятся, и когда наверняка

894
01:37:14.650 --> 01:37:24.820
Михаил Непряхин: каждый вот здесь вот какое-то Неровное число итерации Не помню, какое там число ну пока сорок Два Напишем, ну какое-то Неровное число

895
01:37:25.200 --> 01:37:27.460
Михаил Непряхин: то есть вот здесь вот цика условно да

896
01:37:27.570 --> 01:37:37.510
Михаил Непряхин: и допустим каждый сорок второй цикл. Процесс идет в глобальную очередь и берет гору тину отсюда и начинает ее выполнять

897
01:37:37.930 --> 01:37:39.550
Михаил Непряхин: то есть вот это первый момент

898
01:37:39.740 --> 01:37:42.580
Михаил Непряхин: что Иногда гурутины

899
01:37:42.810 --> 01:37:46.970
Михаил Непряхин: утекают в процессы убегают попадают в глобальную очередь

900
01:37:47.530 --> 01:38:01.640
Михаил Непряхин: и каждый вот этот процесс их Тут тредов может быть подняты по количеству ядержек и

901
01:38:01.930 --> 01:38:08.550
Михаил Непряхин: ну естественно здесь мюдекс есть потому что иначе никак нужна синхронизация и Поэтому и

902
01:38:10.640 --> 01:38:19.500
Михаил Непряхин: неровное число нужно для того чтобы вот Это минимизировать вот эти конфликты и попадание в мюзикл может как я в прошлый Раз, говорил мьюток связнул чрезвычайно медленно.

903
01:38:20.720 --> 01:38:21.900
Илиас Эззахид: Можно, вопрос.

904
01:38:21.900 --> 01:38:22.540
Михаил Непряхин: Да.

905
01:38:24.940 --> 01:38:32.280
Илиас Эззахид: Так ээ я так понимаю что мютаксы это способ аа синхронизации этих гуручин

906
01:38:32.340 --> 01:38:47.950
Илиас Эззахид: эээ и го эти каналы это тоже абстракция чтобы контролировать синхронизировать гору тины а можно ли Использовать обе этих абстракций. Прямо, вместе как-то Их

907
01:38:48.480 --> 01:38:55.090
Илиас Эззахид: обычно это Делают или просто либо используют метаксы либо каналы в этом вопросе.

908
01:38:56.080 --> 01:38:58.500
Михаил Непряхин: Под капотом в каналах мюдекс

909
01:38:58.840 --> 01:39:03.830
Михаил Непряхин: вот ответ. На этот Вопрос Мюта кстати так если вы начинаете использовать канавы

910
01:39:03.960 --> 01:39:06.860
Михаил Непряхин: Ну, там Виток Под капотом в Это все, просто.

911
01:39:08.910 --> 01:39:13.780
Илиас Эззахид: То есть каналы Это по существу абстракция над методами.

912
01:39:13.780 --> 01:39:33.620
Михаил Непряхин: Да я по сути просто абстракция и

913
01:39:33.680 --> 01:39:36.950
Михаил Непряхин: по другому никак

914
01:39:38.240 --> 01:39:39.030
Михаил Непряхин: вот

915
01:39:39.410 --> 01:39:40.500
Михаил Непряхин: ин

916
01:39:40.710 --> 01:39:44.170
Михаил Непряхин: апотик продиктова вопрос я так я так и не понял, что за тик

917
01:39:44.320 --> 01:39:46.570
Михаил Непряхин: есть же шутик вот это

918
01:39:46.820 --> 01:39:47.390
Михаил Непряхин: песня.

919
01:39:47.390 --> 01:40:04.160
Илиас Эззахид: Если что Прыгнул Это в но Джейси в энджикце есть дексик Это когда мы Прыгаем в другой Это ну, по Сути вент-луп это Же цикл, вешанный и неэкстриг это по Сути инкриминирование.

920
01:40:04.620 --> 01:40:05.740
Михаил Непряхин: Ммм

921
01:40:06.370 --> 01:40:15.550
Михаил Непряхин: окей и вот значит первая оптимизация что у нас есть, локальная глобальная очередь для того чтобы минимизировать ньютокс

922
01:40:17.360 --> 01:40:23.940
Михаил Непряхин: и второй момент значит что, происходит когда вот здесь рутины кончаются ну то есть просто

923
01:40:24.080 --> 01:40:26.280
Михаил Непряхин: процесс взял их все выполнил.

924
01:40:26.670 --> 01:40:29.900
Михаил Непряхин: Мы этот процесс просто, воруют

925
01:40:30.650 --> 01:40:39.460
Михаил Непряхин: и из соседнего процесса половину горутин то есть он просто, идет к Соседу, берет половину и начинает их сам выполнять

926
01:40:40.300 --> 01:40:42.200
Михаил Непряхин: и вот

927
01:40:42.840 --> 01:40:44.180
Михаил Непряхин: это все

928
01:40:44.360 --> 01:40:55.500
Михаил Непряхин: что нужно для того чтобы это минимально работало то есть вот это все глобальные идеи которые ну вот которые нужно понимать ну по мне Даже немножечко Проще чем

929
01:40:55.680 --> 01:41:07.370
Михаил Непряхин: а хашмапы кошмапы все-таки посложнее Но тем Не Менее конечно я все равно тоже там скину Сымочки которые надо будут посмотреть, для того чтобы вот Это вот таки зафиксировать

930
01:41:08.610 --> 01:41:09.580
Михаил Непряхин: а

931
01:41:11.590 --> 01:41:12.690
Михаил Непряхин: вот.

932
01:41:14.450 --> 01:41:16.100
David R: Можно в вопросе.

933
01:41:16.100 --> 01:41:16.500
Михаил Непряхин: Да.

934
01:41:16.500 --> 01:41:35.250
David R: На уточни уточняющий допустим у нас есть Там супер крутой север у которого, Там девяносто шесть ядер девяносто шесть потоков. Все крутится вертится и Мы добавляем Куда то Там на какую то переменную метакс если. Мы добавляем юдекс получается эта перемена Встает. В глобальную очередь

935
01:41:35.250 --> 01:41:40.500
David R: Из девяносто шести Потоков. Девяносто шести ядер Ну

936
01:41:40.500 --> 01:41:46.300
David R: может одна моментная это все исполняться Только в одном Потоке так.

937
01:41:47.170 --> 01:42:00.550
Михаил Непряхин: А такое может смотрите насчет встает ли он в глобальную очередь об Этом я могу вам наврать то есть я точно Сейчас Не помню в каких случаях в глобальная очередь уходит прям вот вот просто каждый раз забываю

938
01:42:01.120 --> 01:42:04.220
Михаил Непряхин: но остальное верно короче мы.

939
01:42:04.220 --> 01:42:18.040
David R: Если Мы Вешаем и.

940
01:42:18.340 --> 01:42:33.120
Михаил Непряхин: Да да совершенно верно то есть если ну. Конечно у вас могут быть разные яро Задействованы на разных частях программы Но если мы говорим что это прямо, Вот суперсервер на которой очень большой рпц идет, и

941
01:42:33.120 --> 01:42:40.560
Михаил Непряхин: в вообще все потоки работают с одним Куском кода и в этом коде есть Метакс

942
01:42:40.560 --> 01:42:51.080
Михаил Непряхин: все то есть они все упротся это будет бутылочное горлышко что в один момент времени. Допустим это мюток на запись

943
01:42:51.110 --> 01:42:55.760
Михаил Непряхин: что в один момент времени. В нью-йорке, может быть только один поток

944
01:42:55.840 --> 01:43:04.030
Михаил Непряхин: все все остальные девяносто шесть будут ждать, совершенно верно ютоксы это самая большая Проблема вот

945
01:43:04.240 --> 01:43:06.380
Михаил Непряхин: параллельного программирования

946
01:43:06.810 --> 01:43:12.480
Михаил Непряхин: потому, что, ну многие недооценивают медленность Мы там еще будем примеры смотреть когда

947
01:43:12.910 --> 01:43:19.540
Михаил Непряхин: ну типа вот у вас одной один тред типа работает Программа, быстро добавляете второй тред

948
01:43:19.800 --> 01:43:22.090
Михаил Непряхин: быстро но не в два раза

949
01:43:22.290 --> 01:43:26.450
Михаил Непряхин: добавляйте третий тред быстро но все равно не в два раза

950
01:43:26.600 --> 01:43:35.160
Михаил Непряхин: добавляйте сто отрадов, быстро. Но вот ну Там вот немногим быстрее Чем, в одном Двух треках

951
01:43:35.310 --> 01:43:38.490
Михаил Непряхин: и Чем, дальше больше вы добавляете тредов

952
01:43:38.770 --> 01:43:46.550
Михаил Непряхин: тем прирост либо его вообще нет ну там есть точка когда. Его перестает вы быть либо у вас

953
01:43:47.830 --> 01:43:52.440
Михаил Непряхин: мне это вполне эффективно типа проще поднять

954
01:43:52.940 --> 01:43:57.860
Михаил Непряхин: три не знаю. Четыре программы. Каждая в одном ядре

955
01:43:58.030 --> 01:44:03.010
Михаил Непряхин: чем одну программу, но которая будет работать с мидексами вот в этих четырех потоках

956
01:44:03.620 --> 01:44:14.520
Михаил Непряхин: это прямо, суперважно понимать что, как бы ну вот у нас если, бы так все просто было взяли и там добавили количество ядер и оно все равно быстрее Нет прямо и об Этом все равно приходится думать

957
01:44:14.790 --> 01:44:19.960
Михаил Непряхин: рента мгу умеет вытеснять куртины например, если они форрестальда умеют

958
01:44:20.440 --> 01:44:25.590
Михаил Непряхин: ээ если строго говоря есть вопрос такой не собеседник, значит ээ

959
01:44:25.930 --> 01:44:27.730
Михаил Непряхин: изначально и

960
01:44:28.650 --> 01:44:35.470
Михаил Непряхин: была только кооперативная многозначность то есть вот если бы он так не умел, то она была бы только кооперативная но

961
01:44:35.660 --> 01:44:38.670
Михаил Непряхин: действительно мы можем. Взять и застрять циклифор

962
01:44:38.980 --> 01:44:41.780
Михаил Непряхин: и есть

963
01:44:41.880 --> 01:45:00.940
Михаил Непряхин: для этого оптимизация, по-моему десять. Или секунд Максимум и

964
01:45:01.740 --> 01:45:06.360
Михаил Непряхин: и Есть вопрос на собеседника какая многозадачность в гол,

965
01:45:06.650 --> 01:45:13.690
Михаил Непряхин: все таки Кооперативная или вытесняющая выговорите ну. Вытесняющую она в линусе а вгу она кооперативная

966
01:45:13.890 --> 01:45:16.560
Михаил Непряхин: и ответ неправильный потому что в гоу она

967
01:45:16.930 --> 01:45:22.870
Михаил Непряхин: вытесняющее кооперативное то есть да она кооперативная но есть элемент вытеснения,

968
01:45:23.060 --> 01:45:24.570
Михаил Непряхин: вот этот

969
01:45:25.680 --> 01:45:30.240
Михаил Непряхин: Так или в квартируных какая Перспектива не значит в каких моментах тогда вытесняется картина

970
01:45:30.830 --> 01:45:36.620
Михаил Непряхин: ну, вот первый элемент первый Момент она вытесняется Когда работает десять милли секунд

971
01:45:37.340 --> 01:45:42.270
Михаил Непряхин: трон то есть Никакая грутина не будет работать дольше десяти или секунд следующая будет работать

972
01:45:42.430 --> 01:45:48.800
Михаил Непряхин: потом если мы Встречаем Операцию в Воду вывода Работаем сетью с Диском с Ютаксом

973
01:45:49.020 --> 01:45:59.340
Михаил Непряхин: с каналами То Мы тоже Снимаемся с работы и ждем ну Потому Что и

974
01:45:59.960 --> 01:46:14.410
Михаил Непряхин: если Мы закончили работу если Мы закончили работу то Тоже, вытесняется ну даже Не то что вытесняется вытеснение как бы вытеснение правильное это вот это вот когда Мы говорим время вот вот божь работает столько и все вот это называется вытеснение

975
01:46:14.800 --> 01:46:20.500
Михаил Непряхин: а остальное просто типа поработал дал проводить другому

976
01:46:21.140 --> 01:46:27.230
Михаил Непряхин: следующий так если одна грутина озабочивает рамках, одной машины то она станет конец вокальной очереди

977
01:46:28.210 --> 01:46:33.470
Михаил Непряхин: да да да да Ну опять, же смотрите я не помню когда она встает в конец

978
01:46:33.470 --> 01:46:52.130
Михаил Непряхин: а когда она в глобальную очередь уезжает то есть Там есть ситуации когда она в глобальную очередь уезжает а есть когда в конец уезжают тут, для жизни Не требуется вопросов на Собеседование Нет просто, это Не получается Выучивать это Поэтому ну вот будете смотреть Ролики и там об, Этом расскажут про глобальную вокальную

979
01:46:52.780 --> 01:46:53.660
Михаил Непряхин: вот

980
01:46:54.800 --> 01:47:00.990
Михаил Непряхин: и еще смотрите какой момент да можно ли Перезапуском, сервера Настроить Количество корпус рат

981
01:47:01.270 --> 01:47:05.580
Михаил Непряхин: Так значит да значит Мы можем Настроить вот эту вот Штуку.

982
01:47:07.820 --> 01:47:12.690
Михаил Непряхин: Вернее Нет Нет Нет Не, Машин Машины но просто равно физическому вот это

983
01:47:12.960 --> 01:47:17.230
Михаил Непряхин: процесс процесс Мы можем пино строить Количество Пи

984
01:47:17.650 --> 01:47:22.020
Михаил Непряхин: Мы можем Настроить Но Не, абсолютное Количество

985
01:47:22.660 --> 01:47:31.430
Михаил Непряхин: а Количество Пи Которое будет Работать Одновременно У нас даже десять. Девяносто шесть ядер Мы скажем Один, в Один, момент Времени будут Работать Один, Пи

986
01:47:31.600 --> 01:47:37.730
Михаил Непряхин: и Кстати тут. Не Можешь, возникнуть Гонки данных тут и индексы не нужны у нас просто Программа, Превращается в Однопоточную,

987
01:47:38.380 --> 01:47:43.820
Михаил Непряхин: тоже Один. Такой есть, такой момент что вот мы можем понимать что если мы работаем в одном Потоке

988
01:47:44.160 --> 01:47:55.240
Михаил Непряхин: а Гонки данных быть не может потому, что гонка данных возникает когда вот У нас вот кусок памяти в Процессе да и два труда обращаются к Одному и тому Же Кусочку памяти

989
01:47:55.620 --> 01:47:59.070
Михаил Непряхин: а если, У нас в Одном потоке программа запущена

990
01:47:59.350 --> 01:48:01.300
Михаил Непряхин: то гонки данных быть не может

991
01:48:02.100 --> 01:48:03.230
Михаил Непряхин: такой интересный Факт

992
01:48:03.990 --> 01:48:10.390
Михаил Непряхин: то есть как бы как я вам сказал до этого типа есть четыре ядра

993
01:48:10.550 --> 01:48:13.400
Михаил Непряхин: ну мюток убивает Производительность Что же делать

994
01:48:13.500 --> 01:48:20.880
Михаил Непряхин: запустите четыре процесса То есть запустите четыре экземпляра программы.

995
01:48:20.990 --> 01:48:24.800
Михаил Непряхин: Эээ в однопоточном режиме Год работы в бистреля

996
01:48:25.120 --> 01:48:26.910
Михаил Непряхин: никто Не будет блокировок

997
01:48:28.650 --> 01:48:29.890
Михаил Непряхин: да Так

998
01:48:31.260 --> 01:48:39.710
Михаил Непряхин: да Ну кор Король это настраивается в Губернаторысе просто Сможем настраивать Мы

999
01:48:39.850 --> 01:48:54.930
Михаил Непряхин: Ну и Количество трудов оно равно количеству ядер Поэтому как бы и здесь чтобы Не было личных лишних переключений контекста тут голос за этим следит просто количество тротов Одновременно работающих, оно равно кричит связи

1000
01:48:54.950 --> 01:49:04.560
Михаил Непряхин: Еще один моменттик важный который просто Так как бы сементически важно понимать и не путаться на словах когда вы просто рассуждаете об этом

1001
01:49:05.860 --> 01:49:07.190
Михаил Непряхин: значит

1002
01:49:07.980 --> 01:49:10.920
Михаил Непряхин: есть такое понятие как синхронность

1003
01:49:15.140 --> 01:49:28.000
Михаил Непряхин: вот научит синтаксии сосинг, давал там на других языках программирования то есть это обычно Реализовано через елт вот этот вот иван-клуб ну про джерада б чудеса я не очень там силен как, Окно Один какой-то эван клуб

1004
01:49:28.000 --> 01:49:36.170
Михаил Непряхин: и он везде в общем-то Это Раз, и шарр питон ну интересно насколько я понимаю То же самое

1005
01:49:36.210 --> 01:49:54.960
Михаил Непряхин: ну и

1006
01:49:55.240 --> 01:50:04.220
Михаил Непряхин: Вот значит вгу у нас этого Нет да То есть как бы у нас вообще все о Синг, изначально все функция Синг, а Синхронно вообще все

1007
01:50:04.540 --> 01:50:13.960
Михаил Непряхин: а вэйта нет просто Автоматически происходит Я сказала либо операция в Воду вывода либо мюзикл либо Мы просто десять или секунд поработали и вытеснились

1008
01:50:14.290 --> 01:50:22.890
Михаил Непряхин: вот что как бы ну очень сильно и

1009
01:50:23.160 --> 01:50:25.690
Михаил Непряхин: вот и как бы вопрос э

1010
01:50:25.990 --> 01:50:26.770
Михаил Непряхин: вот

1011
01:50:28.030 --> 01:50:32.790
Михаил Непряхин: что такое синхронность синхронность это как Раз таки

1012
01:50:33.900 --> 01:50:42.990
Михаил Непряхин: ну вот когда Мы встретились с какой то Блокирующей. Операцией и вот как бы вот этот небольшой локальный вен лупик здесь происходит

1013
01:50:43.280 --> 01:50:51.960
Михаил Непряхин: вот вот вот Работа. Программа, работает синхронно то есть она может Одновременно обрабатывать тридцать тысяч рпц

1014
01:50:52.070 --> 01:50:55.540
Михаил Непряхин: но при этом работать, на одном ядре

1015
01:50:56.190 --> 01:51:03.940
Михаил Непряхин: и тогда мы говорим что ну у нас Программа, синхронная а Но Она одна поточная что в одном потоке работа

1016
01:51:04.190 --> 01:51:11.730
Михаил Непряхин: есть ли параллельность в этом случае в правильности нет Мы работаем на одном ядре в одном траде

1017
01:51:12.530 --> 01:51:21.290
Михаил Непряхин: параллельности никакой Нет да Мы обрабатываем Тридцать тысяч запросов Но они по очереди Работают просто по чуть-чуть один повод друг друга проводят третий пробор

1018
01:51:21.590 --> 01:51:24.190
Михаил Непряхин: то Есть, Программа, Синхронная Но одна поточная

1019
01:51:25.270 --> 01:51:30.010
Михаил Непряхин: а вот если у нас трядов, несколько Например Два и больше

1020
01:51:30.630 --> 01:51:34.390
Михаил Непряхин: вот здесь уже У нас Программа, Е Синхронная

1021
01:51:34.610 --> 01:51:51.350
Михаил Непряхин: и многопоточная то Есть Она Одновременно Реально вот У нас если два -пью вот мы здесь работаем и здесь работаем то есть у нас прям Одновременно в один момент времени может обрабатываться вот прям реально Два запроса

1022
01:51:51.890 --> 01:52:01.250
Михаил Непряхин: вот и соответственно куркизна гошки в том Что если этих ядер если этих трудов девяносто штук

1023
01:52:01.820 --> 01:52:17.120
Михаил Непряхин: то ну мы можем обрабатывать сумасшедшее количество рпса при этом очень равномерно Вот еще проблема современных языков равномерно утилизировать ресурсы очень Тяжело го Раз, плюнуть ну что как бы если какой-то один

1024
01:52:17.280 --> 01:52:26.640
Михаил Непряхин: поток бурутины свои выполнил он пойдет к соседу, и сворует половину и вот они вот так вот друг, другу воровать плюс разгребать глобальную очередь

1025
01:52:26.640 --> 01:52:44.190
Михаил Непряхин: и они и

1026
01:52:44.210 --> 01:52:45.670
Михаил Непряхин: это очень круто

1027
01:52:47.260 --> 01:52:50.770
Михаил Непряхин: вот Поэтому как Бы про синхронность и

1028
01:52:50.950 --> 01:52:58.460
Михаил Непряхин: реальную ээ одновременность выполнения в нескольких потоках надо понимать да вгу и так снесен рона

1029
01:52:58.620 --> 01:53:03.490
Михаил Непряхин: а еще важно понимать что функция мэйн

1030
01:53:04.220 --> 01:53:10.800
Михаил Непряхин: вот когда мы выполняем функцию война запускаем что такое функция Мейн это тоже гурутина

1031
01:53:13.910 --> 01:53:18.840
Михаил Непряхин: и когда Внутри функции ээ функци мейн Мы встречаемся интаксист гоу

1032
01:53:19.080 --> 01:53:20.110
Михаил Непряхин: и Там

1033
01:53:20.300 --> 01:53:21.970
Михаил Непряхин: функция кота выполняется

1034
01:53:22.450 --> 01:53:25.350
Михаил Непряхин: Это запускается Тоже, бурутина

1035
01:53:26.680 --> 01:53:29.940
Михаил Непряхин: и Поэтому и

1036
01:53:30.040 --> 01:53:33.980
Михаил Непряхин: Единица выполнения в гоу это горутина

1037
01:53:34.200 --> 01:53:36.790
Михаил Непряхин: у каждой грутины свой небольшой стек

1038
01:53:37.050 --> 01:53:45.730
Михаил Непряхин: и соответственно когда Мы Переключаем контекст ну как бы неправильный резкий контекст свеч

1039
01:53:45.810 --> 01:53:57.260
Михаил Непряхин: у грутины то есть контекст вич это когда вот Мы это как бы устойчивое выражение для того чтобы отличать когда Мы с одного потока на Другой переключаемся в этот Контекст Вич,

1040
01:53:57.330 --> 01:54:09.820
Михаил Непряхин: а здесь Мы Тоже как бы ведь из одной Грутины вот она Поработала Там регистра свои загрузила Кашпрогрема уперлась в ваек операцию и дает работать в следующей, Паутине

1041
01:54:10.170 --> 01:54:11.710
Михаил Непряхин: и и

1042
01:54:12.200 --> 01:54:28.540
Михаил Непряхин: ну, все что происходит просто указатель в регистре указывает на другой стек то есть здесь у Него свой музей где то там в кучу условно да здесь тоже Другой стек то есть как бы он просто Берет указатель Меняется этого Астека на Другой, Стек

1043
01:54:28.540 --> 01:54:43.850
Михаил Непряхин: и начинают выполнять другую грутину Там прогружают агистры но это все равно сильно Дешевле чем переключение Реального треда на Другой тред вот и вот таких. Вот гурутин может быть Не знаю там Сотни Тысяч можете фигачить,

1044
01:54:43.960 --> 01:54:45.070
Михаил Непряхин: чем Без Проблем,

1045
01:54:45.330 --> 01:54:46.500
Михаил Непряхин: все работает

1046
01:54:48.010 --> 01:54:51.350
Михаил Непряхин: так можно ли перзаском Сервер настроить ключевую все

1047
01:54:52.370 --> 01:54:53.840
Михаил Непряхин: так ванна здесь

1048
01:54:54.240 --> 01:54:55.480
Михаил Непряхин: вопрос есть

1049
01:54:56.290 --> 01:54:57.340
Михаил Непряхин: Давайте

1050
01:54:57.670 --> 01:55:02.590
Михаил Непряхин: есть ли еще что-то Что осталось непонятным можете прям самый тупой вопрос за губы.

1051
01:55:03.000 --> 01:55:06.170
Илиас Эззахид: А у Меня вопрос извиняюсь а

1052
01:55:06.450 --> 01:55:10.780
Илиас Эззахид: почему Говорят, Что гуручатые это дешевые и Легкие

1053
01:55:11.960 --> 01:55:15.360
Илиас Эззахид: но по Сути я понимаю Что вы. Уже отвечаете, на вопрос.

1054
01:55:16.890 --> 01:55:20.290
Михаил Непряхин: Ну вот дело в Том что

1055
01:55:20.460 --> 01:55:22.900
Михаил Непряхин: переключение между Бутинами,

1056
01:55:23.160 --> 01:55:27.170
Михаил Непряхин: типа там в Десятки Раз, дешевле чем переключение между реальными тредами

1057
01:55:28.010 --> 01:55:30.550
Михаил Непряхин: и планировщик

1058
01:55:31.110 --> 01:55:32.440
Михаил Непряхин: может сам

1059
01:55:32.570 --> 01:55:36.740
Михаил Непряхин: эффективно управлять этими гуртинами

1060
01:55:36.850 --> 01:55:51.170
Михаил Непряхин: потому Что планировщик в линусе и

1061
01:55:51.270 --> 01:55:59.690
Михаил Непряхин: у Него Там есть конечно приоритет но внутри нашей программы он эти Приоритеты иронии увидит и как Бы не сможет эффективно с этим работать

1062
01:55:59.770 --> 01:56:15.450
Михаил Непряхин: а здесь Мы можем Мы можем Там сделать кучу Оптимизаций понять когда вот Эту гортью надо запустить а вот Это, в мютоксе а вот миток саудился Всегда нам. В первую очередь запустить а Или Там, вот пришел в ответ из сети вот Она в первую очередь запустить Там, Еще есть оптимизация вот эта вот последняя гурутина

1063
01:56:15.540 --> 01:56:40.230
Михаил Непряхин: которая была запущена в кодексе она выполнится, первой и таких микрооптимизаций очень много когда мы пишем из каналов канал мы по Сути пишем из одной груди и на этом тоже очень много оптимизаций то. Есть когда будете смотреть то. Есть я вам прямо даю по верхам суть самую чтобы просто вот база

1064
01:56:40.230 --> 01:56:55.290
Михаил Непряхин: эта база да остальные там оптимизации вы посмотрите Что запомните как бы, ну хорошо неплохо ну вот единственное и

1065
01:56:55.290 --> 01:56:56.630
Михаил Непряхин: а в остальном Ну

1066
01:56:57.380 --> 01:57:01.930
Михаил Непряхин: в принципе как бы там уже такие микрооптимизации примерно как с кошмапами

1067
01:57:02.460 --> 01:57:04.010
Михаил Непряхин: так еще есть и против.

1068
01:57:04.250 --> 01:57:16.660
David R: О есть вопросик такой и.

1069
01:57:16.660 --> 01:57:17.290
Михаил Непряхин: Рандомно.

1070
01:57:17.290 --> 01:57:20.000
David R: Сам Планировал, Решает Что ему Делать и все.

1071
01:57:20.000 --> 01:57:21.560
Михаил Непряхин: Да сам рандомно

1072
01:57:21.740 --> 01:57:28.400
Михаил Непряхин: когда дело заходит в прогурутины типа инструкции селект Работа. С каналами рандом

1073
01:57:33.290 --> 01:57:34.370
Михаил Непряхин: так Что есть.

1074
01:57:35.390 --> 01:57:39.760
dmitriy: Да у Меня Еще маленький вопрос уточняющий. Я Там Не. Совсем понял. Про

1075
01:57:39.970 --> 01:57:49.380
dmitriy: голый количество ядер то есть получается если Мы не ограничиваем как-то он занимает все и как-то распределяют все вот эти процессы.

1076
01:57:49.380 --> 01:57:53.600
Михаил Непряхин: И если Мы соответственно он будет как-то Там быстрее Работать.

1077
01:57:53.790 --> 01:58:04.850
dmitriy: Больше обрабатывать и если, мы ограничим одним потоком и будет один процесс ну соответственно он будет там медленнее будет просто работать чем в несколько Потоков.

1078
01:58:06.010 --> 01:58:10.810
Михаил Непряхин: Частая проблема, короче Которого по-моему в Последней версии кошки ее решили

1079
01:58:11.010 --> 01:58:12.780
Михаил Непряхин: как она выглядит

1080
01:58:13.180 --> 01:58:15.500
Михаил Непряхин: короче У нас губернаторся

1081
01:58:15.900 --> 01:58:20.390
Михаил Непряхин: обычно ну! Вот если Мы смотрим на ресурсы

1082
01:58:20.770 --> 01:58:24.250
Михаил Непряхин: То кошка видит что у нас Есть девяносто шесть ядер

1083
01:58:24.420 --> 01:58:27.000
Михаил Непряхин: ну Там Типичный процесс она не, воскресенье

1084
01:58:27.820 --> 01:58:31.350
Михаил Непряхин: вот и запускается такая Хоба в девяносто шесть рядов.

1085
01:58:31.710 --> 01:58:32.430
Михаил Непряхин: Ааа

1086
01:58:32.580 --> 01:58:36.240
Михаил Непряхин: а Ресурсы в Губернаторысе

1087
01:58:37.440 --> 01:58:44.160
Михаил Непряхин: а Там реквисты лимиты ну короче говоря Ариквест выставлен так Что У нас только одно, ядро.

1088
01:58:45.270 --> 01:58:52.030
Михаил Непряхин: И короче гошка будет очень, сильно тупить потому Что в Губернасе губернатор указывает Что У нас ресурсы одно, ядро.

1089
01:58:52.100 --> 01:58:54.030
Михаил Непряхин: А я деревян девяносто шесть

1090
01:58:54.080 --> 01:59:03.570
Михаил Непряхин: Он просто будет вот между этими, девяносто шести вот так вот Переключаться Переключаться Постоянно очень короткое маленькое время работать кши будут неэффективно использоваться

1091
01:59:03.570 --> 01:59:14.480
Михаил Непряхин: поэтому там есть оптимизация от умер когда и

1092
01:59:14.480 --> 01:59:24.730
Михаил Непряхин: вот сюда смотрели сколько в кумирансе указано в стольких потоках и запускайся вот Здесь Один. Значит запускайся в одном а Не девяносто шести По моему в последней версии По Фикси Или Сейчас есть Коробки кошка так себя ведет

1093
01:59:24.890 --> 01:59:25.570
Михаил Непряхин: да.

1094
01:59:27.240 --> 01:59:28.120
dmitriy: Спасибо.

1095
01:59:33.140 --> 01:59:36.960
Михаил Непряхин: И последнее Чего вам покажу вот мы тут сервера начали

1096
01:59:38.030 --> 01:59:42.630
Михаил Непряхин: аа где тут гурутины запускаются то есть мы просто

1097
01:59:42.950 --> 01:59:53.620
Михаил Непряхин: то есть У нас Тут Идея, в том Что мы Запустились рвак и Вот Мы Тут можем тридцать семь месяцев только рпц устроить Вот Он будет хлопотать давать

1098
01:59:55.120 --> 01:59:56.580
Михаил Непряхин: как это работает

1099
01:59:57.990 --> 02:00:02.750
Михаил Непряхин: ну здесь просто ручка которая дает вот это ховоро то вот Мы просто и

1100
02:00:03.530 --> 02:00:07.620
Михаил Непряхин: Восстнув вврайтер записывал свои? Изба и тот лорд

1101
02:00:08.360 --> 02:00:11.280
Михаил Непряхин: мечта Под капотом Он запускает

1102
02:00:12.280 --> 02:00:12.960
Михаил Непряхин: а

1103
02:00:13.380 --> 02:00:19.020
Михаил Непряхин: Будет просто какая Обертка какой то сервер создает Неинтересно вот функция серый лизонантер

1104
02:00:19.300 --> 02:00:21.050
Михаил Непряхин: здесь Мы создаем

1105
02:00:21.420 --> 02:00:22.940
Михаил Непряхин: Есть Присоединение

1106
02:00:23.120 --> 02:00:40.540
Михаил Непряхин: ну Мы работаем с детьми и

1107
02:00:40.940 --> 02:00:43.630
Михаил Непряхин: и Вот основная функция сервера

1108
02:00:44.350 --> 02:00:47.040
Михаил Непряхин: а ну тут тоже Не особо Интересно

1109
02:00:48.930 --> 02:00:55.490
Михаил Непряхин: а Вот интересная часть вот это вот вот Наш основной цикл. То, есть Мы просто чуть не целиком проверяем не закрыты ли Мы

1110
02:00:55.700 --> 02:00:58.960
Михаил Непряхин: и вот Наш основной цикл где Мы принимаем запросы

1111
02:00:59.140 --> 02:01:00.350
Михаил Непряхин: Мы

1112
02:01:00.540 --> 02:01:01.790
Михаил Непряхин: принимаем

1113
02:01:02.450 --> 02:01:03.490
Михаил Непряхин: запрос

1114
02:01:04.580 --> 02:01:09.930
Михаил Непряхин: и превращаем его в коннекшн Там Тонкая, обертка еще не суть

1115
02:01:10.280 --> 02:01:20.590
Михаил Непряхин: и вот здесь вот вот оно волшебное слово гоу здесь Создается горутина и вот здесь внутри уже серф мы обрабатываем Наш запрос

1116
02:01:21.680 --> 02:01:22.700
Михаил Непряхин: то есть

1117
02:01:23.100 --> 02:01:25.930
Михаил Непряхин: а под капотом сервера гоу Обычный цикл

1118
02:01:26.090 --> 02:01:31.380
Михаил Непряхин: которые вот как только приходит запрос сразу же его обрабатывают запускают гурутину

1119
02:01:31.560 --> 02:01:39.500
Михаил Непряхин: Не ждет естественно Пока грутины отработают просто пролетают дальше и снова принимают запрос снова запускают гурутину

1120
02:01:39.650 --> 02:01:46.300
Михаил Непряхин: и когда он здесь вот эту строчку достигает он не запускает здесь и Сейчас

1121
02:01:46.490 --> 02:01:49.880
Михаил Непряхин: программа на выполнение, это надо понимать он ее

1122
02:01:50.230 --> 02:01:54.230
Михаил Непряхин: ставит в очередь то Есть, вот У нас Есть, вот Это вот

1123
02:01:54.570 --> 02:01:56.870
Михаил Непряхин: вот локальная очередь вот он еще заставит

1124
02:01:57.730 --> 02:02:02.560
Михаил Непряхин: и Поэтому важно понимать что ну вот вы запускаете Пачками эти гурутины да Там

1125
02:02:02.680 --> 02:02:03.650
Михаил Непряхин: сто тысяч

1126
02:02:04.030 --> 02:02:07.500
Михаил Непряхин: аа во-первых они работать начнут не сразу

1127
02:02:07.640 --> 02:02:14.370
Михаил Непряхин: а Там какая-то очередь уже может быть для этого То есть какое-то Время проходит пока оно начинает Работать

1128
02:02:14.660 --> 02:02:18.480
Михаил Непряхин: и в зависимости от длины очереди Количество потоков

1129
02:02:18.940 --> 02:02:24.440
Михаил Непряхин: и загруженности, очередей а оно вот постепенно начнет работать

1130
02:02:24.700 --> 02:02:27.120
Михаил Непряхин: вот и как бы вот это вот такая

1131
02:02:28.100 --> 02:02:36.110
Михаил Непряхин: простая идея ну как бы в кодексе видя как в коде Это Легко просто выглядит То Есть условно вот я То же самое написал вот у нас

1132
02:02:36.770 --> 02:02:39.520
Михаил Непряхин: цикл. Из десятитераций

1133
02:02:40.790 --> 02:02:45.820
Михаил Непряхин: а Мы Запускаем гортину Мы в ней Спим Одну Секунду

1134
02:02:46.930 --> 02:02:48.470
Михаил Непряхин: и Выводим дан

1135
02:02:49.790 --> 02:02:51.450
Михаил Непряхин: Если Мы просто Запустим

1136
02:02:51.810 --> 02:02:54.290
Михаил Непряхин: Мы ничего Не Печатаем и сразу Выходим

1137
02:02:54.620 --> 02:02:55.730
Михаил Непряхин: почему Так

1138
02:02:56.130 --> 02:02:57.300
Михаил Непряхин: потому что.

1139
02:02:57.640 --> 02:03:00.700
Михаил Непряхин: Нужно какое-то время чтобы грутина

1140
02:03:00.800 --> 02:03:17.570
Михаил Непряхин: в очередь встала подхватилась процессом поставилась реально машиной вот Этой м абстракцией на выполнение, и выполнилось то есть, ну я еще тут сплю но даже если, бы, я не спал давайте я вот не сплю просто, хочу вывести дан

1141
02:03:17.670 --> 02:03:21.300
Михаил Непряхин: запускаю не выводится

1142
02:03:23.250 --> 02:03:29.710
Михаил Непряхин: он ну успел один Раз, вывести но вот весь один Раз, успевает десять нужно но чаще всего ничего не успевает

1143
02:03:30.070 --> 02:03:48.140
Михаил Непряхин: но иногда видите успех один поток все таки успевает выполниться ну Вот я Вот обновляю и Не спят то есть нужно какое-то время чтобы бурутины начали. Работать Поэтому тут возникает много синхронизации о которых Мы потом говорим нам Войнгруппу всякий возьмем вот но чтобы они Все таки запустились

1144
02:03:48.530 --> 02:03:58.770
Михаил Непряхин: надо ну здесь Тоже. Поспать Но в Секунду Поспим и Допустим если. Мы здесь Уберем просто Секунду Посыпим посмотрим ноты Не Сразу. Выведут Все Десять. И все то есть быстренько улись

1145
02:03:58.940 --> 02:04:05.060
Михаил Непряхин: вот а если, Мы Внутри Там, секунду Спим ну тут конечно придется подольше спать на две секунды просыпать

1146
02:04:06.880 --> 02:04:09.890
Михаил Непряхин: они выводятся Одновременно то есть потому Что

1147
02:04:12.200 --> 02:04:14.810
Михаил Непряхин: вот как бы прелесть в том

1148
02:04:15.000 --> 02:04:16.410
Михаил Непряхин: Что

1149
02:04:17.040 --> 02:04:19.500
Михаил Непряхин: мы таким вот простым синтаксисом

1150
02:04:19.820 --> 02:04:34.400
Михаил Непряхин: Не создавая Ни руками никаких потоков. Ничего Мы Никакие. Потоки Не создаем ничего Никакие. Отрады Мы Не поднимаем Мы просто говорим Что вот эта вот Штука. Она Должна выполниться, в десяти разных гурудинах а синхронно

1151
02:04:34.850 --> 02:04:35.940
Михаил Непряхин: между Собой

1152
02:04:37.180 --> 02:04:50.990
Михаил Непряхин: и ну не Важно вот Мы можем например, и

1153
02:04:51.510 --> 02:05:08.790
Михаил Непряхин: ну по дефолту вот она Там Причем тут что-то капает Подсказывал эта переменная нам. Типию вот нам. Сипью вернет количество вот ядер У меня У процессора ну оно Там будет, шестнадцать Там Гомокспорт, возвращает инт да если Мы тут напечатаем

1154
02:05:13.450 --> 02:05:21.430
Михаил Непряхин: не скажи тебе шестнадцать а ты ну тридцать два а мне ж тридцать два физических вот тридцать два вам Вернул вот значит можем запустить в одном одном Потоке можем запустить

1155
02:05:23.080 --> 02:05:24.050
Михаил Непряхин: а вот

1156
02:05:25.900 --> 02:05:29.620
Михаил Непряхин: да но он возвращает Предыдущий Предыдущий он изучает, сколько было да

1157
02:05:29.990 --> 02:05:33.020
Михаил Непряхин: короче вот указываем Так запустить в одном Потоке

1158
02:05:33.650 --> 02:05:52.210
Михаил Непряхин: и оно все равно Выполняется Одновременно ну потому что Программа, работает Синхронно автоматически хоть в одном потоке тут срочно ровно все это отрабатывает все десять запущенных грутин Одновременно спят одну секунду и отрабатывают десять Раз, ну то есть как бы а если, мы гоу не укажем

1159
02:05:52.620 --> 02:06:08.100
Михаил Непряхин: то соответственно каждая будет спать одну секунду и синхронно работать то есть вот он вот это как вот если Мы хотим? Достигнуть огромную работу Мы Гоу не пишем а если Хотим? Синхронную пишем Голову. Получаем синхронную работу

1160
02:06:08.960 --> 02:06:19.960
Михаил Непряхин: и это это очень круто то есть как бы там если вы работали до этого что-то подобное написали на других языках со синковейтами там севен-клубами

1161
02:06:20.290 --> 02:06:23.660
Михаил Непряхин: То там Это Прям ну. Так себе, выглядит сторонником

1162
02:06:25.030 --> 02:06:25.800
Михаил Непряхин: Так и

1163
02:06:26.050 --> 02:06:40.660
Михаил Непряхин: все если. Следующий вопрос давайте и последний вопрос этот щелк Вы все расходимся а как серый понимает Что именно на этот спрос надо получить. Результат и вернуть Именно от той брутины ну помечает. И помечается то есть Там, же.

1164
02:06:40.760 --> 02:06:54.440
Михаил Непряхин: Ну, Это легко запомнить приходят заголовки за заголовки Запоминаются не вожаты а стек у каждой грутины свой стек поэтому когда грутина поднимается Она помнит на какой запрос Она

1165
02:06:54.900 --> 02:07:02.090
Михаил Непряхин: должна дать ответ и в какое Место, ну то есть понятно что. Это в том Же самом соединении но

1166
02:07:02.230 --> 02:07:05.620
Михаил Непряхин: она Же знает какой запрос она обрабатывает

1167
02:07:05.840 --> 02:07:12.190
Михаил Непряхин: кукути из какого, хоста к ней пришел запрос там Же айпишник,

1168
02:07:12.390 --> 02:07:13.400
Михаил Непряхин: как быну

1169
02:07:13.630 --> 02:07:14.560
Михаил Непряхин: все просто

1170
02:07:16.700 --> 02:07:17.610
Михаил Непряхин: Так все

1171
02:07:18.490 --> 02:07:20.120
Михаил Непряхин: здесь все понятно с этим.

1172
02:07:21.690 --> 02:07:22.780
David R: Можно, вопрос.

1173
02:07:22.780 --> 02:07:23.690
Михаил Непряхин: Давайте.

1174
02:07:24.060 --> 02:07:36.280
David R: Что в языках где есть в том же самом питоме мы можем расставляя и выт и указать планировщику что вот в этих местах ты Можешь, переключиться

1175
02:07:36.280 --> 02:07:53.850
David R: а и

1176
02:07:53.850 --> 02:08:00.290
David R: Операция, и начинает Или не передает управление Или наоборот Там ну То что он тупит и ключит бывает такое.

1177
02:08:00.830 --> 02:08:06.290
Михаил Непряхин: Я Ни разу такого. Не встречал. И мне это Ни разу Не требовалось Но Такая возможность есть

1178
02:08:07.570 --> 02:08:08.270
Михаил Непряхин: да

1179
02:08:09.680 --> 02:08:10.410
Михаил Непряхин: Так

1180
02:08:10.550 --> 02:08:12.710
Михаил Непряхин: Не голаяксита гоушет

1181
02:08:13.240 --> 02:08:15.050
Михаил Непряхин: вот это вот будет авейт

1182
02:08:15.250 --> 02:08:27.520
Михаил Непряхин: она локовые там никогда в жизни то есть это просто вот знаю что такое есть никогда в жизни Не требовалось никогда Не Видел. Чтобы кому-то надо было но Мы можем сказать вот в Этом месте

1183
02:08:27.730 --> 02:08:34.450
Михаил Непряхин: аа пожалуйста, перестань работать в Этой грутине и Дай поработать на Другой куртине То есть такая возможность здесь

1184
02:08:35.700 --> 02:08:36.780
Михаил Непряхин: мото уэйд.

1185
02:08:37.130 --> 02:08:38.700
Илиас Эззахид: Можно Один, последний вопрос.

1186
02:08:38.700 --> 02:08:39.480
Михаил Непряхин: Давайте.

1187
02:08:39.480 --> 02:08:40.360
Илиас Эззахид: Так

1188
02:08:40.700 --> 02:08:46.000
Илиас Эззахид: У кого, есть пакет контекст где можно ставить какой-то стоит правильно понимаю.

1189
02:08:46.000 --> 02:08:46.530
Михаил Непряхин: Да.

1190
02:08:46.530 --> 02:08:47.460
Илиас Эззахид: А

1191
02:08:47.580 --> 02:08:56.950
Илиас Эззахид: этот стейт он локальный для горутины Или он шевелится по горучинам он связан как-то связан с гурутинами вообще.

1192
02:08:57.940 --> 02:09:04.210
Михаил Непряхин: Оон для грутины он ну можно конечно из одной грутины в другую этот! Контекст передать

1193
02:09:04.400 --> 02:09:16.370
Михаил Непряхин: да но обычно один запрос Один. Контекст то есть ну. Это и из контекста Видно что контекст это вот пришел какой то запрос

1194
02:09:16.530 --> 02:09:24.780
Михаил Непряхин: допустим надо вам для Дитупликации Айтишник ключи импотентности взять вы его берете помещаете в контекст

1195
02:09:24.900 --> 02:09:26.730
Михаил Непряхин: и дальше этот контекст

1196
02:09:26.780 --> 02:09:46.080
Михаил Непряхин: пробрасываете, дальше по всем. Вызовам функций ну это бывает нужно для трейсинга или вот для какой нибудь вот чтобы дальше следующий сервис проббросить какие то заколовки вот обычно ну Вернее Всегда, все таки на Одну гору тину один контекст

1197
02:09:46.590 --> 02:09:51.260
Михаил Непряхин: но можно передать контекст из одной груди в другую

1198
02:09:51.500 --> 02:09:53.050
Михаил Непряхин: да так можно сделать

1199
02:09:53.610 --> 02:10:04.660
Михаил Непряхин: то есть смотрите ведь, память у нас общая да то есть мы из любой гурутины Можем взять и Обратиться к Какому то Кусочку памяти

1200
02:10:04.910 --> 02:10:13.590
Михаил Непряхин: ну просто надо Не Забывать Что кто то еще может какая то другая грутина может сюда же обращаться да вот гонка данных чтобы ее не было нужен Мюток

1201
02:10:13.750 --> 02:10:28.540
Михаил Непряхин: но если, мы знаем что Кроме нас туда никто не полезет то и Минутокс не нужен или допустим только на чтение мы только читаем хоть, из ста тысяч. Грутин Мы будем читать один и тот же Кусочек памяти Это, безопасно пожалуйста,

1202
02:10:28.540 --> 02:10:36.320
Михаил Непряхин: то есть как бы Мюток нужен Там где есть запись он говорит где есть запись и Мы не хотим? Устроить вон Куда она их Там появляется мюкс

1203
02:10:36.440 --> 02:10:41.470
Михаил Непряхин: если. Записи Нет Только Чтение. Любой кусок памяти из любого количества Грусти нужно читать

1204
02:10:41.640 --> 02:10:46.720
Михаил Непряхин: можем расширить этот Не знаю контекст на всех квартир, но просто в этом Нет смысла но техническим образом,

1205
02:10:48.310 --> 02:10:55.780
Михаил Непряхин: да все значит по платье там ссылку я скинув чатюсь на восемь занятий было

1206
02:10:56.160 --> 02:11:06.270
Михаил Непряхин: кто помесячно платит то надо будет оплатить сынку Яскину до Следующего занятия вот все Давайте надеюсь было Интересно Домашку, посмотрите

1207
02:11:06.380 --> 02:11:11.070
Михаил Непряхин: тоже там очень много интересных материалов Которые можно посмотреть до Следующего вторника,

1208
02:11:11.250 --> 02:11:12.680
Михаил Непряхин: создавайте всем. Пока.

