Каковы особенности многопоточности в Java EE и Spring?
Одной из особенностей многопоточности в Java EE и Spring является использование синхронизации и примитивов синхронизации, таких как блокировки и семафоры, для предотвращения конфликтов между потоками.
Ещё одна важная особенность — использование пулов потоков для более эффективного использования ресурсов и увеличение производительности.
Также в Spring есть возможность использования асинхронных методов, что позволяет не блокировать основной поток выполнения и ускорять обработку запросов.
#вопросы_с_собеседований
Одной из особенностей многопоточности в Java EE и Spring является использование синхронизации и примитивов синхронизации, таких как блокировки и семафоры, для предотвращения конфликтов между потоками.
Ещё одна важная особенность — использование пулов потоков для более эффективного использования ресурсов и увеличение производительности.
Также в Spring есть возможность использования асинхронных методов, что позволяет не блокировать основной поток выполнения и ускорять обработку запросов.
#вопросы_с_собеседований
📖 ТОП-10 книг, без которых не обойтись ни одному программисту
Мы подготовили для вас подборку из 10 книг, без которых не обойтись ни одному профессионалу в IT. Эти книги станут для вас настольными на долгие годы.
🔗 Основной сайт
🔗 Зеркало
Мы подготовили для вас подборку из 10 книг, без которых не обойтись ни одному профессионалу в IT. Эти книги станут для вас настольными на долгие годы.
🔗 Основной сайт
🔗 Зеркало
WeakHashMap
WeakHashMap — это подкласс java.util.HashMap, который используется для хранения пар "ключ-значение". Основное отличие WeakHashMap заключается в том, что он хранит ключи в виде "слабых ссылок" (weak reference), что означает их уничтожение при отсутствии сильной ссылки на объект.
Это позволяет использовать WeakHashMap для кэширования объектов, которые могут быть уничтожены сборщиком мусора в случае, если на них не осталось сильных ссылок. Это может подойти для объектов, созданных на основе потребительских запросов, которые не будут использоваться долгое время и не нужно хранить их в памяти постоянно.
В примере мы создаем объект и добавляем его в WeakHashMap. Затем мы обнуляем ссылку на этот объект и запускаем сборщик мусора. После этого мы пытаемся получить значение по ключу и должны получить null, так как ключ был удален из WeakHashMap.
#код
WeakHashMap — это подкласс java.util.HashMap, который используется для хранения пар "ключ-значение". Основное отличие WeakHashMap заключается в том, что он хранит ключи в виде "слабых ссылок" (weak reference), что означает их уничтожение при отсутствии сильной ссылки на объект.
Это позволяет использовать WeakHashMap для кэширования объектов, которые могут быть уничтожены сборщиком мусора в случае, если на них не осталось сильных ссылок. Это может подойти для объектов, созданных на основе потребительских запросов, которые не будут использоваться долгое время и не нужно хранить их в памяти постоянно.
В примере мы создаем объект и добавляем его в WeakHashMap. Затем мы обнуляем ссылку на этот объект и запускаем сборщик мусора. После этого мы пытаемся получить значение по ключу и должны получить null, так как ключ был удален из WeakHashMap.
#код
Меняем местами элементы первой и последний строки в матрице
Временная сложность: O(n*m), где n и m — количество строк и столбцов соответственно.
Вспомогательное пространство: O(1).
#код
Временная сложность: O(n*m), где n и m — количество строк и столбцов соответственно.
Вспомогательное пространство: O(1).
#код
Очередной #дайджест по Java:
✍️ Ивентная модель данных с использованием Kafka и Kafka Connect
Автор рассказывает, как, используя Kafka Connect, мы можем эффективно следить за изменениями в одной базе данных, обрабатывать их и мгновенно записывать в другую.
✍️ IntelliJ IDEA 2023.2. Language Server Protocol, AI Assistant, IntelliJ Profiler в редакторе, GitLab merge requests, ftw
Все основные фичи IntelliJ IDEA 2023.2.
✍️ Магия Spring Framework своими руками
Прокси объекты являются основой «магии» Spring Framework. В качестве демонстрации реализована @JmxExporter аннотация, которая позволяет превратить Spring Bean в JMX MBean.
✍️ Parallel Stream — не панацея или используй с умом (tutorial для начинающих)
Статья для тех, кто только изучает Stream API. В ней — функционал, плюсы и минусы использования Parallel Stream.
✍️ Правильные тестовые данные или почему Вася Пупкин лучший друг тестировщиков?
Об идеальных данных и источниках правильных тестовых данных.
✍️ Ивентная модель данных с использованием Kafka и Kafka Connect
Автор рассказывает, как, используя Kafka Connect, мы можем эффективно следить за изменениями в одной базе данных, обрабатывать их и мгновенно записывать в другую.
✍️ IntelliJ IDEA 2023.2. Language Server Protocol, AI Assistant, IntelliJ Profiler в редакторе, GitLab merge requests, ftw
Все основные фичи IntelliJ IDEA 2023.2.
✍️ Магия Spring Framework своими руками
Прокси объекты являются основой «магии» Spring Framework. В качестве демонстрации реализована @JmxExporter аннотация, которая позволяет превратить Spring Bean в JMX MBean.
✍️ Parallel Stream — не панацея или используй с умом (tutorial для начинающих)
Статья для тех, кто только изучает Stream API. В ней — функционал, плюсы и минусы использования Parallel Stream.
✍️ Правильные тестовые данные или почему Вася Пупкин лучший друг тестировщиков?
Об идеальных данных и источниках правильных тестовых данных.
Про какой учебный проект вы рассказывали/показывали его на первом собеседовании?
#интерактив
#интерактив
Узнаем разницу между 2 датами, представленными в виде строк
Для вычисления разницы между двумя датами, представленными в виде строк, можно использовать классы java.time.LocalDate и java.time.temporal.ChronoUnit из пакета java.time.
В этом примере мы используем метод LocalDate.parse() для преобразования строковых значений в объекты типа LocalDate. Затем мы используем метод ChronoUnit.between() для вычисления разницы между двумя датами в днях, месяцах и годах.
Обратите внимание, что вы должны использовать формат даты "yyyy-MM-dd" для парсинга строковых значений даты. Если ваши строки даты имеют другой формат, вам может потребоваться использовать другой метод для преобразования их в объекты LocalDate.
#код
Для вычисления разницы между двумя датами, представленными в виде строк, можно использовать классы java.time.LocalDate и java.time.temporal.ChronoUnit из пакета java.time.
В этом примере мы используем метод LocalDate.parse() для преобразования строковых значений в объекты типа LocalDate. Затем мы используем метод ChronoUnit.between() для вычисления разницы между двумя датами в днях, месяцах и годах.
Обратите внимание, что вы должны использовать формат даты "yyyy-MM-dd" для парсинга строковых значений даты. Если ваши строки даты имеют другой формат, вам может потребоваться использовать другой метод для преобразования их в объекты LocalDate.
#код
Расскажите о типах шаблонов проектирования.
✔️Основные (Fundamental) — основные строительные блоки других шаблонов. Большинство других шаблонов использует эти шаблоны в той или иной форме.
✔️Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс создания экземпляра. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять созданный объект, а шаблон, порождающий объекты, делегирует создание объектов другому объекту.
✔️Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
✔️Поведенческие шаблоны (Behavioral) определяют взаимодействие между объектами, увеличивая таким образом его гибкость.
#вопросы_с_собеседований
✔️Основные (Fundamental) — основные строительные блоки других шаблонов. Большинство других шаблонов использует эти шаблоны в той или иной форме.
✔️Порождающие шаблоны (Creational) — шаблоны проектирования, которые абстрагируют процесс создания экземпляра. Они позволяют сделать систему независимой от способа создания, композиции и представления объектов. Шаблон, порождающий классы, использует наследование, чтобы изменять созданный объект, а шаблон, порождающий объекты, делегирует создание объектов другому объекту.
✔️Структурные шаблоны (Structural) определяют различные сложные структуры, которые изменяют интерфейс уже существующих объектов или его реализацию, позволяя облегчить разработку и оптимизировать программу.
✔️Поведенческие шаблоны (Behavioral) определяют взаимодействие между объектами, увеличивая таким образом его гибкость.
#вопросы_с_собеседований
Оператор instanceof
Оператор java instanceof используется для проверки того, является ли объект экземпляром указанного типа (класса или подкласса или интерфейса). Во время выполнения результат оператора instanceof равен true, если значение выражения не равно null.
Это важное свойство операции instanceof, которое делает ее полезной для проверки приведения типов.
#код
Оператор java instanceof используется для проверки того, является ли объект экземпляром указанного типа (класса или подкласса или интерфейса). Во время выполнения результат оператора instanceof равен true, если значение выражения не равно null.
Это важное свойство операции instanceof, которое делает ее полезной для проверки приведения типов.
#код
Использование Spring Cloud Gateway в качестве OAuth2 клиента и KeyCloak для защиты служб
В первую очередь данная статья для тех, кто только пытаются освоить технологии Spring Cloud и KeyCloak, но уже имеют базовое представление о них.
Смотреть статью
В первую очередь данная статья для тех, кто только пытаются освоить технологии Spring Cloud и KeyCloak, но уже имеют базовое представление о них.
Смотреть статью
Представьте, что вы за час можете научиться чему угодно — что бы это было?
#интерактив
#интерактив