Парсинг на Java. От основ до парсинга Яндекс Карт
Сегодня разбираем основы парсинга на Java с практическим примером на Яндекс Карт.
В статье рассматривается, что такое HTTP, как работают методы запросов, как использовать HttpClient в Java 11+ для отправки GET и POST-запросов, как обрабатывать HTTP-ответы и извлекать данные. Всё это показано на примере парсинга данных с внешнего сервера через Яндекс Карты, чтобы дать полное представление о работе с сетевыми запросами в Java.
👉 Java Portal
Сегодня разбираем основы парсинга на Java с практическим примером на Яндекс Карт.
В статье рассматривается, что такое HTTP, как работают методы запросов, как использовать HttpClient в Java 11+ для отправки GET и POST-запросов, как обрабатывать HTTP-ответы и извлекать данные. Всё это показано на примере парсинга данных с внешнего сервера через Яндекс Карты, чтобы дать полное представление о работе с сетевыми запросами в Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
В продакшн-коде использование длинных цепочек if-else обходится слишком дорого -> лишний else может привести к падению приложения. Понимание того, чем их заменить, отличает джуна от сеньора.
Если ты всё ещё пишешь подобные громоздкие цепочки if-else в ключевой бизнес-логике, ты фактически держишь свой код в заложниках. Такие конструкции просты, но они не масштабируются.
Когда логика усложняется, код становится трудным для тестирования, расширения и чтения.
Что делают опытные Java-разработчики? Они часто заменяют такие конструкции паттерном Strategy.
Strategy можно сравнить с выбором способа добраться до аэропорта. Вместо одной гигантской функции с if-else на тему «поехать на автобусе», «взять такси» или «сесть на поезд» ты создаёшь отдельную «стратегию» под каждый вариант. Основной код просто выбирает нужную стратегию и говорит: «Поехали».
Вместо бесконечных блоков else if ты:
→ Определяешь интерфейс стратегии (PaymentStrategy).
→ Создаёшь отдельные реализации под каждый случай (CreditCardPayment, UpiPayment).
→ Используешь Map для выбора нужной стратегии во время выполнения:
Готово. Теперь можно добавлять новую логику, не трогая старый код. Чисто, масштабируемо и поддерживаемо.
👉 Java Portal
if (paymentType.equals("creditcard")) {
processCreditCard(payment);
} else if (paymentType.equals("upi")) {
processUpi(payment);
} else if (paymentType.equals("crypto")) {
processCrypto(payment);
}
Если ты всё ещё пишешь подобные громоздкие цепочки if-else в ключевой бизнес-логике, ты фактически держишь свой код в заложниках. Такие конструкции просты, но они не масштабируются.
Когда логика усложняется, код становится трудным для тестирования, расширения и чтения.
Что делают опытные Java-разработчики? Они часто заменяют такие конструкции паттерном Strategy.
Strategy можно сравнить с выбором способа добраться до аэропорта. Вместо одной гигантской функции с if-else на тему «поехать на автобусе», «взять такси» или «сесть на поезд» ты создаёшь отдельную «стратегию» под каждый вариант. Основной код просто выбирает нужную стратегию и говорит: «Поехали».
Вместо бесконечных блоков else if ты:
→ Определяешь интерфейс стратегии (PaymentStrategy).
→ Создаёшь отдельные реализации под каждый случай (CreditCardPayment, UpiPayment).
→ Используешь Map для выбора нужной стратегии во время выполнения:
strategyMap.get(type).processPayment(payment);
Готово. Теперь можно добавлять новую логику, не трогая старый код. Чисто, масштабируемо и поддерживаемо.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥5❤2
Представлен бесплатный онлайн-плейграунд для SQL — RunSQL. 🪿
Сервис позволяет создавать таблицы, писать запросы и делиться результатами с командой. Поддерживаются MySQL, PostgreSQL и SQL Server.
Работает прямо из браузера, ничего устанавливать не нужно: http://runsql.com/r
👉 Java Portal
Сервис позволяет создавать таблицы, писать запросы и делиться результатами с командой. Поддерживаются MySQL, PostgreSQL и SQL Server.
Работает прямо из браузера, ничего устанавливать не нужно: http://runsql.com/r
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍5
Сериализация кажется простой, но интервьюеры часто используют её, чтобы понять, кто выходит за рамки обычного кодинга.
Главное, что должен знать каждый Java-разработчик:
serialVersionUID – если не объявлен, JVM сгенерирует свой. При изменении класса старые объекты перестают десериализоваться. Всегда объявляйте явно.
transient-поля – помечайте чувствительные данные (например, пароли) как transient, чтобы они не записывались на диск или в логи.
Возможны атаки через десериализацию. Никогда не десериализуйте ненадёжный ввод.
👉 Java Portal
Главное, что должен знать каждый Java-разработчик:
serialVersionUID – если не объявлен, JVM сгенерирует свой. При изменении класса старые объекты перестают десериализоваться. Всегда объявляйте явно.
transient-поля – помечайте чувствительные данные (например, пароли) как transient, чтобы они не записывались на диск или в логи.
Возможны атаки через десериализацию. Никогда не десериализуйте ненадёжный ввод.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤4
Современный Java, объяснённый просто (с примерами)
Многие думают, что Java сложный или многословный язык.
Но в последних версиях (Java 17 → 21 → 25) язык сильно изменился.
4 современных фичи, которые делают жизнь разработчика проще:
1. Records (меньше повторяющегося кода)
Раньше приходилось писать конструкторы, геттеры, toString…
Достаточно одной строки — всё это генерируется автоматически.
2. Sealed classes (контролируемое наследование)
Позволяет ограничить, какие классы могут наследоваться от другого.
Никто больше не сможет реализовать Shape, кроме разрешённых. Безопасность и ясность.
3. Pattern Matching (более мощный switch)
Теперь switch понимает типы, а не только значения.
Чище, чем использовать instanceof и касты повсюду.
4. Virtual Threads (лёгкая конкуренция)
С Java 21 появились виртуальные потоки → можно создавать тысячи потоков без падения системы.
Идеально для приложений с огромным количеством соединений (APIs, микросервисы).
Java больше не тот тяжёлый язык, каким был раньше.
А с выходом Java 25 как LTS он приносит ещё больше улучшений для разработчиков.
👉 Java Portal
Многие думают, что Java сложный или многословный язык.
Но в последних версиях (Java 17 → 21 → 25) язык сильно изменился.
4 современных фичи, которые делают жизнь разработчика проще:
1. Records (меньше повторяющегося кода)
Раньше приходилось писать конструкторы, геттеры, toString…
Достаточно одной строки — всё это генерируется автоматически.
2. Sealed classes (контролируемое наследование)
Позволяет ограничить, какие классы могут наследоваться от другого.
Никто больше не сможет реализовать Shape, кроме разрешённых. Безопасность и ясность.
3. Pattern Matching (более мощный switch)
Теперь switch понимает типы, а не только значения.
Чище, чем использовать instanceof и касты повсюду.
4. Virtual Threads (лёгкая конкуренция)
С Java 21 появились виртуальные потоки → можно создавать тысячи потоков без падения системы.
Идеально для приложений с огромным количеством соединений (APIs, микросервисы).
Java больше не тот тяжёлый язык, каким был раньше.
А с выходом Java 25 как LTS он приносит ещё больше улучшений для разработчиков.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤4
В Java на собеседованиях могут спросить про альтернативы
Ниже три мощные альтернативы
Используется для временных кэшей, хранения слушателей, метаданных, привязанных к жизненному циклу объекта.
Используется во фреймворках, парсерах и графах зависимостей, где важна физическая идентичность объекта.
Использовать
Используется всегда, если ключи берутся из одного
Быстрый гайд по выбору:
- Нужно автоочищение кэша →
- Нужна идентичность объектов (
- Ключи из
- Всё остальное →
👉 Java Portal
HashMap
, так как он не всегда самый быстрый или экономичный по памяти и иногда приводит к скрытым проблемам с производительностью, утечкам памяти и сложным багам. Ниже три мощные альтернативы
HashMap
и ситуации, когда стоит их использовать. WeakHashMap
: Самоочищающийся кэш HashMap
часто применяют для кэширования, но он держит сильные ссылки на ключи, мешая GC освободить память даже тогда, когда объект уже больше нигде не используется. Это может привести к утечкам памяти. WeakHashMap
хранит ключи через слабые ссылки. Если на объект-ключ больше нет сильных ссылок, GC может удалить его, и запись в мапе исчезнет автоматически. Используется для временных кэшей, хранения слушателей, метаданных, привязанных к жизненному циклу объекта.
IdentityHashMap
: Когда объекты "равны", но не одинаковы HashMap
проверяет ключи через метод .equals()
. Если у вас два объекта с одинаковыми данными, но это разные экземпляры (например, два Person
с одинаковым именем, но разными записями), то HashMap
перезапишет значение. IdentityHashMap
сравнивает ключи только по ссылке (==), игнорируя .equals()
. Разные объекты всегда будут разными ключами, даже если у них одинаковые данные. Используется во фреймворках, парсерах и графах зависимостей, где важна физическая идентичность объекта.
EnumMap
: Оптимизированный вариант для enum-ключей Использовать
enum
как ключ в HashMap
неэффективно. Нужно считать хэши, обрабатывать коллизии, хотя набор ключей фиксирован на этапе компиляции. EnumMap
специально создан для enum-ключей. Внутри он работает через массив, используя ordinal() значения enum в качестве индекса. Это даёт настоящие O(1)-операции и экономит память. Используется всегда, если ключи берутся из одного
enum
. Быстрый гайд по выбору:
- Нужно автоочищение кэша →
WeakHashMap
- Нужна идентичность объектов (
==
) → IdentityHashMap
- Ключи из
enum
→ EnumMap
- Всё остальное →
HashMap
по умолчаниюPlease open Telegram to view this post
VIEW IN TELEGRAM
👍12
Вот 17 авторских обучающих IT каналов по самым востребованным областям программирования:
Выбирай своё направление:
Please open Telegram to view this post
VIEW IN TELEGRAM
Google увеличил функционал Agent Development Kit для Java, внедрив поддержку LangChain4j. Теперь Java-инженеры способны подключать модели OpenAI, Anthropic, Mistral и прочие, разрабатывая многоагентные решения с более гибким контролем и усовершенствованной логикой.
Подробности: тык
👉 Java Portal
Подробности: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
InfoQ
Google's Agent Development Kit for Java Adds Integration with LangChain4j
The latest release of the Agent Development Kit for Java, version 0.2.0, marks a significant expansion of its capabilities through the integration with the LangChain4j LLM framework, which opens it up to all the large language models supported by the framework.
❤4👍2
Вопрос для собеседования Java/Backend:
Современные приложения могут держать пользователя залогиненным без серверного хранения сессий благодаря JWT
Это компактный и безопасный токен, который сервер подписывает и отдает клиенту. Клиент хранит его и отправляет вместе с запросами, а сервер проверяет подпись и доверяет данным внутри токена без обращения к базе.
JWT состоит из трёх частей — заголовка с алгоритмом и типом, полезной нагрузки с пользовательскими данными (claims) и подписи, которая гарантирует подлинность.
Такой подход делает авторизацию stateless: вся необходимая информация хранится в самом токене.
Чтобы обеспечить безопасность, важно всегда использовать HTTPS, задавать короткий срок жизни токена и предусматривать механизм отзыва украденных токенов.
👉 Java Portal
Как современные приложения оставляют вас залогиненным без хранения сессии на сервере?🫖
Современные приложения могут держать пользователя залогиненным без серверного хранения сессий благодаря JWT
Это компактный и безопасный токен, который сервер подписывает и отдает клиенту. Клиент хранит его и отправляет вместе с запросами, а сервер проверяет подпись и доверяет данным внутри токена без обращения к базе.
JWT состоит из трёх частей — заголовка с алгоритмом и типом, полезной нагрузки с пользовательскими данными (claims) и подписи, которая гарантирует подлинность.
Такой подход делает авторизацию stateless: вся необходимая информация хранится в самом токене.
Чтобы обеспечить безопасность, важно всегда использовать HTTPS, задавать короткий срок жизни токена и предусматривать механизм отзыва украденных токенов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4
1 октября (уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика.
Как это будет:
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_sh_bot
Реклама.
О рекламодателе.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
This media is not supported in your browser
VIEW IN TELEGRAM
Держите репозиторий на GitHub где собрана отличная подборка бесплатных материалов по программированию.
Здесь собраны сотни книг по самым разным направлениям: от веб-разработки и геймдева до AI, блокчейна, создания приложений и даже prompt engineering.😎
👉 Java Portal
Здесь собраны сотни книг по самым разным направлениям: от веб-разработки и геймдева до AI, блокчейна, создания приложений и даже prompt engineering.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3