Библиотека Java разработчика
前往频道在 Telegram
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP
显示更多9 988
订阅者
+124 小时
-157 天
-5730 天
帖子存档
Назовите несколько примеров java.lang.Error
Исключения типа
Error говорят о серьезных проблемах во время выполнения программы. Вот все ошибки стандартной библиотеки Java SE:
• AnnotationFormatError – AnnotationParser (Reflection) обнаружил дефект .class-файла аннотации;
• AssertionError – провалилась проверка утверждения (ключевое слово assert). Используется в тестах;
• CoderMalfunctionError – неисправность при кодировании/декодировании Unicode (в пакетах java.io/java.nio);
• ServiceConfigurationError – проблема с загрузкой сервисов в ServiceLoader (Service Provider Interface);
• IOError – серьезная ошибка ввода-вывода;
• ThreadDeath – особенная ошибка: в отличие от остальных наследников Error, это – «нормальное явление», сигнал асинхронного завершения текущего потока;
• LinkageError – после перекомпиляции случилось непоправимое. Предок для 15 различных ошибок формата .class-файлов, загрузки классов, пропажи используемых членов, и прочего.
• VirtualMachineError – JVM сломалась. Абстрактный класс-предок для:
◦ StackOverflowError – переполнение стека вызовов, обычно встречается при бесконечной рекурсии;
◦ OutOfMemoryError – кончилась память, и GC уже не помогает;
◦ InternalError – внутренняя проблема JVM. Её единственный наследник ZipError не используется с Java 9;
◦ UnknownError – что-то другое.
#Классы
👉@BookJavaRepost from Java Geek
Захват координат курсора
Чтобы захватить события мыши, необходимо реализовать интерфейс MouseMotionListener. Когда курсор попадает в определенную область, срабатывает обработчик события mouseMoved, из которого можно получить точные координаты.
@java_geek
🔥 Хардкорный тест для бэкенд-разработчиков и системных программистов 🔥
🚀 Ответьте на 20 вопросов и проверьте, насколько вы готовы к обучению на курсе - «Алгоритмы и структуры данных»
💻 Занятия курса проходят в формате интерактивов. Изучим самые важные алгоритмы: битовая арифметика, рекурсия, деревья поиска, динамическое программирование, теория графов и другие.
Каждый алгоритм вы изучите на примерах, исследуете разные способы его реализации, а некоторые напишете с нуля вместе с преподавателем на уроке.
️️🦾 Курс подойдет для любого языка программирования.
👉 ПРОЙТИ ТЕСТ https://otus.pw/azrh/
💣 Пройдете тест, получите демо-ролик о занятиях на курсе и Welcome-скидку.
🔴 Также вам откроется доступ к 2 открытым урокам курса:
✅ Создание ассоциативного массива
✅ Создание ассоциативного массива на базе хэш-таблицы и префиксного дерева
Введение в DbChange JUnit расширение
Простой и декларативный способ выполнять sql запросы в JUnit тестах.
ПредУсловия (PreConditions) - это действия, которые переводят тестируемую систему в определённое состояние необходимое для выполнения тестового сценария.
Тестовый сценарий (Test case) - это действия, которые меняют состояние тестируемой системы с целью сверить действительное поведение системы с ожидаемым.
ПостУсловия (PostConditions) - это действия, которые переводят тестируемую систему в первоначальное состояние, которое было до выполнения ПредУсловий. Далее
👉@BookJava
Repost from Java Geek
Объединение хеш-таблиц
Объединять два хеша, итерируя их значения вручную, весьма неэффективно. Вот альтернативное решение этой задачи, которое точно вам понравится.
@java_geek
Аня Скобина, [19 сент. 2022 г., 09:58:39]:
Здравствуйте, сейчас пришлю. Оплата уже прошла?
Курс «Архитектура приложений» — дорогой курс. Но его гораздо дороже не пройти, чем пройти (особенно если хочется прибавку к зарплате)
Кого мы ждем?
▪️Разработчиков джун+/миддл на любом языке программирования и всех, кто хочет думать как архитектор. Этот курс сделает для вас то же самое, что роль Терминатора для Арнольда Шварценеггера.
▪️Team Lead и Tech Lead. Обучить команду архитектуре — это как пересадить ее из Рено в Мерседес: тоже едет, но гораздо лучше.
Старт 26 сентября. Уже сейчас можно занять место или нажать на волшебную кнопку и попросить своего работодателя оплатить его: https://slurm.club/3BsrAgZ
JDK 19: новые возможности в Java 19 (Rus)
Выпуск не-LTS, который должен быть выпущен в сентябре, Java 19 будет включать структурированный параллелизм, виртуальные потоки, сопоставление шаблонов для выражений переключения, векторный API и порт Linux/RISC-V.
https://telegra.ph/JDK-19-novye-vozmozhnosti-v-Java-19-09-19
👉@BookJava
JDK 19: The new features in Java 19
September release will feature structured concurrency, virtual threads, pattern matching for switch expressions, a vector API, and a Linux/RISC-V port.
https://www.infoworld.com/article/3653331/jdk-19-the-new-features-in-java-19.html
👉@BookJava
Подборка Telegram каналов для программистов🔥
Сохраняйте, чтоб не потерять.
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
CodePen 📌
https://t.me/codepen_1 Сообщество пользователей CodePen
Базы данных (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/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/phis_mat Обучающие видео, книги по Физике и Математике
Арбитраж трафика 📌
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
Подписывайтесь на понравившиеся Telegram-каналы для разработчиков и изучайте программирование из любой точки мира.
Создание классической игры в пинг-понг на Java
https://betterprogramming.pub/create-the-classic-ping-pong-game-3aea1f7b16e6
👉@BookJava
Изучить основы Java за 14 дней? За 990 рублей? Это реально!
Не важно, сколько вам лет, какое у вас образование и кем вы работаете сейчас. Для начала обучения не нужен опыт в разработке!
Всего за 2 недели вы изучите основы языка под руководством опытного наставника, пройдете 62 урока с практикой в браузере и напишите свою первую программу.
Торопитесь. Стартуем 20 сентября!
Repost from Java Geek
Меняем местами две переменные в одной строке
Многие знают, что в Python можно красиво поменять значения переменных в одну строку: a, b = b, a
Можно ли что-то похожее сделать в Java? Да. На картинке показан пример, но в реальных проектах так делать не стоит.
@java_geek
Как выбрать между Statement, PreparedStatement и CallableStatement?
Statement – SQL-выражение, подготовленное к выполнению в рамках определенной JDBC-сессии. Выполняется методом
execute для обычного выражения, executeUpdate для модифицирующего, executeBatch для пакетного. Когда ожидаемый размер результата больше Integer.MAX_VALUE, используются версии методов executeLarge*.
После выполнения, экземпляр Statement владеет ResultSet-ом, и другими данными о результате выполнения, такими как количество обновленных записей и сгенерированные ключи.
PreparedStatement – предскомпилированная версия Statement, его наследник. Эффективнее выполняет одно и то же выражение множество раз. Входные параметры объявляются в SQL-выражении символом ?, следом сеттерами задаются их типы и значения. Делегирует обязанность экранировать введенные пользователем параметры базе данных.
CallableStatement – наследник PreparedStatement для вызова хранимых процедур. Кроме входных параметров, позволяет регистрировать выходные.
Экземпляры всех трех типов создаются методами интерфейса Connection.
#sql
👉@BookJava⁉️Как работает сборщик мусора в Java?
Узнайте 19 сентября в 20:00 мск на открытом уроке с Дмитрием Коганом, председателем совета предприятия DXC.
🚀На занятии в OTUS за 1,5 часа разберем:
- Java Memory Model
- 3 стадии и 2 поколения сборки мусора
- Карьеру и гибель объектов
♨️Используйте эту возможность, чтобы перенять опыт эксперта и попробовать онлайн-курс «Java Developer. Professional» для разработчиков с опытом.
📌Пройдите вступительный тест, чтобы участвовать: https://otus.pw/CzSF/
Repost from Java Geek
Выполнение консольных команд
Java позволяет выполнять консольные команды прямо из кода, используя класс Runtime. Очень важно не забывать об обработке исключений.
Например, давайте попробуем открыть файл PDF через терминал Java (на Linux’e).
@java_geek
Паттерны проектирования программ на языке Java
Фабричный метод (FactoryMethod)
Абстрактная фабрика (Abstract Factory)
Строитель (Builder)
Одиночка (Singleton)
Прототип (Prototype)
Адаптер (Adapter) Реализация на уровне объектов.
Адаптер (Adapter) Реализация на уровне классов.
Мост (Bridge)
Компоновщик (Composite)
Декоратор (Decorator)
Фасад (Facade)
Легковес (Flyweight)
Заместитель (Proxy)
Цепочка обязанностей (Chain of responsibility)
Команда (Command)
Итератор (Iterator)
Посредник (Mediator)
Снимок (Memento)
Наблюдатель (Observer)
Состояние (State)
Стратегия (Strategy)
Шаблонный метод (Template method)
Посетитель (Visitor)
Полный курс на youtube
👉@BookJava
«Kubernetes для разработчиков» в Слёрме
Старт курса — 15 сентября. Программа составлена специально под задачи разработчиков: мы убрали все «админские» темы и добавили то, что нужно для задач разработки.
Зачем нужен курс?
Чтобы знать, что делать, когда админы говорят: «Вот тебе кластер, работай тут». Погрузиться в Kubernetes, понять, как с ним взаимодействовать разработчику и какие у него есть возможности кроме запуска контейнера с приложением в кластере.
Курс знакомит с базовыми абстракциями k8s и устройством кластера, объясняет, как запускать приложения в кластере. Учимся конфигурировать своё приложение в Kubernetes, хранить данные и конфиги в нужных местах, выполнять миграции в базе данных для приложения, использовать Helm. Спикеры рассказывают, какие существуют практики и какие из них стоит применять. Рассматриваем особенности языков программирования при запуске в Kubernetes (Java, Python, Go)
Все уроки записаны в 2022 году, программа обновлена и дополнена.
🗣Спикеры:
Марсель Ибраев (System Engineer, G42 Cloud);
Павел Селиванов (архитектор, Yandex Cloud).
Записаться на курс: https://slurm.club/3qmKmS4
Как используется
@Deprecated?
Этой аннотацией помечают код, который устарел и не должен быть более использован. Классы, которые используют или переопределяют @Deprecated элементы, будут компилироваться с warning-ом.
Имеет retention RUNTIME, что значит, что фреймворки могут динамически проверять наличие аннотации на элементе с помощью Reflection API.
Начиная с Java 9 у этой аннотации появились опциональные параметры – строка since и булево значение forRemoval. В since указывается версия вашего приложения, начиная с которой элемент считается устаревшим. Значение true в forRemoval предупреждает, что со следующей мажорной версии этот элемент будет удален. Такое нововведение связано с изменением политики устаревания – с Java 9 и устаревшие элементы самой JDK тоже могут удаляться в будущих версиях.
Обычно, когда элемент помечают устаревшим, причины устаревания и дальнейшие рекомендации указывают в его Javadoc-документации под тегом @deprecated.
#Аннотации
👉@BookJavaRepost from Java Geek
Создание объектов только при необходимости
Создание объектов – одна из самых затратных операций в Java. Лучшая практика – создавать их только при необходимости, когда они действительно нужны.
@java_geek
