Java Portal | Программирование
11.9K subscribers
939 photos
68 videos
32 files
748 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
加入频道
This media is not supported in your browser
VIEW IN TELEGRAM
Недавно наткнулся на плагин, который сразу заставил IntelliJ IDEA смотреться как миллион баксов — Atom Material Icons. 💵

Если ты тоже хочешь, чтобы интерфейс был не только удобным, но и приятнее — пользуйся

Навигация по проекту становится в 10 раз быстрее — всё благодаря иконкам

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔16👍84🔥1👀1
Media is too big
VIEW IN TELEGRAM
Опа, а вот и ещё одна годная штука

DZone Java — это такой хаб для джавистов, где собираются статьи, гайды, туториалы, обзоры и инсайды из мира Java. Причём не абы какие, а от разработчиков, архитекторов и просто задр... знатоков своего дела 😎

Можно подписаться на темы, собирать коллекции, шарить статьи в команду и не выпадать из инфополя

Лайк — если давно знаешь

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍4😁3🔥2
Общие вопросы для собеседования на Java Spring Boot с ответами

1. Каково назначение аннотации @EnableAutoConfiguration?

@EnableAutoConfiguration включает механизм автоконфигурации Spring Boot,
который автоматически настраивает Spring-приложение на основе зависимостей, присутствующих в classpath.

2. Каково назначение аннотации @SpringBootTest?

@SpringBootTest используется для интеграционного тестирования, загружая полный контекст приложения
и позволяя тестировать приложение целиком.

3. Как развернуть Spring Boot-приложение?

Вы можете развернуть Spring Boot-приложение как автономный JAR, WAR или используя платформы оркестрации контейнеров,
такие как Kubernetes и Docker.

4. Каково назначение аннотации @ConfigurationProperties?

@ConfigurationProperties используется для привязки внешних конфигурационных свойств к Java-объектам,
что позволяет использовать типобезопасную конфигурацию.

5. Как вы обрабатываете логирование в Spring Boot?

Spring Boot использует SLF4J как фасад логирования и поддерживает различные фреймворки логирования, такие как Logback, Log4j2 и Java Util Logging. Вы можете настроить логирование в application.properties

6. Каково назначение аннотации @Conditional ?

@Conditional используется для условного включения или отключения бинов на основе определённых условий,
таких как наличие класса или свойства.

7. Как создать RESTful веб-сервис с использованием Spring Boot?

Вы можете создать RESTful веб-сервис, определив класс с аннотацией @RestController, отображая HTTP-запросы на методы обработчиков с использованием аннотаций @RequestMapping или других аннотаций сопоставления запросов.

8. Каково назначение аннотации @Value?

@Value используется для внедрения значений из файлов свойств, переменных среды или других
источников в Spring-бины.

9. Как настроить пользовательский баннер в Spring Boot?

Вы можете настроить пользовательский баннер, разместив файл banner.txt в каталоге src/main/resources,
или установив свойство spring.banner.location

10. Каково назначение аннотации @Profile?

@Profile используется для условного включения или отключения бинов на основе активных профилей,
позволяя использовать специфичные для среды конфигурации.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥32
Что такое циклическая зависимость и как её следует решать?

Когда beanA зависит от beanB, а beanB зависит от beanA, возникает циклическая зависимость. В этом случае оба бина пытаются внедрить друг друга через конструктор, и Spring выбрасывает исключение BeanCurrentlyInCreationException

Циклическая зависимость может возникать и между более чем двумя бинами, например: 👇

beanA => beanB => beanC => beanD => beanA

Spring создаёт бины в том порядке, в котором они требуются. Если бин имеет зависимость, то сначала создаётся зависимость, а затем она внедряется для завершения создания бина.

В случае циклической зависимости Spring не может определить, какой бин создать первым.

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

Таким образом, можно избежать проблемы циклической зависимости. ☺️

При использовании конструкторной инъекции можно применить аннотацию @Lazy. Это сообщает Spring, что при инициализации бина нужно внедрить прокси. Сам бин будет полностью создан только тогда, когда он действительно понадобится.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥21
Пирамида тестирования Java

1. Unit-тесты (JUnit, Mockito) — проверяют отдельные методы и классы.

Самые быстрые
Легко писать
Ловят баги на старте

Пиши как можно больше

2. Integration-тесты (Testcontainers) — тестируют взаимодействие между модулями (например, сервис <-> база).

Работают с реальными зависимостями
Помогают избежать сюрпризов на проде

3. API-тесты (Postman, RestAssured) — проверяют REST-эндпоинты.

Тесты бизнес-логики
Можно автоматизировать или делать вручную

5. UI-тесты (Selenium) — имитируют действия пользователя.

⚠️ Медленные
⚠️ Ломаются чаще

Используй по минимуму, только для самых важных сценариев

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103🔥2
Средства мониторинга производительности JVM

1. jconsole — простенький GUI, показывает метрики памяти, CPU, потоки, MBeans. Быстро подключиться и посмотреть.

2. jvisualvm — визуальный профайлер. Анализ CPU, heap, GC, лики, дампы. Идеален для локальной отладки.

3. Java Mission Control + JFR — мощный инструмент с минимальной нагрузкой. Можно писать flight recording даже в проде без ощутимых тормозов.

4. jstack — thread dump, ищем deadlock’и и зависания. Один из самых надёжных способов понять, на чём подвисли потоки

5. jmap — снимает heap dump, показывает гистограмму объектов. Полезно при утечках памяти.

6. jstat — real-time метрики по GC, perm/metaspace, загрузке классов. Можно воткнуть в watch и следить.

7. jcmd — самый универсальный. Делает всё: heap dump, thread dump, управление JFR, GC, diagnostics.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍155🔥2
Графовые алгоритмы — шпаргалка для Java Developer

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

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥21🌭1
5 лучших задач на бинарные деревья для практики:

1. Обход в постфиксе (PostOrder) – https://bit.ly/3SdwWUd
2. Обход в префиксе (PreOrder) – https://bit.ly/3SbR4WL
3. Обход в инфиксе (InOrder) – https://bit.ly/3xUEsMf
4. Вывод всех листьев (Print leaf) – https://bit.ly/3BnrJCE
5. Уровень с максимальной суммой (Max sum level) – https://bit.ly/3qNv8FS

Отличная тренировка для собесов и укрепления понимания структур данных! 🚘

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3🌚1
Что такое монолитная архитектура?

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

- Единый разворачиваемый модуль (обычно WAR или JAR файл)
- Общая память, база данных и кодовая база
- Проще в разработке и тестировании на ранних этапах
- Со временем может стать сложной и жёстко связанной

Плюсы
- Удобна для небольших команд
- Меньше накладных расходов при разработке и деплое
- Прямая и понятная отладка

Минусы
- Сложнее масштабировать отдельные компоненты
- Длительное время развёртывания (для крупных проектов)
- Трудно управлять при работе больших команд

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2😁1🤣1🏆1
Особенности и ограничения Java Records

Особенности Java Records:

Снижение шаблонного кода — Нет необходимости вручную писать конструкторы,
геттеры, equals(), hashCode() и toString()

Неизменяемы по умолчанию — все поля являются final

Эффективны по памяти — JVM оптимизирует выделение памяти.

Без дополнительных зависимостей — являются частью Java с версии 14

Инкапсуляция — данные хорошо структурированы и неизменяемы.

Ограничения Java Records:

Нет сеттеров — поля final и не могут быть изменены

Нельзя расширять классы — Records неявно являются final и не могут наследоваться от других классов.

Ограниченная настройка — не поддерживают аннотации вроде @JsonIgnore для полей

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥2
💡 Подсказка: при использовании проекций на основе интерфейсов (interface-based projections) вы можете получить доступ к вложенным объектам, указав путь (path) в названии геттера. Посмотрите, как метод getDepartmentDeptName() получает deptName из связанной сущности Department

👉 Java Portal | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4
Понятие ошибки и исключения в Java

Error в Java — это серьёзная проблема, с которой программа не должна пытаться справляться. Обычно Error выбрасывается виртуальной машиной Java (JVM) и сигнализирует о неполадках, находящихся вне контроля программы, например, утечка памяти или переполнение стека

Exception в Java — это ситуация, которую программа может предусмотреть и обработать. Это ошибки, от которых можно восстановиться во время выполнения, используя конструкции обработки исключений, такие как try-catch

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍5🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Сортировка пузырьком

Один из самых простых алгоритмов сортировки

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍132🔥2💊1
Миграция от монолита к микросервисам в Spring Boot Java

Определите границы контекста —> используйте Domain-Driven Design (DDD) для логического разделения модулей

Модульность внутри приложения —> применяйте модули и пакеты Spring для изоляции сервисов

Вынос в микросервисы —> начинайте перенос модулей (например, пользователь, заказы) в отдельные сервисы

Внедрение API Gateway и сервис-дискавери —> используйте Spring Cloud Gateway и Eureka/Nacos

Безопасность взаимодействия —> добавьте уровни безопасности OAuth2/JWT

CI/CD пайплайн —> автоматизируйте сборку, тестирование и деплой с помощью Jenkins/GitHub Actions

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3🔥3
Уровни доступа при наследовании

Подкласс:

private —> Не видно в подклассе

default —> Видно, если в одном пакете

protected —> Видно в подклассе

public —> Видно в подклассе

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍136🔥2
Нужен быстрый генератор OTP в Java?

Вот сниппет, который создаёт случайный 4-значный код с помощью Random и String.format()

Идеально подойдёт для логина, регистрации или проверки пользователя

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5🔥1💊1
Мягкое завершение работы Spring Boot приложения

1. Прекратить приём новых запросов

—> Приложение прекращает принимать новые входящие запросы.

2. Дать текущим запросам завершиться

—> Текущим запросам разрешается завершиться

3. Завершить внутренние задачи

—> Внутренние задачи, такие как запланированные задания, завершаются.

4. Оповестить другие сервисы


—> Приложение уведомляет другие сервисы о подготовке к завершению работы.

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥31
This media is not supported in your browser
VIEW IN TELEGRAM
Быстрее находите и устраняйте ошибки в коде с IntelliJIDEA 👩‍💻

Используйте ⇧F2 (macOS) / Shift + F2 (Windows, Linux), чтобы переходить между проблемами.

Куда бы ни был установлен курсор, IDE сразу перенесёт вас к проблеме с полезными объяснениями и предложениями по быстрому исправлению

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍205🔥5
Spring_Annotations_Final.pdf
37.5 KB
25 аннотаций Spring Boot, которые вы должны знать

Сохраняй, чтобы не искать по тысячу раз ❤️

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥3
Java_Hibernate_Interview_Questions_Linked.pdf
24.2 KB
Вопросы для собеседования по Java Hibernate с однострочными ответами

Ставь лайк если полезно 👍

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥4😁2🤣1
Скидываю вам список чекеров и плагинов для Error Proneзабрать

Error Prone — это инструмент от Google для анализа Java-кода, который встраивается в компилятор (javac) и находит потенциальные ошибки ещё на этапе компиляции ⌨️

Подойдет для тех, кто хочет усилить Error Prone и сделать код чище, безопаснее и стабильнее

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥1