#полезное
🥄 Напоминание: лучший способ чему-либо научиться — делать собственные проекты.
Этот репозиторий содержит большинство проектов, какие только можно представить, и множество языков для их реализации.
Многие из них — на C, другие — на Assembly, и каждый из них даст вам мощную прокачку.
👉 Новости 👉 База вопросов
Этот репозиторий содержит большинство проектов, какие только можно представить, и множество языков для их реализации.
Многие из них — на C, другие — на Assembly, и каждый из них даст вам мощную прокачку.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#Собес #Cplus
🤔 Расскажите про стек в контексте С++
Стек в С++ - это адаптер контейнера, работающий по принципу LIFO (Last In, First Out), где последний элемент, добавленный в стек, будет первым, который из него извлечет.
👉 Новости 👉 База вопросов
Стек в С++ - это адаптер контейнера, работающий по принципу LIFO (Last In, First Out), где последний элемент, добавленный в стек, будет первым, который из него извлечет.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😎 Представьте себе написание сложной разветвлённой логики без единого оператора
Можешь ознакомиться с этим гайдом о сопоставлении с образцом
👉 Новости 👉 База вопросов
if. Я уже некоторое время работаю с сопоставлением с образцом, но с новым языком, не C/C++Можешь ознакомиться с этим гайдом о сопоставлении с образцом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#полезное
🥺 Сегодня получил интересный вопрос: что быстрее —
Ответ: n++ читает стек 3 раза, в то время как ++n и n + 1 — 4 раза.
Тесты были проведены на следующем коде (смотри фото):
++n и n + 1
Для
> n инкрементируется на стеке
> значение n загружается в регистр
> регистр сохраняется в dummy на стеке
n++
Для
> n загружается в регистр-1
> регистр-1 инкрементируется и результат сохраняется в регистр-2
> регистр-2 сохраняется обратно на стек (обновлённое значение n)
> регистр-1 сохраняется на стек в dummy (исходное значение n)
Может показаться, что код для n++ содержит больше инструкций и поэтому должен быть медленнее, но это не так.
На практике не существует такого понятия, как «инкремент на стеке» — значение фактически загружается в процессор, инкрементируется там, а затем записывается обратно.
Если посчитать обращения к стеку (чтения и записи):
> ++n и n + 1: чтение, запись, чтение, запись — 4 обращения к стеку
> n++: чтение, запись, запись — 3 обращения к стеку
Поскольку чтение из регистра значительно быстрее, чем из стека, это делает n++ более быстрым вариантом.
👉 Новости 👉 База вопросов
n++, ++n или n + 1 ?Ответ: n++ читает стек 3 раза, в то время как ++n и n + 1 — 4 раза.
Тесты были проведены на следующем коде (смотри фото):
++n и n + 1
Для
dummy = ++n и n = n + 1; dummy = n происходит следующее:> n инкрементируется на стеке
> значение n загружается в регистр
> регистр сохраняется в dummy на стеке
n++
Для
dummy = n++ происходит следующее:> n загружается в регистр-1
> регистр-1 инкрементируется и результат сохраняется в регистр-2
> регистр-2 сохраняется обратно на стек (обновлённое значение n)
> регистр-1 сохраняется на стек в dummy (исходное значение n)
Может показаться, что код для n++ содержит больше инструкций и поэтому должен быть медленнее, но это не так.
На практике не существует такого понятия, как «инкремент на стеке» — значение фактически загружается в процессор, инкрементируется там, а затем записывается обратно.
Если посчитать обращения к стеку (чтения и записи):
> ++n и n + 1: чтение, запись, чтение, запись — 4 обращения к стеку
> n++: чтение, запись, запись — 3 обращения к стеку
Поскольку чтение из регистра значительно быстрее, чем из стека, это делает n++ более быстрым вариантом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
#видео
😐 Изучение ядра Linux с использованием трассировки
Отличное видео о трассировке системных вызовов и о том, как это работает под капотом
Источник
👉 Новости 👉 База вопросов
Отличное видео о трассировке системных вызовов и о том, как это работает под капотом
Источник
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Cplus
🤔 Что такое исключение в С++?
Исключение в С++ - это обьект, который выбрасывается во время выполнения программы, когда возникает необычная ситуация или ошибка. Исключения обрабатываются с помощью блока try-catch.
👉 Новости 👉 База вопросов
Исключение в С++ - это обьект, который выбрасывается во время выполнения программы, когда возникает необычная ситуация или ошибка. Исключения обрабатываются с помощью блока try-catch.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1
#ЛитКод
Задача: 717. 1-bit and 2-bit Characters
У нас есть два специальных символа: первый символ может быть представлен одним битом 0. Второй символ может быть представлен двумя битами (10 или 11). Если задан двоичный массив bits, который заканчивается 0, верните true, если последний символ должен быть однобитным.
Пример:
👨💻 Алгоритм:
1⃣ Инициализируйте индекс для итерации по массиву.
2⃣ Пройдите по массиву, увеличивая индекс на 1, если текущий бит равен 0, и на 2, если текущий бит равен 1.
3⃣ Проверьте, достиг ли индекс последнего элемента массива, и верните результат.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 717. 1-bit and 2-bit Characters
У нас есть два специальных символа: первый символ может быть представлен одним битом 0. Второй символ может быть представлен двумя битами (10 или 11). Если задан двоичный массив bits, который заканчивается 0, верните true, если последний символ должен быть однобитным.
Пример:
Input: bits = [1,0,0]
Output: true
bool isOneBitCharacter(vector<int>& bits) {
int i = 0;
while (i < bits.size() - 1) {
i += bits[i] + 1;
}
return i == bits.size() - 1;
}Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👍1
#полезное
👋 Изучай разработку ОС, это реально увлекательно
Функция
Когда выполнение доходит до brk, обработчик перехватывает исключение, получает доступ к регистрам потока, модифицирует x0, подставляя нужное значение возврата, продвигает счётчик инструкций, чтобы пропустить ловушку, и выполнение продолжается.
В комбинации с остальной частью моего кода это обеспечивает патчинг во время выполнения, интроспекцию ВМ и метаморфное выполнение кода.
👉 Новости 👉 База вопросов
Функция
breakpoint_handler() устанавливает обработчик исключений, который перехватывает инструкции brk, выполняемые внутри целевого процесса. Здесь написана отдельная функция patch(), — она внедряет трамплин в исполняемую область памяти, и этот трамплин содержит инструкцию brk в качестве ловушки.Когда выполнение доходит до brk, обработчик перехватывает исключение, получает доступ к регистрам потока, модифицирует x0, подставляя нужное значение возврата, продвигает счётчик инструкций, чтобы пропустить ловушку, и выполнение продолжается.
В комбинации с остальной частью моего кода это обеспечивает патчинг во время выполнения, интроспекцию ВМ и метаморфное выполнение кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍1🔥1
#полезное
❤️🔥 Чувак оптимизировал умножение матриц на C с использованием SIMD, блочной работы с кэшем и многопоточности, сократив время выполнения в 80 раз.
Репозиторий на GitHub
👉 Новости 👉 База вопросов
Репозиторий на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😈3❤2🔥1
#Собес #Cplus
🤔 Что такое аргумент по умолчанию в функции?
Аргумент по умолчанию в функции С++ — это параметр, которому присваивается значение по умолчанию. Если вызывающая сторона не передает значение для этого параметра, будет использовано значение по умолчанию.
👉 Новости 👉 База вопросов
Аргумент по умолчанию в функции С++ — это параметр, которому присваивается значение по умолчанию. Если вызывающая сторона не передает значение для этого параметра, будет использовано значение по умолчанию.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
👨💻 На заметку вам: roadmap.sh/cpp
Это интерактивная, модульная дорожная карта изучения C++: от азов до продвинутых практик, с упором на последовательность, прогресс и полезный контент
👉 Новости 👉 База вопросов
Это интерактивная, модульная дорожная карта изучения C++: от азов до продвинутых практик, с упором на последовательность, прогресс и полезный контент
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 std::to_underlying()
👉 Новости 👉 База вопросов
std::to_underlying() (C++23) безопасно преобразует значение enum class в его базовый целочисленный тип. Это полезно для сериализации, логирования и битовых операций с strongly-typed enum'ами.Please open Telegram to view this post
VIEW IN TELEGRAM
❤1💘1
#полезное
😊 Архитектура компьютера: Продвинутое проектирование процессоров
На основе базовых знаний о скалярном RISC-конвейере, эти видео последовательно развивают концепции, ведущие к технологиям, лежащим в основе современных динамических внеочередных (out-of-order) суперскалярных процессоров
Источник
👉 Новости 👉 База вопросов
На основе базовых знаний о скалярном RISC-конвейере, эти видео последовательно развивают концепции, ведущие к технологиям, лежащим в основе современных динамических внеочередных (out-of-order) суперскалярных процессоров
Источник
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#Собес #Cplus
🤔 Какой оператор нельзя перегрузить в С++?
Оператор разрешения области видимости (::) нельзя перегрузить в С++. Этот оператор используется для доступа к глобальным переменным, функциям и классам.
👉 Новости 👉 База вопросов
Оператор разрешения области видимости (::) нельзя перегрузить в С++. Этот оператор используется для доступа к глобальным переменным, функциям и классам.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😵 Понимание управления файловой системой в операционных системах, подобных Unix
Этот блог рассматривает тонкости того, как такие системы отслеживают файлы, управляют файловыми дескрипторами и реализуют механизмы, такие как каналы (pipes) для межпроцессного взаимодействия.
👉 Новости 👉 База вопросов
Этот блог рассматривает тонкости того, как такие системы отслеживают файлы, управляют файловыми дескрипторами и реализуют механизмы, такие как каналы (pipes) для межпроцессного взаимодействия.
Please open Telegram to view this post
VIEW IN TELEGRAM