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

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

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

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

Сообщество VK https://vk.com/javatutorial
Download Telegram
Интерфейс 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
🔍Тестовое собеседование с ТехЛидом из МТС уже завтра

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

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

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

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

Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥3
👩‍💻 Java Roadmap 2025

В 2025 году Java продолжает развиваться, и вот на что стоит обратить внимание в учёбе. Роадмапа на картинке, ниже ключевые моменты.

1️⃣ Основы и ООП

Фокус на record классы (Java 16+), абстракция и полиформизм.

2️⃣ Коллекции и потоки

Основной тренд — использование Streams API (Java 8+) и неизменяемых коллекций (Java 9+).

3️⃣ Многозадачность

Project Loom и виртуальные потоки (Java 21) упростят многозадачность и повысит производительность.

4️⃣ Функциональное программирование

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

5️⃣ Web и микросервисы

Активное использование Spring Boot, Spring Cloud, Swagger/OpenAPI для документации.

6️⃣ Тестирование и сборка

JUnit 5, Mockito, Testcontainers и инструменты сборки Maven и Gradle для автоматизации.

7️⃣ Базы данных и ORM

Знания JDBC, Hibernate, JPA для создания надежных и масштабируемых систем.

Подписывайся на наш канал в Max 🟪
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍10🔥5
UI и API тестирование с java и playwright - тема бесплатного вебинара от OTUS.
Регистрация: https://vk.cc/cRW5WM

Фреймворк playwright изо дня в день набирает популярность на рынке и многие команды начинают задумываться о его внедрении для написания UI и API автотестов. На занятии поговорим о самом фреймворке и почему он набирает популярность и напишем пару UI и API автотестов.

После занятия ты:
- поймёшь, как работает Playwright и чем он удобен для тестировщика;
- сможешь написать и запустить простые UI и API автотесты;
- получишь представление, как внедрять Playwright в реальный проект.

Регистрация и подробности о курсе: https://vk.cc/cRW5WM

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
3🔥3👍2
👩‍💻 Spring Boot Pro Tip: свой FailureAnalyzer

В Spring Boot можно перехватывать ошибки на этапе запуска и превращать их в понятные человеку сообщения. Для этого создан механизм FailureAnalyzer.

Зачем он нужен
- улучшает диагностику на старте приложения
- помогает быстро находить причины конфигурационных ошибок
- делает логирование чище и понятнее

Как работает
Вы создаёте свой класс, который анализирует исключение и возвращает читаемое описание проблемы и советы по исправлению.

Под капотом Spring Boot автоматически подцепит ваш анализатор и покажет дружелюбное сообщение вместо сырого stacktrace.

Документация

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