Head First. Паттерны проектирования. 2-е издание (2021) PDF
Не имеет смысла каждый раз изобретать велосипед, лучше сразу освоить приемы проектирования, которые уже созданы людьми, сталкивавшимися с аналогичными задачами. В этой книге рассказано, какие паттерны действительно важны, когда и при каких условиях ими необходимо пользоваться, как применить их в ваших проектах и на каких принципах объектно-ориентированного проектирования они построены. Присоединяйтесь к сотням тысяч разработчиков, которые повысили свою квалификацию объектно-ориентированного проектирования благодаря книге «Head First. Паттерны проектирования».Если вы уже читали книги из серии Head First, то знаете, что вас ждет визуально насыщенный формат, разработанный с учетом особенностей работы мозга.
Как отлаживать коллекции Java с Lightrun на продакшене
Делимся руководством о том, как отлаживать коллекции Java на продакшене с Lightrun и избегать при этом неприятностей с методом list.toArray().
Читать статью
🔥 Чем отличаются объектно-ориентированное и функциональное программирование?
⚡️ Приглашаем 1 июня в 20:00 мск на бесплатный вебинар «Объектно-ориентированное и функциональное программирование»!
📚 Вместе с практикующим экспертом Сергеем Петрелевичем мы на максимально простом уровне разберем отличия объектно-ориентированного и функционального подходов в программировании, а также рассмотрим примеры на языке Java.
Урок рассчитан на новичков в IT и пройдет в рамках онлайн-курса «Специализация Java-разработчик».
📌 Регистрация на бесплатный вебинар: https://otus.pw/qkpO/
В реализации класса ArrayList есть следующие поля: Object[] elementData, int size. Объясните, зачем хранить отдельно size, если всегда можно взять elementData.length?
Размер массива elementData представляет собой вместимость (capacity) ArrayList, которая всегда больше переменной size - реального количества хранимых элементов. При необходимости вместимость автоматически возрастает.
Kotlin Coroutines by Tutorials (3rd Edition) (2022) PDF
Android is inherently asynchronous and event-driven, with strict requirements as to on which thread certain things can happen. Learn how to use Kotlin coroutines to solve common Android programming problems using asynchronous programming techniques!
The importance of concurrency is discovered quite early on by people who start with Android development. Android is inherently asynchronous and event-driven, with strict requirements as to on which thread certain things can happen.
Add to this the often-cumbersome Java callback interfaces, and you will be trapped in spaghetti code pretty quickly (aptly termed as “Callback Hell”). No matter how many coding patterns you use to avoid that, you will have to encounter the state change across multiple threads in one way or the other.
The only way to create a responsive app is by leaving the UI thread as free as possible, letting all the hard work be done asynchronously by background threads.
💎 Интересен язык Scala?
️️❇️ Начните осваивать его уже 7 июня в 20:00! Ждем вас на открытом уроке «Эффекты в Scala» в OTUS. Занятие проведет Алексей Воронец, руководитель разработки в NAUMEN.
📕 На открытом уроке мы рассмотрим понятие эффекта и сложности, которые могут возникать при наличии эффектов, введем понятие функционального эффекта, рассмотрим его свойства и реализуем свой небольшой функциональный эффект.
⚠️ Этот урок — часть онлайн-курса «Scala Developer». Программа рассчитана на специалистов с опытом в Java от 1 года ли на других ООП от 3-х лет.
👉 Для участия пройдите вступительный тест
Какая версия JVM самая быстрая?
Как используемая версия JVM влияет на высокопроизводительное Java-приложение с малой задержкой? Каждая наносекунда на счету для торговых и других приложений, где обмен сообщениями между двумя разными потоками занимает около 500 нс!
В данной статье проводится тестирование скорости работы Java 8, Java 11 и Java 17, а также GraalVM Community и Enterprise Edition с помощью Chronicle Queue. Это постоянная среда обмена сообщениями Java с малой задержкой для высокопроизводительных и критически важных приложений.
Прочтите эту статью и узнайте, какой вариант JDK окажется лучшим!
Читать статью
Для ArrayList или для LinkedList операция добавления элемента в середину (list.add(list.size()/2, newElement)) медленнее?
Для ArrayList:
• проверка массива на вместимость. Если вместимости недостаточно, то увеличение размера массива и копирование всех элементов в новый массив (O(N));
• копирование всех элементов, расположенных правее от позиции вставки, на одну позицию вправо (O(N));
• вставка элемента (O(1)).
Для LinkedList:
• поиск позиции вставки (O(N));
• вставка элемента (O(1)).
В худшем случае вставка в середину списка эффективнее для LinkedList. В остальных - скорее всего, для ArrayList, поскольку копирование элементов осуществляется за счет вызова быстрого системного метода System.arraycopy().
ORM — отвратительный анти-паттерн
ORM - это ужасный анти-паттерн, который нарушает все принципы объектно-ориентированного программирования, разбирая объекты на части и превращая их в тупые и пассивные пакеты данных. Нет никаких оправданий существованию ORM в любом приложении, будь то небольшое веб-приложение или система корпоративного размера с тысячами таблиц и манипуляциями CRUD с ними. Какова альтернатива? Объекты, говорящие на языке SQL (SQL-speaking objects).
Читать статью
Full stack development with Spring Boot and React : build modern and scalable full stack applications using the power of Spring Boot and React (2022) PDF
Getting started with full stack development can be daunting. Even developers who are familiar with the best tools, such as Spring Boot and React, can struggle to nail the basics, let alone master the more advanced elements. If you're one of these developers, this comprehensive guide covers everything you need!
This updated edition of the Full Stack Development with Spring Boot 2 and React book will take you from novice to proficient in this expansive domain. Taking a practical approach, this book will first walk you through the latest Spring Boot features for creating a robust backend, covering everything from setting up the environment and dependency injection to security and testing.
Оцените количество памяти на хранение одного примитива типа byte в ArrayList?
ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому 16 байт тратится на хранение упакованного объекта и 4 байта (8 для x64) - на хранение ссылки на этот объект в самой структуре данных. Таким образом, в x32 JVM 4 байта используются на хранение одного элемента и 16 байт - на хранение упакованного объекта типа Byte. Для x64 - 8 байт и 24 байта соответственно.
Релиз Spring Boot 2.7.0
Состоялся релиз Spring Boot 2.7.0. В этом выпуске добавлено значительное количество новых функций и улучшений. Все подробности в статье.
Читать статью
Java Design Patterns: A Hands-On Experience with Real-World Examples, 3rd Edition (2022) PDF
Use the step-by-step approach of this book to learn and implement design patterns in real-world applications. It focuses on classical design patterns with Java 17 and Eclipse (2021-09). In addition to Gang of Four (GoF) design patterns, the book covers popular and alternative design patterns and includes criticisms of design patterns in a chapter on anti-patterns.
Самый редкий и актуальный материал для программистов любого уровня и направления.
Русскоязычная литература, курсы, статьи и мануалы. Всё это собрано в крупнейшей библиотеке в сегменте Telegram: https://t.me/campcode
Практика реактивного программирования в Spring 5 (2019) PDF
Создание облачных реактивных систем с помощью Spring 5 и Project Reactor Современному бизнесу необходимы программные системы нового типа, способные оставаться отзывчивыми при любых нагрузках. Эту потребность можно удовлетворить с использованием приемов реактивного программирования; однако разработка таких систем - сложная задача, требующая глубокого понимания предметной области. Для разработки отзывчивых систем разработчики Spring Framework придумали и создали проект Project Reactor. Данная книга начинается с основ реактивного программирования в Spring. Вы исследуете многочисленные возможности построения эффективных реактивных систем с помощью Spring 5 и других инструментов, таких как WebFlux и Spring Boot. Познакомитесь с методами реактивного программирования и научитесь использовать их для взаимодействий с базами данных и между серверами.
Как мы перевели API-модули микросервисного проекта с Feign на OpenFeign
Всем привет! Недавно мы решили задачу, как перейти на новую версию Spring + OpenFeign в мультимодульном проекте, в котором выделен API с навешенными аннотациями @RestController и @FeignClient.
Читать статью