Конвертируем массив в список
Arrays.asList() — это статический метод класса Arrays, который позволяет конвертировать обычный массив в список List.
— Принимает массив в качестве аргумента и возвращает объект типа List с элементами этого массива.
— Возвращаемый список имеет фиксированный размер, равный длине исходного массива. Добавлять/удалять элементы в него нельзя.
— Изменения в возвращаемом списке будут вноситься в исходный массив, т. к. список работает как «представление» массива. Метод работает для массивов примитивных и ссылочных типов.
Arrays.asList хорош для чтения элементов массива, но не для записи из-за неизменяемого размера.
@javalib #java
Arrays.asList() — это статический метод класса Arrays, который позволяет конвертировать обычный массив в список List.
— Принимает массив в качестве аргумента и возвращает объект типа List с элементами этого массива.
— Возвращаемый список имеет фиксированный размер, равный длине исходного массива. Добавлять/удалять элементы в него нельзя.
— Изменения в возвращаемом списке будут вноситься в исходный массив, т. к. список работает как «представление» массива. Метод работает для массивов примитивных и ссылочных типов.
Arrays.asList хорош для чтения элементов массива, но не для записи из-за неизменяемого размера.
@javalib #java
👍13🔥4❤3
Пройди тест по Java и проверь свои знания, готов ли ты к обучению на курсе.
Ответишь — пройдешь на продвинутый курс "Java Developer. Advanced" от OTUS по специальной цене.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥2
В Java 8 появился новый способ улучшить читаемость кода — ссылки на методы. Это позволяет ссылаться на существующие методы без их вызова, делая код более кратким и понятным.
🔍 Типы метод-референсов:
Пример: Integer::parseInt
Пример: myObject::toString
Пример: String::toUpperCase
Пример: ArrayList::new
⚡️ Пример использования:
Вместо стандартной лямбды:
list.forEach(item -> System.out.println(item));
Можно использовать ссылку на метод:
list.forEach(System.out::println);
А Вы используете ссылки на методы в своих проектах?
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17👍9🔥4
Готовитесь к поступлению в универ? Олимпиады помогут попасть в вуз мечты!
Чтобы оказаться в топовом универе и учиться на интересной программе, надо заранее подготовиться к поступлению. Например, посмотреть, в каких олимпиадах можно принять участие.
Многие ведущие вузы проводят свои олимпиады. Если вы хотите учиться на IT-специальности, можно обратить внимание на профиль «Промышленное программирование» в «Высшей пробе». Задания составляла команда Яндекса, а потому они максимально приближены к тому, что делают реальные программисты. Чем поможет эта олимпиада? Если вы станете призёром или победителем, то получите преимущество при поступлении в лучшие университеты страны! 🎓🚀
Принять участие может любой учащийся 9–11-х классов! Базовых знаний информатики будет достаточно. Отборочный этап пройдёт онлайн, а тех, кто успешно справится с первой частью, пригласят на очный заключительный этап.
Регистрируйтесь на «Высшую пробу» до 14:00 мск 5 ноября — повысьте свои шансы на поступление в вуз мечты!
Чтобы оказаться в топовом универе и учиться на интересной программе, надо заранее подготовиться к поступлению. Например, посмотреть, в каких олимпиадах можно принять участие.
Многие ведущие вузы проводят свои олимпиады. Если вы хотите учиться на IT-специальности, можно обратить внимание на профиль «Промышленное программирование» в «Высшей пробе». Задания составляла команда Яндекса, а потому они максимально приближены к тому, что делают реальные программисты. Чем поможет эта олимпиада? Если вы станете призёром или победителем, то получите преимущество при поступлении в лучшие университеты страны! 🎓🚀
Принять участие может любой учащийся 9–11-х классов! Базовых знаний информатики будет достаточно. Отборочный этап пройдёт онлайн, а тех, кто успешно справится с первой частью, пригласят на очный заключительный этап.
Регистрируйтесь на «Высшую пробу» до 14:00 мск 5 ноября — повысьте свои шансы на поступление в вуз мечты!
❤4👍2🔥2
VK Видео
Java. Рекурсия и цикл.
В видео рассматривается рекурсия как аналог цикла. Показано, как можно использовать хвостовую рекурсию в функциональных языках программирования. Канал автора: https://www.youtube.com/watch?v=GaIXsRuloqk
Java. Рекурсия и цикл.
В видео рассматривается рекурсия как аналог цикла. Показано, как можно использовать хвостовую рекурсию в функциональных языках программирования.
📺 🗣 СМОТРЕТЬ RUTUBE
🌐 🗣 СМОТРЕТЬ VKVIDEO
В видео рассматривается рекурсия как аналог цикла. Показано, как можно использовать хвостовую рекурсию в функциональных языках программирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤3👍3
REST (Representational State Transfer) — это архитектурный стиль предоставляющий стандарты для взаимодействия в распределённых системах. Он базируется на простоте, понятности и использует стандартные HTTP методы для взаимодействия между клиентом и сервером. Рой Филдинг впервые представил его в 2000 году в своей знаменитой диссертации. REST очень популярен, так как его легко реализовать, поддерживать и масштабировать.
▪️ GET — используется для получения данных. Например, запрос всех пользователей:
GET /users
▪️ POST — создаёт новый ресурс. Например, добавление нового пользователя:
POST /users
{
"name": "John",
"age": 30
}
▪️ PUT — обновляет ресурс. Например, обновление информации о пользователе:
PUT /users/1
{
"name": "John Doe",
"age": 31
}
▪️ PATCH — частично обновляет ресурс. Например, изменение email пользователя:
PATCH /users/1
{
"email": "john.new@example.com"
}
▪️ DELETE — удаляет ресурс. Например, удаление пользователя:
DELETE /users/1
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29🔥6❤4
VK Видео
Брокер сообщений RabbitMQ | Java Spring Boot
🛠 Документация RabbitMQ - https://www.rabbitmq.com/tutorials 🛠 Зависимость на RabbitMQ (Spring Boot) - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-amqp Канал автора: https://www.youtube.com/watch?v=dWieeksMnZY
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤4🔥2😁1
StringBuffer
StringBuffer — это класс, предназначенный для работы со строками. Он позволяет создавать модифицируемые (изменяемые) строки.
В отличие от класса String, объекты StringBuffer можно изменять после их создания, используя различные методы, такие как append(), insert(), delete().
Также StringBuffer эффективнее String при частых изменениях строки, так как не создает новый объект при каждом изменении.
Класс является потокобезопасным, т. е. может использоваться в многопоточных приложениях.
Методы StringBuffer не синхронизированы, поэтому для многопоточного доступа нужно вручную синхронизировать доступ с помощью synchronized блока.
@javalib #java
StringBuffer — это класс, предназначенный для работы со строками. Он позволяет создавать модифицируемые (изменяемые) строки.
В отличие от класса String, объекты StringBuffer можно изменять после их создания, используя различные методы, такие как append(), insert(), delete().
Также StringBuffer эффективнее String при частых изменениях строки, так как не создает новый объект при каждом изменении.
Класс является потокобезопасным, т. е. может использоваться в многопоточных приложениях.
Методы StringBuffer не синхронизированы, поэтому для многопоточного доступа нужно вручную синхронизировать доступ с помощью synchronized блока.
@javalib #java
👍10❤6🔥4😁1🍾1
Decorator — это структурный паттерн, который позволяет динамически добавлять объектам новые обязанности, оборачивая их в "декораторы". Это полезно для расширения функциональности без изменения существующего кода.
Использование:
🔹 Для динамического добавления поведения объектам без изменения их кода.
🔹 Для разделения функциональности на отдельные классы, чтобы избежать создания монолитных классов с множеством обязанностей.
🔹 Когда нужно добавлять новые функции не только для одного объекта, но и для всех его потомков.
Преимущества:
Недостатки:
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥5❤4
Запуск Java SpringBoot + MySQL в Docker | Dockerfile + Docker compose
В этом видео я покажу, как запустить Spring Boot приложение с базой данных MySQL в Docker. Мы будем использовать Dockerfile для сборки приложения и Docker Compose для управления контейнерами. Это пошаговое руководство поможет вам быстро настроить среду разработки и развернуть приложение локально.
📺 🗣 СМОТРЕТЬ RUTUBE
🌐 🗣 СМОТРЕТЬ VKVIDEO
В этом видео я покажу, как запустить Spring Boot приложение с базой данных MySQL в Docker. Мы будем использовать Dockerfile для сборки приложения и Docker Compose для управления контейнерами. Это пошаговое руководство поможет вам быстро настроить среду разработки и развернуть приложение локально.
Please open Telegram to view this post
VIEW IN TELEGRAM
VK Видео
Запуск Java SpringBoot + MySQL в Docker | Dockerfile + Docker compose
В этом видео я покажу, как запустить Spring Boot приложение с базой данных MySQL в Docker. Мы будем использовать Dockerfile для сборки приложения и Docker Compose для управления контейнерами. Это пошаговое руководство поможет вам быстро настроить среду разработки…
❤7👍6🔥4
Какие известные фестивали проходят в октябре?
Конечно же OTUS FEST!
Присоединяйтесь к трёхдневному IT-фестивалю.
Вас ждут 9 спикеров, мастер-классы, полезные знакомства и разбор интересных случаев из практики. Мы обсудим темы, которые волнуют IT-индустрию, поделимся технологическими хитростями, ответим на ваши вопросы.
Вы узнаете:
- На что обращать внимание при выборе фреймворков?
- С чего начать импортозамещение в ИБ?
- Как подходить к описанию архитектуры на разных уровнях?
- Как разработать стратегию тестирования, которая действительно работает?
- Чего ждать от революции в большой языковой модели?
- Чем «импортозаместить» Nginx?
- Куда движется российский геймдев?
- Какие важные тренды появились в HR за последние годы?
- Что делать аналитикам, чтобы их не заменил ИИ?
Ждём всех, кто работает с информационными технологиями.
Будет круто.
29, 30, 31 октября: можете выбрать любой удобный день или все три сразу.
Участие бесплатное
Записаться на OTUS FEST - https://otus.pw/huIB/?erid=LjN8KMTNf
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Конечно же OTUS FEST!
Присоединяйтесь к трёхдневному IT-фестивалю.
Вас ждут 9 спикеров, мастер-классы, полезные знакомства и разбор интересных случаев из практики. Мы обсудим темы, которые волнуют IT-индустрию, поделимся технологическими хитростями, ответим на ваши вопросы.
Вы узнаете:
- На что обращать внимание при выборе фреймворков?
- С чего начать импортозамещение в ИБ?
- Как подходить к описанию архитектуры на разных уровнях?
- Как разработать стратегию тестирования, которая действительно работает?
- Чего ждать от революции в большой языковой модели?
- Чем «импортозаместить» Nginx?
- Куда движется российский геймдев?
- Какие важные тренды появились в HR за последние годы?
- Что делать аналитикам, чтобы их не заменил ИИ?
Ждём всех, кто работает с информационными технологиями.
Будет круто.
29, 30, 31 октября: можете выбрать любой удобный день или все три сразу.
Участие бесплатное
Записаться на OTUS FEST - https://otus.pw/huIB/?erid=LjN8KMTNf
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
👍4❤3🔥2
Метод trimToSize()
Метод trimToSize() используется для оптимизации размера внутреннего массива коллекций, таких как ArrayList или HashMap.
Этот метод позволяет уменьшить размер внутреннего массива коллекции до текущего количества элементов, то есть избавиться от неиспользуемой памяти.
Вызывать этот метод имеет смысл после массового удаления элементов из коллекции, чтобы освободить лишнюю память.
При добавлении новых элементов размер массива автоматически увеличится.
Метод trimToSize() является необязательной оптимизацией производительности и памяти. Его можно не вызывать, в этом случае внутренний массив будет занимать максимальный размер.
@javalib #java
Метод trimToSize() используется для оптимизации размера внутреннего массива коллекций, таких как ArrayList или HashMap.
Этот метод позволяет уменьшить размер внутреннего массива коллекции до текущего количества элементов, то есть избавиться от неиспользуемой памяти.
Вызывать этот метод имеет смысл после массового удаления элементов из коллекции, чтобы освободить лишнюю память.
При добавлении новых элементов размер массива автоматически увеличится.
Метод trimToSize() является необязательной оптимизацией производительности и памяти. Его можно не вызывать, в этом случае внутренний массив будет занимать максимальный размер.
@javalib #java
👍13❤3🔥2
🗓 6 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Разработчик на Spring Framework» от Otus.
На вебинаре разберем:
🔗 Ссылка на регистрацию: https://vk.cc/cDxzx2
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥2🎉2
Iterator — это поведенческий паттерн, который позволяет последовательно обходить элементы коллекции, не раскрывая ее внутреннюю структуру. Он обеспечивает единый интерфейс для работы с различными типами коллекций.
Использование:
🔹 Когда нужно обеспечить единый способ обхода элементов коллекций без зависимости от их типа.
🔹 Когда нужно скрыть внутреннюю реализацию структуры данных от кода, который с ней работает.
🔹 Для реализации паттерна "агрегат" и отделения итерации от логики самой коллекции.
Преимущества:
Недостатки:
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍5🔥4
System.nanoTime
System.nanoTime() возвращает текущее время в наносекундах.
Этот метод используется для измерения продолжительности выполнения небольших фрагментов кода.
В отличие от System.currentTimeMillis(), который возвращает время в миллисекундах, nanoTime() имеет более высокое разрешение и позволяет измерять очень короткие промежутки времени.
nanoTime() часто используется для:
— Замеров производительности.
— Измерения задержек в мультитрединге.
— Микробенчмаркинга.
— Определения интервалов между событиями в реальном времени.
@javalib #java
System.nanoTime() возвращает текущее время в наносекундах.
Этот метод используется для измерения продолжительности выполнения небольших фрагментов кода.
В отличие от System.currentTimeMillis(), который возвращает время в миллисекундах, nanoTime() имеет более высокое разрешение и позволяет измерять очень короткие промежутки времени.
nanoTime() часто используется для:
— Замеров производительности.
— Измерения задержек в мультитрединге.
— Микробенчмаркинга.
— Определения интервалов между событиями в реальном времени.
@javalib #java
👍12❤3🔥3😁2
🔑 Encoding vs Encryption vs Tokenization: основные отличия
Кодирование, шифрование и токенизация — три разных процесса обработки данных для передачи, защиты и соблюдения стандартов безопасности. В системной архитектуре важно выбрать правильный метод для работы с конфиденциальной информацией.
🔹 Кодирование
Кодирование переводит данные в другой формат по легко обратимой схеме. Например, Base64 кодирует бинарные данные в текстовый формат для упрощения передачи через текстовые каналы. Кодирование не обеспечивает защиту данных, так оно легко обратимо без ключа.
🔹 Шифрование
Шифрование преобразует данные с помощью алгоритмов и ключей. Бывает симметричным (один ключ) и асимметричным (разные ключи). Оно защищает данные, превращая их в нечитаемый формат, который можно расшифровать только с правильным ключом.
🔹 Токенизация
Токенизация заменяет чувствительные данные безопасными токенами, связь которых с оригиналом хранится в защищенном хранилище. Токены используются в системах без риска утечки данных и полезны для соблюдения стандартов, таких как PCI DSS.
@javalib #java
Кодирование, шифрование и токенизация — три разных процесса обработки данных для передачи, защиты и соблюдения стандартов безопасности. В системной архитектуре важно выбрать правильный метод для работы с конфиденциальной информацией.
🔹 Кодирование
Кодирование переводит данные в другой формат по легко обратимой схеме. Например, Base64 кодирует бинарные данные в текстовый формат для упрощения передачи через текстовые каналы. Кодирование не обеспечивает защиту данных, так оно легко обратимо без ключа.
🔹 Шифрование
Шифрование преобразует данные с помощью алгоритмов и ключей. Бывает симметричным (один ключ) и асимметричным (разные ключи). Оно защищает данные, превращая их в нечитаемый формат, который можно расшифровать только с правильным ключом.
🔹 Токенизация
Токенизация заменяет чувствительные данные безопасными токенами, связь которых с оригиналом хранится в защищенном хранилище. Токены используются в системах без риска утечки данных и полезны для соблюдения стандартов, таких как PCI DSS.
@javalib #java
👍16❤4🔥4
🗓 7 ноября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Advanced» от Otus.
В современной инфраструктуре всё чаще используются облачные решения, в которых контроль используемых ресурсов напрямую влияет на затраты бизнеса. Поэтому все способы экономии ресурсов важны. Тут на помощь придёт GraalVM!
Но является ли это панацеей?
На вебинаре разберем:
🔗 Ссылка на регистрацию: https://vk.cc/cDMds1
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥2
Как автоматизировать тестирование с помощью Docker-compose?
🟡 Приглашаем вас 6 ноября в 20:00 мск на открытый вебинар по разворачиванию инфраструктуры тестирования с использованием docker-compose. Узнайте, как ускорить процессы, облегчить работу и внедрить самые передовые технологии в QA.
На вебинаре мы покажем, как разворачивать тестовые окружения на примере Selenoid и Jenkins. Это практическое занятие поможет вам глубже понять возможности docker-compose и освоить ключевые инструменты для управления тестированием.
Вебинар будет полезен для QA-инженеров, автоматизаторов и DevOps-специалистов, которые хотят развивать навыки работы с контейнерами и ускорить внедрение тестирования в CI/CD-процессы.
Регистрируйтесь прямо сейчас и получите скидку на курс «Java QA Engineer. Professional»: https://vk.cc/cDMuaa
На вебинаре мы покажем, как разворачивать тестовые окружения на примере Selenoid и Jenkins. Это практическое занятие поможет вам глубже понять возможности docker-compose и освоить ключевые инструменты для управления тестированием.
Вебинар будет полезен для QA-инженеров, автоматизаторов и DevOps-специалистов, которые хотят развивать навыки работы с контейнерами и ускорить внедрение тестирования в CI/CD-процессы.
Регистрируйтесь прямо сейчас и получите скидку на курс «Java QA Engineer. Professional»: https://vk.cc/cDMuaa
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥2
Observer — это поведенческий паттерн, который создаёт механизм подписки, позволяющий одним объектам следить и реагировать на изменения состояния других объектов. Наблюдатель предоставляет гибкую систему взаимодействия между объектами, исключая жесткую связанность.
Использование:
🔹 Когда нужно оповещать несколько объектов об изменениях состояния другого объекта.
🔹 Когда важно обеспечить слабую связанность между компонентами системы.
🔹 При разработке систем, где одни объекты должны реагировать на изменения в других, без жёсткой привязки.
Преимущества:
Недостатки:
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5🔥5😁1