Обновить
256K+

Java *

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

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

Пишем код, который можно бегло просматривать

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

Писать код, который достаточно бегло просмотреть — не менее важно, чем писать код, который в принципе можно прочитать. Давайте немного поговорим о «форме» кода — такой, чтобы по структуре кода можно было быстро понять, для чего он, и сократить время работы с кодовой базой.

Читать далее

OpenIDE — профессиональные инструменты без ограничений

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

31 июля состоится публичный запуск OpenIDE — новой мультиязычной среды разработки, построенной на базе IntelliJ IDEA Platform. Вместе с ключевыми разработчиками, лидерами и представителями отрасли мы обсудим:

1) Зачем появилась OpenIDE
2) Как она уже сегодня может заменить IntelliJ Platform для Java и Spring
3) В чём её ценность для всей экосистемы
4) Как работать с проектами на Go, Python и TypeScript
5) И расскажем, как присоединиться к сообществу и развитию проекта

Мероприятие пройдет онлайн 31 июля, в 17:00 (МСК), на YouTubeVK и RUTUBE каналах Spring АйО. Участие абсолютно бесплатное.

Главное — зарегистрироваться, чтобы получить на почту ссылки на трансляцию и файл .ics для добавления события в календарь.

Читать далее

Многомерный анализ данных временных рядов

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

Попробуем применить многомерный анализ к данным временных рядов с помощью интерактивной визуализации данных измерений и их взаимосвязей.

Читать далее

BSSN: Лучшая простая система на сегодня

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

Автор оригинальной статьи: Daniel Terhorst-North 

Вы можете накормить волков и сохранить овец, если сделаете все правильно.

Многие организации живут в постоянном напряжении между двумя путями разработки: быстрым, но «грязным», и надежным, но медленным. Одни торопятся, оправдывая технический долг «прагматизмом», другие осторожничают, опасаясь ошибок и занимаясь оверинженерингом. Я предлагаю третий путь — «лучшую простую систему на сегодня» (Best Simple System for Now, BSSN), которая сочетает преимущества обоих подходов и не заставляет идти на компромиссы.

Читать далее

Explyt Spring Plugin: поддержка Quarkus

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

Всем привет! На связи команда Explyt Spring. На этот раз как следует из названия будем говорить о поддержке Quarkus. На первый взгляд может показаться странным, причем тут Spring плагин и Quarkus. Но если разобраться более детально, то Spring также имеет поддержку Java EE аннотаций и к тому же поддержка Dependency Injection является одной из сильной сторон нашего плагина. Да и логика DI в Quarkus сильно проще чем в Spring, можно убедиться в этом прочитав официальную документацию, поэтому можно легко переиспользовать все наши текущие наработки и добавить поддержку Quarkus DI в наш плагин. И это также позволило переиспользовать для него многие другие наши «фичи», о чем будет рассказано ниже.

Читать далее

Hibernate. Оптимизму здесь (не) место. Блокировки в БД

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

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

Сегодня мы рассмотрим работу блокировок в базах данных, уделив особое внимание оптимистичному подходу и его реализации во фреймворке Hibernate.  

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

Читать далее

Подключение Spring AI к локальным AI-моделям с помощью Foundry Local

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

Команда Spring АйО перевела статью, которая покажет, как интегрировать Spring AI с Foundry Local — десктопным приложением от Microsoft, совместимым с OpenAI API. Вы узнаете, как настроить локальную AI-модель, подключить её к Spring Boot и создать REST-эндпоинты для чат-бота и суммаризации текста. Всё это — с акцентом на производительность, безопасность и автономность.

Читать далее

Как создать свой парсер и AST-генератор на C++ с минимальными усилиями: знакомьтесь с QapDSLv2

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

QapDSLv2: Новый стандарт AST-heavy парсинга

QapDSLv2 обеспечивает:

Молниеносное построение AST

Полное сохранение структуры исходного кода

Простоту интерпретации и модификации грамматик

Забудьте о любы других парсерах! С помощью QapDSLv2 можно создавать компиляторы/анализаторы/форматировщики кода за минуты/часы.

Парсеры и генерация абстрактных синтаксических деревьев (AST) — это обычно долго, сложно и требует тонны шаблонного кода. Но что если я скажу, что теперь можно описывать грамматики и структуры данных одновременно и получать готовый, оптимизированный C++ код автоматически?

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

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

Готовы ускорить разработку и вывести свои проекты на новый уровень?

QapGen — мощный генератор парсеров, построенный на основе QapDSLv2, который из грамматик QapDSLv2 сразу создаёт высокопроизводительный C++ парсер с типизированным AST, описанным прямо в грамматике.

t_sep{
stringbody =any(" \t\r\n");
}
using" "ast_sep;
t_value{
TAutoPtr<i_value> body;
" "?
}
t_comma_value{
","
t_value body;
" "?
}
t_array:i_value{
"["
" "?
t_value first?;
vector<t_comma_value> arr?;
"]"
" "?
}

Читать далее

Как перестать бояться кодировок в Java — лайфхак для новичков

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

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

Читать далее

Рулим светодиодом по UDP и ESP8266

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

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

Сегодня я поделюсь опытом работы с протоколом UDP вместе с микроконтроллером ESP8266, где я управлял светодиодом, а также получал температуру с датчика DHT11. Всё управление будет происходить из Android-приложения, написание логики которого также будет рассмотрено.

Читать далее

System Design: Чек-лист для расчета нагрузки и стоимости системы на все случаи жизни

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

Этот коротки чек-лист поможет вам структурированно отвечать на вопросы по расчету нагрузки и стоимости системы на собеседовании System Design. Используйте его как пошаговый гайд, чтобы не упустить ключевые моменты.

Читать далее

Ликбез по UseCase’ам Android: от базовых реализаций до мультипровайдерных и многомодульных систем — Часть 1

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

Чистая архитектура — не просто модный термин, а способ держать код в узде по мере роста Android-приложения. В этой статье — подробный разбор того, как выстроить работу с UseCase’ами: от базовой интеграции в ViewModel до сложных кейсов с несколькими провайдерами и платежными системами. Разберёмся, как применять принципы SOLID на практике, не скатываясь в оверинжиниринг — и при этом не жертвовать гибкостью архитектуры.

Читать далее

Java Digest # 26

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

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

В этом выпуске будут материалы о том, как ускорить запуск приложений с помощью ReadyNow и CRaC — двух подходов к оптимизации старта. Разберем тонкости аннотации @TestInstance(PER_CLASS) в JUnit 5 и ее влияние на жизненный цикл тестов. 

Тем, кто работает со Spring, может пригодиться обзор Spring Debugger от JetBrains — плагина, который делает отладку наглядной и удобной. Еще будет доклад о повышении производительности Spring Data JPA и Hibernate. И в завершение — сравнение FFM API с Unsafe: посмотрим, какой трейдофф между скоростью и безопасностью предлагает новый подход. Приятного прочтения!

Читать выпуск №26

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

Написание автотестов для сервиса миграции

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

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

Стояла задача автоматизации регресса для сервиса миграции из системы Jira во внутреннюю систему «Яга».

Читать далее

Пишем 3D-игру для ретро-устройств весом в 600Кб…

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

...которая работает на первых Android-смартфонах в мире, компьютерах из 90-х и даже Mac'ах! Часть 2.

Иногда у меня лежит душа просто взять и написать какую-нибудь небольшую игрушку с нуля, без использования готовых движков. В процессе разработки я ставлю перед собой интересные задачки: игра должна весить как можно меньше, работать на как можно большем числе платформ и использовать нетипичный для меня архитектурный паттерн. Недавно я начал писать ремейк классических «танчиков» и в рамках серии статей готов рассказать о всех деталях разработки трёхмерной игры с нуля в 2025 году. Если вам интересно узнать, как работают небольшие 3D-демки «под капотом» от написания фреймворка до разработки геймплея и тестов на экзотических устройствах — жду вас под катом!

Читать далее

SOLID, DRY, KISS, YAGNI и др. принципы разработки, пугающие новичка в IT

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

Часто слышишь, что нужно следовать принципам “поцелуя” или “высыхания”? А может, ты слышишь об этом впервые? Тогда давай на примере биатлонистов попробуем объяснить основные принципы разработки в данной статье.

Разработка — это не только про код, но и про подходы. В этой статье я постарался собрать и объяснить ключевые принципы проектирования, которые часто упоминают в собеседованиях, в статьях на Medium и в комментариях на GitHub, такие, как SOLID, DRY, KISS, YAGNI, APO, BDUF, бритва Оккама.

📌 Что внутри:

1. Понятные объяснения без перегрузки теорией

2. Примеры на Java (но подойдут и другим разработчикам)

3. Иллюстрации и метафоры, чтобы не уснуть

Будет полезно как новичкам, которые только слышали про SOLID и др. подходы в проектировании, так и разработчикам, которые хотят освежить знания или взглянуть на принципы под другим углом.

Читать далее

Как провалить собеседование по System Design: ошибки, которые допускают даже опытные разработчики

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

Собеседование по System Design — это не просто проверка технических знаний, а настоящее испытание вашего инженерного мышления. В отличие от алгоритмических задач, где есть чёткие правильные и неправильные ответы, здесь всё строится на умении анализировать, взвешивать компромиссы и предвидеть проблемы до их появления. Ирония в том, что даже опытные разработчики часто проваливают эти собеседования, потому что сосредотачиваются не на том. Они могут идеально знать, как работает Kafka или Cassandra, но если не умеют структурировать свои мысли и задавать правильные вопросы, их шансы резко падают.

Читать далее

Гайд на полиморфизм. Что там под капотом?

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

В прошлой статье мы рассмотрели теоретическую основу такого понятия как полиморфизм. Теперь же перейдем к рассмотрению что там «под капотом».

Читать далее

System Design: Как бизнес влияет на финальный вид ИТ-Системы и выбор технологий

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

В System Design нет «правильных» решений — только компромиссы. Бюджет, сроки, команда и законы диктуют, какие технологии выбрать, как масштабироваться и когда идти на жертвы. Разберём, почему определение бизнес-ограничений это важный этап System Design и почему они диктуют Айтишникам как и с чем работать.

Читать далее

Разбираемся со Spring Boot с помощью Spring Debugger

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

Команда Spring АйО перевела статью о работе со Spring Debugger и о том, как его применение существенно облегчает отладку приложений, написанных с использованием Spring Boot. На момент написания статьи фича доступна только в Ultimate версии IntelliJ IDEA.

Читать далее