Telegram Web Link
🆕Java news🆕

Java выпустила новое обновление, включающее в себя Spring Framework 6.1, Spring Data 2023.1, Payara Platform, JEPs for JDK 22.

Вышел JEP 456.

JEP 456: Unnamed Variables and Patterns — расширение языка Java с безымянными переменными, которые могут быть инициализированы, но не использованы. А еще — с безымянными шаблонами, которые сопоставляются с компонентом записи, не указывая имя или тип компонента. Оба обозначаются символом подчеркивания. Эта фича уже есть в Java 21, но в качестве preview, предлагается завершить изменение.

С выходом 22 версии множество функций и дополнений перешли из фазы "Preview" в самодостаточные версии, уже доработанных функций.

Подробнее о всех обновлениях вы можете узнать тут:
ℹ️InfoQℹ️

@javatg
📣 Вышел Kotlin 1.9.21! В этом обновлении решен целый ряд проблем, включая проблемы регрессии.

Кроме того, в Kotlin 1.9.21 реализована kapt-совместимость с JDK21.

Для получения полной информации ознакомьтесь с журналом изменений здесь ⬇️.

https://github.com/JetBrains/kotlin/releases/tag/v1.9.21

@javatg
#Java #SpringBoot Совет: Вы можете запустить метод в Spring
@Service сразу после запуска приложения, аннотировав его с помощью @EventListener (ApplicationReadyEvent.class).

Метод не может иметь параметров. Иногда я использую его для быстрого тестирования определенного метода Spring Service

@javatg
#Java21 включает длинный список новых возможностей, в том числе виртуальные потоки и сильный акцент на улучшении Java для рабочих нагрузок #AI.

В этой статье рассказывается об этом.

⚡️ Читать дальше

@javatg
🤖 Как создать приложение Android за 7 шагов

Создать первое Android-приложение не так сложно, как может показаться.

В этом руководстве мы поможем вам создать первое Android-приложение и запустить его на телефоне.

Android — это операционная система на базе ядра Linux, предназначенная для мобильных устройств с сенсорным экраном, таких как смартфоны, планшеты и смарт-часы.

Это технология с открытым исходным кодом, позволяющая производителям устройств, операторам беспроводной связи и разработчикам свободно изменять и распространять программное обеспечение.

Android был представлен в 2007 году вместе с основанием Open Handset Alliance (альянсом компаний по разработке открытых стандартов для мобильных устройств).

В нашей статье не будем углубляться в установку и настройку Android Studio и посчитаем что она уже установлена.

Создаем приложение Android
Шаг 1.
Дважды кликните на программу “Android Studio”.
Шаг 2. Кликните “New Project”.
Шаг 3. Выберите “Empty Activity”

📌 Далее

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 #Java #JPA Совет: Если вы же используете генератор метамоделей в своем проекте, вы можете использовать сгенерированные классы моделей в атрибуте mappedBy ваших отношений, что обеспечит безопсность типов.

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
SSL vs TLS - в чем разница?

SSL и TLS - это криптографические протоколы, предназначенные для обеспечения безопасного обмена данными по сети.

1️⃣Начало обмена данными

SSL и TLS: перед отправкой данных необходимо установить соединение. На этом этапе оба протокола работают одинаково.

2️⃣Сообщения ClientHello и ServerHello

После установления соединения клиенту и серверу необходимо согласовать настройки безопасности.

SSL: клиент отправляет список поддерживаемых наборов шифров и другие настройки.

TLS: наряду с поддерживаемыми наборами шифров и другими настройками клиент также может отправить "ключевой ресурс" для Diffie-Hellman или Elliptic Curve Diffie-Hellman.

3️⃣Сертификат сервера

SSL и TLS: после обмена сообщениями "ClientHello" и "ServerHello" сервер отправляет клиенту свой цифровой сертификат.

4️⃣Обмен ключами

На этом этапе протоколы существенно различаются.

SSL: преимущественно использует RSA для обмена ключами.
TLS: использует другие механизмы, такие как DH и ECDH.

@javatg
🌟Вышел очередной дайджест новостей Kotlin!

Этот выпуск посвящен многим интересным событиям в мультиплатформенной экосистеме Kotlin.

➡️ https://blog.jetbrains.com/kotlin/2023/12/kotlin-news-nov-23/

🌟 Представляем Amper, новый экспериментальный инструмент для настройки проектов
🌟 Мультиплатформа Kotlin стабильна и готова к работе
🌟 Мультиплатформа Kotlin приходит в JetBrains Fleet
🌟 Вышли Kotlin 1.9.20 и 1.9.21
🌟 Руководство по Compose Multiplatform
🌟 Дорожная карта развития Kotlin Multiplatform на 2024 год
🌟 Серия вебинаров по Kotlin Multiplatform в ноябре
🌟 Code 2023 в Kotlin

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻Сложные вопросы на собеседовании для тех, кто 7 лет работал с Java. Часть 1

Java  — популярный язык программирования, активно применяемый для разработки настольных, мобильных, веб-приложений и корпоративного ПО. Семи лет в Java достаточно, чтобы разбираться в синтаксисе языка, структурах данных, концепциях программирования.

Но на собеседованиях даже опытные разработчики не справляются с каверзными вопросами, которыми проверяются их знания и навыки решения задач. Разберем некоторые их этих вопросов с подробными объяснениями и примерами.

1. Для чего и как в Java используется ключевое слово «transient»?
При сериализации объекта его состояние преобразуется в последовательность байтов, записываемой в файл или отправляемой по сети.

Ключевым словом transient в Java указывается, что значение конкретного поля класса при этом не должно включаться в сериализованную форму объекта.

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

public class MyClass implements Serializable {
private int myInt;
private transient String myTransientString;
// Конструктор, геттеры, сеттеры ради простоты игнорируем
// Другие методы…
}


В этом примере поле myTransientString помечено как transient: его значение не будет включено при сериализации экземпляра MyClass.

2. Чем наследование отличается от композиции? Приведите пример.
Наследование и композиция — два фундаментальных способа создания связей между классами в ООП. В обоих подходах возможны переиспользование кода и абстракция, но с разной реализацией и типами таких связей.

Вот краткое описание каждого подхода.

▪️Наследование. Это механизм, при котором новый класс, называемый подклассом или производным классом, создается наследованием свойств и характеристик — методов и полей — имеющегося класса, называемого суперклассом или базовым классом. Кроме того, методы суперкласса переопределяются подклассом в его собственной реализации. Наследованием между суперклассом и подклассом создаются отношения is-a («это»).
▪️Композиция. Это механизм, при котором в полях одного класса, называемого контейнером или целым классом, содержится минимум один экземпляр другого, называемого компонентным или составным классом. Композицией между классом-контейнером и компонентным классом создаются отношения has-a («имеет»).

📌 Читать дальше

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Обзор архитектуры безопасности Spring Security

Ключевые компоненты:

1️⃣Менеджер аутентификации:
- Отвечает за проверку учетных данных пользователей.
- Использует различные провайдеры аутентификации (например, LDAP, JDBC).
2️⃣Контекст безопасности:
- Хранит информацию о текущем аутентифицированном пользователе.
3️⃣Провайдер аутентификации:
- Реализует фактический процесс аутентификации.
4️⃣Авторизация:
- Контролирует доступ к определенным ресурсам на основе ролей и разрешений пользователей.

🔄 Поток аутентификации:

1️⃣Цепочка фильтров:
- Каждый фильтр обрабатывает определенный аспект процесса аутентификации.
2️⃣Аутентификация по имени пользователя и паролю:
- Типичный вход в систему включает в себя фильтр UsernamePasswordAuthenticationFilter.
- Проверяет учетные данные пользователя в AuthenticationManager.
3️⃣Аутентификация на основе токенов:
- Обеспечивает аутентификацию без статических данных с помощью токенов (например, JWT).

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

При использовании Integer.valueOf(int) помните, что значения между -128 и 127 кэшируются для повышения производительности.

За пределами этого диапазона создаются новые объекты.

Размер кэша можно контролировать с помощью параметра -XX:AutoBoxCacheMax=<size>. 🔥

#Java #Производительность

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Дайджест полезных материалов из мира Java за неделю

Почитать:
Немного о гигиене Java кода
Польза создания однородных задач для параллельного вычисления
Безопасность web приложений с использованием Identity Provider
Java Digest #7
8 бесплатных курсов по большим языковым моделям
Современные варианты баз данных
Деплой приложения на Java. Хостим проект через push в Git
QIWI Server Party 9.0 — 14 декабря, офлайн и онлайн
Как распараллелить тесты с базой данных
Хроники пикирующего бота или как важно не пропускать стадию QA в проектах
Генерация контрактов OpenApi или прикладной API first: совсем немного про зачем
Компоновка аннотаций в Spring
Dominando la Programación Orientada a Objetos
Try to add new feature to a Java Spring boot project
Few words about Java code hygiene
RabbitMQ Retry Strategy: Delay with Maximum Retry Threshold
Mi experiencia con GraalVM y Spring Boot
Records and data transfer
Comparing Java and JavaScript
Day when Skynet becomes self-aware, and 69 reasons to chill out with colleagues. Part 1.
How Gradle disagreed with our Maven project
What is Amortized Time Complexity Analysis

Посмотреть:
🌐 Ollama — модель уровня GPT. Используй GPT без ограничений и абсолютно бесплатно.
🌐 Another VS Code Extension For Java ? ( 07:38)
🌐 Java 22 Unpacking - Inside Java Newscast #59 ( 12:23)
🌐 What is multiple inheritance? - Cracking the Java Coding Interview ( 00:59)
🌐 What is the first thing a consructor is doing? - Cracking the Java Coding Interview #java ( 01:00)
🌐 Getting Started with Generational ZGC ( 12:49)
🌐 Looking up Default Locale in Java 21 ( 02:01)
🌐 Аналитики больше технари, чем программисты? Чья работа сложнее? ( 01:06:26)
🌐 Сильная мотивация для джунов в IT — Евгений Кот ( 00:38)
🌐 Когда нужно искать первую работу в IT — Андрей Смирнов ( 00:37)

Хорошего дня!

@javatg
🚀 Spring Совет 🚀

Кэшируемая аннотация обеспечивает быстрый доступ к данным.

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/cache/annotation/Cacheable.html

#Spring #SpringBoot

@javatg
💡 В Mockito 5.7.0 (входит в Spring Boot 3.2) появился упрощенный способ создания захватчиков аргументов:

@javatg
🖥 Ключевые вопросы для собеседования по Spring Boot в 2023 году. Часть 2

Что представляют собой HTTP-методы?
Вот наиболее часто используемые HTTP-методы.

1. GET: получает ресурс или данные с сервера.

2. POST: отправляет данные для обработки на сервер, что обычно приводит к созданию нового ресурса.

3. PUT: обновляет или заменяет существующий ресурс новыми данными.

4. DELETE: удаляет конкретный ресурс.

5. PATCH: частично обновляет существующий ресурс новыми данными.

6. HEAD: получает метаданные ресурса без извлечения его фактического содержимого.

7. OPTIONS: возвращает допустимые HTTP-методы и возможности сервера для данного ресурса.

Эти HTTP-методы обеспечивают различные способы взаимодействия с ресурсами на сервере, позволяя выполнять различные операции, такие как получение, создание, обновление и удаление данных.

Что такое идемпотентность? Назовите идемпотентные методы
В REST (Representational State Transfer, передача репрезентативного состояния) под идемпотентностью понимается свойство некоторых HTTP-методов, при котором повторные идентичные запросы имеют тот же эффект, что и один запрос. Другими словами, многократное выполнение идемпотентной операции приводит к тому же результату, что и однократное.

Идемпотентные методы в REST гарантируют, что даже при дублировании или повторении запроса из-за проблем в сети/поведения клиента, система останется в том же состоянии и не вызовет нежелательных побочных эффектов. Идемпотентные методы обеспечивают безопасность повторных запросов, не вызывая при этом несогласованности или неожиданного поведения.

В REST идемпотентными считаются следующие HTTP-методы.

▪️GET: многократное получение ресурса не изменяет состояние сервера.
▪️PUT: многократное обновление ресурса одними и теми же данными приводит к одному и тому же результату.
▪️DELETE: многократное удаление ресурса приводит к одному и тому же результату.

Проектирование идемпотентных методов в RESTful API помогает обеспечить надежность, согласованность и отказоустойчивость распределенных систем, позволяя добиться надежного и предсказуемого поведения.

Что такое @Async в Spring Boot?

📌Читать

📌Часть 1

@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Расширенные советы по Spring 🚀

Протоколирование HTTP-запросов с помощью фильтра CommonsRequestLoggingFilter

Включите протоколирование запросов с помощью фильтра CommonsRequestLoggingFilter, чтобы получать подробную информацию о входящих запросах. 🔥

Подробнее: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/CommonsRequestLoggingFilter.html

#SpringTip #Java

@javatg
🔥Подборка лучших обучающих каналов для программистов.

➡️Делитесь с коллегами и Сохраняйте себе, чтобы не потерять

Машинное обучение

Machine Learning - полезные статьи новости гайды и разбор кода
Ml Собеседование - подготовка к собеседовению мл, алгоритмам, кодингу
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат

🚀 Data Science

Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data

🏆 Golang
Golang - подробные гайды, разбор кода, лучшие практики, заметки
Golang собеседование
Golang вакансии
Golang книги
Golang задачи и тесты
Golang чат
Golang news - новости go



#️⃣C#

С# академия
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа

🐍 Python

Python/django
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги

Java

Java академия
Java вакансии
Java чат
Java вопросы с собеседований
Java книги

💻 C++

C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии

💥 Хакинг Kali Linux

Kali linux
linux_kal - kali чат
Информационная безопасность

🐧 Linux

Linux academy

🦀 Rust
Rust программирование
Rust чат

🛢Базы данных
Sql базы данных
Библиотека баз данных
SQL чат

📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки

🖥 Javascript/React/PHP
Javascript академия
React программирование
PHP
Книги frontend
Задачи frontend

🇬🇧 Английский для программистов

🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence

🔥 DevOPs
Devops для программистов
Книги Devops
Docker

📓 Книги
Библиотеки Книг для программситов

💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
Папка Data Science
Папка Java разработчика
Папка C#
🚀 Совет по IntelliJ - создайте свой собственный значок проекта 🚀

Определите пользовательский значок для вашего проекта в IntelliJ, который будет отображаться на экране приветствия. 🔥

@javatg
🖥 Совет: Самый простой способ сделать валидацию нескольких полей без дополнительных классов и аннотаций - использовать @AssertTrue.

Вы помещаете его над методом, возвращающим булеву величину. Имя метода должно начинаться с "is".

#Java #Bean #Валидация

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