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

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

Обратная связь: @proglibrary_feedback_bot

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Узнаем размер каталога с помощью Java

Размер файлов в Java можно получить с помощью класса File. Встроенная функция 'fileName.length()' используется для определения размера файла в байтах.

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

Подробнее можно посмотреть здесь.
#код
10 полезных книг для Java программиста на русском языке

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

🔗 Основной сайт
🔗 Зеркало
Spring Transactions

Spring Transactions — это механизм, предоставляемый Spring Framework, который позволяет управлять транзакциями в Java-приложениях. Он предоставляет абстракцию уровня транзакций, которая скрывает детали управления транзакциями в низкоуровневых API базы данных, и упрощает создание транзакционных приложений.

В коде на первом изображении мы используем аннотацию @Transactional для указания того, что метод createUser() должен выполняться в контексте транзакции. Все операции с базой данных, включая вставку новой записи, будут обернуты в транзакцию.

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

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

Объяснение: В этом коде мы вызываем метод divide, который выполняет деление двух чисел. При делении на ноль возникает исключение ArithmeticException, которое перехватывается в блоке catch. В блоке finally всегда выполняется инструкция return 0, поэтому в итоге результатом будет значение -1.

Этот вопрос проверяет понимание исключений, блоков try-catch-finally и порядка выполнения кода в Java.
#вопросы_с_собеседований
Всё о Java / Войти в IT после 30 / Интервью с Senior Java Developer

Роман пришел в IT в 30 лет после курсов, что совершенно не помешало развить в себе отличные навыки разработки. В выпуске обсудили историю Романа, разобрали Java EE, Spring, Hibernate, Criteria API, JSP, Maven, Ant, Android SDK, среды разработки, фишки войти в айти и менторинга и много других не менее умных и интересных вещей из мира Java. А еще нормально зацепили Kotlin.

Смотреть видео
Рассказываем про мир job-сайтов: где программисту опубликовать резюме, чтобы быстрее найти работу в IT.

🔗 Основной сайт
🔗 Зеркало
Пузырьковая сортировка

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

Пузырьковая сортировка весьма и весьма медленная, с временной сложностью O(N²), так как мы имеем вложенные циклы. Внешний проход по элементам выполняется за N раз, внутренний — тоже N раз, и в итоге мы получаем N*N, N² итераций.
#код
Очередной #дайджест статей по Java:

☕️ Инструментация байт-кода Java
В рамках текущей статьи рассказано о способах инструментации байт-кода java или, другим языком, внесения изменений в компилированные файлы java .class. Здесь приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.

☕️ Симуляция реальности: разбираемся в мок-серверах и пишем свой
Проблематика: проблема черного ящика и почему это вообще нужно решать.

☕️ Эффективное и комплексное устранение утечек памяти в Android
Про OutOfMemoryError и работу GC.

☕️ Особенности разработки автотестов различными инструментами, а также статистика по использованию
Однозначным плюсом внедрения автотестов на проекте является сокращение времени на тестирование и сокращение возможности ошибки при тестировании человеком.

☕️ Добавляем поддержку пользовательского языка в IntelliJ с помощью ANTLR

☕️ Как на самом деле работает Java ClassLoader system? (с картинками)
Будучи разработчиком Java, вы наверняка сталкивались с ClassNotFoundException или NoClassDefFoundError — загадочными сообщениями, которые на мгновение останавливают наш процесс разработки. Класс не найден — понятно по названию, но не найден где? Кто и как его ищет, куда доставляет?

☕️ SpringBoot и вебсокеты: едем в кластер
В этой статье затронута тема горизонтального масштабирования SpringBoot-приложений, использующих вебсокеты. Основная особенность таких приложений — наличие состояния (state). Вебсокеты для работы используют постоянное TCP-соединение, собственно оно и является этим состоянием. А наличие состояния обычно вызывает проблемы при масштабировании.
Какой ноутбук считаете наиболее подходящим для программирования и почему?
#интерактив
🧩 Всё о массивах

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

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

Смотреть видео
Чем отличается Lambda от анонимного класса?

Хотя в некоторых случаях они и могут быть использованы взаимозаменяемо, Lambda-выражения и анонимные классы имеют различия.

Разберем основные из них:

1. Синтаксис: Lambda-выражения имеют более краткий и лаконичный синтаксис по сравнению с анонимными классами.

2. Область применения: Lambda-выражения могут быть использованы только для функциональных интерфейсов, в то время как анонимные классы могут быть использованы для любых интерфейсов и абстрактных классов.

3. Ключевое слово this: В анонимных классах ключевое слово this ссылается на сам анонимный класс, в то время как в lambda-выражениях this ссылается на объемлющий.

4. Производительность: Lambda-выражения обычно имеют лучшую производительность по сравнению с анонимными классами, так как они компилируются в приватные методы и используют инструкцию invokedynamic.
#вопросы_с_собеседований
Метод interrupt()

interrupt() используется для прерывания потока исполнения. Этот метод является частью класса Thread и позволяет прервать поток, вызывая исключение InterruptedException, если поток находится в состоянии ожидания или блокировки. Если поток не находится в таком состоянии, метод interrupt() устанавливает флаг прерывания, который можно проверить с помощью метода isInterrupted().

Метод interrupt() может применяться в различных ситуациях, например, когда необходимо остановить поток по запросу пользователя или когда поток должен завершиться по достижении определенного условия.
#код
🔎 Собственный поисковик на Java

ElasticSearch может быстро искать ключевые слова среди огромного количества данных, и его фишка в том, что его используют многие крупные компании: IBM, Github и даже Netflix. В этом видео автор знакомит с Elasticsearch, учит строить архитектуру приложения и показывает, как писать собственную поисковую систему с использованием Java + ElasticSearch.

Перейти к просмотру
Сколько всего курсов по программированию вы купили?
#интерактив
Java-программа для преобразования десятичной системы счисления в двоичную

Воспользуемся побитовыми операторами для решения данной задачи.

Временная сложность: O (1)
Вспомогательное пространство: O (1).
#код