Библиотека джависта | 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
加入频道
💙 С днем любви!

В этот день проявить любовь поможет подарок, который действительно нужен.

🌿Курсы Proglib academy – это не только знания, топовые преподаватели из МГУ, спикеры Яндекса, Revolut и Тинькофф, но и возможность начать карьеру программиста на международном рынке.

Заходи на сайт, выбирай любой курс и дари его любимому человеку.

⚡️А по промокоду PA2024SALES15 ты получишь скидку 15% на все курсы до конца недели – https://proglib.io/w/8eaaf202
Please open Telegram to view this post
VIEW IN TELEGRAM
Интерфейс Delayed

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

Основные методы:
getDelay(TimeUnit unit) — возвращает оставшееся время задержки в указанных единицах измерения.
compareTo(Delayed o) — сравнивает текущий объект с переданным по оставшемуся времени задержки.

Этот интерфейс реализуется классами, которые должны храниться в очереди с задержкой, например в DelayQueue.
Обработка исключений с помощью Try-With-Resources

Try-With-Resources - конструкция языка, введенная в Java 7, которая облегчает работу с ресурсами такими как файлы или сокеты и сокращает количество кода, необходимого для обработки исключений.

Вот пример использования Try-With-Resources для чтения содержимого файла:

try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}


💻 В этом примере открывается BufferedReader внутри блока try с помощью конструктора FileReader. Затем можно безопасно читать файл внутри этого блока без необходимости явно закрывать ресурс.

После завершения блока try автоматически вызывается метод close() объекта reader, который закрывает файл и освобождает связанные с ним ресурсы. Если возникнет исключение в блоке try, его можно будет обработать в блоке catch после завершения работы с ресурсом.
Please open Telegram to view this post
VIEW IN TELEGRAM
📚Clean Code Principles and Patterns: A Software Practitioner’s Handbook (2023)
✍️Автор: Petri Silén
📃Страниц: 489

Это одно из самых полных руководств для разработчиков программного обеспечения, которое поможет им писать чистый код каждый день. В книге собраны принципы и паттерны, которые помогут разработчикам, от новичков и юниоров до пенсионеров и экспертов, писать более чистый код. Принципы и паттерны, представленные в книге, сопровождаются реалистичными, но понятными примерами, чтобы помочь читателю лучше понять их. Примеры написаны на языках Java, JavaScript/TypeScript и C++. Большинство примеров напрямую применимы и к другим языкам программирования. Читатель должен обладать базовыми знаниями одного из объектно-ориентированных языков программирования, чтобы получить полную пользу от этой книги.

Скачать книгу
#вопросы_с_собеседований

Можно ли так реализовать метод equals?

Нельзя, так как метод hashCode() не гарантирует уникальность значения для каждого объекта.

Но для сравнения экземпляров объекта Object такой метод допустим, так как там хешкод вычисляется на основании использовании адреса объекта в памяти, поэтому он уникален для разных объектов.
💸 Рост или падение? Изменение зарплат в IT за 2023 год

Чтобы разобраться в этом вопросе, «Библиотека программиста» решила провести опрос среди читателей издания. Мы хотим понять, выросли ли ваши зарплаты в 2023 году и если да, то на сколько процентов. Или может быть наоборот — ваши доходы снизились на фоне кризисных явлений в экономике?

Примите участие в нашем коротком опросе и поделитесь своим мнением! Вместе мы проанализируем текущую ситуацию на рынке труда в IT-сфере и поймем, что ждёт эту отрасль дальше. Ждём ваших ответов!

Опрос займёт у вас примерно 4 минуты.

👉 Ссылка на опрос
⛩️ 6 способов нестандартно войти в Айти

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

🛤 Роадмапы
👨‍💻 Знакомые айтишники
💬 Комментарии
🙌 Менторинг
🕹 Игры
⌨️ Стажировки
🤔 Остаться или уйти? Оптимальный срок работы на одном месте

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

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

Должен ли современный IT-специалист менять работу чаще, чем раз в 5 лет? Или лучше наращивать экспертизу в рамках одной компании? А может дело совсем не в сроках, а в качестве задач и развитии карьеры?

👉 Расскажите о своём опыте в нашем новом опросе 👈
Задача с LeetCode (Max Consecutive Ones)

Дан массив, состоящий только из ноликов и единиц. Необходимо вычислить максимальную длину подмассива, в котором присутствуют только единицы (1, 1, 0, 1, 1, 1 | Длина — 3).

⏺️ Переменные count и max равны 0. count используется для подсчета текущего количества последовательных единиц, а max — для хранения максимального значения.

⏺️ Внутри цикла for проверяется, является ли текущий элемент массива nums[i] равным 1. Если да, то увеличиваем значение count на 1. Если нет, то count присваивается значение 0, так как последовательность прерывается.

⏺️ Функция Math.max(count, max) находит максимальное значение между count и max. Значение count обновляется на каждой итерации цикла, поэтому теперь max будет содержать максимальное количество последовательных единиц на текущей итерации.
⚡️IT-конференция про облачные технологии

Когда все случится: в Москве 21 марта в 10:00 в офлайн формате.

Что будет?

🔹 3 тематических трека про новую облачную платформу, прорывные технологии и клиентские инсайты
🔹 20 сессий с экспертами из мира облачных технологий
Live-демонстрации облачных платформ и сервисов
🔹 Нетворкинг с разработчиками и идеологами продуктов Cloud.ru
figure

Ключевые темы:

👉 Облако и бизнес: реальные кейсы российских компаний вместе с Cloud.ru
👉 Мир open source: последние разработки
👉 Демонстрация новой облачной платформы
👉 Обсуждаем SDS, SDN, Serverless и не только

Регистрация тут

#мероприятие
☕️📦 10 Java-библиотек, которые изменят твой код навсегда

Из этой статьи вы узнаете о ключевых возможностях 10 популярных библиотек для Java: работа с коллекциями, строками, JSON, логами, датами и временем и многое другое.

Читать статью
Очередной #дайджест для джавистов

Задачи от Tinkoff для Junior Java developers — тренировка для начинающих разработчиков на знание Java core

Java в контейнере — особенности эксплуатации

Spring Boot — реактивный асинхронный неблокирующий REST vs традиционный синхронный блокирующий

Декоратор. Шаблоны проектирования в деталях — автор рассказывает о популярных шаблонах проектирования с примерами кода на языке программирования Java

Введение в коллекции Java — в статье не будут сильно углубляться в детали каждой коллекции в отдельности, ведь чтобы начать ими пользоваться, достаточно хотя бы на базовом уровне понять, что это такое и с чем это «едят»
DatagramPacket

DatagramPacket — это класс в Java, который представляет собой пакет датаграмм. Датаграммы используются для реализации бессоединительной службы доставки пакетов. Это означает, что каждый пакет отправляется независимо от других пакетов, и нет гарантии, что они будут доставлены в том же порядке, в котором были отправлены.
🖐️🖐️ Infra Meetup

Митап состоится 29 февраля 18:00 в Санкт-Петербурге.

Будет три доклада об инструментах надежности в Такси, платформе биллинга Екома и Райдтеха и возможностях фреймворка userver для поддержания отказоустойчивости.

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

Роль фреймворка в отказоустойчивой архитектуре
При разработке сервисов Яндекса важна отказоустойчивость, ведь любой простой — деньги для бизнеса. В нашем open-source C++ фреймворке userver есть специальные фишки и инструменты для поддержания отказоустойчивости.

Надежность платформы биллинга
Спикер выступит с рассказом о платформе биллинга Екома и Райдтеха в Яндексе, обслуживающей многомиллиардные финансовые потоки. Объяснит, из чего состоит платформа, какие задачи решает и как команды обеспечивают ее надежность. Опишет комбинации архитектурных, продуктовых и процессных подходов к проблеме надежности биллинга.

Регистрация тут
CopyOnWriteArrayList

CopyOnWriteArrayList — это реализация интерфейса List, оптимизированная для работы в многопоточном окружении.

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

CopyOnWriteArrayList полезен в ситуациях, когда чтение данных происходит гораздо чаще, чем изменение. Например, при реализации общего кэша в многопоточном приложении.