#полезное
😱 Лучшие способы логировать SQL-запросы в Spring Boot
Читать подробнее
👉 Новости 👉 База вопросов
Читать подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Spring
🤔 Зачем нужен Spring Framework?
Spring Framework - это мощный инструмент для упрощения разработки приложений. Он предоставляет механизм управления зависимостями (Dependency Injection), гибкость конфигурации, интеграцию с различными технологиями и поддержку создания веб-приложений. Благодаря своей модульности и широким возможностям, Spring подходит как для небольших проектов, так и для крупных корпоративных систем.
👉 Новости 👉 База вопросов
Spring Framework - это мощный инструмент для упрощения разработки приложений. Он предоставляет механизм управления зависимостями (Dependency Injection), гибкость конфигурации, интеграцию с различными технологиями и поддержку создания веб-приложений. Благодаря своей модульности и широким возможностям, Spring подходит как для небольших проектов, так и для крупных корпоративных систем.
Please open Telegram to view this post
VIEW IN TELEGRAM
LeetCode
Exclusive Time of Functions - LeetCode
Can you solve this real interview question? Exclusive Time of Functions - On a single-threaded CPU, we execute a program containing n functions. Each function has a unique ID between 0 and n-1.
Function calls are stored in a call stack [https://en.wikip…
Function calls are stored in a call stack [https://en.wikip…
#ЛитКод
Задача: 636. Exclusive Time of Functions
На однопоточном процессоре выполняется программа, содержащая n функций. Каждая функция имеет уникальный ID от 0 до n-1. Вызовы функций хранятся в стеке вызовов: когда начинается вызов функции, ее ID заталкивается в стек, а когда вызов функции заканчивается, ее ID выгружается из стека. Функция, чей идентификатор находится в верхней части стека, является текущей выполняемой функцией. Каждый раз, когда функция запускается или завершается, мы пишем лог с идентификатором, началом или завершением и меткой времени. Вам предоставляется список logs, где logs[i] представляет собой i-е сообщение лога, отформатированное как строка "{function_id}:{"start" | "end"}:{timestamp}". Например, "0:start:3" означает, что вызов функции с идентификатором 0 начался в начале временной метки 3, а "1:end:2" означает, что вызов функции с идентификатором 1 завершился в конце временной метки 2. Обратите внимание, что функция может быть вызвана несколько раз, возможно, рекурсивно. Исключительное время функции - это сумма времен выполнения всех вызовов функции в программе. Например, если функция вызывается дважды, причем один вызов выполняется за 2 единицы времени, а другой - за 1 единицу, то эксклюзивное время равно 2 + 1 = 3. Верните эксклюзивное время каждой функции в массив, где значение по i-му индексу представляет собой эксклюзивное время для функции с идентификатором i.
Пример:
👨💻 Алгоритм:
1⃣ Парсинг логов: Пройдитесь по каждому логу, чтобы распознать действие (start или end) и идентификатор функции вместе с временной меткой.
2⃣ Использование стека: Используйте стек для отслеживания текущих вызовов функций. Если лог содержит start, добавьте функцию в стек и начните отсчет времени. Если лог содержит end, снимите функцию со стека и обновите эксклюзивное время.
3⃣ Обновление времени выполнения: Когда функция завершает выполнение, обновите ее эксклюзивное время и также учитывайте время выполнения вложенных функций.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 636. Exclusive Time of Functions
На однопоточном процессоре выполняется программа, содержащая n функций. Каждая функция имеет уникальный ID от 0 до n-1. Вызовы функций хранятся в стеке вызовов: когда начинается вызов функции, ее ID заталкивается в стек, а когда вызов функции заканчивается, ее ID выгружается из стека. Функция, чей идентификатор находится в верхней части стека, является текущей выполняемой функцией. Каждый раз, когда функция запускается или завершается, мы пишем лог с идентификатором, началом или завершением и меткой времени. Вам предоставляется список logs, где logs[i] представляет собой i-е сообщение лога, отформатированное как строка "{function_id}:{"start" | "end"}:{timestamp}". Например, "0:start:3" означает, что вызов функции с идентификатором 0 начался в начале временной метки 3, а "1:end:2" означает, что вызов функции с идентификатором 1 завершился в конце временной метки 2. Обратите внимание, что функция может быть вызвана несколько раз, возможно, рекурсивно. Исключительное время функции - это сумма времен выполнения всех вызовов функции в программе. Например, если функция вызывается дважды, причем один вызов выполняется за 2 единицы времени, а другой - за 1 единицу, то эксклюзивное время равно 2 + 1 = 3. Верните эксклюзивное время каждой функции в массив, где значение по i-му индексу представляет собой эксклюзивное время для функции с идентификатором i.
Пример:
Input: n = 2, logs = ["0:start:0","1:start:2","1:end:5","0:end:6"]
Output: [3,4]
import java.util.*;
public class Solution {
public int[] exclusiveTime(int n, List<String> logs) {
Stack<Integer> stack = new Stack<>();
int[] times = new int[n];
int prevTime = 0;
for (String log : logs) {
String[] parts = log.split(":");
int fid = Integer.parseInt(parts[0]);
String type = parts[1];
int time = Integer.parseInt(parts[2]);
if (type.equals("start")) {
if (!stack.isEmpty()) {
times[stack.peek()] += time - prevTime;
}
stack.push(fid);
prevTime = time;
} else {
times[stack.pop()] += time - prevTime + 1;
prevTime = time + 1;
}
}
return times;
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#статьи
😘 Лучший способ использовать методы запросов Spring Data
Читать подробнее
👉 Новости 👉 База вопросов
Читать подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😘 Зачем использовать `
- Включение или отключение бинов и конфигураций на основе значений в
- Загрузка разных бинов для разных сред с помощью конфигурационных параметров
- Исключение лишних бинов снижает потребление памяти и упрощает логику
🟠 Включить бин, если свойство существует:
Используется аннотация
Бин будет создан, если свойство my.prop существует и его значение не "false".
🟠 Включить бин, если свойство равно определённому значению:
Добавляется параметр
Бин будет создан только в том случае, если значение свойства строго равно "yes".
🟠 Включить бин, если свойство отсутствует:
Используется параметр
Бин будет создан даже в случае, если соответствующее свойство вообще не определено в конфигурации.
🟠 Переключение реализаций в зависимости от значения свойства:
Определяются несколько бинов с разными значениями
Будет создан только тот бин, значение которого соответствует текущему значению свойства.
👉 Новости 👉 База вопросов
@ConditionalOnProperty
`?- Включение или отключение бинов и конфигураций на основе значений в
application.properties
без изменения кода - Загрузка разных бинов для разных сред с помощью конфигурационных параметров
- Исключение лишних бинов снижает потребление памяти и упрощает логику
Используется аннотация
@ConditionalOnProperty(name="my.prop")
.Бин будет создан, если свойство my.prop существует и его значение не "false".
Добавляется параметр
havingValue="yes"
.Бин будет создан только в том случае, если значение свойства строго равно "yes".
Используется параметр
matchIfMissing=true
.Бин будет создан даже в случае, если соответствующее свойство вообще не определено в конфигурации.
Определяются несколько бинов с разными значениями
havingValue
.Будет создан только тот бин, значение которого соответствует текущему значению свойства.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Spring
🤔 Какой жизненный цикл Spring Beans?
Жизненный цикл Spring Bean состоит из этапов создания, настройки зависимостей, инициализации, использования и уничтожения. Контейнер автоматически выполняет все эти шаги, вызывая методы, такие как
👉 Новости 👉 База вопросов
Жизненный цикл Spring Bean состоит из этапов создания, настройки зависимостей, инициализации, использования и уничтожения. Контейнер автоматически выполняет все эти шаги, вызывая методы, такие как
@PostConstruct
для настройки перед использованием и @PreDestroy
для завершения работы. Пользователи могут настраивать этапы жизненного цикла через интерфейсы или аннотации.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😐 Проект на Spring Boot + Spring AI + OpenAI.
Он принимает текст или файл с заметками встречи и автоматически генерирует JSON-тикеты с классификацией (баг, фича и т.д.).
Теперь в open source: чистый код и готовность к импорту в JIRA.
GitHub: https://github.com/ayushstwt/smart-ticket-ai.git
👉 Новости 👉 База вопросов
Он принимает текст или файл с заметками встречи и автоматически генерирует JSON-тикеты с классификацией (баг, фича и т.д.).
Теперь в open source: чистый код и готовность к импорту в JIRA.
GitHub: https://github.com/ayushstwt/smart-ticket-ai.git
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
🥱 Лучший способ использовать аннотацию Spring Transactional
Читать подробнее
👉 Новости 👉 База вопросов
Читать подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Собес #Spring
🤔 Что такое Bean?
Bean в Spring - это обьект, который управляется контейнером Spring loC (Inversion of Control). Бины обычно создаются, настраиваются и используются для инкапсуляции бизнес-логики, управления данными или предоставления сервисов. Контейнер Spring автоматически управляет жизненным циклом бина, его зависимостями и настройками.
👉 Новости 👉 База вопросов
Bean в Spring - это обьект, который управляется контейнером Spring loC (Inversion of Control). Бины обычно создаются, настраиваются и используются для инкапсуляции бизнес-логики, управления данными или предоставления сервисов. Контейнер Spring автоматически управляет жизненным циклом бина, его зависимостями и настройками.
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Принципы SOLID на примерах из жизни и разработки
В статье автор объясняет принципы SOLID через примеры из реальной жизни и кода, показывая, как их применение улучшает качество и структуру программ.
Рассматриваются способы построения гибких и поддерживаемых приложений на Java, с акцентом на каждый из пяти принципов.
Читать статью
👉 Новости 👉 База вопросов
В статье автор объясняет принципы SOLID через примеры из реальной жизни и кода, показывая, как их применение улучшает качество и структуру программ.
Рассматриваются способы построения гибких и поддерживаемых приложений на Java, с акцентом на каждый из пяти принципов.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 MemorySegment.
allocateNative()
Документация
👉 Новости 👉 База вопросов
allocateNative()
MemorySegment.allocateNative()
из Java Foreign Function & Memory API (FFM API, начиная с Java 19) позволяет безопасно управлять нативной памятью без Unsafe
. Это полезно для высокопроизводительных приложений, работающих с C-библиотеками.Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Spring
🤔 Какие Spring Scope знаешь?
Основные области видимости Spring: Singleton, Prototype, Request, Session, Application, WebSocket.
👉 Новости 👉 База вопросов
Основные области видимости Spring: Singleton, Prototype, Request, Session, Application, WebSocket.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥱 webmagic — масштабируемый фреймворк веб-краулера для Java
webmagic охватывает весь жизненный цикл краулера: загрузку, управление url, извлечение контента и его сохранение.
GitHub
Доки
👉 Новости 👉 База вопросов
webmagic охватывает весь жизненный цикл краулера: загрузку, управление url, извлечение контента и его сохранение.
GitHub
Доки
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🥄 Spring Boot + Swagger
Документирование API без лишней головной боли.
Полное руководство читай здесь: тык
👉 Новости 👉 База вопросов
Документирование API без лишней головной боли.
Полное руководство читай здесь: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
#полезное
🛞 Кто не в курсе: Spring Debugger — это инструмент в IntelliJ IDEA, который помогает разбираться в контексте Spring Boot-приложения.
Прямо в проекте можно:
🟠 посмотреть список загруженных и неактивных бинов,
🟠 проверить значения конфигурационных свойств,
🟠 увидеть детали подключения к базе.
Удобно для дебага, особенно когда неясно, почему бин не поднялся или почему конфигурация работает не так, как ожидалось.
👉 Новости 👉 База вопросов
Прямо в проекте можно:
Удобно для дебага, особенно когда неясно, почему бин не поднялся или почему конфигурация работает не так, как ожидалось.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #kubernetes
🤔 Что такое service mesh в Kubernetes?
Service mesh - это инфраструктурный слой, который управляет сетевым взаимодействием сервисов в Kubernetes. Он добавляет такие функции, как маршрутизация трафика, балансировка нагрузки, безопасность и мониторинг, без необходимости изменения кода приложения.
👉 Новости 👉 База вопросов
Service mesh - это инфраструктурный слой, который управляет сетевым взаимодействием сервисов в Kubernetes. Он добавляет такие функции, как маршрутизация трафика, балансировка нагрузки, безопасность и мониторинг, без необходимости изменения кода приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Совет дня:
Проверка (
- Первый блок проверяет, что по
- Второй блок проверяет, что по
👉 Новости 👉 База вопросов
Проверка (
assert
) одиночного объекта против List<Object>
в ответах при использовании MockMvcTester
в Spring.- Первый блок проверяет, что по
/api/posts/1
возвращается Post, у которого title
равен "Post title here"
- Второй блок проверяет, что по
/api/posts
приходит список из 4 элементов типа Post
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1