🟢 Как работать с Kafka на SQL?
🔥 Знание Kafka и умение грамотно с ней работать значительно повышает востребованность и стоимость услуг IT-специалиста.
Начните или углубите изучение этого инструмента на бесплатном открытом уроке ksqlDB - анализируем потоки на SQL от OTUS.
💻 На занятии вы узнаете:
— что такое Kafka;
— что такое ksqlDB;
— как работать с Kafka в интерактивном режиме на SQL;
— как ksqlDB помогает интегрировать Kafka с внешними системами.
Преподаватель Вадим Заигрин – Team Lead команд инженеров данных на разных проектах, разработчик, Data Engineer и Data Scientist с опытом в IT более 35 лет.
✔️ Занятие пройдёт 27 сентября в 20:00 мск в рамках курса «Apache Kafka».
Это отличная возможность совершенно бесплатно протестировать формат обучения и задать преподавателю любые вопросы в режиме реального времени!
👉 Пройдите бесплатное вступительное тестирование и зарегистрируйтесь на событие!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Начните или углубите изучение этого инструмента на бесплатном открытом уроке ksqlDB - анализируем потоки на SQL от OTUS.
💻 На занятии вы узнаете:
— что такое Kafka;
— что такое ksqlDB;
— как работать с Kafka в интерактивном режиме на SQL;
— как ksqlDB помогает интегрировать Kafka с внешними системами.
Преподаватель Вадим Заигрин – Team Lead команд инженеров данных на разных проектах, разработчик, Data Engineer и Data Scientist с опытом в IT более 35 лет.
Это отличная возможность совершенно бесплатно протестировать формат обучения и задать преподавателю любые вопросы в режиме реального времени!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2
Транзакции являются важным инструментом для построения отказоустойчивых информационных систем, работающих в условиях постоянной высокой нагрузки и обеспечивающих одновременную работу десятков, сотен, а то и тысяч пользователей.
В этом ролике автор постарался рассказать про проблемы, возникающие в многопользовательских информационных системах, про транзакции и требования ACID к транзакционным системам, уровни изолированности и распространение транзакций, а так же демонстрирует API для управления транзакциями, предоставляемые Spring Framework.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Транзакции - Spring Framework в деталях
Транзакции являются важным инструментом для построения отказоустойчивых информационных систем, работающих в условиях постоянной высокой нагрузки и обеспечивающих одновременную работу десятков, сотен, а то и тысяч пользователей.
В этом ролике я постарался…
В этом ролике я постарался…
👍17❤4🔥2☃1
Вышла Java 21
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.
Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Читать статью
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь.
Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум 5 лет с момента выхода.
Читать статью
Teletype
Вышла Java 21
Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP\'ов. Release Notes можно посмотреть здесь...
👍75🔥14❤10🎉2☃1
Java библиотека pinned «Вышла Java 21 Вышла общедоступная версия Java 21. В этот релиз попало около 2500 закрытых задач и 15 JEP'ов. Release Notes можно посмотреть здесь. Изменения API – здесь. Java 21 является LTS-релизом, а значит у него будут выходить обновления как минимум…»
Что такое busy spin?
busy spin – это техника, которую программисты используют, чтобы заставить поток ожидать при определённом условии. В отличие от традиционных методов wait(), sleep() или yield(), которые подразумевают уступку процессорного времени, этот метод вместо уступки выполняет пустой цикл. Это необходимо, для того, чтобы сохранить кэш процессора, т.к. в многоядерных системах, существует вероятность, что приостановленный поток продолжит своё выполнение уже на другом ядре, а это повлечет за собой перестройку состояния процессорного кэша, которая является достаточно затратной процедурой.👍39🔥6
- Умение эффективно работать в проектах, где есть Spring
- Знание современных возможностей Spring
- Понимание, как создавать Web-приложения на микросервисной архитектуре и решать высокоуровневые задачи по разработке
- Умение быстро проходить путь от идеи до production-grade
- Владение фреймворками Spring и технологиями вспомогательных проектов (Spring MVC, Spring Security, Spring Boot, Spring Reactive Stack, Spring 5)
Пройдите бесплатное вступительное тестирование прямо сейчас и узнайте, готовы ли вы стать студентом!
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruPlease open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤1
👉 Создайте свое первое приложение под Android
📅 21 сентября в 20:00 в рамках курса «Android Developer» от OTUS.
Напишите приложение «Погода» самостоятельно за 60 минут
На занятии:
- создадим приложение из одного экрана, которое будет показывать погоду на данный момент в заданном городе, используя MVVM, Retrofit, Kotlin Coroutines, Piasso;
- узнаем, что создавать приложения под Android – не сложно и не страшно;
- познакомимся с архитектурой MVVM, получением данных из сети и организацией асинхронной работы с помощью Kotlin Coroutines.
📌 Урок доступен для всех желающих познакомиться с Android-разработкой. Это живой эфир, на котором вы сможете задать преподавателю любые вопросы в режиме реального времени!
Не упустите возможность совершенно бесплатно создать первый кейс для своего портфолио!
👉 Регистрируйтесь прямо сейчас
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
📅 21 сентября в 20:00 в рамках курса «Android Developer» от OTUS.
Напишите приложение «Погода» самостоятельно за 60 минут
На занятии:
- создадим приложение из одного экрана, которое будет показывать погоду на данный момент в заданном городе, используя MVVM, Retrofit, Kotlin Coroutines, Piasso;
- узнаем, что создавать приложения под Android – не сложно и не страшно;
- познакомимся с архитектурой MVVM, получением данных из сети и организацией асинхронной работы с помощью Kotlin Coroutines.
📌 Урок доступен для всех желающих познакомиться с Android-разработкой. Это живой эфир, на котором вы сможете задать преподавателю любые вопросы в режиме реального времени!
Не упустите возможность совершенно бесплатно создать первый кейс для своего портфолио!
👉 Регистрируйтесь прямо сейчас
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
👍6🔥2☃1❤1
Основы программирования на Java: Для школьников... и не только (2019) PDF
Курс «Основы компьютерных наук для средней школы» является базовым курсом по основам программирования. Данное издание рассчитано на учеников старших классов (9–11), не имеющих опыта в написании компьютерных программ или имеющих минимальный опыт. Такой подход позволяет использовать учебник и в рамках коллективных занятий (на уроках, факультативах или кружках), и при самостоятельном индивидуальном обучении.
Пособие содержит как общие теоретические положения подхода к написанию программ, так и описание практических приемов, а также разбор соответствующих излагаемому материалу примеров.
Книга написана на основании базовой части курса «Компьютерные науки», преподаваемого в 9–12 классах израильской школы. Авторы — ведущие преподаватели этого курса, с опытом работы более 25 лет.
Курс «Основы компьютерных наук для средней школы» является базовым курсом по основам программирования. Данное издание рассчитано на учеников старших классов (9–11), не имеющих опыта в написании компьютерных программ или имеющих минимальный опыт. Такой подход позволяет использовать учебник и в рамках коллективных занятий (на уроках, факультативах или кружках), и при самостоятельном индивидуальном обучении.
Пособие содержит как общие теоретические положения подхода к написанию программ, так и описание практических приемов, а также разбор соответствующих излагаемому материалу примеров.
Книга написана на основании базовой части курса «Компьютерные науки», преподаваемого в 9–12 классах израильской школы. Авторы — ведущие преподаватели этого курса, с опытом работы более 25 лет.
👍12🔥3
Перечислите принципы, которым вы следуете в многопоточном программировании?
При написании многопоточных программ следует придерживаться определённых правил, которые помогают обеспечить достойную производительность приложения в сочетании с удобной отладкой и простотой дальнейшей поддержки кода.
• Всегда давайте значимые имена своим потокам. Процесс отладки, нахождения ошибок или отслеживание исключения в многопоточном коде – довольно сложная задача.
• Избегайте блокировок или старайтесь уменьшить масштабы синхронизации. Блокировка затратна, а переключение контекста ещё более ресурсоёмко. Пытайтесь избегать синхронизации и блокировки насколько это возможно, и организуйте критическую секцию в минимально необходимом объёме. Поэтому синхронизированный блок всегда предпочительней синхронизированного метода, дополнительно наделяя возможностью абсолютного контроля над масштабом блокировки.
• Обрабатывайте прерывание потока с особой тщательностью. Нет ничего хуже оставшегося заблокированным ресурса или системы в неконстистентном, по причине неподтверждённой транзакции, состоянии.
• Помните об обработке исключений. Выброшенные
• Между синхронизаторами и
• Почти всегда использование
При написании многопоточных программ следует придерживаться определённых правил, которые помогают обеспечить достойную производительность приложения в сочетании с удобной отладкой и простотой дальнейшей поддержки кода.
• Всегда давайте значимые имена своим потокам. Процесс отладки, нахождения ошибок или отслеживание исключения в многопоточном коде – довольно сложная задача.
OrderProcessor, QuoteProcessor или TradeProcessor намного информативнее, чем Thread1, Thread2 и Thread3. Имя должно отражать задачу, выполняемую данным потоком.• Избегайте блокировок или старайтесь уменьшить масштабы синхронизации. Блокировка затратна, а переключение контекста ещё более ресурсоёмко. Пытайтесь избегать синхронизации и блокировки насколько это возможно, и организуйте критическую секцию в минимально необходимом объёме. Поэтому синхронизированный блок всегда предпочительней синхронизированного метода, дополнительно наделяя возможностью абсолютного контроля над масштабом блокировки.
• Обрабатывайте прерывание потока с особой тщательностью. Нет ничего хуже оставшегося заблокированным ресурса или системы в неконстистентном, по причине неподтверждённой транзакции, состоянии.
• Помните об обработке исключений. Выброшенные
InterruptedException должны быть адекватно обработаны, а не просто подавлены. Так же не стоит пренебрегать Thread.UncaughtExceptionHandler. При использовании пула потоков необходимо помнить, что он зачастую просто «проглатывает» исключения. Так, если вы отправили на выполнение Runnable нужно обязательно поместить код выполнения задачи внутрь блока try-catch. Если в очередь пула помещается Callable, необходимо удостоверится, что результат выполнения всегда изымается помощью блокирующего get(), чтобы в случае возникновения существовала возможнотсь заново выбросить произошедшее исключение.• Между синхронизаторами и
wait() и notify() следует выбирать синхронизаторы. Во-первых, синхронизаторы, типа CountDownLatch, Semaphore, CyclicBarrier или Exchanger упрощают написание кода. Очень сложно реализовывать комплексный управляющий поток, используя wait() и notify(). Во-вторых, эти классы написаны и поддерживаются настоящими мастерами своего дела и есть шанс, что в последующих версиях JDK они будут оптимизированы изнутри или заменены более производительной внешней реализацией.• Почти всегда использование
Concurrent сollection выгоднее использования Synchronized сollection, т.к. первые более современны (используют все доступные на момент их написания новшества языка) и масштабируемы, чем их синхронизированые аналоги.👍27❤3🔥3
Разберёмся, как можно вычислять арифметические выражения. Предположим, на вход нам поступает строка текста, которая содержит корректное арифметическое выражение.
Это выражение состоит из пробелов, чисел, скобок и знаков, обозначающих основные математические действия (плюс, минус, умножить, разделить). Нам нужно разобрать это выражение на отдельные элементы, а затем вычислить результат с учётом приоритетов математических операций.
Обработку такого выражения можно разделить на три основных этапа:
1. Разбиение строки на отдельные части
2. Обработка этих частей с учётом математических операций
3. Само вычисление
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Разбор и вычисление арифметических выражений на Java
#алгоритмы #java #калькулятор Разберёмся, как можно вычислять арифметические выражения. Предположим, на вход нам поступает строка текста, которая содержит корректное арифметическое выражение.
Это выражение состоит из пробелов, чисел, скобок и знаков, обозначающих…
Это выражение состоит из пробелов, чисел, скобок и знаков, обозначающих…
👍12🔥3
Ключевыми темами этого урока будут:
1. Какие исключения и где их стоит обрабатывать:
— Основные типы исключений и их назначение;
— Места, где следует обрабатывать исключения (локальная или глобальная обработка); - Пользоваться или продолжать выброс исключений.
2. Стратегии обработки исключений:
— Принцип единственной ответственности (Single Responsibility Principle) и обработка исключений;
— Принцип открытости/закрытости (Open/Closed Principle) и обработка исключений;
— Принцип подстановки Барбары Лисков (Liskov Substitution Principle) и обработка исключений;
— Принцип разделения интерфейса (Interface Segregation Principle) и границы обработки исключений;
— Принцип инверсии зависимости (Dependency Inversion Principle) и управление исключениями.
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥2
JavaFX (В подлиннике) (2020) скан PDF
Описываются базовые возможности библиотеки JavaFX, позволяющей создавать приложения с графическим интерфейсом на языке Java. Рассматриваются способы обработки событий, управление свойствами окна, создание формы с помощью программы Scene Builder, а также все основные компоненты (кнопки, текстовые поля, списки, таблицы, меню и др.) и варианты их размещения внутри окна. Описаны трансформации и эффекты, графики и диаграммы, аудио и видео, стили JavaFX CSS. Книга ориентирована на тех, кто уже знаком с языком программирования Java и хотел бы научиться разрабатывать оконные приложения, насыщенные графикой, анимацией и интерактивными элементами. Большое количество практических примеров помогает начать разработку самостоятельно. Весь материал тщательно подобран, хорошо структурирован и компактно изложен, что позволяет использовать книгу как удобный справочник.
Описываются базовые возможности библиотеки JavaFX, позволяющей создавать приложения с графическим интерфейсом на языке Java. Рассматриваются способы обработки событий, управление свойствами окна, создание формы с помощью программы Scene Builder, а также все основные компоненты (кнопки, текстовые поля, списки, таблицы, меню и др.) и варианты их размещения внутри окна. Описаны трансформации и эффекты, графики и диаграммы, аудио и видео, стили JavaFX CSS. Книга ориентирована на тех, кто уже знаком с языком программирования Java и хотел бы научиться разрабатывать оконные приложения, насыщенные графикой, анимацией и интерактивными элементами. Большое количество практических примеров помогает начать разработку самостоятельно. Весь материал тщательно подобран, хорошо структурирован и компактно изложен, что позволяет использовать книгу как удобный справочник.
👍14😁10🔥6💯1
Пост для Java-разработчиков, которые ищут работу или собираются увольняться с текущего места.
👉 Подписывайтесь на наш канал — в нем каждый день выходят лучшие вакансии на рынке с нормальными зарплатными вилками и хорошими условиями.
Публикуем предложения для джунов, мидлов и сеньоров, на удаленке и в офисах — оффер мечты точно найдется 👨💻
🔸Подписаться🔸
👉 Подписывайтесь на наш канал — в нем каждый день выходят лучшие вакансии на рынке с нормальными зарплатными вилками и хорошими условиями.
Публикуем предложения для джунов, мидлов и сеньоров, на удаленке и в офисах — оффер мечты точно найдется 👨💻
🔸Подписаться🔸
В этом видео разбирается классическая задача о рюкзаке и алгоритмы её решения. Особое внимание уделяется решению задачи с помощью динамического программирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java. Задача о рюкзаке. Динамическое программирование.
В этом видео разбирается классическая задача о рюкзаке и алгоритмы её решения. Особое внимание уделяется решению задачи с помощью динамического программирования.
Исходный код:
https://github.com/Arhiser/java_tutorials/tree/master/src/ru/arhiser/knapsack…
Исходный код:
https://github.com/Arhiser/java_tutorials/tree/master/src/ru/arhiser/knapsack…
👍10
🔄 Бесплатный открытый урок «Транзакции в Kafka» от OTUS.
Что будет на занятии:
- Посмотрим, как чтение данных из Kafka можно сделать транзакционным.
- В ряде случаев требуется дополнительно обеспечить корректность обработки данных – изучим, как это можно реализовать.
Преподаватель Сергей Петрелевич – Java-разработчик, в отрасли с 2003 года. Программировать начал со времен ZX-Spectrum. 8 лет в разработке банковских процессинговых систем пластиковых карт.
Это отличная возможность совершенно бесплатно протестировать формат обучения и задать преподавателю любые вопросы в режиме реального времени!
Пройдите бесплатное вступительное тестирование прямо сейчас и зарегистрируйтесь на событие:
➡️ Пройти тест
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ruPlease open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1
Java. Эффективное программирование, 3-е издание (2019) PDF, DJVU
Язык программирования Java существенно изменился со времени предыдущего издания книги, опубликованного вскоре после выпуска Java б. Этот классический труд тщательно обновлен, чтобы читатели могли в полной мере воспользоваться возможностями последних версий языка и его библиотек функций. В современном Java поддерживается несколько парадигм программирования.
Как и в предыдущих изданиях, каждая глава книги состоит из ряда разделов, в каждом из которых описаны конкретные советы, приведены тонкости платформы Java и содержатся обновленные примеры кода. Для каждой темы приводятся всеобъемлющее описание и пояснения.
Третье издание охватывает особенности языка программирования и библиотек, появившихся в Java 7, 8 и 9, в том числе конструкции функционального программирования, добавленные к своим объектно-ориентированным корням. В книгу включены также многие новые советы и глава, посвященная лямбда-выражениям и потокам.
Язык программирования Java существенно изменился со времени предыдущего издания книги, опубликованного вскоре после выпуска Java б. Этот классический труд тщательно обновлен, чтобы читатели могли в полной мере воспользоваться возможностями последних версий языка и его библиотек функций. В современном Java поддерживается несколько парадигм программирования.
Как и в предыдущих изданиях, каждая глава книги состоит из ряда разделов, в каждом из которых описаны конкретные советы, приведены тонкости платформы Java и содержатся обновленные примеры кода. Для каждой темы приводятся всеобъемлющее описание и пояснения.
Третье издание охватывает особенности языка программирования и библиотек, появившихся в Java 7, 8 и 9, в том числе конструкции функционального программирования, добавленные к своим объектно-ориентированным корням. В книгу включены также многие новые советы и глава, посвященная лямбда-выражениям и потокам.
👍16🔥6
Какое из следующих утверждений о потоках неверно?
1. Если метод
2. Порядок, в котором запускались потоки, может не совпадать с порядком их фактического выполнения.
3. Если метод
4. Если метод
Правильный ответ: 3. Если метод
Вызов метода
1. Если метод
start() вызывается дважды для одного и того же объекта Thread, во время выполнения генерируется исключение.2. Порядок, в котором запускались потоки, может не совпадать с порядком их фактического выполнения.
3. Если метод
run() вызывается напрямую для объекта Thread, во время выполнения генерируется исключение.4. Если метод
sleep() вызывается для потока, во время выполнения синхронизированного кода, блокировка не снимается.Правильный ответ: 3. Если метод
run() вызывается напрямую для объекта Thread, во время выполнения исключение не генерируется. Однако, код, написанный в методе run() будет выполняться текущим, а не новым потоком. Таким образом, правильный способ запустить поток – это вызов метода start(), который приводит к выполнению метода run() новым потоком.Вызов метода
start() дважды для одного и того же объекта Thread приведёт к генерированию исключения IllegalThreadStateException во время выполнения, следовательно, утверждение 1 верно. Утверждение 2 верно, так как порядок, в котором выполняются потоки, определяется Планировщиком потоков, независимо от того, какой поток запущен первым. Утверждение 4 верно, так как поток не освободит блокировки, которые он держит, когда он переходит в состояние Ожидания.👍19🔥4❤2
Даны 3 потока Т1, Т2 и Т3? Как реализовать выполнение в последовательности Т1, Т2, Т3?
Такой последовательности выполнения можно достичь многими способами, например просто воспользоваться методом
Такой последовательности выполнения можно достичь многими способами, например просто воспользоваться методом
join(), чтобы запустить поток в момент, когда другой уже закончит своё выполнение. Для реализации заданной последовательности, нужно запустить последний поток первым, и затем вызывать метод join() в обратном порядке, то есть Т3 вызывает Т2.join, а Т2 вызывает Т1.join, таким образом Т1 закончит выполнение первым, а Т3 последним.👍28🔥5
📌 Хочешь улучшить свои знания и практические навыки в Java разработке?
Автор канала BigDecimal — действующий Senior Java-разработчик.
Разбор технологий, теория простыми словами, список литературы и примеры кода на github — всё это на канале BigDecimal
❔Какие уже есть примеры?
— Apache Kafka кластер с Spring Boot интеграцией и мониторингом через Prometheus и Grafana, с командами через Spring Shell для более наглядной демонстрации
— Spring Web REST API с PostgreSQL, миграциями через Flyway и Unit-тестами
— Алгоритм проверки SSL сертификатов
— И многое-многое другое...
Чтобы не пропустить разбор интересующей темы, переходи по ссылке и подписывайся: https://news.1rj.ru/str/+a0-E_Hmoe4BiOTEy
Автор канала BigDecimal — действующий Senior Java-разработчик.
Разбор технологий, теория простыми словами, список литературы и примеры кода на github — всё это на канале BigDecimal
❔Какие уже есть примеры?
— Apache Kafka кластер с Spring Boot интеграцией и мониторингом через Prometheus и Grafana, с командами через Spring Shell для более наглядной демонстрации
— Spring Web REST API с PostgreSQL, миграциями через Flyway и Unit-тестами
— Алгоритм проверки SSL сертификатов
— И многое-многое другое...
Чтобы не пропустить разбор интересующей темы, переходи по ссылке и подписывайся: https://news.1rj.ru/str/+a0-E_Hmoe4BiOTEy
👍8🔥3
В данном видео объясняется что такое паттерн Iterator и интерфейс Iterable в языке программирования Java. На примерах показывается для чего нужен Iterator и как его использовать. Рассматривается так же вопрос удаления и вставки элементов в LinkedList за константное время.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Java. Об Iterator и Iterable c примерами.
В данном видео объясняется что такое паттерн Iterator и интерфейс Iterable в языке программирования Java. На примерах показывается для чего нужен Iterator и как его использовать. Рассматривается так же вопрос удаления и вставки элементов в LinkedList за константное…
👍12🔥2