🚀 Совет по Java🚀
Профилирование производительности
VisualVM. Анализируйте использование памяти, потребление процессора и поведение потоков для оптимизации вашего приложения.
https://visualvm.github.io
#Java #JavaMonitoring
@javatg
Профилирование производительности
Java
с помощью VisualVM. Анализируйте использование памяти, потребление процессора и поведение потоков для оптимизации вашего приложения.
https://visualvm.github.io
#Java #JavaMonitoring
@javatg
❤12👍6🔥2
🚀 Юнит-тестирование вашей Java-архитектуры 🚀
https://archunit.org
#ArchUnit #Java #Тестирование
@javatg
@archtests
- это мощная библиотека Java, которая позволяет писать модульные тесты для обеспечения соблюдения архитектурных ограничений и правил в вашем коде.https://archunit.org
#ArchUnit #Java #Тестирование
@javatg
❤8👍5🔥1
Совет 🚀 JUnit 5 🚀
Повторяющиеся тесты с помощью
Используйте
https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/RepeatedTest.html
#JUnit5 #Java
@javatg
Повторяющиеся тесты с помощью
@RepeatedTest
Используйте
@RepeatedTest
для запуска одного и того же теста несколько раз, каждый раз с разными входными данными или условиями, что особенно полезно для тестирования. 🔥https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/RepeatedTest.html
#JUnit5 #Java
@javatg
👍11❤5🔥1
🚀 Spring совет 🚀
Служебный класс для работы с веб-задачами, такими как извлечение параметров запроса, обработка составных запросов и управление файлами cookie. 🔥
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/WebUtils.html
#Spring #java
@javatg
WebUtils
Служебный класс для работы с веб-задачами, такими как извлечение параметров запроса, обработка составных запросов и управление файлами cookie. 🔥
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/WebUtils.html
#Spring #java
@javatg
👍14❤5🔥3
🚀 Совет по Java API🚀
Отслеживайте события файловой системы в режиме реального времени.
Инструмент для обнаружения изменений в файлах и каталогах независимым от платформы способом. 🔥
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/WatchService.html
#Java #JavaAPI
@javatg
java.nio.file.WatchService
Отслеживайте события файловой системы в режиме реального времени.
Инструмент для обнаружения изменений в файлах и каталогах независимым от платформы способом. 🔥
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/WatchService.html
#Java #JavaAPI
@javatg
👍15❤5🔥4
При использовании
@SpringSecurity
вы можете получить доступ к текущим данным аутентификации, добавив объект Authentication в качестве параметра метода в классе @RestController.
@javatgPlease open Telegram to view this post
VIEW IN TELEGRAM
👍33🔥6❤5
#Java #Spring @SpringSecurity
Совет: Если вы хотите получить доступ к текущему аутентифицированному пользователю в любом месте кода, вы можете использовать класс
SecurityContextHolder
. С ним, вам не нужно передавать объект аутентификации из вашего
RestController
через несколько служб.@javatg
👍19❤9🔥4🥰2
☕️ JDK 23, запланированный к выпуску 17 сентября, представит множество новшеств, включая третий просмотр таких функций, как ограниченные значения и структурированная параллельность, а также второй просмотр гибких конструкторов и др.
📝 Также в новой версии появятся декларации импорта модулей и Markdown в комментариях документации. Нововведение будет поддерживать разработчиков с помощью улучшенных возможностей для надёжной работы приложений и обработки данных. Однако, возможность использования строковых шаблонов исключена из этой версии. JDK 23 не будет иметь долгосрочной поддержки (LTS), поддержка будет осуществляться всего лишь шесть месяцев.
#java #integrity #openjdk #programming
@javatg
📝 Также в новой версии появятся декларации импорта модулей и Markdown в комментариях документации. Нововведение будет поддерживать разработчиков с помощью улучшенных возможностей для надёжной работы приложений и обработки данных. Однако, возможность использования строковых шаблонов исключена из этой версии. JDK 23 не будет иметь долгосрочной поддержки (LTS), поддержка будет осуществляться всего лишь шесть месяцев.
#java #integrity #openjdk #programming
@javatg
👍11❤3🤬2🔥1
Kotlin — современный язык программирования, который упрощает процесс разработки и повышает безопасность кода.
Сохраните себе этот курс, посвященный основам программирования на Kotlin. В нём рассматриваются ключевые концепции, такие как типы данных, операторы, переменные, условные выражения, циклы, массивы и функции. Этот вводный курс идеально подходит для новичков или тех, у кого есть минимальный опыт программирования.
Курс
#java #курс
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍4😁4🔥2🤯1
Apache Gravitino - это высокопроизводительное, геораспределенное озеро метаданных.
Озеро данных — это место, где хранятся структурированные и неструктурированные данные, а также метод организации больших объемов очень разных данных, поступающих из различных источников.
Озера данных играют все более важную роль, поскольку люди, особенно занятые в бизнесе и сфере технологий, хотят исследовать и обнаруживать все более разнообразные данные. Это гораздо проще сделать, если собрать все данные или хотя бы большинство данных в одном месте.
Язык: Java
🌟Звезд: 912
📝Forks: 292
▪Github
#java #advanced #datalake
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5🔥3
Урок 1. Java Start | Java для начинающих | Java с нуля
Урок 2. Java переменные | Java типы данных | Java для автоматизаторов | Урок 2
Урок 3. Java комментарий | Java как вывести сообщения в консоль | Java конкатенация строк | Урок 3
Урок 4. Java арифметические операции | Java для автоматизаторов | строк | Урок 4
Урок 5. Java библиотеки классов | Java Scanner | строк | Урок 5
Урок 6. Java String | Класс String и его методы
Урок 7. Условный оператор if в Java | Оператор switch | Конструкция if-else |
📌 источник
#junior #java
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥7❤3
Media is too big
VIEW IN TELEGRAM
Процедура проходит с помощью инструментов максимально эффективной и комфортной разработки сервисов и web приложений на Spring Boot в IntelliJ IDEA и административного пользовательского интерфейса на React Admin в VS Code.
00:00 — Зачем нужно версионировать БД?
00:51 — Задачи на сегодня
01:30 — Обзор Spring Boot приложения (via Amplicode Explorer)
03:17 — Подключение и настройка Flyway (генерация скриптов инициализации БД)
05:49 — Модификация JPA модели
06:52 — Генерация Flyway скриптов миграции для синхронизации JPA модели и схемы БД
09:04 — Запуск Spring Boot приложения
📌 Источник
#видео #SpringBoot #java
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥6❤4
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Курс посвящен основам разработки на Java и помогает освоить необходимые инструменты для работы. Мы рекомендуем вам ознакомиться с этим курсом.
👉 Источник
#java #бесплатныйкурс
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍6🤔3🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍10❤3🤔2
Команда Java отмечает это событие шестичасовым прямым эфиром, посвящённым эволюции языка, его глобальному влиянию и формированию его будущего.
💝 Поздравь коллегу
https://www.youtube.com/watch?v=LHHPbI7sYv8
@javatg
#Java #OpenJDK
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥8🎉4❤3🤩1
🚀 Java API Tip — Integer.valueOf() и кеширование 🚀
Знаешь ли ты, что
📦 Значения в диапазоне от -128 до 127 кэшируются!
Это значит, что:
Но:
🔍 Почему так?
Чтобы повысить производительность и сэкономить память, Java автоматически кеширует часто используемые значения.
🛠 Кстати, ты можешь изменить границу кеша через JVM-опцию:
📌 Полезно, если у тебя в системе часто используются числа вне стандартного диапазона.
#Java #Performance #JVM #DevTips
@javatg
Знаешь ли ты, что
Integer.valueOf(int)
не всегда создаёт новый объект?📦 Значения в диапазоне от -128 до 127 кэшируются!
Это значит, что:
Integer a = Integer.valueOf(100);
Integer b = Integer.valueOf(100);
System.out.println(a == b); // 👉 true (один и тот же объект)
Но:
Integer x = Integer.valueOf(200);
Integer y = Integer.valueOf(200);
System.out.println(x == y); // 👉 false (два разных объекта)
🔍 Почему так?
Чтобы повысить производительность и сэкономить память, Java автоматически кеширует часто используемые значения.
🛠 Кстати, ты можешь изменить границу кеша через JVM-опцию:
-XX:AutoBoxCacheMax=512
📌 Полезно, если у тебя в системе часто используются числа вне стандартного диапазона.
#Java #Performance #JVM #DevTips
@javatg
👍9🔥5❤4
Media is too big
VIEW IN TELEGRAM
🚀 Что нового
• Встроенный API для разбора и генерации PEM-текста (Privacy-Enhanced Mail)
• Поддержка публичных и приватных ключей, X.509-сертификатов, CRL
• Единый высокоуровневый интерфейс без сторонних зависимостей
🔍 Почему это важно
• Упрощает интеграцию с PKI и системами безопасности
• Исключает ручной парсинг Base64 и ошибки форматирования
• Обеспечивает безопасное хранение шифруемых ключей
Video: https://www.youtube.com/watch?v=hqvMn2SwKiI
JEP 470: https://openjdk.org/jeps/470
JDK 25 EA: https://jdk.java.net/25/
#Java #OpenJDK #Security
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤4👍3
Java Совет 💡
Как понять, что Java‑код мог быть сгенерирован ИИ?
▪ Если вы видите в коде
А
📌 Документация:
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/stream/Stream.html#toList()
@javatg
#java #tip
Как понять, что Java‑код мог быть сгенерирован ИИ?
▪ Если вы видите в коде
Collectors.toList()
, а не Stream.toList()
— это явный намёк 😉Stream.toList()
появился только в Java 16. А
Collectors.toList()
— с нами ещё с Java 8, поэтому его до сих пор полно в туториалах, на Stack Overflow и во всех датасетах, на которых обучают ИИ.📌 Документация:
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/stream/Stream.html#toList()
@javatg
#java #tip
👍14🤯6❤3🔥2😁2🤔1
🧠 Продвинутая задача Java — Невидимая утечка памяти в лямбдах
Задача:
Предположим, вы пишете сервис, в котором создаются задачи (например, отложенные действия):
Теперь создайте 1_000_000 таких задач:
Вопрос:
Почему
Разбор:
На первый взгляд,
Но на самом деле лямбда-захват переменной
Это называется неявная утечка памяти через замыкания.
---
Как исправить?
Чтобы избежать утечки, выносите только нужные значения в лямбду:
Или даже:
НО! Убедитесь, что переменные вне лямбды не держат в памяти тяжёлые объекты, которые не нужны после исполнения.
💡 Вывод:
- Java лямбды могут неявно захватывать контекст, включая большие объекты
- Это может привести к утечкам памяти, особенно в long-lived объектах (пулы задач, слушатели и т.п.)
- Профилируйте и проверяйте, что захватывает ваша лямбда
#java #memoryleak #lambda #gc #profiling
@javatg
Задача:
Предположим, вы пишете сервис, в котором создаются задачи (например, отложенные действия):
public class TaskScheduler {
private final List<Runnable> tasks = new ArrayList<>();
public void scheduleTask(String name) {
String largeData = name.repeat(10_000); // имитируем большой объект
tasks.add(() -> {
System.out.println("Running task: " + name);
});
}
public void runAll() {
tasks.forEach(Runnable::run);
}
}
Теперь создайте 1_000_000 таких задач:
TaskScheduler scheduler = new TaskScheduler();
for (int i = 0; i < 1_000_000; i++) {
scheduler.scheduleTask("Task" + i);
}
Вопрос:
Почему
String largeData
не освобождается сборщиком мусора, хотя он нигде явно не используется?Разбор:
На первый взгляд,
largeData
нигде не используется — его можно было бы освободить. Но на самом деле лямбда-захват переменной
name
удерживает весь стек метода scheduleTask
, включая largeData
.Это называется неявная утечка памяти через замыкания.
---
Как исправить?
Чтобы избежать утечки, выносите только нужные значения в лямбду:
public void scheduleTask(String name) {
String taskName = name; // только то, что действительно нужно
tasks.add(() -> {
System.out.println("Running task: " + taskName);
});
}
Или даже:
tasks.add(() -> System.out.println("Running task: " + name));
НО! Убедитесь, что переменные вне лямбды не держат в памяти тяжёлые объекты, которые не нужны после исполнения.
💡 Вывод:
- Java лямбды могут неявно захватывать контекст, включая большие объекты
- Это может привести к утечкам памяти, особенно в long-lived объектах (пулы задач, слушатели и т.п.)
- Профилируйте и проверяйте, что захватывает ваша лямбда
#java #memoryleak #lambda #gc #profiling
@javatg
👍15🤔5❤4🔥2