Шпаргалка по аннотациям Spring Core
Таблица с основными аннотациями Spring, их описаниями и примерами использования. Аннотации включают
Они используются для управления бинами, зависимостями и конфигурацией в Spring-приложениях.
👉 Java Portal
Таблица с основными аннотациями Spring, их описаниями и примерами использования. Аннотации включают
@Component, @Service, @Repository, @Controller, @RestController, @Autowired, @Qualifier и @Value
. Они используются для управления бинами, зависимостями и конфигурацией в Spring-приложениях.
Please open Telegram to view this post
VIEW IN TELEGRAM
Как установить базовый URL для REST API в приложении Spring Boot.
Базовый URL — это постоянная часть адреса вашего REST API или веб-сайта, например,
⏩ Читать подробнее
👉 Java Portal | #cтатья
Базовый URL — это постоянная часть адреса вашего REST API или веб-сайта, например,
"http://twitter.com"
для Twitter. Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Перемещайтесь по коду быстрее с помощью ярлыков навигации по методам в IntelliJIDEA:
⌃⇧↓ | Alt+Down
⌃⇧↑ | Alt+Up
Особенно касается больших и сложных файлов Java!
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Дженерики в Java. Проще чем кажется.
Видео объясняет концепцию дженериков в Java, начиная с их создания, а не использования, чтобы упростить понимание для начинающих. Автор показывает, как параметризованные типы позволяют работать с разными объектами, демонстрирует примеры с числами, строками и пользовательским классом Car, объясняя, почему важно переопределять метод toString для корректного вывода.
📲 Cмотреть источник: тут
👉 Java Portal | #видео
Видео объясняет концепцию дженериков в Java, начиная с их создания, а не использования, чтобы упростить понимание для начинающих. Автор показывает, как параметризованные типы позволяют работать с разными объектами, демонстрирует примеры с числами, строками и пользовательским классом Car, объясняя, почему важно переопределять метод toString для корректного вывода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Чтобы получить все дни месяца, можно начать с объекта
YearMonth
, взять его первый день, а затем использовать функцию datesUntil()
, которая возвращает поток (Stream) всех дней до указанной даты.Please open Telegram to view this post
VIEW IN TELEGRAM
10 книг для собеседования по системному проектированию, которые необходимо прочитать в 2025 году"
⏩ Читать подробнее
👉 Java Portal | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
Keycloak – мощная система управления доступом
Если вам нужно добавить аутентификацию и авторизацию в приложение — Keycloak вам в помощь. Это open-source решение для управления идентификацией, поддерживающее SSO, OAuth2, OpenID Connect, SAML и многое другое.
☑ Единый вход (SSO) между разными сервисами
☑ Поддержка внешних Identity-провайдеров (Google, GitHub, LDAP)
☑ Гибкая настройка ролей и прав доступа
☑ Механизмы MFA (многофакторная аутентификация)
☑ Интеграция с REST API и микросервисами
Использовали Keycloak?🤔
👉 Java Portal
Если вам нужно добавить аутентификацию и авторизацию в приложение — Keycloak вам в помощь. Это open-source решение для управления идентификацией, поддерживающее SSO, OAuth2, OpenID Connect, SAML и многое другое.
Использовали Keycloak?
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Пойми как устроены примитивы в Java
Видео — детальный разбор примитивных типов данных в Java: их размер, диапазон, литералы, а также отличие от классов-оберток (Wrapper Classes, BigInteger, BigDecimal). Рассматривается двоичное представление чисел, переполнение, работа с отрицательными и дробными числами.
📲 Cмотреть источник: тут
👉 Java Portal | #видео
Видео — детальный разбор примитивных типов данных в Java: их размер, диапазон, литералы, а также отличие от классов-оберток (Wrapper Classes, BigInteger, BigDecimal). Рассматривается двоичное представление чисел, переполнение, работа с отрицательными и дробными числами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Эта таблица содержит временные и пространственные сложности различных алгоритмов сортировки, поиска, работы с графами и строками.
Измеряется в O-нотации (Big-O), которая показывает, как время выполнения или использование памяти алгоритма зависит от размера входных данных n.
⏩ Временная сложность (Best, Average, Worst Case) — сколько операций потребуется.
⏩ Пространственная сложность (Space Complexity) — сколько дополнительной памяти нужно.
O(1) — постоянное время/память.
O(n) — линейная зависимость от количества данных.
O(log n) — логарифмическая зависимость (уменьшение размерности).
O(n²) — квадратичная зависимость (вложенные циклы).
Чем меньше сложность, тем эффективнее алгоритм👍
👉 Java Portal
Измеряется в O-нотации (Big-O), которая показывает, как время выполнения или использование памяти алгоритма зависит от размера входных данных n.
O(1) — постоянное время/память.
O(n) — линейная зависимость от количества данных.
O(log n) — логарифмическая зависимость (уменьшение размерности).
O(n²) — квадратичная зависимость (вложенные циклы).
Чем меньше сложность, тем эффективнее алгоритм
Please open Telegram to view this post
VIEW IN TELEGRAM
Основные концепции в Kafka которые нужно знать:
🟡 Топики (Topics): Kafka организует сообщения в топики, которые выступают в роли категорий сообщений.
🟡 Разделы (Partitions): Каждый топик разделяется на несколько разделов, что позволяет обрабатывать данные параллельно.
🟡 Продюсеры (Producers): Отправляют сообщения в топики Kafka.
🟡 Потребители (Consumers): Читают сообщения из топиков, обычно в составе групп потребителей для параллельной обработки.
🟡 Брокеры (Brokers): Сервера Kafka, которые хранят и передают сообщения.
🟡 Zookeeper: Управляет метаданными и выбором лидера для разделов.
👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Свободный и мощный PDF-движок
Если вам нужен Java-инструмент для работы с PDF без привязки к проприетарным библиотекам, OpenPDF – отличный выбор.
Это форк iText 4, который предлагает все ключевые функции для создания, редактирования и подписи PDF-документов. Полностью open-source и распространяется под LGPL/MPL лицензиями.
⏩ Генерация и модификация PDF
⏩ Шифрование и цифровые подписи
⏩ Поддержка форм и аннотаций
⏩ Совместимость с Java-приложениями
Используете OpenPDF?🤔
👉 Java Portal
Если вам нужен Java-инструмент для работы с PDF без привязки к проприетарным библиотекам, OpenPDF – отличный выбор.
Это форк iText 4, который предлагает все ключевые функции для создания, редактирования и подписи PDF-документов. Полностью open-source и распространяется под LGPL/MPL лицензиями.
Используете OpenPDF?
Please open Telegram to view this post
VIEW IN TELEGRAM
Java: Почему индустрия возвращается к JDBC вместо JPA?
Этот сдвиг набирает популярность в различных отраслях, особенно в высокопроизводительных приложениях.
Для ресурсоемких приложений вручную написанные SQL-запросы часто работают быстрее, чем сгенерированные JPA, обеспечивая лучшую эффективность и удобство сопровождения.
Означает ли это, что JPA мертв?🩸
Не обязательно. JPA по-прежнему полезен для приложений, где:
🟡 Быстрое развитие важнее, чем точная оптимизация производительности.
🟡 Доменная модель тесно соответствует реляционной структуре данных.
🟡 Взаимодействие с базой данных сосредоточено на CRUD-операциях с минимальным количеством сложных запросов.
Однако в приложениях, требующих высокой пропускной способности, сложного SQL и оптимального использования ресурсов, JDBC становится предпочтительным выбором.
👉 Java Portal
Этот сдвиг набирает популярность в различных отраслях, особенно в высокопроизводительных приложениях.
Для ресурсоемких приложений вручную написанные SQL-запросы часто работают быстрее, чем сгенерированные JPA, обеспечивая лучшую эффективность и удобство сопровождения.
Означает ли это, что JPA мертв?
Не обязательно. JPA по-прежнему полезен для приложений, где:
Однако в приложениях, требующих высокой пропускной способности, сложного SQL и оптимального использования ресурсов, JDBC становится предпочтительным выбором.
Please open Telegram to view this post
VIEW IN TELEGRAM
Java Optional - orElse(), orElseGet() и orElseThrow()
Если вы используете Optional.isPresent(), а затем Optional.get(), то вы используете его неправильно.😕
Вместо этого рекомендуется использовать цепочку Optional (Optional Chaining) с методами:
⏩
⏩
⏩
Использование Optional в функциональном стиле делает код более читаемым, лаконичным и менее подверженным ошибкам.
👉 Java Portal
Если вы используете Optional.isPresent(), а затем Optional.get(), то вы используете его неправильно.
Вместо этого рекомендуется использовать цепочку Optional (Optional Chaining) с методами:
orElse(value)
– если значение присутствует, оно возвращается, иначе возвращается указанное значение.orElseGet(Supplier)
– если значение присутствует, оно возвращается, иначе вызывается переданный метод (лямбда-функция).orElseThrow(Supplier<Exception>)
– если значение отсутствует, выбрасывается исключение.Использование Optional в функциональном стиле делает код более читаемым, лаконичным и менее подверженным ошибкам.
Please open Telegram to view this post
VIEW IN TELEGRAM
50 бесплатных вопросов для подготовки к сертификации Spring Professional Certification
⏩ Читать подробнее
👉 Java Portal | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
Семантика доставки в Kafka
⏩ At-Least-Once («Как минимум один раз») – гарантирует доставку, но возможны дубликаты.
⏩ At-Most-Once («Не более одного раза») – сообщения не дублируются, но возможны потери.
⏩ Exactly-Once («Ровно один раз») – гарантирует, что каждое сообщение будет обработано ровно один раз, без потерь и дубликатов.
👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Создание простого HTTP-сервера в Java
🟡 Настройка и обзор проекта.
🟡 Управление конфигурацией.
🟡 Использование серверных сокетов.
🟡 Обработка нескольких подключений с помощью потоков.
🟡 Разбор HTTP-запросов.
и тд.
Это пошаговое руководство, которое поможет разобраться в основах создания веб-сервера с нуля на Java.
📲 Cмотреть источник: тут
👉 Java Portal | #видео
и тд.
Это пошаговое руководство, которое поможет разобраться в основах создания веб-сервера с нуля на Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое Внедрение Зависимостей (Dependency Injection)?
Внедрение зависимостей — это шаблон проектирования, при котором объекты получают свои зависимости из внешнего источника, а не создают их внутри себя.
Преимущества внедрения зависимостей👇
- Слабая связность: Компоненты взаимодействуют через определённые интерфейсы, что повышает гибкость.
- Упрощённое тестирование: Легче проводить модульное тестирование с использованием мок-объектов.
- Повторное использование кода: Способствует модульному дизайну, улучшая переиспользование кода.
- Простая конфигурация: Автоконфигурация Spring Boot минимизирует необходимость ручного связывания зависимостей.
- Лучшая поддерживаемость: Изменения в одном компоненте не оказывают прямого влияния на другие.
👉 Java Portal
Внедрение зависимостей — это шаблон проектирования, при котором объекты получают свои зависимости из внешнего источника, а не создают их внутри себя.
Преимущества внедрения зависимостей
- Слабая связность: Компоненты взаимодействуют через определённые интерфейсы, что повышает гибкость.
- Упрощённое тестирование: Легче проводить модульное тестирование с использованием мок-объектов.
- Повторное использование кода: Способствует модульному дизайну, улучшая переиспользование кода.
- Простая конфигурация: Автоконфигурация Spring Boot минимизирует необходимость ручного связывания зависимостей.
- Лучшая поддерживаемость: Изменения в одном компоненте не оказывают прямого влияния на другие.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Разница между Interceptor и Filter в Spring Boot
Что такое Filter? Filter — это часть Servlet API, работающая на низком уровне, обрабатывающая все входящие запросы до того, как они достигнут диспетчера Spring.
Когда использовать Filter?
🟡 Логирование
🟡 Сжатие GZIP
🟡 Проверки безопасности: реализация брандмауэров, ограничение скорости, контроль доступа
🟡 Модификация запросов/ответов: изменение HTTP-данных (например, упаковка, очистка, кэширование)
Что такое Interceptor? Interceptor — это часть Spring MVC, работающая внутри фреймворка Spring. Он позволяет модифицировать запросы и ответы, особенно для контроллеров.
Когда использовать Interceptor?
🟡 Проверка учетных данных и прав доступа для контроллеров
🟡 Логирование времени выполнения
🟡 Изменение модели или представления перед отправкой ответа клиенту
👉 Java Portal
Что такое Filter? Filter — это часть Servlet API, работающая на низком уровне, обрабатывающая все входящие запросы до того, как они достигнут диспетчера Spring.
Когда использовать Filter?
Что такое Interceptor? Interceptor — это часть Spring MVC, работающая внутри фреймворка Spring. Он позволяет модифицировать запросы и ответы, особенно для контроллеров.
Когда использовать Interceptor?
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Интеграция потоков данных для микросервисов с Kafka и Kafka Connect
Автор делится опытом выбора Kafka для реального времени получения информации о стоках товаров через API, а также описывает процесс интеграции реляционных баз данных, выбор и настройку коннекторов Kafka, использование базы данных Tarantool для хранения данных и выбор инструментов для мониторинга, таких как Dynatrace, Prometheus и Burrow. В результате была создана система, обрабатывающая данные за 5-10 секунд.
📲 Cмотреть источник: тут
👉 Java Portal | #видео
Автор делится опытом выбора Kafka для реального времени получения информации о стоках товаров через API, а также описывает процесс интеграции реляционных баз данных, выбор и настройку коннекторов Kafka, использование базы данных Tarantool для хранения данных и выбор инструментов для мониторинга, таких как Dynatrace, Prometheus и Burrow. В результате была создана система, обрабатывающая данные за 5-10 секунд.
Please open Telegram to view this post
VIEW IN TELEGRAM