Обложка канала

Библиотека Java разработчика. Страница 33

9291 @BookJava

Библиотека Java разработчика. Книги по программированию на Java.

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

    ▶️ Более 70 000 учеников уже присоединились к beONmax! https://beonmax.com Изучайте самые популярные онлайн профессии на практике. Более 50+ курсов по верстке и созданию сайтов, программированию, базам данных, мобильной разработке, дизайну, продвижению и др. 🔹 HTML / CSS 🔹 JavaScript, React JS 🔹 PHP / MySQL 🔹 Python, Django 🔹 Java, Kotlin, Android, C# 🔹 WordPress 🔹 Figma, Photoshop, Illustrator 🔹 Реклама Yandex, Google, VK и многое другое… Удобно и выгодно  Обучайтесь на любом курсе по единой подписке - от 90 руб. в месяц! Вы получите: ☑️ Обучение от экспертов-практиков с реальным опытом ☑️ Десятки крутых проектов в свое портфолио ☑️ Сертификаты по итогам каждого курса ☑️ Рекомендации по трудоустройству или поиску заказов ☑️ Вопросы и обмен опытом в сообществе ☑️ Доступ онлайн 24/7 Отзывы реальных учеников, прошедших обучение на beONmax 🚀 ▶️ Начать легко и доступно каждому, даже если вы новичок. Просто регистрируйтесь и проходите первые открытые уроки — Присоединяйтесь к beONmax!
  • Библиотека Java разработчика

    На какие области делится память JVM? Следует помнить, что это внутренние особенности HotSpot (и её opensource-версии OpenJDK). В других виртуальных машинах (например в Android) всё может быть абсолютно по-другому. Области-поколения кучи вообще зависят от используемого алгоритма сборки мусора, и могут отличаться в рамках одной и той же реализации виртуальной машины. Как было сказано в предыдущих постах, некоторые сборщики не пользуются понятием поколений совсем. Stack – место под примитивы и ссылки на объекты (но не сами объекты). Хранит локальные переменные и возвращаемые значения функций. Здесь же хранятся ссылки на объекты пока те конструируются. Все данные в стеке – GC roots. Освобождается сразу на выходе из функции. Принадлежит потоку, размер по-умолчанию указывается параметром виртуальной машины -Xss, но при создании потока программно можно указать отличное значение. Подробнее. PermGen – В этой области хранятся загруженные классы (экземпляры класса Class<T>). Здесь же с Java 7 хранится пул строк. Изначально размера -XX:PermSize, растет динамически до -XX:MaxPermSize. Не считается частью кучи. Metaspace – с Java 8 заменяет permanent generation. Отличие в том, что по умолчанию metaspace ограничен только размерами доступной на машине памяти, но так же как PermGen может быть ограничен, параметром -XX:MaxMetaspaceSize. Heap – куча, вся managed-память, в которой хранятся все пользовательские объекты. Все следующие разделы – части кучи. Параметры -Xms, -Xmn и -Xmx устанавливают начальный, минимальный и максимальный размеры хипа соответственно. Eden, New Generation, Old Generation и другие – специфичные для сборщика мусора части кучи, поколения. Могут быть разные, но общий подход сохраняется: долго живущий объект постепенно двигается во всё более старое поколение; сборка мусора в разных поколениях происходит раздельно; чем поколение старше, тем сборка в нём реже, но и дороже. Подробнее. Хотя устройство памяти – это детали реализации виртуальной машины, для Java-разработчика знания о них несут практическую пользу. Эти знания необходимы для передачи правильных значений параметров JVM, что в свою очередь спасает от просадок производительности GC и остановок с OutOfMemoryError. #JVM
  • Библиотека Java разработчика

    Что такое Reflection и как его использовать? Reflection, рефлексия – это средства манипуляции данными на основе знания о структуре классов этих данных, инструменты метапрограммирования. Класс Class<T> используется как точка входа в мир рефлекшена. Его экземпляры предоставляют саму метаинформацию о содержимом класса и основные методы для работы с ним. Все классы относящиеся Java Reflection находятся в пакетах java.lang и java.lang.reflect. Экземпляр класса Class можно получить тремя способами: 🔘 Литералом .class; 🔘 Статическим фабричным методом Class.forName(); 🔘 Методом getClass() экземпляров класса. Использование Reflection API медленное и небезопасное. Оно позволяет ломать инвариантность состояний экземпляра, нарушать инкапсуляцию, и даже менять финальные поля. Использовать рефлексию естественно в тестовом коде, в инструментах разработки, в фреймворках (особенно в связке с runtime-аннотациями). Рефлекшн в ординарном бизнес-коде обычно говорит о больших проблемах проектирования. Нередко на интервью просят продемонстрировать пример использования рефлекшна. Один из самых близких для backend-разработчика примеров – инициализация классов-конфигураций в Spring Framework. Фреймворк с помощью рефлекшна сканирует внутренности таких классов. Поля и методы, помеченные специальными аннотациями, воспринимаются как объявления элементов экосистемы фреймворка. #Классы
  • Реклама

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

    🔥Хардкорный тест по Java🔥 ⭕️Осторожно! Из-за этого курса можно стать супервостребованным Java-разработчиком! Пройди тест из 20 вопроса и испытай себя. 🦸🏼‍♂️62 компании-партнера ждут, когда ты овладеешь этим мастерством. Проходи вступительный тест курса "Java Developer. Professional" и помни большая сила — большая ответственность! 📌ПРОЙТИ ТЕСТ - https://otus.pw/dvKm/
  • Библиотека Java разработчика

    Сегодня паттерн Посетитель в Java уже не нужен – лучше использовать переключатели паттернов В современном языке Java паттерн Посетитель (Visitor) уже не нужен. Он отлично компенсируется использованием запечатанных типов и переключателей, использующих сопоставление с шаблоном – в таком случае те же цели достигаются проще и меньшим объемом кода. Далее
  • Библиотека Java разработчика

    Чем анонимный внутренний класс отличается от лямбды? Лямбда-выражение имеет более легковесный синтаксис. Не нужно явно указывать тип функционального интерфейса, который лямбда реализует – он автоматически выведется из контекста. Лямбда-выражения добавлены в язык в первую очередь как синтаксический сахар. С другой стороны, у класса есть поля. Экземпляр анонимного класса сохраняет свое состояние между вызовами, и меняет его при необходимости. Для лямбды доступен лишь захват и effectively final использование внешних переменных. Лямбдой реализуется только функциональный интерфейс. Функциональный интерфейс – это тип с единственным абстрактным методом. Анонимным классом же можно расширить любой расширяемый класс или реализовать интерфейс с любым количеством абстрактных методов. Анонимный класс создает новый скоуп, лямбда работает в текущем. Это значит, что объявление переменной с именем, которое уже используется снаружи, в лямбде вызовет ошибку компиляции «variable is already defined», в анонимном классе скроет (shadowing) внешнюю переменную. С точки зрения реализации JVM, для лямбды не создается дополнительного .class файла, как это происходит для анонимного класса. Соответственно, не происходит и обычной загрузки и верификации класса. Вместо этого используется механизм invokedynamic и класс генерируется на лету с помощью LambdaMetafactory. Так что лямбда-выражения обычно работают быстрее. Внутренности реализации подробно разобраны например в этой статье.
  • Библиотека Java разработчика

    Ты Java программист и устал серфить интернет в поисках вакансий? Тяжело найти ту самую работу, которая будет соответствовать и отвечать требованиям твоего уровня? Java Job - канал, который поможет решить эти вопросы На канале ты найдешь: свежие и актуальные вакансии, с достойными зарплатами и условиями труда стажировки, бесплатные курсы, работа для джунов, мидлов и сеньеров по всему миру примеры вопросов с собеседований, интересные задачи и обучающий материал для повышения скилла Подписывайся на наш канал, цени свое время!
  • Библиотека Java разработчика

    Классические задачи Computer Science на языке Java Копец Дэвид (2021) Cтолкнулись с «неразрешимой» проблемой при разработке программного обеспечения? Скорее всего, кто-то уже справился с этой задачей, и вы можете не ломать голову. Дэвид Копец собрал наиболее полезные готовые решения, принципы и алгоритмы. «Классические задачи Computer Science на языке Java» — это мастер-класс по программированию, содержащий 55 практических примеров, затрагивающих самые актуальные темы: базовые алгоритмы, ограничения, искусственный интеллект и многое другое. В этой книге: - Рекурсия, мемоизация и битовые манипуляции. - Поисковые, графовые и генетические алгоритмы. - Проблемы ограничений. - Кластеризация методом k-среднего, нейронные сети и состязательный поиск. Скачать 👉 @java_360
  • Библиотека Java разработчика

    Вам нужно обновить или купить новые компьютеры или их комплектующие для офиса? Хотите, чтобы покупка была выгодной и удобной? Сейчас в Ситилинк проходит акция «Идеальный ПК» специально для юридических лиц До конца июня при заказе комплектующих на сайте Ситилинк вы получаете: • 100% скидку на сборку заказанных машин • до 3% бонусов на вашу клубную карту клиента Переходи по ссылке ниже и соберите свой идеальный ПК https://clck.ru/pe3zN
  • Библиотека Java разработчика

    Назовите проблемы стандартной сериализации. Стандартная сериализация Java при всей своей гибкости обладает рядом проблем. Дефолтная сериализация фактически добавляет все приватные поля в экспортируемый интерфейс, и ограничивает будущую гибкость реализации. От этого спасает serialization proxy. Десериализация работает как скрытый конструктор, мимо настоящего, который обеспечивает консистентность состояния. Не сработают даже инициализаторы: поле, определенное как int foo=42, после десериализации будет хранить значение 0. Сериализация усложняет тестирование – между разными версиями класса должна соблюдаться семантическая совместимость. Эта проблема актуальна для любой реализации персистентного хранения объектов. Неаккуратно определенная десериализация создает дыры в безопасности. Например, сериализация объекта со слишком глубоким графом объектов-полей может привести к StackOverflowError. Злоумышленник положит вашу систему, подставив такой искусственный объект. Для защиты от различных уязвимостей в Java 8 добавлен механизм сериализационного фильтрования. Встроенная реализация сериализует все классы одинаково хорошо. Естественно, за универсальность нужно платить, и для каждого частного случая производительность не идеальна и может быть улучшена частной реализацией. #Сериализация
  • Библиотека Java разработчика

    Как создать рандомную строку в java? Как вариант используйте StringBuilder и цикл чтобы создать рандомную строку в Java, ниже пример кода как пример. import java.security.SecureRandom; public class Main { public static void main(String args[]) { // Символы строки String alpha = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; // Длина строка int len = 5; StringBuilder sb = new StringBuilder(len); SecureRandom rnd = new SecureRandom(); for (int i = 0; i < len; i++) { sb.append(alpha.charAt(rnd.nextInt(alpha.length()))); } // Вывод: 5ezs1 System.out.println(sb.toString()); } } #java Подписывайтесь на канал 👉@coddy_academy
  • Библиотека Java разработчика

    Газпромбанк приглашает тебя на онлайн-лекцию о старте карьеры в IT! 9 июня в 18:00 (по МСК) Ян Ашенкампф поделится инсайтами о поиске идеального работодателя и преодоления трудностей на первой работе. На примере личного опыта Ян расскажет про путь до руководителя разработки департамента ИТ инвестиционного бизнеса Газпромбанка. Что тебя ждет: • лекция о построении карьеры в IT, лайфхаки для прохождения собеседований и адаптации на рабочем месте для джунов; • возможность задать вопросы лектору и завести полезные знакомства; • мерч и сертификат об участии! Лекция пройдет в Zoom (только live) – регистрируйся: https://vk.cc/cdZ3PU
  • Библиотека Java разработчика

    Что такое serialization proxy? Serialization proxy (посредник сериализации) – это паттерн, который дает простой способ определить собственную сериализационную форму. 1. Внутри целевого класса объявляется вложенный класс-посредник; 2. В посреднике объявляются поля, описывающие логическую структуру объекта (собственно, сериализационную форму); 3. Добавляется конструктор посредника, принимающий экземпляр оригинального класса и инициализирующий все эти поля; 4. Оба класса помечаются интерфейсом Serializable; 5. В методе writeReplace оригинального класса инстанциируется и возвращается прокси от this; 6. Симметричные действия совершаются для чтения – в классе-посреднике реализуется метод readResolve; 7. В основном классе добавляется readObject, который выбрасывает исключение – это защитит от чтения без прокси. Пример кода реализации. #Сериализация
  • Библиотека Java разработчика

    Подборка каналов для 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 и др. Программирование C++📌 https://t.me/cpp_lib Библиотека C/C++ разработчика Вакансии 📌 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 разработчика

    🔥 OTUS приглашает 9 июня в 19:00 мск на бесплатный вебинар «Архитектура приложения и модуль бизнес-логики» оналйн-курса «Kotlin Backend Developer»! 📚На вебинаре мы обсудим, как поддерживать чистую архитектуру приложения и контролируемо внедрять изменения. Так же мы исследуем библиотеку для реализации бизнес-процессов, написанную на Kotlin. 👉Регистрация на вебинар: https://otus.pw/B1Sg/ Бонус: пройдите вступительный тест и получите курс по Git в записи бесплатно!
  • Реклама

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

    Полезные потоки Java В этой статье мы рассмотрим несколько полезных способов использования потоков Java для работы с различными данными. theoneamin.medium.com/useful-…66effe59 👉 @BookJava
  • Библиотека Java разработчика

    Как сериализация работает с наследованием? Когда Serializable класс имеет цепочку родителей, пока эти родители тоже Serializable, десериализация объекта идет от родителя к наследнику, в обход конструктора. Вместо него вызываются методы readObject (readObjectNoData). Но как только встречается первый предок, не реализующий интерфейс Serializable, инициализация для него возвращается в нормальное русло – вместо readObject вызывается конструктор без аргументов. Если такого конструктора нет, или он объявлен private, исполнение выбросит InvalidClassException. При сериализации несериализуемые предки просто игнорируются. Если класс несериализуемый и не предоставляет достаточного доступа к своему логическому состоянию для наследников, правильно реализовать его наследника сериализуемым может быть невозможно. Популярный вопрос на тему – как когда сериализуешь объект класса-наследника, избежать сериализации его родительской части. Единственный способ добиться этого – кастомизировать сериализационную форму, определив собственную реализацию writeObject(), либо используя интерфейс Externalizable. Открытость класса для наследования делает неприменимым паттерн serialization proxy (который рассмотрим позднее). #Сериализация
  • Библиотека Java разработчика

    Одна из многих причина нежелания идти учиться на курсы по разработке — отсутствие гарантий, что деньги за курс не будут выброшены на ветер. В Kata Academy эти гарантии предоставляют. В договоре с Kata четко прописано, что вам не нужно платить за обучение до тех пор, пока вы не устроитесь на работу в IT. То есть во время обучения вы ничего не платите. Также в договоре указывается, что Kata гарантирует минимальную зарплату от 100 тысяч рублей в месяц. Если вы вдруг не смогли устроиться на работу, то за обучение платить не нужно. Связано это с тем, что цель Kata — ваше трудоустройство разработчиком, а если вам не удалось, значит на курсе вас не смогли подготовить должным образом. Записывайтесь на курс и получайте тестовое задание: https://clck.ru/hN2AE Если не уверены в своих силах — не переживайте, Kata дадут неплохой FAQ, который поможет с выполнением тестового!