Библиотека джависта | 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
加入频道
Метод doPost()

Метод doPost() является одним из методов, используемых для обработки HTTP запросов в Java сервлетах. Сервлеты представляют собой Java классы, которые выполняют обработку HTTP запросов и генерацию HTTP ответов. doPost() используется для обработки HTTP POST запросов от клиентов.

Чтобы связать этот сервлет с определенным URL, вы должны настроить маппинг в файле web.xml вашего веб-приложения или с использованием аннотаций (если ваша версия сервлетов поддерживает аннотации).
#код
Очередной #дайджест по Java:

Ускоряем java-рефлексию в 2023
Улучшенная статья про рефлексию: когда машина «выходит наружу», копается в своих внутренностях и «возвращается обратно», доставляя пользователю полученную информацию или вызывая методы/конструкторы.

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

Компилирование «железного» бинарника Java-программы Google Closure Stylesheets с GraalVM
Автор рассказывает об улучшениях, которые добавил в свой форк.

Наука о данных с Python и Java: динамичный дуэт для современной аналитики
В постоянно развивающемся мире науки о данных два языка программирования выделяются как гиганты в своих областях: Python и Java. Python приобрел известность как лингва-франка науки о данных, предлагая множество библиотек и инструментов, предназначенных для анализа данных, машинного обучения и визуализации. Между тем Java, известная своей надежностью и масштабируемостью, находит свою нишу в создании высокопроизводительных, готовых к использованию конвейеров данных и приложений.
Когда вы последний раз использовали Copilot?
#интерактив
👩‍💻 Java. Распараллеливаем вычисления на пуле потоков.

Разбираемся, как можно по простому ускорить вычисления с помощью параллельного выполнения на пуле потоков.
Что произойдет при вызове Iterator.next() без предварительного вызова Iterator.hasNext()?

Если итератор указывает на последний элемент коллекции, то возникнет исключение NoSuchElementException, иначе будет возвращен следующий элемент.
#вопросы_с_собеседований
Менеджеры компоновки

Менеджеры компоновки (Layout Manager) в Java используются для управления размещением компонентов в контейнерах, таких как JFrame, JPanel, или другие контейнеры Swing. Они обеспечивают автоматическое распределение компонентов в контейнере в соответствии с определенными правилами размещения.
#код
Что такое абстрактные классы и методы в Java

Абстрагирование — это процесс, в ходе которого от пользователя скрываются многие детали реализации, а предоставляются только те детали, которые действительно важны.

Смотреть статью
Как вы предпочитаете работать: дистанционно или в офисе?
#интерактив
Прямой обход дерева

Прямой обход дерева (pre-order traversal) — это один из способов обхода бинарного дерева. В этом способе сначала посещается корневой узел, затем левое поддерево и затем правое поддерево. Прямой обход широко используется для вывода структуры дерева и выполнения операций на каждом узле в нужном порядке.
#код
Очередной #дайджест по Java:

Высокие технологии или дешевые фокусы с двойным дном
Зачем мокать null?

Байки джависта
Автор делится мыслями, накопившимися за годы работы.

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

Параллельность в Java на практике
Статья для начинающих разработчиков.

Динамическое создание слушателей в Kafka
Эта статья обьясняет, как создать слушатель в Kafka на лету в процессе работы приложения.
Класс Java.io.OutputStream

Java.io.OutputStream — это абстрактный класс, который представляет поток вывода байтов.
Он является базовым классом для всех классов, которые представляют вывод информации в различные места назначения, такие как файл, сетевое соединение и т.д.

Основные подклассы OutputStream:
FileOutputStream, ByteArrayOutputStream, FilterOutputStream и др.

В результате работы кода из примера в файл file.txt будет записано:
Hello World!
#код
Аудит пользователей Spring Data JPA

Автор статьи написал автоматическое отслеживание пользователей, которые изменили сущность. Больше не нужно добавлять аннотации ко всем методам, которые вносят изменения в сущность, кроме того, нет необходимости по сервисному слою таскать сервис получения пользователя из контекста и «сетать» его в необходимые поля.

Читать статью
Метод equalsIgnoreCase()

Метод equalsIgnoreCase() используется для сравнения двух строк без учета регистра (заглавных и строчных букв).
Принимает в качестве аргумента вторую строку для сравнения, сравнивает две строки посимвольно после приведения их к одному регистру и возвращает boolean значение — true или false.

Работает намного быстрее, чем сравнение через toUpperCase/toLowerCase.
Полезен при сравнении пользовательских строк и лучше использовать его вместо ручного сравнения через equals.
#код
В чем разница между Iterator и Enumeration?

— Iterator появился в JDK 1.2 и реализует интерфейс Iterable, в то время как Enumeration существовал в более ранних версиях JDK и не реализует Iterable.

— Методы Iterator позволяют удалять элементы во время итерации, в то время как методы Enumeration не предоставляют такой возможности.

— Iterator является "fail-fast", то есть выбросит ConcurrentModificationException, если коллекция была изменена, а Enumeration не гарантирует такого поведения.

— Iterator поддерживает обобщенные типы, а Enumeration работает только с объектами типа Object.
#вопросы_с_собеседований
Double.compare()

Метод Double.compare() используется для сравнения двух значений типа double.

Он принимает два значения double и возвращает:

— отрицательное число, если первое значение меньше второго.
— ноль, если значения равны.
— положительное число, если первое значение больше второго.

В этом примере мы передаем Double.compare() как компаратор в метод sort() из класса Arrays.
Это позволяет корректно отсортировать массив с плавающей точкой по возрастанию.
#код
Перестаём бояться генерировать байт-код

Многие, возможно, думают, что работа с байт-кодом Java (будь то чтение или, тем более, генерация) — это какая-то особенная магия, доступная только продвинутым разработчикам с особенно крутым опытом. Но JVM устроена гораздо проще, чем CPU; она оперирует такими высокоуровневыми понятиями как классы, интерфейсы, методы, а не просто лопатит байты в памяти.

Читать статью
Вложенные классы

Вложенные классы (nested classes) — это классы, определенные внутри другого класса. В Java есть два типа вложенных классов:

— Статические вложенные классы (static nested classes) — объявляются с модификатором static. Представляют собой обычные статические члены внешнего класса.
— Внутренние классы (inner classes) — объявляются без модификатора static. Связаны с экземпляром внешнего класса и имеют доступ к его членам.

Вложенные классы удобны для логической группировки классов и обеспечения инкапсуляции.

Как видно из примера, статический вложенный класс создается так же, как и обычный статический класс. А для создания экземпляра внутреннего класса сначала нужно создать экземпляр внешнего класса.
#код
Очередной #дайджест по Java:

FizzBuzz и искусство фильтрации: Stream API и предикаты
Проблема FizzBuzz — это классическая задача, которая часто встречается на собеседованиях для программистов.

Используем Neovim в качестве IDE для Java
Если вдруг захотите попробовать что-то кроме IntelliJ.

Пишем plugin для IDEA, используя External System API, на примере простой build системы
Статья о технических деталях реализации плагина.

Создание и тестирование процессоров аннотаций (с кодогенерацией) для Kotlin
В разработке с использованием Kotlin (или Java) для создания классов по верхнеуровневому описанию часто используется маркировка аннотациями (например, для моделей таблиц баз данных, сетевых запросов или инъекции зависимостей) и подключение процессоров аннотаций, которые также могут генерировать код, доступный из основного проекта.
Сколько лет опыта по вашему должен иметь мидл?
#интерактив
Класс FileReader

FileReader — это класс, который позволяет считывать символьные данные из файла. Читает файл посимвольно в виде кодов UTF-16, а для работы принимает объект File или путь к файлу в конструктор.
Использует потоковый доступ для чтения данных.

Должен использоваться в try-with-resources блоке, чтобы корректно закрывать поток. Часто используется совместно с BufferedReader для удобства чтения по строкам.

Здесь мы открываем поток FileReader для чтения файла data.txt.
В цикле посимвольно считываем данные методом read() пока не достигнут конец файла.
#код
Имеет ли смысл объявлять метод private final?

Объявление метода с модификаторами private и final имеет смысл, когда вы хотите:

— Скрыть детали реализации метода от других классов.
— Зафиксировать определенное поведение метода и не дать его переопределить.
— Сделать метод доступным только для использования внутри данного класса.
#вопросы_с_собеседований