В статье показано, как сократить число SQL-запросов при работе с Spring Data JPA и Hibernate: от устранения лишних
SELECT до борьбы с N+1.Автор на примерах разбирает, когда использовать
getReferenceById, @Version, fetch join и @DynamicUpdate, чтобы ускорить взаимодействие с базой и избежать скрытых тормозов.🔖 Предыдущая часть — КЛИК
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2
В статье рассказывается, как генерировать HTTP-клиенты для Spring Boot приложений с помощью OpenAPI и плагина openapi-generator для Gradle.
Автор показывает как сгенерировать код, настроить проект и интегрировать его с RestTemplate или WebClient.
tags: #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
В чём разница между @Bean и @Component в Spring?
Ответ:
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🤣3
Репозиторий best-system-design-resources — это аккуратно собранная подборка ресурсов по системному дизайну: книги, статьи, видео, курсы и разборы архитектур.
Что внутри:
▶ Основы: CAP-теорема, масштабирование, консистентность▶ Разбор ключевых компонентов: кэш, балансировка, шардирование, очереди▶ Примеры реальных систем: поисковики, видеохостинги, мессенджеры▶ Курсы и гайды: System Design Primer, Grokking, Gaurav Sen▶ Задачи и кейсы с интервью
Хорошая база, чтобы структурировать знания и увереннее разбираться в архитектуре крупных систем.
tags: #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
Функциональный интерфейс — это интерфейс, который определяет только один абстрактный метод. Это позволяет передавать поведение как значение — например, в виде лямбды или ссылки на метод.
Рассмотрим простейший пример:
@FunctionalInterface
interface Greeting {
void say(String message);
}
Greeting g = msg -> System.out.println("Привет, " + msg);
g.say("мир!");
Аннотация @FunctionalInterface не обязательна, но рекомендуема — она защищает от случайного добавления лишнего абстрактного метода.
Интерфейс может содержать сколько угодно
default- и static-методов и при этом оставаться функциональным, так как они не считаются абстрактными.В Java предусмотрен набор стандартных функциональных интерфейсов — в пакете
java.util.function. Вот наиболее часто используемые:▶️ Predicate<T> — проверяет условие, возвращает true или false▶️ Function<T, R> — преобразует один тип в другой▶️ Consumer<T> — принимает значение, ничего не возвращает▶️ Supplier<T> — возвращает значение, ничего не принимает▶️ UnaryOperator<T> и BinaryOperator<T> — частные случаи Function, когда вход и выход одного типа
Пример использования Predicate:
Predicate<String> isLong = s -> s.length() > 5;
System.out.println(isLong.test("Java")); // false
Функциональные интерфейсы активно используются в Stream API, Optional, Comparator, CompletableFuture и других частях стандартной библиотеки. Это удобный способ описать поведение без лишнего кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14
Redis (Remote Dictionary Server) — это in-memory база данных, которая хранит данные в оперативной памяти. Благодаря этому она обеспечивает очень высокую производительность, особенно для операций чтения и записи.
Хранение данных в оперативной памяти
Redis хранит все данные в оперативной памяти (RAM), что делает операции чрезвычайно быстрыми. Операции чтения и записи происходят за миллисекунды, в отличие от традиционных баз данных, которые хранят данные на диске.
Разнообразие структур данных
Redis поддерживает не только строки, как большинство key-value хранилищ, но и сложные структуры данных:
— Строки (Strings)
— Списки (Lists)
— Множества (Sets)
— Отсортированные множества (Sorted Sets)
— Хэши (Hashes)
— Битовые операции (Bitmaps)
— Гео-данные (Geospatial data)
— Стек и очередь (с помощью списка)
Механизм постоянства данных
Хотя Redis хранит данные в оперативной памяти, он поддерживает два метода сохранения данных на диск для обеспечения постоянства: RDB (Redis Database Backup) — периодическое создание снапшотов данных, AOF (Append Only File) — запись всех операций в журнал, что позволяет восстанавливать состояние Redis при сбое.
Поддержка Pub/Sub
Redis предоставляет возможности для реализации системы обмена сообщениями в реальном времени с помощью механизма публикации/подписки (Pub/Sub). Это позволяет приложениям общаться друг с другом через каналы.
Механизм кластеризации
Redis может быть развернут в режиме кластера, где данные распределяются между несколькими узлами. Это позволяет обеспечить масштабируемость и отказоустойчивость.
Представим, что у нас есть своя социальная сеть, в которой зарегистрирован Месси. Каждый день страничку Месси посещают сотни тысяч пользователей.
Что происходит в таком случае под капотом? Наше приложение постоянно запрашивает одни и те же данные (профиль Месси) из БД, например, MySQL, что занимает десятки миллисекунд. Это очень ресурсоемкий процесс, учитывая количество пользователей, посещающих страницу Месси.
Эту проблему как раз и решает Redis: мы используем его как промежуточный кэш для хранения часто запрашиваемых данных. Вместо того, чтобы каждый раз делать запрос в реляционную БД, приложение сначала проверяет кэш Redis.
Если данные найдены в Redis (cache hit), они возвращаются мгновенно (в пределах миллисекунды). Если данных нет (cache miss), запрос делается в основную БД, а результат сохраняется в Redis для будущих обращений.
Отправляй
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤3👍2
Что такое Redis и зачем он используется?
Ответ:
tags: #собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍1
Выспался. Создал чат-бота. Заработал +17.000 рублей.
Пока ты едешь на «любимую работу» к 8ч утра, другие запускают этого бота, следуют пошаговой инструкции и получают +17.000 рублей за несколько часов работы.
Эти люди не программисты и у них даже нет высшего образования. Они просто научились создавать чат-ботов, где нет ничего сложного. И за это им готовы платить 200-250.000 рублей в месяц.
На старте новички зарабатывают 70-80.000 рублей, а ребята поопытнее от 200.000 рублей в месяц.
Все, что нужно для старта — запустить этот бот. Там уже рассказали, как с помощью чат-ботов и удаленки заработать несколько месячных зарплат и наконец уволиться из найма в 2026 году.
Пока ты едешь на «любимую работу» к 8ч утра, другие запускают этого бота, следуют пошаговой инструкции и получают +17.000 рублей за несколько часов работы.
Эти люди не программисты и у них даже нет высшего образования. Они просто научились создавать чат-ботов, где нет ничего сложного. И за это им готовы платить 200-250.000 рублей в месяц.
На старте новички зарабатывают 70-80.000 рублей, а ребята поопытнее от 200.000 рублей в месяц.
Все, что нужно для старта — запустить этот бот. Там уже рассказали, как с помощью чат-ботов и удаленки заработать несколько месячных зарплат и наконец уволиться из найма в 2026 году.
🤣9❤2
This media is not supported in your browser
VIEW IN TELEGRAM
Это культовый репозиторий с сотней пет-проектов для реализации: от простых CLI-инструментов до полноценных веб-приложений
Вместо теории — конкретные задачи, пошаговые туториалы и репозитории, которые помогают прокачивать навыки через практику.
Отличный ресурс, чтобы собрать портфолио — забираем тут.
tags: #полезное
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
🔥7😁2
This media is not supported in your browser
VIEW IN TELEGRAM
AlgoTree — платформа, которая помогает анализировать структуры данных: деревья, графы, обходы и другое.
Здесь не готовят к собеседованиям и не дают решения задач, а последовательно объясняют, как устроены деревья, графы и алгоритмы, и почему они работают именно так.
tags: #полезное #алгоритмы
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3