Forwarded from Библиотека задач по Java | тесты, код, задания
В чем заключается особенность работы метода clone() с полями объекта типа ссылки?
При клонировании объектов копируются только примитивные значения и значение ссылок на объекты. Это значит, что если объект имеет во внутреннем поле ссылку на другой объект, то будет клонирована только эта ссылка, сам же этот другой объект клонирован не будет. Собственно, это и называют — поверхностным клонированием.
Ну а что, если вам нужно полноценное клонирование с клонированием всех вложенных объектов? Как сделать, чтобы это были не копии ссылок, а полноценные клоны объекты с другими занимаемыми ячейками памяти в куче?
На самом деле все довольно просто — для этого вам нужно в каждом классе этих внутренних объектов также переопределить метод clone() и добавить интерфейс маркер — Cloneable. Тогда будут скопированные не ссылки на объекты, а сами объекты, ведь теперь они тоже имеют возможность копировать себя.
При клонировании объектов копируются только примитивные значения и значение ссылок на объекты. Это значит, что если объект имеет во внутреннем поле ссылку на другой объект, то будет клонирована только эта ссылка, сам же этот другой объект клонирован не будет. Собственно, это и называют — поверхностным клонированием.
Ну а что, если вам нужно полноценное клонирование с клонированием всех вложенных объектов? Как сделать, чтобы это были не копии ссылок, а полноценные клоны объекты с другими занимаемыми ячейками памяти в куче?
На самом деле все довольно просто — для этого вам нужно в каждом классе этих внутренних объектов также переопределить метод clone() и добавить интерфейс маркер — Cloneable. Тогда будут скопированные не ссылки на объекты, а сами объекты, ведь теперь они тоже имеют возможность копировать себя.
⚡️Свершилось: канал с книгами только по Java
Мы создали для вас канал с самыми полезными книгами по Java — подписывайтесь!
👉 Книги для джавистов | Java
Мы создали для вас канал с самыми полезными книгами по Java — подписывайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Алгоритм Кнута — Морриса — Пратта
Алгоритм КМП осуществляет поиск текста по заданному шаблону. В этом поиске сначала компилируется заданный шаблон. Компилируя шаблон, мы пытаемся найти префикс и суффикс строки шаблона. Это поможет в случае несоответствия — не придётся искать следующее совпадение с начального индекса.
Вместо этого мы пропускаем часть текстовой строки, которую уже сравнили, и начинаем сравнивать следующую. Необходимая часть определяется по префиксу и суффиксу, поэтому известно, какая часть уже прошла проверку и может быть безопасно пропущена.
Алгоритм КМП осуществляет поиск текста по заданному шаблону. В этом поиске сначала компилируется заданный шаблон. Компилируя шаблон, мы пытаемся найти префикс и суффикс строки шаблона. Это поможет в случае несоответствия — не придётся искать следующее совпадение с начального индекса.
Вместо этого мы пропускаем часть текстовой строки, которую уже сравнили, и начинаем сравнивать следующую. Необходимая часть определяется по префиксу и суффиксу, поэтому известно, какая часть уже прошла проверку и может быть безопасно пропущена.
Forwarded from Библиотека задач по Java | тесты, код, задания
Какой из этих методов возвращает описание исключения?
Anonymous Quiz
61%
getMessage()
27%
getException()
5%
obtainDescription()
7%
obtainException()
Очередной #дайджест для джавистов
👉 Foreign Function и Memory API — краткий обзор подкапотного пространства
👉 Мифы и реалии «Мультимастера» в архитектуре СУБД PostgreSQL — цикл статей, в которых академически описана проблематика и решаемая задача
👉 Intellij IDEA 2023.3.6 и 2024.1-beta — выкатили обновления популярных и полезных библиотек
👉 Crossing those hills — продолжение приключений о поиске красивого выражения платформозависимых типов на Scala 3
👉 Benchmarking Tapir: Part 2 — продолжение исследования оверхеда, который приносит tapir для различных серверных бэкендов
👉 Foreign Function и Memory API — краткий обзор подкапотного пространства
👉 Мифы и реалии «Мультимастера» в архитектуре СУБД PostgreSQL — цикл статей, в которых академически описана проблематика и решаемая задача
👉 Intellij IDEA 2023.3.6 и 2024.1-beta — выкатили обновления популярных и полезных библиотек
👉 Crossing those hills — продолжение приключений о поиске красивого выражения платформозависимых типов на Scala 3
👉 Benchmarking Tapir: Part 2 — продолжение исследования оверхеда, который приносит tapir для различных серверных бэкендов
💬 У нас есть вопрос
Расскажите, пожалуйста, на какие статьи вы переходили или какие последние ссылки открывали из Telegram? Речь идёт не только о наших статьях и ссылках, а о любых.
👇 Пишите ответы в комментариях в стиле «был пост со статьёй такой-то, я её открыл и почитал». Будем благодарны обратной связи!
Расскажите, пожалуйста, на какие статьи вы переходили или какие последние ссылки открывали из Telegram? Речь идёт не только о наших статьях и ссылках, а о любых.
👇 Пишите ответы в комментариях в стиле «был пост со статьёй такой-то, я её открыл и почитал». Будем благодарны обратной связи!
🚶🚶🚶 Backend-разработчик: из стажера в джуны
В этой статье автор расскажет про его путь становления от «зеленого» стажера до боевой единицы в команде: через что ему пришлось пройти, с какими трудностями столкнулся и как прокачал свои скиллы.
Читать статью
#почитать
В этой статье автор расскажет про его путь становления от «зеленого» стажера до боевой единицы в команде: через что ему пришлось пройти, с какими трудностями столкнулся и как прокачал свои скиллы.
Читать статью
#почитать
Класс LinkedList
Это структура данных в виде связанного списка. C помощью нее можно быстро добавлять элементы, но будет проблематично брать данные по индексу.
У него есть все методы, которые определены в интерфейсах List, Queue, Deque.
Это структура данных в виде связанного списка. C помощью нее можно быстро добавлять элементы, но будет проблематично брать данные по индексу.
У него есть все методы, которые определены в интерфейсах List, Queue, Deque.
addFirst() / offerFirst()
— добавляет элемент в начало списка. addLast() / offerLast()
— в конец.removeFirst() / pollFirst()
— удаляет первый элемент из начала списка. removeLast() / pollLast()
— с конца списка.getFirst() / peekFirst()
; getLast() / peekLast()
— возвращает первый/последний элемент списка.✏️✏️ Prosci на практике — системное управление изменениями
Автор расскажет, из чего состоят изменения, а также про одну методологию работы с ними. Будет кейс, как он применял ее на практике. Будет немного про провалы изменений, про структурный подход и факторы успеха любого изменения.
Читать статью
#почитать
Автор расскажет, из чего состоят изменения, а также про одну методологию работы с ними. Будет кейс, как он применял ее на практике. Будет немного про провалы изменений, про структурный подход и факторы успеха любого изменения.
Читать статью
#почитать
⚙️ Названия веток и комментарии к коммитам в Git: лучшие практики
Git — самая популярная система контроля версий: большинство разработчиков используют ее и для личных, и для командных проектов. При этом многие разработчики, особенно начинающие, небрежно подходят к выбору названий веток и оформлению коммитов.
Это оставляет не лучшее впечатление об их профессионализме, но что еще хуже — затрудняет командную работу и усложняет поддержание кодовой базы. В этой статье мы разберем лучшие практики для работы с ветками и коммитами.
👉 Читать статью
👉 Зеркало
Git — самая популярная система контроля версий: большинство разработчиков используют ее и для личных, и для командных проектов. При этом многие разработчики, особенно начинающие, небрежно подходят к выбору названий веток и оформлению коммитов.
Это оставляет не лучшее впечатление об их профессионализме, но что еще хуже — затрудняет командную работу и усложняет поддержание кодовой базы. В этой статье мы разберем лучшие практики для работы с ветками и коммитами.
👉 Читать статью
👉 Зеркало
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
⚡️Свершилось: канал с книгами только по Java
Мы создали для вас канал с самыми полезными книгами по Java — подписывайтесь!
👉 Книги для джавистов | Java
Мы создали для вас канал с самыми полезными книгами по Java — подписывайтесь!
Please open Telegram to view this post
VIEW IN TELEGRAM
Какими площадками/соцсетями вы активно пользуетесь кроме Telegram?
Anonymous Poll
29%
Instagram*
4%
Facebook*
34%
VK
15%
LinkedIn
6%
X (Twitter)
4%
VC.ru
35%
Хабр
9%
Reddit
80%
YouTube
9%
TikTok
Свежий #дайджест для джавистов
☘️ Книга «Java 8 to 21: Explore and work with the cutting-edge features of Java 21» — Всеобъемлющее руководство, знакомящее разработчиков с расширенными возможностями Java
☘️ SSE и WebSockets — сравнение протоколов связи в реальном времени
☘️ Зачем в Scala трамплины и как их использовать — автор рассказывает о специфической технике функционального программирования, которая называется «трамплин» (trampoline)
☘️ Scala 3.3.2 post-mortem анализ — разбор postmortem из компилятора Dotty с нарушением обратной совместимости, которое произошло из-за отсутствия тестов
☘️ JEP 423: Region Pinning for G1 — добавляет закрепление региона памяти для G1, позволяя совершать сборку мусора в регионах с объектами, используемыми JNI
☘️ Книга «Java 8 to 21: Explore and work with the cutting-edge features of Java 21» — Всеобъемлющее руководство, знакомящее разработчиков с расширенными возможностями Java
☘️ SSE и WebSockets — сравнение протоколов связи в реальном времени
☘️ Зачем в Scala трамплины и как их использовать — автор рассказывает о специфической технике функционального программирования, которая называется «трамплин» (trampoline)
☘️ Scala 3.3.2 post-mortem анализ — разбор postmortem из компилятора Dotty с нарушением обратной совместимости, которое произошло из-за отсутствия тестов
☘️ JEP 423: Region Pinning for G1 — добавляет закрепление региона памяти для G1, позволяя совершать сборку мусора в регионах с объектами, используемыми JNI
#вопросы_с_собеседования
Чем отличаются методы POST, PUT и PATCH?
Эти методы использует тело HTTP запроса для передачи данных.
POST — используется для создания ресурса
PUT — используется для замены ресурса целиком
PATCH — используется для редактирования ресурса
Чем отличаются методы POST, PUT и PATCH?
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.