Concurrent Collections — набор коллекций, более эффективно работающие в многопоточной среде нежели стандартные универсальные коллекции из java.util пакета. Вместо базового враппера Collections.synchronizedList с блокированием доступа ко всей коллекции используются блокировки по сегментам данных или же оптимизируется работа для параллельного чтения данных по wait-free алгоритмам.
Queues — неблокирующие и блокирующие очереди с поддержкой многопоточности. Неблокирующие очереди заточены на скорость и работу без блокирования потоков. Блокирующие очереди используются, когда нужно «притормозить» потоки «Producer» или «Consumer», если не выполнены какие-либо условия, например, очередь пуста или перепонена, или же нет свободного «Consumer»'a.
Synchronizers — вспомогательные утилиты для синхронизации потоков. Представляют собой мощное оружие в «параллельных» вычислениях.
Executors — содержит в себе отличные фрейморки для создания пулов потоков, планирования работы асинхронных задач с получением результатов.
Locks — представляет собой альтернативные и более гибкие механизмы синхронизации потоков по сравнению с базовыми synchronized, wait, notify, notifyAll.
Atomics — классы с поддержкой атомарных операций над примитивами и ссылками.
Concurrent Collections — набор коллекций, более эффективно работающие в многопоточной среде нежели стандартные универсальные коллекции из java.util пакета. Вместо базового враппера Collections.synchronizedList с блокированием доступа ко всей коллекции используются блокировки по сегментам данных или же оптимизируется работа для параллельного чтения данных по wait-free алгоритмам.
Queues — неблокирующие и блокирующие очереди с поддержкой многопоточности. Неблокирующие очереди заточены на скорость и работу без блокирования потоков. Блокирующие очереди используются, когда нужно «притормозить» потоки «Producer» или «Consumer», если не выполнены какие-либо условия, например, очередь пуста или перепонена, или же нет свободного «Consumer»'a.
Synchronizers — вспомогательные утилиты для синхронизации потоков. Представляют собой мощное оружие в «параллельных» вычислениях.
Executors — содержит в себе отличные фрейморки для создания пулов потоков, планирования работы асинхронных задач с получением результатов.
Locks — представляет собой альтернативные и более гибкие механизмы синхронизации потоков по сравнению с базовыми synchronized, wait, notify, notifyAll.
Atomics — классы с поддержкой атомарных операций над примитивами и ссылками.
Презентация к докладу - работа с потоками в .net
* Основе работы с потоками
* Средства блокирующей синхронизации
* Неблокирующая синхронизация
* Асинхронная модель программирования
* Пул потоков
* Класс BackGroundWorker
* Задачи
* Модель поставщик-потребитель
* Блокировка с двойной проверкой
The 5-th lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
Презентация к докладу - работа с потоками в .net
* Основе работы с потоками
* Средства блокирующей синхронизации
* Неблокирующая синхронизация
* Асинхронная модель программирования
* Пул потоков
* Класс BackGroundWorker
* Задачи
* Модель поставщик-потребитель
* Блокировка с двойной проверкой
The 5-th lecture from the course "Java Core".
The Department of Information and Network Technologies.
St-Petersburg State University Of Aerospace Instrumentation.
Russia
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)AvitoTech
Роман Дворнов (Avito)
Фронтенд усложняется с каждым днем, и уже не представить жизнь разработчика без инструментов. Инструментов становится все больше, но нельзя сказать, что их достаточно. Если у вас собственный стек или технологическое решение, вам рано или поздно потребуется сделать свой инструмент. Это не так просто! Особенно если вы захотите интегрировать его интерфейс в браузерные Developer Tools, IDE, редакторы или открыть их на другом устройстве. Добавьте сюда проблему версионирования и другие сложности, и вам покажется, что задача неподъемная.
Но есть хорошая новость! Большинство из этих проблем решает Rempl — платформа для создания и использования удаленных инструментов (на самом деле не только инструментов). Сделаем небольшой обзор Rempl: что это, зачем нужно, какие проблемы решает. А также посмотрим примеры готовых решений, построенных на Rempl.
После докладов мы проведём дискуссионную панель на тему "Организация системы компонент", в которой примут участие докладчики, а также приглашенные эксперты.
Модным ныне словом «виртуализация» сейчас называют различные обёртки аппаратной виртуализации, однако этот термин намного старше и более всеохватывающий. На уровне ознакомления с технологией мы поговорим о виртуализации ресурсов в кластере и на примере pacemaker.
Rempl – крутая платформа для крутых инструментовRoman Dvornov
Фронтенд усложняется с каждым днем, и уже не представить жизнь разработчика без инструментов. Инструментов становится все больше, но нельзя сказать, что их достаточно. Если у вас собственный стек или технологическое решение, вам рано или поздно потребуется сделать свой инструмент. Это не так просто! Особенно если вы захотите интегрировать его интерфейс в браузерные Developer Tools, IDE, редакторы или открыть их на другом устройстве. Добавьте сюда проблему версионирования и другие сложности, и вам покажется, что задача неподъемная.
Но есть хорошая новость! Большинство из этих проблем решает Rempl — платформа для создания и использования удаленных инструментов (на самом деле не только инструментов). Сделаем небольшой обзор Rempl: что это, зачем нужно, какие проблемы решает. А также посмотрим примеры готовых решений, построенных на Rempl.
CodeFest, Новосибирск, 2017
Система анализа работы приложений и протоколов Riverbed CascadeКРОК
Вебинар «На высоких сетевых скоростях» http://www.croc.ru/action/detail/20533/
Презентация Александра Румянцева, инженера департамента телекоммуникаций КРОК
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова.
Курс "Методы распределенной обработки больших объемов данных в Hadoop"
Видео лекции курса https://www.youtube.com/playlist?list=PLrCZzMib1e9rPxMIgPri9YnOpvyDAL9HD
Oleg Chorny discusses Google's approach to release engineering, which aims to reduce manual toil through automation. Some key aspects include establishing frequent release cycles to catch bugs early, empowering individual teams through self-service tools and best practices, integrating automated testing, packaging, deployment and configuration management into the release process, and defining clear policies for approving and controlling releases. The overall goal is to make software releases as simple as pressing a button by establishing the right automated systems and collaboration between developers and release engineers.
The document discusses Angular 1.x components, bindings, transclusion, routing, and TypeScript. It covers lifecycle hooks, binding rules, using immutable.js for objects and arrays, custom elements, different routing options like ngRoute, ui-router, and angular@router/angular1. It also discusses using TypeScript for optional types and documentation, declaration files, and alternatives to Webpack like Rollup.js and Closure Compiler.
This document discusses the React application lifecycle and component lifecycle methods. It explains the different phases a React component goes through:
1. Mounting/Birth which includes initialization, getting default props/state, componentWillMount, render(), and componentDidMount.
2. Updating/Growth which involves receiving new props, re-rendering if needed, componentWillUpdate, render(), componentDidUpdate.
3. Unmounting/Death includes cleanup with componentWillUnmount before the component is removed from the DOM.
It provides code examples for using state, props, lifecycle methods, and testing React components with Jest and snapshots.
1. RX + Android
For Java & Kotlin
Mike Diachenko
Android Developer @ Lohika
2. О чем поговорим:
- Общая идея: как, зачем, почему
- Observable & Observer - наблюдаемое и
наблюдатель, их роли, примеры
- RxJava - операторы, что такое и какие есть
- Как делать можно
- Как делать не можно
3. В двух словах о теории RX:
Реактивное программирование - парадигма программирования
построенная на двух китах - потоки данных и пути их распространения
4. В двух словах о теории RX:
Потоки данных - как в программировании, так и в мире вся
информация движется своими потоками.
Распространение изменений - потоки данных должны иметь
возможность распространять изменения с уведомлением
заинтересованных сторон.
5. Observable & Observer
Observable - наблюдаемое, именно оно и эмитит поток данных.
Эмитить(emit) - распространять/генерировать/производить/доставлять
7. Observable & Observer
Observable - наблюдаемое, именно оно и производит поток данных.
Основные типы observable:
1. Observable
2. Flowable
8. Observable & Observer
Observable - наблюдаемое, именно оно и производит поток данных.
Основные типы observable:
1. Observable
2. Flowable
3. Single
9. Observable & Observer
Observable - наблюдаемое, именно оно и производит поток данных.
Основные типы observable:
1. Observable
2. Flowable
3. Single
4. Completable
10. Observable & Observer
Observable - наблюдаемое, именно оно и производит поток данных.
Основные типы observable:
1. Observable
2. Flowable
3. Single
4. Completable
5. MayBe
11. Observable & Observer
Observable - наблюдаемое, именно оно и производит поток данных.
Основные типы observable:
1. Observable
2. Flowable
3. Single
4. Completable
5. MayBe
6. ? Subjects ?
13. Observable & Observer
Observer - наблюдатель, в свою очередь следит за этим потоком и
получает его обновления
Основные типы:
1. DefaultObserver
14. Observable & Observer
Observer - наблюдатель, в свою очередь следит за этим потоком и
получает его обновления
Основные типы:
1. DefaultObserver
2. DisposableObserver
15. Observable & Observer
Observer - наблюдатель, в свою очередь следит за этим потоком и
получает его обновления
Основные типы:
1. DefaultObserver
2. DisposableObserver
3. ResourceObserver
16. Observable & Observer
Observer - наблюдатель, в свою очередь следит за этим потоком и
получает его обновления
Основные типы:
1. DefaultObserver
2. DisposableObserver
3. ResourceObserver
4. SafeObserver
17. Observable & Observer
Observer - наблюдатель, в свою очередь следит за этим потоком и
получает его обновления
Основные типы:
1. DefaultObserver
2. DisposableObserver
3. ResourceObserver
4. SafeObserver
5. SerializedObserver
18. Observable & Observer
Observer - наблюдатель, в свою очередь следит за потоком данных и
получает его обновления
Основные типы:
1. DefaultObserver
2. DisposableObserver
3. ResourceObserver
4. SafeObserver
5. SerializedObserver
6. ? Subjects ?
19. Основные типы observable:
Observable
Относительно универсален. Имеет следующие методы:
onNext(value: T)
onComplete()
onError(error: Throwable)
Может эмитить подряд неограниченное количество данных.
При большом количестве данных поступающих быстро, можем
получить BackPressure.
20.
21. Основные типы observable:
Flowable
Имеет методы аналогичные Observable, но учитывает потенциальный
BackPressure, без потери данных
onNext(value: T)
onComplete()
onError(error: Throwable)
24. Основные типы observable:
Single
В отличии от Observable эмитит данные лишь 1 раз, по сути
объединив onNext & onComplete:
onSuccess(value: T)
onError(error: Throwable)
28. Основные типы observable:
MayBe
В отличии от Observable не может вызвать оба метода (как onNext =>
onComplete)
onSuccess(value: T)
onComplete()
onError(error: Throwable)
29.
30. Обобщённо о наблюдаемых
Все наблюдаемые имеют 2 общих состояния - завершенность
(complete) и ошибка (error)
После обоих состояний мы не можем продолжать обращаться к
потоку данных.
При этом, если у нас нет слушателя onError, мы получим exception,
“не тонко” нам на это намекающий
complete (onComplete()/onSuccess(...))
error (onError)
33. Основные типы observer:
DisposableObserver
class DisposableObserver<T>: Observer<T>, Disposable
В отличии от DefaultObserver реализовывает так же disposable, и
можно отписаться либо внутри него, либо по ссылке извне
34.
35. Основные типы observer:
SafeObserver
class SafeObserver<T>(observer: Observer<T>): Observer<T>,
Disposable
Безопасный наблюдатель. Реализовывает в себе обработку всех
негативных кейсов, таких как передача null в onNextonError и любых
других которые не соответствуют протоколу RxJava2
Принимает в конструктор другого наблюдателя, в который эмитятся
данные при условии соответствия протоколу
36.
37. Основные типы observer:
SerializedObserver
class SerializedObserver<T>(observer: Observer<T>): Observer<T>,
Disposable
Как и SafeObserver - обёртка, в отличии от остальных наблюдателей
может быть вызвана многоразово так как основная цель -
упорядочить доступ к основному наблюдателю, путём synchronized
блоков и проверок на готовность тех или иных методов.
38.
39. Subjects
Представляют как Observable так и Observer функциональность,
отличаются поведением.
При этом можно подписаться сразу на несколько Observable.
46. Subjects
Async - в данном случае, обновления получат все участники
строго одинаково - последний апдейт + onComplete. (Даже если
подписались и после подписки было много эмитов)
49. Операторы создания
Create — создание Observable самостоятельно, используя
методы ObservableEmitter самостоятельно
From — создание из чего-либо, списка, Callable, Runnable,
объекта
Just — конвертирует объект или коллекцию объектов в
Observable которое моментально эмитит
50.
51. Операторы трансформации
FlatMap — трансформирует объекты полученные из Observable с
применением функции трансформации к каждому объекту, возвращая
в свою очередь новосозданный Observable
Map — трансформирует объекты полученные из Observable
применяя функцию трансформации к каждому
52.
53. Операторы фильтрации
First — возвращает только первый объект полученный из
Observable
Last — возвращает только последний объект полученный из
Observable
Take — возвращает N первых объектов полученных из
Observable
54.
55. Комбинирующие операторы
CombineLatest — когда хотя бы 1 из 2х Observable производит
данные - комбинирует его данные с последними данными других
Observable и возвращает единый Observable
Zip — комбинирует результат нескольких Observable и
возвращает единый Observable
58. Утилитные операторы
ObserveOn — определяет планировщик на котором наблюдатель
будет наблюдать за наблюдаемым
SubscribeOn — определяет планировщик который будет
использоваться наблюдаемым для своего выполнения
Subscribe — непосредственно подписка на наблюдаемое.
59.
60. Условные и булевые операторы
All — определяет все ли объекты произведенные Observable
подходят под критерии
Contains — определяет произвел ли Observable конкретный
объект
61.
62. Mathematical and Aggregate Operators
Max — определяет и возвращает максимальный объект
произведенный Observable
Min — определяет и возвращает минимальный объект
произведенный Observable
Average — определяет и возвращает среднее значение из
объектов произведенных Observable