Сколько лет опыта по вашему должен иметь синьор?
#интерактив
#интерактив
NavigableSet
NavigableSet — это интерфейс, который расширяет интерфейс SortedSet и добавляет навигационные методы для поиска элементов в отсортированном множестве.
NavigableSet поддерживает следующие дополнительные операции:
— Поиск ближайшего элемента к заданному.
— Поиск элементов в заданном диапазоне.
— Получение подмножества элементов сначала или конца набора.
Основное применение NavigableSet — это реализация структур данных, где важен упорядоченный доступ к элементам, таких как:
— Деревья (Red-Black, AVL и др.).
— Приоритетные очереди.
— Сортированные словари.
Основные реализации в Java — TreeSet и ConcurrentSkipListSet.
#код
NavigableSet — это интерфейс, который расширяет интерфейс SortedSet и добавляет навигационные методы для поиска элементов в отсортированном множестве.
NavigableSet поддерживает следующие дополнительные операции:
— Поиск ближайшего элемента к заданному.
— Поиск элементов в заданном диапазоне.
— Получение подмножества элементов сначала или конца набора.
Основное применение NavigableSet — это реализация структур данных, где важен упорядоченный доступ к элементам, таких как:
— Деревья (Red-Black, AVL и др.).
— Приоритетные очереди.
— Сортированные словари.
Основные реализации в Java — TreeSet и ConcurrentSkipListSet.
#код
Очередной #дайджест по Java:
☕ Как внедрить Prototype в Singleton в Spring с помощью параметра ProxyMode
Если просто добавить к определению бина аннотацию @Scope(SCOPE_PROTOTYPE) и использовать этот бин в синглтоне через аннотацию @Autowired – будет создан только один объект.
☕ Делаем свою простейшую систему сборки для Java
Как работает компиляция и как устроен Gradle.
☕ Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения
Уже тогда мобильные приложения писали на Java.
☕ Ad-hoc мониторинг: сбор, хранение и визуализация данных
Делаем гибридную систему мониторинга.
☕ Как внедрить Prototype в Singleton в Spring с помощью параметра ProxyMode
Если просто добавить к определению бина аннотацию @Scope(SCOPE_PROTOTYPE) и использовать этот бин в синглтоне через аннотацию @Autowired – будет создан только один объект.
☕ Делаем свою простейшую систему сборки для Java
Как работает компиляция и как устроен Gradle.
☕ Микросмартфон за 100 рублей: Покупаем смартфон 11-летней давности и… пишем под него приложения
Уже тогда мобильные приложения писали на Java.
☕ Ad-hoc мониторинг: сбор, хранение и визуализация данных
Делаем гибридную систему мониторинга.
BeanFactory
BeanFactory — это интерфейс, который предоставляет механизм для управления объектами bean в контейнере Inversion of Control (IoC).
BeanFactory является основой фреймворка Spring, где используется для создания приложений по принципу IoC и Dependency Injection. Он позволяет создавать гибкие, легко тестируемые приложения с инверсией управления и внедрением зависимостей.
#код
BeanFactory — это интерфейс, который предоставляет механизм для управления объектами bean в контейнере Inversion of Control (IoC).
BeanFactory является основой фреймворка Spring, где используется для создания приложений по принципу IoC и Dependency Injection. Он позволяет создавать гибкие, легко тестируемые приложения с инверсией управления и внедрением зависимостей.
#код
Создаем нативное Kotlin приложение на Spring Boot Native, Gradle и GraalVM без докера под MacOS и Windows
В этой статье автор рассказывает о практическом опыте нативной компиляции production приложения, написанного на Kotlin со Spring Boot, Gradle с использованием GraalVM.
Читать статью
В этой статье автор рассказывает о практическом опыте нативной компиляции production приложения, написанного на Kotlin со Spring Boot, Gradle с использованием GraalVM.
Читать статью
☕🛣️ Дорожная карта Java-разработчика в 2023 году
В данной статье мы расскажем, в каком порядке изучать Java, чтобы начать свой путь в разработке и стать востребованным специалистом в 2023 году.
Читать статью
В данной статье мы расскажем, в каком порядке изучать Java, чтобы начать свой путь в разработке и стать востребованным специалистом в 2023 году.
Читать статью
Что такое сериализация?
Сериализация — это процесс преобразования объекта в поток байтов для сохранения состояния объекта в файле или передачи по сети. Она выполняется потоками ObjectOutputStream и ObjectInputStream.
Сериализованный объект сохраняется в универсальном бинарном формате, независимом от платформы.
Сериализация позволяет сохранить состояние объекта между запусками программы и передавать объект через сеть.
Для сериализации класс должен имплементировать интерфейс Serializable. А если добавить полям класса модификатор transient, то такие поля не будут сериализованы.
#вопросы_с_собеседований
Сериализация — это процесс преобразования объекта в поток байтов для сохранения состояния объекта в файле или передачи по сети. Она выполняется потоками ObjectOutputStream и ObjectInputStream.
Сериализованный объект сохраняется в универсальном бинарном формате, независимом от платформы.
Сериализация позволяет сохранить состояние объекта между запусками программы и передавать объект через сеть.
Для сериализации класс должен имплементировать интерфейс Serializable. А если добавить полям класса модификатор transient, то такие поля не будут сериализованы.
#вопросы_с_собеседований
ForkJoinPool
Это класс, введенный в JDK 7, который представляет собой специализированный пул потоков, предназначенный для параллельного выполнения рекурсивных задач.
ForkJoinPool автоматически управляет созданием и использованием потоков для выполнения подзадач и обеспечивает эффективное распределение работы между ними.
Принцип работы основан на делении большой задачи на более мелкие подзадачи и их последующем объединении для получения результата. Каждая подзадача может быть выполнена независимо друг от друга, что позволяет эффективно использовать доступные ресурсы процессора.
#код
Это класс, введенный в JDK 7, который представляет собой специализированный пул потоков, предназначенный для параллельного выполнения рекурсивных задач.
ForkJoinPool автоматически управляет созданием и использованием потоков для выполнения подзадач и обеспечивает эффективное распределение работы между ними.
Принцип работы основан на делении большой задачи на более мелкие подзадачи и их последующем объединении для получения результата. Каждая подзадача может быть выполнена независимо друг от друга, что позволяет эффективно использовать доступные ресурсы процессора.
#код
Protobuf vs Reflection
Вы когда-нибудь задумывались, насколько grpc быстрый? Если вы гоняете маленькие сообщения, которые надо быстро доставить, то лучше grpc попросту не найти. Но насколько он хорош? Сможет ли он, к примеру, сравниться просто с нативными вызовами?
Читать статью
Вы когда-нибудь задумывались, насколько grpc быстрый? Если вы гоняете маленькие сообщения, которые надо быстро доставить, то лучше grpc попросту не найти. Но насколько он хорош? Сможет ли он, к примеру, сравниться просто с нативными вызовами?
Читать статью
Очередной #дайджест по Java:
☕ Модельно-Ориентированная Java, или Навстречу Дизайну ПО
Модельно-ориентированный метод (MDE) широко применяется во многих сферах современной инженерии; в программировании он позволяет разделить деятельность, направленную на создание универсального описания продукта, от деятельности по написанию кода, который бы эту модель воплощал в реальность.
☕ Методы по умолчанию для Java-интерфейсов
В приложении, где интерфейс имеет одну или несколько реализаций, если мы добавим метод к интерфейсу, все его реализации будут вынуждены реализовать его.
☕ «Я определенно не потратил 3 часа на этот вопрос..😢 #BinaryTreeAdventures» Решение двоичного дерева, вид справа
Решение сложной задачи с литкода.
☕ Распространенные ошибки младших Java-разработчиков при работе с Hibernate
Hibernate — это мощная платформа объектно-реляционного сопоставления (ORM) для Java, которая упрощает взаимодействие с базой данных.
☕ Модельно-Ориентированная Java, или Навстречу Дизайну ПО
Модельно-ориентированный метод (MDE) широко применяется во многих сферах современной инженерии; в программировании он позволяет разделить деятельность, направленную на создание универсального описания продукта, от деятельности по написанию кода, который бы эту модель воплощал в реальность.
☕ Методы по умолчанию для Java-интерфейсов
В приложении, где интерфейс имеет одну или несколько реализаций, если мы добавим метод к интерфейсу, все его реализации будут вынуждены реализовать его.
☕ «Я определенно не потратил 3 часа на этот вопрос..😢 #BinaryTreeAdventures» Решение двоичного дерева, вид справа
Решение сложной задачи с литкода.
☕ Распространенные ошибки младших Java-разработчиков при работе с Hibernate
Hibernate — это мощная платформа объектно-реляционного сопоставления (ORM) для Java, которая упрощает взаимодействие с базой данных.
Какой фреймворк для работы изучали последний раз?
#интерактив
#интерактив
Пост для Java-разработчиков, которые ищут работу или собираются увольняться с текущего места.
👉 Подписывайтесь на наш канал — в нем каждый день выходят лучшие вакансии на рынке с нормальными зарплатными вилками и хорошими условиями.
Публикуем предложения для джунов, мидлов и сеньоров, на удаленке и в офисах — оффер мечты точно найдется 👨💻
🔸Подписаться🔸
👉 Подписывайтесь на наш канал — в нем каждый день выходят лучшие вакансии на рынке с нормальными зарплатными вилками и хорошими условиями.
Публикуем предложения для джунов, мидлов и сеньоров, на удаленке и в офисах — оффер мечты точно найдется 👨💻
🔸Подписаться🔸
Интерфейс Comparable
Интерфейс Comparable используется для поддержки сортировки элементов коллекции.
Он содержит единственный метод compareTo, который сравнивает текущий объект с переданным объектом. Метод возвращает значение меньше нуля, если текущий объект меньше переданного, больше нуля если текущий объект больше, и ноль если объекты равны.
Чтобы ваш класс стал сравниваемым, он должен реализовывать интерфейс Comparable и переопределить метод compareTo.
Реализация Comparable позволяет сортировать экземпляры класса с помощью методов Collections.sort и Arrays.sort. Также она используется в TreeSet и TreeMap для корректного упорядочивания элементов.
В примере реализован метод compareTo, который сравнивает средний балл текущего и переданного студента.
После создания списка студентов мы отсортировали его методом Collections.sort. Благодаря Comparable студенты расположились в порядке возрастания среднего балла.
#код
Интерфейс Comparable используется для поддержки сортировки элементов коллекции.
Он содержит единственный метод compareTo, который сравнивает текущий объект с переданным объектом. Метод возвращает значение меньше нуля, если текущий объект меньше переданного, больше нуля если текущий объект больше, и ноль если объекты равны.
Чтобы ваш класс стал сравниваемым, он должен реализовывать интерфейс Comparable и переопределить метод compareTo.
Реализация Comparable позволяет сортировать экземпляры класса с помощью методов Collections.sort и Arrays.sort. Также она используется в TreeSet и TreeMap для корректного упорядочивания элементов.
В примере реализован метод compareTo, который сравнивает средний балл текущего и переданного студента.
После создания списка студентов мы отсортировали его методом Collections.sort. Благодаря Comparable студенты расположились в порядке возрастания среднего балла.
#код
В каких случаях разумно использовать массив, а не ArrayList?
Использование обычных массивов вместо ArrayList имеет смысл в следующих ситуациях:
— Нужен предсказуемый и строгий контроль размера массива. Массивы имеют фиксированный размер, в отличие от ArrayList.
— Требуется максимальная производительность при работе с примитивными типами данных (int, double и т. д.). Доступ к элементам массива быстрее, чем в ArrayList.
— Нужно создать структуру данных, которая должна быть неизменяемой.
— Требуется тесная интеграция с существующим кодом на основе обычных массивов. Переход на ArrayList может потребовать значительный рефакторинг.
— Не нужны динамические функции ArrayList, такие как автоматическое изменение размера, методы вставки/удаления и т. д.
— Ограничения на использование дополнительной памяти. Массивы компактнее ArrayList за счет фиксированного размера.
#вопросы_с_собеседований
Использование обычных массивов вместо ArrayList имеет смысл в следующих ситуациях:
— Нужен предсказуемый и строгий контроль размера массива. Массивы имеют фиксированный размер, в отличие от ArrayList.
— Требуется максимальная производительность при работе с примитивными типами данных (int, double и т. д.). Доступ к элементам массива быстрее, чем в ArrayList.
— Нужно создать структуру данных, которая должна быть неизменяемой.
— Требуется тесная интеграция с существующим кодом на основе обычных массивов. Переход на ArrayList может потребовать значительный рефакторинг.
— Не нужны динамические функции ArrayList, такие как автоматическое изменение размера, методы вставки/удаления и т. д.
— Ограничения на использование дополнительной памяти. Массивы компактнее ArrayList за счет фиксированного размера.
#вопросы_с_собеседований
Зубчатый массив в Java
Зубчатый массив (BitSet) — это специальная структура данных для эффективного хранения и манипулирования наборами битов.
Представляет собой массив битов, который увеличивается динамически по мере добавления элементов. Занимает меньше памяти, чем обычные структуры данных для хранения булевых значений.
Позволяет выполнять операции над битами: установка, сброс, инверсия, логические операции.
Зубчатый массив полезен при решении задач: поиск в множествах, хранение состояний и флагов, оптимизация расхода памяти и в целом при необходимости эффективно хранить и манипулировать большим количеством булевых значений.
#код
Зубчатый массив (BitSet) — это специальная структура данных для эффективного хранения и манипулирования наборами битов.
Представляет собой массив битов, который увеличивается динамически по мере добавления элементов. Занимает меньше памяти, чем обычные структуры данных для хранения булевых значений.
Позволяет выполнять операции над битами: установка, сброс, инверсия, логические операции.
Зубчатый массив полезен при решении задач: поиск в множествах, хранение состояний и флагов, оптимизация расхода памяти и в целом при необходимости эффективно хранить и манипулировать большим количеством булевых значений.
#код
Вышла Java 21
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.
Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Подробный обзор по ссылке.
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.
Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Подробный обзор по ссылке.
Что вы считаете самой большой своей неудачей за всю карьеру?
#интерактив
#интерактив
Начать курс «Алгоритмы и структуры данных» с вводной части можно уже сегодня бесплатно
Курс для разработчиков, которые хотят подготовиться к собеседованию в технологическую компанию или продвинуться по карьерной лестнице.
НАЧАТЬ С ДЕМО-ДОСТУПА
▪️ бессрочный доступ
▪️ 47 видеолекций
▪️ 150 практических заданий
▪️ бессрочная поддержка в чате студентов
▪️развернутая обратная связь по всем домашним заданиям
🔹Подробная программа – https://proglib.io/w/5af3212b
Переходите, оставляйте заявку на пробную версию и знакомьтесь с самым харизматичным спикером – Степаном Мацкевичем. Он определенно получил приз зрительских симпатий от наших студентов🥰
Курс для разработчиков, которые хотят подготовиться к собеседованию в технологическую компанию или продвинуться по карьерной лестнице.
НАЧАТЬ С ДЕМО-ДОСТУПА
▪️ бессрочный доступ
▪️ 47 видеолекций
▪️ 150 практических заданий
▪️ бессрочная поддержка в чате студентов
▪️развернутая обратная связь по всем домашним заданиям
🔹Подробная программа – https://proglib.io/w/5af3212b
Переходите, оставляйте заявку на пробную версию и знакомьтесь с самым харизматичным спикером – Степаном Мацкевичем. Он определенно получил приз зрительских симпатий от наших студентов🥰
Queue
Queue — это интерфейс в Java Collections Framework, который представляет собой коллекцию элементов, организованных в соответствии с принципом FIFO (First In, First Out). Это означает, что элементы добавляются в конец очереди и извлекаются из начала очереди.
Queue используется в ситуациях, когда необходимо управлять порядком обработки элементов.
В этом примере мы создаем очередь строк и добавляем в нее три элемента. Затем мы извлекаем элементы из очереди с помощью метода poll(), который возвращает и удаляет элемент из начала очереди. Элементы извлекаются в том же порядке, в каком и добавляются.
#код
Queue — это интерфейс в Java Collections Framework, который представляет собой коллекцию элементов, организованных в соответствии с принципом FIFO (First In, First Out). Это означает, что элементы добавляются в конец очереди и извлекаются из начала очереди.
Queue используется в ситуациях, когда необходимо управлять порядком обработки элементов.
В этом примере мы создаем очередь строк и добавляем в нее три элемента. Затем мы извлекаем элементы из очереди с помощью метода poll(), который возвращает и удаляет элемент из начала очереди. Элементы извлекаются в том же порядке, в каком и добавляются.
#код
Очередной #дайджест по Java:
☕ Добавление отзывов с фотографиями в S3 с помощью AWS SDK Java
Добавление отзывов пользователями с возможностью прикрепить фотографии, загрузить их в облако и получить ссылку файл из S3, а именно Yandex Object Storage, используя AWS SDK Java.
☕ OOM: direct memory при работе с сетью TCP/IP через NIO в Java
Об опыте увеличения производительности сетевого стэка и проблемах, с которыми можно столкнуться при использовании NIO в Java.
☕ Решаем задачу о секретном рукопожатии на Java
Интересная задача на знание Map и работу с пользовательским вводом, а также двоичное счисление.
☕ Продвинутый телеграмм бот на Java (Spring, postgres и free deploy)
Гайд по созданию полноценного бота с привязкой к базе данных.
☕ Добавление отзывов с фотографиями в S3 с помощью AWS SDK Java
Добавление отзывов пользователями с возможностью прикрепить фотографии, загрузить их в облако и получить ссылку файл из S3, а именно Yandex Object Storage, используя AWS SDK Java.
☕ OOM: direct memory при работе с сетью TCP/IP через NIO в Java
Об опыте увеличения производительности сетевого стэка и проблемах, с которыми можно столкнуться при использовании NIO в Java.
☕ Решаем задачу о секретном рукопожатии на Java
Интересная задача на знание Map и работу с пользовательским вводом, а также двоичное счисление.
☕ Продвинутый телеграмм бот на Java (Spring, postgres и free deploy)
Гайд по созданию полноценного бота с привязкой к базе данных.