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
Pro RESTful APIs with Micronaut: Build Java-Based Microservices with REST, JSON, and XML, 2nd Edition (2023) PDF, ePUB, mobi

Discover the RESTful technologies, including REST, JSON, XML, JAX-RS web services, SOAP and more, for building today's Java-based microservices, big data applications, and web service applications using the Micronaut framework. This book is based on a course the Oracle-based author is teaching for UC Santa Cruz Silicon Valley which covers architecture, design best practices and coding labs.

Pro RESTful APIs with Micronaut (Second Edition) gives you all the fundamentals from the top down: from the top (architecture) through the middle (design) to the bottom (coding). This book is a must have for any microservices or web services application programmer or developer building applications and services for today's enterprises.

Who This Book Is For
Experienced Java and web programmers and developers who may be new to microservices and even cloud-native applications development.
👍8🔥3
Грокаем функциональное мышление (2023) PDF

Кодовые базы разрастаются, становясь всё сложнее и запутаннее, что не может не пугать разработчиков. Как обнаружить код, изменяющий состояние вашей системы? Как сделать код таким, чтобы он не увеличивал сложность и запутанность кодовой базы? Большую часть «действий», изменяющих состояние, можно превратить в «вычисления», чтобы ваш код стал проще и логичнее. Вы научитесь бороться со сложными ошибками синхронизации, которые неизбежно проникают в асинхронный и многопоточный код, узнаете, как компонуемые абстракции предотвращают дублирование кода, и откроете для себя новые уровни его выразительности. Книга предназначена для разработчиков среднего и высокого уровня, создающих сложный код. Примеры, иллюстрации, вопросы для самопроверки и практические задания помогут надежно закрепить новые знания.
👍281
Forwarded from Java News
9 ложных или устаревших представлений о Java

С момента первого выпуска Java в 1995 году многое изменилось как в программном, так и в аппаратном обеспечении. А переход на шестимесячный цикл релизов способствовал стремительной эволюции языка и инструментов Java.

В этой статье рассматриваются ложные и устаревшие представления о Java.

Читать статью
👍15🔥4
Что такое busy spin?

busy spin – это техника, которую программисты используют, чтобы заставить поток ожидать при определённом условии. В отличие от традиционных методов wait(), sleep() или yield(), которые подразумевают уступку процессорного времени, этот метод вместо уступки выполняет пустой цикл. Это необходимо, для того, чтобы сохранить кэш процессора, т.к. в многоядерных системах, существует вероятность, что приостановленный поток продолжит своё выполнение уже на другом ядре, а это повлечет за собой перестройку состояния процессорного кэша, которая является достаточно затратной процедурой.
👍62🔥32
👩‍💻 Алгоритм определения анаграмм

Если одно слово состоит из того же набора букв, что и другое, то эти слова друг для друга являются анаграммами. В этом видео разберём алгоритм проверки таких слов на Java.

Рассмотрим два варианта реализации алгоритма. Один из них использует мапу, второй - стандартную сортировку массивов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍141
OCP Oracle Certified Professional Java SE 17 Developer Practice Tests: Exam 1Z0-829 (2022) pdf, epub

In OCP Oracle Certified Professional Java SE 17 Developer Practice Tests: Exam 1Z0-829, a team of veteran Java developers helps you gain the confidence and knowledge you need to take the Oracle Certified Professional Java SE 17 Developer exam. Hundreds of domain-by-domain questions accompany complimentary online access to bonus questions, providing you with over 1000 practice questions and answers.

You’ll also get:
Access to Sybex's proven online interactive learning environment and test bank
Comprehensive coverage of every domain included on the OCP Java SE 17 Developer exam
Three complete bonus practice exams to help you gain confidence and develop proficiency in Java development
This resource is perfect for anyone preparing to take Exam 1Z0-829. It also belongs on the bookshelves of novice and veteran Java programmers hoping to improve their on-the-job coding skills.
👍202
👩‍💻 GraphQL в Spring Boot и проблема N + 1

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

Относительно недавно в Spring Boot появился компонент для работы c GraphQL и мы сделаем проект на его основе. Для удобства отладки также подключим отладочный веб-интерфейс graphiql.

Ещё
рассмотрим проблему N+1, когда для каждого элемента результирующего списка выполняется дополнительный запрос.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤‍🔥2🔥2
Основы Java. 2-е изд. (2019) PDF, DJVU

Описан базовый синтаксис языка Java: типы данных, операторы, условия, циклы, регулярные выражения, лямбда-выражения, ссылки на методы, объектно-ориентированное программирование. Рассмотрены основные классы стандартной библиотеки, получение данных из сети Интернет, работа с базой данных MySQL. Приводится описание Date API, Stream API, лямбда-выражений, ссылок на методы, функциональные интерфейсы и др. Во втором издании приводится описание большинства нововведений: модули, интерактивная оболочка JShell, инструкция var и др. Книга содержит большое количество практических примеров, помогающих начать программировать на языке Java самостоятельно. Весь материал тщательно подобран, хорошо структурирован и компактно изложен, что позволяет использовать книгу как удобный справочник. Электронный архив с примерами из книги можно скачать с сайта издательства.
👍171
Перечислите принципы, которым вы следуете в многопоточном программировании?

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

• Всегда давайте значимые имена своим потокам. Процесс отладки, нахождения ошибок или отслеживание исключения в многопоточном коде – довольно сложная задача. OrderProcessor, QuoteProcessor или TradeProcessor намного информативнее, чем Thread1, Thread2 и Thread3. Имя должно отражать задачу, выполняемую данным потоком.
• Избегайте блокировок или старайтесь уменьшить масштабы синхронизации. Блокировка затратна, а переключение контекста ещё более ресурсоёмко. Пытайтесь избегать синхронизации и блокировки насколько это возможно, и организуйте критическую секцию в минимально необходимом объёме. Поэтому синхронизированный блок всегда предпочительней синхронизированного метода, дополнительно наделяя возможностью абсолютного контроля над масштабом блокировки.
• Обрабатывайте прерывание потока с особой тщательностью. Нет ничего хуже оставшегося заблокированным ресурса или системы в неконстистентном, по причине неподтверждённой транзакции, состоянии.
• Помните об обработке исключений. Выброшенные InterruptedException должны быть адекватно обработаны, а не просто подавлены. Так же не стоит пренебрегать Thread.UncaughtExceptionHandler. При использовании пула потоков необходимо помнить, что он зачастую просто «проглатывает» исключения. Так, если вы отправили на выполнение Runnable нужно обязательно поместить код выполнения задачи внутрь блока try-catch. Если в очередь пула помещается Callable, необходимо удостоверится, что результат выполнения всегда изымается помощью блокирующего get(), чтобы в случае возникновения существовала возможнотсь заново выбросить произошедшее исключение.
• Между синхронизаторами и wait() и notify() следует выбирать синхронизаторы. Во-первых, синхронизаторы, типа CountDownLatch, Semaphore, CyclicBarrier или Exchanger упрощают написание кода. Очень сложно реализовывать комплексный управляющий поток, используя wait() и notify(). Во-вторых, эти классы написаны и поддерживаются настоящими мастерами своего дела и есть шанс, что в последующих версиях JDK они будут оптимизированы изнутри или заменены более производительной внешней реализацией.
• Почти всегда использование Concurrent сollection выгоднее использования Synchronized сollection, т.к. первые более современны (используют все доступные на момент их написания новшества языка) и масштабируемы, чем их синхронизированые аналоги.
🔥22👍184
👩‍💻 Прекрасный и ужасный ООП в Java

В программировании на ООП-языках сложились определенные догмы о качестве. Некоторые противоречат друг другу, а некоторые по-разному трактуются разными авторами. Денис еще больше усомнился в непоколебимости этих догм после просмотра выступлений Егора Бугаенко на JPoint и Joker. Часть идей кажутся логичными, но на первый взгляд недостижимыми в типовых проектах.

Спикер
рассмотрит:
1. Некоторые противоречия догм в ООП.
2. Отличия ООП Джеймса Гослинга (James Gosling) в Java от ООП Алана Кея (Alan Kay).
3. Рассуждения о «серебряной пуле».
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11
Какое из следующих утверждений о потоках неверно?

1. Если метод start() вызывается дважды для одного и того же объекта Thread, во время выполнения генерируется исключение.
2. Порядок, в котором запускались потоки, может не совпадать с порядком их фактического выполнения.
3. Если метод run() вызывается напрямую для объекта Thread, во время выполнения генерируется исключение.
4. Если метод sleep() вызывается для потока, во время выполнения синхронизированного кода, блокировка не снимается.

Правильный ответ: 3. Если метод run() вызывается напрямую для объекта Thread, во время выполнения исключение не генерируется. Однако, код, написанный в методе run() будет выполняться текущим, а не новым потоком. Таким образом, правильный способ запустить поток – это вызов метода start(), который приводит к выполнению метода run() новым потоком.

Вызов метода start() дважды для одного и того же объекта Thread приведёт к генерированию исключения IllegalThreadStateException во время выполнения, следовательно, утверждение 1 верно. Утверждение 2 верно, так как порядок, в котором выполняются потоки, определяется Планировщиком потоков, независимо от того, какой поток запущен первым. Утверждение 4 верно, так как поток не освободит блокировки, которые он держит, когда он переходит в состояние Ожидания.
👍355
Практика реактивного программирования в Spring 5 (2019) PDF

Создание облачных реактивных систем с помощью Spring 5 и Project Reactor Современному бизнесу необходимы программные системы нового типа, способные оставаться отзывчивыми при любых нагрузках. Эту потребность можно удовлетворить с использованием приемов реактивного программирования; однако разработка таких систем - сложная задача, требующая глубокого понимания предметной области. Для разработки отзывчивых систем разработчики Spring Framework придумали и создали проект Project Reactor. Данная книга начинается с основ реактивного программирования в Spring. Вы исследуете многочисленные возможности построения эффективных реактивных систем с помощью Spring 5 и других инструментов, таких как WebFlux и Spring Boot. Познакомитесь с методами реактивного программирования и научитесь использовать их для взаимодействий с базами данных и между серверами.
👍13❤‍🔥32
👩‍💻 Разбор и вычисление арифметических выражений на Java

Разберёмся, как можно вычислять арифметические выражения. Предположим, на вход нам поступает строка текста, которая содержит корректное арифметическое выражение.

Это выражение состоит из пробелов, чисел, скобок и знаков, обозначающих основные математические действия (плюс, минус, умножить, разделить). Нам нужно разобрать это выражение на отдельные элементы, а затем вычислить результат с учётом приоритетов математических операций.

Обработку такого выражения можно разделить на три основных этапа:
1. Разбиение строки на отдельные части
2. Обработка этих частей с учётом математических операций
3. Само вычисление
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥4
Head First. Паттерны проектирования. 2-е издание (2021) PDF

Не имеет смысла каждый раз изобретать велосипед, лучше сразу освоить приемы проектирования, которые уже созданы людьми, сталкивавшимися с аналогичными задачами. В этой книге рассказано, какие паттерны действительно важны, когда и при каких условиях ими необходимо пользоваться, как применить их в ваших проектах и на каких принципах объектно-ориентированного проектирования они построены. Присоединяйтесь к сотням тысяч разработчиков, которые повысили свою квалификацию объектно-ориентированного проектирования благодаря книге «Head First. Паттерны проектирования».Если вы уже читали книги из серии Head First, то знаете, что вас ждет визуально насыщенный формат, разработанный с учетом особенностей работы мозга.
👍14🔥65❤‍🔥2
Даны 3 потока Т1, Т2 и Т3? Как реализовать выполнение в последовательности Т1, Т2, Т3?

Такой последовательности выполнения можно достичь многими способами, например просто воспользоваться методом join(), чтобы запустить поток в момент, когда другой уже закончит своё выполнение. Для реализации заданной последовательности, нужно запустить последний поток первым, и затем вызывать метод join() в обратном порядке, то есть Т3 вызывает Т2.join, а Т2 вызывает Т1.join, таким образом Т1 закончит выполнение первым, а Т3 последним.
👍32🔥42🎄2
👩‍💻 Вопросы с senior java интервью [1/3]

Автор прошел и провел достаточное количество интервью и решил поделиться типовыми вопросами с собеседований, всего планирует 3 части, все вопросы реально спрашивали.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥5
Идеальная работа. Программирование без прикрас (2022) PDF

В книге «Идеальная работа. Программирование без прикрас» легендарный Роберт Мартин (Дядюшка Боб) создал исчерпывающее руководство по хорошей работе для каждого программиста. Роберт Мартин объединяет дисциплины, стандарты и вопросы этики, необходимые для быстрой и продуктивной разработки надежного, эффективного кода, позволяющего испытывать гордость за программное обеспечение, которое вы создаете каждый день. Роберт Мартин, автор бестселлера «Чистый код», начинает с прагматического руководства по пяти основополагающим дисциплинам создания программного обеспечения: разработка через тестирование, рефакторинг, простой дизайн, совместное программирование и тесты. Затем он переходит к стандартам — обрисовывая ожидания «мира» от разработчиков программного обеспечения, рассказывая, как часто различаются эти подходы, и помогает вам устранить несоответствия.
10👍8🔥1
Что такое «сервлет»?

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

Большинство необходимых для создания сервлетов классов и интерфейсов содержатся в пакетах javax.servlet и javax.servlet.http.

Основные методы сервлета:
public void init(ServletConfig config) throws ServletException запускается сразу после загрузки сервлета в память;
public ServletConfig getServletConfig() возвращает ссылку на объект, который предоставляет доступ к информации о конфигурации сервлета;
public String getServletInfo() возвращает строку, содержащую информацию о сервлете, например: автор и версия сервлета;
public void service(ServletRequest request, ServletResponse response) throws ServletException, java.io.IOException вызывается для обработки каждого запроса;
public void destroy() выполняется перед выгрузкой сервлета из памяти.
👍42❤‍🔥21
Forwarded from Java News
Лучшие практики для Java-приложений в Kubernetes

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

Однако я рассматриваю все правила в рамках характеристик Java, а также показываю решения и инструменты, доступные для приложений на базе JVM.

Некоторые из этих рекомендаций по Kubernetes навязаны дизайном при использовании самых популярных Java-фреймворков, таких, как Spring Boot или Quarkus. Я покажу вам, как эффективно использовать их для упрощения жизни разработчиков.

Читать статью
👍11
👩‍💻 Java. Проблема с null. Null safety.

В этом видео автор рассказывает о проблеме с null в языке программирования Java, из-за которой возникает печально известное NullPointerExeption. Даёт некоторые рекомендации по организации кода для борьбы с этой проблемой и повышения надежности работы программ.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Какова структура веб-проекта?

src/main/java Исходники приложения/библиотеки

src/main/resources Ресурсные файлы приложения/библиотеки

src/main/filters Файлы сервлетных фильтров

src/main/webapp Исходники веб-приложения

src/test/java Исходники тестов

src/test/resources Ресурсные файлы тестов

src/test/filters Тесты сервлетных фильтров

src/it Интеграционные тесты

src/assembly Описание сборки

src/site Сайт

LICENSE.txt Лицензия проекта

NOTICE.txt Замечания и определения библиотек зависимостей.

README.txt Описание проекта
👍4231