Как правильно закрывать файлы и соединения!
Когда работаешь с файлами, потоками или подключениями к базе, ресурс нужно закрывать. Если забыть это сделать, приложение может начать держать лишние файлы, память или соединения.
Плохой вариант:
Если ошибка произойдёт до close(), ресурс может остаться открытым.
Лучше писать так:
Java сама закроет ресурс после выполнения блока, даже если внутри произойдёт исключение.
Используй try-with-resources для файлов, потоков, сокетов и всего, что реализует AutoCloseable.
👉 Java Ready | #совет
Когда работаешь с файлами, потоками или подключениями к базе, ресурс нужно закрывать. Если забыть это сделать, приложение может начать держать лишние файлы, память или соединения.
Плохой вариант:
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.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥5👍4
В ней ты узнаешь:
• Как создать Spring Boot-проект для парсинга данных
• Как получать XML-данные с внешнего источника
• Как сохранять результат в PostgreSQL через Hibernate
• Как разложить проект на нормальные слои: модель, сервис и репозиторийПродолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🔥4
CodeGym — это онлайн-платформа, где 80% обучения — это практика. Более 1200 задач, игровые уровни и система прокачки помогут освоить Java от нуля до уверенного уровня. Отличный выбор как для новичков, так и для тех, кто хочет прокачаться глубже.Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍3🔥2😁1
Автоматический сервис для проверки доступности сайта!
Хотите быстро сделать мини-мониторинг, который будет проверять сайт и показывать, доступен он или нет? Напишем простой Java-сервис, который отправляет HTTP-запрос и выводит статус ответа.
Импортируем необходимые классы:
Создаём клиент и указываем сайт, который будем проверять:
Формируем GET-запрос с таймаутом, чтобы программа не зависала слишком долго:
Отправляем запрос и получаем код ответа от сервера:
Проверяем статус и выводим понятный результат:
Теперь у вас есть простой мониторинг сайта, который можно доработать под уведомления в Telegram, логирование или регулярную проверку по расписанию!
👉 Java Ready | #практика
Хотите быстро сделать мини-мониторинг, который будет проверять сайт и показывать, доступен он или нет? Напишем простой 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, логирование или регулярную проверку по расписанию!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Это нейросеть, ориентированная на работу с текстами и исследованиями: она анализирует статьи, PDF и веб-страницы, автоматически выделяет ключевые идеи и делает краткие выжимки. Сервис помогает быстрее обрабатывать большие объёмы информации и структурировать материалы в удобном виде.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤6🔥5
Например, router маршрутизирует трафик между сетями, а load balancer распределяет нагрузку между серверами, повышая отказоустойчивость.
На картинке — основные компоненты сетевой инфраструктуры: от базового networking (DNS, DHCP, NTP) до безопасности (Firewall, VPN, IDS/IPS), доставки трафика (Reverse Proxy, API Gateway) и управления (SIEM, NMS).
Сохрани, чтобы не потерять!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🔥6👍5
Знаете, что в Java можно обновлять счётчики в Map без лишних if?
Обычно для таких задач пишут проверку: есть ли ключ, потом отдельно увеличивают значение:
Метод merge делает это короче и безопаснее:
Если ключа ещё нет Java положит значение 1.
Если ключ уже есть Java возьмёт старое значение и объединит его с новым через функцию:
То есть при повторном вызове значение просто увеличится:
Это удобно для подсчёта слов, лайков, событий, ошибок, метрик и любой статистики.
👉 Java Ready | #совет
Обычно для таких задач пишут проверку: есть ли ключ, потом отдельно увеличивают значение:
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() это простой способ писать меньше кода и не плодить ручные проверки.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
Подборка статей по Java, где разобраны ключевые темы: базовый синтаксис, ООП (классы, объекты, инкапсуляция), а также серверная часть — сервлеты и работа веб-приложений. Всё подано в формате шпаргалок с примерами кода и краткими пояснениями, чтобы быстро освежить фундамент или закрыть пробелы.
Оставляю ссылочку: virand.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤6👍5
Знаете, что в Java можно не писать отдельный класс с полями, конструктором, геттерами и toString() вручную?
Например, для DTO часто создают обычный класс:
Но если объект нужен просто для хранения данных, можно использовать record:
Java сама создаст конструктор, методы доступа, equals(), hashCode() и toString().
Обращение к полям выглядит немного иначе:
record хорошо подходит для DTO, ответов API, событий, команд, настроек и небольших неизменяемых объектов.
Например, можно удобно вернуть данные из REST-контроллера:
Важно помнить: record по смыслу должен быть простым носителем данных. Если внутри начинает появляться много бизнес-логики, сложных состояний и изменяемых полей, лучше подумать об обычном классе.
Так код становится короче, понятнее и меньше засоряется шаблонными методами.
👉 Java Ready | #совет
Например, для 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 по смыслу должен быть простым носителем данных. Если внутри начинает появляться много бизнес-логики, сложных состояний и изменяемых полей, лучше подумать об обычном классе.
Так код становится короче, понятнее и меньше засоряется шаблонными методами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥3
В ней ты узнаешь:
• Как продумать структуру микросервиса
• Как разделить проект на слои
• Как описывать API понятнее
• Как работать с DTO и моделямиПродолжай читать на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥3
Знаете, что в Java лучше проверять строки через isBlank(), а не только через isEmpty()?
Но строка из пробелов для него уже не пустая:
А вот
Это удобно для валидации имён, логинов, комментариев, форм и любых пользовательских данных.
Так код становится надёжнее, потому что строка из пробелов больше не проходит как нормальное значение.
👉 Java Ready | #совет
isEmpty() проверяет только длину строки:"".isEmpty()
Но строка из пробелов для него уже не пустая:
" ".isEmpty()
А вот
isBlank() учитывает пробелы, табы и переносы строк:" ".isBlank()
Это удобно для валидации имён, логинов, комментариев, форм и любых пользовательских данных.
Так код становится надёжнее, потому что строка из пробелов больше не проходит как нормальное значение.
isBlank() это простой способ аккуратнее проверять текст в Java.Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍6🔥4
С помощью этого ты можешь добавлять и убирать элементы слева и справа. Подходит и для очередей, и для стеков.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤3👍3🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
Это AI-платформа, которая помогает не просто находить научные статьи, а оценивать их качество через анализ цитирований. Сервис показывает, как именно используется работа: поддерживают ли её другие исследования, опровергают или просто упоминаю. Scite также умеет искать релевантные публикации и показывать контекст цитирования внутри текста.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥4