Программа проходит по строке, считает, сколько раз подряд встречается каждый символ, и формирует новую строку с парами "символ-количество".
В этом посте:
• Перебираем символы строки;
• Подсчитываем повторы подряд;
• Формируем новый результат;
Задача учит работать с базовыми циклами и даёт понимание работы примитивного сжатия текстов.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍7❤4🤝1
Рендерим страницы в PNG из PDF!
Иногда нужно превратить документ в набор картинок. Java справляется с этим с библиотекой
Подключаем зависимость (
Открываем
Рендерим первую страницу с нужным
Проходим по всем страницам и сохраняем каждую в отдельный файл:
🔥 Подходит для генерации обложек, поиска по миниатюрам и веб-превью.
👉 Java Ready | #практика
Иногда нужно превратить документ в набор картинок. Java справляется с этим с библиотекой
PDFBox которая рендерит страницы в BufferedImage.Подключаем зависимость (
Gradle) для рендера PDF в изображения:implementation "org.apache.pdfbox:pdfbox:3.0.2"
Открываем
PDF и создаём рендерер для страниц:var pdf = org.apache.pdfbox.pdmodel.PDDocument.load(java.nio.file.Files.readAllBytes(
java.nio.file.Path.of("input.pdf")));
var renderer = new org.apache.pdfbox.rendering.PDFRenderer(pdf);
Рендерим первую страницу с нужным
DPI и сохраняем в PNG:float dpi = 200f;
var img = renderer.renderImageWithDPI(0, dpi);
javax.imageio.ImageIO.write(img, "png", java.nio.file.Path.of("page-1.png").toFile());
Проходим по всем страницам и сохраняем каждую в отдельный файл:
for (int i = 0; i < pdf.getNumberOfPages(); i++) {
var bi = renderer.renderImageWithDPI(i, dpi);
javax.imageio.ImageIO.write(bi, "png", java.nio.file.Path.of("page-" + (i+1) + ".png").toFile());
}
pdf.close();Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤5👍4
Когда важна подача данных, а не просто их значение, стандартные числа начинают работать против читаемости. Этот класс превращает цифры в понятные пользователю шаблоны.
Он незаменим в отчётности, логировании, интерфейсах и форматировании. Управляя маской, можно быстро адаптировать числовой вывод под требования клиента или дизайн системы.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍7❤4🤝1
Отправка email прямо из кода!
Java умеет отправлять письма через
Подключаем зависимость (
Указываем настройки SMTP-сервера:
Создаём сессию с логином и паролем:
Готовим письмо:
Отправляем:
🔥 Работает с Gmail, Яндексом, корпоративной почтой и любым
👉 Java Ready | #совет
Java умеет отправлять письма через
SMTP без сторонних сервисов с помощью библиотеки javax.mail.Подключаем зависимость (
Maven):<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>jakarta.mail</artifactId>
<version>2.0.1</version>
</dependency>
Указываем настройки SMTP-сервера:
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");
Создаём сессию с логином и паролем:
Session session = Session.getInstance(props, new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("you@example.com", "password");
}
});Готовим письмо:
Message msg = new MimeMessage(session);
msg.setFrom("you@example.com");
msg.setRecipients(Message.RecipientType.TO, "target@example.com");
msg.setSubject("Тестовое письмо");
msg.setText("Привет! Это письмо отправлено из Java.");
Отправляем:
Transport.send(msg);
SMTP.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍5🔥4
Проходим по папке, находим все файлы и складываем их размеры. Используем стандартный File, без рекурсии и дополнительных библиотек.
В этом посте:
• Получаем каталог;
• Перебираем все элементы;
• Проверяем, что это файл.
Это будет полезно для анализа диска проверок переполнения логов и многого другого.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤5👍4
Подсчёт количества дней между двумя датами!
Java умеет работать с датами без ручной арифметики. Можно вычислить разницу между любыми двумя датами.
Создаём две даты через LocalDate:
Считаем разницу в днях через ChronoUnit:
Можно вывести разницу в неделях и месяцах:
🔥 Такой подход даёт точные результаты, учитывая високосные годы и длину месяцев.
👉 Java Ready | #практика
Java умеет работать с датами без ручной арифметики. Можно вычислить разницу между любыми двумя датами.
Создаём две даты через LocalDate:
var start = java.time.LocalDate.of(2025, 1, 10);
var end = java.time.LocalDate.of(2025, 3, 2);
Считаем разницу в днях через ChronoUnit:
long days = java.time.temporal.ChronoUnit.DAYS.between(start, end);
System.out.println("Дней прошло: " + days);
Можно вывести разницу в неделях и месяцах:
long weeks = java.time.temporal.ChronoUnit.WEEKS.between(start, end);
long months = java.time.temporal.ChronoUnit.MONTHS.between(start, end);
System.out.println("Недель: " + weeks);
System.out.println("Месяцев: " + months);
🔥 Такой подход даёт точные результаты, учитывая високосные годы и длину месяцев.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6🔥4