Telegram Web Link
💻 Отличная статья-презентация о работе с шаблонизаторами Kotlin

В статье рассматривается использование шаблонизатора Pebble для формирования HTML-документов и его особенности, включая поддержку фильтров, тегов и наследования шаблонов.

Описаны условные конструкции, проверки и наследование шаблонов в рамках использования шаблонизатора Pebble.

Обсуждаются принципы работы с шаблонами и передача списков данных в шаблоны.

Параллельно рассматриваются различные аспекты разработки приложений на Kotlin, включая императивный, объектно-ориентированный и функциональный синтаксис; рассматривается работа с функциями в Kotlin и их объектная природа.

Кроме этого обсуждается вопрос null-безопасности в Kotlin и удобные средства для обработки этой ситуации.

📎 Онлайн-презентация

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
📌Мастер-класс: рекомендательная система музыки на Java

При помощи открытого датасета в этом видео с нуля создаётся рекомендательная система музыки; разбирается, какие из наивных решений могут не сработать в реальных системах.
На примере технологий Одноклассников спикер рассказывает, как решаются ML-задачи в гетерогенных продакшенах, где необходимо использовать вместе Java и Python.

Мастер-класс будет интересен разработчикам, которым интересна тема машинного обучения, но они либо еще не погружались в нее, либо сделали самые первые шаги.

📎 Кликабельный план видео
📎 YouTube
📎 Презентация PDF из видео

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 О безопасности веб-проекта на Spring

Встречайте годный контент 🌟
В этом ролике речь пойдёт об обеспечении безопасности веб-приложения при помощи Spring Security и будет продемонстрирована настройка цепочки фильтров безопасности.
Здесь показывается использование формы входа, Basic-аутентификации и применение OAuth 2.0/OpenID Connect.

Нереально полезно и информативно

▶️ Youtube

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 SQL-инъекции JDBC, JPA, Spring Data

В данной статье речь пойдёт о таком типе уязвимости приложений как внедрение SQL кода.
Вообще, в мире Java разработки существует несколько простых правил, позволяющих практически полностью исключить возможности внедрения SQL:
— Не использовать конкатенацию строк в запросах к базам данных.

— Использовать PreparedStatement/CallableStatement вместо Statement. Библиотеки spring-jdbc, Hibernate, MyBatis, JOOQ и прочие также внутри используют PreparedStatement.

— Передавать параметры запросов с помощью методов setParameter, а не в самом запросе.

Поэтому кажется, что большинство разработчиков уже следует этим правилам и риск подверженности SQL-инъекциям в Java приложениях преувеличен. К сожалению, контрпримеры существуют, и поэтому сохраняется необходимость в повышенном внимании к данной проблеме.
Этому и посвящена статья.

📎 Код примеров на GitHub

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Java #Spring @SpringSecurity

Совет: Если вы хотите получить доступ к текущему аутентифицированному пользователю в любом месте кода, вы можете использовать класс SecurityContextHolder.

С ним, вам не нужно передавать объект аутентификации из вашего RestController через несколько служб.

@javatg
🖥 Расширение PVS-Studio для Visual Studio Code: поиск ошибок в Java-коде

Если пишешь на Java в VS Code, то можешь затестить полезный плагин PVS-Studio (он существует ещё и для IntelliJ IDEA)
Плагин позволяет находить ошибки, проблемные места в коде и уязвимости.

Все предупреждения делятся на 3 уровня, отражающих вероятность того, что они окажутся истинными:

1 уровень (красный) — эти предупреждения не обязательно могут быть самыми критичными, однако они наиболее точные;

2 уровень (оранжевый) — часто предупреждения этого уровня указывают на не самые простые и интересные ошибки, однако и обеспечить точность их нахождения сложнее;

3 уровень (жёлтый) — предупреждения этого уровня чаще всего бывают спорными или незначительными. Рекомендуется обращать на них внимание в последнюю очередь, но и полностью игнорировать не стоит. Среди них также могут оказаться несколько предупреждений, указывающих на ошибки в вашем коде.

В целом, довольно полезная штука, можно затестить

📎 Читать подробнее

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Собеседование Java Junior

Держите видео с мок-интервью на позицию Junior Java Developer.
Самое то, чтобы проверить себя, особенно, если только начинаете свой путь в Java

План видео:
02:00 — ООП, архитектура и дизайн, шаблоны проектирования, SOLID
25:30 — collection framework, коллекции Java, mutable/immutable collections
45:50 — exception, исключения в Java
58:40 — spring framework, spring boot, spring beb, HTTP, JSON
1:12:00 — dependency injection, inversion of control, bean, bean scope, spring context, конфигурация бинов
1:24:40 — Базы данных, принципы ACID, параллельные транзакции, аномалии при параллельных транзакциях, уровни изоляции транзакции, Foreign Key, Join, связи

📎 YouTube

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Понимание Class<?> в Java: примеры и способы применения

Class<?> — классовый литерал неуточненного типа, что схоже с wildcard-символом в дженериках. Такая запись позволяет взаимодействовать с объектом типа Class, не привязываясь к его конкретному типу, при этом гарантируя типобезопасность. Это означает, что методы могут работать с любым объектом Class, независимо от его принадлежности к какому-то классу.

Пример:
public void processClass(Class<?> anyClass) {
System.out.println(anyClass.getName() + " готов к работе!");
}

// вызов метода с параметром любого класса
processClass(Integer.class); // вывод: java.lang.Integer готов к работе!

В processClass использование Class<?> позволяет взаимодействовать с объектами любых классов, напр. Integer.class, сохраняя типобезопасность и гарантируя универсальность операций.


Небольшое напоминание: в Java, подстановочный символ ? в Class<?> означает неопределенный тип класса, что удобно при создании универсального кода, способного работать с объектами различных классов.


Обобщения классов: обобщения в Java обеспечивают типобезопасность и помогают избегать ошибок во время выполнения. Использование Class<?> даёт разработчикам возможность обращаться к объектам любых классов, сохраняя при этом строгое типовое контролирование.


Рефлексия в Java позволяет анализировать и модифицировать поведение программы на этапе выполнения. Class<?> служит ключом к возможностям рефлексии, позволяя работать с объектами, тип которых неизвестен при компиляции.


Class<?> и Class — сравнение:

С введением дженериков в Java 5 использование Class<?> стало предпочтительнее, чем простое Class. Это делает код понятнее для компилятора, предотвращает небезопасное приведение типов и повышает качество кода.


Аккуратнее с подстановочным символом

Class<?> – это подстановочный символ для любого класса, а не для любого типа в Java. Этот нюанс важно учитывать при работе с коллекциями и использовать такую мощную особенность ответственно.

📎 Читать подробнее

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
2024/10/01 22:21:51
Back to Top
HTML Embed Code: