Что представляют собой HTTP-методы?
Вот наиболее часто используемые HTTP-методы.
1. GET: получает ресурс или данные с сервера.
2. POST: отправляет данные для обработки на сервер, что обычно приводит к созданию нового ресурса.
3. PUT: обновляет или заменяет существующий ресурс новыми данными.
4. DELETE: удаляет конкретный ресурс.
5. PATCH: частично обновляет существующий ресурс новыми данными.
6. HEAD: получает метаданные ресурса без извлечения его фактического содержимого.
7. OPTIONS: возвращает допустимые HTTP-методы и возможности сервера для данного ресурса.
Эти HTTP-методы обеспечивают различные способы взаимодействия с ресурсами на сервере, позволяя выполнять различные операции, такие как получение, создание, обновление и удаление данных.
Что такое идемпотентность? Назовите идемпотентные методы
В REST (Representational State Transfer, передача репрезентативного состояния) под идемпотентностью понимается свойство некоторых HTTP-методов, при котором повторные идентичные запросы имеют тот же эффект, что и один запрос. Другими словами, многократное выполнение идемпотентной операции приводит к тому же результату, что и однократное.
Идемпотентные методы в REST гарантируют, что даже при дублировании или повторении запроса из-за проблем в сети/поведения клиента, система останется в том же состоянии и не вызовет нежелательных побочных эффектов. Идемпотентные методы обеспечивают безопасность повторных запросов, не вызывая при этом несогласованности или неожиданного поведения.
В REST идемпотентными считаются следующие HTTP-методы.
▪️GET: многократное получение ресурса не изменяет состояние сервера.
▪️PUT: многократное обновление ресурса одними и теми же данными приводит к одному и тому же результату.
▪️DELETE: многократное удаление ресурса приводит к одному и тому же результату.
Проектирование идемпотентных методов в RESTful API помогает обеспечить надежность, согласованность и отказоустойчивость распределенных систем, позволяя добиться надежного и предсказуемого поведения.
Что такое @Async в Spring Boot?
📌Читать
📌Часть 1
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥4❤3
🚀 Расширенные советы по Spring 🚀
Протоколирование HTTP-запросов с помощью фильтра
Включите протоколирование запросов с помощью фильтра
Подробнее: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/CommonsRequestLoggingFilter.html
#SpringTip #Java
@javatg
Протоколирование HTTP-запросов с помощью фильтра
CommonsRequestLoggingFilter
Включите протоколирование запросов с помощью фильтра
CommonsRequestLoggingFilter
, чтобы получать подробную информацию о входящих запросах. 🔥Подробнее: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/CommonsRequestLoggingFilter.html
#SpringTip #Java
@javatg
👍15❤1🔥1
🔥Подборка лучших обучающих каналов для программистов.
➡️Делитесь с коллегами и Сохраняйте себе, чтобы не потерять
⚡Машинное обучение
Machine Learning - полезные статьи новости гайды и разбор кода
Ml Собеседование - подготовка к собеседовению мл, алгоритмам, кодингу
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат
🚀 Data Science
Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data
🏆 Golang
Golang - подробные гайды, разбор кода, лучшие практики, заметки
Golang собеседование
Golang вакансии
Golang книги
Golang задачи и тесты
Golang чат
Golang news - новости go
#️⃣C#
С# академия
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа
🐍 Python
Python/django
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги
☕ Java
Java академия
Java вакансии
Java чат
Java вопросы с собеседований
Java книги
💻 C++
C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии
💥 Хакинг Kali Linux
Kali linux
linux_kal - kali чат
Информационная безопасность
🐧 Linux
Linux academy
🦀 Rust
Rust программирование
Rust чат
🛢Базы данных
Sql базы данных
Библиотека баз данных
SQL чат
📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки
🖥 Javascript/React/PHP
Javascript академия
React программирование
PHP
Книги frontend
Задачи frontend
🇬🇧 Английский для программистов
🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence
🔥 DevOPs
Devops для программистов
Книги Devops
Docker
📓 Книги
Библиотеки Книг для программситов
💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
Папка Data Science
Папка Java разработчика
Папка C#
➡️Делитесь с коллегами и Сохраняйте себе, чтобы не потерять
⚡Машинное обучение
Machine Learning - полезные статьи новости гайды и разбор кода
Ml Собеседование - подготовка к собеседовению мл, алгоритмам, кодингу
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат
🚀 Data Science
Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data
🏆 Golang
Golang - подробные гайды, разбор кода, лучшие практики, заметки
Golang собеседование
Golang вакансии
Golang книги
Golang задачи и тесты
Golang чат
Golang news - новости go
#️⃣C#
С# академия
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа
🐍 Python
Python/django
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги
☕ Java
Java академия
Java вакансии
Java чат
Java вопросы с собеседований
Java книги
💻 C++
C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии
💥 Хакинг Kali Linux
Kali linux
linux_kal - kali чат
Информационная безопасность
🐧 Linux
Linux academy
🦀 Rust
Rust программирование
Rust чат
🛢Базы данных
Sql базы данных
Библиотека баз данных
SQL чат
📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки
🖥 Javascript/React/PHP
Javascript академия
React программирование
PHP
Книги frontend
Задачи frontend
🇬🇧 Английский для программистов
🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence
🔥 DevOPs
Devops для программистов
Книги Devops
Docker
📓 Книги
Библиотеки Книг для программситов
💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
Папка Data Science
Папка Java разработчика
Папка C#
👍10🔥3❤1👎1
@AssertTrue
. Вы помещаете его над методом, возвращающим булеву величину. Имя метода должно начинаться с
"is"
.#Java #Bean #Валидация
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥3❤1👎1
Conductor - это платформа, изначально созданная в Netflix для оркестровки микросервисов и событий, написанный на Java.
Conductor OSS поддерживается командой разработчиков в Orkes вместе с членами сообщества с открытым исходным кодом.
git remote set-url origin https://github.com/conductor-oss/conductor
▪Github
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥4❤1
🚀 Совет по API Java 🚀
В отличие от
https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/IdentityHashMap.html
@javatg
java.util.IdentityHashMap
В отличие от
HashMap
, этот класс использует равенство ссылок (==), а не равенство объектов (equals()) для определения уникальности ключей, что делает его подходящим для конкретных случаев использования. 🔥https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/util/IdentityHashMap.html
@javatg
👍18❤3🔥2
https://spring.io/blog/2023/12/21/spring-boot-3-2-1-available-now/
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤3🔥3
Сборка мусора (СМ) — это форма автоматического управления памятью. В языках, где отсутствует такая функция, программистам приходится вручную выделять и освобождать память.
Это может привести к различным проблемам, таким как утечка памяти, когда память выделяется, но не освобождается, или висячие указатели, когда память освобождается, но на нее продолжает вести ссылка.
Сборщик мусора в Java автоматизирует этот процесс, определяя и освобождая память, которая больше не используется, и тем самым обеспечивая ее эффективное использование.
📌 Читать
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤2🔥1
Условие: дается квадратная матрица, необходимо вычислить минимальную сумму вдоль столбца.
Есть условие на движение вдоль столбца есть ограничение: можно перемещаться на ячейку вниз лишь по диагонали или строго вниз.
Пример:
Ввод: matrix = [[2,1,3],[6,5,4],[7,8,9]]
Вывод: 13
Объяснение: *во вложении
Решение
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍2🔥1🥰1🤔1
🔥 Дайджест полезных материалов из мира Java за неделю
Почитать:
— Быстрый старт. SpringBoot + RabbitMQ
— Контейнеризация справочников НСИ
— Разносим по полочкам этапы тестирования http запросов в Spring
— Полный отчет Github за 2023 о состоянии проектов.
— 9 вопросов для собеседования по SQL в Apple
— Работаем с enum в kotlin/jvm правильно
— Идемпотентность: больше, чем кажется
— Проектирование БД рекомендательной системы по подходу DB-first
— FizzBuzz for Senior
— Stone. Квалификаторы и идентификаторы
— Интеграция Keycloak в приложение Spring Boot 3 с использованием протокола OAuth2.0
— Простой сервис аутентификации. SpringBootSecurity
— Gemini Function Calling
— Quarkus : Greener, Better, Faster, Stronger
— Bubble Sorting in Java - Detailed Explanation
— #30days50question
— Riding the Wave: A Fun Dive into the World of Streaming Applications
— What's trending in Flutter
— Who chooses programming in Java? 🤔💻
— Mockando LocalDateTime.now()
— GraphQL Java Data Loader
— From Java2D to a custom game engine, the past present, and future
Посмотреть:
🌐 Upgrading to Java 21? You'll want avoid these features. (⏱ 02:36)
🌐 Java Highlights of 2023 (⏱ 12:51)
🌐 What is the no-arg empty constructor? - Cracking the Java Coding Interview #codinginterview #java (⏱ 01:00)
🌐 What are the four fundamental functional interfaces in Java? - Cracking the Java Coding Interview (⏱ 01:00)
🌐 Это должен сделать каждый программист — Егор Малькевич (⏱ 00:50)
Хорошего дня!
@javatg
Почитать:
— Быстрый старт. SpringBoot + RabbitMQ
— Контейнеризация справочников НСИ
— Разносим по полочкам этапы тестирования http запросов в Spring
— Полный отчет Github за 2023 о состоянии проектов.
— 9 вопросов для собеседования по SQL в Apple
— Работаем с enum в kotlin/jvm правильно
— Идемпотентность: больше, чем кажется
— Проектирование БД рекомендательной системы по подходу DB-first
— FizzBuzz for Senior
— Stone. Квалификаторы и идентификаторы
— Интеграция Keycloak в приложение Spring Boot 3 с использованием протокола OAuth2.0
— Простой сервис аутентификации. SpringBootSecurity
— Gemini Function Calling
— Quarkus : Greener, Better, Faster, Stronger
— Bubble Sorting in Java - Detailed Explanation
— #30days50question
— Riding the Wave: A Fun Dive into the World of Streaming Applications
— What's trending in Flutter
— Who chooses programming in Java? 🤔💻
— Mockando LocalDateTime.now()
— GraphQL Java Data Loader
— From Java2D to a custom game engine, the past present, and future
Посмотреть:
🌐 Upgrading to Java 21? You'll want avoid these features. (⏱ 02:36)
🌐 Java Highlights of 2023 (⏱ 12:51)
🌐 What is the no-arg empty constructor? - Cracking the Java Coding Interview #codinginterview #java (⏱ 01:00)
🌐 What are the four fundamental functional interfaces in Java? - Cracking the Java Coding Interview (⏱ 01:00)
🌐 Это должен сделать каждый программист — Егор Малькевич (⏱ 00:50)
Хорошего дня!
@javatg
👍9❤3🔥1
📱В чем разница между ListView и RecyclerView?
Поговорим о различиях между RecyclerView и ListView — виджетами, предназначенными для отображения данных в Android-разработке.
Рассмотрим ключевые особенности RecyclerView и ListView, плюсы и минусы, а также случаи использования каждого виджета.
Для начала выясним, что такое представление (обозначаемое корнем “View” в названии каждого виджета).
Что такое представление?
В Android Studio доступны различные типы представлений для разработки Android-приложений: ImageView, TextView, ListView и т. д. Эти типы представлений помогают сделать удобным пользовательский интерфейс. Представление можно перетащить в раздел XML-дизайна или просто написать код в разделе XML-кода.
Прежде чем перейти к обсуждению различий между ListView и RecyclerView, разберемся в том, что такое ListView и RecyclerView?
ListView — это один из типов представлений, который показывает данные в формате с вертикальной прокруткой. Он повышает удобство работы пользователя, поскольку делает список легко доступным для понимания.
RecyclerView — виджет, наделенный дополнительными компонентами: Adapter соединяет между собой данные, которые нужно поместить в список, а LayoutManager (менеджер макетов) отвечает за правильное расположение данных/элементов списка на экране. Различают 3 типа LayoutManager.
🟡 LinearLayoutManager:
📌 Продолжение
@javatg
Поговорим о различиях между RecyclerView и ListView — виджетами, предназначенными для отображения данных в Android-разработке.
Рассмотрим ключевые особенности RecyclerView и ListView, плюсы и минусы, а также случаи использования каждого виджета.
Для начала выясним, что такое представление (обозначаемое корнем “View” в названии каждого виджета).
Что такое представление?
В Android Studio доступны различные типы представлений для разработки Android-приложений: ImageView, TextView, ListView и т. д. Эти типы представлений помогают сделать удобным пользовательский интерфейс. Представление можно перетащить в раздел XML-дизайна или просто написать код в разделе XML-кода.
Прежде чем перейти к обсуждению различий между ListView и RecyclerView, разберемся в том, что такое ListView и RecyclerView?
ListView — это один из типов представлений, который показывает данные в формате с вертикальной прокруткой. Он повышает удобство работы пользователя, поскольку делает список легко доступным для понимания.
RecyclerView — виджет, наделенный дополнительными компонентами: Adapter соединяет между собой данные, которые нужно поместить в список, а LayoutManager (менеджер макетов) отвечает за правильное расположение данных/элементов списка на экране. Различают 3 типа LayoutManager.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👎3👍2🔥1
🚀 Выпуск archunit-spring v0.2.0
GitHub: https://github.com/rweisleder/archunit-spring/releases/tag/v0.2.0
#ArchUnit #Spring #SpringBoot
@javatg
ArchUnit Spring Integration
теперь предоставляет правила для проверки структуры приложений Spring Boot
и зависимостей между компонентами Spring.GitHub: https://github.com/rweisleder/archunit-spring/releases/tag/v0.2.0
#ArchUnit #Spring #SpringBoot
@javatg
👍11❤3👎1🔥1
🚀 Советы по 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
👍9❤2🔥1
Советы по 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
👍16❤3🔥3
🚀 Лучшие практики 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
👍9❤5🔥3