Хотите узнать, как легко и эффективно работать с потоковыми данными с помощью Alpakka?
Всего за пару часов вы разберете работу с потоковыми данными, узнаете, что такое «продьюсер» и «консьюмер», и научитесь применять эти знания в различных областях, где данные отсылаются и принимаются через Kafka.
Присоединяйтесь к открытому вебинару «Потоковая обработка данных с помощью Alpakka» 5 сентября в 20:00 мск!
Урок будет полезен всем, кто работает с потоковыми данными.
Спикер Валентин Шилин — старший программист/аналитик данных в зарубежной компании.
Встречаемся в преддверии старта курса «Apache Kafka». Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cA1W4A
Всего за пару часов вы разберете работу с потоковыми данными, узнаете, что такое «продьюсер» и «консьюмер», и научитесь применять эти знания в различных областях, где данные отсылаются и принимаются через Kafka.
Присоединяйтесь к открытому вебинару «Потоковая обработка данных с помощью Alpakka» 5 сентября в 20:00 мск!
Урок будет полезен всем, кто работает с потоковыми данными.
Спикер Валентин Шилин — старший программист/аналитик данных в зарубежной компании.
Встречаемся в преддверии старта курса «Apache Kafka». Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cA1W4A
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
1❤3👍2🔥2😁1
Инкапсуляция
Инкапсуляция — это принцип ООП, который заключается в сокрытии внутреннего представления класса от внешнего мира. Для этого используются модификаторы доступа: private, protected, public.
Обычно поля класса делаются private или protected, а методы — public. Это позволяет скрыть реализацию класса и предоставить к ней контролируемый доступ через public методы.
При запуске этой программы на выходе мы получим:
John 0
Инкапсуляция — это принцип ООП, который заключается в сокрытии внутреннего представления класса от внешнего мира. Для этого используются модификаторы доступа: private, protected, public.
Обычно поля класса делаются private или protected, а методы — public. Это позволяет скрыть реализацию класса и предоставить к ней контролируемый доступ через public методы.
При запуске этой программы на выходе мы получим:
John 0
1❤19👍8🔥3☃2
Apache Ignite 3.0 — платформа для распределенного кэширования и вычислений
Недавно вышла стабильная версия Apache Ignite 3.0 — это open-source платформа, предоставляющая возможности для распределенного кэширования и вычислений в реальном времени.
Apache Ignite предлагает разработчикам мощный набор инструментов для работы с большими данными. Платформа позволяет организовать распределенное хранилище данных и обрабатывать их с высокой производительностью, используя CPU и GPU.
В версии Apache Ignite 3.0 были реализованы следующие улучшения:
Новый API для асинхронных операций и улучшенная поддержка транзакций.
Оптимизация работы с распределенными кешами и поддержка новых типов данных.
Интеграция с популярными инструментами для анализа данных, такими как Apache Spark и Apache Flink.
Улучшенная документация и обновленный интерфейс для мониторинга и администрирования.
🖥 GitHub
🟡 Доки
@javalib #java
Недавно вышла стабильная версия Apache Ignite 3.0 — это open-source платформа, предоставляющая возможности для распределенного кэширования и вычислений в реальном времени.
Apache Ignite предлагает разработчикам мощный набор инструментов для работы с большими данными. Платформа позволяет организовать распределенное хранилище данных и обрабатывать их с высокой производительностью, используя CPU и GPU.
В версии Apache Ignite 3.0 были реализованы следующие улучшения:
Новый API для асинхронных операций и улучшенная поддержка транзакций.
Оптимизация работы с распределенными кешами и поддержка новых типов данных.
Интеграция с популярными инструментами для анализа данных, такими как Apache Spark и Apache Flink.
Улучшенная документация и обновленный интерфейс для мониторинга и администрирования.
🖥 GitHub
🟡 Доки
@javalib #java
1👍9❤4🔥3😁2
Вы пишете код для обслуживания банковских операций и определяете в нем три класса:
🔹 Person, описывает человека;
🔹 Employee, описывает банковского служащего;
🔹 Client, представляет клиента банка.
Классы Employee и Client будут производными от класса Person, так как оба класса имеют общие поля и методы. Поскольку все объекты будут представлять сотрудника или клиента банка, то напрямую мы от класса Person создавать объекты не будем.
Поэтому имеет смысл сделать его абстрактным, как на картинках.
Тем самым мы придерживаемся принципам ООП — наследование и полиморфизм (переопределяем метод display()). Также есть Инкапсуляция благодаря private полям класса Person.
С помощью всего этого, ваш код более гибкий для изменений, более читабельный и поддерживаемый.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤8🎉3
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.13-SNAPSHOT</version>
</plugin>
JaCoCo — это довольно известная open-source библиотека Java для покрытия кода тестами;
библиотека была создана командой EclEmma.
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤4🔥3
Что такое «абстракция»?
Абстрагирование – это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция – это набор всех таких характеристик.
Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно.
Абстрагирование – это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция – это набор всех таких характеристик.
Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно.
👍16❤10
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤11👍7🔥4🎄1
Более чем за десять лет работы со Spring Framework и Enterprise Java автор успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности.
Всё это из-за того, что магия фреймворков иногда ломается, и делает это очень неочевидно.
Please open Telegram to view this post
VIEW IN TELEGRAM
VK Видео
Когда ломается магия фреймворков...
Более чем за десять лет работы со Spring Framework и Enterprise Java я успел полюбить Spring Framework, возненавидеть и в итоге пересмотреть свои подходы к работе с ним. То же самое касается работы с рефлексией в целом и работы с АОП в частности. Всё это…
👍11❤5🔥3
Предположим, есть метод, который может выбросить IOException и FileNotFoundException в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено?
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок
Таким образом, исходя из факта, что
Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок
catch(Exception ex) {}
, иначе все дальнейшие блоки catch()
уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex)
.Таким образом, исходя из факта, что
FileNotFoundException extends IOException
сначала нужно обработать FileNotFoundException
, а затем уже IOException
.🔥17👍11❤7☃3
ConnectBot — это клиент Secure Shell для Android, позволяющий подключаться к удаленным серверам по криптографически защищенному каналу.
ConnectBot удобнее всего использовать в Android Studio.
Быстрый старт с Docker и Jenkins CI:
docker run -it -v $(pwd):/workspace \
-v jenkinsfile-runner-cache:/var/jenkinsfile-runner-cache \
-v jenkinsfile-runner:/var/jenkinsfile-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):$(which docker) \
-e ANDROID_ADB_SERVER_ADDRESS=host.docker.internal \
jenkins/jenkinsfile-runner
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤6🔥1
Хотите узнать, как концепция дилеммы заключенного применяется в разработке архитектурных решений?
Всего за пару часов вы разберете основы теории игр, научитесь анализировать преимущества и риски различных архитектурных подходов, сможете эффективно управлять компромиссами между компонентами системы.
Присоединяйтесь к открытому вебинару 3 сентября в 20:00 мск! Урок создан для архитекторов ПО, руководителей IT-проектов, Fullstack- и Backend-разработчиков.
Спикер Евгений Тюменцев — директор компании по разработке ПО, 20 лет преподает компьютерные дисциплины в ВУЗе: C++, Kotlin, C#, ООП.
Встречаемся в преддверии старта курса «Архитектура и шаблоны проектирования». Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие.
Всего за пару часов вы разберете основы теории игр, научитесь анализировать преимущества и риски различных архитектурных подходов, сможете эффективно управлять компромиссами между компонентами системы.
Присоединяйтесь к открытому вебинару 3 сентября в 20:00 мск! Урок создан для архитекторов ПО, руководителей IT-проектов, Fullstack- и Backend-разработчиков.
Спикер Евгений Тюменцев — директор компании по разработке ПО, 20 лет преподает компьютерные дисциплины в ВУЗе: C++, Kotlin, C#, ООП.
Встречаемся в преддверии старта курса «Архитектура и шаблоны проектирования». Все участники вебинара получат специальную цену на обучение!
Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие.
1❤6👍3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
10 важнейших компонентов веб-приложения
1. CI/CD pipelines: Все начинается с непрерывной интеграции и доставки (Jenkins, GitHub).
2. Запросы пользователей: После разрешения DNS запросы поступают на сервера.
3. Балансировщики: Равномерно распределяют запросы между серверами (Nginx, HAProxy).
4. CDN: Запросы могут обслуживаться через сеть доставки контента.
5. API: Веб-приложение взаимодействует с бекендами через API.
6. Базы данных и кэши: Бекенды взаимодействуют с базами данных или кэшами для получения данных.
7. Очереди задач: Большие задачи отправляются на воркеры с помощью очередей.
8. Поисковые службы: Поиск поддерживается службами полнотекстового поиска (Elasticsearch, Apache Solr).
9. Мониторинг и логирование: Хранение логов помогает анализировать данные, чтобы убедиться, что все работает исправно (Sentry, Grafana, Prometheus).
10. Службы оповещения: Уведомляют разработчиков о проблемах для быстрого реагирования.
💬 Какие еще компоненты вы добавили бы в архитектуру производственного веб-приложения?
@javalib #java
1. CI/CD pipelines: Все начинается с непрерывной интеграции и доставки (Jenkins, GitHub).
2. Запросы пользователей: После разрешения DNS запросы поступают на сервера.
3. Балансировщики: Равномерно распределяют запросы между серверами (Nginx, HAProxy).
4. CDN: Запросы могут обслуживаться через сеть доставки контента.
5. API: Веб-приложение взаимодействует с бекендами через API.
6. Базы данных и кэши: Бекенды взаимодействуют с базами данных или кэшами для получения данных.
7. Очереди задач: Большие задачи отправляются на воркеры с помощью очередей.
8. Поисковые службы: Поиск поддерживается службами полнотекстового поиска (Elasticsearch, Apache Solr).
9. Мониторинг и логирование: Хранение логов помогает анализировать данные, чтобы убедиться, что все работает исправно (Sentry, Grafana, Prometheus).
10. Службы оповещения: Уведомляют разработчиков о проблемах для быстрого реагирования.
💬 Какие еще компоненты вы добавили бы в архитектуру производственного веб-приложения?
@javalib #java
1👍21❤6🔥3
Ждем вас на открытом вебинаре 11 сентября в 20:00 мск, где мы разберем:
Урок идеально подходит для тех, кто начинает изучать Java или хочет углубить свои знания.
Встречаемся в преддверии старта курса «Специализация Java-разработчик».
Все участники вебинара получат специальную цену на обучение!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍5❤3☃2🔥2
Всего за 4 месяца вы уверенно овладеете всеми аспектами языка Java, научитесь создавать чистый и легко читаемый код, сможете успешно пройти любое собеседование, а также успешно пройти сертификацию Oracle Java Programmer.
Хотите это реализовать? Присоединяйтесь к курсу «Углубленное изучение языка Java».
Ознакомится с курсом можно на бесплатном открытом уроке «Определение областей действия переменных (Scopes) в Java».
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤6👍4🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Тестирование играет важнейшую роль в обеспечении качества и надежности ваших приложений. Пять популярных фреймворков для тестирования:
1. JUnit:
🔹 Используется для модульного тестирования.
🔹 Простой, удобный в использовании и легко интегрируется с инструментами разработки.
🔹 Идеален для написания и запуска повторяемых тестов, обеспечивая правильное функционирование отдельных частей кода.
2. TestNG:
🔹 Поддерживает различные категории тестирования.
🔹 Гибкий, масштабируемый и подходит как для простых, так и для сложных тестов.
🔹 Предлагает расширенные функции, такие как параллельное тестирование, тестирование на основе данных и подробные отчеты.
3. Mockito:
🔹 Фреймворк для создания мок-объектов в модульных тестах.
🔹 Легкость в использовании, уменьшение шаблонного кода и интеграция с JUnit/TestNG.
🔹 Позволяет разработчикам тестировать части кода изолированно, не полагаясь на внешние зависимости.
4. Selenium:
🔹 Фреймворк для автоматизации веб-браузеров.
🔹 Поддержка кроссплатформенности, интеграция с TestNG/JUnit и активная поддержка сообщества.
🔹 Обеспечивает правильное функционирование веб-интерфейсов на разных браузерах и платформах.
5. Cucumber:
🔹 Инструмент для разработки на основе BDD.
🔹 Улучшает коммуникацию с нетехническими заинтересованными сторонами.
🔹 Использует спецификации на простом языке для написания тестов, что позволяет заказчику лучше понимать тестовые кейсы.
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥9👍6❤5