#Собес #Spring
🤔 Что лежит в основе Spring?
Spring построен на принципах инверсии управления (IC) и внедрения зависимостей (DI). оС означает, что создание и управление объектами берёт на себя контейнер Spring, a DI позволяет автоматически предоставлять объектам их зависимости. Эти принципы делают код более модульным, гибким и удобным для тестирования.
👉 Новости 👉 База вопросов
Spring построен на принципах инверсии управления (IC) и внедрения зависимостей (DI). оС означает, что создание и управление объектами берёт на себя контейнер Spring, a DI позволяет автоматически предоставлять объектам их зависимости. Эти принципы делают код более модульным, гибким и удобным для тестирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
#ЛитКод
Задача: 634. Find the Derangement of An Array
В комбинаторной математике отклонение - это перестановка элементов множества таким образом, что ни один элемент не оказывается на прежнем месте. Вам дано целое число n. Изначально имеется массив, состоящий из n целых чисел от 1 до n в порядке возрастания, верните количество отклонений, которые он может породить. Поскольку ответ может быть огромным, верните его по модулю 109 + 7.
Пример:
👨💻 Алгоритм:
1⃣ Инициализация массива для хранения результатов: Создайте массив dp для хранения количества отклонений для каждого значения от 0 до n. Установите начальные значения: dp[0] = 1 и dp[1] = 0.
2⃣ Вычисление количества отклонений: Используйте динамическое программирование для вычисления количества отклонений для каждого значения от 2 до n. Формула для вычисления: dp[i] = (i - 1) * (dp[i - 1] + dp[i - 2]) % MOD.
3⃣ Возвращение результата: Верните значение dp[n], которое будет количеством отклонений для n элементов, по модулю 10^9 + 7.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 634. Find the Derangement of An Array
В комбинаторной математике отклонение - это перестановка элементов множества таким образом, что ни один элемент не оказывается на прежнем месте. Вам дано целое число n. Изначально имеется массив, состоящий из n целых чисел от 1 до n в порядке возрастания, верните количество отклонений, которые он может породить. Поскольку ответ может быть огромным, верните его по модулю 109 + 7.
Пример:
Input: n = 3
Output: 2
public class Solution {
public int countDerangements(int n) {
final int MOD = 1000000007;
if (n == 0) return 1;
if (n == 1) return 0;
int[] dp = new int[n + 1];
dp[0] = 1;
dp[1] = 0;
for (int i = 2; i <= n; i++) {
dp[i] = (int)((long)(i - 1) * (dp[i - 1] + dp[i - 2]) % MOD);
}
return dp[n];
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
LeetCode
Find the Derangement of An Array - LeetCode
Can you solve this real interview question? Find the Derangement of An Array - Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
#полезное
👍 String.stripIndent()
Документация
👉 Новости 👉 База вопросов
String.stripIndent()
удаляет общие начальные пробелы во всех строках многострочного текста, делая его более читаемым и удобным для форматирования. Это полезно при работе с блоками текста в коде.Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👋 Базовые приёмы экономии памяти в Java
1⃣ Ленивая инициализация "тяжёлых" полей
🟠 Используйте lazy initialization, чтобы откладывать создание объекта до момента, когда он действительно понадобится.
2⃣ Избегайте анонимных внутренних классов в циклах
🟠 Каждое такое использование создаёт объект внутреннего класса — это скрытая нагрузка на память.
3⃣ Используйте статические фабричные методы
🟠 Они позволяют экономить память за счёт повторного использования уже созданных экземпляров, вместо создания новых при каждом вызове.
4⃣ Применяйте метод intern()
🟠 Метод
Используя
5⃣ Используйте паттерн Flyweight для повторяющихся неизменяемых данных
🟠 Экономит память за счёт разделения общих экземпляров (используется, например, в
👉 Новости 👉 База вопросов
intern()
класса String возвращает каноническое представление строки.Используя
intern()
, можно гарантировать, что одна и та же строка будет представлена в памяти в виде единственного объекта, даже если она создаётся многократно.String s1 = "hello";
String s2 = "hello".intern();
Integer.valueOf()
, Boolean.TRUE
и т.п.).Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
#Собес #Spring
🤔 Что такое Spring Boot и в чём его основное преимущество?
Spring Boot - это инструмент для быстрого создания приложений на базе Spring Framework. Он предоставляет автоматические настройки, готовые стартеры для интеграции зависимостей и встроенные серверы приложений. Благодаря этому Spring Boot позволяет минимизировать конфигурацию и быстро разрабатывать приложения, особенно микросервисы.
👉 Новости 👉 База вопросов
Spring Boot - это инструмент для быстрого создания приложений на базе Spring Framework. Он предоставляет автоматические настройки, готовые стартеры для интеграции зависимостей и встроенные серверы приложений. Благодаря этому Spring Boot позволяет минимизировать конфигурацию и быстро разрабатывать приложения, особенно микросервисы.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😵💫 Пакетная обработка JDBC через StatelessSession в Hibernate
Статья объясняет, как использовать StatelessSession в Hibernate 6 для быстрой пакетной вставки, обновления и удаления данных с помощью JDBC Batching — без лишнего кеша и с высокой производительностью.
Читать подробнее
👉 Новости 👉 База вопросов
Статья объясняет, как использовать StatelessSession в Hibernate 6 для быстрой пакетной вставки, обновления и удаления данных с помощью JDBC Batching — без лишнего кеша и с высокой производительностью.
Читать подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😴 Советы по Java Stream API: Ленивое вычисление с использованием
Когда возникает необходимость повторно использовать потоковую обработку, можно воспользоваться
👉 Новости 👉 База вопросов
Supplier<Stream<T>>
Когда возникает необходимость повторно использовать потоковую обработку, можно воспользоваться
Supplier
. В обычных случаях поток (Stream) нельзя использовать повторно после его обработки.Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Spring
🤔 Разница между Spring и Spring Boot
Spring Framework — это универсальный фреймворк для создания приложений с гибкой конфигурацией. Spring Boot, в свою очередь, дополняет Spring, предоставляя автоматическую конфигурацию и встроенные серверы для быстрого создания приложений. Spring Boot подходит для быстрого старта проектов, минимизируя количество ручной конфигурации.
👉 Новости 👉 База вопросов
Spring Framework — это универсальный фреймворк для создания приложений с гибкой конфигурацией. Spring Boot, в свою очередь, дополняет Spring, предоставляя автоматическую конфигурацию и встроенные серверы для быстрого создания приложений. Spring Boot подходит для быстрого старта проектов, минимизируя количество ручной конфигурации.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😊 HashSet в Java
HashSet — это коллекция для хранения уникальных элементов без гарантии порядка. Относится к пакету java.util и реализует интерфейс Set, внутренне опираясь на HashMap.
Основные особенности Java HashSet:
🟠 Дубликаты игнорируются. Если добавить элемент, который уже есть в множестве — ничего не произойдёт.
🟠 Элементы не упорядочены ни по добавлению, ни по значению.
🟠 Допускается один null-элемент.
Производительность: Базовые операции
Часто используемые операции:
—
—
—
—
—
Как работает внутри
При выводе содержимого
👉 Новости 👉 База вопросов
HashSet — это коллекция для хранения уникальных элементов без гарантии порядка. Относится к пакету java.util и реализует интерфейс Set, внутренне опираясь на HashMap.
Основные особенности Java HashSet:
Производительность: Базовые операции
add, remove, contains
выполняются за константное время O(1), при условии качественной хеш-функции.Даже если дважды добавить строку "BMW" — в сете она появится только один раз.
Часто используемые операции:
—
add(E e)
— добавляет элемент, если его ещё нет—
remove(Object o)
— удаляет элемент, если он есть—
contains(Object o)
— проверяет наличие элемента—
size()
— возвращает количество элементов—
clear()
— очищает сетКак работает внутри
HashSet
использует внутренний HashMap
, где элементы сета хранятся как ключи, а значением выступает фиктивный объект. Это позволяет обеспечить уникальность и быстрый доступ.При выводе содержимого
HashSet
— элементы отображаются в произвольном порядке.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#полезное
😇 CompletableFuture.
delayedExecutor()
Документация
👉 Новости 👉 База вопросов
delayedExecutor()
CompletableFuture.delayedExecutor()
позволяет выполнить задачу с отложенным запуском без блокировки основного потока. Это удобный инструмент для асинхронных операций с задержкой.Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Spring
🤔 В чем разница между Dependency Injection и Inversion of Control?
loC — это общий принцип проектирования, согласно которому управление объектами и их зависимостями передается внешнему контейнеру или фреймворку. Dependency Injection - это конкретный способ реализации loC, при котором зависимости обьекта предоставляются ему извне, а не создаются внутри. ІС можно реализовать не только через DI, но и другими методами, например, через фабричный метод или событийное управление.
👉 Новости 👉 База вопросов
loC — это общий принцип проектирования, согласно которому управление объектами и их зависимостями передается внешнему контейнеру или фреймворку. Dependency Injection - это конкретный способ реализации loC, при котором зависимости обьекта предоставляются ему извне, а не создаются внутри. ІС можно реализовать не только через DI, но и другими методами, например, через фабричный метод или событийное управление.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
❤️🔥 Чувак сделал минималистичный лаунчер для Minecraft для личного использования.
Ссылки на скачивание и исходники (если интересно, как такой написать):
🟠 Скачать: https://github.com/sammwyy/MiniLaunch/releases
(Жми на ссылку с именем
🟠 Исходный код лаунчера на Java:
https://github.com/sammwyy/MiniLaunch
После скачивания просто дважды кликни по .jar, и всё готово
👉 Новости 👉 База вопросов
Теперь, когда кто-то из друзей спрашивает, какой лаунчер посоветуешь без вирусов — просто кидаю им свой :P
Ссылки на скачивание и исходники (если интересно, как такой написать):
(Жми на ссылку с именем
minilaunch.jar
)https://github.com/sammwyy/MiniLaunch
После скачивания просто дважды кликни по .jar, и всё готово
Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
👨💻 Перевод Spring Boot на HTTPS без ругани браузера
Данная статья рассчитана на тех, кто хочет сделать так, чтобы их Spring Boot приложение могло работать с HTTPS без предупреждений со стороны браузера о небезопасном подключении.
В этой статье разбирается именно работа со Spring Boot и вшитым в него Apache Tomcat.
Читать статью
👉 Новости 👉 База вопросов
Данная статья рассчитана на тех, кто хочет сделать так, чтобы их Spring Boot приложение могло работать с HTTPS без предупреждений со стороны браузера о небезопасном подключении.
В этой статье разбирается именно работа со Spring Boot и вшитым в него Apache Tomcat.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
📞 Реализация паттернов проектирования на Java
Паттерны проектирования — это готовые решения распространенных задач, с которыми разработчики сталкиваются при создании сложных систем.
Этот репозиторий содержит всё необходимое для того, чтобы научиться применять их на практике.
Что внутри:
Понимание паттернов помогает писать более гибкий и поддерживаемый код, а этот репозиторий — хороший инструмент для изучения и практики.
Ссылка на GitHub
👉 Новости 👉 База вопросов
Паттерны проектирования — это готовые решения распространенных задач, с которыми разработчики сталкиваются при создании сложных систем.
Этот репозиторий содержит всё необходимое для того, чтобы научиться применять их на практике.
Что внутри:
🟠 Реализация классических паттернов с чистым и понятным кодом🟠 Детальные объяснения принципов работы🟠 Блок-схемы, иллюстрирующие работу каждого паттерна
Понимание паттернов помогает писать более гибкий и поддерживаемый код, а этот репозиторий — хороший инструмент для изучения и практики.
Ссылка на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM