Завтра научу вас разворачивать PosgreSQL в докере, подрубать Spring приложение к этой бд, сувать в докер само спринг приложение и радоваться жизни, а также смотреть подвисающие видосы.
Мой комп чета старый, а я слишком много женщин содержу для нового компутера.
Но ниче, у меня есть линукс, который летает как орел, оседлаю его для след видосов)
Мой комп чета старый, а я слишком много женщин содержу для нового компутера.
Но ниче, у меня есть линукс, который летает как орел, оседлаю его для след видосов)
❤🔥8❤6🔥3💔1
https://youtu.be/lRi7yK7Eigw
Ловите, ставьте лайки пишите комменты.
Так как я в серьез думаю создавать образовательный контент, мне супер важно получить от вас обратную связь.
Так что смело пишите что зашло, что не зашло, понятно-не понятно, интересно-скучно.
Там косяк с подвисаниями, но в остальном, надеюсь, будет полезно)
Ловите, ставьте лайки пишите комменты.
Так как я в серьез думаю создавать образовательный контент, мне супер важно получить от вас обратную связь.
Так что смело пишите что зашло, что не зашло, понятно-не понятно, интересно-скучно.
Там косяк с подвисаниями, но в остальном, надеюсь, будет полезно)
YouTube
Spring в Docker, Posgres в Docker с помощью docker-compose и Dockerfile
В данном видео мы знакомимся с Docker
С помощью docker-compose и Dockerfile разворачиваем Spring-Boot и PosgreSQL внутри docker контейнеров
Телега: your_java_mentor
00:00 Вступление
00:45 Создаем Spring-Boot проект в Intellij IDEA
01:42 Docker контейнеры…
С помощью docker-compose и Dockerfile разворачиваем Spring-Boot и PosgreSQL внутри docker контейнеров
Телега: your_java_mentor
00:00 Вступление
00:45 Создаем Spring-Boot проект в Intellij IDEA
01:42 Docker контейнеры…
🤩6🔥3❤🔥2❤1🐳1
Можно ли делать так, как на картинке выше?
Anonymous Quiz
55%
Да, массив можно завернуть в List
45%
Нет, в List нельзя заворачивать примитивы
Введение в кэширование: ускоряем Java с простым кэшем
Привет, друзья! Сегодня мы поговорим о - кэшировании, и как оно может повысить эффективность Java приложений.
Что такое кэширование?
Кэширование позволяет нам временно сохранять результаты вычислений или доступа к данным, чтобы избежать повторных вычислений при повторных запросах. Это особенно полезно в тех случаях, когда операции занимают много времени, но результаты изменяются редко.
Пример простого кэша в Java
Давайте создадим простую программу на Java, чтобы проиллюстрировать, как работает кэширование.
Этот код демонстрирует простую реализацию кэша с использованием HashMap. Мы сохраняем данные в кэше при первом запросе и затем используем их из кэша при последующих запросах.
Надеюсь, этот пример поможет вам понять, как использовать кэширование в ваших Java приложениях. Если у вас есть вопросы или есть темы, которые вы хотели бы увидеть в будущих постах, дайте мне знать! Удачного кодинга! 🚀
Привет, друзья! Сегодня мы поговорим о - кэшировании, и как оно может повысить эффективность Java приложений.
Что такое кэширование?
Кэширование - это механизм временного хранения данных для обеспечения более быстрого доступа к ним.
Кэширование позволяет нам временно сохранять результаты вычислений или доступа к данным, чтобы избежать повторных вычислений при повторных запросах. Это особенно полезно в тех случаях, когда операции занимают много времени, но результаты изменяются редко.
Пример простого кэша в Java
Давайте создадим простую программу на Java, чтобы проиллюстрировать, как работает кэширование.
import java.util.HashMap;
import java.util.Map;
public class SimpleCacheExample {
private static Map<String, String> cache = new HashMap<>();
public static String fetchDataFromDatabase(String key) {
// Здесь обычно происходит запрос к базе данных или долгая операция
// В данном случае, чтобы упростить, просто возвращаем фиксированную строку
return "Data for " + key;
}
public static String getData(String key) {
// Проверяем, есть ли данные в кэше
if (cache.containsKey(key)) {
System.out.println("Fetching data from cache for key: " + key);
return cache.get(key);
} else {
// Если данных нет в кэше, получаем их и сохраняем
String data = fetchDataFromDatabase(key);
cache.put(key, data);
System.out.println("Fetching data from database for key: " + key);
return data;
}
}
public static void main(String[] args) {
// Пример использования кэша
System.out.println(getData("user123"));
System.out.println(getData("user456"));
System.out.println(getData("user123")); // Данные должны быть взяты из кэша, а не из базы данных
}
}
Этот код демонстрирует простую реализацию кэша с использованием HashMap. Мы сохраняем данные в кэше при первом запросе и затем используем их из кэша при последующих запросах.
Надеюсь, этот пример поможет вам понять, как использовать кэширование в ваших Java приложениях. Если у вас есть вопросы или есть темы, которые вы хотели бы увидеть в будущих постах, дайте мне знать! Удачного кодинга! 🚀
👍9🔥3🦄2✍1
Два стула, на одном ты мазохист, а на другом.... 🤷🏻🤷🏻
Наверняка тебе знакомо чувство, когда ты сталкиваешься со сложной задачей.
Ты можешь не знать, как в принципе ее делать. А можешь не знать, почему твой великолепный код не работает.
Когда ты только начинаешь вкатываться в разработку, ты думаешь, что ты неопытный. И это нормально чего-то не знать.
Возможно, тебе даже кажется, что когда ты наберешься опыта, эта проблема исчезнет. В какой-то момент ты станешь мидлом, а после сеньором, и все станет хорошо. Настолько, что ты сможешь позволить себе возвращать фотки голой Пенелопы Крус в ответ на HTTP-запрос, и проблема незнания исчезнет как страшный сон.
Ну так вот, нифига это не так. Незнание будет сопровождать тебя всю твою карьеру. Всю, Карл! Просто с годами не знать нужно будет все более и более экзотические вещи.
Я 10 лет занимаюсь разработкой, и сейчас (смотреть пример с кодом выше) мне нужно написать на Kotlin задачу, которая запускается раз в 10 секунд и что-то делает. Я скрипя креслом родил вот это (смотреть пример с кодом выше), и я понятия не имею, почему мой великолепный код не работает. Он работает. Первые 5 минут. А потом в логах тишина...
Так что есть два пути. Два стула, так сказать. На одном стуле ты принимаешь реальность, в которой ты всегда будешь чего-то не знать. На другом стуле ты мазохист, и тебе это просто нравится.
А какой стул выберешь ты?
Наверняка тебе знакомо чувство, когда ты сталкиваешься со сложной задачей.
Ты можешь не знать, как в принципе ее делать. А можешь не знать, почему твой великолепный код не работает.
Когда ты только начинаешь вкатываться в разработку, ты думаешь, что ты неопытный. И это нормально чего-то не знать.
Возможно, тебе даже кажется, что когда ты наберешься опыта, эта проблема исчезнет. В какой-то момент ты станешь мидлом, а после сеньором, и все станет хорошо. Настолько, что ты сможешь позволить себе возвращать фотки голой Пенелопы Крус в ответ на HTTP-запрос, и проблема незнания исчезнет как страшный сон.
Ну так вот, нифига это не так. Незнание будет сопровождать тебя всю твою карьеру. Всю, Карл! Просто с годами не знать нужно будет все более и более экзотические вещи.
Я 10 лет занимаюсь разработкой, и сейчас (смотреть пример с кодом выше) мне нужно написать на Kotlin задачу, которая запускается раз в 10 секунд и что-то делает. Я скрипя креслом родил вот это (смотреть пример с кодом выше), и я понятия не имею, почему мой великолепный код не работает. Он работает. Первые 5 минут. А потом в логах тишина...
Так что есть два пути. Два стула, так сказать. На одном стуле ты принимаешь реальность, в которой ты всегда будешь чего-то не знать. На другом стуле ты мазохист, и тебе это просто нравится.
А какой стул выберешь ты?
❤11🦄1
Мир вашему Либидо!
В апреле прошлого года я завел себе ТГ канал.
Стал постить вещи про джаву, себя и трудоустройство.
Стал искать себе учеников.
Мне очень хотелось заработать денег не в найме. Не больших денег, но первых, заработанных самостоятельно.
Даже не заработанных, созданных, сгенерированных вот этими вот руками.
Я нашел 5ых учеников. Предложил им сочные условия, и мы погнали.
С кем-то наша работа уже закончилась, с кем-то скоро закончится.
Я сгенерил себе больше 100к самостоятельно. И это очень большое достижение лично для меня.
Никому из учеников я не обещал трудоустройство по итогу наставничества.
Я обещал лишь подготовить их к выходу на рынок.
Но блин!
За 3-6 месяцев работы со мной 4 человека из 5 уже получили офферы.
1 устроился работать за три месяца.
1 получил оффер с первого собеса
1 еще не закончил заниматься со мной но уже получил оффер x2 стоимости моего наставничества
1 еще получит свой оффер я уверен.
Кого-то теперь ждет переезд. Кого-то большая зп, кого-то мега рост через боль, потому что он один разраб в компании, кого-то только ждет вся эта веселуха.
Я очень хотел денег, но осознавая сейчас, как я помог ребятам изменить свою жизнь, деньги уходят куда-то далеко вниз по значимости.
Теперь я хочу еще больше денег и таких достижений, чтоб и эти деньги ушли вниз по значимости)
PS Я обязательно расскажу историю каждого с кем мне повезло поработать в наставничестве.
В апреле прошлого года я завел себе ТГ канал.
Стал постить вещи про джаву, себя и трудоустройство.
Стал искать себе учеников.
Мне очень хотелось заработать денег не в найме. Не больших денег, но первых, заработанных самостоятельно.
Даже не заработанных, созданных, сгенерированных вот этими вот руками.
Я нашел 5ых учеников. Предложил им сочные условия, и мы погнали.
С кем-то наша работа уже закончилась, с кем-то скоро закончится.
Я сгенерил себе больше 100к самостоятельно. И это очень большое достижение лично для меня.
Никому из учеников я не обещал трудоустройство по итогу наставничества.
Я обещал лишь подготовить их к выходу на рынок.
Но блин!
За 3-6 месяцев работы со мной 4 человека из 5 уже получили офферы.
1 устроился работать за три месяца.
1 получил оффер с первого собеса
1 еще не закончил заниматься со мной но уже получил оффер x2 стоимости моего наставничества
1 еще получит свой оффер я уверен.
Кого-то теперь ждет переезд. Кого-то большая зп, кого-то мега рост через боль, потому что он один разраб в компании, кого-то только ждет вся эта веселуха.
Я очень хотел денег, но осознавая сейчас, как я помог ребятам изменить свою жизнь, деньги уходят куда-то далеко вниз по значимости.
Теперь я хочу еще больше денег и таких достижений, чтоб и эти деньги ушли вниз по значимости)
PS Я обязательно расскажу историю каждого с кем мне повезло поработать в наставничестве.
🔥11👍4❤2❤🔥2
Вопросы и ответы на собес
Всем привет!
Ловите клевый ресурс для подготовки к техническому интервью: https://github.com/enhorse/java-interview
Здесь вы найдете вопросы и ответы как по самой джаве, так и по смежным темам вроде SQL и работе с web
Всем привет!
Ловите клевый ресурс для подготовки к техническому интервью: https://github.com/enhorse/java-interview
Здесь вы найдете вопросы и ответы как по самой джаве, так и по смежным темам вроде SQL и работе с web
🔥8👍3✍1🙏1
Media is too big
VIEW IN TELEGRAM
Где-то я прочитал, что блогеры эксперты продают не свои знания и экспертизу, а образ жизни, который можно получить используя те знания и экспертизу.
Я пока ничего не продаю, наверное поэтому и не транслирую свой образ жизни, и не выкладываю сториз по 5 раз в неделю.
Мой подход к генерации контента основан на двух мышках внутри меня. В какой-то момент у них возникает такой диалог:
- Привет, Пинки!
- Привет, Брейн!
- Мы давно ничего не постили, Пинки.
- Да Брейн.
- Так мы не захватим мир, Пинки
- Да, Брейн
- Ну так может быть ты расскажешь и покажешь как клево работать из дома, Пинки?
- Да, Брейн.
Ну так вот, из дома работать клево. Я работаю из дома еще с тех времен, когда не было ковида. У меня в офисе два новогодних подарка, ждут, когда я заеду за ними. Один с этого НГ, другой с прошлого. Настолько мне стало лень в офис ездить.
Не все это любят. Кому-то прям очень важна социальность, общение. В моем окружении как правило это важно девушкам.
Не видел ни одного парня, который сказал бы: «Блин, как мне не хватает работы в офисе, и живого общения с этими прекрасными людьми»
А вы как относитесь к работе на удаленке? Чего бы хотели больше (удаленку/офис) и почему?
Я пока ничего не продаю, наверное поэтому и не транслирую свой образ жизни, и не выкладываю сториз по 5 раз в неделю.
Мой подход к генерации контента основан на двух мышках внутри меня. В какой-то момент у них возникает такой диалог:
- Привет, Пинки!
- Привет, Брейн!
- Мы давно ничего не постили, Пинки.
- Да Брейн.
- Так мы не захватим мир, Пинки
- Да, Брейн
- Ну так может быть ты расскажешь и покажешь как клево работать из дома, Пинки?
- Да, Брейн.
Ну так вот, из дома работать клево. Я работаю из дома еще с тех времен, когда не было ковида. У меня в офисе два новогодних подарка, ждут, когда я заеду за ними. Один с этого НГ, другой с прошлого. Настолько мне стало лень в офис ездить.
Не все это любят. Кому-то прям очень важна социальность, общение. В моем окружении как правило это важно девушкам.
Не видел ни одного парня, который сказал бы: «Блин, как мне не хватает работы в офисе, и живого общения с этими прекрасными людьми»
А вы как относитесь к работе на удаленке? Чего бы хотели больше (удаленку/офис) и почему?
🔥10🦄1
Итак, пока я рожаю полезный контент, (головка уже появилась), продолжу знакомить вас с образом жизни блогера программиста.
Мне 32. Я заметил, что 3-ий десяток - это период переосмысления своей жизни.
Многие мои знакомые начинают задумываться: «а че я собственно хочу?». Будто до 30 мы все двигаемся по шаблону, найти работу, обзавестись семьей, купить робот-пылесос.
А после все задумываемся, а что мне нужно? Нужно не по сценарию, а действительно.
Одной из таких вещей для меня стал спорт. В школе я занимался боевыми единоборствами, в универе забросил, а к 30 вопрос спорта стал вопросом жизни и смерти. Тут либо спорт, либо жир с болью в спине и пояснице.
Человек я вежливый. Мне всегда было неловко бить людей. Но на боевых единоборствах если ты не бьешь, то бьют тебя. И даже если бьешь ты, то тебя все равно тоже бьют.
🏊♂️ 🏊♂️ 🏊♂️
Поэтому я выбрал бассейн. Ходил около полугода, но потом надоело быть в этом процессе одному.
🥊🥊🥊
Затем я выбрал бокс. Индивидуальные занятия с тренером. Раньше я не занимался боксом, и для меня было открытием, что на боксе люто забиваются ноги, а не руки.
🥊 🥊 🥊
Спустя какое-то время я совершил фатальную ошибку. Подумав, что я немного прокачался в индивидуальных занятиях, я пошел на групповые.
Мне не понравилось как меня побили, и я взял бессрочный отпуск.
И после, собрав всю свою мужественность и храбрость, я сжал очко и пошел на танцы.
💃🕺
Удивительно, но пойти на танцы было гораздо страшнее, чем получать по щщам на боксе.
В танцах я разбираюсь также, как в косметике. Поэтому, я просто тыкнул пальцем в инстаграмм и записался на пробный урок. Это оказалась бачата.
Я хожу уже пол года, и кажется, что бросать не собираюсь.
Во-первых, никто меня не бьет на танцах.
Во-вторых, танцевать с женщинами оказалось приятнее, чем драться с мужчинами.
В-третьих, я там как никак, но все равно потею. Жир еще не ушел, но боли в спине уже давно нет.
А в четвертых, пожалуй разверну. Лично я сталкиваюсь на танцах со своими слабостями. Со своей скованностью, со своей застенчивостью, со своей зажатостью.
Я из тех интровертов, которые говорят, что они интроверты, потому что сыкотно выйти в свет и начать налаживать контакт с людьми, заводить друзей, проявлять себя.
Как сказал один чувак на танцах: «все мы боремся со своей социальной отчужденностью». Эти слова запали мне в душу. Мне кажется, что социально отчужденным людям сложнее стать успешными.
И я очень рад, что нашел в себе силы бороться со своей социальной отчужденностью.
А где вы боретесь со своими слабостями? Комфортно ли вам бить людей или предпочитаете иные способы контактного взаимодействия?
Ставь 🦄 если интроверт
Мне 32. Я заметил, что 3-ий десяток - это период переосмысления своей жизни.
Многие мои знакомые начинают задумываться: «а че я собственно хочу?». Будто до 30 мы все двигаемся по шаблону, найти работу, обзавестись семьей, купить робот-пылесос.
А после все задумываемся, а что мне нужно? Нужно не по сценарию, а действительно.
Одной из таких вещей для меня стал спорт. В школе я занимался боевыми единоборствами, в универе забросил, а к 30 вопрос спорта стал вопросом жизни и смерти. Тут либо спорт, либо жир с болью в спине и пояснице.
Человек я вежливый. Мне всегда было неловко бить людей. Но на боевых единоборствах если ты не бьешь, то бьют тебя. И даже если бьешь ты, то тебя все равно тоже бьют.
Поэтому я выбрал бассейн. Ходил около полугода, но потом надоело быть в этом процессе одному.
🥊🥊🥊
Затем я выбрал бокс. Индивидуальные занятия с тренером. Раньше я не занимался боксом, и для меня было открытием, что на боксе люто забиваются ноги, а не руки.
Спустя какое-то время я совершил фатальную ошибку. Подумав, что я немного прокачался в индивидуальных занятиях, я пошел на групповые.
Мне не понравилось как меня побили, и я взял бессрочный отпуск.
И после, собрав всю свою мужественность и храбрость, я сжал очко и пошел на танцы.
💃🕺
Удивительно, но пойти на танцы было гораздо страшнее, чем получать по щщам на боксе.
В танцах я разбираюсь также, как в косметике. Поэтому, я просто тыкнул пальцем в инстаграмм и записался на пробный урок. Это оказалась бачата.
Я хожу уже пол года, и кажется, что бросать не собираюсь.
Во-первых, никто меня не бьет на танцах.
Во-вторых, танцевать с женщинами оказалось приятнее, чем драться с мужчинами.
В-третьих, я там как никак, но все равно потею. Жир еще не ушел, но боли в спине уже давно нет.
А в четвертых, пожалуй разверну. Лично я сталкиваюсь на танцах со своими слабостями. Со своей скованностью, со своей застенчивостью, со своей зажатостью.
Я из тех интровертов, которые говорят, что они интроверты, потому что сыкотно выйти в свет и начать налаживать контакт с людьми, заводить друзей, проявлять себя.
Как сказал один чувак на танцах: «все мы боремся со своей социальной отчужденностью». Эти слова запали мне в душу. Мне кажется, что социально отчужденным людям сложнее стать успешными.
И я очень рад, что нашел в себе силы бороться со своей социальной отчужденностью.
А где вы боретесь со своими слабостями? Комфортно ли вам бить людей или предпочитаете иные способы контактного взаимодействия?
Ставь 🦄 если интроверт
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🦄5🤝2
Media is too big
VIEW IN TELEGRAM
Видос к прошлому посту.
Танцы - спросите вы? Танцы - отвечу я.
Танцы - спросите вы? Танцы - отвечу я.
👍5❤2
Предлагаю сыграть в игру.
Представим, что у нас есть 2 таблицы:
🔶
🔶
🔹
🔹
🎮 Я буду давать задания на написание SQL запросов к этим таблицам. А вы в комментах пишите запрос.
🎮 Задания будут постепенно усложняться. После первого правильного ответа я даю следующее задание.
🎮 Победит тот, кто даст больше всех правильных ответов.
Задание 1
Вывести все данные из таблицы "Employees"
Представим, что у нас есть 2 таблицы:
🔶
Employees:🔹employee_id (целое число, первичный ключ)🔹first_name (строка, имя сотрудника)🔹last_name (строка, фамилия сотрудника)🔹department_id (целое число, внешний ключ, связан с department_id в таблице Departments)🔹salary (дробное число, зарплата сотрудника)🔶
Departments:🔹
department_id (целое число, первичный ключ)🔹
department_name (строка, название отдела)Задание 1
Вывести все данные из таблицы "Employees"
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍2
Самая простая игра на Java которую ты можешь написать уже сейчас!
В далеком 2007 году, в маленьком городе Нальчик, я ехал в маршрутке к репетитору по программированию. Тогда я еще не знал, что в тот вечер мне будет дано задание написать игру на паскале. И уж тем более не подозревал, что спустя 17 лет, я буду сидеть в Санкт-Петербурге и предлагать уже другим людям написать ту самую, маленькую, но очень гордую игру.
И словно для того, чтобы я продолжал эксплуатировать стереотипы о кавказцах, эта игра называется Быки и Коровы.
Суть ее проста.
Компьютер загадывает число определенной длины (минимум 4-ех значное)
Задача человека - угадать число.
В ответ на каждую попытку компьютер выводит два числа: количество верно угаданных цифр и количество верно угаданных цифр, стоящих в правильной позиции.
Например.
Две цифры угаданы верно (3, 4) и обе стоят в нужной позиции.
Задача игрока - вычислить задуманное число за минимальное количество попыток.
Попробуйте написать такую игрушку и поделиться своим решением. Способов создать такую игру много.
И еще, кто-нибудь может объяснить почему игра называется Быки и Коровы?
В далеком 2007 году, в маленьком городе Нальчик, я ехал в маршрутке к репетитору по программированию. Тогда я еще не знал, что в тот вечер мне будет дано задание написать игру на паскале. И уж тем более не подозревал, что спустя 17 лет, я буду сидеть в Санкт-Петербурге и предлагать уже другим людям написать ту самую, маленькую, но очень гордую игру.
И словно для того, чтобы я продолжал эксплуатировать стереотипы о кавказцах, эта игра называется Быки и Коровы.
Суть ее проста.
Компьютер загадывает число определенной длины (минимум 4-ех значное)
Задача человека - угадать число.
В ответ на каждую попытку компьютер выводит два числа: количество верно угаданных цифр и количество верно угаданных цифр, стоящих в правильной позиции.
Например.
Компьютер загадал число: 4356Две цифры угаданы верно (3, 4), но 0 цифр угаданы в нужной позиции
Первая попытка: 1234
Вывод компьютера: 2, 0.
Вторая попытка: 4321
Вывод компьютера: 2, 2
Две цифры угаданы верно (3, 4) и обе стоят в нужной позиции.
Задача игрока - вычислить задуманное число за минимальное количество попыток.
Попробуйте написать такую игрушку и поделиться своим решением. Способов создать такую игру много.
И еще, кто-нибудь может объяснить почему игра называется Быки и Коровы?
🔥10👍2🦄2👨💻1
Всем привет!
Вот тут я спрашивал у вас, о чем бы вам было интересно посмотреть видос.
Получил несколько сообщений о том, что было бы интересно послушать о брокерах сообщений.
Мне кажется (сугубо мое имхо), что для джуна знание и умение работать с брокерами сообщений не обязательно.
Но в ходе размышлений на эту тему, решил что полезно будет осветить некоторые вещи, лежащие в основе брокеров сообщений.
В связи с этим, хочу предложить вам подумать над рядом вопросов, а чуть позже, выложу пост на эту тему.
Есть 2 шаблона проектирования:
1. Наблюдатель
2. Издатель - подписчик
❓❓❓
Вопросы:
1. Какую задачу решают эти шаблоны?
2. В чем отличие одного от другого?
3. Не могли бы вы придумать кейс, в котором уместно было бы использовать 1 из них (ну или использовать брокер сообщений)
Если знаете ответы, поделитесь, пожалуйста. Если не знаете - предлагаю погуглить и постараться ответить, как вы это понимаете.
А чуть погодя сделаю пост, где сам постараюсь раскрыть эту тему.
PS на собесах про брокеры сообщений спрашивают гораздо реже, чем про паттерны проектирования. Заготовьте себе крутой ответ на такой вопрос, ответив на три моих вопроса выше 😎
Вот тут я спрашивал у вас, о чем бы вам было интересно посмотреть видос.
Получил несколько сообщений о том, что было бы интересно послушать о брокерах сообщений.
Мне кажется (сугубо мое имхо), что для джуна знание и умение работать с брокерами сообщений не обязательно.
Но в ходе размышлений на эту тему, решил что полезно будет осветить некоторые вещи, лежащие в основе брокеров сообщений.
В связи с этим, хочу предложить вам подумать над рядом вопросов, а чуть позже, выложу пост на эту тему.
Есть 2 шаблона проектирования:
1. Наблюдатель
2. Издатель - подписчик
❓❓❓
Вопросы:
1. Какую задачу решают эти шаблоны?
2. В чем отличие одного от другого?
3. Не могли бы вы придумать кейс, в котором уместно было бы использовать 1 из них (ну или использовать брокер сообщений)
Если знаете ответы, поделитесь, пожалуйста. Если не знаете - предлагаю погуглить и постараться ответить, как вы это понимаете.
А чуть погодя сделаю пост, где сам постараюсь раскрыть эту тему.
PS на собесах про брокеры сообщений спрашивают гораздо реже, чем про паттерны проектирования. Заготовьте себе крутой ответ на такой вопрос, ответив на три моих вопроса выше 😎
Telescope
Java Mentor
🔥5❤🔥3❤2🦄2👍1
Шаблон проектирования: Наблюдатель
В прошлом посте я коснулся темы шаблонов проектирования Наблюдатель и Издатель-Подписчик.
Постараюсь разобрать первый из двух, а потом рассмотрим и второй.
Как известно, шаблоны проектирования бывают:
⭐️ Порождающие
⭐️ Структурные
⭐️ Поведенческие
Наблюдатель является поведенческим шаблоном проектирования, который позволяет одним объектам следить и реагировать на события, происходящие в других объектах, благодаря механизму подписки.
Иными словами, я как часть программы, подписываюсь на изменения в определенных объектах, и меня, в случае таких изменений, оповещают. Мол, братан, там чет поменялось, ты просил пнуть тебя, если че-то поменяется.
Но на кой черт мне просить оповещать меня? Ситуация, скажем прямо, не повседневная.
Для ответа на вопрос "Нах Зачем?", рассмотрим пример из врачебной практики.
Представьте себе диспетчера, который сидит перед монитором, и видит на нем как разная техника ездит по дорогам.
И вдруг, о Боже! Один экскаватор замигал красными огнями. Код красный, код красный, экскаватор в беде. Пукан диспетчера взрывается😫 , что побуждает его совершить определенные действия 🛠 .
Теперь рассмотрим эту же ситуацию изнутри. Диспетчер видит технику. Как эта информация поступает к нему? Он должен видеть изменения координат каждой машинки🚗 .
Вариантов реализовать это 2.
Первый вариант. Фронт шлет запросы на сервер. Много запросов. И спрашивает: "Чувак, че нить поменялось? А теперь? А теперь?" И сервер на каждый такой запрос говорит: "Да, поменялось, вот эти машинки были тут, теперь они здесь. А еще у экскаватора припадок".
Это не очень эффективно, так как ну много запросов, нагрузка большая.
Специально для таких кейсов умные ребята в странных свитерах придумали другой протокол. WebSocket
Веб-сокет это такой протокол, при котором между двумя системами открывается канал для передачи сообщений, который длительное время может быть открытым .
В отличии от HTTP, где у нас всегда есть запрос-ответ, в веб-сокете это совсем не обязательно. Возможно отправлять безграничное множество сообщений от одного сервиса в другой и наоборот. Например 10 в одну сторону 20 в другую. Количество ничем не ограничено, как и очередность💌 ✉️ 💌
Это позволяет отправлять информацию на фронт, не дожидаясь от него запроса на получение этой информации.
Теперь наденем резиновые перчатки🎮 и погрузимся еще глубже в эту ситуацию.
🎮 Заглянем в бэкенд 🎮
Представьте себе класс, отвечающий за отправку веб-сокет сообщений во все веб-сокет сессии.
Но как этот класс должен понимать, что ему нужно отправить сообщение? Должен ли он постоянно мониторить состояние техники? Должен ли он постоянно самолично интересоваться состоянием каждой техники? Это было бы сложно.
Именно тут на сцену выходит
Observer - Наблюдатель
Шаблон, который позволит серверу держать фронт в актуальном состоянии, и разработчику не взорвать мозг при проектировании сложной логики.
Что произойдет?
Класс, который отвечает за отправку веб-сокет сообщений, просто единожды подпишется на изменения состояний техники, а когда эти изменения произойдут, наш класс будет оповещен, и отправит сообщение в веб-сокет сессию.
Согласен, можно было бы придумать что попроще, но мне хотелось показать вам реальные задачи, которые решаются с помощью изучаемых вами материалов.
Теперь, попробуем обернуть все в код.
В примере сознательно допущены упрощения, для лучшего восприятия. Хороший пример данного шаблона вы можете найти здесь.
В прошлом посте я коснулся темы шаблонов проектирования Наблюдатель и Издатель-Подписчик.
Постараюсь разобрать первый из двух, а потом рассмотрим и второй.
Как известно, шаблоны проектирования бывают:
Наблюдатель является поведенческим шаблоном проектирования, который позволяет одним объектам следить и реагировать на события, происходящие в других объектах, благодаря механизму подписки.
Иными словами, я как часть программы, подписываюсь на изменения в определенных объектах, и меня, в случае таких изменений, оповещают. Мол, братан, там чет поменялось, ты просил пнуть тебя, если че-то поменяется.
Но на кой черт мне просить оповещать меня? Ситуация, скажем прямо, не повседневная.
Для ответа на вопрос "
Представьте себе диспетчера, который сидит перед монитором, и видит на нем как разная техника ездит по дорогам.
И вдруг, о Боже! Один экскаватор замигал красными огнями. Код красный, код красный, экскаватор в беде. Пукан диспетчера взрывается
Теперь рассмотрим эту же ситуацию изнутри. Диспетчер видит технику. Как эта информация поступает к нему? Он должен видеть изменения координат каждой машинки
Вариантов реализовать это 2.
Первый вариант. Фронт шлет запросы на сервер. Много запросов. И спрашивает: "Чувак, че нить поменялось? А теперь? А теперь?" И сервер на каждый такой запрос говорит: "Да, поменялось, вот эти машинки были тут, теперь они здесь. А еще у экскаватора припадок".
Это не очень эффективно, так как ну много запросов, нагрузка большая.
Специально для таких кейсов умные ребята в странных свитерах придумали другой протокол. WebSocket
Веб-сокет это такой протокол, при котором между двумя системами открывается канал для передачи сообщений, который длительное время может быть открытым .
В отличии от HTTP, где у нас всегда есть запрос-ответ, в веб-сокете это совсем не обязательно. Возможно отправлять безграничное множество сообщений от одного сервиса в другой и наоборот. Например 10 в одну сторону 20 в другую. Количество ничем не ограничено, как и очередность
Это позволяет отправлять информацию на фронт, не дожидаясь от него запроса на получение этой информации.
Теперь наденем резиновые перчатки
Представьте себе класс, отвечающий за отправку веб-сокет сообщений во все веб-сокет сессии.
Но как этот класс должен понимать, что ему нужно отправить сообщение? Должен ли он постоянно мониторить состояние техники? Должен ли он постоянно самолично интересоваться состоянием каждой техники? Это было бы сложно.
Именно тут на сцену выходит
Observer - Наблюдатель
Шаблон, который позволит серверу держать фронт в актуальном состоянии, и разработчику не взорвать мозг при проектировании сложной логики.
Что произойдет?
Класс, который отвечает за отправку веб-сокет сообщений, просто единожды подпишется на изменения состояний техники, а когда эти изменения произойдут, наш класс будет оповещен, и отправит сообщение в веб-сокет сессию.
Согласен, можно было бы придумать что попроще, но мне хотелось показать вам реальные задачи, которые решаются с помощью изучаемых вами материалов.
Теперь, попробуем обернуть все в код.
В примере сознательно допущены упрощения, для лучшего восприятия. Хороший пример данного шаблона вы можете найти здесь.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤5👍3