Java библиотека
31.6K subscribers
2.31K photos
77 videos
8 files
2.04K links
Книги, статьи, мемы и многое другое для Java программиста!

По сотрудничеству и рекламе: @NadikaKir

Канал в перечне РКН: https://vk.cc/cJrT4A

Мы на бирже: https://telega.in/c/javalib/

Сообщество VK https://vk.com/javatutorial
Download Telegram
В реализации класса ArrayList есть следующие поля: Object[] elementData, int size. Объясните, зачем хранить отдельно size, если всегда можно взять elementData.length?

Размер массива elementData представляет собой вместимость (capacity) ArrayList, которая всегда больше переменной size - реального количества хранимых элементов. При необходимости вместимость автоматически возрастает.
👍20🔥6
Напишите однопоточную программу, которая заставляет коллекцию выбросить ConcurrentModificationException.

Вопрос с подвохом: ConcurrentModificationException к многопоточности никакого отношения не имеет. Возникает эта штука тогда, когда мы пытаемся модифицировать коллекцию во время итерирования по ней.
👍28🔥41
Introduction to Java Through Game Development: Learn Java Programming Skills by Working with Video Games (2023) PDF, ePUB

Interested in learning how to program with Java? Let’s face it, the best way to learn to program is by writing programs. This can be a daunting proposition with the specter of hours of simple command line example programs hanging over your head. Fear not! Now you can learn to program in Java in a fun way by working on video games.

With this book, you’ll get to work with three Java game projects and have access to the complete game code for each project, including a full Java game engine. After completing Introduction to Java through Game Development, you’ll be proficient in Java programming, having worked with the language’s fundamental aspects throughout the text, and will be ready to further your Java and game programming expertise with confidence.
👍111🔥1
LinkedList — это односвязный, двусвязный или четырехсвязный список?

Двусвязный
: каждый элемент LinkedList хранит ссылку на предыдущий и следующий элементы.
👍30😁5🔥1
Курс «Английский для разработчиков» Яндекс Практикума

Для тех, кто хочет изменить свою профессиональную жизнь и работать в международной команде.

Обучение построено не вокруг абстрактной теории, а вокруг рабочих ситуаций и полезных для карьеры навыков:

Стендапы. Подготовитесь обсуждать задачи, задавать вопросы и просить о помощи.
👨‍💻 Работа с заказчиками. Научитесь презентовать решения, говорить про баги и фичи.
📣 Митапы. Сможете понимать на слух доклады и выступать сами.
😎 Собеседования. Научитесь рассказывать про свой опыт, понимать вопросы и тактично переспрашивать.
👯 Неформальное общение с коллегами. Сможете рассказать о своих интересах, опыте, планах на будущее.
💻 Код-ревью. Сможете описать сделанное, дать обратную связь, тактично отстоять своё мнение.

Запишитесь на бесплатную консультацию. Кураторы определят ваш уровень языка и расскажут подробнее про обучение.
👍7🔥21
Поиск позиции для вставки числового элемента в массив

Есть небольшой интересный прием, позволяющий найти позицию, в которую запрошенный элемент может быть вставлен в отсортированный массив.
👍18🔥4
Apache Kafka. Потоковая обработка и анализ данных, 2-е издание (2023) PDF

При работе любого корпоративного приложения образуются данные: файлы журналов, показатели, информация об активности пользователей, исходящие сообщения и другие. Правильное управление этими данными не менее важно, чем сами данные. Если вы архитектор, разработчик или инженер-технолог, но вы пока не знакомы с Apache Kafka, то из этой обновленной книги вы узнаете, как работать с потоковой платформой Kafka, позволяющей обрабатывать потоки данных в реальном времени. Дополнительные главы посвящены API AdminClient от Kafka, транзакциям, новым функциям безопасности и изменениям в инструментарии. Инженеры из Confluent и LinkedIn, ответственные за разработку Kafka, объясняют, как с помощью этой платформы развертывать производственные кластеры Kafka, писать надежные управляемые событиями микросервисы и создавать масштабируемые приложения для потоковой обработки данных.
👍164🔥2
Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)?

Для этого в LinkedList есть обратный итератор, который можно получить вызва метод descendingIterator().
👍26🔥5
Инкапсуляция

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

Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.

Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
👍279
👩‍💻 Java. Представление отрицательных чисел. Преобразование цветной фотографии в черно-белую.

В этом видео автор рассказывает о представлении в отрицательных чисел в компьютере на примере типа byte. Показывает, что можно получить, если забыть, что все целочисленные типы в языке программирования Java знаковые. В качестве практической части, пишет алгоритм для преобразования цветной фотографии в черно-белую.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥65
Stack считается «устаревшим». Чем его рекомендуют заменять? Почему?

Stack был добавлен в Java 1.0 как реализация стека LIFO (last-in-first-out) и является расширением коллекции Vector, хотя это несколько нарушает понятие стека (например, класс Vector предоставляет возможность обращаться к любому элементу по индексу). Является частично синхронизированной коллекцией (кроме метода добавления push()) с вытекающими отсюда последствиями в виде негативного воздействия на производительность. После добавления в Java 1.6 интерфейса Deque, рекомендуется использовать реализации именно этого интерфейса, например, ArrayDeque.
👍196😁1
👩‍💻 XML-конфигурация АОП в Spring Framework

Кроме AspectJ-стиля Spring Framework предоставляет возможность настройки компонентов аспектно-ориентированного программирования в XML. В этом ролике автор продемонстрирует пример настройки при помощи XML точек среза, советов, введений и советников.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍76
Java для чайников, 7-е издание (2019) PDF

Перед вами бестселлер для начинающих, посвященный Java 9 — новой версии самого мощного объектно-ориентированного языка программирования. Программа, написанная на Java, будет выполняться практически на любом компьютере, ноутбуке или портативном устройстве. Освоив Java, вы сможете создавать мультимедийные приложения, предназначенные для любой платформы. Независимо от того, на каком языке вы программировали раньше (и даже если вы никогда прежде не программировали), вы быстро научитесь создавать современные кроссплатформенные приложения, используя возможности Java 9.
👍168🔥4😁21
👩‍💻 Инструменты логгирования для платформы Java

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

Для записи события в лог вы можете использовать System.out, System.err и PrintStream в целом, но лучше для этого использовать специализированные инструменты: логгеры и фасады логгирования, о которых пойдёт речь в этом обзорном ролике. При подготовке к этому ролику я постарался разобраться с подавляющим большинством современных инструментов логгирования для проектов на платформе Java и сформулировать какие-то выводы. Надеюсь, после просмотра
этого ролика вам станет понятнее, что есть что в списе JUL, JCL, log4j, log4j 2, SLF4J и т.д., а так же, что стоит использовать, а что - нет.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥7
Зачем нужен HashMap, если есть Hashtable?

• Методы класса Hashtable синхронизированы, что приводит к снижению производительности, а HashMap - нет;
HashTable не может содержать элементы null, тогда как HashMap может содержать один ключ null и любое количество значений null;
Iterator у HashMap, в отличие от Enumeration у HashTable, работает по принципу «fail-fast» (выдает исключение при любой несогласованности данных).

Hashtable это устаревший класс и его использование не рекомендовано.
👍264
Forwarded from Java Guru 🤓
Что будет в результате компиляции и выполнения данного кода?
👍10🔥2
Forwarded from Java Guru 🤓
Что будет в результате компиляции и выполнения данного кода?
Anonymous Quiz
16%
vehiclebike
3%
vehiclecar
14%
carcar
5%
bikebike
29%
Ошибка выполнения
34%
Ошибка компиляции
👍9🔥2
В чем разница между HashMap и WeakHashMap? Для чего используется WeakHashMap?

В Java существует 4 типа ссылок: сильные (strong reference), мягкие (SoftReference), слабые (WeakReference) и фантомные (PhantomReference). Особенности каждого типа ссылок связаны с работой Garbage Collector. Если объект можно достичь только с помощью цепочки WeakReference (то есть на него отсутствуют сильные и мягкие ссылки), то данный объект будет помечен на удаление.

WeakHashMap - это структура данных, реализующая интерфейс Map и основанная на использовании WeakReference для хранения ключей. Таким образом, пара «ключ-значение» будет удалена из WeakHashMap, если на объект-ключ более не имеется сильных ссылок.

В качестве примера использования такой структуры данных можно привести следующую ситуацию: допустим имеются объекты, которые необходимо расширить дополнительной информацией, при этом изменение класса этих объектов нежелательно либо невозможно. В этом случае добавляем каждый объект в WeakHashMap в качестве ключа, а в качестве значения - нужную информацию. Таким образом, пока на объект имеется сильная ссылка (либо мягкая), можно проверять хэш-таблицу и извлекать информацию. Как только объект будет удален, то WeakReference для этого ключа будет помещен в ReferenceQueue и затем соответствующая запись для этой слабой ссылки будет удалена из WeakHashMap.
👍193🔥3
Что такое «абстракция»?

Абстрагирование – это способ выделить набор общих характеристик объекта, исключая из рассмотрения частные и незначимые. Соответственно, абстракция – это набор всех таких характеристик.

Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно.
👍23🔥2