en
Feedback

Don't get caught by a cheater! Telemetrio finds and tags such channels 👉 If you want to see the tag, subscribe

Библиотека Java разработчика

Библиотека Java разработчика

Open in Telegram

📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate. По всем вопросам @evgenycarter РКН clck.ru/3KoGeP

Show more
9 988
Subscribers
+124 hours
-157 days
-5730 days
Posts Archive
Apache Kafka для разработчиков Где бы вы ни работали — в финтехе и строительстве, авиакомпаниях или медиа— вам везде потребуе
Apache Kafka для разработчиков Где бы вы ни работали — в финтехе и строительстве, авиакомпаниях или медиа— вам везде потребуется Apache Kafka. Только за последний месяц на Hh было опубликовано 3089 вакансий, в которых требовалось эта технология. ⠀ Самостоятельное изучение инструмента займет у вас 2-3 месяца чтения документации и поиска видео в YouTube. А мы уже собрали всю нужную информацию в одном месте и подготовили курс по Apache Kafka для разработчиков😎 ⠀ 📌Практика пройдет на Java или Golang и платформе Spring+Docker+Postgres 📌Возникнут вопросы? Сразу же задайте их спикерам — гуру Kafka 📌Расскажем о преимуществах системы и её плюсах, отличиях от аналогов. ⠀ А ещё со знанием Apache Kafka можно просить +10% к заявленной зарплате 🤑 ⠀ Переходите по ссылке, чтобы записаться на курс: https://slurm.club/3uMk0LY

Зачем добавили ArrayList, если уже был Vector? • Методы класса Vector синхронизированы, а ArrayList - нет; • По умолчанию, Vector удваивает свой размер, когда заканчивается выделенная под элементы память. ArrayList же увеличивает свой размер только на половину. Vector это устаревший класс и его использование не рекомендовано. 👉@BookJava

Как работают параллельные стримы? Основная цель, ради которой в Java 8 был добавлен Stream API – удобство многопоточной обработки. Обычный стрим будет выполняться параллельно после вызова промежуточной операции parallel(). Некоторые стримы создаются уже многопоточными, например результат вызова Collection#parallelStream(). Для распараллеливания используется единый общий ForkJoinPool. Внутри реализации потока его сплиттератор оборачивается в AbstractTask, который и отправляется на выполнение в пул. AbstractTask при выполнении считывает estimateSize сплиттератора и текущую степень параллелизма пула. На основе этих данных он принимает решение, распараллелить ли сплиттератор на два методом trySplit(). У удобства такого решения есть обратная сторона. Так как пул единый, нагрузка распределяется на всех пользователей параллельных стримов в программе. Если в одном потоке выполняются долгие блокирующие операции, это может ударить по производительности в совершенно не связанном с ним другом потоке. Если всё же требуется использовать отдельный пул потоков, сам стрим выполняется как задача этого отдельного пула. Подробнее в статье. #Классы #Многопоточность 👉@BookJava

Если вы кодите на Java и хотите проверить свои знания, то с 5 по 20 августа вы можете поучаствовать в онлайн-чемпионате по Ja
Если вы кодите на Java и хотите проверить свои знания, то с 5 по 20 августа вы можете поучаствовать в онлайн-чемпионате по Java-разработке. Чемпионат организован совместно Сколково и IT_ONE, призовой фонд составляет 740 000 рублей. Регистрируйтесь до 10 августа: https://vk.cc/cfb6Ip Денежные призы получат первые пять мест, топ-20 участникам подарим мерч, а самых талантливых ребят пригласим на работу в компанию IT_ONE.

Обработка исключений в Java в функциональном стиле В данной статье автор предоставит информацию о собственной библиотеке для обработки исключений (Exception) в функциональном стиле. В Java начиная с версии 8 появились новые возможности в виде функциональных интерфейсов и потоков (Stream API). Эти возможности позволяют писать код в новом функциональном стиле без явных циклов, временных переменных, условий ветвления и проч. Я уверен что этот стиль программирования станет со временем основным для большинства Java программистов. 👉@BookJava

Как реализовать собственный стрим? Любой стрим определяется его сплитератором. Spliterator – это специальный разделяемый внутренний итератор. Есть много способов получить готовый сплитератор или стрим, но чтобы создать полностью свою специфическую логику перебора элементов, придется написать собственный сплитератор. Поток создается из сплитератора одним из статических методов класса StreamSupport. Вызов его методов осуществляется самим фреймворком. Вкратце его работа выглядит так: • Элементы перебираются методом tryAdvance, пока он не выдаст false. Через параметр action к элементу применяются последующие операции. • При применении промежуточных и терминальных операций учитываются характеристики потока, изначально задаваемые методом characteristics. • Когда обработка стрима распараллеливается, методом trySplit от начала последовательности элементов «откусывается» часть, и возвращается завернутой в новый сплитератор. Текущий продолжает идти по оставшемуся хвосту. В идеале, по возможности эта часть – половина элементов потока. Если разделить уже нельзя, возвращается null. Подробно и доступно последовательность действий для реализации описана в статье на хабре. #Классы 👉@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 программиста Программирование 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/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

Тагир Валеев — Stream API: рекомендации лучших собаководов Stream API уже не первый год с нами и многие вовсю им пользуются. После первоначальной радости возникает понимание, что далеко не всё удаётся сделать стандартными средствами красиво. Мы посмотрим на некоторые типовые задачи, которые хотелось бы решить на Stream API, но не очень очевидно, как это сделать красиво. Будет также рассказано о паре сторонних библиотек, которые облегчают жизнь. 👉@BookJava

Как работают стримы? Пакет java.util.stream – это средства потоковой обработки данных в функциональном стиле. Они не имеют ничего общего (кроме названия) с потоками ввода-вывода. Типичные применения – конвертация, переупаковка, и агрегация данных. Три основных понятия Java Stream API – источник данных, промежуточная (intermediate), и терминальная (terminal) операции. Источником может быть заранее заданный набор данных, или динамический генератор, возможно даже бесконечный. Сам источник никогда не модифицируется последующими операциями. Промежуточные операции модифицируют стрим. На одном потоке можно вызвать сколько угодно промежуточных операций. Терминальная операция «потребляет» поток. Она может быть только одна, в конце работы с отдельно взятым стримом. Стримы работают лениво – вся цепочка промежуточных операций не начнет выполняться до вызова терминальной. Типичный пример использования стримов – map-reduce. Map – промежуточная операция, reduce – терминальная. Источники и промежуточные операции могут изменять набор характеристик потока, которые влияют на дальнейшую обработку. Операция может иметь свойства – элементы перечисления StreamOpFlag: • SORTED – можно сравнивать элементы; • ORDERED – определен порядок обхода; • DISTINCT – содержит уникальные элементы, без дублей; • SIZED – имеет определенный размер; • SHORT_CIRCUIT – операция, которая может приводить к короткому замыканию. Для лучшего погружения рекомендуется к просмотру доклад Тагира Валеева. #Классы 👉@BookJava

Это приглашение на «быстрое свидание» с работой мечты в команде Сбера. One Day Offer — самый короткий путь до оффера. Пройти
Это приглашение на «быстрое свидание» с работой мечты в команде Сбера. One Day Offer — самый короткий путь до оффера. Пройти собеседование и получить ответ в тот же день можно 16 и 17 июля по двум вакансиям: Data Engineer в ИТ-команду «Комплаенс» и Java Developer в ИТ-подразделение «Сеть продаж». Как это работает? Шаг 1. 16 июля или 17 июля (в зависимости от вакансии) подключитесь к онлайн-интервью. Шаг 2. Получите предложение о работе, о которой мечтали, в тот же день. Шаг 3. А дальше — вместе со своей командой разрабатывайте крутые и важные продукты Сбера. Прочитать подробнее о вакансиях и отправить заявку на участие в One Day Offer можно здесь.

Чем ForkJoinPool отличается от ExecutorService? ForkJoinPool сам по себе является наследником ExecutorService. Вопрос подразумевает его отличия от обычного пула потоков – ThreadPoolExecutor. Основное отличие – стратегия work stealing, которая уже упоминалась в предыдущем посте. Этой стратегии посвящена глава 5.3.3 Java Concurrency in Practice. Преимущества, которые дает work stealing по сравнению с обычным пулом: • Сокращение расходов на переключение контекста; • Защита от проблемы голодания потоков (thread starvation); • Защита от дедлока для рекурсивных задач. Как положено любому представителю ExecutorService, ForkJoinPool тоже умеет выполнять Runnable и Callable, но помимо этого работает и со специальными задачами ForkJoinTask, о которых также говорилось ранее. Интерфейс настройки и мониторинга остается тем же, что и в классических тред-пулах. Каждый обычный пул использует собственный набор потоков. ForkJoinPool по умолчанию использует общий пул-синглтон commonPool. Альтернативный отдельный пул всё еще можно задать в конструкторе. ForkJoinPool сам регулирует количество запущенных потоков, достигая максимальной эффективности при заданном уровне параллелизма. #Многопоточность 👉@BookJava

Что такое ForkJoinPool? ForkJoinPool – специальный вид ExecutorService (пулла потоков), который появился в Java с версии 7. П
Что такое ForkJoinPool? ForkJoinPool – специальный вид ExecutorService (пулла потоков), который появился в Java с версии 7. Предназначен для выполнения рекурсивных задач. Задача для сервиса представляется экземпляром класса ForkJoinTask. В основном используются подклассы RecursiveTask и RecursiveAction, для задач с результатом и без соответственно. Аналогично интерфейсам Callable и Runnable обычного ExecutorService. Тело рекурсивной операции задается в реализации метода compute() задачи ForkJoinTask. Здесь же создаются новые подзадачи, и запускаются параллельно методом fork(). Чтобы дождаться завершения выполнения задачи, на каждой форкнутой подзадаче вызывается блокирующий метод join(), результат выполнения при необходимости агрегируется. С точки зрения использования метод ForkJoinTask.join() похож на аналогичный метод класса Thread. Но в случае fork-join поток может на самом деле не заснуть, а переключиться на выполнение другой задачи. Такая стратегия называется work stealing, и позволяет эффективнее использовать ограниченное количество потоков. Это похоже на переиспользование потоков корутинах Kotlin (green threads). Примеры практического использования ForkJoinPool. #Многопоточность 👉@BookJava

Хотите стать тем самым программистом? Что и сервис разработает, и игру создаст, и чат-бота запрограммирует? Тогда освойте Jav
Хотите стать тем самым программистом? Что и сервис разработает, и игру создаст, и чат-бота запрограммирует? Тогда освойте Java-разработку в GeekBrains! На курсе вы изучите один из самых распространённых языков программирования Java и получите востребованную профессию. По окончании обучения вы: — сможете создавать сетевые чаты, приложения, мобильные игры и другие сервисы; — освоите востребованную профессию с нуля и сможете развивать карьеру на международном уровне; — добавите четыре проекта в портфолио и получите диплом о профессиональной переподготовке. О вашем будущем позаботится GeekBrains! Вместе с экспертами платформы вы скорректируете резюме и подготовитесь к прохождению собеседований. Почему GeekBrains: — занятия в онлайн-формате; — эксперты-практики из Яндекса и Ростелекома; — поддержка наставников и кураторов; — доступно обучение в рассрочку. Пока вы читаете этот пост, кто-то уже записался на онлайн-курс «ФакультетJava-разработки». Переходите по ссылке и оставляйте заявку, чтобы получить скидку на обучение: https://clck.ru/sGEnG

Как написать простейшее клиент-серверное приложение? Без применения дополнительных библиотек, основа низкоуровневого сетевого взаимодействия в Java строится на двух классах: Socket и ServerSocket. Socket – клиентское подключение. Отправляет запросы и получает ответы с заданного порта/адреса по TCP/IP-соединению. Наследники могут реализовывать протоколы более высокого уровня сетевого стека, например SSLSocket. Похож на утилиту netcat из Unix-систем. Обслуживает одно подключение к серверу, обменивается данными через InputStream и OutputStream. ServerSocket – сервер, приёмник подключений. Занимает на машине заданный свободный порт, и в одиночку принимает все подключения к нему. Опционально можно задать свой адрес, если текущая машина доступна по нескольким, а сокет должен быть доступен только по одному из них. Ключевой метод серверного сокета – accept(). Вызов этого метода блокирует исполнение до тех пор, пока не придет новый запрос от клиента. Возвращает пришедший запрос в виде экземпляра класса Socket. Чтобы сделать сервер параллельным, accept() должен вызываться в параллельных потоках. Стандартную внутреннюю реализацию сокетов можно подменить, установив для них статическую фабрику типа SocketImplFactory, методом setSocketFactory(). Для высокоуровневых (HTTP, FTP) запросов в стандартной библиотеке есть класс URLConnection и его наследники. Полный пример клиент-серверного приложения доступен в туториале на сайте Oracle. #Сеть 👉@BookJava

Разыскиваются опытные разработчики, чтобы обучиться профессии архитектора ПО на онлайн-курсе Skillbox. Вы познакомитесь с инс
Разыскиваются опытные разработчики, чтобы обучиться профессии архитектора ПО на онлайн-курсе Skillbox. Вы познакомитесь с инструментами и лучшими практиками построения архитектуры ПО. Научитесь выбирать архитектурный стиль под конкретную бизнес-задачу, сможете создавать масштабируемые отказоустойчивые приложения и повысите свой доход. Формат: — Онлайн-занятия. — Отработка на практических примерах. — Обратная связь от проверяющих экспертов и кураторов. — Защита итогового проекта. Первый месяц обучения бесплатно. Вы сможете изучать материалы курса в удобном для вас режиме. Для обучения достаточно 3-5 часов в неделю. Курс записан совместно с «Альфа-Банком». Записаться на курс со скидкой или получить бесплатную консультацию: https://clc.to/oIvdnw

Подборка каналов для 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 программиста Программирование 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/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

Жил на свете добрый Jooq – как подружиться с хранимками в Oracle В данной статье я хотел бы познакомить вас (в очередной раз, так как на хабре уже есть несколько статей, посвященных этой библиотеке) с Jooq и показать, как можно легко работать с хранимыми процедурами Oracle. Будет немного вводной части, а затем посмотрим примеры.

Оформите карту Visa или Mastercard в банке Казахстана онлайн Не можете продлить нужный сервис, снять валюту за рубежом или по
Оформите карту Visa или Mastercard в банке Казахстана онлайн Не можете продлить нужный сервис, снять валюту за рубежом или получить международный перевод? Команда Финакс запустила сервис, в котором граждане РФ могут оформить онлайн карту Visa или Mastercard в банке Казахстана. С помощью этого бота уже более 1000 россиян открыли зарубежные счета. Для чего она подходит: - Оплата зарубежных сервисов и покупок - Хранение валютных сбережений - Получение оплат из-за рубежа - Использование в путешествиях Весь процесс проходит онлайн, от вас потребуется только загранпаспорт. Оформить заявку и почитать ответы на частые вопросы можно в нашем боте: 👉 https://t.me/Vostokpay_bot

Как изменить значение приватного финального поля? Стоит сразу сказать, это очень плохая практика. Такое изменение грубо нарушает принципы сокрытия данных, и потенциально ломает инвариантность состояния объекта. Для этого трюка необходимо прибегнуть к использованию Reflection API. Сначала получим дескриптор поля – экземпляр класса Field. У объекта метакласса Class<X> интересующего нас класса вызовем метод getDeclaredField(). Просто getField() не сработает, потому что он работает только с публичными полями. Параметром передается строка с именем поля. Полученного экземпляра Field уже достаточно для доступа к изменяемым приватным полям. Перед обращением требуется сделать его доступным, вызвав setAccessible(true). Сам доступ осуществляется методами get*() и set*(). Так как Field представляет дескриптор поля класса, без привязки к конкретному экземпляру класса, экземпляр передается параметром в методы доступа. Для статического поля передается null. Чтобы побороть неизменяемость финального поля, нужно снять его модификатор final. Все модификаторы поля хранятся в поле modifiers дескриптора. То есть, нужно также с помощью рефлекшена сделать доступным и обновить поле уже объекта Field. Поле modifiers хранит модификаторы в виде битовой маски. Для изменения придется прибегнуть к битовым операторам. Полный код установки значения 42 в поле myField объекта myObject выглядит так: Field field = myObject.class.getDeclaredField( "myField" ); field.setAccessible( true ); Field modifiersField = Field.class.getDeclaredField( "modifiers" ); modifiersField.setAccessible( true ); modifiersField.setInt( field, field.getModifiers() & ~Modifier.FINAL ); field.setInt(myObject, 42); #Классы

Java: A Beginner's Guide, Ninth Edition Herbert Schildt (2022) A practical introduction to Java programming-fully revised for
Java: A Beginner's Guide, Ninth Edition Herbert Schildt (2022) A practical introduction to Java programming-fully revised for the latest version, Java SE 17. Thoroughly updated for Java Platform Standard Edition 17, this hands-on resource shows, step by step, how to get started programming in Java from the very first chapter. Written by Java guru Herbert Schildt, the book starts with the basics, such as how to create, compile, and run a Java program. From there, you will learn essential Java keywords, syntax, and commands. Java: A Beginner's Guide, Ninth Edition covers the basics and touches on advanced features, including multithreaded programming, generics, Lambda expressions, and Swing. Enumeration, modules, and interface methods are also clearly explained. This guide delivers the appropriate mix of theory and practical coding necessary to get you up and running developing Java applications in no time! Скачать 👉 @java_360