This media is not supported in your browser
VIEW IN TELEGRAM
Недавно наткнулся на плагин, который сразу заставил IntelliJ IDEA смотреться как миллион баксов — Atom Material Icons. 💵
Если ты тоже хочешь, чтобы интерфейс был не только удобным, но и приятнее — пользуйся
Навигация по проекту становится в 10 раз быстрее — всё благодаря иконкам
👉 Java Portal
Если ты тоже хочешь, чтобы интерфейс был не только удобным, но и приятнее — пользуйся
Навигация по проекту становится в 10 раз быстрее — всё благодаря иконкам
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔16👍8❤4🔥1👀1
Media is too big
VIEW IN TELEGRAM
Опа, а вот и ещё одна годная штука
DZone Java — это такой хаб для джавистов, где собираются статьи, гайды, туториалы, обзоры и инсайды из мира Java. Причём не абы какие, а от разработчиков, архитекторов и простозадр... знатоков своего дела 😎
Можно подписаться на темы, собирать коллекции, шарить статьи в команду и не выпадать из инфополя
Лайк — если давно знаешь
👉 Java Portal
DZone Java — это такой хаб для джавистов, где собираются статьи, гайды, туториалы, обзоры и инсайды из мира Java. Причём не абы какие, а от разработчиков, архитекторов и просто
Можно подписаться на темы, собирать коллекции, шарить статьи в команду и не выпадать из инфополя
Лайк — если давно знаешь
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍4😁3🔥2
Общие вопросы для собеседования на Java Spring Boot с ответами
1. Каково назначение аннотации
⏩
который автоматически настраивает Spring-приложение на основе зависимостей, присутствующих в classpath.
2. Каково назначение аннотации
⏩
и позволяя тестировать приложение целиком.
3. Как развернуть Spring Boot-приложение?
⏩ Вы можете развернуть Spring Boot-приложение как автономный JAR, WAR или используя платформы оркестрации контейнеров,
такие как Kubernetes и Docker.
4. Каково назначение аннотации
⏩
что позволяет использовать типобезопасную конфигурацию.
5. Как вы обрабатываете логирование в Spring Boot?
⏩ Spring Boot использует SLF4J как фасад логирования и поддерживает различные фреймворки логирования, такие как Logback, Log4j2 и Java Util Logging. Вы можете настроить логирование в
6. Каково назначение аннотации
⏩
таких как наличие класса или свойства.
7. Как создать RESTful веб-сервис с использованием Spring Boot?
⏩ Вы можете создать RESTful веб-сервис, определив класс с аннотацией
8. Каково назначение аннотации
⏩
источников в Spring-бины.
9. Как настроить пользовательский баннер в Spring Boot?
⏩ Вы можете настроить пользовательский баннер, разместив файл
или установив свойство
10. Каково назначение аннотации
⏩
позволяя использовать специфичные для среды конфигурации.
👉 Java Portal
1. Каково назначение аннотации
@EnableAutoConfiguration
?@EnableAutoConfiguration
включает механизм автоконфигурации Spring Boot,который автоматически настраивает Spring-приложение на основе зависимостей, присутствующих в classpath.
2. Каково назначение аннотации
@SpringBootTest
?@SpringBootTest
используется для интеграционного тестирования, загружая полный контекст приложенияи позволяя тестировать приложение целиком.
3. Как развернуть Spring Boot-приложение?
такие как Kubernetes и Docker.
4. Каково назначение аннотации
@ConfigurationProperties
?@ConfigurationProperties
используется для привязки внешних конфигурационных свойств к Java-объектам,что позволяет использовать типобезопасную конфигурацию.
5. Как вы обрабатываете логирование в Spring Boot?
application.properties
6. Каково назначение аннотации
@Conditional
?@Conditional
используется для условного включения или отключения бинов на основе определённых условий,таких как наличие класса или свойства.
7. Как создать RESTful веб-сервис с использованием Spring Boot?
@RestController
, отображая HTTP-запросы на методы обработчиков с использованием аннотаций @RequestMapping
или других аннотаций сопоставления запросов.8. Каково назначение аннотации
@Value
?@Value
используется для внедрения значений из файлов свойств, переменных среды или другихисточников в Spring-бины.
9. Как настроить пользовательский баннер в Spring Boot?
banner.txt
в каталоге src/main/resources
,или установив свойство
spring.banner.location
10. Каково назначение аннотации
@Profile
?@Profile
используется для условного включения или отключения бинов на основе активных профилей,позволяя использовать специфичные для среды конфигурации.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥3❤2
Что такое циклическая зависимость и как её следует решать?
Когда
Циклическая зависимость может возникать и между более чем двумя бинами, например:👇
beanA => beanB => beanC => beanD => beanA
Spring создаёт бины в том порядке, в котором они требуются. Если бин имеет зависимость, то сначала создаётся зависимость, а затем она внедряется для завершения создания бина.
В случае циклической зависимости Spring не может определить, какой бин создать первым.
Проблема циклической зависимости возникает при использовании конструкторной инъекции, так как бины создаются при загрузке контекста. При использовании setter-инъекции или инъекции в поле бины создаются, но их зависимости внедряются только по мере необходимости.
Таким образом, можно избежать проблемы циклической зависимости.☺️
При использовании конструкторной инъекции можно применить аннотацию
👉 Java Portal
Когда
beanA
зависит от beanB
, а beanB
зависит от beanA
, возникает циклическая зависимость. В этом случае оба бина пытаются внедрить друг друга через конструктор, и Spring выбрасывает исключение BeanCurrentlyInCreationException
Циклическая зависимость может возникать и между более чем двумя бинами, например:
beanA => beanB => beanC => beanD => beanA
Spring создаёт бины в том порядке, в котором они требуются. Если бин имеет зависимость, то сначала создаётся зависимость, а затем она внедряется для завершения создания бина.
В случае циклической зависимости Spring не может определить, какой бин создать первым.
Проблема циклической зависимости возникает при использовании конструкторной инъекции, так как бины создаются при загрузке контекста. При использовании setter-инъекции или инъекции в поле бины создаются, но их зависимости внедряются только по мере необходимости.
Таким образом, можно избежать проблемы циклической зависимости.
При использовании конструкторной инъекции можно применить аннотацию
@Lazy
. Это сообщает Spring, что при инициализации бина нужно внедрить прокси. Сам бин будет полностью создан только тогда, когда он действительно понадобится.Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2❤1
Пирамида тестирования Java
1. Unit-тесты (JUnit, Mockito) — проверяют отдельные методы и классы.
☑ Самые быстрые
☑ Легко писать
☑ Ловят баги на старте
Пиши как можно больше
2. Integration-тесты (Testcontainers) — тестируют взаимодействие между модулями (например, сервис <-> база).
☑ Работают с реальными зависимостями
☑ Помогают избежать сюрпризов на проде
3. API-тесты (Postman, RestAssured) — проверяют REST-эндпоинты.
☑ Тесты бизнес-логики
☑ Можно автоматизировать или делать вручную
5. UI-тесты (Selenium) — имитируют действия пользователя.
⚠️ Медленные
⚠️ Ломаются чаще
Используй по минимуму, только для самых важных сценариев
👉 Java Portal
1. Unit-тесты (JUnit, Mockito) — проверяют отдельные методы и классы.
Пиши как можно больше
2. Integration-тесты (Testcontainers) — тестируют взаимодействие между модулями (например, сервис <-> база).
3. API-тесты (Postman, RestAssured) — проверяют REST-эндпоинты.
5. UI-тесты (Selenium) — имитируют действия пользователя.
Используй по минимуму, только для самых важных сценариев
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3🔥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
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.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤5🔥2
Графовые алгоритмы — шпаргалка для Java Developer
Сводная таблица по всем основным алгоритмам на графах: обход, кратчайшие пути, минимальные остовные деревья, циклы, топология, компоненты связности и продвинутые техники
👉 Java Portal
Сводная таблица по всем основным алгоритмам на графах: обход, кратчайшие пути, минимальные остовные деревья, циклы, топология, компоненты связности и продвинутые техники
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥2❤1🌭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
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
Отличная тренировка для собесов и укрепления понимания структур данных!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3🌚1
Что такое монолитная архитектура?
Монолитная архитектура — это единый унифицированный блок, где все компоненты приложения — от пользовательского интерфейса до бизнес-логики и доступа к данным — тесно интегрированы и разворачиваются вместе.
- Единый разворачиваемый модуль (обычно WAR или JAR файл)
- Общая память, база данных и кодовая база
- Проще в разработке и тестировании на ранних этапах
- Со временем может стать сложной и жёстко связанной
☑ Плюсы
- Удобна для небольших команд
- Меньше накладных расходов при разработке и деплое
- Прямая и понятная отладка
❌ Минусы
- Сложнее масштабировать отдельные компоненты
- Длительное время развёртывания (для крупных проектов)
- Трудно управлять при работе больших команд
👉 Java Portal
Монолитная архитектура — это единый унифицированный блок, где все компоненты приложения — от пользовательского интерфейса до бизнес-логики и доступа к данным — тесно интегрированы и разворачиваются вместе.
- Единый разворачиваемый модуль (обычно WAR или JAR файл)
- Общая память, база данных и кодовая база
- Проще в разработке и тестировании на ранних этапах
- Со временем может стать сложной и жёстко связанной
- Удобна для небольших команд
- Меньше накладных расходов при разработке и деплое
- Прямая и понятная отладка
- Сложнее масштабировать отдельные компоненты
- Длительное время развёртывания (для крупных проектов)
- Трудно управлять при работе больших команд
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2😁1🤣1🏆1
Особенности и ограничения Java Records
Особенности Java Records:
⏩ Снижение шаблонного кода — Нет необходимости вручную писать конструкторы,
геттеры,
⏩ Неизменяемы по умолчанию — все поля являются final
⏩ Эффективны по памяти — JVM оптимизирует выделение памяти.
⏩ Без дополнительных зависимостей — являются частью Java с версии 14
⏩ Инкапсуляция — данные хорошо структурированы и неизменяемы.
Ограничения Java Records:
⏩ Нет сеттеров — поля final и не могут быть изменены
⏩ Нельзя расширять классы — Records неявно являются final и не могут наследоваться от других классов.
⏩ Ограниченная настройка — не поддерживают аннотации вроде
👉 Java Portal
Особенности Java Records:
геттеры,
equals(), hashCode() и toString()
Ограничения Java Records:
@JsonIgnore
для полейPlease open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥2
getDepartmentDeptName()
получает deptName
из связанной сущности Department
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4
Понятие ошибки и исключения в Java
⏩ Error в Java — это серьёзная проблема, с которой программа не должна пытаться справляться. Обычно Error выбрасывается виртуальной машиной Java (JVM) и сигнализирует о неполадках, находящихся вне контроля программы, например, утечка памяти или переполнение стека
⏩ Exception в Java — это ситуация, которую программа может предусмотреть и обработать. Это ошибки, от которых можно восстановиться во время выполнения, используя конструкции обработки исключений, такие как
👉 Java Portal
try-catch
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤2🔥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
Подкласс:
private —> Не видно в подклассе
default —> Видно, если в одном пакете
protected —> Видно в подклассе
public —> Видно в подклассе
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤6🔥2
Нужен быстрый генератор OTP в Java?
Вот сниппет, который создаёт случайный 4-значный код с помощью
Идеально подойдёт для логина, регистрации или проверки пользователя
👉 Java Portal
Вот сниппет, который создаёт случайный 4-значный код с помощью
Random
и String.format()
Идеально подойдёт для логина, регистрации или проверки пользователя
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5🔥1💊1
Мягкое завершение работы Spring Boot приложения
1. Прекратить приём новых запросов
—> Приложение прекращает принимать новые входящие запросы.
2. Дать текущим запросам завершиться
—> Текущим запросам разрешается завершиться
3. Завершить внутренние задачи
—> Внутренние задачи, такие как запланированные задания, завершаются.
4. Оповестить другие сервисы
—> Приложение уведомляет другие сервисы о подготовке к завершению работы.
👉 Java Portal
1. Прекратить приём новых запросов
—> Приложение прекращает принимать новые входящие запросы.
2. Дать текущим запросам завершиться
—> Текущим запросам разрешается завершиться
3. Завершить внутренние задачи
—> Внутренние задачи, такие как запланированные задания, завершаются.
4. Оповестить другие сервисы
—> Приложение уведомляет другие сервисы о подготовке к завершению работы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Быстрее находите и устраняйте ошибки в коде с IntelliJIDEA 👩💻
Используйте
Куда бы ни был установлен курсор, IDE сразу перенесёт вас к проблеме с полезными объяснениями и предложениями по быстрому исправлению
👉 Java Portal
Используйте
⇧F2
(macOS) / Shift + F2
(Windows, Linux), чтобы переходить между проблемами.Куда бы ни был установлен курсор, IDE сразу перенесёт вас к проблеме с полезными объяснениями и предложениями по быстрому исправлению
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤5🔥5
Spring_Annotations_Final.pdf
37.5 KB
25 аннотаций Spring Boot, которые вы должны знать
Сохраняй, чтобы не искать по тысячу раз❤️
👉 Java Portal
Сохраняй, чтобы не искать по тысячу раз
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🔥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
Error Prone — это инструмент от Google для анализа Java-кода, который встраивается в компилятор (javac) и находит потенциальные ошибки ещё на этапе компиляции
Подойдет для тех, кто хочет усилить Error Prone и сделать код чище, безопаснее и стабильнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥1