Изучаем Java. По вопросам сотрудничества: @seniorvladislav
🤖 Пройди тест по Rust и проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на курс "Rust Developer. Professional" от OTUS по специальной цене + получишь доступ к записям открытых уроков курса
За 5 месяцев обучения ты разберёшь ключевые особенности Rust и сможешь не только разрабатывать сложные программные продукты, но и в целом лучше проектировать ПО.
➡️ ПРОЙТИ ТЕСТ: https://otus.pw/wzOH/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
final static переменные
final static переменные — это константы класса. Они имеют следующие особенности:
- Объявляются с модификаторами final и static, то есть являются финальными (немодифицируемыми) и принадлежат классу, а не объекту.
- Инициализируются при загрузке класса и имеют одно значение для всех объектов данного класса.
- Хранятся в памяти в одном экземпляре, что экономит память.
- Доступ к ним осуществляется через имя класса, а не объекта.
Подытожив, final static переменные используются для объявления констант, значения которых известны во время компиляции и не меняются в runtime. Это позволяет оптимизировать код и данные.
ThreadPool
ThreadPool (пул потоков) представляет собой механизм, который позволяет эффективно управлять и переиспользовать потоки для выполнения задач в многозадачных приложениях. Он позволяет создавать и управлять пулом потоков, избегая накладных расходов на создание и уничтожение потоков при выполнении задач.
#для_начинающих
ThreadPoolExecutor
ThreadPoolExecutor — это класс в Java, который предоставляет управление пулами потоков для выполнения асинхронных задач. Он является частью пакета java.util.concurrent
, который предоставляет различные средства для работы с параллельными и асинхронными задачами.
#для_продвинутых
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 используется троеточие (...) после типа данных аргумента в определении метода.
#для_продвинутых
Маршалинг
Маршалинг (marshaling) — это процесс преобразования объектов в другой формат, который может быть использован для передачи данных через сеть, сохранения на диске или для других целей. Он также известен как сериализация. Обратным процессом является демаршалинг (unmarshaling или десериализация), который восстанавливает объекты из сериализованных данных.
#для_продвинутых
🦾Хардкорный тест по языку Java🦾
📌Пройдите тест из 20 вопросов и проверьте, насколько вы готовы к обучению на углубленном курсе «Java Developer. Professional» от OTUS.
Сможете сдать - пройдете на курс по спеццене!
💻 В программе курса — все актуальные инструменты, необходимые Middle+ разработчику на Java. Возможна рассрочка.
Секретный промокод для скидки на обучение в 5% - Javapro-02
⏰ Время прохождения теста ограничено 30 минут
👉ПРОЙТИ ТЕСТ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Что такое «thread-safe»?
«Thread-safe» (безопасность в многопоточной среде) означает, что определенный код или объект может корректно и безопасно использоваться в многопоточной среде, где несколько потоков одновременно могут обращаться к этому коду или объекту.
Основная проблема, с которой сталкиваются в многопоточной среде, — это состояние гонки (race condition), когда несколько потоков могут изменять общие данные и конфликтовать между собой, что может привести к непредсказуемому и некорректному поведению программы.
#для_продвинутых
Array или ArrayList?
Выбор между Array
и ArrayList
зависит от специфики задачи Java, которую вы хотите решить. Запомните следующие особенности этих типов:
— Массив имеет фиксированный размер, и память для него выделяется во время объявления, а размер ArrayList
может динамически меняться.
— Массивы Java работают намного быстрее, а в ArrayList
намного проще добавлять и удалять элементы.
— При работе с Array
скорее всего возникнет ошибка ArrayIndexOutOfBoundsException
.— ArrayList
может быть только одномерным, когда массивы 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