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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Зачем нужен equals(). Чем он отличается от операции ==?

Метод equals() - определяет отношение эквивалентности объектов.

При сравнении объектов с помощью == сравнение происходит лишь между ссылками. При сравнении по переопределённому разработчиком equals() - по внутреннему состоянию объектов.
Пишем плагин для IntelliJ IDEA. Ускоряем написание тестов на DTO

Когда пишешь тесты на обширную модель (DTO), ловишь себя на мысли, что сосредоточен не на тестовых данных, а на том, как ловчее избавить себя от написания boilerplate-кода.

Как это сделать? Поискать готовое решение (плагин).

А если его нет? Тогда – написать плагин.

А если не умеешь? Стоит хотя бы начать :)

Читать статью
🏄 50% скидка на все курсы Proglib academy!

Вжух и мы запускаем распродажу курсов до 10 января:

– Математика для Data Science
– Алгоритмы и структуры данных
– Как айтишнику устроиться в международную компанию
– Основы IT для непрограммистов
– Основы программирования на Python
– Frontend Basic: принцип работы современного веба

Выбрать курс вы можете по ссылке 🔗https://proglib.io/w/03f94f58

🔹На курсах мы делимся экспертизой вместе с ТОП- специалистами из Samsung, Revolut, Яндекс, Тинькофф и т.д;
🔹В процессе обучения вы не только прокачиваете скиллы, но и пополняете портфолио;
🔹Это не самообучение. Мы проводим индивидуальную проверку домашних заданий с разбором ошибок и рекомендаций.

🚀Начни год с прорыва!
👥🗺 Product Discovery: что такое дискавери-команда и чем она занимается

Рассказываем: зачем нужно разделение на «дискавери» и «деливери»; в чём суть работы дискавери-команды и кто в неё входит; как запускать полезные продукты дешевле и быстрее конкурентов.

🔗 Основной сайт
🔗 Зеркало
Сравнение массивов с Arrays.equals

Чтобы проверить, равны ли два массива с точки зрения их содержимого, Java предоставляет статический метод Arrays.equals . Этот метод будет выполнять параллельную итерацию по массивам для каждой позиции и применять оператор == для каждой пары элементов.
📖 Где учить программирование?

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

Чтобы вы зря не тратили драгоценное время, автор этого видео отобрал лучшие книги, ютуб-каналы, блоги и GitHub-репозитории, которые помогут стать true программистом.

https://youtu.be/M8xaRauiDCk
#вопросы_с_собеседований
Расскажите об интерфейсе SingleThreadModel.

Интерфейс SingleThreadModel является маркерным - в нем не объявлен ни один метод, однако, если сервлет реализует этот интерфейс, то метод service() этого сервлета гарантированно не будет одновременно выполняться в двух потоках. Контейнер сервлетов либо синхронизирует обращения к единственному экземпляру, либо обеспечивает поддержку пула экземпляров и перенаправление запроса свободному сервлету. Другими словами, контейнер гарантирует отсутствие конфликтов при одновременном обращении к переменным или методам экземпляра сервлета. Однако существуют также и другие разделяемые ресурсы, которые даже при использовании этого интерфейса остаются всё так же доступны обработчикам запросов в других потоках. Т.е. пользы от использования этого интерфейса немного и в спецификации Servlet 2.4 он был объявлен deprecated.
#вопросы_с_собеседований
Какими свойствами обладает порождаемое equals() отношение эквивалентности?

☕️ Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;
☕️ Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.
☕️ Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;
☕️ Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.

Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.
Как написать на Java функцию, подобную sizeof в C

Если вы только начинаете изучать Java и уже имеете опыт программирования на С, то можете заметить разницу между этими двумя языками. К примеру, String — это объект в Java, а не массив символов с конечным NULL. Аналогично, в Java нет оператора sizeof(). Все примитивы имеют заранее определенный размер, например int — 4 байта, char — 2 байта, short — 2 байта, long и float — 8 байт и так далее.

https://nuancesprog.ru/p/16592/
💫 Новогодний розыгрыш от Proglib academy!

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

Подарки под елкой:
🥇 Apple AirPods Pro 2
🥈 Курс «Математика для Data Science
🥉 Курс: «Алгоритмы и структуры данных»

Подробнее об условиях участия, читайте тут: https://proglib.io/w/e72668b2
#вопросы_с_собеседований
Что будет, если переопределить equals() не переопределяя hashCode()? Какие могут возникнуть проблемы?

Классы и методы, которые используют правила этого контракта могут работать некорректно. Так для HashMap это может привести к тому, что пара «ключ-значение», которая была в неё помещена при использовании нового экземпляра ключа не будет в ней найдена.
15 советов для развития экспертизы в Java

Предложенная сегодня статья достаточно детально, подробно и обоснованно расписывает необходимые шаги, которые нужно предпринять, чтобы стать экспертом в Java. 😃

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

https://dev.to/weder96/15-tips-to-become-a-java-expert-1acj
Вашему вниманию предлагается новая подборка Java-новостей от InfoQ: 😃
✔️ Стал доступен билд № 29 для JDK 20 (ранний доступ)
✔️ Стал доступен билд № 3 для JDK 21 (ранний доступ)
✔️ Вышли релизы Spring Boot 3.0.1 и Spring Boot 2.7.7
и д.р.

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

Читать статью
Какие существуют операторы SQL?

операторы определения данных (Data Definition Language, DDL):
CREATE создает объект БД (базу, таблицу, представление, пользователя и т. д.),
ALTER изменяет объект,
DROP удаляет объект;

операторы манипуляции данными (Data Manipulation Language, DML):
SELECT выбирает данные, удовлетворяющие заданным условиям,
INSERT добавляет новые данные,
UPDATE изменяет существующие данные,
DELETE удаляет данные;

операторы определения доступа к данным (Data Control Language, DCL):
GRANT предоставляет пользователю (группе) разрешения на определенные операции с объектом,
REVOKE отзывает ранее выданные разрешения,
DENY задает запрет, имеющий приоритет над разрешением;

операторы управления транзакциями (Transaction Control Language, TCL):
COMMIT применяет транзакцию,
ROLLBACK откатывает все изменения, сделанные в контексте текущей транзакции,
SAVEPOINT разбивает транзакцию на более мелкие.
Выполнение консольных команд

Java позволяет выполнять консольные команды прямо из кода, используя класс Runtime. Очень важно не забывать об обработке исключений.

Например, давайте попробуем открыть файл PDF через терминал Java (на Linux’e).