Обновить
128.18

Java *

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

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

Образы БД для юнит-тестирования, опять

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

В прошлой статье был предложен вариант для создания docker образов БД для последующего использования в разработке и тестирования приложений в пайплайнах гитлаба.

Из-за перехода на новую инфрастуктуру k8s 1.30 (restricted psp) и новый гитлаб 17.3 все это ломается. Поэтому придется исправлять ситуацию!

Запускай

О том как я генератор Brainfuck кода писал

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

Разбираемся в Brainfuck, Пишем для него генератор кода и интерпретатор

Или рассказ о том, как я решал легкую C задачку

Однако я решил что решать эту задачу привычным методом будет скучно и я решил слегка усложнить себе задачу, чтобы поинтереснее было. Так и появилась идея написать этот код на brainfuck, а на C интерпретатор для него.

Естественно делать это голыми руками будет больно и не приятно, поэтому я решил написать генератор brainfuck кода на Java.

Читать далее

Взлом JVM-приложения с помощью отладчика IntelliJ IDEA

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

Что если мы скажем вам, что отладчик может стать не просто инструментом для поиска ошибок, а настоящим «режимом бога» в мире кода? 

В новом переводе от команды Spring АйО рассматривается, как можно исследовать память приложения и изменить его функциональность, при этом не затрагивая исходного кода, а используя только лишь отладчик IntelliJ IDEA.

Читать далее

Нативные библиотеки для Android

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

В этой статье мы рассмотрим работу с нативными библиотеками, которые могут содержаться в приложениях для Android. Нативные библиотеки — это код, который разработчик написал, а затем скомпилировал для конкретной архитектуры компьютера. Чаще всего этот код написан на C или C++. Наиболее распространенными причинами, по которым разработчик может это сделать, являются математически сложные или требующие больших затрат времени операции, такие как работа с графическими библиотеками.

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

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

Читать далее

Улучшаем автокомплит в смешанных Java-Kotlin проектах

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

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

Что за идея?

«Голая Java» или разработка без всего

Уровень сложностиСложный
Время на прочтение33 мин
Охват и читатели18K

Рассказываю что можно сделать на одном только голом JDK. Это старое и ныне почти забытое искусство разработки без внешних библиотек и фреймворков. Работать будем «как в былинные времена» — киркой и лопатой голыми руками и немного мозгом.

Читать далее

Функциональные коллекции в Java с Vavr: обзор и применение

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

Приветствую всех, кто устал от бесконечных проверок на null, громоздких блоков try-catch и мутирующих коллекций. Если вы когда-нибудь мечтали о том, чтобы привнести в Java немного функциональности, то я рад рассказать вам о библиотеке Vavr.

Читать далее

JPA Entity Graph и нюансы его использования

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

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

Команда Spring АйО подготовила статью, в которой рассмотрела, как использовать Entity Graph.

Читать далее

Изучаем карты с исходным кодом GeoServer

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

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

Читать далее

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