TGViewer
Channel Public Channel
Java Developer

Java Developer

@java_tg

Авторский канал действующего разработчика — интересные заметки, новые технологии, библиотеки и фреймворки

Сотрудничество: @bape_ads
Прайс: @bape_media

РКН: https://clck.ru/3GHfTK

Реклама на бирже: https://telega.in/c/java_tg
Subscribers
14.8K
Photos
2.2K
Videos
162
Links
2.5K

Showing posts older than #3154 · Back to latest

Older Posts 20 shown
Post #3153 3.36K
Полностью оправдан!

📱 Java Developer | #memes
  • 😁 23
  • ❤ 7
  • 🔥 2
Post #3151 3.56K
👩‍💻 Введение в многопоточность в Java

В видео разбирается базовая теория многопоточности и принципы работы потоков в Java, включая создание, запуск и особенности их поведения.

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

📱 Смотреть на YouTube

tags: #полезное

📱 Java Developer | Чат
  • ❤ 9
  • 🔥 4
  • 👍 3
Post #3150 3.1K
❔ Вопрос с собеседования

Каково худшее время работы метода contains() для элемента, который есть в ArrayList?

Ответ: O(N). Время поиска элемента линейно пропорционально количеству элементов в списке.

tags: #собеседование

📱 Java Developer | Чат
  • 👍 16
  • ❤ 5
Post #3148 3.51K
А ведь действительно...

📱 Java Developer | #memes
  • 🤣 29
  • ❤ 6
  • 😁 5
Post #3147 3.5K
👩‍💻 Обработка исключений в функциональном стиле

В статье рассматривается библиотека Try<T>, созданная автором для элегантной работы с исключениями без явного try/catch, в духе функционального программирования.

Автор показывает, как интегрировать Try с Optional, Stream, цепочками recover и управлением ресурсами, чтобы писать чище и лаконичнее.

⛓ Читать статью

tags: #статья

📱 Java Developer | Чат
  • ❤ 4
  • 👍 4
  • 🔥 1
Post #3146 3.14K
  • 🔥 6
  • ❤ 5
  • 👍 1
  • 😁 1
Post #3142 3.1K
👩‍💻 MapStruct

MapStruct — генератор кода для маппинга между Java-классами (например, DTO и Entity).

Вместо ручного написания конвертеров вы описываете интерфейс, а реализация создаётся автоматически на этапе компиляции.

Зависимость Maven:
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>1.5.5.Final</version>
</dependency>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.5.5.Final</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>


Ускоряет разработку, избавляя от шаблонного и часто ошибочного кода при преобразовании объектов.

📱 Ссылка на GitHub
📁 Документация

tags: #полезное

📱 Java Developer | Чат
  • ❤ 8
  • 👍 6
  • 🔥 5
Post #3141 3.25K
❔ Вопрос с собеседования

Для чего используются статические блоки инициализации?

Ответ: Статические блоки инициализации однократно выполняются при инициализации класса — при первом обращении к классу. Они предназначены для выполнения кода, который должен выполниться до создания любых объектов этого класса и до вызова его конструкторов. Эти блоки принадлежат самому классу, а не его экземплярам, и обычно используются для сложной инициализации static-полей.

tags: #собеседование

📱 Java Developer | Чат
  • 👍 17
  • 🔥 6
  • ❤ 4
Post #3138 3.7K
👩‍💻 Spring Data JPA и Hibernate: ориентируемся на производительность. Часть 2

В статье показано, как сократить число SQL-запросов при работе с Spring Data JPA и Hibernate: от устранения лишних SELECT до борьбы с N+1.

Автор на примерах разбирает, когда использовать getReferenceById, @Version, fetch join и @DynamicUpdate, чтобы ускорить взаимодействие с базой и избежать скрытых тормозов.

⛓ Читать статью

🔖 Предыдущая часть — КЛИК


tags: #статья

📱 Java Developer | Чат
  • ❤ 6
  • 👍 2
  • 🔥 2
Post #3137 3.37K
❔ Вопрос с собеседования

Почему @Transactional не работает при вызове метода внутри того же класса?

Ответ: Spring активирует @Transactional через прокси, оборачивающие бины и перехватывающие внешние вызовы. Но если метод вызывается изнутри того же класса, прокси не используется — происходит прямой вызов, и аннотация не срабатывает.

Чтобы транзакция была активна, метод должен вызываться через прокси, например, путём внедрения собственного бина или получения его из ApplicationContext. Если требуется перехват внутренних вызовов, стоит использовать AspectJ — он работает на уровне байткода и не зависит от прокси-механизма.


tags: #собеседование

📱 Java Developer | Чат
  • 👍 15
  • ❤ 3
  • 🔥 1
Post #3135 3.43K
👩‍💻 Shutdown Hooks

Вы знали, что в Java можно задать поведение, которое сработает перед завершением работы приложения?

Для этого существует механизм shutdown hooks — потоки, которые JVM запускает при штатном завершении, например при вызове System.exit() или закрытии окна.

Thread hook = new Thread(() -> System.out.println("Shutting down, bye!"));
Runtime.getRuntime().addShutdownHook(hook);

Все зарегистрированные потоки запускаются параллельно, и JVM дожидается, пока они завершат выполнение.


Важно: при аварийном завершении — через kill -9, Runtime.halt() или при отключении питания — shutdown hooks не сработают.

❤ — если было полезно

tags: #обучение

📱 Java Developer | Чат
  • ❤ 33
  • 👍 4
  • 🔥 3
Post #3134 3.17K
  • 🤣 12
  • ❤ 4
  • 🔥 2
Post #3131 3.41K
👩‍💻 Как обобрать дерево в несколько потоков?

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

Автор показывает, как добиться ускорения в несколько раз с помощью рекурсивных, итеративных и многопоточных реализаций на базе ForkJoinPool.

⛓ Читать статью

tags: #статья

📱 Java Developer | Чат
  • 🔥 8
  • ❤ 4
  • 👍 3
Post #3130 3.27K
❔ Вопрос с собеседования

В чём различие между стеком и кучей в контексте многопоточности?

Ответ: Стек — это область памяти, выделяемая индивидуально для каждого потока. Он используется для хранения примитивов, локальных переменных и адресов возврата. Поскольку стек не разделяется между потоками, доступ к нему изолирован и не требует синхронизации.

Куча — это общая область памяти для всех потоков, где размещаются объекты, созданные с помощью new. Из-за совместного доступа к куче возможны гонки данных и проблемы видимости между потоками. Чтобы гарантировать корректность при многопоточном доступе, применяются механизмы синхронизации (synchronized, ReentrantLock, volatile, атомарные классы и др.).


tags: #собеседование

📱 Java Developer | Чат
  • ❤ 14
  • 👍 6
  • 🔥 3
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →