Java библиотека
31.6K subscribers
2.14K photos
65 videos
6 files
1.84K links
Книги, статьи, мемы и многое другое для Java программиста!

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

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

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

Сообщество VK https://vk.com/javatutorial
Download Telegram
🖥 Caffeine — это Java-библиотека для кэширования в памяти, обеспечивающая высокую производительность и оптимальный уровень попаданий в кэш!

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

🔐 Лицензия: Apache-2.0

🖥 Github

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Live Templates в IntelliJ IDEA

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

Live Templates — это заготовки кода, которые можно вставлять по сокращённым ключам. Например, вместо того чтобы каждый раз писать System.out.println(), достаточно написать sout и нажать Enter. IDEA сама развернёт код.

Live Templates поддерживают Java, Kotlin, JS, Groovy, SQL и XML/HTML.

📌 Полезные шаблоны по умолчанию

🟢 sout → System.out.println();
🟢 fori → for (int i=0; i< ; i++) {}
🟢 psvm → public static void main(String[] args) {...}
🟢 ifn → if (obj == null) {}
🟢 prsf → private static final

Полный список live templates: File → Settings→ Editor → Live Templates.

⚙️ Как создать свой шаблон

1️⃣ Открываем File → Settings→ Editor → Live Templates
2️⃣ Выбираем группу или создаём свою.
3️⃣ Нажимаем "+" и задаём аббревиатуру (триггер шаблона).
4️⃣ Пишем в поле Template text код с переменными ($VAR$).
5️⃣ Указываем Context, где шаблон будет работать (Java, SQL, XML и т. д.).
6️⃣ Применяем и тестируем.

Live Templates – это must-have инструмент для ускорения написания кода. Настройте под себя и забудьте про шаблонный код.

💬 Делитесь интересными кастомными шаблонами

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 JDBG — это мощный инструмент для динамической отладки и реверс-инжиниринга Java-приложений!

🌟 Он использует внедрение динамической библиотеки (DLL) вместе с JNI и JVMTI для предоставления глубокого анализа работающих Java-программ.

🔐 Лицензия: Apache-2.0

🖥 Github

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Есть фича. Есть дедлайн. Есть понимание, что тесты надо писать… но они отъедают время, которого итак впритык.

Один наш знакомый девелопер сказал: «С тех пор как поставил Explyt Test — начал писать меньше тестов… но покрытие стало лучше. Как это вообще возможно?!»

Попробуйте сами. Плагин сам предлагает тесты для вашего кода — прямо в IDE.
👉 explyt.ai — сэкономь себе пару часов уже сегодня.
Композиция: что это и когда использовать?

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

Пример:

class Heart {
void beat() {
System.out.println("Сердце бьется");
}
}

class Human {
private final Heart heart;

Human() {
this.heart = new Heart(); // Сердце создаётся вместе с человеком
}

void live() {
heart.beat();
System.out.println("Человек живёт");
}
}

public class Main {
public static void main(String[] args) {
Human human = new Human();
human.live();
}
}


🔹 В этом примере класс Human композирует объект Heart, и сердце не может существовать вне человека.

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

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите прокачать карьеру в разработке на Java, но не знаете, с чего начать?

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

На курсе вы:

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

Пройдите короткое тестирование и получите скидку на обучение:

https://vk.cc/cLed5V
🖥 Java Version Almanac — это сайт, который предоставляет подробные данные о каждом выпуске Java, включая новые функции, изменения в API и сравнения между версиями!

🔗 Ссылка: *клик*

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Selector

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

Возможности Selector:
— Регистрация множества каналов в Selector для мониторинга.
— Проверка готовности зарегистрированных каналов к операциям чтения, записи.
— Извлечение готовых каналов и выполнение операций с ними.
— Отмена регистрации каналов в Selector.

Использование Selector позволяет избежать блокировки на операциях чтения/записи по каналам и эффективно масштабировать приложение для одновременной работы с большим количеством соединений.
Класс часто применяется в сетевых серверах для неблокирующей обработки большого числа клиентских соединений в одном потоке.


Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 А ты справишься с тестом по Kotlin?

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

Если успешно пройдешь тест, сможешь забронировать место в группе по выгодной цене! И еще дарим промокод Kotlin5

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

➡️ Пройти тест и забрать скидку: https://vk.cc/cLkQy3

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Java и gRPC: быстрый старт со Spring Boot | Преимущества, Настройка и Использование

Сегодня у нас QuickStart и обзор ныне очень популярной технологии - gRPC, оставляйте свое мнение в комментариях и читайте описание, приятного! :)

📺🗣СМОТРЕТЬ RUTUBE

🌐🗣СМОТРЕТЬ VKVIDEO

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Как отслеживать изменения в файловой системе в реальном времени

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

🟢Возможные сценарии использования:
- Отслеживание действий пользователя.
- Мониторинг изменений в конфигурационных файлах для их динамической перезагрузки.
- Автоматическая обработка данных, как только они поступают в систему (например, новые изображения или документы).
- Логирование и анализ активности в системных директориях.

import java.nio.file.*;
import java.io.IOException;

public class DirectoryWatcher {
public static void main(String[] args) throws IOException, InterruptedException {
WatchService watchService = FileSystems.getDefault().newWatchService();
Path path = Paths.get("/path/to/watch");
path.register(watchService, StandardWatchEventKinds.ENTRY_CREATE,
StandardWatchEventKinds.ENTRY_DELETE,
StandardWatchEventKinds.ENTRY_MODIFY);

System.out.println("Monitoring directory: " + path);

while (true) {
WatchKey key = watchService.take();
key.pollEvents().forEach(event -> {
WatchEvent.Kind<?> kind = event.kind();
System.out.println(kind.name() + ": " + event.context());
});
if (!key.reset()) break;
}
}
}


WatchService — это механизм мониторинга событий файловой системы. Для его работы регистрируем путь для отслеживания событий с помощью path.register() и указываем тип событий: создание, удаление или модификация.
В бесконечном цикле программа ожидает события с помощью watchService.take(), после чего события обрабатываются через лямбду.
Метод reset() проверяет, можно ли продолжить отслеживание, если нет — цикл завершится.

🟢Преимущества использования:
- Моментальное реагирование на изменения файлов, что упрощает автоматизацию.
- Легкая настройка — всего несколько строк кода для полного мониторинга директории.
- Минимальные ресурсы — WatchService не требует постоянного опроса файловой системы.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
StringBuilder

StringBuilder — это класс для работы с изменяемыми строками, аналогичный StringBuffer. API класса StringBuilder такой же, как у StringBuffer, он также хранит строку в виде модифицируемого массива символов.

Но, в отличие от StringBuffer, StringBuilder не является потокобезопасным. Он работает быстрее за счет отсутствия синхронизации.
Поэтому его рекомендуется использовать в однопоточных приложениях для работы со строками, когда нет необходимости в синхронизации.

При создании можно задать начальную емкость buffer'а в виде размера массива символов.
Если строка превышает текущую емкость, она автоматически расширяется с сохранением содержимого.


Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Столкнулись с падением производительности базы данных?
Не делайте резких движений: вы можете ухудшить ситуацию.

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

На открытом вебинаре «Как ускорить работу и повысить надёжность PostgreSQL»
вы узнаете:
🎯как обеспечить высокую производительность и отказоустойчивость базы данных
🎯как вовремя выявить деградацию производительности с помощью диагностики

Вебинар проведёт Дмитрий Золотов, Kotlin-разработчик в «Яндексе».

Приглашаем технических руководителей, админов БД, девопсов и разработчиков.

Все участники получат в подарок видеоурок «Безопасность в PostgreSQL: защита данных, управление доступом и аудит» и скидку 7% на любой курс OTUS.

6 мая, 19:00 МСК
Бесплатно
Записаться - https://otus.pw/oNnE/

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFJZo9vG
🖥 segmantix — это библиотека для Java, предназначенная для управления многоуровневым доступом к данным на уровне пользователей, ролей и арендаторов!

🌟 Основанная на JPA и slf4j-api, она обеспечивает детализированный контроль доступа, позволяя настраивать разрешения для операций, таких как чтение, запись и удаление.

🔐 Лицензия: Apache-2.0

🖥 Github

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Что такое авторизация и аутентификация?

🟢Аутентификация — процесс проверки подлинности субъекта (пользователя или системы) на основе предоставленных им учетных данных (например, пары логин/пароль, сертификата или токена). Она подтверждает, что субъект является тем, за кого себя выдаёт.

🟢Авторизация — процесс определения прав и привилегий аутентифицированного субъекта в рамках определённой системы или ресурса. Она определяет, какие действия или ресурсы доступны субъекту после успешной аутентификации.

Аутентификация устанавливает личность субъекта, а авторизация — его полномочия в системе.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет 💡

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

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 JDBC vs JPA

🟢JDBC (Java Database Connectivity) — это низкоуровневый API для работы с реляционными базами данных. Позволяет напрямую писать SQL-запросы и управлять соединениями.

✔️ Преимущества

— Полный контроль за счёт написания SQL-запросов.
— Без лишней магии запросы выполняются быстро.
— Работает с любой реляционной БД без привязки к ORM.

Недостатки

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

🟢JPA (Java Persistence API) — это спецификация для работы с базами данных через объектно-реляционное отображение (ORM). Самая популярная реализация — Hibernate.

✔️ Преимущества

— Работа с БД ведётся через Entity, а SQL-запросы формируются автоматически.
— Поддержка связей (@OneToMany и т. д.), ленивой загрузки и кэширования.
— Поддержка автоматического управления транзакциями через EntityManager.

Недостатки

— Много аннотаций, конфигураций и магии.
— Автоматическая генерация запросов не всегда эффективна.
— Нужно разбираться, какой SQL-запрос Hibernate сгенерировал и почему.

Пишите в комментах, что предпочитаете вы
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ Квиз на знание Java

Пройти тестирование — сложно! А ты справишься?
21 вопрос, 30 минут

Проверь себя - пройди квиз и оцени свой уровень навыков, а также свою готовность к обучению на курсе — «Разработчик на Spring Framework» от OTUS.

💻 За 5 месяцев обучения ты освоишь современные возможности Spring, научишься быстро проходить путь от идеи до production-grade, создавать Web-приложения на микросервисной архитектуре и решать высокоуровневые задачи по разработке.

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

Если успешно пройдешь тест, сможешь забронировать место в группе по выгодной цене! И еще дарим промокод SPRING5

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM