Flyweight — это структурный паттерн проектирования, который позволяет кэшировать и переиспользовать объекты для экономии памяти. Часто применяется в библиотеках, работающих с графикой или большими объемами данных, чтобы оптимизировать потребление ресурсов.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤🔥2
Jodd — это набор утилит и инструментов для Java, который содержит множество полезных компонентов для работы с JSON, HTTP, Email, файловой системой и многим другим. В отличие от узкоспециализированных библиотек, Jodd предоставляет универсальные и лёгкие в использовании утилиты для повседневных задач.
• Jodd — отличный выбор, если вам нужен набор небольших и эффективных инструментов для решения повседневных проблем в Java-программировании.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Виртуальные потоки Java 21 — чувак, где мой lock?
Как показывает опыт Netflix, использование виртуальных потоков, представленных в Java 21, может спровоцировать возникновение неожиданных проблем. В новом переводе от команды Spring АйО мы подробно...
👍4
Шпаргалка по основам Java с примерами кода.
В ней есть всё, что может пригодиться начинающему разработчику.
Оригинал в хорошем качестве можно взять тут
Java Learning👩💻
В ней есть всё, что может пригодиться начинающему разработчику.
Оригинал в хорошем качестве можно взять тут
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥8👍2😢1
ReentrantReadWriteLock — это механизм синхронизации из пакета java.util.concurrent.locks, который позволяет разделить блокировки на чтение и запись. Благодаря этому множество потоков могут одновременно читать данные, но запись блокирует все другие операции. Это оптимизирует доступ к ресурсу, когда операции чтения преобладают над операциями записи.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤🔥1
ConcurrentLinkedDeque — это неблокирующая двухсторонняя очередь, которая обеспечивает высокую производительность в многопоточных средах. Она позволяет добавлять и удалять элементы с обоих концов, при этом сохраняя потокобезопасность.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤🔥1
#Вопросы_с_собеседования
🎙️ Какие два класса не наследуются от Object?
Ответ:
Не ведитесь на провокации, нет таких классов: все классы прямо или через предков наследуются от класса Object!
Java Learning👩💻
Ответ:
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31😁14🤔2❤🔥1😢1🎄1
Что такое "false sharing" в многопоточном Java-приложении и как его можно избежать?
Ответ
public class Main {
private static class Counter {
// Добавляем дополнительные поля для выравнивания
private long p1, p2, p3, p4, p5, p6, p7;
public volatile long count = 0;
private long q1, q2, q3, q4, q5, q6, q7;
}
public static void main(String[] args) throws InterruptedException {
Counter counter = new Counter();
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 1_000_000; i++) {
counter.count++;
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 1_000_000; i++) {
counter.count++;
}
});
thread1.start();
thread2.start();
thread1.join();
thread2.join();
System.out.println("Итоговое значение: " + counter.count);
}
}
// Результат выполнения:
// Итоговое значение: 2000000
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤🔥2😱2
Hutool — это универсальная библиотека Java с множеством утилит для работы с датами, файлами, HTTP-запросами, кэшированием и многим другим. Она разработана для облегчения повседневных задач и улучшения производительности.
• В отличие от других библиотек, Hutool имеет богатый набор функций, интегрированных в единую библиотеку.• Hutool — отличный выбор, если вы ищете многофункциональный инструмент для решения повседневных задач в Java.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥7👍5
Scoped Values — новая функциональность в Java 21, позволяющая безопасно и эффективно передавать неизменяемые данные между потоками и методами. Они предоставляют более простой и безопасный API по сравнению с ThreadLocal, уменьшая риск утечек памяти и ошибок, связанных с потоками.
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥6👍5
Jsoup позволяет загружать HTML-страницы, разбирать их и выбирать элементы с использованием CSS-селекторов, а также безопасно изменять и генерировать HTML-код. Это отличный инструмент для задач парсинга веб-страниц, обработки HTML-контента и веб-скрапинга.
• Jsoup — идеальный выбор для тех, кому нужно быстро и безопасно работать с HTML в Java.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥1
StackWalker — это новое API, введенное в Java 9, которое позволяет легко и эффективно работать с информацией о стеке вызовов.
В отличие от устаревших методов, таких как
Thread.getStackTrace(), StackWalker предоставляет гибкий и производительный способ получения информации о стеке, поддерживая фильтрацию и построчную обработку.Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤🔥2
Что такое "backpressure" в реактивных системах на Java, и как его можно обработать?
Ответ
import java.util.concurrent.Flow;
public class BackpressureExample {
public static void main(String[] args) {
MyPublisher publisher = new MyPublisher();
MySubscriber subscriber = new MySubscriber();
publisher.subscribe(subscriber);
}
}
class MyPublisher implements Flow.Publisher<Integer> {
@Override
public void subscribe(Flow.Subscriber<? super Integer> subscriber) {
subscriber.onSubscribe(new Flow.Subscription() {
@Override
public void request(long n) {
for (int i = 1; i <= n; i++) {
subscriber.onNext(i);
}
subscriber.onComplete();
}
@Override
public void cancel() {
}
});
}
}
class MySubscriber implements Flow.Subscriber<Integer> {
private Flow.Subscription subscription;
@Override
public void onSubscribe(Flow.Subscription subscription) {
this.subscription = subscription;
subscription.request(5); // Запрашиваем 5 элементов
}
@Override
public void onNext(Integer item) {
System.out.println("Получен элемент: " + item);
}
@Override
public void onError(Throwable throwable) {
System.err.println("Ошибка: " + throwable.getMessage());
}
@Override
public void onComplete() {
System.out.println("Все элементы получены.");
}
}
Java Learning
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8😱2🎄1