msg_ptr (message pointer)
msg_ptr это указатель на структуру или класс, который содержит данные сообщения. Обычно это просто указатель void*.
Он используется в многопоточном программировании для передачи сообщений между потоками.
Использование указателей вместо копирования данных позволяет избежать лишних копий и ускорить передачу сообщений между потоками.
Если запустить код из примера, можно увидеть, что данные успешно передаются между потоками через очередь с использованием указателей на сообщения.
msg_ptr это указатель на структуру или класс, который содержит данные сообщения. Обычно это просто указатель void*.
Он используется в многопоточном программировании для передачи сообщений между потоками.
Использование указателей вместо копирования данных позволяет избежать лишних копий и ускорить передачу сообщений между потоками.
Если запустить код из примера, можно увидеть, что данные успешно передаются между потоками через очередь с использованием указателей на сообщения.
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#вопросы_с_собеседований
Что такое union?
Union - это специальный класс, который позволяет хранить данные разных типов в одной области памяти.
Основные характеристики:
- Объявляется с ключевым словом union.
- В каждый момент активно только одно поле.
- Размер равен наибольшему полю.
- Позволяет интерпретировать одну область памяти разными способами.
- Экономит память.
- Доступ к полям как в обычном классе.
Что такое union?
Основные характеристики:
- Объявляется с ключевым словом union.
- В каждый момент активно только одно поле.
- Размер равен наибольшему полю.
- Позволяет интерпретировать одну область памяти разными способами.
- Экономит память.
- Доступ к полям как в обычном классе.
#вопросы_с_собеседований
Что такое рефакторинг?
Рефакторинг - это процесс изменения внутренней структуры программы без изменения ее внешнего поведения.
Рефакторинг кода может применяться в следующих ситуациях:
- Улучшение читаемости и понятности кода.
- Оптимизация производительности.
- Устранение дублирования кода.
Рефакторинг особенно важен при работе над большими проектами, где код многократно изменяется и расширяется. Он позволяет поддерживать кодбейз чистым, современным и масштабируемым.
Что такое рефакторинг?
Рефакторинг кода может применяться в следующих ситуациях:
- Улучшение читаемости и понятности кода.
- Оптимизация производительности.
- Устранение дублирования кода.
Рефакторинг особенно важен при работе над большими проектами, где код многократно изменяется и расширяется. Он позволяет поддерживать кодбейз чистым, современным и масштабируемым.
Ключевое слово const
Ключевое слово const используется для создания констант и неизменяемых объектов.
- Const для объявления переменных: запрещает изменение объекта после инициализации.
- Const указатели и ссылки: указатель или ссылка на константный объект. Нельзя изменить объект через них, только читать.
- Функции, возвращающие const значения: гарантируют, что функция не изменит объект.
- Const члены класса: нельзя изменить через объект класса.
- Const методы класса: не меняют члены класса. Часто применяются к getter-методам.
#это_база
Ключевое слово const используется для создания констант и неизменяемых объектов.
- Const для объявления переменных: запрещает изменение объекта после инициализации.
- Const указатели и ссылки: указатель или ссылка на константный объект. Нельзя изменить объект через них, только читать.
- Функции, возвращающие const значения: гарантируют, что функция не изменит объект.
- Const члены класса: нельзя изменить через объект класса.
- Const методы класса: не меняют члены класса. Часто применяются к getter-методам.
#это_база
🤔 Что делать, если в компании нет SRE в чистом виде? В Яндекс Маркете считают, что инженерия надёжности — это общая ответственность, а не задача отдельной команды.
Они выпустили отличный разбор, где рассказали, как эта культура надёжности устроена у них на практике и почему их инженеры по надёжности — это часто бывшие «инфраструктурщики».
В статье много интересного:
🧠 Почему в war room самый опытный инженер не чинит сам, а направляет команду.
🧠 Как автоматизированный бот избавляет инженеров от рутины во время инцидента.
🧠 Почему сервис никогда не сможет достичь заветных четырёх девяток аптайма, если платформа под ним нестабильна.
Очень полезный взгляд на организационную сторону SRE и культуру надёжности.
Они выпустили отличный разбор, где рассказали, как эта культура надёжности устроена у них на практике и почему их инженеры по надёжности — это часто бывшие «инфраструктурщики».
В статье много интересного:
🧠 Почему в war room самый опытный инженер не чинит сам, а направляет команду.
🧠 Как автоматизированный бот избавляет инженеров от рутины во время инцидента.
🧠 Почему сервис никогда не сможет достичь заветных четырёх девяток аптайма, если платформа под ним нестабильна.
Очень полезный взгляд на организационную сторону SRE и культуру надёжности.
Ключевое слово auto
Он был введен в C++11 для упрощения объявления переменных, избавляя от необходимости указывать длинные и сложные типы.
При использовании
Работает для любых типов данных — встроенных, пользовательских, шаблонов.
Переменная, объявленная с
#это_база
auto
— это тип вывода, который позволяет компилятору автоматически определять тип переменной на основе выражения инициализации. Он был введен в C++11 для упрощения объявления переменных, избавляя от необходимости указывать длинные и сложные типы.
При использовании
auto
тип переменной выводится компилятором во время компиляции и не может меняться во время выполнения.Работает для любых типов данных — встроенных, пользовательских, шаблонов.
Переменная, объявленная с
auto
, всегда инициализируется при объявлении.auto
полезен при работе с итераторами, с функциями возврата сложных типов, для упрощения кода.#это_база
#вопросы_с_собеседований
Как работают константные методы?
Константные методы — это методы, которые помечены модификатором final. Это означает, что тело метода не может быть переопределено в подклассах.
Константные методы часто используются, когда нужно предоставить клиентам неизменяемую реализацию некоторой функциональности. Например, утилитные классы часто содержат константные методы.
Основные характеристики константных методов:
— Могут вызываться на экземплярах класса, так как не являются статическими.
— Может обращаться к полям класса, даже нестатическим, т. к. вызывается на объекте класса.
— Может вызывать другие методы класса, в том числе не константные.
— Сигнатура константного метода в подклассе должна полностью совпадать с сигнатурой в суперклассе, иначе это будет перегрузка, а не переопределение.
Как работают константные методы?
Константные методы часто используются, когда нужно предоставить клиентам неизменяемую реализацию некоторой функциональности. Например, утилитные классы часто содержат константные методы.
Основные характеристики константных методов:
— Могут вызываться на экземплярах класса, так как не являются статическими.
— Может обращаться к полям класса, даже нестатическим, т. к. вызывается на объекте класса.
— Может вызывать другие методы класса, в том числе не константные.
— Сигнатура константного метода в подклассе должна полностью совпадать с сигнатурой в суперклассе, иначе это будет перегрузка, а не переопределение.
rvalue
Константные ссылки или ссылки на
Неконстантные ссылки (
*
#это_база
Rvalue
— это временный объект, который может быть перемещен или скопирован. Например, результат выражения или возвращаемое значение функции — это rvalue
. Rvalues
являются временными объектами, которые разрушаются после использования. Перемещение ресурсов из rvalue
более эффективно, чем копирование.Константные ссылки или ссылки на
const
(const T&
) могут связываться только с lvalues
.Неконстантные ссылки (
T&
) могут связываться как с lvalues
, так и с rvalues
.*
Lvalue
— объект с именем, например переменная.#это_база
🎮 Киношный рендер в UE5 для 3D-художников
Современный геймдев требует от 3D-художников не только умения создавать качественные модели, но и навыков работы с продвинутыми инструментами рендеринга. В этом уроке мы погрузимся в мир кинематографического рендеринга в Unreal Engine 5 – технологии, которая позволяет создавать впечатляющие визуальные эффекты, достойные большого кино.
👉Что вы узнаете:
- Основы кинематографического рендеринга в Unreal Engine 5
- Работа с Movie Render Queue и настройка параметров рендера
- Создание реалистичных эффектов освещения и постобработки
- Техники создания кинематографических бликов и боке
- Настройка глубины резкости и фокусных эффектов
Бесплатный вебинар проходит в рамках курса “3D Artist“
Регистрация и подробнее о курсе 3D Artist - https://otus.pw/pOPz/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Современный геймдев требует от 3D-художников не только умения создавать качественные модели, но и навыков работы с продвинутыми инструментами рендеринга. В этом уроке мы погрузимся в мир кинематографического рендеринга в Unreal Engine 5 – технологии, которая позволяет создавать впечатляющие визуальные эффекты, достойные большого кино.
👉Что вы узнаете:
- Основы кинематографического рендеринга в Unreal Engine 5
- Работа с Movie Render Queue и настройка параметров рендера
- Создание реалистичных эффектов освещения и постобработки
- Техники создания кинематографических бликов и боке
- Настройка глубины резкости и фокусных эффектов
Бесплатный вебинар проходит в рамках курса “3D Artist“
Регистрация и подробнее о курсе 3D Artist - https://otus.pw/pOPz/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Токенизация строки
Токенизация строки — это процесс разбиения строки на токены (лексемы) — отдельные элементы, например слова, числа, операторы.
Для токенизации нужно:
— Разбить строку на токены при помощи разделителей, например пробелов.
— Классифицировать каждый токен — определить его тип (число, строка, оператор и т. д.)
— Преобразовать токены к нужному типу, например из строки в число.
— Сохранить результаты в подходящей структуре данных.
— Обрабатывать ошибки, например неверный формат числа.
Для разбиения строки на токены в С++ удобно использовать
Для хранения результатов часто используют структуры или классы, хранящие тип и значение токена.
Токенизация нужна для разбора входных данных, конфигурационных файлов, математических выражений и т. д.
#это_база
Токенизация строки — это процесс разбиения строки на токены (лексемы) — отдельные элементы, например слова, числа, операторы.
Для токенизации нужно:
— Разбить строку на токены при помощи разделителей, например пробелов.
— Классифицировать каждый токен — определить его тип (число, строка, оператор и т. д.)
— Преобразовать токены к нужному типу, например из строки в число.
— Сохранить результаты в подходящей структуре данных.
— Обрабатывать ошибки, например неверный формат числа.
Для разбиения строки на токены в С++ удобно использовать
stringstream
.Для хранения результатов часто используют структуры или классы, хранящие тип и значение токена.
Токенизация нужна для разбора входных данных, конфигурационных файлов, математических выражений и т. д.
#это_база