Size: a a a

Библиотека джависта

2021 April 25
Библиотека джависта
источник
Библиотека джависта
источник
Библиотека джависта
источник
Библиотека джависта
источник
Библиотека джависта
Чтобы получать больше полезных материалов по ИТ и бизнесу, присоединяйтесь к сообществу @SelectelNews 🦖
источник
Библиотека джависта
Метод clone() объявлен в классе Object с указанием модификатора native, чтобы обеспечить доступ к стандартному механизму поверхностного копирования объектов. Одновременно он объявлен и как protected, чтобы нельзя было вызвать этот метод у не переопределивших его объектов. Непосредственно интерфейс Cloneable является маркерным (не содержит объявлений методов) и нужен только для обозначения самого факта, что данный объект готов к тому, чтобы быть клонированным. Вызов переопределённого метода clone() у не Cloneable объекта вызовет выбрасывание CloneNotSupportedException.
источник
2021 April 26
Библиотека джависта
Параметры в Java передаются по ссылке или по значению?

Этот вопрос уходит корнями в C++ прошлое (скорее всего интервьюера), это терминология из C++. Для начала нужно разобраться в этой терминологии.

В C++ ссылка – это переменная-псевдоним для другой переменной. Меняя значение ссылки, поменяется и оригинал. В Java такого нет, легко понять это подумав например о ссылке на int.

Ссылка в Java – это нечто похожее на адрес объекта в памяти. Похожая сущность в C++ называется указатель).

Передача параметра по значению – это копирование значения в переменную-параметр метода. По ссылке – передача ссылки, то есть по сути использование той же самой переменной. Разобраться подробнее (осторожно, много C++).

В Java параметр метода – всегда копия. Значит параметры передаются всегда по значению, просто это значение может быть ссылкой на объект. Код ниже это демонстрирует.

#JVM
источник
Библиотека джависта
🚀Войдите в профессию Java-разработчика с нуля и дорастите до Middle уровня за 15 месяцев.

OTUS открывает специализацию «Java Developer», где вы последовательно освоите принципы программирования, изучите Java и фреймворк Spring.

🗣Персональный ментор будет сопровождать вас на всем пути для закрепления практических навыков.

🔊Центр карьеры OTUS поможет с трудоустройством. Вы сможете претендовать на стажировку в компании партнёре курса и начать получать опыт для дальнейшего продвижения в карьере программиста.
А дальше ещё больше практики и хардкорных тем, которые нужны для решения задач на Middle уровне.

❗️Оставьте заявку, чтобы получить спец. предложение: https://otus.pw/7xHU/
источник
Библиотека джависта
Курс на русском языке по основам работы со Spring.

https://proglib.io/w/513bba92
источник
Библиотека джависта
В чем разница между разными модификаторами доступа?

🔘 private – доступ только непосредственно из этого класса и его внутренних/вложенных классов;
🔘 package-private – доступ из всех классов этого пакета. Наследники доступа не имеют. Применяется когда модификатор не указан;
🔘 protected – доступ из всех классов этого пакета и всех наследников;
🔘 public – никаких ограничений доступа;

Модификаторы доступа применяются к классам, интерфейсам, методам и полям. Они нужны для реализации принципа наименьших привилегий и для отделения внутренней реализации от частей публичного API.

Вопросу посвящен Effective Java Item 13 и глава 6.6 спецификации.

#Классы
источник
2021 April 27
Библиотека джависта
❓Куда и как расти айтишнику с опытом? Узнайте на бесплатных вебинарах онлайн-курса «DevOps практики и инструменты»:

📌«Demo Day курса «DevOps практики и инструменты»: https://otus.pw/aNLZ/
— Познакомитесь с преподавателем-практиком курса. Зададите любые вопросы по DevOps-методологии, входу в профессию и тому, как обеспечить себе надёжный карьерный прогресс.

📌2-дневный практический интенсив «Делаем immutable infrastructure с помощью Packer и Terraform»: https://otus.pw/sxLv/

🔥Регистрируйтесь сейчас — напомним в день вебинара!
источник
Библиотека джависта
Как создать immutable-коллекцию?

В Collections Framework имеется набор методов Collections.unmodifiable*() для различных типов коллекций. Такой метод вернет read-only обертку над переданной коллекцией. Так же как с Collections.synchronized*(), внутри используется не копия, а оригинальная коллекция.

Другой менее очевидный способ – метод Collections.empty*(). Он возвращает немодифицируемую пустую коллекцию. Попытка добавить элемент как и в случае unmodifiable приведет к UnsupportedOperationException.

#Коллекции
источник
Библиотека джависта
Продолжаем конкурс на самый интересный контент в телеграм-каналах Proglib!
Призовой фонд — 280 тысяч рублей.
Срок окончания конкурса -- 15 мая

Автор лучшего поста в отдельно взятом канале получает 20 тысяч рублей.
Мы упростили конкурс — теперь вам достаточно найти интересную и актуальную статью 2020-2021 года, написать к ней небольшой анонс (до 700 знаков) и прислать нам, тем не менее ваши идеи по другим форматам только добавляют + в общий зачет. Авторство можем указать по вашему желанию. В канале @progbook предлагаем отправлять рецензии на новые книги и старые актуальные.

Полный список каналов:
https://t.me/progbook
https://t.me/proglibrary
https://t.me/pyproglib
https://t.me/frontendproglib
https://t.me/javaproglib
https://t.me/dsproglib
https://t.me/phpproglib
https://t.me/cppproglib
https://t.me/mobileproglib
https://t.me/goproglib
https://t.me/csharpproglib
https://t.me/devopsslib
https://t.me/testerlib
https://t.me/hackproglib

Все посты будут с лайками и дизлайками и хэштегом #proglib_contest. Ссылки мы будем прогонять через наш сокращатель, будут браться в расчет лайки, дизлайки, охваты, клики по ссылкам. Выиграет тот кто наберёт больше всего лайков/охватов/кликов по ссылкам в публикации. Присылайте посты боту @proglib_contest_bot с указанием, на какой канал идет публикация. Юридическая информация здесь.
источник
Библиотека джависта
Мы уверены на 1011%, что JavaScript-разработчики умеют буквально всё и даже могут спасти нашу планету от уничтожения 💥 Поэтому сделали квест @mgfon_bot, который можно пройти, только если ты умеешь отлично кодить.

Запомни: у тебя есть примерно 2 месяца, чтобы попробовать свои силы. Затем мы отберём 10 лучших прогеров, которым подарим мерч, а самых-самых позовём на собеседование.

Ну что, ты готов показать класс?
источник
Библиотека джависта
Что такое fail-fast и fail-safe итераторы?

Это не какие-то отдельные типы, а характеристики разных реализаций интерфейса Iterator. Они определяют, как поведет себя итератор при изменении перебираемой последовательности.

Fail-fast – «быстрый» итератор. Когда после его создания коллекция как-либо изменилась, он падает с ошибкой без лишних разбирательств. Так работает итератор класса ArrayList, при изменении он выбрасывает ConcurrentModificationException. Рекомендуется не основывать логику программы на fail-fast отказах, и использовать их только как признак ошибки реализации.

Fail-safe – «умный» итератор. Обычно плата за отказоустойчивость – возможная неконсистентность данных («слабая консистентность»). Итератор класса ConcurrentHashMap работает с копией данных, он не выбросит исключение при изменении коллекции, но может не увидеть часть свежих изменений. Плата за отсутствие ошибок других fail-safe итераторов может отличаться, детали всегда можно найти в документации коллекций.
источник
2021 April 28
Библиотека джависта
💻 Какие IT каналы в Telegram читаем мы?

Сегодня представляем вашему вниманию 5 каналов, которые действительно этого заслуживают. Подписывайтесь на наших друзей:

CodeCamp —  Мастхэв канал для любого IT-специалиста: лучшие книги, полезные сервисы и отборные видеоуроки.

@bugfeature — Подлинный канал "Не баг, а фича", который раскрывает секреты социальных сетей, уязвимости приложений, а так же рассказывает об этичном хакинге, анонимности в сети и личной безопасности в интернете.

@front_end_dev – Актуальные материалы для веб-разработчика: статьи, туториалы, инструменты, фишки ЯП и лучшие практики.

@S_E_Book — Самая редкая и актуальная литература в сети, для ИТ специалистов любого уровня и направления, которая публикуется еще до момента выхода в официальных источниках.

GIT — Канал, где Вы найдете уникальные онлайн-сервисы и инструменты на все случаи жизни.
источник
Библиотека джависта
Какой выбрать тип для даты/времени?

В пакете java.util расположены старые классы стандартной библиотеки Java: Date (дата+время), Calendar (конвертация и манипуляция), TimeZone (смещение часового пояса). Эти классы обладали рядом известных проблем. Экземпляры были изменяемыми, что делало их потоко-небезопасными. Работа с датами через календарь была неудобной, не было нормальной поддержки часовых поясов и интернационализации.

Постепенно стандартом де-факто стала сторонняя библиотека Joda-Time. Её разработчики решили все названные выше проблемы.

В Java 8 был добавлен пакет java.time, который взял решения из Joda-Time в стандарт, создатель библиотеки участвовал в разработке. Ключевые классы пакета:
LocalDate, LocalTime и LocalDateTime – локальные для пользователя дата/время.
ZonedDateTime – дата/время в определенной часовой зоне.
Period и Duration – периоды дат и времени соответственно.

Отдельно существуют классы Date и Time пакета java.sql. Это представление даты и времени для обмена данными через JDBC. Не стоит пользоваться ими вне уровня доступа к данным, хотя бы потому, что это классы-наследники старого java.util.Date.

Таким образом, в проектах на Java 8+ нужно использовать современные java.time.*, для более старых – подключать Joda-Time.
источник
Библиотека джависта
За последнее время интерес к NFT-токенам стремительно увеличивается. Вы наверное слышали о таких крупных сделках, как картина Бенкси, портрет Сноудена или токен Нурмагомедова? Кажется, мода на цифровое искусство только набирает обороты, а тут кто первый, тот и выиграл.

Являясь медиа об IT, «Библиотека программиста» просто не могла пройти мимо тренда и решила внести свой вклад в развитие блокчейн-технологий и цифрового искусства. Любой желающий может приобрести первую статью на сайте, которая имеет более 470 000 просмотров.
Цена лота от 1 Ethereum, торги продлятся 3 недели.
Узнать больше можно по ссылке.
источник
Библиотека джависта
Как прочитать криптографический ключ?

KeyFactory – основной класс платформы Java для работы с криптографическими ключами. Набор реализаций для этой фабрики подключается с помощью механизма SPI.

Существует большое разнообразие алгоритмов шифрования: DSA, RSA, и другие. Строка-название нужного алгоритма поставляется в фабрику ключей при её создании.

KeyFactory занимается конвертацией спецификации ключа в сам публичный или приватный ключ, и обратно.

Спецификация, объект интерфейса KeySpec, – входные данные ключа. Это может быть например модуль и экспонента приватного ключа RSA.

Сами внутренние представления ключей реализуют интерфейсы PublicKey и PrivateKey – наследники общего Key.

Для каждого конкретного типа ключа используются соответствующие им классы-реализации интерфейсов.
источник
2021 April 29
Библиотека джависта
⚠️Теряетесь в возможностях Spring? Научитесь уверенно работать с этим фреймворком на онлайн-курсе OTUS
«Spring Framework Developer».

Попробуйте обучение 11 мая на первом демо-занятии «Конфигурация Spring-приложений». 👨🏼‍🏫Преподаватель Юрий Дворжецкий разберет, как можно конфигурировать Spring Boot приложения с помощью свойств: https://otus.pw/aMKG/
источник