cookie

We use cookies to improve your browsing experience. By clicking «Accept all», you agree to the use of cookies.

avatar

Библиотека Java разработчика

Библиотека Java разработчика. Java, Spring, Maven, Hibernate По всем вопросам @evgenycarter

Show more
Advertising posts
11 283
Subscribers
-624 hours
-267 days
-12230 days

Data loading in progress...

Subscriber growth rate

Data loading in progress...

Photo unavailableShow in Telegram
♨️ Хотите добиться максимальной производительности от своих Java-проектов? Научитесь искусству измерения производительности и оптимизации кода на нашем увлекательном онлайн-уроке. Забудьте о гадании и предположениях! На этом вебинаре мы расскажем вам о мощном инструменте Java Microbenchmark Harness (JMH) и его области применения. Вместе мы разберем работу с производительными тестами и сравнением различных алгоритмов. Вебинар будет полезен как Java-разработчикам, которые ищут лучшие практики для оптимизации кода, так и тестировщикам, специализирующимся на нагрузочном тестировании. Спикер — Tech Lead в одном из крупнейших российских банков и кандидат технических наук. Готовы стать мастером производительности в Java? ➡️ Регистрируйтесь прямо сейчас и откройте новый уровень эффективности в своих проектах: https://vk.cc/cykdYt Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Show all...
Зачем выбирать ReentrantLock вместо synchronized? Объект класса ReentrantLock решает те же задачи, что и блок synchronized. Поток висит на вызове метода lock() в ожидании своей очереди занять этот объект. Владеть локом, как и находиться внутри блока synchronized может только один поток одновременно. unlock(), подобно выходу из блока синхронизации, освобождает объект-монитор для других потоков. В отличие от блока синхронизации, ReentrantLock дает расширенный интерфейс для получения информации о состоянии блокировки. Методы лока позволяют еще до блокировки узнать, занят ли он сейчас, сколько потоков ждут его в очереди, сколько раз подряд текущий поток завладел им. Шире и возможные режимы блокировки. Кроме обычного ожидающего lock(), вариант tryLock() с параметром ожидает своей очереди только заданное время, а без параметра – вообще не ждет, а только захватывает свободный лок. Еще одно отличие – свойство fair. Лок с этим свойством обеспечивает «справедливость» очереди: пришедший раньше поток захватывает объект раньше. Блок synchronized не дает никаких гарантий порядка. 👉@BookJava
Show all...
👍 6😁 1
How-to Build Custom Java Runtimes with Jlink. Видео о создании пользовательского образа среды выполнения с помощью инструмента командной строки jlink. Создается образ, который содержит только те модули, которые нужны приложению, что уменьшает размер приложения и повышает безопасность. https://www.youtube.com/watch?v=mJKlxqQQeyI&t=52s 👉@BookJava
Show all...
How-to Build Custom Java Runtimes with Jlink

*Jlink* is a powerful tool in the JDK for creating custom runtimes based on the modules an application needs to run. In this video, we will introduce the key concepts and benefits of using jlink and go through five steps covering the key features used when creating a custom runtime. The code used in this video can be found in this Github Repo ➱

https://github.com/java/samples/tree/main/intro-to-jlink

*Chapters* 0:00 intro 1:11 Basics of jlink 2:35 Using JDeps 3:43 Adding Non-JDK Modules to an Image 5:25 Adding Explicit Modules to an Image 7:26 Additional Image Customization Options 8:44 Conclusion *Resources* - The jlink Command ➱

https://docs.oracle.com/en/java/javase/21/docs/specs/man/jlink.html

- jlink tutorial ➱

https://dev.java/learn/jvm/tools/core/jlink/

- Overview of "almost all" Java modules published at Maven Central ➱

https://github.com/sormuras/modules

- Dev.java ➱

https://dev.java

- Inside.java ➱

https://inside.java

*Tags* #Java #Cloud #OpenJDK #JDK #JVM #InsideJava

2
Photo unavailableShow in Telegram
👩‍💻 Интеграционные тесты контроллеров, интеграций с внешними API и безопасности. Ждём вас на третьем занятии серии открытых практических уроков по тестированию Spring-приложений от OTUS, где мы: - рассмотрим специфику тестирования классических и REST-контроллеров и интеграций с внешними API; - уделим внимание тому, как проверить, что все конечные точки нашего приложения действительно защищены; - ответим на все возникающие вопросы. Спикер — Senior Software Engineer, опытный преподаватель и руководитель курса. Встречаемся 16 июля в 20:00 мск в преддверии старта курса «Разработчик на Spring Framework». Все участники вебинара получат специальную цену на обучение! ➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок и получить записи предыдущих вебинаров серии: https://vk.cc/cygmcP Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Show all...
🥰 2
Устойчивость микросервисных Spring приложений: роль аннотации Transactional в предотвращении утечки соединений В любом микросервисе четкое управление взаимодействием с базой данных является ключевым фактором для поддержания производительности приложения и его надежности на должном уровне. Обычно мы натыкаемся на странные проблемы с подключением к базе данных во время тестирования производительности. Недавно мы обнаружили критическую проблему внутри слоя репозиториев в нашем микросервисном Spring приложении: неправильная обработка исключения приводила к неожиданным сбоям и нарушению работы сервиса во время тестирования производительности. Эта статья представляет собой анализ проблемы и рассказывает, как она была решена с помощью аннотации @Transactional. Микросервисные Spring приложения сильно зависят от стабильного и эффективного взаимодействия с базой данных, которое часто осуществляется через Java Persistence API (JPA). Для поддержания высокой производительности важно правильно управлять пулом соединений и предотвращать утечки соединений, чтобы взаимодействие с базой данных не снижало производительность приложения. https://habr.com/ru/companies/spring_aio/articles/827642/ 👉@BookJava
Show all...
Устойчивость микросервисных Spring приложений: роль аннотации @Transactional в предотвращении утечки соединений

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

5👍 3👏 1
Как из Java приложения запустить другую программу? Самый простой и базовый способ – с помощью метода Runtime.getRuntime().exec(). В качестве параметра ему передается строка системной команды. Опциональные можно передать рабочую директорию, и переменные окружения в виде массива строк "имя=значение". Если команде нужны аргументы, они передаются либо массивом, либо в той же строке команды через пробелы. Рекомендуемый, и более управляемый способ – использование класса ProcessBuilder. Он же применяется внутри метода exec. Билдер дает, например, средства для использования в команде пайплайнов и редиректов ввода-вывода. В результате запуска команды создается объект класса Process. Его можно сконвертировать в более современный (Java 9+) и функциональный ProcessHandle. Через эти объекты идет работа с вводом-выводом процесса, его характеристиками и статусом. Команда запускается в отдельном подпроцессе операционной системы. Это значит, что лозунг «Write once, run anywhere» перестает здесь работать – ваша программа становится платформо-зависимой. Обращение к ОС, а тем более выделение нового процесса обычно занимает немало ресурсов компьютера. Запуск внешних программ не считается плохой практикой, но всё-таки при возможности стоит его избегать. 👉@BookJava
Show all...
🥰 2👍 1
Photo unavailableShow in Telegram
Оплачиваемая стажировка и трудоустройство без опыта — ну ничего себе 😳 Все возможно с Добровольным квалификационным экзаменом! Это бесплатный проект Правительства Москвы, где ты можешь показать свои знания по специальности, запомниться потенциальным работодателям и получить оффер в престижные компании Москвы. Тебя ждет всего три шага: 1️⃣ Пройди тест После регистрации на сайте ДКЭ тебе будет доступно 70 профессий по 7 направлениям. Выбирай тест по своей специальности и проверь уровень своих знаний! 2️⃣ Реши кейс Если ты успешно сдал тест, тебя пригласят на следующий этап, где ты с другими участниками в команде будешь решать реальный кейс одного из работодателей. 3️⃣ Стань победителем Окажись в числе лучших по общему количеству баллов за оба этапа и получи шанс попасть на оплачиваемую стажировку с дальнейшим трудоустройством. Готов проявить себя? Регистрируйся и начинай проходить тест — https://dke.moscow Реклама. АНО "РАЗВИТИЕ ЧЕЛОВЕЧЕСКОГО КАПИТАЛА", АНО "РЧК". ИНН 7710364647. erid: LjN8KWtNV
Show all...
🤡 1
Как используется метод Lock.newCondition()? Если реализации интерфейса Lock представляют высокоуровневую альтернативу блока synchronized, то реализации его спутника, интерфейса Conditionальтернатива методам notify/wait. Оба этих интерфейса относятся к пакету java.util.concurrent.locks. Как и ожидание на мониторе, Condition реализует примитив синхронизации «Условная переменная». Один или несколько потоков зависают на объекте-кондишне с помощью варианта метода await (ждут удовлетворения условия). Другой поток пробуждает их методами signal и signalAll (сигнализирует об удовлетворении условия). Конкретные реализации Condition всегда решают те же задачи, что блокировка на мониторе, но в теории могут отличаться в нюансах поведения. Например, может не быть требования вызывать ожидание/сигнал только при захваченном локе (аналог требования, по которому notify/wait всегда вызываются в synchronized). Или может гарантироваться порядок получения сигнала ожидающими потоками. Возвращаясь к поставленному вопросу, Condition всегда связан со своим объектом типа Lock, и метод Lock.newCondition() – единственный правильный способ создания кондишна. 👉@BookJava
Show all...
👍 7
Шпаргалка по Java 👉@BookJava
Show all...
👍 4💩 4🎉 2
Photo unavailableShow in Telegram
👩‍💻 Тест по Java от OTUS Проверь насколько хорошо ты знаешь Java и готов освоить Spring! Ответишь — пройдешь на продвинутый курс "Разработчик на Spring Framework" от OTUS по специальной цене. ➡️ ПРОЙТИ ТЕСТ: https://vk.cc/cy8cfC 🎫 Курс можно приобрести в рассрочку Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Show all...
Choose a Different Plan

Your current plan allows analytics for only 5 channels. To get more, please choose a different plan.