Отличное понимание ролей API Gateway и Load Balancer является ключевым для проектирования масштабируемых и эффективных архитектур.
— API Gateway: Почтальон цифрового мира 📬
Работает как почтальон, направляя API-запросы к нужному сервису. А также выполняет роль охранника, управляя аутентификацией и авторизацией, переводчика, преобразуя запросы и ответы, и регулировщика движения, контролируя частоту запросов.
— Load Balancer: Регулировщик движения 🚦
Его задача — равномерно распределять трафик между серверами, предотвращая их перегрузку, улучшая надежность и обеспечивая автоматическое переключение в случае сбоя одного из серверов.
Оба компонента необходимы в современных архитектурах, но выполняют разные функции!
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет, друзья! 👋
Мы готовим статью о прокрастинации среди разработчиков и хотим узнать ваше мнение! 🤓 Поделитесь своим опытом, а самые интересные и полезные советы мы обязательно включим в нашу статью.
❓ Какая самая необычная причина прокрастинации у вас была в работе над проектом?
❓ Какой метод борьбы с прокрастинацией оказался для вас наиболее эффективным?
❓ Как вы справляетесь с когнитивной перегрузкой во время работы над сложными задачами?
Не стесняйтесь делиться своими историями и лайфхаками в комментариях! 💬 Ваш опыт может помочь другим разработчикам справиться с прокрастинацией. Спасибо за участие!
Мы готовим статью о прокрастинации среди разработчиков и хотим узнать ваше мнение! 🤓 Поделитесь своим опытом, а самые интересные и полезные советы мы обязательно включим в нашу статью.
❓ Какая самая необычная причина прокрастинации у вас была в работе над проектом?
❓ Какой метод борьбы с прокрастинацией оказался для вас наиболее эффективным?
❓ Как вы справляетесь с когнитивной перегрузкой во время работы над сложными задачами?
Не стесняйтесь делиться своими историями и лайфхаками в комментариях! 💬 Ваш опыт может помочь другим разработчикам справиться с прокрастинацией. Спасибо за участие!
В статье рассмотрен новый ивент в JDK 22, который позволяет отслеживать вызовы устаревших методов в вашем коде. Особенно полезен для обнаружения зависимостей от библиотек, которые могли быть удалены. Это помогает выявить потенциальные проблемы на раннем этапе и принять меры до того, как они приведут к сбоям в приложении.
Читать статью.
Please open Telegram to view this post
VIEW IN TELEGRAM
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉авторов в наше медиа proglib.io
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉авторов в наше медиа proglib.io
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
ad.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
JHipster — платформа для быстрой генерации веб-приложений, использующая генераторы и язык JDL, что позволяет разработчику за пару минут получить монолитное или микросервисное решение, описав архитектуру одним файлом. В докладе рассматривается качество сгенерированного JHipster проекта, где автор анализирует его структуру и выявляет возможные проблемы.
Смотреть видео.
Please open Telegram to view this post
VIEW IN TELEGRAM
Integer i1= Integer.valueOf(100); Integer i2= Integer.valueOf(100); Integer i3= Integer.valueOf(200); Integer i4= Integer.valueOf(200);
Anonymous Quiz
36%
i1 == i2 : true; i3 == i4 : true
2%
i1 == i2 : false; i3 == i4 : true
36%
i1 == i2 : true; i3 == i4 : false
26%
i1 == i2 : false; i3 == i4 : false
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Расположите в виде иерархии следующие интерфейсы: List, Set, Map, SortedSet, SortedMap, Collection, Iterable, Iterator, NavigableSet, NavigableMap
Ответ на картинке.
Ответ на картинке.
Предполагает отправку имени пользователя и пароля с каждым запросом, но может быть менее безопасной без шифрования.
Подходит для простых приложений, где безопасность и шифрование не являются приоритетом, или при использовании защищенных соединений.
Использует сгенерированные токены, такие как JSON Web Tokens (JWT), которые обмениваются между клиентом и сервером, обеспечивая повышенную безопасность без необходимости отправки учетных данных с каждым запросом.
Идеально подходит для более безопасных и масштабируемых систем.
Позволяет сторонним приложениям получать ограниченный доступ к ресурсам пользователя без раскрытия учетных данных, выдавая токены доступа после аутентификации пользователя.
Подходит для ситуаций, требующих контролируемого доступа к ресурсам пользователя сторонними приложениями или сервисами.
Назначает уникальные ключи пользователям или приложениям, которые отправляются в заголовках или параметрах; несмотря на простоту, может не обладать всеми преимуществами безопасности, как методы на основе токенов или OAuth.
Удобна для простого контроля доступа в менее чувствительных средах или для предоставления доступа к определённым функциям без необходимости предоставления разрешений, привязанных к конкретному пользователю.
Please open Telegram to view this post
VIEW IN TELEGRAM
Shallow-Copy-vs-Deep-Copy-1-2 (1).gif
2.7 MB
🔹 Поверхностное копирование:
Создается новая переменная, которая ссылается на тот же объект в памяти, что и оригинал. Это означает, что любые изменения в копии будут отражаться и на исходном объекте.
Используется:
▪️ Когда объект содержит только примитивные типы данных.
▪️ Когда две ссылки на один объект запланированы или допустимы.
🔹 Глубокое копирование:
Создается полностью независимый дубликат объекта, включая все вложенные структуры. Это гарантирует, что изменения в копии никак не повлияют на оригинальный объект.
Используется:
▪️ Когда объекты содержат вложенные объекты или массивы.
▪️ Когда вам нужна полная независимость между копиями.
Please open Telegram to view this post
VIEW IN TELEGRAM
🐘🧠 Оптимизация использования памяти в PostgreSQL: секреты профессионалов
Сложные (и многочисленные) операции в базе данных требуют солидного объема оперативной памяти — например, для создания набора результатов PostgreSQL обычно приходится:
🔹 Выполнить поиск по индексу.
🔹 Извлечь связанные строки из одной или нескольких таблиц.
🔹 Объединить, отфильтровать, агрегировать и отсортировать кортежи в пригодный для использования результат.
Каждый из этих шагов требует памяти, и PostgreSQL может обрабатывать тысячи таких запросов одновременно. Так что рано или поздно перед разработчиками любого серьезного проекта встает необходимость решения нескольких сложных вопросов:
🔹 Как грамотно оптимизировать использование доступной памяти?
🔹 В каком соотношении распределить ОЗУ между несколькими типами памяти, которые необходимы PostgreSQL для эффективной работы?
🔹 Как предотвратить защитное завершение операционной системой процесса PostgreSQL, который использует слишком много памяти?
Для ответов на все эти вопросы нужно определить, сколько именно памяти использует PostgreSQL для основных процессов — а это сама по себе нетривиальная задача. Советы по настройке памяти так многочисленны и разнообразны, что в них сложно сориентироваться.
Поэтому в этой статье мы сведем всю мудрость экспертов к конкретным шагам, которые помогут максимально эффективно распорядиться доступной памятью.
🔗 Читать статью
🔗 Зеркало
Сложные (и многочисленные) операции в базе данных требуют солидного объема оперативной памяти — например, для создания набора результатов PostgreSQL обычно приходится:
🔹 Выполнить поиск по индексу.
🔹 Извлечь связанные строки из одной или нескольких таблиц.
🔹 Объединить, отфильтровать, агрегировать и отсортировать кортежи в пригодный для использования результат.
Каждый из этих шагов требует памяти, и PostgreSQL может обрабатывать тысячи таких запросов одновременно. Так что рано или поздно перед разработчиками любого серьезного проекта встает необходимость решения нескольких сложных вопросов:
🔹 Как грамотно оптимизировать использование доступной памяти?
🔹 В каком соотношении распределить ОЗУ между несколькими типами памяти, которые необходимы PostgreSQL для эффективной работы?
🔹 Как предотвратить защитное завершение операционной системой процесса PostgreSQL, который использует слишком много памяти?
Для ответов на все эти вопросы нужно определить, сколько именно памяти использует PostgreSQL для основных процессов — а это сама по себе нетривиальная задача. Советы по настройке памяти так многочисленны и разнообразны, что в них сложно сориентироваться.
Поэтому в этой статье мы сведем всю мудрость экспертов к конкретным шагам, которые помогут максимально эффективно распорядиться доступной памятью.
🔗 Читать статью
🔗 Зеркало
Свежий #дайджест по Java
👩💻 Запускаем таски по расписанию — статья рассказывает о том, как команда Яндекс Телемоста решила проблему с запуском тасков с высокой частотой, обеспечивая отказоустойчивость и эффективность системы.
👩💻 Почему стоит перейти с JUnit4 на JUnit5 — статья на Хабре раскрывает, почему команда разработчиков из Сбера решила перейти с JUnit4 на JUnit5, детализируя ключевые улучшения, такие как модульная архитектура и новые аннотации, которые значительно упрощают и ускоряют процесс тестирования.
👩💻 Простые коммуникации в Java-приложении — статья описывает, как разработать простую систему коммуникации в Java-приложении, используя платформу Jmix, чтобы упростить взаимодействие между пользователями, включая создание интерактивных веб-приложений без глубокого знания фронтенда.
👩💻 Создание микросервисов на Java с Dropwizard — статья объясняет, как создавать микросервисы на Java с помощью фреймворка Dropwizard, включая настройку, реализацию CRUD-операций и тестирование.
Please open Telegram to view this post
VIEW IN TELEGRAM
1715316072490 (1).gif
260.5 KB
🔹 Атомарность (Atomicity)
Гарантирует, что транзакция не будет зафиксирована частично. Все записи в транзакции выполняются одновременно и не могут быть разбиты на меньшие части. Если при выполнении транзакции возникают ошибки, все записи откатываются.
🔹 Согласованность (Consistency)
Любые данные, записанные в ходе транзакции, должны быть валидны в соответствии со всеми определёнными правилами и поддерживать базу данных в корректном состоянии.
🔹 Изоляция (Isolation)
Параллельные транзакции не должны оказывать влияния друг на друга. Изолированность сложно достижима, поэтому существуют различные уровни изоляции.
🔹 Надежность (Durability)
Данные сохраняются после завершения транзакции, даже в случае сбоя системы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по Java | тесты, код, задания
Что выведет код сверху?
Ответ:Not equal. Переменная real не равна самой себе. Арифметика с плавающей запятой реализована в соответствии со стандартом IEEE 754, который требует возвращения специального значения «NaN» (от английского «Not a Number» — не число), когда ноль делится на ноль. В спецификации также указано, что NaN не равно никакому значению с плавающей запятой, включая само себя.
Ответ:
Please open Telegram to view this post
VIEW IN TELEGRAM
Что делает аннотация @Transactional в Spring?
Anonymous Quiz
17%
Определяет транзакцию на уровне базы данных для всех методов
8%
Создает транзакцию на уровне пользовательского интерфейса
72%
Управляет транзакциями на уровне метода или класса
4%
Управляет сессией пользователя
#дайджест перед выходными
👩💻 Spring Boot 3.3: повышение производительности, безопасности и observability — Статья рассказывает о новых возможностях Spring Boot 3.3, включая улучшения производительности, безопасности и наблюдаемости. Обновление включает поддержку Class Data Sharing для быстрого запуска приложений, улучшенные настройки безопасности с JWT, поддержку Docker Compose и многое другое.
👩💻 Не используйте Lombok с JPA, пока не прочтете эту статью — Статья объясняет, почему использование библиотеки Lombok вместе с JPA может привести к различным проблемам, таким как некорректное сравнение сущностей, снижение производительности и даже ошибки выполнения. Автор делится конкретными примерами и рекомендациями, как правильно использовать Lombok с JPA, чтобы избежать этих проблем.
👩💻 Настройка почтового сервера Yandex spring boot — Статья подробно рассказывает, как настроить отправку электронной почты через Yandex с использованием Spring Boot. Автор описывает весь процесс — от создания пароля приложения до реализации класса для отправки писем.
👩💻 И опыт, сын ошибок трудных: обрабатываем ошибки в Spring Boot — Статья рассматривает способы обработки ошибок в Spring Boot, делая акцент на создании информативных ответов для пользовательских интерфейсов и интеграций. Автор делится своим опытом, подробно описывая различные подходы и инструменты, такие как исключения, аннотации и аспекты.
Please open Telegram to view this post
VIEW IN TELEGRAM