This media is not supported in your browser
VIEW IN TELEGRAM
Вы предпочитаете размещать вызовы связанных методов на отдельной строке? 👩💻
Тогда выберите вызовы методов, откройте «Действия с намерением» (Alt+Enter) и откройте меню для настройки стиля кода. На вкладке «Перенос и скобки» установите параметр «Связанные вызовы методов» в значение «Всегда переносить».
👉 Java Portal | #tips
Тогда выберите вызовы методов, откройте «Действия с намерением» (Alt+Enter) и откройте меню для настройки стиля кода. На вкладке «Перенос и скобки» установите параметр «Связанные вызовы методов» в значение «Всегда переносить».
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет по Java API
Используйте🔥
Это помогает предотвратить случайное добавление нескольких абстрактных методов в интерфейс, помеченный как функциональный. Если вы попытаетесь добавить еще один абстрактный метод в функциональный интерфейс, компилятор выдаст ошибку.
👉 Java Portal | #tips
Используйте
@FunctionalInterface
в качестве защиты от ошибок компилятора! Это помогает предотвратить случайное добавление нескольких абстрактных методов в интерфейс, помеченный как функциональный. Если вы попытаетесь добавить еще один абстрактный метод в функциональный интерфейс, компилятор выдаст ошибку.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Генерируйте шаблонный код, например, конструкторы, геттеры и сеттеры.👩💻
Используйте
👉 Java Portal | #tips
Используйте
⌘N
(macOS) / Alt+Insert
(Windows/Linux)
для вызова меню "Generate", затем выберите Constructor, Getter, Setter или Getter and Setter, а также укажите поля, которые нужно включить.Please open Telegram to view this post
VIEW IN TELEGRAM
Чтобы сделать большие и сложные цепочки компараторов более читаемыми, мне нравится присваивать компараторы переменным, имена которых начинаются с "by".
Таким образом, вызов
sorted()
становится меньше и читается почти как естественный язык. Кроме того, вы можете использовать статический импорт.Please open Telegram to view this post
VIEW IN TELEGRAM
JWT в Spring Boot: Используется вместе с Spring Security для аутентификации пользователей в REST API.
JWT (JSON Web Token) – это компактный, безопасный для URL токен, используемый для безопасной аутентификации и авторизации. Он состоит из трех частей:
🍩 Заголовок (Header) → Содержит тип токена (JWT) и алгоритм подписи (например, HS256).
🍩 Полезная нагрузка (Payload) → Содержит утверждения (claims) – информацию о пользователе, роли, срок действия и т. д.
🍩 Подпись (Signature) → Обеспечивает целостность токена и создается с использованием секретного ключа.
Зачем использовать JWT?
☑ Бесстейтная аутентификация (не требуется хранение сессии).
☑ Безопасная передача данных между клиентом и сервером.
☑ Можно использовать в API для авторизации.
👉 Java Portal | #tips
JWT (JSON Web Token) – это компактный, безопасный для URL токен, используемый для безопасной аутентификации и авторизации. Он состоит из трех частей:
Зачем использовать JWT?
Please open Telegram to view this post
VIEW IN TELEGRAM
Одна из подводных камней при использовании аннотации
В приведенном выше коде можно ожидать, что первый вызов
👉 Java Portal | #tips
@Transactional
в java с @springframework
— это самовызов метода. В приведенном выше коде можно ожидать, что первый вызов
save()
будет откатан, но этого не произойдет. Чтобы все работало правильно, метод с аннотацией @Transactional
должен быть вызван из другого сервиса.Please open Telegram to view this post
VIEW IN TELEGRAM
В Java может быть неясно, относится ли аннотация к объявлению, к типу или к обоим одновременно.
Это происходит в полях, методах, локальных переменных и других случаях.
В таких ситуациях понимание того, что именно аннотируется, зависит от значения мета-аннотации
👉 Java Portal | #tips
Это происходит в полях, методах, локальных переменных и других случаях.
В таких ситуациях понимание того, что именно аннотируется, зависит от значения мета-аннотации
@Target
Please open Telegram to view this post
VIEW IN TELEGRAM
В Java может быть неясно, применяется ли аннотация к объявлению, к типу или к обоим.
Это происходит с полями, методами, локальными переменными и другими элементами.
🧠 В таких случаях, чтобы понять, что именно аннотируется, нужно учитывать значение мета-аннотации
👉 Java Portal | #tips
Это происходит с полями, методами, локальными переменными и другими элементами.
@Target.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Управляйте своим проектом как профессионал и повышайте продуктивность с лучшим сочетанием клавиш в IntelliJIDEA 👩💻
Используйте ⇧⇧ | Shift+Shift, чтобы мгновенно найти:
🟢 Классы, файлы, символы, действия или текст
🟢 Настройки редактора
🟢 Элементы интерфейса и многое другое! 🔥
👉 Java Portal | #tips
Используйте ⇧⇧ | Shift+Shift, чтобы мгновенно найти:
Please open Telegram to view this post
VIEW IN TELEGRAM
Шпаргалка по GitHub для начинающих
Этот список команд помогает пользователям быстро освоить базовые операции при работе с Git и GitHub.
👉 Java Portal | #tips
Этот список команд помогает пользователям быстро освоить базовые операции при работе с Git и GitHub.
Please open Telegram to view this post
VIEW IN TELEGRAM
Виды Dependency Injection в Spring Boot:
Инъекция через поля (Field Injection)
☑ Плюсы: Простота и краткость.
❌ Минусы: Трудно тестировать из-за приватности полей.
Инъекция через сеттеры (Setter Injection)
☑ Плюсы: Позволяет повторно внедрять зависимости при необходимости.
❌ Минусы: Делает зависимости изменяемыми, что может привести к ошибкам во время выполнения.
Инъекция через конструктор (Constructor Injection)
☑ Плюсы: Гарантирует неизменяемость и обеспечивает наличие всех необходимых зависимостей.
❌ Минусы: Требует больше шаблонного кода, если не использовать Lombok.
👉 Java Portal | #tips
Инъекция через поля (Field Injection)
Инъекция через сеттеры (Setter Injection)
Инъекция через конструктор (Constructor Injection)
Please open Telegram to view this post
VIEW IN TELEGRAM
Чтобы заставить её работать, необходимо использовать усиление байткода через плагин. Тогда поля, помеченные как ленивые, будут загружаться при первом обращении к ним.
Это делается через Maven-плагин
hibernate-enhance-maven-plugin
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет: если в Java Map нужно хранить несколько значений для одного ключа, можно использовать Apache Commons MultiValuedMap. Вы добавляете значения, а MultiValuedMap хранит их в List или Set.
👉 Java Portal | #tips
Please open Telegram to view this post
VIEW IN TELEGRAM
Стратегии распределения памяти в Java
🟡 Stack Memory (Стековая память) – используется для хранения вызовов методов, локальных переменных и деталей вызовов функций.
🟡 Heap Memory (Куча) – содержит динамически выделенные объекты и экземпляры классов, подлежит сборке мусора.
🟡 Metaspace (Метапространство) – хранит метаданные классов, определения методов и статические переменные.
🟡 Off-Heap Memory (Память вне кучи) – используется, например, для DirectByteBuffer в NIO и полезна при обработке больших объемов данных, не управляется сборщиком мусора.
Основные различия — скорость доступа, необходимость сборки мусора и предназначение каждого вида памяти.
👉 Java Portal | #tips
Основные различия — скорость доступа, необходимость сборки мусора и предназначение каждого вида памяти.
Please open Telegram to view this post
VIEW IN TELEGRAM
ZonedDateTime, OffsetDateTime и OffsetTime ведут себя по-разному:
equals(): Сравнивает все поля (включая зону/смещение)
isEqual(): Сравнивает моменты времени (игнорируя зону/смещение)
Один и тот же момент, но разный результат.
Please open Telegram to view this post
VIEW IN TELEGRAM
К вашему вниманию — механизмы блокировки в Java ☕️
Это таблица, описывающая различные механизмы блокировки (Locking Mechanisms) в многопоточной среде. В ней представлены механизмы, их использование, производительность и наиболее подходящие сценарии применения.
👉 Java Portal | #tips
Это таблица, описывающая различные механизмы блокировки (Locking Mechanisms) в многопоточной среде. В ней представлены механизмы, их использование, производительность и наиболее подходящие сценарии применения.
Please open Telegram to view this post
VIEW IN TELEGRAM