Как стать автором
Обновить
2
0

Java dev

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

PostgreSQL Antipatterns: устраняем вложенные интервалы

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

Недавно попался на глаза запрос, которым хотели отобрать в таблице (очевидно, для последующего удаления) все id записей интервалов, которые полностью перекрыты каким-то другим интервалом того же owner'а.

Но self-JOIN показал себя не лучшим образом...

Как сделать эффективнее?
Всего голосов 28: ↑27 и ↓1+31
Комментарии3

Популярные алгоритмы машинного обучения. Теоретические основы и реализация с нуля на Python

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

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

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

Структурное логирование в Spring Boot 3.4

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

С выходом Spring Boot 3.4 логирование стало ещё удобнее: теперь логи можно записывать в более унифицированном формате, что упрощает их анализ и обработку.

В новом переводе от команды Spring АйО мы разберем основные шаги для настройки и использования этой технологии в проекте.

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

Kotlin Coroutines. От А до Я

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

Полный разбор корутинного мира с нуля, который может послужить отличной шпаргалкой на собеседовании!
Разберем разницу между многопоточностью и асинхронностью; раскроем все основные понятия корутин, параллельно ссылаясь на исходники kotlinx.coroutines; посмотрим их применение на практике и в конце напишем свой собственный CoroutineScope.

Let's go
Всего голосов 25: ↑25 и ↓0+29
Комментарии12

Индексы в PostgreSQL — 1

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

Предисловие


В этой серии статей речь пойдет об индексах в PostgreSQL.

Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.

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

В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
Читать дальше →
Всего голосов 104: ↑103 и ↓1+102
Комментарии59

Небезопасный android часть 1: эксперименты с sun.misc.Unsafe

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

Java очень глубоко интегрирована в android и имеет в данной ОС свою нестандартную виртуальную машину — DVM/ART, поэтому многие детали реализации отличаются от привычных. А что насчёт внутреннего API sun.misc.Unsafe? В этом цикле статей с его помощью мы попытаемся максимально сломать виртуальную машину андроида.

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

Kotlin Coroutines. Часть 1: Первое погружение

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

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

Меня зовут Соловьев Андрей, я Java-разработчик в «Рексофт». Сегодня мы поговорим про Kotlin Coroutines. Это моя первая серьезная публикация, и я буду рад вашему фидбеку.

Ну что ж, давайте начинать!

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

Сдача Spring Certified Professional (2V0-72.22) в 2024 году: Удаленно из России

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

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

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

С заботой о CPU: как найти узкое горлышко и сконфигурировать Postgres Pro

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

СУБД Postgres Pro – сложный механизм, который можно гибко настраивать под конкретный тип нагрузки. Для этого в нём имеется множество параметров и инструментов. Например, одним из главных потребителей ресурсов CPU является оптимизатор/планировщик запросов, который отвечает за построение оптимального плана выполнения. Существует большое количество параметров, которые прямо или косвенно влияют на работу планировщика, но к их изменению надо подходить очень осторожно, т. к. возможен обратный эффект. Например, параметры _collapse_limit могут и помочь оптимизатору рассмотреть большее количество вариантов планов, и негативно повлиять на время планирования.

Сегодня я расскажу, как мы решали реальную проблему производительности и высокой (> 90%) утилизации ресурсов CPU на промышленном «боевом» сервере с СУБД Postgres Pro Enterprise 15, обслуживающем запросы бизнес-приложения, какие для этого использовали инструменты и что мы изменили в настройках СУБД.

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

Spring Boot Starter: практически, принципиально и подробнее. Часть 3

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

Привет, Хабр! С вами снова Сергей Соловых, Java-разработчик в команде МТС Digital. Мы продолжаем изучать возможности и нюансы построения собственного Spring Boot Starter. В предыдущих частях мы разобрали структуру стартеров, автоконфигурацию и зависимости бинов. А сегодня давайте поговорим о параметрах приложения.

Умение работать с файлами конфигураций позволяет избежать hard-coding-данных в коде библиотеки. Это делает ее более гибкой и легко конфигурируемой, это значит, что ее можно адаптировать под конкретные требования. С помощью параметров можно настроить контекст или изменить поведение сервиса. Начнем с рассмотрения нескольких способов интеграции параметров из файла конфигурации в код приложения.

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

Как заглянуть под капот Composable функции

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

Возникал ли у тебя когда-нибудь вопрос о том, как посмотреть, во что Compose Runtime превращает наши Composable-функции, например, когда ты сделал оптимизацию и хочешь понять, что она работает так, как ты ожидаешь? Если да, то ты по адресу. Привет! Меня зовут Абакар, работаю главным техлидом в Альфа-Банке. В статье попробую разобраться, как Composable-функции меняются при компиляции и как работает аннотация @Composable.

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

Как публиковать библиотеку в Maven Central Portal в 2024 году

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

Начиная с 12 марта 2024 года регистрация на OSSRH портале теперь недоступна. Большинство существующих туториалов в интернете описывает как раз опыт публикации через OSSRH на Maven Central. Из-за чего после марта 2024 года эти туториалы стали не актуальны для публикации проектов новых авторов.

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

Экспортируем иконки из Figma в проект одним кликом: история одной автоматизации

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

Абсолютно стандартное начало: в Figma размещался набор из примерно тысячи иконок, которые успешно перенесли в проект. Все собрали, потестили и зарелизили. Про автоматизацию никто не думал, поскольку задача казалась «одноразовой». Ну а в случае последующих обновлений или дополнений каких-то элементов ручной труд должен был занять несколько минут. Что тут может пойти не так?

Под катом про знакомый всем «человеческий фактор», плюс краткий гайд по автоматизированному экспорту картинок из Figma в рабочий проект.

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

Kotlin Coroutines под капотом

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

Вероятнее всего у вас спрашивали на собесе «как работают корутины под капотом?», вы не долго думая выбрасывали что‑то в стиле «там под капотом стейт‑машина, она определяет какая suspend функция будет выполняться», но понимали ли вы на самом деле всё о чем говорили? Возможно, только вам это известно, но если честно я очень плохо понимал собственные ответы на такие вопросы как бы это парадоксально не звучало и даже после десятка пройденных собесов у меня не было полноценной картины как работает внутрянка этой поистине невероятной библиотеки «сладкой асинхронщины».

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

Современные способы запуска фоновой работы в Android

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

На протяжении нескольких лет каждый релиз новой версии Android вводит ограничения на существующие API и новые API для запуска работа в фоне в зависимости от её типа. Я собрал все актуальные способы запуска для Android и рассказываю когда что стоит выбирать: WorkManager, Service или что-то другое

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

Volatile, Lock-free, Immutable, Atomic в Java. Как понять и начать использовать

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

Привет, меня зовут Денис Агапитов, я руководитель группы Platform Core компании Bercut.

Сегодня хочу поговорить об одном из lock-free алгоритмов в Java. Разберём как с ним связано ключевое слово volatile и паттерн immutable.

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

Мониторим и нагружаем приложения Jmix

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

Инструменты мониторинга работы приложений могут быть полезны не только DevOps’ам, но и разработчикам для исследования производительности приложения в поиске, например узких мест в его работе, поэтому в данной статье мы не только настроим мониторинг для Jmix-приложения, но и подготовимся к его синтетическому нагрузочному тестированию. Особенностью платформы Jmix в силу того, что она использует фреймворк Vaadin, является тот факт, что работа UI интегрирована с бекендом, но это также значит и то, что и метрики можно использовать прозрачно, т.е. замерять ими работу интерфейсного слоя. 

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

Стоит ли бояться serializable-транзакций больше, чем труднонаходимых багов?

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

В базах данных транзакции обладают свойствами ACID, где «I» означает изоляцию транзакций при одновременном (concurrent) выполнении.

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

Сериализация выполнения транзакций не бесплатна с точки зрения производительности.

Многие СУБД поддерживают более слабые уровни изоляции, оставляя за разработчиком выбор подходящего. В монолитных СУБД более слабый уровень изоляции часто используется по умолчанию. Так, в PostgreSQL и MySQL это «read committed». В распределённых СУБД чаще по умолчанию более строгие уровни: «repeatable read» в YugabyteDB и TiDB, «serializable» в CockroachDB и YDB.

Слабые уровни изоляции могут быть причиной очень труднонаходимых багов. Причём эти баги могут вызвать уязвимости в безопасности.

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

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

Мем айсберг SQL: погружение в глубины баз данных

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

Мем айсберг SQL: погружение в глубины изучения баз данных

Мем айсберг SQL — это вирусное интернет-изображение, изображающее айсберг с несколькими слоями. Вершина айсберга содержит общеизвестные концепции и инструменты SQL, такие как операторы SELECT и JOIN. Однако по мере погружения под воду становятся видны более абсурдные и малоизвестные аспекты SQL.

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

Книга: «Java для опытных разработчиков. 2-е издание»

Время на прочтение22 мин
Количество просмотров6.1K
image Привет, Хаброжители!

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

Узнайте, как Java работает на уровне байт-кода. Освойте ценные приемы конкурентного выполнения и оптимизации быстродействия, а еще ключевые методы сборки, тестирования и развертывания. Также рассмотрите альтернативные языки для JVM – Kotlin и Clojure. Изучив материал, вы будете выделяться на фоне других разработчиков!
Читать дальше →
Всего голосов 3: ↑3 и ↓0+5
Комментарии4
1
23 ...

Информация

В рейтинге
4 562-й
Дата рождения
Зарегистрирован
Активность