Совет по Spring Boot💡
Ошибка конфигурации сервера Spring Boot ⬇
https://gist.github.com/aoudiamoncef/bba3f7c79f1056a22a3a82b3a171b5b3
👉@BookJava
Ошибка конфигурации сервера Spring Boot ⬇
https://gist.github.com/aoudiamoncef/bba3f7c79f1056a22a3a82b3a171b5b3
👉@BookJava
👏5👍3
Совет по Spring Boot 💡
Вы думаете о замене 🍃`
👉@BookJava
Вы думаете о замене 🍃`
RestTemplate
` на новый Spring `RestClient
`? Конфигурация SSL очень проста благодаря поддержке 🔐`SslBundles
` через интерфейс `RestClientSsl
` 👆👉@BookJava
👍10❤2
Пишем минимальный ActivityPub-сервер с нуля
Mastodon — это децентрализованная социальная сеть, работающая по модели федерации, как email. Протокол федерации называется ActivityPub и является стандартом W3C, а Mastodon — далеко не единственная его реализация, но самая популярная. Различные реализации протокола, как правило, совместимы друг с другом, настолько, насколько им позволяют их совпадения в функциональности. У меня есть и мой собственный проект ActivityPub-сервера — Smithereen, такой зелёный децентрализованный ВК, где я когда-нибудь таки верну стену.
В этой статье мы рассмотрим основы протокола ActivityPub и напишем минимально возможную реализацию сервера, позволяющую отправлять посты в сеть («fediverse»), подписываться на других пользователей и получать от них обновления.
https://habr.com/ru/articles/702724/
👉@BookJava
Mastodon — это децентрализованная социальная сеть, работающая по модели федерации, как email. Протокол федерации называется ActivityPub и является стандартом W3C, а Mastodon — далеко не единственная его реализация, но самая популярная. Различные реализации протокола, как правило, совместимы друг с другом, настолько, насколько им позволяют их совпадения в функциональности. У меня есть и мой собственный проект ActivityPub-сервера — Smithereen, такой зелёный децентрализованный ВК, где я когда-нибудь таки верну стену.
В этой статье мы рассмотрим основы протокола ActivityPub и напишем минимально возможную реализацию сервера, позволяющую отправлять посты в сеть («fediverse»), подписываться на других пользователей и получать от них обновления.
https://habr.com/ru/articles/702724/
👉@BookJava
👍4❤2
Все, что вам нужно знать о Java21
Как опытные Java-разработчики, так и новички найдут этот пост информативным и познавательным.
Выпуск Java 21 обусловлен двойной задачей: не только обеспечить множество улучшений производительности, безопасности и стабильности, но и привести язык в соответствие с меняющимися требованиями современных приложений. Java адаптируется к меняющемуся ландшафту и ожиданиям, связанным с ним, чтобы сохранить свою гибкость и актуальность.
https://www.unlogged.io/post/all-you-need-to-know-about-java21
👉@BookJava
Как опытные Java-разработчики, так и новички найдут этот пост информативным и познавательным.
Выпуск Java 21 обусловлен двойной задачей: не только обеспечить множество улучшений производительности, безопасности и стабильности, но и привести язык в соответствие с меняющимися требованиями современных приложений. Java адаптируется к меняющемуся ландшафту и ожиданиям, связанным с ним, чтобы сохранить свою гибкость и актуальность.
https://www.unlogged.io/post/all-you-need-to-know-about-java21
👉@BookJava
👍4
👍5
Глубокое погружение в Java Memory Model
В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.
👉 @BookJava
В этой статье мы подробно разберем Java Memory Model (JMM) и применим полученные знания на практике. Да, в интернете накопилось достаточно много информации про JMM/happens-before, и, кажется, что очередную статью про такую заезженную тему можно пропускать мимо. Однако я постараюсь дать вам намного большее и глубокое понимание JMM, чем большинство информации в интернете. После прочтения этой статьи вы будете уверенно рассуждать о таких вещах как memory ordering, data race и happens-before. JMM — сложная тема и не стоит верить мне на слово, поэтому большинство моих утверждений подтверждается цитатами из спеки, дизассемблером и jcstress тестами.
👉 @BookJava
👍6
This media is not supported in your browser
VIEW IN TELEGRAM
Что если бы Java-разработчики могли создавать веб-приложения, не прибегая к помощи JavaScript? 🤔
👉 @BookJava
👉 @BookJava
🔥9👎5👍3
This media is not supported in your browser
VIEW IN TELEGRAM
IntelliJ IDEA EAP обеспечивает навигацию по журналам именно в том месте, где было зарегистрировано сообщение!
https://blog.jetbrains.com/idea/2024/02/intellij-idea-2024-1-eap-6/
👉 @BookJava
https://blog.jetbrains.com/idea/2024/02/intellij-idea-2024-1-eap-6/
👉 @BookJava
👍8🤯2
Подборка Telegram каналов для программистов
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
🔥2👍1
ИИ-чатбот + веб-интерфейс менее чем за 20 строк на Java с использованием Spring AI и Vaadin 🤖
А в качестве нативного образа GraalVM, он запускается за 0,1 секунды! ⚡
https://github.com/marcushellberg/spring-ai-web
👉 @BookJava
А в качестве нативного образа GraalVM, он запускается за 0,1 секунды! ⚡
https://github.com/marcushellberg/spring-ai-web
👉 @BookJava
👍4👎1
Forwarded from Книги по Java | Books Java 📚
Pro Spring 6: An In-Depth Guide to the Spring Framework
Автор: Chris Schaefer (2023)
Эта книга выходит далеко за рамки основ: вы узнаете, как использовать новейший Spring Framework 6 для создания различных уровней и частей современных сложных корпоративных Java-прикладных систем, сверху донизу, включая доступ к данным, генерацию SQL с помощью jOOQ, персистентность с помощью Hibernate, транзакции, настройку безопасности, классические уровни web и презентаций и добавление некоторой реактивности.
Скачать
👉 @java_360
Автор: Chris Schaefer (2023)
Эта книга выходит далеко за рамки основ: вы узнаете, как использовать новейший Spring Framework 6 для создания различных уровней и частей современных сложных корпоративных Java-прикладных систем, сверху донизу, включая доступ к данным, генерацию SQL с помощью jOOQ, персистентность с помощью Hibernate, транзакции, настройку безопасности, классические уровни web и презентаций и добавление некоторой реактивности.
Скачать
👉 @java_360
👍5
Абстрактные классы и методы в Java: Объяснение!
Абстракция - это процесс сокрытия деталей реализации и представления пользователю только основных функций. Это позволяет сосредоточиться на том, что делает объект, а не на том, как он это делает.
В Java абстрактные классы и методы являются ключевыми инструментами для реализации абстракции. Абстрактные классы служат шаблонами для создания подклассов, а абстрактные методы определяют поведение этих подклассов.
1. Используйте абстрактные классы для моделирования иерархий связанных классов: Абстрактные классы - отличный способ представить группу связанных классов, имеющих общую функциональность. Создав абстрактный класс, определяющий общие методы и свойства, вы сможете избежать дублирования кода и сделать свой код более модульным и удобным для сопровождения.
2. Используйте абстрактные методы для определения общего поведения: Абстрактные методы полезны, когда вы хотите обеспечить определенное поведение для нескольких подклассов. Определив абстрактный метод в абстрактном классе, вы можете гарантировать, что все подклассы реализуют одно и то же поведение по-своему.
3. Не злоупотребляйте абстрактными классами и методами: Хотя абстрактные классы и методы могут быть мощными инструментами, важно не злоупотреблять ими. В целом, создавать абстрактный класс или метод следует только в том случае, если у вас есть четкая причина для этого. Чрезмерное использование может привести к излишней сложности и усложнить сопровождение кода.
4. Соблюдайте соглашения об именовании: При присвоении имен абстрактным классам и методам важно следовать стандартным соглашениям об именовании в Java. Абстрактные классы следует называть абстрактным существительным (например, "Shape"), а абстрактные методы - глаголом (например, "draw").
5. Документируйте свой код: Как и при работе с любым кодом, важно документировать абстрактные классы и методы, чтобы сделать их более понятными для других разработчиков. Используйте четкие и лаконичные комментарии, чтобы объяснить назначение и поведение каждого класса и метода.
https://www.appsdeveloperblog.com/17-abstract-classes-and-methods-in-java/
👉 @BookJava
Абстракция - это процесс сокрытия деталей реализации и представления пользователю только основных функций. Это позволяет сосредоточиться на том, что делает объект, а не на том, как он это делает.
В Java абстрактные классы и методы являются ключевыми инструментами для реализации абстракции. Абстрактные классы служат шаблонами для создания подклассов, а абстрактные методы определяют поведение этих подклассов.
1. Используйте абстрактные классы для моделирования иерархий связанных классов: Абстрактные классы - отличный способ представить группу связанных классов, имеющих общую функциональность. Создав абстрактный класс, определяющий общие методы и свойства, вы сможете избежать дублирования кода и сделать свой код более модульным и удобным для сопровождения.
2. Используйте абстрактные методы для определения общего поведения: Абстрактные методы полезны, когда вы хотите обеспечить определенное поведение для нескольких подклассов. Определив абстрактный метод в абстрактном классе, вы можете гарантировать, что все подклассы реализуют одно и то же поведение по-своему.
3. Не злоупотребляйте абстрактными классами и методами: Хотя абстрактные классы и методы могут быть мощными инструментами, важно не злоупотреблять ими. В целом, создавать абстрактный класс или метод следует только в том случае, если у вас есть четкая причина для этого. Чрезмерное использование может привести к излишней сложности и усложнить сопровождение кода.
4. Соблюдайте соглашения об именовании: При присвоении имен абстрактным классам и методам важно следовать стандартным соглашениям об именовании в Java. Абстрактные классы следует называть абстрактным существительным (например, "Shape"), а абстрактные методы - глаголом (например, "draw").
5. Документируйте свой код: Как и при работе с любым кодом, важно документировать абстрактные классы и методы, чтобы сделать их более понятными для других разработчиков. Используйте четкие и лаконичные комментарии, чтобы объяснить назначение и поведение каждого класса и метода.
https://www.appsdeveloperblog.com/17-abstract-classes-and-methods-in-java/
👉 @BookJava
Apps Developer Blog
Abstract Classes and Methods in Java: Explained! - Apps Developer Blog
Learn how to use abstract classes and methods in Java to implement abstraction, improve code modularity and maintainability. Check out our tutorial!
👍5
Совет по SpringFramework 💡
Самый простой способ создания динамических SQL-запросов в JPA - это Query By Example. Вы создаете объект-пример, который оборачиваете в пример, а затем передаете его в ваш
хранилищу. JPA создаст WHERE только с теми полями, которые вы задали.
👉 @BookJava
Самый простой способ создания динамических SQL-запросов в JPA - это Query By Example. Вы создаете объект-пример, который оборачиваете в пример, а затем передаете его в ваш
@SpringData
хранилищу. JPA создаст WHERE только с теми полями, которые вы задали.
👉 @BookJava
❤6👍5🤔3😁1
Настройка и мониторинг Java приложений
За годы работы у нас сформировался определенный опыт диагностики и решения проблем, связанные с производительностью наших Java-приложений. В этой статье я опишу причины торможения, с которыми приходилось столкнуться, и возможные пути их исправления. Также опишу основные настройки, которые мы делаем, и ресурсы сервера, которые использует приложение.
Речь пойдет о бизнес-приложениях с одним сервером Java-приложения и одним сервером базы данных PostgreSQL, в каждом из которых одновременно работают от 500 до 2000 сотрудников компании. Приложения разработаны на базе открытой и бесплатной платформы lsFusion (пример приложения), но большинство описанных проблем и настроек не являются специфическими именно для нее.
https://habr.com/ru/companies/lsfusion/articles/741978/
👉@BookJava
За годы работы у нас сформировался определенный опыт диагностики и решения проблем, связанные с производительностью наших Java-приложений. В этой статье я опишу причины торможения, с которыми приходилось столкнуться, и возможные пути их исправления. Также опишу основные настройки, которые мы делаем, и ресурсы сервера, которые использует приложение.
Речь пойдет о бизнес-приложениях с одним сервером Java-приложения и одним сервером базы данных PostgreSQL, в каждом из которых одновременно работают от 500 до 2000 сотрудников компании. Приложения разработаны на базе открытой и бесплатной платформы lsFusion (пример приложения), но большинство описанных проблем и настроек не являются специфическими именно для нее.
https://habr.com/ru/companies/lsfusion/articles/741978/
👉@BookJava
👍3❤1
Можно ли хранить данные в сервлете?
По спецификации наследник интерфейса
Чтобы обеспечить серверам приложений такую возможность, на сервлет накладывается ряд ограничений. Одно из них – сервлет не должен хранить пользовательское состояние в своих полях.
На практике, иногда бывает полезно хранить внутреннюю служебную информацию в сервлете. Тогда, кроме вероятности масштабирования, еще следует помнить о многопоточности сервлетов. Разные запросы обрабатываются в разных тредах, и доступ к полям должен быть синхронизирован.
Для хранения данных между запросами существует специальный объект – сессия (класс
👉@BookJava
По спецификации наследник интерфейса
Servlet
реализует распределяемое (distributable) web-приложение. Значит, при необходимости, очередь поступающих запросов может быть разделена между несколькими экземплярами сервлета, возможно даже размещенными на отдельных серверах внутри кластера.Чтобы обеспечить серверам приложений такую возможность, на сервлет накладывается ряд ограничений. Одно из них – сервлет не должен хранить пользовательское состояние в своих полях.
На практике, иногда бывает полезно хранить внутреннюю служебную информацию в сервлете. Тогда, кроме вероятности масштабирования, еще следует помнить о многопоточности сервлетов. Разные запросы обрабатываются в разных тредах, и доступ к полям должен быть синхронизирован.
Для хранения данных между запросами существует специальный объект – сессия (класс
HttpSession
). Если будет принято решение масштабировать сервер, произойдет репликация сессии. При репликации все актуальные данные сессии переносятся на другие сервера кластера в сериализованном виде. Отсюда другое требование – данные в сессии должны быть сериализуемыми.👉@BookJava
👍7🔥1