#вопросы_с_собеседований
В чем заключается особенность работы метода clone () с полями объекта типа ссылки?
При клонировании объектов копируются только примитивные значения и значение ссылок на объекты. Это значит, что если объект имеет во внутреннем поле ссылку на другой объект, то будет клонирована только эта ссылка, сам же этот другой объект клонирован не будет. Собственно, это и называют — поверхностным клонированием.
Ну а что, если вам нужно полноценное клонирование с клонированием всех вложенных объектов? Как сделать, чтобы это были не копии ссылок, а полноценные клоны объекты с другими занимаемыми ячейками памяти в куче?
На самом деле все довольно просто — для этого вам нужно в каждом классе этих внутренних объектов также переопределить метод clone() и добавить интерфейс маркер — Cloneable. Тогда будут скопированные не ссылки на объекты, а сами объекты, ведь теперь они тоже имеют возможность копировать себя.
В чем заключается особенность работы метода clone () с полями объекта типа ссылки?
При клонировании объектов копируются только примитивные значения и значение ссылок на объекты. Это значит, что если объект имеет во внутреннем поле ссылку на другой объект, то будет клонирована только эта ссылка, сам же этот другой объект клонирован не будет. Собственно, это и называют — поверхностным клонированием.
Ну а что, если вам нужно полноценное клонирование с клонированием всех вложенных объектов? Как сделать, чтобы это были не копии ссылок, а полноценные клоны объекты с другими занимаемыми ячейками памяти в куче?
На самом деле все довольно просто — для этого вам нужно в каждом классе этих внутренних объектов также переопределить метод clone() и добавить интерфейс маркер — Cloneable. Тогда будут скопированные не ссылки на объекты, а сами объекты, ведь теперь они тоже имеют возможность копировать себя.
#вопросы_с_собеседований
Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()?
При следующем вызове методов итератора будет выброшено
Как поведёт себя уже инстанциированный итератор для collection, если вызвать collection.remove()?
При следующем вызове методов итератора будет выброшено
ConcurrentModificationException
.Пишем телеграм бота, реализующего простую игру в стиле "камень-ножницы-бумага" на чистой джава + библиотека telegram api. Для пущей сложности я делаю это без БД и при этом пытаюсь выдернуть информацию о том, в каком чате происходит дело (может пригодиться для хранения какой-либо статистики)
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Телеграм бот-игра на JAVA в 100 строк
Пишем телеграм бота, реализующего простую игру в стиле "камень-ножницы-бумага" на чистой джава + библиотека telegram api. Для пущей сложности я делаю это без БД и при этом пытаюсь выдернуть информацию о том, в каком чате происходит дело (может пригодиться…
⚖️ Работа или жизнь: принципы Work-life balance
Если ты работаешь 25/8, а переработка для тебя стала обыденностью – эта статья для тебя. Рассказываем об угрозах трудоголизма и как найти тот самый баланс.
🔗 Основной сайт
🔗 Зеркало
Если ты работаешь 25/8, а переработка для тебя стала обыденностью – эта статья для тебя. Рассказываем об угрозах трудоголизма и как найти тот самый баланс.
🔗 Основной сайт
🔗 Зеркало
🔎 10 причин, почему тебя не берут на работу в ИT
«Библиотека программиста» выделила 10 наиболее распространенных ошибок начинающих специалистов при попытке устроится на работу.
🔗 Основной сайт
🔗 Зеркало
«Библиотека программиста» выделила 10 наиболее распространенных ошибок начинающих специалистов при попытке устроится на работу.
🔗 Основной сайт
🔗 Зеркало
Использование паттернов Event Sourcing и CQRS для разработки приложения на Spring Boot и Axon Framework
Axon — это один из немногих фреймворков, который позволяет создавать гибкие микросервисные решения, используя архитектурные паттерны Event Sourcing и CQRS.
Подход Event Sourcing сильно отличается от обычного метода создания приложений, когда для сохранения, изменения и выборки состояния объектов используется одно и тоже хранилище в базе данных.
В этой статье мы создадим простое приложение на примере библиотеки книг с использованием Spring Boot и Axon Framework.
https://telegra.ph/Ispolzovanie-patternov-Event-Sourcing-i-CQRS-dlya-razrabotki-prilozheniya-na-Spring-Boot-i-Axon-Framework-05-10
Axon — это один из немногих фреймворков, который позволяет создавать гибкие микросервисные решения, используя архитектурные паттерны Event Sourcing и CQRS.
Подход Event Sourcing сильно отличается от обычного метода создания приложений, когда для сохранения, изменения и выборки состояния объектов используется одно и тоже хранилище в базе данных.
В этой статье мы создадим простое приложение на примере библиотеки книг с использованием Spring Boot и Axon Framework.
https://telegra.ph/Ispolzovanie-patternov-Event-Sourcing-i-CQRS-dlya-razrabotki-prilozheniya-na-Spring-Boot-i-Axon-Framework-05-10
Telegraph
Использование паттернов Event Sourcing и CQRS для разработки приложения на Spring Boot и Axon Framework
Axon — это один из немногих фреймворков, который позволяет создавать гибкие микросервисные решения, используя архитектурные паттерны Event Sourcing и CQRS. Подход Event Sourcing сильно отличается от обычного метода создания приложений, когда для сохранения…
В этом видео автор рассказывает о том, что такое лямбда-выражения в языке программирования Java. На примерах показывает, для чего нужны лямбды, и какую роль они играют при написании кода в функциональном стиле.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java. Лямбда-выражения.
В этом видео я рассказываю о том, что такое лямбда-выражения в языке программирования Java. На примерах показываю, для чего нужны лябды, и какую роль они играют при написании кода в функциональном стиле.
Стать спонсором канала:
https://www.youtube.com/c…
Стать спонсором канала:
https://www.youtube.com/c…
☕ Пишем свой первый сервер на Java и Spring Boot
В этой статье мы поговорим о разработке и архитектуре современных web-приложений и разработаем серверную часть простого приложения, добавляющего пользователей и их посты. Приложение напишем на самом распространённом и востребованном Java-фреймворке – Spring Boot.
🔗 Основной сайт
🔗 Зеркало
В этой статье мы поговорим о разработке и архитектуре современных web-приложений и разработаем серверную часть простого приложения, добавляющего пользователей и их посты. Приложение напишем на самом распространённом и востребованном Java-фреймворке – Spring Boot.
🔗 Основной сайт
🔗 Зеркало
Telegram-бот счётчик сообщений на Java и Spring Boot
В этой статье я покажу, как написать Telegram-бот на Java с использованием Spring Boot, PostgreSQL и JPA. Также создадим исполняемый jar-файл. Сам же бот будет подсчитывать сообщения от пользователей и записывать эти данные в БД.
Читать статью
В этой статье я покажу, как написать Telegram-бот на Java с использованием Spring Boot, PostgreSQL и JPA. Также создадим исполняемый jar-файл. Сам же бот будет подсчитывать сообщения от пользователей и записывать эти данные в БД.
Читать статью
Telegraph
Telegram-бот счётчик сообщений на Java и Spring Boot
В этой статье я покажу, как написать Telegram-бот на Java с использованием Spring Boot, PostgreSQL и JPA. Также создадим исполняемый jar-файл. Сам же бот будет подсчитывать сообщения от пользователей и записывать эти данные в БД. Создаём Spring проект на…
Какое худшее время работы метода contains() для элемента, который есть в LinkedList?
O(N)
. Время поиска элемента линейно пропорционально количеству элементов в списке.Новая подборка Java-новостей от InfoQ:
✔️ Стал доступен билд № 31 для JDK 20 (ранний доступ)
✔️ Стал доступен билд № 5 для JDK 21 (ранний доступ)
✔️ Выпущен новый релиз Spring Framework, версии 6.0.4
и д.р.
Приятного чтения!
Читать статью
✔️ Стал доступен билд № 31 для JDK 20 (ранний доступ)
✔️ Стал доступен билд № 5 для JDK 21 (ранний доступ)
✔️ Выпущен новый релиз Spring Framework, версии 6.0.4
и д.р.
Приятного чтения!
Читать статью
InfoQ
Java News Roundup: MicroProfile 6.0, Kotlin 1.8, Spring Framework Updates
This week's Java roundup for January 9th, 2023, features news from JDK 20, JDK 21, Spring Framework 6.0.4 and 5.3.25, Spring Data 2022.0.1 and 2021.2.7, Spring Shell 2.1.5 and 3.0.0-RC1, MicroProfile 6.0, Quarkus 2.15.3, Micronaut 3.8.1, Micrometer Metrics…
#вопросы_с_собеседований
Почему не рекомендуется использовать метод Thread.stop()?
При принудительной остановке (приостановке) потока,
Почему не рекомендуется использовать метод Thread.stop()?
При принудительной остановке (приостановке) потока,
stop()
прерывает поток в недетерменированном месте выполнения, в результате становится совершенно непонятно, что делать с принадлежащими ему ресурсами. Поток может открыть сетевое соединение - что в таком случае делать с данными, которые еще не вычитаны? Где гарантия, что после дальнейшего запуска потока (в случае приостановки) он сможет их дочитать? Если поток блокировал разделяемый ресурс, то как снять эту блокировку и не переведёт ли принудительное снятие к нарушению консистентности системы? То же самое можно расширить и на случай соединения с базой данных: если поток остановят посередине транзакции, то кто ее будет закрывать? Кто и как будет разблокировать ресурсы?Бесплатный курс для всех, кто любит качественные IT-публикации и хочет научиться интересно писать о программировании либо улучшить навыки письма.
Курс состоит из семи модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций. Ограничений на время прохождения заданий нет.
Курс будет интересен авторам, работающим в составе редакции, копирайтерам-одиночкам и просто программистам, которые хотят научиться интересно рассказывать о собственных проектах.
Материалы регулярно дополняются, обновляются и корректируется. Отвечаем на все учебные вопросы в комментариях курса.
Как стать автором «Библиотеки программиста» и получать гонорары за статьи?
➡️ Заполните анкету.
Если все ок, мы свяжемся с вами и обсудим дальнейшие шаги.
Please open Telegram to view this post
VIEW IN TELEGRAM
#вопросы_с_собеседований
Почему нельзя использовать byte[] в качестве ключа в HashMap?
Хэш-код массива не зависит от хранимых в нем элементов, а присваивается при создании массива (метод вычисления хэш-кода массива не переопределен и вычисляется по стандартному
Почему нельзя использовать byte[] в качестве ключа в HashMap?
Хэш-код массива не зависит от хранимых в нем элементов, а присваивается при создании массива (метод вычисления хэш-кода массива не переопределен и вычисляется по стандартному
Object.hashCode()
на основании адреса массива). Так же у массивов не переопределен equals
и выполняется сравнение указателей. Это приводит к тому, что обратиться к сохраненному с ключом-массивом элементу не получится при использовании другого массива такого же размера и с такими же элементами, доступ можно осуществить лишь в одном случае — при использовании той же самой ссылки на массив, что использовалась для сохранения элемента.Сегодня java, guice и другие - помогут нам записать звук в представление чуть более непонятное чем эквалайзер (по крайней мере для меня). Вы при желании можете записать что-то другое.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Рисуем звук. Почувствуй себя нейросетью. Java, Guice
#Java #Guice
Сегодня java, guice и другие - помогут нам записать звук в представление чуть более непонятное чем эквалайзер (по крайней мере для меня). Вы при желании можете записать что-то другое.
Опросник по аннотациям Spring JPA: https://proftrud.ru/shop/21…
Сегодня java, guice и другие - помогут нам записать звук в представление чуть более непонятное чем эквалайзер (по крайней мере для меня). Вы при желании можете записать что-то другое.
Опросник по аннотациям Spring JPA: https://proftrud.ru/shop/21…
#вопросы_с_собеседований
Как написать собственное («пользовательское») исключение?
Необходимо унаследоваться от базового класса требуемого типа исключений (например, от Exception или RuntimeException).
Как написать собственное («пользовательское») исключение?
Необходимо унаследоваться от базового класса требуемого типа исключений (например, от Exception или RuntimeException).
В данном видео рассказывается о том, что такое Deadlock, и как намеренно создать взаимную блокировку потоков на языке программирования Java.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java. Многопоточность. Как устроить Deadlock.
В данном видео рассказывается о том, что такое Deadlock, и как намеренно создать взаимную блокировку потоков на языке программирования Java.
Исходники:
https://github.com/Arhiser/java_tutorials/tree/master/src/ru/arhiser/multithreading/deadlock
Предыдущее…
Исходники:
https://github.com/Arhiser/java_tutorials/tree/master/src/ru/arhiser/multithreading/deadlock
Предыдущее…
Для 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()
.