Как научиться правильно разрабатывать и запускать приложения в K8s? Есть несколько путей, но, пожалуй, самый быстрый — это пройти трёхдневный онлайн-интенсив «Kubernetes для разработчиков» от Слёрм.
Чем ещё хорош этот путь?
– Материал курса основан на практическом опыте. Учим тому, что делаем на своих проектах.
– Никаких админских штучек и историй про обслуживание кластера. Только инструментарий и знания, которые требуются разработчикам.
– Никто не уйдёт без результата. Спикеры и техподдержка помогут каждому студенту справиться с заданиями.
Интенсив стартует 3 марта. Сейчас можно записаться по минимальной цене – 20 000 рублей.
Посмотреть программу и подать заявку.
Чем ещё хорош этот путь?
– Материал курса основан на практическом опыте. Учим тому, что делаем на своих проектах.
– Никаких админских штучек и историй про обслуживание кластера. Только инструментарий и знания, которые требуются разработчикам.
– Никто не уйдёт без результата. Спикеры и техподдержка помогут каждому студенту справиться с заданиями.
Интенсив стартует 3 марта. Сейчас можно записаться по минимальной цене – 20 000 рублей.
Посмотреть программу и подать заявку.
❹ ❌👨🎓4 мифа о профессии программиста, в которые вы почему-то еще верите
В этой статье эксперты SkillFactory опровергают расхожие мифы о профессии программиста и подсказывают, что делать дальше.
https://proglib.io/sh/TSlahZCnF7
В этой статье эксперты SkillFactory опровергают расхожие мифы о профессии программиста и подсказывают, что делать дальше.
https://proglib.io/sh/TSlahZCnF7
Напиши свою первую программу💻 на одном из самых востребованных языков программирования — Java. Занятия бесплатные, а опыт, который ты получишь, поможет понять, в каком направлении двигаться дальше.
Регистрация займёт меньше минуты: 👉 https://clc.to/L73zJQ
🔥 Углубишь знания о Java.
🔥 Попрактикуешься в разработке и создашь первый проект — программу для мониторинга рабочего стола.
🔥 Узнаешь о базовых инструментах, которые применяют программисты.
🔥 Сможешь общаться с преподавателем интенсива и другими участниками в закрытом чате в Telegram.
☝️ 3 дня тебя будет обучать профи в своём деле, директор центра SymbioWay, который уже более 15 лет работает в сфере Java и веб-разработки и находит IT-специалистов для крупнейших компаний России — Даниил Пилипенко.
⭐️ Пройди бесплатный онлайн-интенсив с 30 ноября по 2 декабря в 19:00 по московскому времени. Попади в тройку лучших участников и получи сертификат на 30 000 рублей для обучения в Skillbox!
Регистрация займёт меньше минуты: 👉 https://clc.to/L73zJQ
🔥 Углубишь знания о Java.
🔥 Попрактикуешься в разработке и создашь первый проект — программу для мониторинга рабочего стола.
🔥 Узнаешь о базовых инструментах, которые применяют программисты.
🔥 Сможешь общаться с преподавателем интенсива и другими участниками в закрытом чате в Telegram.
☝️ 3 дня тебя будет обучать профи в своём деле, директор центра SymbioWay, который уже более 15 лет работает в сфере Java и веб-разработки и находит IT-специалистов для крупнейших компаний России — Даниил Пилипенко.
⭐️ Пройди бесплатный онлайн-интенсив с 30 ноября по 2 декабря в 19:00 по московскому времени. Попади в тройку лучших участников и получи сертификат на 30 000 рублей для обучения в Skillbox!
#вопросы_с_собеседований
В чем разница между PrintWriter и ServletOutputStream?
В чем разница между PrintWriter и ServletOutputStream?
📌 Линейная алгебра для начинающих с примерами. Лекция преподавателя МГУ
Линейная алгебра: матрицы и операции над ними. Системы линейных уравнений — исследование и решение, метод Гаусса, геометрический подход.
https://youtu.be/ojJG1Kjy8tM
Присоединяйтесь к полному курсу по ссылке.
Линейная алгебра: матрицы и операции над ними. Системы линейных уравнений — исследование и решение, метод Гаусса, геометрический подход.
https://youtu.be/ojJG1Kjy8tM
Присоединяйтесь к полному курсу по ссылке.
YouTube
Линейная алгебра для начинающих с примерами. Лекция преподавателя МГУ
Линейная алгебра: матрицы и операции над ними. Системы линейных уравнений — исследование и решение, метод Гаусса, геометрический подход
Сайт издания «Библиотека программиста» — https://proglib.io
Оставить заявку на курс «Математика для Data Science» можно…
Сайт издания «Библиотека программиста» — https://proglib.io
Оставить заявку на курс «Математика для Data Science» можно…
PrintWriter — класс для работы с символьным потоком, экземпляр которого можно получить через метод ServletResponse getWriter();
ServletOutputStream — класс для работы байтовым потоком. Для получения его экземпляра используется метод ServletResponse getOutputStream().
ServletOutputStream — класс для работы байтовым потоком. Для получения его экземпляра используется метод ServletResponse getOutputStream().
#вопросы_с_собеседований
В каких состояниях может находиться поток?
В каких состояниях может находиться поток?
Потоки могут находиться в одном из следующих состояний:
Новый (New). После создания экземпляра потока, он находится в состоянии Новый до тех пор, пока не вызван метод start(). В этом состоянии поток не считается живым.
Работоспособный (Runnable). Поток переходит в состояние Работоспособный, когда вызывается метод start(). Поток может перейти в это состояние также из состояния Работающий или из состояния Блокирован. Когда поток находится в этом состоянии, он считается живым.
Работающий (Running). Поток переходит из состояния Работоспособный в состояние Работающий, когда Планировщик потоков выбирает его как работающий в данный момент.
Живой, но не работоспособный (Alive, but not runnable). Поток может быть живым, но не работоспособным по нескольким причинам:
Ожидание (Waiting). Поток переходит в состояние Ожидания, вызывая метод wait(). Вызов notify() или notifyAll() может перевести поток из состояния Ожидания в состояние Работоспособный.
Сон (Sleeping). Метод sleep() переводит поток в состояние Сна на заданный промежуток времени в миллисекундах.
Блокировка (Blocked). Поток может перейти в это состояние, в ожидании ресурса, такого как ввод/вывод или из-за блокировки другого объекта. В этом случае поток переходит в состояние Работоспособный, когда ресурс становится доступен.
Мёртвый (Dead). Поток считается мёртвым, когда его метод run() полностью выполнен. Мёртвый поток не может перейти ни в какое другое состояние, даже если для него вызван метод start().
Новый (New). После создания экземпляра потока, он находится в состоянии Новый до тех пор, пока не вызван метод start(). В этом состоянии поток не считается живым.
Работоспособный (Runnable). Поток переходит в состояние Работоспособный, когда вызывается метод start(). Поток может перейти в это состояние также из состояния Работающий или из состояния Блокирован. Когда поток находится в этом состоянии, он считается живым.
Работающий (Running). Поток переходит из состояния Работоспособный в состояние Работающий, когда Планировщик потоков выбирает его как работающий в данный момент.
Живой, но не работоспособный (Alive, but not runnable). Поток может быть живым, но не работоспособным по нескольким причинам:
Ожидание (Waiting). Поток переходит в состояние Ожидания, вызывая метод wait(). Вызов notify() или notifyAll() может перевести поток из состояния Ожидания в состояние Работоспособный.
Сон (Sleeping). Метод sleep() переводит поток в состояние Сна на заданный промежуток времени в миллисекундах.
Блокировка (Blocked). Поток может перейти в это состояние, в ожидании ресурса, такого как ввод/вывод или из-за блокировки другого объекта. В этом случае поток переходит в состояние Работоспособный, когда ресурс становится доступен.
Мёртвый (Dead). Поток считается мёртвым, когда его метод run() полностью выполнен. Мёртвый поток не может перейти ни в какое другое состояние, даже если для него вызван метод start().
#вопросы_с_собеседований
Назовите основные характеристики шаблонов.
Назовите основные характеристики шаблонов.
Имя - все шаблоны имеют уникальное имя, служащее для их идентификации;
Назначение данного шаблона;
Задача - задача, которую шаблон позволяет решить;
Способ решения - способ, предлагаемый в шаблоне для решения задачи в том контексте, где этот шаблон был найден;
Участники - сущности, принимающие участие в решении задачи;
Следствия - последствия от использования шаблона как результат действий, выполняемых в шаблоне;
Реализация - возможный вариант реализации шаблона.
Назначение данного шаблона;
Задача - задача, которую шаблон позволяет решить;
Способ решения - способ, предлагаемый в шаблоне для решения задачи в том контексте, где этот шаблон был найден;
Участники - сущности, принимающие участие в решении задачи;
Следствия - последствия от использования шаблона как результат действий, выполняемых в шаблоне;
Реализация - возможный вариант реализации шаблона.
#вопросы_с_собеседований
Какие типы классов бывают в java?
Какие типы классов бывают в java?
☕️ Top level class (Обычный класс):
Abstract class (Абстрактный класс);
Final class (Финализированный класс).
☕️ Interfaces (Интерфейс).
☕️ Enum (Перечисление).
☕️ Nested class (Вложенный класс):
Static nested class (Статический вложенный класс);
Member inner class (Простой внутренний класс);
Local inner class (Локальный класс);
Anonymous inner class (Анонимный класс).
Abstract class (Абстрактный класс);
Final class (Финализированный класс).
☕️ Interfaces (Интерфейс).
☕️ Enum (Перечисление).
☕️ Nested class (Вложенный класс):
Static nested class (Статический вложенный класс);
Member inner class (Простой внутренний класс);
Local inner class (Локальный класс);
Anonymous inner class (Анонимный класс).
#вопросы_с_собеседований
В чем разница между HashMap и WeakHashMap? Для чего используется WeakHashMap?
В чем разница между HashMap и WeakHashMap? Для чего используется WeakHashMap?
В Java существует 4 типа ссылок: сильные (strong reference), мягкие (SoftReference), слабые (WeakReference) и фантомные (PhantomReference). Особенности каждого типа ссылок связаны с работой Garbage Collector. Если объект можно достичь только с помощью цепочки WeakReference (то есть на него отсутствуют сильные и мягкие ссылки), то данный объект будет помечен на удаление.
WeakHashMap - это структура данных, реализующая интерфейс Map и основанная на использовании WeakReference для хранения ключей. Таким образом, пара «ключ-значение» будет удалена из WeakHashMap, если на объект-ключ более не имеется сильных ссылок.
В качестве примера использования такой структуры данных можно привести следующую ситуацию: допустим имеются объекты, которые необходимо расширить дополнительной информацией, при этом изменение класса этих объектов нежелательно либо невозможно. В этом случае добавляем каждый объект в WeakHashMap в качестве ключа, а в качестве значения - нужную информацию. Таким образом, пока на объект имеется сильная ссылка (либо мягкая), можно проверять хэш-таблицу и извлекать информацию. Как только объект будет удален, то WeakReference для этого ключа будет помещен в ReferenceQueue и затем соответствующая запись для этой слабой ссылки будет удалена из WeakHashMap.
WeakHashMap - это структура данных, реализующая интерфейс Map и основанная на использовании WeakReference для хранения ключей. Таким образом, пара «ключ-значение» будет удалена из WeakHashMap, если на объект-ключ более не имеется сильных ссылок.
В качестве примера использования такой структуры данных можно привести следующую ситуацию: допустим имеются объекты, которые необходимо расширить дополнительной информацией, при этом изменение класса этих объектов нежелательно либо невозможно. В этом случае добавляем каждый объект в WeakHashMap в качестве ключа, а в качестве значения - нужную информацию. Таким образом, пока на объект имеется сильная ссылка (либо мягкая), можно проверять хэш-таблицу и извлекать информацию. Как только объект будет удален, то WeakReference для этого ключа будет помещен в ReferenceQueue и затем соответствующая запись для этой слабой ссылки будет удалена из WeakHashMap.
#вопросы_с_собеседований
Даны 3 потока: Т1, Т2 и Т3. Как реализовать выполнение в последовательности Т1, Т2, Т3?
Даны 3 потока: Т1, Т2 и Т3. Как реализовать выполнение в последовательности Т1, Т2, Т3?
Декабрьский интенсив по SRE🦎
Формат: онлайн-интенсив (Zoom, записи занятий, git, стенды для практики, техподдержка и помощь спикеров).
На интенсиве разбираем SRE-подход к разработке и эксплуатации высоконагруженного сайта:
✔️будем настраивать и поддерживать сайт из нескольких микросервисов.
✔️сформулируем показатели SLO, SLI, SLA, разработаем архитектуру и инфраструктуру, соберем, протестируем и задеплоим сайт, настроим мониторинг и алертинг.
✔️определим причины ухудшения SLO, разберем устойчивость, error budget, практику тестирования, управление прерываниями и операционной нагрузкой.
✔️проработаем порядок действий в случае аварии.
✔️примем решения по дальнейшему предотвращению инцидентов.
Дата интенсива: 11–13 декабря 2020
Программа и регистрация на сайте - https://slurm.club/2HOUErw
Формат: онлайн-интенсив (Zoom, записи занятий, git, стенды для практики, техподдержка и помощь спикеров).
На интенсиве разбираем SRE-подход к разработке и эксплуатации высоконагруженного сайта:
✔️будем настраивать и поддерживать сайт из нескольких микросервисов.
✔️сформулируем показатели SLO, SLI, SLA, разработаем архитектуру и инфраструктуру, соберем, протестируем и задеплоим сайт, настроим мониторинг и алертинг.
✔️определим причины ухудшения SLO, разберем устойчивость, error budget, практику тестирования, управление прерываниями и операционной нагрузкой.
✔️проработаем порядок действий в случае аварии.
✔️примем решения по дальнейшему предотвращению инцидентов.
Дата интенсива: 11–13 декабря 2020
Программа и регистрация на сайте - https://slurm.club/2HOUErw
❓ Можно ли заменить настольный компьютер на Raspberry Pi 4?
В этой статье познакомимся с Raspberry Pi 4 и ответим на вопрос, сможет ли «Малина» заменить десктоп. Спойлер: на 90% – нет.
https://proglib.io/sh/WEJoq7CyFV
В этой статье познакомимся с Raspberry Pi 4 и ответим на вопрос, сможет ли «Малина» заменить десктоп. Спойлер: на 90% – нет.
https://proglib.io/sh/WEJoq7CyFV
Spring Security in Action (2020)
Автор: Laurentiu Spilca
Количество страниц: 560
Автор показывает, как предотвратить атаки с использованием межсайтовых скриптов и подделки запросов до того, как они нанесут ущерб. Вы начнете с основ, моделируя обновление паролей и добавляя несколько типов авторизации. По мере роста ваших навыков вы адаптируете Spring к новым архитектурам и создадите расширенные конфигурации OAuth2. К концу работы с книгой у вас будет настроенная конфигурация, которая защитит от угроз.
Скачать книгу
Автор: Laurentiu Spilca
Количество страниц: 560
Автор показывает, как предотвратить атаки с использованием межсайтовых скриптов и подделки запросов до того, как они нанесут ущерб. Вы начнете с основ, моделируя обновление паролей и добавляя несколько типов авторизации. По мере роста ваших навыков вы адаптируете Spring к новым архитектурам и создадите расширенные конфигурации OAuth2. К концу работы с книгой у вас будет настроенная конфигурация, которая защитит от угроз.
Скачать книгу
Telegram
Книги для программистов (reserved)
Spring Security in Action (2020)
Автор: Laurentiu Spilca
Автор: Laurentiu Spilca
Начни карьеру востребованного Java разработчика с наставниками из Java Mentor. Гарантированное трудоустройство в IT и оплата только за результат, когда начнешь работать.
Пройти входное тестирование: https://clck.ru/SDmoi
Тебя ждет высокая зарплата в топовых компаниях Москвы и минимум 10 предложений о работе. А еще 2 года карьерной поддержки с бесплатной возможностью принимать участие в онлайн и оффлайн мероприятиях с экспертами рынка.
Пройти входное тестирование: https://clck.ru/SDmoi
Тебя ждет высокая зарплата в топовых компаниях Москвы и минимум 10 предложений о работе. А еще 2 года карьерной поддержки с бесплатной возможностью принимать участие в онлайн и оффлайн мероприятиях с экспертами рынка.
Ответ на вопрос
Такой последовательности выполнения можно достичь многими способами, например, просто воспользоваться методом join(), чтобы запустить поток в момент, когда другой уже закончит своё выполнение. Для реализации заданной последовательности, нужно запустить последний поток первым, и затем вызывать метод join() в обратном порядке, то есть Т3 вызывает Т2.join, а Т2 вызывает Т1.join, таким образом Т1 закончит выполнение первым, а Т3 последним.
Такой последовательности выполнения можно достичь многими способами, например, просто воспользоваться методом join(), чтобы запустить поток в момент, когда другой уже закончит своё выполнение. Для реализации заданной последовательности, нужно запустить последний поток первым, и затем вызывать метод join() в обратном порядке, то есть Т3 вызывает Т2.join, а Т2 вызывает Т1.join, таким образом Т1 закончит выполнение первым, а Т3 последним.
Telegram
Библиотека джависта
#вопросы_с_собеседований
Даны 3 потока: Т1, Т2 и Т3. Как реализовать выполнение в последовательности Т1, Т2, Т3?
Даны 3 потока: Т1, Т2 и Т3. Как реализовать выполнение в последовательности Т1, Т2, Т3?