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

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

9291 @BookJava

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

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

    Зачем нужно ключевое слово default? Изначально (с Java 1.5) это слово использовалось для объявления дефолтного значения элементов аннотации. В Java 8 вместе с лямбдами и стримами появилась острая необходимость дополнить стандартные интерфейсы новыми методами. Никто естественно не собирался ломать обратную совместимость, и было предложено добавить методы по умолчанию. Теперь добавление ключевого слова default к методу интерфейса позволяет добавить ему тело. Все новые методы старых интерфейсов снабжаются дефолтной реализацией. В реализации такого метода его дефолтный вариант вызывается тем же синтаксисом, что и внешний класс из вложенного: InterfaceName.super.methodName(). Методы по умолчанию подошли еще на шаг к введению в Java беспроблемной версии множественного наследования – примесям (mixin). Интерфейс не может иметь состояния, поэтому полноценные примеси всё ещё недоступны.
  • Библиотека Java разработчика

    Чем отличается interface от @⁠interface? Среди интерфейсов выделяется особая группа, которая не объявляет никаких методов. Пример такого интерфейса – Serializable. Такие интерфейсы добавляют классу некую семантику, которая позже используется либо с помощью рефлексии (и instanceof), либо вообще не программно, а как информация для разработчиков и инструментов разработки. Это маркерные интерфейсы. Маркерный интерфейс представляет метаинформацию класса. Начиная с Java 1.5 в языке появился новый вид типов – аннотации. Они берут на себя и расширяют возможности маркерного интерфейса: 1. Можно применять аннотацию не только к классу или интерфейсу, но почти к чему угодно: к пакетам, к методам, их параметрам, переменным. Полный список представлен в перечислении ElementType; 2. Аннотация может нести данные в своих элементах 3. Аннотация может не присутствовать в рантайме, или даже остаться только в исходнике, не попав в байткод вовсе. Определяется ее RetentionPolicy; 4. Можно сделать аннотацию не наследуемой, просто не помечая ее @Inherited; 5. И конечно же, синтаксис. Примененная аннотация с первого взгляда отличается от настоящих интерфейсов. Joshua Block в главе 37 Effective Java выделяет два преимущества маркерных интерфейсов перед аннотациями на этапе компиляции: 1. Можно требовать использование только маркированного параметра, так как маркерный интерфейс – это еще и тип; 2. Можно сузить применяемость маркера к только определенным типам, сделав интерфейс их наследником. Возвращаясь к вопросу, ключевое слово @interface объявляет аннотацию, interface – интерфейс. В результате компиляции в .class-файле аннотация превращается в интерфейс-наследник java.lang.annotation.Annotation, помеченный флагом ACC_ANNOTATION. Элементы превращаются в абстрактные методы. Этим объясняется синтаксис объявления. Специфичные для аннотаций атрибуты описаны в JVMS 4.7.16-4.7.22. К слову, конструкции вида @something в javadoc называются тэгами. Они выглядят похоже на аннотации, также представляют метаинформацию для документации, но технически не имеют с ними ничего общего. #Классы #Аннотации
  • Библиотека Java разработчика

    Александр Маторин, СберТех — Неадекватное Java-интервью
  • Реклама

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

    Подборка каналов для IT специалистов 🎯 Системное администрирование 📌 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 и др. GitHub Сообщество 📌 https://t.me/Githublib Интересное из GitHub CodePen 📌 https://t.me/codepen_1 Сообщество пользователей CodePen Базы данных (Data Base) 📌 https://t.me/database_info Все про базы данных Вакансии для программистов 📌 https://t.me/progjob Программирование Python 📌 https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍 https://t.me/BookPython Библиотека Python разработчика https://t.me/python_real Python подборки на русском и английском Мобильная разработка: iOS, Android 📌 https://t.me/developer_mobila Мобильная разработка Фронтенд разработка 📌 https://t.me/frontend_1 Подборки для frontend разработчиков Java разработка 📌 https://t.me/BookJava Библиотека Java разработчика Разработка игр 📌 https://t.me/game_devv Все о разработке игр Библиотеки 📌 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/UchuEnglish Английский с нуля Математика 📌 https://t.me/Pomatematike Канал по математике Арбитраж трафика 📌 https://t.me/partnerochkin CPA и арбитраж трафика Крипта 📌 https://t.me/bitkoinoff Новости криптовалют DeepFake 📌 https://t.me/deepfakenow Публикуем deepfake видео Мир технологий 📌 https://t.me/mir_teh Видео из мира технологий
  • Библиотека Java разработчика

    🧐 Какую литературу почитать про проектирование и микросервисы? Как ускорить поставку ПО и почему за ИТ будущее? Всем этим и не только делятся ребята из Почтатеха. Лайфхаки, инсайты и внутренняя жизнь ИТ-компании — всё, как мы любим. 🔸 Почему это круто? Полезную инфу можно найти и начинающим гикам, и уже опытным спецам. 🔸 Что за контент? Выжимки из статей на Хабре, собственные инженерные решения, релизы из первых уст и классный бонус — актуальные вакансии и советы для карьеры. 🔸 Где можно подписаться? 👉 Вот тут: @pochtatech
  • Библиотека Java разработчика

    Что такое «авторизация» и «аутентификация»? Чем они отличаются? Аутентификация - это проверка соответствия субъекта и того, за кого он пытается себя выдать, с помощью некой уникальной информации, в простейшем случае - с помощью имени входа и пароля. Авторизация - это проверка и определение полномочий на выполнение некоторых действий (например, чтение файла) в соответствии с ранее выполненной аутентификацией. Очевидно, что это разные понятия, но при этом без первого не может быть второго и наоборот. То есть имея разрешение на работу, вы не сможете оказаться на рабочем месте без предъявления пропуска, равно как и нет смысла в демонстрации пропуска, если вы не планируете работать. Именно тот факт, что одного не бывает без другого, и вызывает у людей заблуждение, что это одно и то же.
  • Библиотека Java разработчика

    ☘️Хардкорный тест из 21 вопроса только для тех, кто уже знает и любит Java и хочет освоить Framework Spring. 🚀Если сможете сдать — пройдёте на продвинутый курс для разработчиков по спец.цене. 👉🏻ПРОЙТИ ТЕСТ: https://otus.pw/p0uI/
  • Библиотека Java разработчика

    Что такое MIME тип? MIME, Multipurpose Internet Mail Extension (Многоцелевые расширения Интернет-почты) — спецификация для передачи по сети файлов различного типа: изображений, музыки, текстов, видео, архивов и др. В HTML указание MIME-типа используется при передаче данных форм и вставки на страницу различных объектов.
  • Библиотека Java разработчика

    Как написать синглтон? Singleton – это паттерн проектирования «одиночка», класс с единственным экземпляром. Такая пространная формулировка открывает простор для подходов к реализации, а значит и для уточняющих вопросов, на которые и рассчитывает интервьюер. Первое что надо выяснить – единственный экземпляр в рамках чего. В базовом случае уникальность объекта обеспечивается на уровне реализации класса. Но при этом базовом подходе создается по объекту на каждый класслоадер. Для уникальности на всю виртуальную машину реализацию нужно дополнить. Понадобится больше действий уже на уровне ОС чтобы добиться единого экземпляра между процессами JVM. С другой стороны, может требоваться специфичное для фреймворка сужение «области уникальности», например по экземпляру на каждый Spring IoC-контейнер. Затем вы узнаете, должен ли быть ровно один экземпляр, или не больше одного. Проще говоря, должно ли его создание быть ленивым. Возможно время использования объекта ограничено внешними условиями, и позднее он должен быть утилизирован. И наконец нужно уточнить, в каких обстоятельствах подразумевается его использовать. Обычно предлагают условие многопоточной среды – инстанцирование необходимо синхронизировать. Другое возможное требование – сохранение состояния от запуска к запуску. Спектр опций здесь ограничивается только фантазией собеседующего. О вариантах конкретных реализаций написано много статей. Обычно на интервью ожидается знание самых стандартных подходов, которые описаны например здесь. #Классы
  • Библиотека Java разработчика

    Что действительно важно знать о трудоустройстве за границей Митап с Senior Technical HR Lead Amazon Эльвирой Шустровой 🤔 Кто лучше всего знает, как айтишнику устроиться в зарубежную компанию? Конечно же, HR, который ежедневно нанимает технических специалистов. В эту среду вы узнаете секреты трудоустройства в крупные зарубежные компании из первых рук — от International Tech Recruiter Эльвиры Шустровой (USA). Обсудим: 👉 Что лучше: размещать резюме на HR-сайтах и ждать, что тебя заметят, или сразу стучаться в компании, которые близки по духу? 👉 Какие отличия есть в оформлении резюме (CV) для российских и зарубежных работодателей? Чем отличается процесс интервью? 👉 Насколько точно по навыкам должен совпадать соискатель с запросом компании? Если я не соответствую всему списку требований — это провал? 👉 Как устроиться в Amazon на удалёнку тестировщиком? А junior-разработчиком? ... и огромное количество других вопросов о том, как русскоязычному айтишнику устроиться в зарубежную компанию. 🎙 О спикере: Эльвира Шустрова более пяти лет она живёт в США и занимается наймом технических специалистов в международные компании. В её послужном списке ЦФТ, Unlimint (CardPay), Amazon и другие известные бренды. 🗓 Когда: 27 апреля (среда) в 19:00 мск 📍 Где: митап пройдёт в онлайне в телеграм-канале RelocationDEV. Подписывайтесь на канал, чтобы не пропустить начало трансляции. До встречи в среду!😉
  • Библиотека Java разработчика

    Можно ли использовать строки в конструкции switch? Да, начиная с Java 7 в операторе switch можно использовать строки, ранние версии Java не поддерживают этого. При этом: • участвующие строки чувствительны к регистру; • используется метод equals() для сравнения полученного значения со значениями case, поэтому во избежание NullPointerException стоит предусмотреть проверку на null. • согласно документации, Java 7 для строк в switch, компилятор Java формирует более эффективный байткод для строк в конструкции switch, чем для сцепленных условий if-else.
  • Библиотека Java разработчика

    🔥Product&Project manager: в чем разница и какую роль выбрать? Расставим все точки над «и» 11 мая в 20:00 на открытом уроке в OTUS. https://otus.pw/n37T Вместе с Technical Program Manager Юлией Белозеровой узнаем, чем отличается продукт от проекта и в чем всё-таки разница между проектным и продуктовым менеджером, какие у них обязанности и каких soft-скиллы нужны для этих ролей. ⚡️Вторая часть занятия — практика: будем раскладывать типичные рабочие задачи по ролям, к которым они относятся. Урок является частью программы практического онлайн-курса «Agile Project Manager в IT». ➡️Для регистрации на вебинар оставьте заявку: https://otus.pw/n37T
  • Библиотека Java разработчика

    How to Run Java Web Apps with Docker Containers - Sematext

    Learn best practices on how to build your first Java web application inside Docker containers. Tutorial to help developers create, view and tag Docker images.

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

    Какие ограничения на целостность данных существуют в SQL? PRIMARY KEY - набор полей (1 или более), значения которых образуют уникальную комбинацию и используются для однозначной идентификации записи в таблице. Для таблицы может быть создано только одно такое ограничение. Данное ограничение используется для обеспечения целостности сущности, которая описана таблицей. CHECK используется для ограничения множества значений, которые могут быть помещены в данный столбец. Это ограничение используется для обеспечения целостности предметной области, которую описывают таблицы в базе. UNIQUE обеспечивает отсутствие дубликатов в столбце или наборе столбцов. FOREIGN KEY защищает от действий, которые могут нарушить связи между таблицами. FOREIGN KEY в одной таблице указывает на PRIMARY KEY в другой. Поэтому данное ограничение нацелено на то, чтобы не было записей FOREIGN KEY, которым не отвечают записи PRIMARY KEY.
  • Библиотека Java разработчика

    💡Какие структуры данных нужно знать джуну? Макс Добрынин подготовил полное руководство: на что стоит обратить внимание, какие структуры важны, а какие нет. Это и многое другое в новом выпуске на youtube-канале @jetbulb Видео уже доступно по ссылочке https://youtu.be/IxfAeGwDeww А еще у ребят скоро стартует набор на бесплатное mock-интервью, так что не забудьте подписаться😉
  • Реклама

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

    Предположим, есть метод, который может выбросить IOException и FileNotFoundException. в какой последовательности должны идти блоки catch? Сколько блоков catch будет выполнено? Общее правило: обрабатывать исключения нужно от «младшего» к старшему. Т.е. нельзя поставить в первый блок catch(Exception ex) {}, иначе все дальнейшие блоки catch() уже ничего не смогут обработать, т.к. любое исключение будет соответствовать обработчику catch(Exception ex). Таким образом, исходя из факта, что FileNotFoundException extends IOException сначала нужно обработать FileNotFoundException, а затем уже IOException: void method() { try { //... } catch (FileNotFoundException ex) { //... } catch (IOException ex) { //... } }
  • Библиотека Java разработчика

    Хотите научиться делать один из самых популярных элементов анимации? 🤔 ⚡️Приглашаем 11 мая в 20:00 мск на открытый урок «Анимация модального окна сайта: основы и полезные фишки» в OTUS. Вместе с Марией Коршуновой, экспертом с опытом более 10 лет в сфере веб-разработки, мы потренируемся в анимации модального окна его открытия и закрытия, чтобы сделать элемент отличным от большинства сайтов. Урок дает возможность предварительно попробовать новый онлайн-курс «Веб-анимации». 👉🏻Регистрация на урок: https://otus.pw/u42f/
  • Библиотека Java разработчика

    Чем отличается перегрузка от переопределения? (2/2) Часть 1 Переопределение (override) дает полиморфизм подтипов. Это реализация/подмена метода нефинального родительского класса или интерфейса. С помощью этого механизма достигается поведение, когда экземпляр хранится под типом родителя, но реализация методов используется специфичная для этого конкретного подтипа. Пример: List<String> list = new LinkedList<>(); list.add(“foo“); Здесь метод add вызывается общий для всех списков, но добавлен будет именно элемент связного списка. Выбор конкретного метода происходит в последний момент, в процессе работы программы, в зависимости от типа объекта. Это называется позднее или динамическое связывание методов (late binding, dynamic dispatch). Переопределение имеет непосредственное отношение к принципу подстановки Лисков (LSP): в хорошем объектно-ориентированном коде для вызывающего кода переопределенный метод не должен быть отличим от оригинального. Переопределенный метод принято снабжать аннотацией @Override. Ее отсутствие допускается, но компиляция не перегружающего метода с такой аннотацией приведет к ошибке. При переопределении можно сузить набор выбрасываемых исключений или тип результата, и заменить модификатор доступа на менее строгий. Статические методы нельзя переопределить, можно только перегрузить. О внутренностях процесса связывания можно почитать в этой статье. #Классы