Forwarded from Библиотека C/C++ разработчика | cpp, boost, qt
📧 Отклик на вакансию по email: как сделать так, чтобы ваше письмо выделялось
Вы отправляете десятки откликов на вакансии, но не получаете ответа? Возможно, дело в том, как вы пишете свои письма. Узнайте, какие ошибки могут стоить вам работы мечты и как их избежать.
👉 Статья
Вы отправляете десятки откликов на вакансии, но не получаете ответа? Возможно, дело в том, как вы пишете свои письма. Узнайте, какие ошибки могут стоить вам работы мечты и как их избежать.
👉 Статья
😎😎 Запуск встроенного LDAP на базе OpenDJ в Spring Boot приложении
В статье происходит настройка Spring Boot приложения со встроенным LDAP на базе LDAP сервера с открытым исходным кодом OpenDJ. Это может понадобиться как для тестов, так и для продуктивного использования. Например, для аутентификации через LDAP.
Читать статью
#туториал
В статье происходит настройка Spring Boot приложения со встроенным LDAP на базе LDAP сервера с открытым исходным кодом OpenDJ. Это может понадобиться как для тестов, так и для продуктивного использования. Например, для аутентификации через LDAP.
Читать статью
#туториал
Очередной #дайджест для джавистов
⬅️ JEP 479: Remove the Windows 32-bit x86 Port — перешел в статус Candidate. Удаление кода, связанного с Windows 32-bit, должно упростить сборку и тестирование инфраструктуры JDK
⬅️ IntelliJ IDEA 2024.2 EAP Is Open — новая вкладка Performance в окне Run; запуск тестов прямо во время индексирования; автоматическое разрешение конфликтов import-ов
⬅️ Chimney — стабильная battle-tested библиотека Scala для преобразования данных
⬅️ Lagom is approaching end of life: возможные пути миграции — Lightbend прекращают поддержку своего фреймворка + на что можно переехать, заодно проведя рефакторинг проекта
⬅️ Introduction to JDK Mission Control — узнаете, что это за инструмент, как с его помощью анализировать поведение Java-приложения + ссылка на репозиторий с кодом примера
⬅️ JEP 479: Remove the Windows 32-bit x86 Port — перешел в статус Candidate. Удаление кода, связанного с Windows 32-bit, должно упростить сборку и тестирование инфраструктуры JDK
⬅️ IntelliJ IDEA 2024.2 EAP Is Open — новая вкладка Performance в окне Run; запуск тестов прямо во время индексирования; автоматическое разрешение конфликтов import-ов
⬅️ Chimney — стабильная battle-tested библиотека Scala для преобразования данных
⬅️ Lagom is approaching end of life: возможные пути миграции — Lightbend прекращают поддержку своего фреймворка + на что можно переехать, заодно проведя рефакторинг проекта
⬅️ Introduction to JDK Mission Control — узнаете, что это за инструмент, как с его помощью анализировать поведение Java-приложения + ссылка на репозиторий с кодом примера
❗️Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉 авторов в наше медиа proglib.io
👉 контент-менеджеров для ведения телеграм-каналов
Подробности тут.
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
Подробности тут.
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код выше?
Anonymous Quiz
28%
Ошибку при выполнении
19%
Equal
24%
Ошибку при компиляции
29%
Not equal
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
#воросы_с_собеседования
Зачем выбирать ReentrantLock вместо synchronized?
Объект класса ReentrantLock решает те же задачи, что и блок synchronized. Поток висит на вызове метода lock() в ожидании своей очереди занять этот объект. Владеть локом, как и находиться внутри блока synchronized может только один поток одновременно. unlock(), подобно выходу из блока синхронизации, освобождает объект-монитор для других потоков.
В отличие от блока синхронизации, ReentrantLock дает расширенный интерфейс для получения информации о состоянии блокировки. Методы лока позволяют еще до блокировки узнать, занят ли он сейчас, сколько потоков ждут его в очереди, сколько раз подряд текущий поток завладел им.
Шире и возможные режимы блокировки. Кроме обычного ожидающего lock(), вариант tryLock() с параметром ожидает своей очереди только заданное время, а без параметра — вообще не ждет, а только захватывает свободный лок.
Еще одно отличие — свойство fair. Лок с этим свойством обеспечивает «справедливость» очереди: пришедший раньше поток захватывает объект раньше. Блок synchronized не дает никаких гарантий порядка.
Зачем выбирать ReentrantLock вместо synchronized?
Объект класса ReentrantLock решает те же задачи, что и блок synchronized. Поток висит на вызове метода lock() в ожидании своей очереди занять этот объект. Владеть локом, как и находиться внутри блока synchronized может только один поток одновременно. unlock(), подобно выходу из блока синхронизации, освобождает объект-монитор для других потоков.
В отличие от блока синхронизации, ReentrantLock дает расширенный интерфейс для получения информации о состоянии блокировки. Методы лока позволяют еще до блокировки узнать, занят ли он сейчас, сколько потоков ждут его в очереди, сколько раз подряд текущий поток завладел им.
Шире и возможные режимы блокировки. Кроме обычного ожидающего lock(), вариант tryLock() с параметром ожидает своей очереди только заданное время, а без параметра — вообще не ждет, а только захватывает свободный лок.
Еще одно отличие — свойство fair. Лок с этим свойством обеспечивает «справедливость» очереди: пришедший раньше поток захватывает объект раньше. Блок synchronized не дает никаких гарантий порядка.
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🔧🔧 Альтернатива ушедшей JetBrains: российские программисты получили доступ к отечественной среде разработки GIGA IDE
1 июля ряд СМИ написали, что компания JetBrains без предупреждения отключила российских программистов от одной из самых известных сред разработки на Java — IntelliJ IDEA. В качестве альтернативы российским пользователям доступна отечественная интегрированная среда разработки GIGA IDE, которую СберТех представил на технологической конференции GigaConf 2024. В свете последних событий этот обзор будет особенно актуальным, поэтому предлагаем скорее погрузиться и подробно разобрать, что такое GIGA IDE и что еще доступно пользователям платформы для работы с исходным кодом GitVerse.
Читать статью
1 июля ряд СМИ написали, что компания JetBrains без предупреждения отключила российских программистов от одной из самых известных сред разработки на Java — IntelliJ IDEA. В качестве альтернативы российским пользователям доступна отечественная интегрированная среда разработки GIGA IDE, которую СберТех представил на технологической конференции GigaConf 2024. В свете последних событий этот обзор будет особенно актуальным, поэтому предлагаем скорее погрузиться и подробно разобрать, что такое GIGA IDE и что еще доступно пользователям платформы для работы с исходным кодом GitVerse.
Читать статью
Можно ли считать Final переменную константой?
Поскольку не выйдет присвоить новое значение final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.
А если тип данных mutable, то при помощи методов и переменных можно будет изменить значение объекта, на который ссылается final переменная, и назвать ее константой нельзя. На примере видно, что часть финальных переменных константы, а часть можно изменить.
Поскольку не выйдет присвоить новое значение final переменной, кажется, что это переменные константы. Но это только на первый взгляд. Если тип данных, на который ссылается переменная — immutable, то да, это константа.
А если тип данных mutable, то при помощи методов и переменных можно будет изменить значение объекта, на который ссылается final переменная, и назвать ее константой нельзя. На примере видно, что часть финальных переменных константы, а часть можно изменить.
#дайджест перед выходными
❎ Введение в JobRunr — библиотека для распределенного планирования задач в Java-приложении
❎ Mill — инструмент для сборки на Scala, аналог SBT, Maven и Gradle
❎ JEP 467 направлен в Java 23 — позволяет записывать комментарии к документации JavaDoc в Markdown, а не только в виде смеси HTML и JavaDoc @-тегов
❎ Functional Parallel Programming in the wild — классная статья о создании небольшого веб-сервиса с нуля. Отлично зайдет как подробный разбор pet-проекта всем новичкам
❎ Новый компилятор K2 в Kotlin — процесс миграции с компилятора Kotlin старой версии на новый компилятор K2
❎ Введение в JobRunr — библиотека для распределенного планирования задач в Java-приложении
❎ Mill — инструмент для сборки на Scala, аналог SBT, Maven и Gradle
❎ JEP 467 направлен в Java 23 — позволяет записывать комментарии к документации JavaDoc в Markdown, а не только в виде смеси HTML и JavaDoc @-тегов
❎ Functional Parallel Programming in the wild — классная статья о создании небольшого веб-сервиса с нуля. Отлично зайдет как подробный разбор pet-проекта всем новичкам
❎ Новый компилятор K2 в Kotlin — процесс миграции с компилятора Kotlin старой версии на новый компилятор K2
📉📊 Markdown в IntelliJ IDEA как отдельный вид искусства. Рисуем диаграммы и вызываем bash команды
Spring разработчики часто пишут документацию и README/HELP файлы к своим приложениям. Часто это делается в Markdown файлах. Markdown плагин в IntelliJ IDEA распознает файлы, предоставляет специальный редактор с подсветкой, автокомплитом и форматированием, а также дает визуальное отображение в панели предварительного просмотра в реальном времени. Кроме стандартной функциональности в IntelliJ IDEA есть пара уникальных фич, которые описываются в данной статье.
#туториал
Spring разработчики часто пишут документацию и README/HELP файлы к своим приложениям. Часто это делается в Markdown файлах. Markdown плагин в IntelliJ IDEA распознает файлы, предоставляет специальный редактор с подсветкой, автокомплитом и форматированием, а также дает визуальное отображение в панели предварительного просмотра в реальном времени. Кроме стандартной функциональности в IntelliJ IDEA есть пара уникальных фич, которые описываются в данной статье.
#туториал
Как используется метод Lock.newCondition()?
Если реализации интерфейса Lock представляют высокоуровневую альтернативу блока synchronized, то реализации его спутника, интерфейса Condition — альтернатива методам notify/wait. Оба этих интерфейса относятся к пакету java.util.concurrent.locks.
Condition реализует примитив синхронизации «Условная переменная». Один или несколько потоков зависают на объекте-кондишне с помощью варианта метода await (ждут удовлетворения условия). Другой поток пробуждает их методами signal и signalAll (сигнализирует об удовлетворении условия).
Конкретные реализации Condition всегда решают те же задачи, что блокировка на мониторе, но в теории могут отличаться в нюансах поведения. Например, может не быть требования вызывать ожидание/сигнал только при захваченном локе (аналог требования, по которому notify/wait всегда вызываются в synchronized). Или может гарантироваться порядок получения сигнала ожидающими потоками.
Если реализации интерфейса Lock представляют высокоуровневую альтернативу блока synchronized, то реализации его спутника, интерфейса Condition — альтернатива методам notify/wait. Оба этих интерфейса относятся к пакету java.util.concurrent.locks.
Condition реализует примитив синхронизации «Условная переменная». Один или несколько потоков зависают на объекте-кондишне с помощью варианта метода await (ждут удовлетворения условия). Другой поток пробуждает их методами signal и signalAll (сигнализирует об удовлетворении условия).
Конкретные реализации Condition всегда решают те же задачи, что блокировка на мониторе, но в теории могут отличаться в нюансах поведения. Например, может не быть требования вызывать ожидание/сигнал только при захваченном локе (аналог требования, по которому notify/wait всегда вызываются в synchronized). Или может гарантироваться порядок получения сигнала ожидающими потоками.
Что такое класс Object? Какие в нем есть методы?
Object это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object и, соответственно, наследуют его методы:
public boolean equals(Object obj) — служит для сравнения объектов по значению;
int hashCode() — возвращает hash код для объекта;
String toString() — возвращает строковое представление объекта;
Class getClass() — возвращает класс объекта во время выполнения;
protected Object clone() — создает и возвращает копию объекта;
void notify() — возобновляет поток, ожидающий монитор;
void notifyAll() — возобновляет все потоки, ожидающие монитор;
void wait() — остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout, int nanos) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
protected void finalize() — может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.
#вопросы_с_собеседований
Object это базовый класс для всех остальных объектов в Java. Любой класс наследуется от Object и, соответственно, наследуют его методы:
public boolean equals(Object obj) — служит для сравнения объектов по значению;
int hashCode() — возвращает hash код для объекта;
String toString() — возвращает строковое представление объекта;
Class getClass() — возвращает класс объекта во время выполнения;
protected Object clone() — создает и возвращает копию объекта;
void notify() — возобновляет поток, ожидающий монитор;
void notifyAll() — возобновляет все потоки, ожидающие монитор;
void wait() — остановка вызвавшего метод потока до момента пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
void wait(long timeout, int nanos) — остановка вызвавшего метод потока на определённое время или пока другой поток не вызовет метод notify() или notifyAll() для этого объекта;
protected void finalize() — может вызываться сборщиком мусора в момент удаления объекта при сборке мусора.
#вопросы_с_собеседований
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Работа с коллекциями с помощью Streams
Java Streams позволяют легко и эффективно работать с коллекциями данных, такими как списки, используя функциональный подход.
👀 Этот простой пример показывает, как с помощью Streams можно легко фильтровать и преобразовывать данные в коллекциях, делая код более лаконичным и понятным.
Java Streams позволяют легко и эффективно работать с коллекциями данных, такими как списки, используя функциональный подход.
👀 Этот простой пример показывает, как с помощью Streams можно легко фильтровать и преобразовывать данные в коллекциях, делая код более лаконичным и понятным.
💥💥 Обновление Java с 17 на 21: через тернии к звездам
В докладе автор расскажет, с какими проблемами и препятствиями столкнулся при обновлении продукта на новую LTS версию Java. Также поделится мыслями, зачем вообще стоит обновляться.
Доклад будет полезен разработчикам и техлидам, которые задумываются или уже планируют миграцию их систем на Java 21.
Смотреть
#видео
В докладе автор расскажет, с какими проблемами и препятствиями столкнулся при обновлении продукта на новую LTS версию Java. Также поделится мыслями, зачем вообще стоит обновляться.
Доклад будет полезен разработчикам и техлидам, которые задумываются или уже планируют миграцию их систем на Java 21.
Смотреть
#видео