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

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

Для обратной связи: @proglibrary_feeedback_bot


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

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
🧑🏻‍🏫 Менторство в IT: как стать айтишником, найти работу мечты и облегчить себе жизнь

Как вкатиться в IT и найти работу с помощью ментора? Чем могут помочь наставники и с какими запросами к ним приходят? А главное — где найти хорошего специалиста?

👉 Рассказываем обо всё в новой статье 👈
🔗 Зеркало
Очередной #дайджест для джавистов

⬆️ Перформанс: что в имени тебе моём — общие принципы, тенденции и соотношения; жизненный цикл проекта и экономика оптимизаций

⬆️ Java подкаст — о производительности IDE, Котлин плагине и новом компиляторе К2

⬆️ Что каждый должен знать о компиляторе Kotlin K2 — про ускорение разработки новых языковых функций, унификация всех платформ, поддерживаемых Kotlin, повышение производительности и предоставление API для расширений компилятора

⬆️ JVM Anatomy Quarks — серия статей о перформансе JVM

⬆️ Анонс IntelliJ IDEA’s K2 Kotlin — сборка IntelliJ IDEA 2024.1 EAP 1 теперь доступна для скачивания, что позволяет получить представление о предстоящих интересных обновлениях
#вопросы_с_собеседования

Назовите основные свойства транзакции.

Атомарность (atomicity) гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.

Согласованность (consistency). Транзакция, достигающая своего нормального завершения и, тем самым, фиксирующая свои результаты, сохраняет согласованность базы данных.

Изолированность (isolation). Во время выполнения транзакции параллельные транзакции не должны оказывать влияние на её результат.

Долговечность (durability). Независимо от проблем на нижних уровнях (к примеру, обесточивание системы или сбои в оборудовании) изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу.
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

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

Многие IT-специалисты приходят в эту сферу нестандартным путем — кто-то начинал как самоучка, а кто-то стал программистом случайно. Был ли у вас необычный старт карьеры в IT?

Расскажите нам свою историю! Ваш опыт может вдохновить тех, кто мечтает о переменах, но пока не решается начать.

❤️ С нетерпением ждем ваших комментариев!
💙 С днем любви!

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

🌿Курсы 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, логами, датами и временем и многое другое.

Читать статью