Поиск файлов в папке!
Когда нужно быстро найти файлы по имени или расширению можно использовать проход. В Java это решается аккуратно и безопасно.
Задаём папку для поиска:
Проходим по файлам рекурсивно:
Фильтруем по условию:
Выводим найденные файлы:
🔥 Удобно для поиска логов, документов, отчётов и автоматизации задач.
👉 Java Ready | #совет
Когда нужно быстро найти файлы по имени или расширению можно использовать проход. В Java это решается аккуратно и безопасно.
Задаём папку для поиска:
Path dir = Path.of("docs");Проходим по файлам рекурсивно:
Files.walk(dir)
Фильтруем по условию:
.filter(p -> p.toString().endsWith(".pdf"))Выводим найденные файлы:
.forEach(p -> System.out.println(p));
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5🔥4
Java постоянно развивается, и на картинке показано, как менялись ключевые фичи с 8 по 11 версии.
Лямбды, var, Optional, Stream API, Immutable List, unified logging всё в одной таблице.Сохрани, чтобы быстро вспомнить, что появилось в какой версии!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤8🔥5
Он объединяет ключи и сертификаты в единый контейнер, защищённый паролем и понятный JVM. Это позволяет безопасно настраивать HTTPS, подпись данных и аутентификацию без хранения чувствительной информации в коде или конфигурациях.
Использование KeyStore делает работу с криптографией управляемой и воспроизводимой. Вместо разрозненных файлов появляется централизованное хранилище, которое легко переносить и обновлять.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤5👍4
Автор рассуждает о том, почему проблемы производительности и странного поведения сервисов часто связаны не с отсутствием сложных алгоритмов, а с их неправильным применением.
В этой статье:
• Алгоритмы сами по себе бесполезны без задачи и корректной модели данных
• Переусложнение решений, частая причина технических проблем
• Грамотная постановка задачи важнее выбора модного алгоритмаЧитать статью на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4🔥4
Менеджер истории изменений!
Когда данные меняются, важно понимать что, когда и кем было изменено. Простой менеджер истории фиксирует все изменения и позволяет их просматривать.
Структура записи истории:
Хранилище истории:
Фиксация изменения:
Просмотр всей истории:
🔥 Такой подход полезен для менеджеров паролей, конфигов, настроек и любых данных, где важна прозрачность изменений.
👉 Java Ready | #совет
Когда данные меняются, важно понимать что, когда и кем было изменено. Простой менеджер истории фиксирует все изменения и позволяет их просматривать.
Структура записи истории:
record HistoryEntry(String action, String value, LocalDateTime time) {}Хранилище истории:
List<HistoryEntry> history = new ArrayList<>();
Фиксация изменения:
history.add(new HistoryEntry(
"UPDATE_PASSWORD",
"github.com",
LocalDateTime.now()
));
Просмотр всей истории:
for (HistoryEntry h : history) {
System.out.println(h.time() + " | " + h.action() + " | " + h.value());
}Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5🔥5
Таймер Помодоро!
Техника
Задаём длительности работы и отдыха:
Функция обратного отсчёта в секундах:
Запускаем рабочий интервал:
После работы запускаем перерыв:
Сообщаем о завершении одного цикла:
🔥 В итоге получаем рабочий Pomodoro-таймер прямо в консоли. Отличная практика для потоков, времени и CLI-утилит.
👉 Java Ready | #практика
Техника
Pomodoro помогает работать концентрированно и не выгорать. Сделаем консольный таймер, который сам считает время и сообщает о смене этапа.Задаём длительности работы и отдыха:
int workMinutes = 25;
int breakMinutes = 5;
Функция обратного отсчёта в секундах:
void countdown(int seconds) throws InterruptedException {
while (seconds > 0) {
System.out.print("\rОсталось: " + seconds + " сек ");
Thread.sleep(1000);
seconds--;
}
System.out.println();
}Запускаем рабочий интервал:
System.out.println("Работаем!");
countdown(workMinutes * 60);После работы запускаем перерыв:
System.out.println("Перерыв!");
countdown(breakMinutes * 60);Сообщаем о завершении одного цикла:
System.out.println("Помодоро завершён.");Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍6🔥6
Работа с буфером обмена!
Иногда нужно быстро скопировать данные из приложения, например
пароль, токен, ссылку, без вывода в файл или лог. В Java это можно сделать напрямую через системный буфер.
Получаем доступ к буферу обмена:
Копируем текст в буфер:
Читаем текст из буфера:
🔥 Полезно для менеджеров паролей, CLI-утилит и админских инструментов.
👉 Java Ready | #совет
Иногда нужно быстро скопировать данные из приложения, например
пароль, токен, ссылку, без вывода в файл или лог. В Java это можно сделать напрямую через системный буфер.
Получаем доступ к буферу обмена:
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Копируем текст в буфер:
String text = "secret-token-123";
StringSelection data = new StringSelection(text);
clipboard.setContents(data, null);
Читаем текст из буфера:
String value = (String) clipboard.getData(DataFlavor.stringFlavor);
System.out.println(value);
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍5🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Этот сайт отличный старт и справочник для учебы. Материал построен по темам: синтаксис, ООП, коллекции, исключения, потоки, работа с файлами, всё объясняется простыми словами и с примерами. Идеально, чтобы понять базу, закрепить знания и всегда иметь под рукой понятные объяснения.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍6🔥6
Каналы с IT мероприятиями
Подписывайся,
чтобы не пропустить
1. IT мероприятия для стажеров и студентов
2. IT мероприятия по РФ
3. IT мероприятия и хакатоны
4. Бесплатные IT мероприятия
5. IT мероприятия онлайн
6. IT мероприятия Москва
7. IT мероприятия Санкт-Петербург
Please open Telegram to view this post
VIEW IN TELEGRAM
⏳ Ограничиваем доступ к приложению по времени
Иногда нужно, чтобы программа работала только до определённого момента.
Задаём дату/время окончания доступа:
Берём текущее время:
Если срок вышел, то блокируем запуск:
Если всё ок, продолжаем работу:
Так можно быстро сделать временный доступ без лишней сложности.
👉 Java Ready | #совет
Иногда нужно, чтобы программа работала только до определённого момента.
Задаём дату/время окончания доступа:
LocalDateTime expiresAt = LocalDateTime.of(2026, 1, 20, 0, 0);
Берём текущее время:
LocalDateTime now = LocalDateTime.now();
Если срок вышел, то блокируем запуск:
if (now.isAfter(expiresAt)) {
System.out.println("Доступ истёк");
System.exit(1);
}Если всё ок, продолжаем работу:
System.out.println("Доступ активен");Так можно быстро сделать временный доступ без лишней сложности.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥3😁1
От основ синтаксиса до Spring и тестирования, на картинке чётко показано, что стоит изучить Java-разработчику в этом году. Сохрани, чтобы не потерять.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤8🤝5😁1
Определяем язык текста!
Если ты работаешь с пользовательским вводом, новостями или сообщениями то иногда нужно понять, на каком языке написан текст. Для этого можно использовать лёгкую библиотеку
Добавляем зависимость:
Инициализируем определитель:
Проверяем язык текста:
🔥 Вывод будет:
👉 Java Ready | #практика
Если ты работаешь с пользовательским вводом, новостями или сообщениями то иногда нужно понять, на каком языке написан текст. Для этого можно использовать лёгкую библиотеку
language-detector.Добавляем зависимость:
implementation 'com.optimaize.languagedetector:language-detector:0.6'
Инициализируем определитель:
LanguageDetector detector = LanguageDetectorBuilder.create().build();
TextObjectFactory factory = CommonTextObjectFactories.forDetectingOnLargeText();
Проверяем язык текста:
String input = "Привет, как дела?";
TextObject text = factory.forText(input);
Optional<LdLocale> lang = detector.detect(text);
System.out.println("Язык: " + lang.map(LdLocale::getLanguage).orElse("не определён"));
🔥 Вывод будет:
ru, en, fr и т.д. Работает с короткими и длинными фразами, подходит для фильтрации, автоопределения языка и локализации.Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Репозиторий с вопросами, которые чаще всего спрашивают на собесах. Здесь собраны темы по Java Core, ООП, коллекциям, многопоточности, памяти JVM и исключениям, всё с короткими и понятными ответами. Удобно использовать как шпаргалку или для системного повторения базы.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤7👍6
Отправляем уведомление в трей!
Если твоя программа работает в фоне — например, что-то качает, обрабатывает или мониторит — удобно сразу показать пользователю системное уведомление, что задача завершена или возникла ошибка.
В Java это можно сделать через встроенный
Импортируем необходимые классы из
Проверяем, поддерживается ли системный трей на текущей ОС. Если да — создаём иконку и добавляем её в трей.
Отправляем всплывающее уведомление с заголовком, текстом и типом сообщения.
🔥 Так можно ненавязчиво оповестить пользователя о завершении скачивания, обновления или ошибке — и всё это без всплывающих окон
👉 Java Ready | #практика
Если твоя программа работает в фоне — например, что-то качает, обрабатывает или мониторит — удобно сразу показать пользователю системное уведомление, что задача завершена или возникла ошибка.
В Java это можно сделать через встроенный
SystemTray и TrayIcon, которые позволяют отправить всплывающее сообщение в нативный трей операционной системы.Импортируем необходимые классы из
java.awt, чтобы работать с системным треем.import java.awt.*;
Проверяем, поддерживается ли системный трей на текущей ОС. Если да — создаём иконку и добавляем её в трей.
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
Image img = Toolkit.getDefaultToolkit().createImage("icon.png");
TrayIcon icon = new TrayIcon(img, "Java App");
tray.add(icon);Отправляем всплывающее уведомление с заголовком, текстом и типом сообщения.
icon.displayMessage("Готово!", "Задача завершена", TrayIcon.MessageType.INFO);
} else {
System.out.println("Трей не поддерживается на этой системе");
}JavaFX или Swing.Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4🔥3
Цифровая подпись решает сразу две задачи: подтверждает источник данных и гарантирует, что они не были изменены.
Приложение перестаёт полагаться на контекст и начинает опираться на математику, что делает систему устойчивее к подменам, атакам и ошибкам интеграции.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤9👍5