java
-
@Before @After в тестах
-
Immutable Java object
Что такое неизменяемый объект? Когда вы создаете новое значение для такого объекта, на самом деле создается новый объект, и старый объект остается неизменяемым. Это будет более эффективным по времени и памяти, чем изменение изначального объекта. Это обеспечивает безопасность многопоточного программирования, поскольку неизменяемые объекты могут быть разделены между несколькими потоками без риска изменений и ошибок.
-
Karaf в Kubernetes
Модульный karaf в микросервисе. Мозг в трубочку. А почему бы не кубер в bundle карафа? А может сразу windows в bundle? (были опыты запуска урезанного windows в bundle). Речь идет о модульной java. Модульная java? А это она! Karaf это реализация OSGi. OSGi - шина с плагинами (java-модулями, в терминах OSGi называется bundle), ктр. взаимодействуют между собой. Один bundle отправляет сообщение в шину через интерфейс, предоставленный шиной, а другой/другие bundle, ктр. заявляют, что могут реализовать интерфейс, обрабатывают сообщение. При этом источник даже не знает кому и сколько читателей. И еще одна фишка Karaf (может быть основная) замена функциональности без остановки всего сервиса.
-
Mockito
1. Mockito.mock() (ЭТО МЕТОД)
Метод Mockito.mock() позволяет нам создать фиктивный объект класса или интерфейса. -
Автоматизация хаоса - Camunda
Давно прочитал в журнале Компьютерра статью "Автоматизация хаоса". 1999 год!!! В google полно документов на эту тему. Пару слов хочется черкнуть от себя. В большинстве проектов, на которых приходилось работать, так или иначе возникает эта тема.
Хотя и не очень явно. -
Два слова о Camel
Spring boot велик и могуч, но есть есть и другие инструменты.
Camel позволяет абстрагироваться от кода и сосредоточиться на конфигурации, взаимодействии компонент. Camel это интеграционный клей, который соединяет компоненты системы, предоставляя коннекторы. Примеры коннекторов: rest, ftp, Spring bean и еще много всяких: https://camel.apache.org/components/next/index.html#_components.
-
Динамическое создание Spring Bean в RunTime
Описать мои решения создания бинов с параметрами из базы данных и создания массива бинов и передачей этого массива как зависимость в другой бин (в задаче опроса филиалов в проекте МТС).
-
Интеграционное тестирование с JUnit
Предупреждение: я знаю, что JUnit для UNIT тестов и цена им небольшая. Речь о применении JUnit в ИНТЕГРАЦИОННЫХ тестах. И с другой стороны, на тех проектах, где мне приходилось работать, интеграционное тестирование проводилось вручную. Можно это дело автоматизировать.
-
Конвертирование речи в текст
Результаты поиска инструментов перевода речи в текст
Оглавление:
-
Многомодульный проект
Описан способ организации разработки, когда один из модулей (library) используется в нескольких проектах (application1, application2,... applicationN). Чаще, и возможно проще, переиспольуемый модуль разрабатывается отдельно и затем подключается как зависимость через репозиторий maven. При изменении library его maven версия получает новый идентификатор и это изменение должно быть учтено в целевых проектах. Заготовка проекта: https://github.com/cherepakhin/multi-module.
В проекте два модуля Application и Library. -
О CompletableFeature
Интересно было узнать о возможностях CompletableFeature.
Проект и описание находится тут https://github.com/cherepakhin/completablefeature_many_benchmark -
Области памяти - Stack, Heap
Stack – Каждый поток имеет свой стек, который создается в тоже время, когда создается поток. Стек (локальная или рабочая память потока) содержит фреймы, которые создаются при каждом вызове метода и хранят локальные переменные и промежуточные результаты, возвращают значения для методов и выбрасывают исключения, если это необходимо. Задается параметром Xss (default 1Mb, примеры: -Xss1m, -Xss1024k).
-
Определение Spring beans
Проект для демонстрации на Kotlin https://github.com/cherepakhin/spring_config_k
Аналогичный проект на Java https://github.com/cherepakhin/spring_config -
Работа с log
Разработчик сам должен позаботиться о качестве логов, информации из stacktrace будет маловато. Интересны условия возникновения ошибки. Однозначно нужны значения переменных в момент возникновения ошибки, т.к. эти данные потом нигде не получить. Примитивный пример:
-
Создание fat jar файла
Оглавление:
-
Ссылки Apache Camel + Spring Boot
Apache Camel и Spring Boot file:///home/vasi/doc/java/epdf.pub_camel-in-action.pdf
https://camel.apache.org/components/next/index.html
https://camel.apache.org/components/4.4.x/file-component.html -
Тестирование REST
В заметке описаны инструменты тестирования REST и примеры использования.
А чем, собственно, проблема?
-
Тестирование с TestNG
TestNG - еще одна система тестирвания. Можно использовать для интеграционных тестов. https://www.baeldung.com/testng Пример с DataProvider:
-
Установка Kafka в Linux
Установка описана в https://www.dmosk.ru/miniinstruktions.php?mini=kafka-linux.
Дистрибутив Kafka: https://downloads.apache.org/kafka/
Скачать https://downloads.apache.org/kafka/3.6.2/kafka_2.12-3.6.2.tgz -
Установка нужной версии Java
В системе настройки сделаны для java 11. В путях linux указана java 11. Нужно настроить maven проект на java 17.
$ java -version openjdk version "11.0.18" 2023-01-17
Нужна java 17, для этого нужно установить JAVA_HOME.