seniorjavist | Unsorted

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

-

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

Subscribe to a channel

Senior Java Developer

Динамическое создание и выполнение метода в Java с использованием ASM

ASM позволяет динамически генерировать байт-код в Java. В этом примере создается класс с простым методом hello(), который выводит сообщение в консоль.

Создается класс HelloClass с методом hello().
Метод hello() динамически генерируется и выводит строку "Hello, ASM!" в консоль.

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

Senior Java Developer

⚙️ Динамическое изменение поведения объектов с помощью InvocationHandler и Proxy

В Java можно динамически изменять поведение объектов, используя InvocationHandler и Proxy.

🗣️ Это полезно для создания прокси-объектов, которые могут оборачивать существующие объекты и добавлять новые функции, такие как логирование, кеширование или контроль доступа.


InvocationHandler позволяет перехватывать вызовы методов у прокси-объекта и добавлять дополнительное поведение, такое как логирование.

Использование Proxy позволяет динамически создавать новый объект, который ведет себя как реальный объект, но с добавленным поведением.

Этот подход позволяет добавлять новое поведение к существующим объектам без изменения их кода, что делает его мощным инструментом для реализации аспектно-ориентированного программирования (AOP).

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

Senior Java Developer

➡️ Реализация шаблонного метода с использованием default методов в интерфейсах

Java 8 представила возможность добавлять методы с реализацией по умолчанию (default) в интерфейсы.

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


• default методы в интерфейсах позволяют задавать базовое поведение, которое можно переопределить в классах, реализующих интерфейс.

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

Senior Java Developer

➡️ JOOQ

JOOQ (Java Object Oriented Querying) — это мощная библиотека для построения SQL-запросов в Java с использованием объектно-ориентированного подхода. Она генерирует типизированный SQL-код на основе вашей базы данных, что позволяет избежать ошибок на этапе компиляции.

🗣 JOOQ — идеальный инструмент для тех, кто хочет сочетать мощь SQL с безопасностью и удобством объектно-ориентированного программирования в Java. Если вы еще не пробовали JOOQ, самое время начать!

🔗 Ссылочка на доку

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

Senior Java Developer

➡️ Stream API и Collectors.toMap

Stream API позволяет легко трансформировать коллекции. В данном примере используется Collectors.toMap для создания мапы, где ключами являются строки из списка, а значениями — их длины.

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

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

Senior Java Developer

⁉️ Spring Security — Alohomora для Java-разработчиков

Хотите освоить ключевой навык для Java-разработчика и обеспечить безопасность данных в своих проектах?

Ждем вас на открытом вебинаре 27 августа в 20:00 мск, где мы разберем:

- основы Spring Security;
- применение Spring Security для защиты данных и повышения безопасности проектов;
- применение магии «Alohomora» для открытия запертых дверей в мире безопасности.

Урок идеально подходит для Java- и Kotlin-разработчиков.

Встречаемся в преддверии старта курса «Разработчик на Spring Framework».
Все участники вебинара получат специальную цену на обучение!

👉 Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/czIbk7

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

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

Senior Java Developer

🔍 Поиск в глубину

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

Этот пример иллюстрирует обход в глубину для следующего графа:

0
/ \
1-----2
\
3
Начиная с вершины 2, алгоритм посетит вершины в следующем порядке: 2, 0, 1, 3.

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

Senior Java Developer

Ну как там с фичами?

Обсудите все рабочее и актуальное на JVM Day — конференции от Т-Банка для опытных Java- и Scala-разработчиков.

В программе — 15+ докладов. В блоке по Java расскажут про фичи, инструменты и фреймворки. А по Scala — разберут подходы к бэкенд-разработке с использованием экосистемы и практику функционального программирования.

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

Встреча пройдет 31 августа в штаб-квартире Т-Банка. Участие бесплатное. А регистрация тут

erid:2VtzquYEL7w
Реклама. АО "ТБанк", ИНН 7710140679, лицензия ЦБ РФ № 2673

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

Senior Java Developer

🔴 Новый сервис для тех, кто любит решать задачки и хочет подтянуть свои навыки в разработке.

Это CodeRun. В нём найдёте задачи по фронтенду, бэкенду, мобильной разработке, аналитике и машинному обучению. А ещё комьюнити, в котором можете и попросить помощи, и посоревноваться с участниками.

Подписывайтесь ✨ @yandex

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

Senior Java Developer

Нестатические блоки инициализации

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

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

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

Senior Java Developer

Thread.UncaughtExceptionHandler

Thread.UncaughtExceptionHandler — это интерфейс в языке программирования Java, который используется для обработки неотловленных исключений (uncaught exceptions) в потоках (threads). Когда исключение возникает в потоке и не обрабатывается внутри этого потока, оно передается обработчику неотловленных исключений, если такой обработчик был установлен.

Интерфейс Thread.UncaughtExceptionHandler имеет один метод:

void uncaughtException(Thread t, Throwable e);


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

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

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

Senior Java Developer

Метод split

Метод split() используется для разбиения строки на подстроки по заданному разделителю. Он принимает один параметр — регулярное выражение, по которому будет производиться разбиение строки и возвращает массив строк (String[]), содержащий подстроки.

Если в качестве разделителя передать пробел (" "), то строка разбивается по пробелам на отдельные слова. Также можно указать число в качестве второго параметра, это будет лимит количества элементов.

#это_база

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

Senior Java Developer

Поднимаем Кафку, не опуская рук. Отказоустойчивый кластер на вашем ПК

22 августа приглашаем вас на вебинар от Слёрма с Василием Калугиным, владельцем корпоративного сервиса Apache Kafka в АО «ЭР-Телеком Холдинг», чтобы поговорить про Кафку и научиться разворачивать кластер на своём железе.

На вебинаре:

🥹 Расскажем про язык Кафки: топики, партиции, продюсеры-консьюмеры, кластер, ноды.

🥹 Рассмотрим принципы её работы: как работают очереди сообщений, сколько должно быть консьюмеров для эффективной вычитки, как повысить надёжность кластера с помощью репликации данных.

🥹 И покажем, как развернуть кластер Кафки на своём ПК с 3 нодами, schema-registry и авторизацией.

Обычно в инструкциях кластер из 1 ноды, зукипера и 1 брокера, но это не наш путь. Учим работать с реальными исходными данными, а не на теоретических примерах 😉

😢И наш традиционный розыгрыш — один из участников вебинара получит бесплатное место на курс «Apache Kafka для разработчиков».

🫣22 августа в 14:00 мск
🫣Регистрация — по ссылке

Реклама ООО «Слёрм» ИНН 3652901451

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

Senior Java Developer

service()

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

Метод service() вызывается контейнером сервлетов (например, сервером приложений) для обработки запроса. Контейнер передает объекты ServletRequest и ServletResponse в метод service(). Разработчик сервлета должен реализовать этот метод, чтобы обработать запрос и сгенерировать ответ.

Обычно, разработчики переопределяют метод doGet() или doPost() вместо service(), в зависимости от того, какой тип HTTP-запроса они хотят обрабатывать. Метод service() в своей реализации делегирует вызовы соответствующим методам обработки запросов (doGet(), doPost(), и так далее).

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

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

Senior Java Developer

PipedOutputStream

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

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

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

Senior Java Developer

Какие три элемента – самые важные в жизни сотрудника внутри IT-компании?

включение в бизнес-процессы компании
развитие в компании
парадигма «мотивация – демотивация – увольнение/рост»

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

На конференции «OTUS CONF: поддержка и управление в IT-командах»
вы узнаете:

- Как лучше «подключать» удалённых сотрудников к бизнес-процессам организации
- Как давать обратную связь и как на неё реагировать без ущерба для профессиональных отношений
- Как повысить уровень вовлечённости сотрудников
- Как бороться с «тихими увольнениями»

Будет интересно тимлидам, руководителям в IT, эйчарам, HRBP

Присоединяйтесь, слушайте дискуссии экспертов в сферах HR и управления, задавайте вопросы

28 августа, 19:00 МСК
Бесплатно

➡️ Записаться на конференцию

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

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

Senior Java Developer

📚 Пройди тест на знание Java и получи доступ к 🌿🌿 открытым урокам по Spring

🕗 Два открытых урока можно посмотреть без регистрации и оценить формат обучения. Для доступа ко всем открытым урокам из курса «Разработчик на Spring Framework» от OTUS необходимо пройти входное тестирование: ответить на 21 вопрос и уложиться в тайминг.

📊 -Курс рассчитан на профессионалов с практическим опытом работы на Java.
- Мы будем 5 месяцев погружать вас в теорию и практику Spring Framework.
- Дадим 18 практических работ. Процесс review сдаваемой работы максимально приближен к тому, каким он мог быть на реальном проекте. Помимо этого, мы попросим вас сдать дипломную работу, каких скучных записанных занятий, только живые онлайн-лекции, интересные практические задачи и развернутая обратная связь от лучших экспертов ниши. 📅 Старт группы уже 30 сентября 2024г. Доступна рассрочка на обучение.

➡️ НАЧАТЬ ТЕСТИРОВАНИЕ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

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

Senior Java Developer

👩‍💻 Типы данных Java: идентификаторы и примитивы

Хотите глубже понять типы данных в Java? Ждем вас на открытом вебинаре 2 сентября в 20:00 мск,

где мы разберем:

➡️ как работать с идентификаторами и примитивами в Java;
➡️ как решать задачи, аналогичные экзаменационным, и набить руку на примерах;
➡️ все возникающие вопросы.

Урок идеально подходит для тех, кто хочет изучить Java вглубь, узнать тонкости и хитрости языка, а также для Java-разработчиков, стремящихся структурировать свои знания и лучше подготовиться к собеседованиям.

Спикер Дмитрий Коган — опытный разработчик, председатель совета предприятия в DXC, публицист, спортивный журналист и блогер.

Встречаемся в преддверии старта курса «Углубленное изучение языка Java».
Все участники вебинара получат специальную цену на обучение!

Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/czWeuE

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

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

Senior Java Developer

➡️ Apache Commons Lang

Apache Commons Lang — это библиотека, которая расширяет стандартную библиотеку Java, предоставляя множество утилит для работы со строками, числовыми операциями, рефлексией и другими общими задачами программирования.

🗣 Если вам часто приходится манипулировать строками, работать с числами или использовать рефлексию, Apache Commons Lang может стать незаменимым помощником.

🔗 Ссылочка на доку

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

Senior Java Developer

✔️ Работа с WeakHashMap для управления памятью

WeakHashMap — это специализированная реализация интерфейса Map, которая позволяет хранить ключи с использованием слабых ссылок.

Это означает, что если объект-ключ больше не имеет сильных ссылок в программе, он может быть очищен сборщиком мусора, что помогает управлять памятью более эффективно.

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

Senior Java Developer

➡️ Работа с EnumMap для эффективного хранения данных

EnumMap — это специализированная реализация интерфейса Map, которая используется для картирования значений перечислений (enum) на другие объекты.

🗣️ В отличие от обычных карт, EnumMap оптимизирован для работы с перечислениями, обеспечивая высокую производительность и компактность хранения.

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

Senior Java Developer

‼️Тест по React JS от OTUS

— Ответьте на 30 вопросов и проверьте, насколько хорошо вы знаете язык.
Сможете сдать — пройдёте на продвинутый онлайн-курс по React.js по спец. цене!

👉ПРОЙТИ ТЕСТ - https://vk.cc/czLmNM

Курс доступен в рассрочку.

❇️ Пройдите тест и получите:
✔️ Живое общение с экспертами
✔️Получите видео-курс по Git в подарок
✔️ Лучшие открытые уроки прошлых наборов курса
✔️ Продвинутые темы и практика на «боевых» задачах уровня Middle+
✔️ Скидку на прохождение онлайн курса «React.js Developer»

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

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

Senior Java Developer

Anonymous Inner Class

Anonymous Inner Class (Анонимный Внутренний Класс) — это специальный тип внутреннего класса, который определяется без имени и создается «на лету» внутри блока кода или выражения. Он является удобным способом создания классов, когда класс нужен только для реализации какого-то интерфейса или абстрактного класса, и нет необходимости создавать отдельный именованный класс.

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

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

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

Senior Java Developer

DateTimeFormatter

DateTimeFormatter — это класс в языке программирования Java, который используется для форматирования и разбора даты и времени. Он является частью пакета java.time, который был введен в Java 8 для улучшения работы с датами и временем.

DateTimeFormatter позволяет задавать желаемый формат вывода даты и времени, а затем преобразовывать объекты LocalDate, LocalTime, LocalDateTime, ZonedDateTime и другие объекты, представляющие дату и время, в строки с этим форматом, а также выполнять обратную операцию — парсить строки с датой и временем в объекты даты и времени.

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

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

Senior Java Developer

Ворвись в IT с Романом Сакутиным 

Онлайн-школы обещают небо в алмазах для всех начинающих айтишников. Но сколько в этом правды? Роман, айтишник с 10 летним опытом, сделал бесплатный симулятор разных айти профессий для полных новичков. 

В нём вы сможете пройти свой первый рабочий день под руководством наставника даже если вы абсолютный ноль и получить награду в конце. 

Играйте бесплатной в боте - /channel/break_into_it_bot?start=TG_IN_20082024

erid: LjN8KGWhZ

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

Senior Java Developer

One Weekend Offer для Java-разработчиков 👨‍💻

Если вы — Java-разработчик уровня Middle/Senior/Lead с опытом работы от 3 лет, то присоединяйтесь к команде Сбера!

31 августа – 1 сентября вы сможете пройти все этапы отбора, познакомиться с будущей командой и получить заветный оффер. Какие задачи будут в вашем планере?

▫️ Проводить декомпозицию и оценку задач.
▫️ Работать в тесной связке с аналитиками и разработчиками front-end.
▫️ Выполнять code review.
▫️ Проектировать архитектуру приложения.

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

Откликайтесь, и увидимся на выходных! 😉

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

Senior Java Developer

PriorityQueue

В Java можно использовать класс PriorityQueue для реализации приоритетной очереди. PriorityQueue предоставляет мин-кучу (min-heap), что означает, что на вершине всегда находится элемент с наименьшим значением при их извлечении. Если вам нужна макс-куча (max-heap), вы можете использовать класс Collections.reverseOrder() для изменения порядка сравнения элементов.

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

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

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

Senior Java Developer

Класс Assert

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

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

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

Senior Java Developer

Trie

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

Основные компоненты Trie:
Узел Trie (Trie Node): Каждый узел содержит ссылки на дочерние узлы, представляющие следующие символы в строке, а также флаг, указывающий, является ли этот узел концом строки.

Корень Trie (Trie Root): Вершина дерева, которая не содержит символ, но имеет ссылки на дочерние узлы, представляющие все возможные первые символы строк.

Операции Trie:
Вставка (Insertion): Для вставки строки в Trie, мы начинаем с корня и последовательно добавляем узлы для каждого символа строки. При этом, если узел уже существует для данного символа, мы просто переходим к следующему узлу. Последний узел строки помечается как конец строки.

Поиск (Search): Поиск строки в Trie осуществляется путем последовательного перехода от корня к листу, используя символы строки в качестве направляющих индикаторов. Если в какой-то момент мы достигаем узла, у которого нет соответствующего символа или строки, то строка отсутствует в Trie.

Поиск по префиксу (Prefix Search): Эта операция позволяет определить, существует ли какая-либо строка, начинающаяся с заданного префикса. Мы просто выполняем поиск, не обязательно дойдя до конца строки.

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

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

Senior Java Developer

Collections.shuffle

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

В примере на картинке создается список чисел от 1 до 10, затем вызывается Collections.shuffle(numbers), чтобы перемешать элементы списка. После этого выводится результат.

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

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

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