Хороший блог/ресурс по структуре данных Graph
Вчера, когда я снова разбирал задачи на графы, я наткнулся на этот блог в разделе Discussions на LeetCode.
Ссылка: гугл док
👉 Java Portal
Вчера, когда я снова разбирал задачи на графы, я наткнулся на этот блог в разделе Discussions на LeetCode.
Ссылка: гугл док
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
Совет по Java: начиная с Java 12, можно использовать
n > 0: добавляет n пробелов в начале каждой строки.
n < 0: убирает до n ведущих пробелов (пробелов в начале) из каждой строки.
👉 Java Portal
String.indent(n), чтобы форматировать многострочные строки, добавляя отступ.n > 0: добавляет n пробелов в начале каждой строки.
n < 0: убирает до n ведущих пробелов (пробелов в начале) из каждой строки.
Добавление пробелов:
String text = "Text\ncontent";
System.out.println(text.indent(0));
System.out.println(text.indent(4));
System.out.println(text.indent(0));
Удаление пробелов:
String text = " Text\n content";
System.out.println(text.indent(-4));
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤2
Как и зачем писать свой DatabaseDialect для Kafka JDBC Sink
В данной статье автор хочет показать идеи того, как реализация своего DatabaseDialect может помочь при имплементации нестандартных сценариев для вполне себе популярной БД Postgres, для которой существует PostgresSqlDatabaseDialect.
👉 Java Portal
Я активно использую на проекте Kafka Connect Framework и в частности Kafka JDBC Sink Connector для быстрого сохранения данных из Kafka Topic в БД PostgresSQL. Для большинства задач достаточно написать простую JSON-конфигурацию и все стабильно и быстро работает из коробки. Нет необходимости в написании собственного кода. Однако в нетиповых ситуациях расширяемость Kafka Connect тоже помогает - можно переопределить и написать один из компонентов.
В конфигурации JDBC Sink Connector Task существует настройка dialect.name, которая отвечает за выбор диалекта для работы с конкретной БД. Как правило, в 99% случаев используется один из уже реализованных для популярных БД диалектов, как например в моем случае PostgresSqlDatabaseDialect для PostgreSQL.
Может показаться, что вряд ли кому-то понадобится реализовывать свой диалект, если только не имеем дело с какой-то специфичной непопулярной БД. Однако на практике оказалось, что реализация своего диалекта даже для PostgreSQL может быть полезна для решения некоторых возникающих прикладных задач.
В данной статье автор хочет показать идеи того, как реализация своего DatabaseDialect может помочь при имплементации нестандартных сценариев для вполне себе популярной БД Postgres, для которой существует PostgresSqlDatabaseDialect.
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Как и зачем писать свой DatabaseDialect для Kafka JDBC Sink
Я активно использую на проекте Kafka Connect Framework и в частности Kafka JDBC Sink Connector для быстрого сохранения данных из Kafka Topic в БД PostgresSQL. Для большинства задач достаточно написать...
❤1
Spring Boot: ты можешь валидировать входные DTO через
👉 Java Portal
@Valid плюс аннотации вроде @NotBlank, @Email и т.д.public class RegistrationRequest {
@Email(message = "Please provide a valid email address")
@NotBlank(message = "Email is required")
private String email;
@Size(min = 8, max = 16, message = "Password must be 8–16 characters long")
private String password;
@Pattern(
regexp = "^[0-9]{10,15}$",
message = "Phone number must be 10–15 digits"
)
private String phone;
// getters & setters
}By Default, if the validation fails Spring automatically returns a 400 Bad Request with a detailed error body like:
{
"timestamp": "2025-01-01T12:00:00Z",
"status": 400,
"errors": [
"Email is required",
"Age must be at least 18"
]
}You can customize the response by implementing a global exception handler
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3
Java-совет: начиная с Java 11, лучше использовать
❌ Поскольку
✅
Пример:
Смысл сохранён полностью:
👉 Java Portal
String.strip() вместо trim(), потому что он корректно обрабатывает Unicode-пробелы.trim() не обрабатывает некоторые типы пробельных символов, определённых в Unicode, он может оставлять неожиданные символы.String.strip() использует Character.isWhitespace(int codePoint) для определения пробелов. Этот метод следует полному стандарту Unicode для пробельных символов, а не только ASCII, и удаляет все виды пробелов.Пример:
String text = "\u2003Hello World\u2003";
System.out.println("trim(): [" + text.trim() + "]");
System.out.println("strip(): [" + text.strip() + "]");
Смысл сохранён полностью:
trim() ограничен ASCII, strip() работает по Unicode-правилам и ведёт себя ожидаемо.Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Недавно открыл для себя learn.java — официальный сайт от Oracle для изучения Java. Здесь всё чётко и по делу 😈
> Установка JDK и настройка IDE
> Пошаговые уроки по основам Java
> Практические задания в онлайн-редакторе
> Мини-проекты для закрепления знаний
> Дополнительные ресурсы для углубленного обучения
Плюс — есть Java Playground, где можно писать и запускать код прямо в браузере, без лишних установок
👉 Java Portal
> Установка JDK и настройка IDE
> Пошаговые уроки по основам Java
> Практические задания в онлайн-редакторе
> Мини-проекты для закрепления знаний
> Дополнительные ресурсы для углубленного обучения
Плюс — есть Java Playground, где можно писать и запускать код прямо в браузере, без лишних установок
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11❤4
Spring Boot: аккуратно задавайте границы
👉 Java Portal
@ComponentScan, чтобы случайно не сканировать целые пакеты целиком.Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Следуешь DDD и подходу model-first в Spring Data JDBC? Писать миграции Flyway или Liquibase руками и держать в голове синтаксис каждой конкретной БД — утомительно и легко накосячить.
IntelliJ IDEA позволяет генерировать миграции напрямую из ваших сущностей.
Подробнее: https://jb.gg/b8o1hq
👉 Java Portal
IntelliJ IDEA позволяет генерировать миграции напрямую из ваших сущностей.
Подробнее: https://jb.gg/b8o1hq
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Java-совет: используй WeakHashMap для кэширования в случаях, когда ключи мапы без внешних ссылок должны автоматически удаляться сборщиком мусора.
❌ В HashMap, пока сама мапа существует, ключи и связанные с ними значения не будут удалены сборщиком мусора.
✅ В WeakHashMap ключи хранятся через weak-ссылки. Если на ключ больше нет strong-ссылок в других местах программы, GC может его собрать, и он будет автоматически удалён из мапы.
Пример:
👉 Java Portal
Пример:
Map<User, String> map = new WeakHashMap<>();
User u1 = new User("Mick");
map.put(u1, "Cached data");
...
u1 = null;
// С этого момента ключ u1 может быть удалён сборщиком мусора.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4
java programs.pdf
124.3 KB
От базовых до продвинутых программ на Java
39 программ на Java, каждая из которых решает отдельную задачу, включая разворот строки, проверку на палиндром, генерацию чисел Фибоначчи, вычисление факториала, проверку простого числа, сортировку массива, удаление дубликатов, поиск наибольшего элемента, и многое другое
👉 Java Portal
39 программ на Java, каждая из которых решает отдельную задачу, включая разворот строки, проверку на палиндром, генерацию чисел Фибоначчи, вычисление факториала, проверку простого числа, сортировку массива, удаление дубликатов, поиск наибольшего элемента, и многое другое
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring Boot: для отправки писем можно использовать spring-boot-starter-mail.
✅ Он включает всю необходимую конфигурацию и зависимости, благодаря чему отправка почты становится простой и понятной.
Добавь зависимость:
Настрой почтовые параметры в application.properties (или application.yml):
Используй JavaMailSender в коде:
👉 Java Portal
Добавь зависимость:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
Настрой почтовые параметры в application.properties (или application.yml):
spring.mail.host=smtp.gmail.com
spring.mail.port=587
[email protected]
spring.mail.password=my_password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
Используй JavaMailSender в коде:
@Autowired
private JavaMailSender mailSender;
public void sendEmail(String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);
message.setSubject(subject);
message.setText(text);
message.setFrom("[email protected]");
mailSender.send(message);
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Совет на 2026 год — освойте ВАЙБ-КОДИНГ. ИИ уже пишет код, чинит баги, генерит тесты и документацию быстрее и качественнее любой команды айтишников
И те, кто научится вайбкодить сейчас, будут зарабатывать в разы больше тех, кто всё ещё делает всё вручную
Разобраться в этом с нуля поможет канал Вайб-кодинг. Там простым языком разбирают, какие инструменты действительно стоит использовать, как собирать проекты от идеи до релиза и что сейчас актуально в вайбкодинге
Подписывайтесь, нас уже 15 тысяч: @vibecoding_tg
И те, кто научится вайбкодить сейчас, будут зарабатывать в разы больше тех, кто всё ещё делает всё вручную
Разобраться в этом с нуля поможет канал Вайб-кодинг. Там простым языком разбирают, какие инструменты действительно стоит использовать, как собирать проекты от идеи до релиза и что сейчас актуально в вайбкодинге
Подписывайтесь, нас уже 15 тысяч: @vibecoding_tg
🤣12❤3💊3