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

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

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

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

Сообщество VK https://vk.com/javatutorial
Download Telegram
Java in a Nutshell: A Desktop Quick Reference, 8th Edition (Final Release) (2023) PDF, ePUB

This updated edition of the Nutshell guide not only helps experienced Java programmers get the most out of versions through Java 17, it also serves as a learning path for new developers. Chock-full of examples that demonstrate how to take complete advantage of modern Java APIs and development best practices, this thoroughly revised book includes new material on recent enhancements to the Java object model that every developer should know about.

The first section provides a fast-paced, no-fluff introduction to the Java programming language and the core runtime aspects of the Java platform. The second section is a reference to core concepts and APIs that explains how to perform real programming work in the Java environment.
👍101
Сколько переходов происходит в момент вызова HashMap.get(key) по ключу, который есть в таблице?

• ключ равен null: 1 - выполняется единственный метод getForNullKey().
• любой ключ отличный от null: 4 - вычисление хэш-кода ключа; определение номера корзины; поиск значения; возврат значения.
👍36
👩‍💻 Запуск потоков в Java

В этой статье мы разберем различные способы запуска потоков. Описав задачу, мы выполнить ее в многопоточной среде при помощи класса Thread и сравним с продвинутыми способами работы создания и запуска потоков.

Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥1
SOLID на практике в автоматизации тестирования

Как на практике реализовать все принципы и упростить разработку тестирования BDD ?

Примером будет интеграционное тестирование, но вам ничего не помешает реализовать для End2End

Читать статью
👍82🔥1
Spring Boot 2. Лучшие практики для профессионалов (2020) PDF

Хотите повысить свою эффективность в разработке корпоративных и облачных Java-приложений?
Увеличьте скорость и простоту разработки микросервисов и сложных приложений, избавившись от забот по конфигурации Spring.
Используйте Spring Boot 2 и такие инструменты фреймворка Spring 5, как WebFlux, Security, Actuator, а также фреймворк Micrometer, предоставляющий новый способ сбора метрик.
В этой книге: настройка и использование Spring Boot 2; работа с нефункциональными требованиями с помощью Spring Boot Actuator; разработка веб-приложений с помощью Spring Boot 2; постоянное хранение данных с использованием JDBC, JPA и баз данных NoSQL; обмен сообщениями с помощью JMS, RabbitMQ и WebSockets; краткое знакомство с проектами Spring Cloud; тестирование, микросервисы и развертывание в облачной среде с использованием Spring Boot 2; расширение Spring Boot путем создания своего собственного «стартового набора» и добавления функциональности @ Enable.
11👍6🎄3🤩1
Сколько создается новых объектов, когда вы добавляете новый элемент в HashMap?

Один
новый объект статического вложенного класса Entry<K,V>.
👍31🔥2
Forwarded from Java News
Spring: новости за прошедшую неделю / 21-е февраля

Вашему вниманию предлагается информационная подборка материалов "Spring: новости за прошедшую неделю" от Джоша Лонга (Josh Long).

Приятного чтения! 😃

Читать статью
👍10🔥2
Современный язык Java. Лямбда-выражения, потоки и функциональное программирование (2020) PDF, EPUB

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

Книга поможет вам овладеть новыми возможностями современных дополнений, таких как API Streams и система модулей платформы Java. Откройте для себя новые подходы к конкурентности и узнайте, как концепции функциональности улучшают работу с кодом.

В этой книге:
- Новые возможности Java.
- Потоковые данные и реактивное программирование.
- Система модулей платформы Java.
👍23🔥5
Как и когда происходит увеличение количества корзин в HashMap?

Помимо capacity у HashMap есть еще поле loadFactor, на основании которого, вычисляется предельное количество занятых корзин capacity * loadFactor. По умолчанию loadFactor = 0.75. По достижению предельного значения, число корзин увеличивается в 2 раза и для всех хранимых элементов вычисляется новое «местоположение» с учетом нового числа корзин.
👍35
👩‍💻 GIT: ИСТОРИЯ СИСТЕМ КОНТРОЛЯ ВЕРСИЙ

В этом новом видео "История систем контроля версий" автор рассказывает об эволюции систем контроля версий, начиная с первых командных интерфейсов и заканчивая современными децентрализованными системами. Автор описывает основные принципы и функциональность таких систем, как SCCS, RCS, CVS, SVN и Git, рассказывает о их преимуществах и ограничениях, а также о том, как они повлияли на развитие современного программного обеспечения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1
Building Modern Apps for Android : Compose, Kotlin, Coroutines, Jetpack, and the best tools for native development (2022) True PDF, ePUB

This work is a guide and tool for every Architect or Developer of mobile applications. Many design concepts applied here will be helpful regardless of the technology or operating system used.
👍14
Объясните смысл параметров в конструкторе HashMap(int initialCapacity, float loadFactor).

initialCapacity - исходный размер HashMap, количество корзин в хэш-таблице в момент её создания.
loadFactor - коэффициент заполнения HashMap, при превышении которого происходит увеличение количества корзин и автоматическое перехэширование. Равен отношению числа уже хранимых элементов в таблице к её размеру.
👍22
Forwarded from Java News
Графический интерфейс для bash, делаем работу в командной строке удобнее

Когда пишешь код в IntelliJ IDEA, привыкаешь что везде есть подсказки, везде где можно работает комплишен, всегда можно одним кликом перейти на декларацию метода или на его юсаджи. После этого интерфейс командной строки выглядит как-то бедно. Конечно, он очень хорошо продуман, сделан настолько удобным, насколько это возможно в текстовом UI, но в графическом UI возможностей намного больше. Представляю вам плагин для JetBrains IDE, позволяющий работать в командной строке cо всеми удобствами IDE.

Читать статью
👍19🔥41
Система модулей Java, Год 2020

Создать надёжное и безопасное приложение гораздо проще, если упаковать код в аккуратные блоки. Система модулей в Java представляет собой языковой стандарт для создания таких блоков. Теперь вы можете контролировать взаимодействия различных JAR и легко обнаруживать недостающие зависимости. Фундаментальные изменения архитектуры затронули ядро Java, начиная с версии 9. Все API ядра распространяются в виде модулей, а для библиотек, фреймворков и приложений аналогичный подход можно считать хорошей практикой и рекомендацией.
Вы освоите наилучшие практики модульного проектирования, отладки приложения и его развертывания перед сдачей в продакшен.
В этой книге
- Архитектура модульного приложения Java.
- Создание модулей: от исходников до JAR-файлов.
- Миграция на версию Java с модулями.
- Избавление от зависимостей и оттачивание API.
- Обработка рефлексии и версионирование.
👍19🔥5
Forwarded from Java News
Prostore — простой Event sourcing + CQRS фреймворк

На данный момент на рынке мало Event sourcing + CQRS фреймворков. А те, что есть, непопулярны и имеют слабую поддержку, поэтому многие создают свои in-house решения. В этой статье расскажу о выполненном командой «Programming Store» проекте Prostore, который может послужить примером при создании вашего собственного решения.

Читать статью
👍11🔥3
Будет ли работать HashMap, если все добавляемые ключи будут иметь одинаковый hashCode()?

Да, будет, но в этом случае HashMap вырождается в связный список и теряет свои преимущества.
👍30
Forwarded from Java News
Руководство по обработке исключений в Java Stream

Друзья, вашему вниманию предлагается небольшое руководство по обработке исключений в Java Stream, из которого вы узнаете: 😃
✔️ Как обрабатывать проверяемые исключения, выбрасываемые методами из промежуточных операций в стримах
✔️ Как использовать блок try-catch в лямбда-выражениях
✔️ Как безопасно извлекать метод.

Также, даны рекомендации использовать Optional вместо выбрасывания значения null из извлекаемой функции.

Хорошей практики!

Читать статью
👍15🔥21
👩‍💻 Мониторинг Spring Boot, Prometheus и Grafana(Docker compose)

Экспортируем метрики в Prometheus, пишем кастомные метрики с помощью Micrometr, строим дашборды в Grafana. Поднимаем это все с помощью Docker compose.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥7
Spring Framework 6 и Spring Boot 3 появились несколько месяцев назад и уже используются в коммерческих проектах.

При этом Spring Framework в основе использует Java 17 и Jakarta EE, предлагая поддержку для конструирования нативных образов GraalVM и компонентных моделей времени компиляции в новом AOT-движке Spring, а также поддерживая проект Loom.

Про это и многое другое вам
расскажет Джош Лонг. 😃

Приятного просмотра!
👍11
В чём заключается разница между IO и NIO?

Java IO (input-output) является потокоориентированным, а Java NIO (new/non-blocking io) – буфер-ориентированным. Потокоориентированный ввод/вывод подразумевает чтение/запись из потока/в поток одного или нескольких байт в единицу времени поочередно. Данная информация нигде не кэшируются. Таким образом, невозможно произвольно двигаться по потоку данных вперед или назад. В Java NIO данные сначала считываются в буфер, что дает больше гибкости при обработке данных.
• Потоки ввода/вывода в Java IO являются блокирующими. Это значит, что когда в потоке выполнения вызывается read() или write() метод любого класса из пакета java.io.*, происходит блокировка до тех пор, пока данные не будут считаны или записаны. Поток выполнения в данный момент не может делать ничего другого. Неблокирующий режим Java NIO позволяет запрашивать считанные данные из канала (channel) и получать только то, что доступно на данный момент, или вообще ничего, если доступных данных пока нет. Вместо того, чтобы оставаться заблокированным пока данные не станут доступными для считывания, поток выполнения может заняться чем-то другим. Тоже самое справедливо и для неблокирующего вывода. Поток выполнения может запросить запись в канал некоторых данных, но не дожидаться при этом пока они не будут полностью записаны.
• В Java NIO имеются селекторы, которые позволяют одному потоку выполнения мониторить несколько каналов ввода. Т.е. существует возможность зарегистрировать несколько каналов с селектором, а потом использовать один поток выполнения для обслуживания каналов, имеющих доступные для обработки данные, или для выбора каналов, готовых для записи.
👍471❤‍🔥1