🚀 Советы по Spring 🚀
Асинхронная обработка с помощью
Изучите использование
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/context/request/async/DeferredResult.html
#SpringTip
@javatg
Асинхронная обработка с помощью
DeferredResult
Изучите использование
DeferredResult
и CompletionStage
для более тонкого контроля над асинхронной обработкой. 🔥https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/context/request/async/DeferredResult.html
#SpringTip
#Java @javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Советы по Java API 🚀
Синхронизация в Java - ReentrantLock
Усовершенствуйте синхронизацию потоков с помощью ReentrantLock в Java.
Для достижения более тонкого контроля и продвинутых механизмов блокировки.
Объект класса ReentrantLock решает те же задачи, что и блок synchronized. Поток висит на вызове метода lock() в ожидании своей очереди занять этот объект. Владеть локом, как и находиться внутри блока synchronized может только один поток одновременно. unlock(), подобно выходу из блока синхронизации, освобождает объект-монитор для других потоков.
В отличие от блока синхронизации, ReentrantLock дает расширенный интерфейс для получения информации о состоянии блокировки. Методы лока позволяют еще до блокировки узнать, занят ли он сейчас, сколько потоков ждут его в очереди, сколько раз подряд текущий поток завладел им.
Шире и возможные режимы блокировки. Кроме обычного ожидающего lock(), вариант tryLock() с параметром ожидает своей очереди только заданное время, а без параметра – вообще не ждет, а только захватывает свободный лок.
Еще одно отличие – свойство fair. Лок с этим свойством обеспечивает «справедливость» очереди: пришедший раньше поток захватывает объект раньше. Блок synchronized не дает никаких гарантий порядка.
📎 Документация
@javatg
Синхронизация в Java - ReentrantLock
Усовершенствуйте синхронизацию потоков с помощью ReentrantLock в Java.
Для достижения более тонкого контроля и продвинутых механизмов блокировки.
Объект класса ReentrantLock решает те же задачи, что и блок synchronized. Поток висит на вызове метода lock() в ожидании своей очереди занять этот объект. Владеть локом, как и находиться внутри блока synchronized может только один поток одновременно. unlock(), подобно выходу из блока синхронизации, освобождает объект-монитор для других потоков.
В отличие от блока синхронизации, ReentrantLock дает расширенный интерфейс для получения информации о состоянии блокировки. Методы лока позволяют еще до блокировки узнать, занят ли он сейчас, сколько потоков ждут его в очереди, сколько раз подряд текущий поток завладел им.
Шире и возможные режимы блокировки. Кроме обычного ожидающего lock(), вариант tryLock() с параметром ожидает своей очереди только заданное время, а без параметра – вообще не ждет, а только захватывает свободный лок.
Еще одно отличие – свойство fair. Лок с этим свойством обеспечивает «справедливость» очереди: пришедший раньше поток захватывает объект раньше. Блок synchronized не дает никаких гарантий порядка.
📎 Документация
@javatg
🚀 Лучшие практики Spring Boot Docker
https://mydeveloperplanet.com/2022/12/14/spring-boot-docker-best-practices/
@javatg
https://mydeveloperplanet.com/2022/12/14/spring-boot-docker-best-practices/
@javatg
⚡️ Алгоритмы
1. Алгоритмы: пузырьковая сортировка на Java
2. Алгоритмы: проверка вложенных скобок на Java
3. Алгоритмы: поиск простых чисел на Java
4. Алгоритмы: бинарный поиск на отсортированном массиве (реализация на Java)
5. Алгоритмы: поиск простых чисел с помощью "решета Эратосфена"
6. Алгоритмы: проверка слов и предложений на палиндром
7. Алгоритм определения анаграмм
8. Алгоритм инвертирования массива на Java
9. Разбор и вычисление арифметических выражений на Java
#video #algorithm #java
https://www.youtube.com/watch?v=P17lCwXm7KE&list=PL95YVJ6LZEP2GHxoZJ6gdbD8JAHw6mABY
@javatg
1. Алгоритмы: пузырьковая сортировка на Java
2. Алгоритмы: проверка вложенных скобок на Java
3. Алгоритмы: поиск простых чисел на Java
4. Алгоритмы: бинарный поиск на отсортированном массиве (реализация на Java)
5. Алгоритмы: поиск простых чисел с помощью "решета Эратосфена"
6. Алгоритмы: проверка слов и предложений на палиндром
7. Алгоритм определения анаграмм
8. Алгоритм инвертирования массива на Java
9. Разбор и вычисление арифметических выражений на Java
#video #algorithm #java
https://www.youtube.com/watch?v=P17lCwXm7KE&list=PL95YVJ6LZEP2GHxoZJ6gdbD8JAHw6mABY
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Часть 1: Реализация API Get Collection
Часть 2: Реализация API Create и Update
Часть 3: Реалищация FindById и DeleteById API
Часть 4: Обработка исключений в REST API
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
📢 Только что вышел WireMock Spring Boot 2.1.0!
WireMock Spring Boot значительно упрощает тестирование HTTP-клиентов в интеграционных тестах на основе Spring Boot и Junit 5.
https://github.com/maciejwalkowiak/wiremock-spring-boot
@javatg
WireMock Spring Boot значительно упрощает тестирование HTTP-клиентов в интеграционных тестах на основе Spring Boot и Junit 5.
https://github.com/maciejwalkowiak/wiremock-spring-boot
@javatg
Задействуйте все свои (виртуальные) потоки, обратитесь к SIMD, оптимизируйте GC или используйте любой другой трюк, и создайте самую быструю реализацию для решения этой задачи!
📌 Реализация на .NET
▪ Github
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Порты Docker: что вы на самом деле открываете?
Запуск всего приложения, его окружения и всех его зависимостей по одной команде — разве это не мечта?
Для тех, кто знает, как работает Docker, это невероятный инструмент для безопасного развертывания приложений.
Однако для начинающих в нем таится ужасающий риск — обойти по неведению все настройки брандмауэра и выложить контейнеры в открытый доступ в интернет. Недавно я читал документацию Docker по работе в сетях, и огромное оранжевое предупреждение напомнило мне о том, что застало меня врасплох, когда я только начинал работать с Docker.
Хотя данная статья посвящена проблеме безопасной работы в Docker, моя основная претензия не связана только с Docker.
Есть веские причины, по которым Docker работает именно так, как работает. Он очень неплохо документирован. На странице, посвященной сетевым технологиям, вы увидите строгое предупреждение, а, опустившись немного ниже по странице, найдете следующий абзац, в котором прямо говорится о взаимодействии Docker и брандмауэров:
📌 Читать
@javatg
Запуск всего приложения, его окружения и всех его зависимостей по одной команде — разве это не мечта?
Для тех, кто знает, как работает Docker, это невероятный инструмент для безопасного развертывания приложений.
Однако для начинающих в нем таится ужасающий риск — обойти по неведению все настройки брандмауэра и выложить контейнеры в открытый доступ в интернет. Недавно я читал документацию Docker по работе в сетях, и огромное оранжевое предупреждение напомнило мне о том, что застало меня врасплох, когда я только начинал работать с Docker.
Хотя данная статья посвящена проблеме безопасной работы в Docker, моя основная претензия не связана только с Docker.
Есть веские причины, по которым Docker работает именно так, как работает. Он очень неплохо документирован. На странице, посвященной сетевым технологиям, вы увидите строгое предупреждение, а, опустившись немного ниже по странице, найдете следующий абзац, в котором прямо говорится о взаимодействии Docker и брандмауэров:
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Git Совет 💡
Не используйте редактор кода для переименования имен файлов кода.⛔️
Используйте команду '
Переименование файла в редакторе кода приводит к двум отдельным действиям
- удаление старого файла и
- добавление нового)
Команда '
Использование '
Синтаксис:
Не используйте редактор кода для переименования имен файлов кода.⛔️
Используйте команду '
git mv
' для переименования файла.✅Переименование файла в редакторе кода приводит к двум отдельным действиям
- удаление старого файла и
- добавление нового)
Команда '
git mv
' выполняет переименование за один шаг. Это приводит к более чистой и информативной истории коммитов.Использование '
git mv
' помогает Git'у распознать, что файл был переименован, сохраняя его историю во всех коммитах. Синтаксис:
git mv <старое имя файла> <новое имя файла>
⚡️У команды @springframework сегодня день релизов! Spring Framework 6.1.3 и 6.0.16 доступны уже сейчас.
https://spring.io/blog/2024/01/11/spring-framework-6-1-3-and-6-0-16-available-now/
@javatg
https://spring.io/blog/2024/01/11/spring-framework-6-1-3-and-6-0-16-available-now/
@javatg
Spring Framework 6.1.3 and 6.0.16 available now
Level up your Java code and explore what Spring can do for you.
🚀 Улучшите свое приложение #SpringBoot с помощью сжатия контента! 🚀
Уменьшите размер передаваемых по сети данных. Просто добавьте несколько строк в свой конфиг 🔥
#WebDevelopment #Java #Optimization
@javatg
Уменьшите размер передаваемых по сети данных. Просто добавьте несколько строк в свой конфиг 🔥
#WebDevelopment #Java #Optimization
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Несмотря на наличие в Java надежной автоматической сборки мусора, утечки памяти в этом языке остаются сложной проблемой для разработчиков.
Такие утечки происходят, когда объекты больше не нужны приложению, но на них по-прежнему ссылаются другие объекты, что не позволяет сборщику мусора освободить занимаемую ими память.
Со временем это может привести к значительному снижению производительности приложения и даже к его аварийному завершению из-за исключения OutOfMemoryError. Цель данной статьи — разобраться в тонкостях утечек памяти в Java, изучить методы их обнаружения и стратегии предотвращения.
▪Читать
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Полезный инструмент для быстрого и эфективного реверс инжениринга Kotlin кода в Java байткод, Android DEX и OAT.
▪Github
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Android – https://github.com/android/nowinandroid
Slack – https://github.com/oianmol/SlackAndroidClone
Чистая архитектура – https://github.com/Farhandroid/AndroidCleanArchitecture
McCompose – https://github.com/hitanshu-dhawan/McCompose
JetQuotes – https://github.com/Spikeysanju/JetQuotes
Rebound – https://github.com/AnkitSuda/Rebound
Образец совы – https://github.com/android/compose-samples/tree/main/Owl
2048 – https://github.com/alexjlockwood/android-2048-compose
Alkaa 2.0 – https://github.com/igorescodro/alkaa
Delish – https://github.com/Elbehiry/Delish
Jettimer – https://github.com/ericktijerou/jettimer
NotyKT – https://github.com/PatilShreyas/NotyKT
Wiggles – https://github.com/Spikeysanju/Wiggles
WhatsApp – https://github.com/MindorksOpenSource/Jetpack-Compose-WhatsApp-Clone
Анимация – https://github.com/canopas/compose-animations-examples
Jetflix – https://github.com/MindorksOpenSource/Jetpack-Compose-WhatsApp-Clone
Jetpack Compose на примерах – https://github.com/vinaygaba/Learn-Jetpack-Compose-By-Example
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Apache Camel - это интеграционный фреймворк с открытым исходным кодом, который предоставляет инструменты и API для соединения различных систем.
С помощью Apache Camel разработчики могут создавать масштабируемые и надежные интеграционные решения, используя различные шаблоны, протоколы и форматы обмена сообщениями. #apachecamel #springboot #java
https://blackslate.io/articles/spring-boot-and-apache-camel-integration
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет по Java ☕️
В Java 22 появился новый форматированный тип `
ListFormat — это новый форматтер, который позволяет форматировать список строк символов в соответствии с локалью в соответствии со стандартом Unicode.
Пример :
Он создает или разбирает список конкатенированных строк.
Предусмотрено 3 типа конкатенации:
#java22
@javatg
В Java 22 появился новый форматированный тип `
ListFormat
`. ListFormat — это новый форматтер, который позволяет форматировать список строк символов в соответствии с локалью в соответствии со стандартом Unicode.
Пример :
var list = List.of("Black", "White", "Red");
var formatter = ListFormat.getInstance();
System.out.println(list);
// [Black, White, Red]
Он создает или разбирает список конкатенированных строк.
Предусмотрено 3 типа конкатенации:
STANDARD, OR, и UNIT,
и 3 стиля для каждого типа: FULL, SHORT и NARROW.
#java22
@javatg