Telegram Web Link
🖥 Шпаргалка по типам чисел в Java

Одним из ключевых аспектов работы с числами в Java является разнообразие типов данных: целочисленный тип, числа с плавающей точкой, BigInteger и BigDecimal и символьный тип. Но иногда непонятно, какие из них использовать для решения ваших задач.

📌 Читать

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Принципы SOLID в Kotlin

SOLID — это аббревиатура, обозначающая пять принципов дизайна, которые позволяют создавать сопровождаемое, масштабируемое и надежное ПО. Роберт К. Мартин ввел эти принципы, чтобы помочь программистам писать высококачественный код. Изначально предназначенные для объектно-ориентированного программирования, принципы SOLID применимы и к другим языкам, например Kotlin. Они направлены на обеспечение чистоты кода и улучшение дизайна программного обеспечения.

Вот 5 принципов SOLID:

Single Responsibility Principle (SRP) — принцип единственной ответственности.
Open-Closed Principle (OCP) — принцип открытости/закрытости.
Liskov Substitution Principle (LSP) — принцип подстановки Лисков.
Interface Segregation Principle (ISP) — принцип разделения интерфейса.
Dependency Inversion Principle (DIP) — принцип инверсии зависимостей.
Теперь рассмотрим подробнее каждый из этих принципов с примерами выполнения и нарушения.

Принцип единственной ответственности
Принцип единственной ответственности является одним из принципов SOLID в объектно-ориентированном программировании. Смысл его заключается в том, что для каждого конкретного класса должно быть определено только одно назначение. Другими словами, каждый класс должен иметь только одну обязанность или одно задание.

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

Теперь рассмотрим ситуации нарушения и выполнения этого принципа.

Нарушение:

// Нарушение принципа единственной ответственности
// В данном примере класс System пытается одновременно обрабатывать множество различных ситуаций.
// Такой подход может привести к серьезным проблемам в будущем.
class SystemManager {
fun addUser(user: User) { }
fun deleteUser(user: User) { }
fun sendNotification(notification:String) {}
fun sendEmail(user: User, email: String) {}
}

В данном примере класс System пытается обработать множество различных ситуаций в одном и том же месте. Такой подход может привести к серьезным проблемам в будущем.

Выполнение:

// Выполнение принципа единственной отвественности.
// Как видно из этого примера, мы разделили класс System на определенные части
// и поместили функции в соответствующие классы.

class MailManager() {
fun sendEmail(user: User, email: String) {}
}

class NotificationManager() {
fun sendNotification(notification: String) {}
}

class UserManager {
fun addUser(user: User) {}
fun deleteUser(user: User) {}
}

Как видно из этого примера, класс System разделен на определенные части и функции помещены в соответствующие классы.

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

Теперь рассмотрим ситуации нарушения и корректного выполнения этого принципа.

📌 Читать дальше

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Java за неделю

Почитать:
Создание и тестирование gRPC сервиса (Spring Boot приложение)
Вкатываемся в Java Backend, сравниваем Concurrency и Parallelism, учимся работать с Git в среде разработки и знакомимся с классом RandomAccessFile
Я хотел сломать Java и я это сделал
Как не стоит работать с HashSet в Java?
Борьба с временем ответа сервиса
Используем Elasticsearch вместе со Spring Boot
Пишем простую интеграцию с GitHub используя feign и jsonschema2pojo maven plugin
Книга «Грокаем функциональное программирование»
Учимся бесплатно деплоить Java (и не только) приложения (Docker, CircleCI, Google Cloud)
Inversion of Control(IoC) ve Dependency Injection(DI)
What are the benefits of using Java enterprise solutions?
Refactoring my code
Integrating a Vaadin Web Application into External Webpages
Hintergrundfarbe oder Hintergrundbild direkt in PDF-Dokument mit Java einstellen
Java-Fähigkeiten: Einfügen von Text- oder Bild-Wasserzeichen in Word-Dokumente mit Java-Programmierung
Organizing custom metrics for effective application monitoring
PDF-Verwaltung: Vergleich von PDF-Dokumenten mit Java, um Unterschiede im Inhalt zu finden
Streaming Queries for Real-Time Analytics in Spring Boot
Java Design Patterns in Easy Way Series

Посмотреть:
🌐 What is an atomic variable? - Cracking the Java Coding Interview ( 01:00)
🌐 What is a Record? - Cracking the Java Coding Interview ( 01:00)
🌐 Generational ZGC ( 01:20)
🌐 Choosing between ArrayList and LinkedList - JEP Cafe #20 ( 30:50)
🌐 Как стать тестировщиком — QA лид в Европе Оксана Мельникова — Как мы попали в айти ( 49:52)

Хорошего дня!

@javatg
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Event-Driven Declarative Orchestrator

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

Kestra - это универсальный оркестровщик с открытым исходным кодом, который позволяет легко выполнять как запланированные, так и управляемые событиями рабочие процессы. Благодаря использованию лучших практик Infrastructure as Code для оркестровки данных, процессов и микросервисов, вы можете создавать надежные рабочие процессы и уверенно управлять ими.

Всего за несколько строк кода можно создать поток прямо из пользовательского интерфейса. Благодаря декларативному интерфейсу YAML для определения логики оркестровки заинтересованные стороны бизнеса могут участвовать в процессе создания рабочего процесса.

Github
Проект

@javatg
This media is not supported in your browser
VIEW IN TELEGRAM
💼 Лучшие способы тестирования функциональности системы.

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

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

Здесь мы рассмотрим лучшие способы:

1. Юнит-тестирование: Обеспечивает корректную работу отдельных компонентов кода в изоляции.

2. Интеграционное тестирование: Проверяет, что различные части системы работают без сбоев.

3. Системное тестирование: Оценивает соответствие всей системы требованиям пользователя и ее производительность.

4. Нагрузочное тестирование: Проверяет способность системы справляться с высокими нагрузками и выявляет проблемы с производительностью.

5. Тестирование на ошибки: Оценивается, как программное обеспечение обрабатывает недействительные входные данные и условия ошибок.

6. Автоматизация тестирования: Автоматизирует выполнение тестовых примеров для повышения эффективности, повторяемости и уменьшения количества ошибок.

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

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
📒 GigaChat нового поколения.

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

Появился и бот GigaChat в социальной сети «ВКонтакте» — после активации, его можно использовать для самых разных целей: от создания текстов до генерации изображений (за счет интеграции с Kandinsky).

Число уникальных пользователей GigaChat достигло 1 млн.

Попробовать

@data_analysis_ml
Graph-support - это реализация инструмента graphviz на основе Java без каких-либо дополнительных зависимостей.

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

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

GitHub ⬅️

@javatg
🖥 ​Чистая архитектура на Android

Полезный репозиторий, в котором представлены все основные принципы чистой архитектуры: разделение ответственности, слоев, представления и данных.

Проект написан на Kotlin с применением Jetpack Compose и Coroutines. В нём есть юнит-тесты, интеграционные и анализ качества кода.

Github

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Java за неделю

Почитать:
Как потратить дни, чтобы сэкономить секунды: продвинутые коммиты в GitLab
Разработка децентрализованных приложений на Spring Boot: инструменты Web3 Tech
Асинхронный API First
Как упростить себе жизнь: удобные юнит-тесты с JUnit и AssertJ
Набор инструментов backend reliability инженера
Использование записей в качестве проекций в JPA
How to Connect Java Applications to Databases with JDBC
Improving Code Quality in Java: Best Practices and Examples
How Java works ?
Tech Watch #3 — October, 20, 2023
Lista em Java Sem Valores Repetidos
Self-validated Java Objects
Understanding the Strategy Design Pattern with Python and Java
[Digest] Java, Kotlin, Spring, Cloud, and More - Episode 14
Array Methods in Java
Leveraging Java Reflection to Improve Code Quality in Spring Boot

Посмотреть:
🌐 Java's G1 Garbage Collector ( 25:55)
🌐 Java 21… and Beyond ( 48:30)
🌐 Brian Goetz Answers Your Java Questions ( 33:08)
🌐 How can you invoke a method using the Reflection API? - Cracking the Java Coding Interview ( 00:58)
🌐 What is a ConcurrentModification Exception? - Cracking the Java Coding Interview ( 00:59)
🌐 Как не забыть программирование, если ты менеджер и больше не пишешь код ( 01:07:54)

Хорошего дня!

@javatg
Выпущен WireMock Spring Boot 2.0 🚀

Если вы хотите упростить интеграционные тесты HTTP-клиентов, то эта библиотека для вас.

Основные обновления:
- поддержка JUnit 5's
- nested тесты
- wiremockorg

Github

@javatg
🖥 Learn Dynamic Programming Techniques in Java

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

Это полезный навык для решения задач min change, max path sum и других вопросов на собеседовании по кодингу.

В этом бесплатном курсе вы изучите методы динамического программирования на языке Java.

📌 Video

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Spring Boot + Spring Security + JWT + MySQL Database Tutorial

В этом руководстве подробно описано, как реализовать аутентификацию на основе токенов с помощью Spring Boot, Spring Security, JWT и базы данных MySQL.

https://www.javaguides.net/2023/05/spring-boot-spring-security-jwt-mysql.html

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
💡 Задача: Сравнение стёртых строк

Условие: даны две строки, необходимо выяснить являются они идентичными после удаления символов путем использования клавиши backspace (символ #).

Если строка пустая, то backspace оставляет её пустой.

Пример:

Ввод:
s = "ab#c", t = "ad#c"
Вывод:
true
Объяснение:
обе строки после использования удаления символов образуют сроку "ac"

Ввод:
s = "ab##", t = "c#d#"
Вывод:
true

Ввод: s = "a#c", t = "b"
Вывод: false

📌 Решение задачи

Пишите свое решение в комментариях👇


@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
#Java #JPA #Hibernate
Совет: show-sql - это самый простой (но не самый лучший!) способ увидеть SQL запрос, сгенерированный Hibernate. Это вывод можно немного улучшить, включив форматирование, показав JPQL Query, сгенерировавший запрос и включив подсветку, которая делает выходит запросы в красивом виде.
Миграция SpringBoot на Quarkus Cloud Native

Этот учебник содержит пошаговое руководство по плавной трансформации приложения #Spring Boot в облачное нативное приложение #Quarkus.

🐱 GitHub

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🎃 Счастливого Хэллоуина всем #java-разработчикам!

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Как устроены языки Java, C++ и Python?

▪️Java сначала компилирует исходный код в байткод, который не зависит от платформы и выполняется виртуальной машиной Java (JVM). JVM может дополнительно повысить производительность, используя компиляцию Just-In-Time (JIT) для преобразования байткода в машинный код во время выполнения.

▪️Компилируемые языки, такие как C++ и Go, перед выполнением преобразуют исходный код в машинный код с помощью компилятора. Скомпилированный машинный код затем может непосредственно выполняться процессором.

▪️Интерпретируемые языки, такие как Javascript и Ruby, не подвергаются компиляции. Вместо этого их код построчно обрабатывается интерпретатором во время выполнения. Однако современные движки JavaScript, такие как V8, также используют JIT-компиляцию для повышения производительности.

▪️Python представляет собой смесь двух миров. Сначала исходный код компилируется в платформонезависимый байткод, который затем построчно выполняется платформонезависимым интерпретатором. Кроме того, такие реализации, как PyPy, используют JIT-компиляцию для повышения скорости работы.

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

@javatg
2024/10/02 14:19:33
Back to Top
HTML Embed Code: