java_iibrary | Unsorted

Telegram-канал java_iibrary - Java Portal | Программирование

12073

Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

Subscribe to a channel

Java Portal | Программирование

Включить reflection-free Jackson в Quarkus — легко. Настоящая работа начинается с того, чтобы понять, сохраняется ли ваш JSON-контракт.

Автор собрал небольшой API каталога с DTO на record-классах, обобщённым Page<T>, полиморфными payload-ами, кастомным сериализатором и контрактными тестами: baseline против reflection-free режима.

#java #quarkus

👉 Java Portal

Читать полностью…

Java Portal | Программирование

4 способа обновления данных в веб-приложении на стороне клиента в реальном режиме времени: коротки и долгий опрос, SSE и веб-сокеты

👉 Java Portal

Читать полностью…

Java Portal | Программирование

На Stepik запустили мощный курс по «Troubleshooting Docker и Kubernetes: поиск и устранение проблем»

В программе только важные аспекты:

— troubleshooting Docker и образов
— диагностика сетевых проблем
— настройка readiness/liveness probes
— отладка pod’ов, деплоев и ingress
— анализ логов контейнеров и кластера
— разбор ошибок CrashLoopBackOff, OOMKilled, ImagePullBackOff и других

Собеседования на DevOps/SRE сейчас всё чаще строятся вокруг реальных инцидентов. Данный курс фокусируется именно на таких сценариях и помогает в подготовке к практическим вопросам

48 часов доступен со скидкой 25%

↗️ Пройти курс на Stepik

Читать полностью…

Java Portal | Программирование

Большинство разработчиков даже не знают, что GitHub умеет рендерит анимации прямо в README.

github.com/LottieFiles/do github.com/LottieFiles/do github.com/LottieFiles/do github.com/thorvg/thorvg/

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Совет по Java: ловите ошибки ещё на этапе компиляции — помечайте переопределённые методы аннотацией @Override.

@Override
public void process() {
// logic
}


Если сигнатура метода не совпадёт с методом родительского класса или интерфейса, компилятор сразу выдаст ошибку вместо тихого создания нового метода.
#Java #Annotations

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Важная Java-библиотека: Jackson

Джексон — высоконастраиваемый, быстрый, поддерживает стриминг и является процессором JSON с биндингом данных. Если работаешь с JSON, эту библиотеку нужно знать.

Какие основные модули у Джексона?

jackson-core — низкоуровневый стриминговый API (JsonParser, JsonGenerator) для эффективного чтения и записи JSON
jackson-databind — содержит ObjectMapper, основной API для конвертации между Java-объектами и JSON
jackson-annotations — аннотации (@JsonProperty, @JsonIgnore и др.), управляющие сериализацией/десериализацией
jackson-dataformat-* — расширения для форматов XML, CSV, YAML, CBOR и др.
jackson-datatype-* — поддержка типов Java 8 Date/Time (LocalDate, Instant), Guava, JodaTime и др.
jackson-module-* — модули-расширения под конкретные языки и оптимизации производительности (например, Kotlin, Afterburner)

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Spring Boot: Добавление ID трассировки запросов важно для отладки API
#SpringBoot #JavaDev

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Как выбрать шаблон проектирования?

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

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

Чтобы выбрать шаблон, сначала необходимо определить тип проблемы:

> Создание объектов? → Порождающие шаблоны
> Компоновка объектов? → Структурные шаблоны
> Взаимодействие объектов? → Поведенческие шаблоны

Приступим.

1. Порождающие шаблоны

> Singleton — используется, когда нужен единственный экземпляр класса. Примеры: логгирование, подключения к базе данных.
> Factory Method — отделяет создание объекта от его использования. Пример: создание разных типов подключений к БД на основе конфигурации.
> Abstract Factory — создаёт семейства связанных объектов. Пример: парсеры для разных форматов файлов.
> Builder — пошаговое создание сложных объектов. Пример: построение сложного объекта доменной модели.
> Prototype — создание копий объектов и повторное использование закэшированных экземпляров для снижения количества запросов к БД.

2. Структурные шаблоны


> Adapter — делает несовместимые интерфейсы совместимыми. Пример: подключение новой библиотеки логгирования к системе с другим интерфейсом.
> Composite — представление иерархий "часть-целое". Пример: графические объекты в редакторе, объединяемые в группы.
> Proxy — управление доступом к объекту. Пример: ленивое подключение изображения высокого разрешения.
> Decorator — динамическое добавление/удаление поведения. Пример: добавление сжатия или шифрования для потоков файлов.
> Bridge — разделение абстракции и реализации. Пример: изоляция платформозависимого кода от основной логики.

3. Поведенческие
шаблоны

> Strategy — определяет семейство алгоритмов. Пример: выбор между различными алгоритмами сортировки или сжатия.
> Observer — оповещение об изменениях состояния. Пример: уведомление подписчиков о событиях в системе сообщений.
> Command — инкапсулирует запрос как объект. Пример: реализация undo/redo в текстовом или графическом редакторе.
> State — инкапсулирует поведение в зависимости от состояния. Пример: разные состояния UI-элемента (вкл., выкл., выделен).
> Template Method — задаёт скелет алгоритма, позволяя подклассам реализовать отдельные шаги. Пример: базовый класс для юнит-тестов с переопределяемыми шагами подготовки и очистки.

В итоге мы подбираем тот шаблон, который наилучшим образом решает конкретную задачу

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Java 8: мастерство работы с «разворачивающим отображением» — самая важная операция потоков, с которой у разработчиков чаще всего возникают сложности

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

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Иерархия потоков ввода-вывода в Java

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Spring Boot: с @RestControllerAdvice можно глобально обрабатывать конкретные типы исключений вместо того, чтобы разбрасывать try/catch по всему коду.

#SpringBoot #SoftwareEngineering

👉 Java Portal

Читать полностью…

Java Portal | Программирование

У Java Streams не было необходимости в отдельном методе под каждый возможный use case.
Им была нужна точка расширения.

Stream Gatherers дают тебе встроенные gatherer’ы для типичных stateful-операций, а также возможность определять собственные intermediate-операции, оставаясь внутри Stream pipeline.

Ниже простой пример батчинга фиксированного размера через windowFixed 👇

Требуется Java 24+.

Читать полностью…

Java Portal | Программирование

Этот класс задуман как неизменяемый (immutable), но в нём есть неочевидный баг. Сможешь его найти?

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Новое в Java 25: гибкие тела конструкторов (Flexible Constructor Bodies, JEP 513)!

Теперь можно выполнять валидацию аргументов или подготовительную инициализацию до явного вызова другого конструктора (this(...) или super(...)) — больше не нужны шаблонные вспомогательные методы (helper methods) ради такой логики.

👉 Java Portal

Читать полностью…

Java Portal | Программирование

@Sql или @SqlGroup позволяют заранее загружать тестовые данные для выполнения воспроизводимых тестов.

Позволяет:

✅ Вставлять тестовые данные
✅ Очищать таблицы
✅ Сбрасывать состояние базы данных

#SpringBoot #IntegrationTesting

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Spring Boot: в нём есть встроенная поддержка пагинации через Pageable.

В репозиториях стоит использовать пагинацию вместо того, чтобы вытаскивать все данные сразу.
#SpringBoot #JavaDev

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Java : Используй инструменты вроде VisualVM, чтобы профилировать свой проект и находить узкие места в производительности. #Java #Performance

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Совет по Spring Boot: с Spring Boot и Spring Security вы можете легко защитить эндпоинты.

Чтобы защитить следующий REST endpoint:

@RestController
public class MyController {

@GetMapping("/admin")
public String admin() {
...
}
...
}


Можно написать конфигурацию вот так:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin").authenticated()
.anyRequest().permitAll()
.and()
.httpBasic();
}
}


Пояснение:
authorizeRequests(): начинает определение эндпоинтов, которые нужно защитить.
antMatchers("/admin").authenticated(): требует аутентификацию для /admin.
anyRequest().permitAll(): все остальные эндпоинты являются публичными.
httpBasic(): включает HTTP Basic-аутентификацию.

#SpringBoot #SpringSecurity

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Разработчику пригодится это приложение.

Запуск эмулятора iOS или Android за секунды.
Бесплатное, нативное и с открытым исходным кодом:

→ http://minisim.app

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Backend interview task:

Разработчик выполнил:

git reset --hard HEAD~1


После этого запаниковал — команда удалила коммит
с 3 часами работы.

Можно ли восстановить изменения?
A) Нет — hard reset навсегда удаляет коммиты
B) Да — git reflog хранит недавние позиции HEAD, оттуда можно восстановиться
C) Да — но только если коммит был запушен в remote
D) Нет — только при наличии локального бэкапа

Правильный ответ: B

git reset --hard удаляет ссылку на коммит из текущей ветки, но сам объект коммита обычно ещё остаётся в локальном репозитории.

Восстановление:
git reflog


Git покажет историю перемещений HEAD:
abc1234 HEAD@{1}: commit: add payment retry logic
def5678 HEAD@{0}: reset: moving to HEAD~1


Дальше можно вернуть состояние:
git reset --hard abc1234


или создать новую ветку:
git checkout -b recovery abc1234


Пока не сработал garbage collector и объекты не были очищены, коммит восстанавливается без проблем.

👉 Java Portal

Читать полностью…

Java Portal | Программирование

😉 Нашел в сети очень подробное руководство по GIT на русском языке

В нем есть все: от клонирования репозиториев до работы с переменными и Pack-файлами

⛓ Ознакомиться: тут

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Совет по Java API

Используйте @FunctionalInterface как защиту на уровне компиляции

Она помогает не допустить случайного добавления второго абстрактного метода в интерфейс, который должен быть функциональным.
Если вы попытаетесь добавить ещё один абстрактный метод в такой интерфейс, компилятор выдаст ошибку ☕️

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Это тот сайт, который Google должен ставить на первое место по каждому поиску разработчиков.
Он называется IT Tools: https://it-tools.tech/

Бесплатный open-source сайт с 100+ утилитами для разработчиков, которые полностью работают локально в браузере.

JSON formatter
Regex tester
JWT decoder
UUID generator
Cron parser
Timestamp converter
Hash generators
Docker helpers
Color tools
Markdown editor

Всё загружается мгновенно. Нет логинов. Нет трекинга. Нет AI-сгенерированного SEO-мусора.

Когда ищешь один простой конвертер на других сайтах, получаешь:

- всплывающий спам
- трекеры
- фейковые кнопки
- автозапуск видео
- 40 скриптов аналитики

А поскольку сайт полностью open-source, вы можете сами его хостить.
Одна закладка заменила для меня 30+ случайных сайтов.

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Spring Boot: spring.main.lazy-initialization=true не только откладывает создание бинов, но и полностью пропускает выполнение @PostConstruct до первого реального использования бина. Учитывайте это и следите за побочными эффектами.

#SpringBoot #SoftwareDevelopment

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Понимание кода — одна из больших задач в эпоху ИИ, и именно поэтому один из разрабов JetBrains IDE создал Walkthrough.

Этот экспериментальный плагин предоставляет ИИ-агентам MCP-инструмент, который позволяет пошагово проводить вас по коду прямо в JetBrains IDE в визуальном формате, вместо того чтобы заваливать вас простынями текста.

Заценить можно здесь: https://plugins.jetbrains.com/plugin/31637-walkthrough 😶

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Spring Boot легко интегрируется с Apache Kafka для реализации event-driven архитектур.

Сначала добавляешь необходимую зависимость в pom, затем можешь настроить её в application.xml, указав, как подключаться к кластеру Apache Kafka, а также как определены consumer’ы и producer’ы.

Here the required dependency:

<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
Configuration example:

spring:
kafka:
bootstrap-servers: localhost:9092
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
acks: all
retries: 3
consumer:
group-id: my-service-group
auto-offset-reset: earliest
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer


После этого можно реализовать consumer’ы и producer’ы как Java-объекты:

Producer:

@Service
public class MessageProducer {

private final KafkaTemplate<String, String> kafkaTemplate;

public MessageProducer(KafkaTemplate<String, String> kafkaTemplate) {
this.kafkaTemplate = kafkaTemplate;
}

public void send(String message) {
kafkaTemplate.send("demo-topic", message);
}
}
Consumer:

@Service
public class MessageConsumer {

@KafkaListener(topics = "demo-topic", groupId = "demo-group")
public void listen(String message) {
System.out.println("Received: " + message);
}
}


👉 Java Portal

Читать полностью…

Java Portal | Программирование

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

Поможет быстрее понять сложные проекты, разложив всё в понятной инфографике

⛓ Ознакомиться: Тык

👉 Java Portal

Читать полностью…

Java Portal | Программирование

В новых приложениях на Spring Boot у тебя есть выбор использовать WebClient вместо RestTemplate.

Он реактивный и неблокирующий
Работает на основе event loop, а не модели «один поток на один запрос» (thread-per-request)

#SpringBoot #JavaDev

👉 Java Portal

Читать полностью…

Java Portal | Программирование

@ConditionalOnClass — это аннотация Spring Boot, которая используется в auto-configuration.

✅ Она условно активирует bean или configuration только в том случае, если указанный класс присутствует в classpath.
#SpringBoot #Microservices

👉 Java Portal

Читать полностью…

Java Portal | Программирование

Spring Boot: используй @EntityGraph для управления стратегиями загрузки и предотвращения N+1 запросов.
#SpringBoot #SoftwareEngineering

👉 Java Portal

Читать полностью…
Subscribe to a channel