Telegram Web Link
🚀 Юнит-тестирование вашей Java-архитектуры 🚀

@archtests - это мощная библиотека Java, которая позволяет писать модульные тесты для обеспечения соблюдения архитектурных ограничений и правил в вашем коде.

https://archunit.org

#ArchUnit #Java #Тестирование

@javatg
8👍5🔥1
🖥 Не забывайте вовремя обновляться

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥248👍3🥰2
🚀 JUnit 5 Tip🚀

Прерывание теста с помощью TestAbortedException

Выводитее исключеение TestAbortedException, чтобы явно прервать тест на основе определенных условий, не помечая его как неудачный. 🔥

#JUnit #Java

@javatg
👍153🔥1
💡 Совет по Spring Boot

Начиная с Spring Framework 6.0.5 (Spring Boot 3.0.3) вы можете читать содержимое ресурса в строку с помощью `getContentAsString`

@javatg
24👍11🥰1
🖥 Машинное обучение на Java

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

🔗 Github

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍93🥰2🤬2😱1🤩1
🛠️ java-snapshot-testing - фреймворк для тестирования, который любят ленивые/продуктивные (выбирайте сами) разработчики

Github

@javatg
6👍4🔥3😱1
🖥 Java и базы данных NoSQL: практическое руководство

Базы данных NoSQL (not only SQL — не только SQL) значительно отличаются от традиционных реляционных систем управления базами данных (РСУБД). Если в РСУБД для хранения данных используются таблицы, строки и столбцы, то базы данных NoSQL предназначены для хранения и управления большими объемами неструктурированных, полуструктурированных или по-разному структурированных данных.

Рассмотрим все особенности баз данных NoSQL, изучим их типы, характеристики и причины, по которым они становятся все более предпочтительными в некоторых приложениях. ⬇️

Что такое базы данных NoSQL?
Базы данных NoSQL возникли как решение проблем, связанных с большими данными и веб-приложениями, работающими в режиме реального времени. Отличаясь высокой скоростью и гибкостью, они особенно хорошо справляются с большими наборами распределенных данных.

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

Типы баз данных NoSQL
Базы данных NoSQL можно разделить на четыре основных типа, каждый из которых обладает уникальными характеристиками и возможностями использования.

1. Документо-ориентированные базы данных (MongoDB)

Документо-ориентированные базы данных хранят данные в JSON-подобных форматах, известных как документы. Эти документы могут содержать разнообразные и вложенные структуры данных, что позволяет создавать более сложные и иерархические хранилища данных. Этот формат особенно полезен для приложений, работающих с данными, которые не помещаются в таблицы и строки, например для систем управления контентом и платформ электронной коммерции.

Ключевые особенности:

📌 Читать

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍176🥰1
Совет 🚀 JUnit 5 🚀

Повторяющиеся тесты с помощью @RepeatedTest

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

https://junit.org/junit5/docs/current/api/org.junit.jupiter.api/org/junit/jupiter/api/RepeatedTest.html

#JUnit5 #Java

@javatg
👍115🔥1
Kotlin изнутри: как работают inline-функции

Часто проводя технические собеседования, я пришел к выводу, что многие разработчики не понимают, в чем польза inline-функций, зачем нужен crossinline и как работает reified. Причина распространенных заблуждений насчет inline-функций отчасти заключается в неточном их описании, ранее опубликованном на сайте kotlinlang.org. Хочу развенчать эти заблуждения и наглядно показать, как работают inline-функции (встраиваемые) и в чем преимущество их использования.

Заблуждение 1-е: inline-функции экономят стек

Допустим, вы пытаетесь создать такую inline-функцию:

private inline fun warningInlineFun(a: Int, b: Int): Int {
return a + b
}


В этом случае компилятор выдаст предупреждение: “Expected performance impact from inlining is insignificant. Inlining works best for functions with parameters of functional types” (“Ожидаемое влияние встраивания на производительность незначительно. Встраивание лучше всего работает для функций с параметрами функциональных типов”). Это примерно означает, что JIT-компилятор сам прекрасно справляется с встраиванием кода и не нужно пытаться ему в этом помочь.

Inline-функции следует использовать только при передаче в функцию параметров функционального типа.

📌 Продолжение

@javatg
👍115🔥1
Байт-код Java: назначение, структура и использование

Байт-код Java — это промежуточное представление Java-кода, которое выполняется виртуальной машиной Java (JVM). При компиляции Java-программы компилятор Java (javac) преобразует ее в байт-код, представляющий собой набор инструкций, которые JVM может понять и выполнить. Этот байт-код является платформонезависимым, то есть одна и та же Java-программа может выполняться на различных устройствах и в различных операционных системах, следуя принципу “пиши один раз, выполняй везде” (WORA).

Особенности байт-кода Java
Байт-код Java является важнейшим элементом в сфере программирования на Java. Он служит связующим звеном между высокоуровневым Java-кодом и низкоуровневыми операциями, выполняемыми в виртуальной машине Java (JVM). Рассмотрим подробно, что такое байт-код Java, как он устроен и зачем необходим Java-программам.

Что такое байт-код Java?
Байт-код Java — это продукт процесса компиляции исходного Java-кода. Когда вы пишете Java-программу и компилируете ее, компилятор Java (javac) не преобразует код непосредственно в машинный. Вместо этого он переводит его в промежуточную форму, называемую байт-кодом. Этот байт-код представляет собой набор инструкций, которые не являются человекочитаемыми, как Java-код, но менее сложны, чем машинный код.

Структура байт-кода
Длина каждой инструкции в байт-коде Java равна одному байту (откуда и происхождение термина “байт-код”). Однако за некоторыми инструкциями следуют дополнительные байты, представляющие собой операнды для инструкций. Инструкции байт-кода, разработанные для компактности и эффективности, работают на основе стековой архитектуры. В этом их отличие от большинства физических архитектур процессоров, основанных на регистрах.

Вот более подробный обзор структуры байт-кода.

📌 Читать

@javatg
👍1110🔥2
🖥 JVector - это мощный векторный поисковый движок на чистом Java, используемый в DataStax Astra DB и Apache Cassandra.

Github

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍152🔥2
💾 Хранение 4 ГБ данных в 1959 году.

@javatg
👍28😱13🔥8🤯53
🚀 Spring Совет 🚀

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

Но иногда могут быть серьезные проблемы, такие как деградация служб или полный отказ служб сам по себе. Бессмысленно продолжать повторные попытки в таких случаях. В этом случае может быть полезна модель автоматического выключателя (Circuit Breaker).

Если вы используете API шлюзы или прокси–серверы вроде Envoy, то это может быть достигнуто на самом прокси–уровне.

Примечание: Очень важно, чтобы было реализовано достаточное количество логов и предупреждений, когда цепь открыта, чтобы отслеживать запросы, полученные в течение этого времени, и чтобы операционная команда знала об этом.

Вы также можете реализовать автоматический выключатель с разомкнутой наполовину цепью, чтобы продолжать обслуживать клиентов с ослабленным обслуживанием.

Когда стоит использовать этот паттерн

Когда служба зависит от другого удаленного сервиса, и в некоторых сценариях она, скорее всего, откажет.
Когда служба имеет очень сильную зависимость (например, службы master data).

Когда не стоит использовать этот паттерн

Когда вы имеете дело с локальными зависимостями — автоматический выключатель может создать накладные расходы.

Reselience4J, позволяет реализовывать этот шаблон очень легко.
🔥

https://resilience4j.readme.io

@javatg
👍164🔥3
💥 Spring Boot and Thymeleaf library for htmx

Этот проект предоставляет аннотации, вспомогательные классы и синатксис Thymeleaf, чтобы упростить работу с htmx в приложении Spring Boot.

Более подробную информацию о htmx можно найти на в доккументации.

Github

@javatg
🔥104👍2👏1
«Я вообще нифига не понимаю. И скоро это поймут»: умелец устроился на работу Senior java-разработчиком на ₽300,000 сразу после курсов.

Он наврал в резюме, а теперь ищет спеца, на которого скинет всю работу за 50% от зарплаты.

Ждем курса от умельца, как устроиться Senior разработчиком без навыков и опыта.

@javatg
😁45👍11🔥76🤬5👏1🎉1🤩1
🚀 Spring совет 🚀

WebUtils

Служебный класс для работы с веб-задачами, такими как извлечение параметров запроса, обработка составных запросов и управление файлами cookie. 🔥

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/WebUtils.html

#Spring #java

@javatg
👍145🔥3
😁88🔥13👍54👎2
🖥 Огромная шпаргалка с готовыми запросами SQL (SQLite)

Смотреть

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥32👎1
🖥Oblivion - Unofficial Warp Client for Android

Oblivion обеспечивает безопасный, оптимизированный доступ в интернет через приложение для Android, написанное на Java с использованием технологии cloudflare warp.

Используя bepass-sdk и WireGuard, инструмент предназначен для быстрого и конфиденциального доступа в интернет.

Github

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥42
🚀 Совет по Java API🚀

java.nio.file.WatchService

Отслеживайте события файловой системы в режиме реального времени.

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

https://docs.oracle.com/en/java/javase/21/docs/api/java.base/java/nio/file/WatchService.html

#Java #JavaAPI

@javatg
👍155🔥4
2025/07/09 12:27:37
Back to Top
HTML Embed Code: