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
Конвертация миллисекунд в секунды и минуты!

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

Исходное значение:
long millis = 123456;


Перевод в секунды:
long seconds = millis / 1000;


Перевод в минуты:
long minutes = millis / 60000;


🔥 Полезно для логов, таймеров и статистики выполнения кода.

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10👍76🔥5
Чтение данных из XML-файла!

XML до сих пор встречается в конфигах, интеграциях и старых API. В Java можно читать его без библиотек, через стандартный DOM-парсер.

Указываем путь к XML-файлу и создаём парсер:
var path = java.nio.file.Path.of("data.xml");
var factory = javax.xml.parsers.DocumentBuilderFactory.newInstance();
var builder = factory.newDocumentBuilder();


Читаем XML и получаем Document:
var doc = builder.parse(path.toFile());
doc.getDocumentElement().normalize();


Достаём список элементов по тегу:
var users = doc.getElementsByTagName("user");
System.out.println("Найдено user: " + users.getLength());


Вытаскиваем поля из первого элемента:
var first = (org.w3c.dom.Element) users.item(0);
System.out.println(first.getElementsByTagName("name").item(0).getTextContent());
System.out.println(first.getElementsByTagName("age").item(0).getTextContent());


🔥 В итоге мы читаем XML как структуру и достаём нужные значения по тегам.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥54
👩‍💻 Определяем кодировку файла!

При работе с файлами из разных систем и источников важно корректно определить их кодировку перед чтением.

В этой задаче:
Анализируем содержимое;

Используем детектор кодировки;

Получаем кодировку.


Такой подход особенно полезен при импорте файлов, CSV и данных из внешних систем.

👉 Java Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥84👍4
☕️ Напоминалка по примитивным типам данных!

В Java есть 8 примитивных типов от byte до boolean. Каждый из них имеет фиксированный размер, диапазон значений и предназначение.

На картинке собраны все типы с примерами и размерами.

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

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍7🔥5
Работаем с конфигами!

Хранить настройки прямо в коде это плохая идея. Гораздо удобнее выносить их в конфиг и менять без перекомпиляции.

Создаём конфиг:
app.name=JavaReady
app.port=8080
debug=true


Загружаем конфиг в приложении:
Properties props = new Properties();
props.load(new FileInputStream("app.properties"));


Используем значения в коде:
String name = props.getProperty("app.name");
int port = Integer.parseInt(props.getProperty("app.port"));


🔥 Таким образом можно легко управлять работай кода не перезапуская программу.

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍115🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
💅 Держите Visualgo — рай для тех, кто понимает глазами!

Если тебе сложно представить, как работает бинарный поиск, быстрая сортировка или структура «куча» — этот сайт сделан для тебя.
Visualgo позволяет буквально увидеть каждую операцию: шаг за шагом, с пояснениями и анимацией.

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

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍74
Создание меню с выбором действий!

Консольное меню помогает быстро управлять программой без GUI и сложного кода.

Создаём сканер и флаг, чтобы меню работало в цикле:
var sc = new java.util.Scanner(System.in);
boolean run = true;


Печатаем меню и читаем выбор пользователя:
while (run) {
System.out.println("1) Время 2) Сумма 0) Выход");
System.out.print("Выбор: ");
var cmd = sc.nextLine().trim();


Обрабатываем команды через switch:
    switch (cmd) {
case "1" -> System.out.println(java.time.LocalTime.now());
case "2" -> System.out.println(10 + 20);
case "0" -> run = false;
default -> System.out.println("Неизвестная команда");
}
System.out.println();
}


Закрываем Scanner после выхода из меню:
sc.close();


🔥 Так можно собрать полноценную CLI-утилиту которой сможет управлять пользователь.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍5🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
🧐 Tutorialspoint: Linux / Unix — простые объяснения команд, процессов, памяти, файловых систем!

Здесь подробно разбираются ключевые вещи, с которыми сталкиваешься в Linux каждый день: как работают процессы и сигналы, что происходит с памятью, как устроена файловая система, как читать права доступа и управлять ими. Каждая тема идёт с примерами команд и пояснениями.

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

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥76👍4😁1
Покажись, IP!

Определяем местоположение любого IP прямо из терминала с помощью curl и jq — без сторонних библиотек, всё в консоли.

Юзаем бесплатный API от ip-api.com.
Запрос предельно прост:
curl -s http://ip-api.com/json/1.1.1.1


В ответ получаем JSON с информацией о стране, городе, провайдере и других параметрах.

Подключаем jq, чтобы аккуратно вывести нужные поля из ответа:
curl -s http://ip-api.com/json/1.1.1.1 | jq '.country, .regionName, .city, .isp'


Результат будет отображён построчно: страна, регион, город и провайдер.

Для удобства можно оформить это в виде функции:
geoip() {
curl -s "http://ip-api.com/json/$1" | jq '.query, .country, .city, .isp'
}


И вызвать:
geoip 8.8.8.8


🔥 Отличный способ быстро проверять подозрительные IP во время пентеста или анализа логов.

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🔥4
👩‍💻 Хешируем большие файлы!

Большие файлы нельзя читать целиком в оперативной памяти, ведь она может закончиться. Вместо этого лучше читать файл чанками.

В этом посте:
Создаём MessageDigest;

Читаем файл;

Получаем результат.


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

👉 Java Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥116👍6🤝1
📂 Напоминалка по ArrayList!

ArrayList это удобная коллекция для работы с динамическими списками в Java. На картинке собраны основные методы: от инициализации списка до сортировки, удаления и итерации элементов.

Сохрани, чтобы всегда быть в курсе!

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

Когда хочешь расширить функционал приложения без перекомпиляции, хорошо использовать плагины. В Java можно динамически загружать классы, используя ClassLoader.

Создаём интерфейс плагина:
public interface Plugin {
void execute();
}


Создаём класс плагина:
public class MyPlugin implements Plugin {
@Override
public void execute() {
System.out.println("Плагин загружен!");
}
}


Реализуем кастомный ClassLoader для загрузки плагинов:
public class PluginClassLoader extends ClassLoader {
private final Path dir;

public PluginClassLoader(Path dir) {
this.dir = dir;
}

@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
try {
Path file = dir.resolve(name.replace('.', '/') + ".class");
byte[] bytes = Files.readAllBytes(file);
return defineClass(name, bytes, 0, bytes.length);
} catch (IOException e) {
throw new ClassNotFoundException(name, e);
}
}
}


Загружаем плагин динамически:
Path pluginDir = Path.of("plugins");
PluginClassLoader loader = new PluginClassLoader(pluginDir);
Class<?> pluginClass = loader.loadClass("MyPlugin");
Plugin plugin = (Plugin) pluginClass.getDeclaredConstructor().newInstance();
plugin.execute();


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

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65🔥4
✍️ Основные паттерны микросервисной архитектуры!

Статья включает:
• Объяснения поэтапной миграция с монолита на микросервисы
Централизованное управление API запросами;
• Управление микросервисами с помощью сетевой инфраструктуры.

🔊 Читать статью на Habr!


👉 Java Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍5🔥4