es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

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

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

Ir al canal en Telegram

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

Mostrar más
9 988
Suscriptores
+124 horas
-157 días
-5730 días
Archivo de publicaciones
Умение создавать отказоустойчивые и масштабируемые архитектуры — востребованный крупными компаниями навык. Он пригодится в ра
Умение создавать отказоустойчивые и масштабируемые архитектуры — востребованный крупными компаниями навык. Он пригодится в работе разработчикам, тимлидам и архитекторам. Одна из техник масштабирования баз данных — репликация. 🗓 8 июня в 20:00 пройдет открытый урок «Преимущества и недостатки различных видов репликации» в OTUS. Что вас ждет на занятии? - Разберем различные виды репликаций, обсудим смысл и назначение репликации - Сравним особенности репликации в MySQL и PostgreSQL. - Познакомимся с групповой репликацией в MySQL. 👉🏻 Пройдите вступительное тестирование, чтобы записаться на урок – https://otus.pw/1kGc/ Вебинар проведет эксперт по Java Enterprise разработке Владислав Родин. Продолжить общение со специалистами по высокой нагрузке вы сможете на онлайн-курсе «Highload Architect» от OTUS.

‍Пишем игру быки и коровы на Java Существует множество вариаций этой игры. Компьютерный вариант игры обычно однопользовательский, при этом компьютер загадывает число, а человек — отгадывает его. После каждого ввода числа, компьютер выводит количество быков и коров в нем. «Коровой» называется цифра, угаданная без совпадения позиции, а «быком» — совпадение и цифры и позиции. Помимо прочего, разработанная программа должна программа должна: корректно обрабатывать неправильный пользовательский ввод (четырехзначные числа) и выдавать, при необходимости, предупреждающие сообщения; сохранять таблицу рекордов в текстовом файле. Задачи: проанализировать задачу и разработать требования к программе; выполнить анализ требований и проектирование; реализовать программу и проверить правильность ее работы. Исходный код работы целиком можно взять в репозитории. 👉 @BookJava

Подборка каналов для IT специалистов 🎯 Системное администрирование 📌 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/sysadmin_rabota Системный Администратор https://t.me/progjob Вакансии в IT Чат программистов📌 https://t.me/developers_ru Excel лайфхак📌 https://t.me/Excel_lifehack GitHub Сообщество 📌 https://t.me/Githublib Интересное из GitHub CodePen 📌 https://t.me/codepen_1 Сообщество пользователей CodePen Базы данных (Data Base) 📌 https://t.me/database_info Все про базы данных Программирование Python 📌 https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍 https://t.me/BookPython Библиотека Python разработчика https://t.me/python_real Python подборки на русском и английском Мобильная разработка: iOS, Android 📌 https://t.me/developer_mobila Мобильная разработка Фронтенд разработка 📌 https://t.me/frontend_1 Подборки для frontend разработчиков Java разработка 📌 https://t.me/BookJava Библиотека Java разработчика Разработка игр 📌 https://t.me/game_devv Все о разработке игр Библиотеки 📌 https://t.me/book_for_dev Книги для программистов Rus https://t.me/java_360 Книги по Java Rus https://t.me/python_360 Книги по Python 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/UchuEnglish Английский с нуля Математика 📌 https://t.me/Pomatematike Канал по математике Арбитраж трафика 📌 https://t.me/partnerochkin CPA и арбитраж трафика Крипта 📌 https://t.me/bitkoinoff Новости криптовалют DeepFake 📌 https://t.me/deepfakenow Публикуем deepfake видео Мир технологий 📌 https://t.me/mir_teh Видео из мира технологий

Как обойти строчку? Для хранения строк в Java в общем случае используется кодировка UTF-16. Для полного понимания вопроса необходимо понимать ее особенности: что такое суррогатные пары и плоскости юникода. Конкретнее, что один символ в обычном понимании слова называется code point, и представляется одним или двумя значениями типа char. Значит, корректный ответ нужно начать с уточнения: подразумевается ли обход значений char или code point. Из этого следует, что и длина строки, верхняя граница итерации – тоже понятие неоднозначное. Метод length() на самом деле возвращает не количество Unicode-символов, а количество значений char. Реальную логическую длину (количество кодовых точек) покажет метод codePointCount(). Нужно помнить, что чтобы обнаружить суррогатные пары, внутри ему придется проитерировать по символам. Итерироваться по char можно либо получая по одному символу с помощью метода charAt(), либо со всем массивом сразу, методом toCharArray(). В случае с массивом создается копия внутреннего значения – это естественно медленнее, зато этот массив-копию можно мутировать. Работать с суррогатными парами придется вручную, для этого в классе Character есть специальные методы. Другой вариант – сразу оперировать методами codePointAt() и codePointBefore(). Параметром указываются индексы массива char, но результатом будут кодовые точки типа int. В Java 8 появился новый удобный способ обхода – методы chars() и codePoints(). Они возвращают IntStream из символов и кодовых точек соответственно. Носителем результирующих стримов выступает оригинальное внутреннее значение строки, копирование массива не требуется. #Строки

​🟢 Для новичков, обучение с нуля 🎯 Начать карьеру в этой области с нуля поможет специализация «Android Developer». Вас ждет 10 месяцев освоения трендов Android-разработки на Kotlin от экспертов-практиков из ведущих IT-компаний. Вы шаг за шагом получите все необходимые для работы навыки: от синтаксиса Kotlin и принципов создания приложений до технологии и инструментов Middle+ уровня. 👉 Оставьте заявку и забронируйте место со скидкой 🔴 Для опытных Android-разработчиков 🦾 Как Android-разработчику перейти на новый уровень? Для этого нужно уметь проектировать архитектуру приложений, глубоко разбираться в Android SDK, выстраивать инфраструктуры с нуля, тестировать приложения и знать современные библиотеки и фреймворки. Именно этим навыкам обучают на онлайн-курсе «Android Developer. Professional». На протяжении 5 месяцев вы будете работать над собственным проектом — тонким клиентом к сервису с публичным API, которое усилит ваше портфолио 👉 Пройдите вступительный тест и занимайте место на курсе по спец.цене

JPoint 2022 — Java-конференция от JUG Ru Group. Она пройдет 13–15 июня, на 80% online, а 24 июня в Санкт-Петербурге будет off
JPoint 2022 — Java-конференция от JUG Ru Group.  Она пройдет 13–15 июня, на 80% online, а 24 июня в Санкт-Петербурге будет offline-день.  Вас ждут 27 докладов от Java Champions и разработчиков из Huawei, МТС, Tinkoff, Одноклассников и других компаний. Поговорим об инструментах, внутренностях VM, базах данных, архитектуре, процессах, а также обсудим работу с Kotlin и Spring.  Среди докладов: ✔ «Becoming a More Effective Developer: Tips and Experiences»; ✔ «Thread Wars: проект Loom наносит ответный удар»; ✔ «Непрерывное профилирование в облаке с помощью eBPF»; ✔ «Индексы в PostgreSQL. Как понять, что создавать». Подробности и полная программа — на сайте конференции. При покупке билета на конференцию из категории «для частных лиц» используйте промокод: bookjava2022JRGpc

Как получить ip адрес компьютера на java? Используйте InetAddress чтобы получить IP адрес компьютера на Java, ниже пример код
Как получить ip адрес компьютера на java? Используйте InetAddress чтобы получить IP адрес компьютера на Java, ниже пример кода как пример: import java.net.InetAddress; import java.net.UnknownHostException; public class Main { public static void main(String args[]) { try { String ip = InetAddress.getLocalHost().getHostAddress(); // Вывод: 127.0.0.1 System.out.println(ip); } catch (UnknownHostException e) { e.printStackTrace(); } } } #java Подписывайтесь на канал 👉@coddy_academy

Какие бывают строковые классы? Кроме очевидного класса String, в стандарте Java существует еще StringBuffer и StringBuilder.
Какие бывают строковые классы? Кроме очевидного класса String, в стандарте Java существует еще StringBuffer и StringBuilder. Класс String иммутабелен, а эти два вспомогательных класса реализуют для него паттерн Builder и служат способом редактирования строки без относительно дорогого пересоздания объекта. Все методы StringBuffer синхронны. В Java 1.5 ему на замену пришел несинхронизированный вариант StringBuilder. Эта ситуация аналогична HashMap и Hashtable. В остальном эти два класса почти ничем не отличаются, имеют одинаковый набор методов и конструкторов. Для буфера и билдера не работает синтаксический сахар строк: 🔘 Их нельзя создать литералом, вместо этого используется обычный конструктор; 🔘 Нельзя конкатенировать оператором +, вместо этого используются обычные методы insert и append. Сам оператор конкатенации константных выражений, компилируется в интернированную строку, но для не-констант неявно использует StringBuilder. #Строки

⁉️Хочешь открыть новые подходы к разработке на Java ? 🔥 Приходи на открытый урок OTUS «Как сбросить оковы NullPointerExcepti
⁉️Хочешь открыть новые подходы к разработке на Java ? 🔥 Приходи на открытый урок OTUS «Как сбросить оковы NullPointerException» 2 июня в 20:00. Мы посмотрим на Optional в Java, насколько он нам помогает творить, а также построим безумный пример, который поможет почувствовать силу данного шаблона. 🗣Занятие проведет Виталий Куценко, Java Lead в RND подразделении Ростсельмаша. После вебинара вас ждет еще больше инструментов бэкенд-разработки на онлайн-курсе «Java Developer. Professional». 📌Пройдите вступительный тест, чтобы зарегистрироваться на занятие: https://otus.pw/e8eu/

Техническое интервью Java Developer Интервью состоит из 14 видео доступных на youtube 👉 @BookJava

Как работает вывод типов? Для начала разберемся, что такое вывод типов. Type inference – это способность компилятора догадаться, какой тип нужно подставить, и сделать это за вас. На обычном интервью никто не спросит детали алгоритма вывода типов, достаточно будет сказать, что вывод происходит статически, только на основании типов аргументов и ожидаемого типа результата. По сути, вопрос заключается не в «как работает?», а «что это и когда возникает?». Первое, что многим приходит в голову при фразе «вывод типов» – diamond operator <>. Он появился в Java с версии 7. Его применяют к конструкторам дженерик классов, чтобы отличать требование автоматического вывода типа от raw type. С Java 9 diamond operator заработал и для анонимных классов. Для дженерик методов можно указывать параметр явно, но diamond синтаксически недопустим – вывод и так сработает по умолчанию. В Java 10 для вывода типа локальной переменной добавлено ключевое слово var. Работает это так же, как в большинстве современных языков – ключевое слово ставится вместо типа при объявлении. Типы выводимых параметров лямбда-выражения также можно не указывать. С Java 11 вместо типа указывается ключевое слово var. Такой синтаксис дает возможность добавлять параметру модификаторы и аннотации. #Язык #Дженерики

💎 Интересен язык Scala? ️️❇️ Начните осваивать его уже 7 июня в 20:00! Ждем вас на открытом уроке «Эффекты в Scala» в OTUS.
💎 Интересен язык Scala? ️️❇️ Начните осваивать его уже 7 июня в 20:00! Ждем вас на открытом уроке «Эффекты в Scala» в OTUS. Занятие проведет Алексей Воронец, руководитель разработки в NAUMEN. 📕 На открытом уроке мы рассмотрим понятие эффекта и сложности, которые могут возникать при наличии эффектов, введем понятие функционального эффекта, рассмотрим его свойства и реализуем свой небольшой функциональный эффект. ⚠️ Этот урок — часть онлайн-курса «Scala Developer». Программа рассчитана на специалистов с опытом в Java от 1 года ли на других ООП от 3-х лет. 👉 Для участия пройдите вступительный тест

Which JVM Version Is the Fastest? ​Какая версия JVM самая быстрая? https://dzone.com/articles/which-jvm-version-is-the-fastest

Что такое heap pollution? Как было сказано ранее, массивы в Java ковариантны. А значит, можно обратиться к объекту типа String[] через переменную типа Object[], и положить туда например Integer. Такой код скомпилируется, но в момент записи произойдет ArrayStoreException. Дженерики защищены инвариантностью. Если попытаться положить List<Object> в List<String>, эта же по сути ошибка произойдет уже на этапе компиляции. Heap pollution – ситуация, когда эта защита не срабатывает, и переменная параметризованного типа хранит в себе объект, параметризованный другим типом. Простейший пример: List<String> strings = (List) new ArrayList<Integer>(); Документация гарантирует, что при компиляции всего кода целиком, heap pollution не может возникнуть без варнинга этапа компиляции. Heap pollution может произойти в двух случаях: при использовании массивов дженериков и при смешивании параметризованных и raw-типов. Raw types – это параметризованные типы без указания параметра. Пример с raw types, приводящий к heap pollution, уже был описан выше: List<String> strings = (List) new ArrayList<Integer>(); Использовать raw types не надо вообще, причины подробно изложены в главе 26 Effective Java. Если информация о дженериках не нужна, используется символ wildcard (<?>). Компилятор не даст создать массив параметризованного типа, это приведет к ошибке generic array creation. Картинка ниже иллюстрирует, к чему это могло бы привести. Параметризованный тип varargs-аргумента метода вызывает ту же проблему, т.к. varargs – не что иное как параметр-массив. Вот почему он так же приводит к предупреждению компилятора «possible heap pollution». Если вы уверены что риска нет, с Java 7 это предупреждение заглушается аннотацией @SafeVarargs.

🔥 Чем отличаются объектно-ориентированное и функциональное программирование? ⚡️ Приглашаем 1 июня в 20:00 мск на бесплатный
🔥 Чем отличаются объектно-ориентированное и функциональное программирование? ⚡️ Приглашаем 1 июня в 20:00 мск на бесплатный вебинар «Объектно-ориентированное и функциональное программирование»! 📚 Вместе с практикующим экспертом Сергеем Петрелевичем мы на максимально простом уровне разберем отличия объектно-ориентированного и функционального подходов в программировании, а также рассмотрим примеры на языке Java. Урок рассчитан на новичков в IT и пройдет в рамках онлайн-курса «Специализация Java-разработчик», об особенностях которого мы подробно расскажем во второй части занятия. 📌 Регистрация на бесплатный вебинар: https://otus.pw/LnqV/

Что такое bridge method? В Java отсутствует ковариантность переопределенных методов по параметрам – их типы должны совпадать
Что такое bridge method? В Java отсутствует ковариантность переопределенных методов по параметрам – их типы должны совпадать с типами параметров метода в родительском классе. Когда дженерик параметр конкретизируется в наследнике, методы с аргументами этого дженерик типа больше не совпадают в байткоде – в наследнике тип конкретный, а в родителе стертый до верхней границы. Проблема решается простым и безопасным кастом. Компилятор генерирует новый метод, который совпадает по сигнатуре с родительским. В его теле параметр кастуется и вызов делегируется в пользовательский метод. Это и называется bridge методом. Bridge method можно увидеть с помощью рефлекшна. Его имя совпадает с оригинальным методом, но параметр имеет тип, в который сотрется дженерик родителя. Этот метод будет помечен флагом synthetic, что значит, что он написан не программистом а компилятором. Попытка написать такой же метод вручную приведет к ошибке компиляции. 👉 @BookJava #Дженерики

Что такое ковариантность и контравариантность? Формально, ковариантность/контравариантность типов – это сохранение/обращение порядка наследования для производных типов. Проще говоря, когда у ковариантных сущностей типами-параметрами являются родитель и наследник, они сами становятся как бы родителем и наследником. Контравариантные наоборот, становятся наследником и родителем. Легче всего осознать эти понятия на примерах: 🔘 Ковариантность: List<Integer> можно присвоить в переменную типа List<? extends Number> (как будто он наследник List<Number>). 🔘 Контравариантность: в качестве параметра метода List<Number>#sort типа Comparator<? super Number> может быть передан Comparator<Object> (как будто он родитель Comparator<Number>) Отношение типов «можно присвоить» – не совсем наследование, такие типы называются совместимыми (отношение «is a»). Существует еще одно связанное понятие – инвариантность. Инвариантность – это отсутствие свойств ковариантности и контрвариантности. Дженерики без вайлдкардов инвариантны: List<Number> нельзя положить ни в переменную типа List<Double>, ни в List<Object>. Массивы ковариантны: в переменную Object[] можно присвоить значение типа String[]. Переопределение методов начиная с Java 5 ковариантно относительно типа результата и типов исключений.