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

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

ServletRequest позволяет сервлету взаимодействовать с клиентом вне зависимости от деталей реализации или протокола запроса.

В этом примере из запроса получается параметр "name" с помощью метода getParameter(). Затем это значение используется для вывода приветствия в ответ клиенту.
#код
Что такое Executor?

Executor — это интерфейс, который позволяет запускать задачи асинхронно. Используется вместе с интерфейсами Callable и Future для асинхронного выполнения задач.

Он определяет единственный метод execute(), который принимает объект Runnable с задачей для выполнения.
Интерфейс позволяет отделить логику создания и запуска потоков от самих задач.

Потоки создаются заранее и хранятся в пуле, а задачи просто отправляются на выполнение через execute().
Это дает выигрыш в производительности, т. к. исключает накладные расходы на создание новых потоков.
#вопросы_с_собеседований
Ключевое слово var

Ключевое слово var используется для объявления переменных с неявным типом.

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

Как видно из примера, используя var не нужно явно указывать тип переменной. Компилятор сам определит его исходя из присваиваемого значения. Это упрощает код в некоторых случаях.
#код
💻 Создание многопоточного клиент-серверного приложения на Java

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

Смотреть на YouTube
ServletContext

ServletContext предоставляет сервлету доступ к контексту веб-приложения. Он содержит общую информацию о приложении и позволяет сервлетам взаимодействовать.
Доступ к ServletContext можно получить через метод getServletContext() класса ServletConfig.

Через ServletContext можно получить данные инициализационных параметров web.xml.
ServletContext позволяет сервлетам оставлять атрибуты, доступные всем сервлетам данного приложения.

Также с его помощью можно получить ресурсы приложения, например потоки ввода-вывода.
#код
Очередной #дайджест по Java:

✍️ Stone: знакомство с API
Полезный туториал.

✍️ Управление зависимостями в микросервисной архитектуре
Часто в микросервисной архитектуре возникают проблемы, связанные с обновлением версий библиотек или их подключением. Работая над каким-либо проектом в течение долгого времени можно столкнуться с тем, что разные микросервисы используют разные версии одной и той же библиотеки и ее обновление может затянуться из-за конфликтов.

✍️ Распределённые транзакции
На собеседованиях на позицию middle/senior разработчика часто задают вопросы по распределенным транзакциям в микросервисной архитектуре.

✍️ Java 21: новый подход к созданию строк
Java 21 предлагает много классных функциональностей, и одна из них  —  шаблоны строк (англ. String Templates). При том, что их целевое назначение не ограничивается только строковой интерполяцией, для Java-разработчиков они служат еще одним “правильным” способом конкатенации строк.
Что вы чаще всего гуглите по работе?
#интерактив
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
LongAdder

LongAdder — это класс из пакета java.util.concurrent, оптимизированный для высокопроизводительного параллельного суммирования long значений.

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

Преимущества:
— Высокая скорость за счет разделения на сегменты и отсутствия блокировок.
— Минимизация конфликтов между потоками при обновлении.
— Лучше масштабируется на большом кол-ве ядер.
#код
Можно ли синхронизировать доступ к строке?

Хотя строки неизменяемы, то есть их содержимое нельзя изменить после создания, они могут использоваться из разных потоков.
Чтобы избежать race condition, когда два потока одновременно читают/записывают одну строку, можно использовать синхронизацию.

Для этого есть несколько способов:
— Объявить методы класса, которые работают со строкой, как synchronized.
— Использовать блок synchronized при работе со строкой.
— Использовать какой-либо lock (например ReentrantLock) для синхронизации доступа к строке.
— Использовать классы из java.util.concurrent для работы со строками, например StringBuffer.
#вопросы_с_собеседований
Интерфейс Iterable

Iterable используется для представления коллекций, которые можно итерировать или пройти в цикле.

Он определяет метод iterator(), который возвращает объект Iterator.
Этот Iterator позволяет поочередно получать элементы коллекций, также его можно использовать в цикле while или for-each для последовательного перебора всех элементов коллекции.

Это позволяет абстрагироваться от конкретного типа коллекции. Мы можем работать с Iterable и Iterator, не завися от того список это, множество или очередь. Такой подход упрощает использование разных коллекций.
#код
Как сделать так, чтобы разработчики использовали Kotlin

Kotlin — упрощенная версия Java, разработанная компанией JetBrains. В основном используется в мобильной разработке.

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

Перейти к просмотру
Монитор с какой диагональю чаще всего используете на работе?
#интерактив
Метод PutAll()

Метод putAll() используется для копирования всех элементов одной хэш-таблицы или Map в другую. Он принимает в качестве аргумента другую Map или хэш-таблицу, и копирует все её пары ключ-значение в исходную коллекцию.
Метод putAll() не возвращает значения и не бросает исключений.

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

Также с помощью этого метода можно объединять данные из нескольких Map в одну целевую коллекцию.
#код
Очередной #дайджест по Java:

✍️ Где 15 минут пешком от дома до метро в Москве и как различать панельные дома…
В этой публикации подключили маршрутизацию и рассчитали пешеходные расстояния от входа в метрополитен до жилых зданий.

✍️ Что такое Java?
Полезное видео для новичков.

✍️ Рынок Java в 2023, требования к кандидатам
Разбор и анализ минимальных условий.

✍️ Есть ли жизнь после Java
Интервью с разработчиком. Про язык, зарплаты и навыки.
Ответьте на 3 вопроса, чтобы получить демо-доступ к курсу «Алгоритмы и структуры данных»

⚡️Получить демо, ответив на 3 вопроса – https://proglib.io/w/979a2896

В бесплатной части вас ждут:

1. Лекция «Производительность алгоритмов» от руководителя разработки Яндекс.Самокатов

2. Лекция «Итеративные сортировки и линейные сортировки» от аспирант департамента искусственного интеллекта ВШЭ

3. Практические задания после лекций

4. Ссылки на дополнительные материалы для самостоятельного изучения

Переходите и начинайте учиться уже сегодня!
💻 20 лучших ноутбуков для программиста в 2023 году

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

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