Практика реактивного программирования в Spring 5 (2019) PDF
Создание облачных реактивных систем с помощью Spring 5 и Project Reactor Современному бизнесу необходимы программные системы нового типа, способные оставаться отзывчивыми при любых нагрузках. Эту потребность можно удовлетворить с использованием приемов реактивного программирования; однако разработка таких систем - сложная задача, требующая глубокого понимания предметной области. Для разработки отзывчивых систем разработчики Spring Framework придумали и создали проект Project Reactor. Данная книга начинается с основ реактивного программирования в Spring. Вы исследуете многочисленные возможности построения эффективных реактивных систем с помощью Spring 5 и других инструментов, таких как WebFlux и Spring Boot. Познакомитесь с методами реактивного программирования и научитесь использовать их для взаимодействий с базами данных и между серверами.
Создание облачных реактивных систем с помощью Spring 5 и Project Reactor Современному бизнесу необходимы программные системы нового типа, способные оставаться отзывчивыми при любых нагрузках. Эту потребность можно удовлетворить с использованием приемов реактивного программирования; однако разработка таких систем - сложная задача, требующая глубокого понимания предметной области. Для разработки отзывчивых систем разработчики Spring Framework придумали и создали проект Project Reactor. Данная книга начинается с основ реактивного программирования в Spring. Вы исследуете многочисленные возможности построения эффективных реактивных систем с помощью Spring 5 и других инструментов, таких как WebFlux и Spring Boot. Познакомитесь с методами реактивного программирования и научитесь использовать их для взаимодействий с базами данных и между серверами.
👍13❤🔥3❤2
Разберёмся, как можно вычислять арифметические выражения. Предположим, на вход нам поступает строка текста, которая содержит корректное арифметическое выражение.
Это выражение состоит из пробелов, чисел, скобок и знаков, обозначающих основные математические действия (плюс, минус, умножить, разделить). Нам нужно разобрать это выражение на отдельные элементы, а затем вычислить результат с учётом приоритетов математических операций.
Обработку такого выражения можно разделить на три основных этапа:
1. Разбиение строки на отдельные части
2. Обработка этих частей с учётом математических операций
3. Само вычисление
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Разбор и вычисление арифметических выражений на Java
#алгоритмы #java #калькулятор Разберёмся, как можно вычислять арифметические выражения. Предположим, на вход нам поступает строка текста, которая содержит корректное арифметическое выражение.
Это выражение состоит из пробелов, чисел, скобок и знаков, обозначающих…
Это выражение состоит из пробелов, чисел, скобок и знаков, обозначающих…
👍16🔥4
Head First. Паттерны проектирования. 2-е издание (2021) PDF
Не имеет смысла каждый раз изобретать велосипед, лучше сразу освоить приемы проектирования, которые уже созданы людьми, сталкивавшимися с аналогичными задачами. В этой книге рассказано, какие паттерны действительно важны, когда и при каких условиях ими необходимо пользоваться, как применить их в ваших проектах и на каких принципах объектно-ориентированного проектирования они построены. Присоединяйтесь к сотням тысяч разработчиков, которые повысили свою квалификацию объектно-ориентированного проектирования благодаря книге «Head First. Паттерны проектирования».Если вы уже читали книги из серии Head First, то знаете, что вас ждет визуально насыщенный формат, разработанный с учетом особенностей работы мозга.
Не имеет смысла каждый раз изобретать велосипед, лучше сразу освоить приемы проектирования, которые уже созданы людьми, сталкивавшимися с аналогичными задачами. В этой книге рассказано, какие паттерны действительно важны, когда и при каких условиях ими необходимо пользоваться, как применить их в ваших проектах и на каких принципах объектно-ориентированного проектирования они построены. Присоединяйтесь к сотням тысяч разработчиков, которые повысили свою квалификацию объектно-ориентированного проектирования благодаря книге «Head First. Паттерны проектирования».Если вы уже читали книги из серии Head First, то знаете, что вас ждет визуально насыщенный формат, разработанный с учетом особенностей работы мозга.
👍14🔥6❤5❤🔥2
Даны 3 потока Т1, Т2 и Т3? Как реализовать выполнение в последовательности Т1, Т2, Т3?
Такой последовательности выполнения можно достичь многими способами, например просто воспользоваться методом
Такой последовательности выполнения можно достичь многими способами, например просто воспользоваться методом
join()
, чтобы запустить поток в момент, когда другой уже закончит своё выполнение. Для реализации заданной последовательности, нужно запустить последний поток первым, и затем вызывать метод join()
в обратном порядке, то есть Т3
вызывает Т2.join
, а Т2
вызывает Т1.join
, таким образом Т1
закончит выполнение первым, а Т3
последним.👍32🔥4❤2🎄2
Автор прошел и провел достаточное количество интервью и решил поделиться типовыми вопросами с собеседований, всего планирует 3 части, все вопросы реально спрашивали.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Вопросы с senior java интервью [1/3]
Всем привет!
Я прошел и провел достаточное количество интервью и решил поделиться типовыми вопросами с собеседований, всего планирую 3 части, все вопросы реально спрашивали.
Ссылка на код:
https://github.com/kirya522/medium-posts/tree/main/java/interview…
Я прошел и провел достаточное количество интервью и решил поделиться типовыми вопросами с собеседований, всего планирую 3 части, все вопросы реально спрашивали.
Ссылка на код:
https://github.com/kirya522/medium-posts/tree/main/java/interview…
👍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❤🔥2❤1
Forwarded from Java News
Лучшие практики для Java-приложений в Kubernetes
В этой статье вы прочитаете о лучших практиках запуска Java-приложений в Kubernetes. Большинство из этих рекомендаций будут справедливы и для других языков.
Однако я рассматриваю все правила в рамках характеристик Java, а также показываю решения и инструменты, доступные для приложений на базе JVM.
Некоторые из этих рекомендаций по Kubernetes навязаны дизайном при использовании самых популярных Java-фреймворков, таких, как Spring Boot или Quarkus. Я покажу вам, как эффективно использовать их для упрощения жизни разработчиков.
Читать статью
В этой статье вы прочитаете о лучших практиках запуска Java-приложений в Kubernetes. Большинство из этих рекомендаций будут справедливы и для других языков.
Однако я рассматриваю все правила в рамках характеристик Java, а также показываю решения и инструменты, доступные для приложений на базе JVM.
Некоторые из этих рекомендаций по Kubernetes навязаны дизайном при использовании самых популярных Java-фреймворков, таких, как Spring Boot или Quarkus. Я покажу вам, как эффективно использовать их для упрощения жизни разработчиков.
Читать статью
Teletype
Лучшие практики для Java-приложений в Kubernetes
В этой статье вы прочитаете о лучших практиках запуска Java-приложений в Kubernetes. Большинство из этих рекомендаций будут справедливы...
👍11
В этом видео автор рассказывает о проблеме с null в языке программирования Java, из-за которой возникает печально известное NullPointerExeption. Даёт некоторые рекомендации по организации кода для борьбы с этой проблемой и повышения надежности работы программ.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java. Проблема с null. Null safety.
В этом видео я рассказываю о проблеме с null в языке программирования Java, из-за которой возникает печально известное NullPointerExeption. Даю некоторые рекомендации по организации кода для борьбы с этой проблемой и повышения надежности работы программ.
👍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
Описание проекта👍42❤3☃1
Вышла общедоступная версия Java 20. В этот релиз попало около 1500 закрытых задач и 7 JEP'ов.
Читать статью
Please open Telegram to view this post
VIEW IN TELEGRAM
Teletype
Вышла Java 20
Вышла общедоступная версия Java 20. В этот релиз попало около 1500 закрытых задач и 7 JEP\'ов. Release Notes можно посмотреть здесь...
👍23❤🔥7🔥6❤5
Эффективный Java. Тюнинг кода на Java 8, 11 и дальше (2021) PDF, EPUB
Вы сможете разобраться в производительности приложений Java в контексте как JVM, так и платформы Java, освоите средства, функции и процессы, которые могут повысить производительность в LTS-версиях Java, и познакомитесь с новыми возможностями (такими как предварительная компиляция и экспериментальные уборщики мусора).
В этой книге вы:
- Узнаете, как платформы и компиляторы Java влияют на производительность.
- Разберетесь c механизмом уборки мусора.
- Освоите четыре принципа получения наилучших результатов при тестировании производительности.
- Научитесь пользоваться JDK и другими инструментами оценки производительности.
- Узнаете как настройка и приемы программирования позволяют минимизировать последствия уборки мусора.
- Научитесь решать проблемы производительности средствами Java API.
- Поймете, как улучшить производительность приложений баз данных Java.
Вы сможете разобраться в производительности приложений Java в контексте как JVM, так и платформы Java, освоите средства, функции и процессы, которые могут повысить производительность в LTS-версиях Java, и познакомитесь с новыми возможностями (такими как предварительная компиляция и экспериментальные уборщики мусора).
В этой книге вы:
- Узнаете, как платформы и компиляторы Java влияют на производительность.
- Разберетесь c механизмом уборки мусора.
- Освоите четыре принципа получения наилучших результатов при тестировании производительности.
- Научитесь пользоваться JDK и другими инструментами оценки производительности.
- Узнаете как настройка и приемы программирования позволяют минимизировать последствия уборки мусора.
- Научитесь решать проблемы производительности средствами Java API.
- Поймете, как улучшить производительность приложений баз данных Java.
👍12🔥2❤1
Как контейнер сервлетов управляет жизненным циклом сервлета, когда и какие методы вызываются?
Контейнер сервлетов управляет четырьмя фазами жизненного цикла сервлета:
• Загрузка класса сервлета — когда контейнер получает запрос для сервлета, то происходит загрузка класса сервлета в память и вызов его конструктора без параметров.
• Инициализация класса сервлета — после того как класс загружен контейнер инициализирует объект ServletConfig для этого сервлета и внедряет его через
• Обработка запросов — после инициализации сервлет готов к обработке запросов. Для каждого запроса клиента сервлет контейнер порождает новый поток и вызывает метод service() путем передачи ссылки на объекты ответа и запроса.
• Удаление - когда контейнер останавливается или останавливается приложение, то контейнер сервлетов уничтожает классы сервлетов путем вызова
Таким образом, сервлет создаётся при первом обращении к нему и живёт на протяжении всего времени работы приложения (в отличии от объектов классов, которые уничтожаются сборщиком мусора после того, как они уже не используются) и весь жизненный цикл сервлета можно описать как последовательность вызова методов:
•
•
•
Контейнер сервлетов управляет четырьмя фазами жизненного цикла сервлета:
• Загрузка класса сервлета — когда контейнер получает запрос для сервлета, то происходит загрузка класса сервлета в память и вызов его конструктора без параметров.
• Инициализация класса сервлета — после того как класс загружен контейнер инициализирует объект ServletConfig для этого сервлета и внедряет его через
init()
метод. Это и есть место где сервлет класс преобразуется из обычного класса в сервлет.• Обработка запросов — после инициализации сервлет готов к обработке запросов. Для каждого запроса клиента сервлет контейнер порождает новый поток и вызывает метод service() путем передачи ссылки на объекты ответа и запроса.
• Удаление - когда контейнер останавливается или останавливается приложение, то контейнер сервлетов уничтожает классы сервлетов путем вызова
destroy()
метода.Таким образом, сервлет создаётся при первом обращении к нему и живёт на протяжении всего времени работы приложения (в отличии от объектов классов, которые уничтожаются сборщиком мусора после того, как они уже не используются) и весь жизненный цикл сервлета можно описать как последовательность вызова методов:
•
public void init(ServletConfig config)
– используется контейнером для инициализации сервлета. Вызывается один раз за время жизни сервлета.•
public void service(ServletRequest request, ServletResponse response)
– вызывается для каждого запроса. Метод не может быть вызван раньше выполнения init()
метода.•
public void destroy()
– вызывается для уничтожения сервлета (один раз за время жизни сервлета).❤10👍7
Классические задачи Computer Science на языке Java (2021) PDF, EPUB
Cтолкнулись с «неразрешимой» проблемой при разработке программного обеспечения? Скорее всего, кто-то уже справился с этой задачей, и вы можете не ломать голову. Дэвид Копец собрал наиболее полезные готовые решения, принципы и алгоритмы. «Классические задачи Computer Science на языке Java» — это мастер-класс по программированию, содержащий 55 практических примеров, затрагивающих самые актуальные темы: базовые алгоритмы, ограничения, искусственный интеллект и многое другое.
В этой книге:
- Рекурсия, мемоизация и битовые манипуляции.
- Поисковые, графовые и генетические алгоритмы.
- Проблемы ограничений.
- Кластеризация методом k-среднего, нейронные сети и состязательный поиск.
Cтолкнулись с «неразрешимой» проблемой при разработке программного обеспечения? Скорее всего, кто-то уже справился с этой задачей, и вы можете не ломать голову. Дэвид Копец собрал наиболее полезные готовые решения, принципы и алгоритмы. «Классические задачи Computer Science на языке Java» — это мастер-класс по программированию, содержащий 55 практических примеров, затрагивающих самые актуальные темы: базовые алгоритмы, ограничения, искусственный интеллект и многое другое.
В этой книге:
- Рекурсия, мемоизация и битовые манипуляции.
- Поисковые, графовые и генетические алгоритмы.
- Проблемы ограничений.
- Кластеризация методом k-среднего, нейронные сети и состязательный поиск.
👍22❤3❤🔥2🔥2
В каком случае требуется переопределять метод service()?
Метод
Когда контейнер сервлетов получает запрос клиента, то происходит вызов метода
Метод
service()
переопределяется, когда необходимо, чтобы сервлет обрабатывал все запросы (и GET
, и POST
) в одном методе.Когда контейнер сервлетов получает запрос клиента, то происходит вызов метода
service()
, который в зависимости от поступившего запроса вызывает или метод doGet()
или метод doPost()
.👍18
Java. Библиотека профессионала. Том 2. Расширенные средства программирования (2019) PDF
Это полностью обновленное по версии Java SE 8 издание представляет собой солидное справочное руководство по языку программирования Java для тех, кто разрабатывает реальные проекты на платформе Java. В этом надежном и полезном практическом руководстве описаны расширенные языковые средства, библиотеки и прикладные интерфейсы, проиллюстрированные тщательно подобранными и проверенными примерами из практики программирования на Java. Приведенные примеры просты для понимания, практически полезны и служат неплохой отправной точкой для написания собственного кода.
Из второго тома вы узнаете о новых развитых функциональных возможностях, появившихся в версии Java SE 8, в том числе о новых интерфейсах API для потоков данных, даты, времени и календаря, а также о возможностях разработки графических пользовательских интерфейсов, обеспечения безопасности, написания платформенно-ориентированного кода и многое другое.
Это полностью обновленное по версии Java SE 8 издание представляет собой солидное справочное руководство по языку программирования Java для тех, кто разрабатывает реальные проекты на платформе Java. В этом надежном и полезном практическом руководстве описаны расширенные языковые средства, библиотеки и прикладные интерфейсы, проиллюстрированные тщательно подобранными и проверенными примерами из практики программирования на Java. Приведенные примеры просты для понимания, практически полезны и служат неплохой отправной точкой для написания собственного кода.
Из второго тома вы узнаете о новых развитых функциональных возможностях, появившихся в версии Java SE 8, в том числе о новых интерфейсах API для потоков данных, даты, времени и календаря, а также о возможностях разработки графических пользовательских интерфейсов, обеспечения безопасности, написания платформенно-ориентированного кода и многое другое.
👍10🔥3
В этом видео разбирается классическая задача о рюкзаке и алгоритмы её решения. Особое внимание уделяется решению задачи с помощью динамического программирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java. Задача о рюкзаке. Динамическое программирование.
В этом видео разбирается классическая задача о рюкзаке и алгоритмы её решения. Особое внимание уделяется решению задачи с помощью динамического программирования.
Исходный код:
https://github.com/Arhiser/java_tutorials/tree/master/src/ru/arhiser/knapsack…
Исходный код:
https://github.com/Arhiser/java_tutorials/tree/master/src/ru/arhiser/knapsack…
👍16❤2
Объектно-ориентированное программирование на Java. Платформа Java SE (2020) PDF
Эта книга предназначена для тех, кто хочет научиться программировать на языке Java.С этой книгой вы обучитесь объектно-ориентированному программированию на платформе Java SE и научитесь применять принципы ООП на практике.Эта книга охватывает важные аспекты программирования на языке Java, начиная с основ и заканчивая объектно-ориентированным подходом и командной разработкой кода.
Эта книга предназначена для тех, кто хочет научиться программировать на языке Java.С этой книгой вы обучитесь объектно-ориентированному программированию на платформе Java SE и научитесь применять принципы ООП на практике.Эта книга охватывает важные аспекты программирования на языке Java, начиная с основ и заканчивая объектно-ориентированным подходом и командной разработкой кода.
👍11
10 ключевых ошибок при изучении программирования
В данном видео описываются 10 ключевых ошибок студентов и преподавателей с точки зрения автора.
В данном видео описываются 10 ключевых ошибок студентов и преподавателей с точки зрения автора.
YouTube
10 ключевых ошибок при изучении программирования
В данном видео описываются 10 ключевых ошибок студентов и преподавателей с точки зрения автора.
Наше дружное сообщество:
https://t.me/pse_club
Полезности для программистов:
https://proselyte.net/
00:00:00 - введение
00:00:30 - цели видео
00:01:13 - план…
Наше дружное сообщество:
https://t.me/pse_club
Полезности для программистов:
https://proselyte.net/
00:00:00 - введение
00:00:30 - цели видео
00:01:13 - план…
👍13❤1🔥1
Git. Практическое руководство. Управление и контроль версий в разработке программного обеспечения (2021) PDF
Git в настоящее время нужен практически всем программистам, которые занимаются разработкой программного обеспечения. Git - это система управления версиями, с помощью которой вы сможете вести и контролировать разработку нескольких версий одного приложения, осуществлять совместную разработку одного приложения несколькими разработчиками.
Git в настоящее время нужен практически всем программистам, которые занимаются разработкой программного обеспечения. Git - это система управления версиями, с помощью которой вы сможете вести и контролировать разработку нескольких версий одного приложения, осуществлять совместную разработку одного приложения несколькими разработчиками.
👍12❤1