Обновить
256K+

Java *

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

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

Prometheus: как Бог огня стал Богом мониторинга

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

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

Метрики собирает и анализирует Prometheus – гибкая система с открытым исходным кодом, являющаяся одним из самых распространенных инструментов для реализации мониторинга.

Цель данной статьи - рассмотреть процесс разработки сервиса мониторинга на основе Prometheus и оценить его значимость в контексте современной разработки программного обеспечения.

Читать далее

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

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

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

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

Читать далее

Священная война языков программирования или опыт неудачного переезда с Python на Golang

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели27K

Что же меня побудило перейти на Golang? В то время я сидел на Python ещё версии 2.7.9 — это примерно 2017 год. Потом вышла версия Python 3. Оказалось, что несмотря на множество обещаний, что теперь всё будет работать из коробки, начались дикие конфликты при переходе с 2.7 на новую третью версию. Я тогда немного разочаровался и начал смотреть, что ещё есть интересное, чтобы поработать с сетями. 

Под мои задачи всегда подходил Python. И в работе с Python я себя чувствовал примерно так: это огромная, очень добрая, очень хорошая, почти пушистая черепаха, но при этом ужасно неповоротливая. Очень тяжело с ней путешествовать, очень тяжело порой заставить её сделать то, что мне нужно. В то же время расширение PyPy разгоняло её очень сильно — условно, с 9 до 0,2 секунд.

Читать далее

Kotlin глазами Java-разработчика

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

Привет, хабр! Сегодня я хочу рассказать про свой опыт взаимодействия с языком kotlin.

Представлюсь – я java разработчик, работаю в крупном банке, создаю (и поддерживаю существующие) микросервисы.

Небольшая ремарка: я не собираюсь становиться Android разработчиком, ни сейчас, ни в будущем, поэтому, когда я заинтересовался новым языком, не принимал в расчет аргументы про различные удобства мобильной разработки на нем, и руководствовался только удобством языка в целом для бэкэнда.

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

Читать далее

Java Digest #16

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

Всем привет! 👋 👋 👋 👋 Мы — Java-разработчики Т-Банка: Андрей, Арсений, Константин и Константин. Собираем интересные новости, статьи, туториалы и другие материалы из мира Java-разработки и делимся этим со всем сообществом.

В этом выпуске вас ждет обновление Kora, Intellij IDEA, null-safety в Java без регистрации и СМС. Посмотрим видео с прошедшего JVM Language Summit, затронем тему исключений. Не забудем и про безопасность наших приложений, и про логи. Считаем, что этот выпуск можно считать рекордным по количеству упоминаний Project Valhalla: аж 9 упоминаний! 

Читать далее

Удивительная история развития сортировки в JDK

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

Как вы считаете, если выполнить java.util.Arrays.sort(), то какая сортировка будет вызвана? Quicksort? Timsort? И та, и другая, потому что для объектов вызывается Timsort, а для примитивов (чисел int, long, float и так далее) — Dual-Pivot Quicksort. В JDK 6 для объектов использовался стандартный Merge sort, а для чисел классическая реализация Quicksort с одним опорным элементом, предложенная Джоном Бентли и Дугласом МакИлрой. В JDK 7 оба алгоритма поменялись: теперь объекты сортируются с помощью Timsort, автор Тим Петерс, а для простых типов данных используется Dual-Pivot Quicksort, предложенный мною вместе с Джоном Бентли и Джошем Блоком в 2009 году. Эта сортировка используется более 15 лет не только в JDK, но и в Android (хотя и немного устаревшая версия).

А зачем нам вообще второй алгоритм сортировки, если есть Timsort? Почему не использовать один и для объектов, и для примитивов? Сегодня я, как автор, расскажу историю Dual-Pivot Quicksort: как он начинался, как развивался и как продолжает развиваться сейчас.

Читать далее

Как я разрушил свои стереотипы об автотестах, или Мой путь от Appium до Kaspresso

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

Всем привет!

Меня зовут Сергей Дударев, я руководитель направления автоматизированных тестов в департаменте мобильной разработки «Лаборатории Касперского». В этой статье хочу рассказать, как я прошел путь от Appium до open-source-фреймворка Kaspresso, с чего начинал, какие делал для себя открытия, как разрушались мои стереотипы и какие по итогу были сделаны выводы.

Читать далее

Тестирование сообщений в Kafka

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

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

Читать далее

Интересные приёмы, взятые из исходников Android

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели24K
Интересные приёмы, взятые из исходников Android

В процессе чтения исходников Android SDK я замечал интересные механики и приёмы написания кода, какие-то из них до сих пор используются при создании новых библиотек, другие, напротив, заменены более логичными и понятными конструкциями. В этой статье я постараюсь перечислить всё, что смог заметить сам при изучении исходников Android'а. Сразу отмечу: эта статья не претендует на полноту материала и возможно вы нашли даже больше интересных моментов при чтении кода, ладно, погнали, короче!
Читать дальше

Java. Мое решение для поиска изменений между двумя объектами. ChangeChecker

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

Во время работы над аддоном для Jakarta-валидации мне пришлось писать логику по проверке изменений в модели по собственной аннотации CheckExistingByConstraintAndUnmodifiableAttributes.

Долго разглядывал получившейся код, и в голову пришла светлая (наверное) идея: почему бы не вынести все это в полноценный настраиваемый класс?

Читать далее

Краткая история Java

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

Команда Spring АйО подготовила перевод статьи, посвящённой истории Java — одного из самых популярных языков программирования. 

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

Читать далее

Бесконечная, вечная платёжная система всея МИРЭА

Уровень сложностиПростой
Время на прочтение40 мин
Охват и читатели22K

В это нелегкое время, так сложно найти работу, когда первокурсники МИРЭА уже пишут курсовые с микросервисами на 1к рпс, а выпускники каждый по системе на миллиарды пользователей. Видимо старому Java-коту ничего не остается, кроме как беседовать с вечностью и её сестрой бесконечностью. Если не они, то кто поможет коту найти работу?

Статью можно прочесть в формате pdf.

В атаку!

Мотивацию надо поднять

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

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

Читать далее

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

Хайп вокруг аппаратного ускорения ИИ и реальная ситуация. Обучение модели на телефоне и результаты в миллисекундах

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

Сегодня в ленте было про GPU для дата-центров. Смешно было про "мейнфреймы в офисе для AI" - в статье, на которую ссылается автор, нет ничего про то, что искуственный интеллект может или будет работать на мейнфреймах. И опять про "аппаратное ускорение AI" на пользовательских устройствах. Автор, вы сами попробуйте добраться до этого аппаратного ускорения, и если найдете как - напишите статью. А то элементарная попытка использования GPU для работы TensorFlow Lite приводит только к потерянному времени, а ускорители NPU больше не поддерживаются именно там, где должны были бы. То есть за хайпом вокруг "аппаратного ускорения ИИ" производители создали новую категорию устройств, и теперь стандартно ноутбук будет стоить в 2 раза больше, чем было раньше. А по факту пользоваться этим ускорением будут только компании-производители, чтобы еще больше заработать денег на пользователях через рекламу, "правильные" модели и торговлю персональными данными.

А мы сегодня запустим TensorFlow Lite на устройствах разного класса и года выпуска и посмотрим, что там с производительностью и ускорением.

Читать далее

Camunda и Kafka: не откусывай больше, чем можешь проглотить

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели22K

Привет, Хабр! Меня зовут Егор, я бэкенд-разработчик в T-Банке, участвую в разработке продуктов комплаенса. Недавно в одном из наших проектов мы столкнулись с проблемой низкой производительности Camunda — и хотим поделиться опытом, который мы получили в процессе ее решения.

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

Читать далее

Что нового в IntelliJ IDEA 2024.2

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели29K

Недавно вышла новая версия IntelliJ IDEA 2024.2, в которой появилось довольно много новых фич. Команда Amplicode подготовила обзор основных возможностей IDE, которые на данный момент доступны российским разработчикам без каких-либо ограничений.

Читать далее

Отправка уведомлений по таймеру в Apache Flink

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

Привет, Хабр! На связи Александр Бобряков, техлид в команде МТС Аналитики. В предыдущих постах я рассказал, как собрать первое приложение Flink со Spring, реализовав пайплайн дедупликации сообщений Kafka-to-Kafka. В этом примере погружусь в использование таймеров в Flink, а в следующих статьях расскажу, как работать с более сложными состояниями, эволюционировать их схему и покрыть это все тестами.

Весь разбираемый исходный код есть в репозитории AlexanderBobryakov/flink-spring. В master-ветке представлен итоговый проект по всей серии. Эта статья соответствует релизной ветке с названием release/7_Trigger_Flink_Job.

Это восьмой материал из моей серии про Apache Flink. По мере выхода новых ссылки на них будут появляться ниже.

Читать далее

Что такое TDD. Создаем валидатор паролей на регулярках

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

Приветствую всех, в данной статье я кратко расскажу и покажу, что такое TDD на очень простом примере.

Итак, представим себя разработчиком в вымышленной ИТ компании, перед которым стоит задача: написать валидатор пользовательских паролей, при этом стараясь следовать принципам TDD.

Начнем разработку нашей программы с ознакомления с требованиями службы безопасности:

Читать далее

Генерируем в maven Java-модуль для OpenAPI из Swagger YAML

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9.3K

Допустим отдел аналитики подготовил нам Swagger YAML с описанием API доступа к какому-то сервису: xyz-swagger-v1.0.0.yaml.

Как автоматизировать генерацию библиотеки для доступа к API по этому описанию, если у вас maven? Полного мануала почему-то нигде нет, так что я собрал в одну всю информацию о реализации и возможных проблемах.

Читать далее

Дилемма 3n+1 на Java. Кэшируем рекурсию

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

Приветствую всех, сегодня я хочу рассказать про одну из самых интересных неразгаданных загадок математики. Гипотеза Коллатца, или же дилемма 3n+1 прославилась благодаря простоте своей формулировки, при этом оставаясь не доказанной уже более 90 лет.

В этом выпуске : обзор самой гипотезы, код-снипеты, кэширование, рекурсия, и много чего еще.

Поехали.

Краткая формулировка, то бишь немного измененная выдержка из википедии Collatz conjecture — Wikipedia Гипотеза Коллатца — Википедия (wikipedia.org):

Берём любое натуральное число n:

1) Если оно чётное, то делим его на 2,

2) Если нечётное, то умножаем на 3 и прибавляем 1.

Над полученным числом выполняем те же самые действия, и так далее.

Читать далее