🗓 Дата: 19 декабря в 20:00 мск.
Программа урока:
- Введение в Resilience4.
- Применение Resilience4j для улучшения стабильности.
🔗 Регистрация на вебинар: https://vk.cc/cGapcZ
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruPlease open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥2😁1
Как работает Pageable в Spring❓
Pageable — это мощный инструмент в Spring Data для работы с большими объемами данных, который позволяет разделить результат на страницы. Это оптимизирует память и улучшает производительность.
Вместо загрузки всех записей, например через findAll(), мы можем запросить только определенное количество данных (порции/страницы) и продолжать загружать по мере необходимости. Интерфейс Pageable создает запрос с параметрами LIMIT и OFFSET, что позволяет базе данных возвращать только нужные записи, начиная с определенного места.
*️⃣ Пример использования:
🟡 Репозиторий:
🟡 Сервис:
Здесь PageRequest.of(page, size, Sort) создает объект Pageable, который указывает, какую страницу и сколько записей нужно получить, а также сортирует результат по имени в порядке возрастания.
🟡 Контроллер:
Этот эндпоинт позволяет запрашивать данные по страницам. Например, /users?page=1&size=20 вернет вторую страницу с 20 записями.
*️⃣ Преимущества использования Pageable:
- Экономия памяти: Мы загружаем только небольшие порции данных.
- Легкость навигации: Можно переключаться между страницами.
*️⃣ Недостатки использования Pageable:
- Дополнительный запрос для подсчета записей: Spring Data выполняет запрос для получения общего числа записей.
- Ограниченная гибкость: При сложных запросах с множеством фильтраций и джоинов Pageable может быть не таким гибким, как ручные запросы с LIMIT и OFFSET.
❗️ Важно: Пагинация удобна для больших объемов данных, но если данные постоянно обновляются, возможны проблемы с консистентностью между страницами. Записи могут дублироваться или пропадать.
@javalib #java
Pageable — это мощный инструмент в Spring Data для работы с большими объемами данных, который позволяет разделить результат на страницы. Это оптимизирует память и улучшает производительность.
Вместо загрузки всех записей, например через findAll(), мы можем запросить только определенное количество данных (порции/страницы) и продолжать загружать по мере необходимости. Интерфейс Pageable создает запрос с параметрами LIMIT и OFFSET, что позволяет базе данных возвращать только нужные записи, начиная с определенного места.
public interface UserRepository extends JpaRepository<User, Long> {}@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public Page<User> getUsersByPage(int page, int size) {
Pageable pageable = PageRequest.of(page, size, Sort.by("name").ascending());
return userRepository.findAll(pageable);
}
}
Здесь PageRequest.of(page, size, Sort) создает объект Pageable, который указывает, какую страницу и сколько записей нужно получить, а также сортирует результат по имени в порядке возрастания.
@RestController
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public Page<User> getUsers(
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "20") int size) {
return userService.getUsersByPage(page, size);
}
}
Этот эндпоинт позволяет запрашивать данные по страницам. Например, /users?page=1&size=20 вернет вторую страницу с 20 записями.
- Экономия памяти: Мы загружаем только небольшие порции данных.
- Легкость навигации: Можно переключаться между страницами.
- Дополнительный запрос для подсчета записей: Spring Data выполняет запрос для получения общего числа записей.
- Ограниченная гибкость: При сложных запросах с множеством фильтраций и джоинов Pageable может быть не таким гибким, как ручные запросы с LIMIT и OFFSET.
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤6🔥4
⚡️Как проектировать базы данных так, чтобы впоследствии не приходилось тушить пожары в результате не оптимально заложенных основ?
👉 Приглашаем на курс "PostgreSQL для профессионалов", который обеспечит глубокое погружение в PostgreSQL!
На курсе вы:
- Научитесь настраивать кластер PostgreSQL на оптимальную производительность
- Организуете систему резервного копирования
- Научитесь выяснять причины сбоев, блокировок и deadlock и оперативно решать эти проблемы
- Сможете использовать индексы, джойны и статистику для оптимизации производительности
- Освоите синтаксис и особенности работы в PostgreSQL
- Изучите пути решения проблем работы с большими объемами данных в PostgreSQL
Записывайтесь на курс уже сейчас и получите скидку! https://vk.cc/cGbWNj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👉 Приглашаем на курс "PostgreSQL для профессионалов", который обеспечит глубокое погружение в PostgreSQL!
На курсе вы:
- Научитесь настраивать кластер PostgreSQL на оптимальную производительность
- Организуете систему резервного копирования
- Научитесь выяснять причины сбоев, блокировок и deadlock и оперативно решать эти проблемы
- Сможете использовать индексы, джойны и статистику для оптимизации производительности
- Освоите синтаксис и особенности работы в PostgreSQL
- Изучите пути решения проблем работы с большими объемами данных в PostgreSQL
Записывайтесь на курс уже сейчас и получите скидку! https://vk.cc/cGbWNj
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍5❤2🔥2
Forwarded from Java Guru 🤓
Что выведет программа?
Anonymous Quiz
14%
Ошибка компиляции, так как нельзя изменять финальный список.
6%
RuntimeException, так как нельзя изменять финальный список.
6%
IllegalStateException, так как нельзя изменять финальный список.
73%
Java is The best!, так как список изменяемый.
🔥14👍9
Техника «10 тестов в день» – одна из самых эффективных в изучении Java.
Канал Java Guru выложил в открытый доступ тесты, которые дают на собеседованиях в топовые компании, вроде Яндекс и MailRu.
➤ Открываете задачку – выбираете вариант – видите правильный ответ и детальное объяснение к нему. Так вы усвоите на 50% больше знаний в сжатые сроки.
Подписывайтесь и качайте свои скиллы: @javatasks
Канал Java Guru выложил в открытый доступ тесты, которые дают на собеседованиях в топовые компании, вроде Яндекс и MailRu.
➤ Открываете задачку – выбираете вариант – видите правильный ответ и детальное объяснение к нему. Так вы усвоите на 50% больше знаний в сжатые сроки.
Подписывайтесь и качайте свои скиллы: @javatasks
👍6🔥2🎄2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍4🎄4🎅2❤1
Интерфейс Iterable
Iterable используется для представления коллекций, которые можно итерировать или пройти в цикле.
Он определяет метод iterator(), который возвращает объект Iterator.
Этот Iterator позволяет поочередно получать элементы коллекций, также его можно использовать в цикле while или for-each для последовательного перебора всех элементов коллекции.
Это позволяет абстрагироваться от конкретного типа коллекции. Мы можем работать с Iterable и Iterator, не завися от того список это, множество или очередь. Такой подход упрощает использование разных коллекций.
@javalib #java
Iterable используется для представления коллекций, которые можно итерировать или пройти в цикле.
Он определяет метод iterator(), который возвращает объект Iterator.
Этот Iterator позволяет поочередно получать элементы коллекций, также его можно использовать в цикле while или for-each для последовательного перебора всех элементов коллекции.
Это позволяет абстрагироваться от конкретного типа коллекции. Мы можем работать с Iterable и Iterator, не завися от того список это, множество или очередь. Такой подход упрощает использование разных коллекций.
@javalib #java
👍15❤4🔥3🎄2
🆕💥 Backend-разработчик, получи актуальные знания о микросервисах!
Умение строить архитектуру микросервисов — навык, необходимый Senior разработчикам и тем, кто хочет стать архитектором ПО. Переходи на сайт, чтобы проверить свои знания ипосмотреть подходит ли тебе 💥 обновленная программа курса Microservice Architecture от OTUS?
Если успешно пройдешь тест, сможешь забронировать место в группе по🌲 новогодней скидке! Не забудь активировать промокодMicroservice_12
🎫 Курс можно приобрести в рассрочку
🔴 Пройти тест и забрать скидку: https://vk.cc/cGkXFI
Умение строить архитектуру микросервисов — навык, необходимый Senior разработчикам и тем, кто хочет стать архитектором ПО. Переходи на сайт, чтобы проверить свои знания и
Если успешно пройдешь тест, сможешь забронировать место в группе по🌲 новогодней скидке! Не забудь активировать промокод
🎫 Курс можно приобрести в рассрочку
🔴 Пройти тест и забрать скидку: https://vk.cc/cGkXFI
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576👍5❤2🔥2
Media is too big
VIEW IN TELEGRAM
What's New in Spring Batch 5.2
hi, Spring fans! Spring Boot 3.4 is here and with it comes a bevy of ecosystem upgrades. in this video we look at the latest-and-greatest in Spring Batch 5.2!
📺 🗣 СМОТРЕТЬ RUTUBE
🌐 🗣 СМОТРЕТЬ VKVIDEO
@javalib #java
hi, Spring fans! Spring Boot 3.4 is here and with it comes a bevy of ecosystem upgrades. in this video we look at the latest-and-greatest in Spring Batch 5.2!
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2🎄2
Хватит разворачивать приложения наугад! Docker — must-have инструмент для современных Java-разработчиков.
🔍 На открытом уроке разберем, как контейнеризация упрощает разработку и развертывание приложений. Узнаете всё: от создания Docker-контейнеров до профилирования.
👉 Запускайте Java-приложения в облаке, тестируйте их под нагрузкой, отлаживайте с точностью хирурга. Начните путь к новой профессиональной высоте!
🗓 Запишитесь на урок «Контейнеризация Java-приложений с Docker» 27 декабря в 20:00 уже сейчас! Участникам — скидки на курс «Java Developer. Advanced»: https://vk.cc/cGlGb0
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🔍 На открытом уроке разберем, как контейнеризация упрощает разработку и развертывание приложений. Узнаете всё: от создания Docker-контейнеров до профилирования.
👉 Запускайте Java-приложения в облаке, тестируйте их под нагрузкой, отлаживайте с точностью хирурга. Начните путь к новой профессиональной высоте!
🗓 Запишитесь на урок «Контейнеризация Java-приложений с Docker» 27 декабря в 20:00 уже сейчас! Участникам — скидки на курс «Java Developer. Advanced»: https://vk.cc/cGlGb0
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
❤3👍3🔥2
LongAdder
LongAdder — это класс из пакета java.util.concurrent, оптимизированный для высокопроизводительного параллельного суммирования long значений.
LongAdder применяется в многопоточных приложениях, когда нужно эффективно подсчитать сумму или другое агрегатное значение из нескольких потоков.
Преимущества:
— Высокая скорость за счет разделения на сегменты и отсутствия блокировок.
— Минимизация конфликтов между потоками при обновлении.
— Лучше масштабируется на большом кол-ве ядер.
@javalib #java
LongAdder — это класс из пакета java.util.concurrent, оптимизированный для высокопроизводительного параллельного суммирования long значений.
LongAdder применяется в многопоточных приложениях, когда нужно эффективно подсчитать сумму или другое агрегатное значение из нескольких потоков.
Преимущества:
— Высокая скорость за счет разделения на сегменты и отсутствия блокировок.
— Минимизация конфликтов между потоками при обновлении.
— Лучше масштабируется на большом кол-ве ядер.
@javalib #java
👍7🔥3❤2
Приглашаем вас на открытый вебинар: «Основы многопоточности в Java»
⏰Дата: 25 декабря в 20:00 мск
Спикер: Борис Кириллов
📚Программа урока:
- Введение в многопоточность: что это и зачем это нужно.
- Изучение базовых классов для работы с потоками.
- Разбор типовых проблем многопоточности и подходов к их решению.
🔥Урок будет полезен тем, кто хочет:
- Разобраться в основах многопоточности в Java.
- Понять, как писать многопоточные программы.
- Узнать, какие классы используются для работы с потоками в Java.
🚀В результате урока вы:
- Поймете подходы к многопоточности в Java.
- Изучите базовые классы и синтаксис многопоточной обработки.
- Сможете применять полученные знания для создания более эффективных Java-приложений.
Участники всех открытых уроков получат скидку🎁 на большое обучение
👉Регистрируйтесь на открытый вебинар по ссылке: https://vk.cc/cGnWN4
⏰Дата: 25 декабря в 20:00 мск
Спикер: Борис Кириллов
📚Программа урока:
- Введение в многопоточность: что это и зачем это нужно.
- Изучение базовых классов для работы с потоками.
- Разбор типовых проблем многопоточности и подходов к их решению.
🔥Урок будет полезен тем, кто хочет:
- Разобраться в основах многопоточности в Java.
- Понять, как писать многопоточные программы.
- Узнать, какие классы используются для работы с потоками в Java.
🚀В результате урока вы:
- Поймете подходы к многопоточности в Java.
- Изучите базовые классы и синтаксис многопоточной обработки.
- Сможете применять полученные знания для создания более эффективных Java-приложений.
Участники всех открытых уроков получат скидку🎁 на большое обучение
👉Регистрируйтесь на открытый вебинар по ссылке: https://vk.cc/cGnWN4
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576👍4❤2🔥2
ServletContext
ServletContext предоставляет сервлету доступ к контексту веб-приложения. Он содержит общую информацию о приложении и позволяет сервлетам взаимодействовать.
Доступ к ServletContext можно получить через метод getServletContext() класса ServletConfig.
Через ServletContext можно получить данные инициализационных параметров web.xml.
ServletContext позволяет сервлетам оставлять атрибуты, доступные всем сервлетам данного приложения.
Также с его помощью можно получить ресурсы приложения, например потоки ввода-вывода.
@javalib #java
ServletContext предоставляет сервлету доступ к контексту веб-приложения. Он содержит общую информацию о приложении и позволяет сервлетам взаимодействовать.
Доступ к ServletContext можно получить через метод getServletContext() класса ServletConfig.
Через ServletContext можно получить данные инициализационных параметров web.xml.
ServletContext позволяет сервлетам оставлять атрибуты, доступные всем сервлетам данного приложения.
Также с его помощью можно получить ресурсы приложения, например потоки ввода-вывода.
@javalib #java
👍6🔥5❤3😁2
Spring от А до Я: как быстро доставлять продукт в продакшн и радовать пользователей?
Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruPlease open Telegram to view this post
VIEW IN TELEGRAM
❤3👍3🔥2
Media is too big
VIEW IN TELEGRAM
Хакерская утилита: пишем сканер портов на Java за 10 минут!
Сканер портов - очень важная утилита, которая помогает найти открытые порты на сервере. Используется как хакерами для разведки и первоначального сбора данных о ресурсе, так и админами для аудита безопасности. С помощью сканера портов можно выявить открытые порты на собственном ресурсе и принять меры по улучшению безопасности.
В этом видео я покажу как написать свой собственный простейший сканер портов и покажу как он работает. Материал подходит для новичков в программировании.
📺 🗣 СМОТРЕТЬ RUTUBE
🌐 🗣 СМОТРЕТЬ VKVIDEO
@javalib #java
Сканер портов - очень важная утилита, которая помогает найти открытые порты на сервере. Используется как хакерами для разведки и первоначального сбора данных о ресурсе, так и админами для аудита безопасности. С помощью сканера портов можно выявить открытые порты на собственном ресурсе и принять меры по улучшению безопасности.
В этом видео я покажу как написать свой собственный простейший сканер портов и покажу как он работает. Материал подходит для новичков в программировании.
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🎄11🔥8👍6❤2🎅1
Оptimistic locking
optimistic locking — это стратегия контроля параллельного доступа к ресурсам или данным, которая позволяет не блокировать ресурсы в течение длительного времени. Она основывается на предположении, что конфликты при доступе к данным встречаются редко, и поэтому вместо того чтобы заблокировать ресурс целиком на протяжении операции, она позволяет нескольким потокам или процессам работать с данными параллельно.
Если возникает конфликт, то один из потоков получит уведомление об этом и может принять меры для разрешения конфликта.
@javalib #java
optimistic locking — это стратегия контроля параллельного доступа к ресурсам или данным, которая позволяет не блокировать ресурсы в течение длительного времени. Она основывается на предположении, что конфликты при доступе к данным встречаются редко, и поэтому вместо того чтобы заблокировать ресурс целиком на протяжении операции, она позволяет нескольким потокам или процессам работать с данными параллельно.
Если возникает конфликт, то один из потоков получит уведомление об этом и может принять меры для разрешения конфликта.
@javalib #java
👍15❤6🔥6
Ответьте на 20 вопросов и проверьте, насколько вы готовы к обучению на курсе — «Java Developer. Professional»
За 6 месяцев курса вы:
- Сможете создавать современные java-приложения
- Поймете основы функционирования JVM (сборка мусора, byteCode)
- Освоите приемы применения многопоточности.
- Самостоятельно решать задачи уровня Middle+
- Получите практику решения сложных задач с подробным код ревью от экспертных Java-разработчиков
- Откроете для себя подходы, которые позволят писать код быстрее и чище
Тест займет всего 20 минут вашего времени!
👉 ПРОЙТИ ТЕСТ — https://vk.cc/cGvb3G
💣 Пройдете тест - получите скидку на курс, и доступ к бесплатным урокам курса.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤2🔥2😁2
Класс ReentrantReadWriteLock
Класс ReentrantReadWriteLock используется для организации разделяемого доступа к ресурсам с разделением на чтение и запись.
Он позволяет эффективно организовать одновременный доступ к данным для чтения множеством потоков и исключительный доступ для записи отдельными потоками.
Проще говоря, множество потоков могут одновременно заходить в метод read, но в write может находиться только один поток в данный момент времени.
Это позволяет эффективно организовать доступ на чтение и запись.
@javalib #java
Класс ReentrantReadWriteLock используется для организации разделяемого доступа к ресурсам с разделением на чтение и запись.
Он позволяет эффективно организовать одновременный доступ к данным для чтения множеством потоков и исключительный доступ для записи отдельными потоками.
Проще говоря, множество потоков могут одновременно заходить в метод read, но в write может находиться только один поток в данный момент времени.
Это позволяет эффективно организовать доступ на чтение и запись.
@javalib #java
👍11🔥8❤1
Forwarded from Java Guru 🤓
Что произойдет при запуске программы?
Anonymous Quiz
37%
Список будет расширен: [1, 2, 3, 4]
11%
Ошибка компиляции
37%
UnsupportedOperationException
8%
RuntimeException
6%
Программа завершится без ошибок, но список не изменится: [1, 2, 3]
👍16🔥5