Библиотека 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
Repost from Java Geek
Head First Java, 3rd Edition (2022) ePUB
Kathy Sierra, Bert Bates, Trisha Gee
Head First Java is a complete learning experience in Java and object-oriented programming. With this book, you'll learn the Java language with a unique method that goes beyond how-to manuals and helps you become a great programmer. Through puzzles, mysteries, and soul-searching interviews with famous Java objects, you'll quickly get up to speed on Java's fundamentals and advanced topics including lambdas, streams, generics, threading, networking, and the dreaded desktop GUI. If you have experience with another programming language, Head First Java will engage your brain with more modern approaches to coding--the sleeker, faster, and easier to read, write, and maintain Java of today.
Скачать книгу
@java_geek
❇️ Как сделать свое первое приложение на Android? Достаточно прийти на открытый урок «Реализация кроссплатформенного приложения на KMP» в OTUS.
👉 https://otus.pw/OhrA/
Почему стоит посетить вебинар?
- Посмотрим, как создавать проекты для этой платформы, как они устроены.
- Узнаем, как они интегрируются в iOS/Android проект.
- Напишем базовое приложение с одним экраном, где есть общая часть, написанная в Kotlin-Muliplatform и использующуюся в нативных платформа.
Вебинар пройдет в рамках специализации «Android Developer» — онлайн-курса для тех, кто хочет освоить эту профессию с нуля.
👉 Чтобы участвовать, зарегистрируйтесь https://otus.pw/DZRQ/
Реклама. Информация о рекламодателе на сайте www.otus.ru
Как применить регулярное выражение в Java?
Регулярные выражения – мощный механизм работы со строками. Здесь мы не будем говорить о регулярных выражениях в целом, поговорим об их использовании в Java. Это становится возможно благодаря пакету
java.util.regex стандартной библиотеки.
Работа с регулярными выражениями в Java начинается с класса Pattern. Это представление самого выражения, без привязки к целевому тексту. Создать его можно компиляцией строки, с помощью фабричного метода Pattern.compile(). Паттерн иммутабельный и потокобезопасный.
Matcher – регулярное выражение, примененное к конкретному тексту. Пораждается вызовом метода Pattern.matches(). Одним паттерном можно порождать несколько разных матчеров. В отличие от паттерна, матчер мутирует. Он не безопасен для многопоточной среды. Основные операции регулярных выражений – перебор совпадений, доступ к группам, замена – реализованы именно в этом классе.
Работа с экземпляром Matcher похожа на работу с итератором. Результат метода matches() просто скажет, соответствует ли строка шаблону. Но после его вызова матчер поменяет состояние. Теперь, из него можно получить группы, позицию совпадения в тексте, а также произвести замену.
В объекте шаблона Pattern реализованы несколько методов-сокращений, чтобы не использовать Matcher явно. Например, просто проверить строку на соответствие выражению можно одним методом Pattern.matches().
👉@BookJava⚡️Планируешь освоить программирование, но не знаешь, с чего начать?
Уже 07 сентября в 20:00 на открытом уроке для новичков в OTUS ты сможешь начать изучать основы Java https://otus.pw/9Cot/
🔥За 1, 5 часа на занятии с опытным экспертом мы:
- Разберем основы java
- Узнаем что такое дженерики
- Изучим, для чего они нужны и как использовать.
👉 Продолжить осваивать новую профессию вы сможете на специализации «Java-разработчик». Это онлайн-курс для тех, кто хочет с нуля освоить программирование на Java.
Регистрация на урок https://otus.pw/HX6n/
Py4J – мост между Python и Java
Название Py4J можно встретить разве что в списке библиотек, используемых PySpark, но не стоит недооценивать данный инструмент, который обеспечивает совместную работу Python и Java. В этой статье будет кратко описана работа Py4J, рассмотрен пример использования и перечислены сильные и слабые стороны библиотеки. В конце будут описаны альтернативные способы связи Java и Python.
👉@BookJava
Алексей Шипилёв - Java-объекты наизнанку
Один из часто задаваемых вопросов об объектах в Java — сколько же они занимают в памяти? В отсутствие языковой или библиотечной операции «sizeof», программистам остаётся гадать о футпринте их кода, или ссылаться на легенды и рассказы специалистов.
В этом докладе мы постараемся заглянуть в изнанку Java-объектов и увидеть, что в них лежит. После этого должны стать ясны многие трюки в футпринте объектов, станут понятны некоторые особенности рантаймов, и будет очевидно, что и как можно эксплуатировать в грязных низкоуровневых целях
https://www.youtube.com/watch?v=3BmznLJAgaA
👉@BookJava
🔥Прокачайте свои навыки разработки на Java!
⏰ 5 сентября в 20:00 пройдет открытый урок «Не хипом единым живёт Java» с Виталием Куценко, ведущим Java-разработчиком в RND.
Когда говорим про память в Java, то чаще всего вспоминают Heap и Garbage Collector. Но у нас есть больше не менее интересного в памяти, о чем мы и поговорим на занятии.
📚После вебинара еще больше технологий и инструментов Java-разработки на онлайн-курсе «Java Developer. Professional» для программистов с опытом от 1 года.
📌Пройдите вступительный тест, чтобы зарегистрироваться на занятие: https://otus.pw/7Of0/
Классы BigInteger и BigDecimal
BigInteger и BigDecimal – иммутабельные числа с заданной точностью. Эти классы – наследники Number, наряду с обертками примитивных чисел. В классах также реализованы базовые математические операции. Наибольший интерес представляет класс BigDecimal – дробное число.
Числа с плавающей точкой (float, double) хранят свои значения в памяти в экспоненциальном виде: знак-порядок-мантисса. Этот факт приводит к неочевидным с точки зрения десятичной системы округлениям при математических операциях.
BigDecimal хранит число в десятичном виде: немасштабированное значение (intVal), размерность (scale), точность (precision) и знак. Значение раскладывается на эти компоненты как intVal ÷ 10^scale. Точность – количество используемых знаков, без учета нулей в начале, но с учетом нулей в конце. Точность числа 0.0010 – 2.
Экземпляр BigDecimal можно создавать из числа с плавающей точкой, и из строки. В первом случае преобразование из экспоненциального в десятичный вид может привести к неожиданной точности, так что рекомендуется использовать строку.
У класса BigDecimal есть редкая особенность: у него не согласованы методы equals() и compareTo(). equals() сравнивает значения с точки зрения структуры объекта – компоненты точности, размерности и значения сравниваются по отдельности. Так equals на числах 0.1 и 0.10 вернет false – у них разная точность, 1 и 2. compareTo() сравнивает числа с математической точки зрения – на тех же 0.1 и 0.10 compareTo вернет 0.
Вместе с BigDecimal активно используется класс MathContext. Это точность, плюс план действий когда значение в нее не влазит – стратегия округления. MathContext можно передавать как в конструктор, так и в математические операции.
BigInteger можем рассматривать как частный случай BigDecimal. Он используется для целых чисел, больших чем Long.MAX_VALUE.
👉@BookJavaWeekend Offer в команды Почты и Облака Mail.ru
До 9 сентября VK принимают заявки на участие в оффере для Java-разработчиков, чтобы те стали частью большой команды и помогали развивать один из самых востребованных продуктов ВКонтакте – VK Звонки.
10 сентября тимлиды команды VK Звонков подробно расскажут о задачах, которые вам предстоит решать, а уже 11 сентября, после финальных собеседований,
отправят офферы лучшим кандидатам.
Подать заявку
Получите навыки программиста за 7 дней!
Вы погрузитесь в направление «Программирование» от GeekBrains, пройдёте мастер-класс от ведущих специалистов и выберите себе специализацию.
Вас ждут:
– Вводный курс: все, что вам нужно знать на старте про профессию программиста и другие ключевые профессии в IT.
– Мастер-класс по программированию, где вы сможете самостоятельно попрактиковаться в решении задач.
– Эксклюзивные лекции по основам программирования – знания, которые необходимы для любой IT-профессии(
Пройдите анкету после регистрации и получите курсы с платных программ GeekBrains: https://clc.to/5mY5Uw
Эволюция сборщика мусора от JDK 8 до JDK 18
Прикрепили PDF, либо прочитать на сайте https://blogs.oracle.com/javamagazine/post/java-garbage-collectors-evolution
👉@BookJava
Можно ли выбрасывать исключение generic-типа?
Короткий ответ – да. Как в большинстве каверзных вопросов про дженерики, ответ становится очевидным если подумать, во что сотрутся типы-параметры.
Чтобы объявить, что метод выбрасывает исключение обобщенного типа
T, этот тип T должен быть объявлен расширяющим Throwable. Именно в Throwable в таком случае сотрется T при компиляции. Также в качестве типа-верхней границы можно использовать любого наследника Throwable:
class MyClass {
void foo() throws T {
// ...
}
}
#Дженерики
👉@BookJavaЖдем всех Java-разработчиков на бесплатном митапе от Росбанка при поддержке JUG Ru Group.
🗓 6 сентября, 19:00.
Онлайн: https://bit.ly/3TiozIc
Офлайн: в деловом центре "Москва-Сити". Участники смогут посетить экскурсию по инновационному офису Росбанка.
В программе:
✔Алексей Салаев — «Оптимизация запросов с использованием Spring cache и Bean scope»
✔ Семен Киреков — «Spring Data JPA. Save и границы его применения»
✔ Иван Пономарев — «Kafka streams testing: a deep dive»
После каждого доклада вы сможете поучаствовать в дискуссии и задать вопросы спикерам. Автор лучшего вопроса получит удобный рюкзак от Росбанка 🎁
Участие бесплатное, нужно только зарегистрироваться: https://bit.ly/3TiozIc
Какая версия JVM самая быстрая?
Как на высокопроизводительное Java-приложение с низкой задержкой влияет используемая версия JVM? Каждая наносекунда имеет значение для торговых и других приложений, где обмен сообщениями между двумя разными потоками происходит примерно за 250 нс! Прочитайте эту статью и узнайте, какой вариант JDK является лучшим!
#jvm
👉@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
Зачем нужен package-info?
Обычно, чтобы создать новый пакет, вы создаете папку с соответствующим названием, и во всех ее
.java файлах добавляете в начале строчку с названием пакета, вида package full.dir.path;. Этого вполне достаточно для работы.
Однако, дополнительно вы можете добавить в пакет его объявление – файл package-info.java. Несмотря на то, что это .java-файл, это не объявление класса. В названии класса дефисы запрещены, так что неоднозначности не возникнет.
Минимальное содержимое файла package-info.java – всё та же строка package full.dir.path;. Такой файл не несет практической пользы. Есть две вещи, которые можно в него добавить, чтобы польза появилась.
Первое – документация пакета. Javadoc-комментарий будет использоваться генератором документации. Пример – описание пакета java.lang. Его исходник вы можете найти в файле java/lang/package-info.java.
Второе возможное применение – аннотации уровня пакета. Для этого аннотация должна иметь Target PACKAGE. Например, некоторые пакеты Spring Framework помечены аннотацией @NonNullApi.
Подробно объявления пакетов описаны в главе 7.4.1 спецификации.
#jvm
👉@BookJavaORM — отвратительный анти-паттерн
ORM - это ужасный анти-паттерн, который нарушает все принципы объектно-ориентированного программирования, разбирая объекты на части и превращая их в тупые и пассивные пакеты данных. Нет никаких оправданий существованию ORM в любом приложении, будь то небольшое веб-приложение или система корпоративного размера с тысячами таблиц и манипуляциями CRUD с ними. Какова альтернатива? Объекты, говорящие на языке SQL (SQL-speaking objects).
От автора перевода: Написанный далее текст может не совпадать с мнением автора перевода. Все высказывания идут от лица оригинального автора, просьба воздержаться от неоправданных минусов. Оригинальная статья выпущена в 2014 году, поэтому некоторые фрагменты кода могут быть устаревшими или "нежелаемыми".
original
👉@BookJava
