Java Developer
6.46K subscribers
235 photos
8 videos
12 files
279 links
MAKE JAVA GREAT AGAIN

Мемы: @java_memes
加入频道
так, на чём мы тут остановились
😁376
Spring
Для чего используется аннотация @Qualifier
Ответ:


Когда есть несколько бинов одного типа, то используя @Qualifier мы говорим Spring'у, какой именно бин внедрить. При этом также существует аннотация @Primary. Если мы укажем бин @Primary, то Spring его выберет по умолчанию. Когда нужен конкретный другой бин, то @Qualifier переопределит выбор @Primary.


Kafka
Как сделать, чтобы сообщения по одному процессу обрабатывались последовательно?
Ответ


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


SQL
Чем отличается SELECT COUNT(*) от SELECT COUNT(address)
Ответ:


COUNT(*) считает общее количество строк, независимо от того, содержат ли они NULL в каком-либо поле.
COUNT(address) же считает количество ненулевых значений в столбце address. Если столбец address содержит NULL в некоторых строках, такие строки в подсчёт не включаются.
62😁4
Java Stream API

Разница между методами map и flatMap

• Метод map принимает функцию, которая вызывается для каждого элемента стрима и преобразует его в другое значение. В результате получается стрим с преобразованными элементами, структура стрима при этом не меняется.

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<String> strings = numbers.stream()
.map(number -> String.valueOf(number))
.collect(Collectors.toList());


• Метод flatMap принимает функцию, которая преобразует каждый элемент стрима в новый стрим. Затем flatMap объединяет (склеивает) полученные стримы в один общий.
Пример. У нас есть список заказов, а каждый заказ содержит список купленных вещей. Получить список всех купленных вещей можно так:

List<Item> items = orders.stream()
.flatMap(order -> order.getItems().stream())
.collect(Collectors.toList());
40😁5
Spring
При каких условиях транзакция Spring будет откатана (rollback)?
Ответ:


1. Если выброшено unchecked исключение (наследник RuntimeException или Error).

2. Если выброшено checked исключение, указанное в аннотации @Transactional с параметром rollbackFor.
@Transactional(rollbackFor = { IOException.class })

Примечание: Checked исключения (например, IOException) по умолчанию не вызывают роллбэк, поэтому их нужно явно указывать через параметр rollbackFor.
40😁4
Java Core
Чем отличается abstract class от interface?
Ответ:


1. Наследование
abstract class может extends только один класс (single inheritance), но может реализовывать несколько интерфейсов.
interface может extends несколько других интерфейсов (множественное «наследование» интерфейсов).
2. Методы
abstract class может содержать как абстрактные, так и реализованные методы. Поддерживает любые модификаторы доступа.
interface
◦ до Java 8 содержал только абстрактные методы (по умолчанию public abstract)
◦ с Java 8 появились default и static методы с реализацией
◦ с Java 9 можно объявлять private методы внутри интерфейса, чтобы переиспользовать логику в default-методах. При этом приватные методы могут существовать только внутри интерфейса, и не видны реализующим классам.
3. Конструкторы
abstract class может иметь конструкторы для инициализации общих полей у наследников, но нельзя создать объект абстрактного класса напрямую (только через конкретные подклассы).
interface не может иметь конструкторов — объект интерфейса напрямую создать нельзя.
4. Поля
abstract class может содержать поля любых типов с любыми модификаторами.
interface может содержать только public static final поля (константы).

Когда использовать:
abstract class - когда требуется общее состояние (поля) и общие методы (реализация), которые наследники могут переопределять или дополнять. Абстрактный класс может хранить поля и совместно использовать часть логики во всех наследниках.
interface - когда нужно определить «контракт» (набор методов) для различных классов, не связанных между собой по иерархии. Несмотря на появление default-методов с реализацией, в интерфейсе по-прежнему нельзя хранить состояние экземпляра. default-методы позволяют расширять интерфейс без нарушения совместимости, но не заменяют полноценного «скелета» с полями и логикой, который даёт абстрактный класс.
30
Kafka
Какие есть гарантии доставки сообщений
Ответ:


1. At most once (не более одного раза):
Сообщение может быть потеряно, но никогда не будет доставлено повторно.
2. At least once (как минимум один раз):
Сообщение доставляется минимум один раз, но возможно повторное получение.
3. Exactly once (ровно один раз):
Сообщение доставляется и обрабатывается строго один раз. Это наиболее надёжная гарантия, достигается с помощью механизма идемпотентности продюсера и транзакций.

Примечание:
Гарантия зависит от настроек продюсера, консюмера и брокера Kafka.
22
яндексоиды, без негатива )
6
JPoint 2025

Вчера сходил на JPoint — Java-конференцию для опытных разработчиков. Билет мне оплатила компания (правда, с условием отработать ещё полгода или вернуть деньги при увольнении). Последний раз был на крупной конференции в 2018 в Питере на Joker. Если сравнивать, то участников и спонсоров сейчас стало поменьше и мерч поскромнее, зато стенды теперь более яркие и современные. Доклады по-прежнему на высоком уровне, особенно ажиотаж вызвал доклад про микробенчмарки. Организация тоже порадовала — кайфовый сайт с лк, чёткий тайминг, удобные дискуссионные зоны, обед в два потока — без очередей и суеты. В целом кайф!
26👨‍💻5
Впечатления от JPoint 2025 моего коллеги

Впечатления позитивные: большинство докладов понравились, интересные темы, классные спикеры. Особенно зашёл доклад «Путеводитель по профилированию приложений
на JVM» — захотелось применить.

Понравился и формат ответов на вопросы после докладов — очень живая атмосфера и возможность пообщаться лично со спикерами.

Отдельно удивило, что были доклады на английском.

Из минусов — попадались молодые спикеры, которые пока слабо владеют темой и не готовы отвечать на вопросы. Немного контрастирует с уровнем профессиональных докладчиков.

В целом такие конференции полезны, помогают увидеть, что ты еще многое не знаешь и мотивируют дальше развиваться)
10
Что посмотреть на выходных — 20

Наткнулся в Ютубе на классное шоу. Такой мини-формат Своей игры только между джавистами бигтеха. Команды: X5, Сбер, Тинькофф, Самокат, Мир Пей, RuStore, Тинькофф. Пару шуток-перебивок из шоу:

Сколько волка не корми — всё равно опыт крутит


На концерте классической музыки весь зал на сцене видит дирижёра. И только devops-инженер видит там оркестратора


https://youtube.com/playlist?list=PLretT_1_SO-AFm7rjtRuxobGWcI2us2zu

#чтопосмотреть@java_developer
17