JetBrains вбросили загадку про IntelliJ IDEA. Судя по всему, кто-то пытается незаметно попасть на их день рождения. Команда решила устроить мини-квест: каждый день будет новая задачка, новые подсказки и в итоге надо вычислить тайного гостя вечеринки. 😂
В первом задании предлагают сопоставить сниппеты кода с версиями Java. Там набор вполне узнаваемых фич: var, streams, diamond-оператор, enum и records. Ниже варианты: Java 5, 7, 8, 11, 17 и 21.
Выглядит легко, но подана история забавно, а оформление в стиле карты-загадки.
👉 Java Portal
В первом задании предлагают сопоставить сниппеты кода с версиями Java. Там набор вполне узнаваемых фич: var, streams, diamond-оператор, enum и records. Ниже варианты: Java 5, 7, 8, 11, 17 и 21.
Выглядит легко, но подана история забавно, а оформление в стиле карты-загадки.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3
Новый способ регистрировать бины программно начиная со Spring Framework 7 👇 👇 👇
👉 Java Portal
@Configuration
@Import(ExampleRegistrar.class)
class ExampleConfiguration {
}
class ExampleRegistrar implements BeanRegistrar {
@Override
public void register(BeanRegistry registry, Environment env) {
if (env.matchesProfiles("dev")) {
registry.registerBean(ExampleInMemoryRepository.class);
} else {
registry.registerBean(ExampleRepository.class);
}
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2🔥2
В старые времена на Java самое дорогое выражение, которое я видел в проде, выглядело невинно:
→ repository.findAll()
Компилируется, тесты проходит, на QA тоже всё ок потому что данных мало.
А потом в проде прилетает реальный трафик, JVM начинает пухнуть от хипа и p99 улетает в космос. Причина простая — вызов неограниченный по объёму. Без лимитов, без пагинации, без стриминга.
показательный случай про цену подобных ошибок:
• ракета Ariane 5
• стоимость проекта — 370 млн
• в коде было преобразование 64-битного значения к 16-битному
• при ускорении значение вышло за пределы
• произошёл overflow, навигация отказала
• запуск провалился, 370 млн просто улетели
Вывод: неограниченные операции в коде — всегда риск.
Из той же категории:
• collect(toList()) на огромных стримах
•
• synchronized на нагруженном месте
👉 Java Portal
→ repository.findAll()
Компилируется, тесты проходит, на QA тоже всё ок потому что данных мало.
А потом в проде прилетает реальный трафик, JVM начинает пухнуть от хипа и p99 улетает в космос. Причина простая — вызов неограниченный по объёму. Без лимитов, без пагинации, без стриминга.
показательный случай про цену подобных ошибок:
• ракета Ariane 5
• стоимость проекта — 370 млн
• в коде было преобразование 64-битного значения к 16-битному
• при ускорении значение вышло за пределы
• произошёл overflow, навигация отказала
• запуск провалился, 370 млн просто улетели
Вывод: неограниченные операции в коде — всегда риск.
Из той же категории:
• collect(toList()) на огромных стримах
•
@Transactional прямо на контроллерах• synchronized на нагруженном месте
Please open Telegram to view this post
VIEW IN TELEGRAM
👀6👍3