Создаём CRUD REST API в Spring Boot быстро и просто вместе с Amplicode
📖 Читать: ссылка
👉 Java Portal | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Платформа для управления данными на Java
С её помощью можно превращать обычные текстовые запросы в SQL-коды.
Он предназначен для упрощения взаимодействия с базами данных и повышения продуктивности работы
⛓ Ссылка: тык
👉 Java Portal | дать буст
С её помощью можно превращать обычные текстовые запросы в SQL-коды.
Он предназначен для упрощения взаимодействия с базами данных и повышения продуктивности работы
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Docker с 0 до 100%. Всё, что нужно знать
Видео представляет основы Docker, включая установку, команды, управление портами, переменные окружения, работу с данными, сетью, созданием контейнеров, Docker Compose и использование Portainer для управления.
📲 Cмотреть источник: тут
👉 Java Portal | #курсы
Видео представляет основы Docker, включая установку, команды, управление портами, переменные окружения, работу с данными, сетью, созданием контейнеров, Docker Compose и использование Portainer для управления.
Please open Telegram to view this post
VIEW IN TELEGRAM
На изображении показана структура файловой системы Linux с пояснением назначения каждой директории 😮
/bin содержит исполняемые файлы основных команд. /boot хранит файлы загрузчика, а /dev предназначен для файлов устройств. /etc используется для конфигурационных файлов системы, а /home — для домашних директорий пользователей.
/lib содержит модули библиотек, /media используется для съемных носителей, а /mnt — для временных точек монтирования. /opt предназначен для дополнительных пакетов программного обеспечения.
/proc представляет собой интерфейс для структур данных ядра. /root является домашней директорией суперпользователя root. /run хранит данные программ во время выполнения.
/sbin используется для системных команд. /srv содержит данные, предоставляемые сервисами системы. /sys является виртуальной директорией, предоставляющей информацию о системе.
/tmp предназначен для временных файлов. /usr содержит ресурсы Unix-системы. /var используется для хранения файлов, которые часто изменяются системой.
👉 Java Portal | дать буст
/bin содержит исполняемые файлы основных команд. /boot хранит файлы загрузчика, а /dev предназначен для файлов устройств. /etc используется для конфигурационных файлов системы, а /home — для домашних директорий пользователей.
/lib содержит модули библиотек, /media используется для съемных носителей, а /mnt — для временных точек монтирования. /opt предназначен для дополнительных пакетов программного обеспечения.
/proc представляет собой интерфейс для структур данных ядра. /root является домашней директорией суперпользователя root. /run хранит данные программ во время выполнения.
/sbin используется для системных команд. /srv содержит данные, предоставляемые сервисами системы. /sys является виртуальной директорией, предоставляющей информацию о системе.
/tmp предназначен для временных файлов. /usr содержит ресурсы Unix-системы. /var используется для хранения файлов, которые часто изменяются системой.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Основные компоненты Apache Kafka объяснены:
🍩 Сообщения — единицы данных в формате "ключ-значение", которые обмениваются между продюсерами и потребителями.
🍩 Топики и партиции — организуют сообщения, обеспечивают параллелизм, сохраняют порядок на уровне партиции.
🍩 Брокер — сервер Kafka для хранения, управления и распространения сообщений; обеспечивает масштабируемость.
🍩 Продюсеры — публикуют сообщения, назначают партиции, обеспечивают надежную доставку.
🍩 Потребители — извлекают и обрабатывают сообщения, отслеживают смещения, чтобы избежать дублирования.
🍩 Группа потребителей — работает совместно для сбалансированной параллельной обработки сообщений.
👉 Java Portal | дать буст
Please open Telegram to view this post
VIEW IN TELEGRAM
Самоучитель Spring Boot RabbitMQ
В этой серии вы научитесь использовать RabbitMQ для обмена сообщениями между продюсером и консюмером в приложениях Spring Boot. Мы будем использовать версию Spring Boot 3. Если вы хотите применять RabbitMQ в микросервисах, построенных на основе событийной архитектуры с Spring Boot, то этот курс будет полезен для вас.
📲 Cмотреть источник: тут
👉 Java Portal | #курсы
В этой серии вы научитесь использовать RabbitMQ для обмена сообщениями между продюсером и консюмером в приложениях Spring Boot. Мы будем использовать версию Spring Boot 3. Если вы хотите применять RabbitMQ в микросервисах, построенных на основе событийной архитектуры с Spring Boot, то этот курс будет полезен для вас.
Please open Telegram to view this post
VIEW IN TELEGRAM
Области видимости бинов Spring 😏
singleton — единственный экземпляр бина для всего приложения
prototype — новый экземпляр бина при каждом запросе
request — экземпляр бина на каждый HTTP-запрос
session — экземпляр бина для каждой HTTP-сессии
application — один экземпляр бина на весь жизненный цикл ServletContext
websocket — экземпляр бина для каждого WebSocket-соединения
👉 Java Portal | дать буст
singleton — единственный экземпляр бина для всего приложения
prototype — новый экземпляр бина при каждом запросе
request — экземпляр бина на каждый HTTP-запрос
session — экземпляр бина для каждой HTTP-сессии
application — один экземпляр бина на весь жизненный цикл ServletContext
websocket — экземпляр бина для каждого WebSocket-соединения
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
12 команд Git, которые вы должны знать
git init — инициализирует новый репозиторий Git в текущей директории.
git add — добавляет изменения в текущей директории или поддиректориях в область индексирования.
git commit — фиксирует проиндексированные изменения с сообщением.
git push — отправляет локальные изменения в удалённый репозиторий.
git pull — загружает изменения из удалённого репозитория и объединяет их с локальными.
git branch — отображает список веток, создаёт новые и позволяет управлять ими.
git fetch — получает данные из удалённого репозитория, не объединяя их с локальными.
git remote — добавляет, просматривает или переименовывает удалённые репозитории.
git checkout — переключается на указанную ветку.
git merge — объединяет указанную ветку с текущей.
git status — показывает состояние репозитория, включая неотслеживаемые файлы и изменения.
git reset — сбрасывает текущую ветку к указанному коммиту.
👉 Java Portal | дать буст
git init — инициализирует новый репозиторий Git в текущей директории.
git add — добавляет изменения в текущей директории или поддиректориях в область индексирования.
git commit — фиксирует проиндексированные изменения с сообщением.
git push — отправляет локальные изменения в удалённый репозиторий.
git pull — загружает изменения из удалённого репозитория и объединяет их с локальными.
git branch — отображает список веток, создаёт новые и позволяет управлять ими.
git fetch — получает данные из удалённого репозитория, не объединяя их с локальными.
git remote — добавляет, просматривает или переименовывает удалённые репозитории.
git checkout — переключается на указанную ветку.
git merge — объединяет указанную ветку с текущей.
git status — показывает состояние репозитория, включая неотслеживаемые файлы и изменения.
git reset — сбрасывает текущую ветку к указанному коммиту.
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Принципы проектирования SOLID с примерами на Java
Видео посвящено пяти принципам SOLID, включая их объяснение и примеры: принцип единственной ответственности, открытости/закрытости, подстановки Барбары Лисков, сегрегации интерфейсов и инверсии зависимостей.
📲 Cмотреть источник: тут
👉 Java Portal | #курсы
Видео посвящено пяти принципам SOLID, включая их объяснение и примеры: принцип единственной ответственности, открытости/закрытости, подстановки Барбары Лисков, сегрегации интерфейсов и инверсии зависимостей.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Это клавиатура Android на Java 🧔♂️
Для безопасных сквозных зашифрованных сообщений по протокол Signal, в любом мессенджере.
Общайтесь безопасно и независимо, независимо от правовой ситуации или того, используют ли мессенджеры E2EE. Сервер не нужен.
⏩ ввод сообщений через отдельное текстовое поле на клавиатуре
⏩ шифрование/дешифрование сообщений
⏩ использовать буфер обмена для чтения сообщений
⏩ журнал сообщений для просмотра отправленных/полученных сообщений
⏩ Темная и светлая тема
и многое другое...
⛓ Ссылка: тык
👉 Java Portal | дать буст
Для безопасных сквозных зашифрованных сообщений по протокол Signal, в любом мессенджере.
Общайтесь безопасно и независимо, независимо от правовой ситуации или того, используют ли мессенджеры E2EE. Сервер не нужен.
и многое другое...
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
В чем разница между ActiveMQ, RabbitMQ и Kafka и когда использовать
ActiveMQ: Лучше всего подходит для сценариев, где критична совместимость с JMS и поддержка различных протоколов, с фокусом на интеграцию с предприятиями и надежность.
Kafka: Идеален для обработки больших потоков данных, обеспечивая высокую пропускную способность, а также когда необходимы сохранение данных и возможность их воспроизведения.
RabbitMQ: Отлично подходит для микросервисов, где требуется гибкая маршрутизация, поддержка различных моделей обмена сообщениями и баланс между производительностью и богатством функционала.
👉 Java Portal | дать буст
ActiveMQ: Лучше всего подходит для сценариев, где критична совместимость с JMS и поддержка различных протоколов, с фокусом на интеграцию с предприятиями и надежность.
Kafka: Идеален для обработки больших потоков данных, обеспечивая высокую пропускную способность, а также когда необходимы сохранение данных и возможность их воспроизведения.
RabbitMQ: Отлично подходит для микросервисов, где требуется гибкая маршрутизация, поддержка различных моделей обмена сообщениями и баланс между производительностью и богатством функционала.
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
JWT-аутентификация для нативных приложений - Spring Security
JWT-аутентификация - это токен-аутентификация с использованием ключей доступа сериализованных в формате JWT - JSON Web Token.
В этом ролике про реализацию получения и обновления ключей доступа, аутентификации при их помощи, а так же блокировку ключей.
📲 Cмотреть источник: тут
👉 Java Portal | #курсы
JWT-аутентификация - это токен-аутентификация с использованием ключей доступа сериализованных в формате JWT - JSON Web Token.
В этом ролике про реализацию получения и обновления ключей доступа, аутентификации при их помощи, а так же блокировку ключей.
Please open Telegram to view this post
VIEW IN TELEGRAM
Основные разрешения файлов в Linux для начинающих
🟣 Тип файла
🟣 Разрешения
Для владельца (Owner/User permissions)
🟣 Для группы (Group permissions)
🟣 Для других пользователей (Others permissions)
👉 Java Portal | дать буст
-
обычный файл (regular file) b
блочное устройство (block device) c
символьное устройство (character device) d
директория (directory) l
символическая ссылка (symbolic link) p
именованный канал (named pipe) s
сокет (socket) Для владельца (Owner/User permissions)
r
читать (read) w
записывать (write) x
выполнять (execute) r
читать (read) w
записывать (write) x
выполнять (execute) r
читать (read) w
записывать (write) x
выполнять (execute) Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Многопоточность в Java
В Java многопоточность реализована через класс
🟣 1. Создание и запуск потока
Поток может быть создан двумя способами:
Наследование от класса Thread:
Реализация интерфейса
🟣 2. Основные методы класса
-
-
-
-
-
🟣 3. Синхронизация
- Чтобы избежать проблем с конкурентным доступом к данным, используется синхронизация:
Это гарантирует, что только один поток может выполнить код внутри синхронизированного блока.
🟣 4. Пул потоков
- Для управления большим количеством потоков используется пул потоков, который управляется через
🟣 5. Состояния потока
Потоки могут находиться в разных состояниях:
- NEW: Поток создан, но не запущен.
- RUNNABLE: Поток готов к выполнению.
- WAITING: Поток ожидает другого потока.
- TIMED_WAITING: Поток ожидает в течение определенного времени.
- TERMINATED: Поток завершен.
🟣 6. Проблемы многопоточности
- Состояние гонки (Race condition) — ситуация, когда несколько потоков одновременно пытаются изменить данные, что может привести к некорректным результатам.
- Блокировки — проблемы с мертвыми блокировками (deadlocks), когда потоки навсегда блокируются, ожидая друг друга.
🟣 7. Современные подходы и классы
-
-
🟣 8. Параллельное выполнение коллекций
Коллекции в Java также могут работать с потоками через
Многопоточность — мощный инструмент для улучшения производительности приложений, но требует внимательности при реализации, чтобы избежать ошибок, таких как мертвые блокировки или некорректный доступ к данным.
👉 Java Portal | дать буст
В Java многопоточность реализована через класс
Thread
и интерфейс Runnable
. Вот основные моменты, которые могут быть полезны при работе с многопоточностью:Поток может быть создан двумя способами:
Наследование от класса Thread:
class MyThread extends Thread {
public void run() {
// Код, выполняемый в потоке
}
}
MyThread t = new MyThread();
t.start();
Реализация интерфейса
Runnable
:
class MyRunnable implements Runnable {
public void run() {
// Код, выполняемый в потоке
}
}
Thread t = new Thread(new MyRunnable());
t.start();
Thread
-
start()
— запуск потока.-
sleep(long millis)
— приостановка потока на определенное время.-
join()
— ожидание завершения потока.-
interrupt()
— прерывание потока.-
isAlive()
— проверка, работает ли поток.- Чтобы избежать проблем с конкурентным доступом к данным, используется синхронизация:
synchronized (this) {
// Критическая секция
}
Это гарантирует, что только один поток может выполнить код внутри синхронизированного блока.
- Для управления большим количеством потоков используется пул потоков, который управляется через
ExecutorService
. Пример:
ExecutorService executor = Executors.newFixedThreadPool(10);
executor.submit(() -> {
// Задача для потока
});
executor.shutdown();
Потоки могут находиться в разных состояниях:
- NEW: Поток создан, но не запущен.
- RUNNABLE: Поток готов к выполнению.
- WAITING: Поток ожидает другого потока.
- TIMED_WAITING: Поток ожидает в течение определенного времени.
- TERMINATED: Поток завершен.
- Состояние гонки (Race condition) — ситуация, когда несколько потоков одновременно пытаются изменить данные, что может привести к некорректным результатам.
- Блокировки — проблемы с мертвыми блокировками (deadlocks), когда потоки навсегда блокируются, ожидая друг друга.
-
ForkJoinPool
— используется для параллельного выполнения задач с разделением на подзадачи.-
CountDownLatch
, CyclicBarrier
, Semaphore
— различные утилиты для синхронизации между потоками.Коллекции в Java также могут работать с потоками через
parallelStream()
:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.parallelStream().forEach(System.out::println);
Многопоточность — мощный инструмент для улучшения производительности приложений, но требует внимательности при реализации, чтобы избежать ошибок, таких как мертвые блокировки или некорректный доступ к данным.
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Хеш-таблица — Самая Популярная Структура Данных
Разбираем как работает HashSet - структура данных, которая позволяет проверять в ней наличие любого элемента за О(1) времени.
Затем модифицируем ее так, чтобы получить хеш-таблицу, то есть структуру данных, хранящую пары ключ-значение.
📲 Cмотреть источник: тут
👉 Java Portal | #видео
Разбираем как работает HashSet - структура данных, которая позволяет проверять в ней наличие любого элемента за О(1) времени.
Затем модифицируем ее так, чтобы получить хеш-таблицу, то есть структуру данных, хранящую пары ключ-значение.
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
IntelliJ IDEA поддерживает JSONPath. 👩💻
Вы можете выполнять оценку выражений JSONPath, а также использовать Language Injection для получения форматирования кода и автодополнения внутри строки JSONPath.
👉 Java Portal | дать буст
Вы можете выполнять оценку выражений JSONPath, а также использовать Language Injection для получения форматирования кода и автодополнения внутри строки JSONPath.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM