Telegram Web Link
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
🖥 Задача: Расположите в виде иерархии следующие интерфейсы: List, Set, Map, SortedSet, SortedMap, Collection, Iterable, Iterator, NavigableSet, NavigableMap

Ответ на картинке.

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Совет Java

Если вы случайно уже используете генератор метамодели в своем проекте, вы можете использовать сгенерированные классы модели в атрибуте 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
🖥 Sharing

Android-приложение, написанное на Java, которое позволяет обмениваться файлами и приложениями по HTTP между устройствами, подключенными к одной сети.

Пользователи могут запустить сервер на своем устройстве, отсканировать QR-код на другом устройстве и легко передавать файлы.

🖥 Github

@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
🚀 Советы по Spring Boot 💡

Библиотека Spring Boot Startup Report генерирует интерактивные отчеты о работе приложений Spring Boot,и помогает понять, что влияет на время загрузки и запуска приложения, что может помочь в оптимизации

Github

@javatg
This media is not supported in your browser
VIEW IN TELEGRAM
👣 voqal

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

С его помощью можно управлять IDE JetBrains голосом: перемещаться по коду, писать, запускать и отлаживать программы.

Github
Docs

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🎮 Cross-platform Game Development Framework

Это кроссплатформенная среда для разработки Java-игр на основе OpenGL, которая предоставляет надежную и проверенную временем платформу для быстрого прототипирования и создания игр.

Github

@javatg
🖥 Cloud Database Manager

CloudBeaver - это веб-сервер, предоставляющий богатый веб-интерфейс.

Сам сервер представляет собой Java-приложение, веб-часть написана на TypeScript и React.

#базы данных #dbclient #dbeaver

Github

@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
#воросы_с_собеседования

Зачем выбирать ReentrantLock вместо synchronized?

Объект класса ReentrantLock решает те же задачи, что и блок synchronized. Поток висит на вызове метода lock() в ожидании своей очереди занять этот объект. Владеть локом, как и находиться внутри блока synchronized может только один поток одновременно. unlock(), подобно выходу из блока синхронизации, освобождает объект-монитор для других потоков.

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

Шире и возможные режимы блокировки. Кроме обычного ожидающего lock(), вариант tryLock() с параметром ожидает своей очереди только заданное время, а без параметра — вообще не ждет, а только захватывает свободный лок.

Еще одно отличие — свойство fair. Лок с этим свойством обеспечивает «справедливость» очереди: пришедший раньше поток захватывает объект раньше. Блок synchronized не дает никаких гарантий порядка.

@javatg
🖥 10 крутых репозиториев GitHub для изучения Java

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 (incubating)

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

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: Интсрумент для управления расписанием задач на Java

Spring Scheduler — это часть Spring Framework, которая позволяет планировать и выполнять задачи в заданное время или по расписанию. Он избавляет от необходимости интеграции сторонних библиотек, предлагая встроенные решения для управления задачами.

Виды задач:

- Scheduled — аннотация для запуска методов по расписанию.
- TaskScheduler — интерфейс для более гибкого управления задачами.
- Cron-выражения — для сложных расписаний.

Плюсы:

- Простота использования за счёт минимальной конфигурации.
- Интеграция с другими частями Spring.
- Поддержка CRON-выражений для гибкости.

Минусы:

- Ограниченная поддержка в распределённых системах.
- Возможные сложности с тестированием задач.

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Крутая шпаргалка по командам Git на русском

echo "# название" >> README.md - создание файла README.md
git 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 - Аналогично предыдущему, но делается пуш только ветки master
git push origin HEAD - Запушить текущую ветку, не вводя целиком ее название
git pull origin - Замерджить все ветки с удаленного репозитория
git pull origin master - Аналогично предыдущему, но накатывается только ветка master
git 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
7️⃣самых эффективных стратегий для масштабирования БД

🔵 Материализованные представления: Предварительно рассчитывайте результаты сложных запросов и сохраняйте их для быстрого доступа.
🔵 Денормализация: Упрощайте сложные соединения для повышения скорости выполнения запросов.
🔵 Вертикальное масштабирование: Увеличивайте ресурсы сервера (процессоры, оперативную память, хранилище) для улучшения производительности.
🔵 Индексация: Анализируйте запросы вашего приложения и создавайте подходящие индексы для ускорения работы.
🔵 Кэширование: Храните часто запрашиваемые данные в быстром хранилище, чтобы снизить нагрузку на базу данных.
🔵 Репликация: Создавайте копии основной базы данных на разных серверах для увеличения объема операций чтения.
🔵 Шардинг: Разделяйте таблицы на более мелкие части и распределяйте их по серверам для улучшения работы с записью и чтением.


@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
2024/10/02 02:36:42
Back to Top
HTML Embed Code: