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

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

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

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

Сообщество VK https://vk.com/javatutorial
Download Telegram
⌨️ 🤖 Хочешь прокачаться в backend-разработке? Но справишься ли ты с тестом по Kotlin?

🏆 Пройди тест из 10 вопросов, проверь свой уровень знаний и приходи учиться на онлайн-курс «Kotlin Backend Developer. Professional» от OTUS!

На курсе:

✔️ Разработаете monolith, микросервисы и serverless с помощью Kotlin и фреймворков Spring, Ktor и бессерверных библиотек.
✔️ Освоите корутины для асинхронных и многопоточных задач, а также WebSocket, RabbitMQ, Kafka для транспорта.
✔️ Научитесь строить хранилища на Postgres, Cassandra, ArcadeDb и интегрировать OpenAPI с любым фронтендом.

🎫
Курс можно приобрести в рассрочку

➡️ Пройди тест и присоединяйся к группе: https://vk.cc/cREFg3

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2🔥2❤‍🔥1
Forwarded from Java Guru 🤓
Что будет результатом кода?
Клон Redis на Java с нуля | Полный проект

Добро пожаловать в полный гайд по созданию Redis с нуля на Java!
В этом видео ты узнаешь, как работают базовые команды Redis, реализуешь репликацию, персистентность, стримы и транзакции — всё своими руками, без фреймворков и тяжёлых библиотек.
Погружаемся в систему, которую используют миллионы — на чистом Java-коде!


🌐🗣СМОТРЕТЬ VKVIDEO

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

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

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

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

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


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍105🔥5
🤫 Некоторые популярные методы аутентификации

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

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

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

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

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

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥43
🧩 Борьба с блокировками в PostgreSQL: как достичь высокой параллельности при большой нагрузке 🚀

🔥 2 декабря в 20:00 мск — открытый урок в OTUS.

📌 На вебинаре рассмотрим:
— Почему возникают блокировки и как они влияют на скорость работы базы данных
— Типы блокировок в PostgreSQL и их особенности на уровне транзакций и строк
— Как находить узкие места, анализировать ожидания и устранять deadlock-и
— Методы оптимизации запросов и транзакций для повышения параллельности
— Архитектурные приёмы и практики проектирования систем с высокой конкурентностью

🎓 После урока вы:
— Поймёте, как устроен механизм блокировок и научитесь управлять ими осознанно
— Научитесь диагностировать и устранять конфликты между транзакциями
— Получите набор практических решений по оптимизации PostgreSQL под нагрузкой
— Сможете спроектировать архитектуру, обеспечивающую высокую стабильность и масштабируемость

👉 Регистрация https://vk.cc/cRLjY4

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

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
3👍3🔥3
👩‍💻 JUnit 5 Совет

В JUnit 5 можно смело использовать package-private классы и методы в тестах.
Это помогает держать тестовую логику ближе к коду, который вы проверяете, и не засорять публичный API.

чище архитектура
скрытая тестовая инфраструктура
упор на инкапсуляцию и аккуратность

Меньше public — больше порядка в проекте.


Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤‍🔥3🔥3😁1🍾1
👩‍💻 Фишка IntelliJ IDEA: Jump to Last Edit Location

Когда IDE открыта часами, вкладок — десятки, а вы пытаетесь вспомнить, "где же я правил этот метод", эта комбинация спасает от паники.

🟢Что делает

— Мгновенно возвращает курсор к последнему месту, где вы редактировали код
— Работает даже после навигации по проекту, переходов в другие файлы или классы
— Поддерживает “историю изменений” — можно нажимать несколько раз, чтобы двигаться назад по правкам

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

— Экономит время при переключениях между файлами
— Полезно при дебаге или анализе кода, когда IDE уводит вас по ссылкам вглубь проекта
— Убирает хаос при работе с большим количеством вкладок

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

— Нажмите Ctrl+Shift+Backspace (Windows/Linux) или ⌘+Shift+Backspace (macOS)
— IDEA вернёт вас туда, где вы последний раз редактировали код
— Повторите комбинацию несколько раз — и вы пройдёте “назад по следам” своих правок

💡 Работает даже после перезапуска IDEA — история правок сохраняется между сессиями.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2510🔥10
This media is not supported in your browser
VIEW IN TELEGRAM
Блиц-опрос Scala-разработчиковсамые полезные и бесполезные вещи в работе

Смотрите подкаст «Криптонит говорит» о Scala! В нём айтишники обсуждают:
🔹Scala, Java и их перспективы;
🔹как успешно пройти собеседование в айти;
🔹что нужно делать, чтобы стать хорошим программистом;
🔹и когда нейросети смогут делать code review на уровне старшего разработчика и многое другое.

📺 VK Видео
📺
YouTube
📺 Rutube
💬 Подкаст в телеграме
🎵 Яндекс.Музыка

Смотрите и подписывайтесь на подкаст «Криптонит говорит» — обсуждаем айти, искусственный интеллект, языки программирования и криптографию.

Реклама АО НПК «Криптонит» ИНН 9701115253 Erid: 2VtzqvPXR6h
3👍2🔥2
👩‍💻 Быстрый Java-совет: точное измерение времени с Instant и Duration

Если нужно замерить время выполнения кода с наносекундной точностью — используйте связку Instant + Duration из java.time.

✔️ Instant — фиксированная точка времени в UTC.
✔️ Duration — разница между двумя Instant (секунды, миллисекунды, наносекунды).

Пример:


Instant start = Instant.now();
// ваш код
Instant end = Instant.now();

Duration elapsed = Duration.between(start, end);



Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍188🔥7
🔥 Наши любимые петы: собственный инструмент для передачи файлов по Сети

Когда-то интернет был другим. Возможно, более медленным и нестабильным, но куда более камерным и очаровательным. А его недостатки старались исправить разработчики-энтузиасты, которым было не всё равно.

👩‍⚕️ Александр Лукьянов, старший разработчик в Бригаде разработки функций и интеграций в Алисе и Умных устройствах, — один из таких первопроходцев. В 1996 году он начал работу над LFTP. Это прорывной для своего времени командно-строчный и скриптовый инструмент для передачи файлов по Сети.

🔶 Ссылка на гитхаб

Этим постом мы запускаем спецпроект «Наши любимые петы». В следующие недели мы продолжим рассказывать про личные проекты яндексоидов. Оставайтесь на связи!


🛎 А ещё мы открываем Call for Papers ваших петов. Если вы разрабатываете что-то для души и хотите поделиться этим с аудиторией Yandex for Developers — расскажите про ваш проект в этой форме.

📆 Мы будем собирать заявки до первой половины декабря, а после внимательно их прочитаем и выберем самые интересные и вдохновляющие петы. После Нового года мы свяжемся с их авторами и начнём публиковать посты про «питомцев» наших читателей.

Подписывайтесь:
💬 @Yandex4Backend
📹 @YandexforBackend
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥2
👩‍💻 Spring Boot + Flyway: пошаговая настройка миграций базы данных

Когда проект живёт дольше полугода — ручное обновление схемы БД превращается в хаос.

Flyway решает эту проблему: управляет версионированием схемы и миграциями через SQL-скрипты прямо из вашего приложения.

Для настройки:

1️⃣ Добавляем зависимость
<dependency>
<groupId>org.flywaydb</groupId>
<artifactId>flyway-core</artifactId>
</dependency>

ИЛИ

implementation("org.flywaydb:flyway-core")


Также добавляет драйвер для вашей БД.

2️⃣Создаём структуру для миграций

По умолчанию Flyway ищет скрипты в:
src/main/resources/db/migration/


Пример:
db/migration/
├─ V1__init_schema.sql
├─ V2__add_users_table.sql
└─ V3__add_index_email.sql


Имена файлов важны — Flyway сортирует их по версии (V1, V2, ...).

3️⃣ Пример SQL-миграции

— V1__init_schema.sql

CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2) NOT NULL
);

— V2__add_users_table.sql

CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT now()
);


4️⃣ Настройки Flyway в application.yml

spring:
datasource:
url: jdbc:postgresql://localhost:5432/app
username: app
password: secret
flyway:
enabled: true
baseline-on-migrate: true
locations: classpath:db/migration


Flyway выполнит все миграции, которых ещё нет в таблице flyway_schema_history.

5️⃣ Команды и интеграция

🔘Локально:
./mvnw flyway:migrate


или просто запустите Spring Boot — миграции применятся автоматически.

🔘Для CI/CD:

— Используйте flyway:validate перед деплоем.
— Добавляйте новые SQL-файлы при изменении схемы.
— Не редактируйте старые версии (они уже зафиксированы).

6️⃣ Полезные практики

— Используйте R__-скрипты (repeatable migrations) для справочников, триггеров, процедур.
— Версионируйте миграции в Git вместе с кодом.
— Проверяйте миграции на чистой базе перед мержем.
— Совмещайте с Testcontainers для автоматической проверки миграций в CI.

💡 Преимущество Flyway — прозрачная история эволюции базы. Можно воспроизвести схему любой версии, не ломая прод.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84🔥41
🏗 Объектная модель без боли: как превратить хаос требований в стройную архитектуру

📅 11 декабря | 20:00 мск | бесплатно

🎓 На вебинаре разберём:
– Как анализировать бизнес-требования и выделять ключевые сущности
– Как находить связи между объектами и формировать целостную модель системы
– Как использовать UML-диаграммы для визуализации архитектуры
– Типичные ошибки при анализе предметной области и как их избежать
– Практический кейс: создаём объектную модель с нуля

💡 Кому будет полезно:
– Backend и FullStack разработчикам, желающим понимать архитектуру на уровне сущностей и связей
– Системным аналитикам, формализующим требования и сценарии взаимодействия
– Архитекторам, строящим масштабируемые и устойчивые модели систем
– Начинающим инженерам, осваивающим объектно-ориентированный анализ

После вебинара вы сможете:
– Анализировать предметную область и выделять главные сущности
– Строить понятные и расширяемые объектные модели
– Использовать UML-диаграммы для визуализации архитектуры
– Превращать сложные требования в структурированные проектные решения

💥 Регистрируйтесь и научитесь мыслить как архитектор: https://vk.cc/cRTBCg

Занятие приурочено к старту курса «Архитектура и шаблоны проектирования», где вы освоите DDD, CQRS, Event Storming и научитесь превращать требования в надёжную архитектуру, готовую к росту продукта и команды. 🚀

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍3🔥32
👩‍💻 Безопасная загрузка ресурсов в Java

Хитрый совет по Java: используй скрытую возможность ClassLoader для безопасной подгрузки конфигураций и плагинов.

Вместо чтения файлов напрямую через File, загружай ресурсы из classpath — так ты избежишь проблем с путями, правами и разными окружениями.


import java.io.*;
import java.nio.charset.*;

public class ConfigLoader {
public static String load(String name) throws Exception {
try (InputStream in =
ConfigLoader.class.getClassLoader().getResourceAsStream(name)) {
if (in == null) return null;
return new String(in.readAllBytes(), StandardCharsets.UTF_8);
}
}

public static void main(String[] args) throws Exception {
System.out.println(load("config/app.conf"));
}
}


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