🚨 Хотите знать про backend разработку больше, чем ваши коллеги? Глубоко анализировать архитектуру и предвидеть узкие места? Больше не стрессовать на system design собеседованиях?
👨🏻🎓 Меня зовут Андрей Суховицкий. Я разработчик c десятилетним опытом, tech lead, разрабатываю высоконагруженные системы. В 2021 и 2024 годах получил премию, как лучший преподаватель университета ИТМО.
🔥 На своем канале я пишу только о том, что кажется мне интересным, описываю случаи из практики. Темы, которые мне близки: java, kotlin, coroutines, многопоточное программирование, system design, реализация высоконагруженных и надежных систем. Я сам пишу все посты в моем телеграм канале, даже этот не исключение.
🧠 Мои посты затрагивают непростые темы и не всегда написаны простыми словами. Будем говорить с вами, как с профессионалами, тянуть вверх, расширять видение, заставлять задумываться и глубже анализировать пространство решений, делать небольшое усилие над собой, чтобы учиться.
💎 Присоединяйтесь к каналу, если готовы выйти на новый уровень.
👨🏻🎓 Меня зовут Андрей Суховицкий. Я разработчик c десятилетним опытом, tech lead, разрабатываю высоконагруженные системы. В 2021 и 2024 годах получил премию, как лучший преподаватель университета ИТМО.
🔥 На своем канале я пишу только о том, что кажется мне интересным, описываю случаи из практики. Темы, которые мне близки: java, kotlin, coroutines, многопоточное программирование, system design, реализация высоконагруженных и надежных систем. Я сам пишу все посты в моем телеграм канале, даже этот не исключение.
🧠 Мои посты затрагивают непростые темы и не всегда написаны простыми словами. Будем говорить с вами, как с профессионалами, тянуть вверх, расширять видение, заставлять задумываться и глубже анализировать пространство решений, делать небольшое усилие над собой, чтобы учиться.
💎 Присоединяйтесь к каналу, если готовы выйти на новый уровень.
Forwarded from Java Guru 🤓
Какая строка инициализации приведёт к ошибке?
Anonymous Quiz
45%
1
4%
2
5%
3
29%
4
17%
Ошибки не будет
Бесплатный интенсив: Java-разработчик: старт в профессии с нуля.
📆 Когда: 21-22 декабря в 14:00 по мск.
За два дня интенсива в прямом эфире, под руководством опытного Java-разработчика, вы сможете:
✔️ Познакомиться с синтаксисом и основными конструкциями языка Java.
✔️ Написать свой первый проект и определить, подходит ли вам профессия разработчика.
✔️ Создать консольное приложение на Java с интеграцией API Яндекс.Карт для построения маршрутов и поиска информации.
✔️ Узнать ответы на интересующие вас вопросы.
✔️ Получить доступ к закрытому профессиональному сообществу.
🎁 Подарки для участниковинтенсива: гайд «Как заговорить на сленге IT-специалистов», карта компетенций начинающего Java-разработчика и доступ в закрытое сообщество «Старт в Java» от Хекслета!
📆 Когда: 21-22 декабря в 14:00 по мск.
За два дня интенсива в прямом эфире, под руководством опытного Java-разработчика, вы сможете:
✔️ Познакомиться с синтаксисом и основными конструкциями языка Java.
✔️ Написать свой первый проект и определить, подходит ли вам профессия разработчика.
✔️ Создать консольное приложение на Java с интеграцией API Яндекс.Карт для построения маршрутов и поиска информации.
✔️ Узнать ответы на интересующие вас вопросы.
✔️ Получить доступ к закрытому профессиональному сообществу.
🎁 Подарки для участниковинтенсива: гайд «Как заговорить на сленге IT-специалистов», карта компетенций начинающего Java-разработчика и доступ в закрытое сообщество «Старт в Java» от Хекслета!
Класс java.lang
Класс java.lang — это базовый пакет, который автоматически импортируется в любую программу на Java.
Содержит фундаментальные классы, как Object, String, Integer и т. д., определяет общие классы-исключения, такие как NullPointerException, ArithmeticException, класс Math с математическими функциями, System для взаимодействия с системой.
Также включает класс Thread для многопоточного программирования, интерфейсы Cloneable, Runnable, Comparable, определяет класс Class, представляющий классы времени выполнения.
@javalib #java
Класс java.lang — это базовый пакет, который автоматически импортируется в любую программу на Java.
Содержит фундаментальные классы, как Object, String, Integer и т. д., определяет общие классы-исключения, такие как NullPointerException, ArithmeticException, класс Math с математическими функциями, System для взаимодействия с системой.
Также включает класс Thread для многопоточного программирования, интерфейсы Cloneable, Runnable, Comparable, определяет класс Class, представляющий классы времени выполнения.
@javalib #java
Обработка исключений и SOLID
Присоединяйтесь к нашему открытому уроку и погрузитесь в основы обработки исключений и SOLID
🚀На вебинаре вы узнаете:
1. Как реализовать обработку исключений в соответствии с принципами SOLID
2. Как избежать распространения ошибок при обработке исключений
3. Как минимизировать подверженность программного кода изменениям
Практика: На этом вебинаре мы разберём, как грамотно организовать включение исключений в программном коде, следуя принципам SOLID. Вы научитесь писать код, который не только легко поддерживается, но и который надежно обрабатывает ошибки, минимизируя их влияние на работу системы.
👉 Регистрация и подробности о курсе «Архитектура и шаблоны проектирования» https://vk.cc/cFUss2
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Присоединяйтесь к нашему открытому уроку и погрузитесь в основы обработки исключений и SOLID
🚀На вебинаре вы узнаете:
1. Как реализовать обработку исключений в соответствии с принципами SOLID
2. Как избежать распространения ошибок при обработке исключений
3. Как минимизировать подверженность программного кода изменениям
Практика: На этом вебинаре мы разберём, как грамотно организовать включение исключений в программном коде, следуя принципам SOLID. Вы научитесь писать код, который не только легко поддерживается, но и который надежно обрабатывает ошибки, минимизируя их влияние на работу системы.
👉 Регистрация и подробности о курсе «Архитектура и шаблоны проектирования» https://vk.cc/cFUss2
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Schema Registry: сделайте свою работу с Kafka стабильной и удобной
Apache Kafka — ваш инструмент для работы с большими данными. Но как сделать её использование ещё удобнее? Разберёмся с реестром схем (Schema Registry) 19 декабря в 20:00 мск на открытом уроке.
Узнайте, как управлять эволюцией схем в приложениях Kafka и почему это ключ к стабильным и масштабируемым проектам.
Если вы хотите научиться работать с Apache Kafka или уже используете её, но не знаете, как внедрить Schema Registry, этот вебинар поможет навести порядок в данных и оптимизировать процессы.
Спикер Евгений Непомнящий — опытный разработчик и преподаватель.
Регистрируйтесь и получите скидку на большое обучение «Apache Kafka»: https://vk.cc/cFW76W
Apache Kafka — ваш инструмент для работы с большими данными. Но как сделать её использование ещё удобнее? Разберёмся с реестром схем (Schema Registry) 19 декабря в 20:00 мск на открытом уроке.
Узнайте, как управлять эволюцией схем в приложениях Kafka и почему это ключ к стабильным и масштабируемым проектам.
Если вы хотите научиться работать с Apache Kafka или уже используете её, но не знаете, как внедрить Schema Registry, этот вебинар поможет навести порядок в данных и оптимизировать процессы.
Спикер Евгений Непомнящий — опытный разработчик и преподаватель.
Регистрируйтесь и получите скидку на большое обучение «Apache Kafka»: https://vk.cc/cFW76W
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Media is too big
VIEW IN TELEGRAM
Основы маппинга Entity в DTO в Spring: Простое введение!
Узнайте, как правильно маппить Entity в DTO в Spring и защитить свое приложение от утечек данных!
В этом видео мы разбираем основы маппинга в Spring: как преобразовывать Entity в DTO для повышения безопасности и производительности приложения. Мы не будем углубляться в сложные сценарии, такие как связи One-to-Many или Many-to-One — эти темы мы оставим для следующих видео. Если вы только начинаете, это видео станет отличным стартом для освоения базовых принципов!👨💻
📺 🗣 СМОТРЕТЬ RUTUBE
🌐 🗣 СМОТРЕТЬ VKVIDEO
@javalib #java
Узнайте, как правильно маппить Entity в DTO в Spring и защитить свое приложение от утечек данных!
В этом видео мы разбираем основы маппинга в Spring: как преобразовывать Entity в DTO для повышения безопасности и производительности приложения. Мы не будем углубляться в сложные сценарии, такие как связи One-to-Many или Many-to-One — эти темы мы оставим для следующих видео. Если вы только начинаете, это видео станет отличным стартом для освоения базовых принципов!
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
Научитесь этому на бесплатном открытом уроке с использованием Resilience4j!
В мире высоких нагрузок и распределенных систем стабильность — это ключ к успеху.
🗓 На уроке 19 декабря в 20:00 мск мы разберем фреймворк Resilience4j и покажем, как повысить отказоустойчивость ваших приложений.
Спикер Сергей Петрелевич — опытный разработчик на Java и Kotlin.
🔗 Регистрируйтесь на вебинар: https://vk.cc/cFWvsi
Все участники вебинара получат скидку на курс «Java Developer. Professional».
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Отложенная инициализация
Отложенная инициализация — это паттерн проектирования, который позволяет отложить создание объекта до момента его реального использования. Он полезен, когда создание объекта требует значительных ресурсов или происходит в условиях, когда объект может не понадобиться.
В Java есть несколько способов реализации отложенной инициализации. Два наиболее распространенных подхода — это использование двойной проверки и использование внутреннего класса. На картинке мы рассмотрели использование двойной проверки (Double-Checked Locking).
Отложенная инициализация — это паттерн проектирования, который позволяет отложить создание объекта до момента его реального использования. Он полезен, когда создание объекта требует значительных ресурсов или происходит в условиях, когда объект может не понадобиться.
В Java есть несколько способов реализации отложенной инициализации. Два наиболее распространенных подхода — это использование двойной проверки и использование внутреннего класса. На картинке мы рассмотрели использование двойной проверки (Double-Checked Locking).
Блиц-тестирование на грейд в Java
Менторы ШОРТКАТ собрали полезный небольшой тест, который поможет тебе проверить знания.
Конечно, это не определит грейд точно, но даст понять, какие темы западают. За прохождение ещё и дадут скидку на менторство.
Переходи в бот, чтобы пройти тест: @shortcut_sh_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqupYAFB
Менторы ШОРТКАТ собрали полезный небольшой тест, который поможет тебе проверить знания.
Конечно, это не определит грейд точно, но даст понять, какие темы западают. За прохождение ещё и дадут скидку на менторство.
Переходи в бот, чтобы пройти тест: @shortcut_sh_bot
Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqupYAFB
Forwarded from Java Guru 🤓
Как связать микросервисы так, чтобы они работали идеально?
Синхронное взаимодействие или асинхронное? REST или Kafka? На открытом уроке разберём, какой подход нужен именно вашему проекту.
Узнайте, как правильно проектировать связи между микросервисами, чтобы повысить производительность и масштабируемость системы. Разберём реальные кейсы и сравним инструменты.
Спикер Евгений Непомнящий — опытный разработчик и преподаватель.
🔴 Записывайтесь на открытый вебинар 16 декабря в 20:00 мск и получите скидку на большое обучение «Microservice Architecture»: https://vk.cc/cFYmGv
Синхронное взаимодействие или асинхронное? REST или Kafka? На открытом уроке разберём, какой подход нужен именно вашему проекту.
Узнайте, как правильно проектировать связи между микросервисами, чтобы повысить производительность и масштабируемость системы. Разберём реальные кейсы и сравним инструменты.
Спикер Евгений Непомнящий — опытный разработчик и преподаватель.
🔴 Записывайтесь на открытый вебинар 16 декабря в 20:00 мск и получите скидку на большое обучение «Microservice Architecture»: https://vk.cc/cFYmGv
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
FileChannel
FileChannel используется для работы с файлами на низкоуровневом вводе-выводе.
Основные возможности класса FileChannel:
— Чтение данных из файла и запись данных в файл.
— Работа с файлом по смещениям. Можно получить текущее смещение в файле, переместить указатель чтения/записи в нужное смещение.
— Маппинг файлов в память. Файл можно отобразить в память и работать с его содержимым как с массивом байтов.
— Блокировка частей файла. Позволяет защитить критические участки файла от одновременной записи.
— Асинхронная работа с файлами.
FileChannel эффективнее потокового ввода-вывода, т. к. избавляет от накладных расходов на создание объектов и буферизацию.
Используется в приложениях, где нужна высокая производительность работы с файлами.
@javalib #java
FileChannel используется для работы с файлами на низкоуровневом вводе-выводе.
Основные возможности класса FileChannel:
— Чтение данных из файла и запись данных в файл.
— Работа с файлом по смещениям. Можно получить текущее смещение в файле, переместить указатель чтения/записи в нужное смещение.
— Маппинг файлов в память. Файл можно отобразить в память и работать с его содержимым как с массивом байтов.
— Блокировка частей файла. Позволяет защитить критические участки файла от одновременной записи.
— Асинхронная работа с файлами.
FileChannel эффективнее потокового ввода-вывода, т. к. избавляет от накладных расходов на создание объектов и буферизацию.
Используется в приложениях, где нужна высокая производительность работы с файлами.
@javalib #java
Эффективная разработка на Spring Boot без ограничений.
Пока зарубежные компании отзывают лицензии у пользователей РФ, Amplicode продолжает помогать максимально удобно работать со Spring Boot, JPA, Docker, Kafka, Liquibase, MapStruct и т.д.
Amplicode можно установить как плагин в IntelliJ IDEA Community и Ultimate, а также в Giga IDE.
Что умеет Amplicode?
⚡ Легкая навигация по проекту
⚡ Создание объектов сразу в терминах фреймворка: контроллеры, репозитории, сервисы, сущности, события, DTO, мапперы и т.д.
⚡ Палитра и инспектор, позволяющие видеть опции, доступные разработчику в текущем контексте
⚡ Умные инжекции, подсказки и исправление ошибок
⚡ и многое другое!
А самое главное, Amplicode доступен бесплатно и без региональных ограничений!
Познакомьтесь со всеми возможностями Amplicode
Читайте наш гайд: «Как превратить IntelliJ IDEA Community Edition в Ultimate за 3 простых шага»
Пока зарубежные компании отзывают лицензии у пользователей РФ, Amplicode продолжает помогать максимально удобно работать со Spring Boot, JPA, Docker, Kafka, Liquibase, MapStruct и т.д.
Amplicode можно установить как плагин в IntelliJ IDEA Community и Ultimate, а также в Giga IDE.
Что умеет Amplicode?
⚡ Легкая навигация по проекту
⚡ Создание объектов сразу в терминах фреймворка: контроллеры, репозитории, сервисы, сущности, события, DTO, мапперы и т.д.
⚡ Палитра и инспектор, позволяющие видеть опции, доступные разработчику в текущем контексте
⚡ Умные инжекции, подсказки и исправление ошибок
⚡ и многое другое!
А самое главное, Amplicode доступен бесплатно и без региональных ограничений!
Познакомьтесь со всеми возможностями Amplicode
Читайте наш гайд: «Как превратить IntelliJ IDEA Community Edition в Ultimate за 3 простых шага»
Паттерн Цепочка обязанностей (Chain of Responsibility)
Chain of Responsibility — это поведенческий паттерн, который позволяет передавать запросы по цепочке обработчиков, пока один из них не обработает запрос. Каждый обработчик в цепочке решает, может ли он обработать запрос или передать его следующему по цепочке.
Использование:
🔹 Когда нужно избежать жесткой привязки отправителя запроса к получателю.
🔹 Когда запрос должен быть обработан несколькими объектами, но заранее неизвестно, кто именно обработает запрос.
🔹 Когда необходимо гибко настраивать систему, добавляя или убирая обработчиков.
Преимущества:
1️⃣ Ослабляет связанность между объектами, отправляющими запросы, и объектами, обрабатывающими их.
2️⃣ Позволяет динамически добавлять новые обработчики в цепочку.
3️⃣ Способствует соблюдению принципа единственной ответственности, позволяя каждому обработчику заниматься своей задачей.
Недостатки:
1️⃣ Может быть сложнее отслеживать, кто в конечном итоге обработал запрос, особенно при длинных цепочках.
2️⃣ Не гарантирует, что запрос будет обработан, если ни один из обработчиков не способен это сделать.
3️⃣ Может усложнить структуру программы при использовании большого числа обработчиков.
📌 Паттерн полезен, когда необходимо разделить ответственность за обработку запросов между несколькими объектами, не создавая прямых зависимостей между ними.
@javalib #java
Chain of Responsibility — это поведенческий паттерн, который позволяет передавать запросы по цепочке обработчиков, пока один из них не обработает запрос. Каждый обработчик в цепочке решает, может ли он обработать запрос или передать его следующему по цепочке.
Использование:
🔹 Когда нужно избежать жесткой привязки отправителя запроса к получателю.
🔹 Когда запрос должен быть обработан несколькими объектами, но заранее неизвестно, кто именно обработает запрос.
🔹 Когда необходимо гибко настраивать систему, добавляя или убирая обработчиков.
Преимущества:
Недостатки:
📌 Паттерн полезен, когда необходимо разделить ответственность за обработку запросов между несколькими объектами, не создавая прямых зависимостей между ними.
@javalib #java
Please open Telegram to view this post
VIEW IN TELEGRAM
🥂 Код на паузу, шампанское в продакшен: факапы и итоги 2024 года
Встречаемся на новогоднем корпоративе для старых и новых друзей учебного центра Слёрм. Будет как в вашей любимой конторе, только лучше🥸
Дресс-код: заряженное настроение и желание поделиться своими историями. Горячие и холодные напитки приветствуются.
Банда дедов Морозов: Кирилл Борисов, Всеволод Севостьянов и Вячеслав Федосеев
В программе:
➡️ Подводим итоги уходящего года: делимся провалами и факапами
➡️ Загадываем желания: мечтаем о фичах, которые хотим в работе
➡️ Шутим шутки: придумываем подписи к IT-мемам
🔥 Дарим подарки авторам лучших историй: промокоды на скидку и доступы к мини-курсам.
Когда: 17 декабря в 19:00 мск
Присоединиться к нашему огоньку — через бота 🍾
Реклама ООО «Слёрм» ИНН 3652901451
Встречаемся на новогоднем корпоративе для старых и новых друзей учебного центра Слёрм. Будет как в вашей любимой конторе, только лучше🥸
Дресс-код: заряженное настроение и желание поделиться своими историями. Горячие и холодные напитки приветствуются.
Банда дедов Морозов: Кирилл Борисов, Всеволод Севостьянов и Вячеслав Федосеев
В программе:
➡️ Подводим итоги уходящего года: делимся провалами и факапами
➡️ Загадываем желания: мечтаем о фичах, которые хотим в работе
➡️ Шутим шутки: придумываем подписи к IT-мемам
🔥 Дарим подарки авторам лучших историй: промокоды на скидку и доступы к мини-курсам.
Когда: 17 декабря в 19:00 мск
Присоединиться к нашему огоньку — через бота 🍾
Реклама ООО «Слёрм» ИНН 3652901451