Что вы считаете самой большой своей неудачей за всю карьеру?
#интерактив
#интерактив
Начать курс «Алгоритмы и структуры данных» с вводной части можно уже сегодня бесплатно
Курс для разработчиков, которые хотят подготовиться к собеседованию в технологическую компанию или продвинуться по карьерной лестнице.
НАЧАТЬ С ДЕМО-ДОСТУПА
▪️ бессрочный доступ
▪️ 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 пробуждается и выводит сообщение в консоль.
#код
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
📊 Как я входил в IT? Результаты опроса «Библиотеки программиста»
Вы когда-нибудь задумывались о том, как входят в IT люди, у которых нет технического образования? Насколько тяжело начать карьеру с чистого листа в зрелом возрасте? Вот и мы решили выяснить это.
Читать статью
Вы когда-нибудь задумывались о том, как входят в IT люди, у которых нет технического образования? Насколько тяжело начать карьеру с чистого листа в зрелом возрасте? Вот и мы решили выяснить это.
Читать статью
Что лучше: ООП или функциональный подход?
#интерактив
#интерактив
static_assert
static_assert — это механизм в C++, который позволяет выполнять проверки на этапе компиляции для статических условий. Он был добавлен в стандарт C++11 и предоставляет способ проверки, что определенное условие истинно во время компиляции. Если условие ложно, компиляция завершится ошибкой.
#код
static_assert — это механизм в C++, который позволяет выполнять проверки на этапе компиляции для статических условий. Он был добавлен в стандарт C++11 и предоставляет способ проверки, что определенное условие истинно во время компиляции. Если условие ложно, компиляция завершится ошибкой.
#код
Очередной #дайджест по C++:
✍️ Визуализация алгоритмов стандартной библиотеки C++ (продолжение)
В стандартной библиотеке C++ много разных алгоритмов для работы с контейнерами. С помощью этих алгоритмов можно искать значения, сортировать последовательности, изменять их и делать многое другое.
✍️ Шпаргалка по модели памяти С++11
Модель памяти представляет из себя спецификацию допустимого поведения многопоточных программ, работающих с разделяемой памятью (shared memory).
✍️ Как мы анализируем потребление памяти нативными приложениями (C++, Windows, Linux)
В процессе эксплуатации решений, созданных на платформе 1С:Предприятие, разработчики иногда сталкивались с тем, что в определенных сценариях потребление памяти процессами платформы казалось избыточным.
✍️ Блеск и нищета std::format
Сравнительно недавно в stdlib плюсов появилось форматирование строк «как в питоне», а точнее, как в библиотеке fmt.
✍️ Визуализация алгоритмов стандартной библиотеки C++ (продолжение)
В стандартной библиотеке C++ много разных алгоритмов для работы с контейнерами. С помощью этих алгоритмов можно искать значения, сортировать последовательности, изменять их и делать многое другое.
✍️ Шпаргалка по модели памяти С++11
Модель памяти представляет из себя спецификацию допустимого поведения многопоточных программ, работающих с разделяемой памятью (shared memory).
✍️ Как мы анализируем потребление памяти нативными приложениями (C++, Windows, Linux)
В процессе эксплуатации решений, созданных на платформе 1С:Предприятие, разработчики иногда сталкивались с тем, что в определенных сценариях потребление памяти процессами платформы казалось избыточным.
✍️ Блеск и нищета std::format
Сравнительно недавно в stdlib плюсов появилось форматирование строк «как в питоне», а точнее, как в библиотеке fmt.