Библиотека Java разработчика
10.8K subscribers
1.14K photos
564 videos
58 files
1.44K links
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.


По всем вопросам @evgenycarter

РКН clck.ru/3KoGeP
Download Telegram
Программирование на Java

Лекция 1. Введение
Лекция 2. Синтаксис
Лекция 3. Объекты
Лекция 4. Наследование. Перечисления. Строки.
Лекция 5. Исключения, try-catch, generics, varargs
Лекция 6. Коллекции.
Лекция 7. Элементы функционального программирования
Лекция 8. Stream API
Лекция 9. Коллекторы. Ввод-вывод
Лекция 10. Многопоточность
Лекция 11. Многопоточность. Продолжение
Лекция 12. Конкуррентные коллекции. Аннотации. Рефлекшн
Лекция 13. Что внутри?

https://www.youtube.com/playlist?list=PLlb7e2G7aSpRZSRZxANkvpYC82BXUzCTY
👍7
Всем привет! Меня зовут Роман Аймалетдинов и я разрабатываю клиентское приложение Ситимобил. Решил написать небольшую серию из трех статей по JNI, так как технология используется редко, но иногда она бывает очень полезной. Несмотря на то, что я разрабатываю классические приложения под Android, иногда хочется посмотреть технологии рядом со своей специализацией.

JNI Часть 1
JNI Часть 2: Примеры
JNI, часть 3: производительность Java/JNI/NDK
👍3
25 самых используемых регулярных выражений в Java

Список из 25 регулярных выражений в Java, без которых не обойтись ни новичку, ни профессиональному разработчику. С примерами.

Подробнее
👍4
Дорожная карта для Java-разработчика с пояснениями на 2022 год.

Подробнее
🔥10👍2
Helidon: простой и быстрый Java фреймворк

Современная разработка веб приложений зачастую основывается на использовании фреймворка Spring. Spring имеет большое количество модулей и готовых удобных решений, но время идет, и мир JVM меняется. Наиболее известными решениями для web-приложений являются следующие фреймворки:

Helidon
Micronaut
Quarkus

Подробнее
🔥3
RestController

Аннотация RestController совмещает в себе аннотации Controller и ResponseBody. Первая указывает, что данный класс играет роль контроллера. Вторая указывает, что тип возврата должен быть записан прямо в тело ответа HTTP. RestController устраняет необходимость использования ResponseBody, так как запись в тело происходит автоматически.

Подписывайтесь на канал 👉@coddy_academy

#java
Lombok + JPA: Что может пойти не так?

Lombok — это отличный инструмент, с которым Java-код становится чище и лаконичнее. Однако есть несколько нюансов, которые надо учитывать при его использовании с JPA. В этой статье мы выясним, как неправильное применение Lombok может повлиять на производительность приложений или даже привести к ошибкам. Разберемся, как этого избежать не теряя преимуществ Lombok.

Подробнее
Способы хранения деревьев в реляционных базах данных c использованием ORM Hibernate

Здравствуйте! В этой статье, я постараюсь кратко рассказать о четырёх достаточно известных способах хранения деревьев с указанием преимуществ и недостатков.

Подробнее
💥Прими участие в онлайн-хакатоне «ТФ Альянс» с призовым фондом 500 000 рублей

С 11 по 13 марта 2022 платформа токенизации проектных ИТ-команд «ТФ Альянс» проведет онлайн-хакатон для студентов и молодых IT-специалистов. Участники мероприятия поборются за призовой фонд в размере 500 тысяч рублей, а также за 3-х дневное бесплатное проживание в HackerHome в Иннополисе, городе высоких технологий.

Командам предстоит за 48 часов решить одну из трех задач на выбор с применением Data Science, Python и Blockchain:
👉 разработать робота-ассистента на основе Telegram-бота для тематической буферизации сообщений;
👉 создать систему учета метрик для оценки эффективности работы специалистов и команд в проектных задачах;
👉 разработать инструмент для обеспечения взаимосвязи блокчейнов реестра транзакций и реестра состояний.

После разработки прототипа участники продемонстрируют его работоспособность перед членами жюри в рамках финальной питч-сессии.

🕛‼️Для участия нужно подать заявку до 23:59 9 марта 2022 года на сайте.


Результаты будут объявлены 13 марта.

Хакатон приурочен к вступлению «ТФ Альянс» в сообщество Инновационного научно-технологического центра МГУ «Воробьевы горы». Компания планирует работать над инновационными проектами в сфере ИТ-услуг.
👍1
О чем говорит ключевое слово final?

Модификатор final может применяться к переменным, параметрам методов, полям и методам класса или самим классам.

• Класс не может иметь наследников;
• Метод не может быть переопределен в классах наследниках;
• Поле не может изменить свое значение после инициализации;
• Параметры методов не могут изменять своё значение внутри метода;
• Локальные переменные не могут быть изменены после присвоения им значения.
👍3🤯2
Модификация ArrayList

Для добавления элементов используется add(). В скобочках указывается элемент, который мы хотим добавить. Чтобы удалить элемент, пишем remove(). В скобочках можно писать как сам элемент, который мы хотим удалить, так и его индекс.

#java

Подписывайтесь на канал 👉@coddy_academy
👍5👎2😁1🤯1
🔥 Senior Backend Hiring Week: оффер в EPAM за 24 часа и welcome-бонус!

Мы приглашаем опытных Java-разработчиков присоединиться к команде EPAM за 24 часа. Никаких многодневных интервью - мы ценим ваше и свое время, поэтому вы пообщаетесь только с теми, кто имеет непосредственное отношение к проектам. Если мы подходим друг другу, вы получите оффер в течение суток, а еще дополнительный welcome-бонус в размере оклада.

Преимущества работы в EPAM:
📌 Вы сможете поработать с крупными международными проектами из разных отраслей: медицины, финтеха, торговли, Life Sciences, Big Data.
📌 Мы помогаем пройти сертификацию (AWS, Azure, GCP) и предлагаем программы повышения квалификации – Delivery Management School и Solution Architecture School.
📌 Карьерный рост в треке Advanced Software Engineer, если вы любите писать код и не видите себя в роли менеджера.
📌 Гибкость в выборе проектов и задач, ориентированную на интересы и цели развития каждого разработчика.

Ждем вас в EPAM!

Зарегистрироваться: epa.ms/senior-backend-hiring-week-9
Что такое статическое и динамическое связывание?

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

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

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

Регулярные выражения – мощный механизм работы со строками. Здесь мы не будем говорить о регулярных выражениях в целом, поговорим об их использовании в Java. Это становится возможно благодаря пакету java.util.regex стандартной библиотеки.

Работа с регулярными выражениями в Java начинается с класса Pattern. Это представление самого выражения, без привязки к целевому тексту. Создать его можно компиляцией строки, с помощью фабричного метода Pattern.compile(). Паттерн иммутабельный и потокобезопасный.

Matcher – регулярное выражение, примененное к конкретному тексту. Пораждается вызовом метода Pattern.matches(). Одним паттерном можно порождать несколько разных матчеров. В отличие от паттерна, матчер мутирует. Он не безопасен для многопоточной среды. Основные операции регулярных выражений – перебор совпадений, доступ к группам, замена – реализованы именно в этом классе.

Работа с экземпляром Matcher похожа на работу с итератором. Результат метода matches() просто скажет, соответствует ли строка шаблону. Но после его вызова матчер поменяет состояние. Теперь, из него можно получить группы, позицию совпадения в тексте, а также произвести замену.

В объекте шаблона Pattern реализованы несколько методов-сокращений, чтобы не использовать Matcher явно. Например, просто проверить строку на соответствие выражению можно одним методом Pattern.matches().
👍5
Как сделать скриншот на Java?

Вы можете испольщовать Robot().createScreenCapture() чтобы сделать скриншот экрана на Java.

Посмотреть пример в онлайн редакторе.

Подписывайтесь на канал 👉@coddy_academy

#java
👍11
Можно ли достать параметры метода рефлекшеном?

По умолчанию – нет. Рефлекшн-информация о параметрах метода представляется объектами класса Parameter. По умолчанию их свойство name синтетическое: "arg0", "arg1", и так далее. Метод isNamePresent при этом возвращает false, что значит что действительная информация об имени недоступна. Она не попадает даже в байт-код.

Начиная с Java 8 у компилятора (javac) появилась опция -parameters. В скомпилированный с этой опцией класс добавляются имена аргументов методов. Parameter#getName() тогда возвращает уже настоящее имя.

Классический пример, когда информация об именах может понадобиться – библиотека JSON сериализации Jackson. Параметры конструктора могут трактоваться ей как поля сериализационной формы.

До появления флага -parameters Jackson использовал для этого аннотации. Каждый параметр снабжался аннотацией @JsonProperty. Значением аннотации передавалась строка, которая повторяла имя параметра. Эти аннотации затем можно было получить, вызвав Method#getParameterAnnotations().
👍5