🆕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
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
Кроме того, в Kotlin 1.9.21 реализована kapt-совместимость с JDK21.
Для получения полной информации ознакомьтесь с журналом изменений здесь ⬇️.
https://github.com/JetBrains/kotlin/releases/tag/v1.9.21
@javatg
GitHub
Release Kotlin 1.9.21 · JetBrains/kotlin
Changelog
Compiler
KT-62885 Introduce a language feature entry for expect actual classes for easier configuration of MPP projects
KT-63081 Optimize new native caches: CachedLibraries.computeVersio...
Compiler
KT-62885 Introduce a language feature entry for expect actual classes for easier configuration of MPP projects
KT-63081 Optimize new native caches: CachedLibraries.computeVersio...
#Java #SpringBoot Совет: Вы можете запустить метод в Spring
@Service сразу после запуска приложения, аннотировав его с помощью @EventListener
Метод не может иметь параметров. Иногда я использую его для быстрого тестирования определенного метода
@Service сразу после запуска приложения, аннотировав его с помощью @EventListener
(
ApplicationReadyEvent.class).
Метод не может иметь параметров. Иногда я использую его для быстрого тестирования определенного метода
Spring Service
@javatg
Создать первое 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
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
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.
➡️ 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: когда имеется поле с временным значением, которое не нужно сохранять при сериализации объекта; или поле с конфиденциальными данными, не включаемое в сериализованную форму объекта по соображениям безопасности.
В этом примере поле myTransientString помечено как transient: его значение не будет включено при сериализации экземпляра MyClass.
2. Чем наследование отличается от композиции? Приведите пример.
Наследование и композиция — два фундаментальных способа создания связей между классами в ООП. В обоих подходах возможны переиспользование кода и абстракция, но с разной реализацией и типами таких связей.
Вот краткое описание каждого подхода.
▪️ Наследование. Это механизм, при котором новый класс, называемый подклассом или производным классом, создается наследованием свойств и характеристик — методов и полей — имеющегося класса, называемого суперклассом или базовым классом. Кроме того, методы суперкласса переопределяются подклассом в его собственной реализации. Наследованием между суперклассом и подклассом создаются отношения is-a («это»).
▪️ Композиция. Это механизм, при котором в полях одного класса, называемого контейнером или целым классом, содержится минимум один экземпляр другого, называемого компонентным или составным классом. Композицией между классом-контейнером и компонентным классом создаются отношения has-a («имеет»).
📌 Читать дальше
@javatg
Java — популярный язык программирования, активно применяемый для разработки настольных, мобильных, веб-приложений и корпоративного ПО. Семи лет в Java достаточно, чтобы разбираться в синтаксисе языка, структурах данных, концепциях программирования.
Но на собеседованиях даже опытные разработчики не справляются с каверзными вопросами, которыми проверяются их знания и навыки решения задач. Разберем некоторые их этих вопросов с подробными объяснениями и примерами.
1. Для чего и как в Java используется ключевое слово «transient»?
При сериализации объекта его состояние преобразуется в последовательность байтов, записываемой в файл или отправляемой по сети.
Ключевым словом transient в Java указывается, что значение конкретного поля класса при этом не должно включаться в сериализованную форму объекта.
Примеры использования ключевого слова transient: когда имеется поле с временным значением, которое не нужно сохранять при сериализации объекта; или поле с конфиденциальными данными, не включаемое в сериализованную форму объекта по соображениям безопасности.
public class MyClass implements Serializable {
private int myInt;
private transient String myTransientString;
// Конструктор, геттеры, сеттеры ради простоты игнорируем
// Другие методы…
}
В этом примере поле myTransientString помечено как transient: его значение не будет включено при сериализации экземпляра MyClass.
2. Чем наследование отличается от композиции? Приведите пример.
Наследование и композиция — два фундаментальных способа создания связей между классами в ООП. В обоих подходах возможны переиспользование кода и абстракция, но с разной реализацией и типами таких связей.
Вот краткое описание каждого подхода.
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ключевые компоненты:
1️⃣Менеджер аутентификации:
- Отвечает за проверку учетных данных пользователей.
- Использует различные провайдеры аутентификации (например, LDAP, JDBC).
2️⃣Контекст безопасности:
- Хранит информацию о текущем аутентифицированном пользователе.
3️⃣Провайдер аутентификации:
- Реализует фактический процесс аутентификации.
4️⃣Авторизация:
- Контролирует доступ к определенным ресурсам на основе ролей и разрешений пользователей.
🔄 Поток аутентификации:
1️⃣Цепочка фильтров:
- Каждый фильтр обрабатывает определенный аспект процесса аутентификации.
2️⃣Аутентификация по имени пользователя и паролю:
- Типичный вход в систему включает в себя фильтр UsernamePasswordAuthenticationFilter.
- Проверяет учетные данные пользователя в AuthenticationManager.
3️⃣Аутентификация на основе токенов:
- Обеспечивает аутентификацию без статических данных с помощью токенов (например, JWT).
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM
При использовании
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
Почитать:
— Немного о гигиене 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
Кэшируемая аннотация обеспечивает быстрый доступ к данным.
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/cache/annotation/Cacheable.html
#Spring #SpringBoot
@javatg
Что представляют собой 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-запросов с помощью фильтра
Включите протоколирование запросов с помощью фильтра
Подробнее: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/filter/CommonsRequestLoggingFilter.html
#SpringTip #Java
@javatg
Протоколирование 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#
➡️Делитесь с коллегами и Сохраняйте себе, чтобы не потерять
⚡Машинное обучение
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#
@AssertTrue
. Вы помещаете его над методом, возвращающим булеву величину. Имя метода должно начинаться с
"is"
.#Java #Bean #Валидация
@javatg
Please open Telegram to view this post
VIEW IN TELEGRAM