Java библиотека @javalib Channel on Telegram

Java библиотека

@javalib


Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cEzQ8Q

Мы на бирже: telega.in/channels/javalib/card?r=lcDuijdm

Сообщество VK https://vk.com/javatutorial

Java библиотека (Russian)

Добро пожаловать на канал "Java библиотека"! Если вы являетесь Java программистом или просто увлечены этим языком программирования, то вы попали по адресу. Здесь вы найдете все необходимое для обогащения своих знаний - книги, статьи, мемы и многое другое! Подписывайтесь, чтобы быть в курсе последних новостей и трендов в мире Java. У нас также есть сообщество ВКонтакте, где вы можете общаться с единомышленниками и делиться опытом. Кроме того, мы открыты для сотрудничества и рекламы, так что не стесняйтесь обращаться к администраторам канала. Присоединяйтесь к нам и расширяйте свои знания в области Java программирования!

Java библиотека

20 Nov, 11:10


⁉️ Хотите понять, как работают потоки ввода/вывода в Java? Готовы создать свой первый сетевой чат?

Приглашаем на бесплатный вебинар 4 декабря в 20:00 мск., который пройдет в рамках курса «Java-разработчик».
Мы покажем, как с нуля создать консольный сетевой чат на Java, освоить работу с сетью и разобраться в потоках ввода/вывода.

Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.

Получите практический опыт работы с java. io, разберитесь, как работает сеть, и начните свой путь в мир профессиональной разработки на Java!

👉 Регистрируйтесь на вебинар прямо сейчас: https://vk.cc/cF0waA

🎁 Только в "Черную пятницу", скидки на курс до 15%! Подробности у менеджеров.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

20 Nov, 10:05


⚡️ Как избавиться от задержек и сделать систему быстрее

1️⃣ Кэширование

Временное хранение часто используемых данных в памяти для сокращения времени доступа.

▪️ Чем полезно:
- Получение данных из кэша (например, Redis, Memcached) гораздо быстрее, чем запросы к базе данных.
- Кэширование статических ресурсов (изображения, CSS, JS) снижает необходимость многократного запроса их с исходного сервера.

2️⃣ Распределение нагрузки

Распределение входящего сетевого трафика между несколькими серверами для предотвращения перегрузки одного сервера.

▪️ Чем полезно:
- Балансировка нагрузки предотвращает перегрузку одного сервера, что может замедлить отклик.
- Обеспечивает отказоустойчивость, гарантируя обработку запросов даже при выходе некоторых серверов из строя.

3️⃣ Асинхронная обработка

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

▪️ Чем полезно:
- Пользователям не нужно ждать завершения длительных задач (например, отправки электронной почты или обработки изображений).

4️⃣ Разделение данных (шардирование)

Разделение базы данных на более мелкие части (шарды), которые можно распределить между несколькими серверами.

▪️ Чем полезно:
- Запросы могут выполняться параллельно на нескольких шардах, сокращая время получения данных.
- Распределение нагрузки предотвращает перегрузку одного экземпляра базы данных.

5️⃣ Сети доставки контента (CDA)

Распределенные сети серверов, которые доставляют веб-контент на основе географического расположения пользователя.

▪️ Чем полезно:
- Контент предоставляется с серверов, находящихся ближе к пользователю, сокращая физическое расстояние, которое данные должны преодолеть.
- Кэширует статический и динамический контент для ускорения его доставки.

6️⃣ Оптимизация баз данных

Оптимизация работы баз данных через индексацию, оптимизацию запросов и правильное проектирование схемы.

▪️ Чем полезно:
- Ускоряет получение данных, позволяя базе данных находить записи без сканирования всех таблиц.

7️⃣ Минимизация сетевых переходов

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

▪️ Чем полезно:
- Каждый сетевой переход добавляет задержку; их минимизация ускоряет передачу данных.

8️⃣ Параллельная и конкурентная обработка

Разделение задач на несколько параллельно выполняемых потоков или процессов для увеличения скорости выполнения операций.

▪️ Чем полезно:
- Параллельное выполнение задач позволяет обрабатывать данные быстрее за счёт разделения работы на несколько потоков.
- Более эффективное использование ресурсов процессора, что снижает задержки при выполнении сложных операций.

9️⃣ Предварительная и предсказательная загрузка

Предугадывание будущих запросов данных и их предварительная загрузка.

▪️ Чем полезно:
- Данные уже доступны, когда они запрашиваются, устраняя задержки при получении.
- Особенно эффективно в приложениях с предсказуемыми шаблонами доступа.

@javalib #java

Java библиотека

20 Nov, 07:00


Уже сегодня собеседование на Middle Java с разработчиком из МТС

20 ноября (уже сегодня!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.

Как это будет:
1. Мария Ядерцова ведущий Java-разработчик в МТС Диджитал и ex. Сбербанк-Технологии будет задавать реальные вопросы и задачи разработчику-добровольцу
2. Мария будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
3. В конце можно будет задать любой вопрос Марии

Что узнаешь на прямом эфире от ШОРТКАТ:
• Чего ждут от кандидатов на Middle позиции в Java-разработке
• Какие вопросы задают на интервью и зачем
• Как подготовиться к собесу, чтобы получить оффер

Это бесплатно? Бесплатно

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot

Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqvcXYwg

Java библиотека

20 Nov, 04:35


Sorted set

SortedSet — это интерфейс в Java Collection Framework, который предоставляет упорядочение элементов в множестве. Элементы упорядочиваются с помощью их естественного порядка или с помощью компаратора, который обычно предоставляется при создании отсортированного множества.

SortedSet имеет несколько дополнительных операций, которые позволяют использовать упорядочение элементов:
— first() и last() возвращают первый и последний элементы в множестве соответственно.
— headSet(), tailSet() и subSet() возвращают подмножества элементов, которые находятся до, после или между заданными элементами соответственно.

В этом примере мы создаем TreeSet (класс, который реализует SortedSet) и добавляем в него несколько строк. Поскольку строки реализуют интерфейс Comparable, они упорядочиваются в алфавитном порядке. Затем мы используем различные методы SortedSet для получения первого и последнего элементов, а также подмножеств элементов.


@javalib #java

Java библиотека

19 Nov, 16:00


Эффективная разработка на Spring Boot без ограничений.

Пока зарубежные компании отзывают лицензии у пользователей РФ, Amplicode продолжает помогать максимально удобно работать со Spring Boot, JPA, Docker, Kafka, Liquibase, MapStruct и т.д.

Amplicode можно установить как плагин в IntelliJ IDEA Community и Ultimate, а также в Giga IDE.

Что умеет Amplicode?

Легкая навигация по проекту  
Создание объектов сразу в терминах фреймворка: контроллеры, репозитории, сервисы, сущности, события, DTO, мапперы и т.д.
Палитра и инспектор, позволяющие видеть опции, доступные разработчику в текущем контексте
Умные инжекции, подсказки и исправление ошибок
 и многое другое!

А самое главное, Amplicode доступен бесплатно и без региональных ограничений!

Познакомьтесь со всеми возможностями Amplicode
Читайте наш гайд: «Как превратить IntelliJ IDEA Community Edition в Ultimate за 3 простых шага»

Реклама. ООО "ХОУЛМОНТ". ИНН 6316134393.

Java библиотека

19 Nov, 14:45


Абстракция в Java

Абстракция — это способность выделять существенные характеристики объекта и упускать несущественные.
Абстракция позволяет сосредоточиться на важных свойствах и поведении объекта, скрыв детали реализации.

В Java абстракция реализуется с помощью абстрактных классов и интерфейсов.

Абстрактный класс содержит абстрактные методы без реализации. Подклассы обязаны реализовать эти методы.
Интерфейс задает «контракт», описывая поведение классов без деталей реализации. Классы реализуют интерфейс.

Реализация абстракции требует тщательного анализа предметной области и выделения общих свойств объектов.


@javalib #java

Java библиотека

19 Nov, 11:01


👩‍💻 Приглашаем вас принять участие в открытом уроке, который посвящён теме «Интернационализация и локализация в приложениях Spring». Вы узнаете, как эффективно реализовать процесс локализации в Spring-приложениях.

Мы рассмотрим работу с классом Locale, использование MessageSource в Spring Boot и без него, способы хранения и смены локали в веб-приложениях, а также локализацию в шаблонах Thymeleaf и сообщений Bean Validation.

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

🗓 25 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework» от Otus.

Программа вебинара:
✔️ Основы локализации в Spring.
✔️ Инициализация и конфигурация MessageSource.
✔️ Управление локалью в веб-приложениях.
✔️ Практические аспекты локализации.

Этот урок будет полезен Java-разработчикам с опытом 1–3 года, а также Kotlin-разработчикам.

🔗 Ссылка на регистрацию: https://vk.cc/cEWTaV

🎁 Только в "Черную пятницу", скидки на курс до 15%! Подробности у менеджеров.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

19 Nov, 10:10


Что выведет данный код?

Java библиотека

19 Nov, 07:01


➡️ Тесты не будут падать, если их не запускать

Знакомо? Тогда ждём вас на вебинаре «Автоматизация процессов деплоя и интеграция автотестов» от учебного центра Слёрм.

🔹Рассмотрим специфику CI/CD пайплайнов для сборки и деплоя в Kubernetes
🔹Разберёмся в тестировании собираемого артефакта перед размещением его в registry
🔹Расскажем, как автоматически задеплоить в кластер уже собранный и оттестированный артефакт
🔹Реализуем полноценный CI/CD пайплайн со сборной тестированием и деплоем на примере Gitlab-CI

Эксперт встречи: Денис Лавров, Архитектор MTS AI

Когда: 27 ноября в 18:00 мск
Занять место на вебинаре ➡️ через бота

Реклама ООО «Слёрм» ИНН 3652901451

Java библиотека

19 Nov, 05:50


🖥 JDK, JRE и JVM

▪️ JDK (Java Development Kit) — это набор инструментов для разработки приложений на Java. Включает компилятор, библиотеки и утилиты, необходимые для написания и сборки кода.

▪️ JRE (Java Runtime Environment) — среда выполнения, которая позволяет запускать Java-приложения. Включает в себя JVM и стандартные библиотеки, но без инструментов разработки.

▪️ JVM (Java Virtual Machine) — виртуальная машина, которая исполняет байт-код, сгенерированный при компиляции. Именно JVM делает Java переносимой, так как позволяет запускать программы на разных платформах.

@javalib #java

Java библиотека

18 Nov, 14:10


💯 Хватит ждать вечность, пока выполняются тесты!

➡️ Многопоточность в Java — это ключ к ускорению процессов.
Хотите, чтобы тесты запускались параллельно и быстро? Приходите на открытый урок 20 ноября в 20:00 мск и узнайте, как использовать многопоточность и futures для суперэффективной автоматизации.

✔️ Мы покажем, как работать с потоками и futures в Java, а также обсудим параллельные циклы и их применение в тестировании. Научитесь ускорять автотесты, оптимизировать процессы и прокачивать навыки, востребованные на рынке!

🎙️ Спикер Павел Балахонов — ведущий инженер по автоматизированному тестированию на проекте VK Private Cloud Solutions, опытный ментор и преподаватель.

⤵️ Хотите стать экспертом в автоматизации тестирования на Java? Запишитесь на урок и получите скидку на участие в курсе «Java QA Engineer. Professional»: https://vk.cc/cEUxSl

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

18 Nov, 12:55


Принципы Dry Kiss Yagni с примерами Java. Прощаемся с плохими привычками кодирования

Как улучшить качество кода, следуя принципам DRY, KISS и YAGNI? В этом видео мы разберем три ключевых принципа разработки, которые помогут вам писать более чистый, простой и поддерживаемый код на Java. Примеры покажут, как избавиться от дублирования, упростить логику и избегать лишней функциональности, оставаясь сосредоточенным на текущих задачах.


📺🗣СМОТРЕТЬ RUTUBE

🌐🗣СМОТРЕТЬ VKVIDEO

@javalib #java

Java библиотека

18 Nov, 09:02


👩‍💻 Java — один из самых востребованных языков, но не каждый разработчик умеет использовать его возможности по максимуму.

На курсе «Java Developer. Professional» вы научитесь создавать современные Java-приложения, освоите Spring WebFlux и Kafka, а также разберётесь в работе JVM изнутри.

Вас ждёт практическая работа с кодом, детальные разборы, ревью от экспертов и подходы, позволяющие писать эффективный и чистый код.

Начните свой путь к уровню Middle+! Используйте Java на 100%.

➡️ Пройти вступительный тест курса: https://vk.cc/cEUHvj

🎁 Только в "Черную пятницу", скидки на курс до 15%! Подробности у менеджеров.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

17 Nov, 08:35


Что выведет данный код?

Java библиотека

17 Nov, 06:07


Класс LocalDateTime

Класс LocalDateTime используется для работы с датой и временем без учета часового пояса.
Он появился в Java 8 в пакете java.time и является частью новой date/time API, которая пришла на смену устаревшим классам Date и Calendar.

Основные возможности класса LocalDateTime:
— Хранение даты и времени с точностью до наносекунд.
— Получение различных компонентов даты/времени (год, месяц, день недели и т. д.).
— Выполнение операций сложения и вычитания дат и интервалов.
— Сравнение и сортировка дат по времени.
— Форматирование и парсинг строк по заданному шаблону.


@javalib #java

Java библиотека

16 Nov, 08:01


⚡️Всероссийский Хакатон ФИЦ 2024

🚀Попробуйте себя в одном из предложенных кейсов:
- Разработка алгоритма трекинга людей в видеопотоке с нескольких камер
- Цифровая карта подземных коммуникаций с использованием Cesium
- Симуляция записи в расписание
- Цифровой сервис для ведения реестра зеленых насаждений города Москвы
- Предсказание необходимого количества средств досмотра
- Система контроля и управления доступом
- Семантический делитель текстов
- Разработка сервиса печати этикеток для производителей одежды
И др. кейсы смотрите на сайте: https://фиц2024.рф/hackathon 

Хакатон пройдет в 2 этапа: Отборочный этап в Онлайн, Финал в Офлайн.

🏆Призовой фонд: 6 000 000 руб.
🔥Дедлайн регистрации: 26 ноября, 23:59
📅Даты отборочного этапа: 29 ноября - 2 декабря
🦾Даты финала: 3 - 4 декабря

Зарегистрируйтесь для участия в хакатоне: https://фиц2024.рф/hackathon

#реклама
О рекламодателе

Java библиотека

15 Nov, 12:50


Big O Notation: Сложность алгоритмов

🔵 O(1) — Константное время
Константное время выполнения означает, что время выполнения операции не зависит от размера входных данных. Это как мгновенный доступ к элементу массива по индексу. Независимо от того, сколько данных в массиве, операция займёт одно и то же время.

🔵 O(n) — Линейное время
Линейная сложность указывает на то, что время выполнения алгоритма растёт пропорционально количеству элементов. Поиск элемента в LinkedList — классический пример. Чтобы найти нужный элемент, вам придётся пройти весь список, начиная с головы, что займёт линейное время, если искомый элемент находится в конце.

🔵 O(log n) — Логарифмическое время
В логарифмических алгоритмах задача сокращается на каждом шаге вдвое. Пример — бинарный поиск в отсортированном массиве. На каждом шаге вы делите массив пополам, и продолжаете поиск в нужной половине. Это значительно быстрее, чем линейный поиск.

🔵 O(n^2) — Квадратичное время
В алгоритмах с квадратичной сложностью каждый элемент сравнивается с каждым другим. Примером является сортировка пузырьком (Bubble Sort), где алгоритм многократно сравнивает и обменивает элементы местами, что приводит к квадратичному времени выполнения при увеличении числа элементов.

🔵 O(n^3) — Кубическое время
Кубическая сложность встречается в задачах с тройными вложенными циклами. Пример — умножение матриц, где каждый элемент одной матрицы должен быть умножен на каждый элемент другой, что приводит к тройным вложенным операциям.

🔵 O(n log n) — Линейно-логарифмическое время
Линейно-логарифмическая сложность характерна для более продвинутых алгоритмов сортировки, таких как быстрая сортировка (QuickSort) или сортировка слиянием (MergeSort). Эти алгоритмы делят массив на части и сортируют их, что делает их более эффективными по сравнению с квадратичными.

🔵 O(2^n) — Экспоненциальное время
Экспоненциальная сложность наблюдается в рекурсивных алгоритмах, таких как вычисление чисел Фибоначчи без мемоизации. На каждом шаге создаётся две новые ветви вычислений, что приводит к экспоненциальному росту времени выполнения с увеличением входных данных.

🔵 O(n!) — Факториальное время
Факториальная сложность возникает в задачах, связанных с вычислением всех возможных перестановок или комбинаций. Например, задача генерации всех перестановок строки: с увеличением длины строки число возможных комбинаций возрастает факториально.

🔵 O(√n) — Время квадратного корня
Этот тип сложности встречается, например, в алгоритмах поиска делителей числа или проверки на простоту. Например, чтобы проверить, является ли число простым, достаточно проверить делители до его квадратного корня, что сокращает количество операций по сравнению с линейным подходом.

@javalib #java

Java библиотека

15 Nov, 09:45


Хотите создавать масштабируемую и отказоустойчивую микросервисную архитектуру?

19 ноября в 20:00 мск приглашаем на открытый вебинар, где вы узнаете, как применять ключевые стратегии Circuit Breaker, Retry и Load Balancing для повышения стабильности систем.

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

👨‍💻🛠👨🏻‍💻 Вебинар будет полезен разработчикам, архитекторам и DevOps-инженерам, которые хотят повысить производительность своих микросервисов, внедрив современные решения для автоматического масштабирования и балансировки.

🔴 Регистрируйтесь прямо сейчас и получите скидку на курс «Software Architect»: https://vk.cc/cEMG0a

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

15 Nov, 04:35


👀 Задачи с собеседований: Реализация метода equals() (middle)

- Как правильно переопределить метод equals()?

💡 Ключевые моменты:

▪️ Рефлексивность — объект должен быть равен самому себе.
▪️ Симметричность — если a.equals(b), то и b.equals(a) должно быть истинно.
▪️ Транзитивность — если a.equals(b) и b.equals(c), то a.equals(c) должно быть истинно.
▪️ Непротиворечивость — несколько вызовов метода equals() на одном и том же объекте должны возвращать одно и то же значение, если объекты не изменились.
▪️ null — вызов a.equals(null) должен возвращать false.

Реализация на картинке 👆

@javatasks #java

Java библиотека

14 Nov, 18:55


Поиск проблем Java-приложения с 31G heap и 500G off-heap на примере Apache Ignite

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

Для примера рассмотрим узел распределенной БД Platform V DataGrid, которая нашла применение в сотнях систем Сбера, в том числе критических: системе процессинга карт, эквайринга и для хранения профилей всех клиентов-физических лиц.

В случае перебоев в работе системы необходимо или определить причину падения, или улучшить производительность. Доклад Дмитрия именно про это: как «лечить» Java-приложение с большим объемом данных, когда что-то пошло не по плану. Спикер рассмотрел также настройки Java и Linux, чтобы инциденты не случались.


@javalib #java

Java библиотека

14 Nov, 12:26


Скомпилируется ли код с картинки?

Да, код будет скомпилирован, потому что он следует спецификации функционального интерфейса, определяющей только один абстрактный метод. Второй метод, count, является методом по умолчанию, который не увеличивает количество абстрактных методов.

@javalib #java

Java библиотека

14 Nov, 09:02


👩‍💻 Открытый урок «Знакомство с виртуальными потоками Java»

🗓 21 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced» от Otus.

Легковесные потоки были введены во многих языках программирования, таких как Go, Kotlin и другие. Теперь Java догнала другие языки по этой функциональности.

На вебинаре разберем:

✔️что такое виртуальные потоки;
✔️ чем они отличаются от обычных потоков;
✔️в чём плюсы и минусы их использования.

🔗 Ссылка на регистрацию: https://vk.cc/cEEUeJ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

13 Nov, 17:03


⚡️ Уровни изоляции транзакций в базах данных

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

🔑 Что такое изоляция транзакций?


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

🔒 Типы уровней изоляции:

🔹 Read Uncommitted:
Самый низкий уровень изоляции. Транзакции могут читать изменения, сделанные другими транзакциями, даже если они не были зафиксированы (грязные чтения). Быстро, но рискованно.

🔹 Read Committed:
Видны только зафиксированные данные. Это исключает грязные чтения, но могут возникать неповторяемые чтения (данные меняются между двумя запросами).

🔹 Repeatable Read:

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

🔹 Serializable:
Самый высокий уровень изоляции. Полностью изолирует транзакцию, предотвращая грязные, неповторяемые и фантомные чтения. Однако это существенно снижает производительность.

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

💬 Какой уровень изоляции вы чаще используете в своих приложениях?

@javalib #java

Java библиотека

13 Nov, 12:02


👩‍💻 Мечтаете научиться программировать на Java? Пора начинать!

🗓 20 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java-разработчик» от Otus.

Приходите на открытый урок, где мы шаг за шагом создадим игру «Угадай число» с нуля.
Вы познакомитесь с основами языка, поймете, как изменять код и менять функционал программы, освоите первые блоки, которые нужны для старта.

Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.

Хотите научиться создавать приложения? Узнать, как строятся программы на Java? Этот урок — ваш первый шаг в IT!

🔗 Ссылка на регистрацию: https://vk.cc/cEAf6Y

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

13 Nov, 10:15


Создаём Telegram Бота с Нуля на Java и Spring Boot | Часть 1: Проектирование и Первые Шаги

Мы с вами вместе напишем реальный проект Telegram бота. Автор постарается в повествовательной, меньше технической, манере поведать вам об этапах разработки, поехали?

@javalib #java

Java библиотека

13 Nov, 07:01


Разработчики, встречаемся 22 ноября – митап, который нельзя пропустить 😎

Закрываем осенний сезон крутыми хардовыми докладами и жаркими дискуссиями на конференции от Технохаба Сбера в Казани. Расскажем, как оптимизировать процесс разработки и уменьшить lead time, поделимся лучшими инженерными практиками, а также поговорим про ИТ-рынок труда.

Спикеры и темы:
Владислав Ламзенков, Senior Java-разработчик: «JMH: как мы бенчим в Java»
Искандер Габдрахманов, Java-разработчик: «Spring AOP – все про него знают и слышали, но часто ли его используют на самом деле?»
Алия Хазиева, Project Manager: «Какие метрики помогут оптимизировать Agile-процессы команды разработки?»
Лидер компетенции Екатерина Руденко, Лидер компетенции Василий Маркитан, Руководитель команды IT-подбора Седа Саакян: дискуссия «Реалии рынка труда против требований нанимающего руководителя»

Регистрируйтесь на митап IT Talk by Sber по ссылке 💚

Java библиотека

12 Nov, 19:41


Когда у тебя на одном проекте Java 21…

@javalib #java

Java библиотека

12 Nov, 18:21


🕯 Паттерн Adapter (Адаптер)

Adapter — это структурный паттерн, который позволяет объектам с несовместимыми интерфейсами работать вместе. Он действует как обёртка между двумя классами, приводя их интерфейсы к общему виду.

Использование:

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

Преимущества:

1️⃣ Устраняет зависимость от конкретных интерфейсов, облегчая дальнейшее развитие системы.
2️⃣ Позволяет легко адаптировать старый код к новым условиям, не затрагивая его исходный функционал.

Недостатки:

1️⃣ Увеличивает сложность системы за счёт введения дополнительных классов.
2️⃣ Может привести к увеличению времени выполнения программы при частом использовании.

📌 Часто используется при интеграции различных систем, например, при адаптации старого API для использования с новыми клиентами или библиотеками.

@javalib #java

Java библиотека

12 Nov, 14:02


Yandex DEVent PRO: митап для опытных бэкенд-разработчиков

Приготовили для вас три хардовых доклада:

🔸 Роман Косарев, руководитель разработки Яндекс Недвижимости. Расскажет, как и почему ребята пришли к федеративному GraphQl в архитектуре синхронного API сервиса

🔸 Никита Макаров, руководитель Универсального поиска. Подробно покажет, как внедрение YandexGPT помогло пользователям быстрее принимать решения при покупке товара

🔸 Дмитрий Плещеев, руководитель группы разработки сервисов картографии. Расскажет, как команда Автономного транспорта создаёт высокоточные карты и зачем они нужны

✏️ Зарегистрироваться на митап можно тут.

Мероприятие пройдёт в офлайн-формате. Количество мест ограничено. Пожалуйста, после регистрации дождитесь подтверждения вашего участия — мы пришлём его на электронную почту.

Реклама. ООО "Яндекс", ИНН 7736207543.

Java библиотека

12 Nov, 12:35


Память Cassandra по полочкам. Cassandra memory footprint

Углубляемся в механизмы работы с памятью в Apache Cassandra: как устроены механизмы управления памятью, сколько места занимают те или иные данные в памяти, как это мониторить, какие оптимизации по работе с памятью сделаны или еще в процессе.

Будет интересно Java-разработчикам, которые разрабатывают подобного рода системы, и тем, кто эксплуатирует Apache Cassandra.


@javalib #java

Java библиотека

12 Nov, 09:10


👩‍💻 Открытый урок «Интернационализация и локализация в приложениях Spring»

🗓 25 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework» от Otus.

Узнайте, как эффективно реализовать интернационализацию и локализацию в Spring-приложениях.

На вебинаре разберем:

✔️работу с классом Locale, использование MessageSource в Spring Boot и без него;
✔️ способы хранения и смены локали в веб-приложениях;
✔️ локализацию в шаблонах Thymeleaf и сообщений Bean Validation;
✔️ обсудим, почему не стоит локализовывать исключения;
✔️ проанализируем исходный код для лучшего понимания процессов.

🔗 Ссылка на регистрацию: https://vk.cc/cEyO9g

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

08 Nov, 16:55


CompletableFuture

CompletableFuture — это класс в Java, введенный в Java 8, который представляет собой асинхронную задачу, которая будет выполнена в будущем и возвращает результат. CompletableFuture предоставляет множество методов для работы с асинхронными задачами, комбинирования их и управления их выполнением.

Основные возможности CompletableFuture включают:

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


@javalib #java

Java библиотека

08 Nov, 12:32


🔥Пишем веб-сервис на Java, а затем преобразуем его в Kotlin за 1 урок

Приглашаем на бесплатный вебинар, он будет интересен Java-разработчикам и бэкенд-разработчикам на Kotlin!

Дата: 12 ноября в 19:00 МСК


В первой части занятия мы познакомимся с основными концепциями:
• null-безопасность;
• сокращение шаблонного кода;
• лямбда-выражения.

Во второй части — напишем веб-сервис с CRUD-операциями на Java, а затем преобразуем его в Kotlin. Так вы увидите, как синтаксис Kotlin упрощает код.

📌Занятие проведёт Сергей Прощаев — ведущий инженер и Java-разработчик в крупной компании

После вебинара вы сможете приобрести курс «Kotlin Backend Developer. Professional», который доступен в рассрочку!

👉🏻Записаться на событие

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

08 Nov, 08:43


PG для Java-разработчиков

В процессе переноса нагруженного сервиса с Oracle на PG пришлось разбираться в тонкостях работы с последней из Java. Обнаружились разные нюансы настройки драйвера pgJDBC, Hikari и Spring, о которых, как оказалось, многие разработчики не знают / забывают / узнают через боль и страдания в процессе эксплуатации сервиса позже.

Сергей собрал в этом докладе все полезные настройки, которые помогли решить ту или иную проблему.

PS: Про Hibernate в этом докладе не говорим.


@javalib #java

Java библиотека

07 Nov, 17:50


Метод isPowerOfTwo()

Метод isPowerOfTwo() используется для проверки, является ли число степенью двойки.

Этот метод полезен при работе с битовыми операциями и оптимизации алгоритмов.


@javalib #java

Java библиотека

07 Nov, 09:40


👩‍💻 Обучение для тех, кто хочет освоить Java на профессиональном уровне — JVM с профилированием и оптимизацией приложений в облаках.

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

Ответишь
— пройдешь на продвинутый курс "Java Developer. Advanced" от OTUS по специальной цене.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cEdJt8

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

07 Nov, 05:27


Принципы SOLID

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

Рассмотрим каждый принцип:

1️⃣ Принцип единственной ответственности (S)
Каждый класс должен иметь только одну причину для изменения, то есть он должен отвечать за одну задачу или ответственность. Это достигается за счет того, что классы фокусируются на выполнении конкретных задач. Соблюдение этого принципа делает код более модульным и простым в поддержке.

2️⃣ Принцип открытости/закрытости (O)
Классы должны быть открыты для расширения, но закрыты для изменения. Это значит, что поведение класса можно расширять, не изменяя его существующий код. В Java это часто реализуется через использование интерфейсов или абстрактных классов.

3️⃣ Принцип подстановки Барбары Лисков (L)
Объекты суперкласса должны заменяться объектами подкласса без нарушения корректности программы. В Java это особенно важно при работе с наследованием, чтобы подклассы правильно расширяли базовые классы, не изменяя их поведение.

4️⃣ Принцип разделения интерфейса (I)
Клиенты не должны зависеть от интерфейсов, которые они не используют. В Java это достигается путем разделения крупных интерфейсов на более узкоспециализированные, чтобы классы реализовывали только те методы, которые им действительно нужны.

5️⃣ Принцип инверсии зависимостей (D)
Модули высокого уровня не должны зависеть от модулей низкого уровня. Оба должны зависеть от абстракций. В Java это часто реализуется через внедрение зависимостей (Dependency Injection), которое позволяет передавать зависимости извне, что способствует слабой связности и гибкости системы.

@javalib #java

Java библиотека

06 Nov, 14:01


Podlodka Java Crew снова в деле!

Уже 18 ноября стартует неделя "Асинхронной архитектуры" для всех, кто работает с высоконагруженными системами и задачами реального времени.

В каждой сессии – только практические подходы, с возможностью применять прямо в текущих проектах. Сессии проходят утром и вечером, так что точно найдется время подключиться.

- На круглом столе Митя Александров и Александр Нозик обсудят, что эффективнее в Java — виртуальные потоки, реактивность или корутины 💬

- В сессии Евгения Молокова обсудим, в каких случаях Kafka Streams может уступать Apache Flink и как Flink решает задачи потоковой обработки данных🚀

- Денис Винокуров и Дмитрий Разуваев объяснят, почему асинхронность Kafka не всегда соответствует ожиданиям и как это фиксировать 💻

- Сергей Петрелевич проведет воркшоп по WebFlux для асинхронных систем, где разберет реальные кейсы 🛠️

Никакой теории, только конкретные подходы для использования!

Скорее забирай early-bird билеты — https://podlodka.io/javacrew.

Java библиотека

06 Nov, 13:10


Блокирующий метод

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

При вызове блокирующего метода поток переходит в состояние ожидания и не выполняет других операций.

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

Например, метод readLine() блокирует поток до тех пор, пока пользователь не введет строку и не нажмет Enter.
После ввода данных метод возвращает управление потоку и программа выводит введенную строку.

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


@javalib #java

Java библиотека

06 Nov, 09:40


Какой самый больной вопрос для IT-команд? Тестирование микросервисов!

Откройте все секреты! Как повысить отказоустойчивость и управлять взаимодействиями между сервисами?

👨‍💻🛠👨🏻‍💻 На открытом уроке мы разберем всё: от юнит-тестов до тестов производительности.

Присоединяйтесь к бесплатному вебинару 7 ноября в 20:00 мск и получите практические инструменты для работы с микросервисами. А еще скидку на обучение на курсе «Software Architect»!

🔴 Регистрируйтесь прямо сейчас и получите доступ к лучшим практикам тестирования в распределённых системах: https://vk.cc/cE9TCE

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

06 Nov, 07:36


👀 Задачи с собеседований: Сортировка пузырьком (jun)

- Расскажите про сортировку пузырьком и реализуйте её.

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

💡 Ключевые моменты:

▪️ Худший случай: O(n^2)
▪️ Используется строго для небольших наборов данных.

Реализация на картинке 👆

@javatasks #java

Java библиотека

05 Nov, 12:50


Java Reflection - Ваш ключ к пониманию Java-разработки.

В этом видео автор расскажет про рефлексию в Java — мощный инструмент для работы с кодом во время выполнения программы. Мы рассмотрим, как с помощью рефлексии можно управлять полями, методами и конструкторами классов, не зная их заранее. Он покажет примеры того, как получить доступ к приватным полям и методам, а также как использовать рефлексию для вызова методов и изменения значений полей на лету.
Если вы хотите узнать, как рефлексия используется в популярных фреймворках, таких как Spring, и как она помогает создавать гибкие и расширяемые приложения, то это видео для вас!


@javalib #java

Java библиотека

05 Nov, 09:30


👩‍💻 Пройди тест по Java

Проверь насколько хорошо ты знаешь Java и готов освоить 👩‍💻 Spring!

Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cE63Ob

🎫 Начни обучение со скидкой, подробности у менеджеров.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

04 Nov, 12:30


Введение в WebSocket: Создаем Live Chat на Java и Spring Boot

📺🗣СМОТРЕТЬ RUTUBE

🌐🗣СМОТРЕТЬ VKVIDEO

@javalib #java

Java библиотека

04 Nov, 09:36


Интерфейс BlockingQueue

Интерфейс BlockingQueue используется для реализации очередей с блокировками.
Он позволяет безопасно работать с очередью из нескольких потоков.

Основные методы:
add(E e) — добавляет элемент в очередь, может выбросить исключение если очередь переполнена.
offer(E e) — добавляет элемент в очередь, возвращает false если очередь переполнена.
put(E e) — добавляет элемент в очередь, блокирует поток если очередь переполнена.
take() — извлекает и удаляет элемент из очереди, блокирует поток если очередь пуста.
poll() — извлекает и удаляет элемент из очереди, возвращает null если очередь пуста.


@javalib #java

Java библиотека

03 Nov, 13:10


Java. Исключение ConcurrentModificationException.

В видео рассматривается, что из себя представляет исключение ConcurrentModificationException, и в каких случаях оно выбрасывается.

@javalib #java

Java библиотека

03 Nov, 10:01


Java Guru - вопросы и задачи с собеседований. Канал с помощью которого ты точно получишь оффер!

👩‍💻 Android Developer - канал для андроид разработчиков! Статьи, вопросы и задачи с собеседований, лайфхаки.

👩‍💻 Kotlin Developer - самый топовый канал для котлин разработчика!

📕 Книги для Java программиста - канал с книгами по Java. Постоянно выходят новинки как на русском так и на английском языке!

📰 Java News - канал с последними новостями из мира Java!

Java библиотека

03 Nov, 07:39


Введение в CompletableFuture

Когда дело касается выполнения асинхронных задач, класс CompletableFuture является мощным инструментом для упрощения работы с многопоточностью и асинхронным программированием. Он позволяет строить цепочки задач, обрабатывать ошибки и объединять несколько будущих значений без использования блокирующих операций.

CompletableFuture — это расширение интерфейса Future, которое упрощает работу с асинхронными вычислениями. В отличие от стандартного Future, он позволяет:

▪️ Запускать задачи асинхронно;
▪️ Комбинировать несколько задач;
▪️ Обрабатывать ошибки без try-catch;
▪️ Строить цепочки зависимостей.

Пример создания асинхронной задачи:

CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
// Эмуляция долгой задачи
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new IllegalStateException(e);
}
return "Задача завершена!";
});

System.out.println(future.join()); // Ожидание завершения и получение результата


Здесь задача выполняется в фоновом потоке, а основной поток продолжает свою работу.

🎮 Комбинирование нескольких задач

Часто нужно дождаться завершения нескольких задач и собрать их результаты. С помощью thenCombine() можно комбинировать результаты нескольких асинхронных вычислений:

CompletableFuture<Integer> future1 = CompletableFuture.supplyAsync(() -> 50);
CompletableFuture<Integer> future2 = CompletableFuture.supplyAsync(() -> 20);

CompletableFuture<Integer> result = future1.thenCombine(future2, Integer::sum);

System.out.println(result.join()); // 70


Здесь задачи выполняются параллельно, и их результаты комбинируются, когда обе завершены.

Обработка ошибок

Одним из главных преимуществ CompletableFuture является возможность обрабатывать ошибки без try-catch через метод exceptionally():

CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> {
if (true) throw new RuntimeException("Ошибка!");
return 42;
}).exceptionally(ex -> {
System.out.println("Произошла ошибка: " + ex.getMessage());
return 0; // Возвращаем дефолтное значение в случае ошибки
});

System.out.println(future.join()); // 0


Этот подход улучшает читаемость и упрощает обработку исключений в асинхронном коде.

📎 Композиция цепочек

Вы можете строить целые цепочки задач с помощью методов thenApply(), thenAccept() и т.д. Пример использования:

CompletableFuture.supplyAsync(() -> "Hello")
.thenApply(result -> result + " World")
.thenAccept(finalResult -> System.out.println(finalResult)); // Hello World


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

🛠 Применение на практике

CompletableFuture идеально подходит для задач, требующих асинхронности: запросы к API, обработка данных в фоне и т.д. Пример с вызовом нескольких API параллельно:

CompletableFuture<String> api1 = CompletableFuture.supplyAsync(() -> {
// Эмуляция запроса к первому API
return "Response from API 1";
});

CompletableFuture<String> api2 = CompletableFuture.supplyAsync(() -> {
// Эмуляция запроса ко второму API
return "Response from API 2";
});

CompletableFuture<Void> allOf = CompletableFuture.allOf(api1, api2);

allOf.thenRun(() -> {
try {
System.out.println(api1.get() + " & " + api2.get());
} catch (Exception e) {
e.printStackTrace();
}
});

@javalib #java

Java библиотека

02 Nov, 09:01


Приглашаем на пятый юбилейный митап IT Talk by Sber в Новосибирске! ⚡️

В этот раз мы вернёмся к истокам — поговорим про Java и всё, что с ним связано. Гарантируем, что на митапе тебе будет что и кого послушать и с кем пообщаться!

Когда и где: 14 ноября, Новосибирск, лофт-парк «Подземка».

Темы и спикеры:
Разделяй и властвуй: Практический подход к горизонтальному масштабированию реляционных баз данных в Java (Дмитрий Дрожжин, Lead Java-разработчик)
Различия и особенности локального запуска и запуска в контейнере (Вячеслав Гуров, Senior Java-разработчик)
Использование коллекций java.util.concurrent для разных моделей Producer-Consumer с различной интенсивностью операций добавления, удаления, поиска и количеством участников (Роман Бондарь, Lead Java-разработчик)

Как попасть на мероприятие? Регистрируйся и приходи 14 ноября!💚

Java библиотека

01 Nov, 16:26


Тип Optional

Тип Optional используется для представления возможности отсутствия значения. Он обертывает другой тип данных и может содержать либо значение этого типа, либо быть пустым (null).

Этот код создает Optional объект, который может содержать строку. Если строка доступна, она будет возвращена; в противном случае будет возвращено значение «Default Value».

Использование Optional способствует более чистому и безопасному коду при работе с возможно отсутствующими значениями.


@javalib #java

Java библиотека

01 Nov, 09:02


Поговорим про деньги в IT?

Приглашаем опытных IT-специалистов пройти небольшой опрос про зарплаты и бенефиты в технологических компаниях. Это займёт не более 7 минут — а ваше мнение поможет одному крупному российскому работодателю делать актуальные оферы.

Пройти опрос можно здесь

Java библиотека

01 Nov, 05:57


🕯 Паттерн Observer (Наблюдатель)

Observer — это поведенческий паттерн, который создаёт механизм подписки, позволяющий одним объектам следить и реагировать на изменения состояния других объектов. Наблюдатель предоставляет гибкую систему взаимодействия между объектами, исключая жесткую связанность.

Использование:

🔹 Когда нужно оповещать несколько объектов об изменениях состояния другого объекта.
🔹 Когда важно обеспечить слабую связанность между компонентами системы.
🔹 При разработке систем, где одни объекты должны реагировать на изменения в других, без жёсткой привязки.

Преимущества:

1️⃣ Обеспечивает слабую связанность между объектами.
2️⃣ Упрощает динамическое добавление новых наблюдателей без изменения кода субъекта.
3️⃣ Позволяет множеству объектов реагировать на события.

Недостатки:

1️⃣ Может приводить к большим накладным расходам при большом количестве наблюдателей.
2️⃣ Потенциальная сложность отладки из-за непредсказуемого порядка оповещения.
3️⃣ Может возникнуть ситуация, когда наблюдатели получают неконсистентное состояние.

@javalib #java

Java библиотека

25 Oct, 13:01


Как создается мобильный продукт: смотрим в новом мини-сериале от Яндекса

Команда мобильной разработки бигтеха во главе с руководителем отдела разработки мобильного SuperApp в Поиске Артуром Василовым сняла целый мини-сериал при участии автора канала Mobile Developer, IT-блогера Алексея Гладкова. В нем реальные сотрудники Яндекса решают сложные задачи, импровизируют и находят нестандартные решения, создавая мобильный pet-проект.

Все это происходит в настоящем офисе Яндекса на Льва Толстого, где команда на протяжении 4 эпизодов рисует архитектуру приложения, пилит фичи, чинит баги и экспериментирует, используя весь свой арсенал и разнообразие технологий (Kotlin, Flutter и даже BDUI). В такие моменты и раскрывается лицо трушной мобильной разработки — с ее внутренним юмором, традициями и ритуалами.

Все эпизоды уже доступны на канале Yandex for Mobile. Обязательно к просмотру для всех тех, кто мечтает узнать, как строится работа над проектами в бигтех-компании.

Java библиотека

25 Oct, 12:33


Брокер сообщений RabbitMQ | Java Spring Boot

📺🗣СМОТРЕТЬ RUTUBE

🌐🗣СМОТРЕТЬ VKVIDEO

Java библиотека

25 Oct, 09:30


Как попасть в ИТ-команду, где не боятся ошибаться?

23 и 24 ноября в Т-Банке пройдет Java Weekend Offer для разработчиков уровня middle и senior. Можете пройти собеседование за выходные и, если всем все понравится, получить оффер.

В компании используют новые версии языка и сохраняют баланс между самописными и опенсорсными инструментами. Здесь выстроенный процесс разработки и свобода для экспериментов. Можно пробовать новые технологии, расти в сильной команде и обмениваться опытом на конференциях и митапах.

Узнайте больше и успейте оставить заявку до 20 ноября

Java библиотека

25 Oct, 08:25


Что такое REST?

REST (Representational State Transfer) — это архитектурный стиль предоставляющий стандарты для взаимодействия в распределённых системах. Он базируется на простоте, понятности и использует стандартные HTTP методы для взаимодействия между клиентом и сервером. Рой Филдинг впервые представил его в 2000 году в своей знаменитой диссертации. REST очень популярен, так как его легко реализовать, поддерживать и масштабировать.

❗️ Основные принципы REST

🔵 Единый интерфейс: каждый метод должен чётко выполнять свою задачу — например, GET для чтения, POST для создания.
🔵 Без сохранения состояния (stateless): каждый запрос от клиента к серверу должен содержать всю информацию, необходимую для понимания запроса, и не должен использовать какой-либо сохраненный контекст на сервере.
🔵 Архитектура клиент-сервер: чёткое разделение интерфейсов, сервер отвечает за обработку данных, клиент — за их представление.
🔵 Кэширование: сервер имеет право повторно использовать данные ответа позднее для эквивалентных запросов и в течение указанного периода.
🔵 Слои: архитектура может состоять из нескольких слоёв, где каждый слой имеет своё предназначение и не зависит от других.
🔵 Код по запросу (опционально): сервер может отправлять исполняемый код клиенту для улучшения его функциональности (например, скрипты).

⚙️ Основные HTTP-методы

▪️ GET — используется для получения данных. Например, запрос всех пользователей:
GET /users

▪️ POST — создаёт новый ресурс. Например, добавление нового пользователя:
POST /users
{
"name": "John",
"age": 30
}

▪️ PUT — обновляет ресурс. Например, обновление информации о пользователе:
PUT /users/1
{
"name": "John Doe",
"age": 31
}

▪️ PATCH — частично обновляет ресурс. Например, изменение email пользователя:
PATCH /users/1
{
"email": "[email protected]"
}

▪️ DELETE — удаляет ресурс. Например, удаление пользователя:
DELETE /users/1


@javalib #java

Java библиотека

25 Oct, 06:23


Будущее Terraform. Стоит ли срочно переезжать на OpenTofu? 

Поговорим об этом на вебинаре Слёрма 30 октября

Terraform — это утилита для управления облачной инфраструктурой as Code с открытым исходным кодом. Но после запуска Terraform Cloud компания-владелец запретила использовать Terraform в коммерческих проектах без разрешения, а коммьюнити обиделось и сделало форк — OpenTofu, полностью совместимый с Terraform. Но как всегда — есть нюансы.

На вебинаре обсудим: 

➡️ изменения в Terraform: лицензии, что случилось, почему
➡️ появление OpenTofu: что это такое, чем отличается от Terraform, как разбивается, что происходит
➡️ будущее продуктов оркестрации OpenTofu и Terraform

⚡️Спикер — Павел Селиванов, архитектор Yandex Cloud

📆 Когда: 30 октября в 19:00 мск 
✔️ Занять место на вебинаре бесплатно — по ссылке
💡Пройти тест на знание Terraform — там же 🙃

erid: LjN8KC7YS

Java библиотека

24 Oct, 18:15


Java. Рекурсия и цикл.

В видео рассматривается рекурсия как аналог цикла. Показано, как можно использовать хвостовую рекурсию в функциональных языках программирования.

📺🗣СМОТРЕТЬ RUTUBE

🌐🗣СМОТРЕТЬ VKVIDEO

Java библиотека

24 Oct, 14:01


Готовитесь к поступлению в универ? Олимпиады помогут попасть в вуз мечты!

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

Многие ведущие вузы проводят свои олимпиады. Если вы хотите учиться на IT-специальности, можно обратить внимание на профиль «Промышленное программирование» в «Высшей пробе». Задания составляла команда Яндекса, а потому они максимально приближены к тому, что делают реальные программисты. Чем поможет эта олимпиада? Если вы станете призёром или победителем, то получите преимущество при поступлении в лучшие университеты страны! 🎓🚀

Принять участие может любой учащийся 9–11-х классов! Базовых знаний информатики будет достаточно. Отборочный этап пройдёт онлайн, а тех, кто успешно справится с первой частью, пригласят на очный заключительный этап.

Регистрируйтесь на «Высшую пробу» до 14:00 мск 5 ноября — повысьте свои шансы на поступление в вуз мечты!

Java библиотека

24 Oct, 13:10


ℹ️ Метод-референсы

В Java 8 появился новый способ улучшить читаемость кода — ссылки на методы. Это позволяет ссылаться на существующие методы без их вызова, делая код более кратким и понятным.

🔍 Типы метод-референсов:

1️⃣ Статические методы: Позволяют ссылаться на статические методы класса.
Пример: Integer::parseInt

2️⃣ Методы экземпляра: Ссылки на методы конкретного объекта.
Пример: myObject::toString

3️⃣ Методы любого объекта типа: Для методов любого экземпляра заданного класса.
Пример: String::toUpperCase

4️⃣ Конструкторы: Ссылки на конструкторы для создания новых объектов.
Пример: ArrayList::new

⚡️ Пример использования:

Вместо стандартной лямбды:

list.forEach(item -> System.out.println(item));


Можно использовать ссылку на метод:

list.forEach(System.out::println);


А Вы используете ссылки на методы в своих проектах?👇

@javalib #java

Java библиотека

24 Oct, 10:01


👩‍💻 Обучение для тех, кто хочет освоить Java на профессиональном уровне — JVM с профилированием и оптимизацией приложений в облаках.

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

Ответишь
— пройдешь на продвинутый курс "Java Developer. Advanced" от OTUS по специальной цене.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cDaN9B

🎁 А еще приятный бонус: до конца октября действует скидка 10% на обучение.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

24 Oct, 09:10


Конвертируем массив в список

Arrays.asList() — это статический метод класса Arrays, который позволяет конвертировать обычный массив в список List.

— Принимает массив в качестве аргумента и возвращает объект типа List с элементами этого массива.

— Возвращаемый список имеет фиксированный размер, равный длине исходного массива. Добавлять/удалять элементы в него нельзя.

— Изменения в возвращаемом списке будут вноситься в исходный массив, т. к. список работает как «представление» массива. Метод работает для массивов примитивных и ссылочных типов.

Arrays.asList хорош для чтения элементов массива, но не для записи из-за неизменяемого размера.


@javalib #java

Java библиотека

24 Oct, 06:00


Интенсив по очередям: Kafka & NATS

Асинхронное взаимодействие и очереди — невероятно широкая тема, и обязательная к изучению всем, кто интересуется архитектурой. Разработчику важно понимать архитектурные особенности, сильные и слабые стороны компонент, на базе которых строится архитектура.

Приходите на курс Интенсив по очередям: Kafka & NATS

🌐 В программе:

▪️Асинхронное взаимодействие с помощью очередей: подходы, свойства, гарантии
▪️Какие бывают очереди, основные системы очередей, на какие свойства и требования смотреть при выборе
▪️Как конфигурировать и управлять системами очередей
▪️Архитектура Apache Kafka, streams, topics, конфигурации от минимального single instance до production grade кластера с отказоустойчивостью
▪️Архитектуры NATS, pub/sub, req/res, streaming, кластер, суперкластер, федерация, edge.

Обучение в формате «живых» онлайн-сессий (лекции, брейнштормы, демо).

🥸 Кто мы: R&D-центр Devhands.io, наш канал (https://t.me/rybakalexey). Автор курса — Владимир Перепелица, эксперт по большим проектам, очередям и Tarantool, Solution Architect в Exness, создатель S3 в VK Cloud, регулярный спикер и член ПК конференций Highload. 

🗓 Старт курса 13 ноября, 5 недель обучения. Изучить программу и записаться можно здесь 

Ждём вас!

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqxiGJPM

Java библиотека

23 Oct, 18:15


🕯 Паттерн Command (Команда)

Command — это поведенческий паттерн, который превращает запросы в объекты, позволяя параметризировать методы другими запросами, ставить запросы в очередь или логировать их.

Использование:

🔹 Для отделения отправителя запроса от объекта, который выполняет действие, чтобы упростить изменение или отмену команд.
🔹 Для реализации очередей команд или их многоуровневой отмены.
🔹 Для логирования команд с возможностью их повторного выполнения.

Преимущества:


1️⃣ Инкапсуляция операций в отдельные объекты упрощает расширение системы. Это позволяет легко добавлять новые команды, не изменяя существующий код.
2️⃣ Command предоставляет гибкость в управлении действиями: их можно откладывать, отменять или хранить для последующего выполнения, что делает его полезным в сценариях с очередями задач или транзакциями.
3️⃣ Команды можно комбинировать, создавая макрокоманды для выполнения последовательностей операций, что упрощает выполнение сложных сценариев.
4️⃣ Реализует принцип открытости-закрытости: можно добавлять новые команды без изменения существующего кода.

Недостатки:

1️⃣ Необходимость хранения истории команд для их отмены может потребовать значительных ресурсов, что делает паттерн менее эффективным в системах с ограниченной памятью.
2️⃣ Добавление новых команд требует создания новых классов, что увеличивает объем работы и поддерживает сложность системы.

@javalib #java

Java библиотека

23 Oct, 14:20


Хотите узнать, как использовать Patroni для управления высокодоступными кластерами PostgreSQL?

Ждем вас на открытом вебинаре 24 октября в 20:00 мск, где мы разберем:

- что такое Patroni и как он помогает обеспечить высокую доступность для PostgreSQL;
- основные компоненты и архитектуру Patroni;
- настройку и конфигурацию Patroni для работы с PostgreSQL;
- примеры использования Patroni для управления кластером PostgreSQL;
- практические советы по оптимизации и мониторингу работы кластера.

👨‍💻🛠👨🏻‍💻 Урок для DevOps-инженеров, системных администраторов, backend-разработчиков и тимлидов, стремящихся обеспечить высокую доступность PostgreSQL.

Спикер Андрей Поляков — старший разработчик в Unlimint.

Встречаемся в преддверии старта курса «Highload Architect». Все участники вебинара получат специальную цену на обучение! Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cD6Wej

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

23 Oct, 13:40


Как разделить строку на части?

В Java можно разделить строку на части с помощью метода split() класса String. Метод split() разбивает исходную строку на массив строк, используя заданный разделитель.

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


@javalib #java

Java библиотека

23 Oct, 10:30


⁉️Хотите повысить свою квалификацию в Java-разработке?

👩‍💻 Инвестируйте в успех своей карьеры прямо сейчас! На курсе «Java Developer. Professional» вы получите:

✔️ знание актуального стека технологий;
✔️ 96 часов практической работы с детальным разбором технологий изнутри;
✔️ понимание основ функционирования JVM (сборка мусора, byteCode);
✔️ освоение приемов применения многопоточности;
✔️ практику решения сложных задач с подробным код-ревью от экспертных Java-разработчиков;
✔️ расширение возможностей использования языка Java;
- умение использовать современные фреймворки: Spring WebFlux, Kafka, реактивный Postgres, Kubernetes.

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

Готовы прокачать свою востребованность?

➡️ Пройдите короткий тест прямо сейчас, чтобы получить специальную цену на обучение: https://vk.cc/cD6yPp

🎁 А еще приятный бонус: до конца октября действует скидка 10% на обучение.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

23 Oct, 09:10


Что такое Record?

Record — это специальный тип данных, введенный в Java 14 (и стабилизированный в Java 16), который значительно упрощает создание неизменяемых объектов. Который избавляет от необходимости вручную прописывать всю «рутинную» работу по созданию классов с полями, конструктором, геттерами, equals(), hashCode() и toString().

Пример использования Record:

public record Person(String name, int age) {}


Этот код автоматически создаст:


▪️ Конструктор Person(String name, int age)
▪️ Методы доступа name() и age()
▪️ Методы equals(), hashCode() и toString()

Допустим, нужно создать класс для хранения информации о сотруднике:

public class Employee {
private final String name;
private final String position;
private final int salary;

public Employee(String name, String position, int salary) {
this.name = name;
this.position = position;
this.salary = salary;
}

public String getName() {
return name;
}

public String getPosition() {
return position;
}

public int getSalary() {
return salary;
}

@Override
public boolean equals(Object o) { ... }

@Override
public int hashCode() { ... }

@Override
public String toString() { ... }
}


Все это можно заменить одной строкой с использованием Record:

public record Employee(String name, String position, int salary) {}


Варианты использования:

1️⃣ Неизменяемые объекты: Если нужно создать неизменяемый объект, который будет безопасен для многопоточного использования и не будет изменяться после создания.
2️⃣ Data Transfer Objects (DTO): Record хорошо подходит для классов, которые используются для передачи данных между компонентами системы.
3️⃣ Модели для API: Используйте Record для создания простых и неизменяемых моделей в REST API, что повышает предсказуемость и упрощает поддержку.

⚠️ Важно:

Record не может наследовать другие классы, что может ограничить его применение в некоторых архитектурах.

@javalib #java

Java библиотека

23 Oct, 06:00


Приглашаем на Java Jam — бесплатный митап ЮMoney для Java-разработчиков 📹

Спикеры из ЮMoney расскажут о своём опыте разработки, а вы сможете задать им все интересующие вопросы.

Темы докладов 👇

🟣Web Push: как достучаться до пользователей без нативных приложений.
🟣 SonarQube в действии: плагины как ключевой элемент контроля качества в отделе.
🟣 Рефакторинг фискализации: как мы выносили чеки в отдельный сервис.

24 октября, в четверг, в 19:00 (мск) приходите на митап в Санкт-Петербурге или подключайтесь онлайн.

Зарегистрируйтесь, чтобы принять участие. Все подробности и регистрация — на сайте митапа Java Jam

Java библиотека

22 Oct, 17:48


CyclicBarrier

CyclicBarrier (циклический барьер) — это один из механизмов синхронизации в языке программирования Java, предоставляемый пакетом java.util.concurrent. Он позволяет группе потоков синхронизироваться на определенной точке выполнения, после чего они могут продолжить выполнение параллельно.

CyclicBarrier представляет собой барьер, который блокирует выполнение всех потоков до тех пор, пока все потоки не достигнут этой точки. Как только все потоки достигли барьера, он разблокируется, и все потоки выполняют свою работу.


@javalib #java

Java библиотека

22 Oct, 11:02


🦾 Ты крутой джавист? Всегда есть куда расти.

Приходи повышать грейд на хардовый курс «Разработчик на Spring Framework» от OTUS.

👩‍💻 Авторская программа, с ней ты освоишь владение фреймворками Spring и технологиями вспомогательных проектов (Spring MVC, Spring Security, Spring Boot, Spring Reactive Stack, Spring 5). Получишь умение быстро проходить путь от идеи до production-grade.

🗓 6 ноября в 20:00 мск., пройдет бесплатный открытый урок курса, тема «Spring - разбор (не)стандартных вопросов интервью»

🔗 Ссылка на регистрацию: https://vk.cc/cD2zFL

Будет интересно!

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

22 Oct, 10:10


🖥 Вопрос с собеседования: Опишите жизненный цикл Spring Bean

Beans – центральный объект заботы Spring Framework. За кулисами фреймворка с ними происходит множество процессов. Во многие из них можно вмешаться, добавив собственную логику в разные этапы жизненного цикла. Через следующие этапы проходит каждый отдельно взятый бин:

1. Инстанцирование объекта. Техническое начало жизни бина, работа конструктора его класса;

2. Установка свойств из конфигурации бина, внедрение зависимостей;

3. Нотификация aware-интерфейсов. BeanNameAware, BeanFactoryAware и другие. Мы уже писали о таких интерфейсах ранее. Технически, выполняется системными подтипами BeanPostProcessor, и совпадает с шагом 4;

4. Пре-инициализация – метод postProcessBeforeInitialization() интерфейса BeanPostProcessor;

5. Инициализация. Разные способы применяются в таком порядке:
• Метод бина с аннотацией
@PostConstruct из стандарта JSR-250 (рекомендуемый способ);
• Метод afterPropertiesSet() бина под интерфейсом InitializingBean;
• Init-метод. Для отдельного бина его имя устанавливается в параметре определения initMethod. В xml-конфигурации можно установить для всех бинов сразу, с помощью default-init-method;

6. Пост-инициализация – метод postProcessAfterInitialization() интерфейса BeanPostProcessor.
Когда IoC-контейнер завершает свою работу, мы можем кастомизировать этап штатного уничтожения бина. Как со всеми способами финализации в Java, при жестком выключении (kill -9) гарантии вызова этого этапа нет. Три альтернативных способа «деинициализации» вызываются в том же порядке, что симметричные им методы инициализации:

1. Метод с аннотацией
@PreDestroy;
2. Метод с именем, которое указано в свойстве destroyMethod определния бина (или в глобальном default-destroy-method);
3. Метод destroy() интерфейса DisposableBean.

Не следует путать жизненный цикл отдельного бина с жизненным циклом контекста и этапами подготовки фабрик бинов. О них мы поговорим в будущих публикациях.


@javalib #java

Java библиотека

22 Oct, 07:01


Приглашаем на открытый урок «Playwright и его использование для UI автотестирования».

🗓 24 октября в 20:00 МСК

🆓 Бесплатно. Урок в рамках старта курса «Java QA Engineer. Professional»

На вебинаре разберем:


- обзор инструмента playwright
- использование playwright для написания UI атвотестов
- плюсы и минусы playwright и чем он лучше selenium

Спикер Павел Балахонов — Senior QA Automation Engineer.

Все участники вебинара получат специальную цену на обучение!

🔗 Ссылка на регистрацию: https://vk.cc/cCYSWj

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

21 Oct, 05:22


Исключение в static блоке кода

Если в статическом блоке инициализации возникнет исключение, то это приведет к ошибке при инициализации класса.

Решить эту проблему можно двумя способами:

1. Перехватить исключение с помощью try-catch в этом же статическом блоке.
2. Перехватить исключение в последующем методе, куда оно будет выброшено, если не обрабатывать исключение в статическом блоке.

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

Если не обрабатывать исключение в статическом блоке, то оно будет выброшено дальше и его можно будет поймать в методе main, как показано в примере.


@javalib #java

Java библиотека

20 Oct, 09:02


Хотите узнать, как реализовать идеальную хэш-таблицу, которая работает за О(L) время?

Ждем вас на открытом вебинаре 21 октября в 20:00 мск, где мы разберем:

- как создать алгоритм ассоциативного массива на основе идеальной хэш-таблицы;
- как исключить коллизии с помощью двухступенчатой хэш-таблицы;
- как выполнить визуальное тестирование с англо-русским словарем на 2.000 слов.

👨‍💻🛠👨🏻‍💻 Урок для Junior-разработчиков на любых языках программирования.

Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP.

Встречаемся в преддверии старта курса «Алгоритмы и структуры данных». Все участники вебинара получат специальную цену на обучение! Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cCUgUw

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

19 Oct, 12:45


🕯 Паттерн Proxy (Прокси)

Proxy — это структурный паттерн, который предоставляет объект-заместитель для управления доступом к другому объекту, обеспечивая контроль над его использованием.

Использование:

🔹 Когда необходимо контролировать доступ к ресурсоемким объектам или операциям.
🔹 Для добавления дополнительной функциональности без изменения исходного объекта.

Преимущества:

1️⃣ Позволяет контролировать доступ к реальному объекту, например, для ленивой инициализации или кэширования. Это может улучшить производительность, так как ресурсоемкие объекты создаются только тогда, когда они действительно нужны.

2️⃣ Позволяет контролировать доступ к объектам, добавляя проверки перед вызовом методов. Это полезно для управления доступом в сетевых приложениях или для защиты данных.

3️⃣ Позволяет оптимизировать работу с удаленными объектами, минимизируя количество вызовов или обрабатывая их асинхронно. Это снижает нагрузку на систему и повышает скорость работы приложения.

4️⃣ Может использоваться для логирования или отслеживания вызовов методов реального объекта, не внося изменений в сам объект. Это упрощает мониторинг и отладку системы.

@javalib #java

Java библиотека

19 Oct, 09:01


Бесплатный онлайн-интенсив по Java разработке и шанс получить оффер в компанию на «Открытых школах» Т1
✉️ Отправь заявку до 25 октября!

На интенсиве ты: изучишь Spring Framework, разберешься в паттернах проектирования и принципах SOLID, поработаешь с Docker и брокерами сообщений.

🎓 Смотри подробнее о программе в карточках и регистрируйся по ссылке: https://u.to/Gk31IA

Java библиотека

19 Oct, 08:23


Что выведет эта программа?

Ответ:
Программа напечатает «num1 == num2». Если мы сравниваем две ссылки на объекты с помощью ==, значение всегда будет «false». Но в этом примере переменные num1 и num2 автоупаковываются (autoboxing) из-за Integer-кэширования. Вот почему num1 == num2 возвращает значение «true». Не забудьте, что Integer-кэширование актуально только для значений от -128 до 127.

@javatasks #java

Java библиотека

18 Oct, 16:03


Разница между «Lambdas» и «Anonymous Classes»

— Лямбда-выражения имеют лаконичный синтаксис по сравнению с анонимными классами. Лямбды проще читать и писать, так как они не требуют явного объявления метода, тогда как анонимные классы содержат больше «лишнего» кода.

— Лямбды используются, когда интерфейс имеет один абстрактный метод (функциональные интерфейсы), тогда как анонимные классы могут реализовать несколько методов и применяться для интерфейсов с несколькими методами.

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

@javalib #java

Java библиотека

18 Oct, 11:20


👩‍💻 Хотите стать экспертом в разработке на Spring Framework?

Обучение на курсе «Разработчик на Spring Framework» от OTUS — это практический подход к освоению самого востребованного фреймворка для Java-разработчиков.
Узнайте, как создавать веб-приложения на микросервисной архитектуре, автоматизировать задачи с Spring Boot и реализовывать высокоуровневые решения!

В конце курса у вас будет портфолио из готовых приложений и глубокое понимание работы со Spring. Пройдите вебинар-собеседование, чтобы быть готовым к реальным интервью.

➡️ Пройдите вступительный тест для записи на курс и перейдите на новый профессиональный уровень с дипломом, признанным крупными компаниями: https://vk.cc/cCMJYD

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

18 Oct, 10:10


👩‍💻 Spring Data JDBC. Проблемы известные, проблемы неизвестные

Spring Data JDBC — относительно новый модуль Spring Data. У него своя концепция, свои фичи, свои баги и проблемы. Часть этих проблем известна аудитории и описана в документации. Однако иногда документация врет или недоговаривает. К тому же есть некоторые неочевидные детали реализации, которые могут смутить пользователей библиотеки. Это касается многих аспектов — от генерации SQL до маппинга сущностей.

Во время доклада мы посмотрели на ряд подобных сюрпризов, обсудим, баг это или фича и что разработчики планируют с этим делать. Также рассмотрели текущее состояние проекта Spring Data JDBC — над чем идет работа, что исправляется, а что пока нет.

📺🗣СМОТРЕТЬ RUTUBE

🌐🗣СМОТРЕТЬ VKVIDEO

Java библиотека

18 Oct, 07:02


Yandex Cloud запустил сервис для ускорения разработки продуктов в облаке Yandex Serverless Integrations

Теперь разработчики смогут при минимальном написании кода автоматизировать различные процессы, например обработку онлайн-заказов и мониторинг систем безопасности.

Сделать это можно благодаря инструменту Yandex Workflows — он позволяет описать последовательность операций с помощью декларативного языка YAML. Сервис автоматически запустит эти процессы и проконтролирует их выполнение.

Помимо этого, Yandex Serverless Integrations включает в себя инструменты EventRouter для передачи событий между сервисами и API Gateway для создания шлюзов между внешними и облачными сервисами по спецификации OpenAPI 3.0.

Читайте подробнее в статье

Java библиотека

17 Oct, 20:37


ℹ️ Как работает механизм CyclicBarrier и когда его следует использовать?

CyclicBarrier — это синхронизатор в Java, который позволяет нескольким потокам остановиться и дождаться друг друга в определённой точке (барьере) перед продолжением работы. Он создаётся с фиксированным числом потоков, которые должны достичь барьера, прежде чем все они смогут продолжить выполнение.

Как это работает:

1️⃣ Потоки выполняют свою работу.
2️⃣ Когда они достигают вызова метода await(), они останавливаются и ждут, пока все остальные потоки также достигнут барьера.
3️⃣ Как только все потоки прибыли, барьер "отпускает" их, и они продолжают выполнение.
4️⃣ CyclicBarrier можно использовать повторно (циклически), что отличает его от одноразовых барьеров, таких как CountDownLatch.

Когда использовать:

▪️ Когда нужно, чтобы несколько потоков координировали свои действия и начинали следующую стадию только после того, как все потоки закончат текущую работу.
▪️ Для выполнения задач, которые разбиты на несколько этапов, где каждый этап должен начаться только после завершения предыдущего всеми потоками.

@javalib #java

Java библиотека

17 Oct, 13:31


О чем хотите поговорить: low-latency-сервисах, переходе на Cassandra или тестировании?

Приходите обсуждать важное на митап для Java-разработчиков в Казани. Тут эксперты из Т-Банка поделятся опытом, который пригодится и в вашей работе.

Что узнаете из докладов:

— Как разработчики Т-Банка переехали на Cassandra. Будет полезно, если начинаете использовать систему или думаете на нее переходить.
— Когда и как нужно писать low-latency-сервисы. Пригодится, если думаете, что на Java нельзя писать быстрый код.

Что обсудят на дискуссии:

— Основы тестирования, виды тестов и их применение в реальных ситуациях.
— Преимущества и недостатки юнит-тестов.
— Значимость покрытия кода тестами и подходы к оценке качества.
— Влияние внешних интеграций на процесс тестирования.

Встреча пройдет 30 октября на Кремлевской набережной, зд. 33, в крытом парке «Урам».

Участие бесплатное. Узнайте больше и успейте зарегистрироваться

Java библиотека

17 Oct, 12:45


Метод split

Метод split() используется для разбиения строки на подстроки по заданному разделителю. Он принимает один параметр — регулярное выражение, по которому будет производиться разбиение строки и возвращает массив строк (String[]), содержащий подстроки.

Если в качестве разделителя передать пробел (» «), то строка разбивается по пробелам на отдельные слова. Также можно указать число в качестве второго параметра, это будет лимит количества элементов.


@javalib #java

Java библиотека

17 Oct, 09:30


♨️ Анализировать множество показателей и не перегружать приложение?
С Java Flight Recorder – это легко.


Приглашаем вас на открытый урок «Обзор инструмента Java Flight Recorder».

🗓 22 октября в 20:00 МСК

🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced» от OTUS.

JFR:
- Регистрирует множество событий внутри виртуальной машины Java
- Не ухудшает производительность
- Помогает детально разобраться в причинах сбоев и ошибок

Хотите освоить? - приходите на вебинар!

Спикер – Александр Царёв, техлид в Сбере.

🔗 Ссылка на регистрацию: https://vk.cc/cCIZW4

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

17 Oct, 08:01


Класс DateTimeFormatter

Класс DateTimeFormatter используется для форматирования и парсинга объектов даты и времени.

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


@javalib #java

Java библиотека

17 Oct, 06:31


📌 Save the date: мы проводим второй Yandex Open Source Jam!
📆 23 октября мы организуем (не)конференцию, посвящённую открытому коду и всему, что его окружает. На этот раз приезжаем в Санкт-Петербург!
Поговорим об опенсорсе и людях, которые его делают. В программе: анонсы, экспозона, дискуссии, афтерпати и, конечно, доклады.
🔴 Никита Соболев, фултайм-разработчик опенсорса, раскроет секреты своего десятилетнего опыта 
🔴 Антон Фролов, ML-инженер из Яндекса, покажет, как мы ускоряем обучение нейросетей с помощью YaFSDP
🔴 Антон Полухин, руководитель группы разработки общих компонент из Яндекса, расскажет, как мы строим опенсорс-проект userver
🔴 Николай Воронцов, выпускающий редактор в N + 1, обсудит, как опенсорс помогает учёным и радует популяризаторов науки
📎 Регистрируйтесь на сайте — там же можно найти подробную программу выступлений!

Java библиотека

17 Oct, 05:52


Что такое абстрактный метод в языке Java?

Абстрактный метод – это метод без тела. Вы просто объявляете метод, не определяя его, с использованием ключевого слова abstract в объявлении метода. Все объявленные внутри интерфейса в языке Java методы – по умолчанию абстрактные. Пример абстрактного метода в языке Java представлен на картинке.

Теперь для реализации этого метода необходимо расширить абстрактный класс и этот метод переопределить.


@javalib #java

Java библиотека

16 Oct, 14:01


Работать ручным тестировщиком круто: можно проверять нестандартные сценарии или поставить себя на место реального пользователя. Но если хочется чего-то большего и ускорить работу над рутинными тест-кейсами — самое время автоматизировать часть задач. Не знаете программирование? Мы научим. 

Приходите в Яндекс Практикум на курс «Автоматизатор тестирования на Java» — за 5 месяцев освоите инструменты автоматизации, основы Java и научитесь покрывать автотестами веб-приложения и API.

И не спешите покупать курс — попробуйте бесплатный модуль, а уже потом решите, хотите развиваться в этом направлении или нет.

Java библиотека

16 Oct, 12:10


В чем отличия между TreeSet и HashSet?

Основное отличие между TreeSet и HashSet заключается в том, что TreeSet хранит элементы в отсортированном порядке, в то время как порядок хранения элементов в HashSet не определен. TreeSet также обеспечивает быстрый поиск и извлечение элементов в отсортированном порядке.

@javalib #java

Java библиотека

16 Oct, 09:01


Хотите научиться разрабатывать парсеры pdf-файлов и создавать полезные приложения?

Приглашаем на открытый урок «Разработка парсера pdf-файла».

🗓 24 октября в 20:00 МСК

🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional»

На вебинаре разберем:

- как разработать парсер для выписки ВТБ банка в формате pdf;
- весь путь от идеи до практического применения;
- ответы на все возникающие вопросы.

⬇️ В результате урока вы получите практически полезное приложение с подробностями реализации.

Спикер Сергей Петрелевич — опытный Java/Kotlin-разработчик и преподаватель.

Все участники вебинара получат специальную цену на обучение!

🔗 Ссылка на регистрацию: https://vk.cc/cCEZJZ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

16 Oct, 06:13


Когда и как использовать var, чтобы код стал понятнее?

Слышали про var? Его добавили в Java 10, чтобы облегчить нам жизнь. Но когда его лучше использовать, а когда стоит быть осторожнее?💡

Когда использовать var:

🔵 Когда всё понятно с контекста: Если тип переменной очевиден 👀, то зачем писать лишнее?

var list = new ArrayList<String>(); // Это список, и это сразу видно


🔵 Когда тип слишком громоздкий: Если объявление слишком длинное и перегружает код, var упрощает задачу:

var map = new HashMap<String, List<Integer>>(); // Чисто и просто


🔵 Короткие методы: В небольших методах с чёткой логикой, var помогает сделать код компактнее и читабельнее.

А вот где лучше избегать:

🔵 Если тип неочевиден: Когда сложно сразу понять, что это за переменная, лучше явно указать тип, чтобы не путать коллег.
var result = process(); // И что за процесс тут? 


Итог: var — отличный инструмент, но используйте его с умом. Вопрос к вам: а вы уже используете var в своих проектах? Если да, поделитесь опытом в комментариях! 👇

@javalib #java

Java библиотека

26 Sep, 14:02


Какие брокеры использовать, чтобы обеспечить асинхронную связь между микросервисами?

Узнайте на открытом практическом уроке «Брокеры сообщений: RabbitMQ и Kafka» от OTUS, где мы узнаем:

что такое брокеры сообщений и как они помогают в архитектуре микросервисов
основные различия между RabbitMQ и Kafka, включая их архитектурные подходы
как развернуть и настроить RabbitMQ и Kafka для ваших приложений
практическое использование обоих брокеров на реальных примерах в live demo

🗓 Встречаемся 24 октября в 20:00 мск в преддверии старта курса «Microservice Architecture». Все участники вебинара получат специальную цену на обучение и консультацию от менеджеров OTUS!

➡️ Ссылка для регистрации: https://vk.cc/cBq3jr

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

26 Sep, 13:02


Класс Hashtable

Представляет собой структуру данных, которая используется для хранения и управления коллекциями пар «ключ-значение». Hashtable является одной из структур данных, предоставляемых Java Collections Framework, и работает по принципу хеш-таблицы. Он был представлен в ранних версиях Java и является устаревшим начиная с Java 5, так как более современные альтернативы, такие как HashMap, предпочтительнее.

Java библиотека

26 Sep, 09:40


🏓 Знакомимся с Java на примере пинг-понга

Хотите узнать, как создавать программы на Java, даже если никогда не программировали?

Ждем вас на открытом вебинаре 26 сентября в 20:00 мск,

где мы разберем:

➡️ что такое программирование и язык Java;
➡️ как создать игру пинг-понг с нуля на Java;
➡️ как работать с двумерной графикой в Java.

Урок полезен для тех, кто хочет начать изучать Java с нуля и увидеть на практике, как создаются приложения.

🎙 Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.

Встречаемся в преддверии старта курса «Специализация Java-разработчик».
Все участники вебинара получат специальную цену на обучение!

➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cBpk2M

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

26 Sep, 06:41


Что такое ACID?

🔹 Атомарность (Atomicity)
Гарантирует, что транзакция не будет зафиксирована частично. Все записи в транзакции выполняются одновременно и не могут быть разбиты на меньшие части. Если при выполнении транзакции возникают ошибки, все записи откатываются.

🔹 Согласованность (Consistency)
Любые данные, записанные в ходе транзакции, должны быть валидны в соответствии со всеми определёнными правилами и поддерживать базу данных в корректном состоянии.

🔹 Изоляция (Isolation)
Параллельные транзакции не должны оказывать влияния друг на друга. Изолированность сложно достижима, поэтому существуют различные уровни изоляции.

🔹 Надежность (Durability)
Данные сохраняются после завершения транзакции, даже в случае сбоя системы.

@javalib #java

Java библиотека

25 Sep, 14:01


Что поможет обеспечить стабильную работу высоконагруженной системы?
Эффективный мониторинг.


О том, как лучше отслеживать и поддерживать стабильность систем под высокой нагрузкой, вы узнаете на открытом уроке «Мониторинг в высоконагруженных проектах»

👨‍💻🛠👨🏻‍💻 Будет интересно: девопсам, сисадминам, бэкенд-разработчикам, тимлидам.

Вы научитесь:
Настраивать мониторинг для высоконагруженных проектов
Настраивать мониторинг для выявления и предотвращения проблем
Использовать данные мониторинга для повышения стабильности и производительности системы
Усиливать отказоустойчивость архитектуры

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

Урок проведёт Олег Мифле, бэкенд-разработчик VK с 15-летним опытом в IT

🆓 Участие бесплатное. Урок в рамках старта курса «Highload Architect»

🔴 Записаться на открытый урок: https://vk.cc/cBlsNZ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

25 Sep, 13:20


new vs valueOf

Старайтесь всегда использовать метод valueOf вместо конструктора в стандартных классах-оболочках примитивных типов, кроме тех случаев, когда вам нужно конкретно выделить память под новое значение.

Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.

Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной.

Java библиотека

25 Sep, 10:02


👩‍💻 Пройди тест по Java

Проверь насколько хорошо ты знаешь Java и готов освоить 👩‍💻 Spring!

Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cBljWB

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

25 Sep, 09:31


🖥 Apache Gravitino (incubating)

Apache Gravitino - это высокопроизводительное, геораспределенное озеро метаданных.

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

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


Язык: Java

🌟Звезд: 912
📝Forks: 292

▪️Github

@javalib #java

Java библиотека

25 Sep, 07:20


Да, быть разработчиком непросто. Но нет ничего невозможного, если у вас есть желание разобраться

А если не уверены, что именно язык Java «ваш», то добро пожаловать на подготовительный курс «Java-разработчик» от онлайн-школы Хекслет.

Практика с первого дня обучения, 62 онлайн-урока, 4 живых вебинара, помощь наставника, собственный проект по окончании программы, – и все это даже при нулевом уровне подготовки.

Не обещаем, что будет легко, но интересно, полезно и недорого (всего 990 рублей!) – гарантируем.

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

Cтарт уже 3 октября, так что записывайтесь скорее!

Java библиотека

25 Sep, 07:05


EventListener

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

Java библиотека

25 Sep, 06:01


Привет, друзья! 
Успевайте подключиться и стать участником главного фронтенд-события года — FrontendConf 2024.

30 сентября и 1 октября в Москве, в кластере “Ломоносов", мы соберёмся, чтобы обменяться опытом, обсудить новые вызовы и горизонты в разработке.

Что вас ждёт:
51 доклад с реальными кейсами, свежими идеями и анализом актуальных задач.
Дебаты по самым острым темам фронтенда.
Фейл-митапы: истории, которые никогда не попадают в запись.
QA-сессии, митапы и живое общение с экспертами.

Новые темы этого года:
Внедрение ML в продукты.
Как нейросети меняют софт.
Применение ИИ в пользовательских интерфейсах с помощью Tensorflow.js.
Сравнение Bun и Node: выбор JSCore.
Последние достижения в развитии PWA.
Также рассмотрим новейшие тенденции фронтенда, обсудим свежие концепции фреймворков, технологии AR и многое другое.

Купить билеты и посмотреть расписание можно на сайте.
Присоединяйтесь!

Реклама. ООО "КОНФЕРЕНЦИИ ОЛЕГА БУНИНА". ИНН 7733863233.

Java библиотека

25 Sep, 04:15


🤫 Некоторые популярные методы аутентификации

🔵 Базовая аутентификация:
Предполагает отправку имени пользователя и пароля с каждым запросом, но может быть менее безопасной без шифрования.
Подходит для простых приложений, где безопасность и шифрование не являются приоритетом, или при использовании защищенных соединений.

🔵 Аутентификация с помощью токенов:
Использует сгенерированные токены, такие как JSON Web Tokens (JWT), которые обмениваются между клиентом и сервером, обеспечивая повышенную безопасность без необходимости отправки учетных данных с каждым запросом.
Идеально подходит для более безопасных и масштабируемых систем.

🔵 Аутентификация OAuth:
Позволяет сторонним приложениям получать ограниченный доступ к ресурсам пользователя без раскрытия учетных данных, выдавая токены доступа после аутентификации пользователя.
Подходит для ситуаций, требующих контролируемого доступа к ресурсам пользователя сторонними приложениями или сервисами.

🔵 Аутентификация с использованием API-ключей:
Назначает уникальные ключи пользователям или приложениям, которые отправляются в заголовках или параметрах; несмотря на простоту, может не обладать всеми преимуществами безопасности, как методы на основе токенов или OAuth.
Удобна для простого контроля доступа в менее чувствительных средах или для предоставления доступа к определённым функциям без необходимости предоставления разрешений, привязанных к конкретному пользователю.

💬 Какой метод аутентификации вы считаете наиболее эффективным с точки зрения обеспечения безопасности и удобства использования в ваших приложениях?

@javalib #java

Java библиотека

24 Sep, 17:00


Используйте умные ссылки – создавайте и настраивайте сервисы для динамического управления редиректами
Как именно, спросите вы?

А очень просто: приходите на открытый урок OTUS «Проектирование сервиса умных ссылок»

Вы узнаете:
- как спроектировать сервис умных ссылок и создавать ссылки с динамическими правилами редиректа
- как настраивать редирект в зависимости от геолокации, устройства пользователя и других параметров
- как разрабатывать и оптимизировать масштабируемый и гибкий сервис умных ссылок

Вебинар проведёт действующий директор компании по разработке ПО, в прошлом – профессиональный разработчик на C++

👨‍💻🛠👨🏻‍💻 Будет интересно: бэкенд-разработчикам, фулстек-разработчикам, техническим архитекторам

📅 8 октября, 20:00
🆓 Бесплатно. Урок в рамках старта курса «Microservice Architecture»

🔴 Записаться на открытый урок: https://vk.cc/cBi2ej

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

24 Sep, 16:30


Интерфейс Supplier

Интерфейс Supplier — это функциональный интерфейс в языке программирования Java, определенный в пакете java.util.function. Он представляет собой интерфейс, который может использоваться для предоставления значений, но не принимает аргументов. В этом интерфейсе есть один метод, который не принимает аргументов и возвращает значение.

Метод Supplier:
T get();

Где T — это тип возвращаемого значения.

Supplier может быть полезным, когда вам нужно получить значение, но не требуется передавать какие-либо аргументы для его получения. Этот интерфейс часто используется, например, в лямбда-выражениях и стримах для предоставления значений.

Java библиотека

24 Sep, 13:20


Тестовое собеседование на Middle Java-разработчика завтра

Уже завтра, 25 сентября в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.

Как это будет:
1. Мария Ядерцова ведущий Java-разработчик в МТС Диджитал и ex. Сбербанк-Технологии будет задавать реальные вопросы и задачи разработчику-добровольцу
2. Мария будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
3. В конце можно будет задать любой вопрос Марии

Что узнаешь на прямом эфире от ШОРТКАТ:

· Чего ждут от кандидатов на Middle позиции в Java-разработке
· Какие вопросы задают на интервью и зачем
· Как подготовиться к собесу, чтобы получить оффер

Это бесплатно? Бесплатно

Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot

Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqupmfJx

Java библиотека

24 Sep, 12:35


🖥 Cloud Database Manager

CloudBeaver - это веб-сервер, предоставляющий богатый веб-интерфейс.

Сам сервер представляет собой Java-приложение, веб-часть написана на TypeScript и React.

▪️Github

@javalib #java

Java библиотека

24 Sep, 09:30


👩‍💻 Курс для Java-разработчиков, которые хотят профессионального роста.

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

Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса

➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cBhKXX

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

23 Sep, 14:45


OAuth 2.0 авторизация в Java Spring Boot приложении: Пошаговое руководство

В этом видео мы подробно рассмотрим процесс реализации OAuth 2.0 авторизации в Java Spring Boot приложении. 🚀

Вы узнаете, как настроить аутентификацию и обеспечить безопасность вашего приложении.🔐

Это руководство будет полезно как для начинающих разработчиков, так и для тех, кто уже знаком с Java Spring Boot и хочет углубить свои знания в области безопасности и авторизации. 💻


📺🗣СМОТРЕТЬ RUTUBE

🌐🗣СМОТРЕТЬ VKVIDEO

Java библиотека

23 Sep, 10:01


Интересен Java, но не знаете, где получить достойные знания? Курс «Профессия Java-разработчик» от Skillbox — ваш выбор!

Всего за 8 месяцев вы станете Java-программистом уровня Junior+, а мы доведём вас до трудоустройства — или вернём деньги за курс. Кроме этого, вы:

1️⃣ Сэкономите время и силы. Программа создана по требованиям работодателей — только нужные темы и технологии.

2️⃣ Добавите реальные проекты в портфолио. Создадите проекты, которые покажут ваши уровень и навыки работодателям.

3️⃣ Получите опыт командной работы. Научитесь работать в команде, как в реальных IT-компаниях.

4️⃣ Совершите быстрый старт в профессии. Через 8 месяцев будете готовы к работе в IT.

И самое важное — получите помощь в трудоустройстве. Не тратьте годы на самостоятельное изучение. Попробуйте бесплатно первые 5 модулей курса и убедитесь в его пользе: https://epic.st/wpUe-?erid=2Vtzqxf1X8j

Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880

Java библиотека

23 Sep, 04:48


🎮 Cross-platform Game Development Framework

Это кроссплатформенная среда для разработки Java-игр на основе OpenGL, которая предоставляет надежную и проверенную временем платформу для быстрого прототипирования и создания игр.

▪️ Github

@javalib #java

Java библиотека

22 Sep, 12:23


Техника «10 тестов в день» – одна из самых эффективных в изучении Java.

Канал Java Guru выложил в открытый доступ тесты, которые дают на собеседованиях в топовые компании, вроде Яндекс и MailRu.

➤ Открываете задачку – выбираете вариант – видите правильный ответ и детальное объяснение к нему. Так вы усвоите на 50% больше знаний в сжатые сроки.

Подписывайтесь и качайте свои скиллы: @javatasks

Java библиотека

21 Sep, 08:53


Можно ли в конструкторе использовать return?

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

Например, у нас есть класс Cat, и если Cat бездомный — isHomeless = true, нам нужно закончить инициализацию и не заполнять другие поля (ведь они нам неизвестны, так как котик бездомный).

Но если говорить о конкретных значениях, конструктор не может использовать return для возврата какого-то значения, потому что:

При объявлении конструктора у вас не будет ничего похожего на возвращаемый тип;

Как правило, конструктор неявно вызывается во время создания экземпляра;

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

Java библиотека

20 Sep, 07:01


Вакансия:Java Developer
Грейд: Miiddle+/Senior/Lead


Компания BSS — российский разработчик ДБО и решений в сфере голосовых технологий, а также провайдер услуг по привлечению специалистов на IT проекты.
Сейчас мы в поиске опытных Java разработчиков для нашего заказчика - международной продуктовой компании, специализирующейся на разработке решений для операторов мобильной связи. Сотрудник требуется на проект по созданию современной биллинговой системы одного из российских операторов связи.

Тех.стек:
Управление процессом разработки:
- Jira
- Confluence
Технологии разработки:
Java 11+, , Spring (web, data jpa, security, boot 2.5), Oracle 19, PostgreSQL, SQL, Camunda, Kafka, RabbitMQ, Gradle, Maven

Обязанности:
• Разработка на Java;
• Оценка и декомпозиция задач;
• Умение четко формулировать задачи/проблематику/ технические детали для взаимодействия между командами и заказчиком;
• Умение работать как самостоятельно, так и в составе команды;
• Багфикс, написание unit-tests;
• Следовать жизненному циклу ПО, поддерживать статус и описание задач в баг-трекинговых системах в актуальном состоянии;
• Своевременно отчитываться о временных затратах в разрезе задач.

Требования:
• Опыт работы 3+ года;
• Умение ставить задачи другим разработчикам
• Четкое понимание жизненного цикла ПО;
• Уверенное владение Java 8; Java 11
• Понимание архитектуры Spring и SpringBoot;
• Опыт работы с крупными многомодульными проектами;
• Работа с микросервисной архитектурой;
• Опыт работы с message brokers (RabbitMQ, Kafka);
• Опыт разработки интеграционных и Unit-тестов;
• ! Обязателен военный билет или приписное свидетельство (для военнообязанных)
• Опыт работы с API (REST, SOAP - Желательно);
• Умение заниматься debug’ом (в том числе удаленным);
• Опыт работы с Jira Atlassian;

Будет плюсом:
• Умение проводить Code Review;
• Опыт с JPA Specification;
• Профилирование SQL-запросов (Oracle);
• Опыт подготовки и развёртывания приложения в Docker-контейнер;
• Опыт работы с Linux (CLI).
• Работа с GitLab, следование git-flow.

Условия:
• Удалённый формат работы по РФ, гибридный формат в Москве/Пензе обязателен (1-2 раза в неделю в офисе);
• Работа на крупном проекте с современными технологиями в аккредитованной IT-компании;
• Полное соблюдение ТК РФ и своевременная выплата заработной платы;
• ДМС для вас и семьи;
• Страхование жизни;
• Предоставляем технику для работы;
• Проведение Performance Review.

Контакты:
@olga_sourcer

Java библиотека

19 Sep, 13:02


Не используй Lombok с JPA, пока не посмотришь это видео

Lombok действительно отличный инструмент! Одна строчка кода и все твои JPA сущности перестают корректно работать 👍

Но это только в том случае, если ты не знаешь, какие фичи Lombok можно использовать с JPA, а какие лучше не стоит.

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


📺🗣СМОТРЕТЬ RUTUBE

🌐🗣СМОТРЕТЬ VKVIDEO

Java библиотека

19 Sep, 09:35


👩‍💻 Обучение для тех, кто хочет освоить Java на профессиональном уровне — актуальный стек, 88 часов практической работы, детальный разбор технологий изнутри

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

Ответишь
— пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cAZ7kZ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Java библиотека

18 Sep, 20:37


Конструктор по умолчанию

Конструктор по умолчанию предоставляется компилятором Java, если в классе не определен ни один другой конструктор. Конструктор по умолчанию инициализирует все поля класса значениями по умолчанию (например, 0 для числовых типов, false для типа boolean, null для ссылочных типов).

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

В этом примере мы определяем класс MyClass с двумя полями: x и y, а также определяем конструктор по умолчанию, который выводит сообщение при вызове. В методе main создаем экземпляр класса MyClass, используя конструктор по умолчанию, и выводим значения полей x и y, которые инициализированы значениями по умолчанию.

Java библиотека

18 Sep, 12:20


🤝 Не дай себя завязнуть в рутинных задачах!

🦾 Осваивай Spring и выходи на новый профессиональный уровень

Пройди тест по Java от OTUS

Проверь насколько хорошо ты знаешь Java и готов освоить Spring!

Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.

👉 ПРОЙТИ ТЕСТ: https://vk.cc/cAWfGk

🎫 Начни обучение со скидкой, подробности у менеджеров.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

18 Sep, 11:25


Выше приведён список контролируемых исключений (Checked Exceptions) в Java, определенных в java.lang.

Java библиотека

18 Sep, 08:10


«Группа Астра» проводит первую бесплатную практическую конференцию для разработчиков Astra DevConf 2024.

Разработчики ИТ-компаний раскроют секреты эффективной и безопасной разработки, а также поделятся практическими кейсами.

На конференции вы узнаете, как реализовать разработку, сборку и тестирование в облаке. Что еще?
— рассмотрим, как для приложений работающих на Axiom JDK можно реализовать конвейер выпуска с помощью CI/CD пайплайнов и реестра docker-образов в GitFlic;
— поделимся лучшими практиками в построении DevOps-процессов для проектов, написанных на Spring Framework и Java/Kotlin;
— покажем, как легко и просто опубликовать приложение в RuStore;
— и многое другое.

Для участников конференции будет доступен:
— личный кабинет разработчика, в котором можно бесплатно скачивать решения «Группа Астра» для целей изучения и разработки (в том числе и ОС Astra Linux 1.8);
— портал с документацией, где опубликованы различные инструменты для разработки, примеры кода и готовые стенды для тестирования.

Дата и время: 24 сентября, в 10:00
Формат: онлайн/офлайн

Регистрация доступна по ссылке. Поехали!

Java библиотека

17 Sep, 19:00


Java библиотека pinned «Вышла Java 23 Вышла общедоступная версия Java 23. В этот релиз попало около 2400 закрытых задач и 12 JEP'ов. Java 23 не является LTS-релизом, и у неё будут выходить обновления только полгода (до марта 2025 года). Читать статью»

Java библиотека

17 Sep, 17:22


Вышла Java 23

Вышла общедоступная версия Java 23. В этот релиз попало около 2400 закрытых задач и 12 JEP'ов.

Java 23 не является LTS-релизом, и у неё будут выходить обновления только полгода (до марта 2025 года).


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

Java библиотека

17 Sep, 14:01


Как сделать Android-приложение быстрее и эффективнее?

Узнайте на открытом вебинаре 18 сентября в 20:00 мск, где мы разберем:

- как ProGuard/R8 минимизируют, оптимизируют и убирают неиспользуемый код;
- сравнение эффективности ProGuard и R8;
- как внедрять ProGuard/R8 в существующий проект.

Урок особенно полезен для Android-разработчиков с опытом работы от 1 года.

Встречаемся в преддверии старта курса «Специализация Android Developer». Все участники вебинара получат специальную цену на обучение!

Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие.

Java библиотека

17 Sep, 12:52


Релиз 🔤🔤🔤🔤 2️⃣3️⃣

В 16:00 начнется трансляция, посвящённая сегодняшнему выходу Java 23

⚡️ На трансляции именитые разработчики и спикеры, такие как Brian Goetz, Ron Pressler, Gavin Bierman и другие, расскажут о новых функциях Java и о том, чего ожидать от будущих выпусков.

Мероприятие будут вести известные ведущие Newscast Ana-Maria Mihalceanu, Billy Korando и Nicolai Parlog.

Всех с новым выпуском 🍾

@javalib #java

Java библиотека

17 Sep, 08:50


🏓 Знакомимся с Java на примере пинг-понга

Хотите узнать, как создавать программы на Java, даже если никогда не программировали?

Ждем вас на открытом вебинаре 24 сентября в 20:00 мск, где мы разберем:

- что такое программирование и язык Java;
- как создать игру пинг-понг с нуля на Java;
- как работать с двумерной графикой в Java.

Урок полезен для тех, кто хочет начать изучать Java с нуля и увидеть на практике, как создаются приложения.

Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.

Встречаемся в преддверии старта курса «Специализация Java-разработчик».
Все участники вебинара получат специальную цену на обучение!

👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cASVDx

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

17 Sep, 06:12


👩‍💻 Советы по Spring Boot 💡

Библиотека Spring Boot Startup Report генерирует интерактивные отчеты о работе приложений Spring Boot,и помогает понять, что влияет на время загрузки и запуска приложения, что может помочь в оптимизации

🖥 Github

@javalib #java

Java библиотека

16 Sep, 13:30


Как эффективно использовать GitLab CI для автоматизации процессов с помощью Ansible?

Ждем вас на открытом вебинаре 18 сентября в 20:00 мск, где мы разберем:
- основы работы с GitLab CI и Ansible;
- как создавать и запускать пайплайны для тестирования плейбуков;
- как управлять инфраструктурой с помощью Ansible и GitLab CI.

🎓 Урок будет полезен для DevOps-инженеров, которые хотят освоить работу с GitLab CI и Ansible.

Встречаемся в преддверии старта курса «CI/CD на основе GitLab». Все участники вебинара получат специальную цену на обучение!

👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cAQFit

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Java библиотека

16 Sep, 07:25


Метод putAll()

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

Например, если у вас есть две карты, содержащие данные, и вам нужно объединить их для выполнения операций на полном объеме данных, метод putAll() предоставляет простой способ объединения.

Java библиотека

15 Sep, 12:50


Как создавать код, который легко модифицировать и поддерживать?

Узнайте на открытом вебинаре «Практическое руководство по применению SOLID-принципов» 16 сентября в 20:00 мск, где мы разберем:

- основы и значение каждого из SOLID-принципов;
- пошаговый алгоритм применения SOLID для разработки расширяемого и поддерживаемого кода;
- примеры применения SOLID-принципов для решения реальных задач:
- как минимизировать затраты на изменение требований к ПО, следуя SOLID.

Урок для backend и fullstack-разработчиков, архитекторов ПО и начинающих программистов.

Встречаемся в преддверии старта курса «Архитектура и шаблоны проектирования». Все участники вебинара получат специальную цену на обучение!

Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие.

Java библиотека

15 Sep, 11:10


🖥 JHipster: думали, распаковка, оказалось — вскрытие

JHipster — платформа для быстрой генерации веб-приложений, использующая генераторы и язык JDL, что позволяет разработчику за пару минут получить монолитное или микросервисное решение, описав архитектуру одним файлом. В докладе рассматривается качество сгенерированного JHipster проекта, где автор анализирует его структуру и выявляет возможные проблемы.

Смотреть видео

Java библиотека

15 Sep, 08:02


Если вам в Java-разработке уже всё абсолютно понятно…
Делайте курс для миддлов вместе с Яндекс Практикумом!


Яндекс Практикум — сервис современного онлайн-образования, где обучают актуальным цифровым профессиям. Сейчас есть возможность присоединиться к команде и разработать курс «Мидл Java-разработчик».

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

В Практикуме понимают уровень загрузки экспертов, поэтому сделали условия максимально комфортными: удалёнка, гибкий график и частичная занятость от 15 часов в неделю — не помешает ни основной работе, ни отдыху👌

Если вы в профессии уже более 4 лет и вы точно знаете «как это должно работать» — добро пожаловать!

Подробности