🔥 Дайджест полезных материалов из мира Java за неделю
Почитать:
— В Java 21 собираются реализовать сопоставление с образцом – так, глядишь, я снова на этот язык перейду
— Добавление отзывов с фотографиями в S3 с помощью AWS SDK Java
— Microsoft предлагает БЕСПЛАТНЫЕ онлайн курсы с сертификацией
— Сделали по красоте: победители «Конкурса красоты кода»
— OOM: direct memory при работе с сетью TCP/IP через NIO в Java
— Построение гибкой и распределенной архитектуры с использованием Kafka и Kafka Connect: Часть 2 — Получатель и Helm Chart
— Решаем задачу о секретном рукопожатии на Java
— Продвинутый телеграмм бот на Java (Spring, postgres и free deploy)
— Принцип Универсалий: или локальный подход к Dependency Injection
— Вышла Java 21
— Hello World in Java
— Cracking the Code: Leet Code 1048 - Longest String Chain (Medium) - NileshDev
— Cracking the LeetCode:392 Is Subsequence?
— Semaphores, is that so easy!! The Clothing Store Analogy as a Guide for Beginners
— Scanner em Java
— #11 Example of Views & View Groups in android | Android Studio Tutorial | SoftwareTechIT
— The Big Debate: Should We Explain Code or Not?
— Using JLink to create smaller Docker images for your Spring Boot Java application
— Salesforce Integration Services
— How to prevent NullPointerExceptions in Java
Посмотреть:
🌐 Java21 Brings Full Pattern Matching #RoadTo21 (⏱ 23:28)
🌐 Java 21 in Two Minutes... more or less (⏱ 02:50)
🌐 How can you model a concurrent task in Java? - Cracking the Java Coding Interview (⏱ 00:53)
🌐 Comparing Doubles with a comparator of Numbers? - Cracking the Java Coding Interview (⏱ 00:56)
🌐 JDK 21 Release Notes - Inside Java Newscast #55 (⏱ 34:18)
🌐 All About Java 21 - Launch Event (⏱ 08:01:35)
🌐 Как становились программистами 20 лет назад и что изменилось сейчас — Леша Корепанов (⏱ 01:02:28)
Хорошего дня!
@javatg
Почитать:
— В Java 21 собираются реализовать сопоставление с образцом – так, глядишь, я снова на этот язык перейду
— Добавление отзывов с фотографиями в S3 с помощью AWS SDK Java
— Microsoft предлагает БЕСПЛАТНЫЕ онлайн курсы с сертификацией
— Сделали по красоте: победители «Конкурса красоты кода»
— OOM: direct memory при работе с сетью TCP/IP через NIO в Java
— Построение гибкой и распределенной архитектуры с использованием Kafka и Kafka Connect: Часть 2 — Получатель и Helm Chart
— Решаем задачу о секретном рукопожатии на Java
— Продвинутый телеграмм бот на Java (Spring, postgres и free deploy)
— Принцип Универсалий: или локальный подход к Dependency Injection
— Вышла Java 21
— Hello World in Java
— Cracking the Code: Leet Code 1048 - Longest String Chain (Medium) - NileshDev
— Cracking the LeetCode:392 Is Subsequence?
— Semaphores, is that so easy!! The Clothing Store Analogy as a Guide for Beginners
— Scanner em Java
— #11 Example of Views & View Groups in android | Android Studio Tutorial | SoftwareTechIT
— The Big Debate: Should We Explain Code or Not?
— Using JLink to create smaller Docker images for your Spring Boot Java application
— Salesforce Integration Services
— How to prevent NullPointerExceptions in Java
Посмотреть:
🌐 Java21 Brings Full Pattern Matching #RoadTo21 (⏱ 23:28)
🌐 Java 21 in Two Minutes... more or less (⏱ 02:50)
🌐 How can you model a concurrent task in Java? - Cracking the Java Coding Interview (⏱ 00:53)
🌐 Comparing Doubles with a comparator of Numbers? - Cracking the Java Coding Interview (⏱ 00:56)
🌐 JDK 21 Release Notes - Inside Java Newscast #55 (⏱ 34:18)
🌐 All About Java 21 - Launch Event (⏱ 08:01:35)
🌐 Как становились программистами 20 лет назад и что изменилось сейчас — Леша Корепанов (⏱ 01:02:28)
Хорошего дня!
@javatg
Подробный гайд по созданию микросервисов с использованием Spring Boot.
В этом учебном пособии показано -как создавать микросервис с использованием Spring Boot 3, Spring Cloud и базы данных PostgreSQL.
В этом микросервисном проекте вы изучите такие важные понятия, как
API Gateway, Config Server, Discovery Server,
и практически реализуете два реальных микросервиса - Student и School.📌 Статья
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Оператор +
Известно, что использование оператора + считается плохой практикой. Дело в том, что строки неизменяемы, и в соответствии с внутренним механизмом новая строка создается для каждой объединяемой части. Однако “meten is weten”, что в переводе с голландского означает “хочешь знать — измерь”. Посмотрим, что на самом деле происходит внутри:
// Пример #1:
String example1 = "some String " + 42;
// Пример #2:
int someInt = 42;
String example2 = "some String " + someInt + " other String " + someInt;
// Пример #3:
String example3 = "";
for (int i = 0; i < 10; i++) {
example3 += someInt;
}
В байт-коде примера #1 осуществляется одно выделение строки. Компилятор Java понимает, что магическое число является константой, поэтому оно загружается как часть строки String в стек операндов:
0: ldc #7 // Строка some String42
Но мы не намерены применять магические значения, поэтому посмотрим, что происходит с переменными.
В примере #2 при использовании переменной компилятор Java не может выполнить такую же оптимизацию, но зато совершает какую-то сложную операцию с помощью invokedynamic:
0: bipush 42
2: istore_1
3: iload_1
4: iload_1
5: invokedynamic #7, 0 // InvokeDynamic #0:makeConcatWithConstants:
(II)Ljava/lang/String;
...
BootstrapMethods:
0: #22 REF_invokeStatic
java/lang/invoke/StringConcatFactory.makeConcatWithConstants:
(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke
/MethodType;Ljava/lang/String;
[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;
Method arguments:
#23 одна String \u0001 другая String \u0001
Эта инструкция позволяет во время выполнения вызвать метод bootstrap для конкатенации. Мы даем ему “рецепт”: some String \u0001 other String \u0001, который в данном случае содержит 2 плейсхолдера. При конкатенации большего числа переменных увеличивается и число плейсхолдеров, но это все равно одна строка String в пуле констант.
Фишка подхода invokedynamic состоит в том, что при появлении обновленных версий JDK с техниками конкатенации JDK, байт-код может оставаться прежним, тогда как действия метода bootstrap усложняются (чуть позже о деталях текущей реализации).
В примере #3 в цикле выполняется следующая инструкция:
16: invokedynamic #9, 0 // InvokeDynamic #0:makeConcatWithConstants:
(Ljava/lang/String;I)Ljava/lang/String;
Она приводит к выделению ненужного количества экземпляров String.
String::format
На мой взгляд, String::format — более эффективная альтернатива оператору +. Данный метод предлагает действительно улучшенную читаемость в ряде случаев и поддерживает локализацию. Основные тесты показывают, что его производительность немного превосходит конкатенацию. Однако реализация метода format создает новую строку String для каждого параметра.
Проведем небольшой эксперимент:
📌 Читать дальше
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира 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
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
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
Основной тренд в мире IT сейчас - экономия ресурсов и легковесные решения. В облаке мы платим только за те ресурсы, которые действительно используем. И чем эффективнее мы их используем, тем меньше денег тратится впустую: уменьшая издержки, увеличиваем маржинальность.
Java долгое время была и остается фаворитом в enterprise решениях, но все чаще в высоконагруженных проектах предпочтение отдается более "производительным" языкам, таким как Go, а порой даже C++. Но вдруг Java тоже может быть быстрой?
📌 Читать дальше
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира 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
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
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
Почитать:
— Создание и тестирование 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 для оркестровки данных, процессов и микросервисов, вы можете создавать надежные рабочие процессы и уверенно управлять ими.
Всего за несколько строк кода можно создать поток прямо из пользовательского интерфейса. Благодаря декларативному интерфейсу
• Github
• Проект
@javatg
Бесконечно масштабируемая, событийно-ориентированная, не зависящая от языка платформ, написаная на 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
Forwarded from Анализ данных (Data analysis)
📒 GigaChat нового поколения.
Разработчики @gigachat_bot изменили подход к обучению модели, а потому практически все умения модели были улучшены. В частности, речь идет о сокращении текстов, ответов на вопросы и генерации идей.
Появился и бот GigaChat в социальной сети «ВКонтакте» — после активации, его можно использовать для самых разных целей: от создания текстов до генерации изображений (за счет интеграции с Kandinsky).
Число уникальных пользователей GigaChat достигло 1 млн.
• Попробовать
@data_analysis_ml
Разработчики @gigachat_bot изменили подход к обучению модели, а потому практически все умения модели были улучшены. В частности, речь идет о сокращении текстов, ответов на вопросы и генерации идей.
Появился и бот GigaChat в социальной сети «ВКонтакте» — после активации, его можно использовать для самых разных целей: от создания текстов до генерации изображений (за счет интеграции с Kandinsky).
Число уникальных пользователей GigaChat достигло 1 млн.
• Попробовать
@data_analysis_ml
Graph-support - это реализация инструмента graphviz на основе Java без каких-либо дополнительных зависимостей.
Graphviz невероятно полезен для быстрого создания изображений или графиков, но его часто необходимо загружать и устанавливать, что не всегда идеально, особенно в производственных средах.
С помощью этой реализации Java вы можете легко генерировать изображения для своих графиков, что значительно облегчает понимание происходящего.
GitHub ⬅️
@javatg
Graphviz невероятно полезен для быстрого создания изображений или графиков, но его часто необходимо загружать и устанавливать, что не всегда идеально, особенно в производственных средах.
С помощью этой реализации Java вы можете легко генерировать изображения для своих графиков, что значительно облегчает понимание происходящего.
GitHub ⬅️
@javatg