Библиотека джависта | 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
加入频道
Что такое «поток-демон» (daemon thread)?

Потоками-демонами называются потоки, работающие в фоновом режиме для нашей программы.

В Java процесс завершается тогда, когда завершается последний его поток. Даже если метод main() уже завершился, но еще выполняются порожденные им потоки, система будет ждать их завершения.
Однако это правило не относится к особому виду потоков — демонам. Если завершился последний обычный поток процесса, и остались только потоки-демоны, то они будут принудительно завершены и выполнение процесса закончится. Чаще всего потоки-демоны используются для выполнения фоновых задач, обслуживающих процесс в течение его жизни.
#вопросы_с_собеседований
Бинарный поиск в массивах

Допустим, мы хотим вставить новый элемент в отсортированную таблицу. Arrays.binarySearch() возвращает индекс ключа поиска, если он содержится в таблице. В противном случае она возвращает точку вставки, которую мы можем использовать для подсчета индекса для нового ключа: -(insertion point)-1. Более того, метод binarySearch является самым простым и эффективным методом поиска элемента в отсортированном массиве в Java.

Рассмотрим следующий пример. У нас есть таблица ввода с четырьмя элементами, упорядоченными по возрастанию. Мы хотели бы вставить номер 3 в эту таблицу. Вот как мы можем подсчитать индекс точки вставки.
Что означает CAP-теорема?

CAP-теорема, также известная как теорема Брюэра, является концептуальной основой для понимания распределенных систем.

Она была предложена в 2000 году Эриком Брюэром и формулирует три фундаментальных свойства, которые невозможно обеспечить одновременно в распределенной системе данных:
— Согласованность (Consistency);
— Доступность (Availability);
— Устойчивость к разделению (Partition tolerance).

Согласно CAP-теореме, в распределенной системе данных можно гарантировать только два из трех свойств:
— Согласованность и доступность (CA);
— Согласованность и устойчивость к разделению (CP);
— Доступность и устойчивость к разделению (AP).
Выбор между этими свойствами зависит от требований и характеристик конкретной системы и ее целей.
#вопросы_с_собеседований
Final класс

Нельзя расширять класс, объявленный как final. Проще говоря, никакой класс не может наследоваться от данного.

Прекрасным примером final класса в JDK является String. Первый шаг к созданию неизменяемого класса — пометить его как final, и тогда нельзя будет его расширить.
#код
Кто и в каких задачах быстрее? Coroutines, RxJava, Executor?

Вы когда-нибудь задумывались, какой из фреймворков для многопоточки самый быстрый? Я вроде и знал ответ, но задумывался периодически. В определённый момент сама судьба просто-напросто заставила меня взять и проверить. Так что если вам тоже всегда было это интересно, то я постарался протестировать, сравнить и предоставить результаты для вас.

Читать статью
Метод Math.pow()

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

Выше рассмотрен пример возведение числа в квадрат и куб.

Заметьте, для вывода на экран целого значения используется "%.0f", так как метод возвращает double значение.
#код
Предпочитаете улучшать навыки программирования в свободное время, читая статьи и просматривая видео, или обращаетесь к гайдам только по мере необходимости на работе? Расскажите в комментариях ⬇️
#интерактив
Империя красивых девочек. Как умные спам-боты зарабатывают в Telegram

Наверняка вам уже порядком надоели эти спамерские боты, оставляющие комментарии при помощи нейросетей. В статье автор постарался разобраться, для чего они нужны, как работают и как с ними бороться (спойлер — пока никак).

Читать статью
Узнаем IP-адрес своего компьютера

InetAddress.getLocalHost() используется для поиска частных IP - адресов, используемых в локальной сети или любой другой локальной сети.

Подробнее объяснение кода можно найти здесь.
Какой параметр запуска JVM используется для контроля размера стека потока?

-Xss
#вопросы_с_собеседований
Каков самый простой способ перевернуть ArrayList?

Ответ на картинке.

Другие способы это сделать можно найти здесь.
#код
🏗️ Ненужная сложность: почему мы неправильно проектируем программное обеспечение

В этой статье расскажем про причины неправильного проектирования ПО и предложим средства для устранения анти-шаблона ненужной сложности.

🔗 Основной сайт
🔗 Зеркало
👨‍💻🗺️ Кому в IT жить хорошо: Indeed опубликовал список из 19 наиболее востребованных спецов за рубежом в 2023 году

Рассказываем, кем нужно быть и какой стек начать изучать, чтобы жить в Кремниевой долине и зарабатывать от $150 000.

🔗 Основной сайт
🔗 Зеркало
Java Bean

JavaBeans - это стандартный подход к созданию переносимых и повторно используемых компонентов.
Они представляют собой классы, которые следуют определенным соглашениям и обеспечивают удобный способ управления состоянием и поведением объектов.

Основные характеристики JavaBeans:

1. Класс должен быть публичным и иметь открытый конструктор без аргументов.
2. Приватные поля класса должны быть доступны с помощью геттеров и сеттеров (getter и setter методы).
3. Класс должен быть сериализуемым, то есть должен реализовывать интерфейс Serializable.

JavaBeans также могут иметь дополнительные свойства, такие как события и методы уведомления, которые позволяют другим компонентам реагировать на изменения состояния.
Как разбить строку на подстроки по заданному разделителю?

Мы можем использовать метод split(String regex) для разделения строки на массив символов, используя в качестве разделителя регулярное выражение.

Метод split(String regex, int numOfStrings) является перегруженным методом для разделения строки на заданное количество строк. Мы можем использовать обратную черту для использования специальных символов регулярных выражений в качестве обычных символов.
#вопросы_с_собеседований
Скомпилируется ли код с картинки?

Да, код будет скомпилирован, потому что он следует спецификации функционального интерфейса, определяющей только один абстрактный метод. Второй метод, count, является методом по умолчанию, который не увеличивает количество абстрактных методов.
#вопросы_с_собеседований
Что такое метааннотации?

Аннотации, которые применяются к другим аннотациям. Все аннотации, которые не отмечены @Target или отмечены им, но содержат константу ANNOTATION_TYPE, также являются мета-аннотациями.
#код
Как не допустить сериализацию?

Чтобы не допустить автоматическую сериализацию можно переопределить private методы для создания исключительной ситуации NotSerializableException.

Любая попытка записать или прочитать этот объект теперь приведет к возникновению исключительной ситуации.
#код
Какие подкасты вы слушаете?
Расскажите в комментариях ⬇️
#интерактив
✍️ «Библиотека программиста» находится в поиске переводчика технических статей

Обязанности
• Перевод технических статей, документации и руководств с английского на русский язык.
• Редактирование и корректура переведенных текстов для обеспечения высокого качества и своевременной доставки переводов.

Что значит редактирование? Просто так взять DeepL и слово в слово перевести статью не получится?
• Не получится. Как правило, 10–40% текста — «вода». Переводчик должен убрать все лишнее и оставить главное, чтобы читатель не тратил время на чтение «забавной истории из жизни моего питомца, который внес неоценимый вклад в написание данного материала».

Мы предлагаем
• Удаленку.
• Официальное трудоустройство.
• Своевременную оплату за выполненную работу.

➡️ Заполнить анкету ⬅️

Я хорошо программирую, но пишу «так себе». Что делать?
Если вы хорошо программируете, но навыки письма немного отстают, пройдите наш бесплатный курс на Степике «Статьи для IT: как объяснять и распространять значимые идеи».