Чашечка Java
9.18K subscribers
3.72K photos
13 videos
55 files
5.88K links
Лучшие материалы по Java на русском и английском

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels
Download Telegram
Преодоление сложности в самом сердце Анемичной Модели

Доброго времени суток, Хабр!

Сегодня хотел бы поговорить об анемичной модели — одном из самых дискуссионных топиков (особенно для приверженцев DDD) и о том, как, по моему мнению, правильно её готовить. Для кого-то анемичная модель — это антипаттерн, тогда как для других это единственный правильный способ реализации приложений. Многие использовали её годами и даже не знали, как она называется, и что кем-то она считается антипаттерном. Реальность же такова, что анемичная модель — это инструмент, который может подходить или не подходить в зависимости от ситуации, но при этом является очень популярным и, по факту, «стандартом де-факто» для многих программистов и организаций. Хотя в последние годы я и вижу тенденцию к тому, что DDD и, соответственно, богатая доменная модель становятся всё популярнее, пока что, по моему мнению, им далеко до популярности анемичной модели.


Читать: https://habr.com/ru/articles/917012/?utm_campaign=917012

@a_cup_of_java | Другие наши каналы
Шардируй меня полностью

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

Читать: https://habr.com/ru/articles/921274/?utm_campaign=921274

@a_cup_of_java | Другие наши каналы
Карты, Java, 2 null'а. XMage edition

Компьютерная игра на Java — вещь довольно редкая, но всегда интересная. Поэтому мы не упустили возможность проверить статическим анализатором проект XMage и поделиться результатами. Посмотрим, что нашёл PVS-Studio в исходном коде проекта.


Читать: https://habr.com/ru/companies/pvs-studio/articles/921290/?utm_campaign=921290

@a_cup_of_java | Другие наши каналы
@TestInstance(PER_CLASS) в JUnit 5: как и зачем переопределять жизненный цикл

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

Сегодня рассмотрим JUnit 5 и разберёмся, чем дышит аннотация @TestInstance(PER_CLASS), — зачем переопределять жизненный цикл тестового инстанса и когда это может помочь.


Читать: https://habr.com/ru/companies/otus/articles/920934/?utm_campaign=920934

@a_cup_of_java | Другие наши каналы
GPULlama3.java: первая реализация Llama3 на чистом Java с поддержкой GPU

Университет Манчестера представил GPULlama3.java — проект, который позволяет запускать LLM с ускорением на GPU без необходимости писать CUDA. Используя TornadoVM, разработчики получают GPU-ускорение прямо из Java-кода.

Подробности: https://www.infoq.com/news/2025/06/gpullama3-java-gpu-llm/

#en

@a_cup_of_java | Другие наши каналы
Как спроектировать потокобезопасный класс в Java

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


Читать: https://habr.com/ru/companies/otus/articles/921348/?utm_campaign=921348

@a_cup_of_java | Другие наши каналы
👍1
Как найти N-е число Фибоначчи на Java
В статье подробно объясняется, как вычислить N-й элемент последовательности Фибоначчи на Java с использованием рекурсии. Рассматриваются базовые случаи, рекурсивный метод и основы решения через деление задачи на подзадачи. Отлично для практики алгоритмов и подготовки к интервью. Топ-10 книг по алгоритмам для программистов раскрывают ключевые концепции и практические подходы к решению задач. Эти источники помогут улучшить навыки разработки и успешно проходить технические интервью. Узнайте, какие книги стоит прочитать каждому разработчику. Анализ и статистика публикаций за последние годы

Данный архив отражает динамику публикаций с 2012 по 2024 год. Самый активный период — 2023 и начало 2024 года. Статистика помогает понять тенденции и изменения в активности автора за это время.

Подробности: http://www.java67.com/2019/03/nth-fibonacci-number-in-java-coding.html

#en

@a_cup_of_java | Другие наши каналы
Как перевернуть целое число в Java без преобразования в строку? В статье рассказывается об алгоритме, который использует деление и остаток от деления для обращения цифр числа, включая работу с отрицательными значениями. Решение подходит для большинства случаев, но не учитывает переполнение. Проверка переполнения при реверсе числа в Java

В статье рассматривается способ предохранения от переполнения при реверсе целого числа на Java с помощью проверки промежуточного результата. Также предлагается использование Math.multiplyExact для надёжного обнаружения ошибок переполнения. Основы алгоритмов на Java: обзор популярных методов работы с массивами и деревьями

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

Подробности: http://www.java67.com/2015/08/how-to-reverse-integer-in-java-leetcode-solution.html

#en

@a_cup_of_java | Другие наши каналы
1ecb5d6f-e07c-40ad-b278-deb1fbf7abc8.gif
25.5 KB
Как вычислить числа Фибоначчи на Java

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

Подробности: http://www.java67.com/2016/05/fibonacci-series-in-java-using-recursion.html

#en

@a_cup_of_java | Другие наши каналы
Как работает @Lazy в Spring — и когда он полезен

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

Если вы хоть раз писали хоть что‑то сложнее REST‑контроллера в Spring, вы наверняка ловили больную ситуацию: два бина зависят друг от друга, инициализация идёт по кругу, и вот он — BeanCurrentlyInCreationException. И если в этот момент вы вспомнили про @Lazy — вы молодцы.

Сегодня я расскажу, как @Lazy может быть полезен, где он только делает вид, что спасает, и какие альтернативы работают лучше.


Читать: https://habr.com/ru/companies/otus/articles/921030/?utm_campaign=921030

@a_cup_of_java | Другие наши каналы
Мониторинг работы приложения

Данная статья первая из цикла статей и является коротким превью возможности системы.

За долгую карьеру работы разработчиком (более 15 лет) мы не раз сталкивались с проблемой не понятно что происходит на боевом контуре или что произошло на тестовом стенде после выкладки обновлений. В 90 % случаев приходится "лазить" по логам и пытаться понять что произошло и как обычно логов не хватает и все заканчивается тем что нужно добавить логов в одно конкретное место и так до следующего раза.

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


Читать: https://habr.com/ru/articles/921524/?utm_campaign=921524

@a_cup_of_java | Другие наши каналы
1👍1
Как я заново открыл для себя инкапсуляцию в java.

Я всегда считал, что Java — лаконичный и красивый (в плане концепции) язык с четкой структурой, позволяющей расширять эту структуру и на всевозможные фреймворки, там самым помогающая привнести порядок и в код конечного программиста. И, прежде всего, я считал, что java — это 100% ОО язык! Но недавно мне попался код, после которого я вечер ходил возмущался. Код совершенно несложный для понимания даже людей несведующий в java.

Читать: https://habr.com/ru/articles/43859/?utm_campaign=43859

@a_cup_of_java | Другие наши каналы
👍1
Построение гибкой и распределенной архитектуры с использованием Kafka и Kafka Connect: Часть 2 — Получатель и Helm Chart

Данная статья является продолжением статьи - Ивентная модель данных с использованием Kafka и Kafka Connect: Построение гибкой и распределенной архитектуры.

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


Читать: https://habr.com/ru/articles/751330/?utm_campaign=751330

@a_cup_of_java | Другие наши каналы
Telegram-bot для поиска укрытий (публикую после событий в Белгороде 30.12.23)

Эта статья, как и приложение были написаны на прошлых новогодних праздниках, но по ряду причин, я не решился публиковать текст, так и остался он в черновиках. Вчера случилось страшное - в канун новогодних праздников город Белгород, в котором я живу, попал под массированный обстрел кассетными боеприпасами, моя семья также попала в сектор бомбардировки, чудом спаслись и не пострадали. Все произошло быстро, эти несколько минут перевернули жизни сотен семей. Когда мы вышли из укрытия, стало понятно, что будут десятки погибших. Увы, не сработали никакие системы превентивного предупреждения.


Читать: https://habr.com/ru/articles/712042/?utm_campaign=712042

@a_cup_of_java | Другие наши каналы
2
Как обобрать дерево в несколько потоков?

Всем привет, меня зовут Антон, я Java‑разработчик в Сбере, подразделение SberWorks. Я разрабатываю Giga IDE — новую IDE на основе IntelliJ IDEA. В ходе работы столкнулся с тем, что при открытии проектов происходит сканирование всех папок для поиска тех или иных файлов. Если обобщить, то задача сводится к обходу дерева. Я решил подробнее рассмотреть эту тему, причём с прицелом на многопоточность.

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


Читать: https://habr.com/ru/companies/sberbank/articles/921528/?utm_campaign=921528

@a_cup_of_java | Другие наши каналы
😁4👍1
Эволюция программиста 2005–2025: от CRT-мониторов до квантовых алгоритмов

Эпохи развития программирования в России и в мире. Какие стадии прошли разработчики и к чему пришли в настоящий момент. Прогнозы на будущее.

Читать: «Эволюция программиста 2005–2025: от CRT-мониторов до квантовых алгоритмов»

@a_cup_of_java | Другие наши каналы
Как перевернуть строку в Java без дополнительной памяти? В статье представлены алгоритмы с двумя указателями и обменом символов, включая XOR и классический swap. Полезно для понимания основ строковых операций и подготовки к собеседованиям в 2024 году.

Подробности: http://www.java67.com/2016/06/how-to-reverse-string-in-place-in-java.html

#en

@a_cup_of_java | Другие наши каналы
Как найти дубликаты в массиве Java за O(n) и O(n²)

В статье рассмотрены два способа поиска дубликатов в массиве на Java: классический перебор с квадратичной сложностью и более эффективный метод с использованием HashSet, который работает за линейное время. Интервью по Java: как проверить массив на дубликаты и выделить их заглавными буквами? В статье обсуждается пример задачи с собеседования Java-разработчика, где нужно обработать пользовательский ввод, найти повторяющиеся строки и изменить их формат. Лучшие алгоритмы и структуры данных для программистов. В статье собраны решения популярных задач на Java: поиск дубликатов, обход бинарных деревьев, сортировки и многое другое. Полезно для подготовки к собеседованиям и углубленного изучения программирования.

Подробности: http://www.java67.com/2015/10/2-ways-to-find-duplicate-elements-in-java-array.html

#en

@a_cup_of_java | Другие наши каналы
1
Как посчитать сумму элементов массива в Java
В статье подробно разбирается простой способ сложения всех чисел в целочисленном массиве на Java. Рассматривается обработка пустых и null-массивов, показан пример программы с использованием цикла и метода для вычисления суммы. Полезно для начинающих. Лучшие ресурсы для изучения программирования и IT в одном месте. В статье собраны темы от Java и Spring до машинного обучения и веб-разработки. Полезно для всех, кто хочет развиваться в IT и подготовиться к собеседованиям. Статистика публикаций за последние годы показывает активность блогера, начиная с 2012 года. Максимальное число постов приходится на 2023 и 2024 годы, что говорит о стабильном росте и обновлении контента. Интересно наблюдать динамику активности по месяцам и годам.

Подробности: http://www.java67.com/2016/10/how-to-calculate-sum-of-array-elements-in-java.html

#en

@a_cup_of_java | Другие наши каналы
Что я понял за 1,5 года нахождения в крупнейшем Java-коммьюнити в Telegram?

В этой статье я расскажу о том, как отсутствие социализации, а также моё здоровье повлияло на дальнейшее развитие в Java-коммьюнити.


Читать: https://habr.com/ru/articles/921908/?utm_campaign=921908

@a_cup_of_java | Другие наши каналы
👎4👀2😁1