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

Автор: @energy_it

Реклама на бирже: https://telega.in/c/java_ready
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ Learn Java Spring — структурированная база по Java и Spring!

Репозиторий представляет собой системную подборку материалов для изучения Java и Spring Framework, от базового уровня до продвинутых тем. Внутри есть ссылки на статьи, гайды и туториалы, разбитые по разделам: Core Java, коллекции, многопоточность, build-инструменты, а также Spring и Spring Boot.

Оставляю ссылочку: GitHub 📱


👉 Java Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍5🔥4
Как использовать enum вместо списков в Java!

Если логика зависит от фиксированного набора вариантов, не всегда стоит раздувать switch.

Например, сначала код может выглядеть аккуратно:
switch (tariff) {
case PRO -> 10;
case ENTERPRISE -> 20;
default -> 0;
}


Но когда правил становится больше, такой switch часто начинает расползаться по проекту.

Для таких случаев можно использовать EnumMap — это Map, оптимизированная специально под enum-ключи:
var discounts = new EnumMap<Tariff, Integer>(Tariff.class);

discounts.put(Tariff.PRO, 10);
discounts.put(Tariff.ENTERPRISE, 20);


А значение можно доставать без лишних условий:
int discount = discounts.getOrDefault(tariff, 0);


Так код становится проще расширять: добавился новый тариф, добавляешь новое правило, а не ищешь все switch по проекту.

Сохрани, если часто превращаешь enum в длинную цепочку условий!

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
15👍5🔥4
Как правильно закрывать файлы и соединения!

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

Плохой вариант:
BufferedReader reader = Files.newBufferedReader(path);
String line = reader.readLine();
reader.close();

Если ошибка произойдёт до close(), ресурс может остаться открытым.

Лучше писать так:
try (BufferedReader reader = Files.newBufferedReader(path)) {
String line = reader.readLine();
}

Java сама закроет ресурс после выполнения блока, даже если внутри произойдёт исключение.

Используй try-with-resources для файлов, потоков, сокетов и всего, что реализует AutoCloseable.

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥5👍4
😎 Хочешь научиться делать парсер на Java? Тогда эта статья тебе точно понравится!

В ней ты узнаешь:
• Как создать Spring Boot-проект для парсинга данных
• Как получать XML-данные с внешнего источника
• Как сохранять результат в PostgreSQL через Hibernate
• Как разложить проект на нормальные слои: модель, сервис и репозиторий


Продолжай читать на Habr!


👉 Java Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍4🔥4
😎 Нашёл вам геймифицированный тренажёр по Java!

CodeGym — это онлайн-платформа, где 80% обучения — это практика. Более 1200 задач, игровые уровни и система прокачки помогут освоить Java от нуля до уверенного уровня. Отличный выбор как для новичков, так и для тех, кто хочет прокачаться глубже.

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

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍3🔥2😁1
Автоматический сервис для проверки доступности сайта!

Хотите быстро сделать мини-мониторинг, который будет проверять сайт и показывать, доступен он или нет? Напишем простой Java-сервис, который отправляет HTTP-запрос и выводит статус ответа.

Импортируем необходимые классы:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;


Создаём клиент и указываем сайт, который будем проверять:

String url = "https://example.com";

HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(5))
.build();


Формируем GET-запрос с таймаутом, чтобы программа не зависала слишком долго:

HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.timeout(Duration.ofSeconds(10))
.GET()
.build();

Отправляем запрос и получаем код ответа от сервера:

HttpResponse<String> response = client.send(
request,
HttpResponse.BodyHandlers.ofString()
);

int statusCode = response.statusCode();

Проверяем статус и выводим понятный результат:

if (statusCode >= 200 && statusCode < 400) {
System.out.println("Сайт доступен: " + statusCode);
} else {
System.out.println("Проблема с сайтом: " + statusCode);
}

Теперь у вас есть простой мониторинг сайта, который можно доработать под уведомления в Telegram, логирование или регулярную проверку по расписанию!

👉 Java Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
✍️ Genei — AI-инструмент для ускорения чтения и работы с информацией!

Это нейросеть, ориентированная на работу с текстами и исследованиями: она анализирует статьи, PDF и веб-страницы, автоматически выделяет ключевые идеи и делает краткие выжимки. Сервис помогает быстрее обрабатывать большие объёмы информации и структурировать материалы в удобном виде.

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

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍96🔥5
📂 Базовые компоненты современной сетевой инфраструктуры!

Например, router маршрутизирует трафик между сетями, а load balancer распределяет нагрузку между серверами, повышая отказоустойчивость.

На картинке — основные компоненты сетевой инфраструктуры: от базового networking (DNS, DHCP, NTP) до безопасности (Firewall, VPN, IDS/IPS), доставки трафика (Reverse Proxy, API Gateway) и управления (SIEM, NMS).

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

👉 Java Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥6👍5
Знаете, что в Java можно обновлять счётчики в Map без лишних if?

Обычно для таких задач пишут проверку: есть ли ключ, потом отдельно увеличивают значение:
if (stats.containsKey("java")) {
stats.put("java", stats.get("java") + 1);
} else {
stats.put("java", 1);
}


Метод merge делает это короче и безопаснее:
stats.merge("java", 1, Integer::sum);


Если ключа ещё нет Java положит значение 1.

Если ключ уже есть Java возьмёт старое значение и объединит его с новым через функцию:
Integer::sum


То есть при повторном вызове значение просто увеличится:
stats.merge("java", 1, Integer::sum);


Это удобно для подсчёта слов, лайков, событий, ошибок, метрик и любой статистики.

Map.merge() это простой способ писать меньше кода и не плодить ручные проверки.

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍5🔥3🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ Virand — база и практика в формате шпаргалок!

Подборка статей по Java, где разобраны ключевые темы: базовый синтаксис, ООП (классы, объекты, инкапсуляция), а также серверная часть — сервлеты и работа веб-приложений. Всё подано в формате шпаргалок с примерами кода и краткими пояснениями, чтобы быстро освежить фундамент или закрыть пробелы.

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

👉 Java Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥86👍5
Знаете, что в Java можно не писать отдельный класс с полями, конструктором, геттерами и toString() вручную?

Например, для DTO часто создают обычный класс:
public class UserDto {
private final Long id;
private final String name;
private final String email;

public UserDto(Long id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}

public Long getId() {
return id;
}

public String getName() {
return name;
}

public String getEmail() {
return email;
}
}


Но если объект нужен просто для хранения данных, можно использовать record:
public record UserDto(
Long id,
String name,
String email
) {}


Java сама создаст конструктор, методы доступа, equals(), hashCode() и toString().

Обращение к полям выглядит немного иначе:
user.name()
user.email()


record хорошо подходит для DTO, ответов API, событий, команд, настроек и небольших неизменяемых объектов.

Например, можно удобно вернуть данные из REST-контроллера:
return new UserDto(1L, "Alex", "alex@mail.com");


Важно помнить: record по смыслу должен быть простым носителем данных. Если внутри начинает появляться много бизнес-логики, сложных состояний и изменяемых полей, лучше подумать об обычном классе.

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

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥3
😍 Хочешь лучше понять, как создавать нормальный REST API на Java? Тогда эта статья тебе точно зайдёт!

В ней ты узнаешь:
• Как продумать структуру микросервиса
• Как разделить проект на слои
• Как описывать API понятнее
• Как работать с DTO и моделями


Продолжай читать на Habr!


👉 Java Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍43🔥3
Знаете, что в Java лучше проверять строки через isBlank(), а не только через isEmpty()?

isEmpty() проверяет только длину строки:
"".isEmpty()


Но строка из пробелов для него уже не пустая:
"   ".isEmpty()


А вот isBlank() учитывает пробелы, табы и переносы строк:
"   ".isBlank()


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

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

isBlank() это простой способ аккуратнее проверять текст в Java.

👉 Java Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍6🔥4
👩‍💻 Сегодня разбираем Deque — универсальная очередь с двух сторон!

С помощью этого ты можешь добавлять и убирать элементы слева и справа. Подходит и для очередей, и для стеков.

👉 Java Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥73👍3🤝1