Вчера записал весь лайв-кодинг для следующего выпуска про JWT - будет большое видео про Plain, Signed, и Encrypted JWT. Осталось смонтировать и опубликовать.
Пока вы ждете видео, хочу поделиться статьей про баг, который команда Netflix обнаружила в Virtual Threads - https://netflixtechblog.com/java-21-virtual-threads-dude-wheres-my-lock-3052540e231d
Пока вы ждете видео, хочу поделиться статьей про баг, который команда Netflix обнаружила в Virtual Threads - https://netflixtechblog.com/java-21-virtual-threads-dude-wheres-my-lock-3052540e231d
Medium
Java 21 Virtual Threads - Dude, Where’s My Lock?
Getting real with virtual threads
🔥5👍3
JWT & Spring Security - Weekly Tips 18
🧑💻 Лайвкодинг - первая вводная сессия про JWT. Кажется, это просто json закодированный в base64 и разделенный точками, однако, на самом деле, все гораздо сложнее. Особенно, когда необходимо удостовериться, что токен по дороге никто не поменял, не перехватил, и вообще не попытался прочитать.
Видео довольно длинное и покрывает три важные аспекта:
* Spring Security Resource Server - входная точка в мир JWT.
* PlainJWT, SignedJWT, и EncryptedJWT как три последовательно усложняющихся способа защититься от перехвата и подмены токена.
* RSA & AES - ключики и подписи.
Заваривайте крепкий кофе, включайте видео и пишите комментарии.
Видео получилось длинным и не уместилось в 4ГБ в хорошем качестве. Для телеграма я пережал в 720р, если качество не очень - на Бусти и YouTube полная версия видео доступна без ограничений.
Ссылки: Ссылка на код на GitHub | Patreon (если вы не в России) | Boosty (если вы в России) | #SpringFramework
🧑💻 Лайвкодинг - первая вводная сессия про JWT. Кажется, это просто json закодированный в base64 и разделенный точками, однако, на самом деле, все гораздо сложнее. Особенно, когда необходимо удостовериться, что токен по дороге никто не поменял, не перехватил, и вообще не попытался прочитать.
Видео довольно длинное и покрывает три важные аспекта:
* Spring Security Resource Server - входная точка в мир JWT.
* PlainJWT, SignedJWT, и EncryptedJWT как три последовательно усложняющихся способа защититься от перехвата и подмены токена.
* RSA & AES - ключики и подписи.
Заваривайте крепкий кофе, включайте видео и пишите комментарии.
Видео получилось длинным и не уместилось в 4ГБ в хорошем качестве. Для телеграма я пережал в 720р, если качество не очень - на Бусти и YouTube полная версия видео доступна без ограничений.
Ссылки: Ссылка на код на GitHub | Patreon (если вы не в России) | Boosty (если вы в России) | #SpringFramework
Media is too big
VIEW IN TELEGRAM
👍9
Search in rotated sorted array - LeetCode with me 32
Search in rotated sorted array очень похоже на "сон для усталых взрослых людей", так как задачка не сложная - обычный бинарный поиск с дополнительной проверкой на излом массива.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Search in rotated sorted array очень похоже на "сон для усталых взрослых людей", так как задачка не сложная - обычный бинарный поиск с дополнительной проверкой на излом массива.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
👍4🔥3
JWT and Spring Authorization Server - Weekly Tips 19
🧑💻 Лайвкодинг - второе видео про JWT. В этот раз будем создавать JWT через Spring Authorization Server, посмотрим как используется JWKS для проверки подписей токенов и как можно сделать multitenancy для разных issuer-ов.
Заваривайте крепкий кофе, включайте видео и пишите комментарии.
Ссылки: Ссылка на код на GitHub | Patreon (если вы не в России) | Boosty (если вы в России) | #SpringFramework
🧑💻 Лайвкодинг - второе видео про JWT. В этот раз будем создавать JWT через Spring Authorization Server, посмотрим как используется JWKS для проверки подписей токенов и как можно сделать multitenancy для разных issuer-ов.
Заваривайте крепкий кофе, включайте видео и пишите комментарии.
Ссылки: Ссылка на код на GitHub | Patreon (если вы не в России) | Boosty (если вы в России) | #SpringFramework
Media is too big
VIEW IN TELEGRAM
👍7
Find First and Last Position of Element in Sorted Array - LeetCode with me 33
В описании задачи явно упоминается, что сложность алгоритма должна быть O(log n). Те, кто смотрят канал давно, сразу могут догадаться, что речь идет про бинарный поиск. Так как нужно найти одновременно индексы первого и последнего повторяющегося элемента, стандартный бинарный поиск придется немного модифицировать. Именно этим и займемся.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
В описании задачи явно упоминается, что сложность алгоритма должна быть O(log n). Те, кто смотрят канал давно, сразу могут догадаться, что речь идет про бинарный поиск. Так как нужно найти одновременно индексы первого и последнего повторяющегося элемента, стандартный бинарный поиск придется немного модифицировать. Именно этим и займемся.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
🔥5❤2
System Design Interview - Designing Google Docs
An old friend of mine Vladimir Ivanov from the @architectureweekly channel asked me join the system design session and come up with an idea on how to make a new Google Docs. I think the session was fruitful and interesting, due to the limited time we didn't manage to discuss all the topics but still I think the session was useful.
Ссылки: Канал Architecture Weekly | Patreon (если вы не в России) | Boosty (если вы в России) | #SystemDesign
An old friend of mine Vladimir Ivanov from the @architectureweekly channel asked me join the system design session and come up with an idea on how to make a new Google Docs. I think the session was fruitful and interesting, due to the limited time we didn't manage to discuss all the topics but still I think the session was useful.
Ссылки: Канал Architecture Weekly | Patreon (если вы не в России) | Boosty (если вы в России) | #SystemDesign
Media is too big
VIEW IN TELEGRAM
❤2👍2
Find Insert Position - LeetCode with me 34
Еще одна задачка на бинарный поиск. Точнее, по совокупности маркеров в задании удалось это быстро обнаружить и решить сразу подходящим алгоритмом. Отличие от обычного поиска состоит в том, что если значение в массиве не нашлось, то возвращаем позицию, где оно могло бы быть, а не -1 как обычно.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Еще одна задачка на бинарный поиск. Точнее, по совокупности маркеров в задании удалось это быстро обнаружить и решить сразу подходящим алгоритмом. Отличие от обычного поиска состоит в том, что если значение в массиве не нашлось, то возвращаем позицию, где оно могло бы быть, а не -1 как обычно.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
🔥3👍2❤1
Работа с Zip-архивами - Weekly Tips 20
🧑💻 Лайвкодинг - работа с Zip-архивами в Java. Удивительно, но API для работы с ними есть в Java начиная с версии 1.1 и сегодня я покажу как создать архив, получить список файлов и извлечь файл из архива.
Постепенно готовлю новый более сложный выпуск, а пока повторяем Java core.
Ссылки: Ссылка на код на GitHub | Patreon (если вы не в России) | Boosty (если вы в России) | #Java
🧑💻 Лайвкодинг - работа с Zip-архивами в Java. Удивительно, но API для работы с ними есть в Java начиная с версии 1.1 и сегодня я покажу как создать архив, получить список файлов и извлечь файл из архива.
Постепенно готовлю новый более сложный выпуск, а пока повторяем Java core.
Ссылки: Ссылка на код на GitHub | Patreon (если вы не в России) | Boosty (если вы в России) | #Java
Media is too big
VIEW IN TELEGRAM
👍5❤2
Valid Sudoku - LeetCode with me 35
Проверяем судоку на валидность. Есть решать задачку в лоб, ровно так, как написано в условии, то добиться высоких результатов, ожидаемо, не получится. Подход без использования вспомогательных структур данных позволяет получить 100% результат и именно его будем реализовывать.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Проверяем судоку на валидность. Есть решать задачку в лоб, ровно так, как написано в условии, то добиться высоких результатов, ожидаемо, не получится. Подход без использования вспомогательных структур данных позволяет получить 100% результат и именно его будем реализовывать.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
👍3
Всем привет, это Александр Бармин.
Спасибо, что вы со мной все это время. К сожалению, в силу сложившихся обстоятельств я больше не могу выпускать видео два раза в неделю и, скорее всего, уйду на некоторое время в отпуск. Выпуски с решением задачек с LeetCode будут, как и раньше, выходить раз в неделю по понедельникам.
Я хочу обратиться к моим подписчикам на Boosty уровня «Senior-помидор» - спасибо большое, что вы со мной. Я больше не могу поддерживать такой высокий тем выпуска видео и поэтому прошу вас перейти с уровня поддержки «Senior-помидор» на обычный уровень. Это будет честно.
Скорее всего, в ближайшие несколько недель вернется текстовый формат со ссылками - мне самому его очень не хватает.
Остаемся на связи и пишем на Java! Ставьте лайки, пишите комментарии, увидимся.
Спасибо, что вы со мной все это время. К сожалению, в силу сложившихся обстоятельств я больше не могу выпускать видео два раза в неделю и, скорее всего, уйду на некоторое время в отпуск. Выпуски с решением задачек с LeetCode будут, как и раньше, выходить раз в неделю по понедельникам.
Я хочу обратиться к моим подписчикам на Boosty уровня «Senior-помидор» - спасибо большое, что вы со мной. Я больше не могу поддерживать такой высокий тем выпуска видео и поэтому прошу вас перейти с уровня поддержки «Senior-помидор» на обычный уровень. Это будет честно.
Скорее всего, в ближайшие несколько недель вернется текстовый формат со ссылками - мне самому его очень не хватает.
Остаемся на связи и пишем на Java! Ставьте лайки, пишите комментарии, увидимся.
❤11🤝3🔥2👍1
Soduku Solver - LeetCode with me 36
В прошлый раз проверяли судоку на валидность, в этот раз будем решать с использованием алгоритма backtracking.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
В прошлый раз проверяли судоку на валидность, в этот раз будем решать с использованием алгоритма backtracking.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
❤3🔥2
Count and Say - LeetCode with me 37
Несложная задачка с очень сложным описанием - реализуем алгоритм RLE (run-length encoding) или кодирование длин серий. Разберемся с условием и реализуем.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Несложная задачка с очень сложным описанием - реализуем алгоритм RLE (run-length encoding) или кодирование длин серий. Разберемся с условием и реализуем.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
👍5❤1
Combination Sum - LeetCode with me 38
Очередная задачка на backtracking - выбрать из массива элементы, которые в сумме дают заданное число. Если представить, что ищем сумму двух элементов, которые вместе дают target, то нужно зафиксировать один элемент, допустим, А, то нужно найти второй, который равен (target - A). С тремя элементами так же - зафиксируем один элемент (А) и будем искать теперь два других, которые в сумме дают (target - A). Для суммы неограниченной длинны делаем несколько итераций, где каждый раз уменьшаем target на значение зафиксированного элемента.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Очередная задачка на backtracking - выбрать из массива элементы, которые в сумме дают заданное число. Если представить, что ищем сумму двух элементов, которые вместе дают target, то нужно зафиксировать один элемент, допустим, А, то нужно найти второй, который равен (target - A). С тремя элементами так же - зафиксируем один элемент (А) и будем искать теперь два других, которые в сумме дают (target - A). Для суммы неограниченной длинны делаем несколько итераций, где каждый раз уменьшаем target на значение зафиксированного элемента.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
🔥7❤2😁1
Combination Sum II - LeetCode with me 39
Очень похоже на задачку, которую мы решали в прошлый раз, на Combination Sum. Основная сложность этой задачи состоит в том, что теперь исходные данные могут содержать дубликаты, а в результатах дубликатов быть не должно. Можем использовать структуры данных вроде множеств, который позволяют от дубликатов избавиться, либо отсортируем входные данные и будем пропускать дубликаты.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Очень похоже на задачку, которую мы решали в прошлый раз, на Combination Sum. Основная сложность этой задачи состоит в том, что теперь исходные данные могут содержать дубликаты, а в результатах дубликатов быть не должно. Можем использовать структуры данных вроде множеств, который позволяют от дубликатов избавиться, либо отсортируем входные данные и будем пропускать дубликаты.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
👍5❤2
First Missing Positive - LeetCode with me 40
Задачка уровня Hard на поиск первого положительного пропуска в массиве. Рассмотрим два решения - очевидное и оптимальное, используем циклическую сортировку.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Задачка уровня Hard на поиск первого положительного пропуска в массиве. Рассмотрим два решения - очевидное и оптимальное, используем циклическую сортировку.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
🔥4
Trapping Rain Water - LeetCode with me 41
Задачка уровня Hard на вычисление количества воды, которую можно налить на поверхность нестабильной высоты. Задача выглядит сложной, но, по факту, два указателя и вычисление локального минимума.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Задачка уровня Hard на вычисление количества воды, которую можно налить на поверхность нестабильной высоты. Задача выглядит сложной, но, по факту, два указателя и вычисление локального минимума.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
👍3❤1
Multiply Strings - LeetCode with me 42
Следующая задачка уже среднего уровня сложности на длинную арифметику - нужно умножить два числа представленные в виде строк. Применим метод, известный каждому еще со школы - умножение столбиком.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Следующая задачка уже среднего уровня сложности на длинную арифметику - нужно умножить два числа представленные в виде строк. Применим метод, известный каждому еще со школы - умножение столбиком.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
👍4
Wildcard Matching - LeetCode with me 43
Еще одна сложная задача на написание собственного ограниченного движка регулярных выражений. Сначала попробуем применить наиболее логичный подход - класс Pattern, затем реализуем тривиальное решение, а затем решение на базе динамического программирования.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Еще одна сложная задача на написание собственного ограниченного движка регулярных выражений. Сначала попробуем применить наиболее логичный подход - класс Pattern, затем реализуем тривиальное решение, а затем решение на базе динамического программирования.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
❤4🔥3👍2
Forwarded from javaswag
https://javaswag.github.io/episode/72/
Слушать подкаст в Apple | Spotify | Yandex
В 72 выпуске подкаста Javaswag поговорили с Александром Барминым о Спринге и архитектуре Необанка
00:00 Начало
05:34 Значение доменной области в разработке
17:28 IBM FileNet и Java EE
22:45 Проблемы и эволюция Java EE
32:50 Spring и Spring Boot
48:10 Миграция между версиями Spring
56:05 Гибкость и сложности Spring Boot
01:01:02 Адаптация Spring к современным трендам
01:04:50 Проблемы зависимости от Spring
01:07:10 Конкуренция и эволюция Spring
01:14:49 Kotlin и Spring: синергия технологий
01:15:44 Эволюция TransferWise в Neobank
01:16:36 Архитектура Wise: микросервисы и AWS
01:19:21 Kubernetes и проблемы распределенных систем
01:24:55 Консистентность и механизмы реконсиляции
01:29:08 Управление микросервисами и версиями
01:33:20 Автоматизация обновления зависимостей
01:37:07 CI/CD и миграции баз данных
01:41:17 Деплой
01:46:49 Непопулярное мнение о языках программирования
01:50:00 Критика Spring Boot и его магии
Гость https://www.linkedin.com/in/abarmin/
Ссылки:
Канал Александра на YouTube - https://www.youtube.com/@ABarmin
Канал Java & Spring Weekly в Telegram - @java_weekly
Wise Tech Stack - https://medium.com/wise-engineering/wise-tech-stack-2022-edition-a6ac089a382f
Spring Cloud с Борисовым - https://youtu.be/4tSyz_v9w7Q
Кип сейф! 🖖
Слушать подкаст в Apple | Spotify | Yandex
В 72 выпуске подкаста Javaswag поговорили с Александром Барминым о Спринге и архитектуре Необанка
00:00 Начало
05:34 Значение доменной области в разработке
17:28 IBM FileNet и Java EE
22:45 Проблемы и эволюция Java EE
32:50 Spring и Spring Boot
48:10 Миграция между версиями Spring
56:05 Гибкость и сложности Spring Boot
01:01:02 Адаптация Spring к современным трендам
01:04:50 Проблемы зависимости от Spring
01:07:10 Конкуренция и эволюция Spring
01:14:49 Kotlin и Spring: синергия технологий
01:15:44 Эволюция TransferWise в Neobank
01:16:36 Архитектура Wise: микросервисы и AWS
01:19:21 Kubernetes и проблемы распределенных систем
01:24:55 Консистентность и механизмы реконсиляции
01:29:08 Управление микросервисами и версиями
01:33:20 Автоматизация обновления зависимостей
01:37:07 CI/CD и миграции баз данных
01:41:17 Деплой
01:46:49 Непопулярное мнение о языках программирования
01:50:00 Критика Spring Boot и его магии
Гость https://www.linkedin.com/in/abarmin/
Ссылки:
Канал Александра на YouTube - https://www.youtube.com/@ABarmin
Канал Java & Spring Weekly в Telegram - @java_weekly
Wise Tech Stack - https://medium.com/wise-engineering/wise-tech-stack-2022-edition-a6ac089a382f
Spring Cloud с Борисовым - https://youtu.be/4tSyz_v9w7Q
Кип сейф! 🖖
Javaswag
#72 - Александр Бармин - эволюция Спринга и архитектура Необанка
В 72 выпуске подкаста Javaswag поговорили с Александром Барминым о Спринге и архитектуре Необанка
🔥12
Jump Game II - LeetCode with me 44
Задача на динамическое программирование. Иногда кажется, что самые быстрые алгоритмы на LeetCode это далеко не самые правильные или подходящие, поэтому рассмотрим сначала хороший алгоритм, а потом быстрый.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Задача на динамическое программирование. Иногда кажется, что самые быстрые алгоритмы на LeetCode это далеко не самые правильные или подходящие, поэтому рассмотрим сначала хороший алгоритм, а потом быстрый.
Ссылки: Ссылка на задачу | Patreon (если вы не в России) | Boosty (если вы в России) | #LeetCode
Media is too big
VIEW IN TELEGRAM
🔥6