Обновить
128K+

Java *

Объектно-ориентированный язык программирования

173,63
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Выходя за рамки JUnit. Создаем сложные расширения

Время на прочтение8 мин
Охват и читатели3.6K

Переход от JUnit4 к новой версии во многом изменил способ расширения функциональных возможностей тестов. Напомню, что в JUnit4 основным механизмом расширения были правила (Rule), которые могли обернуть выполнение теста в дополнительную логическую обработку (например, в реализации абстрактного класса ExternalResource встраивали два дополнительных вызова методов инициализации (который также мог возвращать объект для взаимодействия с создаваемым окружением, например обертку вокруг Android Activity) и финализации (вызывается после выполнения теста и используется для очистки ресурсов). Модель JUnit 5 существенно дополнена и в этой статье мы рассмотрим как можно создавать собственные расширения для JUnit Platform.

Читать далее

Простой пример написания Dockerfile. Использование многоэтапной сборки

Время на прочтение5 мин
Охват и читатели127K

Всем привет! В данной статье хочу показать простой пример написания Dockerfile, объяснить как это все работает, а также показать на примере использование многоэтапной сборки.

Для понимания данной статьи необходимы минимальные знания Docker, а также для использования примеров - установленный Docker Desktop локально на компьютере.

Вначале немного теории.

Dockerfile - это файл, который содержит инструкции для сборки образа. На основании образа создается и запускается контейнер.

Обратимся к официальной документации https://docs.docker.com/get-started/overview/

Читать далее

Tarantool Data Grid + Java = …

Время на прочтение6 мин
Охват и читатели4.7K

В последнее время всё большую популярность набирает Tarantool — платформа in-memory вычислений с гибкой схемой данных, включающая в себя NoSQL-базу данных и сервер приложений. В этой статье я хочу рассказать об одной из его реализаций — Tarantool Data Grid (TDG).

Читать далее

From Zero to Hero: определите ваш уровень решения LeetCode задач от 1 до 5

Время на прочтение8 мин
Охват и читатели98K

В этой статье я хочу написать про мой опыт взаимодействия с платформой LeetCode, и описать свою подготовку к интервью в FAANG подобные компании путем разбиения ее на уровни.

А какой у вас уровень?

Читать далее

Retry or No?

Время на прочтение17 мин
Охват и читатели14K

В этой статье разберем вариант реализации функционала перезапроса сообщений из семейства resilience шаблонов. Мы поговорим о retry. Точнее обсудим:

1. Что такое устойчивость и какое влияние на нее имеет retry?

2. Анализируем, где применять retry;

3. Реализуем retry;

4. Пишем unit-тесты с wiremock;

5.Делаем starter;

Читать

Устранение неисправностей в приложении Java под Kubernetes

Время на прочтение7 мин
Охват и читатели5.4K
image

Когда взаимодействуют разработчики и операторы


Предположим, вы написали приложение на Java и развернули его в Kubernetes в среде разработки. Рано или поздно это приложение уйдёт в продакшен, и вам придётся узнать, каково оно на деле. Затем начинают возникать новые неожиданные проблемы. Причин у таких проблем может быть множество: слишком много пользователей, утечки памяти, условия гонки, и на этапе разработки такие проблемы выявить сложно.

Разумеется, в таких случаях неисправности требуется исправлять, и первым делом нужно запустить анализ коренных причин отказов, который вывел бы нас к источнику проблем. На ноутбуке это сделать просто: когда приложение заблокировано, можно выводить дампы потоков, тепловые карты и пытаться понять, откуда возникает блокировка.

В Kubernetes всё устроено немного иначе. Вам наверняка рекомендовали добавить отдельную конечную точку для проверки работоспособности, поэтому k8s уже успеет перезапустить под до вашего вмешательства. После этого под выглядит свежим, и в нём потеряна вся информация, которая вам требовалась. В этом посте будет показан очень простой способ, позволяющий снять информацию в такой ситуации.
Читать дальше →

Как мы сайт Альфа-Банка на митапе шатали и нам за это ничего не было

Время на прочтение3 мин
Охват и читатели3.1K

6 декабря мы провели митап Alfa Backend Stories на тему отказоустойчивости: поделились «весёлыми» историями про падения и убытки, поговорили о том, как смягчать последствия этих падений, как сэкономить, переехав с одной БД на другую, «в прямом эфире» пытались сломать сайт Альфа-Банка. 

Для тех, кто не смог прийти, прикладываем записи докладов (и ссылку на фотоотчёт по традиции).

Читать далее

Интеграция Primefaces в приложение на Spring Boot. Часть 3 — динамическое обновление контента страницы

Время на прочтение4 мин
Охват и читатели2.3K

Описывается пример интеграции библиотеки компонентов пользовательского интерфейса Primefaces, построенной на основе фреймворка JavaServer Faces (JSF), в MVC приложение на Spring Boot.

Первая часть

Вторая часть

Читать далее

Proxyless Service Mesh в gRPC Java-сервисах за 4 шага

Время на прочтение9 мин
Охват и читатели6.1K

Привет, Хабр! На связи Максим Чудновский @chudnovskiyи Александр Козлов @ZDragonиз СберТеха. Мы занимаемся развитием Platform V Synapse — облачной платформы, которая объединяет множество интеграционных шаблонов, в том числе классический стиль интеграции request-response через Service Mesh.

В этой статье хотим поговорить о Service Mesh в gRPC Java-сервисах: чем полезен подход, как реализовать его c помощью протокола xDS и с какими сложностями можно столкнуться.

Читать далее

Spring Cloud Config и обновление компонентов в рантайме

Время на прочтение8 мин
Охват и читатели13K

Появилась потребность в том, чтобы определенные компоненты сервисов умели подтягивать обновленную конфигурации и работать на основе этой конфигурации, т.е. конфигурация приложения меняется уже после запуска сервиса. Я проведу небольшой обзор подходов, которые нашел применительно к такой задаче и то, на чем остановился.

На проекте используется spring boot 2.6.4 и kotlin 1.5.31. Также для конфигурации сервисов используется spring cloud config server, где в качестве backend используются Git + Vault.

Читать далее

Топ-15 шпаргалок для программистов и WEB-разработчиков

Время на прочтение4 мин
Охват и читатели48K

Поскольку технологии веб-программирования быстро развиваются, нам приходится изучать много нового. Некоторые языки и фреймворки настолько сложны, что вы можете не помнить весь синтаксис и других тонкостей. Поэтому хорошие люди придумали шпаргалки, в которые можно быстро глянуть и вытянуть необходимое для себя.

Если вам не хочется делать заметки самим, то не стоит беспокоиться, потому что шпаргалки доступны по любому предмету в Интернете. Чтобы помочь вам в учебе, я составила этот список лучших шпаргалок.

Хватит разговоров, давайте перейдем к делу.

Читать далее

Не бойтесь использовать Gradle

Время на прочтение9 мин
Охват и читатели57K

Дорогие junior и все, кто занимается copy-past конфигов Gradle.

В этой статье я хочу простым языком рассказать вам о gradl'овой конфигурации сборки вашего проекта, чтобы вы не боялись использовать Gradle.

Читать далее

Как я участвовал в создании информационных систем для медицины

Время на прочтение6 мин
Охват и читатели6K

В 1987-м году я окончил с красным дипломом приборостроительный факультет челябинского политехнического института по специальности "Автоматика и телемеханика", хотя планировал стать физиком-теоретиком и школу заканчивал в специализированной школе-интернате №18 при МГУ. По распределению попал в специализированное конструкторское бюро и до 1991-го года разрабатывал электронные блоки для бронетанковой техники. До сих пор считаю что полученная при этом инженерная школа является чем-то недостижимым в современных реалиях. В частности, мы с коллегами создали комбинированный аналого-цифровой программируемый комплекс, который в реальном времени проводил расчеты по математической модели объекта, описываемой системой дифференциальных уравнений 4-го порядка с 14-ью нелинейными элементами и принимал решения более 10 тысяч раз в секунду. На современных вычислителях это наверное и можно было бы сделать, но в то время мы решали задачу имея в распоряжении только набор интегральных микросхем, самой крутой из которых была ПЗУ на 2 килобайта и всё наше творчество должно было уместиться в 9 литров объёма и работать в диапазоне температур от -40 до +85.

После того как в 1991-м году страна развалилась я выбрал стезю программирования и с тех пор так или иначе связан с разработкой ПО и построением крупных информационных систем. Начинал с создания комплексного ПО и "умной кассы" для торгового центра, потом была информационная система учёта аренды муниципального имущества. Потом я вернулся в конструкторское бюро на считавшийся безнадёжным проект по созданию комплекса диагностических стендов для автоматизированного поиска неисправностей в электронных блоках в интересах иностранного заказчика. После окончания разработки я возглавлял группу разработчиков, которая сдавала эти стенды заказчику, и мы с этой задачей справились.

Читать далее

Ближайшие события

Использование SEDA со Spring Integration и Apache Camel

Время на прочтение13 мин
Охват и читатели6.4K

SEDA, или Staged Event-Driven Architecture, представляет собой архитектурный стиль, предложенный Мэттом Уэлшем в его докторской диссертации. диссертация. Его основными преимуществами являются масштабируемость, поддержка высококонкурентного трафика и удобство эксплуатации.

В этом туториале мы будем использовать SEDA для подсчета уникальных слов в предложении с помощью двух разных реализаций: Spring Integration и Apache Camel.

Читать далее

Java 20: огромные разреженные сегменты памяти

Время на прочтение4 мин
Охват и читатели4.4K

Знаете ли вы, что можно выделять сегменты памяти, которые больше, чем физический размер оперативной памяти вашего компьютера, и даже больше, чем размер всей вашей файловой системы? Прочтите эту статью и узнайте, как использовать сопоставленные (mapped) сегменты памяти, которые могут быть или не быть «разреженными», и как выделить 64 терабайта разреженных данных на ноутбуке.

Читать далее

Делаем дашборды для Grafana из того, что отдает экспортер метрик Prometheus и автоматизируем это

Время на прочтение4 мин
Охват и читатели31K

Столкнувшись с необходимостью сделать новый дашборд в Grafana под много новых метрик (а не добавить, так как готовый из галереи не находится), я сделал небольшое веб-приложение, которое сконвертирует "портянку" с данными метрик в простенький, но доходчивый дашборд со всеми необходимыми метриками.

В статье описание работы конвертора и рассказ о некоторых хитростях в настройке мониторинга Apache Spark и Hadoop.

Укыйбызмы?

Пишем бота-кликера на Kotlin для Lineage 2

Время на прочтение8 мин
Охват и читатели24K

Еще не все новогодние салаты были съедены, “Ирония судьбы” уже просмотрена, а до начала рабочей недели еще целая вечность и нужно было придумать себе развлечение на оставшиеся праздники. Предвкушая ностальгию я открыл Lineage 2, одну из самых популярных MMORPG “нулевых” на СНГ пространстве. Однако, самому играть уже не хотелось и пришла идея автоматизировать это дело. За подробностями под кат!

Читать далее

Управление зависимостями в IntelliJ IDEA

Время на прочтение5 мин
Охват и читатели25K

В этом руководстве, в продолжение темы просмотра зависимостей, мы рассмотрим управление зависимостями в IntelliJ IDEA.

Мы рассмотрим различные способы добавления зависимостей в ваш проект, а также способы добавления, обновления и удаления зависимостей с помощью Package Search.

Читать далее

Повышение электробезопасности

Время на прочтение4 мин
Охват и читатели1.8K

При производстве работ в электроэнергетике желательно обеспечить дополнительный контроль за работой производимой на высоковольтном оборудовании для безопасности работ и последующего анализа действий при несчастном случае.

Для выполнения вышеуказанного условия предлагается данная система сбора информации с различных датчиков. Сбор данных происходит с помощью приложения устанавливаемого на сотовый телефон, который может находится как у непосредственного исполнителя; либо у наблюдающего за работой; либо у обоих. Связь датчиков с сотовым телефоном по Bluetooth. Полученные данные накапливаются в телефоне, а также одновременно передаются в определенный Telegram-канал с идентификационными данными пользователя (код компании/фамилия, имя). По идентификационным данным в телеграмм-канале производителя устройств возможна сортировка полученных данных.

Кроме регистрации показаний датчиков сигнализирующих об опасности поражения электрическим током, предусмотрено отображение показаний подключаемых цифровых приборов.

Информация от датчиков передается по Bluetooth BLE в наименовании устройства в режиме advertising – посылки «рекламы» (18 байт).

Читать далее

Движение по магистрали без аварий. Или как передавать 1,5 терабайта в сутки и ни одного не потерять?

Время на прочтение3 мин
Охват и читатели3.2K

Привет, Хабр.

Меня зовут Владимир Евсеев, я Senior Java developer, Teamlead в SSP SOFT.

Наша команда приступила к масштабному проекту: системе, обеспечивающей транспортный уровень документооборота банка. Сегодня я расскажу, как мы справились с первым этапом: выстроили магистраль, способную передавать около 150 000 файлов в сутки, или 1,5 терабайта информации. Поделюсь, что получилось и что еще предстоит  довести до совершенства.

Читать далее