Как стать автором
Обновить
Yo! @Yo1read⁠-⁠only

Developer

Отправить сообщение

Еще раз о перформансе стримов в Java

Время на прочтение9 мин
Количество просмотров6.5K

Перевод статьи, где автор замеряет перформанс Stream API в Java на около-реалистичных (и не очень) задачах. Как и автору, мне нередко на глаза попадаются заявления что мол вся эта функциональщина в джаве - баловство и скорее вредный сахар. И что старовер с джавы 1.6 напишет на циклах заведомо более быстрый код, чем хипстер на стримах. Также в статье наглядно демонстрируется, в каких именно условиях параллельные стримы могут начать приносить пользу.

Читать далее
Всего голосов 9: ↑10 и ↓-1+11
Комментарии13

Контроллеры на дженериках: пишем кода в 3 раза меньше

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров14K

В рамках наших Java курсов "Из Middle в Senior" (предыдущие посты Миграция Java Spring Boot на Kotlin и «Работа с документами в Java») недавно вышел новый курс Startup: Spring Boot веб-приложение с хостингом и инфраструктурой на основе эволюции нашей платформы онлайн-обучения с 2016г.

В рамках курса есть много подходов, сокращающих количество кода/усилий разработчиков. Один из них: сквозная параметризация от сервисов до репозиториев, позволяющая сокращать количество кода ~3х. Код приведен на Java, но общий подход может быть использован в любом языке с параметризацией. Кому интересно:

Добро пожаловать
Всего голосов 9: ↑6 и ↓3+3
Комментарии22

Всё ещё используете If/else валидацию в Spring 6.0+ / SpringBoot 3.0+?

Время на прочтение12 мин
Количество просмотров12K

Чтобы избежать влияния несанкционированных параметров на ваш бизнес, в ваших веб-сервисах должна быть реализована проверка параметров на уровне контроллера! В большинстве случаев параметры запроса можно разделить на два следующих вида:

— POST и PUT-запросы, использующие requestBody для передачи параметров.
— GET-запросы, использующие requestParam/PathVariable для передачи параметров.

Читать далее
Всего голосов 19: ↑14 и ↓5+9
Комментарии11

Гексагональная Архитектура и Spring Boot

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров9.5K

Всем привет!

Хочу рассказать про опыт применения гексагональной архитектуры в одном из наших микросервисов. С чем столкнулся и какие выводы сделал.

Читать далее
Всего голосов 14: ↑14 и ↓0+14
Комментарии15

Искусство ETL. Пишем собственный движок SQL на Spark [часть 5 из 5]

Уровень сложностиСложный
Время на прочтение14 мин
Количество просмотров1.8K

REPL


В данной серии статей я подробно рассказываю о том, как написать на Java собственный интерпретатор объектно-ориентированного диалекта SQL с использованием Spark RDD API, заточенный на задачи подготовки и трансформации наборов данных.

Краткое содержание предыдущей серии, посвящённой API расширения и разного рода технической обвязке:


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


Теперь можно поговорить о последних штрихах, делающих инструмент — инструментом, а именно, об интерактивно-отладочном режиме, то есть, REPL, клиенте и сервере, а также о генераторе документации.


Предупреждение о рейтинге «M for Mature»

Уровень сложности данной серии статей — высокий. Базовые понятия по ходу текста вообще не объясняются, да и продвинутые далеко не все. Поэтому, если вы не разработчик, уже знакомый с терминологией из области бигдаты и жаргоном из дата инжиниринга, данные статьи будут сложно читаться, и ещё хуже пониматься. Я предупредил.

Читать дальше →
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Применение ООП на практике

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров17K

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

Читать далее
Всего голосов 16: ↑15 и ↓1+14
Комментарии17

PECS и WildCards на пальцах

Уровень сложностиСредний
Время на прочтение3 мин
Количество просмотров1.6K

Данная статья не научный труд. Это простое объяснение, зачем введены понятия PECS и WildCards, что бы понять и запомнить.

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии3

Spark не для чайников: где?

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.4K

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

В мире Apache Spark начинающим точно не пропадешь: статьи, уроки, курсы - на любой вкус. Что хабр, что медиум, а так же другие онлайн-платформы просто завалены статьями, где вам в 100500-ый раз говорят про SparkContext, Driver и Executor, приводят тривиальные примеры кода из официальной документации (ок-ок, поправлюсь - часто все же с небольшими изменениями), читают уже заезженных датасет с поездками такси в Нью-Йорке и делают какие-то тривиальные агрегации, рассуждают с умным видом про разницу coalesce и repartition и т.п. Не отстают и произовдители курсов класса "Войти в ИТ" - как известные онлайн-школы, так и "частники" на порталах типа Udemy, Pluralsight и т.п. Выбор курсов по Spark там очень велик.

А в чем, собственно, проблема то ===>
Всего голосов 11: ↑11 и ↓0+11
Комментарии21

В Java 21 собираются реализовать сопоставление с образцом – так, глядишь, я снова на этот язык перейду

Время на прочтение23 мин
Количество просмотров17K

Преуведомление

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

Выпуск Java 21 состоялся 19 сентября 2023 года. В этой версии поддерживаются паттерны записи в switch-блоках и выражениях. Такой синтаксис выглядит монументально (как минимум, по меркам Java). Это водораздел, после которого мы вправе говорить, что в Java полноценно поддерживаются паттерны функционального программирования, подобно тому, как это сделано в Kotlin, Rust или C#. Вот и первый пункт, который пробуждает во мне зависть (я Kotlin-разработчик).

Читать далее
Всего голосов 29: ↑29 и ↓0+29
Комментарии12

Apache Spark 3.4 для Databricks Runtime 13.0

Время на прочтение10 мин
Количество просмотров1.3K

Databricks — это аналитическая платформа для облачных вычислений, работы с большими данными и машинного обучения. Компания разрабатывает data lake и работает с фреймворком Apache Spark. Приводим перевод статьи Databricks о нововведениях Apache Spark 3.4, который вошел в релиз Databricks Runtime 13.0.

Читать далее
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Собеседование на Java разработчика. Разбор 1606 вопросов и ответов. Часть 3 (с 270 по 370 вопрос)

Уровень сложностиПростой
Время на прочтение78 мин
Количество просмотров9.6K

Всем привет! Меня зовут Владимир Баганов. Я продолжаю серию статей с простым разбором вопросов на собеседованиях на Java разработчика. Под капотом 370 разобранных вопросов из 1606 вопросов.

Читать далее
Всего голосов 17: ↑5 и ↓12-7
Комментарии6

Собеседование на Java разработчика. Разбор 1606 вопросов и ответов. Часть 2 (с 170 по 269 вопрос)

Уровень сложностиСложный
Время на прочтение102 мин
Количество просмотров17K

Всем привет! Меня зовут Владимир Баганов. Я продолжаю серию статей с простым разбором вопросов на собеседованиях на Java разработчика. Под капотом 269 разобранных вопросов из 1606 вопросов.

Читать далее
Всего голосов 19: ↑11 и ↓8+3
Комментарии3

Ещё раз о пропертях или откуда что берётся

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров9.6K

О чём вообще речь?

Всем привет! В данной статье речь пойдёт о настраиваемых параметрах конфигурации Spring приложений. Когда я только начал изучать Spring, естественно, одним из источников знаний были готовые примеры, проекты-образцы. И меня жутко бесило, что какие-то нужные для работы приложения значения появлялись «ниоткуда». К примеру, автор какого-нибудь туториала предлагал для проверки только что созданного учебного приложения зайти на localhost по порту 8088. Откуда берётся 8088? Почему не 8089? Оказалось, что для таких настраиваемых параметров есть специальные файлы. Итак:

Какие бывают настраиваемые параметры?

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

Например, за то на каком порту будет крутиться встроенный http-сервер (если мы используем Spring Web) отвечает параметр server.port. В том самом туториале из вступления в соответствующем файле server.port был равен 8088. Выглядит это (в простейшем случае) так:

server.port=8088

Имя параметра может состоять (и, как правило, состоит) из нескольких частей. Например, все «спринговые» параметры начинаются со слова «spring». Кастомные (пользовательские) параметры, введённые разработчиком конечного приложения, могут начинаться, например со слова application или любого другого. В зависимости от используемого формата файла, части разделяются по-разному (см. следующий раздел). Простейший вариант, просто точками. Пример пользовательских параметров:

Читать далее
Всего голосов 13: ↑11 и ↓2+9
Комментарии9

Микросервисы сына маминой подруги. Пишем правильные микросервисные приложения на Java

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров17K

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

Читать далее
Всего голосов 17: ↑9 и ↓8+1
Комментарии12

Выражение Hibernate запросов в виде типо‑безопасных Java-потоков

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров4.6K

В этой статье вы узнаете, как расширение JPAstreamer Quarkus упрощает выполнение типо‑безопасных запросов Hibernate без излишней многословности и сложности.

Читать далее
Всего голосов 1: ↑1 и ↓0+1
Комментарии2

@Transactional в Spring и исключения

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров12K

Привет! В этой статье я бы хотел рассказать, как Spring'овая аннотация @Transactional ведет себя при возникновении исключений. Про это немало написано, в том числе на Хабре. Например, тут или тут. Поэтому, чтобы не повторяться, я не буду подробно расписывать как и почему исключения влияют на откат транзакций, а вместо этого просто покажу несколько примеров.

Читать далее
Всего голосов 14: ↑13 и ↓1+12
Комментарии0

Генерация DAG в Apache Airflow

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров4.6K

Пошаговая инструкция о том, как из одного DAG сделать фабрику DAG.

Включает в себя: установка Airflow через Docker и поэтапное объяснение того, как сделать фабрику DAG.

Читать далее
Всего голосов 4: ↑3 и ↓1+2
Комментарии1

Независимая разработка совместимых компонент на ORM – миф или реальность в аннотациях Java?

Время на прочтение16 мин
Количество просмотров2.7K

При работе с ORM (object relation mapping) все время преследует ощущение постоянного создания монолитного приложения — один раз привязался к какой‑либо сущности (например, справочник Контрагенты) и весь код заполнен ссылками на эту конкретную реализацию. Можно ли независимо разрабатывать в ORM совместимые между собой справочник «Контрагентов» и использующий его документ «Платежное поручение», но при этом избежать жестких зависимостей? Спасут ли нас микросервисы? Пример на аннотациях Java демонстрирует как это возможно делать.

Читать далее
Всего голосов 5: ↑1 и ↓4-3
Комментарии40

Spring-потрошитель: жизненный цикл Spring Framework

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров45K

Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя самые полезные и актуальные технологии, такие как i18n, JPA, MVC, JMS, Cloud и т.п.

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

Читать далее
Всего голосов 19: ↑15 и ↓4+11
Комментарии9

Server-Sent Events в java. От любви до ненависти…

Время на прочтение9 мин
Количество просмотров7.9K

Я работаю на проекте, цель которого это некая пост-обработка финансовых операций. Это большая система, со множеством модулей и различными интеграциями с другими системами из которых к нам и попадают эти операции. У нас есть АРМ, он же веб-версия, он же фронтенд, для пользователей, которые как раз и занимаются этой пост-обработкой. Где-то около года назад появилась потребность оповещать пользователей о появлении новых операций в системе. SSE(Server-Sent Events), в данном случае, казался самым логичным и простым вариантом. Мне выпала честь реализовывать эту фичу на стороне сервера. Как оказалось, в русскоязычном сегменте достаточно мало информации об SSE в стеке java, поэтому я решил оформить свой опыт в эту статью, в ней я постараюсь осветить процесс и особенности реализации технологии в стеке java. Итогом данной статьи будет простой MVP, который умеет работать с SSE.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии2

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность