Java библиотека
31.7K subscribers
2.17K photos
65 videos
8 files
1.87K links
Книги, статьи, мемы и многое другое для Java программиста!

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

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

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

Сообщество VK https://vk.com/javatutorial
Download Telegram
Курс «Английский для разработчиков» Яндекс Практикума

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Представьте, что водитель едет в автомобиле по оживлённому участку движения. Понятно, что в этот момент он не будет задумываться о химическом составе краски автомобиля, особенностях взаимодействия шестерёнок в коробке передач или влияния формы кузова на скорость (разве что, автомобиль стоит в глухой пробке и водителю абсолютно нечем заняться). Однако, руль, педали, указатель поворота он будет использовать регулярно.
Программирование для Android на Kotlin. 3-е изд (2023) True PDF

Вам уже пришла в голову гениальная идея мобильного приложения, которое завоюет весь мир? Дело за малым — воплотить ее в жизнь.
Эта полностью переработанная и обновленная книга поможет сразу приступить к работе. Вы на практике узнаете, как структурировать приложение, создавать гибкие и интерактивные пользовательские интерфейсы, сохранять информацию в базе данных и использовать новейшие возможности Android Jetpack и Jetpack Compose. Все, что вам нужно для успешного старта — это немного базовых знаний о языке Kotlin.
LinkedHashMap - что в нем от LinkedList, а что от HashMap?

Реализация LinkedHashMap отличается от HashMap поддержкой двухсвязанного списка, определяющего порядок итерации по элементам структуры данных. По умолчанию элементы списка упорядочены согласно их порядку добавления в LinkedHashMap (insertion-order). Однако порядок итерации можно изменить, установив параметр конструктора accessOrder в значение true. В этом случае доступ осуществляется по порядку последнего обращения к элементу (access-order). Это означает, что при вызове методов get() или put() элемент, к которому обращаемся, перемещается в конец списка.

При добавлении элемента, который уже присутствует в LinkedHashMap (т.е. с одинаковым ключом), порядок итерации по элементам не изменяется.
Java Programming Made Easy: Unlock Your Coding Potential from Scratch (2023) PDF

Step into the exciting world of coding with "Java Programming Made Easy: Unlock Your Coding Potential from Scratch". Whether you're an absolute beginner with zero coding experience or an experienced programmer looking to brush up your Java skills, this comprehensive guide is your perfect companion. We've distilled complex concepts into simple, easy-to-understand explanations, complete with hands-on examples and practical exercises.

Unleash the power of one of the world's most popular programming languages. From the very basics to advanced topics, we'll guide you every step of the way in your journey to master Java. This book is packed with practical insights, expert tips, and plenty of code examples that will help you learn, practice, and excel in Java programming.
Как устроен HashMap?

HashMap состоит из «корзин» (bucket). С технической точки зрения «корзины» — это элементы массива, которые хранят ссылки на списки элементов. При добавлении новой пары «ключ-значение», вычисляет хэш-код ключа, на основании которого вычисляется номер корзины (номер ячейки массива), в которую попадет новый элемент. Если корзина пустая, то в нее сохраняется ссылка на вновь добавляемый элемент, если же там уже есть элемент, то происходит последовательный переход по ссылкам между элементами в цепочке, в поисках последнего элемента, от которого и ставится ссылка на вновь добавленный элемент. Если в списке был найден элемент с таким же ключом, то он заменяется.