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
👍12🔥5🥰2👏1🎉1
👾 JOOQ против Hibernate: что выбрать для вашего проекта?
JOOQ — это «замена» Hibernate? На первый взгляд кажется, что да: compile-time проверки, прозрачные SQL-запросы и отсутствие магии аннотаций делают его заманчивым. Но так ли всё просто?
Эта статья раскрывает, почему JOOQ и Hibernate решают совершенно разные задачи и как их можно использовать вместе. Узнайте:
▪️ В чём сила JOOQ как библиотеки.
▪️ Почему Hibernate — это больше, чем инструмент ORM.
▪️ Какие подходы помогут избежать хаоса в коде.
🔗 Читайте на Хабре
JOOQ — это «замена» Hibernate? На первый взгляд кажется, что да: compile-time проверки, прозрачные SQL-запросы и отсутствие магии аннотаций делают его заманчивым. Но так ли всё просто?
Эта статья раскрывает, почему JOOQ и Hibernate решают совершенно разные задачи и как их можно использовать вместе. Узнайте:
▪️ В чём сила JOOQ как библиотеки.
▪️ Почему Hibernate — это больше, чем инструмент ORM.
▪️ Какие подходы помогут избежать хаоса в коде.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥4❤2❤🔥1💯1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
👍2
В 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
🔥11👍7👏3🎉1
Мы ищем участников для интервью на тему «Обучение навыкам в IT»!
Кто нам нужен?
🔹 Вы недавно (в последние 6 месяцев) проходили курсы по техническим специальностям или математике.
🔹 Вы разработчик, стремящийся освоить Data Science или Machine Learning.
Что вас ждет?
Участие в интервью по Zoom, которое займет не больше 45 минут.
1500 рублей на карту за ваше время.
Уникальный шанс пообщаться с нашим CEO.
Как откликнуться?
Please open Telegram to view this post
VIEW IN TELEGRAM
👏8👍3🔥2😁2🌚1
Forwarded from Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
👔💼 Как ответить на собеседовании, почему вы уволились с прошлого места работы: 9 вариантов ответа
А также примеры того, как говорить точно не надо 🌚
👉Читать
А также примеры того, как говорить точно не надо 🌚
👉Читать
👍10🔥2❤1
JMH — это фреймворк от команды разработчиков JVM (Oracle), который помогает создавать и запускать микробенчмарки для измерения производительности Java-кода. Если вы хотите точно понять, насколько быстро работает ваш код (например, сравнить эффективность разных алгоритмов или подходов), 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-тесты.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥6🎉3❤2
Forwarded from Библиотека тестировщика | QA, тестирование, quality assurance, manual testing, autotesting, ручное тестирование, автотесты
Что внутри:
• 9 уровней, где сложность растёт по экспоненте.
• Полезное: отличная возможность поднять скилл SQL.
• Для новичков: на платформе есть 33 урока, чтобы подтянуть теорию перед игрой.
Готовы к челленджу?
#тренажер
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9😁4🔥3
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
❤3👍1🔥1
Представьте, вы попали на собеседование мечты. Всё идёт гладко, но пара неудачных фраз могут свести на нет все ваши старания. Например, если вы слишком скромны или, наоборот, перегибаете с самоуверенностью, это может вызвать недоверие. Или фраза, которая должна показать вашу гибкость, внезапно делает акцент на недостатке опыта. Знакомо?
Есть проверенные подходы, которые помогут избежать таких ситуаций, выстроить грамотное общение и оставить положительное впечатление. Готовы узнать больше? 🌟
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🎉4😁3🔥2
🔥 — Maven
🎉 — Gradle
👍 — Использую оба, в зависимости от проекта
👾 — Другой инструмент, напишу в комментах
😁 — Я ЗОЖ, у меня нет зависимостей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥158🎉58👍36😁29👾2
Forwarded from Java jobs — вакансии для java-разработчиков
#дайджест #Javadevjob
Вакансии Java разработчиков уровня Junior
▪️ Java разработчик
Офис (Саранск), Инфомаксимум
Подробнее
▪️ Java разработчик
Гибрид (Москва), ВБЦ
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Java разработчик
Гибрид (Ижевск) / Удалёнка, Ardecs
Подробнее
▪️ Java разработчик
Гибрид (Москва) / Удалёнка, FINTECH SERVICE
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Java разработчик
Удалёнка, Бэнкс Софт Системс
Подробнее
▪️ Java разработчик
Удалёнка / Гибрид (Москва), S8.Capital
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии Java разработчиков уровня Junior
▪️ Java разработчик
Офис (Саранск), Инфомаксимум
Подробнее
▪️ Java разработчик
Гибрид (Москва), ВБЦ
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Java разработчик
Гибрид (Ижевск) / Удалёнка, Ardecs
Подробнее
▪️ Java разработчик
Гибрид (Москва) / Удалёнка, FINTECH SERVICE
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Java разработчик
Удалёнка, Бэнкс Софт Системс
Подробнее
▪️ Java разработчик
Удалёнка / Гибрид (Москва), S8.Capital
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
saransk.hh.ru
Вакансия Java Junior Developer в Саранске, работа в компании Инфомаксимум (вакансия в архиве c 6 апреля 2025)
Зарплата: не указана. Саранск. Требуемый опыт: не требуется. Полная. Дата публикации: 07.03.2025.
❤3👍2🔥2
— NLB (Network Load Balancer) – распределяет трафик на уровне IP. Он работает на более низком уровне и не анализирует HTTP-запросы.
— ALB (Application Load Balancer) – маршрутизирует запросы на основе HTTP-заголовков или URL. ALB предлагает более сложные правила маршрутизации. Выбор между NLB и ALB зависит от ваших потребностей. Для простых сервисов в небольших масштабах одного балансировщика нагрузки может быть достаточно.
— API Gateway – работает на уровне приложений и берет на себя задачи, такие как аутентификация, ограничение скорости запросов, кэширование и другие. Его функции отличаются от Load Balancer.
Схема иллюстрирует детали работы этих компонентов. Чаще всего Load Balancer и API Gateway используются вместе, чтобы создать масштабируемую и безопасную архитектуру для современных веб-приложений.
🔹 Два подхода к архитектуре:
— Опция A: ALB + сервисы
ALB распределяет запросы между различными сервисами. Ограничение запросов, аутентификация и другие функции реализуются на уровне сервисов. Это более гибкий подход, но требует больше работы при разработке.
— Опция B: API Gateway + сервисы
API Gateway берет на себя функции аутентификации, ограничения запросов, кэширования и других задач. Это упрощает разработку сервисов, но уменьшает гибкость по сравнению с первым вариантом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥2🎉2
Если вы активно используете Stream API, стоит посмотреть на библиотеку JOOλ (jOOL). Она расширяет стандартные возможности потоков, добавляя удобные методы для более гибкой обработки данных.
🔹 Что умеет:
— Операции с парами и кортежами
— Группировка с несколькими уровнями (groupBy c несколькими ключами).
— Трансформации коллекций через удобные методы (например, zip, window, cartesianProduct).
— Функции SQL-подобного стиля, позволяющие писать более декларативный и читабельный код.
JOOλ упрощает работу с потоками и делает код более лаконичным и читаемым.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5🎉3
Друзья, нас часто спрашивают про публикацию материалов о личном опыте и знаниях в IT. Пора это систематизировать!
Если у вас есть история о том, как вы:
— выросли в профессии
— освоили новые технологии
— сделали крутой карьерный скачок
— эпично лажанулись
— создали интересные проекты
Требования простые:
— Реальный опыт
— Конкретные шаги
— От 5000 знаков
— Ссылка на Google Docs
🔥 Лучшие истории опубликуем на сайте и в наших соцсетях с общим охватом 1млн+ человек.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2😁2
Forwarded from Библиотека задач по Java | тесты, код, задания
Какого инструмента для работы с БД не существует?
Anonymous Quiz
2%
Hibernate
52%
SpringDB
19%
Jooq
22%
MyBatis
5%
Spring Data JPA
😁25👍2🔥2
🔥 — никогда, требования всегда стабильные
🎉 — редко, бывает нужно немного доработать
👍 — часто, бывает перерабатываю значительные части
🌚 — требования меняются быстрее, чем успеваю писать код
Please open Telegram to view this post
VIEW IN TELEGRAM
👍45🎉34🌚30🔥2👏2