🔥 Дайджест полезных материалов из мира Java за неделю
Почитать:
— Подтверждение электронной почты с помощью Spring Boot & Angular
— jenv — удобный инструмент для управления версиями Java
— 15 лучших бесплатных курсов по Linux
— Spring Cloud Config и Git. Хранение и распространение конфигураций приложений
— Аннотации и рефлексия в Java
— Объектно-ориентированный подход к созданию REST-клиентов, или возможна ли жизнь без Open API
— Как я делал солнечную зарядку для своего моноколеса и вот что получилось
— Обыкновенное чудо: итоги сезона Java
— Кэширование контекста Spring между запусками тестов: как ускорить процесс локального тестирования
— 100 days of Code
— Encapsulamento: O básico que todo jr. precisa saber
— What is Low code app development?
— Seeking Guidance on Gaining Real-Time Java Experience as a Beginner
— 【Video】896. Monotonic Array - Python, JavaScript, Java and C++
— How to Create Time Picker Dialogue Android Tutorial | Best Android Developer Series #softwaretechit
— 10 Tips to Optimize Memory Usage and Avoid Common Exceptions in Java
— SOLID! Um post "aprofundado"
— JSON Schema applied to InterSystems IRIS
— Turning an array clockwise or counterclockwise
Посмотреть:
🌐 Java Basics – Crash Course (⏱ 3:36)
🌐 What is an annotation? - Cracking the Java Coding Interview (⏱ 00:59)
🌐 When should you use ? extends T? - Cracking the Java Coding Interview (⏱ 00:59)
🌐 JFR View Command (⏱ 01:26)
Хорошего дня!
@javatg
Почитать:
— Подтверждение электронной почты с помощью Spring Boot & Angular
— jenv — удобный инструмент для управления версиями Java
— 15 лучших бесплатных курсов по Linux
— Spring Cloud Config и Git. Хранение и распространение конфигураций приложений
— Аннотации и рефлексия в Java
— Объектно-ориентированный подход к созданию REST-клиентов, или возможна ли жизнь без Open API
— Как я делал солнечную зарядку для своего моноколеса и вот что получилось
— Обыкновенное чудо: итоги сезона Java
— Кэширование контекста Spring между запусками тестов: как ускорить процесс локального тестирования
— 100 days of Code
— Encapsulamento: O básico que todo jr. precisa saber
— What is Low code app development?
— Seeking Guidance on Gaining Real-Time Java Experience as a Beginner
— 【Video】896. Monotonic Array - Python, JavaScript, Java and C++
— How to Create Time Picker Dialogue Android Tutorial | Best Android Developer Series #softwaretechit
— 10 Tips to Optimize Memory Usage and Avoid Common Exceptions in Java
— SOLID! Um post "aprofundado"
— JSON Schema applied to InterSystems IRIS
— Turning an array clockwise or counterclockwise
Посмотреть:
🌐 Java Basics – Crash Course (⏱ 3:36)
🌐 What is an annotation? - Cracking the Java Coding Interview (⏱ 00:59)
🌐 When should you use ? extends T? - Cracking the Java Coding Interview (⏱ 00:59)
🌐 JFR View Command (⏱ 01:26)
Хорошего дня!
@javatg
👍11🔥5❤1
Java
для сравнения бинарных файлов с открытым исходным кодом, позволяющий быстро находить различия и сходства в дизассемблированном коде.BinDiff содержит следующие компоненты:
• cmake - файлы сборки CMake с объявлением внешних зависимостей
fixtures - Коллекция тестовых файлов для проверки работы ядра BinDiff
• ida - Интеграция с дизассемблером IDA Pro
• java - Исходный код Java. Он содержит пользовательский интерфейс визуального диффа BinDiff и соответствующую библиотеку утилит.
• match - Алгоритмы сопоставления для ядра BinDiff
• packaging - Исходники инсталляционных пакетов
• tools - Исполняемые файлы-помощники, поставляемые вместе с продуктом
• Github
• Docs
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍5🔥1
JUnit — это открытый фреймворк для написания и запуска тестов на языке программирования Java. Он разработан с целью поддержки автоматизированных тестов, особенно модульных тестов (unit tests), и обеспечивает удобные аннотации, утверждения и утилиты, которые позволяют легко писать и запускать тесты для Java-кода.
Настройка тестовой среды JUnit
Для начала вам необходимо установить JUnit в ваш проект. Если вы используете Maven или Gradle, добавьте зависимость JUnit в ваш файл настроек. В изображениипример для Maven.
Основы и примеры написания тестов с JUnit
Структура теста
Тестовый класс создается отдельно от основного кода. Он содержит один или несколько тестовых методов, каждый из которых проверяет отдельный аспект работы кода. Тестовые методы помечаются аннотацией @Test.
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class CalculatorTest {
@Test
public void testAddition() {
Calculator calculator = new Calculator();
int result = calculator.add(2, 3);
assertEquals(5, result, "2 + 3 should equal 5");
}
}
Использование утверждений📌 Читать
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥4❤3🤯1😱1
Основной тренд в мире IT сейчас - экономия ресурсов и легковесные решения. В облаке мы платим только за те ресурсы, которые действительно используем. И чем эффективнее мы их используем, тем меньше денег тратится впустую: уменьшая издержки, увеличиваем маржинальность.
Java долгое время была и остается фаворитом в enterprise решениях, но все чаще в высоконагруженных проектах предпочтение отдается более "производительным" языкам, таким как Go, а порой даже C++. Но вдруг Java тоже может быть быстрой?
📌 Читать дальше
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👎6❤3🔥2
🔥 Дайджест полезных материалов из мира Java за неделю
Почитать:
— Java Digest #5
— Упрощаем работу с Excel с помошью Apache POI: готовый шаблонный код
— Автоматизация разработки с помощью подхода DB-first
— Откройте свое будущее: Изучите 15 бесплатных курсов IBM прямо сейчас
— Может ли Java быть быстрой? Сравнение производительности Helidon Níma и Spring
— Exploring Database Options for Java Applications
— Essential Tools for Java Developers
— solve-calculate
— Collaborating with Git Remotes: Adding Config File Support
— Can Sealed Interfaces in Java Improve Code Security?
— Memory management in JAVA
— Agora você vai entender como o java funciona
— javadoc-cleanup 1.3.7 Released (minor bug fixes)
— Article 1: Exploring Java 21: A Look at the Exciting API Changes
— Understanding Java OutOfMemory Issues
Посмотреть:
🌐 Sequenced Collections in Java 21 (⏱ 01:39)
🌐 New Class-File API will make Java Updates easier - Inside Java Newscast #56 (⏱ 09:14)
🌐 What is a Constructor? - Cracking the Java Coding Interview (⏱ 00:53)
🌐 What is a short-circuit method ? - Cracking the Java Coding Interview (⏱ 01:00)
Хорошего дня!
@javatg
Почитать:
— Java Digest #5
— Упрощаем работу с Excel с помошью Apache POI: готовый шаблонный код
— Автоматизация разработки с помощью подхода DB-first
— Откройте свое будущее: Изучите 15 бесплатных курсов IBM прямо сейчас
— Может ли Java быть быстрой? Сравнение производительности Helidon Níma и Spring
— Exploring Database Options for Java Applications
— Essential Tools for Java Developers
— solve-calculate
— Collaborating with Git Remotes: Adding Config File Support
— Can Sealed Interfaces in Java Improve Code Security?
— Memory management in JAVA
— Agora você vai entender como o java funciona
— javadoc-cleanup 1.3.7 Released (minor bug fixes)
— Article 1: Exploring Java 21: A Look at the Exciting API Changes
— Understanding Java OutOfMemory Issues
Посмотреть:
🌐 Sequenced Collections in Java 21 (⏱ 01:39)
🌐 New Class-File API will make Java Updates easier - Inside Java Newscast #56 (⏱ 09:14)
🌐 What is a Constructor? - Cracking the Java Coding Interview (⏱ 00:53)
🌐 What is a short-circuit method ? - Cracking the Java Coding Interview (⏱ 01:00)
Хорошего дня!
@javatg
👍10🔥3❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤1🥰1
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
👍22❤5🔥1
🔥 Дайджест полезных материалов из мира 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
Почитать:
— Создание и тестирование 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
👍11🔥2❤1
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Event-Driven Declarative Orchestrator
Бесконечно масштабируемая, событийно-ориентированная, не зависящая от языка платформ, написаная на Java, для оркестровки и планирования, позволяющая управлять миллионами рабочих процессов декларативно в коде.
Kestra - это универсальный оркестровщик с открытым исходным кодом, который позволяет легко выполнять как запланированные, так и управляемые событиями рабочие процессы. Благодаря использованию лучших практик Infrastructure as Code для оркестровки данных, процессов и микросервисов, вы можете создавать надежные рабочие процессы и уверенно управлять ими.
Всего за несколько строк кода можно создать поток прямо из пользовательского интерфейса. Благодаря декларативному интерфейсу
• Github
• Проект
@javatg
Бесконечно масштабируемая, событийно-ориентированная, не зависящая от языка платформ, написаная на Java, для оркестровки и планирования, позволяющая управлять миллионами рабочих процессов декларативно в коде.
Kestra - это универсальный оркестровщик с открытым исходным кодом, который позволяет легко выполнять как запланированные, так и управляемые событиями рабочие процессы. Благодаря использованию лучших практик Infrastructure as Code для оркестровки данных, процессов и микросервисов, вы можете создавать надежные рабочие процессы и уверенно управлять ими.
Всего за несколько строк кода можно создать поток прямо из пользовательского интерфейса. Благодаря декларативному интерфейсу
YAML
для определения логики оркестровки заинтересованные стороны бизнеса могут участвовать в процессе создания рабочего процесса.• Github
• Проект
@javatg
👍12❤1🔥1
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
👍21❤4🔥3👏1
Forwarded from Анализ данных (Data analysis)
📒 GigaChat нового поколения.
Разработчики @gigachat_bot изменили подход к обучению модели, а потому практически все умения модели были улучшены. В частности, речь идет о сокращении текстов, ответов на вопросы и генерации идей.
Появился и бот GigaChat в социальной сети «ВКонтакте» — после активации, его можно использовать для самых разных целей: от создания текстов до генерации изображений (за счет интеграции с Kandinsky).
Число уникальных пользователей GigaChat достигло 1 млн.
• Попробовать
@data_analysis_ml
Разработчики @gigachat_bot изменили подход к обучению модели, а потому практически все умения модели были улучшены. В частности, речь идет о сокращении текстов, ответов на вопросы и генерации идей.
Появился и бот GigaChat в социальной сети «ВКонтакте» — после активации, его можно использовать для самых разных целей: от создания текстов до генерации изображений (за счет интеграции с Kandinsky).
Число уникальных пользователей GigaChat достигло 1 млн.
• Попробовать
@data_analysis_ml
🔥7❤1👍1👎1
Graph-support - это реализация инструмента graphviz на основе Java без каких-либо дополнительных зависимостей.
Graphviz невероятно полезен для быстрого создания изображений или графиков, но его часто необходимо загружать и устанавливать, что не всегда идеально, особенно в производственных средах.
С помощью этой реализации Java вы можете легко генерировать изображения для своих графиков, что значительно облегчает понимание происходящего.
GitHub ⬅️
@javatg
Graphviz невероятно полезен для быстрого создания изображений или графиков, но его часто необходимо загружать и устанавливать, что не всегда идеально, особенно в производственных средах.
С помощью этой реализации Java вы можете легко генерировать изображения для своих графиков, что значительно облегчает понимание происходящего.
GitHub ⬅️
@javatg
👍12🔥2❤1
Полезный репозиторий, в котором представлены все основные принципы чистой архитектуры: разделение ответственности, слоев, представления и данных.
Проект написан на Kotlin с применением Jetpack Compose и Coroutines. В нём есть юнит-тесты, интеграционные и анализ качества кода.
• Github
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2🔥2
🔥 Дайджест полезных материалов из мира 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
Почитать:
— Как потратить дни, чтобы сэкономить секунды: продвинутые коммиты в 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
👍16🔥4❤2
Динамическое программирование - это подход, позволяющий разбивать задачи на более мелкие подзадачи.
Это полезный навык для решения задач
min change, max path sum
и других вопросов на собеседовании по кодингу.В этом бесплатном курсе вы изучите методы динамического программирования на языке Java.
📌 Video
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤2🔥1