Telegram Web Link
🖥 Piranha — инструмент Java для автоматического рефакторинга кода

Piranha — это инструмент для автоматического рефакторинга кода, связанного с устаревшими флагами.

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

🖥 GitHub
🟡 Примеры рефакторинга с Piranha

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Как работают фильтры сервлетов?

Servlet содержит саму бизнес-логику обработки запросов. Реализации интерфейса javax.servlet.Filter выстраиваются в цепочку, через которую проходит запрос по пути в сервлет, и ответ на него по пути обратно к пользователю.

Filter Chain – типичный пример реализации паттерна Chain of responsibility. Каждый фильтр может модифицировать запрос/ответ, и либо отправить на обработку следующему фильтру, либо заворачивать обратно. В фильтрах удобно выполнять некий общий код обработки запросов: отклонение неавторизованных обращений, логгирование, обогащение запроса/ответа данными из контекста.

Фильтр состоит из трех методов: init, doFilter и destroy. doFilter – основная реализация фильтрации, он вызывается для каждого запроса. Инициализация и уничтожение вызываются строго по одному разу. Кроме того, сервлет-контейнер гарантирует, что их вызовы не будут пересекаться: doFilter не начнет работать до конца выполнения init, и закончит до начала destroy.

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет по Spring Boot 🚀

Еесли вы хотите узнать, когда начинается и заканчивается транзакция #JPA, как повторно использовать существующую транзакцию в @Transactional или шаблоне TransactionTemplate, включите логирование DEBUG для `org.springframework.orm.jpa`.

@javatg
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
2024/10/04 05:23:33
Back to Top
HTML Embed Code: