Работа с единицами системы СИ на Java
Библиотека по работе с единица системы СИ KotUniL, разработанная изначально на Kotlin, недавно сделана мультиплатформенной. В частности, она доступна теперь и на Java и JavaScript.
Читать: https://habr.com/ru/articles/748248/?utm_campaign=748248
Библиотека по работе с единица системы СИ KotUniL, разработанная изначально на Kotlin, недавно сделана мультиплатформенной. В частности, она доступна теперь и на Java и JavaScript.
Читать: https://habr.com/ru/articles/748248/?utm_campaign=748248
❤1
Docker больше не нужен
В этой статье мы не будем подробно разбирать базовые функции Podman и отличия этого проекта от Docker.
Такой информации хватает в интернете.
Вместо этого, мы на конкретном примере (простое Java приложение) разберем как можно заменить Docker на Podman в конвейере CI/CD,
и какие это может принести дивиденды.
Читать: https://habr.com/ru/articles/748328/?utm_campaign=748328
В этой статье мы не будем подробно разбирать базовые функции Podman и отличия этого проекта от Docker.
Такой информации хватает в интернете.
Вместо этого, мы на конкретном примере (простое Java приложение) разберем как можно заменить Docker на Podman в конвейере CI/CD,
и какие это может принести дивиденды.
Читать: https://habr.com/ru/articles/748328/?utm_campaign=748328
❤1
Строим свой SSO. Часть 3: Redis, Swagger, Vue.js
Всем привет, мы продолжаем строить собственный SSO Server. Сегодня мы разберем подключение Redis и Swagger к нашему проекту. А также построим собственную, красивую форму аутнетификации, используя VueJS.
Читать: https://habr.com/ru/articles/748584/?utm_campaign=748584
Всем привет, мы продолжаем строить собственный SSO Server. Сегодня мы разберем подключение Redis и Swagger к нашему проекту. А также построим собственную, красивую форму аутнетификации, используя VueJS.
Читать: https://habr.com/ru/articles/748584/?utm_campaign=748584
SpringBoot и вебсокеты: едем в кластер
Всем привет! В этой статье я бы хотел затронуть тему горизонтального масштабирования SpringBoot-приложений, использующих вебсокеты. Основная особенность таких приложений - наличие состояния (state). Вебсокеты для работы используют постоянное TCP-соединение, собственно оно и является этим состоянием. А наличие состояния обычно вызывает проблемы при масштабировании.
Stateless-сервисам все равно на какой из множества инстансов попал очередной запрос, или кто именно вычитал сообщение из очереди. Но когда на серверной стороне возникает понятие клиентской сессии, все запросы, связанные с этим клиентом, должен обрабатывать один и тот же инстанс. Либо должна быть возможность передать эту сессию на другой инстанс. Сложность реализации этого требования варьируется от "добавить одну строчку в конфиг балансировщика" до "написать подсистему мониторинга топологии сервиса и роутинга запросов, сложность которой может превышать сложность основного приложения". К счастью, для решения стандартных задач, как правило, существуют стандартные инструменты. Давайте посмотрим, что за инструменты используются при масштабировании вебсокетных приложений, написанных на SpringBoot.
Читать: https://habr.com/ru/articles/743252/?utm_campaign=743252
Всем привет! В этой статье я бы хотел затронуть тему горизонтального масштабирования SpringBoot-приложений, использующих вебсокеты. Основная особенность таких приложений - наличие состояния (state). Вебсокеты для работы используют постоянное TCP-соединение, собственно оно и является этим состоянием. А наличие состояния обычно вызывает проблемы при масштабировании.
Stateless-сервисам все равно на какой из множества инстансов попал очередной запрос, или кто именно вычитал сообщение из очереди. Но когда на серверной стороне возникает понятие клиентской сессии, все запросы, связанные с этим клиентом, должен обрабатывать один и тот же инстанс. Либо должна быть возможность передать эту сессию на другой инстанс. Сложность реализации этого требования варьируется от "добавить одну строчку в конфиг балансировщика" до "написать подсистему мониторинга топологии сервиса и роутинга запросов, сложность которой может превышать сложность основного приложения". К счастью, для решения стандартных задач, как правило, существуют стандартные инструменты. Давайте посмотрим, что за инструменты используются при масштабировании вебсокетных приложений, написанных на SpringBoot.
Читать: https://habr.com/ru/articles/743252/?utm_campaign=743252
Как на самом деле работает Java ClassLoader system? (с картинками) — Часть 1/3, Загрузка
Так ли на самом деле работает процесс загрузки классов, как его описывает Wikipedia и Baeldung? ClassNotFoundException — это откуда и чье? Какие виды загрузчиков классов актуальны в Java 20?
Объясняем подпроцесс загрузки, из системы Java ClassLoader, на приятных Excalidraw диаграммах, со ссылками на оригинальные источники.
Читать: https://habr.com/ru/articles/748758/?utm_campaign=748758
Так ли на самом деле работает процесс загрузки классов, как его описывает Wikipedia и Baeldung? ClassNotFoundException — это откуда и чье? Какие виды загрузчиков классов актуальны в Java 20?
Объясняем подпроцесс загрузки, из системы Java ClassLoader, на приятных Excalidraw диаграммах, со ссылками на оригинальные источники.
Читать: https://habr.com/ru/articles/748758/?utm_campaign=748758
Работа с асинхронными операциями с помощью Kotlin Coroutines
Всем привет! Меня зовут Сергей, я Android-разработчик Студии Олега Чулакова на проектах Сбера. Недавно я написал статью Многопоточность в мобильной разработке. В ней был затронут один из наиболее популярных инструментов для работы с асинхронными операциями — Kotlin Coroutines.
Сегодня я хочу углубиться в Kotlin Coroutines и разобрать их основные компоненты. Мы рассмотрим Kotlin Coroutines, предполагая, что у вас уже есть базовое понимание языка Kotlin и некоторый опыт разработки Android-приложений. Мы изучим основные концепции Kotlin Coroutines, способы работы с асинхронными операциями, управление потоком выполнения, обработку ошибок и исключений, а также многое другое.
Моя цель — помочь вам овладеть Kotlin Coroutines и научиться использовать их для упрощения и оптимизации вашего кода, обеспечения более гладкого пользовательского опыта и более эффективного управления асинхронными операциями. Приятного прочтения, мы начинаем!
Читать: https://habr.com/ru/articles/747858/?utm_campaign=747858
Всем привет! Меня зовут Сергей, я Android-разработчик Студии Олега Чулакова на проектах Сбера. Недавно я написал статью Многопоточность в мобильной разработке. В ней был затронут один из наиболее популярных инструментов для работы с асинхронными операциями — Kotlin Coroutines.
Сегодня я хочу углубиться в Kotlin Coroutines и разобрать их основные компоненты. Мы рассмотрим Kotlin Coroutines, предполагая, что у вас уже есть базовое понимание языка Kotlin и некоторый опыт разработки Android-приложений. Мы изучим основные концепции Kotlin Coroutines, способы работы с асинхронными операциями, управление потоком выполнения, обработку ошибок и исключений, а также многое другое.
Моя цель — помочь вам овладеть Kotlin Coroutines и научиться использовать их для упрощения и оптимизации вашего кода, обеспечения более гладкого пользовательского опыта и более эффективного управления асинхронными операциями. Приятного прочтения, мы начинаем!
Читать: https://habr.com/ru/articles/747858/?utm_campaign=747858
Добавляем поддержку пользовательского языка в IntelliJ с помощью ANTLR
В этой статье я не буду описывать как создать плагин для IntelliJ с поддержкой %lang_name% с нуля. Кроме официальной документации и туториала от JetBrains в сети есть множество статей и примеров. На Хабре тоже есть пара весьма подробных статей от @pyltsinm. Фокус будет на разработке плагина с использованием ANTLR и моём опыте в этом нелёгком деле.
Примером в этой статье будет WebCalm - плагин для IntelliJ с поддержкой JavaScript и CSS, который я сделал с помощью ANTLR.
Читать: https://habr.com/ru/articles/748622/?utm_campaign=748622
В этой статье я не буду описывать как создать плагин для IntelliJ с поддержкой %lang_name% с нуля. Кроме официальной документации и туториала от JetBrains в сети есть множество статей и примеров. На Хабре тоже есть пара весьма подробных статей от @pyltsinm. Фокус будет на разработке плагина с использованием ANTLR и моём опыте в этом нелёгком деле.
Примером в этой статье будет WebCalm - плагин для IntelliJ с поддержкой JavaScript и CSS, который я сделал с помощью ANTLR.
Читать: https://habr.com/ru/articles/748622/?utm_campaign=748622
Особенности разработки автотестов различными инструментами, а также статистика по использованию
Попробуем разобраться в автоматизации тестирования ПО, сделаем обзор сервисов для автоматического тестирования, выясним, какой язык программирования лучше подходит для QA Automation. Вся информация основана в том числе на реальных событиях и моём реальном опыте.
Читать: https://habr.com/ru/articles/749322/?utm_campaign=749322
Попробуем разобраться в автоматизации тестирования ПО, сделаем обзор сервисов для автоматического тестирования, выясним, какой язык программирования лучше подходит для QA Automation. Вся информация основана в том числе на реальных событиях и моём реальном опыте.
Читать: https://habr.com/ru/articles/749322/?utm_campaign=749322
Эффективное и комплексное устранение утечек памяти в Android
Цель этой статьи — изучить эффективные и комплексные решения по нахождению и устранению утечек памяти в контексте Android-разработки. Стоит понимать, что утечка памяти чаще всего возникает из-за незнания технологии или собственного кода на подкапотном уровне, поэтому основной целью является научиться правильно писать код, учитывая специфику работы Java Memory Model, Garbage Collector и File descriptor.
Читать дальше
Читать: https://habr.com/ru/articles/749568/?utm_campaign=749568
Цель этой статьи — изучить эффективные и комплексные решения по нахождению и устранению утечек памяти в контексте Android-разработки. Стоит понимать, что утечка памяти чаще всего возникает из-за незнания технологии или собственного кода на подкапотном уровне, поэтому основной целью является научиться правильно писать код, учитывая специфику работы Java Memory Model, Garbage Collector и File descriptor.
Читать дальше
Читать: https://habr.com/ru/articles/749568/?utm_campaign=749568
Изучаю мок-сервера и пишу свой
Однажды передо мной возник некий «чёрный ящик» — Шина, которая отвечает за преобразование данных из внешнего формата во внутренний. Какие внутри происходят преобразования, какие процессы, как идут запросы, потому что они очень большие, — непонятно. Логи есть, но они ограничены, к тому же часто запросы не логируются, потому что некоторые данные пользователей нельзя показывать. В попытках решить проблему и возник мок-сервер, как решение задачи понять, как работает «ящик», на каких принципах, и понять, правильно ли он работает.
План статьи:
— Проблематика черного ящика и почему его вообще нужно вскрывать.
— Варианты решения проблемы.
— Подробно про мок-сервер, как один из вариантов решения проблемы: зачем нужен, в чём польза и как выбрать между готовыми и самописными решениям.
— Как написать свой мок-сервер.
— Посмотрим как он работает на реальной задаче.
— Закрепляем материал в блоке «Польза мок-сервера».
Читать: https://habr.com/ru/companies/alfa/articles/749890/?utm_campaign=749890
Однажды передо мной возник некий «чёрный ящик» — Шина, которая отвечает за преобразование данных из внешнего формата во внутренний. Какие внутри происходят преобразования, какие процессы, как идут запросы, потому что они очень большие, — непонятно. Логи есть, но они ограничены, к тому же часто запросы не логируются, потому что некоторые данные пользователей нельзя показывать. В попытках решить проблему и возник мок-сервер, как решение задачи понять, как работает «ящик», на каких принципах, и понять, правильно ли он работает.
План статьи:
— Проблематика черного ящика и почему его вообще нужно вскрывать.
— Варианты решения проблемы.
— Подробно про мок-сервер, как один из вариантов решения проблемы: зачем нужен, в чём польза и как выбрать между готовыми и самописными решениям.
— Как написать свой мок-сервер.
— Посмотрим как он работает на реальной задаче.
— Закрепляем материал в блоке «Польза мок-сервера».
Читать: https://habr.com/ru/companies/alfa/articles/749890/?utm_campaign=749890
Инструментация байт-кода Java
В рамках текущей статьи будет рассказано о способах инструментации байт-кода java или другим языком, внесения изменений в компилированный файлы java .class. Здесь будут приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.
Читать: https://habr.com/ru/articles/750028/?utm_campaign=750028
В рамках текущей статьи будет рассказано о способах инструментации байт-кода java или другим языком, внесения изменений в компилированный файлы java .class. Здесь будут приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.
Читать: https://habr.com/ru/articles/750028/?utm_campaign=750028
Интеграция Jmix с bpmn-js для эффективного моделирования бизнес-процессов при разработке приложений
Jmix — это платформа с открытым исходным кодом для повышения эффективности разработки корпоративного ПО. Java-разработчики со всего мира используют ее для создания приложений, ориентированных на работу с данными, корпоративным контентом и бизнес-процессами. Jmix особенно эффективен, если у проекта есть строгие ограничения по бюджету и срокам. По сути, Jmix позволяет Java-разработчику стать fullstack-программистом и в результате своей работы получить полноценное веб-приложение на основе Spring Boot. Платформа привлекает тем, что не требует затрат на лицензирование конечных пользователей, а для разработки и backend, и frontend используются один язык: Java или Kotlin. В основе платформы лежат широко распространенные технологии и IDE, дружественная разработчику. В этой статье расскажем, с чего начиналась поддержка моделирования бизнес-процессов в Jmix, как мы встроили в платформу фреймворк bpmn-js, и какие плюсы от этого получили пользователи.
Первые шаги в направлении BPMN
В случае приложений для управления транзакциями, документами или другими корпоративным данными часто требуется отделить бизнес-логику от кода. Это можно сделать с помощью визуального конструктора, в котором аналитики и разработчики моделируют бизнес-процессы в соответствии с нотацией BPMN. К этой идее мы пришли в 2017 году, после большого количества запросов со стороны сообщества разработчиков Jmix. Поначалу для создания бизнес-процессов мы использовали собственный инструмент на основе движка Activiti. Он был частью CUBA Platform, прошлого поколения платформы Jmix.
Читать: https://habr.com/ru/companies/haulmont/articles/749558/?utm_campaign=749558
Jmix — это платформа с открытым исходным кодом для повышения эффективности разработки корпоративного ПО. Java-разработчики со всего мира используют ее для создания приложений, ориентированных на работу с данными, корпоративным контентом и бизнес-процессами. Jmix особенно эффективен, если у проекта есть строгие ограничения по бюджету и срокам. По сути, Jmix позволяет Java-разработчику стать fullstack-программистом и в результате своей работы получить полноценное веб-приложение на основе Spring Boot. Платформа привлекает тем, что не требует затрат на лицензирование конечных пользователей, а для разработки и backend, и frontend используются один язык: Java или Kotlin. В основе платформы лежат широко распространенные технологии и IDE, дружественная разработчику. В этой статье расскажем, с чего начиналась поддержка моделирования бизнес-процессов в Jmix, как мы встроили в платформу фреймворк bpmn-js, и какие плюсы от этого получили пользователи.
Первые шаги в направлении BPMN
В случае приложений для управления транзакциями, документами или другими корпоративным данными часто требуется отделить бизнес-логику от кода. Это можно сделать с помощью визуального конструктора, в котором аналитики и разработчики моделируют бизнес-процессы в соответствии с нотацией BPMN. К этой идее мы пришли в 2017 году, после большого количества запросов со стороны сообщества разработчиков Jmix. Поначалу для создания бизнес-процессов мы использовали собственный инструмент на основе движка Activiti. Он был частью CUBA Platform, прошлого поколения платформы Jmix.
Читать: https://habr.com/ru/companies/haulmont/articles/749558/?utm_campaign=749558
Авторизация в Spring Boot приложении с Spring Security 3.1.0 и PostgreSQL
Эта статья является первой, написанной мной. Буду очень рад, если она все же будет опубликована. На данный момент являюсь Junior Java разработчиком, поэтому в этой статье не будет сложной аналитики и глубокого погружения в тему, но я свой опыт изучения и реализации приложений с использованием Spring Security, возможно, кому-то это поможет справиться с теми трудностями, с которыми встретился я.
Недавно мне пришлось подключать и настраивать авторизацию через Spring Security версии 3.1.0. В процессе разработки и решения сложностей, которых было не мало, я заметил, что информации по версии 3.1.0 довольно мало, если не считать документацию.
Читать: https://habr.com/ru/articles/754916/?utm_campaign=754916
Эта статья является первой, написанной мной. Буду очень рад, если она все же будет опубликована. На данный момент являюсь Junior Java разработчиком, поэтому в этой статье не будет сложной аналитики и глубокого погружения в тему, но я свой опыт изучения и реализации приложений с использованием Spring Security, возможно, кому-то это поможет справиться с теми трудностями, с которыми встретился я.
Недавно мне пришлось подключать и настраивать авторизацию через Spring Security версии 3.1.0. В процессе разработки и решения сложностей, которых было не мало, я заметил, что информации по версии 3.1.0 довольно мало, если не считать документацию.
Читать: https://habr.com/ru/articles/754916/?utm_campaign=754916
Как задеплоить монолитный pet проект на Java с 0 и не сойти с ума… Часть 1
Перерыв в работе заставил меня задуматься над смыслом выражения "Сапожник без сапог". Будучи Java Backend Developer с 3-ех летним стажем я не имею на руках ни одного pet проекта. Конечно, на GitHub у меня есть какие-то мелкие проектики, но они не доведены до конца и кроме того как просто висеть на доске "почета" они больше ничего и не могут. С этой мыслёй я пошел в интернет гуглить "как мне задеплоить свое приложение?".
Скажу сразу, это статья содержит шаги по развертыванию Java приложения с помощью GitHub Actions на серверах AWS EC2 и это моя интрерпретация тех инструкций, которые я находил в интернете. Собственно это статья содержит для новичков, кто просто не делал никогда деплой своего приложения, но очень хочет в сжатые сроки похвастаться своим результатом.
Читать: https://habr.com/ru/articles/755110/?utm_campaign=755110
Перерыв в работе заставил меня задуматься над смыслом выражения "Сапожник без сапог". Будучи Java Backend Developer с 3-ех летним стажем я не имею на руках ни одного pet проекта. Конечно, на GitHub у меня есть какие-то мелкие проектики, но они не доведены до конца и кроме того как просто висеть на доске "почета" они больше ничего и не могут. С этой мыслёй я пошел в интернет гуглить "как мне задеплоить свое приложение?".
Скажу сразу, это статья содержит шаги по развертыванию Java приложения с помощью GitHub Actions на серверах AWS EC2 и это моя интрерпретация тех инструкций, которые я находил в интернете. Собственно это статья содержит для новичков, кто просто не делал никогда деплой своего приложения, но очень хочет в сжатые сроки похвастаться своим результатом.
Читать: https://habr.com/ru/articles/755110/?utm_campaign=755110
Синхронизация в Java, часть 1: состояния гонки, блокировки и условия
Представляем вашему вниманию первую статью из серии о синхронизации потоков в Java, в которой мы рассмотрим основы: состояния гонки, объекты блокировки, объекты условий, а также методы await, signal и signalAll.
Читать: https://habr.com/ru/companies/otus/articles/755316/?utm_campaign=755316
Представляем вашему вниманию первую статью из серии о синхронизации потоков в Java, в которой мы рассмотрим основы: состояния гонки, объекты блокировки, объекты условий, а также методы await, signal и signalAll.
Читать: https://habr.com/ru/companies/otus/articles/755316/?utm_campaign=755316
Как скомпилировать Spring Boot приложение в native image с помощью GraalVm и развернуть его с помощью Docker
До недавнего времени мой опыт работы с бекенд-приложениями ограничивался созданием приложения на базе Spring Boot различных версий с использованием реляционных баз данных, ликвибейза, брокеров сообщений и т.д. Приложения в большинстве своем были легковесными, быстро запускались и не требовали большого количества ресурсов. Пока на работе мы с командой не столкнулись с проектом, который мало того, что запускался мучительно долго, так ещё и работал с большим количеством сервисов, постоянно то отдавая, то обрабатывая различные данные. Всё это, конечно же, приводило к медленной работе в продакшене, частым зависанием или вообще поломкой сервиса.
Это стало одной из причин интереса к GraalVm - виртуальной машине, написанной на Java, помогающая делать программы быстрее с помощью JIT компилятора. GraalVm помогает скомпилировать java код в так называемый native image. Это исполняемый файл приложения, который мгновенно запускается без старта JVM.
Эта статья - туториал, как подружить между собой Spring Boot, GraalVm, Liquibase и Docker, какие могут возникнуть подводные камни и как их можно обойти.
Читать: https://habr.com/ru/articles/755550/?utm_campaign=755550
До недавнего времени мой опыт работы с бекенд-приложениями ограничивался созданием приложения на базе Spring Boot различных версий с использованием реляционных баз данных, ликвибейза, брокеров сообщений и т.д. Приложения в большинстве своем были легковесными, быстро запускались и не требовали большого количества ресурсов. Пока на работе мы с командой не столкнулись с проектом, который мало того, что запускался мучительно долго, так ещё и работал с большим количеством сервисов, постоянно то отдавая, то обрабатывая различные данные. Всё это, конечно же, приводило к медленной работе в продакшене, частым зависанием или вообще поломкой сервиса.
Это стало одной из причин интереса к GraalVm - виртуальной машине, написанной на Java, помогающая делать программы быстрее с помощью JIT компилятора. GraalVm помогает скомпилировать java код в так называемый native image. Это исполняемый файл приложения, который мгновенно запускается без старта JVM.
Эта статья - туториал, как подружить между собой Spring Boot, GraalVm, Liquibase и Docker, какие могут возникнуть подводные камни и как их можно обойти.
Читать: https://habr.com/ru/articles/755550/?utm_campaign=755550
👍2
Чашечка Java
character-encodings-byte-array-to-string-java.gif
Как преобразовать байтовый массив в строку в Java с примером
Существует несколько способов преобразования байтового массива в String на языке Javabut, нонаиболее простым является использование конструктора String, который принимает байтовый массив, т.е. new String(byte []), но главное, что необходимо помнить, - это кодировка символов. Поскольку байты - это двоичные данные, а String - символьные, очень важно знать исходную кодировку текста, из которого создан массив байтов. Если вы используете другую кодировку, то не сможете вернуть исходный String. Например, если вы считали массив байтов из файла, который был закодирован в "ISO-8859-1", и не указали кодировку при преобразовании массива байтов в String с помощью конструктора new String(), то нет гарантии, что вы получите обратно тот же самый текст? Почему? Потому что new String() по умолчанию использует кодировку по умолчанию платформы (например, Linux-машины, на которой запущена ваша JVM), которая может отличаться от "ISO-8859-1".
Вопросы и задания для собеседования по Java
Read: http://www.java67.com/2015/05/how-to-convert-byte-array-to-string-in-java-example.html
Существует несколько способов преобразования байтового массива в String на языке Javabut, нонаиболее простым является использование конструктора String, который принимает байтовый массив, т.е. new String(byte []), но главное, что необходимо помнить, - это кодировка символов. Поскольку байты - это двоичные данные, а String - символьные, очень важно знать исходную кодировку текста, из которого создан массив байтов. Если вы используете другую кодировку, то не сможете вернуть исходный String. Например, если вы считали массив байтов из файла, который был закодирован в "ISO-8859-1", и не указали кодировку при преобразовании массива байтов в String с помощью конструктора new String(), то нет гарантии, что вы получите обратно тот же самый текст? Почему? Потому что new String() по умолчанию использует кодировку по умолчанию платформы (например, Linux-машины, на которой запущена ваша JVM), которая может отличаться от "ISO-8859-1".
Вопросы и задания для собеседования по Java
Read: http://www.java67.com/2015/05/how-to-convert-byte-array-to-string-in-java-example.html
👍1
Как преобразовать байт-буфер в строку в Java [Пример]
Вы можете легко преобразовать ByteBuffer в String в Java, если знаете, как преобразовать байтовый массив в String. Почему? Потому что очень просто преобразовать байт-буфер в байтовый массив и наоборот. Достаточно вызвать метод ByteBuffer.array(), который вернет вам байтовый массив, используемый классом java.nio.ByteBuffer, и в дальнейшем вы сможете легко создать String из этого байтового массива. Правда, не забудьте указать правильную кодировку символов при преобразовании байтового массива в строку.
Вопросы и задания для собеседования по Java
Read: http://www.java67.com/2015/06/how-to-convert-bytebuffer-to-string-in-java-example.html
Вы можете легко преобразовать ByteBuffer в String в Java, если знаете, как преобразовать байтовый массив в String. Почему? Потому что очень просто преобразовать байт-буфер в байтовый массив и наоборот. Достаточно вызвать метод ByteBuffer.array(), который вернет вам байтовый массив, используемый классом java.nio.ByteBuffer, и в дальнейшем вы сможете легко создать String из этого байтового массива. Правда, не забудьте указать правильную кодировку символов при преобразовании байтового массива в строку.
Вопросы и задания для собеседования по Java
Read: http://www.java67.com/2015/06/how-to-convert-bytebuffer-to-string-in-java-example.html
Разница между @Controller и @RestController в Spring Framework
Здравствуйте и добро пожаловать в этот блог. Если вы готовитесь к собеседованию по Java или Spring Boot
то, возможно, сталкивались с этой темой. В этой статье мы собираемся
рассмотрим разницу между аннотациями @Controller и @RestController
аннотацией. Давайте разберемся в этом на примере.
Spring Framework
это популярный фреймворк приложений с открытым исходным кодом, обеспечивающий инфраструктурную поддержку
поддержки разработки Java-приложений. Одним из важнейших компонентов
Spring Framework является контроллер, который используется для обработки HTTP-запросов и
предоставления ответов клиентам. В Spring существует два типа контроллеров:
@Controller и @RestController.
Вопросы и учебные пособия для собеседования по Java
Read: http://www.java67.com/2023/08/spring-controller-vs-restcontroller.html
Здравствуйте и добро пожаловать в этот блог. Если вы готовитесь к собеседованию по Java или Spring Boot
то, возможно, сталкивались с этой темой. В этой статье мы собираемся
рассмотрим разницу между аннотациями @Controller и @RestController
аннотацией. Давайте разберемся в этом на примере.
Spring Framework
это популярный фреймворк приложений с открытым исходным кодом, обеспечивающий инфраструктурную поддержку
поддержки разработки Java-приложений. Одним из важнейших компонентов
Spring Framework является контроллер, который используется для обработки HTTP-запросов и
предоставления ответов клиентам. В Spring существует два типа контроллеров:
@Controller и @RestController.
Вопросы и учебные пособия для собеседования по Java
Read: http://www.java67.com/2023/08/spring-controller-vs-restcontroller.html
❤5👍1