Библиотека джависта | 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
Вакансии «Библиотеки программиста» — ждем вас в команде!

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

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

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

Ждем ваших откликов 👾