💡 В продолжение темы о вопросах на собеседовании и паттернах, одним из наиболее часто используемых вами паттернов так же является Итератор и вот почему.
Коллекции в C# могут работать с циклом foreach благодаря реализации паттерна Итератор, который, в свою очередь, может быть реализован благодаря тому, что эти коллекции реализуют интерфейсы IEnumerable и IEnumerator. Такой подход даёт возможность, не разбираясь в деталях реализации коллекции, перебирать её элементы в цикле.
🎥 В этом уроке мы разберём цикл foreach на атомы, разберёмся с тем, при чём тут паттерн Итератор, а также с интерфейсы IEnumerable и IEnumerator.
https://www.youtube.com/watch?v=YpRSnUkepv8
Коллекции в C# могут работать с циклом foreach благодаря реализации паттерна Итератор, который, в свою очередь, может быть реализован благодаря тому, что эти коллекции реализуют интерфейсы IEnumerable и IEnumerator. Такой подход даёт возможность, не разбираясь в деталях реализации коллекции, перебирать её элементы в цикле.
🎥 В этом уроке мы разберём цикл foreach на атомы, разберёмся с тем, при чём тут паттерн Итератор, а также с интерфейсы IEnumerable и IEnumerator.
https://www.youtube.com/watch?v=YpRSnUkepv8
YouTube
Enumerable и IEnumerator в C#: как работает цикл foreach и при чём тут паттерн Итератор | C# | #85
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
Коллекции в C# могут работать…
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
Коллекции в C# могут работать…
🔄 Вернёмся к теме вопросов на job interview!
В продолжение предыдущего поста о паттерне Итератор.
Само собой, вы уже рассказали об интерфейсах IEnumerable и IEnumerator, перечислили методы и свойства интерфейса IEnumerator:
• MoveNext()
• Reset()
• Current
Рассказали, как они работают.
🤔 Логичным будет следующий вопрос:
Что вы знаете про yield?
Уже в следующем уроке мы этот самый yield подробно разберём!
Будут бенчмарки с пруфами!
🔑 А пока, вот основные моменты, которые стоит помнить о yield:
1️⃣ Разворачивается в стейт-машину
При компиляции метод с yield преобразуется в скрытый класс, который управляет состоянием итерации (реализует IEnumerator).
2️⃣ Отложенное выполнение
Код внутри метода с yield не выполняется сразу, а только тогда, когда последовательность начинает перечисляться (например, в цикле foreach).
Это может значительно повысить производительность, так как позволяет получать элементы по одному, а не всю коллекцию сразу. Чем больше элементов в коллекции, тем больше мы выигрываем в производительности.
3️⃣ Эффективное использование памяти
Поскольку элементы обрабатываются по очереди, yield позволяет работать с большими коллекциями, не занимая много оперативной памяти. Это особенно полезно при обработке сотен тысяч объектов, когда нет необходимости хранить всю коллекцию в памяти. Используем меньше памяти. Реже отрабатывает сборщик мусора, что довольно накладно.
З.Ы. На Udemy эта тема уже есть. Там я буду выкладывать всё немного раньше в качестве благодарности за финансовую поддержку. https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
В продолжение предыдущего поста о паттерне Итератор.
Само собой, вы уже рассказали об интерфейсах IEnumerable и IEnumerator, перечислили методы и свойства интерфейса IEnumerator:
• MoveNext()
• Reset()
• Current
Рассказали, как они работают.
🤔 Логичным будет следующий вопрос:
Что вы знаете про yield?
Уже в следующем уроке мы этот самый yield подробно разберём!
Будут бенчмарки с пруфами!
🔑 А пока, вот основные моменты, которые стоит помнить о yield:
1️⃣ Разворачивается в стейт-машину
При компиляции метод с yield преобразуется в скрытый класс, который управляет состоянием итерации (реализует IEnumerator).
2️⃣ Отложенное выполнение
Код внутри метода с yield не выполняется сразу, а только тогда, когда последовательность начинает перечисляться (например, в цикле foreach).
Это может значительно повысить производительность, так как позволяет получать элементы по одному, а не всю коллекцию сразу. Чем больше элементов в коллекции, тем больше мы выигрываем в производительности.
3️⃣ Эффективное использование памяти
Поскольку элементы обрабатываются по очереди, yield позволяет работать с большими коллекциями, не занимая много оперативной памяти. Это особенно полезно при обработке сотен тысяч объектов, когда нет необходимости хранить всю коллекцию в памяти. Используем меньше памяти. Реже отрабатывает сборщик мусора, что довольно накладно.
З.Ы. На Udemy эта тема уже есть. Там я буду выкладывать всё немного раньше в качестве благодарности за финансовую поддержку. https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
Udemy
C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ
Глубокое и профессиональное понимание C# и объектно-ориентированного программирования (ООП)
В этом уроке мы разберёмся с механизмом отложенного возврата значений yield return, рассмотрим стейт-машину, в которую это всё компилируется, а также с помощью бенчмарков проверим, как использование yield может существенно оптимизировать производительность. https://www.youtube.com/watch?v=aUbFYuBMDqU
YouTube
Ключевое слово yield | для чего нужен yield return и как он устроен | C# | Урок #86
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
🔹 Telegram канал https:…
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
🔹 Telegram канал https:…
🔄 И снова к теме вопросов на job interview!
Одной из ключевых тем собеседования будут вопросы о строках и классе StringBuilder, поскольку знания о них так же охватывают понимание того как устроена работа с памятью в .NET.
🔑 Что следует знать о строках и StringBuilder:
1️⃣ Строки неизменяемы (immutable)
• Когда строки объединяются с помощью оператора + (то есть выполняется конкатенация), происходит создание нового объекта строки в памяти.
• Старые объекты остаются в памяти до сборки мусора (Garbage Collector).
2️⃣ Конкатенация строк в цикле == проблемы с производительностью
• Если конкатенация выполняется внутри цикла, это может сильно замедлить работу программы.
• Причина в том, что строки являются неизменяемыми: на каждой итерации создается новый объект в памяти, а старые объекты ожидают удаления сборщиком мусора, что является дорогостоящей операцией.
3️⃣ Класс StringBuilder решает проблему конкатенации
• StringBuilder использует внутренний изменяемый буфер, что позволяет добавлять, изменять и удалять текст без создания новых объектов.
• Вместо создания нового объекта строки изменения происходят внутри буфера, что позволяет избежать лишних выделений памяти и сборок мусора.
🛠 Когда использовать StringBuilder?
• Если строки изменяются часто (например, в циклах).
• При конкатенации большого количества строк.
📌 Интернирование строк (String Interning)
Отдельным пунктом следует упомянуть о механизме интернирования строк.
• Интернирование строк — это механизм оптимизации памяти, который позволяет хранить только одну копию каждой уникальной строки в специальном пуле строк (intern pool).
• Все литеральные строки (например, "Hello") автоматически интернируются и добавляются в пул строк на этапе компиляции.
• Если создается строка с таким же значением, которое уже есть в пуле, ссылка будет указывать на существующую строку, а не создавать новый объект.
Одной из ключевых тем собеседования будут вопросы о строках и классе StringBuilder, поскольку знания о них так же охватывают понимание того как устроена работа с памятью в .NET.
🔑 Что следует знать о строках и StringBuilder:
1️⃣ Строки неизменяемы (immutable)
• Когда строки объединяются с помощью оператора + (то есть выполняется конкатенация), происходит создание нового объекта строки в памяти.
• Старые объекты остаются в памяти до сборки мусора (Garbage Collector).
2️⃣ Конкатенация строк в цикле == проблемы с производительностью
• Если конкатенация выполняется внутри цикла, это может сильно замедлить работу программы.
• Причина в том, что строки являются неизменяемыми: на каждой итерации создается новый объект в памяти, а старые объекты ожидают удаления сборщиком мусора, что является дорогостоящей операцией.
3️⃣ Класс StringBuilder решает проблему конкатенации
• StringBuilder использует внутренний изменяемый буфер, что позволяет добавлять, изменять и удалять текст без создания новых объектов.
• Вместо создания нового объекта строки изменения происходят внутри буфера, что позволяет избежать лишних выделений памяти и сборок мусора.
🛠 Когда использовать StringBuilder?
• Если строки изменяются часто (например, в циклах).
• При конкатенации большого количества строк.
📌 Интернирование строк (String Interning)
Отдельным пунктом следует упомянуть о механизме интернирования строк.
• Интернирование строк — это механизм оптимизации памяти, который позволяет хранить только одну копию каждой уникальной строки в специальном пуле строк (intern pool).
• Все литеральные строки (например, "Hello") автоматически интернируются и добавляются в пул строк на этапе компиляции.
• Если создается строка с таким же значением, которое уже есть в пуле, ссылка будет указывать на существующую строку, а не создавать новый объект.
Сегодня добиваем yield и разбираем комбинацию yield break в C# 🔥 https://www.youtube.com/watch?v=f_DLSkFhzQY
YouTube
yield break в C#: что это такое и зачем использовать | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | #87
yield break в C#: что это такое, зачем использовать и как работает на практике
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode…
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode…
Для поддержания актуальности этого курса разбираемся с тем, куда пропал метод Main и класс Program, а также с тем, что такое Top-level statements. Далее пойдут более интересные технические темы.
З.Ы. Для тех, кто купил этот курс на Udemy, не переживайте — эта тема раскрыта в самом начале курса в видео о том, как создавать проект. (Там заменить устаревшее видео и расширить курс проще, чем на YouTube) https://www.youtube.com/watch?v=iFWcob1ttNg
З.Ы. Для тех, кто купил этот курс на Udemy, не переживайте — эта тема раскрыта в самом начале курса в видео о том, как создавать проект. (Там заменить устаревшее видео и расширить курс проще, чем на YouTube) https://www.youtube.com/watch?v=iFWcob1ttNg
YouTube
Куда пропал метод main и класс Program | top level statements | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ
Для поддержания актуальности этого курса разбираемся с тем, куда пропал метод Main и класс Program, а также с тем, что такое Top-level statements.
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс…
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс…
Вчера весь вечер тестил китайский DeepSeek (если кто не в курсе – аналог ChatGPT). Первые впечатления – довольно неплохо! 🤔
Кажется, он менее осторожен в высказываниях и более прямолинеен в суждениях – наваливает без лишних церемоний. 😎
Тестим дальше.
Кажется, он менее осторожен в высказываниях и более прямолинеен в суждениях – наваливает без лишних церемоний. 😎
Тестим дальше.
Рассуждаем на тему: «Заменят ли нейросети или искусственный интеллект программистов?» https://www.youtube.com/watch?v=5Nwt6jOTsC0
YouTube
Искусственный интеллект ЗАМЕНИТ программистов ИЛИ НЕТ?
Рассуждаем на тему: «Заменят ли нейросети или искусственный интеллект программистов?»
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.…
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.…
📢 Запускаем LLM локально за 5 минут! ⚡️
По комментариям под прошлым видео я заметил, что многим интересен запуск больших языковых моделей (LLM) на своём ПК, но не все знают, как это сделать. 🤔
Поэтому вот один из самых простых и быстрых способов! 🚀 Запускаем DeepSeek R1 локально с помощью LM Studio. 🔧💻 https://www.youtube.com/watch?v=UPdtp4l7IjE
По комментариям под прошлым видео я заметил, что многим интересен запуск больших языковых моделей (LLM) на своём ПК, но не все знают, как это сделать. 🤔
Поэтому вот один из самых простых и быстрых способов! 🚀 Запускаем DeepSeek R1 локально с помощью LM Studio. 🔧💻 https://www.youtube.com/watch?v=UPdtp4l7IjE
YouTube
Как легко запустить DeepSeek R1 локально | Бесплатный аналог ChatGPT на твоём ПК
Запускаем большую языковую модель (LLM), такую как ChatGPT, локально на своём ПК всего за 5 минут. Разбираем на примере DeepSeek R1.
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо…
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо…
В этом видео разберёмся с делегатами в C# – что это такое, как они работают и зачем нужны. Рассмотрим встроенные делегаты Func и Action, а также их связь с LINQ и лямбда-выражениями. Покажу примеры использования, создание собственных делегатов и работу с Multicast Delegate. https://www.youtube.com/watch?v=vkOnfEn8tFU
YouTube
Делегаты и Лямбда-выражения | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | #88
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
В этом видео разберёмся…
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
В этом видео разберёмся…
🎯 События (events) в C#
В этом видео разбираем, как работают события в C# и как они связаны с делегатами и паттерном Наблюдатель.
Разберёмся, в чём проблемы инкапсуляции при использовании делегатов и как события помогают это исправить. https://www.youtube.com/watch?v=aNK0CjwFtwU
В этом видео разбираем, как работают события в C# и как они связаны с делегатами и паттерном Наблюдатель.
Разберёмся, в чём проблемы инкапсуляции при использовании делегатов и как события помогают это исправить. https://www.youtube.com/watch?v=aNK0CjwFtwU
YouTube
Cобытия (Events) в C# | Проблемы Инкапсуляции и Делегаты | C# ОТ НОВИЧКА К ПРОФЕССИОНАЛУ | #89
➡️ Если вам нравятся мои уроки и вы хотите поддержать создание новых материалов, вы можете приобрести мой курс на Udemy. Спасибо за вашу поддержку!
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
В этом видео разбираем события…
👉 https://www.udemy.com/course/simplecode-cshap/?referralCode=53C0314076F77DCC2A02
В этом видео разбираем события…