Библиотека джависта | 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
加入频道
🐕🖥 16 универсальных идей для пет-проектов вне зависимости от языка

Хотите создать что-нибудь эдакое, но вам не хватает фантазии и вдохновения? Держите 16 идей для разработки собственного проекта от «Библиотеки программиста».

🔗 Основной сайт
🔗 Зеркало
💡 8 IT-профессий для тех, кто не хочет программировать

В погоне за большими и, как оказывается впоследствии, совсем не легкими деньгами некоторые люди задумываются об IT-профессиях. Но что делать, если вы не любите программировать, но хотите попасть в IT и получать достойную зарплату? Рассказываем о 8 IT-профессиях, в которых не нужно программировать.

🔗 Основной сайт
🔗 Зеркало
Друзья, Vlad Mihalcea подготовил небольшое видео на тему извлечения объектов при помощи JPA и Hibernate. 😃

В этом видео рассмотрено следующее:
✔️ Непосредственное извлечение объектов
✔️ JPQL запросы
✔️ SQL запросы
✔️ Запросы Criteria API

Приятного просмотра!
🛠 Программирование без кода: немного о no-code и low-code разработке

Не нравится кодить или просто не получается, но очень хочется? Или нужно быстро собрать и протестировать MVP? Попробуй no-code и low-code программирование.

🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
Что произойдет со сборщиком мусора, если выполнение метода finalize() требует ощутимо много времени, или в процессе выполнения будет выброшено исключение?

Непосредственно вызов finalize() происходит в отдельном потоке Finalizer (java.lang.ref.Finalizer.FinalizerThread), который создаётся при запуске виртуальной машины (в статической секции при загрузке класса Finalizer). Методы finalize() вызываются последовательно в том порядке, в котором были добавлены в список сборщиком мусора. Соответственно, если какой-то finalize() зависнет, он подвесит поток Finalizer, но не сборщик мусора. Это в частности означает, что объекты, не имеющие метода finalize(), будут исправно удаляться, а вот имеющие будут добавляться в очередь, пока поток Finalizer не освободится, не завершится приложение или не кончится память.

То же самое применимо и выброшенным в процессе finalize() исключениям: метод runFinalizer() у потока Finalizer игнорирует все исключения выброшенные в момент выполнения finalize(). Таким образом возникновение исключительной ситуации никак не скажется на работоспособности сборщика мусора.
#вопросы_с_собеседований
Какие есть особенности класса String?

• Это неизменяемый (immutable) и финализированный тип данных;
• Все объекты класса String JVM хранит в пуле строк;
• Объект класса String можно получить, используя двойные кавычки;
• Можно использовать оператор + для конкатенации строк;
• Начиная с Java 7 строки можно использовать в конструкции switch.
15 000 звезд на GitHub за год: 10 советов по развитию и продвижению продукта

В этой статье авторы популярного опенсорс-проекта Medusa (альтернатива Shopify) дадут 10 советов по развитию и продвижению продукта.

🔗 Основной сайт
🔗 Зеркало
#вопросы_с_собеседований
Почему char[] предпочтительнее String для хранения пароля?

С момента создания строка остаётся в пуле, до тех пор, пока не будет удалена сборщиком мусора. Поэтому, даже после окончания использования пароля, он некоторое время продолжает оставаться доступным в памяти и способа избежать этого не существует. Это представляет определённый риск для безопасности, поскольку кто-либо, имеющий доступ к памяти сможет найти пароль в виде текста. В случае использования массива символов для хранения пароля имеется возможность очистить его сразу по окончанию работы с паролем, позволяя избежать риска безопасности, свойственного строке.
Шпаргалка: исключения в Java

Друзья, представляем вашему вниманию шпаргалку на тему исключений в Java. 🤓

Хорошей памяти!

Читать статью
#вопросы_с_собеседований
Как создать потокобезопасный Singleton?

Static field
 class Singleton {
public static final Singleton INSTANCE = new Singleton();
}

• Enum
 enum Singleton {
INSTANCE;
}

Synchronized Accessor
 class Singleton {
private static Singleton instance;

public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}

• Double Checked Locking & volatile
 class Singleton {
private static volatile Singleton instance;

public static Singleton getInstance() {
Singleton localInstance = instance;
if (localInstance == null) {
synchronized (Singleton.class) {
localInstance = instance;
if (localInstance == null) {
instance = localInstance = new Singleton();
}
}
}
return localInstance;
}
}

• On Demand Holder Idiom
public class Singleton {

public static class SingletonHolder {
public static final Singleton HOLDER_INSTANCE = new Singleton();
}

public static Singleton getInstance() {
return SingletonHolder.HOLDER_INSTANCE;
}
}
Что делает метод intern() в классе String?

Метод intern() используется для сохранения строки в пуле строк или получения ссылки, если такая строка уже находится в пуле.
ТОП 30+ вопросов по ООП с примерами

Друзья, давно не освежали в памяти базовые понятия ООП. 😃

В предложенной сегодня статье представлены ТОП 30 вопросов по ООП с примерами.

Хорошей подготовки!

Читать статью
Разница дат в Java

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

В этом поможет код с картинки. Результат выполнения будет похож на это:

Fri Jan 07 17:11:18 GMT 2022

Fri Jan 07 17:11:28 GMT 2022

Разница между датами: 10069 миллисекунд
#вопросы_с_собеседований
Какая основная разница между String, StringBuffer, StringBuilder?

Класс String является неизменяемым (immutable) - модифицировать объект такого класса нельзя, можно лишь заменить его созданием нового экземпляра.

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

Класс StringBuilder был добавлен в Java 5 и он во всем идентичен классу StringBuffer за исключением того, что он не синхронизирован и поэтому его методы выполняются значительно быстрей.
Запросы к MongoDB из Java с помощью билдера фильтров

В этой статье разберемся, как использовать класс Filters для запросов к MongoDB.

Класс Filters представляет собой билдер для удобного написания фильтров запросов. Фильтры — это некоторые условные операции, которые MongoDB использует для ограничения результатов.

https://habr.com/ru/company/otus/blog/704488/
#вопросы_с_собеседований
Что такое класс Object? Какие в нем есть методы?

Object это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object и, соответственно, наследуют его методы:

public boolean equals(Object obj) – служит для сравнения объектов по значению;

int hashCode() – возвращает hash код для объекта;

String toString() – возвращает строковое представление объекта;

Class getClass() – возвращает класс объекта во время выполнения;

protected Object clone() – создает и возвращает копию объекта;

void notify() – возобновляет поток, ожидающий монитор;

void notifyAll() – возобновляет все потоки, ожидающие монитор;

void wait() – остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;

void wait(long timeout) – остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;

void wait(long timeout, int nanos) – остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;

protected void finalize() – может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.
Пишем Java код используя проект Lombok

Можно долго спорить о необходимости и полезности проекта Lombok, но факт есть факт: количество кода для написания программы значительно сокращается. 😳

Предложенная сегодня статья расскажет о следующем:
✔️ Как работает Lombok
✔️ Формирование методов класса Object
✔️ Настройка аннотаций
✔️ Иммутабельные структуры данных
✔️ Delombok
и др.

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

Читать статью