Библиотека Java разработчика
Kanalga Telegram’da o‘tish
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP
Ko'proq ko'rsatish9 988
Obunachilar
+124 soatlar
-157 kun
-5730 kun
Postlar arxiv
⚡️ Для архитекторов, разработчиков, DevOps-инженеров или сетевых и сисадминов, тимлидов или специалистов ИБ OTUS открывает набор на онлайн-курс «Cloud Solution Architecture»
Ответьте на 25 вопросов и проверьте, насколько вы готовы к обучению на курсе - «Cloud Solution Architecture»
📌 В результате обучения вы освоите необходимые компетенции для разработки и поддержки архитектуры облачных приложений
💻 Открытый урок — Оптимизация стоимости владения, 5 сентября в 20:00
💻 Открытый урок — Функции как сервис на примере Yandex Cloud, 19 сентября в 20:00
Время прохождения теста ограниченно 45 минут
👉 ПРОЙДИТЕ ТЕСТ для оценки вашего уровня знаний и получите скидку
https://clck.ru/uJ4f8
Какие у аннотации бывают таргеты?
Мета-аннотация
@Target определяет, в каком контексте может применяться объявляемая аннотация. Допустимые контексты перечисляются значениями ElementType. По умолчанию, если @Target не указан, разрешены все контексты кроме TYPE_PARAMETER. Возможные таргеты:
• TYPE – Объявление класса, интерфейса, аннотации или enum-а.
• FIELD – Объявление поля (включая константы enum-ов).
• METHOD – Объявление метода.
• PARAMETER – Формальный параметр в объявлении метода.
• CONSTRUCTOR – Объявление конструктора.
• LOCAL_VARIABLE – Объявление локальной переменной.
• ANNOTATION_TYPE – Объявление аннотации. Применяется для создания мета-аннотации.
• PACKAGE – Объявление пакета (в package-info.java).
–– С Java 8 ––
• TYPE_PARAMETER – Обявление generic типа-параметра.
• TYPE_USE – Любое использование типа. Например приведение: (@NonNull String) myObject.
–– С Java 9 ––
• MODULE – Объявление модуля.
👉@BookJava🔥Хардкорный тест по Java🔥
⭕️Осторожно! Из-за этого курса можно стать супервостребованным Java-разработчиком!
Пройди тест из 20 вопросов и проверь насколько ты готов к обучению на углубленном курсе - "Java Developer. Professional" от OTUS
🦸🏼♂️62 компании-партнера ждут, когда ты овладеешь этим мастерством. Проходя вступительный тест курса помни, большая сила — большая ответственность!
📌ПРОЙТИ ТЕСТ
Как мы перевели API-модули микросервисного проекта с Feign на OpenFeign
Всем привет! Недавно мы решили задачу, как перейти на новую версию Spring + OpenFeign в мультимодульном проекте, в котором выделен API с навешенными аннотациями
@RestController и @FeignClient. По ссылке поделюсь с вами этим кейсом.
👉@BookJavaПишите Java-приложения? У вас есть два пути:
1. Делать монолитную архитектуру и разрабатывать ПО как единое целое
2. Разбить большое приложение на микросерверы и наладить между ними связь.
У второго пути масса преимуществ:
• Легче ловить сбои и приводить приложение в порядок
• Отдельные компоненты можно масштабировать
• Разные микросервисы — разные технологии разработки, это интереснее
• Можно обновлять приложение по отдельным частям
• Разработка микросервиса легче, чем монолита
Если вы согласны, что второй путь вам многое облегчит в работе, ну или просто пора совершенствоваться как специалисту, то записывайтесь на наш курс по микросервисам на Java.
Вы научитесь:
- Делать микросервисы на Java и Kotlin
- Работать с инструментами для разработки микросервисов
- Использовать популярный Java-фреймворк Spring Boot
Знания прямо по ходу курса можно использовать в работе.
Курс подойдет для студентов IT-направлений и разработчикам.
Старт курса 1 сентября, программа и запись на нашем сайте: https://slurm.club/3cfdWW4
JRE – Java Runtime Environment, Java-окружение времени выполнения. Это набор всего необходимого чтобы запустить скомпилированную Java-программу. Окружение состоит из виртуальной машины Java (JVM), библиотеки классов (Java Class Library), консольной команды
java и прочей инфраструктуры. Тем не менее, JRE не достаточно чтобы создавать новые программы.
JDK – Java Development Kit, набор Java-разработчика. Это полнофункциональный SDK для Java. JDK включает в себя JRE, но кроме того содержит компилятор (javac) и другие инструменты разработки, такие как javadoc и jdb. С помощью JDK можно создавать и компилировать программы.
В большинстве случаев, если вам нужно только запускать Java программы, вы устанавливаете только JRE, если же вы планируете программировать на Java, вместо этого вам необходим JDK.
Источник
👉@BookJava⚡️ Чтобы стать QA-инженером с нуля, нужно ориентироваться в web-технологиях. Ведь чтобы победить, нужно знать своего врага в лицо!
👉 Именно поэтому OTUS проводит открытый урок для тех, кто хочет с нуля освоить эту профессию https://otus.pw/Jd5i/
🎯 На занятии мы с экспертом познакомимся с основами веб-технологий, чтобы нас не пугали такие слова, как HTML, CSS, FrontEnd и BackEnd.
👉 Регистрируйтесь на вебинар и до встречи в прямом эфире https://otus.pw/ZP1y/
📌 PS. Продолжить осваивать новую профессию вы сможете на специализации «QA Automation Engineer». Это онлайн-курс для тех, кто хочет с нуля освоить автоматизацию тестирования на Java.
Оцените количество памяти на хранение одного примитива типа byte в LinkedList?
Каждый элемент LinkedList хранит ссылку на предыдущий элемент, следующий элемент и ссылку на данные.
static class Node<E> {
E item;
Node<E> next;
Node<E> prev;
//...
}
Для 32-битных систем каждая ссылка занимает 32 бита (4 байта). Сам объект (заголовок) вложенного класса Node занимает 8 байт. 4 + 4 + 4 + 8 = 20 байт, а т.к. размер каждого объекта в Java кратен 8, соответственно получаем 24 байта. Примитив типа byte занимает 1 байт памяти, но в JCF примитивы упаковываются: объект типа Byte занимает в памяти 16 байт (8 байт на заголовок объекта, 1 байт на поле типа byte и 7 байт для кратности 8). Также напомню, что значения от -128 до 127 кэшируются и для них новые объекты каждый раз не создаются. Таким образом, в x32 JVM 24 байта тратятся на хранение одного элемента в списке и 16 байт - на хранение упакованного объекта типа Byte. Итого 40 байт.
Для 64-битной JVM каждая ссылка занимает 64 бита (8 байт), размер заголовка каждого объекта составляет 16 байт (два машинных слова). Вычисления аналогичны: 8 + 8 + 8 + 16 = 40байт и 24 байта. байта. Итого 64 байта.
👉@BookJavaЧем CompletableFuture отличается от Future?
Future – интерфейс, который представляет пока еще недовычисленный результат. Когда породившая его асинхронная операция заканчивается, он заполняется значением. Метод get блокирует выполнение до получения результата, isDone проверяет его наличие. К примеру результат выполнения задач в ExecutorService, ForkJoinTask, реализует интерфейс Future.
CompletableFuture появился в Java 8. Это класс-реализация старого интерфейса Future, а значит всё сказанное выше справедливо и для него. Вдобавок к этому, CompletableFuture реализует работу с отложенными результатами посредством коллбэков. Метод thenApply регистрирует код обработки значения, который будет автоматически вызван позже, когда это значение появится.
В Java 9 прогресс пошел дальше, и появилась библиотека Flow API. Это встроенная реализация реактивных стримов. Реактивный стрим, сильно упрощая, – это более общий случай, последовательность отложенных значений. Другая их реализация – популярная, но не входящая в стандарт библиотека Reactive Extensions (RxJava).
#Многопоточность #Классы
👉@BookJava
Зачем нужно соединять Java-программу на компьютере и Arduino?
Любой энтузиаст, строящий свои проекты на базе Arduino, рано или поздно сталкивается с необходимостью тем или иным способом обеспечить взаимосвязь этой платы со своим компьютером.
Такой симбиоз даёт возможность как управлять платой с компьютера, так и наоборот — компьютером с платы. Об этом мы и поговорим в этой статье.
👉@BookJava
Подборка каналов для IT специалистов 🎯
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/React_lib Подборки по React js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
https://t.me/frontend_sovet Frontend советы, примеры и практика!
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов 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
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
CodePen 📌
https://t.me/codepen_1 Сообщество пользователей CodePen
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
Разработка игр 📌
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/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/ux_web Статьи, книги для дизайнеров
https://t.me/arhitekturamira World Architecture
Системное администрирование 📌
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/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика
Крипта 📌
https://t.me/bitkoinoff Новости криптовалют
Метавселенная, GameFi, Crypto 📌
https://t.me/metaverse360
DeepFake 📌
https://t.me/deepfakenow Публикуем deepfake видео
Мир технологий 📌
https://t.me/mir_teh Видео из мира технологий
Excel лайфхак📌
https://t.me/Excel_lifehack
Не можете выбрать, какой язык учить? Пройдите бесплатный курс по профориентации Яндекс Практикума.
Выбрать язык по душе
Можно ли добавить одному элементу несколько одинаковых аннотаций?
По умолчанию нельзя. До Java 8 нужно было создавать дополнительную аннотацию-контейнер, в ней в виде проперти объявлять массив интересующих аннотаций. При применении набор аннотаций нужно было оборачивать в этот контейнер (см. на картинке).
Начиная с Java 8 в стандартную библиотеку добавлена мета-аннотация
@Repeatable.
Механизм ее действия такой же, как раньше: помечая ей интересующую аннотацию, необходимо указать параметром @Repeatable аннотацию-контейнер. Нововведение заключается в синтаксисе использования: теперь набор аннотаций оборачивается в контейнер неявно.
Со стороны Reflection при чтении мета-информации тоже появилась возможность не оперировать контейнером явно – метод getAnnotationsByType при необходимости найдет и развернет этот контейнер.
#Аннотации
👉@BookJava🔥Освойте профессиональный подход к разработке серверных приложения на Java!
🚀В OTUS стартовал набор на онлайн-курс «Java Developer. Professional». На пути к новому уровню в Java-разработке вы с ведущими Java-разрботчиками погрузитесь в сервисную разработку и разберетесь в алгоритмах, многопоточности, Spring, сборщиках мусора, байт-коде и classloader, тестировании и работе с окружением.
✔️Особенность курса — подробный код-ревью от экспертов. Во время обучения вы пополните свое портфолио домашними заданиями и проектной работой, которая поможет уверенно проходить собеседования на Middle+ специалиста с зарплатой от 200 тыс. рублей.
📌Узнайте больше о программе курса и пройдите вступительный тест, чтобы попасть в группу со скидкой: https://otus.pw/13QP/
Почему важен graceful shutdown в облачной среде (на примере Kubernetes + Spring Boot)
В облаке многие думают над стартом приложения, но не все задумываются о том, как оно завершается. В свое время мы наловили довольно много ошибок, связанных именно с остановкой подов. Например, увидели, что Kubernetes изредка убивает наше приложение до того, как оно успевает освободить ресурсы, хотя вроде бы так происходить не должно. Воспроизвести проблему с первого подхода не получилось, и мы задались вопросом, а что же там происходит под капотом? Далее
👉@BookJava
⁉️Стремитесь к росту в Java-разработке?
🎯Начните осваивать современные возможности Spring! Ждем вас на открытом уроке «REST и Spring Session» 24 августа в 20:00 мск. На занятии с Юрием Дворжецким, ведущим full-stack разработчиком, рассмотрим, что такое REST, как пишутся REST-сервисы с использованием Spring MVC.
Также обсудим вопросы применения Spring Session.
Вебинар в OTUS — это возможность протестировать курс онлайн-курс «Разработчик на Spring Framework».
📌Чтобы зарегистрироваться на мероприятие, пройдите вступительный тест: https://otus.pw/qlwe/
Можно ли наследовать аннотацию?
Можно понять этот вопрос по-разному. Если имеется в виду, передается ли аннотация класса-родителя классу-наследнику, ответ – по умолчанию нет. Но наследование можно включить, если на объявлении аннотации поставить мета-аннотацию
@Inherited. Это работает только для классов, переопределенные методы нужно аннотировать заново.
Другой возможный смысл вопроса – наследование самих типов-аннотаций. Аннотация, как класс или интерфейс представляется в системе ссылочным типом, она тоже компилируется в .class-файл. Вы можете создать переменную с типом, скажем, java.lang.Override.
Но в отличие от других ссылочных типов, объявление аннотации (@interface) не может иметь секций extends или implements. Это ограничение добавлено просто чтобы не усложнять систему типов. В скомпилированном коде все типы-аннотации – это интерфейсы, унаследованные от Annotation.
#Классы #Аннотации
👉@BookJava⬆️ На курсе «Профессия Архитектор ПО» вы вырастете как разработчик и повысите свой доход. Разберёте реальные кейсы от ведущих разработчиков «Альфа-Банка» и сможете проектировать масштабируемые и отказоустойчивые приложения.
За 5 месяцев вы научитесь:
✅ применять архитектурные стили и паттерны проектирования — API Gateway, CQRS и «Сага»;
✅ выявлять и проверять нефункциональные требования и характеристики систем;
✅ строить распределённые системы на основе микросервисов и создавать cloud-native-приложения;
✅ принимать архитектурные решения исходя из контекста;
✅ учитывать вопросы кибербезопасности при проектировании.
Навыки отточите на реальных задачах, а в конце курса презентуете итоговый проект — создадите отказоустойчивую систему по брифу от заказчика.
Спешите приобрести курс со скидкой!
🔥 Также для IT-специалистов действуют специальные плюшки от государства!
Узнать больше: https://clc.to/lUFx_g
Как сделать хеширование паролей в Java-приложениях правильным способом!
Существует множество способов хранения конфиденциальных паролей. И хотя наличие выбора - это здорово, в контексте хранения паролей неправильный выбор может стать кошмаром безопасности. В этой статье мы обсудим, как следует хэшировать пароли в Java-приложениях. Хотя вы можете применять эти принципы к любой экосистеме, мы специально покажем лучший способ хэширования паролей в Java.
👉@BookJava
Apache Kafka — платформа, с которой можно передавать и хранить информацию, сообщения в режиме реального времени.
С ней работают везде: в крупных госкорпорациях и частном бизнесе, в финтехе и авиации. Прямых конкурентов для организации для работы микросервисов нет, поэтому сисадминам, архитекторам ПО и разработчикам всё равно придется разбираться с Apache Kafka.
Можно потратить 2-3 месяца на самостоятельное изучение и чтение документации, перелопать весь YouTube и всё равно плавать.
А можно прийти к нам на базовый курс по Apache Kafka и получить всё и сразу:
📌Мы собрали необходимую информацию в одном месте, материалы будут доступны 2 года;
📌За основу курса взяли опыт двух разрабов, которые внедряли Apache Kafka на предприятии с нуля. Их инсайты, опыт и выводы — всё станет вашим;
📌Курс заточен на практику: теорию сразу же можно отработать на задачах, основанных на жизненных кейсах.
⠀
Видеокурс доступен уже сейчас, а 12 сентября стартует поток со спикерами.
⠀
Кафка, от которой нельзя отказаться: https://slurm.club/3Ca20iO
