Size: a a a

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

2020 July 12
Библиотека джависта
Semaphore – это новый тип синхронизатора: семафор со счётчиком, реализующий шаблон синхронизации Семафор. Доступ управляется с помощью счётчика: изначальное значение счётчика задаётся в конструкторе при создании синхронизатора, когда поток заходит в заданный блок кода, то значение счётчика уменьшается на единицу, когда поток его покидает, то увеличивается. Если значение счётчика равно нулю, то текущий поток блокируется, пока кто-нибудь не выйдет из защищаемого блока. Semaphore используется для защиты дорогих ресурсов, которые доступны в ограниченном количестве, например подключение к базе данных в пуле.
источник
2020 July 13
Библиотека джависта
Курс лекций по основам разработки на Java.

https://proglib.io/w/592e69e2
источник
Библиотека джависта
#вопросы_с_собеседований
В чем разница между композицией и агрегацией?
источник
2020 July 14
Библиотека джависта
Ассоциация обозначает связь между объектами. Композиция и агрегация — частные случаи ассоциации «часть-целое».

Агрегация предполагает, что объекты связаны взаимоотношением «part-of» (часть). Композиция - более строгий вариант агрегации. Дополнительно к требованию «part-of» накладывается условие, что экземпляр «части» может входить только в одно целое (или никуда не входить), в то время как в случае агрегации экземпляр «части» может входить в несколько целых.

Например, книга состоит из страниц, и мы не можем вырвать страницу из книги и вложить в другую книгу. Страницы четко привязаны к конкретной книге, поэтому это композиция. В тоже время мы можем взять и перенести книгу из одной библиотеки в другую - это уже агрегация.
источник
Библиотека джависта
Открытое занятие — это не только возможность пообщаться с экспертом, но и бесплатно попробовать обновленный практический онлайн-курс «Team Lead».

Зарегистрируйтесь и смотрите 20 июля вебинар «Обратная связь и развитие в IT-команде»: https://otus.pw/iwvV/

За 1,5 часа вы научитесь решать задачи:
- Как организовать открытый обмен мнениями
- Как составлять план развития и ставить цели «на вырост»
- Как давать конструктивную обратную связь

Вебинар проведет Георгий Могелашвили, Lead Developer в Booking com в Амстердаме и преподаватель продвинутого онлайн-курса для тимлидов в Отус.

Присоединяйтесь к профессионалам.
источник
Библиотека джависта
#вопросы_с_собеседований
Какие разновидности сборщиков мусора реализованы в виртуальной машине HotSpot?
источник
2020 July 15
Библиотека джависта
Java HotSpot VM предоставляет разработчикам на выбор четыре различных сборщика мусора:

☕️ Serial (последовательный) — самый простой вариант для приложений с небольшим объемом данных и не требовательных к задержкам. На данный момент используется сравнительно редко, но на слабых компьютерах может быть выбран виртуальной машиной в качестве сборщика по умолчанию. Использование Serial GC включается опцией -XX:+UseSerialGC.
☕️ Parallel (параллельный) — наследует подходы к сборке от последовательного сборщика, но добавляет параллелизм в некоторые операции, а также возможности по автоматической подстройке под требуемые параметры производительности. Параллельный сборщик включается опцией -XX:+UseParallelGC.
☕️ Concurrent Mark Sweep (CMS) — нацелен на снижение максимальных задержек путем выполнения части работ по сборке мусора параллельно с основными потоками приложения. Подходит для работы с относительно большими объемами данных в памяти. Использование CMS GC включается опцией -XX:+UseConcMarkSweepGC.
☕️ Garbage-First (G1) — создан для замены CMS, особенно в серверных приложениях, работающих на многопроцессорных серверах и оперирующих большими объемами данных. G1 включается опцией Java -XX:+UseG1GC.

Обязательно сообщайте в комментариях👆 о найденных неточностях, если таковые имеются.
источник
Библиотека джависта
​​OTUS приглашает на бесплатные пробные уроки онлайн-курсов «Scala-разботчик», «Backend-разработка на Kotlin», «Алгоритмы и структуры данных»:

📌22.07 — «Scala в разработке веб-приложений»: https://otus.pw/578N/
Выясним, почему вам уже сейчас нужно переходить на Scala. Что такое Scala-way и функциональное программирование, и зачем оно вам. Как использовать Scala в вашем Java-приложении и как создать Scala-приложение с нуля.

📌22.07 — «Kotlin Multiplatform: Front/Back на одном языке»: https://otus.pw/42jS/
До сих пор дублируете код на бэкенде и фронтенде? В течение полуторачасового вебинара мы создадим небольшую библиотеку, которую подключим к бэкенду на Kotlin и фронтенд-приложению на JavaScript.

📌24.07 — «Пирамидальная сортировка HeapSort»: https://otus.pw/OtWA/
Реализуем алгоритм сортировки выбором - SelectionSort, а потом внедрим в него двоичный поиск максимального элемента. Получим пирамидальную сортировку HeapSort с квазилинейной сложностью, вместо квадратичной.

Проверьте, насколько вам подходит вебинар, пройдя тест при регистрации!
источник
Библиотека джависта
#вопросы_с_собеседований
Что такое «система управления базами данных»?
источник
2020 July 16
Библиотека джависта
Система управления базами данных (СУБД) - набор средств общего или специального назначения, обеспечивающий создание, доступ к материалам и управление базой данных.

Основные функции СУБД:

☕️ управление данными;
☕️ журнализация изменений данных;
☕️ резервное копирование и восстановление данных;
☕️ поддержка языка определения данных и манипулирования ими.
источник
Библиотека джависта
Что мотивирует вас откликнуться на вакансию?
источник
2020 July 17
Библиотека джависта
#вопросы_с_собеседований
Что такое статическое и динамическое связывание?
источник
Библиотека джависта
Присоединение вызова метода к телу метода называется связыванием. Если связывание проводится компилятором (компоновщиком) перед запуском программы, то оно называется статическим или ранним связыванием (early binding).

В свою очередь, позднее связывание (late binding) - это связывание, проводимое непосредственно во время выполнения программы, в зависимости от типа объекта. Позднее связывание также называют динамическим (dynamic) или связыванием на стадии выполнения (runtime binding). В языках, реализующих позднее связывание, должен существовать механизм определения фактического типа объекта во время работы программы, для вызова подходящего метода. Иначе говоря, компилятор не знает тип объекта, но механизм вызова методов определяет его и вызывает соответствующее тело метода. Механизм позднего связывания зависит от конкретного языка, но нетрудно предположить, что для его реализации в объекты должна включаться какая-то дополнительная информация.

Для всех методов Java используется механизм позднего (динамического) связывания, если только метод не был объявлен как final (приватные методы являются final по умолчанию).
источник
2020 July 18
Библиотека джависта
❇️ Мы ищем редактора-копирайтера для подготовки публикаций

Что делать:
— Подготовка нативных материалов по IT-тематике согласно контент-плану. Темы: программирование, информационная безопасность, Data Science и другие. Форматы материалов: лонгриды, обзоры, интервью, тесты, викторины и переводы англоязычных публикаций.
— Редакторская работа со структурой материала под ключ.
— Коммуникация с командой по внесению правок.
— Факт-чекинг, корректура написанных материалов.

Требования:
— Опыт написания материалов для IT-медиа, продукта или компании.  
— Понимание целевой аудитории и SEO-оптимизации.
— Умение написания материалов, полезных как для читателя, так и заказчика.
— Знание английского языка для  чтения и перевода иностранных источников.
— Приветствуется знание основ программирования и других направлений в IT-сфере.
— Готовность к выполнению тестового задания (оплачиваемое).
— Работа в команде с главным редактором.

Условия:
— Удаленная работа с соблюдением дедлайнов.  
— Оплата 40-50 тыс.руб. в зависимости от опыта работы, выплаты два раза в месяц.

С кем связаться:
Откликнуться на вакансию: artem@proglib.io. Присылайте несколько предложений о себе и опыте работы, ссылки на примеры публикаций. Резюме присылать не нужно. В случае взаимного интереса, мы пришлем вам тестовое задание.
источник
Библиотека джависта
Всем привет, на связи Слёрм!

Мы запускаем видеокурс по Docker, приглашаем всех желающих регистрироваться по ссылке http://to.slurm.io/sBsGwQ

Наш курс по Docker будет комплексным и обширным, мы начнем с введения и разбора основных абстракций, а закончим тем, что скрывается у Docker под капотом. Курс подойдет как разработчикам, так и системным администраторам.

Цена: 5 000 рублей.
Старт курса: 31 июля.
Видеозаписи: доступны навсегда.

Все студенты получат стенд от Selectel для прохождения практической части.
источник
Библиотека джависта
Android Test-Driven Development by Tutorials (2019)
Авторы: Victoria Gonda, Fernando Sproviero, Lance Gleason

Написание приложений — сложный процесс. Написание тестируемых приложений обычно ещё сложнее, но это не обязательно. Чтение и понимание всей официальной документации Google по тестированию может занять много времени и запутать. Из этой книги вы узнаете о разработке на основе Android-тестов быстрым и простым способом: следуя простым и легким для чтения туториалам. Эта книга предназначена для разработчиков среднего уровня, которые уже знакомы с основами разработки под Android на Kotlin, но хотят изучить Android-тестирование.

Скачать книгу
источник
2020 July 19
Библиотека джависта
#вопросы_с_собеседований
Stack считается «устаревшим». Чем его рекомендуют заменять? Почему?
источник
Библиотека джависта
Stack был добавлен в Java 1.0 как реализация стека LIFO (last-in-first-out) и является расширением коллекции Vector, хотя это несколько нарушает понятие стека (например, класс Vector предоставляет возможность обращаться к любому элементу по индексу). Является частично синхронизированной коллекцией (кроме метода добавления push()) с вытекающими отсюда последствиями в виде негативного воздействия на производительность. После добавления в Java 1.6 интерфейса Deque, рекомендуется использовать реализации именно этого интерфейса, например, ArrayDeque.
источник
2020 July 20
Библиотека джависта
#вопросы_с_собеседований
Что такое Optional?
источник
Библиотека джависта
Опциональное значение Optional — это контейнер для объекта, который может содержать или не содержать значение null. Такая обёртка является удобным средством предотвращения NullPointerException, т.к. имеет некоторые функции высшего порядка, избавляющие от добавления повторяющихся if null/notNull проверок:

Optional<String> optional = Optional.of("hello");

optional.isPresent(); // true
optional.ifPresent(s -> System.out.println(s.length())); // 5
optional.get(); // "hello"
optional.orElse("ops..."); // "hello"
источник