Size: a a a

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

2020 October 12
Библиотека джависта
Класс java.io.RandomAccessFile обеспечивает чтение и запись данных в произвольном месте файла. Он не является частью иерархии InputStream или OutputStream. Это полностью отдельный класс, имеющий свои собственные (в большинстве своем native) методы. Объяснением этого может быть то, что RandomAccessFile имеет во многом отличающееся поведение по сравнению с остальными классами ввода/вывода так как позволяет, в пределах файла, перемещаться вперед и назад.

RandomAccessFile имеет такие специфические методы, как:

☕️ getFilePointer() для определения текущего местоположения в файле;
☕️ seek() для перемещения на новую позицию в файле;
☕️ length() для выяснения размера файла;
☕️ setLength() для установки размера файла;
☕️ skipBytes() для того, чтобы попытаться пропустить определённое число байт;
☕️ getChannel() для работы с уникальным файловым каналом, ассоциированным с заданным файлом;
☕️ методы для выполнения обычного и форматированного вывода из файла (read(), readInt(), readLine(), readUTF() и т.п.);
☕️ методы для обычной или форматированной записи в файл с прямым доступом (write(), writeBoolean(), writeByte() и т.п.).

Так же следует отметить, что конструкторы RandomAccessFile требуют второй аргумент, указывающий необходимый режим доступа к файлу - только чтение ("r"), чтение и запись ("rw") или иную их разновидность.
источник
Библиотека джависта
Разберитесь в архитектуре приложений на демо-уроке «Шаблон адаптер».

Он пройдёт 19 октября. Там будет:
— объектно-ориентированные адаптеры;
— где «живут» адаптеры;
— адаптеры объектов;
— адаптеры классов.
Урок является частью онлайн-курса «Архитектура и шаблоны проектирования».
Для регистрации пройдите вступительный тест:
https://otus.pw/tTAk/
источник
Библиотека джависта
#вопросы_с_собеседований
Почему в некоторых интерфейсах вообще не определяют методов?
источник
2020 October 13
Библиотека джависта
Это так называемые маркерные интерфейсы. Они просто указывают что класс относится к определенному типу. Примером может послужить интерфейс Clonable, который указывает на то, что класс поддерживает механизм клонирования.
источник
Библиотека джависта
☕️ Как в Java создавать собственные установочные пакеты JDK

Демонстрируем одну из новых возможностей Java 14 – создание нативных установочных версий JDK.

https://proglib.io/sh/v5MIDuL9Wh
источник
2020 October 14
Библиотека джависта
Прояви себя в цифре! Участвуй в региональных Онлайн-Хакатонах Цифрового Прорыва!

Тебя ждет насыщенная серия конкурсов с актуальным кейсами от бизнеса и государства, а призовой фонд каждого хакатона до 3 млн. руб.!

Выбирай удобные даты, понравившийся кейс, собирай команду и покажи, на что ты способен:

16.10 - 18.10 - Центральный Хаб: https://leadersofdigital.ru/event/63007

24.10 - 26.10 - Северо-Кавказский Хаб: https://leadersofdigital.ru/event/63006

31.10 - 02.11 - Уральский Хаб: https://leadersofdigital.ru/event/63009

14.11 - 16.11 - Северо-Западный Хаб: https://leadersofdigital.ru/event/63011

Стань частью цифрового будущего России!
источник
Библиотека джависта
#вопросы_с_собеседований
Существует ли способ решения проблемы race condition?
источник
2020 October 15
Библиотека джависта
Практический онлайн-курс «Enterprise-технологии в Java-разработке» — это курс, где ты научишься создавать корпоративные приложения и встраивать их в инфраструктуру бизнеса.

За шесть месяцев обучения ты сможешь сделаешь шаг от junior-разработчика к middle+ и в разы повысить свое конкурентное преимущество на рынке труда.

Здесь ты узнаешь:
- как работать с легаси-проектами и докручивать их, а не переписывать;
- как получать, хранить, обрабатывать данные через микросервисы;
- как подключать новые сервисы, не ломая работу старых;
- как работать с экосистемой микросервисов;
- как делать приложения отказоустойчивыми.
А главное, уже после вводных модулей ты включишься в командную разработку и сразу начнёшь применять полученные знания на практике.

Тебя ждут 22 тематических модуля и 170+ онлайн уроков, которые будут вести эксперты из SimbioWay и Сбербанка.

Результатом твоего обучения станет создание эмулятора работы инфраструктуры Netflix. Ты продумаешь архитектуру и разработаешь аналог популярного стримингового сервиса.


Переходи по ссылке https://clc.am/X_5-Tg записывайся на курс, пока действует скидка!
источник
Библиотека джависта
Распространённые способы решения race condition:

☕️ Использование локальной копии — копирование разделяемой переменной в локальную переменную потока. Этот способ работает только тогда, когда переменная одна и копирование производится атомарно (за одну машинную команду), использование volatile.
☕️ Синхронизация - операции над разделяемым ресурсом происходят в синхронизированном блоке (при использовании ключевого слова synchronized).
☕️ Комбинирование методов - вышеперечисленные способы можно комбинировать, копируя «опасные» переменные в синхронизированном блоке. С одной стороны, это снимает ограничение на атомарность, с другой — позволяет избавиться от слишком больших синхронизированных блоков.

Очевидных способов выявления и исправления состояний гонки не существует. Лучший способ избавиться от гонок — правильное проектирование многозадачной системы.
источник
Библиотека джависта
#вопросы_с_собеседований
В equals() требуется проверять, что аргумент equals(Object that) такого же типа, что и сам объект. В чем разница между this.getClass() == that.getClass() и that instanceof MyClass?
источник
2020 October 16
Библиотека джависта
Оператор instanceof сравнивает объект и указанный тип. Его можно использовать для проверки является ли данный объект экземпляром некоторого класса, либо экземпляром его дочернего класса, либо экземпляром класса, который реализует указанный интерфейс.

this.getClass() == that.getClass() проверяет два класса на идентичность, поэтому для корректной реализации контракта метода equals() необходимо использовать точное сравнение с помощью метода getClass().
источник
Библиотека джависта
🤔 Ищешь первую работу или стажировку? В этом тебе поможет бот Энди! У него всегда есть инфа об адекватных вакансиях и стажировках, где тебя не будут эксплуатировать за печеньки.

Сейчас Энди проводит онлайн-ярмарку вакансий trANDY career 2.0, которая будет длиться до 18 октября! Эта неделя посвящена IT-индустрии и соответствующим вакансиям 🔥

Тебя ждут встречи с представителями IT-отделов крупных компаний, новые конкурсы, топовые IT-вакансии и многое другое. Так что следи за новостями чтобы не пропустить анонсы и мероприятия! 🤩

И да, все вакансии уже есть в чат-боте! Переходи по ссылке, заходи в диалог с сообществом, жми на кнопку Участвовать в trANDY career и выбирай, куда отправить свое резюме (можно сразу на все!) 😉
👉🏻 https://vk.com/andy_for_you
источник
Библиотека джависта
#вопросы_с_собеседований
Что такое finalize()? Зачем он нужен?
источник
2020 October 17
Библиотека джависта
Через вызов метода finalize() (который наследуется от Java.lang.Object) JVM реализуется функциональность, аналогичная функциональности деструкторов в С++, используемых для очистки памяти перед возвращением управления операционной системе. Данный метод вызывается при уничтожении объекта сборщиком мусора (garbage collector) и, переопределяя finalize(), можно запрограммировать действия, необходимые для корректного удаления экземпляра класса - например, закрытие сетевых соединений, соединений с базой данных, снятие блокировок на файлы и т.д.

После выполнения этого метода объект должен быть повторно собран сборщиком мусора (и это считается серьезной проблемой метода finalize() т.к. он мешает сборщику мусора освобождать память). Вызов этого метода не гарантируется, т.к. приложение может быть завершено до того, как будет запущена сборка мусора.

Объект не обязательно будет доступен для сборки сразу же - метод finalize() может сохранить куда-нибудь ссылку на объект. Подобная ситуация называется «возрождением» объекта и считается антипаттерном. Главная проблема такого трюка - в том, что «возродить» объект можно только один раз.
источник
Библиотека джависта
Стать ближе к сфере кибербезопасности и получить первые знания и навыки вы сможете уже 20 октября на интенсиве «Старт в кибербезопасности: Level 0».

За 4 дня практических занятий с экспертом вы научитесь:

— Устанавливать и настраивать Linux-системы на виртуальные машины
— Устанавливать и настраивать сеть на Linux-системах
— Детально понимать взаимодействие между виртуальной и физической машиной
— Осуществлять ряд сетевых и связанных с уязвимостью ОС атак, и разрабатывать защиту от них
— Анализировать безопасность ОС

Что это вам даст?

— Получите необходимые знания о профессии, чтобы оценить свои силы и перспективы
— Детально разберетесь с чего начинается эффективная система информационной безопасности.
— Поймете принципы осуществления кибератак и получите реальный опыт
— Подготовитесь к поступлению на профессиональную программу «Специалист по информационной безопасности»

Эксперт интенсива — Ильдар Садыков, действующий руководитель отдела ИБ Федерального бюро МСЭ Министерство труда и социальной защиты РФ. Управляет 2 000 системами в 85 регионах РФ.

Примите участие в интенсиве и обеспечьте себе уверенный старт на пути к востребованной профессии!

Записаться на интенсив: https://is.gd/wYORYn
источник
Библиотека джависта
#вопросы_с_собеседований
Какой класс предназначен для работы с элементами файловой системы?
источник
2020 October 18
Библиотека джависта
File работает непосредственно с файлами и каталогами. Данный класс позволяет создавать новые элементы и получать информацию существующих: размер, права доступа, время и дату создания, путь к родительскому каталогу.
источник
Библиотека джависта
У каждого IT-специалиста найдется свой список технологий и навыков, которые надо освоить. Расставить приоритеты и найти на всё ресурсы бывает непросто, согласны?

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

Подписка на 3 онлайн-курса в месяц по цене одного — формат для тех, кто готов к интенсивному росту:
● Выберите срок подписки — полгода или год
● Проходите параллельно до 3-х курсов в месяц
● Меняйте курсы по желанию каждый месяц

Настройте индивидуальную траекторию обучения и приготовьтесь сделать карьерный скачок: https://otus.pw/Pe4f/
источник
Библиотека джависта
#вопросы_с_собеседований
В чем заключаются различия между cтеком (stack) и кучей (heap) с точки зрения многопоточности?
источник
2020 October 19
Библиотека джависта
Cтек – участок памяти, тесно связанный с потоками. У каждого потока есть свой стек, который хранит локальные переменные, параметры методов и стек вызовов. Переменная, хранящаяся в стеке одного потока, не видна для другого.

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