Библиотека Java разработчика
الذهاب إلى القناة على Telegram
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP
إظهار المزيد9 988
المشتركون
لا توجد بيانات24 ساعات
-157 أيام
-5830 أيام
أرشيف المشاركات
Расскажите про приведение типов. Что такое понижение и повышение типа?
Java является строго типизированным языком программирования, а это означает, то что каждое выражение и каждая переменная имеет строго определенный тип уже на момент компиляции. Однако определен механизм приведения типов (casting) - способ преобразования значения переменной одного типа в значение другого типа.
В Java существуют несколько разновидностей приведения:
• Тождественное (identity). Преобразование выражения любого типа к точно такому же типу всегда допустимо и происходит автоматически.
• Расширение (повышение, upcasting) примитивного типа (widening primitive). Означает, что осуществляется переход от менее емкого типа к более ёмкому. Например, от типа byte (длина 1 байт) к типу int (длина 4 байта). Такие преобразование безопасны в том смысле, что новый тип всегда гарантировано вмещает в себя все данные, которые хранились в старом типе и таким образом не происходит потери данных. Этот тип приведения всегда допустим и происходит автоматически.
• Сужение (понижение, downcasting) примитивного типа (narrowing primitive). Означает, что переход осуществляется от более емкого типа к менее емкому. При таком преобразовании есть риск потерять данные. Например, если число типа int было больше 127, то при приведении его к byte значения битов старше восьмого будут потеряны. В Java такое преобразование должно совершаться явным образом, при этом все старшие биты, не умещающиеся в новом типе, просто отбрасываются - никакого округления или других действий для получения более корректного результата не производится.
• Расширение объектного типа (widening reference). Означает неявное восходящее приведение типов или переход от более конкретного типа к менее конкретному, т.е. переход от потомка к предку. Разрешено всегда и происходит автоматически.
• Сужение объектного типа (narrowing reference). Означает нисходящее приведение, то есть приведение от предка к потомку (подтипу). Возможно только если исходная переменная является подтипом приводимого типа. При несоответствии типов в момент выполнения выбрасывается исключение ClassCastException. Требует явного указания типа.
• Преобразование к строке (to String). Любой тип может быть приведен к строке, т.е. к экземпляру класса String.
• Запрещенные преобразования (forbidden). Не все приведения между произвольными типами допустимы. Например, к запрещенным преобразованиям относятся приведения от любого ссылочного типа к примитивному и наоборот (кроме преобразования к строке). Кроме того, невозможно привести друг к другу классы, находящиеся на разных ветвях дерева наследования и т.п.
При приведении ссылочных типов с самим объектом ничего не происходит - меняется лишь тип ссылки, через которую происходит обращение к объекту.
Для проверки возможности приведения нужно воспользоваться оператором instanceof:
Parent parent = new Child();
if (parent instanceof Child) {
Child child = (Child) parent;
}
👉@BookJavaЧто такое synchronized?
Можно применять как модификатор метода, и как самостоятельный оператор с блоком кода. Выполняет код при захваченном мониторе объекта. В виде оператора объект указывается явно. В виде модификатора нестатического метода используется this, статического – .class текущего класса.
Один из основных инструментов обеспечения потокобезопасности. Одновременно выполняется не более одного блока synchronized на одном и том же объекте. Такая блокировка называется intrinsic lock или monitor lock, подробно рассматривается в Java Concurrency in Practice 2.3.1.
Блок synchronized также необходим для использования методов wait, notify, notifyAll.
👉@BookJava
Курс «Профессия Менеджер проектов» - Skillbox
Станьте специалистом по управлению проектами. Оставьте заявку и мы откроем доступ к первым 2 модулям курса бесплатно!
Перейти на сайт
#реклама 16+
skillbox.ru
О рекламодателе
Инструментация байт-кода Java
В рамках текущей статьи будет рассказано о способах инструментации байт-кода java или, другим языком, внесения изменений в компилированные файлы java .class. Здесь будут приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.
https://habr.com/ru/articles/750028/
👉@BookJava
Ответ на 1 вопрос - Яндекс Музыка всю осень за 1₽ ваша!
Яндекс Музыка для вас и 3-х ваших близких до конца осени за 1₽. Попробуйте сейчас!
Попробовать
#реклама 16+
mrqz.me
О рекламодателе
Какая разница между абстрактным классом и интерфейсом?
Абстрактный класс:
• абстрактные классы имеют дефолтный конструктор; он вызывается каждый раз, когда создается потомок этого абстрактного класса;
• содержит как абстрактные методы, так и не абстрактные. По большому счету может и не содержать абстрактных методов, но все равно быть абстрактным классом;
• класс, который наследуется от абстрактного, должен реализовать только абстрактные методы;
• абстрактный класс может содержать Instance Variable
Интерфейс:
• не имеет никакого конструктора и не может быть инициализирован;
• только абстрактные методы должны быть добавлены (не считая default methods);
• классы, реализующие интерфейс, должны реализовать все методы (не считая default methods);
• интерфейсы могут содержать только константы.
👉@BookJava
Как сканировать и проверять загружаемые изображения в Java
В этой статье рассматриваются опасности, связанные с загрузкой графических файлов, и представлены два решения для проверки на вирусы и валидации графических файлов соответственно.
https://dzone.com/articles/how-to-scan-and-validate-image-uploads-in-java
👉@BookJava
Курс: Профессия бухгалтер. Учитесь бесплатно!
- Оставьте заявку, и мы откроем доступ к первым 3 модулям курса!
- Бесплатный доступ к 1С для практики с опытным бухгалтером.
- Гарантируем трудоустройство - или вернём деньги!
Узнать больше
#реклама 16+
skillbox.ru
О рекламодателе
Пример пузырьковой сортировки
Алгоритм сортировки пузырьком известен, прежде всего, своей простотой, но в то же время обладает одной из самых низких скоростей выполнения.
Пузырьковая сортировка характеризуется очень низкой эффективностью и имеет временную сложность O(N²), так как в ней используются вложенные циклы. Внешний цикл выполняется N раз, а внутренний также N раз, что в итоге дает N*N, или N², итераций.
👉@BookJava
Курс «Python-разработчик» от Яндекса. Начните с нуля.
Программа 2023 года.
Диплом о переподготовке и помощь с поиском работы.
Рассрочка.
Зарегистрироваться
#реклама 16+
practicum.yandex.ru
О рекламодателе
☕️ Основные методы экономии памяти для программирования на Java
Java - популярный язык программирования, широко используемый для разработки сложных приложений. Однако одной из распространенных проблем Java-программ является большое потребление памяти, что может привести к снижению производительности и даже к сбоям. Поэтому для оптимизации Java-кода и снижения потребления памяти важно использовать методы экономии памяти.
В этой статье мы рассмотрим некоторые из лучших практик и советов по экономии памяти в Java.
https://medium.com/javarevisited/basic-memory-saving-techniques-for-java-programming-6677a7237a69
👉@BookJava
Подборка 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
Запускаем WebSocket сервер на базе Jetty, без Spring
Иногда хочется не целый каравай, а просто хлеб с маслом.
Вот и мне понадобился простой java проект с socket-сервером, без необходимости тащить спринг.
00:00 Старт
00:05 Новый проект
01:04 Jetty dependency
01:54 App
02:14 Server
04:18 WebSocketContainer
04:58 @WebSocket annotations
07:50 DO NOT COPY A CODE! ))
09:12 server.start()
09:56 @OnWebSocketError ))
11:21 Done
12:04 Like & Subscribe
GitHub
Источник
👉@BookJava
🚀 Присоединяйтесь к нашему каналу "Java | Фишки и трюки"! 🚀
🔥 Хотите узнать все секреты программирования на Java? Мы расскажем вам о самых крутых фишках и трюках, которые сделают вас настоящим гуру Java!
📚 У нас вы найдете:
✨ Советы по оптимизации кода
✨ Лучшие практики разработки на Java
✨ Увлекательные задачи для тренировки навыков
✨ И многое другое!
Прокачайте свои навыки программирования и станьте экспертом в мире Java! Присоединяйтесь к нам прямо сейчас!
👉 Java | Фишки и трюки 👈
#Java #Программирование
☕️ Освоение бэкэнд-разработки с помощью Java Spring Boot: лучшие практики и профессиональные советы
Spring Boot - это широко используемый и очень популярный высокопроизводительный фреймворк корпоративного уровня. Здесь приведены некоторые лучшие практики и несколько советов, которые можно использовать для улучшения приложения Spring Boot и повышения его эффективности.
https://itznihal.medium.com/mastering-backend-development-with-java-spring-boot-best-practices-and-pro-tips-3fc0f501418e
👉@BookJava
🟥 Мастхэв-мероприятие для Java-разработчиков
🔄 Бесплатный открытый урок «Транзакции в Kafka» от OTUS.
Что будет на занятии:
- Посмотрим, как чтение данных из Kafka можно сделать транзакционным.
- В ряде случаев требуется дополнительно обеспечить корректность обработки данных – изучим, как это можно реализовать.
Преподаватель Сергей Петрелевич – Java-разработчик, в отрасли с 2003 года. Программировать начал со времен ZX-Spectrum. 8 лет в разработке банковских процессинговых систем пластиковых карт.
🌐 Занятие пройдёт 27 сентября в 20:00 мск в рамках курса «Java Developer. Professional».
Это отличная возможность совершенно бесплатно протестировать формат обучения и задать преподавателю любые вопросы в режиме реального времени!
Пройдите бесплатное вступительное тестирование прямо сейчас и зарегистрируйтесь на событие:
➡️ Пройти тест
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruНастройка производительности Java
Основные методы повышения скорости работы и отзывчивости приложений
Как разработчик, я часто использую популярный язык программирования Java для создания приложений. Настройка производительности является одним из ключевых компонентов создания эффективных Java-приложений. Мне необходимо оптимизировать код для достижения максимальной производительности, чтобы гарантировать, что мое приложение будет соответствовать ожиданиям пользователей и бизнес-задачам. В этой статье я расскажу о ключевых методах оптимизации производительности Java, чтобы вы тоже могли повысить эффективность своих Java-приложений.
https://developnsolve.com/java-performance-tuning
👉@BookJava
Axiom JDK Meetup: Java 21 и доверенные технологии
Спикеры расскажут об особенностях отечественной Java-экосистемы, бесшовной миграции Java-стека на доверенные технологии, обеспечении безопасности и оптимизации Java для микросервисов.
Доклады в программе:
✔ Роман Карпов, «Кто разрабатывает российскую Java и почему она лучше Oracle и других JDK»
✔ Олег Чирухин, «Axiom JDK Pro и Libercat: безопасная миграция Java-стека и KPI по импортозамещению»
✔ Александр Дроздов, «Безопасная разработка: защищаем открытый код и получаем сертификацию ФСТЭК»
✔ Олег Чирухин, «Легковесные Java-контейнеры: ускоряем разработку на 25%»
После докладов пройдет сессия вопросов и ответов со спикерами митапа.
Встречаемся в онлайне 27 сентября в 18:00 по Москве.
Зарегистрироваться на митап.
Реклама, ООО «Вайлдкард», ИНН 7801718607, erid 2RanykQMRCt
Автоматическое создание интерактивных диаграмм последовательностей поведения Java-кода во время исполнения
Диаграммы последовательностей являются невероятно мощным средством визуализации и понимания поведения во время выполнения программы. Присущая им структура - объекты перетекают по странице, время течет вниз по странице - интуитивно понятна и проста в освоении. Кроме того, они являются одним из лучших инструментов для разработчиков и технических специалистов, не являющихся разработчиками (например, инженерных менеджеров и менеджеров по продуктам), при обсуждении дизайна кода.
https://dev.to/appmap/automatically-generate-interactive-sequence-diagrams-of-your-java-codes-runtime-behavior-2jg0
👉@BookJava
