Size: a a a

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

2021 May 19
Библиотека джависта
Может ли имя класса не совпадать с именем файла?

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

Protected и private классов верхнего уровня не бывает в принципе, а вот на package-protected это ограничение не распространяется. Это значит, что класс без модификатора доступа может иметь любое имя. Также это значит, что рядом с основным публичным классом файла (или вместо него) можно объявить любое количество других классов без модификатора доступа, с произвольными именами. Они будут доступны внутри всего пакета.

Так что ответ – может.
источник
Библиотека джависта
Быть Java-разработчиком престижно.
Это участие в ведущих банкинг и финтех проектах и других направлениях, требующих высокой надежности приложений.

🔝Дорасти до уровня таких компаний поможет онлайн-курс «Java Developer. Professional» от OTUS.

Вы погрузитесь в нюансы бэкенд разработки и на практике закрепите все технологии для создания своего сервиса.
Базы данных, сборщики мусора, Spring, тесты и инструменты командной работы — преподаватели, опытные разработчики, дают все то, что с чем нужно уметь работать Middle+ специалисту.

🔜Пройдите вступительный тест, чтобы узнать о курсе подробнее и получить скидку 10% по промокоду 21study10: https://otus.pw/S6AT/
источник
Библиотека джависта
Уже завтра пройдёт традиционный онлайн-митап для Java-разработчиков от ЮMoney — тех самых ребят, которые 18 лет занимаются платёжными решениями.

На нём backend-разработчики ЮMoney и приглашённый эксперт из Центра финансовых технологий расскажут как:
— добавлять в чистовой код тестовое поведение и спать спокойно,
— обеспечить отказоустойчивость с помощью шардирования,
— не попасть в Jar Hell.

А после докладов вы сможете задать любой наболевший вопрос и обсудить со спикерами темы. Участие бесплатное. Регистрируйся и делитесь ссылкой с коллегами: https://wow.link/tAV

До встречи в эфире!
источник
2021 May 20
Библиотека джависта
#вопросы_с_собеседований
Что такое Java Server Pages (JSP)?
источник
Библиотека джависта
С нас крутые спикеры, полезные лекции и трудоустройство, с тебя – желание учиться и минимум год опыта коммерческой разработки на Java.

Как все проходит?
3 раза в неделю на протяжении двух месяцев тебя будут обучать Senior’ы и Teamlead’ы ведущих банков страны. Обучение можно совмещать с работой.

Чему будут учить?
На курсе будем изучать Core Java, промышленную разработку на Java, базы данных, Spring, Kafka, Kubernetes и Istio. Помимо этого еще будут практические занятия и домашние задания.

Что будет после учебы?
Трудоустройство в Цифровые привычки. Ты будешь работать над высоконагруженными,отказоустойчивыми проектами.
источник
Библиотека джависта
JSP (JavaServer Pages) — платформонезависимая переносимая и легко расширяемая технология разработки веб-приложений, позволяющая веб-разработчикам создавать содержимое, которое имеет как статические, так и динамические компоненты. Страница JSP содержит текст двух типов: статические исходные данные, которые могут быть оформлены в одном из текстовых форматов HTML, SVG, WML, или XML, и JSP-элементы, которые конструируют динамическое содержимое. Кроме этого могут использоваться библиотеки JSP-тегов, а также EL (Expression Language), для внедрения Java-кода в статичное содержимое JSP-страниц.

Код JSP-страницы транслируется в Java-код сервлета с помощью компилятора JSP-страниц Jasper, и затем компилируется в байт-код JVM.

JSP-страницы загружаются на сервере и управляются Java EE Web Application. Обычно такие страницы упакованы в файловые архивы .war и .ear.
источник
Библиотека джависта
Как получить гарантированный дедлок?

Сначала поговорим о том, что это такое. Deadlock – это взаимная блокировка, ситуация, когда два или более потока «наступают друг-другу на хвост» – зависают в вечном ожидании ресурсов, захваченных друг другом.

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

Стандартный подход к обеспечению гарантии защиты от дедлока – установка строгого порядка взятия блокировок. Если для мониторов A и B соблюдается всеобщий порядок захвата AB (и соответственно отпускания BA), то ни с одним потоком не случится попасть на ожидание B, успешно при этом захватив A.

Из этого можно догадаться, простой способ гарантировать возможность дедлока – явно нарушить это условие.

Нарушение условия даст дедлок «скорее всего когда-нибудь». Чтобы получить его точно и с первого раза, нужно гарантировать, что оба потока окажутся на этапе между захватами одного и другого ресурса в одно время. Это можно сделать множеством способов, в примере ниже использован CyclicBarrier.

Вопрос дедлоков – одна из краеугольных тем параллельных вычислений, уходящая далеко за рамки этого вопроса. Для дальнейшего изучения рекомендуются статьи на википедии про дедлоки, про задачу об обедающих философах как классическая иллюстрация проблемы, и глава 10.1 Java Concurrency in Practice.
источник
2021 May 21
Библиотека джависта
Хотите освоить разработку с нуля и найти первую работу?

OTUS создал для начинающих самые благоприятные условия:
— Созвоны с персональным ментором каждую неделю для проверки практики и разбора сложностей
— Погружение в реальные рабочие задачи джуна
— Помощь с трудоустройством и подготовка к собеседованиям

Все это ждет вас на онлайн-курсе «Java Developer. Basic».
За 4 месяца вы получите фундамент, необходимый каждому программисту, и освоите Java — один из самых востребованных языков бэкенда.

Оставьте заявку, чтобы узнать больше о программе и формате курса 👉 https://otus.pw/gofO/
источник
Библиотека джависта
C++ для Java-программистов.

https://proglib.io/w/0b09c819
источник
2021 May 22
Библиотека джависта
Какая разница между @⁠ElementCollection, @⁠OneToMany и @⁠ManyToMany?

Все эти аннотации – часть Java Persistence API. С их использованием мы регулярно сталкиваемся в реализациях JPA, таких как Hibernate.

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

@⁠OneToMany и @⁠ManyToMany хранят вложенные объекты как отдельные полноценные сущности – для них действуют всё те же требования, которые JPA выдвигает для всех @Entity классов. Каждая из аннотаций отвечает за свое отношение.

@⁠ElementCollection создает коллекцию встраиваемых классов. Применять её можно только на коллекции, тип элементов которых помечен @Embeddable, или входит в список стандартных встраиваемых классов (обертки примитивов, строки, даты, и т.д.).

На уровне хранения в реляционной базе, для @ElementCollection будет также создана отдельная таблица. Технически она будет находиться в отношении one-to-many.

Но из Java кода коллекция будет выглядеть встроенной: её элементом не нужно иметь собственные id, ими нельзя манипулировать отдельно от основной сущности. Единственное, чем такая коллекция отличается от встроенного поля-примитива – её можно загружать лениво (включено по умолчанию).

#proglib_contest
источник
Библиотека джависта
#proglib_contest

10 лучших книг по Java

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

Туц: https://proglib.io/w/42296296
источник
Библиотека джависта
#proglib_contest Обработка какого массива в Java выполняется быстрее?
источник
Библиотека джависта
Обработка какого массива в Java быстрее?
Анонимная викторина
49%
Отсортированного
5%
Неотсортированного
46%
Неважно какого
Проголосовало: 1805
источник
Библиотека джависта
Какие у аннотации бывают таргеты?

Мета-аннотация @Target определяет, в каком контексте может применяться объявляемая аннотация. Допустимые контексты перечисляются значениями ElementType. По умолчанию, если @Target не указан, разрешены все контексты кроме TYPE_PARAMETER. Возможные таргеты:

• TYPE – Объявление класса, интерфейса, аннотации или enum-а.
• FIELD – Объявление поля (включая константы enum-ов).
• METHOD – Объявление метода.
• PARAMETER – Формальный параметр в объявлении метода.
• CONSTRUCTOR – Объявление конструктора.
• LOCAL_VARIABLE – Объявление локальной переменной.
• ANNOTATION_TYPE – Объявление аннотации. Применяется для создания мета-аннотации.
• PACKAGE – Объявление пакета (в package-info.java).
–– С Java 8 ––
• TYPE_PARAMETER – Обявление generic типа-параметра.
• TYPE_USE – Любое использование типа. Например приведение: (@NonNull String) myObject.
–– С Java 9 ––
• MODULE – Объявление модуля.

#proglib_contest
источник
Библиотека джависта
Подходит к концу эпический конкурс на самый интересный контент в телеграм-каналах Библиотеки программиста. Посты собирают всё больше откликов — спасибо за ваши старания!

У всех, кто хотел поучаствовать, остался последний шанс побороться за 20 000 ₽ в каждом из каналов: @progbook, @proglibrary, @pyproglib, @frontendproglib, @javaproglib, @dsproglib, @phpproglib, @cppproglib, @mobileproglib, @goproglib, @csharpproglib, @devopsslib, @testerlib, @hackproglib. Общий призовой фонд 280 000 ₽.

До полуночи примем последние посты — в некоторых каналах шансы на победу всё ещё высокие. Лайфхак: эти каналы нетрудно вычислить по хэштегу #proglib_contest 😉.

Напоминаем, как участвовать: пишем анонс до 700 знаков к любой актуальной айтишной статье 2020-21 годов или рецензию книги для @progbook. Отправляем получившийся текст и название канала боту @proglib_contest_bot. Чей  пост в канале наберёт больше откликов, тот и выиграл.

Через три дня подведем итоги и огласим список победителей. Юридическая информация: https://proglib.io/best-post-contest.
источник
2021 May 23
Библиотека джависта
Разберись в программировании с нуля и стань
Middle Java-разработчиком за 15 месяцев!

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

💸Еще в процессе обучения центр карьеры OTUS поможет с трудоустройством.Занятия начинаются 30 июня!
💣Оставь заявку и успей занять место на специализацию «Java Developer», пока действует 25% скидка: https://otus.pw/SK9w/
источник
Библиотека джависта
#вопросы_с_собеседований
Расскажите про основные понятия ООП: «класс», «объект», «интерфейс».
источник
Библиотека джависта
Класс – это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью (контракт).

С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов).

С точки зрения структуры программы класс является сложным типом данных.

Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом. Каждый объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе.

Интерфейс – это набор методов класса, доступных для использования. Интерфейсом класса будет являться набор всех его публичных методов в совокупности с набором публичных атрибутов. По сути, интерфейс специфицирует класс, чётко определяя все возможные действия над ним.
источник
2021 May 24
Библиотека джависта
Можно ли выбрасывать исключение generic-типа?

Короткий ответ – да. Как в большинстве каверзных вопросов про дженерики, ответ становится очевидным если подумать, во что сотрутся типы-параметры.

Чтобы объявить, что метод выбрасывает исключение обобщенного типа T, этот тип T должен быть объявлен расширяющим Throwable. Именно в Throwable в таком случае сотрется T при компиляции. Также в качестве типа-верхней границы можно использовать любого наследника Throwable:

class MyClass<T extends IOException> {
   void foo() throws T {
        // ...
   }
}
источник
Библиотека джависта
Собираетесь освоить специальность Data Engineer?

Начните свой профессиональный путь уже 26 мая на демо-занятии «Загрузка источников данных с помощью StreamSets». Вместе с преподавателем Егором Матешуком, CDO AdTech-компании Квант, вы рассмотрите нюансы работы с различными типами источников и узнаете, как загружать их с помощью StreamSets.

Демо-урок — возможность попробовать онлайн-курс «Data Engineer» от OTUS и познакомиться с преподавателем.

Для регистрации на занятие пройдите вступительный тест https://otus.pw/YsQZ/

Бонус:
🔥  Успейте занять место на курсе со скидкой -20%
источник