#полезное
🥺 Профилирование с помощью Spring Boot Actuator
Spring Boot Actuator предоставляет эндпоинты, такие как
В связке с Micrometer, Prometheus и Grafana позволяет визуализировать производительность вашего приложения.
👉 Новости 👉 База вопросов
Spring Boot Actuator предоставляет эндпоинты, такие как
/actuator/metrics
, /actuator/health
и /actuator/heapdump
.В связке с Micrometer, Prometheus и Grafana позволяет визуализировать производительность вашего приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Пример Spring MVC: Hello World
Простое веб-приложение, в котором контроллер обрабатывает запрос, добавляет данные в модель и отображает их в представлении (view).
👉 Новости 👉 База вопросов
Простое веб-приложение, в котором контроллер обрабатывает запрос, добавляет данные в модель и отображает их в представлении (view).
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #bash
🤔 Разница между одинарными и двойными кавычками в Bash
Одинарные кавычки
👉 Новости 👉 База вопросов
Одинарные кавычки
' '
предотвращают интерпретацию переменных и команд, а двойные " "
позволяют их подставлять.VAR="world"
echo 'Hello $VAR' # Выведет: Hello $VAR
echo "Hello $VAR" # Выведет: Hello world
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 CompletableFuture - современный подход к асинхронному программированию в Java.
Это помогает повысить производительность в реальных приложениях, таких как API и микросервисы.
👉 Новости 👉 База вопросов
CompletableFuture
в Java позволяет выполнять неблокирующие асинхронные задачи с помощью чистого, цепочечного API.Это помогает повысить производительность в реальных приложениях, таких как API и микросервисы.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😘 Singleton Pattern
Гарантирует наличие единственного экземпляра класса с ленивой инициализацией. Использует двойную проверку блокировки (double-checked locking) для обеспечения потокобезопасности
Где используется:
🟠 глобальный логгер на всё приложение
🟠 загрузка конфигурации при первом вызове
🟠 отложенное создание пула соединений
🟠 минимизируем блокировки после инициализации
👉 Новости 👉 База вопросов
Гарантирует наличие единственного экземпляра класса с ленивой инициализацией. Использует двойную проверку блокировки (double-checked locking) для обеспечения потокобезопасности
Где используется:
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😜 Потокобезопасные неизменяемые данные с использованием Java Records:
Классы record в Java обеспечивают встроенную неизменяемость, что делает их идеальными для безопасного обмена данными между потоками. В сочетании с
👉 Новости 👉 База вопросов
Классы record в Java обеспечивают встроенную неизменяемость, что делает их идеальными для безопасного обмена данными между потоками. В сочетании с
ExecutorService
они упрощают конкурентное программирование Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #bash
🤔 Как экспортировать переменную в Bash и зачем это нужно?
Чтобы сделать переменную доступной для всех запущенных процессов, используется
Теперь эта переменная доступна в дочерних процессах, например, в другом скрипте или командной оболочке.
👉 Новости 👉 База вопросов
Чтобы сделать переменную доступной для всех запущенных процессов, используется
export
:export VAR="Hello"
Теперь эта переменная доступна в дочерних процессах, например, в другом скрипте или командной оболочке.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 Примитивные типы данных
Мини-шпаргалка для новичков и тех, кто повторяет основы
🟠 byte — 1 байт
Диапазон: -128 до 127
🟠 short — 2 байта
Диапазон: -32,768 до 32,767
🟠 int — 4 байта
Диапазон: -2,147,483,648 до 2,147,483,647
🟠 long — 8 байт
Диапазон: ±9 квинтиллионов (±2^63)
🟠 float — 4 байта
Точность: ~7 знаков после запятой
🟠 double — 8 байт
Точность: ~15 знаков после запятой
🟠 char — 2 байта
Хранит 1 Unicode-символ
🟠 boolean — ~1 бит (зависит от JVM)
Значения: true / false
👉 Новости 👉 База вопросов
Мини-шпаргалка для новичков и тех, кто повторяет основы
Диапазон: -128 до 127
Диапазон: -32,768 до 32,767
Диапазон: -2,147,483,648 до 2,147,483,647
Диапазон: ±9 квинтиллионов (±2^63)
Точность: ~7 знаков после запятой
Точность: ~15 знаков после запятой
Хранит 1 Unicode-символ
Значения: true / false
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥺 Взаимоблокировка (deadlock) в Java
Взаимоблокировка возникает, когда два потока удерживают блокировки и одновременно ожидают освобождения друг друга, что приводит к зависанию программы. Такая ситуация труднообнаружима и становится кошмаром в масштабных приложениях
👉 Новости 👉 База вопросов
Взаимоблокировка возникает, когда два потока удерживают блокировки и одновременно ожидают освобождения друг друга, что приводит к зависанию программы. Такая ситуация труднообнаружима и становится кошмаром в масштабных приложениях
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #bash
🤔 Как объявить переменную в Bash?
B Bash переменная объявляется без ключевого слова, просто через
Значение переменной можно получить через
👉 Новости 👉 База вопросов
B Bash переменная объявляется без ключевого слова, просто через
=
без пробелов:VAR=value
Значение переменной можно получить через
$VAR
.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😬 Java остаётся одним из самых популярных языков уже больше двух десятилетий.
Банковские системы, e-commerce платформы, Android-приложения и многое другое, всё это можно писать на Java.
В этом курсе ты изучишь основы Java: от переменных и циклов до объектно-ориентированного программирования (OOP).
👉 Новости 👉 База вопросов
Банковские системы, e-commerce платформы, Android-приложения и многое другое, всё это можно писать на Java.
В этом курсе ты изучишь основы Java: от переменных и циклов до объектно-ориентированного программирования (OOP).
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👋 Продвинутый уровень конкуррентности, неблокирующие структуры данных
Если вы пишете многопоточные приложения с высокой нагрузкой, стоит обратить внимание на lock-free программирование. Использование атомарных переменных позволяет обходиться без блокировок, это помогает избежать блокировок и повысить производительность при параллельном доступе к данным
👉 Новости 👉 База вопросов
Если вы пишете многопоточные приложения с высокой нагрузкой, стоит обратить внимание на lock-free программирование. Использование атомарных переменных позволяет обходиться без блокировок, это помогает избежать блокировок и повысить производительность при параллельном доступе к данным
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👋 Универсальная обёртка для API-ответов
Дженерики позволяют возвращать типобезопасные и переиспользуемые форматы ответов. Вот как создать обобщённую обёртку
👉 Новости 👉 База вопросов
Дженерики позволяют возвращать типобезопасные и переиспользуемые форматы ответов. Вот как создать обобщённую обёртку
ApiResponse<T>
для любого payload-а API.Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #bash
🤔 Что такое Bash shell?
Bash (Bourne Again Shell) - это командный интерпретатор, используемый в Unix и Linux. Он позволяет выполнять команды, автоматизировать задачи с помощью скриптов и управлять системой. Bash поддерживает переменные, управляющие конструкции (циклы, условия) и обработку командного вывода.
👉 Новости 👉 База вопросов
Bash (Bourne Again Shell) - это командный интерпретатор, используемый в Unix и Linux. Он позволяет выполнять команды, автоматизировать задачи с помощью скриптов и управлять системой. Bash поддерживает переменные, управляющие конструкции (циклы, условия) и обработку командного вывода.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👨💻 Защита вашего приложения с помощью Spring Security и OAuth2 Login.
Публичный доступ разрешён к
Полное руководство читайте здесь: тык
👉 Новости 👉 База вопросов
Публичный доступ разрешён к
/
и /login
, все остальные эндпоинты требуют аутентификации.Полное руководство читайте здесь: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😎 Параллельная хеш-таблица с мелкозернистой блокировкой:
Потокобезопасная хеш-таблица с блокировками на уровне бакетов для минимизации конфликтов — подходит для высокопроизводительных систем, таких как базы данных или кеши.
👉 Новости 👉 База вопросов
Потокобезопасная хеш-таблица с блокировками на уровне бакетов для минимизации конфликтов — подходит для высокопроизводительных систем, таких как базы данных или кеши.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 Что такое daemon-поток в Java?
Daemon-поток — это фоновый поток, который работает для поддержки пользовательских потоков. Примеры — сборщик мусора или системы мониторинга. Главное отличие: daemon-потоки не мешают завершению работы JVM. Как только все пользовательские (не-daemon) потоки завершатся, JVM завершится автоматически, даже если daemon-потоки ещё работают.
Как создаете daemon-поток?
🟠 Создаёте поток как обычно
🟠 Вызываете
🟠 Запускаете поток через
Как только основной (пользовательский) поток завершится — JVM выключится, даже если daemon-поток всё ещё активен.
Используйте daemon-потоки для фоновых сервисов, которые не должны блокировать завершение приложения. Всегда вызывайте
👉 Новости 👉 База вопросов
Daemon-поток — это фоновый поток, который работает для поддержки пользовательских потоков. Примеры — сборщик мусора или системы мониторинга. Главное отличие: daemon-потоки не мешают завершению работы JVM. Как только все пользовательские (не-daemon) потоки завершатся, JVM завершится автоматически, даже если daemon-потоки ещё работают.
Как создаете daemon-поток?
setDaemon(true)
до запуска потокаstart()
Как только основной (пользовательский) поток завершится — JVM выключится, даже если daemon-поток всё ещё активен.
Используйте daemon-потоки для фоновых сервисов, которые не должны блокировать завершение приложения. Всегда вызывайте
setDaemon(true)
до запускаPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Spring
🤔 В чём основное различие между @RestController и @Controller?
👉 Новости 👉 База вопросов
@Controller
используется для обработки запросов в традиционных веб-приложениях и возвращает HTML-представления. @RestController
автоматически возвращает данные в формате JSON или XML, что делает его идеальным для создания RESTful API.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Ограничение частоты запросов в Spring Boot с помощью Bucket4j
Реализация rate limiting в REST API на Spring Boot с использованием Bucket4j для контроля частоты запросов на пользователя, что повышает масштабируемость API. Подходит для предотвращения злоупотреблений в продакшн-системах
🟠 Импортируются классы из Bucket4j, Spring и Java SDK.
🟠 Создаётся REST-контроллер с маппингом
🟠 Для каждого пользователя создаётся бакет с лимитом 5 запросов в минуту. Если бакет позволяет — запрос проходит. Если нет — возвращается 429 статус.
🟠 Заглушка для
👉 Новости 👉 База вопросов
Реализация rate limiting в REST API на Spring Boot с использованием Bucket4j для контроля частоты запросов на пользователя, что повышает масштабируемость API. Подходит для предотвращения злоупотреблений в продакшн-системах
/api
HttpServletResponse
, нужна чтобы код можно было запускать без настоящего HTTP-сервера.Please open Telegram to view this post
VIEW IN TELEGRAM