Java Гениев
87 subscribers
204 photos
77 videos
180 links
Download Telegram
Java

Урок 1. Java Start | Java для начинающих | Java с нуля
Урок 2. Java переменные | Java типы данных | Java для автоматизаторов | Урок 2
Урок 3. Java комментарий | Java как вывести сообщения в консоль | Java конкатенация строк | Урок 3
Урок 4. Java арифметические операции | Java для автоматизаторов | строк | Урок 4
Урок 5. Java библиотеки классов | Java Scanner | строк | Урок 5
Урок 6. Java String | Класс String и его методы
Урок 7. Условный оператор if в Java | Оператор switch | Конструкция if-else |

источник

👉
Совет

show-sql - это самый простой (но не самый лучший!) способ увидеть SQL, сгенерированный Hibernate. Вы можете немного улучшить его, включив форматирование, показ JPQL-запроса, сгенерировавшего запрос, и включив подсветку, которая добавляет некоторый цвет к выводу.

👉
Зачем используется Serial Version UID? Что если не определить его?

Сериализуемый класс явно или неявно, но всегда имеет serialVersionUID. Это число типа long, которое представляет собой «версию» сериализационной формы класса. Если при сериализации/десериализации значения serialVersionUID не совпадают – будет выброшено InvalidClassException.

Для совпадающих версий работает мощная поддержка эволюции класса – совместимые изменения, такие как добавление или удаление полей, не приводят к InvalidClassException.

Неявное значение вычисляется автоматически в рантайме, и включает в себя информацию о имени типа, списке родителей и полей (с точностью до коллизии). По смыслу это похоже на хэш-сумму класса. Соответственно, при любом изменении класса значение изменится, и поддержка эволюции окажется бесполезной.

Всегда лучше явно указывать любое значение serialVersionUID, и изменять только в тех редких случаях, когда требуется сломать совместимость с предыдущими версиями. Стандартная утилита JDK serialver умеет «угадывать» авто-генерированное значение. Она используется чтобы зафиксировать значение для включения поддержки эволюции созданного ранее класса.

Явное значение устанавливается в переменную static final long serialVersionUID.

👉
Media is too big
VIEW IN TELEGRAM
Разрешаем фронту подписаться на бэкенд. Server Sent Events на Java Spring Boot.

Простой способ избежать постоянного опроса сервера. Событийный способ работы.

источник

👉
🚀 Изменения API в Java 23 🚀

https://javaalmanac.io/jdk/23/apidiff/22/

👉
Ultimate Java Developer Roadmap 2024

https://www.rameshfadatare.com/learn-java-programming/

👉
🎬 Amplicode – конвейер для Spring-приложений прямо в IntelliJ IDEA

На прошлой неделе мы провели митап, который длился 3,5 часа!

Мы понимаем, что усвоить столько информации за раз непросто (если только ты не Илья Кучмин :D). Поэтому мы выложили запись в высоком качестве и разбили её на плейлист с полной записью мероприятия и отдельными его частями.

Всего получилось 6 докладов:

– История и философия Amplicode (Илья Кучмин)
– Локальное окружение с Docker Compose для Spring Boot (Кирилл Толкачёв)
– Проблемы JPA в Spring PetClinic и способы их решения (Илья и Фёдор Сазоновы)
– Разрабатываем правильный REST API для Spring Boot (Рустам Курамшин)
– Настраиваем Spring Security и Keycloak (Павел Кислов)
– Admin UI с использованием React Admin для Spring Boot (Александр Шустанов)

✔️СМОТРЕТЬ НА YOUTUBE
✔️СМОТРЕТЬ В VK ВИДЕО
✔️СМОТРЕТЬ НА RUTUBE
Опыт отладки хитрой утечки прямой памяти

Pinterest поддерживает формирование отчётов по метрикам рекламных объявлений внешних рекламодателей и расчёт рекламных бюджетов в реальном времени. Всё это основано на потоковых конвейерах обработки данных, созданных с помощью на Apache Flink. Доступность заданий (job) Flink для пользователей находится на уровне 99-го перцентиля. Но время от времени некоторые задачи (task) «валятся» под ударами неприятных ошибок, вызванных утечками прямой памяти (Out-Of-Memory, OOM), возникающими сразу в нескольких операторах.

https://habr.com/ru/companies/wunderfund/articles/843618/

👉
Принципы SOLID в Java с примерами

Принципы SOLID - это набор из пяти принципов проектирования в объектно-ориентированном программировании, которые помогают разработчикам создавать более удобное, понятное и гибкое программное обеспечение. Эти принципы были введены Робертом К. Мартином, также известным как Дядя Боб. SOLID означает:

1 - Single Responsibility Principle (SRP)
2 - Open/Closed Principle (OCP)
3 - Liskov Substitution Principle (LSP)
4 - Interface Segregation Principle (ISP)
5 - Dependency Inversion Principle (DIP)

https://www.javaguides.net/2020/01/solid-principles-in-java-with-examples.html

👉
Используйте плагин checkstyle

Подключить его очень легко и в Gradle, и в Maven.

plugins {
id 'checkstyle'



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

👉
Преобразование коллекций

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

👉
Какие бывают строковые классы?

В Java строковые классы — это классы, которые используются для работы со строками, то есть последовательностями символов. Основные строковые классы в Java:

1. String
- Неизменяемый класс (immutable): После создания объекта String его нельзя изменить.
- Использование: Широко используется для представления строковых значений.
- Особенности:
- Строки могут быть созданы с использованием строковых литералов или через конструктор.
- Для сравнения строк рекомендуется использовать метод equals(), а не оператор ==.
- Пример:

String str = "Hello, World!";


2. StringBuilder
- Изменяемый класс (mutable): Этот класс позволяет изменять строки без создания нового объекта.
- Основное применение: Используется, когда требуется частое изменение строк, например при конкатенации.
- Не синхронизирован: Этот класс не потокобезопасен, что делает его быстрее при работе в однопоточных приложениях.
- Пример:

StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!");


3. StringBuffer
- Изменяемый класс (mutable): Как и StringBuilder, позволяет изменять строки.
- Синхронизирован: Потокобезопасный, что делает его более медленным по сравнению с StringBuilder.
- Основное применение: Рекомендуется использовать в многопоточных приложениях.
- Пример:

StringBuffer sb = new StringBuffer("Hello");
sb.append(", World!");


Различия между String, StringBuilder и StringBuffer:
- Неизменяемость: String неизменяемый, тогда как StringBuilder и StringBuffer изменяемы.
- Потокобезопасность: StringBuffer синхронизирован, в отличие от StringBuilder.
- Производительность: StringBuilder быстрее, чем StringBuffer при работе в однопоточных средах.


👉
🚀 Совет по Java - Comparator 🚀

Comparator.nullsLast

Принимает Comparator в качестве аргумента, который отвечает за сравнение ненулевых элементов. В случае, если переданный компаратор равен null, ненулевые значения считаются равными. 🔥

https://docs.oracle.com/en/java/javase/22/docs/api/java.base/java/util/Comparator.html#nullsLast(java.util.Comparator)

👉
Spring Boot 3 🍃 включает несколько улучшений в области SSL 🔐

🔹3.1 - SSL Bundles
🔹3.2 - SSL Hot Reload
🔹3.4 - SSL certs info in the 'info' and 'health' Actuator endpoints

Чтобы включить SSL в 'info' endpoint, установите свойство "http://management.info.ssl.enabled=true"

👉
Как заставить code coverage работать на вас

Недавно я снова услышал тезис, что code coverage не нужен и совсем не обязательно за ним следить, а нужно просто делать black-box тесты и считать количество тест-кейсов. Я не согласен с подобного рода категоричными утверждениями. В этой статье постараюсь изложить свою точку зрения и развеять некоторые мифы, опираясь на свой опыт в разработке и идеи, которые почерпнул из книг и статей других инженеров.

https://habr.com/ru/articles/836366/

👉
Media is too big
VIEW IN TELEGRAM
Создание REST API с использованием Spring WebFlux и Security

00:00:00 Введение
00:00:20 Создание проекта
00:11:36 Создание миграций БД
00:15:40 Создание базовых классов
00:23:20 Реализация логики генерации JWT токена
00:46:30 Реализация логики валидации JWT токена
00:53:05 Построения цепочки аутентификации
01:04:22 Финальная конфигурация с использованием SecurityWebFilterChain
01:12:11 Реализация REST контроллеров
01:23:15 Проверка REST API средствами Postman
01:24:21 Добавление и конфигурация обработчика ошибок
01:25:40 Заключение

Ссылка на Github репозиторий https://github.com/proselytear/webfluxsecurity

источник

👉