bookjava | Unsorted

Telegram-канал bookjava - Библиотека Java разработчика

10986

📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP

Subscribe to a channel

Библиотека Java разработчика

Как вызвать нативный код?

Нативным (или машинным) кодом называется скомпилированный бинарный код. В него компилируется, например, код на C++. Java приложение может работать на любой платформе именно потому, что оно не компилируется в бинарник – вместо этого его байткод выполняется на виртуальной машине. Но порой нужно обратиться к готовой программе на другом языке, или воспользоваться специальными возможностями ОС.

Если бинарный код поставляется в виде библиотеки (.dll в Windows, .so в Unix), у вас есть два варианта:

JNI (Java Native Interface) – стандартный фреймворк взаимодействия с бинарным кодом. С ним можно в Java исходнике объявить метод без тела, а реализацию брать из бинарного файла. Простой пример использования читайте на хабре.

JNA (Java Native Access) – сторонняя open-source библиотека, ставшая стандартом де-факто. Медленнее чем JNI, но гораздо проще в использовании. В отличие от JNI не требует кодогенерации и написания вспомогательной обвязки. Несколько примеров вызова из Java кода функций бинарных библиотек можно найти на википедии.

Когда нативный код исполняемый (.exe в Windows, файл с правом x в Unix), можно запустить его отдельным процессом. Но если вы разрабатываете этот бинарный код самостоятельно, то лучше сэкономить на создании отдельного процесса, и выбрать вариант сборки в библиотеку.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Компилирование «железного» бинарника Java-программы Google Closure Stylesheets с GraalVM

Closure Stylesheets -- это компилятор CSS, написанный Гугл на Java в рамках набора инструментов Closure Tools для веб-разработки, который в свое время обладал внушительными функциями такими как экспансия браузерных префиксов (например, для трансформации display: flex; в display: -webkit-flex; display: -ms-flexbox), переменными и др. Прошло уже более 10 лет с момента зачатия этого проекта, многие инновации уже укоренились, и в прошлом году его архивировали, т.к. все, включая сотрудников Гугл, используют мейнстрим утилиты типа SASS / autoprefixer. Я же успешно держу свой форк Exposure Stylesheets, потому что верю, что инструменты должны быть простыми и с душой из 2010х.

В статье речь пойдет про то, как я обновил свой форк с Java 1.8 на JDK 11 и использовал утилиту Oracle native-image из пакета GraalVM для того, чтобы собрать native binary, то есть бинарник с машинным кодом, который позволяет запускать программу вообще без Java. Я расскажу о том, какие проблемы встретил во время апгрейда, в том числе связанных с рефлексией, и сравню скорость запуска / работы / потребления памяти стандартного JAR и собранного bin.

https://habr.com/ru/articles/758300/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Java Tutorial for Beginners | Full Course

Intro - 00:00:00
How to use Eclipse - 00:03:50
2. Getting Started - 09:20
3. How Java Works - 14:16
4. Variable in Java - 15:46
5. Working with Variables - 20:30
6. Primitive Data Type in Java - 28:25
7. Naming Convention in Java - 34:25
8. Arithmetic Operators in Java - 41:33
9. If Else | Selection Statement - 50:29
00:50:16 - Ternary & Switch Selection Statement
11. While | For | Iteration Statement | Loops -01:05:25
12. Nested Loops | Iteration Statement - 01:13:21
13. Break and Continue - 01:18:40
14. Class and Object - 01:21:23
15. Constructor in Java Theory - 01:30:32
16. Constructor Example - 01:40:51
17. This keyword - 01:47:52
18. Method and Constructor Overloading - 01:51:29
19. Static Keyword - 01:56:41
20. Inner Class - 02:08:50
21. Array Theory - 02:16:23
22. Array 1D | 2D | Jagged Array - 02:22:35
23. Enhanced for loop - 02:35:02
24. Varargs - 02:39:02
25. Inheritance - 02:42:13
26. Super Method - 02:50:42
27. Multiple Inheritance in Java? - 02:57:18
28. Method Overriding | Super Keyword - 02:59:29
29. Dynamic Method Dispatch - 03:04:07
30. Encapsulation - 03:08:40
31. Wrapper class | AutoBoxing - 03:14:54
32. Abstract Keyword - 03:23:19
33. Why do we need Abstract Class? - 03:28:39
34. Final Keyword - 03:33:25
35. Interface | Why and What? - 03:39:27
36. More about Interface - 03:46:20
37. Anonymous Inner class - 03:51:33
38. Anonymous class with Interface - 03:54:51
39. Functional Interface | Lambda Expression - 03:57:12
40. Default method in Interface - 04:04:06
41. Multiple Inheritance issue with Interface - 04:09:39
42. Static method in Interface - 04:12:49
43. Package - 04:15:47
44. Access Modifiers - 04:22:14
45. Exception Handling Try Catch Finally - 04:32:35
46. Multiple Catch blocks - 04:38:37
47. Checked Exception | Finally block - 04:44:35
48. Try with Resource - 04:49:32
49. User Defined - 04:51:40
50. User Input using Scanner - 04:56:32
51. MultiThreading in Java Theory - 04:58:58
52. Thread class - 05:09:39
53. Runnable Interface - 05:20:34
54. Lambda Expression - 05:24:30
55. Join | isAlive method - 05:28:4
56. Thread Priority - 05:31:18
57. Synchronized Keyword - 05:36:34
58. Collection and Generics in Java - 05:45:10
59. Iterator Interface - 05:59:25
60. List Interface - 06:07:29
61. Generics with List - 06:13:00
62. Collections Class - 06:16:20
63. Comparator Interface - 06:20:34
64. Comparable Interface - 06:29:11
65. Set Interface - 06:35:08
66. Map Interface - 06:40:41

https://youtu.be/8cm1x4bC610?si=o-8AEjYU0v0xwVBW

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Подборка Telegram каналов для программистов

Системное администрирование 📌
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux


/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)

/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика

/channel/itmozg Программисты, дизайнеры, новости из мира IT.
/channel/phis_mat Обучающие видео, книги по Физике и Математике

/channel/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста

1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus

Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах

GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
/channel/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
/channel/game_devv Все о разработке игр

Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT

Чат программистов📌
/channel/developers_ru

Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов

БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию

QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика

Шутки программистов 📌
/channel/itumor Шутки программистов

Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров

Английский 📌
/channel/UchuEnglish Английский с нуля

Математика 📌
/channel/Pomatematike Канал по математике

Excel лайфхак📌
/channel/Excel_lifehack

Читать полностью…

Библиотека Java разработчика

Освойте микросервисную архитектуру за 5 месяцев на курсе «Microservice Architecture» от OTUS

В процессе обучения вы:

- рассмотрите множество нетривиальных проблем проектирования backend-приложений и их дальнейшего сопровождения;
- изучите не только паттерны проектирования новых сервисов, но и подходы к работе с legacy-сервисами;
- научитесь решать проблемы с согласованностью изменений или с оркестрацией сервисов;
- как разработчик научитесь базовым навыкам работы с Kubernetes.

💻 Программа идеально подойдёт архитекторам, разработчикам, системным аналитикам, администраторам и DevOps-инженерам.

В конце программы вы получите практическую помощь в трудоустройстве и карьерную консультацию от эксперта.

🌐 Обучение начнется уже 30 октября и в честь Хеллоуина вы можете записаться на курс со скидкой 15% по промокоду «Hello15». Пройдите тестирование прямо сейчас, чтобы воспользоваться предложением: https://vk.cc/crX8Ps

Читать полностью…

Библиотека Java разработчика

Mastering the Fundamentals of Cache for Systems Design Interview

Освоение основ кэш-памяти для собеседований по проектированию систем крайне важно, поскольку эти знания будут требоваться очень часто. Кэш значительно повышает производительность при проектировании систем, тем более в настоящее время, когда системы находятся в облаке. Кроме того, кэш имеет еще более существенное значение при большом количестве пользователей. Если к части системы обращаются более 1 млн. пользователей, то кэш будет иметь огромное значение для производительности.

Далее рассмотрим наиболее важные концепции кэширования, в каких ситуациях их следует использовать, а также технологии, которые их реализуют.

https://javachallengers.com/cache-systems-design/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Все о нестатических блоках инициализации в Java

Сегодня мы поговорим о возможножности инициализировать поля во время создания объекта с помощью нестатических блоков инициализации.

[Данная статья подготовлена на основе материала из книги OCP Oracle Certified Professional Java SE 17 Developer (Exam 1Z0-829) Programmer’s Guide, опубликованной издательством Oracle Press. — Ред.]

Инициализаторы нужны для установки начальных значений полей в объектах и классах. Существует три вида инициализаторов:
Инициализирующие выражения
Статические блоки инициализации
Нестатические блоки инициализации

public class InstanceInitializersII {

{ //Instance initializer with forward references. (1)
i = j = 10; // (2) Permitted.
int result = this.i * this.j; // (3) i is 10, j is 10.

System.out.println(this.i); // (4) 10
System.out.println(this.j); // (5) 10
System.out.println(this.k); // (6) 50
}

// Instance field declarations.
int i; // (7) Field declaration without initializer expression
int j = 100; // (8) Field declaration with initializer expression.
final int k = 50; // (9) Final instance field with constant expression.
}

https://blogs.oracle.com/javamagazine/post/java-instance-initializer-block

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Мой десятилетний поиск лаконичных лямбда-выражений в Java

Череда удачных и неудачных событий
Я начал изучать Java в 1997 году. Вначале я думал, что Java окажется причудой и что Smalltalk выйдет победителем в борьбе за производительность объектно-ориентированных программистов над C++. Я ошибался. В великой объектно-ориентированной битве 1990-х годов между C++ и Smalltalk победила Java.

https://betterprogramming.pub/my-ten-year-quest-for-concise-lambda-expressions-in-java-39fde576b950

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Внутри JVM: Массивы и их отличие от других объектов

Массивы являются уникальными объектами в JVM, и понимание их структуры позволяет лучше писать код.
Самый простой способ классификации элементов данных Java - это разделение их на примитивы и объекты. К примитивам, как известно большинству разработчиков Java, относятся булевы числа, байты, символы, варианты целых чисел (short, int и long), а также варианты чисел с плавающей точкой (floats и doubles). Внутри JVM эти примитивы инстанцируются в "сыром" виде. Объявление int создает для JVM 32-разрядное знаковое целое поле, с которым она может работать. Чаще всего эти примитивы создаются в стеке операндов, который строится при каждом вызове метода. (Заметным исключением являются статические примитивы, которые создаются в куче).

https://blogs.oracle.com/javamagazine/post/java-array-objects

👉@BookJava

Читать полностью…

Библиотека Java разработчика

В чём разница между интерпретатором, AOT и JIT-компилятором?

Интерпретация – простое последовательное воспроизведение кода программы, команда за командой.

AOT-компиляция (ahead-of-time, статическая) – процесс превращения текста на языке программирования в нативный код на машинном языке. Так работают языки вроде C++. В современных JDK можно получить настоящий ahead-of-time скомпилированный машинный код с помощью утилиты jaotc.

JIT-компиляция (just-in-time, динамическая) – «умная» интерпретация. Среда выполнения анализирует исполняемый код, оптимизируя часто вызываемые участки. Таким способом программа работает значительно быстрее, и сохраняет при этом преимущества платформо-независимости оригинального кода. Именно с JIT-компиляцией связана необходимость «прогрева» программ перед тестированием производительности.

Эти термины относятся не только к JVM, но и ко множеству других языков программирования. Конкретно в Java байткод – интерпретируемый. Но в JVM по умолчанию работает JIT-компилятор. А процесс компиляции Java-кода в байткод можно назвать AOT-компиляцией.

Для взаимодействия с JIT-компилятором из кода в JDK поставляется класс java.lang.Compiler. Его методом disable() можно отключить JIT и перевести программу в режим простой интерпретации. Сейчас этот класс объявлен устаревшим и готовится к удалению.

Более красивый способ влиять на компилятор – передавать его настройки параметрами JVM. Параметр -Djava.compiler=NONE также переключит программу с JIT на интерпретатор. В теории, через этот же параметр можно подключить другой JIT-компилятор, альтернативный встроенному в JVM.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Что такое перегрузка методов?

Перегрузка методов — это свойство полиморфизма, в котором при помощи изменения сигнатуры метода можно создать различные реализации методов для одной и той же операции:
- одинаковое имя метода;
- различные аргументы;
- различный порядок аргументов;

Например, один и тот же add() из List может быть перегружен следующим образом и будет выполнять добавление разным способом, в зависимости от аргументов метода:
- add(Object o) — просто добавляет объект;
- add(int index, Object o) — добавляет объект в определенный индекс;
- add(Collection<Object> c) — добавляет список объектов;
- add(int index, Collection<Object> c) — добавляет список объектов, начиная с определенного индекса.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Java spring exception handling | обработка исключений за 5 минут

В этом видео речь пойдет об обработке исключений на уровне контроллера на языке Java. Покажу, какие инструменты есть у Spring.

00:23 - try catch, ResponseEntity
00:47 - наследование ResponseStatusException
01:10 - настройки отображения сообщения, названия ошибки и стек трейс в ответе
01:47 - бросаем ResponseStatusException
02:04 - аннотация @ ExceptionHandler
03:05 - аннотация @ RestControllerAdvice
03:40 - кастомный объект вместо ResponseEntity
04:02 - аннотация @ ResponseStatus

Код можно посмотреть тут: https://github.com/dispikerton/exceptionHandling

источник

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Что такое статическое и динамическое связывание?

Присоединение вызова метода к телу метода называется связыванием. Если связывание проводится компилятором (компоновщиком) перед запуском программы, то оно называется статическим или ранним связыванием (early binding).

В свою очередь, позднее связывание (late binding) это связывание, проводимое непосредственно во время выполнения программы, в зависимости от типа объекта. Позднее связывание также называют динамическим (dynamic) или связыванием на стадии выполнения (runtime binding). В языках, реализующих позднее связывание, должен существовать механизм определения фактического типа объекта во время работы программы, для вызова подходящего метода. Иначе говоря, компилятор не знает тип объекта, но механизм вызова методов определяет его и вызывает соответствующее тело метода. Механизм позднего связывания зависит от конкретного языка, но нетрудно предположить, что для его реализации в объекты должна включаться какая-то дополнительная информация.

Для всех методов Java используется механизм позднего (динамического) связывания, если только метод не был объявлен как final (приватные методы являются final по умолчанию).

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Курс «Зоотехник»: Без "воды" и ненужных предметов!

Курс «Зоотехник». 5 мес. Диплом. Рассрочка 0%. Научим работать с с/х животными.

Ведем прием документов!

Узнать больше

#реклама
academy.dpomipk.ru

О рекламодателе

Читать полностью…

Библиотека Java разработчика

Узнать об Avito Career

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

Никакого спама, только вакансии и стажировки Авито. Подписывайтесь 😎

Читать полностью…

Библиотека Java разработчика

♨️ Тест на знание языка Java

— Ответьте на 21 вопрос
и проверьте, насколько хорошо вы знаете язык Java и готовы освоить Spring. Сможете сдать — пройдёте на продвинутый онлайн-курс "Разработчик на Spring" Framework со скидкой!

👉 ПРОЙТИ ТЕСТ ОНЛАЙН-КУРСА "Разработчик на Spring Framework": https://vk.cc/cs3LkL

Курс доступен в рассрочку.

🎁 Пройдете успешно тест, получите доступ к открытым урокам курса.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Библиотека Java разработчика

⌨️ Java | Фишки и трюки — крайне полезный канал для любого джависта

Тонкости и секреты языка Java, интересные фишки, статьи и примеры кода.

👉🏻 Подписывайся и прокачивай свои навыки

Читать полностью…

Библиотека Java разработчика

От чего может случиться NoSuchMethodError?

Как очевидно из названия, программа пытается вызвать метод, которого не существует. В большинстве случаев это приводит к ошибке еще на этапе компиляции. Но в некоторых ситуациях о проблеме становится известно только во время выполнения, и тогда выбрасывается это исключение.

Вариантов таких ситуаций два. Либо проект был изменен и частично перекомпилирован; либо программа несовместима с внешней зависимостью: например неправильная версия jar-библиотеки в classpath.

Исключение NoSuchMethodError наследуется от LinkageError. Все такие ошибки – признаки несовместимых изменений после компиляции класса.

Не следует путать эту ошибку с NoSuchMethodException – исключением, которое случается при попытке вызвать несуществующий метод с помощью Reflection API. Важное отличие в том, что это не Error, его можно ловить и обрабатывать.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Ускоряем java-рефлексию в 2023

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

Ну что же, поехали!
Постановка задачи
Имеем в наличии jdk 17, хотим вызывать методы класса по имени и таким же образом обращаться к полям.

https://habr.com/ru/articles/758664/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Распределённые транзакции

В статье рассматриваются общие подходы к решению проблемы двойной записи, когда два микросервиса должны гарантировано, атомарно записать информацию в бд.

Каждый из рассмотренных вариантов имеет свои достоинства и недостатки, и может быть применен в промышленной разработке.

https://developers.redhat.com/articles/2021/09/21/distributed-transaction-patterns-microservices-compared

👉@BookJava

Читать полностью…

Библиотека Java разработчика

😱 Вредные советы для Java разработчиков

Все мы пишем много кода и слышим много советов о том, как это делать лучше. Но как же это надоело, хочу дать вам советы, как сделать код, который сложно прочитать и, следовательно, сложно сопровождать.

В статье мы научимся:
✔️ как тратить своё время и время коллег впустую;
✔️ стать незаменимым, так как больше в вашем коде никто не разберется;
✔️заслужить всеобщую ненависть.

💡 Читайте вредные советы от Отус и не пытайтесь это повторить!

А если хотите прокачать свои навыки, приходите на наш авторский курс "Java Developer. Professional" и становитесь экспертом в своей области!

📌Курс рассчитан на программистов с опытом, и чтобы понять достаточно ли у вас навыков для обучения, пройдите небольшой тест из 20 вопросов: https://vk.cc/crV6Wt

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Библиотека Java разработчика

😱 Вредные советы для Java разработчиков

Все мы пишем много кода и слышим много советов о том, как это делать лучше. Но как же это надоело, хочу дать вам советы, как сделать код, который сложно прочитать и, следовательно, сложно сопровождать.

В статье мы научимся:
✔️ как тратить своё время и время коллег впустую;
✔️ стать незаменимым, так как больше в вашем коде никто не разберется;
✔️заслужить всеобщую ненависть.

💡 Читайте вредные советы от Отус и не пытайтесь это повторить!

А если хотите прокачать свои навыки, приходите на наш авторский курс "Java Developer. Professional" и становитесь экспертом в своей области!

📌Курс рассчитан на программистов с опытом, и чтобы понять достаточно ли у вас навыков для обучения, пройдите небольшой тест из 20 вопросов: https://vk.cc/crTYx9

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Библиотека Java разработчика

Как реализовать двусторонний обмен данными между потоками?

Вопрос, который зачастую дается в виде практической задачи. Конечно, результата можно добиться разными способами: парой атомарных переменных, критическими секциями, потокобезопасными коллекциями. Но полезно знать, что специально для этого случая в стандартной библиотеке java.util.concurrent есть простой класс Exchanger.

Класс содержит единственный метод V exchange(V x). Один поток передает в него данные, и встает в ожидание. Ожидание завершается, когда второй поток также приходит в метод exchange со своей порцией информации. В качестве результата вызова потоки получают данные друг друга.

На основе класса Exchanger удобно создавать пайплайны обработки данных. Первый поток выполняет свою часть обработки, и складывает результаты в буфер. В качестве буфера может работать любой многоразовый объект-контейнер. Когда он заполняется, следующий поток обменивает его на второй, пустой буфер. Таким образом два буфера используются поочередно, не выделяется лишний раз память и не нагружается GC. Далее из попарно обменивающихся буферами потоков может строиться длинная многопоточная цепочка обработки.

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Как работает Spring MVC Web Framework внутри?

Как обрабатывается HTTP-запрос? Что происходит при отправке HTTP-запроса в веб-приложение на базе Spring MVC

Здравствуйте, ребята, один из часто задаваемых вопросов на собеседовании по Spring MVC касается объяснения потока веб-запросов, т.е. того, как HTTP-запрос обрабатывается от начала до конца. Другими словами, объяснение потока запросов в Spring MVC.

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

Когда запрос попадает в веб-контейнер, например Tomcat, он заглядывает в web.xml и находит сервлет или фильтр, сопоставленный с этим URL. Он делегирует этому сервлету или фильтру обработку запроса.

https://levelup.gitconnected.com/how-does-spring-mvc-web-framework-work-internally-7a3b06f1716e

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Подборка Telegram каналов для программистов

Системное администрирование 📌
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux


/channel/tikon_1 Новости высоких технологий, науки и техники💡
/channel/mir_teh Мир технологий (Technology World)

/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика

/channel/itmozg Программисты, дизайнеры, новости из мира IT.
/channel/phis_mat Обучающие видео, книги по Физике и Математике

/channel/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста

1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах

Программирование Python 📌
/channel/pythonofff Python академия. Учи Python быстро и легко🐍
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python Rus

Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах

GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub

Базы данных (Data Base) 📌
/channel/database_info Все про базы данных

Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin

Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано

Разработка игр 📌
/channel/game_devv Все о разработке игр

Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT

Чат программистов📌
/channel/developers_ru

Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
/channel/books_reserv Книги для программистов

БигДата, машинное обучение 📌
/channel/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning

Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/coddy_academy Полезные советы по программированию

QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика

Шутки программистов 📌
/channel/itumor Шутки программистов

Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_1 Статьи из "Хакера"

Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров

Английский 📌
/channel/UchuEnglish Английский с нуля

Математика 📌
/channel/Pomatematike Канал по математике

Excel лайфхак📌
/channel/Excel_lifehack

Читать полностью…

Библиотека Java разработчика

🦾 Освойте востребованный фреймворк всего за 5 месяцев и создавайте приложения на Java

🔥🔝 Знание Spring Framework – один из самых востребованных скиллов для разработчика, многие крупные проекты ищут именно таких специалистов на самые желанные офферы.

5️⃣ Вместе с OTUS вы можете освоить Spring всего за 5 месяцев в рамках курса «Разработчик на Spring Framework»!

Что даст вам этот курс:
- Умение эффективно работать в проектах, где есть Spring
✔️ Знание современных возможностей Spring
✔️ Понимание, как создавать Web-приложения на микросервисной архитектуре и решать высокоуровневые задачи по разработке
✔️ Умение быстро проходить путь от идеи до production-grade
✔️ Владение фреймворками Spring и технологиями вспомогательных проектов (Spring MVC, Spring Security, Spring Boot, Spring Reactive Stack, Spring 5)

🎫 Курс доступен для приобретения в рассрочку!

Пройдите бесплатное вступительное тестирование прямо сейчас и узнайте, готовы ли вы стать студентом!

➡️ ПРОЙТИ ТЕСТ: https://clck.ru/36AeLb

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Библиотека Java разработчика

🚀 Изучай Symfony Framework для работы над масштабными PHP-проектами!

Записывайся на продвинутый онлайн-курс Symfony Framework от Отус (старт 21 ноября 2023 года) и получи возможность:

✅ развивать идеи Java Spring в PHP-экосистеме
✅ участвовать в создании enterprise-проектов со сложной бизнес-логикой
✅ претендовать на высокооплачиваемые вакансии middle+

Ответь на вопросы вступительного теста за 30 минут и проверь, насколько ты готов к освоению Symfony Framework: https://clck.ru/369kTP

Читать полностью…

Библиотека Java разработчика

Я хотел сломать Java и я это сделал

На написание этой статьи, меня натолкнул разбор результата изменения полей объекта, лежащего в HashSet. Я развил идею и привнёс альтернативную математику в Java.

Ломаем
В Java существуют примитивные типы и их объектные версии. Для оптимизации JVM заранее создаёт и кеширует Boolean, Byte, Short и часть диапазона Integer, чтобы вместо создания нового объекта использовать существующий в кеше.

Взглянем на Integer.java

public final class Integer extends Number
implements Comparable<Integer>, Constable, ConstantDesc {
private final int value;

@IntrinsicCandidate
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
}

https://habr.com/ru/articles/767114/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Разработка децентрализованных приложений на Spring Boot: инструменты Web3 Tech

Привет! Меня зовут Даниил, я разработчик в Web3 Tech. Недавно в JVM-инструментарии для нашей основной платформы «Конфидент» состоялся новый релиз, в который вошли библиотеки клиента для взаимодействия с нодой и Spring Boot стартеры. Далее в посте я расскажу об этих библиотеках, которые помогут вам комфортно и эффективно создавать на JVM-языках программирования полноценные приложения, взаимодействующие со смарт-контрактами нашей платформы.

https://habr.com/ru/companies/web3_tech/articles/768310/

👉@BookJava

Читать полностью…

Библиотека Java разработчика

Разрешаем фронту подписаться на бэкенд. Server Sent Events на Java Spring Boot.

Простой способ избежать постоянного опроса сервера. Событийный способ работы.

источник

👉@BookJava

Читать полностью…
Subscribe to a channel