Ранее я публиковал статью про новые интерфейсы SequencedCollection и SequencedSet, которые появились в Java 21. Они расширяют базовый интерфейс Collection, добавляя в него ряд полезных методов для манипуляций с первым и последним элементами, а также для инвертирования коллекции.
Теперь я подготовил видео на эту же тему для тех, кому удобнее смотреть, чем читать.
Подписывайтесь, ставьте лайки и пишите комментарии - так вы сможете поучаствовать в продвижении проекта.
Теперь я подготовил видео на эту же тему для тех, кому удобнее смотреть, чем читать.
Подписывайтесь, ставьте лайки и пишите комментарии - так вы сможете поучаствовать в продвижении проекта.
👍5
В продолжение темы SequencedCollection на YouTube выложил ролик про SequencedMap. То же самое, но в виде текста, можно прочитать здесь.
Интерфейс SequencedMap расширяет стандартный Map, добавляя в него методы для доступа и манипулирования первым и последним элементами. В отличие от SequencedCollection, здесь мы манипулируем не отдельными значениями, а сразу парой «ключ-значение», представленной Map.Entry.
Интерфейс SequencedMap расширяет стандартный Map, добавляя в него методы для доступа и манипулирования первым и последним элементами. В отличие от SequencedCollection, здесь мы манипулируем не отдельными значениями, а сразу парой «ключ-значение», представленной Map.Entry.
🔥3👍1
Опубликовал видео на YouTube про value-классы в Kotlin.
Иногда в процессе разработки требуется обеспечить более узкую типизацию параметров, чем позволяют стандартные типы. Особенно, если метод принимает несколько параметров одинакового типа, но каждый параметр несёт разный смысл.
В Kotlin есть особое подмножество классов, называемых value class. Они сочетают в себе высокую производительность как у примитивов и некоторые преимущества ООП, как у обычных классов.
Иногда в процессе разработки требуется обеспечить более узкую типизацию параметров, чем позволяют стандартные типы. Особенно, если метод принимает несколько параметров одинакового типа, но каждый параметр несёт разный смысл.
В Kotlin есть особое подмножество классов, называемых value class. Они сочетают в себе высокую производительность как у примитивов и некоторые преимущества ООП, как у обычных классов.
👍6
По мотивам статьи записал видео про ещё одну production-ready фичу из Java 21 - Pattern matching в switch.
Если ранее в этой конструкции мы могли проверять только константные значения, то теперь мы можем проверять тип переменной и в случае успеха компилятор автоматически выполнит приведение к этому типу.
Кроме того, pattern matching в switch работает также и для record-классов. Помимо приведения к типу, мы также автоматически получаем доступ ко всем значимым полям этого класса, что позволяет избегать громоздких вызовов get-методов.
Если ранее в этой конструкции мы могли проверять только константные значения, то теперь мы можем проверять тип переменной и в случае успеха компилятор автоматически выполнит приведение к этому типу.
Кроме того, pattern matching в switch работает также и для record-классов. Помимо приведения к типу, мы также автоматически получаем доступ ко всем значимым полям этого класса, что позволяет избегать громоздких вызовов get-методов.
👍5
В дополнение к статье про итератор записал видео для YouTube.
Интерфейсы Iterator и Iterable часто используются для работы с коллекциями в Java. Они позволяют эффективно и безопасно работать с коллекциями, обеспечивая контроль над процессом перебора элементов (итерации).
Iterator представляет собой одноимённый шаблон проектирования «Итератор».
Iterable предоставляет более удобный способ работы с коллекциями, позволяя использовать цикл for-each для итерации по элементам коллекции.
Интерфейсы Iterator и Iterable часто используются для работы с коллекциями в Java. Они позволяют эффективно и безопасно работать с коллекциями, обеспечивая контроль над процессом перебора элементов (итерации).
Iterator представляет собой одноимённый шаблон проектирования «Итератор».
Iterable предоставляет более удобный способ работы с коллекциями, позволяя использовать цикл for-each для итерации по элементам коллекции.
👍5
В повседневной работе никто из нас не компилирует исходники ☕️ Java вручную. За нас это делают такие инструменты как maven, gradle или среда разработки типа 💡 Idea.
Но для понимания процессов, которые происходят при каждом тестовом запуске вашего приложения, имеет смысл хотя бы один попробовать это сделать самостоятельно прямо из консоли.
Поэтому по мотивам 📗 статьи я подготовил 📺 видео, где привожу пример компиляции исходников Java из консоли вручную.
Но для понимания процессов, которые происходят при каждом тестовом запуске вашего приложения, имеет смысл хотя бы один попробовать это сделать самостоятельно прямо из консоли.
Поэтому по мотивам 📗 статьи я подготовил 📺 видео, где привожу пример компиляции исходников Java из консоли вручную.
👍10
Добавил на YouTube новое видео о том, как сохранять большие текстовые файлы на Java наиболее оптимальным образом. Текстовый вариант доступен на сайте.
Давайте сгенерируем строку из случайных символов на Java и затем сохраним её в текстовый файл. Строка должна быть очень большой (более 100 миллионов символов), чтобы мы могли легко заметить разницу во времени, которое требуется на сохранение файла.
Рассмотрим 3 варианта: обычный FileWriter, FileWriter с буферизацией и неблокирующее сохранение файла с помощью пакета java.nio. В конце подведём итоги.
Давайте сгенерируем строку из случайных символов на Java и затем сохраним её в текстовый файл. Строка должна быть очень большой (более 100 миллионов символов), чтобы мы могли легко заметить разницу во времени, которое требуется на сохранение файла.
Рассмотрим 3 варианта: обычный FileWriter, FileWriter с буферизацией и неблокирующее сохранение файла с помощью пакета java.nio. В конце подведём итоги.
👍4🔥1
Новое 📺 видео на YouTube канале!
Давайте научимся читать большой текстовый файл построчно. При этом каждую строку будем как-то обрабатывать. Например, будем искать наибольшую длину строки.
Поскольку размер файла больше 100 МБ, его чтение происходит с небольшой задержкой. Мы рассмотрим три варианта реализации такого чтения и выберем наиболее быстрый из них.
Также данный материал доступен в виде 📗 статьи.
Давайте научимся читать большой текстовый файл построчно. При этом каждую строку будем как-то обрабатывать. Например, будем искать наибольшую длину строки.
Поскольку размер файла больше 100 МБ, его чтение происходит с небольшой задержкой. Мы рассмотрим три варианта реализации такого чтения и выберем наиболее быстрый из них.
Также данный материал доступен в виде 📗 статьи.
👍4
Новое 📺 видео на YouTube-канале!
Во многих редакторах при работе с текстовым документом вы можете видеть, сколько всего строк содержится в этом файле. Строки между собой разделяются символом перевода строки, который в каждой операционной системе (Windows, Unix, Mac) свой.
Давайте разберёмся, как быстро подсчитать количество строк в текстовом файле независимо от той ОС, в котором выполняется наш код. Более того, текстовый файл может быть сколь угодно большим, поэтому мы будем использовать буферизацию потока, чтобы не израсходовать всю доступную оперативную память.
Во многих редакторах при работе с текстовым документом вы можете видеть, сколько всего строк содержится в этом файле. Строки между собой разделяются символом перевода строки, который в каждой операционной системе (Windows, Unix, Mac) свой.
Давайте разберёмся, как быстро подсчитать количество строк в текстовом файле независимо от той ОС, в котором выполняется наш код. Более того, текстовый файл может быть сколь угодно большим, поэтому мы будем использовать буферизацию потока, чтобы не израсходовать всю доступную оперативную память.
👍5
JetBrains анонсирует онлайн-конференцию IntelliJ IDEA Conf 2024, которая пройдёт в онлайн-формате 6 и 7 марта.
Вот некоторые темы, которые будут на ней обсуждаться:
🔹Улучшении производительности IntelliJ IDEA.
🔹Функции и классы стандартной библиотеки Kotlin.
🔹Основы безопасной разработки для защиты приложений.
🔹Изменения, грядущие в Java 22 и последующих версиях.
🔹Создание приложений с использованием ChatGPT API.
🔹Освоение Java-тестирования с использованием JUnit, Mockito и AssertJ в IntelliJ IDEA.
Участие бесплатное, требуется предварительная регистрация.
Вот некоторые темы, которые будут на ней обсуждаться:
🔹Улучшении производительности IntelliJ IDEA.
🔹Функции и классы стандартной библиотеки Kotlin.
🔹Основы безопасной разработки для защиты приложений.
🔹Изменения, грядущие в Java 22 и последующих версиях.
🔹Создание приложений с использованием ChatGPT API.
🔹Освоение Java-тестирования с использованием JUnit, Mockito и AssertJ в IntelliJ IDEA.
Участие бесплатное, требуется предварительная регистрация.
👍3
В продолжение предыдущей темы, канал YABED (мои хорошие знакомые) является информационным партнёром конференции и потому проводит розыгрыш лицензий JetBrains All Products Pack! Для участия в розыгрыше достаточно подписаться на их канал и нажать кнопку "Участвую".
👍3
Forwarded from YABED - Yet Another BackEnd Digest: Java/Kotlin
🚀 Всем привет! Как вы уже знаете, наш канал выступает информационным партнёром конференции IntelliJ IDEA Conf 2024. В программе много годноты – обязательно к просмотру. Регистрируйтесь по ссылке здесь.
🏆 А мы выполняем обещание и специально к конференции проводим розыгрыш ДВУХ кодов активации для полного набора инструментов для разработки JetBrains All Products Pack!
Что нужно сделать, чтобы принимать участие?
✅ быть подписанным на наш канал
✅ нажать кнопку "Участвую"
🎯 Итоги мы подведём 29 февраля с помощью рандомайзера. Всё честно и просто.
Вперёд, за призами и присоединяйтесь к IntelliJ IDEA Conf 2024! Удачи!
#IntelliJIDEAConf
🏆 А мы выполняем обещание и специально к конференции проводим розыгрыш ДВУХ кодов активации для полного набора инструментов для разработки JetBrains All Products Pack!
Что нужно сделать, чтобы принимать участие?
✅ быть подписанным на наш канал
✅ нажать кнопку "Участвую"
🎯 Итоги мы подведём 29 февраля с помощью рандомайзера. Всё честно и просто.
Вперёд, за призами и присоединяйтесь к IntelliJ IDEA Conf 2024! Удачи!
#IntelliJIDEAConf
👍3
На моём YouTube-канале в комментах под видео про итераторы пользователь karakurty попросил меня рассказать также про ConcurrentModificationException в контексте данной темы.
Поэтому в статью я добавил новый раздел о том, как менять ту же коллекцию, по которой производим перебор элементов.
P.S. Мне на самом деле очень приятно, когда аудитория моего канала предлагает различные улучшения и дополнения к тому материалу, который я публикую. В своё время так уже было с видео про поиск простых чисел, когда предложенный зрителем альтернативный алгоритм оказался гораздо более быстрым, чем рассмотренная мною реализация. И это в итоге привело даже к созданию отдельной статьи.
Поэтому в статью я добавил новый раздел о том, как менять ту же коллекцию, по которой производим перебор элементов.
P.S. Мне на самом деле очень приятно, когда аудитория моего канала предлагает различные улучшения и дополнения к тому материалу, который я публикую. В своё время так уже было с видео про поиск простых чисел, когда предложенный зрителем альтернативный алгоритм оказался гораздо более быстрым, чем рассмотренная мною реализация. И это в итоге привело даже к созданию отдельной статьи.
YouTube
Интерфейсы Iterator и Iterable в Java
#devmark #java #collections Интерфейсы Iterator и Iterable часто используются для работы с коллекциями в Java. Они позволяют эффективно и безопасно работать с коллекциями, обеспечивая контроль над процессом перебора элементов (итерации). Iterator представляет…
👍5
Хочу поделиться с вами небольшой статистикой. В прошедший уик-энд количество подписчиков в этой группе перевалило за 100!
Это не может не радовать, т.к. помимо основной аудитории на моём YouTube-канале, чуть меньшей аудитории на сайте, telegram - это третья площадка, которая медленно, но верно также развивается.
Спасибо вам за те комментарии, вопросы и предложения, которые вы пишете - это позволяет создавать более качественный контент!
Это не может не радовать, т.к. помимо основной аудитории на моём YouTube-канале, чуть меньшей аудитории на сайте, telegram - это третья площадка, которая медленно, но верно также развивается.
Спасибо вам за те комментарии, вопросы и предложения, которые вы пишете - это позволяет создавать более качественный контент!
👍11❤1🔥1👏1
Вчера, 19 марта 2024 года, состоялся релиз Java 22! Хоть это и не LTS-версия, но она содержит несколько интересных улучшений.
✅ Из статуса preview в статус постоянной языковой конструкции перешли неименованные переменные, которые обозначаются символом нижнего подчёркивания "_".
✅ Также появилась возможность запускать и компилировать на лету через команду
В статусе preview доступны следующие фичи:
➡️ Перед вызовом конструктора базового класса можно использовать инструкции, которые не ссылаются на конструируемый объект.
➡️ Упрощённая сигнатура метода main() без необходимости создания класса.
➡️ В Stream API добавлен новый интерфейс Gatherer, позволяющий создавать собственные промежуточные (отложенные) операции.
➡️ Строковые шаблоны аналогично Java 21.
Помимо изменений в самом языке и стандартной библиотеке, было произведено несколько улучшений в механизме многопоточности, сборки мусора и управления памятью.
✅ Из статуса preview в статус постоянной языковой конструкции перешли неименованные переменные, которые обозначаются символом нижнего подчёркивания "_".
✅ Также появилась возможность запускать и компилировать на лету через команду
java имя_класса.java не только 1 указанный файл, но и все связанные между собой файлы исходников.В статусе preview доступны следующие фичи:
➡️ Перед вызовом конструктора базового класса можно использовать инструкции, которые не ссылаются на конструируемый объект.
➡️ Упрощённая сигнатура метода main() без необходимости создания класса.
➡️ В Stream API добавлен новый интерфейс Gatherer, позволяющий создавать собственные промежуточные (отложенные) операции.
➡️ Строковые шаблоны аналогично Java 21.
Помимо изменений в самом языке и стандартной библиотеке, было произведено несколько улучшений в механизме многопоточности, сборки мусора и управления памятью.
👍3🔥2
Доработал статью про алгоритм вычисления чисел Фибоначчи в части реализации рекурсивного алгоритма.
Может показаться не очевидным, но вычисление каждого следующего элемента последовательности в рекурсивном варианте занимает в 2 раза больше времени, чем предыдущего. Хотя сам алгоритм основан на сложении двух целых чисел, уже где-то в районе 45-го элемента последовательности возникает заметная задержка в вычислении.
Это связано с тем, что на каждом уровне рекурсии мы заново вычисляем все предыдущие числа. Чтобы этого избежать, можно кешировать уже вычисленные значения, о чём я добавил соответствующий раздел.
P.S. Спасибо Диме Вдовину, который является автором канала @yabed_news, за коммент о вычислительной сложности рекурсивного алгоритма.
Может показаться не очевидным, но вычисление каждого следующего элемента последовательности в рекурсивном варианте занимает в 2 раза больше времени, чем предыдущего. Хотя сам алгоритм основан на сложении двух целых чисел, уже где-то в районе 45-го элемента последовательности возникает заметная задержка в вычислении.
Это связано с тем, что на каждом уровне рекурсии мы заново вычисляем все предыдущие числа. Чтобы этого избежать, можно кешировать уже вычисленные значения, о чём я добавил соответствующий раздел.
P.S. Спасибо Диме Вдовину, который является автором канала @yabed_news, за коммент о вычислительной сложности рекурсивного алгоритма.
👍3
Клиент-серверное взаимодействие через GraphQL довольно удобно, т.к. во-первых предоставляет единую точку входа, а во-вторых, позволяет грузить с сервера только те данные, которые реально нужны на клиенте.
Однако стандартный набор типов данных в GraphQL крайне мал: Int, Float, String, Boolean и ID. Но что делать, если мы хотим использовать такие типы как BigDecimal или LocalDate? В этом нам поможет библиотека graphql-java-extended-scalars.
Более подробно читайте в статье GraphQL в Spring Boot, которую я немного доработал и добавил в неё новый раздел про кастомные типы данных.
Также вы можете посмотреть пример проекта на github.
Однако стандартный набор типов данных в GraphQL крайне мал: Int, Float, String, Boolean и ID. Но что делать, если мы хотим использовать такие типы как BigDecimal или LocalDate? В этом нам поможет библиотека graphql-java-extended-scalars.
Более подробно читайте в статье GraphQL в Spring Boot, которую я немного доработал и добавил в неё новый раздел про кастомные типы данных.
Также вы можете посмотреть пример проекта на github.
👍4
Если вы только начинаете разрабатывать под Linux или MacOS, вам может пригодиться следующая шпаргалка по консольным командам:
Ещё больше команд вы сможете найти на моём сайте. А если чего-то не нашли - пишите в комментах.
pwd полный путь до текущей директории
ls список файлов в текущей директории
ls -la список скрытых файлов
cd или cd ~ перейти в домашний каталог
cd путь перейти в указанный каталог
history история выполненных команд
clear очистить консоль
exit закрыть консоль
Ещё больше команд вы сможете найти на моём сайте. А если чего-то не нашли - пишите в комментах.
👍6
Давайте сегодня поговорим о мутациях. Не волнуйтесь, мой канал не сменил тематику. Пусть картинка не вводит вас в заблуждение 😁
Мутациями в GraphQL называется изменение данных в противовес чтению данных, про которое я уже писал на прошлой неделе. Мутации - это всего лишь удобная graphql-обёртка над привычными нам методами для изменения данных.
Все методы мутаций должны быть определены в graphql-схеме в типе Mutation, а все входные параметры мутаций снабжаются ключевым словом input.
Мутациями в GraphQL называется изменение данных в противовес чтению данных, про которое я уже писал на прошлой неделе. Мутации - это всего лишь удобная graphql-обёртка над привычными нам методами для изменения данных.
Все методы мутаций должны быть определены в graphql-схеме в типе Mutation, а все входные параметры мутаций снабжаются ключевым словом input.
👍5
Почти через месяц, 17 мая, состоится МТС True Tech. Это IT-конференция, в которой примут участие 50 спикеров в 5 треках. Доклады будут идти весь день и закончатся вечеринкой!
Тематика докладов:
- разработка
- ИИ и машинное обучение
- облачные технологии
- наука
Возможно как онлайн-участие, так и оффлайн в Москве: МТС Live Холл (ш. Энтузиастов д. 5, стр. 2).
Регистрация на конференцию бесплатная!
Также можно принять участие в хакатоне. До 25 апреля нужно собрать команду, 26 апреля стартует хакатон. А финальный питчинг и награждение состоится на самой конференции.
Тематика докладов:
- разработка
- ИИ и машинное обучение
- облачные технологии
- наука
Возможно как онлайн-участие, так и оффлайн в Москве: МТС Live Холл (ш. Энтузиастов д. 5, стр. 2).
Регистрация на конференцию бесплатная!
Также можно принять участие в хакатоне. До 25 апреля нужно собрать команду, 26 апреля стартует хакатон. А финальный питчинг и награждение состоится на самой конференции.
👍3👎1
Сегодня, 17 апреля в 15:00 стартует онлайн-часть конференции для Java-разработчиков JPoint 2024! Также 24 и 25 апреля будет проходить офлайн-часть в Москве (Конгресс-центр «ЦМТ», Краснопресненская наб. 12). Доклады будут идти параллельно в 3 трека.
А если вы не успели купить билет, то сегодня онлайн-часть конфы можно посмотреть совершенно бесплатно в рамках Community Day.
А если вы не успели купить билет, то сегодня онлайн-часть конфы можно посмотреть совершенно бесплатно в рамках Community Day.
👍2