Два дня назад в облачных сервисах Google произошел крупный глобальный сбой. Как сообщили в компании, причиной сбоя стал нулевой указатель - отсутствовала обработка на нулевой указатель, который допускался данным кодом. ПРичем ошибка произошла в новом коде, развертывание которого началось 29 мая 2025 года 🤔
https://status.cloud.google.com/incidents/ow5i3PPK96RduMcb1SsW
https://status.cloud.google.com/incidents/ow5i3PPK96RduMcb1SsW
👏23😁13😢4🤣3🔥2
В руководство по языку Go добавлена серия статей про Пакеты и модули
https://metanit.com/go/tutorial/5.1.php
#go #golang
https://metanit.com/go/tutorial/5.1.php
#go #golang
❤15🔥3❤🔥2
Управление памятью Java: Сборка мусора
𝟏) Что такое сборка мусора
Сборка мусора (GC) — это автоматизированный процессдля освобождения памяти путем удаления объектов, которые больше не нужны или на которые не ссылается приложение. Это помогает предотвратить утечки памяти и обеспечивает эффективную работу приложения.
𝟐) Как она работает?
В основе сборки мусора в Java лежит алгоритм Mark and Sweep (отметить и убрать):
🔹𝗠𝗮𝗿𝗸: GC начинает с корневых ссылок (таких как статические переменные, активные потоки и стеки методов) и помечает все достижимые объекты как «используемые».
🔹𝗦𝘄𝗲𝗲𝗽: Затем GC сканирует кучу на предмет объектов, не помеченных как «используемые», и освобождает их память, делая ее доступной для новых выделений.
𝟑) Когда выполняется сборка мусора?
Сборщик мусора может быть запущен автоматически JVM в следующих случаях:
🔹 Куча заполнена или близка к заполнению.
🔹 Куча старого поколения достигает порога.
🔹 Область памяти PermGen/Metaspace заполнена (в зависимости от версии Java).
🔹 Вручную вызван метод System.gc()
𝟒) Сборка мусора для поколений
Современные JVM делят кучу на поколения (молодые, старые и иногда ряд других). Большинство объектов умирают молодыми, поэтому GC фокусируется на молодом поколении для частой и быстрой очистки, в то время как старые объекты собираются реже, но более тщательно.
𝟓) Оптимизация
После очистки некоторые сборщики уплотняют память, перемещая активные объекты вместе, что снижает фрагментацию и ускоряет выделение памяти для новых объектов.
𝟔) Почему это важно?
Автоматическая сборка мусора освобождает разработчиков от ручного управления памятью (в отличие от C/C++), уменьшая количество ошибок, таких как утечки памяти и висячие указатели, и позволяя вам сосредоточиться на создании функций, а не на отслеживании памяти.
#java
𝟏) Что такое сборка мусора
Сборка мусора (GC) — это автоматизированный процессдля освобождения памяти путем удаления объектов, которые больше не нужны или на которые не ссылается приложение. Это помогает предотвратить утечки памяти и обеспечивает эффективную работу приложения.
𝟐) Как она работает?
В основе сборки мусора в Java лежит алгоритм Mark and Sweep (отметить и убрать):
🔹𝗠𝗮𝗿𝗸: GC начинает с корневых ссылок (таких как статические переменные, активные потоки и стеки методов) и помечает все достижимые объекты как «используемые».
🔹𝗦𝘄𝗲𝗲𝗽: Затем GC сканирует кучу на предмет объектов, не помеченных как «используемые», и освобождает их память, делая ее доступной для новых выделений.
𝟑) Когда выполняется сборка мусора?
Сборщик мусора может быть запущен автоматически JVM в следующих случаях:
🔹 Куча заполнена или близка к заполнению.
🔹 Куча старого поколения достигает порога.
🔹 Область памяти PermGen/Metaspace заполнена (в зависимости от версии Java).
🔹 Вручную вызван метод System.gc()
𝟒) Сборка мусора для поколений
Современные JVM делят кучу на поколения (молодые, старые и иногда ряд других). Большинство объектов умирают молодыми, поэтому GC фокусируется на молодом поколении для частой и быстрой очистки, в то время как старые объекты собираются реже, но более тщательно.
𝟓) Оптимизация
После очистки некоторые сборщики уплотняют память, перемещая активные объекты вместе, что снижает фрагментацию и ускоряет выделение памяти для новых объектов.
𝟔) Почему это важно?
Автоматическая сборка мусора освобождает разработчиков от ручного управления памятью (в отличие от C/C++), уменьшая количество ошибок, таких как утечки памяти и висячие указатели, и позволяя вам сосредоточиться на создании функций, а не на отслеживании памяти.
#java
👍16🔥5❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Сравнение дизайна Liquid Glass («Жидкое стекло») на разных версиях iOS
😐27🤷♂13🤮7🤩6🔥4👍2
B+ trees (Деревья B+) и их применение в базах данных
Деревья B+ являются наиболее широко используемой структурой данных для индексирования в современных реляционных системах баз данных. Они специально разработаны для эффективного хранения и извлечения больших объемов данных на диске, обеспечивая высокую производительность поиска, вставки, удаления и запросов диапазона.
Основные реляционные базы данных, такие как MySQL (InnoDB), PostgreSQL, SQL Server и Oracle, используют деревья B+ для первичных и вторичных индексов, что делает их незаменимыми для масштабируемых, высокопроизводительных систем баз данных.
КЛЮЧЕВЫЕ ХАРАКТЕРИСТИКИ
- Все данные в листовых узлах
В B+ дереве все фактические данные записей (или указатели на полные записи) хранятся исключительно в листовых узлах. Внутренние узлы хранят только ключи и указатели на дочерние узлы, облегчая навигацию.
- Сбалансированная, многоуровневая структура
B+ деревья всегда сбалансированы по высоте. Все листовые узлы находятся на одной глубине, обеспечивая сложность O(log n) для операций поиска, вставки и удаления, независимо от размера базы данных.
- Эффективные запросы диапазона и упорядоченные запросы
Листовые узлы связаны вместе в двунаправленном списке, что позволяет быстро выполнять последовательный доступ для запросов диапазона, таких как BETWEEN, ORDER BY и сканирование индексов.
- Высокая степень заполнения
Каждый узел может содержать много ключей (высокая степень заполнения), что минимизирует высоту дерева и уменьшает дисковый ввод-вывод за счет максимизации данных на чтение.
- Оптимизация диска
B+ деревья разработаны для соответствия размерам блоков диска, что уменьшает количество обращений к диску, необходимых для операций.
ПОЧЕМУ B+ ДЕРЕВЬЯ ПРЕДПОЧИТАЮТСЯ В БАЗАХ ДАННЫХ?
- Сбалансированная структура обеспечивает последовательный доступ.
- Высокая степень заполнения соответствует размерам страниц диска, уменьшая ввод-вывод.
- Связанные листья делают сканирование диапазона быстрым.
- Узлы могут быть разделены/объединены с минимальным блокированием, поддерживая высококонкурентные среды.
ИСПОЛЬЗОВАНИЕ В ОСНОВНЫХ СИСТЕМАХ БАЗ ДАННЫХ
- MySQL (InnoDB)
Кластерный индекс (первичный ключ): хранит всю строку данных в B+ дереве.
Вторичные индексы: B+ деревья содержат индексированные столбцы и указатели на первичный ключ.
- PostgreSQL
Тип индекса по умолчанию (btree) для большинства столбцов.
Используется для уникальных и неуникальных индексов.
Поддерживает эффективные запросы на равенство и диапазон.
- СУБД Oracle
B+ деревья используются для стандартных индексов (одиночные, составные, основанные на функциях).
Организованные таблицы индексов (IOT) хранят все данные в листовых блоках B+ дерева.
Листовые блоки связаны для сканирования диапазона.
#database
Деревья B+ являются наиболее широко используемой структурой данных для индексирования в современных реляционных системах баз данных. Они специально разработаны для эффективного хранения и извлечения больших объемов данных на диске, обеспечивая высокую производительность поиска, вставки, удаления и запросов диапазона.
Основные реляционные базы данных, такие как MySQL (InnoDB), PostgreSQL, SQL Server и Oracle, используют деревья B+ для первичных и вторичных индексов, что делает их незаменимыми для масштабируемых, высокопроизводительных систем баз данных.
КЛЮЧЕВЫЕ ХАРАКТЕРИСТИКИ
- Все данные в листовых узлах
В B+ дереве все фактические данные записей (или указатели на полные записи) хранятся исключительно в листовых узлах. Внутренние узлы хранят только ключи и указатели на дочерние узлы, облегчая навигацию.
- Сбалансированная, многоуровневая структура
B+ деревья всегда сбалансированы по высоте. Все листовые узлы находятся на одной глубине, обеспечивая сложность O(log n) для операций поиска, вставки и удаления, независимо от размера базы данных.
- Эффективные запросы диапазона и упорядоченные запросы
Листовые узлы связаны вместе в двунаправленном списке, что позволяет быстро выполнять последовательный доступ для запросов диапазона, таких как BETWEEN, ORDER BY и сканирование индексов.
- Высокая степень заполнения
Каждый узел может содержать много ключей (высокая степень заполнения), что минимизирует высоту дерева и уменьшает дисковый ввод-вывод за счет максимизации данных на чтение.
- Оптимизация диска
B+ деревья разработаны для соответствия размерам блоков диска, что уменьшает количество обращений к диску, необходимых для операций.
ПОЧЕМУ B+ ДЕРЕВЬЯ ПРЕДПОЧИТАЮТСЯ В БАЗАХ ДАННЫХ?
- Сбалансированная структура обеспечивает последовательный доступ.
- Высокая степень заполнения соответствует размерам страниц диска, уменьшая ввод-вывод.
- Связанные листья делают сканирование диапазона быстрым.
- Узлы могут быть разделены/объединены с минимальным блокированием, поддерживая высококонкурентные среды.
ИСПОЛЬЗОВАНИЕ В ОСНОВНЫХ СИСТЕМАХ БАЗ ДАННЫХ
- MySQL (InnoDB)
Кластерный индекс (первичный ключ): хранит всю строку данных в B+ дереве.
Вторичные индексы: B+ деревья содержат индексированные столбцы и указатели на первичный ключ.
- PostgreSQL
Тип индекса по умолчанию (btree) для большинства столбцов.
Используется для уникальных и неуникальных индексов.
Поддерживает эффективные запросы на равенство и диапазон.
- СУБД Oracle
B+ деревья используются для стандартных индексов (одиночные, составные, основанные на функциях).
Организованные таблицы индексов (IOT) хранят все данные в листовых блоках B+ дерева.
Листовые блоки связаны для сканирования диапазона.
#database
🔥9👍3👏1🏆1
Запуск ChatGPT загрязнил мир навсегда, как и первые испытания атомного оружия
Запуск ChatGPT от OpenAI 30 ноября 2022 года изменил мир подобно взрыву первой атомной бомбы. Стремительный рост ChatGPT и целая плеяда последовавших генеративных моделей конкурентов уже загрязнили интернет таким количеством ненужного хлама, что это уже тормозит развитие ИИ.
Генеративные модели уже создали большое количество контента — достаточное, чтобы другие ИИ обучались именно на их творениях. В результате это напоминает игру в «испорченный телефон», в которой все игроки стремительно «глупеют». В индустрии такой сценарий развития называют «коллапсом модели».
Проявляется и другой эффект: данные из той версии интернета, которая предшествовала активному росту ChatGPT и других ИИ, стали представлять чрезвычайную ценность.
Сотрудник Центра изучения экзистенциального риска при Кембриджском университете Морис Чиодо заявил, что использование данных, произведенных до 2022 года, позволяет быть уверенным в минимальном наличии «загрязнения» от ИИ. А более поздние данные нельзя назвать «безопасными, хорошими и чистыми»
https://www.theregister.com/2025/06/15/ai_model_collapse_pollution/
Запуск ChatGPT от OpenAI 30 ноября 2022 года изменил мир подобно взрыву первой атомной бомбы. Стремительный рост ChatGPT и целая плеяда последовавших генеративных моделей конкурентов уже загрязнили интернет таким количеством ненужного хлама, что это уже тормозит развитие ИИ.
Генеративные модели уже создали большое количество контента — достаточное, чтобы другие ИИ обучались именно на их творениях. В результате это напоминает игру в «испорченный телефон», в которой все игроки стремительно «глупеют». В индустрии такой сценарий развития называют «коллапсом модели».
Проявляется и другой эффект: данные из той версии интернета, которая предшествовала активному росту ChatGPT и других ИИ, стали представлять чрезвычайную ценность.
Сотрудник Центра изучения экзистенциального риска при Кембриджском университете Морис Чиодо заявил, что использование данных, произведенных до 2022 года, позволяет быть уверенным в минимальном наличии «загрязнения» от ИИ. А более поздние данные нельзя назвать «безопасными, хорошими и чистыми»
https://www.theregister.com/2025/06/15/ai_model_collapse_pollution/
The Register
The launch of ChatGPT polluted the world forever, like the first atomic weapons tests
Feature: Academics mull the need for the digital equivalent of low-background steel
👍28😱15🤣8❤4🔥3🤡3😨3🤬1🕊1💯1🗿1
Глава Amazon предупредил сотрудников о сокращениях из-за ИИ
Из-за внедрения искусственного интеллекта в бизнес-процессы Amazon «понадобится меньше людей для выполнения некоторых видов задач», предупредил Энди Джасси. С 2022 года компания уволила 27 тыс. сотрудников
Генеральный директор Amazon Энди Джасси в служебной записке для сотрудников предупредил о сокращении штата в ближайшие несколько лет из-за планов активнее задействовать искусственный интеллект и выполнении различных задач.
Внедрение генеративного ИИ должно «изменить способ выполнения работы» в компании, заявил Джасси. «Нам понадобится меньше людей для выполнения некоторых видов задач, и больше для других», — написал глава Amazon, добавив, что прогнозировать результаты в долгосрочной перспективе сложно.
Джасси также призвал сотрудников «интересоваться ИИ» и тем, как его использовать. «Те, кто примет эти изменения, освоит ИИ, поможет нам совершенствовать наши возможности, <...> смогут помочь нам преобразовать компанию», — написал он.
https://www.rbc.ru/business/18/06/2025/6852179c9a7947a95cf80522
Из-за внедрения искусственного интеллекта в бизнес-процессы Amazon «понадобится меньше людей для выполнения некоторых видов задач», предупредил Энди Джасси. С 2022 года компания уволила 27 тыс. сотрудников
Генеральный директор Amazon Энди Джасси в служебной записке для сотрудников предупредил о сокращении штата в ближайшие несколько лет из-за планов активнее задействовать искусственный интеллект и выполнении различных задач.
Внедрение генеративного ИИ должно «изменить способ выполнения работы» в компании, заявил Джасси. «Нам понадобится меньше людей для выполнения некоторых видов задач, и больше для других», — написал глава Amazon, добавив, что прогнозировать результаты в долгосрочной перспективе сложно.
Джасси также призвал сотрудников «интересоваться ИИ» и тем, как его использовать. «Те, кто примет эти изменения, освоит ИИ, поможет нам совершенствовать наши возможности, <...> смогут помочь нам преобразовать компанию», — написал он.
https://www.rbc.ru/business/18/06/2025/6852179c9a7947a95cf80522
РБК
Глава Amazon предупредил сотрудников о сокращениях из-за ИИ
Из-за внедрения искусственного интеллекта в бизнес-процессы Amazon «понадобится меньше людей для выполнения некоторых видов задач», предупредил Энди Джасси. С 2022 года компания уволила 27 тыс
👎13🤮6🤷6🤯2❤1👍1🏆1
Аутентификация на основе сессий и JWT (описание к предыдущему посту)
Большинство веб-приложений выбирают один из двух путей входа: сессии (при которых состояние хранится на сервере) или JWT (при которых состояние передается вместе с клиентом).
1. Аутентификация на основе сессий
При входе пользователя бэкенд создает случайный идентификатор сессии, сохраняет его в кэше или базе данных и устанавливает этот идентификатор в виде HTTP-only куки-файла в браузере. Каждый раз при отправке запроса браузер передает куки, сервер проверяет запись сессии и восстанавливает контекст пользователя. Это позволяет хранить конфиденциальные данные на стороне сервера и мгновенно завершать сеанс путем удаления записи.
Почему стоит выбрать сессии:
✅ Мгновенное аннулирование ("выйти везде") — достаточно удалить строку из Redis или SQL.
✅ Никакие секретные ключи никогда не покидают бэкэнд, снижая риск случайного раскрытия.
✅ Подходит для небольших и средних систем, где общий кэш не является узким местом.
Однако будьте осторожны: горизонтальное масштабирование зачастую требует либо прикрепленных сессий, либо реплицированного кеша, что может привести к увеличению задержки и усложнению операций.
2. Аутентификация на основе JWT
После успешного входа сервер подписывает JSON Web Token, содержащий заголовок (alg, typ), полезную нагрузку (например, поля вроде sub или role) и подпись. Токен кодируется в Base64, но не шифруется, позволяя любому прочитать содержимое полезной нагрузки, однако подделать токен может лишь тот, кто владеет секретным ключом. Сервер не хранит никакого состояния, любой узел сети способен проверить подпись и доверять заявленным данным.
Почему стоит рассмотреть использование JWT:
⚡️ Бессессионность: каждый микросервис или пограничный узел может локально проверять токены, исключая необходимость общего хранилища.
⚡️ Отлично подходит для SPA-приложений и мобильных приложений, непосредственно обращающихся к нескольким бекенд-сервисам.
⚡️ Легковесность: легко помещается в заголовок Authorization или куки.
Обратите внимание, что однажды выданный JWT остается действительным вплоть до истечения срока его действия; отозвать его без дополнительной инфраструктуры невозможно, что делает блокировку аккаунта или экстренный выход сложными задачами.
Таким образом, если вам важнее всего возможность отзывания доступа, придерживайтесь серверных сессий.
Если вам нужно масштабирование приложения без сохранения состояния, то подписанные JWT — это то, что вам нужно, но при проектировании учитывайте тот факт, что вы не сможете отозвать их обратно, как только они появятся в открытом доступе.
Большинство веб-приложений выбирают один из двух путей входа: сессии (при которых состояние хранится на сервере) или JWT (при которых состояние передается вместе с клиентом).
1. Аутентификация на основе сессий
При входе пользователя бэкенд создает случайный идентификатор сессии, сохраняет его в кэше или базе данных и устанавливает этот идентификатор в виде HTTP-only куки-файла в браузере. Каждый раз при отправке запроса браузер передает куки, сервер проверяет запись сессии и восстанавливает контекст пользователя. Это позволяет хранить конфиденциальные данные на стороне сервера и мгновенно завершать сеанс путем удаления записи.
Почему стоит выбрать сессии:
✅ Мгновенное аннулирование ("выйти везде") — достаточно удалить строку из Redis или SQL.
✅ Никакие секретные ключи никогда не покидают бэкэнд, снижая риск случайного раскрытия.
✅ Подходит для небольших и средних систем, где общий кэш не является узким местом.
Однако будьте осторожны: горизонтальное масштабирование зачастую требует либо прикрепленных сессий, либо реплицированного кеша, что может привести к увеличению задержки и усложнению операций.
2. Аутентификация на основе JWT
После успешного входа сервер подписывает JSON Web Token, содержащий заголовок (alg, typ), полезную нагрузку (например, поля вроде sub или role) и подпись. Токен кодируется в Base64, но не шифруется, позволяя любому прочитать содержимое полезной нагрузки, однако подделать токен может лишь тот, кто владеет секретным ключом. Сервер не хранит никакого состояния, любой узел сети способен проверить подпись и доверять заявленным данным.
Почему стоит рассмотреть использование JWT:
⚡️ Бессессионность: каждый микросервис или пограничный узел может локально проверять токены, исключая необходимость общего хранилища.
⚡️ Отлично подходит для SPA-приложений и мобильных приложений, непосредственно обращающихся к нескольким бекенд-сервисам.
⚡️ Легковесность: легко помещается в заголовок Authorization или куки.
Обратите внимание, что однажды выданный JWT остается действительным вплоть до истечения срока его действия; отозвать его без дополнительной инфраструктуры невозможно, что делает блокировку аккаунта или экстренный выход сложными задачами.
Таким образом, если вам важнее всего возможность отзывания доступа, придерживайтесь серверных сессий.
Если вам нужно масштабирование приложения без сохранения состояния, то подписанные JWT — это то, что вам нужно, но при проектировании учитывайте тот факт, что вы не сможете отозвать их обратно, как только они появятся в открытом доступе.
❤12👍10🔥1
В руководство по языку Go добавлены новые статьи
Строки и руны
https://metanit.com/go/tutorial/4.6.php
Пакет string. Операции со строками
https://metanit.com/go/tutorial/4.7.php
#go #golang
Строки и руны
https://metanit.com/go/tutorial/4.6.php
Пакет string. Операции со строками
https://metanit.com/go/tutorial/4.7.php
#go #golang
👍14❤6🔥3🎉1
Краткий совет по Linux:
Используйте команду "tree" для отображения структуры каталога и его содержимого в визуальной иерархии.
$ tree -L 2 /etc
Здесь выводится список файлов и каталогов внутри /etc на два уровня в глубину.
Отлично подходит для быстрого изучения макетов конфигураций.
#linux #shell
Используйте команду "tree" для отображения структуры каталога и его содержимого в визуальной иерархии.
$ tree -L 2 /etc
Здесь выводится список файлов и каталогов внутри /etc на два уровня в глубину.
Отлично подходит для быстрого изучения макетов конфигураций.
#linux #shell
❤19👍6🏆2🔥1
Что такое архитектура, управляемая событиями (𝗘𝘃𝗲𝗻𝘁-𝗗𝗿𝗶𝘃𝗲𝗻 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲)?
Архитектура, управляемая событиями — это шаблон проектирования программного обеспечения, работающий в режиме реального времени. Поток программы определяется событиями, такими как действия пользователей, выход датчиков или сообщения от других программ или сервисов.
В такой архитектуре события запускают выполнение конкретных процессов или функций, обеспечивая немедленную реакцию системы. Обычно эта архитектура реализуется с использованием микросервисов.
Примеры событий включают нажатие кнопки пользователем, размещение нового заказа или загрузку файла.
Эта архитектура имеет три ключевых компонента:
1. Производители событий: Эти компоненты или сервисы генерируют события, когда происходят значимые изменения.
2. Подписчики событий: Это компоненты или сервисы, которые слушают конкретные события и реагируют на них соответствующим образом.
3. Канал передачи событий (шины сообщений): Этот компонент передает события от производителей к подписчикам. Примерами популярных решений являются очереди сообщений (например, RabbitMQ) и платформы потоковой обработки (например, Apache Kafka).
Процесс работает следующим образом: производитель событий обнаруживает значительное изменение и создает сообщение события. Сообщение отправляется в канал событий, который доставляет его заинтересованным потребителям событий. Потребители обрабатывают событие и выполняют необходимые действия.
Преимущества данной архитектуры следующие:
1. Масштабируемость. Компоненты могут масштабироваться независимо друг от друга для обработки различных нагрузок.
2. Гибкость. Компоненты менее зависимы друг от друга, что делает систему более гибкой и адаптивной к изменениям.
3. Реакция в реальном времени. Приложения могут реагировать на события практически мгновенно.
4. Устойчивость. Выход из строя одного компонента не влияет на другие.
Однако существуют также некоторые недостатки, такие как увеличение сложности дизайна и проблемы с отладкой, а также необходимость обеспечить согласованность в обработке событий правильно.
Некоторые сценарии использования включают:
✅ Обработка потоков данных: Управление данными от множества сенсоров.
✅ Биг-дата и аналитика: Одно из сильных качеств — возможность немедленно обрабатывать и анализировать данные сразу же после их появления.
✅ Микросервисная архитектура: Хорошо дополняет концепцию микросервисов, позволяя сервисам общаться асинхронно и оставаться слабо связанными между собой.
Архитектура, управляемая событиями — это шаблон проектирования программного обеспечения, работающий в режиме реального времени. Поток программы определяется событиями, такими как действия пользователей, выход датчиков или сообщения от других программ или сервисов.
В такой архитектуре события запускают выполнение конкретных процессов или функций, обеспечивая немедленную реакцию системы. Обычно эта архитектура реализуется с использованием микросервисов.
Примеры событий включают нажатие кнопки пользователем, размещение нового заказа или загрузку файла.
Эта архитектура имеет три ключевых компонента:
1. Производители событий: Эти компоненты или сервисы генерируют события, когда происходят значимые изменения.
2. Подписчики событий: Это компоненты или сервисы, которые слушают конкретные события и реагируют на них соответствующим образом.
3. Канал передачи событий (шины сообщений): Этот компонент передает события от производителей к подписчикам. Примерами популярных решений являются очереди сообщений (например, RabbitMQ) и платформы потоковой обработки (например, Apache Kafka).
Процесс работает следующим образом: производитель событий обнаруживает значительное изменение и создает сообщение события. Сообщение отправляется в канал событий, который доставляет его заинтересованным потребителям событий. Потребители обрабатывают событие и выполняют необходимые действия.
Преимущества данной архитектуры следующие:
1. Масштабируемость. Компоненты могут масштабироваться независимо друг от друга для обработки различных нагрузок.
2. Гибкость. Компоненты менее зависимы друг от друга, что делает систему более гибкой и адаптивной к изменениям.
3. Реакция в реальном времени. Приложения могут реагировать на события практически мгновенно.
4. Устойчивость. Выход из строя одного компонента не влияет на другие.
Однако существуют также некоторые недостатки, такие как увеличение сложности дизайна и проблемы с отладкой, а также необходимость обеспечить согласованность в обработке событий правильно.
Некоторые сценарии использования включают:
✅ Обработка потоков данных: Управление данными от множества сенсоров.
✅ Биг-дата и аналитика: Одно из сильных качеств — возможность немедленно обрабатывать и анализировать данные сразу же после их появления.
✅ Микросервисная архитектура: Хорошо дополняет концепцию микросервисов, позволяя сервисам общаться асинхронно и оставаться слабо связанными между собой.
🔥9👍3🥰1
Вышла новая версия среды разработки Qt Creator - Qt Creator 17, которая применяется для создания кроссплатформенных приложений с помощью библиотеки Qt.
Этот релиз включает ряд значительных улучшений и новых возможностей, направленных на повышение удобства и эффективности работы разработчиков.
Ключевые нововведения:
Обновленные темы: Теперь стандартные светлая и тёмная темы стали дефолтными. Пользователи могут выбрать другие темы вручную через настройки.
Расширенная поддержка расширений: Возможность устанавливать расширения прямо из архива и изменение регистра расширений на GitHub.
Проектирование проектов: Настройки запуска теперь связаны с конфигурациями сборки проекта, позволяя быстро переключаться между разными режимами компиляции (например, отладки и релиза).
Поддержка CMake: Улучшена интеграция с системой сборки CMake, автоматически устанавливаются недостающие компоненты библиотеки Qt.
Python-разработка: Добавлена поддержка открытия проектов на основе формата pyproject.toml, что упрощает работу с проектами на Python.
Редакторы C++ и QML: Улучшены инструменты автоподстановки и исправления ошибок, оптимизированы механизмы быстрого редактирования и добавления зависимостей.
Анализатор: Для анализа кода инструмент Axivion получил поддержку локальных сборочных панелей и новые возможности настроек.
Версионный контроль: Добавлены дополнительные опции работы с изменениями файлов, такие как быстрые команды для работы с Git.
https://www.qt.io/blog/qt-creator-17-released
Qt Creator доступен бесплатно с оф сайта Qt https://www.qt.io/offline-installers
#qt
Этот релиз включает ряд значительных улучшений и новых возможностей, направленных на повышение удобства и эффективности работы разработчиков.
Ключевые нововведения:
Обновленные темы: Теперь стандартные светлая и тёмная темы стали дефолтными. Пользователи могут выбрать другие темы вручную через настройки.
Расширенная поддержка расширений: Возможность устанавливать расширения прямо из архива и изменение регистра расширений на GitHub.
Проектирование проектов: Настройки запуска теперь связаны с конфигурациями сборки проекта, позволяя быстро переключаться между разными режимами компиляции (например, отладки и релиза).
Поддержка CMake: Улучшена интеграция с системой сборки CMake, автоматически устанавливаются недостающие компоненты библиотеки Qt.
Python-разработка: Добавлена поддержка открытия проектов на основе формата pyproject.toml, что упрощает работу с проектами на Python.
Редакторы C++ и QML: Улучшены инструменты автоподстановки и исправления ошибок, оптимизированы механизмы быстрого редактирования и добавления зависимостей.
Анализатор: Для анализа кода инструмент Axivion получил поддержку локальных сборочных панелей и новые возможности настроек.
Версионный контроль: Добавлены дополнительные опции работы с изменениями файлов, такие как быстрые команды для работы с Git.
https://www.qt.io/blog/qt-creator-17-released
Qt Creator доступен бесплатно с оф сайта Qt https://www.qt.io/offline-installers
#qt
www.qt.io
Qt Creator 17 released
See what's new in Qt Creator 17! Explore default themes, integrated run configurations, improvements on CMake, Python support, C++ and QML editing, etc.
🔥10❤🔥4❤2