Что такое ООП?
• объектно-ориентированное программирование использует в качестве основных логических конструктивных элементов объекты, а не алгоритмы;
• каждый объект является экземпляром определенного класса
• классы образуют иерархии.
Программа считается объектно-ориентированной, только если выполнены все три указанных требования. В частности, программирование, не использующее наследование, называется не объектно-ориентированным, а программированием с помощью абстрактных типов данных.
Согласно парадигме
Объектно-ориентированное программирование
(ООП
) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.• объектно-ориентированное программирование использует в качестве основных логических конструктивных элементов объекты, а не алгоритмы;
• каждый объект является экземпляром определенного класса
• классы образуют иерархии.
Программа считается объектно-ориентированной, только если выполнены все три указанных требования. В частности, программирование, не использующее наследование, называется не объектно-ориентированным, а программированием с помощью абстрактных типов данных.
Согласно парадигме
ООП
программа состоит из объектов, обменивающихся сообщениями. Объекты могут обладать состоянием, единственный способ изменить состояние объекта - послать ему сообщение, в ответ на которое, объект может изменить собственное состояние.👍25🔥8❤4
Узнайте всего за пару часов на бесплатном открытом уроке от OTUS.
На эфире:
- Выясним, что такое аспекты.
- Разберемся, как работают аспекты в Spring.
- Узнаем, что нужно и что не нужно писать на аспектах.
Это отличная возможность совершенно бесплатно протестировать формат обучения и задать преподавателю любые вопросы в режиме реального времени.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2❤1🎅1
LongAdder
LongAdder — это класс из пакета java.util.concurrent, оптимизированный для высокопроизводительного параллельного суммирования long значений.
LongAdder применяется в многопоточных приложениях, когда нужно эффективно подсчитать сумму или другое агрегатное значение из нескольких потоков.
Преимущества:
— Высокая скорость за счет разделения на сегменты и отсутствия блокировок.
— Минимизация конфликтов между потоками при обновлении.
— Лучше масштабируется на большом кол-ве ядер.
LongAdder — это класс из пакета java.util.concurrent, оптимизированный для высокопроизводительного параллельного суммирования long значений.
LongAdder применяется в многопоточных приложениях, когда нужно эффективно подсчитать сумму или другое агрегатное значение из нескольких потоков.
Преимущества:
— Высокая скорость за счет разделения на сегменты и отсутствия блокировок.
— Минимизация конфликтов между потоками при обновлении.
— Лучше масштабируется на большом кол-ве ядер.
👍11🔥6
Бесплатный практический вебинар — Java: с чего начать карьеру в программировании?
⏰ Когда: 26 октября в 19:00 по мск.
Расскажем за 2 часа, как освоить базовые навыки программирования на Java, найти удаленную работу и расти в профессии.
На практике познакомимся с синтаксисом языка и напишем программу, которую часто дают новичкам на техническом интервью.
🎁 Всем, кто зарегистрировался — Гайд «Как заговорить на сленге IT-специалистов», а каждому участнику — Карта компетенций Java-разработчика.
Погрузитесь в основы Java и задайте вопросы опытному разработчику!
Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid: LjN8KXBB3
⏰ Когда: 26 октября в 19:00 по мск.
Расскажем за 2 часа, как освоить базовые навыки программирования на Java, найти удаленную работу и расти в профессии.
На практике познакомимся с синтаксисом языка и напишем программу, которую часто дают новичкам на техническом интервью.
🎁 Всем, кто зарегистрировался — Гайд «Как заговорить на сленге IT-специалистов», а каждому участнику — Карта компетенций Java-разработчика.
Погрузитесь в основы Java и задайте вопросы опытному разработчику!
Реклама. ООО "ХЕКСЛЕТ РУС". ИНН 7325174845. erid: LjN8KXBB3
👍6❤1
Что представляет собой «обмен сообщениями»?
Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия. В
Пусть требуется создать физическую модель, описывающую сталкивающиеся шары разных размеров. Традиционный подход к решению этой задачи примерно таков: определяется набор данных, описывающих каждый шар (например, его координаты, массу и ускорение); каждому шару присваивается уникальный идентификатор (например, организуется массив, значение индекса которого соответствует номеру шара), который позволит отличать каждый из шаров от всех других. Наконец, пишется подпрограмма с названием, скажем, bounce; эта процедура должна на основе номера шара и его начальных параметров соответствующим образом изменять данные, описывающие шар. В отличие от традиционного подхода объектно-ориентированная версия программы моделирует каждый из шаров посредством объекта. При этом объект, соответствующий конкретному шару, содержит не только его параметры, но и весь код, описывающий поведение шара при различных взаимодействиях. Так, каждый шар будет иметь собственный метод bounce(). Вместо того, чтобы вызывать подпрограмму bounce с аргументом, определяющим, скажем, шар №3, необходимо будет передать объекту «шар №3» сообщение, предписывающее ему выполнить столкновение.
Объекты взаимодействуют, посылая и получая сообщения. Сообщение — это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия. В
ООП
посылка сообщения (вызов метода) — это единственный путь передать управление объекту. Если объект должен «отвечать» на это сообщение, то у него должна иметься соответствующий данному сообщению метод. Так же объекты, используя свои методы, могут и сами посылать сообщения другим объектам. Обмен сообщениями реализуется с помощью динамических вызовов, что приводит к чрезвычайно позднему связыванию (extreme late binding
).Пусть требуется создать физическую модель, описывающую сталкивающиеся шары разных размеров. Традиционный подход к решению этой задачи примерно таков: определяется набор данных, описывающих каждый шар (например, его координаты, массу и ускорение); каждому шару присваивается уникальный идентификатор (например, организуется массив, значение индекса которого соответствует номеру шара), который позволит отличать каждый из шаров от всех других. Наконец, пишется подпрограмма с названием, скажем, bounce; эта процедура должна на основе номера шара и его начальных параметров соответствующим образом изменять данные, описывающие шар. В отличие от традиционного подхода объектно-ориентированная версия программы моделирует каждый из шаров посредством объекта. При этом объект, соответствующий конкретному шару, содержит не только его параметры, но и весь код, описывающий поведение шара при различных взаимодействиях. Так, каждый шар будет иметь собственный метод bounce(). Вместо того, чтобы вызывать подпрограмму bounce с аргументом, определяющим, скажем, шар №3, необходимо будет передать объекту «шар №3» сообщение, предписывающее ему выполнить столкновение.
👍11🔥4
Все мы пишем много кода и слышим много советов о том, как это делать лучше. Но как же это надоело, хочу дать вам советы, как сделать код, который сложно прочитать и, следовательно, сложно сопровождать.
В статье мы научимся:
✔️ как тратить своё время и время коллег впустую;
✔️ стать незаменимым, так как больше в вашем коде никто не разберется;
✔️заслужить всеобщую ненависть.
А если хотите прокачать свои навыки, приходите на наш авторский курс "Java Developer. Professional" и становитесь экспертом в своей области!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
😁9👍6
Не happens-before единым: нестандартные семантики
Несмотря на то, что новые режимы упорядочивания доступов к памяти стали доступны еще с выходом JDK 9, немногие разработчики знакомы с ними. Хотя эти семантики все еще не имеют формального описания в модели памяти Java, они широко используются в популярных многопоточных библиотеках: JCTools, Disruptor, Agrona, Aeron и многих других. Поэтому для изучения исходного кода этих проектов нужно понимать существующие режимы упорядочивания.
Но даже для исключительно прикладных разработчиков-пользователей этих библиотек понимание свойств этих режимов позволяет осознанно подходить к выбору используемой реализации многопоточных структур данных. И все это может увеличить производительность всей системы.
В докладе последовательно рассматриваются все доступные на данный момент режимы: plain, opaque, release-acquire, volatile. Для каждого показаны его высокоуровневые свойства и примеры использования.
Доклад будет интересен всем, кто интересуется многопоточным программированием, моделями памяти и популярными lock-free библиотеками.
Несмотря на то, что новые режимы упорядочивания доступов к памяти стали доступны еще с выходом JDK 9, немногие разработчики знакомы с ними. Хотя эти семантики все еще не имеют формального описания в модели памяти Java, они широко используются в популярных многопоточных библиотеках: JCTools, Disruptor, Agrona, Aeron и многих других. Поэтому для изучения исходного кода этих проектов нужно понимать существующие режимы упорядочивания.
Но даже для исключительно прикладных разработчиков-пользователей этих библиотек понимание свойств этих режимов позволяет осознанно подходить к выбору используемой реализации многопоточных структур данных. И все это может увеличить производительность всей системы.
В докладе последовательно рассматриваются все доступные на данный момент режимы: plain, opaque, release-acquire, volatile. Для каждого показаны его высокоуровневые свойства и примеры использования.
Доклад будет интересен всем, кто интересуется многопоточным программированием, моделями памяти и популярными lock-free библиотеками.
YouTube
Александр Ланцов — Не happens-before единым: нестандартные семантики
Подробнее о Java-конференциях:
— весной — JPoint: https://jrg.su/gTrwHx
— осенью — Joker: https://jrg.su/h7yvG4
— —
Реклама. Публичное акционерное общество «Сбербанк России», 2RanykF1Hix
— —
Несмотря на то, что новые режимы упорядочивания доступов к памяти…
— весной — JPoint: https://jrg.su/gTrwHx
— осенью — Joker: https://jrg.su/h7yvG4
— —
Реклама. Публичное акционерное общество «Сбербанк России», 2RanykF1Hix
— —
Несмотря на то, что новые режимы упорядочивания доступов к памяти…
👍8🔥3
У вас есть готовый ИТ-продукт? Сделайте пилот с ВТБ!
Акселератор ВТБ приглашает технологические стартапы и компании протестировать свои решения на бизнес-процессах и клиентах банка. А в случае успешного пилота – стать поставщиком услуги/лицензии/продукта.
Подайте заявку на сайте, пройдите экспертизу и сделайте быстрый пилот с Акселератором ВТБ.
Преимущества банка:
- коммерческие пилоты
- fast track по запуску пилотов
- экспертиза по развитию вашего продукта
Действуем вместе!
Акселератор ВТБ приглашает технологические стартапы и компании протестировать свои решения на бизнес-процессах и клиентах банка. А в случае успешного пилота – стать поставщиком услуги/лицензии/продукта.
Подайте заявку на сайте, пройдите экспертизу и сделайте быстрый пилот с Акселератором ВТБ.
Преимущества банка:
- коммерческие пилоты
- fast track по запуску пилотов
- экспертиза по развитию вашего продукта
Действуем вместе!
👍6☃2
Интерфейс Iterable
Iterable используется для представления коллекций, которые можно итерировать или пройти в цикле.
Он определяет метод iterator(), который возвращает объект Iterator.
Этот Iterator позволяет поочередно получать элементы коллекций, также его можно использовать в цикле while или for-each для последовательного перебора всех элементов коллекции.
Это позволяет абстрагироваться от конкретного типа коллекции. Мы можем работать с Iterable и Iterator, не завися от того список это, множество или очередь. Такой подход упрощает использование разных коллекций.
Iterable используется для представления коллекций, которые можно итерировать или пройти в цикле.
Он определяет метод iterator(), который возвращает объект Iterator.
Этот Iterator позволяет поочередно получать элементы коллекций, также его можно использовать в цикле while или for-each для последовательного перебора всех элементов коллекции.
Это позволяет абстрагироваться от конкретного типа коллекции. Мы можем работать с Iterable и Iterator, не завися от того список это, множество или очередь. Такой подход упрощает использование разных коллекций.
👍25🔥4❤3
Расскажите про основные понятия ООП: «класс», «объект», «интерфейс».
Класс – это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью (контракт).
С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов).
С точки зрения структуры программы, класс является сложным типом данных.
Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом. Каждый объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе.
Интерфейс – это набор методов класса, доступных для использования. Интерфейсом класса будет являться набор всех его публичных методов в совокупности с набором публичных атрибутов. По сути, интерфейс специфицирует класс, чётко определяя все возможные действия над ним.
Класс – это способ описания сущности, определяющий состояние и поведение, зависящее от этого состояния, а также правила для взаимодействия с данной сущностью (контракт).
С точки зрения программирования класс можно рассматривать как набор данных (полей, атрибутов, членов класса) и функций для работы с ними (методов).
С точки зрения структуры программы, класс является сложным типом данных.
Объект (экземпляр) – это отдельный представитель класса, имеющий конкретное состояние и поведение, полностью определяемое классом. Каждый объект имеет конкретные значения атрибутов и методы, работающие с этими значениями на основе правил, заданных в классе.
Интерфейс – это набор методов класса, доступных для использования. Интерфейсом класса будет являться набор всех его публичных методов в совокупности с набором публичных атрибутов. По сути, интерфейс специфицирует класс, чётко определяя все возможные действия над ним.
👍31❤5🔥3
Метод PutAll()
Метод putAll() используется для копирования всех элементов одной хэш-таблицы или Map в другую. Он принимает в качестве аргумента другую Map или хэш-таблицу, и копирует все её пары ключ-значение в исходную коллекцию.
Метод putAll() не возвращает значения и не бросает исключений.
Этот метод удобен, когда нужно быстро скопировать данные из одной коллекции в другую. Он работает быстрее, чем добавлять элементы в цикле.
Если в конечной коллекции уже есть ключи, которые содержатся в исходной Map, то значения этих ключей будут перезаписаны.
Также с помощью этого метода можно объединять данные из нескольких Map в одну целевую коллекцию.
Метод putAll() используется для копирования всех элементов одной хэш-таблицы или Map в другую. Он принимает в качестве аргумента другую Map или хэш-таблицу, и копирует все её пары ключ-значение в исходную коллекцию.
Метод putAll() не возвращает значения и не бросает исключений.
Этот метод удобен, когда нужно быстро скопировать данные из одной коллекции в другую. Он работает быстрее, чем добавлять элементы в цикле.
Если в конечной коллекции уже есть ключи, которые содержатся в исходной Map, то значения этих ключей будут перезаписаны.
Также с помощью этого метода можно объединять данные из нескольких Map в одну целевую коллекцию.
👍24❤1
Мы устраиваем Yandex Backend Tour по городам России!
Наши разработчики хотят познакомиться со специалистами из разных городов страны. Мы приедем в Москву, Нижний Новгород, Екатеринбург, Новосибирск и Санкт-Петербург. Ребята расскажут, почему они любят свои сервисы, какими технологиями пользуются и что предлагают кандидатам. На встречах будут сотрудники из 14 разных сервисов Яндекса. После мы вместе послушаем стендап Севы Ловкачева, устроим нетворкинг, отдохнём и поболтаем о жизни.
Кроме этого, мы устроим онлайн-трансляцию встречи из Москвы — вы сможете подключиться и пообщаться с нашими разработчиками из любого города России.
Вот расписание встреч:
🔸 13 ноября онлайн-трансляция
🔸 13 ноября офлайн-встреча в Москве
🔸 14 ноября офлайн-встреча в Нижнем Новгороде
🔸 15 ноября офлайн-встреча в Екатеринбурге
🔸 16 ноября офлайн-встреча в Новосибирске
🔸 17 ноября офлайн-встреча в Санкт-Петербурге
А с 20 по 26 ноября мы проведём Week Offer Backend: предложим всего за одну неделю получить офер в одну из 14 участвующих команд. Приглашаем кандидатов с опытом разработки от трёх лет на одном из этих языков программирования: С++, С#, Python, Java, Go и Scala. Принимаем заявки до 19 ноября.
Узнать подробности и зарегистрироваться можно здесь.
Реклама. ООО "Яндекс". erid: 2VtzqvmR6Kp
Наши разработчики хотят познакомиться со специалистами из разных городов страны. Мы приедем в Москву, Нижний Новгород, Екатеринбург, Новосибирск и Санкт-Петербург. Ребята расскажут, почему они любят свои сервисы, какими технологиями пользуются и что предлагают кандидатам. На встречах будут сотрудники из 14 разных сервисов Яндекса. После мы вместе послушаем стендап Севы Ловкачева, устроим нетворкинг, отдохнём и поболтаем о жизни.
Кроме этого, мы устроим онлайн-трансляцию встречи из Москвы — вы сможете подключиться и пообщаться с нашими разработчиками из любого города России.
Вот расписание встреч:
🔸 13 ноября онлайн-трансляция
🔸 13 ноября офлайн-встреча в Москве
🔸 14 ноября офлайн-встреча в Нижнем Новгороде
🔸 15 ноября офлайн-встреча в Екатеринбурге
🔸 16 ноября офлайн-встреча в Новосибирске
🔸 17 ноября офлайн-встреча в Санкт-Петербурге
А с 20 по 26 ноября мы проведём Week Offer Backend: предложим всего за одну неделю получить офер в одну из 14 участвующих команд. Приглашаем кандидатов с опытом разработки от трёх лет на одном из этих языков программирования: С++, С#, Python, Java, Go и Scala. Принимаем заявки до 19 ноября.
Узнать подробности и зарегистрироваться можно здесь.
Реклама. ООО "Яндекс". erid: 2VtzqvmR6Kp
👍5❤4
В чем заключаются преимущества и недостатки объектно-ориентированного подхода в программировании?
Преимущества:
• Объектная модель вполне естественна, поскольку в первую очередь ориентирована на человеческое восприятие мира, а не на компьютерную реализацию.
• Классы позволяют проводить конструирование из полезных компонентов, обладающих простыми инструментами, что позволяет абстрагироваться от деталей реализации.
• Данные и операции над ними образуют определенную сущность, и они не разносятся по всей программе, как нередко бывает в случае процедурного программирования, а описываются вместе. Локализация кода и данных улучшает наглядность и удобство сопровождения программного обеспечения.
• Инкапсуляция позволяет привнести свойство модульности, что облегчает распараллеливание выполнения задачи между несколькими исполнителями и обновление версий отдельных компонентов.
• Возможность создавать расширяемые системы.
• Использование полиморфизма оказывается полезным при:
○ Обработке разнородных структур данных. Программы могут работать, не различая вида объектов, что существенно упрощает код. Новые виды могут быть добавлены в любой момент.
○ Изменении поведения во время исполнения. На этапе исполнения один объект может быть заменен другим, что позволяет легко, без изменения кода, адаптировать алгоритм в зависимости от того, какой используется объект.
○ Реализации работы с наследниками. Алгоритмы можно обобщить настолько, что они уже смогут работать более чем с одним видом объектов.
○ Возможности описать независимые от приложения части предметной области в виде набора универсальных классов, или фреймворка, который в дальнейшем будет расширен за счет добавления частей, специфичных для конкретного приложения.
• Повторное использование кода:
○ Сокращается время на разработку, которое может быть отдано другим задачам.
○ Компоненты многоразового использования обычно содержат гораздо меньше ошибок, чем вновь разработанные, ведь они уже не раз подвергались проверке.
○ Когда некий компонент используется сразу несколькими клиентами, улучшения, вносимые в его код, одновременно оказывают положительное влияние и на множество работающих с ним программ.
○ Если программа опирается на стандартные компоненты, ее структура и пользовательский интерфейс становятся более унифицированными, что облегчает ее понимание и упрощает использование.
Недостатки:
• В сложных иерархиях классов поля и методы обычно наследуются с разных уровней. И не всегда легко определить, какие поля и методы фактически относятся к данному классу.
• Код для обработки сообщения иногда «размазан» по многим методам (иначе говоря, обработка сообщения требует не одного, а многих методов, которые могут быть описаны в разных классах).
• Документирование классов - задача более трудная, чем это было в случае процедур и модулей. Поскольку любой метод может быть переопределен, в документации должно говориться не только о том, что делает данный метод, но и о том, в каком контексте он вызывается.
• Неэффективность и неэкономное распределения памяти на этапе выполнения (по причине издержек на динамическое связывание и проверки типов на этапе выполнения).
• Излишняя универсальность. Часто содержится больше методов, чем это реально необходимо текущей программе. А поскольку лишние методы не могут быть удалены, они становятся мертвым грузом.
Преимущества:
• Объектная модель вполне естественна, поскольку в первую очередь ориентирована на человеческое восприятие мира, а не на компьютерную реализацию.
• Классы позволяют проводить конструирование из полезных компонентов, обладающих простыми инструментами, что позволяет абстрагироваться от деталей реализации.
• Данные и операции над ними образуют определенную сущность, и они не разносятся по всей программе, как нередко бывает в случае процедурного программирования, а описываются вместе. Локализация кода и данных улучшает наглядность и удобство сопровождения программного обеспечения.
• Инкапсуляция позволяет привнести свойство модульности, что облегчает распараллеливание выполнения задачи между несколькими исполнителями и обновление версий отдельных компонентов.
• Возможность создавать расширяемые системы.
• Использование полиморфизма оказывается полезным при:
○ Обработке разнородных структур данных. Программы могут работать, не различая вида объектов, что существенно упрощает код. Новые виды могут быть добавлены в любой момент.
○ Изменении поведения во время исполнения. На этапе исполнения один объект может быть заменен другим, что позволяет легко, без изменения кода, адаптировать алгоритм в зависимости от того, какой используется объект.
○ Реализации работы с наследниками. Алгоритмы можно обобщить настолько, что они уже смогут работать более чем с одним видом объектов.
○ Возможности описать независимые от приложения части предметной области в виде набора универсальных классов, или фреймворка, который в дальнейшем будет расширен за счет добавления частей, специфичных для конкретного приложения.
• Повторное использование кода:
○ Сокращается время на разработку, которое может быть отдано другим задачам.
○ Компоненты многоразового использования обычно содержат гораздо меньше ошибок, чем вновь разработанные, ведь они уже не раз подвергались проверке.
○ Когда некий компонент используется сразу несколькими клиентами, улучшения, вносимые в его код, одновременно оказывают положительное влияние и на множество работающих с ним программ.
○ Если программа опирается на стандартные компоненты, ее структура и пользовательский интерфейс становятся более унифицированными, что облегчает ее понимание и упрощает использование.
Недостатки:
• В сложных иерархиях классов поля и методы обычно наследуются с разных уровней. И не всегда легко определить, какие поля и методы фактически относятся к данному классу.
• Код для обработки сообщения иногда «размазан» по многим методам (иначе говоря, обработка сообщения требует не одного, а многих методов, которые могут быть описаны в разных классах).
• Документирование классов - задача более трудная, чем это было в случае процедур и модулей. Поскольку любой метод может быть переопределен, в документации должно говориться не только о том, что делает данный метод, но и о том, в каком контексте он вызывается.
• Неэффективность и неэкономное распределения памяти на этапе выполнения (по причине издержек на динамическое связывание и проверки типов на этапе выполнения).
• Излишняя универсальность. Часто содержится больше методов, чем это реально необходимо текущей программе. А поскольку лишние методы не могут быть удалены, они становятся мертвым грузом.
👍21🔥4❤2
❓Java Guru - вопросы и задачи с собеседований. Канал с помощью которого ты точно получишь оффер!
👩💻 Android Developer - канал для андроид разработчиков! Статьи, вопросы и задачи с собеседований, лайфхаки.
👩💻 Kotlin Developer - самый топовый канал для котлин разработчика!
📕 Книги для Java программиста - канал с книгами по Java. Постоянно выходят новинки как на русском так и на английском языке!
📰 Java News - канал с последними новостями из мира Java!
📕 Книги для Java программиста - канал с книгами по Java. Постоянно выходят новинки как на русском так и на английском языке!
📰 Java News - канал с последними новостями из мира Java!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2❤1
Часто бывает необходимо, чтобы приложение выполняло какие-то действия регулярно, в определённое время. Например каждое утро выгружать актуальные данные из стороннего сервиса, инвалидировать кэш в конце дня и т.п. Для этих целей в Spring существует встроенный планировщик задач, он же Scheduler. В этом видео автор расскажет о том, как работать с планировщиком задач в приложении на Spring Boot, как его настроить в своём проекте и какие возможности у него есть.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Планировщик задач в Spring или что умеет Spring Scheduler?
Часто бывает необходимо, чтобы приложение выполняло какие-то действия регулярно, в определённое время. Например каждое утро выгружать актуальные данные из стороннего сервиса, инвалидировать кэш в конце дня и т.п. Для этих целей в Spring существует встроенный…
👍18
❗️Внимание! Важное сообщение❗️
👾 На связи YKul
Если ты:
👨🏻💻 Хочешь стать java-разработчиком и зарабатывать в сфере IT
🎓 Окончил курсы java-программиста, но пока не уверен в своих умениях
👨🏻💻 Хорошо знаком с теорией, но боишься практиковать
➡️ Мы приглашаем тебя стать профессионалом вместе с менторами YKul !
😎 Наставники YKul - это опытные разработчики с сотнями успешно реализованных проектов в резюме. Они проведут тебя в мир специалистов IT по кратчайшему пути и обучат важнейшим навыкам в комфортном для тебя режиме.
✅ Мы предоставляем 7 дней бесплатного обучения всем новичкам.
⏱ Не теряй время, попробуй менторинг YKul !
🌐 Узнать подробнее
📲 @ykulmanager1
Реклама: ИП Кулагин Андрей Николаевич, ИНН: 740411652688
👾 На связи YKul
Если ты:
👨🏻💻 Хочешь стать java-разработчиком и зарабатывать в сфере IT
🎓 Окончил курсы java-программиста, но пока не уверен в своих умениях
👨🏻💻 Хорошо знаком с теорией, но боишься практиковать
➡️ Мы приглашаем тебя стать профессионалом вместе с менторами YKul !
😎 Наставники YKul - это опытные разработчики с сотнями успешно реализованных проектов в резюме. Они проведут тебя в мир специалистов IT по кратчайшему пути и обучат важнейшим навыкам в комфортном для тебя режиме.
✅ Мы предоставляем 7 дней бесплатного обучения всем новичкам.
⏱ Не теряй время, попробуй менторинг YKul !
🌐 Узнать подробнее
📲 @ykulmanager1
Реклама: ИП Кулагин Андрей Николаевич, ИНН: 740411652688
👍8☃2😁2🔥1
В чем разница между композицией и агрегацией?
Ассоциация обозначает связь между объектами. Композиция и агрегация — частные случаи ассоциации «часть-целое».
Агрегация предполагает, что объекты связаны взаимоотношением «part-of» (часть). Композиция более строгий вариант агрегации. Дополнительно к требованию «part-of» накладывается условие, что экземпляр «части» может входить только в одно целое (или никуда не входить), в то время как в случае агрегации экземпляр «части» может входить в несколько целых.
Например, книга состоит из страниц, и мы не можем вырвать страницу из книги и вложить в другую книгу. Страницы четко привязаны к конкретной книге, поэтому это композиция. В тоже время мы можем взять и перенести книгу из одной библиотеки в другую - это уже агрегация.
Ассоциация обозначает связь между объектами. Композиция и агрегация — частные случаи ассоциации «часть-целое».
Агрегация предполагает, что объекты связаны взаимоотношением «part-of» (часть). Композиция более строгий вариант агрегации. Дополнительно к требованию «part-of» накладывается условие, что экземпляр «части» может входить только в одно целое (или никуда не входить), в то время как в случае агрегации экземпляр «части» может входить в несколько целых.
Например, книга состоит из страниц, и мы не можем вырвать страницу из книги и вложить в другую книгу. Страницы четко привязаны к конкретной книге, поэтому это композиция. В тоже время мы можем взять и перенести книгу из одной библиотеки в другую - это уже агрегация.
👍21🔥2🎅1
27 и 28 ноября в Москве пройдёт юбилейный, 20-й, HighLoad++. Мы собрали самую масштабную конференцию за последние 15 лет!
✅3000 участников
✅150+ докладов
✅11 залов
✅5 мастер-классов
✅Конференция в конференции — GolangConf 2023
✅Премия HighLoad++ 2023
👉Подробнее: https://clck.ru/36ETv8
Создание, эксплуатация и масштабирование высоконагруженных проектов требует от разработчика одновременно и внимание к деталям и широты кругозора, чтобы увидеть полную картину. Поэтому программа конференции включает не только традиционные доклады, но и несколько спецпроектов.
Вместе с нашими партнёрами из Яндекса мы собрали целый опенсорс-трек, а на конференции проведём опенсорс трибуну, где вы сможете узнать о решениях с открытым кодом, которые создаются прямо сейчас. Для golang-разработчиков собрали конференцию. И после трёхлетнего перерыва, при поддержке VK, проведём церемонию награждения лауреатов Премии HighLoad++.
Реклама. ООО "КОНФЕРЕНЦИИ ОЛЕГА БУНИНА". ИНН 7733863233. erid: LjN8KRBvv
✅3000 участников
✅150+ докладов
✅11 залов
✅5 мастер-классов
✅Конференция в конференции — GolangConf 2023
✅Премия HighLoad++ 2023
👉Подробнее: https://clck.ru/36ETv8
Создание, эксплуатация и масштабирование высоконагруженных проектов требует от разработчика одновременно и внимание к деталям и широты кругозора, чтобы увидеть полную картину. Поэтому программа конференции включает не только традиционные доклады, но и несколько спецпроектов.
Вместе с нашими партнёрами из Яндекса мы собрали целый опенсорс-трек, а на конференции проведём опенсорс трибуну, где вы сможете узнать о решениях с открытым кодом, которые создаются прямо сейчас. Для golang-разработчиков собрали конференцию. И после трёхлетнего перерыва, при поддержке VK, проведём церемонию награждения лауреатов Премии HighLoad++.
Реклама. ООО "КОНФЕРЕНЦИИ ОЛЕГА БУНИНА". ИНН 7733863233. erid: LjN8KRBvv
👍4🔥3
Что такое статическое и динамическое связывание?
Присоединение вызова метода к телу метода называется связыванием. Если связывание проводится компилятором (компоновщиком) перед запуском программы, то оно называется статическим или ранним связыванием (
В свою очередь, позднее связывание (
Для всех методов
Присоединение вызова метода к телу метода называется связыванием. Если связывание проводится компилятором (компоновщиком) перед запуском программы, то оно называется статическим или ранним связыванием (
early binding
).В свою очередь, позднее связывание (
late binding
) это связывание, проводимое непосредственно во время выполнения программы, в зависимости от типа объекта. Позднее связывание также называют динамическим (dynamic
) или связыванием на стадии выполнения (runtime binding
). В языках, реализующих позднее связывание, должен существовать механизм определения фактического типа объекта во время работы программы, для вызова подходящего метода. Иначе говоря, компилятор не знает тип объекта, но механизм вызова методов определяет его и вызывает соответствующее тело метода. Механизм позднего связывания зависит от конкретного языка, но нетрудно предположить, что для его реализации в объекты должна включаться какая-то дополнительная информация.Для всех методов
Java
используется механизм позднего (динамического) связывания, если только метод не был объявлен как final
(приватные методы являются final
по умолчанию).👍17❤4🔥4
Станьте одним из профессионалов, которые способны применять в работе архитектурные решения высшего пилотажа – пройдите обучение «Highload Architect» от OTUS.
Всего за 5 месяцев вы научитесь:
- использовать в своих проектах решения, которые выдерживают сотни тысяч (и даже миллионы) запросов в секунду;
- правильно оптимизировать работоспособность серверов;
- эффективно использовать инструменты, которые уже есть в проектах.
Программа полностью обновлена и отвечает реалиям мира IT. Все преподаватели курса – практикующие специалисты с ценнейшим опытом. Занятия проходят в режиме живых онлайн-вебинаров, сочетаемых с выполнением домашних работ и созданием выпускного проекта для портфолио.
Не упустите возможность перейти на новый профессиональный уровень! Обучение начнется уже 31 октября и в честь Хеллоуина вы можете записаться на курс со скидкой 15% по промокоду «Hello15». Пройдите тестирование прямо сейчас, чтобы воспользоваться предложением: https://otus.pw/rGFHp/
Всего за 5 месяцев вы научитесь:
- использовать в своих проектах решения, которые выдерживают сотни тысяч (и даже миллионы) запросов в секунду;
- правильно оптимизировать работоспособность серверов;
- эффективно использовать инструменты, которые уже есть в проектах.
Программа полностью обновлена и отвечает реалиям мира IT. Все преподаватели курса – практикующие специалисты с ценнейшим опытом. Занятия проходят в режиме живых онлайн-вебинаров, сочетаемых с выполнением домашних работ и созданием выпускного проекта для портфолио.
Не упустите возможность перейти на новый профессиональный уровень! Обучение начнется уже 31 октября и в честь Хеллоуина вы можете записаться на курс со скидкой 15% по промокоду «Hello15». Пройдите тестирование прямо сейчас, чтобы воспользоваться предложением: https://otus.pw/rGFHp/
👍2😁1