Обновить
137.23

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Протоколы внутренней маршрутизации

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели9K

Материал продолжает серию статей, посвящённую семинарам внутреннего обучения, которые проводятся в IT‑компании NAUKA. Надеемся, что сведения, представленные в ней, будут полезными для школьников старших классов, студентов младших курсов ВУЗов, сотрудников IT‑компаний, не связанных в своей работе с IT‑инфраструктурой.

В данном разделе будут кратко рассмотрены протоколы внутренней динамической маршрутизации (RIP, EIGPR, OSPF) наиболее часто используемые в настоящее время для сетей IPv4.

Читать далее

YYYY? yyyy!

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели5.9K

Знаете ли вы, в чём разница между 'Y' и 'y' символами в паттерне даты в Java? В этой статье мы рассмотрим, как неправильное форматирование даты может привести к ошибке, а также расскажем вам про нашу новую диагностику V6122 для языка Java, которая убережёт вас от внезапных путешествий во времени.

Читать далее

Сборка мусора в Java. Часть 2. Прогресс со времени выхода JDK 8

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели4.2K

Команда Spring АйО перевела и адаптировала доклад "Garbage Collection in Java: The progress since JDK 8" Стефана Йоханссона(Stefan Johansson) с последнего Devoxx Belgium.

Доклад получилось поделить на две статьи:

* В первой мы рассказали про основы работы сборки мусора в Java и различных сборщиках мусора

* Вторая часть посвящена сравнению производительности сборщиков и их прогрессу с момента выхода JDK 8

Читать далее

Транзакции в Spring: сила управления данными

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели5.1K

Привет, Хабр! Сегодня разберемся с транзакциями в Spring так, чтобы всё стало ясно и понятно: зачем они нужны, как работают и как их настроить так, чтобы данные были под контролем.

Начнем с самого начала. Транзакция — это единица работы, которая должна быть выполнена полностью или не выполнена вовсе. Представьте банковскую операцию: перевод денег с одного счета на другой. Если деньги списаны с первого счета, но не зачислены на второй, у нас проблемы. Именно для таких ситуаций нужны транзакции.

В Spring управление транзакциями стало простым и интуитивно понятным благодаря хорошим инструментам и абстракциям. Рассмотрим, как это всё работает.

Читать далее

Как я пытался приручить кофемашину

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели1.3K

Добрый день. Делюсь своей старой исследовательской мини-статьей. Не ругайтесь, мне просто было скучновато.

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

Очередное желание изучить что-то новое привело меня к попытке написать программу (на rust), которая должна без инъекции взаимодействовать с запущенным java приложением. Я хотел читать и изменять память нужных мне java объектов без загрузки java-agent модулей, без использования jni, без загрузки новых классов в приложение и т.п. У меня есть PID процесса и знание о том, что это java приложение.

Читать далее

Создание плагина для IntelliJ IDE с подключением GigaChat для проверки качества кода

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели3.2K

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

Читать далее

Поддержка RestClient для OAuth2 в Spring Security 6.4

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели2.8K

Команда Spring АйО перевела статью, в которой Steve Reisenberg рассказал о множестве полезных улучшений для работы с OAuth2 в Security 6.4. 

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

Читать далее

Пример использования Spring Data и Redis для временного хранения персональных данных

Время на прочтение9 мин
Охват и читатели3K

Некоторые компании, работающие с персональными данными пользователей, сталкиваются с невозможностью хранить их в течение долгого периода времени из-за правовых ограничений. Такое часто можно встретить в финтехах. Позволяется сохранить данные на очень короткое время, которые также должны быть удалены сразу после использования в целях сервиса. Существует несколько вариантов решения этой задачи. В данном посте я показываю упрощенный пример микросервиса, работающего с чувствительной информацией, используя Spring и Redis

Читать далее

Ответ на статью о «Наиболее быстром интерпретаторе»

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели4.1K

Недавно была опубликована статья под заголовком "Глобально оптимальный, восьмой и наиболее быстрый вид интерпретаторов байткода". Несколько тезисов из статьи вызвали у меня сомнения в их справедливости. Об этом я попробовал написать ряд комментариев тире вопросов к указанной статье. Но основной лейтмотив всех ответов сводился к тому - "а ты напиши свою статью". Подход не столько инженерно-научный, сколько детсадовский. Мне бы хватило и содержательных ответов в формате комментариев, но как говорится - уговорили :).

Итак, что же утверждается автором статьи про наиболее быстрый интерпретатор:

Читать далее

Keycloak Starter. Удобный способ аутентификации и авторизации

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели7.6K

Это статья-туториал. Рассмотрим в ней, как сделать компонент, который поможет забыть о необходимости дублировать механизмы аутентификации и авторизации. Цель статьи - реализовать starter, который можно будет легко и удобно подключить к Spring Boot проекту. Предлагаемая цель актуальна?

Читать

Java Digest #18

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели2.5K

Всем привет! 👋 👋 👋 👋 Мы — Java-разработчики Т-Банка: Андрей, Арсений, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом выпуске обсуждаем последние обновления в экосистеме Java и популярных инструментах для разработчиков — от уменьшения размера хедеров объектов и новых API для файлов классов до новинок в IntelliJ IDEA. Делимся полезными статьями и видео об ускорении сборок, работе с JPA и Elasticsearch и даем рекомендации по разработке собственного Kafka Connector. Не пропустите интересные подкасты и практические примеры! 

Читать восемнадцатый выпуск

Как создать плохой REST-сервис: краткое руководство

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели7.3K

REST API — один из самых популярных типов веб‑сервисов. Но несмотря на множество туториалов по его созданию, на практике встречаются сервисы, которые вызывают лишь разочарование у пользователей.

Это подтолкнуло Костю, проектного разработчика в Naumen, создать краткое руководство по написанию плохого REST‑сервиса. Уже несколько лет он занимается поддержкой и развитием проектов на Naumen Service Management Platform, часто сталкивается с проектированием REST API и точно знает, каких ошибок лучше не допускать.

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

Читать далее

Apache Flink: Сериализация и JacksonStateSerializer

Время на прочтение12 мин
Охват и читатели1.1K

Привет, Хабр! На связи Александр Бобряков, техлид в команде МТС Аналитики. Это мой десятый материал про Apache Flink. В предыдущей части мы закончили разбирать оператор с Flink-таймерами, использующими внутреннее состояние. Также я показал, как их можно тестировать с помощью классов TestHarness или Flink MiniCluster. В дополнение тестами была покрыта вся Flink-джоба, включая E2E-тесты.

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

Весь разбираемый исходный код можно найти в репозитории AlexanderBobryakov/flink-spring. В master-ветке представлен итоговый проект по всей серии статей. Эта часть соответствует релизной ветке с названием release/9_JacksonStateSerializer.

По мере выхода новых материалов на Хабре ссылки на них будут появляться ниже.

Читать далее

Ближайшие события

Сборка мусора в Java. Часть №1. Обзор сборщиков мусора и их различий

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели7.6K

Команда Spring АйО перевела и адаптировала доклад "Garbage Collection in Java: The progress since JDK 8" Стефана Йоханссона(Stefan Johansson) с последнего Devoxx Belgium.

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

Читать далее

Виртуальные потоки Java: разбор тестовых сценариев

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели3.8K

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

В этой статье представлены наши результаты, включая:

- Обзор реализации виртуальных потоков в Java
- Обзор текущей технологии пула потоков в Liberty
- Оценку по ряду показателей производительности, включая неожиданные наблюдения
- Сводный обзор наших выводов

Читать далее

Создателю Флибусты Стиверу, с благодарностью от Java

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели12K

20 октября после продолжительной борьбы с глиобластомой скончался первоначальный автор декомпилятора Java Fernflower Стивер.

Стивер был немецким программистом русского происхождения, в основном разрабатывавшим программное обеспечение для медицинского оборудования. Двадцать лет назад у него появился глубокий профессиональный интерес к внутренним устройствам виртуальной машины Java. Вы можете помнить его исследовательские записи в блоге, например, эту (на русском) от 2006 года о том, как настроить иерархию классов Java с помощью Unsafe, когда Java 1.5 только вышла. Примерно в 2008 году Стивер увлекся декомпиляцией Java.

В то время ландшафт декомпиляции Java был очень беден. Время первого поколения декомпиляторов, таких как JAD или JODE, подходило к концу. В то время как Java как язык развивался, существующие декомпиляторы в основном не поддерживались, что затрудняло работу с новыми языковыми конструкциями, такие как операторы утверждений, аннотации и универсальные типы. Более того, прекращение поддержки инструкций JSR/RET в байт-коде Java привело к существенной разнице в том, как компилируются блоки try-finally. Декомпиляторы не смогли обрабатывать новый байт-код.

Еще одной большой проблемой существующих декомпиляторов был их подход к декомпиляции. Они просто искали определенные шаблоны байт-кода и переводили их в соответствующие операторы и выражения Java. Несмотря на простоту, этот подход является нестабильным - любое незначительное семантически эквивалентное изменение в сгенерированном байт-коде делало надлежащую декомпиляцию невозможной. Это серьезно ограничивало применение декомпилятора.

Читать далее

Сравнение операторов RxJava 3 и Kotlin Coroutines Flow

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели2.5K

Привет, Хабр! Меня зовут Константинов Александр, я Android-разработчик в «Студии Олега Чулакова». Сегодня мы сравим операторы RxJava 3 и Flow. Статья будет полезна как для изучения операторов, так и для более легкого перехода с RxJava на Flow.

Читать далее

HHH90003004: firstResult/maxResults specified with collection fetch; applying in memory

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели1.1K

Это предупреждение, которое выведет хибернейт, если для осуществления пагинации ему придется загрузить ВСЕ данные из таблицы, а не по одной странице.

Почему возникает и как пофиксить...

Давайте использовать OpenTelemetry со Spring

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели5.8K

Команда Spring АйО перевела статью, раскрывающую преимущества использования OpenTelemetry для мониторинга и трассировки Spring Boot приложений.

В статье показано, как интеграция с OpenTelemetry с использованием OTLP и других компонентов позволяет легко встроить стандартизированный сбор метрик, логов и трассировок в экосистему Spring.

Читать далее

Spring АйО подкаст №1. Spring – эволюция или революция?

Уровень сложностиПростой
Время на прочтение1 мин
Охват и читатели1.3K

В первом выпуске подкаста Spring АйО в студии собрались 4 эксперта сообщества, чтобы попытаться раз и навсегда ответить на вопрос: "Чем же для нас стал Spring: эволюцией или революцией?"

Читать далее

Вклад авторов