Java varargs
Java varargs (variable arguments) — это механизм, предоставляемый Java, который позволяет методу принимать переменное количество аргументов одного типа. Он позволяет передавать любое количество аргументов заданного типа в метод, без явного указания массива аргументов.
Для объявления переменного количества аргументов в Java используется троеточие (...) после типа данных аргумента в определении метода.
Java varargs (variable arguments) — это механизм, предоставляемый Java, который позволяет методу принимать переменное количество аргументов одного типа. Он позволяет передавать любое количество аргументов заданного типа в метод, без явного указания массива аргументов.
Для объявления переменного количества аргументов в Java используется троеточие (...) после типа данных аргумента в определении метода.
👍16🔥8❤🔥2
🔥 Хардовый тест для разработчиков 🔥
📕 Ответьте на 9 вопросов за20 мин и проверьте, насколько вы готовы к обучению на курсе - «Архитектура и шаблоны проектирования»
💻 Научитесь применять шаблоны проектирования в разработках! Благодаря этому навыку вы сможете писать чистый код, экономить время на разработке и быстро «пересаживаться» на любой язык программирования.
🏵 Ждем всех, кто хочет вырасти до Middle+ разработчика или архитектора ПО!
👉 ПРОЙТИ ТЕСТ https://otus.pw/Qzbl/
💣 Пройдете тест, получите демо-ролик о занятиях на курсе и Welcome-скидку.
✅ Также вам откроется доступ к открытым урокам курса.
📕 Ответьте на 9 вопросов за
💻 Научитесь применять шаблоны проектирования в разработках! Благодаря этому навыку вы сможете писать чистый код, экономить время на разработке и быстро «пересаживаться» на любой язык программирования.
🏵 Ждем всех, кто хочет вырасти до Middle+ разработчика или архитектора ПО!
👉 ПРОЙТИ ТЕСТ https://otus.pw/Qzbl/
💣 Пройдете тест, получите демо-ролик о занятиях на курсе и Welcome-скидку.
✅ Также вам откроется доступ к открытым урокам курса.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍9🔥2
Spring 5 для профессионалов (2019) PDF, djvu
Эта книга воплощает знания и опыт работы авторов с каркасом Spring Framework и сопутствующими технологиями удаленного взаимодействия, Hibernate, EJB и пр. Она дает возможность читателю не только усвоить основные понятия и принципы работы с Spring Framework, но и научиться рационально пользоваться этим каркасом для построения различных уровней и частей корпоративных приложений на языке Java, включая обработку транзакций, представление веб-содержимого и прочего содержимого, развертывание и многое другое. Полноценные примеры подобных приложений, представленные в этой книге, наглядно демонстрируют особенности совместного применения различных технологий и методик разработки приложений в Spring.
Эта книга воплощает знания и опыт работы авторов с каркасом Spring Framework и сопутствующими технологиями удаленного взаимодействия, Hibernate, EJB и пр. Она дает возможность читателю не только усвоить основные понятия и принципы работы с Spring Framework, но и научиться рационально пользоваться этим каркасом для построения различных уровней и частей корпоративных приложений на языке Java, включая обработку транзакций, представление веб-содержимого и прочего содержимого, развертывание и многое другое. Полноценные примеры подобных приложений, представленные в этой книге, наглядно демонстрируют особенности совместного применения различных технологий и методик разработки приложений в Spring.
👍14❤4😁4🔥2☃1
Как используется класс Future?
Класс Future является частью пакета java.util.concurrent, и он используется для представления результата асинхронной операции или задачи, которая выполняется в фоновом потоке. Future позволяет вам управлять и получать результаты выполнения задачи в будущем, даже если она еще не завершилась.
Класс Future является частью пакета java.util.concurrent, и он используется для представления результата асинхронной операции или задачи, которая выполняется в фоновом потоке. Future позволяет вам управлять и получать результаты выполнения задачи в будущем, даже если она еще не завершилась.
👍22🔥5❤1
- Осваивай Spring!
Тест на знание языка Java
— Ответь на 21 вопрос и проверь, насколько хорошо nы знаешь язык Java и готовы освоить Spring. Сможешь сдать — пройдёшь на продвинутый онлайн-курс "Разработчик на Spring" Framework со скидкой!
Курс доступен в рассрочку.
🎁 Черная пятница в OTUS! Успей применить промокод BLACK23 и получить скидку 15% на курс!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2❤1
Helidon 4 вышел, а никто и не заметил
Те, кто использует Helidon в проде, наверняка точно знают, зачем им это нужно. Что делать остальным? Основная задача хомячка — объяснить детям концепцию смерти. Кажется, точно так же основная задача Helidon для широких народных масс — посмотреть на самые новые фишки Java и понять, нужно вам это или нет. Посмотрим, что же произошло в версии 4.0.0...
Читать статью
Те, кто использует Helidon в проде, наверняка точно знают, зачем им это нужно. Что делать остальным? Основная задача хомячка — объяснить детям концепцию смерти. Кажется, точно так же основная задача Helidon для широких народных масс — посмотреть на самые новые фишки Java и понять, нужно вам это или нет. Посмотрим, что же произошло в версии 4.0.0...
Читать статью
Teletype
Helidon 4 вышел, а никто и не заметил
Однажды на Joker мы собрали BOF под названием "Java EE vs Spring". Дуэль была оформлена по всем правилам, сообщество Spring пришло...
👍10🔥3☃2❤1🎅1
Метод before()
Метод before() используется для сравнения порядка двух объектов типа Date.
Он позволяет проверить, идет ли одна дата перед другой.
Метод before() определен в классе java.util.Date и имеет следующий формат:
boolean before(Date date)
Он сравнивает текущий объект Date с датой, переданной в качестве параметра, и возвращает:
— true, если текущая дата идет раньше переданной даты.
— false, если текущая дата идет позже переданной даты или эти даты равны.
Этот метод часто используется для сравнения и сортировки дат, например:
— Проверить, было ли какое-то событие до определенной даты.
— Отсортировать список дат по возрастанию или убыванию.
— Найти самую раннюю или самую позднюю дату в наборе.
В этом примере создаются две даты, с помощью метода before() мы проверяем, идет ли date1 раньше date2.
Так как date1 содержит более раннюю дату, то метод before() возвращает true.
Метод before() используется для сравнения порядка двух объектов типа Date.
Он позволяет проверить, идет ли одна дата перед другой.
Метод before() определен в классе java.util.Date и имеет следующий формат:
boolean before(Date date)
Он сравнивает текущий объект Date с датой, переданной в качестве параметра, и возвращает:
— true, если текущая дата идет раньше переданной даты.
— false, если текущая дата идет позже переданной даты или эти даты равны.
Этот метод часто используется для сравнения и сортировки дат, например:
— Проверить, было ли какое-то событие до определенной даты.
— Отсортировать список дат по возрастанию или убыванию.
— Найти самую раннюю или самую позднюю дату в наборе.
В этом примере создаются две даты, с помощью метода before() мы проверяем, идет ли date1 раньше date2.
Так как date1 содержит более раннюю дату, то метод before() возвращает true.
👍26🔥4
new vs valueOf
Старайтесь всегда использовать метод
Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.
Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной.
Старайтесь всегда использовать метод
valueOf
вместо конструктора в стандартных классах-оболочках примитивных типов, кроме тех случаев, когда вам нужно конкретно выделить память под новое значение. Сейчас объясню, почему.Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.
Помимо этого, наиболее часто используемые значения могут также быть закэшированы компилятором и виртуальной машиной.
👍49🔥5🎄1
Какой брокер сообщений выбрать для написания асинхронной связи?
🔥 Расскажем на бесплатном открытом уроке «RabbitMQ vs Kafka» от OTUS и Евгения Непомнящего – разработчика в «IT Sense».
На вебинаре:
✅ изучим особенности, плюсы и минусы брокеров;
✅ познакомимся с основными принципами их работы;
✅ посмотрим использование этих брокеров в live demo.
🗓 Занятие пройдёт 27 ноября в 20:00 мск и будет приурочено к старту курса «Microservice Architecture». После урока вы сможете продолжить обучение, в том числе в рассрочку.
🌐 Для бесплатного участия регистрируйтесь прямо сейчас: https://otus.pw/RxU9/
🔥 Расскажем на бесплатном открытом уроке «RabbitMQ vs Kafka» от OTUS и Евгения Непомнящего – разработчика в «IT Sense».
На вебинаре:
✅ изучим особенности, плюсы и минусы брокеров;
✅ познакомимся с основными принципами их работы;
✅ посмотрим использование этих брокеров в live demo.
🗓 Занятие пройдёт 27 ноября в 20:00 мск и будет приурочено к старту курса «Microservice Architecture». После урока вы сможете продолжить обучение, в том числе в рассрочку.
🌐 Для бесплатного участия регистрируйтесь прямо сейчас: https://otus.pw/RxU9/
👍9🔥2
Что такое тернарный оператор выбора?
Тернарный условный оператор ?: - оператор, которым можно заменить некоторые конструкции операторов if-then-else.
Выражение записывается в следующей форме:
Тернарный условный оператор ?: - оператор, которым можно заменить некоторые конструкции операторов if-then-else.
Выражение записывается в следующей форме:
условие ? выражение1 : выражение2Если условие выполняется, то вычисляется выражение1 и его результат становится результатом выполнения всего оператора. Если же условие равно false, то вычисляется выражение2 и его значение становится результатом работы оператора. Оба операнда выражение1 и выражение2 должны возвращать значение одинакового (или совместимого) типа.
👍31🔥5❤3🎄2
Класс StringJoiner
Класс StringJoiner предназначен для построения строки путем соединения элементов из коллекции.
Он позволяет указать разделитель, префикс и суффикс результирующей строки.
StringJoiner часто используется при необходимости преобразовать коллекцию объектов в строку.
В примере StringJoiner используется как раз для объединения имен в строку с разделителем и добавлением префикса/суффикса.
Класс StringJoiner предназначен для построения строки путем соединения элементов из коллекции.
Он позволяет указать разделитель, префикс и суффикс результирующей строки.
StringJoiner часто используется при необходимости преобразовать коллекцию объектов в строку.
В примере StringJoiner используется как раз для объединения имен в строку с разделителем и добавлением префикса/суффикса.
👍32🔥6❤5😍1🎄1
🔧В большинстве случаев Gradle используется в командах для довольно несложных задач и только для Kotlin-проектов, java. Между тем, он является очень мощным инструментом разработки для DevOps.
⚡️30 ноября в 19.00 (мск) приглашаем на открытый урок курса “Kotlin Backend Developer Professional” в OTUS
📌На уроке обсудим:
- как выполнять сборку проектов, содержащих компоненты на C/C++, Rust, Go и др. языках;
- как автоматически генерировать исходники с дальнейшей их компиляцией;
- извлекать файлы из репозиториев для дальнейшей обработки;
- разрабатывать кастомные плагины;
- гибко управлять версиями;
- собирать докер-образы.
👉Регистрация для участия https://otus.pw/CytJ/
После урока вы сможете продолжить обучение, поступив в группу курса по специальной цене. Возможны разные способы и рассрочка платежа. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
⚡️30 ноября в 19.00 (мск) приглашаем на открытый урок курса “Kotlin Backend Developer Professional” в OTUS
📌На уроке обсудим:
- как выполнять сборку проектов, содержащих компоненты на C/C++, Rust, Go и др. языках;
- как автоматически генерировать исходники с дальнейшей их компиляцией;
- извлекать файлы из репозиториев для дальнейшей обработки;
- разрабатывать кастомные плагины;
- гибко управлять версиями;
- собирать докер-образы.
👉Регистрация для участия https://otus.pw/CytJ/
После урока вы сможете продолжить обучение, поступив в группу курса по специальной цене. Возможны разные способы и рассрочка платежа. Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍10❤2🔥2
Где и для чего используется модификатор abstract?
Класс, помеченный модификатором abstract, называется абстрактным классом. Такие классы могут выступать только предками для других классов. Создавать экземпляры самого абстрактного класса не разрешается. При этом наследниками абстрактного класса могут быть как другие абстрактные классы, так и классы, допускающие создание объектов.
Метод, помеченный ключевым словом abstract - абстрактный метод, т.е. метод, который не имеет реализации. Если в классе присутствует хотя бы один абстрактный метод, то весь класс должен быть объявлен абстрактным.
Использование абстрактных классов и методов позволяет описать некий шаблон объекта, который должен быть реализован в других классах. В них же самих описывается лишь некое общее для всех потомков поведение.
Класс, помеченный модификатором abstract, называется абстрактным классом. Такие классы могут выступать только предками для других классов. Создавать экземпляры самого абстрактного класса не разрешается. При этом наследниками абстрактного класса могут быть как другие абстрактные классы, так и классы, допускающие создание объектов.
Метод, помеченный ключевым словом abstract - абстрактный метод, т.е. метод, который не имеет реализации. Если в классе присутствует хотя бы один абстрактный метод, то весь класс должен быть объявлен абстрактным.
Использование абстрактных классов и методов позволяет описать некий шаблон объекта, который должен быть реализован в других классах. В них же самих описывается лишь некое общее для всех потомков поведение.
👍19🎄5
Как разработчику увеличить доход?
Расширять список своих скиллов! Начать можно с бесплатного открытого урока «Шаблон проектирования ""Цепочка обязанностей""» от OTUS.
На вебинаре:
- рассмотрим превращение элементов поведения в объекты;
- проанализируем его на конкретном примере, формируя диаграмму классов;
- узнаем, как использовать шаблон «Цепочка обязанностей» для решения различных задач;
- покажем, как создать классы обработчиков и связать их в цепочку так, чтобы сообщение было обработано последовательно каждым обработчиком;
- разберем возможности настройки приоритета и условий обработки определенных сообщений.
Занятие пройдёт 5 декабря в 20:00 мск в рамках курса «Архитектура и шаблоны проектирования». После урока вы сможете продолжить обучение в рассрочку.
Для бесплатного участия и получения записи пройдите короткое тестирование прямо сейчас: https://otus.pw/QNaN/
Расширять список своих скиллов! Начать можно с бесплатного открытого урока «Шаблон проектирования ""Цепочка обязанностей""» от OTUS.
На вебинаре:
- рассмотрим превращение элементов поведения в объекты;
- проанализируем его на конкретном примере, формируя диаграмму классов;
- узнаем, как использовать шаблон «Цепочка обязанностей» для решения различных задач;
- покажем, как создать классы обработчиков и связать их в цепочку так, чтобы сообщение было обработано последовательно каждым обработчиком;
- разберем возможности настройки приоритета и условий обработки определенных сообщений.
Занятие пройдёт 5 декабря в 20:00 мск в рамках курса «Архитектура и шаблоны проектирования». После урока вы сможете продолжить обучение в рассрочку.
Для бесплатного участия и получения записи пройдите короткое тестирование прямо сейчас: https://otus.pw/QNaN/
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍9🔥2
Ещё с самого начала карьеры разработчика программного обеспечения на платформе Java автора волновал вопрос: "А можно ли компилировать Java-код в нативные исполняемые файлы?", и автор был далеко не один такой. И инструменты для компиляции Java-кода в нативные исполняемые файлы и библиотеки существовали, например тот же GNU C compiler for Java (gcj), хоть и с некоторыми нюансами.
Но автора этот вопрос как-то не сильно волновал, так что дальше чтения теории он не ушёл, да и как-то забыл про это.
Однако в 2019 году корпорация Oracle явила общественности новый проект - GraalVM, являющийся по сути JDK с компилятором Graal вместо HotSpot C1/C2 и набором дополнительных инструментов, одним из которых является native-image - инструмент для компиляции нативных исполняемых файлов и библиотек из Java-байткода.
В этом ролике автор рассмотрит три сценария использование native-image для компиляции Java-байткода в исполняемые файлы:
- Компиляция одного класса
- Компиляция простого проекта в Maven и Gradle
- Компиляция проекта на основе Spring Boot в Maven и Gradle
Кроме этого в ролике рассматривается компиляция со статическим связыванием (musl + GCC 10 и zlib 1.3) и запуск приложений в Docker.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java нативно - GraalVM Native Image #java #graal #docker #maven #gradle #springboot
Ещё с самого начала моей карьеры разработчика программного обеспечения на платформе Java меня волновал вопрос: "А можно ли компилировать Java-код в нативные исполняемые файлы?", и я был далеко не один такой. И инструменты для компиляции Java-кода в нативные…
👍15🔥4❤1
Как работать с базами данных еще эффективнее?
Узнайте на бесплатном открытом уроке «Индексы: структуры данных» от OTUS.
На вебинаре:
✅ рассмотрим, какие ситуации требуют использования индексов;
✅ объясним, как они помогают ускорить выполнение запросов и улучшить производительность системы;
✅ разберём структуры данных, на которых основаны индексы, включая бинарные деревья поиска, B-tree, сбалансированные деревья и хеш-таблицы;
✅ научимся использовать команду explain в PostgreSQL для анализа выполнения запросов.
Занятие пройдёт 29 ноября в 20:00 мск в рамках курса «Highload Architect».
Для бесплатного участия регистрируйтесь прямо сейчас: https://otus.pw/iC8p/
Узнайте на бесплатном открытом уроке «Индексы: структуры данных» от OTUS.
На вебинаре:
✅ рассмотрим, какие ситуации требуют использования индексов;
✅ объясним, как они помогают ускорить выполнение запросов и улучшить производительность системы;
✅ разберём структуры данных, на которых основаны индексы, включая бинарные деревья поиска, B-tree, сбалансированные деревья и хеш-таблицы;
✅ научимся использовать команду explain в PostgreSQL для анализа выполнения запросов.
Занятие пройдёт 29 ноября в 20:00 мск в рамках курса «Highload Architect».
Для бесплатного участия регистрируйтесь прямо сейчас: https://otus.pw/iC8p/
👍6🔥2
Интерфейс UnaryOperator
Интерфейс UnaryOperator предназначен для представления функций, которые принимают один аргумент и возвращают результат того же типа, что и аргумент.
Он является специализированным функциональным интерфейсом, входящим в пакет java.util.function.
UnaryOperator часто используется в stream API для применения функций к элементам потока.
В примере UnaryOperator используется для преобразования строк в верхний регистр с помощью метода map().
Интерфейс UnaryOperator предназначен для представления функций, которые принимают один аргумент и возвращают результат того же типа, что и аргумент.
Он является специализированным функциональным интерфейсом, входящим в пакет java.util.function.
UnaryOperator часто используется в stream API для применения функций к элементам потока.
В примере UnaryOperator используется для преобразования строк в верхний регистр с помощью метода map().
👍16🔥3❤1
На вебинаре рассмотрим Virtual Threads (JEP444), которые наконец-то стали стабильными.
Узнаем:
- что в итоге получилось;
- как и зачем этим пользоваться.
После урока вы сможете продолжить обучение в рассрочку.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤1
Git. Практическое руководство. Управление и контроль версий в разработке программного обеспечения (2021) PDF
Git в настоящее время нужен практически всем программистам, которые занимаются разработкой программного обеспечения. Git - это система управления версиями, с помощью которой вы сможете вести и контролировать разработку нескольких версий одного приложения, осуществлять совместную разработку одного приложения несколькими разработчиками
Git в настоящее время нужен практически всем программистам, которые занимаются разработкой программного обеспечения. Git - это система управления версиями, с помощью которой вы сможете вести и контролировать разработку нескольких версий одного приложения, осуществлять совместную разработку одного приложения несколькими разработчиками
🔥6
Разберитесь в микросервисной архитектуре и повысьте свою востребованность
Всего за 5 месяцев на онлайн-курсе «Microservice Architecture» от OTUS.
После обучения вы сможете:
- на профессиональном уровне планировать архитектуру и создавать масштабируемые, fault-tolerant приложения;
- решать нетривиальные задачи в рамках распределенных и децентрализованных систем;
- использовать в проектах классические паттерны проектирования (шардирование, репликация, и т.д.).
Обучение идеально подходит архитекторам, разработчикам, системным аналитикам, администраторам и DevOps, которые хотят повысить свои доход и востребованность.
Вы можете заранее бесплатно получить полную программу, чтобы убедиться, что она вам подходит. Также курс доступен для приобретения в рассрочку.
Пройдите бесплатное вступительное тестирование прямо сейчас, чтобы занять место в группе по спец.цене: https://otus.pw/sjsq/
Всего за 5 месяцев на онлайн-курсе «Microservice Architecture» от OTUS.
После обучения вы сможете:
- на профессиональном уровне планировать архитектуру и создавать масштабируемые, fault-tolerant приложения;
- решать нетривиальные задачи в рамках распределенных и децентрализованных систем;
- использовать в проектах классические паттерны проектирования (шардирование, репликация, и т.д.).
Обучение идеально подходит архитекторам, разработчикам, системным аналитикам, администраторам и DevOps, которые хотят повысить свои доход и востребованность.
Вы можете заранее бесплатно получить полную программу, чтобы убедиться, что она вам подходит. Также курс доступен для приобретения в рассрочку.
Пройдите бесплатное вступительное тестирование прямо сейчас, чтобы занять место в группе по спец.цене: https://otus.pw/sjsq/
👍13🔥2