Как вызвать один конструктор из другого?
В Java, вы можете вызвать один конструктор из другого с использованием ключевого слова this. Это делается с целью избежать дублирования кода в разных конструкторах класса.
В приведенном выше примере конструктор по умолчанию вызывает конструктор с параметром, передавая ему значение 0.
Обратите внимание, что вызов другого конструктора должен быть первым оператором в теле конструктора. Это обязательное правило.
#для_начинающих
«Клиент-серверная архитектура на Java» — это серьёзный апгрейд Java-скиллов. Если хочешь разобраться в тонкостях клиент-серверных приложений и не бояться сложных задач — тебе на этот курс!
Курс построен на формате живых вебинаров и домашних заданий с проверкой.
Старт курса - 25 января
Вам доступно небольшое демо-занятие для проверки знаний, чтобы убедиться, что курс тебе точно по силам.
Программа курса охватывает ключевые аспекты разработки клиент-серверных приложений на Java, включая:
☕️ Многопоточность в Java: изучение классов Thread и Runnable, использование атомарных типов данных, потокобезопасных коллекций и паттерна пула потоков для эффективной синхронизации и оптимизации задач.
🖥 Разработка графических интерфейсов: создание GUI с помощью библиотек Swing и JavaFX, применение архитектуры MVC и разметки на FXML для разработки удобных пользовательских интерфейсов.
🗄 Работа с базами данных: взаимодействие с базами данных через JDBC API, создание запросов, управление метаданными, предотвращение SQL-инъекций и интеграция этих знаний в разработку распределённых веб-приложений на Java с использованием сервлетов и фреймворков, таких как JSF.
Получить демо-доступ к курсу
Реклама. Информация о рекламодателе
👩💻 «OpenAPI + Spring».
Приглашаем на открытый урок, где мы разберем:
✔️ Что такое OpenAPI и для чего она нужна.;
✔️ Генерация спецификаций;
✔️Интеграция OpenAPI в Spring-приложения;
✔️Советы по масштабируемости и поддержке.
🗓 23 января в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework»
🔗 Ссылка на регистрацию : https://otus.pw/EsCe/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Логирование данных
Уже давно прошло то время, когда для наблюдением за работой программы надо сидеть на стуле и всматриваться в консоль, сейчас эту работу делают логеры.
Суть логеров в записи данных из программы, дополняя её такими данными как время, место, уровень и так далее.
Самым популярным логером на данный момент является Log4J, установить который можно с помощью Maven/Gradle.
#для_продвинутый
Как разделить строку на части?
В Java можно разделить строку на части с помощью метода split()
класса String
. Метод split()
разбивает исходную строку на массив строк, используя заданный разделитель.
В этом примере исходная строка «Это пример строки для разделения» разбивается на части с помощью пробела в качестве разделителя. Однако, если у вас есть другой разделитель (например, запятая или точка с запятой), просто замените значение переменной delimiter
на соответствующий разделитель в вашем случае.
#для_начинающих
👩💻 Как сделать Java-приложения быстрее и эффективнее?
Асинхронное программирование — must-have для современных приложений. Хотите узнать, как использовать NIO2 для максимальной производительности?
🗓 20 января в 20:00 мск — откроем двери в мир Java NIO2! Разберём основы, научим писать асинхронный код и раскроем секреты пропускной способности приложений.
Успейте записаться, чтобы не упустить возможность освоить продвинутые инструменты Java.
А еще участники вебинара получат скидку на обучение на курсе «Java Developer. Advanced».
➡️ Регистрация на вебинар: https://otus.pw/btR5/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Интерфейс Supplier
Интерфейс Supplier — это функциональный интерфейс в языке программирования Java, определенный в пакете java.util.function. Он представляет собой интерфейс, который может использоваться для предоставления значений, но не принимает аргументов. В этом интерфейсе есть один метод, который не принимает аргументов и возвращает значение.
Метод Supplier:
T get();Где
T
-- это тип возвращаемого значения.Supplier
может быть полезным, когда вам нужно получить значение, но не требуется передавать какие-либо аргументы для его получения. Этот интерфейс часто используется, например, в лямбда-выражениях и стримах для предоставления значений.В чем отличия между TreeSet и HashSet?
Основное отличие между TreeSet
и HashSet
заключается в том, что TreeSet
хранит элементы в отсортированном порядке, в то время как порядок хранения элементов в HashSet
не определен. TreeSet
также обеспечивает быстрый поиск и извлечение элементов в отсортированном порядке.
#для_начинающих
#вопросы_с_собеседований
Что такое рефлексия в Java и в каких ситуациях она используется?
Ответ ⬇️
Рефлексия в Java — это механизм, который позволяет программе исследовать или изменять свою собственную структуру во время выполнения. С помощью рефлексии можно динамически создавать объекты, вызывать методы, получать информацию о классах, полях и методах, что особенно полезно при создании библиотек, фреймворков или инструментов для тестирования. Однако, из-за своей динамической природы, рефлексия может замедлить выполнение программы и нарушить безопасность, поэтому её использование должно быть обдуманным.
Пример использования ⚙️
import java.lang.reflect.Method;Читать полностью…
public class ReflectionExample {
public void sayHello() {
System.out.println("Hello, world!");
}
public static void main(String[] args) throws Exception {
// Получаем класс через рефлексию
Class<?> clazz = ReflectionExample.class;
// Создаем экземпляр класса
Object instance = clazz.getDeclaredConstructor().newInstance();
// Получаем метод sayHello
Method method = clazz.getMethod("sayHello");
// Вызываем метод через рефлексию
method.invoke(instance); // Вывод: Hello, world!
}
}
➡️ Использование библиотеки Takari для создания плагинов Maven
Takari — это библиотека, предназначенная для упрощения разработки Maven-плагинов. Она предоставляет удобные инструменты для создания высокопроизводительных плагинов с минимальным количеством кода.
➡️ Использование блока try-with-resources
для автоматического управления ресурсами в Java
Блок try-with-resources
обеспечивает автоматическое закрытие ресурсов, таких как файлы, потоки, сокеты и другие, которые требуют освобождения после использования. Это упрощает управление ресурсами и помогает избежать утечек.
🗣 Полезно для работы с любыми ресурсами, которые реализуют интерфейс AutoCloseable.
👩💻 Обучение для тех, кто хочет освоить Java на профессиональном уровне — JVM с профилированием и оптимизацией приложений в облаках.
Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на продвинутый курс "Java Developer. Advanced" от OTUS по специальной цене.
👉 ПРОЙТИ ТЕСТ: https://otus.pw/xqoT/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
⚡️ В сети начали массово сливать курсы и книги известных онлайн школ
Вот отсортированная база с тонной материала(постепенно пополняется):
БАЗА (4687 видео/книг):
(363 видео, 87 книги) — Python
(415 видео, 68 книги) — Frontend
(143 видео, 33 книги) — ИБ/Хакинг
(352 видео, 89 книги) — С/С++
(343 видео, 87 книги) — Java
(176 видео, 32 книги) — Git
(293 видео, 63 книги) — C#
(174 видео, 91 книги) — DevOps
(167 видео, 53 книги) — PHP
(227 видео, 83 книги) — SQL/БД
(163 видео, 29 книги) — Linux
(107 видео, 43 книги) — СисАналз
(181 видео, 32 книги) — Go
(167 видео, 43 книги) — Kotlin/Swift
(112 видео, 24 книги) — Flutter
(137 видео, 93 книги) — DS/ML
(113 видео, 82 книги) — GameDev
(183 видео, 37 книги) — UI/UX
(129 видео, 73 книги) — QA
(213 видео, 63 книги) — Rust
(121 видео, 24 книги) — Ruby
Скачивать ничего не нужно — все выложили в Telegram
➡️ Использование библиотеки Agrona для высокопроизводительных структур данных в Java
Agrona — это библиотека, предоставляющая эффективные структуры данных и примитивы для высокопроизводительных приложений. Она включает очереди, кольцевые буферы, а также инструменты для работы с памятью и сетевыми операциями.•
Agrona оптимизирует использование памяти и ускоряет обработку данных.•
Идеальна для приложений с высокими требованиями к производительности.
🔗 Ссылочка на доку
Обработка изображений
Думаем, каждый согласится, что подавать информацию в виде изображения лучше всего для восприятия. Однако сначала нужно сгенерировать такое изображение, и на этот случай в Java есть множество инструментов.
К примеру, класс java.awt.BufferedImage который позволяет обрабатывать изображения каким угодно способом, хоть попиксельно.
Чтобы загрузить изображение из файла используют ImageIO::read, для записи — ImageIO::write.
#для_продвинутых
Класс Properties
Класс Properties
— это подкласс Hashtable
. Он используется для хранения списков значений, в которых ключ является String
, а значение также является String
.
Класс Properties
используется множеством других классов. Например, это тип объекта, возвращаемый System.getProperties()
, когда тот получает внешние значения.Properties
определяет следующие переменную экземпляра. Эта переменная содержит список свойств по умолчанию, связанный с объектом Properties
.
Следующая программа показывает несколько методов, поддерживаемых этой структурой данных.
Методы и классы, объявленные Properties
, можно посмотреть здесь.
#для_продвинутых
Класс Stack
Класс Stack
является подклассом класса Vector. Стек является линейной структурой данных, где элементы добавляются и удаляются в соответствии с принципом «последним вошел, первым вышел» (LIFO — Last-In, First-Out).
В Java, класс Stack
был часто использован в более ранних версиях для работы со стеками, но в более современных версиях рекомендуется использовать класс Deque (Double-ended queue) из пакета java.util
. Deque предоставляет методы для работы как со стеком, так и с очередью.
#для_продвинутых
Когда использовать рефлексии?
Уверен многих кто только начал учить ReflectionAPI удивили возможности этого инструмента. Но работа с ним довольно тяжёлая для системы, поэтому лучше использовать её в крайних случаях.
К примеру — обработка класса с аннотациями (пример выше). Извлекая аннотации из объектов класса, можно обрабатывать её каким угодно образом.
Также рефлексии часто применяют в тестировке, а именно для приватных полей и методов. Достаточно получить метод из класса, задать method.isAccessible(true)
и можно вызывать его как публичный.
#для_начинающих
Бесплатный интенсив: Java-разработчик: старт в профессии с нуля.
📆 Когда: 20-21 января в 19:00 по мск.
За два дня интенсива в прямом эфире, под руководством опытного Java-разработчика, вы сможете:
✔️ Изучить базовые конструкции языка — переменные, типы данных, условные конструкции, циклы, импорты библиотек.
✔️ Написать свой первый проект и определить, подходит ли вам профессия разработчика.
✔️ Создать консольное приложение и протестировать собственного бота.
✔️ Узнать ответы на интересующие вас вопросы.
✔️ Получить доступ к закрытому профессиональному сообществу.
🎁 Подарки для участников
интенсива: гайд «Как заговорить на сленге IT-специалистов», карта компетенций начинающего Java-разработчика!
Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid:2W5zFJA7L6L
Класс DataOutputStream и его методы
Поток DataOutputStream
позволяет записывать примитивные данные в исходный код.
Если используйте объект DataOutputStream
, то у Вас есть под рукой вспомогательные методы, которые можно использовать для записи потока или для выполнения других операций над потоком.
Все перечисленные методы можно просмотреть здесь.
#для_продвинутых
Метод flatMap
Метод flatMap
используется в контексте работы с потоками (streams) в пакете java.util.stream
. Он представлен в интерфейсе Stream<T> и предназначен для преобразования элементов потока, когда каждый элемент может быть преобразован в ноль или один элемент другого потока.
Метод flatMap
применяет функцию mapper
к каждому элементу исходного потока и «разворачивает» (сплющивает) поток элементов в один объединенный поток, игнорируя нулевые потоки, которые могут быть результатом преобразования.
#для_продвинутых
LeetCode теперь в Telegram!
LeetCode — это сайт, который позволяет быстро готовиться к техническим собеседованиям по программированию. Там публикуются задачи с собеседований в Google и Microsoft с решениями.
Подписывайтесь: @leetcode
➡️ Использование библиотеки JDBI3 для работы с базами данных
JDBI3 — это легковесная библиотека для удобного взаимодействия с базами данных. Она позволяет выполнять SQL-запросы и маппить результаты прямо на объекты Java.•
JDBI3 упрощает работу с базами данных благодаря поддержке fluent-интерфейса.
🔗 Ссылочка на доку
Приглашаем вас на открытый вебинар: «Реализация простого HTTP-сервера на Java Core»
⏰Дата: 16 января в 20:00 мск
Спикер: Александр Фисунов
🧩Программа урока:
- Введение в HTTP и его роль в веб-приложениях.
- Создание простого HTTP-сервера с использованием Java Core.
- Разбор ключевых компонентов стандартной Java библиотеки для работы с HTTP.
📚Урок будет полезен тем, кто хочет:
- Узнать, как работают Java веб-приложения изнутри.
- Разобраться в принципах работы HTTP-протокола.
- Получить практический опыт в реализации базового HTTP-сервера.
🔥В результате урока вы:
- Узнаете, как использовать базовые возможности Java для создания HTTP-сервера.
- Поймете, как работают application server'ы и контейнеры сервлетов.
- Сможете применить полученные знания для работы с Java веб-приложениями.
Участники всех открытых уроков получат скидку🎁 на большое обучение
👉Регистрируйтесь на открытый вебинар по ссылке: https://otus.pw/Ir1w/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
📢Собеседование по Spring? Будьте на шаг впереди интервьюера!
Узнайте, как отвечать на самые хитрые вопросы по Spring Framework — от базовых до неожиданных. Всё, что нужно, чтобы уверенно пройти интервью.
📚Прокачайте свои знания, научитесь формулировать ответы, разберите типичные и нетипичные вопросы вместе с экспертом.
Регистрируйтесь на открытый вебинар 15 января в 20:00 мск! Участники получат скидку на большое обучение «Разработчик на Spring Framework».
🗓Регистрация открыта: https://otus.pw/ZK2H/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
➡️ Использование паттерна "Цепочка обязанностей" (Chain of Responsibility) для обработки запросов
Паттерн "Цепочка обязанностей" позволяет передавать запросы по цепочке обработчиков, где каждый обработчик решает, обработать запрос или передать его дальше по цепочке.
Это делает код более гибким и расширяемым, так как добавлять новые обработчики можно без изменения существующего кода.•
Паттерн помогает избежать жесткой привязки между отправителем и получателем запроса.•
Полезен для создания гибкой системы обработки событий или запросов.
➡️ Использование библиотеки Micronaut AOT для оптимизации приложений
Micronaut AOT — это библиотека для автоматической оптимизации приложений. Она улучшает производительность приложений за счет генерации кода на этапе компиляции, снижая время запуска и объем использования памяти.•
Оптимизирует запуск приложений.•
Поддерживает интеграцию с нативными образами.
🔗 Ссылочка на доку
➡️ Использование библиотеки Fastutil для оптимизации работы с коллекциями в Java
Fastutil — это библиотека, предоставляющая эффективные реализации коллекций для примитивных типов данных в Java. Она позволяет существенно сократить использование памяти и улучшить производительность по сравнению со стандартными коллекциями.•
Fastutil поддерживает списки, множества, карты и другие структуры для примитивов.•
Повышает эффективность работы с большими объемами данных.
🔗 Ссылочка на доку
В 2025 не трать время на бесполезные и неактуальные навыки ❌
Получить заветный оффер сможет только тот, кто владеет самыми востребованными инструментами и быстро адаптируется к требованиям рынка. Собрали для вас 10 мануалов, которые действительно прокачают ваши скиллы:
– Пошаговая road map по Java
– Redis - 5 улучшений для твоего пет-проекта
– Пошаговая RoadMap по Java
– Мануал по Docker. Основные команды и концепции
– Микросервисы. Вопросы с собеседований
– Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз
– Шпаргалка по Kafka
– Инструкция по работе с Git
– Подробный гайд, как найти работу в IT без опыта
– Подборка платформ с вакансиями для java-разработчиков
Ребята из FAANG School собрали бесплатную библиотеку Java Junior с материалами, которые помогут освоить сложные темы, упростить и ускорить работу, а также получить приглашение от IT-гигантов.
Свежее пополнение - то, без чего не обойтись ни одному джуну - шпаргалка по основным командам SQL!
Доступ открыт всего на сутки - успевай
System.arraycopySystem.arraycopy
используется для копирования элементов из одного массива в другой. Этот метод предоставляет эффективный способ копирования данных между массивами. Синтаксис System.arraycopy
:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
Параметры метода включают:src
: Исходный массив, из которого вы хотите скопировать элементы.srcPos
: Начальная позиция в исходном массиве, с которой начнется копирование.dest
: Целевой массив, в который вы хотите скопировать элементы.destPos
: Начальная позиция в целевом массиве, куда будут скопированы элементы.length
: Количество элементов, которое вы хотите скопировать.
#для_продвинутых