Пікірлер
@Nick87rus
@Nick87rus Сағат бұрын
Видео топ! Однозначно лайк, подписка и колокольчик!
@anjelomanoranjan
@anjelomanoranjan Сағат бұрын
Паша, ты красавчик! Спасибо за видео!
@dzentai
@dzentai 2 сағат бұрын
Павел, где вы накачали такие банки?
@sorokinpavel
@sorokinpavel 2 сағат бұрын
Материалы по изучению Микросервисов и Java от меня: t.me/JavaLearnBot Telegram канал: t.me/S0R0KlN
@kikout9935
@kikout9935 5 күн бұрын
Жаль что вырезали как он задачу решал, полтора года чел джаву учит😂 звонили с Испании сказали что это не их стыд
@zakharka3938
@zakharka3938 6 күн бұрын
Перед закрытием контекста вызываются @PreDestroy-методы, а вовсе не @PostConstruct-методы.
@zakharka3938
@zakharka3938 6 күн бұрын
В ответе на вопрос про volatile автор сам запутался с кешами и оперативной памятью...
@sorokinpavel
@sorokinpavel 5 күн бұрын
В чем конкретно я запутался и дал неверный ответ?
@ji1ja
@ji1ja 9 күн бұрын
Это шо? 3 часа кайфа? Чел хорош, спасибо за труды
@sorokinpavel
@sorokinpavel 9 күн бұрын
Спасибо) Рад что полезно
@MartaMelsbach
@MartaMelsbach 9 күн бұрын
Спасибо за интересное видео и подробное обсуждение Java Core и Spring. Я сам недавно столкнулся с выбором курсов по IT, так как решил сменить профессию. Рассматривал разные варианты, но в итоге выбрал Skypro. С их помощью я освоил веб-дизайн и получил оффер от крутой геймдев компании.
@sorokinpavel
@sorokinpavel 9 күн бұрын
Спасибо большое, рад что было полезно!
@qwertymangames1800
@qwertymangames1800 11 күн бұрын
Про строки норм не ответили. Это от языка Си идёт. String - это класс являющийся массивом символов. А как мы знаем массивы имеют фиксированную длинну и их нужно пересоздавать когда что-то меняем.
@sorokinpavel
@sorokinpavel 10 күн бұрын
На какой конкретно вопрос был дан неправильный ответ? И какой ответ правильный?
@sultankodirov
@sultankodirov 11 күн бұрын
Круто, смотрел очень полезно спасибо за трудь, много бы таких контентов СПАСИБО Паша
@l_want_pizza7254
@l_want_pizza7254 11 күн бұрын
слабенький джун, дальше теории не ушел
@bonesik
@bonesik 11 күн бұрын
Не правда Ваша что в гет запросе нет тела. Сам по себе протокол позволяет передавать тело в любом запросе. Это уже рест архитектура не рекомендует добавлять тело в гет запрос.
@sorokinpavel
@sorokinpavel 11 күн бұрын
Спасибо за уточнение!
@zakharka3938
@zakharka3938 6 күн бұрын
Как раз сам HTTP протокол и не рекомендует добавлять тело в get-запрос, а RESTful сервисы просто следуют устоявшейся практике работы с HTTP.
@wlasov
@wlasov 11 күн бұрын
На мидл обычно такого уровня собесы
@whiterabbit9310
@whiterabbit9310 11 күн бұрын
Без негатива, но парень конечно нулевый)
@bulatruslanovich422
@bulatruslanovich422 10 күн бұрын
бывает
@ji1ja
@ji1ja 9 күн бұрын
статик объект меня уничтожил
@user-uc2iv5ry6r
@user-uc2iv5ry6r 9 күн бұрын
Та нормально всё, пусть пробует , все в начале такие , главное , что бы выводы сделал и начал закрывать эти пробелы. Автору респект.
@alexandr6055
@alexandr6055 11 күн бұрын
Привет! А есть шанс попасть к тебе на такой собес?)
@sorokinpavel
@sorokinpavel 11 күн бұрын
Привет) Заходи в тг канал, там есть инфа об этом в последнем посте
@ruff7209
@ruff7209 11 күн бұрын
преступно мало подписчиков и лайков, поднатужтесь ребят!)
@sorokinpavel
@sorokinpavel 11 күн бұрын
Спасибо! Идем вперед)
@anjelomanoranjan
@anjelomanoranjan 11 күн бұрын
Паша, ты красавчик и ТОП!
@hard1k564
@hard1k564 11 күн бұрын
Будет круто если сделаешь собес с джуном у которого есть опыт
@sorokinpavel
@sorokinpavel 11 күн бұрын
Еще больше материалов от меня там: t.me/S0R0KlN Пишите свои вопросы в комментариях
@djadjaandrey
@djadjaandrey 14 күн бұрын
👍👍👍
@user-td1cs5vo7k
@user-td1cs5vo7k 14 күн бұрын
Выходит такая проблема : ERROR 21092 --- [legram Executor] o.t.t.u.DefaultBotSession : 401 Unauthorized: [no body] хотя я оплатил ключ за ChatGpt API
@user-es2ku5bx7p
@user-es2ku5bx7p 16 күн бұрын
Все это классно, но из России зарегаться в openai очень сложно
@TheF4nTM
@TheF4nTM 18 күн бұрын
Проще сделать пул потоков, где сайз пула будет равен количеству операций в минуту у каждого типа операции. И заделать барьер некоторый. Ставить sleep на поток и опрашивать пул потоков для каждой операции пока не освободится один из возможных потоков. То есть 5 ограничение в минуту 5 потоков имеем поначалу Влетает 10 операций 5 выполним после выполнения улетают в слип. Оставшиеся 10 ждут пока поток освободится. Дождались выполняем Джойним.
@paulfunigga
@paulfunigga 18 күн бұрын
Зачем тут sleep? Response time такого сервиса будет плохой, если из-за операции sleep ответ будет ожидаться.
@paulfunigga
@paulfunigga 18 күн бұрын
Код не потокобезопасный,нужно синхронизовать по какому-то userId+operationType обьекту (нужно его сделать и это должен быть один объект на все приложение, потому что нельзя сделать новый объект с таким же содержимым через new и ожидать, что он будет синхронизировать правильно, потому что объекты будут разные, хоть и содержимое одинаковое) . Иначе один поток может удалять данные, которые были ДО currentTime-60seconds. И до того, как он успел сделать .size(), может вклиниться другой поток, у которого currentTime на секунду позже и удалить данные, которые нужны первому потоку. В итоге первый поток получит неправильный .size(). Если один пользователь не будет параллельно спрашивать можно ли ему делать ту или иную операцию, тогда будет работать, но в таком случае и concurrent linked queue не нужен, можно было оставить linkedlist.
@SuperHadiy
@SuperHadiy 18 күн бұрын
Не совсем понял как решилась проблема потокобезопасности. То что заменили Queue на потокобезопасную дает то, что операции peek и poll по-отдельности стали атомарны, но они же вызванные последовательно в одном методе removeOldOperations вцелом не атомарны, т.к. между ними может вклиниться другой поток и изменить очередь.
@paulfunigga
@paulfunigga 18 күн бұрын
Да, может произойти такая ситуация, когда первый поток получает текущий таймстемп по времени (currentTime), и удаляет все, что было перед currentTime-60seconds. Параллельно, на 1 секунду позже, может запуститься другой поток, и удалить элементы, которые должен посчитать первый поток, тем самым вернётся неправильный count в первом потоке. Нужно делать синхронизацию на operationType и userId. Однако. Если пользователь, который использует этот сервис не вызывает параллельно несколько запросов на проверку возможности записи/чтения, то все будет ок. Но тогда и concurrent linked queue не нужен, можно было оставить linkedlist
@sorokinpavel
@sorokinpavel 18 күн бұрын
Спасибо, что подметили. Действительно, в этом методе недостаточно просто атомарности методов очереди. Может произойти ошибка, если два потока параллельно будут очередь очищать. Может случиться такое, что какой-то поток очистит лишнее сообщение, которое не надо было убирать из очереди. Починить можно с помощью синхронизации по очереди, сделать snchronized блок по очереди
@pavlovpavel8995
@pavlovpavel8995 19 күн бұрын
Топяра от пашка
@temcodes
@temcodes 19 күн бұрын
Очень качественный контент, спасибо большое! Не останавливайся, ты на правильном пути
@dzentai
@dzentai 24 күн бұрын
Павел здравствуйте! Я добавил в телеграм бота redis для сохранения информации о контексте, так же хочу поблагодарить вас за ваши уроки по созданию телеграм бота на Java! В скором времени хочу добавить контекста для бота чтобы отвечал на вопросы по конкретной сфере. Еще раз спасибо вам за ваши уроки :)
@Alex888mount
@Alex888mount 26 күн бұрын
Круто!
@xyxxxxlkzzz
@xyxxxxlkzzz 26 күн бұрын
Спасибо большое за видос. Очень классно, что после ответа ты от себя дополнительно что-то добавляешь и показываешь возможные опции для ответа Очень круто, жду еще видосов в формате собеседований!
@alekseyfrozis937
@alekseyfrozis937 Ай бұрын
классный гайд, надо будет повторить на досуге 👍
@yarik2303
@yarik2303 Ай бұрын
Очень понятно и грамотно. Однозначно подписываюсь и жду новых видео
@luckytima2315
@luckytima2315 Ай бұрын
Братик нифига ты ультанул
@konstantingorbunov4372
@konstantingorbunov4372 Ай бұрын
Похоже, что у тебя неправильное решение третьей задачи, на мой взгляд вот так должно быть: @Override public void run() { while (current < 100) { if (id == current % quantity) { synchronized (lock) { step(); current ++; } } } } Цикл ограничил 100 шагами для наглядности, ну и потоки надо стартануть.
@konstantingorbunov4372
@konstantingorbunov4372 Ай бұрын
Или вообще вот так лучше без доп переменной public void run() { while (current < 100) { if (id == current % quantity) { step(); } } } synchronized private void step() { System.out.println("Step by " + name); current ++; }
@sorokinpavel
@sorokinpavel Ай бұрын
Если утверждаешь, что решение неверное, то приведи пример выполнения, когда оно отработает неправильно, иначе это просто слова
@konstantingorbunov4372
@konstantingorbunov4372 Ай бұрын
@@sorokinpavel насчет работы вообще, да погорячился, посмотрел, код должен сработать, но в таком видео ожидаешь какое-то эталонное решение, а не (не хочу быть токсичным) спагетти какие-то. Ты ведь наверняка готовился к выпуску ролика, а не как я с ходу написал и забыл)
@sorokinpavel
@sorokinpavel Ай бұрын
@@konstantingorbunov4372 Покзаываю решение, которое я придумал во время собеса в реальном времени
@konstantingorbunov4372
@konstantingorbunov4372 Ай бұрын
@@sorokinpavel вообще я подмал, что здесь вообще не нужен synchronized блок, а достаточно двух volatile переменных, и сам я тоже зря написал synchronized метод во втором случае, так робот не сможет одновременно шагать и махать рукой например. Вот так тоже работает, можешь проверить: private final String name; volatile private static int current = 0; volatile private static int quantity = 0; private final int id; public Foot(String name) { this.name = name; id = quantity; quantity += 1; } @Override public void run() { while (current < 100) { if (id == current % quantity) { step(); } } } private void step() { System.out.println("Step by " + name); current ++; } Хотя теоретически current ++ не атомарная операция
@ruff7209
@ruff7209 Ай бұрын
Если в хэшмапу сувать объекты с одним и тем же хешкодом, по какому принципу строится бинарное дерево в бакете?
@pandadzho4223
@pandadzho4223 Ай бұрын
Паш, напиши пожалуйста что у тебя за кресло, какая модель и насколько удобное? И спасибо за видео!
@sorokinpavel
@sorokinpavel Ай бұрын
Привет) Кресло от zone51, мне удобно. Но я советую тебе самому лично кресло проверять, удобность - субъективное ощущуение
@pandadzho4223
@pandadzho4223 Ай бұрын
Благодарю 🤝​@@sorokinpavel
@ovsyannikovo
@ovsyannikovo Ай бұрын
Во все методы передается параметр операция и нет никакого UserId для связи с пользователем. Хотелось бы увидеть правильное решение от самого интервьюера
@sorokinpavel
@sorokinpavel Ай бұрын
Будет видео с решением этой задачи от меня, ориентировочно на следующей неделе
@ovsyannikovo
@ovsyannikovo Ай бұрын
@@sorokinpavel спасибо, обсудим))
@Alex888mount
@Alex888mount Ай бұрын
Супер!
@hurricane-rus
@hurricane-rus Ай бұрын
Спасибо за видео! Следующий проект сделаете по Spring Boot и без вывода сообщений в консоль, чтобы было больше похоже на боевой проект? Несколько раз поймал себя на мысли "а почему это не работает из коробки? Ах да, это же чистый спринг)"...
@sorokinpavel
@sorokinpavel Ай бұрын
Рад, что было полезно! Да, это базовое видео для понимания основ спринга, без http и spring boot. Потом возможно сделаю по spring boot похожее
@user-gk2kn3ri7z
@user-gk2kn3ri7z Ай бұрын
Я с подобной задачей столкнулся на собеседовании, в смысле с такой же непонятной. Мне интервьюер объяснял почти всё время решения, и еще сетовал - да, тут все ничего не понимают, а решалось за две строчки. Это показывает уровень интервьюера:)))
@user-gk2kn3ri7z
@user-gk2kn3ri7z Ай бұрын
Я смотрел на скорости 1,5, и это было медленно. Представляю, как это было в реальности:)))
@sorokinpavel
@sorokinpavel Ай бұрын
Не надо представлять, включи х1 и послушай
@denalg5712
@denalg5712 Ай бұрын
Молодец, не останавливайся! Понравились видео где делаешь «проекты», «ботов» и т. д. Я недавно решил изучать Java и такие видео где объясняют доступно очень мало. Спасибо за такие видео.
@sorokinpavel
@sorokinpavel Ай бұрын
Спасибо большое!
@alekseyfrozis937
@alekseyfrozis937 Ай бұрын
а у тебя заработал тот бот с урока?
@sorokinpavel
@sorokinpavel Ай бұрын
Всем спасибо за фидбек!) Еще статьи, анонсы, и актуальная связь со мной в тг: t.me/S0R0KlN
@blazedenshinobu
@blazedenshinobu Ай бұрын
Кайф! Спасибо. Очень ценное видео
@TheWaRmeN13
@TheWaRmeN13 Ай бұрын
Использование api openai возможно только при подписке? Какие там лимиты по итогу будут?
@sorokinpavel
@sorokinpavel Ай бұрын
Подписка не нужна, нужно на счет openAI закинуть денег, 5 долларов будет достаточно там
@TheWaRmeN13
@TheWaRmeN13 Ай бұрын
@@sorokinpavel понял. Я прост думал, что с подпиской будет какая бесплатная квота, а уже потом тариф начнёт работать
@TheWaRmeN13
@TheWaRmeN13 17 күн бұрын
@@sorokinpavel ты закидывал деньги на счет с помощью сервиса какого-то? русские карты ведь не принимает
@dfirst282
@dfirst282 Ай бұрын
В избранное)
@666kirillka
@666kirillka Ай бұрын
О,ну это лайк
@wildjoe6259
@wildjoe6259 Ай бұрын
Спасибо!
@iFunkyJuice
@iFunkyJuice Ай бұрын
31:25 - Пессимистические блокировки это не бесплатно, это ресурс на стороне БД и весьма дорогой.
@sorokinpavel
@sorokinpavel Ай бұрын
Согласен с тем, что это не бесплатно. Любое решение - не бесплатно. "весьма дорогой" - субъективная оценка. Дороже, чем что?