Изучаем Java. По вопросам сотрудничества: @seniorvladislav
FixedThemeResolverFixedThemeResolver
— это класс из пакета Spring Framework, который используется для установки фиксированной темы (или стиля) для веб-приложения. Тема определяет внешний вид компонентов пользовательского интерфейса, таких как цвета, шрифты, изображения и т. д.
Когда вы создаете веб-приложение с использованием Spring Framework, вы можете хотеть дать пользователю возможность выбора темы или стиля. FixedThemeResolver
предоставляет простой способ жестко задать тему в коде и применить ее ко всем страницам вашего веб-приложения.
#для_продвинутых
Метод doPost()
Метод doPost()
является одним из методов, используемых для обработки HTTP запросов в Java сервлетах. Сервлеты представляют собой Java классы, которые выполняют обработку HTTP запросов и генерацию HTTP ответов. doPost() используется для обработки HTTP POST запросов от клиентов.
Чтобы связать этот сервлет с определенным URL, вы должны настроить маппинг в файле web.xml вашего веб-приложения или с использованием аннотаций (если ваша версия сервлетов поддерживает аннотации).
#для_начинающих
👩💻Ваши приложения готовы к перегрузкам? А если вдруг лавина запросов?
На открытом вебинаре «Resilience4j. Bulkhead» вы узнаете, как защитить свои сервисы от сбоев. Разберём ключевые возможности Bulkhead и покажем, как ограничение ресурсов может спасти приложение.
Хотите углубить навыки бэкенд-разработки, повысить устойчивость своих микросервисов и освоить Resilience4j?
🗓 Всё это уже 12 февраля в 20:00 мск!
Спикер Сергей Петрелевич — опытный разработчик на Java и Kotlin.
➡️ Регистрируйтесь на открытый урок прямо сейчас! Участники получат скидку на большое обучение на курс «Java Developer. Professional»: https://otus.pw/vBLx/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Перегрузка метода
Перегрузка метода (method overloading) — это механизм, который позволяет вам определить несколько методов с одним и тем же именем в одном классе, но с разными параметрами. Это означает, что вы можете иметь несколько методов с одинаковыми именами, но с разными списками параметров внутри одного класса.
Преимущество перегрузки методов заключается в том, что она позволяет создавать более гибкий и удобный интерфейс для использования методов в вашем классе. Пользователи вашего класса могут вызывать один и тот же метод с разными аргументами, и Java будет определять, какой из перегруженных методов вызывать, основываясь на сигнатуре метода.
#для_начинающих
Байт-код
Байт-код (bytecode) — это промежуточный код, который создается компилятором при компиляции исходного кода. Вместо того, чтобы компилировать исходный код напрямую в машинный код для конкретной архитектуры процессора (как это делается, например, в языках C или C++), Java компилирует исходный код в байт-код, который представляет собой набор инструкций, понимаемых JVM.
#для_начинающих
Stream API
Stream API — это мощный инструмент, введенный в Java 8, который позволяет выполнять операции на потоках данных (sequences of elements) с использованием функциональных интерфейсов. Он предоставляет богатый набор операций для обработки и манипулирования данными в потоках, таких как фильтрация, сортировка, сопоставление, сведение и другие.
#для_начинающих
Инициализаторы
Инициализаторы — это блоки кода, которые выполняются при создании объекта класса, перед вызовом конструктора. Они позволяют выполнять дополнительную инициализацию объекта, которая не может быть выполнена внутри конструктора или требует какой-то логики до вызова конструктора.
В Java есть два типа инициализаторов: инициализатор экземпляра и статический инициализатор.
Оба типа инициализаторов позволяют выполнять код при создании объектов класса или загрузке класса, что может быть полезно для настройки и инициализации переменных и других ресурсов до начала использования объектов.
#для_продвинутых
Как используется класс Future?
Класс Future является частью пакета java.util.concurrent, и он используется для представления результата асинхронной операции или задачи, которая выполняется в фоновом потоке. Future позволяет вам управлять и получать результаты выполнения задачи в будущем, даже если она еще не завершилась.
#для_начинающих
Метод Arrays.asList(T... a)
Метод Arrays.asList(T... a)
используется для создания списка (List) на основе массива (array) или набора элементов переменной длины типа T. Этот метод принимает набор элементов типа T в качестве аргументов переменной длины (varargs) и возвращает список, который оборачивает переданные элементы массивом.
Обратите внимание, что список, созданный с помощью Arrays.asList
, имеет фиксированный размер, и вы не можете добавлять или удалять элементы из него. Попытки изменить размер списка вызовут исключение UnsupportedOperationException
.
#для_продвинутых
Кэширование
Кэширование (caching) — это механизм хранения временных данных в оперативной памяти или на диске, чтобы улучшить производительность приложения. Кэширование позволяет избежать повторного вычисления или запроса данных, которые уже были получены или рассчитаны ранее.
#для_продвинутых
Java varargs
Java varargs (variable arguments) — это механизм, предоставляемый Java, который позволяет методу принимать переменное количество аргументов одного типа. Он позволяет передавать любое количество аргументов заданного типа в метод, без явного указания массива аргументов.
Для объявления переменного количества аргументов в Java используется троеточие (...) после типа данных аргумента в определении метода.
#для_продвинутых
Отложенная инициализация
Отложенная инициализация — это паттерн проектирования, который позволяет отложить создание объекта до момента его реального использования. Он полезен, когда создание объекта требует значительных ресурсов или происходит в условиях, когда объект может не понадобиться.
В Java есть несколько способов реализации отложенной инициализации. Два наиболее распространенных подхода — это использование двойной проверки и использование внутреннего класса. На картинке мы рассмотрели использование двойной проверки (Double-Checked Locking).
#для_продвинутых
Блочная область видимости
Блочная область видимости (block scope) в Java - это область видимости, определенная фигурными скобками внутри метода, конструктора или другого блока кода, такого как условный оператор, цикл или блок try-catch
.
Переменные, объявленные в блочной области видимости, могут использоваться только в этой области видимости и любых вложенных областях видимости. Когда управление программой покидает блок кода, переменные, объявленные в этом блоке, выходят из области видимости, и их значения больше не доступны.
#для_начинающих
Итератор
Итератор — это объект, который предоставляет доступ к элементам коллекции (например, списку, множеству или массиву) и позволяет последовательно перебирать эти элементы без необходимости знать внутреннюю структуру коллекции. Итераторы используются для упрощения работы с коллекциями и обеспечивают абстракцию доступа к элементам.
#для_начинающих
Процедурное программирование
Процедурное программирование в Java основывается на использовании процедур (функций) для разделения программы на отдельные блоки кода, которые могут быть вызваны из других частей программы. Процедурное программирование подразумевает последовательное выполнение инструкций в программе, где основными элементами являются процедуры и данные.
В Java процедуры реализуются с помощью методов. Методы в Java объявляются внутри классов и могут выполнять определенные действия или возвращать результаты. Они могут принимать аргументы и иметь локальные переменные.
#для_продвинутых
🔒 1219 ГБ платного контента для JAVA программистов выложили БЕСПЛАТНО
Получите доступ к библиотеке знаний от FAANG School только в течение 24 часов:
– Пошаговая RoadMap по Java
– Redis - 5 улучшений для твоего пет-проекта
– Мануал по Docker. Основные команды и концепции
– Микросервисы. Вопросы с собеседований
– Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз
– Desk setup. Подборка аксессуаров для комфортной работы
– Шпаргалка по Kafka
– Шпаргалка по Spring с разбором паттерна Наблюдатель
– Инструкция по работе с Git
– Подробный гайд, как найти работу в IT без опыта
– Подборка платформ с вакансиями для java-разработчиков
- Шпаргалка по основным командам SQL
Свежее пополнение - гайд «Топ пет-проектов с AI». Сборник идей, который поможет создать пет-проект не только для портфолио, но и для пассивного дохода 🫢
Это возможность для джуна продвинуться по карьерной лестнице со скоростью лифта. Переходи по ссылке и забирай.
Менеджеры компоновки
Менеджеры компоновки (Layout Manager) в Java используются для управления размещением компонентов в контейнерах, таких как JFrame, JPanel, или другие контейнеры Swing. Они обеспечивают автоматическое распределение компонентов в контейнере в соответствии с определенными правилами размещения.
#для_продвинутых
Что такое JIT компиляция?
JIT (Just-In-Time) компиляция — это техника оптимизации кода, которая используется для улучшения производительности приложений. Когда Java-программа запускается, она сначала компилируется в промежуточный байт-код (bytecode), который является платформонезависимым представлением кода. Затем этот байт-код выполняется виртуальной машиной Java (JVM).
JIT-компиляция происходит во время выполнения программы. Когда JVM выполняет байт-код, она анализирует и оптимизирует его на лету, переводя его в нативный машинный код, который может выполняться более эффективно на конкретной аппаратной платформе. Это позволяет улучшить производительность приложений, так как оптимизации выполняются с учетом конкретных характеристик и возможностей аппаратного оборудования, на котором работает JVM.
#для_продвинутых
Хотите создать устойчивое к нагрузкам масштабируемое приложение?
Ключевой элемент при проектировании микросервисов – правильная интеграция брокеров сообщений с микросервисной архитектурой.
На открытом вебинаре «Как эффективно использовать брокеры сообщений в микросервисной архитектуре?» вы научитесь:
- Повышать производительность системы, настраивать взаимодействие между микросервисами, правильно работать с очередями сообщений
- Связывать различные слои приложений с помощью брокеров сообщений
- Проектировать решения с учётом масштабируемости и отказоустойчивости
- Эффективно управлять инфраструктурой сообщений RabbitMQ и Apache Kafka
А также увидите примеры кода и познакомитесь со случаями использования брокеров сообщений.
Будет интересно: бэкенд и фулстек-разработчикам, системным аналитикам, девопс-инженерам.
Спикеры: Сергей Прощаев, Java-разработчик в ПАО «Сургутнефтегаз».
Бонус! Всем участникам – скидка 5% и эксклюзивные материалы от спикера.
6 февраля, 19:00 МСК
Записаться - https://otus.pw/DA4e/?erid=2W5zFJ7dumS
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
🔧 Rust: язык для тех, кто ценит надёжность и производительность!
На открытом уроке «Разбираем анатомию парсера на Rust» вы погрузитесь в тонкости разработки, исследуете ключевые компоненты парсера и узнаете, как Rust делает код безопасным.
Что разберем:
— Принципы работы и архитектуру парсера.
— Владение, заимствование, обработку ошибок: практикуем Rust.
— Как строгая типизация помогает избежать ошибок ещё до компиляции.
📅 Встречаемся 11 февраля в 🕗 20:00 мск. Урок проводится в преддверии старта курса «Rust Developer. Professional», а участники получат 🎁 скидку на обучение.
🔴Не упустите возможность освоить Rust на профессиональном уровне и шагнуть в мир востребованной разработки: https://otus.pw/OtdVS/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Вебинар «Как стать облачным экспертом и повысить свою ценность на ИТ-рынке»
Узнайте, как повысить экспертность и увеличить свою ценность для ИТ-рынка.
Дата и время: 14 февраля, 17:00.
Основные темы вебинара
·Российские облачные технологии
·Облако в личных ИТ-проектах
·Программа бесплатного курса Сloud Native DIY Advanced
·Продвижение в карьере
·ИТ-сообщество
Вебинар будет полезен ИТ-специалистам middle- и senior-уровня.
Регистрируйтесь, если хотите разрабатывать стратегии миграции в облако, управлять ИТ-инфраструктурой как кодом, работать с базами данных и кластерами Kubernetes, использовать инструменты кибербезопасности для защиты инфраструктуры.
Бонус для участников
Зарегистрируйтесь на вебинар, пройдите курс и получите сертификат до 25 февраля, и мы выдадим вам мерч и бонусы на работу с VK Cloud, а также пригласим на экскурсию в первый офис VK в Доме Зингера в Санкт-Петербурге.
Зарегистрироваться
Экземплярный инициализатор
Экземплярный инициализатор — это блок кода внутри класса, который выполняется каждый раз при создании нового экземпляра класса. Он используется для инициализации экземплярных переменных.
#для_продвинутых
Как обеспечить стабильность при высокой частоте запуска тасок
Рассказываем в новой статье от бэкенд-разработчика Ильи Григорьева
Запуск частых тасок по расписанию — такая нетривиальная задача встала при разработке одной из функциональностей сервиса для видеовстреч Яндекс Телемоста.
Осложнялась ситуация тем, что запуск требовался с посекундной точностью и максимальной отказоустойчивостью — даже небольшой перерыв вёл к неработоспособности сервиса.
Как решали проблему, какие возможности и ограничения у выбранного решения — читайте в статье.
Читайте статью на Хабре здесь
Больше материалов о технологиях в Яндекс 360: https://ya.cc/t/OZ4inE495pU96D
Алгоритм Кнута – Морриса – Пратта
Алгоритм КМП осуществляет поиск текста по заданному шаблону. В этом поиске сначала компилируется заданный шаблон. Компилируя шаблон, мы пытаемся найти префикс и суффикс строки шаблона. Это поможет в случае несоответствия – не придётся искать следующее совпадение с начального индекса.
Вместо этого мы пропускаем часть текстовой строки, которую уже сравнили, и начинаем сравнивать следующую. Необходимая часть определяется по префиксу и суффиксу, поэтому известно, какая часть уже прошла проверку и может быть безопасно пропущена.
#для_продвинутых
🦾👩💻🦾 Вы уже опытный Java-разработчик, но хотите освоить глубины JVM и оптимизацию приложений в облаке?
Курс «Java Developer. Advanced» — ваш билет к продвинутым технологиям, которые востребованы в крупных проектах.
✔️ На курсе вы научитесь профилировать приложения, настраивать GC, работать с реактивными подходами и мониторить метрики в Grafana. Пройдете весь путь от JVM до Kubernetes, научитесь анализировать «горячие точки», оптимизировать приложения и настраивать интеграции с Prometheus.
Представьте, как ваши навыки открывают двери в серьёзные проекты с высокими требованиями. Наши преподаватели-практикующие эксперты поделятся опытом, а диплом OTUS станет отличным усилением к вашему резюме.
➡️ Это последний шанс попасть в группу! Регистрируйтесь сейчас и получите скидку: https://otus.pw/bAsY/
🎫 ПРОМОКОД: Java_adv
Начните обучение со скидкой, подробности у менеджеров.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👩💻 Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на продвинутый курс "Java Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса курса
За 6 месяцев обучения вы научитесь создавать современные Java-приложения, освоите Spring WebFlux и Kafka, а также разберётесь в работе JVM изнутри.
Вас ждёт практическая работа с кодом, детальные разборы, ревью от экспертов и подходы, позволяющие писать эффективный и чистый код.
Начните свой путь к уровню Middle+!
➡️ ПРОЙТИ ТЕСТ: https://otus.pw/DXu5/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Офер в Яндекс для опытных бэкендеров за два дня
15–16 февраля приглашаем бэкендеров с опытом работы от пяти лет получить офер в Яндекс через multitrack за 2 дня. Достаточно пройти несколько технических секции 15 февраля, чтобы уже 16-го получить офер и выбрать три команды, к которым вам было бы интересно присоединиться.
Как правило, за несколько собеседований сложно понять, подходит ли вам команда и наоборот. Multitrack позволит вам поработать в трёх разных командах Яндекса и выбрать подходящую. Вы сможете погрузиться в рабочие процессы, познакомиться с будущими коллегами и понять, с какими задачами и технологиями хотите работать.
Узнать подробности и зарегистрироваться.
События и слушатели
В Java события и слушатели используются для обработки событий, которые возникают в программе. События могут быть связаны с действиями пользователя, такими как клик мыши, нажатие клавиши или изменение текста в поле ввода, или с другими действиями, такими как завершение работы потока или получение данных из сети.
Слушатели (Listeners) в Java - это интерфейсы, которые позволяют регистрировать обработчики событий. Когда происходит событие, соответствующий слушатель вызывает метод обработки события, который реализуется классом, который зарегистрировал слушатель.
😱 Цукерберг сокращет мидлов в 2025 и заменяет их на ИИ.
Хочешь оставаться востребованным на рынке труда? Прокачивай сеньорность.
Один из ключевых навыков, отличающих сеньора от мидла — умение проектировать архитектуру. А самая популярная книга по архитектуре систем — это «Высоконагруженные приложения» Мартина Клепманна, она же книга с кабанчиком.
Моя знакомая Женя Янченко, java-разработчик и тимлид, делает регулярные конспекты всех глав кабанчика в своем канале.
Подробные разборы репликации, шардирования, транзакций. С примерами, схемами, картинками.
Второй ключевой навык сеньора — это софт-скиллы. Поэтому Женя активно делится историями из своего опыта, дает рекомендации по собесам и отвечает на вопросы подписчиков. В комментах к таким постам кипят обсуждения, люди делятся опытом подобных ситуаций.
Оглавление конспектов «кабанчика»
Сравнение Kafka и RabbitMQ
Зачем нужны микросервисы
Как попросить повышение
Про манипуляции менеджеров
Фейлы на пути изучения алгоритмов
В этом канале даже джуны становятся сеньорами 😏
👀 Подписывайтесь, это самый простой способ прокачать свои скиллы: @jane_yanchenko
NavigableSetNavigableSet
— это расширенный интерфейс Set
, который позволяет работать с элементами множества в отсортированном порядке и выполнять различные операции поиска и навигации. NavigableSet
в Java предоставляет ряд методов для работы с элементами в порядке возрастания или убывания.
#для_продвинутых