C/C++ Development | YeaHub – Telegram
C/C++ Development | YeaHub
828 subscribers
228 photos
56 videos
1 file
379 links
Теория, подготовка к интервью и курсы для C/C++ разработчиков

YeaHub — это платформа для IT-специалистов, объединяющая обучение, карьерный рост, развитие и сообщество единомышленников.

Платформа: https://yeahub.ru

Для связи: @ruslan_kuyanets
Download Telegram
#полезное
👍 Нашёл тут курс по Game Engine

🟠Game Engine hardCORE серии. Promo
🟠Сборка C++ проектов. Препроцессинг.
🟠Сборка C++ проектов. Компиляция. Ассемблер. Теория.
🟠Сборка C++ проектов. Оптимизации компилятора. Inline, constexpr, alignment.
🟠Сборка C++ проектов. Linker. Forward declaration.
🟠Сборка C++ проектов. Static/dynamic libraries. PCH. Unity (JUMBO) build.
Источник

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 Примитивная модель процессора для программиста.

Так я представляю себе архитектуру процессора при написании кода на C или Assembly.

В подавляющем большинстве случаев эта модель оказывается достаточной и практичной.

🟠Процессор состоит из АЛУ (арифметико-логического устройства), блока управления и файла регистров. Это базовые компоненты, обеспечивающие выполнение команд.

🟠Я опираюсь на модель Load/Store, согласно которой все операции с памятью происходят через регистры: данные сначала загружаются в регистровый файл, затем модифицируются и только после этого записываются обратно в память.

🟠Взаимодействие CPU с памятью и периферийными устройствами осуществляется через адресную и шину данных. Доступ к данным или управлению периферией возможен посредством обращения к соответствующим адресам.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес
🤔 Что такое перегрузка операторов в C++?

Перегрузка операторов в С++ позволяет операторам, таким как +, -, *, работать с пользовательскими типами данных. Это делает код более выразительным и позволяет применять стандартные операторы к объектам классов.

👉Новости 👉Платформа
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😎 Reverse Engineering x86 & C

Если всегда хотел понять, как работает код под капотом, разбирать бинарники и дизассемблировать программы — это идеальный старт!

Что внутри:
🟠Как компилятор превращает C-код в ассемблер
🟠Основы x86: регистры, инструкции, стек, вызовы функций
🟠Разбор бинарников, дизассемблирование, отладка в GDB

Статья разжёвывает сложные вещи простым языком, так что даже новичкам будет понятно!

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😊 Ripes — визуальный эмулятор процессора

Если хочешь разобраться, как работает процессор на низком уровне, загляни на Ripes

Это интерактивный эмулятор, который наглядно показывает выполнение инструкций, работу конвейера и кэша.

Можно шаг за шагом отслеживать, как команды проходят через стадии выборки, декодирования, исполнения, доступа к памяти и записи результатов.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯 std::experimental
::sample


std::experimental::sample (C++17) позволяет случайным образом выбрать элементы из контейнера без необходимости перемешивания всей последовательности. Это удобно для случайной выборки данных в эффективном режиме.
Документация

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес
🤔 Что такое шаблон в С++?

Шаблон в С++ позволяет создавать обобщённые функции и классы, которые могут работать с различными типами данных. Шаблоны делают код более универсальным и повторно используемым.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
😇 Работать с файлами в C — это основа, без которой не обойтись, если хочешь сохранять данные.

Работа с файлами в C позволяет создавать, открывать, читать, записывать и закрывать файлы с помощью таких функций, как fopen(), fclose(), fread(), fwrite() и fprintf().

Тут всё просто:

fopen() — открытие файла в нужном режиме

fwrite() / fprintf() — запись данных

fread() / fscanf() — чтение данных

fclose() — закрытие файла

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
😊 8 алгоритмов балансировки нагрузки, которые стоит знать

1⃣Round Robin – запросы распределяются равномерно между серверами по очереди.

2⃣Least Connections – запрос направляется на сервер с наименьшим числом активных соединений.

3⃣Weighted Round Robin – серверам присваиваются веса, и запросы распределяются с учетом этих весов.

4⃣Weighted Least Connections – учитывается как число соединений, так и вес сервера.

5⃣IP Hash - запрос направляется на сервер в зависимости от хэша IP-адреса клиента.

6⃣Least Response Time – запрос идет на сервер с наименьшим временем ответа.

7⃣Random – сервер выбирается случайным образом.

8⃣Least Bandwidth – запрос идет на сервер с наименьшей текущей загрузкой сети.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#полезное
🤓 Самый быстрый способ обнулить память

Перестаньте использовать циклы для очистки массивов — memset гораздо быстрее!

🟠Использует низкоуровневые инструкции процессора для массовых операций

🟠Оптимизируется компиляторами с помощью SIMD и векторизации

🟠Уменьшает накладные расходы циклов, улучшая производительность

Идеально для инициализации массивов, очистки буферов и оптимизации критически важного кода!

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес
🤔 Что такое тип возвращаемого значения функции В С++?

Тип возвращаемого значения функции в С++ указывается перед её именем и определяет, какой тип данных функция будет возвращать. Это может быть любой тип данных, включая встроенные (например, int, float ) и пользовательские типы (например, классы).

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 В языке C вы можете присваивать значение от void* к любому другому указателю, но не в C++.

Иногда я хочу, чтобы мой код на C компилировался в компиляторе C++, и для этого использую этот макрос, чтобы код работал и там, и там, даже если тип указателя анонимный. В языке C он ничего не делает.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
#полезное
🤯 std::destroy_at()

std::destroy_at() (C++17) вручную вызывает деструктор объекта без освобождения памяти. Это полезно при использовании нестандартных аллокаторов или ручном управлении памятью.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#полезное
👍 GLIM — это гибкая и расширяемая платформа для 3D картографирования на основе дальномерных данных!

Она обеспечивает высокую точность за счет минимизации ошибок при регистрации нескольких сканов с использованием факторных графов, что позволяет сохранять согласованность результатов картографирования. Поддерживается ускорение с помощью GPU для максимизации скорости и качества построения карт.
Гитхаб

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#Собес
🤔 Как передаются аргументы функции в С++?

В С++ аргументы могут быть переданы в функцию по значению или по ссылке. При передаче по значению создаются копии значений, и изменения внутри функции не затрагивают оригинальные данные. При передаче по ссылке передается адрес памяти аргумента, что позволяет функции изменять оригинальные значения.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
Media is too big
VIEW IN TELEGRAM
#полезное
😊 Проект — написание брандмауэра для Linux на C с нуля

В этом проекте по кибербезопасности вы изучите множество сетевых технологий, узнаете, как работает интернет-трафик, и научитесь использовать это в своем коде на C. Также вы освоите такие вещи, как сырые сокеты, режим прослушивания (promiscuous mode), netlink и UNIX-доменные сокеты.
📱 Источник

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
#полезное
😐 Утечки памяти и отладка с помощью Valgrind

Valgrind – это инструмент для отладки и профилирования, который помогает находить:

🟠Утечки памяти

🟠Неправильное использование выделенной памяти. Например, выход за границы массива

🟠Использование неинициализированных переменных

valgrind --leak-check=full ./my_program


После запуска Valgrind выведет отчёт, в котором укажет, где программа выделила, но не освободила память

Пример утечки и исправления


Утечка:
int *arr = malloc(10 * sizeof(int));


Освобождение памяти
int *arr = malloc(10 * sizeof(int)); 
free(arr);


👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
2
#полезное
😐 Книга "Practical Binary Analysis" от Денниса Андрисека — для тех, кто хочет залезть под капот бинарников и разобраться, как реально работает анализ исполняемых файлов на практике.

Это гайд по реверс-инжинирингу, анализу уязвимостей, и low-level хакингу, но через практику. С фокусом на бинарники, дизассемблирование, символьное исполнение, и даже немного эксплойтов. Всё с реальными примерами и кодом.
Ознакомиться

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #mongoDB
🤔 Что такое коллекция в MongoDB?

Коллекция в MongoDB - это группа документов, связанных между собой по смыслу. В отличие от таблиц в реляционных базах данных, коллекции не имеют жесткой схемы, что позволяет хранить документы с разной структурой в одной коллекции.

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM
1
#полезное
🥺 Взаимодействие между процессами (IPC) в C

IPC позволяет процессам обмениваться данными и взаимодействовать с помощью таких методов, как каналы, очереди сообщений, общая память и сокеты, обеспечивая эффективное взаимодействие.

Механизм межпроцессного взаимодействия (IPC) — это способ, с помощью которого процессы могут обмениваться информацией и координировать свои действия. Это важно в многозадачных системах, где процессы должны работать вместе или делить ресурсы.

Основные методы IPC в C:

🟠Pipe — односторонняя передача данных между родственными процессами

🟠Message Queue - обмен структурированными сообщениями с управлением через очередь

🟠Shared Memory - самый быстрый способ — процессы используют общий участок памяти

🟠Socket - связь между процессами как на одной машине, так и по сети

👉Новости 👉База вопросов
Please open Telegram to view this post
VIEW IN TELEGRAM