Forwarded from Java Guru 🤓
Что будет результатом кода?
Anonymous Quiz
7%
Ошибка компиляции
1%
null
45%
Hello
4%
World
43%
Hello World
😁21👍10🔥4💯4
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤5🔥4
Что такое MVP?
MVP (Minimum Viable Product) — этоминимально жизнеспособный продукт, представляющий собой начальную версию продукта, которая включает только ключевые функции, необходимые для проверки гипотезы или удовлетворения базовых потребностей пользователей.
Ключевые аспекты MVP:
— MVP содержит толькоте функции, которые являются критически важными для решения основной проблемы пользователя. Остальные функции откладываются на более поздние этапы.
— MVP создаётся для тестированиярыночного спроса или реакции пользователей на продукт с минимальными затратами времени и ресурсов.
— После выпуска MVP собираютсяотзывы от пользователей, чтобы понять, в правильном ли направлении развивается продукт, и внести изменения.
Важно: MVP — это не просто "сырой" продукт, он должен решать основную задачу, при этом быть полезным и функциональным.
✅ Java библиотека #java
MVP (Minimum Viable Product) — это
Ключевые аспекты MVP:
— MVP содержит только
— MVP создаётся для тестирования
— После выпуска MVP собираются
Важно: MVP — это не просто "сырой" продукт, он должен решать основную задачу, при этом быть полезным и функциональным.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27❤12🔥6
This media is not supported in your browser
VIEW IN TELEGRAM
Изучаешь Java - создай проект. Перезагрузка.
Выпуск 1. Запускаем проект. Список программ.
Вступительное слово и список ПО, которое будет использоваться.
🌐 🗣 СМОТРЕТЬ VKVIDEO
✅ Java библиотека #java
Выпуск 1. Запускаем проект. Список программ.
Вступительное слово и список ПО, которое будет использоваться.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤3🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤8🔥4
Как работает ConcurrentSkipListSet под капотом?
ConcurrentSkipListSet — это потокобезопасная и отсортированная реализация интерфейса NavigableSet. Она построена на основе ConcurrentSkipListMap, что позволяет ей быть не только упорядоченной, но и эффективной для параллельного доступа. В основе её работы лежит структура данных skip list (список с пропусками).
Skip list — это многослойная структура данных, состоящая из нескольких уровней связных списков. На нижнем уровне содержатся все элементы в отсортированном порядке, а верхние уровни хранят лишь часть элементов для ускорения операций поиска. Благодаря этому достигается логарифмическая сложность операций add, remove и contains — O(log n).
Пример структуры:
💡 Основные механизмы:
🟢 Skip List: Многослойная структура, где верхние уровни позволяют быстро "перепрыгивать" через диапазоны элементов. Это минимизирует количество переходов по связным спискам.
🟢 Под капотом ConcurrentSkipListSet использует ConcurrentSkipListMap, где ключи — это элементы множества, а значения — фиктивные объекты.
🟢 Потокобезопасность достигается благодаря минимальному блокированию и использованию атомарных операций (CAS — Compare-And-Swap).
🟢 Элементы всегда упорядочены в соответствии с их натуральным порядком или компаратором, переданным в конструктор.
⚠️ Особенности:
🟡 Эффективен для операций чтения (contains, iterators), так как они выполняются без блокировок.
🟡 Операции модификации (add, remove) потокобезопасны, но слегка дороже из-за использования CAS.
🟡 Поддерживает сортировку элементов в натуральном порядке или порядке, определённом компаратором.
🟡 Высокая производительность для сценариев с преобладанием чтений и умеренным количеством обновлений.
🚀 Когда использовать ConcurrentSkipListSet?
- Если нужен потокобезопасный доступ к отсортированному множеству.
- При необходимости частого чтения упорядоченных данных (например, для диапазонов).
- Для сценариев с конкурентным доступом, где важна производительность операций чтения.
🔗 Документация
✅ Java библиотека #java
ConcurrentSkipListSet — это потокобезопасная и отсортированная реализация интерфейса NavigableSet. Она построена на основе ConcurrentSkipListMap, что позволяет ей быть не только упорядоченной, но и эффективной для параллельного доступа. В основе её работы лежит структура данных skip list (список с пропусками).
Skip list — это многослойная структура данных, состоящая из нескольких уровней связных списков. На нижнем уровне содержатся все элементы в отсортированном порядке, а верхние уровни хранят лишь часть элементов для ускорения операций поиска. Благодаря этому достигается логарифмическая сложность операций add, remove и contains — O(log n).
Пример структуры:
lvl 3: A ------- H
lvl 2: A --- D -- H
lvl 1: A - B - D - F - H - J
🚀 Когда использовать ConcurrentSkipListSet?
- Если нужен потокобезопасный доступ к отсортированному множеству.
- При необходимости частого чтения упорядоченных данных (например, для диапазонов).
- Для сценариев с конкурентным доступом, где важна производительность операций чтения.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍4❤2
Ускорение Spring REST API на 200%
Spring Framework уже многие годы является базой, на которой разрабатывается подавляющее большинство серверных приложений на Java. Он предоставляет абстракции над множеством различных технологий, в том числе и абстракции для разработки REST API. Все эти абстракции имеют свою цену в плане производительности, и иногда эта цена является очень большой, если речь идёт о высоконагруженном приложении. В этой небольшой статье я покажу, как можно избавиться от ненужных накладных расходов и значительно увеличить производительность вашего API.
Читать статью
Spring Framework уже многие годы является базой, на которой разрабатывается подавляющее большинство серверных приложений на Java. Он предоставляет абстракции над множеством различных технологий, в том числе и абстракции для разработки REST API. Все эти абстракции имеют свою цену в плане производительности, и иногда эта цена является очень большой, если речь идёт о высоконагруженном приложении. В этой небольшой статье я покажу, как можно избавиться от ненужных накладных расходов и значительно увеличить производительность вашего API.
Читать статью
VK
Ускорение Spring REST API на 200%
Spring Framework уже многие годы является базой, на которой разрабатывается подавляющее большинство серверных приложений на Java. Он пред..
👍22🔥4❤2
Spring Boot + React Admin: CRUD FullStack приложение за 10 минут вместе с Amplicode
🌐 🗣 СМОТРЕТЬ VKVIDEO
📺 🗣 СМОТРЕТЬ RUTUBE
📝 🗣 СМОТРЕТЬ DZEN
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5🔥3⚡1🎉1
JMH — это фреймворк от команды разработчиков JVM (Oracle), который помогает создавать и запускать микробенчмарки для измерения производительности Java-кода. Если вы хотите точно понять, насколько быстро работает ваш код (например, сравнить эффективность разных алгоритмов или подходов), JMH — ваш незаменимый помощник.
— Точные измерения:
JMH учитывает влияние JIT-компиляции, прогрева JVM и других факторов, которые могут искажать результаты.
— Простота использования:
Написание бенчмарков интуитивно, и вы сразу видите, что влияет на производительность.
— Гибкость настройки:
Вы можете задавать параметры для тестов, такие как число итераций, потоков, warm-up период и другие.
— Добавьте зависимость JMH в ваш проект:
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-core</artifactId>
<version>1.38</version>
</dependency>
<dependency>
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
<version>1.38</version>
</dependency>
или
implementation 'org.openjdk.jmh:jmh-core:1.38'
annotationProcessor 'org.openjdk.jmh:jmh-generator-annprocess:1.38'
— Создайте бенчмарк-класс:
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@State(Scope.Thread)
public class MyBenchmark {
@Benchmark
public int testMethod() {
return calculate(1000);
}
private int calculate(int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += i;
}
return sum;
}
}
— Запустите тесты:
Используйте mvn package или gradle build, чтобы собрать проект, и запустите JMH-тесты.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤3🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍8🔥5
— NLB (Network Load Balancer) – распределяет трафик на уровне IP. Он работает на более низком уровне и не анализирует HTTP-запросы.
— ALB (Application Load Balancer) – маршрутизирует запросы на основе HTTP-заголовков или URL. ALB предлагает более сложные правила маршрутизации. Выбор между NLB и ALB зависит от ваших потребностей. Для простых сервисов в небольших масштабах одного балансировщика нагрузки может быть достаточно.
— API Gateway – работает на уровне приложений и берет на себя задачи, такие как аутентификация, ограничение скорости запросов, кэширование и другие. Его функции отличаются от Load Balancer.
Схема иллюстрирует детали работы этих компонентов. Чаще всего Load Balancer и API Gateway используются вместе, чтобы создать масштабируемую и безопасную архитектуру для современных веб-приложений.
— Опция A: ALB + сервисы
ALB распределяет запросы между различными сервисами. Ограничение запросов, аутентификация и другие функции реализуются на уровне сервисов. Это более гибкий подход, но требует больше работы при разработке.
— Опция B: API Gateway + сервисы
API Gateway берет на себя функции аутентификации, ограничения запросов, кэширования и других задач. Это упрощает разработку сервисов, но уменьшает гибкость по сравнению с первым вариантом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤9🔥4
Spring Boot + React Admin: CRUD — это только начало! Улучшаем админку вместе с Amplicode
🌐 🗣 СМОТРЕТЬ VKVIDEO
📺 🗣 СМОТРЕТЬ RUTUBE
📝 🗣 СМОТРЕТЬ DZEN
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍6🔥5
Forwarded from Java Guru 🤓
Какая настройка при создании связи Customer-Order приведет к неправильному поведению при сохранении нескольких Order, связанных с одним Customer?
👍6🔥3
Forwarded from Java Guru 🤓
Какая настройка при создании связи Customer-Order приведет к неправильному поведению при сохранении нескольких Order, связанных с одним Customer?
Anonymous Quiz
21%
CascadeType.ALL
15%
fetch = FetchType.EAGER
10%
optional = false
45%
unique = true
10%
referencedColumnName
👍7🔥4
Паттерн Интерпретатор (Interpreter)
Interpreter — это поведенческий паттерн, который предоставляет способ вычисления выражений, заданных на каком-либо языке. Он определяет грамматику языка, а также интерпретатор, который использует эту грамматику для выполнения выражений.
Когда использовать
🟢 Для интерпретации выражений на языке, когда есть грамматика для их описания.
🟢 Для создания простых языков с ограниченным синтаксисом, таких как математические выражения, поисковые запросы или фильтры.
🟢 Для упрощения расширения и модификации языка или грамматики, особенно, если эти изменения требуются часто.
Преимущества
1️⃣ Упрощает добавление новых правил грамматики или изменение существующих.
2️⃣ Структурирует описание языка, разделяя грамматику и логику выполнения.
3️⃣ Подходит для различных задач, связанных с анализом и интерпретацией.
Недостатки
1️⃣ Становится громоздким при работе со сложными языками с большим количеством правил.
2️⃣ Показывает низкую производительность при построении деревьев выражений и их интерпретации для больших объемов данных.
3️⃣ Сложен в поддержке, если язык активно развивается и усложняется.
Interpreter хорошо подходит для создания простых языков, например, DSL (domain-specific language), и позволяет реализовать мощные возможности анализа и исполнения выражений.
Однако для более сложных языков лучше использовать специализированные инструменты вроде ANTLR или парсеров.
✅ Java библиотека #java
Interpreter — это поведенческий паттерн, который предоставляет способ вычисления выражений, заданных на каком-либо языке. Он определяет грамматику языка, а также интерпретатор, который использует эту грамматику для выполнения выражений.
Когда использовать
Преимущества
Недостатки
Interpreter хорошо подходит для создания простых языков, например, DSL (domain-specific language), и позволяет реализовать мощные возможности анализа и исполнения выражений.
Однако для более сложных языков лучше использовать специализированные инструменты вроде ANTLR или парсеров.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤6🔥5
Наш чатик с вакансиями и резюме, присоединяйся: https://news.1rj.ru/str/job_java
Telegram
Java Job - Вакансии и резюме
Наш канал по Java @javalib
Вакансии Java, также можете скидывать свои резюме!
Купить звёзды: @PremiumBot
Вакансии Java, также можете скидывать свои резюме!
Купить звёзды: @PremiumBot
👍5❤3🔥3
Spring и Spring Boot. Разработка облачных приложений на Java (2025) PDF
В книге рассмотрено актуальное состояние технологий Spring и Spring Boot, помогающих шире раскрыть возможности языка Java и аспектно-ориентированного программирования. Пошагово объяснено, как самостоятельно написать и развернуть облачный проект под управлением Spring. Рассказано о координации микросервисов на Java с применением Spring и модуля Spring Core способах внедрения зависимостей, аннотировании кода. На примере сквозного веб-приложения описаны важнейшие приемы работы с данными в стиле REST, тестирование данных, обеспечение согласованности, безопасности и долговременного хранения данных в приложении.
Для Java-программистов.
В книге рассмотрено актуальное состояние технологий Spring и Spring Boot, помогающих шире раскрыть возможности языка Java и аспектно-ориентированного программирования. Пошагово объяснено, как самостоятельно написать и развернуть облачный проект под управлением Spring. Рассказано о координации микросервисов на Java с применением Spring и модуля Spring Core способах внедрения зависимостей, аннотировании кода. На примере сквозного веб-приложения описаны важнейшие приемы работы с данными в стиле REST, тестирование данных, обеспечение согласованности, безопасности и долговременного хранения данных в приложении.
Для Java-программистов.
👍21🔥8❤3