Java библиотека – Telegram
Java библиотека
31.5K subscribers
2.37K photos
89 videos
10 files
2.17K links
Книги, статьи, мемы и многое другое для Java программиста!

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

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

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

Сообщество VK https://vk.com/javatutorial
Download Telegram
new vs valueOf

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

Все оболочки, кроме чисел с плавающей точкой, от Byte до Long, имеют кэш. По умолчанию этот кэш содержит значения от -128 до 127. Следовательно, если ваше значение попадает в этот диапазон, то значение вернется из кэша. Значение из кэша достается в 3.5 раза быстрее, чем при использовании конструктора, плюс идёт экономия памяти.

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

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍248🔥6😁2
1715316072490 (1).gif
260.5 KB
Что такое ACID?

🟢Атомарность (Atomicity)
Гарантирует, что транзакция не будет зафиксирована частично. Все записи в транзакции выполняются одновременно и не могут быть разбиты на меньшие части. Если при выполнении транзакции возникают ошибки, все записи откатываются.

🟢Согласованность (Consistency)
Любые данные, записанные в ходе транзакции, должны быть валидны в соответствии со всеми определёнными правилами и поддерживать базу данных в корректном состоянии.

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

🟢Надежность (Durability)
Данные сохраняются после завершения транзакции, даже в случае сбоя системы.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥167👍7
Класс Hashtable

Представляет собой структуру данных, которая используется для хранения и управления коллекциями пар «ключ-значение». Hashtable является одной из структур данных, предоставляемых Java Collections Framework, и работает по принципу хеш-таблицы. Он был представлен в ранних версиях Java и является устаревшим начиная с Java 5, так как более современные альтернативы, такие как HashMap, предпочтительнее.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍96🔥3
Что выведет код сверху?

Ответ: Not equal. Переменная real не равна самой себе. Арифметика с плавающей запятой реализована в соответствии со стандартом IEEE 754, который требует возвращения специального значения «NaN» (от английского «Not a Number» — не число), когда ноль делится на ноль. В спецификации также указано, что NaN не равно никакому значению с плавающей запятой, включая само себя.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥86
java.time.LocalDate

Это класс из пакета java.time, введенного в Java 8, который предоставляет удобные средства для работы с датами в формате «год-месяц-день». Этот класс представляет собой дату без времени и без учета часовых поясов. Он используется для выполнения операций, связанных только с датами, без учета времени суток.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍4🔥2
🖥Мощная бесплатная система распознавания лиц с открытым исходным кодом

Language: Java
Stars: 5.2
Forks: 715

🖥 Github

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
14👍6🔥3🎄1
Anonymous Inner Class

Anonymous Inner Class (Анонимный Внутренний Класс) — это специальный тип внутреннего класса, который определяется без имени и создается «на лету» внутри блока кода или выражения. Он является удобным способом создания классов, когда класс нужен только для реализации какого-то интерфейса или абстрактного класса, и нет необходимости создавать отдельный именованный класс.

Анонимные внутренние классы обычно используются для создания объектов, которые реализуют интерфейсы или наследуются от абстрактных классов. Они часто используются в событийном программировании и обработке событий в пользовательском интерфейсе, где нужно определить обратный вызов (callback) или обработчик (handler) на месте.


Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍135🔥4
Media is too big
VIEW IN TELEGRAM
Знакомство с Armeria

На примере приложения с TINKOFF INVEST API познакомимся с фреймворком Armeria.

🌐🗣СМОТРЕТЬ VKVIDEO

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍5🔥2
🗑 Понимание различных сборщиков мусора в Java:

🟢Serial Garbage Collector: Лучший вариант для однопоточных приложений с небольшими кучами. Он использует один поток для выполнения как малых, так и больших сборок мусора, что приводит к значительным паузам, но минимальной нагрузке на систему.

🟢Parallel Garbage Collector: Подходит для приложений с высокими требованиями к пропускной способности. Использует несколько потоков для выполнения как малых, так и больших сборок мусора, уменьшая время пауз, но при этом увеличивая использование CPU.

🟢Concurrent Mark-Sweep (CMS) Garbage Collector: Разработан для минимизации пауз за счёт выполнения основной части работы по сборке мусора параллельно с выполнением приложений. Подходит для приложений, где критически важна низкая задержка.

🟢G1 Garbage Collector: Сбалансированный сборщик мусора, который стремится обеспечить предсказуемое время пауз, разделяя кучу на регионы и выполняя сборку мусора поэтапно. Является хорошим выбором по умолчанию для большинства приложений.

🟢Z Garbage Collector и Shenandoah: Сборщики мусора с ультранизкой задержкой, разработанные для работы с большими кучами. Основная часть работы по сборке мусора выполняется параллельно, что позволяет минимизировать время пауз даже при очень больших кучах.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍9🔥3
🖥 Что такое ElasticSearch

Elasticsearch — открытая распределенная система управления данными и поиска по ним, основанная на поисковом движке Apache Lucene.

Он предоставляет мощные возможности по индексированию, хранению, поиску и анализу больших объемов информации в реальном времени.

Он идеально подходит для приложений, требующих гибкости в поиске и высокой скорости обработки запросов. Благодаря интеграции с Kibana и Logstash, ElasticSearch становится мощным инструментом для мониторинга и анализа данных в реальном времени.

📌 Функции:

🔘Мгновенный поиск по большим объемам данных
🔘Гибкая схема индексации и поиска
🔘Легкость в масштабировании и интеграции

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍5🔥3
Вам наверняка понравится этот инструмент, если работаете с JSON 👇

Вложенные JSON-файлы часто сложно читать.
𝐉𝐬𝐨𝐧𝐂𝐫𝐚𝐜𝐤 создает графические диаграммы из JSON-файлов и делает их легко читаемыми.
Кроме того, созданные диаграммы можно скачать в виде изображений.
Также поддерживает YAML и XML.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🔥63❤‍🔥1
Kotlin. Паттерны проектирования и лучшие практики, 3-е изд. (2025) PDF, ePUB

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

Третье издание содержит актуальные обновления Kotlin, начиная с версии 1.6, и предлагает углубленное обсуждение таких тем, как структурированная конкурентность и контекстные приемники. Книга начинается с описания базового синтаксиса Kotlin и важности паттернов проектирования, в том числе классических порождающих, структурных и поведенческих паттернов. Затем она переходит к представлению средств функционального программирования и паттернов реактивной и конкурентной обработки, включая корутины и структурированную конкурентность. Знакомясь с этими продвинутыми концепциями, вы будете совершенствовать навыки программирования на Kotlin.
👍15🔥63
Метод dropWhile был введен в интерфейсе Stream в JDK 9. Этот метод позволяет пропускать элементы в начале потока данных, пока они удовлетворяют определенному условию, и возвращает новый поток, начиная с первого элемента, который не соответствует условию.

В примере метод dropWhile используется для пропуска элементов в потоке до тех пор, пока они меньше 0. После первого элемента, не соответствующего условию, оставшиеся элементы добавляются в новый поток.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥43
⌨️ Управление доступом к членам класса

Модификаторы уровня доступа определяют, могут ли другие классы использовать определенное поле или вызывать определенный метод.

Существует 4 уровня доступа:

🟢private
Указывает, что доступ возможен только в его собственном классе.

🟢package-private (нет явного модификатора)
Указывает, что доступ только внутри своего собственного пакета.

🟢protected
Указывает, что доступ возможен только внутри его собственного пакета (как в случае с package-private) и, кроме того, для подкласса его класса в другом пакете.

🟢public
Указывает, что доступ возможен отовсюду.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍176🔥3
Что такое абстрактные классы?

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

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍127🔥6
Cartesian product

Это операция, которая создает все возможные пары элементов, взятых из двух наборов. В Java это реализуется с помощью оператора foreach, который работает с коллекциями.

Например, если у нас есть две коллекции: A = {1, 2, 3} и B = {a, b}, то произведение A и B будет выглядеть следующим образом:

{(1, a), (1, b), (2, a), (2, b), (3, a), (3, b)}

Таким образом, мы получаем шесть возможных пар элементов из коллекций A и B.

В этом примере мы создаем две коллекции и используем два вложенных цикла для создания cartesian product. Созданное произведение сохраняется в коллекцию cartesianProduct типа List> и результат выводится на экран.


Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍115🔥4
Priority Queue

PriorityQueue — это коллекция, которая хранит элементы в соответствии с их приоритетом.
Реализует очередь на базе кучи (heap) и используется в ситуациях, когда необходимо обрабатывать или получать элементы в определенном порядке.

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

PriorityQueue не поддерживает изменение приоритета элемента после добавления.


Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍127🔥5
🚫 Ключевые проблемы многопоточности

🔵 Состояние гонки (Race Conditions):

Ситуация, когда несколько потоков пытаются одновременно читать и записывать общие данные, что приводит к непредсказуемым результатам.
Пример: Представьте, что два человека пытаются одновременно снять деньги с одного банковского счета. Без должной координации они могут снять больше денег, чем доступно на счете.

🔵 Взаимные блокировки (Deadlocks):

Ситуация, когда два или более потока застревают в ожидании друг друга для освобождения ресурсов, что приводит к тупиковой ситуации.
Пример: Два человека держат предметы, которые нужны друг другу, и оба ждут, пока другой первый отдаст свой предмет.

🔵 Ошибки конкуренции (Concurrency Bugs):

Ошибки, возникающие из-за неправильной обработки взаимодействия потоков, часто проявляющиеся как случайные проблемы.
Пример: Если два работника пишут в один и тот же файл без координации, их работа может перемешаться.

🔵 Прерывание потока (Thread Interruption):

Основная проблема заключается в том, что сигнал на прерывание лишь уведомляет поток о необходимости остановки, но сам поток должен обработать этот сигнал и завершить свою работу самостоятельно.
Пример: Если вам нужно, чтобы рабочий остановился, вы посылаете ему сигнал "стоп". Но нет гарантий, что это случится.

🔵 Ошибки согласованности памяти (Memory Consistency Errors):

Ситуация, когда разные потоки имеют устаревшее или несогласованное представление о разделяемой памяти.
Пример: Если один человек обновляет общий документ, а другие видят старую версию, они могут работать с неверной информацией.

🔵 Соперничество за ресурсы (Resource Contention):

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

🔵 Голодание (Starvation):

Ситуация, когда потоку постоянно отказывают в доступе к ресурсам из-за приоритета других потоков.
Пример: Если одного работника постоянно обходят вниманием в пользу других, он никогда не сможет выполнить свою работу.

Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍10🔥6
Механизм try-with-resources

Механизм try-with-resources — это способ автоматического закрытия ресурсов после их использования. Появился этот механизм в Java 7.
Он работает для классов, реализующих интерфейс AutoCloseable (например, потоки), уменьшает количество кода и упрощает обработку исключений.

Ресурсы объявляются в скобках после try и закрываются автоматически по завершении этого блока. Ресурсы закрываются в обратном порядке создания при нормальном или аварийном завершении.

По сравнению с блоком try-catch-finally этот механизм позволяет лаконичнее писать код с автозакрытием ресурсов.

В этом примере в блоке try создаются объекты FileReader и BufferedReader для чтения данных из файла.
После завершения блока try оба ресурса будут автоматически закрыты, даже если произойдет исключение.


Java библиотека #java
Please open Telegram to view this post
VIEW IN TELEGRAM
👍95🔥3