Media is too big
    VIEW IN TELEGRAM
  Принципы проектирования SOLID с примерами на Java 
Видео посвящено пяти принципам SOLID, включая их объяснение и примеры: принцип единственной ответственности, открытости/закрытости, подстановки Барбары Лисков, сегрегации интерфейсов и инверсии зависимостей.
📲  Cмотреть источник: тут
👉   Java Portal | #курсы
Видео посвящено пяти принципам SOLID, включая их объяснение и примеры: принцип единственной ответственности, открытости/закрытости, подстановки Барбары Лисков, сегрегации интерфейсов и инверсии зависимостей.
Please open Telegram to view this post
    VIEW IN TELEGRAM
  🔥12❤3👍3
  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
  ❤8👍3🔥1
  В чем разница между ActiveMQ, RabbitMQ и Kafka и когда использовать
ActiveMQ: Лучше всего подходит для сценариев, где критична совместимость с JMS и поддержка различных протоколов, с фокусом на интеграцию с предприятиями и надежность.
Kafka: Идеален для обработки больших потоков данных, обеспечивая высокую пропускную способность, а также когда необходимы сохранение данных и возможность их воспроизведения.
RabbitMQ: Отлично подходит для микросервисов, где требуется гибкая маршрутизация, поддержка различных моделей обмена сообщениями и баланс между производительностью и богатством функционала.
👉  Java Portal  | дать буст
ActiveMQ: Лучше всего подходит для сценариев, где критична совместимость с JMS и поддержка различных протоколов, с фокусом на интеграцию с предприятиями и надежность.
Kafka: Идеален для обработки больших потоков данных, обеспечивая высокую пропускную способность, а также когда необходимы сохранение данных и возможность их воспроизведения.
RabbitMQ: Отлично подходит для микросервисов, где требуется гибкая маршрутизация, поддержка различных моделей обмена сообщениями и баланс между производительностью и богатством функционала.
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍13🔥5
  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
  👍10❤3🔥2
  Основные разрешения файлов в 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
  👍7❤2🔥1
  Многопоточность в 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
  ❤19👍11🔥3🏆1
  Media is too big
    VIEW IN TELEGRAM
  Хеш-таблица — Самая Популярная Структура Данных
Разбираем как работает HashSet - структура данных, которая позволяет проверять в ней наличие любого элемента за О(1) времени.
Затем модифицируем ее так, чтобы получить хеш-таблицу, то есть структуру данных, хранящую пары ключ-значение.
📲  Cмотреть источник: тут
👉   Java Portal | #видео
Разбираем как работает HashSet - структура данных, которая позволяет проверять в ней наличие любого элемента за О(1) времени.
Затем модифицируем ее так, чтобы получить хеш-таблицу, то есть структуру данных, хранящую пары ключ-значение.
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍11🔥2🌚1
  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
  👍9❤3🔥3
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  Please open Telegram to view this post
    VIEW IN TELEGRAM
  🤣18🔥10🤔5👍3❤1
  Media is too big
    VIEW IN TELEGRAM
  Тестирование на  JAVA (JUNIT, MOCKITO)
Видео объясняет, как писать тесты для Java-программ с использованием JUnit для тестирования и Mockito для мокирования объектов.
📲  Cмотреть источник: тут
👉   Java Portal | #видео
Видео объясняет, как писать тесты для Java-программ с использованием JUnit для тестирования и Mockito для мокирования объектов.
Please open Telegram to view this post
    VIEW IN TELEGRAM
  👍15❤2🔥2