Чашечка Java
Open in Telegram
Лучшие материалы по Java на русском и английском Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels
Show more8 432
Subscribers
-224 hours
-127 days
-6530 days
Posts Archive
8 430
Инверсия управления Контейнеров и паттерн Инъекции Зависимостей — перевод
В основе сборки любых компонентов лежит общий шаблон того, как они выполняют прокидывание зависимостей, это концепция, которую разработчики называют очень общим именем Inversion of Control (IoC: инверсия контроля). В этой статье я углублюсь в то, как работает этот паттерн под более конкретным названием «Dependency Injection» (Инъекция зависимостей), и сравню его с альтернативой - Service Locator
Читать: https://habr.com/ru/articles/832390/?utm_campaign=832390
@a_cup_of_java | Другие наши каналы
8 430
Автоматизация интеграционных и приемочных тестов с помощь 1001 велосипеда
Современное приложение на Java с использованием Spring Boot, включающее множество клиентов (веб, десктоп, мобильные), может столкнуться с проблемами в тестировании по мере его роста. Даже при хорошем покрытии тестами (80%+), увеличение объема интеграционных и приемочных тестов может привести к значительным задержкам в процессе разработки. Тесты могут занимать до 24 часов для выполнения, что снижает эффективность и увеличивает риск багов в продакшене. Не знаю кто сказал, но вполне четко описывает процесс разработки
Что делать
... кроме написания резюме в поисках более интересно проекта?
Пробуем понять, где в авто тестах тормоза. И понимаем что все интеграционные и приемочные зависят либо от скорости тестера, либо от скорости отклика клиента во время авто-тестов. И то и то в сотни и тысячи раз медленнее вашего апи.
После анализа ситуации остается одно: как-то все это автоматизировать, причем быстро и дешево.
Ускорить тестировщика, без незаконных препаратов, мы не можем, как и сделать UI который будет работать без задержек, на скорости api (но можно постараться, но дорого...).
Основные шаги для решения:
Читать: https://habr.com/ru/articles/832270/?utm_campaign=832270
@a_cup_of_java | Другие наши каналы
8 430
Создание масштабируемых приложений при помощи Kafka и реактивного программирования Mahi Mullapudi
Введение
В современном цифровом мире критически важна возможность обрабатывать данные в режиме реального времени и масштабировать приложения. Для этого хорошо подходит Kafka – платформа для распределённой потоковой обработки событий, особенно, если сочетать её с реактивным программированием. В данной статье будет рассказано, как создавать реактивные приложения при помощи этого инструментария.
Читать: https://habr.com/ru/companies/piter/articles/831772/?utm_campaign=831772
@a_cup_of_java | Другие наши каналы
8 430
Использование алгоритма бинарного поиска для нахождения квадратного корня числа на Java
Наткнулась на leetcode на задачку с нахождением квадратного корня из неотрицального числа.
Кажется, что для решения такой задачки отлично подходит бинарный поиск, который по итогу даст нам логарифмическую временную сложность.
Итак, условие задачи здесь: https://leetcode.com/problems/sqrtx/description/
Но прежде чем приступить к решению, пройдемся по теории, что такое бинарный поиск и как его использовать.
Бинарный поиск - это поисковый алгоритм, который позволяет найти элемент в отсортированном массиве с логарифмической сложностью. Массив делится пополам, искомый элемент сравнивается с серединой массива, если искомый элемент больше, то поиск переходит в правую часть массива, и наоборот. После каждого перехода в правую или левую часть будет происходить сравнение серединного элемента с искомым до тех пор, пока он не будет найден.
Акцентирую внимание еще раз: массив должен быть отсортирован по возрастанию.
Если массив не отсортирован, то сортировка потребует минимум O(log n * n) временной сложности, что нужно учитывать.
Поэтому, если массив небольшой и неупорядоченный, то, скорее всего, лучше будет линейный поиск со сложностью O(n).
Итак, теперь вернемся к нашей задачке. Нужно найти квадратный корень из неотрицательного числа, где само число может быть любым от 0 до 231 - 1. Если корень из числа извлекается с остатком, например, корень из 8 это 2.82842…, то нужно округлить в меньшую сторону до целого, т.е. в данном случае до 2.
Начнем, по порядку, ограничив краевые случаи. Так, если х = 0, то можно сразу вернуть 0.
Читать: https://habr.com/ru/articles/832212/?utm_campaign=832212
@a_cup_of_java | Другие наши каналы
8 430
Java News Roundup: WildFly 33, Spring Cloud Data Flow, Apache TomEE, LangChain4j, Micronaut
This week's Java roundup for July 22nd, 2024 features news highlighting: the release of WildFly 33; Spring Cloud Data Flow 2.11.4; the second milestone release of Apache TomEE 10.0; LangChain4j 0.33; Micronaut 4.5.1; Eclipse Store 1.4; and an update on Jakarta EE 11.
By Michael Redlich
Read: https://www.infoq.com/news/2024/07/java-news-roundup-jul22-2024/
@a_cup_of_java | Другие наши каналы
8 430
К технологической сингулярности на примере Android продукта для смартчасов
Приведенный выше кейс подтверждает принципиальную возможность успешного использования инструментов ИИ в создании ключевых артефактов софтверного проекта на всех стадиях его жизненного цикла – от ТЗ и кода до документации, что позволило прийти к высочайшей для команды скорости разработки ПО.
И хотя машины пока не могут создавать новые машины (и запускать апокалипсис), но практические примеры создания программных решений ИИ с помощью раннее созданных инструментов ИИ мы видим очень эффективными.
Узнать больше!
Читать: https://habr.com/ru/articles/832050/?utm_campaign=832050
@a_cup_of_java | Другие наши каналы
8 430
Как синхронизировать потоки в Java
Многопоточность — это не просто возможность приложения выполнять несколько задач одновременно, это его способность делать это эффективно и безопасно. В Java многопоточность неотделима от синхронизации, ведь именно она помогает управлять состоянием разделяемых ресурсов между потоками.
Всё начинается с потребности в быстродействии и масштабируемости. C несколькими потоками можно обрабатывать больше операций одновременно.
В этой статье мы рассмотрим, как синхронизировать потоки в Java.
Читать: https://habr.com/ru/companies/otus/articles/830356/?utm_campaign=830356
@a_cup_of_java | Другие наши каналы
8 430
Как разработать онлайновый компилятор кода при помощи Java и Docker
Вы когда-нибудь задумывались, как устроены такие платформы как Codeforces и LeetCode? Как именно они компилируют и выполняют код, поступающий от множества пользователей и проверяют его в тестовых кейсах? Как определяют эффективность алгоритмов?
В этой статье мы подробно разберём, как выстроить высокоэффективную платформу для решения задач.
Исходный код к этой статье выложен на Github в этом репозитории
Читать: https://habr.com/ru/companies/piter/articles/831704/?utm_campaign=831704
@a_cup_of_java | Другие наши каналы
8 430
Работа с геометрией в JPA и Spring Boot 3
Добрый день, уважаемые читатели Хабра. В один день для моего pet-проекта понадобилось сделать добавление адресов клиентов, и проверка входит ли этот адрес в зону доставки.
Так как статей на эту тему на хабре раз и обчелся, то вот держите еще одну 😁
В этой статье мы разберем, что такое геометрия, как с ней можно работать в sql и no-sql базах данных. Приступим.
Читать: https://habr.com/ru/articles/831566/?utm_campaign=831566
@a_cup_of_java | Другие наши каналы
8 430
Использование алгоритма Бойера-Мура-Хорспула в Java с примером решения задачи с LeetCode
Алгоритм Хорспула используется для нахождения подстроки в строке. Например, у нас есть строка «The game is over» и подстрока «over». Алгоритм Хорспула вернет значение первого вхождения подстроки «over» в строку «The game is over», а именно 12.
Фактически, данный алгоритм является упрощенным алгоритмом Бойера-Мура, который, считается работает лучше, чем стандартный алгоритм на случайных текстах, но в худшем случае его скорость равна |needle| * |haystack| вместо 3 х |haystack|.
Тем не менее, для восприятия, на мой взгляд, он гораздо проще.
Итак, погнали.
Условие задачи с leetcode: https://leetcode.com/problems/find-the-index-of-the-first-occurrence-in-a-string/description/
Как работает алгоритм?
Строка и подстрока совмещаются по первому символу, и начинаются сравниваться от последнего символа к первому.
Для примера возьмем строку: «aabcdadbc» и подстроку «adb»
Совмещаются строки следующим образом (слева направо):
Читать: https://habr.com/ru/articles/831562/?utm_campaign=831562
@a_cup_of_java | Другие наши каналы
8 430
Быстрый старт: Docker + SMTP + Java/Go
Не так давно у меня появилась необходимость на нескольких проектах сделать регистрацию с подтверждением email, так же хотелось минимизировать затраты и исключить лишние телодвижения, так сказать методом ctrl+c ctrl+v, без танцев с бубном. Так же нам не нужно принимать почту и прочее, просто отправка, не более
P.s. Для прожженных отцов разработки ничего нового тут не будет
Итак, поехали ;-)
Читать: https://habr.com/ru/articles/831230/?utm_campaign=831230
@a_cup_of_java | Другие наши каналы
8 430
Разница между Веб-сервером, Сервером приложений и Контейнером сервлетов
Статья объясняет различия между веб-сервером, сервером приложений и контейнером сервлетов. Веб-сервер обслуживает статические страницы, сервер приложений выполняет динамический код, а контейнер сервлетов управляет жизненным циклом сервлетов и JSP. Примеры: Apache для веб-сервера, JBoss для сервера приложений и Tomcat для контейнера сервлетов. Подготовка к интервью по Spring
Готовитесь к интервью? Статья предлагает список вопросов по Spring Boot, Cloud, MVC и микросервисам, а также полезные курсы. Узнайте, какие аннотации использовать и как лучше подготовиться. Подпишитесь, чтобы не пропустить обновления и скидки.
Подробности: http://www.java67.com/2016/06/3-difference-between-web-server-vs-application-server-vs-servlet-container.html
#en
@a_cup_of_java | Другие наши каналы
8 430
Flyway + Spring Boot: настройка и написание миграций баз данных
Написание скриптов миграции трудоёмкий процесс. И если есть возможность это дело автоматизировать – этим нужно пользоваться!
В этом гайде я расскажу как подключить и настроить Flyway в Spring Boot приложении, сгенерировать скрипты инициализации и миграции схемы базы данных вместе с Amplicode!
Читать: https://habr.com/ru/companies/haulmont/articles/829782/?utm_campaign=829782
@a_cup_of_java | Другие наши каналы
8 430
Основные принципы проектирования микросервисов
Микросервисы — это будущее разработки ПО. Они помогают создавать масштабируемые и независимые приложения. В статье обсуждаются 10 ключевых принципов проектирования микросервисов, таких как принцип единой ответственности и слабая связанность. Ознакомьтесь с подробностями для лучшего понимания! Лучшие принципы дизайна для микросервисов
Хотите узнать, как улучшить свою разработку микросервисов? В новой статье рассматриваются ключевые принципы дизайна и их оптимальное применение на разных этапах жизненного цикла ПО. Подробные примеры из IT-индустрии помогут вам лучше понять, как использовать эти принципы для повышения продуктивности.
Подробности: http://www.java67.com/2023/09/top-10-microservices-design-principles.html
#en
@a_cup_of_java | Другие наши каналы
8 430
Разыскиваем опытных Java-разработчиков
Обязанности:
— Участие в полном цикле разработки.
— Проектирование/разработка back-end и API.
— Обеспечение чистоты кода, тестирование, код-ревью, релизы.
Требования:
— Знание Java/Kotlin, Spring.
— Понимание микросервисной архитектуры.
— Опыт SQL/NoSQL.
— Опыт командной работы, код-ревью, git flow.
Откликайтесь тут
#вакансии #работа
8 430
14 конференций осени и 14 видеозаписей докладов
Вот уже много лет мы каждую осень проводим серию конференций. Но в этот раз их впервые будет целых 14. Так что найти подходящее мероприятие смогут самые разные люди — от тех, кто пишет на Go, до тех, кто работает с машинным обучением. Некоторые конференции пройдут полностью в онлайне, но у большинства будет возможность и лично прийти на площадку.
Кратко описали их все для Хабра, и каждой добавили по видеозаписи доклада — чтобы можно было не просто читать красивые слова, а сразу увидеть конкретику и заодно узнать что-то полезное.
Вот общий список, а дальше в посте — отдельно про каждую.
— SmartData (инженерия данных)
— DotNext (.NET)
— Flow (системный и бизнес-анализ)
— PiterPy (Python)
— VideoTech (видеотехнологии)
— GoFunc (Go)
— КаргоКульт (HR-практики)
— Joker (Java)
— Heisenbug (тестирование)
— Mobius (мобильная разработка)
— SafeCode (безопасность приложений)
— DevOops (девопс)
— HolyJS (JavaScript)
— I'ML (использование ML)
Читать: https://habr.com/ru/companies/jugru/articles/830768/?utm_campaign=830768
@a_cup_of_java | Другие наши каналы
8 430
Топ 5 паттернов проектирования для Spring Boot приложений
В новом переводе от команды Spring АйО вы узнаете про 5 основных паттернов проектирования, которые часто применяются в Spring Boot приложениях:
1. Singleton
2. Factory Method
3. Repository
4. Service Layer
5. Facade
Эти паттерны, несмотря на их кажущуюся простоту и широкое распространение, играют ключевую роль в улучшении чистоты, упрощении и повышении поддерживаемости вашего кода.
Читать: https://habr.com/ru/companies/spring_aio/articles/830496/?utm_campaign=830496
@a_cup_of_java | Другие наши каналы
8 430
Java News Roundup: JDK 23 in Rampdown Phase Two, Graal Development Kit, Payara Platform, JSpecify
This week's Java roundup for July 15th, 2024 features news highlighting: JDK 23 in Rampdown Phase Two: the July 2024 Payara Platform release; Graal Development Kit for Micronaut 4.5.0; GraalVM for JDK 22 Community 22.0.2; JSpecify 1.0.0, MicroProfile 7.0-RC1, Open Liberty 24.0.0.7; and the July 2024 Oracle Critical Patch Update.
By Michael Redlich
Read: https://www.infoq.com/news/2024/07/java-news-roundup-jul15-2024/
@a_cup_of_java | Другие наши каналы
8 430
Рекурсия в Java с примером решения задачи с LeetCode
Рекурсивные методы в Java — это методы, которые вызывают сами себя и требуют осторожности с их обращением.
Чтобы не увидеть «StackOverflowError» на экране, нужно помнить о двух штуках: базисе и шаге рекурсии.
Базис — это условие выхода из рекурсии, а шаг — это вызов методом самого себя с измененными параметрами.
Самый частый пример, который можно встретить в интернете при попытке найти информацию о рекурсии — нахождение факториала числа. Быстренько пройдемся по нему перед рассмотрением более интересной задачки с leetCode.
Читать: https://habr.com/ru/articles/830620/?utm_campaign=830620
@a_cup_of_java | Другие наши каналы
8 430
Разбираемся с MavenGate. Настолько ли он страшен на самом деле
Привет, Хабр!
Меня зовут Михаил, я исследователь Центра научных исследований и перспективных разработок, в круг моих обязанностей входит разработка мобильных приложений Android и исследование безопасности разрабатываемых решений. Сегодня рассмотрим, так ли страшен "черт", как его малюют, или насколько страшен MavenGate на самом деле.
Читать: https://habr.com/ru/companies/infotecs_official/articles/830600/?utm_campaign=830600
@a_cup_of_java | Другие наши каналы
