Java библиотека
31.7K subscribers
2.39K photos
82 videos
9 files
2.15K links
Книги, статьи, мемы и многое другое для Java программиста!

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

🖥 Github

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

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

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

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

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

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

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥54
🖥 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
👍256🔥3
⚡️ Квиз на знание 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
👍42🔥2
Media is too big
VIEW IN TELEGRAM
Изучаешь Java - создай проект. Перезагрузка.

Выпуск 2. Описание процесса и систем.

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

🌐🗣СМОТРЕТЬ VKVIDEO

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥32
TeleStore — платформа для разработчиков, где выплаты происходят быстро, а подключение не требует юрлица.

Мы создали альтернативу App Store и Google Play: маркетплейс с полноценной платёжной системой, низкими комиссиями (от 7,5%) и международной инфраструктурой.

Принимайте платежи картами (включая МИР) и получайте выплаты в USDT — моментально, на любой криптокошелёк. Интеграция занимает всего день: у нас есть SDK и техподдержка на каждом этапе.

Для первых 30 партнёров — бонус от $500 на продвижение, креативы и трафик от нашей маркетинг-команды. Мы не просто размещаем — мы помогаем зарабатывать.

Если вы создаёте браузерные игры или Telegram Mini Apps — подключайтесь:📍 Заявка: https://tglink.io/f4f28a2a1004?erid=2W5zFJj9cet
📍 О платформе: https://tglink.io/938b6afd3e8a

Реклама. Иванов А.О. ИНН 451200841661.
👍3🔥32
Совет 💡

Добавьте в JDBC URL свойство ApplicationName (зависит от БД, не в каждой БД оно есть!). Таким образом, в списке сессий вместо имени JDBC-драйвера будет отображаться имя набора. Это поможет при поиске неисправностей, когда несколько приложений подключаются к одной и той же БД.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍32
📌 Оптимизация Dependency Injection в Spring

Spring управляет созданием бинов через Dependency Injection (DI), но при большом количестве компонентов это замедляет запуск приложения и расходует память.

Используйте @Lazy, чтобы откладывать создание бина до первого вызова:
@Component
public class Component {

@Lazy
@Autowired
private Service service;
}


🟢Когда применять

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

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥53
🧑‍💻 PoCo — генератор классов-сборщиков для сложных объектов. Вместо ручного долгого парсинга POJO, библиотека автоматически генерирует оптимизированные классы-сборщики на этапе компиляции.

📥 Библиотека интегрируется через Gradle-плагин и не требует runtime-зависимостей. В планах разработки — расширение поддержки кастомных контейнеров и интерфейсов, что сделает решение ещё более гибким.

📝 PoCo стоит рассмотреть тем, кто работает с комплексными доменными моделями и устал от длительного ручного парсинга данных.

🖥 Github

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🔥31
Бесплатный вебинар от Слёрма «Траблшутинг K8s: инструменты и лайфхаки для разработчиков».

На вебинаре:
- начнём с kubectl,
- посмотрим сайдкар контейнеры и узнаем, зачем их использовать,
- разберемся с сетевыми проблемами,
- научимся использовать strace для сложных случаев

Спикер: Виталий Лихачев, SRE в крупном нидерландском тревелтехе.

Дата: 14 мая 19:00

👉 Занять место — через бота.

В конце вебинара — подарок 🎁

Вебинар проходит в рамках курса «Kubernetes для разработчиков»

#реклама
О рекламодателе
erid: 2W5zFHBxFX6
2👍2🔥2
Живая телеметрия без overhead

Если вам нужно анализировать производительность приложения в реальном времени, но профилировщики вроде VisualVM или async-profiler слишком тяжелые, то Java Flight Recorder (JFR) Event Streaming — ваш новый лучший друг.

JFR давно встроен в JVM и собирает метрики без ощутимого влияния на производительность (накладные расходы <1%). Раньше, чтобы получить данные, нужно было снимать дамп и разбирать его постфактум. Начиная с Java 14 пакет jdk.jfr.consumer предоставляет API, благодаря которому можно стримить события в реальном времени прямо в приложение.

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

Допустим, вы хотите следить за количеством вызовов System.gc() (или любыми другими JVM-событиями):
import jdk.jfr.consumer.*;

public class JfrStreamingExample {
public static void main(String[] args) {
try (var stream = EventStream.openRepository()) {
stream.onEvent("jdk.GarbageCollection", event ->
System.out.println("GC event: " + event.getLong("gcId"))
);
stream.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}

🟢Что происходит

🔘EventStream.openRepository() — подключается к JFR и слушает события онлайн
🔘onEvent("jdk.GarbageCollection", callback) — подписывается на сборку мусора
🔘stream.start(); — запускает стриминг

🟢Где полезно

1️⃣ Мониторинг продакшена — следите за GC, JIT-компиляцией, блокировками потоков без перезапуска JVM.
2️⃣ Анализ нагрузки — получайте данные о CPU, аллокациях памяти, I/O в реальном времени.
3️⃣ Трассировка медленных запросов — находите узкие места без включения дорогих профилировщиков.

🟢Что нужно знать

🔘Работает без agent'ов и почти без overhead.
🔘Доступно из коробки в OpenJDK 14+.
🔘Встроенные события JVM уже можно стримить, но для своих нужно создать Custom JFR Events.

Вы уже пробовали JFR Event Streaming?

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍126🔥3
📚 Awesome JavaFX — это тщательно подобранная коллекция ресурсов, включающая фреймворки, библиотеки, руководства и примеры кода, которые помогут ускорить написание кода.

Здесь собраны множество полезных инструментов для разработчиков всех уровней - от учебных материалов для новичков до продвинутых решений вроде TornadoFX.
Пользуйтесь ☕️

🖥 GitHub

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥43
⚙️ Maven vs Gradle

🟢Maven — это инструмент сборки, использующий XML-конфигурацию (pom.xml). Популярен в Java-мире и часто применяется в корпоративных проектах.

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

— Чёткая структура проекта и стандартизация.
— Огромное количество доступных плагинов.
— Репозитории (Maven Central) делают управление зависимостями удобным.

Недостатки

— XML-файлы могут раздуваться и становиться громоздкими.
— Скорость сборки ниже по сравнению с Gradle.
— Сложнее писать кастомные задачи (Goals).

🟢Gradle — современный инструмент сборки, использующий декларативный стиль (build.gradle.kts или build.gradle). Часто применяется в Android-разработке и для микросервисов.

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

— Поддерживает Groovy и Kotlin DSL.
— Более быстрая сборка благодаря инкрементальному билду и кэшированию.
— Меньше кода в конфигурации по сравнению с Maven.

Недостатки

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

👍🏼 — Maven, 🔥 — Gradle

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍110🔥581
Forwarded from Java News
Основные паттерны микросервисной архитектуры: Strangler Fig, API Gateway, Service Mesh и другие

В данной статье мы разберем несколько ключевых паттернов, связанных с микросервисами. Речь пойдет о паттернах миграции и интеграции (таких как Strangler Fig – «удушающее дерево» и API Gateway), о сетевых и структурных паттернах (Service Mesh, Sidecar), о шаблонах работы с данными (Database per Service, CQRS) и об особом подходе к хранению состояния (Event Sourcing). Для каждого паттерна мы рассмотрим его суть, назначение, примеры использования, а также плюсы и возможные сложности. К некоторым паттернам приведены упрощенные диаграммы и фрагменты кода, чтобы иллюстративно показать, как они работают на практике.

Читать статью
👍153🔥3
🐈 BallCat — инструмент для быстрой разработки Java-проектов с акцентом на минимализм и расширяемость.

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

🖥 GitHub

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🔥3
В чем разница между map() и flatMap()?

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

▪️ map(Function<T, R>) применяет функцию к каждому элементу потока и возвращает поток с преобразованными элементами (Stream<R>).

▪️ flatMap(Function<T, Stream<R>>) делает то же самое, но ожидает, что функция вернет Stream<R>, а затем "выпрямляет" вложенные потоки в один Stream<R>.

📌 Пример:
List<String> words = List.of("Hello", "World");

// map(): превращает каждое слово в список символов
List<List<Character>> mapped = words.stream()
.map(word -> word.chars()
.mapToObj(c -> (char) c)
.toList())
.toList();

// flatMap(): превращает каждое слово в поток символов и "сплющивает" их в один поток
List<Character> flatMapped = words.stream()
.flatMap(word -> word.chars()
.mapToObj(c -> (char) c))
.toList();

System.out.println(mapped); // [[H, e, l, l, o], [W, o, r, l, d]]
System.out.println(flatMapped); // [H, e, l, l, o, W, o, r, l, d]

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍127
Forwarded from Java News
OpenIDE: первая российская среда разработки с поддержкой Java 24

Наконец-то состоялся официальный релиз OpenIDE – независимой российской среды разработки, которую совместно создают «Группа Астра», Axiom JDK и Haulmont.

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

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


Читать статью
👍33😁8🔥54
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Совет💡: если ты обожаешь Ctrl + C и Ctrl + V, тебе точно понравится и Ctrl + W.

Это как выделение текста с помощью AI 😉

👩‍💻 Ссылка

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
💯12🔥42👍2🎄1