Все потоки
Поиск
Написать публикацию
Обновить
174.34

Java *

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

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

Java Remote Debug на стендах в локальных облаках (docker/Kubernetes), очевидные вещи (как мне казалось)

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

Иногда мы не можем локально поймать баг, приложение слишком сложно в конфигурации или просто кривые руки и QA может воспроизвести в 2 клика, в отличии от нас.

Пусть наши стенды это или docker или Kubernetes кластеры.

Читать далее

Случай из практики анализа кода

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

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

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

Открываем код OpenJDK на гитхабе

Подчини паузы своей воле с Generational ZGC

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

Netflix перешел с G1 на Generational ZGC, начиная с JDK 21, из-за значительных преимуществ, связанных с многопоточной сборкой мусора.

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

Читать далее

Memory Fences и volatile в Java: низкоуровневые гарантии порядка памяти

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

Сегодня рассмотрим интересную тему для тех, кто сталкивается с многопоточностью в Java – это управление порядком памяти. Базовых инструментов синхронизации, например как synchronized или блокировки, порой недостаточно. Именно здесь могут помочь низкоуровневые механизмы, такие как Memory Fences и ключевое слово volatile.

Эти инструменты позволяют контролировать порядок выполнения операций с памятью. В этой статье мы рассмотрим, как volatile влияет на поведение программы, что такое Memory Fences, и как они могут помочь в сложных ситуациях с потоками.

Читать далее

Опыт отладки хитрой утечки прямой памяти

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

Pinterest поддерживает формирование отчётов по метрикам рекламных объявлений внешних рекламодателей и расчёт рекламных бюджетов в реальном времени. Всё это основано на потоковых конвейерах обработки данных, созданных с помощью на Apache Flink. Доступность заданий (job) Flink для пользователей находится на уровне 99-го перцентиля. Но время от времени некоторые задачи (task) «валятся» под ударами неприятных ошибок, вызванных утечками прямой памяти (Out-Of-Memory, OOM), возникающими сразу в нескольких операторах. Выглядит это примерно так:

Читать далее

Amplicode Launch Event – конвейер для Spring-приложений прямо в IntelliJ IDEA

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

На прошлой неделе команда Amplicode провела митап, который длился целых 3,5 часа! За это время состоялось шесть докладов, затрагивающих все аспекты разработки приложений на Spring — от настройки окружения до создания бизнес-логики и реализации админки на React Admin.

Читать далее

С правильным Днем программиста

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

Вчера, 12 сентября, я получил раз 20 поздравление с днем программиста. День программиста — это 256-й день в году. Идея отмечать этот день понятная, интересная, воспринимается благожелательно, как программистами, так и остальными людьми.

Читать дальше →

IntelliJ IDEA 2024.3 EAP: Новые Возможности и Улучшения

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

Команда Spring АйО рада поделиться с вами свежей новостью от JetBrains: стала доступна первая EAP-версия IntelliJ IDEA 2024.3. Среди нововведений улучшения для java и kotlin, прокаченный AI Assistant, а также улучшенный UX.

Читать далее

Поддержка CDS в Spring Boot и ожидания от Project Leyden

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

Spring Boot 3.3 раскрывает потенциал CDS (Class Data Sharing) благодаря двум новым функциям: самораспаковывающийся исполняемый JAR и поддержка Buildpacks CDS.

Команда Spring АйО перевела статью, в которой рассмотрены новые функции, нюансы их использования, а также их влияние на время запуска приложения.

Читать далее

Автотесты на Java для websocket на SockJS

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

Всем привет. Меня зовут Ирек, и я в профессиональном IT с 2012 года. Прошел путь от специалиста службы поддержки до разработчика. На данный момент занимаюсь автоматизацией тестирования в компании РТК ИТ.

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

Java Digest #16

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

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

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

Читать далее

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

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

Как вы считаете, если выполнить 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 мин
Количество просмотров3K

Всем привет!

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

Вклад авторов