seniorjavist | Unsorted

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

-

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

Subscribe to a channel

Senior Java Developer

❓Как пишутся языки программирования?

Узнайте на вебинаре в OTUS. Вебинар приурочен к старту онлайн-курса «Математика для программистов».

🔥На бесплатном вебинаре «Как пишутся языки программирования?» мы:
— рассмотрим, как разрабатываются языки программирования,
— построим LL(1)-анализатор алгоритмического языка программирования,
— обсудим ограничения LL(1)-анализаторов и некоторые приемы работы с LL(1)-грамматиками.

Ведущий — Евгений Тюменцев, опытный директор компании по разработке программного обеспечения.

После вебинара полный курс можно приобрести в том числе в рассрочку.

👉Для участия зарегистрируйтесь: регистрация

Нативная интеграция. Информация о продукте www.otus.ru

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

Senior Java Developer

SynchronousQueue

SynchronousQueue — это блокирующая очередь, в которой каждая операция вставки должна ждать соответствующей операции удаления другим потоком и наоборот.

В этом примере создается SynchronousQueue. Затем запускаются два потока: производитель и потребитель. Производитель пытается добавить значение в очередь с помощью метода put(). Этот метод заблокирует выполнение, пока другой поток не вызовет метод take(). Когда потребитель вызывает метод take(), он получает значение из очереди, и выполнение производителя продолжается.

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

Senior Java Developer

ExecutorService

ExecutorService — это API JDK, который упрощает запуск задач в асинхронном режиме. В общем смысле, ExecutorService автоматически предоставляет пул потоков и API для назначения задач.

Лучший вариант использования ExecutorService — это обработка независимых задач, таких как транзакции или запросы по схеме "один поток для одной задачи".

В этом примере создается ExecutorService с помощью фабричного метода Executors.newSingleThreadExecutor(). Затем запускается задача с помощью метода submit(). В конце работы ExecutorService завершается с помощью метода shutdown().

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

Senior Java Developer

✏️ 13 июля в 19:00 по МСК пройдёт бесплатный вебинар «Spring Security»

Что будет на трансляции:

— Spring Security. Зачем?
— Как подключить к проекту и использовать
— Основные настройки и аннотации

Ведущий: Сергей Полухин, Senior Java Developer, старший разработчик и руководитель разработки на проектах Infobip, Сбера, Evento, суперкассы, основатель PDev Studio.

🚀 Бесплатная регистрация: https://clck.ru/34vKct

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

Senior Java Developer

Exchanger

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

В этом примере кода MakeString создает строку, добавляя к ней символы от A до J, затем он обменивается этой строкой с UseString при помощи метода exchange().

UseString выводит полученную строку и обменивается пустой строкой с MakeString. Этот процесс повторяется три раза.

В третий раз MakeString вызывает exchange() с тайм-аутом в 250 миллисекунд, а UseString спит 500 миллисекунд перед вызовом exchange(). Из-за этого возникает исключение TimeoutException, которое обрабатывается в MakeString, и выводится сообщение “Timeout Occurred”.

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

Senior Java Developer

Spring Data JPA

Spring Data JPA — это модуль Spring Data, который фокусируется на использовании JPA для хранения данных в реляционной базе данных. Его наиболее привлекательной особенностью является возможность автоматического создания реализаций репозитория во время выполнения из интерфейса репозитория.

В этом примере мы создаем интерфейс UserRepository, который расширяет JpaRepository. Это позволяет нам использовать готовые методы для работы с базой данных, такие как save, findAll, delete и т. д. Кроме того, мы добавляем собственный метод findByUsername, который позволяет нам искать пользователя по его имени пользователя.
Сервис UserService использует UserRepository и мы можем использовать этот сервис в нашем контроллере, чтобы обрабатывать запросы от клиента и возвращать данные из базы данных.

Результатом работы этого кода будет возможность поиска пользователя по его имени пользователя в базе данных с помощью метода findByUsername из репозитория UserRepository.

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

Senior Java Developer

Spring Web Module

Spring Web Module является частью фреймворка Spring и включает в себя необходимые компоненты для создания веб-приложений, а также имеет встроенный контейнер Apache Tomcat.
Он может использоваться для создания различных веб-проектов на языке Java.

В этом примере мы создаем класс Application с аннотацией @SpringBootApplication, которая указывает на то, что это главный класс приложения Spring Boot. Мы также добавляем аннотацию @RestController, чтобы указать, что этот класс является контроллером.
Метод home() аннотирован как @GetMapping("/"), что означает, что он обрабатывает HTTP GET запросы к корневому URL-адресу (“/”). Этот метод возвращает строку “Hello World!”.
Результатом работы этого кода будет запуск веб-приложения, которое отображает строку “Hello World!” при обращении к корневому URL-адресу.

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

Senior Java Developer

Spring Context

Модуль Spring Context является частью фреймворка Spring и представляет собой IoC (Inversion of Control) контейнер. Он отвечает за управление объектами приложения и использует внедрение зависимостей для достижения инверсии управления.

Интерфейсы BeanFactory и ApplicationContext представляют контейнер Spring IoC.
- BeanFactory является корневым интерфейсом для доступа к контейнеру Spring и предоставляет базовые функции для управления бинами.
- ApplicationContext является под интерфейсом BeanFactory, поэтому он предлагает все функции BeanFactory, а также предоставляет разрешение сообщений, поддержку интернационализации, публикацию событий и контексты специфические для уровня приложения.

В этом примере мы создаем экземпляр ApplicationContext, используя AnnotationConfigApplicationContext и передавая ему класс конфигурации AppConfig.
Далее получаем бин MyService, вызывая метод getBean().
И наконец, вызываем метод getMessage() у экземпляра myService и выводим результат на экран.

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

Senior Java Developer

ThreadGroup

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

В этом примере мы создаем группу потоков с именем MyGroup и добавляем в нее два потока. Затем мы запускаем эти потоки и выводим информацию о группе с помощью метода list().

Результатом работы этого кода будет вывод информации о группе и сообщений от двух запущенных потоков.

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

Senior Java Developer

Интерфейс FilenameFilter

FilenameFilter — это интерфейс, который используется для фильтрации имен файлов. Он содержит один метод accept(File dir, String name), который принимает два параметра: объект типа File, представляющий каталог, и строку с именем файла. Метод возвращает true, если имя файла удовлетворяет условиям фильтрации.

Интерфейс FilenameFilter применяется для фильтрации файлов в директории. Для этого можно использовать методы list() и listFiles() класса File.

В данном примере создается объект типа File для директории C:\Users\User\Desktop\test. Создается объект типа FilenameFilter, который фильтрует файлы по расширению .txt. Затем получаем список файлов в директории с помощью метода list() и выводим список файлов на экран.

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

Senior Java Developer

SortedSet

SortedSet
— это интерфейс, который расширяет Set и описывает упорядоченное множество, отсортированное в возрастающем порядке или по порядку, заданному реализацией интерфейса Comparator. Он может использоваться для создания коллекций, которые хранят элементы в отсортированном виде.

В этом примере мы создаем объект SortedSet с использованием класса TreeSet, который реализует интерфейс NavigableSet, который поддерживает элементы в отсортированном по возрастанию порядке.
Затем мы добавляем несколько элементов в множество и выводим его на экран.

Обратите внимание, что элементы были добавлены в одном порядке, но при выводе на консоль элементы отображаются в отсортированном порядке.

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

Senior Java Developer

Аннотация Entity

Аннотация Entity используется для обозначения класса как entity-класса в Java Persistence API (JPA). Entity-класс представляет собой объект, который может быть сохранен в базе данных.

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

В этом примере мы определяем entity-класс Student, который представляет студента, а также используем аннотации Id и GeneratedValue для определения первичного ключа этого класса.
Этот класс имеет три поля: id, name и age, которые представляют идентификатор, имя и возраст студента соответственно. Затем определяем конструктор без аргументов (так как он требуется JPA) и конструктор с аргументами для удобства создания экземпляров этого класса.

После определения этого класса мы можем использовать его для сохранения и извлечения данных о студентах из базы данных с помощью JPA.

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

Senior Java Developer

👨‍💻 Хотите освоить лучшие инструменты по разработке микросервисной архитектуры?

Ответьте на 11 вопросов, чтобы проверить достаточно ли ваших навыков, чтобы строить архитектуру микросервисов и попасть на курс — «Microservice Architecture» от OTUS.

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

👉 Пройти тест https://otus.pw/F4YQ/

💣 После прохождения у вас будет возможность записаться на курс по спец. цене и оформить рассрочку. А также вы получите доступ к записям 27 открытых уроков курса.

Реклама. Информация о рекламодателе на сайте www.otus.ru.

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

Senior Java Developer

#вопросы_с_собеседований
Что такое каскадность? Как она используется в Hibernate?

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

Например, если у нас есть отношение между сущностями Person и Address, и без сущности Person сущность Address не имеет смысла. Когда мы удаляем сущность Person, наша сущность Address также должна быть удалена. Каскадность - это способ достижения этого.

В JPA/Hibernate имеются различные типы каскадности, которые определяют, какие операции должны распространяться на связанные сущности. Например, CascadeType.ALL распространяет все операции от родительской сущности на дочернюю.

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

Senior Java Developer

Получаем порядковый номер элемента в enum

Метод ordinal() используется с перечислениями (enum). Он возвращает порядковый номер константы перечисления, начиная с нуля.

В этом примере создается перечисление Colours с четырьмя константами: Red, Green, Brown и Yellow. В методе main создаются переменные для каждой из этих констант и выводятся их порядковые номера с помощью метода ordinal().

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

Senior Java Developer

Атомарные переменные в Java.util.concurrent

Пакет java.util.concurrent.atomic определяет классы, которые поддерживают атомарные операции над отдельными переменными. Все классы имеют методы get и set, которые работают как чтение и запись волатильных переменных. То есть set имеет отношение happens-before с любым последующим get на той же переменной.

Ниже перечислены все переменные, определенные в пакете: AtomicBoolean, AtomicInteger, AtomicLong, AtomicReference.


В этом примере создается AtomicInteger со значением 0. Затем значение инкрементируется с помощью метода incrementAndGet(). В конце значение получается с помощью метода get().

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

Senior Java Developer

Сравнили лучшие курсы по Java-разработке!

Tutortop
— образовательный маркетплейс №1, где представлено свыше 5000 курсов от более чем 300 школ и все их можно сравнить по рейтингу, цене и отзывам, а еще купить дешевле, чем напрямую 🔥

Подборка из топовых курсов для Java-разработчиков от tutortop:

Профессия «Java-разработчик» от Skypro Рейтинг 4.9 из 5.

Онлай-курс «Java-разработчик с нуля» от Нетологии. Рейтинг 4.8 из 5.

Профессия «Java-разработчик с гарантией трудоустройства» от Product Star. Рейтинг 4.8 из 5.

Десятки других курсов по программированию на любом языке можно найти и сравнить на tutortop!⚡️

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

Senior Java Developer

LinkedBlockingQueue

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

Эта очередь упорядочивает элементы в порядке FIFO. Новые элементы вставляются в хвост очереди, а операции извлечения из очереди получают элементы из головы очереди.

В этом примере создается LinkedBlockingQueue с емкостью 2. Затем в очередь добавляются два элемента. После этого пытаемся добавить третий элемент с помощью метода put(). Так как очередь заполнена, выполнение программы заблокируется на этой строке и не продолжится, пока не освободится место в очереди.

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

Senior Java Developer

ArrayBlockingQueue

ArrayBlockingQueue — это класс в пакете java.util.concurrent, который представляет собой ограниченную блокирующую очередь, реализованную на основе массива. Он упорядочивает элементы в порядке FIFO (First In First Out).
Попытки поместить элемент в полную очередь приведут к блокировке операции, ровно как и попытки взять элемент из пустой очереди.

Этот класс поддерживает необязательную политику справедливости для упорядочения. По умолчанию оно не гарантируется. Однако очередь, созданная с установленной справедливостью в значение true, предоставляет доступ к потокам в порядке FIFO. Справедливость обычно снижает пропускную способность, но уменьшает изменчивость.

В этом примере кода класс Producer добавляет числа от 0 до 4 в очередь с помощью метода put(). Consumer берет элементы из очереди с помощью метода take() и выводит их. Так как емкость очереди равна 2, то после добавления двух элементов в очередь Producer блокируется, пока Consumer не возьмет элемент из очереди.

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

Senior Java Developer

Spring Batch

Spring Batch предоставляет множество утилитных классов, которые уменьшают необходимость писать пользовательский код. Вместо этого вы можете сосредоточиться на бизнес-логике.

Один из примеров использования Spring Batch — это импорт данных из CSV-файла, преобразование их с помощью пользовательского кода и сохранение конечных результатов в базе данных.
Для этого можно использовать Spring Boot в качестве каркаса для приложения, встроенную базу данных H2, Lombok и Spring Batch версии 3.0.7.RELEASE.

Этот код создает класс Product с полями id, name, description и price, используя аннотации Lombok для генерации конструкторов, геттеров и сеттеров. Помимо этого необходимо создать таблицу в базе данных для хранения товаров и подготовить данные для загрузки в базу.

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

Senior Java Developer

Как создавать гибкие тестовые планы для JMeter с использованием Groovy DSL?

Ответ узнаете 11 июля в 20:00 на открытом уроке OTUS. Вебинар приурочен к старту онлайн-курса «Groovy Developer» и проведет его преподаватель Андрей Поляков, старший разработчик в Unlimint.

🔥На уроке мы рассмотрим:
— Что такое DSL и как он применяется при создании тестовых планов.
— Основные компоненты тестового плана JMeter.
— Как формировать тестовый план с помощью Groovy DSL.

После вебинара полный курс можно приобрести в рассрочку.

⚡️Для участия зарегистрируйтесь: https://otus.pw/e4AX/

Реклама. Информация о рекламодателе на сайте www.otus.ru.

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

Senior Java Developer

Верстаешь?

🔥 Оцени 7 причин пройти наш бесплатный интенсив по Frontend-разработке:

1. Сверстаешь веб-сайт на HTML + CSS;
2. Оживишь страницу с помощью JavaScript;
3. Используешь фронтенд-фреймворк Angular;
4. Подключишь Backend и загрузишь сайт на хостинг;
5. Получишь советы по доработке своего проекта;
6. Добавишь в портфолио 1 качественный проект;
7. Получишь в подарок чек-лист «45 мест для поиска работы».

А главное, ты проведёшь 7 дней в приятной компании Fullstack-разработчика с 10-летним стажем – Романа Чернова.

👉 Проскочить на интенсив бесплатно

Начинаем 11 июля.

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

Senior Java Developer

📣 Собираем энтузиастов технологической отрасли на регату!

Первое сообщество IT-экспертов в Сочи — IT-Club by Сбер выходит в море.

Мы ищем тех, кто горит идеями, жаждет ими делиться, реализовывать проекты, обмениваться энергиями, получать знания от экспертов индустрии. Возможно, мы ищем тебя!

Ты можешь работать в Сбере, а можешь — нет. Ты можешь жить в Сочи, а можешь приехать только на 15 июля. Нам важно лишь твоё соучастие в нашей идее.
Мы хотим 15 июля собрать единомышленников и с пользой погонять уютной айтишечкой на регатах.

Будет полезно, вкусно, незабываемо и.. бесплатно!

❗️Но есть нюанс. Потребуется предварительная регистрация по ссылке и опыт работы по специализации от 2 лет.

Не можешь 15-го? Следи за новостями в канале: планируем еще🙌

~ ~ ~ Будь на одной волне с нами!

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

Senior Java Developer

RandomAccessFile

RandomAccessFile — это класс пакета Java IO API, который позволяет перемещаться по файлу, читать из него или писать в него, как вам будет угодно. Он обеспечивает несущественный доступ к файлам и ведет себя как большой массив байтов, хранящихся в файловой системе. Вы можете использовать его для чтения и записи данных в файл.

В этом примере мы создаем экземпляр RandomAccessFile с режимом rw, который позволяет нам читать и записывать данные в файл. Затем мы записываем строку "Hello, World!" в файл с помощью метода writeUTF(). После этого мы перемещаем указатель файла в начало с помощью метода seek(0) и читаем строку из файла с помощью метода readUTF(). Наконец, мы выводим прочитанную строку на экран и закрываем файл.

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

Senior Java Developer

Serializable

Serializable — это маркерный интерфейс, который используется для сериализации объектов. Сериализация — это процесс преобразования объекта в последовательность байтов, которую можно сохранить в файле или передать по сети. Для того чтобы класс можно было сериализовать, он должен реализовывать интерфейс Serializable.

Классы, реализующие Serializable, могут быть сериализованы и десериализованы. При сериализации объекта все его поля (включая private) сохраняются в байтовом потоке. При десериализации объекта байтовый поток считывается и на его основе создается новый объект.

В данном примере создается класс Person, который реализует интерфейс Serializable. Создается объект этого класса и сериализуется в файл person.out. Затем этот же объект десериализуется из файла и выводится информация о нем на экран.

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

Senior Java Developer

#вопросы_с_собеседований
В чем разница между интерфейсами Comparable и Comparator?

Основное различие между интерфейсами Comparable и Comparator заключается в том, что в Comparable "зашит" один-единственный алгоритм сравнения объектов, в то время как Comparator представляет собой внешнюю заменяемую настройку. Архитектурно, Comparable - это интерфейс значения, в то время как Comparator - настройка контейнера.

Следует использовать Comparable, когда задается естественный (наиболее логичный) порядок. Например, для строк это регистрозависимое лексикографическое сравнение, а для длинных чисел - сравнение по значению. Во всех остальных случаях - без отдельного компаратора не обойтись.

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

Senior Java Developer

newSingleThreadExecutor()

Метод newSingleThreadExecutor() класса Executors создает исполнитель, который использует единственный рабочий поток, работающий с неограниченной очередью. Задачи гарантированно выполняются последовательно и в том порядке, в котором они были добавлены.

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

В этом примере мы создаем исполнителя с помощью метода newSingleThreadExecutor() и добавляем три задачи с помощью метода submit(). Затем мы вызываем метод shutdown() для завершения работы исполнителя.

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

Senior Java Developer

Класс "обертка" (wrapper class)

Класс-обертка (wrapper class) — это класс, который обеспечивает возможность использования примитивных типов данных как объектов. Каждый примитивный тип данных в Java имеет соответствующий класс-обертку: byte - Byte, short - Short, int - Integer, long - Long, float - Float, double - Double, boolean - Boolean и char - Character.

Классы-обертки используются, например, при работе с объектами коллекций, такими как ArrayList, где примитивные типы не могут быть использованы (список может хранить только объекты).

В этом примере мы создаем объекты классов-оберток для примитивных типов int, double, char и выводим значения этих объектов с помощью метода println().

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

Senior Java Developer

🔥 Готовы проникнуться волшебством алгоритмов?

📆 3 июля в 20:00 мск на открытом уроке у вас будет возможность познакомиться с настоящим маленьким чудом — алгоритмом поиска подстроки в строке Кнута-Морриса-Пратта.

🎥 Вебинар приурочен к старту онлайн-курса «Алгоритмы и структуры данных» в OTUS, и проведет его Евгений Волосатов, опытный программист.

🔵Автомат Кнута-Морриса-Пратта — это маленький, но очень непростой для понимания алгоритм, поэтому, чтобы в нём разобраться мы сначала построим конечный автомат для поиска шаблона, а потом оптимизируем его: заменим двумерную матрицу перехода префиксным Пи-вектором и узнаем, как решить эту задачу за линейное время.

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

👉 Зарегистрируйтесь на встречу: https://otus.pw/1OWk/

Нативная интеграция. Информация о продукте www.otus.ru

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

Senior Java Developer

Попади в команду Дзена всего за два дня!

8-9 июля Дзен приглашает backend-разработчиков на Hiring Days. Сейчас ребята ищут коллег в команды инфраструктуры и продуктовой разработки, нужен опыт от двух лет и готовность работать с высоконагруженным сервисом, в который приходит до 150 тысяч запросов в секунду и от 30 миллионов пользователей каждый день.

На Hiring Days всё как обычно, но без контестов и долгих ответов: вы оставляете заявку, с вами связываются организаторы — и, если всё хорошо, зовут на секции и высылают оффер за выходные.

Регистрация открыта до 5 июля. И да, всё онлайн!

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