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
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM