Java Ready | Программирование
8.89K subscribers
1.22K photos
60 videos
1 file
599 links
Авторский канал по разработке на Java.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/java_ready
Download Telegram
Генерация таблицы из данных!

Иногда нужно красиво отобразить список данных. Простой println ломает выравнивание, поэтому лучше собрать таблицу вручную. Java позволяет формировать ровные колонки через printf.

Готовим данные для таблицы:
var rows = java.util.List.of(
new String[]{"Имя", "Возраст", "Город"},
new String[]{"Alice", "22", "Paris"},
new String[]{"Bob", "30", "Berlin"}
);


Определяем ширину колонок и формат вывода:
String fmt = "%-10s %-8s %-10s%n";


Проходим по записям и печатаем таблицу:
for (var r : rows) {
System.out.printf(fmt, r[0], r[1], r[2]);
}


🔥 На выходе получаем ровную таблицу с красивым выводом. Удобно для отчётов, логов и представления структурированных данных.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍6🔥4
📂 Напоминалка по типам серверов в современных системах!

Например, DNS-сервер преобразует доменное имя в IP-адрес, а кеш-сервер ускоряет отдачу данных, снижая нагрузку на базу.

На картинке — фундамент серверной инфраструктуры, без которой не работает ни одно современное приложение.

Сохрани, чтобы не забыть!

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥65
Подсчёт повторяющихся значений в массиве!

Когда нужно понять структуру данных, важно знать, какие значения повторяются. В Java достаточно пройтись по массиву и заполнять Map.

Создаём массив с повторяющимися элементами:
int[] nums = {1, 2, 3, 2, 3, 3, 4, 1};


Подсчитываем частоту элементов через HashMap:
var freq = new java.util.HashMap<Integer, Integer>();
for (int n : nums) {
freq.put(n, freq.getOrDefault(n, 0) + 1);
}


Выводим результат:
freq.forEach((k, v) -> System.out.println(k + " -> " + v + " раз"));


🔥 На выходе получаем компактную статистику по значениям. Такой способ работает для любых типов чисел, строк и объектов.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥54😁1
This media is not supported in your browser
VIEW IN TELEGRAM
💅 CyberLeninka — открытая библиотека научных статей на русском!

Если хочешь разобраться в теме глубже, чем позволяют блоги и туториалы, загляни на этот сайт. Здесь тысячи публикаций по IT, математике, кибербезопасности, машинному обучению и не только. Можно искать по ключевым словам и даже цитировать в своих проектах или статьях.

📌 Оставляю ссылочку: cyberleninka.ru

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍5🤝51😁1
Скрытые риски автобоксинга и анбоксинга!

Сегодня рассмотрим одну из скрытых ловушек Java — автобоксинг и анбоксинг. Эти механизмы удобны, но могут вызывать неожиданные ошибки, влияя на производительность и корректность работы кода

При сравнении объектов-оберток (например, Integer) с использованием оператора == вы можете получить неожиданный результат:
Integer a = 127;
Integer b = 127;
System.out.println(a == b); // true

Integer c = 128;
Integer d = 128;
System.out.println(c == d); // false


Значения от -128 до 127 кешируются JVM для оберток Integer. Поэтому ссылки на объекты с такими значениями указывают на один и тот же объект, а вне этого диапазона создаются новые экземпляры.

Используйте метод .equals() для сравнения значений.
System.out.println(c.equals(d)); // true


А при анбоксинге объекта-обертки, содержащего null, возникает NullPointerException:
Integer value = null;
int result = value; // Ошибка: NullPointerException


Проверяйте объект на null перед анбоксингом:
if (value != null) {
int result = value;
}


🔥 Эти знания помогут вам избежать неожиданных ошибок и сделать код более надежным.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍4🔥3
📂 Напоминалка по структуре каталогов Linux!

Например, /bin содержит системные бинарные файлы, а /etc — конфигурации, управляющие поведением системы.

На картинке — директории Linux, их назначение и место в иерархии.

Сохрани, чтобы не забыть!

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥53🤝2
👩‍💻 Собираем таймлапс из картинок!

Часто нужно превратить серию кадров в видео. Java отлично подходит для того, чтобы управлять этим процессом и автоматизировать вызов ffmpeg.

В этом посте:
Формируем команду;

Запускаем процесс;

Ждём завершения работы.


Такой подход удобно использовать в пайплайнах рендеринга, всё работает быстро и просто.

👉 Java Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥84👍3
📂 Напоминалка по методам String!

В Java строки неизменяемы, и для работы с ними есть десятки встроенных методов.

На картинке базовые и самые используемые для поиска, модификации, работа с регистром и регулярками, преобразованием

Сохрани себе что бы не потерять!

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍7🔥4😁1
Создание HTML-файла с таблицей данных!

HTML удобно использовать, когда нужно красиво представить данные. Java может собрать полноценную таблицу и сохранить её как файл, который откроется в любом браузере.

Подготавливаем данные для таблицы:
var rows = java.util.List.of(
new String[]{"Имя", "Возраст", "Город"},
new String[]{"Alice", "22", "Paris"},
new String[]{"Bob", "30", "Berlin"}
);


Создаём базовый каркас HTML-страницы:
var sb = new StringBuilder();
sb.append("""
<!DOCTYPE html>
<html><head><meta charset="UTF-8">
<style>table,td,th{border:1px solid #000;border-collapse:collapse;padding:4px;}</style>
</head><body><table>
""");


Добавляем строки таблицы, первая строка будет заголовком:
for (int i = 0; i < rows.size(); i++) {
var r = rows.get(i);
sb.append("<tr>");
for (var cell : r) {
var tag = (i == 0) ? "th" : "td";
sb.append("<").append(tag).append(">")
.append(cell)
.append("</").append(tag).append(">");
}
sb.append("</tr>");
}


Закрываем HTML-структуру:
sb.append("</table></body></html>");


Сохраняем готовый HTML в файл:
java.nio.file.Files.writeString(
java.nio.file.Path.of("report.html"),
sb.toString()
);


🔥 В результате появляется файл report.html, таблица с данными, которую можно открыть в браузере или отправить в отчёте.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍4🔥3
👩‍💻 Проверяем доступность сайтов!

Для мониторинга сервисов или автоматизации бывает важно быстро понять, сайт отвечает или нет. С современным HttpClient это можно сделать в несколько строк, отправить запрос, получить код ответа и обработать таймауты.

В этом посте:
Создаём HttpClient и отправляем запрос;

Получаем статус доступности сайта;

Добавляем таймаут для медленных сервисов.


Такой способ подходит для утилит, CI/CD, мониторинга и любых скриптов, работающих с внешними API.

👉 Java Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥76👍5
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Знаете, что в VS Code можно быстро генерировать фейковые данные для тестов с помощью плагина?

Faker — позволяет легко вставлять случайные имена, адреса, номера телефонов, даты и другие данные прямо в ваш код.

Очень удобно при разработке и тестировании, особенно если нужно наполнить макеты реалистичными значениями.

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95🔥3😁1
Создаём ZIP-архив из нескольких файлов!

Иногда нужно собрать несколько файлов в один архив. Java умеет делать ZIP без сторонних библиотек только стандартный пакет java.util.zip. Достаточно перечислить файлы, открыть поток и записать их в архив по очереди.

Готовим список файлов, которые нужно упаковать:
var files = java.util.List.of(
"notes.txt",
"image.png",
"data.json"
);


Указываем имя будущего ZIP-архива и путь к нему:
var zipPath = java.nio.file.Path.of("archive.zip");


Открываем поток для записи ZIP-архива:
var zip = new java.util.zip.ZipOutputStream(
java.nio.file.Files.newOutputStream(zipPath)
);


Добавляем каждый файл в архив как отдельную запись:
for (var name : files) {
var path = java.nio.file.Path.of(name);
zip.putNextEntry(new java.util.zip.ZipEntry(path.getFileName().toString()));
java.nio.file.Files.copy(path, zip);
zip.closeEntry();
}


Закрываем архив и сообщаем пользователю о результате:
zip.close();
System.out.println("Готово! Файлы упакованы в " + zipPath);


🔥 В итоге получаем archive.zip, в котором лежат все указанные файлы.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65🔥4