Библиотека джависта | 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
加入频道
ℹ️ @Subselect в Hibernate: разберись с хитростями

Ищете, как оптимизировать работу с данными в Hibernate? Эта статья раскрывает все о мощной аннотации @Subselect — её преимуществах, недостатках и альтернативах. Узнайте, как маппить данные на SQL-запросы и использовать их эффективно.

▪️ Прочитайте, если интересно:

— Понять, как работает маппинг сущностей без таблиц.
— Узнать про неизменяемые сущности.
— Исследовать реальные примеры использования.

🔗 Читать на Хабре
Please open Telegram to view this post
VIEW IN TELEGRAM
💬 Сколько времени занимают созвоны в течении рабочего дня?

🔥 — пишу код, а не созваниваюсь
🎉 — около часа
👍 — от часа до двух
👾 — от двух до трёх часов
🌚 — весь день созвоны, не успеваю кодить
Please open Telegram to view this post
VIEW IN TELEGRAM
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования

🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion

#️⃣C#

Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel

☁️DevOps

Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования

🐘PHP

Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие каналы

Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *

* Организация Meta запрещена на территории РФ
#дайджест #Javadevjob

Вакансии Java разработчиков уровня Junior

▪️ Младший Java-разработчик
Офис (Новосибирск), Интабия
Подробнее

▪️ Junior Java-разработчик
Офис (Москва), Gridnine
Подробнее

Вакансии Java разработчиков уровня Middle

▪️ Java-разработчик (middle)
Гибрид (Санкт-Петербург, Томск), SL Soft
Подробнее

▪️ Middle Java Developer
Удалёнка / Офис (Москва), Адвантум
Подробнее

Вакансии Java разработчиков уровня Senior

▪️ Senior Java Developer. Custom Solutions
Удалёнка / Офис (Тольятти), Haulmont
Подробнее

▪️ Ведущий Java разработчик
Гибрид (Москва) / Удалёнка (РФ), 1С:Предприятие
Подробнее

Понравились вакансии?
❤️ — да
🤔 — нет
Что такое MVP?

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

Ключевые аспекты MVP:

— MVP содержит только те функции, которые являются критически важными для решения основной проблемы пользователя. Остальные функции откладываются на более поздние этапы.

— MVP создаётся для тестирования рыночного спроса или реакции пользователей на продукт с минимальными затратами времени и ресурсов.

— После выпуска MVP собираются отзывы от пользователей, чтобы понять, в правильном ли направлении развивается продукт, и внести изменения.

Важно: MVP — это не просто "сырой" продукт, он должен решать основную задачу, при этом быть полезным и функциональным.
Please open Telegram to view this post
VIEW IN TELEGRAM
📊 Как работает ConcurrentSkipListSet под капотом?

ConcurrentSkipListSet — это потокобезопасная и отсортированная реализация интерфейса NavigableSet. Она построена на основе ConcurrentSkipListMap, что позволяет ей быть не только упорядоченной, но и эффективной для параллельного доступа. В основе её работы лежит структура данных skip list (список с пропусками).

Skip list — это многослойная структура данных, состоящая из нескольких уровней связных списков. На нижнем уровне содержатся все элементы в отсортированном порядке, а верхние уровни хранят лишь часть элементов для ускорения операций поиска. Благодаря этому достигается логарифмическая сложность операций add, remove и contains — O(log n).

Пример структуры:

lvl 3: A ------- H
lvl 2: A --- D -- H
lvl 1: A - B - D - F - H - J


💡 Основные механизмы:

🔹 Skip List: Многослойная структура, где верхние уровни позволяют быстро "перепрыгивать" через диапазоны элементов. Это минимизирует количество переходов по связным спискам.
🔹 Под капотом ConcurrentSkipListSet использует ConcurrentSkipListMap, где ключи — это элементы множества, а значения — фиктивные объекты.
🔹 Потокобезопасность достигается благодаря минимальному блокированию и использованию атомарных операций (CAS — Compare-And-Swap).
🔹 Элементы всегда упорядочены в соответствии с их натуральным порядком или компаратором, переданным в конструктор.

⚠️ Особенности:

▪️ Эффективен для операций чтения (contains, iterators), так как они выполняются без блокировок.
▪️ Операции модификации (add, remove) потокобезопасны, но слегка дороже из-за использования CAS.
▪️ Поддерживает сортировку элементов в натуральном порядке или порядке, определённом компаратором.
▪️ Высокая производительность для сценариев с преобладанием чтений и умеренным количеством обновлений.

🚀 Когда использовать ConcurrentSkipListSet?

- Если нужен потокобезопасный доступ к отсортированному множеству.
- При необходимости частого чтения упорядоченных данных (например, для диапазонов).
- Для сценариев с конкурентным доступом, где важна производительность операций чтения.

🔗 Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
👾 JOOQ против Hibernate: что выбрать для вашего проекта?

JOOQ — это «замена» Hibernate? На первый взгляд кажется, что да: compile-time проверки, прозрачные SQL-запросы и отсутствие магии аннотаций делают его заманчивым. Но так ли всё просто?

Эта статья раскрывает, почему JOOQ и Hibernate решают совершенно разные задачи и как их можно использовать вместе. Узнайте:

▪️ В чём сила JOOQ как библиотеки.
▪️ Почему Hibernate — это больше, чем инструмент ORM.
▪️ Какие подходы помогут избежать хаоса в коде.

🔗 Читайте на Хабре
Please open Telegram to view this post
VIEW IN TELEGRAM
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

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

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

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

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
🔼 Java 2024: Новые горизонты и неожиданные лидеры

В 2024 году экосистема Java продемонстрировала значительные изменения, которые отразили в своем отчёте InfoQ.
Основные тенденции:

🔹 Адаптация новых версий Java: Согласно данным New Relic, Java 17 стала наиболее используемой версией, однако её доля составляет лишь 35%, с близкими показателями у Java 11 (33%) и Java 8 (29%). Интересно, что Java 21, выпущенная в 2024 году, достигла 1,4% использования, что является самым быстрым уровнем адаптации среди LTS-версий после Java 8.

🔹 Переход к OpenJDK: Доля Oracle JDK продолжает снижаться, уступая место дистрибутивам OpenJDK, таким как Eclipse Adoptium и Amazon Corretto. Хотя Oracle остаётся лидером, его преимущество сократилось до нескольких процентов.

🔹 Использование сборщиков мусора: G1 остаётся наиболее популярным сборщиком мусора, используемым более чем в 70% случаев, что обусловлено его статусом сборщика по умолчанию в версиях Java 9 и выше. Однако в однопоточных контейнерах G1 заменяется на Serial, что может приводить к переоценке его использования.

🔹 Размеры heap-памяти: Более 30% JVM используют heap размером до 1 ГБ, а ещё 27% — от 1 до 2 ГБ, отражая тенденцию к микросервисной архитектуре с меньшими объёмами памяти.

Для более детального ознакомления с этими и другими трендами рекомендуем прочитать полный отчёт InfoQ.
Please open Telegram to view this post
VIEW IN TELEGRAM
🎙 Привет, джависты!

Мы ищем участников для интервью на тему «Обучение навыкам в IT»!

Кто нам нужен?
🔹 Вы недавно (в последние 6 месяцев) проходили курсы по техническим специальностям или математике.
🔹 Вы разработчик, стремящийся освоить Data Science или Machine Learning.

Что вас ждет?
Участие в интервью по Zoom, которое займет не больше 45 минут.
1500 рублей на карту за ваше время.💵
Уникальный шанс пообщаться с нашим CEO.

Как откликнуться?
📌 Напишите в личные сообщения @artem_ceo
Please open Telegram to view this post
VIEW IN TELEGRAM
👔💼 Как ответить на собеседовании, почему вы уволились с прошлого места работы: 9 вариантов ответа

А также примеры того, как говорить точно не надо 🌚

👉Читать
JMH: интересный инструмент для замеров скорости кода

JMH — это фреймворк от команды разработчиков JVM (Oracle), который помогает создавать и запускать микробенчмарки для измерения производительности Java-кода. Если вы хотите точно понять, насколько быстро работает ваш код (например, сравнить эффективность разных алгоритмов или подходов), JMH — ваш незаменимый помощник.

⚙️ Основные возможности JMH:

— Точные измерения:
JMH учитывает влияние JIT-компиляции, прогрева JVM и других факторов, которые могут искажать результаты.

— Простота использования:
Написание бенчмарков интуитивно, и вы сразу видите, что влияет на производительность.

— Гибкость настройки:
Вы можете задавать параметры для тестов, такие как число итераций, потоков, warm-up период и другие.

💡 Как начать?

— Добавьте зависимость JMH в ваш проект:
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>1.38</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>1.38</version>
</dependency>

или
implementation 'org.openjdk.jmh:jmh-core:1.38'
annotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.38'


— Создайте бенчмарк-класс:
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@State(Scope.Thread)
public class MyBenchmark {

@Benchmark
public int testMethod() {
return calculate(1000);
}

private int calculate(int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += i;
}
return sum;
}
}


— Запустите тесты:
Используйте mvn package или gradle build, чтобы собрать проект, и запустите JMH-тесты.

💬 Использовали JMH раньше? Делитесь своим опытом и результатами.
Please open Telegram to view this post
VIEW IN TELEGRAM
🦑 SQL-кальмар: Кто окажется мастером запросов?

Что внутри:
9 уровней, где сложность растёт по экспоненте.
• Полезное: отличная возможность поднять скилл SQL.
• Для новичков: на платформе есть 33 урока, чтобы подтянуть теорию перед игрой.

Готовы к челленджу?
🔗 SQL Squid Game

#тренажер
Please open Telegram to view this post
VIEW IN TELEGRAM
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
💬 ТОП-8 фраз, которые испортят впечатление о вас на собеседовании

Представьте, вы попали на собеседование мечты. Всё идёт гладко, но пара неудачных фраз могут свести на нет все ваши старания. Например, если вы слишком скромны или, наоборот, перегибаете с самоуверенностью, это может вызвать недоверие. Или фраза, которая должна показать вашу гибкость, внезапно делает акцент на недостатке опыта. Знакомо?

Есть проверенные подходы, которые помогут избежать таких ситуаций, выстроить грамотное общение и оставить положительное впечатление. Готовы узнать больше? 🌟

🔗 Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM