Гид Java-разработчика. Проектно-ориентированный подход (2022) PDF
Этот гид позволит вам прокачать свои навыки объектно-ориентированного программирования и ознакомиться с его приемами на примере реальных проектов. Авторы представляют проектно-ориентированный подход к созданию программного обеспечения на Java, используя который можно стать эффективным разработчиком. Каждая глава книги сконцентрирована на определенном проекте, начинающемся как простое консольное приложение и вырастающем в полноценное приложение. Если вы знаете основы программирования на Java, то здесь вы изучите современные методы разработки программного обеспечения, которые позволят создавать актуальные, стабильные и поддерживаемые Java-приложения. Если вы недавно закончили университет или курсы программирования и ищете первую работу в сфере Java, то вам обязательно нужно купить эту книгу — она связывает между собой упражнения в программировании и реальную ежедневную работу профессионального инженера-разработчика.
Этот гид позволит вам прокачать свои навыки объектно-ориентированного программирования и ознакомиться с его приемами на примере реальных проектов. Авторы представляют проектно-ориентированный подход к созданию программного обеспечения на Java, используя который можно стать эффективным разработчиком. Каждая глава книги сконцентрирована на определенном проекте, начинающемся как простое консольное приложение и вырастающем в полноценное приложение. Если вы знаете основы программирования на Java, то здесь вы изучите современные методы разработки программного обеспечения, которые позволят создавать актуальные, стабильные и поддерживаемые Java-приложения. Если вы недавно закончили университет или курсы программирования и ищете первую работу в сфере Java, то вам обязательно нужно купить эту книгу — она связывает между собой упражнения в программировании и реальную ежедневную работу профессионального инженера-разработчика.
👍16❤2🔥2
Java. Полное руководство, 12-е издание (2022) PDF, DJVU
В полностью обновленном с учетом версии Java SE 17 издании объясняется, как разрабатывать, компилировать, отлаживать и запускать программы на Java. Автор многочисленных бестселлеров по программированию Герберт Шилдт охватывает весь язык Java, включая его синтаксис, ключевые слова и фундаментальные принципы программирования. Вы также найдете здесь информацию об основных частях библиотеки Java API, таких как ввод-вывод, Collections Framework, библиотека потоков и утилиты параллелизма. Исследуются темы Swing, JavaBeans и сервлеты, а многочисленные примеры демонстрируют язык Java в действии. Конечно же, подробно обсуждаются недавние дополнения к языку Java, в том числе записи, запечатанные классы и выражения switch. Книга написана в ясном и четком стиле, который делает книги Шилдта выбором миллионов людей во всем мире.
В полностью обновленном с учетом версии Java SE 17 издании объясняется, как разрабатывать, компилировать, отлаживать и запускать программы на Java. Автор многочисленных бестселлеров по программированию Герберт Шилдт охватывает весь язык Java, включая его синтаксис, ключевые слова и фундаментальные принципы программирования. Вы также найдете здесь информацию об основных частях библиотеки Java API, таких как ввод-вывод, Collections Framework, библиотека потоков и утилиты параллелизма. Исследуются темы Swing, JavaBeans и сервлеты, а многочисленные примеры демонстрируют язык Java в действии. Конечно же, подробно обсуждаются недавние дополнения к языку Java, в том числе записи, запечатанные классы и выражения switch. Книга написана в ясном и четком стиле, который делает книги Шилдта выбором миллионов людей во всем мире.
👍30❤6🔥4
Оцените количество памяти на хранение одного примитива типа byte в LinkedList?
Каждый элемент
Для
Каждый элемент
LinkedList
хранит ссылку на предыдущий элемент, следующий элемент и ссылку на данные.static class Node<E> {Для
E item;
Node<E> next;
Node<E> prev;
//...
}
32-битных
систем каждая ссылка занимает 32 бита
(4 байта
). Сам объект (заголовок) вложенного класса Node
занимает 8 байт
. 4 + 4 + 4 + 8 = 20 байт
, а т.к. размер каждого объекта в Java
кратен 8
, соответственно получаем 24 байта
. Примитив типа byte
занимает 1 байт
памяти, но в JCF
примитивы упаковываются: объект типа Byte
занимает в памяти 16 байт
(8 байт
на заголовок объекта, 1 байт
на поле типа byte
и 7 байт
для кратности 8
). Также напомню, что значения от -128
до 127
кэшируются и для них новые объекты каждый раз не создаются. Таким образом, в x32 JVM 24 байта
тратятся на хранение одного элемента в списке и 16 байт
- на хранение упакованного объекта типа Byte
. Итого 40 байт
.Для
64-битной JVM
каждая ссылка занимает 64 бита
(8 байт
), размер заголовка каждого объекта составляет 16 байт
(два машинных слова). Вычисления аналогичны: 8 + 8 + 8 + 16 = 40байт
и 24 байта
. Итого 64 байта
.👍29🔥6❤3
Микросервисы Spring в действии (2022) True PDF
Spring существенно упрощает создание и развертывание микросервисов! Такие библиотеки, как Spring Boot, Spring Cloud и Spring Cloud Gateway, помогают уменьшить объем типового кода в службах REST. Они предоставляют эффективный набор инструментов для запуска микросервисов как в общедоступных, так и в частных облаках.
Книга учит создавать приложения на основе микросервисов с использованием Java и Spring. Начав с создания простых служб, вы постепенно перейдете к знакомству с приемами эффективного журналирования и мониторинга. Научитесь реструктурировать приложения на Java с помощью интуитивно понятных инструментов Spring и освоите управление API с помощью Spring Cloud Gateway. Также вы будете учиться развертывать приложения Spring Cloud в AWS и Kubernetes.
Издание предназначено для опытных разработчиков на Java и Spring.
Spring существенно упрощает создание и развертывание микросервисов! Такие библиотеки, как Spring Boot, Spring Cloud и Spring Cloud Gateway, помогают уменьшить объем типового кода в службах REST. Они предоставляют эффективный набор инструментов для запуска микросервисов как в общедоступных, так и в частных облаках.
Книга учит создавать приложения на основе микросервисов с использованием Java и Spring. Начав с создания простых служб, вы постепенно перейдете к знакомству с приемами эффективного журналирования и мониторинга. Научитесь реструктурировать приложения на Java с помощью интуитивно понятных инструментов Spring и освоите управление API с помощью Spring Cloud Gateway. Также вы будете учиться развертывать приложения Spring Cloud в AWS и Kubernetes.
Издание предназначено для опытных разработчиков на Java и Spring.
👍16❤10🔥5☃1
Оцените количество памяти на хранение одного примитива типа byte в ArrayList?
ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому
ArrayList основан на массиве, для примитивных типов данных осуществляется автоматическая упаковка значения, поэтому
16 байт
тратится на хранение упакованного объекта и 4 байта
(8 для x64
) - на хранение ссылки на этот объект в самой структуре данных. Таким образом, в x32 JVM 4 байта
используются на хранение одного элемента и 16 байт
- на хранение упакованного объекта типа Byte
. Для x64
- 8 байт
и 24 байта
соответственно.👍20❤7🔥5☃2
☕️ Освойте Java с нуля на курсе «Профессия Java-разработчик» Станьте IT-специалистом, которому уже в начале карьеры готовы платить до 100 000 рублей в месяц.
Что вам даст этот курс?
✅ Изучите синтаксис Java и пройдёте основы объектно-ориентированного программирования.
✅ Узнаете, как работать с файловой системой, сетью и базами данных — познакомитесь с SQL.
✅ Научитесь вести контроль версий в Git.
✅ Создадите 2 мощных приложения для портфолио: разработаете поисковый движок и книжный интернет-магазин — аналог ЛитРес.
✅ Сможете начать работать уже через 4 месяца.
Узнать подробнее о курсе и получить специальную скидку можно здесь: https://epic.st/PE_s7H Оставьте заявку на курс сейчас и получите 3 месяца бесплатного обучения и год английского в подарок!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
Что вам даст этот курс?
✅ Изучите синтаксис Java и пройдёте основы объектно-ориентированного программирования.
✅ Узнаете, как работать с файловой системой, сетью и базами данных — познакомитесь с SQL.
✅ Научитесь вести контроль версий в Git.
✅ Создадите 2 мощных приложения для портфолио: разработаете поисковый движок и книжный интернет-магазин — аналог ЛитРес.
✅ Сможете начать работать уже через 4 месяца.
Узнать подробнее о курсе и получить специальную скидку можно здесь: https://epic.st/PE_s7H Оставьте заявку на курс сейчас и получите 3 месяца бесплатного обучения и год английского в подарок!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
👍11❤6☃2
Что выведет эта программа?
Ответ:
Программа напечатает “num1 == num2”. Если мы сравниваем две ссылки на объекты с помощью ==, значение всегда будет «false». Но в этом примере переменные num1 и num2 автоупаковываются (autoboxing) из-за Integer-кэширования. Вот почему num1 == num2 возвращает значение «true». Не забудьте, что Integer-кэширование актуально только для значений от -128 до 127.
Ответ:
👍65❤14🔥12
Для ArrayList или для LinkedList операция добавления элемента в середину (list.add(list.size()/2, newElement)) медленнее?
Для ArrayList:
• проверка массива на вместимость. Если вместимости недостаточно, то увеличение размера массива и копирование всех элементов в новый массив
• копирование всех элементов, расположенных правее от позиции вставки, на одну позицию вправо
• вставка элемента
Для LinkedList:
• поиск позиции вставки
• вставка элемента
В худшем случае вставка в середину списка эффективнее для
Для ArrayList:
• проверка массива на вместимость. Если вместимости недостаточно, то увеличение размера массива и копирование всех элементов в новый массив
(O(N))
;• копирование всех элементов, расположенных правее от позиции вставки, на одну позицию вправо
(O(N))
;• вставка элемента
(O(1))
.Для LinkedList:
• поиск позиции вставки
(O(N))
;• вставка элемента
(O(1))
.В худшем случае вставка в середину списка эффективнее для
LinkedList
. В остальных - скорее всего, для ArrayList
, поскольку копирование элементов осуществляется за счет вызова быстрого системного метода System.arraycopy()
.👍23❤9
Kotlin заходит в Telegram!
Рассказываем про Kotlin — молодой язык родом из Питера, который вовсю теснит Java в мобильной и бэкенд-разработке.
Его официально поддерживает Google, используют Jira и Adobe, а разработчики топовых приложений для Android переписывают на Kotlin свои продукты. Советуем подписаться, чтобы узнавать больше!
Рассказываем про Kotlin — молодой язык родом из Питера, который вовсю теснит Java в мобильной и бэкенд-разработке.
Его официально поддерживает Google, используют Jira и Adobe, а разработчики топовых приложений для Android переписывают на Kotlin свои продукты. Советуем подписаться, чтобы узнавать больше!
👍6😁4❤2🔥2
Объекты. Стильное ООП (2023) PDF
Хороший объектно-ориентированный код удобно читать, изменять и исправлять. Универсальные практики проектирования объектов, собранные в этой книге, позволят улучшить ваш стиль кодирования. Эти правила подойдут к любому объектно-ориентированному языку, они делают код максимально понятным и надежным, а также повышают производительность как индивидуальных разработчиков, так и команд. Книга «Объекты. Стильное ООП» познакомит вас с профессиональными техниками написания ОО-кода. Маттиас Нобак раскрывает правила создания объектов, определения методов, изменения и извлечения состояний и многое другое. Все примеры написаны на простом псевдокоде, который легко перевести в любой язык программирования. Кейс за кейсом вы изучите ключевые сценарии и задачи проектирования объектов, а затем шаг за шагом создадите простое веб-приложение, которое покажет, как должны взаимодействовать объекты разных типов.
Хороший объектно-ориентированный код удобно читать, изменять и исправлять. Универсальные практики проектирования объектов, собранные в этой книге, позволят улучшить ваш стиль кодирования. Эти правила подойдут к любому объектно-ориентированному языку, они делают код максимально понятным и надежным, а также повышают производительность как индивидуальных разработчиков, так и команд. Книга «Объекты. Стильное ООП» познакомит вас с профессиональными техниками написания ОО-кода. Маттиас Нобак раскрывает правила создания объектов, определения методов, изменения и извлечения состояний и многое другое. Все примеры написаны на простом псевдокоде, который легко перевести в любой язык программирования. Кейс за кейсом вы изучите ключевые сценарии и задачи проектирования объектов, а затем шаг за шагом создадите простое веб-приложение, которое покажет, как должны взаимодействовать объекты разных типов.
👍13❤5🔥1
В реализации класса ArrayList есть следующие поля: Object[] elementData, int size. Объясните, зачем хранить отдельно size, если всегда можно взять elementData.length?
Размер массива
Размер массива
elementData
представляет собой вместимость (capacity
) ArrayList
, которая всегда больше переменной size - реального количества хранимых элементов. При необходимости вместимость автоматически возрастает.👍20🔥6
Напишите однопоточную программу, которая заставляет коллекцию выбросить ConcurrentModificationException.
Вопрос с подвохом: ConcurrentModificationException к многопоточности никакого отношения не имеет. Возникает эта штука тогда, когда мы пытаемся модифицировать коллекцию во время итерирования по ней.
Вопрос с подвохом: ConcurrentModificationException к многопоточности никакого отношения не имеет. Возникает эта штука тогда, когда мы пытаемся модифицировать коллекцию во время итерирования по ней.
👍28🔥4❤1
Introduction to Java Through Game Development: Learn Java Programming Skills by Working with Video Games (2023) PDF, ePUB
Interested in learning how to program with Java? Let’s face it, the best way to learn to program is by writing programs. This can be a daunting proposition with the specter of hours of simple command line example programs hanging over your head. Fear not! Now you can learn to program in Java in a fun way by working on video games.
With this book, you’ll get to work with three Java game projects and have access to the complete game code for each project, including a full Java game engine. After completing Introduction to Java through Game Development, you’ll be proficient in Java programming, having worked with the language’s fundamental aspects throughout the text, and will be ready to further your Java and game programming expertise with confidence.
Interested in learning how to program with Java? Let’s face it, the best way to learn to program is by writing programs. This can be a daunting proposition with the specter of hours of simple command line example programs hanging over your head. Fear not! Now you can learn to program in Java in a fun way by working on video games.
With this book, you’ll get to work with three Java game projects and have access to the complete game code for each project, including a full Java game engine. After completing Introduction to Java through Game Development, you’ll be proficient in Java programming, having worked with the language’s fundamental aspects throughout the text, and will be ready to further your Java and game programming expertise with confidence.
👍11❤1🔥1
LinkedList — это односвязный, двусвязный или четырехсвязный список?
Двусвязный: каждый элемент
Двусвязный: каждый элемент
LinkedList
хранит ссылку на предыдущий и следующий элементы.👍30😁5🔥1
Курс «Английский для разработчиков» Яндекс Практикума
Для тех, кто хочет изменить свою профессиональную жизнь и работать в международной команде.
Обучение построено не вокруг абстрактной теории, а вокруг рабочих ситуаций и полезных для карьеры навыков:
✋Стендапы. Подготовитесь обсуждать задачи, задавать вопросы и просить о помощи.
👨💻 Работа с заказчиками. Научитесь презентовать решения, говорить про баги и фичи.
📣 Митапы. Сможете понимать на слух доклады и выступать сами.
😎 Собеседования. Научитесь рассказывать про свой опыт, понимать вопросы и тактично переспрашивать.
👯 Неформальное общение с коллегами. Сможете рассказать о своих интересах, опыте, планах на будущее.
💻 Код-ревью. Сможете описать сделанное, дать обратную связь, тактично отстоять своё мнение.
Запишитесь на бесплатную консультацию. Кураторы определят ваш уровень языка и расскажут подробнее про обучение.
Для тех, кто хочет изменить свою профессиональную жизнь и работать в международной команде.
Обучение построено не вокруг абстрактной теории, а вокруг рабочих ситуаций и полезных для карьеры навыков:
✋Стендапы. Подготовитесь обсуждать задачи, задавать вопросы и просить о помощи.
👨💻 Работа с заказчиками. Научитесь презентовать решения, говорить про баги и фичи.
📣 Митапы. Сможете понимать на слух доклады и выступать сами.
😎 Собеседования. Научитесь рассказывать про свой опыт, понимать вопросы и тактично переспрашивать.
👯 Неформальное общение с коллегами. Сможете рассказать о своих интересах, опыте, планах на будущее.
💻 Код-ревью. Сможете описать сделанное, дать обратную связь, тактично отстоять своё мнение.
Запишитесь на бесплатную консультацию. Кураторы определят ваш уровень языка и расскажут подробнее про обучение.
👍7🔥2☃1
Apache Kafka. Потоковая обработка и анализ данных, 2-е издание (2023) PDF
При работе любого корпоративного приложения образуются данные: файлы журналов, показатели, информация об активности пользователей, исходящие сообщения и другие. Правильное управление этими данными не менее важно, чем сами данные. Если вы архитектор, разработчик или инженер-технолог, но вы пока не знакомы с Apache Kafka, то из этой обновленной книги вы узнаете, как работать с потоковой платформой Kafka, позволяющей обрабатывать потоки данных в реальном времени. Дополнительные главы посвящены API AdminClient от Kafka, транзакциям, новым функциям безопасности и изменениям в инструментарии. Инженеры из Confluent и LinkedIn, ответственные за разработку Kafka, объясняют, как с помощью этой платформы развертывать производственные кластеры Kafka, писать надежные управляемые событиями микросервисы и создавать масштабируемые приложения для потоковой обработки данных.
При работе любого корпоративного приложения образуются данные: файлы журналов, показатели, информация об активности пользователей, исходящие сообщения и другие. Правильное управление этими данными не менее важно, чем сами данные. Если вы архитектор, разработчик или инженер-технолог, но вы пока не знакомы с Apache Kafka, то из этой обновленной книги вы узнаете, как работать с потоковой платформой Kafka, позволяющей обрабатывать потоки данных в реальном времени. Дополнительные главы посвящены API AdminClient от Kafka, транзакциям, новым функциям безопасности и изменениям в инструментарии. Инженеры из Confluent и LinkedIn, ответственные за разработку Kafka, объясняют, как с помощью этой платформы развертывать производственные кластеры Kafka, писать надежные управляемые событиями микросервисы и создавать масштабируемые приложения для потоковой обработки данных.
👍16❤4🔥2
Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)?
Для этого в
Для этого в
LinkedList
есть обратный итератор, который можно получить вызва метод descendingIterator()
.👍26🔥5
Инкапсуляция
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
Инкапсуляция в Java является механизмом обёртывания данных (переменных) и кода, работающего с данными (методами), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступ к ним может быть получен только с помощью метода их текущего класса. По-другому это называется скрытием данных.
Для достижения инкапсуляции в Java:
☕️ Объявите переменные класса как private.
☕️ Предоставьте public к методам установки и получения (сеттеру и геттеру) для изменения и просмотра значений переменных.
Преимущества инкапсуляции:
☕️ Поля класса можно сделать только для чтения или только для записи.
☕️ Класс может иметь полный контроль над тем, что хранится в его полях.
👍27❤9