Senior C++ Developer – Telegram
Senior C++ Developer
12.4K subscribers
1.36K photos
3 videos
612 links
Изучаем C++.

По вопросам сотрудничества: @adv_and_pr

РКН: https://www.gosuslugi.ru/snet/676e9a1e4e740947beca35ba
Download Telegram
Libevent

Libevent — это кроссплатформенная библиотека, предоставляющая API для работы с событиями в Unix-подобных операционных системах и Windows. Она позволяет разработчикам создавать асинхронные приложения, эффективно используя сетевые ресурсы.

#для_продвинутых
LibU

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

#для_продвинутых
libPhenom

libPhenom — это фреймворк событий, разработанный Facebook для создания высокопроизводительных и масштабируемых систем на C++. Он обеспечивает простой и эффективный способ публикации и подписки на события, а также маршрутизации событий между различными компонентами системы.

#для_продвинутых
STXXL

STXXL, или Standard Template Library for Extra Large Data Sets, — это библиотека шаблонов C++, предназначенная для работы с очень большими наборами данных, которые не помещаются в оперативной памяти. Она реализует контейнеры и алгоритмы, способные обрабатывать терабайты данных на диске.

#для_продвинутых
ffead-cpp

ffead-cpp — это веб-фреймворк, фреймворк приложений и набор утилит, объединенные в один пакет. Он также предоставляет встроенное ядро сервера, совместимое с HTTP/HTT2/Web-Socket.

#для_продвинутых
Cxxomfort

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

Это ценный инструмент для любого разработчика C++. Он может помочь вам повысить производительность, улучшить качество кода и упростить разработку программного обеспечения.

#для_продвинутых
Abseil

Abseil — это набор библиотек общего назначения для C++, открытый компанией Google. Он предназначен для расширения возможностей стандартной библиотеки C++ и включает в себя хорошо протестированный код, используемый во внутренних проектах Google.

Стоит отметить, что Abseil не является заменой стандартной библиотеки C++. Google скорее делится своим полезным и проверенным кодом с сообществом разработчиков.

#для_продвинутых
LevelDB

LevelDB — это высокопроизводительная библиотека C++ для хранения пар ключ-значение, разработанная Google. Она обеспечивает упорядоченное отображение строковых ключей к строковым значениям.

#для_продвинутых
CNTK

CNTK (Microsoft Cognitive Toolkit) - это набор инструментов с открытым исходным кодом для глубокого обучения, разработанный корпорацией Microsoft. Он позволяет создавать и обучать нейронные сети с помощью C++. CNTK обладает рядом преимуществ, делающих его привлекательным выбором для задач глубокого обучения.

#для_продвинутых
oneDNN

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

https://github.com/oneapi-src/oneDNN

#для_продвинутых
Kaldi

Kaldi — это бесплатная модульная библиотека с открытым исходным кодом для обработки речи, состоящая из различных компонентов, которые можно комбинировать для создания различных приложений.

#для_продвинутых
Evolving Objects

Evolving Objects (EO) — это библиотека эволюционных вычислений (ЭВ) с открытым исходным кодом, написанная на C++. Она предназначена для облегчения разработки эвристических алгоритмов для решения задач оптимизации и поиска.

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

#для_продвинутых
BTSK

BTSK (Behavior Tree Starter Kit) — это бесплатная библиотека с открытым исходным кодом, написанная на C++, которая помогает разработчикам создавать системы искусственного интеллекта (ИИ) на основе поведенческих деревьев.

Поведенческие деревья — это иерархическая структура, которая представляет собой набор действий, которые может выполнять агент ИИ. BTSK упрощает создание и управление этими деревьями, предоставляя классы и функции для создания различных типов узлов деревьев.

#для_продвинутых
❤️ Как не попасть в ловушку масштабирования при росте нагрузки в PostgreSQL?

В видеопроекте Road to Highload разработчик ядра Яндекс Диска Андрей Колнооченко рассказывает, как проектировать и развивать базы данных так, чтобы они оставались стабильными и быстрыми даже при росте QPS и объёма данных.

Разберём реальные примеры и обсудим типичные ошибки и подходы, которые помогают избежать проблем с производительностью и консистентностью. Особое внимание уделим согласованности кода и данных в БД для предотвращения проблем с race conditions, которые часто возникают при росте нагрузки.

Road to Highload — это цикл видео от Яндекс 360 о том, как строятся системы, которыми ежедневно пользуются миллионы людей и тысячи компаний. Здесь говорят о highload и отказоустойчивости не по учебникам, а на основе многолетнего опыта разработки.


Смотрите проект, чтобы узнать, как создаются одни из крупнейших облачных сервисов в России:

Сайт проекта
VK Видео
Ютуб

Реклама. ООО «Яндекс». ИНН 7736207543
Please open Telegram to view this post
VIEW IN TELEGRAM
Объясните разницу между глубоким и поверхностным копированием и приведите пример, когда каждый тип копирования может быть предпочтительнее.

Глубокое копирование создаёт новый объект, копируя все поля источника и рекурсивно создавая копии всех объектов, на которые эти поля ссылаются. Таким образом, все ссылки в копии ведут на отдельные объекты, не связанные с оригиналом. Поверхностное копирование создаёт новый объект, но копирует только значения полей на верхнем уровне. Если поля являются ссылками на другие объекты, то копия будет ссылаться на те же объекты, что и исходный.

Глубокое копирование предпочтительно, когда нужно полностью изолировать копию от оригинала, чтобы изменения в одном не влияли на другой. Поверхностное копирование эффективно, когда нужно сэкономить память или время на копирование, и если объекты, на которые есть ссылки, не изменяются или их изменения допустимы в обоих экземплярах.

#вопросы_с_собеседований
🧑🏻‍💻Асинхронность в C++ всегда была испытанием на зрелость. Потоки, мьютексы, коллбеки — и тысячи строк кода, чтобы просто дождаться результата. Но в C++20 всё изменилось: корутины убирают боль ручного управления потоками.

На открытом уроке разберём, как работает новая модель асинхронности в C++: без громоздких конструкций и перегрузок по CPU. Вы поймёте, как устроены корутины, где их применять и почему они стали стандартом в C++20 и C++23. На практике создадим корутины-генераторы и обсудим их преимущества перед классическими потоками.

Если вы уже чувствуете, что ваш C++ проект тонет в callback hell или не масштабируется под нагрузкой — этот вебинар поможет понять, как писать современный, чистый и асинхронный код.

🔥11 декабря в 20:00 МСК. Открытый урок проходит в преддверии старта курса «C++ Developer. Professional». Присоединяйтесь и узнайте, как сделать асинхронность естественной частью вашего кода: https://otus.pw/jPll/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Что такое stack overflow?

stack overflow (переполнение стека) — это программная ошибка, которая возникает, когда программа пытается использовать больше памяти на стеке, чем доступно. Стэк — это область памяти, используемая для хранения локальной информации функций, таких как параметры, локальные переменные и возвращаемые значения.

Когда функция вызывается, ее адрес возврата сохраняется на стеке. Затем, когда функция завершается, ее адрес возврата восстанавливается из стека, и управление передается следующей функции в стеке вызовов.

Когда происходит переполнение стека, программа аварийно завершается. Это может привести к потере данных или даже к повреждению системы.