Ввод-вывод (I/O) в Java может сильно ускорить производительность, если использовать асинхронные подходы. Давайте рассмотрим, как это работает!
1. Асинхронный ввод-вывод с NIO.2: Java NIO.2 предоставляет каналы для асинхронного чтения и записи.
AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(Paths.get("file.txt"));
fileChannel.read(buffer, 0, buffer, new CompletionHandler<>() {
public void completed(Integer result, ByteBuffer buffer) {
System.out.println("Data read: " + new String(buffer.array()));
}
public void failed(Throwable exc, ByteBuffer buffer) {
exc.printStackTrace();
}
});
2. Работа с Buffers для оптимизации: Буферы в NIO позволяют считывать данные большими порциями, что ускоряет I/O.
ByteBuffer buffer = ByteBuffer.allocate(1024);
fileChannel.read(buffer);
buffer.flip(); // Подготавливает буфер для чтения
System.out.println("Buffer data: " + new String(buffer.array()));
3. Асинхронное копирование файлов: копирование файлов асинхронно — отличный способ снизить нагрузку на главный поток.
AsynchronousFileChannel sourceChannel = AsynchronousFileChannel.open(Paths.get("source.txt"));
AsynchronousFileChannel destChannel = AsynchronousFileChannel.open(Paths.get("dest.txt"), StandardOpenOption.WRITE);
sourceChannel.transferTo(0, sourceChannel.size(), destChannel);
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥6
📖 Java задачи по основам программирования
⬇️ Скачать книгу
📣 Java Ready | #книга
Сборник практических упражнений, который помогает освоить программирование на Java через решение задач разного уровня сложности.
Автор: Капель Е.
Год: 2019
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3🤝3
Сериализация в Java — это процесс преобразования объекта в последовательность байтов для его сохранения или передачи.
Этот механизм позволяет сохранять состояние объектов и восстанавливать его позже, что особенно полезно для работы с файлами и сетевыми соединениями.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13🤝9👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Voqal — это программный ассистент, созданный для разработчиков, стремящихся повысить продуктивность с помощью программирования на естественном языке. С помощью Voqal можно голосом навигировать, писать, запускать и отлаживать код в средах JetBrains.
📌 Ссылочка: https://voqal.dev/
👉 Java Ready | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7👍3🔥3
Когда хочется оптимизировать работу с HashMap, методы computeIfAbsent и merge становятся незаменимыми!
•
computeIfAbsent
— добавляет значение только если ключ отсутствует, что идеально для создания списков или накопления данных по новым ключам без лишних проверок.•
merge
— с другой стороны, позволяет объединить старое значение с новым для существующего ключа, например, обновляя счётчики или суммируя значения.🔥 — если узнал новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16🤝5👍4
👎2
Шпаргалка по основным методам работы с коллекциями в Java включает часто используемые методы для управления, фильтрации, сортировки и преобразования коллекций, помогая быстро ориентироваться в функционале Java Collections Framework.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍5🤝5👎1
В Java сборщик мусора освобождает память, но иногда объекты всё равно «застревают» в памяти, что приводит к утечкам. Одним из эффективных способов предотвращения этого является использование WeakReference.
WeakReference позволяет ссылаться на объект без блокировки его сборщиком мусора. Если объект имеет только слабые ссылки, сборщик может его освободить. Пример создания слабой ссылки:
WeakReference<MyObject> weakReference = new WeakReference<>(new MyObject());
Теперь, если к MyObject не будет других сильных ссылок, сборщик сможет освободить его.
Как проверить и использовать WeakReference?
Чтобы использовать объект, на который указывает WeakReference, сначала убедитесь, что он не был собран сборщиком мусора:
MyObject obj = weakReference.get();
if (obj != null) {
// Объект еще в памяти
obj.performTask();
} else {
// Объект освобожден
}
Пример применения: кеширование данных
Использование слабых ссылок полезно для кеширования, так как сборщик может автоматически очистить кэшированные данные, если в памяти возникнет нехватка:
Map<String, WeakReference<Data>> cache = new HashMap<>();
Data data = fetchData("item1");
cache.put("item1", new WeakReference<>(data));
Если data больше нигде не используется, сборщик освободит его при необходимости.
Жми 🔥 если понравился пост
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍2🤝2
📖 Современный язык Java
⬇️ Скачать книгу
📣 Java Ready | #книга
Книга охватывает все аспекты работы с Java, начиная с основ и заканчивая сложными темами, такими как многопоточность, обработка исключений и работа с сетью.
Автор: Марио Фуско
Год: 2020
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3👎1
В этом посте рассмотрели работу с многопоточностью в Java и создание параллельных потоков для повышения производительности:
• Создание и запуск потоков
• Управление потоками с помощью ExecutorService
• Синхронизация и безопасность данных
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥9🤝9