This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Визуализация 9 типов тестирования API
▪Smoke Testing
Выполняется после разработки API. Проверка того, что API работают и ничего не выходит из строя.
▪Functional Testing
Позволяет создать план тестирования на основе функциональных требований и сравнить его с фактическими результатами.
▪Integration Testing
Этот тест объединяет ряд вызовов API и выполняет сквозные тесты. Оцениваются коммуникации и передача данных в процессе эксплуатации.
▪Regression Testing
Этот тест гарантирует, что исправления ошибок или новые функции не нарушат текущее поведение API.
▪Load Testing
Измеряет производительность приложений при различных нагрузках. Мы можем определить емкость приложения.
▪Stress Testing
API специально перегружаются, чтобы проверить, могут ли они функционировать должным образом.
▪Security Testing
Этот тест сертифицирует API от всех потенциальных угроз извне.
▪UI Testing
Гарантирует, что пользовательский интерфейс может взаимодействовать с этими API и отображать данные по мере необходимости.
▪Fuzz Testing
Этот тест отправляет недействительные или неожиданные входные данные в API и пытается вызвать его сбой. Делается путем выявления уязвимостей API.
#opensource #api #web
@javatg
▪Smoke Testing
Выполняется после разработки API. Проверка того, что API работают и ничего не выходит из строя.
▪Functional Testing
Позволяет создать план тестирования на основе функциональных требований и сравнить его с фактическими результатами.
▪Integration Testing
Этот тест объединяет ряд вызовов API и выполняет сквозные тесты. Оцениваются коммуникации и передача данных в процессе эксплуатации.
▪Regression Testing
Этот тест гарантирует, что исправления ошибок или новые функции не нарушат текущее поведение API.
▪Load Testing
Измеряет производительность приложений при различных нагрузках. Мы можем определить емкость приложения.
▪Stress Testing
API специально перегружаются, чтобы проверить, могут ли они функционировать должным образом.
▪Security Testing
Этот тест сертифицирует API от всех потенциальных угроз извне.
▪UI Testing
Гарантирует, что пользовательский интерфейс может взаимодействовать с этими API и отображать данные по мере необходимости.
▪Fuzz Testing
Этот тест отправляет недействительные или неожиданные входные данные в API и пытается вызвать его сбой. Делается путем выявления уязвимостей API.
#opensource #api #web
@javatg
Ответ на картинке.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вы случайно уже используете генератор метамодели в своем проекте, вы можете использовать сгенерированные классы модели в атрибуте
mappedBy
ваших отношений, чтобы обеспечить немного большую типобезопасность.@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
☕ Shallow Copy vs Deep Copy
⚡️ Поверхностное копирование:
Создается новая переменная. Она ссылается на тот же объект в памяти, что и оригинал. Это означает, что любые изменения в копии будут отражаться и на исходном объекте.
Используется:
- Когда объект содержит только примитивные типы данных.
- Когда две ссылки на один объект запланированы или допустимы.
⚡️ Глубокое копирование:
Создается полностью независимый дубликат объекта, включая все вложенные структуры.
Это гарантирует, что изменения в копии никак не повлияют на оригинальный объект.
Используется:
- Когда объекты содержат вложенные объекты или массивы.
- Когда вам нужна полная независимость между копиями.
@javatg
⚡️ Поверхностное копирование:
Создается новая переменная. Она ссылается на тот же объект в памяти, что и оригинал. Это означает, что любые изменения в копии будут отражаться и на исходном объекте.
Используется:
- Когда объект содержит только примитивные типы данных.
- Когда две ссылки на один объект запланированы или допустимы.
⚡️ Глубокое копирование:
Создается полностью независимый дубликат объекта, включая все вложенные структуры.
Это гарантирует, что изменения в копии никак не повлияют на оригинальный объект.
Используется:
- Когда объекты содержат вложенные объекты или массивы.
- Когда вам нужна полная независимость между копиями.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ every-programmer-should-know | Каждый кодер должен знать
Крутая подборка материалов про Computer Science. Неважно, какой ЯП вы используете, вам все равно стоит знать виды алгоритмов, структур данных, архитектуры и другую базу.
📌 Репозиторий проекта
@javatg
Крутая подборка материалов про Computer Science. Неважно, какой ЯП вы используете, вам все равно стоит знать виды алгоритмов, структур данных, архитектуры и другую базу.
📌 Репозиторий проекта
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️Легкий способ получать свежие обновления и следить за трендами в разработке на вашем языке. Находите свой стек и подписывайтесь:
МАШИННОЕ ОБУЧЕНИЕ: www.tg-me.com/ai_machinelearning_big_data
C++ www.tg-me.com/cpluspluc
Python: www.tg-me.com/pro_python_code
Хакинг: www.tg-me.com/linuxkalii
Devops: www.tg-me.com/devOPSitsec
АНАЛИЗ Данных: www.tg-me.com/data_analysis_ml
Javascript: www.tg-me.com/javascriptv
C#: www.tg-me.com/csharp_ci
Java: www.tg-me.com/javatg
Базы данных: www.tg-me.com/sqlhub
Linux: www.tg-me.com/linuxacademiya
Python собеседования: www.tg-me.com/python_job_interview
Мобильная разработка: www.tg-me.com/mobdevelop
Docker: www.tg-me.com/DevopsDocker
Golang: www.tg-me.com/Golang_google
React: www.tg-me.com/react_tg
Rust: www.tg-me.com/rust_code
PHP: www.tg-me.com/phpshka
Android: www.tg-me.com/android_its
Frontend: www.tg-me.com/front
Big Data: www.tg-me.com/bigdatai
Собеседования МЛ: www.tg-me.com/machinelearning_interview
МАТЕМАТИКА: www.tg-me.com/data_math
Kubernets: www.tg-me.com/kubernetc
💼 Папка с вакансиями: www.tg-me.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: www.tg-me.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tg-me.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tg-me.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tg-me.com/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: www.tg-me.com/memes_prog
🇬🇧Английский: www.tg-me.com/english_forprogrammers
🧠ИИ: www.tg-me.com/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://www.tg-me.com/addlist/BkskQciUW_FhNjEy
МАШИННОЕ ОБУЧЕНИЕ: www.tg-me.com/ai_machinelearning_big_data
C++ www.tg-me.com/cpluspluc
Python: www.tg-me.com/pro_python_code
Хакинг: www.tg-me.com/linuxkalii
Devops: www.tg-me.com/devOPSitsec
АНАЛИЗ Данных: www.tg-me.com/data_analysis_ml
Javascript: www.tg-me.com/javascriptv
C#: www.tg-me.com/csharp_ci
Java: www.tg-me.com/javatg
Базы данных: www.tg-me.com/sqlhub
Linux: www.tg-me.com/linuxacademiya
Python собеседования: www.tg-me.com/python_job_interview
Мобильная разработка: www.tg-me.com/mobdevelop
Docker: www.tg-me.com/DevopsDocker
Golang: www.tg-me.com/Golang_google
React: www.tg-me.com/react_tg
Rust: www.tg-me.com/rust_code
PHP: www.tg-me.com/phpshka
Android: www.tg-me.com/android_its
Frontend: www.tg-me.com/front
Big Data: www.tg-me.com/bigdatai
Собеседования МЛ: www.tg-me.com/machinelearning_interview
МАТЕМАТИКА: www.tg-me.com/data_math
Kubernets: www.tg-me.com/kubernetc
💼 Папка с вакансиями: www.tg-me.com/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: www.tg-me.com/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: www.tg-me.com/addlist/eEPya-HF6mkxMGIy
Папка ML: https://www.tg-me.com/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://www.tg-me.com/addlist/mzMMG3RPZhY2M2Iy
😆ИТ-Мемы: www.tg-me.com/memes_prog
🇬🇧Английский: www.tg-me.com/english_forprogrammers
🧠ИИ: www.tg-me.com/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: https://www.tg-me.com/addlist/BkskQciUW_FhNjEy
#воросы_с_собеседования
Зачем выбирать ReentrantLock вместо synchronized?
Объект класса ReentrantLock решает те же задачи, что и блок synchronized. Поток висит на вызове метода lock() в ожидании своей очереди занять этот объект. Владеть локом, как и находиться внутри блока synchronized может только один поток одновременно. unlock(), подобно выходу из блока синхронизации, освобождает объект-монитор для других потоков.
В отличие от блока синхронизации, ReentrantLock дает расширенный интерфейс для получения информации о состоянии блокировки. Методы лока позволяют еще до блокировки узнать, занят ли он сейчас, сколько потоков ждут его в очереди, сколько раз подряд текущий поток завладел им.
Шире и возможные режимы блокировки. Кроме обычного ожидающего lock(), вариант tryLock() с параметром ожидает своей очереди только заданное время, а без параметра — вообще не ждет, а только захватывает свободный лок.
Еще одно отличие — свойство fair. Лок с этим свойством обеспечивает «справедливость» очереди: пришедший раньше поток захватывает объект раньше. Блок synchronized не дает никаких гарантий порядка.
@javatg
Зачем выбирать ReentrantLock вместо synchronized?
Объект класса ReentrantLock решает те же задачи, что и блок synchronized. Поток висит на вызове метода lock() в ожидании своей очереди занять этот объект. Владеть локом, как и находиться внутри блока synchronized может только один поток одновременно. unlock(), подобно выходу из блока синхронизации, освобождает объект-монитор для других потоков.
В отличие от блока синхронизации, ReentrantLock дает расширенный интерфейс для получения информации о состоянии блокировки. Методы лока позволяют еще до блокировки узнать, занят ли он сейчас, сколько потоков ждут его в очереди, сколько раз подряд текущий поток завладел им.
Шире и возможные режимы блокировки. Кроме обычного ожидающего lock(), вариант tryLock() с параметром ожидает своей очереди только заданное время, а без параметра — вообще не ждет, а только захватывает свободный лок.
Еще одно отличие — свойство fair. Лок с этим свойством обеспечивает «справедливость» очереди: пришедший раньше поток захватывает объект раньше. Блок synchronized не дает никаких гарантий порядка.
@javatg
1. Awesome Java: https://github.com/akullpp/awesome-java
2. Modern Java - A Guide to Java 8: https://github.com/winterbe/java8-tutorial
3. Java Design Patterns: https://github.com/iluwatar/java-design-patterns
4. Spring Framework: https://github.com/spring-projects/spring-framework
5. Algorithms: https://github.com/TheAlgorithms/Java
6. Spring Boot Tutorial: https://github.com/RameshMF/spring-boot-tutorial
7. Baeldung Java and Spring Tutorials: https://github.com/eugenp/tutorials
8. Google Style Guides: https://github.com/google/styleguide
9. Netflix - Open Source Java Projects: https://github.com/Netflix
10. Ultimate Java Resources: https://github.com/dubesar/Ultimate-Java-Resources
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Apache Gravitino - это высокопроизводительное, геораспределенное озеро метаданных.
Озеро данных — это место, где хранятся структурированные и неструктурированные данные, а также метод организации больших объемов очень разных данных, поступающих из различных источников.
Озера данных играют все более важную роль, поскольку люди, особенно занятые в бизнесе и сфере технологий, хотят исследовать и обнаруживать все более разнообразные данные. Это гораздо проще сделать, если собрать все данные или хотя бы большинство данных в одном месте.
Язык: Java
🌟Звезд: 912
📝Forks: 292
▪Github
#java #advanced #datalake
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Java + WebDav - загружаем файл на webdav через Rest запрос.
00:00 Приветствие
00:34 Spring Init
00:55 Docker Hub
01:54 docker-compose
04:25 webdav.conf
06:00 application.yaml
06:50 Sardine
07:36 WebDavConfig
09:15 WebConfig
11:40 FileService
14:09 Controller
17:22 Docker Fix
17:47 Postman
18:16 что не так?
20:46 Подписывайтесь
🚀 источник
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring Scheduler — это часть Spring Framework, которая позволяет планировать и выполнять задачи в заданное время или по расписанию. Он избавляет от необходимости интеграции сторонних библиотек, предлагая встроенные решения для управления задачами.
Виды задач:
-
Scheduled
— аннотация для запуска методов по расписанию.- TaskScheduler — интерфейс для более гибкого управления задачами.
- Cron-выражения — для сложных расписаний.
- Простота использования за счёт минимальной конфигурации.
- Интеграция с другими частями Spring.
- Поддержка CRON-выражений для гибкости.
- Ограниченная поддержка в распределённых системах.
- Возможные сложности с тестированием задач.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
echo "# название" >> README.md
- создание файла README.mdgit init
- инициализация репозиторияgit add README.md
- добавления файла README.md в проектgit commit -m "first commit"
- получает проиндексированный снимок состояния и выполняет его коммит в историю проектаgit remote add origin https://github.com/stanruss/название.git
- команда, которой устанавливается подключение к удаленному серверу и git репозиторию, размещающемуся на нем.git push -u origin master
- кзменения отправляются на удаленный серверgit log --oneline
- посмотреть все коммиты.git checkout .
- восстановить все.git checkout "код коммита"
- вернуть до состояния этого коммита.git checkout master
- вернуться в ветку мастер.Восстановить файлы на локальном компьютере:
```shell
git fetch --all
git reset --hard origin/master или git reset --hard origin/<название_ветки>
```
git add text.txt
- Добавить файл в репозиторийgit rm text.txt
- Удалить файлgit status
- Текущее состояние репозитория (изменения, неразрешенные конфликты и тп)git commit -a -m "Commit description"
- Сделать коммитgit push origin
- Замерджить все ветки локального репозитория на удаленный репозиторий git push origin master
- Аналогично предыдущему, но делается пуш только ветки mastergit push origin HEAD
- Запушить текущую ветку, не вводя целиком ее названиеgit pull origin
- Замерджить все ветки с удаленного репозиторияgit pull origin master
- Аналогично предыдущему, но накатывается только ветка mastergit pull origin HEAD
- Накатить текущую ветку, не вводя ее длинное имяgit fetch origin
- Скачать все ветки с origin, но не мерджить их в локальный репозиторийgit fetch origin master
- Аналогично предыдущему, но только для одной заданной веткиgit checkout -b some_branch origin/some_branch
- Начать работать с веткой some_branch (уже существующей)git branch some_branch
- Создать новый бранч (ответвится от текущего)git checkout some_branch
- Переключиться на другую ветку (из тех, с которыми уже работаем)git branch
# звездочкой отмечена текущая ветвь - Получаем список веток, с которыми работаемgit branch -a # | grep something
- Просмотреть все существующие ветвиgit merge some_branch
- Замерджить some_branch в текущую веткуgit branch -d some_branch
- Удалить бранч (после мерджа)git branch -D some_branch
- Просто удалить бранч (тупиковая ветвь)git show d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4
- Изменения, сделанные в заданном коммитеgit push origin :branch-name
- Удалить бранч из репозитория на сервереgit reset --hard d8578edf8458ce06fbc5bb76a58c5ca4a58c5ca4
- Откатиться к конкретному коммиту и удалить последующие (хэш смотрим в «git log»)git push -f
- Залить на сервер измененные коммитыgit clean -f
- Удаление untracked files#git #github #doc #cheatsheet
Please open Telegram to view this post
VIEW IN TELEGRAM
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Language: Java
Stars: 5.2
Forks: 715
https://github.com/exadel-inc/CompreFace
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Apache SeaTunnel
Мощный и высокопроизводительный инструмент распределенной интеграции данных нового поколения, способный ежедневно синхронизировать огромные объемы данных.
SeaTunnel способен стабильно и эффективно синхронизировать данные в режиме реального времени и уже используется в продакшене почти 100 компаниями.
Написан полностью на Java
#софт
https://seatunnel.apache.org/docs/2.3.5/about/
@javatg
Мощный и высокопроизводительный инструмент распределенной интеграции данных нового поколения, способный ежедневно синхронизировать огромные объемы данных.
SeaTunnel способен стабильно и эффективно синхронизировать данные в режиме реального времени и уже используется в продакшене почти 100 компаниями.
Написан полностью на Java
#софт
https://seatunnel.apache.org/docs/2.3.5/about/
@javatg