Получить атомное время из интернет-часов
Для получения атомного времени из интернет-часов в Java вы можете воспользоваться классом java.net.URL
для выполнения HTTP-запроса к одному из сервисов времени, таким как «time.google.com». Затем вы можете обработать полученный ответ и извлечь атомное время.
Обратите внимание, что формат ответа от сервиса времени может различаться, и вам может потребоваться настроить метод parseAtomicTime
для вашего конкретного сервиса. Подобные сервисы могут предоставлять атомное время в разных форматах, таких как ISO 8601 или Unix Timestamp.
#для_начинающих
abstract
Ключевое слово abstract используется для определения абстрактного класса или метода. Абстрактный класс не может быть создан, он служит только в качестве базового класса для других классов, которые могут быть созданы на его основе.
Это позволяет упростить проектирование классов и повторно использовать код.
#для_продвинутых
Программист - самая востребованная профессия в 2025!
Тогда почему ты опять не получил оффер?
Пока ты боишься говорить о деньгах и мямлишь про свой опыт, кто-то другой занял твое место. Чтобы HR выстраивались в очередь, приходи на лекцию от команды FAANG School.
Отдаем бесплатно то, что продают за бешенные деньги на карьерных консультациях.
- увидишь, как HR собеседует программиста в прямом эфире
- поймешь, как отвечать на неудобные вопросы про зарплату
- разберешь частые ошибки начинающих на собесах
- научишься представлять предыдущий опыт
- узнаешь, как говорить о своих сильных сторонах без пафоса
- поймешь, что нужно спросить у HR, чтобы понять уровень компании
Заберешь пошаговый план прохождения всех этапов интервью, с которым у тебя больше не будет отказов.
Приходи на эфир, чтобы выделяться среди конкурентов и самому выбирать офферы.
👋 Меня зовут Николай, я - техлид в крупном банке
На текущий момент провел более 100 собеседований разработчиков уровня middle+, при этом сам регулярно прохожу собеседования и получаю офферы в крупнейшие компании: Яндекс, Альфу, Сбер и др.
Благодаря этому я накопил большой опыт в прохождении собеседований, знаю какие вопросы задают и как правильно на них отвечать, чтобы получить заветный оффер
Занимаюсь менторингом действующих разработчиков Java, кто хочет повысить свою зарплату, а также тех, кто имеет опыт самостоятельного обучения и хочет найти первую работу Java разработчиком (совсем без знаний будет трудно)
На менторинге показываю каким образом ведется разработка реального проекта, расставляю приоритеты в обучении, готовлю к собеседованиям, даю домашнее задание и провожу ревью, отвечаю на любые вопросы. По окончании курса мы с вами напишем 3 микросервиса и 1 библиотеку (spring boot starter), которые могут вам встретится в реальной работе и станут частью вашего резюме
Все ученики первого потока успешно трудоустроились, три человека получили оффер более 200 тысяч рублей в месяц
Второй поток в самом разгаре, обучаются как ребята смежных IT специальностей (аналитики, специалисты сопровождения, разработчики других ЯП), так и действующие Java разработчики с несколькими годами опыта
Всего обучение прошли или проходят 25 учеников
Курс содержит 35 часов лекций и 15 часов живого разбора вопросов. Кроме того вы получите доступ к вопросам, которые задавали мне и моим ученикам на реальных собеседованиях
Третий поток начинается 8 февраля, если хотите участвовать - заполните анкету и я с вами свяжусь
Также я веду блог пишу статьи на habr
Сортировка слиянием (Merge Sort)
Сортировка слиянием - это алгоритм сортировки, который основан на разделении массива на меньшие части, сортировке каждой части и объединении этих частей в отсортированный массив. Он имеет сложность O(n log n)
и может быть эффективно использован для сортировки больших наборов данных.
Она может быть применена для сортировки массивов объектов, чисел, строк и любых других данных. В некоторых случаях сортировка слиянием может быть более эффективной, чем другие алгоритмы сортировки, особенно когда данные не упорядочены.
#для_продвинутых
Класс 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
⚡️🪫Что делать, если система не справляется с нагрузкой? Узнайте, как эффективно справляться с нагрузками и обеспечивать бесперебойную работу ваших приложений!
🔥23 января в 20.00 мск. приглашаем на открытый вебинар в OTUS, где мы обсудим подходы для решения проблем, связанных с производительностью системы.
Вопросы вебинара:
- Как правильно реализовать один сервис?
- Что такое нагрузочное тестирование, и как его проводить?
- Как оптимизировать код и улучшить производительность?
- Зачем нужны OpenTelemetry и платформа наблюдаемости?
- Как провести трассировку запроса и оптимизацию запросов к БД?
- Что такое репликация и шардирование в MSA?
Убедитесь, что ваша система готова к любым нагрузкам!
👉Регистрация https://otus.pw/i5O4/
Реклама. ООО «Отус онлайн образование», ОГРН 1177746618576
Юнит-тестирование в Java
Юнит-тестирование — это процесс тестирования отдельных блоков кода (юнитов) с целью обеспечения их корректной работы и выявления возможных ошибок и проблем в функциональности. Юнит-тесты должны быть маленькими, изолированными и быстрыми, и они позволяют выявить ошибки и несоответствия в вашем коде на ранних этапах разработки. В Java для написания юнит-тестов часто используется фреймворк JUnit. Вот как написать и запустить юнит-тесты в Java с использованием JUnit.
#для_продвинутых
Сервлеты
Сервлеты — это программные компоненты, которые расширяют функциональность сервера, помогают создавать веб-страницы и взаимодействовать с базами данных.
Сервлет получает запрос от браузера, обрабатывает его и отправляет ответ в браузер.
#для_продвинутых
Интерфейс Predicate
Интерфейс Predicate
представляет собой функциональный интерфейс, который принимает один аргумент и возвращает булево значение. Его можно использовать для определения условий, на основе которых можно фильтровать данные.
#для_продвинутых
Как вызвать один конструктор из другого?
В 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.