Генератор резервной копии папки!
Резервные копии спасают от случайных удалений и ошибок. В Java можно скопировать целую папку со всеми файлами.
Указываем исходную папку и каталог для резервной копии:
Создаём папку для бэкапа, если её ещё нет:
Проходим по файлам в исходной папке:
Копируем каждый файл в папку backup:
Сообщаем о результате:
В итоге получаем копию всех файлов из data в backup.
👉 Java Ready | #практика
Резервные копии спасают от случайных удалений и ошибок. В Java можно скопировать целую папку со всеми файлами.
Указываем исходную папку и каталог для резервной копии:
var source = java.nio.file.Path.of("data");
var backup = java.nio.file.Path.of("backup");Создаём папку для бэкапа, если её ещё нет:
if (!java.nio.file.Files.exists(backup))
java.nio.file.Files.createDirectory(backup);
Проходим по файлам в исходной папке:
try (var paths = java.nio.file.Files.list(source)) {
paths.forEach(p -> {Копируем каждый файл в папку backup:
try {
var target = backup.resolve(p.getFileName());
java.nio.file.Files.copy(
p, target,
java.nio.file.StandardCopyOption.REPLACE_EXISTING
);
} catch (Exception e) {
System.out.println("Ошибка: " + p.getFileName());
}
});
}Сообщаем о результате:
System.out.println("Резервная копия создана в папке backup");В итоге получаем копию всех файлов из data в backup.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤6🔥4😁1
Когда не хочется тянуть библиотеки ради простого логирования можно сделать всё вручную. Добавим уровни (INFO, WARN, ERROR), цвет в консоли и текущее время.
В этом посте:
• Напишем метод log() с цветным выводом.
• Добавим уровни сообщений.
• Получим формат: [INFO] 12:44:05 - Сообщение.
Подходит для отладки, мини-приложений и утилит.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤7👍6
Например, ping используется для проверки доступности узла и времени отклика, ss и netstat позволяют определить открытые порты и активные соединения.
На изображении — самые часто используемые сетевые команды для Linux/macOS и Windows, которые применяются при анализе сетевых сбоев, проблем с подключением и производительностью.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥7👍6🤝3
Очередь задач!
Когда задачи приходят быстрее, чем выполняются, нужен порядок. Очередь позволяет принимать задачи, обрабатывать их по очереди и не перегружать приложение.
Создаём очередь задач:
Добавляем задачи в очередь:
Запускаем обработчик очереди:
🔥 Такой подход используют в: фоновых сервисах, обработке событий, загрузчиках и воркерах
👉 Java Ready | #ресурс
Когда задачи приходят быстрее, чем выполняются, нужен порядок. Очередь позволяет принимать задачи, обрабатывать их по очереди и не перегружать приложение.
Создаём очередь задач:
BlockingQueue<Runnable> queue = new LinkedBlockingQueue<>();
Добавляем задачи в очередь:
queue.add(() -> System.out.println("Задача 1 выполнена"));
queue.add(() -> System.out.println("Задача 2 выполнена"));Запускаем обработчик очереди:
while (true) {
Runnable task = queue.take();
task.run();
}🔥 Такой подход используют в: фоновых сервисах, обработке событий, загрузчиках и воркерах
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍7🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
Целый каталог материалов: библиотеки, фреймворки, статьи, туториалы, книги, проекты, инструменты и ссылки на полезные сообщества. Репозиторий охватывает всё, от основ языка и JVM до продвинутых тем. Полезно тем, кто хочет структурировать обучение, подобрать ресурсы под конкретную задачу или пополнить свой набор инструментов.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥9🤝5👍4
Генерация deterministic ID!
Иногда UUID не подходит и нужен ID, который стабилен и повторяем. Удобно для кэшей, ключей и записей.
Задаём входные данные, из которых будем делать ID:
Хешируем строку алгоритмом SHA-256:
Переводим байты в компактный HEX-вид:
Берём первые 12 символов:
Можно менять длину ID и использовать как ключ в базе, кэше или логах.
👉 Java Ready | #практика
Иногда UUID не подходит и нужен ID, который стабилен и повторяем. Удобно для кэшей, ключей и записей.
Задаём входные данные, из которых будем делать ID:
String input = "user:alice@example.com";
Хешируем строку алгоритмом SHA-256:
var md = java.security.MessageDigest.getInstance("SHA-256");
byte[] hash = md.digest(input.getBytes(java.nio.charset.StandardCharsets.UTF_8));Переводим байты в компактный HEX-вид:
var sb = new StringBuilder();
for (byte b : hash) sb.append(String.format("%02x", b));
Берём первые 12 символов:
String id = sb.substring(0, 12);
System.out.println("ID: " + id);
Можно менять длину ID и использовать как ключ в базе, кэше или логах.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍6🔥4
Поток в Java может находиться в одном из 6 состояний:
NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, TERMINATED.На картинке чёткая схема переходов между ними с указанием методов, которые это вызывают.
Сохрани, чтобы не запутаться!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤5🔥5
Вместо того чтобы ждать завершения каждой операции, приложение может выполнять задачи параллельно: считать, загружать данные или обрабатывать ввод, не останавливая основной поток. Это особенно важно для приложений, где скорость реакции имеет значение.
Java позволяет управлять асинхронностью постепенно: от простых потоков до пулов задач с контролируемым жизненным циклом.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍6🤝6❤4
Например, brute force и dictionary attack используются для перебора паролей, credential stuffing и password spraying — для атак с украденными учетными данными.
На изображении — основные типы атак на пароли и способы кражи учетных данных.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🤝7👍6🔥2
Добавляем водяной знак в PDF
Расскажу как можно добавить на ваш PDF-файл водяной знак для защиты его от копирования.
Открываем PDF:
Берём страницу и начинаем рисовать поверх:
Добавляем текст водяного знака:
Сохраняем результат:
Водяной знак помогает: защитить документы, помечать файлы и отслеживать утечки
👉 Java Ready | #совет
Расскажу как можно добавить на ваш PDF-файл водяной знак для защиты его от копирования.
Открываем PDF:
PDDocument doc = PDDocument.load(new File("input.pdf"));Берём страницу и начинаем рисовать поверх:
PDPage page = doc.getPage(0);
PDPageContentStream cs =
new PDPageContentStream(doc, page, AppendMode.APPEND, true);
Добавляем текст водяного знака:
cs.beginText();
cs.setFont(PDType1Font.HELVETICA_BOLD, 48);
cs.setNonStrokingColor(200, 200, 200);
cs.setTextMatrix(Matrix.getRotateInstance(
Math.toRadians(45), 150, 300));
cs.showText("CONFIDENTIAL");
cs.endText();
Сохраняем результат:
cs.close();
doc.save("output.pdf");
doc.close();
Водяной знак помогает: защитить документы, помечать файлы и отслеживать утечки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍6🔥5
❤14👍6🔥5