Java библиотека
31.6K subscribers
2.32K photos
78 videos
8 files
2.05K links
Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrT4A

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial
Download Telegram
🔼 Топ-5 способов улучшить производительность API:

1️⃣ Пагинация результатов:
Этот метод используется для оптимизации больших наборов данных путем их постраничной передачи клиенту, что повышает отзывчивость сервиса и улучшает пользовательский опыт.

2️⃣ Асинхронное логирование:
Этот подход предполагает отправку логов в буфер без блокировки и немедленное возвращение управления, вместо того чтобы записывать данные на диск при каждом вызове. Логи периодически сбрасываются на диск, что значительно снижает нагрузку на систему ввода-вывода.

3️⃣ Кэширование данных:
Часто запрашиваемые данные могут храниться в кэше для ускорения их извлечения. Клиенты сначала проверяют кэш перед обращением к базе данных, а такие решения для хранения данных, как Redis, обеспечивают более быстрый доступ благодаря хранению в оперативной памяти.

4️⃣ Сжатие payload:
Чтобы сократить время передачи данных, запросы и ответы можно сжимать, что ускоряет процессы загрузки и выгрузки.

5️⃣ Пул соединений:
Эта техника включает использование пула открытых соединений для управления взаимодействием с базой данных, что снижает накладные расходы, связанные с открытием и закрытием соединений каждый раз, когда требуется загрузить данные. Пул управляет жизненным циклом соединений для эффективного использования ресурсов.

💬 А как вы улучшаете перфоманс API?

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍4🔥4
Всем, кто связан с разработкой, архитектурой или управлением IT-проектами!
Хотите создавать решения, которые выдерживают сотни тысяч RPS?


14 октября специалист по высоконагруженным сервисам в крупном банке расскажет про обучение на онлайн-курсе «Архитектор высоких нагрузок» в OTUS.

Вы узнаете:
- о программе обучения на курсе «Архитектор высоких нагрузок»
- о том, какой уровень знаний необходим для поступления на курс
- о перспективах самой профессии
- о ваших перспективах в качестве архитектора высоких нагрузок

Также вы увидите проектные работы выпускников курса.

🗓 14 октября в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «Highload Architect»

🔴 Записаться на открытый урок: https://vk.cc/cCdk0N

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍43🔥2
shutdown hook

Shutdown hook позволяет приложению выполнить некоторый код перед завершением приложения.

Для создания hook нужно создать объект класса Thread и передать его в метод addShutdownHook() класса Runtime.
Когда приложение завершается, все заданные hook выполнятся последовательно.

Shutdown hook работает в случае нормального или аварийного завершения приложения и часто используется для освобождения ресурсов, закрытия соединений, сохранения данных.


@javalib #java
👍16🔥74
🤫 Секреты эффективной работы с ArrayList

ArrayList — это один из самых популярных классов для работы с динамическими массивами в Java. Но чтобы использовать его по максимуму, стоит учесть несколько важных моментов:

1️⃣ Уменьшайте количество расширений: Каждый раз, когда ArrayList превышает свою текущую емкость, он создает новый массив большего размера. Это может замедлить работу, особенно при больших объемах данных. Чтобы избежать этого, инициализируйте ArrayList с заранее рассчитанной емкостью, если примерно знаете объем данных.

2️⃣ Избегайте частых вставок и удалений в середине списка: Операции вставки и удаления элементов в середине ArrayList требуют сдвига всех последующих элементов. Если такие операции критичны, рассмотрите использование LinkedList.

3️⃣ Используйте метод trimToSize(): Если ваш ArrayList больше не будет изменяться, вызов метода trimToSize() освободит неиспользуемую память, оптимизируя использование ресурсов.

4️⃣ Итерации важны: Используйте цикл for-each или метод forEach() для итерации по ArrayList. Они обеспечивают более читаемый и безопасный код. Но если нужен доступ по индексу, стандартный цикл for — ваш выбор.

5️⃣ Будьте осторожны с автобоксингом: При работе с примитивными типами, такими как int, ArrayList автоматически упаковывает их в Integer. Это может привести к лишним затратам памяти. Если производительность критична, используйте специализированные классы, такие как IntArrayList из библиотеки fastutil.

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🔥65
Forwarded from Java Guru 🤓
Какой будет результат?
🔥114👍4
unmodifiableMap

UnmodifiableMap используется для создания неизменяемого представления отображения, это позволяет предоставить доступ к отображению, не давая возможности изменить его.

Как видно из примера, при попытке изменить неизменяемое отображение unmodifiableMap выбрасывается исключение UnsupportedOperationException. Это гарантирует, что исходное отображение не будет случайно изменено.


@javalib #java
👍146🔥3
Forwarded from Axiom JDK
​​Сенсация для разработчиков! Axiom JDK теперь доступен для свободной загрузки 🎉

Мы услышали вас и сделали это реальностью. Теперь каждый Java-разработчик в России может легко загрузить Axiom JDK, чтобы создавать свои проекты и домашние разработки, тестировать идеи и проводить эксперименты на отечественном инструменте мирового уровня.

Для разработки и демо доступны все LTS-версии Java (8, 11, 17, 21) и актуальная JDK 23, поддерживаются Windows, macOS и Linux. С регулярными обновлениями и полной документацией.
Загружайте прямо сейчас в личном кабинете разработчика:

lk.axiomjdk.ru

#Обновление_AxiomJDK
👍235🔥4
charBuffer

Метод charBuffer() используется для получения буфера символов из строки. Он принадлежит классу String.

Этот метод возвращает объект CharBuffer, который представляет последовательность символов строки.
CharBuffer позволяет эффективно читать и манипулировать символами строки без создания копий.

В этом примере создается строка «Hello». Затем из этой строки получаем буфер символов методом charBuffer().
В цикле посимвольно читаем из буфера символы и выводим их на экран.


@javalib #java
👍155🔥4
Хотите узнать, как превратить массив в пирамиду и ускорить сортировку данных?

Ждем вас на бесплатном вебинаре 14 октября в 20:00 мск, где мы разберем:

- как реализовать алгоритм сортировки выбором с линейной сложностью;
- как превратить массив в пирамиду (кучу) для быстрого доступа к максимальному элементу;
- как создать алгоритм пирамидальной сортировки с квазилинейной сложностью — О(N log N);
- визуальные примеры работы алгоритма на конкретных числах.

🚀 Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP.

Встречаемся в преддверии старта курса «Алгоритмы и структуры данных». Все участники вебинара получат специальную цену на обучение!

Регистрируйтесь прямо сейчас, чтобы не пропустить мероприятие: https://vk.cc/cCxj28

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍53🔥2
🕯 Паттерн Factory Method (Фабричный метод)

Factory Method — это порождающий паттерн, который предоставляет интерфейс для создания объектов в суперклассе, но позволяет подклассам изменять тип создаваемых объектов.

Использование:

🔹 Когда создание объекта зависит от контекста.
🔹 Для увеличения расширяемости кода, позволяя создавать новые типы продуктов.

Преимущества:

1️⃣ Ослабление связи между кодом и конкретными классами.
Когда вы создаете объект напрямую с помощью new, ваш код жестко привязан к конкретному классу. Если вам нужно будет заменить этот класс другим, придется изменить все места, где он используется. С фабрикой вы работаете через абстракции (интерфейсы или абстрактные классы), а конкретные реализации могут меняться без изменения основного кода.

2️⃣ Упрощение и централизованное управление созданием объектов
Фабрики могут включать сложную логику по созданию объектов, такую как:
▪️ Выбор нужного класса в зависимости от условий.
▪️ Управление жизненным циклом объекта.
▪️ Использование паттернов Singleton или Pooling внутри фабрики.

3️⃣ Поддержка расширяемости и масштабируемости
Используя фабрику, вы легко можете добавлять новые типы продуктов или изменять существующие без необходимости изменять основной код. Это упрощает расширение системы.

4️⃣ Поддержка тестирования
Фабрики облегчают тестирование кода. Вы можете использовать mock-объекты или подменять реализации фабрик для тестов, что упрощает создание тестируемых объектов и проверку кода.

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍185🔥3
Реверс массива

Реверс массива в Java означает изменение порядка элементов массива на противоположный. То есть, элементы, которые изначально были в начале массива, становятся в конце, и наоборот.

Реверс массива может быть полезным во многих ситуациях программирования. Например, это может потребоваться для изменения порядка элементов перед их обработкой или выводом, или для выполнения действий, которые требуют доступа к элементам массива в обратном порядке.
🔥145👍5
Как эффективно разделять приложения на микросервисы?

Расскажет Евгений Непомнящий — разработчик в IT Sense. Встречаемся на бесплатном практическом уроке от OTUS, где вы вместе с опытным экспертом:

- рассмотрите принципы функциональной декомпозиции;
- научитесь выделять отдельные компоненты приложения;
- погрузитесь в методику EventStorming;
- изучите подход API First Design;
- узнаете, как разрабатывать API.

Встречаемся 28 октября в 20:00 мск в рамках курса «Software Architect». Доступна рассрочка на обучение!

Ссылка для регистрации: https://vk.cc/cCB0Nj

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
6🔥3👍2
💡 Совет

show-sql - это один из самых простых (но не самый оптимальный) способ посмотреть SQL запросы, сгенерированные Hibernate.

Вы можете немного улучшить его, включив форматирование, показ JPQL-запроса, сгенерировавшего запрос, и включив подсветку, которая добавляет некоторый цвет к выводу.

@javalib #java
🔥21👍109
Apache Commons CLI

Apache Commons CLI (Commons Command Line Interface) — это библиотека для обработки аргументов командной строки в Java. Она предоставляет удобный способ определения и обработки аргументов командной строки для ваших Java-приложений. Библиотека Apache Commons CLI упрощает работу с аргументами командной строки, включая разбор аргументов, создание справки и обработку различных опций командной строки.

@javalib #java
👍12🔥54
Любая крупная БД рано или поздно начинает испытывать проблемы с производительностью.

Причина проблем может крыться в медленной работе запросов. Неоптимизированные запросы влияют на скорость выполнения различных задач, потребляют много ресурсов и усложняют доступ к данным.

Как же их отслеживать и оптимизировать?

Узнаете на открытом вебинаре «Как оптимизировать производительность запросов в PostgreSQL?»

Вы узнаете:
- как оптимизация запросов влияет на скорость обработки данных
- что влияет на производительность запросов
- как правильно использовать индексы для повышения производительности
- как выявлять медленные запросы с помощью инструментов мониторинга

Будет интересно: аналитикам, инженерам и разработчикам БД, бэкенд-специалистам, тимлидам и проект-менеджерам.

Спикер: Алексей Железной, преподаватель OTUS и старший инженер данных.

Бонус! Всем участникам – скидка 5% на любой курс OTUS и полезные гайды.

16 октября, 18:30 МСК, Бесплатно

Записаться на событие - https://otus.pw/9tQk/?erid=LjN8Juzom

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
4👍4🔥2
Когда и как использовать var, чтобы код стал понятнее?

Слышали про var? Его добавили в Java 10, чтобы облегчить нам жизнь. Но когда его лучше использовать, а когда стоит быть осторожнее?💡

Когда использовать var:

🔵 Когда всё понятно с контекста: Если тип переменной очевиден 👀, то зачем писать лишнее?

var list = new ArrayList<String>(); // Это список, и это сразу видно


🔵 Когда тип слишком громоздкий: Если объявление слишком длинное и перегружает код, var упрощает задачу:

var map = new HashMap<String, List<Integer>>(); // Чисто и просто


🔵 Короткие методы: В небольших методах с чёткой логикой, var помогает сделать код компактнее и читабельнее.

А вот где лучше избегать:

🔵 Если тип неочевиден: Когда сложно сразу понять, что это за переменная, лучше явно указать тип, чтобы не путать коллег.
var result = process(); // И что за процесс тут? 


Итог: var — отличный инструмент, но используйте его с умом. Вопрос к вам: а вы уже используете var в своих проектах? Если да, поделитесь опытом в комментариях! 👇

@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍275🔥3
Хотите научиться разрабатывать парсеры pdf-файлов и создавать полезные приложения?

Приглашаем на открытый урок «Разработка парсера pdf-файла».

🗓 24 октября в 20:00 МСК

🆓 Бесплатно. Урок в рамках старта курса «Java Developer. Professional»

На вебинаре разберем:

- как разработать парсер для выписки ВТБ банка в формате pdf;
- весь путь от идеи до практического применения;
- ответы на все возникающие вопросы.

⬇️ В результате урока вы получите практически полезное приложение с подробностями реализации.

Спикер Сергей Петрелевич — опытный Java/Kotlin-разработчик и преподаватель.

Все участники вебинара получат специальную цену на обучение!

🔗 Ссылка на регистрацию: https://vk.cc/cCEZJZ

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥31
В чем отличия между TreeSet и HashSet?

Основное отличие между TreeSet и HashSet заключается в том, что TreeSet хранит элементы в отсортированном порядке, в то время как порядок хранения элементов в HashSet не определен. TreeSet также обеспечивает быстрый поиск и извлечение элементов в отсортированном порядке.

@javalib #java
👍21🔥53
Что такое абстрактный метод в языке Java?

Абстрактный метод – это метод без тела. Вы просто объявляете метод, не определяя его, с использованием ключевого слова abstract в объявлении метода. Все объявленные внутри интерфейса в языке Java методы – по умолчанию абстрактные. Пример абстрактного метода в языке Java представлен на картинке.

Теперь для реализации этого метода необходимо расширить абстрактный класс и этот метод переопределить.


@javalib #java
👍154🔥4