seniorjavist | Unsorted

Telegram-канал seniorjavist - Senior Java Developer

-

Изучаем Java. По вопросам сотрудничества: @seniorvladislav

Subscribe to a channel

Senior Java Developer

Фундаментальное руководство по пакетам в Java

Java-пакеты реализуют так называемое пространство имен (namespace), позволяющее использовать в проекте файлы с одинаковыми именами.

Смотреть статью

Читать полностью…

Senior Java Developer

serialVersionUID

serialVersionUID — это статическое поле, которое используется для версионирования сериализованных объектов. Когда объекты сериализуются, serialVersionUID указывает версию класса, используемую при сериализации и десериализации.

Проблема, которую serialVersionUID решает, связана с обеспечением совместимости при сериализации. Если класс был сериализован с определенной версией serialVersionUID, то при десериализации Java будет проверять, соответствует ли текущая версия класса версии, сохраненной в сериализованных данных. Если версии не совпадают, может быть брошено исключение InvalidClassException, указывающее на несовместимость версий.

#для_продвинутых

Читать полностью…

Senior Java Developer

Что такое ThreadGroup?

ThreadGroup представляет собой класс, предоставляемый Java для создания и управления группами потоков. Он может содержать другие подгруппы потоков, образуя иерархию. Основной целью ThreadGroup является обеспечение единого механизма управления и мониторинга для всех потоков внутри группы.

ThreadGroup предоставляет некоторый уровень организации и управления, но в большинстве современных приложений управление потоками осуществляется с использованием более высокоуровневых конструкций, таких как классы из пакета java.util.concurrent, которые предоставляют более гибкие и безопасные средства для работы с параллельным исполнением.

#для_продвинутых

Читать полностью…

Senior Java Developer

Декартово произведение

Декартово произведение (cartesian product) в математике означает комбинацию всех возможных пар элементов из двух множеств. В Java это понятие может использоваться для описания ситуации, когда необходимо создать все возможные комбинации элементов из двух или более наборов данных.

Например, представьте, что у вас есть два множества: A = {1, 2} и B = {a, b}. Декартово произведение этих множеств будет: {(1, a), (1, b), (2, a), (2, b)}.

Проблема декартова произведения может возникнуть, когда вам нужно сгенерировать или обработать все возможные комбинации элементов из двух или более коллекций.

Для решения проблемы декартова произведения можно использовать вложенные циклы, рекурсию или специализированные библиотеки, такие как Apache Commons Collections или Stream API, чтобы более эффективно генерировать и обрабатывать комбинации элементов из разных множеств.

#для_продвинутых

Читать полностью…

Senior Java Developer

Что такое Executor?

Понятие Executor относится к части библиотеки java.util.concurrent, которая предоставляет управление и выполнение задач в многопоточных приложениях. Этот интерфейс и связанные с ним классы предоставляют абстракцию для управления выполнением потоковых задач.

Основной целью интерфейса Executor является разделение задачи выполнения задач от деталей управления потоками. Вместо того чтобы явно создавать и управлять потоками для выполнения задач, вы можете передать задачи в Executor, который сам управляет пулом потоков и выполняет эти задачи.

#для_начинающих

Читать полностью…

Senior Java Developer

ThreadPool

ThreadPool (пул потоков) представляет собой механизм, который позволяет эффективно управлять и переиспользовать потоки для выполнения задач в многозадачных приложениях. Он позволяет создавать и управлять пулом потоков, избегая накладных расходов на создание и уничтожение потоков при выполнении задач.

#для_начинающих

Читать полностью…

Senior Java Developer

Что нового в GitVerse

На онлайн-презентации «GitVerse: открой вселенную кода» СберТех рассказал об обновлениях платформы. Cреди них – CI/CD-инструменты, которые позволят ускорить и упростить разработку. Делимся подробностями:

▪️ Инструменты помогут автоматизировать сборку кода и процессы поставки. Можно воспользоваться уже написанными скриптами сборки и перенести свои проекты с Git-репозиториев в один клик.

▪️ Технология оповещения о новых событиях на сервере (вебхуки) позволит реализовать еще больше сценариев автоматизации.

▪️ Появилась возможность вызывать сторонние сервисы через API по событиям в GitVerse. Например, при определенных событиях в репозитории можно запустить сторонний сборочный конвейер или отправить уведомление в мессенджер.

Регистрируйтесь на GitVerse и протестируйте сами 😉

Читать полностью…

Senior Java Developer

❓Хотите прокачать скиллы в автоматизации тестирования на Java?

👉 Ждем вас на бесплатном практическом уроке «Модульное и интеграционное тестирование при помощи Spring Boot» от OTUS.

На вебинаре разберем:
- модульное тестировании при помощи Spring Boot;
- интеграционное тестирование при помощи Spring Boot;
- написание тестов на отдельные фрагменты SUT. 

👉 Для участия зарегистрируйтесь https://otus.pw/MpW0/?erid=LjN8K732H

⏰ Встречаемся 24 апреля в 20:00 мск в рамках курса «Java QA Engineer. Professional».

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

Senior Java Developer

Получить атомное время из интернет-часов

Для получения атомного времени из интернет-часов в Java вы можете воспользоваться классом java.net.URL для выполнения HTTP-запроса к одному из сервисов времени, таким как «time.google.com». Затем вы можете обработать полученный ответ и извлечь атомное время.

Обратите внимание, что формат ответа от сервиса времени может различаться, и вам может потребоваться настроить метод parseAtomicTime для вашего конкретного сервиса. Подобные сервисы могут предоставлять атомное время в разных форматах, таких как ISO 8601 или Unix Timestamp.

#для_начинающих

Читать полностью…

Senior Java Developer

💻Хочешь стать платформенным инженером в IT-компании? 

🚀Тогда онлайн-курс «Инфраструктурная платформа на основе Kubernetes» от OTUS именно для тебя!
Изучи функционал K8s, освой технологию разработки инфраструктурных платформ и сделай свое резюме сильнее. 

🎓Учись у экспертов, погружайся в мир технологий будущего и строй свою успешную карьеру в IT.

👨‍🎓 Здесь ты получишь практические навыки, которые сможешь применить в работе. А практикующие эксперты-преподаватели ответят на твои вопросы в режиме реального времени на вебинарах.

📅Старт нового набора уже 25 апреля. Программа актуализирована, есть рассрочка для оплаты курса.

🔥Пройди короткое вступительное тестирование прямо сейчас, чтобы не только проверить свои знания,  но еще получить специальную цену на обучение и персональную консультацию от менеджера в OTUS: https://vk.cc/cwjVCN?erid=LjN8Ju1GC 

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.

Читать полностью…

Senior Java Developer

Кастинг

Кастинг (приведение типов) — это операция, которая позволяет присвоить значение переменной одного типа переменной другого типа.

Существует два типа кастинга:

Расширение типа (widening casting) — это преобразование типа данных меньшей разрядности в тип данных большей разрядности. Например, преобразование типа byte в тип int, short в тип long или char в тип int.

Сужение типа (narrowing casting) — это преобразование типа данных большей разрядности в тип данных меньшей разрядности. Например, преобразование типа int в тип byte, long в тип short или double в тип float.

#для_продвинутых

Читать полностью…

Senior Java Developer

Ключевое слово new

Ключевое слово new используется для создания нового объекта. Оно всегда используется в сочетании с именем класса, к которому принадлежит создаваемый объект. Например, чтобы создать новый объект класса String, мы можем написать код, как на картинке.

В этом примере переменная str будет ссылаться на новый объект класса String. По умолчанию, новый объект будет инициализирован значениями по умолчанию для своего типа. Например, объект класса String будет содержать пустую строку.

#для_начинающих

Читать полностью…

Senior Java Developer

Интерфейс Function

Функциональный интерфейс Function представляет собой интерфейс, который используется для представления функции, принимающей один аргумент и возвращающей результат. Он является частью пакета java.util.function и был введен в Java 8 для поддержки функционального программирования.

#для_продвинутых

Читать полностью…

Senior Java Developer

Что такое цепочка конструкторов?

Цепочка конструкторов – это процесс вызова одного конструктора из другого по отношению к текущему объекту. Цепочка конструкторов возможна только в устаревших версиях, когда конструктор подкласса отвечает за вызов конструктора суперкласса первым. В цепочке конструкторов может быть любое количество классов. Цепочка конструкторов может быть достигнута двумя способами:

1) В том же классе, используя this().
2) Из базового класса с использованием super().

Читать полностью…

Senior Java Developer

17 мая собираем всех на IT-конференцию МТС True Tech Day.

Наша работа строится на коде, который мы создали из синтеза науки и технологий. Это надёжная и универсальная платформа для разработки продуктов и сервисов.

Каждый участник конференции поучаствует в сессиях от лидеров индустрии, испытает технологии в true labs и получит новые впечатления и эмоции.

Что будет:
→ 5 тематических треков: Main, Development, AI/ML, Cloud, Science
→ 50 спикеров с докладами про архитектуру, облачные платформы, NLP4Code, вероятностное программирование, безопасность контейнеров и другое
→ 10 часов нетворкинга
→ цифровые зоны и digital-интеграции
→ а ещё вечеринка со звездой

Все спикеры и темы уже на сайте. Регистрируйся на True Tech Day. Участие бесплатное

Читать полностью…

Senior Java Developer

Прокси-объект

Прокси-объект (Proxy Object) — это объект, который действует как промежуточный слой между клиентским кодом и реальным объектом. Прокси-объект позволяет выполнять дополнительные действия перед или после вызовов методов реального объекта, а также контролировать доступ к этим методам.

Прокси-объекты в Java реализуются с помощью интерфейсов и динамического создания классов во время выполнения. Для создания прокси-объекта в Java существует два основных способа: с использованием JDK Proxy и с использованием библиотеки CGLIB.

#для_продвинутых

Читать полностью…

Senior Java Developer

Конкатенация

Конкатенация — это операция объединения или склеивания двух или более строк или последовательностей символов для создания новой строки. В общем смысле, это означает соединение элементов в одну последовательность. Этот термин применяется не только к строкам, но и к другим типам данных, которые могут быть объединены.

#для_начинающих

Читать полностью…

Senior Java Developer

Что такое «IS-A» отношение?

«IS-A» отношение относится к понятию наследования и полиморфизма в объектно-ориентированном программировании. Оно также называется «является типом» или «является подтипом». Это отношение указывает на то, что один класс является подклассом другого класса.

Наследование позволяет создавать новый класс на основе существующего класса. Подкласс наследует поля и методы суперкласса, что позволяет расширять функциональность и переиспользовать код. «IS-A» отношение означает, что объекты подкласса могут быть рассматриваемыми как объекты суперкласса, так как они наследуют его свойства и методы.

#для_продвинутых

Читать полностью…

Senior Java Developer

ScheduledExecutorService

ScheduledExecutorService — это интерфейс в Java из пакета java.util.concurrent, который предоставляет возможность планирования и выполнения задач с задержкой или периодически.

Основные реализации ScheduledExecutorService:

ScheduledThreadPoolExecutor — это конкретная реализация ScheduledExecutorService, предоставляемая в стандартной библиотеке Java. Она является потокобезопасной реализацией и использует пул потоков для выполнения задач.

SingleThreadScheduledExecutor — это реализация ScheduledExecutorService, которая использует только один поток для выполнения задач. Она может быть полезной, если вы хотите, чтобы задачи выполнялись последовательно в заданном порядке.

#для_начинающих

Читать полностью…

Senior Java Developer

ConcurrentHashMap

ConcurrentHashMap — это класс из пакета java.util.concurrent, который представляет собой реализацию хэш-таблицы, спроектированную для поддержки параллельных операций чтения и записи без необходимости блокировки всей структуры данных.

#для_начинающих

Читать полностью…

Senior Java Developer

Что такое «thread-safe»?

«Thread-safe» (безопасность в многопоточной среде) означает, что определенный код или объект может корректно и безопасно использоваться в многопоточной среде, где несколько потоков одновременно могут обращаться к этому коду или объекту.

Основная проблема, с которой сталкиваются в многопоточной среде, — это состояние гонки (race condition), когда несколько потоков могут изменять общие данные и конфликтовать между собой, что может привести к непредсказуемому и некорректному поведению программы.

#для_продвинутых

Читать полностью…

Senior Java Developer

ReentrantLock

ReentrantLock - это класс в Java, который предоставляет механизм блокировки с возможностью повторного входа.

Это означает, что один поток может несколько раз захватывать и освобождать блокировку, что может быть полезно в сложных сценариях синхронизации.

#для_начинающих

Читать полностью…

Senior Java Developer

CyclicBarrier

CyclicBarrier (циклический барьер) — это один из механизмов синхронизации в языке программирования Java, предоставляемый пакетом java.util.concurrent. Он позволяет группе потоков синхронизироваться на определенной точке выполнения, после чего они могут продолжить выполнение параллельно.

CyclicBarrier представляет собой барьер, который блокирует выполнение всех потоков до тех пор, пока все потоки не достигнут этой точки. Как только все потоки достигли барьера, он разблокируется, и все потоки выполняют свою работу.

#для_продвинутых

Читать полностью…

Senior Java Developer

В Java как реализуется принцип "fail-fast" в контексте коллекций и как это отличается от подхода "fail-safe"?

В Java "fail-fast" система немедленно выдает ConcurrentModificationException, если обнаруживает, что коллекция была изменена во время итерации, кроме изменений через сам итератор. Напротив, "fail-safe" коллекции используют механизмы, такие как копирование коллекции или блокировки, чтобы обеспечить безопасное поведение во время итераций, даже если коллекция изменяется, предотвращая ConcurrentModificationException.

Читать полностью…

Senior Java Developer

DelayQueue

DelayQueue — это очередь, которая хранит элементы в порядке их задержки. Элементы в очереди извлекаются только после истечения их задержки.

DelayQueue реализует интерфейс BlockingQueue, поэтому элементы могут извлекаться из нее только блокирующими методами take() или poll(long timeout, TimeUnit unit).

Элементы DelayQueue должны реализовывать интерфейс Delayed. Интерфейс Delayed определяет два метода:

getDelay(): возвращает оставшуюся задержку элемента в миллисекундах.
isExpired(): возвращает true, если задержка элемента истекла.

#для_продвинутых

Читать полностью…

Senior Java Developer

Что такое BufferedInputStream?

BufferedInputStream — это класс ввода-вывода Java, который добавляет буферизацию к базовому потоку ввода. Это означает, что он хранит данные из базового потока в памяти, чтобы их можно было читать большими порциями. Это может повысить производительность ввода-вывода, особенно при чтении из больших файлов.

Как работает BufferedInputStream?

Когда создается BufferedInputStream, он создает внутренний буфер, размер которого можно указать при создании. Затем он читает данные из базового потока в буфер. Когда приложение запрашивает чтение данных из BufferedInputStream, он сначала читает их из буфера. Если буфер пуст, BufferedInputStream читает данные из базового потока и сохраняет их в буфере.

#для_продвинутых

Читать полностью…

Senior Java Developer

Всё, что будет на митапе, останется на митапе 💥

24 апреля в 19:00 встречаемся на Alfa Backend Stories #3 в Москве и онлайн.

Обсудим ИИ и другие инструменты, которые помогают в написании кода:

Андрей Свиридов, ведущий разработчик, поделиться советами о том, как повысить качество кода в приложениях

Дмитрий Сошников, технический руководитель лаборатории генеративного ИИ Школы дизайна НИУ ВШЭ и консультант Yandex Cloud, расскажет о современном искусственном интеллекте в облаке и покажет, как YandexGPT может использоваться разработчиками для решения прикладных задач

Антон Гращенков, в режиме реального времени покажет, как локально установить и настроить ИИ, а также как с его помощью писать код

Обещаем не стирать вам память, если вы придёте в костюме, в образе агентов фильма «Люди в чёрном»

Регистрация

Еще больше полезного в комьюнити: @alfabackend

erid: LjN8KawpU
Реклама. АО «Альфа-Банк». ИНН 7728168971.

Читать полностью…

Senior Java Developer

🚀 Участвуй в True Tech Hack от МТС и поборись за общий призовой фонд в 1 500 000 рублей. Регистрируйся.

Приглашаем разработчиков, специалистов по Data Science, менеджеров по продукту, дизайнеров. Соревноваться предстоит в одном из двух треков, чтобы улучшить жизнь людей с особыми потребностями.

🏠 Трек 1. Улучшение клиентского опыта витрины МТС Live для пользователей с особыми потребностями
⭐ Трек 2. Разработка голосового управления для МТС Финтех на основе искусственного интеллекта для людей с ограниченными возможностями

Как пройдет True Tech Hack:
🔸 26 апреля – открытие хакатона и Q&A-сессия
🔸 27 апреля–12 мая – чекпоинты с экспертами
🔸 12 мая – окончание приема проектов
🔸 14 мая – полуфинал, защита лучших решений и объявление финалистов
🔸 17 мая – финал в Москве

True Tech Hack – твой шанс получить новый опыт, выиграть приз и сделать наш мир доступней и удобней для всех. Регистрируйся на хакатон до 25 апреля по ссылке.

Читать полностью…

Senior Java Developer

#вопросы_с_собеседований
Чем отличается переопределение от перегрузки?

Переопределение — это возможность наследника предоставить свою реализацию метода, который уже предоставлен в родительском классе. При переопределении сигнатура метода (имя и параметры) в суперклассе и дочернем классе должны совпадать.

Перегрузка — это возможность определить несколько методов с одинаковым именем, но разными параметрами. При перегрузке сигнатура методов должна различаться по количеству, типу или порядку параметров.

Читать полностью…

Senior Java Developer

Разбираемся с MavenGate, новой атакой на цепочку поставок для Java и Android-приложений

Смотреть статью

Читать полностью…
Subscribe to a channel