Библиотека джависта | 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
加入频道
Очередной #дайджест по Java:

Как внедрить Prototype в Singleton в Spring с помощью параметра ProxyMode
Если просто добавить к определению бина аннотацию @Scope(SCOPE_PROTOTYPE) и использовать этот бин в синглтоне через аннотацию @Autowired – будет создан только один объект.

Делаем свою простейшую систему сборки для Java
Как работает компиляция и как устроен Gradle.

Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения
Уже тогда мобильные приложения писали на Java.

Ad-hoc мониторинг: сбор, хранение и визуализация данных
Делаем гибридную систему мониторинга.
BeanFactory

BeanFactory — это интерфейс, который предоставляет механизм для управления объектами bean в контейнере Inversion of Control (IoC).

BeanFactory является основой фреймворка Spring, где используется для создания приложений по принципу IoC и Dependency Injection. Он позволяет создавать гибкие, легко тестируемые приложения с инверсией управления и внедрением зависимостей.
#код
Создаем нативное Kotlin приложение на Spring Boot Native, Gradle и GraalVM без докера под MacOS и Windows

В этой статье автор рассказывает о практическом опыте нативной компиляции production приложения, написанного на Kotlin со Spring Boot, Gradle с использованием GraalVM.

Читать статью
🛣️ Дорожная карта Java-разработчика в 2023 году

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

Читать статью
Что такое сериализация?

Сериализация — это процесс преобразования объекта в поток байтов для сохранения состояния объекта в файле или передачи по сети. Она выполняется потоками ObjectOutputStream и ObjectInputStream.
Сериализованный объект сохраняется в универсальном бинарном формате, независимом от платформы.

Сериализация позволяет сохранить состояние объекта между запусками программы и передавать объект через сеть.
Для сериализации класс должен имплементировать интерфейс Serializable. А если добавить полям класса модификатор transient, то такие поля не будут сериализованы.
#вопросы_с_собеседований
ForkJoinPool

Это класс, введенный в JDK 7, который представляет собой специализированный пул потоков, предназначенный для параллельного выполнения рекурсивных задач.

ForkJoinPool автоматически управляет созданием и использованием потоков для выполнения подзадач и обеспечивает эффективное распределение работы между ними.

Принцип работы основан на делении большой задачи на более мелкие подзадачи и их последующем объединении для получения результата. Каждая подзадача может быть выполнена независимо друг от друга, что позволяет эффективно использовать доступные ресурсы процессора.
#код
Protobuf vs Reflection

Вы когда-нибудь задумывались, насколько grpc быстрый? Если вы гоняете маленькие сообщения, которые надо быстро доставить, то лучше grpc попросту не найти. Но насколько он хорош? Сможет ли он, к примеру, сравниться просто с нативными вызовами?

Читать статью
Очередной #дайджест по Java:

Модельно-Ориентированная Java, или Навстречу Дизайну ПО
Модельно-ориентированный метод (MDE) широко применяется во многих сферах современной инженерии; в программировании он позволяет разделить деятельность, направленную на создание универсального описания продукта, от деятельности по написанию кода, который бы эту модель воплощал в реальность.

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

«Я определенно не потратил 3 часа на этот вопрос..😢 #BinaryTreeAdventures» Решение двоичного дерева, вид справа
Решение сложной задачи с литкода.

Распространенные ошибки младших Java-разработчиков при работе с Hibernate
Hibernate — это мощная платформа объектно-реляционного сопоставления (ORM) для Java, которая упрощает взаимодействие с базой данных.
Какой фреймворк для работы изучали последний раз?
#интерактив
Пост для Java-разработчиков, которые ищут работу или собираются увольняться с текущего места.

👉 Подписывайтесь на наш канал — в нем каждый день выходят лучшие вакансии на рынке с нормальными зарплатными вилками и хорошими условиями.

Публикуем предложения для джунов, мидлов и сеньоров, на удаленке и в офисах — оффер мечты точно найдется 👨‍💻

🔸Подписаться🔸
Интерфейс Comparable

Интерфейс Comparable используется для поддержки сортировки элементов коллекции.
Он содержит единственный метод compareTo, который сравнивает текущий объект с переданным объектом. Метод возвращает значение меньше нуля, если текущий объект меньше переданного, больше нуля если текущий объект больше, и ноль если объекты равны.

Чтобы ваш класс стал сравниваемым, он должен реализовывать интерфейс Comparable и переопределить метод compareTo.

Реализация Comparable позволяет сортировать экземпляры класса с помощью методов Collections.sort и Arrays.sort. Также она используется в TreeSet и TreeMap для корректного упорядочивания элементов.

В примере реализован метод compareTo, который сравнивает средний балл текущего и переданного студента.
После создания списка студентов мы отсортировали его методом Collections.sort. Благодаря Comparable студенты расположились в порядке возрастания среднего балла.
#код
В каких случаях разумно использовать массив, а не ArrayList?

Использование обычных массивов вместо ArrayList имеет смысл в следующих ситуациях:

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

— Требуется максимальная производительность при работе с примитивными типами данных (int, double и т. д.). Доступ к элементам массива быстрее, чем в ArrayList.

— Нужно создать структуру данных, которая должна быть неизменяемой.

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

— Не нужны динамические функции ArrayList, такие как автоматическое изменение размера, методы вставки/удаления и т. д.

— Ограничения на использование дополнительной памяти. Массивы компактнее ArrayList за счет фиксированного размера.
#вопросы_с_собеседований
Зубчатый массив в Java

Зубчатый массив (BitSet) — это специальная структура данных для эффективного хранения и манипулирования наборами битов.
Представляет собой массив битов, который увеличивается динамически по мере добавления элементов. Занимает меньше памяти, чем обычные структуры данных для хранения булевых значений.
Позволяет выполнять операции над битами: установка, сброс, инверсия, логические операции.

Зубчатый массив полезен при решении задач: поиск в множествах, хранение состояний и флагов, оптимизация расхода памяти и в целом при необходимости эффективно хранить и манипулировать большим количеством булевых значений.
#код
Вышла Java 21

Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.

Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.

Подробный обзор по ссылке.
Что вы считаете самой большой своей неудачей за всю карьеру?
#интерактив
Начать курс «Алгоритмы и структуры данных» с вводной части можно уже сегодня бесплатно

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

НАЧАТЬ С ДЕМО-ДОСТУПА

▪️ бессрочный доступ

▪️ 47 видеолекций

▪️ 150 практических заданий

▪️ бессрочная поддержка в чате студентов

▪️развернутая обратная связь по всем домашним заданиям

🔹Подробная программа – https://proglib.io/w/5af3212b

Переходите, оставляйте заявку на пробную версию и знакомьтесь с самым харизматичным спикером – Степаном Мацкевичем. Он определенно получил приз зрительских симпатий от наших студентов🥰
Queue

Queue — это интерфейс в Java Collections Framework, который представляет собой коллекцию элементов, организованных в соответствии с принципом FIFO (First In, First Out). Это означает, что элементы добавляются в конец очереди и извлекаются из начала очереди.
Queue используется в ситуациях, когда необходимо управлять порядком обработки элементов.

В этом примере мы создаем очередь строк и добавляем в нее три элемента. Затем мы извлекаем элементы из очереди с помощью метода poll(), который возвращает и удаляет элемент из начала очереди. Элементы извлекаются в том же порядке, в каком и добавляются.
#код
Очередной #дайджест по Java:

Добавление отзывов с фотографиями в S3 с помощью AWS SDK Java
Добавление отзывов пользователями с возможностью прикрепить фотографии, загрузить их в облако и получить ссылку файл из S3, а именно Yandex Object Storage, используя AWS SDK Java.

OOM: direct memory при работе с сетью TCP/IP через NIO в Java
Об опыте увеличения производительности сетевого стэка и проблемах, с которыми можно столкнуться при использовании NIO в Java.

Решаем задачу о секретном рукопожатии на Java
Интересная задача на знание Map и работу с пользовательским вводом, а также двоичное счисление.

Продвинутый телеграмм бот на Java (Spring, postgres и free deploy)
Гайд по созданию полноценного бота с привязкой к базе данных.
Frame

Frame — это класс, представляющий окно приложения без каких-либо элементов управления.
Фрейм используется для создания простых GUI приложений.

При запуске этого кода отобразится пустое окно приложения с заголовком "My Frame" размером 300x200 пикселей, расположенное по центру экрана. При закрытии окна приложение завершит работу.
#код
Observability в Spring Boot 3

Отдел Observability Spring уже довольно долго работает над поддержкой наблюдаемости в Spring-приложениях, и мы рады сообщить вам, что в Spring Framework 6 и Spring Boot 3 вы наконец-то увидите результаты этой работы!

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