Обложка канала

Библиотека Java разработчика. Страница 32

9291 @BookJava

Библиотека Java разработчика. Книги по программированию на Java.

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

    Что такое и как создать daemon thread? Демон в широком значении – фоновая программа. В Java потоки-демоны имеют схожий смысл: это потоки для фоновых действий по обслуживанию основных потоков. Потоки не-демоны называются пользовательскими (user thread). Тред создается демоном, если его родитель демон. Свойство Java-треда isDaemon можно переключать в любой момент до старта потока. По сравнению с пользовательскими потоками демоны имеют меньший приоритет выполнения. Когда все пользовательские треды завершились, JVM завершает работу. Демоны не выполняют самостоятельных задач, поэтому не препятствуют остановке, программа завершается не дожидаясь окончания их работы. Daemon thread может быть полезен для таких действий, как инвалидация кэша, периодическая актуализация значений из внешних источников, освобождение неиспользуемых пользовательских ресурсов. #Многопоточность
    Демон (программа)

    компьютерная программа в системах класса UNIX

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

    Пройдите бесплатный онлайн-интенсив Skillbox по программированию, изучите востребованный язык Java и создайте первый проект под руководством опытного специалиста. Узнайте подробности: 👉https://clc.to/2Hz6nA. Сразу после регистрации отправим вам на почту чек-лист по знаниям и навыкам, которые необходимы backend-разработчику для трудоустройства. Почему изучать Java — это круто: 📌 Язык Java используют многие облачные и стриминговые сервисы. 📌 Некоторые крупные социальные сети написаны на Java. 📌 Java используют правительственные и научные организации. 📌 На Java пишут игры. Интенсив ведёт Даниил Пилипенко — основатель и директор центра подбора IT-специалистов SymbioWay. С 2004 года разрабатывает и руководит разработкой на Java, PHP и во фронтенде. Более 50 раз выступил на семинарах и конференциях. Подключайтесь к онлайн-интенсиву с 23 по 25 июня в 19:00 по московскому времени. 🎁 Всех ждут подарки. Участвуйте, задавайте вопросы и получите сертификат на 10 000 рублей на любой курс Skillbox!
  • Библиотека Java разработчика

    Что произойдет при вызове Iterator.next() без предварительного вызова Iterator.hasNext()? Если итератор указывает на последний элемент коллекции, то возникнет исключение NoSuchElementException, иначе будет возвращен следующий элемент.
  • Реклама

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

    Хотите научиться понимать кино? Все за 8 лекций вы сможете начать разбираться в фильмах, как профессионал🔥 Вы научитесь: ✔️ Видеть связь между цветом, звуком, ракурсом и задумкой режиссера  ✔️Оценивать работу оператора, сценаристов и художников ✔️ Замечать в фильмах отсылки к другим произведениям искусства Скорее забирайте курс по скидке для подписчиков канала 👉 http://film.oppopart.ru/
  • Библиотека Java разработчика

    🔥 Как устроена операционная система Android 💣 Заглянем внутрь этой ОС на открытом уроке 21 июня в 20:00. Мы разберем ее устройство с точки зрения архитектуры, что лежит в ее основе, как она загружается, как приложения общаются между собой и другие интересные детали. 📌 На вебинаре выступит Даниил Попов, разработчик эстонской компании Bolt Technology OÜ. Занятие пройдет в рамках онлайн-курса «Android Developer. Professional» от OTUS и позволит протестировать процесс обучения. 🦾 Программа рассчитана на разработчиков с опытом создания Android-приложений. ️️✅ Пройдите вступительный тест, чтобы зарегистрироваться
  • Библиотека Java разработчика

    Что если оба реализуемых интерфейса объявляют один и тот же метод? (1/2) Если объявление полностью одинаково – нет никакой проблемы, класс-реализация должен просто определить этот метод. Когда у обоих интерфейсов объявлены методы с одинаковой сигнатурой, но разными возвращаемыми типами – всё зависит от того, какие именно эти типы. Переопределение метода (override) еще с Java 5 ковариантно относительно возвращаемого типа. То есть, в наследнике тип результата метода может быть наследником: super метод возвращает Number, @Override метод возвращает Integer. Если типы не связаны отношением наследования, например String и Long – такой класс невозможно реализовать. Для примитивов никакой ковариантности возвращаемого типа нет. Даже если типы совместимы относительно присваивания: intlong, intInteger. В любом из таких случаев будет ошибка о несовместимости возвращаемых типов, для примитивов они должны совпадать в точности. Если различие в части throws, методы объявлены выбрасывающими разные типы исключений. Правила здесь те же, что для возвращаемых типов – работает ковариантность. Отличие лишь в том, что исключений примитивных типов не бывает, а даже для не являющихся родителем и наследником исключений всегда есть вариант, удовлетворяющий обоим – отсутствие выбрасываемых исключений вообще. #Классы
  • Библиотека Java разработчика

    Конференция JPoint 2022 на день вернется в офлайн 24 июня. Для всех, кто соскучился по живому общению с единомышленниками, команда JPoint сделала отдельный офлайн-день. В теплом ламповом офлайне вас ждут: ✔ Доклады о фреймворках, тестировании на Java, архитектуре, многопоточности и не только. ✔ Дискуссии с участием спикеров после каждого доклада (вживую, а не в Zoom!). ✔ Круглые столы о JVM, Data Engineering в Java и собеседованиях разработчиков. ✔ Партнерские стенды с мини-докладами и возможностью получить мерч. ✔ Живое общение с единомышленниками. 📍Санкт-Петербург, Park Inn by Radisson Pulkovskaya, 24 июня Вместе с билетом на офлайн-день вы получите доступ к записям более чем 30 докладов и других активностей с онлайн-части конференции.  Подробности, полную программу и билеты вы можете найти по ссылке. Если покупаете билет за свой счет (а не за счет компании), то воспользуйтесь промокодом для получения скидки: bookjava2022JRGpc
  • Библиотека Java разработчика

    🔥Хардкорный тест по Java🔥 🚀 Пройди тест из 20 вопросов и проверь насколько ты готов к обучению на углубленном курсе - Java Developer. Professional от OTUS Курс рассчитан на программистов Java с опытом от 1 года разработки 🎯 РЕЗУЛЬТАТ ПРОХОЖДЕНИЯ КУРСА - разработка серверных приложений любой сложности; - создание многопоточных и многопроцессных приложений; - использование в проектах библиотеки и учитывать особенности языка и Java-платформы; - уверенное прохождение собеседований и самостоятельное решение задач уровня Middle. Время прохождения теста ограниченно 30 минут 📌ПРОЙТИ ТЕСТ - https://otus.pw/dvKm/
  • Библиотека Java разработчика

    В чём отличия интерфейса от абстрактного класса? Главное отличие – это семантика. Интерфейсы появились еще до Java, как важная концепция ООП. Смысл интерфейса – некое поведение, описание свойства. Причем если придерживаться принципа сегрегации интерфейсов, это описание единственного аспекта поведения. Класс, даже абстрактный – это комбинация всех свойств и их реализаций, которыми определяются сущности некоторой категории (собственно, класса). Отсюда вытекает естественность и необходимость множественного наследования для интерфейсов. Опыт таких языков как C++ показал, что множественное наследование классов не нужно и проблемно (см. проблема ромбовидного наследования). По факту же обычно нужно всего лишь переиспользование кода, что не относится к ООП и реализуется в некоторых языках «интерфейсами с независимым состоянием» – примесями. В Java интерфейс в отличие от абстрактного класса не может иметь состояния. Реализация поведения же допустима только в двух случаях: для статических методов, и default для обычных. Статические методы являются частью всего класса, а не экземпляров. Дефолтная реализация, как говорилось ранее, добавлена только как хак для сохранения совместимости. В интерфейсах, как публичных описаниях, не имеют смысла и запрещены непубличные члены. Отсюда синтаксическое отличие: модификатор public, как и abstract для методов или static для полей, можно не писать. Запрещены и модификаторы, несовместимые с abstract: final, synchronized и прочие. На уровне скомпилированного байткода тоже есть небольшие различия: интерфейс помечается флагом ACC_INTERFACE а для класса генерируется конструктор по-умолчанию. И есть еще одно небольшое отличие. Интерфейс с одним методом можно использовать как функциональный, и инстанциировать лямбда-выражением. Для абстрактного класса даже с единственным методом такое не сработает. #Классы
  • Библиотека Java разработчика

    💣 Хотите расширить свой стек разработкой на Scala? 🚀 Сделайте первые шаги к изучению этого языка 21 июня 20:00 на открытом уроке «Алгебраические типы данных и сопоставление с образцом». Занятие проведет Алексей Воронец, NAUMEN, руководитель разработки с 12-летним опытом. ✅ На занятии разберем иерархию классов, функциональность сопоставления с образцом для чисел и строк. После занятия вы поймете, что такое алгебраические типы данных и сможете использовать их на практике. 🎯 Урок является частью онлайн-курса «Scala Developer», который рассчитан на специалистов с опытом в Java от 1 года ли на других ООП от 3-х лет. 👉 Чтобы попасть на вебинар, пройдите вступительный тест 🔥 Для участников данного сообщества по промокоду scalapromo1 можно получить скидку 20% на курс!
  • Библиотека Java разработчика

    Как получить гарантированный дедлок? Сначала поговорим о том, что это такое. Deadlock – это взаимная блокировка, ситуация, когда два или более потока «наступают друг-другу на хвост» – зависают в вечном ожидании ресурсов, захваченных друг другом. Livelock – похожая проблема, с тем лишь отличием, что потоки не останавливаются, а вместо этого зацикливаются, выполняя одни и те же бесполезные действия, ходят по кругу. Стандартный подход к обеспечению гарантии защиты от дедлока – установка строгого порядка взятия блокировок. Если для мониторов A и B соблюдается всеобщий порядок захвата AB (и соответственно отпускания BA), то ни с одним потоком не случится попасть на ожидание B, успешно при этом захватив A. Из этого можно догадаться, простой способ гарантировать возможность дедлока – явно нарушить это условие. Нарушение условия даст дедлок «скорее всего когда-нибудь». Чтобы получить его точно и с первого раза, нужно гарантировать, что оба потока окажутся на этапе между захватами одного и другого ресурса в одно время. Это можно сделать множеством способов, в примере ниже использован CyclicBarrier. Вопрос дедлоков – одна из краеугольных тем параллельных вычислений, уходящая далеко за рамки этого вопроса. Для дальнейшего изучения рекомендуются статьи на википедии про дедлоки, про задачу об обедающих философах как классическая иллюстрация проблемы, и глава 10.1 Java Concurrency in Practice. #Многопоточность
  • Библиотека Java разработчика

    Spring в действии 6 изд Крейг Уоллс (2022) Фреймворк Spring Framework - необходимый инструмент для разработчиков приложений на Java. В книге описана последняя версия Spring 3, который несет в себе новые мощные особенности, такие как язык выражений SpEL, новые аннотации для работы с контейнером IоС и поддержка архитектуры REST. Крейг Уоллс обладает особым талантом придумывать весьма интересные примеры, сосредоточенные на особенностях и приемах использования Spring, которые действительно будут полезны читателям. Издание предназначено как для начинающих пользователей фреймворка, так и для опытных пользователей Spring, желающих задействовать новые возможности версии 3.0. Скачать 👉 @java_360
  • Библиотека Java разработчика

    Как в лямбде изменить внешнюю локальную переменную? Это нельзя сделать в лоб. Такой код не скомпилируется, потому что захваченная локальная переменная обязана быть effectively final. Такое требование исходит из следующих причин. Локальная переменная хранится на стеке, а значит время ее жизни в отличие от долгоживущих элементов хипа ограничено скоупом и текущим потоком. Но экземпляр лямбды, захвативший эту переменную, мог бы быть передан наружу и использован для доступа к этой переменной из другого потока и после выхода из метода. Эта проблема решается тем, что в лямбду копируется значение локальной переменной. Такая копия живет независимо, возможно дольше оригинала. Но это решение приведет к сложному поведению из-за возможности работы с неактуальным значением – копия и оригинал станут двумя разными переменными. Поэтому значение должно быть вечно актуально – неизменяемо. Поля экземпляра менять можно, потому что захваченной переменной в этом случае выступает effectively final значение this. Если локальную переменную всё же хочется изменить, решение очевидно – поместить её в кучу. Для этого нужно использовать любого рода обертку: одноэлементный массив, объект-atomic, специально созданный класс с этой переменной как полем. Хак с оберткой решает проблему времени жизни и даёт коду скомпилироваться, но возвращает проблему сложности поведения. Если среда многопоточная, то вероятно порядок операций с этой переменной придется синхронизировать вручную. #Язык #Многопоточность
  • Библиотека Java разработчика

    Подборка каналов для IT специалистов 🎯 Программирование C++📌 https://t.me/cpp_lib Библиотека C/C++ разработчика https://t.me/cpp_knigi Книги для программистов C/C++ Программирование Python 📌 https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍 https://t.me/BookPython Библиотека Python разработчика https://t.me/python_real Python подборки на русском и английском https://t.me/python_360 Книги по Python Rus Java разработка 📌 https://t.me/BookJava Библиотека Java разработчика https://t.me/java_360 Книги по Java Rus GitHub Сообщество 📌 https://t.me/Githublib Интересное из GitHub CodePen 📌 https://t.me/codepen_1 Сообщество пользователей CodePen Базы данных (Data Base) 📌 https://t.me/database_info Все про базы данных Мобильная разработка: iOS, Android 📌 https://t.me/developer_mobila Мобильная разработка Фронтенд разработка 📌 https://t.me/frontend_1 Подборки для frontend разработчиков Разработка игр 📌 https://t.me/game_devv Все о разработке игр Вакансии 📌 https://t.me/sysadmin_rabota Системный Администратор https://t.me/progjob Вакансии в IT Чат программистов📌 https://t.me/developers_ru Библиотеки 📌 https://t.me/book_for_dev Книги для программистов Rus https://t.me/programmist_of Книги по программированию https://t.me/proglb Библиотека программиста https://t.me/bfbook Книги для программистов БигДата, машинное обучение 📌 https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning Программирование 📌 https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций https://t.me/coddy_academy Полезные советы по программированию QA, тестирование 📌 https://t.me/testlab_qa Библиотека тестировщика Шутки программистов 📌 https://t.me/itumor Шутки программистов Защита, взлом, безопасность 📌 https://t.me/thehaking Канал о кибербезопасности Книги, статьи для дизайнеров 📌 https://t.me/ux_web Статьи, книги для дизайнеров https://t.me/arhitekturamira World Architecture Системное администрирование 📌 https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало) https://t.me/sysadminof Книги для админов, полезные материалы https://t.me/i_odmin Все для системного администратора https://t.me/i_odmin_book Библиотека Системного Администратора https://t.me/i_odmin_chat Чат системных администраторов https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др. Английский 📌 https://t.me/UchuEnglish Английский с нуля Математика 📌 https://t.me/Pomatematike Канал по математике Арбитраж трафика 📌 https://t.me/partnerochkin CPA и арбитраж трафика Крипта 📌 https://t.me/bitkoinoff Новости криптовалют Метавселенная, GameFi, Crypto 📌 https://t.me/metaverse360 DeepFake 📌 https://t.me/deepfakenow Публикуем deepfake видео Мир технологий 📌 https://t.me/mir_teh Видео из мира технологий Excel лайфхак📌 https://t.me/Excel_lifehack
  • Библиотека Java разработчика

    Как объявить переменное количество аргументов метода? Для этого используется аргумент-массив. В нем может находиться любое количество элементов. Еще с Java 5 для этого случая добавился синтаксический сахар: Variable-length argument (vararg). Три точки ... ставятся между типом и именем переменной, и становится можно передать любое количество аргументов, не упаковывая их в массив. На уровне байткода применение массива и варарга не отличаются: vararg-параметр Foo... превращается в параметр-массив Foo[], на этапе вызова подставляется неявное инстанцирование и заполнение массива. Чтобы избежать неоднозначностей, на vararg наложено ограничение: им может быть только один последний аргумент. Vararg, как массив, может быть пустым. Иногда это приводит к неочевидному поведению. Допустим, имеем две перегрузки метода с аргументами int... и float.... Вызов такого метода без параметров попадает в вариант с int, как с более специфичным типом. Наличие же перегрузки с несовместимыми типами, например int... и boolean..., приводит при вызове к ошибке компиляции «Ambiguous method call». Когда типом варарга используется generic-параметр, возникает warning «Possible heap pollution from parameterized vararg type». Вам нужно убедиться, что вы понимаете в чем этот риск, что ваш код не приводит к heap pollution, и уведомить об этом компилятор аннотацией @SafeVarargs. #Язык
  • Реклама

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

    💣 Хочешь попробовать себя в Android-разработке? 📌 Приглашаем 16 июня в 20:00 на открытый урок в OTUS, где мы создадим приложение для трекинга воды. Занятие проведет Даниил Попов, разработчик в компании Bolt Technology OÜ (Эстония). 🚀 Мы разработаем приложение для отслеживания количества воды, которое человек пьет в сутки. Для этого мы нарисуем стаканчик и будем заполнять его по мере того, как пользователь отмечает сколько воды он выпил за сутки. 💻 Вебинар пройдет в рамках специализации «Android Developer». Это возможность оценить материалы курса и познакомиться с экспертом. ❇️ Для участия необходимо rel='noreferrer nofollow' href='https://otus.ru/event-claim?event=2094&source=https%3A%2F%2Fotus.ru%2Flessons%2Fspec-android&utm_source=telegram&utm_medium=cpm&utm_campaign=spec_android&utm_term=bookjava&utm_content=lesson-16-06-2022'>зарегистрироваться
  • Библиотека Java разработчика

    Промежуточные операции Stream API Все методы Stream API можно разделить на две группы: промежуточные и терминальные (конечные). Промежуточные операции следует воспринимать как «отложенные», т.е. они не меняют сами данные, а только задают правила их изменения. А терминальные как раз инициируют всю цепочку преобразований и возвращают модифицированные данные. Рассмотрим промежуточные операции. Все промежуточные операции возвращают типизированный интерфейс Stream<>.
    Промежуточные операции Stream API

    Все методы Stream API можно разделить на две группы: промежуточные и терминальные (конечные). Промежуточные операции следует воспринимать как «отложенные», т.е. они не меняют сами данные, а только задают правила их изменения. А терминальные как раз инициируют всю цепочку преобразований и возвращают модифицированные данные. Рассмотрим промежуточные операции. Все промежуточные операции возвращают типизированный интерфейс Stream<>. Преобразование Любое изменение исходного элемента можно делать с помощью метода map().…

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

    Какие промежуточные методы работы со стримами вы знаете? filter() отфильтровывает записи, возвращая только записи, соответствующие условию; skip() позволяет пропустить определённое количество элементов в начале; distinct() возвращает стрим без дубликатов (для метода equals()); map() преобразует каждый элемент; peek() возвращает тот же стрим, применяя к каждому элементу функцию; limit() позволяет ограничить выборку определенным количеством первых элементов; sorted() позволяет сортировать значения либо в натуральном порядке, либо задавая Comparator; mapToInt(), mapToDouble(), mapToLong() - аналоги map() возвращающие стрим числовых примитивов; flatMap(), flatMapToInt(), flatMapToDouble(), flatMapToLong() - похожи на map(), но могут создавать из одного элемента несколько. Для числовых стримов дополнительно доступен метод mapToObj(), который преобразует числовой стрим обратно в объектный.

© Telegram-site 2018-2026

Сайт про Telegram каналы(неофициальный) | Почта для связи: [email protected]