Генератор отчёта о размере файлов!
Иногда нужно быстро понять, что занимает место в директории.
Сделаем простой скрипт который пройдётся по файлам, получит размер каждого и сформирует отчёт.
Указываем папку для анализа и файл отчёта:
Создаём список строк, которые пойдут в отчёт:
Проходим по файлам и добавляем строки:
Сохраняем отчёт в файл и выводим путь:
🔥 В итоге появляется
👉 Java Ready | #практика
Иногда нужно быстро понять, что занимает место в директории.
Сделаем простой скрипт который пройдётся по файлам, получит размер каждого и сформирует отчёт.
Указываем папку для анализа и файл отчёта:
var dir = java.nio.file.Path.of("logs");
var report = java.nio.file.Path.of("report.txt");Создаём список строк, которые пойдут в отчёт:
var lines = new java.util.ArrayList<String>();
lines.add("Отчёт по папке: " + dir.toAbsolutePath());
lines.add("");
Проходим по файлам и добавляем строки:
try (var s = java.nio.file.Files.list(dir)) {
s.filter(java.nio.file.Files::isRegularFile).forEach(p -> {
try {
long size = java.nio.file.Files.size(p);
lines.add(p.getFileName() + " → " + size + " bytes");
} catch (Exception e) {
lines.add(p.getFileName() + " → ошибка чтения");
}
});
}Сохраняем отчёт в файл и выводим путь:
java.nio.file.Files.write(report, lines);
System.out.println("Готово: " + report.toAbsolutePath());
report.txt со списком файлов и их размером.Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥7👍4
Java не имеет прямого
API для работы с Wi-Fi, но может запускать системные утилиты Windows и разбирать их вывод.В этом посте:
• Запускаем netsh;
• Считываем вывод консоли;
• Парсим SSID доступных Wi-Fi сетей.
Такой приём полезен для утилит, установщиков, и Java-приложений, которым нужно знать текущее Wi-Fi сети.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍5❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Этот репозиторий — коллекция полезных библиотек для Java, которые дополняют стандартный набор и ускоряют разработку. В Guava есть: работа с коллекциями и кешированием, утилиты для строк, графов, валидации, функциональные расширения, структуры диапазонов и многое другое.
Оставляю ссылочку: GitHub📱
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍7🔥5
Запоминатор паролей в консоли!
Сегодня пошагово расскажу как можно запросить пароль и ресурс для этого пароля, после чего сохранить его и вывести.
1. Модель записи:
2. Хранилище в памяти:
3. Добавление записи:
4. Вывод всего сохранённого:
5. Маска пароля:
🔥 Дальше можно добавить шифрование, поиск по тегам и многое другое.
👉 Java Ready | #совет
Сегодня пошагово расскажу как можно запросить пароль и ресурс для этого пароля, после чего сохранить его и вывести.
1. Модель записи:
record Entry(String resource, String login, String password) {}2. Хранилище в памяти:
List<Entry> storage = new ArrayList<>();
3. Добавление записи:
System.out.print("Введите ресурс: ");
String resource = sc.nextLine().trim();
System.out.print("Введите логин: ");
String login = sc.nextLine().trim();
System.out.print("Введите пароль: ");
String password = sc.nextLine();
storage.add(new Entry(resource, login, password));
System.out.println("Сохранено");4. Вывод всего сохранённого:
System.out.println("=== Сохранённые записи (" + storage.size() + ") ===");
for (Entry e : storage) {
System.out.println("- " + e.resource() + " | " + e.login() + " | " + mask(e.password()));
}5. Маска пароля:
static String mask(String s) {
return s.length() <= 2 ? "**" : s.substring(0, 2) + "*".repeat(s.length() - 2);
}Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥4
Например,
Comparable задаёт естественный порядок внутри класса через метод compareTo(), а Comparator реализует внешнюю кастомную сортировку через compare(o1, o2).На изображении — основные отличия, которые стоит держать под рукой при работе с коллекциями и алгоритмами упорядочивания.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🔥4
Поисковик по текстовому файлу!
Иногда нужно быстро найти нужную информацию в большом
Указываем файл и слово для поиска:
Готовим счётчик найденных строк:
Читаем файл построчно и проверяем каждую строку:
Ищем совпадение и выводим строку:
Печатаем итог поиска:
🔥 В итоге получаем простой поисковик по текстовому файлу. Подходит для логов, отчётов и больших текстов.
👉 Java Ready | #практика
Иногда нужно быстро найти нужную информацию в большом
.txt файле. Java позволяет построчно читать файл и искать совпадения без загрузки всего в память.Указываем файл и слово для поиска:
var file = java.nio.file.Path.of("data.txt");
var query = "error";Готовим счётчик найденных строк:
int found = 0;
Читаем файл построчно и проверяем каждую строку:
try (var lines = java.nio.file.Files.lines(file)) {
for (var line : (Iterable<String>) lines::iterator) {Ищем совпадение и выводим строку:
if (line.toLowerCase().contains(query.toLowerCase())) {
System.out.println(line);
found++;
}
}
}Печатаем итог поиска:
System.out.println("Найдено строк: " + found);Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍7🔥6
В статье показан практический подход к разработке современного микросервиса с нуля, от описания API до готового сервиса:
• Проектирование REST API
• Использование Spring WebFlux
• Генерация кода через
• Управление схемой БД🔊 Читать статью на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6❤5👍4
Поиск файлов в папке!
Когда нужно быстро найти файлы по имени или расширению можно использовать проход. В 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