Библиотека джависта | Java, Spring, Maven, Hibernate
24.9K subscribers
1.86K photos
38 videos
42 files
2.64K links
Все самое полезное для Java-разработчика в одном канале.

Список наших каналов: https://yangx.top/proglibrary/9197

Обратная связь: @proglibrary_feedback_bot

По рекламе: @proglib_adv

РКН: https://gosuslugi.ru/snet/67a5bbda1b17b35b6c1a55c4
加入频道
✍️ Библиотека программиста» находится в поиске переводчика и автора оригинальных статей

Кто нужен?
● Энтузиасты, которые держат руку на пульсе, читают помимо книг зарубежные техноблоги
● Энтузиасты, которым есть что сказать

Тематика
● Java, C#
● В четырех случаях из пяти вы предлагаете тему статьи

Объем
● От 7 до 15 тыс. знаков без учета кода
● 3-4 статьи в месяц

Оплата
● 4к руб. за статью
● Перевод — 250 руб. за 1000 символов без учета кода
● В месяц выйдет ~16к руб.
● Работаем с самозанятыми (компенсируем налог), ИП

Тестовое задание
Автор: написать статью по Java или C#
Переводчик: перевести статью или часть статьи по Java или C#
● Тема: на ваше усмотрение
● ЦА: начинающие/джуны
● Объем: 5-7к символов без пробелов
● Не оплачивается

Не хочу выполнять тестовое задание
Если у вас есть опубликованные статьи, пришлите ссылки на них.

Я пишу «так себе», что делать?
Чтобы написать статью, которую не стыдно опубликовать, достаточно овладеть инфостилем. У нас есть бесплатный курс для начинающих копирайтеров «Статьи для IT: как объяснять и распространять значимые идеи». Время прохождения курса: 1-2 недели.

Где публикуется статья?

Статья публикуется на сайте proglib.io, в группе ВК (425к подписчиков), на канале «Библиотека джависта» (24к подписчиков) и в «Библиотека шарписта» (20к подписчиков).

Вакансию закроем 15 января. У вас есть время пройти курс и написать тестовое задание.

➡️ Заполнить анкету ⬅️
Интерфейс BlockingQueue

Интерфейс BlockingQueue используется для реализации очередей с блокировками.
Он позволяет безопасно работать с очередью из нескольких потоков.

Основные методы:
add(E e) — добавляет элемент в очередь, может выбросить исключение если очередь переполнена.
offer(E e) — добавляет элемент в очередь, возвращает false если очередь переполнена.
put(E e) — добавляет элемент в очередь, блокирует поток если очередь переполнена.
take() — извлекает и удаляет элемент из очереди, блокирует поток если очередь пуста.
poll() — извлекает и удаляет элемент из очереди, возвращает null если очередь пуста.
#код
📁💡 Где программисту взять идеи для портфолио

Портфолио — это классный способ впечатлить работодателей. Однако у большинства айтишников портфолио состоит из примерно одинаковых работ. Как правило, это «тудушки», калькуляторы и что-то в таком роде. Но таким удивить уже сложно.

Поэтому давайте разберемся, как собрать классное портфолио, а главное — где взять интересные идеи для пет-проектов.

🔗 Читать статью
Параллельные аккумуляторы

Кроме блокировок, Java Concurrent может предложить еще одну интересную функцию — параллельные аккумуляторы. LongAccumulator обновляет значение, используя предоставленную функцию. Это позволяет нам реализовать алгоритм без блокировок в ряде сценариев. Обычно это предпочтительнее чем AtomicLong, когда несколько потоков обновляют общее значение.

Для того чтобы создать аккумулятор, вам нужно указать в конструкторе два аргумента. Первый из них — это функция, используемая для вычисления результата аккумулятора. Обычно это метод sum. Второй параметр указывает начальное значение нашего аккумулятора.

Теперь давайте создадим LongAccumulator с начальным значением 10000а затем вызовем метод accumulate() из нескольких потоков.
#код
Тип Optional

Тип Optional используется для представления возможности отсутствия значения. Он обертывает другой тип данных и может содержать либо значение этого типа, либо быть пустым (null).

Этот код создает Optional объект, который может содержать строку. Если строка доступна, она будет возвращена; в противном случае будет возвращено значение «Default Value».

Использование Optional способствует более чистому и безопасному коду при работе с возможно отсутствующими значениями.
#код
Метод Math.random()

Используется для генерации случайного числа в диапазоне от 0.0 до 1.0. Различные диапазоны могут быть достигнуты с помощью арифметики.

Выше приведен пример выбора случайного числа в диапазоне от 0 до 10.
#код
📈 Обзор рынка труда в ИТ: III квартал 2023 года

В этой статье обсудим зарплату программистов в III квартале 2023 года, динамику вакансий, тенденции рынка труда в ИТ и многое другое. Присоединяйтесь!

Читать статью
Класс DataOutputStream и его методы

Поток DataOutputStream позволяет записывать примитивные данные в исходный код.

Если используйте объект DataOutputStream, то у Вас есть под рукой вспомогательные методы, которые можно использовать для записи потока или для выполнения других операций над потоком.

Все перечисленные методы можно просмотреть здесь.
#код
Получить атомное время из интернет-часов

Для получения атомного времени из интернет-часов в Java вы можете воспользоваться классом java.net.URL для выполнения HTTP-запроса к одному из сервисов времени, таким как «time.google.com». Затем вы можете обработать полученный ответ и извлечь атомное время.

Обратите внимание, что формат ответа от сервиса времени может различаться, и вам может потребоваться настроить метод parseAtomicTime для вашего конкретного сервиса. Подобные сервисы могут предоставлять атомное время в разных форматах, таких как ISO 8601 или Unix Timestamp.
#код
Могли бы вы придумать ситуацию, когда блок finally не будет выполнен?

— Если в блоке try вызвать метод System.exit(). Это приведет к немедленному завершению приложения, и блок finally пропускается.

— Если произойдет аварийное завершение JVM, например OutOfMemoryError. В этом случае JVM останавливается без выполнения finally.

— Если в блоке try выбрасывается исключение Error или его подклассы (например, StackOverflowError). Такие исключения обычно означают серьезную проблему, поэтому JVM не гарантирует выполнение finally.

— Если при выполнении кода в блоке try произошел deadlock. В этом случае поток зависает, и блок finally не выполняется.

— Если программа была принудительно остановлена, например, по kill -9 в Linux.
#вопросы_с_собеседований
Метод compareAndSwap()

Метод compareAndSwap() используется для атомарного обновления значения переменной.

Он позволяет изменить значение переменной только в том случае, если ее текущее значение совпадает с ожидаемым. Это помогает избежать состояния гонки при многопоточном доступе.

В примере мы объявляем AtomicInteger count и инициализируем его значением 0. Метод increment() сначала получает текущее значение в переменную currentValue, затем в цикле do-while вызывается compareAndSet, который проверяет равно ли текущее значение count значению currentValue, если да, то устанавливает новое значение currentValue + 1, если нет (значение изменилось другим потоком), то цикл повторяется.

Таким образом гарантируется атомарное инкрементирование переменной count.
#код
🔍Насколько легко «войти в айти»?

Мы продолжаем собирать ваши истории о смене профессии и трудоустройстве в IT, чтобы написать большую аналитическую статью.

👉Если вы еще не рассказывали о своем опыте, пройдите короткий опрос по ссылке.
Please open Telegram to view this post
VIEW IN TELEGRAM
System.nanoTime

System.nanoTime() возвращает текущее время в наносекундах.

Этот метод используется для измерения продолжительности выполнения небольших фрагментов кода.

В отличие от System.currentTimeMillis(), который возвращает время в миллисекундах, nanoTime() имеет более высокое разрешение и позволяет измерять очень короткие промежутки времени.

nanoTime() часто используется для:

— Замеров производительности.
— Измерения задержек в мультитрединге.
— Микробенчмаркинга.
— Определения интервалов между событиями в реальном времени.
#код
Как влияет модификатор static на класс/метод/поле?

Для класса — позволяет создать static-класс, экземпляры которого создавать нельзя. Используется для создания утилитных классов.

Для метода — делает метод статическим, то есть он может быть вызван без создания экземпляра класса.

Для поля — создает поле, общее для всех экземпляров класса. Статическое поле существует в единственном экземпляре для класса.

Если кратко, static позволяет создавать классы/методы/поля, связанные с классом, а не с экземпляром.
Это удобно, когда нужно реализовать утилитные классы или объекты, общие для всех экземпляров.
#вопросы_с_собеседований
Часто ли вы читаете официальную документацию? Предпочитаете ей сторонние обучающие статьи?
#интерактив
java.time.LocalDate

java.time.LocalDate — это класс из пакета java.time, введенного в Java 8, который предоставляет удобные средства для работы с датами в формате «год-месяц-день». Этот класс представляет собой дату без времени и без учета часовых поясов. Он используется для выполнения операций, связанных только с датами, без учета времени суток.
#код
Что такое Atomic types и зачем они нужны?

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

Атомарные операции — это операции, которые выполняются как единое целое и не могут быть прерваны. Это означает, что если поток начинает выполнять атомарную операцию, никакой другой поток не может видеть промежуточное состояние или изменять состояние, пока операция не будет завершена.

Atomic типы, такие как AtomicInteger, AtomicLong, AtomicBoolean и т. д., предоставляют методы для выполнения атомарных операций, таких как get(), set(), getAndSet(), compareAndSet() и т. д.

Они полезны в многопоточном программировании, когда необходимо обеспечить целостность данных при одновременном доступе к общим данным из нескольких потоков. Использование Atomic типов может помочь избежать ошибок синхронизации и улучшить производительность по сравнению с использованием блоков synchronized, так как они не требуют блокировки.
😺🐙 Как разобраться в Git: краткая инструкция для джунов

Расскажем, как Git хранит данные, отслеживает изменения и позволяет разработчикам управлять историей коммитов.
Чему вы бы хотели научиться? Расскажите в комментариях.
#интерактив
🔥 12 признаков выгорания или как понять, что вам пора в отпуск

Больше половины программистов страдают профессиональным выгоранием. Здесь может спасти отпуск. Но как понять, когда он нужен? В статье рассматривается 12 признаков, указывающих на то, что вам нужен отдых.

🔗 Читать статью
🔗 Зеркало
Please open Telegram to view this post
VIEW IN TELEGRAM