StringBuilder
StringBuilder — это класс для работы с изменяемыми строками, аналогичный StringBuffer. API класса StringBuilder такой же, как у StringBuffer, он также хранит строку в виде модифицируемого массива символов.
Но, в отличие от StringBuffer, StringBuilder не является потокобезопасным. Он работает быстрее за счет отсутствия синхронизации.
Поэтому его рекомендуется использовать в однопоточных приложениях для работы со строками, когда нет необходимости в синхронизации.
При создании можно задать начальную емкость buffer'а в виде размера массива символов.
Если строка превышает текущую емкость, она автоматически расширяется с сохранением содержимого.
✅ Java библиотека #java
StringBuilder — это класс для работы с изменяемыми строками, аналогичный StringBuffer. API класса StringBuilder такой же, как у StringBuffer, он также хранит строку в виде модифицируемого массива символов.
Но, в отличие от StringBuffer, StringBuilder не является потокобезопасным. Он работает быстрее за счет отсутствия синхронизации.
Поэтому его рекомендуется использовать в однопоточных приложениях для работы со строками, когда нет необходимости в синхронизации.
При создании можно задать начальную емкость buffer'а в виде размера массива символов.
Если строка превышает текущую емкость, она автоматически расширяется с сохранением содержимого.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥2
Столкнулись с падением производительности базы данных?
Не делайте резких движений: вы можете ухудшить ситуацию.
Сначала нужно верно диагностировать причину проблемы.
Возможно вы неправильно выбрали индексы, а быть может дело вообще в самой архитектуре БД – вариантов масса!
На открытом вебинаре «Как ускорить работу и повысить надёжность PostgreSQL»
вы узнаете:
🎯как обеспечить высокую производительность и отказоустойчивость базы данных
🎯как вовремя выявить деградацию производительности с помощью диагностики
Вебинар проведёт Дмитрий Золотов, Kotlin-разработчик в «Яндексе».
Приглашаем технических руководителей, админов БД, девопсов и разработчиков.
Все участники получат в подарок видеоурок «Безопасность в PostgreSQL: защита данных, управление доступом и аудит» и скидку 7% на любой курс OTUS.
6 мая, 19:00 МСК
Бесплатно
Записаться - https://otus.pw/oNnE/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFJZo9vG
Не делайте резких движений: вы можете ухудшить ситуацию.
Сначала нужно верно диагностировать причину проблемы.
Возможно вы неправильно выбрали индексы, а быть может дело вообще в самой архитектуре БД – вариантов масса!
На открытом вебинаре «Как ускорить работу и повысить надёжность PostgreSQL»
вы узнаете:
🎯как обеспечить высокую производительность и отказоустойчивость базы данных
🎯как вовремя выявить деградацию производительности с помощью диагностики
Вебинар проведёт Дмитрий Золотов, Kotlin-разработчик в «Яндексе».
Приглашаем технических руководителей, админов БД, девопсов и разработчиков.
Все участники получат в подарок видеоурок «Безопасность в PostgreSQL: защита данных, управление доступом и аудит» и скидку 7% на любой курс OTUS.
6 мая, 19:00 МСК
Бесплатно
Записаться - https://otus.pw/oNnE/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFJZo9vG
❤3👍2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥2
Что такое авторизация и аутентификация?
🟢 Аутентификация — процесс проверки подлинности субъекта (пользователя или системы) на основе предоставленных им учетных данных (например, пары логин/пароль, сертификата или токена). Она подтверждает, что субъект является тем, за кого себя выдаёт.
🟢 Авторизация — процесс определения прав и привилегий аутентифицированного субъекта в рамках определённой системы или ресурса. Она определяет, какие действия или ресурсы доступны субъекту после успешной аутентификации.
Аутентификация устанавливаетличность субъекта , а авторизация — его полномочия в системе .
✅ Java библиотека #java
Аутентификация устанавливает
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤4🔥4
Совет 💡
Обычно при сортировке в Spring Data мы указываем свойство, по которому хотим отсортировать, как строку. Однако существует класс
✅ Java библиотека #java
Обычно при сортировке в Spring Data мы указываем свойство, по которому хотим отсортировать, как строку. Однако существует класс
TypedSort
, который дает нам возможность передавать функцию в качестве параметра для сортировки. Это повышает безопасность типов в нашем коде.Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥5❤4
— Полный контроль за счёт написания SQL-запросов.
— Без лишней магии запросы выполняются быстро.
— Работает с любой реляционной БД без привязки к ORM.
— Нужно самому писать маппинг объектов, обрабатывать исключения и управлять соединениями.
— Нет встроенного кэширования, ленивой загрузки и работы с графами объектов.
— Нужно следить за autocommit и rollback.
— Работа с БД ведётся через Entity, а SQL-запросы формируются автоматически.
— Поддержка связей (@OneToMany и т. д.), ленивой загрузки и кэширования.
— Поддержка автоматического управления транзакциями через EntityManager.
— Много аннотаций, конфигураций и магии.
— Автоматическая генерация запросов не всегда эффективна.
— Нужно разбираться, какой SQL-запрос Hibernate сгенерировал и почему.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25❤6🔥3
Пройти тестирование — сложно! А ты справишься?
21 вопрос, 30 минут
Проверь себя - пройди квиз и оцени свой уровень навыков, а также свою готовность к обучению на курсе — «Разработчик на Spring Framework» от OTUS.
💻 За 5 месяцев обучения ты освоишь современные возможности Spring, научишься быстро проходить путь от идеи до production-grade, создавать Web-приложения на микросервисной архитектуре и решать высокоуровневые задачи по разработке.
👉 ПРОЙТИ ТЕСТ: https://vk.cc/cLsyXV
Если успешно пройдешь тест, сможешь забронировать место в группе по выгодной цене! И еще дарим промокод
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2🔥2
Media is too big
VIEW IN TELEGRAM
Изучаешь Java - создай проект. Перезагрузка.
Выпуск 2. Описание процесса и систем.
В этом выпуске мы в общих словах вспомним, для чего мы делаем систему и как она работает.
🌐 🗣 СМОТРЕТЬ VKVIDEO
✅ Java библиотека #java
Выпуск 2. Описание процесса и систем.
В этом выпуске мы в общих словах вспомним, для чего мы делаем систему и как она работает.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥3❤2
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.
Мы создали альтернативу 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🔥3❤2
Совет 💡
Добавьте в JDBC URL свойство
✅ Java библиотека #java
Добавьте в JDBC URL свойство
ApplicationName
(зависит от БД, не в каждой БД оно есть!). Таким образом, в списке сессий вместо имени JDBC-драйвера будет отображаться имя набора. Это поможет при поиске неисправностей, когда несколько приложений подключаются к одной и той же БД.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍3❤2
Spring управляет созданием бинов через Dependency Injection (DI), но при большом количестве компонентов это замедляет запуск приложения и расходует память.
Используйте @Lazy, чтобы откладывать создание бина до первого вызова:
@Component
public class Component {
@Lazy
@Autowired
private Service service;
}
— Редко используемые сервисы (например, отчёты, аналитика).
— В крупных приложениях с тысячами зависимостей.
— В микросервисах для уменьшения потребления ресурсов.
— При загрузке тяжёлых конфигураций.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥5❤3
🧑💻 PoCo — генератор классов-сборщиков для сложных объектов. Вместо ручного долгого парсинга POJO, библиотека автоматически генерирует оптимизированные классы-сборщики на этапе компиляции.
📥 Библиотека интегрируется через Gradle-плагин и не требует runtime-зависимостей. В планах разработки — расширение поддержки кастомных контейнеров и интерфейсов, что сделает решение ещё более гибким.
📝 PoCo стоит рассмотреть тем, кто работает с комплексными доменными моделями и устал от длительного ручного парсинга данных.
🖥 Github
✅ Java библиотека #java
📥 Библиотека интегрируется через Gradle-плагин и не требует runtime-зависимостей. В планах разработки — расширение поддержки кастомных контейнеров и интерфейсов, что сделает решение ещё более гибким.
📝 PoCo стоит рассмотреть тем, кто работает с комплексными доменными моделями и устал от длительного ручного парсинга данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥3☃1
Бесплатный вебинар от Слёрма «Траблшутинг K8s: инструменты и лайфхаки для разработчиков».
На вебинаре:
- начнём с kubectl,
- посмотрим сайдкар контейнеры и узнаем, зачем их использовать,
- разберемся с сетевыми проблемами,
- научимся использовать strace для сложных случаев
Спикер: Виталий Лихачев, SRE в крупном нидерландском тревелтехе.
Дата: 14 мая 19:00
👉 Занять место — через бота.
В конце вебинара — подарок 🎁
Вебинар проходит в рамках курса «Kubernetes для разработчиков»
#реклама
О рекламодателе
erid: 2W5zFHBxFX6
На вебинаре:
- начнём с 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-событиями):
🟢 Что происходит
🔘 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
Если вам нужно анализировать производительность приложения в реальном времени, но профилировщики вроде 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();
}
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤6🔥3
📚 Awesome JavaFX — это тщательно подобранная коллекция ресурсов, включающая фреймворки, библиотеки, руководства и примеры кода, которые помогут ускорить написание кода.
Здесь собраны множество полезных инструментов для разработчиков всех уровней - от учебных материалов для новичков до продвинутых решений вроде TornadoFX.
Пользуйтесь ☕️
🖥 GitHub
✅ Java библиотека #java
Здесь собраны множество полезных инструментов для разработчиков всех уровней - от учебных материалов для новичков до продвинутых решений вроде TornadoFX.
Пользуйтесь ☕️
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥4❤3
— Чёткая структура проекта и стандартизация.
— Огромное количество доступных плагинов.
— Репозитории (Maven Central) делают управление зависимостями удобным.
— XML-файлы могут раздуваться и становиться громоздкими.
— Скорость сборки ниже по сравнению с Gradle.
— Сложнее писать кастомные задачи (Goals).
— Поддерживает Groovy и Kotlin DSL.
— Более быстрая сборка благодаря инкрементальному билду и кэшированию.
— Меньше кода в конфигурации по сравнению с Maven.
— Меньше стандартов, возможна путаница с конфигурацией.
— Выше порог вхождения, особенно если переходите с Maven.
— Может быть сложнее отлаживать проблемы со сборкой.
👍🏼 — Maven, 🔥 — Gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍110🔥58❤1
Forwarded from Java News
Основные паттерны микросервисной архитектуры: Strangler Fig, API Gateway, Service Mesh и другие
В данной статье мы разберем несколько ключевых паттернов, связанных с микросервисами. Речь пойдет о паттернах миграции и интеграции (таких как Strangler Fig – «удушающее дерево» и API Gateway), о сетевых и структурных паттернах (Service Mesh, Sidecar), о шаблонах работы с данными (Database per Service, CQRS) и об особом подходе к хранению состояния (Event Sourcing). Для каждого паттерна мы рассмотрим его суть, назначение, примеры использования, а также плюсы и возможные сложности. К некоторым паттернам приведены упрощенные диаграммы и фрагменты кода, чтобы иллюстративно показать, как они работают на практике.
Читать статью
В данной статье мы разберем несколько ключевых паттернов, связанных с микросервисами. Речь пойдет о паттернах миграции и интеграции (таких как Strangler Fig – «удушающее дерево» и API Gateway), о сетевых и структурных паттернах (Service Mesh, Sidecar), о шаблонах работы с данными (Database per Service, CQRS) и об особом подходе к хранению состояния (Event Sourcing). Для каждого паттерна мы рассмотрим его суть, назначение, примеры использования, а также плюсы и возможные сложности. К некоторым паттернам приведены упрощенные диаграммы и фрагменты кода, чтобы иллюстративно показать, как они работают на практике.
Читать статью
VK
Основные паттерны микросервисной архитектуры: Strangler Fig, API Gateway, Service Mesh и другие
Микросервисная архитектура стала де-факто стандартом для построения современных масштабируемых приложений. Вместо единого монолитного при..
👍15❤3🔥3
🐈 BallCat — инструмент для быстрой разработки Java-проектов с акцентом на минимализм и расширяемость.
Проект примечателен своей модульностью: вместо монолитного фреймворка он предлагает набор независимых инструментов, которые можно подключать по мере необходимости. Особый интерес вызывает встроенная поддержка китайских технологических стандартов, что делает его привлекательным для локального рынка.
🖥 GitHub
✅ Java библиотека #java
Проект примечателен своей модульностью: вместо монолитного фреймворка он предлагает набор независимых инструментов, которые можно подключать по мере необходимости. Особый интерес вызывает встроенная поддержка китайских технологических стандартов, что делает его привлекательным для локального рынка.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥3
В чем разница между map() и flatMap()?
Оба метода используются для трансформации данных в Stream, но с ключевыми отличиями:
▪️ map(Function<T, R>) применяет функцию к каждому элементу потока и возвращает поток с преобразованными элементами (Stream<R>).
▪️ flatMap(Function<T, Stream<R>>) делает то же самое, но ожидает, что функция вернет Stream<R>, а затем "выпрямляет" вложенные потоки в один Stream<R>.
📌 Пример:
✅ Java библиотека #java
Оба метода используются для трансформации данных в 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]
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍12❤7
Forwarded from Java News
OpenIDE: первая российская среда разработки с поддержкой Java 24
Наконец-то состоялся официальный релиз OpenIDE – независимой российской среды разработки, которую совместно создают «Группа Астра», Axiom JDK и Haulmont.
Проект стартовал как open source-инициатива в конце прошлого года и всего за полгода прошёл путь от идеи до стабильной версии. В числе ключевых фич — поддержка Java 24 уже "из коробки", собственный маркетплейс плагинов и "многоязычность".
В статье — ключевые достижения, проблемы, а также планы по развитию OpenIDE и её экосистемы.
Читать статью
Наконец-то состоялся официальный релиз OpenIDE – независимой российской среды разработки, которую совместно создают «Группа Астра», Axiom JDK и Haulmont.
Проект стартовал как open source-инициатива в конце прошлого года и всего за полгода прошёл путь от идеи до стабильной версии. В числе ключевых фич — поддержка Java 24 уже "из коробки", собственный маркетплейс плагинов и "многоязычность".
В статье — ключевые достижения, проблемы, а также планы по развитию OpenIDE и её экосистемы.
Читать статью
VK
OpenIDE: первая российская среда разработки с поддержкой Java 24
Наконец-то состоялся официальный релиз OpenIDE – независимой российской среды разработки, которую совместно создают «Группа Астра», Axiom..
👍33😁8🔥5❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Ctrl + C
и Ctrl + V
, тебе точно понравится и Ctrl + W
. Это как выделение текста с помощью AI 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
💯12🔥4❤2👍2🎄1