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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
Скачиваем видео с Youtube

VGet позволит вам скопировать видео с YouTube, используя только URL-адрес.

Как видите, первая строка кода в блоке try просто указывает URL-адрес YouTube.

В следующей строке указывается путь, по которому вы хотите сохранить загруженный файл.

Далее код создает экземпляр VGet. Это рабочий класс, который будет обрабатывать процесс загрузки.

Наконец, код вызывает download() метод VGet объекта.

Подробнее ознакомиться можно здесь.
👩‍💻 GIT ДЛЯ РАЗРАБОТЧИКА. Урок по гиту для начинающих— Обзор системы контроля версий

Разбираем необходимый для каждого разработчика минимум знаний и навыков работы с git в консоли. Что такое репозиторий, коммит, ветки и конфликты при их слиянии, как с этим работать — все в одном видео: https://youtu.be/dHlhCO56Pv0
Please open Telegram to view this post
VIEW IN TELEGRAM
#вопросы_с_собеседований
Создание бесконечного цикла на пустом месте

Дан блок кода (см картинку). Дополните его так, чтобы цикл стал бесконечным.

«Ничего сложного», — скажете вы. Скорее всего, вы не раз попадали в такую историю: решая задачи по Java, вы создавали бесконечный цикл и думали, как от него избавиться. Тут же наоборот. Хитрость в том, что сам цикл и условия выхода из него менять нельзя. Есть только две итерации. Тем не менее, их вполне достаточно, чтобы создать бесконечный цикл.

Похоже, что он должен работать только для двух итераций, но его можно сделать бесконечным, за счет использования переполнения. Уже догадались, как?
Мягкое удаление в Hibernate: неочевидные факты

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

Нам, как авторам JPA Buddy (плагина для IntelliJ), пришлось с этим плотно разбираться. В этой статье мы рассмотрим детали, которые зачастую не упоминаются в большинстве публикаций по этой теме, хотя крайне важны для принятия решения о способе реализации мягкого удаления в вашем приложении. Давайте посмотрим, с чем вы, вероятно, намучаетесь.

Читать статью
Java 17: Pattern Matching for switch

14-го сентября состоялась презентация Apple, в этот же день произошло не менее важное событие - релиз Java 17.

Среди новых фич подъехал паттерн матчинг для switch в preview моде JEP 406.

История началась с того, что в jdk 16 расширили instanceof оператор, который теперь может принимать type pattern и выполнять матчинг по паттерну.

Читать статью
#вопросы_с_собеседований
Каким будет результат сравнения в следующем коде?

Ответ:
s1 == s2 ? true

s1 == s3 ? false

s1 equals s3 ? true

Вопрос на понимание работы пула строк в Java и на понимание сравнения строк. Разберем детально: Переменная s1 ссылается на строку в пуле уникальных строк в памяти, переменная s2 ссылается на ту же саму строку в пуле уникальных строк, что и переменная s1, первое сравнение будет true, так как s1 и s2 ссылаются на один и тот же объект. Переменная s3 ссылается на новый объект, который не находится в пуле уникальных строк, так как он создан через new, следовательно второе сравнение будет false, так как сравниваем переменные которые ссылаются на на два разных объекта. Третье сравнение будет true, так как мы сравниваем строки посимвольно на эквивалентность через equals, а содержимое данных строк одинаково.
👩‍💻 Java. Класс Object. Разбор вопросов на собеседование.

В данном видео автор разбирает вопросы по классу Object на собеседование для начинающих Java разработчиков. Это вопросы из его личного списка, те что он сам время от времени задаёт.

https://youtu.be/gmS0aaqgOXQ
Please open Telegram to view this post
VIEW IN TELEGRAM
#вопросы_с_собеседований
Как одной строкой преобразовать HashSet в ArrayList?

Ответ на картинке.
#вопросы_с_собеседований
Можно ли одновременно использовать в сервлете PrintWriter и ServletOutputStream?

Ответ:
Так сделать не получится, т.к. при попытке одновременного вызова getWriter() и getOutputStream() будет выброшено исключение java.lang.IllegalStateException с сообщением, что уже был вызван другой метод.
#вопросы_с_собеседований
Что такое busy spin?

busy spin – это техника, которую программисты используют, чтобы заставить поток ожидать при определённом условии. В отличие от традиционных методов wait(), sleep() или yield(), которые подразумевают уступку процессорного времени, этот метод вместо уступки выполняет пустой цикл. Это необходимо, для того, чтобы сохранить кэш процессора, т.к. в многоядерных системах, существует вероятность, что приостановленный поток продолжит своё выполнение уже на другом ядре, а это повлечет за собой перестройку состояния процессорного кэша, которая является достаточно затратной процедурой.
👩‍💻 Алгоритм определения анаграмм

Если одно слово состоит из того же набора букв, что и другое, то эти слова друг для друга являются анаграммами. В этом видео разберём алгоритм проверки таких слов на Java.

Рассмотрим два варианта реализации алгоритма. Один из них использует мапу, второй - стандартную сортировку массивов.

https://youtu.be/QjdqGOvNxRI
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с ошибками

Отлов багов – это, возможно, самая трудоемкая составляющая процесса разработки на Java. Трассировка стека позволяет отследить, в каком именно месте проекта было выброшено исключение.
👩‍💻 GraphQL в Spring Boot и проблема N + 1

GraphQL - это стандарт клиент-серверного взаимодействия, который позволяет гибко запрашивать данные с сервера. Основное отличие от традиционных REST-запросов состоит в том, что клиент сам выбирает, какие поля он будет запрашивать у сервера, тогда как REST предполагает заранее определённый фиксированный формат. При этом сервер будет подгружать из хранилища ровно те поля, которые необходимы и ничуть не больше.

Относительно недавно в Spring Boot появился компонент для работы c GraphQL и мы сделаем проект на его основе. Для удобства отладки также подключим отладочный веб-интерфейс graphiql.

Ещё рассмотрим проблему N+1, когда для каждого элемента результирующего списка выполняется дополнительный запрос.

https://youtu.be/uzylXF0Rwp4
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод fill()

Присваивает определенное значение int к каждому элементу указанного целочисленного массива. Такой же метод может быть использован всеми другими примитивными типами данных (byte, short, int и т.д.).