Java библиотека – Telegram
Java библиотека
31.5K subscribers
2.37K photos
91 videos
10 files
2.19K links
Книги, статьи, мемы и многое другое для Java программиста!

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

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

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial
Download Telegram
Тип Optional

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

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

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


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍115🔥3
Media is too big
VIEW IN TELEGRAM
Java. Исключение ConcurrentModificationException.

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

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍86🔥3
Интерфейс BlockingQueue

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

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


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍5🔥4
Хотите собрать свой мини-Google? 🚀
🗓 22 октября, 20:00 приглашаем на открытый урок OTUS «Мини-поисковик своими руками». На этом вебинаре вы создадите поисковик с нуля — без готовых библиотек и магии. Только алгоритмы и код.

Разберём, как:
• объединить КМП и префиксное дерево;
• реализовать автодополнение и подсчёт вхождений;
• оптимизировать поиск под большие тексты;
• превратить всё это в маленький, но работающий офлайн-поисковик.

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

Открытый урок проходит в преддверие старта курса «Алгоритмы и структуры данных». Все участники получат скидку на обучение.

Присоединяйтесь 22 октября в 20:00:

https://vk.cc/cQkfK4

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
6👍4🔥2🤩1
👩‍💻 IntelliJ IDEA: Bookmarks и Context Bookmarks

Большие проекты → десятки файлов → сотни классов. Иногда нужно быстро вернуться к «тем самым» местам в коде. В ход идут Bookmarks — и особенно Context Bookmarks.

🟢Что делает

— Позволяет отмечать строки или файлы как закладки
— Поддерживает нумерацию (быстрый переход по цифре)
— Context Bookmarks автоматически привязывают закладки к рабочему контексту (ветке, задаче)

🟢Зачем это нужно

— Удобно при отладке: отмечаете подозрительные места и прыгаете между ними
— Можно держать список TODO прямо в коде, без комментариев
— Context Bookmarks запоминают, что именно важно для текущей задачи, и не мешают в будущем

🟢Как использовать

— Обычная закладка: F11 (Windows/Linux) или F3 (macOS)
— Закладка с номером: Ctrl+Shift+<цифра> (Windows/Linux) или ⌘⇧<цифра> (macOS)
— Быстрый переход: Ctrl+<цифра>
— Context Bookmarks: активируются в View → Tool Windows → Bookmarks

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍8🔥4
Практикум, который снимет боль про микросервисы, о которой все молчат.

Sync vs Async: что убьёт ваш проект, а что спасёт?

15 октября, 19:00 — практический вебинар для разработчиков, архитекторов и девопсеров от OTUS. Работаем вместе с Олегом Голенищевым, Senior .NET-разработчиком Directum, преподавателем Microsoft.

Приходи, если хочешь:
Понимать, где Sync — мастхэв, а где Async — единственный шанс выжить
Получить FANG-уровня чек-лист по интеграции (и бонус — шаблоны конфигов Spring Boot для Kafka и RabbitMQ)
Забрать 7% скидку на любой курс OTUS (именно так, просто за регистрацию)
Не попасть в “клуб тех, кто строил микросервисы по учебнику, а теперь переписывает всё с нуля”

Запишись, чтобы не чинить то, что можно не ломать.
Запись, подарки и скидка — только для своих. Лови шанс — кликай на регистрацию: https://tglink.io/5e288b078610

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFHz1yep
3👍3🔥2
👀 Задачи с собеседований: Сортировка пузырьком (jun)

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

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

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

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

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

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍144🔥4
🔍Тестовое собеседование с Java-разработчиком из Мегафон уже завтра

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

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

Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.

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

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🔥2
Блокирующий метод

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

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

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

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

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


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍7🔥4
Твой шанс прокачаться в ИТ, заявить о себе на всю страну и побороться за призовой фонд 10 250 000 рублей 💰 Успей зарегистрироваться до 20 октября.

МТС приглашает на True Tech Champ — всероссийский чемпионат по программированию. Выбирай трек по душе или участвуй сразу в двух, чтобы увеличить шансы на победу.

Трек 1. Алгоритмический. Индивидуальный зачет
Работай со структурами данных, решай алгоритмические задачи и сражайся в лайв-кодинге с сильнейшими.

Трек 2. Программирование роботов. Командный формат
Сначала проведи робота по виртуальному лабиринту, затем управляй им дистанционно на офлайн-полигоне, а в финале — пройди испытания на реальной площадке и выбей соперников с платформы.

🎁 Организаторы отправят командам финалистов по одному роботу Waveshare Cobra Flex для кастомизации. После соревнований они останутся у участников в качестве подарка.

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

📍Шоу-финал пройдет 21 ноября в МТС Live Холл.
Успей зарегистрироваться до 20 октября
4🔥3👍2
Media is too big
VIEW IN TELEGRAM
👩‍💻 learn java in 10 minutes. NO MORE PSVM

In this Java tutorial crash course, I’ll teach you the Java programming language from scratch. Whether you’re a beginner or just curious about how Java works, this video covers everything you need to know to get started fast.

What you’ll learn in this video:

• What is Java and why it’s still one of the most popular programming languages
• How to install and use IntelliJ IDEA for Java development
• Writing your first Java program (System.out.println)
• Working with variables (strings, numbers, booleans)
• Creating and using methods
• Writing if statements and basic logic
• Understanding objects, classes, and records
• Using lists and looping through data


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4😁43
Принципы SOLID

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

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

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

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

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

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

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

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥85
🔥16 октября в 20:00 мск — открытый вебинар в OTUS!

О чём?

Хотите объединять данные из разных источников в PostgreSQL без сложных ETL-процессов? Foreign-Data Wrappers (FDW) позволяют превратить PostgreSQL в мощный центр управления данными из внешних баз, облачных хранилищ и систем больших данных.

Что разберём:


- Foreign-Data Wrappers: как они работают в PostgreSQL.
- Интеграция: подключение к внешним базам (MySQL, MongoDB и др.) и управление данными как локальными таблицами.
- Примеры: объединение данных из разных источников без ETL.
- Облачные решения: использование FDW с облачными хранилищами и Big Data.
- Оптимизация: лучшие практики настройки FDW для высокой производительности.

🎓 После вебинара вы:

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

🔧 Присоединяйтесь, чтобы раскрыть потенциал PostgreSQL и упростить интеграцию данных в ваших проектах!

👉 Зарегистрироваться https://vk.cc/cQnyg6

Бесплатное занятие приурочено к старту курса Highload Architect, обучение на котором позволит освоить решения, которые выдерживают большое количество запросов в секунду и правильно оптимизировать работоспособность серверов

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

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

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

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


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥64
Поговорим про деньги в IT?

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

Пройти опрос можно здесь
👍4🔥32
👩‍💻 Spring Boot + Docker Compose: пошаговая интеграция

В проде редко гоняют приложения напрямую — почти всегда через Docker. А с появлением spring-boot-docker-compose интеграция стала проще: можно поднимать всю инфраструктуру (Postgres, Redis, Kafka и т.д.) одной командой вместе с приложением.

1️⃣ Подготовка зависимостей

В Spring Boot 3.1 добавили официальный стартер:

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-docker-compose</artifactId>
<scope>runtime</scope>
</dependency>

ИЛИ

dependencies {
runtimeOnly("org.springframework.boot:spring-boot-docker-compose")
}


2️⃣ docker-compose.yml

Определим инфраструктуру (например, Postgres + pgAdmin):
version: '3.8'
services:
postgres:
image: postgres:16-alpine
container_name: app-postgres
environment:
POSTGRES_DB: app
POSTGRES_USER: app
POSTGRES_PASSWORD: secret
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data

pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: admin@app.local
PGADMIN_DEFAULT_PASSWORD: secret
ports:
- "8081:80"
depends_on:
- postgres

volumes:
postgres_data:


3️⃣ Автоматическая интеграция

Spring Boot сам подтянет конфигурацию из docker-compose.yml. Просто укажите профиль:
./mvnw spring-boot:run -Dspring.profiles.active=compose


или
./gradlew bootRun --args='--spring.profiles.active=compose'


При старте Boot поднимет контейнеры и подставит spring.datasource.url, username, password.

4️⃣ Кастомизация application-compose.yml

Если нужны дополнительные параметры — кладём их в src/main/resources/application-compose.yml:
spring:
datasource:
hikari:
maximum-pool-size: 5


5️⃣ Полезные приёмы

— Фиксируйте версии образов, а не latest (для воспроизводимости).

— Healthcheck в docker-compose.yml помогает Boot ждать готовности контейнера.

— Можно запускать docker compose up -d руками, если не хотите, чтобы Boot сам управлял контейнерами.

— Для CI/CD обычно используют отдельные docker-compose.override.yml или Helm чарты, но для дев-окружения spring-boot-docker-compose очень экономит время.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥216👍5
Худи RYBE для Java — это функциональная вещь

Мы добавили несколько фичей, чтобы тебе было классно и комфортно:

⚫️Карман на металлических кнопках
⚫️Салфетка для очков или экрана в кармане
⚫️Люверсы для пропуска
⚫️Удобный шнурок
⚫️Надпись на капюшоне и одна особенная внутри него
⚫️Карман внутри для наушников, чтобы они не болтались и не терялись 
 
Заказать свою толстовку можно на сайте: http://rybe.store/
Наш tg

Реклама ИП Кольцова Римма Алексеевна, ИНН 760212761004, erid: 2Vtzqux1uxZ
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9👍4