Пирамида тестирования 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
Лучшие советы по API REST
Скачать PDF на русском — здесь
Сохрани себе для быстрой шпаргалки
🥁 🥁 🥁
👉 Java Portal
Скачать PDF на русском — здесь
Сохрани себе для быстрой шпаргалки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥2
Клёвый тренажёр+учебник по SQL
Тут можно потренироваться в хитрых джойнах, агрегациях и понабивать руку. Интерфейс очень приятный и позволяет потыкать схему БД, даёт подсказки как в коде, так и непосредственно по решению
В более сложные штуки (к примеру, в оконные функции) этот ресурс не лезет. Ну и запросы даже в самых сложных задачках получаются не сказать чтобы громоздкие
На сайте есть платная версия (которая позволяет смотреть авторские решения), но можно вполне обойтись и без неё
https://sql-academy.org/ru/trainer
👉 Java Portal
Тут можно потренироваться в хитрых джойнах, агрегациях и понабивать руку. Интерфейс очень приятный и позволяет потыкать схему БД, даёт подсказки как в коде, так и непосредственно по решению
В более сложные штуки (к примеру, в оконные функции) этот ресурс не лезет. Ну и запросы даже в самых сложных задачках получаются не сказать чтобы громоздкие
На сайте есть платная версия (которая позволяет смотреть авторские решения), но можно вполне обойтись и без неё
https://sql-academy.org/ru/trainer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥4❤2
Общие вопросы для собеседования по HashMap в Java 💪
Может ли HashMap содержать null-ключи и null-значения?
—> Да, один null-ключ допускается.
—> Несколько null-значений разрешены.
Потокобезопасен ли HashMap?
—>Нет, не потокобезопасен
Безопасные альтернативы:
⏩
⏩
Могут ли два разных объекта иметь одинаковый хеш-код?
—> Да. Это называется хеш-коллизия
Что вызывает
—> Изменение HashMap во время итерации (например, через
Может ли HashMap содержать два ключа с одинаковым хеш-кодом?
—> Да. HashMap обрабатывает коллизии с помощью цепочек (chaining)
Что происходит при вставке дублирующегося ключа?
—> Новое значение перезаписывает старое для этого ключа
👉 Java Portal
Может ли HashMap содержать null-ключи и null-значения?
—> Да, один null-ключ допускается.
—> Несколько null-значений разрешены.
Потокобезопасен ли HashMap?
—>Нет, не потокобезопасен
Безопасные альтернативы:
Collections.synchronizedMap()
(медленнее, блокирует всю карту)ConcurrentHashMap
(предпочтительнее при многопоточности)Могут ли два разных объекта иметь одинаковый хеш-код?
—> Да. Это называется хеш-коллизия
Что вызывает
ConcurrentModificationException
?—> Изменение HashMap во время итерации (например, через
for-each
) без использования Iterator.remove()
Может ли HashMap содержать два ключа с одинаковым хеш-кодом?
—> Да. HashMap обрабатывает коллизии с помощью цепочек (chaining)
Что происходит при вставке дублирующегося ключа?
—> Новое значение перезаписывает старое для этого ключа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🌭2🔥1