Сериализация
Сериализация — это процесс преобразования данных, таких как объекты, структуры или контейнеры, в последовательность байтов, чтобы их можно было сохранить или передать через сеть, а затем восстановить обратно в исходное состояние. Это позволяет сохранять состояние программы или обмениваться данными между разными программами или системами.
Сериализация имеет большое значение, например, когда вы хотите сохранить состояние вашего приложения для долгосрочного хранения или передать данные между клиентом и сервером в распределенной системе. Она позволяет избежать необходимости ручного форматирования данных для записи и их последующего разбора.
#код
Сериализация — это процесс преобразования данных, таких как объекты, структуры или контейнеры, в последовательность байтов, чтобы их можно было сохранить или передать через сеть, а затем восстановить обратно в исходное состояние. Это позволяет сохранять состояние программы или обмениваться данными между разными программами или системами.
Сериализация имеет большое значение, например, когда вы хотите сохранить состояние вашего приложения для долгосрочного хранения или передать данные между клиентом и сервером в распределенной системе. Она позволяет избежать необходимости ручного форматирования данных для записи и их последующего разбора.
#код
Как подсчитать количество элементов в std::list?
Чтобы подсчитать количество элементов в std::list, можно использовать следующие способы:
1. Вызвать метод size() самого списка. Он вернет количество элементов.
2. Проитерировать список циклом и считать элементы.
3. Воспользоваться алгоритмом std::distance, передав ему начало и конец списка.
4. Применить алгоритм std::count_if с условием, которое всегда истинно.
#вопросы_с_собеседований
Чтобы подсчитать количество элементов в std::list, можно использовать следующие способы:
1. Вызвать метод size() самого списка. Он вернет количество элементов.
2. Проитерировать список циклом и считать элементы.
3. Воспользоваться алгоритмом std::distance, передав ему начало и конец списка.
4. Применить алгоритм std::count_if с условием, которое всегда истинно.
#вопросы_с_собеседований
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
⚒️ ТОП-27 плагинов для Visual Studio Code в 2023
Предлагаем список лучших расширений для VS Code в 2023 году: продуктивность, окрашивание сниппетов, контроль версий, форматирование, линтинг и отладка.
🔗Читать статью
🔗Зеркало
Предлагаем список лучших расширений для VS Code в 2023 году: продуктивность, окрашивание сниппетов, контроль версий, форматирование, линтинг и отладка.
🔗Читать статью
🔗Зеркало
Карл Окерблом: краткий обзор Трейси Профайлер
Карл кратко рассказывает о профилировании инструментов Tracy Profiler. Также он делится впечатлениями после внедрения его в работу; несколько приятных сюрпризов и неровностей на дороге, с которыми он столкнулся на своем пути.
Смотреть выступление
Карл кратко рассказывает о профилировании инструментов Tracy Profiler. Также он делится впечатлениями после внедрения его в работу; несколько приятных сюрпризов и неровностей на дороге, с которыми он столкнулся на своем пути.
Смотреть выступление
Что вы считаете самой большой своей неудачей за всю карьеру?
#интерактив
#интерактив
Начать курс «Алгоритмы и структуры данных» с вводной части можно уже сегодня бесплатно
Курс для разработчиков, которые хотят подготовиться к собеседованию в технологическую компанию или продвинуться по карьерной лестнице.
НАЧАТЬ С ДЕМО-ДОСТУПА
▪️ бессрочный доступ
▪️ 47 видеолекций
▪️ 150 практических заданий
▪️ бессрочная поддержка в чате студентов
▪️развернутая обратная связь по всем домашним заданиям
🔹Подробная программа – https://proglib.io/w/b26c360b
Переходите, оставляйте заявку на пробную версию и знакомьтесь с самым харизматичным спикером – Степаном Мацкевичем. Он определенно получил приз зрительских симпатий от наших студентов🥰
Курс для разработчиков, которые хотят подготовиться к собеседованию в технологическую компанию или продвинуться по карьерной лестнице.
НАЧАТЬ С ДЕМО-ДОСТУПА
▪️ бессрочный доступ
▪️ 47 видеолекций
▪️ 150 практических заданий
▪️ бессрочная поддержка в чате студентов
▪️развернутая обратная связь по всем домашним заданиям
🔹Подробная программа – https://proglib.io/w/b26c360b
Переходите, оставляйте заявку на пробную версию и знакомьтесь с самым харизматичным спикером – Степаном Мацкевичем. Он определенно получил приз зрительских симпатий от наших студентов🥰
Кортеж — tuple
Как и pair, tuple — коллекция значений различных типов данных конкретного размера.
В некоторых случаях вместо tuple удобнее использовать std::array. Это обычный массив с некоторыми функциями стандартной библиотеки C++, который был добавлен в C++11.
#код
Как и pair, tuple — коллекция значений различных типов данных конкретного размера.
В некоторых случаях вместо tuple удобнее использовать std::array. Это обычный массив с некоторыми функциями стандартной библиотеки C++, который был добавлен в C++11.
#код
Очередной #дайджест по C++:
✍️ Форматирование текста на C++ старым и новым способом
Какой из способов форматирования лучше в плане производительности?
✍️ Когда private, но очень хочется public
Если нельзя, но очень хочется, то можно.
✍️ Промышленные контроллеры, Linux и только C++. Часть 1
Об автоматизации производства.
✍️ Визуализация алгоритмов стандартной библиотеки C++
Автору пришла идея отделить визуализацию алгоритма от его исполнения, тогда можно будет визуализировать любой алгоритм.
✍️ Основы C++: Указатели и Итераторы
Статья о базовых понятиях языка.
✍️ Форматирование текста на C++ старым и новым способом
Какой из способов форматирования лучше в плане производительности?
✍️ Когда private, но очень хочется public
Если нельзя, но очень хочется, то можно.
✍️ Промышленные контроллеры, Linux и только C++. Часть 1
Об автоматизации производства.
✍️ Визуализация алгоритмов стандартной библиотеки C++
Автору пришла идея отделить визуализацию алгоритма от его исполнения, тогда можно будет визуализировать любой алгоритм.
✍️ Основы C++: Указатели и Итераторы
Статья о базовых понятиях языка.
template
Ключевое слово template используется в шаблонных функциях и классах для определения обобщённых типов данных, которые могут быть использованы при разработке универсальных алгоритмов.
В этом примере мы определяем шаблонную функцию max с типом данных T. Эта функция принимает два аргумента типа T и возвращает значение типа T, которое является максимальным. В вызове функции T будет заменено на фактический тип данных, переданный в качестве параметра шаблона.
Несмотря на то, что template используется для объявления шаблонных классов и функций, он может также применяться для реализации SFINAE.
Это означает, что при использовании шаблонов и при неудачной попытке их инстанцирования компилятор не сгенерирует ошибку, а будет искать альтернативные варианты. Использование этой концепции позволяет более гибко управлять перегрузками функций и классов, что может быть особенно полезно при написании библиотек или фреймворков.
#код
Ключевое слово template используется в шаблонных функциях и классах для определения обобщённых типов данных, которые могут быть использованы при разработке универсальных алгоритмов.
В этом примере мы определяем шаблонную функцию max с типом данных T. Эта функция принимает два аргумента типа T и возвращает значение типа T, которое является максимальным. В вызове функции T будет заменено на фактический тип данных, переданный в качестве параметра шаблона.
Несмотря на то, что template используется для объявления шаблонных классов и функций, он может также применяться для реализации SFINAE.
Это означает, что при использовании шаблонов и при неудачной попытке их инстанцирования компилятор не сгенерирует ошибку, а будет искать альтернативные варианты. Использование этой концепции позволяет более гибко управлять перегрузками функций и классов, что может быть особенно полезно при написании библиотек или фреймворков.
#код
Инструменты и библиотеки для создания собственного игрового движка на C++
Итак, вы хотите узнать больше об игровых движках и написать свой самостоятельно? Это потрясающе! Чтобы помочь вам в этом путешествии, вот несколько рекомендаций по библиотекам и зависимостям C++, которые помогут вам сразу же приступить к делу.
Читать статью
Итак, вы хотите узнать больше об игровых движках и написать свой самостоятельно? Это потрясающе! Чтобы помочь вам в этом путешествии, вот несколько рекомендаций по библиотекам и зависимостям C++, которые помогут вам сразу же приступить к делу.
Читать статью
const и volatile указатели
Const и volatile указатели используются для дополнительного контроля над данными, на которые они указывают.
— Const указатель гарантирует, что данные по этому указателю изменять нельзя.
— Volatile указатель сообщает компилятору, что значение данных может измениться в любой момент вне контроля программы.
#код
Const и volatile указатели используются для дополнительного контроля над данными, на которые они указывают.
— Const указатель гарантирует, что данные по этому указателю изменять нельзя.
— Volatile указатель сообщает компилятору, что значение данных может измениться в любой момент вне контроля программы.
#код
Что такое деструктор?
Деструктор — это экземпляр функции-члена, который вызывается автоматически, если какой-либо объект собирается быть уничтоженным. Используется в основном для освобождения памяти.
Деструкторы не принимают аргументов и не возвращают типы, и их адрес не может быть получен.
Они могут быть объявлены как виртуальные или чисто виртуальные, но не как константные, изменчивые, константные изменчивые или статические.
#вопросы_с_собеседований
Деструктор — это экземпляр функции-члена, который вызывается автоматически, если какой-либо объект собирается быть уничтоженным. Используется в основном для освобождения памяти.
Деструкторы не принимают аргументов и не возвращают типы, и их адрес не может быть получен.
Они могут быть объявлены как виртуальные или чисто виртуальные, но не как константные, изменчивые, константные изменчивые или статические.
#вопросы_с_собеседований
🔎💼🗺️ Как программисту искать (и найти) работу за границей в 2023 году
Разбираемся: где искать работу за рубежом, как и где откликаться на вакансии, плюс несколько лайфхаков по составлению резюме.
Читать статью
#поискработы
Разбираемся: где искать работу за рубежом, как и где откликаться на вакансии, плюс несколько лайфхаков по составлению резюме.
Читать статью
#поискработы
string.back
Эта функция возвращает ссылку на последний символ строки.
Она позволяет получить доступ к последнему символу строки и при необходимости изменить его.
Возвращаемое значение имеет тип символа строки, обычно char или wchar_t. Если строка пустая, то поведение функции неопределенно, поэтому нужно проверять, что строка не пуста, прежде чем вызывать back().
string.back часто используется в циклах для обработки символов строки с конца или для проверки последнего символа.
#код
Эта функция возвращает ссылку на последний символ строки.
Она позволяет получить доступ к последнему символу строки и при необходимости изменить его.
Возвращаемое значение имеет тип символа строки, обычно char или wchar_t. Если строка пустая, то поведение функции неопределенно, поэтому нужно проверять, что строка не пуста, прежде чем вызывать back().
string.back часто используется в циклах для обработки символов строки с конца или для проверки последнего символа.
#код
Pcap
Pcap — это библиотека для захвата и анализа сетевого трафика.
Она используется для:
— Сниффинга сети;
— Анализа протоколов;
— Отладки сетевых приложений.
Код из примера открывает устройство для захвата пакетов, в цикле считывает пакеты и выводит их длину.
#код
Pcap — это библиотека для захвата и анализа сетевого трафика.
Она используется для:
— Сниффинга сети;
— Анализа протоколов;
— Отладки сетевых приложений.
Код из примера открывает устройство для захвата пакетов, в цикле считывает пакеты и выводит их длину.
#код
Очередной #дайджест по С++:
✍️ Fibers в C++: основы
Fibers (волокна) менее узнаваемая концепция по сравнению с coroutines (сопрограммами), является довольно мощным дополнением к кооперативной многозадачности.
✍️ Отчет о поездке на встречу ISO C++ в Варне
Пост с впечатлениями разработчика от посещения конференции.
✍️ Godot — это не новый Unity. Анатомия вызова API Godot
Критика в статье даже заинтересовала разработчиков движка, которые позже связались с автором.
✍️ userver 1.0: выпуск платформы для программ, связанных с вводом-выводом
Прошло больше года с тех пор, как разработчики открыли исходный код userver. Они реализовали множество функций по просьбе новых пользователей.
✍️ Fibers в C++: основы
Fibers (волокна) менее узнаваемая концепция по сравнению с coroutines (сопрограммами), является довольно мощным дополнением к кооперативной многозадачности.
✍️ Отчет о поездке на встречу ISO C++ в Варне
Пост с впечатлениями разработчика от посещения конференции.
✍️ Godot — это не новый Unity. Анатомия вызова API Godot
Критика в статье даже заинтересовала разработчиков движка, которые позже связались с автором.
✍️ userver 1.0: выпуск платформы для программ, связанных с вводом-выводом
Прошло больше года с тех пор, как разработчики открыли исходный код userver. Они реализовали множество функций по просьбе новых пользователей.
На каком языке вы пишите сейчас и на какой хотели бы перейти?
#интерактив
#интерактив
Алгоритм partial_sort
partial_sort — это алгоритм сортировки из стандартной библиотеки, который упорядочивает только часть контейнера.
Сортирует элементы в диапазоне [first, middle). Элементы справа от middle остаются без изменений.
При работе с частью данных эффективнее полной сортировки. Внутри использует алгоритм quicksort.
Применение:
— Быстрый поиск K наибольших/наименьших элементов.
— Сортировка только части большого массива данных.
— Оптимизация производительности по сравнению с полной сортировкой.
#код
partial_sort — это алгоритм сортировки из стандартной библиотеки, который упорядочивает только часть контейнера.
Сортирует элементы в диапазоне [first, middle). Элементы справа от middle остаются без изменений.
При работе с частью данных эффективнее полной сортировки. Внутри использует алгоритм quicksort.
Применение:
— Быстрый поиск K наибольших/наименьших элементов.
— Сортировка только части большого массива данных.
— Оптимизация производительности по сравнению с полной сортировкой.
#код
Что такое SIMD-инструкции?
SIMD-инструкции — это специальные команды процессора, которые работают с векторными регистрами и могут выполнять одну операцию над несколькими элементами данных параллельно.
Например, при сложении двух векторов из четырех float чисел вместо четырех инструкций сложения с SIMD можно выполнить одну команду, которая сложит эти вектора за одну операцию.
Основные преимущества SIMD:
— Повышение производительности за счет параллельных вычислений.
— Эффективное использование пропускной способности процессора.
— Уменьшение количества инструкций за счет векторизации.
— Оптимизация алгоритмов обработки массивов, матриц, фильтрации, графики.
#вопросы_с_собеседований
SIMD-инструкции — это специальные команды процессора, которые работают с векторными регистрами и могут выполнять одну операцию над несколькими элементами данных параллельно.
Например, при сложении двух векторов из четырех float чисел вместо четырех инструкций сложения с SIMD можно выполнить одну команду, которая сложит эти вектора за одну операцию.
Основные преимущества SIMD:
— Повышение производительности за счет параллельных вычислений.
— Эффективное использование пропускной способности процессора.
— Уменьшение количества инструкций за счет векторизации.
— Оптимизация алгоритмов обработки массивов, матриц, фильтрации, графики.
#вопросы_с_собеседований
std::conditional_variable
std::condition_variable является частью стандартной библиотеки и позволяет потоку ожидать наступления определенного условия перед продолжением выполнения.
Основной метод std::condition_variable — это wait(), который блокирует вызывающий поток до тех пор, пока другой поток не оповестит его с помощью метода notify_one() или notify_all(). Когда вызывается wait(), текущий поток освобождает блокировку, которая должна быть захвачена вместе с вызовом wait(), и ожидает, пока другой поток не вызовет один из методов оповещения. После получения оповещения поток пробуждается и пытается повторно захватить блокировку, и если блокировка успешно захватывается, поток может продолжить свою работу.
В этом примере создается поток workerThread, который ожидает сигнала от основного потока. Основной поток засыпает на 2 секунды, а затем устанавливает флаг ready в true и оповещает ожидающий поток с помощью notify_one(). workerThread пробуждается и выводит сообщение в консоль.
#код
std::condition_variable является частью стандартной библиотеки и позволяет потоку ожидать наступления определенного условия перед продолжением выполнения.
Основной метод std::condition_variable — это wait(), который блокирует вызывающий поток до тех пор, пока другой поток не оповестит его с помощью метода notify_one() или notify_all(). Когда вызывается wait(), текущий поток освобождает блокировку, которая должна быть захвачена вместе с вызовом wait(), и ожидает, пока другой поток не вызовет один из методов оповещения. После получения оповещения поток пробуждается и пытается повторно захватить блокировку, и если блокировка успешно захватывается, поток может продолжить свою работу.
В этом примере создается поток workerThread, который ожидает сигнала от основного потока. Основной поток засыпает на 2 секунды, а затем устанавливает флаг ready в true и оповещает ожидающий поток с помощью notify_one(). workerThread пробуждается и выводит сообщение в консоль.
#код