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
🔥12👍64😁4
Вывод дерева директорий!

Иногда нужно быстро посмотреть структуру проекта прямо из Java-кода. Удобнее всего вывести дерево папок и файлов с отступами и ветками. Такой приём подходит для утилит, проектов и отладочных скриптов.

Задаём корневую директорию и запускаем вывод дерева:
var root = java.nio.file.Path.of("src");
printTree(root, "");


Пишем функцию, которая выводит имя текущей директории и обходит содержимое:
void printTree(java.nio.file.Path dir, String prefix) {
System.out.println(prefix + dir.getFileName());
try (var s = java.nio.file.Files.list(dir)) {
var children = s.toList();
for (int i = 0; i < children.size(); i++) {
var p = children.get(i);
boolean last = (i == children.size() - 1);


Добавляем ветки и рекурсивный обход поддиректорий:
try {
var pref = prefix + (last ? "└── " : "├── ");
if (Files.isDirectory(p)) printTree(p, pref);
else System.out.println(pref + p.getFileName());
} catch (IOException e) {
System.out.println("Ошибка: " + e.getMessage());
}


🔥 В результате в консоли появится дерево папок, подкаталогов и файлов с ветками и отступами.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍32
👩‍💻 Сканируем Bluetooth-устройства через системные команды!

Java может запускать утилиты операционной системы и анализировать их вывод.

В этом посте:
Запускаем системные утилиты;

Читаем вывод;

Парсим имена устройств.


С использованием этого метода можно встроить получения Bluetooth устройств в установщики или другие утилиты.

👉 Java Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥5👍3
Генерация таблицы из данных!

Иногда нужно красиво отобразить список данных. Простой 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