Библиотека джависта | Java, Spring, Maven, Hibernate
24.8K subscribers
1.87K photos
38 videos
42 files
2.66K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
#вопросы_с_собеседований
Сравните Iterator и ListIterator.

☕️ ListIterator расширяет интерфейс Iterator;
☕️ ListIterator может быть использован только для перебора элементов коллекции List;
☕️ Iterator позволяет перебирать элементы только в одном направлении при помощи метода next(). Тогда как ListIterator позволяет перебирать список в обоих направлениях, при помощи методов next() и previous();
☕️ ListIterator не указывает на конкретный элемент: его текущая позиция располагается между элементами, которые возвращают методы previous() и next().
☕️ При помощи ListIterator вы можете модифицировать список, добавляя/удаляя элементы с помощью методов add() и remove(). Iterator не поддерживает данного функционала.
#вопросы_с_собеседований
Приведите пример, когда какая-либо коллекция выбрасывает UnsupportedOperationException.

public static void main(String[] args) {
List<Integer> list = Collections.emptyList();
list.add(0);
}
#вопросы_с_собеседований
Чем различаются Enumeration и Iterator?

Хотя оба интерфейса и предназначены для обхода коллекций, между ними имеются существенные различия:

☕️ с помощью Enumeration нельзя добавлять/удалять элементы;
☕️ в Iterator исправлены имена методов для повышения читаемости кода (Enumeration.hasMoreElements() соответствует Iterator.hasNext(), Enumeration.nextElement() соответствует Iterator. next() и т.д);
☕️ Enumeration присутствуют в устаревших классах, таких как Vector/Stack, тогда как Iterator есть во всех современных классах-коллекциях.
#вопросы_с_собеседований
Назовите основные свойства транзакции.

Атомарность (atomicity)
гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.

Согласованность (consistency). Транзакция, достигающая своего нормального завершения и, тем самым, фиксирующая свои результаты, сохраняет согласованность базы данных.

Изолированность (isolation). Во время выполнения транзакции параллельные транзакции не должны оказывать влияние на её результат.

Долговечность (durability). Независимо от проблем на нижних уровнях (к примеру, обесточивание системы или сбои в оборудовании) изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу.
#вопросы_с_собеседований
В чем заключается особенность работы метода clone () с полями объекта типа ссылки?

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

Ну а что, если вам нужно полноценное клонирование с клонированием всех вложенных объектов? Как сделать, чтобы это были не копии ссылок, а полноценные клоны объекты с другими занимаемыми ячейками памяти в куче?

На самом деле все довольно просто — для этого вам нужно в каждом классе этих внутренних объектов также переопределить метод clone() и добавить интерфейс маркер — Cloneable. Тогда будут скопированные не ссылки на объекты, а сами объекты, ведь теперь они тоже имеют возможность копировать себя.
#вопросы_с_собеседований
Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()?

При следующем вызове методов итератора будет выброшено ConcurrentModificationException.
👩‍💻 Телеграм бот-игра на JAVA в 100 строк

Пишем телеграм бота, реализующего простую игру в стиле "камень-ножницы-бумага" на чистой джава + библиотека telegram api. Для пущей сложности я делаю это без БД и при этом пытаюсь выдернуть информацию о том, в каком чате происходит дело (может пригодиться для хранения какой-либо статистики)
Please open Telegram to view this post
VIEW IN TELEGRAM
⚖️ Работа или жизнь: принципы Work-life balance

Если ты работаешь 25/8, а переработка для тебя стала обыденностью – эта статья для тебя. Рассказываем об угрозах трудоголизма и как найти тот самый баланс.

🔗 Основной сайт
🔗 Зеркало
Друзья, представляем вашему вниманию шпаргалку по теме JDBC.

Источник
🔎 10 причин, почему тебя не берут на работу в ИT

«Библиотека программиста» выделила 10 наиболее распространенных ошибок начинающих специалистов при попытке устроится на работу.

🔗 Основной сайт
🔗 Зеркало
Использование паттернов Event Sourcing и CQRS для разработки приложения на Spring Boot и Axon Framework

Axon — это один из немногих фреймворков, который позволяет создавать гибкие микросервисные решения, используя архитектурные паттерны Event Sourcing и CQRS.

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

В этой статье мы создадим простое приложение на примере библиотеки книг с использованием Spring Boot и Axon Framework.

https://telegra.ph/Ispolzovanie-patternov-Event-Sourcing-i-CQRS-dlya-razrabotki-prilozheniya-na-Spring-Boot-i-Axon-Framework-05-10
👩‍💻 Java. Лямбда-выражения.

В этом видео автор рассказывает о том, что такое лямбда-выражения в языке программирования Java. На примерах показывает, для чего нужны лямбды, и какую роль они играют при написании кода в функциональном стиле.
Please open Telegram to view this post
VIEW IN TELEGRAM
Пишем свой первый сервер на Java и Spring Boot

В этой статье мы поговорим о разработке и архитектуре современных web-приложений и разработаем серверную часть простого приложения, добавляющего пользователей и их посты. Приложение напишем на самом распространённом и востребованном Java-фреймворке – Spring Boot.

🔗 Основной сайт
🔗 Зеркало
Telegram-бот счётчик сообщений на Java и Spring Boot

В этой статье я покажу, как написать Telegram-бот на Java с использованием Spring Boot, PostgreSQL и JPA. Также создадим исполняемый jar-файл. Сам же бот будет подсчитывать сообщения от пользователей и записывать эти данные в БД.

Читать статью
Какое худшее время работы метода contains() для элемента, который есть в LinkedList?

O(N). Время поиска элемента линейно пропорционально количеству элементов в списке.
Новая подборка Java-новостей от InfoQ:
✔️ Стал доступен билд № 31 для JDK 20 (ранний доступ)
✔️ Стал доступен билд № 5 для JDK 21 (ранний доступ)
✔️ Выпущен новый релиз Spring Framework, версии 6.0.4
и д.р.

Приятного чтения!

Читать статью
#вопросы_с_собеседований
Почему не рекомендуется использовать метод Thread.stop()?

При принудительной остановке (приостановке) потока, stop() прерывает поток в недетерменированном месте выполнения, в результате становится совершенно непонятно, что делать с принадлежащими ему ресурсами. Поток может открыть сетевое соединение - что в таком случае делать с данными, которые еще не вычитаны? Где гарантия, что после дальнейшего запуска потока (в случае приостановки) он сможет их дочитать? Если поток блокировал разделяемый ресурс, то как снять эту блокировку и не переведёт ли принудительное снятие к нарушению консистентности системы? То же самое можно расширить и на случай соединения с базой данных: если поток остановят посередине транзакции, то кто ее будет закрывать? Кто и как будет разблокировать ресурсы?