en
Feedback
Чашечка Java

Чашечка Java

Open in Telegram

Лучшие материалы по Java на русском и английском Разместить рекламу: @tproger_sales_bot Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels

Show more
8 432
Subscribers
-224 hours
-127 days
-6530 days
Posts Archive
Инверсия управления Контейнеров и паттерн Инъекции Зависимостей — перевод В основе сборки любых компонентов лежит общий шаблон того, как они выполняют прокидывание зависимостей, это концепция, которую разработчики называют очень общим именем Inversion of Control (IoC: инверсия контроля). В этой статье я углублюсь в то, как работает этот паттерн под более конкретным названием «Dependency Injection» (Инъекция зависимостей), и сравню его с альтернативой - Service Locator Читать: https://habr.com/ru/articles/832390/?utm_campaign=832390 @a_cup_of_java | Другие наши каналы

Автоматизация интеграционных и приемочных тестов с помощь 1001 велосипеда Современное приложение на Java с использованием Spring Boot, включающее множество клиентов (веб, десктоп, мобильные), может столкнуться с проблемами в тестировании по мере его роста. Даже при хорошем покрытии тестами (80%+), увеличение объема интеграционных и приемочных тестов может привести к значительным задержкам в процессе разработки. Тесты могут занимать до 24 часов для выполнения, что снижает эффективность и увеличивает риск багов в продакшене. Не знаю кто сказал, но вполне четко описывает процесс разработки Что делать ... кроме написания резюме в поисках более интересно проекта? Пробуем понять, где в авто тестах тормоза. И понимаем что все интеграционные и приемочные зависят либо от скорости тестера, либо от скорости отклика клиента во время авто-тестов. И то и то в сотни и тысячи раз медленнее вашего апи. После анализа ситуации остается одно: как-то все это автоматизировать, причем быстро и дешево. Ускорить тестировщика, без незаконных препаратов, мы не можем, как и сделать UI который будет работать без задержек, на скорости api (но можно постараться, но дорого...). Основные шаги для решения: Читать: https://habr.com/ru/articles/832270/?utm_campaign=832270 @a_cup_of_java | Другие наши каналы

Создание масштабируемых приложений при помощи Kafka и реактивного программирования Mahi Mullapudi Введение В современном цифровом мире критически важна возможность обрабатывать данные в режиме реального времени и масштабировать приложения. Для этого хорошо подходит Kafka – платформа для распределённой потоковой обработки событий, особенно, если сочетать её с реактивным программированием. В данной статье будет рассказано, как создавать реактивные приложения при помощи этого инструментария. Читать: https://habr.com/ru/companies/piter/articles/831772/?utm_campaign=831772 @a_cup_of_java | Другие наши каналы

Использование алгоритма бинарного поиска для нахождения квадратного корня числа на 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 | Другие наши каналы

Java News Roundup: WildFly 33, Spring Cloud Data Flow, Apache TomEE, LangChain4j, Micronaut This week's Java roundup for July
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 | Другие наши каналы

К технологической сингулярности на примере Android продукта для смартчасов Приведенный выше кейс подтверждает принципиальную возможность успешного использования инструментов ИИ в создании ключевых артефактов софтверного проекта на всех стадиях его жизненного цикла – от ТЗ и кода до документации, что позволило прийти к высочайшей для команды скорости разработки ПО. И хотя машины пока не могут создавать новые машины (и запускать апокалипсис), но практические примеры создания программных решений ИИ с помощью раннее созданных инструментов ИИ мы видим очень эффективными. Узнать больше! Читать: https://habr.com/ru/articles/832050/?utm_campaign=832050 @a_cup_of_java | Другие наши каналы

Как синхронизировать потоки в Java Многопоточность — это не просто возможность приложения выполнять несколько задач одновременно, это его способность делать это эффективно и безопасно. В Java многопоточность неотделима от синхронизации, ведь именно она помогает управлять состоянием разделяемых ресурсов между потоками. Всё начинается с потребности в быстродействии и масштабируемости. C несколькими потоками можно обрабатывать больше операций одновременно. В этой статье мы рассмотрим, как синхронизировать потоки в Java. Читать: https://habr.com/ru/companies/otus/articles/830356/?utm_campaign=830356 @a_cup_of_java | Другие наши каналы

Как разработать онлайновый компилятор кода при помощи Java и Docker Вы когда-нибудь задумывались, как устроены такие платформы как Codeforces и LeetCode? Как именно они компилируют и выполняют код, поступающий от множества пользователей и проверяют его в тестовых кейсах? Как определяют эффективность алгоритмов? В этой статье мы подробно разберём, как выстроить высокоэффективную платформу для решения задач. Исходный код к этой статье выложен на Github в этом репозитории Читать: https://habr.com/ru/companies/piter/articles/831704/?utm_campaign=831704 @a_cup_of_java | Другие наши каналы

Работа с геометрией в JPA и Spring Boot 3 Добрый день, уважаемые читатели Хабра. В один день для моего pet-проекта понадобилось сделать добавление адресов клиентов, и проверка входит ли этот адрес в зону доставки. Так как статей на эту тему на хабре раз и обчелся, то вот держите еще одну 😁 В этой статье мы разберем, что такое геометрия, как с ней можно работать в sql и no-sql базах данных. Приступим. Читать: https://habr.com/ru/articles/831566/?utm_campaign=831566 @a_cup_of_java | Другие наши каналы

Использование алгоритма Бойера-Мура-Хорспула в 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 | Другие наши каналы

Быстрый старт: Docker + SMTP + Java/Go Не так давно у меня появилась необходимость на нескольких проектах сделать регистрацию с подтверждением email, так же хотелось минимизировать затраты и исключить лишние телодвижения, так сказать методом ctrl+c ctrl+v, без танцев с бубном. Так же нам не нужно принимать почту и прочее, просто отправка, не более P.s. Для прожженных отцов разработки ничего нового тут не будет Итак, поехали ;-) Читать: https://habr.com/ru/articles/831230/?utm_campaign=831230 @a_cup_of_java | Другие наши каналы

Разница между Веб-сервером, Сервером приложений и Контейнером сервлетов Статья объясняет различия между веб-сервером, серверо
Разница между Веб-сервером, Сервером приложений и Контейнером сервлетов Статья объясняет различия между веб-сервером, сервером приложений и контейнером сервлетов. Веб-сервер обслуживает статические страницы, сервер приложений выполняет динамический код, а контейнер сервлетов управляет жизненным циклом сервлетов и 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 | Другие наши каналы

Flyway + Spring Boot: настройка и написание миграций баз данных Написание скриптов миграции трудоёмкий процесс. И если есть возможность это дело автоматизировать – этим нужно пользоваться! В этом гайде я расскажу как подключить и настроить Flyway в Spring Boot приложении, сгенерировать скрипты инициализации и миграции схемы базы данных вместе с Amplicode! Читать: https://habr.com/ru/companies/haulmont/articles/829782/?utm_campaign=829782 @a_cup_of_java | Другие наши каналы

Основные принципы проектирования микросервисов Микросервисы — это будущее разработки ПО. Они помогают создавать масштабируемы
Основные принципы проектирования микросервисов Микросервисы — это будущее разработки ПО. Они помогают создавать масштабируемые и независимые приложения. В статье обсуждаются 10 ключевых принципов проектирования микросервисов, таких как принцип единой ответственности и слабая связанность. Ознакомьтесь с подробностями для лучшего понимания! Лучшие принципы дизайна для микросервисов Хотите узнать, как улучшить свою разработку микросервисов? В новой статье рассматриваются ключевые принципы дизайна и их оптимальное применение на разных этапах жизненного цикла ПО. Подробные примеры из IT-индустрии помогут вам лучше понять, как использовать эти принципы для повышения продуктивности. Подробности: http://www.java67.com/2023/09/top-10-microservices-design-principles.html #en @a_cup_of_java | Другие наши каналы

Разыскиваем опытных Java-разработчиков Обязанности: — Участие в полном цикле разработки. — Проектирование/разработка back-end
Разыскиваем опытных Java-разработчиков Обязанности: — Участие в полном цикле разработки. — Проектирование/разработка back-end и API. — Обеспечение чистоты кода, тестирование, код-ревью, релизы. Требования: — Знание Java/Kotlin, Spring. — Понимание микросервисной архитектуры. — Опыт SQL/NoSQL. — Опыт командной работы, код-ревью, git flow. Откликайтесь тут #вакансии #работа

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 | Другие наши каналы

Топ 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 | Другие наши каналы

Java News Roundup: JDK 23 in Rampdown Phase Two, Graal Development Kit, Payara Platform, JSpecify This week's Java roundup fo
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 | Другие наши каналы

Рекурсия в Java с примером решения задачи с LeetCode Рекурсивные методы в Java — это методы, которые вызывают сами себя и требуют осторожности с их обращением. Чтобы не увидеть «StackOverflowError» на экране, нужно помнить о двух штуках: базисе и шаге рекурсии. Базис — это условие выхода из рекурсии, а шаг — это вызов методом самого себя с измененными параметрами. Самый частый пример, который можно встретить в интернете при попытке найти информацию о рекурсии — нахождение факториала числа. Быстренько пройдемся по нему перед рассмотрением более интересной задачки с leetCode. Читать: https://habr.com/ru/articles/830620/?utm_campaign=830620 @a_cup_of_java | Другие наши каналы

Разбираемся с MavenGate. Настолько ли он страшен на самом деле Привет, Хабр! Меня зовут Михаил, я исследователь Центра научных исследований и перспективных разработок, в круг моих обязанностей входит разработка мобильных приложений Android и исследование безопасности разрабатываемых решений. Сегодня рассмотрим, так ли страшен "черт", как его малюют, или насколько страшен MavenGate на самом деле. Читать: https://habr.com/ru/companies/infotecs_official/articles/830600/?utm_campaign=830600 @a_cup_of_java | Другие наши каналы