LambdaMetafactory
LambdaMetafactory — это класс в Java, который используется для создания объектов функциональных интерфейсов.
Как работает LambdaMetafactory:
1. LambdaMetafactory используется для создания CallSite, который представляет собой фабричный метод, возвращающий обработчик целевого метода.
2. Обработчик метода — это реализация функционального интерфейса, которая использует invokeExact для вызова целевого метода.
3. Если в лямбда-выражении есть захваченные переменные, то invokeExact принимает эти переменные как фактические параметры.
4. В Oracle JRE 8 metafactory динамически генерирует Java-класс, используя ObjectWeb Asm, который и создает класс-реализацию функционального интерфейса.
LambdaMetafactory — это класс в Java, который используется для создания объектов функциональных интерфейсов.
Как работает LambdaMetafactory:
1. LambdaMetafactory используется для создания CallSite, который представляет собой фабричный метод, возвращающий обработчик целевого метода.
2. Обработчик метода — это реализация функционального интерфейса, которая использует invokeExact для вызова целевого метода.
3. Если в лямбда-выражении есть захваченные переменные, то invokeExact принимает эти переменные как фактические параметры.
4. В Oracle JRE 8 metafactory динамически генерирует Java-класс, используя ObjectWeb Asm, который и создает класс-реализацию функционального интерфейса.
👍14❤4
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-core</artifactId>
<version>${karate.version}</version>
<scope>test</scope>
</dependency>
Karate — объединяет в себе API-тестирование, создание моков, тестирование производительности и тестирование UI. Синтаксис Karate нейтрален к Java и прост даже для непрограммистов. Автоматически создаёт HTML-отчеты, а тесты можно запускать параллельно для повышения скорости.
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥7🎉3❤2
Метод insert()
Метод insert() используется для вставки элемента в список в заданную позицию. Он принадлежит интерфейсу List и его реализациям, таким как ArrayList.
Этот метод вставляет указанный элемент element по заданному индексу index и сдвигает все последующие элементы вправо.
*Индексы начинаются с 0.
*Если индекс меньше 0 или больше размера списка, будет выброшено исключение.
Метод insert() используется для вставки элемента в список в заданную позицию. Он принадлежит интерфейсу List и его реализациям, таким как ArrayList.
Этот метод вставляет указанный элемент element по заданному индексу index и сдвигает все последующие элементы вправо.
*Индексы начинаются с 0.
*Если индекс меньше 0 или больше размера списка, будет выброшено исключение.
❤11👍8🔥3🎅1
Не знаете, как эффективно управлять конфигурацией и обеспечивать консенсус данных? Ваши проекты сталкиваются с проблемами масштабируемости и надежности?
А теперь представьте, что ваши системы работают как часы, координация и синхронизация на высшем уровне, а конфигурация управляется легко и без ошибок. Вы освоили Apache Zookeeper и ваши проекты достигают новых высот надежности и масштабируемости!
Присоединяйтесь к открытому вебинару 21 августа в 20:00 мск. Там мы решим все эти проблемы и ответим на возникающие вопросы.
👨💻🛠👨🏻💻 Урок будет полезен разработчикам, DevOps-инженерам, администраторам систем и сетей, архитекторам ПО и всем, кто хочет глубже понять работу Apache Zookeeper.
🔴 Запишитесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/czgv33
А теперь представьте, что ваши системы работают как часы, координация и синхронизация на высшем уровне, а конфигурация управляется легко и без ошибок. Вы освоили Apache Zookeeper и ваши проекты достигают новых высот надежности и масштабируемости!
Присоединяйтесь к открытому вебинару 21 августа в 20:00 мск. Там мы решим все эти проблемы и ответим на возникающие вопросы.
👨💻🛠👨🏻💻 Урок будет полезен разработчикам, DevOps-инженерам, администраторам систем и сетей, архитекторам ПО и всем, кто хочет глубже понять работу Apache Zookeeper.
🔴 Запишитесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/czgv33
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍4❤3🔥3🎅1
curl -s https://get.sdkman.io | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install micronaut
Micronaut — это JVM-фреймворк для создания микросервисов на Java, Kotlin или Groovy. Создатель фреймворка Graeme Rocher. Он создал структуру Grails и применил многие свои знания для создания Micronaut.
Micronaut предоставляет множество преимуществ в качестве платформы.
— Быстрое время запуска
— Низкое потребление памяти
— Эффективное внедрение зависимостей во время компиляции
— Фреймворк реактивный.
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤5🔥4😁3
Ждем вас на открытом уроке, где вы узнаете, что такое Java Instrumentation API и для чего нужны агенты. В онлайне изучим агент, позволяющий изменять код бизнес-классов для добавления дополнительных trace-логов для отладки приложения.
Вебинар подходит Java-разработчикам, которые сталкиваются с вопросами производительности приложений.
После занятия вы сможете писать и подключать Java-агенты самостоятельно, а также будете иметь представление о возможностях Java Instrumentation API.
Встречаемся 22 августа в 20:00 мск.
Спикер — Tech Lead в одном из крупнейших российских банков и кандидат технических наук.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥2
BeanPostProcessor
BeanPostProcessor — это интерфейс в Spring Framework, который позволяет разработчикам расширять логику создания бинов. BeanPostProcessors вызываются после того, как бин был создан и проинициализирован, но до того, как он будет зарегистрирован в контейнере Spring.
BeanPostProcessors имеют два метода обратного вызова:
postProcessBeforeInitialization(Object bean, String beanName): вызывается перед тем, как будет вызван метод init() бина.
postProcessAfterInitialization(Object bean, String beanName): вызывается после того, как будет вызван метод init() бина.
BeanPostProcessor — это интерфейс в Spring Framework, который позволяет разработчикам расширять логику создания бинов. BeanPostProcessors вызываются после того, как бин был создан и проинициализирован, но до того, как он будет зарегистрирован в контейнере Spring.
BeanPostProcessors имеют два метода обратного вызова:
postProcessBeforeInitialization(Object bean, String beanName): вызывается перед тем, как будет вызван метод init() бина.
postProcessAfterInitialization(Object bean, String beanName): вызывается после того, как будет вызван метод init() бина.
👍19❤5🔥5☃2
Ищете оптимальные подходы для взаимодействия между сервисами?
Ждём вас на открытом вебинаре «Модели межсервисного взаимодействия» 20 августа в 20:00 мск, где мы разберем:
- основные принципы и типы межсервисного взаимодействия;
- плюсы и минусы синхронных и асинхронных моделей взаимодействия;
- как использовать API Gateway и Service Mesh для управления трафиком;
- лучшие практики и паттерны для надежного и масштабируемого взаимодействия;
- примеры успешных реализаций межсервисного взаимодействия в реальных проектах.
👨💻🛠👨🏻💻 Урок будет полезен разработчикам, архитекторам ПО, backend и fullstack-разработчикам, а также DevOps-инженерам.
Спикер Дмитрий Золотов — Flutter+Kotlin Developer в Yandex, опытный DevOps и системный администратор, ментор и преподаватель.
Занятие пройдет в преддверии старта курса «Software Architect», все участники получат скидку на обучение.
🔴 Ссылка для регистрации: https://vk.cc/cziPIn
Ждём вас на открытом вебинаре «Модели межсервисного взаимодействия» 20 августа в 20:00 мск, где мы разберем:
- основные принципы и типы межсервисного взаимодействия;
- плюсы и минусы синхронных и асинхронных моделей взаимодействия;
- как использовать API Gateway и Service Mesh для управления трафиком;
- лучшие практики и паттерны для надежного и масштабируемого взаимодействия;
- примеры успешных реализаций межсервисного взаимодействия в реальных проектах.
👨💻🛠👨🏻💻 Урок будет полезен разработчикам, архитекторам ПО, backend и fullstack-разработчикам, а также DevOps-инженерам.
Спикер Дмитрий Золотов — Flutter+Kotlin Developer в Yandex, опытный DevOps и системный администратор, ментор и преподаватель.
Занятие пройдет в преддверии старта курса «Software Architect», все участники получат скидку на обучение.
🔴 Ссылка для регистрации: https://vk.cc/cziPIn
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍4❤3🔥2
Sedona дополняет существующие кластерные вычислительные системы, такие как Apache Spark, Apache Flink и Snowflake, набором готовых распределенных пространственных наборов данных и Spatial SQL, которые позволяют эффективно загружать, обрабатывать и анализировать масштабные пространственные данные на разных машинах.
Java API для Sedona ставится за 5 минут с помощью Maven, также имеются API Python и R API
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍5❤3
Как перейти с монолита на микросервисы без ошибок?
Приходите на открытый вебинар 21 августа в 20:00 мск, где мы разберём:
- основные причины перехода с монолита на микросервисы;
- главные ошибки, допускаемые при переходе на микросервисную архитектуру;
- плюсы и минусы микросервисной архитектуры;
- паттерны и лучшие практики работы с микросервисами;
- примеры успешных и неудачных переходов на микросервисы.
👨💻🛠👨🏻💻 Урок будет полезен разработчикам и архитекторам ПО, работающим с крупными системами, руководителям проектов, планирующим переход на микросервисы, backend и fullstack-разработчикам, а также DevOps-инженерам.
Встречаемся в рамках курса «Microservice Architecture». Все участники вебинара получат специальную цену на обучение! Регистрация открыта: https://vk.cc/czlCB1
Приходите на открытый вебинар 21 августа в 20:00 мск, где мы разберём:
- основные причины перехода с монолита на микросервисы;
- главные ошибки, допускаемые при переходе на микросервисную архитектуру;
- плюсы и минусы микросервисной архитектуры;
- паттерны и лучшие практики работы с микросервисами;
- примеры успешных и неудачных переходов на микросервисы.
👨💻🛠👨🏻💻 Урок будет полезен разработчикам и архитекторам ПО, работающим с крупными системами, руководителям проектов, планирующим переход на микросервисы, backend и fullstack-разработчикам, а также DevOps-инженерам.
Встречаемся в рамках курса «Microservice Architecture». Все участники вебинара получат специальную цену на обучение! Регистрация открыта: https://vk.cc/czlCB1
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍5❤4🔥2
Интерфейс UnaryOperator
Интерфейс UnaryOperator предназначен для представления функций, которые принимают один аргумент и возвращают результат того же типа, что и аргумент.
Он является специализированным функциональным интерфейсом, входящим в пакет java.util.function.
UnaryOperator часто используется в stream API для применения функций к элементам потока.
В примере UnaryOperator используется для преобразования строк в верхний регистр с помощью метода map().
Интерфейс UnaryOperator предназначен для представления функций, которые принимают один аргумент и возвращают результат того же типа, что и аргумент.
Он является специализированным функциональным интерфейсом, входящим в пакет java.util.function.
UnaryOperator часто используется в stream API для применения функций к элементам потока.
В примере UnaryOperator используется для преобразования строк в верхний регистр с помощью метода map().
👍15❤4🔥4
Присоединяйтесь к открытому вебинару «Observability в информационных системах: строим звездолет из логов и метрик» 15 августа в 19:00 мск и сделайте этот прыжок в будущее!
Спикер Сергей Окатов — кандидат физико-математических наук и руководитель управления разработки.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥2
Forwarded from Книги для Java программиста
Компания-разработчик СУБД Postgres Professional выпустила новую книгу «PostgreSQL 16 изнутри». Электронная версия учебника находится в свободном доступе. Автор книги — Егор Рогов, директор по разработке образовательных программ Postgres Professional.
Первое издание этого учебника, основанное на 14-й версии PostgreSQL, было выпущено в марте 2022 года и обновлено до 15 версии. Из-за большого читательского интереса компания перевела книгу на английский язык. Позже она стала самым популярным тематическим изданием 2023 года по версии Postgres Weekly и вошла в список профессиональной литературы на официальном сайте сообщества PostgreSQL.
В актуальной редакции книги «PostgreSQL 16 изнутри» учтены замечания читателей, исправлены опечатки, а также отражены изменения, произошедшие в версии PostgreSQL 16.
Также Postgres Professional обновила локализованную документацию к PostgreSQL 16.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍28🔥11❤9
Ждем вас на открытом вебинаре, где мы познакомимся с одной из базовых тем языка Java — Обобщения (Generics).
Изучим, для чего они нужны, где они применяются в стандартной Java-библиотеке, а также как их можно использовать в своем коде.
Встречаемся 21 августа в 20:00 мск.
Спикер Александр Фисунов — Senior Kotlin Developer в SSP Software на проекте ВТБ, опытный Java-разработчик и кандидат технических наук.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5🔥4❤3
Класс StringJoiner
Класс StringJoiner предназначен для построения строки путем соединения элементов из коллекции.
Он позволяет указать разделитель, префикс и суффикс результирующей строки.
StringJoiner часто используется при необходимости преобразовать коллекцию объектов в строку.
В примере StringJoiner используется как раз для объединения имен в строку с разделителем и добавлением префикса/суффикса.
Класс StringJoiner предназначен для построения строки путем соединения элементов из коллекции.
Он позволяет указать разделитель, префикс и суффикс результирующей строки.
StringJoiner часто используется при необходимости преобразовать коллекцию объектов в строку.
В примере StringJoiner используется как раз для объединения имен в строку с разделителем и добавлением префикса/суффикса.
1👍25❤3🔥2